From 7f39f89a230adf39809c80c9540c2f5fe33f3b48 Mon Sep 17 00:00:00 2001 From: "cmzmasek@gmail.com" Date: Wed, 9 Feb 2011 01:23:45 +0000 Subject: [PATCH] initial commit --- forester/archive/RIO/C/Makefile | 16 + forester/archive/RIO/C/bootstrap_cz.c | 484 +++ forester/archive/RIO/COPYRIGHT | 32 + forester/archive/RIO/IMPORTANT_NOTICE | 48 + forester/archive/RIO/LICENSE | 339 ++ forester/archive/RIO/RIO_INSTALL | 459 ++ forester/archive/RIO/data.tar.bz2 | Bin 0 -> 5790382 bytes forester/archive/RIO/docs/RIO.pdf | Bin 0 -> 1643437 bytes forester/archive/RIO/others/hmmer/00README | 57 + forester/archive/RIO/others/hmmer/COPYRIGHT | 36 + forester/archive/RIO/others/hmmer/INSTALL | 45 + forester/archive/RIO/others/hmmer/LICENSE | 339 ++ forester/archive/RIO/others/hmmer/Makefile.in | 284 ++ forester/archive/RIO/others/hmmer/NOTES | 197 + forester/archive/RIO/others/hmmer/Userguide.pdf | Bin 0 -> 299122 bytes forester/archive/RIO/others/hmmer/config.guess | 951 ++++ forester/archive/RIO/others/hmmer/config.sub | 955 +++++ forester/archive/RIO/others/hmmer/configure | 2509 +++++++++++ .../others/hmmer/documentation/man/hmmalign.man | 154 + .../others/hmmer/documentation/man/hmmbuild.man | 476 ++ .../hmmer/documentation/man/hmmcalibrate.man | 172 + .../others/hmmer/documentation/man/hmmconvert.man | 124 + .../RIO/others/hmmer/documentation/man/hmmemit.man | 130 + .../RIO/others/hmmer/documentation/man/hmmer.man | 168 + .../others/hmmer/documentation/man/hmmfetch.man | 83 + .../others/hmmer/documentation/man/hmmindex.man | 73 + .../RIO/others/hmmer/documentation/man/hmmpfam.man | 320 ++ .../others/hmmer/documentation/man/hmmsearch.man | 289 ++ forester/archive/RIO/others/hmmer/install-sh | 251 ++ forester/archive/RIO/others/hmmer/squid/00README | 39 + .../RIO/others/hmmer/squid/Docs/abstract.tex | 7 + .../RIO/others/hmmer/squid/Docs/formats.tex | 517 +++ .../RIO/others/hmmer/squid/Docs/gsi-format.tex | 87 + .../archive/RIO/others/hmmer/squid/Docs/intro.tex | 2 + .../archive/RIO/others/hmmer/squid/Docs/main.tex | 35 + .../archive/RIO/others/hmmer/squid/Docs/selex.tex | 153 + .../RIO/others/hmmer/squid/Docs/squid-format.tex | 80 + .../RIO/others/hmmer/squid/Docs/ssi-format.tex | 641 +++ .../archive/RIO/others/hmmer/squid/Formats/a2m | 200 + .../archive/RIO/others/hmmer/squid/Formats/clustal | 47 + .../archive/RIO/others/hmmer/squid/Formats/embl | 155 + .../archive/RIO/others/hmmer/squid/Formats/fasta | 26 + .../RIO/others/hmmer/squid/Formats/formattest.pl | 97 + .../archive/RIO/others/hmmer/squid/Formats/gcg | 397 ++ .../RIO/others/hmmer/squid/Formats/gcgdata.1 | 60 + .../RIO/others/hmmer/squid/Formats/gcgdata.2 | Bin 0 -> 2192 bytes .../archive/RIO/others/hmmer/squid/Formats/genbank | 310 ++ .../archive/RIO/others/hmmer/squid/Formats/msf | 266 ++ .../archive/RIO/others/hmmer/squid/Formats/phylip | 204 + .../archive/RIO/others/hmmer/squid/Formats/pir | 249 ++ .../RIO/others/hmmer/squid/Formats/regression.dat | 20 + .../archive/RIO/others/hmmer/squid/Formats/selex.1 | 37 + .../archive/RIO/others/hmmer/squid/Formats/selex.2 | 11 + .../RIO/others/hmmer/squid/Formats/stockholm.1 | 94 + .../RIO/others/hmmer/squid/Formats/stockholm.2 | 366 ++ .../RIO/others/hmmer/squid/Formats/swissprot | 317 ++ forester/archive/RIO/others/hmmer/squid/INSTALL | 31 + .../archive/RIO/others/hmmer/squid/Makefile.in | 292 ++ .../archive/RIO/others/hmmer/squid/Man/afetch.man | 98 + .../archive/RIO/others/hmmer/squid/Man/alistat.man | 138 + .../archive/RIO/others/hmmer/squid/Man/seqstat.man | 98 + .../archive/RIO/others/hmmer/squid/Man/sfetch.man | 226 + .../archive/RIO/others/hmmer/squid/Man/shuffle.man | 204 + .../RIO/others/hmmer/squid/Man/sreformat.man | 249 ++ forester/archive/RIO/others/hmmer/squid/a2m.c | 113 + .../archive/RIO/others/hmmer/squid/afetch_main.c | 182 + .../archive/RIO/others/hmmer/squid/aligneval.c | 513 +++ forester/archive/RIO/others/hmmer/squid/alignio.c | 643 +++ .../archive/RIO/others/hmmer/squid/alistat_main.c | 273 ++ forester/archive/RIO/others/hmmer/squid/clustal.c | 179 + forester/archive/RIO/others/hmmer/squid/cluster.c | 544 +++ .../RIO/others/hmmer/squid/compalign_main.c | 221 + .../RIO/others/hmmer/squid/compstruct_main.c | 321 ++ forester/archive/RIO/others/hmmer/squid/configure | 2241 ++++++++++ forester/archive/RIO/others/hmmer/squid/dayhoff.c | 171 + forester/archive/RIO/others/hmmer/squid/eps.c | 115 + forester/archive/RIO/others/hmmer/squid/file.c | 231 + forester/archive/RIO/others/hmmer/squid/getopt.c | 251 ++ forester/archive/RIO/others/hmmer/squid/gki.c | 390 ++ forester/archive/RIO/others/hmmer/squid/gki.h | 51 + forester/archive/RIO/others/hmmer/squid/gsi.c | 385 ++ forester/archive/RIO/others/hmmer/squid/gsi.h | 85 + forester/archive/RIO/others/hmmer/squid/gsi64.c | 395 ++ forester/archive/RIO/others/hmmer/squid/gsi64.h | 101 + forester/archive/RIO/others/hmmer/squid/hsregex.c | 1314 ++++++ forester/archive/RIO/others/hmmer/squid/install-sh | 251 ++ forester/archive/RIO/others/hmmer/squid/iupac.c | 220 + forester/archive/RIO/others/hmmer/squid/msa.c | 1394 ++++++ forester/archive/RIO/others/hmmer/squid/msa.h | 286 ++ forester/archive/RIO/others/hmmer/squid/msf.c | 389 ++ forester/archive/RIO/others/hmmer/squid/phylip.c | 174 + forester/archive/RIO/others/hmmer/squid/revcomp.c | 62 + .../archive/RIO/others/hmmer/squid/revcomp_main.c | 93 + forester/archive/RIO/others/hmmer/squid/rk.c | 134 + forester/archive/RIO/others/hmmer/squid/rk.h | 40 + forester/archive/RIO/others/hmmer/squid/selex.c | 814 ++++ .../archive/RIO/others/hmmer/squid/seqencode.c | 177 + .../archive/RIO/others/hmmer/squid/seqsplit_main.c | 163 + .../archive/RIO/others/hmmer/squid/seqstat_main.c | 229 + .../archive/RIO/others/hmmer/squid/sfetch_main.c | 444 ++ forester/archive/RIO/others/hmmer/squid/shuffle.c | 550 +++ .../archive/RIO/others/hmmer/squid/shuffle_main.c | 281 ++ .../archive/RIO/others/hmmer/squid/sindex_main.c | 185 + forester/archive/RIO/others/hmmer/squid/sqerror.c | 95 + forester/archive/RIO/others/hmmer/squid/sqfuncs.h | 293 ++ forester/archive/RIO/others/hmmer/squid/sqio.c | 1901 ++++++++ forester/archive/RIO/others/hmmer/squid/squid.h.in | 473 ++ .../archive/RIO/others/hmmer/squid/squidconf.h.in | 76 + .../archive/RIO/others/hmmer/squid/squidcore.c | 53 + .../archive/RIO/others/hmmer/squid/sre_ctype.c | 39 + forester/archive/RIO/others/hmmer/squid/sre_math.c | 787 ++++ .../archive/RIO/others/hmmer/squid/sre_string.c | 524 +++ .../RIO/others/hmmer/squid/sreformat_main.c | 251 ++ forester/archive/RIO/others/hmmer/squid/ssi.c | 1504 +++++++ forester/archive/RIO/others/hmmer/squid/ssi.h | 193 + forester/archive/RIO/others/hmmer/squid/stack.c | 103 + .../archive/RIO/others/hmmer/squid/stockholm.c | 607 +++ .../archive/RIO/others/hmmer/squid/stockholm.h | 51 + .../archive/RIO/others/hmmer/squid/stopwatch.c | 307 ++ .../archive/RIO/others/hmmer/squid/stopwatch.h | 59 + .../archive/RIO/others/hmmer/squid/test_main.c | 25 + .../archive/RIO/others/hmmer/squid/translate.c | 87 + .../RIO/others/hmmer/squid/translate_main.c | 226 + forester/archive/RIO/others/hmmer/squid/types.c | 228 + forester/archive/RIO/others/hmmer/squid/weight.c | 748 ++++ .../archive/RIO/others/hmmer/squid/weight_main.c | 187 + forester/archive/RIO/others/hmmer/src/Makefile.in | 128 + forester/archive/RIO/others/hmmer/src/alphabet.c | 426 ++ forester/archive/RIO/others/hmmer/src/camJul97.c | 747 ++++ forester/archive/RIO/others/hmmer/src/config.h | 52 + .../archive/RIO/others/hmmer/src/core_algorithms.c | 2445 +++++++++++ forester/archive/RIO/others/hmmer/src/debug.c | 368 ++ forester/archive/RIO/others/hmmer/src/display.c | 447 ++ forester/archive/RIO/others/hmmer/src/emit.c | 457 ++ forester/archive/RIO/others/hmmer/src/emulation.c | 242 ++ forester/archive/RIO/others/hmmer/src/funcs.h | 350 ++ forester/archive/RIO/others/hmmer/src/globals.h | 24 + forester/archive/RIO/others/hmmer/src/histogram.c | 1369 ++++++ forester/archive/RIO/others/hmmer/src/hmmalign.c | 325 ++ forester/archive/RIO/others/hmmer/src/hmmbuild.c | 1129 +++++ .../RIO/others/hmmer/src/hmmcalibrate-pvm.c | 209 + .../archive/RIO/others/hmmer/src/hmmcalibrate.c | 957 +++++ forester/archive/RIO/others/hmmer/src/hmmconvert.c | 209 + forester/archive/RIO/others/hmmer/src/hmmemit.c | 267 ++ forester/archive/RIO/others/hmmer/src/hmmfetch.c | 130 + forester/archive/RIO/others/hmmer/src/hmmindex.c | 166 + forester/archive/RIO/others/hmmer/src/hmmio.c | 1744 ++++++++ .../archive/RIO/others/hmmer/src/hmmpfam-pvm.c | 229 + forester/archive/RIO/others/hmmer/src/hmmpfam.c | 1094 +++++ forester/archive/RIO/others/hmmer/src/hmmpostal.c | 1108 +++++ .../archive/RIO/others/hmmer/src/hmmsearch-pvm.c | 180 + forester/archive/RIO/others/hmmer/src/hmmsearch.c | 1101 +++++ forester/archive/RIO/others/hmmer/src/masks.c | 367 ++ .../archive/RIO/others/hmmer/src/mathsupport.c | 362 ++ forester/archive/RIO/others/hmmer/src/misc.c | 140 + .../archive/RIO/others/hmmer/src/modelmakers.c | 940 ++++ forester/archive/RIO/others/hmmer/src/plan7.c | 1036 +++++ forester/archive/RIO/others/hmmer/src/plan9.c | 141 + forester/archive/RIO/others/hmmer/src/postprob.c | 709 +++ forester/archive/RIO/others/hmmer/src/postprob.h | 55 + forester/archive/RIO/others/hmmer/src/prior.c | 725 ++++ forester/archive/RIO/others/hmmer/src/pvm.c | 453 ++ forester/archive/RIO/others/hmmer/src/states.c | 444 ++ forester/archive/RIO/others/hmmer/src/structs.h | 564 +++ forester/archive/RIO/others/hmmer/src/threads.c | 90 + forester/archive/RIO/others/hmmer/src/tophits.c | 376 ++ forester/archive/RIO/others/hmmer/src/trace.c | 1203 ++++++ forester/archive/RIO/others/hmmer/src/weetest.c | 55 + .../RIO/others/hmmer/testsuite/Exercises.sh | 17 + .../archive/RIO/others/hmmer/testsuite/Makefile.in | 83 + .../RIO/others/hmmer/testsuite/Optiontests.fa | 16 + .../RIO/others/hmmer/testsuite/Optiontests.nfa | 12 + .../RIO/others/hmmer/testsuite/Optiontests.nslx | 9 + .../RIO/others/hmmer/testsuite/Optiontests.pam | 31 + .../RIO/others/hmmer/testsuite/Optiontests.pl | 116 + .../RIO/others/hmmer/testsuite/Optiontests.pri | 59 + .../RIO/others/hmmer/testsuite/Optiontests.slx | 15 + forester/archive/RIO/others/hmmer/testsuite/README | 82 + .../RIO/others/hmmer/testsuite/alignalign_test.c | 206 + .../archive/RIO/others/hmmer/testsuite/evd_test.c | 295 ++ .../RIO/others/hmmer/testsuite/fitting_test.c | 71 + .../archive/RIO/others/hmmer/testsuite/fn3-bin | Bin 0 -> 16930 bytes .../RIO/others/hmmer/testsuite/fn3-bin-swap | Bin 0 -> 16930 bytes .../archive/RIO/others/hmmer/testsuite/fn3.hmm | 270 ++ .../archive/RIO/others/hmmer/testsuite/fn3.seed | 332 ++ .../RIO/others/hmmer/testsuite/masks_test.c | 149 + .../others/hmmer/testsuite/parsingviterbi_test.c | 167 + .../archive/RIO/others/hmmer/testsuite/titin.fa | 386 ++ .../RIO/others/hmmer/testsuite/tophits_test.c | 170 + .../RIO/others/hmmer/testsuite/trace_test.c | 146 + .../RIO/others/hmmer/testsuite/trace_test.hmm | 47 + .../RIO/others/hmmer/testsuite/trace_test.seq | 25 + .../RIO/others/hmmer/testsuite/trace_test.slx | 7 + .../RIO/others/hmmer/testsuite/viterbi_exercise.c | 166 + .../RIO/others/hmmer/testsuite/weeviterbi_test.c | 150 + .../RIO/others/hmmer/testsuite/weeviterbi_test.hmm | 233 + .../RIO/others/hmmer/testsuite/weeviterbi_test.seq | 10 + .../archive/RIO/others/hmmer/tutorial/7LES_DROME | 138 + .../archive/RIO/others/hmmer/tutorial/Artemia.fa | 48 + .../archive/RIO/others/hmmer/tutorial/RU1A_HUMAN | 98 + .../archive/RIO/others/hmmer/tutorial/amino.null | 30 + .../archive/RIO/others/hmmer/tutorial/amino.pri | 70 + forester/archive/RIO/others/hmmer/tutorial/fn3.slx | 351 ++ .../RIO/others/hmmer/tutorial/globins50.msf | 427 ++ .../RIO/others/hmmer/tutorial/globins630.fa | 2520 +++++++++++ .../archive/RIO/others/hmmer/tutorial/nucleic.null | 15 + .../archive/RIO/others/hmmer/tutorial/nucleic.pri | 27 + .../archive/RIO/others/hmmer/tutorial/pkinase.slx | 712 +++ forester/archive/RIO/others/hmmer/tutorial/rrm.hmm | 237 + forester/archive/RIO/others/hmmer/tutorial/rrm.slx | 167 + .../archive/RIO/others/phylip_mod/IMPORTANT_NOTICE | 48 + forester/archive/RIO/others/phylip_mod/src/CHANGES | 29 + .../archive/RIO/others/phylip_mod/src/Makefile | 451 ++ forester/archive/RIO/others/phylip_mod/src/cons.c | 1457 +++++++ forester/archive/RIO/others/phylip_mod/src/cons.h | 58 + .../archive/RIO/others/phylip_mod/src/consense.c | 414 ++ forester/archive/RIO/others/phylip_mod/src/dist.c | 526 +++ forester/archive/RIO/others/phylip_mod/src/dist.h | 35 + forester/archive/RIO/others/phylip_mod/src/fitch.c | 1176 +++++ .../archive/RIO/others/phylip_mod/src/neighbor.c | 602 +++ .../archive/RIO/others/phylip_mod/src/phylip.c | 2750 ++++++++++++ .../archive/RIO/others/phylip_mod/src/phylip.h | 607 +++ forester/archive/RIO/others/phylip_mod/src/proml.c | 3202 ++++++++++++++ .../archive/RIO/others/phylip_mod/src/promlk.c | 3176 ++++++++++++++ .../archive/RIO/others/phylip_mod/src/protdist.c | 1973 +++++++++ .../archive/RIO/others/phylip_mod/src/protpars.c | 1925 +++++++++ forester/archive/RIO/others/phylip_mod/src/seq.c | 4178 ++++++++++++++++++ forester/archive/RIO/others/phylip_mod/src/seq.h | 216 + .../archive/RIO/others/phylip_mod/src/seqboot.c | 1419 ++++++ .../RIO/others/phylip_mod/src/test_infile_fitch | 8 + .../RIO/others/phylip_mod/src/test_infile_protdist | 6 + .../RIO/others/phylip_mod/src/test_infile_protml | 6 + .../RIO/others/phylip_mod/src/test_infile_protmlk | 6 + .../RIO/others/phylip_mod/src/test_infile_protpars | 6 + .../RIO/others/phylip_mod/src/test_infile_seqbboot | 6 + forester/archive/RIO/others/puzzle_dqo/AUTHORS | 45 + forester/archive/RIO/others/puzzle_dqo/COPYING | 340 ++ forester/archive/RIO/others/puzzle_dqo/ChangeLog | 347 ++ .../archive/RIO/others/puzzle_dqo/IMPORTANT_NOTICE | 48 + forester/archive/RIO/others/puzzle_dqo/INSTALL | 182 + forester/archive/RIO/others/puzzle_dqo/Makefile | 327 ++ forester/archive/RIO/others/puzzle_dqo/Makefile.am | 2 + forester/archive/RIO/others/puzzle_dqo/Makefile.in | 327 ++ forester/archive/RIO/others/puzzle_dqo/aclocal.m4 | 104 + .../archive/RIO/others/puzzle_dqo/config.status | 179 + forester/archive/RIO/others/puzzle_dqo/configure | 2265 ++++++++++ .../archive/RIO/others/puzzle_dqo/configure.in | 117 + .../archive/RIO/others/puzzle_dqo/data/Makefile | 177 + .../archive/RIO/others/puzzle_dqo/data/Makefile.am | 1 + .../archive/RIO/others/puzzle_dqo/data/Makefile.in | 177 + .../archive/RIO/others/puzzle_dqo/doc/Makefile | 177 + .../archive/RIO/others/puzzle_dqo/doc/Makefile.am | 1 + .../archive/RIO/others/puzzle_dqo/doc/Makefile.in | 177 + forester/archive/RIO/others/puzzle_dqo/install-sh | 251 ++ forester/archive/RIO/others/puzzle_dqo/missing | 190 + .../archive/RIO/others/puzzle_dqo/mkinstalldirs | 40 + .../archive/RIO/others/puzzle_dqo/src/Makefile | 317 ++ .../archive/RIO/others/puzzle_dqo/src/Makefile.am | 49 + .../archive/RIO/others/puzzle_dqo/src/Makefile.in | 317 ++ forester/archive/RIO/others/puzzle_dqo/src/README | 1 + forester/archive/RIO/others/puzzle_dqo/src/gamma.c | 346 ++ forester/archive/RIO/others/puzzle_dqo/src/gamma.h | 30 + forester/archive/RIO/others/puzzle_dqo/src/ml.h | 279 ++ forester/archive/RIO/others/puzzle_dqo/src/ml1.c | 1743 ++++++++ forester/archive/RIO/others/puzzle_dqo/src/ml2.c | 1637 +++++++ forester/archive/RIO/others/puzzle_dqo/src/ml3.c | 350 ++ .../archive/RIO/others/puzzle_dqo/src/model1.c | 326 ++ .../archive/RIO/others/puzzle_dqo/src/model2.c | 1125 +++++ forester/archive/RIO/others/puzzle_dqo/src/outdist | 4 + .../archive/RIO/others/puzzle_dqo/src/ppuzzle.h | 274 ++ .../archive/RIO/others/puzzle_dqo/src/puzzle.h | 493 +++ .../archive/RIO/others/puzzle_dqo/src/puzzle1.c | 2864 +++++++++++++ .../archive/RIO/others/puzzle_dqo/src/puzzle2.c | 2651 ++++++++++++ forester/archive/RIO/others/puzzle_dqo/src/sched.c | 423 ++ forester/archive/RIO/others/puzzle_dqo/src/sched.h | 53 + forester/archive/RIO/others/puzzle_dqo/src/test | 19 + forester/archive/RIO/others/puzzle_dqo/src/test.in | 19 + forester/archive/RIO/others/puzzle_dqo/src/util.c | 751 ++++ forester/archive/RIO/others/puzzle_dqo/src/util.h | 96 + forester/archive/RIO/others/puzzle_mod/AUTHORS | 45 + forester/archive/RIO/others/puzzle_mod/COPYING | 340 ++ forester/archive/RIO/others/puzzle_mod/ChangeLog | 347 ++ .../archive/RIO/others/puzzle_mod/IMPORTANT_NOTICE | 48 + forester/archive/RIO/others/puzzle_mod/Makefile | 327 ++ forester/archive/RIO/others/puzzle_mod/Makefile.am | 2 + forester/archive/RIO/others/puzzle_mod/Makefile.in | 327 ++ forester/archive/RIO/others/puzzle_mod/aclocal.m4 | 104 + .../archive/RIO/others/puzzle_mod/config.status | 179 + forester/archive/RIO/others/puzzle_mod/configure | 2265 ++++++++++ .../archive/RIO/others/puzzle_mod/configure.in | 117 + .../archive/RIO/others/puzzle_mod/data/Makefile | 177 + .../archive/RIO/others/puzzle_mod/data/Makefile.am | 1 + .../archive/RIO/others/puzzle_mod/data/Makefile.in | 177 + .../archive/RIO/others/puzzle_mod/doc/Makefile | 177 + .../archive/RIO/others/puzzle_mod/doc/Makefile.am | 1 + .../archive/RIO/others/puzzle_mod/doc/Makefile.in | 177 + forester/archive/RIO/others/puzzle_mod/install-sh | 251 ++ forester/archive/RIO/others/puzzle_mod/missing | 190 + .../archive/RIO/others/puzzle_mod/mkinstalldirs | 40 + .../archive/RIO/others/puzzle_mod/src/00README | 97 + .../archive/RIO/others/puzzle_mod/src/Makefile | 356 ++ .../archive/RIO/others/puzzle_mod/src/Makefile.am | 77 + .../archive/RIO/others/puzzle_mod/src/Makefile.in | 356 ++ forester/archive/RIO/others/puzzle_mod/src/README | 1 + forester/archive/RIO/others/puzzle_mod/src/gamma.c | 346 ++ forester/archive/RIO/others/puzzle_mod/src/gamma.h | 30 + forester/archive/RIO/others/puzzle_mod/src/ml.h | 279 ++ forester/archive/RIO/others/puzzle_mod/src/ml1.c | 1734 ++++++++ forester/archive/RIO/others/puzzle_mod/src/ml2.c | 1871 ++++++++ forester/archive/RIO/others/puzzle_mod/src/ml3.c | 350 ++ .../archive/RIO/others/puzzle_mod/src/model1.c | 326 ++ .../archive/RIO/others/puzzle_mod/src/model2.c | 1125 +++++ .../archive/RIO/others/puzzle_mod/src/ppuzzle.c | 2418 +++++++++++ .../archive/RIO/others/puzzle_mod/src/ppuzzle.h | 274 ++ .../archive/RIO/others/puzzle_mod/src/puzzle.h | 493 +++ .../archive/RIO/others/puzzle_mod/src/puzzle1.c | 4527 ++++++++++++++++++++ .../archive/RIO/others/puzzle_mod/src/puzzle2.c | 2701 ++++++++++++ forester/archive/RIO/others/puzzle_mod/src/sched.c | 423 ++ forester/archive/RIO/others/puzzle_mod/src/sched.h | 53 + forester/archive/RIO/others/puzzle_mod/src/test | 19 + forester/archive/RIO/others/puzzle_mod/src/test.in | 19 + forester/archive/RIO/others/puzzle_mod/src/util.c | 748 ++++ forester/archive/RIO/others/puzzle_mod/src/util.h | 96 + forester/archive/perl/00README | 48 + forester/archive/perl/Xrio.pl | 585 +++ forester/archive/perl/bootstrapCounter.pl | 184 + forester/archive/perl/bootstrapSelector.pl | 291 ++ forester/archive/perl/bootstrap_cz.pl | 325 ++ forester/archive/perl/countSpeciesSPTrEMBL.pl | 150 + forester/archive/perl/extractSWISS-PROT.pl | 176 + forester/archive/perl/extractSpecies.pl | 113 + forester/archive/perl/extractTrembl.pl | 199 + forester/archive/perl/file_proc.pl | 52 + forester/archive/perl/forester.pm | 1428 ++++++ forester/archive/perl/gs_aa_extract.pl | 53 + forester/archive/perl/makeTree.pl | 1211 ++++++ forester/archive/perl/mt.pl | 261 ++ forester/archive/perl/multifetch.pl | 71 + forester/archive/perl/nph-riowebserver | 939 ++++ forester/archive/perl/p7extract.pl | 116 + forester/archive/perl/pf_cutoff_extract.pl | 73 + forester/archive/perl/pfam2pwd.pl | 743 ++++ forester/archive/perl/pfam2slx.pl | 94 + forester/archive/perl/phylo_pl.pl | 1735 ++++++++ forester/archive/perl/queue.pm | 150 + forester/archive/perl/rio.pl | 3391 +++++++++++++++ forester/archive/perl/rio_module.pm | 1108 +++++ forester/archive/perl/rio_slave.pl | 160 + forester/archive/perl/rio_slave_driver.pl | 108 + forester/archive/perl/xt.pl | 640 +++ 350 files changed, 152175 insertions(+) create mode 100644 forester/archive/RIO/C/Makefile create mode 100644 forester/archive/RIO/C/bootstrap_cz.c create mode 100644 forester/archive/RIO/COPYRIGHT create mode 100644 forester/archive/RIO/IMPORTANT_NOTICE create mode 100644 forester/archive/RIO/LICENSE create mode 100644 forester/archive/RIO/RIO_INSTALL create mode 100644 forester/archive/RIO/data.tar.bz2 create mode 100644 forester/archive/RIO/docs/RIO.pdf create mode 100644 forester/archive/RIO/others/hmmer/00README create mode 100644 forester/archive/RIO/others/hmmer/COPYRIGHT create mode 100644 forester/archive/RIO/others/hmmer/INSTALL create mode 100644 forester/archive/RIO/others/hmmer/LICENSE create mode 100644 forester/archive/RIO/others/hmmer/Makefile.in create mode 100644 forester/archive/RIO/others/hmmer/NOTES create mode 100644 forester/archive/RIO/others/hmmer/Userguide.pdf create mode 100755 forester/archive/RIO/others/hmmer/config.guess create mode 100755 forester/archive/RIO/others/hmmer/config.sub create mode 100755 forester/archive/RIO/others/hmmer/configure create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmalign.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmbuild.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmcalibrate.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmconvert.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmemit.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmer.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmfetch.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmindex.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmpfam.man create mode 100644 forester/archive/RIO/others/hmmer/documentation/man/hmmsearch.man create mode 100755 forester/archive/RIO/others/hmmer/install-sh create mode 100644 forester/archive/RIO/others/hmmer/squid/00README create mode 100644 forester/archive/RIO/others/hmmer/squid/Docs/abstract.tex create mode 100644 forester/archive/RIO/others/hmmer/squid/Docs/formats.tex create mode 100644 forester/archive/RIO/others/hmmer/squid/Docs/gsi-format.tex create mode 100644 forester/archive/RIO/others/hmmer/squid/Docs/intro.tex create mode 100644 forester/archive/RIO/others/hmmer/squid/Docs/main.tex create mode 100644 forester/archive/RIO/others/hmmer/squid/Docs/selex.tex create mode 100644 forester/archive/RIO/others/hmmer/squid/Docs/squid-format.tex create mode 100644 forester/archive/RIO/others/hmmer/squid/Docs/ssi-format.tex create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/a2m create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/clustal create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/embl create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/fasta create mode 100755 forester/archive/RIO/others/hmmer/squid/Formats/formattest.pl create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/gcg create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/gcgdata.1 create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/gcgdata.2 create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/genbank create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/msf create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/phylip create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/pir create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/regression.dat create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/selex.1 create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/selex.2 create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/stockholm.1 create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/stockholm.2 create mode 100644 forester/archive/RIO/others/hmmer/squid/Formats/swissprot create mode 100644 forester/archive/RIO/others/hmmer/squid/INSTALL create mode 100644 forester/archive/RIO/others/hmmer/squid/Makefile.in create mode 100644 forester/archive/RIO/others/hmmer/squid/Man/afetch.man create mode 100644 forester/archive/RIO/others/hmmer/squid/Man/alistat.man create mode 100644 forester/archive/RIO/others/hmmer/squid/Man/seqstat.man create mode 100644 forester/archive/RIO/others/hmmer/squid/Man/sfetch.man create mode 100644 forester/archive/RIO/others/hmmer/squid/Man/shuffle.man create mode 100644 forester/archive/RIO/others/hmmer/squid/Man/sreformat.man create mode 100644 forester/archive/RIO/others/hmmer/squid/a2m.c create mode 100644 forester/archive/RIO/others/hmmer/squid/afetch_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/aligneval.c create mode 100644 forester/archive/RIO/others/hmmer/squid/alignio.c create mode 100644 forester/archive/RIO/others/hmmer/squid/alistat_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/clustal.c create mode 100644 forester/archive/RIO/others/hmmer/squid/cluster.c create mode 100644 forester/archive/RIO/others/hmmer/squid/compalign_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/compstruct_main.c create mode 100755 forester/archive/RIO/others/hmmer/squid/configure create mode 100644 forester/archive/RIO/others/hmmer/squid/dayhoff.c create mode 100644 forester/archive/RIO/others/hmmer/squid/eps.c create mode 100644 forester/archive/RIO/others/hmmer/squid/file.c create mode 100644 forester/archive/RIO/others/hmmer/squid/getopt.c create mode 100644 forester/archive/RIO/others/hmmer/squid/gki.c create mode 100644 forester/archive/RIO/others/hmmer/squid/gki.h create mode 100644 forester/archive/RIO/others/hmmer/squid/gsi.c create mode 100644 forester/archive/RIO/others/hmmer/squid/gsi.h create mode 100644 forester/archive/RIO/others/hmmer/squid/gsi64.c create mode 100644 forester/archive/RIO/others/hmmer/squid/gsi64.h create mode 100644 forester/archive/RIO/others/hmmer/squid/hsregex.c create mode 100755 forester/archive/RIO/others/hmmer/squid/install-sh create mode 100644 forester/archive/RIO/others/hmmer/squid/iupac.c create mode 100644 forester/archive/RIO/others/hmmer/squid/msa.c create mode 100644 forester/archive/RIO/others/hmmer/squid/msa.h create mode 100644 forester/archive/RIO/others/hmmer/squid/msf.c create mode 100644 forester/archive/RIO/others/hmmer/squid/phylip.c create mode 100644 forester/archive/RIO/others/hmmer/squid/revcomp.c create mode 100644 forester/archive/RIO/others/hmmer/squid/revcomp_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/rk.c create mode 100644 forester/archive/RIO/others/hmmer/squid/rk.h create mode 100644 forester/archive/RIO/others/hmmer/squid/selex.c create mode 100644 forester/archive/RIO/others/hmmer/squid/seqencode.c create mode 100644 forester/archive/RIO/others/hmmer/squid/seqsplit_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/seqstat_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/sfetch_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/shuffle.c create mode 100644 forester/archive/RIO/others/hmmer/squid/shuffle_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/sindex_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/sqerror.c create mode 100644 forester/archive/RIO/others/hmmer/squid/sqfuncs.h create mode 100644 forester/archive/RIO/others/hmmer/squid/sqio.c create mode 100644 forester/archive/RIO/others/hmmer/squid/squid.h.in create mode 100644 forester/archive/RIO/others/hmmer/squid/squidconf.h.in create mode 100644 forester/archive/RIO/others/hmmer/squid/squidcore.c create mode 100644 forester/archive/RIO/others/hmmer/squid/sre_ctype.c create mode 100644 forester/archive/RIO/others/hmmer/squid/sre_math.c create mode 100644 forester/archive/RIO/others/hmmer/squid/sre_string.c create mode 100644 forester/archive/RIO/others/hmmer/squid/sreformat_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/ssi.c create mode 100644 forester/archive/RIO/others/hmmer/squid/ssi.h create mode 100644 forester/archive/RIO/others/hmmer/squid/stack.c create mode 100644 forester/archive/RIO/others/hmmer/squid/stockholm.c create mode 100644 forester/archive/RIO/others/hmmer/squid/stockholm.h create mode 100644 forester/archive/RIO/others/hmmer/squid/stopwatch.c create mode 100644 forester/archive/RIO/others/hmmer/squid/stopwatch.h create mode 100644 forester/archive/RIO/others/hmmer/squid/test_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/translate.c create mode 100644 forester/archive/RIO/others/hmmer/squid/translate_main.c create mode 100644 forester/archive/RIO/others/hmmer/squid/types.c create mode 100644 forester/archive/RIO/others/hmmer/squid/weight.c create mode 100644 forester/archive/RIO/others/hmmer/squid/weight_main.c create mode 100644 forester/archive/RIO/others/hmmer/src/Makefile.in create mode 100644 forester/archive/RIO/others/hmmer/src/alphabet.c create mode 100644 forester/archive/RIO/others/hmmer/src/camJul97.c create mode 100644 forester/archive/RIO/others/hmmer/src/config.h create mode 100644 forester/archive/RIO/others/hmmer/src/core_algorithms.c create mode 100644 forester/archive/RIO/others/hmmer/src/debug.c create mode 100644 forester/archive/RIO/others/hmmer/src/display.c create mode 100644 forester/archive/RIO/others/hmmer/src/emit.c create mode 100644 forester/archive/RIO/others/hmmer/src/emulation.c create mode 100644 forester/archive/RIO/others/hmmer/src/funcs.h create mode 100644 forester/archive/RIO/others/hmmer/src/globals.h create mode 100644 forester/archive/RIO/others/hmmer/src/histogram.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmalign.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmbuild.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmcalibrate-pvm.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmcalibrate.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmconvert.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmemit.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmfetch.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmindex.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmio.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmpfam-pvm.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmpfam.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmpostal.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmsearch-pvm.c create mode 100644 forester/archive/RIO/others/hmmer/src/hmmsearch.c create mode 100644 forester/archive/RIO/others/hmmer/src/masks.c create mode 100644 forester/archive/RIO/others/hmmer/src/mathsupport.c create mode 100644 forester/archive/RIO/others/hmmer/src/misc.c create mode 100644 forester/archive/RIO/others/hmmer/src/modelmakers.c create mode 100644 forester/archive/RIO/others/hmmer/src/plan7.c create mode 100644 forester/archive/RIO/others/hmmer/src/plan9.c create mode 100644 forester/archive/RIO/others/hmmer/src/postprob.c create mode 100644 forester/archive/RIO/others/hmmer/src/postprob.h create mode 100644 forester/archive/RIO/others/hmmer/src/prior.c create mode 100644 forester/archive/RIO/others/hmmer/src/pvm.c create mode 100644 forester/archive/RIO/others/hmmer/src/states.c create mode 100644 forester/archive/RIO/others/hmmer/src/structs.h create mode 100644 forester/archive/RIO/others/hmmer/src/threads.c create mode 100644 forester/archive/RIO/others/hmmer/src/tophits.c create mode 100644 forester/archive/RIO/others/hmmer/src/trace.c create mode 100644 forester/archive/RIO/others/hmmer/src/weetest.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Exercises.sh create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Makefile.in create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Optiontests.fa create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Optiontests.nfa create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Optiontests.nslx create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Optiontests.pam create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Optiontests.pl create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Optiontests.pri create mode 100644 forester/archive/RIO/others/hmmer/testsuite/Optiontests.slx create mode 100644 forester/archive/RIO/others/hmmer/testsuite/README create mode 100644 forester/archive/RIO/others/hmmer/testsuite/alignalign_test.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/evd_test.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/fitting_test.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/fn3-bin create mode 100644 forester/archive/RIO/others/hmmer/testsuite/fn3-bin-swap create mode 100644 forester/archive/RIO/others/hmmer/testsuite/fn3.hmm create mode 100644 forester/archive/RIO/others/hmmer/testsuite/fn3.seed create mode 100644 forester/archive/RIO/others/hmmer/testsuite/masks_test.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/parsingviterbi_test.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/titin.fa create mode 100644 forester/archive/RIO/others/hmmer/testsuite/tophits_test.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/trace_test.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/trace_test.hmm create mode 100644 forester/archive/RIO/others/hmmer/testsuite/trace_test.seq create mode 100644 forester/archive/RIO/others/hmmer/testsuite/trace_test.slx create mode 100644 forester/archive/RIO/others/hmmer/testsuite/viterbi_exercise.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.c create mode 100644 forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.hmm create mode 100644 forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.seq create mode 100644 forester/archive/RIO/others/hmmer/tutorial/7LES_DROME create mode 100644 forester/archive/RIO/others/hmmer/tutorial/Artemia.fa create mode 100644 forester/archive/RIO/others/hmmer/tutorial/RU1A_HUMAN create mode 100644 forester/archive/RIO/others/hmmer/tutorial/amino.null create mode 100644 forester/archive/RIO/others/hmmer/tutorial/amino.pri create mode 100644 forester/archive/RIO/others/hmmer/tutorial/fn3.slx create mode 100644 forester/archive/RIO/others/hmmer/tutorial/globins50.msf create mode 100644 forester/archive/RIO/others/hmmer/tutorial/globins630.fa create mode 100644 forester/archive/RIO/others/hmmer/tutorial/nucleic.null create mode 100644 forester/archive/RIO/others/hmmer/tutorial/nucleic.pri create mode 100644 forester/archive/RIO/others/hmmer/tutorial/pkinase.slx create mode 100644 forester/archive/RIO/others/hmmer/tutorial/rrm.hmm create mode 100644 forester/archive/RIO/others/hmmer/tutorial/rrm.slx create mode 100644 forester/archive/RIO/others/phylip_mod/IMPORTANT_NOTICE create mode 100644 forester/archive/RIO/others/phylip_mod/src/CHANGES create mode 100644 forester/archive/RIO/others/phylip_mod/src/Makefile create mode 100644 forester/archive/RIO/others/phylip_mod/src/cons.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/cons.h create mode 100644 forester/archive/RIO/others/phylip_mod/src/consense.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/dist.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/dist.h create mode 100644 forester/archive/RIO/others/phylip_mod/src/fitch.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/neighbor.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/phylip.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/phylip.h create mode 100644 forester/archive/RIO/others/phylip_mod/src/proml.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/promlk.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/protdist.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/protpars.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/seq.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/seq.h create mode 100644 forester/archive/RIO/others/phylip_mod/src/seqboot.c create mode 100644 forester/archive/RIO/others/phylip_mod/src/test_infile_fitch create mode 100644 forester/archive/RIO/others/phylip_mod/src/test_infile_protdist create mode 100644 forester/archive/RIO/others/phylip_mod/src/test_infile_protml create mode 100644 forester/archive/RIO/others/phylip_mod/src/test_infile_protmlk create mode 100644 forester/archive/RIO/others/phylip_mod/src/test_infile_protpars create mode 100644 forester/archive/RIO/others/phylip_mod/src/test_infile_seqbboot create mode 100644 forester/archive/RIO/others/puzzle_dqo/AUTHORS create mode 100644 forester/archive/RIO/others/puzzle_dqo/COPYING create mode 100644 forester/archive/RIO/others/puzzle_dqo/ChangeLog create mode 100644 forester/archive/RIO/others/puzzle_dqo/IMPORTANT_NOTICE create mode 100644 forester/archive/RIO/others/puzzle_dqo/INSTALL create mode 100644 forester/archive/RIO/others/puzzle_dqo/Makefile create mode 100644 forester/archive/RIO/others/puzzle_dqo/Makefile.am create mode 100644 forester/archive/RIO/others/puzzle_dqo/Makefile.in create mode 100644 forester/archive/RIO/others/puzzle_dqo/aclocal.m4 create mode 100755 forester/archive/RIO/others/puzzle_dqo/config.status create mode 100755 forester/archive/RIO/others/puzzle_dqo/configure create mode 100644 forester/archive/RIO/others/puzzle_dqo/configure.in create mode 100644 forester/archive/RIO/others/puzzle_dqo/data/Makefile create mode 100644 forester/archive/RIO/others/puzzle_dqo/data/Makefile.am create mode 100644 forester/archive/RIO/others/puzzle_dqo/data/Makefile.in create mode 100644 forester/archive/RIO/others/puzzle_dqo/doc/Makefile create mode 100644 forester/archive/RIO/others/puzzle_dqo/doc/Makefile.am create mode 100644 forester/archive/RIO/others/puzzle_dqo/doc/Makefile.in create mode 100755 forester/archive/RIO/others/puzzle_dqo/install-sh create mode 100755 forester/archive/RIO/others/puzzle_dqo/missing create mode 100755 forester/archive/RIO/others/puzzle_dqo/mkinstalldirs create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/Makefile create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/Makefile.am create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/Makefile.in create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/README create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/gamma.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/gamma.h create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/ml.h create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/ml1.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/ml2.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/ml3.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/model1.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/model2.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/outdist create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/ppuzzle.h create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/puzzle.h create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/puzzle1.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/puzzle2.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/sched.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/sched.h create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/test create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/test.in create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/util.c create mode 100644 forester/archive/RIO/others/puzzle_dqo/src/util.h create mode 100644 forester/archive/RIO/others/puzzle_mod/AUTHORS create mode 100644 forester/archive/RIO/others/puzzle_mod/COPYING create mode 100644 forester/archive/RIO/others/puzzle_mod/ChangeLog create mode 100644 forester/archive/RIO/others/puzzle_mod/IMPORTANT_NOTICE create mode 100644 forester/archive/RIO/others/puzzle_mod/Makefile create mode 100644 forester/archive/RIO/others/puzzle_mod/Makefile.am create mode 100644 forester/archive/RIO/others/puzzle_mod/Makefile.in create mode 100644 forester/archive/RIO/others/puzzle_mod/aclocal.m4 create mode 100755 forester/archive/RIO/others/puzzle_mod/config.status create mode 100755 forester/archive/RIO/others/puzzle_mod/configure create mode 100644 forester/archive/RIO/others/puzzle_mod/configure.in create mode 100644 forester/archive/RIO/others/puzzle_mod/data/Makefile create mode 100644 forester/archive/RIO/others/puzzle_mod/data/Makefile.am create mode 100644 forester/archive/RIO/others/puzzle_mod/data/Makefile.in create mode 100644 forester/archive/RIO/others/puzzle_mod/doc/Makefile create mode 100644 forester/archive/RIO/others/puzzle_mod/doc/Makefile.am create mode 100644 forester/archive/RIO/others/puzzle_mod/doc/Makefile.in create mode 100755 forester/archive/RIO/others/puzzle_mod/install-sh create mode 100755 forester/archive/RIO/others/puzzle_mod/missing create mode 100755 forester/archive/RIO/others/puzzle_mod/mkinstalldirs create mode 100644 forester/archive/RIO/others/puzzle_mod/src/00README create mode 100644 forester/archive/RIO/others/puzzle_mod/src/Makefile create mode 100644 forester/archive/RIO/others/puzzle_mod/src/Makefile.am create mode 100644 forester/archive/RIO/others/puzzle_mod/src/Makefile.in create mode 100644 forester/archive/RIO/others/puzzle_mod/src/README create mode 100644 forester/archive/RIO/others/puzzle_mod/src/gamma.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/gamma.h create mode 100644 forester/archive/RIO/others/puzzle_mod/src/ml.h create mode 100644 forester/archive/RIO/others/puzzle_mod/src/ml1.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/ml2.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/ml3.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/model1.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/model2.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/ppuzzle.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/ppuzzle.h create mode 100644 forester/archive/RIO/others/puzzle_mod/src/puzzle.h create mode 100644 forester/archive/RIO/others/puzzle_mod/src/puzzle1.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/puzzle2.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/sched.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/sched.h create mode 100644 forester/archive/RIO/others/puzzle_mod/src/test create mode 100644 forester/archive/RIO/others/puzzle_mod/src/test.in create mode 100644 forester/archive/RIO/others/puzzle_mod/src/util.c create mode 100644 forester/archive/RIO/others/puzzle_mod/src/util.h create mode 100755 forester/archive/perl/00README create mode 100755 forester/archive/perl/Xrio.pl create mode 100755 forester/archive/perl/bootstrapCounter.pl create mode 100755 forester/archive/perl/bootstrapSelector.pl create mode 100755 forester/archive/perl/bootstrap_cz.pl create mode 100755 forester/archive/perl/countSpeciesSPTrEMBL.pl create mode 100755 forester/archive/perl/extractSWISS-PROT.pl create mode 100755 forester/archive/perl/extractSpecies.pl create mode 100755 forester/archive/perl/extractTrembl.pl create mode 100755 forester/archive/perl/file_proc.pl create mode 100755 forester/archive/perl/forester.pm create mode 100755 forester/archive/perl/gs_aa_extract.pl create mode 100755 forester/archive/perl/makeTree.pl create mode 100755 forester/archive/perl/mt.pl create mode 100755 forester/archive/perl/multifetch.pl create mode 100755 forester/archive/perl/nph-riowebserver create mode 100755 forester/archive/perl/p7extract.pl create mode 100755 forester/archive/perl/pf_cutoff_extract.pl create mode 100755 forester/archive/perl/pfam2pwd.pl create mode 100755 forester/archive/perl/pfam2slx.pl create mode 100755 forester/archive/perl/phylo_pl.pl create mode 100755 forester/archive/perl/queue.pm create mode 100755 forester/archive/perl/rio.pl create mode 100755 forester/archive/perl/rio_module.pm create mode 100755 forester/archive/perl/rio_slave.pl create mode 100755 forester/archive/perl/rio_slave_driver.pl create mode 100755 forester/archive/perl/xt.pl diff --git a/forester/archive/RIO/C/Makefile b/forester/archive/RIO/C/Makefile new file mode 100644 index 0000000..552adfe --- /dev/null +++ b/forester/archive/RIO/C/Makefile @@ -0,0 +1,16 @@ +# Makefile for bootstrap_cz +# Last modified 06/07/01 + +# For GNU gcc +CFLAGS = -O2 -Wall -pedantic + +# This one specifies the "cc" C compiler +#CC = cc $(CFLAGS) +# +# To use "gcc" instead +CC = gcc $(CFLAGS) + + +bootstrap_cz: bootstrap_cz.c + $(CC) -o bootstrap_cz bootstrap_cz.c + diff --git a/forester/archive/RIO/C/bootstrap_cz.c b/forester/archive/RIO/C/bootstrap_cz.c new file mode 100644 index 0000000..6f59a30 --- /dev/null +++ b/forester/archive/RIO/C/bootstrap_cz.c @@ -0,0 +1,484 @@ +/* +# bootstrap_cz +# ------------ +# Copyright (C) 1999-2002 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Created: 06/06/01 +# +# Last modified: 01/27/02 +# +# Purpose: +# Bootstrap resamples an alignment in PHYLIP sequential format times. +# Bootstrapping is not done randomly but according to a BSP (bootstrap +# positions) file. +# The BSP file can be created with the Perl program "bootstrap_cz.pl" +# in mode 0. +# This prgram has the same functionality as "bootstrap_cz.pl" in mode 1. +# Sequence names are normalized to LENGTH_OF_NAME characters. +# The output alignment is in PHYLIP's sequential or interleaved format. +# (These two are the same in this case, since all the seqs will be one +# line in length (no returns in seq).) +# +# Usage: bootstrap_cz +# [number of processors] +*/ + + + +#include +#include +#include +#include + + +#define LENGTH_OF_NAME 26 + + +static char **names, /* This stores the sequence names */ + **sequences; /* This stores the sequences */ +static int number_of_seqs, + number_of_colm; + + +void readInAlignmnet( const char * ); +void bootstrapAccordingToBSPfile( int, const char *, const char * ); +void checkForMemAllocFailure( void * ); +int fileExists( const char *); +void errorInCommandLine(); + + + + + +/* Reads the seqs and seq-names from inalignment */ +/* into **sequences and **sequences. */ +/* Inalignment must be in PHYLIP sequential format. */ +/* Last modified: 06/25/01 */ +void readInAlignment( const char *inalignment ) { + + FILE *inalignment_fp = NULL; + char *str = NULL; + int max_length = 0; + register char c = ' '; + register int i = 0, + ii = 0, + z = 0, + seq = 0; + + number_of_seqs = 0; + number_of_colm = 0; + + inalignment_fp = fopen( inalignment, "r" ); + if ( inalignment_fp == NULL ) { + printf( "\nbootstrap_cz: Error: Could not open alignment file for reading.\n" ); + exit( -1 ); + } + + if ( fscanf( inalignment_fp, "%d", &number_of_seqs ) != 1 ) { + printf( "\nbootstrap_cz: Error: Could not read in number of seqs.\n" ); + exit( -1 ); + } + if ( fscanf( inalignment_fp, "%d", &number_of_colm ) != 1 ) { + printf( "\nbootstrap_cz: Error: Could not read in number of columns.\n" ); + exit( -1 ); + } + + names = malloc( number_of_seqs * sizeof( char *) ); + checkForMemAllocFailure( names ); + for ( i = 0; i < number_of_seqs; ++i ) { + names[ i ] = malloc( LENGTH_OF_NAME * sizeof( char ) ); + checkForMemAllocFailure( names[ i ] ); + } + + sequences = malloc( number_of_seqs * sizeof( char * ) ); + checkForMemAllocFailure( sequences ); + for ( i = 0; i < number_of_seqs; ++i ) { + sequences[ i ] = malloc( number_of_colm * sizeof( char ) ); + checkForMemAllocFailure( sequences[ i ] ); + } + + max_length = ( 30 * LENGTH_OF_NAME ) + number_of_colm; + + str = malloc( max_length * sizeof( char * ) ); + checkForMemAllocFailure( str ); + + while ( fgets( str, max_length, inalignment_fp ) != NULL ) { + + if ( !isspace( str[ 0 ] ) != 0 ) { + + i = 0; + while ( str[ i ] != ' ' ) { + names[ seq ][ i ] = str[ i ]; + i++; + } + + ii = i; + while ( ii < LENGTH_OF_NAME ) { + names[ seq ][ ii ] = ' '; + ii++; + } + + z = 0; + + while ( str[ i ] != '\n' && str[ i ] != '\r' && str[ i ] != '\0' ) { + c = str[ i ]; + if ( c != ' ' ) { + if ( isupper( c ) != 0 || c == '-' ) { + sequences[ seq ][ z++ ] = c; + } + else { + printf( "\nbootstrap_cz: Error: Sequence must be represented by uppercase letters A-Z and \"-\" only.\n" ); + exit( -1 ); + } + } + i++; + if ( z > number_of_colm ) { + printf( "\nbootstrap_cz: Error: line in \"%s\" contains more than %d columns.\n", + inalignment, number_of_colm ); + exit( -1 ); + } + } + if ( z != number_of_colm ) { + printf( "\nbootstrap_cz: Error: line in \"%s\" contains a incorrect number of columns.\n", + inalignment ); + exit( -1 ); + } + + seq++; + + if ( seq > number_of_seqs ) { + printf( "\nbootstrap_cz: Error: \"%s\" contains more than %d seqs.\n", + inalignment, number_of_seqs ); + exit( -1 ); + } + } + + + } /* while ( fgets ) */ + + if ( seq != number_of_seqs ) { + printf( "\nbootstrap_cz: Error: \"%s\" contains a incorrect number of seqs.\n", + inalignment ); + exit( -1 ); + } + + fclose( inalignment_fp ); + + return; + +} /* readInAlignment */ + + + +/* Rearrenges the aa in sequences according to */ +/* the bsp (bootstrap positions) file bsp_file. */ +/* Writes the results to outfile */ +/* Last modified: 06/07/01 */ +void bootstrapAccordingToBSPfile( int bootstraps, + const char *bsp_file, + const char *outfile ) { + + FILE *bsp_file_fp = NULL, + *outfile_fp = NULL; + int *positions = NULL, + p = 0; + register int boot = 0, + seq = 0, + i = 0; + + positions = malloc( number_of_colm * sizeof( int ) ); + checkForMemAllocFailure( positions ); + + + bsp_file_fp = fopen( bsp_file, "r" ); + if ( bsp_file_fp == NULL ) { + printf( "\nbootstrap_cz: Error: could not open file \"%s\" for reading.\n", + bsp_file ); + exit( -1 ); + } + + outfile_fp = fopen( outfile, "w" ); + if ( outfile_fp == NULL ) { + printf( "\nbootstrap_cz: Error: could not open file \"%s\" for writing.\n", + outfile ); + exit( -1 ); + } + + for ( boot = 0; boot < bootstraps; ++boot ) { + + for ( i = 0; i < number_of_colm; ++i ) { + if ( fscanf( bsp_file_fp, "%d", &p ) != 1 ) { + printf( "\nbootstrap_cz: Error: file \"%s\" does not correspond to alignment.\n", + bsp_file ); + exit( -1 ); + } + positions[ i ] = p; + } + + fprintf( outfile_fp, " %d %d\n", number_of_seqs, number_of_colm ); + for ( seq = 0; seq < number_of_seqs; ++seq ) { + for ( i = 0; i < LENGTH_OF_NAME; ++i ) { + fprintf( outfile_fp, "%c", names[ seq ][ i ] ); + } + for ( i = 0; i < number_of_colm; ++i ) { + fprintf( outfile_fp, "%c", sequences[ seq ][ positions[ i ] ] ); + } + fprintf( outfile_fp, "\n" ); + } + } + + /* Now, the bsp file must not contain any more numbers */ + if ( fscanf( bsp_file_fp, "%d", &p ) == 1 ) { + printf( "\nbootstrap_cz: Error: file \"%s\" does not correspond to alignment (too long).\n", + bsp_file ); + printf( ">%d<\n", p ); + printf( "number of seqs=%d\n", number_of_seqs ); + exit( -1 ); + } + + fclose( bsp_file_fp ); + fclose( outfile_fp ); + free( positions ); + return; + +} /* bootstrapAccordingToBSPfile */ + + + +/* Rearrenges the aa in sequences according to */ +/* the bsp (bootstrap positions) file bsp_file. */ +/* Writes the results to outfile */ +/* Last modified: 01/25/02 */ +void bootstrapAccordingToBSPfileP( int bootstraps, + int processors, + const char *bsp_file, + const char *outfile ) { + + FILE *bsp_file_fp = NULL, + *outfile_fp = NULL; + int *positions = NULL, + p = 0; + char *outfile_ = NULL; + register int boot = 0, + seq = 0, + i = 0, + j = 0, + z = 0, + flag = 0; + int block_size = 0, + larger_blocks = 0; + + block_size = ( int ) bootstraps / processors; + larger_blocks = bootstraps - ( block_size * processors ); /* number of blocks which have a size of + block_size + 1 */ + + positions = malloc( number_of_colm * sizeof( int ) ); + checkForMemAllocFailure( positions ); + + outfile_ = malloc( ( strlen( outfile ) + 20 ) * sizeof( char ) ); + checkForMemAllocFailure( outfile_ ); + + bsp_file_fp = fopen( bsp_file, "r" ); + if ( bsp_file_fp == NULL ) { + printf( "\nbootstrap_cz: Error: could not open file \"%s\" for reading.\n", + bsp_file ); + exit( -1 ); + } + + j = -1; + flag = 1; + z = 0; + + for ( boot = 0; boot < bootstraps; ++boot ) { + + for ( i = 0; i < number_of_colm; ++i ) { + if ( fscanf( bsp_file_fp, "%d", &p ) != 1 ) { + printf( "\nbootstrap_cz: Error: file \"%s\" does not correspond to alignment.\n", + bsp_file ); + exit( -1 ); + } + positions[ i ] = p; + } + + j++; + + if ( larger_blocks > 0 ) { + if ( j >= block_size + 1 ) { + flag = 1; + j = 0; + larger_blocks--; + } + } + else if ( j >= block_size ) { + flag = 1; + j = 0; + } + + if ( flag == 1 ) { + if ( boot > 0 ) { + fclose( outfile_fp ); + } + sprintf( outfile_, "%s%d", outfile, z++ ); + if ( fileExists( outfile_ ) == 1 ) { + printf( "\nbootstrap_cz: Error: outfile \"%s\" already exists.\n", + outfile_ ); + exit( -1 ); + } + outfile_fp = fopen( outfile_, "w" ); + if ( outfile_fp == NULL ) { + printf( "\nbootstrap_cz: Error: could not open file \"%s\" for writing.\n", + outfile_ ); + exit( -1 ); + } + flag = 0; + } + + fprintf( outfile_fp, " %d %d\n", number_of_seqs, number_of_colm ); + for ( seq = 0; seq < number_of_seqs; ++seq ) { + for ( i = 0; i < LENGTH_OF_NAME; ++i ) { + fprintf( outfile_fp, "%c", names[ seq ][ i ] ); + } + for ( i = 0; i < number_of_colm; ++i ) { + fprintf( outfile_fp, "%c", sequences[ seq ][ positions[ i ] ] ); + } + fprintf( outfile_fp, "\n" ); + } + } + + /* Now, the bsp file must not contain any more numbers */ + if ( fscanf( bsp_file_fp, "%d", &p ) == 1 ) { + printf( "\nbootstrap_cz: Error: file \"%s\" does not correspond to alignment (too long).\n", + bsp_file ); + printf( ">%d<\n", p ); + printf( "number of seqs=%d\n", number_of_seqs ); + exit( -1 ); + } + + fclose( bsp_file_fp ); + fclose( outfile_fp ); + + free( positions ); + free( outfile_ ); + + return; + +} /* bootstrapAccordingToBSPfileP */ + + + + +/* Exits if *p is NULL. */ +/* Last modified: 06/06/01 */ +void checkForMemAllocFailure( void *p ) { + if ( p == NULL ) { + printf( "\nbootstrap_cz: Memory allocation failed.\n" ); + exit( -1 ); + } + else { + return; + } +} /* checkForMemAllocFailure */ + + + +/* Returns 1 if filename can be opened. */ +/* Returns 0 otherwise. */ +/* Last modified: 06/07/01 */ +int fileExists( const char *filename ) { + FILE *fp = NULL; + if ( ( fp = fopen( filename, "r" ) ) != NULL ) { + fclose( fp ); + return 1; + } + else { + return 0; + } +} /* fileExists */ + + + +void errorInCommandLine() { + printf( "\n" ); + printf( " bootstrap_cz version 3.000\n" ); + printf( " ---------------------------\n\n" ); + printf( " Purpose:\n" ); + printf( " Bootstrap resamples an alignment in PHYLIP sequential format times.\n" ); + printf( " Bootstrapping is not done randomly but according to a BSP (bootstrap\n" ); + printf( " positions) file.\n" ); + printf( " The BSP file can be created with the Perl program \"bootstrap_cz.pl\"\n" ); + printf( " in mode 0.\n" ); + printf( " This prgram has the same functionality as \"bootstrap_cz.pl\" in mode 1.\n" ); + printf( " Sequence names are normalized to LENGTH_OF_NAME characters.\n" ); + printf( " The output alignment is in PHYLIP's sequential or interleaved format.\n" ); + printf( " (These two are the same in this case, since all the seqs will be one\n" ); + printf( " line in length (no returns in seq).)\n\n" ); + printf( " Usage: bootstrap_cz \n" ); + printf( " [number of processors]\n\n" ); +} /* errorInCommandLine */ + + + +int main( int argc, char *argv[] ) { + + char *inalign = NULL, + *bsp_file = NULL, + *outfile = NULL; + int bootstraps = 0, + processors = 0; + + + if ( argc != 5 && argc != 6 ) { + errorInCommandLine(); + exit( -1 ); + } + + bootstraps = atoi( argv[ 1 ] ); + inalign = argv[ 2 ]; + bsp_file = argv[ 3 ]; + outfile = argv[ 4 ]; + + if ( bootstraps < 1 ) { + errorInCommandLine(); + exit( -1 ); + } + + if ( argc == 6 ) { + processors = atoi( argv[ 5 ] ); + if ( processors < 1 ) { + errorInCommandLine(); + exit( -1 ); + } + if ( processors > bootstraps ) { + processors = bootstraps; + } + } + + if ( argc == 5 && fileExists( outfile ) == 1 ) { + printf( "\nbootstrap_cz: Error: outfile \"%s\" already exists.\n", + outfile ); + exit( -1 ); + } + + readInAlignment( inalign ); + + if ( argc == 5 ) { + bootstrapAccordingToBSPfile( bootstraps, + bsp_file, + outfile ); + } + else { + bootstrapAccordingToBSPfileP( bootstraps, + processors, + bsp_file, + outfile ); + } + + return 0; + +} /* main */ diff --git a/forester/archive/RIO/COPYRIGHT b/forester/archive/RIO/COPYRIGHT new file mode 100644 index 0000000..eae6883 --- /dev/null +++ b/forester/archive/RIO/COPYRIGHT @@ -0,0 +1,32 @@ +RIO - Phylogenomic Protein Function Analysis +Copyright (C) 2002 Washington University School of Medicine +and Howard Hughes Medical Institute +All rights reserved +---------------------------------------------------------------- + +This pipeline 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. + +In contrast to RIO as a whole, the JAVA programs in directory "java" +are under the BSD license. + +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 RIO release, in the file LICENSE; if not, write to +the Free Software Foundation, Inc., 675 Mass. Ave, Cambridge, MA 02139 +USA. + + diff --git a/forester/archive/RIO/IMPORTANT_NOTICE b/forester/archive/RIO/IMPORTANT_NOTICE new file mode 100644 index 0000000..9040c6f --- /dev/null +++ b/forester/archive/RIO/IMPORTANT_NOTICE @@ -0,0 +1,48 @@ +RIO - Phylogenomic Protein Function Analysis +---------------------------------------------------------------- + + +RIO contains modified versions of programs written by others: + +1. TREE-PUZZLE + (Strimmer, K., and A. von Haeseler. 1996. Quartet puzzling: A quartet maximum + likelihood method for reconstructing tree topologies. Mol. Biol. Evol. 13: 964-969.) + + +2. PHYLIP + (Felsenstein, J. 1993. PHYLIP (Phylogeny Inference Package) version 3.5c. + Distributed by the author. + Department of Genetics, University of Washington, Seattle.) + + +Please note: +------------ + +1. RIO uses modifications of these programs, the original versions were + written by others: + + TREE-PUZZLE: Heiko A. Schmidt, Korbinian Strimmer, Martin Vingron, Arndt von Haeseler + + PHYLIP: Joseph Felsenstein, see also http://evolution.genetics.washington.edu/phylip/credits.html + + +2. The programs in the RIO distribution have been modified specifically + to work within RIO and cannot be used for any other purpose. + + +3. I am responsible for any accidentally introduced errors. + + +4. The original can be downloaded from the following sites: + TREE-PUZZLE: http://www.tree-puzzle.de/ + PHYLIP: http://evolution.genetics.washington.edu/phylip.html + + +RIO also contains hmmer (version 2.2g). +hmmer can be downloaded at: http://hmmer.wustl.edu/ + + + +Christian Zmasek, 03/09/02 + + diff --git a/forester/archive/RIO/LICENSE b/forester/archive/RIO/LICENSE new file mode 100644 index 0000000..a43ea21 --- /dev/null +++ b/forester/archive/RIO/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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 2 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, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/forester/archive/RIO/RIO_INSTALL b/forester/archive/RIO/RIO_INSTALL new file mode 100644 index 0000000..7d4f2ec --- /dev/null +++ b/forester/archive/RIO/RIO_INSTALL @@ -0,0 +1,459 @@ + +RIO - Phylogenomic Protein Function Analysis + +____________________________________________ + + + + +RIO/FORESTER : http://www.genetics.wustl.edu/eddy/forester/ +RIO webserver: http://www.rio.wustl.edu/ + +Reference: Zmasek C.M. and Eddy S.R. (2002) + RIO: Analyzing proteomes by automated phylogenomics using + resampled inference of orthologs. + BMC Bioinformatics 3:14 + http://www.biomedcentral.com/1471-2105/3/14/ + + It is highly recommended that you read this paper before + installing and/or using RIO. (Included in the RIO + distribution as PDF: "RIO.pdf".) + + +Preconditions: A Unix system, Java 1.2 or higher, Perl, gcc or cc, + ... and some experience with Perl and Unix. + + + +1. Compilation +______________ + + +This describes how to compile the various components of RIO. + + + "gunzip RIO1.x.tar.gz" + + "tar -xvf RIO1.x.tar" + + + + +in directory "RIO1.x/C": + + "make" + + + +in directory "RIO1.x/hmmer" (version of HMMER is "2.2g"): + +(if you already have a local copy of HMMER 2.2g installed, this step +is not necessary, but in this case you need to change variables "$HMMALIGN", +"$HMMSEARCH", "$HMMBUILD", "$HMMFETCH", and "$SFE" to point to the +corresponding HMMER programs) + + "./configure" + + "make" + + + +in directory "RIO1.x/java" (requires JDK 1.2 or greater): + + "javac forester/tools/*java" + + "javac ATVapp.java" + + + + +in directory "RIO1.x/puzzle_dqo": + + "./configure" + + "make" + + + +in directory "RIO1.x/puzzle_mod": + + "./configure" + + "make" + + + +in directory "RIO1.x/phylip_mod/src": + + "make install" + + + + +2. Setting the variables in "RIO1.x/perl/rio_module.pm" +_______________________________________________________ + + +Most global variables used in "RIO1.x/perl/rio.pl" are set in +the perl module "RIO1.x/perl/rio_module.pm". +This module pretty much "controls everything". + +It is necessary to set the variables which point to: + +-- the rio directory itself: $PATH_TO_FORESTER + + (example: $PATH_TO_FORESTER = "/home/czmasek/linux/RIO1.1/";) + + +-- your Java virtual machine: $JAVA + + (example: $JAVA = "/home/czmasek/linux/j2sdk1.4.0/bin/java";) + + +-- a directory where temporary files can be created: $TEMP_DIR_DEFAULT + + + + Example: + Now that $PATH_TO_FORESTER, $JAVA, $TEMP_DIR_DEFAULT are set, + it is posssible to run rio.pl based on the example precalculated distances + in "/example_data/": + + % RIO1.1/perl/rio.pl 1 A=aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out0 p I + + To use RIO to analyze your protein sequences, please continue setting + variables and preparing data...... + + + +-- your local copy of the Pfam database (see http://pfam.wustl.edu/) + (if only precalculated distances are being used, these variables do not + matter): + + $PFAM_FULL_DIRECTORY -- the directory containing the "full" alignments + (Pfam-A.full) see below (3.) + + $PFAM_SEED_DIRECTORY -- the directory containing the "seed" alignments + (Pfam-A.seed) see below (3.) + + $PFAM_HMM_DB -- the Pfam HMM library file (Pfam_ls) + see below (3.) + + +-- $TREMBL_ACDEOS_FILE and $SWISSPROT_ACDEOS_FILE: see below (4. and 5.). + + +-- list of species (SWISS-PROT codes) which can be analyzed: $SPECIES_NAMES_FILE + (for most purposes $PATH_TO_FORESTER."data/species/tree_of_life_bin_1-4_species_list" + should be sufficient, hence this variable does not necessarly need to be changed) + + +-- a default species tree in NHX format: $SPECIES_TREE_FILE_DEFAULT + (for most purposes $PATH_TO_FORESTER."data/species/tree_of_life_bin_1-4.nhx" + should be sufficient, hence this variable does not necessarly need to be changed) + + +-- Only if precalculated distances are being used: + $MATRIX_FOR_PWD, $RIO_PWD_DIRECTORY, $RIO_BSP_DIRECTORY, + $RIO_NBD_DIRECTORY, $RIO_ALN_DIRECTORY, and $RIO_HMM_DIRECTORY: + please see below (6.) + + + + + + +IMPORTANT: Need to redo steps 3., 4., 5., and 6. if species + in the master species tree and/or the species list + are added and/or changed or if a new version of Pfam is used!! + + + + + +3. Downloading and processing of Pfam +_____________________________________ + + + +Please note: Even if you already have a local copy of the +Pfam database, you still need to perform steps c. through k. + +a. download + - "Pfam_ls" (PFAM HMM library, glocal alignment models) + - "Pfam-A.full" (full alignments of the curated families) + - "Pfam-A.seed" (seed alignments of the curated families) + [and ideally "prior.tar.gz"] + from http://pfam.wustl.edu/ or ftp.genetics.wustl.edu/pub/eddy/pfam-x/ + +b. "gunzip" and "tar -xvf" these downloaded files, if necessary + +c. create a new directory named "Full" and move "Pfam-A.full" into it + +d. in directory "Full" execute "RIO1.x/perl/pfam2slx.pl Pfam-A.full" + +e. set variable $PFAM_FULL_DIRECTORY in "RIO1.x/perl/rio_module.pm" + to point to this "Full" directory + +f. create a new directory named "Seed" and move "Pfam-A.seed" into it + +g. in directory "Seed" execute "RIO1.x/perl/pfam2slx.pl Pfam-A.seed" + +h. set variable $PFAM_SEED_DIRECTORY in "RIO1.x/perl/rio_module.pm" + to point to this "Seed" directory + +i. execute "RIO1.x/hmmer/binaries/hmmindex Pfam_ls" (in same + directory as "Pfam_ls") resulting in "Pfam_ls.ssi" + +j. set environment variable HMMERDB to point to the directory where + "Pfam_ls" and "Pfam_ls.ssi" reside + (for example "setenv HMMERDB /home/czmasek/PFAM7.3/") + +k. set variable $PFAM_HMM_DB in "RIO1.x/perl/rio_module.pm" + to point to the "Pfam_ls" file + (for example $PFAM_HMM_DB = "/home/czmasek/PFAM7.3/Pfam_ls";) + + + + +4. Extraction of ID, DE, and species from a SWISS-PROT sprot.dat file +_____________________________________________________________________ + + +This creates the file from which RIO will get the sequence descriptions for +sequences from SWISS-PROT. +(RIO1.x/data/ does not contain an example for this, since SWISS-PROT is +copyrighted.) + + +a. download SWISS-PROT "sprotXX.dat" from + "ftp://ca.expasy.org/databases/swiss-prot/release/" + +b. "extractSWISS-PROT.pl [species list]" + + ("extractSWISS-PROT.pl" is in "RIO1.x/perl") + + example: + "extractSWISS-PROT.pl sprot40.dat sp40_ACDEOS RIO1.x/data/species/tree_of_life_bin_1-4_species_list" + +c. the output file should be placed in "RIO1.x/data" and the + variable $SWISSPROT_ACDEOS_FILE in "RIO1.x/perl/rio_module.pm" should point + to this output. + + + + +5. Extraction of AC, DE, and species from a TrEMBL trembl.dat file +__________________________________________________________________ + + +This creates the file from which RIO will get the sequence descriptions for +sequences from TrEMBL. +(RIO1.x/data/ already contains an example: "trembl20_ACDEOS_1-4") + +a. download TrEMBL "trembl.dat.gz" from + "ftp://ca.expasy.org/databases/sp_tr_nrdb/" + +b. "gunzip trembl.dat.gz" + +c. "extractTrembl.pl [species list]" + + ("extractTrembl.pl" is in "RIO1.x/perl") + + example: + "extractTrembl.pl trembl.dat trembl17.7_ACDEOS_1-4 RIO1.x/data/species/tree_of_life_bin_1-4_species_list" + +d. the output file should be placed in "RIO1.x/data/" and the + variable $TREMBL_ACDEOS_FILE in "RIO1.x/perl/rio_module.pm" should point + to this output. + + + +Now, you could go to directly to 7. to run the examples...... + + + +6. Precalculation of pairwise distances (optional): pfam2pwd.pl +_______________________________________________________________ + + +This step is of course only necessary if you want to use RIO on +precalculated pairwise distances. The precalculation is time consuming +(range of one or two weeks on ten processors). +It is best to run it on a few machines, dividing up the input data. + +The program to do this, is "RIO1.x/perl/pfam2pwd.pl". + +Please note: "pfam2pwd.pl" creates a logfile in the same directory + where is places the pairwise distance output ($MY_RIO_PWD_DIRECTORY). + + + +The following variables in "RIO1.x/perl/pfam2pwd.pl" need to be set +("pfam2pwd.pl" gets most of its information from "rio_module.pm"): + + +"$MY_PFAM_FULL_DIRECTORY": + This is the directory where the Pfam full alignments reside, processed + as described in 3.a to 3.d. + + + +"$ALGNS_TO_USE_LIST_FILE": + If left empty, all alignments in $MY_PFAM_FULL_DIRECTORY are being + used the calculate pairwise distances from. + If this points to a file listing names of Pfam alignments, + only those listed are being used. + The file can either be a simple new-line deliminated list, or can have + the same format as the "Summary of changes" list + ("FI PF03214 RGP NEW SEED HMM_ls HMM_fs FULL DESC") + which is part of the Pfam distribution. + One purpose of this is to use the list of "too large" alignments + in the logfile produced by "pfam2pwd.pl" to run "pfam2pwd.pl" with + a smaller species list (as can be set with "$MY_SPECIES_NAMES_FILE") + on large alignments. + + + +"$MY_SPECIES_NAMES_FILE" -- Dealing with too large alignments: + + This is most important. It determines the species whose sequences + are being used (sequences from species not listed in $MY_SPECIES_NAMES_FILE + are ignored). Normally, one would use the same list as RIO uses + ($SPECIES_NAMES_FILE in "rio_module.pm"): + + my $MY_SPECIES_NAMES_FILE = $SPECIES_NAMES_FILE; + + For certain large families (such as protein kinases, one must use + a species file which contains less species in order to be able to finish + the calculations in reasonable time: + + my $MY_SPECIES_NAMES_FILE = $PATH_TO_FORESTER."data/tree_of_life_bin_1-4_species_list_NO_RAT_RABBIT_MONKEYS_APES_SHEEP_GOAT_HAMSTER + + An additional way to reduce the number of sequences in an alignment is + to only use sequences originating from SWISS-PROT. This is done by + placing the following line of code into pfam2pwd.pl: + + $TREMBL_ACDEOS_FILE = $PATH_TO_FORESTER."data/NO_TREMBL"; + + + +"$MY_RIO_PWD_DIRECTORY", +"$MY_RIO_BSP_DIRECTORY", +"$MY_RIO_NBD_DIRECTORY", +"$MY_RIO_ALN_DIRECTORY", +"$MY_RIO_HMM_DIRECTORY": + These determine where to place the output. + After all the data has been calculated, the corresponding variables + in RIO1.x/perl/rio_module.pm ("$RIO_PWD_DIRECTORY", etc.) need to be set + so that they point to the appropriate values. Having different variables + allows to precalculate distances and at the same time use RIO on + previously precalculated distances. + + + +"$MY_TEMP_DIR": + A directory to create temporary files in. + + + +"$MIN_SEQS": + Alignments in which the number of sequences after pruning (determined + by "$MY_SPECIES_NAMES_FILE") is lower than $MIN_SEQS, are ignored + (no calculation of pwds). + + + +"$MAX_SEQS": + Alignments in which the number of sequences after pruning (determined + by "$MY_SPECIES_NAMES_FILE") is greater than $MAX_SEQS, are ignored + (no calculation of pwds). + + + +"$MY_SEED": + Seed for the random number generator for bootstrapping (must be 4n+1). + + + +"$MY_MATRIX": + This is used to choose the model to be used for the (ML) + distance calculation: + 0 = JTT + 2 = BLOSUM 62 + 3 = mtREV24 + 5 = VT + 6 = WAG + PAM otherwise + After all the data has been calculated, variable "$MATRIX_FOR_PWD" + in RIO1.x/perl/rio_module.pm needs to be set to the same value. + + + +Once pairwise distances are calculated, the following variables in +"rio_module.pm" need to be set accordingly: +$MATRIX_FOR_PWD : corresponds to $MY_MATRIX in pfam2pwd.pl +$RIO_PWD_DIRECTORY : corresponds to $MY_RIO_PWD_DIRECTORY in pfam2pwd.pl +$RIO_BSP_DIRECTORY : corresponds to $MY_RIO_BSP_DIRECTORY in pfam2pwd.pl +$RIO_NBD_DIRECTORY : corresponds to $MY_RIO_NBD_DIRECTORY in pfam2pwd.pl +$RIO_ALN_DIRECTORY : corresponds to $MY_RIO_ALN_DIRECTORY in pfam2pwd.pl +$RIO_HMM_DIRECTORY : corresponds to $MY_RIO_HMM_DIRECTORY in pfam2pwd.pl +...of course, if Pfam has been updated, the corresponding variables in rio_module.pm +($PFAM_FULL_DIRECTORY, etc.) need to be updated, too. + + + + + + +IMPORTANT: Need to redo steps 3., 4., 5., and 6. if species + in the master species tree and/or the species list + are added and/or changed or if a new version of Pfam is used! + + + + +7. Example of a phylogenomic analysis using "rio.pl" +____________________________________________________ + + +Without using precalculated distances (for this, all the variables above +need to point to the correct loctions, in particular to your local and processed +Pfam database): + + % RIO1.1/perl/rio.pl 3 A=/path/to/my/pfam/Full/aconitase H=aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out3 p I C E + + + +Without using precalculated distances (for this, all the variables above +need to point to the correct loctions, in particular to your local and processed +Pfam database) using a query sequence which is already in the alignment: + + % RIO1.1/perl/rio.pl 4 A=/path/to/my/pfam/Full/aconitase N=LEU2_LACLA/5-449 O=out4 p I C E + + + +Using the example precalculated distances in "/example_data/" +($RIO_PWD_DIRECTORY, etc. need to point to $PATH_TO_FORESTER."example_data/"): + + % RIO1.1/perl/rio.pl 1 A=aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out1 p I C E + + + +Using a query sequence which is already in the precalculated distances in "/example_data/" +($RIO_PWD_DIRECTORY, etc. need to point to $PATH_TO_FORESTER."example_data/"): + + % RIO1.1/perl/rio.pl 2 A=aconitase N=LEU2_LACLA/5-449 O=out2 p I C E + + + +for detailed instructions on how to use rio.pl see the source code, +or type "rio.pl" without any arguments + + + + +Christian Zmasek +zmasek@genetics.wustl.edu +05/26/02 + diff --git a/forester/archive/RIO/data.tar.bz2 b/forester/archive/RIO/data.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d5a86af34e17ba0bfe7c3911da93753923e68dd9 GIT binary patch literal 5790382 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 {L}uS>Y#qPPN7w# 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�|wN4rtNvFtPCDqb` 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

Iv|?m-UF|1+ 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 Rq1h<*17kYH^0`ZQs&f32dcee?3UgJ&P}}n>_wj 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 K2A>^SJmzLjvLyILQG=D{}x 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

Bim{3%^m=NLQ?&>?mh41_ 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 z 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

dNd2>98nWZGijBZQCBfkq_3T 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%0AjJ{6<=jh|)*?$l zJ2dkx9FfSSOq%uHMPzv9ZxOj^!R0&AF!=M>o4Q;R^4K_r?;(du;Dj=ziuCF}Q5;;X zfzpxEGc=>8zAweJ@R^X&lYNXUAF-W)Lx;=#I&5 z=LX9Q26^C1p9*M{TQd`&@sbNDsG<+un$m(^eT@#4ynwU zA3u*w5bhVuHdFHw;Lqpqckz{K}Rokx4$$OY()>%6hIB(ge%j>tKn#XitP2O-=ElSrSYE%!2$x#lIe4zN| zvq>-LjvP14=V z-_pe#RXCIeJ^DV{JL~avv|@_~6lj`8gYv>Pg7a_9PTRKnsvELBZvfM(t@pl(Bb&Sp z?(5^+Si}Qklq>d0uYR5Y2^58sT07X@vMGrfzEU$j%mfrhVD#Ha^>VHp9al-(j7|rH z@??~wDf{QHE$u$dfy;R!b*sR>j=nB*@B>1hYI;RreWqyI8=O?f=MkUDx@NfhV=j~i zJ}~c(?hFL1;_;HDSX4Oku`873=^Hu_keiMX=xZ$fjU3|KRoY~YA|tU47ZWW?!fHwl z9kYg>M9HQ7$lor%TSc4%(WSTQtf>%8lciAm60&0Dq^2>L5tu<*D7cc6pUuTm4&ggC zV6OPT2@BR{c_jwghVo$ z0>wWmc6$lOR>E1#nE$nW>waX^zRu516Ml;s%p*GuS00K9-4=c1II$MSW*m z9Hd>984O}{MO`%h`b)tLfiP%HCQoP61tz)3Lw82%@)L%cg3{PSnc}-p3jt-3QIu)_ zL?}O7QDAP%iG(V=!Zi@7F4Hw9BgyxZ<65R!@1LoB7)zB3?ea~3{I`Q}j&{gC=?<@Q zhnulCa~zKK#;@{h0j8G`YcG^`rpfiGDL-tIPj}2e{G{Sh@mBrsHth7-)5bP7xy`oy z5-+$vtr?g;&S1gQ&C{0X1ZWbtaEfgiWD@|;t9C;!_Pk`^&Cm`J8aufs%u2ySFs8YWr~c_` zl1dH6Pj_$q6RH_a^eYc5-&VQIBpK%n18Y4O#wbascxN{v+MrM}{zQjeC*w8{lUR1^ z75NRmnodCBI1qq^O}h=`dC9#zFX;ad_xUO+t#f*%gJ7w zZl<&QHsgHKCS$^Yu6_Q)fQifyJy*dPga4aDiO$SN{}T%y|J# z`A=ouQQsuMHog9}>QveG-?|p1lsJ`WC0G{2L2S9`e$BPDSw6T`ZSgX58N*@1-B&|m zn5!+_M$m*Qv=y{gUTej;f3?+?>br;0$=XGzZgH$Zk&*y6?3c93cwVm5ju*f|+dAR3 zGxnYp6~-r=^WDuZSbD3CNmz~-R{faHudLiI=$9UJEqjA0Uw`(O-F+N0Fk9Q)%%!5( z38WbR8)?s6PX2f20h+!%^`ubOd?k%X)9uS&SW&S8?3ZJBE3!w{dIXC1IEcQrrS&S! zuWaxI>yB#GNp3EqVA-rOiY~?)Hi)vmn6qefa>USmMFVKq?BOtILVm3ecpjYpN=tY= zFW)MN$QG=yrG>Y_@<9Ha2{$?+D_Am3kG+U3#oiS$Sm=!#a;t2bYwJ%kr!dH*E~=`# z6)M>j6B~08N2aQKdRv^zZ>)n{`q{cl0MwYgv*%&KZRcCsn!8fI%r^Rd z$838Y+>~N++h0Tkqojhho@?Y|vkI6QG@o|M+=nls1{2KO4h?@ayaQyYqIOmExzDa$ zluJcMUP{grXLSkV(Viy8DE+o@ixxg4rV|Zee0Ew@7cSFf`FeA(r8>|VU%r`nu<=d+ zSz4|-@G^5qiIYH|Eb12pc8+*}61zE?wbv1Eq*+B*K*lE6ELSzlH;b?jkX~u_LYtdp@YcD9n z+G$gMxGy~=_K6kuxkBV1&{?PKN|ju}@gaclJ^c??E)Pa0h7{&24&H)&2_{p4r*8p; zqT7!#!$VvlVOUA!#n=zwA%ceyuam26TgDrE>&ITMPC0`Ngp=xCVjG2x))-;hXTSPw zrG5{85LJIcu*b_K_g1kBZ%5zad@j^L&n{I!C^Lo6Lz`E@sW&>Hf#XEYfi6nOWBtxA zGOeNJFYfEl436~Pu~Qiqgo`$X{?PUPnV=Z^a@XIKLTjy@^dsk&nkOO$^?+A1!Fc5v zEw4J*?4Q}l1UR|K2iso22TW5EU5if}WO@gMn7P9uxjF*cA@M0GFH26ygRGaYuda!; z885@pg^HtB?e9M2<@iwBK)<%_00xbz1S^SK5$0rW&by)#N4n`m0Ceg>D4f<*?47~PIwp|9(`Pja^Rl$O-#I8&B(lwnB6unMEq`@EO9KQMH zd?3>&!{~$+Q785LY!>~}gP0+)?W#2bn#=e9 zJ_UJfY_@D>Z8Cl)=?(>*mA`|DUU_V7s{Xa`=-F)O#$}E8oYroCy15STn*5*6>2!X# z!8_nnb4jQ+VfLLojfYxD$UsI0B;ry zqw+BK`@b1ONggDQnj!y^f~(yW&8zJsN8NtFeavS-3Z@zI8$mYg0Sz_lI^DS2_ptcP z+}d?^;h}?Jlz41@l33WtoBR#A#oS=-8t#T3Fx$DiqBkDsjl2JSgj_d|v;N$eJY{XS zKc76^L`alBA)-Wo5`bYM8#|Q z{ceO^S&3bNg4knk8|o<^Nf=XjJ^H_F^kYw|2NsLL@dl7-3hK0}p7xMxIOg{{DUQc#yB>7G2?_&IfA)->yWoC&<|`3pm}dlzhMg`UWn@lwcyFlY#M%bza5Jn^V$-El;udq# z{J(u(ey%Y$zLl!So>?TUhxkAIXP^Jz{qKMOG1a>v_pb+{m$R16=IYwy0}9+`E#(gx z#wJj_V;BpFSe2ftVI?(K?716`GhA#IX>4R~mzz^K4(4}BFO6QQ*2%IrP>#@{(Jse` zf6a46m76ZDY5_DGYs6opm*D0rc9T&}WyM(;01G!gk_^7cxFUohY6-^X0zrv`;wK|f zj;Jj2Q7{IGPJ`=0YO0M_;Smr z^N{kUaeN~S6?@|(2qb*f1vJnIf;XauD7d3t^s|C=Az-M zZ8@Zg(a0?N1rTADKoL!!I0@-5hGE7Y=U_$M$J{SpgZ2T*#0as>rE!op6851EvQGWwDW$i(0hatch0MIjiK zMI6vTR0KpHj25G|U;x02Upu&-`j!{1P*vGqgZVrUZqomu18IF{F^q*K?(!{XTCc9^iP#jK51Zd zK*;1y;}T=(A%xOAX6?eg-QK>I+o|%b1oY+_X6a<_oDOk>Ihn0hrC0!0H;{?V?X9!p zH7mJ1PF{x-t6BFoE9GbmXc+A0em0eDm0PiD83-{S1)(Rhc$Oi(CkvCg=bh_QcMurL ze6n%2YDt1OW5{?nFwae=d_6JSv0-%W=*+^Lv`)p%QUWxJggGI6>wIn#0K8ru((did z%@$7JS@0cb>PpYZ2adFG$+Iv=h>W60gb7h|$jWK~aS`LM#U%#DVEGaeBEyLlMhi0t z+`{9_|2rcxe_5`j!Dj!}jRTk3L4*zpHIL|AySuCt@)vWeTA$kY7e)9amYR4kdo?2Qy%QNnqPMw;UQS2T>rz|}^h+L1`+nQTYd84pTwlNs%|E@lC` z_dXGsxX(hZ(pa7}oKHc{&znEBfsro4lN-lA6_#}>HN;5F`$?EAa;4ydsg}_JvcRDk zbm8QOh9DbQIx8T~(ilvw4$2J($(sfEeGICsv0AuuMxC`cw5FlJt8vrLD5OEh&Bn?t zVs)Txl9G?~Zi#2rKY4Pp7KZu+nuZ3RPp+O5VJsNmK+R@Fo$sBBSB#Si^q~Tb>(4iq z%YPcUiDejFV{ErfR?ryWm@}jb02;Cz8bVj8)`)|Q?13nVBh;tr6)y^1Z2*SnRl)%x zO?+!`qiYOUQ!NaYor@_jTvfvOo**hK_r< z`*}NXvR&kSa>){tzkz}=m_nx^vJws8JE`$zA7jMmo|z)1zqkMcBmqsr%rO=li+TOv z&Q4?p*Yr+|GB%pqYti!%IB*box{i>A3ScbAXg2&N!I}OY=je?+^f}-0 zstao4dVTQ1Uni%0^sM!C1W_>N;?iLW>s(T(ZH9m*fyjHmr@9DiR8`-cK7G{^x?F5w zX4DueHH+ZqH=b?W^L^TNN%MFq;yHT(K6E& zIlg}<-GB<3bb`2iJs&)8`v=F}0upiRqlW}>& zhO(%Y`&#fUO3Kd;W}ns*#4KraTn9Nel2*6jD}I=_X%gA+|6!X#uPR z^0_#Jn)u48-LzJY&qO3@s8?YSmS6lU^DqD?#jkc1>Xu>!nnX2p?q~=?Y5xgm5YySu z)n$ZvnUfVH@2DL(Y^h$hiV}p1C-J!k6acatFrv-=pH$XINiV>&aK|9b()kJ8ZxYym z0ZyGwMo$Hy+}uFd8v_#+ClL0f7pj7rlzYF?#j1>>euGgH!7 z$5YU{c66d9iL!80Nz$^LlrSlA)1W2$h)`WkKlK+!n1zJQUaO0m^>j@lbKq{kX|qvZ zmcg$Q)e|XD=*Gb-)f3D7_HtXRX*Yf_1`KQ{hbtS-McPa@z|6`O(JR7b2*XLZ-fImw zwH?E1Lwp8!Qh+8C;lAI35`gC)Ya#qw&xd6j9dHw70;qH@-b{A3`}>w-xG)m!`EF!T zx^zKVj0w*f9037>)0aUPhCfgSYC-1*ZWb*++}GVKY#A}F$5y!z`?$07ojYjF5{kEG zW9r;$NMA3Yx$RUBB@II%3(l6%&}?KAO5y_;!Lx*#Lav}E;@$m=;EA-dkb-+@^Cj>q z5CLB5{3(lSh}iJ3S6N;1%>yDJSo-63?6ZEO_IPw;3S|VPN z(*!OTXq*IQm?3NCzScC(x@n4MxQPLc^n|O_S3x+gE;Xn{tG3J%l)2ZBwxzoh^HUhe zwxPY#O_M=%qx1AE+y1@k#EB&kvHp`QPIY&5)Zce0!Ulr6m)^K7A9q18pU@qxyMbt$ zj813Hf26rK{ad6R{M^S935Nkc>Famq$=nTljn0DfkmU&Qx=D>A67CO|@b_$#{nSw6 z=f${i+c-8XTQiFJBn)vs@KePwuAd>3fJ;TwM(JjUCj~1%$J&@==QYuJ`R9|l7xs1D z(gkZLppEs*XS&Y{ul-FKe*7dZdtLeX!El6_jp5m|g&Se2%(CZksn2k~*j8?1rI!{R z;|3KKKEsvI93kLV))4z!g-tIM&BH^Om!3}Pl2$sB$ai!kcB4zC%O$UIoSDhP^-G+d zOjlM(t>V9w>;GBL{uS#k`J*4c(+Jvpfd0pe1a?;$CGj)6{fz2x6aL17WL`)W&upa? zLAf#J;O{saQ)-aP2+tL9N2JH`B194w>JQ|)xeq)9n-_lr-%bn}4?<8y4f7Wgd+R9{ zL494L+9e+6&n{nV_U@Jb*@FH0?sR1G5uM*Ao|tJdw({QaUY%Ap0%d>c?Ge|)S@Ju zCFktoYsX}uy^?2I4&b`uVCL}4q@{_2BXZH?Q@-f2Y<|03^|a4_&tmaOk|T@ozdUfB zQ^I{JX<+vo2o;*$yezI%R};*SSk6SF8|*Pj+GYomPme_G$pd~IGO3Xl zxU^0P87RKD2w1BG|KKX$udJbZt%Mz+u9jWjXZ7A$!jSnruCRUn3#Zur_b9uiGJMZA zIFhksTw1Tj_rwd9b#-YgH@Xg#7tBgj`l+O)l8NLnc{72K&sh`W+vTDlu~3`g-Awl! zkEQALZvsGe`1st&BgL!6sw&!>8(0>Sha?hn`tc)`6En3TsZ>NG#RNAC8dzR0U&K?g z6Q~39GXGR^GF-k|u$(u-*O#Q?)D6jldarSYe&reTWDw3 z>vbP5S-cqrvmC0(RzVfiFr*_{HMfdX@uK z6_x`EOM-jzJzsCI*E?~G;w;p~!?x?K5nbG|^g+#TvSy-CTXCnp>8@ffqnskrj)$NI zO?!%Ar@EbF-?OJ+l1FE^MN}Y3_eTi!;rV+m=f=Q{WvPXnmi?6j%8x7>!Ee8LRO{TV z_qo2DuB~(ZihNToLXXf@_i*A2b8@4{XFH0w+!Y0_&GKC^To6F_zAW{$E3_T(S^uEG)!K)w-9ns z9UQl%BOoV`k%2|5fA4|#)OZ&RZGbDr#w?T(1)g42f0QZ{QBdNQSv@aI!_55)ieYG4 z3akgiFP%P4RgDLf`0dJfU~qT)j(gKK&Z~;KwHbf;kDdwqYS}5&Cb_Ss>e_^Cw#`i( zgiW}Di-s;H9225bj4%`v4~@x@kka{oP}cWP?HVEsauJCEdbhd;fB_MoJP{+hU7L7PjjM4CJ0 zICZIegEbz(ZNsK{kGesdP}0AA>uz$NJsOE_zZ>u54vl^nz(2kHoBYAb0CM~o4p%(o zxBIhxx+Aa#?cb(mD}6kj%I|ve3V7Y|M85wgr+O5v_q#J|h{;fMD&)&%ZDVl_*;L?k zv)rw$6~!XUO~IREV}fqxF+82m951>~KkfKW*~Cb{FdZqv)(3nqd34{oE>`lp@k4DqYfzA|gt652SnKHei6aAl)%Wt8|VS zW3T~Ace4>=qd^$mq4)Ro{Ufd)uJiny#}RfZOBcafd~XjSl-1Mu!$O%WHD#uk!nJEY zc3y#}^MKK2hO+T5kl5W}k#7d9r}kZ;(s?!q37H7!eH+$tyR1}uIgS}Dm&IRfcW(9YsiFLk}j?Lz3lbb&5@V2m#@+bz+tDW1m&tFzUzu&55%72Bs{Ka&) zw}+J5vAJK8zMZ6(r4FiT2?gCbzpxw_kq$ESxh=mcZg4WqSqsd%^@c3AY;5ZPt_yc? z&V_Km5k*KMB%;%|J>)mn7HlOnkT3X`sbC!a1^f4(yPCG*FS{Qx3eb%0AvIp2;aXbl zV{?k9`5hv1Tu6KWsxdLXQrFFi&VIthgr0LtrS=|Rw+f5*?WB^v4{}-Vh@M(t3d-9v z^BGEip5(cfY8ik8mc7vXn0;SgtxWI{roHG|C}`&p!L%i_MWUI|?}rj#`#> z0zCp2Aj#Ggwq~uSSEY!LC8`^$Z@66tHR?F}tYFXleV_Vnz zd`MY3<^YSy(-c*v(>F&y1A2c(jt=ZUQJz71*XvTUgtRE#lYai7+_wip4A8d-diYcU zT^-&%fLXRLKWDM9*S)xf!JJMF^h>h$+JLd`8yA#ft#IraKZ@wEGYTHbg^*uXg(zJ zE~SqjG~zt{z|u&6C#vL^R>zyxmu*|Oh8-lNw&;)7UA9CH8ZC*>j4H6qe*7nW1H@3-yn-ZOoD-nh1-Sf8ES zxyks;dHAzO(n-7xK(ZFSXM^#JP&hiZyyBsvZy@zr3E{kM2sF?3=D`}nWtrcwd>VSX zqpV3Vv38Zqt>`fFX5d}q>x7!;bY7g*LP!`%Y?D?k#E!An?jI-V2V4+|dtG52McENJ zCz%0_a5CH5I1AtG1lltVh42m1%B3?~upl=UUKKywS;X?MmsSyvm&mLZyvdAo zkiNnNt#o;O8e@kdU;qA+PhKyB+tsW88*J`n{+kYJpVZcJTeG=cE?e>F@D&D_Y0G`L zW<$AhxP%6}*UDR{ERg5uuAO!x4lPlpX5;ap=#(lCeAFCn_sZm<{=LHQ-~C(9cxogj zis1SB@*oGWmnhhv;v*p0fVMVFD%M=?8ep0J)L>Z4H>}nMY1uL9a`J4;_N{Tfe5kY= zZ}&Id%eyQc;o;NdE}o>ldY+e0t9I}Qsg|Yht+H*`GDU64flc(bQBUy>#Ky>@SCtaU z_?`or&)TC!mobJUM5@zL?bC!i|H+c&VjF>l$jN||>B&Tnb0+5RmS&Zx+h29&_E3Dw zIj5n@tk~oT_Xw!vxPBV`RV%UrrAr^o5mwc3Gb7disH#efoU!#4_TK9q8VWW&hA=z7^dW8@oSlHe8sOnHhlWiZ zRvAXmrCCC-`J-Yk@`qAS2zI%!%vKwk>_cKo+5G3V_8%CYnk?fqyV14((v+VR>@J(a z<6NoFOo+c|%2PJ4=6oxB{Dw>A+_0EhHKlt!QW=!WiHU}=aFSd+T?C~r?tFluKW1*H0^wJe5|+e z+_KksZ}7l;jeEOEQ?$?p`IGY}$AdCqpi_&*9MA+F=Eq|+{wN^^xE^^J%E!;0%1y`( zbTZ7cYJ(4h!i*{d6}4NQ)YS%6bf3S%9%gqHs&D?uH3rp(mGXO8TjWXm7iRDHkID~5535z(0z3Xo}O5X}Dzi~T` z14huGfe`9VO}MZf`0nKUcDL+650PycA>L4rp(0SHDmTUE+R^FZ-Oo1$TmZ915QR3$ zgQZ>!bJb}Z1yc3<_{QuvSNS61W^>&=?Hccz;U@XE$4gx6NvsuTMBQy?MqzA9-nfzn z`3EPq_idu8sO-<3&0pTO*kBK_*5u>V=t)!zc5hE5l!KZD)Y7CW;Ai=X2lUG4uw#G! zbWsU16gY%RtU}06xW{PJrfQXSLF!qF%i-gNq z;O)@+{T%QHX)3Xx#nGIYoDtnWGUPB@Hh&XzwtHEjV|Q^PiHf4vkJS&J_z}0YB5QhS0#kcTYbS2acd;+5RmO zYy-MI1YKg+Xm2|9mmiEedvD5EIHK_O4u9e=rMBT2qV zmw17|+c9XS&EiQjp9%j7=_0Hnf~5!}e2TWoyaO^Df5$~f)-t=Cdp*pxB!2%-O`g&b zX!@+>>)_W{x;HZfgZ?G%nqCWg*R43%L-T_P#fV`X6h$5=8mNa72@zFpVSfl^Bsi-aUh$GhH@a)E1lH?;4~#dr*wuy8%`O3K6mdNM2L}kqXIr`tFBOXhS@13aJZ}2C z5)pFam>XT~kNbl8#hV)`D6|RpYS}|m{&~7qJ6WuZ)sY?%_UsTU@kKTvS+IHQ`2_Y5l=?`)4$9Cr z9{@j{_1~EO@5(t#Z5o~*`h|s8AwOoq zlOl;ci%{`X^x3(}CBupyuvX|J)B3J5c4V>Ue?3XEIad1KZ-E6&=HOYt5mMyW(|O6e zXHs`&EkgX+%SBf5KjT$$qk#q~2iVax3(dJR=5*tx@tGnOeb>eM(EY7nIfJgz7WmJ? z@41E|@|A9IXQer4`tVP8PDys}L}%;{Rl9cfL)jv$c51PcK{JKWwV1@R(G)esmF#p=WT9ZB>nJMh%R@xNzi@&_KflgJGy zT)X=$J8~GV5x%}Nx4Fb$-H1soOxRytTt<7+WnFdTKCpN*#k63ym!CHf+(kB*%x^Z^ z*$bW+HTNoz$jg^8JFY2G-06%^irKsxTx^HGYgavd(7CKHY&k z_{3YW$#YrAb*qOlf4Zo z@09rJDiOmwn1 zKnt_CmM&+J@q*6xyNv=*yNN&(!mnc^&5===Qk`Av-@d$*|BXbI!*(0^wrPw(O5VW{;s z&nYQ5b&FWj6){dzwRGXJ%^z?uSH%Y?F_n1Wd@%=B26(dV@oJ(|4&dGihJOuMUw!*b zLkC-Z_pW}_nX-Jct{Ul~isjX+mBEe_R-ZrZlC7Y8TlnFT3ZgC5^H}Y~Q18-obiL%0 z(;u3;%7|e3RnV{X(XO+RE#Xv2Z}B?bh*AB3+f`rAW#51%!Q0G~20v!%+UEu}kFa#~ zwJa8U>xx1K49xBmAGPIiqwI`NVliL8BIDE|ZE%GvQ-R@UvdwI(yX2b9m(+RB^KCMM z@Q^TlIunug_n;$edO^Z}Kt%M{D&7HyXLT>~D3l-t2ouDOu2Tp6Rf*fg-N{9Oy_ zmb#l7tX8s>H#NNcxG8ymmK)`*d9KUGBxB~>}?IseHq zSQO9NeioLl9U-`RyP%(W|0c!)(`H5pM~AQzVl_Ju|6fR6CVox^xd%g=L>`x|Kn8uBcf%wGE=&E&2F z(LUTtQvfotk@!$<_LY-55xR1jVwk4;bfA&AK4jrF(g`S#d{D2sb(7f0aiHQwJqB(n z?#}Z0pjFed%stO;uW@oEiygZV2m+oNf!=KHCg0`g%72`?Z^}JT4A==TE*L#vWc!;+ zi=fQcS36P#aAvtmGU&DuV#xk+VduF-@OD|esE3MXN50h0U9`|4#Fyxy#t7@nACp@L z0I+7w>Mb=N3x`_ig78em{&*Cw49_v@Qw`IQmVHAk>|DZCoA1)N$_*>;wLVg)9LC%i z>m0rav;t*TzWRy>&|C3)V2&x?`xL_F|04}3g-^7o+Z%M&GJDVRr&>``B|07$I_l40 zm)_LBSy8&WCA8npkY-GA58@;7S|NOUGk#c~^Cx=#Z5rFtyQ_akM4y|*ug)C9`cklG zp?{?iH7le9oUb24ZjXB=D%~^g_uJarFTnm^amUQm191JnBF0tNBg>FAw+i$?nbw<2 zIm5)Ww}-oRAy=Atu`!o^TGMml-{gKM-to6V!!6Qc7tm0YB^j>1xzXtLgIQ;SyKYZ5 z)WmtjxS6tM2PYQ#PI&j*+_{UNHs)KtG_?jQ^rTOGK{KcTjD*Kvrdu?NTB>93T!opy zg&sqngvi2iM_BLBtoJsMK&){PewSsb@z{@wv5r3=kG?oA} zxi5eQ)%LjHgnJe6X*60bgw`cgr-1h*tV!j2H zZlk^Sz=zf;j#K1!-Tc0tqhCsqC4eG8rpsdTCVpDqiY-T5u_=tlT45WE*mg3&|197Z zov9;99sX7u+Ik3Vb5oGKxfo+HdLikYNIqayBXvq%nA>zu_JusUaa||)4-(Xs=0-F> zTlYxG%#1_xTliNdzUbKAvV;y@bk=dcjWRIZv>UFk47=`;S&}A48XlNQabMzuQk71; zpwrFN+-w`=^e6By-M6B7vqN-yz3-V$8u9u_3pOP?dZw?cCX>-WvRFxiy_j!qwo1q_yw zBdl*hfmq`NvV#Pu_U1tn73}4DHUPg%oE{ShYX$Z;4LA6jR2lkJQimtpQTlQ*U?#Hl z7zXi>=P*prS(?kyCDpPm-9NqlC#%TC*XP7tgSsu{palBYvqpGpP?E2{zf}+Z6R-1w zH@7w&SoJ4I-Y=em<1+X(iS5R6Xql_w%Y5&3VNTD)mw|E%&f#B$T7o{F`KbDwkfnxN z&Yc=@bW=6t^EB`i*`k~v3iIj`y4*7ot6R}|T;R3L0ShBvcF&+E*! z(Yl5|K(c7GmPVX)J<q4uC5z%=y z6XJI7jU9fuXz!;m;a5q-;+CqDxLFxYta8Jmn2O#7-btJ`3AaB+1x#jS3v~GwC0DoB zarG*R$NasTN#`xoZJ@bYBFzGB8|B6f;lc*6?(_D1E(^)s%YKcab19n5_IcMrx$%hs zl~=BQ8F0Gz*N_%>5~Ad)4qX2PP8t=i z+#G)HqQrCR9leU`DumbsGpoI0=D4wzO(WcUZ4R)n3G+g0%YjtNPaZH33#2TBT-g)! z7x}l#;tGM{U`ZNRSL=xp`l3CP1LKD=6JMI0%5p@)Gm2^(5xtYB-swdy-(+;k$;Xi- z#SU*)*wOof%_*&lP%}uOR7(ksapG9@~}mr)xG1{`p3T<3-V_ z47*RhNdWE=OYO}aWzZh{d@AsTcw&6s`0KRR=m%C3)?eMYRb-35ly}l?iH^R&n{fanY?5#qx;7*Xd^${x>m8gAQ1oClgKU*GpVbV4>() zScZzi+ni~o1&j!0>_1r@6yMsVFx}|=emU3N=LQ?dl4(XW6AJf|xx%Jopo+Eh(&6I4 z;DK)`ov)3rUtkyaK5-!Dvs1wqna$!J1B)+6?y9hC<~@ zzb!Uh4*_zttj!_CSUqoHl7?WW3;p}zN0F5rT1p<2S^R59z=K;CuFiv~yNMz#?uxby z)Rz8dS6nXPb20xt{E(ozez78h&#&W0hwWrzlmpe}-8F1)}?0fL;b=4(8he{^Jf? zS~C)FCy^{49||AJw?rDV2`-gK6rAng1o4i_f2Q5B<1spVVjN>P6gFyVI znZ+kPJ^Zi5ZsQrekxK!qJUoYWE_N)52D8h5pE7O)&EMull3ti3eBV36>*ykSK?AaD5 zSqPJsI3eLGi5FEB6IDLca(eUR2H#d*3lx|8T!BEN-Kqcn&`1U4@iN!DqD^-YE;rd} zJ9`d@g-E^lDkRaesVT~qbfB1Bvv6ieBF!r&?%O*#Nw!TkNom3@mMD_)n39^@t=piB za{|hQH{;J1cgH84$T0lN_7I7Xduf`6HS#rY7ccMJ#PRI|_w}1H+o7Ka83QEV+w0Ix z$im(IF_7e$ zDw1gB`0RHqvyeP2KLI=Ed5ukc>aRP7>}gWO=5n2C$>6bXmS?4(fSutQ&-eJn+n36b zv=+*ARO_0;$m*tqTF;go&*i|li@Y$#b8o7bC~r{cOvB-~0DMV3fylpInWit+t4~tp z08$CeGYl#03l}01bQ;fxE25_fWlK8veaRTAn3U*}w;}gyFrVrd_Ox5YqXt6T`%7y% zx}I4J#pZ}aMjV*SbLeMzKxlY5dItILw)M7e9(|Il^;Y>$G*()!mXKj&6Ct8Ss?DqV zU1Y3eXxI~yXnlXa^YveaSR?Z=^@N`_D>T;uC+A!AU-h3)9yi5O5$fjRV=w=!&E{?X zx)o(tL^i6$nRV9*sd!%bO5__C7bufg)d4PHCQ;jzbgWJTDRU}hroJ9PqbJI!pt=R8 zl+{(DIPKW{q@bp(CLk_>C{CpO;2&@j6IGU-#^Fm~fcm2nd=+Fh-IS=c0w zb(FxMG@ai~KjF!R$!ud(I_>!aKB(qQ6KDbtWvguQK9ygFb(p5=A+mhBi*Fhu6L zzu$;ktGm(F5L0GBb+S}aB$Y&;SJJWtcJ*D5yR*3UaKXgKRuoiv+=oQB@ANm!ri`w# zfaV5mANG%@x&sMSUplXA)1!xKH;jsKCj4 z^$TMHn-ukuo|o>VP3xY=AN}g14{7|mW}{|3>fHDSSIWi?j%2Q9|b!->bWT`(_M zcJ*rg!pC-=8JZTk7BAgAQejdLNDpIRVP`U5daz=PguZm~tx0nAlbmsPSu_8a^ROwr zs&nZp4y3fc@HOp*mf-bm@lJNvH!@z$`(&?NeY4%KT;6K=&8h zFw(VMSq3<0c&u(%u@K0X@2j2|SQlW`xR!ZeYMkcZ6+lCqgB`#9a##)^<7h=Dd!v%a z_D8HAq3Pw3`DJ1vMtMlCj!vB`S?o|H3Lu+(JGD;rXvl!xc1FQ#@Sk&{e3Tc|1!*Q$ zUod@8tVfcNH-1taa(+G5-i_P|!|RywgVfOxMfD&u2+$Vfiil|U@bTKWRW^V?EBtl( zc$kn6v}H-&`IvTQ&$EX-+WUWQT;gv!I{(aaoWJE0-|P63s48E?u`|a~fA2&~Z2h=7 zxb9)tY^P>-oASPr)8fHq<-$KWNIe_>&EBbUfN^!<>AYFiKVu;ui9JqS0LcfLdmrPj+duhJcO>$!8})6C zG0YaJl%9`Pk35$b>_LBmys-=DvMLD$NvVsodr8*!n+H`4)At=i;(;Gj)qp#x zo+Ail0#7BA!YM>g^PNynsygOT0^$%Fq-?11i%t!v$PnV|B5)qilua&Uyxong6>U?m zLdYBM?5MH8IqsR-RF%v{`0DS4huTqz01u-CM5b4vHZx(?oB8YFnWNT?(=1&2tahom zOGwF(svWAA!_W4>r_ojc4)K{~ZtKf?_64JJE+Ie#)v<^;?|X@}`*!5eqYqft>FFel zpB9EZ6rXw+Z>{1(ZO}Jp&IDS>I;l1?*Bzk*zpbcdBw$lXXPKHVPuqvsavs+gkmi8} zH-{b!JnBADD082wSvuZ@cEtq$M70*gZsz(%lgc49d@$%4mHb@gP5sNBbC65JHc^-y zZ&J3e6THCUC0JTt@6$dYRDmUi#tdh@au)xOHlnQkhildmV8!Bg3+-50(Jf{KQY+Nq zcC_n=eWD=;wcxR+D4XLv8?4$IC8JTtFrRba0sqxvpf1yNYYr0z>V`_>@G@?R%j8pi z3&=pWfZU!YQXZLQGoVte0PQI^?YFNYI_#AFR=2Mn_HfY>_OTU7<`D#@!vdin;+-W2 zn({@e;}_XdQ~8!`8;(=Hlrfa`XnuQk6Q9cP(UF( zXZw!Q!pgbRc=hoQ5g*d{o9tAhOAf1@PftmvKTr(t&o0yMO`9xU{%4hlRQvu3!W#=* zfLHwDy2i^B9R`-$?X=s~=WNTyZB1)^KH7;kwRi7)1)7F8Mw5$A?L}zXYBDH=OiJc? zK72pfl!{cT6OMiBd%1+8xg~djo0GF+9y6OwTK=tDuZ>5igA3=crytPg%BVKe6?nC% zSA5ypy4de2L;#H)#n4V%-d{zQ8g({-+t8uv?fg4+B+gcFLM}MjbZHOG4+GU0(TLFa z#q#<5F)(F$r(x5h|3+B#m1*!d3oX!=FK{K;rjrdMY{2z;P5PesX_Z=jdI9OFw1e#>c9@xJmNNHKa;|qM?_1h`wRmWx zfVzEbW66K;n|-8A-&{>@Q;&Mp0Qpe3)2pI>xKae>ZKcg6r14khLD*uxbG@@G)-EgV zPBtWk#Y&Y!k=rNdC-tuG7X*@&-i65D-oHK)R&=?`?G(4}z>6EX*a29C-RC|x`4ekV zbZgQYFvLPvPrDAP{RwZmV9ZN()I$Ps_*jU za~#fZD?4C>-W25T^~v|+O&dHbt=+SgzKtc&NY5#ZFVM6WR$jIQAclBGb-@?$V%u(_ z8xD5&M36(KHWG|E#VWLycHftM>K~R*)%A3a3a?Kno4J}~?w^k&1K|!%fnGCMrYW{x ze21n7xwewI1D;n(A#yC?wpm2x9j_lAiZ76+2@F)vd{2`{7hkI1d5v+Gq(5G#a>w{A**y6X8P$N*;cKr1 z=_vvhkc-9pofE3V8ML4#43A3`|D4UmeN~EO>XGqPg}!FTd!&6ivvZS2VKu6NTbvRJuT>j3XSJv$-=381Reb=zfHZ}!CVqyZ0T&G{MZ!lmTu z($LP#2~tiZvWykr^r?e&)G^KLBJ@C7bf3TnhK2CL1+gUA@b`amcJAzz>@jjI^GQG} z5GMN?Uw{{R6;D;}ZA4mS$sH}4L7P;NQl46=Y}%@7Q+DUz5h`LKDI(0WAyt{E)ff+w zG$r*RHDu&pP7RfKivacTW+$Mk(dV|7zRB-k;|$_UqzWn;l%~c4XgoubE9VFzPo;Nj z_x(c~Ao4)i)=c0Vy;!-yer_gL$#xBh@$QFA5|jd8dFeoe(_`>spSc zj?w_16)e5B{78ElU2RV=G;*A;4_$)CA;GdiK|NMF`8OvQu66tJZRIvxOu|E`Bz48t zTLr@fa%H~{C{TXp!c1-ZQ9}1RU|wYyKO=cWP-v@HvkUy1#KetC2%)Xxg6_cDy@7l1 zPgVckDi75|?~dt`l|f6zn1t)G0m*&oLUw@qfHu&vgL8wV4K_8#!hYjao17GeJ7i9j zI2u``j^*LR#ThY^JqIA^iPneeWb4XqM&9eDg7pJz&w%qoNnUC`Gon zBEBSvW{O%cPHBfXk2HK0S!ebc&ej4aF#Fs|;6zcr>ri=-wqx^P1UQ+#hKq6@k7tkr zf`6VE|C6w%+~DgKyWf(J$U>KunQ*}Q8}u-`HqhJ-^BduVdY#oACq=U9GhboL#uG0E z`0<7qPP$vWpAMNeWsY2cHvwT2UR*Ml&fr^;r8Rx+$6zd68?3L|S0MhSDrb@KCoTMR zoWR&6>vOz+bcDP&TRNUzhq7=)0?*zBB66T2B^HEA7a_QOi!O>LHA8sChIgR%xGpPw zZZVz7^>v)Vi1OVX`B*Wh#>Hx1**oi7;F$M9fM2-M-cZAj=SZYj)z~uXpQtaKrh`Z0 zCjK^x!+BW3kfTR;y#bxr>+bEJ;7JE-M>i|Z`Zryoqg$=J2ixx%j7`juNlOqx%bF+U z(->yk_iLb>1LuW>cq&mJB{uV`l9pI4QfUU)V&!XoYtdQHKOUU(SQa01ZzO6YtJ6~I zh>fn{jieU~0a^S~G*7Zg`8;r3bLL#{OuNv(#*Ai+4bGfoM(m256@X{Eye=|p;xS_w zo5z*L_QaWn6ZgM1tv+7MGH}QEW}z2e5u#+2Fd`e-qT+4O+&4J$${s?M-;Zp3-J-vB z>|$JFKwFE zW(B*6qf_Ix+pdZ&>_}bUI>KXQR?#Qv%GQyCb#N}y&A-BIeqN(k4DV_$pFAHN-5(78 zMOc?r6F9q$>Zc8_Ef`Zo(VSW<{v^kzMk+8Y+xt7R6$%bE+c~T?IQKaSON21EUIwC- z#l$I5WlL|zy5}uBPz-}_a`a6}|HfvC*(sOL3?8`!o+AgA135y(| zr-ga@>}Nq*ta||^#ndbYDSkCDp8{14r6CAUW_YrT;8!nVi|c+D0gnE~XCcawjB$X{ zdrGYo(y<7$g=>Mq-O*Duy%PKeOZm5IY}|N#1#d=cyZ1F_nx9`j2h%xR$9ZRmw*CBq zl0vr}mZHT=v_XGo{JgYu8%y7TR~3E2psXMEGx}KC7rTN*;XiThAU6P}4BjLzcD7Upud2iIVsp<4ZR?JmjJ} z6oSQ9zIad4nzW@3XJfz`Cj@KlZqnXMe>!~&Y1_grOv3V7r$PpM9A&4*=S(a?J<=?} zMxE@VAb+Puvl2x4$riAY$v|!HUF2MSJ0CgrcER?r)@4gT z^RH4YSPmgV26RO6$Km#wpsBH&^S&}~qJMG6&Yp(;vKzFPu%jEY7W*({8V%vF36ALF z-G0|Ljgq4prjb5e*r((juFl$)Ziy2ih*XV;E{-=7x9An1l@)^e7Vi@qVf{{0HHju* zy+~Ii!Z~Bvi#^+Uf7}e}E}3n>sBJVf@6Uurjdzhx|XdM0G3>$yuutlFIPJ0IIh>ZuIJyi59( z=cf;a%p!J9Zlz3J70;dia9*#DF2m}RStY~yBx<)v;G+Bjx-R7Wc1~girFaa2qj0eQ z(CZ_)+udFD?SWs1IJE`mUX(}2^o1Zb7L%K?DY|lc0**az24oUI2ivk~6 zwF6$X0?sg>zxM?2?Skx!a^s1=`<>`Aom|d{A?FwBfknIJYX)cx?JrwLlaw)c*$$*U zXKu@(49Tc9W;W69D!Vyi#O_7fer8EhIHe~d9b~ZufbQ> zYFhP6KM^9|7Z>%%e2pZ#dJVq=66pl$?Y2TT#!68E_(_je-NZ)Aa=XO`Zl1qnW9ey` zEa~Rg8u3*N6})Nv5>E{iAQ&I~>n)cbe-EDzAZSO`%II3gkD2<|sR>rNhSYZy=6+i; z#pmttDNeaoyQ$C>9W55~uMj|y zGOA77;a4;=y+kQ-hDq%pN+(D7t8Ql5x=})YxD|L0ouD#kPmkAUG_9}D$t?jrbEezk zEzGRXV*=P@HfUMKKnkx!jy0ISa`#HmAi5q;2|ow)?p68xGR4r3{(|I<#~Fnudq$GU zofi2AIp0H>#uhC<-kQ1oq0Y5-d0;g4Ywt-!ER~)j;|xX{WR}MIdCA)hKR}SpmCUH+ z*aJ(A{%;Sl4wcyzEC#42m@#TL)#Rch{c1KimE|VK6YY(R-@32}ZcEc6#96!;H(k|3 z-ED`Im21VS=2F$4?6=cm%EViyN9Lbew1*an`xXS&ilX;>V>U*5UG+x8zBAN8Oap8Y z+pd(I>X+))*CdhkDCciSi4P!#b(#f?<{MZ~RKl91r~`siyyTi*aZ$v4twR%=c&)ML$=soUI_LgX^2tJW!fFL1Ln%V_0Qi`PDYV-vPzK{E9HvkRFeOET_t& zd0UX^ffNQLw)dIDlHCKU|MCRrdV+URf~J8m;DVgy=QRw-#lFvy6ft)BKVb_{Umc7_ zS|>3+s(OCzX{ri#*i&9SLu0R&Q#N4iC1hzm^U;umka9h@^4)X_u$z@GNT+&9tM2sv z!p}5o#Y=I%V5O5?NDebzZO>Q@E<0T(WBPYdy+h14(6kbLv=n1*+UVQbQxEl31d%%) zz1ie7-~Ol#WHQDIn$6UdubKNw&WLT}tyB~f!GMfy;W8Tx$H7}UO^+b9Y8Ct=8H)GV z4z}ry$>2o)f<D;#Bxpxbm2-Y?n7L2z%q=jdX z?X}0b3W#GJTMZzd0ZosxN+K;x1#C=wl4M?dNQC1kyZE?Rpy#XJ&T3zM3a)BP7Z2^n z>$$U@#%Id9y3O!!fxd9%3itOvC6Ow<24e4~&j&UgxTFVF5*mr!w#i!9KHl-CU>4W_ zg~Q0X*}8j=cuMf;f?3G!NyMXX`5%?=!5Pi_`WO=3p_0-mgK6`m$BkK!s%em3hFM`x zSo$|V8A)9mrH;gcm2k!6?DfVm@mzzpQx;PDL2Kpib3gBIpFJ&MqMlSbUV7G0%O>hS zsTRgV_lwn}UC_Jro*G2$stq>C%V+;tFs#R^mFT;Ds6*t*O_$WwMMtTP?3;TcE2!A^ z9|3?$z1ENWktolY@7{I%@WM4_%qCLOY1qZMYtUyh` zsPiV;&p%;lvL3=X%!>Z3uSb=wqeqpt3^5n!FurVcsyHu5L6p0J7^PAgE}qMb)oD-% zP)#hXf)rfYdiCS9AAhtw-;dJ1Mf45a`vO`*j$4W-N9T43m#@8#?kDu*o5$KeNU{?Z zctH++K593QNW_FQme6N?vtmcJuGF+GSP<0pb*9q_1h*`nb3E=gLp;cpkXJhH^7kg} zXFVCmjxmjtgdK4EyKw~$n+23g@peg_+o>$ANzsCJsGe?=?0*PV-JG{B(|3@H_OPh+y9yCvs7Ryla85xoRk8n@XsZ|@`Uvwc}n)eFS(gopQE z&MtLy4zInf`Ctf}e0|=g`QVeqp`I^MVTaUpuv;Awqgehj)oj`9Zg^U8>k>{%-`+Ig zFDv2iLMe2!8BzaDbR9m=Zxbx^E_5(4XMEu0u4zA7=Dh-b;l2-!v|2S)E?3^W-2kk8 zNz${E(i}#Mf&JVlkw&^IEht#r`Im>lsgR*0pyc~Wfp6U@3)RE#{YP9(*-x~D^Rx0E z#iJs#1%)y03zMVB(S`G#?W{H$yG7@SkSo6dn&lBgd_+CX6Gi6+s7^d_)pJ5!C#Nxe z#*5qiBT0b&&K)}4 z0jDfhg()TOS)VO&*^xH}V&tI9G>|i+g`_8WcMK5UVXj!svDQ*RYB<|NZNKD_#F-~Q zPf}=AAvDi_o9u!)u>@H+_2J2$2tjQCz5QX`?6VJcTUvenEmUz|Gr82w*zdGTvwR%B zze%aIcNu(q+PTUlALx{f`NC9wU6ah?IeT&U@Er(u^(XZ+>l~1M~wlbIdHZEEa^^wTw`+mB5>eJH+!Tysv13oLxH*X$4pR^3-foVQ=05Zq%DViAIwAUtqoMDg2^HYLA>!_QL5Zpyi$z z+}W6F#~r1nJ@J7(4ne=zNXsTLZoPcF>|#o}>wwepuvP>2a=#UG&eal`Ha{oaPkUta zz`qaYDx$>cGaOL~2;-vHvRZZ@?I$~@dAneAogD9(5`Odl7n5>vnLD9~wwg?1> zNh*uA_-6gD*j+1I?nMww*O7J!Du@xLtbiM8+YUXEYSzCjD&mB#2KmG}5ylb`o^Wt? z139o9A0v^!2Pn)H$C|JwD!c=ta1`6G8&UC$1b1`$53`hIRI(@`y2g;Y*rh;aG?l8u zw_LV>tAO;R@tvwS3CCLg%k}=-uoUGEJ&@m4*)M&Wx|HH2MVPwLBmbvM4XuSC_aMG) z-pH?M`&#Y*d*alYB~6FnOHgg8T6G$KD5{uELMrP(X0M=gXzHm_)1a=OKgm3h(u0*k zluadfCf%~G6idH<63m*4IDMp0z||$IR1gJ$071X}_n1X$WTU~_>ePR=9I~Fe082M7 zY{fkq1p-9)%+h?+G%cmH8689O?6>IO)hnV@qQZ<5n5Cra7v+m8paYDkSy;4MomaAklx7JKxnvmLD zd9s*{WqiU>(XXaCss|(dQyF)*tRK?VwNJ1V zTaurgw=*(z?A`yEoECGT=N`qDgQz(M~Q}@Slp_g>iz+Khz$8(FfI4$U< zDo54pwa8a)-M4sOfoY5Jwp;77yz;&FAGE8D^TtIGF(DAn$Dg+}KxSy#=kmO;la*+|Hop#4c=!dOm&-OO%wl&aLI zw$GzjXYD`&zjQ7$FLp^JpSY?UK&forIMdPyFWB7_)f;IIeImYZJp$3b*6YB0*;&;m zq!#c3$5bOVgzp6-%=nQW?(GY?ANJTHx7fy3OxmhU8GY-w8J24{nOqs14p6g;cW62YPeb=@Nd{;}0vNIH%M zZJJtS_B$ZK$NK)ve6os7YzFA5!jZ9Kw054Z>zzg#JU?!R!VYxbTTC{b;y#O4r;$SM z;xNVjuE7t(uC@!AGM>(y;m|R|g-CopFUROJM0oaeK)Nm8n1LSN>sdfu=pK&OD`NiO zFBie&y-b5U0o~*;Lp_5EkTn6P;k(w2I+R#@roOC@H7Z-bRDnK|*$o5(r8BL9HdHQE z8jpjkt2lzmFB+xmxX(4@nt-&=+>oyCSV{Nqgw**~H*du5t{bDH7q7wGQxye>UcQ@8ORG~q+2DOX!Y?o8X+y=6cRBRA{8=w zH(5R1uA*5BOB(#53H=>d=ae}Jiws1N zR0mJpX5$9}gV-W{k-kZt(@ea!*!LFL&rGP7Qp=H%3f<(l0AKq%x2%m}QH!dPwyBPe zwFw)FH6dkFjj2xw1uaxvhq~7P3?Wt^t>k^Y(2RKTFx*8hJDorOaa>i@RSQA$cFX{4pQ>qtu@F=Bw^ z$c@}4An>f5s^k>=F#{X;V2^!W}8H!90K;Y!GL zjzPSwPi-mArSCl|{wQ3Q=2be0=2?rGo47;-@4vM%@23a|^)fs4M8D^f(&%T252#U# z|58P459GXM5N}*L7XFq5II-e=(sMQ$Y$=xrtsL7u@Xp-MmCfIH;A?@eo=Cy5DLQBu z%5Anb(X-4;|Aj)P)PMw(0ByY-2yxvu)5x+o@*EF6Fc<(K{F>z1<@cN5y0b$tz=0&~ z6qR)q0OTFWQPN7Llh^drb)Y?F%Mu9aA=|Ll7fD&Wmk4uC4rt<9kB^4l=Ps%q2wN%n zLi}3}qtnNGYgig2B)INSUprl8#bxNE#2SRrL+zkk`Pj^xzcx4WhA*fuTjM^fN~&ao z)}jt&yw~I(6gL0Pak?4{b%QFeODpF#s@!W63YrEQ;fLoW=FxJ5OCyg~k5uua)6w6I z`ek_6DEirE@z86bULc(OH~@0P5y-27=jHZ1$9eaNgcui1|Wgk_6`#g8c!`oZmGYd5j_=EzdX0{ zwWl!>es!!HKy>1oH7*%TB0LSdI;}q_@1f9epv&Po`4S8w#8&E7eGRXCDsiV;JqzEs??j9VPXEmOFR)a%cu zsZ!qNS9V=JU{maq8^i8TGvkar({+Sia(W^oCrujL&9^aRv8_V5)EEB2Hx2vwb{Qi1bSC;3Bf%Jj3&Hnb-=?b%yej8T80gi0y zn1xANsnab-yev8i(7}|~!j`p$#=bm>EB!IuKK<5vzQzB}C%ndGXyd}W=Dgg7J_c)I z1$2n=SPuo;OE#T@xEN*yCHe*!xptl8?fC?gUTfsWJcAnl@wxGB30;v7g$bx9QxN)o zzwGQYLo)Y|Sb)RiV@i-K&zCjeAp6atXOM88FH=ZMYp&#~W@8N&RdEd+a@xC_#j-1X zZoCztL`FMDsGz2HN&V>DL!X@JPQhi)&eWJ(tXEqIYCpK`Fl9@1T(LfLq4gy<2eefr zleJs5#{dsKaC!{NCLm@hWF-=K{}G=jTSj$qQ}aC!QwH>UCAE66)kn;uK9T&h?Nb+( z(@xQ|v#)I`Tt=SuDm4fc(z6ln+7N7mWOKAGzF)@Km_cxI`f0CQL4h}cfuWtlo|MsG z?Vx~Tyz1G~kF4}AHPF|a+lSG)x6b`t%7~r%OyYSrt~Ta&zWL)Njl?R#PKtGnGE1Po z7Q^?&a!pPi-NjC@&p_iXpOpOIMeZ}-J^rOA=Q(^_Pa-q*UtZ%&uP32z!1GXm*@B(hX`<=Y1Bb~ptmlNH$_Di#@XJwt@L z3jc^@+*<$uHd>DMy*am}G~2=`PjF`kp2Hh$bzm&a$q@&(?LekW)az>URuXhnmuPb@ z@50^ZV|&jW48=1nL(B_8dZa03p?*y|(fA#UxN8Nir*eLsYxc2?i-!%N2dv9Y&Ia?Y zmRUZFt%B+vpY$+?8Dsws8g=QgvNRA`>mo0J>3l1>qiCLyU~7_2h-@-@d;m&@A4A9_U>-Tk~a?;|DMvP59b~ zYy#)AKt9tirr~YA@)S|!m@~HOv-Hyve8^q@dBBYtb9-t+UYp<2=Mt%I!raoSy%qZA zm&|24Az?uxmIcxdS)6)*vR=l5**ogumi;)K-s4eT8X)=_S)jhsQWZbvmqr^Bewu{f zU6GPG8HF2;;r`s;4M+@*O5KbJxE);6DE3ljVSyH_+h9IkgiA`X4L=G?hS+^?A)G)a zOq62G%~c`bT#>gba^6C&vjO!&jYd};x%vjMOLGAAO0)bvx55^1C5O!(FG1^5^((cvT02vFo|VIanHq1-X6ocizb-X)XZ#)& zZ^UK2`l?zeH9IV8N9tao?PWWMoW6D#+TUlNwL|~JeLMH@YLFhMIVVnW-Ts>(a*k)( zkssjM#2czdW`Vg$N1W_LJxP57|BNgzz}-%@LKBBQ{Rxyc=Vq`k=}GM&N-4L>uS2fJ z6!2N81?V#K>U407oTg{T{W#i7+;f3JitVWwy`hN4v&@j#HP7piH2ahkb(Mz4h?PO7 zf@Z%!jibT!OcUokZi(p;GQdcW#@YcbsuDa_kkos%`$Q$hU0s)_-2m{GPqBVn`DSxe zQ<51U@Vz;3unbwFkVJ}1bKT3nfkGsIds^}5Dku^~b1ZOHgSx43nEV~N~w7kS0ahEC&lz^Z61gtQWT&-Uw>bAfKYV~%@0(s&xV&}eW zWG2ki@=K;pD&m5uGY{V!BlY0F*|T0s5F#@6h0JKj5Oz<`F$}J_F?m;=3F~(}Y78%= zp>4J#Y4$dBk?p1P0-bGJArTJMN;FVuki2o{f!f5kVEP=TXain-S>}#8htuTk58q3C zA`~1_iDxA0^Drlnz>Ek2Slk>@``@$DIW_CCjIM8XuAEO)`t9;TMYH6AL7Etbk zfvQs?=_3n9kCG^8a;#+yfm8$MxV4%Whl^alci$@= z{+!VE%LlY+aWkDEa~k6}fprZ;rDdE-$Jq>55+mRA>w(g18fo-Vj4N~p#P>|1YHZzV zh+0Q-TgGY^og|ij(_|P-BICJr`^3Dp!Z{;Hgg(m|E^r7rdze4W%U?|KQh|H{ey+AxYpQ)~X zCQ&2k(t-2Mjx4sL72CD)MyPhj4Qq{bgREzl@yQOF&kP{d+a6)6>WckmiBwwK2)bx} znKo|TqMsUJGWj8bMyJX)9;F4bRLTC%ZDKm(Jz^F|XiNloxDx+evst!}y%a>8T|8lN0lF^mcPB#%8e7LTxWs`aGlV;}t6{mzR7w zPh&>WgEjxk9XaW`v3&}Yj|Vz|GUs@uG>JzS7xMH+f{A2YTk^38;wv{yM()%FPf zhj^YtD{*C25#hw8NaKKd{X-Y5^59q(ZK2&N8(ELKlIbsZ!Us-pow4_++J(C^wd^gT zEq59JwkuVTpuJl_fH!GaPM?sk^3}j=igfYuyzy+(pN+k^mSeLx@UA6QB-$@PO@JH3 zgHu(scxac0izis?-~C1j=hU~2DI&ohbAPqG;`tS@5PAF@vT#$`96clu{1}zy!6o1n z={&Y7q?Vm90+x|@SSEoI*jSjbP596a7g=hthud>kF{5;qJcM%U^Y$m}!jVQe-%Tr~ zQydeMjAU~p=!5t3K65br<^e=c>3@tpv<`#@=|9 zvSk~}OQ<}2=j|I)9c2ik((MrL_lM~y9eNRFt*ssUt3jtQI-WzM!YdD@#u>DTIy6eL zt2C0-E3?o@h!;1B;^+cW{Fic5N3zQu<0?(Ui0YF$7KUD6`HDBPO~I-FJk`aDIfPR!Cv_?Q$<1d!5M{Rql+b9v702;8De-%2x>%WMN|tU1nI|h0 zTFcbL1eYa(D^BHi=MDs9ReruIh}V#2sTgi38G`p}<8k1oopt{DC%=LBqq#l(uE0B< zgTndUuN@XUv8g+ksli$Dw+7&&OZ zIRptVVpoTbEDaWw3`y&lhzqU}Cq>chWHZn_wvf_AYmt05Z21;>mW|xB*r--JruFO* z<&4gXy0pOTZF{Ay9TNI{tJOb@4x68Js|!ERICTMid+mYm;5P>+pjIbV4ts)I)2C;f z7Nb#!mp@e-2VnPH^x*eaWNZdOl0&nOjshZg$UDB658z0#Y2FKb*bbM1pf0 z>{6M!6jNJi?-x7IJ&*l?uf@u))K26w!0#f`4S=lF$Q zvCR6@gs?61;lg*k?F&IBOR7Xs=OctPy#&{W_abe;=lxqtmERxB`qr+Yld~vTK1`Me z#@h4NDO-Hi!Q3=xirQMp+ZlF;v5#2dk%-wlyJ7278KRPA9bJZNVAVu+GTgcJ9#Vcm zPL&`ZVTJ50zv}q#d)*#6qTBG;zQ4J572K9AudG2oH|(6t<`ELSMfGKxK8_b`eZQ}G zDtPm_$5zC)!GxJj)uyv_oD`jpQipA?>2-dqmr{xYDBN4usf!)@6+6~@qbNP@%-FP+ zLTYXPe&2;lt~x6*J-gd}b5+_U#N4C*GjCfYH?^5|Tzy8)jOpYS6tmP?gVJK_w*WMU zDSjR-(%Im-kwU%2mN zI3fUs8XqyygZUwnu4~?a2OA`gU4=^;nnK$vTzf_Z<0^X~26Q`&yuPA=-}s|3gYB>% z)oUQ&%M}gB!^iEhDF#aNrFA^)f6@R+Wj6jZG*X6ZYR6--8tVLkrIArZK7#l=mK6tN%^Q2>_41!b zs)IS}ED6qn&-r!j1Me7*qah`cY3IGPooR8uqxm~b*VSR!R8czd*n5?FG7a39XR>_t zJDi$JwD_E)#M$BR1C~2cO+o6~cMIqe%LFVG4htkr1Mc<`fSSvj$8$!9zs+*XAzU3_u#(5F$Dg1g+gx%3 zeZP)tb8aEq78?Jh5Y9yMCb8TbaNoQ9)abOvQklAny{ zAY(I=6q1swJ_GTC6CSENrbWi#k?YA)uPSSw>ZAqiplcei)*HPk6X< zc|}K;+8&&pp=Bd8$K+f)Ld-(r9yzUF&)fSiF%Ys|&d6PDS_mP@EWB zq@z>TYbEKFE=)*S>Nu~F>;=MNkY5iM+jL-55MB|y^!j$WZoa8gd=l;uqf)lkx9*{@ zj{6GBNL2ZH+Ruu*mu05oiptvt=7n_<>Lcym+_p58HqF|%TJj3HG+ko;$0+6AQ%r7& z4t)}i8HDg1lhH9OleCL38Ar;Tv|PhygnvKq9re~Ceq^6_FC}NO0$nde_UL`7eGbnX zTYx$wM0^x%I^20C;J-=mJ4l$$A?l%p#O8=d`g}ANHfxroL#|dpxUXsYkFn?h9vvEK zNQUfxGVQANeNGNCrRH8{nCklzlOb^Vn@|zDKdCuF4FmIk&goNW^nl= zF^rrrABnf8LAyqflV5+5w8b{8Sr-nv?8PSRa*SkW&pA1=*OO7tya2x%%<__1j9Wc` zZl7b1>0d;7ZfNQAxLNunQuZU=lC+y$&n5<212#3T1A3q2UIkkeR|{#l9?=s%xPsFV z6Xvab38ALh7ZinD87oaQdiH?JXqCN=&F61uzxD8PLdkXPVI6iZ_4M+_(@hbDBRMEr z_5!wJsExj#PrV{vUgLdxX@scFB<0;EwX}}mvX{)>&CtF-P{8x*3zyU^`e(?*m@*~! znxwX;m8cl*BK6aVw=CHczU79hBHded;R?1u|59Ll%}~mPi8j^ z)|cpNMLeJFDItxW@RP}71qm|ebfvuC*6QsH%1y^^|A`m^aJL6r_#Csc8I<6HBFGWK z(dnFPQTnt^`}7PUQ-(C}Q+84LC^x8us?nYQ<1V;CgTLHh-vJiQ@luQG`}_YLnhWFNV$&}$S`OY&~+nX!Hk@%+6b!L013csyFD z>A!N774`6ym@E0)*=^Jo<|~q~+Gg^s%1hRf>l1VNh~7|`8}y~wU+(eU`Ns_vGK*yP z5FV(%hXFwJ-@1S6GL`K|057}HX>^~|9kN42_MSByS-*{#XrFM9`>oe?%s?A13HwZ} z1mc*a=r&rC@1@jXvtw+OmYcg%7PcG{n9Z*f^ZWhz1G|ws=F7|^UAG_%=JPDO7|4JA zbfud2P8m0`;naG5EHUCS7x@b|q*;Zs+PygGIU3h{ICVH`03Qq>Tu;xk#sZDf;{0(f z*E~lA(MoKl#6&{jL@%gnRx*N?mtb9_tyNEFxZFhR5+Jm>Ac-E8hKy zHB$MRus%ut(Up16-?*;0FPOn?^7^VyhYp3EZW>HEW5_)4@2Z!>$;-?0T8p1lx4(eF z?rh*Ju|yzt#0E1P+-^Bh)X{+Jdjspu^ib+7qc07QbW*0;G*1CtI2We6%+2;o_89V5 zJPYwx={w1fjgdx8F*7Q~bIK(4)b&d8xu8e({ z-PH)EboI6T0mL}%4}Q}Q25A`LrBBs6`mS3P5_h6hntI)BHNJO}4>hF+$+CYgCDXKQ zm}HdYuk(4uejL|p2H(~hD`#j&t{Zu2-Rt(gvyNsN`903?WAiA~Vy(K|wfm+BHr=c7 zt9o0G&yx`v_TVHFyAiC?YNlyvP*xL{&}w3s+#SE4g=SFn|L>1ybf;4)_p+%aA?lW? z>`iA?8K*X>;Yxyihlel2ll}(%B$0<|4iiJRq&d-6l!$nYSQg*tejs;llJ%i1X>lcc%9Vr~}ru%lnxfe_`zz zL=A?ws^AExVe)pSneE!Cj?9tF{tQl>)z6I6G3tV0yj{uZ6Q*~#=~MIH zmh7f<;=K79cP}PY!zQ1fZhSjUX2U~(WhdtsURrKVPt78*Ap`JO3cyY3$3;zBWu_{U z_1$pnm-37T*L>P9kCZav>faiiVWqVvPY( zZCM{`b~{Z!%){DyK96A9kb62n7dR)rD6#Pz*Gkv7?mTngw6f$(+!Jnj(P7Q*>?7fE zCD2dQsQA_O*glP|7R|!LM_py%bK~*VaJ}i72N_dswDu|?dh(x+}i zc}1`w18UUthw&)8Ei_@{1N$K1$ed?Z^JZF_VE=5H?QpP0GjHa@X>6JxmdQ<9@4iPq z>8SS)V6W3C?*nnvkb3huz&h5ECJCr{jA3^>wtkE9Q-$wGmSnj|fMw>DS`iAl0?as{w}R!J#x*9^$Zk;1 z?D9yKcROsF@$bcbH*g*p;1szn->Cr9CnVN?!j>k72i9~)9^f_0Ezw%@EnO8!y0+Bz zUx~Dgqt4YQL47a7OTGDwh_r7Txp-seYWtqkvN_89ZTjKpnY|$TNn;)nx`+!{E!z5R zWEpJ>X{ECkZn3XWDdHPlH&v>{iu$4i9Z2BM;lwLkc97%J9&&);q-!||-WCf-07jzxFmlozZ zOHCHW0?}S~un{CbP}Qnz;rD4$Gv3#`Ne^%2nt4A8Is0Y!r^90QIXMSAD@_c3_9kO< zQjiXudd4I2X^|zrq5M~nL-;dxV$m2#fF$*8pY$tFIfF=uTeY9-%Lx5E6e!>J=828w zfxcgDDN59pEx9FbB~>wN%vNPTc)myFe76M#ax~?+s4t7PQC?##h7%e|aTPkHMdtNk ztA0!lmG2?OOA|Ik0}QPDX~2=m@Oqp&kPdS@n3w@yQ`M6A&nLsYn^-hJ!FAfGkBp^e zY%cV~|6)|n!4uC|#e~0l;H=}R+PWX(=j4LJ)Q9F+G+_;rFwxU}wdZ@AYEX!x5eUuf zA@fVNBbACaw-qg&ZHv)mJdHIo`qlhrxotkP-j7Te3jL>4=-^xpEjVTGcrHoYKKmo- z3OVUe^cmfX*SGGE7Wh!7Jg`#Utyp^gsP2_D+acL|{Li*%Rtrd(K*;P0Z>)HBohw^H(mahNf@~F&;WF)MEU2S$7L!AJpcMkQVHVaJ zi6~LJJYAyfZI$~;5~LpHZ-}p7EvVrJQ^O1hGyou0>CUse{I`*jV^%BK+gL;eq)4SJ z2@v%%wwQ~IG`1~me@REuJ8T3Uh&`w=ZmjtD_Ob=o9fr4tPQ2@PB=h^v;=Q;AgATi! zYl2E!0@rlE^Mah~94xMWw1O?$y9BII4DIERIjx4Oo3HQPD?$|OQn@nS%uXUV`qC`Y z8X*IXF8^b1WTiS*m+Q`!B8b|e)l?gz@zXSurY0hfDQMd|0BxU^&`InbEAsq(ns{o+ zW*(8(M1ew54*5xoopw7k7Re1|O6*Q;?sO{QyA!C@{LS_u9ER?h+Z4yl3b}wD7&dfi z#n-pMxo=J!lDfx?1TIO#)ZxDGy3`@_$awX>2jlXg^2r5;PS=P%CCT34sJLYbv!k&B zwIApMlbd1Z5@b6=gG15xHOE|eht2qgf+U=OYJH%ruT-v{fpT%LQmx<0)sNy#j9(U$ z=l9M1fb|o-L**dDj;Vv-cc)*sN3-VnP8{$F>n@4kBb@3sH-HNe$kag_IQu_;pN$1x z)MB&vVuZ}m#YwyU=k z;+Jdo1_Mb!LV2tb6HcZ{uvbdr*GEuJ=MfjK9O9-=6^B zG;#HT?XpnpCq8l}PBUyu^lz3|aXH^-%Pess#zFcoupzNwYC+lAmHo#*gMHjzraQy3 zU8{xdxXbx2a7ZoFR1&dFT*?-{Xw|nGgxbzM_5q$V^XQxx?81$M{k`nSXPJX$ zkxjJ^y3-sevSp8$e1NT5pO8nH+}y`&7UUO6K#{E+x=SCVnyex!f^j7~KH%61(T3Da znnLT>A&lE`w&%U35A|J${~|<{g|+XeH1-x)aPHWlvcQZ!6JmT|H9G}EU&duveHYs; z$-Tlws9E(5*xT{#+ed0x13S{1th$~T=3{+DQ%VlDbaQg3MR6n5?##?P&XP;=MeoX? zLiy7Xg=LRjN3k#xKLZfnbwZ#qH3LU()MVr@mU_5yPk5%&Zi*Zp(tqXwBz zWh@KwBhUHrgU8c53l48kdeXdZ0_DrSPUb0}G9=g8(L7 z{#&3#meH}eU$T`SpX;Z8l1rzWdin=Co^PgjRFLoX?4=suB*rinviRB=fA4F@F59FX zJ>1T*Gv?@gpp^^6G?8O)>MqR6(PhWKC}!WfV<*&Qv` zY8|m6%V1D(lL*@>5gHw@faF9)yaj!OooUSM0~U~Yy`RJsw>8gclfqFqAVlU%{^vD1 zEE`8tgF-x^6MQ;1{@BYLQDZ@i(F^46aOQm$hV7zxC#_xH%qZB#5r542I_f0al3>Tk zREli2v=W_1M8|$aE3sQ|2s=23=}1)cMrGcUHD;BaNM#10{eX0Ue#DVQUiNtxBqMnk z!8`TdM}Unrnnw3grO0-#WTAV#Mln&DPNJyG)!w^xoGR=DRz7PbDy6mC*BxKi7-SmF z5A4wp8DXhG1)|;w+Mv@lWtI0TPi1^Q`7(-oqE1a2d_)f6;`R=eb$;K!MpN^6FvjZwGQ+$YzGG=U-TB7vrQcUk@Bh)~ z*u%}c10wyJQg2FwqYJVWwRo7n_O@;Qr-@T$BqYUWwE&&C2Ybd{p|Q|Tmh-sQh#zgp z0JYjUf{IbZxBr6V8=?cn?JCCX`r2TlTMUGtvHJT}4y&tRDm86R175bQM&HfYK)6Jr zbgV=ECFFSF#${82typSNCn`CFe_59RML081Yp9;|JSg#=j$n1efdM|1?jXF?e(LH&B2{`)=`~ms9AF! z*(aUUP7~gYDmZBq3+%Kb;k1j{Qoc}+1;6h!!)>E5TEUGhVjgEO`SvXPEW?fNW zB2z{8Z>nX@x~+wJ#pU(l!SO@&>jBExtaP#M8CBW#AA) z!8qz%0)B33A5@wbXnwqv9t)F1bcrs(#)6^0;kq8nnL*Z^J*am{m&>|66mb2GpkBGX zBE!;!*#zm!Od9+sXF=MfJ2#PbSd!hx&BSDUl82-I9o{g8(IrZiB~G7lAS4Mrtv;$? zY>%R$ZKtH&WTwBRk)!4G73dK=C^#&#c2NMfU847L$LRiyh5E^Fj~xBw74X9E)Gbu2yu#u1HJtC2@UO0HMUi+Y z;vdodWF9KBZ{NF;EnVl(IoU>T`MVnI0q|2zPLgmKVLBCL%I2Vtqu6$`RMe0<&a_72 z*|69N(M*WW{D;12_CNLRnmuC8*UaRTH*A`;cqm~!Pmy~*^101pUrpKNX*YjG_H7Y@ih3S z--^P1>%XzafN6gD?ceHEni6yFhnQKnoKuGUgjS)P;04RAn6+S*1W zSB2gd;u{ZOiN&!sOUkQYzUPQ;Q?TZ!G{{4%Ks}Q9T$d>Z3n*J#mBkYh97?Vho@tnH zA1!6{hP6IUK7GA2$Brc(;hF4neV>ipu0MZBP}9Om3n;>p{Gk|`aOfKC$IBUDqF_7H zfr*bsVX=nQ8SbX}<0`@CMfq#yn}0;#UrrBPM#8Jt>+~Hr>sM0QqrHdIoGZ6p=BTbw z6n3wC@zq$ex4fuYOZZQe$P%3-hVSs*g5|7;&}^+HdZH0d#cc-P&#KV9=X5w5xR zDRV*td`;AO%nEw{%94e(KyD1{xZz3y4HzWlM|VN&c}|`pxzi-;i%2f^pPRiKXf^FL zwMlIfcPTBmbCYImb?bA+&NGdeS*T4eahPsRTR(v?`x0)@g^~(w5GRAHU7vRy*~is8 zNj4L{+kO*6^CYd#qc`0Z@Jh0I;vfmQ{}kS>t(&+rM;5Ao z5z%H$NNj&Lx25L}sy^kKA*g&t1R!%U07T18Nrzj-#WbH$y@h&tb@T<{S7TL41qMS= zSbcnC#foKDvD&c&-jfU}g~##oxsJVP^Rilt~h2IQ!2g@30~GZ!M)}s%RPZbI3gk zdHeQp{}q!0l+xi4;x%5tuGcjK?J>+KT+QwNEyHzi_jL~E5|VOx&SjD&km1F@sApSz zuB9spWUY_@pSB7Xs>!Si<|8j#=dEM)|Aqp@^uX4&dut*?8s#Iee-`*alH()ch7DPi znU0wCT`=WLznO~9s1wkkA3YA;Wh`mcw#IF*LFebUi0#~bS$ zji1v`2%4NP0eT-36;P%#kb6V%;`$JqZkA)t=mKVYrS;OzXB*}`!eQV2B)XTsqfefS zG@3lQ$ub-gCXk?6?dL*$XN{^f+wlMwZdU#+qa;8;Ek|^@3dPUrILA6d^Sb-8p{-ZFn8wSLHeO?H zw(of;Nubd==?;tobieav$E&2qs|irZE|D5QUb%XJYU^= zr=C_&b~0sU(y?ZeQJ8Y8gK6_pNSFbzm(XfBDU=FB939zDKH1;?3(MQ;c;+4iyk!qN zIv;I!i?q6#B=oTR3wOsC zdksr=9i9;(!rm=u#Fe?bt?oA1QTMIocmZFuPiV7V0kU1efyS29 zu6udl4C^9ERNOP7U6l9QypJ|Lsv`7jJy=>pMErhI-8K7p4m;5} zs82}kT3fcO0T)Gz=NK+@6Qe7jhlBJ4k$`CB+344$?8<0{VpoyQuFog11hD%Kc|13e zm=&lfqGcN{Q^B4nm}Q47p7z)L_|n{aO*LiUBV5bDXKB{u+PiQ6%oZeC@APxGi4(gP zt}nK#r{>`c`Kk&?(#p8`UpT37*s!H8@XTIQ!4-{d=PbZ3-%S-U*m>-~p^W;$>s1c+ zW8My<(EV^_ud~-(lBB#sqT5r+(GZ_?^POD zulAFjUA*{qtiIy{b>1~QSbBF3vbLL@qBSg@$Vd_9TR=}qGOd`uQQuhWpr$(csLB)X z)mxta4e{qHBUeE^QedQ)dM3X9R}X8lK+A2iv8tjvLQd5-h+EP#Q z!f7Tj=U1b*ypcurYM+QO!{dcHX9nVLX=gu|EVJM*WoIvr4T7@?ErCT0p)OTDL9>>( zoxK8lcG-byyRohkdfOT)q)^j88yl)v47D0APcS{Gsi4W0c0XV7Q2HAJS#CjdKK~lv~ts$oc_^rJEWL}lh+gI{2W1&lb$}4 zEn1N+z^0)zLhL$aPJBX=t9U0ePA@>3jOSpu^%KW;Wku?f2ss8nu2%CB)gCU>!G`|b z^tYblPSx%kj;CYyZAd_{eM=>@VkUM}nwM&CDv|yqnzUILMxHu=J0t&kb+bI)4o6n4 z#Ij6Ho6f_EFxoxt;ePM`QpV+m=sNyW?JB|WGb{y`$`BqpgNm=wLBPSOjYbd$ZmzvI z;?#zo3{M#B>&v#E5B4ZBMqsinmNIP)ImrY#0+wzBn%166ZPcL~8NZt42 zr2MZ6rfGwt(bm#{pB9quz#3_?17>%=-DIQE3lBF2zw;;2lj1gLzb`IHKfAS8RRjD%`**iaXrV&rIueltc(!h*5JW;yik zFu!7ba?74owPSEFej(fiY4I^nyR#Aqv7XCs@n;9FM`S!vHYDO4h{f60ZaV?iqw6dO zF|IZ7yqc*C-Nw#M6dGn`vLTkhY}nWJBmESW@(W*kYn%<2hK%y*+EKp|4`IpXKE^Qp@SqY{_*i z_MqqnKyC+cR&XN=dlBX-J3hU7vYokIzo%^~-wFGKNz&z8P$(y*qgce($S^JbaY@y{ zTy`fU&hT_u#?4?exO8d1$tgW=D23M{D)Lc=15~r<98lRD%AU>F1QQ8!3L?6xJHkSX zlMYkWeQ>(FQU77(#>(rN%2)mDN@nw-y;Q}~D`AKHw>e+>AZ8wPa;^&A8L&ahaxu^f$N%;JiM=l___&Juzx zlo{_p`sOVcAiG0E--xSbs{Jv|D$>8{YDnH4Uyh5N8_mAC{Cw-WKB|&iIyBNBWV&OB zh&}L>7wJoKR!wpBbs(8nEo>c8_u2s0n&183yIY>VzdI*?oE!ery_GS3*Ts6ozge{;=G&|fjqo@nZL&T7pN4l! zYID_qya!RzI}~)=3;;WFekex~nnQ=5fg$d-S!)r%YL_8;p}YEV)%=sVAJgX?g|aE`nFWA~<5F>)rh zyhhf0xTM%w(AM5;RypbX%n9hNx!jpvkgn&{svLBP9ib}Jo>f*DIvx(Ank*~8wzC6% z5UEQ2tUex@hUH0~_aCgNpU*I)Z-6e0&|SU~vm{@LZRUbn0bx6|5G|IZkiRSinU{SX zV}xg{Z))ftHvJ)<9ExZa2l=B)HQk!n-NfPNR0e&ukJXk^XJGBv2eyMcCrtS-1zW zH#HOmw{Waa(zEG!ej+O^OS<1%|NIMgcr_Ze>9fQeo~rsSV}Q$b)Rm{Q!+l-csdSat z>D#PXUIkxT9g+7j`(;6mZ|khh_lEdQC|j%Q=KTcQ+BSNu3klAo5dP{2>yNJ z;K$lZ8rC_%;dERKHGE!EHLbeIzLc{;{a59UZ3bb{6iU(PcWIL`1m5B-)pwrq16OKy z$#06E9UX>%e0-gI=f1};NF#X22A>0)zP*L8EKq%tC z3AuIXrkbKVi!MgQnlPgKIx=}xedtZIl;%IUP*)I^%Y&?jfJrTE&FdR zniPWh!;68$YFGS2l6^o1Q_>&%FFQ+S0U2~O4z0kK7MZPR$QkS*x5dSeeM8~9jbdO6 zv@l*mId;awSq3vppnrW6*2;zlAW0k~V2N$29M119vMjz?J6;^9>WV(D9)0Uc@d=!~ zP@<&q>Ne>{BCp@c0o3N$+BSr)RgFR8)gg$ ztd1cmJo)0fA=-HoU5sm&k|dsFTddFt!E3*OgIqMgulbH$uwY}m|GI<uivYJ}xgVnObgsvct!{BLMRi6Ihkx z{mJNsc)9W2%UbK)1$M;I8s|_2B_i z8f$EyH*+US`wM^d{N`lLxMQDkdHvPu%MX{xT+UU`LaX>vmVTZ}7O8oBrySuK#?3-2=%_s5txsEUF zow*}jbF6_!3R7OI+KYzI(aCKV zgJ`p1wq=-LsZ)WBQA3;F5UIPtCWG~*REX1buctZioOB}+pV#ph5A8kC^d>-WA`FvoFGhKmMaEyLK6X0Wr;kIuD=g5|-PWVlX+ImP?+*8Vd zrBP_ZP%E3r3D?=PfriQr58$RGx0l^%iK0R(F$HF_=I2KB#lC@4BjQALar*2Q+3_xS zh33tmZMZNAq4yDlPyry*Ew!hhK7(Q^`!7G6%T?SoE9NM4tfuNqo9#GP zd$pt#Oaa$g^Cxyyfg@wga~Z_ZRQ@kv3Sa8(p<$2p?WtsS%xzK2`dhErhXCcgWMtfb zLy?JbzXohJ?_ik&chFF7dZdwHl4+hsZs`A~=-T6w$lCwAZEe}b4J<3eHgSL~=whUd zTE9(E84d&G+KfZw%-#&_UEjJVp4P=;>rWqQmWF>)&s%@<&feE^oICl| zFam^S?}OS;CZ(z2g1+mnCr?j&Puua~=o!Hu4sQ$ZeOqQ%F3l==acW8P_VnCx_|Ws1 zLpzlVmUx)esx0g_clV^#urJ27JLMYnXxKYFd0oAsu%^e$d~)FVbvpZf?)OR0LMhP1 z0_W+Y*VekeYz=FFlacIT*x>IN?R5QQV0_Q?CwbCZ?Sb}ZYp?syyZQ3hBYnHm_Fjt3 z`WW6pG->Y7t!l8gKe%}8Z;z>4?6lwgpE(_K515T9j{D>}?KhS$Z;e?ywgY8_8nX4_va-BbD5ys?9<+%5jSp6)Y$$+qKj7Z~nVtzY3Y*Z;^0#!}leIZY@GvFdVt&_tbT804QL?4KQ2vu=5A zujkN4ds>&XlT*i|jM@}NUDVO!_zR7rCp{0Q31`J!SW%#Ic`qDtj1|Pk_;{4Cc1FK& zd||5lZE_$rLj;A+%zV`p?tjAc*D9>_a07h2J6akp+gbnh{3y+%?p^0L9KIfE87Mli z@ipwANWZnHeNJDed9^Ed1QPbFo$=7e#UJoz*2lNrPg!4`v^!g3Yu@+hCy{++ z;i5kecX&T@UUS)0vSd#5_P>`*_AMwnwh;=V+Z4)~w@13KUawz!bKG+>D(2w<$<+PPPeTEkj!mY*O`p!c z_+{kM&RPq~sCY^AyTBhkReL1Vwf4d>+x(8OMZ>u?eo4%&dVy-elap+(_Qj(Y?lS#u zCbw^CUXMMXKS}2dR=yE`KH=ydUORGQ`pDfgYiC+umQNLbVf?ZF%jdVZKN`w=)l&XT z+z+-l89e-0hrj10O7|3=NSU5r)7PD}#rRv?f}OVqb~Cn^LM!v%?BUO^J~#(DNziqz zZ2F|hU!Wv!IaPhZ7(cP>$od(VPZoRU0Ma^(_clM~Q^4J;CmQOGhp(D@I9`8qQ{$YQ zPremiliEx64KD9z4mG{r8zhb2pHlsFomYh}`_0jj$GfIJ?WxaejTb&#-WhJ%z3r#b z`7gG1A9B2WB)5Dn{gP#e`$>O2CHkc?&rq86VFjIslDC;AIcjYG}DGw4a7N)y}GyAYtny%C*7SF7`EzFMp=LBn!X;XTB2N(-q`o3 zb!EVfg9B^2>StFzr|UZgHlMp>#5!&yE^EBjK}htCd*%u^&xL~!!>x7e3BE@HR6G6N zHwFH6VB~%2(Ch23ruTVgJg!=J1!%9-Z_21 z*636ieNv+Q<89>B-h`*Icc1%x2@l+S3e9B|c8;!32;EmGvrJk0o)+t0m4sTKU)PmP zGuHpQul`nDcjt%4kIBd)QfJX(W@*gHgyl2smE|Mr2XA+{Zkg;m_oMHQhpN(s+O+p| zp~ugay65E|g|D<<#jYN`S+mUaep%O8Zf zjHLhN5q0_AY_EghwVG$K6~POS<+V#1(zM%XS>F2bV_TW4P-5J{dea~ zhIR`XOQ3i&DGnTO>KuRl=n^C z(uY$S_Qz+>ZT7tSOZUPJQM95Jqfs6W@X+Gyn7`$xT?FGjAAjF+eSh13f7EL8Cmr3B zTDGO)aASU9(Aan> z_gPd}Vt$h9L?_v$^q0qq50g}u&m_6>0wbvg3tSn?Afwv zy6K#F>~qYUlgCAGX&>)yd-T6OgxXu4visL>hwccK#xRy$T4QVfrL}DG9ezT~ch`04 zTZWrNML{v?ix$w1412FQD-svHUln3eES#dg(;sP8m-&S4zP~^*i!ge8c|g{G-`P|9 z0Iu;Qvn%Gqq|?jDNF-5iTH;ow=A=ngb=JeX{f`D7UtX7bts~q|@>^evGQ!vGaGET6 z)79@|?l8~0W@eUrW>gAq9y^>~ESUY%uI0Y|66Db_TDArt^pUaWxdPM!G!)F8;44dsoPgf9E)=X9Zi%;&)rWlKZo=& z16QWrdE8d)bhYu)&AO82>_vVHtF=K3{g$LhADsR4PE+kNYW>dAllNuSLlr3nW0!V{ z$Un5~a~W6X=(4tPk4;vg_4itiFYTE&E^jX@>JSs+%4-I?cE#tuIMcCZ0&6_VwbYfkf@MEaProsoj!nBE1NEet#C>oF(MNvA!CI_`H?7U+}*@ zQ?>&+oE;E!#c+42^c4O3gBcz0nt;NR15eyNf0!uyuW}@CzwOqA#ktxYB$1v-Z0qZF!s*M&j$T zjL4bVA1hp*CoHqZr!7~@76;|NbUr;gk$C-dz^&rM6?qcX<$GB*gQ;=4qR+&YcW$hC zYCVr1l1LisYe-yB_(Hm7Q)g|%OLvWFK@e$6L}B|yr7`yQuUP@_lS0q!_xnRKydsT$ zwB^I1;-7qvKiQQ%H8E$2wO+O8;O(TT)UPZqCuK*c=M+bl&SJ%xB|1 zW-a-iLA=Ns>)5UT;Yg0hvcRue1v^ewEdOugi`hTi8gJbwB+NgwHGLvvII6bt zsQ56ljJxSxxK^+uH#R(t8k1D%x%7m4bN&yv#Cp$}l5o*Q1u2y2u>Li(v2bPW&j0fd z7%F>j>7`$W3sS8|W~X!DBU z{`{|xsrq_b<)58{PcP{x$RBRb{>%>V`QJs~(!)jPiBE^tUVCZWxozb6S7DOBy{5K) z{MU)ID|`!qQ0G67F0VG+KM?&gOuuViQ{V5zB&{U)8Of z8~f(RJqmG3zO=9r%`~qzo=XUMF}N!{IWlVbiRmNl?khsm*QF8)|MDJP`F5ltItw0H z;rqixY-ajomgl1US?iT&Rj%NNj1#V4*UiT8u<-DGTb?Qe^S^2jxpFNz;ciI75sh-z z;SHBExUtXPyb6d}ka6_J7Exb655s zqh6Ail`WfIwM1fQg+#nQyse= zKTBMnT38u7`F+~_nviY3#R$5ycw?KkM>0NJ{=zUG&l9eu%YnS=wvT|6J(1_z5%Oukl-)3J>1yi6 zlG>Fn8`i#fw)txIf*9ey*me6J_~y4h-7>6oUa&mu<0dt_V*%&Z#cvGT)~%%pWZv9u z+OXD=pZ`z%EO7T&<)+hzsu)X8OnSWC^!K#@)ypEki>qX-k!$jO#|CD%1=j6+<>h%a z@>28Kg~xl`^p@Y}H}85@Dt>3AoP(16 zOs)xO`fABAv0Ld+1v$u`g0m<6aI3wK+k-qz?x!j*Isz&W<|sgCm)x-Ig;<=9=QXN zpIKMq(_yX2q0~&Y9G0{{?!h8jr7d6jlfO!xl*MdZo%FxW1KB~|ln>lU9B)->V$A6ENTSLRw31Ss(G*LKUvM8)K7;Po7CX?Nyvz z!hI6uHRWeWrtFI~~U z6@4t*cV%WQ>503l`tXf1wdqMv^qr@Fj#~D<-IO@6Hs-vmXW^jb1nRNaNW^0$oOk|J zn9Gi@!!icjHr+GjFFlu&>~_0v@5Bb>d%g9?FZ!wFZx$Uxx_^$jIghFz`ms)5(RM*; z?*vc%uj142(uJel^6U9oq4F!^b=Nl6s9RJ^j}*$E;m=KW%^JD5u!ki0W|dr)|M%;| zt3KKDs~3g4yGnMC$N68EY+ca3Hhec$wK?j;*H;(cs9@HNhE4ll|GGF}K`8U%>g<$} zk=svBTHmf4aolp|H&>$imh+hfWuy1&V-{9y34e3rvvT1~(76&2O1z-*gtw-xjnua{ zZ#)3JKUfmL+ZNLs^yji<@5=-yHBqToZV?}mRS zfPd`$>(PhHe+<6We3H~LBq?RzDCwUPrT66{{z=D{dauusy1uQbugnfReCXGTnPum* zrK6tzJDIjz7j*8e>=!>6SPd5e*Mym*^pEgBqcZ)LpRjbrh?SG!Ir+(9mnQrL2 z5Zi*C(VG{v+&pGGbm>YR@9Au}xgI$;ldJpMo<4SBeV+5?_~XS_GRyX|8W$KX{&6RK zosZ}}laj;Mb+mMbf7+Iu;~F1!=lUUW=$V0q@q(JZ4f^b3y*_=+ zyOX*MT^1)u-QyV3^ZeKJH;jOok|_U&#}dTPu2M3CvbN`0yRvtlW8eSKneyikCqiTG z-6aLr)GtOVRrk&u?>1IEm9LMPY#TIrpPqg6D)1X;OCF)}^BGskk891Z?6)>gjLv)x zYn{#LJme%KAvYG-UQQ+HR=hn`!^u8Je;ciJLq~EloS35xEfH>l+=8HACEHd{Lxd~$ zZ~q^-_wHP{JRuYR31IYykwwr#53ddu4>Zo3ZU{jx|JhM}wj+y^>>3}nZ?RvLf5qjx zkPM%y|Lb_!9pf{%VBPmWyuMVsWixUWe-gcPUPyIu@}WYT_CK4qJid2UvTyxdr{O#5 zrD?AkO;v@k&RU;Uh<`d=S&;7ZHV58@wgt!+*F?D^*vYeUD~t@(bPy+v`628ty3Nd6Pu zvtQncl#^SV($;`tNgnk`rX*Wiclp!w2Po~J;D@a%h9mBo(eckd0jtIc{~9BQo?Ig^rP{-<=D2b8#9n=oarW^wqvKVN80V&EHHB>5 zG5nzNtlH_7l07po!w>m=jsDnOvaYo1@;UocW5W{V*skP|Gjk2$=TP-GuWNLck=k!> zrZ`u3Czozoxaj<^!LJxA_(|lDvXyS}m6z2+UucHVOe*2$o zO)^&}_=R5xYl~mqYQBF{T;D*xGW2Q*$@iiEkJ_w(q@{Bb|G_K{Qm zGx$kOyVjliu;WNp_t}9t!XID7FRHz@?xZ#7!NIX?X~RCwGkyBfV^a;-(7;xD?4=l& ztlpy8M~*HWJK-4Uc3eHUF0VY{)#D>oyP?7+mBW_w;qKECcGt$7-JfeuxX;=$`#;L{ z_u72k{d_cH`f6UHoBxITgIV}5Oub|Cj#v8<_uu+792XNtz2}iJp?%8RV-H^~zn53` zL&5It%Oj3m3_CaHKXs-7>I#zW*KjnXOj@hn(L8$DKX5 z`Z(|0Q0UC9Cv(0Ee{g%*t>swg!L;Hhq% zb4A;RW$nW0ud|G)34f;5?|kmE!$mtdewCW@{oDRs4~d+OV2;h9I1n||eedvtPv?q1zn zyYHnH`)-VF-?r2RUbyDn2l*ST*Rd5ZZx&_^zUI@0W5)Ks@^p#ZU~ZN{zddK1_xpsu zfrm#tG_&qOQ^vn4Mw+o*^%IHhZ`~Ged`WQd@Y=xjU;JM?H zlpRUdGie6Il$q!ovCpn<`f{_#_2TJ1V&*1uW_-Wj*81uD@yO`)R^;ONUAIjqp`5uz%)1C-3-0d|W*K=PT-y zd-XRD%1v}H*638N-m{E!a2gw*xRUEtR?E;|DlYZ)x?auXmppPWQ}$2_Y8$iQFKwDW=P&448Tqjd1>-`<^tZZGc0f};ZJ@9Az# zzx;iXUDLYb^w<3-VG)>d%_QApa z=fYhV+_wGfbViI7_W)%@vwlDGBs!vtP-i)H_`CBH8&(-k{$g(XPW9kQP=0)kWWBX0 zg?F>DdaL+-zTe0AqglU9I)}l}YxZ!nTpIVdqXo5n+l}3ozjAe8!^5x-^{&jV=N9gG z+`8u1Z5QJHs3g88e@x`I#5sK-$ijfY`7x$b2eRk6T%yGNsoi(uUGP?Ojp5fz>ncnI zKZ4~|r>Ebn)i41CFGfIkA?-@T{pmQ zFgX9MpS|Nj0-RT*zxDD%P!bq7ciW+8f%Aqc>$Wd33ZH~e4~vVJWT79w&003{bdLMH zQ01upAakK4epU=}hFaMe=Olk}~xuj))uzn^ap!7E5amITgmo3=yY~ubswCsQHZ+z+e&yOC7 zKh_MMzVn}7-k7fad)B(gtHhh$E;)^8JBQ^@uF-2hJj71#s{8k&Gyie`&O_^*mObBj z+xXrxq^P{9MUoHS{c&Y+>4?~?S#VnYeq=3r>IDh6C zlvKBu?z|xDZC#wpmjesf_kPeGSn&MRhFOdD$BFVAwP&+pzs>q>``P!Yx7FjP4&Nmm zzW?6~BVxa%2&H)oHzoX3;dIIy+i1Br%UY}%CWbZ_aaE+^1wWu%B1JA7?uD@O9=0V2 zn>2|kZF_YP`f|@%wifYLeX93+uhkjgT^g96_jXI-TfNCib_uVtf1ARtK19Nr@^8y% z0@qbUF~Eb$p-LTBgwQHsZ}(hV0jjiSs+q-ZJ@RyGnoYpwCQ>KL3kReaJ0uxtrXUb0 zJ#Th1SBzo>leRIyHl9w!MX>Ruqx zIl(4zFW{#e9H~fzl)s&71Lrk4n~k-iosd>HCJC4b0u$bp!<|9WNR3s+qg(vxWBgz* zMOzcEE6r+q; z#a(D$X{*=S^88f%R8wd$%VscfV3V7h8^R@_J2b3jKd5V(H4a!+L0WT4O@XWeNl^Gl z>PeT!+t{2+r3WE&0#h+zV=s;5x``ZWn`m{mu!{%Sh(M~3G)*F!;uN#d&4~>l^f9Ki zv1>{u?seob3Q6RQ>T>?9<~p4w80qWmK^ScFFkvnQIZ?@MC2j2;_X1hl9X?ZAW{ z)Z=&UCiA1nJdL6^DHJA}qNJF856l(Od_)`!5u&Yxa=k&X!6xmX(3E(n+FrlVoU;^`n zJ|(c#A1fy4H!Dq$gJ~H2j`U7s*>cg^)h9v0u&X<*a++r3>v9ctKH4aGY|!d z&ZbBdD`p~mX)wt^D5|hpF}pXNV+KWzd(dWdVr*Ta(y&rt=&||A0foU`#iw+r zF+0Vwb^R)aZGej@NH)yQwEGIUFrfe&<1+wxW@amh2h!i}2ubAwC7`baqG&3gJC*27 zYaXNSKa<|=pzSsjA(J!}u)%PW9P%wuV`CB!bgcqSG=4fa5gehhxKgQ({l#8tRV!IJ zfK96889IZ(?&4LU?=x*S3=y!?)$&x31anc$)+UvUEKHfw%$FjmUE_Id%qCUb9|+Xo zJ0(q2z7>^7RZ;F7JkLzpqYj&T-mA3cIHAFbjuE!-0Tbz_o#rSRNTrc%AdMzrjU)bm z?R~eOZE_MG)<`iE-wdq-EG;H$Rvk>@nOFtoOXMOgq?dn-7Fj2BXh^5WI~i5 zs+K#crHC}&EC4|R4nw&_N>TBHMLp@VCC^QC%uejzjM*7&t-c88&6J`#B{q&p6{}Gc zWIuXF$VM{<}agtIS~3D9zzEYcRoJtg`{YKrlTuk%2WUx~$D|zEwA>QSo6O z*o)b6Hst76rFNwnx<&3KSJfDXDlDvNYcmpAEH9V6&f>vsX8`&vs8*bZlrBHZhJ55UV`x$9jW5sWK=GdGM0SN`{icZ z!ETb7*K=OVFqjMno%HUyX;X>SCPmoFp(tEH67QIt45n0*v{2^X8SJD+F*FC9I}ek# z0s<*!#nk8}H!@GEnFbxK<7lu)6-Z;XA#|$*Ed=E>)ECCirM869!qf$?>ZQ4o=c!IXv8BU(-ZmjlmF>4qIit z8Q?IDM3c0%62LCKNs2)2PJ3h~(9mTYS3!>>e;R6SJmSZ7Q6L zNp=z})%Rej0N)o37MY}|o`i^uR&~qzJ*w14<%Y!dGOdI?MrLA|iG(Gw)Tk6|8{-S@ ztftyroVqSn`F%pTAtR{X#CNX;X%40eH*W?a;qz(R(_{!RbSdV&#HS+ahH>JNbyG_~LpeWH?*Z6sx>nG_l1udf zEGeu4@P&abN5-r+I}0tq><|5pca1*a@Q9LB7OI!PpowHdVXF;;`H(?s_ZUkK#)aG0 zE!7C%DCtA^AXvr1V};=XwL6t)&8Y@`FF)8l4`E~JrfzpM*ACe5iA?I-rbp~xDNF+} z{91enP?)+VdNBof-!_(N+EXZ1uw)nx8u*Z}$YcU!R-L6Kbb%>~&h<_%{ zEglww-lXX+yEjgI!5~H3>L$92%7j|kh|*4d;fq!<6<{|$CYw}^3n+lL%_Pz%_A$|7 z7IMnHlnh74W%WR&U|NV z*ENYVmbF!iE4sHg(8?;&@TmwswrLDBilFw_YdsJM`-FjL++V zma*(K&~zx6HBC>2P3~&6!~vH>GDLIa<1}P}^wM^#Oma&4FcH9l!4W>yHVMNppEcSx zj-VJ9G`LIAW(?1nWVW?bTDna!(Ii^M=etXTS(!GpiX@koknA*Xri=*UcUp{s-E`X+ zzFIvw1cr%)(0p+{gp5XmX+0lLWxER>P9+e9a&VYr2Nc9p!G37lc%}`L;h4FKm5~0F zYD?L6P=nHKIGUj@E6f-93LhaPm`}-r@l4}`e2C2JV&Kn(BRKLg=`K<$jfJW>N5%%A z?v*+`J+K!hDcdINn&CUL$1y&QKS5)T%RqNo&p3)b#|;BoXa`v`5Hy-14OF`$40qY3 zGSH2LT_Qa~Q*kPiVmP_k-At+fFdk+LCPUrshKG!DI2hnt)hfW6i<1rRPQbQlZ+B!| z)`J_BZZ{L3FM;87LubI$ML#K?_#B%JRV$1nDW>R}{Kqf!a&q}Bo6M9-=D+}+2Q;QM zK+&h-FJn#GT`QHC4RM$CVRD#_f{qq24(m4(Km)7QUCy4g**UfW6d%r5Tr&buXf#5X z!X$-xd>(<69zwM<;Zz@3nmairEVP+G3hQ-^9hZ1*?znEMiYCTW7&I7HqVfRjJRka4 zmHXzr*kl1s@Dcm4{iYuDW}$2hA}Pe(xV(B8XxsF|uTVu_4geoF1^P|Os%T`uX2*Rl z4f}-nDR71(JvV|N_~Cu2R9b@Jz>}h=S`LdEq>4@+eqEA06^9m?zdO|lqe&4s)mnl_ zl+2!dVW?u+0f?M#!|B2;7UoNF?*alc*qlBfl{?APak`L@5D?HQVUV^(Yj=(qmxG<; z)Pa&*oebJcK9#Y-5DGDt~rK z7m)b`1Zm0m2O@ld_(x<0;A*D%Flg6z17q%(6ptw^z+Z@9;s=jEbjG=`tKXN@jAxe# zBH1RRLT%4kwy{94ZVF#;M_zB5iE10551=5y2~OineBuE!=qN?Z>@hYRSVhEHK>FIW zDiVNjvnqEKb>rOjob%^#{d8LiCTHUA2H^p6zN`yVbi&dS6X=UTMEBwpnW3Cj1_Id3 zZmHtay8-mLv4M%1sW!e8h1t^lyO?wwd&qhY8i-Ow)nYqKEeEg4K@*uR#q~VZNCTuY zLswq9jD#BONNP0#OUV@LE!RcWqON z^dtxuRJsncCn!iD$?gnM5h>QM_jbqa{a7MNMFaJwff5}O#d9{8l8Qa~zEUhuRw8Ex z{{wr-J%6Qg91|r>^h)q+P;DyQc*4x*of)k15O-`G-E9U93R0@k9m|u@ynSIfmL@RdsAsdK=IUyl|xKI-B!)O)rT|4xe>WhBG}!DV6*4cS5^4pzWbclc z34q}sIRbSz-5;YM9Gks+)$tKZ70x^$NYU9$v|x}#(fpd|OFZ5USRdJP+~on8R%@!o zC3ro}&Co67OL@#(bs&KAXgX{jVFSg&fkcM8a+uL12uUX8fF>UBf-mIzhuS3Y5uOP! zQ*NWILZEcUS=`^1$qv-v+)t^{!>H1xR1n=2h7tgq?vSziUE452f{lX&T%9WAmEsey zDZELxT$yH~seuoRfg5VH8HP_Cw>Of>Aj>Rb>adyMz?BNzX7>aXC_n?H*x=#Kz~nsg zc6V%2LY-)WHs?MbGXSC)Fhy;GdO7_L-tG$AG01vSQ#fYa3Z+vtTyMZG?gdSzR1yk| z!6KN?!L>QnNlqy@bCYsal2m;PUNtlc&{Vu=7kT344#L4{6MxdOY3f;Y4uDsy!R|7= z6zftW0SYn?;q;qK>>-q+#-t^!0MBY?O}%KPa&f~$Hb0vqJs zup43q;|@TIah=9<$iW2|E?4;wgUoXS1|YoOpfn%OgGCMwb`k{GNjAuoYFJZ%iz7Kn zwMItdD1c(BVvCFj2V(3}_a242p-Duw0ahfiLItqhdO?niTBrhk&9-}xw~}@fxgrxu zCI(=bt%wx^c91Lra*G!$j5Lr;EtK=)5rZ4i!a)!bhJYd$j+sY?OrRbZ6P0OjPb#Za zS|A|P%yR(mB7tRi6R!!!IT0_J6;2!kmv*Z{I0OMIYRKw|)_F3#w1pE+Qy_MO?$@M&RZZae3>j0Wq9Q`vh`5?? zkyilz$qt%gXLFa?AFr3Kavm{B)|(}B10Z0aAxJ8xXq$ND5DFkY#SWe$9935_fN%ko zSt$Y_0-4G&6S+c-IRj)U9Ee2WZc%x%gmDcoOhvObFbk7MC=2(@*co&bkM&~(?v5bb zT-ccu6`+HbXjP0#gsOvwyYK>vIs?yZg1UY~c6m}y>pMgm!~ri0sSs5OhyWyl%N5~G zO~e40Ar0R50!&i869;L`vMLzsrRq3lszP|4nAGS=0LU~%w|r3Dz^~nQVCJ0QiI1q z#nGv{WU)LVTPp)lUWyIJ@?*$>446d(Dwadgm?6+;Z~!<@_QJabY-RsuT-LHG6ac_M zL>?43Ab)i}k!X(PD3}T>-i!ge88WfP!qHu}dylRHN&{3PA_oseK`xq?3eiE(X-6|= z?#DsK(G9#XagbmG&)8$j&BJqYvGTlt3z)@Bz9bb$LXs3rwiYk#Bilz{2*GcsC$&p> zRG^+E_d+@6*_k~Y4iX7u>Oy!3kz*!{sQ{-ipUUAeb;^F`c5*1<2FPYNnk0C~1ft5p zo=kr>1)(T}{Rb&$7c1}> z{nK>eku6lV%6h{l)0hB=q^=@V(Kb=d0H#*qz3OHJK!|{aN9L6WQq6%fr+^T01eYlC zWUKLXTpWn>o#J&-OQCLIjvDL7nXNQfjHjLe2eKBiL^@M+!8E2B5+e!4MB$?f;xK?v zRY0bSJ&?wS5etv1G$-lI&V@**64HarM=C=-ViAZO5-u?eig`l@Kt_hdWCl(|L?gl3 z=%G$^l@ADf1+YG==>P6w~_v5A%=s~!6gsB5JF53_a z8Uay7i~}wAnAfiOehzTMT8Z2 zMlm@$l!F6-iMZhmdP7m!thb+2T7XEc3}*zg*@cY@aITskyop*M19()k2rvjkl_9)x zG%2^-=%(QyPE=hjG*89Im5J%fe$d1wlZiw&!T{(4QTPJnQ8RZ_5aDH&sBSQdt`t(= zm*Av7;6@xK5UKuoLN6kfWp{!!fn}n41wMKvdzS;VkwBn7LU|ej z{wKgzMdIPZm4=~(QVJ9{oAMnh${~`Wh%)d zJ7`P|t}?sXG6!IYn8$N)lqwvS3Ieriw!&Fa35kS=n9M2X%e(L_!nb}@qS)l5Oan1u zqSehw#2hlm@=7O+T?o4gzyWJ6W}-X_(g`4xib`C>4EVYl5D^3aAI=9zzsQp+15_Sl zs6wks4#hDH;S3=fZ|us%QKyA83}$^ew@&o-p=1B!WOa-bUn7m=xnTokG^vzam%2q$VSRH>jN?v!!}Co(nU zVgM)_vjs3P@ggJyKn#S%O*qjQOmWI#KvfUX^Eg}%ga{GY>fG~mj?6h11t9&V9)zQ9 zA_^dalTa5zhBQsQbwUMW3Bn7k&>$kJjGQDRP!-G}NHf5}p&=u(&0YD_peBC?u1gNW zD2PmkwAm;yz#~Vx0MG)eisyufAt~S4Y+)m8JQ;-k>|B)H#I97q>1MW)OlgXw%gB*b zRX^7|3TIw|3NQnZMnP3( zaweK#9uP(*7DQ@QhGfvgy zq++ru0>)EF<^&X&Atn;Iq&JM(&&(`PxH%Aqw|RS0p>i(1Me9c73L~H`O&k@TwLLN? zf2zvB%=d5r3REH?TOq=`|4FhX{Y*1c%hvV#No8ark473%S^U}g&g|Go$}W8zo)Lwa zY!yeVGmG$;8h|`DM=1hL!}tz18rZlbD#{x8H4~3k*OfKxG|{;iYAw>L>Nd0cp()nvT90V#N zq!B@3O-WoLnW7-lYa;2mWn_0D6pboOgeUWAgq$p@lQG%3N`C_pXTSu76TMlKpyWCb zIsN3PC?0!`3Ib3{BV$c7RGClk@P_~#sKj~YiI1zuJSR3zH_dF7C?txj6*ZYcGa-}*Aj9;b z5|c2(%vAAGaNH4x$%i~V*{Y~`Buc0qf*4iU@BILWU4Y_c4JWk7qx=xCSRry?4nWSz z5J(KQ;7PKL^z$oTpvg;a~SRLV5(yjSN!2$`9gtM*7zxO2?+$_u&wSO={} zG-o$Mizj10UB)OEiK!}1pfE=qoID6pKvb#9f) zm=MvjeR1wUgpyP4Pd5*$D^@C~1qhEo-fcFxgmmc)Vs|H=2a&1C9K=0~m&!?CK#RZwe&Pg&c4o>23fiusc(%(QeP%5;=Yt$SzARWQz!i^rdMHi8~ zn%vxQGiT7Kgt(a_5IquZL5*ltg?~8M3T^5P8^v#M28S20#&p)ajD9Y zDyqyQHi}0k2eE|+Q6;8xV|U}t5}dQOilo6cG9eqk>1qUGHbL{tcZh-)jBW7g3rW5)^LEU7<=L;?G&zj7tX9 zOpSo(94Y}63VOkQM#is$~14G;l)h=5SXbqYYs zLi6J54?%!P{QnePcT`i^*Bz81O(1j-gpg1}4;>ll38701Md=VA^j;k4y(JJj(mO~E zosr%IG4v`OsR}Bh&dl$7-@k9Ix7L04ox9K8=bU>ET95$k1k&+K&NfKE24_F1PpQ(ZvzgU0nH`~-bus(FGCEleA!hbEF)MD0u@OtXjs=>G*<;U%c?RQfP?bDw}XHm5!Y!TUI8I(paG$311}UL5T=p=kKzE<%0}QUkTQVq ztd0W^pbC%W2is6nLkKGcVDTzanAagd3EOkv3wJAi)L8hs29jD@Ef_oXL0($`L=8rH z;SE42&?W?NcjAfzFu9N)QfT8(1vY>HhD^d>VcCM4h|Plxa^eU1dDUfpvTD)o+PK1~e0mqeH4TwBIvS4VM znZ$b)*bpRVB$Sar0)8Ad7y3)00E!7ha!m$)i9QfJLy_YE8Xt$lH~|qSK_A5nEX1l4 z!(|G%ZG(!Dr+66y7zTu*#tK?sfZDAO(lC@01m)Vr3fI2jud$r(pYE#}-AEuIW55ClACfgr$m z#jRl*R(K4(;9bEqZruhnV(qTo0qrb;j1_=%vOzXLRD&OeV%E^dTSKM+E72!R#T9C3 z{C}ZWJ{}27xWGf!!8(X(W_)@dWVMqF2D=00B8rWucin@mTD2fQRDv^^11CX0fL210We0Ig9#Ez@Z@`F zAe8_p3cyAgNlu-UFcb)z?EoQ?uuvz+G?)Gd$Oc-()q2Bf14bCLfhG~B?eSV9`6R%X zgeidv*Tn_JYY;fthB~AGw+Z61wh4QP$Odf^=BAV3`2_b?fHL>aH_Qp3Tp-g;4a0(- z){PG0RhxQ9fN}!4B!HE|KqyCb5F#CLzR+xVXLaYwMgbd+UvL?q4af=*=mB7sa>??~ z5Ci~a!6=1A#oex?7_hZgJiwY^Nf>E&yn8zYI53*fbiqZPECOg64lI*NK3fp9UNr{; zSScRj-T|4W2mB}qP$ZCa@nqKz&S^L+YZPR2)_>DIF59cr*Pk2>7KEA2iR0ky){((m zL_{hGSb?AmvQrC?{`Zh_78?fCg6@SHzy^Z+9}$H{6AnkTijW{rj0{8vf)o&pF@SxL zH;{oriw?c5a9V(zkw*f-6HXXP8e~v02P42+v)RD#PIMJ%M5|pt>#mr%;Z6W=pmC5a zEg-lOV*s?(hg4WpfaWT+3t)g@0Y)NdAd9@7o90GgAw^*4WLJQ=1LS22*cBa;Gm*53 z7{gU)=x7rOD0vi(qk&)&hRX_puf^o!ozwYY>oAg|cs7_C1Qb{bg4XW31t2IHbpZ&l zoBG*;OAs}|Lp%xtL{bDG&Ny=2@m|PShp7#iGzLUYHZj<$P2^GflzTL6nmpSPEkc(K z1G1TzHb@c5x!p*-zPAFXgCrC%Lr9zM@gOX}c)LLb2p}H_Xq$*UWEuhl5S{grRU~S_ z8i^ZLB(D^M>U=zCTAFQIUR%7nvyGn(&joD&1TkTPuu&jL8cQnV%NDW(QsRJD0?03D zT>gVR#ub2@>?)jAHWsAE1R9G=#wO*bg4{ckU9)hW&K(#o!R0i-=$)WL`iDOsrDfr@ z;6wz$V+<{TY~L8sB5n}Z(KzL;bg+$lsx$E;)L{xVZ{rV5!do?AI0aG8xCxwAL9+!R z$z9)_IHpA;jaZQ!t@#C!I94Ko%ZeaOct;pkJwC+1+p2*bHxch#K=QL~Iwv#%xOAhS z^lmFg7yt}r5D8lis8b-WPg)1;nj7Ot!U?ts0+V;Joj7cDAv)P>+PSU4iZEHtoqkWt zplYntpbs9GmMsV+F3n(pa#l{*hBc8e$Cum&HmGjHy+g>L0Y03Roy=L?E*_&pdIva6 zWR)vk9o_-g1OkO~0w4e`Q1B%!;;asUBhz$*F(S!1f%J|5@9@~L0dS(-1~k@+2TVx^ zV4iD0Xq>Z3yQrFTT#z(^Zr1@3fah8S9|3|haV(vW;2eVlbgv91nUXNpSs(&(MUj&< z3Jv1W$@2dXbIu)Dun~Vx5ooLfyr~`6*4e>IOoFxvVnEO$5d*&L>UJA|yJ~wO`GFeV zsY0M05d!!QakO~07irpc+Hu9&!aW(~sE?@G0E}=dE?sb%@{TwuNOC2Rro9LNWPpIs ztrbcZnG8*5#AD&lurQK5-cbk0%~WxUc;yi1fGAaZL%Mp^hNb~Wc6EL;aK<`|kjb2a z5R5Deu-I%Iya<6zDu58*r*qEAX8~{t2I`Fo(=t}j>U1!Y9$=8%2mq#4OR4~lgcShK znG>@x&PhZ9MjnB2ML>&`<^hk5c0`MJpyZKNtVGfpo(m}p*~CELI7l|mm9&=Xx)6&L z0KDJUiR)Sxk4Q&yyFqo18q;)VL1za*KRCr<0Ky{M032A>Az;O`v2ZBZ&_+Q(j=DJ+ z;ubVYz-z}5p>Y5QB*D{Ra80Cm6=($MN}3?a7+8rvN*}ogs1xF}d@47Ri%S5ZU5GB! zbT4uS7Np&-p`R^YFzc-@XaK?j+R4U2JgJRZyb~y?O?CoeNhA`rj0QR-yR)D=UA&Nw zK)}Nb^RqCNS%6W1kSR3)cf-53ud|I~1xeFJivA$rv1=F60)z2FId`UYXxK|Cd|KU^8d|Q*(2d32qv+mIE9`z-G{Rq!-}A`K#ay3uyqH z09Yl4guZqm5N34+I*=ch-Q+K}iu;ft9uS7hfDHxY3kv^i{OiW&Uxk0L|26+Ncl@*a zAMF3;x3)f>O%`2z{O|H#;_pj^^k3Z*$EqJfttI2e!H$PGGeK&^-%Dn+|0_rQ9pm`H z5h;c;J#11JdCC5pM*H9N_qSTJe0h*}GGI`-G$K~}UmEh<)GvSkg(MdFB*<^_rjBG= z2{W^#YIiP7G#dT%>G;d_-?^U(g+99<6aKx#{^rIK|NGyUKWG2@c=DV4f0}F$V*bK< z)3OWxr4ZaFVmB|KE$(4G<2N*z^frZmEHouD<)iF+@Oy5x*L2g3`k0;mE}oXUs*=zy zrt!238F)jH^_F+Q;X^{oPJgyH*~LJxG~bs%Po1bRd!H#P&rGaPfZp-we#U+DXif<@=BRnPo%mv;@M+4gc)j8s9|^jc zw7bt^gXN2#{8az=n%A71ov+i_=Lrp>O5Q3qTP^+-D$(tnQa$a>N&lhexcXsmgGSXr zKD=DW!g`}#Q){cXXfT`h)x=M%QqNWCg&Ar<6^~Aoayd#?2|uTjD5ukGfR)An$)w_M zep^l!*DIDje&pK^&sWO|Q^R7NS1Tel=lcD)#j%U8w%?nsPTDHT zWeT5x3G*dg`CRhK6WcP}?*fSGCH33bLh;$at)c!Et|(37wv(Ns*gKwfP9MK_11vKO zPEXQkBo@(D)H9Qu5$^Ux3nKleX#2mkBlnR}K42Z)Lb0LRB8}xC^hXcl*_oai?8hMO zbTwvI6L$Z&MC%Q3+f_=XEW5%{?x<6J*+Q!u-DR@FyPn+gA=PCrhdIs1yw(<1yBT*2 zixQibvQ!cpaSf@svTav3H~YinXPKS~#R-3Zo;`mu_wVHoeZ1VBd{?hVz8h_}ikm1` zwS$73-v-t^b=^G5*SzkwBZcYaVPj2kZ%n83@bXnk^1znr>WeNRcg``E2xC`;{n2l#IN8No61Jwk1Cc~{o;-}huwzL(u|hPO6`#R`V8 z4?R~|7hnNBKT~2*AMy?qUI#IoXQGFd!Y!tP%UiF5RC8xq#cyK^f}Nt=pF>&pVhv~x ze|gJg&L53EPi*)T;k9}3jxwL*RTLBAIn7`pn=I0Ddo_C!>Z&{03hTfIi}aLm!)$iz z=G8ZKajPv7atfFxE7lZ+ndy!Ndt=vpF~P5Hu~~9>5OnM8otxc=yP5p?P)|5>8fp_9 z8~R&^Mluv^Yz9Z8EpiT4a+K_N=noq}>r0Z-q>Z5x4X-t!>Ij z?OW!{ExwhwoEb#W@0zo+6`Y@hIu7=2>_m#wU)H@S8Hi1?E_FB*-`qo!p%12S=PW;NsqPRMAkl!`mZLm;cc~) zUFDGR?3`}@H>+t~A&7ETmz!F1iPA$JC9?d@IF(ijijLrBshf49Dh8JGS`V69^m*Kg z0LJ@!_lV1AQQqj7I_R=W=^W>H+Ikh5_rzamh4XNFRK;+PO&HNFT4yOly7E@59|U9U zhNgoRlF;pGk0z;e$1FA1vq@b_KoedMQ+8qF?Y%T!(~>V8yj$}f^0&8jY8Jd)wuk1r zqT4!0b2B{S^BvEW{S9m>EA@eHSb`>l8I~UReyfazdC%5XO!cG~f#3SbK`&e91Ujt5 zN)W+38)2p;qxpPgblgt;(tBJtBMKT!i=HA$@H+WZD>f`bAlSWylh)fLvgVk1*$yr? zJv~?vre!bCWHTo!b=W>tzD^Ph*U?8!P;b_J-^*f$O}#bmqY*~FN=4}bG^NG&X4=%tyd z`I0})=Tcj|VY6*+iMktI&cUbi$E;>KdlCIqmfqbJ2+_sCp`14RDfjQCr<;mmNdKXE z8TRtp&Npo|w?_zDgGbv#>{L>LjX^&Q7nhjxNPM6OBXg?bTsaXhXa&Ww(P zvJ-Lrlb#DpzU)ULyHV9{=H!#={Le(I(bMuRKF*3_26G$5(wYmJ7aX^SAxWT4GVWls`<+|p!Xhz~n^ZD|7CHbD+{IO=ro8&<=AM6ga zrKqzlm8YA;T52*3d1w%Y71~(YyD}@;nW>!MLij~BOWOpN9YCgP7DJpJw7t)bdRSAg zI;|!+w>>LI2MJ>Q91Yb_o<0#OB!=|FNGE>yySE%K`4sy$OX|F=xHk z1HRNav0~$bK=*=A8E=uY|XYU36xGlnZa>sCnV&y<3~~OHBvt zH7w;#Ar}Vc?{ACBR4LmTnOfw!bL5;#$-~E<)6X{MZI8Q9joLIl@Ujx@{;+t(o#tet zeHDvFLLhG^SgTyWT8Nx&JHg7V1nL~fMRaiAwg5s7fo}A+4d8gWUtHigDFYoQsw6>v!wfs}U6!Iks z+alV@GZK~l5w0qQ|z9ZxN~IYLKT zc-&fg#{5489B=DC`4Te4H0?b+MQ8h%|Lo{V0J5wc*b3r@Ja z^Nng12iT>Y<1Z57ji!G`KTO1!FJhf*3a=E7)IN;vg#&a1}zVvrYCoOi&+PNwi za#}mhglKbemG=yoTH0-E*Y+KB)}_iyY+p22%i;*EL$ZLS^+}V>{MilTmt$*Mf3qI* z159QDJ)(c!W%jmsu6m+GbB)^KN8r)7G>4d$IpIoRSzA#?UZ z{mh!L`DCVIzhQO`ZYPl2^S!G%$?7vbQ3M>`c*FCO^OY&ev`$^AlCZn%lui@`!@<7V}?;U#pRLOho9@ zvtP>_bFVC%`_RjGsH&3;lf?`87mHlOja*UERZrl_QSUuq*8 zSMqx|yL=W>u_qm%S6ahRL}#8hUG{F?|FO;AW=_t7VKG5u*4xx?+Fe)d1?}VE%6C(b zu#WMf`OU>4bq66-w3Z=`am+Ky?8pOm0Y8kAWl0Zx^FrURVU=$9D_`N2`IRksycMO> zrk_b)dG)OKYrF4s{=sy&DsxAD`#%EVZ~Dc!y@wfC9)6`<=#A$Z~2$X&2P^V!^i&OVzN{9T-cz`Ggeram0d&xE0tm6Q_%%34nB(MqCqEK9dSJMDql7h$&CYT_?Du5zn!4}4d- zM**dv1$|ql@Akp5GN!!myKWx;(;ffQ5G}jieh&Cxx3~QpXC8V{n}>X6;ja=nE1frE z)ql}+R?d7^yJ1+huy5ob$cFXezmTYIr7T@(FkHK{08waguD@lFqeX>`l#a*uFpm2KOes>QVUz zN|mb5SqHi{CzXC*y0x&>MTyOI4~8ubs~9Jzhiz6~(8fPakZw7H2G>i7L8Y}RYoQ_m zo68Q_VQsNCo-VzM`KoA54J9#$gYK|mX#eu^^1|Ss*6rohm)F{FMWtzYQd%{Qdf$5X+iyCQ`_w-0iu*FGxBSUKGYFv;UZ-zb z?sC0_;l|k3>!goeZRBdAhmIQ?w$+0ZeaDNfia#lf*Q2BVby99$=d}M4BBjz-XK~P% zVVF>IwYDqanmDQ>%#ng^J@=!~l_K)i!FrL2 zY-y%(723hjY-i&O%j3SBj}%w^%2NztkQa;cyB7cKzvKafizOX@w*HWpUIF`zp)~gH zubCyb_uNw0R*sv<^CU(GUWDmpI?$UyzC`kJ>$Hr0Xyo6S6}pc*;rl9Rmn%~hMK9zP z2+mqgq_L2srt*MJq&JDtAS=x$Jl}CPoE<-Ob=<()Uo_M7b3Iwvh+zV{mlcA)MYRfT zS&FUJ1@pAlZ#}7aGMFJJFh=2bw@@BG*Yft8hD_U}d}FT!bANMy&wlvVc!?CXYWz!r zu-FI*OEAa)n*4*dr9Ct=+~p+$yWp}t(1o=`)lVDaOT*bAJjmO5 zyf^q4T^+q0w0Hh#x(?lY^P`KpRx#FhFg7K6`Tj9o-4ZoM-x)~C+lQa3BI-C9X_n7L z#U!X<8b%Z&6po)k9fSPW1t2gcCG6P4{Obz^G+P8uz8 z<#i#!hDrbQt^=Lly8V9i{-Bd4s%-KQSn|lr293Jemp%r640y?X z_3?1M=&z=wY zDZlARbfW)nWzDIE0o@_&(C50Q{BCr`VbQCZ=%#b-_3d3yi7R&T&kcvtf{qU{iBqnh z-WwEEhED{_5SwT`WEWV8ryb?X*o@ew(WXiLvm)gg1%tx)AmY+yrC9UdU%lo#)M~9f zHi3Glpe^mQft!`h3uUK;M2pi7f3cNytDSya_k5Vy+ezZZ^_4bNTPl=%o_LzU)J6i)g;JhtzrhmJjc)fPq)wDELT`|@$(|N>=CHXz) z9n37h95-L2tnP9twZR2)JV93I6wS3w zTDSh;>Uh--EPV~}xw@7fH*&GQxRRlxkt+0yoXBhK9^c<7nnHyIjBmiVzZxe0)VT93Ltto3 zdmC(Te?9h^Nh#IL7&~Ov*t8zuoQ&uNIyW_|BstGJ83xl`R!Cc?T&F&)t9d9lQ)bEi zu>RtvQ&KO|!9w)z!tHr+@05jSrV2YUa_#M^UeU2`ao5tuwX z4SCB*9$i{)iU#I(nn^&_STk(*c@_OW%a8dThzNgQ8=_N8gHY1>8m~NE8sklql5v+H z^&GZJsLJ@78nYRIL0WIQJS1y2t|5t^BN}&NM&yV%91yg_=AiiBNBTc zuG|4!R#4*BA8fvf*{_!WF#U2u^;G`;ZyhOmIuuOwH^-ac(ep|-=eO9-6$*=XeCS4w zX_ad#H0j`j4sBDJT2&{GKC2{GT|2(eSSRD#<;<}|04`2w zriqKuh-JW}uK#cVvPH-adEO9|*Qhn?-8;gk4=svCt z_tHD7wu@~s2Knh#Q(*-x(*9)VvGMaC)vE4ynL0t&*eP=#l zMSCkd9GP>Pzz2;4vQoCV?8>FOYYdu*VF6D=vS_<+C%vy}<_f|iqsCs>AeS#*jnma| z0TaNR!?ZhpO*Oh4&Z?fVQof+(NW?0v5=3?-{pd%PTiZRnwH(cCbl(`YR%>MGcJRDF z<`$v(Iy}`I-&#w1IyO}Z4oSH1#L!^K)0>hn*UL&B-l|uecMVSZhb^ccX}wW$P5KeI zyRpX8X!tzJ35^;W5z9J@yI?g+v+tAmozZ$}h<>}RTkb!xf^GG5w|>$9%lNoK`Y_t6 z+8Z)vsdRN3XcC3F(>nF&t?7Ov-}{ck&iM^EemNN-TAOoivdI`$|!R?jZ#PU_XWMhjB z`>dR&T}IH=V4YLq2z{Z5sMMEs^hu-22*_mMQ~Y9|A_w&&Tk(^MVs>Sr%#pdDmMx>% zl1`;;^_T@)G(kGdk!pD$vilKtcav;k)RAyNbMu=&Oo&D~E7}SrH6!OYucJ3G0X`f& zC4A{NQe}@OFBQI{lOnCpIYhTc-9yA>X8i0$;HHqAV-Q9-#ad{(uwK835kh2*d2Rub zu1Kqr_7^YT$iF}8)g>MOOS+w$b?xrGM+_MimbPce|Y9e@Q?Oo5%nKV<jqa*4)^bg54ceNaxaZfgXWjmBb7@mf+2C-q&L zPkds8H8&s0{~4(Qn%R<)x3%fEA<^P~4;$N3+jovZwW zct!3@eJJL2>#skZ+cDHf-ug#ik~&O#=#MO@Du$v@z4n!}x|et44QoASKk%}1gsLUo zB`DG*>YFKpgT%%i5}3w@|GMvQLa{qVdjH6bDpQ7WE)5A)=R(Jg(a;k=RyXRdiN2z@vh*#n<1B>t@*{|wlc2VZ60EFXtDvJ*@WH7D69N%g7y`s;X9XL>wCB-;lJGkzIWov%-J9*Xr3BzVP@gr{i#Ra;NuIi zY-*P|n{DPE*1(zNNFw#RJeQleU-Ov-UP;3puY{;s&Q}jDbm`nY&2mla(19j%xGV>l=XwY(q^2@!U_ueC`5+{H zrcdYB_h(L`6fuE_j+a{xE{o=vx9-#IddM8Ae__G690J2}BsHjQ8n~;wACimER9=mo zcA>nptQKdqJsZ#ac}|nM4lGO|x?_(x!f;ePHxkQP2YaFYC$FLm7Sv#=tOSR>uMtV; z*v08cm3v*DN&fM##@v&nHvahb!VTr*JN?PGqwF8i)EIumKV0KY78B2_gB(ix`CG>H zd)A6$s2(U0Bx1`ei-^jf{?7Zz32t`408 zB)iG%-jlI74sMVhOWb*wc(q_5+Vu~6{Vm1*djs2vEQD8nFW|>isuyhk4B2}9Drnt* z(&n|uEIi5(_Lx>N%m#AW6`W>UXz)}wT4%%k7p)q8E*uIy;9Gpi$AG5d+eY&>hBMXa31yAa(a)8#LF!8z02+J7g| z#xnrJZ616v)o7^s9$|PqW?r{g(Jnye$`U2BF(CCs%9o0^e#YGK8-fFb0iS&hds>e2 za`;=}Y0wX$I8~=m(R-=Sg&Bruy`kV)c93w}m)!ugOLk#=Xk_tf==C;hOsfiJ)Cp#8 zW_e?ZW*vd+L3Cp6-e&(87)V}w6lvVkmSb$nA}~h&m`51u|H*_eYSdYjDTee^oDBmu zv0wsGSv}^3q0^OOo?$=?jb(T1j|C9mpl;mK3XV8&cUT^ zzwFd9ahNNJ8l zgu7W>irwMu>`3Zj4|iswtejjZ)nDPspBscp+J)C!Dx~(y|B!};lQJ37MYE5On!4V= z(~LyYLr&!fT6K98WuD6UPPmk?>s`5^*X8Y&ju4Y=x0`28oH7&o+zh%deCOze@P&N5 zQUo(MQI>}#g)cb6-0DzbPt|at zIjFBFBj9fpRm26}?*yA{(%be-mPv+B)2gmqCu1SY@sxNH{3r>CP4sor;hIVh@@1(5o#7+qqovEs^O1z#FeucOSQyr~q z$q7GFofmcCSyvC^5}bJtLR?0&`Mq4-eJgx$MyiONfKsr4s9HO!ytDk^icrX0*?7~V z*&M|^`@G2+ojIwPF-MC%(U$h8&b`saQ*7?F9hHbktaj8N$6xn@I9}j=(HgeotdHriAFiO2DRheaDPTj! z-G`8o6z~~`M%ir`gCQiNy23FplfG~DOM9bGQ*0lHjd{#c@HJMecH324!mMvP$GUB7 zG^BYI;xP7ygC@+Btm4k$Q(Zzjj9!X?A_oo0iSlD|PLn!dxGx-=a6qkm$c15LDhT}L z?t2O?|NEXs@Y^>E-~UZ8i}9|2f3!<|vSXf5wfE?j(Ifuq!`6jRBVGyG{9*W-%CA|S z|31S#Va0<9is<;FJzEN^n#{^W_{Q7Y$B#1QsMzDU-F$0amB)PhZ?Lo4q=j9 zC2G_Rtf(4WYYPYGdLjHvE?6*l?&qMYRdmUiecpzE)~A3A9Y!Z+Q4AbAXcZX(S>r>3e>ZEKAN; zkL3H4y}j%^j~-mAPM!wh@cUu4E187H!udi6d-nQ#S#dMrVN+6)<;)8rf5iBfAe*lg zn{-~p>+d@B@dzZaNxZIpaxuoK9hj$9{pCJAT^s8?j!a%*x)|-ma%#D!ejjP|XwwoL zgwjRt84AG5XcQL*IJ=AxD(N$W>K1>89mL3>mr)r#wZHUq({8xaZQ zuPzeE3iA88^hDCYIb*PdMay~cR$E_%^sQ5yI;*a|1?wGdVNB<0I+(phXqy8Zq@E)j zsIi|xw^w2&VS;O0LM3hNndsDw&ogytKCIrH`Ao_+zce1OrV&bOISzXA!Cxe5Z6@Wg zu+d#%J!mn0;Gowh5^~&P-KFbfw`2hspEqVzCZ1u45@$3|FLLkOkyk!@w_jlNI>4>! zncT#FRBKPnbVpkLB;CDLS2wy;&w-##MZM4>Qnx@@pJJ-GJfnH{R=-b!N5&mqNP5bu zDAF?Y7>ce9N^uT+t9%5LqsgLu_zmLqX~K8h2(-9r&AakI{F$Q6kzbS@q+TgLtUV=tgpal6~28$t*!OZx3PX;nQawjnSU{iF3owN%0IFVFP96I z`1C?;0M+ZRN#)0O!uH#?Wzfpiy0H7P3d|~J`>cqLQdjgVO_AUW>+w)Ga&4NANyqA)r zsUWo^rfND;k|Jpu(OM|dJsz{rp>X184%(2@&xsAJsrvXR+=CmG#!5j@uPvthvnL}a zHx9yw<1CBU9otI$v*pvckhJi^w3|2HY7+I@a^GhBcRM#+x6-+vLa_3C z)&WQ6atX$l_=jn4cRM~MtM%R=@~Qia(dx0MllNUun*^j?sw!1jY7MEAM^?UoIW^vA3YO&irY+U!CBeP2IW+E|63Shh zU;R7-DjjL;Q+3#$8OO8hWc^fEOiQhFYfH_}!>_JO5a9Z}UA1pLIp`{z^kQUZ$DAL! zJB*PH`J@W7WR;-^T@N6G6u*Zv-BoFSbSv(p=~nV+*lNvuA6nsG^~83$XT9rZNBR9S zZ^$=g@8|E@sQG>VBtb=ZWZ)-p+G6NcRu6DvuyT@vk`lN;k&`;C>B)`5t3G#{GNQPI zrHF__ihWYeW#n~PATv@`)55y(A3>SAPKH~fe8PLfJ0oG++>#pwaANce*}_w?gq3?( zThI+_oLMR;SlT))rluk%$3Xlqrv3L+bW)+)`BY-bOxtJrYvlQLiyuSLNL_oOd-i zN@Aj8vc#9x3R?vSx(FWZ4y!BrNwH|N)_286AB?kw_As!8E52aU^83@&`_*V>HD4L* zmYtg%zAz#{=5U2AkNvP46X|*H$HeVvk*#sYf15{7-?bAq8%*96)1%3yd$FcghU{tB z*6-$0QU}dlaJk|yicOS~g89ZdjKgnrzI9d8?q#_?`2Ndfjj1}%*O()uqAAZ=H+C`^ zteji&sGRPOq$$#hD%5#HN#^pHZMk=Wdy|$m0`Z%I$SCXvkTLchjRQXTB5i8br=t5+ zCo~4|%!nE8)@v@zI2oOk9~%u=Wy~!>GUA=Riq=2lBwo8H->{V*Q>)u<=FOhrd4jSo zRykFyG5PKozS!MvRw={MO(}7QJiVT;rd^2Kg`W3+K0oZudo9AYY+rV4@pW~3=>gi0 z_rRK5qef9Vk6^~CxS^pQ7w6I8qj+7s-Y%i+mzwtESkCOxhXAV$`t8%+Zr3sRp1QRo zFe0Of=^jvW;CEJD(~<7>@H_S_FH=AI{GqAM&=dWNWFrfgf=riNT9ww=r3Bgr^RVS~ zxJ_7^1d7UEfj6{hebsBTjHKx+&Pku)e;WL!nE$eAAahGeC^5uv!mCY&P$@|vFmhDi zUGdEJbI8$~5(iGLGwCz)ioUh6P(;;c!c-aMOlnO5Je zRKW!Mt;mo_WYt#1Xm>_G0zmr4A%%409(FGdeAM3o$T2hi` z!6!QK*E;C$xzr&f!@9+$`L*rFWyvfe1D3T9b7!=cVrU;T`0C`{pQTt)B+EySL$5Dj zG?W7OXxTFp^lS}q0t{u(Tu(Ldn>H;``qQn%T&CRb>IB}3s$a&!qfse%NxrWTi_bC* zSaEnCiZW7tk}9?AC927*Z(o41Tne23G4oX!Ei=-DpNxyej^$C5i0fDVjt{NOpCiWK z+B&YtJAc+o6|MSPsg!T1MYjS;aaK6%r@CF|%@H;bcz`ES=+yo$~o@QUesx;M`l-I`MbDvW?jLqzyvqsfoYVJ`gk7o!nA zqP_S$?w$4D60ph(I3CyLkdPyQ`I{r$07l1%)V${N%Aj!Li7l7id6JGOY`u2GIVJCT zL+aY;M)&+N1BIT`6w6FE?Ho9ssH3mv+gpm>x$Cv%{ha|p@7lz8pB0Ytf)2N-V!q5% zeO3>6$AN}aHMOVEX#9xY<1@UkN{@ux+?^ggI51*ne9wkp@r#xcIM721I4Rw$rfy!+ zk23p;W)`IR^PYLLc9CrT2jSo+)iMHWq{pVuzWD8Dz;FM+#7lptj!1@RF=4;VX!r@O zGVbAvzf)wP59rk3w0BXlC(>guFx&q7zz1(&ym) zOdI`lck6yk+$ysbg^Hkhd1+GLU$zsrq?wwyLM&ICG?06-Zn}$YOwDycv&p0hN0%xk zKgtMJKWKFx1LUy!VdMDvNzQ;nJQb2En(`hm!)MD;XT5Mq-49>N4U5XVE!Q|VEUi)n z=;gjl!h|d?)wRb$?aL(hGWF@^_&Ri&oSa6YkPtifWCVHai_>KSms*{<5hbl6o2KlblbOq)r5G~#E>vbbfKULUjLkEk48 z6Wbbb{F6~%lk7I$sqo~NBjp>pSF3{MtDUoZ#S2BA*;(HplZCF*?vLIWlgBeA&xA(E zmbD9GBe(m0g4>Q$!s%=3R;UfEseT+7Dhj50gPrq1@N?ybH}9+8deqHUSxf%IXTW7CT8n1y6Eg=fM{YsMqcm0-0%`5<2m zDaE^iuId+Ihq8XJQ<`!O=BVtuUT=Ng(IzaQWj?eVAk$zz@z|}_jBxA|bfjkBya@Up zn!eqeGQJ)0ra^DOw7NKn+fk$IXM9`he_gW~)nhW5_8q;~HKqAFhgN+*bg)!~6{vxr)*nW!Dudv5y zv3l0ns;CP-&BP4TXgMY<;mm(^$Ef9nJlf7Nnzf-bdvKiCeJi$qMEot}bgra#C0F8N z+GqVRSx@(xf*1Kp4VYh{&cPNKrjc?VDOz=5#scYX`SR5!$dD|NEPjlTUjR&*s z-RVX!E<5jq7QXC=+}xu&aKkw=@@JmY%O3-g4t-TYWKX<&cIxsH$aIr^qeTQxL(8YS z_nj4C`}1vFrVDp{J`><~iu)Q+1&!yhVO9;RJYWhRvd~30mYe{O>Rdu2JPigZsmu4J z$p0HZ4fAk3b=s6Kwm`gwwU$Rx@ILJ9n9%sHa4jOMiilM;iGIy+b#kLa@KX2)FNvla zAsNf+E1{`KD)1%VCw<@UiXXgW+T+WQu|CK|^dIY~n#jig!zt3;9pv%VZ(3h8;)&Xs z@7>^VKcD{We2|biD3fy{M_dgYdyve>7_=Yw;9~4!rUTgy?Tw8k6PrIvv9WIYb2jn? zE^U@z+Q~KX80P!rayl$*&;bv%ojjT8+Ev*nuaOk0GNtMiHO2bfbFYoqPp^KkM-awY zEvRA{%Gy%w4aqsL_hoEI<8D+j#-^LtmiArhYg+`ojs#iDKTsz#nU;B_5&KP$LE31D zF|#o*;8%vEmb%?4_%fRMQpE11;B>EUk(f?@lYcDo%g}>8hl%SiI(!X#|NJKsXUG-$ zMU;zg1oXuDp40t3UN*_ZMy|VbHiF-E^|MY%9hRZG0=AU+J!!Q|-oW0E`8UNBuEGv{ z9|HdwacW%EmfoV?U|y}9|Ae$wceFbb3Yt|R-?d516Qtm2*lOfaHp~>O%*~hB)A0%@ z7DKndT@)j>J}q^x?e)HuZRmpK!>W$$3NsE?X;0iFoQDTW$3x-I#ozd%Q(suBvVC+j z&y!!=H6ORQU3_8K9*^#qB3}-^8o;M7N^mv5yJX-_ACixW$X611@ko!N zS9!5}i{?UErX_IdY=o5^dw+#amO;?hcyXrKZs1z6A**|v|2uNM#j0e^ai2$K{$h1K z(L1^*n6nM~_&K%3szga5n}{S{>5LOwarG(-c>;y+eo*Hl`Fcht$JbHj5IXij%1G+NZWq^g3J(Bir_M= zX{TzU8AS(r;t42#W;Tsp8z?$$j)|aI9u888j?>~6h1pO)>`lXb8f!<8s^reZIJgP43fcU%X{wCG0_kaB3b0!}xu8 zkv|_Z0@Q()$|8uiFo>JfarS)`gj0!QBrsy&)0LhIf{cOv&xkNMJOQJWEgD35`W%Lu zQ6gu?Xwbrlsy5~p793FGHgNI668eV{noN%;u7PEIv8(xFLMW?aA1b=tcXaabO3G;N zW=gZ%-6zgs>P`jqVl1RB6L5f*A30YJw<>xR{vY((5{h@K~TQ`HxC0 zU`%5OQ;5D)!}0l&KGfiXe7W{Jv?yCV=?pr(gyqg#3dmwEk>AOeIm}eS)T$L*Cf3CbUD&U(Sa+-)K_mmz zEku>hQ);J?cRg=2;PA$Y*AwLj8I!}s%+{sIplf(cVjv6ivXU^Pf>Ky%2^17MZwe64 z4un}qN7g(jB&3OfrG6ra*(t|_G(1W4w7!^CnNC!U^XzWjqA4>fkV7*)cOR)UO0qC^ zMCsf~CCc-N_+G)|a*upAb&rb^AhW1PSlgErQY4ZR;|LM;Ei9RzH8E&CBeKtr7$s#3 z)Z|o*=ibK}FVxUU5$Y{1dZ#?x${2wHUaX%cTi=#;7Kaq{48^C;czlTC)mTHobgxAMR#f63%JWmK#1sj9Hfp}P~AH3a%7GVM6qD>0#Y^^8b zf;8DM8P)?Lb>?|#Xb(uX>EA+yxPDAw?ZI>_IaP*2qZ{$%?ZlU#F{#tbo~lNj8|>@^ zAzRY1xv^EfjOI=5S5Xc^5w)4?uLx}3Wf=L_MKpzNaBWq~yEU%6+cQ+Fec~db?M@?C zFvYg?5gg9Ln{d%6+`x3gFo7cGvigQbNF`Rh6|<;l`>)1HoF?uq;Im~0qo4V zlKREk#%T4-<@9jlny?o1Ys0ajY|*=niQ}TTC%fM8%Cb3xX!&9V3zo7p#tr^;buM@@wC#j zYMt&@$`9NStI5{#2pr7LSLs}tu(OwMVWi01#nw=o;DSSam!=}L-A$<`g)C%CM!ULt z?B>bNq>>kPXxSv+xCEHla`OCP4Z&k4GS*%792-dv?VPHq zlG5Xk8)a$9q|%{iQh`akcgHbOREz20h>UC+RVs(@a}<&R!SjeX!wmAX!PZPbNg;%S z_^xX1U8UmB5P4Cu5A4vx09Y<0J2%8TWUY4O>Fx7(wVbWI9#x-IzcHSg%Ch~)hPw;Y zCXFcaz;#$vb69T@0anSR|ns*Uk>IQTp>y^L+1R@MAiL9uid3qnki_+W(ta52G6p;Z%%2YI% zu8UC0L^o^5rOfBv4ESAJY5W9^R=HIZBwx$U2Ts?OMmx8zk2HJS>z`PuCmq`s7G(hV z95Y8+G+1cDPY@(Ah!_}2#Ux0?S@5pt4<8lrB?9=d!IWdMzXt1s%lp%4*EDN_l_00L ztxu@y5eh^&Se}@#Tzgxt8JmHMqitzilHmz28hkJUO~LWRm4f4s8fgA*gRFmBbb^8vj!;?fLJTA3>9WR1h-( z!!Y>4jS7gNj1L9_fWzV>T*C;oX=jN8#1dv$mmd&=ex^q=OQ9{1@c2F%@h$JLxkfTH zF({s~yGE1h^lsrHtY-q#xPn1(OKfy4BpDo65(tYh2@e`61uzIY5TuC_L`!mEgqFuY z76p?1bKgA|0-e|OW}+zF%_7&sN&vSxy7I3pv@q8WMu`ZYMRZ+16?ssNNJn+Ofcsla z8?mN?tMdiVbn-MdUv-?~D@GT=3{mD7F1;TjVzY6(mgDRgX|iu-z^_g&e#3H|Ra~f^ zYj?ZQ|8;k9)Z=Ms&C??XIfXIx3CzQ+;bIGoM=^^$KSmnVhj_XiJzP z>ZnIgipAbL7l&kov0RX|h2~do2|&VhDS6Kn2v;4fOQv`OoEQy>Y(rAG-383j-l%?ojcPvlkIZHT+Woy z2BS+A?Qcxyj&PwljBjcdc0h^B68l2AbaxMQ+pE3>GGI|WvV$?baU(7n-5sqO_+s8d zE4`q?(J||(>#EJtI-TEgRjpX7j_8)evAk<~y}3bx1mxZKXj-kc6Fl8zg;3kLlJz#+ z=ub+;S&&BMQGRbK^*)EY!sZHk@1TauO2nok#YGMoI2++bZT8q@E4{HqxY9SdwS7Y$ zEbQo&IQH7zm}NT;CcI2zW>)fSgE(b~D!~E;?$X#fq=Ffj;LfhFMISz-R2ynxH|(!d zW3Y7SE^~kwWTyToM4mW+emWq6#p8@OOwv}RpjjmZo-H2~+kq5eB!(UXiAtouodGAu z9ltn?0;Z&p%sU@F3Br8PLixBb#1Z;mF$FuG<=kS7oMP)$N}RGVV-dy&(GZL*DBdul zC}b8$d2p5Cfyap~D2hBAQK4}jBr-w|A9=NN;jT*qae1pOnN(Oo@kUlUYHWkvQt60a zd2v$yCO9+WP+B*as4Uyc`k)7+ruQwl!alP){j<@sS?DJqUXOtF1|s5v6W$r{?Mg;? z!y+`JF=6sp2$Ie9kv{VDsG33I!p@-(6K7@*0P$>rLF0x>C#_#3{n$L0WjD#IWk!t4 zcCOQTtdSMbi9>8y;SQKS%-NUW9u+$S0noTXKMw-}}-$+Z3)sg>eV_=;oW^-iF5oD*CWwU}&} z;)hPgx9z65??ZSc%cKS1L7_qL``-5iCHur4JWD7GBHy+>Elwq&WtYKW#}lIQWE_2C z4km$0WD`kxor$oVFWS3X_>d>xW)K?Y3O>s!4zacwv;qZ8pO|3h^qM&ecUZEa#5RZfJ3V~V2z|I0Bpk5ao&!PCRG|+%rN?bL%%!ctA zS}CU~9~OMEK^~OKbp~?_nA$EGo*+)aSBQM-$U>EQibk(-__md}nH3wrd>V0QiXa(b zMFj})8agzz6ln-1-9X%lj73ADL=$BMab={SEV5E3>JDtuqXUC8(a56F`(+Ai+%7~D zqedO7O3X-c8LNIha}P%mGHLSUEDbc$g`)(?qKXBE9gWyn2a3VzKyTX?T)Rkv3?HSw zEDk+@*B$jeGDjwTG4&U7k~qt0ME=oFkDQiOEk)rgoU(n2$jxoLd(`Dj$b@xL_@d+1 z8r0ZnxG5tFGA-E_1i_d;tP$>QZjOYrMpKavMWqAwOzm7naGn&+BqnxtM)Z<_2(Kj{0f&bWz>+wSeoMxyEGY40 zNd-yhz~Qf3!5C0mZVsSjFJ&Z1V$pckIe&^Y&azcy$PoOvtRdKv<~ zyEnV6R2)HM(16)nnAqzO-s4KG=X&ao0LGg|zbLy4qG`$o>kArBt@4GYdW+5JW}5B} zg-RvfcZ1n7dvbUTvC`u51&?>ICA6f4KzhU^fach^fm9Qv)!pow*Rrq8*iJlT3K6Al zy9_>(av2A9s|?yT&!)&WZSaDyoNE^t`#bgJ76p&&WkIx zC}pLfzH8Vs9@mdeo0ck^x3vVuaP8vZT42TPlGe8^blc^WI@!*bH*q^%VcNRA8lo`{ zcdrF$CA!hC6WD^UD?z-ensjr}(fXdt%-(f4)Z#9aunSn=x7QHH9o(~re9{$I9$j0> zdmv>?6uoC2-%`DSamv^oWkYsNUffB;K!{Qb7a}&nl;~TlW@cqnTKPJ@M%9M2p1bAP z$0OY`sd*=vrd86)yeaoiY`Lk>YlQqq&HafFIiBYTVjD$qVyPMZtS#nC;r`aVb zizZoGRfV$Z++V?4)Rp|AzP*a&0Ge*TN42mualI-pBZsB_7H{v^< z_SlMMY38|iOzz~lTFjY@Ne^)#mzzXZRV5wIIaTG^yVpmEyGGOOjcrk5qk}m^oy#d$ zSIH<{uv>0w)n>u$!o!fwJws+2BF0hKH(P@bHyER^>&%zUCDt{=TUGPGW@aADFBnQm zms4u@n^`VGvojZa5f`1)x)>y_SA&?Tz`i9}Rx==)5ghWJ)(yhk;8neecL#c&Uua!* zL1;a_WUS<|Kq&(zRaIkCX=E~nTuPA=nnmu!fxLB_+#8WZxDkUT>fM=w`$e@8%H^VY zVyP%w3|y7n+^TViS~6>qrpX-h%O6(_yH#`sG3iy5yG*3jva^;G@Idk1CB-o52#Yl9 zVwG;kWZb861##uFy6ZBfm|X(Z9ys3Gwxwnz$W%UOInm+B!xKVA<{Q(RUpp4-yjn+C z%{e=aIaWQ1o3{pb7djJnHW7TgH4`ZaBig&6vGUc$-CU<{WZcD5&ii{TLw)Mey?Zv| zt_s|D%EYCnJsROk&B}pxah=g`ts*wtC-TttDOaTP1F$V?{}o(Ph+80`i(mx7QFkMYPcG@ zbw+^|lxVXTORfmU+M`ZIgkH?mcXxf9^yO@Pr1CL3T4VBChiY`rx}76jrE5U%BI;?z zMV_FM7b4Yp#5xWekQ(kl)4GeNY`irP)|S2<-DJaBrK23@64y&MtAPZnn4VA~k>##j zmoOfs!Z}f+SSs+dRWcceW(-v@nqgzXaYF9S!scBu6d}!5@o^NMJpvT7t4wsENVN{T8tDPm+gr|ZAdwEvy ztH@T>p{*ve?;5Qd#I>A(UCVu^s^k=`lJ4M9`)jrhh*je&pv=3cH1Ar`*N(j@k(RqW zqKxk=>pE(T3b!`7sL`PHB`Wcz`q+DJR_X4}WLIdRK@iO46L+di%slMWv|b*%+QZzy ze!MB^)4VctD*FhdCqaUj4im4s@kg6>)zD8Dt>qVolI;%JVhrr%OV;Y0g%xwel4#;G z1Pn^_W`)7s4(%&-(XqWmIX3a$t;jjNE^@LTZU@Rn521*IxHuHJy2-@y&R^Z)-CG#|+f9rMzlirqZD8?eAoJmoZEa zI{94WEL!M5nz2P--eRWoJ{vr_uI$qEi1taDb*}g#ED3pH#JkJ3H&}KAm9v)v#m(GN zbyX{fb};E*2xqdgvZ_mT+ggU`hk5Y}&lcO!k0^E=zL;_~+9h4TE7FshPH^BsovE~H z-I-xoRgqsBGIE!lq;Tv~rs7(5*p&w$#1;^Xm(MP;rbAWnmque9QK&CiDMl9JZgq6G z+pRG+NwaHS*3QwHMcARayRK7m!<^v-Va2B^He9HR>d6U9Jy}g9Y3igil?0IO8P6DR zmeT6n$4}OV;^L%M%AvcRVZq)TXyVnxE*&3DmavHG?~9=zcz2}g(UiKUMtO;$J3SUi z(7}OouS{HA#l<0DddSvI)=HBd@`cxa7g`tkDau7dbi?~+4 z*Qyfex@Q(DBQj9yK^@?}q&8+oDd@dST?L02kmmGpj@x03R_m#px6-SZHv z6xUAhsZAlrP7FNN?rWGrX>Vq*rCv546UANeS=23I(oNIOoDs!p7+<56+gq?&x023M z#X;=|0*>c6??IEky~tf6D8Fu#QYK7!qxQ`#2o?JD4JfuLDPR%VNI?N(i#kXFLRB-}*y zL18Qf&s=n>c3z!^R9LCr={2W=Oj`z`nhBu8$`PjXZRHb|G9jlnbwLg%j^VPUTtLg= zAmP+$+vA&%nsl5So>GK4hXfTSqqo5BS{&;%q~`Q}M~8a~8A<5I^1RjM1e{e&tJ_=? zExnoDeW|8vE?jgqR84`&z+1$7D&_JWb@S!T(d~)k3lin8H>WqESOqJmtqs?n%)~8Y z;VUN8*|L=b*{0}VhfHY!)H{_VS5d?e;E;yxwIJ6})=s0LExhJzjnSbs_AUD?&XqaA ztBW?(4O5>nhqJ2mjYBEswyySUcoTazn#6jRbi6UklepFhL4e6()EhKAlJ)bG zRXo;%w@aNj(&CUFXOX2%*3j*6)Qx)kb(z4mlEtx^qc+Dw%!Qe19LzR5YjxiAk0(!B z-V&_F7G-mNrWKdQ(mdRG+LOR*I_C{qn+{vtp_OLaZ5u~AR#w&EWsS{C0@Ce4azSD3 zN^PvUwyIs^7As!rN~NM78%mR)ePP!O#XEPiTUbQuS62bBqz~CV*wIA&i>uxR*J{yt z9xnA?C~kx<45^f#ZyPzVe8xYP-_p}{7j|FPEk<1}=3=mBO&gFx?oLx-g>2nT5}0nSaUL+a&M%sSN&ebQxh1GhPy zPj=akpCnBq5_?jXHe!?uHWozGCudCiK<40c)6RB?)F?zeEOIcC+hYw!Pi&Adb)SScDEe+^1stb#- zQtekXTDi@oF6!ywS(i_Cim=TFyVSZvZxqJ6ueqpB+!fhJ6RL}K^*1I(NlTlplsj0n zV(@IPYnL3+GW09S zgxY)J?QPxcd2>!;Rj1sAImWJ+E;tFitrYc_s@uJMQ)P_cWv2rqTI$A)$;5YJ+r`eo zZ-uz`vQ2X+syn=fwP|DDRXc$UUN=J3bH$x|ATc`g+;)<~GM-jdY{N0@h*(a|^{&Z$ z9@U3j1HG{?9{NQ(613C0qs`0IRTwmvYjBq&MIe$~4bXLV9vwWkEX7a<9=x{=NcdGM z7j~w6Ufx0pl!pwR!;YRK2V$n}2AJFLC<)Mt;>edp!P_bwsknsp9;q0>Yp$AFg$lh= zx$&8e^sZAC7LbHqT&{-|R$w|NR^u;@sRe;)s<_W0VO6yRCn{>JN8QmUCtf{bPJCBX7$ufoZ@)a|sjMp_at^#ka zbfUWSisyFyq+xHhhp`;w)Wzl$a8Oa6s~+l??;n%ZBdW~09ZJgDB5b;)_G7hMeED?? zP8*MLPW9T~OLvnyq{7x`38LD~c;KOXEOOT;J;<_oo!ZW$oxK}?Wo&S6wYO^eXKmZZ z6MCr|=W30SIFi#uS4VvJW31q9D!tp5!57#t%6lHL=dRWskIiRov%rVEsE4Izmsp)i znN?2lY~Ai&?Nc)Vi#CgOgfB}&a`fWu=AOka?(2H*H@wRV#oS|;GnA-mPN+^)>TzA% zXe?W=E^bMh%L{=V#g1}q9cP` zY$y(f+dUgI(>B``wtB!THXUHvvj$M~*g6|F>oa8=Wo@%>S+nXe_s$x#ZSu{w`51r1 z#>dnc`mvoct8cUo==o;Z(Ao33v7c#-I@k}ZY-7;dQ)AZ6pC)~*H(8r+TjhXs&5v6) z)tfg#sjz&F(8l$c+om%pZL_V6-5WEln;kP}%Wb!;W)*<-jQMT1rrR%bZ1tOGt+vmQ z`D_PUV?M0gJvM4%ddya4+48{YwmRE0D{OqXtj7A8wylQxvuyf|Vz$}xZI701@0>F| zZL@US3SfF;ZpvnXw|bZk8{HtS~FP(AJx9Sygwj<(xu^lgXK z&rOe88>YiL+hF--&E3pzs14H@oecR6wtTS8n;WgR%FG`o&5GL@>ud@(ZnCp%`7l0A zVO!8t^2}j<(H4+c%-pHfPIh z8PIyz&s%24tj*}zy3EpCf0ju}zw`&FcqQO|kW0 zb&OLs-z;O~4D=P&$62)tLu%O0wmQvQWo&JzDYMqtblYsK*jB`hD{Q82jkB!TsKM)I zD`A~5R&A>=bUMbZvr$_Zt+r}2dTqC@y*5_Ooo8ETpx;*5^^cY}TQyT{jajP({EXhwhG&Ay)$l%&DPnot*8_$V-(p;+g8j`vW>I% z{+H+9x9@M$-^aecU)#SQ7r1%z?fY-H;CW|;LP9fVyEY!`yqvd7Ezb2iI-q)vlf)}L zgxk>@7Z9@r$m=m)Q+2H4yVPd5#KDIm#+%*}8bIhZv#On(6_qF@vmVSRTz!~DYR6r# z9>8>ocjf|5k~A-Szl(l=}b7#%4yrS;g140 zTvlk(G`KqVVg^1YKXjBBzSnnMw{lw;HdfDAQCMkRbUQGfH=eWTE;3K*c~GRXs$ zkB;%9(Aa?L6k%463E=|c!-*n3w zKY{s@5rKFm<7jm7t+CF6vdA>N?>t5CYKDPsT8LiQg1p?EB+3dTKr)*f;kM->?AZn4 z&Mz2iaf*XAy9yHHhCoQ&AXrY8$oC0dub zx~jHp2LcRX_rv({bZBwkP~%PTnph)@`-piyhdgL5gXB~ESwyL2!%4rJZ+X>CuLVu{VbZ5(-FsXG3Z)$ zuyjIV@#$*JMr5~L8BAlk5CR9n_&#IeK^~z510cS9M~@mH%^$>zkB%-Ipp(m6H(wND zRz~b7W|QQoct*yhWPyE+i$={2i75&5OT3Y)_9Pb4Wfh0+%rCFmWI<-F^aec+o4L0R zQQ`^tHn>y-{8=GkV6?~0%?jp3%ULYAH zh}F&3i9cgSSXw2Rw+IX&QBg-ex%Y~1NfnVY(idMzv}|r)u$yGv7io>M5%f0#Gey+$M2!k>^LbIL=9FSdlJ4U|H5g&Z;aQH+*Z;1j7`MxMvP{o9$g7E{eJ~QXP z5~D;hhX>e`s~WJXcu#;~kBOAxNpE~Db(fW?>APm1kr+VwsD*DbzAW+3`R531Nbv91 zDVRA<*H01ayz&Tj#75=va>+nQ)}Xe$6s@spL9SXrK%gYU;>$%#;z35V;b~?!WhA~V zl0;@62>as1w33g9N_^UG10n+cq3}o6?s`|S^S#feOZ8`6J3TNb=p}Y!FpIHmS^@-> zYXFl-0ibc`(DoH54q&8S`D%!fccuqTfmC=qo2fS5+-LZR!NP+{L z)nXv{-7M!3b$Wz!jVx|?4^dZ;*xsxH6xAztCsn;?&vQJ^i*R_4O%!D=2L|P+9cTm!Ng)i9ciWS`x zH5We}!1XiNm>t$JfhDz75`qQ{yXAaYM)y#JzQI;>-%XFR*p{;f^4xB8jvb`sg<-i1 zyo#r-;Z-`M+qH}pqU1fVP@)eYlhn=hsXesjKB1}Z)o|BSs$*lhyk|Ho%L*~U?;%NL zb<@1e1o`=zxXP&bVpi9lUD-DOd(}tcJOTF6w3(5l_$7M1@;Gr1lXXbmD7~gcT$fbj zavG|#iqX5&u1_sS@x3&_oxu;@9$}8-JOn&+V$E1XnHew`V1!}fpo%@@qJp9h;FHmm ztb+5K@jg1nWJH@FOnhm2-3Fu-w8(fvAI#`{$Mj2;3ALmJ!czC@piiGjiXGZ=UfX>n zmd!esP6d)>OZA*3nc%r}BN6lvDIi!$@JJkZ$%CRqyf1PRvSeT|k%baSU<%!sQuIy+ z*27AeA4CKdS|1o_Qp_N_L+vXZ*t<_x3bJV(UExdE2@*Z{G9$(iJQ}ltZ8qT3L*VAx z($Y96rb#BB1f?ew69tkrgP{@|BT1wwERwNK5{dM+B07;`oQOslKHC<) zf(Q;my_E(LJ`}X|H|#3ob;z{GLwW|mqhG^=qDBrNII<6mSTNwUiXdl#QYKxHyedJa zaKer)C?p^gJ~9g1MIKj~ttS`(!3Zo70~ipoS95EAm=&OGq+i_jUo=ur(n)@s7ew2m zy?zf7I#;7 z;)R8Q#|-z1B-S^0+w+>2C2-M;gDBhxUAtpzB9EnRs;jio^JVZDUQ)dF{m(qnM8Ik8Gz zP@d62lsaz6sC)pi_YbHy7YC?8;y}R=c%q32;zO9CV512oC@iv%tXgpZGe*$c7^<71 zK3znSuZq*wsx!%5&nZxRhRcj5(X@YURX9h0S%)FB_qetg0rxp zMGKFSe-Qv*p%CrP7M6|!3Wdo?X&uQui&RnKuojZUiyaVPGl>xeA9!|J3ifl(u{HI2 zyLTp?0(^o+N(F=+T84TZ1u|-q^V@V$!25?`Vc1u>hAzEH4sRf^-q6}Msf`g+VigKu zy1Ec{%PUJ)Ak3Y$=d>=((6(z^uDT1$o7oyEs$Gzt?X`T{W)-m=@L0ORL z-QK9s8f3F5DydnV{9b_gD?ZU`-Q=wFGDua2m8Vn3z0+<}tkI^U(C0ZZ+8k4+ZNr>S zeJJuqhLOh>Y?V3=H0`zmdw`y?UA35}w_~AP86>EIbP+U>kc_KbG06;jyTL0-CC$;4 zMHN!9?Q))bQpM_7tnQGFyGjki(c|e@u7u9r1RX^VW`TFk^Cx*6ZymwimN=y-X%Ri@ zD<15WRBIIq-H7Kyw%$T&d#ylGS218_pG?+OHEN_br0EKizG9zzH1^SB5xFjyxFBJ5 zZ4skZbhC=&=b6Rf!KH%L4Y*becV9f@<+w5TT6>vY1-=&JhgGKU;;&Tcl&FgdQoR3&t?YoE~O)N(U;_03>w^47h=PfD9gMx|A)m=d)` zbh2gSq4k?bn1=M7LDO;dbHN7aQRvYO@$nycR!AHO503~#i1vB5NraU!990T}f++7U zJ}e3Q1-_v>0&zSr4g$TOTpun0c%~BL^bPd;oC&iu^Xs97U72}vWK7~XN5vLC0+D!g zPf80UqClzeXy}N;48c(zIPi6);{j1(D3nnIgB(PBVeL(;usxg@3{)6cR45Q$rQllc zWdsE?8Edg&Ij#z)yzUj{0fY5s#90Sb0DNi2 z!)wK*@x%*=0uq430Kk*s*oIIt$hP31(zy622tR`R?jyY<&*)B7CFK4G_wO+4qt-@n z#SmEcU_LhZH(flnYR@*VTsKmxkRrtoz!*%NbV8Ug!wMw2Jk>EQDhTmMff)zMSsBT} z7aT;A9>UlxT*pR~1C3(3~y_#0Yv z%}JB*h_VPtpsqva#9n%Kk}qc{CQkL$FIwS=i%g6@2*XR^MMIO1N#o-HEGS(FQ@tDvh)XhUMzSIgDpu2ThRd`GCa2}v9>i6E(jnFM+wXgdjhFprNjG9+?B zDEV}@rI^(C$PHqeWgmPiIKt!DZzrDOB#SE_$XJd6@-JOzHZW(`;&}^enhqKZj0g-9 z7qG&xW4J08-R`|@iGyvOB~^L&(Qj$M?6O{r5}F!zU?}1grFFQnyDZ1R ztP@_1xLQPwF0Zj_#dzmCIvrJ+43D=2t>&+p#jF|EnHvOPBb^(u)OQxXw@cDJ=|bt` zzS@!Wbp}AhQFJjYU4oEqVd9{2_UvW~s0H+c2XA`)fh1?R+_5mM)I*GW%$-qmbTV)S*?b>8aFPeX1gg?#cn>4?-z!bic?d=}9P%D-_0* zL8lCXVe?I>5~^wGr6n1MNs%OVj<}Kd`3W&CkYZ{jD>LL@rm;$!FP-_ZE4eOH%V~K` zS-v#Vz8E0G#S33aszbc!p;a=k70(ipk_zn)pSV=^E6B>s^-ldQh zNqDgE%pg>f@q^&9b?D)_M&aykd=>{A!&H1oTG@Isz9=2T*p7-9#~&0><#`P{LU7)c z{Mj}WXnFLtRj)EhE_=cM$rCJrEv1w)g_T<8}gz)WRe1? zpEfys77;kRhbfRqC*KQkBfcZPtXnNR7o^~WC1p~9owz~ylD!1`%VL?Oq`nY<;~8hgg#|<$d?CPa%lK`&0;vfc z>JiYz7MI&2`rTNW;`~6!(Uu8lv4Vh>J$@}zL}2zGZr1m);LwWOB6k=%kf%`!L=(nD z7>vFfr$lGq1rBDUXzHgSX zV1dLRd^|CN$0F1K9b@ZpBbq_Sf(1qmpA<=Ui8ws3#lZ}Zj}rz3YElO@xJ48}-GU15 zaws#OSH-w0pRkRaZC~Ak=gUTKx7=;mcUUfR~%%J(lSxkoVhZB#(svF>|LZFWok!LMK zE&^1n&dS)Z#WcH{F3rW->fd*@=JdYAE3!^?wr(M6lvJkJjYT@D9w63Wi<#^lGA_lB zkfR$|y2cK}d0u=P$%&GPyQ2m^%jIJR-i0<@Xf)s>I$zRX$2aA++tfG{G7@SdFBfro z!l|-iwqF-9TU>g$&__{bZalBD_ZBXty-)5-bzqKy5)686-&G_kPRmD>)MPJeoez|^7?WsS)7q0Bn6xQ5j>W63 zv4r@eqQYy)ie&F;jE7if8Ny6;6*)+L8P#K{=G zNt{$chZ`QE3J*qygT;Zx9rJnfe-=!=J%fQ~4@#HYM$F%-;Ey~*`NfXSGAFZFvh292 zJd5IVUFXi9hn~pUW89I^KU$*><8#< z1@bC_H!Kx|8{$$?(AvEFb_>yX@u9Bm+0dzI*&LOFgaHT`d_aii5X0*!*goM=;IuCu z4LpueHz2H>I5KL*LGgPqJ0{Xx7+11f&QrvOX>4bLfYFO-zljt;c7_xZqdM)}s9mIz zmA_ERN7Y#G1YDZ6n^8ATetydvn$2rjmfb#q0)o;U7IN21jAk%KENgh7VLxC(70WbzF3i;W*Ngjs^%qiwz^EhO2wwgC|5`#nC`=(ZDZwkB^N! zU$7ze3*TZ_fM9|grHUJWT9vBbSC3|#c9(58PUL75M9Ioq ziIpeB2fnIl%|}8AMGQ3J%t>p;kr)Sz`x>GSvdFS|D8t@Mf;cd;$^+C>N+?K{edEyS z#To`>)si=bEuxuenh6Ivc@@gEJJvp>3guLt4Anj|+?Oq-ByMmza`Ik~V7}4$jF2?hBt9rQ2O{p~UGVV(+P*(KHz}~s)P=!& zLiX=lM=eZloe;GAZWm$;>oJD!-Q8Vt9d>2%aJbcuRym9?%~y+*9aq62HbSn380=7_ zZPQq!w>ueYs!cM8sx&e;nD!C1BO&cl8fcqctD;Wf>!-Ygtfez9+0#o(O;eIvcQ-9_ zoQ7p}Y~{EZM=LccXD1d+6BTamv&2x?FO|Dfso23PU0!0j*Ji^n2x-a}rvnu?Ha- zyr#KI?IkiG&39ad4HAT=ZUIlL4qujqHZzhC#XB1BG9sbU3!y_!oZf)j)!R|NyXV0-{niO>k9G-sXtVfMG%vFrETnK&icx^V=z>3w#>$!A_mR8LX+aj3F4vUCA2*y zSw@nVf=eYT2|P#^(x9Vwz-1Ik0-wH-xw>hKhc;J`PhEXhK!#XS!OJ&zmysoiF0?@# z@|%k1p^Y}t=m{+Nk_qydkoeQy7M2u85_1)ur-}q|@W>KjWu9b32SSIJLU3l+%Tgh_ z_n#~jA*L$awc^{}RO>NQRjXQZecENxwPjJ`;|>@{kBBm4ljDk}@mk}=0d#T1_^}dr zfK(Pim`N!U^!HK*eE{xeJ%3Y|$BH{g34=u>B24%c?k0jtjs1;Mu#K#9y1tjLSH29Z z9!ue2AZIs8EeWUMgG(+vV9?7q6uUT`k0qcXmPC;R5>m0zg`Tm@GsCf2;kz{Ib}rpC zCkKTg!l-gVR`5tXHhOEU#YJU@R>5JrzqmUOW7K!nPZTO)<8?;jwvfyjf${gp2%^e{ zqz{f14DsnoOqSShH_HM%VRJ&jlj1~BQSqmIJQ2lxqKAcn@Po&#Di5?nq~#ka-TLji zvII;jRS8YBL{S11$?+dFQ3X5{QNkdT*c2j*9}eT9BF!-JvVibW#u#Ccd%|Qhj%i3q zaY;-C94JaX5(UJsI7q;#J-3f$6A&p}{!D&pj@O3@EywIKP$wX=-O~Aa<8<Gjic%mdjIHE!)l0=7!0*dVu(84f}G;h`(x}8@ceHQYXsNEWN zs(e1Ox&+bjIEB&zn!8XX^y-4BQOtu_<~^!Dwb7ftStBu(L{uviasg^F@bgL8-int z<4p`G@h6&+B*NPJ#gXF5v01@L!1&W_P+(Xy%3fz&kz8h6&oM4on5oeSma&mlh`T|3 z0I4*X_iEt_Hde*Cw)gCIwxbY97dz;w!Bx4&OyO}unW}7fioYY3gP6jcJ(x0f4!jwK z7}2V#DLP#7o}4Xpc@e=Ky{nZh>38C(g=xILnOARdQ~+2&r@u(@RDvfh*fq^%8s^n* zP-~iq9>IX;KF2p=ShZF1qb4wr%kEuI-EiaSSxL++j9`(dUHII(?PW!Hhh}+j=#h0t zZpIs15mvLeY}D8`>>}0gt_i&AQ#KKRj_A8x`uDp6cUBI%(%o=6_jL4%vC7#vFxaQh z9qc_uR)s0-+Jl`x34)=^Zu_qH8bH~DT#n1nQ$cogy8#Goh1G>ad0k8Jfz>O;*d| z#8X@ZWlE|$eSBo(ZALenhphV*$x8!yki1+urNkD`l0(+5O zVUBiO*tY1opA5Oo+V=)grQLMQjPz8(FNk6=R^o@^xJ%&EF^#g4;H*?qG}GAfGBF2^ z!NDnUaEds7B!P&~vrh#8%VPjoHWBsx1N4uOpCl)cF6yNcVLLSKy5_GesZymDxO!0~ z?Fe>!L{WyEhb|TqU~%#;7~D#-MzN zum*8G!Y^T^2s4btN&|1w{EER!@47K$32$|?wCpD(jMZ>eJLr0-zfJkbE$1No($YeV zJ_yh>`x5I9d*_YqMLkBje-P;QSq?oMGRL@;~J7+ht@uI zDZ?V5iBuWio%#(JjNI5MMDb*m&dMWTau*RAa?mPf{YFXwMeGV9P7DWQ+r%?TCPlyBJ z4kR8Aizqe;ItnqF=~!32nX6Mu?CIyOYg0ZFUv4ltx~?nW>VSOS9h)G!3U>XZbfsic zb=r}8q04T0A4F7(;o-rOj0HlFlLiY? z^S2(EZ{(8kvr<^mR=yIoPYE?(d8v74*DDaB@zCna>T2YrwK!8b){bq)6nH`L9AH_+ zAYMM%JZS(~jD#*YWC7|8B4FzjOpzhP@Tf)1B*}wF$>WwGPmBr}ZFMw6MEy{om4UEQ zP~?H{R;ydXTKaHVY*m+(t`#Z9is(%EB7+Z)q;^;uS>xV(LgQAS7BMO13$hehZ+p#&{D=TTfZWQtT7+s7sj!zrmk z4nsOdNY;_F>#WHV#Sj&PYVn9w%#`^T#^XU3awUy%RN~7cFC8|@GV;hdHbGqP#RudJrOiu5y%&{s{wW-Yz zHD@iB4Gbs>YF+jgtZq3?8kN-K>d{;taf^2@f^|2K2#f39t)qFDSnqkZ#%{1focUJU zaJ=(l4j$MplYLR`yQ?BJgc`aUd2;6WBtg2ClIFC?b=q6paz8PkSa+5u8W|f*7r@i; zI=hV%0c>Efd5jXs)(RKhbd~oVl0e;U;S&q08a1W}ELL_cT~hMP6dsl}%H_es#JQW$ zl%Ya>JyN8+wnP;kcX52X0-Xda2oj>c@Q&)mH3<@$?>y?0H`q>1GRi|q`1pd)7m9`P zrTkDpcM>Dxg4P3~K=GK`(!x#;F-$>+-&1r25^*3NDCd7Hl9#jOO)4;A6b_B|7O*cH z80_o^c)KX9PGY7#jtYAp4k+ZX*b=gg;2A$O@?Ij3z3Eyac(1&lgjuEpr5sTlQbXcO zl{hZKJ}Q!uBEt94;FJ2k?*hRa{8RhUCqdpwWFA}wNn}_Ggl#`$fz#W#N{rm=89yvC1Vpk0piId zBS_~FCUV#2tiDSGdNnHu_@dCJ4>C|S@4ZHdQ%v+jQzikBk_}J_Q7iNd`g0kj_2HNtn2LM(Oe6j4vVu zf|6iF9mcgqhr+8+-2iypCJQXGVg!0TmmeLO@~P_#Ay$4PJ`ztyF+j5C)h`EUM{8G8 zZ6uK+hA~6xS4lqevA4zCxtqMR!-5^J)cHO&Ubgvy9b!N%R@n)?{5|HgP)J5#% zFB5ns&fW@^rnW3Kscg)Ra!za-d~om$c?$v!#>936rub z*FxII<;Gj#W1G5HyUGodv~|E}K2<`R%Z@FmvTEv?RHU{s4N(l|Hlcc>HjRp#%a&Po38bxuEi_n4#I)xl`b4^}V z=*r}^JY>0N6y+y0M-ZTR9t&MrJ7TtB&mQX9!Mc^C+{X#WmxtNhUYM`dj;YKkr_XS1 zyj?6ZMrH6XpH}5)bXp}TAw^OWLhmuirH*c0ncB?eDl=KvL0xgNR0{!b zK3Rf6c?ToaU2#4p>e)ypGC(OxJ$CFX$OQ+g$E?4_l1!M$BhA!M+`+3rHk#-=AAN*p?RNB zv&K%0e?mJdI$YqLdg;6F$HiPXeF94ybBCHUk5};{`}lr;g_SF%)4^Ai_flOJ!(r@kqFZ^?cGp~*T!lU*;qe8RM->s^dRTmtn-F~x{SIj(ba(`b zg%#qC&o-h#GQ!L_`Ec}DVl;9gpC1w6h7F1lXA)bZnv`_k+en=pTAZBX@~oce_`%g0 zU4%D7T(xg1j7kXYhNHX6g6Sbw4Xj>cc0tJ+tZ;ZdZ`?yHTtR-46%a_u8Sz1sam0sQ zWeI_&#*OZz?2izl3>=b0_u3{eme+^rw)|43C>Kl}%r>14^-VcUw&r%;9}|UP@IlD% z(87vAB%E7r3oP3VB8d6EV!#oHfgcx2ny@g0L57Gu=_n1F;F<{dKyieIS>pmTtzI2n zi^Wb~7x4#F(`Ab;K!uz+dr6F4!y{W#th_r~Z4V7t6KdVdIK#($2gLYN6efklH}9LF zD)89?l89SDfyAh9mq_CP_zVaFPmVC`Fk1px$HXmOu-*xK*7j9w_*ti3Tx%=0q$K;*3SlFQNV0mef?& zTB1^`Ho+dlWKC7^OHZM}7CgOWIu+zb*Gx4t3e=5y3Z!Gj!7EB?wIpdL#3;m?7sVeR zP?d~DK-I z+oBQ}I9!W+Bhgpq!QeDdb?j02xv~?g=yFq^T33;wSBIX`@(Z>n0V&HBGOMw&uW(nc zrOPjmBDkla#p@diQ%CL z$SZj4zPrUl#j@mg()rf0nRM#>X%2AH0&H3mCI`9`dezvWY}})^oW7NHZu=yM30VE! z{s)L$FeFN2=+IzA+$f-D*G-4WRihfJ` z&>Vg2ZQdn>9~x<8lvoeKvQJ_0F&+d&WRQ=0Q|VVTP8)uYd+T~c#@HfQFxeK6gj!ik z!K#Mcv1D60ce@)$*2-+ke-=vk@xoehiM)sMqQd?1aipyF7h;k^6_(V2Lm3B&JYnL* z&L9mV2@--axdpw?#7~3NXuhIo1Chjn74R%>J)~2;I1BbokY1bQ87`-b!gn_5RjBWT z!;U^93L{74xUlghk_TC0OGh;Ym{a&vK_Q_gsuc%_4Uy@D1prpJ@h4$AIzv1jgvN|= z;aXF*tv@8DO40rCEyq1d!3(m@tA_pT*EPcO+}!T+cYUt6uW42!peFNQtE^OMOW-Il z#*v939pzs+h}1l7c=1BQ#lu)om1!r^u!#c5_>q!mc#)ngn6fxwvuRsGn;s%y9rq!T zIcC8|h-g>E2ngv9tj%De*+$N1uEmcr%4wkTJT!bq#roTI0fftT;EGfmHbV+1!%4%e zDvb#i2qgGpBMmsC0j@BEgK;m43pWz8><=Ueiu>pT2an0>HA4Nc+vIvCyENa)9*71T#lKvH|fRq$Hz?NaAt*9AIFIB7#NV z5I~5NL&}Iz972vN{IqhhH|lNqq#(m};*i~~`i(T7;SGW9L%Xczcx8C zeke%Q3V!*aody9^K}d*=b82o;P%ty&4n-DCP?Z>H$rZ#Td|5AA@xh4>svpUd3y2`F zQXOZ4glQunLl3uzp(_*+6VgMo;h0{olU^TG-}>U%K?P`w$hXm6uzN#B@P|! zZ)}r=g#;z07)Vjx_@QsW)|60=IQro$Dh4vhWtbF6MHArgQ4u*`YgbtFeBYCQ?YI3m z`?vWw!%h2|H*KGP@+%|p{a@4gqCbTHrPDNllRIyl!^bT4>K0`zIc)8`bcj%BBm^kw zxSBb3ENICmaSc`qR^J;eRmQ3gW}R!teW;AY=^PygYO#?O+R$U0w4mlF`!qqafi&~b zAhWW&E2-v3u#1XRfA#Sl)%FcMWuq|m+HWnNEgDQ)T&4g$9uwy-gJ_eNcX5EQP?)lP=$<}D5J zdY0F5!rfBtm#nyPg|pS6Wn&uO3=eG?cxX;Rkux@ej_7QBg}UQd*oT%1I@6ogLj#Ra zBW`v<*?OD}`#Qt4E_KGq5&1%ZuM8;*jcV;%UVUV5ZaU?CovDYcZtqydgc2)Bmu=oL zb!JJ<+0cZN?7rvD<;G8q9v50@^!3kWDh`CZqB@oKg>>*5^b@q~O4T)jL33Q$i$=o5H%?)Ctdu&E! zm+rK>L**Be;p1!GV8|)_~tBq+Uc8Z*i;Czoo()3@X*MTDv*+hV-6P~II zT-~=UZu7`EXLYN&;&JV&9gi^-Ib+2gb(p&_IfIBlTv@J|wjH^s(Cj(UO2toQb2nH_ zms;K|TODMrV+l&JQHfsN>;Fs1z2@`8Q#Oe-a@T{l)t09hRTbS)_d;xK1*GksN$oYf z=T}7WjhL!GJWWHBW}%|^FnL|%Q%T^43MaIV8G#GB5=V%LQ|=enT=pfYejNk=bbp-Z*nRFrUrLxBFrrL^V zSwgK-C$Dd~Oq%UWTU#YXN3P0zZWjWom2cVGLC$-Oo|>NLT~~9qf=AgmI_b*MRrXW0 ztM2&`6uNPuy013;=9b?!QQBvEgLz84dUf^E-PmYa;hgo%H%@08^+m`xD}-| z4v99ekfm%)!MGz^-#e3&G-Q>A^pV9*?_t>^4%bXTW!C$MSpr8A9^Tgk8Cvc&M{e&F z=(t?U8%s#sQgHTkcCyGa?GEU;^5(lGFwG@rsZ0<|#x{hUdc$(!*A*(x)Yjr1sY@1g zt?gJH!j{$8>noqTGS%lboO^Z`WJI^TnPsL%YM3pq8#kj^Yblm*DOYDx(d`6Q^__Ej zonkmt?Crs>0Mb(%j!Ibiu_qA{`PA#Yywjpd-P1Q@M_Z%g9hP5JkzJ&{I;_`Y=L~mr z=WB%RuV(s@tQj>l^yPL}S&m!B0kd|&H4H*t-N$Vja7}co@mxlMa8hKaVfTqe!8P@- z3(%YF(+eR|Q8Z$9OAe@wV7Mg;LNnR5!uGda=2iq4P1L0$l%eS7 zU>vStbT7GY2|`}F6`i6(oSi&@cer5O2|F4zW~gRf1nai;J$-Up%Ht#ilJ{|K2VrKt zg6RTxt8$|Y*U38A8{6v>FP6G`-vwFrvQ{^EcDIH)xfvY!6nA!fP^9s5TvQ#{^jgGUnnC2?ajyC1Mq!i=tQyr( zyWZce?OXADk*%4M(l@fLUAQ^WT)b;F=qDI+-VFOqoB2rx6{tJJsoa!PJP1c9*;=1qPxYr zY0RzMQ9}*vn9XH+lV7@a&ifKo}v4JRc=3@(QweW|~N94O$ z_hKiy^7eF8=I-c%@yUWPt+}EqpoD@@xwabY#_i4$1p?)$UJCA}Fl)xwRO%EqvZd0x zy-mL^fpB=;&BAwfL+h!K5((?@tyha`uIZzGYQ;^5M`irAm8h|;#Kq{Tlh@X)f&k6u zQ-Z4QaG|qOeH-Ijd%30C)uIPxnXZ>5(iL=$F)&)yG^~q=Qw8j@_Z`b(=q>3`I)Mz) zsCI2wGb;ldvz-Za_C4H1Ugpuo*zs#QHVB^^J990@bL-)()W+;Rv4X6jskb~x(%_)jYmkr3C_#hxp{YV_&1xuL&#;exaHg?&OtJ2d^Eu=g+nt( zXON(V}|bzXpI)`PGhqlT`InnWG2Hu9%#IA!xQ@WG@(~7O(E9Zv=HVr zviW6l<0l=eyd!&Jl9s@F!dmw$Pq3AvFmBpxsbw2?1ps5&Bcd?YXJ+-EDjdz3mijIo zRJn%o#*)NYY{|@SBG$2FR3m40hqrA<$omrtsO631s#sEk4D`*lRnm%B-JF?Fbv<{N zD;RrM8xwPodgQ%|>X}DPbH9$GiC0HLUoGZlaPE4#QX?+gTfs$)*9)hxS4pos%vRnB zw@TJqta%?j(8b$?VsY?xJ42hN>XmZF8qOD(mRR949^VnHM{?}&?K_!FXGb+jv(EbV z{yZ&Rjdq?;iaf)BjD6FcSUVowT#?Kh)dzLmABdV%iiky88$Ly5m>I;2~)geCxMzRuDk-FLUu6*jQe(qkeJwqRL< zD}n6B@#R)#VwA}^UPK&p6N<_f@$TTU%~bXKhrm1TAX17i=~4W;eQyhnkv{`jA$ygxcyD9M#z} zGr8RRRvc~s@|{Ii>vId+c?E^LX$_=u@y0fViesfTXJws>YD%1LrWOuP*mH<@hMr3E zfwZ_SSaw~sSR*n}#{P*(#b#J3E*DNiR}v$gtOl|iywy7fKE~{c9%P~3=`(9?vx18y zWYvu5f@1k6$2%3~Zb&b)lxjZVd`exlN$?M*xh!C@*t3lI*L`EYA2ry-a6FSI#;|ir z=E>7K-J?@)Jvz6k;R{X#ZsxT22Haa=LM^>!c4&9Elp!ckFN*geI?dJT5h&8`GVbJ> zsaf2`*Q2U#?W-@5-pOq9g!B$+aBJPcz=OfgChH{2A=BK~5i)L>^%E+`aH=-!Z$<5Y zZObfn;OX$rx;MQdz^&D}QF6Y;O{nPH+J${%F#f&s=#!crN3oX%W zyRVRkD&GfAVUDWam4*#v+ZG)Ja|Chhceg2Cm%!#{Q(K3&CCszd#Eo!REM!g&xFudO zL1xxz;}AzONK(_p85Fg9m?S1f`XOeA7dk%rQ+P9aVMC*mtdb2}8hZ3Iy>*Ih)ya0k z;k0bQd~%Mm;&5uE zgnS-ZJg;A1oj#8o(K|ZATx+C{wB3~yyxkXo-t3&FZ4@_Jy=_^=j+C>|%e@`UoV)9} zU266n)LZJL#kCbZMeUQ8_QD%U)EOXzmNFSb`(AF+5(%BrsN3p)gi1a7~eF z5H>dGH&VD5>4~%{9uOU~rP4QJZ@dt|~- z+)PbMkL~AF8Lg)tmw4@Qr^)R#$!QI%Hsu{LAdg)XhEN!lPQ9vy_8HGyMBGS@bz4yG zOs(9JQ5zM?qamVIN~XiQ)ER8tsGTm{l{)p*?AB%T@@GJ{>mmkv3qu?4r+giJQNlWJ1Qs)grZu}C(CAe5;Ha*nZiR|q&ovisG%)itqHG!tCp6oCw7 z7v7kYIF*i=y{V4ZYcQv8Lr+5RQs#%%RWzvfgDF0Oqq@Q`1@sN>WD|1eleVS|zzwRt zHuUAvhh|gqc7mE?8xU28f*mpjId=@~-((g@isI#ij!nM1h8YD6@-3$yCG0UUY2&>O z^{mFsX^eCTB=0hVSu->d z?B>Z;>gbN`Iu2{M$?B$qxw*P8X>~b`t--F4s#7J|Cleg74mkez+xW5O{5Rph4L9w! z+xxAs-_FM0&Tm1#rH#E|CRWW^w)tkt!=YPcZCDkWn+&ait7h7nifqkUm4#ulw%r>P z7<{&R+ZD01QMSbmTV_)V+ij_sJs3C1gQIP|F{^CZm6@v>`_^Ffu%_E|W_n|1t+w46 zvaz-(WsHlz*00R1E{BHT{QmKjj;W`!ftSAash$p?+sZV5)7mb+2W|Fgw&GaLvh; z$vne@H+VbfH!9fvpZx)V$O;;w=rdoK4AVeTOIP6ppO&`Z5 zK;qEX4Qa;(gD9h@R8j1141C%;5#w#S{< z$ewYVj9qqN&`Z^yVOE{C>X^f->{2BW1RXe^3mA`s2oWZfsC=xGi6Ho-A48H6FjS={ ziyg#iLjjjimJ||w;WNh;cNLzKF!WEUV`SRZMa%Z69La6cmdb z9|6RgN#n=56t%dP0i{})IKoj-(vA`+vdSowi#AhoBMT&vFC1@;hhl4+^$aa9d2A3) z+dgYhoT+cmig#$dzmhd1RN-@!;kG;V{nFOybXHoAXLx6iq6vOA&LZHwONkJUEU-a% zSVzN&P<2VkjtN2+AMIhiAkX zh4A5GA$vT+jz`FdIADB!B#Jj@D2| zPzui&ii#fk%{aaBTXgJbcL(LEMNykFrNONcwo}%fG%0YKwWCpzk^B<)@Xw3qh6;$N z9R$#gFt{9x;ZVf}k^=@&BsOXF76 z%+$RJ8fgV5t0UM``L9<#_SiS%(d-!&JZE&e2ElbMahWd_I|ZvamHkF1GLwbU{)R(sl?Bn9m(qD5`v##`ry6t#_ zlJaQ2VbZovW!OU)?h^J^B>QfrmZ70y1(_E7T|s{4w>9Y5Ojy%O4(cgP8j|497RC!w zcH)&Vh=|Q%I7QP6-J;382ZUbP zEe)kpMr1cCq?}z*nx3s%_JiXBkhd3?9M@*}63NlAkWE@vQ6W5?K{8@NkrYQXfl1Z* z(HIP--N6(g)dEIuSjXgAo8FzdinE$u0b(Q4d?CrfGL%S$Kr#=HgMzGfQEEY{1!qWJ zgX0euUK5~-!a~D@afDCY@OB$X9tMf4-&IF^Nl#ROikK}_2weh-*+j>wzWR5>`Q#OJ zZBu-b95nqQWm9|<27EOFFye3?1%W41B=n7{*l{Pv7#vaIl9Cxlub!48>G`;k4!$cH z(Sto^7#Au|hYwO6gdM4_-mrITjn1-#W;xzT(a$fRmQ!-NED9{M;xO^?@KBbVV;huR zH)N1jx6(&cKa0Rt9|PB%SeQuj2;#(bjh08n6Z2}v4ip8Cp)gMmAzDvn1A=_Zh1+Mc zV~Dcu(s;1>pNN}DrI)6tn#Gi{gG?bwhrt^@$0PHnW{>2)qXUX0IO9qQ9I^4ZDLTnE zoB>8q>G`F6=oC)<0a;){vP@LRq?InKht|N8#aR zmP#o2*2pCFpB7NOS;S%H)NzS-#UEhNV639uL_|=D;^FB)ybG|HA}lh>D2?dD%-8dN zC%4NMFTJAF%DO3AuDFDzRP*vPm;~P{y01p@(NfTIZ)!2<{v)a{SybS$Ri z!p#E({vrrT6OZGjr`7r_E(9TILw54fwMwNsXEA=ZtyTW?m@JNw_Awq?8+K%SK-P{> zqv=(h)<#&!D9UMCF!Gs0u?iS5*|lpU5i|yJ7tC0ecbbu!MyFU))Wfk zvnH!TRjmdK44pX3JhxKcXmqNBK33hgR}8cl4A%__x2Tbp89o~zQssvAO5wtBE-a%X zjq4*?u1>cgriO5LP6#VyR}Buv_jU%irxy#$SGID7Qw}#z%IyCe#+?$Sm@x(6aJw=D^yMmGyT{b(}HiOBI|I z0f(e7?^NQtG(-#Lk?Js5P={qFgcpasp$~A4^$x{%^v9`N!m5${~ z4Ud`u-OwOr|3V$}4;oL$-z}O7M5%sUXFOL>6l7;d#FfY}_%`^V;1(tBA zg&S;spC&bccxPHv0mhw1Ky9|RdH#)y?q zCboSz@X@e5J%O!Ol@sQY5l6sbNfMNX7eK2qC*aZ~I!O!R=xIq5FkUZ1G_ZJO4w5{0 zB-7%+%6**(_@c|NE9sdcc#1UkZ0;@)v4fj5Mol4wh*YAdRw0DOIldstr6Whcq+Q8W z9C5^ld2C2U9q^=s26%92w?hE%&xB#(;53rxCsZ$28ZE}#8p>(1g?|skUccXBwS6g(Hd-b zD^1)78A6i@l1MnCjVU6mema6=`0@2xJ|xmXeVOt)2Fxw}9vwG1d?Sf6r`j@BUb~qg z;dHvNLK@~`?a2jwmdu827np117smej4<8qadWB$hB;quqLys6?!x<6BK$vM#L5AhT zNjPA%V$;SF3$x}#S!T)|9W(ceNV#IITco_p9lU0__=D^@rN?Z*_ z=r*OEhW8i5jIj9R97%&%-7gw8+>#bheV8VX7%voA$J&Rnry6I#=ngEgc%fGeVE|9V zsS!kk2k=4fcj4LUFYm&G%zw0@n2rVebTyvQiY|3pW0u7T-EeSUUwakkvym~iuiRKD z>&9{^lv7Jl7Q?eHT&m3U>lN(0$&F^sG9g6~Fugs_oFeAix;F00;mq`hFLxkEr3nv| z9L-(|SI^U7?Am!`=49_A=Ufo8?Gll=_^b;lDKaa^j7)E)ZC05xTg_Akm7*YpnpH6y zAR^2S&eg5i zu?*HPWf3z?oV^%B$Px^g$0RLbR5m_5YVGa}gGD~eH?mrl?Sb7crCXqqQEb3-Mq^)CBREl@L(F(G@pkR` zthY}T534G~)qw#Vr5LvAT)djy^cQ%LWAB0n&uMH>u4xsP+fiE>83|l zZ(HEQB_Zt-As#5rEQ8~`UK04gvPl^v97c@ZIPo^Vh9)79ERIw+ zVSAi_*TFp6`m(NUb)1+y*=d)njtCkWAh1L9C+ncX$`#;_KEhDEjCr#WLNLe@!b6Ed z@Wib22f;x~L{FZSrLT)f8ecGf7stMxsVUlo5M@uCv9(skA0k{BVXM4~Dv#y3@+`W} z9IYUEQn#YS76-$^Knx5D4n9O0P?rrDX+(hpTn;vaJktZxmKE@VG{`9Q(D<;8yl?6H znry^Csytmkuv-|q8I#3_bbOHvki}^kQnX_{YKbG>AHbhEBo`Nh%P6p*;DK(9Oo)@g zrxbxO&}wtj+|fvpN}&B@jwtvf90RyK;OJoAZv% z>k+|b;;=%mrx$5&O-x{TmB@5;B*JUkLSFr6q>xbJJ z-s7cFT|l6DG(?+rGV-2?z1}-QnY$IbXYF1)iWrH^(>NG)*P8)(cx0`fWudv5@Lx5Eee9wb*Yhg za&1^DtBowe;nb^v0NI_}XESOzr)>(!#5$d|UUySWkTj1ix}q9N>aq@&Y>{$U-sy|1 zSY!*J04H~gg7lLXi=h75;@M$aIQedU3cPF+txmQdyMs3{cZjKWq zv&?^Sf>3aHQW|_fX(ugQI}yQ#1qX>31hv$hO5%}VGD$i|rWlnOSVe@%+G+LsWkXV7 z#+~-0tQrU4C_@r}p~9PI zhT4BZ@nO7p_>@qW#+Y$uh%kc)7sEJ|uL<5e~@_MdKuwP4V%T{>%d_ZBxm* znLdIgQ%n>@4y%LqvBuk`a87ucB?dkNiQ?HncC=s@fhcX4Z zD3hsU^X9%Ii4PcIWl)g5Ujs!H9nHvzlEy^^mIshP;L!2X5J7__BgC3nLUqGm2N+%m zoi?MxgX`%Q$Wd<-^P6Eb2CS_ZGgy-fc4~N!CS1OmhCNHgvYZwzB=`wDab*$WNyMm& zGmw@Q5t1n|@u!Ujbox|rVT2k;5`Cl5VPZUTRl|7H#1J#ZO)lv8)1NAV3mZyLcytAf zp;)~Oj~Ri}S(WC46gQ^usMF#OJ|weWHr5bdX;>>G#R4{BB83CX@ZTAP4ARahMPTo7 zltYI``Mnnu5F?Bz(Lj-7YO1O6JK%QEp$#(ZgKDXY_`Gix1vr2=1>6(U z5;BsCt#zJPM3lDGQRFLR-IEhV7l}a5J|ampEPgBvVdkPsDkLo8$UdJWkEKMLCN%I5 zjm3tRB9CcA6iC36hwpBiA0iND$!K%LRWgM}B7uafsGva+UJtdnsR(F@*444{oz9_3 z3&h1sT-K6cd~qj9!Q@dPCjvq6?6S{`EUxDm2N~l=xc4`r@q;hmba5F_dUxoNRrGdrs+vuL$H46AdK+rD7LCQHo8ko z6NPbphDPQ*r#))jy@wH%=qX#&7^;~-YZlXCVM>xknmJ80rc4%r$F{;0IK(P+GLJU2 zLh4@9Ty5z@ApuH*d_<#FEX0KoS(rMWLqVspj>#k5a}@?7ixYddEMB2pyIwmy>G0~Y z$*J9(F>(yCj+7J-Dnhsr^j4&|sne)b#31dJRxV^?XdIJap(;?V+>e{5hOUM;wbs_H z#vPVO>NU@8RFvMcRSjxengcD|J&T>n2OODOb{1k?eOt=+t6bIauwdsL>#c1`)VjR- z9huPwSyD<97}mt0qkom&qZ#WUx(cJ)ak*ox5A4WjhwanPXUbBanhi3Dgs|QKViMRoP^X5tfXYxwLq0gLv4P$c>Qp%=RHQ02 zL7xi=3^4HiP^g<5$C1CJ4kN=vF3nG4O1AZnaD33~zBoI#t?c&QPED-3^XdyOK$R*Z zM5?BnJxWg&Lh*;h7ZR-Eq5^mpCBt5YVZb&-m&_cHd{Lype0ZcNqkb2d$E0|>w7w?D z_@;S>cex}<(($Xa5HM>kj&m`>sxPqJJUQokS4xHu{-=eqZVxz@46{i%QgO!=6j4kr z8z=+CmNwa-+Q+cPf++C>l3~RF&xQjiVTBb3B+#M2=n9$s#Ce&_<1U@FU*j9Kfr>`1 zSM8^}WxFTHa!WlQhFEwYVe3!uk5R`pO0S0!D$f=|86zKH@KT^4T4`1{W3nN>Uvh09 z7$xMmb>fl1@d6@j_~?00>ae{-g_}>S?*(hvL``;IJ_@KfSsMsyX^pI`s8@p7OAjG% zaVNnZDCqd0IHLl}N5RFMUN-Qe3&zxzQD9xS@i3<%C@&b^7hj*&3+A-iZ0BG?MRX6&ljT=8cLiwZ-s$WcLB9u=5!Ei{9dx@=Efx?=M*UdWNm znI@jm*usNZkRgdNQDnq6l+#j;(wksLF3}iw>p>PvwpzDMFACcgoqlU;6)mmKZwo5A zmRsPvGWouzTnmpQ>TI`ysnXZZ+r>j8)6c7Gt|D^Uj9HXdHiNlW$#lbF;n4=PM|Ivz z4*P5BddC%SA<%6kq%y^3RknuX8`;8#aBzfKP*zihW!42PyOJd+OT3iPcaByY5%hKy zI_H~N2G#`!$%)uCcLUaD=US4j9D&-5B6?^k*?cpL7fjvIP6?=^)z#Okv((cSn!8j2 zX>?23QJvvZ#`HI$>>`l7iSo-i1Ho0dhV3140>fjV#t5q2f*l85;?7p$28)g^(RrNJ zW5HI2tg>Ru;9?2p_2ANViq(&mbp&(Q*KulP-0`T*QmP2maz$sj@$ty%wN+rb(m*MQ z4>f8j)3B4f0T*;OFp0w+vOViirl#7fnrB(kmx?tg_>IvVV^Kg+nB0i@QG`)Ic;7dI z@rERgIAKf9$gsQ}l9I#XRDovk$WfefQ!r_a>L`NSMaZr2K(~O-` zH#@SMaL?If`1~-VXHnEQS*sWCvX4g~xhN-6VcpglQR2;IktdE73`UwVNfv1Ma7bOH z@k2+NxFqz7L(yqTAP)tEf;jO(@njf!{FFQ>vODYK&MBmascPn|J{96a>TexS!@Lp0 zHC?e$Qv+qMX&V$ztUEr1$f;oZ>!u+>sm5SbGtt=!?y;+^ zh-+Rcgc!{`p#7FM;TND}J($gDxeTbS5TvKUWEq7Ej?=}HBZEUu@dg;%knnvr_=^#N z1Rci^eEu+;54d$t$4lejvGD|tMdE^_J@U#xzS(ZuQag#n&ZO|SM~q@m6K#?v{_eor zE5ps178egKIgS}TY|&zsF6wdPFm@Nmk&aAn!r)&NUgSi};{;@mi4Oz^7*HAu#-9|8 z7>}v2;y~h9{4(eZJ`b3r7al^Oo1EvDHA5Vi*OglS_z^8z7s2J$!0J-k!sEs{QZ|^| z2H0+&08nY74`N+r5I##u0T?p|9?5P2k`i)lz!Vn2@gP}53uBymTuIREM){Y{8@ih6 zcThw%?$%oR1b%q7;rPoBE*4%Ubx^gPL*o=PG{xJMd%6OuoP zN)NawzmJYQBTNVv#T-fxBKgB1nJsZ(t3nbiz>-p;I3!(MLnG-e;l}hz2FV{6W9%sQ zbJyjBTg+Cu-nX|z)^Jg(n&lOB%TX)KZYUV0UqBft<82a`2OfaEFpw}{po1e^e2WfP z)&yul#fFpP4;CfyQb~Ya4nbz{&x;!*+8ud1$&34pnq^7bL%1Vq4y(MnZ_dNEOxB8| z$;UBSBH23*+Jd`>-BB=7ftWa(H}LPn&4%8|jM+D*!Lv zT;?tw^a8$-ur(hM-&rY=nyqHrL#5O+9WP!aMFWp)yXDA-otH)IQ#!p$+bQks-JGe# zv;hU`oGsaaWNG@dsZ6ZcF48xwyRBiNWLAmlki!s96E&|;vq{mL9V5?c7CqF7h$1RO z+@x608CKD-e6V99G1b_B^`7G@;?YThiU>?#((s37V5jCCd752TL8#7y))hqy5;LPK zNlt{8g>KTPG+E@<&7y2^PftXFs|Z|qaywe_j8lATD#*Gj>5X{lUT3OMgpN)wv~^br z1{Y{tB35>Ha>6;Fsz|cA-N<^zp|oj{V+6s~n(p3ltfbQ#sKb#ZtJ`m;oM@)2d04FG z^8tlbHsMaeGl62LDp!`vJTK4^HpFcv#pGFX#i>wX!k{vX=XVPlv##7)^N$sl_Viwj z4-lmY<=XmUGo`Lu%d%>a=(=JI!HlcD6zt>CeY0(8JBUf7+m(Xhj|m#I8ieZ8b zve+|HffFuUn|YG2cFlQkGmjjP5OJjmY2)t?PBeTt3$u|89|7z|9@4|a$tf6FMUR~p zK#v|gvGKCLI3bvP6@;I37frP$h&|%MLc2cEfv6SqHDwzoD&f{0+JYE}sAt>-pE2d6HsvUEIa)|C@xmk#HYRwAh|*0EX-1tFkp6m<>x?&T zp8Mc(FtUy?mEu>|RW|dWIg6Bi2Bl<^d`3Dg+wm0$q(~v@(Y#GR5^MRsDN|ZT_+j#C z{Bgq>@Rq6chMyK?(rn_2IOC)41X*PfCl*A3MigLP8R+*b$&XBlvCEM;Ea9<4jo&jP zmxGO0(rmO{W~8xghpmNqe*+F6QWRoi0z^p!3PKMVZP+n@Z8pyY9WBtH`{N+Sz1Tez z-JC~3dGHgwBm2jLueBUoy#XlsV|>`EHjuS124-FfuZ}9Pr8V09PU%}@L13>lviMR- z^rZ(Gqw!++v&YyqXbSf?$6~uM0_i6KA|j3?&K1E0pLr%SO(ekJ?1ZBrkA3Zl!Err2 zlkqwy^*f9ds+~(0DGZ7%)7|PQ<{^5z1c)dsby#sxeQ5>?lTz`xC~2@*YRSRy%PWT@ zNPuiwef5Fpl}}0|4;*+jus(zoAnyyUr40j| z4kF4VheG1_?|VL2bW#%8mwTUhJ$JT7Vo+V|wg%Zl7`uySD{%AsNS0~^xr)sM4;BdC zg{v!jav^O&8`yQ`W#2u3yGiM8bpc+iUF}pu!{oZzvaF3+n@GuZE0UxYtZc~^3RO+f zs8j)a9a*!^;oeLxvc+9!QVLB!P%VZCrn?Bj0?B(=q1<+@I`tblBtoL+HuU1-NeZrF z6pL!KU3Lv_$7Ms@uwEpkDi^)3-sH@|xp}jT6a|q99dE zP5XMBSy!geLsZ9@y9lT9i=@HQualNt(G1SEpjN~hgw6`yFkQU6y0>Qtt+%NR7_)QM zA6zGzqpPFI+O%l1(!E@WQg=noNrr*l6YOWC;npPs!RJy}7MrH19o)BR#~kXFGi;fW@CnoLZWFZcsQmZQ6HegEF^*vg)%^*{pA!*GE6O(Qk4`PZjQ4ja$h#ze_BL8_<7;DRz#SFNhTV3is1NTKJ4;M zTcwa-Rpdz}l2?qTg?-mzbgXT% zF!kb^Db)z1c*DmUeGqWWi?FlfEIP|1!Yai?2ilf!P$7_yjt=GHOBqCveeavSO2gc{ zH9}AsXYAds{W&F!q`>!RzD4g*ne)H5KpXQON)HbnBrb~W+BG@^y^r!nB8 zj}~<+4*4uFp!N%o6dxLKA&0dxU}wh?9cKo$G z@7QT5PU+UL9CAS$K1HGrtgDkQlq`bF_s`254C!;))6^6^C|fpHfd!`sou?7X;J<8V?nsU6bD`L^^?rI7ztR zy_d%(UfIrQX!Gma9os5kN)cz2FN8@l0vU-qN`nG}#E0G&5*QOHAmV|aSeR+Wk%XQJ z0Tf($Iu9Q%UT%_k?)&YZflfT)V;BbA%sRJCA#y9h6-5hr9 z=^4Auu=aH;n6|3Mq!4XJ74EVwae`iLRy=1L=~b4p84KO*9o@0=%qM1N5mMC|V{nEJ zMzUFvTTZr_q%kr$%yrpOtXH-54RQ&@qQ*(bZCl5x<(&x;%Bi_|*hG7o!eA*CwXaed z6>GYL)hUK@VtIYf+upLQS=k{W+gFnE49FI?YpRVI%+QPkTT?Tj>akl?srnGPu{A=ByUfwKhlE*f zqN;DJS_*=3skg^+tU*~~`)+6sJquZ}K*pfXCS_He>qUgR)mGQC{M@t(fSg=F$eEFK z2=g4}i+#4l6jrP_wqWizxs$g#a%Tp(ewgt6qjD^1v5QKzWAU8zwTPK1RknudcnQ)L zPTk|hAr9_Ly|k{{S#FwiVb11~@UxQUPW(nvUkKDDh2p{(fbnJtWAj)e1M3ChvfA-{ ze0Y*!2it`W*i{?55kJ7 z6$D|1o;Zo2X@Mmmw;(U7A$h67#&47_6h`on;>IJFWVc~9C~y~Q3_d&M=Yp{|N-)ON zd>0FXwC%elR{gk{p{<7|gAm!^p8;Cj&}rh!B%s5K(vk2{p(Vj-F@g##keG&XN7foV zAhLrRO}8m{`MNESh;kdH86~zImT}@IGQG6#(1dKSigPx}IJ)37C{IAz0|OR(aJ*8$ zZ+Fei;Wik?qC&;>4nSoZ$qhL`UJT;OO2Z2`VUZB5C{e`2;Zzr9gJfJ#76%$!JNn%w zl_~Qk*=|DJN~?}L>A{dfNsSh~ek@xlVq$W&CR@2%xS{I~>0Tfh(V7q52i8;gek>Tq z4$UKmOqLb_@zt%nEF`g!LpGA!OCl$d>O2+&TqPud@QZ<-G2Zn}RMZQJ_?68iE@k5i z!HuX-#OuZCHj#5+K+4~BuDi{UAz_{*v*7iMxhyOOc?k@PFtbVmi!5y^A&rN8!W5N6 z;b9@TmrxQi0ej5W(|6(t%DAiRZrXMiIdJAyQ|VRpEDDX&ZcHCaH5Ixo*fX%&fh~mc zMkD6TW00arI4BRSd`J*scKCKgQG71tju(v#i%Lm}Bw)+}NdZ?c1~w1tQ}2>`T3C58 z?!@99%uJtCVkC-7YG{GVV)mW$r4E)-TL|JyJ_^K`MUp7H3N)j^?p_`dgDC2TPcD?~ zmqmxsg2Pa-u#bx*S`+)=b0S2*x%}Z*96!i9DQwsZYnMi@8&44X+54+|W6kM7(QMw~unS(3|h`ejgp|2vFZkjf1hl6q}Qq z8E|F7oa&{Sgr0Ok#w{lpD#;S2R!q0;3Wkdu6&^1#D!Ci#-R{6~u>B_yb&~577Q}f| z-j0!*w1Zg<5;mo*X-hRRsuEnzwJ=>LLR%8yV{96!K-_%u(`xs~8ZJji)+XPfcMb}~ zt52r2p=Jehxka0sP}IG$LF)^hK`!4HMHaxtACCKwag=N>%i&v!ZD}LWwP_5JXI90o zR4%4$9_gL6!eBY=$twuuZS6SfEYX9f2fBs3fk6x+fTK&A>1TIsl(I1h2V=)5De7T( zMF$yf8}Z!Ou~%yrWmhqM6S_iWEar_L45%_R#s!^)+y@Rpay=mtHcaYtrHnUov|#Io zl+?mPlG(V+ZQVRvQ73HXC&E1rl%_Abb-YmmC8zbvUR6@yOn2eEI`!D z7h)uxEgi2PcCKV=3n=eHR5aJ4&dw2ui@PerBX`vlYcht_sQ+A1sCdKY5JqlU4RwDxsP7=xGBt&7P{EgG0v zxL~)%n07XPHCeMZk1Yhh z>kYZMa{!vUmPY8i^wmjccUhq|mx0@XSh%TRU2fyryU8|Hgbz(}gv)LBP-kl*4fL{} zW5)7lG9YUd-H7AcvKu*BK#8Fv<;JTft1jBrq)iqWwmQ# zJml+{E9!5FRa?DkKIWSG5w#rd$c(;I?M`Ttv66}cUIYTY26;$VmTL8jJ$%B6vzv60*&Q%96(-%^3bVIGj0)= zic6dkNK;ht;@x$CDadwP$MrpNc7&f>KUMb33v&sm_2B4_5Ne+0U85IJa+@`HHgze^ zsbE1dV@_eK<`P+XOuBGewQTjmdeFvyO)c8jvigkUkrJbW39(oB+p`3v2(3H7(1}XRaz+nnO^M> zq~qR>doMT5N7dO=W_30V3uso+JD+jK8<-v?y?d2tUPvu->#FC_spDiqub#@*=q1;+ zuqU=FH*rYAhMrYSJhIkq?5f$gL<;rLI>L^^(oWwKY3PeLQWr$sRF{=D4(qnwNvRr| zpJ9r&=GH3Vx4IzHN{!o1Z6OxX>l*PF+U~7m*iBX#R^MiH*ue&2RJUaV+coUgjB|%_ zqoZ9`-WT1Y3a(LKay)EowlRhoD%)~TjWk2@()9G}&G82ioQNkV*r1Xa)hoK}(4>gI z!gZwjE9u@cT9d+T}gD^+XL8L@AF1{4D(9zw@Jr{-H9XnOjTMd&$OGK#*-O(VZ4mV-7uX6@vL727Y zS{CU%M~2`k@H1$#538+u@<7rWHEtfDcC!V@q6Wm~rY*hhW<7OFBurS9N?o9L%1lH* z2RON+B}iH}Ev*d%kd(#?zP`j2_8wq!iyYuKwp$p3>K$GcwTHW7w~sE?#_`Ii!de?U zdZ%s7=H;D3UZ;n3BTj8`$0;#HA>Buya8v|rgJq4d^QFAk)Q1|E!SbNcZwYoCj5?&G zZg@P?b37cluO?9I5Y^Xr651WRqmiF(w~-r&T5ocx^17TxtIb8;lGNO~b$FVQjH|9C zmb(PWTQS&tJBa6U@#d^mRD%}I%H?pzKGJHn96Exd?B!y6>s7O!bV#zkR_Z)I$OnobtI`s;r1d>{~0U zh?}-Gwa2AC)}xXgO~n@B1f6}4ILMDZ>~*S=1d3Ios-c!g3~3_ytTWVH#YeQuGWhJu z3~>n*OY@t!(v+6=i0*SmyOTFUG^i)Cp1|gZqZ=n!(B&-Qi*uCC3&yp+u8muwB|;`9 zI=kZTYq_SBa<3iDyGH{c_8L47RH?}q3J@(?Hyt^hRrKjAl=*1oj!w|7%fW(Dt}L^q zO)=Ebk8256ZD_%D9G6K&+orQhmKZ&~-I*Iwx|VDXR%x$HgB_qCzbh z$$```iJQuTZD_rlS-A3ELPud69KIH=tlDXrHF7I^mOpV~D6gz#P^s6Z#C3qfk2+9D zY*59L&X;B)GN}>Ca+`eF;VVIRzQJ7#+w?n`Cm&XGwQ{$Dkz~ED%AL!#IlP|mV=+*~ z`(8ZeBCuw>mB5-Bh~zn_S|lZvIpu}RZM}4Q>S-Hkx}f8;lLHJ? z*Lig`q#`>>;m~+)W9!Qf=#^xgdu@u?uq&I@O?$9vVvu*P>64r<61?v$aqb8V@^K$y zL%miF4mLK^gSG)-imn^7`aG14ad!u0W@y7uVCTHX;&I+OR3Vq4c9kASQ5sGuh+tF^ ze8b7MbV;Q)vE~F0k=M*}6+(#BSC)xu7Hf4SZ)~?$id(ju?Ca(-orc~yDwOrHRHPA| zT{Cw%TpaUGVPR^jPOX|rTg_t@rxjjXtP=Na%WgNmz?Gh@p3R*(E!&@HWzI#Da%V@i zgBfQO4t0tc&CR@|vj~mm4XP+@IHFIcE2~wB#aRq2UUiJY5Lh&gZAl@Y4SrHf7s6~B(^2yyh!K;VQY(+5wCcbtS%s5A30HHM3 zF>2Q?`O*^tcrp8R4OR^lY>hjIH*E1jFt@wW-yO^6dgT#rnhaFwNL2Sfa4UBoa=ANi zNMc-7j-%$1nneYqXK)l45j}WA*)qC|>+7Q{G{`JDw?~>zP3&X+-FVFyP}4OV1s(7iVa$*vsX%MMu!!1 zR4;IacaaTycXu_cecFqu$D4;r;VSoL6??|sE$*C9%9lwo47XOoZzik7M*$g&HOX|6 zPjT(Ary`TSSRkTF?t@ror*`5b9LGY7$#Iy~T)=7RuFQpM)uL*pA4a8m&F*2eXE*-W8SV|-!fQg4YG~~X-k^cRq*AP_6QP2yO3?mZV0t!)yoLFyJ`fXp?T zx3vsZWvWae+_>XiQ4U8=!WA&L4-Dk8X1Bt}U8U4_NU&;?#V=_=varN01(6<0j6lmk%Sin~$ytELHjUPm(pRK6=|tTNjOf<=t1pgTPwBFJl39@ltL>Q(bsrEuxxH8Xi0Z^ zh6Lz>*21-OLq$G{D2S{(Sy{bVgCB4|Z!K;MDgA<2Jv2f@6=sZ#VCHwroJ<^pmtmIA zt3b`v5#X%6scyC9%Y5@K;^Ui_P6Bx|?3?@Y(Xz;d)>}&FtHsbg31?frV%S6xpku=5fGR@ zPs~`T7j;Jqz)lfWu*mbDJ?!fV>oTmy=X5KVi`CPnLo6o13_h(=cAiPflZs;yf=6!QEz9dvqJF%ObS5 z0~qQM_*p@T16m&CE6q>YWji;dh{4kHPa(BB-@AH7EVFi&EbJs6>7xK)g70)FL|jXc zCDYo?Je7^Dqd?y}*dlqOaBeJ!Qnv36tMTp+5^?TfSy^MGw(uCP-Vr)egwR~2!ByBS z6&p5} z3_q^$f;3rj<_kTlgOvt$@$G?%W3iXl0$0Y6ptjt(rA!>`Nzh8f%-lf~0ULrTmeA#$ zT(Xa2*el9}p}9#oMpMXzGBnW1WTGyb+6cOpRU2)*xjL{O+KL*&G*H4r1b?I0SCc|?6RO;aikDn_WHg{1`&6vWFcvWfUsUyM&*oV{Waz$~;? zoF5n(adwo5!op6fN{6R?Z^k!qsHjY@v zmte=LWOf+JIUxA>z&P=zg#_rP8-TJ6B_cwMo<1kNBtspq2a)92KsrIDlzPU=EkR4+ zqEE2q^v3??{IUjPt9v#kK_?HqxFme6Qax*7DB^1?M5`i%V{69~q3;Wii0K&?XEdnD zsM3rBjxzHnWeEF0-489`RX7ku zK*vo`1>#y(p6*&v8${bSWg7WYUR;8rZjc0tl+4Z;8xHB5*R^y>seJ@!A{oOWN%K-c z<3=J&8Oz5ODbb?F77$RGsPQ3(YRJ+Ri{-=#RAJ&E`AL;EJ=(}|%z#_Tmo0<|Qri{u zDq5N1LA9fNM6zFx9^}4&z7$wVr_?V8SW)6+DEiCdWRu4l6_fCu%|(KPN(mN|+|!_f zizE+3cw1xXa(q|RFQ1x8%d709eAqIT*QG|DoUtidv69f-n6M~S*r`gU*Tg0!xi46J zN(jNwaw!DJ`L{&@MU+E4P^2IB%(z0#k6zS0yR^OVx#O# zR95B3gQE;!v%s5cw>N}#7}0)&*l;FzgiMW!{1gV3XtA3>RmQmOOLr<&@|~jKoCB zwl8kzX{!koOhSaN=9@1v!&E*DIA^)JDFyqYLge&6iUN;V_lO^0NY4^RnpY{|c&!a1 zj0>TC^(OEb%rL0k83x#nBM+fNAFXL~CnxjAaHMg}Ye{ToYQcH&BEl>Xy#1$iW)}Jv zcc%%mha*(YC@bPG62ryCfy=|23PE-?_lg3GxffEVJvPKMj4BdT3_~bkVukkByeDOS zv*eMM%p7!5s^Uo)gVSI(JvO-`Ew$Wsu^j6zA8BF-%DLTzM#e(OssN_W#L1EaLj2p5 zw!@#ZC6yW)Y@05<_&SAZ3HkJ-9X`oLwA+7M0G6+moSlG zwY3zsHCC{0inM{1+_z@A9<9{#pe@yC<4T@9E;P=oBS$DwtckIAUp~QF_UjT`j~g=8 zwm5RNQibB;$ihTY>s|0P5$6L>3>s)=<>SQNDJyj%NIQKdj>0aMHM}VdTXkHc-OZ}T zR;rTq^w4t)3iPY;>|+}asp1JcQzGmGsdYEgT?@R`v^p}+BP*kBS$kDRubyf~>jnkF zvM_|iaAgC>uucqQRx1!lD{T6b1BiF5l!P=nlEtJFY@y9Jw`a8ED<(OU$%9u?SzB2} z?_n}!T8e}W!-XdhlCpeIs0cm=yyWAE14H4#aA8E3UU%hHVH{~ky!sM&Z2QqGhYy94 zjRMoMETcsRZZg0z7zf1LOdx1iPpCyMdt1`-p$KY{kfo#91?l3_yFMd;!pbUu_&%E% z4=h|^VTy%gLX!$%;Gq;2$MuwDw`G=i$dLP$4HOsQMN&d({9$yP7qZ(Q*R~6HX|p60 ziXHV;{G~!G8Ao0YK10fu6!Zsx25olIv zT9x0yM+jhX?~OnwL=<7C1q7Nvp+=F!*zHmDw_H0&vIrKDa6LW?66`R|AEKFVT4z~v zPOdHrP}};MPW-+(Z{ix=&2^-AV;w9pwT;&!ZyUXwJ=KO@Hm}W7X8Bm)J_z`e4Jgwg zF2csggwUkEBsjs{w%Ha~Nl3E_6`vn5=_eKiVErjUa3N!&xRURQByu?DkWDII8%Gb5 zz#&&wH(Y7%mID%53aN}Jghn*?Bzhad4&b z%W<%(nR^Guk@UWYoL7@>#>F{S$JEVupcsDmdjcFj;8l=q3sPEOcvwJqL>#q2&jYd$5Ln^N9gB2jB9pu!Y#+Y;)> z+BYk2-*|CX)gc-x^r2eiT<<+k!afbv$BRC|JZQD1Nh9O!E-3o_*Y7pSKWMTBm&3eNnRwvC1!U)j`zkUJOvzUYVh)Y2ohrlLuJ0`7 z$&Jb-5SFS!tDt*TSQf6clOn^ss#vxXc5YG^137&Ra5@%L-4&+|aCPZmxqfyKh3Gtc zR>gXDD$@gZ-C_5nQT1TsHC)>o$*GF0(4hEOWhKrtt6}AsE7_*-`W!nW%<1niE~(F$#D$Ap#AZP2EyzY{W&`Dg(^6JPQ#U)fLTVnqR_@+W#Q8X? ztXDHDjghgbUCAxcZvxf0)a%ab3j`xicdpEt*VdA39AiqwcBbjK3cVJnJ-|?LVQ8%0 zS)ST@D|MASuPD?}q|4i9)ds4-_cPS0q&sT?*HYAC<4bU{K7CkPLh`P_ZP&*R<#KOo z%O>UR)6r4_OsMGvK?}jb(awfe>t`G#C^F0uNu=4h$UYra&~A;XVB2Ssu!UqP+=kL8 zEOJfuvzJ_D5k`a3*@6Lvt5xdb49OLuB&auN|i8NRnyn^mj zh%+UOc}hmdOWZMgFjFpx7Y$G*+20`zfh%TXfWu8JI?|&_hkgfGVNgN~Wtm{(2SWJq zvIn%K52zOy$DVGGX~q%&@K@nKflDxI;+;%OnDaimaVSgI*x*b&sex^V4}%`Bs=1{m zH0Zj=QjKG!D=O5LmS2QOaf2-j<0g}R?~Fzh@@-09JW~fn1eCsRP>KvRVc|_0Ka%5( zIHHc&@yCdfmV6pn;Ak1W@JS#?$sOQi43SDZj{c(t%#6(Sz`&zos>CIdv5OihH4|wH znJE>8@0W@6k2pTj_ce@&unaiE3P9B!J@Q2&wY&(@jUncmiDDn9Hi+= zRQ79B#0G*s%nVqFo&;f@ZAeK0^BRyl8?cbGAH-qBh=t9#7LjAHpejuyy(Zh*b|_h4 zCD24*S=+%02MUgSSX4lo+F0cx$`hqh-Z9#S9t#V9KPi0CLZW+0q zExo+Zlxu1YI7S}|060rqn0{Kz1wrt_#bH26<2axUBrK!i!{dfU*o|Y^R3;|@Cy$8G zq1Mn|OI!uAM&3{jWPXihKaHb==fjC(J$-CUPSrG6rpav+%+2JTnU7-9+8+T#51Wx6 zA0G_*ghJ8rAYmj27HQ&yVa0~|yB42NoS@>34Z*fC#H1ePo{&F-;-(i4W1332eS+Va zHZvWnru`mz)X?+WdSUSk;*eKFUGoQY_cw2K;KUhpKz`>Vxr)N4ccTIb4wjon9}tQQ z8Sqgh12EAgB^q&pJp-aiJYl=vPP`PE&58H3_COhizzsX4AQnT1KjJY#`IFpj4+V4$Zu-INBTb1|fDO zMvy##=x(K&`cCHNj^z^<8#%q%sc6bN*6eihsAJj6 zv(g+@rL4nouFl5wtiWD&9p>j$Ui7v4*6>9;^ z2|8(Yghil8t%-^v+fq^*MW<9V+^r&3)7rGhSDtt<$nYlu(aIk=9ZxIv* z91NljHx-eBlUU$Py=%u7h~mNxeHI@0ZyQLGGmXb!mJ#=Ft#Yy}oZ-)QE#AE__T`$> zxuxD3Pk5{(lwOL=3;H5H@tWT%;FdfUlu0TAj*@iZ$+lQ{!s%H9(VrSe4ET`ZJ2|_F zQDho#fmJ|pB^?JSxQ!f$?|CPsU@8f(G!DKnB=zg6PVaX!$J@K27nM)b&3xrjjPdUa z;}4?J3QLP4Of9Qw%K}4&Mt!y?H3l3jOL*{M7TcmK+>m07>m!Pza((l8eHcJZXa{D3~-6FX6~X1?aG%CYN|j z_>%_IC+|CG$)@U^Jqj<hPF$XTB1}NR(o2 zit;1wjq{sj)m&IhiP$=EN`YG?TSyS$94i60fg-rChqvOSB2N@DK;w?V#x&8U1W>_+ z7B6^SEIu8=_DXMsGYTSHS%H({-^O6i1~}>anv9_S3w0m8K8#H(NqI^yAgN8b#LVWX zb(R=|hk*1R2w*cwp|By0i#RSkBagjFrnG~OB8ecJEQtcfC&#TeO$?HW5!cQm4~ZFB zC(BWApi39=*r5noLBC&?74Ln>b(g~2R9xQMJ#kKM{QaegaF-TI@kuj$-Gi3hy8}%W z37;B#Qd)dvruM}YX>rZh#s`itlS(h03eg)5B-{8s+jObY`U7u);B@8>x5( z3=PoUZgjDF(JXB*2LROP*k``0@utk>LUX9rLX!1sP&i<9@f~AWWm1c>ZQ*X>==#mh z*$q={((b)p&m5Z;bzC<{?I6}z#{&y#Y_s61%NN$PWs2PuajcqIQ;nuwqA?kyQm#ZF zP&~SoCjv0uurhQSbTL-yt7A-#SFzKJS)~PwLD#5=*i};o8n&A1I8)7|-%Y}5s8(-v zC=<5PB^gYlca@E)5G0F3I)fS(NzzHZ#DxgG-m9XZn~zrt%B*`KJJ5jcj0sy>0SDqi zQL($(NLOUtKQ$L^#gxd#yIvIqC#~*Zrb*K-$SDb=CNNQA`<=|NO>{2gc6XH7RjgE2 zETK7@p-0Wt%iRvoDD>PL<9s8o$ZjpMAl7SpF_f<_R9%XU*r3#f>^|F6J8U4&NfrQ>fQTyAa^ba zIbS%v!voB>amx@m8?+kc6VsltfnnG=cQp11aA4tl@vNi?Sj*fquWrw_yQV-R954xy zYQ1zdDWis$LkV3RJw_h7Xc6|1(po3X5uEENWtyVnLoq^cO$9vy;Sf}5QoU~aab9%Y zDU5Fz))u_g5`03`tka7kPB2g9;%DTR4-l`Cn4%>0q>C)FDC02JtPLpo*ElFn$kIzb zYNL-?N0U6_a4e%u(INU>ZMTI{#mjc}`d{0M=pkBiH&;3?ZklNjN+&?Ue!&94%+$57 zhv2f0ijxm;xP#J`7eH(TjEaVR^0KDl4#8aus9x~6;qcKC%|~aPoR@V98V>tml5JZd&06e zQp`%COBv%1(?QrRRaP}p<57b6_<;wDAnQ{8=iJ|H-vvg~l6}GnFNHf z*+RoOav7lHrs!VsvCtng5I-V570I#B-vZd%g&`vxruA1|dS;;yZDHUxm#zoG_z4*! zG$>@1^KH?E7(a_SrG!J2kwk{UXbSb=L)Gf9#G2!c)-jMGAVwZ0K|2|@OJU^?0a z(x%vqwn=2Wb(L~fRb|bIQH5g51hGXk22tWLLC40Iq?6AQ^*=+wsRkJBBFZGH3NV3L zA|lE{jRN5DVJEi|xmZLqX$zmGQut(o3Iw~MLRSWi2RW=&8^p*#kgffRgeA*9DAf>* zmP1=>AiRSmwMy^kAF|CpIa%xTe5LlhG%bB3Q9`2_!`ylrjX3zjiv~x-5#mTXh6R>< zNggzik$AXiVEm_!t~Dt}A!{*CC_*x07@kEPsA@D#d@#R)boSJs!yqVUA%+%dWrFt* ziswXIbRH<;MH1hK!}_Jg4UbG*a6m!hakLZxwl30wH|1xGrNZn_#;NqHrruJQKUAK= zaTzovyMjc!s)g;^;`C6RP~rCthouSUhEAS6kdp9`@q_tXLJ{$05*5Khv0b+oVPJ9N z#EZcp0uCm{#Sd4XheS`-{N>A3B1312H3{ftAW6a?LUUR76o^hy#syO@i56C8N0pbE zc;!ykRaJWC?+=YQfs%NVOjeP^mU=J3qBuBV;gtwd8hExZz4Tl>MFd$Qfq$r{_wN8r zK(fEY%b&TQyC%OEJ?NjJ+HsLuGK2H7gR^on%Z-5@46MwqE3SbIvDeeH=cqTrRbOXP zhGV5o-N*Djv>PvDSm1K79J{I%Ix9Doi?Po?KFhR#i?0o%LFCj-t>xv?J+>CLnYM8q z2~}`+Mh@C~;DJypEK`Q>E>Nr3##K9-Y4={Bh_`Ud=OQTH@X6A z$VWQth2@AK(G=s{C4}WFvo8cl2sCv{$Gi7bM0Wz4zNH*xv0lq;oppzeb^BBjv|iCu zZ>hgZG3jx2_2|5Ty@xWWbAeuN6tvwgB zPex7Udem@j4P2s1BcL@Li$Z6$eZ-TNlCjy|nSOLaq&elKa#Nfi;omXQeGqpFkmy%m10pEEDPSDX3xkqv0^w|ktYsEAv>xfML@hjpT_)9yj>jC z5#sn(P%!~xJh$;>(N>oOw7^SJ2ExdW~LBAP=XPyXIP5KvNUhOTs z#fw!|oz#ufs(wW7$FekEK_$WDxR#F=aCmUT$Ha!89yBO8D#`G)ER=CZ1flu15=mqG zMua3e_?J#jPGm~W`!dSUklva)D22BO&s|Ew;j3)8t~GE|D2kXEc=5v1g`XI4H6;v# zNNjFR!-eBgKJ<^?bz$&vMTZs&@Ocdmz8zSN^Ozy1i3At>VD@XIdj0#6crP#jq@Ok!3q0Z>Injv4XP z`X4AwsL#8mE^Y^xgO>al?nIE2g$7eB=_3K)sd2~9d>k!Aj0FTph-8e97*Tu@eWKEg zv5d=WK1wzt(s1Nv5=e19@L-9FJTcYE=$bshB za1-GNyAJ{hJP7%BDs7NqQA=`t1&0@xa+*GBnKW-DrXCGGEVC6R@Z(5E%9stqKzdYo zp^TxC@g|Z<;aXDxa%f2pLk026&2cv}*V&#HI{0%=HKWuvq1l+#OuO#O>E>=s!w_L8 zs-D$SOeC-1W>W1gA)Qs?!a~h6!m=Z&C@he9LmH2whZ2)GXNxKeEW-}e_#rVOG(3HS zSWtGA?IWe0WVQADj)j597EOVKwH@)?1)}U9eChQ+JEdJhELRF`6}(%QZbh^!%!Vfq zfKV95%fZl$vx>z|6@wvt;i?adERs7<4H8u*0{HYa&v`EvBOu85V7?dHRg*7}g8HFj zmy?(mcO`f}VO_cE@uv<%8JW5uD!AdQ1qdCu*rCRpz&2KJ6o$z)b7myo346$ z9WBdj>q0TXdXn>v;EZ)jAw%UiF6#BVv^u$pR!n*|n|_3Fp-Y4qYLSZ7+C3Gfr);wbe57 z7O>)tcn5t#wkn9AbQ`026AvOcr?zY}o>O-Nb9tj*5uA-YomB-vDlFDXl(YhsuBzV2 z0}#%7WXEK-cWbhS)4r-moOFV8 zw&z^q|BODM#i_rK$QDSw5RRY`WVy>&LeMWIk*x9wce#KQKE>ug0o99x;J>)fw z-yBK7rd%A~gETTPSggqz(d*fOtAo0f^7x8>dbSQL; zweUgwf{FwY?{&SpN#M!^2qA2%!->`RQL|^naVN{%Prz_-6N7`n@gR4RO_t_7wX|Tq z#em}P!;D0lQO1@t!z}T%yh-Fjz!Y)t{wVlqZfkfAsWwTP9UkbPiP*Y3YMbfX4qc`l ziweQFjrBsDBr-M3R3U=h2_HLm(w4}DM0=8()$n-I?M9}Pu+o&bBg`nks}b=|T@xoc zG@M2dLGfb-QO9v%n??xsb=aJuy^WTqSA$ix9oFQHT(OvidBYQaPs$&l8%e}1@@*3( z7uztTI+E~w2fjUmp$Ea9ACmEaNj?@71LP(__E5Z8_l27QrFm)NB0%0?K1M2NbF>y-1ZG77$;oJlQi)aiLU`Dve1{W9-8hn)(c7`30o=dYv>8 z83Mb@_~f*;zUrMiwY&7rTiS)E4VrQB2vHOuli*|>w025_)Jj!kba-3i#gT=U+wgk_ zf*=EAX~{;+0I&#ilX3+DydAWJWz%O3>X=lFMK#v=?oygegu{= zI)7lyC$3j(&MbarvOK3L9$-YTklNoJXoLVC8Xd znC{jM6nuTfd@iE|{jr`6B=Z-IjY`i7IMRtA^N_`E=gnT!rf)|a+?zA8dpmj&A2Szx#naDhZ<7W ziL&rm$6C)RHSxQYH29IgnMO6IYjX=%QY+<~(i zn5y8Za~EEHyT*od(O*pF!OPo_DJ?wY(hHVaQ6ELiInwIMs_Io*rl|6%lX;V|#eE^v z>xHXc1`jXwQnZ6V{Gug_d+j?14A{3Z&b1uodL)cp*6e_4uUW)24%XzFD z)sVo?c!B)@@$8r{<4g*c?HffT69`?RaEyQDl&h)WqaG9B_kxqk#iFQSnePF@g6K(Za&Q%Pf#P`6IsuP^0pTg#r)Z z$iY5p1QmxSk$O&m$g?b8|iS)e;(zj~UjF!0*Z{1Qo}qKG*0;!k0wlVlms6t~)a7qbGyFzK7x#Tn6CDVJY_B2OQpKO8b6#~F}ak)MEFtE>(-K#-4t5IZQt3bGGN z0*)C5p20|dv-O?}MHoJWHXE%UERAAWWe4zk!obz1l)N4^KHWIFPZE=gEHvI<11!=( z!SJ+@;x5gSjqxTPIKb_UJUQ4&GQiGCNh1zI_NoI4i#i-CBT27p4FG2x_1UE`w}y_z z2pB+03qHeM)biJRxJ5?jGMg6K8>i$c5xuCdga-u@FNp&+cvKXELfNJt76tgg?;J() zhW`Nl@UN z-8FM2(iX1scAlsv$Qm)}40VHCsG^GoSoAO%Lk2%45 zjua#VglkJlA-)qZR0AdN?!PXb5G*JBEI`iYI)D>hRgeC)?!1;EY+29x}|N?WmTw=wjW&T zdv^TECi*Afj3n;UCN8|Ecb$rGIWCfB@==gqP&rP;g~CJ+l<3Y`w;iWOiLrMj1s^>X z0(aZknU|ZxZ-^U|uI+LP`e`POEKzGw-Lp#U^q6Vz)0R^~Gmpys-WSdF2FEB0f$7Tv zu?;Il3&iQ@Wp%owUBHIeF~KokJW;V!4qCa=Y&pGK)P;66d$#B_vc}O2jpVOfZrXR- zinZd^>*6D$)Fz<>_-s`xOYgg>gy2C97sBXb&Rlzx={qxthXlq<6KeM-nGcG}P)T*Y zl|7pa)v8_4=a5n2y;ed~IA(ibiv+T3eX_DvUzNrX$1YU&wASJDuPax}&`25uVj_dX zU7McCInr8p5*3Fop-M?W*jQz~-rk(Tm)td zuubN4kr^eHvoBhXLiAo0i;k#wQpyWPmD6=H@ZR2|; z)k%bOd|(c#1@SGlCg*2alC9J?Z)mn~M|ZEB<>lD9w5&mc2M!n+6cY z5UM4~tQt8H>Oit|sOp4HaR-mF(SdyWH4-d++!$US4*}6z2!El2qQ%W zXILZPemW-}$lQoXYK7J{$EMF;ZE`@4cJp~rseTCTN9LsfftaaIL*Z0Q%vwM22}RN9Oq6eKUKRCNqh3&u?P%?J?$7@eHC@tS4U zN^7-N0R1t)p-%6RA zBjS!tyYG{^!aI0T3@}s_R~&Ow4?_rym`a(bSdK<*ibTB@Q0)o3Vg`W;f}^Ni(;6%5 zymn&3kcsSCQv28_8fVet21lck_`-nujRz;f14b}3k%y0R#*slJge7Mx_}4y!+~BG& zoALEq`d!nJ0*Zp;o$xCDAY19ZRiO;eS<0>~<04>}yx7s13YE0r#&mGDPuMge;RMon zpsfobX^ePaNjmtT9TZ5u(Rhy(i&<^KSStlb9YZ?8WwqmmGJ>HN!VpZvuuCliv^#rX z#=^d{dBYJ4TflX@Af|ErxwegEaI3725urpP+4> zsI|&<+m69~D(@A-;%KZ7rF*-H!$YN!-FBj}oRWJIO--poc;sU0!D7>3)XlnMHnytl zgt%_D_OL$a;>;o}uH=^mZpN67u8r%CwksXl@a$C6i3`yAgic?tP82r6nnecs z)Nz~Rid(fkjkA3!CA-Nx537Y8&ZO;?+Gyo`!)95@g89voS!S3thgM)}8=%c}??w?3 zL2NwUlUtH9mjxN)i-Hx`b(#28%I)RC+_0fKX3`<1FaEoMe5 zXzdLg~tJD;(yR63t23fhj|(x(#v>W)Z>cJyl$` zUIPwi9?F7I;wTZsIv3R6Irhu8h}4)oT%PN#GbnI$?~{WmU0Hbyon#P*>)z_x#Axxd zV_Cr)c`>lS;Jt&rfS}myJ49UNFHknDGLyA$LEWgTY~9;w({mAOVkX9Y!ZQw3jC-?D zI*$jcLkuUwC?ygjFqn!uo7o0?n_GMHIH>T=H%HRli;6IUP&*qQ8Gh#ejkhsm<2_JP zBQA+lLLUpXQ-^4^Q;;hXqAW5Lizf9Q%sMv5F;xPfK@1j8fT4k98|L(|$cek zH$l312}bcy))W#PS=0)Q7{~+RUi?f0JsG5Pf_Hh=-cP5oCkoO9%l8WxhuLN`Rd{hJ z%E-bdKvPk(LJi^LL+=6b$+Htq53(XC<<^%hORX89o;+ZWsj|ZhF9+Wb<3h0Ld{9xK z%_yNBsY*yG#`A&4+-Xa~_Gq4F4^|@n(Tf=3@|*P#MiEmbNqFtvOM?S#s7e{IzZ^;p zEkf7}3H6iINWy*yD;$ptB8xGS2OC5#oCfSoDkO#&a7a;R2NY?;53;Fa1ry^<0T^-O zfUg9L?s{CZWM!^x3&r zs=gL%6K(`GtTA5|ot?puTqcLCd@O0c6#-ugkgRHm@smPyZjK2vM`|3ilL$JW> z92`;h8LHcgEL2t!$B#2uI4BFHyo+*HFk15vG#C{W%&hTx>k-bK%P~At^jfP~p{Kw} zMv?^_Gh|vb0*jO%9YeDi@Y77OaZqrq&a|I~#YAx&GCQ+kZf1!&5*9F6CWs~vqb}8? z@|^1!0fIV|-BD&gVX8#WGGlJ0u{Oe=3aT6i0Yl+QfufOj8>7PrxFOgj1-zkl9gq*DOZj>NcAl~j4<9xh%nhn{3-~c#(bM7Q{?kLE}yd1-du` z1`7xZ4~+RYi7bN1_#2le6@9|TOI{Mmr?Gemr+m%Da4Blt*gIri6E!63xzOX@nIecR z#1wE8aaYN^3G8-wERO}=C{#hDhp4Cz7?P4w;|d!X9Nd(GzD=?PXC5H3gZ^2+Exv8~ zxBZ*{EjRnO`#1eJ=ZEY3KX2gvE9>LY{cY2r=k?F=e~hJ>t&E+=W&%$Zb`&jh)_rDM zSoL|!JiLoft7zB|q7aCf8eSzz#5XG4I__D`)9?5DzL(|k^;g=S0!XzP2KDA~RVj+; zrx3ak9WO0qae8{9i>P-1sMWB-2vQO%_1~u(6pbF2qkAt1%&yeBk?6z0B;$5&O@n;ry?FJ0)nFN$dHx6B497n8>{a1@?OIl zov~__c_4^#sd;BvPJxwGw^x@^t4!?^3VhH#g4MhGQmR^ZbaJbsk1wXAV}3eg$6?l$W6Mg& z4;XGcti=Vi+p?NFVTL%os?;n*Q@vd`HS9i6B~@|VhFG=gRE=#a5mY)fcVNCQeXF67 z48u5DoJE#0UE4=C<8Jb7zThhNU0l@^%U8&tbqvNAC2FQhQZ9>T#w#@O*-fgKS+{KL zOp~!{_KTM8OB(~4gWJ-RRAtt5osGuxw`r#JMf0ddJZM%k8k3h|zp}?xvUhMyuxp~H z>szj7H*!N92D3xE4#Snt2SG4#kdV8EQ@Qppi>uy{Z()5@TiF&gCYE84s}H+gVjC-6 zv0B_Pv~NO0r|g5qPcc zoYX3-xKw2C1~(;dTM*DaX)4W}@>RjG$25xG{_leOWLb8*zKQO)^+5wg-g@Dnvy1C^ zB~mW|U3J*xF8-Qt7Pa*6u_>|a_<*af|Dt~M^sk59cYs(61v5}Xp^|POMON&o;Gz&;U#NShD_F2 zCYH0Pc2KT8-HXaYRcs5}mMzs$xXXAS!D=*x&A8y31H3F%(yh+W@W~n5Omp5DI5h1z z;`WeL<}R)6Q&kgzUcOacyX=Lyn3Zz@q1g%am zPK{rV1-&ptIJgdSmbgVR%jFhk(7rhxUWuz-@=?4BlBvx)5x_ggB(AHHl}x=Rw0C5_ zF@lS}acw*p%iLB96rra1w8onW5D#*Fmr2GnM(Q~0&*I0Tu zUTfaA9d&HiTUoT>nhix!9p{y*Cc2Li@@mwMZFZTYTe%W0 z5ZqNP-n>(B&f9ulIm?Tw88#|Vb5qfj^|^b;%a!eFF-qQIu-- zV_zB~ppu2u`3mGLDQG^$Om>(aVIcKhh`UKiEU~%L)$|(2dfGE|Smb5y%*++79GuY3 z=IP+GN~VdzZpiWOOTl9dgya;a6G{x(HSc8I<^|i%8a4S2J$*`T`eVGEuOx7ef{@J> z?o#dVmfvaKQ9ZXWuyskAXH&Ankh4LDtxoAfV|ko#+pUCZQ?yvilvP^wl@h_S>;;`~ zccG=PoUfXIEX@aNwo|H5b!Dfopqa69wo*q0EYxUH*DHpzF$;xgS6JF_o0oD5r!qSg z>ji77fJ3>vQjHQh7mSU*el^mi8konT&Bh6^>}O6CvS!ZI3um}1!NUdPd>w-FwpmL? zj@Jm-jj4T%qbwS&6R=#eg6zH4`Xo)5JFBBDXT^Q_5joZKgtwL|CqQ)kJes zy4rJf_XW`PqIap?V5fqLolkp%L`(O*b4R^v83%M-V#~<>+)5Xu(0@wq3pJ*0)2431 zNLa6=3$~4pcT~N;^^T8b(0#OBUDGcm*16fIxwv5GfUe3lF=Q;AisjbjQ z>(+3H5O}1IpfhvEj0vhjPVKd+3|UeIJ8P(GrYOrW=T)&d6(qq4*J(6H zZQ9p+Qt|_N9|HOzICU`9#hkeFRpRd6pru2dH1}3%*DT>ZQ7y7HS(l3jj&+&}urrVy$D9(v~i|#nlm#w_8lo z6}tIl=L-)!jw8mVR<}W;IURR=;6|o#jV#^CE})@B?d>|IDeOV;BvKiOSdDD;)OXe_ z!Iu85pxl%Vd){FMdZ~J7z4qjMgL_BOyUNrwS%LcGF-Z4=S|;q`cpI2HYM~j$SVb(0 zrA#-UD%S(JIF5gHjD>Uj?VlG?|?#Ebnnr>Cxv)rg-xlJM*z_voCyG3QF z;`Mh9c}H$i7RIk5d*tknv1fI5VyaTxIJr)M?cHO2(Ton+hm|QxAu#poT9*zYHv$5( zF6(LF*Sr&@s?*_35jU-%M^Y z_35^2R&NG{i=!hQy}7d3$0$Je7UyhFMb@XH?nX7^t!X2Bd~zJIy^-H8gVgECIy*0S zo=ELiZ%xXY*u7pZtVWE8GcvL;ffb`UHHx)RSe5b1!ujqcP%gX51R4r4gF2fB?zz<}Gj)TpGEQ+8 z-ny#Qf+4FkTeZVFD_gGGpIo(EI;D_MGA!0NNMib*0Q&Vc9vKcQc`b|jOUgUK^x>hG z6W0bfW?n4kw4V)6HQiLay4`oJbXr8{UXfzUmJMCAtmuldnc4vxsZ~tGZTB21(|8qh z_UDkT>>^YuWm@uF2#Zzmy2QZ=Qki2mcdHYtHtvKrpADXcXvUHU7P{(rhc>v*K_Od+ z%$s5LnvCu%%!wJjaZFNzzG~fty(_LXwphZcMiRS-PJ3};6_u;09+)1Hal27jFH_zp z6v{d=M+mCx7arZyeNdguJWgJinVn-v;M&y0O6!M0*1axArU$nr1yBiBdEYY~5Lw$d zwa*|n-Ya^`=SVvDQ>g*$Qyt3V^?bN>*t;Slm0xN{i~B62I+Ba2c%dLea3%uQa@~wt zxl7qywPRqFvF6MsptlAcdB$!o6*1^Xn$dGno#WQ1QZBZ()a-ee7Hl^!6b!S2qsorI}hpu&vM+m1pE!Gv?>Aet-36Y-SZgk#iUA-XjAu>(f^>UML zMo5Dsx~vsg!{{omh7PSkOl5F*!M@$Rf&Vbs8-;`YY{v9fSt)h~9B|&q7Q}sc>G78laa9vhefh zM+a zS?qqO@QEqA;hU%zdafzj^PDgmn^P-z5i3Ovry_DW>-aB>ipRneqr`3%vk} zbI)6P0ef<=UT}oK;lx4)0)|u^is032!$6D2a5@Cl_WT`3Y_qp3?%fXgqd89P$6&&1vUCdajsfNsgb3f!*kwj#;pnW*%64^)P+JcDyfi9u^-(Y#o(YRMllTIUSG zUbycr(h}!(XLB&FG!bM%aY*XzV_k486oNhFH@S;8!fTHkw#PM&v($7E5n1@k?!%?rsN;E%~=Jufy& z0gicQymqW~ZDZqjC_kgJ!Gb-sfveVNJLF8LNnN;djy^2$f%FG_DQw}*5v9f+LW&~p zH8&;{ON6Mx!st_AqKJb=X~godHE8hTiy0@24x-Xh3|~ubeFVo#(_1EVi#sA%RVoIl zWhbtv6X>D?V!6f9PgA9|K8%VtCdX8yMV{Lh5i}YcNP1F{gp^q}EiN#?;zQ{R;=-B6 z1e9qg@$x0Vu*hW&u^Y|F1$shUCKAc9vlTWtDgocuj~Q;3<;u&bV6Yj&##`5k;I#kpglQ7~* zv3wj+hl+?jfV>=7%{0;@!Vg1K*Tt6>d?QReQS^%s6fkEFB99ERC`hhfH2oi2`OvJq zq7jf+*wk@Lxnw~LnqhbLyxcD4_h^@6#y%TLTFNB@Fl&T0?!~X*@!^mm0igW?wx~Gb zPADioJ|!cO-!`XQ0Z&Z08K*jC%JsH{w6 z8kEOuUaVC0X~)iIwGt5OCjr3whf>Df3qp(V=tDdn3O0)hJVF8Cq-jDdG;MJx@k=eT zg{2TJ-}r*@_@B<<@eTf=&Au`8R95Ha-E6m2+mta@+je(3Z>4?#mNGD~MOjf4SHiQ= zWDfZuB+nbZSY>(Jjv_&W6^63O5#UUCKM)j97eh_9Hp7Jy8NY%*d&A#+aLh=mPb%lH z3*G%4EcX)Mgb?%T|QW@f7&5E$WPBi}p@R5Orp3z~Tc;AJTC^1{( z33NIv_*g71Thkcc1)BhPv61dH!5UScf+{5*JThTP zsO6J+m_n+cZG!V^vXmF3wq!xH+94|N{0ER_;6F+UJLJ=pv>;cdkzq%~3N5-Mvx>1! zMG0JC#vE|XF~=pOkhAQa@29xJQ)I~+bWQBem!!7QcbVzQ*HuAMjSL}Nbmaq?Qw4|0 zXj)xS6D(+K+E|9?wzIPrxM)tSl9rr1ddyuzrZI=5tdvgCH0N$)Xl@wGVmvHySCtiM zrUm<$xU-q{Yw$`qPI}OgZHD^noTf5~80s-@B*kRj?TEH^=ZqJZHdxTJB38-EBd)J6 z2&TEb*SI%Z4Y5aM#waMx)QRCP=p$IENO?NC2OV{5SB&&fZuAv{u;%(~^0C(;HsY}% z?iPy+5|-5}8**zCF3x6Nc%F=Ge1W;!Ym!zgiIyLA<-NV~E@aXrp#_zc@$T7> zV4Mo71Y1-a#kWolh%uBOI@%nFn#Q{+^msQ0)IOP)sg1$5$MAdjJ@|aS0i8#_bx}F^ zF}ZFHS5HPWgb{fER$J#(TH?1R>!){7k%t~oz2#13Aqs{65ENxGxe+E3DLA6fia}(M z46%@DM~NcJFjEDDvjR+yUvXr3K`0sZwX;}iuU>l_y4Papz=9=hNd+p47({N7xogZ| z674u;+F||3s`zNA41n<8CGb^{NX{sz4m9HUxGY3eYk?AYX}Kt*sFH~mgyF>`pW%JK zK_8D9O+#>S^0>NYZG%z9NjozW`KNSx#fH=~e3AGJr3y8YK*;j~L;^k;2*E-I40_ej zS)@^=1YqRGsDjHXrKoZiGmH(+{70fv-(nI?!fJR`FXQD24j7DHJ8jhM-Mnr@AyOaY zD_Wh`pPbQ$qloW@w2=I?kDghL5d=z2oFe(cyl*WjVIZ){PNAZD# z<79yRc+Mny$f@4&Mv8PTd}}Nv*5d8WxuF^i*Ux9q*YqrF=dD+>$5q6!0Wco;{xUnI1H!J{EGwLrYq78Y41LLCby@GH-bN=^*=e@;W1 zjkEEIy_#f}h3y>@2w53EX}oTxRjPxPrO5j9ScZNhOg2LW3*0#aVWhz07ze>;!6_Yh zM-v)R-*i75c0Um?QdRh01XDUSek;ET9X~^C%xaK;ocu5hw1WksP|wdUU!Lzbv|2DD zt_Z37f(SSa8ZfiRgnk)Bl0z=N6q`~(&%mWj!C-J7Xx z(Br9j_``$fg+<%(Nnxh^^ocAMmn}Ldv4P)`_Ls6mYah6L74vj% zTwWJ0s?rgucVyXTVa?@~<1bItVLUO{;ENv|%7{2*l0l{(+4@tKSapizM4jM~XPcaD zl29xpK2jxTi$%z+#FSPXGs864vJbxzr|eqotxCq&zg&%cC5P#8td#d4xSz~((2EsR z-Obh3-W)SjaLXB9x_b2`Cc%=yWAJEhkwK;o5PC$;D2_MDNtP!8;MB4BBE#bnGzzP9 zl?jPRGkkXfQ4tNFDP2)A;aZxgu^kzlq%+JGTi>G{lfkb-+z~Mlq!XuX2sIH2o!i7? z>+3OMj@!1P7wHV@!Z(FEw^!7uSVKnTh96}G>jOPxIC4)NRYL)FM#`2kjQmH0G?mTXarc+pt0x%icezQp`nrKYCcP)mYjBOKv+k>7xkpk)*b-v|X zYHmg*-mkslr`WRUA<)i-qa32)>UA4h?Q*l7F|L8aKJ@nm4i z>1otqLxL>(!p=%EMUiI%BaA?Mm?$c~7x6zpXlY}z8UfJOk#O8J>q!ZX+tdfsSInPl z^CqTs8jbZD)3H7h!g{MUOU5ZK6Im(08;Z|}p`wGtA~b7B6qsmAL1>5cX$^y<709#A zP#!J`j7jnTVloD4$Ec5}Uyeyoe!43ZFUay16OQGhrs3&p_Dr!UhRXVA6%>;^r9`7v zBSoe(4>V;LB|~e)9|i{s4J7f7w}fgkLw?rJ&+Y%v|3ZS054#?=Wvl z7mC*F^c1)DB5*CV+J6o7V%p%1&*z9#wl(W(1_{sPoT0P z6j(@Eda&_k7r5i}yAqFcZ9-~9w1N;`m>(1d3L=D0l3!~`Yr(Hhw3|ngvwm=@JOvGG zFy@Hm0(?Q<*qo_%KryyH@UW5q;ziuu3r)`raZgzG$)AUVz>|Sz6nbcbt?82N z4n8z$o*zrV8LM3~<>0E!AdwIo$w~6D76*>(N~6I>5+uf!tu`I>xTD`W?sZTOCK(aw zo!XF5_~>$&%2!WL%6rWCrRyby+)d|>10L8;XMnPgi58l8?K&QsC_G7@7LnpRyqiXr zMu!p_S==$~L~zFdju$0?P-c`f?WOao^?2ag75dYBTtuK$^`>!Tm-U-0XJq0&v|Dd+ zU!-)}^;#0swNkhmC0J>V6XEZnfq=N5unkZvk=RN!hCVc5LXi4fSPFoG!%iqcxHdo@ zHE`td22=DU#uIpx6JBT^q-479HtN1MvuEdyB~MlppDqw)(W-+;XVGYA=)7X;R!1q} zTz#Y&g2QZC@HsW5@{5m4bC3my3?yk2xYLwTe=>p6MG!zI>>PomjMS8vNoUc@&+tW_ z_fN+A(_s;`{=whs%LfR;^lP6H>U8Rm^22>egoj_QDUnpB28W?P8zU*oZ&l6E_k95^ z+M#BxPTs#hMh+Nw>v!JaHb?)4O!MWn`sI-sbWZ6VOiQW7aZ6QL=O^n?XJnl7-f8&EQUaXLUxn7JiO1WBL!E zt@#Dvg6X2@;LPzVkS2}%XW7(P6o?QSq#Ys9j&L!D&M7Cv$#-wW;y7pUL4blwl9$bG zD8dV~$*0~*;4qN`BkC51gX;@EtsetEvDxvUn0JRDGX`NOSWRBSDEQH3s_GNDG;DEy zGk4;vB$ll0SooW_K<8ahQxLkHT$=!-ff0juOddWcQg#_r6*Ix&(PH=tE52?pvcy`} z;75xm%yca%lZ^@}qQz6Lv8sy&#f6653Jic8jTL-?P#h>p6MmoScy&D779`&xD#@lGhoRt1L)jSP+%s8KOO z(D5XmG~&##21E$y`WxpxKQm>~8Su!h(#*C>aZo%&KX5D!cnWqpt7SMew0&21)eT)P zQW=cGK*z@k z2zY${^!cTQNNrBzVU;%Lg|rNryDjL=x;Pejzf`uav1t&uaj{tDI}}Yf1TO@So4{T; z4lblev|}DQ4I*2SBMJ^Ip(`n4;*eQ}XgT?iIIu9$kRr(rB_c^MwmKK&fPgr_f4*;>S(Mn(@(Wc1;C_lyQ=q zp(baCAWjrWhjiY{bOe=WP$-p+I07LG00oW{;9w83$HN2Khg(F$1wJheipSEVZV*k& z6_X-oC|@x#%B;={q~h1e*vC+sPUUKc5)kHRkmY=Qc$fo0jwjpWH(#58!Y?N{AWCTQsVOd2aPmVq$ zwmvWnF!6L8K|AHsFg-K`S>Z_q6fzBfGTVPCB0oeS`_uU}YM6d^XCv|Ri z>eFW6Yf*EsP2H7ZZ8*0htKA@-ZAdGb7rox>RSV1Kbb`%q9&PZIMBN=qN;9dftRyu} z!k*bY8bKjZW}?_s6l<=WRY%3WQr@=MUyhk*dwtwxtVKZqp=O+K$(Kx zcWL*CZPDGU>XL+M0H-)DhwK}7=u+ye%)Doar5_Q(SV&G=I}LDKg9;q#Zxpmecu%7LY#S!o}L`z90FQT+toZh_7Rb*9rczWs0 zIG2I^L`587MG+Qd9Mn)2c%w=YrW|qfj>MRE&C!xr9ys{ogpUw$#}*!lUBZm-Ro@tg%lYn18sg_Kt`> zA&V>CuVkl3;3&a_RGc(OdPU-3ET%+BCP)w%Q6fx|>9rw5g&q_!%1eI%?^-l?a6gQ% zl^UNy6-@jLt8W1iN23dxvh0j9C1V$eDZWG z$~1>0S!J}Q2y{4z@ukC32(b*Ilpw;8ynv6wTxQ4T`lK5Oj6Nn*l@iH56d|v~ux(ff zm#HE#tq@6fuu+jP_~{BKPPO=pju;*!G?*i7ba=>OqLC8b8;$tEWVVzDqRj9Tc(GZg zk^>kgtdZyL9NecbizUGNZ8= zjwD74WPc2U;?j&B5(-8orVvP|R$)d{vMUZTBYz72X!v74eTiBiJ1o_c86Z*ogRr3= zoHPinY**NNGBF;0#5HsIzC1f6t7G$EuVI9Shf(f9EI2i!}O34Oj zNSP;t(il*O`7g`y-#Pp7K0mgK7RwFQk^44~$3g4A&XtK$@sTLyX+Gp;B`$#o&dGm( zt~@j1J{`djTxmih1VU#QR^5t*C1sKu=dkf2CBPhU=+_Z}U|7LvmJhB*vtN}bXXmX7 zp-g;b)i)g_-c<|@M${sV!S;_&5^_t_R5=bsx5pRrcn5uhg+&X79S38aGtW_`9eEKJ zE{Etn7Da`XLnIC;_~OlYgFhuu(CL=Wh)>@DbR}Y361aSkO*k|3I~s}0Vu9sXme!M; zNk@t%J^CWbF?2ORSsXB;NjRYqcsd-!EHJ9TJ`al}C>T!)JV%Nk(THIfS}Mt2QtXZ* z=h_G3$2PO;>^~nOFp>G+)SRcU0%sAoTBE0gIbflIY=(TVASY!PoT|(uYFMou)$o{w zsZws$!;Y6OnieXGoe^n8nE6?Gc+O4MlkJH*Qrttb>{Gcrq`~8nJj!PVK2Gvg+L2h7 zMCQH|&7R`)h{@1Rp;JprFy6j=Zu@$*%ArwSQt@vd?Ho=g+KtCh zoaWAJ-6S(|QwkdFeO}rPILa=M;fJhR%CxZqVv+V)YrrE?c2uJH|;s?i%?X2u^myfO7)S`6dJ z!G`9_u~%Np3bnpb(vo?3WjDrMToynjIJ>27hA2J9Q0Ht^?NV1vpE06FcNL1GY*OAB zBv*?omPK|dWD>NKyK(P5x>!U?O5)JG7?efew(Z)w(Vm~+i{M7%(0?nI%(RnKT4klf1q(D;_o3=_7F8pvI+3FNXX{bc^fF#;WpxE2^0scCU6JaZ-O% z!iDfJy9m(u<2A=897^GF5xL_St*;i0fb7AKD1%H9M1*L@2Ap`Rh%4RjrZ|RiBN@X~ zaUIha2cfs~mPt5n`=ZlAu3M^>y82Od3MgvoigQJG7!XyR8sSW4a$5#? zuOH{UMgxHN$Mql9OZzD=n?J7lbkmK%mfG8QZvMk3#g;&O$KfstH1C(*hdL#u+E`FS zJZl$6lCU#zCm$z(T{x5QR~&p{#so}orIK>5WV#aKY_}X(p!l$qSpfhTLLgKuF!4g= zC!P;brRCro_!9TSS%B3AzlTMD8o_JdOEgGz`J<&#m=t0;@r}H@s}QbL>fMP}QmDoh zrePv9lzsUn^&73wm6&*tj2kSJlfm&RDl$e_Lqs|f=g+HnJ17yi zu{W0b-t~$u2arR-jdrl@;*HhjyQRoI7V)iO-Sd-sxz^#N8Df~zb2axcs+N(}KGs2! zSjozr-VQx7$1*D%(7|*?-Kg<6QQYjf74RexE2fK1;n%Q&Afj)#0^~R@7d_LW>p1Ir zmfFlQj0jWQce}zIP$EN7UFC8Mi#@uEDXDp4oYA3;2wRqQL8q7$2pN!HpyN3SbDw!( zS?rGcT(Dgs3kQvR1f{w=tw+Y^WcCd1cAauBWz8sGdmvD9%aOYq=TB_iOzWVpLB^%G z1?#EBx!)|kd`!CBeC$=i#M74QWhts_qbl|*LW9yww1ti;6WWs5HfC<$Gt>#2%GGY0 zA}?dBBdfY!mcLTY_cnt`3N)IE4Cr=*V9l^Kr6r-gYF5w%9D?U+Tk?5_31V}`D#%r= z5pSsIIe?~gLZ3VQ2cCSVw3)z#M311>LF}XNg$VOwMjQ&mG-`Hxudbr2p{#QoNqkf? zPr#({0vOUTX(`Dbc&0;TfHMXK`VrzlG?9^~2(XeP=9j~e1mgyZp2JJt1kv)LV}}vXoC(>*j#LeSR3ov*@%_t;v7K~o>owYQ;{2-hDrO%<5*ehx3_dD_;>e6< zU{MAXd8K8R9~?3?lX+{B!G;ipUL>-9Eis7t$t%8WkBGrzkSUwGdsZlg>l`LD;0AGm){-k6OMhY*0$@#Hnk zvv`0$lF0%JAY2V0k`hW3o-Pka=nu$W4`{#^{fv^zf0-@)^l|>BUF<$xYpb9RA`Rlr zwXbeLLJgU2%9~W|7&u^HeoO6Y^`}XDb5ukkWa81FzBrSKYr$~vu<9QYi!R5u-kP|m z@Ov7f8TJm9q;Oo-=;m<;1rQ4CJnSszSW#hah?7bYAhjm}RqI)b{+CiOH6_QLubdM}^9dnMz0xg2HD=3KJ5X%cJ;@~7c1jw<60U->oBm!nq_;IR7WNG#2oe|<|$B#*; z7{{?1vCqXEQy<2=E$SX@nqk^0d61urTo6P~!9{FD(&>_Y5~#$1#wGCs@!`xth0swz zV8l?+X<_jq_|*b5f)WinsD%tgmMb7Me;RsT0^eTuy`8d`(Z|y{a4cdqDEv-ub&QPG z$tE`ewnM!+cyfadytsyJ$cyG0j#)v$5bb35N9U86DN)m%AXk1VSqhmn_M|9!HLdFn)(aZyp4~eTv3%+{ ziX)M>t@T$H?IG3$;KMGc)hmHrmhGoh#3q=g-Ip!~!L(4#(R*6j=z^?)su!BvD(b_R zf*nNaxNdF13>*(zJ-yv41po-Kql{Qn{ z%6p+cn$h?rv#ASUt$W2q_U@z-mT#usE#2G4o2CY07KEXLf*0CkwG?nryTJmRHS4gO zMdl0`TI|j^<6FV@igYfv@Fi7qyq;=MM{-uD=~N#6_qcH)BryW9!iYL)9)=1mtL_u( z#3kO6WmFK}OMOk@6m7PG*W9OC7VL*=xcW}r8Ex~V^gWFPdXVZAHWT~ddjXVwp(+|o ztRc9GM}~z&hs21oNJ1aN!b6KF@ukE?oMDBQ9lxN5iARsxkKcht!5=1IkQRyjwKkJF zK>ACTQ9e&DE!e9`#HL5dwngBLCdG&10Ty679VLaBRST5Ma*`<1<4QdSTW@p6xr7GkGUWYd8MdUF|IE5^e7k$D4 z2=E_Ud`K^_YQtzgf=(w(7Wuy$4X+lG;3#B5J;$8|78*VRcM^qAGvZP#z8)5s*z|ZM z@dPAb{IGOJnlOwJ5%9@6f;YY7vN+mJZP|^oU9w5RI?@{N;b8-@=#`o)ChlGL2;P#a zv&N5Y(JjA-@#;R(iwKfW5|jrVNoIN3LZUZQfT4Oqi0E$yxWohno+V}`%M9Vzi9A^; z8 zYohPCk40U*gF zBgIkYLL3-L6^+tJq7S4Oif)T32CZ+zf$I1%!RC~(BT6Wa@#?v8czM;6o!lf(GmAWF@dG5{MMj6gC^Vqr&lVv0Q6V5n@m$j^;xG@jyHbNg z(%gw@@nA@_s~RK+o`z5yNrv7P#l8A;>32%q-23Kf)mx!W4zooE>S_ui4oLdl0LPPF z=d7s_E{qt%;wZxcVmPsoGfbgW5$#I@iw_=2XdDbYfnMuRAdg~QiPA>!^ebDi@g$Ot zB>T_cv>oR3SmA&#PeX>pZZZR$6KTp?wA!gBm{dc^4Z0?QVkLsbTnNIPB!U@}j5 zyA_;qAck`w50AXu5(|b4h&~|VfYVMS5&h{`@5^p|t;pH9Mz)^J!HqFjL&0Px6lqS`} zGOcF=$ll>qPpd7YR0KIzd4xF~s<%NyW)?=9ja}M`@n=V!Ey0UBitHp9rY(jPkhRoN zqh~k9#hIwRf0O>X{jpcB`}PSrbZL z5+>kcT$Op7m%FyFOhsrLJoK1SXL^-7E!o9b{D&8r>(x7L?JI{5TaAN&5O?H~5Sc09XGFIG zN9?(xzk&4&8XKeWQ{gmq`P@jZdGS_ZvryIQw|7|Oy?I?DD81W((+QE=!6W{9+?4<3I42zH^UiRfzEju4F%^!4_az z`6`G3gn}4G9~H|x2qB6A-W&%>AdcSWfYgcnDn=<#dq5*-8Xl7Ik#voxQe)YX<1t!1 z@#dx?w^D5QEJD(W25CTiaR5>&uVl7T153ftrIBS2a56|dP&hb}sYRYRjROom8F1eU z#E2mCPod7S_>Z~KXfnnu`V60Rs3aoXa&DNT#el2bTc~R{B<4{;1e}otj4=`cnBNTb z0+Ng*4Lo5a8-)mQTu|o14-RcAAds`=aNPo56k+i|6=oXcqXUc;mT}($z9FO#`-)v) z&|~KYig3zm30-t7`9n%XeMBi{+z#E^PU@h-P+tLqLp0E_C$AzvAk)O4(4*WsLgApJ z$09+o622aq$3Qbm@X++*1-ZKl#&|c$N=g^nXq{5pRrHcl1>|*|O9cFCRQ;53YN^c> zNg09h2agPhMF&%M1%f!b8!Razj60tT#NrEqvyXh6us9$fT?7kHi#|640P)a*iOU~- zATx>}qwuN*LK$9|h(55$>l^4@(#qVz#56^lDm=pzS9KG`3MSfBd|Zyl(=X3m9xQ4b zjV3ym#0R75CSqMB+yjJEnpt$!rC`NH`A5f!oHWpy2Zpl`HtgVTxA z@%4wASqJacLY%+I+osmVb~Se8oHCSMMoiqb&tG!P=b1>36QlG%c(8nAVexNM*KMTdu zf-ym)zgiExS!5{2N&6=LJY^VhW%&0;luDq=xaF}i1?I;L1MmV5K~+Llh#L6}kSwFb zf}%(XB}hTtQ|+#-*xgMx&(Fwv5hQRsF+;io_nW=RHgb9EB9vJJ6) z13Xa_d*&O>+C-RPC|}ZEl)(1;)Z+f6W(@mjvBP5p7{P`4{i-IMu{+C?pK*XGAUNRRYx`@Qu+5Bf^Q|0W;}u39=gS+nfe+fDthjm7gmt#_2xk&{=too7@+}E27#s<*BxxUXB}bO{{qw&|WU* zn|j-!0Rpymt`nu@ZZ)2)W!73)T{sP!nBnPFda?}ihQr;>noi_~b~rkVCgGGD+l>g) z2s3LhEi$!?cro6iwD#c4(X~NnqwVR(qa1Ud-ex)u8s-%g9mvHasSZ~*ai|5oQbujF zvx>{CHcgQrpqExQEy@(xB?GyxhPcfH>^#Wf#lcdx_0|j;I%?2iVq&t1FKen!Su2Bt ztdR~;;?g=Lb$xr-BJ1s`wjvp#Se4utOmBx$s3E{T(kWLnAReC*EAQwGJe5}tsJQ}4KM2{th$M}WsB>bzGRcOu=CR_DPv7UciKVU zF@yLAjW5At@o@IpAqZr6kPJR2$y*X>*c3236Lv_Kg99WKnn>j?D4jaM{z%)3hS)7~ zc$$A4;!v05!t>>;HZQ?$VAFUFn!UJ4PmP0^soGE!2|>MU55!4^6jTEc1~8Ih0>fDl zvA7lKu*REk?BZ+|8*Rvp4~PP>KXEbRcNr?hW9Z^Om)+3C8g5HqvGMr z$fMZ{)5?a5MJ8FEPlRA-$uAqUf{ie0-3a63K6EWU4J8HqC`K4mH-#?s1FI@5NW%*x zfsFW)1v0FDVOuX`%9xjGV<^I^ann*r{%&K5W3boXGUtI3tKG$wU)nO9?Kg%q zJE`>#Yok=%_1y_|DbBdVhGrxqL|;kP$Ik=D3Vt7rC=nrNF-i+K8Ksnx;!P-23rrcU zv3b~77*d2RDqEt<5MhR|eGv}8EYgV*KCZ;hq05*^!{PD~Ha__riNBRxYwXkLN_PE^ zRcxHcH8<>h{gUg$l%wE_FxnK9L4^qTWmwgW4mf<4=Q7 zkLfS?i~Umnb4J^3zxNmRi~d{nZ}D&ZH`%}ZZ{pv{zb5;z{y%ToU$@VD-#*>_-Sueh z7FGWo)dT&I*L-RhOB=N%52eUAIKgyBh@u%BL-jT>jW)rtI8|`bzT?#$(+4}B82W^k9utRtD#rZk!5Tk(Dv9N71kyj}bcJQ0mF31X~uaLo){3EGWy-(ym{HC{e68q((Vnr)ih z2~}i}$1gXdIF|9<Xzgrj$5t|zaZSu(rJ0di(OHqL8b)C~gHaoC=2A(;h`*CfM zRkxbOX=6OL?CeU-Ft4!1YPp>Zs6(o_=XAJn;MkvSUSbXQ2rHP_u2gMf-(fJynOyyQ9lm`^_v{^`w;QUR%<{`I%Fy21x|g*R zm4h>t_TEya>eCasp831A1sTOm9apXmc^cb)O$N5-9pH}7swHTvK@6dWJ;K*R64>k; ztCvr^In-4jDPSiza!f=#7{*D*qT#`jd16)eE>4GEVi z&X@E{u!~LKSBk*eZjD~rv|!ndY3?px8unpzy*m1BUfp}6Zvr)XB3L>S6nYt0YLHq& zuC(iW&?9+UIlA7sxpJ2=f+khofMl^s#+)5PRr*B4rh3tWj!^_^F>UBrurAt)H-*=1 z&SOHE)Sntv3aq={_Py+NfvC4#UQ4IU%UrjuWknI}Tz|Xi^hD>4-Sn@%`=54qGGIr0 z$%~1dV-4+xwqxF29h+hR#HS8%;#P6Ad(i5B z7fz`qUBNrZC{@tiR2n9m52SDHlkUbvVp%jC6@OESL-gldFK1(2tzCC%TAU8dDg`-iWi)DMHr@(LX~maaQw?j`V#bV`r4lCNC%LS+Mhc{^X2G?}h8Bh_6Lmn*FlX9jr-P=}j58gomD`1m19@+@iuA(N zlXW{=U`&)seAaf;(~#Th95ZPti=fe$Vb1$tvf?y`?dEI@j&`n7-KB(yldDLa#o2=C z)A%jKo{LkPY~FcwJZef}@mWFiV=@H9yU5Pv@~R@Q z9evSHr$`u^+x9wF4460-rumn-mpaE|!zn`Kc4=7A(rCNFW@TvU8YeVSSs|Y}(=>gi zl^pDi(Ky^Tn;$Y##d)mQjV$Y`tF@COgT?GcgA zVbZ390(+tpGkb;TlRi=H)ZkhY))hA-dd+IyX=oebl(k4`*;$V{urV>l9dmB$WvnSQ zZwho4oaC2auLZSHgdUW#LqtqD)z>7%Do5t8eVfHR8tbLTTcOueS#f6eMagx_w5^xZ zg>N&eZ*g64@(UHBhDH#TyJuJ}IXbeTtJ7LeRJ)9H;GmT@=IU61(YYn_t1~m4DrQmT zsxzwSST4QDYTGC%mKmc|_Fg2~y{CJHOjjk5d|kR#iW#-nd(p?^rXaehy_(N3@R79V z9%Ta3%+|6HbS>Ua7Kd0TCX=||XEBFZAdR9|JQ#SqfcE)>MsO|>+6mCFkjZ|i#tw}) zZq$e6=am(Iqx^FPLvjWE}aBYQ&Rj1nVi{&lBQ#fZD(Ot2L zg6%9)xF=*BRWh}%?ipNSPV5%$=^4XyRx23vsn@ebc+#udmx3vf+gI(jhTIRYo8aW? z8dRd@KCyi_H1|i-L(y>_7EC%`4mPgiKaC(teD zeNnvIcu=>LL=7%R;knZ;g3*2&lf20rJyl4O_fE4l%r9!{R(S%r_mM#p3|X1AGKMm5 zrofx$wB&V$ZXvF%b3o+@fjwQavbVQ5A%j(*&W+WP@?6EvwH;`N*RNzdN?N7@b7j z2gu4@DN5OoPIl>&MQWAKb&11s1alN*+A){ym(xdHqBmdK?1PRH>1Af6b=lY?ki^2i zuNq=gT6EZ~Ok+)hU? zxbu$?l|!JS=}4YY=CXHa>$e%VNI4Y@?$X9=s<(i$Vpj4E^ck#)+Qe3EpKZsTj-|~+ zK7yO6n{|_0Sxq;*`B3dzI#u;X7MhvEW&(t(o>_z}QQECJn3I>Ol4lE$-)WkvuWaB* ztlK+b?ut(u%oJaeVh4OUi-~IL%&Tx1l-!Vqqae$i4T+gVX3F4sY~2u1G%vfTB-*-- zqlM-57+(;BcEvf&LWOi24cl{$D%+5SRZw!~*t(J--ZK|E7G7x&w=lG5N08X#=cG-{ zLMZ1PF=QE*6+y!C!cS~w-+f6oEK{cH^~+d;gJoiqdBTl3cdpxqCT-#7w=M1JB{n-| zwr*D#x69db<~mP~s4H>ZOJ=wggOgc2WYe3-ZD*|Z)K#mI&F(F}tl>Bvn8dgmV?lda zPJ@Nz$*QDo7k!)AVU5XQ)psQ4PO2g1p&8vzJ7UADj2D!g8`Tv}dj@1!y8@?0=adJZ z1msNSXJsy=!e()n74>eQi>#}Uj0s-UEWuk@Yc1{yWl)bn!sOHvLZ8W$CBU zbQ7zR+_Jd5(BW#hZqHoVxdW@i2()s81=6WUXe+7&ZdHy%(F{DmCOr}ru)$(JIp1e2 zGwh`0X?p>sCf4Dq(X6aWv$bGoOeKw5hLBAaz1`(a?bi^<$Cg{7s%=ngiV>Q_)go7s z>P;@^3Ev76QL&|+I>bkBwo;Je6R@hG(P|2u;FYaW*7MqC-DYMZd4fNp88IwYa0p2b z^P#~Sa*b5&1Q0~s+m&Z#<}zc}w*FmdMVfWBk8Hh++AWcfxLT5$71%orHii3^C%L7E zvaLBx3etvN150nT@ql)OX*{cnocUqHLa1qNu*rG`S5oOxqu;+NF@x9cth!}h5oX|0^67(8V2gFu=>!PhkjmB_?i>QF z(-$&^7N9YvUTyVaHHhjRQ!VE0RF64il1A$(x5idID^h(*4cc{fa1!?D4kB5uWDQ&}ix@|l->?D^ z1=^tT6t==wkU%G6qOQkvjl6|OEgBgoX5JT<34*p7t4_j>*0+&R)it8vY)d>-o93#tl0ptnC%;wv{4u&gbs^BXCE3JY)lBwy{rV|)k)cX zkZCHGZEesx(}EpC71czoD2!WkGo%}|T2?ANd}=}rwxe40=1jaNt{i%XcBbj365BdM zzgf{a-ovjT=#jC3n`eVHcJcLCF^U_Dv>DA_t;*F*p}P%o&z1(PR1lG=mfoL^Tdjo~ zRfQA0vX%ti9AdO?Qz75h1`wl zvBw>7mv_v_`OX_*s3>mOB~UlS6s~L=XQ<2?@<&(;p}1hncO}8twH#-qtHYu;v}Cnz z_bh2xI6)o_Opf`6wNc5_GSqWEH0)q(UBoA3y1soG+>WY7>=5KY?cw?iz$>_4V?;h5 zY9xC0@=skgJ5-9>tEDp>-}M0z8heL`1K-FV&E!7dUIN=-$s7DWf^erF?X-gw$jjcy z$)nCqt}sXsDeT z7UhIkV-jFlrY{F)9x`s;I#gFHR!B(aIDC|ky6$CdOt!~w89?dWPMtWB)8m(WbRgW; z8s__(CTd&JtQC`-I_1l}tU_%z5us>oB|EAedbZ_tHjUK|&|Q%N(l9;OSe@38v)JHfPquC>tsdKX&a$`3uk;b)ODw>CO1UT28}&G7rfG1O zeB{LYmUfM%hbjQc(9ZJOTDd#Zpt4~xLq%4vC;fp*Ly@Tk0py?)7zCCnG^CJ8qQb+A z5NYwmg2+8`(|~&oXkd*f-!G7?gTB5QUZ14(g*hFZyXjv)Be0etWj@$hW5KtUSX@jw_whZHCV z0RlJ)cu-{V__ z5l&)x{v+J7CwA(EN6 zEssOW#A%R&#D@|JA-<4UPm4V$u^%5$NW5|5%3Gmywuy%17Vce<9xi9f>1Z_Vc_}R1 z_r$`2BLKV13)bpTXKCeJT5#FK6mT9SD3Dq-BkKnOG#S!H#$$zK@nC!5U}>iqK}MBo zM2aIjxw-<+h7tIV_&i$_>PD_6eWUaJ?xC)N!&M6MPcjYQo!W}2RxHE9o3BldmRg1w zehw@=NJYm8W|wJ93*K+Xi{k`+);SR+Q0kH_gDtue-5d+3a3X&T?ho8dlE@$5pAcQf zW3kDz`A@}`8x!l_P&GRuVXoQ*7e_d8JYmO%h401v?vc(>a0iTJ7Bc=zi-B?89%E|K zJ{TfW`1%{MPz01w0VD>VJWN3>Uier^zi_$_#9wNEiQw@NGsMjg_wD?~A}`#!uS2EB zmXT2(be`IEW)5o+C*bgDzFO75Xo5N-izXnC5@GcmNyktJz7>*39l|6JgVwxI2gkz* zLLbUo_rcS%eA~BomOQ(5RKz*nDXYj^7NNa z%|in?hQkQ}kkSD~Ds`>ZS`D$VzHLwkE^AaL)(O03)p*|0eqron%`^`k7gJ6udJd-E zQ*)E6ilLUR)K3B*03d^lia`Mc33Z-3?S~iRL>uJD5@Q7TXp%%Z2lJ?L#Z7?(V9@C3 zb|r$65Pymw|eGYYO8WC8h!H41qgyV@4c+{60BBJT)n9Eh_{jOl(! z$FvpKh@H>1CirNis|$D7;m$jHf=$j=T)|z|V9oVAZm!*S$16JEoT=7y-3OT=ic3be z5jOGJ%2RWV(rUK$jjRZpJ&&5%!z#-GlNoWNb+sJO?&Y#zMrA4+PNkdOr7_h|FyK+r znL&&eBD{6o&XZwK%6MkMTS1|7)yV@%OcqbjWkMMdS$JJ{WV3bLgq>2YBkk<4z&PRv zb;-946Jf<>;^nJW4a)9!W^IjF`yvp8K|F6KC>AWu8@^pw>|K-*PkeRz$WP z!;=IjDWpaSU_n8p)9+31p4B;D+rNUTRHDtQI$#bt3w#Y2USMsiQ zx0#N{nVX?v%uVM$G_O{vN^TxUrLcNmjI)ebs>+K>f>&{deFh%x4T{f%KM;u%u@=p` z4X4;jLWH~w=EbN(vOKJzwU-8t*OsWYs_ZJeJgf(zy~a`e2asxk`6+71i?Yr%s{&3o z&XtA$VUkE4qT^05!UD?&5eJDPNRS!f8B1FB1{hvJ3Ka|Z3vAEdK8c4TWm|V%?EMbh ztQc~o1}`n*4TyF^EPzes*OF@I=I|9&b#01Cxf@A9D1IIs2M#9T#zBNF4%@QE2E zBr*ce6eEk#y($J)98nNa++V`5D2lvj;aD7apRKz|eI7nqC(L@}>nVj~V&LoGu0d;>;++a1@3INGb}UvWiISB!)PLAz5SbP#+RmK|m5)8gkr;bhqJ=t-8~LWCE*+1j#DXZ;JxWIFu8l(rP&T$UrqAUYrYTVS*T-Fpg6LCH+sTiufqKCpQ7Ri(1 zY#=??;%DLrU?2ofg(3;Kw!x^8?U4l%Qxg#(3UN0uMVxrx(9^OsfYS-j5XM?Ff@)m| zqqud2fwbR`8QedGE9_U(O!`fVI{oW|Rj83jx3INMnOm-0?Q!uNP`#2jrGU%_1X=15 z_KDmC@swj-qZ&30@M~QbMUfI=;wUJeC|4vy8G(fXC0WD5ym6!o(Fk;FMv4ahh}=M= zQ9LC-H%MYZiej&<)^@I3yxp2aKx4$t4G>fSAAAPr$~{Rc3^qi*Dvacvi1zq#A%KWD zV+avwzKwaf%aeWG*811P`zrjgUX?7mC_W>?h(?%iounP1P{{#VM-);h zyBj5GMqucVVIjdZ5P5=$IH-;^(&&Kk=*;?Hb(W#PfZ8;rKZTl3$C!$yaH7^$&^0V6 zm|!enDuvCl#YZO6t-|iBs9osn4<6m%njUOCA1<8Ol?*Q0O+#8W*H#OLW!%+xHuTh1bEQNKO$_ZwD9O=FWTJdD?Y52s<+if{NEGVmmfc6Yh_}|A zkgycwJ?kp+vNM)5*2U=>dvwdn1EmDx${D#DvBN0w7rv$pZYw0avN7qbBJm17Ee6H4 zGIJMR(?HsE+GkRlh5UJV-07FdFw)O6evjgwwOZWDdv5R03`>5C7m3* zb9Uhqb8#4PhpQ^nmqapJse$c{S*oyJ%`8Cz9BvTOtD(6!ML0KZx}F}Rg>%8ISrf74 z%)0G}TiVQnGpR*!Tug+5a3ry13cKFBBD(Y*hs;ptSa7)DG4wG7aSO<(gsoCnVz81l z-pyL3n}&*s8wXlwNJOirb)iu{MX+c=v+vYYy&~1&=CY`-WFk})venBS%!7LkN7t^Yo%`eCyd~7)c&XS5nm>R2FRxgSu z--|*x;{qiC3t9A_k))LpLPc0}^Hg;#9~v%FJvjPx)0UHMjdRzJ5e1cWEkkKl0<-Tv zRSZo;!^V919tl1qOOK6XqJ*euJwv@|(1{K>n2woLIb}o@Kjw%960g)Cm z#*99eBje7`l{Zs2e^ZtgWnK*XXrqEk%VIBAPPeoIN?=ME>QV6ojVNF;L4;u=1Kud> z4;O(T(q9k|1s^~yC@7+VSWglQ0++|zE6C=mp_TIwohl(VLip>n+{&YtvNm2(@#t>r z=BI!zTcYfNSS}b0;?If^rV0c=sDKDN#gvgn7)X*3N2rjXpf8I)NpHEkV)ZO>@=L8y zke18_jL_^+6>jEc%NeF%gCoH04baIUv*eYY2nASaq45Tm7?IxNPK1^lYc>GmHMT#R zpbZ(sG%1L}sOX>yJbW@xQ$p{Xl0b3v9nw9WT{tSjW`hPlnJ)^BV0o9an9golt-0QK zDH!iN&bG%bIqR_{RAr$rf-vzS(xNSvISRy_Kr0t;k=nR>5EpIPDGIz(*m7%iVo*^e z5&=A1B;*$qP}v|9LGe;_lMB4aZ{f>uS2OlJmg;4=Snu;n6FhmJ5Mi#Vw6{3ka^#Ml|LE3uHQ~Do))-3FYi z&lnaF_#^OL{Ls$=r<^0@Q>FG~8Rw4$23{WLRz^t*d5UjC4zofFU!!s+wmGu6)<4X}=q#=aXQLJ|pb9%1T6#~AD zv01JxS?iRwD&h3R^&aLhTtEGf*B{zd+aNL=Fy028b$_<43 zJJNzKxGA?yo20ifbR0@}tF+_T&ATFj_exoBFSjn`nXC5FX<_Wy_0rI8cs`^$- z*^HAFL7J>ed27TMxkxmm0ubf3BvciDSt#p>D;P~Fr;8_04gZW}v~ zpoqOMd}3K3z>bZr7KLFh91Av%C>-&E?%=Kk2_r8SM@;U+nhP&c*HJvSjZtz}XJxB; zU{qcN)D-UDRnC&FW7_RaY>QwtY^XFT1r zVezUOVS}}ElaIk3DEN>zO&=*U%3XNz_ks>Afi5@b!W)$lKpkz?wp^A0g^VjNPj_OV8A}QpeX=k3LWPEAEEEvinH`JR_NB;zH$O#XR z9wdzcAg7N01w{;j27;+*S%%2(2A~NOb!=pDK z#@QvIWNUG-^}X9OQB)0TJ4Cm<$y*gTQ5CW; z!4fjQR023F&8i@yj7(BNrU)Dbc;U=KBvYxcS!gXE4oMC@smbEV5T;gmU?i;-0%#mz z`VX7*o^E2iykmj#JAlBHk-$(ljamB}gt!ny>K&LGp`z%sfnnM;d=?{1J_!TjO*VvK z1OW%ec~FtDjJR|l(-8s>ja=KN__&CvEOrucU}1`kYFVQ+@~808MkZSm>W(bhyWfVf z(zm_4*B_3@s3DP(>a*B+=IK=f2H(MDayYARTXX`%EgzeRe!|iX+l3O4Y4;6%rGQYv zDBTGNsRYRB7qu)rVFYm=FNjW(_jipXW2|zzVoEs98>b8~YHs{gY?QtT;E87QG}{&- zy}~mSyS3HCBW7GXZ7h-oS;9D30IWVB7mu;zedIa8DW>2-@gxF+>TR49B7FTKFv3D& zC_5KOr;8#p??-A}TI8;&2;*GPN=WsTl0vOz)9bTFvC%5Z6bQ#mSIwnilNvl^IYJOQ z&?spx{qXmK1`rF2APg81eB|~PmlY*DZp4}Ajx1!-NWL00;*gI+*iQn5%v5s>Bz>7Qc_*o~B#f+#q)dGq`QmK;b+Uq+}? z@L3U~G| zeEP_V^W%@7Ni0F7VO6~z1nZqjopTwZ)w6TCTdkV=+z>|sR2Nk7%#GsP?ddb6rJQDD zy%&#J+&f;CFT9~#CrmXM!`%%B%hk)b3-+X@hN3=b^-Vd7*9xAKGL99Htex7&F5TTsXb&U<>sTtdh#ncq;sGQupKOIY+Z)(#uRf7bXLl$`E?n&JP&hAawM_(BO zEYyZtM=lf|zJR&3&Ewt5?3q^L&2t+(VdqP!J8tm2*)177EsOVmVhAS#ZU{Ngb7f4+ znjb0F?(#a@$S*1gbE3fwkm~ABiFhvCq0RteK%Kv<)S5<7B#p^;-m6n8({EVW#h-{F zMf^w*iZ9BD3s_g1p#_(|U?hM>P{$xPG*c9%QE=;h6+}!MJXX*?1BqWa8#Ia$#h(&DW*KSuR$V*-ERd2& zBi1Yr6#=G|?+(OiWQ<|nEJ>RqkP6xkG^kl|ga#cTb6!D*OB>?b_?X|b9%1Ud9eixO z9iE)vZ6^;7@!^RYRzfnZM1aSv#5C0&5qyuJFsmIYbP?=0vP)hb5oOXw6%l0%iwX#x zHLr$HnS=s^4~9w>2IrHC5%8^~&L78)JH?T`5PbLxL^9Cln2?IQ*uQ-vy*BdhuK3TT zwuXAQWSVC-p5HRBkm7MvY;DO7;K6({jzY_S98ywIls6-wMkXck2iS@c2!a9(XNoxH zJH(UcmOCKz%wk%*#>=p=dyFF(WIH3b;fDdx*NsaZ3B}ps?MXjXA;%y?08WimlxcWS zNsY5nc(JX97t~lsDU*U`9}(d2z_Q6OpbONI8c{SPu<=BK<48b3417o%FNqPM#$n$# zI0bO@B_rMZ6VJ5q)ZY~UT+F#}y1Sribp6|dR`}4DOWIsWh!Cl z4~YW{5WqCdYV@>&=o^G0h+*ao`x~^GI$yoQw4_)b#>ZBon9ivC? z{C;P>NLv|9+b&qLG}^|stT=knbeLd<_LUGACw_gDg5J@>Rp!yK)Nf)KUuM2zvj-V3 zju@yF-KWO`Dq~k#_LVLQ&_tlT&;+f#oup;zs?u{MO?t?2UdhE?oWrEOvt1R{PR8M+ zA@FXf#>z6_WhBQNGYG>?0w|LnzhJsVE(&-=Ov%bs?cEe<ya$V^)A#+ zT5Q79=V;U1>elxMvBulR;S0237ManALf8LAEiW(~8R5FSR$`d*9G| z-dYRzEjB8FPDXy;z8pneWw;Kj$K$uiGwSrX_!5@&y&YD&xY33Hjxh64{1F@|h{C){ z0epD)mkxnx@kfdTS-%cMnKU&ZXvYC2kip5rgh&zH<6n73^rv)7UuGuy8(&eQpEA`e zHS>*;FuhjOO67_8-OE>R1YLSe<9QO_j1MHFJ|QbUFwAa1u>}w=B`PgQ@Sqq+bU0E{ z0*NS)L=s^Hq_p^vgn_m#6@rQg!?H1aSpcX#c)b2;r;c2#4(iusPn1V62CQPX$^oBU zoXLUnw&(>VcBbNlab+3vu@H5(NW4+?H^qwaD3Vb4qoV~y#0DH=6oer_j|;^cEv`IhmIi~; z4k$&QJl+t+J&-e);tVgs)e4aO{^ofh0R)32p($`rGRy3@O60nz(mpTOk-&@L*~KJj z;(RqiUw!Naf}0{Vz7|mc&KVK1lnerW$8cd&c@Pv@@`X~Opp7XEAnrUcv2U3AG;Oqg z`|Nc<`yEqS{B_$jMR#N;+vfvzd6jOWqk!%=>nmnR#DSDqDG8WpND7Jw0Z}SX1S~8H zJ!6!nofJAqRuE0RhKmsg6n(AOlQj8_8}dnap~ezub?PJJ2!|}@Vx_qQ)0HaEuEDaC zE}zW9Lz}SR1hG%=05ygU5)8A|qCos%8XPb%_+$)09}kkHL`2{yt6y-Xl|}@5={Mwk z^Ors~A$0|TA~=t->V7ZhhtgV73>!{M6y5z68u3Fz*}24graJ2CnYdXjw;bn!S5*-rYT?r9`KtNM%0R)y$4E zNd#`ED6l?CX>RnoYr8fJ2;vC%WxA{NmhCFt8+?X4COfwsIi9&R9p`xXN4+fW!Stw}9YKbuW+u~10|b|JyyM%)1F-!Siy^V4=PSzwyqEP9e~a2GXvSgFeix)k7`zy|4swNNy9MZL9+?g?BM?RY%;}vS7G#fw6{z=6Q3@WU*)&5fqg@pwa5&&oR*mI`_Cc zZZVq`WeZ21CdQn$qQfOLwLGEMaW}QLFF2^)K`yU$te)+(m?wqStGc7I%pQr9I@1hE@OKY{JJp&UFH0oKy^l6=eo zGmT-#1|T5H^7!~DoP279v6OhUY2f^l!^eD5kkU)y#2+6LSwJ3*w(fk?76FH>R}~N* zJPd%i_)-#*l0k8W2agj?i^Ygve+ByNqFZFD{h*8?kJQK0aH>K64+`zERY5lTj9UW6 ztmIAe%8dFO?iDN(rdF!Gy3RClwdad-ampR4aD;w>8P`Clh%?0!9VM3|bRd!si8RA3 z@o5qjL-9iKAyjx~n1pD2Q7GelIR)AF1Dh*BKLUO5S7DRZ32weoU`0_kj-xOTWe?}; zsH%e?-!yQQ^K5d57 z*>4@BE{^&WlwDYjG&tGlY>NP*Mes-~FeH&EC(X!_rDJN(1)$?BV{SyENjRhj-G6}u zAFzHOc{7-8)Kx!yf$dB7;)@!j4O|9(v1N8tHfAOy69l@*v8va``AI>6+&kZZ3_eQ6 zy?jOplW92dK)y7x$`H7b#6>jVA14r8i-b%;eoGlqK^-MfIq!PC-xFU92TNRdJ7|15 zJa+KeJnW-XE%XE^;UXG`u5pMd(iPeR9rJ#TTvWoK(8{zo zQ(Fk)jNO&>t!7ll#2ZlV38Tr4_~9uya-4}r!%&4hHc=oFWR`tkdkrE$3^=Sxh#6ce z3WyyEkZ8=hhz#S}%rqp#ezZ-@RM8ko&%PBJ*GdF!2~Z8Qo|;(P%66+4tvN$1-woPP z@E-^QO)OFY#GdtpaNEHwGWeiSc(MXOxk-c=U5gwrR1_X825#t(6C^Ety z7!OJTX~vR)92zM~gl=HmM+Vaboc{gmQC%-(mV65dQKf zGvKTX5hWKG)hIGify$2y=wnaNk7)#=o)M;!7%YReO!h7Jt*b>CdOiqzX&`v|(vQ4Y z2OOJlBMTs35=rn-hr|NXiZlvHv&RVWL`0k%50dt;I|lRt5!bIgP()4ayZcl)PE@8l zHgfgeX;{idR@hCid}6xEluWR8mRT2R{p#14*<7DyVIr5K_K!wNMKp3uRz6a%YF*sB z9j*viTvdCkcQ3GE7Kvk6Q;WOww5(Y(1%fhktHn)u-VGWwA`p#lSPErXs0h`L?`>X< zfo-I;Y8@8!xRv^ZYZ8i0!m@o5sds3%)sp)n+twy2j%HVg(y4cZaLkXMW9pgS?8;BE zapau|h#KdUDKt`Q?Vm%mR%%_N0SradB~w=E^iBjZap_#mdmmNB1gG7VAv;v6DV+YW zZT-OE?Y@&?`j=3KOlb_tY*V*E#E_XLnYnxxrZ>5>z~yOx+EdX5!L>H`U#2@6AfcHm z=$y;t*jDsQfp=ND?ZFQA1z#*R5+Sr&`PfnHGo9&yGK5H5KX-3F2`KkBk#zP7M^Nvc za&>@~tkc}zqKUt<#a3I@EUKY_p&%(@%N%`~w+14b+ot zZM_<(XRZWDe*g(2_=Byx5LFI_N(Go;NC%=)?+Z(agWiP5($5-E9ZCb5kRwdih&WV4 znn=793yH<)`@kWo!F1L~DiVRuwWlP1U5an4P{j#iE4@~$k$0muyPUHw-K`&`UOyZc-vhNUb!82$TjC#s>`&Aopj)L>N_w(+CBG;YB2jH1#A=1Z`>b z&WmM5_9s=1r+4)v$$?fkL8)vbFigpE>h1xF*fwD99`_Fv5+X6-^|ov@=w;w5;!ZD1 z!7MmrM$V+@pg2(gju;W4LIwba9Lgw5@V|My`JMV<{+C@}s+)1^nU@CY%DVlMqr3H` zs41b-8A*r2z}qb?*4c!lyenMv{00>ah%A!83&G+ zNCu>8L%iLjtb@k4NqilmvM3SwLBWrJLLE0`t2`BRUy>>;z5IRFJqWA{5rHQA@Mvf8ACDFx%1Sq#90bx{SXMkLW&5&yhs?$4;RuyamZF;HX}`qN=S!A9~0uiL4>yD z3QDBhi3FNiSfRm;!3Ai}W}g-$zY8&zM@&b~h}nKJdN5b$g~&z`N}6@(?1o91a-u`> zV&WF$rJ~YtDw8`Du91mhLyAbDeu4}d4-ibGp+imAz)*s0cLO9r#+))xy3AqpI!K~Q zDuk%=$CQxI5G(E_9w-!Zeq_4$36Ag;3_0<#3W8c#si0$I{ZezPAc(wrh|G$HStH;8 zVx>ZuBZhj^jnoE5eBUulR1nEM8gn|JG-^Ge z%E9a=fJt?gM=xL^cS;QQZn1-Ta*$i%kELn8+;d)voWaAA7F69XiL_Lp^3Nug_2?$W zs!?CO5%%sJzC3H)QM>D6>0&b!%>`CtrY#Ds$uMi~QPpMSO5@dG31W5T$nj)!uIw2r zua2S>OvSyrE^#X9?e>fA^zdoxwGHUEgHYJF*Ghei=8OA28op4{4F?cH_ zBPm!QXsm5j48s-08oCdt#O5@`JmXYw5kc6|1x+&~wC8o$xq>3;XFcoA%Kiu-%knq{ z0`Mcp1kb4X%Q(Fs(G)~3#q4B#waZ;IyO1Yj9B08e)jy z{(TMp95dN5>e`6Pv?teNn|k>@J6S|4);mj>_1I39Q74>@ksFErLOPqt1;mmJ`djg7 z47(bXkj5j44;oO1^o|#X$^~a#H}vXcmgV4&w$N#{(F4Y0h> zVT$@EBIRJ4+nOI}D-RqVsSfbD6#RS;VesMs7EF*RJh(bkZ<4@@ACg9!=t?pI%d;kg zj}yj2W|UZhgF&9MfGS&4%yc4#BdN=bJKpDoOl_S$tHO5^1{#@FbtvgHWBFhbd3=w#F8Xw;*8|%0>IG}NFsCL zp~xb;fySBQ%mA7f(*eh^VDm=P9UnC+dh*kXvbP8DuLKAXaeVdZ_6Y8ReA^ZbE=QQ% z=r(c%Aw~?4KKbE>6=+`+U(L`WZH=lW0VGkyAUdi&DXCN-(>!>SSk|mU!|NZsScS(Q z4pJ4Eo<_1PhtkCR7F~2GeyG9quZM_5&tBopPj#%t9pjuflUZQcIufZgW*Xf$tW+4u z`o=G!3aO_vG#f}=QA8djWCs{m9CY9Z9y96y^)?{nf zZmJ0MM9fCh^W(1u{ecmDFd=FfF8Yefg43^I=A7E)=#nKlV)VA;XTVt|tx5b?2Jn~z z7#(Ljsh|afvxb zY$GTVt_gY;X7vcE#oL!DVX!mf=ov;_tVVl0Wa;Z0ow?U<>SrY$y^5Y$sr zyDri!JO+gy5(1;+#T;4%r1TCuTSK&qEN34S0psi#)I(AUj7af?7GY{4kC#Gj&Mb{E zqK_d(#7DY77c-Oc#p(1vBU^Z+LRepF1TGNPP;)FrH1)bQ?Gi`PbC6_QC7*u?EJ4Zd%((9nU< zqi=R3XkPYJ%g}@wlJ7;xf6&NLuA-u6rGWTI=b`_$6t==^m%q zA__7z6y9CiV_X(_-XevdtZl{B<(k~lf$Q2EVYhId$7Z&RLsS^7Mw9}XRYCCyTW3W-A=Uc;eo$UHzxQ63v27|pR9+(wgYk1DR zx9uZn9+Z4W_TFiBsRv<++i6wx`8~GYqPUzfVdVv}Rl-s`C_L;9_G<3Xo2ZRxbFrss zK{lvvc8kTdc^VO8Az*R!h@JE)=~UJ6WoLEGT|!R4@xor0nWC2~nNkPHOo1JhRR?0( zi#)ozu<|QkcEPK4WD)CB>GX>Of?0aEsw`oY^#@f$4)cH`eM+~iQG;k3(31g1m3x?5 z&g|5J4wY9-aftYZNUMU~!-1U+44WNJ6NHI76=Lj;2kaS8@!=sjYb%_pBGbidM|v@e zh+I^z@m0nD2bfHKpk`kS>g$)^S6jI8-i9}@ybl%Co0UGof^1U6;YvyHg%prs;r=7e zsW&wMdP?BA)l2B1+6ak+P2>_yOer;i5M2v{>6G<9Nq7NBO#2RX8 z*Enf9Tk&5k6_-Bcl$^7QhIF(?KS;eQBt}}`pG$3Nh&Iz>zhHl9{k95H` z26V!dR47%7(nBmdrSr!w!FW-nyEB_~#U!EOtKqCUAoPw9i825mo=3zMS{JRqqs0k( zQS)&kTpURth!~OM;)o)Tx4={#t@ul@ohB&=WEfXrWK=M@_|yxe2~tT_U)z)$`k`9T zL|)R#*OIR7-dj|7i{<0!h{Hn(0UI3Je4)BRSTw!xd}%xufigu236??vN*qBNc*D|} zrG)=t9a8zOdXr?R`<49h*B!cU!n5;+M2_VLBQ=!BO-JU<|e$GR5WzI9U0Gh&p>;!wT=4)`Vm zijlTvC2;{IFE;*|QaPj}4+Pn;?Ey;~O=%z|LF*_=%_Xt967jVn78ouWAP=dGjeY3I z5(8{|29fqLMtm#POD&=wBJ~Hr_4pOmvT50VoTCtiIsjhK$9;@*Rz*3AgmOXf&=c`c zPa7a2XXR;QDRgYK!f8-F(Q&s5=kJc&Lm5T-XoxP3N?~tpB|fsB$HBIRK5C7 zPf`u-jaMdE(@ag+GT*}5A$TFhN7VBvl_o)|%OjAuqmC#j_@i;ygAa>`AWA-9-@z$- zzI_i$K^*LnQa(_H7cIz#fx{?|H&zS&BLASj^h@Nwg8#r@!C)`?i~R-v=(IuoXZHVZ z{3HGo{BfI?82`J|e*cHgw*s;Yz^Z|o(!Did38Hs#W24KQHF$?4+%~Va-jnK< zD@n@n@(Qn%8RVR0kuS;#V_Gn8sM3^BEQY%5J7{4JmdGlyvaDM`TH9>cgI-m~65+rQ z)Ed_Izl9X9GSY5#WV@BO+=OHt&F%oSB-)&26_hE|Fp6uJL64ZjmYAo@B~2ut-PJln zC4rs2y*J$dl0VLaD}JA%nxn2#`{s89RsU7Wo`3CNNSkwV=d=XoLi+}_Pte>Y8=}KbA|h% z%1emrCdoT=5kNn5I;H+wSarFeI8&}R8rW`)*kCYivSinZ=e;ihD9O9ymEGk|-}iL)JD zE4|zs80lM1@9h$+D{Aacy5!sB-r+lY#mJ}v8cwx0ao0;NY`X6D3|rcrqNSeftaV#w z0{f7cL2a%jS<;3I3fZNf5VT1nEyvEX-+ue7}Hw%;&iSrn6Xva(XUc$-Rgil*8XYPmB4+aj4yYj!2u9cE-cv>%Z~YDgqH@I%_Z@prW)Lu9AK! zG~T%DM%B{t@W!Q@y%#R!seJdMsHNv}SsXJ?G#Qt&svgjwpnbq7Oj)9_Uhc>*E9&^Y z!i?T3tWNCSY|0d`C8S~3eERv>4AAMf$ga9K1H_Z{UOU3;wI)vlwvCCWnbS%vi7wc( zh8lZ9*`;qKaoOB4UCpZF9#nM{$9I;hw+7~Pf)-YDYWGyM3T#BMp_*uDi)TF2?pI20Z1gu5LMz&);LkBvuiaQHsu+UjmbT=Iu!rntid>LnJ zE^EDPY}9M0#kO0$;asRH)1u9E?bxHV=+L?=qJ+FYnyPDI!OBQ9cdnurCDFcn~$w-bV5UVRs&g+FigG4EefQcHtH_t~aMQB{xC|Gvp+!i5~ zt51!1Taz=}>%WuCR`F`{PSyJt|Y{#QE!UJ+5Kf4YhJ`wYP%^Cmwa?)y2ddgV&lfZvr|4Ow&0l zBX7*~%A=}?bWS|t!H9EU@vgQ4HNmI4YSvc@cMml;rKIy+glXk%VTw}W+kUFIhr1+s zi>i?$rUr5DD74V+xN9R;{f`AZ?jVi2l)7ziW@R_bZj2V)z%6aAjwfTX0)j>J(_;(h z`_+8VtyGsMbd^VV!d#x&*I0aQBf#cNu?5DL5(}(SiAP&mGo#@sI*M_*V<6nsqK;X? z%SGm8oI`H&YQ&c7Y*bA$@!+~syE-l{@n?`S?*r%B=wWVllW}@v28UCnM=ECstXkOB zx^)6Xi(JDHXG7auf}v$)3z>qD*OK-(s!D#{4?D*=&4{+FqoO&FV^LZv>zN~56 z+X=zPRIq3+XSUJ=AX#|j)n4G2H5hz> z%wT9aqgKhX$pzl_<6<*IvXQ`4>kPcFqm~ca)wjI4)l?m{Fq61S&FI|%9qTs6ycBwF zUB;%liDE2HqpEg=yL&kD7ly9G*p*|vIdOF7G3M@xB$yZ&SyPtGxtpr4#l#f!cSfHI zWzH2ab-6BA5V||u!AnWlviK(A1jh@XkkMyevJ2MPgVy(ZUzqR zvzQgq*LbBnF|l2}vRiwa#HdCt8hG{Rjgpl&+{_4M#q~K@wzr^XY3==lVU5B}t<9pI zn%>K_-c`z$?x0^&+o{KJWofvH!RdXR)&f3d!C^2{TW-+$nrZ?J{-M7A=NLHj7rEPm7 zf{ERCLfn{;s#UpH^5fbi8ObnDKB`Z(x$Ho=&r|5bGSKn8kfr(6@1& z&P{FBo!*G{yGaGznFE>@HtPwI-p(m zs|5BPr5W6twz*$@9o(6xl$DJl%N-t4s;K#jXS!pEV~*&frz&I9aXYcJFM?gMt2i(S zU0x-oP}6O*Hy_Wfao|f?{65*1Om)|@*RK&Ji|XVy*Kawz@$(Uuo|5uaJ!DOdXJ%^1H;CJICWsEpx3N+=Q#EH6 zGo`(2TQo9@+uf;osN_$Ul}$0$k7^hj+ZT?Ry|}eAGURw_w5OsmY~{S<*vXr22+(ut z!FJ8a~r z)D_JRyQ`z^-bo(2Cp#qbOm00mjo$4Hg&8}z+rZ?xrgpgjo8{gbt4+mw+p1R%JcVSf zl&+sGgD}7pFw75~=N@Zk9NOu@MSa1bFn2XGR(pt!ucT^l=FJ7rZtW5`WQ$_9TAMpn z(zLW(se~zVVyoMAC9x-QfbHG(!hLpE6#D5jsbspVCj{0AnKN)3LOXXcb9xYX;TIj8 z4y-+On&cxECx4D@#R$lAXAi^)Au(|P! zP@E>jBh^7Am7}nc*f>cRp&ro5LC|nB49;cKhbU@x4^l1VJohYh2P4$p*eh`(=giJH zHwhVsBsI%AyLg84ysIxSv!0oLQcia;6bjfgRqQdY;EceualD~b2IHJyJCWp%6hUW6 zm#I#lI~75nxyp~QJt1a3q=MITxM*eUB}V(0CxPZioUNtQuXVb|qf*ySc3%?fIk$<5 zzYYZRk4U_*wc9J!$+whwSx$9btZKJkuq;H&<9?nSBJ4a`Q+?tJt{66cJx(G=itvl<;obIcXdbNAb)M!K8^Rdj$ZnFjra|lMh8ORX1({ ztA|_Fc}cF^9Wt?molZA)n4x%fH>i6Gdq5!5?X_}_R)e)j_V z*)ZxPNJrnX*d`=Z)XOS`x~GX<2cYeXJljJO8cAu!Gg{&cm(i0Qtq8?)C4?EOtD9EX zmSf|(*5Rqo&SM$FdUYoKRP`OqK7ib{0V6f47apTjtY2q$kfAb2iONheDXg5uGP+vP zo(0;zqCne?(e5L1lM_G?b2|TB(d0o@*^y3+&pyAu>g70 z(}q5=$g^@GdT7_7e8snLUDK!A30bpL(&ndk#t1v0x)4Evhe_Js4(3Vd zcWZ^MP(01VY>E#|emkoy<{=vb4J<-CDfOu9z9YU{D+J?Ic);xk7u`c96I_RINex)u z?TF6eT2;YxE}Y=V!XjE@tCf$Rp{OiK!^%~ic5+kBecVK5xQtM$!`0UTT$S@-;B>kn zgJlY(*`$*FBnx#g-Q1$jRouHX%O^-|l3-Rdg-o@_IKz#tst;Etl@66X)9@Zo?qP%; zc!S1avJ}~wiai1I!QNrRuD>-9oK`~jz6d{$b zp*X*cKv{zzkLZtxv$c5%_02V1cT=9cd3m2sX}KOalvouJ`)aL3u=?yv!3S{s03QK^ z`MF3iSP+qdkc0=w#|a~i@Y0Y0@$f{5D%P`tW@!TOe5Je6b^Q;#0r4aWE9ZoGGG(XY z9LIASVfJz^UwP9e)3%AvPZMS0m*ajSK0Yv#A(yX+phu3lHXq#Z0Fs74l|hC!ozI~B;7d(J z#;G-El~hD&-z`^_cXTg^ER%*ZNEtI_`6@7rJCWn1*pbGWfs}k!C75_3P%NRZmV==O z-xbp0!oZwGw+!HI~`MX^*l*OJI9xA5~}mN#peoS(+ulT zQ}&W@9D>86#1SXT5?~xj#SGHGizYEHEIF8wstsV}3g~lzNh~PkAYgGo6bPV` zi9z^L?&bO_RRoQMlb_&dKKt6<`6>>Os{L*YQL8XGcJWPq?-S2sY3Ja9;Y0|G))QoMV^Q`tmdmWq9i(h-S*`|zjt1K?FD`qD%o zrI%j)ON_E!U%^UoR%z82Oy*OlEjySLVMxAOgMiAh*Mjm z!fXPC1Vs$3UXzAo5hM1K=~bm*1)eA7=?Qqz*PFiw8VIe}LvbKp{m#uCg(AKvGpi_7 zV4lx-Vltum(NZ<1_&mC0Sv2NZYd?C8ph5j zK}H6jVD*pgO{2n+zL70B)8UGMbP|NlNfbfw#u4o$in+|W@m1uRoc`1eJGF#fYF=;( znP5MKEWF^yFG*M3KJ{!V^NX3F!#F~s?&2d20{~oMM-&iou0kO>O#+<`?CC{T+BB&3g%`#$+W@3MA$E0$52&{6=BMwH#RPVRMxQwr77q(XKW zTrWIUUmsVIZZ9)Sva+!dtEtsW67eD(K8*S`kd&!HuPc*58lP1%7Y#LkOyVbFd%(+b z`aMdk8c0dE=Iw{3)fx>!R(#}XZ>eTVB(^TVAng>jmy;0%)J&@FUXkBzNnG;1dlw7N zI;(CqDr(f_dhqq8ZBmC}`#YZ`wK-CoHg^(}o-XBsa9a4QH;RK+dmlZyyb7?k%Yun} zwlQO4HwC6ukb0Btf?!;8X-=q>$;R@b_f<4Q-4gRe#1gRO+}p}VgSDAv)aw&Fx@3*! zo!&7`;8MGSvOc@Zd{xCxo)-j55K7&^t+!XhO9a5Hx;-!l_c32A;D>jrFslYO3g?Zg z+rfLQ8KjDB79Tx>y50k!wMzztQG%VT%j|;&jLOxazM@IUCmEw040FVDbE8==!l zV-wKSP#UKeRLXbHt}t|6XKw1}H#O_vXlrz4VClT`dl#4l!Fc1B#W&C;Rk`BZINg|; zp;oV~-$lKWClVXmCEZ8bF73;%C1_c>CEdqpq}x84TdWjp5Vmnnz=DStl)_^M92tr& z7OK;fQXR!|e!7&4PUQBJ#j#VOP2|Z|!N0Wn9iKq?A`akkk!F%XmNr^QXoh;B(iR<~ z_nT*o62gc`2>5hC#s{RpTtiR-qvPIgkd8Fd(l&f|neGU_R%qjwnuba1SLA1lRk7S- zl}w~!PvP--KCW}n;>v_jS;EvMr_e?R$7oOo7HKFAm+(Nggo!*tKtTnZNn-hr0cpH? zE-fKxq#;>kd0d_qG!NmUUP_)`I;6+@He z$3;s=RqfKtn~cEKF>h!Wn3SJVAnsqTR{Sy^8nbEHPPB>#o1j8!l2_zHkr(74WD!Bx z)h&DiG$fcI5{_}=hzc7Z!P;9uMVwI~1`k2=yUE%@xmt`T!EX=lNsZd?W|;G!W92nmR3!!+R|G?__3g;7AT-f|0? z3kpyN#PH-x<|9uK0Yw-{^2`xGhkR*OkC!R7l89EXnpalCWmYZ=IOvskBzsZ-;pEMe zEN>_kln%na0yoOX;CuqI3M+J96XJ}BJQTqyD1;&7fDZA1NH3Tng_05hvB+HBziMU^VRppmA)QqU?(pb8e$Wt*Xc?h@;D(t0{ZaV8hnI8_~JU$S77)Z`221PeT z2;qrq`0Pm&U=%Zoh%~Yx^uAqG>Utqr#K@9@b$R@8h(!%0 zfkuaz=ti%t=tCunghAn)5`j+}%_+(Fz(>Vx`W(w$(Bo1&Xic%hZ1cyNfaMG-j2al3 z1&iMYVg;dOkPt|aBr?6B)aQck8KN<+KuERpbSfWH z^uG5&L8^*Uu|<;y4h8o%6i9$}{v1dk!p);d`>=?O5Ey%lV~q|hpEr6Waid%3u+A_L z=<|>w%_ybeI|z*n)ni6jMb%~tN5S<9Fr<>cF?oCq5Q|$ke7zwgBrlykxJ8j{rMA}x zvn|l9o;HHeVB8~C45YE;o#GbNG&x1tE`z?p^&xifh1IU?!<)) z6olz?@#+ODt&Ue}8;sejTW&zE^wz}{;_Km3i{o9jsab8x6r!!jL#IJ{4%viF7DSbb zrCoD`TMHU(p>0@_8BaGi9UL2wZS{yDwklTU1_d@rv<=pVPe2H$<$DE9?{IT8-8lX!d zHcQ#L?r&k3MC$iiBP^%aYO&r>{sLeFkjdvgtYr49uNtm#Q7llEx5Ut2(k$k+Xd?hY( z_#=2&aVH+X3Ap>l1gXghNjA=Xcdp)36@mj!qF4*_MXQH`L*Ib7<}w7lZH`3;hJ4(D zvkN3h@g5$O2*QQ%NU)RdHoh5ROYL_IVC0B8JY@)!iiiXUMn<>OmaEfFZf`x}6)lK4 zQFxeL1{ffMvn%V31mY$+I$W6sgj0SvK_?VQ1zDiVIk#ymJVHjCOcDyD@r0^LapMny zFlCT<%Pty=Bt^jk4Fh44LE!P+lQgu7?FeJGKX{9La{8j>?9FtxIg;Hm5jMspW;IFV zPqQFqTc?!9R~jPhSz!YSI7C3$=z35bT;wuIe>)HwSppL(0AFCj$wD$4_>_!PI0E9* zU`Cr)%11jq>&R0^+J|OgF=YIzokil&!l)PP`++skRT_Q_93@K#-G?M$zc+;>6s81R z`WO;5_^&9C zt#?yOuw7}t3c+L>meoP2HWp(JZrY(OmYH3k0}y-LPv`n0pgMrG6UL}K!+49DkF)MppYnOBa8b-fno_OFu0?e zmkfT!SU*D3B%gJTB&*|%&$UzT8$|1=G1eC=uWKub9yw`URxOm#VJE}}p7>IdJRaiM z`1=wE!KN%KOA=>_KKZ>z!_=3-2Ob#=-s6RBib-vop@}d2gL;Abb!;vNFvM`CO1M-Xti4r*a-_b%KS-Cc~7=z-6iX{1}f&3!q z=(ndJF@sxhzPvS_si1*7Bi!psYI~1ySdF^j)lSP(bG32lEmI&|Cq3O<=5JZn|biGb%=9GYrpgu;^R$1rd0u-uD@ND2%rsb!?1fJD6SP zOs=lN`z0;l=Tsz>cGkVeOHZ6q>N!mw?J7nX+zR)a+AETbX-@Yyhbw2S@Ns5qS3qgE zo1o0#o%@m)vW;8`XqBgTR(qkEuPA73P_5)L<_f!^86!fcWJVU~=gA|Pe70)IlWd@( z)3o$yI24vQFSSK#>F&j}r4F|?$7IDN*u0ZO3!Ty?m^r6#j0loMv6LkZKyiARv5Zoz z#HJUUC`j<2uomk>*beW>)%^O}j>zgUTlyunWbu(zYFHK^taoNxSPtsEx}YSvfvVIU zpkmcFn0U(IuCOuC+zKJf zuo%~OOFL1TPA5ynWV%|yEMY3HJ#qYLoUvnvOF)wA@cZlG7(WlF)^mjnu2vV-=SX7Y zNp56|y9wR38+62(BZ6Bm73xZ=5YR$;kf&9(beZh)Z`(&fg8UIfJ|-eA8smweB8D&w z@FhtwB!XI78ZImgJ}AP13#>G8hp!?7f{z+(iO*u_tv!g%65CcOBE<4SGvLBmLap&D4i1imF>O@YM-yC^W4 zLT4Lq#!difXA*=-M%#2GxcI+_4lN?A#(9whTYi>8IGL7OA$=&2(rec4nWP%1x{U_> z(O65$>#}xes8;KN6q2y?L@mKLhFG|uq~HSYalJ2c2iFf}I4ggs^>( zrA)+%mU;cyq?u@CsD(F@RURF$9t4ZjhG{_&@BnE*mcJhGAPXi`C}fZxEG(vU<8Muf zf=UXI)8#`_gnSZN;sJ4J4H{k#8;3jq_%iE2c4A-;L=Qg_5jAh0)i~r&9sQ|22M%50 zDGLVm4#=*9q71jWA5}UjoIOdO5Eyu51eQ=_P&)-31C)b`6eNaFp$Z0tL1YLhX%<1o zYq1x)Gvlf7qrqp1ht0d9;#vrFwZiufRehymfV!8#aLn?EC@X2!Pm_Nh3^^t7GE^Ew zSR*)iNFxQrAU?6rtWU=eK)i2`3J_tYYjSW}0hVV!474N0kdm5Eip-DE7)HFzJ05t{fPnqEr*E+%=MGR?XW_wQn2ahe70#@c_#U zB#6?56;`5Vz%^Tc29zu)_={|$A{P(fqJWU10YS!`P>wi(2gVpNQsU6Rffrz`e}$?( z<&K>mp?&!-ThGegO+1eAM$NAGx-wzUt8iRhZQfd|8I1h^QNL)Pf}VfCodf zXavtT;R*^3WdM}m zgSgA9bZ=!)mysG;4tF>RG$UfR$`*R=rgFkWGF(uqylc<%^!9m>Qw_M(NJ)7hAXW4BxvDX>1Z zI{MwSZuCHL{I>-@Rc~l1FfppRvMG0$Dnn^p6knbdoYKzirwE;!nTH=MR9`%VRTx-k zuWtt0sIRky88WRNM_pz|)-rW5+}JnSZ*B>5a`p+{J#QUSEaDr-Yy{ntQTE@t>dB@M zC@tRHwa^H2UOu5NAwpf<8m4M1(4t%#byC%}cai2_0M3&Z6pUxoGUk^o`y& z=ewm>afb~42#C5I0@2g-5ucGbsqlVV8A4uP+5f^9ZyatjH|GYOLtL=7X0w`D*Z zWNL5J0WnaO;;17}camyCf;90Yh$6y_C5thD>Uf;o)T$#$ z;JrDN6+uIg$2~4>>tv^{q2YfK9*Ys`NKI5ge0?SBn6pYgWl(~w_{sYNxw-NZ(TREu zD4&Z0gi$Na&?*XT@gTe#gUCFFZq*Yb=|%*6ig{XHpN@ku3d`?64wbh z-;k-c#pd(5XD+S!2z5TPfvLLIS6aU-cAKgf5`7R7d~{e@VG33dQSo97gX4mPKdrq! zE5{lu;-XSjqzPZ&W01fmk$Axa198yOXi5evbq;2@2oX;sbsKV|&^iQXmb4SHp z`oY`lwd0^^Np~R{_HKkKYtIrnp|m7OPsCZ{4i!WgU!(?jU>+5ah4CW6l95}n3kniB zX+}e&gH*i=C`*eN&q`k_AC4?1BJQH7mPJy)k0-3e`o2>;OGl6@t`T)Y>s8=1OI^*^ zilkF5Q11^HV5sHZCHz65I5`DJ6RpxqPX^)ElpRU>fh{dbB3)F2 zw%%yh#)6*)m`$*3v}O*aAo!yUw%veL2ZAI-8c#QAVTdveY2iXwZ{#QIK8|*ixPlqx zV=^}y*!rJE-X_zl4ag*=HaX6wI#y17LI?|&b=iGhYDu$dklz(HkrlMb8(_S$-aa+K zQ!OQ!MbZo%=VbOBy?a5+K)M$$onKWrx^GCGg4Fjr?VG95R`YD-vqhVEPLvq&21YBCf{YW(23D>r_16rZ zy5~~GA(ow@j}!>Pi1OYn-+JJ344qY`3Z8kVDn%{wCpf5?$T)K6g5I1(?x-q7U79-h zZW?+T1rT|i+nH=GWhqX*qp7u(%B>9+C~hmT+OU0^8u0}1q1ajNIHtE-OCC~quOwn_ zEfVfVa{?4Byw%5MiH;;of!Q*mqD`Yof_Dvq`jVF5%bPgDF7vJGl?q-29l_Y@I-4J+ zTZN1WEICFO*-337ar6%?7Pj`PKTKV6BfR zn3mPmcMD1euwQB0E_n%57D;7<90AIL$q?g>!o)_kM4*mXG*qfdb+=@SNhU-TNhT6d zsH4V~Sr8&k9;M>qKKEStMk9M=-u=woFwq6t2R?X28q~5QVav>>nzxov zQf5p-Pfh}lk3ig{kA(xWq0j~!T=FJ6LFkW$BZiVN`{wYVMNvRRh#zb5Cx>Y+!((5e9jZ-7$xwRd>44GdZI} z8K+=;0bxfWNd^X~RMM!7Fj$i~=tUO?i!_ipW|I(c3~-l>F=fM|3lVYg(B7?Y0SsbP zgX6xsmfSfzLB)IuZN_nnYdO{3V5?gjW~JPC@uZC4!#0aHGbZ<<^qL5#jI=rH&z)$#^J% zgq%o4m13A6@WixmND=aYOW-6tN=L*OZ-_~pV69IjBt!e^Fni%fE?VxihhE>Mru}F< zRd`WoQdzx4RPyY#cx#IVbp+|MgrHp2Svo<&Uh{cPm!rT(9}paFKeA%Pr`ku;INX+n z1fKXPN^y=!LV+UX~ckF%{byqB2I1uFB)~33eb%xbxt8r zl?&umz0u*j8Q(U=v4p|#W{dNaept|_NEm2IW?#%By)nd#Ka&Xgrcz z8~C;%{1mwemGgfLl!?Mlf%zClVMmTA13Z*4geVF)aRK8*Pn*KQDJ;W^KuIJdKbxX1 zQ^F+QLSFE`6rfgpbr`wh-x(bOSi+IVG3dD^NHanXrz$ZuWGl5CS@Z#GsyGdE} zAz?P68zcfqD3qy7%R_iv0Y=B%BgKGQwl5Pj2Jo2#l9RGPOzo*5No=T$=IXlp2pwF? z2PdHx3bhB;GF3wAMGuyBF2^6FR=mRvvc9Jg@#uVn!Ca4r0mghappHGEMpzsOf-=3< zmX}_93ulOf<4GhS@TLJCAfiD~q{;_{iwPRRv(zO~8bBr7^0fM;m5M!yQibLlI!uov zrW%+~bv~|%R?MpmKv|{2#$Jp9wU{!s^|yKyU9~EyHM6G*@icVI$zfvZiBZ0Wi%|#^ zz3w!zh4(^~m)sZ3jjV53tRfDypmcF|=7wId%%<~d)egF+Iu1s%lIybGa$W?^$%Sp? zCUP-f5qxwEK(JCO^~>2-@h70mco()>(cN9Rd6O?HlTuvv4#XNORM3J-Q@nYgh0CVCxa{`y$i`^i661D3yd#}n zWTq0Hbgh-PShIa|Nf@;Yww6PyD)n`(&MzYdqb4M|V02r{+2&}q zZVT!kfRC{$3ejTZ-zD(%96zvRatX<)m#fL6x7x6?J+j}9R^8i|h|^2N3jYKli8F!( za9IMPN;gMX@g-yhDEkK!#)Aws3%uMVr-O+|RHUeW!o<5?eWX;_3!~dELtEjq#8D=9 z5LP&4Cc~C~+tGC3&9@XGD(25-BVE31B;ojT|szD(8 zz7j`%X72Q!p{f|j7URyFRB45b*s#I&o=cJn_;lN;9SIwb$fAK!$+$@3h)6xHvv8z| zuptJNS!Dt|NdTnK;!rqklo(GRFQ>jK*1^R=5b>24V*}4(HpxeAwse5bmipZ~bwHVb z*wW$bP;iJad9pPcQDH{}0I-yea*=uG1c`Xk$~dq`#h39y2|WTlNoE{b5RE)Z6DVJJ z_NeD&1v5$q_ z3W{zKrd%)B?d@fexJ3jeVNhe8NgoCckZN`~gi!F)kQy~+1}&LtVs}}tJukvD6%Beu z%(Nhxs2n)eLhCf!rmZDp8fs%ok_I1Ap~eg1j6tITX@ej^Bn0MqQ|U{OIXuNU&G}tJ zlZ)GJ+pc|-`YPFoExs+CeLarW*@wUil9NgxACm~6m=@tQ5J_BlssMPFu~F{}AcBr2 zk68s$QWF4pPy-z$Ar#_7#uOx8>v<~Zu0AzJL&=F~Q}7ow6S~D@m+Mt=kteZ-U3&y~ zOC!Z|L~NBHeNA#iLr+ecNScx`p&-jFg@qwWl1K)V;!+b17mOsN3aEb;X(e-b0h~P~ zGbnN(!e0PMS=__iiDrtVTV&$w<-(F-TB*J9AK*1Tbj6m^)u~%cwJ|Wb&*+#l)5B)x0ye1dzDK z)b+lnw(V(0pejB&X9jk=@o-V>!qUflo61*~mtz@}cf$-B$Xr(EQGASNRK;Wz_E5wM zzZtGx5v6rka|v;(>sJMn&1jMxN2-0eXvHNV%y$t8b}$*GbzE2z)P5~H*`a8pI=6K_ zbXn$ZxZFF^O^iK9&CDU1@E4s7YeSCgU3Gjr>4k!`?T|g#AS{wZWdL7!rJyKq{UgQQ@)+ zB9*Bh8Y^xRsL4Flc=6-#9~Xr~)~q0VXTvkiK=L3rF}T2}BgY(<4uI0bzHQJ6rO;@; zE&%xBa7-u&@xurypANn5nRBE;#Yi*X5escqQo0S>VRY_GYr_F7hb`M%MI*<9#tz@1uFwoF@pLv=1q9OgZWSKJ<{YFf z_r3C?HP6-Ozc0hQ;1K%Z@PK0=&z;>^pyBm?Tv@8^yP)Y;h z6aZPL*}Lve>6Hhv;?V9yX-_`4Wv;Gi4NZ2Vdt_O*T6t2#%5C+aR?gupQ6ZkXqSpc} zSa^X-N=)w#fgYDcq%FeB88il;7JHlV^KU^Eb=eW(#2j!fJ}E08feDw5IYOe^^kL~8 z1R7-0ToyPPl&CDEf%fJ@1A#sJ4($z_BNN+ojmoP>P@j_cAovjjGv6ga6Vt>xfG+r< z6Hq~6XWEGqpo_!JAZ;lCuGNB+f;?D3UPE7ET@#1b2SGZa?H7Or% zS>q0fS4Q(!7AW*<@)-Mrh)P1}AO!U^_>)e&m3a9b$d)k_~6QB@|) zHtLk~=J=f3MV+Oz`Yeo^5jI}2DGHWyB_0u0O@!4*F)@4q=%133Qb$@!i>C!1IJ^@+ z!W9IwCGgAufcDk7afM_-<1H(*3?Tl9!12u7FazE(K;V>@$AgN}()(MxC=C@Kg$HOY zKd4vCmrQ*!@q$7qkzCd-X0Fn)@&%o?pJmM^FA9g)OwDr>yo$97LQjvmCGBbfC-ZVe zF{}76Un*_{z6=T^M3`{MDw19ZGaU#YuzrEdDI0Bsk^;l$gi!?u$Z2DASVj$5vW7(qs! zJtg;s_5yi{37+?!5(^Q18L+{G=w!PZLuLI=<(Wmj=ZYZAHd%j5N#P|1FtW}PT6MSZ z*y#q8Q7I}c!ajZT!i@+6YB+5YLodRR3oNjhh(}81v85e6;xq!_`X9y?Bvn5ZVoGzT zIhVzdsnCu5XkiOSamUSAmsh~oKw4L!(#6`SC5bT3-bz>C*YiX-QUqyy(=A|I+d=TT4 zqf1=K>S@c`6xmQ9jBry_-%gUabf&Ax1JdnTz>qm&fwKhN+bTL`h>*Awd8KZnHhYCl zTsjdOty3e+rV~seO)x#xrI{7mXsJGV~m$K1nOfbxJ_D zrLtknyoBMbR7=`}6$ck~&_%sTLM{5Z8qMVWR@GHX(<=9{U1yfFK^UD$r)CB!>}o1g znxT?HY%b2AW+?!zT4-X-#CGuACJ&Y1Tnoih5)|(ohFa%Um5kQ26s{+(`qdet&F1$? z${_X7X`sPrB`WFAe1kbGstB<4Eu`iH!pY1oM*42R#A#b==T$26dZWCvTG6~sbipON z&DP?p+V9{f zQKOVqL9Hlq=#^t^I&3L#)%A94!uOY-v&MEd*S|ys#q$zFr9=ZHqCsp8hJ=Y(W-WAr zMFb<--^8Iot+lG8hAKi+WOu_`H@xD!~Hw3;cI8;yzIo6D! z1{M$?byY8Ckk!7FTyBAl629aqAkJ6ZvbF+Bjmw!*>5n|N?2)bz8WY%Y^bvTZ-8D_Sr=u3lS@6hu46$QQAC21 zRY(#N7`3-ad_g3UqKJ}vWYt;E}zr$bxEZ4-pUFq1zRrO#nWg$8>M4J zo#FVCgrG3f>JdItYi@+(`p7iW@I$pJzon`W*90VBP(YNLcN7K)0o+_D#=b5C*dqaN zf}Kw6)YYz5(vnxKSJ{SEPo4X4-DI9ysJnVp25E0HO0{EDB9DlKI^nv2(8Bm^6+n$4 zHa-qL!Ga7RgtVM*6t<}fR) A$%AfBm+X5a3#<_J+1h}9cdfskeP-Ew^K4Up&t)& zot5pqwA&(O8oX;WF9c$$i%zjDNuO88-d>0n#wRC&36tVLIfDo=XQY7fmM<~TjU>>* zgX2mlq%JVS~XtTR{6x41{Cs%_rM0)U&<0_Aqq zKEu(9doq>f7)<5u7%b~qj^78W$xZY?^Jmg%+gBi)|2Z!HQaSHE>UsN*zIqLvdiT zAeK4I9k_Y!DA7uV^a6&~?$B)uD5jGmmL%<9Qw0)cFz- zk-lyOpPRx^yrMzMCZ-;gl4llC2NofH@uWx#PZ~&r2uyt|-? zKH8-)s5PkIX;$L}|b@>{m9uG+N4)3&fG6p+zaVFnzLvNcAk60=VcP0)g9vLp;9N9-&Q z3rjSh3KW=azUGIiCC5a}0hlZ#51HH~d{-7=2ag{|h0%ObpC^3H)j64x#~JoCCeIs) z2AVu2>y7d8JPJ*gw|Fc(Q)T(a*-fjx^gA z=q-p_x^@(@X;_rej!7A$bkIyuL3H#Hm-yr>UM&edR&F*k0O-OO-ESpIaW?c=QdTtag!wm!nvf zz#2fx-FmE{*PRZTMVX&JKeuX|>~^X=b=)b*je98`bXhbg6XtrI?@mJNN%db~#%3Uh zq_BoB7^Ie(V-;>szT2ZN-MBRP&|H$0&B=xHcp&ZKA}o7i@+fct@yEp$tu7j0OMFxw zHvlt?cZ2 zDnjGq;z3#WS}oy#yc`~2!26$wVK^hSlUsc<+)-!=7sCJTFY!YE+>a2*{zwn!-@k-< zzn|pU&52Llll)cS{rsdXI z%9kLrEvZ67_KMwQk&aZYx*VUMV-3?BX68#E%3@tB-g%pp7-4F$nclTDi_=WkLxAj? zT}VJ?d1+1KPI23PQBKvPBS}sU;Ib!GY!hVQQB_Xnu}=Bx^(S2Moq2J2)Ru@yWZ@W< zni~vS6E>9CK<8$}FzLJABc|>Smd{{I)l~higPcxk8a4A5Fy+0ab0w9m)9F(IOxB~^ zc2`dITlA{rILmmjY#kQU!Bmw&jhg5f;}>>nxbfYTW$o&`N-BWjp(~WCR0-l`Ak_NcjhAy2@Ow zZQQc)WcBnqvo=*0<09_y=(_|xv!QY8G9|-WjmQ;WTUPSg7h$;SZbNl_HzdB?N9DNV zfWFhBmXRP>@;Ms?b#t0B)ovuHFaF$az?(6mu$}3z+Sy2 zHCZob1`c-GbYr`+upTrwHb-@hwRj9h-F6Bcj_x_FzQc)4h>Ejurzp{Q0Toj_vvY|H zrf8>qmSEA5nXfb&w54(ioKRhwn?cGIh25B!b}i`oUk4k&nG08Nfeod3cI2ii_1&t2 zV`H639=pB|g{7}X3)Q&f+%`5%+q}Hq4)#l{UMY?u0)gnQ$nxAsnxZ;ZV3KeYh?l)+ z>t0IVO5oiZJ9$E)2`M`s+yJSPh3!u+6+xHP$r`Smdl?wU+_QNnRGAeCVQH)-?UK+6 zR%CZOM8Ru(1LXvcj&zh;nU~O4$Y5v$U>mX4Wc) zIn=Sjbwaonr%uz`oGvGJjRyESg4Z;z;qntJ&sIsIsC5#zm1;ei+;-`vu0z?`v5jk8 z#O8{Z757$fJixNFJU4v~4qnXA#ouKK4eR1qe1yUX)>IvX(d_J;3Kp{x=v zX2FwRK7DdomG;(Tu(Z^nuo|tTvsgmiKRMv5ca`ogAc@&ov{pzQThjIZ_v$18WvpK-k<6 z!+4g*m)+F^RuDmSCih;>3sIw^X}!vxeKJ5>oi43r zUc$EQPVDW$C17EV9h0$&u&7v5ZHbGxNYtd7o5<&;9ZzZ0(DT63W_}%@akOdhyhK)`>|GT`1Z->JhZIR$Jud5h?DvU~z)F=x+r2$b!xg+wCqDk_cLD zy_sTVYM@>#-RaKz=;7?Fw!^GdNmedzM%ASp=|USL7?;v5`>yiWHKNdOk>Sa2Mih-_ zB1I`Z&og{e|L7=zff%ITTbC9?G5Rvu{(#kqG$_XJmNY8KT>-FFr; zwULSm$F6iIShVjrm#T!jEE$DegV|!qmU#}! zHFDktuOr$gRZT5Uq_P*B`lZHj*ykwa^sWn($6Du>-RvD`6`@@qXDhc?&x2Avb*|pK z%*j^z1XdU;YuUplouPHYY`E!kjyiogJxG(65G{8_!BLf0)vm`@>}z%~*jOy8ZRo79 zg-e%cu46KnqkRA_WnpM>zh&#n8P?f-bwtImQhMM$#HUoq%VS!EUtZRO($~mxKovqy zxou~5)4bPXrYsX5EKDJh%NUGnxM;l%VJv3Ha;pbs4s`8TNA+SbUOr;32Trp#U2XK6 zIa!|ta+Ks)x>>1YOlwf_v==^CplRxE^<^n{!)b=b=ul!bil=X^aI%UeU?o(@>oD!P zit}l?eWN_Yf=1PXPTwcHD(YvAvAxz&x(J;VQQ4zo^R(_IQp#AS9OHYU7z`B53HFPu zK~ffHT|FqHboD$=jc!tcl;?t5O`f84?)76hv5^?59^ul-zg`GcZERE^uy>P_anVz% zg|f1%q|Uc;=FHKB4wX6yYBx5kgScSTnoZ5cwoJR3+nqBqf_t`M zm&o)~k$s_O3A`X!5Q>a?F1S$4I>sAzP@FOHx64IkwKbKc3D+{74$KR)QQISk zLG0zLUu0?ekjW-zdh9B!7V%~V>ndHkZtxwh7PM0ZK{K@mB9^)QN$4|*Fz?zcS4`6| z>j>F}O8RZmTZ}`{yVP;bnbgy;a1!P!YSxFdNx<;yXX5>L4?D=Z`za}i>D`1X%2xDf z&111@7SiX0_AXYZu`L!JYi9bgrUp9U^zJgx!jKX2fz?P}j%ruj{KtzCyY^h{~do1GsdHv-CP zm0pXw?_|RVO}@-@>4ADz355nGZT7gtb%%)Q(_3&?2U42Cv}lgCrs-KrS8clxkc~7o z@z&L;c*M~9#@}^volI-Ws%Bs+B3v9U>a$FG3ED#EW@wi*cR^!Vsw+$hL1K{Lo%Y9W z?CFatJbfE|ES$XB8df^skfG14;$C|#w_hPxR|l~N)H?odp4@JYDQb${JTE9vLn#GZ zF?MZPXysHvQFf|1w>jHF_MP`SxK1p2)b8WF?wq=+rwmE(;uPlUQ-il;d)m}j)wG@L z${3${TeLXG4ktIE4`LfrE^bRByPV2ps|adZk*m(oUQ8L->ThGF8}dxk3{}<14rWDp zs_1tY)!j8p*_Xle%WQ;=UTc?{d~6e9^`^Xz5y4{-mJ*7zb-T#)G0x^(DV@I{#?^4d zM-Cdu#htZxI;_OTcE&CioLUgm#KbLDuS(}h?%nxr^Lmy|ICMSwICa=;Ue(NdSpK=1 z@iH{%+7074sM4iP^kZ(WY?&}pvBFprId&3AN2HPDBNj4x8|Xt1ITe>LtDek!vnbW| zhl;WTlH-e>^xQmcA~K($y1Y-Fpkc)YP_DnX5bhH9A5e*z6B!dfO0~ORZJL)E>o3Y* zJtGfoRXNwKc({FA1#a?{v{X6MbVE$328F7tp4Jluwc__6c&up5rB4>iBC6YGq99#b zh(yYvFdABRPKg`a>mdy@8)$6~7c%w*XK_=oq0;7OVBQdlh2S>P?s%dW$ihu0VHv?t zh%74(#?Y-@b=a8{uV|M*y(%K`t(wmAT<@>XXG$q_+;g6#Dz{W{n049hUr6Dy{JIktbj3ZM)<8vOk?@1Y!C617Sv2@+!*1DU# zZJV{(Go=IPp>XFVb26c_u#~tfX^l0?sb_6%C6Um?*^|ZQRLn|FGjCQJ+#cSu zen;NT(Si=yditIk(w8RBjh@#r<@Is8Yn*;-cX~kNvr?kKo?f|gp3SU!tfKd_W3-y7 zruy2Pr>82V?T1XWl)Eop%bt|*T&Py2?!ri3ZF1mc_IGeHWQy3}#j*^o=#$7e!*`~K zR-qQmJ#Q>DkOu=QlzC34BS5l|-ed=DfE?BS(es+8{`*hVLAo?eQR zUN{NiQp&7^iu;?I&5f-3198}60^6*rW#zE!X=pqPmEgt1Oq%6G88;rPoElkl>iv!9 zO{+5mIVr75t9Wb*@6`FOYV0H|Iei}MN=|iNK$DwU88YZ;l#%D# zTt`V&nKPWuT^{hqxt>%8*0fO0j`S4!*w<2iryzp~o0&1+w;Rzic$ru$+0Nzcxu_Lw z1T6Jg!!^d$;LAH>qz%MRJeUin`$iHvY{t)`n;GC&WSpL`oUXeijGn{B2#+M0?-(*t z0ZIvXUUu{vGu}&(cgXeGT$yF8*(&I$H*UB*ok-BuJs$~F4Qk0mJUwG8&q2B`4!IVc z3|3z=&UNuG+$N)LvpZmdXvcM@VDOO$ccwv#0=f&{6W1mU?^{q5t9&}eW|cV3b4Z2o zgM!gilbqbcA_nZ}zCAB!Mq@h)S7LU&K^OAQL?uSX-c?#%3!ZP*m9FxH>+}_cu^h3X|Hy?<|sqb`k(SX(Z3Mq zl0Aj0DMWYcqn>BX-KUJNyH!Fh*yI&jldhx$=MqMu0!%z-j6b*ni6oIJ`Vu?fd7SJ< zi)3;NOZcOUNbCnv1NhqPD#QFMX)zp9h6CDj~XXN42ekMllYV))Eq_Sbc874)2?eA5@`={v9iI)mpHQ z53P(3S-}h9?Oc$WELGPu$xU<)1q!VuFEOJ`J|ZZyNkZU~wYPy_ijZ_^NKjC4NG355 zWSm6+aq)EML4Gq^UQ(*Uj|>AC!SVC@{Vbbf*M}@xGe!9H*t?dXblRh#>d(T9U7z4s!9hWGAG{G+zaoXE07;dK` zIf+k(P;bL!p)=Mw5p^!d0cZp}exv6~Na9ZHgJ6l~A=(u64WwMvY{jU)`nq|lSLBt& zm_FP~;tXMQ-0)ghG#JpBc=*EXOtXvhw+!)!2U1XT9fBy8=>YMAAtbCP=Fzy?v?)90 zFNkNQuVI`nj;aCVVBZ&ypN*my^&x|fFiwHFFc(8T_luAAa>ww>I{4oh( zI;u1CCdUg_PshxGm=GHNSua$YHZ6~m$rn;)iml|4B;_zBj{*0F0v@+WUJnPvA}!E@ z$i_EI0oq7rD_;)F0J1pKSc$WO%! z3mHevs!B~LkuH*SWc)J4A)Gl$9}C!h?)8eiJ>Fz`>b`W%R(*zg$OuQO2@nwXT5@of z4JI9e9?MZ{)68F-od+TjI@=^=)yD&%#sqP3Miy-;9Wu>cm3H)jYJ~3J9HF~{??tRd zj6+?%m8)7K7{`X?7^cSTid>VytwuzLMY?FvC`yu|{>RnX=Y-d@)83#jt4@)29i zsuW^{IDI00J8h%ZbqS&H&3ngu9I7(uR#q0!P)h8@yoL?6hZ;GYE*PcQB0iDURm#O# zx}0iP7s;Lu#J5NlMYn@3&9J+OAhIvp&Lx)=#*T=c-stDWO&IG%Q>AXCqwUu@?Biku z%Wq@fDMgk{E6HB*%eoVwN*sk(b9CXHEY@SQ+^v}wyG&U&bT-yw65S)cK~P%m$p*0V z%pyQqpt(HfaCHy}hE$$U(_Zk1htm0Vsokcobrgl96uY7iB)&k5?!bZuqs&wWzL_Oe z9Tl}RB+|E66AA0JLORM)!L6e)F2{vbq*%3M4v4cXYTOGduSOUQ^TuuXQc<0(QH-KZ zOIehTo0!31TdbkaUc)*5A0LFnx^kD%0O;!{3aMN0P4r-7DwE39xC zRc}MTL#rrTDKZ>0;?KcFne7p<@2$t7za()cn0GgT73TQk1!C~LFxHqA#o;1g(RNxngY!{GvMrcGLA6dS;Y)@aWf=e&P)30TvcDgTWN*NjIFnRqmIot zbJgz%TIItS$mEHS5JaRHVcO9^iatJ8&5ydBK6S)Lyptj_IAn1ZCx_8-0Hp2`Nqgav zrrrrkrq-~7Wl+1u5ykNE5|X(vV2hDNF}oV9A7S|v{Ttm`gjl+})fl^F3#z?CURWwf z{5JMFnNbCPHZH~-BjZaYAd}b7k8YYEhpJje5#mH4>a_@S9zyRhUgJu>u}w_AEjIRL zuZV@BE0EO@78~JoV%T^Q+E_UOg@b}L({&1<7raUaSVBvWl)Z-8#eiXF-XfA)299Iq zTNe#8)&+SVeCjtowRB&?YTm1zs+VkccNbR)oYK;isU}~CfiHBk=ngoOLV+nLzXc#n z??CjVmJ)YB*=?&4q^&rhC@8&dk_Kt-9x)VQ5$BvK-B*zjWey0s^F=Wt`BGEDraPrW z2)0QdUWclLv$=BZtjNV+rn?%(tQMQ`$3iiN=nDnKBk-n3B#0Ww4R6r4hc8B%|QX4@gpIaQ%mm)NWhB3v?PO%7Igqv&kXpGlRP9BA2^v|^Jx^-qWazt%(}qn zolI1=5p0YMXy65l`LYQF&yAwu0*grT#(I(wfdmP7;z<(lPLxF=PFl-uC`XSmydD&Q z_9Tpt0|kjr9FgSiYtC|6bfe`CX53`=cXx z#(dhK)^XzvKw-v*)P>{An<+X%rDJLQIY>DA+o7dpkwpvx=?xsfObZKtydNe&7FjWC`*%iR&NGI+i`bQN=WWI<57|^ zrJ|c?GqU$q9=^jm^z;)Y)He;i&QMYalt}4WEnDRmX_T!}IdrY0>8C>4Qgtl9VJQ&9 z)wVu-IvUvMr7v;ipfl^!QC&9V<%g?H&Mx+@W4>JNZ?OB&!x3_FleM|DJjst=}!O_lM3loS>HFH%{ zy8^s-)NzY%Nv(46TfXC4qkOY!oc8Srm@$rmmM=EDn>~d&QQbRtLt|m14%n=sJlU;C zR_zBjU{81B)lLD|c6Eb8ubd26Xy@4IP*WxGYWqmc=JKkWb6Q#pT&|K|hpV{o((ia% zNVq;=+z-PKh5TaCzJ0JrqNy5yEssx{fQ*PAWwd&w1cAzGg|gxJ{F3S%Aq=7cFNO%> z2ol9+kts=ID3p^tz8~D#=J6v#QY(Cw(YJ%%> zh!Hz%zd&`T3zjY4NqF(4 zP(L1qqzo{hl7@PyPRN1oe0Mn+)*w0>M=2gzK2HExfMNrPWxf(^ml+SbXR@m4wAW@T ztC*xw$9JF52Z0d}3L>N)Q)^4WUMSN8#iWm@tnTFg1$&Py~oRv)&Zm`TOGC zDdHi=ZhX%q3>S`huE7H!)tuHO@hb_Nwi%UN>GXin$8OMQx>Tw-M9@#T6`FQ8wgFf% zV}BHbV8SH^niycp6ISK8i4!D*mX>n+DaLDjc_rh=h*)y44N&A6DRuD1-=( z7rq3V1h5G4k;jKXj|7mC`UB{4A}o0+6T?zS5EeiHo3M~aA(D5&H2G>^i*!9=gM;j6 zc8vz>uw`T#x;fNM(+1a(E|V@Mual1+w}zaO$ZcTQJ;KjTXrMF`LhK{ z6hU%@g>z0sG{mJV`Fe0wUM>5bJJXC+>y2AZuDT|4`s+-sO-FmYFJNa~igPuH@RTm2 zcOIE=i{q1+>fUzV)7H@9GHR@W1DsJ0E3Ht!XGf;OzI~%``Krky>pe@)vz#fWvuM@Ob#oClv~MGw zf+5nKV`qd|GZkPzLIJMnD<$qZ*HTW;y3-6u+C6+xk&{oT3fjDF_EgN#bQ=tD!z$Ji zTF!U~?7cfoy^}M+3g=SKbUV+T#lc(G*iz|l3p?2;P^RtB<3p;omxo4ks(CqJBFmzg zELYP^RcJvD9kPyF83qiXb#+N>@K8H%9bD|Dwmo3mvTenl?A2UzX-R`cF1QGc?Q*F) zmoW(9ZO#}gL_>D-UMd%gs>LJCSmZ=AB14Bex*cl~#}T(m$Td?$s*%AC8+~16jiW(a zIaQ9lOFb)cbCF$~Q7z@Y=Ma6TFHJygKF;1S8}Uv{-y*4aQB_qox7>LicK4c96^}nN zgI-pLk}9DmCs;FBJk13_)-i|CRx9e~Am9&64Nap*I_H^}x6wG1xoDJC9}yHtQB(m; z67hc(58}isC|o~=prnfNYA}ePP%$gRi2)Kpq=M4kw#>(9Uv`g1N*Bxp$DzD5IEYof zu$wNFKTi@BtQ|dcjl3n!2zE;>6YNgd(SSR>KS8>7#G$w2#AE>{h7gMt@x{bKD>1`| zlSQNvCyOS8u%P-%#QVfe$9_PwJt1rh`E~${0Hs1a8$)1aiIx?P#Wl($?fl}ng z8`B2_vfG324{H(;ZDB+}=+>;Dfd&i$Y?@wmV93084rs9}SmcT*L20C@kx?8_1{P^C z1D^#-j|~YWJ}MW(h;yB?o<9i~jnbc5`FLGRLz>5ty+*Dc@F4n1h2iS(_(T{o$wK4c z(nJ(NBp35MVn&`9gNhQM%x~tNrZO~!V3F}5C_&W$CJX_LppXeG&?z9Vpfnu>g`$4a zZh?b{Rp*=b8ZqNzah(%W(A88mjaF9`? z0%ji+Pz01Pz>o|u@JdIf!f+Ch5Ij#BDnR4<(;Req6S zgFb>8W{9Q=fHb(IxTt{675XRAl&SHA5oK_kB$*&0LXjjJ;gQmC*~OL!&LjhjJ@F`> zzABCDD+2IEOw1mmQnR+QeA0dDGH#?n7r}&z2dGonxQtnIqYQeDQKuK?jQPKe0hTa?FNOf<*n&i)>|JBB3pil|IKW?HdYV%*$wI$Z%*#a> z!b{%;@n$MmpajDhqC2S~Y(2uz!;3xu?pTfmJ}9sWv1a_fhNl$I4Ur-!IQ2JyC8W48 zlS&aqg#C@X0A-uU#}e=e-&o&*h&IS9F<=a=Od=D7e5RQ&dUiYnYd6Qbt7Q=^o6XEa zj!j!5f@I{p7#c|gs{=i5PD0YJ3}czFILssz*B*(A1ZRknNDU4!k^{wXq!2ksk_I*r zBRpKWZwn$L`iRQyQ=|lw*ZKW6k?~mEcC@II$0j^JO}v+Z8F!GnyU9k?+a!Lwm)Oj< zgGWiNv3;*#rc*N~asc>bm3hI)cnlC(pNC$br1U0*s?qLOm;= zRl%=D?TgyFre^0md5}t-6F#@=+ZAo~HVp}#9?5;G>#8;thHGCfJt;@F?N>I5 zgAg9UJ+ktE$F8n7e%IW1OYOdu(Od>1H0@5h+;t3$IIp|C2Xwau9qkPk7A!&NS}yEk z3_7m~mj=7%z1?v=QLSpRdG8JHLT0%addrz2I0h(H*{MxRrixgStm>nmD~ddL&%{Q?C0bBMmQx2JJW=Ay9i)pS z_;Mvg;in84V0>AXK%g+fKw0t7Hl$0|a73hUA6UoUn31`;IQhA<=4r$hTP|I~iB9b( zr3#r(#jC=yPGht@9bE<<1VNxu_;gB-wYi}eR@_*-j1WmD5|O6h}akZ1L4e-$H(Hju8nOI67PtO)ak+9Tx6RWxF?~pa;t1URLqEfL#dnl zgk}$qkE{(Z0k9_>HupA>zA~6vcf)caJT?8YB5PQw(C|?IAhRh#=%=3DYTKyG3 zU)bvK;9${H@lK5SR>a|0wNX2{c=k@~`2=e=@G4=6b1v{rb&{k{#-f5TZ_v@>>2Hu^ zSj#?!s>F^f@0ZQT#v~S9bQ*+*76qH*=djjsq(P@rMY$ABA$X!l1tJD`gbv0)mm-RZ zKzh0^2>79Nx}i~QnezC%%KLhAE%r8N6{|iLnzL>0-m*?s@N^w7A>?%vY*0`fB78d~ z0m9&9nnt%^d|~5{j>LP99w*~Ln2`qaa&e;}2Skyj3OV#E`MFk+2+{dBAP#9!DAG|r z6m3jbKTcA=#1AuQ9jJNbLy;E> z3{%<5M5(u;;~ctd?&)wyHeZbqDUR%K3wCNj)UZyQgq`I(y7|o%I6dszTn$E3JfBVO z2&dO+#Y&!@N5q{8B3a$}CSD1o zxh{8Zv)u%3@yfqgVn1r?(z9g)2KL283p0;>X?2Gnin^?Dc2{>aF*-(s)3ssv`iBaP zY#H3b<)WDc?8wDBwXts{eoLj~p_#TU9}&p*s&#yzr?NUl$^fmkNfBo7`1R&k)BrCpcR!wq(DNFL1|t|(o{gov}XLO zN>zYpf;z?E-(prh;X{3>&w+n!IF-c%zmLJQv{l_It9c!h1dnPl%*;!ZWzjxr2;n2$ zjmi#-69_c>!l_*OtN^M!(k!ANVjwv9EwQ2P3291OkVOQ~6q2yB<{b>Amved$8@1?- zEbQ2)eK6)dH*);=jG<1-yY-o_#T3E~>K1hDYTFrF8TxnEMMVz2(?wg z5<&&II0`iKBn%{+w;nJ^<1EsU9vVtUAhI#1WqNv@#74q>4o|maw&{G;nG9$|j!0AZ zu52|_jS4|6Yr?TSdp>qn?v-fBQ;#iFl2;!=90zj0At_n%Z{YGr#g(GcHxP)U#h7K{ zRFsShIQw-h_*J0{@P`C4jXV}jfkBpXSW!0t9M zCl9G4uhK+Ju&1)#}m3LUw0I`NQK$;nB8`euTjA8cF|uD-Byd5SU5$Nibo_Aj^3PrpC1tiEN@Ic_|>MC z3%psy)uB+dgeWW_C4`(=YM$Vi2NX&Z!=b4N;!^pkh>YYOX*Xw7jWmRrQwfOEBO--P zKSLxYBG)U|xk*(M^=X{7$yVn#*k@?l?n79OB>DklB#|YMPzv<2B?!$OoLOKU*`Ez3E*ToersQ7o!!M#!jRwH|2YrvZ6t&9$urZPt3$ zZY{IkL2f*$dKU`HYg_2z>ln2^FAi62wFatJa&v=6MqpD$W68Y63eM4Tj2n#Q@}YMg z+qS8~Xxm&nV4HZ|d{(|2x3`jYZ$|n%sCC^6)ZU_r z(-C%n*PVIL!+E#^H&;0^US8{dm7}Mnvv_hob}VpN?cY&cHQuz$jM$ky#PR757;JL9 zv}zx=#EUkP21*x-rYLnzwYZ!XvD_2EQS&Vf3)p6FwxJKMs+4Kkt;wpnFp_5KiE8EP zN6`^vctsge8Qhz$5nyGCG(>C_Wdp;Jsj3+WLS!<4H))7IIctLd+d- ztL4hqDnN}E%kOo$-AsKPGB7D8lDst(p&xw>L~kQf&)Zi&9$+&F&(b_tQcQGTUy z0e(1j?Id{-9|vHhKD}+mgp>v`SCXOwk4U|ITfjZ=B`Hiq48f3n-Rzb%>O}ao!p1^0 zy`o)I6a(VZx3N`KZo=~c*<&iJHpjy4_;4IhY8xSNTQUaP%x41eMjNCzV*102E-Jw@ zOAi#00{h$4>oNRkF{Fo`|kL`uMdxcO;?5LnJS&@B!;#=XQc z(E-QAi9iwl0zF{e0Og_JH8B0Z1 zHGFBh6ya11NSlRB74Z0~4IDKnSV7v|Aj5oMVPb=J$tVgO8^F4J)&QB7tcOLB5=?k0 zjgEnP8dgkhh*}$Rh_F~U zj-ZcdBibjXHQGnTg$Un^f-K^}o(50@vJjc$1b0_`6AGy_45Ep-k5eDc?xB>LYZ|*s zzC{ku;TC-n6fqlo)391mdfx_?Vh@O-QDwA!1V}F&({O;&jA{Ht7K=n0LJ@MC()6(? z;|qzP24Q@!<*x_n5R85&-#)RqSvKqWoR$SVpcqmLDd6n%rjfHQuFWy{if-N&WW(Z#+g zURPX%`gV#mZq5!_hnnEski3eBSckDQwbGu5Ecj*~JV;bUndGwkk_UkpP-cd4kbVeJ zg&1+6U|9bpOEfXe!ATQ)$AGJS6BCS;kB zXT@x=Xl?7&RlhfhKXKTW36$H(-%Kh;wR%@`;fsXq$B%8|h#Y)(Cu$Q>6#%6K&UtHR zNYb@N!LQp_X+}TDb3K8xaL3TF|1DwP$rFV^!>mz188xk&mvcoc75< zXfCSc(8W(Tfuw-ZMJmU}cSN#5O9vU7+xBpGVZ~ODiJ?RtF0(HpNnFl!l>lsZ#v{o) zy8`CmmX(CBUw{N?3C?#{j%H9cQtJH zGVNC#xcSQLeRR`$GR=9A{fg%*5jUJF-UOhPTVXF6*Md7P7!}tIG}6y8Y4z$Q<5UM7 z;z$uAh>aM$ywyP-f`p31cy>gbAt8_)cBnyxQ06^wi9YBa{n?K7jbs2qX~vVc?{Rqm+D7G+YoR0?~wV+vJxe7X%*|GBCL9 z6XqmrVFJ~Yo~Lb4W(H5bq6uSq53)C4B(9LF6|qygqag;UbZLsV=EEnLoy}^YWZNi5 zc(dU4*=H9JBG0PDh5<)14pdQu(1Ly&AQ)lcmEqWt+CC&&cZPeLVc3!=qT@aFIq`jx zq?nG?$0Frv8#^hx!|rHOLp3$kIO*}eVBI^1k2dhjE~u1!IgwOkw9S)`NvMet^u8dk zxx5mc9)Su#<4Xq9a0H-KP{w?4$^!-gDvyZ;p`(N;JRbN|Mf9SYzW7ryWjyf`#zehS znJuA_SS#!am2hvbUP5fs#zby4>{c{T_~95)03JBP%`70yZEXo0C8sh(UyUL__`_g- zQbv>(K`33{Hz{e{BzJZIQBaaM<*$7%CEI@&pJjG^sma=;R?FqqSyC*Pj_kW8{z zJ4}9rKc?yWZe^RZ@HXD1li4ar&Ldk);3Z_tRuRq8*Tcz(i$;Ua7LrjS<4Pq1OU!KZ za+4(MgH8-eaBhBS(3c+v-Z->v4iezv$wwZqH$bF8bj>^r`0t!VKo7zuavO-e4dPYg z(84NWkUEPQv6DGQYM-{dovvAinaObCEaT!2O%5DL7fDFQSx^>D3P?o=^AfP47)=fW z#X$rbdK;vLrk5yCP}ZnwQVS>!IH)!)P=}|-9C*x}8-Hp~?n!EP!mm_@aL~jwL#keR za&&t^Q5ZV)=dH}M9b}d=Og=dy156}agR z+wAkRapyDg-!WT$O1uoR&iNSLB%)i`czZlAr!eh7Z`Cs$RCpY~DM2p4BatJi5LM#X z_O-SIB#H*3=XQ;muQ)2`sJcc4k#<^K!t0IR9j9nOxn{T-=dUW5m$RE3((116?Xodr zkj8rYZdBQ6A>BqyO3-Gq%jxwK(+$_INm^v>IZi$i4oCQwO?b*w?sS{7U7oFQKNepV}dI-pDxJ; zSS@mUbyqYYJ(~rYTqZ={X5G;U;4q1*nXB5~z*tK5JuC{hi(iCxv}UR{Nn2T_#U57$ zYctzf*2fn;*kcm#-Mkd+xRMxI7=acT9F&n{f*^ttD5EvfOV-})#6_j2j3b*MYl}f7 zfe9FRgq0N7$PI?%#yS$y3HnD5ogFFf#l(k8>WRB|xPA6c7x3#cSwCIDgSi^v2A2Zh z`05$)XgNs;4L!}N0*p|ESpf+aG_>%@LiZlA>0CM=Y83q6ymF62#5>}NA)h9!X_Ut z(v6giynkye%I0fq8=hedixBd<1_Z7mVvU2JZ%a-17Q#q<%UY2 z;E{kZz_Y{(OAIg++>Z;bT;@JJBJsZxB4cO~ihvsz1d&AAi3q#%K9r6rTTQfgNyGQV zs_`pK@?$Q8yNS@XRV|lhhp9+|phP1d5vaNAZHnex(bZ=NVlkLgcl=$D?a)BWc6SyJ6q$`u~4gr4Xtm`{*I215ybeLokxNt1RYeUfr8V1ct<3y8Fx*e73m*? zkhM_tMw}Ldjy=Ih>d`omiatDD0mp3>5C~}sd`o3Oae?B>1ILi4x&Ty_YN7)U_GUFi z*jfZXkuIz55-NddXzh|CNnr^+A9RMQ{YK<%rp=sid=_}*j~^2bQVKW;N}8wwjtPGSQbIjVNW}lilGSj~H zW$mr0q2;NyJLR^Fjy@t8g^ErO4hS30Ln6=@p@7PX#P@;YD zf(DFF-&L6I(sb(rVTx1&R#+W(Jwo%a4l@=?l+*`QQl*Ghd(!J5)Xhx_%+$?z>=z)K zTMXxF0~tzQ^V||d92Q-BW}d;=5w}6WLC<0{+S61u^3+C6=PZ_TI^b#z_El542rN9y zyNtYN7{HkBH;T42bQRZwTX%TT-jcKHVGO8e1T7l(mg2-XYj zacWtmyMb>_f*sZzbRg)fY_hm+2CG1$T`~+NJScVLKtt`=cI4if(VO-?r4^)sAtKA{ zp`xXrl4K)rDT|?uJ>dzn7T?LO+@daIOv;r=qm>Qyj1MNHd3SAn*|4w+8NmoLO}%pG zo8~K!>?^z3HniINil+W3M_9=u0+^1T ze&Fp{=yGGIt$QC<%{7hU!GMpR8RBxhP8JHbQy$leM2=|3c;UfZ-FMHZ2ij~_wJ$Jp%a?f7acCL9F z;_zc|SvX=u}FoBZ;wCP+stT zy2TFn0tkr>tVVjJxy|dMN5*YGRP5OC`sZ> znd3D;r$Jmf7BvNmnuV)$2uu>Z-w2av zb22yZNTlC~A;uC1f`Kuhq@tneJXntwd`dnj%GR3PM~Cn%K!EprOBDnZ!4oNJDH>L8 z#wu+5MojmnO8T(zC)PC{E3TZkTggOuDi?uXp4n|u^Bu=yJ(5lxBA|45_#FpBRfVB5 zb-E;Mb3jtZk=d=r2}xpb1&zQT7hfTbxS|gh8(gK!unyy%$V-eYh>}YrfX+p@aN@b_ z&c35z#SPwISDLj zWtb{?2rycb)YDcg6^v<(Hk&9Hgs;}Zy`!}B>%Qm~EWL{Zb$w1bl$4nB6NfpCde)g) zb|#)I`>b{8s!qIzM3_VxTQDvaP2t`MGJ7MGkhQmLX->Iep;UT^Qk88k!rf-PEE=%s zOT^L06wqfYZl1J^))tb@dDJDT<>y|b*Ev6 zubev`@zT5zGQ7!{7JCqL88t>&jV4+mGJ_eW%Q`d`d#0FG zZ?88jDD2(O8mOE}lSBna+(D)FcxuMVhMCi@{22PU^F0bZ&1bxOQUoaFz{I zq~6JT#&QEkT4}ni(DznVt;4gR%;J*;P{c5;8-Rw=l8elnjfsaa6H!^qeHdYzukj&nxLE>Ix4TMJmv?>4EgM~a-dEOh z8p}t=q&vLPp0@5z-P&-#=VHLpTaO-{D%!KNy7cP`c_5N~w_6J($(Dr21IMpK)sAr9 z)*5$bAa*i9sa^wz9tifdVRqfjTg`SxWSg-P`!jgf9O;vGTDpMF&r&dL)0f(~W^Zdd zB<-51MakaYbeC@doz_qaXA?#1>3zAGvTK_?q9AJ%?A&7d=H0lTimNoB*zxSEe8Lo~ zyB4JKXNGkpH;kA%4bpaIJz|04Bj@bJ8*uF=MGdRtXu4jvY|V3=@f;sj-5Xki+L7G3 zmyTwu&7E-|V<(MAwSx#F7@Tt6$KpG$VcB__mb71eN3IE-H=4_)aYKw=)+vTOY~)jM zFy_jtHs?`}uGeNerh$i*(hc0IV^D2o)|pvvySb|37&{lY5cugG0-mBFQThW$sIC=L&pz?h6#2%HTO`CjmyVChG zYLj)NL%p-O<(kd+2<(HRUkX|?7!ue$6Pr+h%h~Mv>lIcrsYOR~)b2$3A$>qc#a--gw!HeB zr4wO!m)D}JTD~a@v(L567=>2Ch)^r%6v5hg<1~v)H=%@_DXQk7X>?qUt(U8L#Wmra zJ?Wrh(7j`C&Fx(yz6i|s4_V&5dcApLiydPdRo4byN;c5LYjXFzdgoYU04u6+OVCue zx{Dt-VdmUA10CGQ681~WDqlOiIusK)N#rf3?am@R zFIS7Pa~askN)A@e3Y!*}S|z`-yBomx{a+b*_I%7e$;Faoc<$y#-c>QXxtr+|%&gNF zQ{9I`vaV+wN0ykm>wDth=~k}J zYZw-L0W*=AN?!0_8Qd^C}*u-}wQrsr> zPSUuj2|W(pSi{NAmUtkl3yxzp9`8$2Us?Jc7UzL%2ySr*GWf^B|ap~2UB)!nxX4%>tE1I-rU#9X6 z)M-m0R~IerJxZR<%R6W-*-jd6DVqIu9oCwip5A24gWKgT5s%X}3MyUoR%11{+iVmC z-SM>%8)d9kONNTSR&%11Z544rI?bWY4IAZq&1XFMpeY9(#qX9E zoOb&%D%`!Jb0H>ld1GnDVhB?~<~^qJg{`$ELA=^MVcIT|%{ACoI0-H7=IW$(Oj< zEK}tUvAFsRRAGXJ(^f8Zs|2YfXm?1KnL%?CXqFls2!Q$6 z&`DGzQH)}q_aMn}c7xEo?o*_fm3E6**6q}JmcllcW6bQ~VNBi&#NTL75t$&=2?~%V zP)fb(t6bt{h|KNE`ZKG3zHexC3Jin`S9oVAg}dA86q?(j{3N_f}lZ!UegLNWtbtiG0G^cDhvu&@y01yn=R()fOd1av5X0 zo;Y3`?AU75u&8oVX6Tvm2JlV6w_&N>r{nW-pj~^%4kBi1mRfs5l{H&o20F0KyF3~EHE{|?gK|#C>s1;sJIn{+{M@gWvZBc|+MQ+3ykzU?AOuW%(6TL3Y zBIIzj8rHHQRh49CleQsQ8l&a9WKzK(~9C#m4 zb-ffR^fkHJzi3kY(3JFB;P;(r(l#Wjiwc4@GU|@W1Gd zB1+wqk2W@zT@B`Xi=h}K(B+{uVG#0aBdJLQ*qLIAR*gl=F`P1m#Oa;Vb67)i>Goc* z+zROhCGArxrKD=O|rd3F1}j8-$%lOV~ruMf5`*LBTw&MB146M?5naoyi* z;8tz|naY&no1IA~lQSN+gJ(I_ZPpHLJH9xuw?ND7QJmFs1cV!*R6F&*xK%|98X&Gf zp{l9gDr)N9y_>dYw+&RSZ&nxBz!0j@A+K7VC~(}CjVlJ_4IHUSoF*(Qa9#+*zD4cj zrg1Dr>l!w$x$xR@*u*t@TNO74Ciaqtj<yq4}{ z;jTI7;`aGg#L02>&l=Yb-PMkFj@XlU=IAsvh#yYk0lw=GpFd?K+EQ+YBFuY719!JA z-uFtrs5;y|qgdIBDRK_iocZ?Jd=hHerX5sxPAnZ|98yJ-L|H=B;|5}|#YsXk+v@Ax zy>uQ6u190DL$t0C2eM8TRp>fJwrt(sWsBX51TymNvDhQ3c^Z*IH(raqzUenXtRaIR zQX7yVV;NhUyc+DaEJ<^u(DbLBlDzkwXO$9iO*eg#Upd|(ep|H9~jI)(cv7- zE1rU~8W0s>isR|kTBB@Qr9_T**^4!2Z(~9ozY@{CoYT2`p*UsDB4=*y^0HbQiL<$P z%Ed#oWd-a)TncO&gR0(~Ai=WguN_kEP*Tp$;Fmc;Xu&UJg~xeosfv3rcLyV^z8O#v z*IH>eRZ{XuAJ=Fxc=t#${+knBz`RAnHtwVN@rsmLX^eCv?e4FG&4sR;n;|QWp0Aoj zKHzgVk*RX3)%G|wr*=8svhk(ThNp`y3d-ksGW46Y@XJZ{hs-ZIru#!PCJJs^lN;Jt zvY72vhqfCV#@#!1qgjJm-SQ^n(?ThZdZX)g773vq;$pbH6)Shg7VMfW-vw&HE>TQw zJaSG-Vm31yv!JD_!m6&?7B?nsH^O$Co@8%y`la+_Z+4B!&>~%_ zXON)o=N$>y`atZPmw0Wh?%HdW4x`zjKwWE(7(q8*38NJKXlEfVcL9K4;b(pR?-P>}Gbn9W?Bb2v*z(1c{&od;AL4ZE{R z#sbnarN^2!tCTl$m#=qp?E?ic6{MVE*$--^c4Kl7&MwYEW-{(tn}<@T2#U;WAe7#% zuE@o^?TB4mV@3+@#B-83UYV%hl)PZaIt)Ehl);xR-#}&U(_u6#hXi7}fTz;M?o^V{ zCY$A2D;(|7y)IS>X6GfB2!m`xxhu_%;$>$Yp1&g~_map8X0#XChwye|yXk*9u<5z_t;>0A}&61OxRLir=lqtv9)PH@OB zWU5Cjkn==PAtA!-gdRDUtIRy^$qeot!NPlZLWY;XPi_;BMZ07k zSS)gnE~hM|6Q{K4yO||nbGtKPPH=spoms5|hAZvR5g%=yF zGjG0R9A&Jo>KV#N*omP>0s{H}&yq(&t(RT4mTo(he&W<-rF1hyhW(Dh6f)@zX zl`SwnlLX0nBo=jdRGZQEr)e(StB`UzYK&rIYEyQ5MxgTqs_x3yoa3aW2d8vFDps1z zz4fk#IFNz-r=jUddeF1Ea5owNMvU zf4GqYYG`OH&=XJBGoUrw5;#@@vZq{XQNONL#z;moF#1{2g7 z70TxYXLBDu)x=DdlA~2)2DzxMFp10z-9q-o^>;wEx`6v}G;ut4LM4~OuJ^Jjj)tw= zpwdSVuxn0r?NNo=3C$fa_U(&RBRNQ841#(K6*8zUt&cBGqJ?vql$fn^Vk)Fi7zljf z)(jXru29)WeTtJVQ(PU~w&vvaF;nP&Z9BWRkKQ^RmB{P+*v~Tv!QK*2^$k8 z>uOD9ZS9N+9?8vC=v>R4ZMrn$*>zy^s@=r%xuh7}FwjSq=4fn6jhz~3Y|zTAdn8fS2Y@T=!jvCFPP(yDrR+XCfAy&E+ zg4wqXWzs@SQv51~KRwe6f=pS{x+LHjspN<%TPts#jF#CWc6Vou<6=<`@RtTVeN&e`5h`eX<`RysB;Am~3br;hbjg~b%<@o1aPO;)_# zrqdnMS6|h?byJFn<`S9^CF60Swl^adL>YyGw#8hRQRWLd3rmXIsg;*Y5%mm(aKw2S z+~`hsFg8c^m+aEqJ*q91e{w;@mCld~eA;W`h@)*nDJ!xz&UEOV6N8M4ZAw%z5%i9f z_O~_B8U^7;iJ=axwv$6`eGBL2q?C4ikCoY5cglpFYIJyB+I%A3=&Dh+?fWSms#`}m zMdCq?@CF+r-!bl*BaY_&=kz>C(vsGn9_@WDe38Lk7fCT{!Eq)P@o6&@+8zcN5v3M! zQ3o+a0|_9qMnpGfLiGE|iu=}UL4RikEiXFhlL-#^-+i9HPTF-f5x{XJTW-f-A6tF# zLN?t))5W251rQ$;k;V!G4B^O@hl^Iec?~Z4E`k|%y(-8K_+CD!1KfHYH^7Vb6Pur9 z*GUJ&?iLefgc8$DO|8Zzpf6LUa~0sGVW^8QU`js=KH4FlGH!tRBE#u0iUwQ)@k@>< zMg^J8(hLb?B)H=UKIdX6Vj1xQs0vJLrJMKPI{U%}^yZcuMCd-d5P3rP75A|Rd4sT0k$ryPXYAsDIM`~=;3O{b?-)0YHQ zqTVGkd0RAz_K&^gWRB#KL~*6#$7C1E&x!*}LPZA@5n}`HJY?Z&uy#QrpkNwo0okI3 zpCKHOqX=!S`>E$pUsk)L<%(ihYP#Ybms6%s78=oP>aD}`|=oM3Tw5=j9c(HZzl!J}cad|jnpJ#%mK6twB| z+MbH8nWe#Y+Kn}m>doun%lx{_a&k|d zD!k*cqv>;2OCiG?!NOQ^0xp%_v}BpLysSEV*LIoOVeGzgi-)ni!;2EP0?xA@ z>o-P$%VAbwEe58=kr5JkXybm-|_Monf zt6F2MVO>-))Nvl`9IBrxT6(SSg?4zRl`}iDWUjeLK`#85#)3-m=3lt&2;KTK)um)H zF0ol#x)kCnkW3<9h}b&sP|im*YgaAkw=Q3~cD^%^+q2V1M57iKt*PF=TvtY+5~_&V zwDLf%)sBeTIeaQMcW$y!m@qt5Y6=!IoXSJD*h;Hb8RvA`=e^2hI>*dlnSHA2)SG4c z>e4hrHwheMV~C1-YE@N8E^tG@VPLX-X!}eB(}_(7u7ks1yN0pVHYVdPr)*<`e^Osq zBF!+Gk5hfZIlCOruQ7L9Qhax;vApr|$kAjiM-!`iow2G#g z^Jkl(cv5i&%Jer5#XMNJ!!H0f(dhdWHp=TApCjS=>oanq$`X@mlKCC0nDoJ%j2pIK z;DDe($g+tg1rl4*AozmBK`hcFUDpl|kBbF(HH3)x!H^)cl{fNb2%w*ZFhexPBxS1r zEbwGL8-lJHsaC@lE~27HG3lx(a+ zOLw1Ks>)mO$8buqQRi3cq$IT>oi1=W@lL<0c4#42wC8vuBE=~u<5ylLNJa{XK_)u6&wA?7dl97Tt z;!7o*d*SH63%?=uNgJc+W^l2Tn`VBal2N3V3{zkQ1*8FF)g$o7r5rQffj5m|`UCGp zgOU{v2&0a$bdiA;-m7DFl0IJ+n<3FcOd3QGSV)3Gf|RcD;g)YVWLlQlBTNzT^H&*b zK@#N+j{Q3|HK`iZ%B4=)vsrDlba;ZqL^DH1OcB;!lJQVji016^fnxQZ4k$rI6g_Wf zv#q;4P=gGogNI2nf&@ut(BF7<;L$ul;=)A}cEOFsbb~Z58Z7lTK;7-T`r}j9)6XM+q>rRY^83pn)cjzJwl>H?(AZ;q6qKIvB3r}z#Q=BU7vm@$ zc#*bBd-#0qVn1qM;zdRVNsmJx&$k5SP^&5I2$;nGXPLd*$ms|!@-EJc-Ghe9((QLJO^1Qe$u3@YMU;_;#c!379zEsUbxSN* z7H6zp6~r81Ab}n{NXZ2)7(oD_;>#%@?DgaL--`?1H|LQIGi;Q?@!fe1YPi_b<7^?C z{Rh)HH7M4)ZxNKKUJfqi?e1`blDTw)lV@F?hAmy`l$d9ZQD|72*4jN%4Oy*g*9g=k zJ#S@=#YRkPfwSQb4c*h3iov+I#y!cn;KuEkyF>1LHA;$^O3mv?q(nSiqGs?ALs?f1 z!0=*%hD7NORg{+)YTDMq^H-UopIxi5Z*#h^r5O_* zP-+g|rktkb}$RuMoq-f(w04M(o#KTXd%?4JI*-im7tVH6%2q-4wE2vhQw=oth?Fdr>mZ z);F_qiWy?i;VyeA-8Tkp_P1HluAq035;=8@J?J2{K{tbQc?`~MGp8jQV)ZU{b=oah z$ohF(r&Q*W4vEqbZ-dN3wmWres!>A9a3g`cV>Qfy;=SANHl7TNb7=3ofg+IXTfwtT zo2DZrox1i?N%{&kPopjXWI&t05wAo?S@CkftB07^SJaGHL|s7F8h4WdgCq=6v6(oD zxtBGQ$yp;ukBBQ*(m^gPc{C94Ff5hQlLRXO`lzS(lAm%=bS0<7NS4ts{wNm%659GA zf|62cQXc$0xG#^%BZ8OKoqZhwF`u@sMj*usc~_0Ay;muF;qZISfuI@?+RPP52hYVjw*PW zc6*2<`X0%fLW)p2Y-1pVR~d^D%d%~4(<80xOxl$%t)OL2a8Y29_oxo{#nG(r8sg)1 z>P+l<0=a%7$^%U#htWt1qiFA3QwhYp8e!v0K}48uOSG(zETNCWMS+Eb0N3{$Qeslh zE=e6EzQohU&PN->U%*$`?9gix7zoN(*6s>JcMNs*5@e9tizdm!cwHlb8}K;^K#Cj( zsVj@;U=PHYB4{B6xQS{M1`7-Lpjo4{@0wv^2WKK4bEvNKGJ*9Q8XUA)_sy_zX2+j z>GVWlMxz_D(1=4A!jFr|Xz}XRjSoOLD7A9FCTxxY5eR3bB+z6GVMLG@Tq-fbi1i;d z@V2Eewe_BxcC+c$pka(bUwRpRa1F`Ip}@qjhYx@a6Y(NG6&@rJD=>)6eQt08oLQ>} z@M2JD$IO^ceg|S!S(s@aIMgF_9`z7OX9|Txvd@y(eC_Fmkr{@MQk*(y9x*MW^UOpC zVp`q53g1e15RFL6pL1cMvNtoSS<9kEGU!ktSU5rZ-YSxcwL~!y#*|0}z<{9frt+|M zTjAk^nGhOrO>6kF254d6q8}cy!dJa4{Y37XL}Dl5c!^z82*?m_9QZYs?;?bEWO-8u zUOtWiG#;BIIlV_h&!PSvjrkrWM^G%v8uxyh`3A$>ENm+1^!poE@JPZ%M z)z_YB-5G=8Su}aLCU}2sTV&kDOVx7$i63zFSEvvh!do@An_!kk6u3l_2uwVE#03ke zaD_s$1Y)u2;G|I?&x|Naj4*(UZ{oxq!|iY5u!xY}6oLQQ8|q8PeSeQlYkE?emP&T5 z+IFrV0h9ChwdhOqo=Z?e7a_%rJzDLZ;iRaabGD$Fa9Gz;T3=@3mzzrZ>gm2I$<`LM z?J}$j8(}guc3i?8*UDc5+d=Izs|PY#=k+pVyOwfu;yG1BNLQ@fBeKPxY2_@pilrNZ z?n8ylqd5Z9@R^3Jw{Ba56@{F*?$PpHeBSK_ags9owz!AIVS%+)l7qFr8E~!? zt?23oj%=lQNhP&q(_OU%MI*flyP9ig;}&9DPZtZ#pz`-aIIbMxJ4ZYQ(#&^J^y_=E zSjcs5S;kr1>T7M-BB6rDg8L>6j@qsP-uS5^Yo6%@Fh~%LqN)(0k4kHEKi>?`y ziN3UmrQC&7 zk5@js?YUi;jt2W7*D>!mtRh<%)s@WIylZ=fohaR^87y-fA%Y4MxZWEgqTRuIp>(?g zcq=monN8S%QWcC2+$C6cM(e7*OGf9T1C^V~a{zv73N1mcOI#|jusye+`U@T2TMdoO zp{ZQy1`B(SPfb-#t4gef+n*bST+Ej`oJy1v6=l$vRg3nFoj!{f6hMrY^pFf9oA|kH zjL`Vhi7Xim&v`<#-xhf29}7N`fMXDJ#C9DleF;m;aF=6kmGrlSe0f#pkyXo2jThY~ z4K4Vn-eJ;6xK8$-1L5cxUI3eK-wd^bz+8$w4vH6vw8qqeIM0Em6lq0*CmUWQLB@sa z7~QvGu%{6Q1@aQ~Q~^EBl&9m$uS%(^w=CE|znwIiUnT4pb|wdceO73?_2lM=r?)7K zO}jGOOcGued_myxg9Lb?12>O~1>=q-3hZ!$?&yf(0?927Wj4M&!pI9SLm}{_(xM=; zsVXQv27#NL+g}og!BwaAd>eLnA5nLk2QXEJTI0F18m!>9pB&XwK<5^rhiF9490K^( zIWNIz3qClIej9i>7nR$HhSZ247$bdV*y^nTgh?q9amRe#7?M61F0yUAhx9msI@~Aj z!l$P)>;5nH^i5u z#dbGZSTof8*G)aVa&0ko2E><)l@P8JA)IHqxAaAtQFL%=o9a^M#t}qWY-*JVV*td( zWQ>4cccLOhNq$em_$(x|p^ex&A}9>aWgL8dwl?g+o*UVM9E4 zRF;-$#+^YXB^RD^vh?FbxX`o5lN*B2xYFQ)Ll)lo!uyZHte>ecv`IBbSwg6Mox0}J zx2~eZ3Qf9aObyh04Vw=yeef6rAn0Pi2|gf8i8tox6$aHfiVlaMI0eoS-` zoO8l}MhrXZduG1K+2iy0D+rcrs+_|0=~aRZ(VLl`GR?dS*kZADEVraAL=IZc`GZ7DMqDODh45Oq7$msD{!j zETgHXd9sI6rGqK%S>G2f+rxBr=~3&W8_Jw&Y>t!Rb3`$2^h{q|s}N=CmN4nOtul5! zmgc&GR<6i`U8FvfI?ROKtJMoVnSD4Eb9U@Zz76scsAY)*)LhO+JmSN<(CP1AN7ZqT za*uQFsu);>KMUb;ZcJ6HJ5)T5);9$$Qv0&y*1a;i z@u)1LN5`B;=w_h%?pUl)dfKThOr%M9q?AYXpow zMwWPs5MLBg#bA68aqkL9jSeNMhL2Nr0Yr)yM8p^{C zN>&%nQ3nhx?QYWFo5~6Rfp~;3h&$o^WE^Q;CG|>w83atp$c*$+BbD=C4U5wQg1%%i zgCAiWle#>F_g#o+D|R!nMa<(>k&TWxAq+brQt&R65WXWF#UQVbc7-DwISh@r>LZIu2qt~x&K!?YH1t6nd0U3}>+Q!9KP8>UjC0CGw+>P^ z6NS~!n-%IOO#66OK_MmYw%y|!B6KafJfI=G2jGn(@03JoCm1Dc7mEj_lnAq_{m+1l zK3v_0A0(N?As#e1@!{GlPJ%FUNX6p786J{AJ~IdJmiqiHbT5Ul$fEwGBp6c^*yG)~ zp*qaLjq&tFSru^2q&aL8CnI&jEx`5W?rd*60V@RqIaETpk+VE)T^5N*s*p=P)?E?Z zmNU}Cw!x*rioSGkM_R&EOv$plZjz>M_g2}8-Se@bo(=07iX3#&Y>Tl)?VY1{9lds3 zmY=r3In~b_gxdbrni(lQZe z4A;5Vld9 zm=!Xox^`Aow1RYv`0mS%@WL+az7lQZtWn3;IEgZ=C?8};O){ZX;b_j%DX2OF)amXqq#_)kgGSr1lxMe3w0$AbcQZ}N>oKN&Swu## z)aE(b+Ot>ZPU3=agXDY2rT2{Bcq6N^h?DQN)4fkht+!B)V&3H_W z;qy8^50#ULH0R5VkD;NIRyZDUu_%*NiAzgz<=N|`#-SFH`Uq#qbFZUU8W?Q0q`T6I zQ~@goR?Z7bYst8kCD5iIr)7=Gs61Rai6&MI;J5<{LHG;>v~8Wwuh^2H!B6j3NS0{j z5*CU)K5baIXpNG4$GB@AHH!Fk?>fg#TUp?Q+6CWDtcw=*dpg<(rs%U>v8_~7FcIwp zlL2AKJ@IIbB9b`PKLnr|G&uqSnc>956bd4FBxxoW<)f(Ew3{oCm5B8&$)Lk|jIP1P z)0@k6MNU**d!Mh{Q#MTb)za9fm5#kS(G`}9xl5Yd;*)Z{CN4ze`1E}QGfX66f+X?7 zC@4^20H}b08WK7l;bJ^+Ks0%xY*a!pu#yhxxzC956tmV>#X3}*AzCd7Ohn_gDHS4> z@_}W(LOopNO4vo$EI5wYrL_(XjZm3c*QCTCfu%bAAdfa~-kFx{Vk4a*q`pFty1u7C z=|M)TtW~iV9&Cd_o_H|rj<8)KBNS!w(wSN;CvPy-RL6EjzMExh3dV}IF7&M>y4nnk z-rce}V^U=c1QVMQit?Lw^yqhTQ7IjBcdS+`ozysI4U}#dO!9K0CQByds_S^>N_xm# zHWfRa=w$Wh9Jvh62a$)}>`no+a-Bx`3Qn%`TXi{U6!FNZj?9|+B`8NPoY+*MnLP^U zZ`m5CG$D%x^2~S2oxOWo$r_6F9Ac&^I~N_JY6X>D&WX0S0TxCnC~LIsp6PwCZFTJ{ z4$9<$_6!K1=xFDRa8pf`eV5t_$zh(1lZ;ckr9gc>}Wm*+U zjYK-E6Ekd%-3UPYdp$Kt^j@15w(_Z!#PEeM%4}%C(WVgv%j#hX7-mVPV)5GDH|gZ< z4IuhILEU$Kg;`WJ+^0z>C_la6f)9_579!6RtOdVePDQ_zHWk+4vHxt;?@@rX}bls-wz~+!qPjM!|B5e z5haHbkbBdKwst4W#J0y^6`q{a@fz(Ez9WJ3N%|o?%cK@lvNATBWM`RI28G1e!@`D! zBoUG|0yz1|$w)MsxQ|Vss+SSNAnn4DZS4+{SVRdy@X90tO(6&Q5$MzR2-J8*$FZrn ztGOIqzY1Yf`s{N*RY4I~4#6a{d{?$X&e+RYlo1wm>$;t>!aT&hejq+LWH3P%Npe7q z21+FqNo5p+)Km{`yC|ZG6`xCU5LvdU@nHuvr7jMn>Bq%7RTOhpRlgRG(fJyY8gJqp zmL|8hGtS4sc9KLK3YIs)AXYcTq`XOFfLWsZS{)H3Be5u;i^Ib=Mq^%;Ccq(xD3T!+ zrw-_{Ja`xo>3sWyPm@Tg3CG_iAb0Sfu)+>B2av2iaqoDW!$}h_|(EE;byl`Rut1y5EGo7dR%z% z2M|J5I)cNJrXj$Lw@EgU7-$tvra8-tyOwEZ5mw_dy5Uq3N<|amOE95xY0_L#-uQl| z+y|f2G30~AnT@Ije0hw1ZiV%ask%s`;iCxv%WUG$htfu}QYu(G3|Hgord5fPm!B!C z4)0$Ld_@`O3vC*#672^0i)b*#T&!*zaD;q7ao9q#pb3r zo5P7qu_4)HY2kb4e>dP$&El#_X;|QpAj0fs*m~U`f~nl}XNxe22^mD6g2+|Tpu>@{ z^-6ejN#IjHXBA4jz~CT?9pUBCLeRp{MW)n}3e6c;Kv;1;3Q0=xaz#=!G?UWy3?ofK zxiq_N>v)olmk}U!F}VpxVVTXry2iq#$C%BJm}ntc1YcFu>r04UVp^rUXHCVCdf5ZA ze%Ayha2{P%GUkL(po9Y1<0Nqp~ewwBA8cudMnJIM!B%9v*{uA^f% zG1@PJz@Ba5X>NprOpAyjE#+2aQ-Tv3H$rVzs$4^ucwcup(Aca!E*n|lV5qg;-5R&K zqfXq%kUN;MY;=gWmHDK43Ygwds!PX3veC+Z+?mI0?Lf}dIVWdb3`~V%LJb05T~?Jh zF*!q%YTrTGdmOag+bcySg1vn1-a%D%imqImyUuhlj8e9lx(RZTUQOCnUDGRCUfsAY zD&c~vI>?&q?xK>4rgL&dk={MTi(4UCEls0x=H4p~?pUS8zV#ZsqIh%@%(;24)Nh;1 z<--t8`?q1vWb3_sI`}NiRQE8|W}s3GO-HLkamS)OSUE+OFWWt-JIo6oDo=+FEj?kA zXQQmjIBuhva^29GkfwR|TAY+mV3W%FDr~iR2W@UvTk6dkb6rQh1K_h>3o?tzL0v5q zF=GYu#+F?{E}+7wblG*vLu_WOeMZ(0UEG5#a3!h?tr=z(*s8N5LDIa&I`pV4~QQaJYH}r@sS1cOoFVz z$P-fy@j=E~60(3aAZ_5uNnxgpBqSjCWT9c` zU`#>B9uy%^P-lz<4PikPc!?~aCkt_65<^l@2tlL7nV%24(?E24DIzi14AH|x(VjF{ zxwgn>QQjVWg|!DqgdV237zK?8rEGX`a7hRZR6-V(1`-F-Q;1QJIue614al+^<8i() z6j1xojtd~tiZq}EA8Tqr$L;uBfbmqN_?a|5KVC-sVs^&Q1FN`F!xX~#K!nsIMI|Y@ zf{O|B8;^WJza_&qG7{4WAmRYSriqeVP!xPZJiZ>&^jcga;lxor#=D5IL=<)LL}2`V z@1Lfkr`J?&M3VM#SM>w838iaM#6>ITr^Zk!`Nf{Qw>ak_@yecZ*Ss$Hh}svhWr(sO z2^sMyJ}BmCK)y<-f*K?WJ`OOFgWnigETIEFm*{#9PZ*Om+PrIoa=8=YKIVZ4M3Ks# z3(Q%>@K@61-JVL#b1lskG#ytK1r(Rj0`gPBUbsA1Bhi%+M~R}#2;&9gO~kN_i%YC2 zDZ$c^Bxo=vi34DEx91V?#$Z$U5sZAD`Om(p`LIs9u|XfJVNOoO)1;-)Qb6$2cG&6F zA8C^gJksJ~g?K~Si*OM}gFFYv2&B>`$1b7aX)Q3a!^MEUK0YNSq!0<71*vi1EeDE1 zWCt2Bi!Lk8;7x#fIPi~5;6AbNr||g1@R%SZ>rd#Rc^pcoS5rFp*tHCme!(fyPK1@8 z5r-RzMiv7Pwoq}WB9yWmQbqiF9zfPBOAPt5OyS@!3`Q4pqsP+h#9a@EuT*9sSHpd^ zHbpqjg}c99=S>-gQ=op~riY%bYWvL7YiMe!rx?V~fgc_u3O(v-C|F;|fQk_W9Ru@e z&<7qklp0y$L1@65d=ef8f^=kr8{xALmoj*rXA%lXDxby5nk!)wo$BufI9<|$9n4u5 zP8~PGG|=KicqHMHgJk)s0J29Bq2a_u9y?dhoNtUpn9j#YY z(JW|;M^b8bd?vECZb~@{-Pl&rH?I9ErqLL}W~W@nb{JTB?wx#mh0wb8IRI&p;Oj?m z-(4~ZXDnlR+U4*Sr_dNP3mMKflA%(KJ;~T_!x45mL==}?e16AZB#)sVZ5zBOt*o z`<-@heOn&)VZ4i!)eWi_QmYRdm5vr`ev@P8RI_+&oo}pTZ>U~YsiQW0j&xE@ZWYpC zf=asXtB{Cy5bMp%(1gvn7jAfNV2vFokhAR0aPrDF{kZgUcGcn%37s%h8F!C#IxCwX z7Hf4IxkEY(*0dZ2U2CxRJyuOJx6b;9Mc{k~qY{Q65?`D8!BM9S zG^D;Xgo^42J{<{Z}{rD`nb8#U?lfXSu>RM(iRR<79LT?KX!(8SgKO62i|H@o5%k zpS-8R3?~H~xz-QespQOagc(GmYT0lz6kiOB(%6!u1elyE{mq8&axt7p-0L`(6D@Zy z9}rm3h8%c;P^k3jNpa=C==a02DZEJW;|?hvkY~e`xTD0NOjtlDt`W&-)88$fWz zK_?z0J|{%}N{AKGPr<~UM^s8(#;YK8^B0E$JxMZwMOfJ_Sr*1_K2~9~Cf%MmiuwS` zh4%_fJYW{geuv?T(5o4vfl3H4;_tRx&WOq$DFX^R+o2yES;Zuoc4R+z_>BoY@bp39 zP!1z$6(qn%%$PJkqaQs)T`qx+CB&)ABx459-Bc8#17v&(W%Ox6CkKPL4sAPDSa_05 z@Xj(Fh$<EftGkAmM~3CR*sJ|i}PM#1C-%oK-9eqp;Cw&Pe(u5~0abW3ZVx0AN6skdtpe_~oD2sVOWh5bKbc#k>DiSx(Q<=&Ezk(!@gYIrfz-S$uG9+IfFr`4UFk^8= z2!NA_k|?AMgQ`;LJTzvYQOXi=imAq1=%}G2e!33t>Z>&wf!+gSA&cNVRBYv*!1(+dn^SFW}uJGF^Ch%NT2S%7Ln6fL@r(}Oiw;M|r zvZ!B36~%^JEdoWV!re6y^CS?h5&;)Sh+HDb3JDUbk~|n6F}xRR!Ys)c(PS8U#UTvC zo)r=@igZO1T2D$KIDs;Bbg|b{`d*8oi1*mZZ1~}YMDFSQ;)qMdmP!|l zkvT{x`bQi!@h2FNabeKjd_{}m$){vk5OJJ30=QEQ@n(EJ_{m`w9U-U^`vGfFQ#OLBz{*(li$i{|05^Amb3cEGwQF0unnW8&fvOlst2zx8=bk# z4|lwQC&avM6eZ@^(`AZ9sX)H+z50!D2FruBF;`NtP3fw(lAzY+QgC9`E<;XGRktMT z?%ZrjuxbihslQ#ELpvsDoqlb5Um2LVWv{rF`HqVBXtukveY*5w2cJ-B&tf~u$Bx_-7 ztivd<h>AU5p+2)44g987Nzg%iwXLnzwENcU65D@JWZuVHQM8LIPd zvRHBMEym{SE}N%tF{=KRpI%*d7}igX4giiy%%Jmnpgd}w*4DPA|jB8W3(A5auip9y@ zX57InV@J6Vc97mIj5ly_AzSRnN=yd?9eMIjfWf&ku-TAQecKl1XE#>n$P6O`8uJ)} z-5o)$K{Q`$`wTke0lY7ktwG*q)yyL~H;t5z$VW@_dGh%K}W7Uqay(j3!8C3wa? zSE+8gt)o>iMa-Rbo2G`{@*yNQT*Nf9DpwX@yc2g2VJR~3gr*S56?qxD6aF?C+ zSnLy<$n;h$*dye)80EvmEdZhBVO>baYLjc9g|r z+R)sL;jKDSG`chq_gGJvW)gV_`L7UNUme}il>?N>G{Mio8I1&s)a5h+ISxxSC$yWa*b}xE1WR$g)@QnBioZG zSlFtPCeT_LqnJ0b1UND^S#P$)8z74{9>c^M zRL%3&v~iT--FoyiX%vA?o0BWDu34(OtirPtx;cC39eJGRTPfhOv@DUkn~LVOql8wT z-lbu7O5WJ#qP(Yc=n|-q-$h-j^BzKAT^Tgxc*_ReQhs*gO~zxch^$%AJ>dD}hIU=8xpYqQv12kfgu2pILqjfA zIeM3DtI>G+(;TwhB35pKacFL^TWn6Ofp;^Gh27x{bZ*`f^{VF4zS}39v(;ZiPpBHn zgM*DrzU4{=HaZkFofA9zAF5@dD~?tiYnyH z7nP=xG)$7{)hy;LHf(m?Z`u)Czg>J=`syWXl(_ATSD4z-BzA5aqXk==r|OCt>ZSEP zo$$fz9z&PA!05w$MX<0uqPMLQlx8&gCv`h^qSPp^%YElvoqBPRWs1vB-Oh+h=`((vCS;W!zDKR zc7|@_JDpb_M>tozabV=M_}#p~F(I2|Uk3#<9xZE+P6{YWV>fVJ8dz`RI%R4u&m^86 z7tZ4i}3#ju9$}hpRtT~f3 z$9VTUQWu_Q2W!1kbFVfm5$$^R$uhhnd(ytv!)@Ef^AZ~Uy!(4}xTh5+>gjaoZ_%yY z+`03!yH!5rOA-t(D;d!3?kHS5TxRKGcX<@l?m%l&-CYx$YR?xUNwmW=xWFpoC$j`$5|hUnZb7 z`0LB#nx6`g8Mr#`u~ed*vt)@zXiXbkSPVkb+(62hp(^qldX-&N#n)QJ!#7B*R-)33 z6prm7YlSSh5vMbOy4gtXJK)widXAfsKzZF`yjLA+cXgej$%homf$l~!(8`;5u4Map zbtr3f^%!Hg7-_v1rb{`yY2C{5J=`?X!`NDA)138i$~@(*ZfG@E5|-*}%494Og?Yoz zM$lXA+IO1}78Xmf$!;tcMAr-8Y-cR3fV*5PCsi>Zdn4vxZ=hK4s@dAG=&c$`y+%9e z%xbfFqE4L~9px;xk8?9S1LXm_fdIOftEReY^>VJ-g_V^TirbF;hel&jS3$VBA#6o4 zQ!1gV&hEMi@~yg+jhhEM&&kbCF7bwX{P$Svvh>^SYq;=rF>zC_o>m(jaZFXvy||^D z$|!p)?>t;)`?rxZ1~(K#0`^eUNxZ#V@ewZ9sCC3n7IPLn_Rm(3oo?#x%o@@JP}|js zp>l|K4omaYr?uS2S!2g+TS35NE{*8g*L3;0pI~*-^1_xSp$M|l);m*iAx*)O{Yy=P zBjFOq&t2GL#nW4@%(?@S0E{`2UdHocHKt`5l=4ia!xktA&88@39%0R|SWV)v=#uKL z8wt1(d@HVpT)K@T6<0WRo>tmzNYdM=9i8FG+tac!Ok0)~>OEQ1*^t&ggKf2zv+k<9 z^2roem#+DW%vYvva=4eJ6FBx4J3>jHw?|KqE`y&&Asd&gPUdOGs8=@U)SU-TO3bNw zfbzwn#`J2NvvXqJfvwe-G#eA+1jVfhfKI3{%!6Q4y6bwW$%bIp1oh?NHJ<6Q zXF?~b#aFAen^09IE0~i_{6)<|Lo8z#moPN40LT@JK+U*g}bhRz?)1A~e731Y%j%`^H;7NAG&b85LE2Swn9_(o*X;Eu;p4@sT zd~zk*d!b{YnnUnk*~t7uoVSE1!A`-><=h>*3FW%T@YM&&`D5Jez_eLLDs|H=tark>R>yG~YN)~tItvS{ zJ=UuVQ&2a!6t0^VE6Wtp*7E6CfnvUzE}F;*8hgU~0Sf%)At`H6b@Q4QIj=?}Uhg=n{wuof z=IakJJA*nM7hz^2IU3sMk(;|}7sED&Q=p~YmL5y8WDkl?U2JzUJF8G$S{t@Y2=&ug zXsE8J=y+yWPn~(+5~nR9==o*9b{xSeI~RiAWU;SiW1z2ugmDU@8Bt>B7Vh6=ZQ4c- zBG--Q2%9-|T|HqvnACDX(eS!gmbUOb`Wm;8FhV!v?*vNq1Xf-!h3lwW4qG$5KCWx+M;8L^ znhWo-OLBV_jb1NFCig}^yfj8O-*YsWHMQ2ahe%+3s0#}$V=8matIUcTokiCZJr}fX zZaaZa1-;oN1KE;s%Yc!qS8C;v(m`Atkz({}8C_R~ZPJygR=cbb=MpVRh;HTr5O48!SJijNF(}8K`GElR{ z%wlLEzShPlwnKwp77P)|9D4@U?Y+}%8q8_dJ3XWZEM>_KbZSnjSx`cD^E9e#XvE3_ zCn#+b)fy6V;{}Ys#!xhvyHNIGh1u=QhxTlHb8*72s`ah6Cap*wkFdb4uM<#cL)_^Ro*x9(F9=Sp}O58q8t} zPSIpxp|}{7I_+Eva62xbeGRoS~gER|l3Y zHp9g5QyarZ&AdWBq}xKTgb%iIy+&}!+=R>*gsw2yuGq*=T zZMY@^F>AES?7QX55Tjy-k!WXgpzN578Sca-fURS*=<9BvIAI(N=_1_I+q-wU3aiC5 zsQUWlE0r=)46a*>qsgal3&tS1wAtB>ajpU_5w7j+>~8AC&Dk3nRKrS4CFe1XpHbbSZEQ$uTEBFaGZBB@CsjIhVZn~v7M_<780X{m);l( z;Ob26<pD?oP^b4(d$1YY?F;!}IooJbmxqA%!kmnG;@lLuxkM=+W>5mJT4}20}gINe7NrIRZom)l*YMMaX(R zwP19Gm=dW91_nouVX!yc+$&gSOP{er5s1=$Yfxh#wMh*+?Se`M5qb7HiusjJX6NHD z`1sxtM34$Nd`c|wgD~-M2aA&nl{WxomOH3|Ni?yP3q!PWD>QzhC@WQIKvvhrX%lq_ z8YUQvZMHr?Sz_7x?l5#4siJMvN##wWTX4f_J2f)>E_qNev1J5~(clD!mmd@h#+GWN zapKH4Ed(48A&m!eR#*qP!Lncp5DaA>6ntHzjyZ`%3y=BQhfw zf~L#XL05O^TY%}(KDat81mKIJX56zCOWQ1>mmrHE3>0f}g(s-t)D$xbB1T~#4vJ|L z1aR>vm;zUdB1C9U#?nO|JY*7fG3~x0ruGGVnPx&Nt*^FXG+_h-R2I8VSY{d8;76*> zK7+@@gT{_B7?}}7l<4VDO@lPCno$LagTe@t#S#%d$iiFn@DhaW1ZZLO9YCJd-k};ht6CGEg>qgOueFQSh&{P_6#-LbOeS)Giqa_Q?NOuf^a96^y9*+w^ zj~+FO2_QX18W>z}l;amgONBdU98{2?K<=m#l*0AxhnDjGWw~OMK9gb0TgR7kPG`g% zh&a>QKa4;<8(kF+g~c5Mf1I~5XlAN4kQVd_liiOmo)c7p}Yv1 z+THPA5ry6!n#E*_EEOWT&4%A^$av-&w(Y)Kn1f8DOOqw4#XzgGWgYefRS!{iXxCCZ zZTgF}FQI$QgTmcY1!%g^^jo1T9#F>nWv)ruZeqUM0XaH0`dAk@#ifOt(O(ADVA2)m zI%BQ&Tw6#}Jo;vwSDbBDDM?s1E;T7hTRgs|JJxC}yurg3nQ0u)aZ7sTIOXXy z7Cm;*u4{T+Ia!t1GpfOKVj=Kp+tXC-%e}d@Jl=`MX*Fv1s$JCKEqk7egIh;xAz24k z#r=9<&$a{3{%hTjxm&lr8W3}*3R3nSbogRMiRoHvMtQD{V!7Gb&&nL&sN_+-7eWa5 zE84EdcURVpv^NtaZmXx5_)}WlFIANsu1e`v<_dT+-iGK{4V z&38gtI5y|k4%IE=4Cq19n5ndg>Bg%WF^P*iO;Cs&62b5T0cP`{3!869orhpSXe4@2 ziIal0nr$|bnj3<$Lc`$04rPHMIF!Ot5I}hCY5h9LaIFW&!#lW``g)_`i-B_Y#A!9i zJ6uf9Q?8dAql{zmJ4ZG}mX3!DP{D{#X6*Ggm>+xGJ{&0qn+YgfXdeZTP__pM7ZgB` z9BD@$FhTLe0?aBIaWXbw{BXn84IUw%436&$?=Ojz-8b|KdK0zk>T=E+s29|0X`L)n znO#k6O5KjIbYS=f7||dQLi2Kx<->ttq>Pa%!L2geu^VK>pc!ETPg|2rB~wntKG>;p zxS{WJKO?~)Z2}k&K-bDND!IL&s-i-LhslqI3h_P$Urg3J7Rv5s+uMNfMjF~?TN_-0 zk9n&+Sc?^nw0SpY;1j}vX-fl8f_r3sieIW)uL62szPu;YroaN)lL z=j2{Lu|QK#=5WWTqlzpVDquprgMh+uy5h|^(2*_IR^byu8Bhy~rsPE(E%#8|GSbso zgao8`lj1>GfG5^7No$dnBC=5?qWv>N3Z@>rwMX45Ub%IwyyA46w$^x9S@c1L1Loui z?gK(MMS4Rt77|Gz!$#>w44O;oIFC#Cu@6qeA>mdH{Aw49EG(oSPMhJu+NYwAoRxD= zolUJ_49B4)$Z?o_@pvJqfKY{B9C+&}7r~;ELpHA3XsOfL>@4Q0dSjyEz$fz%$@aH8_yT-KgG4UOOfF26l-y(cp*rO1p)+jYjJlc zxLYU?5}X$I77ZjR-r`y)P%7Wcy?@2sUv_7oXP;+h&g`C*@QE%u1WL1ZK)n2Y7f0~H-y8@)T8HK_gl&@#dBk~b8?*i8|lU;)$Mwk_&p)? zikV+{Ps_L~cK7wfCE)dF;^yb9d;L3WgG>;r*}}@HFDWKYM>vbhs$B3#*Rw~^q25|9 zy|>1`q)8=gllv<#ZR>r#HfhGCkJJF-TshX0)i!L!O2pWuB!aDNQdniIHa68~ zudWzBENy3(^5W$DIv+H_h@pn`hn6Z81fw zMIY>!a>M$5sKbPV-MgvTEbjvS7V{*SvLtZO!3c?Gz!TA!&72zA35cVOq7J&s&!#y4 z70!uw<>W~BSif@X%o0vsicMCJ>8jTUA=xDs{b%A|+|J6VX6eW!$#o2W+rJW8r~f&Z z7(o5Q+`j9LJ?NSZMTySz%W0y7B6{q|8AJ{$S|MGOASbmSH~vKatPj1-^lBn&?gIU6 zjcJ62DXddxGQ8hvFi-%K-DYH_O??~3!BWK&I_~jtm;INaC3bkcWK(^?>TGj zMh><6C_R7mWy|x4HFiXyhfu&8^<{Askd@>OXyrNg)7{DP&(Ce+4H_Z~xrSgrQrm#_ zc)s@Ovy&cgdpmKnjs*7f7F$~kd(9OpU#2+m#|5KT%K920?MX_Y!}|G|y2g_m&Xpzm zo|RMYef|{qwY1h%m?6j*$$0rv?X!G)RwpG`lR1MeF@Z2cdNh+Uo-1~LJIg!}*>mM4 ze6Ixc%Pz}gN}MaopDn&3VLvy>j_nQ6qkl>0#6T2h&qbaJpRgajE4`}C#LVC<&Bf&P*O7o5+) zdE&j@zOHufW;eemAR>tBO-;oyX!EbRAImGd{MoEeZmN?ieV-@5ieJh9Dy)TIX~~qo z&$X`R!!DO!O5~Kyol6G28oj7luP;feeWP5Lz@AFHoKMi;Wi&2@n=lbu(1hhFzF za=$F06HC!r6hO-FC!m_hsFT8-#~w&f;E^07y+a*gES9`&_ANJxW_e~LNF`Q8`V7%q zbnLMJH+UmmFt)p-b0^?iRFTRMe~HWFP4a&9gmz??BBS6)m>;f3-Kj%eqx0Wh(f#z} zMi{sR^%^T9l@=60=&oE<+?H!0DBNpcJI-(Ul^e9T{QAaEvTWG$yWx%P0NT_;gjI26 zC`QS=uI@af9D0B=~N z!`O?mrC-4MRQv9;gECHdZRN*rY4A3BCpGeRn=AB_PsM;fM~;atOq@81+{x1FqvM>+ zCS9gltU7;8x!Bn+`M@Q%wGM!^-Sp~K&loU)jZbXEOxeUC9kzl{y!i8MMM46%?&kf3UeY zZPt>A1YpmKp=ok z#X6o23+5(R%Mzi!5n5iap$q9{@4)e@m%V1@vn6Y$$Y5K+6MnB7SuWMmQ3Tti+%gx@ z&HxFGU$L-rqO8y4=MVLF3WM-wnAhQU?D5y?oSvs%vU_JClQo1-)+PwXP3U`mc>Osr zRP5HDwq;oGW%xq+xuL%EKvFF*Rpiic^$Wac?o3in{<7B{F^%uM7pS`Ckp5#FxY z=+2^MXO!(?s+VYNS6|X|y|%9K;5nhNI}%`Sj9tI;JextAG#8k5jR$3QjyX9!oXK<9o`-V$X*GGh<>Fg;(fvwupX`3qS#-`4pRaMw@9@ZT-vss>*14tTz%|VV zPHLwvI)&0o=}Swq5XGX9-g*u*7+x0V`_Agf^S*ZC@?+W=Wn9ZW>b&IJXM}F4K;8PS z7EAVQbl7iyk!DKpw+)JQ-^(GDYqkeRy4oK3t16eoO>Z1i(Ik3$aq?6>6Hc=2x7K_b z@8>?I`VUVS-iIa#Gi!RRu1;|MqleR_cd7Rh6gTFH>#Y^~rL@ z0spfvLEtj?51TnN<{BnX+4L*YhhbM!mcC=jHTx3TP9gaJ{;_kk0oun!dKP|SaE82KYZRUs!b}IHk*7x&`%(*~& zV;#+eYd_L)dNIj(&ZEcac0&?VJgu<<`MR$%`3`U+Vp2joyv_A(X9AWZRD#aAHDNn< z*KM2sN>lboRM_J3kenDz5RAbp4?FMBQg1)bw!tosu+C`VFw>mnS!E^)JT~&nwuoux zp5%l>JKkiu?;q{-aLb)Q?m!iWIvNLX}nfi9IFNK zkB;?5td~aRuG-9h@bLl`w?~oBx+@Lt47A>iwCPKX{4xpSArG^pnW@0FfSkWf)(cOi zCQP!FQ7hk@H|fyTU7j{o9w$$Lyt%?sR)ns|N4Gz3Q{MW5@S=MTlXwW}DdPglrE^&9 zMer-w;d;bfB{pN4`p2P*x1&iFjYpXHpir;9+JVe|hSlxx=jAmKT{P2|l zXY;(8wIvbgICZb%$j+&AQ%21nG_gEm8QEk(-hXR~<}-mPaB>R8C#a7}As!lkOd(Ah z7w?2N6;XbRp*3yyX(Byl2(3Q--K`L6(kl@W{UHt1tbvbUIbQ7!1pBkQ1%xM zueT-DI_>(Km6}b4CfrfMsTxhUMvjFE_ICaG>G}d4H)=Ah;nQ$$WFSA%ox{`N{Fpwt z8uA*)J=y$6p~`2gjNb!xSE0qxYmTu^5A~D<4Ro=oe8uPJclxWtoI-*YgJYg)>gu6! zS{T~lMSCG!^UG$nK`XXU(dyM``%AS1FN>Sm4< z6LG4ndphM#+)zI3c@Ro$(KvI_qn9co!sdIcMQGZjckE|o{=5bGLtuT)XFQva!0UUz z=Ghjre8_q2?kT#IiK~tK^<)EIBd)GYov;fxXw!V}OKN-1GIa!0VIhKitl<4YG#5(~5LlXW)E<~dj ziJjoMT@!v5vQRpLR0d-nzoq#$6??e04U_g8OIn zXiQYID}LorM*w4;$ct~Dd{pntCBau62#cAQPNpgwIa2j;&=sSORC6}S?mf`0imYcX znpHo1GT2TjMAu*Yuc)Af;2N;m;azGOSQO+^^vY7r_E;`)VqJ+OA?8&IkFRU^m_y89 z6sL|ZAj32Vmoxp+RG%F3smN#W1?1;-Op^SZDKY=q3Ly&viMNrkj8HB-_l z8Uyf(^f+>uH2ETOGYQB03|sHvDicd5{e#7Yz$Z^Ko4zO1SEaiQs&xk_7W_>r$r$i- zmhfRW)x~24JH~vM<2Ma?FYge5sit5i%Mc&Y5%r=DFs62Jk&Ns0Jz?U8cTZxpoOAv5 z0XO9~&I*0Jq*CW>ds6kufwi~~<efZGYGfMO~)v-~r>Zo>fBhq-!$< z?3)A5CEZiS@5SLc*>z4huTmHtuE4^i2kOB@&ss&$5MkzYejiVO}A)%Zom&|Hjc7(tNSdy0pc8=m`xcf74J9`@*1K%1lZ?0 zUYcflgx;^E*dW_hT`TWo+!RsMkti<>6_-=)?(dUIndz~P-`%`VNhOsA_|nd(zdFPy zZuD9ev8>NG1z9+LZlH}+XhysLkVSqksNi)1*f}wWA=0g*YDMZ8Pe?9p(XSNCU>Dxf zzbn#j1oOY~#{Vd4Wshqc*|2doW!;qRu#iE#lt>=XM$Pw%6_}=<=70F_BU#1-qllF0 zp0P+jQIOMe5J!)+3!P05leX*{;fDBNHFf-6e)3O88p>}$#q@_upEknHz_0xqX3nI{ zD$f;uC@wzZ9;IPrdph~b&baT>=Q_3?%GM1eac?dyo+dZwLn%XDMn`qJ_K~CCz{0#e zp)qaXQ~xw>-D(S_r;0L6L-ozx!hO~RV!Dx8K`Mm~ws*>WEJ}H8PC~x3WHKZHLJcJ0 zm_CBiKD^`tp;CnB#>@!w+2$GAW4V{$RRS~dckPl>#wjiA_F4Z~t^qx{#1P$bFc)i^ zK%0KISg_x|9FDc)fnZTx+Dt+bk^ucPXcN^4T-EEcr&}!(4qB~*Nfm`p*dupe2~2w? z$4ASL4#ycQFj_PPRl$~J4f_!J6mRF}YQk15hxgq)CilBJP|V@{y*UmMY`xz_a!r&B znDbYPP<^f=86;v_D_L&Qv?lRXSF11uqP-=t2q8i;FFYw-E`xK_p9!CE}D2cwmt zsRo1dwl1VXz%*!SG201WQVuWc@`GOa{-B)YgwwDD%`-|NrIjp5NK^^A@W_DZrwlRk zG0AC(IupXoyx5p;PWv0PZ-0vs|_q&v>v}htJz~FV)JJobEVZK8>qb-hu{Q0@p8QD zD5RQ*L|Em%LzvlIclR=gba-NKSNc;96)cR6D}`iqywZhno=|)IPfbcpPwVq;k`m(s zHUqRF9e(Jmb!T8ROYgJi&Ni;(S?x+b?bohF|CnC(JiU$pzqPXos#_3La{Se&(Yz1@ z2J5tbftnKzYm*)8?8OS369t%TF;O~4^omKEX_V%?H8S{h6^&X$j~h>-s{1B{basM# ztEgVl5|yYk)ra}YnKx47JtHN3Evv!$2rcSbRv+ilW(Mk0q}_iG(&DCwR5#}h^?8w^ z2kD_A$P(qqG5w`_Xiu{3Ut^q2zt}k|kPu{%GR5IGqV8W-Xn7YT+29u*Ss}${V$Xjy z{TMW;y>E* zO$@SUD*7C7c;z&2Ns)a+S##}el3YG@!RNdICN@U7+i4;(A_GXk?x|e>^YfSS!`g8} z9i{A@o;c~J%vC11_FfucHixOa@1+G2LOKy*6w@In)kQk?xB;EdT~%?}?_7-x&P25% z;HIke77gPFPyCG;w{Z)L{1O?i!(&gF8A~EI18j`HoVthc zFac$7nX9wHp&B{y1myejDcbL^a9k2q`TODZdn;dW6w}CvGh}(%4FANXSph85S@*mr z@`(#V&tjoEFF?mMtV<*xsaJsX6_ja$gND|WmD@h?6AU#`UgYAY^lI8mvS7{z!lpi5 z-9jp6YfF-piITkB*AjR!rGvObn22L(Lb_My;%y)4i?+{M1bp7oNYa^!`0!?(d|qUB zA!jOv(xv#X6Dn>A#q*E~1Uu#c^%Z`1DxHrcoJ_9sj8++EF3Ww83f6qCm;>zl5h@|; zu(qTb>(SgM-afQXs&*dS4>6Yq*Ap-T}^Wvw&UAK=%WW%MxDb)PivS0sBy(ll7K zX7O!mETU*(A$VJjP7vZm$k-u^`)qirAZCx3uf%6)O;YwP&zU*ug`77(^a{|T9ffg zS7dqwmbmb(45r;>@S3$?jI()>YOXn*#GKIhwXvkAL7hDcZftwgMNS8_s+U|&*xpxw z_yzb0m3H2+?yMlU(ce8h=H}}rF8CAxys2Tst`ZGP`r69lE1I2ZS)eSAClMZ`N%fUjP3>j1bnx?Zbn$7q&-Bv9im8Kn8j?qezP!;c*tnk7 zSpDY5X4OH~nHlfW%u@z@#r4gX2qL)0uB^#wp>|0txh^P(ij7ff@l<1A2?6%fsC{_QYHwaHmBW2-PZ_G)5Uq+Coa$zcAFqwlyPt2uQB{ zAjdXLIyQ)5F0vO1*-D(^ugOe#I;&(bRo8Wx^tLiif~F`xP9x7s&?(^M7!F{0#duc9 z9PD<46EciG$}^e2dO@ANPV?#3d63rEjKq=Q=gI>pGT+(-c^XWqdv%fioHXs3zYo@% zemkErK*qj$!dIi#1Vj-3gfFuc7ba|F(#cPwQ~Jz52d$tlt{pQP^Oo##kbrmB{0_Fc zs+VeY#9hIHJn>@Tm2~BE?5Y9ZjD@4>8a`Ey)N1J*jE=t*=2D%)FEZiCEXdq7_N^UD zVq97#C#K^2q(*p=IGPoHyo-3z{)#r6q^Xm%2Vv~Go!uQ+oUqkEY`SPygX=(@tQGt6 z&wt$S7YBd_aP2}8t}*j6|C}=dS|``hy)<+2H&jNN_)O^w13p92ZrKMdAdttmp19E& zns@BV-AjMan6C=S^nJ1%tJl+Gd?~VR)BP@Jkv+Ff+Qjtbr28aCDI;cAaym*I28)+E zZX@D#kSXg@J#&Xx;o6uC;f19oQWZd54chyOWM66V;MojUqO`i$;8B4l6-!rBy@|93 zuYQ!xYLCnZ0!jQ2r!5NLD;KZZ4(`cyG;TJ$^MZl{X{Z3c2sB*8DXJY5p{n4gS8(oZ zYYjF@h#x#$T)MB}VoF^5(o3e*`V>>+XLGdV;2+)bc>#1nBis>!D=*z)$Tk~(y{P8( zcb>=%O>aCslSu+KQ}w#n;|iFcx;YFLuM8R zOKHL)SDFR_1^TQt)R+4|H7KR88(cmx?RFjxU$<1$bB7#AL;*Ki6WJB#baoJSyuEVG zZ>;)STUh-+&{%x*GOmY~wWrk61>0T7F`=EyL~DC)Vk-RoGu3_89P9_R1)W>w3|t8; z$KJfQw)B!qrZc}@PVxNM%=6WD&i)PR z>#SCZ!<6(MWKdYOiYLWXxx!oB*~pPZ&?b+@+Z2+6D}Kd!=dat8bnm1j@58x7sr)t} zaxjQO!ntJJ*w-sNrf>`c$qkkg(;N7vE1H|4Ry)Ks>SBOTmh*B6_K_sZ!BGDljShj0 z;f$&FutvCDTp2N2`aMAFaBX0-fairn3R8+kfBL1NPyxM?FK0AG;#gLRP(O#fHE(Tn z%|u6#RhYG))$r&=SXLNwIjym8gt9npr5Clh66T8IdxniKzwp%+*GL*bYgLBpD(Gg9 zqKy!6*JvZUAoNLj7Hnmi9q!5$^J7Rpdzr|nOjIEQfv@No_}yioFmQ&1j59WI#bnwp zy~0{6p%BDh6i=FlcWeX5)a$%AngS*HUU5@32s4alNzRCk#I`3bOY3N1UQ=mCM%xA~1LxMr(y zII03;V*UX%u*1I)I<^t6UDZ)L$L$SYNM4$!W#{1BUxgT#*b%>w13FVaW0M*i`{u0V z?btCenJ>v}l1{86;1F6LubngSqb${A=a7oeEv;Z*)3mJ|I5OKM;;y7Kfj7z!qY6eo z*HHi$N=S(yjZG6)n8l^=d`)wtX10bqXn0o|E16uF<7TAl?(}%b;RlxvM3OUp>J_1} zhh4Jbp|Qn%VwRCwy~p*fR~xItGwbKigK1x|r)RG(eS2I!ct@k_(2%A=s@KUdpe%jm zD7;JO+nC68zl1l9{H8rYw3DL^BCSz*HOsiZiqS96H&Y2PMf5{N;=zicwan&5^vlMW zz_uldQT%ch&8soibz|ywA09YB8%#KXm%~a8<}Hn|a$|=Rbrf*x6B)dZt{{a+F-_n) zJ&#zG&$#K6-v*UU1?NGY zwS6O111jOBf8J{Ib5G`Us|o(MtI^1%`fiH${%_>7x^9ZC5`pTuzx@UOdkQ{mp`wzh z{~!)bTOzP@gej-RFMC}?mcaUUFV^zz@?TO*-jy{{l{ELn8NK{D$j|aCLvbD5ys}yP zX{xf-!HnnDL_m<>zz%LbkC>BEl~N^uKtwAWnmrskZ<3v|b?lDBg2|bzQ4i(Gz5IFg z&s(U#pbE6$NAoaO2A#Pt$GGwhIMM5$rcO|!_M_h6`PWdJ`<85z8y9kZt zU)(a#7NrN_APe{XtV%3_Uv&K6@^`v~)wGnc7SZrDW|ow%e()U3j76UNcw3DtTRv zbgQU$Kh3^PX7zO_Fp&Ya2O2%?<}SHfJn(mVc-dB7Ls`u7JtP|Q+qtDX^v6aGxhc>X z&Q>@Zs`?Zr*^K%I&32TWsVm?(h*fg#xX^pj!t!7~Um&V36 z^!Jy`D)e?vAz#Ih_%Ja)Ge3!QpyB~fYjMn|_E4Ke;1tg{R4c@X_p#$5fKOR``dq5Y z-sj;|xVr+GiDv<8Bl7Lb8T#>%Hlc4zmb6=y8r@FVu2xC-7Xkab1Fmjvm>edQD4R&_FXrH?wZx__?n+eBv+ z7?o4efU`^;%N#$@@B#mJ@@pt^L-A-BGYs=Rimu z&1#}S2W)irtDBPwOsV|SLG$&HQrGSIWt=d+V{6|DN#AilU#5<31)l96xiqr?;VC@H zX&l2bI9@7|D2((Q~YKTvpdUQxjQLVon=xk;hGr3^=yW< z#<0WK^r`%311}PaOsc(6X~5#k?WIsU{lZA7+L(+1IhtP2kr5g`yAjBSAH&z90jW@ z>I#5TNK2H?(&hD@yT7TQ$zbIakE}hnB)pES{dCKt&@Xs)N^Cqz+LtcI@-0)dJSfpe zWj*RiV(jtyR%?g}Zv`z$W|c@DHriM9HlAaP0_W$!^q^8uqB;)UVPqq+d|CAhT9Cd9h+#Anqfxx>ef=aQXAfZ3j(_Ue}2 zyk6Iyi5+~U9Xn2>j>}^%-6Vz||IDW?>55B%y$yA=WW~MR2C&1OV|F3^Krb=5bQ667 zvs;i;%j8>vtz_>7l zg<%Pt~=f>R}W2-bz}=b>&nLpJ3B zEP+Rt^e0*Nl}T@!(q88z>8J-bs5lLhtm}@g8kqnM);*Wqs3QNl7k$K`?VZ{_$f#6S z7P(yhnzQHaoWfG1#mkK7Q-OUp(Jcowmt5!-GSDL0Q3)!H{1AU_d{kVg=^1!eXR?e4rBGH&bJaV`*M(RlMG?D zD|Z6=ELpC+Ecr6_HIO+fJjE!8Zv*E7SvB%T(4T>;T^q$(u!%G8YWHnclP>{;nqw6J z>tZ1H3k-t_=NXWZcz%||MWR{-4JLF9I2*I4?AEWqqZ{;VOQ=w&C&+$$vSZj0$K6COx^shYSMg;~_6NxCwc=RWP*Mn&ZIbxJL; zKl@Mo>9a6wWiD>Ac7zbu+;!wDjRB_XATSjvS)8>4H`w~hm|fnPosz*a@!P9S6Sc>k z7T&t*2f9MPtjtwJ>^h}2+`EGT&A;~ErvZNN-|HDpEKU^Ubm~c0@@YA6$)`UR;L6M} zWoJx!qYpHpIHqYgr{eK~+OCwv|4`@q260a_p-qlnCU25#<*h=tMt1oQ!{1wioTE4F zzc|o1l0U34xrSy9J;@+Q&CAsH9?Q|yC}jj|H@1uC(g2={M>FhP)zNSt1kuz3BCH#d z%wFONQ#1eAqPZ~9sk8`Nbf2W_^L0skt-*M+8h?{fMt(NdH4^I~+zYJ*DQ~dUE-iB3yih=yzxcKTM9ZLou8{w9@-9pl=o%@C8X{p8yR`xbgl1l}}T8tQ__Ik^k zE?uSihzQjyZtjenm$}Ya?6^twA0j-t?5U&&&Y9t9|COcDGns=Gz&OGKsfPCxx>W$e z4<-GEU7^S3`+h5JW!{Iop)S9*TBj}A=96kiJq))jH#2TMjpj?aw_|r-itm%F=~Z>( zSWgtfR%^e|o2b@OW^?Q7tBn28eQU*G1}-aqo1$_D;dFE^G5!USa6zlN@qay!erh$y zTgt_wdsHukA8ZZx^M2d9bbrTAeOho#a!<~*@CE-#UXHqO&CwI~Y$dw?xE?YUpHOM6 z60rKZ073@kcJ&_Wee^QKJF}Cr?&cT>fj+>Wb10I(JfSx!y7-sVX33)3Y8kD$UP*MG zRCOY%fzNTaYb-jy`V6Tk&%}j%2c$Twh#19J0!>`X5{;J@C>q1=-Su#rHh+yhGtUS$>{_f(c=7$?tQYng`;X<99P}UbFZ7>HiI?|T$LXe*_vpLP zNbCdjsQ07nZ_jtjPC?#s57Nt8|D$1e-!qq_b=>EiQC}{mI%+S2=96LJEthn z|3=?g{s#SnJV<-PqxOFxrG9v`{6ao>Z*OU}yIwq=s)ktZog%y!whAWqHiFOGSMI5hTR*<_33gKa*X?bZRYpSKC(pB_$F-~Z`DM2fAj9y zs+U85RPz4neL9Ey-$v&8R)Pxj#`~A|xp#kv_uscl7_# zZ|DAz%SmtDfvhX)xBNqUYoc)eCt=)Wnqx@>cr!*CAM@kQsSrN#yIB9I{r~a)>Xy6f zp7?kB5A@gObZdKSD`CIrf4r`TkCzGmpcI?lyIX_Ezh{3Z_FwqF8#Vk5edtC_ZhWkt zy!4(Q0{!)eeEh=l!~0TB4z*Pi$#S^WwiWcd=y&&DD7ePpOa0%8XW2s#PxJiO8v`u& z5;x0+e}4__e2m%}{0Q1Fk-K2Inb_*>C%^g#1?|uO6Mo0L|Bq4X#=HKn;jg_&xySqG zU$>xNUPFU#rIWy8m3S)hMdF1NISNmV1Sp2tIV}3eL_>V^uEPkvf`-46Dm>S{T`>`r>fASK$7m59gg_4{1`Ih0?ko2jKn&ZKyl4c7(H5&xUN+$ zPYX$rf(4W%av1j7s1*5_?u<+>nSe`LVLoHEI=3#ghV%|y3a!(9SB*pVaHpL zR&%qBnJ%Q5hIR>S1HwWO2uNcz)DkY@SWpA5rt4bjOn3}*Lh7oDAqmKNy8M!68(Ii5 zkH1B-q{Ib;LI7-JF4Dhz-QW3c&(4 zjD=)u$a{ieNEAw+TNVqcLujTNHo4Cu^&qeo%XLJ)dsqFkb=UbSmfD6FwS+>*8iHjd ztl@?>vYO3;Sbf7z^5TN`aOV{fPYXzsvqcevRI5t{h5*4lT)>+u9RL0Qa^Qwvz&&Mz z^d+1iX&nd?Awy(IajPYU8B3?CwbE*;fn2eMdLoyYEnOgPvZzrt=%>dw&)7$;W1p$~ zEJMI()=!F|yt9VKdNChtufr4V)<5fZF{3+C?10-YsX<7YoNT|G=jJ)&L(l=}j-ex+ zToDD&4O3R+B>-VvU>86OPq%BVECl7X6NF0f#Gp5q!H~T0B~6fxT(JH5>HLWu_#mvA z4xxy;^EbrGE*JwW=f0Ms9Id+tPQ4H?KNM6JQSfdE_1#Ry2 ze-J=It%5(;NOm2bv~}J(rUaEIhvqux!>lDb(rt*y(9C?UPyDo=nY5FgZzUiM}X zv}8DV077+6d2QtKL6qTx8g=2${iw|FF!tI0%5U{^+J%(~mzm}_`hxEw49A_qF% zSjs;EmfW>S2js2Av0c@U*Tn6}xB-Jyw}518rl%H!M0sc;)t;CC2YyPG@Q1~|)fVSjqN*%fdC3;S$+7BBCQ!5V0X z!d(!>h^lk1O#cAe8zd50dm&4JfSr9Vw%OQlL3%551L=D0Q&59m7}UW0vgd*8fc*#> zsyGcqJ$8}*JT^X~BDcJQms(am1uO_!K-LxrsEiBL*@deLZi#?HJYgM82G;4YlDr8s zEle%iP{tGdb}MKf(rjbx6%O3!yYRwtA#FrF3@<{KA^EKb-a!yhxXXNhIs*uiam($# z3cir3N5DOR9&nzG&t{1qAW#r&obCweVeO%<)dzvERg$4M`@4ZCB<73%#sH*@ZGJG! z9U*uYst=Wgc!;>!pWpRjzn(uo#=zVzg8i}MXXkL)R9Q%U>K72K7REjZ^8li{^u2>^ zb09Ne^vG8%gP)P}Pwb>$!$VyX1=-iJzTvXrh>f{35Bt)DzTizcEPtM%1KiD;$Hs%h zL&RCLd1<~y7*#Nb0=m%8!;tmuU9e6_%!+ARlbHuF<8x0nW;F5|xWIPd5A!gT{e-@7 z_gGegqf)RQFhyP$7_y>of&Bc(}`lmmaWyjdf%M zzm|2ma{kxBk~%x#9>74@C>qq!6kO)2ZM$v>_3)gPeqNr=;_emf4HN>h51t*icEOwm zI;13h1~6Yd&pucO81(lt$c5K{o677@zn*S<2v!Uy@Amhw;l2By?}@hlHgIAGHALEH z+?6dLhwk$9GUGd1%;&IfmQ(Xx7LYn?7Y|uWjEfD()Ue7O>j6pQ77{_$SGBID$C_5p zJrTnylAC6&qJ7p2wV-m z@fF>1$c+M_FYG*E3iI%{kaHPS*XFh95>}|Zd>&3Cr5iYS+U<|DTT8CRT0B<7J2(h} zM6MJdio09T(FU%e=dJ>+gQutHa28E4@{TYE#WVRqWDZNpf{r)x#99Woua=;~3;XFx zARvqY)B`Yhp=su+8{CR+?eE1Xd_O-JSOcEU-*tO9M;4&F&~-K@ma_^6h9#&aS%?J) zwKVP^J%@#uSLvZ#eKtyFkShyK={6ET8)h%Wl(B^WNstT*V#B)zI<*l258AJqfnL#X zE&@;F`l~=2o$I$2-((%vlo!K`6*u~RwseSqoX<_KS^!2N#c%D;fp22k zCWIhL9TNj4Y%o6l!SO<*2+WXqm2ejcp*^Uv$9TujyJ)G zpO}>5{2Gv9DsWjBD&lS?>%z+^VQ3>@iU45^kOWw8!7OMR=|s-k;^2~?HGd$1PRV~g z8(u8iWeMqL{tk1q4+lD;>w;l!Fyz_ik@-pw&(Ef}GVQ?ybJmE#4OGc|#@BO5-(Wiw z5<7hcdK?DzyFdQ0AqBSI!+@v`-`tJFpiU7O)EcQ93>cUj{}77w+9<+6=n9ejkDti! zLAqA@W}oN=7~5X}f8H$%fd{vyc<2VVO+!JaYoI&-d{}|k{@$_{ORT2!XWkA}o12EMZi1o1UvT;EcfKuv2Am`^;nP{^?X?+`6$mT?*z4M0G zcjZouzCQ-liM88U({3Ats*8;2)!Bc&%Q^cz3-6ar@c^L)hwb6~YoS=+Y_JsKsGqI$ z!rH@j`-i&)Ds&v_xp_AK^*mOt+pcr6AsvVcE_SWI3l4>XW}VTAZQYq7q(JoWiFQM{ zhvwMY2pa#bHQ5qMRb4jlyq^Ojd`m`f!8lV0W+H5Vlj(_!vLvI~3Nub4C7`j9Sy`)u z+0Bh0{n^)luP$}p#s1s-AJ@m(Kd0_wa7izw&^?<~o`~)+{%g{B3gR zeN=Fg3BT~I(bN^RXmRBsWRFe2vdGO0RD#q6q^bP{Wx+(Gl^5!1aq&-g@9_?Ut+fP} zpV+I@Km8~nz~2hwzrA)&-viPlh*8a$${ttIMMm5#)FQI`SqJ+!4{melDBo1 zqT*M+*g9di?hi+uvx!CA-Xem!LBU-<{O7XFU9X2&hzuj z*k%xBkq&Qk(M`y=xSF?xveS;8&S+SD+wJ(v!7I=#FT(caMDfGJFk{UeSK$bLFwPvU* z^c>~Zwyo+Z<%SWKF;Gu7uZ<5o&* zc9-n!*e-vM8kL#Pqy-PccC?D$Ohhn~O(B!lEiqlXhP~nea+&RwbJVO4hkxs|p}JmEQ&z)TA*y%f19n zldGl4nZQldy#{uWV{YQ6L=^yPb@YYLN-!X-j1fCBCedk4IytUEql<59PJ7DYN8?^o zWoU|L2(*;VLXuOHa$V8cNs;^g;Qdes4 zow__{^FvIN{EPhFPh74qp{R}EEj*$)mXx7FWk+PO+YZa5yA4fZJ>hwI+0LNkE5e+$ zpx_7@%W!xbN0mn3-B7J>>F|zdVm?rN`Zcs$a5vJT(svNhff7cEsK|EDr?Rg+2d+6= zc(%?&>GO7;xemYathDaoAAO^|>-pT&r-b0nQaNXFqZ*AMBXklmImzQiLQ;BU(T|+B1&{FuG%|%c z7G8?;sYE++WBTlWb)9{3D{JYxvNt1-+78|oXCsVu-n}7#Sy7A1pr;rW{_*<+Mk!hE zUDeROBfgu`lh1J(;GG+C+H1R|Nbo(4%B9e?snChHH_&aH)oxq5Wh;N(h;PJK-B|aE zOjtGjOLpV&L*J7v&Ra7YjIilKU(A*mgT4NRRbQZTDAvE=+_4d26xl7%BSi9x9PS1L{xUn% z5~{tek+^DB*M!IVuS||eZ=B^f{7K4?#nZtz77|sF4&Azo;|Y2m7luRE!6#^Cs2dBN zO@EY)8OyQhkMkgUgk$qs1kH;#ZYvEI5pR+&2QD~SoSOfVa0ZKce!%SF<@>q}b6 zEg)ZY@0y&<9qk|ny>5$aiF)`~b#o#aH_+o)pZ=xg0@_mcM0iX4R(tl;DMN^&d^fhR z_1E$^Px!>Xo?7up2P%UN0Uu1ygs@3*R?)jJCl#OHYEdj)iEqtOacxp7!(Ck6+&{@wX^y%}yxtuL{9oMIY;%AFwUS19gd>NN+=POS2=$ z@-5*9BV<}+ag>t%+>vjIAcBO5v-u=Ubn~veQ18HuO?!Fx;LCjTLu%E{QD#)zak8JZIK;5sOBYo+Kl3ECT8Jni+K3A-0OZhhX+_b1juD{eOCGW;a!cL*l< z=H7b=Z&Oqe&p}i=;9Ty=iA{ZHP;q0n8>@y4v=X}rYuzUmu{X10za6@-`uHM(H>>e? zpc$#%5Ip~`Noeri46#At|6#rOSY`_X(v7-#!~9H8H9%uBnvGE{YIWZW+DGhM!iD39g3*p{qsq|vdHTbp)Tj0!) z*#+}%nzMyUMOY6cr?X~vMVYU2(C+N%^~ezVT(ay7aptCr<^N&mtRI?S+^_xpm>{Jh zAT1&w-5m-@cjrdefK6fy7~^>)m6GluU4zjZY=pFQHyhofVJPVHzW#py1?N8Jx^6p-F z61e=yIl}!D@yDQlNW3tNHH~LR1T9>bMw{d z8mM@wxZtFFSLRVm^A!67B5bwE^E^|Qqzy@eiB`^MsU_KqJ6rnhm)gF4k$804d^qR; zZ^o^DoWCQQy2l|hnSAgg#D$3t^2=Oi`{}mt(ce7fRBS`w%AqVq^1$pEmUjkuwiECYZiM^Ib4(g* zu{aX0xvXdjp9`0N^y~h~i~3`T1O)8ahGOVQyED zM;tAdU4~Um9|U?j!#E*xhgb8^9oykq5nJCUW6F_Wcc%=p3simc#n4*IAd~V>(Qc|= z)eH}ms881#e>nzSicAP_%A8_!@BEGgYK%oG{9`arj?dxghXBN)zAyf3Om)N*^yW$T zeV>`#&rvMyyE}*?3Rq|Cir?n#X2!)Y`9R?Bo!JZmjf);PK~6qR3EO&47R`B z{KKtS7XAW8>;~7de1h&ct|%oG*>{t#+H+P?7My`=&z-C(Z;HE*tSN}Kyd6QUT;*O4 zyeL?XS-;|FDktJtKIH0yXGgv;Y8c-RPVwuilgol@??|L~?!fURj;kTkE%td}?Ny;N zV7v%#PJOgG;kmy+aU`bV;uBCd;l4!^BVEiA;2xThbi&v{@y+7b(>ue4?AF|srjd>& zt@bNm2!)w0xmq^S_N;1Gf#86obNl>XYbOUUR?Zdk+i3g$Jt;)%nT7w~fjQpnCm5x`NzyC{><)7U2vi?f*hn72} zBXTqOOPE(e*t2gQH3BMAWFM%yyadmOnq@N$`@IGGFCVv(Wa&DzExEsJDe?D=Y>6IE zuN6=ko0uJQ`5Nadjtml+jHGGl+LNrTHQmU2xwkbF=6b}1v~O+HTD>0jccq(=s~qpR zH5^H zwO5+={~fg0JC2~*;z_)oNs8*KXJ^Bzx~c-h>lm){H+r01fxY*5^(;yxp=Qiok20K4 z5pWY~(F{R?T<6SZS0A?TS+iDyVlod;UoH6BEwZj|!D}2983T@SFJ_LyF`ZY8npDM4 zwQ!QwN5tS~E`@8TzfvLvg8Jjdk77ri)bpy%F{;KKYel&EFcly|;<~f{ z%GsSl(za*arOrJ)nxW-zquqb_N1qxS)sv_6J4bc!@XH}y;2Zvz zo9Ff3FJsuv^NWDGZD?;&?CPKkWk8cQ_~Ga*fgJdn(_SB*dq`q#gKwv?3~iX0YqO|} zt*>T&G(%VEx!-jxv4awNi<0L43A`dN-Z`T%n+{&_twK@)=>z#Do3au?3bGPPw-DjQ zGBB5h^GIG``c_OEy@UlG{4j;h5+905o<=P;un#KMOk!#E+c0du9jHfCa%k_oJ4|f% z3;tV^xPm+D?{&WZ-@#X)t%!Np!V^5&V?@nA~&?C@!ajuv)0bu9?o{Q8^LhK zSf2{L5DR%-@4ZKb&j&+}#upCgVnPLO3Aty-Z41iwzIQLH?JqF+FvbK#SIB0!UCW%m z&(h)M&kw8sGh&|)R5mp>Yc3!#n|-w?XR0>6ZFf!5KIdnep7ZrtIlsh1q!a{18Gr4A0{u4N z6+CIv6IJZo^TBV{nV7FTzxdX#RbVl(bUeT%3?ni+$lVYk2Xv3juoRawR@ii<;K?n+ zRF2ia%OaJ7(~SJa7IDa1U$WjwO}FNuGje!ao3A^^q0N8NmX*WqVkqS zgFK!=?<-i<)z^Lq-b{vJ4gy1&;2#|vI#G9C^2_X#ex^B5w;^FNikRx$jp^O7p}7wx z!{vANq?+ry#{@Dnm}1#WiejPwMI2s@td)u0`CE{fQqLrPP3_DGOE4t4dCmWZ36}oD zT*1|OUYs6VuluvfOdt$E-z{#=pg}ja;A=xt9qr>8wHz_ziRsAq{b^1EIN=vCzeLNR z5HxuOYu{=KU|R2oSU=TI+yI%S&iAXtlhiuknmVn5WqS;q_9tA`>@rGHoQwoRegt}{Ow+Y@`Tf+U|NWk^)Ds*L`DhU-MXTh zCCs$&R?Z{$>5YD%7vuwr3^7w^v#e@ZfP`mA{gZe7F8R!RDetE6RR20=&mph(a2=6> zGkkLQplV%nL|R?sZl=4U)i!78cCjAf>Yg5u6_v$iKJ^d=GgL`dzwMMh9zT zTtnXm<6(kfy?fC2OrTEGbWxK4;**Cx)5Wx`Vt6Ed(Wo}h`J^r9hoDkcGn2G09CUa+FnpDl zhx=u-d_KOn*+gV_H+#{Dxrq9~j+l8`cD34m2jNv3jXbi2qMj8n26Geos?#d{2H)dS zj1Lo{=x00b$oz~vqe31BV-_4vD{7c_VI`g>Wa?+R;2Lr>5fFkIx|blq|6%jT|y|c1JhG?yegx&^YA9 zNw*!&dAJa73D?o;YP1Mp&bl88zf9{X|%nuVDXQpMXR)>{~cR*e>UEO2> zkoC};X!pe6#1v9>saeL?FS12dB?l>0hn$X6#wW53it3-NT8^9%ka5{VVnM;Bv>Db- z$@B2_;hI}bEn6z{11xg7$u|eqyB&S7s8VY(ukpTfO(SJ&BV=Pkpe&QR`_af+!_n}+ zMIt!SvOmL4BQN;k8pdC$u!@N3HRy$W^EGm?(tSM0zYvrco)DUmZHn&*uh|1I%gXzL z2RNMbtitnSEcn}I8SqQ*+u9zEemMCs=hVO?@8jW=ud%hfd+HR1uH^8p%Rj6_D%g9E zlb#xuZTPfvJ!&iNRB<_eY1c0OY2j5H1&oCi3e&QQXZJvH*KC6L>$&qyYQ{@qz z;x{-k9ubkR638j^oc@TuExr>r(JM*&kW{oB1AX=?k~mx{IU}xn ze+Eu*>Z*iwtH6RmJb2E*o%gx9vaUY_gY0_zRA#x|ejn-m)bM10cc}p-Ukrh&ajE3` zkrm?DaqZ+3m6t~YyYXQkY{((`y4a64>V^9CPm$Y-;xYl+XyC4!&P7p=$OqfX%XYo) zV(L!i*s^Wp#R;U43O4*(`lEQ^EMqM(*M<8ZSHaf3_=6>?_B&111%gB#!&&+1Q89E- zU_Q@@6Q#h;P3JQWs8oxwt3k@o4tZ$3vtd2l5uW1KcL7lmv&JBc$}Nxl>lEkQ=nyHr zkxeVBlwEM3h&MiL&E(gaPY&yc-C2c0z=g`OM4N`Ty-M z9L;>gE}goLoY*;SVu@#U#_jT}ip1=LA*Vlfc@GqX$wH~o(Jb!xUadpXAl7?e-@}M%c&*;ee?v3Q_idFTeH&Y*c-Hs1ySEKBpe)6N>)WgxozN_EG@!e^ zPTW;gu3Q;TWvqtH-P>Ps^wiwK--fjnEO?*+X(l_u+T)VOzMPHy?>3iAJgB^zy} z);JsYHOP~8IY+t5RW*5A3nYtKEeCJsc7AHf$h?Tnx_n6)40;@)ePT{BbcrO@ra63d zz1W|p!L{#5Nk(i!7u>spLKK#LtAf3PBCD$Kt`^AVxG%>?H6fjykzvXif&$eOD<>D^ zg!Ax|8;YfF$`&on?oMW>KMwcFu}A>8$>XI&NM{UNoa3^QQcBW!lKbt`0yKsYv`KBi zRAlHPM*Bspcqn187-FR}zn{XKI4$N0juvW*umk*i0vJ>?!hnBB&n=FO2EUEUXuEe; zM837V4*hg^I2Gw(nA`DUn7RDQa&h-^K zEr5W@Fy;{wjQd@ARS#3Zr!7Vml(K^_W(13%j~t%O^XAAW)KnQg zF`qwc%RsYh^}?}ElyU3n;+jQg<}dz-PAe-ZKIcjG*RE@hC5+k)-Dxq| zBFh8uRS*-BMp%%_aUo7932#8zuto0(Z>9(m^)|UdJw860FwL(xve3PVa#NvnH`0GW z`yU)R(6DH)F!6d5<=z@mcRfFn@JIbbt3+@|J!Wvr;vO3PC|jpdQh4~gd7;0sgYYUk zElEBs@pqlKGsLbkSWS^f?n1dFtJzs36Jk$s7%H{nYl#!-%{jh)_qDWF{>e=Opy5EP z^Y$!Em&kN!l~T!$IO~7I{6hBa>T~KcdC;aL&XLcMv3h6iajmG)VYUOeBC0{Glf z!W{zhd*11y-;hCu+e6Rz0phvN0+&hat8hjP2k>k&+r3VxpQYHBIH``CXJ0lKGWUjNfFC^JZF$KsDh zM#=9g4#LfX(c6sO+5T2`CVMmY4|@~UMCvyKLs2fy=l3{oa(*)VoFuiU~=e0rbooR zIRd%q{8%);9+^D`jxn?^qq&c5&^l^+H0d5L+Y5C(p{J4}m)JpnO*Gpc5d9L7{HF)} z5<4GX(bVwU{*QMvo8@3kX=SQRgZ0@3VPT?Q4(qQknAit5d)=DS(%|J?$8u9%7Kctj1+r2|U@Y#lrBv z)eVg(awVbkKSR0EFx3@!>Jhj=7(Y%??d!^;0!Mt#nVV{%J?aEsk&SVx1~2h3Sm$bs z_dQE`m2YlpHN~!CPS7Dov;2m2ru|xkPUuE4ao2Is_b-;;a~bgO{G(R?kj&lNTzSO& zg+kU76K9sF#Cu`U>#>-xtzM0f^%p*0EA_Fv;DE)a&UJA=UtH2HGJ9AgttyV|~oz7@L{@tHYzlP~j>RSbaJt0gt^mt!SfMh8V` zA4c>X+zbOjzYy6(+G}DaV<;+6307wYEzxDl^LF45m0oJafOi73h+W`>8LM9ATJoz} zg)SbfpXC_Rh~bZ^3rwgpv#=`zaDw__UimGlrc1Y1TV=Jb!!DYB_b8TAXk(OIAfAhrR>HMTSj=l<`XDG*2FH867`x_xc;cfM{#L84(s&g6W1;UWzS~y- z@WUvw*Uk2wI@n1-Wygz!&0EC0z0>=}&66bB8seTUN6tgyvr67nz=EBmTXgVk8Z#j2 zexB9GGrkb3#o=1jfbCn_r(+`BkwVYkgw-LBo$M}KEMc3)s)H`6hy_=t06_)dJG5_G z{_X9kg{q@b1xS(Io68msY9lt^w&U6<;WEL`LI5O1D%`Mg(u`umXBbTVYsZ8UbJ#GE zlrmz}6p*Iw;cHh}7!tC2l#w&|+|M_aoli7|8Z<5tAhiIquCl1+5~FK6`m){D^LRhD zB3A$Pz7H$=shhjrNrjcUIPpl0_{vU=ToxrYq&DOLXbiVC^v@9KJfE;FSRTMuwkInz z%*E}G_Zot6GqYygb&S5d{raP0Un*}^;JQTE$LhY2 z9RP_e4eDK#Hy)Yv8-2VMWR6_J*3eEbn^KiW zYBwJRe@0JtHgVC@ieHq3?!YrDR{Ig=m_9=UM;P+h&D;Wj=#wtiSO~^NH-B zS{Xzppsn|*E`eWA?*TZz$3MC6?or*|^( zE=4#ni$)H*Q!q+E1N7Sge-&#FD$MvS*-z&DMKNBPDU`JEv5j%)7?W`j1Hq|>=w%tR zfcx$fd@6E2;*6@tzs`v)K7c-1i#|T)&^u_eR+soYyCep;n%1W{u0pdb6B<9gkf@zbB%ygz~g;VCT$9^1t>DH-BoRUNyy9-ROX81-8 zmE?44?C0wOpkf&^Wj@Uc+BRhKN9~t|Q=6g~j^+xBYW%)|N1hC~hb97GU$~%J*{TcY zEd@_+SgeT4&Z+4(O4M2WxVS9UamB~nQUojbjfHuEOd9H@lPWTvD(BhWqMHIB9%2{2 zF;R>*-(R(VKgd*TcfLrZJubL7cSb~Z%6wZ4Qf%+PTD?FloAl$2WaF*kAM0LQ2WdyZ zvRC5xgA)x5w{fybtMaDB+%nXlhruYhqp@~Jr4y2YWWnfj?DoWrd3h3bl6i5)m+`t2 zEEo8Tyw{&}_uTe(9ux6Vh9`BnzVKgda`mSyb3x}Dd%35Qg<&=*dUsu4qWu=@Qw1B? zSPBduUUO;c27e5=Qzi~}m?6?-_jv}s9R6S_GHfWkWj*rsT=`oUgf7aD9}m%pXn)V5 zE&5!R&rbed5!bi-&I=>0F4EWFCS>-nXY5p*?%Q8_{U7S~S-}Py+cnE4hY^lQ7VG}| zhauvYpE>m{6zmk{sm9T3DTrPu;mMbe%WjkP3$pYvkdG_$es0&9S#*!XUwg;~(Jlcw zL~^QTnp@$3IR}D?+b)9(&_}C-XD(^N}FKHHwl&?tZ+ z<|{OB1nRtMW5wQD%@ec6^N-6vCTu_ERcc}dr!Gfxa{DKcS30wq3yP8AdBQh_&F=cO ziEn?UCS{5!d(?+q;J=i~<3Asas6d{BUod;D!bl5&|6&yqVW*1QJ4DWY=Tq@8~1 z{sE@uc9l-6&*Y%BGdu$En_eFiYpblyVl92!4b_){MP7lmk44Iz@eIIWgCC-NYKO6g zTZ!Xbq|8*h0?L*oAZxkrb?GIY2tZohz>m7?|waGUwckWekaV}x%vF7 zdEOV?g-P)ip%04-9I__N;X5LOxJCoh@${D3^*QY})pBA#bqrHNow_9lYvZrKT7o^k zYOlPGyY$W&1n8f|trLb=Gcy>H%4>lQuT36<9tROj!RCW`SxKk_@dkae9+g5-$ zyR0u}5455S?*3>-v zEJ1}S?gpLx@H(Et9n4?2PYTwn{PmSY-UgMHgZRCJC8-{ng8(iEDPm4rC4Sci-yMy> z1rH5(UpE=}n%nTWDlW_Gi3fxbV#_UfUB_!S-^kWMU#FuU9!2oFZOlr(CV6{mjJMRB zX0MQuQ&0AP$*jd)Q;aEc)RL}g(;h{KHwJ(PTL-HCT#L>A`Jg7W&t2pio%6L)bO-|8j$;h2sb>BwIXW ziAi|kJ_I>BmZLHYrxNGHbp9-LBUMG9Q+roa5-gO5&q;2Hf=jsF zrC$95FjTyy1ECALNl<+Zd&s zJWN;bm%{Sr7*O+f%tZH&qLE07CK<<<nz1NB0cx?&Sf+!_<;A^~6>g)UpPL)Z= z$F^c8+;I^qKiD-=4_RGa*jU&poM?U#nOZ45qQ?_6nk~#VrOJKe@68W#A#%f{ER^(Q zXnAwUmI^kQgljtRG`{mOLjSJgNV?cVxy#a79wNL4jwXr53K^U&4YK|CHI~-{HT#CY*c}oZ&`+0vczj%FSanCEu^zM14Pqr!_ZapL6g61 z{K?&J;BM5>d51+vlaLA$3BFxMU#ho#b@+4zQSA3$NJ;2P%q7hsRl(f^=qHEtv;sM} z$1th%NWuL8x7=I@Ib2EH%n@-409yQgO7nB_ID>NzKZs8p53e$JeD;MTUxRV*@UQ69 z+m3Ahc_k6@#rlG|>&l*lXT2#eZ&J37v024QDevaa0Mr(Ev2y@W?41xC%)V?Fzth;& ze;n|?U)3M}v=}jj@wczix|4EDJ+C)vrJ3tMg@zb@>AC`lI6I$avtEIKvu&y{hSxIUS4k}i8y)EoHdgu5+gKW@lq1K z`BbLT%I0l%6D)M@8!%4A-0hAdD!?Aa8>H%`x|;O-PYUg+tL8+n>u@$5>E=TP$^%o}zv%gq8YfkoxHbs#7AyS%#49bcVL| zyAg z3uI@Op3=ybod4i^sH*f-9@aqtm(7;}2a;_5-CRM#7F`|>wVxE^mBsG%3s=MP6ZV50 zhQ#Na_WkY;9Hv64|B+6}`>bcqAItFQ_WSLz?Q+0rG@@`uTTMnkmh#SKnC;F#2N{5( zV}W>JZumZdV|^w=M{|mTZ1bn2smi6&M&c;#@?FsN|sXr^!X z{1dO6gOI;)7_5GzG?(8Mz1VDy_jGjPK=F9JGo%)*I0`?l{Nn#2Ts|C9VDbG7$t`jD zwazm!mp-d`uhWBq_xj||z39n?hw#9!X{1WV77va5)>CmX?Y8FO`{sG7LsK7i_H_B( zGf_t(kJr&*j7*X(@emqkUO9Uht^zw*qb{Ft31q$bU~bGWX5%?P(qZJi<%xNP*;who zll9%41Is!t3wyH?*`W6Mj{JxAyARXJ^@H7W`J+TTrVqKwNB4f>ecax@sshOES$An{ z$6~6uaVs0nlqK7LG6ilTSgPMAK!=Q7(g+<>(#uA%W#3z0R2kQ$4N$DtH?zlA^q;u1 z2ey6Ogaz=wdEj&0RwoKNmoItS!|W)P?o2}(X&ACUC=uBT#vJb^nI4pTdjyS0l1x>c zX{=PI^K}1W5KD=tvazBZbIT_I{tX4TCzu@HnLw}`gLkM)I^GPJWUIztFp&SpMAQAX84tQyQ# zBNLfq&u?aWuV2D4Kxqwf-)w712Iw?+S@zwWs!Tx8d7?#P9@W*dRxO|Vy0a)e>7_To z6DDpiZE0iQgH@>HcpzI=Wko{6zyJPm4Qcx;?4_oAJ;csqGE-m-$N&9-j4;B*KMaLf zIkl9%@y)nScVQG1FG=sP-|JK zT{Ky23Tpa{yhZ}|3OAU1`llXrJ`??hqCq-{sY1@U2*!(sDhY|J#X|32PK$8pV!J zRU9l1T1y~w!)uw^$}>Lf zsa@Or%}8UcCtw?@vKm}g{zuCbF||_SpP^k3eCaz)OGS;z8Pb3$t7d=mZ1nrLrYuDI zMxE87!v`coy`HTIqaSi${^$mFWS+fM#s1N})NwlmF=K&b5jrs9h#e*}1e5lplXm!u8^THAstt<7>~v;4;L;$ps7 zIpO%6rGtAz2B1jG7M&KEcK>p5GZt50IFir%LB=%bf#p1HP|}!xm&!^VLiKdAIar={ z2W2Y^o{cMl(Z2!wZhmla6O*4+QWj5VLJ54r(xrm6+u%4aIkrK-TdFD&$aioZ;T(HK zJagc=;$~){g_(cZ?^G)l%_iK~9cj|_{qN7OoUJdX&rdlN_A~Ot^SI*M;Jzv5e%B-u zAN!gTA0Za-(U;AnlteC3_1S`rHuFCJYdQI2r^o&I^*Yu`QMTfi0tw9|_?u4SouG0l z{+_pPoAF7j%RFj%rN$izNi&Q2Pu&EnhD@})xbocR?2V6B3VT(BkL*Bzb4Jei-hZcL z?akom$u`+;oqC;)B^mD8|8sC+!1QZnr{F`}K1yeepLouE-=i#QmhxAApTOuKC1M-o ze(f4hWq2u>sLl`CcfZSA9JzMkQvpVb4?n0z0v*Bz^2@x;fAP76D+d*p^PulYO;Y8FI-Prp zi{Fjt5QkjQu7HD}1MRQuS%9T8s&k_#&~Bh;aT#p>JuvX^Qh*SqaU-<&s?|w0cop}2 zXXxLycu|(!1-=F6n}&o4JS9FuxBAyp4T4y;I_3Ix(^Eu_=j&{U2phBYsX$=wjJC6# zI`6KsJ5;d+;lpYdx~=Pz&%ZT{yuxL(Csu*DMhkB192^aZ=6#YEw)>$_;>aCgt0*FU zuI1t=D{s+MO8-|p8f*W7ZCB80MKl;kfB#%9gS6qHUgA@Z7p*gnnKi$dkFzool{tS9 zKH=K0rSZPNCYk^lQ1;iqN~q(>cgb!hyf^^tPFpggL0)mjF-Rdeiy~5H0TMV`7OR1c zW`_Zag$-3_ToyQGn{P19eB7Nj5md@8X@^y7q79AT+9LY8r}x>1MNR z{t<|;#pD~)VRMDEDD9DJmnAROk-?S~q@X&U5*&ZkDolJvK^)uTWEJ#X#!@%cNjeK#qm6=xqV`SE z5J`l<#`iNTnnFV^e4}K<$G@AI@^(`gH$e?;=^k^YQ|1nAh^g&@@z9Jc5)~qfh%vMhig92yrY%Wf48sxtU7YrdRe?^wv*P;lG zb~$0L-{>bRQ_r94CT(It^N%b)iAw2o2h9Z1S2gSfgvFGguY-TWOPiwMJzhuGV7&Ch z+U$l)IiFE^O2wpdFtJ+(0>XTbV2|`Z{Ks@SqYX{_LW0nu00H|qPVexnBkP}@K!5>N z9=O9zI~Og6i*X5Kjd>vLBQ&5t#Z*k)9xm={Fx5Zgp_chS#w8@QAkEL)JhLS^>gM^i zw{m$M+o#y*1;ybg$K3ezT7#AJ!`1>>3;4<2+jkU=uD)$>_*ZC_7y-xKe^Z>)9uc%uE803WE38LU`Z2-4vCC`+hbR zsz3J2(9}Vv?|Pfu3$r!{wk1O}p*67JCf|67q2-s>AOp)uTs<$~e{##?M)lT$EMuK- zEH5l-;XIP?G89By%v;}Xdtf(r8k37$0^6D051#Zl)po`JKgdKc`uT-KIlke*2B0wk z%Kk%b;`;2W5BSY#IQHuW$YPM+mQ8fx#FKJ!v0)f@Mw7l=89eM$e+6E^5 zH`HvL90XgH=VbQKAWNJo94NJ|72oXT~msKc@+puj?B6ag8A~b9{NE@9A)d(UZU5 z!AEnEReOkHP;HAd6V~Q_w;fUsLXL~{b{PDq7jO&WPErd0c;_i_v3sP-oPoesG2lA6IP;;ZtPMXi-y`l!KmGqLv+Ho^;)Nd!rBX^Zk{AjB@+V}q7ai#z2M+3RqoE!U^`JZ1_ zvnt1p!BM~GBkg1oyL)ttGYr2+hGGBGl$i9O`lIbw@9ULIP0Y?*Jnb!)TbJeg&!V-<0|qN7aoQ!j-y%>qN*~s@bt5@WJraTF$I1rwy;hP&G59 z_?IEg>1#qby15EDCB<91`V_0|S#ysC3YyEj3D zk>(9{9XfuSfTwZCwV9ZbVV!nOS_2|;iDta`v0~b2AOpgGk^r-%cylOm!GhQ??K}?g zQgpsDzwYq_YSvp`G0%iZ_@=d9+RTJmmHh(sCy6;+?4pxrH%;%|ma5Hcw63h%5$NP>wv)f^NWopv$v{$@M(WU_QHt zS`${!^3j5PPfKzbu?$gI<35pP#Wv$09Di3bK$KZ6v{Of>;Ie7``Dm0S~}T(b3{GWwGDaD5uwK#2xHNOoBJMRRE=Y@IAiEMf0i8JzF+4e=$!UTw;XlKBY?smpMq7hFO z@77pbdM;J_Ci32A-hoAt3g6eh+Vy%)q{omW*aF~)V|+2667{V zkL84ozbLdAaDulVJd0jPJdg5%ie&jd##r1iGE}woF^I~xiT%|67rt6`NP7n;54)`5 za01fII&%?64rHEu7B_0p^W5c0v+#djJCSr`Gf+>M)KqSNoH4#Uk5iq<4{;~UNruVU zrZ$h7o_<0lhyL%R;MCFzU0or#cM>W<%!T_zT>;v=>x!a3Ks@6{UM7*Ws=ExP1?t=D zL17RsU#mAX(Y&0v^Ksq4R2I^bg4tMWKMM46m^vsUz~W>g68Ra(1_F&_;XOWx$M1b} zOF#J6O4^LsO0gMSqYeb|C7yAW8HMy+y{~(zIl1X(tnb%J(mimyYKk})L_bZpOteuW zCJrQkAo61#)FEhEyXW|BDSY1*6!AhFz&6LQ*FTktF!_ydquNL`tMl(b4W5uv3&#)P z$xI#9ZeH1?tSWIUAyax~A8|WvnC2pLu}Sr$w%Bz3_?uWP!~2+JxABH=O;@-CyCJi_ z!6wh*9AAJS`oqZFmx<=&JFgAewhP{lu|1Wto+JUInCM)Y4Kg#K<*=>$o4Ad%&kM%* zMM_fG&PKVMIK8FB_f@pgGbR~#5k~pB?!O(OBkPbnM+mkrZ~%S}K5ghBTLgdu-Fq}( zzT1SBEKd*rZ5n0ATm7ol<3WOtOV8PikzPozY1}! z3)S&Eb7S_e`}Et50wO`)(tXP5N&Wof^w7y_-#wWNg-kae8Rnsu>H3C_@M8pG$)*%a z>XPtU0LsY7KXq<){}U!ZZIqb=3vJ7*_V)Q<$x~9ARQDEL*0(u~Ij_w{q$z&jIzjHf zbdGf5qhyo-%zasMOUxViYjP`M3qcd&a6cAhWa6zF{%`I)7YmW3E{p#QJa5BV6cSXN zxO%Qy+O&lpW1h}LH1X=16?BaMjmnOxs>6_P+tlx$_odQMd$TrSlKn@O0p?jpcZaRD zXQy=ssmf}qe&e>(;Li#WRGk%n4cUHE5RlMsOrr2T@pw$ZQl#^v9-#3yv78o%&C)S5 z=M@k7@acpW!%;xxkFgvd^rQ!1J7QU1#wnaF>ij40AGSUXjSW?l)puOiP~D1e0-ZJs zL^~98R0Ol$`eQqOd8Q!}qaFPk>xeZjVm|dGmX~$>EFa#O(&??}axWlRRwk%J z&4pZmtNzc#QHE*lJ*JG$=Gp6Lyd~j_KbIvdyp3(Jxp}J{!?0j5jt)N8aNoJot+5g4 zclk&x5SxzI@OUC;Whfcs@?|U)GtPHBF8C1WOO#z|W<_ngl;PzvxGn5RjfYMh>dAty z4=eQYI~#O~rsTN%aT&+BTJQFitrzypPZnN*BH|VYO>XH%WP?w80V9W&iH8{OQ9Bg| z!c2;myhMssQk7R6p{b3}o3;905M?sKasIqBD%7C{XgYF+zp#+1f;#rwkiW#) z5$E+TbaqfLuGuU6C%FsvwOe>`L}gxlqiBQ2hZ`hEk_C0m8>)=h`nTA@%pxU>x`inl zkKd!5{G53axtEn*R>E`!acYMJv1Em83INYsGuf}Vq7B$05S<`m-lk4-S)B4Gyo(Of zAJF%rA&1!GIi>Z+ch_Jh3Vh#Slt6|@_fbFOk@+dgrOi}P-=X9!B&#r9eM!c>8qw`J zw#kkmbUyrHIpX*M+WBZ?PxnHskuURt<79azKJOD&%`f^~i_(Ht%%!z%uVj%hAgydyA z@v-a^Q>~be)J10ke~VNvEP7XDbJg(F^u>6Jpy@+)nC$_HMa!LO5&iZ=4KTXU98l>2 zO~jc>S(Lv$m2#Umsoq36{iF8UK$WpgTyYYc&h>)uXPp0@QW5b{E5QNOn-y(FDQmOh z9B-^$f$)$1TxNZg>4_vIl+Pthib;RJnD)s8_^4?ZoG*07D6!27Wn zYLco}(e(3YgP?PZqYQT1e#NGHwF`n_{|)*yh)Yd>GyjRt`ebC*aP?gyDc-i*GMDZj zrLkY@|6U{H0JFURrR6uXe@3lR17WO!^Qi&yBF`agcQsRc)hO~HDUT?qXhlMkqMRCey2;6I9C`DElsnPL#&r^2f3LH!is#)EczN?&I-l#74=Upau&l+$0$ z!P~OoTNk!*e$F|^n(-lg^EYerlcLp8Mv&J^WEi^WJ+3KA>aGJawWmxL`t<{_)+7r4*EUia2pHHZ?QRuA1 z#}DnBW}fUe(+E5Zs@C!+kSUh5KzMll zQPhM%8FNl$sgkLsoEx1@H;(V6gZqUpMwCzc@C!vC%M-?=@J){F}MLXwcoVa-Vw-f`w%A>11t&vKRNH z7K{w>HH!Zp<^71wGn{N)B-J1y6b~7a4LVZI%6as0{!fg8Q^I8B_Y`#sry7Sxa{lTbcBCSd9A zxFw>%`ol4Rb%T2q;Dgr+Gt+2;EqvnWU+vm@#jTkqd%*h za`vHkdxi3pl-B^0T`7bo$O;Cn_TZiw$1m|hRzu5 z0@dE+Yd%p;FcKTbu}w5(Bp{ojpO@e7eauS4hVG&k@P^cTmBLZ~#&sqg3KWMOo|f*W zE~FE;7w~Ad2L;NK$j4vnaLA54x=}3{M}*kRC)=l(?2+YQ34&1gZLLbpbs`g0wx)xU zNmQzR{Y#YH%wahG1KaAULE@HYZc%UW%fO>DbD1l_J;9_6v=O;>xAv>+BJ!q4P#zj{ z5%E3RK%wx+JMZn%y%_$FCsU@CCnio8UCJ3@S%HVB)(dk(rII?Y5nR6?!458ER~@x` zQ#4Eza;1aQzd;8cB_uSl3EV;NV` zp3Rs;^FK z=p`*FLs+2;=sK_M^lsb0+t@!kCI`u7MwT7)a@m_~Idf+aUvZ<}tf{0nDbtx7{KU&P zV4O3unLOuIDLkpSBu{cL!vMDAm@$8}QMRE3hcCutu1!Ub6~us$>AdEDQ(TRE$BKI` zwiKk?OxchmqBDB*a8~tVsZqbk$=xNjxw|a$QpV)^bs<%15jXe6ZyXk*^i&4k1V3&C zeJ@oAMtO&Wl-)$uLPKPtaDNNQFZV?*K@78JgSLedhapJ#DrqyKM(X}X zHtCNVylPZf{BZAxXL-)t`Dt0)FxHBldtl=Nl+IPgLk(IR7ZG^OzR|SE89mviPGO-T zOn%8{e^tOxoNO>!1zQ&PW5D8h-7ePM5>Shc((dmG;DCe{ihzPE9^A`$pqs+?gJ13R zCcEPEc40mN-09}y!H=Feu~@fElYX4WZ2de=_ij1FCNci8EO8b`AcOK1F zLes70OhIYFrO1fb3;T)Tspt<_eB5vkbyQ;*5@eQF_5S%CS5;O8SUtE+L)rsh z%W%AD&_!=#YaT4ACS8@N>-3nS97MH&1!4`8$D39{sMfW}#`VZ&?jSNi zgT75^j1+5|pW3QvpQOb^9ECuWC~XQKZ;e=>Xw$>S8r3pazeAtEA&H(+qjas{DAOVnz4wkcdO}pE(w4t=t@w@>4gG8;9$TS)g3eqz7&0~(k1#6<5L|3Y! zz!I9%s5W7udKi2ZbfKXO5>qNS&&g1&J)&@kan_$Gn5Z-?@MeYQh&qGaudY0AEQn&H z)VHw0xL(@QQ(y9|8m9~(1)?TV_wP`H(m$=EnxT-Vgrm%-!BV!tCD|S!Qpc-Q2dERX z!8B6XrWWzeHNzV3-jP>34UsVZv)lU?m!7l2t~t?_XzZI64#7~w5!SMjt2c+mXo2py zJvq4Y(-lt?>9iFV?pRk=*$$yCb3$tPh9AHiHrrdo#>*Z@s5}wPDMnMV9fCcfYrd?B zHr@nNlk!kwqb&R)Vyb^SvcX?T*uPW<058~o`O{k_B>pSJj(yT`^(Oz56D>SxYb!Sa z=TU%sATQyyc+bJy@vUC*tWYr^ z4IPES4E>4LxvM;hgru)}fSx%bG(!J|BJZ4sUcaxiR|h>?4!41mXL)HL{n7S+FXe{m z{rn{f`5yj4t7&r_L2H?&nUd^SwxH$vjh_wHME#klOvWu-kou$7jClTKNz7}`{M=^a zkPb4}hc3_&2k`V#wX$VgjLH2SPUL76$(lMz`lh~+(GP_FTD#aMN_tcKw+M18wb54~ z>vRLindOjGST~hf`xO;~ZejsG5H!;J<;YpmW>ehsvdYz28Co+`{QLWv4!ogsivhjP ze}xNkk(Q30UEp|xP2(x{8w&flQE{4cOvmmV?7_AG>`;Ca3S}b?^n;)8%QOy3Ri!S6 z`}c6zRX8n0>Rjk(MVddY7gAoodb-X)2Y2GR7;;WXO%%HgQIs~fs(ZaK zYVx(>rdw8?@XhCI#DymJ$y7>Yr^lGXF0WT^NNNOBJm52Y?=-(F3OWaEK4lT;Ks!bZ z+V6MU#WnL42{{Zu2|!Af|As(hD$KX&Jl5m$Lfdp~+y{9`L0;ZzM*g=$1wWQ#Lc(CE z4ahgdcJYjN1e5;$aOWo=e3W!?Qnu}*Hgq5{bIPb-h`4z~)QwhsJ2y4FsTc5<$H#WP zJ1J1%f8-^8kLqFGEcAGGSpBM}k=l4kVD z>Adzg0?^0mJ!PVCZ(PdI^-&2}8$LVpzunsyH5m1;x^$!{?wN9tipYI+_Ss`ENI^yc ztP~WOdH-LQwEF^nl<~{iFWZnX2r))(@1v@BC5oY+IF?=`155c>i@nX zo-3V@p7d6R(Z`C_Ds$Gh>Ev@3-&55$4=K-IoDV&%7C%`9>+}fXu1(n*nBKW!YwIz6 zPw(RW7~IY|r2@7g&~0Zb)KrzD>K#nRx0UediQ^c|YiGZT4Dh3kuW8u|tPVF`=lw_QD>8K3I2cevS(IU4 zF7<;Ow)P#MKfR3jvtF(1|)szA~S~*7ub{O2f z`5cpCfj!oL-%$VhVv>brXfXVDF$TDFoj#pib5%N~7xu@A=?`(N@vP);vcxCh;oVC- z+zK2a;P*e2k7d54N1yi`5H91O}wzX zXF{Mh^hQkPY*ubZ5Ej#wu6g)Fn9@bwMC^J6f_+P zo;W>YW43-0**6K7=+e*Z%YYy2%+ES5Yxs!g_`vA1Uj~VECS}x3euw;W-aJ<{b1h!^ zq?@^bRwFEySNKI=73w78c4Ek2>|O!XW@|pFy*^|G1+zXCoW+?|y;ubQvNYN~f0~Ql zu|_S1lFDotSPBtpG)N6lhtE7xKxt8d-#xtYA%CsU3L^#mVP7ms>X3pt`8fBTJvHe3 zer&&kNASw1zsC7hpO~IYe+G6MV0KrmpJD9lL4|gxVdqn>>-1== zr#U3LvV6+{iZ+|o%)1sWnX1JhH5q=`eHbMW1XGz?-l#pFX$6*yI(#zP_DA@cSkcVD zV-5A;M_J5bH+WJeObV%`c8m+m``T%kb=i#iVbKpuBeUn|up&mfe+hKf`vLREnPEaq zrK&J8BPwm&hJe +^r9Nd-lmlz|>nJfW#rS;>5;cO?`;X#^0J^}p&+3m31F#vcy9 z=laK_B2O@_Sx0uhKGN~zegP{QzVy*(&oJ=G=R*B>rM->y;JHVpw~@DK;0I>`E^f05sbfqRhp(@3Fcc~_JT{zz=+ zqj+63u$OsSVPJg7eq(k25?3$Jc)`4k(PC+yG+k3MJAuXc4mOujHLcv5@~DYxu+VS;`7yL>SQETw@q}0;P|qo&(BFJ^Zr! z+wI@X7rg}|Oc4?R6p@aR6u;^$2>}yq7qVaJ!z}P0P~5eZo%3n!3`J>=NgNamHJ}fi z?f-`4<~yuPU{;!v3bK&Qm7Q=#XoWRrOZJ@RhzDt-9>|1--mAt)uXGx3f>Roh0%}Y2B|d(DA<{eYR5xBC^oC`0loa zUcBEHOlxp!t!o!D?ei6bizQToXkRWAY|3+cZk)rTUQSm~8|L#q0(Xz`Qs)**y^0<- z76Im8$#jF~hhuzv=()bQX^yUm3Lx}@Ri_zQWm}v7XZ~FV6RyN1nIoT#Bx*;#50sW?cT)-9k0P*-^)pbUF|P-j_$Kt%CD9ZdboM+7WhEZ-%cgPeu4$M zT)D1xY?z@C6;n3;m>K?zbaXTPj?p20a)1CZ zY2W&5I7pl#VUh&&kg!bK;m_@tpBhyijf$4qEDLUKGW{>jK3QVFS;#iLfA}WUWZx8u z;?193Ake=2Q>(Q%tYOS}2(Be&2!yWcC0EE``W4j(r9Wl#Z4}DlpyjtwX;eY`U(&mX zh=@)z=bs5C87zdZD&cz%_T&uxtp>$NbT;eMZzO($p~}6# zEbDTbc4;X)a^cu>h;rA< zzf~@jw+!|&eCv&L8kZ+^JOe8YFK^XKhEqGEGKUnTVnKX8;+=*5z0c|MSg?|Crj6G+ur8HEuOQ8cXjhbN# z3e=Oif38S}-yJv}o)is-C|uS~tiMJF$AAa>7}_Y3RAnJ^Iq!GZwYzLoXs-r_O=QMq zsGpZm9t{dkX%YI_DZPNV^LefgI=&kv=~m^-C(W0?`p1n2NE=Tzah||_xUv)9Vvx@W zJJWQnyLxkn=8*ib%8bdesqY3e7iVLrH0yH6pX}8M9VgV90|RoO>~|y_wu`)+xC&wc z=M6XU7kKm1mgdp4hUP$@Qi1#;YCP|K&&VQCft4~3JEC;1QMbjqM@bViVK_8%w53}J zd!v-~t=C&>hc+tpO*`FuxH?~H@>yx^lFWtB%m89#mON?I7kD_r;K3bcql)SQoEDm` ztq8n79FOw?!SfrxLd&8VT*6QC04a+t-5-m3*Z>3At)~@Wp?G~BI*c9DUYASur=HPl zLFG!sS?oI6aR5m_3+Uoba6?j}v-AQ!>m7$SQI*~nWCcC6J^wDYaY+=6eUK+_uOf~| zD|DcwhtOma!UA^b0r=KnhSyzm?hRs!l>2rKNrQsJPOQ+X1lWG;vjVH3gT8+YBCf%p z2s@@Ej(V?i*MC|s$F6S_DFMss#mjapgpscAnmyXqyuBeFh|wYH0L@2SPVOI9p_rz! z&$ED|lhd{S&hRAt1n-ify6)g=4=2QW@3C?4hAinu8z%($pZ$#@{ zb-H6sf#HeaX8NO5y0znRQFA(#t)}pcW7s2(1M7CKo9@hl_h70w8E{6(m%)WdzNk8b z#DW0(7?V_Bmpbyr^S>LtdZgoq?&*L0RDQFF$8sR-Hsk^5p6daYMV=H1E|1>)yGHha z5OXRZht>Z2DENN{n;gI6tx}Y_`$GJVwghHrQ`3=oVnL1MzpqV88?OFc&7AG)?~PC zNk|e?e?@C0yo02UE3$t$K?lOQ*R^ zrky8C1z730(sW4et#zk0p1v3ar|iQ@C%g&2Zwb6*${+LkCc^9L<9%fpJTYkYDp>@Z zeCDxs9~Nh=u3U=tMN;g_^Ey%?sR-P ztLI0)BEZN;QXI=?K)2Ji>J46*B(B3}jv(UTe9Um?h{1!pOJk;nTHuYon+VYC>u@u{ zFxvU2rRrIQi#HVappnO}QN{B~*{a#2&rMw(e(s)VZ=p8LHtI9as_MKa^o{ZlF4aR1 zw-YF;Fqm^Vj%(uzU!SPhr|-4Jp&SS zx|_DR<}B3HI=Tbw*nMF(yn8fh8;X(+?Jp=^wv~l_`b}dD@K>VRS|+xB<_UON&wlCT z)2bvqmXq2W?6M)Xh$-S9M2%OWY~~x~N*`l#^bg%(=5{^fkR~Z>*7*(S72n+R%KjK* ziv+dTy?tYWmuZIsJq*#NHZ4sFMHR7ulXIsN&JL(^l}z(6LpA$@+zZd)oX>63Q`5L5 z`-iTh^Sd}&LUN|wzLvtb!9=>}HBw?TT7?*c2R-C4=l`S25 zdUVlkBwCGpg!G;yx2$rrp0O$TWy-n)_8IyIAP%m^dHU1wib+67GYr+qT-YZ|sN6O9 zl`0ULoQIFM$wNwU4mD8o%W{M=^;A$3v2<2tdH>yffPcyg5W^Qfe4cm z!U@;m`5F&OS#zolWHbA9`;`2(Cvz$LU5`FEoPLGaJgx@^i*&{~3yU4{Md=4RB5G_- zU5;c;0#k^(>PvUFf3_^5?#LMNdF~zCj;y?!h6)DFUI?LgLk7e;O_C!$_3LksXxE!6 zpU9ya4YgV6p~4fW+pK+d#+4+lCSfrLnhHRHe-n5UqCw;B6GFsZJ#9kRoQ!l7;H^+Y zYfYN2nAynZy4|EnRy%;V7Dz=Fsb4iSrVz&Z(#OPq>yk7-FX(=+@cwz=FXYsq7c6s) zp)USbeeeaV(T%+;|AjP9u>9f#|B`Zopf$Xr_bK;}JZUCRo=CetYGhhE6vcJKW=%L_ zHudaFUu+l-YxHutSzW{nQkYH$g54I?ES$_M(t|q?;<^S`Z+LH4z{$lXQr{!_j?s(} z2_ff$O6@$^h#eqr*9lbYnum6j$pHg~S1mKJWdwF|{ybkuDM zfxmpXk>B)}m201J!DlAw3&@QAOE<=Z#suoO6D5L`EvJ4ysKMOB+V+fs7TUTd19F<` z1TBEwYF-1J4mExCyLw|feJVeJf9Z>17>x^zxj7&M@oI24ONQ zpkqcWR-tL%YOU=Nce4QRs8FYZiZM4;nwQ1q?j$!iA)bQYTct2)r$Q8xNkn2Ed#(D| zzraXZ5O6DjRWY{Q@8@2AXKE-2Aow%0f|SY~`-MJ7@F4_(00;BV;*9SFo{Gw1qo%37 ziyobawV5W@y!NOnlXd0cP?1xD`TCh3;LrJ&3Am34l`Vqj!YKK3*{rm1uL=bp0rCaq zM{)Ht*F-r|+2ZUf?c4f>ssQ`abJ^tHPM)HA=d3kpO$YQUa%T1SRpHLbG^ftsl(K37 zf&X^mD|GE#qIfEdGT0{0uUn$cvMYZGJK6TA_#z8Jc<{KVLDKnX{t3`9wjqGDvV_rC zmNL(d_rB-`;1rh5Y4;IhRt1!|qCux~ie@&90qh9mKvmc1q)XR)r1vWTCO|{vZ?BpH z%7jADGNS`(IyAglF zEeB)ymATrj9fdVy0?m|kcKKxMz>jA_9IQ>9A3Q%UdNV_a!7rIu52<7!$L8{?wFUFM zfNG~6R!V>d1=qog%w7LCATskLQn7TnRzF?+E$3$UGei565C`cLC$#OwO!M^&s1TY9 zoa-M?z!-d2GVscOSZKm^^mVk<$OL|l+B{Wme$g%EA3DPmopea#$>Oa&pz?R1Ka%4a z1;_w*^4K~yqx$yP{#|d8VG-sIE5!{gMVQO4B;PSO9|v&VK+W5ZIJf#}?K(t(fG5hV zr45ZuCUp5c)#^$b1CHAg74E*Hz^+tpgxN1aKlK^z5~ki6_uW_R<7Q)`^>sa*xYIF< zbt0?W*g-qY_J&%AYp2YS%~uNE@nLGUu(vuU@HXr$va@oh?P(M{<4dZY!;S!sHj41t zf)(YcMGyrVZT6rkxw%Z??L$Fs=&9McWs8Y!AM8^(uxi%t(!c1XmJSzp2hjB^Q&i^u zD~4#^n5h@O-1}yewtkTw#Z?0a9Wl*nA&#Ltg?f6!thX1a@NwqV?!&&~tiri+{q{_^ z&21Nd8kJ2W7m7ClayOwnBkNqcIxU&9xxYLJBTp2hok36GBR;8L4I}yrzCtUisM>~p zUb707arL;3nXnFjqS3VrdrW!Yqowj~Kq2Q5o4E`x?$XX0Na#mDVlCk* zRT9HQHB+aKUbbzSMBsntGNqg4GDmj4@qRAzkuMB`x2~mbsc$kH+>PL0$}2`GXUt4n zS4s-o4~^=g$_wVuxW&VYV!y+`r(*w`-X&IcoZ7FK{=O8KK^C&kt+p+&L!D2VHNYAS zVW6T7h3QV+SReC0uMB>->s+EYv{7TF+CP|+`;{f$k5b!mmI#HYgzv*)R4 ze&49ZqW#^hS!ZVf--%VFq@i5(;L)7`@LH=SZ~dRoW#aOaxT_pO7cXoE1{puf{{8M@ zXFw_AT*p>Qctg2wKPrg|QbNKyv;-{g!9-a%p5GTZ5zg`?d%!X;r#5PO|Eky16O&2H zbpR+}#_Ww_of!XVvhzBfN!3#$H8Xp1x{s1Vbi1jvP!SG!AyAs?1T_$sqFdrF zuSw}IDjiE6ZvVy$F(}j~Zf(r$B3gzE9YWxWy{awCamQ$kJA$Grv;`5w+34X>Ruh?} z9+K4lTOsfTnW>u*XHDaEbYBYt|Isb{I(C?dy)k!UjyM=RwOjh0mo%y31DOPcDQ-{5 z`hRCqGp#Sd@fIK9GXZb#da879l|0vcn)|5yu+t z^@VhiycNpP+kIKEMB3@H?wZa3+|XNI+_7MKi~6xL8HHP%zRBq!c;IlQ+b}G^oJTu+ zxlqQ^{jtHoso7%nPvVpfwLC-nbm@^x2sdrtM>0b@+O`O6u$rp(Vtr;}=;SkJn!Z@E zZbRgSDk*_{u(adyCV1-F2akW-SNc@(ds~JC<}}oYTG{C=(tk88#u{6xO2!UttBf`P zWsDEi?Q9h+Pi0f$=Q6eGRIfvsJTGR;6 zSHSzn8&{3TJRPQbONfHG1Bz*d;_`wcyXjIDK1KvjT<~N1M-t@<0!tSaW3JJ%I@zn2 z!P@95jT}@{XX0NFx>ed2tKQDCQ>w40#ROnR^P@^WCO_0bR9EF99&r6v1mW|4JKv&Q zc=}nk=OJHfz3?+o7c;+)B^8xY@Os~~n8IWE-({paWIz(ENSCxK+R=JNN_M7)QI2t69hiaopg z?e{U9onk@U4zMMlo7L<$RpbtJ{sAj+tQRaX$jQ+V;laL(8m)|~S?xS+4g`0UpHN^$ ziDUkcXIyXwQLfnuIm<7(mab;Dm zsS)EB!9BpV{V8fYRC29LQt6A3$bT1`ZWP4ZUfu_2`@Z~7HVOS$z|4wEdLIWXhlMxA zOdVyZnf{_5PLU-vfE=6)m%DiBHQ3drc^`Sa7@kXdcgsE)oQZv7-qIYv>o)aJ|7ZIF zOZ2azXI^!QZFTTZ?Fs3W{dAnX1eY(%B7^bdz$+4tho9xW>;t)`r2?t`-jCQ2^@v>3 zE*?~bLKvcl5OCC*EKlZPX=tG3AzZZbC7=9%xkXk|)93l|YQ^1EbNBu2u95QrfDA z8q%KW@r4x$nQg$C2q{R~m|`dmrfpg6etH?DL?3gzyDeqq z8rYi?b=5Opj`!}Z>n%yIH^qb7D~vTNs9d9MAH!A)T6|&G%4*a!!S6vm-^1_kgsMjZ z+r5q?i^koMo3UfVop2h1A$JvkFR-sQ zKdj;2xK%+VeYbiymvfr>XW=|gbLT0r&6d8->c7*uZrAieNL61b`vt34uzL5)@0V=2*IhJ{|kWYxuU)$5$q`Py(S>ZT~aU-y4am-d<& z=)X9r*OgIYW27KTDkLJ97drBiIXIB}ZRE>k`m$x2kwmr3<`zyKlN1w8pkiBg6yCVN zC5X!QY}JKjsU~8H#&7hc>J+NKTQb^)^F{|V;~aHmHY0I;rmtsYiCN9U zr-uk|QsYjbQ*J}=dOT}P`((K3MW6+?AXl6h*W4BvFHJv4dE_J?mXkgaQa*08KQe;f znTcyjWbaco(zC9Ks)&QvVWVxB>C`RYFxS7=%@Y*Zwe4`?&pZU}Q`*FDNK@eG_+?n|WJxwOS2*!{u zJzjvRZcI}Rls%njX+!;~xv?xMw1c^>aZ0sg>frcgd)e2t#j(UP=;$hW^x*I3Zw57$ z#l28PF6%#z2tOy7v8+I}PkqbAVwHMPTQ;4MO(j z(9NBHOKxC3$S9z|8_Zs><A2~ddeExKwU?v{H&=;3t_xLX-*^J;f`s!~1GVvX( zw8y}-d$;;PY2+BJgr>p6Vl03=8)-1Ce-ceg!elcrbjk*<3$3LC$kM(~SvkS0;zhC* z%kp^7x}$AvT#Xah)rm1uqtVa69@C3$i(`HU;q7J`e0O@OMK*7o5lg`K4c2GmaRm&u zdwZ-wPL(MYDOfalO}{(KCZ~)0aIf;!$LL|B&(U!n1Ajskqjt6zqTj7ALz{AXFCde4 zK_2P048-MP-4}+l_j0)~fszH&30Vh1$*}VC=B;xbxO>SXNaj}YgE+xisEU5sJrWm@ zsgx;Tts3DFe=n(_RH7Mq_N_qD@jYH80%dTTEAujKb3?l(JXP4VcevH#948nSJ@$g5 zRqD2vFAS?zp^ftei%Z(DPYS915_Gr>w=3kTNI-cpudDF;7wvzd-gxU_RPh1u4>!8n z^F|p*_$QJR5Mf>QxRT^o)478#U~%*OnKvBXmT9ooZ^YVag6MnW0|pe+FII5(L7MfQ zx;moAlq1>l_2oE@shMvP(kFK<#B&?XBbPs+Rn3uYN(bb!9_kJpu#_gRE3-WW;4SEb ziu4@Js9#g@-c^qgoDh)PM_BGbRRjk;3yc-QbZGL;94Ssj$X7tkXOSsA7-DE&B$tG! zmo0`AIl_WvGnMouIz@}bCZf00mVbsI^IP>}khiwZ!cQy^Hg&pPh)aK_s-JvMZMtym z1DczvYpMX@<{BqACy+@sI?Edd${(sbRO|8k4x6c5R5IBW z1E{{;ISEsUmckeTxU5~6UpJLmq)mHAybvaKpa-n(=rCvtH9S$yDxzc{`KUkvnQQ;2 zPkP+xU%-#EqmZyCm*I)%3UkL;)xQEH6N(1B+1jP2p{! zteWlDi7T9}Y2*)JDpvB7bRHr7q&kkNU6E^yf?20hyYuu%G#NhP0p2Jx^$1mFWQJx8 z7pvvMx4iw#jAP3;eKdB3u;QQABK%OQ=~67_hnze~&^W26Ec7-seFj%(@Tir)tEqlv zP&K^|F9@S~9_155m`w8e=ry17&qp z)b~YZ?%49jqq@q_Sbd-LB0MSga5L1X*U^C?NH7N7I$BJdiF%?c@)*PwUr#hA>KiHc zYMdO{3Cwro$3Ipt4mB;^lv+~?QOsN^AJsrrAWvGXBt>S#|P|b^wnfR>1b9I?$wI=Ced+S zFMyv^0kT?>klN-F@&q!rfUfAEoDP!9ypu63FqQMM3|2?u0gh0Th|-^G;Wt9BR&l=~ z9Uq_v3iAJa>ra0%XNNQ6U~j>6D^@xt_(T(n(#Ekov9>S3S^ryGK!rbnr=_^~b5c&V z`JWht$|byOfV}VSNQUPfk#~<0yLs9f&Nh#t&OXAFwJTOK!vZ5DBgS@fEafV>^(^)=Rdj5#|`T!m%Bc3IeEe#`GzXTb$=0yd~Gm(g@ z;K_lK`sAB&85vuTPK%@e^S~r{(iFxz`>2RJ_5x4kyU!*pTo&w=?pYJwKdLRVjQkk= z&E0ITO|H@SOtm0z+h3&jD!;v3zwSp?*3}e>(_8aG$E0U)am_+qwxhUJDua5gplC^5 zS23N`CBfg6nQ)C+64S`w%V8nJy>mnTx^fKJQ#!={E|r#_LwY-#1&f~=cPOi@TaG;m zK`uy-h7k(^p~tcco4n)E+nR&c3H#TRU~a{64o6HUa*p6SW4rOZjQgwiiMc~@d{kc8 z+r?NZ+M^*37AeQJ>VGR^2n-3BrY9m@Tc2}~h1q^(vz9c-`_GzCy_-tRK;+L`6_4|o zstFlds-I``(7GA_3oQJB^Zv1XMFbslfx8G@9JXkb^N(1uXbouIu6v6xjX>{W@Fo=! zD%r;>j5z$7lRY2E?$5yfh+zx%ds01BW+fCvh6?3~*_t3$kP*w?4o_`2ze<$gp*xkA0}|xmZta*l>>JrJc%2Rzd-YdI477)R*}8(|nu`C#k4r zDUF1wH_h|wUe!N)A;7p1%605kNw2A>O(KygbgFrWOZiD~C1*vH93b zznd__ioSK5o;WR4-LPP1&PNQ>ZMMSZoR6x1rAvAPfisi0aoH$H+OlHfbra=wgy$KO z3X*2?#(mac`VXVOlsa{FkXvAf8`=S0I7Rk(gRriB@MqHBAWh2X!yD#i+xVH9%67It z-Nh$j)=Os{UkF8hk~i1;8B!|$Ee3VTfIPP1eb3POf8lS!+jhm$Ytrm3B!oPW3~yR{ zA@r-%6%-rm3bR`X@5YOVvbylDUQew}Hp#OBwSQG7)78TzCVTZ0!d_Dcw$0iTzb_e?JlA4|}S{SyVD&zEsy@72kXQr;vBZSS~do<>NYUa%V^IE0qzC zp4>-gctA|)%>*N1k6pw<{TE+viz&AxrgkM*jjLz7J;kqN@J6BTBV{pvo31iMXK}T< zrpe}qM1gA_A=S`@FNJRhfA39sWeR7`*&9+?S$S;aS5sX|NN&@kIkF(u$+M&PAUiPm zU77w_nXb#tQ}qTL6J(z~al zDYrQA(j<#Q?Th!W9?HVsC`HeDQ@lLr_Ymt;6Q|5AZ>$Lh4-*Lol+1^CF>RjnX3cuf zj)buKEB8?c>DJ731?W)t79K#~f$o1M(c8BMTMIvv5Ktf3Pv@Qb#xVv-!uJ0_ivoKh z6Y8xG)HmX5hwBm)DvBHv6gpkYF%TKXl5!B2Fx|j~+X{vFV9$Oi-InbgIeDEm=H@1W zaqs?(5G&swX^r-#jQ96UdJvjBfZ41Z))na)$cdqeGo!(GN)KjgINW|;xz$6FK8%{v z_vjQ@9dI1A#wZJN;Rz}BFa;%_die;&*YPvvu+H3K0t`((X zhhYx#MV!v+3*QX2OL`Smtczt~Wu280yZSZk|@r<$XI|w-Pd=n>=#VpA?V|0VkK3gZ`>0reX=!1gjH>WXW3u3P;OXEE(mW3p==(oWdM%d0gfW`@ z@67aK5r}!#Kf;>r1z`s}>3)P_*{*UpYb3gnyM#l|zg>RWgZ=YhJ4+I8=YR%G zTUeu@=P{j+@N+S#nb+O910Pfp``()9-*UdswCf(b$I3+2wMs_ok#0STdVUf1RcqZ9 z@GSZ)sTxlG9Q&xV@@NzJc}??&T3og~D17YD1Q~>MV%Z9Bk#8<^2*EYEDZU=goZZ}U z*o4N|?ha*QVQZPFr=Qz4@cryl3ckG+4Z#F})L{bE1rfUsTss3Y!HZ)sA5Y;QM1U4z<;*0og24o6E(A3Em%`>t1p2iYrjAZ*g-a`bs zZeOyRzdC5}<@M%}s^>Dd1j{69>)*Zx6#!L09u-)**Y@tv`svs76u6t+yJSlz0m3lH zX+_RaxDAbzcZKW?SV=*zAp>^BLy_8nh19bw=b$Xyd#9T@R5R2aCmhYiW>@H)T&I4;vAw2-;o4e{f3c+)DW7ePDp8%*Dt8SZY*2X!#*Wo4j^-tx&@1OMq zFAn6AOAv*aaSGD9vW)*$J`?%i8=kcHw|TqUIJ^A}vUg^8li^221r`Z~6mXx$^uD*x z!_6^J!8P3dpo(C<#w92>N8{0bigrlMtIV(Urj z$Ymd}Z^$eZ1As+NBl|j@4!s;?yUW_`V6zGJRXSNQrMPDN)BjOVQCaF~Kae5h6>2$9 zZRo=>AayOAbvx`yQAzIxbN|~(rGQi8p!ge={s<&t@1aW=kvHy4l9nKr!H*k)U{?n43TeVi%&!l0hrj32g7j`%!>%JN6ts(u5zgVsA zLM&4QxJ>5Brx2z9yV zR9td$Ww8!4J{T2C`VJ<4mnfH#8x)y}j;LMS56B5Eb%1SWBYTtzpgCm8=s(jl0|3!n7(j3XZ1DE0zi)9~*VpId8=%Kak zn&eD#N)C}7?m2MQC9T}WE<1wmDTl&N4{;95~z%suzrsKoo7)8~<=!1#2hw43h}7bUu|%jps3#RxB41lF6% z%9bl8D$#t#;aj?i)#IKv85v8M!Nj6;8%4)5ve7>&zyx$0G?thR{^bJ*^_^e(rL1jL zlir~OI}5@FHbyiD&CQ}-xA;|%d$6{@KDTZ|!n~zf?syOsIIxAS@9RDo+Fbwy-u4Bn zunL+&v;c`CN^7$ZL9)<0qWkrgt$4jcM}kQ)n^ipd5B znoRuU8?H{upr#U6ZA^*jUc(eSY?RE02U0!=1uvTzF>%wUWqrslH($r!$aDoqhvK%2 zZ~8+tH7~l|hW|!ooiuLq)m?W76SETk1ouZsBa!4wCBr57#LCi8q=$jMq^FZ?Uva(D zH(Se35|sAvC{WYMeAE;20~4Ol71agf9pb8Bi-i8Mb^*t7Un}Ahzqwrj^dsqA&InHg zG`uMEYWf0M-o@o~Y9lw2tzGm8|0U>3B@=e!+Vi&XlKf6D5#H4keGo)H7g$Ws3M#6FDfB8zvOc1#9loun z;H_1UMP3_aLB|^2H9#B|Rk=6rh#t}!dDZph=#JmnSqul=lG?#WrX!pDnyjHS zxF19y@4Z7;4^0qxJNJS4Ym*MvL-m#4+s4nzR3^$^Cdgb5iJlX91X`*2#f4SfB7f41 zT!$1|PwyspCPc0^FGALbX}PSTi}#4I&ssQx1XU0$r-zZh61yo=oP&rc!~9HZTDh71 z-mHtS$#^-{$j)$C)RnlVWTKYNp9wxO3R>^M(HS$z+jz{0#6UvPqg4c$tgBwMAnl;h z-jlDZ=wdz`Ix%xlFroLn(WSgfRDTRk$J>`7U{)eH8A%0jDt)Z~1JV0szoWu$l>+78 zHVAfIlm46_#R{DXNB49@cR#9W211ym?}Ub|c{eyT4aL&M^`{ro9cS&E-2HVjoI;E# zwR0qpsW(cHN$zETgWT-b|GgOi(5zBW9tF4EYKA<9PP#BrI|0qTzftHWRlmUSE(AD) zPfm|5K%Je_v}J5xmV7lMQvuv&ElKc7UDPo@4#`~J`6nKgs|rq70v(nj5x_ua3Jt$L z;u_Ypq-k&n-2xiU6xkSI)+@h?BBGA5*8D6YMW~2?@q&o0e2$Oki!wFpSK9XH`b(xX z1qm+Ug5^2#&Clwa0W}5-JNs5A-alcRJ7kgkD61&aJJZN#YlO?lRv4O3sXS+ zRsLCsgITR!echoVv)80W=G3f*z7w$zm&Yv=^TWLT3<9w9uWr*>7JxCdnPdjbdq38 zFJpD9@fYm%Kg$N*9I%@_ve|ifFV@{7ynep0 zTR`Dn6`&MsXYpZbVWcaDD zKX{w|A*jzj>cumQ7dUFO$s#v5%kvdIjynMp-r& zlap_RP%rGhbTUXyAG@ditkrnj-7{Y`Ev+ZcKw>-!9d1FD&g^F@hF;v)TlpuCso9#Z zce!1@L&9Ut6@ufpc-@w?7kS{HVXKt`5dSAKQM~7&2fk9E-hvV_e@+ysuahjQYMIyS z*FamAyOdR28J^eL($$b|mUJNZvfye2;b44^81$1K+On+|B>m?V=X`qjKM^hT{*!IT zzW~xGNcAx^n7=WJw-1xugq%Hae2P12^S&5dq%K(JXJFasCI%fIE`Rx<&Gyu_yHlI% z-P3FG>wHL35IUgI>pNl&;i$3yGBnXdgI%-1HsXJfsZd)p8())t4|P4?q}eeN3*K=v zI(l*3iTeE>hNkY-A)!x?M=*wav#4MeDCoFJ5I-&II(T}*gEF8zf}MXvRWvzncy;AY z>sG!ve!b9}u1N8N%DE#pjQO7slCS{v{tCopyY=nQoAa|LVsW#2|Ig8z$2D>7|No!c zx-Te+;uchrArU25AxH+Wtr#E!Bo+{5(<%lb3X#mPh)eISf+Ql5%pgh_Trhx&s4M~j z^;QK!z>E?W1p*2L;sRK4Ywfr9@jLxJ9{Lx_%$alE@7L@3exG@q+#1QOpH)c(hJW0> z^~j+Q-cQ*ZrYBQNbC6Z6I*%j&H&J`IYU~FGuejKYF^4h>PRKzgKV?#ou3CSsnAUP2a`4V|P=h4PK3}329k7=aKgNiVw^DUPE4~ z0X1*Fwmv9JO4zT8UaRNcPI+Cj!eF;Eq~+-3>~z1)cS1@QZa3#y(YHh7V{`tlQ_cx< zcV1~sF8yhHVtrP`#OLn*(hPm+@B5Y(wB7$486EN+!}pI&SG+%JPGg^&M|sQhKC&U~ zxBh2Y>x?;VBS|+;UU^YPpXM`l|3&8h=hshXJHEOc^~={?ogFUotQ&BB(v@$LxOKX^ zC=W-MZcXF-E&Vq%cKwDYwukD*wmkP-8}hp6Lh72Hp>qqciCLdB`Mk&_`;xyZ(Z1NFnpD4ATRidL^i`scS)rlN7N_x#@+nO6X#tGzjs{GM!WZP zUsM#kWJY$t!);m90+uBE&YiooIrEdQ=-(k3VaB2Jr#il!dnZZYcwklKy~|OTJ~8N= zl>TGsTOxjnzcTN^(KjoS_9^eb`L_aV#IGh&C`^-aSE0{e~6 zrekN9>_}OA@qqa2wWJf9wLNQo-xXtgKK8qV&phs+gDHTlGVLO4)yCBj+vaUNawGwz53m|?UGm5Z=DRzT`s;lS#r{FGKJOmweR$b zHQyeqob+4kJ0n~EbXPPu<2EDxaLa@;=ktNoZtF)HEclPC-I&p1PxySmnFNak} z|Jw2R^HFBwUt9K03vT=M#>S`TxnH&a`AroOpuE~zK4;*?F4d)%M~}ulV%R?wH+{Y{ zh$oB;{q)GZ_nDdg#<--&=5xg3nFGyJb*WuBgVuwB6`ikl9QwjFacr*T<{WK&@(fd0 z>({5g^V?9Ry)D}D`ab{F4|`{JM@8TJvZ+jWRJKtvZ{M@r8_dM{^;Ig}Ivv!rtHhJr zQ+>PhD4%6xN!xTFhjFPxpABOn=C}RcHs}DUof>-Lc=$-K|A@v_lch3*EIhD(?ty88 zN!-p8#j51xv^y$$K0dU&$KIhaF7i9v{2(fQ+oSY+MoiD>k6j)Yf0Q3sR+kkk-tJl* zJNo>{@|z(NN``4YUD9QV>#az$%DJ`1HV{XI^-ATfjiZ@|pIb4gqp4jjR{Hoab z+S|+UxsAuqJ()kUd>f9`F>kC2fAFL3EZZ{trG|C)(3X^Es=NVlv&!&Pg50PC2gSJC z=})NL(sG2@;j`2Umz3iRk0<`WoyLIs6_1DTz6?X6H6WsqL ztnnT6Zfsu|addJ|M|Csj(wBejnO(FyLw<-t?t0=c!(5+!uUb^=Isdsq{kr&(rUaI}iW8=XIwj za^Dr^i=cPH?E|dx+QH4q8~Fndj!~(OjY%r21FurA3v2!m$j@9e`1$?u^G2H&*bXE$ z`gYT}x31a}RsJk3t7qYF!GpfL-W+Z44%-+W{Mq^SQJuTX&E>?+6r*Wo1pQ3R{l!P} zpamya9;=%#6PXz$mxku*Z{NKvI=eS`6t)kz(ec~J)Z+Sb=aa34Y>2=j|BI&nhE+;jq_ndU}9?63_9nUYA zcEz;M>gmzgt-ZA%w+a5P^yU!)kF+iCTfgDFoU!88zN_~AFq#tfIOf{ca za`5si_NQ;n+D)1F#&ic#u-matDUo|!p6wF9`dQp{JLcov_LQ~w>b^Cpdu?R$@Fnb^ zJBlO;C-3;qs>?f1CkS@E=x*Of-9aWpEZ-Zv60UDe3XRpJ6pxeVT-?uHpUN*!d>Ni{ z%Bx6tpw8cA-^~M@`F*QZcMIzCZ0~JZIo&oiZRP6+4NeZ7^Y#1&=Uws6J-ZJ&e1-FT zpZ`1hc38CQ6IpXl&4aQnQvtH!BR`I2t=X~fb$9ao=kt1Zo;T|P={@&)NpAG6Adm6z zCEr`|$#CK6zPV{mjh-jIb^m@-!?W}T$3=st`(QJOvF6%oKZYiUfJ(n`(lnh>t-doV0u^n z=eA!Odb>~U^nMd7KkRw$eDk{!vy(7rpv+pn)IGgA%9BXaPTm+kAffWX>s=ZJ_KIV$i%-qFx|`%H$9B}&LO3t)EasAw@>#cPisV7bpi2l=W8xE zP@MQx%ioq8n1L%hMsK;t(6WnaPTVN{a^Xjr_rJHZ4jq|03L~Cxx2S`7q{w<$F#4ynz~4_tcZ4> z8h-!4P=4dy(#3VM-wUb3+G7pSWnCo)_(i+%$ju z%_)1hdV@85@{;0c^$NTBp2r1)MGvYkiBuI6jO7cjU+Zq}{&3Bd-V}4ilNw&PxrdAy zPwA=5IfObsg zw$oStH}E!gAiQVYuT{6b%L>o^LdlFT-866ND!%)Cx$xemyPwwwFMH?mJ;TG=;NL)~ zdQ#6ixO+9Oc-!M;|6%E++TSak#?&2Ai=V~2r~g=;v8m}q%FV$suUlC6{CC#E% zkB8v}tZXAK38M9mg-vS2a!CEj<5=^2F!Z7t3<+OurtinGTan6^cHnzq(Of2(eX_XTsrk3m=v5 z-C5?l!+9XC;B9~S9Zg4sTeNRuVq^w*7whu&vg9^{=3+>Hz+8{B>-QbHom$ZPQDwZP z%S*qpysqd$qfqgwJ=OV6FhiH*{J1lUN{i2oKcd+Ahvw1i;_8JlyRW$UNAG+%p7lI6 zVYGGLyk%VfjBPttRg@Klz}*U-=+wdXO@0MS9YXJ*ULXKX)B& zfNosNPY+1<>#1Mt>Q-LeyE)0V1U^)4sAwbt?q|z?j}9IO`;vy6pFh66ULvO!RtK)7 zoZqd7l^OLi4Sn|d^m~(6FLX72yJc3gYv#AL=JoW7MJ@AQMyEV{+Oj`CNwfavnZ)Ty z-RsyP?IHgo%gv4Byu%lI`(1l&4xJ@s@7Hcxb!W|-$}_TWZ(UZF__%oQ$v%>-_#z*D z`kx%e!mTr;%iMM~d%@2SIsKRT!6g@$uv@cKSU*}-KM zldGR@Jh^;c9CGB~?(1l>^UCwGn|tiD@EKQq)~oaOZOPvDF-;eo#?p1?_3v%4KBdPf2ZSU%$^EFY0czlf13}&d=32?TlO`6t=a; z8D_kVIP~Z2?yIAd>+UazEOk3^Ebrp(x3ZtSgPWfA3csvLV%PlmX2-hd6F29Dyv*P7 z+FEq3Okm#*V)Cy%-?_d`nu+0MfqFK!WHulRj+>265) zHQ(2|WOm1VR(*BR*fPdrK~dYCfsOCZ-*k7Izp&-euS*xkbh1(h?OLzY{8g@b5WU4Q z$~G=?+02=Hb|ti)*t>{UUjIytos50jy1ng{{o`#rCC_(|qbr8L9NyzsPaZR69?U7OG)4+f%B ze+at$zpt4|e!#T$*Jr?=G5e|@Sa`1~FDlFQ#pPhGcr zuXjt{53m15VqLAhUWj2u#<}qgMnlc+)=~TI>$g4p61D7la^9_lV@o6YyWVHsUFtt= zyuut|KXoNQ{UMrn&FjSE4nO_R-(P!N*yz>J+3CK6xmCLFer=#Ph%Y9{1+r-12!>dj97H+Wk6O`3YJ+i`H)o2B)MyM3Cy7n)xSr(SI&POMA_VaQU!4*?D*B!1^N z8M*Y$wBO$krO9p;yh-Uw_fGQLo*m;xGY^HS(1x_`6{**~ZS-+z+o3CO4wRlavo&7q z*?z1ckCt0-H2a~sS|!|2SK9yTz_lWKzp#~ie*QVpvd+EyAU!+rGk1M@#=J1ifemoY@4Etr%!{*R)o~tqSEJ7_yRVCItu5_}+Mvq{Xk=WOC`bHcg^a>;+=q-K zk%oFtxs$Q;x!YXo`ku#qjFmf0mNEB}f0dT&cHC`g@z}49oj;j2tFX?dsA|;4IrZL9 z$G4}*x7~r;8nGy^HMPkW-=JpMcdcQWZ|iDD6LlT}w}aEFK6_^; zFYYf~yJPo_pT3enP&_KkZ+`t+?NH|98-LB;N&gG9a>yxiR{wX)I@d+A_O!(BO4)W# zvv!+DfZWtwdb;4@D2H0D`rM>lDBkGU^yQbGTj6gGu5>NxIT%Xf zo*k%yc`u{aBq(PdZ#b|iZ)IWmmzi^ZFh$T`oSUc2TODbJ+JPUT>kU=<&F$h+0IyD{&II) zx2t_EJI&3po4W0)WEZE!tT=-9HVobEe*VyFepUa%#rtPQoXPNPobCN#Q%R-jQq*bq zZh1&_Rp)<8^S^T}dU!JMT^Uln$R%iK-G$w?rwZ3seA!#z@b@)) z2m4hA?p}*HlD34t7dzY)v35gtXwBQ{L$b2e-6ydhKU*qp7!G7^Ntn8P_TG&f6FE+K z>fQItZVZm~GoSXqT<9?Vdq_w5{n>N3?WL8k-5Oq zSjc3*&8myS@ybF?2N>zJd${d`4#Z;v6n37@yV6NPD5oY96p~; zd_zwoA9UCGSBj1d?a6lTUw5K$#JldhptYjP@V8qM@JkJIobAi5`_=?9}9Y;qrDmzS2@ zmzH;gPfb0WzWU`=V}N$`g){%E&!)w0pUX)}DM^{ZZ!Jl?Ue%gceI?+h@rhWu=jFEL ze~wJ|8?vN&iFa+7cJhjN$qXCYn73LR?_BfCM{lB2IoAVUu(v`bx37*hiz(V%h9;+JN3;lyC&svbKz;# z;c@?ph$W}j`aWtHO>jqMy1Uy3Xl8tF`15q{p;wX>XMPTg+BAFX`pU}Mvz`OtA+g)Z zfzFVg$MjqOmu2^T@_lAN%kx^KJD5?99jra1(UB$oKk2aJcNY|OUMUg|ybR3`$aw#G z=V!_8k83t^8_&qvi`{OOEmcLWuk7s8UEWo(2=lr#^^s_adVG2Nrw1h0p>V+@&HeF#uAMyDs(r#vo&8qRuhLe8SCvSdW$4gW8 zvXqy9&)asNHg?RpCwgte*RSFG2<% zO#U75%^!(j!o1h@r=+cSz^}7RnoBZT7J58<-1^S0#2)-G_Recvi++*}R8-F&T<0Y_ z{Q6t%ix|^nlhfXARjfwRa5Hn;+ab3*$nD-|hx@xepp_ln&M6a|?HfWLq0|li$Chek$T;&gR)Z z2uSzMW@MhPx9+uH`SXtXTcg%jaV4dW0~15N;-)1rZr}K4ZfdQrQK>SqMb7d6!B@G3 zA7U=-8T&jjaKuplEP7+lxm_MnPpZqGuHSslPZN2xqh zcgS+@v?CX~f_qP6#fygS+?{&VK5yC@rhO4{sr%t>*PZrT_l0?udu==)m~g-5LH03E z9d_mO(ZVY^g4+;YH~+tx1sUG$6ECi^T6Q)??DBnHvhwx%Y2KT}O--K?=Us0*_ww(& zjn;ifRX2>CAO7h6^Y)ZT6Uz6UZ69Y>(bo2+BwhL7$uHY_-`JmZeRgzF+x`jq$2qAl z=Jsd#+`jflT5)5$&0mj?cyHR?lbxN;D$QZ}bTTJK`p@k;ku&)I%gSr525aNt|D}KU zLBya|6{XKScTw=mLD{?eX+t%oKP>szpf+r+aa1#HVBlnHugCU}w`HpWa)UEhR9s9+ zYWvql<*Lx`^}>zuOMX2myM6mZZ^YzMaIDF#!+$3Br#eTx{Sb<0jhF6m+py-OVE^hVPluYwH90I>#hW=S@VeZJ#Jvv_ zDWvmiUMna0+j{fpaSNQ|-rp$WLO5QQ0}BQGN(3vM#G+R{@sXYUXYQsxzh zokwLtD<5%R`<7jWhX;C|_I zD^{2flO$G@!y+WO1Pm&WQA<}D68Xc3jX%fP;K3B!ep5||;~=Sxppf8YF-7dxB{eFC zhb;tb?ngrEWlhPg_<3P~h;^lXJB zqX6ey_q6X}iG#>KX=N*%h-_enSQzI+rLv$c^%gjh>1Rsh){c?KMP+VtW>Bxsd|~OGh$uv>LAb4!z{Gk{2Rpw{#O@?bl>7mQ zn>Q@=;QCT{vI_3U^=y@V>_at_PD{u&n}jWzLN1(OWS4f|w96vK-gB$a^f5Z<(`{ zdX%qcMs8->8NPRT!Z70jK4Gx29xMq`qEu5!sw8!T%%4L}K(*=S!SpA*Cb27rGgDxt zlf!TVMq0$FPw+DNWVHz*q-yw5Nl?rm_;^Gz_M)~0HL$~dh2euCCiMOtBM zPpi-pn%6@G4MQUYiPc)YAecE&Dh!dbQ4VYXQ2{33pod{S(K;wbF=xo*D0+w? zHyB8~w^h9w7h0j#>im%Sr^-;F0MRuT1{*r1jDl8zox`okf{g~ldq(EIzwinJ6GvLMtPVwE2xEkvLrzLk^6QYGbDEYcWcc`GC-Kcwh@(Pu<; z2rkUwRdVRcR=JHhPwK&B29Xveh0-w6JW{K$s9?RA<0W(PQ}f^D-?frtpTAw7ibF?f z^4W4@FRkVl+!qTO{fS4!y;=@ z8xfsk;S`FIFVE5pFva0p`4$v~gi032GYT?sVBIV$?6tYoT);xbFcf4-Mq0&S_;v31 zIW7**%4rvy2?8S(uSu&1Y$KU4&;mW^1nNZq0r2GGC@Sex8akNf5uB|7xk!+f9Ajr8 z!MD1KLxs!z+xmTb&fTpl1LT`$`;k=T*X_|R?=UUG=kF-WtdDr)(%6KTyRmS zwl#CjNOeXhd5+=lS49Ik=A36`^guX5nS>J%yS7_Xo(MBg8p;g+aIrrl2#qirjZnTsaE@=0MMDUj*d{WxOE+39YD(UYB2ckVS+7#+ z43rEbippT!-WroI*CNIY!`>MI5RR#ovuT13cms#6mg4?RmML?-(NIrXITXC{18H)C z3gCx+Zz6PF&XGbG7L+)G6Q0Bdm>p5%L5L)aF~zs%%2o7F0-(sENkTH!+lYHzHfDOVm*) zqLX2G91G@8La?n3dvc=uK+vDm9$ zt~N^B)pDajo9(M^FC^9d`Q#`Qt0B!e>S1E|KpzM-B>+zVnX_Pfoa4fjQ&LbVUlGsY3UKmD-Ar(xI2Lprp)!f!GtF3-E zBf@Y+ZKwx=YEda|6B%NRg!K%d7i0&8!tT1q7Aq@@rNY$U!6Ub*P*@*7EFg${7{W!6 zSl-9sKuIcwCb^$1Bu8OAq=eM`f4(b*oofVja2>4YK;lldeS@fpL+ut--*d`SXY(HZE#zB?yHDBN^<=9LNe`g(@ivCslBhm4~B%ju?O(2wWfr7V~^m z$Je9+k*o8diy*5riDP+ns}O7cGa76F>r5LpTv3c@Amt+*HgX^{P9M3j6{h)!rI*2) zy2vRJm`#ot%W^BT^?(iRjOsIGHt7bP9;UoVj8uuF6qX16S@~98HOMN+(pgxfYqi2~ zz13zbZ_{?~R1&N}ClDYQO0o#d1ZfrnV$rcxKv77N)F2=R_*O^NF<7sW_QG`Fb%bI} zU>V(rqn=Wo{%Cp~VbqDEO^^W5%6lol;q55O5Jy+RU(%Z{$oyTIkj7@TrYeh$iZT3v zL?!mYNCG325Fia7Q9FtiJj&-VBA~#vV5t(UuoiUy@MsAG#REYq8K_H;WsJ1a3IExo z7}hnNbK;2%TBLrY29L1)Cpt;;wJl7^n>1of``X}@!-fwkjaDWq5A+R1Q&bxM{TB3JuY# zHMZaaq;;XyR;Rmyq5=z(19SMSYC@2U%PIbNk4!K^p`7ZXM!+9|{xCU8iKuuJ3Z`{f zP$)=rg3@3R5h8Z33ggJkDh>zUXoap65=faxY>kxx=)jR2=8tERh@MX39G03Ih1p|c zBV``Ij%0uvND)Igq6UQn9z`mf2q{lZ=di7SCYnZ60g-VI99jVIaz-cYuIBJ3nn}wr zG^&RzRum+w4F<%{$ZZ8URwKx1LR#eyp#2uXU^Z z5mISj!VGXhIe$dy;cVs5@%+hX;Ye+S5hx~Uk@JVK91!>>NF{e@HCty&o69@`BE0xG zq;@iL7-$o?86oy}4V1Ra)%nN>z_bf7R)#a6p=z-4h? zAgEUUM5|>K!cCM|3`>9(ae-`uWD<*Uu^7T-;&?TCI0Pd}e~yO-tTfn(BQdd5&jEJN zAJv-u86@H?f2;u?xPoiYICs(-BSv6&wvFf!kPIsW*YpX+Vyt#dX#`Fq6Tt>Em}4^x zHz^q-KvuHVfJ@b_7PS%Bh*0e+8PWBj0b+kBpR|(cmMs@&KUwZaT7Y1XBRcRiDgh6+Gs5E^8K#;ol85mF^Lz;(0CA_Hv;U~KrI zzpV$DSTRJ_F)SlwOqA>jsP`*^)68|B#w>q!6)uo6IaGbDQRm@p7o3e^!|YGkIszuumdC(N1~Vp zmdTqCN(QWyu53|a855AoOhPC+3|O8&9AWU_cyMu291t{GM4_azl@JT8uJINFz%u}` z7Sx~SgXI_48f+No*cAfTNU2dZLPy?H-XEUO9IK)XO@Q{=9ZSIoD-FP&38JQ>Jq@NH zOl{C}Xb{en+8$t#gi_C?#2p}jm#_*8Ni0y2Ny*t&An+_Y3C^)KGQ~*~9L9tlMg|Cg z9jmy8VmeW)5E=OxmSKfBUW_edXNGb?nfC`2l~M>~LJa)^Qtk}Eh(#3YRx5QB@>Cwj zBCUYxn2>-RsTPchD1eey&VE@`rh&|3HVG}S?z+L#Strn9?2Wt3ZecCB@3iG zhSd*oV6L+g@~0yP{z$$6b>xp(IUdf#VkxX^EmBxL7_U7btPZBI4AO6u5@!(EDh#Gc z!Q#Q}LINVr!IXoMagNKv<4oxmEI;2ejMzz;5B{dC;B*&oVHpGvs594a<9BeSnEnGhjVn3>_U)jR!ChroR^o76UxH%IUZqSb~(Ul0O6vA<`rKN#U6@-tXH}#iBWY zcK~1~5k=%ki9yG((j0-^;v5>>dd`7c(_t{^c~)l&NM7Mk%P3hT=U_zu@ccc1iR-xw%S^) zfGjMv6gA~5vRH)jA$DqvR3Q}7su*o2$5mqf$Qc#7l?MIOi~%4HT4oBRa0K*bRDdlB z@FxyW>0JX_BT>1aaRNQ9u@rGwh9`VbsPIYiu#22wwv34kl$=Y}kd|?BEU(UaNZ5%q z>sex#=;5BN7j_K_r{s1Mx_YZUIZ~5hjf0zpjLU|Nk-gb{RrbRKlrCMDX$QhLOX zfV4l{_iK>Ws&$4gFG}7=kD<0AJ5g zl{iueTD$xqKz`Yn5_B{mwMhg47X~t}GqNpDaWMx)nTACO%wdm@YHK6m#>@s?FN??z zB0=Mhj-nk>M>~W?TF&ti!%VnSf%<|hkRe8Djiq1HWpL7}foUii1d+ub=73Iwm7Y-m z2sAKIO^HpYdp*#p4RDeQ?vr7PQ-Pk*Nm>!F0Q4}@Tm`ig0HLBsGzg?z)G6W-j_o*w zF!BiiRFs9(QN2=YQ5~S*q7n*Dtl%ts%ds zKX-^3Di(`VDIeKLttyK}rjj`Zh}JX$N+XV|+-yzo!D{6$Y(ggX=ar7ABv#Pm^Y>s< zsTSdxD%79QI8rj;3>{FFZ#6llg!O?w>|uY8IF2K5d9n{-EAaNns6cX91(HexUX4Gt_F_jC339CTm#RQz6*7hYVU>ZMb09srT$3#-!@r=&0+ zN5FsJph!C^&@hFSt`2qvraxeACWJ$pt}2-C2*X-D-sB<&QP)o(PzZuU;Q4UGxr1Sa zsa6&6d62*Ue2bc=kp+#?AS*-TyD=M*(jWj56e&s3?p?O7T8HhoMzx9)=+V zgh>W?mK&BKc+rrdsneGST@*cWTG5I#tagYNXpfpn7lad1sFO&8f<|jF60~pI6UHLr z)jU`hq&7ShuytiH#TJ-JRnoYc$z&rmVuu&db(KhxtJ#nE1OgS+s;?oA(9gWcQWuZm&N-nR`mR$%qraX;j$!S$O+0q=D z0arC34MeRy8AruJH6E116kdo1ZN?}E3T4y_tPKAqG$1sb5GYxJkbu*va>lo+Fk1)! zDoz(DGRrU}4QF=Pq`nrXtx+f}<_<3sh2+pzaVHZQ4pk_bv{0d@gNHlNNzgG9mZ*zC z6<}bB3*g5VFF}DVO%TD$C_NQ~Z&N!k9ZQwm%N}rRX%0<*OEf}cpGM58AOv`bEtH|K z$~cT+p+e2h$P=pfz8^r|HnLLf457EjnLX^1n38)R2&b!1uzG|k4 z6$o|%pj?7LKCUuXVauo5IUq8D1$}p!4<0a z5}?KsA~fG(=6;DXR_)FPIi#lfAXIA325uS59)^4%gc+o9kh%r45H4GTfLT&QkTkLH zxus)zgp{q6go4VFwzeuV1YvR@QrM%=2sDDuK!G@d|JoINTZSo171CC7B>YGvH#)Eh zLb-ADA@t965J&JLIiH-+IaW~of;G8S{(5^Q4T;Yc3Z>Khh;+UvaRmS$tys(>w&bHU z$I_@oa78IQ9~b7S9g6|5kOnPIAQij}1x^!US^E@3pzQ{3DK5l=@=dlp&~qk-K<V13bBztl;Q#r1R5K1gMlu!6Be6%kkSICKL=8%ywGrsKj@`1n@qyfc}ft* zh@!BtkPtjo17puH#j7w>s9_7LoCLT4kh+PlgcKPHu(%o@=Pc5!lrlvdxXMM_qW&q- zwFu-BP~i-|UBCoLPH=J7l){N`k6FkrFD|Kocqm6=>M|aQ9~|VIrR~jR5x% z334C;(VC1gV1DS4v!N+azpAy045Xx*91#eWfg+khxwcp!LI;Ww!qyh4Dl>^<{4^qGTtpKp?Y7`pjgqZi z9wbn+tDp=>s1X(-yh4(SL1qbYCQHc08Dqmz-klI5uMhagR>2d0@+gAcsLt#dp|3@ieeY?IX~rd3jnBk16Q% zovo(j_xVDzOadlN!r@z3NP^Nv41tM~n!#;NsG;-9lAcDs81xA!d5o~Y6*1KD zMEjIl&_RGz*9pZRU(X-Y7#(@s=|GoBFmFgYB?*oe@SSc-V~fjly`Dl}CBut@3%CvLIH zHeOh3>ZSSRo8rK{IXKV+q^eIK=%EXG4DV4}u6r%sS5cZvP&UBO1)wwI&$0ErC>~Q5 zBTx?1;jlc|VYCe*!i5UuLPF{)nuSzrWPmz4K^2e3Rsp;+U%^mRAW)pIajZdT-2FgE zHq%vnrA-t+1BaB%j=Av~mI%s`0-s8_?gK>%3bCT#L}z4?Vzl1COawJ8V#{k)my~D$ zr)de$Nic;gAhSxUl}ZX0sogJwT{(k?1AuN+&P=3O{DFDYScUdVT;%)nSFt5 z&=aRgASMXPr?qN$j}$6k1&Tr6g4u$121*cijITR4loHgnCckVzA7*f0Rab+4|r$?U^qo3 zmknx0qXdb?JDEVXl@R#05_GaMWLt0%x26QVZNnHnkXy5rewyZ_Uc)+if~8gDE0Yr?!LSM>T4urD7zTnu zfZkY&A4Vxfl0<3KMc^Q%MlyQYo28UY7=SjQ(;E-;E&$rfR%Rz-fH>$J5V$5ThoI0H z8&aB^45!5qEGMNLE?O~;$M74f?g%p^WaneOljk^)vMCBE5Def)g~`A$U|l^);96KF zP>0rAvA>IliOmV_U}>HKV|2H{V*Fq}98j6yD^eC5(FtP?8ahMFD6}p@oG>LE0yf+fbex*5{jdR0vHKTnDGbGLMxJwhTK>+FE$)x_l(gG z2VJ5mi+&h(U<#NBwWENj3P=zFXAWG!GqNinY4}{g4}!F7l7rcZc55`%OLK=%wpJmU zAx2A9Z73Wxi;>d&a9%QM;&K2{8Yk8DeVQ2z!O%!+Tb7J|C--_9t!)R4$GXQsupq2G zke&81oEDH4nxkj$wSu6n9EG0>f@b(hDc}NI#>xx}+V+A8KZF&Y1898R77JrbUL;eY zH1?@$?~W70!CmcXpnISSSCGZ{5kOQluui`NyN&|FX?8%;b|%;iN(HSUE6LPp;1Y!{ zrGk_Jgn3MvP!}>!4NNGDP_7a zMzFm^FpZ%=@F>@OEaX5j8$aF-tKcb_I5C2l304m}r;Ig2SCYu0 z1v(tC6u|UDJQc1GdDiU-1GU+L-N~R;P(D@$FqKT5%4yU0TcGhn8n=ZBi&4=scnTwj zy)2%J2HC**4X_C4f;)Kv;3A8&1sLE!>;QKx8~}$xY2N4SP2tCaTPo}jIFvH2Gm}(c zK-;$15gM^orn-pA%g}gwLZ%2!l;*|bjDxx>(y_K>;0#%Ew$Z%i0hkP$maSk1;ZPFp z`Po#8A5uvI3eCnbBoI*m8e){KRwiHpSi6E6tO4AeJd9y?FAgEFSB%He$Tk4F5fXIu zS`TKIa5(Y%3g4SvAFQsDeA)c1- z(!h^VS#u`|hobe-VZ<7274j1p!DJkOwqPmlDZ|?aP)vcn7@0bXL-89xR)Ko@2{2m3 z!qNNzz$jK=m4Fp(RghLL0Ih;)$hAfrarLJ$6Iqdx0**suW6Dq-?qmQ+pKz^5YpwB1 zLj!3L1%flY5!@}1DX;@0Nsy3C1QZ7k-N4eaJg8_23n=|Sjq)KIi-2Kag~VW2dsi3= z;9Ae9fRwCC9#5uaA?{dkA_>kkXj>}UDl7uSde*v#z-;go(RR^%TK^Ts4JukdqX{BL zG_(X0y|LgW3YWuc+^{8-mJre25hY7XAXLzTJk9A~>|(=lC=8mEA%dz%p^0j%GDrrD z0)k2l+wKLrc28*Th(%H|At{V}!XWHw1(b@S`9Q@eo`S}Lh6yszDwKGknu6X;2u=MU zQ*3ceR*II@Kk%6LZ2oN~V#tIBc!a=jM@ieAEOBcpd zxez!2$VGb|sp&2vom~_FxDt#RhCgtX>3!Q^v2u#Hg+kts)?pm}mioAhxE9 ztXPAgjTl{N5L87`#)$2%E`g|`wPM-&L>LWcXnzR8Lnfe*(KLo6%nyTI3c4}}lbn!1 zhCnn631Z1qhE|}CFgLm~nM_rXfkLT_K!pri$!?em!$ELpF_ajFj;3JR)6^~$awb@8 zURT_EMutjDW)j*Eu<_MtFws{RIj=J4l@`tNd#f*5cX%OjaM__!E2Bt z2pW{aA_8k8f>3;DH{%e$UD4z=nBQ7%8?u&^4wIpHnu92CcLa4E?rKE!JF=xMMOlh7 zp3xbjM3{7;5FSEl??!WS7}>1XZr1lN7kYO^$9-M^Z zN5IH<77??gNyxRjFo0;BEmmF(NJj>EQqi&nVk3=hx-h@02e59>%R&mk4{KmWnQ?1l6rU%r z;}y3BlBw=AcV(x`prJ5ES<)UYhX4PKv+asl|9pqmzD^>D&@g))iU$+DhUF(+Z4-#w ziX^~$Jf2Dc$04z+VsJmaLMsguL9_}FEyBMRE^PM_w`G^1x)qJWT@lpbvgtCk5kHa{ zu+C9L-bja|v7&7`G=5D>`GZx&R%Khora=iA6`pWEs(S{|SANoO_dwMhK{GCxPyrYe zqXKBCiWc$L!%yw51fC|au8A}0TGe|rE6sIGMrGpS?I;!(7fUeB|KZOIWiqWtNVCiEuZ2*4( z5Zfa+Y+7VYh8d63bXDTtbMKBi|4aOL{h#%J!!Kh3egypXUnl=ha~6Fa@IU*1iRVjO z=zj!uLWEH71Y)oMA(O9{J`z2DkyOb48;Vi+SB3Z;)&D1!s4^eBei=}u`LX;zlTq)Y zv=(PK&(62LLWT%hcE@-&zuguzwI_mzY`^phlq`|0}v%bH0@W|tkPfq@$G~m?&_%%V%AKLO%F!b3VUdl>lEjG6-ibEj9KG(f{u`k#;1UlCBFva1s|Gz6Y z+m%1M4*rR?ITMZ+4{J)y;2vR`af@{qpX(?!!YxKEN!8VJ3OIHPKh1`^Gu_>K$GxYn zVV%{4-8Vmo#cpoB(+sMpkygztdL1M?NBYM<u?+`a-zMd*Up2wM zSH1l!Va@4(st!#4NQz#*fms~g{zR6w9UEDRk_hnaUNuW-N#kzToAVMN7!}GhbKZ^n zGRDPbTkl|dr~H)P_E6gCy-Vq77lL#}uPNIiLq}w)>;j8a6ydV_tluqX>!u@JV`&{qK({xoQarCI5PL1>%=eT zSTwcPdET+*H(-rTz@#fp%!duy(RD~ZkMCueJ2i5pHTRzsE%7sYEL$9%zvD%nO~l{y zAJOm0-K4)SyCde)zuNt3Z6zGj&TWZ&d~(_+CX$!`Cuk%`gQ~Qd*XDX0c)~XA`oOhY z;}p8R+p8_ou>MEv$IX4WvjMlBTeXTKEPmb1K6Txj^RWBa`H_q1sK(x74P1uL;D<)5 zePr+5;?A|jV?qud79l?o?E)xPrZlZoX{`5owFaUeg)fln)B0zoN7|RXWajfJWVuE}<|wkW z=6jss;Xa*WsT^rH7S@}0U!5JrMnU*@?dujj<~CPi5Fgj?u(;Z_-~DN+@F?}3{SKku zO6GF9A*#kvnel9?Hl=E|ggDI_YVRN5WP9uww>1%lzt-~&4^_Rd241e5B*xYj8JsZ} zNfp$uPxxyu9Ta`Hupqmhm9bDoRWq zHjmw0cFU`L)?#Gn6XBy{6S3f_GFu35`QefDOyj=2jNV##lk(B-_}qFu$T-jC`~5iE zJtk(686Oph&6#FbUl7i!)3;smmVAJDkGoU(A|*aRDYjm4EOv?9Te#kGozzw9S9f%V_)$N9){J z*ZdSmm-)I9vY+Pg{r^}t`tv$~tr&Fsm~MMpDR^)5%ME9N-e{I|=YabTgiUTn_h ziM0CHp8kS$U#-|fmqCdqw)9ua7HZ0>Z_&*Bk$ryVX_Jk9%&tY(ruirD zcUEgXGX}a(Of*j>r{-(6Y6gQ2Z?@CG8Y<( zWFOCnz{x1P(G0J!BY+i|b5tjK?St#xB9wW#o5P-d;IeN-xy?SikImz@_MYozk_<(s zN5bsdU&LGcfP&bu&P(wV&VjmK(r0$8qP$w3Y_JYrOd18Z?k%XULyBf%ZAGeKQVLrcZDqu+$+@WTVB*fGJa(B zAI8>mf5i_F2mjYQWa?m$sZHkIxqVq_y^e`m!d@J~Aq{ z_cA&TwN?|B{k{u^rFY)(d#l#)Gev66%eN82UN?oWxa6zcNufCO6l{N8N|r+3m8EYR zEV5!US>aMkXo!&M1$#{Wh=7`;Xna3q2seQ=oW}Uy#V5>S1?HRx$&pi`% zd6XwvPiB%O*?jQ7{@EI9(mEW>B+G|B*#>VtY27+AU`Uv-Cb$}#|I@3jB0#HkKJhdltH}BT1?Xg| zoDI`t#Zw(;{NU#d77RY{IY6j9bS?%*|FryYhS3UWvO#RGu5B zo6Wwf{dINi^zX~sR%Shg;=>Z6drQNebrC7=n`NuWCA%TTOl=}c7|)v$Mb}>o9_02g z-n~C`^97^F0_#b1dl8Gc!tF=-h4u24edbQ?raR~_)^&Ye3Q|KWy%qLM*>>s6F3CNg zTgOU1M3wivOe;0=v!~alxI3X6Lto68=p}vqmX>QFyT`J*r{G5 zgvt%n*T(ttTXwsyDzr)EkGB}Jbx4-%s(Fee+b>ny z`EvEji33K^lUx>;eiw(*UL)nD+pluxeT=q+tZqwK`t%c?PQT5jI&_$xbwvau(|ar( zXk*)#r6w%=N$a`5k?K-XXBM9EC{O2O-NR8G=5y+nxdtF(S}wG17SSJ;BN5*MW~Fr} zjL%UB)^)gp38z}cB*nr_BVM<)n9fAHe*7M!4 zl@3z1Lt4-bVtS~sd33;LT0J-H#j^7UVtlktNwy<_b)<}P_YeB)@U6V>X@HmAe&qL* zTm9~y43ScghUD{4DnHsU=#Hxf!hMQLNA2>t?Bw+3Lzmvie>*_#?H~5`Ij?-!tQUxR zoMLPI)WmTSX?=$%U>kvQ zRIA9-SxQP)JxKnDEfroas+?z_2HDxDZy&` zmA9ou_Ny~Z@_gH2Rel@Q>(`Qkn(Fo~%bthHDsDh=5^bE5%*uTa`O1d@jc7h62}Abr z=U2t?p=@p3N1$N*%8tXog(cO|8(hTKkK??!6(J^JQcX*j6%Ae?#r8Pu75UFKv)X{E z$5vzE9~$x-CSJ8hI(^oQ2uPTXiu@DTFAhA&rL~`%0G6O{HFiWW{ZfBymg) zXRbAftSsh(!Hb-3#q3JexFMd18>!K3-sg1fWxc}@X|05qBb_4TEioU<23>o){!>Nu zbGJ1m=c}<16U;jfs)fT6gJV=eqS6p}T zv^;o>u6Au$Vw#0do3Hw=VfMn^YPw0ufr_%NvNk3aq=G%?#$_=iUmshnJDAJ0^ew12 zmYr^X^qJ4_gqmRAE7wgW*FC8Wu3KudR@dIO=rFJ#^@<-gKffWaKZhm1ekim z*y|)j>nokpA<{t${ zn|47iqC$OiDY_-xz=s??ypc6f(3ID|_a-~anmU#HB<_HK_q1!z_p13Jnp~+l?0`j_# zfR^&K&6K$ZI=yN&GrqwC-Ey_o?w@p`yy-VoZQH3sC591t28llFUV7%NZ5_&sA-+!O0d9&Qp=D_0}%y)66Z>*m##OJS+g zOaATZ_mxd(f8~fSQh04|)*ifCvlmB}(6;TgJ!-Y^nb;z0xtw@-E^rf}GqpLJF0wY} zfUr&}6}?c26aTh$Q+rd{4&KIGqSZZn^pa%pYg=SZgVjuWW2au#9?@>4RL^Q+rOImM zaJ}k8+g^w)MBZrEHf~=Uv+Y15OpDx1w4Yq9+TXJ+%-2TtOfLx${Tj(y3S=*P#j2qt zmJ65pdF5Ynn(Y7sD>-Rpbqsjlg_+RIXkMF)VS6%-2{ojqm|G3k+vV^Y9`d?h0 zDLNHBhJSv-HadEVxxi%bDE9nm6nx7^kOfo6FAI2>ybVqGt8Q|Cb-cpKd=^mqc2t9o zkPqj~H`#ts)gri-7*Iu-qu_7!r=VX{I!>fxZwOdAFj+KaDBYxu4fDS?s^s!SixK|%6I|GbJ#Q9T zmS#2Mls=opL3(*oCGV@1YniKRMOTL^W&VlIEs3emE_3XuHq8^MIleQ5MozbGbSd*S zY-LWL-+j%1wiJ!+@wY5(c2W!Xt%Pg6O*U`~e@2j&w1GYzQwkXNR*|k74E+&zzeQ_B zp~{-EWx;XKt*V{v)1Fk$X2Utd0t1hhO9XpUV(LL#hgG_MFJq9noF%Nr5q?ZC6V~vK z-ult^Ma4ZkSMXMfHZzHK-}^akISchzni*~e#QK}vHTg{R+xhbe0x`g!qE&+yYWKjG zKtb=)*A{xn?!wyC1(B*?&pE(I*@mTJqYFD8?`GtFC1wSQ#p-{{YL*9!bGtt!|Ab%9k%EEVhgW`zVVeY6!j8K#)!~jx!5wIuK6>G?T z^ zg!nS(SKF`qw|J{HiSrCQF(L55uH+v~+83tZb*;2?Nf&SLKI{q!pMB!|@v(c*@9cbT zQR~IWMq2TrRdbuci<~j2EuiXP#>VVep};dwfA-}q;-lJm5g@N=^=ttI&c%?PVPJtA zrM!Pw9F#p z|FCo7Kf!7nCqH(6k*Z(Z(buZ_XF$7DEBtKwo#~I=jzts7UnQ_*d(rRyqqWQM$lBw# zC5n=PxM`L9;>HTNpCcOH8AtM}`6Si!lR6x`U|41awLrw^YUa5YBx*UdOrq^fiv0@< z<2YNiS&F8G&V3H6;&&x+Y%P$`k>N8I1K-)(dNS=_{d`y!G#z?elzcz%>b39G4SX<$ zd$+yebqUX7os<_a3jJ!RqdK4c?rs7|3g?^LIRepBAuZb^*l!hSNfNB-cu}5;hNYhc zZYUA=_AY;C)Ooix+jJ_3rOO4)%yjN`R|@gyeujz7)F-zb$Lm}ufJ2)m>Sh)6asz<@ z6!Uc+pP8k{4dKuIot-mYMTA1c@qY^RiWt2Djg|)tDGRLX)@Q?#3ji+E?<3y17hGen z<#c~;1+L3_2z0W{zwniBDpH!?bj4HO4#tLfIY`!zq0jH;0eO7|2TWzwA!mhz`pv2z zjh*?m%)75|U%_EjUpY3-Wg5Diqwdw63R9klKQo@{Wn5tFW*!FwNHmyT%%~6xv+J5H zbq&IY?+1%;mA5qPdPt1#f5G4VRB3gUy;HsADsnzmrjE(!D1@un>{bhWh}yLf+UHUr zOPKV^=aLkT!1)NLUFx{y8Hq(!uc?+) zGN}-NiqJ~-%GI%&x9PQ-xT6ApYAo;7Y_xJy_yX3Wj&gQu=DMt}c+gEw`7nHOUj;jm z)EQ6{NXeP&Z2)MFPh=Gpg*L~wgH@s*t2)sawDOt`#3c`e^DxIZT?lDL_6STKq}#K< zo2nK=I z#LS=3YZASj#XwdWO#UTQK}$OfBe>?(RL_2YEm|=!W>^ryub8L2Wk^Ano2FAfdo|W_&d0lNHECk`!}HhoF06_?|UkJnm^3 zHvbjC_OYOiD$vuxqSi_Ey{4)Aux_0r$KOu}MiXppFZ^Hrl;FFQvQK~vy<;9r|NW1W zMK6y82blL!8RiG~5iPIgZi+1fQ)%?ey#}jpZVh=h++QZ%|)9N z`oKFyZ-8HRb7$H5O;=iiImk;qeTK=_EEC#l9wcv(CHXu*PKKWhxv?778Ta0(E&M~( zTJ0gKM%Bz)s;h2qxq{Oq?-j3w37lEY5`)|-$MYv8k`LJVwqIy#D->wZTZjGV*@LOg z!sAYEFfLF%5fw4|mA4%XZb|(vTCc6;tXbn3QDV}B@C)&BMh?32+E%)Y0&H|Vl7r|e zjgVKm$*DO6_R+c1Z{vEj$-uLod{LFL=Xu>q)MnY~S?D(IKY}siJz{4Hlp&J_+WPQQWRx`L)eP`Y7{C5(Af&~gFReRItOodW_3MkXKoXsnTiVmeEN6+MbONdT= z=7?yBdQ8r@xUSRgrUKng1q?XZ5+Ko!p635Ukdyq?-D7%Lnq*|=F|^0EQYhQ%I|_jI zKE`?re;eO!8x(Go;n-Du6y4z52#nj0UAq@It*wng1#KrN@NIir=t@VC4`ufRQF=^H z`}@Zn^+oL2V<_pn1A(NPd)=NpA`!9+4P&{5m@C}Anr2+LCh{h-{7H-FUn7aR`|47> z)Acgp%DKfBruruv4XOM-MSe7c#2E{UE*QL)YN-$=x_?jj%Jjz;U-fKRCipXWfQO?FmtL$v zw3RJ|@2Wgb@XTzAxM=G%x3>wlH<7V_3gjuNbGc5hm@|u`3H~s-kDgv!Hp6| zhpHjApP=so6K3w+W()K#G`h#8s3{r$lz&{;zOEt3U4o|&GvotN54*6^9$iTrRzHqV zbhz+mFt|V1HuyMs=SV6|WeoQ~i3M&HFk16BcjkCQ0wW8+=^5F6g;(2mF}iQ0;@9${ zx}VBq<)t#f#fGcU;A@be_YhJVur2ox_xY756OzUr@2a}r$&`aiA6+$=bxhXtBwT7| z2?%e0%w1|0;IG|wG5X$@JZJp%(D7iM5MoU%n?FD%rF~M-Q5-0>&R#ELVk*kk6{OZ?muAG)-COzFp!c{>s(FU%oCyk<>2| zhs#7aJGzVHdA+FXKU*^H#qW&Jp=|v>)|o#G`)3$t^lHMUJm4_wUHI8=l8N`@x@53v zt+64OYC+zZ*3p}M1N=ytuO;$}URnV2lhQx%?DdX?0 zENgqQJS|>JeDeq?zD<`?VJ0q_3$U`4p4DfqE#^LXAma2?zoM168ovtxA3Q&9Iqbd&h8u!T-NWWg+_WEJ84r{gLTf*-Y_;{=WBA&|QHW&ktwT zbpIQMgGOcxqkm}zj%sWBhp9(Jl^ct5h~{q&ex``BkGdv$unUxZO=0*6vB(d7=ZLE8 z`}Q|juezVm{>AW(+S{w$4)xq1dS%OWc+Kjs!OBq*{9V`t-kTNwz$a1r7@IA`SsCXab8!1~%vj|xN2y#vJK|>M<8P%d?8Dvzc2>_4 z9z+JXibbcaNXH#6>Gi*JdAq|bmYSnf5?^|^@{ONV#$>3d}QBV^LhhnBwvfJ8>TbU1Z1?oc3!vVvWSDfYY$^J zDc6?a^f@~Ax%|wZL~KfGN|ucu!+p_Q5#=o<^+x+>yOEYD=SmwF5gUuQORVi$x@Q9M&tNf7+LW=l;JUCw(TsAL(Ef8ug9H69pxx)@ z4cEQ#LjDh3N!~Ne{?@HSA---ex7zsqgq@EknMSr$6o}IXEI}5r<(|Fon?t-kgQw=D z-Cs@gfA|v>ApUB1k9h#L(BA=B_)I7a)IZQ&6}>qaYUbp;$Ct01LN*Ku5PAP={q3njbv?wBti;$b!+eO!mHtY)TcIJd8)bvMHieZ$xuDzR^fB!jl>CBULXel zN(QJIJ^158Zi1=dfP0Q%|DJ)-`5%_;6QwRvUzp8XXZd$UI>zwxs`I4zt)^c*i^O4? zmgy!92p#bhG?@Fe-9SIvU73|rfiSi=w?;clA8JcDF?k`4a5p^D; z{ij9-Vth<@jdz%*o;nA%KEYY;?0NQie@^PDsFedr4;vk|xsr-|L=S(njXCJ&g@7fg z7_Mryg#~Zp?oLt5=gJrMvOJw#h$fq$YAS)vOj85Mr_;#@OH2UvUv%gF4LbeO7x7Io zX2|u*t}J<8p3JuD@JFHOa3_W2wU+ekSaNM9&R!V2QD{WKLQk$pAH3G2a* zfD@!-(zxcMi$?chm0qb=Hb&Mmi*gE)CK zci=Voymj(VZZV_KKv~(%X+iewG~g4^A7LqpBr7H!+=GU)6iM%l+Qrf;Yy~)wM$-L6 zEU$*oA0%_qZbJPUa(bL*!)eawk!bor1e@vQ$;1>s8&T2pzDkCO^*qhkXLN|u!nZBv zYvveLd1}8hQe9`!YEt7;;TLdCR4!8>6D$Wc|1{0Bv)Fl}|1MR;AgHhltNQa$nQFlI z&7H59o5$PnLy{dx*IvfCVMmb;sfX0pYGcabQoEj3VIH(`y(GVQQS zL}r00lJur3`1Z!tluf5l#)MZU89W*~s9GILh^pWWOFaI$${E!Z7h7xkCGnlaw_0Tek&m+{UuRT$f5+-)$7%~D7asdkqDnVTH&p#<)Y4+!>Vx$}U?PkU%aDAS zT9<4?dID!IYunW*G72RSm3qu zMs@eJBq$!2lx@4Bh!U(8U`|{edJN@{K}&x*qVMI}ea}c&8!a}jX==ae=h`Fp zYFIwARmGPE&;_w*x}g)v^P`tbY>!Q?;!FiceZCW$CX0ux1FucPzChN$x@+r5dmeS1 zX#5o=f0XwKZ8EhOSGa1PjJ#>dIxt}BC=S=6x3%(x1unGToPm4~e3Y^KHcCGbsbbvx zKxv3~E34028?Rge=`XR%wi&4MIJ`$cPaa~EY3k1(_jEcx6bUn}PPaGJIM<_V@bA3E zI5;%Wqx`wg6`@hG)G&M;-@a$@$P%L)wOtqwQfvv(e_ds|QElmE^d7gc2R871<^&!% ztHnVX{LKYOK&NP9aMAZ&@7@`^AKmfRSvLt=TGlX5SkCCeGND0CcE8nesh9g|QD{fQ zuhr@ez-C=UN^|O@Z2UQ`c_gZ{s|(@d)DWG>6Og{Us~77CwH5HQ?c4vNSUX<}lak7e zvmbz63qn8hGaD)~y}VW|*1?)GXv#8O-OLrE4{AvjA^YVNv^2OQc|ufOts%k@=BTJ0 zwTx$)o9N{^cJWcXVF5hdUA`NkY^OY`Jt#}#R(NVI`C;HS` zGyfp__$>1Bq!i)_@7ulkzX7#$*L5c1K17ZiCP7_es3`W2O6CVi7{Jj1 zAA3^&)2=sVVqV@E-5bcTGS$F@fnq*^;>s-kH&0*JpHa4KJbK0uFK0NwgaWx^VZZ*L>*`>Y9(3WPTtUcs@D9g1?Q>$ymM}^ITZu??LIY+ojByyuv;F{N>Ig8zu znXeS2@Li5};k!={LHa4!a3WJqIP#75+VhPETD%0pb}R3%y8p>W^kt52rL{gE2fy*7 zs&Y&L))O3bCiDXD;4!vzKfi71R*Tc$9aI@i2OF$}dKG-1509K|Qt)_mA&dp=EVze;vr!8<(Am_HgUf)2Sq4lLAVlY-{=wBOP>wo>V9RcKep*U999}7% z+6?k8+$-Mr?Ott(7@a6T%x}|Vo8>GN#}Z;Chv7c_F~81m8SIx05;ek{Ld@y+&Hdje z*Ll*my5s~+e-o^r+4AycvJOVk?W6Chsmmz*q%VuQU_E1m)DTU7zGhib)P73aJp|*u@~A(aZ)`r*1Zjs2OLhH(zCegCouh+;vLQ|Oq!WU^l+%IV@@W2i`{jlL%~vh+N@eFWhn zo#=bg_MwtafhFb%63dussm|fZvvdL%Rv&D0yjr_<=VZT^E0c@;qxDKb6!e2B$BCu< zIq`hLx-*=U`{x(7k-gu}*!;Pf=l*7WtBP?b8mH?`iDO~?zU9zn%2rZdr!{x(PV)0O zKjh#05Nfd^fWO(qW$vXj^Q;;=IXrs6n%~>*$nZt(+h>jhv&EEZvePYjnF#exhxx&pQkY-RWcyi6G4MmvTD>20%zT#&=GD$v1yHO_%Jjl^FtmRTh=1Tt@o0LSC&d$9 zk(be`$QPtbYBB##m@Pi8w8-uFI-4Q4^7hU~PV&z(5ropEVBi?xR-CCc>|&aAYFcL- zEh$`JLwPs|LqQUd_DSn9-`b4n^nuAea{ImAoSD`6iD0=i%Wb;oe%mLffPc;%`5eSt z2cnseEvA$^BA+g;(QXM+jcHT8z>p=`&k$=LPK>yZUkf-)?L2(ftvD?Xd7jzbH2{@k z`_!YX&79JafiE4^ep>W6bKiOy$U7CdbCN&tw#=Zp#*;|V(K&=P9~J&WvyV+{@Dt`z z(XIPg_!v?&xUQYGMsm28Y4@p*W<#>U5B3|4%tj?HYu>${4bd75+7xMys2-Urz4Grb zZ2=d;;YJ;aKEblr%*`*;`MzW+**F{CbvLz$5rftwx+WRuOWv1FgM{t)x9;rejAj1P z3`g8N#ckpLq_HJcT;cbx4=EG%i`LrfO)sAFI*a7{bWOM2ThVuHE4Wu@n!|r7_xWxz zW@qpfUHne<5Ggz1wEPW3^;bvf^7PbXyTXocOJPv9(IY?#xRd=3H&3mt`*SRnHZJ@p zDfeDXi7>li5hf`Sc|YObV(|_O6M1A+s=c{rvt*=(xlvQ<%% zMeO?yvoj|3pK9{IjV+_nZlJj3G#~Hk(l(DwU=K?15Xl1ZwMN2!{`;YIeg5s z-X_z54Rjw$SCnKr|Hr)Znk})nxc7B#=toN&DW~&qPLzo1*XMV>;KJ^7IgviCmf3WL zrScWl*0$6Umj3zO_$g?k^9C{@5A9?30Brh{stOkdUOe`Q+&d3tl z0n;beP!qDY5hf78sc`Q)`JykMti>Q!gQ2so*?23$usE2Rnt~zuq)>f`kxM4E(8Ca}gTeD=rTX)OQe$od& zRL24*YqPAInQEuPMrAD4R#IJ-BF&~{R(TsdC0wT=954g%WY5?v>`y@+s&WzDCz?xG zY)y0`etr5JywHfrcI&zD<*%K}_3A;K+{Qn7b!~?1IN_Aq|Jx**{%%cl%ik_=h#7M( zi?gnyJJCK*E>M^0A{g1FI*YI<()i@#8Pxt*I6Nu*s@uyD7U5>BPn-UGu95!EQgq|h z3(HV_=W9J1qMO&`6DNif4dLet3RO06q|_SJAp;qVPyrj&m?wh9`;y#fcD5N zJ>xiTntMsiPBgAf&t=CoNGNZSf71*4ovL+@;n2)NL zOU0v>##)hj2;s!$_+h5%bg~Kk`tKUo`nhTUhAG9u>R#o2$}j2N%9IR7SEq;P3e}^) zZyF05RZ>DIR*=g#(>v>~WEbV4O4pqUSHo7#m~ol09;SyWEj+tF@CxoW<80r^srsKY zeI=~6I-~WKJ8D<=JG0aIj^Q8fXq-=50ZxscU$Xt#JtMOxc3!d-Y&`Xvc1m+*FOTDN z8Gg?hc^i_MDG?tbED@T!o3fGmhnI*MGc(p!M{pa6^Wv(Nd*o>3{4}x3bF}qGaMTCG63^ zs)@SeHKT_wnvs7aI*tl+M$*G&k}9L^r9LL59%0m!3x$1+y>OHMW0l^K!oxA37*8Jd z9gQ^=moI4&#D%tpGT+1sQ$HzIVYb~`^WZ8!f zTFHAV%M2ljBu~L84~Jel-jhb7!~V z(NX-wujDYYWZ=5zy3@QY+t7BZM3SvTOPgd-iZPB)FKF$FbZ;>hlp%Wa6~yBI0DM4$ zzw)15`xwGfGFz!r2i*lDM@+cL%gh$CppXZcx~U@>u(l@b%Ar*#YtVXOvo4FuhtXC^ zK}wdkN@D^k-YUSASVC5aF<3dZ&~H8ME#P>jg}K8q@I2*{C5fb0O_xpkaHH-VBUM!7 zi^BG;r3xjrQ`u97jRw0Rxl9>uHOcd&G9?t?k{uA-Bav{vwoE%+uW7Lpr_gQ?krbQj z6MJrftWpQxD$2Cty>MPw#k}4dvbe@Z9e{G&j#ddB5q+tN${VQTG^C{o*iP9N3#>9O zv#pl1Ghkt6urJ(SJC7Plg^Q@_MlK2koS{Ie(`~w=;x{(ice2lzreCT`&FU9oE7w6Q z&RaHY_R%6vAv4S|*${0hm2XAa$v1;+-5yuX~|5Yshz?>fGSBYP5^_ z*G-X?0AcpfyE3?BsEjevj$LzGf>?LUWk+~-hu94eIAs(e<%>ia%i5hm+}*?+6N#y? zgIt~DF9Gn6FWc*V0L1%~#I$W$;50*`i1;yyW6d-zuT2%^4m94=^FvvDo?NF&;vF+bIOy8xG>2-wK;ax2-L*h-qGrUiX z6*9a<)TaH3SaE?e5Q{L72`F$F_^61}(%RAT+)~hU!&|u7ar1Ezv?NZ7pg4`L^wegG z&tWYi4BC-9WS4ksiUmOG{#HJtnxN*ER~?wy%>!Re*tbd4Wc4hb>XMcBOv%xd{G4!PeNK)&M6;ZF8n>C+Q}J!9^#d*5KC^- z9C8naOjyk^6BWk>=8c+y5}BbMc^ZvnK`PcNF11cfp94ND@e*#OqR3j-1%-u@5bLT$ zQ%yA-OpUhFTGFM6F??J{i{;>D5e#9`@>FSG0vb~h^r_(T5xXG54SWdc^|YM>uSn7H z(Dhy2I4v!)xux`@uUn*pN-WUvWWbe^0D8q6g2Iaf$Bg*H$WxG5cySV96_W=rn?<3H zDG^N++lx1II5>U3s3MD25h5ZvS+)1AU31+G-s7IR6%UqUd^LI_!l2E?S%wB!nvg9A z5q4F~cW@kdf=tm&Lhxb7kx=Xd;N!8nnOi~DEwwF>j;TnD?9b0J1$;PxLll^OaRo*g zHLK!6$i`8PYo(zQT^fP{6xZpkH*Bi~78ltSV5Ds3D#EsC^%{LT*$?5KgjPcr*p+F3 z@|n}kL@5}khj%j;d5@z>v5X%x(=x`*Aug|twGpPDI;l-EqYEFt6~W^-=4NRki{kIi zRY>G6D$6~z;ep^&*UoulP+cD!mXl&lHZK#Zm**y7F>i-j(#Myi%9}7-K9tR)JA9yRH1WC7&moZf;A{PXt+{niK?oz!(wXB9vN~YftV1X%LMB#}x2Hd}6A8Cg5Y3QMx-vyg zx-@xPBGu_S@6HDKbzUJSTJ_cq=M`)eF5SL33R571qo!qLoZ#xk)DhrFVl%LEkW{wh zd~kL91*|lDZRE3euWVZ+R^aASjRos-xJ8+-6*|q*Bq`QiMhP{URT5MLgf$EyE zXu%-b#-m|wX}5Ds4y+yL!Mb$js<=Yfz*;CU6ZI)d?skQ)^{#HNlcB|nJCe}nFEiF% zC5rZw2-e z$bjT|R?|Ol2w)-Pl@S|B*q5^JmWJ@n-AV__a?}%|R*ve|nsve@$|of^w*qxen&O{! z)$Vhkd}OnjB7{YQUbLWL^KT_I-7hM=1Wg|M$nv(In|#_h`I~K8IP-flBG&tJ1w=_PDVR|ahgJ&0!z55i z$fyHs_}zrIEnx;?_a);-6JAf#MiYM+QAKC0_$L&#K`~@7b8J#9GaJ?mCYWh)PtdQI|Wd2HkFh|+I{8nRNRSK7xjda)8Fw?t{eyRw(Q{SN^&)W#Nm-1L$&*lp5X`NMZg;Td-kYj3 z%+Uh~RZceebfqDr!ZPN3S`9g*&l9$Yupgb>EqLlNmV&?7d zEN$ZThi|gW3YACAfU#v{#~uy!0lg!@bqPQfg5f(x+1wYXDP6g>yL%dJXpZbyu$f_Q zD2^p}Z?%?bOTJY{w>(m*Pbz6ahi^7qsZO0mIJ49{XcyWqt-FLVm?-Nz^XV{eRh(G( zTtz&m*e62hkPs+X>7x2j)@*Z~m@%%6r27%=&h@ZOTRUB&F^vjkCD0>kBE2nJtIC~b zmY6Q3cAeJun(R)HJ<~TM%q9A{2-?^)NxRUt$_?ss99;L)Mn z<-NNp`3J~Was)`UA29PSJWwpc!zfdAm)x)=+XTVRt1jXZxm>nxUM!Icp+q3nHbLg? zrCoc?_hmL+?)5=gtmu7q>&kGo=f2)Dq!DF7$|+xRnWdRXjrf^ zj*%oI(FK%vJW&xr>NkaA=}E~I^v_F0G1)F6JGCM4BY4$mSdOJ01s|(!to`)heRJ=a zBEqYZE@>L~P`K`Jc8@20ir%^FG^{}l2m%8>00b7XPzwhTctsT$$0Z1fjWnaG!aPxC zk@b+x!9B*`xRIzxK@e={K3$7E@4~j^geQw8CjchHrY8l3P%%- zPaY{0gX6pakG*M88hrWMeN(o_8OfYvMK<)NN?4fURvJ_X9~s>od}w@eS94y)1~bMnEzV5$cwo$tE;V9whL^r@k@<7aNcsP1yv=^6ctV{AFh$g6@zJ#y!T-FjqJk{>|G}7UT!Nh3rxBa3MBAF9fq{VP+?_4nB~Mu&$yg6 zlsc{_g|QUsMnr-XL|zNQ_k~5o5`2YPyvda=yy8-!N4^*H%95ad@+A3u?LkGw<>U~R z@mVOtA12)yRZ&l8pwe>MhKf8xK2jq_`flcL5Yx+PgKq7{Jnv?7`R36sO!lTM+vag7 z>U4u1Y28fe9y`fIOb57(^|e}jg-gObRT^WtiRSK>4>|dsIDEV(O5!@3ZI2kyD;tBWp~ku8rK?}d{gFwAK21sq8vLG4P(A~gFUDF}7W zHCkP?8gaFw&o;Cz#&%~AMA}mk^`8tmBjl_PIK#<&iBkHjXvNP7_1X+>iGo{=`uq_!0PmKYu;<_M-o<_1C$3{kuQ6 zW~ZHkx=8q0+su3=Rt(l*OFT~O3!u&?w2mViN>ejFh|(;nl*$zftYd8E^L`zH-fX?N zuWUZs#b#J{8%#dwTki6Emln31700tn+ku)D(2Nt?m} z2*-?Pb@E7FVAV@j+w;@~H-_sA8EofHs3~$>NWs#&OQ7N4&c9W_hBr{|W1F*36dP52 zuM6aL-8ojRxHg>#BUz1IvNmsKgzgVex;&4Ubyc}8S>joz$4S8@@OwBXe^_L0Sd?kc zm7%rPbv0r^5I=Wr9zzO2>#;a4O1SC{8ZdgE`M0}w+pc*~x0(gk5n{BLeAlk~O{otT zni&S2IEKtCH&`7hn##Ae{QjG#Hr74V#PUG|-qNRKQSGysuS=^_M#0yH6{MSq5OogF zOTjxHg);luXHOU<5hDgwn=m2qx+-tg7E}30kt@iU;+57fjdp`4305hf=;xNy+Zb~6 zF)(!|D`IN&Qk>{FFLtjiBJ9?>rw3nGL0UF*CW{0rHEio`_1#UVyN3p*oUw|y_{z1T zVd*h~FvlfT?Y=u@jGB|4UF%1)+%nIdOGu5jZ-&0Cvc_(9)7U9eQtQs|G)AmV3I_}B zD%h*_W@B%rP1NOM-$9&+&gQPhBDmO2v4g_8_!Nb_v%yM}O|B}`OUmAnrhqvM8MOi7 z1s&UaD(|mzNcy=4CpInZcdBP{c6fiQMhc zJ116xR$Kben9bTP%N6zt-OJb!>98x!qD0LFwR+z3z-xG>o%TDtsKy-Hs3@mYH4TjF zkAzI^Em>kbW#1$8x(t{Beasgdkukcc7B?c@`6cUj#Xi$#nzhpj}m z_Mlwma_I(WvO^;A3CZ>lFM~Rz8)^oP)u*boNNQJl(bPswv3QnW5I-)>$Kl& zgcaF5(2j;Fy4>nw@F_jeYQwWTvQf_q5juxT);iZaO_|_Coa0tW@-yiC~C@HTFEr$~ljPbVBED-S%Pet7vvN)g;>C*R-mWdvCO1f$cOQzjNH0 zCs%XYqMj4LY{Jzx63dw?@7tXTHEKTLwCV2-g_g27ZD7A`wAxAXqSdUX_rfiT9;cUm z#`hdz@N>si+4R)jRZ5!UP@F?A=B?_h^R1#LL3J)1!=M$q$I>ISHPf?CbFrR-bluoG z9q#v7vvn^dRl%a7i#RRiNTGD`V}UZ^dW@~^4som6zJ|{Z$4ccVaZ)a};$q)e;QMH< zxrY#}$(8C3B+ebHq?ziv8=*b!hP0uxrNyTdsTrl(>rv>^=}hCSi0?`qQ&InWhTyqx2E>hU38<|n9r4-HH!8y8p zQ+Bz`_GR?VO8i)lU^1p_YEa9nwvFyoOgmLwE!)%`)^Lh_t0KVAiFBFSy;&b6HN&h4x^RlYHl9MQE~jv=!3r;wC$p!qW^YxF|{>P_*SXZf@OXJl3`ylZ&-$ttGhK zOzW}2Qx^|zdg!oouo;Q&WtnSPZf8;y;*8qlE&_yxgQiu`-fK$<9N+880^NNwbp_w%Vkjok}o7(C{`MR}1XuHJMv=a!-1%HQc`0kk0A4 z@}>3RN2e|5ZOeg-=i_6YZqwP&bCENG3=gxeu~JnL-evGb9l_V|PAb+um7MSQ@-tb=+d1)rXMG zYa$aFv%>xz3ldxd1KYAX#ix7QcqQF~p~8nDs3v4~M`NhBd$!Kb56@_7j>_6$vLM6A zW5sX8%Qh@Yt!i(WskmL+$)3W&x+SHEQMvS^GI7xM}44JkmoWHhUU`_9;(yp~l%<{>ucN z+V_X7A8T1}Ts1pib$5ljp3$s@f$Y~&{X{_?WELM@Qd`y>;PPvs+@QMX^R{D86nfFS zRDjVo?K!HtLzfMa0oQQ5ZXJx{nU`8N%UJ9S&V!m+hRw!0@3wb##`r;5!RhfnQaZ7q z^+@=4U7wBM@_W*@ok6rL`T0J}SkCb@9|H#tx5Q&YqzrE?yf><5i;s@Ql4@m+PKDjH z)=_UO7PpS`SgNqy<_I{kZDiFL+^61=w0cepsr2G;bmh0NqhV)f4%ksq8Dkjal6z%V zzRm+ms&@Ep5Vr{xn*wZI%8f0JFtALyk_m)pr^j0eZBR91xlvCLxvnnqJjkvjnN=FB zGkGQzFu7G5$Gnv(D`C8v-So+Q*t%Y;qNCS(_oCZP;Ub2K!8w{UK%rx%lD)?_XQB1h zQ=Oqj9dhgBgSYVQl^Sgb8*79{ear_+!O1`W^ zZ`Qf;)hs50S{0nMvIo^#w#FLS>vtr>Z#y={Ig@u5gCJJk;9c9J0g)SNr&-V4JvUk^ z=pir}J99}fN*t7W-vwQMmQfmH^6;6Y454+om!&2$x6jtS*XTvQP}d)5>#c}Zmrhk% z%K|R(rIOw}BNjYbkwbE?jyfTA$R&0=WP+&WDAeaiM(-hM%V6d+-G%$3=B6p8mOkte zvJX7@-E0qB7}(+F5%spIUHA)q&VfkV-#DP z291n#cH9X~mNin$p^)u!Tgxo~^6wUxTHVKK^f9e8rP_YZx9jcn-I;s5@1)Fu?@pE3 zgt0Yd$~Dhz;&7MUWqU2ZbFipKBITVXdb5cJ`PK_vxy->N$+qsOS6s03Qs8hqw& zcE#aR_=}h9SdUgim7QDJ{ZRJ9qAdQPY&qj3U*S_jkywzakqXDv> zLD;KbYN*@>g=u2vkld_btn5!!vYuPSs~m#%e1`pQQ_(J@=UL1|>JHk+(_rP{d{f_a zR_g|)&q^yA#}KF65>{m6+sBwxVhUzmXv;4tRd!zLTSRo`s%sS}CtSKIRiI4SGuzgr zSG%{IB||04n>A{!iyfMvu;ntkQR{Qv(Y%ID3F^gJLnZRuL0jq%F$I^HsP5Me3{~vc z)ueKh5Oa6P7 z(j+eY)bUlLMkvL>b0*AIID~YC z$2T8jx2G1QEaDXFb*3I>=4GQD%%R)1zIPL zH+H=s!mprmuHf8pD#^@6Al7;39olCitVPPT)}zb0Locdq6dP17qjEOlwOe+q);i6w zb;D_MVDe864C6X=DWio9ontws#nVG$`&+{Bjs$Y2u3fWs^-Myj-r$>}kEXouS05zo zzSRCURm;5TE1cJ<>Q@Ak_$w9JmR&KcHCzZt5jwB6FwKLxT{l>}-HH)(I~{3{EEi9) z=i2l)7MEFeIC0HM%=<`mQsJ9cB{TrrEaDnAuxk zHh;a3@tbD!HWh|v%VuJ>Hdbsp2F{E#t+BWG&6pi*G3XVB%44S6t%}Wz^uVm&R@gMQ z&yXpzZSr6`+haaiwmof%45rziX@+lmjlNm7D;c*P3rZMJo{)Mh%yG1F{TX6R>3Wj5Vo zH`TVr^w`I&XRVtV)-yWWD+Ob1va@ZztUg%VJuuDI25y0!3T(|;wr%KT9UE56+pK14 z+hb*IwiUKE`7>?S4_FFgG3yQMY;Efew@hH`VU*ZWn5~;gX`yP*!r73(A(8<+j@T=EgeNx1(pRv7VW*=*_Ea$E-FK&5K5? zZK;M<+0cBm(XzI~<(a+i*|j!jS+_%HTXf39H8X9iF}iFz+XLjotPY09O}6^BZPwdk z(`>~yH`Lg>w%OBTUE3a*q3M~QQ!`PUD>3$&^2}CjdThs8kExqwV;+sx#%7U2J{)VGd@kTt($5aI@=lO!C2cpV078H z$+q;{bUMR2!))tj%G+&@ux-|33fl!{Wj1VYO|a`@99!wHwtTh}F!^I2P<>gAy3Mki8+2^nAo&@are~nX$+pjvW_oQ~ zV`|%Cn^SGp*d1-13@FW%*|w}3t(z&0x65N^%WO3_%MDD;>o-GFH^^r7w#?|yTWZ>{ zQ*8VG|9@lqpXPtz{vPp`5yTtH!s?O?`LNo+u&?nYWFsXE2t=w(X6^;Xr!QZIs+6wYcuH?fuQ%fd>H!__Sk2$PZ>wUFTHmMD{&h-%Jnyq_b zl$#CnVYs*p+cz!{IP74mq8VccX>C?BLT*u=d)P@sSSt`M(v)kYN+Vp%LEzLe zQO2IZ12`VuT?$9H7^EI|MES^Bz|4hy>THeheKwe#^f2`4mV%Q_X6A|vi% z_koV=y{&W7QljQ@Q(u3|AUt+?Hsoz_h5_#d2iBG#nHZaot}DdsSo6og5Im|0{&rs-vt27T+i2hO3c7S&+FUv7n9pRC=* zI0yt%7!hKMk+@uGjf&f>z}LA%d{D7N-v9yPab&w|6y&B$Sq^%6lRq?rN1QbCM$YXr zv_{)e9}kqoa?PQGJ^cjoGtu~#XMmvLrZz8x4yp%*bL1o3JfYsAyMND zaax(DI*HOB97}C6&CJCGj2IojtUQH8mx*A!k%>kSBMQ!R<@{j*eh~^Mj+C+MedW}r z(%g?+%D$ypELd~T8wU)B7^-hkD83Lw&e63$4LGu8u?kvi!RD9I@=-(-T%{xxBE%@- zfcPs^krYR%E!3_I4=D9F9^!U}y!v{Z`leZ-x0_lTeI8h1;XHg>7oemzGsPRkF}W)d z$SCs-{DRZJzKaWqTQ9KZFXJ?`z|7R7f=X*sI7Ya~o@R)~{`zXLe8nNta-uQBsHWIl zBB3aK?J)bDxohR#rh=eYcu2_dEO@R=WYtB1WAMO_iid6SO}#YO$hsv<~{Vb=5e?!)=``Uhz=tUk5Q*hIlED-dopN2io1;0YzjSoQC_um zT}E5JipBFQogpUVR9ir%mqC?_dPw;<&a~;Vmpk2kmzTOK5nb293#Al+T^}`Q9BHxJ zYl3m>y5fnEON7dzR{ZEcvUE}HU0;`Wn9**7(Al#nmC{2F1%7k01iI}wDPZmA3%-=*>B$-_XsM2>l9bKarE4@?+;?tR zbd2MY^KIHSLR8V5Gc6N<1(%@rO6LfD0J4~gpN9(`=x?B3qOl{r9$7ij2h>TugR zWJchbD~CRsT*H%v$5GE5CTS#L@#ZrW zCG6VU2__(pjv3xJ^bjcaoWtp^vOotce9b>@#H z#wDaF-;){VwRKy8x^>qXqZp_>X^yf3134)QfQRqAvOZAgsw?bM738O8Ri2#b$%n=a zF*jxl&_b_+M+F2~@WX35rIv0~f=pCK5<^DX>Szc>6iEk18cYKA>-WAHp2f99rR1`b zp58QTmk>M3C8lF~)huag;MC=>n5KUCzDj%tgH0re__9fYCcUMTDALRaYR808CYskZ zWS0FKrB;CyBolh-CCCR=e`ec<5YDaju-QBp^X@Ji}4DmcO?wUNMqPGl56n zHWz2hz}u=;Mbi|jGfF$CNY^i2;AldtcXn{ALfnlfX{nfP@z-4PaUOd~)6vuAaSZJjcz%KJ3on;}0U;C1^DB zO9^X9`H_vWGJLiLe^D?x;G6GOP}<8cy@VQHaD!GB8br|C9Sd5+I>|Hx)KNU?s=}z^ z6X1Frwc-sl;$Vp+_`{Boc=5p;X=ISwMtW^*4XAH(Pc(;}eJQjr>7mS7rD82DCkXCK z<03QUyiq2QYZZeY6_3V-3tx0=5+x=<_?}tS;hsl4hEjN$@)kdm-=fqgj3dDv@Tw*v z%NN9iXUi;IOH3ojg{eUxNY5K$;~bH zhW>FJYUX@x5_Q#?Z%oBiqCB^~w6vUv_o|n**bd(}&CX^ygs!N#+kq=GtHUgils^;Z zz6a5+E_LUxZo(l_k`r!K3WD0s5pFgZr8Nh)wr$kdB(+!_)P%uMYgcuCXcV#ftTD#I zk=X&?40}qvT|N~SOk(ZK)3aW4!_ibPb{iVetI*rJdD~B|y(=8S*WD{z%n*jT7kgpv zVR~I@RhwFCQc{`ha8*d1jFvJ{+m1PHD|Dj0gH_erGBu=1MQ5FJ>pi21eSBb$?xU>= zqf1zRi#ADafwcPOGVm%GaOApx-c!))w0af_jbcPpk)NW=Ctb7KkG0P22)xGSy?OE* zmK4mfu!gQ<9X$};$1`_3T(^c-c}C@D)UwL188PMFExki(W@=f~=5d!XS))y!t({DD zDQV zZoM?1dM!m_xi_m29rO&YE`q3Uwq6%oT^b52BA-oJOJ(DmGPb#-GX+*OFlM?c-olW) zdJfT~eZz0WD|_o4Ml51Jq%gXjcU%dE+^u_lrDnl-kjqbnra}dJXQ=q`wk{DVh>CR* z($N?3wOSeDgmFX^cfL*0M4t>K3L4%V5_gh$0L&(01*MsQuqWe^O^+=n61_c>cS`u) zbi2dcDm5Wy4xNQD!Ow4y_#)StRZAxjlrwHT&{TYyh+AJuX2%{!%S2O6Et}e7jv4f) z8xr9fp+gu*X>n<93dko>>taQxwp>i5NpS?Ju&OXh11hmgikamr;KC($N_^DK%b7kB z9ZOYXIKnlLU zvB%F|J%|f}Pl8A!@ub9VB*HiNi0g%|d&2zB9;*GPOQe3id4?xfymJGZL)H@~z=Lf9 zI5)4Pj%PsW;W@(TV43274}3mg=&dsSO2k!8fGHCY%84NE6NsS)1k@ibGm|wI^WK@X zbs??kSuQJ_xs$b62+xVD2k543l9>}xhw2JaJ}luhZ(LVk63TbMd72iX9rUkLbZl z8cn0p-h-tHR>D-~2HbI2wBzWMqriL?OoVvh2e4R+IO5_Xd{NdVDiYhh^v>M0@(}lv z99hS`399u@A7)iz!gt|0Ti`l__+XvM8@5iO;5jh3KkS>(MwYVrcgu_8jk#sB*`Tz=o>k3WClOwr1}adpnaPK|n)M69oha@c1wgz}KgFH(NvHIF}ea+D;r| zA*6Y^2>Kt%zXb&S3diDsl?4&vq9mx(3Lv8g08MAz^?H4~_o^czCo@sa(MU;WPaaF& zN}^gt5`26pzTUzpSTnsxtOpAshP|PLEseT48=%;fcOK9=REGM*U7c|{*IG2?p%p>4 zS)*vdF831013-w`4M+<%70bjgiQRYEI(64>0lYC*>?W@no`wc8^6x}B*XD?iX!3GW zpfR*8ihIoE_B43dm4f2Nv>t47I?XGI&sh$Uq0!|^b`VD z7q~gj+QBBieU?xW3~fQ%x$a506(PAQ<%ZZ->(G$B0 z_ZzHJx}iOw(Q)b=&Sn+vwAN1K%hQQzva2hNilikNb2&N8*%uZc82cTo=H1}vg4b;K zEfLmdUPz-GI-_O^jA^x8BuWhmtY-@Z$**zrEHqD8vW4UpJjN(rbrhDY>RfQf85<@;T_tQE-Ons@CmJX8b3>J@)k0?AE z6i`UuiHM#}_>x+Man;{ysk`^sgf6Lb=4{0Ff`SUlu@=hTSgN3@600pH?h`1aSo{O` z3rNl_;6nhZN~$JdC}b`;B#6;Kao8y!zY2sC1sHLrjHD>I1n0}_ZJR5sicpXy67O|o z6@Z^UT&^=w=3Q8ZV1sUBt~_c687sic&~g$oK6>$>v6fK5p$~*bc8ZE17}3#66x1E2 z4f0zWm&KYhY2?CnQ-e!)b2vo2R6(qj?r^s zaz`|g_rBsnKXj1=^}DNR%r+$mgANQ{pn)7ZK6uZjaRj!ce3Vm)h>CM*;gGd?ESaW3 ztwi& z!+@el8~F3#SBFCKr4Q*7)#ruYLakXdU4p^66DAp~+Pu@pZC4#PJ&^3x;4exL{wN87 z5gC|5c2NY9IDpBqjWXe?4;o0&q=L#QB!QGk=%|e(`qHR?%dc7Y9a23c5c-as($l=D2@<(7G?^djyUH{ zY_&~XL~-1d!50!Ri3}*1Azt`4C}xqoASnGzd@4C%gWya>dxcToQi4al&GV#FdvB_K zcq`M;5?l@-l7tM7Fydl7NyUtMml9zJ;TA|m9xRw5twd*{XKZN=j=1YnGYt=(WNKz+ zUYYI_0P~N~SJ`Xi7ni(#4}bFXrC;bO{D zZ{{}X8rGP4IPoNrH-fOJBC#h1=(sRt1o&Pgg1FBqhd^$NauT2hSIU~8DC~+p;b9Ti zZD(}sNJcmV5f#HpliwC6i_i>ErRT->Eg=JDvuX7i*ds!~$wAI(oW#qep~n%r#_LT_ zS3>%3-BZTr4$F-6VRiLkeMdGrq>yB1N_SCJrlHr|J1}51Na=;meVR{d&5yZgqxG)M zdo^1?#ZAR%4mTnuViNlHw-!#}9W>?m;@5+*13-?+W00NDVbTT$7bGQA+%E$)23$TH zQMS8wTN{QsY(z*pRN1HzhifI@A06l&!H_U;byoV7PM*#UYVf9VJK?It$1znU>)}1q zo4{DeF;W?~!u_;UAq;&*s_27{)=-+g)r+%n4XUfW3xXZ&Hr;0!EhVrt=L8Am+}P{@yXw zC@YHAC8q+(yzDY6!8$}s*}dxy{Y~=X9OgKcVf%0wf}P97ZD%FqNfj%@xp|QHrb^lt z>&!$7_O&@HUSy%C*nzM|9mEF{wsMRjOY}jd2ty%z1z^N=c(TPw#}mX`81t)nxQbJ# z?WYLRpB41NaS@Jb*0!FwM~yyxgj0>1ViM@khXgzpHi@7<`|kS{W-bY1HPE`TYX~BTCN5S%2u^H$=@+(b+qO0?#6+%6T|(EC z@{G5OEcisovqj+chL{e*b4zg_E)nM1$=ao%zdq#7B0fDYRNN0Sjx_o5ILDf_IBmpr z-%pjtpTHgvSPURN*OgfZ-JG5%ZPXA|m^;GQTSz=$NkmvkU)utCo%6EvX=ct0?G=2Z zsM?*RT6>OqWYefo!6&2O!wCS>jfS*;7Z72`(W@Vt_|v1%XOe|pLvJ>v!{@M_u^U9A zOLtQ}wCEO_XUEah(+?)-^M~v&n)ypP$4pGou~D9oI)uSyyGb03FIi`axM;wI2ch&I zB@vC$9^;O&cRjDFavwCH)2T#lXUkMaT5e`}sq#|U9%HK`9U5Sf>*%EChgV@sN*OgBtE4Yua;{-$6EMr_OIdo9cre1zMMQR)f}e|s!w)35dA7<_ zTk4r&7?NIZvA*_GQ(3~#1Bk=cmXuLug+)OaRyLe@HHOO2>4XvQlE9>kZ2Y-ef~3?B zrCYR?A#H1Vf!caAaa?-RsEZe~n+D@A)T@+67r0i(vOxM| z#cw*2(P_7m?aSFOeMCIo$;ekqm0KupU^Xu*Hs!-oWVsFnm07~sHkX2C&C2Ts&dem8 zPI8nkf;On`DNdQyZ)W4Z+BP^U?<%_9m`iA%Lx3ogVPvTGc<6-2yOKi?`(Fun`Or}H>EBVl~_#n;2FlNYQyXontmeb)aLLzb;qQoPF+zbz?IKvKB~v(IXT^91 zQR?|Ch{{uO;v0(dt{dFVL=UQGNyN(@ZEl@vB0fSx;)IVpC=Dbehr+`H3aIx^jm}=9 ze;Q3iUaEzKEOIkJNgHy?qgi`Sf!QTf$y1qf%!YWnV^*SV%9k2%3lBsz;}$N{4^&FX zV-brO>QsH%_sm3TibLm~sl{XtJBizMIu4GHEFa$`joII<$j7)KaQVonPPXTahQd}i+0`Q98`9nY%4WHv%!0w~Ns67@?|u-VCN zyRB1ql4*t^cp^mx2n;wlrWBR5sD;{)`{|!4XTF}QEQxtT)-YHYD&NGjB21sG$<072GbCflx$12AUY1z$SDR*`ibJD4j3zQaBLo9&0hIPx&!juB zOQKfG!mAtb9y&wjs6s2@T#%^vY&O%VJ4|O4S<6S&HI5;~k99Q>XO2Zphg!79y)ibA zHxTZ8%9-~jXOB$JhN*X8ufcl>uO8}BwL9lR`&y9`8qeT0Xg9HdCpfXG`F39*^yMZLc zv*O#F<>6I1(aN(AM&aL; zUSuKjxYDpBx73?NX{94=99azat*?tCFicT#OK#pl7L>Wp6FXeWM}T#1s|kiJ zLx&HA3=r5^DlQ5m<4P(b%PcUWB5Re(x`lC3Lb$ZFv1y|wBk3vkwKo|NXTlUnNPJo+ zMhejYpI^Nzg<{SQ(0KSqze*_S5&fs&9oN8APR;G>4Gaq(rn}iYDyxjs2N>QiG zW$KqNnX1a6K{n3#qnocWW!dB1M@hKcJ!=+wcPp9~1T4;yO(HxvM1r$0RV8UrN46zZ zGh@?o=)RF~VMn}k5jC$yl)CS1)&{o4+91+r%3_E9&kGY-50xfVgS`)?srmd%c8G%sddSR^Dulsdi<|l*~};(sORIl#d>r zwV9n|VjRW$MvJ_lh_!T~hMwT%GNDhQPPwoig}gJi#E&SO53ziU)h#Q>xo^7KP9cLJ zEx$XODO<8Gb!s(;rf5*# zm?Y3A)Q45rH#t+mY%EF;IHVntaINlfmhQwewWjZ77Ak_&d>x^tnms(#nV}M4#z?HV zhq{;2v&mpb#UB<&&vg?XWE@I9aZwIBluUG+4;^PvYwrt`GHFZmp?J@&VCORan~NeD zlx$`st!!39@*_;wRc$$X>es_=c%holxY5zagV0W^9Q;va9-|IBCL1S{KP=YZ|C zavt-@r)Lpj2;;{Y6#^o2?qmA3_|wcxk*_LJ|2gbWkZR7DT4PNK`;!#tE28>kXYgndGSNYm6zWP9SKh@49a zB&`J@;!L)LK=G|OB@NtIFhPpOpAm#@CEg(il{?1GWd&HU8baf53<2YHry(~_ zE*($M<+ox~-_n`FF~h9;;pxHNS5+kh27lqDB!t$jUsynHXsm!?3%bC}mW&GnwEpRx~vC>$Hc2niH z+SZOZ<2IcUwQ1*FOK}P)=1Cqrae9@&ftg1`maZ-${v9j=YON1q9;tNc*TSSC7G4A?ftG|)fC8pX-NRN3qxJB&TtLxKI33c8k zjkGrH%-Gp}s`lCRT%*R2No54YX=e07_;wU%$nBM+j#@^GZ|G$0HN~NTn-}#pnv}Ch zD;E)RRjya1cT3 z2g3MXvPk9PM|@}58eN*m5zuGYF0$l`0;JJfgi^M0)>6Ty3B|2bE!CG(vYJ|F99W3) z;xN=`{xCj$7c*or(-#qKK6i21osOMS-b#?KCd-TY^-tFmi1_;=X2Wdfrs(+0x|}sO zN82n?Au#DPQ?y{QFE89|vU-N^g;HhQ(!rokHdV0W66)4lv7LCMUcIrzw{wB3=5Km6 z7zemaFh!fkLQkdiHx*t&1Tu~$cLgF9*%~eN(YXPSTMphq+T|NvhR)w)RV$>cH%?Ktr@++lpMtA+5ryJE5j zloUFyvn)_>WLx&)*y6!$?5#K(;87e-j&UhygcuoCIt#kv&aP!6yCPp48j5|hb_#MQ0(u?6y1pHN{JSYK_ zcgWExXPFO#4g$(m!XXz$UBa*n7#8+QH zx`mYqCigCZmXok&p?aW|Skrl9(O7u#2+cf6QQ-t%$#$q!5he~Oqe>|87<^hKs|zAD ztvw{(Q+OX5VTG0j&#G5X$u~)LiZa!d%D*EZ_|(R%9Zm1oYpu~l!pn9BJ(M6lWO4Aqso z2?YDv3SLljzfiG(!-3^*pj+N#X07Yg(u__~v}q?H zX{QJ#Qb=AS<4B5JHt9#qQMWNRjVoSNY}6IPZScjWH9>%Q^n8V7K{%6$Ty$*m8W)S6 z_5I}Rprix3A!3+SF5MC+KeFlMF8M}%-*o0sXu0&%A$=XPSfQzp5jYU3hnk`z)om{& z@njn?mZ4BoL1la^BH6NNvb_Y)lcv?6$JyzcmLUis^0tCVDDpUzO$vCL>j$BHZ$65D<(NVm9c%Pd{@OmX22v>*8M0Y^6P<#zbGq^RY>cd0ll_hs%1VEfJ-5 zXXZj)iA^@8t!X^X4K6at2YRO$Qe?@>tA3|O_&GBsypsnjb!8G5D7oq`#hkz;=1?rW zqT31$L@4nYr5_k^emryrViZe2wdDdlWI=`=wF-#w$JJwYMr319=%NKeaS`A|aU+5> zL>`}1o!%16_>{x-*|M2}dW2`el4yo;v5B|WRD4KOf^=7VINMpTq1x;>7YGr3Z*OxT z!dgn0k%xnXMifyK5eUN#C?ndV-Jeu_^6P|Y6sU(5bzv@}uHm@j>Y3}~M7&V*euySz zDN1LJPU>Km!e_#Ry03{93M|KC=aXgnZoadp9*CxMcCq&ANE=p^kxHHbx?NwsvHx-W;{9>^hR}|b=a~PUV?J3UdU}KSTw1Ks>Fl%7HZA?hf0w; z?ClBtm=dC0veYAcYHC*<1fuj+O_Hz`p1$r9^D{+t!F5-}zJpvr+1*su;7{D6xBVJH*-L;(!C5-;=o59)_O2-N@=2pZQ#=RD7Tu%o~z^P*;a4eeWO}YYB_Co z*K02#yA>Ce^=sJ-iVa#~4vG~G{V{fPfZd8T&vU-^ZD_?|)40{)*0UDaDpGn0TZ!e# z#gkDASR9(2L3h+S_2?r~(k1y3*jZ^I9^URTQ?6=!X_`XqQn`2Kje1`6W@-lW>{HiQ zGW5E_os2>hYK}vZ&yc3GDnK%;#fQ`}nPAGv>Y)HkO07 zwOxG3UXoZVCRTFJZj+>9JBx1IVGfK6mZoZ!Gt0$=rZASUe)qM<%M{t?lEJIQ)LJJ^ zCZ^Hz%Pu2nLUJWDyBtwaadu5CX>;XvGFR7pF?ZDoA_7mU649#Ip|%3#HY>LuGLkJr ziMOfS=Xww8p&lZOKEon3>~WP7#)j77#k&^jxO~`46KS&?`D2Un)Y{hbsZ>H;ZNF4J zNn=ZM=Mc}TsQFWOP{IqUjx-u|vU-?F*zb>{6}9o;MDa~f95KLEVB}J=l>I3d2gFh2 zDS;GW;g1qejiK(QB;wJ?w8oY`b8AHDFTAfHlq09-+b%qFo7?uzoE3!IM}0EU$sbj_ z=4&L_iFst)nNCeU@MwVeqN+)lxQ<0k>1c7}w9^pMQ2UWNQ%xu=`c;EP5u}=UD2VYB zUnz3XIxOU_9VWgd2fyF~?t1~gGa(?mb8 zzV;1g&)Aet?UxBYvsx_##7Hhei-{8(8mbxO3{p)ps-(Nj*5JP3_r2~O(oG^QPLmr% z^Fm%*9r-&nj4^2YX`tfTae|biT1!l?D;it2nW*790Nyo2`rU9(A8Khf+R8cj=gyT2ba?m zspU*=4hIg++Dl)z#oWtbNa_H#xVFj>fd>%Fa@y zKxp+Ra0|Ns6yJt2!Q7=c5-%Zrn8aC{wzM1!Cow@21;$0Ro7Q9ZHA0Xhzyr>@FXS_D& z%iV}Jh%#zsGAGn8i5pZaD+yK?vZd-*w}(<6IkLoQJu}V{Fm!lFp!K99C*G; zh%?rTt3!uRj&Zu3HiwnJOzCYSO(W+L$VIJ4a_z+Q^V2@bx{sXfr7)nh!tIo16SKqH zm(wM6X7xvJCSucK>mXj@6zaL72sy~N@ceZ<^D%W)pL!aix%EhZ5!H&UV_ zgasag{)Ci@#u%7PMhL%IPzL6;ka<(^vcEF#FmPl8A^JMXMK)R=4XX~dc^UnL|! ztoximJM_C|+EhHd?Ov-Y(9yT%tIS$w*hXo)2+S3Og@|vBA>Bv z>hS{5NQ_#7d~+_;+MK#A%Br}Sbj)g|a_+F!RAS?$FFXz(Gq;OSdX6@an!UKYD8ptYK`)B2$+xfBm7bS zM1QdqL?S<=LI`k29)A8a`Tjqo#F$QC)6rcwJt}PDJn_sqm9_^tcMaOoG*x6#>JUx^Jqz| z%-&nHC#0}PZICY&ic_Y?VU8P9DbeBvN90ECER!}ZKC_f|#e%3kXu)Q+C8YGemHg^?PA;Ovvp^=PCh%*F{l|;vfGD_5oyU(+&?O}mBMat zsz8E98~vs znnI?lHUwy6>U?czO3Z^wGo9ses5&j9SBa$kr?pDb#IUKX@f|H+n2hx@H%sf^&vag6m-v(Iw;^ zbW@|Is+)B$u6S@nbQY?Pjas)J863N8ZXWkh5b{Z97nv*8ws~zYP`eqTDPZV}JF}C@ ztxWj`#$;D=rrQufcYCF9kkdy~xkoyJu|V!IvtHuoBQ|~ANliSg4A`$JT}5y!>7FmQ zb_-BVV+#u2RMt5+YNZ~ox{eo?H%_y++f_R|7PGl+?$-pixEh8~%rJ>lb?pqVXRj$3DJ^`mJXvl| zl?->)1r+f%Qd%;i%H^)^`3z}Lx&_UdJA{seRZe2fSD3?euG9`V_FsLEo-lZDjw^6( zNEoI%r?Pdb)1Fo;Ny%)Y{Dwf~nj}i@8=CZ`vu+cw0=XhSR5GgjG;|Z5=)!w=Ht0H+ zyFs(XV+%#1?UkEOig}$Yd!w%Tdwdc*8Bl3X&*X5v909#-|y$hw{zRb4ttaj$M@2h&~A_Lo1OG|>ZzSY;eR$(y2<1}AG*wI#MTUS5@>191)GyVz`9 zY}}27l-^U(RD=q)SiRmeBotd6Qee|oyBL(1<<*4+l(zG>s_<@JV^eG>;;t+aA5B<^ zS&ZR_PCV46@|<1kzN^hmK=4vqRc*|~xdB%8MZ6)g8z*?|it^o_Vb+E!hgfTfIDow8 zkDq1o?ww+elfYwm*=AIUm(y-P`2hE;J7Cm_SrCt7D=?%u1YtSLEtgK5PUWLOgynRU$_Gr8%rv2cD$ zZ*|$cTgAb7a-_ zPKTXKmRQdtEu@|_;ZH=qdF+)!(6R+p?UQP>I~hV!y(uw>o|@EwEWXQ`!zu<9qb+sn z;hSbBg$6ap-rn1uDe1g3gtM+vqYYmZ&T8O7VahJ6qP(L}kw;OpNxi_SF?#MSNY_lM z+E&ja4?$z5Znk@!Eea)0cWj`t_CpxF;Yo9*^3K_yayLiF;1FL?1Z?b1Vj5k(&^F8E zz`DB!cJ{)XHQxkwKuqk8THf>`ETg?xo3}W-kGIROcQnzER%yJ%(d#=3trTwt&b?{b zA_97>q))d5?7iACqcN{hRkZm*MpofNNhivx*5Z3QQ+jf(W-JqS-(il#C@WIvRVk#L z*0!!?B7ziiIuLa6W`yHJa+1mwGrDcrFMHY#4oW?&hbe1_>eYZo?QUs|DZUcPNyQX8xd(=O{S!exbUY!ouHFS?R;-b*!CaBb7&(Dq$hl+)P! zT~UN17G|>!DRtO*)xk-g=d7r5`>IB5F|;{g=Q0Q!u8}KSh`(YGh7&1^>&$6Y4FqFJ zeN@^Q0Aux<7E!cubS}gYuYuM-PydF@jYSvy- zQVV(2LG5(yO-D`A;J4?ZgdH~em^%vI8%oO4h#PTN z)eP4JTOFB!o**4$3hZt-7+Q{DJK2`|qV9Xh+R8V3&7JI`*GP9OAfO(X!uE#?%3`E> zCsKIPo4b>-d9~CC6#I15qp&rbwpU7y4!X!|boSj4g=oG-^JlR)fj9E*ig|kcMXmMG z80iJ;TIXwkvB2KU3}w!)trxcB(Cb+=lT^Ch3M_}%@2UCqhb*J`V_&?;T|$xP4-05+~= zZeM}wQL6VvhnGXKmqNB{Pe^x;JCS!*ZOPu@daCFrdOJr)PAvZ4Ux|m)MwyU~g0-hPbKrog;KchP&K}Sk>~vHB{#~ zb5&+(bo5DAvksa~)X!B)TcZO@szFv*S)P<^0v}7&s)DD2rDiQ_CQg+NM6+p30a%(N zHI;*xb)IeCPA=NM=yIm{?QfHc#?g{NGRf+Xd6SiGs zNao^5cOB^#b}Y!^d48cdV?LUA8G>x=u6Zb^i(GGAH%jfU=i8e5tXt0dUCqOOd^FiV zVu?^7I91v*ukO%ja>2@yQ!5e0MRB@OoG`J@uua=*bVtC zxD=*B=S)Xxve-|wQ+h!!j!91Uves}ffl)U@mpx|dIO2TrnAoPzF0;7rHmrsXL?EmS zX=`;Dq1mwY9%9}u6^pLpx7486YeCl^v{2s9aoK!9y3uYq6sx$kjZHqTwnb)TTv9;< zYaH0UyR50LV8n%X=8cozX_u%_N9$V0%ueL=q+D>GL#M(KmpluuT{@V?u(gK++X3Yv^c8 zRmRcFGZ-K&=P?I-<@4vKUz>QQwr;4?VfGQ2nu}X>tZNH_h9=xAkQtO7C4km4`(c6H zTDoYgS6*y`54j_5)=Wgh&!yytVgyRfy47!L{f^dyl}pE-;Foi^aZr_ERzs~oLT%q_ z-Ny%QxlDIjM;M{qRevEWj=KqwkS&tJbGni7&KcPz8e~^)7mYm*@v3U%H`VkkDPo6k z;U;K?n$DJYA4Y|Re{HHOS%h`kY@8i?vlaKD7&^8s?tx(7GpdJ8?500PlZx?pX znIfSp6baK1`kt5D!@0IEp3UcTREw_e`7=j_+e%!l%oSOZWYMf-S2}>k4AE0x1xk`r ztwtQRp*NFlX9WfIjP`7=aX(dLTc1a{!KF=k53+T z^y+g)Ky5h2OTrVx=t?U(!qEeg?*oK__eOQq=IjcnEACslH*R-L7mrAJ7-A;z0)*33 zJ19}Uxl){L%*|D`7c}>cN{nU$POTwVxj|RZXq`%eBOdaRPnGkwGNshI*2_&Q`p8|L z$L%%VWoLlzb$FW04ZGUg`gMlmkb+%(&+OfxZ{?n?GU4HOw}UkK6#-`tt7EX$boMUk zG18kwJI>zG$maC5BY|9a4cxQ#dyFE-J?XB1n5@_b*R#5@=AmHgH!>;}&DT2%BN=459zzFSeF3ld(GEgq{COzBq+_2zo>NJ1da!N6@?-)iWo zW9ZH1vof8-i{0wxQkxy96z7L7!$@}O0#|CH=CLi`Ni?ksFKy<`R(Z>kD{AV3Txe$z zc^++6HKE8*wb$7&R`FRfp`5x6th-z++zw?e)~1|OL>e?qj;!e$otG#ecN)g0N|IJ& z)Zbo;dv+ju4evr(txD@gUxO$rU6Vr9q=+JuC{v3vh^3n@8XGKZ$4{46mDrbcyn``$ zyOSHf)E@yuI_|5UK0L~0gfS*GVz$M>LgrSt36nWl2;H|IUW?#psRD6~xK4FwcIzYO zVz%>p3#`5hZSC`L&_lGGcbDa4;Ysa7$_d;qK>DbdL$c=QZFX02s7wzjZf9uu@F!_i=KB>^L|ow{WD@idI}{mwBns1A1z&FGd#f?_ zXzB)@x-T7YVCOf4mwmy-hS<=|2=JwL4eT@yvMsyMu(7R9ItpE~hB-GCW*aI{jos<) z6D7?^9Kq81JvhiaeD)Q(FgDz|bl(}1T@zB38aQCR&8|AtQ9W2|Jv!pZ_2$$^ON`U4 znHbwwD|tlOuXI~A+nd*#oHs5F)RbZyTGom9vbfZQVe$K>@Kl zbF3R!CriVHsIEI1E3rPvpw6k4omsO7HL5ZHhBfV=HZ+(#CY! zw#KcL&9_?((Az6))tR4o{TGF<+{Q3HEq6F^|KTK*4e9LA1#A*flSKG6^7cj8+yjn+ZDRZ zI?QStZjH8IUAE2E-k4U~Ix}S(W7cNJO|xokx((@vpl$VSwPRD(&084tS+cV>^vra| zrq4$Bi8f+chp$6AX6tNqn5=DBDBT-xmL9V+R$`20VX3iMw$wL3&bDDj)wOM!jh|Bv zm~5;H#?`YmZKx|_D{WY8p}klwN>&z2sx+cL3@MrWc=uzIEJDW}+`G-S ze?fVb#^G)J+4-THSIlW`+%*#Ha-SQ$iOF{C+GgLi#e1r*a@~wzxGoOGk+SSbRC@NKwNL6$lOsVQyl zoTnwBno8SkJn4zt`J9D!O}l(3#D)|$C=J&VYAAyU8KbE5f z=a?^qx^NXw<);{-Z8sUAQP9X(K)QM2B*`iqKkiV<64ql@M~N_y;T(A4V2h{KHXd#F z%2q^0G53<>&Vt>FJL5+V_ls7QNYqak?^j!?yvSTT*_rlIy3WeVe|=J88?yd1kELgW z$AOXXX+*)O!>-&;CFb4s=5}qU`PF=ug~lad%N&$Jf%6P{b*gqRDH6*|-A~0d0$(vh zZV@$nnOCipxaXG~ov&+7{>ufubmD$4PDRc+)uTI#u+g73tLP2Gb2Nyhrd1kpRHw0M z>#SI}DEc@}tqEDio9s--95k$)tOa}Fj@_`qKYH+KLljTV)aA~+k@ee@-p*IIKEKRrx&AICVowp39jQ^jdy=)En!e^z*YBxd_YM z;};e%Vc~)YwSHQhHHL)_kzu_+6ABGR6+L~4;YJ>UGJ$b0afJwy3mNgpq)}lEnWYhq zU4;CVq`0Vo8$z?+EQs+oX+#!Mq1jO%P$>y9lz6b#Z^WZe{hv8F8%|#hPR>?s3`yaT zQ`S8wXUSq0$|bRW7Ho72O{jf?EH6ILPihFZB zY?d+aG=pTsHPo%?YNt^V=Jd=PibUBU&m3`32L~2eo-l%E82;5cF)ml!I)fopS@#z> z!Y4Z1VcoO>6!2rlWrEqbVU=`L6jF){bz=!NV5Y8W3W=lY7T~=GN1-Vs@OYv_NghdCn*`6|?`f~;6kK}PY9n(=`d z6qcA#5~>u9D2(~GtvymATUO6LbDf{Qsqq&_k0VDzXH1lfTAvO{i*k!jT`eN7IRqxF zx{qxm+cHrY8WG>5-(i*!q%93dZR|a|Fb6T5+{bJ{?zlBZ3e-=A5Id+hlC<1fNj-!p zrL2ct9m>Sx1?6W$qjYwu7!pASx0!c>#r83_FXMe(k!*DaU@v*aI`QIg?l(5Es@tsX zdBawzjZ<}qaHcWb2}@i92QF}OIGyTvc0XNf^fTFVg9t=5t9!bxw`wUPb->c)auPD{ zXwm0hQ)`v&{JFu!dp$>C zab?QQzcV)FqOWK@5_G#(#TQe%HkDVkEC`@lwWF%}D)ieJ#-n*dW;Mcf^2=b!#niC3 zZK_qLFdi8BlU3~Z1nD0%oGS)o3SC4Vz z(n1K0ILci?LDJso*tgLUYhIW~H1lMagQncvPb6}00!D>L2;xg4N6Ih7hlXrirBNk)mM0G`2@l7-C^fqI&<3U>|$-}8zQ>%wCwgIu3B)<5O;`LY4OC- z1vLI9MW>0CJYqfM<|&7jvX+SBNS9Q_+|CX`GA~8OlpJrBwePlDRHfAu%7Z@hsArFF zkwNV<=p~D)V62)AyD!KH!(}f@Y9f;#AlqsbN+YiwSsma^EW(L`FpdWi8efuh8 zSkP2Nh>i9Mguv?BcF%1nx!g9anU@&TNcm#d#K)4vD8U>ULd34{c42iYSKf;*`a@S& zhMMk^Cnk|EsR({lmmVX2-9(i^A|T1TZSGRJMjj7voI!_igP;&$B#}cb?}esE#$+K( zM-P|QgscxWqp_M;LK!j|P{{a5jcU9H$AyQ6fTP5bjPU567IDQ`N6dx<%8|)xnex%5(S4Np zS|di0*o{o%o=kMdkVCx~SlD(VFMcY}y3b<`{6j3HNUZkR`x#6OX#uC69y$nQbFsK?#h1|5f~so-0p;Y<*KIW z@yDmabKfOS5i(o_?S?TNH;7Yl?LoYbMOZ_l8*D)p_6x^`E74nuN~SD(A1}D8KJpT9 zMmE~f7`L8eBaXPVDvygJ&85{5#ex1XLEwvDwSK2FPkJs|s;}2Md1;EDkSHTDzsk+4 zA&a3uOgqAXf;=y7+B&-3z|^SEY21~Y+$x}3S*)S3sAiIembccY3Yym96y`1Jp;g#! zB&2;N+pHrVO~aZEIRf1h*IA6@kvuP1g;KXU=GNvhiN%zr>c?q{eQgsOkXsh!XiW74 zyNP)gtYF6mB1a5DgB%}wLEf}6${d#^DRmoG2;)V<5!p)$hLs|aRzw=FNT#&*C>a^< znRjp&tru;V-K2-C*GuP&?deGqG0nV|4UJ78+4)&tE72kq_8Vx|cc%agX~8m9Z3(6!KW&xYb0;qrHAuVOH28k>A~ zcg^!534T%Zr^2jlvlcFEOQ5e$N!J^DyJw(z_2|2D=!!C}@}9R-*7LWE2U5zbz(une zSn#Ex@J4Y(=(DtF&}mco@$FRJW|)?7GM&r|x;HsRka0~>rD(p=FNIKhix!S~5GH{q zl6<_)t2oGYmu!nh#|!#Ib=b(WAEij;u~fK?X;e!PRTWZ9pK)6y3H2ZlBXWjCQu7(* zLS8BbDH=W|KY&bDS;fRe;qc@mXk0y34#?`1cd72*OKQEHJ@RfLW|~;j(Dr=}l>0T>BH@8wu+Ty<^nLWeXA_NXi9PPm`m@p3DrLy!zw1)US!alio1WLi|zE zy&|}Vo+%F6cE?&cwL~b1bkMT zjtcn^RMSl`iMw{}ov6BTHB)pp%0!J$jJbAJiHMWje2Yc8x140RQ;s^^Y?#3>DFQpmF5FRV0` zh-!pp?0Ic{Go}xe?-LZj++Ebt(G=0YO^(ei3*sgsJ4Nx_k}M6ONu>}oSqH|5@udV= zlZkZ-l%vWTYH1&2rgSO!HfPUSs#x$6N5&k-XEFx+y9&0FoOG3_(r8LKF9G7jcH?l` zD8mTke0rwNoN%+;pDT#sT0UE!CNPfH(@5;o2=0laid$!zMv<<~j!20TidZ??s15iq zbtySk+n`bkY&%TxdULhU8Gn2xRcf<59zBP+TzI_};#3`B<%@ZRq9t#Zh}%jBnT3@D zBxD#*V)XU-4L-H2-OJQ)Nu%T(k?=WJ2;4lC0kbW+7VDxiNZz|St$W_()+y)5$6j@{ zX&hszT3Nr7tDP2ABFTt(?Mh*$?sRPud?+(8SYRDQf;FgN>8$eXoX1r&sFRi$sU`BP z+6|Kv21%;TlI-QuCcdG?OK*teMJ3fOUo@?-K5g>g#vf$;Q%$xwY^NGjBN9j1Ga6h( zB=Nx@W_c$^l1JR9D!sdtKb+utV9 zww!s0W6{*;bBS+Bsof|BD?omA3l$k9(N9CgPGBd)0t z^G+;};t=Nlb_jI54gUT5#3QuszPFgx4rj6@La)_{vyAj*(K-Rvfmg2_eyFBE?pfoN zZNx+8YnjSES!85cVwqsDMx&wMXBo?$9hG%kY4tQHovmeaY~&(~%RuI^lT<5XcU{Vc zVyYl4ik`=>X~M%ood(q#S{GvTFJ>djSXYmru7w^t_corbXH$`2Jn2+WTD|Hsgush^9dhe)o?3TE$D>?F zI4N3C!${4{SzNrvrGtrOJ~hNG?Biv6RWUZv=dYDobj`|AVBP7?=#g%`-G=#06Pgp4 z%1Kl1F5a0>7M+F$R5x;t6?@e7<_40aLv^&7<$%yE_VzTpf(bjQjw%((WH@3IUEnV< z%V-Ho8y#RoU74CKmP!9*_|EfHoXq56~#`>UmL1WQ)~J(9J#2omPqdA zA{T;6tm+kSqgK%E$!=4s=A6yW%9J$ROD<-sorZN`=efn(O=@*Z*Xctgj_ zaTuN2Q!`f(^&{fRs0SRDAxDCM%Y>&zM0G9cPk^zMnOi1iTxto|o2j*GXRFy1MquFh zNUvu=Tyw1G`xuH88rTJ@c6!x`U2oETnOk&hVxb-ZV7;kOLogW43bc_y5_m}-MYQM+ z@+7+!mw09sLPZh0uxRW`!@OAh6c~IkHZ@owETCA(&gnKe47+8!LlV;9-yPBw2uIEO z=Se^k>9P>9Bm#;PDp7aHy2UA%7W*+Ks&O znCv05261N|Ff53%M&{YFd!ZyvlamWD=7(7~_4$ibIvNywfQAdEpEa4fwS`MD8kf_v zX<0%h5@rX8E9972XBv3-3rLJ6EQtvFxD>_|A~@2Bsuh<86j&3{@Z5p%T$QDIph(Cg zsPY_;95QTQQq5jI8K(=(Zqn$*oim*;lGr$;F z${5J?m^lnR94n#(QE5+RVF2)|^$Zi-}hoi7d(EYNT@=hgh z&`h1(P6dpL0n(>rtD}J6q(p=iIp-ai@?u+jHuE&nv>bfnt{O3;2-7Mxd^)ns!F)2y zA`wv`n5EesI$A9sJfbo0k0;F_z9sQbwfAcBdLy(YINnv?-l;R-Wz~4#6>UQTBDLSm zWW>~|C7*1o8mc(3^aUJjh7wV5*~Ys#eDhpRIM)-6C$l!#`Q;;~G^Q!$G>S|cdGg1c zTaBeioZ@)r-Y<6vr$kwwB(@!QS2a6x+L1&|o=DKFwU(8edxr!|1EC;-1U>>(($Mu2 zveBiejXK)gaYSl1x7XsWG4f;TO}y+JbE_8Q%;Ste@#`2p(@T^gM~RAl_ z(`mmB?Pi7Sr?4?soy2P+aSS9S_J%Bb33>yAM5~mNricfH4#h-Ajx1a?>D!D)y)zt+ z&lRE{Iq03o8iQ?|Qpe9W>OM3Y=IhV6*QY1WZf<9j@j37_QU#*yr;3*%9-FK&u|(bN zaHq}+IEn|MvPs@UD(b2bMusCLh%K4=1)Wkh_fswWS*TxA8}-!IwDLh_6C7$4f%PRJ zAq+3gE+|nfj;NNrGvZ4iDzK^a)e+Gg>+A5Z7@Ze3O!n2OF0JL0^6kK5sFWSOHl{wh z7S$mG?a^-}oytuR;$qDjRw>sL;t-k}$~|tjhRE!6CzzX9HoQWfnVYw*R3@KY^C;FH zhSP=O!j+nIh0(^8 z?3-7(@)?=9^JBxSq}0wW+X!>bjY&EZ`6_cWqPph#Rp!1Af;JDj)J;Axp~g46!ie$5 z!#gEkT*X@?>V?^ah7Me@vD9K88LIZCQ)^FQ+uo{@O7!fhD{b7a-e;C1aM~Fo>|su4 zWlLa3C{_gfFdQctH1&3Ycdk=66%yRaT!WG28tjxLa`^6iK257{q7B=L%lxK2t8)mV*xscr< zBE7=y#_>dvtdU?~(0q$y6Ro zU=HC3lf@n=tVt0^)KKHhh^F8q%UQtXSTsr50}%3>AJSEZo0*z;fY2gtl z4y_dsgc3e|VVz z5A6nAZRPbxLZ3LCY^`Pc>8A~;ZlX`6OJ@gJXNd7a21lb#w79T1C(&!(N^2qtFw=?- zthI-i@v58}lqHX3&YD5Hlt%faBn^o53%*}smlT3$=BIQmWX>q;Jos6aasvGL)uOMb zN>X6MKnx!P&oSvvB6;-UxY8Mus-H0KrgrP*fYOEsi(o=!o;|RvYCLQ~@2NK=ctANf zx|5ms>!9TY4ag|ex9u%b6D<1vCZ}wf(u;zvp3_=%DNvcVq4LXVMN{Famxg$ZJTeI= z@n#;>z65ym9ekCndFAOiE~alLCn454vEw6BM}rF^N${xVF9rwCg62|dP{?hJo+(Wb zc71j9=I@ALwi`a-u2@as(wk1i)Q+Ck^`Cfd~6No|EZW!AWSWe^g+Jsc7X|vL)AA&nWt_~L4 zMw8&NJGPUs>c$U;h7E7z;R$u6dTq7FhssfIIlff-_KqySmxo~$!wByJ@T$efjRWsq zkiL~Q0{D{%AsA6*K@56A7`&TqG{nbJE>8IBwAa|=!oo&p8#B(IhCp+J`FB>{7mViJ z-BGe;nS``q=#Lr{NDRYQ3WE5-$-}`(2W74%f<81E5XwF;N%>3UC#4)PFUx~x&3Ka_ zi}!tS4qVAA#_Qb=MryL?R>ZSF9Uf1fDj4&`h#8065tO|Oz~8POSgLr8A9^QE{p9Hq z`MBYPJ&Cog^mj>=u=&J!aCvJ>*oc>}kuzIuwse{p?hYLVd&B>Kd1kMB@XkMRjxe3K zEt_NZ565qm&6?V@4ZTxmn;1@bDtbVQKpC_bEDsWzj$1rJ)~V5>RUz-Su@vZ)l#wt_HlrZ^-S)2}>#? z1G|j~sZ~zdSotj@C#|Hj6x*=eT-H0&%1-05(4)NU%$3R3;3Cd)15H$hZO5qCI}F&{ zDU)s!1FsFnOj%Y`?R~ws)}+&XeTJ)a-sbh7&qzh);+(jM%{#iP#j8mGQ{CJB>4oW1L&XEd_!qa>d2gE)JCj z@y}@88Pe!8W25fDV+BYy$&fQ}GhP9dI+CE?pBir&%9d(|v4XOQ>nx&(3^?MTpOV>G z5%hTpG(5$)VlAgyN;$cm!)#(PDPhA5(#L0Bcyrz)yDFNopM0)y*3?efO*Up9wbW8W zL?FV{U8Fou(l{X)G#e>+j3l6VU?RjLy$_^Vu9d^|t%s?z2RpjWm^%Gm1rv8B{L*o` zPYO6i9yAbP>+q@oW{CRuZqD-F7JB~4ewD-qj}}MY3ky1NWWI4{SjkPHwQ)URI^|&b za9ehyeK?s991Gs1y*E(DODf#X2ThkEg`j0%_CkiISbTo1)4BzlynQLp*d`+b#7CpR zm`565GKnY`t)*_KT_<8&N0x1h5~#$-$m2uAj2lWAQQs$Nd{vSB#C1|v6ZhpKXC6NM zDN`z`D+D2=5o?Nt8Cnb>CObPvt5X%)L@~1jeHTn$h#sEtIq-ZxI|iJVtLmIb5@OwZ z5Y4pYNjhb`*q7RBrwHSEPRwtKh3$}wJn{%8@jn)r2tU5^2AR}-ekT5PlA4aFch#z) ztKV*VgvLdy;!KqoT(6nQJ)_|m>oIjQ$Gxelv`1Wh<`Kd+sE4^BEYV@OMiwED$v8Yu z%f3D;S%DuJMGX=ZL^sUy=9yf1c}ejkj%7u9n?&o&)#JjB9T$Omu^RIfB#1WHY8;i9 zmC>lw`Bs)6BHrT^vyACJd1n#sOT#80t1%?xFrx_yG-d~mkm#{d@kB?s@Y!+lmT#z^ zQ={W9XVj54Qgt$yT{z3l5nCk{y;z>@?X>VX;KK?E@0LoF##f289(g+AR$Z&CCUB2g6L~q$N~{wx z4>8HjqKhY6`;#LHI+ zcTOag$(HhyX9&cgd@S156g`fvIG&jf1-9VYQR%E(YX&PrlWb3Ow`vZ3SH0$Th2HgZ ztFz8fCE-!~X4HBZeSOxYJKWf}YXY1S#^esA4k0)xa65qB!^PUkThan6RceR`67O24 zE$fqTUb@a*?tBV^ZXW8u_ikX*tZC%LcqWTPp|J@L$}c7`t|lQ@Re6s$xjO-#zht2I zozj?YaJj}g7jFuVWK2PP>&8&Ev~6vZm2#M(`Sre2r9JlK)o^{Q-yfJZP1WU%&x<+2uHzMj)Q*;}u zMzdfpTY)*cO{n}z#tdBqXw|2I2;RSLRT6uxF`OSPp+N+=a6Rh>(-TNpv!0=~w9MFE zZ6Vqr*9g=jPcDOti6XZHu0YRe&sw2&Gm5jfcpmW99dLFnyv5MgLTo|s9+V9X5GlD&micS? zVX2y}K}*!kt`8*}YDMOj;!$LpS!I?%g9bwp2i=|&Ph09uR~`p2StvGb6ZMFqf;8gi zwBMygE1S!Eqx-a2U1i|ijiU=bq`d>8W3MA~IJ3>3W2+dGW$tDz7o)8&O%5#6Oo(-+ zBG9J|%3?Uc_296E6GB2@Fxv?=)>wpfTKVE)+4*;k^v0gU?M%_u+c^p-Bf%hyk{Q&Jk~zs9 zQ63-Klx5Em&yomTc>L4G1RFp{f`J5(vmYJH30$wJM$&YsXT~8{B)kNjgpf&rgq}X) z$6;|4XTY$aXC$0KQl!~b5n>>+L54>eYE~uU%mDSCGFxxN8(%3DoW4bsBf9EjqG+A5 z<2`76Wg+x{AW>B)JKSdOhg!+^0|d}K09GZ5?j4RjTd9mhVYil#aX&ckrgn*BWW?Ch z6F$qkxO!zXjT!P~X;}q`iW!A_t*Mis*B-+FJ%nN;dya|)SE{6x6v zV~shHbvR3s+l(B!ot$DDc-N+97qt8_jKYG7XGmcnQFJK|q_r<3u4E9yE6t~_gZ7{-Itl8Yn= zSSCU7@uY-lV+%O8l)<_6&jfkBn`(ymWT={kS;Fqe)`A~ou%BaI9H@=DRaXa9oh7;s zg(^an;WS)MLvKuDAuBLx$>KMUQW+?mfboTbAr{4zj{b_N1I0dR?ROg3MQ$gOUPVwW z9o18Wp^TugkvK%g?{_&XsvPI8Saj!>m^elg8Uxc$i(0h^;a(VWRRcox4Rlv_Zq$wT zHTPty(tEU3B8D^qWG}fOavF<}Vpi^>j;&(2_NgRy+dFDdyQp_Pd2c=2>cbie^(9K@ zSroT+q#L%#jhpQ(?M1nwbj+F8Ea9OcLi(?GO<_SK>IDo;L7@EmIUF)n9U!QN>wGrI zz;8%h#mmGZ&3TY$!sGKeh2XC}y@71xx~rraLDwv+cE+R^QS8xdJv>AW7ca2ZjP2gw zVBch|KqlVf!5KA-a~C^zv9R8dvI5J?H>d^3Yg=+E1mKwo-Q6W&FU7nO-d&lIo|kH5 zz-X0H@aV#h8YqbGoGdjn1mLk|a(XZ=nFOd|>$}Yg4%?9R@y4hfSu-tAbWAks7XuGh z1yDeNhLj@4Oeif{nHo^VdR7BA)D-f%64ap*4$mbU+oOB+qsfp42~RF!Sv2Gxt{ecOrbb~kLyX$N8q=X zmKH^J>AT=uS9M!U;~O2Rc3%RI5N)40qJbXpU!_Hm^V)Rybykc#M2;dXM0n6)=OVcm z$Q6WDLknq<^`22{&4*Ios&U;ai;b-w`zq_W%u^>bZ(?KJD1UK6I#np%=yM(O%GsE^ z__oDUB?u}gU4rmv7t7KqXT^gwa14{FbFe+?a5PaoSPS}R7HEokU#@v0;tvZT-pNq6sUck#jm(*(LY3w@5sMqf$-5q zkb;aXvdG2Ce7HVgL1{y;o9b}KiC*S#vZH))T8K)YdS~X5E%KQ8FLTZNza!;Z!VI1* zoYz+^G#r7+P#o(G$mfdMtj7c$O$lt36Yy**S_F3az{-(**aJTH7BYQ8Xta>Ks$P%}P~OA0cFneABNqh@&4H zBWW=Relj4S;hTjB!|H7!$fMawLy({=!tl2r#QjT1qC9ahX5DWi*Z0+s`tf;h*ij{x zdkH(HCbjGfF2c;F8w^9G9T3omk;p@*Nrp*PT~i$=m@EVp*Tij6ph_9s_pVep%#JrY zS1aZ+m5Z?|S7h9JZIq2S4m{?KQBx%|d2dy76ti+ARr1_Z;~DGKoyc^UTUC9VmNGfp zGqH=p9VqhU-sI^csHtInFAB63=2UcgyqTd|t9D>?^#U6f45>)t%$tK$%5X88OV_X` zM|T6jjtP2U^`4~!rBEe8uFJ~;wxrk3liY}JcEHHspAJ;2#p~tL@-%mq1iiAIn8Iw= zyMm~mN~t|ZIvy&>R$Y1VMufXod*iF^&NQDl_TEPfqR7mY8Mv-2NJN;`M2Y9+-~?F`guV4|JV8XO}iV(ddkWsMup*{E9f*qC>)%Q5NU4f?wx zLnhI9ZFOf|^Mb?t;Aj*Yj%Ta=&b_|(ZuFIEA2S_Ry46?8``d(xrrrROT6M; zk6p97`6B(=Z>5(gU^}h`)hf8g_?7Y!M~hb^miQqBnd_62p7r+Gm`Tfc;Ah-1qc3vG z*;{pKsiIHBAo1woS_=o@RDH==?3ttHiBrcF14?z+?9PXNPs=CaVG2TyJaQJ8#TQ6Q z+D^6nO{tr@r#{r@S%rE^>IS1&%1WJ^mR(m}TPHTY1;;Y%#lqMoakl3{~?52>*0s`|{cV_rtZ z_o>4G^S(ACO76P7Wtai ztNA&)TwJB-`|KP|55vgvR;S8FiA1#d^9^{OtoK-`S{9Fj#7KM`Z6m_6FdkZO$27LQ z))cgqQO~|bDZAj4REK5|LUze&9Yh84^9&Jm1bklI|RL(_Ecq2&D$BagwK3Xru zyu3!A7tXm?TN{1y&mH8VKz=?RF?g~&qQylK4pNCEgZPgyA{;*8Y*_vJ#G(3M;43)| zM(-)3?QNaV<6_erWa(!5#+0!@^C;GXWc~ngvyIA3M5@@)^By%R`LP%J|Ar9Lh<48*7GUkwauP(qbQ(~A&_olygIFlIg4 z*D?uODX{kMGV>C1;>#%U2Kd34VCKjcp9tBDvM4ewByq&mCN+jcV1PyzGRrh=jV>ds zCGjgG#^xn7kFtKmUf*uue|%3<#sP*W$UC^%tsB!hG1RoLiSMEn>9!w%D0 zvWwv|55766ASm&%4Jn3fa#mDXCyYEvARsUxC<_gdl8u{sk`IWmmu4Iqy7!K!d678alq(B~-*r7WQz`5e;S%i|JZ_`hJhZT#0;i?z zt+{q=s#YL{d1ZNO#&TExdD?y2=30Gdxw!`AMM^yo+YT~{4vImW`fmD?DZmUFusM}jxrDoO<5&Qkpj)pgo| z)eb&@r$)D~jcQM^YqBn$ycpYMJD74BCjiVU$+Vvp97>5}5TK~#!dd~u4WvPR5-|Bs zFnZL^d;!^z1!n1xlST>1m=cYDAwL0Bmlnzkp>M>s$J&w{BGQDfvo{8j$C_d@MI+xm zDeb9PeAA=MM;rOQ%)FhGrZVS6dSpw6nrwE((G0}Bm6x$dwmsWWnxI-H{E~X6WywL{ z_`Kv%G$(h>8Ra2sP z{B0c>L3kgNqS8?>imXlJ$3`o+#H;PcTDxCbR$o<&V6G-)q_KoD(qlK(NV-xVn%AZ4hKO}4XlR!d%(T8e5%HW@T&1FAQj-WS3n%VMXA$d6 zd$S~`2;1FhSYsN*_-QKxPhk>7#*4UB2hoCY8{nUXhLM1<&{A1kB|EzLH}uLylZ{h( z5olc}n5J4zDK#`;amR?iw855_#o!F#42?T!rimstQg%dfyMGO`$}F(V6@_svL&NMA z0l`PahZIUmNcMYHOeQ+PGWo2}C18(k9qWlr+Rv50nY)jx=G?rTq}qtXzFnB}^;uIfXhC3MFrkOXrjoNf!Fyc_) z%&8NM&n0Z*Hm8*$`>3PE7VM1pabiZGWlB5}aD8fUNsYDfqJ1++)5<%?7DXvYvXX@3 zFtPi|NQ;Q^Cm(3Fnlxe9mjSjgcu+Au73fZ8u)P?HkhmG4BIUXi^Ge->E`-D?#YoMn ztFJS#$HSpM?M*&I9c@Wj9&z?C#G%H<>SkVe(j&@JBibe-PfC35;x=w)?cFT8nM8&37IxRDVVd2QM!pkBV z@P`3`gzY%f;{3yoINN-ghA`?a&5o zd&g)ds^Ng#Dyv|jn2omKmv&~VtA0)ISu9pnZ@1xTRrvbau#_PrAQ2f03L3-grJJqE zpB!i3QrfpoF48+l%dW{WQFEp-)ub+bUROmmg@T413IymNm{QLPlX~nL+~@MOs4UKT zf{1>U#p-7Ax2>!5Q3_Wo>2fbeEp|A7db}Mb_t|5yr4b&}l!fNHdv_{3*GpPB_~F7_ zy=z15uZeA%`|HITJ52al+N?#hxGvzP^mOzsJtG*~xT(iB(KH`OOwzY3a_zTJx65Ul z2C5o8c(U?!<65VB*5uDs2OMl#MdRC>)+|`7i&=J7Etgap(_1$BC7iE_nJ}brj9SZ9 zudm0wy5!NjkmcB6vFfU+aM`SZK+L+~V2y99LN<47Z22 z#&wtpUPY9h_t@byd3>>QKM92YakA6be&uAyW9$u z9I%r&ma_XL_QwS$kFA=0!k0}cE^C}Z$cwuHi5ksLvWj(stX3=$xnPn6Zu;$vkh7C` zo$;zFirR9ec~{=g3P8A#7#-DFW(VLpO6cU@*_Q59}hBIlV zY2IZZh@$!totT|^T4dYKNjm8$JTqi+rCOVM84-r}I&RFxRfAfkwv_CBdru*$bXy7t zGVa{w_4LAKZ8fg@I7%-hnGK{JUsjvxTgr~WhK73?rAN5&2eim=(p%bjScg-V$|AMb zD%FR4Wauv}s|l7C83V4#cbV8@rhzrn>tJCn`ATjTR+70}*_BdWEE2UGT8oq=;A>b% zh7o)9wY9riX&XjH)?`MOa*1q+of8<%y4|9kTF`HrxX^_&LCjd3IR?b%A-eWw3T<8^ zI}}^c)gnIKs8$)a%+Bp_<*Jtf6Gov1o{+KD_|?b;i!Gn&tu&1I3o z>oIxbG2ZgC)za%Q?(E*VRT}1B1C4G2w{NR@q3*imf=FpoFIP*^Q=--xW{gpBp|duW zmRr6$YjtxLm8{l_dv%dgBda*~3W~T!(z_$2F)g(#2E|Cyo5LYHg7Do%id#p|M^!F( zSiDN(yI0z)IWjS$%eWHd<}6DUg>+?LQ1lQ>e=gwqcIkWDi?u7cQ9fZVx^-iYuEN!H zRPe;<_ZKBfX0To1O1mh!aGbm*l@iU{50TuIoVfJxWzw@#j85(JbWc;xs}6>=vGz(= zIP>ahJ=wz_bQE_Z>|PgDI6KF{zMZZ0T)YNV=nf&J9oU`JP%6CEGq(&)Z;afBYdUqF zyXt5$8mXpTTIbCdyHkc{n6Y7M_B+n&v+UQVQ>rC9jJOszjlWp6)h~Nil1?g}+l`yK zfYkeSFN=ATXi<|x3EmAGy3wvQN?8wG8kqJxxN+1)-!Ac4$t`eZ-0SM;rCqF(dE>;F zIY)j%`j*#d>%8iMn+erX*%VVn&h@MlCF%C1iX`fg?evA*x%b+r#K zClfO0IHH3`N{^Fu&g-g*nY+huwO91{Wf{2K_Vagm&si#yJr!hwF1b@q(c-ZO zFlOROV;h3IQ>(L5#^LHw_+~#D7AQ<&?~7YB2cc^DXDip0STN{=R!)E_di3I(M81y< z0{f?SJAGG-bIwY-RE6Sq*>MZIVa49e8QfLwxvBFZZRH`|kcL^a6+OPqqN!c_(36J~ zFlTN(DxL19wTbe|Y14<*MG)3J!m=x;2E5h2Cjw&a%Bp!MtUPihf%ar{M({V(`-UeQ zZqSmsm5KU+w$-j#s>$PnW*l5&tB@@h%cZt;;vwbsE{>8uu<=a^pmAwY_1)`%(rK@jX2PH6Lzxk_!utqv|ulHfktIg+iXj_kB46C ziXoOMVp6#T&@C2Nu}^&KyJ*eReptIz&aWiq|c6NaR-4k9dim$M0D)RL$i207ZfQBb#UrJ#=L#B`GpaZ z0_Q%;Xr0(xI9vr+9doQp3x;32c)8DecFAy9V3b>q+Kl zdz``S6uUB^>OzXulMx!t$SOIVvtHAg7}7esJ1O(taof0pw+#q4eMYoOIK6#iVq=A6 z0!+~A{i+eh&cV}YA z70xV$ja?3uEuvOjLaWAgJq1~rNxNo+4aiICVoICU#q%;^Em_a*zk@$dgeL|3F`ur! z=q=@7xo}uQwuN~aR)k?){HWe^`XKpB^Z9$$F+sSrePCd1L2ZiHcfzeY4^#XSl)k14rM1$EC_bt|grVPk{tZ!x9RZFygaLjAXb z_RU6A#E_1@c5p7qj>_6NEZ<>EGVOnpR?t!BYYU2=&I zjPM$Oy5W9qv8Z;+s?H(Ivzj}V`?+UA!{r6un^|b;(L#WUmLn;wB7__V$1Ydu=euY%nI!zPXyr6-Y1^%$U4sPB4%aCBl#714hZ6v3KhWbb{oHU zzOM=f4bMU96_h=uRl`QON*7|(Ih>_%nj7Dg$BgR5H-#E7$_ZtL=GFG=VLCRl-c1uT zUozKjERD5Kw(e#4($XwK#ZzX_I%ulcs@hgqm6F-i(icN*q_ zm8Wl%hJBh{RpO*KJ8t(8c%6G2tZ!_G)?DmB%qwLv!PIvO6H1A8)-OOLEuFjeXtY-@+L(Z0P9yAH~8y*Njrt6o)> z2<>aGh}l)J@w|3uHF~Wq)W=w`uqdu|QJEjK?mlR9pfD-3pxK5B6P(INl(D-|=DNI{ zX2!ND?uQE5LZK%u`LRk2mARS~$=HUm&v_n*>K)+a+0^a=@G!%n2`)V%|c!6ZwsYVCZaIxWx`%97nQ#- z7M{w4;3R6G>FvhCwM(8ov4QS|CmC;6iJR8@5NKAaaMRv%i`fNJ*Skk z#;Ok46D;;*t-~;$PcORp_abhw4I^r|UsS9~?@5B#(;f>EOdN+72O2v_V3aclQN(*4 z2ppI+(?!`@ce$?Hpbi6>^Kn`*>$r&AzD7+>f~{_gNKLv6b#1&9`w+0OBq=?Zy;qVW z(?Y8jVsb!~v4*IfLKUJXt~`7rn1$6YuxdVHp?IbSb@{LZX1T0@jFg5#9< z>1P1#+Fmp|%(srw%t|cj(FD-j>gjFe7-sy;%(TMMZB;&OI&#DBn%lCn>a8?>x>xQS zo?Ui3KJsy!OVO!097kZAdvdkiK2NSmZ?AfvvxRO}4s}bTlErk=#+P|&w6!kcYbpub zgR^PxI=t6hjLLa{^)QBLIv8cZnC8t-YRsHAtd3`4l)ALLfzk%<-(4xv)tipHub8=b zF!9K&Jr|p@eD>whEMUQs6sgQwpH*|?cPn5a4W;)}(zf7Et@gQcOlWcH?W!x~nT|wt zfkSrnt`!$)cdbDvI;mtfRoON}*mu@nubkWDZ1ky%x4G3f@H36utq&S?np53Nl^wj< ze32(neF3`5)Z?J3{Yi_3ENU!R`(b*yZqs$t&tSdR79rXSOWLE_t6LUTR*QyM*OHA3 zfi|NK`uN*YuB)wgYtEvi#xixzHqP;_(+@+%R%0o^?-Q$vN^%EI1qHqJo4({M)v~Ea zGQraE7&9r1?o#?hwqK2E?S*#T;Dc!5INRB)H?Ts-116nOPPuyfb8vKX1g9YDu1e&@ z5V>NyJV2YBoaR_v8LO0?SX_VXJ_6Cyc^?t}vJn2cghC(YBX0ih^Y2A}8T|8IO-I<7 z5ufR?Q6&(uWuHx6%g7Adb9Rw%-dTyeVJ@P+Jk43KenjqQnY38v)y4*x&k> z2DGcw9A2qK;~1-OIk<{)=+204^m48BT6@`at>#0kHViT8?xs?CQzjhCh}T^5DOPVB z<%#E|UTnp&ADQtwzU_6<($(AdV@*(I&w$l7AxSY6li*~o|vQ*Np>jUN)#P`fnm zShc``#zqG$JZikCF|)FDb>Vr)VvSt9N<4Axh!$Agz0Qb@x(4ZTmJ_{toqDY1o7c8h z4h0y{Lu@&Dmsm>cxOP+8YGtcCxP-B_2$Yg2j0+u%Jk4FjnI*-xPnNYqEIm?Cak-;4 zjos>rQwpdXH=EwWi+Cp58to{_9K9f@B(N-w7$&GV?uP-{wmJ5tm;~Bn?OR>4s|6J( znu8+@lvxGRR{Di%kUh(zucan(ZCbL6+RbZkP?avG8q~$8F>^q(!xBj}NXc>iL^|qq zv$35Chl)=cgD!BpcGA5YLLDP8jVxY7(L9G=43gn_MOIjZVs5IEyYg$eEx^rE+7@B4 z26PJWF$E6dvX3O2tE|2~gF;8t+`+}7xxsXEs{_?y6{8cmn}<_te?m19htb%XsArwi+(F&+T$f{Q#zcN62RM~*0{^73a9&muQdI-ayK zRF)nrH{p0i6cl!cN#9*H^)ceN^e$T+yxOA}g_P_Ox~Bb822g%PP|OMvBI&)@NG+70 zZNB^BJ@?sEl9&n@0y@PMP;uxs68gnt3zmjqUt~p{DE5=691|O-(J9;MCNy_bILFeT zHxCGd+)3~}Nn%ky6E_}Je#EcZm3@D7#l)abw3|7O;tJyOB5tTkyBB(IYkgX5v4#0) z?-6k|QWc2xY`Nnnz8>f_DTaNTCudM$6mg#diX+Dp#Eym-Gmkd7M!V{TlJlz_M)a~V z@@6_9q9a<;_ukd#)5=`C3{jCUOF<5!K`5ZQYn7s?Ub%!gblPatafhstk*}I@a>Q*+ z+)UydN1=?Gn5-Twd+FtU#n%t2W`yZ%`JVASdGU;4A6cW2Lobrb2ealUY%K)ys;Q>u zKBoCet`WW^q@wJ(N6c{vM(N!@Xt(4^K8SxL%O-@$BF;3RFxoIU!0b-rvlFx$TZOJ7 zrfn95>SwbuvLt81k}RQt-)RayiAy1^cgp-8JZY4cF9r!JI35~>sH2|LoV!3P*)tol znyT#GSKfQ&9p_bEavMqyIHSj5^NQP0X=zW1v`5yOgiDPUg>q(q4bjOSY<;h<>t8!i zBUJv(Tb^WJq;3tL7b*1#oTMzk9D_;pBdJ@hEW+5ajVO;gqRVfDqY%@n zj7+R?Mzom3edgO-99#i7dxh>k#B?n#1-9+{h3QUlx6eb8p4yZwLT<$JafMm6X)G2S zBnPaNO%_c$m!d?tLYLr^Gg@^Jcf$wDOXpFCH#76BLuXNqm{UweffKktO43XQY4;YB zb6_tm)-K*cl_Kh-+pu6PGQt^Yl-)3aQSdchteHwlE%>PyHA?52l8+F_(3X@K5`2jl z(Mf7r>BSZZza=MluPYyEpf}9trfM}2=bl4tn*vWZbNb!!ElXx*RrOi7MAD>+uN4&Hf3yX6jOY~Dm|?9%aO zoI9;9wDT1O?vy2Zgh5)n>cEV|{H;;McqrJQzMXwZiY{THF(_7Sy9YJn<2v={3}a%m zv<}T-)&^GXxmc`aQd50-GbD2tQ+0r6Wq@i8(q-Mb#K67|3w{G)-P!~=Daa`T%cIv6! z$n>FF3RDsnGg={{TPH-TxpT>)m{m)};50^@tc@N*g7FTP8H)=mI^?puP29)O zwACPequ>UN5W=}3#8=6Izj!F=RvW^yNRAl{j9T9@4?OFfA2$)jdnRk+LUzwI2I=36 zogIb@G3IM^QqlB94FH40k^P9iB0PorMwjnn{V+=WES8I%9$Ju#v#M!|()5CJhi!9;ys2(sYH}u3X^PN__Xp z;p0aZp--CfawE+p#i!hRlaX2-k0Vv>OiwC(@wDz9j_45SEZoZ5H(8TpEI$pTB~OHA zpHlA~LD>^!MDbmRv>2fYKX?lF!f6{uD2sf-_U0#s(HX>}a-G&9PW+r=8+_u>dvi2C ze56%P%_e>K%yNPVT^DyaQYMv2%WrhS73_qwLbs+b8*d!To5wX!(cv0V;tuO+QSnWR z;Ep((<3eR>S_K#~sV__cN8S3Y|P880OoywpoR#*yaEfWPKc~D$t5xAWJJiUlSwcZr49oFl|o#t=Kxnx53K0)gi>r4<%g@$C`{0P!W)mNjMu7%);>j%t9D zM0`mFbeeS~@n;ungJ8J(=eG|G2+>agy!3>+LcIi*1vt8#Y4k;;mG)(cn_}Es%p$a( zN>7<*6hqNOap4p}HkE3H$Wd^h@Fr#@B*D{IWO!{clBrg-{4?t&q+VMRaI$K=jfp1iAWTC!9_$B>aU&^-ye*}k<1hADo{ty%h*XncI;ceSV0*omrZs9 z#VQPeITwoC)&~2=P`8A-0NAfLNn=lH?$EO%0;S5G3e8(Gy)uZ^%_lCV)uYrmGIF(s zl|9#cHYXhn45&M^4BjEA_}@Ajcns_zOS{2XRL7KXUaT4%y{H@QizO+U65(7Xo?+oR z%x1t`DGU~Eo$kt4rUl+a&s2D{+I(xC+n(;-p}8e>`RxmG+1gq$@-jTL&GN%n)N1n< zLQJK3KDB|xnyziSvT=>trMsG`V+Dy>DT2B$w;V1hi$+$_tyec{N_hTA9d1@7Slx#7 z(Au%H&1py~BrzW7gBzpOrK1N62d!Qn^s?)fRN*5zHIhdi3zgDE1i~&smfca=ZPTPs zqmkb9MX_?$)~ZJKlJ&}$QV!^;Y^S?1YE;j!b4YN&3PJP@RjTaradys0WDIl`ieWh@WO2XVd9!0CEiETH*jozDuUP=mO zD%O#O-MY5pCOe|FUGY1J6Duf*wuZ}dxXQfXSw}8q8-S|5jO7W_eDRbeEuw`uiHZn%y}5yfR_1 zLe=Al@dY$hS(Bsf8R2~?5$$QHuNeh#3&g}dOYT)xBOO_1&OXy$Ok>YF^WL3e8c`!S zqYFHEpzQLrD~iWSN||?Dok?_aM#}M_?5b2s3D*WL>YQVna?lCx@<3d?GZ2g_s$zsu z7}X8e+~gup07!^An0bnziG%JH^(Uqfi?SAKeOqaXCDpw9uCRPv52LuMqQiDYXvI>e zA9&AF!%|W-m%FLe6!<}a_qLq~orbO^n6f9hXSi3e`;p-X$m7XrW*yYeFLNr5wAlB} zDlCjey7E~EUof{?V$k`CZ|;*?L#RMJ78@G0$dA9wiR*v06#lfzLne@u{Lk#+B32O+ zmWFE(ah6Z$7G&(~FSO{zc{9+3DeGwbL9udZO&>?eM~tAuZN6kJ^Ro`7qYb*Cy(Wrz z8DJlLFw+SOD7@5Jzj+op@>o_IuN^#+`Tw@V_R=`Os%viHDeBa@O*}@{=Tn4n*WOB)dZv2Wh?sIMRlfSYb9{(tDB}+< z7{k<`iX^lPkBFeKvxy^jP5CabvAQn%DUmIq3`?Lk2sxKk_Ue|9(6e%wu&I@ceD8~anHO%F_uEL9@zL9axv!um7KI&-> zI{9din39dH@`?|E(3v2_5hp^47DTEbuO+qiop}NTo`-@n72v*e@e)NJVTRTkdu6$j z5}$)23{0{S2xz@|<}4AW2fEE1_1uT&>ohGLXpZKmqn54Fiqs3a^jc*Df=t}$2^xfU zDAS;Nw#LtJIcsaE*(-{C_OohKdsc%{9OV4hUgNC0m$9RE-ggIE!15s;)ZVmMt9){t zOm)>0uqr($`-nLJW??CEwssqrHs#XOvwz=ads2r1VxEmCK~dZBBOdwU2V~ zbG0gMX{a@e^ZEzrhv&hKup3%hq$?LB@>MCB2_r5?CL#4Z*xos7-h z*`UvE@o9A{rWI2QB-e9Dy3A0!IJ0r)!IB#*Y!W*K+`+9%w&FXLTbpK`F*#s4)|lNX z;FVSk(M{(mqHJfC*uO%j0W?c)Rqbq!91dDlsXOua~R3g*f}<)T=rEsp)xlA?oO;HipO7fa?zsJ&Ed9E5wFUH!ZSY2K$exzSvh4 z^I76NS%-=ZG|U!2iy|cB%xyx!Q3aN8NDpSx@zjBcl{BNNPJ}*5kzu2cgb`k+VkIfl z#L2{wK#~P@51j^f=}liNaHXqF&59=#TN~12R}jsx^hd`O5=R^z;Z#74JiMZyG6@ng z#YF9ml7=AE(}A%eM-(7XMFZUvsI%k9Tuy7EZjy6{zVXV6M_Nrvd4U9^21W8k8iMsh zm6s}XOj0}!i%P~GG^$b=q?;=eN}17^3yeb&0)gG*K86y&QSwWds57OehVR)e!6&Q(GB)~|JSon2bC^Z5tT827LreNWy3WjW}$Q%F=qo zcg%{@5Yva8FpFCk4`d23D5K*+TENJ}u!$5ISay>BMY(6bON3>8SDCF<(<22wepN;2 zzGe%E+9b_8Olu5uZ1Th-PlZ@CGsE8j@DZkZM5-Y8pCng>W<&7T*p|htFuD|y?-OKF z)OqB&k>u$OG05qN-_Ei;MGh5!Fxnwe%}3u~(dBNn)6-Ti`x?G6rg0~3Nl$91M#B=D z+9CLxgq33#+gfYMQq77`qrl7fWt4nihXOaTFC?(>#}sKKf$ls%5>W!-kk3+3q=N_K zzA*TsGG{5bXKMJ+e)B>khcS&^*n)Jq1->OUmTv~slmI_qzB{7>BRF-M59 z3@j!H`<5Ft6lkv0CqWaZ$B&AHSq1R3vJ$X~@T{`ZRv#Z05=V>)p?9@A!f79TO2TX> zWRlXz*g>p<0uB}QKoZkZAE>E8ls;Lrv~nD)t;T?%n9kzb@O4P@d!AJ8A3fQf`gFDV zJi+8~MI^2au*yq(zAPl8#F65QC{#xpS)@@9P^Z#2zDhpn7L7}PUhzpOT6w56u8OWA z2u+tVX?b(hNHs|T-baOmA0tatZk}TC6&ptuGf%piVIFThmZF3fA9(Pod6Ly2nJhT4 z=<-OQJ)-Ce0(-+$>yNP5sCf#s=h|Tp={VfKAz})lc}%mIp9hXD-at07+um1>fO^$L zF>bqhZJQf>vdW~W2a8(FbQ?#387LvD-$^2z)0%r1kV#w@)O?<3T@#^GdAe}NoK{Jf zwll3%y}F~?m9n=^B>e<9g|A~Baxs-v>w8yQyC6xCLfTlg8q4bvTf$#*5Nz%aZqu1Y zOV>M|wsM{YVQeQA;elnUyirtE_jgAq;d-vA)0up=FEqrNPdE-)jKY|t>iAtw;OA}I z(S7ZUB#o}D;oJ#hP!o-!-;Tl^alr60YX-@65N@C^mga8|&!n?{bk^@piDBov1}deL z^>Ls`+wL-hq&k=^5n`ChQ9g7rXyd7Cp$&9)9%@on zMvX$2q=av&+f!t5#EU4>FKOhYshG$b?95am+%)wz*=>)zeCB3@Plg5jdX|Z;rmuK* zw-RMsXHTlV-f{VeSUsXQO`v_NTJ|J99vB@8(2-@4!z0NlqX~*AJ`_b9O$vgaEVFO1 zHwfE*Os0CoJla}U6NGOW;C(Qca&;15c*{K7aOTM#DO2v1yOcTX$lCQYtS7;ctb9Fu z4v%~qylL#hRk384FlCf@XUJYCFwA0hmWpZ%JmSdWVWyJ!v@x?tv~i9;#fac|KErUl z4v3;jErw(SBnkS}_cun?&FtG;G%Y0fh{KC0?(9CfzdV?^jfJHcY;>QdCN$ z(-Ru-N)T|XUmHP98MZ9%k9JPB-yZK-XYUi(c_t<@ z_-#pz$`m@sG6`xAp^@a`Tt*RvZTHhVnV&dm*JDuiO;~AEl$KcxA%#j(73J2{zAgaz zK3_w)YsHsJ#)CYz^)hsKbn; zi!ixKN4!*vnv#(!d#8NXxUREoq2jP^W;la;Qm=ahlBl7j+BvD%?&>z~XK!n(PaJrd zlKCWX$s>u4B#AghjF<%}aMHJ>fkqNpKv5@{n-z%4NtSF#sOpH~M3P6lgw+KHroOeq z6K!^r^^idd6-M>;JhUGh4)KMmY?jjb81~cV9(SpwvE;25b*EV~=8v6sCUNrAgB`^D z!Ebh38Bryi^c$iIi2tDy>vWU%AHRO-TrZI=9mI6mmzAj(ggZ1^qS8RC7kgTIFJ&td z>lm#ATrTA0Md0VW!L{op0D@PSkeSr2wE0$hGiC&Tr*g0;7=Bz7EH8_Vq2&-wmFrh zq&3{kUNpQzRti}b2cczcMDnq{v1zAXt?5->xUJ5j{M6(+x0q>H1HRaVz8BK+XweFK z;-O;BZN9XRKUQNkoKWpATM;MEa^Zbzp@M8U_jgdu zth*MZG$%ziEuV0xtb?Tj3W2=Ji?du#uC})IT1x!Jjb#Qwc5f}CCZwrj5ws2?Q&zNv zwwxbbs+mr&b&$@jtSh%}6_Vz?x~LLB2(vin%JqlCKLwsKEqMO=Q`jcUJ|t|0IwCaF zn3|``(Hdfh%(s|~Q>D4-PilPIYf4)q?@aM%itNuC`9CL5D{9cM)SUS2dosCOxJO0a zn{iEAZe=p{Q(d~PwJcPm`7tiOL*X$AaV;$CBa258M%dZrIUh_)VrGhB)-uJ%jVuEU z;+v0*DBrC-Ctgc;DN#V8S))pvA2ojS*+#bIeJjhZuG=Z%+b)sQlvbIh|4NOx};Ir?sst=CpCS~&9I&HTNtmV8a zI>Qo4XOdD_Q4$6e89<`AqBg{=W8(=Q21IeNmXbbcWUxN9KIoiqHGzvx?!r_Yu>IRE zA+;|M;eMNG`L*alf+>`s!Em#P)9$3DFGQOPiHM7yO3URtMaPpAhMzdHI`WYd7i@8K zXU4%YgGrKrN3|>(=Up0P$$s$DXER&IF=25_B!fP#!P1pHCgQ8GMaPq#n9Qj9RCS{g zehi`%NN2^7CH$0X1thU?ES9basTMJ2B#(>@4G>wuL0buKSkOBT)Tf0-o<1uDa7Gqs z#Rhb$lMK64ZAXO1Z8ZvfWn4YUvJp9XQfx6_J2~osXh_wFI4awSO56thV|?yLQec%q zybQwp{eyuEiTDCFbLyNi8*SwCWXiF)`xOz7DI7QPUL|3iQKa#rujZs%Qoazb=3SfX%7!Vttsx9++Pu^OL zF!=dqH7TMqZz($@zj?8)Mlvnw=M=4haqlERp@~^(?hIx&3=rOLKLv5^uT) zap*w}$8b^dZ-G0V9s@yDwl^-fJ6lzHg&B&_bw&_~RWj=LBUkML50NY=OQ*LJIC2rk zO{?Z;Jn<10PU2FR&4+dw zGvLUj>=4qJFtVAk*u=3Z5z9Noj-fUv)S-0qjJ>@95u)#G6v?^SUE4axMWniZPkN1O zsGwX=3v+MKb{w0gM?@~i=z)}7VYLoTqlC~KWo1)3^TK)i+F z1g%ICt7{raWj^azk+FB#(ZbU|I|`RwI~hylOn|`jZiMlCbquZRbahVdx}`vtj1Ljg zkZHPnCc%=AId`mOz)O!U8&>r<(>O6VcIIylMXq^D-d4yqCNS*O_0x~GQL0|180|}X z)Q_1uASlFFf&U+QS18HCVexChsQRB=?(uR(^bBpF_ItSnsMS2gaS|;xW{pUwSbiZM zJC-$PjQC0>Akm&aXwp@aKJ?C(k?qVU3uhvp`5QiLgP#T|3*vZcLgsxLU7PbN^1Yej zT4CT+8e@5m3lLXKdAC;>UAegK^@VU!<=xsb2qf@Fo{i4fyhsvZ9zDy$!YueWnCTf5 ze0imxC1g0G+>$7Z4h(3&mYpmvMpM&RZX&T1l_O)IV47a|a%Ryt7Ly>ml%WJruUrP@ zju?e4wK0d$F77gFu^f1&(NdZ*?vvHD)7nqf&s5DPoLtoKl#L@CeKF+5i}G%rVE35G zne*?my1G+p^HnoGHWSC65Q-4MRfvkfL%ULs1tr=xsbHLIq|O_5;}jpJ`e&z=_}L2p zKMy~;OjzZlrreB8qBh}4Oc%M88aVhY(@?S`k zvfINvgk|TYMy}t)=fk{HQ$;0Idx{Xq@yC_qtR)y3)Z*ek>Ui=o9!CvnzViK7L2!PV1t%lLk zOUfq0hK0Y0^6(aD;DiM(Q2b2+M~wsD7#i%(|C@%iPCgW&99T{oO#B{ zWO{V07V43TpC{*~Iz?rtN!=&hrk_XlAu(P($^=t!6m%3GEGQ8WHC1)K%jYg{8GFL6 z#!kx~8_7_O`hh3lr_Zh-Mkw3mnqnGT=UENCW)6v?=C6wmj1-bZ@?R1`!>961P#@5Y zKNwku=1WP6DEGp-)wZ_wsmV@r)M>!KI*mF?Y6mbI({bwB^J7=2pWYlr8R2-a`0>`2 zo-ob|3k@vxrCv&8q5?@alCsD?J~8|^Q60v(kY$KrpvFP|u@2I&eO&Lqe$^eJGx(J% zMJswy>ru^N^ilUSTow*?U6)xkR;IPF**P+4(A*V3kTES+mGY#RkT}WV%LZ7-xVV{R zMNVGS7ew;sT+70(+XlGlkyb7{om%#b(PH;4W}0)3DBfE!-Z{3kOqCsWal=IlI-%)i z`3~H1Z6|QzDGE6qsYKDb&8*1ROmw5cxI*cC9tqC`t8?elpu4%5g~v}@#W__fXbbZOjqgDF`CAlU8z+(tET>Pb{c*Otv#g=X#M>yRZW#QB_L=h+Z7Mv8ts! z@VNR}xz379U|EAw#)}t4)=)Y$R{}OI7JN4zjVmm5qO#1tK{iaa9M5+ymTeW4t;&Ag zbTW}0FRU)$)Dw2x_e-aJ$79{NRtnx^I9E?o2=;_9hb%2hl>;LS*CX6I>r$Es>#Wla zD7$4He4jQ%#&R>wUSolFUe!z%l?uGGor%4&VYrW4dUrpe??+Tl#6G2=!Cq1W#MS*I zN=%9z6lw-GG^sgd(iH_~z`B77vk@P_JJ6RnTkyXQ8)8v$u(((Q1PK}?7^XgBpG+o@ z`De~U5Xk0wYT6Kb$G@+7hv7jE1Mkb;{kM)ea@x9uK-n;OqV{e_ZjNjAS6ZylD$y_T zf(ICr=9v#1l=E{qQ;4CDyot1GIWoZ%Bxz((6Sr)2}7=jxpVhs}YzR zD}tI;5uk`&nTd2wdy!(Rza5oCJNhFsZDAOIQi|z9@6ig1DEupEW#?M0ljgJdB8o96 zU!aq)xde&vVQnUSrg~o{v@2hehC*3JK5^#K(Z|P$h`)T*le`!bXfTPiB~>Er^UUaO z&I`gp4PvA#4Yvd0z=sq7mu_D(*-oA=CguJkBw8P!@PorU;(*buRcrLmKQ~-PI-~O* zO3ya6ojn&0JaL43w8`t|530$kZ4F^i2;2ZCuavZ}sz zrpy)?kXe>9#fOiANUd5w9we}mNc-CC4Kq}pG}{#()39Du3NV}_tdj|{$l}kuQ4(n; zp<&W&JYvFFXVlz$ROxIQ1}YbVp>+*WZ+GnwVH68flcz(v#1UQHO-PWj0;nb)2yEiW z@E$xcW)+RP3^<}dutLRIGfatjvz(dI9g2yB@n>32=5a2xg2?0#fzWZ11%@YCqZ&m? z%6vXA*@%dCYw&kRmsGmYq2h??2?`Ex%V5IRvXI@)KL->zEW*g~_li4XWH^4@$)sZL zVsykSlR7@)dgF_F=3~ovvc5~B7tsA45;TXZnrj+<_S19m>u0ari77G{g9xN=PkB=n^`74Mo zaVsa|$3&@XNR#ghK<|Y`$s?%sBleSiQy1FJJSODDcgtai2i3b#&?i;cMn%rzH7wnv z`2%SU3&nfZ{XuyZP8JT6AB-!HhvGX@(j$w+kg!%6gu%L@<@}Sp2`rHmUXZXh#rBqB zbIC8xJ!^RhCJ#Bp*&VLccCI6_zI2#T127Ix=Em@DNUIvA>?AZ#Zx)9KFCXatKQ)t5sUv^S#`(Xqj(i?Fz2xMvU1og$qlRyq1&fg4GbH zHggtKgzq%6=DFND3cA{>BJX_Mowd*k(h7-%F{C9CZHq%YOPk)E*HBxsx4ETu_F%+0 zhRp?cOcOXB9b&=J9y|xNWA<6P+&3)9B7_C5+jhF_Jv9h9x44MJoHt1@68cc9ix3(~$qnOio&{nQXnMv+; zOBFOq;_G!>(XotOiH4B7-I#LGcPML^9N!9Vh&uCxl&0bx41`_Iz3V5dXl1)m*7`Pu zZjmZcNK|4GK%q~KW-P_3D-AN4^-BwulORK*bjMvi$&m7Ac-bvVLXJWv27(GfrxW&YgVdKRaK&%_W z$AMHR@UnFHez;I5`&NXXA6~TSC1z3JCIu=-i3gFA#0xl-LlK%D_)uF`C!*WC3S}pZ zrsP@{QM)WAcob-f!m_7X6RG@zM_-8ZXzE-|&LJ#5l;sS7KyGai_kajrcnN6$yVQSV^k<0>MBFxKDL>hiDY+nGW$#+OdzP5SI`(sYal zee>;Ftju#(mbJ7X@ET0~lz6fZ9V=>pFlW9s!mumVvZyfhiV1-5!NFe^)*H%NMi5Yl zyfEoT(th$)hB=9bc`FVD z1G^_rk%t?PG44#`r_5OSuRcuu$+Z)!r7e|j+$24#n|2sb=}_JUrLzrZk;v)vwJ*D$ zVp3z(He9O`mkRVG@fK;|M1>wSi6h0BZ9$m4J~zo*0Tp5i%YRH7>48CVzLp>wY&7u5y1^# z%OBq3Vx;oc+)q`}#W(fkbR;aVbFHZqP1|FJWdv*+L~Ay1@ZnV?p;%*?zRH`gSF$G9 z7u?IX=#gu2XO)r|G-K$+&?eqz7~lmgQ!+k(u0S}~~$4uQVvM+Hwx z>~MBX8b+N`>C9^t-a6p@N{2G0wtJZ%!Vx%b;)l?KkSb~1qsJ^8(Yf1_j;=#siPBt} z>!5Reu(=3;X$Fe2vRk0`wI`d?hU1i{Rxpf=Fmn3%ygQ-NC?Q+U2S$QdLt4V6^q@uT zw6{f$x2tA^v6|~MJaYD%hqX*0H1FAUrx~}v-BCR>AyS%!93mi@tmq{Ub%;dP3zm?! z8Ar&v!_!4Sbe)$*=$&!aUG&=8tm$=OCf#miFSU`Cc5~^k3)$1??!}QPigN9X#1$xz zN1_Ga3c!dU-J09W5l%-eA+{4Z4Y?*u;kZH2oseM+w-Y>yB?`|FNr#8g@o^g!NqHVF zD&Z)r6AA`1eT_J>H%M?6ScV0J`{fDzP|F4y9wrI3Wx=AOe3W31E>}}scx8o5U8qL< z+O)CC)G1eJVPKDmX~T{@`ENRfk~pJ#OkuYLG$&CK8@!c7e0zd|q6%q&UWLP67ts`W z-r93GQR@rQ0*QXzs+XA+Xqkx+@n#Zwkd+Z8yp- zy#q@?*x^H}Z%;J5f=pO~b?z(<{#V}0=X~GJwp832P5otLB+{Y^L>ht&9snSENorf? zc{8|=oRpm|BfXjQa$<0aN*nb0rra^)&ooS z_p`g6Mu~)^_3=JrJY;HPyb|mVE`c&Yx}$kLBZP_avXtxcRR_Vjrdu8)^s4pngylCz zEdy4QJqEKnYC_RUH z3T01_o&qjkIzFrg4X*>;D>d{>-dx~nsirP^My!KLRlvWKlN5in=z_ocoPGSxW z7#K;1dKH3^9}1%n4*^G;=YaLes<@WYCRDD!~U^=(WaiTZGlaDUX7lN8?YH{t7!_7Rs!zVc~oA1Q@ z_&Z{USf;LWuvVANj<8*pKT3AHn?pKh>}Je;Aql zPwfBT?%v(a>aL?sQ(W{D5}FOXlb>VWIy+sv|;&{g&g z!Im);OtKc+7sNPE1aaH6$=%i1gPBQD=rvw2GNo0RX%W0E;_y#mom+9)H_BW>d6q`d z+Ri!K(V;EN(obegQPj@bz>J}LxDpiCIk%0Bd}p3CyIZ+bwd>Jcl|t@V-AwQ}aH|FH zPLDbTI#vcEp@fswAF9o0+?3>Zow||MOMEbyA7a4kp7YeW_S?8AJgRnfw2{fL}y|jPFNpZbPP3h;u7TOSjxY(~k#eG!=-jI6xV5*RW+}v*pPg zGQmkTt*&y#a68J4S9MPjS|3kSN{!J_SsNB8ePkIpGF9^wuiKld`Q#93j z_hCVXB~yzsw-A*DG*ef8me?`44cnJ8osyyS;^by>wjE0C=? zjy_F@lm<60r)%j|iX~aklmmNZbmx3y3>Da6Vr5yENP{;anNQVx+s^4i_CBZQuNP{S zW~*Mn#JM3}+;6e^rQ8JB$3Uyy=i4a-EpF#mBpZzT%o`zfs!`UQ+94~eGtg&r>2~@` zZj3`9$>YMhv|1|^l9G!az^X9$Y*@u7cdJ8ITdrHEX7-MHAcU22mu*;iKyIttbRB}z z8%pA9jRvcWLuL0Jjqz*}Tj{)%>T3>@b$y9muU3nd(|9x+m4%pk5i31yo`NUlqfjYo*7}gzd0CGLoH13YBAZn0NzBv3J7dXJ zTSEnPaW~9XT&DrR_(0ey1`gkQHn2_5rjRntx7ZEKzV(e@ER>qq!>lZldCpV}CmSJT z+8fB0R7#3Gas*kb=WDqG7e&Ck2}!hw*=SWCv?W1{nN^*xN4Q=pdZ^XNOVgDR&1Bmh zxr9CwkShbZ+cX%-bj7+^uXh37d+n71-4?pUFRBO*am{Zs=2|?L6l-!`s)X%fd1IlC zMAM8mvPFHCax>hxC8rjL0~8E-Lhxw4Qg$}dpH%Ec%jbBca`&+|bWYJ)LpwS|^~K|e zxDRW0MLJ^kQrF4mT{#5gQlRcX8a5%6jn>F|@zF+Z%N&?@^-FoDJD|NGypomIIjXqb zlzHD0B({aku4M0Ce5ez7?IV9B9H+b7(ll)rwNi4fGTonZv5N z2fCdIqnBlhs#L~dwJUMugP$SuOH zZfLPiODaJ^Y}VHEdgz_)_X4#U*dznK<8Lr&OLYfxMv5Hdr*A;Grq#=!csPR1l+HQU zy+-kZ3!<=<789>vq-CAI0wgaFPHNDUu3~%Iqi7vH)@?19xFPC&ch=2BmWZzHap<#^ zlnTjjeR>nd+(@K(Rc%t7w#8+Z_SL)T!Xmu23b7!f%;PH23XS-SG@|D+@GzJ+iuL$q zrQ6dxdkmTz&k{5Ud^Ygy>lcbMkz(yUyqMVgt3ku%m3W_GP;2GfuLc7HTor2$>Abeo zJ%nV_G~UfM*7i`qmpgnxj^^_uT^^EL7(;rmG&@XU8+Pnc!5z}9F@mK=CXGpqPc6%_ z2V@PEas;CrU2{EM&diqe?CZo~8t(O7yB7hERXHmpChl!>NTsz?dmW_iNM8_ai+NYI zaD-`lL3M--;@PF-vHJ4&hYgQ|?CDTSMwt_$ED|YfOzjKI7Bg|`t*x1~jaqRlj~@cM z3y)Za+c@i=V9A4HE|;G{F>z}ilMf%7Cn^Q+Pt-*R=*^q@*J1Dg2^@EN7Q`vdwZt# zUrDiZ0FgJSOmgcgwIwD)yTWtpb4{aFPCDrudvSKL)eTx(9<3Ux>_opB6sS_)a zwSH@n>g+Vu_2GKx96fi>EKR6Iit3w=Wu2$SW+`e@)7O@wTC-564TV!tJJub7`)jkc z#(Qvy9$jfop&eE?*hCdgTE2=!+#2H`#KGLmS$5&+Pj`4TLQA`$(;f=fCnhWxoWtx- zrohyc+P>CS!F5DY`wj75&T-83XGwk7EGGt(i;lM1B&Ax@s<(Iu(^6>;FQYk$lfwHL zSbLZxXu_G7aKXa!vqF@wy%1Sbr3%1=F2&hB1Ql)T^9RjU)e*8YrzO+mgB{Y}XIDy@ z9-cUcwF4bs%nz@`<+tG0QMnvZt)*8SJQoAPPIEDC&}c3~T$fpfZw1-dh(U$c!w5n( zz_SUNUkA2~&z9~>mGiSNokpzdzKTQLzP=N#@ovO9)tik?8sOhF>_gZ}POx>C2UOk6 z4k?CR@-Lq$rf6J<8b-Dp$2U%PB(9Zc-ikUnAD>{_c{5jwFm;F7%?-nIM!FA;kcsho zSAN{)wVUY{*G3e%T@Ybh(QV2bcGlRcr*uMi(w4R64An>NHzEi|h3(_Ko6`26j{2{B z5Z*%B*Js_4Ov{zCY@1HTyfYk}Er)WZ$cCY-&lO}uT%u@JQhK4ivOBYSoj!{+!^Pg$ zNvuCbci!d+wNDnZl89>Gki)Pp1A(`(+v^R4z-x&Tf#Xk{#k>t!qj|X{^kgoA@!HJH z6*sC5Q-(Z~8`{3HvuoWaIL9-Uri8GhR><0O1Fkw_oXj9&I<>JH7G!+tTd}s|$z9J6TNTofw>yoSuRV4jEL6u?5wj|LyB<24rS&t0 z#HyD%%RcV#nI2Ql#-B>x5XT`@la9A#kcCUu4h*pFpHU9)Qx3u86qj@279>Kko12z3 zl^}x>&fMl*HVTv5gK4)btYWY-a!-$uz4fH`FMD0BwW#S4(2n4RO{>ov1{x7eu?cBs z4(nMr(BXKow`S_aUu4mk8W1BT=N-4OZ(FKccb4a5LnL&pQ{iaIy@-aOc--Cz=FG97 z+{1RSo)G$1$mp%=&Wwm~A|R;TmrL0sP#*5S&>nTw;^`l?mIdB#0}J8IW==UCT<+T- zhV|qdNgK&>IUCL$?G27J`-sH|Tby7}*;hhR>wGhCM=jNe&f+yQv!8l-jBkt-puos_ z$8TdCtQ6!q#B1H&^tvS6(M91nYTU=-uvC~dj^P2_<~gwanKu)8);k_p?ZwX?-mzji zaO6Xot+q-wufrsY=>+q!PR>hAyppL^%;%x)RVJBrY1dXtlZBsMh)Th__3`%(?{wm| z3BxqZEgVAgGd_P+g3P(LQDV%g^@zp1>a+<}Ek5C%SU5vV3xjy#bDHV~b>!?;%-eEi zmzhe?NER&e6ngF&BYPu8Zh}jX2IodLE4s||79?Fgnn4RQu>&=;(~8-70V8TY`emI+ z^~$%VcQ%pdVCK5luXjUep-atW>%`0%FNM;~mPGTcdLHoS$@3VSZY`k->a1pl>dd?m zJs_%|DL7`vEHOi~GcKc}qm+Ko#_G&ttqd96vR%h(DRAF*b~;aGitflpkY_;+VYRt% zC4EqW+qrv|iAS6}dw7HMOl{Dta;r0pPde%7+?%_ZI`%7=Ah%-#bx2$7m(O9!WH&a! zp}vH6G)2Z#MycN)UvRLx6>|*@s*#+=t8j%|0?AuQa9OWf!A%w`;?#2{9Od;?zq?Wf zyzXzSKKhA}V#65OQTFrEA4|#4xtzYPnC_?qMq6cjuGVI$gRW?dUrK6AURc&s79Ne1 zCL^;1e8pp1j#Xf7_Ki;73aM7MDQBStbqp10i`WuDRtmNud&zj~$`1{rmbT$ouG-pT zsq~p6tan*iL>+*ul4TWdGnrKm9${g|Rt1_CsrJ1Wx476^q*lnh8tHkxwgQ<_px#tz zleyUv%4JiTEC<3%jO8gaThWrH9M^|KVfk%EWJ=zNA=g%I9SAOjXf?221jk#^r&c_h z+hkmMDXiy1wQV=3L5MTcbw2UU2hX@=94RBWo#>VEYqGD_wl1Kp8sRL2GlnwFaecd? zD%ERYVhs+&ta9Mmw_Gm+G-2knz2HUD&rPLR{Q-KPX(VQU8$-%#1=QRF|JI$%+9GU12aa%F+&YyGam|dS1LN4)wzcEH(-kD zg7xsW+Nig&Yn8^@<>zE|0hzN7s=IespLFfXh0~7E zH#!9a!j6rJV&yjxG%*@oTXec=E{Qj_0Z{h|OhUI92XYr$hTQC7@_E`In`+G7FWRPD z%j}VrT2*WI(R?>^4_hh2hMz~}wGwEjXxf?|ORMQ!I83p0%oll?N!qTx(#GAnoI?sk zhft(zbw>p{-&k()BJ}2n#p{ytx+X8QcHZm9BJ?=Dmlj=vOBS`xEPK~;por2A-m}OH zuS{I`5Lq3b(PuK?ri*<)SU*Ux1dbuCFBIfx@IOqFM?47XRq zZW<7CnKvsN*|b@nz#-(?(^_!8wc<#t?PGKXudp}}9o5>c)Q#R{Q9GRLZDq_>>0rl= za^aGOhdWu&ZnEU9-7~!;TN>sJHgp|qCvH15Q)xaR?{+Ti8yOU01m)=FOIoO6GBh)3 z89J@>&LgI4+^2svRt2D}!cSnf5;zds!81h>2`Y{;vNb9~nSER^^BTo1$~U`JR(3=r zFKaqoZw!wRTN(K(e z;g<#S92Ys6L8-jmH)~wmdufi%xZjdV+iygEvz>sOH?*&8JEG;q$1+iAEv}g~vi8=i z-R&6_qb)p66tL~|?B@8!yD}@n6pxg;3$t@{+GwI(7N-)2DYcTOcD6?8eOV@YX1vF8 z?QqQKE5&&b!S{IWu`SqwmZv);+S#|7wrG6bb#^_w&VgnYg-5Q#QS8y8wtAL6LiFs` z`5l6F(5iy+JBn6_fWo9=^P0NSHpZKo&D`z51xPL}?B{<+Wty4E|*B;#Mn6vs5_r3dIcGIwAkoXhskll zMr2)e4FQUh=}awQO#$~gQ7|KWaHg z6(rT|r3T=tW`Id98CHvVA(?HIgjO=))JWIvTQ0hhLw9sXoLj4xVoR{wqXS~v#i3|e z>`bQCC^Ms^uCXG4H^EAnttL7SS%XWi+-BI^>65c9ju7@fjnFpf+`>3YqU6G#x0cA= zm@`a5Nc*k8_Oj~a9aP*^X;@q(FF$cv*j~f@_r4ei_)o1&uTtjwE zmImR%JW3*ni3=P@jXn)13w+ZK4`2e__MVw`>Yv`lceW?jAr6|A~7T_-y z6iG&;(sARABE%8j3&#{hR+Dn2q@tk0<)&Dsof|@$BY=~UFnknrG>~G~3%I9^Q0~n8 z*DJA)G1Xq@2w3S^&ki}c7CLlxp~RxGC)aPs$AUCI(MUopqF}?0w%urO<6}~dG@>M* z6A*k~Vz(o>i!u+Am_6{WJ|rYQ(GjuW?pSAsz}5@p8XaJfWw6^9wu?b3C%)0>!%lG8 z2>eUjz_P~Bsd+bAnVj0&b%`E)K3gNnrZm5GQ0gMUo>V#me3wLk=+g=rCmKZswF$?x zP{v~R>i1dM;_GVLS=Uy3a$93=>?K0YnrWqELCeL%=w^&!0tsSGCbLhNmL4!fd~wBb z!@_NLifH4SSeE{pRm42rO#7WpM`m@wEiEpp1H+L)Bw57QE^2TI+%9>%v{I-`%|NTv z7|3#Opms^(9=l+TSh zF*A!qySJTQktB$t)*3157fvA*A;{9nKOYiRrHL=W!=#ZR6NR<&JcnlJF`6)w>pUo7 zqqsDaNh4$IP0W1ruNZ!WQ{=}txtHm>noe3>nM!p^m_VTef3nQ{MiAU^9eXV#7(@h> zR+T+3SIi-%_qqXowGw+zsRZVM!1i%P)p z;~3+}mg0s`Q7~`fBQYsSU*x|EE8$v{c>JSWOtSi}RlBOGg|(e6v9XxHb5|=48K>er zVZuH3H2yTg#111otVWYW9Tq5HdzO{uw5E}IPNg{>nTCy{%)%a+|!)%$c>LnhxtRs1s3FXsQ*oB^t;n5TvqK9G-atwl1Jn^o2sBov^#c zcSQuH>H?s=vOo^Hnczt zwyW6zNTnbTLhN}q^o|f-^)n^(r+6KVGUbj@(3{k!T0^Mw)aYG#bi5GNi6|%?pec^H zc6r*hkvj!1U5lV#J7FD`-O#wx%sZT%>^s^y+~u_Lvc}V?dvbHscSkmcS9sKV@kvLH z-;!wm2fv>8!{NV%*qbBUPQkOY2SC=2RDyt_pt(DZ2#Yx+Waxdmf7t%18M-&V! zoEI(pA1SrC>XGE0RLsn#Hn@kj+Q6O-%tE7zG_ap89F-iG%F}nkMxO*2v425n{ct03 zKyAYs@*IOGl6XZkRZ1(1G(1F-d`ZNXS>sT!3!yM(7Fei?FH(>^V9z>B#So}mNea@M zN`d}}#(q%X!Lm_@zF#q>IFoGp@vDrp=L;kt#=jK9bPa=g3lKr@DB?*O%q;zpvF9k2 z6e|yb@T5Z~rfQ~i#A)^>(YBgcOG-2JM;<*^3V*cx*@2P>Qhqr zTK8$z^JA)x52^%>OY|WSj>x2(xv5@}=gGwFgnXyVKBw5BwrMtb!a;_bVWp&)8ca$^ zaqzslR{iR=nOI%fHxl~J-&AT1E^O!3tDSnqbX1P&tD!xYzY|A&0!bk@yaDbPyU9H< ziF4kWsPklPkDFkpzMWrcYmJ^b=-t-d2f?PF6de{02q@t$X|iIC7)RnG52Nx%>Y0u{ znZn*HMMR{1pRf?jcycOE8>;MZEJ(n9?{?YeKBx6$hBN;#l1M?-V~-{piO78;v^h9E>8oQv3*{pq2H8tM#BP zwam0K_NAb0yTY;w`)i8&rL9;Y3yCx&z>-cs1(C&zMMNHD78qgK!{~xzV$udBA!~fG zw^`;MQf7Fobmb4C(@6Q}-*x1wSLYD>SCho8Dfg8XuW9YIaGVaXf^$I7IEJAKo7g2xuR|!;2&D8xBaapf^&o$c(XZBynau*Cv%) zh-n>4jkM~~&v`v<*0yu-^a}jXh&=CY+(6lX7gXy41A$<6Jlg z@X@E^4iQmX)T(iKMbcxDgG4M#EREMPFVkIgdU%lf2BcqmX z@M!?`emWP2>~(^k&PCs1@1oUC-4&d@-EA+(`6$GY`4V{Yk3907-&I*3Oz@AMVM`;< z#zfj3E>>m_FB4B2Xf=OF-R*NiF*j89@53lZB@$gF^0{Yn4R%3?F(#-}p+#-|L!3Of zJ-ID5#w;k<$<#MQeC^KJp5%=j8XZ;_RngNWorF{xtYS)=RySkQ< zm({T1>kVkMncNUr+7ri^h+J~^)9QysAwDzcJC=7VToH=ij=G$?Q4YFEsr9vssP7A& z?8l}ez+G^L2?V#f_|eNqQz2D0B~%H+jgCR$x~@ro%*w|ME&C8B|- zLFY=FH1Lsmnx+vi)re^G!ht60MXGy4;Ul`q%BezYif3(TD*EhlW4WP>Cm4E9!p6YI zy=+6JuRnzj3BGQsv_!h3F^zT9*|ltZaHh|V)V{F8j&v)Oi-1JM6f_h8wOxh*Z)d=O z&xuH(;GDD5lcbs_f_trWsCq91oFKPDf}oFh!p3q@PRNTd1c@Rt zg%lD*d8R=#@U*m+o$$CT%L32;A}oeTXu?C&@_J1UjA(0*dcQU0D`+B zlK(+?;C{5LRudSbH(_9_rpE;(w!aW?#CMek7HOqK9S4&U=CqqfUUeJP&XG>KqpXOR z+G7#oOg3RCsE;zBGFzxGZ4@^i-Q=F-rwPUfmkpqWT7X?4Qr=nDbgecqxs*N})g^)A zrVdIR5<(=nw7hu>IIB0|k%mN3#Mp|0ZyYD+3Jx&B#8DB;_}0^*>Q1(th-srs8o#F- zdrr+)-h-KbscDU73iX}P+kt~(sI7k}wFu}}(e?D^U2U`u77{_nfU>nOr~`=01rlkn zh1|S53M_E~q@&~Ff+n#z@0tRo*jRYNVmKekQA9Q zxN4-Uh|wPu;{gtFH*8b4%ge;^JP`PJcfi>ob1?BlIV?xWOqzmeBxF~f8#E-|#1>7Z z1i`w#K97|AwucD^@}X6%HQ(3MYG5MO7W&m6-k zW**{lSXQ0o%BsGEOUj5mb+;UKw;Y#WG6b9Q1@m4mA>H`r)=GXh0)!lVVSg$4u=Bf} z)ZoLu+}4^$^hN!q)9K=Y@4p|}W+Dh$O2pW|*o`%vO4RN!W6Gg*pjjQ)dyhRVHj7qellF1i@X`QHxu3#7=4NyNfT{?XnC!E6TAJl>dUP|H@+1Ge(!L!_@4U+4@ zXnufh+I4SWXiT2H+cmcqV%?*7)EcRw9_3kbm8;NZmM$Rfon*t;S)rk%cK2c%t+h*7 zV7`*Bohai4_A0%GJ|YL-a935pwMjI79SgJL-ZsLEYxc$FPP$eE4hi zU{1InA(yiPuFdwaa?-Z!6kJH$Q&!aseYrerj;zb}S?5?;vEINO*fHeo$TTG@Bw2}I zm%zxm%T+;#x*N=c3MI-R-e%;tVdPPCeRI*bb?RNWw8iC7mtM%n5n`lXnYyh0NLhbQ zwWB!*WtTpnOw4ta4MA{)2Ny3k*uysKZebdZ3n6@gBAS}Jp)vLIs78seQWM&!|G&Y0Ed*=BDo^iYnB@aDw3yZ}0)(pthtdfEXGLs(|Sc_yo=t3ym zN%D`r=@AOtz`;MZjhxj^J9ciui}i&rbyRV%TwLhFc7Z_np#=m#4+tljFkrJ|Z=Y&@ zakRGH_Ey-#Z)GA?~_@#xV+3 z5$_{T?&$-cDg^b&B-MYDohU0BJzgD@!;=6^1h?DC%!l*(bz7q)$MjggPK5Gmj z4{}~KqGQQ8gH9rpCe%zrHwD2a76)o9e|-zX(vKEV^4)w6&yCnOc+4Po7KX&yln=^HcRrX`(#pk+%#i)+fr2 z%uYiJK5>L@I^>^4%+Vi+i12602)|C(=T$X?3ha-Q9c^ zS)V1~I6QoLrQ+huI6>)3gG}90*!oi473>K3I$}I={xM-vB)Ok(`wkCVpJUn_%k zKLQGZ=yVY?YBtz3A|fi4z$E=b3WlEQ$;wbGRyNlsvb^MR;P<(qu0AXc5E&ShaU@Cc z#E|@yGCp}tM4XkvDTVivpQ>+T-Awt~nqMC_FyE7fLkSYIhI1ll;`= z;WaE@>`Zx5Bu|pCx|TibBoM*vQy=hAq@j%O1tA`El{wHi8YW?H<4L#fycS# zc4*>aP+E_Wx8B^CDb}}?=qwjKo1#6Ijaa;~38dP{jMq`MYF4E!(iAFeLMG9%Ms4-A zm#cja!N``##Q@Jwh@%PQs(@~dM$$Gsm6L@6inw=$08@TR*MOXm#)26%DneQWOl+drkIwz zi-^O$9o7ts&}>RG7gekrDTAJPI91r?4A6+U7p85E)Sn5JH(tS-<&I;M5dG7!V?&`2 zU@}y}4VoF%)GhBP!249luKZ}1ro*<%gKTGAE?iNqTrfD@Zw}b(USfoAXvVvZ*k?Lm zJe*Q)c4V_cp`><5L3Srrg;#Bd+Mc&sipVSVTVtt-MW2R;JfWqqRV7iIM&)>SpE@zK2%}m zi)}%;)VDKQaUN`p`D%-YUF=L*71^IQoiryVbR-SpTO5#4fXEEH60aRHzWToDmX+Pp zIP|Ug*i^U>mm+T_HKC~GvfjwYy&xqF=~SD!bmr`;QHN4iaN(?cg)ijXHu+LsPTYNw zv(GiDoizrQZY4tTAw$zuWO`^)`&8(jzgYp)M$t#5nSywwY_V z;$*aI$*4x54eRk0_%R4C-Qf?!CO;OxB3;}P8FmX2OJ-YFmTT~*btnp|nq7j6bRNf! z(9*( zq_xorshI@_Bpm#lnQkICWJMIUeMEFsnGd)z%ma*TiD{{sm%|@CY4f`tNLgweb;?hr zI5yuAy7_lHL9$4*$hD*9EmE5eJlm1gw2fYVh|}>unxx7&_W7xePwQ6c7e9?@B^OUEFOix{_x*Lr?G&M*<+v8aH5B@wT{jK}Q1#!D%oZ8A(4HTt!8Q zWEw*=piR*crxJLmof1lo`|>sWb3a+LZ)EwlpDo`0zb|Q=H1y)CXSKoB%cVM5eHdg4 zZ-{drbIL@`7tbk*&7faj=n?OPkBW%<;|Bzd`er-HoI~2w)kfGy+GS0Tn{@G!5l4@V z4;B$pFpMP63WCb-n`mCtP~d6%PF-;pwwdK`5qIQbOfn)Tc;|c2yGx8X;;?Bpngy<==51q9(jvQTvm? zpx2GpJbsOP4D|eC42r!L%2R1!w9rReRLEwM6mfZUxF1@rDehIssJoim&F8h+N_{e@ zIaUtYA@jbB1A9_VW_EoB$1fQsjw&{g$%VGt7J96yMWax~bVV2k5FTj;i4fBlsE*dK zz(#7Sit&~bS&qHd_oxJOaA$WK4-%${;FqtsNZsLCiV?M9J@;yS0McT#QZx&WQfs~OC;>kt_OD1t6px4e?zYQ^O3 z0Gv2u%eGt`%*&!NN*G=-9^XlK4CXjaz?U$Rq|C}cI&hWZ7yFM_bj4lW!OrIbbsaAv;R9SIOTest;+)cSTwghX9J z!neDL@vKWOZHC3k7h0aPV>cFHdoQDPl$Pew&V6>cXOjqBb5*gdK-sV0^78B$B4v+= zp;_t`&k$mY2bqqR3S>aO-OWOf;R7~(1p+WJmhdi-Qv}N{r7ClS58xxgLlLE(`74N% zJx#cxBjubqQ8A`8hqUBAo2)#djkfaQ3UTG0>rS+sogVeIdMc&QZ+}hsQ|+>9>YGfP zeA7rWOjuNvr8cTj_&&*+7R2YRcDckpwkpvcXOC3mBLeRen( z_`)E<{#u46C&p4!Q!mGj)|jk$B>d`*TQ=^#_6vbuD7@iW0U1RhRf%9slXXw;rMHCg z7@vv@E9DA;k9t5>Dh6GV;zKlw91Be-jIWxDFbc%9m(;DYlzlZU27KD6~ks#0ajy}FijbpqLX#p7;Eck|{L}RQi&1HO9ASqWWRzJ>S{W@m1~17x zvtO!vhIZpVQkrc-q7l-eM+f2$6&_aBg}_tY`etfvgnQjoyu5?novK`Mq%E42rIrz< z@y$gM@p17n5%H12WQOH5@9zr*e}X;vQ=|7K6?VB4pR#`wI9nRmzZ zbVo)dNv@hfB&K?DXHL4rB~()29b%ZTgBMR~^`H4AZ38(NU-XJoiBA>KbiH%UG_;&n3W z1`p5i{GzU&O!Hc=xa$@ZWqbg zG+rTqpb82&k|Pa0hm^6omUzf0_#~?}@boy1GjXSJ9{aGuVpozx=!{=Zpx?p<>st6Y zyEuxL8CG$+lwhD-2KPFXyShqr8-!uLf-Q^V(q<)u1<~OlxFj5kERTv09+6y%OXMWb zvLnI>;{+>K<*JC`mTX#A6l79U5ytr`fz-G21Hrz`@%44nEZoW@*~%5Xl~x5u3pWZQ z;n}s|QC=jsSzTp-0^@Dr2tx3^aiO5G{4T*{nWIUGT z_ijnJa-pFw7}wS{+%UbEQ0$ayt{%)n04jB3l&cBx>@S5YK&u!cPch|G6EZqBx|dn30`Ot*cU^Cx4h6Ss9k zae2`Sig1;+wGX!Gr`5QN%T^H}F|kroj>FZ;>)Pmb&k)tGdqh&0>ZBH~8OK<8k8su5 zcY*?B0ZXCPbGK^Qd?*vntm@JY8t+K6q|UJJcC**+yDdSJwPMEH+Cdzeb!*JdyMGJ7 zUgZYGPo_@YneKVyB1CLxKAs!2*w{&d}dy^han)inNq5X!4A2Xe9`XsK= zv2!dWj8{3TtAeUaLF#Gt(G*k&mrT=bP}$%k-lzQhRSC z8Eev9+pLy`@%-WZ+m8UpqaKw6dd?n{N4zp41{Qe3jEK{GDG1>anw1g*1O^;oMFdt0 z3Xd#z^o`yWJJSm67)7fzi>FalR9-N$ABZivIj4KiCGAnfoN@7n*ro#mjwqrTdYQP0 z+L6c18*I5xu?kvLXJ1o|F_jU)gMjel!h^pADL6p>ZzcUG{{0Wq>8P1U@koY3qaSpw zVij-HoiwVi8%?ap(@OY<_<~C)(vOI-5k$i@)<{Dh-^nDF7(qtKo-}_NM~*O~!C@3^ zZVgA2DY6d?$iX6@UWMEr5yl372&01o%1tQBS5-nO^uqlyK_U55y#yXVtYy3^Fv~S= zp0O&86T~Y&Kw&{OaX3v*0cPN&2S`imN+^Jb2h5fj_ro|AI9&MPU|vrEVN%budnagh zt&<+)>JjZZDX%=Oxi#YYMbV-oFHN)3DM!g>cOr`cD=BXtmJG>hlcaEmr(z;qh zBRsNU22%KY-RLO8OeiiPP@rT7q%^5YNhgx4awKC+azLy|?HpvNxQJz(SGhQO5KU7` zKu3YZN8&P08?y>4#C-oAnU;QCG>)kUEh(dzc;mQU%3Mv#+*CpY`D^BJHz$2c%0e0V zh@z3YEJ;unMjBBYd2T$?9!8zoaT0LHTT#}+(nZ3Sv@F+WQq@iA5on~n>6{3^xcHtN z6s55=ydd%CgKlzGI@~BE77iLq6zfxQ$xtHpsz*IN_CtX&V(|u(B4me;9m!D#+k!-h zM0wfinvZ-V2*$i&ff&W(OeV;SBw$!sgP;Nn^ea&e{DbFQm){cJ9Z z_f^C{U}vd1_&vl;6sDn;CcDF|JqY%^7r2a~rd}ko2I%$qOXFIt(9q1t9~^hBv9ktgqabT?=g>GFqeAck5 zM)xI5cRW`!wmjo9Q-Q78@N*S4l`PPSshM+hvtu-q=~3Qry~WVj<$CDy2UStq+vv9P zIx6|aQWuN4J(Y}cCb|>ZYaAn>syfAmox9Hys7O=GDd1bPER=UePA2oSbv(5jy=P;g zw@qowcc^el^ocB?m}{t9>gdLHw?Py~AC1DN$T!Ccl%s*#keWf>ZyF1P+XAy$YlFU% za&CdSmxmH>a)qUi+r4J&&}($=Ot+n88gX|(?gp1`^Y;r_D6$Jdjkhd1VuagSY#v}> zYL;gM?Bmpdl5RnreOBg5z1GFB5XC%g;dqZtkFUpUYf7o`ro8oL4WNQzzYlfQljbbK z6kuRf3(_|PUrP9vaOL8-sy(ZA)K<%RiP#}SZPNO3&ZR>?Kx7^j8dzBpPr{NGrQ%?- z)Rd4(dW5DbN-WbpOEw6z$CeI=<4GAX0|r>mD1g7vN70(nY+97}smG@rl{CK%{DsK7 zkmOeXXpa~r>UQq(Fp14?(D0#`7d@$}$=t-&p~f3W@$ia>IAxOr3Cg6R{k$nfAPGIcg@EViAR&2$RZFGGTEXxtLNKakPBMM7~lyy{AsJ6s%2=^Qwm;qGmkn z5c`udzB(1aNH`ibWNArQ(2)#f9~0}$nyrblE_qcbr(8B)F-9RF62xifDsb_9%o>8- zX~#PfJ>9{u2<%@?Ag@TKF2bq>nCZ^xs+ul&95tx%STb^>ByqjO&@VjZgq>q zPO2UnSqQ@j(x3)xd@L^(5PWYXXQXa)k8S07h$pi&H0oQV+9RyTYIhN5QDZ&f{&DZw zRboen=)C#1N6>z4c}mbogM~N|VmH-=Yi1BoZ#_i_6^JlhxO*Ab%-+Aad91@kY0XQq zUXl}$j)CN+Ntc_pw=b1mo)NAvg|7n1lrSwynZ(}V7r>glh@?jpG!9tN0)-iZyDYt6 zNkKSdHG=op>(D7F(X|-Ms}Xct%j(OnGrDt5J}*}8TQuk(`b_SYG3(0ArfL9qIR|PD z=B+oAN$hIVp_akw>)7DbMY_+S?1hI~Uczq7uF(0uo3pp89c?_-EM6~F)9gWJNtk1S zH{?zqEw**@uHh1{=k*!%fuij!)x?XYUk-Jby9Msaa}-jg-F6G=Q*OET zTYMq&m}aFe`RfNr=&W;QQ{d_zIIjmx%NL6)RsuuT2#FN?qOBbdRGfM2dzw~?xs`bJ zo5_AcbJ#Ib<&;+<#$>Y;#!k}1WokNGx~q1eFsoN?47i||=Ez$Ap%i+dsLa*VZ3`_F zcgLT1H99i>lp&7Ib4Hb!mopw2=Sm2dj*1#6e*p8q`${3BAt#X$#F=s7A>0vjZD~fD z9#gD?##A15p&0Vkg}Swiw8-Gqpb``s2ipXM`$DLGSNDOlUSghhId3p`PS>px^XgKh zQ(~c*CVi@X5C~-y6#!3Vif7uiemEn&NpupdEF;DFHb&N`96ot$M0K?zw>Fd9wSMp% zIA^R+55BWOaq{j3H#JwzH(zL14B*+w^;afLW^>`xZ+i?Ee$BdlkX0sgc}a&bOEfg5 z7(`cq7$pPY0PxsHQ7Cy$EfLaDPa=g}%=xEobTyMaOFEfoeDdiw`NlSu2`Tr2!gnbz zo;>q$O1#fD$H(n4B#?=owrX-x%&JGt;-94n8c}DUFw}Xdssj&|2>IqZz|v71N7WU- zOvkppB9x+v0Hekq7FZj?>Pms(t!a9P^v!UC7YNl=#8ciYhqlxz4 zI`H|YeuKszV4{x}VG>7BsQ4&|J$~rFZ8bk6IN4%N!7~8Qu{|N~JC5`fH8G9(Ac4X4l4P@Y21tPkz(pDts^h8PEaU5Z2Uq`{gfq~<`){Io?;73^?_=umQ zl6eNuzOhgqG6PbOi5W!{M;4bJ7i4pnng?=G6mli13#IV5mmD}HAxV=9!?I53g{7Hs z_%@ir*|?ijX!tu9d0yNkgob-;S-Lu;wQS+kR{0>ES*74}E++&jfw+Mk3e22LVWnqLh?N3C;zG zYLo=ZSgZB=XQ;<~AWCSl6_n?8H#E|JL>ze};tycFNJbJN!J@my@~fRDfekMs)DG5NfVL6q9~L<0ql~W zIylh~G9tpp3>hSZoJm%Qog*Gp8Mm2pqeE@+JjfLJ^B!mcgY8E>Um6<-sb#04=LFgN zgLvT%oROpBM)IW?5op4J8Gw}#>hcb@QnfhJsWSQymZ=fq=c?-nw$1jYWm;+u@!h#8 z&y3@UJ0hLheD9Mjk>hZ(q6*zODhPYwbbO&Q!2X1Fe);F>R)>~$1}hk$_I#UvvPF`Q ztGHZ4Eu^T=fkY6Vsoz#@HYWnLZp3K>_1RkKRYS!;WXuwgg5RccwTEkmCt9Xgj5 zuLzqJp%C30S|zNqt&M=oNMB|w7V7L_F3yU`>gsd_I!tCS9J=DugLr31^!DBDcGPGd zxMSORfrhzAx}zg90u7{=ErIdgKQb^K(Mv8?ht+Hiw>oUH9K1vln@_2{;F@feQHl$2 zoRlw2x&V`9bGpQLRirNT_EgnEUV3q1Q$*7XUZGu&WR+o#?#HI3ts%bQ!C6wcz1z*f(DrxY zSMDc)9rv#R_srSd$WvdGrY4039wDgc2VP3lb>mrm>_J$Q3l4^CnQL=DjjhsFF88^b zxwK9SF+@B*Jt*=~76oY^H6Ur~R?{d8BxDB`GDxAuV2&)rDUmdp@pQ*S_!1cUkqXkj zsRR3#Q)usS?mC}(#gU$q3p^eWX`#$WKC_y@Fu`Y9nyQx^HN#Ii#PR0f`D#WuF!OB* zCroOHD8QRa##|9nULJYyj84m`@e5xzYvmHI6xeU5V=&OW9J;qDT64;LihPZqG7&G4 z#hlUEoVmP&VTB_-8r0R^1|v!evS|-1=Qx$k#AkZf9y<&8Ut_y;s-aVwDQUEuJSsWi zR&DD=F9l)rTduTKT%cTy!%j0-qAPDEu(4RIIPf!1LZRqNEDXs*Qb39r4BpQUWfuW) z9zwC`XzV(tR)ujfr&$njD2#RGqN}G>(!f*8aJ{JyBG&GcmtzDP|<3HPS~Wa4x(WXaX&g=T10z{JYKvc z7$=xu#B%1V!qzXPVr$r%m1?q8+7x+)>R%o(sPc>=iCOT#4-IsegdABISwt2dmFBFt zBge0kbOy>^B#u5lK$VkFcx9c6LD>y zxc(vbPQG@~yub!Eg@;;#y*LU^>ibO^?=!HT9tEs7ZNMi1dx6f+MLAAO*NX?T|=#jPt|u zJ|tIDYl;SCC?Kv~fcb%FZOa`gW8ppcQh1I!^Adb}g~7&?g7~obvKa@XIXNJ?Clt{h z@?p`Z4nl%#QbZOE(qO;PLM0`>OW%1%=1FQx~pvJx<}O-9Rf|uelCT#>6?CQ9C3Ju$w!KL#J18a6FZ;2Cc_w&Tqi_yQOXdM z#29ac*rG_YS2MR9`7D{_OWSa_&o+bkNA!sQnm@<+nW~b%_qXA{;lF187XQBAX8-ZO zhTq3;%Wu19@%~@P>;6Syzv=#nzP^|h(9V`g*BN4HeW%{Ry4@~=Il_|Va&`|v=sdmV zJoXdff(0NDAp#tp(L{CkW8=AWi9rP3QH*|F%--0PG z0>UX0E~@!&c8**-*xDA$g%K~ovjX!nf=;c@4b=)c&ac%}!|>dy2%Z~bqj!%tEVq`k zQ?Y6B)M!^U_BGzuTQyG`LYvE3if3AW6~yEnbr(X0{- zmD8%vUs*sk%+3w_IjZH=QJk)`&l6(l16)$2O7nXB&rt*s6%$!(R;Lw2i1W`?(VeuJ zsmi5gpzx!kvSPOva^Q6DS3>Dpv*zeNx%Ta~GTSG|4vab) zrt-tKTBX>?sPCaVeui2>(|l$ecUbU91%>=u{e0ubIS%yeDE1UToJ%?&mWw zC)|z3>l93fMb`iAeVb_G5MIO%Y1B4r^L0d4>Y`sEmx7&anUJkXX6ToZtVhWzJQycFwnKNtS5> z(6dJE+8X!-PVL+{G$V_E&AycM*|XF-^%S z;f1XXMXc_Agxc7+Zp}fgP^Cr1nTzN!_r>8Gj2(GfPLl@HxQ$Y6?w_5wH#hccLLpw^{ec3## zHQiO%B0VnRxcb?)bS1@_<)^y#b#CO4Y`p5kpa~fGySG$r6+9-3((5ew(qd*V9@*V;FtVjG>X;}2>*RM9Ho;wv@W>{zW< z#FQ0m=zf&9Q{y>7v%6N%YZR-fSbe!NuW1e2lJb&TvB@Z#*~_gLEh#K+td$M?ad28U z74L2pobu*w%}0f0b2J^2%+iT++?}j$1R=JY^Z+3GPjl$*PSF0RM8?CwL7s}mRHVw_{T+{5TJBqNw0-7H6*0l8uGKuP!;s{4MNKvY<3zs_TW(SIH@jNc^(7X>C zRw8U@ZxyjZl!B%XvmnRT(g^X&+Xpm6a+LM9*738v8OH@RJDu%I+-cNT2U9d0bD-zc z?$B#uFf94@Toy$^#NgZE&*{Q_H(g4&n!D$?}5NnfhlZW zjnNFNlZI7TOlDNvP;=OmtP0!Q4rS^7YomKmUC?)%fzIze?yBUesuD;w%DLAlycCPJZKAYW*In!DTDJDK7`qZ< zSaQ|!70=C4y{CeT>q#7v_ONACOt5n8G$^%e8tM<$^%YkS9@W}?UPqp0Bsq3XUO{z4 zGWgZzK!Pmg$IG$6NN)zd!1`|6T%{;SBr??OtzJ^ZyPMr;&x3lkG1*)d@aY>18Eyu_YG7NqbxW(uAXLSQvD7`>Y0%lK zvu~)Rv{cSmR9s%}-IfzuoZ9YZ1q-*1kg+APNbA6!

OcLh&du)XuSvrlVRFYU_$C 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

#ps2c>Fy#hT&`BO<M5go@y$9<=D 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

!o7q>JigDhWheN=89Qj&|7(tJV2X0 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®) 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

^5=1ybhbrww;zyo_q={7(Ql-ZX^d0J+WHEkPl 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 IfB9+L(t3|?%dB{tD2@JyFk-7!8)FS3q| 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

    @{9c&o3 z=57_2!?}21$hR-em)m>AfALg<+~jM5tmMUxn9j=f zJJFk9o4KkyVo5%)c@{YT*MhDuLo19^rkWI$o?A1T^4EJVi9U3)gZ%OZ3u&zzXA?-DPh_ypcRmsydyj`&=&*yc)d zP>#6~QRm0ht>>?B2M3u|;kY2IW7b7It-2o)qO)+SRs-cK;)WF#{wxN^u`RvjqRlF~ z5wd?Ge}|%(O6P9bz5^z!J;i1-_CVB2gC;`O z4}bt_+K+EAXo>7it2l;|IUqT_e9hG_Rhv|)N<2LS`uuqVoo$oqiiz$$Y_82_@i z?ML|2SLAia5?*DQKO?X7p&lU<@bXLTP8UVTra6^XA-7K($T;~(zr?fLc_O{oyFx`Q zCf^t(^Fl_MhMpzN6nz2}K?qzG2Y0~Tkr*mRhF&GFOv||%Ly=ewPhN za>l$d&7Pj__3#pHiiThG{QBVt`@5CN|2y<(u+ybEN-eH(y%Q--2KRjdZb(Mjb516W zcmkDT@z%Y8)C=}V<>GmFv{Nsry%9!!WvuJUv06Mbsh1yXW&IN|(B9DJ`jab=bM9*1 z@ogy#gXhj(#CN#RosoQ$6hGd3xl+4;N@JwqFB2_}1ABv_rP*!XXuC;SVdWkob%G@a zmvV2Qhv>I{Fq!qLob5h$fp57=#$LQ4b+m=DcCmvae-wG^$DN(}>&A^VZoKhuX;xk{ z(4SNKU(}TR^Kbf1lX8Jc1wtZ%HzJSIsy$ zTX?PV>XPsCpqDz-kKr0#SO5OJwaF*eAN3ZF=-?;d+rFdyb*2*Nhyw1sDV#uUK;h~+ zAJ!0=pP2G?dbMums-!;k!uweBX0~a&Exdhe8Roid!OU5sxuR1(GBQ%*qWy2nY955f zMy~bhbj00wQk+`pY{3OGI0x_;Zg`|O1aN#v{O+D6*+q`+2RS-{FRZ5zph6W7zZ}Wo zhtk4#T1CC~uoW#lY}ed$ZhAP4b>O4&=29Z%8i_$poSNu)qJoM1UcL3fcVDn^`b*@% zc2Ax?S$W+LT;46u;*j~@ru-j``0poBO$6EHEq9=xI zW{lDL{-6sD``Us~SuqaILP#*PmeutccGN`NNE1X?XW*)L7Xmk^53b6wHYLA{PL07) zHWni+XbeRl|KA)y_x5d`?>(=KCmCr7p-~lG1s6T?eNf5% zNSq8~>Cbw}X593`^2~MC_D13L(*FT�+w7HT;6C>{ZKVBN!+0H>FmDn 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

    bsK8v0)ADLW6YMkyf|$=D6~{RIdh`f~RM~ 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%0Dd!F<8~P{kiHbCao*AtBOpvn9H^m32GPifD$po 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 yBV)XJw*0r5MIA=yR~{-Z9I& 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

    XLPeZmUCWmqwI>9SXI|~!(+`~ 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

    lGV*C2d$Ojt0?_%_80e( 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

    L1)78?Im2Vl_V6;aG1t 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

    bl;en<`&s-czjcz`Fcep!?4 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%0D=HQ>WK}G4sJGyVIRXlP!gc5odC~CSX4(i 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�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

    m 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

    I??DNc6857E42cSngraD>DZ!-gtwz3c+^j&XH9 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 X#_}F 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

    8CmMTXylSm~G1I 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ⅇ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�?2?`fusI~kT*nbGoE(q`D26a?uP(!KxZO$j6!1hiQ|_Wb1G-QV`toipFNF{oXH55l6TO>`wnusmR- zmiU=OitpcuXxdYWzrT9gE4k^Oqb5&Pdrb?5^})?H*Mf2_!z0!Snwesc5D zex`p_bS+;i_a?RRiDu}*9@-pX6;DZ~c_K~n_%@W4Au&uK1R}|dRXnCsfS@$M5F`gu zU>P9*iQ0Ig%oLiH&l-(Vqxvp)_?f!K7XF4Ob)#pNN6$@0hp5tHh>J#Gu>V~ib)YX09vCCz)VHBB;p1;T%jIQL~=6HY8TW*=JSOe=3n&Y&X+K;!o2TWgRdN5`JOz0GsmB2tTA12L!RV%XH;j0 zidx+`QeGqn5|J?}M4+!7>&Nq%e*e$;;Zo`2tgHGds{B(&HL+IR!pw;>OcUX~rl#@S zuv&JEpR#K427Ovz;83H?!Qv|xggJLwg9X5P15m|JN8iP@%*Oq)`y|WJO-W9a;POFX zOq%0$@TVufDS(6>^Z}6)H$nzE|5E^VVUMeF`m^cA4Ep;&>F-4IP~vGB86ngqWi;`K zh&8H^ENgBMJ8SeLk6AuisAE`{0sBX)P4JH8Un>z3mTR*&~^#L4&a&(^eg5!lBAXd6(qtqB{g9aS|7hM47(5UE*?FyoBd zeSzM=sc|Y%OI4oPy-jaop7L2|X~G;#v1av=S6-St1RT!7fSRUQ_(|eVsC&sZ!|pjvU_zZ|Q2HW3t2afpmRMGZ`up?XYw~>|G z`*yAfo$p#E0#k3ikr|gf(FQ-5DM9|@0qPEb-2BztS1 z9G^2NvTq3z>i>ho>mE%NkB@D-wu#_`LtQ=x*bG#UiSRQ*rG|;plJg!*`{^8fQzsHr zE$0r5&o`)^e1zcpkiAeuYW@fJyne6am7S>6XkZzS~ z^P{fc>rgeUmibV2i8={EU(fjdPJUTg`u%K`zFX<^U-e3zIZXnxj~`WhX@gs*w~U!g zDsRQCrL8RKuE#<14&#z*6}<~7j7D}afk-arFXP|;j1~I4;6%tN>Rok{Cv6O&&Nscy z3wlY(N`jy3>e)HQ=~wME>iB&1N`|=Br&Bz|_Iq1RK*)aNgaLJb-O`3?(*K7>&jAV@F@P(Pu7E@k!Qk0Zg(P|FW7-jE1@ zS_}BLD8QtLEj~9wD^=1?F&!A;Ii!+Ow%pI}JaBxyY*9EqKd54QjxVMMNkFm#AV~t7 za4d-Dp1HkXj^4*WO(7gM;uk1GFdy!MAQCAKs5CsQikn9`M23Rlb&nTH{VrT!+9e>C zo)3Hh<9fW}^1~WQE+vFmu3|NhbDsR( zQ#xkE^pD_xQbJ}4*OVsF=NDy6y=71wUD&N188pEqI0SchC%8KVcXt`w9fG@Su)*CO zhG2t3a0@PjyL>$FTi-dSs(e_p)bzjSUY`H@s+}}aI+By*?JF`Yr^fT*u z8L$P4|(|O7Cq37Xa2VCmxab^n?M7$ z=zj#Ge}1?;^Q6WzUbA1rf61|T>BF1YGo96n)=9_vz>|>#F+Qx!4AKLb8qSaxExK&9 z_{}fc-s|{~nm!z3;!xJ#TY{tKcTRnv5uxtZ`y{b4VD6Xj`FoarLojC`b;8(Nd)aD5_~pd!2aEH`zHfRZ+pIBk< zY!A-`NTN9DU+_J`&)@Tk?wP;uc3-F75`Clsseas%9Y7rbkdjCdM1MhUqo~einNvEZ z1cx6B#2LSMwhIJpIz{akgop_BJDkcA$IZF#2wS7z`j7<058GYz?c7}~w6d&X{f&Kf zS(ZksZu?U0VSEznA!>S#f@Ju8-4l9mbbG?*V8!5;TdE;Rg(crOVPfKQ)*;~ZzHtI% zP*fQMwa6l;M@WLCFWyZ#{t168&Y%{z{ro*LueF2C||%{fLrI zL)%U#m zT)aQRA;Y8lXoNy1m5>A^%Lc*yZ_`iZ{30zDwZ#6Ga_XqAneg~Fc1|KXZc0TA-eSCD zAinw8E5pjuaQ|ohda+66XVqu%(0kvvuEni;*~zNBwQKso4{mLTz}?hTA?uw)N&YvW zb$F>&kBm-kp24U|Nqf%(V~@n%pZcpBp~>?XQSfS6LzZa0G0=?C=)l3hciyDF^PXLV z0ie_7}TZ{Ak+tQg(8X zf_+W}WFa`$gv1Fm8uF=>4bj+D6Az799#JuYW*ippjljS95M&t&qHUdb>BMUlnl(IO z8hz9-L4m*qtBRH=hbOfiZJPWvus!%h`xX~P3p{fGYb0S@sHYe&dH_A?# zrT>OWX(QMGE+=QsPRdmm_jBj!Vp4R=i(C#9qd;!}o1J`U67F2cY39+zmpcX`$*TO) zio>Iv*Pt^H=+bw24()RAw^g9a-2mTFJ5?gl9*=&4!KqL8rBEJu!ku?f0+HI%!qaBp ztIJ*U7+E$=ljn7PbumuvY>E4I$2PIMk)9V9&K^~&aeb7RjWl6nTIigdiU2@QCh={k zAvD38H@46qgw7wGeOWZ1;B8A~t)QsDKKT0dcN1>*ZiWc)%4^{W!`{rcZ*|`!j(a~a zUwdWLA{JL&EmYD=&2uLh?2r`mhu0zKNL&>is~&bGXW1Er(kSPuPlOeODO= zOT27-JJ6#BAW`e@Nb&b_RAjyit1C!%Rt+X?ht9-QQRwCbbV%O&bj{u99e60??Wm!$ z|BKPPNcM5Pldw2vQb1G7K7G+o^Op8FY`nd`)O@n@e$9aIuIA@%6>u>nM=Mru4Y;%` zj;Sp6pq#=ERhU=r`H#F{x54k!@}I*9oz%T5$+*k)G)r03GfPod*8|QqE$Ug7_*|7_ z9+qT!9d|YFbo0!-QyeDf8*&%2{>N5aF=K3hzxlYTc~PEqR_fyhWYR~=d|Lae_Kl7d60Q%28{m)oE z&hbzJn@aWTbY9l+@?rg z<2s)D7^=q1+Yb3QykfqU%DL93r=V|^WQgesMyOg_6Ym>VWk%yK9rd_8&N~n(7 z>f=J?eQrCnxgW9?Ry^l8EK68_s@t)-MZYO&fLUSlT|s>%r#{qaCq_#^QukZVwCRH~ zB}0bH<6a@?tg3y#DpXw;`uoaBJ!82}Z?;{j=F4M-i<3S}^9y^V@~YW_bx+8q!@qOj z=XTH3G@Vc~t1A^yK;4bYr^ezeMnZ6QV{??d0#z!$`GA4C9GRKCKg%JvUYzG0uk~ol zreeJ}2TCZgw5$kL_cI{%7}j?zZ#%HQ$shGtQCu9(c-vwC;|U)X<%_?s{Xk(|6D4 zSXU;drIPawnNSLrZ?SG>9N4Pf+A%clB_6UadNh6Oh_FX@6V5YUjfD#lg0Gk#7T>Vx@Pl*&~+* zTsK8?m^)JPU z^3wGdYR|_*^-hXZq~%s2Y!%-3bqP*v>5Wx>%*%u29p!ep7N>9s*ZpZF^4dF|vY{ej z-W_E<#ktv6c3wG&%S&ffJV5r^6c-!Ldvk4UwZ@Ke7dE@{8OJsD20`xR2mIP?=^l$+ ze5c%%s$vd0AGh*W9Li&mBOQ*7;oO6~;N*leDBR$u0IhG4U7DV{q zQ#xLupk@Ut>?lsJ&ozxRLgM0$6q2a#unyzt)={Q98mnpC<>e zHg}{<`CQkYA&-1+UfRXH>BiKBk6oL)C@JH1l>z9A1}mG#hh11=Y7ueZ=^(_K%OZo9Pjw&;_yvX{%wL9eR9sA1+$K7Tt0(Xhrr= zUnIg<2Kzq4410-_8P(u#_pTU|bd!SHiMWla&inHD%f{Uh8$P94$LrKkL5-WcYOYPR z;Nh9@b*MsKmq7RPPyPDN3Rx9>wP)iuqBjVb6j+#7j-F5IDSS&BcSqv-#(#)K;?K(k zea*XtfAeXmtnsP%NU|Ak1oL=;zJ1zfiSXsy8}6GU2T9h=t7iemYu@p*ACW#vtR9{f z@4f7glpY1mrQNT-cr0$!Cj#jbclHY#mazglor$qe7}?Ek1Xc`0PHWTEUt#HlBgGik z+ZvdPVOH85=hn896O2jYSMk)uWaVjB+vdDZhMGV`!1|&EKxP7Z3EpAlM?Jv&IBd1P zJCZpj^WKPibu`~6No-r~nSWKM2u@A0Iz*+7smyQ|lkA|Z!os;wBm61s7t>H*MY3U& zeiD>q5yU8dPn|b~xKZcR>*EJs>KeGIKc5v>ROY2FQQIr)NO{OpT&Tf(#_yRI+3ZDJ z{M3D(w~Amac-k+@eayl6i#;euPQMX3%gBF3_%~!L)=h*zQIeGE0f)$0-%{k+%A3p^ zvysBuBWpQRx)0N{cxl}8AA`+(Q8Qe5oEJaPwi3VQxB+<{3y2@-`~%nkf#EZF zdU@@+eB0SS{^#vhaVXO_yYX4d=-KU$-T9chg2AbN?#AsaZA0A8TN$b%Q>kZlr!7_( zdKs65okkOAKaN4Zy+9xR8*g-iz-8953|eJkPO>#-NJc&du)N$^^PQ^bRu{BnrljZh z$`)KuRO89}9U5)~i*}U4C;M|$4etv%7Zdd>QCCIy6MY_W3d$kzqSH&yzu4td$e|&f z4%|iCaC4ZV54#-K*B_GR%mJkEPWU>tf*S@YF~m$FXQBsx>l==RmX*k$jXSIP{gTOf zFMpqeuC4j&E8wG)G&jc7(c9j_WsQWC1cHhT|Jv z7*IE$C0UY4I&}>5_lych_yQ!HlwWM8zVX*Q*%mYNf=v3EEdoH{F(V)1miEjK@9m*f zDri(aQAx~kA8zRlE8%e?n#r+0e_J=FG_UTtgNc{;cD4$5EwM1i$GLYscXI{~42zGmVo{wz*n2Bfjun}Bs>uP4Yf^oSK*-eC( z^D#xdmfN}4Bt{dnft!6jMeXm0J2JR29;1Tr&^(F&HY2^;(P6WjT0H6CLG%XBa^)bE zhWca@fBzmd9Zk;hu(u@bD z;4{g4ZM@&)S-eY!+!cK56jZUYf?Qo!nl0U+$yT0{l*FlBF^@OFmQfk~aCLLMJ{OwX zbtT~5vCl#>vTHb|SIf6gco)Wz?Bto3wwSWgvpa-%;91*Gl<$J0fY?Ao5oU7y$9Uf$ z)8N!ZLv;SVb-?JCdc0@_b++sSZ-PJRIUC4^YvZZ5Vv&3OUf;)!aOxi_MKjGyB5~!` z;0NM@57Sk4#lHs_D&#D(M;9rj%~Ew< zoBWG#7X@Nj8%2Wq{qwq0Y^iaJxf8iLJPFa5PG-97L!-8CyOBkY-eW8D=Azrqr-mSi zF9f~+EBUF6QpAQHZ~zPMFF$nToS5m;4<%G-R3%|f{Lo4XF*ErD(*Vgt_#k2P?^d5o za$JBZm4(h&%me&(EZ+e#NX_`?VnHanj&+M;C64zB&o&_Pa}K-W6$(ec;k?pVKK|RH z@haqhw(M~10V+WxOo*Sze(e-wez16cBYyT$^nZBcqI35Z@)1$T+){drpsxgPgk=Jw zWO%ZL7;kM-k5(s0$|hPi+H>%;WE8Rx)%Gp{;RplU6M+n0bpolyZ7?5=p))UjWF1r$ z?kn%`^5E4_U-Q!iEcuI+x0DBzaiUd=Ace7x1DsEct+GcI4_^0BiB9RWg_=rHf$}c~ z;>SEADw2(W9*OVqlGGoWpdvl9lWnY|o%}bRY{qHOc*qN{F>{MIpWAz>nr563 zU6p=7T0tGXtVy_4hYB7mj zSTT$b$NX;LomL>SNjec!l@NrMHVMEed=ma~ZVmnfK?F%(F?_IgIJs1OJTovbV~>%s z^(!wWrx2BKjSV z-bSoOWQ1}q;;d=Y`thFx2jRvM#tic*Ruw>0THG;8N5EK~E`zk)tpz?Ri0bj=;Wt{6 zDG_q=UL-g!o)V$tWfNq^XgW+4Kjmb%)X9x*7j!l-R-f5F_%eJF9z?Vcsy|fl7W;bF zK2lMV!-SAo|CEqIA|W3hRu5zjb3+{|q-A3W6w`_*LZwlUb~_EsTENzC#fc&%h2M#JOxM)p0Ha7e8}%1jw|F%GXt&R05R&>;dS7%rbL7 z_PjD6c8z73AXV%VG~GuClIbF?V?xJ*kf>vTG$6j=ibNU(y5sfa(rFoOHKEEXC5Dc< z086*WmK}ZF?@cg1O_IyyS>Qt=5IgtpNLUI_x}1{-7b3yL6#Ts?p=j`AdW6WMuY97$ z`CqaIm~R)E&uuX^xgw5<;N+G{;A>Hik;muE1?oGhAJ$S5h&m)$_|V!<*+!n_m+2_) zEb=5%OB*76%@s9AS8TB>HW|4{O7rBz^?@tR5{B(RK2M4=FI_FSdEbHE)j%yQ(`!h| zmm%yD2Mn6rU#`$jqVjJL7jTqsfhtw8i;w)1>o1s6)~Rr~IT8lxM*oKVDO*UK8-+|f zhzlz%qN$3L95g}GJEZwsHNLHO_3qQZbtDUwbm}af`F=-3l|uFHiRocB;EB2G=EnqD zFSK*p3=7FC7U$2J{Z@9#>xmUo+>ME02+=Z)&os>)cE`eP<<=yZP9tx=V2e4D-wck# z*7}T?39oR6T()&;(FEd@p&B28QrKVGvNp2g207%o{P_z`)n$)(zKO`*`HXCo8jpQZ zC7BA#5;j7Cim@fbby@4I_Frg-5BDcnof1tgT{yuO{{R%3o91XRR0uTcmpf zcMI!4pjF4@3_Rbicb+^seuH~?O9`KfWx8CoaR~Q9DT+RSQX3UNs4UV7TO^ucIDc^X z_q5Y*(Y_~l*H5DdrDovx+{>NYBknjYo)Y~|)mX^=(W}S5L$=Go!k~Ro9ke54zl{cn z00f|)3vWN`DJ^v7@p4V-v_8c~3~s7J*mTV@ufD?u5=^eqwT}?Wd||Eq*MMt@==n^C z+r9IT+U@U7D6*o)$`cpr=`zEAk_vcy1OP%|wld1$CidIxyt34{(8^xl){U4nTBJf{tv z_H~m-!W+O(9J5BU3rcFg{|>o+{@YDK$xFk-c{pVAGn+C9iIm*7c;l$`^g(!HpC>>go2All4MDe3goH54GdrV!U6_zfwbcgnTBmAW$3XUXgg11KTmUFRY(rlHaQo1jqIg39?#Sx^3=!? zj?SEJwJDSfJ;IuJedU5|6ZUicdye1j~*rU)py09>UkK*En3LF zn=fSp>oa^n&9}cPW1xtuq6B?Bvmtb3=guXoe>X7-Ne6b_YsjkbBd>n|lV zSsabe=5xGRS;i&N%TE*ry7#u*09fk$i7$0*ALu!;Fn*~Oh*48z{Z6eiBe?;)hU{A9 z9kzLntZzV{{fT?zV^^KPt=kLni zS?vigMbL=o`wGK-u?)AIOt&fu#`YL*`(QKQG4xpwZRjXX5?~pmLY}1EjU1}akzpEf zTBXo>&Q+(zRvi;0{X4R;h40T8m^p>!#8gEpNRzk!w52;>5(!!Hb4dO>VbZBRDU)ND_pt|lRpqY1zUB=9$>`o4ZUXrAJ2Ql=iVqO7AU3@Imz>YcQ+UOiUC z>wNFuE4>gl_75M={q_-M{~5jz09>G=Gw{mx)m-U4x#^o=^co=imPOwCOnl7G>-Iwk zfJVty`NwFbUju<0ohm8v31v4E0*oDpS^9FC>yY$k58F2Skvec4|0uVXRno}PGDuMx z2!ezj0Tv*}5s@C;RUpTSAYZ~n znEpx>u~?4IjPzLpax)2;bwC%e@AvH-HlnMqP+zH{&;*U)omPOlOlBN*B()r3)pHle zbo#fHm4EDEnH2$h)Ji^$H$$~8ml%evx$Kf>X*F)Fey^-(sPy~-6;*bOG29Ihat_!! z9se&QIQxE<_ip)}68t~9FsKUje!9}_u@mz@^EENRSpv5)`nqAF%a#f|P&M7w8pc96>oqo{Lz>NW&9cVFgwW?c75_tV%%)!H2F)SD~T>@Egd+r6O4 zm6K&xipt>5o#afzEH5W>Oib3A^0bd||I`+w)ML)>#9t&POxyWJ}?;&ex~*dW$rPsYP*)HqfFN z^;hKp;NMkVRB293@mP?#vH95#^^B9D28PtO#{!ohAhVpNQJ>IH_E)kjeM*JBx@(ZE z4VUi_uKLkmK+G-4!o4ky+kLF~ZeIS{-71Q($x-`=kyA6)EJBhy3YQX#Z#*MI!a7ei z){DW7VBhy9lq)wE3j^F@H{+u`nb;>qUWM!Fs_+F$tfu-Fi4ndrIn_|CanE|D8d*0v zo|Y!T)jh5qv8t`Z1#6ehwmhpGiLROo^T>Vrq$W=@g*C=zyZQPSU$5fO(b&IhevQ(R z`ySk44UJi<7trWZJzf3sMzEz)cJ)-dm!}5QA5+q1zzKN2R^@RuQ!oX#ofJU>%C1

    zbIZ+W8Gu?xO}C{C|m%V;`!@zv~0}gr@E8r zQ5vpvy^JD~r(r?5klrpEOcS=v{GG~nuI}u5T$Iz0@_?CPdD*d5(mIZvsNF$9?&2ax z12A#Gc6(WcY*<5XRZGlBl)FuD!X@FC{n>Md828%Bw7AvQ$`?6h>k#@rvnA3URVULVdq%_;9NIlW!Ya zj10Na!JAO|+1(1uVwzl&+0k5C;@*R{ZEah?sZ*bzJy@xh$fMyeE;e+vzB99g)Exe1Ukrv?p15GRN z(`D|L1B|=xYL$2Lw+rqZ5b;f$LAl_|;FU^6Xyu;9#rlWs$Wh@$>5RAlA2jgPoSCCC z(a;p@c>-K=d0{R{zVt?njKKup8!R5nTUyPEAYkU#3;$_9JWeiGFyBi0z56ek~FLM zi1^`6+&n2nD@B)?FZDU(1${2ba3_C0_Is2)_^Y;YG~?~w=>LO8{y`Z)gKVwzMf}}nkXU5^%yG?ukEf8O5U{A0!?WO~ zd^aqDbMlB@fTx$*KMWYH_#utw7raBp<}L}=sVRSuYe$U3-MMcuQXd7h+E(c2KBPBV z0$21BwF%$*LadHUkew%N+VN>W_OBfO<71qa&h5*$wO`K)A>g|KRbDE>q$280!0*n~;9SAeURsfF+i%<{-?qGb4L@x= zp-vA#p8f#nCDJ!Bl-G&gn2R1+HNC&m>pY&#t+hWp>y*vb7NH6G4zHbD%xI(Ynaw48 zU*L51IyXexby4qX)H>(Ad}Z)LXXViOI}9@+5_#FctdX2tViKuKp2>=Jl~}KL_*H3X z%cRxLbM@H;iqc!m{e?2J@`X>HZMU5m2@{1gJsv~Q?t8mf^wm!E=UG5m840#j0^j$K zFGo2EHj%P$I<#cgQ);xSq2ci|QA}M)Q4NmiYI4~QU1o0GMVwL(Hc2rDP(F{<@qH?e zE}~U1cNgKl-g%x2i;uLm{O^ujQ_OO|C+e8_^(PLiYaT_Dm?Q5+XBv2HQs--v)!+Iz zN78G5&J#ZQCw&oxr_0FnhN~M2=0^0jvJaaeJYKgPQu^nlZ?F zYQ~nqU@#Z2e}Xwzmwng-l($q*BLQnEFc?dPf_0Nw^SFvQ%I^8@!94BMK5E{e-okYH z=%B;(G4o~XQYYL zRp#;{Km`{{c!1c{e#7GQcx^kW5oa^r*=QPVTJfB~ukU=7U(F=S>4jJzg4ye7KldC_ z@cb99hqpyxa?D8ER?N>z65#MKr5pQY!(L3V61V3D%gKkokk=%7{Z3s%UgX!-@S5C^ zLhGWEC7bDpT|0!^LATesoP$t&Apnv|I?HiD@Osr$~1^wY40Ssq-US= zc<%osyA&CTk`J{(5{nA18g&O5w>$)+2Er?tzlE1E!ilSMr)Z})|CHwx0J*FWvzQ7? zVW+eE|B1%^qL~)LR^KiZmLnX;(1So0?S?rkbO5Y;5s3u~bOQ>NFU~%RtnH^u~i?YEgxtDC(d> z>OpleV|q0W{X3kfD6oieh}@F0sIJhVkkWmRzy4ornokID*TCO}?!R@n<j9k55k)!B#U~H6&#y z%gcDkBWu_96JC}rEdmw=5^s~!u2>RzLfp!XCVWR?Wt%BGcche2BRwiMzVH_>LLT2X znJ#XduM?yy*7~Rb+e>XHH5Z_EgKq?u7uqq`q^!b#9Thfq=*`3PnnMo{ZF9`B+Tq;A z)C9dgAg-1;LL>;5;%?`>z>5pvdjn40h5OH)xf;gm>a(M{e^2|zAfk>?5Yf|tfK#tW zQBFep8q|#r?X7&@6&H}Re%EQ-TG{2~EJfxug}6eIMyuv3UaQz8EWl$^44>3Cmn;{MOC3_%dTjWm#N{f0w)9n z%5Dupvyhn5C6^-OCO-bdSvCB2mnymYx}KwSydZS_(IH8au+!js1p@+>@1+dV*4=W$ zlT-BKN(je=Ug_BFi5EJ*kpS^=9Amf*)UrC@Ksd&{RIkTO`t>I>LPs}>?Z@$b&M?P( z)d{EeKb;o2Ip|V3CY2XMPK#+c9AH8A15`Qmk4r5AA(PZffQat81z4PMwC8o<>0s;` zm5A+KSX5GBWy+qI?_Tzoh$Kyb_b z{fqg~MgIn2njvlgLR>nsW><4i=SkFj^sV?WDbv`}fnV-}+x`cx^KeKj1L z!|icA-(}QXiKkSFFU&A;Pg&8u>fm^Fk#!C85f@wIQ*WWXh2P8gMvEwKY4bd06!leG zd)svXVN)clkmu3e?QQYmlg`WuUwBWq%kD;S7S}9S^Us3~_a6?+7_B%#Dd@ z-XeJA(jNnq!oMq7YixZIb~FnNLM%}U`kPXs0KhCM|JU41)Ln{AKuF`|Q2uA#z+|P4 z_|G=I-$gYlTG49>|AqQu-iXtCC&XBNR>=p`ir?nu6@#Inrl?Y1{cy%EIh=ul)?r_j z$56D^-l7Tu|F9#QE;Eh1oJQ1clV98O^yAXOMaj<|IU z3&xzZ9Uu?j-T%2C{~hWz&4TNRwKLY8|c z4)5%LtYP9c;YfS9$iP?w`i*KQ?6osqtCv*H0yeP=-Y3nmPeL*#i30$B7N4UXecHWy zP13*#QYH)&HdOkDes{WQ<5F_*8PWVH{x1UGKZ*s2aX&8IHnL)a=RjVWZrqp~*AK+crMPRz})g*a1vsM0ZJNw_vkYMDCgl%c8f-Et*8S^zmQm2p^|=#3Mz4Q zfZ1aIAVGS5#QTXGcf!niTc`N-o{Lt*Xqdoqi)AO%QAEV}BFoWkcGhzlu~`YN z@}^0rGaPpT^dXUZJaeW3X@8KOK3)vd&1ccmo%TLm$( zqC)Dk32ly6$M|bS#YGwCf^*Qgx*`tYInVlhA2Vz+H6VbrCYnR(pWJ<1QG0hrrmCj8 zboPjul8i<;r$z1DZBwOAq_PF{lvlu4Fi&F=Cphm^PX-YrB`HQC1)nP*511IZ*|B3= zfRVcCJ1uo%3)}uEl+|VV+>|xZ24EEq5@v$C;%>+Oz+0JZsJjEhf)>rD+X27;3x?4X z+$=nRIV}VfeqtMQcrD`hzVazl#70A+5lOlFGWZM1xF`1H;5$3F@29EKyB$@f)r zoBF2kJ~c5hekOBZ>l=TcPFw8p>p*F7Ebo3@{jr|r9>sL`tR>(kOYEiX=}_I!Erh_9 zVv`G)Ul{oA)a*v|Nw`!NuH_J3F5;0sRBCwLGq^xb1p|;6JrPOb(pYivt*Xjdw~tsg zL3WNHW6mL+)R^=K8Xu*1X%Vu=o*Q@vleR|8BPHaUJT*D0FmcNMVe#X~``m^hyQB~4 z@2@ogsmj5fD?&?Gu-cxK^Wk$gk{;LK07*PTU}QC&=YqRvuWf`miIqc@z-Qfk60wOj z>0-JCrB5P&p_}R@fsYX{dl8xBYyxMc%(gJ+!?vjyr@vPTW3x zWh;NU|2gS^yS*QWv!ff{wlsd5v!I%$X`GJ%2$C?^_uiP_51v2ztsZfGoI^-WO~wIf z_nTThyFHxh|J=R8Clr{|mZd}TM=Gu4%J*gtQbu3_+i9q_Drp>T{BxVCeUfKDr|+USAOTU=fUJFvj)B7L@A{)hAN~9&%%7dM3*n* zDjxvjYeuhaLH$d2hk0j&FNW$#{M`LZcQzz_?{x)tbjC(CpOB%_CTzxVscS*DSwD78 zls^Omz*k_K&6IytiWuaE0oeAyDzBH;4ZQ9a$^e3Rsl8IoiatPZwAJ1<8;@WnrXjOL z3-3f==MU14bXs8Aad?uby(X!P2RTSjiy~nyP0umia<|Ed4YrL(HkFNWK+1yDQ$|LCs#*AnCz>2=>^ymi;%Y z7;2}+k~{Ar?_pL#7c$X&ba}=4*k#pCdOy!vW~a8gH<0tNZwH!U(l1siAIL!>!ulV3RpDw&~Qtkh@tR8HMCxivOei{U`q&L4BY81L*vx{k?}`D-GUne7~;n|7d^hNAExWQzZZYp}fbM15<=j)`R`Ye=o z6%_EI%@*2D?8tbI&dcG-6Xbf!JixLNvMSX*ELE*u{9c)raM&oXZO*`Mw-@(a0KHx` zTR#+-=_44xFk7jb5{t_hsM=APXy{!qrmoW!bv5krGF-`5+Cm;?^|09Zk$-hmtBgmU zK19GTAT)(Ten$77DJ~F56$`pdC%EqLL3iiZmA{%sTfemQKfQm?(9gkE%lx7O+l<cV8r-nn?=hDy3v$WrBXa}-yW zBwzp?qwI>ghqTL}4LmYhcT(eW>W#c7JW##s7?w=d;;I%Tu1pmWYv4$!olGu;$b@{{ zpCfr`D7|Y=;q82mmiSLI{=eoAS3RB0U7gTUj;#{y9dnf|9gUram_6U4?haKd2@?sn zTHOT`iHxW#u1LaRU>cUVr*?yXP@hD7H>Efvos zUAh{|?F0exDn4#liR0AHyf45K8@7rp+Yt@QGCK)hm4kt>-2QdQ5EH!<_R(IL+3%%4 zj~idO^A|&3I1wlDI3R20{pt0Zrdr%L3u>%uO#8X8E6M#as$8xL;!5p%Rw}i6>U6r_ zbz9T#XzdE&a1ZiNK;O9VK;1{D{U}h{d5-x*{O>=2IkeFdx8lvLy#-tq^AYm>nJw#c z_Is{0=zVNztwW22w+ll_Uvp!}lVJsf-TR13Yg%gZOdtYHL>hdHbhR-9&dnhiOjE3% z(`sLtbk(KFk&EhB#)SwAU*K1*A4rUei~WEORVid!)RM94!#D{0#k%P~#EAL_WA;f5 zC8HxQ1!4oQ$TuH8y?(yP$Z=>Vq9MH2v>c^MtPcWUtQPfdagWt8fgPzbSMbPlMU=D* z#D1HYsHz~6Mu;VP$Osd1>3wz~pF%*VA+@573gUtY=X$tjS94<0RU*J^(Jh>%S750b z>^LlI52?pFUR^D`R}UyM_UvRvMSv`^dz_)g#IZ$?h)y7=!B6qYu(a#MGlG zljcdAUFd7sQ4!iQ{q8_Q#dgTi{lrR_>FBbiW!>0DS8l9tl~|OoDKdK$u2IP)Y9Q=o z@-?G&9UO|yd_2f%a~*_&j;iTO@Q>t+c{1!sdA^&(mpTKE%uuxI^|)Z+U@6~d_(*^k z&U6^>Mm23iE#HoTU?R0>DT<1=Xpudlm2Yg~=MABI#9BcVsm57ed9myR^_TU1cly)y z+SaQ*f4AW@-u6AWfe8irB-E_T`K%Hr|B5z?sx>CxpGcf&T4&b5X2^Tk$yaPn>q#7$ zF$CeQZoU6DKWCKS&v;dm^QnRx6dj#}5NdHu-A<&o8D`m2wQl>EH3)s4(`>OYX zJOuJj$npo%aLcTJNJnc$`j@Jd{a6%{p^Ex~iBfa~y?y>HX|fgfM)f%RLUb5f`VySw zR%<}AO0(%p&l>;E9fjM}idSExsBGH+s<4W}C_8Jh)8@KS%i}@-)wL!sYixTy$%dt5 zeCX<4+L3@Sk6qM1fXv^%NEC|SU%XAWMAk4o(9}D?T9J&sGtr~ZlfaHJI4F9Kz<-K=^G6j!6+~ ztRn(Gg(4IsrLZSjmZe&e{#d^b?i`f4!Hw??6{9b-RsS7(l7|4Zkw5Gj{{d~I1%pgq z_D}ByHVZeW#}zgT`Fn_cq1AgUOeNaNB2?1MhG)T+ytJt$*$Bg`DBg^OfhRs4F`b;! zJUn>+RFs5wbc!diLltghr3FX zAOi3;y``$2{V~gw-KAOrzf{EuxN=cL#j{JXu7LvnW<6tdPvhWfx0@-h<&(Unl~JlA zvF4wVCQ+Qh4*TYXy^4y*t`F$mNmW7ax@#HNHP05$%C#PW?VibH#iJQ}s?0O3v|`QN z43+Bjtv$=(i=oDDZ(W#?&(32)yCzSlsL~4}#K!QDRNljVWy4ZKF?92}$^`_<*SjchbBE$zHcI}Fq5iIp`*``i1wUH&E77ckXz;;SS3mW8fx@craJ#s z){BTIx`fv-@h>Rth{QWbLS=m$h6%3tcI@neDDC>8fo{tqjMJBUONdv1(arRlKKU1TR*rwq^=zq@onDGA=&gR5}w65>RNSHbOmELkx z$IU?Dcg)_=?v3>jTQI;ZcMQ#uwR2GBTd7VGsvc*4w6U~39FwocFbJLx#-?PVOSP~l- zp25)jE^O~=r{eW}P)Y_$EB(LCx#B*G#u08-wQ@!@#_qSV$a_Bl!4YSVt;?;F*(5gl z3|*60j!MJW2r;OMf|;yTql&c5`s3z5r2P*`ztO}coDx~U&dyf@g}CD62!JHSn*=D~ zZyT%_Ytdh}oT|VINQ>vnBo7dbf&`GV;)?a$<_R#q3F_26;XR2nwQDrMKi%lzJK@tf zufw#F%h<;u5L;L@*y2Yj=$C6oCF$nURTQb&sns_4lIBm8$@4h+=UFAon)hcV#)X@; zy_WnzVXKd?%`C#JpF-WSv_fUj+#onNM|0eUzJP_JOb4c`Hh`3saMj#nk;!qk=(p)g5o>I+9b40HqSeJDcA2Y7rN5o*O?{ zMMi;EIL0&W9#qNUp`a=QGL8I^h)r}+QTsLNbDlCvso^ADp|?bv3!hb=XKi*%7!fkM^ zTfq>#a}M)L@Q^P&j3jAcqtpoBb@TO?gR1olW76laYLTSM$gb!V6=>n`Hou67KYsI} zj29zKvQ6!icj^h(HTgW}Zgh$oNM=W*Lf}-?+R|xa>EIHXp`v70k7h=B)BQMPA&!Jb zCEYAS{yPg2=G2Q_i>;uGf&O(g_yu*LjR|&+rXROhWxNq-jfwLpCi;hnMV0BOqT1JN zIlv7mpjPZ_;w`LVgXPb>iTJCHJm%pz8*_KAM?{<_*ECa;DZQv#^vUcCy{WoQ#fVR~E7U zwl`#+8~js!oql;uiZtD0s6vwJAp_FsFE`6suRb*miHO zM@Q5%x6JsAuTI&V%bztC(0GE~X(WUrCGd8KM)QJP@~~w>i3OlXU#}H!#Gp6oHjNjJ ztJ>Gj>O`?~aq{m?6<&7a3v&0FW^(=h9jhyzpTlUmshzHJB3{xIy!Gq59C)DYU$$v9 z2fAQ(yenOnJw(Npr8FBpm7D5>9p zd@rnY9xnnGTqRm?;(#P60eMT8J4+3R)ECsvdQBK~O`L*Z9cO209xb!Pz~~E20dpta z(@7*#M`;S^FWl+|7O?Jz2|F8Q5|OL5)1l(IG4FX{~M01xcH zVEnkR?}E6&lJeiG$V)f>ZrD0Hb1Zk_PQuE3PejPXbyaY&mnKOFX>y5TP~z0HFNM?E zOI2E<&n8!nhFmPv@ra>SiP}Vv2X`r4Hp5;I{R2o-{H|0G`pWi;3Lp0WU_M6sNem6))~?#UZ$bLXZN*U4w;CCV2wrh&-3ArOLs0mekuc0xq$tnfAR%gZEgY zvXil*D&+>@{l`x3md6yWh2m>l8nA;8(-w4RZ(nInH;{z}FB#mFQjNCN(KC1ZugP8R zv*VM^<{H$#i&fr~BHT0@qOCU1uM^^*Haf8Gz^D~hKJ89D!>1nd+kdKeXz*(j+dsHE ztLNh>E0KKk0&5Z(nTTbG0!uZAWA!E%NA5H`xpeCKddMSc{}0g>qrg z)p)f3o@J)FiI@XVn&(5lt?{?Z>oaCDW@uk`^VBB);8>wIEi=ek(jR#1=|L|L`YpES zwXG?uXcktUtY)QU)Wpy&*yC`s-)Sw%YlGNZFvgvMGb=UCHDx0}Tt^z$zq&w4ZGG*7 z**DEFqN4EvcIQL9M$3WLzI8zw{`?NB{nc6a+g8NFqkO$vLvKG#E<>{uZWHKM5?cVHwtVt!Da{{}eEqh4{HaT`4#tnhlbkVN4*zkiheNN7b}Y6Fe3>xF z+Sa(v#snjDRY;-H?vfyH_vbcvS7x{?m|`9G^fyv-Fj9Thy&-GVyWNWEcah!vMVsrA zSxb#buPs9g$}sHxr?S0kCoWt$`^dv;ZJ%TIPYN4rO2lNB_u&M}^BrKBuK#a!8X`uME7Y}xeXdYKU0uM{ zp#K$I9EqXBUuZJL^8` zMf2zGI+MVsYrH=B3{n$Qh7=F)Ay6zK{qUmhd0MUDbAJhScHmINL0TKct5 z`h0paFKb!D-Dh$R^NEBae$x6<=!VNn0MyK?Y-dODx0l zG)TRY)>fJI%e_2C@7Bz}F05wxPh{zEXM5@x?Q4dM@GA?bp259fLqo%(l_!H8JB;Zf zS~}w5rRxuX0Y4r043Db#=P4g9yE9zr>4oi!+hlVF75$K)q=44|z^1H-mDuMo-lixe z)YJwWyEXk-U+(3}q-HlO#DzB*xu;xSel@o>RrIIR$i3>O>g$1R-Fx3O%_XvVfT43O zL5Iz#1NW@>DnfK(_&CT{4J8~)T+i!LS;nX7m%*HxAxCRfI%*!IGC;0JD=pC)rK5Y+ zG+~`y!@56rO@4F>TK1GL*4sGXeu5FVhoiGHqLq6A$TA{pCmnzl`zW@3?ObusQ1 z&@3g}S76#_;3vi_E$xARL79x%8s3FF6WvXfSv5ODm9~K|&?ZZNrY@@&T+4(4yVVKS zDpaJMglgJ0Yh-{7(Y5MS{u-c$#3E7&33WIe?euIHhc=fl`~*Xr8$B0V!v)o1A{;~Y zL#jQ!#TMs2VA+nuW)ktX`Upo)WaoXvHuy3u9QC`$+R}$OLrVyqWZE790Z8a6C!3|a zsEBkqm~%B(7;4qR4IPCIK~7^%y6Qy>7XF5w+Wp`GOm&rP1>Ta|jq{pYYs&hP3MHd& zvt4yTJQ**0*Om?&Jv1D6nx3VO^*A0edt`i!x|__WpRXg8c3;hG(B8Hdhd?SZm*%e= z<{vyeTvkhXyTeZb9ye8rTk*d-cFSvwA9Kj2-|7o3i)wfnb~qj9{|$n#D|=^M$3M47 zR-0I~eiArCvqZxe>5R`{3#ey+o52A ztfM<8Gk?ebW{jI{(M(7lZa1)oc=&OI;Tx!&%p?C{RQd9q#VZkX$$|W_kndkX*O}BP zh8ZkOFSN(k zr6N|3{lP!jK%lQ*L0$Nq8IuFK3uHl~vs<4pf(pvfRl6RoFMjYJk&w4Ly3$iV9>+Tw39p3EMPDGh1gb&?K6JpI?nE|w#~Spg5vC+^-s9PzBHR028<@-@NrBt_Qpa*uY_Uk;uXLt z^QQrA0J*-CIHOXfFn3j*Ho?weR)%gTH?Mi7Z>6h18SNZr9Y+ z&E83)GG{OEktYvd2bX1=pX*i9KYfB?;3# zfjqpugG>qM_+(xSA#}amlNAM-t~!r>T>|O|!6X=CMZto&?LG@6OU7F(N;89UvMnnX z9-yG(=lYcEdLO_1Hhg|s!K+}P(0`z=h+eY8HB=y5BaXjPPt#9%2e1Evxe_0TAI`Bq z9*X(i_!NaB-L;n2^xb-;j+wPGg zE-}xL9nRKE$8r`(dSlF#D8ph_9}`9Qnj>-Dos`ovm279^kN*RUEuGGOo$%J##p6}n-R{-R__9Ixkh%#(uS%|Qr{TyXDyUo0KHu2D|~ko|1( zM5;Hu+RZMduS^p1>KgHLhM~j7QJ2-sQ~ELm=|G4U$9`hXWKUX5xS>8k{hTA}jjw>L z!0^yVYy#1_%d*3q>xXA|&1E_epqeIA?C*x4649w@$W))2J}(DihWKXqN^j<75T z-P#V4cCplsK&5;Cz=J?d_OiX$T2&fhKSwE8&m20yu0#@N8`py(g&q(kNEkXoh;gbEU z-%kDSdiZN<4=c81vS9G-VOP5y?jHwwha^Syj{@a3niY!gFur2Gdg&x6FA~HU_U8>Y z3M+}0I3Bp)H~;2%;g%$07R&3(JPe=aA5LTPDu)M6c3dR5Hhue0ItkEj6y#kB^wGW! zjJU2Nc+3fe3&R z-ZWE`sb}W>wZ+Nhb(|k>*V?}B_jmbp$?aj&u;LhAm`9{qQ1KiMT~rT>ga!=t3N$sq zh1*0w66%C7jv!8k#?2+R6?kZPnffU-F&MKf=AmbC>(A3fMtefuKFx0H{PL1V#c*si zOp(dpS6kvwy0k2JUaxQ`T@h4VHC}l{1FI1W-K!7j6kW`fGR%g3t2dW+YW|lQ`*KK9xl=GcC3`Zx(NIDAC+FckxTg)(+!J=?bWuuI;RmUDiw$5X2# zJx6JsdeM8(@!ondQEp#{E1mMoAPBQr47l`0XE>%s#YT&P6$&<`kxvVTKgEQK-ht8m z)@l&+lA!z%#SZOP#9AeFBg7GnN76K)T`kPz6rJVs9~kp3H9%Sg4LLsPBuS9 zFDp~fe*O^_ynd>)FY?~RRJ_UNRxB3{uaplHeLd+xxF#Nb;1pzkt@Lz2vraxH;msJ8 z@w&MC*eerc&83#r=9BMQi6xaUS^4Sa-&)MqFg@2vd;c8d5;*m_uH)>~|I+((BgfjI z_QY6%oj^;fvcz#ni0mb^M1EbsgIL9;t8xvtAA4S_$acs3!R27euOnX-X={!*$J|7x z*4i8x*;IH!wObn;?emL2t&)%aO4)d?f_1K@e~a<*Ju|+xMp^)|m5ZGg>q#$97w+(c zWwJ@Kl)->4^6M~~%4$sA8}clZBcoRa=pMTrKx+Vqwn&EBI#$mkWSB>V>%~Zw#dL^S zuX$9PEVvl+4cgV)aelp*3TWmwEynrQIkejt>n#QC#aY-UyNRh z=g*;Q|Ds-b|6q)Fpd;DxRZr|nYkyW5UG48Sex59!5z)_u~-@%D<$imjru z(!m%ds9eqi~ zxB2;6D_5lDg&kV_D>Jia=d?XNjWHCMy~hEuO6HdpMs{M0ka4=yW*K_M4TD~-0|ze} zilWoK*cPOJOus{~po&HNVRc4SVNMpYl12Gwmc-b^gMfD4*5+W2um;R1zMCym#bA++ zIl{w=19FDkvaPnE+PBSf)213Ba$TP)(`@TrWzFe*_$!6;q@n-b_$9v@eo7b0uuaW7 zOv2CRJ#wBD{etX%ClH`5!}O8=T3Me`gi)Gx!2T(l+^GJqdK1b@5|K4)u{eBG&v*^B zW3EgE-9qQY2ZGHn)nieEM0uQM!41{%r^6jWZv|jbAm8y1v3C`xmY>2Uek6~wp9Wv+ zjB6u3$MgrnVS-o7cBxvv6_ogcb5*dR?tC$N;Y0kJpp5UZgGXV2@w%HNt8j_2`6K zBKgD1PU{WcNQGD4yo|A%-1w|H3g5jvxmseiDFCX;y4xTL7Au?wVI!;DtG^4e}C19q<)}5Y|&9jbBJvyoJSqVWJ^&+pwO;E45q|@R3 zUnNAcgR^*6nx@9Vx6QS5nx@I415-D1-P{^99VON^Hw@gG8q3WF68qe<=m+ zMrmjTkq!$u`TH)6mu^~g8CQYXMwL}s9w~$$%wuNdJ!UIKYE?gZ5o?rPd|Q%sOa0Mt zGOX-BKcC*$f$VJC9nWHWP24n&md-Cu#c|eio)_3csZ-i858B%~;%~ds zEj8vHn@g8_*z9iNugBp+n_VIo#{T9R{z$mt?!wK#c)NHJ(@4Ed74hTFbX}c0l)vzw z0D_{6P^W8yehziM`wK89D3x`-9?CzsIiF|f0B|eILun0@)E)~y7tnUdafc|PJ=}!#Q~Z8 z$1(lyKDzGUsOQ!C|0x|SkbiQ<|6AY{`y&+1gbMci-`dX?*_1;08HG@i3e=eU=wDNq z&Gfledd@7hmGYf9=6IwLHyWk0n5AAM3f6_TXDPnBY;~- z+|i7~j|O+`yo-Sb8g_tgvg0RsaeD}yYSqyLP^!f_n3@4(mLnE^Rs;n}RL-J}o1d?c z)t680Y+TG!Voglgv>j@XvsZ(wk7KTeOIZ8sx;gEO$wsMMRvV61Zo_LGg_^2wipik; zGTf869&tvqcGJmz$}p!0u{9XWL@cD0y&k(R9^g|H`;r{ zXOzt_4D1hf?-Ot7)3*+59yH47)>9H&JWcnK+P^9?&tE(SUrrom{c>}1gvm?Vmn$)@ zHe&aCj>mif&2?$_OabcxjV@9v6hx1^mEz0HM-5KWoY!IpBrdTgT z$-bA)W{~H{8qwsV0wdv84`zV7C;IjlHfNPbq<)H<2x5ZjFp}IU{+?4w$FQ+$JKLsI zVA&D?ycn-Jj=ouQn8{*xE`vNN19R^BsMPTD#S8hDnd6q}bL{+av)GMm?a`Z-<^=h1 z`{ltd6!%3|@0*S(KbJ+hk8azL_ly-jwuC;oQ$a_g^L)%6&75f9r=3e~L<09sQDf*-C{tM6~b*A;Y?4?DQZ2!F!)|vx@v=4Y* zQ!e{%nXlS;K&0>|{$nHSY$c0K zRB}kKVQ&Mo^O6uA88KWmn%avi18( zjsGZJgC2o8x{Ia^QHC?1CfK~*ABl}d<`%J9 zMeVl$Obue7^1|tc0+a8Nt?Bxi6Q)RGVkaxMCk}no3;HOm#3XfKuF8n7_i3tE1VqPV z8IvxVuAU~GUXvsFJ;&4cSTZK4i+yKhOw`1y#OnPxgY|y-eFhJl%6Zj7aYTxvo^-0%Kx~ueQyY?ZJ~r56qlNjFiqD+&YijDC zOwG4@Z5ge1XkmlI${*?CoJ8x&x`qq&ppr3@!9P)j2vpYn)&aOkW8F^-1_d0MCfh6~ zyf^{Y95fBMI4_^LdE_tW{n5wr(G-j)<4mThT(LYO?_CBin#<0)n#jQFW=GzWb1?zAI8ya4WkxibM)Q^?}TeevVxC!SA{U zkx#@MS9~&)v{*MCX!mmd{j1+~7hZV#7yXdo=NR;;X$Fd!$y1Pl8x$?CK;SW17QdPP z0c_C~^I)w!tRLlRl`a^m8u#Ps?4hMm@DXh(VO!s zd@dIu*;(p4hVWdjpt*p@0z^FTGj$o9d$i-2z?fVt3{G`syt?};zCZ2UEeT2r0-2^c zwU_ukPv6v9kGa4enOkXjxArv7>y_`}Ge@=A&!R#Xy}mw^^*QdiYCLCf#oZ3B0et0^Dc~NaTAt`Uv6ZN;pGB39gLu(;Kvz`H@dCuCkWMxH)Un; zOv#JT;IAI@`x!(`=N#5G2;DG2l_^jIUTDb;0iKEwj`$8@j;NtTUO8=mj%#^g?k> zN$E_hq@pG52;mckzZj|c6+N^5`XO_SO(tbT70IrV59sS;cm_MRvg~QUps?ICepue) zO4pfxhQyUwMSUQ? zj#O(+Nvj$L+{?*bS&*rz-vN^PCj7$4Roo<_uK}S8A%b;EL$5^zr}}y)&R;e~*w^J$ zE>$W%Ps>>(|E*zAGX{C56WZ$cnJYovGqe+*mBk}gc{z;j(3w}CESxkqR<^Ii260>$ z0eKiMb_4?8-D;sb1?9`_hH*!LPTiTVEcF#ap@z*;K!HbTIxfV^ru?PXKx+dh8o5>( zT@}F$sfgrD(+CP1rY~h|fy@Nu=<)bOXFctZarjm;{|$uj2iACDo=fwo5j7O?AoKcm zo7-p|5ftDto)-T{d*6;a3f-IN!lwh{!8TK#EgQgRsYAu9^=5uCQRUa@!wcYyIh!nk zeEPh>BMws{5Rcn$HI`zQkbZpZ;I$frRD`(iZFG2=-e^Z+^(Gru+Gtd81JlgQ^U*rh zAiW!V-3+4Hmp-U;?v`8rrnyK^05h#IYP0>|+cbYZ_dR=4N&dK#BM4p6rJ+}q$35Uxoad$ktc>h*+|K^gqW#Y#m)31v=S!?vm^wZ?Q z)efPwQ;3i9N_b$EHveQLVIFDB&^TrYUbz52)9PZ9ra=iNGg-9)Stn9@&eEK!*?X;T zlb}abai)Vej8^lufAV_Z-Qn3$J~FUX#Zk+rMiZN2vL&K)-%MxV%(%1gpxc(gga6J> zKDiDj&*4|#$gpM;wb*B=(ke-CZKB~@&O1yO3v>F1CNj5n{$)-0a~ zTx9a-*Ivu{r)WK;m$pWp>tfyLZ}Yag-3{=bKfie1e2BNQ@n{Ga>t)vW#X7bZbc>Lx z<2r3E@w^F&SNSAf-?jectskvBXHSbHVVmHx)95PNSpm4_3ic>R%!T~ zzhi27p~%04vAU+SV$j3IpX9cIuzT~kR!6&#j%uChKY!nNwW_>P;at47H-DC_yQtM0 zZ~mrqf6{)Jsn2kvGffa0=Oqbonshe^rgP|8ZFFi`<4#>l(sgKAF*bC<-GP0Si|EqL zFWUoE_EK&^wOFC~0C<|(OmCAh+UqCJag{~U?mm}ycXzrI%ds&fyTUEo#xA;ybNKlR zh(8ZcdZqT{0}&HvZ+`ZdgOD!! zo3c)*H;4l~FnPlCNJ zTSR^Q7(7^BK)XR&AGmR_*?<$cPGB14r%8{}!>}dvb8}Y^Kdx3v-uO9veWk_Uj zZg7l{uQj;N3~YB$dN-96aKHs;4Xg{&wgUFoe@n1V&47os3qA{MT=piJs206<5eZ@W z!pze{@cg+q=D6Xl_lj_>=on1RG*H$G^66(zZ?m5cf6RT5eZ2Scw(S6v7L^3H*HFMDKrsJ%tbJn2Bh$HvgPdfRzD1;vg zZ}Z1DG#m~w{brWA$%*r6fvBTSt~>tyFY~kV*tY_0heU_FqI1HEeJS%Pu!Z=tKq~=V zZRFx&?}AHznj)wm>{LFaj}ZR_Q+cN2{*S`?=uhe2O)|9yW#Zm2NEndx8_4!X#SFKw zHNhTUB0uOx<>I1aAHTkH%i}=C4S5;4*e=lpAmjA!oe1qpa$~Let1w>S!a7XV5@t!L z9ULfpFLuw;U@#MD3z$}EoiobfOZ~&G=fkt_-0Rh%r)JFo%NK}tn5G$091GXr%6>yq zSJ=pX;Z#~Hx8nO=DuwE*HPnggb{@>2_xE1yCe?Z1RJ_JQ${9kS)52aH4r(owB!A+sxMq2#}Fc1GH*H&)M8>Fr`?x>gM;58j`SFDUAOlv*ZT zT?<#J@l`T4TcOG{6TjEeE!wpV!&BIep;{ntsf&Y~RR40;?nc$#L^NC|Ro5fZp<@{e zh9EboOIGKnjx#6a1QqoAj>pv+C6Nm;#Ebl7mURYBDqf#R9N-CGO zQ}~Zr^ZnZBjJHyk+HSwcy>$U;HCOXkS2OpV%GT9v2fh;5Ii|i|@hv^tHvVLnVwb0d zDja9MOZz!pw^dZMaIGsSD~E9J#ZZoE*W0qpL&xxN377D^B^Ay;YF!xFlv35Bk_WAx z+*R<8>e=GvSzZbH(v&RCh8;_&EMsfpg^F%L0MlpLl@wE>p6t4(wY#r5bTwF+Iol;B zfsj55Yrllq4Gz_vU$xDh0Zg5xL zXfbra1#Q6n;{}FbkPGWb$_Q35>DrQ((pA3%L~pKC1#`tiNToPWP8}59SedTHwP({? z^A(z1~Rb$T?X7&JTH~9$pDqQ9~>yt zjJ%7*XR5u^ewfaHzKzT2s($)h6YXpJx{1o!;bB}LRm<2b!)kCavww9XX%+YxN7?u{ zp+$@>0wj^9o(`K7SkweHR{@8v zT0{d;AHMctMBv!Ik+zRtT!p)IBy_`LlQq^%k`k@d5EFI*mLKSeO6G{e7Eig8$eIU zcn}$PU6br^`U>;)I&q|;kL(`_|6T(YPfYh3e!O9neNyU?x%u3c;XRTvl;Xdz!QEDR;VTqDI8cieyZXJ#ykINbr7+De*LZnY~8t->fq z=4=_}1P{1udALJB9|@17y1D{d@9(;E5c)3Eu zI`hB%iAP-Q{%k{Jllm$iy0xnCGqpW6B6g0dHaLJB%O7fJaOC#Y7RxZ#t|>*(s61D% zV`DIFdioAGeh~Qd!&+YcHWr%(bGCSv1J1HnTPer}?O+?B&VV{bbP;gZ;QE>%d1dkGI@{C7Oux$yMlp488ZQ!dTWV+0S`m%7il|`V-k- zCB8mib#gEA0BKc#X|P6tyL8UZ-xS_K@_6Pl>$z9Rm5m&SjOlpNX*cTQIInORUe+vGC~ zNhjdSuH?jJqUglkXNFZ&_nk{ zSM7ZRkvr?9piuwOa#~Ef_Gn^Ux#&wLBL0N{kDAif+=YENCKuyHV9TEZ_Ll)AMz`?s zeCSGr|70%UY0ciqo!%;S!g8kSxIE4-?)*-3S)-XcUA{yLkOt`!vcM~E=^{HDf)4!b{PY=}elL$fbo z%Lv**2Z@)14ui~UFBXcBUJQG9jHjCXiisNEXJiup%o6N~5$;`xwmuC-?SYHEsf`MzszQrgMJI4?78 zLi7{WP<6-Vnwvk42Y-ZY9ATvIqCWr#N2QxFc*#C~s=*^c#@o*dPy8HZArHMC{#ZEQ zCB3q(WjQ8)1ubvdZURtrVGXGfD5INY6~pE+tC{uNdVabuIb{1KGNPwa3SA4wSRF(s z$?G_!FjM^vlAeU0LjzYm^1FtmcKW**v~uZTP_G{Da=>TTPlvghmAN!pjJItZ%otmR zhwp47zm0UO@h>gC-47EOpEwy&{XC^Gu7Y#OG+~P{Aj~1bE7y0CXKgBXI~PeKi4F{a zsX`)n(Vuq-wzu*2k`Y=VBYjQLOk?1B*JK^Jf9S_rK-z3L&eSd+(6~rmNWe)bWoVY$ zw9>MxAo%#~=7Q5y#;pm(w*it!c$Ks$ysrmP?Az6H6XqMsoa4*gPNDMKUrB;Ab=Tjq z?L$57=B2VOC<<=k0?0(Ejya-O#UWF-A-FW6fdW86mh#T(8m7 zD|KV5^{Y4W-y<+K2nTeSxPYt8HeP^Oc;423e zAD4Z+m9p*~M{8<#xj~$4%pJSQ-~8==bZqTf2DTdQp#%TM-*2oZHGY-W4nEs&*p75u z6hW(Tckf?SqbRkt1hc@m%SpbO^-xpXZva-xvo??`fNcE@FSc)m=kJH847}`%lCht_ z1q(&F(c6bIMIbNZ7}PPCg{%6ha71PFg{-o-mFbj^J95h*VWEVRxg!jsvlF{5$pL~N z&9)AYKlEX~mslDneQo^ds2sBlzV^6dGlt$Vr1`Fd*wiYSGX8Jmx`ZxtG)0WN;f~nx z_)krH25bUHux)ZH4qe2`Zzl(#u&+2%bHV53?!#6trKv=bmRoSr)X!WN)Zn%8eQdf=p}34S6M{+ z)S+6lQnYCgD^)(+%Zi>~iwKpzt)m#5SLh`Q>yVF!D`g%d3L7j znp;TbOf3sKU)VKoyw=G)MsHpDu5MYot4!$_7e3c1Fu>>ulK)T}384;q`ECq81oz)0 z+r)0(^iJZ{@85wfywB+w%p4HJO4s>_$|6I?3`!)-$D^7u+!#o4E!+BqS%35MBQo}0 zfOLz*b;d^^7>?oSzIq^=4mR%roWo7mj?UDYV`8c^q%>@b375cJqOa zsVV8ou0?%aKcjaXd%qz|9!-gEx^m`P{8uw}hZsp^RR{Tf9Iz2)tlpxd60G-uS1;aa zru2zmhP&7Rlp$Nn%7sOT141g#Y5B4xtj{nmHcU313fjfG3rg_+yfscVDb@7tXymh? zT5*4+8v0~JZH~`gsV+1+!(zDQahXq}hM$FX& z&Vaw|00xL1xad*d%^VL=Wx;-@g;w)2r4ZyqhGoqalX{-;G0!Mj5PMZIdG3-0PZjBS zDNg>~r6tm#g=<$M2bR3CJW}mZD6wMZJneIlPdUlitXww^v&gW8YE5c^RNt=pr(4o6 zXSWonEI^ffkD3oC=Yds?hJ3A1^YUJ=zGzp7y?Y&=$849!sO06OMB_dRP?u_&tVNj* zI1o8L|DDZm{~N7Q9e92ykN`FLBL16+{m(|Z_>Wak!#rvxcWIn}#G-@aB{r@+88=b<%cP3Cyg8!rd)Z>4(eH*BILkR}8RsR%%uIi@Re`it0{~l4F zg#3H1+=$``YCCClS`O!I$4X%dUiQ19m2Jr>?qfQ;&Q2aoMj!pH2HMJuGbTM(9U=xf z%_CULrCN0s%|Rm5}}h$QMzdn@4UHjwrJ>sHTqqeAITd=(y%KaELr`3e?Fl^@yjqz)o8! zwDQ}oh}PAta<8v+^n3e>b!2}#=5#9q5viw<{%~b1DO=VgsA@V`h7YMi)h>4%P!kTc zP7WmHaOri{^laZOb^Xw(($BEZ9c3Iyz6+348A=FezWX8Caj=lF%3mTI*a-C{Y|&K}0i0M%t~J(h5Y zTk$+{uKck8;;aOYb9ok6oy>c*Oc|$}WbHX3`}{;lsZz$z`3UsiMjD#QlMNA_`t!~P z>~ui{s^Ylp3>I4BY1N1{{?+rHBcT#*b$%b(9JoBAA){svZlWBSZDp+u4Jm}G{y^is zjU0m&gWLW7R=I|T`grw$yH#?@s3P~Ov@(s_9#eBGjeQkxwnG(va#gPtyTr!sb_$oZ zk>LW~;mo&krL>PXZ6?qRF<^h~M1_(~gSmCBJ7Ngkp9rk3qO6~ds!Rg)^1|^>&s72-Wb6@2Jl8OXu}@wXlg>F|)-Qx5-Wth>B#%*xp+k3_)H- z@yuxr`sRp{lTGC@Bo=N4N}SvG$@=4~z+95g#80v#DT1|WbDe~8vMr8tfxJfV-<3q@ zXMXm@*#IxW@p?IS-Yz4@MbI5>rnMU8u~dpo9fBFL2r0)7D-t%ZwYr8+-u-&^?48SZ zqcHjj0&Dt@CVlCvmp8d*8+(F_wH;Q;ZhtTp9I9JYF|G@sgH0*U> z3mJDu>~IujgHZlch5C~6=g~S~_co;415Am0XCeNL@K^uu)KH#vV{zU+H#K2E-KU(4 zjI3;jl&s@lIy=)9zZFg-z zSVYv%MzRW&Y2WWUJx8uTad+Kx7#0UBOl~n3!~GT|jreabJ(j#Ls5WC?GDcI5ZgP3H zD%c;&c0}la;MCz7za+6$qJ-L;vXb(~494H;mo&cxh{-85>wX|VaosJ#+}s;Ha!BS8`T^`j&IbBJw?UEMW)XD1CCXglqiL3_U$2DP_di=tq4O%` z`Sl6Q{0!_Gb72Xi#$0+i?5GmsD${J_oFCLdqHU%TJ@rRT65ph2tnw$nLv{9dpnI7k z$mY-Ra2}8236iy23nc z=>Fgght4c_hWct&)u(jNe&(#$WDt9uznSH|&mjLn4?NtGelqwzzD{(3(_Lh(_Iic8 zk#b#^?S$)0{t2!*nXbNQttUU@y~rOkJEHb=m+@yVb&fz2XLGcq!<^xXw1>Od&?fzT zC;bNC>x!1N+>fdsUu4;8u&AU5_yt=JuqGhrWc}6bx zM-4U|OQRcn>{H8OU=85!Ea9_M@Wq{5dwu)cYG8?55q~feO9I{jv$qE6_+Pzm!QEacQB)WWQ_2AFFs4Y`>=2qxd{J`4a#_niefQ z*AElN>vOD79;&nyev?m2-rC#UO&c_L+%rix+7xa6Ygt#JVLEVn+Y^R1YXsm3IBTpZ zDH+jBeAqwTj(AM&`dbV2L;j#vj*pOfMnrE%CXJ5bCOK-Vi|~v(rW~!AC(p(X5Vuru zr^1u8-jr=MB-S5CQaWrKii_I}dRr@=dN20Lvv>WU$tESm$gCl}{ZoE}! ze{DfNOD-W&U$!JAs~*d^Wa0$Ba!ZQLwfrga^!4jl^mzWxdl=$%=AvMRBImcD5d$j@~Z6UZ@9`xA@(oi9U4sOWogI!6q8d zPa?&=d`~HOMCmeNkD{c9F++NgO8%7cUq-hBD0DPU!I2XUNMA15SLLxVMw<2LqX|ClO;^-eZAAd&mX1 zy75?phhV zjN5(>*i`NRKGn_1NbFyQUzY;r<@Sz&bmIrwg8tOcKR5f{O79#EJZE|)!;AUJXc38- zNv49@lxzFU{s249>!#h}jzvU`DXjJm9LF}onO=GP2t_wrcYah1c zEn|Zro2@ETt-7CxnluLz9Iyz^8wDCaceiJeeWcL=*7BJLLu|aU+*W^xg)3)v?qyrG z{mS6?f9MpqeuK32d{Cs14TfJLLLEg~NWZbfvt@``AqW=LD~fZh#r8`Cl%jWEsd9a* zHSk}@AtN%uD6Za^{1wmFQd;=Lv?3VtWUR0@4=+bm`0YCplSWn|b+^*%wr@Bg{A2^$ zX{G0!gbIu?blIlwqFr5kpJO~Bc=w_wlJ#Zv{S9(UrMN(leR#ZPeynL5E&<%i`ErxGtzUg8nivb#v<~HyCk)1kZ^b^o&|*98+|yzdY`} zwC1D6t}?GQ=n&PH_b*X0I?D7DceGrw{A}O!dw6{mXd2xx>g@mH=IIf|W8H@I_U+APK4K6 zihHMbu#Kso{n2+t5me2XgZi;MfTUEmUUet(+^PKQ4Ue$I1)7}$QWF*Oas$|UB8gW% zf83#y8M9%ht)SDp+%R)d0uBm#3PC`ygmJ-WZh~3~^Mg+HSeiy*+#$F_ki{jqli=*4 zA-KD` zN;%b9i}N?W-}wvT`mHr2L)Z&#CO|!R;*f58U02E8$Cp926$4=Uk9^n6pMR{azKg#( z3Tn4`m-RXu0q&hnkdgev@u|S?x{*?N&6{pG`ID&&^o9f1D~sT_9nRSg9jxFn;p$FZ z3s|e(2(vRn3nDLq_<~1jyc9sr!c!nxL{Cs#-|Lif9LI-5QTwE)=4*R~@hsG#IvE3H zQm}y~l1_r{76A~7U^xx8ayR9vF!qSVt#7Dt;LP@{cPPx{=WP49BitjRCZL|4ec;X2 z-J7=D9h+&&FIfI-VQRoeE1m_{Dp+M0Cd~W2Dcf0GibowuG>^@j-HV%Sek0yM>6dOh zmbK4*E!*0F%dm*o;OLpB%8!Pd$kvr0H`Kvv zkUC)2sRfGLvHr937|-qR>hcd(D7bcezP>ZSzvt$!xjGp1hndhzn{Uk4s=7E{AS>$Z_ia-TrX$Cz*R$o?{Q-1KDce= zzu(Wl8F&_5@Ya_#I%V_v8?mUI4PLOq$N#FK|9Rl|x5>c!J<0#9Za=TLT>ooq|97?f zzgKrV*0lfo(@=z4?M8o>P8V`K7RA9G8$N&U7_#H1QwR$?-_)Q%489*dIXzd#+Gjj} zmh7m1<<;!@jw=#{Ljir^Y!ripcTXu9az?rU~1GqBr`^=<%*esWg zNmQ#jculCk;Wqm*SGi$daWvM&2PKeCV7K7afp8zG>$=2oCy}M&%OJ>kuD;dV(i+CD zxyo`a*W|6Ui>>FeEL507JNZcE(6L=v?8$3%wmr6_Q7HK=Nao}GD$J4TjzT<_FKa+3 zA&$b zAKozSz~8&$kB!t01*h6d{%M!h*Aildc@+6x`${=oCJQum+tNEejqE;-5&F!!E@QBP z{Fhwo6}K?LnfmdVeHNFA#$tT|LoFNPoAGVih8OU@@#)9gfW33O=Y6=54d(+z?eoH* zsj5X>_ku+2Y&+^$Z+filP}c zJ(N3_@ei@i8J#CAf!lLm6l{cYTgASs;|*o=o#cBaPB-Uo8LL+F-)9EaCbB!ZS@D*@ z3YFg+WgiPXAMP3pHfKoOT8<~wkjgjdNIb?jPPS(18+N{_jTfh6vXYy*8Oq8>%T}$8 z|B}jo9^X`udmR5uV=~YrXWK~WQs)TDY^zBYsvDnGDH?>CtrX=FFAr;YZw!s7k6W?G zXXC0EapW!rZ;$ik#WbI?%%M7l3r%tyG5BpIkSYZTSv5FKN2)v6_afH3oXvdS=WbWc zvK44BT$sOcUe{X5!KdHZ=uIqMWl_CZju;@ff@Md>*s6ZaHe1Q&E#ECqRhuHp)Fjsb zhNsm>{Sg};hD@_TFgeO^m#Y&2G4y$I;v4qS>6;y-U|NYmujohyEU=;Uxr@xV*f02d z78E>U@sv%RK!$jb^gNMP7K$=X$Q=1lTta#k+Uz@Qus@(t>dRHh*(+ z*%3<1w`?1wLef_PQpCb5lo|uXM7(k?#KH^=U8+?od_|OKGG-{rh{5+#tWpTtBxYh) z<&?X`CPRLC&&P$8y}v#+_UZ*=|FXKeD*i{s{h!V#q`|_uU$i3(mX-BkJZ(D-y zsMiHgSW8a}ds!ZVam#Zlca{r@=V5{tVzYE_FVs<~$%Spu*|MpCU9us*)f!f6x7Fpu zO<`$$B(6hC>d05Iw9x5ocbWGHytVe4TZM5WQ178wFD&ql8nuN41l632eBOLcht&?h zA+O-avk*%t_@){Z)!|@ROj36*-J1hmAW9#x+3?(}xb0|dWOw60SZeB>Z&I+=mnX-{ z&%-8#4Ot4mrnMzVkM*dB&%w?s`xyZ69c#AHMcaK}fe*$~F0z^}{JD+y;*OwI0d@Ja z%S6=mknss5Ungj5m*0sm>7BKFH?FW>zx|7CA`_$eJ@G>H2`t{l*u-JiFck$lo53K+ z@5#(Qo2=3^-i^h}+;f|M+B-dbz4b;}mvGCyXfuGH&S7|3?v(VQ9}0b?s5vLr+rBDe zMNEz@^z2i?4p40v=)iTsK&w1W59&f`opL@i+co-}hwR6?_q3urDXmpx6~2gtBiB}TG#AeZ9DWxXm`$jR}rz4kja-m)q}6- zN_58swLcr5OX#yZf1~WUf7IL4%J~%UWG+iUIo|?t-{nXhDbztt?zDEQNV9JQ#H;T2B_C5Q!Tr(rjd55nEWDgz?_6Hp9%BgwFJUT+-ZrVL^8xsky^CKf)cv;2aOMY%1_>Qdw=xJwD1|30hBE`fswJQsm}=PiH_{|Lff-cb zXC(lLsp{AskOo%}qI%0B0T5NVrcf1w51C~kSJCJMK%7rf+H%1oAiy*rp+yDIrq9eo z34j>6tDWx(q5xAA(tug<8bp{eG9W-#3;+%~u?>;|!A5jBx|TIMwqgKjF#u3XCl$Ek z1OkE|p-!ooyrhu#2;^>P2oNShjgFmv5rVJb5%2*@lo$z>2tiD6Bsw5K84y<&6x_89 zVueBg5N3tt1URq)6vRpggRqu@S)p!#m>58=GyFl|j}J#yCm#f z_(w1cbM;1MXM_ca(ydsNC8h zNNF``-kFWB;Ek zySvMOsSLlBnCoKb3}XC?C5RZJ0#P`E2tgFsrnwTj0T5*fh{(kdJWUNbfe7XHg1Z3; zP=Ba1>)A{?)4${~o`#d|7*0KKTiU->z_b6M+rP~Mt#a8Fw&e|&%CZ3&|AH}5fu{iw zAk>~bhN&zEP6s#&DIE}ACMtIjB`}pxl^zq&kp=>!!XMTh1h5A{65+@JEO?|4z|1=- z@LEgI1)*i3lK$il5I-u@CoA{{!t1J*>Zy6Vy zwjIDN`rTdL{~`VVNtXZo|6k(#i#q%w5b6<)1hj%<2v6XSWsm`=lM&u&a56wZd_uF1 zhS>l@AUymOgb>91pN6x!{8#)4WvV!%x}r~a+(?>$+@OhC%tj>Ac{f=Dy2 z-*oJxOvAJPBJmgEzkK$WzyIwO;LaT6WD5}gANKpd+xS0GgBSgOvhXf;{} hyg%8 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

    KSOOdCiu)@D49 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 z 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

    (!yliGZ#EPsF`{>@ zJ8TbDIc8Q!?YEe=9xLIU`_F9dt`>~ZGi|zgY~0uNn8Ov;>noXzJ?CxEv_jaf4&~Hq z&6YjShsC^M)y?$ha66wT&G#|yy6I`YaLZ=#$#HD`^-Gq^X!P-w-uU9nZ1~3QdJl_p z_fLKq?Jsw>*nVrqcG-WMz1_2Jt=GLRrq|+r{PUN1#e2=!_$qkkj%?S@q2ae*Ch2Y0 zbn?rOc=wgu+}KZ9(PoK6f&1Kg;cmYy$-J0BTG1iqZm^zmI5ErmTyOd9_^p)egFSL+ zgf{sbFKPq%A{m*P03Js6nHvW7p6~`<7B21x4K^y3S^->c=qfN)b7kWg%*mW%7%uwG ze(d=QCwHh&Pclr=9{5R(3FdsZk{V5FFsr*%RIHEZe04i&cLVN04FZuQ>8&@W{!B1L z-kg#NB!S)C-Q8{6UmS8pVouLxRv1V*2syT0RF)+whtlzJMT;vhtS;s2C;c7OsoSLx z>vwQ1l*y~QtIV>vym$^VPAZDUl!+SA^j(0E1L<2JVo4B@0#Cm*-VJIia;rCGUV4~P zl7F{3%;+FiI>i7$yoVK4cZ^KSOS=MRCZ=MhFivw20VI(rB#=lEB-VmfG?HZKkYZyQ zl3npM7mRQKynb7~a6}>^5Y}^dcbNra7j|zj1~JXqxhnWHDJ_vxfpgduHe!mc z&_Ux%Y869G3sS0Shqu6{ZzcWow{{sx_cuwAC_Pon?egauAw2i5D!U}^-Kzv* zkrD`sNUErm6;P;A0)kaS6cU-aD%C^+u(X$V3ojU{R)nYo08W4N|E`|wE{TQsX-Z9a z{^npozvVu~5N!x7M(IIAjKkov5jT?F)~*XCwx94pz5KFUM~@#=@vCuHL-8*z&o9e3 z34}hWNW*XQ3&s`w^Y6Mq$oW-XoQQV?@6n&q_MfBpejI<} zyEv-Nn0WwMpXvM{QfkFXfqZ$D#q-DYCVo;Gg<1Kk(U8wSxewj^2f9oBq|*&uU-_@= zdPwD3juE)>f3?Q9DT_IC`K7)Vs)zVb^F8*F-ugg7PM;K_%@ZN;c{F%or|HX3AjB#b zuR~5y-2Uax1{^W(3Bph)+%^!j?Utl3*S`{J`iM-4fuB730v z-%xV(j@Fdj*4;L0KPDx-;_Iioy*(s_OXl45wkX40A-q9$zP;^?J@l3>cfWh{>bWX; zP2vO=vy3nRX$Un}3j?1f1(7Xsxsba2N*I|nf`wRMHc=r{r-jhQtiuKEQ@h@0*VFn) z1V^t*pFa{>vG2ABis@IRF^jpTaN#6uvO7p0g{9hN`P0^&A0$dd zn9I0-G#2gKifTp8*GIGVbWh*ft^OXrKL0Ec@zcI64~#P(Zj7BU1nqPRBMxzBD6|J8 zdW!jU($Lu(C$Bx=>wTP?B6_C$1#82H!>Z~20N2-FGYOWb!pEN`?0mAFX&P05533GS z%zWo1#aDLr<_2`eHK7Nwib@*P#3?uNCimte6o)u_mbhtSF)bME@ z8!q5gLuq`jT)d(9Abkn?KYxArN-}O~hQ>3yu`*+#|C%(m2#F#w% zd>??1&%-zN@!^@}e?Z6x)*0r!M@06I67gAO# zO1rr(y|*RefWrdm-yNIj%cn)!w8u}+uH;$Fj+=E15|FyMSpx_uAMq%LQWsSMsq0;O z^}f7cTiUwy=_ffey-7$7c5Ihkz3@z8iB(clC9+ZnD(RZ))#=ktx1DP}JEkG!CaT8j zqF*UFa-gP0xUed^TnfIVu=%H4=E|xXNdPgn1768lJB*`^NS-?15`yN)!YkjuKcR<@7piR z=78EmQMaHQS^*>gNoz?qG};k{9Iq2iyiTLnDH+oYZmJGPA|Csm!F#R{OuuQE4#mbXQ>GKxS98k zMe{kQ^cl-LaR093yZz?T@%|Y1N*{^?6$L`6)s&$V4Vta##XsgO1j!tw_E+Rc!@Nl< z1pbu;Stt+~Akz|j>Bu&{8RwVj*Pe~g_4(k|yc!3-cK{K#G$fOCtvMdF z+h8`>0VSXtZ$LD(0&l-N+^g6*-DjPnW5K@w9Aj&e?(7S@xi0SEcXkEU67K8;fo-v- z`xdW3V(^?@_KvDx$B~?JG-pO`!d0$;SUN1SWX8V&~HL_jam?kcy zq>4x{3_t=s&xgu)5#s!Ml-rt0e!ELI{{Po64)?ybP&J!Vcm3wqi(B&YPa{1U<`pyp z;R^G9-OEs~`*xkG9EiEG-sjzv&3|9P=D+Xt-9G91{@f$M-B(qaCqtUcu-IlV?v2MFW7sG5ON(g zzzYXV*(EXp!dQZnZ=9ZvTU;*g;dMu;n8q$db)-g`$Drh32H*Q8wIr`}|8o7+{4{R< zf49B+_y;{|N0k9}L@ua>RTAoewguJMF7Cqa_vc*k%;D#J@&5Xd=gtQ`Xaxe8HBwbn z3a+;$-APqaDIR@moph?cojMgZ4fFrSfp^m2TO)M_=oS}sB~{oLbOYNPbF6cDa_30h zSAP&WXKMn|S_M_y1%Y)yq_hUAOS|Oz+ux2aig85VP4%D_1tp+J(zd`2t!XCo18wU~ zwg7GLuGZZw+3{b;TFu4-ZRiA+wA*?CBmhYO8*e~1hLTzbzUlU_u4ioLb=dDibbtwQ z=meI4ZSDXhS^&kM8$(GpG!jEeKK=JI&a~yeYhGJ#;u|xO4X=xm>VUQs$grxSUC}L( zNqcM8o}9YtT?*T#{FAB7m&HR{yC4x7CqOi`0#9&gNf^*cXg2-1JeA*^S2TS89=O_9 z-g8Wz8~ndq$VYtz-*k4&<$r1MdoX#QA0y8A1i4kqnPRohLGpj4yv^q$`ZeDa1BsEn zVU0I@T~wr@@?;_#~+!f7q1| z5>-Tr7*E6PzurLduH3tH?#>hM+I;;;6C2SksFLcWl*>sLQy`=%0akmxhj;NXTVF$_ z)J^V!s-RU}z;~c2A%D(*tDq}4a$P>I{P#Kc_q=U?Ju%UbB594RE~-kqxi0DgXaLvw zy=qAHrrQ7{hJ$bM>(umW{deis{d2G?xLDC`fYR2JY-zT@4Y#J2f@lC)?<>0RuJ3EU z@7IG@#jPSVQUG?_05-Lx&;d5U4WI%@X+JvL9p?{d_iv%9=?w&`O|I@ss)gOy7gQB@ zaJB-;b;g&THRD?1ojBWq7RazNfT6wJfptWxs8w44H`iWHZtK3;>$~i0mrq)4Ye_9= zwXHUQk&Bg#T`+lf&zHWu*74NWKD*yS4P3CJvom+gZu_~e`>k0!>>@PM*0hq*OIkg@ z5=A)53`b3$X#gO@0Y+p*ph7OBnH7me4oGwQUgf$l^%*)-YUq&SFYw=Sq@yEUtAyDG zeF)h&lj_f=^c}89^Za{v8RirH^L*y4xL2^5HSHCVy;-8ayNrW_A#|*a@F`KT`o>T& z>MZExlHj)|4P+YB9zMTV&Bx1MS6@dEhu$EBBLw&?`$PVZ{rWve@%(*XX(x}Lj@f-) zTW#gb? zv;55hN!Wr3Ki}MWYrW_`tjn@L7$0*X$`w)sf^OT{?_<|}rVs#kG6lrQ9hn_q_>Dh2 z3&Gzngxtrt5hTPxA=~Kl!rbx47puDv2JZ9t<6O=1{zQZlmA&3`u3ws+2Mq~u>v_JF{j zQIPLo%Lz)L$jc9Z+L@KIEs)bb( z45TRtvNh7K}>BQN`}@t>(DnlfXkPfTR`zkz`m3 zLryP~o?LP@&l+*W3?v>@1tcjrAn*qfzzG}#jskcGkSkYv1upliUHMI+kZH#L&*9OC zr`V+-DbSq;!M_e^SpXDCfRzu7Y2YUEyWpFvdrW!aTepyH>;{k?xN?dmP| z&xMAtJ{}6&3`z842f?EL9dE;a)xbY=p!q3EX?%qRN`d4_@WqT#R9r<>P@q3j=!s&1 zK^Y2=owt-m#4#AcYA#G*sl2`G)M|bvOuN^eII|{?a$N=SPoz{0CX^= zn2{`Q7g?FC>$~X45|ZN=K1(@BH5n~=eP=Y9heSuBy*hKgXFIy*%aM*E!D0KbU*qD} zob$Lme$`b^*R1q9!h9!0f=C_LAANS?^WYB;jB%JRz0|)C#~3a6{r>^&d;kd?Byf=Y z8BuuU%a=@p|E5Qj-;_SveVr?J{Dtg$dap&eJ_+tQLiUa7Ia+O9FT%5*ZQvT!l{{5eI>b%UA$?FZ-jPvx(U*-MZ^t^-QJnOH#DEZVrA#Nh02z$IBV-qBq zL{vpb1<62KOklxR3;-czhvs~Qe_Q`gA4lN>+uPHN*U0p_*ZgyaiReRUfoQS{vI4>u z(>%29|nSQb?2S$L3m=|T_*W+{au(}TcB#M2W?3?OU-i|>eG~<;u%bq*l0NE542!lDmd2*wDIQG?FE?VkvDHIeD zSPu6_`t#i5it9KwVvqs^RVi~c6nvy6j5)MTVq^gVQ52$Vd*MPxMUTYceSrjaqI0?H z#FOxi|9yMJBTNbJf6e(`w|||V^Y5^|0K8m3a$xfV3i*@aVk95Dq{hi&RS_J{8Ab7C^Ow|fiM0=zD}?n?gPsNX)z5Y*y5&d`P^Y(eX@;!0D{y8-} zrbPTNJx9RS*Lj(-VO}`JebH@tf6o3dkH5?Lxbr-(U)$C2Z)>_fxZ9uC>-6IX*TZaw z&_1$J6$_$Lsw(^1MNt(kCJAJzbpoWO3KStKeNU&`$?@m(0r7nMvR9$omtrh{rpQ5L zDyk7fW=Pc#P%SItw|<1JJsf9z@ylIZ4Ttsq@CoAdo@y?UftLe-%_e5{6OUs66IPO? z7<}SUeZcA^Co;w*O5>n9-Ms&^+EQ6ixji#G- zg8jCo{k|0CE5QW=P$dvjlt6j?KJ}DKS$z7#e6G>iN=2tzmim47eRMMi2J8$6cYHs?PQVW$mgRN`}yMZ`25aocnu$q=aGTJew9Dx`fI^E z?(4sgFV8RHH}#&8ugk=?{+}rveCgwEFMY74-MXcQ|6@F~xUa8=U)P!X^Vfbhx;4)n zd}Z`6ecNxGY@?%nWpBE2Xk?H#RI&2o>Lub#?IhyCoD{O#-OSvV3cYq)rMW>dd^p=B z=y1sRke2v6%P+`n6v8;wZ;Yj3&JGv3?I_ucS#LLb^_{NAJBs}ofJWb|bAzLlP?rp& zb6F5@WF}96IqPD~-c60qJ##qtJ44Ps+cv(|S)=GbLbqSK4`0`K`Cd)kTIsJm)r|R- z_;-*_atA)?v84IlC)}wQpM@IY<=5f*{Jy)sbJhEBc`zW?gip-sf{<1n{oe`hbk3V_ zS5oC~@j&!_5%cQgZDH%yQCo^$*I=(*OPVqMn_JksY7*;tUT^aXVSP`%x~+ncg`)b# zknps@-bW`|*_DW%Y26L$;oeMRO5WcMvTLz;A0D)43@UQP=Xb8D8{HFuNc5?`+YeZXHSAqt=l7FcNn?bu@oirWDJi!C()4?G zqF+X1ve|vD88*8!KNr-aN4aQALS1*U{TCNUre8ZatZZZ~dE$X&zF2MM2jsey^1}7R zK>d-Y2K?xCB3YD}79)oYztiUN7&t_5%#z1U*hvym^i+!3i7}I;xOOtACDLV$Q8Yxck|a&dW-|vK~p* z#m7)Z=I1PmJ-+`mv}A0V)r^wcAl1QnC%QxbQea~_d`kT{TmOKRo2v41U<*k8vNu(h%J+{iMk5A=Z> zOD_hvpNNyRx^;mj`pYV|cG(B`zVQQyCF>( zNSCFqabU8hk@$MzSh5qVS1G^Z*Kf3+30qM%;As-L8JZDa7xR_JN!zy%!v43#C)>4s zYpG>^c`bSxPNt1CUMqmzZf%i;?W`zGnqZo;yWK{r=9{P zbgS{m{M*d=y7}7Y@$17UnPCQ%Z0VUmWI{f{zF0lRy%V>-IEK{mv9+m#1eZ^DX;d zRLZw`ZKYUx>z+%E>+8jy;S5iN!^eV4?#thg9nl%iT-PI2>tmhCSiLE$yxZFS!J!!5R&SaQh3h&X|7uuF@{u=9l2OxK;aVtHSYGIxJ>aCN{YnR6DOG zoC~(wC$RW(iJbl)oj<6*(2n=xuBNfq@%Fu~h==mtH*x9jo6)5OBmzn-XSK>NYBek* z^pRX_>DX1I%;2)=lkp>h>Qt4@S{mS&Yc93-A6o03Hnyo>rTm zua?_~gWa}a@5TD{7E9laeY4&CZt45=o|fBxtG(H7?z5*~g6;PFGxOHoHLfySCg}L@ zL!SI|$GG&{d^>KfecdlOC%gN@nljBHIi7=NS!K8Eg|WT&K0L@WlwwK^dATTWe5Y-k zN9eDx|8?8!vn6a>k$*e>(J$`8d)P+PZ5k{D8Aobv>aTA!8U(0v_ek$+cb5s3jn%u9 z(Q-EhI;B)IcX_+Kyt9*=JnPVuixC6v_|%SlP^@}`GD&$fRAQB=G@ST!uD^)kJbYUo zJCMH{tRVu31cEAJPGVcW>(xq$Cpbo5X&nj`ZI^<^6oj0gl9)DP1s9c> zjTAJ{)l)(!t3t``lX?veRB!=i%u!*k7i*g#MzocPE`?wrNG2~#2|$uT6z+=`2_ztv z1)(%0LjQ%&Zo6wVncOpoUPFr0Mir!v`i!fJ;Flp?CD^L4yc$BPHWbwuK@k|WpgOi- zRF%pd6_eF?hNLJ8Lsdg>zLbi2o(8h4!#k7pc0o)kMOCVzvG!m3YL$%HC)VytDov~l zy8r?JM1=u~c0@!X0w5Swg6_xx0zfYAK~z;!Pgp~S3lC8A+dbHj3et%A>5MpjKa;;^ z8-W@mpsdi-Kj`)QXZav3k+#ps`Y#JnvML1c<2nB|wx6cKD5?UJC!)SBVz&Cv{Li=R zzMRN#?wnBkQu&>_H{5=%`LpcEprnG70)m5>7xi5K;-8n`Cg&6X!f&@M;Dn(9BNPQ$ z2(m?s0YC@Bq?Caa1(6s?q=LdlivkN43Pq4uqzI$|VHN}xKp>!?MIc3jk^+D!BqFS) zQw0bqi@TIn-74Eul8T~`77=2=Sz|8hEmD-CiwnE3YJ!jjflMT&U??mW3lt*B1*9&n zz)}jTuvn#4+=VI71c5sKFmw9n$3vfvyT16xw$>=aiLak6V|YS!|82=>vK5(&i=K7N z@5y}c{%fCq;rvkj$FOuMLPP7s(0(s3`&ai<8IcSe4%IN#dKtk?rYirte5`>0O8xzR zD;YceB4d@Q0pME{$vUbh)kj{}?^abfVvaytww;?1P|OvDY>9&i_S*jchgwb+$dv_%8aZgf zcafoJ03`xZC{oNJ7vY7|WiA#NYoG`;ft=#DMlgclxL$`Bx)43}v~wsq`mRMK)m1m{ z4_hDhDXV$w^TYJLzP~~F{XZy>LVJZBAI*=;r%N)cZ)+{^8|!bZsf2IWu^)e*fWAI{ zmCuj(ERCB*5!(!lw)TPqG>Cx{vBoObB9hN+i!6ficS~Gt6foOZzI7&02EQU@y3n+#OaW1 zFMa6S+QMs?V*(E`*jHxOf()BE1c6y#wM5It_Knp)n}}PLFCs!+E?ZZTKNOr;OE)mC zV**9uOL;)zk)=*{wI&g{K8>vku*WB=$OX>4hSwi;gebpm`UxVM* z*UPfEWbef4{C)?|we3-llQQd*MOV_Mrd?%LsivUASg8BP#x1pb_7^Ux^8SBsk6zzc z{$zcW!?=-VLXWjSb%`+UuzB(C@%8jXl`H0bY)z*r*s?)Vebq3imXa|zVPvXFNaexg z#Wf(w)wI1~cHCuhT(z8Qd)(*ZdV0#gss64pr6V5oPjhqfqsO+o{<*O9yI6*FbhGij zEXk>vFoN_ol7ckCiSR|HAKw{Z@$zz|Y*DR8YQiOcU+FxUPm|r;p@*l+wB-Zi@u(a8 zHo<_EbpWfW8bE2bzzwZyqTFBrU3`!7Lv`OU@&7>ZpXl|Xg2^6__R=rw7sY1b82A;? z7R~{Vc!5T3nKV!4-+8@t*o^k_yz$?G?0dhTJkFv-Md2}uyY6v!Q%M+82uesyiApRI zd}|~MsR2345}C?udd`%jnji@BcVo`0qu%$w&*S6^09N;X_#G$<&oPegT~(Y($+!%v zGN;3DSVSp18UK&`e~*W8kh|wX8^u zs+*kk_*VaaIZM|lkNH-1H~kmX`|NkfvJxqRir)3Tg!b&Wx!>RW{6g0K=oqC4?xh0& z5`b!S{Cj;OeI$8v?cwi%#AMGZBHyzZyg@*w1X2Q&&Fq`!e%(Ghn)4IgwFdRBn|dov zo9A4Yhk;bZ{Ce8B*az2vS2Th`uGg;YcQE&SkOLgC-JZ>xXqI??ic#0zdjbD{yz`0&yV&`mn?MnljI5l2n>k?K5ReR z@aL|+|3!SH$BqnNJFjob2Z)3?)G9)Xs1;QSNUc#N2?nY{s-QqP*tCfB*tAxWKF^ z#-5qYrc1ro^oiv2bVK7e8t^X@r#qqKc6J(51HlPc`?FA zj=8_VdDdb)Gu8!@`*^Y*Ht(I;6eUI1N8&dttfG1gqHlUh1l+~P+r8Z6bD;7miBiYG zwl~z9Ax|%a4SrSAuT$ywYuNOJ`E`V;C+RL!Ai=mHQVAvf-;d1OyTicw$>{WV{77n% zKv0T9bRkS4z_bI3hl{T*JNa?0F`BInPlvN@&GNfdAcr59@80|8t}`6>=jPSEYuE#g zJ!gJ*tMf8&d7~tL(F77fB(8VfS9>m*>c8H2LE$4*eEOLX00IDBe!M;JozjcF@vnZ! z5C9!4HO>Sow|N7YNlI(*ym$aY67{P!dt6Zq#M0XOPY`}f=T5%1jmbTY~37oED^ z;t3JlUr2Iv(nj);Isd2Sw|?Ar!1wgY_QL+tNDdu|_1t9l*?GQxStYhe^SgRVcp5Oi z{cgUVR0xK$lwUIWIHOF^U$5_5z9;0wq??mM@dwegJzjqwE9`9Fd z_j`#wP(>hu0tdtC_51s~c=|qb9%oN1LqYa|@*$%Mox{rHoL=o*3%(M<7^;+ki=Yc& zUDP1f`a{s;ZM-@1>V7P{sl+v_3k_`{aM`f8S~fPCNX71s^RUGX&#M) zJ;HJx^lL00)%66RuZ3W0Qj8Eq{Czxk-|qXThn77a2P1zYX}lq7kliGvN~)3^Axs4% zSfC=LJ-9rfo%i)^(>2RX9{M&AAanrqYhEQ6BPmV*2Uq}FOMApXC!ajz06=-i6N%ql z>yG@-s*}w?KuITkY~MO*cfR}QpW~t6vI!?fb>s2*qGEoi3g^&MNOR$I>RdCz&u)BJylyY4$2 z?}x?Ny8aTsSv_>F%kt-}#r#`<=psI{tRH;Aqgtb;Et02Zemp*@%zwzhq zGvv;mZ%_PVdH0ffXrN+I*JA9%I}9;;+3rO0ZG0x2uiyK4`#XJzUB-@h zvfcq_`3gDAAG5C6o>%i+yr%$CJpOT}YI}A*n(y1`^zEj0MaS0Y?NgeiAs2dQH4rQZkU|J1m+snH5nbwaK3X+4S$S!VdrrFK#|9XJ~sQ+i?T=MN#b>DcDL@xZw#S_VelKCBT zqB>5byuJ2u&CW^1-FJW)zwhMljlf$S^NVNCy%_4;+Wi}SlY)Oa!2ONCa}xC5^^p6M zE}!qJ9{k5MU4=8}R6eb9zbR|Co8EtK^ncIXdh`x)gx%@1akPh}$J8Yu&#RnO%vt~( zsCrNXwGarPmL!x2dVXJD!_j@HPMy`$H_QVGJjOySlInmesF7-_1k�B~?f*RS*=2 zfhjVnlb2bho!#5I7%;yr9G~4d3@w?Z#wFKa}|6J!i1;!ghW&b z^X2QF!^4Bu$9?GbrF8&3>!LPafn*KH^-9YXt z7CFnh_1+o$r^GW=8d;M6TrBpl%>M;>db^=NF8+yHnUA5P9b;I?wCN}OexDHdb)%1n zw5vaA0bdFjsFbBLLWqz;goP4MApecLUmuAgz&fO#FFKM{P(uaXl3RCH$teO_NYz?H z>dVLx5fCCE_IGBfbC>0B5~IR`1z^WH@{0sz1$yp!?sgY*CpHsZb;#<5Ql|{u2IIdU zeahqH&wD-Ya(wLfw7NTxJVRjSGP+%72kaCv*$X5?JE~u`8?x@;Epa1 zE_QDDJinZ28``-|11jU3nk47>@W#j!-73Ou2QN=}V@a=p&v3zseHGuWBa@f=FW)7; z;`{Emdi~92M~lw@H#aq`gQW?2-Z5(;XpdUv#t$`He9UL(%^C`zC=V(hC`yDXia+by zPz(?;3X(8C@$B^S>D=;b*|%JAEsBff@W1t~J?qnPe#!Fn=)7V{^tx+CkcQK~|^w~yI3w5F`+jg=Yy^eh)3Px=tYIDx)4}D^}4~aMvs`Pa6 zs~>9{ySlg0H#@tt@2?lJ{;poj^}SaL`|ln6?(b3Y>)rxcK+!C*CvlO66mp zAi;PdfTdS%3&VCk&vs$oyWNGA$mW_h@V-}r?8rUqlH4*x20|v3n^ufkJ+Qg<^0bPK z{6W54c|+}3(UiSMGxDS_V0T=3awXR-a?+NjOegqvEe##_+r2%=t^3!7$oSlEf3M@i z+?VMw0;|8K&3tEv-%)f4`kM1=$y|3DX5zGd)%`ILpHe7jeH!KXlV> zAmZTi_2-l7`qH|MMV`%z+`My+9E>~^UM5ubkn&NE@;YQxgC;HNEEjLYE@yeV>ANC4 z+gn|GZ1P;QSbBs!wRc(Vl&^!4BvQN=GVuG&E#Db9F@=9C?Rr_2nYQ@?oROME{g<|~ zQ}x}^3m0DtQgtiP*0USri;?*+bjgj9IUFS?yc>a<=LB&M0#Uvk?PU}vXutX)3g9oT zwn_ew?ukv;PVKlT=_x}9T;y|vLuuu)$5eZ-c&DoVK0dbw>`jpsjwkcFGx&QG`(Y#B zmF?qec4I4N1^SbnWwVfEfnQ{UdvINsSsHZ2K`~uunBN?e-IiT>NpqDMZG+iI<72Yt z!Do16jhCYz?BVFv$)qL8>)Qn>h7(FLuK1ek7uFyd6A%QhnxKR zUmRr@)4Az3cP!d>MovzacSYKak@9=x)38cK(S+GCBYbBJ^5*%!#4L*l=V8qatgpWG z^L%T`SHpD24W)IRwtC*%a`SW-t@**M#;2nZtaOOn$-3qXZ8sDr7zuf0J<%Y#b<%m? zcVnjJXX@QI+r7D!m}^fmS-{hC;uYAWJQSs(BI?P_)y?JvYcxxKvmi{ZayP<=wx%{w6j)qsVF4(Zv zkavs}-;kJA4R{ki(p9prN; z_jdNd9Y}Od_2GQ_r>phrOsvMk$!YOpS{(0kg8c7{~0* zHN&=PntWLAi!RIAmRsL-@hh(5Pki6(XKm2ubF!s=R-^RqM`wqkgR#EPeRYOUmX6cM zyL@TogFjL19;2$^kDD2k?|ZtHkn5hc%QrqfZ+So_Qdgq^f8v6GhonthsY_0r1 zs#7OYTRtZx$&<~lUy~Xiq;|Ixo+l{>AVxpm5BvY0fv2x&(IU((Mnptr2oVDb1dv3a zgG>9w$pDa2LQ-_JDWO!JZi_QmY+_w4T@+pZKEH>j(0UdMDvLa*Jq%$p>mu5~|C{r1 z0~+|%DhkzAQngC2;j|qzlDY?vf4qLaG&Z$WN~rjLd~i;4s))m$F>zHHcX;VaA3Wzl z`d+=-)ly4Bj)Wn4Bn(iSt_Xz~=7m?&{gh=Z;G3 z0Oqc5e8}$>W=l?x34GjC67ptAcjfD;04r{4VBTk4h*eQ4v7jm>zF5<%nx!g0P!s^x zdf4j8IlfsG-0z;6MWB+N04$yByz z%51}^_XOCkfQFS?4v8@q??l@ih{l_FdmT(D;C_*|BKw_qRy2Pt9&1k%M6O4?PZ z!lb4}_re(&6#w7t$hiX%i~X8o|22;+PWTypx*Rcz{uVQPJbafKGJo+Q()f?bjvX$) zOO*zHhP*qqK|-0^vAxIf+x)%zd3qoA-Ul5hgdqoO>w0-7O!dZRUgKLeIIVvhkcI{< zin2jPB#Q-rERj|~1(FL03m~9HB9cXtNU(q`0xXgWv19>4K|qQN00odYqM1}s$khrg zm1$P1QY~Psy1KU3tYYwD)Tu^6VM!rL2#826-PslqMT(?Ss-zWQr=PIfZ?7`-zIB`5 zh0gA~X^dT{9fd~~WU&VPGkgutDqURtdvmN8N~Uv^Z}|UX6bZcI#{jZG7r*+c1hi&O zGE+cS$LCAn5eFdk~WaoV?(EUYZ0@C#=oxnLIsk#*KrgAeGwMin(`}qG~ z$^NVT{!f~p?|2+*{uN%nGX9q5$@kw~VDHsW#JShYP;8Cf-Lgrnu%jB#=aINpsTEqd zLKSJQFpk#(1IB7F2oMVUF!9Hg@8`F}6DEbzGw=AQ!nTD1*=WJUz4}>WJSUDfZBKJ< z@R*c|txMN%l1b&x^g4wD$cc4*!&wL+@t_2@MoZ*ZU^Sft6A zX+V&Krpk&sG{_8;ph~*|Y5}4zs4wtJU!O(u@i#Kdx=i7samZI;1VEfnU#_>%sHw z@lAZu&$+5QwCToYx5ty4JHx(-M(W4kiYn-cH?hShw}|gpaG<{azMrro*U#UCeSEj{ z5uwG=_NvoCSqz%6YO1PznfHl1ktAJ*4RxM;eS1H+TR&fWf&AUQw_iKzFQxCn3f~5> zO$e;2+~Wl}6`_ozVC66&xH9S;M3StX_mvbwMf$BDemIh<4D05ykgAVpDOEd57CjN< zF0iLWD%wjIoxzu}rpqmxSl5(}u|=^#BGSLleN3_PIrr-sufM1V=Fi%nrOk2h=7dyD zCzU5K*4A?Vy4{i|7~~sP^W*4zd;9#CT~?z?FDKX3Ys~4vzh&_E=UK+3Z>^p6AGgE$ zdLn$vNPEkFRq~k5>O(Rtn{{-`UrZ->sG-&AZ+-my{2i8y))r{B+IOSQ3%T%Z$R`Lk zW|geWSo4~g%hoQa^@R!OyeR#AsAjV&ujAj}=j-D~>Wk-=9{#2=2Z%k3bK5K|6&8E; z!N?#^at1A{&jiSpPWEm^42g_9mTh5x+s%q$h66FNHuPd$|Bc`w@L{>x28)`VGF}n% zdGDmrkHGVH)Oe8HgwXd;Og1nU0ZkwkQ~;qO$Zx~HgPpzHS4-umBL7^f{UGq;ot>rm z_XTKQ1W~L#?DhY&`R4hsIqZjAo_B5MX?NUI{i1sCSdIVy5v#iLdERj!E0J?@00Ku{ z_IVdD_*0A~cr#Ior`n5v99^hKiNlVYVWTN3?e<^sRQyoSKkMs1-`mt%?LqUBp%8sb z4}25K=QovB$p-dp&Sfh`#8(#Lh7Lj#-yik=riOOd=`*BxCVc))>Fx~_vCHQ+0{Q?gPy=-mh$w_RGD5AAsE5%0hrJy?DxN>byXnuxvpD&r z`#iq9KrqP#Bv3h(QVJ5PpeP>|MRx^X+W4;4lV7UiEK`$wp4bs!=QCQ)r3I zuH6orbH_6Gkqy<`&;#7{f--Dh5R z;eJ)?vQkGx5J!Dp4zq`UL-4x#(nN|u-=95o>*uWV_xE67bW^|Kk2?Bs-=1Ro&m9N= zK!5-fE=x_%!Oc(W-F+@ON8f9%dBdN+e%yPdj=icl{omxAZpnqn)sgIK`|tT*e(fIz ziz5W@erZ@g>viD|c(LpOQ7~$JJ?4%-U)%IY)Q*(alA9Qm5quiw8I&k|0!(gD1N^x_#aJjAM-aArBOSGFk$Vs-QGN(h)fL*L2&r80E)1IX;c& z7ew)R<)I%(4D}K^oRUrQdr}mYP$B>T05i+|TT$O8xxfGd00JT8_KQ=o!_-3VlWAnA z=|>{%>ZIo5eR3i>!FYQO+Uh=?KgLSTa@r zM(IW^a&u22xHBe`{rpO7n^C!1BQqE}YngCmU$V2k*C}Ts_9m3_h?}B?IA6E-;WNT{ z@Qx(137f-O**Gz)Z+*8`cT2}`6m5WZrF20;(@_6k=hiR&_j)h49*+C^R{u?Uz}X4A zmPV>Yl#^t(OF{@75P8l6H_lhzX)n0`$KUMV294a!4|mk>tsO-5BbDDf?iF|5%WRh7 zQghyaJw*3i_WQWbQ-w3X&Mfih9+W-l!0EL?7^r|C2#)ddg%?T1^&O6yoP?3tLOM6! z{?4RFT?+Yg!uyjs-}P~S4{rVa<2&bPyyJPT!2Y#!f@_@qUwp)^?$(dz$n14md+Ry< zZ+F2enC;gOAAI8jl{nsC()JFMPAp`;Un(*tWa68qOo}At9XGk;=ey(MKZ-PbP*T4V z9`5o~Nkpkogs4yhJvr(J-8}q$Hhw3UbUhE9S9aWHybgS?hi2 zX)CAU@;K*3RZ2i=pjA|&ss`7lIraDSJ8W&H)v>u%L@TA~_hvxKLktC+C!C1+@a`J( z&+X-dY;=$~dO;{}zV64ni5=G-h&-Isp{`F6e^5SXEI5wAYSL2QD__ZbyeQ9M}p$(-sBY5UQyvwXvYu&-Oje>dsYApHd!vnjuw1QqfgVDyjm2 zq!fdj^ltZad-cCg9iI$v28bd8$O=GG1Dx@{8}Yqu^Ro6ia+5?*6a@(VnAE|dizC>*M!SPDVK5Upwx7IUoa#~X5O$1J=+;Usxc3P>yk0YN}g zJh9Jh_O0x5n%E7PDGd-Q0ZnLlMuJV~2HO6P=J=M^A&V0AVb*<4I;XI29As4-^7H!f z@daVL{)Qaxx)N%+uqH3~pXmDMi^=X`ZH{*TUBU~fewFn7^FOZ+g8ND*iQ5@@XF6+5 zeRQk(arNYVdK~rkL+c=W*(Zn)LdYaJ^!Y=-yyZtF(;gSfb!O+?K`ol#pm6`i;T8qq zy9y#f1dyZ;KXeWJsFhU$M1WC6BoAI^?czUw%VU6wBaLfi{Bz?v?QHyWy#$lNNBQ~Y zcYU0w-2jkJPZle@bRU__%J!ZQYxB>?&t8rmUGrsjmItWgiO&)rlCKvqk^}-Ic&Beg zZ1??svx0~oyEj=nDqsFn?jzSZexA8?Q?n39KtkusIH8wA#yB(`Zin zC8(Y6WiZ;?dPm7oH3k!Jj`O(XoBv}xV&|#_v@DP z)_BPPhagj%X?x4ARFQMn1Vo7B2GNCrO+-kDJWIAqfapwni0ho^8_*ekfA_{903dv3 zKmrE#E5A#>2awm4KFf&U>O0!+wEOO9q0}UoX|XuPaPVLYNmC1)&GBsGA_WOd8(fen zIe8~my|4D;uTbvVJKl>l0=;{&PW=y}lcOTJSXil@XOtr*Fa6x87GI`sf^wu!xBGgd zZ`ag%=b?+f7VC@e+K!m4p8a?C?Z?ZZ`}}(yeR6x1RE!1y!DR6yi6K%I1_DX^JG%I7 zOMkEF@sq?t9t@I(NU|R$ztVXeu!e_?y@r(Sn`&f`cX-T0@S_3PIs zG50pH2q5ZfJ@2=A=dL@w=exIeh=>pgChpy3V^CFt!3V-fS}uE$Zg)~V1J5Ow4dywe zk~!h$obtT6S?0%)6zB8qs*NpuNsaHdov(qfWxLnGXP7%NPj294N3Lh~+BnivkvWt` zS&6xUlG;G`*pq$;WvR0UNBI2xU^-^Smr{s*r9^Lfrk zIL|!u#Ir|UYf~Y>=Do_i9z?OyKq`8Rto!b8Lwpm=Z-GE=qF@2k1pe<;+UIg*usikC zikJWooXF>)+U#>@4Gub>BSqLkZ>~D;UHQjTqsyDZKnGjiX}5T^E9^)DFm-Sqz-q4u z94mK;?QJ&za(*$a1mau5Dq7_sWo1zYxR&xZ$qB32nI=4p_4i@tD(!r^@-fZ!u6c2l z0!IfQeh8Yye-OAY7bByp_*|DmNH}pip}H@e+!jp)=#^WH21Rb+R;c#L>_9950Vlr! z3xO<^0AeJlq4UPu_CfZQA@ny-mQCCNJ>m|5qn9^WO{St@_X3zkDFb$hEzr%p&9(; zV;?=C7d9sMo-RK&`_9+v>*wh5v6_0rrpO(9IjwEk_oZg3U(fF6IA0KPRrUG!eJ_c2`!kcDN_u=X>$IqhZd>Q?+Wo%2 z!smm(Q#r}Z#I{FL6Xr-6FH>ZP5p$R9lViECNnDE@`lfmBq#pCAo7mW-HR&=#*2Y^&7x&9#ur1iv7@LUJ0clo!Yj`kUoPu= zBNp0pM6(NA>7#YO)!0+g==0}R&r7>o*Wr6KuUYVl-q12fW5RSA8%XSa$3$W zY9$=B%gyX(Q8=Hwt|g4wWie&0gid_(O`)4t<=R5Lm%EnBtVvwUStjwyuYIah^BMT0 z?DOpB*ip-$*Xi%NxqkdPkD2##+*aW~!u~fOe6~M7PTyM$~TiCgWtg^bqkoJRDM^4>R_QueeBU^km zlv-KGm@ZetdC56T-KtcCj!hASxLd66r!EDDp8Q8DteRHb3D&-|^lhDc ziSHpk7CaP8M!QWkA!H>S?g%JREWk+CicdKmy03C5FVrJ%4x1y zVZS(D+R^+rm%An5;Lkq{JeGaII6GwWUx;A0zF{Wi^(i>YO=Hm;M4b86eDQ><*N#ZA zlG%qF@wYR#Jo?_HMtHXCY>t08*No-#$V*N(LiTSgtdc!`iw~v1P>*Ld~nld{>FLh9Yv&jH#^=#j*U{`G^Uf2%W=#fnbc*8*KA^^@2_I6=Sg=VEkZ10biA*K0Cnv;yMu1;&z! zIGHe%@3%&XhSjakd|q#3jr5cn?#b^pvVusDVljlcxvP6+;i#T1lP%V^{1q7=99iO6 z+dR(68rNre;V)gg);06Bwal-$(6DP--0yUn&i8f@;9674q9ZBV8FQoRl4|ZNA~A=p zJ>lmgKZbR{_lZlMF~N5#mw49xY`fUqmvN})o2@KvH$PjK=hN_>hbUc-TD_R{?_XZW zxqCbOmWNsK!~A)&6t@V#ZDr8gmA7lH-JEUZ-u!~~w-}|p| znQf%nDf<5pq3)=R@C!ZItiv%BF?H;&{NZS-q%ML!Fg45tkh9KCr*3shs;nBK6;uTv zqO5Vp5_2K6zIn14yUeP*c~v5+5puh&5J)-=(9&1vk*4c-bc#tNl0>rcm{*6RV)r*# zI#MMxRW%Pq%<)vv*Q;JL3dr5^RaRZCnhK(qe%YaSkSea#Rancv_&H;qfu@`9p_-!Z zs;=OofmMgBtb`(KeAb|WCgwAoDy8CMb(wc-ySSO_co2q##Lvym2$+?>U+Jtfu?(7l zwhTxwB~>exYKXbUU=`++w22@0b=m}y2?UJXNd!S439P}bW?ruE7@NvgoXVGt1e{}x zfe4Ac%-Sj)AmvoD3^7#{BegM6MM{dQDXqw0-mujrRbG+A97xeG8>3VxM95~a#ges} zEim4+K2@}Hs;Q;xB~%1W*k~0%wck*-Y7xpJ%c@mZP+)P2_K;~)hJ-EBo?r>yx(du_vWu1D(CuO%6lC%j{2kc*8jEUL^mSY`W^l{ zADbKQG6z4b^82co0SIr(^}WpAG0i&U**YK^up)~A zNfZHK1FaHL04WHd3jzv3U??a+SV3VTzyV+pKokNCAS@&llA5Y_t5i#fRz+tg zH&uwlAR^02&*OLSJpYG#Kj{5y`j5y&ash)Ae24;9=1i@MK)|~tL==4iO;lybrMn~( znE!A+D1Cf)YIZ0Mzz*?^KiDeWj3byIJ^|_V#l@6ed(3 zz3TjZ`}g?!1?jb?!Mpp~6a{^xv+OmQQ*l<%P;}Kdz?IYYOWWhwd*9EV|3d|<$$NVu z$_os)?Z;!EN%J{Mn?2XeyovgZReaU^U3b{_xc2|goqg#2)>mKqKDIEQZ3ceV;yBM_ zN=9+CuhlYZ>T*`GdO?I?Yl~dP8BYvv!559{r5+aC4zG-i=_#abS-|&Y`Qx*?nF_#V z^wnXNkUR1AaF1>dv(WfZ%J24tfy6?huN5ohTnx+^3_{G231()74KPK~8^wsP#?zz5 zF%~!1*SFW;d`*57mhF+jsD&%3MR`g7lH`C|GN!S`GC$8i>Yv)|k19VPSW_Xp961mD#; zIgv&!PuQKk`^)5SXRWOYB*eXPU_~Cr!MKQ{mICZ8jjLtGcwon1j%YJv3AeG3YZ7f_ z#Bi;jc>bmQhXjhBPRV~;r30+m+1;Fr?Cd36+6CS%w)<`?+i9#UoYz%=*&CJLC{oZH z>T0;2!SLn6=;H`sDmxZKDyil9kOoSLDAY5e{{&e==RaszFR_c+lz%& z6Klo83@ySIfU*igt3&_R6J)fV{JCd-xA;2n?@emUKy40j*)ZljN6g1b1W^KxY)+~h z2KuxC_DJa7`Mm3$;-mQ2I&m^IjdTm;ju&Ik@luc>1(JiGG>hWlH=AHT%@l$JrAkti zq8lL~Y97O;`OQ$vxVq{Co}sq*TlRO|`$P)@0D?M^9rym8YTk3N^z!uj?!2i~<$3>; zq^5}++-^N#Q1S_b`$mc@ufOo~sKWQyFG4(a+H!Xlq7FqkL`WkLvLryra1VI z1$WJD?(Fal?ykpoYqB!>JN^#;1A!P zZ>0>^d*4r<$O62-D}3;5zcC$aKQqA`f)(t!n5b&zFGZA%$(fUx%K4h zb2!PTJf2ACbRsXD(&lv~F8Z(l5dpp~ang5vd(UKgS(Si!=bic8`K)!Ub=I!#?5#S* zx{bW@%Kadf$lkZr)dILu$qktMBlxy_3vzGs`<@No;+ z*R@a4`TP1S#=!4ioA4g0@j>Uz&(7D+C)!V3f|9t)sw9$0Acr4+<=*+6&bqfs5iQod z=bxUn-%hWE)p{4s6DEdht>Vb)2djABp4ID}v9;GyGTWz*D|WZ|4htL^V!HEgM1Ge1 z1_2(`KSRy(jNhO4OPUgU8NS?)HJt`AmpP;BUV!yE+QoT2_au$(Z@kyKz+%qB`Ryy? zQOR>(KK-A@yyCAv1;m!RV)~?-xV;}pzD?pwL*Nb+6srNLK)@f^j1a|DRaInyOOjA9 z5R?=`hJrF6pZM+9$JBDqXCkgAB%;&DBU3Thf?F0aII_a$Q+|RHTlS0h_15}Kkx3L>yRc)OJJ&s5dA_>muUg0uh~8&i{^@=9PrfeuQWg7>WD-$H z5|LiL1>Zb744?qnApa39f43PHp z{{1@i#~Yn_c72*N+Rc~?Ev8NCiB)%?++ZW22ov^CudovBB$7!al0=eEefjqC41CX? z+`)4o0W&i)1Z>T6Ieg)e*AEvmF6;&07_jbVy>@fgeBsAecCzm7?GlnnB$DFJa9(q3 zlW?R`DI}6fB#|g39`Mwwyx!l3cu$EIk|iXHMIw6&^RD{G-C({@F3yPs6cR}kl3Y@P zyShs?nFd6_9S0Pn8q~}1^)bD`kpm_`=o8!PuzIfhb~@*02_Taa{wB-|g3f z!x`nOfeXI#4R*H`3*tf^QWB5JLran3$%ykj7@$n4QycL;{qJNO{WHqNH8=6)1*6jl z*b%SW7>{swDYp#~Z0AX}ux#A*wFAQVq+;89K#YJN*A_?rXL5thA9Nq>@1CPWtY*%&xkz)dEUIBuEVF zUGv+nah|67{j=Jq82vXa0337c-@kl&-1j=HfB?rld+(j+e06np!X-5qD$+x5=>OJ&rh_1`^kDG+wI%Nfj2_a1*gI(&ER z*P@uL-=pq+?(RJ9c9Q&)-aP8ex(=>qY#@#zF6jAY-^pyPT?&+zxy9C_2w=uZ=@pr- zG14q+6ve%33meidiTlyjkx0%_gIlD7B>OUdTjPJHM0xn}nqbwhx_bBrmR>XN`@6Qj zCw~v~*NTL<#C^+ucYCToz3H}_T`3tNRs#MJSO;`dzv)7sb%X|{B}p}5xMo4Tc&Hnv5Daj_zX`R@u&u;U&5?RB!k z+i%L4Wd^zlvNel8vW#&+`mR&-e#g8sH9SY(n7hxY#G_J_U~^-A(Qw1bg~m0U;Mw!vyV(c2YdEuEz1BC+HJHcGvEebCpKn~Q zcJHXSHk*64+eNOfhb(e;fyX|0m#0pW*w^l3nAyU3HSz8>c9pT1WN6ZZL6r%WD|RR?H+& zc`!>O=bwki%Fj7+!+H9zK27lWBX}4Zpu@O4sRU@g}-(&GWj4QksrC$s-6p z3}}Ivlj2M#nL8%2H;=hNyhdD*wolIFxeDgNHo4Svu|%8^h_feLe;P;IyyEN8Ah=Np zi-Jiz*>LLI33a+DgIUGrg5Kz|z{87qa{*0sCiKhOb@S((<=b=3^}HsQlnS(TZX#P7 z7VJxGXx#ONQL<6XMaFH^^Y+GCk-wAlyi!*~OWStVSi<5#*5-`D+BKDu!v2!gc-)&e;bg9JyE~8@)0<6{ah>WPuQZ_7|-<(>= z)hQbr);c+bN2FI)AdDQ$@`L(gbn?je=XkxfvvVZLyEXoj=4s>Nmu)1l@3z(~>|tse zw!<$?3uWziM`mrJ)23b31{ZmXL6zXeYkROM8Ze3ujCDTRZ17WDCfpaM8`Z6~&mCQ} z+UL#nt3(UgEzRaxdeWBS-*D%DS6^Y>>N8^dHoLnFk*?6R&Is~0lOLVXC^7A14Br;V zEl%AsPNl}ES;1|$Z9CJJU7lIwzZ8=i?)tk6_S0;5?|a=(df((8yBhHI|< zt{aVf`Fu3Jldl-q*>=vn@5iOKRkK9%zW)4s^%r+hcHAR5mo)R2w|RxAOTrB!MqwAZ z*(AfE*Awy17C*!*s`9*&MKo}+cCBoB%VQAYFMMSt8XDy+jlwNu_&?U$;boDTNlS;O zLDunt{kC4uXS-+}G9hNuwVm*rZ+-g~zAmwAyRC4_3Db6Me-XWVx7o zoAB!qZ5Vi&u%jt*Zb2`Dhb&}*!=T9t^mkRSNv&*iFfslKwSyr>{Ltw$QBDQk>m{J$dox)A!z$uJtNia@nCcuymh{TM9AVlrTC> zsO%#q*+@MhipRG+7al%3ZTB^MbGWm}nBRPD7Sp`fzs0_XnAwo$rHI>JjrKRS=Y{+H zI3%~r4({&^rSDICdsx;~FBuJvwBp|$EPd7W2l>SN@rOyCU>Kh-83>Q57t<%w9fKhRRVEXF6juO3GceX{F-vSi;sW>F_?DJ{=k(OG?!( zB`ZNI0*b2C#xP3wG!ndtJZ8FULa2N+)@)`k!}0U->UKzXJ;?^CVcj|M4|Nu2%~3X*`Xx!v8`AcptWyY*5PP>@AyS(W76tDag& zzHy9N5QsOtl2vIh1TRb?f`W?{t^_xN~_ z9nuPysipZ1=h20-I1*#3#tn!4!$Hq?@vi4+ozV_IUU65Vjp(@e4!z*>=p=v`4s z$%fZdql7V4jb&>S2(w2zl%Z;_69^QU^2ehPDS)ymCRiJ@RaAn)s-mS;RY}wGn+E6{ zlAGU_Gp33FAs6rdO>Y+lsbnm+4Dp2bc>hBFkD#^1CC&o1^Fpea1KgoT2fy)?2i9S~ zGnG~u{y%97kXcx-N_^GxA!$Fq!p%GS@~vI8fiS>;L!Op=f4*;XmH1cvLgWK1ibzF} zQUMe>p(zMRDHcg35?0r1-PpnwQBt5nLP}saMToLO>Xt}FD(=8ou|=4GIA`*|g9qYO zqP~+EkN9U@XIxvGJ1WG?NN!E_&GAyL)oc^Dci-^g5Bfbue8)YHyZ2oc|4MqA7F8yR zxdJ@oh6#36t7s{Yp}XhwG5x^1FZlQtYtQ4s%?*+eTIbij0r>XdiG8w!f2cVuV@|3Z zMyWuL+Jep0Oy2c1L9&1H$Gh3!EAv~F_|l{iBEkn3Mv2}G{Jyv_Vtg&eP}$iPN~>jZ zIsVi9zt#V$34O0={3* z8}7ZZ@6(b$FaUSAVEi8)D&MauL^+(hBIsrmRLPe@9L6Ye`r9TwIsBd>Z;W)u8GS&@@Me( zRIT4DxN5z1*c?nrHN)tMp%y{ zXD@<^sfFFL&)ee($M!q)4mdv$f0EI}Q1N z3*+StIRQv-{r*j6*32N5+O(2+tnt65!S>?QCw*UHG%V&$mCBg z@;NZIDFo@{@u*RWK}x3s{&r})=rb17CFw6G~&0wzpwTFT>JAhl&n&Kx3zwvcl-nXyMugk(D7m7!z>g73?>lQ zr@zbJHTob&2VXrCzi=})sj;Tp0i~pnNRoJyg;!2E#~oe9`DwTpy+EcZis7cLtThGT zF`dq?%xqwhL<}+sCxFIhYV1aQbxm+C!6fs&&F;K`8sBTYxbk_=CW#`bK_n4f_1`FN z2j6GB%;+r;Sz1XY(e4EM%jT4Rn@RNe-x8=@6e0jeOfHBc(515^W52Ddk@^xt~l zYt+R}Ox-o+?nb8Zv^O>XK8UDBG&~Ra{#XB3o%dDh{J%V-y~mKwOv#CfdJ^57xRLdr z(^3Dr@AaQu(o|qVja(PlA;o?dR`0$F8>@#wuLiyVuHaLDvAodcliOQqJXOY=fF_GF^YjzP_9>UT~w7- z0c5JFDz!D~ze?N2WA5vK3rGNx0CBgV3jX1M5gH930Z3^jtt5a2Wewx_eO^~@z4QQf zfC()Ck^m))X|yzw8VMnwk^v>4mqVAumvv8UYynXK6|HGB07+;9mb8-41uXzl8cAra z|9$t?``vZR?mO>VShb{((nx6~ppw>-TGB`Wk^mHjfmPjR6I)k~wgkrRrQOok7UgB$ zF?i=!-RG{|^WLlgB$vM&aWcnUY;h{5~-;p@zhJrt@ z>)QK;`+WL*{5AeRt~-3lc-MuKwcX0YP^#^6UDVHw+!jg8ozIdU zX}(SL$5T!(hEf}}yBlkbj#h7#3OJD@=@5z;)?RK+@2Xrd=$@JdrDS!@M0dUG8&L#l z;{;spt%Zih>@&zGOw7+Jsz3k^V?39^iJh*T00000YG^vj%2W|s{+n!}Gnv89_=b#CRprC;CcP?F&(cKc8R~-^@%{4q$6)bsf&hu1#X9G^G3@7FkECgP*`7)~1zviiZ z_(>$RNl79}{gU`Ts@%@1&>)gXB!E-+Q$=0B-S9S8)4)$QDx$uAiztX%NY7lO%Fc6}s`soAfVr3uB6Uqk zNEEqA%-z@k7uOekGp%*kS6NXzuVEt+)tebYa_l=bdpvg-dGjxq7^q6_?w!wd*VE$`1CT%fJ{+&bXfIt8M6wFFD zw?RVFU;rS1AOHny!<;%-^+*reZ;5sQJL?m_Tk~!=;@|*+B-$HzCJW365%gYKmi2Qd0%o!x*{r*4ggt3R=bEa~!+Y z`;PkFA*7Q1sx*)wq*E`VI_F4ibSta>5%1M`w#q4_i!CHcFSa_Hw)^ZW-tV(jMFa{- zL2H)NJ$2U^*GC-m*{F-M*0^2g3ChS&Tx8tLfg%6`02AdWvfL*JmmJS3OVbu#n8XKH zapn2?FJ8TCiPx?s1G}*RHOGFs+1C2Z+;cV*h}S%uZ+!FQL%0B6bSgvvGcz&=ITrXh zR~0{p$LaUJcAU+}o$Pn`eV+Tzc-T{~V^4k2gaL^$ovtJP3)uMQ8!wlA$37adV(mcX zWvcl6w5}I6pDB2s@_3X=T^u9Ui(6+js76f}CI@8Yqr;Hi_c4#Qa3$y08RzZzUfnxF z8u?#d?RELr!b9ehZt5DKs-RF?il=>A0D``2$*%XFuYe*ryP%iE^fFt!CKp0S#tnv(i0EaUoB7X5$`{y{wgaGTYLby4| z=Q+(l0RRCVIR*(QzM)4-0-m|fUpdQ_9foE^00cSKe+PNPE{{6)Y(xiwF`M?BFR+1OX8cA^-{zF}~V-c*h7yDdYL|4kLq{ zE&{yViTRFzj=Q-_dzN8=1R5|;XQDJ0dl;ktbdwRIOk|2lnaZL`B$9M4@hmelCnXIG zl(JDko^qh5q54JnXm;nTqdJHC+8B;NzusQ>Ccd6HN69(#b+dkQagX7`s~OAngXkLJ zp<-@Igu=-yMh?Jl>Jq=ll6x8jPd>NxyL*%I%7M_CGpWM{Ma+2Xq_TZJRSieQLaOfW>?wh#b~IIe%_6wv%Y5!F`k30<_Z=NtNg%W6g(G)0 zIdd69m_(tOIeC18!a*PsPYI`B`o!K|cArg2&3gPkT7IOr?b=&DySw#p9@phO z9G-oZel^;^(%ugix0YiEms?ewTHNEky}4xQ#rpj%^2>s57h0pToOD?zPx;3b(a%9S z0SS`UayIjP9XCgwV{b6!1L*SteI*DlF1L<9#g*E; zt*p70d(+J`?(c}%-7zJ!?5+FsFMYO6@wA*01(fs>vE#{X^0C@ExlmfTR!m7nmNBjl zblCUN>oEDbx2?o4cc%}0tu3%sddAAK+P#Rv8+|W>-q)h#yG2sdqB-76p4{t7a;wBy z;cT(+PY#PUAJWjRVxp6yj zt6_rhS{f~^K?9SMWV0}{olL!#=`OkT^U%Hc|9;@`sozGoX)jVd-yq-GRBwDAOzn;> zBe@v`qxV}nUz-&iYDwno->WUe;uz-doa8w^`!L{^G3wZS$oX!Mliw16hd$};?{U69 zEJjME(C%ATltvwxiF%7&7srP!f|Epsw;rV1Ze!WMiyRiS=I0e2TVz(k%=5EWw)e%f z8am`MS;oUFE|WYZtBbCPl2&GPEbG>IIW@s9F*1&uT)XbJ1b*AUiMYIPpR%3Q@dQJi zWb#Aj-vtEp#&A?~!N(ga%XxQpw@z@sLc14WQ09J~=-=-LF^?v5jxK~xeKfWAZ2Q;G zw896^7E2*OeWY&6*)5B8skT?HbGM?7ce>J{!WY{%IomQ5vDV zhq)XamaWXilNY{j zYiGe`<9uBwmF|#PyR&NXeFTk-f%iE@%!qtqWd9qz1E!BB$h1FoHq$q2XP6S|t=n}i zD<3;p-QxhLKv%zP>i3&F#m=GZkYnL--CgN$n^7MKlN%NW!VhZYoao4FRH)8UkrmBx zExXw^HIJ*#OmBCw_bshln)@3|SltOSNE|O@xv?V=CCq_)Yc7nak$Zi1h{iqDgnHG_ zivV1W>+jU5lO(%}<%xT`GP8eizW~FdZJh=7pQd3Z+8gSwTU}|gjPZY7VEhC3y3Wp& zxgv3VHb*>{@6C6@xLphIv`vnC)7BBjY43I4N5M3ENUNbQB&N)Jp?hZd8!(i8t+J%b z?T+rfrnS=oF5ugIZ^p~Z4Ik?)yO!&NcE0`eql?6B+U_BZxpnIAUHWyq3+L;7JWC%~ zNedY?<(}L*&GMY!#CxXQJ>d@>W#Y@c7APswHI}`R;-fRp$aODux;o>P{W~4BJUhdq zmv;4~;oEsWS$(!)OCfdFdxw})Tj1UM*Bzzj)hxq7!o;UCG<8x4*l6ZJHxlCo|>F>R;*a{BZZ#c^LOUJ3i>wE%dR0of;En z{kJ%=^F(pF__BB5S@*H)8mB#JTx-s;x<}%ZHne7NV;B~ino;>4!PVe5- z^qQ7G4gen9^l|Hpu*V{tvcVN#lNmgCk>-FBg zpHLwHpgq^ACS>NT@%=9h3LuKbRj+&tkgF#|S#lT3xp>N+t#V!6-Pj47%BkNG1m@z{ zyRZWmk`-T@t<=;A5~r${e|LZbe`fiLt~gOr07S2?OwW@xspLdePIFu;D5l#$%ncxO z(qc|CUOhTvk|uRSoD50Lu~j4IMF@z9h=_>yy%14VR#@dtWn7y;xCS$dbuR5-iK6Xm zyR}|X8@m!+>aS8_Pg~b@%}Wxso0WHV0FqxO{al-x5)1+)c|_ckUF4J(qlTy+&??+j zD4>*_Z7Uaa-4sxcm}L!BQAJV>YcVe?yyFZd)baCKxsOY<;zd~nGxZ%@$iT`Vh_cmz zO0fz&pr)|Gl5yCQ~e%42o=T+jW@;-O!09d**()NBmBl>8?I_%kwOhSZ!iiK zNUPf2HCpEd1SJ3z<`M)4)8CTFxm(hEa}P(7=}l)aaH%j<%0xN>EU`ZYYOC z@JP}E2MAi@GonEthGuIg5x$fn%FKeW5Jbq>LcaxFU55Q7g^DV%i**?g(>+`jE3W>% ziGM#|m(hqv&F|My__kCU(;M~R+c$A^KH<|laCYBT%vohBu|h+p0DlUN>yev)JJ_sL zbe?2YYRJU=*{SkY&?hp{XXJ%@x~G|B=fE+OGPFD*mSttp0Io8=7^Wdq7?C`|u+fZTiEL$$s`|0RH$hz;v2J(u z;Xg0y@P7X9lhWiprSqJ#-xq>{L&<9$*T0mv&t6U~HTiyAXZM%vgZK1DYwzLx`}~K5 zRArGXCJ()~MrQ71nR1e(izys8>*!zC*RQX+GoJ+V^}XZC0tJS8zWw&kn7aF+_$Qwu zocQ_pYS?_HK9DJ$O0r1yQ8xvk1Q3JBnHgVU+E(94+}AbkTEX6dm$<`A3(QlmcYlXu zEPO3j4DXKa5nLK=rn+M&(l>!dE*V9gLs6Rhy7sKUvG?oW<~4rkJLY|UO0!=b563Zm z=nt&{@ALEU+HD_?hYq5)ukQkBS*FX!iSq~M76g@wGY;%9U3+FnY(Dgx2y(`w9?=LSw#p-u=|2@u4gVF_mboN|4w*M`_lZq zqRHF7LFPW*-1n+HIr4j&&by+>u@Y&m=$^()(=L2W^4#TNmMntoYHha8c6LWx`ALEl zE$y?q)!RH)KqP9#y9(>e^z<1o8)YPlK@>daEc1sE+CdU_ z5+x)}qzU9r3e4vuhm3JJ!PL6|0XNS$$2;eTI^4;NyR?xgf@*E!GX^ZOQb8n=NfeSv zBBnIVm^cpY=6X*PEAi#m%gJ75ik0%-A3Z~VE?6cg*R@64*^AqImy_~3xB@pL4)2U` zB=u2N_SGal`SpBvQ~u-Z^s}B^1?R8%a+QPnd;52ClOxWPfpYFpQWk|Pi5h_|bQ~xN z5`cIhrI1uz00Nu(KF+?q=;~wn@m+QK?#O_F>bJ6dt4hl)V?csPAeojhavkPqAK0Kt z1OjOwg5GaqXmfeAw2}mpNel6{#eH?u=a2x^*&D@Qu6M3^#OH`PyEwbT;v!tWbFO9U zo^?3en1B$O+`f6^lX=v)0w4}8*EgQJopR?r?-39k0006D+2}T=E&^63?JaVXkQmVmmEA1>Rep#D(yrIGDS9&&g&o{nhdG^1* z&u^T?8C>>&f}@Jn@_EvaWSuD+VmNyDZt+{hO@%`UQQ1yKl2pgcVpZMLw2Qkg8+1aGw2uOf}FT8V`=Uj6+zIdEPKtx10b3EgnXPM38h&W3{ z+U|&5*&u~eQJC;M%O5xTF^8rBAcA5b0t_3Mv}W;6FZdhY4zt|Zq=+DbK?D=!+!)7Q zOs(2*5J3ck3IOcK-R@OF@@>L5z0CH5@UNqPM@7t^gm1!}gzpy1rk1mnKvyP!09?(-4AJInI7%vrvH?8O7_D2qvHItg=VgLPB>50SUU#_84m2nM z`3V9b5GH)>Pko#1cA@v*QIrIEG6NGCI}gtfYdb9C9RL6T00%KsQ1g7xC$jfB!g<0$2g%RL?kvkZf(ay&K$ml-Z9e`V02_Pb zoIMmc7PYCEn5Ju=;hwNU0VINSH!mi=`>6{1{cEHE9``5RE_Dv}hd8qSE8ymx91;c) zNGE_#WadhD-J!ngtE!E8-uadn@vH3yD$xBYcaOK5I`YO;XMOcjY6*X$O^ALDYN>K- zfnNNi^O8P&ocyXcUyp`c`Tm~R`QWO!E9rA>W8|=Jnb`z<$^5O5=De+O^?H<`Jc0`q zos~YH4|!-h(^VD)RT7X=tDWZoHQU42-M%#6+1-3}ZojF7BBH2>f*SJYSEjYIwz~VU zZjliYf{DI!&z~H*>~iN-zdH_bK@}o^=+tVVNGB}3xpU{nwZE&UOzF#<3mF|^&;z!ZMCfO zl|!PE1Q3!%0ucm(cb#|NYbzHtcz_6qRZ#}0g$xF$g;PW-sD)8LCGO3z*)XFa%*X?& ziJrQPvfq947h;^pT?0UriUm6AA|=pmY6)>ce#ScMYngoH@bOgKbp%IIlgG|(ai_uh z80)Ukk~@~sJ;}l;9^kJ1^Wwi&ob&77rLUe+lQvxE!sodI*|QC)A}YIsY}pi+IJgvH zLg`Gv{Y_qK@4jW9)TJKwWoF*tShP{o#^Y-{g@P86eEia$X5T*tDSRZvYL&Uu<2nZI zLaL=z6;)MAEOYUw1#WWF7vImh+0X-W_i5$di2IY;bb2)dPE4I3uYY0R#*UTMu1Q-OuAXhW?9zL#FR=$fv@+xWkmdW5BuhtKx-eEql)_u;Cu-EuR@+@D`Q zPoL25dpTQ68#E8Men)XS+H&FR6v;}41Zxd#i*xA4=KhIM9uX@H5hZQ+1E-5x$f3T% zI{0^o`0(U~2hLSOWJ24Ih7!qEN9&MUptYb{1)xF!8$qg+2f>q`&xZEk=U)vu^~s$G zZklZGo8?OPv64S-2KXd^D+^PfpKbK!#dDnX+nRS1AbUA$4Z8NJ&c5N-eIGqd`jh2HU=A8<5=qu&q}*J)r~NTqTu-g=G3TGk zKX!jFERpBWwz``2^=q8@x~8yPLBoeXg5nXap;0*Ybo;-5$+#s;!UN1Hb1NwC?ovlPr|4d;#or=fqzLMb8WHNp)`7 zi1r)Z21rTnu^{HbrS9R^b>}_(Q!W!uuB{`>N?CWVn`7#^adBb4b=NzkWuBMBwC7$U z4xQ_r#g^@qW-&fFmx7k~_|>^%=Yg8qWam7$UdC;AZlXVLGOxX%WD%4UHlxE|#p_&d zvQv|b+AYjsnm&vyIDRQtMb_&G%5TClYkTXt`=a?njV8P9;u*cp_3>eRIZ+?~D*jhu8!{*bQ zbk4h&a23iz{h@}WW+q|``GHFgy z9WqWQ_b&W-Vz{j?CD&eQwTzqU?;S$;Ow%2wFEfK`)lsYTympHt6B3MKo5i+oB;=^? zPo?%tUfEd#_jT^WCv<5m=yK(}X^%6${W0|uX)UI zu{CVSsqH&Cz3g%NIZ`F=3|kz78!e7ix*1IBRsv&ZHd_6xrQN}$aaGA%#{i|B!XSxw zTj{fr3PwwGXtCk%(+e$-wm#X42(hLjR9lJ%yqD|5=aEj7;;a@)62|Q#ZZ&6E_pIGL zt;DFd`!hz{@5KDyxk4|ARE?;5JHO%&vCy|jMe?cqE&BJP*`<{o=VYBmx8g0z=N0RP zJp1gsx!rcR*5R3O>#eeTtm$@byRU3}&9%$dmI}I_%eGgW9GJ!agi@tYaNDpS$v*9fLbeDAbbsrcv zk9&2(ch36RHT$uCy|1Ie&ZHdsW$ylMaTT;8i?O!G46ZlUc|5e7mf9zBnKW)2IbiRHK2XW4WJGBqdzfY3kKKFxN+MXvw1{LGLCkGn zYkWUOIgok9(rr1`lx$@4LPCg)+a!aW;K`$2_%Uk~m1Sb*V>O!TVK+|hWzICG!?fw% z{x#NdvD_6iv*T^N#8cV}8>f=YxUCz|w+rw#`nm}qlWo57v6i2%emUo*-R!+zZyqwm za)r=e9n#+P-naMTuCFgf>z^qbuH(1qHi{n-vwqu`sQdS?rUl`5zdWZ?@4zm+6=NcqvPPd1yik z?-V*ij-4S2_4_XgFw;#_MO8#aK1s)Y_`9$K@_UtXYU)qtcPWPxMFU7%43a=A5^1*D zMD*K98qH`C@CEgH8n7K=>a?|0Ra9eOceylVw4UnH)({{i-AO+SxsE9zGo5cd-H?7e zyGd|2z&E|5Nhunp3d;$&G&N$hMN>-vNSqoKrr-cD-GTZyg7g8PND@G+07p=_qQ&o&> zYO1O!rZJLLUES}3?`T6nF^pcSh>}p#ZH)<`B<7OqS|4EQq`rs&x1p%s0Fz4S5=lD$ zwN(>9VAiCGB$7!aQYj>oNg`57B$7y!5=kVIOSalcB1uUSl1U`Ke_0|)B$7!YNhFid z2><{90T{ag1V8`~4Xynu?f?{k00000BmfA4000002lidS2mk{&U;qFhe*6!+fViRs zf8~o%4mR8^Fs$;wJe^`jC^75(1D2aaBmwEKy>TEmbQ+P-?MdNDBa$R6#^(=PA3o*|pf3yImc*dNOmA zYU?wEYMDWp#`a?r|J!3tgTnOll>+m=zvnLdzzH}vRdN1p=TD_cw8wuhBgOi; zXwv4pzK5RsW4&o>r^h$GjE7ex)Ful5r6JNfCq|vJouLRgX5i`}vArP9uUlP_2$U`9 zy(E;J%DoUZ{{PSHJiqF)XZz5qsgLI`oY`R!RaC3|1Cucy`ygA*fytr*rYsn zGbm*~t@%;q4dTWo)c;R^Iy5Bs%I9k{{Wvhnq(LNr$7CM*;QVM0bRLi4#{NGSqNNDL zkhm_BHBpi^5v(IG!GPI~_EPGv2IF%KV2uw!VWHTE7f3ahJ*_x0EUv`M+J+*Bb1K4` ztF|fp%wEAArB;D&GO_F^!f4Z*P+>Yo>+K-0FCk+{+zH6kxL|;O;buU*E*Q_rPU*rf z9KuUj&fJkun8a)1`)PCSzXl(O_8Er8k&vx%jTPPabHtC z`Rg;jHQwylhTQym^*(U?{UAUq+WqMK{as<~(Aq^r)ewf;ZOz?r(Pkj>&x$0xaDmSE z&qLxr0vFHE&yGHZ*~4;>aBiAcJ2JXgU1F`=>HGS=`{%nq#Oyq(I_F&l{lP8Ij&xi$9p>&*9^=ajGU zdGo%0SoQJO!2ETw!}x5v`&Q`2p<*@FFleeGOUlz2hGs7*^W(ws_40f3-O##Ml8L9g zUcTG-uNtm>d-E5@nBn;N(zL$KQuYRp$V3@VwwO*#idZBnEa~63x5vZJkA2`)3zt&Z z_@5p7o%?m|0Bw7puL7fA0W*Y9`L-wEcT^5%EXgf)E^LNa(Fp8_`T6_%{C#><{B3=M zy>!KW*E@Lzi93y81(KD8EV&%>b2K<8qG$CD)n)wrO#{*yL1L8C(yCo^uMv>!hp+3m zJvOd)V_*D}u7I9%pW}cLeW>j-t5rz@!_E_VUQ3V49{(=ju6hJ>k-g5L>mtWg^PZ0d z9L4K>zL$fu!a(U99(d!=JLi1dk>jDxY3rQU^J3&~HO_Jlx!3P)=-$xhH?Mof2s!Y%OKl$ej>Ulrk-{FbL^MjtI{v*HX>EC?5Qb4-5-wJJS z#_T~*rJLd4TZ?;E=Y884x)*+j`~GZ7^?B!wv#Hh*XX|kNun_sX_kMj~pg;52{@vat z$8VleuzOnEzG5h}06VT}MIQzy#Z?$zDFzw4N!JuJJT<7*Y z%2Ai=V%f9K4@YAOgD3HqynFFM7U8sX~!)qeB z&Q&I{vLt%`yZoKMzaUSW)--q@>GpGeX1^yMTa4|$F%9*Ly1!H1RZmseV6r~iPqFlO zRhQ>$qhx#Xxt17CbCfyK2Wi~*vd5k|7w79SB}OJ2D}NlpQHD3&Z!nYLe5-RXJI9=-B1D*)8$^v7 zV?+uZy*~dtyaGcM&z~#q8NUy8YbP!NnYFE@v$^eXXf5V9n0EWPST`o2;zif^iyssS zUdz*Mw)9HVBg3FNV?bTGKKmEfvXB74t=QH#DsOg22E*H^je2&XH)n(OJR3c8 z-0yLyj>hbBod>k;aZRBtj#=QjuHwn;ZDCj0-{K>HHQUV;nwiP~N99=6-bzO3tQijl>Tl2-<524u;Z`FnU};d6aB48t*Y?n}d=oGy`bbhV zc~8MJ9XjPXM%FpIoONGV;R(PWTtmX=Go8p9hd9n=iOYsaAI~v*$|3ZX@ofBlqm%qP z;wMlOP$nbykQp6Z1A2A!N2VmIU;}wp&1I%&+(2nNsY2Bg+QKwETX~USn`S@?T+T(< zgK=kr^*q8$?Tx6-+UEf(Lhw}b0{J&Elm%Sf4_TP@ZQtx-|*3|6>yob7LkYKl${T5D;Y^(UxxV{HJhNCtJ zex1Di9@CnDe&1c&TgcSDXUk2Ix>BQ3GDmXZ%iYg0dnj_)E1zbso-h@4^++h!j5dNu zof11p4UyOL<`3pZmVNuE_&kfuxI#LKGE${tk;@Tds5kmm2=$5mU2OB8D2TDnc48hG z-Hiw4JGIVxJ)XyXA%N)|2%i|Lp=oc}0Q4nHycRrY`D|;#Nb}A;rLa!>=dN*cq;h+i z;_S?bJOaqv$@60dKt4;F^^$blX=eXjAoKI>2&Krsg-%%PpEv7Uw>;4!%H?^zp%XLq z70yr5F5`ReJ68gE3S>sq%zX>Xt^Qnb5qi_QcijI5os`0MEr&L_eth}z_Ch9u;a#e1 zCN}5))B5W*2e?}4pUYb@Fc^D~L=sT8iUFU}I5>QY`a7SrM!EOrYfk{RU9P(AUcl|Z z1NJzbWrYdkKiVQ=sKV>cb3DAW&g^z(qo`9XJPqQ!so)*`tF*fwZXqiSe%?rF}5T0z9Q}wM7XE(!W%EA> z>gH@kCs>h(U&3NuFnw*HSuB|R-m#Py1|NPU6}{=!NpX(np@b-MYq8DW#5{UuLFlefs`5M=+t6VS zyb%`l_$Vi`VtW%EYA8_L?YDjP(1?Z3awv0~z{eF0lo4W6fWL&cZ}9qe8~#@J@Mul< z>R`FmU@)Ba_C#;grpuj3D8ZBSQm?vK`h6>$6CL@%Ibm;ouJ0UY&Pb4gvA?6+V);r? zmT^L)xtlqIc#GC_llULfO!=~<_J9E%Mka1`?~CAWfiNsHi|b7K>#KI>&oM_HGRDh1d+*8J-0r=;33SzYXOcg~Yg}xT zB|SReuF}4;vgh&UCF2aL&8LPkLXTVIOtTIhHr?4LZgw6#J1cg4x)E(MzHja&DXoYQ z<6{@ws(7j6w zn1_xdBxye;FiGh4I#7eo-JKRj5m}N%nGn>L7s2c^rgpqWbUkRrt>Li8E++E6_2uB9 z@A7@MIoBag$Yg7u!`mr8T&`Ykd`2s0;k6!f@VAefFZjIj|5Hhg?)_c&L9N~1@g}4o zkH%1hTNg{Tj2x1mQV1X;)IG{1+7zeeQ+ayFOJ?GhG~IQzR&7<_^7m{BeAc!yl;*kF z;ey%tlJl^w=bE*z^nCLp(X!jp@Xyomys|i!s<>QwqnA6V{hcU8oXw;+%iI@P3n5I} zmf>Tq?a*eVl4=e-&n7{{X8xv;ovn?{hG@&N$-N-XBNxgojm2x6(I^l_vG?mIJ9#;i z!fs<29z2_C(_4%kd*oLW?c(;r$fChc8f9-WbP74eZoAEIt%d2`PQug8Ubn%kxen92 z!`M{OxH`sp-VKjjuYqH)vkN4>yjhE0FU@6S}kwVh6k`|PHJ}i?B%}togej2$pdU$U0WMO1nlkRA` z#SO5FW5e1T4Bqv(&%Ap~>*wAD@nbM4m2gA&C|u&g*Ryv!2+1sa+P!jm*`;yrQsvy% z|BIWG<%3^i>*oZKaVhvb@afszz1BWavmj(3)M9)(OE!^Ry7#4$cNn>AISQsuJy3!0 z%Qu>9Co|PIZ((o82!ghUqZkZ8ck#Ayuv~tFN)|rR_^8#+%b=3l}H%_3Mes=0TLV7QbJ?q!6K5cF`%DJu^?+!MbqXu~M0Y^h&H?FU~-&*0m_iCOl zCAU85J73?A9p29!?Ub?K-i?=@d1WVD@YiSMudDbMlI(6A`Sv38<4(Bojc) z<$^gN^tSk*%XdL2@+41FV*?J5T0AzBYVVpWVs*czlT#?w>rZ_zzWz6qy7LOJtmt&`nk>kBT~*N&DXg_s1Lc=Y6oUJ6Lz& zEmwP`=L_=pz@}TemfN4Ju-3PTiY)7?J@;c7d%2jOpL*$BHfLVT-%P=kVs(#*(=TOS z=|3FZ)t*Vzc|tQc>u;E3%nMjwcdR<_y5pz1`|eBgh5n$Pz54G{v(7m4YGucHS%WE- zF!Q%l$4!Zhly~$;j@~_|t$EyQUU`A<-#cLVWoC`+Z<=YX_+^KysdLKfE$Xi34r`g~ z+QQ!*Ba7HcDLK!9t&H;r&TxHy32Wv@>*L4AO=}34L~JBOL^4A}Lo-A}A~Q2;XHxU7 zF=i~V0LFKn<5=3j337{+s!B47YC?liCnSko_&B)0!YO12q zODA;i$>;(;OkJeJUEIG|#Jeu>j7IqYBhY*eg0C~;1>P^I^1@J_~0jdhHv{6<{l9_2xyW;Arz1z$Yz?V zsznr13IdX;s5MeWfd!@oAVEoJodse7Jy`v=cbR`J8pXK_*s424T)2u?(ZdpJ$gYBltkou`u?{WV%&_e$gp%jE z%Fp`mD`#D1;=2=0G@6n^kfuAcit`e~nJJoZO*K}#Ok_DQ34!N(1>XF6LL*O7FKZHo zu3pvnd=aS0HDuYFTJYdz`ePJ4Qep~HjtGyI&aFF=rR(-=NZOLSL76KHEsW`9L00yI zviMxcz7HZq$~=MbD#}~Z%ADCoKQY7iaG&dBPrfzeb`++ zeEetKeC^G*+|dpDcsBFa{W4+O;|>b%$$U-vxN!TgHGf|JkzQo-$>aJTCc*prVHk9p zEQW)xg$+jbY*NwAu2I_7!`k~?4*0%zwrk>qRKQ_k1-}cNAY%tXuZzuW2D_Tqw2&jE z8Zt>(L(iXYUVG4b_3C{6Z`Hx|@O|yE7R08xDWM_|*P@)IjW|l`oZ3{ug~_Lt*E0eC zmxJ%%d;H9A%rCOovmwFzrsnxSett5?Z@ks+hm>$v-{0BSx7MrL1Wgh4_qYp{^LwSe z&z>2xlx{}Sv>7B)1bv~=j{ILMA^I`jZd#`nW z0i8dHiP6#q{%cY!Zt+NpSgie|WfCuRJ+?X@UjDlF`uM|>=vFevw=CxH<#W!@&#wLr z(?XmK4|Kk0noiOBS9b?(N_MvwR~99C9{zg>`v<)Rp9;eJ{=EEu<2U2xPbcixQ%{;t ze*PmTqt3k7dgtld`J11Xlu(giP#(?$`u)%D@{r$O42l|fPd9bq#ez@7aA-W;eWBj= zwixR+0FU#x*w=$Hc4M5D^3)e2OV=5>?jn#;K^Q0s?3(MPn$~R6Arci69eK|@Z>Biu zj-gPhDiRbxSm#am-tn%Qiv^Kjpb9}?=RAF`@y6B0YkpOq&T=KP3nGMAu|Rsz6T~-{ z&T_K7SFh2!+7gDLoPiJibiSN4YJLLWrQ5b?^}G}3&rjdJhU50WCwEl;-|2`w3fkOj&n=o6u$Kpq_gl4p3izZlH|2q%C8w|PUm=XmbK(+2PozG9?b?w{jyyB%uS(CGm1 z$;3EX+C=9Kr6%ulSQz7k&UJ~jG!pz^RJsF9fGE+y@!6%y;v3J0A7RhSiAMe>NfyI= ze@r-%>PAsI9HPD(rxbGUHx3mRv1h`JfRHmbDwlO=K5z?Ss}7xcZG!jDg&SsUAP#^L znwOc{gG_Z061haBoR}@1b?^*ZOC=UE`s;zDwu_T2N-<@etg z&)nC@R6mCwVyl}qxLz+I%Df4Odz@3Y9SvviJN8{#GNN=M=AH z9>jXqbNGXJ<6Buu@MiVSX~0t$Y#_C*6DTC3X}gJnLx0R_wV?0c_wu5d%J^Y_!~zJC z604o^-#5oR^HPc`ilRjTcXKG_Wkx{*gn__F;UH(;>K)wLjo^Z!f`)zN^5w@YV~zNC zGVldeNJBS7+g(nc=cf|45}Ph8IPaep@kn`!)>RU1)4#m)*CM|vw5P`kw_l6h z6ZiQ)g2-O@Ja@YuiLZ*!&}Y4a!BB-ynekQ+biC$Kk#LcV8I!@uk;TT^@EpPpdsbDD z$`7L3#8~!0dS0H~bWd*_e4YB>;r9nSp=d;8_J>o&(&1H7HByRq-utn|nkq}i1vlGbw9d}d+&4CcP!>meg(?a`Kv)jA z-+gz}P45-4GZa)IO!3b%Idgvb>D5WHAt;EN&id=D{L440p=be~07&5gfC(WI_hyDH ziH`&#Mj4nSg7YSZcemD|iQy!WNj;=>BXfr?uNT&~4nQzmueLttseS(SPv`8ri`q2x zev&sU1{Lk~A7cVD^ZCB;@2+Hb;5d}Q*ctLV<O|wyWCPUfp~<{Xzr%Q9wivC zJ0=_&ld@rGjBi~wi;_;|0n}W^%4f(GbdVVbEfEOFC}B$7!fyV}H69919y0P1M&WFoAIUd)$UFilRX)t>94Ux=LL zk;OTy;K#d_&d7$Np<>+8dfHCpptqrSK4s@S6>eknYQFt`wSm3lXAfY>GmD=!L0`{k zBn{G9@oQ2PNzrCY;jH0l8M1N;{7PKHbhPCqr}ZDm4^Pt#wi<8RGS5xvqFPC}wXgbs zeI!W)5f^an`8@4+%?(>aK_oO1LqMc75=0gQRRWR@aa&|-S8Qpvb|I#I7Xs1>K}abE zsz9WI$ms2wH{Te}|6MC>tb|b{@wS3G?Q(a{>6)(kuKL!p!U+yWf7DW6xOitMa-|F62-oaozWZxT}kY*$SS-2#;YBIsgUX z@19dYbl*|{BfmO(+)u9izTJ55y$wP%NC(BGq_nr)bCjn9Lu}@VYY4M9Iph*!!!!6O z&CZedlHkUr%b0~?E9Sk&aVNV!Eav@ItLLCr#n8TJ{hEjCCg$AVt#`>D&E@z5T<{~$ zi~cH4C+*ws_~(HvdF#|)-TN=N&$lG5V*e&mbbruzQ!Oy50sxli?yiD^2$V!YTtCo- zyX*RE3*FD!sHN6|t^3p}EjjfFk5jn(o!agSp!o$0&NI6&LSJ2-X8xbIisQJh z>HXdMp@-G4DEdEFUtOy6`&*^)BYUSrdszS9$e9r+i9`rCDaj}Yyo_@@rwBQ6W2ciD z4ydxN(w|om74hV&ZM&J6>OGV$))SKIudciiEHRDher()C0CgppRw~ZAV`;wAd^b<7 zgXK?$OYgX=0S8ystClC5QRmc0XZ4>*jd|oQ>lIc_clCd) z_PLs|n~>(@oa16YxF2qs;c9mU*x9edtS@Q?XbjAWK-f&Pq>(uEH!mlK?Y(~z1>s&V zo=$I#xBKuM3nFYiINN>q(_dbh&fe2aXCDzR#8rB{@!zh!diC>td#IftJijM*zPWdf z>F;y2MsGd$>wS0M9b;Vpp)<#hHP0L8C31j-?qz9JyWOtB3=1HFLhMAF?qs$>CzRD3 zl`z>#CtwW$Kc^3HB|{_c{_n4V{MXq(4{xuxbMN2Z-+1i&$o*ItGOs;A`u(NFH*;(F ze)s!g%<+2Xb$Qp<*`+Vi`qzB!aZR3mQm)g_@9pb;Q?bkL`^ByqF_jFZ3GYhw<7?h) zbP3OKx%#*HPukzL^|I2-TqCuWD=z#WgE1@gt{L?qOc}k6uKIlMhl*6Fw4Pb(rRSSG zl%uRQOdU^7q>MVo)r>WYM=FRi4_k?K5oL3Ol5c^!@NWJYp!|8HdCpVYmFZWf+t1JO z?{yAee7SgHyqPBd8ZEu^<~Q^F5neT(PkZ`{_80e`mG3?ss)=FYr#4wcj3Eatrq7!- z>Hei|y?Ng@c;PLfMtrZ0b){v~JlP*!d}B-e^!fLu_r9BLg_-w^__{IOy=~MB9whv3 zrU@%@B89zn+ICNHr>`lV{a=Dz%XGV&j&BTaZ^^-JKLppZ=;GE~Qu5hmXYH|vy{~gP z@kw8qy6{IhR>_oX7fteo8s*O%^=>b_t9&*$VTOihjltLjy8lgLM9IrrPB@EpH;+8X z-(5R**H->+443v+BkP!Z{=IdVL&b=p{HyQ72gR#K%l#(Lm_YdZa=G~Gq2tlqefMXa zZqrlYT16H3%Xpyvl@Gs^q#TH;*XNm=uM$8b`it8;V&sxYgHgcM(>q3rJd%+27Z-Qq z>ORYRq?IzYTG!X5y*-k0`))UHDd^n1vKied>gVOPR`ydoTT5!k)vH6Q%VWm;SEGed zjD&2{Xm@Rv4-~o0n^=Mnns;JO$Sw>>=Z5}#UkJXXoHQ&w*&;aIGBr=6X$*BX*p}-^ z`Z(*RCubF#G)F&esdC^9%a%UI$StVr_l)nu*SH*UiL_OH0DpW-rF+&a{}?ZGf~pdf^D1h|rLt zq%{HC5J9@3n)i^7$)2Uqbv|WX*7`lW+M3byElUFf+yX1N?tjW71?;~#?(?$GF zc6vK*$1=#AX12E0Su=8F?-li0tp+r+)n>_7qK49SwqY8PRQLGnHre2uh<-J@6~5i_ zjs5&*##}l3Y?Z>;vnPh56LsMeLyh+$ZwJp@;i}hdTT~d@SVe~Z?fMWvtC|%zpZP5SJU+4EBkdD z=d!}fGQE`3&z*MD8Z!Mn4*Xk+dUt(fy;l(iV-7Bn`CF3gul0M`cQ3wLOkF`nZQqmD z%e>!)Rnpj-UE6bobr#-BwP!V~$e?26XvpdK*`@xcfLqt+dSo4cqzl)dAJ~rn! zb>?#?L_zV>H?`iNu(!7MG0l&fp>*`RCQPZZZ(O3*iA@>G;TGIYG(C=3dZUlB)6Ta- z!E3LT?oOQcEv4~yJo(1W_UUw`rdVxf#CPKiF-7AjMBDExTWrwjF444g#``V!uKlAi z@z;*Ie@pdVI_m~h_Ad~oK8jq*HuK`%Yk@uWl&Jjsem@MvwbmHn>K%7jPj7zwTP62{ zy&qmGdD7p0{T11HwJlxJ;{0**=hut!<7T$8b_v!ceuOWUN;IHSuTK9~6K8(|` z#*6cRK62AMxQ90362ku6-Co>d?9hZIcF@aYq4tqoQZlMc@^s% zKenPwA|VK)`#B_xHrQh5ySl2XuK#DJkSe1U?uR*_7)hB%m!wt~dSF!x&q#%9BbYZN zC@b0T4t;trU%2(pJ=C8ku@yfLbt`$wad&rhcDoE`0;MIQsMSa<3oIq*I05lJ@CZpe zyn4v6&YU@@Q%IFmpAH~o;#r}P7(f9&?Ru!h$|4|C-b=6%sd+*nHK`+YB*%WUx~lAV zb{(l%<~sR#&;n+#zAo*0)4eyJ=1nIxv#*=Z+rRd;uHRZX}+aR9`XQQHO>Sjii^RYhdMK*Fz3 zD%f=h1c1OTP={7Vv5usKug@y=+B@G^23TA!s;O6O;2g-wypV*&bxm7KWi*t0I&i~RRko0kOcsQBw<4ZQN1Al~3V1eth{HvpIj^>~-H?+y9Q9pyc*;kR@x2d&Pez@xS)ZSJD%Jlj&IH5a*7_Rbiu#v-C=Jf2olsDA*c}~v^8slwnmHyMQP2py7$lL|M`8t|MPp!eV%)q``qU| z*E!F9U*~mS*XuR2MYN1#a?2%!+X*cU6iIkBVJa+P&hp-7LiXb=G}9p71*H%R2?a_G zrdd0{ao-S+CNq5JuQ<3_Teg3IuB%&PtiDB$uNZ{WHeaQ8?6c}XCzY*F=KN1#PIIBj zg#YxIF4U7M7IqQ_53EK-n^gg-U8fbY6F`rQG@C9!j$jn#4X2~}cZ$~0Zn5=6PDi@Y zJ+9Lr-z(r6^MdYPOgC*c#Yh)A`%N`ML)uH`>x9LiW*oLES{yj-Fg~jE;NZ z8m&M;+W|Y@*V)IHP6z@IgLpCIqFN=pgfhwH0q`hf;T7yzV#ntB1sb+x9BU= zV1z47es=<(*P6ontRp%IbHtEd*y-_yxylpd?IRh{1q)7qH4rp%uMfK%<^U>fKr}P; zqB|Ypiw4lOP5T;C++AdEjvE5x-q&=G8x_R56oZtdCu3vRI5rNqE_@m28gCi zUz%A%c~eW+)%5cp<>{5Ps>rLe6)t7{0i>5;_r{RZXl;(&g3dmJBvX4nY6v zC*LJfxiroWc{NTebG`*B&KQ;>s0-8=w1~({Hc^-?4Y38WAh^p@iyqb>Evch&qTBR9 z@HpOp9Wt{Ic}W4~av7zrS<)#5b~9x5xnYZ={-qGDr#)wdH+0JtfH&DT62)D zd^dU1emU}z143Q5$@b7;g;oyPprJM^5b(^scXlEbZ-oi?QpO;zQ&n!##-YQiIycDH zDW%g!a+*=ryfSPM>-sq2ene7IQkknWDPd4p)zfxnFKVtDxN6)DQkO)hMrra@bBiLs zOlWx^561YH8N3r>&C5O6OKHtG=H_Avs){&8xxL(R*;O{WG(zLG{_IkRROad+*n0}< z-Z5_X{DYW`*1D}QCh%iK&XSE(6WBbZPUEyf?&cFVj`wxwV7h9!AHIK}fS zec826i})e9%qUWAbZ&swkfU5q96)<8sMP8IyDtoZO;6bS$%>L};kipZs3pO6J#*%W zoxt0sm6SXixIr#PE5WK%CKH!YF8UHVkD8!=**j=ZIj|WllHU=17MHhLGAiQcfheob zMx=JwE@i3m%g)=$1oDs~l(wau)T}b^z*6nZnlI$$Lg375zp`fw&c=fy#7jS zCp^$2$qt$2^w4rc{78Z1o~*14w0OK`ny_K`l>i6VzO;TP-4zquYw5U<27)#4Oiw}t z-6oq%*veZ9bZr+H)o9spcm&Fr zh%HzNLdI;Zx&<>;ce8cPU)&N0WcR)JEYeDT87mH&^Tic7Q{fR9lkDNZHGMs#ogL;> z_RJYwc1x%ES$H5R&e3bW%x5xCN&&FNY;0n;j(j_H+e#rxF-(u7I^=jH!dSeJx{2&T z+<+Eh!T;H;S8MaL<(=djfDN4grtirbzV*57uT*sU(hYx^faVy)xk^61(9o;RvsypV zkC$7oM9oJP7#XI}=0vt3wXpHkvhse$sGg&+zH5)gUTuao)$LZkg=J3LC*I#0B&lns#T4%Xv8Lh0ie4Bz)i2C0 z8+IVL0cQL|JT*HMRu&2jw44-PargHv6q)1@g`#skX$)c0C~U}{@?Nl6kDhJKSTEZS|supGZ*Qm9D}gTnSrGmrxWSy zt$-@WU>Aq@mV{TkT7w`G9}?xfm5$|E1mX#z-u{tV=M#rV1az^L6W zW4Tm~2eTLYsi5!}Q{YQMPX;M!9LeWrT%C>~UC$)3)_(c9)&uBGFL#J%Tci4ELFx(` zV0@pu+~}`7(x+)F1J04NmhZbEyHf)+xf$7oO$GXvT#>%r-s(sPX0L0ut9{Sb(EnPwUxxB_xWV^vZbU~I*j0dfpiA$4ogg)rnAUJ%8?6@!9fBoN|E z%1UWXa*tSH`DFMCL=su15TdLnwOY>E@sW>O70A29Ey2!5R_ZF7^)2>Wb~>CWKGiM} z2vcM5Y}NFYv;=Q=YM%?kRYwRdY(FA-q8Ltd81?A49-bvNpc1@Q@4%4pxoE$mK&BiP z0l`|!rNra2TB34{GN{vza{!9z?ykN7EhZJ$Zg-GZf_LMv(-7}sY*L{%r16#j7yivV{-(FNfv$a*(3B9=4 z4S9&bG2w!tBpFMioz^s`SO%^&-Lgr_K{_F2Cx9PT`xOy`WcN*s`8)&C>0=Fwfw0R! z&t5zlzWo_WX~-7~XmXo~lZQ>ulGn272xg&;MH`)Xj-by~O z2j3|v@X30z7mSo^hN7#d4N>o`L;0Is(6tQ5(f-H^FPK_ev~cYX&aj-`6P{!fO;~7M ztFgl+(6vyVo?Tz` zV5-|&=%?D!bD--19lDsRa^U8^lbiTEYuls#DJ!zoSpf?Y%3td}txv8BSaB5O6&QO# zus93$bovP8YIj8Q81tH+?WU4Ex7P;d8FdtOwbcQ_?C~ofzi!T*O{0>|u>P)s#c0@a z;ezr2uPdD$8`jqh*zK%0uP@_-T!Ch2p#>UbD`wKjxJ?GdNvA4CbR|B>8r2}T-GKY- z)?&pyB~X5d_M4TUy25P5^m4Y~@%QW93?Q$}7nIW-?4&p%lWm=@ZUzMiyeFkRQcr&b z@78#98 z@YiGf>?d$3c7iS_6+&EVn?fMZXe>9zUXl0ZFrqiIkm1X1_g!SR2|N^|TeHzK(4hKJ zVN`09r&X0!)=|(^p5I+BViKhrig(rXj!@m%^D{N@J;aT*EXePdaxTm&0#-Xap*%ZM z*~~nGe5C_^N}o6fg112cVG$UAM2s_OKU!*TvW1jLoi;B`?TeUSyc5dD-qphq8fJNg zG-MBUdBtol&paU|;2O1sE0Kn*pGl=IAky0tmvn)t1C6cO2ipL4A!aj;4>7RnN449R z2O0TCm{o-W3^Nri%4qW|!wSHW1-WwlV9&g@E6C*w`t|h)_COwsT7qDNYkerjZ-(4` zK^vwMUZc9D*TpA}a0W?ByKIl0cby4c8#T^TyX8EUf*%fIpS__klYqzQzRmDX5^M)Z z8hR4>AcF&1YhuG#Q-PD9w&@%_LW}|~%x{tp)n$9N&*3()z>1#uE&_5DU&2Gp@R4Or z=@||lObUFF*BPqM7!CF963(Y;bPzq0WPQ^Ok-9p?t|X7<8=|AVZ*KsRee4a&UUH^v z*X4WEi*MleFCO>iTIgPm!6-lTR@vD`moX~)dWxXiFgf3Bn{sAjGkM5r2mFbCIVVM)T!a4 z96k-~b}h@?%QuRUe;HQ{Ig8HT;w~IRt5O;pqd&SVTiCbo*B5d7K6TmK*`#6KS7{S& zs`zJ3Lv0U|GqWSpR9*_pbN+G>G; z@|NDKvSyRZSrZB$Ere9o0-UW%#=Q(@MVwybf!^6g@4XSR)!J2xq27pI5jGWEa8ry% zb+a8S_(}pV&PzEXBGis7DcM0L-9#_TM0ype-w>GJLh2Pttq##`ZK3b@F+y%Lau006 zYsuzhk&pk9=He&1ZQUowMv!>lD-(KWp&ZfuttMVFLU{Va2$ZH6v!JNe?y)bkO){JCdDWW zH>VZ8-{P8>)2T$FQU+id0mH)e4Ps4|FZ<`(&8);DK=BeD-~x>Kpkb{;pE=&%;z-I| zwb**vk%k167ZtAhXm=CBEIj?RmCV>bWBPG~IFzESAM|CHl-+=zRUJWFV_W{*`RwAn zZa+<~Y>V+{veu*&(W+aGk5tMVU!<3lNf@!Z?$`j>KqKpPfU(88%U~?Lpc~nIaYvT6 zvO>EPT+EFz$3T_~(2k=MqfHhj&Ce97zX#1NopyIn&?YQR0~g1TQChZnGmN&av%gH$s6IKwW_!Q>p~XoyD!zBasWrq1o^;)LeWm+!F)SQ)?E0+lK=i0nj2TeM?Qz zqHGrh^Sy*5?INVi^!7oLSI-1_&8mKPT2yelhZEM+dm%nbyA#FZsc$)p-k%y<nb3 z-zVl?Pfa&NK}tt@p53CZT+kgUfQP69%HRbY{ie7>`=XW!gzXrY_t$_)XCQGi8Xz=% zR)($T)@XmkRbjW(61=|;_&R5;KaY_@^c!H?WlDvypn`t2ZL4cHRGB0x8*U-2mY-zM zhkYlDhgc`%e)Y;5u~>HHM__YbWB@gk#8|5i;1bOA+e2<%3nK%0{;FsrtmZ_vrXaWU z@s{tA+-!HD(ENGiMD-^(TfJ_K5|5%!II+QTgNlG2s{;BiUv#s2KfTHqk?FwWFZEbk zU#c0AXH?e>qKKDq=j$9QbVeN=V5}9-l$EENDS5Z7G+0lR<;SUqrcO_0=XV@;!Fvc6 zkR3d+PO$KeXjx;w?~E}aJGeirFGQI2A@8iLqIwB*JUZusJ9@R)M@7(TRomUI;1ttU z!{2(!a?GY=To3PT%UG?Rs;q!OuF@`}8YKIvrHi*4v?RiXo%(R~mJp-sTA@G+xBEzg z&P7W3J`CUOe~RJM!t@ohE*j&%pa{V?Es#Y9K(TJ%G2dCT2Tuv*obAp=+(%%p-NE$h zw65sZ1QIhA>;8HM26ftci%;W63eD*#a21&V(wo!MYqj~LETh0Kew#WwB1&FNy8EhN zizsqKxyi#j6Wbgu3AwKry)%j13+B~9I`B!BIk*ACqtnyHLAE%wS-6RSrmx{bx8oQr zfzqjiCdTIHg*o;m^x)5{iFTF%`ST9_c&LID#||rwY5L?NJKUzwAWgw=-DZ=Chr89k1oj+KVVm0ZkmYT;s6Qa zDw?f~`{TmQN2RK1{9>kze2MpPUYYy8q6&gJ5yC$1?t7#`Rl%Q+}D_=DONW1 zDQz1XqFTx2__y8zS++}joAvCBL8*0v-s3!`GS*9C%ga7jr%Pr-Y)-!PKL;HQRs z6_Y9>P0lMlg8V&w&!U2a!EUvs$&mq>=Y_Ub2Fjx{?uQ}pVq(%f!$#!Kpc+FwUye zIHka7(0EJ%s(J{xG4GBi(wr*kwBSsy3jKM{d6)%s!SW-kS~_+#fH-UvjFPcdK+s+s zOiNC$Oujx9HR**raOf5c1fh&7S7f(|MCi-tp^j5 zeuzBO-%Njj65gN~;51Hxiua~3)^B1`27@jJA2>OZRt8pEuYhP!7&f?{w|;seE+iZ; zv~x=(p~n!>LJyLmJ5KmD{Y&4Ee4}(I(j3;fFl-Z(IrXn3^u4Y@XI6++H2EQ%_+>>f z!g~8EzU6)^DtS+71pLrcRA%a8I6U(FjiB0?6)c4lk&t77Utfd*yfP^~&j5 zPmlseCb(8@NaZj4Ex$mN5Jtht0{sKJ8upES{dE3Qy)g#ftsjo9}B^*c}Z{j-WD@_vibDhgjB~eSq0gMr41d}*ns6k{= zHsu)ud)?9<-O5h(;wn<;D1wTd))iQJsql`kv(3+zAI=Ovet7W~bKd&VijUSJz{=@# zp;U)-Fw-)4vW3Uab}snsVndCnT503_j_&cMFKL8NUrtr5O++FmHh5FRCI>xgk|N>* zT_wG+934iAGBXWYWfwT*jK$wpuiyaNFFC z2JiIfov?Csa|;t}+L!!vpji-Ey=k$a^h6$yzI;<6-%1Yvy%RJj=^WCHf=UUvh zybw09SRXto~D$OX+R?Fh8zkI1P{IF6X-a;>>oTRFN~xGg}Vm^ z=}wQS#KK6VK-#`mn?o_e4d-;FG{j>8lU#vxYjkOCX)@nionM=+bDRr=pGd`=;L=72 zWvBcbu8>0)Jfv_G^17Hxb}A>5tR|xGD4CeTeZ;8gG_vP`Lr8eXs5i($4}r2X zvYIJ83dey;-uY39b*Dfw%@}-KSeiYjwQ;4$emNC=-&BrW!aK1iJ*BiY0@WZyDH3UN zpIr2^3zWw4g1d6;mve5f1=2>nW)f%BU}HHO<{m2|jMaibaP`Mp#-I@&Iw;(k)Q$k~y6rM1nEcHVIK+M2(w41 zE?gwpfjUaTc@{U=^Qz{M57!t`+P52Ep%VlBbrE*22f_fL^Fy3o{mn5>W)w=spg}$X zJMoU?jU?R%O3Zle^wBy{SGA)DQ*e#1rh!Ee=)VG%n}P<$5}V%{~~XCYDugJzyHPIYOqZz;FIZlP%K!N$z)`8 zpnAX|QHt8p{{zeYcWQTO=>x?7E`mN>v3$k$C_Ws=!q=7>=(Ny)g9rtfhy z-*H(_FDAxG;Xg}6WT;qiVnI(YgxdB`vI}o40EQ3>#GQJrkkG!adPufkyG0e2boR7} z>adfXh19Zg)2(3oW{s{zltn<#vb@n}nOr%vbp)02 z?Y(u5?^5OZkvOQ*A%V(+`A-^~t`H?{8s-lsxR-^*ZXeh35?YONOt7jW`g}l~A02JMY#}9? znvUo7)^0f0YeQ*^2zcD;A~OrW=e80>Tmy84PRtPICJW zV&0zpWnymdJ|A-0bFWJAbm5+B0=F0W^QjA$-76gr<`3>S15Mbw7ftq_Ca<|HI%6Nb zuEzNJ>G6fa;nNzeaFj$S8z))T2SuKd&~TjAVh#^;Y=-EJU5&cEHy+D23V=t5%MVaN zeWGR)J$BidBYuZf=is((B!gby$f?lu>Q*jBjJ~iHnNU|G7VU|TjI4FK!gPh%9f$8# zx4zKe&6E&FHsMI)`9}C;k=7VYhX&qOywz!~cY83~fo0xs3K=z7RpqfE$SJ=d8=5{l z^V(^yEV3tDY5s7nCBPU3m&&2UfQ*`kk}fDorc-3R(!!bwZJR5Btt}HWQgd-iv%wvQ ziNaU&AY0mYbsj7)^H9D{exyJb1eMfX@-=F$*lvYW2zexb0;wPE`_>UV6@i5NP6GJr z?vqxy*+3w%))8Kx>y19R(i}HM;SXf;7Zo{fSv6B0fg<&6%B#{Gbxt6DD&=l4+G0S6O!=#|yR%)Zbv^At@@CU&KJaXWV0DMPHk6Zo z^bOS(>LZxg2p~>!El-`6b=0_6sHUkO<63;#aZ3D9(G?!}|6EdxA?Huq_yl+rdFOLT z-T<6&u($JxGn!iAHw)Naw1~93&+^LkHnr+(3AwM)*$^U=?#S7a5DSaq=9j2bbgEJ~ z*;5%g=*C*yk_p8WuWa%9XnRU$)1o1{sF+{@-<*|sL8!~cyq@#^Xam@BkVv-h>lFGZ zid8yOB%&5R(ICGP)(y`&-FQWtkS(Bo9#&UK$LXq{Sw@S8C05pmrj!tEU6%W%l59d$ zU1K{W>$_@UbH&7??TzXAe8nh~99}<1VQQ|cJrhdzL{g4dU`X$W5vqFG@Dz*SU++(=|z_u z`%V!!vwszxRi~Zv3Qd07;UbDdBE7v%HhW5wePqsjwx85ok*#ozXY;c<8huwi%D#V@ zDH|$VU`LqsJes|3-aG+Dddf1p@(ul5@fLMZ9BS3ItD8Bs08${`2gg-AVaO47L0O1C zcyYEJVRyf-r!;3^w8_vVoW2uOihFNlvYG)#>b{fL4}nF`A06)NXbh?LbE~h8 z46Ls3o7qD$XD$c%hiJVWVCpX{tgOyLGo0PiVwS>7SOV7#`u)9CYv;VdDIPq5qdd*r zX?#I)9nABRL)LZ1B;w?*`OvDXn5b+9liysa!K4>8JEkj&QCAd?JqZ%{pxfZqlN1P~ zmub6s+4|*-7byknFUNO2>cuf)ZCyi|P9BPtuMP6~qdE$1=(-|hRuNha%G$t0c?I;S}&-OW{PIt0i_D8ZGr6{sW11Z$1$^K3lrF3N9H$#rpJk{NFr6+yNk==$IG<2>??iEBV6=? zZO5%Fy~*I0ImghYb+tC#GBl+W>*O8yx-2N{=nSH9VXdHpRECn;Yl*kBqYsQd0DwUWLhY~w4tq8=iMI%)tB0fLD$tn|Y*+b(u`kzL-Tx*B#$ zwqEd--wx8xvnxW~!&8AKVj zF?>5FG_%A=irN~a(mq>^wcnap^J0vf9eiWHU0(-0J5f{`h26%{+o4spLhqS+w+ko2 zsHK-<9QWhv+R0LzYGnX_<)}wM9ZyCBz?TukQr16#?{agIMZNUWWyBJj_MDx%P1D%y zUi)otlo)_>aCP92TQt~I44M%ah`vf0N|G-E7x*sut|&xYcA4Ey(=@ONGcqiki_Jns zsY0@v`|&3puOjlGvqpmo9#uLcU1B4@7cZ9PxFFFyG?y3YHA^{nX4{j5#^I491qgFm zC8MkRDj>^5XpP*4VZFg+Hwsqm)Y(?Xc9lz4(_i&8F?*NK>iH2ev32q}gA_Fr@lP*< zKy}4#^BLePsy%`CS6tC5ozb~GfUA%eiG<4{2+P*4gJF6ZetI!?)TQA5_JyjB5jzK` z2yL#pp5oS(mUsm90v?8M1{gNohTdibNuZ6WRjT`(YZ7In;!s^TgA!olKFzf_lNczp zLCG3I?S%wyrHN+|Ez1q$`yI()rSo&eAiWFTFDKPL>Wtw>7=$D{BAq~5iA_UzOK4M0 zqxVgY3XmbFudsPcEoB;udWYVR3X3dJY9RaDrp~3F9NU3qx`+m0NDFgCl@g_Te+siV zsx;EkilxQI-0p~oi7pXz3MjX2s&xyTFPybIysYOU(C@6j<*8?L`i6CXxR2J;lTcCB zc0G+fyv5ED)_UmZvwVyV3v+d_yT@6F02ViDpNK>={7j4*#6h?fYc?SpB-{fIapYx0 z3%|Nh+U_U!!NtNG2+rvG$XB2HG9yF{HOlNM)i&tM@hDb|+*EhkWp>Jy6*)roR-yvo zP)gS(IjTCLEHB?7`luB@N^yvX2{g$O0t#RX3oSs#t&1h5sMdMhZkC#;vKmiaUzbmp_<@g z$CL#N2~m(!=7hizu`$`6L&Y^X&*gmAeHB1LaB-wXaWvT_MJB+34WLRUX8Pr)XsDgf z&I8CbNo)84IN{P0GPYRO6da2aS6;#S4sJPRAp|$S$$4{!MDIFF7N&!_7+ZZJyEr*B zS;n#5MP#Yt0@MVXS*4U0I_@BspHeGhj%6cag-nT6vO}iCQr1TnOVDvsh9)!}eB#8X z8xNl`#d8s>b%Y$`nT|x*5vT` z+2{V0a)?S8i2wUAp@4 zn;8f2)Y;>$fc+01!}k}@|0w>M==|(U$KOxRGuQvDcm47BZ5r61@tXDQtC$}uN4z)w z?k61jDhAfY!9w5LSlAai|P*c53 z{B!vG(yj71b(_4Gtv{-jDs0$4r;tvIT(k|7MPIls{b}DeXX0@q95@>66L7@oy>vgg zKKm?kKWr|-+Qaz|C28CQ{CeIxs<5wKo>-p2-!xAGZ`!;6DcPP7fK(}oU~S3UU6ibxH}rcE;hjM% z_npB_m+nsFWUmHaxymoqvR!3}3Leh$w{iSrHlTA+#G6hG?p>N#4MPO4&}C}^nxQRE z!K+o#tq#s=3!F}pLVK4_)r+FrS2)>+(T&P!`c*TSeVqITw?fhBQ3B^|9uU|iZk$+- zPEF<=(6g$>>1EDN(=A6h(%EtYX5XD(atKoM_Im_2PKcL%&yVO+h@X-+YUzU;mi0y!&^( zf_|^Ts&<99+B!J@_cg$*ZfUn{_A(l1Tl?C+(d@+4I{Q8T@1+mF=kDA!`qNgU*w8E_ zR4t<`j?aK5C!a{33d<(L&!g&1uFb|tpCbL_yTVjP|M}qOeMfX(%ZWEXDa@;-I|dB2 zZ07P%btOjJ3Z54)$%o(gYq8M0_9=W5&3L>?Y;omf^q^jYOVSn38q^kAl*Y!yJ&o`90EaR70Bj)%f3w@joY@X4N#{D0`6% z4Wu6v_5@2WP)y)-K; z3l(%RN6QH2SgR>X229xHh*^oe4(Aj(H^`EXG`HZ~-F#;Jrap9vr)SPalm754nQ`6u z6*ArG{)F+q+v3r^2Q8yKi2=nt@^UZ2uk&PD$Yn{JIVH-QnVzX5U%~;fG#? zW@O(U6U4Y!*RMBsCmKq!=fC>mWv~5ZFiBRP)fPv8#8a|BaDRsM8tQ61k>1iSbri9m z91Aq!?R}9ZVQO}DD7m?vA=)aouh4c)Jf!>^+H~<>9ftqje{5*Z%AO&|%6|XXpWnYR zDZgz8b4Qtm*5=E#M48fjkzsFWCd2l+{C=&X2ZYHWdww1c(%4=>&%AeN;{2`s>Eq|u za3S^Kw|9lts}1*)FT$;#?VP3Emzd!oD!#bt`HS)JE8}j_%#PQP!?ddJ?)96tC0@TL ze=E>-znrjk2y^$R+UP{xzs>$^s!&wFJm7Ga@}+Ljk=SNuF)^Rg^QPc>X`X^*-i4!v*H1ct+A1TI}D6j@xadWp!K%9_FV=) zKFo#B-1b@(&U^J&0(R-0+4{j?n|3vksD7_~)$mtT3E}XZ4j=i&Ho(--y|QuvIB5_x z&V4~;iQgEU8?%dA*&J9}@ej7O0W4VuJN50>aGXW^7vJ+*AN)uZf?FKUZGl*4I@ho6 zFpu_9%g4A5H=aMHlp7wL|9JJEtvoRA4K>R)H-~u5T^99I8{LJ+!fzZVLO;#7UDkCq z192bL#oVwe{jg(}=d%pUdlL2St6dGxSHUM;%KGZPPyD`?bl@Ev4kGn*L8DyX#U+Cc z?)&g5FRsP3`&kxRWvAy~2|zj4UQM(XR{hiR;q#|ASHPQ}i9)r{Zg6W6Gdp2A0VU>6 zvEP{E4aM~>PS>|qg_K{(tV#noZHYubEveSpb8IXCdna=dj(lG)>9kK?tnM~ef#(w^ z?^FtYF}`-r4)M3f*nK7b{3);DV_)f~-48@%Ia9@-%;zfj|9DXRNiabD2^~==e10SL z+RaNg&k~)^OJoEGXi8rP{JCdyd@c0*kMWJawo|H7jj0C`@F#Tt^HamX4&RBWc1xqx zp4eWGvxr=kM&w+SLop>=OV+9yJL^y(9v{zWg7!XF=L5Mj>z=9O_*cR81s1vq(rGhL zbhhcE8TdxvfhSXuucPfEw0Xa!^2=KS5L5QHSMMZY1MgbG5n5EzY-g2{!{}>iE+bUM z_?l#nwnxsA8bP}Iw=@miZim(DewA2k?Q+^yuA>Gt_AytaqiR+jYwjO?ZJTiZeXsfN z&0hg8e{FC4^Qz_V^UCgb>7AE8BeNaOR7&1APE31Q{>Kqc3{0J$byV0*FAlFVXMb zfBE#~&)vwd+`IjB>LKB~sQ=xFKk}BY748RLzK;8Ccy=}KUP%5-VpN*+ z=Pd!!=O<`#chNIUOutf?8TqqEyLsl)qlii+`^^ne%UuO8wle*IKFFl44Z5qtQUm83 zc!O(oDsDqDBq@5d?~(4gVgKO%rc}p@C4chzgBRB@kMHWezx&Usv%O5XQmY?R!njG2 zI7{>vc*!doWacd(D+yXZA=d4D=5*6{y*Vdj=*`9Ao2?yNS)V9~hky6Q%+SRl;lq*x z`8*S^UX+Bym%U%izxp~u)mli_?k(q;m)Lys9d|EM#^h9H*@*YoIc(qNr-$N6!%hq& zy`G^L;8WlKR)}N_eZA~$ZhM~}^Ltys7Rv#+48LJNULr3SIg_59{V1RBp8w`nk7S)> z#X(h6xcgyQ=M$ce&S;kuG5VA})(Tl)e=IX5@`uU#xjXyy1bMshB;zT|O{{dmwVwT0 zml^MoI^F6ttJ&L((cfZcsg|y){%3rBf*}1zO1#O+L!vJ_$HU}^aX!_|E#{Ni2?JP< zEY)y!_)f`IMej|dn18ur+qRXeyf+8$A9I#J4PP3Tf2)tMhJOlw#VVFieF<3g?#M8!>{uLJ3w@BFUW79PBN;qAJ+%ny|?Ik|?jk?7Y`QRve?8a^LRXxb%E| zlZXVbj-Oo}I%{wW8)FBna%MS5K0Sz!nP>IN!z2o-9~kra%-)0b6yLda_CZv9fbA6wrlgQL_G|RPLO-=`GfO{Pu*rL_}opt2enP?oC+=~_wQLk>}b`Flyh&+|MdNH zjovTyg!%KX;`+Bwi?eKU$LCnJF5z$g6a4M3_|mztixy|+7CZ|-eEGNk+RZ7m8$aG3 z(r6KN=Xb|^|9zm=TRp}KJgoTH@%QG?cQ8dZEaabu#BXYe>h*mIK?;AjgB7kG`iQ0{ zh)HT)=gCiHpxc+wwFIHn2db7$_E_B$Oe@1!&e{r#+PHT_RTPTO07&sXJ${RQr%>?7 z)QgyX!MYOexGm`Y(zm-Ed@buw))eU0{q^6(fxbh!M#A%t_Ry|V)-W!%Z^d6aOhtXq zB%I+8NtS(@dg1KirS&bNUlnUM_lo!aDWAPreC=`3`uAA_|L_m46;}c2S)d;jSMa=E zER={%N%-|->zy~bW#hM><9ufJWznV+O8<%{_cV&%VbMn++2wCXDAd=*QL$qRSQGi$ zNUNPsEHo*V=|wr6A(0w1Zq~f^>Y<13-VdgQShK%smNVL>YkQSxo2FtY=j5&@CCkOz zvCPxc%c*Fd2pJDMh2@x#HOFeol`B=I$QYlOW&<0~TSF7iu)Xz56|BWhjJCC|qm1}s zk7J`2J^mSGm1nsVOe)fNB=j@oPTMx2LdfmdheMS=OLQj0U?xbkWizex`@gq8g`J%Ty!6;*qvH49hMDM-yv!$e=Vs#nI(&0o zXLi2*Zg3~id9S6K*i`3q^~TT_1}|Z(Q*B&FjkMrp!36O3T?W|am(-5-Hg~*Z&^{=R z8MB?|6uZoEBkkIQCn3?&$1BBdf7;hu_vfouW8QcMRI)#@4pWnL-l#-PUDmP>`6Xan76D!S$YzU_#cn&XIsA&Ja zVoP$mMxv#aPz&f|N62I73?-<0{jmexErfEs9@O4DlqYuoKeR_U2I~th#bVn#-;VC& zu1NUn5z;I_JP2ya?zwGSocua*l)N{cp+=gNS57HuG{=dI7Kn~;yNT1oPJ4$9EyXQU zwgXgeR=iwUV6;;9{a>HId*^Q7+q;jOe)H3yBxaq%OFs>3xj&SfZ}4qKuO@9YD-8ZA z#l@&QK7;5KpkMl4kcm@m@daJ)ZuN4yEZ^@Ee21YL+t>AJ2Nqi9!Ngmf2=NeHUYjG% zwWS7XaV;~f1sRt+4z05)gFvnEXsck_lY8s$zJ34qyY{yznc7?uOg{*}_rZ;4+Zpb~$iGTBbJnmdVmDjl&fqFesi-(_g58r%@d>A6tR;c(y zmv#8%_Sf%htdM(35aq{IyNtT!y>*vYZ8O9#_=`y7Yn>kvTQG*gpQe`8#C$7@WT8CQ zQvzJ9`LP;#wJzKL)lYie&3cq|6=(kBD^sC%g-CvB!}$odY1OTmV)N~NKh`_=0B(Ae4nlG z^oz76ESD|5Jo22EYjNwfrM_SbxiiHA9OKsaI-tf@($bAA>6his{o=5ubL5-epOVo^ zxOM>`?b~F`?#ikB>-+D&DtB-8efvZC9(yU?vzQTSaq7WuYy!66;MR+aPd-1`)NE6E z@(2F&&p&c!Hgm0kf2lz3ZHQ*+^@Xyyq_; zttoJcQRZ0X4sT>T!x7E>qiy%$`nQnxUzdNRfBt>%S`P5B*snW#&Zmcd{~CV2_U80p zI@NL5OMA)*$&;0NL2|@-VS06y`+W5g<}feTX~j<&tpy|!lTXw+60g0!miGH^`drJq zkiEOxTeHOhKl-9dR!3UK90LUi=2}*Ywn+z|=fAxI-k!fKEj>PQmBD5d$n3G*5+f2R zMQEI$X7WnD)eGa!5crzg$3iGd2jx&dvaHD03GQ9(SluqZjq@mg zx_1YcLY}a^IC7ER|8lEbgZqs6+R__QxeT&1dN3q1D>OJ);$8o->~oo)XY}^Ex9bs~ z{$9G-?|72_oLE#7qvE%cLY>l@B}VGZeroBRiO2%BGMc-;L~IINe9qGmH+9qJkymQL zgl&OVo10tvn*LTcX}Q_mCcAvh2b!C13tU?m`BVO<=wCeTk+7qmLZG#oRDW?vhw!{X zBn-W3#^;V8Z`J~%g6kYEJ^7md{o(WEdtC{;xP>p*jyv63r!PdWMU#Ll)7o>+dy}jz z{P;pkb8~+dEKlgUx#!OhKjlVzO`anbV(JF%yizndtm{n632s0SMt8VKb+2vTDZm+S z08gzBt*GwT!`|C#1D3x>mp^#D;eGV1)nG2&wf6*zkX5{X{NzFTchjQ+WpJBiwPU%8 zx=wz+OQ32kSyiOVTtTKv_IV?3Yk_u3sa46UtP8WeWIGj-cy9ggx!os0Tc5}QSlheB zD8^%RcaI)h{X(H+eiegTvTWws7Wll+ABqUqRk|yh=dVFO6!YVLZajY1xib8G{L^D% zNwAwz9lVxGc6sR><74jY%k%uwCdEHBcgj+zIWhTN3WMKzGA_Y+D>FUC~Fn!0wX?37#s`2Kodu2CP0 z+|gm-zMcj4#|D@qInPgvbaGUK@PJcQvgzX!{5*rnW^${AEn|5`Uc7RhIJdxxQf)}o zW7N$pr_i6!U$}Si&KqcgqK%q}*)5$aE}3%FOk0`Z z)8yo9uf!@Y@kSkw45{quFZByMO(r6E4Zci&I>NIzY258F&Xdup=TMsQ7O*zeFt@sw zul&=o#a?jX)4KpTzaufhdc2H?2m|n=D!GMCTt;#7vg3d#fNvny5e}?@%kqoKj$0%+ z$jiyOScAE4S;%5x(n3$WuqVH;1*WAP$56cwy)5U@IOzhGVb@wV6S)|A6V`Kc|L=pF zpMF0P+?`6wZ2SQzH@stKYVz%c`>P2=%JNi5eLXg*ndf+Rh7^3)Ml4X{;P(H<#6Z{|$Ne@tW@4zYnha4{txn zdG~wqX9z9;7g{hs=V*WR>LcGEbGH}S~)>kK)^)ETBvHI;&Vp!dV~hl(*x-*Zu?rnE8e8j zu_^`kB12H*UEJvp1S7(0J~@->au`ty0yP86Sd4#Spk*#qJs0k46qO#Juk3HSU-$TE zsl~I!8F&#ec8?m$62RK|Q{?a9-8LxE?C@{VG5eU$4J!(r zLzAp2CBq)R!Hc{%i!x=|{y*9G3*Y{1zrFMG?&fa2gB%;+jO7Ij(d1Bv+`I;WnRR*K zoY3xqiDjchomjg3k8_+@W1K2<(zi9R3N+5yFLxizd zM;l0SC?Dl^sGe0alW=&{6-v2|7;brL5>v*s*gzQqCU25}hgyG#KMgX3u(Lsw9azrUGlLaLyVIHeO(Ln$~6BkX8r>cjqBgej8OeYs~$^S3#9xpCX9 zw0+70yfNcKN*Eg(7#C0=m{O?+0aaAx6(*B`DODt4B;VNBl&2hG>S45Xrn&7Q9lPFp zY&N%5<}A4j0Zle*NkmCEN*t=cg7n@5=KAtn; zcDGD7*IumQy6b}vdiipk&KlGWx*<1}fwm|rX5?%_K0k>BjX3{}^1J=Nr(esS6OiTY zr#x|CaC~dW8!1Y#C@&Im@1DxIl(5C3-eKCZP@vdOn8_wswRKc2x+$`p{sTk(KWffj z9rVk3Z=6#7-dpdzIgcD^#~Fd8`0NIxM4(|_X0KMB(C(Sgu6t_oNy2OQ=8xs}?ve&T zgq=gp9lo4ZFj~#KSNpeg(_9&hHQiQG!(5$@p0C)1sNNq9-*A*qX7o04U6bj58$) znv@vT2;k`ufhj@Fo8jO;r+xpYBa-Xb(3(`0(VGzT7~>my40SXj7(8S%rUJrAR(Daf zu+R;-a`StxgVB7fGt}#5M}L<&CX5c|kRhr8&4;ChB!LSc09};>_58lFSQP{Z^i}_X zsTMu#nHN8jmA~RkwdtyxdGT}N%lF_o)1R;SSLy9KaR3i>ZD9cOK=!bKR(;*HbrSl1 zdVN1Px&cCU@o5?3u z0AD&FA2gDD(A1!%0KY5k`(;Z%yF&e23Fm^gfd~ z9Npsu7F9j2|cWU3kXnwAW{S)@YcP(eqOGfv)|q4>GAdLn)S?du;)O6jpn{6NgJWbzIK+0t_sZ3B&V!nQ4l21wir4S$h04aK7 zi?)s&n{dAzw2r+~O*GSFP#B)Ex&!7DE?ajMcXU5;N)}|KmEn1JX|$EPrmeuznG%%7 zrUduevYruXkT|BljQT zL{LZVjaOW{>wVq2O7=b+amO5G#~TglBC|#^(21Dmzf;Ch5kof;qZa>eyKiB$tzm>s!GHFqaQS> z?S71!V@v^n4aVRaH@1 z{-`Wa6e>cY3WY>NtxsIt+Fa@Bi~JTUCkaXlY6OWUAgHLd8b??)ut@~QAPNxMmatV= zfE=E+!^Zryu6e9t?hFhDaxjWdE>v7u7Vhz8I!fWX4zA(dhg6+XbY-V%?L*Me(CIAz z0y+agkRd#(`a=K~gd&m>C~NC<+dRKcE1w?SIP1}jcPlPO9P`cG=g&8T(Mlo;QkCOT zW&-Rp*9`^><` z4NlVsZVkL?36WDX0G|g32j%+K%OBPWyW{H3wsVeLZ7rJ+7DqT2ORv^ViQCHFDJ9_=TmbKT}crVLM zGG{r#SiI*sx{lD0^yr3}oX6rsr}L0N01lb-xul+3V_^>)W@``In`>y7Tmdr(yw z&Pnp{jKf7U;P3(|cGC%fctEGho3nEYEg-cI}@(JF<-Ozw(f0(dQK~y<1 z8?fO5Qb3tAP(*~FU>;2fDI_fjNkT%EB&<|~l)0diQUUK|nPgZ?WCkDAi9t8kpk)L= zSrme(5^JKx5g8h(B?^&8(LrZ&5TpYv7C>5@cDM$~0MKLr(mnM$T#yBTpg@f+NTe#N zNg=@?e`ffgd@KB<|H?v6g0co&Fa!JlALI1*{y`7V;`C_#UN0m3UN!kq{JW2E&9Ppo z?Ei+Jg=d#PuZ)w!-OTyVZ4qEmQ~^o}N+3!i{lA(0=3me2{5Sd88TvQ){$tmQM{3#p z54@f7Jd zQ3{l&RBa{Jx1I0Ho{M!FX~dFjsL&)53|tr#p}8qasR$4sfFL{mVRK47_~VO~!t1Xe zvAR9q-rV=kRrXa;N~qE>$@9fN?DEH+t~2g@vzt}ACt(7t)sM;KHe1H>W{_Ci3nq=h z*qkOVn}(ZhOKuyAsH$~Rzfr(J01x0t0U!eBjB(D%jdZfud*co%XAz?;0PQdN{Efwx}#Mbk~Z`8A7G!> zZ||;te{aX9A1l&2YaU0}zBuDu@d^+nC>7h}vsNzgaXi)@PjR`e<~f^p47)RXt*m&r zm4RIht8hfJ6Kv2D!pRVos2_wj^J_$OsT{XtDBUmLef?s-I2UaVcCdZF-`o8CSK6m^ zNGSwCwxg+X+5T$sRJS5omy;DdqlmmVV!L)os9cKTGN?LgEEph3y~ISVnJ(|8C8Uws z?Y0_ivChnP+4^CtR06xi$%JHACKm=Vj6kzQ0c1o?(OOxB$CkOCi=CEVj+|?SmN!lz zp1Ra1L<}*%r^2q zx89!C96xsM_k>tzoK97RK-O#gbUxAuNi#HJk=dmcRT0_{s#OE#WP}OD!$b}+8p;VS zR|=oOl&l9gU=9`sy7hbJrm?jPCv?e~!NlZis{{4Z_51ak;FFk#x{2S&3W9e$gPS`v zl#raX~L1a)OBEa1Om5@Y$DHMw$ zf`X6~iVA}S5d>>}>Nf3yNhysdQF080PSrn3zqXk8gq!bo{GOB{2NTpP(iwKhL zE?UJ)yDEw$B0{1FkwHX@tFVfYAyBF*6$wy9TCFJ*Q6VaQbc;;?OA0|%5)MkLqvrH+ z5LP13hcDXvo*fgz_Pgm+Hw2VOeiRi2{oliE1)Z81!%-DMy5;IE?5uw3rB=S)zMoSc zO7h;nE58_bAIn;6`F$zW{@4CLjAS{_LMNyhnux(}U?P-ET| z;e)mtkOG?OxY#ka7~PAo%8_l@6_eD&BNmqdA&2`DKFg%OQSv=~d;Fva_3WP!|31>fDnvZgRS>n{&!p_}^J+rj^p& z_bKW=e@dVMrS*^`D_>}#@hj!?y^W#in*NTLq0r(&yu7SeD3i@BES?B z#T2D8H%a0fFtU0yqDvaVCvIevLp=cV@7@+x%N!)Xr^qrN_nuNK?mBz+=PNrxzmM5T{=Z7x) zohkI{V=$rVAqlxBW_rTO4xSI;t>!v-`me%rIP$xY&WL6KncaPfh7F)lR-#N+*igg} zsKYWMB|wGKxzh{^0|Eh7h4O=vN6A%K6PqSl@4^K+(5QG)hRV`R5zNnlXOq7x32cNE zC+5TWe-E$E*Z+bZ*n#~>S@uvbKN|1#{3-S3u=TV530A*Fbr{hFMvLSIemK&9%EJMp~L?Gp(6NDQBK|7F5pcYn#(7tjGtKJ*XL|AqXrY z(o-oGQ%of*6b`teOdzrh-G~}glEpxX1N+x-MMYdR{uN5FSc9a@K7Rijp9kN|_xWVY z&yQX7KEM4QSn%m*K2_i0%!Hj7Nd=ISC=zpE019`w>m&2udM1wRAD5q1o%p}cotNj$ ziT5gMZs=mAeH2J%*hAXMCb$Y9Bm{uN-F+(;kbAr2|aFw9d61!#Gz>HKm(cS!t(9c0K8MkpKpk@niJYSGjuM z^V4l-W|+TCG+vr(t^h=V3+bLr$n(Q(Cx)77O)bURXqo4Nf}TM`r^FU`T-)(xIc4K1 zyHmg%Btm3(NZ5|lZ}>y1O)y)15U)3@iI zdg)_)ZKa#<;d{@1c2KmGpgfY4pfV|Vy4*J7=*{`!Z@wHijC$sL>&G3XAk7uzfKd{F zd76||JE=U1xRx!)9qEm+-wXU_o0*?Z@eO>qcBsltuu;O)<^cI_Nwhx!*HfS8c=OW# zJJW&)IoH{&*hsB-Uma?5ClYF^X(mv9wU7WH5dj1DU4TIWeohk^fFd_{5uO;q5dZ=N zK@cPsOjRf-uti`Q=7x!(KK6n|IoCf1KqO$vB#=-cB!a*oqy{oVK!T7WF%k+%0wEYe zNGyZ}kRY&tECEFzpePCg$pR2z86X0(2_%vbStO8>3nIXPpg;jdBqD(Yl1T-C3nIcO zv5|oYh!R0UNTh@y2r+{sAcC+00I0!5l1LC)6c#{IDFjHc1Y`h`3ka|u51jtLU%O0@ zkxiLC^g4h}KZDLJ<{{VMekSv83fIdYw^K~%Z%owZ&+K049U?A%rWQmNW9O5!Yg(bX z0xzf`_Oob8e>7j(9!;FjUq30zHoxQN!{*$6yZ|!=@*4000tz6%p_nqZCG^)0HOs9w z+wGq8<6eDr)7g(a-nA%vZ=xEuE)-zP5;RaVH2`>_5!+kuu=Uo;vG-P&?X2{u!+kG@ ziz}`CX)+pW1NFFEW%@1{iEM+4kg9^Jclr4AYkpX>O{-hwr1qY=dDa!vOWvTRZaEqeDElN*jL3+I6bRwNZsPx_$7(-} z_0mPGw%1#ouDaQ(w9{2738-O2qy?mLvqj4c8HeG|g;i3?UUR><5>KT^-Mc^l7_CbB@jIU(0FVbT z#g=@-ZIxAvIQB}GzEw;+z~e2+mRdt@M~5zlktGEnPG(y!9MGP7ZO=`P?pvz>=>7(q z-VtQbHRL8tX(V7?J8)ozCpc}c$C=%V<9+`jRXh}8*=j-?0~zlj88Wt^R4WNh~Z#;XO-qM5fA_bB!LKk`hA$c-}lb9t=+jU z<<=!iQ2n@_LINIDQ=6d+gu^H3z?^|03rHFe{l7oH`wQG3`29S4t0r`=|1j|}S$|LU z{!!(hk{Zq$e8cJQ;-L}*X$z6~#EB4C$b+Z=ZrOZ6x zytdO#JwB)yY0F)9x_sTU_ujerrTInU{ji;6p z*535L&XvK2DmkL%lknji*5fCCI0IdCI zoP0v`vZ>RfmY3s=bJI$7uDt1yDO#ySF6RpP-TGy=xXL%}wfW~Qb=w8{mhsfyzjfrtoeQ1`G-WDU^-d%h#a_PXxAGms*N(5 z<;$$0WI-Sb0>DxT#tamI5lI3;Rsga|Ap}7~$c&Jck{X@Y!~8baPx(xA*7Q62_?{30 zi8tzZ$ZfwF5}5uS-WaM@O1?)|5@iul7>f8a@2V|P6%}%KY;Vj94%`)nPYUb&Ir3AQ zs;a7p3Vw$=Fyj?UqAA==g+RB6Z$Ma|jm(^RZI38>x|zly3CKLN-|ECA^w=cvWFS*J z9{aSldH7WQH6%Ls<5g8wPYbXE@Vg9D&Zp?sj;_D}%}>c2>!~VB`}UkzeivW_<1;zP zoqfIh+};G2tnk>pN*G8UafH$m2oNELkdZ_fK(zkv_)H*S2}lsnVnR(UXS7X zewq-IMM6n5NH7zt3K=D^Delm^5Cf`F8PALphR zE_q>#ZpqnYj#-{r*HqI_JTibOO3;FV5DF2^f2IMvTU`%3Zq5tHZ<{vSI^inaezxnP z^Z`HsGsx7X87Wxlo>y^XH?9)bUbWb5M(wqArn_sl*98R;018-Zt&+aEv3F^<6Mj^a z_19f+x_aBM8tU+%prP-&_$3hlK!7450>(u_MFt=!BM}(Lk&IXH6`~;qNo*)sELDt) z4|bJa+ALB_NK!#yQy?q`h)R$>j1K>#*)9VqKBZI=!b3>N92^Z0pOBF6NFCFtM5CqD z18@32=8g<#kVRoMC!mwxgX!9*EkLG48u^uafqfpb7KNtM^ z`Md#*xGWvK`DI@Ukl)8Zuq^}y%OF!BN1v;GO(6{U>Oust8JiZ2BXR4HgFw%b;kR*NkfL5WnUgC@3qr>@H=OF+!r?s-b|WT@ccEAOQ$^5==-$NKXue zxI%YzB+Ku^Drw80nrk{udyfJed0#Fx<8xmwQ$+&mkx+{S2X0~CkkIDBkq=o>1`~7n z&TnzkJva`X*VKX3kmE}<4(~^N#@wL^uP`0AtA@rlAQBh}CnF4(33s{C78Dg(m7y^K zVlrKA4j?Zepk$y3h`90N^qlgHyP*19>`zE-p!$EVFdi>v{A+W_>&S+mTAF$^3sO<6 z?#_4D8svv^X3tK#-)>#QdstpxnMMF$jgU&5(DVcybjL#k&zm!+8U^d>=KSk?a0KH2 z#0>@Cx1Znj`c}`E>Gtb7HGjR|zEsDLuV22Oovr~&kwk)^AH94ZMt%|xu%6^A@^jsK zhY-)p=l4Q;w4aW@x95~+jP`drJ{~KZ!=u%l<;~Kxd{13;+h02Ef113RzS}zMwQhR9SZp_c!}#~Z zcWGop!Cb>pkY688YvPRM+;7J5O*YbdrrWoF(=0sAnsc9Av|Vldz;Hv~eBX3==PBjG zx8IB~P57@Kxfny9dFIR%6|pExJC#+*0D zi~GH@@#Eu8`W^y+0bLMKQh)%7K}sQg#sv$PmUeN+9C4;K;>`T+;@`&|UDlrE-;W#k z`TG_tz!>~R7+ern$NQE<8T5)NK1xthg62l0m0=!8etP!hX?ev$unJGw#vrgLc^H!{ z%mWzG78#$%$DXDKBdB}LPU_rL)SjulKv$$>(9D!CMt7+@Z`2nqbG zpq-iAl6x6}2wNd3gn-5hiZNBXkiuagED-?k5R#Yx5kQgxkbo#cMF?dgk%A;-DFBri zMIkAH2yqfl!SDRPazLdA@A`c7{CoXBPt!^M9%d!SL-PE~Kde75oUr`9n0{L+N>Y>* zrERv?d)IBY#|XX~2x@EnHT^d|^_g$K<-Z(p!SDc3Qj`L+<2**1Zr%67aKmq=y*pla zWB1=|cGmGxo|W5OU4FNW6I|`eIa5Q=JZk=PUfN(vR(aW6d?uLVJdY^pc@~-j&s#Iw zO6lW4sSS0q_GO#$u(NY=u6ffuqhw&r^2&a47~z(7*M{S#)))ui-8#r+o{rkyw%cvC z(`5m-IQgDi=f@jshFNm7q_o>>2HS16x`j>}>xF|f<6Rn@Q#HaFXH4wNJvP@}c-yrF z1t<;31u04Zi9tjGC@7^(@4N54+-jU_#=Ge)+eX>$_j|j%ecs=1x69e=AW0;UJ%^q>)uWGmlyB{QbU4eif|w{|+uo-j-6=yQz#$60~%D z(xhO2)J3xh|yn=kJ$~x7R0SuOY9efQtvmhLy;a4h4E z5Ae5~A|wo=A7~J0(o!2nA?39Ofmd#-&616TH4%pUyb>7n|1Nh zbw0Y|i}>P&zPo8W&uzSKrFE{mRl8Gdw!3Ys(zM`l!xww^b#Cj97FdaGc6!FVYp%M( zjC2C+BW|762WDA&O!m_`*{&Md4RzO7VXe9Dps{|pYQ1-bn{Ae{w?<{Iy3bcJx@#N# z?a!yHuRGzto-4I+({1wB+BZbsXm0*z;k-ufQtmkL2VC>ceCx)!7CUR;w`RI_TXDp; zvc6otc|LjO{s07ea5?rwCVvEk-Y~0{)b|X+z5j7MA?>rE0Stzy2X9ILFPC5M znXa%i_W*pRJESBw2TM;#!k8%zcr$olxB#6qyv9&HJtWZtV--U1xdVHkLrvHn-OE$%xze;iX zTjfJ4Z{Qd9Ga?{Bi8bdAJz36QYCC?5jXpHnr<*V99=f-zC&~U}a5+{|8xqI+m_0!l zCC^MTJ$!AY`+C+pG`(-VEb(oeZ*K>7P1?`(Vq>R^HL~NE@V#N)+v&aKwQB9IrJHHD z#_71<|2xmhmB}c+es`tUv08uUv9W!pxVH^2Z#~m|Vu@=2Hsi zo_WvBx@&el?Xq~>zQ=|9J`~$c_Qf~fF{$fhrKZ|vZO3FVzEt6qzQjB5lsJvirZ}>R zjPbu5c1+`LHO}0vCtF8Y>@v!j>5J=~Gh04cX`%VQO>Vk)>1L15NoRvymJ+31jri-5 zb`+uVr$FcI5`h52>yQzDUcvw$ZrWOgr5JFueJo42|j5itjK=* zaNtYdJwOEdNPCs~y8-k<0D54X`cy1UbZ7;PQj+_YHAMtdj^ceOIn1VkWA+2#i~+>? ztVXRQBM)SDVrm~n9M z3;{flGXzL7WJw610>GpKFZ8KGk=lY`ghY@+%7lWFJA@AYf%x|HHdS{~|4Hml??r17 zIH+t2WhDTl%~UvvD|ZL0Us@LK>3OhgjAvu4oyplxMn3*sH~9wzzMlR>4oI*iB$Dcg z7LcYu1(FbMf&sPBAskdBDUz6_3t92TA7|fV{#`f6+tU8DoR;i9Urhdqmj8|a|1#A| zQit?200*wBKvDth86dETfgR{604NDgW*6@MGTqzfzrDW_tRdG-hkh@-c;X#+@Vzw( z04Qck3IRY<^TBj)<-Yyt#B)38w(jBE?Z)@-r8nPox}FvGR)dZy!>`i&^uIRgzPh># zz)rg9rkP_X$0g&&bgm3_xu#Uj)y4Tr+J4#NE%nz{X?929x?^r{Ec1(O&ph%H%r8we z#yV+^j9$taZH3!kcDHMukU2X2E11wxw9`y%$4xY474QfRanjEh>3y1Oq35QyZ78;z zZMIfzw%anHLp>)Cq9#{m4h{Haj%QeA#_67T*F5vH*zU~v+RN9LYvCn^dKBZPn`^F` z>#nwHd(RX@%7%{XR5m{Y@%X=8@%I?m-#(Q5E*|PGefkv*APt&+)7iE+dwgE0J(c+O zfM7DL`p8Ig_I#)WsvPIC#*stB@zEGcB#?$vaN1-$ao1foJY+k%`Z^s@eI4PX#Mtks z8}X#c-V#e80%{h1lfr8Za^I`!=6Lgl?%^c#l8+!qr%*asf!72@{^eN70~4LiCw5Ig%5I7V#65Ml(Aty=I40kXCks9 z0|4nu%0tT*kU$bJL>RFd1sKdqRCDdW6rL5hsytDU6VNjKH9NEn$acZk222(JLf{ho z_DVTVG+0nDq&pgKPi#d|R~=j#GnFQc@*^!(q^6d7uI{R;iYln3qYd42xJd&(R7@g< zl|ZCbiUPqvQWA0jgq))waTq{9F*1UXQVRtENGS)3fm+cDx{xF}%^u796R)!-G6;(n zcd{4>&SqQ)Vx<8;2KAqR3s*1t6pY62 z0T2a|nE(hCry7mYx4yXN`C%;c{i1q)SH8PxrkXiQP*#}(3Nte^Q4txLD2M{sw2JlC zGh?xKxp>K$Wr#g-w>|W|np&WsE(D??(6Tc^G9nGfTRUeNuRBjC=6q+ScTzVdAy{eTF zUV4;6@IN{!CRN9z*zIuf<^is{)eTgP2{tH&eh>_k#{toXs;a3egrylxFbYZ2lE?}i zpwZ-!JxSTM0R&cs2tTr}TX^C9{XBfWWe=Cj*UsE5>9Rkk&*RPN1EMAS*X?fDGiuWP zDR{>{3R-KX+SI;Ps6h!GI?jc1SB zW$kv=gS4L0(_Lw=&gkU2_}gu@Qir1Pfs%*<1YHr57&OZqydcAUUfuWKec_&>r?$Q| z*Hz{K0_@0$Xn@Sj$PX)@&FiyB+X_QGUxpdu9dllJ-jXQ>*dE9wC!40ZEY&nUN6?5oQ>bxZ(E4EL-nAGSFG?Ru)?8 zmP^q}P(=|Fh#Isb24)A#=wswS&)8MVbkka^s!>|1rm3o=iFly283u^bs{~j~kP?;( ziXtD6?MK7f{Vujd=3QH>yGxQ6U<8*^p^KKmx~T*5AvwaWK2<0|fnrXm79voMu1Y|J zYZ#a+q68``Ro@tvKmm)nRFEi&sXf=2!VwT;GB7G4ip;eLvqYlmpve(SWh|K31)wc) ziY-_n1qERN0;+22$!lHO*Ceb_c7g*JVoDW3o0T_-aRQ>MGL(X;njx(LCddH_j2OWD zQ;&{@rT_&9Z5Tt9)Fe_sp_Y(>$taWnLQ;&B6s3>~15EwxXT2_6J$!t7>))$ATbF)* zF4cM{DD+Z+0OC-DYldGvF`k)QJ#^1FXIpQg^2tF{A|OD4D2Nd@`);kXb~Sa^-+So$ z@6QY{01FyMKoJoFf70e-W!SkOx?zRb`!<2>@UO2~wM-m%iI((SI%^WgH^8+F%B z2AXfJaUpR4DLbdePL~+A&2hqfZI$xRr=!#7>(|l;ilI!C?hyHiN*iR03G!AvdcSlXWmlFR0IaJv0wR^3c%M`g`0!#o@Vi9m><^UEpSd+@^>@th$D zU0g6sFlcE4AgXM0yNb(8Au0?dZEnC}ZC!2_;htVx6+!~sZn=(_bgaHNVTt9Io_5z- z-Da9BC}n$}ZV(WYEsB# zL|0zBd{X={!Z%LbFJ2bw+sn(#%j2OBV35_3XR3CnDFuS8A!q(Di1Ms;IVRZvP>>knOe^~W>v{Cht%&c1!e22PVs@hHA4_2nrCouHC#nPq$lr?V&}RT|IWybi-QfuKEF(AQYu&Vde}d z%oqzqK&25VD9j;VjQU%yxZj=F4k98TI;^r?V^;StW8P;W(LHi4oEFzMiih3(9IMUN>BjM)S@y56{*)`*sr%u zU9NiPrrTV(ZMM2(6s(CrJb*9^h>c1HWLA^y_l9|gZKd#rndg?89ogv<&rS8zM_7;| zB1Hg3YEhUVK&{hWyzjW*O?Tcq?{#;M_rpE5**4o?r46qj0Tu*gM4}}TGyoKchb3C7 zRjQ?4=w05mOJh{D-T0BmvwwDFOq7lnS8JjP@_3S0B^d#aUFSj=7V zinAAMSRe!!`0F+FjcV*J?$XP%jHflNYF*ucK^Uypl=q6xyINhzWNVA8rbICnU?GKq zVJIrZB%XSeeT20W`iCQd5LUC_uA(Cjx#hiWJTtZ1b=O<1IW@ct)WoEdgm^f{|I5#V_%Ph3Lx#OO9VB<40Ghvz; znVFfHnVFgS!89fMrk7_O9d4Uxrg77X?HzO1Te7&!%*@Qp%*@Qp%*@Qp^+a5L6CJO| zZ1TS>r}o$Frk}6t`27AqRFX*~l1U_zNhFu|ZKRS#B9f}ArCOuu04}JL2v#V8s!PQI z1tqHKDqUUPh&2`j8o6-=-NeP=h$HxZ?fTZD4i-4O00S3b7PtxqF4(+c;312B_Sp%h)FWZge9!<5u=T0(`j2ZFefc5O{5R}z3+G9r+0t&)BnVffiS`l zhQfPc=!qaO-wBQcZPKi=6e8ME7jHhwj0Z|l0f+{Rh3Lnil=6%qF*kDsB2yQmWNef8^5+D_dp!6RD z$KAR9L+$(je0KhO@7k(=S@Pzgx77$RIt0KuFz$}ycPfTElni}xXP*qp9 zQEAELCmxje)&od~ftokKR6QWrM;HoYyg^qiO{>V$`kzmA0?ZK^-Tt6+aP+aLQi!o- z2z6uw%#fpzCk!DV5@U3rwE3ak{(MW=k<~kNIrW1&fPfA6QS46NB|Iw`}}LBB#?H}RHE@PZFhOD>&q<0 zQ5oy0i=Vzs5<^f#kz8%0%a8lbV-kV|UFNYSX^?3c7a)R^1Y;BsrlAcg2PsuivN}*u z0x{OYrA<+RMK^$w(2Tp*Sh+(Uv&Z|wh{@^?YI(^tH;0AW^Y{$;tn65$6k@Dma|-XS zRV8f=x&))KXKVYt-~1ju|Ch^|v?2b8j4By4K>B=-5b=PZka6MfF|>i?sR*zLph069 zKX>_e;=|Zz70a(bw=YLn2EOCj$KmkPM1lDsCyEpNoxxzqC)^nI_=n1VQ1&!_-Oz-_ z@JF>*-@^_)UCtY{vss~tJm670gqlwvpGFK(857r`e@K83Hi1A~BF}j_Q7&YHOW^SL`JDW{A*LWy zHOJf051e4YL@KATg}?!XS#$1XDckMkf=Zc(lmS?dDDBh`RbWOQ6X-qmf2X6jS?Ni0 z!k`_F(Fr{?08s%IBESf;NSDtva%XJz{d_}GejjEYH-q2o#E043pO1X?Lg!{3)$Q)` z!{|N#x+|gR4NCG)Mh4@yI# z_M&^SFl|K#Mix6jRkv&1>T=CkOY3tOe8jEmrY`Xq?A`QA;<(H!m&+Vus9`W}Rp`RbJII zt5X=N4S7|tyF75c<{F}IleDNSHg7Bd!XZRBS-^PWIX}2^^ys%GbD&2#R47X$C}pM7 zw#bnsOr8=r$+S2g@N(+8Rgshyu{s{#E*`3^pt`v58nU6&Xad1pU0Op_Fy4w4K4uvp zCoq-)je{mIj*}t~JQyjXA^9vC=xOUn9mj^KhPF^T0m##nm0#N(5jq?IH>|y1f(?4u zKw%f8weNS}wO6Br&kLRQfCphwpmi{MsiPo!G%DKGh=h_t2hE@eKHS4$PHr}0eN=VX z2%K9WU7_02?4gUOgA4`CV?aP58V5{-J4opp?{5gOOCT))9ta%8hnZK|d?kr9Ex<*T z(+&~HGp*LrL{b)6$*e9t;bE95651A2qS+9lu?7#8yTMn=9tyC@QxioI#ao1#T~!53 z6|;|)jR}OdN-T<2WVZPyILKyH)WE5j5h~K4`Tck^_<_&VcZXh{o{;4vERs>}*+YYk z2|QmIW(Q~kH5Ne-6ahp@85EBB_o2`6-t!<&QUN{fovKMCv+Bd!%qO~6%;yqaLbf;o}LCS0d~{2hc)Xj+?E zg9S$|MaciKbf&Nyu(DD!Je)T$j9a2-R8>7_2r%B&hklm*2!FZ1ESN*^`zc#uv6P>M zg8Xho{ceQs&3E}{$G^9B5kT37?3Un7*fvxrr;3pLf7kqc`GF)4zjJW){rqW={XJ*> z^h_V0eAj?G^W1<^0{nh-NGUCwCa>YtxOEs914LsGh@z25MFfO_B1EWEibxQmNJv7Y zN$cXGl}JFB49PxU%UyQL#8gp&F;HT$WK|(j5)h)KDG4A%pm8pe3MnEh5rPQDK@|aD zjXp-AgK_M1~3(3G9wlv7APzP>g;633{?`!lf1LT`JiA7Bp_fUU}#PD ziZq=IJX3%C|IaRFn_*@&*ES6!VppS|C&*YnjAWUr=+?5()`v61+7 z>+ges`6D%Nq7VeBb6e8p5&Z@4X&QRvM2*w}osx&okNx=hd*9t(_rD!$E!ktRb>4I6 z)TMt~9E=j-t8aX_zSI%%>jUR|@(Eq&jrGTW+5?DYiw|5EN(v`D4C*VDUjA~{ZM%gF-_B?E^i+*c7(H98z7iIZXn4O*GW@9# zP#^m;(Y6K__Ejsg*Vw3NbL-2S(tnR|=0VywK<|Lc($Y&8{+zeCaOgh_g-kGSU^)0` zu40VVj($7YbaL>(E3=s`?DX_26u6AF+>%YRCSucVPE>$4dIXt$#LkO{exjc^#vBJh zE$?r?jQ<_gFo+P#%z|^!BDPWnJ_(+*Lz8425Fm#B^U?2d?@d)ULNZqK9RCsf`Zve( zM#)y`@H)KGuODML>tc}}%U}#BML>Ny;6WM4_fDpetrJXpxKEF}r8Ic{`#XW+_RWzm z%h`2UXd&Q_FWiQ=?w12}GS|Se7RQYY_M9|1LX{k-&BkOqt)tlXM@@pB5_Ux*LAss& za;+aE{r1?8%GrbSiTqwBu}OZ=9K^xr;$Qu(H{RUSVGYE7sPJ(dMW*gn;YH`1M%*~t z6yw*)?aj=_fY~G0Kyui8WbVLn3?44q+JJ1R%-MC3l4Sku&)yQsnRP%i=5$wY_RY*U zVdnF$LSmhy4HKwQ3U}ypb#ce=rbty)^txO|mU=7!$vT);W`O-v147EANxbMeIP1^R zSCE$aME+Pr-bv&acX(RY!G59wpgi{LPgWn&aItFVj0u4nr2#w?uWsTI-HcFb7=V?;`7UpcLa_;!0j^>;F zFQZevT#x5~!1{8kVe)i(XH_kkfevo+99$ITwhUfcOd`Ps=r=2G|J=S2mwhL@Jzv}@ z1rQu2rs7)`oqufBzdN5FU->+&qziGKEVbv)_V7&)atL6#EhLR4i0rGb$ND|uq zZzD;sZdJy&8wVU}dCa{Qr_jLE*3QNGY3VA~VeMh=ZrA^_{#+?9cm2fu=|bB}M-b3Q zXM4MpQzZKt0oaoUo;cr8g$y5Sj@)kp_DE3SOv;M((2lA>h@QSpq%-=GLoW8W+9Y@+ zBKF9|v`TFo?1F!bwWVS2jKbJMYZ>FvI`otrI3*bBYDd#>Mfc_jL)x1#{f-zBhR3UE zmn>sGsaj9L*wNs6Xg*Y=M$x&hRVl4yID%i4c|r+EuggYc<@Cx@Ha3cyik&b`eV&nH zOA`7?_vreQa<^*xCWOxiFR9B1hu8?OzoI`0b2}NlGzYsQ>4JmHay`K;4+8DMC)7VF?ptCV;w&ub+2ZPN_a>m?kmBEwcs(S8FJ>#{~+t2|nvzHBCDKe<&-D3%4*Y>SQ84pjs?!Jy**E zQ{dV{NivYj;u%tFWaMe`D7*wQ_e_Tl*ul`hh7icm%?|`Ig^wzCsM`~@m3{QkCk5%& z3GB*fm#N*%UNSwLG<$jk<*~7iPCDWJMEuRlBUfcj%{QApZijgIoI}Lq@^I4QbnqwP ze_HF-8EyC=#ia@iU*U+vf4UXEg`LghgURg#$2S@7hU!j3@HHx=6mC*=0(#ysAl0P2 zyaNL@HL<$EEhrH4V~y-kx^LjU`*HL=*ViPWYw=o|@2Re9k(t=r)jJckEj8YPd;Q-= zq_m16-UTQw)0%66bK7w z$GK7C(M9OopLYt3NYkIpYSVDuL!HKg7sdeW7d*`QguQ{j{qki_L$;Haxi-ZyS~fYD9s?IP>_bqWR)k;S_3hT;AN?&n~x>QPx}gw zP|`I8en)x2A>~PX-@{Ko*e3;Bo7jl-VOpmCJvJcfK|gM32nz3)GlU-Cu)G8LUKLhM z^=2*o?tGmrzYtSqgYmC67|bC(~)92((IKD8W2V)fb(9?o~JfMvE~C&dk&6MlJW(q@@nd&NFR zpac|u{*}Zb#+B#%vf>cS51?!Mop&@U*E5UW`XVA>Bc^Dqmc-d~0z^dYtHh)7=*p;; zlzS4pP9ZGo{UB7b!Ved)AKSA1#bzw(D`emWxwv!iexi;)`3-sl<03gBNPYeFEsb!q z{c3Ns5}6gPKol`G09z0mE~6n%TOEKJE&fo zUitd;pQ-+MXsQQQwn7zcd3R+fey^1|hq|K~v4+}#_Wf1z6#!QX&B{|Cw zvnM)-#ZZPSuH-LKy>~F%FE^;KMonv?1%$nieuiPx`y=--lQ53^yRZX^tLAPaQB*x}-U9oYp=h34nll#F-m3 z8Cx7ng#R4jJfEVUGtv-TCv`mGMc8+ji$85@Q5{z|HTQJj#{ zr?Rz_zth_=KW)c*xLm}el|Y3j&wL)vrO$EVtTb9=4?}#7cV^{q2{8%+5aqG}NTX+w z??Fkh8I?0@Wan=GSDLH@)g;Tf62Ky)QF7tZJp3B`2&0WV!fHTKSzrzA3RjV{@aw)i zhw-(3Z8KF?N7Cs|=t6F zQSC&*4#@aq$X=_L=T^iuEa`5V6I(-sDYr9FIOW7%8BXecR?MV-eA@h*fGM*dQCz9d z-0!Ll?XRuRoRoMLm%!Vu^5V5qrPS-F>!CHV#6O{|fgE!B?|lhhKL3`!x%hFGR2Aam^53!1vgGe){#)wgc01Su z0vMC9_x%S2qOOFC71#~<4$*P@uqSc;%jZjTC3`OD^DRR5H{RZB*^;@Dcxvt3*GZ_R z%4c+T=V?4#neVP3D6h9>gR9x3rSp$zzL_pO2+qoOVJhNzwwPh&i-v#UpM3owIlIpO zuuS6bTNvJ+I8*H!Hce+RH&EaRskq>ADP;JOo|+5ZqZ1&(t3D}zN; z{%mPF1S8q4Xotz)ZvOqxg7fDGOW6*w4=~oU`|Yo|9ZMd6hUfO1?!Wr^>z|I_56-zf zSbTFD?;ITRN!>QFgqm29F93=3|R(-2n4)H2zY=E$;t}Fh%L(;*a%ludY zAR1T#552=Lf5zkxs5BQo$0~%v10#avFX(UvBmj9^M2$S!xBP&dy1Y3*@X`aQAg1qN zeNWam?(EXwk3XeP5Us7p6gRpJM%W4OT%$_%%NNxmX5>8N@P6;FRI(pQY&;gc?8?j+ z9v!F{X47TNSvt8}_U8qQ5`EegPAI@xs%GWULjEqW|FsT0yl`yc<1dfo2p|j& z03JdVV141oE7rGceHO#|GlP75ih}Vcv;Tbjwx#*~$*b|RZ%_Yupuc`q1N!cSEBUT1 z+Kj5hU}Sv5t?!mIHq0(NsHj)2Eh$IL$^=6Rd*@28?gPKMPpfJF zmmTUP-cHpAT#)WF@JsRWr9(E48Lvn_bT?~Km^I8ONVy66hR^cd{L@l=JcRf~0tf&x z5gl2u8?;dBZZ`I^u0HEPsrAcm*tQR}y5-|qcq_&ybvr`&zrIqCM^ zUE(4r)C|965i~nc;6XCTt+e_n5QiepJL0fW=@Qw{kt@|m#LDPocDR8z1 zg!pU!>1e;z5(v0nGA!dGb3*=>p;!ao6Y~%uQg295DYLW`KotdO;hTUmv=Hwq+o62) zFr8PQHwDL$B{5<|2pp%@$Lh8YLIcCZl>ctUt=5Hz0m`W7)TVO$jOJ&Fw}wrvFuVqX)10ey&$E}212FH_IGpQ%; zL}>g83GCua!kDq67{02(zoP49%7y5Cg$!N(^`M6;H^WXvAG>`d@Y~nrVOm$GO1^JU zM>%z-@TsGb&helOa-JcQM46P>9qgIP>Ed2ZuA!eCXo1@bT%BmmJ0EWkH&Aular@-q z)BH~wsaHj|K1qhci_RzfFa<&8-nq4bF;NuNV(^!?*O1?tpRb%_gKD6v#m%Z4aqKI5 zJ@Hbf=wVfc$FutLf~T~KCro_925(zvnqp{pSPfbLt%eFHVFOUeGd}xLG?h#=x{e{g zLJ;AB*$fTILSw&kE~uKfY;HbHB4`mw4W#E@CkvphVV#eRIMo|zA;#q4P`mh>X#4T_93jg%-dJB%xq!UGfu;8{`xH{bu=E2xWN8U73~#Kd~q78;VPLBWOu zusoNY{$fce2A;U;`1N#C7M<$OFYv5%)jvt|4zDX@%W)PDsX`D-}_ZiMSq*=H(Nyvv)c>(Fl5iNLR%Z!EVasRUK-U?!7I zrYK>LqG<5*pz&Nqi?>E6UJUm~k1gk$_8XJNChrv#Z>Cygy+nm|zke-%+RDo>qY@^P z#U4%eY(%>-?A2ZRoqo(Imm(FkX?aoice-4BUEAmUionT>th8yIt$^V$oOiYv4oGs} zk#A`dK^1OlUDRXRt(Di39RK1LR`-5Lj^3g~Nga4|HeMVadu_|knqI5~#9R8GLZOO> zKHRV{G8#K#-6whV<%ViNxgciMI5uU5>?RvZun1+`n3qd?s6swxV^O5z5`fXSJUujw z-qL5AQn$%mO2$@bb5Q;WG<8QMphH#U&fk(zWGh?QkR+aZQVzN+=Yko`HxpwZ~71x#N8B(wGXBJ%)h-tDW7sF(_igN z<_I+f{p`n#e8S?YyMM2Ze=BH0F!*6}_Bg(x=IFFEdX}V3PXeh;I^;AR29GQ+q4`4; zB()4&LwhCj6)H~NWhMhn-P{s?Fx`?02GdVeZ-8>22VqM>)x6#Y_EB zZn&GxM94NWb1=4{n#M80u zqJL<)7?a#O3%g<+16;mix%i@<@GotZWgH!xHjc z(9Kt&9}2DQ${n#(m4siFANb$m5|40Vz^XQZDl`(u)LC!ybK^^ufC6;L6%Se$YF3QF6EysO{Q8Y+tgZ^J`Ox5J z`$s8055U!0C4aofwqH^y*{xm_VxF3|C!M6{QqQ;Gm$JhAs(cWOvD<&(p5h%07+iTP z3h<43;&viJGT*HYn{-k;{b>Krjq65L%R3Y#c#a0HXPy>msgttmx{PsFPjKc=R!Sxx zlNRpSM^iI>p2gM57OPwL8lk94Op>p*^NMSV2IzAQtQvns@v1h~&c!|l?0emBqLz45 z@7&gSq8n|bg#Yc=Rr3ywRlG6+cpbf_aS$F&*cc{SiOFy*PL1JSDDo>HZr^EAR?p5G zZ+-r^=hx--w<>?mo{j{)84&dqv}9xia5xcHv!xGD`S;(lamii_$8Y0TaIDiBs6q$6 z^l}E?@m`ddD~$$~y?VoWulSkp$x+i;8(ez7Eym6Oht#+7?K%5wyK3+EgdMhS){fxJ za~(){sJ^PZI&CZg6dDP<>Gee-;f;1w9nLkYXEG(+PzEp&*=f?OFY)GJn^dN38y9V- zpuEGEQdSv$pak~cLYh|=o6nS=g2QG_{EUN$7mj@hPTjlz$#-WJ)K7D-k6+@PH3)y4 z8cLm6o1e<|6gq9KT&E3PI%2kPM94OTNF2{(!acn&3oqzPW#NYQd|fl$7!KT?DtB!> zw1yhNI;D9C?TnJ@l_2tH@csLL?z57Nk-i=ubSg;gy8e-i`O}c7ore>}T*JkMf}`>I$*w6jEcYh6Rb>;Et};JzD+x*5Pm``M|IcLbAS)D23A>qr}K_VBiyOM z%62^9aEbwHixgDtpS(p9iCG4@ouhBysuz*}l+J|IvpgFd$7ejh&YGlNdT8CVYd5X; z;Q=opw+vyyHj{V?O%TV|tb&72q@~SxlpOppd%KwUc+!XerAa={5fv{bm4JaQ7y6uN z2FGf~IBk4tn>M7^f!gB81%ncql@EAAwJvvCSE!*tL_1)(FnEJvd{mPgn19hl-GC}4 zMEX+lG5J)TWFpcR?MkA!QeDZ(`XWIaORNDzR>O04YO5hh_%s)7jL^lMZo`L>3@Jo- zHyNib!vy(~@S^rO0*i0pK*XSAm=+uk5IH(h!^zbj_SFg(vYAXVKDR|A9zwtyeL*z14!s-*F6Uu~aMarj zS~!Z;$dqYOx1on~5jNF0I6^C-rUwo#K<6~15woCKA=+SM6Tg?$m6?H;A8r%uknsXV zk~^R0)%%v!bg2z>9C@8a*9uNHPF5jFM6fwt)IKjVt1k_i0ee@b69TJB@4h+lEb|~! zkS_tC3^7EJ?py&sP{BS;2nj!F2D*zT>pv!^AM_*m+xs?P^V0mRz?1veJx`XosO$4x zDKw%Oo5&Ys&O+HKK!cEvBx73uf(}zqfDn^m+9vCBa|Y$)IGjEiz9*b7Ps4I?gX;Pj zK$#!jl}aBFz45HFJS5;$9llzZEsv)UvgNvG01Re2)mDsX2Om(g&6_~|le%9w^=tL- z?(FZ1Yu`1VHOC!4@m+9X;o-vO;FC8ly;v;nipIXJdk`AE<&N}ejy?Q96-A(CpjI(3 zMU%-;>!izz47yzibb1!Umdqupsbhp%SgJ4!2d~Fsu~7faI@CKX^%kkFf)QY{U#%9O z_%1%3%{X;`kx0g3^ZO1CrlrAs4B%yq*BRXG-EC%E9$DfIQ)VPn2*nP-3PBl|!cg9{ zTt3x=AP3?gvFJ2gIlUnn;O-%~i4v<^Z9wdCg^V2p{-2V1w+|lk4qemIEeFs^^gv_L zqh(^#A`#ffglgWe&5JD~QDm~!8Y^hdViuj^jR>Pl3MemLa(OwhqAn(@Kk{Pi8-vvZ z@E~X~0zFYf?o#=vEAUMs1?`=-o>Eh%gr2H3mW9@M_#0w<`gdzko-GZNCyoCL%uqjg z?OJa16n@r39jcpygxcg;oyZYTyvh`p)Z=K4L5{^JDT^h@S%OLLZgWxT-*C+1phnXE zk+i!>%C|>)H2d-`1XVbh_p7YBSP6}3E}-- zcP2v5q_D8nipg>*s=+M5eFRk?@KZ2qXA%yhp9K~XN|;G_2X$hKH=vd&LP`I_PoUic z=0*rL4qO9>qbo!v@CYc_R*h=x5+QI*@I|s6Y}oK_D>l3V%T;4(5hlAU+nBKpmqxCb znlgUX6*w3-3Dwq2Om-XEyG?lw+Ud$wi=0sMa_VYkHiCOsKp&E-9=$z3xcGDJ{go>=L1%2VyKJV|OwIIy()w^X6#4?`bK9XPx#PoOED@|M-iv1#-{Yt@Z4wsvl zf3`SJ9SqBTf!0k*;>#hKnj1zJmzD3X%033=QHwB)6})?H?1&9sT}7YgYGPS&;U&Epe2Vjd;CG6kfaeT6PM51v)>^l04oZefsvD zE6HIoQ;)cIHg;&*IHC`SL(HBpb|OayyW;n4d+O<47xM#c z&KBH!4wzRgm$sUnIy(qva8tuT&s?lD!_x_4nlDl#@EpVxP)bB^`*_sfMUS}HR zQ0|JmsH#joHNWv1Nx{XMTJ#(>C^OYJ{hpnJ0fY%k#SA3-tz`#1WMF}qa(ygT_V(3g z#zYn7hW(sjjJni?N50ZOj)kxSoOEc#qeu)lh6i$m|h(h6q*8)ZPW94yH7nXuR>JMV6agw0wP=evF>4g7ErJeMu912;qTF z%AasvrI~fwpnSUETDZZ?DPd|;$eB2uv(nQWTN8hv!@-f%W zg}Qq{{^%|6CoG`v`Cyfi-eh10Ch1tY!U=L>E@^0+bR;*u zCl*;`_-fA|Rao%g+Xwo3k;YwA?{~Yy_P$B=@wb@T;D1$~lpO{8M{+qael-?`_D>-T zi?y68A3n^(40wqi*4pJeu?z@;F~{o2Tz_;1g6K(+-R|gk`sOag3&vZ^;xrfC>lquS zSC8?PJ)*Bj-IXVLJviX^21?}O!wag|BCrb|PdU>7%tV$FUZ|h;gA^R$+yzzcUVd;d zm^WJ-ivu|vqat#$KHWi>qH)qYOko$WtDLuv2*JIhSZNu7UkIoQLe5~kg+re?)C zF#F$f?f6(`am~pZ;i)?~v>n9?4VQp}-f#Z-)%I_EEo9g4e}|LRf6z-K^+_&%_g>uy zK>gPII+BRkRlMtmk@l(J2%P8I&1TK*4}{)ud57QsG{l(p$YR~7t*}23(C7WNPAJ-QG>mSnQs5or{p=$XKo3HGJU%)sX^8Gd%(Z%Y%bH~~={D_m+33Y^9-iLK9 z++Sv-n?JHmpH>jg1wJ%*WiHnR2}6&l!QR-fj$NKg|FG8e=TbS`e$QA{l<2jJFPR@( zyV0N?s)PlFiSK^gh&tja;Nn%h4BA4U%7!58h~}nwgFV5Al@F%-R2;_sd-E9n8*c5PdYz~I10ZuXE5n%uHz?Epy|#YZPkYTG zFO8%%PCDzt#1+2y=b^oiALt2%AjJ5){oo2rmVce7lTK}-iSbzt=^#<581RSTC^V`X zlki4uV6U+midxev~AFgQB7x zY1&pxP?qM7Cab%X?MSX-;0IqkPB8NQEe(sdxqXK=Yvt+XI2wE$zy-GWVg>eW3SG_$ zgu-VE29CH>crFapqdzD3QLyD__=!d4ck-8W)h|7Xr44H@w@V|-zejF}x_n8Szqd;B6$HeIolnN0h}22P zDLeQu3%V6vPpn|nr&zviHbe?>Hc(#?N-FqEmo#lfdOu=-J-$5dzj{UWevMOh%UIm>O>qQX{W;M@1<8*J1DF3%H_E2Df{is?kDQSt=B7V!Ihw48FKPT z(k~8PkLHXd*6|a*XUp&4etlHCarM}nZBhY}(OWKe&YZIh_AglE>iw;*Hk&62@45Xw z5?{UB1-Dv_*16Q(h)w)76#}=*aXog1(OK~K2*A$VenZ9smobXHc_;C8I&w6Y1!-LW zTYBZyx3%Fbr^mVkK7ed4j)gAH$LxT+5j9zSPx1$m^N3@FV!5dq+LEa#CO_a4z+^Gd zc0}KUfv8L-Fiix@)fuWheP*H`eBi#g?yinfg+6)|YA$43}%&fI+N%jWSo5e9)$8T_QQ@Z<1}2J;}EVdQU2S|$e5 zX=-2ii08zFhY)L^6H@P{9K=4-t0^M5ij6v*fwjs+2a=(?KHtR2o`s=PmV*?jKNhEs zEo|26(9OjQ)GAQ>?!|fvz??o$ExdtK2^35llj$d5YZ1;B;xDMG0D5q>_a&!-)SGD> zq{LYZ9dww0C6gYt!gS%ZOciKlW^&zQdb2ow}$vhU%V8p~ZN!3ic7*7#si zz}k`EBDCzGgDkB6U;Xip{#g3X*zk^DtzB>=P=*A_i+*Qxn6J%LBuKjYom}?X{LLEo^9!&{qgL$!=JPMThRyq z>$vyeXnVry#>Tq{ozGd+??uQaMY%_*8xG^LVx2v$R6-_0nBQT1(Y2NjjyFjJx2N z2}qQ}%ar#|UZnIsAzTA0&S2EZ+#Z4i0&leR%1@0?#tH)DJv(zmMKL6i4;FHT4Zg0P z#%i7A*wi>!FL3wK4zwq=n*L&l&lJhj#F_kbGKnRMM0m?4`PU^69`Xx-6d-2jXaLuQ zf(8JpOxj|0KH%0wb7QEGG-{pI%!d;m$9NlWAlL&+m3F5CojIubDX~b2j z1OMb6T6@AA6AJBv`cj)N{dt~Q*mE?s^j<;-u!h;5rF|`JLNgm7RrbzzMsaCmKeB>m z46xz$`QTrk!7#5nLUeT2x9#nkp1eMJSZH~zAPNtipBZqB$uf_$<~L7G_Az(ozI5Dr z6J>4pfqn;=$sho52RIo9_GlLyh$m*FSXr4M8T6wZ%ae}1DG+7MMxbxALX;W6f?FB? z%zr(u(3x46!~Us^1#jgtMm*KwIXZRIJwY&IEI70DQo(XHbIQZ}lApIb5Qq$fx3~v7 z?W)m`mt~mXGN4>fd{zd2Ak%XPu3ufhT)(@QM?jHLR+4OO|DWKf;i`|VOg2wP6UBB5 z#mhmHu?(&jmM@xsAzb*#Um1iin_o`Z7?WpH$`oFt{BGRwJ%c=O;;{1(3tW72Mra%-aO8@@?iPHoBIds{pu}O zVgi~dHkU0f%0V|tIfF5D-A#wxA$4^D?$(Zud_zMT%8+i{*=$|AT=l_Gqdfjw^ASgQ z&&gGjtLEDFDy*GHA`~|9!SNkuuB5Ji*yZ?6>C>+a;`&9Rg{u|a#???~rW!Q>&;41- zQ~6}4>Xs!>Yw8S;^VUqnT)yN*ozlZShJ*kUNju}09w{r8a(ckGG z2^1aag|EZX zmc^qffcy>8QSxXLe(GHn2X6K(Qg+;VJZcCy^C2Z^`T36k!_%5S*o)cziR;_~!jt@S z1Ep6&R==m(oja$o`pz>QJK#WjnKPfbldE|nmc6EEc2WpzdV0!;A^W=XG*mB_IoEOs#8-JF8}mH zGQsC&$+<+$EaPQ>_IdGfMA;6OwyVLj8*cAP9%AKyjW-NYvD`#N*WhNsDCA6L@sCf& z3Spr09GuK2Ujy8SDw6hWuZr1^3GHrpgzwBtJ>?G$iltdMAK0_RI~;isLdj*Y4Ml>0 zRpacy=-^o8SR1xYxf~_emQo|6+Pl_)>F|9+5)$u^I^Y5tUXi8$<~+C?X7s4?7g~F5 zwaeP^)p=CnLO)}EpbQdw-t-S1C3?}b#BG?V7ZZSoeJ?Gj3dX_jtj`V@z!if)el?Eg z^yMu;&b!uoXU7klu-MY;?;ZY075sa!#cOOCPh4CqyO8sd-(0J7 z`5X-Mz?bc_(MYN)8$D>)-Kg;A23Mx7!Okx_0wuU2Mc!7BM~>Dd3o=%ynMclry1_yWvMqy7->5X!S3G^FuEI=aI^|+I z+Qhih+p~Un_^qen=$Uw$20vSW&U(tv&D(r?zY?AI@T{JljNeqNA-q>0ajK!Zw*?YzVfKMOJt6I|tD6Oe2%uA_86T(`9HPf29Q877%5?!TDk$6oiW} znC}JO0oD;9b<_-@SiqGcqkz}KlgKinFmjwIty=(;LA?-SENT-)M+__@ibaqoXAm>M zR=xmkx=^5L47r%)o=YNo0AECe@Z8IsiQjL$PIpXhb`z1fVu3PbHDDa3Pm7 z2qJsR_=({$r2i?oxb6@gTMZ-voBQg}IW-U{0gF}Zwk3Lr4h(Mq=zLEamdGjtw20|6 ztf&-E7}P68%$a zEBlh0{#W#nBFMbYmQ}Wh+o5*zO1;1GN~*^_nMme4;|!6Di0s*mmfr`vf7tMxQELO< zF_sHYpl9=7DfAL;h8jy~WlQ$wjCpQ(*sra9z3?w_LQ*C*YEJ>=^>}Je8o>SW$EdhF z5P0_QpMjN^hMQMbTWKjMss0$t7j5%X+ z-%H6lAc{O_zxaH9UbaEfGk*)Ee4Uj590%mL71qsyb51x5?V)$8L+siUb{{F3o{xGF zyKI^NmU`o9SRUtT-JVa+kA8@^oIPzYvrBtCD&n|h@tckH>s75LPxz*DT5ms54xM>& z$|Ok1?_MWpd9dBh6_-<(z44gwd0O`^R! zo=?W#YisU#3HL*GuQB}v~TOSJ&u9{^{(F_{32 zbhdO-F=Al$o?p|kYq*otTf5KbePEY4x8GlDtrx%Nv<|4jH(pvsZ)nWad-l2)9l3se zzGZsP@heKtM+@kCW+yZo`c`>hb*O#L(L&6Gi5go82o#NbiVTg>`*rE{uj?C6^mUEB zTW$pnL7da<>FKe6!jTeC=ddfpuP$X25&TFt3?1DkGeVfU!~%fx#(*VcoSbBQc670R z-^kB+@%pd(ijRfC?=|qCClDb*(Igofw$6HXs$DKVW~B@OwmSmbePh~F6KXGqSFeAW zY~QoB>G6E!-lCM{xjSnzDgn0-sXRRWT$mc*N&-lLBA~GGG%0%cxo&lBt4gLYrfu*V zPVML5F6-qkeN*&3diBafSoM~N;C`xf}zMxjk$ zF`@N6)_4=XsqdMTuPW+;brqx69`242ja9`MNElw&7to3XkYF+Z07TLHzYF63Z~V_E znDzhm%0%0E(Jq)(2LKXh#FJwmS>9?tKl=D{$<{(hnS||jd)mis$L&H=@}8~VZXeXt z1S-xx}_&HK1t z+2Bh^*K}zOxTFqPxpjyIVQt*&1c0@sS`Y8cp)Y{mf!jASRZ`urBVPglP4;;-@Mb-9 zh8*ASQP3&Y;IF7)`4ZUnY^IuJ>Vh$ef8+=$}X3T2+)S* z3jhr)$GJSIgCsPSvOa);aV9mvx8$N;jMS=k*-Z0shg8E6S7OS`p9<=BD_2Wzm`6Dl zpFdd^51y{wd!nAM-VE_VK4u5ihSzyny$$i6d0O$P=4nPl$U`sVc{TY$x@mW~Za#=> zYhRP?4KgycuVT0|dujT96=O-r9K<|N+%hW8jejKQwg4s+tt9|p0dzK0gN)XCS9-O!`Z9e=#(BzG zPK}psRqckVF5KZLIv)Ti`lBgmJQy4dROibWk5V;CdBF%{5hoYFgY2jns_6E`n0C*x znxCI!RR+}(=@S4uHi}*4JY|(DJ8N$U%C?3J(0Dk&f*Q+|p%Il@wUt`$f;ZO|CRIG+ zj{0{P4*$+<|84R+d;a_HG;O{%o`TRvXgyr}{p1_I3j3h9hFgOyG94M_KlW0p(|h9S z6QtB^V~`zWzsM)g&i+%363p87fjp4czzs;btz!p+i$eBX=LS`l zbnm}*ly#QX!v!bD-C-dgizs~h-YY)iw6is;f@#?2+$jj*%?nJnTSviSMv?zIK6KMu zQ-A57S5u+I z;Tq9B0vz4cF`Ra_?CDwJ%qM9h!890W;mGz-7|$aTH8`F`886hqvnlGtbw zri*o{ODBD{9v|W2-JS+N5f^2`88RUpBtUf5DMfi2r~3(GRslGNRH8##xCPQ-m^759 zwLBou+Krq!t)nDVaPoF#A99Be@VIKQ9D3ml)~T7l0v=_0Wp~df+aSYV*6+zue?$dD zm_P%6??~u6HBFOvIc+ZDjKYj^%wkl&McxRM77B))h}EuWj_7?vN9@t>g*O`HDL<>f zR&-4=w0booF7j#^Tsj}kLhE$OB*k*Q`u#wZ!z`FlRGic!*;;3L&0o9(Tu~;P;kVQa z3m&U+F|)Git&)N1Fce)HZl8MprN1m6;mrB6%mZIttpgGCn@qAM!^5wsxd*-q6$M) zoUEOwlhv}>Srk`YuxqAkdgZdUg5@paRIZtcWMCmV_mW`}DO)Qg%L;KkeI+G z8o6V1uD0OXsQET|?j@cb={kSTVt0xMR^J=0R!hzIZ8NG0@IT2c>v`7jz4jILc~8Aj zr0zj|;}^s?gz5UCydl>#r%?+>H7mllyytF(6}eCjjH40A%=Tb6ynW5+!c_fdMwkpY zM&61uVN}^JMT- zh+Cu}Po-ABdXI+R*dkxa9C|Uv_``6i<6r*h!WN@A$2Rr=(t>p4Y##+CnO=xSFR}B55kmc z>MWUx-hEt)*EsC5?znC~{Zt)h&8&$YtPa1XawC_x!KTm6qGx^0ohHNg3MFsPX&*Uo z^k|@4NPwSZkh|l=h_#e1U$s#FYfOjfdcJ=M1Xt-XmEzN8KWI5`X&5GoV_U|5!-@e| zO&?F+ntQbuot`OM#$NR@QI2R2J%TAd#k+J>8^w_V-+qYfSkZdnz$*6Eiv2$TJ3z$0 z?V!-qqY*(>J1x3OgB4gS4VhWm)~MT55~W(wqF1?SbjeV6jjcF&1y?Ix;Z}EdjGEhx zW`}B6it3unGbmi}ow*IRH&o%!qPS|ez8#z#MW|3B3_F(s>W+s z3IQTO;Q^^~Hum6b=PA(C?dsIxE@E&9rqYQ8$gx5qL9`{DKpTOJvu5VDheRocK*B?d zCV0uXWvHCswvm9*fdf*BXattV(<4VSP|mTr3IG;%8>*O2FdfCQYgsX2rBiXdvJ5S8 zP^CQFHNm!+g-jf#fNm7lrbeUTR0`3e1e!vy zx-Qn6>`KlxLFR!{10%IA{xyg+cqATGo2M>qqhv0*nKEMq{zhC#Gq)(Zq8ffPeGOwgfx$r234p~|=b#2tx&P{7p*7giunaMOlrpiz`nz=077 zk^xX8yl)M6i+GOhb-}7VxwyStbW}j?h{O!g8Gr$m2<-;OnP#UfnOK_*F-<811nQwl zQV1I%5?oNYv5ZOrP!n<@a#Jsu1#be^yK7A7DjMSg7;i!g zS%3k&3!u`=pi$JK=>ReWfhY`yGZ>T@9XfS4yJrBK80t)xCOT-khTCfb=%rLPT@-+t zr&fk-XkmmPLd1tDxM~!~T{TCR6FA**au3{_FS^)0B*-o6AiQEnW!2k>pH$X&T!~jl>i@njBPKl8u zO(4wED;a>e9~GmC)88!-S$h=A!rY&jz`sTP$>Xq9P)21<-3Vd#ru zSXSg#E@;}Bl5iHy1Dp$yVb&B?TZ=48kZeMcGZ5rCm5OP>Qr&e*P(qgVQ09i?OoH{d z4vgOpdA%2oZ(COuZzw|;5Xzh&a0@Fzf+SQXr3A1BBw*0g&SuH8ZfHT8xz79D^_iKr zgKQuZhDb%w<)P#w8oHB3b_-Q%7=WWJsYr=kxv~zVZsr|j>{yF$nIk~lA{-ftKw{b3 z0S)dac^)~y1893da{yKWx*kk`+DX$_lYQ>jXHR_`<>P$ew6_~zRHfh+LYz9fUNWw? z){M4rE?FfRB#Jn9H9(UqtW>E0qWF+bq2OBqxRpg)mv>OCigb~T%?wDA&8fvqlprCD zU>*d{(wL$k=}stS(NqytBm;P5X7N`LOh8-2M7_(^Os#arEaLYe%&RLmP9i}MOkuy~3Mrs;a8%Tiuhcvs*iC-40dC z`2cK^EQXfYtYV7=vdXNfWwr`)La{{4NHwKGD5AhCB}*3C!-k^eg#Q}*Y zl45kMA)+3U%&F2r?LDFI3&bJG(-2SwBT*zPD+)nr5Q?;PrgXqW zNgH!ooAm5spl4LBiqNpxhOrq6oF zoHFjXRX{U=(86A4;UQhn6XAG7=B-E&rM)Op)6A;FaIaiB-toOs(VQ*TS}7&FoJ&*# zMr2AvX~|}&tWH3x%VaAwa3-fi7y@mVLRF}M3E9O^#EuIlrV~b*(FnR)s)n^wAPTjZ zj2KwEBFQoyP-W7<7{c9S5tW<-l(}*y5Jb5Jt~ToyhB1~dQOg;D6JhG)!U=+?NT;L; zux~`6xjM~I;NTgAaMWr5wCI9Pm}11Zl$lfS~cb9q;n2l`-T1J!t+X|Ht1X!#=RwHX_f>}A5 z$PSS4DdQsS@fAoVAPoRSfkILR0QhDlB2v&HR3#zh4ogb3v`{4t14&BPNEOIJg#v=i zOn{`NX*=d3w4%^7Aws1M0YOKczvZk7Rky%Qkv!lsT1BNPXkrtjqmmS~r6mm@Qj~$T zfMlRjgF{G^gH$amK+@3BN)#zTg(U(|HAv7>B`Hd@1uH-_g3^To($hlfaF9Cq5+=u$ z^ny-Zq+ofb{sM;_nz-Y$r(Dr4Xi93N0PWKhB`{?vS5%vkhkg~-Xa;bokwlLPJFv+! zB{7XDK*_1(8ZkRgb$0M=h=2|dWIL=0CNWajXi4151y>GDO*O^ zOJON8|K?~O51G>=PDMJI?(5;NZ_02D-2S`G>DG?t7?`XM-|vZwf)~XwSu}U}Q=*QN zXcP|A$2|HL?q)Tu9#z>8o&9;7F&IV=UJ$93Q`mO;$j4kbKQxG7~TiA7lXikAv(r%j9caQD3|9&>soZ zk%5W*e!fDo4d{7jbV(L(x0GXAKP}`UB##}CVQs@91fZWHtx)YA<^gm_>0NN70M;|!G5WxyX`5%?Q z(G`Xv`hH=vh3olm5(v;l4FHz}@mmxCC;c8@8Ac%tG3K(M8j}MHPCH%q`z#g)1^^}p zTo0xvxboX1)|x7ai@ho3;?11^e(5ND^Ni(#$c*58{bzs#gbG0(GXLl0MnO!Tx6z|}1Yuyi`_soa(|fvC z#>RhJ4*M8~>XAugq==*CC`&G7{C+YXk0$UyM!0d&6!lNxE(eU!<2;zf(&|U@yws29 zltxBsU++nfh@gkdpO=>z7hAmvG5_#?FPV?bfc`&|lO7#CTY7u@`F#G9firWrg_nd; zwN}4s{CR8oUZRL?<=*BiyK&4f|Ci<1DL6kj-!y#gAP$#@Qt_QE)y5Atu<3hQhrPS= zoW9sEsV9Co-c;cdTjj6NNM*>rSNd+Aio(J}2l$butmgWegD4*A6(Jq^Kr$qY<26(# zutOw6|NIx&SP&`&l1SZf0tJHSRE zM42~=EJUE$hF7ME*e}7aJR0nRWZf;tkTA=mP+or(T_zsKPtaUGX$w`rZ2fGnS9-hXPB z1mU4@AVB@yedl=ozy9U<{>R-h)j&II>ndg;6w~a4FbCK`Rzxm*zEc-j$oga32#Ua8 zY=2kD05S$J0w=+LKeuk)^YPzdqEzPGff|Gm;|uU=WS?e+hKD*Idl@z*fv@^%GKWbTQ;~fu4Qobzz^%+cT|K-{Gv}isz3lA^1M+SOk*W z?93Ys2m<8|Tt*v?H(cRfWkCU}LD)AJG}5~3i?VUpS){QMaU4i)UD9c;D||uU{S)o< zzz#&`@xOI*>?VcPp* zh4IhXXpP~*yR0bN&>qb;JLilN@|e%9S_vYSBmKpd3gNrok6+Ii0spj}8-PH9u`mII zA5$9t+xh)maZNceQfE-3;1SY#eC~%cY7%9fB+|3$#?xbc^l7+CvE3y&lBGg?s0X_ zhs4%s7$e7pgCw8qXhaYGU)%RWBPwLPGZEalt|72$G6 z%-K-{M0LhUt!7u9;QIM%Cr{TR;byNuE3SRWCS{TVAO2EM=5)|dkXa6*5;5{QOn~B7 z%C62xAYEJPgM$(8^M7nAI49Mh$B%-ZIQOhpn`*)+k!`XJd#*d;wth~Y0n{Nb5(}ag zOZgefCKin}2*2ouK8AfgsThxm^l0$DMi?&*XzYRAEv9z&H`>dtRM4cW(pZW#Uu~`< zp0Xky1fZj&wV*>MvA%C?&tJ-15A^o)9wi&qBH~AzS}|vV5BjFxwbFu&^-h@cy$3p@ zZ(dw4joKY{!eiY9PyElz{ zb)ig4_gHfG)n|Xp2pplYwU-Z$8hV8W0%wdKGJ*Hc!gxFL+skyw1|;&^3Jzug#zvbj zqjjz9)~h}jHrIw`jWf2S0}|$Vu$GEq1w?zI&2zoXqsA)N#`U%Nz}Se}A4&N_9pN{D z@tzsT@$lO~51dSlLNj*TsDEC|_P34A{b_o%ggJTy{0aaPK!RVDC}-_V%#^exdZR+5 zVAhcA3|zt&E~U613tFakzobnf zTzv+NZ9&%@;jqK?vFx%LL+csFZ>&vCIFy-py)^ULNp*f zHCkxE{f<#sWrz)u(33_p}-V$oHRj@iGPF2#5>afA^6zQX*Ll zA>}?~K=SEtw+kB|EA<%mOf8F$gno~8%(xoj3oQ`o0+yJnT@8a`xC$VGH|GL5jwAal zdGlY_8TRyg?~dNt|7jcl_n6e7#@2f(JrN%ki6x=3|C0CIhr!9lm3poiBR%YDi1PUV zya^B}fQLT+SYs-IlwvuS{O_dX|Mix$I>7eDj~zjsx=X(eC(( z*kqg`#!{>QYc84}^1_~MWMEgyo?iYvvGVu#_;b4vdbh0&VNj(y)#h}wooT7O=p1+zp`NNQ3ho`81zrnBy##+Ibl5UjeiL{>;MnIF$ciy z@8O&OD))US7|mL&|2cCvJ(Sjd9+D#@`I3V91X2`zOnQHBxAD5}BP}u=^18c_|9b&J zuff2MV^#lB`}em#SmSx1m844cEw8O&t3pWzZDZ9- zGAcj7<-h&oG+aUg4J)7%|CAUXM1UCU$l<5hvKQ4=I0+B~2`)#9km5vKV#b19a0lE# z;y=wz5x5n}43R_=@2?DNj=xLSb@Vv{%%lB2Yp%*NKu2Fxj&1o{pgevmB*67ZAD?F& zpNHnUAd-DCne9vYpHA~rY;r?B?Wh@@wUrzYKLZj(1K9+1@@#pom}-dU0s$1laXLg( zoKX|rud={^38ioZhTvoy2h&f+Mo(a1Y>41|#Dv+1kBPdrk8(d#C*o+-&U%>1g@DMzHFDRbj36r9IZO<6BeK!SpMT0g&;~VCBaanIyf;(do%-)3H!1vYH z{9WgN>%Sx{LtSz+aU4B*KX3W2rwIZ`g@WjX!lR@>kb+H+aTNSc|Ig>Hdw9pYU5hI* z2_)a24}D`fiJi$)&u=d4hneE>^qL7^3kY~YO88`D zbec_L>k59>tX-GmVn9VeA|u9mZyIBgKsuFMDLDxbUok@Txig3WdS0OX80t(ar=bjh z7D!@11a^c+!D220h##Vpr0>pxCzTvLCm$ag|G^)^hJ39GlD}Q4lldORL%yFx_UX&+gF7{~jR2o;RtL>RZeK&>fNf9N4j_(&M;+(fNn~gd z>F3|9RqqF5w2ggk!QruyibT3q&lJ%A?}0xbqWvs*7m_Fs zIst;ZXSw7vRxf1|pAf2?(rU8-4G@WfjEjNd3OPL0uT3}Ue12G>L3E3*v{oxV%4FYn z7Fh;CS%-@dq>F@1`SW>g)gCa;7(lf0(V zWD6VOf3%LI3J(mxJ`iyT)2J4)v<~QSnY|{=?9>Gzt7L$vgYB-3bG7DHL+W8A&+6L)F(oK2m^)huieSlw;gu+w1l$W|8_I;K0F(TrlYq z5Ed>RhUqAwC7G&3Px@h84{a0G_mdzBVdiX`l4OJ4c3)o~XCIHt^!D%6+!AptB}BAH zMEF6dfoUqh#D#GpfGkq7O8h(K+Nm}|i9YK{3nn2_+ldTU7z#mRlA%?oMUhEcY$Zq) zl>tJrPYlEqj#VoPz)&hmfZHlhJh+8Q%YVluV5ejX=_&IgBa-hq4%o0r<7mD6&>4RZHiIm@vjaTlp}?NUIbbSax7z4*y+^MBOTE z&NDOq!Io>FfJkncjBA2DnZO9SM8j^Wik2d6w};Y{rA>maq7ULbG5iliSH|39qauXs8rD_onSQoGOG!-)4O2xFD*#vu7&4;Oa{f&o4lK&lK~K@&DQ(tn8Ci~m zt;U)BtTCExbmjiq0}&EwD(Rz4ql0c)hESpwnTwcaL=W940stgpoHM0*wM5EF%re?$ zY)>_o{O1Gn&y31vfXf=zUlNb&MiXr$pNg5oWg8c}WdwzjTE-!JU~dsiL~Y=>KQGql zlo9^o@es^N8Ymxb@6XEqUVnTqFD`KJYtx`3L+A;FlV0nBrtym8H&1GvVA- zG#Wu0KOb$*bLZk_ayKFD1Zc7gBq&mnB3&Pu7AT-Ry;eyuO#?}-Oa&z^Dl%c1fC4@p z2@@YKvejFgKrEy&iai1;_rwV1A~#ffI&cgGBqG28LLm*RTKDjW!QeUPZ)a9b|6m}` zn}Q=A4|*J)gpT4qD}Zz3&@BV3RT+mUU$WoE^cXtVSYIpSJK&e&pE-^246U7wCFN;W zDx3fDduya%yj#xz*}G$A~CG zC^&-3D%?I9bh~oNm5a-3RCD>~u8Id~7l;SE4z7`q(tu}E71Rrorb_MkV5X#?Hk86a zC`v&5z8Q{z91hvv7vC74GMXeK?qQiCTT0}fX0CZ2Hu?4X^TKh$r5J1DezShzp9oe< zWsJSkzHyeSc)+lB83-Kh{qbv{?*_&tl?a3Y9Kr|7Y!{>@8=UJ&LX;`CQer}Q_21%B z&lP=OW$uMmdoYgO|2~Yd{kzY{w1*GJr#?aLn|n@;cAhCCAVo>HF5LR& zSJKxpskuIBAh3eKB?d^P3y?YO{~4tkM`<2)RN{rAG{C5dAZfomIY-^vQQh5@@-T0z zCmwj3@K3f6QV4=t2t!{I=>TTm<|qIzar-qw4&a-%d8JV(mFd+bn}&7vMq3WDhYsAwCToynnT zAnpRG#1%@1H7DBi+#Ug(QTTT=DSclo^!tOZgHji?Pa1}WAG+l?`=@T>pRbHdkn zi|?#5LhOCf-b0(8mm*8)K$mpgFDu*p7#ewhdb*0NI0Fn1hg=N%zbv}<2OnQ~-|!E{ z$Muu*Ay_ioPQS0=%-yFnelVTKmn+;ppbx-5@jRRzKQtHnP%t0xKhhuOp%1!%&JhzU z@39E@cya#7&hFv${=e#_C|x;!7oe;G)zx4K@XLfZQh^>yMS=gZ23H+y^~X;GcT)R_ z*lVS!V%d^+~_XSdM% ze@#F4{J%(4{qm>z7Ys%pwHsyp^D^hvI3)9|`|sV^&Wk2aR3a4}Vo^UzqTZYBneyOP z-<410;mtJXJov4PRBp>dz6Wpd*4<|Fk6+{k`=O7{j&q1dntQS@cu2RS#%Wn0EU7eatE)PjSLUUcSFzmSitLz*z+S1y7D67{>ti^5fEvA0O9pY@eQB&>p&eq}tcv#C7Y@ zctu2m+;hmAi?Q3EKp3B4*O0h4j)&yB1CLR$+cmcHsqXll$My2J!>(pfNK;3)$wWJ) zIZCo(#iv-%N&fiil=qM}ECw>JseQjD6O z5(vCF03dCp~=^nIIOv$rqhFKP-1MCr@E);khu zao$|a?)QcrO*f;nDuv+{OJ7TUZ<#+S2drwVh58JAK=X=r7zZYX+N>H(A zN<;hZ7-)Qt&oF&>&wpR6^D=I+U@2LC`#JR8Z|jlUpAH#1!?!T6zv-LR0AUm$L?H-q zc-QdU9i5-Gto}9ahaJZ4-;QU;|MMRd+Y_HK9f8Z;5Hmj5VKMPa35<}gf(2v(%*IfK zHLZNW+OV4%q^Jx?5W+B}8JK>FvOtEC09}kESu)g6^~+xTGm*7$KD)NEhE z)crP@jQRfm4mk$4&pMWyqDs1YLZrBxwxplpvGFmFJolrl|M~XMGk#e@d5^uu^MzGN zl|;z-n$M0-A?Y%M{&(*GGd;LBJB7UKpRW6S^+5JuL{?U%L?i~H5&=g4$D>Cg-yY2i zW4Al$3`nqoF^@rV1tD!P%fb%iGjsh%lI0Kb%n9;QP$mKkebTslJ6IhB-}l4)|I6#? zAMXsO4&q@kWCec4{(Aq5fmZlo5Bc0ZjmS;F|IPwA%WP&hFc#Gn%8-Amf8+-5^#4^a zm-qe1em@4P4gJuMwd&%b&_q7J`+q*vp0F@nZIlK8&k_SKpb($s>ifPP(!?X(%*pJI z@S}Z1lXV0wdF54atk<=uKkgr{-4OEEBtAdgH$!W%xIe?L0yxV9eh9pK@jnC(xWr(z zUI(}$WkQaU1C)XJ=sehA0*N7WC>Q?r{+D>1^uzl6O+wNdeS3`d*MH7y-bi?<(e%*) zbf_4Gs3KzU{yNiq;=?GEXoQ#{q>{Eb%40(;D`Jr4pKeCJ_P$5)Miwwg&ULCecDVkRXIq3IJk7pkQPM21Ymb;iY)GIi`3_xKYH>$-QnW=bM+?v&kF51 zR&swD%;B7_ggnpTUNG%r@%=OH_dUOS(!zVnl|uvD@VO_6&BJ$mL99K0D_TD94R=>b zm#od1UsIL7zo>4u{VE280vp3*_>-K*D<2zFKaE${+pV8G74wr8Eh9Yj^|5kIIGgx7 za?4wMm$YLb-roCtEH8QV>zsIE8vf);Vw9(i2u z)&}jN+04&T(1bU3S81WFH=6cByMNo;e7`R~r(ruy;be!Oz$|mSREeEbcXx%&R}(4L zAD4bJ^|y4=-N0Ne($?#j`H8DR4E`VSW6V7NURC?pNa6}UP*o}Svkx9ei&x{y@0CW zKay(-6XmaSXlR7OyKaP70w98*C>y!6`B{2?7vb|d*x+xhnY4`(e+oz~%g?Y{YZytk!S z6L?C~z#zNC43Brk6N&=|cmny6KX3A!-Pr>Ns00!x zci2pQ$i(3fZ}Tef+W0ST=hq_L$5lKbXZQ7e4_xxk$EUvcCLz~9z}jj$mD;C zpyW-DZKiWGkg4j1i|JYDG+~*A_-zK$`ey)ODPDT40)n=mVJD^88m z>}sAUZh}Gkmx|7J&dgTY6h)S4jg@gjfm^X_&b+sa%})ia``ym%d{@7=v7SE5StM95 zc*ivs68#F&MtA;K#xKJ9zh3&Q4YBcE9lpI8`Yy~vmVCyuSBmtjzOWd)_m}<3y5c**VM;P9zRl5GoN_z( z{>*VfEgPQ5i=JhifqA!iRod~D<2&n_kysRkok&^i_pM`j*Iaq_);iM3=YKzcY*1QC z*!j1V75i6jUa{2h=gIC?-yE;wx^y>;%XY>4pEFf?Z+s@^K zs`}T?-{U?z^h|*63(O0wd$otx=vBPnrYugTB}%y1u)>^)hqm-Iv2>i+q~;kuZc(s9 zTD<|~tL=WTk51IqX^P|Ux|w~X`FP)*{O~MPaiF%z(wE-S@4LZJ3GMfOlIwGpkB9h8 ze^<|Fv+v#+gl%S4b<-f#fuadYwBoFs+GKa=EVQ=^FQe|n<6N}TUj+7!_@24VhPA#{ zjP8%UCycR4_rvnOcfR^T{Bv{V-8IKvBR0;OXTC%wYO*QXILD@#&11K(BIWY0Xwf<0 zjfYxz%0|Xn!zDNj$7V4H-C_!h z4c^!ocFT;GgF4k#w%L`0Q#qc$1T@3V~E zYa5?%0S(PCV{qIoAOj(JOp2I9kDGu{WgQixA9Bg8%87zk(OA^8;HJH~-3(E((pGa- zcDF0-A!+%&e0tD&!@?Hw2*N_fmG}HPZ`VWSejh)}@HIbrvHU-_oHF|#-fbs6%h?Zm z5Yv@HA!xQBd+*DpeEaJf&(C#WC&x|0)FRVG_?{Sy6giuAEfCSp9;ZrXyp=qRzhL`Zz-)NHD5G4L{Sh0Q45+;!m%Ko_|~$ z=G;x(yJ*vV3l07}HF(Y(N|2H1nZ)cqbUnm)%~Q2B&&$ui{9X@}yi=gZx1QKwU;4ycX#741 zT!K0t==vl7^r%GXn-g|yO@fKVQ5WDv#heXgd(pB@rSkqL(B(hRMdd&!foF; z4b)<)DA-ORK?pxB38dk9$g_J8Jvnb1>!wct)(Tf|gr*1j|7K8d`(!ltebZ!y?AR8v z<1!NxyUe%RIZxzpIKPJwEbh*fn#Xi8a-bZB4(wp&TRd~juxVHO*)M7@sb3r*Z5bpo z^$yLeq3dsme~-8N@Ev*^)3f#SdM##W&!PVT8_#EES6^{hl#&8!*g&e;*wF|JhzDi| zor1U4!}!Nh^9lYqcMjCsnzIwrt1*R2)^^oBdSAeP{bq*{2E1e!k9^RZzwe)XUGMUm z8;*Ig8THhYMFI7-+uWnp3nt3$RC~?`vG*hg)dhYVKDeF!wITu9rhH_28QfY7qIBYTDd?He|wi*!i~%8^d7Qssd?u-hj)NSyX4`kE18PNQjGv&>-+ zf&go34^;S1Clh*5V0viOE2B5;};c5 zSK}j+jeWA?DME2BqVUt83+_1?mm9+o0;-5;0Fe&sC~=Eo^U~`{cjMHh{ib_l*%|d~ zx1VQEe?1Jss7IL|5Y{If?I)xk4e}s3vWjRRCiNS;o(+z z94O}#u+biv9c%lHsrY@PuF?6AVMC7D561c#9j${PgpPLb$ zECu(|wFTHR3h!({<3I7@7VbMMBZRKP9(2E!G2Vp$fruP=0x601=TV;d#GFplU@Jx- zGI;(R9Kaj!Fg79wuWY+7TsAYl`Z0R$UYFwWjzxkIhE*zpePKtWTR2RX_U$!A~{gjW*(a}~xv``#bi-*5Gt zE@k+}2b@R%CLwsEokZyMAfRc@+?39rEYd_C2}HrX78;lBvQ9+BuwClN9B=1E+)uAM zEP6(du0afEbh!<0Opie?zym%=b_1ErK%Z<(_qY$b0iY+G#QFmwLB+m?IhpJE0h(i% ze@+{_l!RNhm=^fOnLG zS)lj)x^uC|>&|Nvws7ieURuM4WbK)$1`7b`vn=+w<6wGd#gQQR$Y)B7WefVw4a7%% zZ)_w`5+W!nsu-=2nk>1*=RvKXR|LX|^N=LDj3u_noF_7vXw|&heINWsggs{uS`6%E zD9RU!EE0H9n1Z|@al~zRRvbhGw41EEWc>0{1FQe9*tnYF%Wntf8kG5dP?NrZ)uNB( z^P%YU7U|PA-{rt2-j}}c42)54IZ_AV?V%KZkFfgKN3;)1nefaN4N8c(Nfjc{B4h%T z2vPVz0jNcLvZxyplo2bbhC!MkPsovStH3Zam60TovSzZj)lBNa# zBN88UsD{v?qE!z}#78AnG=wUgmWW0Dgu0OqC3oWyJ_IJBAP%r1Z69$m+jT!-q{c(3 zCdW8()b2n%d?+yYcpAu+zq1m?Wsd@0@-1e)-Mo7bf&L_n55jmGUh?r9ZF6=zvdIsT z;i2#BQ@uvV&Y#)}4$#&UeRhMlDlo3BJId=m*B)hquQ*vgyB-97H}_y-j9rBD%wdBB ze&W8N0`ubxZ|rxO7AVJjUe4D`3?)Nz(yzj=c-sW(F@*2+$5K;BL~KDOU_=Qj<*jY~ z-Ffll^4p*NF9ONXqkQ4t;m`R2l%lZR=dbt6yUV;e2CsgDpJ=9;isp*;lu6mG?6)AA z8Hl!~)d2tB_x|)hk8JPwDLpj~SwARBRCS^RREYc`$MaZrA^W zJ(vH^+j@MlU}nbUeM@`2U0?^4Z=L&pS+4w^Y3(R^t4NjkK zv+g~9zgs_O`FQQO9=nlV{<(jiJUsCjmFC8L%yre4-+N|#tw))|`4Gi7lEN)F7s zz4zg8)8~xT(7dv2kdbI8E~V1TfplasWtav8@oMCATERnsjj@pm&6tN2sn7`v*xsP^ zK+qd}uFnrVY2dBufrnNQV=Q+tyX@{#ul1Dsha5i~;-gsW;E-A1}=n{vXFP*MG$2BaWO;W$FjSC&$}k z)Z&S>f&c36v`vm-#DDKl1mP&95x;)@`)F^>Z6vfRezbnc{rj=!JPzM1ZS`~(0l)$x zV2G-RNB(t9uD+l2aEJvzxEO&!|6(hRagX7mh8WN*yLpXpg@4!n?LdF1fLY;xms}X; zwE!do^|1yT_7wh|mHQ=;9Z;YC<6f;__4g?s=lOr^`Y{n7p#X!~_H#2b**PN_1W?Jh znXJ%kSQMYs&@BbN0=V#Z^E$lCh6P=CD z&3O2TgkUlK)&+PUp*)zCZ>7oc-Nx&f^bq71z5zf|xyC!X2RZqeAFjyc2VS0+Tm0*M z8ykX*d4CRp+lu-_F8pafq5Ic&S<5T@2hT_!b`Dek%eG?7d1B=P0h+uZfBDnN01%)x z|F*3maDB2dfa?CI4ulXZNsJ-=es_yemS*V-^p-vI@A`YW2YfM~*59uW!|{?1kkZ93 z#E~4CB^@;cL{LpquG?%GD=jE#j7V6ZZSlXj4Zv?$sgeMgtjM-Kod^ zfAxXq|F2~AuR;WVpG?2s^Zb8^?-BHi5$(_UDE@EvzRgV6kP+o@@nEqbs=Q!tm;N*X z-|gPK@~lqSl^wPx8(Ue28*J*Wmh4veDwXrHW%iuIAa_$ZnTpzkAxTl&T~tL`%2^$% zmECk0%4d%kot{!Dn_~t-U)p zG&{SC!V=#(Zdj+v=Oo^y?K{#pZfz@>l(;L!dA8^v@4S`KUF3Lnvo5c?&Gz3Gb^&z` zPP?lY%mrOsW*ghnY6NuDv{!ZL-08WO-cGZsxNXt8Cj~{orLt%$OcQN)lEm8K$5dAi z1(L6VusK-D-JB^*)>M2PPcJOxumM*XBeo`K=5ZO8bdyqqORq6qYn^!U+1nvL0if%d zmsdK}+y|Jf+S3mcTot~|J2QB5cN_xM-$68Z=9Nsd-MO~e-jAPd^~zwaEpa(@m^o$Z ztr>1fm$^4hS48&#+}b$%dUMg?#lxvS?ZmIIS+o?|lEH&`!B#r^dkqT)S!5A!i|GJ6 zdN;cCZ#&EGvy`C7dNN7O%0$}EqgFOEX_y2Rw>vLz*4W8H%|)FNwQ^o6zRccFlXsn5 zY^jvE-R)me?qgPA%ge&$4z6Uq(R9XLy|r&R;*w|%?`wFD&fb^!-9Nmi!Cs_)s3v9G1bETeRwF8pt_&E+qi6 zTJ7U~2H~^WcCxasSZlJ%b^(05xdd3!Z$Vi~9*<%&fpjufLk_A_gUn@gDrgAx~jc zogis&v~MgEw-7Sab(jS{>Dh~CRntzEcXjXhdm%8Bk@cTMBU z#BiO>PP%2wmsf-}y-eg2vn*xr6}cTfXM05?>}Z%CYqDtWjfTaJIn&D54h_@*&USMH zir7oCo8t|bqnmx&WC4G zyS~)H%je#8=Ij-VG2p@~3hh>S^6Y+O#i7aB_Y2N>b7( z)i#e>D5*H@n8%;rxNQ^oc*Ns@{CV>%#=E)Ocy3`RK$<`czT22XMD=88FI+pkii|zw z=2D8|NN8oXo6Z)`?t1o z%jN7Z&Q$06TOsZ_oBjX2y|6ZhOet7=eQGcp)lVE?K1kOrhcbF#dg&6KPr$b)WAVP* zAf7EmV2B;MAC|jo$KjE@?x&>^#LjupR3(WO!yLZvLgv|3k%QNf{H$={ow`N*^*#3fvq^aw zyLF2|cgOU<>AM%g1|gg)wwrvZwsM@};y0FwenbFA?!}3MV6wO}*ZI8=_>b+q?ho*j zdI#Wt(dsn>F&c3T=kNTNDlDrVpIC$q!6ci6O8>RN>$*m=x$az2N$Y#_=h<%Wfj1S;Pi}HRw zIqf3xrW5qkk8i4gJ6%ew=Nnra8h%@}4|<6EO0o8?`M!Yp z9`b_eF(|~=_avX*j=tY#nzFgzGo@yERcs@OOaKsMfV4)pfu?ehvQfLM&=}wW(U|74 z>Z|=zv{qu)EOrVyKfr?$s8-hah5-wKc*PU{5moHXu%cU!^H$7E5mL7SdD~(H#!UyX z5kf1jLks{Hj7<7cuZQ?!iO~=bIHSb&jtp0f=k(wEdrfl#h|o)P{QH06V?2I-dU)Tu zNJGM*7J%sYe|z8C={4Ww=T>tU=k4e4ngo(e5G3E6{}9GY0>7KiRA7(xxJ9&NN zcl}WQ9v9Y5Vc_5p83uLS2P5fE20;HlHT<)TW2L9{EA-18WGEt3ebN{3UlYDK@r-T; z2VooXxygtGfJpb@F~F=!AZJR&9-rvY(HDW1eCpc6e6bBBh!t-y_w)OBetLA_=wQC+ z5V7WdP`_Hg)vT}vEF%wjLp(oH##`$8>#Wo4b1td7uXioqij7>dKw~1gfn*QaV>3Db zv~iAnEKCMK{bnFs1u)FgS_pv$1BJtLP&+cs=s5-5zw~j1L?3JlIH3MdA6)h2TEDQD z`{ifw){o~@=K%O_qS29i=6p&?APx*iE&lV2ee{M*cYr`8!)(`;Bq+SIx5aJ+rBc{iz>%1O8_)byVQq6_==nARC1L8GJ60Pe2l@m?gRu* z<{4vh#sb-l-Q15|e0zFhc(cbJ3|7vsta9wu6iL%x#%si)xXb;vyv%+Atn%)$?jO$m zegEV2{o9ZJmrr9Kp5;6+_}Bl>O zWdslgrbZPsJi}YXdh`WMsXD_&2s0Gc#W^B|=Ny|$QMV1+OQrNEhU%%r?*ooHFz>!| zZ#3A1hC$bjsmqPk)TRzI{&#Ko|0%7>mKGgsSppeoXt-Xjw^28c)$<_l@RzOvHdlC1 zs1{Q4%*0VhwIyl=WIMHjfwvj7Bw4*S2SO$rZRfP!Ivfoe3>c~yflMPAl?9xx;1}y} zXAGu}*@zogD=0VH6BAdDh;YyhXy#Y|3W$Xxn9%i*-hvtfjA#55gbX4KW$AOFV&naC z7dj90oEn|S9@`kkaFx)sK>Xu-kn8!E444KnY58_vt4gGiJS>C*lm#XKM}64<#8v!@ zgaY$~MjypfAY7t$f*fo@5nB+k!~F;hCr9!8WeRj5W~oWRJlL=VMy`n57hD$zXMFBp zXuz5QKx87}*x3C*_qq>8fJ4TrI3S-;wXapQ8na^NH{PbQ{Tp$sT4{uI6Q7>(dBan2gh^rvJBR% z#r~xYDM0K=AQ}rV)DUxq!*NW5^N(ikk5Hn)7TW24r;a33GZ zs2&is5vUyR@AJ4{y0`jOppT|15HM?0!1z7ayJ0h1cF;o^F`I}~!3EpBoW1qd5_e6L zh8-c@G?3Yce!0Ruy2+&3CwGMHs&33qSQ*yX3s}5rn`>+<1b{bIYIqhBBccK62`zBuDIo6a$e>~RB~pd^kAIn(B+wc_AR z7{K8?Asi9tz=7wc&ikTi42k8gG#$LI>cSp&@5eoF334~qF<8xWI?pWg1C7nh%-vOD zcZ%dhL}Y=xF_O2Mc+A^buGb)L)DDp4JFq*UF_2hz>X6~$@qthu6at|RQUR1gKrJl+ zd!Pufmkb;=(yjOW>z=v7+0^d)>&14eF=qs6A(Io$x;|d61DOvk2`t1x@`qh@uy#PH zT&W90YAS1`wbIx#y;l#zcTX;{`uMhf{yzNo^_N=?`JDWpFb&4w1di(5ZZO;@ByG0} zO8&YLlFozE&QtpbawM~R#NP315&HYT+u`N@zfAZ3AHU9QgUY9Qx5eknvcz0EVw{Wm zBVhaBN(N2DX_4R&F%*wNh0GD)Ek%J0R)cH@FOpV6*HECLI&ifv86NYDy|w{V`9Vc51q7%H|9C2n zaqIn>4ZA^kzgNDOIV1a=OhRFb^0lyH7) zN5P$UVTn=x_G0(EZwqs*B{}&+sE~}n zh*$I4HYf-rhs=xuPXW`Z;9WtpL;8sbVn#%Tum~(bOcN`W{oxa7;(_`ukj`H3n? z!2H4M^|Jd{tlz+A=bQZl&g|V`|1#!88L7kd@#<&IykEK)IrqJX+3&|)>dU#e8n9f- zxuqJKv(0@A8>Nc zzEy!=?d+aB7(?gp!G?xS z$IJaxU&`2Hb3%DJF2wd^Bu#O~<{oI=9!dYOumB-&Tq^^7Crge21u`28MFQXJ|C;6EHmd#~=3p>EF_}AY5c{;Glr_xSl{0M*rl?!HoYjCIF-CU>~#cj|4a=$Gy&k)Y{w9Gr4!~KY} zrYHq)4^4B1-CvGgiLc|^GgFp?Nxnf89;3uW^dx!85q%B6;(i{Rc(v!y0s`bNL;FJV z-wDev>mToHrGES%6L#61<$tD$b6L8*zp(?e{^|;il18`)M1)D?aY59S@0ad%f$4JY z_P@PX5~E)&@<}tyCt%PqfgZj({SOe>+m9~47sH{R-?-`-z56cTjH7qUN*ZBx9>$vYh30$>GAer&+FZ~z;2yi`7zwRDERtl zK1hRnY)HwEd2)*v__kx~`mKxsT2&{h6JM^WV-+ON{wVeKY3FIGl#{*nt zhS1=nByr}x2H?dYghmd}1Us{Ce>HDwx9$A517-^%{<&xT5YphRr}dE%n$P18Y&TCH-1sfs(ApHpbcC3( z%5^y1u{>zkyuMM>fs@IGoYhwaA^$IEWyB&*6{AY~AP> zD=G4a28})?nMEZfvWR{Vt!vA*4{~5H2tsCdz59*0xn;Mu)`_Vrk+V1drO~9=YEN*t zT8HYGzMk73RQKn1zs}noYT3c87PYYe@uRQjM`DQL`ZNB_XiQ!m-UpHXKC9d7?zsb7 zU%eyhKKJs3EA02i}qf@c#xb3fDzW}D z4_tpGpUl+`NBGxF&D(Xj8>UkKk>z1)`%p-VhoYnizbF&{p+rOdfAhc*6a)2vRM5dl zbAeW%5Lda1Af>HBq5jec6odbq4#n}5e*iuX0g@ZYVZ;3x9)Fu$fd8<37(ak-wF82Z zOZkh`kVnwt%K-nQ-e5X;P-4hC{!E|wwZPH2WpQ3Oh+2pP1VUTLFk{~oY{Ux`k^kU- zxsMOh;0%f)viJp-8LF{sTq`|?PwK3IZa6VN{qPHqoEl&FdFK!YfI+b0a29T&yLmld z{0cY|#P9#QG8>1{l!0J?T*$&;**GNe8~$05E_U&pVg@Oj_p0HG}|Uuhlh|sr!V;6AGrP zF{2P#mT59&&>Q0rNq?^s9@51s#E=oZPlN&g7uh~A8vs|z|383sOAwdSU>uk(%u&~VB4uCz53R$pX_+)h@Fc9zh z%`ugvSb|Jv1Z*d8TdJf&31P0`cisY+KxS}r0WFD)2p{E5wQy3+>ZJep{Q3a|Y0l=} zz-ydE5g{|ghA1`I-d6?-E0#Ez5D6krOw}mZ6f-uN>La)@7*qSt++qlU1@{;P1V(9S z8<49NLcCKb2<$l`{~l-J-}C>e=mGzRKS;9g#&G~i?y2ebeD1p7Fn`OIBXz<5ujpv~ zu>8T>Ru%H*I-i%_H^y`OJTCfnAtwG$b<4N$kMe{K#dqzm`dk-!&dISaYUS}xF*|%{ z541$}i*h33C;CBD*2V|#kTocN`4=TWWUG*IekKM~Rb1y?_P4NI{A2@? z@`OC0M^e3Ed}VW-5DbMI?#?fyp6OBeKnJoB^^iS06iPu#2~@#1le8dh0pTO>k?RJf zc95Vz=8x!clsYy?(wma~aDHgd$9jJAgRjqF?DEzv3Ew)HC%8P!>D>q?oBp5o`PNAP zPww1k_WZp*)7bp)`sRCx*#55=_v*!95+afi$d89S(4tSMUuO*D$GEnK`K5F3_(=Ka zjlW)0kr|W_FhLofUb<1f`G?%V?a5pi(d-H~aM2{yPn3qx+gKw%zwocUAZUz~V_tRC zqa+4j9hj4n2;%?s=S+fQL~>t+9Q3y{Wwd2}%t*g;PHY zuqj_T10X_>A89J{0knh7?1Vo81=JpJ9xy#etO4%3zlQ1nY7X!nZXh<6fH;TtKx$5~ zx`1?<heC005B_A}CZB(!MsdQz)Uk_d5Pw5$_Ta9=_)v;P$m(z&{@El%|UKH$Bjz z3=%yJkT4JVd>Y_2!Z-;ChyxjwbD|>o)ww*KBV1ur47T1Wbx{12WAar{Pc3yRl7BLf z&2d;oItN@iIMwBS=s@KR>uw+T>iO?_)*nB|A&So-?~vt#Qqkv?FQv;^?v{KD*D1j1 zLAQyIs)Cp%B8I4{Vxz+xnWCtvA}E-sE%3@E znuv;~2&#g7q{*tPf~YD&S(>Pl34(~CW(ck@$RetbZG|;KRFF|kMFmXML`^i+RZPWI z1wd5-iXe!pb3*!BtQIOFs>d1(QAIaOb4rM)DylG65LGozMG;@N#tM>eOBkZ2YLX_Z zV2U7;Ng$Z1swgOmX*=drL=?qU5=A9N#gP#wd@&}bX`zUSAgQQ|B&rG`h$5z@Rtlml zRtl=Xd8=nASNb&%gO#dr=RN%jvb}oJns-nDVg~<}0ch98lZQ&g0NoKh{pA|POhD^6 zM|m=}1~}Ivwv@zvQA1s=WW?vGK=?uUL<>by1O{G^57s~f!a#NagQOvZi9*s+(x?=w z&>$Y^4223o{qO_++Q6hpl95^gd}KhS$q&jO=>yCGw5W|Ml7#?LoW^Uuj3h>Z7L-w; z6@-xjB9I@93Z_Vb)&R*sq5FM@!3@TUQUzcu?&F95yLPADo{xu252E(}F8WE|P zN?y`GIUl6FUE$~iC&Ee%r5!;+zZ+k9e6$bJRCt6+6+QBbXE+FTjX^^|9LRei@Rtcq zLjBO2%_HxIXNn}^4mZtwaMh+fB;#!M!*hsuOF{=QqHiHer2?iv0gwUq-DE(~D$vlU z5`cOU?U!f|(sF&VkkRK3@EVqoDH4$Jk-gZC*4)`eDs`2~`=jlhOWpu7eZ|G9B9tg8 z{9`xA+iGYjRA~fjXh3(3?(pv(+dm%KMGj#@)5|!4Kg23zKS&IeazXK(?1NF-A730* z{xE^i1@C$k=tEKLobOgB|K3mXggA%ql=_)+Sw1QBfK$oTlLeL5JN$YE&m{g5WcfiU(N>`*O z^o0+)0QW+iNPVIy;}tXqP^EXl1N|T;yz{+~*Rmd$1-#k;E6G9aiLFh>1)YrG5p~I3 zz#sO+>uMiE@Bbg!*Sl{NQy=pyevO0=GtW8Ql5}Hnf&w88V^k&PoV1w4rimnyNe0bY zf##bC1^>2iXjM~VS~aVe`#EV<7bPsLqB2_1|K0fHT#-WDLwWj-U?0+ufnTO|d-wTo zFh~TD{#iC97yK=Irwu72vJfvcoPQpFzzU>)FYUNBbUzW$H~f8`dpTflkcm-UK|lb& z7sLYOn)R>^aDAJoKR6c(D z#ase_AVtE#fY@0=bff?ce1$QMrjlvbB}pG7qFVth7KdiS-tOvKi51c{*LRtV6OyfN zoWfR_a?5?3UM(aGoaQ5&p8pE!uPZzrQL#590*`f1^xP$#(Zni?e~$qEJAV$(F!KA@ z=O$Jk_bRXZ-njqo{~!T($05DO3$<7I>vxyoh-3W*r~A|*Kd^_}@w5Ey`S^S^{CIUS znH(R5w!Tn1qNyLfafVT!>BnjR$e|_n{1^;)+GYf1kNZ{W3xe%XMw3i;43Sk+`C+)* z`hQqLwa3SD&?cL9dr<>UzuEww}b@&CVP1pT{?C*?c;QvXveUUy%g#);$-Z_H2$SY`om zVGV~v9w&x$NeowTTYM9I3vIi-7Xh~0|0^EJ)7{awgFeD@EPw1P!ASfg;{*8QW5NL6 zcNr^rvm1|N%=c>pnBWM7$2-J?_ID%xh){m$SeU5LiXnAgmt;_&@BC1DD4-jQSoe@-P0m9r%s|r2sAtr~n5v5*Q>B1|xnz7*6px znNrbV<;92kL=1sGpJ{`YntsPGkJENfudR7_<>|Rh9iQUgSRY^H7vg#$BOvdzqqGR% zk)S`}KkPJNJ8@uYW*k4|Q8%gatp;v_kb%MCZU_zrew?-!gt`U=(7{-Mz#<*~o*pn2 za9m;`Hdh8U=HMM`39#mX;ciF`MgPtcNx&|n7{Fp8yD%i%f~#cKAb*{|!b7D04y*wy zBf587zesi3;156thXZ)4fE)(_I0cXf+R?beCT94w6ZWYr>U=-KKwO1tPuG25M>4n0 zzlR5s3R{0et#S9?Bc3>NpMReo-`-c@HUK>+uW{X#y*#KY2v2|Sq`M=(8@-n<8qx;4 z|2E<9@G?Rde+ai170A19=)Ax9+x8%#+nL(u=9s$xFe@3E?Jv@AF~=%bq4@ui<6r3* zW$yNWPY-t2 zX5XPlk8Z2u4~=u}`g^+jI&0b5ah}en1uip@mjnJj#U2@Y<-5rETXFkxey;Hkj6(u- zigxKox^tb`?d+-jJ{n^;@b~!IBkco)Ks}x(EVhI2hp)1LA4WiZ(w;0J|1_b2ISP>z z-zx10oCFKwDw{^6O{1&CJmI zJLtJH!2$wkWok*ns0i=uEEhLr*=_txvb$e1d4oe7r|`~(9>0S@*PDBO{oGHgcYTER z{Ip3e)7#>gC$CS#Y%yF;|X4z|scOCYnx15imk zVwkSXgW-H-=hwr5(~b`S+PR$XKKDKlX;=J9J$fM({pV3UpQQheC8!?X*ere`n6S0} zFX+BEF?P4`oeaN}&oPUhS0OJ}1P5If_?L;(pgp?P~e|rd&Huo4Iu5Ul-i+@GmF6 zAItAWr<_K}_YWUosqo8yz~~1&OC7#J?Ea>Q^LqAwOb6fN)A_yq+4B8-dY&f`R8<2Q zLojl~Z|>`Y>(gw&(HaN_@}<@I1&AvTK2fu>AP%@ZJvKKhlccjJ;YW1e*FWDt)3<(? zczdkYLAq=DZej!l>F;q~+T-WbeV0c1Lyg2h=qJbeZvsHh79dDZzxSwElhU|-y>-a) znN2o1+k_uZRj&@u^8PmN-=F6Vp}ug1}NMQd=wXk|G+x#7$!+HGpnx3_;d_D9x z$5MT)sb;$hSw5dBYU{E8ef~T>pQqL4zCV?pv^RS_zpwB6d^!F9i4DoY@12|vIp6tm z{j<;Q+-~o{2MLS;TE+eW55$fBHA62+wUVlp6Z7}tJ$dJx(42Mr_2W0+8A>ssa?(YT z2BiL0uh*HJEfu&gv&X;F*ZH~44HD4~82)AZk3+BZ-|O%BJzgib*PYlHvV@cG<<-#5 zHG>Tc!d&OjD~I$?hO5CfH7oC9>!-pY@SYzwZ=!!f{|Wkck1udK8@M^2=UHdt@cN;7 z=inW@8Ru#Grv~5;kG}unQ~A36u81iu%7|bH-g$;Uphw#inXUmFz6sDx-ygF5-$XyL zh(t<~%#D%Ib#W(!Jz?jJL~$P289oE$#TstKrBui#QTf2*c{zmAWN#)uN`&ht(jCO zUhwyh_BEXAE{1Jzb|*H#(I{etp?EP3M2Hh4&g2ImIuohjfgqwHnUzyyL=#X(wAH+E z-&-5>oDAX6h^S*Y8LdqY23S)!(nB&~t!;3`*$t(1;H-FvvkDk#DOAX9M37;`1TGqp z64e5%R76rx0S+kHK?^|w&_=U%#2FW29b(|q7D1M%ATHvV1W^>+tkvR_zvs~BvJd=^ zbXg8&UDXlkhQOZOc?qv>H5^H&f3$;Og-4uB=X< zJ8AUauN6gpV4ip$eEC`N4;}U#%c~3#A~Z;+0l^#{ZkqFuoDMW!1-~geDo~x}QxXo$1sU;gzgE7ik)+egtfrmj}mji1@!^eIs&TOvS zt=e=200)$4dPkbrUnhEBpnG?`X8Y_G^7~S~rKzB%)pY@pag5yu*f5280D`REnR70+ zlsFyN*D~hK$c63E($b1h#e2@@D%|U95u;golvbo~FSzKTr$$scl5o;iUPzA~b=*2T zb8Yf^!c~1!JeRaHK-;ixuSaHha?#qA+c1UBxeO0M?N*A0@FrI$)3ohhTsbK5zRm8P zgKZg`?m(}v=1<&L&%d1fO&RNbIRKD4G(_WVm8t4%3R^nK(@BU#T0jCx7>aPl)LV;r z4gwYg!*P>_&_s3|k>%H$P4vf|sNY@hsRxeNj67Ak4FD&)iSR2>0Gp_sO$eAk3UI@0 zF#DNdA|i-($*cWKb$#6to~`+9`|U4+#{AILd(^B@>(}UB()ZtUCmc6Mkj>5N9fvy< zyCRzvyy4}967I(6_6CoBf-gf>L{pAxwo!$ zFwm=<-zjdL333Nsmp1nPd%5%GFEL&+>UvM#i|V+2uQXAhA~Ce_g2TJmH8`0HOf3-I z3#cIIkL`BSVfiGLCgSnpL5Cc*Xnh=e>u}@2fA&f>wL2Q3zXm*11kS8hqt! z19|MwG@e54R_B|#DULmZn+V}=$kEKU?M1CtRpyMq5@OxmLawI}(j#r2d*@bVUS4*p za_)8kmw*?q1zVcbDcy;UZz;A0K4+aw&dwRnRihz>mR2Y#LL>(JgBa$UxbPD&P!%a% z1BzATyhPv|I=Mh*g5nR7S~i#ZP+%6+@sxzZrz+VdfrwMaW!hV zUJV2agjkz9Bd#n_S<4m^RoIuJ$ zhyib0It+8yeush;aQt{f$9m(r@!z}RW@0K;6hS$6DwWrY8+dbtlqXj24feWL1oodD z?Kzo5o$S+if@O2!`74|@tcuMNv<=r!I>Ufaxy9~Nr+3mAUh?NOo~WoTqk&6F%Zg#y z!!x!9DO}9bydwINO$^Fu^|dxTtllECtURQ}?({J!Ww)XtT2Kxdk4|n!x8mh-jH%~B zD~|6vS{-oRi&k=;Ip{we8I*wm;3OT*K*C`7Sp_jF*jbnT4K~|39^w|}VQ;;-89lItc zjak+}KvgBjH^7Vx?Q^G5>Akjy2!gts4C<}S;X2M*L_TLt3)n*3(-v2KUnUr?b_Dx< zUWeuYJl1IjqeZ>V-x}+g>|FMJxf9Gj5|zgm%9)zJirel7@^A8WJw4Z`;s*9D1?`s} z7F@$=-C)<1gK71^uJ+yy&;i;xl)BC5Qt2+n(FRMF)5DNPRx1Oej#jNRZy{$*4ek~Z zyw1AWRt1U^EUDL%vXVt;@DM9A4btbYP;5sn$}5^X5{ks_>#oXGHGrT2j1o?mgu@TM zkIj7d-*;_{9$>B3cJ??L>y3`bdf*L?N-#+2aZbwes{f=9PyZ-;nffo4;t4~V0}#!Q zP1lABq4oc!@lCmuJw@b+ofW^z-@~P1YECgWVf=6Pviq}?9_V8_LmxU&I!@l-UOqm~ z?cKU+aE16(fxD#$hqiWdl7rF~i_!<>{PT$I?!$?8fY@az$?!U75^A=h$>^JZ+7rne>C34~(vU;>Dn`fNihWYlp+X{XgF4_1d5E zsy9SXP^s6})GPcxU-ptEKxmvIgu3UtPw^kcBNn{@a&lEf&OfUF%>oOyE`Wv z8|1db=asD+_)J(kQ6&k@l9W?P@|Oro5{ez9Hr4=AHAN#$#@lQ=MIk{%OG%J96fGeL zEL32zNT{0L;EO8?GpAX8HSM>4cg|nFsR5B!zI*iW?&&A9%+tKvJdK1TbMa*$O!B`5 zv)^lV>#o}wl8Pv(fS@8;Q56u7Q74S!^ZD`c;ih4(y_)sN5f>PH6c;p;LMR-74z3S z$W0}D;;y;Z8=d1i+GCTRCMR;^55x@~$0x%Y-+!v$b;?Heva>w7pB;Dcelwk8cq1F* zGkj#-)DkXuZSD1StHYt6hx8fsZSTK+<{!DIc7^BH_;c~8IAm|Ve)~P`1b`^b>&@<* zlEpidwO7`|E0Q9g&#^bV5(9;Gx(o7#h2`$+`rHFa;Pf0T`@dl&KUzP^AGyAr&v%h-DQ~<%TH|P*jxA6gS3G(^%9L zF;Pra5lKnB1%r|mG))v_ITRs9P_!`x_u!5ossol5+XL`I^LYB%rbE#r@8y_jIQFoZ zgww8V)ijWv97tAF2?hV*-~BK&lh^X3h9aL7ojz|Kch%$Gfl!ft4+vv9GMs$ur|0dS zAGy9PotcRbbPjl?knG4~x_`5qJ1&0P?X7+6Gge8@ojIj6fgUWx+2I4+O}F0#3W%Xegi{I{XXPZEG`5-*HT#G=+?q}}9@GS^_^Xo&V8?j^G ztK(8s5uNP^<@U|;klhX#dpsfLn_Gzpv-4$je+)Y&JGBGcKr1_U_QcgB^L&$Jo?=fH ztoM8Ww^IxnKF>do>+tw}e=oPEJss5nV#s=YsBn{?>vOe}c!H4Qn+j$b`m#1XConStpj0Jf6rYn1*ILO?P*B|f#Joa8ymG|>WA908 z9+v%c-DG^NM2cr92H?0rL;yow0KoCP@E>&Jo|_y7yg%jnCJP-4dEprRXXW3k?uqzC z|1P|3^S7OoNO|W**wM7a^S8sDUyUDdrBG=Uq*Q1SDM3f9irgh|JOFO6fCf+XpTG5V zlu}@6cdWl?Cz0^UK?Vx{j6bvV+x-0c?)&bxQW?pOg;BHw84(BB6i;tY^tbl@oHOC% z@AQ}cc7lRv1>6)GAp&cJKY#6Jx9I0l|LCsajS@}!|8L=chud8qm58f9&Xf4SEfzsP z7@OiA>tc|is7R403Q(o08c25}$qa+-hf(~bcB&?sf~uOTW@)LLizqUT6V^o95dwi? zQQ{s5dtVQNh#%wn`syV7N{@;D1}o2}W=(N-`tf1pQ-S43e^LMqlvhlZlXv^NWEV-R zXR>Q5EJ-<7;Q;6_iUGbd(~XTjBnhJESl*BKbkMiysX@X{Ua z+MRjRfi{~z3TA5K3~5U(SMN&u^xv+#Wa20?Jh%62t^-Jfi)>Mp%1ceXdyHQ>Nu(E> zC40bO0(wm^ms|kPJOIce`0=L~yF_6IAQ?+5SR3Ua1C|GxzH_J@vpeo)iigG=sHGj` z`>d!#c-|f2A?vw-ZFSZu))V^c73NHgkSKCMXcRRba2rB2QcxQ~Ls=mDK<7*m+84AT zv;u7^f4n2SAwX?$BmQs!w7vgKIE3jxJs1zRKskcH@RuPCrhvjL$`?@lAniJo-ZqK@ z!c$W3Ch!+bLupbt#WHQPBO;iopfX<4nI}jCCX=<3ycXExU(XN^IR{duZ$8+`0)RA0 zPG&Sed>W7`K|yE5HMcs=Y$ETM6;LsfuraJWFem2B*08LLJwB8={|mUxtstk(lQ^MS z!vh)14|Imkm>PfN%ov~nnVBGz88o0wR!%~c1B9RzK~C@k`N*3=OUWu5<|1SP50)Z7BW;a47)e2e;QuM{+El5QCm(K|cR(K3TiT4bUwO_@`;( zIZuqwKFb}%OP)SfLHl@>to{0FTYBJEq3Ca``5R#Lm(Lub>0v5T(hVvUiA?}B08r2k zDwNQuR@B{BA5f*B`FZo1!`2bc~d4i!oSG6jQpO-O$am+;Zvr^-JZ?bB%Z<%%i?eNcxC z@7jQQy48?4Oh_p=l@#N@orEsLOX+=myscdCn4!CM0pG#CUDZHFr&2vAXdc&&yLX>_ zHG#bMalcfmxDp@_{Fsgxti7!^?9X=$RN+;+BFLnXh0sg zHg`$o22wz^NchG`9x^|_v5wGJS>6Lsnt{nr2tMwd>Gxmr0BsJ^sPQZPAOZf-0P@w!ip8`@*8h9Evx`-I4PxCGxOZ*T37- zt?!p3mp{HRo-o|v9uuh@pmiP*q=WCWD5a379n%4mOoS@~bUyYI5I44SX~G^%-68MQ zI$^>TWPz5Gl$B5voi}Q1!x(Lpi;*-l6B0W) zPzC2<{FPWwbpY?zu)WLAnD{LU*_9k{@5^f1cE9NO)n{#FM}M8VUv{C~wD?mY^qV z`XoHxA?=;>x*A|(`k{~0``M1nIDY+pdH8#E@YM5X2>q>3bR|VTNO9u(EAEzn^6ZCA zY2kq36W$S1(j_oG@m?Pf*p_nnnU=8;;{o|W;k$*Q=SXb?v>x77tOD}-P`0btx94vA zr_bU0+jLE3@lCwwsJ$b*g(i}B_|W_}EI$sYVgl~hmz0NwX_7wrU93`!CR5fa*_OSx ztb47du_-YTJLj?{kcp;&G{^x&*AxxeFgwv<4=GdY$)AoLt#J#G|Fmra8k8~s?Jwj@ ztL>M4v0vRC;R-g0g#OuqsLSn!txoA)+7Fa>L)SdAxP80(tU65L?D*+t=?nPLntn_% zKL1*NK9&Z3EHjF5=QQaj46EZXCk**8Jsi!F~|I0siDWnBb3s9{l&#q~k;7_v!4!X>E=&y@+1-@{ld4^vn0p;6T*-n1C1{qf8$A-2v^Lh#L0DW*^@|b0gt# z4p0+(sq(dV`#ZGybmPlGDnH&M#z=ASs)BNeYo8g8nF-{8bj6059vUvq52ZaYqVaov z+zyrDNs76=3(&+m-W6rCV!l!rrnT!oGd|CJ~(r%|~ zH~4*d`cIa>rL<7~P}`>C*`{zi_~6j%F*1Z9UR2Oz5cT_7iTzPe>3+Ffxs`J+Ww~jV z+g7%=wXLM0w^wMda==js#!oS_M>Q6O6G-UEGWb%!8cb zOR+y@X^;ZYurrW&geCfFL;S!I=zn+sBksK+=h(m7_o#mExC83@!(PAj8-p>&3;&<` zfB-k{9B9M2lD5}vx^52AkGtPjB0= zXAUOdul*iE>W#xDVG5lCE|6|*mM^spjauUH*#ZUuLo`$rk>PL8AF(B64$db%3D|k zvd>TX+QUn&jPr9af`PWo=ZVC_IvQ&$$7tq5NGt^lw(-UP+Gqz=oUrKH+1$bzz~Md! zMzyE8&hs)cR4%j14rP+d#pLrTSgx4yZ6S56Q{EzgK~iJFELPdQ%Sl>Wmz1vfD$(bJ zRb|r{+c7zgW}Y>dgM&vd_k1AbSWYXUogG;=GO~({yQ!llB1{)1$t0RErmU7H5{tr% zXflvEM-p0gtj*A~3n5enJU9tU$&a~}iz_G|uJVBLhTSElwDp|tE6x>KIUDhAw(8n# z5nXpkST5;aC2CdcBO=t;S*%sCj1yqUyJ7+cAY{#8%hks3dce9jbX~EPbv$gG1wEp4 zD_&4ED@;JhI%_}H2uJh>@*$YxpVm;~T~85k$0Q2>gi8Lx5U#OV?`LqN#`{A4rU{WL zV|s6Uo1Ntc2#tUY4V)dU?=6j4(z6*b5g5)E2=R6bKxm6HaPJkx&MDD>q7l&+^QR}U z*B6o70!brHL)z^CzAue+&m5GrHb>$>;Eij0t|^I^*^CW9C>n4SGEJkEoZ@fs-~9Fe zeDUALiR5^hGkcLaF(7pk<^QOEKlpF+qn6o!rSiR40hJaZ>!5K|U%+ItK&K zzmFdgG)nQ|amnPaFuGtO(bi;jx$>m zK`KwnzP=0713Q6l!jMw#`WNAca@v<;vG*72zaBhyzgzY66?Ijy+uOl{lrHOxFKe$$ zX8yGGS~y}s^q1e37_1w^k?U)}pP%98I(N?;zIdnNY12YqQ#O$~G<$mX?`~gfTxFt$ zye&-er;F*=m`lAXoH=j9nHo&G@4o!^_2Uj=Gsg&|fzUC0b!KczM~-*ngT_v{)QyCA zr_9UnZVg+xC7y>|a{4S!P(hxQk6+%&tO5=;4SlpAk`Cr2f^s7}wU$@HncfXEwMq{< zDC&|D67cH;&sI8a#EdF~R{qzvnE3{+`vN_jyZl$c{&D`~OX({@!RXroa;|rG`1$YS zg8n91Wj4IU&MV5&K6;t_MynWFALj1^^d7&TY>SjkOsxdd zjrE@0{`z2GpV3dvBx#b;{Q~z$%d6$RU(i&^`QNAK-`C$dw)6ONO?EyE&+BcCrQbO- zIhWtV51V+Acnhw++VSJD`FvJ=O3AhXJm7}L-R?VuJ|6vxw%PxWZOAS zGCWyW?Lx30KK*v?r&uIlk0ZfkDSSv~9=#g`TItz|AV~ZWDSK`gN(Zc{ zlfgzfA_#5~sDX?{a1;(k7Pant57s!+OTxuDexk7IZj&-eW{PJ;9TpXln=drUS$yWn z9O{goZ}qu zi46Jj-K9rURW&O*;PJFaY~x33raXf~q_6InEUxQ)yL5X~GL}1{lH2Ni4^oLn$ogws z9v?ZN20IO)Plds9(=JSwd!thHILYG`OL|kSOFwCJ!X8V?zv8lV){QJZ_18pucfL+c zbF`%oH9jY~=Yh(g{yuK?;dVRWb_Et`+hlRaj+aDiUt<_CkP`?<>5C)|1Spkvm@kVZ zZZlh#hEr6ewvai&2ej?yXk@~4IE!&b4Ff4^3_cA;2(H=u6M?gWf3j^I%D1@jy1*WFn8W&$+@!xC5j}jI|jqnZvfWTrX?uG@?hG?uBL?Uw< zbA;A;B+O?#RF-FjW~C`cmwG}_UoW>EyZ7!VyX#AgzKv_MBz??}x`u_Zj(tx#-&`(6 zi%57JV0H8Bk;go7l#hNorPoEu3kFpsfOz3v_~NUJhzpJvqUFi=HP$Z7s!*9tsq1jM zoX^8kqpvo`s44{z_Bg+`1{i{6}9L86Scnm6~|_$L9s2N^YuB#gZ? znz0ovZ)%j3EX$3FKCW682x$tOY9dP$Y53y|`+OgmZT-AQ=6M|XFDCpM_Y3ox^v-EI zAlbS3_jg^Qw$ZGB!=xn9>jtw9EAjqz?)6#`2y)v)F|ZI zMpfoD!*HPFLSX?HL2m@P27U97%@eQud82BVK8>D96xQ_pudSH3q6anX+e-Mo^s?{b z4?JR`Z56l4)*`1WPBsooWcc)Z?y>rJ>(ep!*wCNMEle~ZL^c8R#(F&C#WngW>i%D= zRdHhdJ?~Fq?<|hWx;G_23bQ;7=sB!zU*{2w03X)1`0^{7^|fAp`t`fNf<&0CA`8O$ z^}+M!vYX_heN=Q=pN4U(FGte~wWIVRyP|X&mo0we5Q4=Jc^d>N4hU8uc$`c~BH)E^ za1-HsXzg{|JdRPmWKUzBNL_W;JFIwpw|!yqZbgvfF6CE49dJ75i<{%`z_~|(w7kb8 zV7tnT*v`i?xu>49xE?7UI})-v;4XVByY7T$dvv6p$_Jp@1kA5SI2>|z^U-|>)Ni`z z@CcsEx#EcDo_h4_M6T*tG(rVjQ+@lAMsDTw2ogKhhfPAHx)K?Wd&xWO%V{fd3QYpz zWR2IOY_V!4vn8~V%_!_I6S*$aY;6!h&a{4(2VYOA0I)zHP;M~Bx_)GE=uG!k>&y0x z{IIW3r(36UtuR*qZu{X}5o9%|QA#I^ufhQz!z%S$4tMkOI-+C!R{Hh%Pt7cxg;hOW zcAYiXM~@+oig^1*d=gKhMFV&P{(t} zI76NhYCH9*kW#HrUC8YE>@{L>qNQ=gKM8hSJozi2q$RHynIbIbHOXRmod`VYi$YVC z4<#6mA}<<%7?L4N2sG8`yNz+?JpAeS@>e~$8z7KYdv?uH&y2ZN`hnh99A5j9#)N8< zq}}b0-?y^ZxIS=w*u+#}z|)F-_=GIXB;y9Y?U_Pv%M%&OqN8CtAgz>zCSMu7qJ=3* zk%7vhaMpf)Jaa=Gd_OVv_D~5C?XrxSF(7_%Qe5Z918H;T=U(53hbPSLcZ$xlBX2ql zQnifg^^|nf?+ndc^seLD-TyI$`;M`wlGW3M^y zvs7m3@3QPWbR@Z3&XJui6!~3pg|*v$J90xEk0-}&cs-XAIq9}#X|QLGT$VAkygXf!ufOymolYr@q~o=2c|IA_7S)Tn|&sq`XF23RiBnv%e5_ z2Oc5P9VM)w!Oi`exko;Q0U5*O(w3PYRWn-#a8(JS<5drI0A{`F#kNoTzcU>ZU&f^% zk1F3`m{#D>K*4Z`v2cxV1RO)sq_tP(^F@Bz6y_^7?V8u`MavBtmLpfho4drZoruu= zt$u%(&!rz_$-lq5@`x+zTzNP?@#kJb96Q|0{UcDeNd*s+3CxP3UiXs%Ues z$OewMM5SESNvd9Qr-%;*XYXAPmuKzSE;IP;A3nN$?w#5s+HEjeU2af3?oYn8to4Ww z$2FPd`hPHnyKwB2W=|;ko|kjY-p3*A!ru*J4xuk9Z@E;Ig z6e>C+AlIJPbUXIr1CznY>JAL>l%#6pGI{5VBc1WiX1I9eCW}ap0nH~Vkvi?puf4tw zIdVU6=dN)7-c*&*)s~e%^r-jj9er{6n@=E7^Jll*EqthLr&_g$OO5fcenVZ@&Dl@Xh(Q}~n z@A2y3tvk#`c;`y@v+wb;X@W9d&N4SwPNUp}Zk%Ik`kkJgat~LDdEYpbWy?l5sUF}x zQCSh}dHqLMA~o$1etE%XGsPU#{x$S~`xduFbAB=PL0YPM7+r z$0R2VA5CVOd2COE$r|Q$!m{UlU4mMJwHhYdanz|tJu>!MQs`*q78IWIl3(#4l5^6=Nd_gOQ4dFqPemd9fr4`h>u_;;8aKvz%0E>qq3 zBbwjq5!z|cX)#gvK1@UCSx!?noH7)J{Xqs-oyjKO9c(JoyKmlO?sz2ZZwQB(Q6$c# zxJtL~snLwvZ%ujM6&O0Ljl1-lJ*E#8?_X=ztD)<*InNvOvRchL!#rt*@-tn24fl)m zKP%4rB}%g$>$^?oZKu{OqpWOGkBPm4-A~4S@st9!_D39#jC!k3u;UHd%}_G(JKvI; zov+KB_QTE>k2upmQE72{5-@|Mdzg5!dT~o%eYf)uX_k9tzkKuFaE(^(*TV4jy89US z-Fb*O%FBp)5?`k#jT7YF2ZO z&Dncwi)@`r|9tiQalq`H{OA;ZjDF`21|Asdib(BC5u?(V`ko?Y5=BG%SQUL=w_sF? zbkFy~lKi{OtNy-A<$FM{-Hc+8)xSjo&IsEC?~A7G`|~-*D)Vi8%OyX!LyB~z%0gld z-(lBdDLLn5YvidMC=uQVD?PR|-LE`0@1n&Icp$&pV!%gVCZFYLSDt zHM+xcmG^DB$tfp746asmDa|+?0D(~x5T#$_&KbpzXPfTFgrvT#`d+m!EE7H_l=X%v zcXhibcM|l>YL8yJSYC013kYA&7%o0lRAmWBl%CkJZS7EQ{4P1>|2k%ujAxFaBNGg;(eY84!ZfNw)Y#tbiXr@xDjYpcc+ilFi&4H?_D#us0_g?m*Dyq9A7K+BwqMAy%VI-uGBD8oL zGPzkBa+4QPUmQ`g@iUwkES70j;vHA7%f7S&)!KgL8QVGhe*wwd~itr~_=Gx2TJGD^^*5%(> z-AP_x+$%cXAT($hYY5B=vd1ptYaZYiZjD$QMPTFC)|#x~uTneI@I;$4BLeAL7+C}O z{6B~J{|E>{^ZEYfKQGY>`F<(diat-%+um_QA1G-8-75OEKQ0zb?^10IFGb`(<=%&| zc-k0nuq{8ErWyQMHJ9DJlAkLoM$DsM?RMYK8qfVhbPG&nN8f#R!`WTA=Y{`h+7M5y zOWBYK9sK^*sF~TJd=YlN6LIJQqtFjLajvxeK7L)g z`(7QaeZtglL4SPrX!LAo<_EC?MnMQLjIJ{ZvF%arc;n{%y@hw2zsvjoKigNwuM~2( z#n+NCJ+(V{bCwlr-Du8~+6FpHL8f0>UAeL@d*X$&I@AbgH=lqcJ{VU; z^1XBE8Wjs;E_eSTEsoT1#w#ky0ncKf>R#<@V8=F@fC-nbih=ZE@0 z$>T>zhn)1BVU!8&>WV*YdOABhD}{a?wLMVzO^SV!oA0li(*`mivZWOf3EHrmpYYDe zYvuj!C#N4-;pf}K{?*hVN5f^O^1bXl>R^+yuT{gJ;h{4z)+^R~$Oyr(hY7M&eji_- zI z`LD425alQMeooFw7#)1Mk-xGWjLRuneA718Q8i%Yhxn(WZ`7p(M{{&sPw-E=8qS6$?ZpLh&@$-&KFSwdMZj3>M+byNwR0FC=H%78<+1 zM-}Fvo%je50G~2ISxJUKL_~R!1ewQ*j{K?XL9|lGL$k$Ugo*65h9&rMw`}BzykMp+ zx8ZW9G8B-Js-RJy1b{*0ckkcG&DVkAS9Z@etO2hJAMen~1IR!yKz?^r2ZA7y$FUy2 zHM6mi*MA{>>%}bjv>{rmQAf|s1LL1b#E9~Q33@9~dF9V*2`=5RMGS+n9E0TL@(f#? z?L8h@QD>Fi(W|K$!@q5d6T}1sj?)<4im@~~Dg{X>8^tVm>wpJ-W1Ze(MUFSdq*Veb z@PlZHXmCskARuD@_4$wE{(Zp5ujTcff0|GYAijt$k_4g9QT|&&qDbu31(1qCNQ~nt z_-+43w#U!P^R;>Hd(6M(${wfuvHqDHeKC)T`2E)N9`pJCIuF5y^8c9#_#qJ=uG2P= z|8@O{pA_uLAN4+cCSpnb%i>)j{nPmna{-7+aX+{nOcYSP)PKS`vQ3r2a6m)Tw{x4Z za><{u0j>*cg#Mr?P>v`2?E5i^C4W;e7L;9Z2hfCl)XD~x*TDH247%mqH)Cg}eKaYUt+vBhOEERAj@AB#L*Z&+C-y7LS1UOC@2^>fISE{9I1SfQ; z`y7As69I46)OO>K)MesW>&?(T!e8UV7Gr)g_IqQ5JYX;h9fS}4Zy=t>^FEv^s9!G1 zNt5062(#q&cU* zG=JX`&9Izo7{({SkFid(6xR8xE@BDtZ zaua@AhTtWhpEq4h#c2%3f&(-fqbVs?$Up=BU7-FA`BTz)kDs}}cA@N<(;g{7JbF5k z|L__Oqd0_Fb-{jeHP#plrYQIEdUn2=9{UMN@9eJ~iWV5WzAK@8ZpzwZ$LU{h$0Lla z>lXAqh>Z;BTbK&S$V><`nsOl#8d1h30y`o(#xx~F4B;w|L%u$0@ z+m$l2^S_wCu=frm$Ojya#{E%4eMk(*Sa6aZ7@6N&Km4yA7lf+2eINvv6?wkxwfxG&9cvZ+@PAZv8ikjs@EF zVZMt!(nYpYM4sioyPo4b8b3}s*sAk7gK?|3w5gi$^C*KMAK_Yhy7 z?$!B)>*G7+FdA=|2i6{oFL8Shvn?d!x877ua1d;8z4aklPAO9mlt#+g&tmb7?m}cR zIK0jHmR|Y4p~Z^epfc?)0NxA|lBa;Hm;Y(}#R+A=gF0+^9RoPY%$bfNf)zgJh~KPHg~VyG+2O{2pnm*drh}3F z`iJyNFbCJ^_4x+AxFmf(Q~NOcu*^u`1|UxMY#`H`Fc7P*71)jg_h%xYOROx4fliUW zMce~sUglU_UX{Wr*rTeaI9(7(r^hlE zmV)cd<=~%&df`Cij2==ZdZ9WL9ZmS-9S)tpUj6)a>D2Mv&_r&RbNHUGp`+Sc{wqy2un2wu8>B!506P9J*1=sE zA6Fx712PND#1hzawArbEZ=Zm$)JW74h!N^VJC@hP=Zw%z6&O=dXWS;yIz%p{0bj+$ zKdc4F!X6ms1C$eG%Y~4!oT17d=(l1>B|x+r5I0cfPn{ile16dWI==5`i8}50T)u%c zWN`Zka*{>lmX-#=rKW-yq~{`~%V4?cR;UC$?M2t%4P5p5${DKc_vIaIG(s2Tx-r)} z&*I*@KEhA-a7RjYean%a;W$Kt_HwimK&;D9u0?xMfqAl0Fv5$hp*J_}BF{4YA_ z6WKpiTmJui^^D$rJ+IP_a}1+{@7U|I9Q-YH>Dosio=V>t_e#6!NGPs&52VG0BA1`W zV0OG(4+0T_vlD{OwH*or35CD9ZhVyxlx^kUFq~a0@HvGz2t+J&0IZg1)|IWzL+oI3 zX>=ns$jUI83q{sSNhd(az#wP@V#_UZM`T|Qy+4Tj#seuHpO;e)+J?TR)HF};-_luD zLl<8|$68=>nqYRhhIo=Bgt2DK(}-BpQ`L*XaQ$LkVexaw01D!|=Lj0>xS`!yP0H{; z*hBOn#^&mggc|XFX%T_IltjdJ`nxeSTx0F&hG7Ych3~op6F^o*S_0s=NADQt6G(R^Ymh|tq~Vl$Kn;;GU#*DJkLlKgnS-MuAxc+UHJbLXDb zbvSX*!I{GZ86;u|y$6wmM95nZpTYNnRrX#ZXEMf${?hSjblCv+?u}l32qpMyXKKLq z&ebp-C#WG$fu3_BsZii|4fy)#rSQ`XK53`)<)6~vtbafn0DuNUYGyc_Feb*t7wO;F z&Dq4)gIc9LR3x{Ygh66<_|5-#gP9kTpAsX)#Ff>B@Ym>PR~~+HpF~``gOpUf1HvF~ z%+sFP=b4oNNtx4%Cx+5Vp|rcMXL&UmBGd0{VSBst5m zelEQd>%VN-`Q&tWz(nolF@(kky5DIbBsEJW!%zAh6cpO}eMAy85+w}|28?a;$7$n% zvEuePaXZOQE7jKhd%EN1Mm4D83V8LYxp!>4yPDvP4*fqqymR4T_T$F87K!YG={erb zUs;wlr=H1d11ifs|9sbeUc2<{Oi3A_7cZtp+K^83Px zZ>~ESTb$q@$db?u=IMnZWoI&tGr7%II>8+I;c>-44U$qcYf9lh+zveX>Eql7 zzt_heL;H4~_2bfFfh*1|GC3;~NKjtOugvMfp0`Pn52c~*?d)2Lfd?>*D^2?Eq zIT712GHlhT_!&W*P}7rSZ{Z)pUWVvtz;^yWV3*i{5Gt$QLwvov_4dIl$kYoF+(ehW z#E5<4nOz(M+8!ulpEF74iV$g;hdEFIB1VlEvm}w;P>ds)0vAY5HwD7D zvN3T|zhr@O|9(s3!b?LlKPX5dpXQ%>8+gVK+j+R{tN!+dmj8dhkA?|0GC0(~4O(2d zn)Tw9Nj*iVVSSR>YKFY;pTZdh7l!+!2Jf*saGcIy6EsZ7od?f>gN^IC`klvRi{O)X z{=3Uw-MZ-g4Erm7=8vkfZkCDvhz&wPkim}5MY?5?_wf52l|-L}KMd$Q7z_~}zO8_d zy9?Ba_hML!F~-8+EJ^+6GsxoJG6o2aPBU&S#>^^K3`ChAkimpS>l{u9u|n^Be11Me zY6ghpfDwhq2p))-0hhuSKm^GU5r{@Ra-@Lqj9mOWb=#J__5kRU4;<)BMBy32h2xzz ziWiDy1h)f?Zr6>=B_oku$*9T`O@1)5H_yQHZ!%y?yc zb9Q-#BQo1d52>w+NQ2aVBf2|J_B`Ka z8b|w^4g?yV{@-K$-(D)*6`Uw^+RLRBgB-@!ELjMQ9|U6*gN#sy@?vmd{=>3Devp4u ze82+4F#3J`yU*Y8^k#hmesigQQdXxO>wwTC3_#p)td@_t!m#s_Xf^U%JUrF*BG>S< zaqSp3vxU_29{VhM%TE*hd8`wgV~uP;#JW#sRZ!)Ty0 z_M5;=UldGme$>Vs&kT0SC+0-c>mCu89ywaQ9Qd}ybQwRa@^?;dB8Yaf;z!3WyU^%_ zk5pf$m|~m47sd7YYcMT}JYPMxn0C0=otw@NJaO~AHNaEWn=Cxk&_e4?RyH*Bmd{mb zOmt({6ru1`(OR5IrwoUgPmhdHh7E*?k>lUwS1b3yB zuW#&=ik_hy)0Rw@7*5Xua?IYm?GRflV@&wfDTGtwWrLE=TQfT&@#9s#TP~;Flq@p9 z?!#=~rc&0M;et)xS=iY7ZnZIOxZkjQ<{kQKcZxkXe5B^zlzZQ&>#jK48|ycj4&5e6 z#Fm|~ZthQX$1Jn0PoxcxTuvywXoguydNIKG5>yE>Bu?d~{7z*GUc+$^FeL48jQqVw ze9U+<3+PR(eFj!u8%0+J1POh|rr`KEBU-8wueL&OLNUsB_tY9*RlOs$#acByqs_Mz zYKHnIKKfHzaKLu!*&PS9mx$z;7JXM&*j`hlClG4~>Fg_~MAkFmOGTrjaj{Do+8I8Ul-yTbEdeYqIhI;&KuD=;ywf3CjvvywE z**d3E-NI@W$lInp&rD@RayVub( zyK$}luWH?1+y1C?<%K=ZpVTS5)T9fWr@d^dZ-+f2wrQUnaD{AS-+Bayygu9Hr0r{F z6sKuZ>x-idPup$c(7Vj{^?hQkU#$Cd7%OnVP=k2-_U`mr%*MrPYVUXAacN~GHNws2 zOMhJE&RuMj)G3L>$}MhV1v)EKwY+6U)V+tSoY#fDwpZsDwZs+z#Ihb?UedFq5!Xk( z!1z-4^WqQI>+xE+689?uA9WGu7`6JQ*svcCjV#AfE3{={7DUNmVap{_CGkv?%QLCTke;vNO~n z+!A$<3$|LKkvc4U^syMH7_0pbk8A4u|4l&U2l4Ky9Vw+e0bxks!!Oo^>1T*T2qW zMQ1#0bqq^M1f~ikkWyE1=QHPk6NB#ZVaz1T)IgUqN~M@OGD(hYYcW$H6QsR#=E+b@ zc^IR3NRmnS1c~gG=QB8AysEzoRaa{f=_wdXTalG@!?=Bt{Rf@1w zN6weZpNssHN~$U=@@WUt__(9Rm5Teeu3DHPtCsC*<-WG7l&!YXimIxrt+iEqHCGWu zh9G~>?0@F|UJu5Hsu&uoO|$-*sF|&>(~vQeZR_iSvAuwCoBxM9o0DRct+Zo4^x;3x z*N=PhKKq|k-|x=SPJaLDy0qTnuiw&~?8Z)Q#iIu8ibnCg}!(?w+=UZpD z4&u(P24mq??5BA3(#uVY!+sr?x2ErGol2%v-tQZzg(XZ%H0itSWU#tkHgbcw1bj`C z*@K#%1dmd-;zC#truTK>xlz);~}`oc{*oNy3lQ z+mGe*#hAy&X8)bQ{qlvBK z4*-C_WD)<#L&x5(e^|bO5CAa+_wZGcDxV*k3~}f9Ou)@9w-ou~! z7u_fSkpKIMt^hw*eXdx4dtjf0b@^&8SNxeuBmfWk3;^PGhx=-f10;tZnDpHW3DGr0 zS^S~IBmR3RgTH^TY^n2%MgIXwervDaY`5x4Uavi-#9R9j71!^~H0^e0c`LJL?N{KH z7X9CTZ!x1&J0eu&Y%?_Ko8p#r%?EhS^~S7rn*7ghM#>w18>jQ{E52pjm6N`DciP{# zWwY)I50B@}&rP}49TJ{2`wJf@*X4`em5%nSg%_qn{j}Q{^3SD-FnWX3;=X=V03nf< z-JvZpD_y+pcP%R4No&TcP8Uqg2i!RT;!e2avm`(F=;Quz0#c$Lb}cmh6YktZ8K#Fb zE#DC9uMLnisVbn#qf%5l%j>akKjZ#%;8H)A*aQF)M{^bpoP4{!hi+~` z{r~;<=}IdAdr!aG*t;Zk`Dr;eN{`F(nKC6k&%b; zvfIS%cl12^<0C)zlv{Vst$O+;PdGj>#A;lLZKc3F;u!NO0;K$D?+;+{EI82d^{jgR zIrpF2+n@dhZvOT4ViDxVyX;g?MGxk?kEVPR^Y^X0x~ZV1XichM*0Me`^u&?%#`xdS zD?^){9p#5cNREBzet(CX&*FI}pve>>!Pd#Y{iQk{=jXAlatQRNn-%UrdIX|Uf!}Ci zmy($tRp?6eRBGC=uLWHSCMu8_J+ageBOm8O$%FvkJ=SFMtFD?jW>LUR6`02hUrGL5 z5DOTts0GXd2Pjx@#KZ$X=5#$R`7<7VJmzdz-fb+Jon@?Lj|bd)9#4Qgpa2({;QP7k zdRnkM_rCRqa?2-PH0Ft*w1DV!0u*%g^nK}_DSS1yXdZ5Q>hLmM^lDN(n>KuVF5SC; z3(iz?+;!P<+q);T#o%Jak_dZ<5EN@@5<71il+M^7*9vcgi5^`?FQ5HqI;~GDo1hma zU9QtBB~TzTIp^jp`p>AdW4ZkrW&$J6IN_RTr737Cf*`Wn+kaR$?ecPC9oPGDE(t%p zFX~zU;eQv&>nMA>(wTqlE zfJle7)SE+C9*RegqaXP6ADT9Uuesr$F@D)(4(Iy!jOgYL9}uU9{5YX@-s9d0oyK=W z^-?8I96Z>jp>%d9hEl!jBW4uaWwp;6*23?{HRK$2-)<$Ydr?yV(sKvt%kfY0#f#H+ zomI>;rL3Q)t>5O(iTGl!7j0~62i8`qgQUOBBK0^8kK*FLipn(K5A4AN4d5;VK z?Gy+8UHpE%!RnH+|7n9+ND!hq{i3`h|JwWOVX( zJx_e&jf(@rI&m?VwUU6Wh};4oLv_~@f61TY`NnpaLozuS!gCiVW(eI$LjDx3 zGOywrPJPp<3vF`9MhZjURW!rSrB8NyCzFX<`tJk0;!s>tsf9dCn=&ZnBsI=EZEFpZ zTE;sqUKV>+7G4lMe5QC4j;Lm!E2Kz6TiJ9foHe z>VV@M$Yen6EfHoIdIFrOmX9){;`-crm+Ss!At; zeg63U{?yQMzwWzG*xE}flCwfDbV|yK4}j@d8%3pO{2NKc+0Qu}8JnyC1K(ds=(!l5 zdFFE)(>T((R5I$C{GV^bT05){O%1Lxu%3CYK%dPHNu@p!uvM%zDj7DV^(ufkf3waD7(iK0iJm#=^-s-m0r{LH! z^QiACd{E(Tv~j*T+ni1%BX!@6bFOhrUi5Ys2sTK;97ud|;Bm(NaDjfiX$d;#gXn@$ z5P}FG^}$b)l9ZiY7l^9m$TTaD@%(-t zxchb29iLoshetIyZ}k1&>!1A{?~mgfB0CY=x-?*Q`R$3M5()%*>@NK8@B2JUpF2fx zrg1iZgZ<|th2%)b@Z-MtL^BCU}q{+;-)2uTEEz;1|=4g)E~AxXq30d*Q03kk*dTjvH;f6UL_< z98TS&=Je`0{u0v}q4tbq!DnKPw`X~+qHM_DbRgdHkIpLgxs zo}|ufZnWNQl;icCntct>{3Zb2)h5sqZSx`jT?4A0;2^9N2N28WG~jVEjSMKqh!DI% z;?P(v%x!z8lYEV34p=LUVrz}%W=V{t24;f27`W~TCodt~wn;hNX=|P_koFTK?C5WO zpHGh6bSry<%F|HkIsLQ8JmmASuDBy;Bf*LtuZ}k)cI&B~ci}*zvN;4h-vw}XY0sWI zAfCp?#7SfXTq0&YgwxI+T|S7f?_|Hfq^SJ;>!xe3SWT)L zxdu5o%3vYHx=4?Y#B+{go#`jrtJg~S=Y3&pcZl#rWRA8_1RKfcUR?G&+Xn+XYmvm@ zs4U)gba9)`05*C(mw%jI|d zdQ@(q`j)xPz{&>GQt6n43U`*Uc)ayBCbsBU^50GCO8fqzKtIe8^p897+3~bwktI3r z*HwVU`<-h1w7z)S*;V%VeM#T+t?qFjWGYB9UoHB5JpM0)J`4fb6~?3k+-xSt2`Ke) z!O=m?q98KbrwJXXGUti>2KC&oi%D&(!VkjT`0c#XJ(x=wIn#1@BoTy~TE_Q#>`Bj;3>&WqZU3<#25~EfdCg;T|MtEEA6BO%BY08CEr2s^^m5 z>BQrnxvX{G@E?wO?{+iIpqdDkk;*~Z=g9bdw7E-#QeEtDRygBJITecWCTJv-uv^Yj zanxrRi2o6N4rK87A>90vwp!sQ8MEzW^YNxQYRlUNOGTgO7~f|pK-MiEEWM>kX@mv~ z*v@Iufxh(B3sz}#2U~gYAI-o)^ld~W8G|SS<9YY3QBuH8aTAt^XdQ`3+<{0W;B>05 zzDhyb4?97k=X{6d;sa`MH(h2th$aW@U<&j89zSoeNA_OSyqz}N6vy2AM_$?YQ1PL# zcPNq$Q2G}^p!KD=YiYXoU%y;ZC>!qhGdyXxON)wQl&HrComw48oElG@rmV{%Yn|NM zNsDZAt_<)uT$<#`HY0X-x!@Hk{;OAZXOqtOo;jaQ=xHR9y}mJbIhQht7~cG2k!ouG zIpOaknp%D2}=nVOy|c%#Q< zzTEiMyY_v#GLc|OU65A17!+Vla~&?toCJ)1O++pXYni$e7mL2?a-hXs3b% zWsIvCCk5W73C=9Uj-#aw6s1M1WwH6~_@>%vuC;CZt-n9d@HEGv&+ra2?541h2?dcB zJDBb9kJyd~L=q7KVY%^7$Ey-A0lVSEl1UO`hzrh-?)F;?)dsNv<8C%VO|!4s!x^$D zJ5%74w9;m(hkWav)7jiMVIjt;833s35`5`4iO21p+V7U%mi=`Do>a7;4qBPzHjo64 z_L&hqx?n#CqdR?%c}BN+2Td86jhX2PvImgwjqGJ|b6zhPdW9+iwZXKaPb34Ej`SoE z7gyp$nbLrg3y&OWa4Nd#e$!d;t#iaacuoeFh5+xx)WAy#!Fgnc(6R+g%z{8}W?)0> zciBD;_0WA!SGnRL7>+c$ATX2#Xa(Ys*K9igBN36>>yg{A-E~?KtnrCn7beI=1!9~= z&6u+S_tO9}An|4E%eQ|1A0_zp*p`i5)m}gvpd1wN^rU= z<&Xyy7JrD~5!FEkMTRzXZ@tlT`~5+?XGg4IC}PFK2o^@PpZ0zC3Q0tx^keq^AE@8&_G`D9 zf?%MfXs7*u9}kjwK}k>DG^GVlq4V_qdeCcMAE%F|zGnoSZ{GvDr)D;l1)6zrCIg#r zB!XsT#5MYCQ5+2#omBhv1M=Z<+p_>RgqS3q&m72#CaR=EZGanY0BxrcBq1|X08GmQ zj7-gQ#d13BS;Fl0I3Q{G$Q3k_u&7jro@NDMeC!L`j3#kJZcqcR-KRW@!Gk;p2*4tg zA{v(qfTNdKtvP#L`frVP+HxE)S<6{cC>^|5OoqE#sjYuV1GBqR&_<`wX}8+XVp8iJle8=hkdq__ax@&xz7W0|^v5zYnZ{># zh2=OH!qY_>)ZJ>V`MkB8m)E{`&`?pwVqxc$cLVIiDa*5>bJmZ}H zTyI2!TuhCOjrv=Ch5%APt-o1%?HdNW9|}1j+x4<74%K82bge`>ue$RZp&i+6!>X%y z9XLC+^y{(QnU@8ma$y~9k}WswwBXSU_wWyTSf=#&ZM;3UNWlE(;|x0_<)@v~403BD z7L5=DonZM>i}~Ld1>(?j4Wq^lvW6C) zw!h2uUYc4H>b$3GJ{RVBv)OAT-^;8_CS}s4p_^Q{Xl|gD=bWOJ>o_%5hgl%>_cfn8 zTNpmwTW!0;1l0LuTv6S$?8C;lmm%jEN8XR_C-mL)vzvZV*QfOzb;lcJeP;Xkh2*F= zt}=342x<>qVX+a7t_Ef038@71#BW*z%2sMQ$Zum1a8w%L6R84)aX%iGJxz**t`XT; zM|fHizrd<$KIU#;-J1IIo88_>%CptlYHRBZv0mfZi%$a{BSZ1kb5C5p6{BXr8D!dJ z&uS2|3(i~ack?mFZu##2SvzsQ&CV&X_<>t@(?zHZD4CDs3JK#E*RKG&W>`yaRzZQ0 zw}r$rLC)uOl=RP0XGYs3>t){Dw$Fm8+F6eTwXIP~yIy-hyD;I@Ew-D2=aMBHGH*Ng z&KufVbP>H6=br8&UVNO-^zW;->mA1ScYRqG?>;j0I=vcgm?a!=?>kl`Jad0oW32Y# zsqcsHned^wg4;h(Fxk=bG%mhcx@&#-<)(R`t~!VhvMjHt>fbw9^QDS%Ex?GcZeFs4_^b4F(m+< zF_^MwYPObg=A+%+@82(B;qUN!N?**EpC9TfTBYiXEga3{P)eJ|u4jE?sx?(L-LTmm zbA|W_z=OkMfbD(y96Nt!<6LpZe9paJ3tMj!Op;+r*!OpA5IV|S_}y<@efoY~{CLIZ zLQrn6#qg=%UL2ajN~=4;calNDYC6)AVotQBX}&IVE!~dzz2{EOcJ54>$(^sBrqz3V zo^;YHTf+GPLAgtOTE056;7N2y7=HZ2t{cK7d-_XQcbp{viUKAd4ySNE_08|gmYD56 z8gAO*=5B52iR*HC4J9tg88AUhS;j$YBHJoAc{*E`8swaPP`b zyAdGZ;EfDvCuzCKhZq_GB1`8lHNAcJYCPROhSd{5@qOsSU85{`fz310PK)!y$C(Z` z86`&DBYUx@d+Li0=_bFWFAV02ZIu7Ad6%+)QWBOGG$bte!`ytm!q-U7_Z9393*+0| ztfPc!?{KWRc3bviNwK0dK^Yh13^Is*FP9rR7`(BZ)m|U4rgoAhE^@o6>qKoZP6dr6 z&Ka3qmNo`CDD$~0Z_6#QmtC{t9ml;m#`pqv;EaCFo;F(5X6uHj4Di={(ZhVbX0e?t zaZNDQyCGUfEjf;j<>V0GPP-p3XVbtd4Dt4YZ-l+<_0#N?e(IU1h&Ju<8wNW&;31P4%LqGMZF}RHQ!fOnhddcI3sX4|qOkGBB+6xp$F8BPAB!HlHMJOf$Dsq)w z-2&z1Rdd1Xk+lz`=3c+OIfu5dAN!;-2J4=XAPcZgBIAOSadGK4_q>Pk9~ynL0l+rZ zA!Jb?a`;;V_;!ok)x{lkd|e+4{@~QiA_B>Lpsi+ ztvWY{o7G+ir?(&-!ut^vVzcBu+wkkx4Sxt!+J#~FQ^s?Z!{^Xs*rGs*yZ%mq5FUhq zdf|8e+<*osoBIEVdUAd0G1L5Ba6sKE9sTM28F1~}OPc%r>8D9Q-1_sL`xN8rnFJUJ zJb$R&RBXce2j!aQ5(|{s5bm@^Bnu^cVZsyrI-)=Y3o$SRL~b&cAp=^Sx|xccUQ~`& z^jNKlh9w-vQZ;3q4S030TpiVk+wwW>tlYdIJ*OOrb&PZCp4-UGZwI4V6O~cf=D70f zcCVfZoSe@%_)eyE)o)X=fnr7}Zo->5=$Mkse?mN;Z{zF+y~-s0{SgDcTsse3dCKXw z0*d0b%#;9u`X(|zhMP-ESQ9+V1(o`w>tj|mJh4SpUZV;!@B|4e`1iQtk=gocOZ$GeHaz{0;e0%zsWnfrnu zWP^V1gW~s_b2^tbt@k22NdjU7hrt1ZK+X9n7YHKn{V3w;mII)7C{zWI>yzSNSD$kH znNHgH@0Vlq{+wVE2_E7j`w{(q3bwdM#(A0rbb2!rgel49f3I-|XoZ2O28L-f>HPQK zZ+*aQYcday)c9P#KR&O=k{Izd!lhnP9teZiFCJb1f!r7(EtG<|m(<%ifu#Zz5z&dx zDQR5DYYU}t8cDkhZF}M~rDu-^D?T$O)hK;>?049K0GOWmn2%5L=UV0;etJntPj=mR zuUW9;@$fqkJbQUhx0{>KJ-Y0dbnCd35!hifpwgg13PBhRD3!v3xpAFF z1tbmRb=MtCBV74X57)PlkYjkpaP^5AHzc+gOV@2}d~CO7d2!hJzMtcP$Cz^C3X35Y zHC<-2{LTEE`4$La0Kgyrus~DnNCYJdN8rQ=nSSF*e<(OJ_#iBZ0OBCW-am8yz^CIJ zc&KRo_mVO_%HeCp3PKhqOg{BgQCQQr?~XS1KALF+<1>m#2PhwrZ;$!Rx%2*FeIT1b zBm?OTTNVVw6OHIgMD&31KOOrK@!KD-3Z4@A?|^S6(~@LWc7)~!)&<}uULV%7({azt z!E26yZ-PqcTdz<~5F12zM7$F&6HU{8-kM}+B|+K}NUug2;)FbqA-|7H<>Jo!Zv(sA zcFByWR686H5rE0A7#v{$D2y0JA@qQbx$T^;XQj>Y+k+pUjrXUGyV*0FA%Yl+8e~!( z^^0eW@v&l>d*JLq!HD31Rwdx}wm@VCV8zz+ZQJ$3jdM_t#~q5b;I1;7@WoufCiyu* z^QB-NkgUWD!9v~6zwLTEUAE0!@wx(Cuvcj90mLUfV4e~k<)G(Y-r(Ufh^i-#ADNj8 zOa+KwNBw^E<)VApL^0w$Pn3O;(=XE~Bo;L*&4GhAE{gv`t7?MD@SV^ooAjfbS1s*L z$H>MWYmdM6{y&I3cHfQlztUedPY6rNb8;s0;CC+a==at3%NF}@c9~`I;RD|p2GC>z z=7)gZd0O^Y;{K>?!_Q*Cyi!c__WiRn_PL$@4tjOb0}^+%hrxuzG$HvS!(=qhGp^X< z`*^*)`nz+?hoF1f~|juD+^ zBgn*It@t`%4S9IJ+-}Eda)x&V5k}IBm>Hp4%|HPW0|Wu0BZm)N@us%N8?OtOJO!78 zD-|T?ec#)z4!8|7s|c!SZtao1=614Xc`{kr9EmgIJemr881y|LwDps5Md0Ha6C254Y0c^UzhkY;pYLDD)JoYe_}K;ZbKG0FxxDSsQcAy`6+uYL%*LjtK<(}RUc z6aqm96e&o8%%&-9xjlLJkGSj0J&pF|%KUiMx1Vpf&EF1VoE5&{^?qA(Y+fAXbUZI! z4}&iekW04la)y0;_s(=y*hT2;^n5zX`u^{^l81Y4Ki+VC`DMxhv9-wG>sbH2{2q#R zd+7_$Z|JqA0tT%(!p4PumdXR>+(Ix96FaQO*M0A@)XRCWDp%_vCx&uedZ#)Mz+FgdZY_Na&4(&jk@J1|{d7k7d8C+HTfv zsqQ{OI9p$l)wDuIWEa2jnO}WAIF$r}BR|ik!|4Rq5hUhnfQ&B}V}u0FvL9B=L66WN z_017ZJ6LAOCO?1689p)NtviFuDDQ#?GBxGKj{C943s}N>V)BU9bB$!@hDEO1@|ojv z=Q$Qe&e)wC_o00KO1aLwE%a}P-#4yt-bSM`5LxWzsov89`%*;q3mDk;)%~L-f|$vD zqN4797O&gwp*@IVrGjR06wB=Qu1KMrdA~=Qq@0==t+;5mwQUEUKV1LU+wX7)45b2g zB~F5UYdN1Sosah-k*7isuzf-BIsy!h^@;^wD)JXo9=+Zf+v$l%Viv=;d- z9uWMw`bma;-v@9l-zaWPf|^bD*Oim=^Xdw0Tb2&_-KkJzEKh?PbOvw)CaTG&bACs2 z;*+iwpMmHPgLlAG8z2&EMgV*4r3sXyLMkM!X<>loa0j0Kt}-hK0>$l$AS+2L@LUb% z`+azi7`>le9^OkxG5~CN_WF8o|2p`6E4u%NR_9*iu?UlX>A#h~iLBqpQPCJAfsB~> zW0XPdZtn4RuSVF*UF;-7W{3Jc!B_*n_GyO+gKaF-*(lEW>lp__Tx){(TQZGe&JiHm zG^t|O?&r>P%Z9ku!|hzFIjQB;ot<_5I=*@s{rZR0KGt(vEKf$oGLPSu*>gzS?~;Dj z!5Gr@G4!w;?)&WYDVS8w2Equ;$1@(KH2;6ZOmu=lam)0w_y7U^pZuHfAYVinMmZRu z1R;s<35kVDB>|3rpe=uAKzXCm<_kb_-<4%8mH7Dmf7kHq$B}FSzAGjp!Udrq_Fq{d zO?q?scWlm|j|f(v69@I&hn(j=WL9itoh?tzzD@7ay62uTz`jyUNyayLU2BZ!7$%(F zvrkt!{mGUxcxo2h*51b79B%i#PT1|nIL8PixUMp&`hHyeX6AY$^osW=*Q4{e5?;WhIL~KA8ny^pgTd>1{O3F0sypV3b!5%+$3+ zwVM*n%sI*!<@`CXC*}7;<)_8h2UmWU1Od|ch4ws+B#4?ff{2JSSPMT#QkJC(&FK7- zNS`~R?ubmjUYWwU%WwCV;W*&NhO%?liF@maydchhKhF;Hr^8P)S&v1JGnaXeGz#py za51PY&1z2(YamD%6g5m-;&GG+0U`b=#ec=K7(o`@_6&+gabIY7fzVbE=#AY-=VSd@QDGe8#=& zNS%e21V1Q1Ci5#*9ke=04Nt~7WAg_=MD%77Q;3s{rye})J=6l@-nQUDylOX@G*Qn$ zVuP`xqx-ujJHgb|-xc5bem|e{{r&%N`+nYx;v>k!azrvB2@zX=`}uzV=|8^oU%?OH zy@yrs<15^xX>*qUeIaVKmfyz3?TgfPwTx@j??5n@?JD`bw^e+IWwPp zrs^Iad}I9lD^-)bV=ir#OAo+?vfPjWT0w$m7J{h$gAe@Q`!DBjt;P!RGtDv zm@R9Xj&rb>EJ%plb1>>MpaWdn-e1D$L1Um#h`HN)<_c3x=I_8?->_40T9ru9;g`4j zN?5Tp+GmX7gWhr5(@m``i3on@i5qcdh(4rqNh`UYg6Y&@NW*<4P|drm%wt3I2Oib#c}xf!q@k%tmg){EfhjFm;P z8drSQr|A{#hl#3K|C`g@yOnUrw%+`(qBp^uvv}(R;;~M9QUE4>{z^FB z#w)Creqvprd!M~ft*jnLm9}d`{br8VYH3ncJi6;U$$aQ{ooZC=9#O8IbE0@`Ym!%M z>R5NHw|A{pqLyESLAh3l7WX_K3S*MPO?{*2$0pM`h<)WD8!?G(`&D-7u=f?AXK$ED z_wH$ngGkDHBi){Ki!qg2%kp_JO7d%%N}Bayn4}=sbLtPBA?(__CJ@QzZ=vgNzPFor zbG`U#sH&Y$V=q+45z`i)-0X(ow%b9R6suV_7aPFqH?G*f z%UW{y^xj{L&%^K5Zq@jWCkqD_j>L?dR7^{#CK2vA(hJKNPKn!kS67>kcFF-oS00q} zpJHm-+;QukiFjq_Rqx5U+2Io=$$mCRd2}a>v9}c7V+{Py&8e1VS#9dE@;SuZV8kah z-vT0O^X33uquBSqdMbST+V}Q2BVAXoO9gWrFpej3f+*IA-z)vc6Lm80fMnFKX|BsI zuj|gRLXn3VZ;v%cGfzBkkFZU#R$k|AHeXN2IrPNQzS}+TK0V2scis6X2)T`(*{egA z)aGgPPI#eLEV{=UXj~mfqxe0g+=pC_i}%9b-+i#2mcze#=c)9eVENGxjG6-mq%mGe z1;%9b>7n8~8<7MYJ@hAjoCD-5y!>yH`nCC2FL6^Xt)JIk%Wb-^xowAL{jgKt`OjEI+EW4dx^30nlnx>EHC za50K9*rd%%1fc?3GUSfC(X>K+yW^9E#g*65|m#}DaTmR-S@5@Bb^y8Yk+fq zXvo8^SehvG>Csz_`{F4)DJ%W7x%PH;vqwkXMzZk-;e0O*YU%im8u^4AQhw=78mcw4 zr4I!x=Tb~_%QR}cz2BcNk~O>hxo~`>;B!6pz3<|?e~0&L_sEwBjAH#`%k|OV^{QRM zAkpPvEs2~Y+}AJ|s6!)1rZdj+@txl8=bhu7JA~{Pi;}9G=SP_qjmjs?``-s9+%qMv z7xk1d+KuN7Kt~p%*kEMoqzfC~Jg>CY5@w7#f-UMxd$91@(y#Z5-&`feS^3KJ?)>ki zJc>n(F05DXf;Vf(5yt&M=w5_$k-fusHy(7eAAF03M=Ej4Fh7~64B-agZfWG+sYba1 zbBB6AKVL?8W6z7~Cciu5Gf{W@dDCEOb2b&D)Y|FI?##kg;!@VsiO6rZIJVoyetSNj zJ5L8~h4`G?tkqI6P*OQ_WE{kQAZbCWf(KsMy{nocZ87R2Fx{$E^dQvChYz-E-O&Xf zr9T6Pj+_|HtyFBOLanq=rz)Q3Jg)@KEevw&fBWm}*uAeLT6gu-a9T5GU2Hv+(spR0 ztaRTt>F@8IzKi-^AB(URXLW!;L;-(lU*y@UH5$W00wf&?pPS66^Sqp9nMGS29OU74(A3kISY#mi!wpYNK1fohN2Z1Tc?aG z)`pG>(82>XFc2X`qsX)<7#GD$6Xg5xb6D-c=1Lba_+w16sxNxXo4txi2Qk^a!**K&PbWkpU+I79s@X^+GrFCjEb(+05 zInhg;ukh(dsrz7iZ!~h_?qwfbYFA}Vm5Ftnt)+fua9tc=XcPZ<&GbGNxCB?MEBQ6k#F9z>?kIu%&UAo3Tfk}UbU0;vx zoz?UNB-Dn`pWa)423*+teVrip+q|(;S90{;n$z2>{5I0s3oG{b!P)VBooCI@j~Qy> zWal5v_TH;p_Bhg^vJ<{0rm6E-%4rcdHv;kRJ=gmj_51rfON=!?&s=N2fs#mwfox!< z5&NoxKQ7}P9|5JrrGqh=7)ZN&|(;B0K>Hr*Z*x+RQ{0@k?a`QnQKZAu%|BC}}H#l!_^D z;RH-WhXa@9DAImBmI(2U@z|r4jxoa-<99?O;_a_p+DJWR5R$KQ#j+@fK?HFanui34 zE$F4lG};%vS1Pm~PS+fnY~P=w=y|UkV@rJ=XP(UD+QAt1=6x4%#8Y^Qd0-4FZ6uM)29+28)RaUc1u55)hgusbYS)(Bm_V!?0(^Wd{6uNzjUGCcpkH|>(wuI zsq3$E88w;glb5sheZR||vt4%Ly0O8MsbJ?Rtk0&fyX0znFvoP*$b4`Xb;IWfXH%$| zM(`)$#)@6YJ>CE00cpVMdly19+B%lu%QH2do{DrXE< zrq$;=7-n%vA^|W?pYuFRe00+J*^fE5$N)FgK!koi6QHoH4$>GW`u~A)g;|J-*4EK) zd4Pps<9k&!v5T@VJDxhv?*2c$c8&lrOaMADSIG7I1>qw(@A~=8(xc_dQmR=`&lQ9) z@i^3E7^Fq(+D^oiFN2hmNk)I#JsG4xW;JhP(#A^WBly}HT*B{@V})}i#OgY%n~{M=9yDdEbdK$QIH<7PV2@S z{qJT^;M7}9)*w6pY2hVfOIYs6;DenAjzp3{l2KvQg{_NXvaIos`paAGo$|e_8dg3) z|I3lD(cy>s#R`hZ5C#y4{^5Vfg~}l~h(eMQDA5TdAj>%cFIufXcQuYIam5(zv>zvl z-g)6;H=nC-Z-;fe=UwWusP(Bk7-V=?+&p)_eWN{8IQsj(>iCJ?r@Zq28s=*mj%wI6 z>>jbl6^-X}j~mBbkq55X?Z*3d&UmIuSw)6qRDjW(9joJ2Jq~Gu>Ay}&2}I6GlI-aD z`bv`<()5|%Ft5=|AEYqr#7uVtPmmmDjc{(7eP--ZS~>WaUms{X{fDUY_;s)0?|joV z$6n&)+w1y}9Y)p<2(Kxx_}Pw0oD$8f2Y_{l6y^fG;v%XmzRTF4oKtYzW^8N z1;A(l^R-rQT-+Tl_NJpo{rWdJ*w^zs*;GZ&_ki-%c|8-fD*XEgx9jwC zniapme&BQc4?1xN58_EuzN)_xWWfqkAp~M|yf^(H_lrGzO}EUy9eVreYM0>9{C*qv zr_#-xj~21ff$R95yX3GoEQ+9)O*I1yVfY+i-OKT}=OfaOiNAdSI1mBoLaAcqi4G@w z)`TH=2nyCrLYAc#f80SR9BjJ>7nAyd_UHA1=9E|J!?Zt zl{QXtjD(5NazMvg#C$)q>y`0*Z}@MGf-wXS+l70IGy=>$g8s(EOWO~zO$e?eB^?6) zt#L`(7Q9U2wO}i1N-*V_w2?H2V4tKXKfq@L1ZcY8fhvrbgO#M zlQlPte%<+~>ymd7ueh;lT~RzqkpdA^r3j2> zwn64PjuMnt5L8|bP?QD2=ZX&8zQQkSu0WWKV+gqOn;<8$BgRG7gTdm92{WEMaL%`? z&yF@<0CKmE5`HL^#-lP~*gdk2ma(q1wMlUzQ*LpSspNEV1 z7Twu`LoYh(w~qntvN6LSI-YsIzgxU(p4^A6yiCZvQzw9LjyMJ_4VkC$si4x!rDDHK)t5}E` z>9Vjhn+xLCW~5j;-rm!WyIug@4poK97?T(eHWf7s^nhs|i<7__%Vo1a7z#>BhoyM+3+O zCV~z|BqU(51EnGD{sR+Mm{ctFp$);mZ->X_0dtx_7!B84A`CqWp#g~-q}6wnx~ z3Tr!BVK6LPV>Ax-IM#B3qIfeXhon!)R=@cHbi%NXY;YbhOG zvd+71Wa2hqK5%r8zjZ&QPgu{F=Z#?0)v@|3e0;|bBWNN#H=1+Q7XPUe!Zu2wC{l5k$8+cf9bSLNe z06!4|%tU_I*8Ube6~|sPma@9-q4%JQb9azes93@^hi@6>ij}|HkA_hH6ZXBnpMpJe ztL9YYP;~nXqS|AeIwGnbjNR1B+D^S5+cVytjtAZ2S_nm`TEOXQSZ`d=0b7#ObS_}6 z#})apcAvNC*e*0%zHEmCc}yv_7gm$t?p=RI_g_9(Q;Q-w8UG@T=-fdRS{o{(JGo`* zbDQ$-t`sPMsk36DG|E6d0R!$Z00f+%S*chhPpj>WuJ~HIcJRwxzg+7#zBjaJZPotY zrgLl)0xZNqAb!kf&Tv0JtvzGrWs&8s_?DEHRvZ$2?p;03;y;jotTj0re=vFmDf4gL z8E7v}fsHy2i(^XE>SJ)bFFq;K8%p9O(x&%S~0o1O764d=+ios>L6n3jq^ zCblq_W8F?{t+ru+=&W3Bq^|zg_{n`@<{q5N zKJT_IRA;-KtZOB_q&j&73H3i%A^D#9KNstsu+w5}Vpp4xmln_tDq7=M*4X21HpZb{ z6xX3*2FI>3i;TWVJ%VvQG^HP!GRPzgmUiz(;B@#HagM{kC!x53#1Fq3Uf!4-pS&^4 z?5{P=s@o;L^s1EWhn8fDP&syw`s3q0=IYxZkNO09*Moo*mB( zqEy+dnv;X{6~mK+vgFWlvW@R@cLeJU(L-O)Hq6@>V&1S*cylS!SAFfgfm&HkOC)q5 z7RW%rRAKW;#PC&lM$(4!;gxkguNu3oJnNm)r?@Y^@HZBH4W|#QIK)e%wJT`V?LuWi z^_q2z%M#B0GRqHRj#bxeV7yVkRl^k9Pfk6rg2PbjtU2V~Vt+k9o=E+H{Bl?6`s;o5 z!quC+<7zm`hPp^K8B?k5VgtuxWX%xk(~dsH_ph85Cu!}>*mUy+MVTxdc&LCxQpTA5 zi&C;eng}qN5$#->rfu?Z+V>hD&^W1mk_K{Ove5p+-D6EgAnnRYo|BiBf;xJfz3Jk2 zHVM4m`#j~gyWvY;Dn0YqH_qD^Zf@Q#y3@95?D}VPjr8i2+U8cZ&6k^v&Ir_tJ~-dn zZPp&We#s1zQ8};GF&fpFS@YwjJ>@*f9>)dWf*arYnEKSh8IjfnAF?NTpB82Dg*u_(J7i@7Uyj<7~Po)|&8sUA`B4{!6pP7a4B73oxL zi0F~6x~yIlUX;Fc>AtRL>wiz6cU3Bl#V6t%x_;<{`D(wLYieb^`f}O!XK~*?Nya~- zUWOfOo{D)%#5P`<@~*JQ!WJtJY;D>T1o4HZoQs`ghm|nPFLCy*@{g~3OPl+rne~2s zX{LVRq%Y#L);l|DJ4I`%O8qqoFxqvhxp8J!0>ppmJeyNCO{AtTy&~s6=I3mPv5Nl zlPtEkemm7unT9CyN~K_3j7~llipWJ6VI5j4&u3ek&FbKY!)y3D;%d$AnqX`Kl0<#0 zT=oaso;j>Im z!Hab#InHhOsr#laMkCM589CSl8$h_WKcPFP;AD9ZM()ZTI{OVsmiIKk@QO?AnL z2yx6>*FQgRZeB#jP7UjRAJzI=+R8N7u$Fom@9ilu&Bu;Qvc}EbyhMOrx3P)u3t_jT zgfAGZM%L`bTO@4nPw`gSG`NbhiSnt$8l2>NA$5^ z>6P;fDJQi?pw6$uA#J6=ozsR+r#Vw9^67cpyJB$4X4d?#uHEm+tI5j!Clp!(lZ~uF z$q!Ka(snGbKLgv1j%YRpX0j{%pL+a^d?OXyNA^|}J`_06b0mzne zC?q?%f+So90YKH`;i2-|fyiCfyEdSOVfswLz<^SWCy=C6Ujy><@!weAT2bBcek-EU zAGDl_k(~X0qjqt%2yd#I$|q8%OE3h(srKr=;|HPXfu#Vh+`xPiXlmduXMH+-K1$=N z`OYyqtp*apns~(ZF6CV^R`ILL>&t*arqMj)5 ziz(@7vW%v7L#wRddqBh1cH@t($_QmVV`gsjTa1`6Z655uH_Wqny}P`2UciFmm&J7< zX!Y}@Zs=*JV|!~B)Qam8&chFQ!}4jH+skbc)0bNrS~TZgms4(~-5GkZoMv3&XBS4a zv;vsvb^vl(>gDMKVmg%n+w_uu^mz`(dxg>dWB_bYh6Qn&{ruPu$OQxSAvdJJ0s=i9 zbwj|I{-|&W4kug13_|g4CWWeN(Gg($FtHe}Yl1->s!fr{8NlZv?9|Mcvafr^nk9?( zQM7R=`WjtJa;5=tn(W}m+yU29!WfwvQ`-`Etxvx+WFooVaVmKn<=|&?Tvw*-VfdfX z{$l1Sa?!&@h+q_XF#-eu$B!;9VXV*m9>Dnj-@w!q2D>q)O$H zp{!Ws5u{ouCX>L#_nh;a|7y>9NB@6zK4Ay|S3!$MlkTNojvsKTg`Y@s@E_gYsm6Q9 zAH2=`5QP*@KiY*#1LsIa4G|CrQ|Kg){{`oG^zXlQ!_*ITF8@o}&W?x$kJFtdvrlLE z^@dw=D9=BO1bX`Vj0Zq$dJ=TA{kM9Z<5?HE2g7^?pS1DBkLi2jUo$!0b&;H9^FM&k z8L`Ikl(*hA>&u{k-s*asBDsc7cs zTkpk;*2TRay>-_g-~OL;yk{{V^8TN+T||jZXwT%Ciy!)$j54xbCJPjQ!QnL*YE=O_ zHH;ZW9Ey^W1snV z_vkCe8(%HWTl@U|H8%a@^v(vgOo6_rOAubqkGpZpzvg_p;?vgoBa?pEdX+LAP5y{` zYHQY~TK7zO=UI^RoKCIXkQdH0MK1E|{NFd0`Rw=NOWP85uxTP{3#-b)&45WIAo7K9 z>%LG}!8Sfz<#wBH|w9B)=7xA(`Y?fCcKZa1t?dHSEnE|oU9hji?h z*@gAtpiTGU7vy^Z#gbpuPa@?sf)2gZM9yl}hq?uYg* zdNJkr)M{$F-1^}WuT&ZLEiziz?H+$ke6ftq+=ar@NvH~I5;1%yqRb5vLrK`T0b zVz@m`J;euYB>cPDQA>Zu7rpocRI*wTBmuC&1i0ekB?dD9Ty~eJ*N;lRc>71(A4njY z?e6T5ebZB+<=&`DB3R@|Hl)`hOHUK5d1O(4Q}sZ7j0^;#H@-mU-mpn!n&}P@Ll%c8 zJkM=S3&p9{SdnCnpLrj+j(*reoXV&)R33___I(eXDguZfZh&6j3pRv$esI(1@rWw^ zU07DV%41IUc*Q|iQbgFT9VL~avL|&Ip*l16QCimXxmn{plt2|IEn`{IRgtWX9JRr{ zptpK;FMNab`j4y5|6iuhd!WVEC+n%<@P=X}(SWq@-wV~%K}pHZw^|@GICk?%%}my4 z@@0LHmY)4|`fMpSHO`e6G-%Y+8B{~Sz-|EmLHx1b+z)~`JvYZKQSj!xG#VFU7kL@P ze|xQEVr`a}np}s2KA%tR^Xwp>E%hTNd?-s=kG$E<9v9=-Mm44r@%Yb?9=OIV8VxL( zF@AooE@yK%Lc?qZLn7`*GrD1#`o>zrXghC-d}IA3KFdTbY>cw*<}x)IV)%kK+rIyy9`T&wFwj$ zHv38Fltakgtk+D9H~k0L1Onjz8x}wTeX|F?frHSanKWJEwjql<6h=xxXF3*@EXC(e zqBEP@AkKBi?%(EzBP4FZhzNlP57)G8#u5&Qok#=FrSA=6A4i?d28SaUT@>zn@C;46nu;T|!Z{ z`CJRJO;Dk1I}EQx7{;XR6S8V;>Q7LMmSv^I1bgatTh~KS%z56O1CZkt_j>Pa5AUF8 zF=HI&l0q$0Ax(~JbC?S?G3>_ll>YbAchFhwR8Gw2j8`LMV2*6toaJkom%c{$^Z^7;OspPuhpz8{3S_@dI>Ryw{JPWeT*LlbnyUWGy!mZlBTydV zfpK-itPpE24b)}lD-psMeIWOhzn8|om0vZwA9Vdon^M?we~t0KUn712OD$H9zfav6 zD`CBG`FGL=TuALmn0H{(FisTi31e1a*l;=BDAk9sVotI7fsq?9NDw$6aroThjZfE)u9V>LG&QNhZDC5Y zhm0fH>hg7)zQ@;B*IZ+s2PJdYQ`C-UjKkj-nj?FJ_~hwshViT8R!HYhb~hsKgw;xA z*-zn>+QR-b6>vWL@42#qcgOfWSSd?V3_N6Ip%jYw&Z+7bsTDXz_Rm}yg(};PhS%V( zu~y9Ms2!Hi3AGJcT%;-pE~nAh=7vrrVQ0N6Nz(+bket_(cD3CIQPqnCfX5kQ;QVkuYw;P&2!&F7%hp_$^^>BSVBEFoK6895?6QNX9lX&p+So@zez&%4zrj@GVNzCGoP z*-o9uf{lE(=GH7#j-tJrl9f#2#ya)sdfR;RF=wY0 z0E(ik@TrVxx~o2Vmkys8A4qt=At~=g(Me4_(z}Ec&SS=s#jwz`Im^{l4pPL5E#TWS zjBZATP4fEeuVE`6X_?$k*dJ=%`S+al_fFuiQLf-^Yvr;mxHr3ET!)-x&t~s4`{De= z{iDqw{#k#jKTFqKZ?zq_nst7Z7)r8$?$%Qs#b|i<%`a9QJ5fDU*>)gG+ZAYxIe7yd zsR6=EF_bDw6e?2`u}SJat08Ke%fI1IL}3(mB$LA~^*6!mn#$o_LhBWl=iGo2I0Yc@>BOK?8)?K*Dz0bj|o zlrmmy7p9B&-=lShYrmZ*(BdxHOp|Z;Up3QtC0M-LYd!M}(`=#L=1)EE4Bv*!2IzVt zRYOHrt-9_S*O&W2Q+f9o^V%^HZR;h>M5Aq^JMvh^02};w z8b^e1(2p+0-QH|{9&+xQA1C448365T!V^yzCqRO%){T}M`+_)L^zy#fpK;dw_di_J z{dRLa%+CaL87rlafI8Xi*_D$=ai=j!73|(bkT(2BX zAp4)n^ZCCLesAB-d|cnfm3CAYdD}*%sq?E>IM&4+7=te%S{otFeL$MVItYR?#LHUR z%`~duNVbZN@9A4PTJOgu>b%*Lr(45R@ydHekO(B{?`Z))9_rQQJh$R$EFn! zSXkHYn;m$j)sKlO1DR&>cqXfPi!;?}-p8$V((<%oIvXq}-JcN4Og53vUt*i+y^XtI ze^hEbw(VBOH!^YOzjs^o?%nGQAv6Gm*wm&j1jlO?4oS*y^CV5w=-w(iBm&&r}=$p4)?Vw zq~9=UGcYM=N)m(>{n8l;LQs??2|`jD%o2p85PD0J7mfjtl!XC8dS)ddNKy#22Kk6k z(3FO=3Ic?oC|8(4G8=3<%j>o!8)gxRCL+>+Fr~sEK!Mi1I`u=7WiL!S^10S#Rav^) zy~KQd*E)pc<<8lO&br&yP+hK=&YPN9>&AB-wp>QDqIN}oF6+Q33Z+I)_O+xWibCdK z7T6hS1t7vu6eS5liv3|S5`$TSd1WA^Hnf6}QVpavl!TIUkj$b`lqO~gLQs??2|{m} z2mx&fDGaoR){s&PLCQj;EujDmw1%x9(Hw;>%~)dwKtc1 z5^)A904-yXw6{*&>wqRz<5`e#o0?nBIsSB1{X&2Br2ljN56tX={jufb0q@`L_vOxZ zf~Fq_GXMCYv2z|rV;Aew<_?DoG!?f0jpAnaGhWuY-?P0{T=7=qR`v|$otoUs$i{bx zLa@T_v0N*9+-rk5%+%+3(&Ev%Z&5+5<@DstoIO?UMsI&vFiyaIo|S6z<7eNY{~Wd5 zIdUg^|2pL)P(Zm2VV1|smt4ALTYl-0`{7`~>_h@YA2kq&5Bhf9^`(GTe~112o%bu{ zB3>efjQnapZ}+I=ex{_z&*+AS zJNUj|Hpdm(dc@N0cS={pC6G^Hq6r`2f4ZITISjT$=x)V}G!pa-7!W-^FL{4%*X!_U zbKu+hy8aw`K5aBtGn$n!p+u9IOhRB!RhiBfJf{}~2C#rcN=oW*GggpD)DL4h?F^qz z-j`7xBiFzr`13=1&yMnsap8CJS7^;t(^1>62oC*Ur@?XMzQ?J3Ctcm!L9{(Ojx&B< zxF6 zgY|*{Up@Nr<;K;Rugh@~QUYnFQ!;PX`V)rLadCOZYjrk;Ha_&fF@Z)R2j>wx&%=GD zhi=QVe0AIk)@L}wRXSYYX4B5&4RtcQ__t`3;Hv^}`tB<+kXdCZ&1E<bc&xo9a%;6_bPs z;Q>Rxj{ZDrw%m@~2ke2}I3OE91!w^zY`~6WXO1MjaeyFRkOL0sY&jW-FsBnKN7dv$ z3E+H=cD*V`$Gu5dY;!53nZDTh&S>hG84fE$wD$I+N?dm66?i>*StBhD(Q3)j!7LXz z>w-rZl$7zx8b06vs0anqYS#xrs|&6LrD~8VCs=BdqhyTgT(G4NruUs{cUjNdKnxKC zk^w%KUnA1!{8nsp&s{#tV~yyAy=J#hRYyDG9^omdrNi5oJ?C9V`vuI`S&!*n`#x6d z1+QzptX{mUL05GLn9<(E&(rR-XYTpyyTMv10@&fbO`B$_S>Xezk$EeeUKJE;2yBGK zX@X@K>%mIZ7vl+Kt?Du)XttZ1NwCbm^Iv=~QnafIcAXy`;nhg=l%g?heDB+?)#YZhzQe=%_zj8YLV&PXAe$%y;Tq>YmXVAXxqVMJnPzZ$s>bqG zFt>UHVd!f+8P;%g7M)g5yr_(Q@F+35?l@7&*?Y%7PNDFRl)cfOzftv6p-X%lc&89u zd>BC9+1|t6_m`)r;H)e7?^RHclvvFXvx zN&`HNo2#%`L6-mrz<^vA1up`Bs44_Ni}K%+H`B2?cI^4i_gcN+PPMt-=X$x_EyQGq zgZ$dh0?Z$p6Y8d~d|@d(9A_<#rDq-f476I=gatyc!=d$i%L~fU1efxB-=7AkwsKxW zD$_)9R~3A5pI25mTRAGZRU?f$Hpkmpi~PCaHZi>h*QQ`}YrI#tsSm;LH7Ohv^-7Md zb+jyFF4+WxFcz?%(FcMY{U3vEd#!H;?H6UO57Ib} zMnVulBt4}z!ht>c{CbEKa% z?}-SEiffUrR=+}mRy)+jeeLyCZK_psYW=VmSA5;4En;A5#OA@wovcl8d9F_aY&`Nf z`0vj@yZ2Y;uKjw&^wmYt`rBaOBYp3~-iX46WoB#NPfMLL+s*V!&4|Y*ny&?>pn+=+ z%N=HSjZx0zHtceOqT7LQiUbY-7ZIOW9Mdn0$+DzgKI2OJR_6lW@YosrcNh>r1MNe8 zr*=@=;(6<~9(2AFjS+zRZ$lc+4hPqbxkH{^eIGudvMrV?<*9=uyx_vn>+M;k?(+k2 zt)lUr<5~lZe2#sUiw9?sAdxq~+p||_n~9!~c{e7zcOn0`uB+Lva+)dH%WnAM2SEt0 ztr^CFq;lb9?^Q|Nvqj~Tl(<~vEggDQW;#HycF9#+u;j6;IB;LiTyS-Ub?H ztrI)mC%(GFL=`d7U5T#+UZ3BN+MOW}7~+~xpdWEo>)*x{n{HN zZSumIJ-4%ws2n)F7E3KClS{7lZSykU?wa;}wJslI8=Oz4jKgef?60)5lKS0SEcMGv z%O679Y&-{hL23Cl_Y^%wltc~xi@?|U6%XPqo*UZ^%ryA>?Pzz5LzsT;5 zgSM1Y)tfkUhMGdPR@!^Rw9WV+lKAK6nzoIWYB{#HK8(AqWJ-OtW6>r@zR}*98(bcB zs#&DlDee+tLIJ|LryIz=h zy=OW+Z%x~dP;=S|Ii`aa!!t-R#VOIqZ7OPSgSy5&cZaA)OY5vN-rVTnHNrmTcq=5C ziCwI$;8}0ow!e<|ZF9c>eQS}gsuhb%92}|7Y#->kO?!z4JEysE~3) zOk)`-GLEo2R;7xC3?R{pS<+ehcDc`Fb!|9XyrwaqsgiM}y{3~@q2+J}&A8b0Nl1Lk zG3NCM3Gy*8vue^sj|-5r{_lUiKo;w=%+r=ks2^Yaum^)~FnTEQq& zL8j^CEYr6&Lf~=xA7p)bQs{GGzbIYf>XpK~;Q2xTNS`<}j&j$1FxLsmUHRt7n)H`) z+C1iY>M`2$1Xjdowd#JeD+GHqiyWsbYU@53Vp3P6k>I`N2!)g~c63?>Pscw`la`3- z4p#mF%hOw6w@v^s7j2rmp5ATWSU~j6AJ2&K$Whb5i)}J+ogro_%cR5aS(|;iD}Kc*|_n9G3M3b zSEggC21qwNd5~uQf8;6(tDM*9v3aH z&xyx7eYa;*+q_)#*peG23;4YBRYFd@fiT~fDXJ=zbw1Z(F5x2hLHnD^ zL}S@l0V)UCuHf7d!3fsS$sKgG!W!+)QrM&2u*2dvuF$70BfW8yrKYrJq)*R%! znNUiW2p0qi~Z>pdP0*QQhtC%SN&R&?nx7Ag5X(-16#L=phm5rODWJWgElPmgRW zLfm&ZD;mgnJG86L44gM|qL}&x=V_zUb7l%N#~7^JK&N6PWRrYG=YodiSw zytSdivY?nFIt%Vx1wZC+6aXCzdRo1dLT}**0elU2M>P<>V~#*JG!9tSs2RZfzMD}KoCWRUyBs@*`_R^&un0ciUkr@C(M281b{%?K<)c>69Jv|%=hxE@}Bc;kgANA;ZgL1H4;d# zFY(SQ#&?^vYIMZnCPfcn;C~aI@g8O(BK_1nE{o73>PPBVWx(INI-b~myv&2)d8gma zXqn0CA48UZe65+=rQIP&*#&kDNcr%u(@yoaFe=0`Za_S~)YJxZv)&NDYQ zNSMz0?*NyNzSCP@rltf3wiB5imFERc+ z)<~gbY~#s5io+z=ney|zzSpnnedKlhlt<7KK#TT(IN|!HzJtm2;CBzfoqJNw#=724 ziaust`!%Odz5Z&zqk7l3(qsd!S5UODmnOOwy1qaq6<6H#^z2Q1zwWOe0xtt@-y*bi zR%nR`{@UW_LU*}&=m)Z7g>D&G$zYa)(e!QBngBqWq-iV9Tv!D>HejpVS5(^^H#G>@1JRkr8GI9}XW6pgz4@J-F+( z>6~I~w-4iE7~0kY8#Z~{#I2`##`|ggt}`>&Q)}B$$}}ohDp%H)=e`!e1LRH_bf96a zq@_;Tew-@3Opc_f><_ow76-FB?t9(d1GqDenvZ+O+6+wK9mh>X2bnkPA>MnQpby-1pP$_wHyprlouD z%&QF-?O@G3oinnpzFGNubF=L9TGk|5!xhhY?g9fm%U}q#Y$h)a4y9wGBrwC`dU%SkyKNg{6`K{SwJ zagih-?IbA5gl4Vb{xtD;4DaX}W+N_vTEOEIsyg9jy*8a(_UmBfn{od~%Ex~Pliz*# z4tnnny%go;T5WZ^~cxH~t^3a`W~vwarwqOnzs5R$C*-rJ<^ z6_!-s^bTPJxk?ie&vlyKNXfaBU5PV8{)P{G{K}Ru7a$P zbqwAD>xW%~y#YT3d>b!V4y9kfO>O`^v31-B9r=5@qrSy>o#4CEl>Qxqh@k7^#w&>- z&kbcNW{3z`y8x1iz;>vdl0t>-VaH_co%$3Z0EaQ3b8b3uV8GABWwr1;2@sizFG4pk z8!$>f!c8mkjxf@BwWr^N49@jT%8$Y)fm4?wiF%rPv0SrWRg0D@BC`Vy(-;>y)p4im z{C?kHB*2UV2J@ymM1yG(T_@41p4V>0EEQDe;FcCvQONCT=!9}-D4(UR6|5Jd(9tyo zfEw@}K;4ZpL1EW>lCBgf5+iP71MHN;LvYz?R+lfMC4+d7aRfQ;!0{eP~dy z&A}w7?R5_ScE}%61tkX1+rN2C9PgZiRgk3ybVoWy)_KO1)h9({KK7|K@Iasty&t?I z*yi542%EccH{j^=o@mdawME&TXEZ2@5GkOUcB4vr;|bxKmyAZelrg4&vRNkzs$a9; z=U4jMn`0^uKM$MoRzS|&U4P%|rlq%T`*F zXkF1PteuyO&XBzFOZ+1Dxw=njO;ePu=;w8ui*^W-7aDt1(OWlz@81s^cU)%iqQ>Q& z77M+t9O&%hX10<^q)!HkYDL+xVi}b80I#yx9e+Z)urLIC-d}SUyk64G?{`(Dghn+i z5O_;8#wIhxa%s(2JP|#yST5N%2b;diFoSV7EUKos5ld){#$JA`20B2f0I81#795FkV&nQn5!#HDha*{>u-9~6k z+RDFNI=$WY?U09VVK?se4|rx)&9XkPZXND9g=IUqj`zXwbwlNx%SO)FfNW>m|BFLmIjY@zeD2OtlGyqE2nldw4#`VBgTLXI25E%e$z(fH%)yM(MVjl_=@ZdMC zE#;h5hAt>tf1kFRY^t?!aP9`AMW$B&>L@l2A^kR(?u_-n^oIgn?R z`l2M+t4-pSS%+a;qU10~Rbb*wIi{JM$ zfxtrE#+WueLT`sG~eD81Dg!OnRtV!oE5fSbX3?eTj z0!_<~RSekP%`MN5roirET8rU8Tqr~VN|=V!B|9MQcr_-CSOHUT1j-O*bum1I0x%0v z2!cQcZ|X)ho14hqfXv*rFp>m-4;iV5lz^!PfUq8Q)>oHX0ePe?))2&jbi@Yd5+F?5 zfSFK80H?+q1Po+g2S@<0*-RU?n*y$7yOz#oL!P*nwZ zAd^Uwma>$k!c0?dd732EQ)J3S(o~X2l$Lcd4^q&DV;`u&3es&fP-qrvcu|5*F+qw^)PvN>QZgoTb-h=gd>Q2o?^^40 zvz~E-c*@CQ+^Lc=?eAQD@AA%?#t)RF))Ipx--B;Xwjv#SF0n>K#}(Fn z!>*{EyX~rn3C%pCM0ex1!7S3-($MPz>Y1^dT9%D<~bWPcL?5xX0-k^IGF>_3G@|GG~9miYaVCUH=2Nil^2DI9UMD3Vv zYmlddy)Sz=m>FRb?RFTdV>M(u>_N60wkeMy1oc((C*$AUmZFBE9mxX%Wqau}rM+jQU4@b_Y!{w#T{kpjUuH!1Fn#CDMA8DQ*n z^C)-hO+Awr88mfor(3U{y6deD_lj1-YFk^4S z!zt5lVmR;W>C8RM#>tK@SJ52~*_+G7Fnq6))0`AL2>Nn~kZ8(E)Yrn=tA^!6dDk1| z#kcmgj4$gYb&l!oZlH_L&{`eornj4>BcR$lyF*0TE8NjRq4|x7Is1d^Ge~ zYxL8GY*NpzG=BkxJ14%{r;r+19Lt^eRBwMf6kCm9K^3<)GrFh3C{z-XXy}NgSt*X@0&>z4(-U(`t11^lvpd zS(D^+Mkp>gA6tH?y^hCz(KMzdC%lb;(Mk;@)r4cGiv%oMw>`!@3{YSV$3ob%AvvwM zd#|A+_jO$|-s?*hJK~u){QWZ6L7F9<@id^H7oPG&CMy{SQui6Fr1gF<%D#i;dirGq zP2Q93AeI2UfnlmO<%pMUk4)M=rQNclW*IE{Q>Fy5p{8&gp3w0)Wf^+EFm3ufEJoGd z3g0N^*}ev0Mj+NQ8RGc&*?Y!p4Gy}#eVTbaw6&7#y5<8PNzK*$501re92jGDg{#hFiI+;?|f z(W{J}^Ftmqq@YK1YtHPGI^SI)R^%T2^`tVZYV@gD<8{kahV2AI1t;fV3L5Ti645KX ze2hUPlLPb|dH4Bh1aU7D?>)K8>P`sI{S(Q~96W`m-@hy{;m4wUZ!{-6NN;|PhbIOB zK(lojVxwy`6+(`VuD#Hd0XQ(qEmSC?A&@A<5)vaYm<5-qt>HcD$h#KyF0-%9y0xo| z<$5@B&03#rT|5V~d#|#Sw$!0)y9s1DGV3C18VH?|kR&4rg2`G&R? zy>&S7mzrX%(mQ`X)AOqDRpa4(tqxeQRileZ#aU~tr1LRTtU%qIuIFPYFiUin4pde! z^D7v{wPMO1E6U0&*&VnAa=YL9jTKjsym`S9Q#+Ho?$g6iyHv}wU8G{|EGL@R!XPegNKy|eswhg}uPK_$2jTZjNeR}YhJ@z%K!{rIwa+AOTo zJtmKzu8nzYP3E5~o$WNNDY*pe3Aw3caYaOf6l6bzio8)q=USM!kLgI?epp#+HXTLj zF`*lESa=?ChHRm7GX!~l8x#Z2@%tK2lkEQ=6>TdgF6VQ^_Hv}040+T9$f*GUotIK^ zp~&GPl7aCEMc_tk6re~s9~64$kozEUo`!ZjQ{rU~y7a~{E)fKeEpzFa8bsK}0B5=f zq2zTLNkRzg5F|+{BM4mx1!HMF%y93*DpWHol#99@k7}USy!&)Ux8Hp3db*yjOH<&E z!+i76$nDn<+RD%^f!|oUz`z}{DA*{D#53Ctv6W!}v^74#JL3y9hu=G zNy1i=NYFMI!+Kc7MVS#rk^`1#WsSQBZoq!#Wb1D#YftypStO#kZIXdWCfi926bTpE zofC2Q^EdoA<}k16lAAvhG3Hx*5I--?aYHa8{tjV2Sz`xgtP2*M&SBRhG62TVj48`h zwQNqYVZi2j)|I_ePaf~%kCzwi<-B@!>&rLg%HheWO=88PAf38c#HJ6Dz)EG)vw?1N zBxrqMm^kou)LAqZ+lK-05Fs zC@e!}fuX|21Q?cnSIe*5x%{xhb9;G@IdeLLfyF}4k>j0Yv%d_Fl`tbru`sz4qzPg` zmW?+`5zeXm9I|&#=*HNOEF7w!K@qX56BtfO3LI;Rn|<#$gXk~4(HKW%5G0gt!_NyZ8LWm2QL;!?IY%=)H>@T}gTxb5DhiYF zAIt!{xd)!m9#2CdER%8mb0AY~E|r-NX_FkXHJAtGabz zP{v6{VP0;gRvhb~D*(Q#G$>KTT03sNJwHQ4-9X#VnH}ZQ8htw6pIW^4E#a?s6-5uV zZ~UJ4{6e$al3e*=Z~%N31rK!Bv@p{wd#oEoj9xbHJKk?AXJ!rPQ(DFBXie|io%?

    o2#3v($6m-NoiZUxtB%*sjl6HlHVbW91t8@>2qaQw^{y)kJw) zq;cHSTvq56MBlfZtK#c=6;q93OlOO{O}~FXHV z3hK^V)mCcMojw~F&2f3(M1o&P0)eFCtmz!jdUIzyvzc|Iqf8ucaUb+Dg`)KZOkyL6 zioL3xU0HrJ^C$B2TQBB@% zBgpMn4vw%#ckyKpKo%;%_>A4m+=t8?i~Jrlaf`+A^@SZCEjE$P$lKQXc_K(h99BkZ zksE2_sfr_O4%Ql-6PX+==5fN|m7l}%`{6{pCYrkQZQG{8dNs6m-D6Xv-DA<|SD77Y z)QD-lVHmvOnqb%h+$cHHa8Bw1LC~WSA4Q@HXxB5cB;4;zRmtIaB@DTqm37`!=PMy| zj1R2NinQ)+YPYJLpWHVn2f*NnDM2qU&yqB@(vV4SW=)h+B>Olr_D<)9^8AuT>Q*m#h%M<_p~Flvj=LG5#LIpcrb1DXByPN02bWMiu65+F8|>7?&aE z?gbGZ*N+4aNZ{)?yE}5-vM@4$LagRwoMVSMlnEfBF98`ql1Zv)hxXOHbhsI?a)An$STD(4_aJk ztw(NRW2-_!I8!s;5%$)Ux#9WunSC!YYX~-h#mV3sCp14W1VHMi2OB%p{y%{AF=vfO zL`nGo5Xq8vU3Ogyf@9ARb4qHtb6S5a_$W}I>;wJoa*IDu(yf<=@?vv;Y+V^!DT;RK09J7_mSHxO*-EFIymJs{)040*`KYy_EO> zC;{lJyQhrNl5ng!BEvz$wON*PGu?g%+h5Cg=dO6ttw*iblpQr95QiJ1o^ji%Qgwk< z)ID08Ry8nM@dGW&OOGbmN=rH-SfbgzUSHhi_(kA}A~qs{98j=P5|pGQc)XlpXBpX@ zXY6-XvAnF!t!;SD_@fZA?65(EN=b0|;Z97J0jpGJjB#Auj3gJ)wib{-K3@+js<_`C z^&F1$cBVK2H@GoF=f&FG7rkbHpa2mmudc;gH$d1F2lh!l>+Q0tyfjf&-?5!-c0m?9 zZFud`obyF!QQ|We%_UwCXM_zEeLV(EG1SE!MKoJ5;7sl3EsJv#oMl%tokC+NZDkI_ zG!YgVC|2i+5^Pu*@arR3&LP{E`cm=d;_7*`R6J3c-BvE-g;U^??We0X)@Y z6WuA1v!6+|d%&ZCePx|XOslWN)dOQ!$@R)QA*j;==J{&}oY)ziJwI88kZR|g^g=~> zUW)dX<&KYmx8U_IXU(fquw)FyvFWW>e){eef3?2#31`vuNji?UXN@|+6yu0DUYoE= zJP)dIpRh{*DzfKy)5cOe8f%OBdQE9`#`hGi*k{QOoi_~44Tmjxu9`!xi9K_N2c~h( z#&xp=V=dLX)S}bgEjsmwUE&?!j{TZ7mVK zN2q3*;g*SAI(zTOu34&eMjdE3>Akuxw=ns}L+@F7UH5tYKYExeRLLIu*IaF*aJ4oM zC~994hOT6j7#=2J)NG{f@j_RIE=lli9SO}98oN#=iBpj>x=EZJrEr0>JaIuK6DKLC z6ENyB)F$!jIFZST$GzLY?9&>nb(F0PS8(HKdp|7?PCO?29A&gJf3|j7Go#N3dA+lT z3#t2VyGsuE^Ta0?)4sKq+MxAAZ{q&oUGsXdUqQ>bz3bU&qvgJsCU_cS!`E9sdSYYd zYN@@Nb6y%!+F$ARe5HQtvs0?^UwrZh$B!H0{E4^n`UT@8I>CO2^J@+?_8s*x;NBdu zVf`6w?W=q*4Y0u`T%L+CmTJWC)*WSSFRoZh9JSJ%BQ>LEU~hSPcf${9+4wP>ZC=db zYx#Jp7x`WKKKz+g7ib+nkz9Lbh_a!`X@uB_(v?6lxns|Uj{W9d!gOF$d z)F=Yj7>r>$*Nermn#W@}pQHRQjb&FFK6~KTE#p1@w)xD~c=|N=?l9)3^WA9QHTN`m zt9RRujq0$+U~bQ+8YU`VR`H!lm9IO+d_jk)v?CzoHnQMWlAWi9@l0vU*S+aM;A~1V zTK+>=MUR+sdLnY|GD+WWi#Xr;CihF0rm<4c>{8VX)~9g&?DR+|GxKk8&TLPcXN#?g z7rttRri=HZp8y;Q%vxD}55%Ot52`eul;ft(An>XM2zl+?b>{~r_~DZgykdDbOuW;V zVOQ&%ArkAS-hjk$baa!Vq=|!0md|XI#>j+k={;$bv6XG2l!LI<1mUNA^8M50r`%@G z8AR2^vcxwoFdUY#MG@DCC@pOA5i)NiczG;gC|IA(CjVSlj+0ccw4s2{ocP|1&(g;y zPaNvRq6<#@8zb_rp{{srsu_B<1H-mM>!s}L6(2!;ugH1r{aNhenn_pHRBg!8TV=<* z!dkLhZF?{4oSoINt9V^8lxwFgfzpSzw82SuXmyLUVdHM%Fe^P^{ChTsXB*$21dI39 z=JAU$W^{oA6{YjvEc0KDrdYt3DDIrNfzI&9y>7u2ZI@;yD1&$Fy1Jjj7tYvU;MW;b z6!P31Ro~V$boBV8XV*99@epI!^*e4$JNq{G^Yg7L`}FSkZ92dzFp6orK9aO1n6UBh z(Ioj*8gtG%RMD3AX66}S+*X9z=7q)=j!Ku0nGr&^axf+#wL%3%iIj~IVDbpN@QKR( z_HNj_?akOM-rCB_8Ox_vJnGYYS6CC8&8v9LP19p54Qez514MvN>O+}iAI2aEh!9~C zVhNAf58u`P(z_13XSQvr>|J#5v2jT&Swp~5cbP$D@0jdQ zaUxbO`Wdw~HfYNguyiTE-JR-rkHu%^cf<$IwD*bNt9b1At1Dc2+J%Z$uN`xDf{rfL zmTW`reE(PM{67zw%m|189P%#5^X?F+(;wjF=UxX9t9b8VY=U%P4~b7+TzL`at{%SQ zo&)2DZTV3C|MC9*bDX9R+Q+!gi7Q93Xs8}Q){{&`+ZZbBk_5o}JNTQkP7su%PQa>> za#T|`F{^<*wVd8_g(DT=*%F2_9xCi*jQj(K{J$@1=z!1CdF!tIDIM0rLG#+J%@U-H zyAr>ze*OQiZvH6_usQGBo`kdGy2+8?JPB+n$Bp>^;r1syZ;q2|uB>$(Vp+T*reGh( z+lSsge8=_cd|`10SbVPLrj%||le&&7$j)-h?n4#dV`@VRQ{iL}Us~tJy57Z|G0$9; zHE3Yi^5Y%wwsWD7)k|&hS4}O1EX`gn1sm={nl;g1jzG$MK(>@i5= z^%y$fK#1Hc&7l(@l6c}|$q1HMDGoXDs>Tb(WoZSZ%hoeE6uKww|{yTC<2UQ%X_Sn=2puF~ye8BonUR^Sxf7b%l4PcEE)r7IkoZ^N;rZeE|2ifx7pe~`my%eWOyl>} zU&#L@@^9j8{aR;@HlDLlo=zqx7_{F5Da;oCRnBU1=X`jUl8*$FdUMAVy4CA*dnFXej1z|DP_&Fq19JiRVuSRX&i`+H0 zYr2aYxw(K4099tPP{gUevj4JV8xSu^Ba*ujEEze*>$f<_kT%$*mPmKL`;(P5U}-*A z!*jmBUlwEQdHhZJV)Ri^Eq$3J=z|!Mg86 zA7!vWa{+)_VlW8{RMP?OYYdU@*?oPw+EghzI$E=fheja|0=0Gydh4DUXVBCKJ{kq) zUFt%#U@0zp9ClO&E-rpAnaA5*GkSBzDeg~xYDJASX86)}rk!gV*0GevX`HEWh0iLp z^%aCRNs5+8vPt-$%Pk^FKK>Q)(`L;T^a(b!Q4))C3qn&#aVgxz^F6CD=-}jlj>y!U zRK%>cygJI8C(i@doUX4!wRi%$V2l(m=pYpTrj!Yk4;q%~@g=}J)2X-ttgI!IiPqa+MFuv_mwX^Ujt zS0gu32@I-&XsO^Lb0#Uds5FFP!;_mC8NjV4p(^t^PHyD%|}wX0UEvzdW!>XOtph>}uCNfnz`r>EhDWWfh2@~{&Wa%QomWV0pG zWTehkJSwyqxROaFw$fTimTC@84IIKs+a-qBIViJ@;%Z+LI=p0wBpOe95Xcm%Ew;`# zGfA1_SAsz%l0^cEO9z}}T-AgPSohq@%djk1+pse4;$sr^P~yJEfI`5E2!upVL?WgE zmc~3e&HFd*o(IF!)QHLw=dtQXa+YSoN57@^CJaaHHL8@0eIgv_M zr24O1&*8qWt~Nr?1?(IwjF*gF^L9eko;6szt2#5Gb#r)C_QKw8dwN)-B<^s(X&+&X zm1(g(1t^4&0WGjIDJ{$cGLYLd zj4607&^ERf(l?ADnMgIH8rd50hZ@!pZH2w{*)ZsP_V1oMK<$=FUT}tGfo*`>3u$eM zAd_G=!7E2hw?Zira+GooN*O{+MI60Wn!W2TQva!4G|41UM4W7IJG5^}B7r0_iNR9a zNn-Al#~f7Rg`$ZHQ(Os|C26)577eGQ`1buibv(8`d;J%_e5<aA|s4EY>g3v(@YRa2_%&AKvL*dX|@8qvh;I~9vqiHaCcAX|ZJB$-cW%gVe@YY#ErrwetH z_-cRC^$x!pN(lsl#+JJhNhJM`;#nk~Wj@6BHID|l#e==7D4`WpPS)Vq^}lai=eDzc zIBKt5W-5q5gN#}@Zg{j3RA8hDNmSHbiF>Wg?>Z9O*{epbWy@I|jP1MH&9!eFNmwjI zq?2xx1Yk>08Gss51z=t;boBEPIkxZCgIcoEg|vfgw#jNzHiLD~=d|*<;qkZ|+5s%$ zVr2l5h$#puKqLf|CBukso;c4Ma@|(6AZtiKDF_7wASpruFaa=7P}&fZ5RuMnOp2{) zUQJ-8 zKLLP6G=pZ8)N&!JY1t^6fZ6MN+wvcZaLo>d|8~b*3c+UHA(E_v(fToy$L z6P(ff3!L2v>d!NAsv4@^^GQ0WpB;ExBAj2uRUDJXgc6%ra+GMvT|j6G#x9CV^XGyz z#mPL$jWC!6pFDT{x$imB-yVmI>^~3^KobWzK05*ijA)X4&$nVo?Mm|E`xT%< zFb;aim7W;4e)%MrBuOVFP3AaawX`@oEb3Hm2pv(Z;_grwI3&p?LUWyfqJ;0^B!sLTG)*z&- zMxeq^hu!iyX@8HPw=O$7FGl%8=(k(lju;)d{bTr6Orv|+`eM$Hf+23T!KP0b^|(I= zW76cPx4|rN@aTfowGVz#+I(SUmz(}meQVQUPLt}34)Wj)sys}z@zS{Y!(c})1yVQzDtTSqZ&Z0Cl1rxWQs^H-S+ z-LmnM*Q(wjpGLxG6Jf+{iL>lanXJ6F47*4P*-_aTinfE~R-O4C8HSPRPQd# zhP3E8uY1mA84*hslc8%~^=139YI!kUHV=As{^)@4!z4yL&-)(TTArD_$DC*QodmekeC3csFX z;)yD!1f$a=F>ljcZL{QE$_8&ZDF&OXwwT8_Rl|&37wPUf>O(j} zG&O|nh@s$ zJ;q1&G~;*8gK2}iTuXa(wwueqZysXee&X{hO*#V&YF5B-SVm+JI^z9l$>>LtJhR(dUQ9vExzx#_sDa9N&}osOWI75yG=yd3E>k2 zCy98PP>&xg*9c4TgJtVfM@gb6V5GvK1fgd#*e2z_-s5cWnZ47$f4#bQn8VNG9DT)K z}=Q7?2-Zg0g_PqDH27K5DOdD8Ws^D3~q_L+|SikZAkw$i;e-E%dZR(Z~FKDx6fWrETsp{T-Z zNQY9%8|@Am@3hK9qhoJpny0JYH&{%pMkP#jP6 zE{Zz@3j__a5Zql7NPw_daEG9aJM1EX;1Yas4elO8rJ&o*9z>@sUo!!Kt2}0I#pxVFb=&?@5vKF<0z&Z~UNMLhz z?)VDXc(AT_SWLT0?@}p@;o^1OYE+m$@v))BG5PSW;TOB|S#E+^p6PzhWb*d=hc9m< zGflw4w4#!ZHycAA#jK|d#nRqRuTLh%PJ=YcC)wUsHAHj}HRa`JG=soORV@QH&ftZS zQ(~sJ6;r(SOguZE9?Og&nxLje;YQY?Sd#Ex(M%Fs#+Os}&uTBL;kxGUMbNEOoVfEa zN1Vd+a@KmNW7QYOxMzs|U)-jE#fSP%8s(OXbdHPA0KzPv-r>`Jk=9TyZj#s!Tvu z;53i@5c*VW!p1z=*t_bqi3a0_AI6JypZ9iTXa1BQY_LY-AN}Q2c+K|jCgXSCPu-Wl zhkq!)WWrM*Lm*EM|9!MO*LK=Q4fmvuX6QY(&otQ?O-uHUm*)3(w6=Ly;5f+6<`TNO zAo1(2ZXbosrS>l;44Zx}?q5c-3^fUa46*0yR!6rLk9uDc`56eUnMGypJ>K+e1=rA= zt5!f~jUUI>{j~onjphTf2P*YmI`24xZP})r#g??kd=!<<0vJ z)$qtgv@p2^@Fr|pZXoa0l@@Qa+5?vkWcPkFuPc+7BEi!jb$d6di3!8Yp;k9KI*Ek7 zd=NytPG5ArS58H$1YrWn#_svxxOcmH*0mT0T#TGQLG`E)q>Upxw#Ij)jMk@ECm{Ng zO5@0>E@!YEezk3GySU8Az+_6+Y@7emsqClyM(;avNA?bE29TkF%jj}mgGm&l;c_Fy z(({+GUF$sY$x$|FaBRmYTlgzjFJw8Y^*sOz1VH_|NUWy1H_lE@yC!G0yV$^*78sy} z;gt%xmhSCUFU}4`sT{9IN18BqbltF0ajzebI@MK6n*^UZ*wHU&(J$wOX^m?+puEoK zRfT)UDgVcC-erFu6Dj+Lq&t_nypqzo4IFwy@x?-+}f?uN+WrJ zP3$S;Ez*RkE&%@R&od`KTX=uq-T3Qed4?a*h_lWbeIKLliNa>0Iyo!UfneHj@peMkm;wzT+O>TMta3EtzWFDyhyt~*rhRZ+R}tr^o*R~eNEov zR8%(tCu^ClW5GfvWikWRd*)8sNpAqh$*CGW8*9WJ@5o5e$dp*n;zejk(IFb^=YIW2 znMd)kSd2(-jw59M8s+3kR&Z=TyUFAR9KPL5vz}a3wmp7Si;bE8%iK@zz`gJsZW0n8 z!H4KnMxylXY8+5@kw2W-D$@BA9upL<1a?YGLBoOWtLD5@qsX}j*3?SNK@WYOj5H*l zi@S5dQ+Ro<#i648BUD#MV0#$*fn>UBmlIsV7I|9Zphh$2z|!38KeFe47Sc7jcd8qD zrXl5d)vxFy&C=L!huy`99uhh8-Td|XREJ(hm0r)>Z-Gpy9Yj2cT4|GU68;RcgGB5r z?Xl;fdfQfDu-110`|{`eigow!j2&SO{UvU+7Na?}<(Qfck}|_H$@*3V8`1K-LWGNppsMQ&)!R$YtA!dFLr)Xpy! z6t-tb<?KFVq}J6G3JSCBeGC_&0!IMcnmb|u5>`yLRP1*@**Bcm#7 zD>q7T{Bi2x&FziqoMDuU)+Y89`C~h6s*6Tm)|s!O0^V~;NnxqEN>VI+9B_@Jy@ttT z&f3IC9$qLLGQJz-syAwTMyL~KP2DXuyN*Ua_DwGhb@2Y!iD)O}N?^;No`-%FIpsZ; zZ6@z*9GEj}dE5i9AUs|#d#e`lAtup}Z4z(#oxSPYdQ8YO3YIzZ(ORY`?it|RO;wA% zF-ypCcd0MI7@ZW-DWd}najrv_z~W!!jWOuEb(B?qk3IWd!C+(dI^-mDYQ==*Oi5x7 zsd3y~g=Byl(iJMC)wS%Tc^)>Z+n;5XSJ1>Zm7Ahya)0f2?n!xk<6CGpyOt&CD(i!5rI^vke6}qih1WO&3>QuaDv;r4$(nZx+&Ey0!I<8UR)=B9o;=Kez_iw z;s$=LLb?O~i@dw(OP1pmaCo+tKSd$Ycwn3Hpiu5&Iu5k;HZuYJ1G`as_sW#)$x5B8 zD{g(LWJ*20x|iKcjpCPlB&G4ychg*5)o?^EqXl-UPyWs8gHyldN)AWtg@)O2QSS^Z z9iJ<)tHHQ`4HT;VTOs~w@V^_B>e&hq<^GQ z2%c+CF0@#n;O$jbE8MP=o|OGg+H=hfKUeh);foAl4987#)UwgA;ki4?^9L_Bc5Xmh zW~*Dh{N$;UHJ#0Ig3kiua@v8R+Q}`o`9@cHP|sF(@p(tz^YrQOz(*qL(mz^5}nZ$HNe=|4VvyYSUX!R(Z6!J}G^kIzstt))@13QNL34k+3G$ zwpIfJ)3~#uc8NG-P50%dD6eFpiqFWzLd^=$vWvuHj>o|yG)orKB!%Ib)7bUcb+cRT zqfv^zH>ImZITw6sy9G7exh>|wSMTHIVIFzl!E!DZg}9NJm9l$xPPo`$Hs7HFOU)Gb zYL6{A#LNrGSzZm}yZkBcB@q%!r`;3J0~zgzO_vIh;3gT!Y7y&<2trY3YF+=!?RgtNh~3d&X7`u`Kb8XtO`!8QiN!b zfq#B^52wvyb@#UCJ?it0-0kwd8UDhGV1)o2Domq!a|k6+>5PIILzh;UU?JXQ0o0JYJw*=la&a#vn-Li!L`vu9QRrN_obUv4sc z?G^|~8hw)Uzc2Ug6`A3qx7Vs^>Gf(3B2)cU{79v1uAYw{{#r!b2UuNiCz2IwviHeh z*R!eG)j{^XTRU1O%!0?LbIybDNZ&KTD6G~(cx1>NUs_r}zGL9LQ(Amb9$L9c+q%C! zbE8o90|w8xWm`C{>FHs_$H|urFAN32l<6~(wey1c0z64hS#wVG&eHc!) z)-pPT;=|sa)gjkpxRt=h>6eok%Y4HWPST{BR%UZrCh?_C0TA{hX&BeX9zEa3?rE-I z41U^~#X}1;EIc&XDW4iQNZf`ulY*O(#0JiRnq$Gc;zV`B1+&JGLXTw$qt~^R79G zSR|NVjS|deK15C$4a{F5MZT27c;6q`MP=>}(UlVDv+LHFNG=_-W|;qsk~!I}w}lUT z%9I=AO1F!FZGu(ua=WuYHmTY}>78O*J%g=5Sf#cK8XLZTSKJ9K(N4_i9TN>zit z->uV}-g$$zPNnOUfKrH7C?9Jy2u3HN->xvut%K*|gVL;fo>H}%)zD*OZB)E} z5Npd>e%ioduut?)GbUyEZCS;PPtzg$j<4#VJ@~DWrAHdhsa`zFj4O-MlGWZjBKB$R zotgSQvZigPNfTQyI#@Lu8*I9|eGIA<$y?{sUB4F(D{)YX6ele%TQT`ySQbIJpOZ9& zWAml@Dw_Dy|A=d^t1)-f;|fI_r7|9k$&^f56u61{gdp|_ItS+yv^qK%9BRUIr1*tg z_G%72;s?nq4ezh*_{nOSWc8D4hY{^f`2;7${x7DK)QV%nCRc91nn=p49d3GW(*`1h z>hw@VJ>Iou#VtZ>Jv(J5Scze(Eg)ChSDH*1&?Bfwv2OTx&~rqAiDo${$M522G03Z*mk1n+5x9BM^SN#0ISTQkTf;u1DRQ@R_f zNPA`agNbZ~e2fi?;0iLbOZsRi@UOHa1kR%yEX!;Ryu0Pb@AMV2;L=%o{@giDa==6b`6r(n-@Z3py7K- z3;j9P)6~TNV^ks)v!b@ErZH8B3x#X}`|xz-X%o&S%}i~F4gI3;=HuGvd%lLfC)wppU*c2^A8nntGo8gI}PN0exzhmPpt{jtiU*pV!&4!<{_&s?l3OY6$H?cgw*@hKe;+)|&Mr48CRcc58> z{o01N!|8N^(*RhN*$A$Irk5T<(fCCI61QFkufpuiagl4vblmP;wb6J^Y`v)JaIo+3 zTJQ3*P3=T)gBgkz0oy;`FLre!c6@AhDS=|0tarzsWUTDnoJ~~#_3cCm#rZZ4%*@I; zM{tcLso?q{xSS*wWdIpvE3 zjU%D+fQ|)}T|oO;H8LqiJpX5dQYp9DHNb!^OGk+6^q0R6{FRVbHPmEWelIFD8=8{3 zzuLXHQXlb?O^Mp)%B(HHi2fp3idBW)K$ub*D&B_h#IL%8dcJ_}W%Hn%jiw}WsmY~s zpz5)3FH!a}pv_L@DU>ybE&%?igxp!j)Qh!j|AlGtD5F(;6CVTe7?MIFkSPQb5^VI( zFLO=b&Nmee$VtmeEgCH=RdEuS>Pdm{rKyR{+G7qqrUM$Pr~w@(E&98k*eB+*(>3BX z7FqB-(ph-+yNwi0D#|{(RJ%DzGi0Wp>#xq3Fa(&fFWY!M zbUCIS`7El-N@Udoj~<`cxf}RS&phuykS2(83f&MQ=ZO-~yT|^=3&apEf&l1y%p*^m zr)r8#%71Jj8R+>xtY{(&PSonD+L_Io$qur$p=2V(*KTr#x`OOKrvcpr>-io9xbYe-yCGr>%`) ztGt^i&B9=Y3Fp$Og;L$V$Z)-LPwij^#2`FXkF$(4=bQ0_${9jAid`zGfPBvZ+%Rx4 zmo5^z107g=rICO@w%Kk))x7{YSFh!C*pH3sgomu9)|rBK(u@6VAb?&j<$as(<@0<$ zb3J`8hj7VyTi<|92hq;M^H011qou|?`z^a#a3la!k|$I)nS3OakG2Ms56aVcW1iE7 z03RkA=xJQL#rVVK?A&=>={HpVXGER`XEYts5@Wcpo_Ysi%qva{BeU8@qPBJ?CNu0! z@Qdu3%w4%#Fsf zDFUzR){2oVOSSN(>*}g41qC@Wid-iNWJb=$E!z5&lA!q`g|T=>XD&pzA!2+Dj$N|! z)vZyD<1uI5=G6o`%1HE6z9xeXICete<|O<;0R5APfg)c*^BMvQ%woF(DMNWnli}of z$h_(Hb%3+>#MEBLhOBkT&<8h;GrJUN`cFHa+e!GVoy^F+wx#N5*N--w#vpg6gr5T; z6aLO=-GC_3x{c))ah9wIAaV@Gr@z0nh_nNb0?H6B@c;1gU!g+yKehM2Yd}CID7MS6 zzQ$w_KCi)EyuSvVtbr*49s9q7c&VpG1- z|4`X=Il}7esMia(C{$(OX>6|NnJ7ihcKRUSbDD4!hUJW^+C7h8o9^t?>wJzhD~g2L zc$B~c+~8P}Y+h5#tS)U(gVtBxd9%-v#r2~5yu*N$dJ&0G{?00mPSoKXP?pvESPR(g z&f6^vOVA2z?GPqebw*K(vU>J*D@`h&#)>1!p=vGO60m8j)%I>fEkBl-df_$=^-1mj z8BW(es5PFQ^Wjz}a(R)@Xa2Ayj&mypqNbhUrZ$Pv7Te#MF9dy5h7`HL5Gg`iW1Xv@ zePj(q@sX$dam)fx7Tckl_EUeJxPg}o9MKu8-=w?Dn()pA_5k|Gyv(D4>d_i4bU$L- z0M$aAwgL-3_=++G2O5Pi@u z#7{<|)C3^F`~N{gtT1V+zuYOxYLx-V^*<6wsX^Tn%=+1hM?pJ@Zf&oz>5h<``do|Q z-JK`e_fvdUIK-!Qfx`ss-q!V%D4x;vTqw|i<>b?L%t=5tBFQt!l|DFUwN>)Q+{GD1 zm$y>g42LFY>@?K2i%nT{A3m6$EM1nm>z0g-kP@OWo3=M!M(-aYMDfPmEhH+-Q$@hAx7|ApuOb23}w z)Hm-=%P8d5Go`wT=Gv|aoaAQVmnGg7sckmB3P|ZJ5Edw-ZdX~fpk<`(rlwt91j7SL6ZWqI7<^7r^j0JWyOvr1@1~Nrg%s>v z*H})A8^r8P6uZaiaV)-jj0MOYwOx$*``&?gRy-3)^X~VoV6iI*4**o#2lCWoux}-r zT1xcfX|Z^j2PH1ymL>E*!2eftXxe>~4TKF`w50;dKpVFE?7RPShOpLguEN&b-o5Rv zY!bOl=lS2|Z-Js`uBWU2-I#O=wb{11d;j!w3Mi06;hc@eLI2k4aHQqhiG5Va8_0JU z4%-xi+J*W=MrI!;gB4&G`8^0+{X3?Db!L}ZXfG2HI=Z+-HYOyB)|+4*3Iq{ObaqX$ z%)?XL73MsF)NV4vb5Bc1R{=T@J2nXNJ7Vl8uyX1@n~SpfVEiGTrx^gl>~(n-z$mXd z*Xp%oy5Qp8MB7)fV<6ZA;HCSY6xL@*)J$-#`3g$7UI(8l%TbTTRSi)b?4tl@7$Rqm3pJ5jD)MXf@HTCW`;|GZK-SpW zV5%q0laABn9yQQ+eu3_jQ?`AzmNCy{SY=+VH(jMcQ|w7i>3*D6ISPQ%(_{gXpKK6M zE=W+Dl%`cxPp+=+xls(9`h?S#iRew-tV{tdFtCj;F8$p5c7xH4O~fnB+5o+MosX~l zyJx?cNaOZ0?R%hbCB2v?8mvj9z_dI**6)2O&9YRzGo|_Xc%(bmv{$x!#bZ-eVz2-d zn)ZA^$vC^(?;^6ykdBehz}U~v?|r3BLGp7*;7co@?#W&tg=~`x#!A02{rZJ%a^o;u zJj2Y$P~##enrkQnEXXO15;!KZUCTWkFfSor?50N|k^ciC0K|nYcWku2Sy&J*EV$`o z6{0$+k5%I@HZ2{?c0I48(fs^23+N~ARR|X;S()Wdr)ksmVvph9X|R&TRt^K) z%)zk!rzA$zdD{~VX3K%Z`;%^b=McwyMpkJwxoAvwEJY2x-(A&3MAjPSvQ64A_D7#uD!orZ)y@>oB_=KC$aPp#=c=vJEyNY( zW!|<&_2mDkx|6PR=~38rvFwZEez;REiVba^1~IP20xS zIEmMqw3lD@9;cSlN;+JUsSz=&;wmfJSHY2 zxh%BcnO7GYjD&vH!VJwXwal0E4bt}XZ$vBGzmvsEqN8vY)3W>@a&6&rX~WE>VU?(vROQrD!u)gW!JAtaT<$C9>OXlRf z)rDVxW-QqVu??i`Xt;^Ae>=4ft6zIdnF~W!s}#3bxVHX?m;aS_sJ!~v87O$-$e^I- z$4}mk#c}^8$@(w*{N@=xrHY=%^zQGdEVKNn725*P(=w`yt6_VaG8)5PgCmn{*&~&; z1890*AZd9~T~=;VyG~csk@}wuiY1NJN+$2^= zpN}kVSyoM^nEc!XA&S~>K2S7@i*ryvwtTTvqZa>1ku< zxvd9=wL`EA7>p8N$k!>sk;_rg-U1h9hh=9M>zG|^%hS_~9OtF1gj5ubZG~AKFP;Y- zMqUeXbBNA(=v$5X>OG$+JPy?8ST*le^QN=Pr zas3w@feI_)+6G=c?Cr(cP7^bI%2nQmc^wU5HOerScndy(0dQf-5L$tet65Wqvr%-z zbH#aL*lboc#ygEXXko*4dMtGGB`P9CZKh0I2%DLj^BqGZngQ6FYy~J13EFISjVouZT3}nu#P$8GRnc9SskVU_@0Tbl^mN*$$V z=tV@6$^}v_YFgwPGty%r6^a}rV#0oFYfs*6xdWahjDmCmLg=MNFJ~!~2@A*-vOu-y zq?9klapa096Bv8DZOH5HJ_ zK`bUNjh9Kvlh%=Uf!M~Vu+M63G}MJXLe;?*Yd~R*K3tS7i~W8#LbP(@o!=UyNJu;h zpP`>UdSfMg4U<`09?w=k)BcU@?|=%zlhv~!yMwc0$C7C$Vf?@fy+AJ9e{RzCgP%1% zHS40`Gx3r}qq&t~;Ti&?u>mSG3L<68)tEX-4^hyrF!{9rtllFIMm=H?b5W=h`OcGxA{6dsS12DvusIB@OBTmGxRCQ zQWhK&j-gQ@u}rm``EUOMt4=d|_l9P2=bBNZPxNS1pNr;*zLrUEQs5KK3T+c9X{Cij zSU8qKG$~W)vwPW7`he_{@#U5bE+t!xs`N^+fbxHW%U1k1^T1m?N5Z&i=`s3D__h+W zbK$BDVZ*-@#E!>ZOFi;PNOI>#5zTS$1ocU(BKG;elQ)Sl!!t~p>r}?;Rk2Y6Z%ATpZZMy&M^5IWaWM`dHZU7lS@@>?} z^^{Cy1@+t0sNU&rj?PDi2aRQqvw;W8&r7-N$LvWi+6{Owk}_Z1c>D_VRroNb=^Ok` z$=t2Rew9?pr>a3IRzS-DAiy^IlAlqE4)-hl4R>^%>OI>Izwk)BIN;mY zaw&S_>1|spHVRvnqBL%5sd((&f>`Lx1tSoPYOky->NaXRtx4*6a|%JOp{$~8i&DZO z&AJS8m$#B{uKO52@^}8Td<=S%@8r}O|BwnOAhkns3?~|doyT4E1ZlTkY}P`0p>O4E zfH+MasXI=ckU*Y`Gx3ejeJrm{K0f>d+1`(|{3buTb$a>F;FzobH~bO=b{q;`^k^Mj zSHsG3p=5?pm#-uqnH9Xh(xPc%+uOXtGynGST`%^!I9Y!vX5@^L*i;o;Ot7X;uIr6m zH=ZilEei?X^xbuQ;_~pz+j~I1mqEZV;_7xmEByh$wN$^4dRL6*qo1k`Ib+KN65V(%FC6I{1WHx!n+mY-~gA)dGBOg-*aG{!)An*Rv&BUg{9mOmbf zf5&=}Yvgk!@shr3+~$SlC)EDLYj7D4wpUs2NjvqyAJFa36UBRql@J*-Q*vVCIQk6rnM*UaRHpd?sdkrs&)kQT+`0 zKrKsSTd_@Osfc>37?;B3BT-Wq-`Cu(wNK+Z#TMsWj?=HQlS{!HXWq!NQuglU=R4i- zHOw!G-mZrG!F`6doZHv5O)D_sQV&{dU=>!^$LI-uAqw~{{AcIkjWY9Bw2w^a<+DUy z*yaTWTMFkn{$p?kW=EP(Gve+bB6+9qJ=S|E|6w8n&E#^?GU z(+t6)m11m`y}qRr!C4YEUABYFB3x02rFfw+ul10frkw$#tnrQNTbIy3-G~di{Y9mFBJm`iv@S{}9iq!$zwY+G@=2o=v5b=RFg?uMH;eqABa+qy01kasCiEh*&XE|WQc~^ zU)kOSM8CaB{^H1|3_RSu3Oo)XLIyXfCQggIO6oWA%pmG#AzELI)N0jJ6*u$LxL{`l z1=iP<`{G8m+*0M|%ZL+#hnc!Nr&@QS`jrlTJ0R^LhTH-va)Pr)#BKv_L$PoC|5&V5 z)hE$AyMBC@-}3=hYEE84iWkmFr8b~2g2jPOpsQFyR{CDBS1$`)4J`@1iSW7BD?vFf zUd28~hO04(rfMhiAvKewOyU*twG?{>%M$I`Wet$Xeky)vU8WwIH|+#+_}$vIWCxmy zL;W9JBG<6;XIe8e(GLE#KVIR+5y+yY%E;}Mt6`E6kXr2;Vz6`^lJ56pGj2#e%Zq<~ z5FnFLT5xDcCGCb3l5kj_RnJ>Bhn#oE(>73{dOPlStJ}nO5*&5=FpM<)GN}$8Z;l=J zl1$R`h#U>1OO3dU42ncJM8JXDZCsP=u6clKd%q?(#Q?kd#&@kL&x`)^D0 zGWzQDC#oBUBSn2`W*hABcX#DJUo6z(Py*4$T-2e%$4xX7e>gOt!#-yaTo| zo{(yYgF0@r0>`A463Gvl;Je2Nr*gVe>^dIV+>+w2gn8-P1q3Kl89Z|3%7zU3hZ&#v z@C~|ToeqJXz?_fif4FSGA?vczE@^?{yBJPrQ{~3$nWP6cQeb8#W!WelX;09O#iX-V zTC~Qx_ec?~=jq_YE&@s`neQ-n%gN~>%u-CnNu&B!9`H2l!Ic;JQDHvs((6)YkWhP6 zvK`;pK9bRW)o8)5(Tg77kFc1azjtur-G1pbJ-jI&Y_~1@e+)FJwZ-3M?2A>e%vVE_lyFxNtkL{&}-AX@Dnw zzh&&-PB{Ea_R#z1pM3w&Pi}j(!D6aZY7Ifn(Mo2q&DSI1a4aru;w|-~*Oi+&o$#Nj z)O{|0&i_uo5_==^I(tbthyQdDl5<*aFBRHbg$9TTynL|Bz1cH8w|pe7V5i9&Ga4Jb zL~E>N{AF|h;hB89)dwqXsn$gMos^A8Z2!6*PA$4 zes3 z%q;_Pmf!7uY=yeOS6OF6u-^a11-?%v$7mtCw78|Q6~!8N1dyW^${-j zkAG6X^~8Dn?JyTM*bGXJLXvO4{oI>VRx5}jjuu3o*#3u`9v=d5rTp=dwU3_u=5ue| zyB4z8Mn6pCE!=oj)UTj0H4X`6*uzY?nVS6vBeRNriS`E;xVk zC1=1;5R{$JKKHivW$)egC+l(y#lF7XAFRw6`h|C(zCSlRJ0tE9+pi@MTEh@k8Dm2I z>D5QY0YqZF2!Jbkk0pj4SZIfCQuKj`xTWx3d_te~|FH1%~GJ;%Ww$~aLi^;JqOSbP--`NnF2a_ZR zFd3StVT)96WbNi$

    C#dwU)Z2WFq92+^Hw_`2Obg3*3n<_iSYM+E#~`sVTLpSx;6 zA3grrw$)6eK37*S&&e4w7uSr}a-m@_NZM=I%QqwqFUnWLMyDiT%k0655L$hID?pJ& zfX<;Gyzvq!_wU&!oqp(>S~kYM=e0nt63NeYDiY%dAz!z<^I9E}{gilaJ!^Xx5+yry zHKzy`C`I&K0620rJ>G=A91+L2Z#1XXU*8k6veEzbC;s@H(Uwy^px-U(btvUqgaZAp#JV0I}@`dO;(*;4!$7mxSeWJ-#dAm&9#|>4i7B+B;f0XA?fctA}oIq+=;~0HPCHv042m?Z%8N{cV`0rojTqAN}M1MlK8^5NN z%scAvvH1m4+%&DJ2my8QguL*TiI_Oa(2B?lDKwjp(PjRwZSqFFEX_n`S;QtyLEesc z{7D}B_~uzeO1G9wQRpL6#dAtJ5`XgGS*NjHZ&`PIO|4c2G{fJ_laIA8i6!3U71AByNq6{4DyjHjLlWTY8h;49vaid&+Z- zqlhJkPl^40m~R3_B|!XIjO!BtTIpU$)!l02tCYy-N`U0|d_6?}>&G)fTCLxppx6Io z{ISpVrWyDQWBkw4F*jksIJ^8^?H7EUdXX=smi&G+%Zl(wj&CvE`FU=7Wemfwe|?A> z;l+yU@;Ki7<03~A&VlhwLF^M-gH)pSXDnRwwxB)(db!ALbhN>oK>Jm@xYuudTve{> z?b-uB;~cjCr5XQ``NxVbNbqq5g2wwTKY<#Tcv(HD<9!g7%fsg3KgJ*l$?2d65|Z_k zO?VnzYe=I>F)HiW`^~hcTMGe;p9=a{N0|2%%^!!&SKl%^x3~rFo-FNa3AkSee%TF= zR?7n(TQ?HF{|V!vAk{Sc;4(bz`2&4g=qeb4NgU5C87;xRwITZjXvgg(qGJn@VMa_F z)Rx6!tR11|F;YkJAts;C$h46ZQYL^FQpd!E(ME42JB&t1A00a+7IZQj^pE~%s%6m7 zsYO)Z~f_ngQ98EfO~X^r>OJ*$p8;RgnA+Pf&B`M#fC z@VjwwOUtmj%(%q+uMi%CuRK)_%UtF=!}AG|;FSwuouRLEoLb=up%OpXr-LkA1kcRA z`SQO^FdH4t6H7k`Yf<+rLh`nD9$wo9e+enVG5yo^=n!d~$ueEruxym$xY?o~698w| z@e=qQpbR2uZdjC6Z_i4`18&i$li}?_x}p0=gG1bAnm4Rj5|Z4%f{eAW zDf-R1n5Vyrc?d}*5-fABy;$;+h^##eCd}J*^-hl*v(!Z&DVRfdRv;TcQ#2(Z9otIN zteH%Zz_79}sKQ|2`M&Ni&EWU@ZYLHk1>>88Hi)@AitbdK(fpe^f_;~M>YducD~U&u z-2uVUQs<^xi>CyCgu>@NHc)4`*j=BEOBUL+{4m$k-W9t0@WN~ zsIjZiQxqto$k>NQ?99ZG#BW3^Pas!{kz@|lB*rF8;;>C>A)t)btR-M$(jkuuj|9qT zmX*8*7-Ix;yk{axqBYPYtVHu+mc!;E#+%W^CbL1ukONXu#18MNYZ$$l$$n|l70L<- zeKul+L)|>riH{hA8xWF&8v7er66YTu6PcEE_gsfWo)i_rhmA-`;};0E9QS9K=YGgr zug4_Q(NP2xgatNv4TdiiD!}Ov>%sV5>aRETzuigt_~eEj)G*zq;U$SpIIT9O*B2fN zmalMH&R}x!raG^S4gTqrF5FcZ!Ue88P2Z}5jKpY4Gi?Giya|VOh zW0oEWQ+~V+eMdcy#y0aE7Aytj4f+0!c!M7El{gkUh6S@7vpyQZcTL*%ABDjDyeP|z zhVlG{6JCO-)U*5za6={oAf#u?`Ia}S8sHE`n^$hZfQYWW_as`?-V6!uDap!p2nfTQ z3O! zWf})nCmZb{%nTv%2V(*UFm6I8@ZT~Wa{$A`8w1^smVc%{_J^-ecs)+NeWhJ$nmQK# z!8<{bvPJXFH<>(|HbcB1Qb(;&(pkJ8^3H!}{+-umrjtj%)wWE+Vi8!|%tzN<7y15A zp@QHAx*<-coDy#AzgrvTCYLJgx9jq>#-pF7#cm)Wgo;Zg-R~3TQB~0&YzT{ z96d8>XVqL>>=vT6OjJ}N1Y=lH85!|^zJ2_?+0Qsm&(b017Jr9fpq~P(G(J{U_ZNP% zq~h)WF#Y?Pm&E0{=iiT$h>=^bhvUEBTpbXfYW{8gadDg1_O-HO3>ssP4&*V%{w8fj z2PE;FnHlU!4F4Q1SpV$iy#0r-TXRdGq~Y1g?@ibXrb6fb7gjH_ivR_V-x8Yj01E2Z zq9SU#Hj-MZ%3AUohVr6Xq|X&bGq+}SMQovI@8lKq6txtMzSydZYVO<0Qz)>ox<@~4 zc+|b0bN-D!AN}=D{p0oDr;N}fvTuIoC12kE-T0iVF~8XMHKAE(}jqN1IGGCs;B-ww=k^Z+qlixLDFPq~Mi?t^iRt5K|bl8t;UN%67uz zEfZ7677G(vTVv3NlY`Jc-hYgb8&ZiljBR|A8~*0ScM#d`yz5oOA!E-~_vEWiT9eTM zY9u<4)GIVhQ(xf&SHW8&2dvf#>^#{GRM0d;Lw0%c-V*khe5ZB8;sD=?oq@^EgpOH? zKJ&luSl|=E-H@6e?l&<%GykkfaY8`Jp&8;UQ4D2X)o()A(vL>d#m>6*zh3V7`;Q-E zBgj0T+-CG_>@pNl_X*T`Wm9%dh8Ev9`JHbDv!E?>i|I^{SX4a6HtWH^fU!X{okPEX zsH6m=Dp;i~S*0wTHY$+z1cBN#4>IdC>Hjv}qjq!WZyWXlwq2kieJW*bNH_L;*_YPP z_mZWFl#u=ul^xh4F3)*8FKG^)WO#di=kF$D)iREB{A!$T zD9I-ly22SeL81LlS7+hzyjEA3Nv7m*5a|l<`wYr{qwPGg=K$FKZa;X(b3hzTnk@0% z7)jTNST!l_I`WxpOOy;XF*GR%u4G{UB9~7mN);LIvM_CWt^peHaygAmFphcP z(&~XtJ8&60oZvwM>_!;xA-~`L&EL$J?!i$|=h#{+daL4DRfGk!3Rfx)u~90&`Sbfi z;2cwF<0E*VqXjjwgRV#-oVp5jWXzH8WG0bd%y9^+udBcJcr%X~pEuEKM%5S-qv%vJ(NN)k ztln(0DfD4KIamOPLPk74lK6<6?QP7MswjX z=W9F>n!ylIW@g{26;XQvu~^u@sd%{}79;I4D#}nzHpfs(HkD&=w)eSnJT5XO`0e^a zT?&qFXun#fZGPGR2Ur^8JbQDNG^a4 zj1UOL;AyL|va*A?jByH6E5G1a3V9YS(Z&O*?FJoZy!U1p7o}M5HpNwOCcTl_X^&OQK@hgnlOwyu~QR}j?mmdhw@LuH3 zyrBI{y%%Re!bJ96t2X|!LAXFv?)xm+#Rdp#Ux>n;Nw+++?1GyQd!1C+nyysd%A+lm z7ZVeMq$;@oJI1i2S`I@UOrpHXK*4J)24I4JfRl)ERmT?dV|K=XNcui-FjM>|V& z^mle6i>SGzL7E}uGUpTYPOB*zynW~dhJ|3ZJ39{t%irQn6z1A%!a;aB#@R>H zkGY$UxuTmB!BGAhg{}cf2R+A^MEWHJ+n8K9%51+Xhzo=>f2ue_-1Bku@_oP4^mT{~_ennbzFg&^N&%)1AFBANYa9>tW98kjGG?&9{HPeOSJHv+dj(L~`EIY%|62?ptCM zUv7};ugy2p1E;|zx8C*nF1z0KON>|~!$y0RCv6Np&rRYJX+<$jQ#WC4^q{ZgqxOJc z<=6ig0M$S$zbqlT>x6Cr5FJ~g-i-?&MoQ6*))UdOM(T;-U4Yrnf?emo#C<*9pHH9G z!hL<7?{?#v?u?A%K~X+YsIp0L2;2kAi_P>MG4Qx%{kd=HT|DjNy5>>&?dZpDgNtq4 zSLX!<57RNCib@Jg%iG_4{r?}?dw$P;pxlRTX^JRuBKS7&&sl0|oH~?M)gN`(=0E}< z0stZ)A|rLcL{a)?15c-GG1XV0dE=F{Eh*WOWEXCxy6nRl`afTP+jyTyC<;mvfu@wE zuTO7>?)zFfqdMoBZ^ty|iXdeK9Fv|I=d>h!)eQ8yPNQ3Pi?~IQ3AH71XlgPHiy+Hs zpPljP+3W1{^Yi23e<;{=){snv1!B$G=o)p(b*g{gu&{(e?MC3th%ONU8;0T=q02ek zwAm2LWZ6 zlmt-n%XSU<^)%Vd$JimKAf!a%iJQNcA@@{@ug8S3SvR;kM^>Rk#44ZxldT1P$cWgo{K0Y63`-T9rXYQbkgcQR2)x zqrT{d&_nV(C|>JQq0@}5pss%NUks6dQrMla^tDX{d#4EZA}LV*fF9-?>&FQF<&63I zg9-Ga$^`>WQRPcTq9U&j+A#FEE~fk7Q8;QG%?P}7$T*`xsLulNgiac#c%mVe{hkxP z7qC*1J1xl$<9&^ha>eNDp;MXNYZ7KvYpLV0X*dZ01DQyPnbU4PClcwPPnh*R*RkWO zk%&SJz*3+#VwWko-=L5Kh>)DZd>pa03d9s(BGS}E8EQtNa}I4B1vhWwrl13+d201a znscj$jNuatusU0JFwFG%V+H~gA;xCeO)ODelIS~b3MT9Ec4|55YkY`mY+nI$ zow~rca(3)@CS)r(S(J2q4}I<)5u?T&r$|V^6PXDV;}A}gJm!or94&C^dl-5{8sJ1I z=D_cqNN-M+*@bsH@{EB(9ma(TU=G=6n4GfJ=wm={odLQ$uUhHBJj+e0tL{zghi_w4 z+e)f-{Hs9iUQfPzvP?mVyN%$SU~piW_Sf{(`TcKW zkR8=1cZozlzr))+1}Oc$T)mj$=~YtpyoFf0k+h|bp5LFpv-13H-Mg=qbotrL{D8Ng z*f9P-hCctmv1Dbw7xtaS0*-Y20sSwLJ4_dRJUc#4MSFsMVI=8{Vg*8gk2-1Y_E1>Q zue&U7%^T^sCwgw(5T);bj?rn8SHc;M|0RL4NEX!uSP&mW^0lu}y7Lv=5ebNdz}n&G zm<9v7M|}0!yZo0Y&HZP`PQ}i;^!w%geRynqK3`!-enfv$Qa=OrCIDc3(ugF1F%Sp{ z2ngqeYxCc2%DnPf?^g!W-#ht49kjTBs9uaaeJyFlsn5@!UoQ#dPZ%|CeOZz$wKNq^ zET?C$VfjKEej%RQCVK6tVz!~U&tW?0rs_tw2Q;1{0hPg~pfti20;3X1Q9R*hC$7Iu ze0{$UXLn3{J)T`R+jd!H#(?(mw*kTTqL=5z@RHl8bn4z8MRu8#j7%!VG)$L;f%)Rs zVH?)!(q2m!*GJCggIC`FF;tvvM%LXf$eET)wn?+?ljA%ONiqKlI2FVpA2JXS5k+y0 z6qY&9rj*65#G{OHJROb_-A|g4OpLT;pkdnO);q3v?zGIIEe5NGdEduQ{JeGLGtY;A zvU2g=^6uPzRMkR3kx2lNq9bMn1v3MYkTfYvMFB)gsWoDh5kVjlWQ7e8OtCdX6iqD* z6iBdzFcick3``{5m76^liWDG=tl0*q0ED}{f(Gf!s zLJXupLaZ_h6=oPDK~%KRN;HbHQ%gt@0hUx0M6@(5L^KkGOF&XnOhZgU772z_&=gRK zQ2|I{boU#@_zCnPr_Kyuegsd>0$cILzX{ocb&2jQ7VSO-z8!1dbDV{ohHVHaLk&DYEf$7b-T}(%gcWgZ1?T} zwhMB=cISelM-Lu8L9xFP!R2#qd4m!WBzlja-y-}by5RfYt?>wA=HWqDEEGzXFKl1? zUk4|zqn0={MomL*6XeWG%!_QO0kx6?|$2cOfRZ9hQq#MD=mjVdR)6H+m(2~|;6 z3PW$*i}DZz4>AR45mSQ=NA0^p4O!@caMb zW3&haLf}Awhfv$^hvNU}%4hlg@jc_P{~y1h51zAW>$KLB*97$Z`*Y|%?YjK`PVY!~ z8`}ENMzv!I0QsIoRzy6epj z87Y7tZ9L^YnM1w7bw=y101pP?5W5)fS>#!4c~t0rnzEWHD%T`t>@+l!uKNCD6uf{O zE*!uBG!P4}5xU?22jzJ3e=$U|gCHGYn%PY;b#qdewx~0--P!F^AldJIii4fk1=_?s z;1VGswNwO%$RnR_IO+NNdSBD0Z;x}EuDIWRYHM|tsb#)(7*lPEfF4)k?XJ2bb-~94 zZ~%y0$gF_XQZ-bJh!QDPuRYoNb>ZpH(%wFkJ8hObPi3!ck+&PP*yT(l)4#vV%6m2TYl zy4-$y>toGdNQ{C=EPw(a7YK#GBXz4OTPHlWj;qb(K0Y1+r!C)K z#PNq)qMx~J8%;xxR+Dm`dvQ4PI7m(UN<^iY5e^dIO5{YAVmNq6HO0&YZ|_n2^#vBr6|_V+fDB3W{W+Xl80CqM|Ayrl^u2sF|9iq===OiHc|av1V7z}R*+H(5WT5bX}M6KL^2v&gu(=+phMCG_s9Twba4&hmVl(BDQRe9mdT5) zhymXf;1C+!N~Jony@ZzRwMOqn@N!4Su4|qW61DC%K()q6OGI)ZPPN8X@`C84hDMB< zWGUM4L&Ll`7%YlbqOe4^qLD>{%GF>Z1!$_lOK2=rB}lSS7AP&WgMEDT1{$>rqQq@1 zL5i?NR7R7=sRbdmur0DF21-DEuOf=RgeaOoPxe1T@y_w6(I8I~st;%Hwz(X)x!-+H zSToGT`bv6l{+b-lNk%_ouKB}hz=V$uG-=<9Oc^_f_FvLuYYHSJAV)-_q)W%A1G{;< zkZs;r=WPR#bV6pvk1)Zx=@xLx?o*z;=+il<5qA!3-VjQ z8uC4SccDW!p?nNYkRpr&P^cpGE6E8YLWVD z0n{N`36T&{NK#Rd1a7!45x6cfe&^vI)AReg?0t;He-$6v zx=CNl)X%BH`hOTuG(7xgw-V1ueSSwfn|%)d(#H|nA|AOJ_|($^Wdw5D_Ao)Xp?ZC@ z_qqdn?d)!X`=Sof8c^CCl7fH=KM6x6OYr&k_4)jJ{<|jsO#0oNc7J2$+Wqk7;fn0f z_{`EZC6cS(#{xHf0H8P_>p|~`NRkdARVWD5XnPEIPXBS}sOt(eBltiVLQn+)w1Z0h zEHvGT%-qv6XlQ2Lr%hpL@U`zMCR*>loP@^UE3P0Lh(hbY2Z1YhT@iQ(A{TNX071y{ zqJ;kpv^j1(YyEZSjt*L6*uf23_?GM4zyQ$G0pGqr(*Xgx@1Rc3T?shJ`ChDx8ZC{z zE5{SVZ8Mf`NM@@9$V3Y=xGE?U2vX>XhzJOWW#T(zGsL5vGs`;L8!nhDHfIa-(u~9d z`fW_cnWmbE2SaeDGowR5sg0VQ^2c3cj2Vj8qN9G&!$ZVJrDb;vjyjECOUl`0ei<^D zJ&{6}j#^6-WTDdNXse||=Ww=IZxx!7`Nu3|SoVrD4YSf$w#!I9gSR=U)@yrX_!++(Dnv9145X|?Bpv&BXmLf|aYWrV z+7nSNHi0Ld1j(Blvf8HT7TT6nQAsRH>U3>~>@~*RGZRe_GXqskEma!!>sG8u*x zEK4y;zy(MVNTdW31q{@&OjMvm(#1tZK#)X&QfkN;Bp8UIn3jqZvII0LoF5PKxjc~l%xt3sFs+7DH=tkLV;qcC;+7xk%^^fS}6u9QXpDHDPllcM1A6)5-EJ@ zjIkf2M0&xkj4_;Z6oV1Sa7oFm32YpT2*OxF35^C7C1EdfMoG_@DTzTwdU{z1IX`4E z7_Qb5h~=zRHEM;3Rh+P~LJUze^Z4e3(o`5G_Fu2_xF=T5_Fpuz2tNH}Fj6Xl3?e8A zf)a$5>o^ohN+|-Wd03>ZFpw0JRWh)sLI6aaCsvw5q8T9a&xgamrvALIG8G`qN8>pZ zwMijU5m6BS7BwOgNh450Q4+*RB^5A45k*SG)W}6aK$TR|OodbglFT&(OwkiWwLwV= z#8pW|Nd$z<$`p|e0W%UqM8w1?5)!OL&``9Lp)~<~36iN%;z>1>` z#$u(FQjh|msTn}1sfs)1ETu^>OwlX_L|!%#F)Lo`_Sy2-%=q8Gr+hX~TLOvzp%7T0h@k(%)W)OTD7~!` zbXq6~0d!*sibL`ProVBXr!qCXbuZUe`O>%kJpAeH>q^-jmD-tEXd7U9oP`)8pW`oC zY93kI{Oz82hHp~e_G@#5WwvU=^&*$rlIm8e6jFe zlD3XAenVCw)?Qg*EJaOQv5T>0nR$?GXsbK(%~4!!XDWOqxv*fH^L9Ds9L4EM*nBe; zn%so)o%-S9VWv=)P_?qXxn-qgn_9@{Z3+{g@pad0w!#Ze)Y}qyvy~GnS1hg0StYA- zV+WPBmj=fiHG`ApO^PK-F*L^;VSz(7xzBR4mTt09^VkLgL|1ZPARC1Oak25pAl|Y% zhYq1ZB}(!H1DTmS@R)#oKOe*1Uw6zM@lrBZCx0rb?v?MCC9jERrDht$2j+{@b;0`y z-LCB{o@ZoV>_#Ge)fJx|hLRp81)v8AhbLl_jv%XT z;75jniIDd1=ghwC!@RTGf6KBliKPcSZ@L$}&4SLxAtWLyp3FN8MtcP{knmdp%Oj&$ z0i(P(>e~)7tx-5!H}#<}soDn~$78ZNFGoyv_hLWSS}P-;4p-N#HR_3{_;IM9DsS7* zwkLtddh7z8A+(+0cO3jO;L(jC+t54*mu)zTLgfH{nUD;&NPj9=pMUefJ}lE93ZG#r z3H<66M^GRcP^}Br5j8}K@0C>zp*0KIc-Ct&ghPl-DjEV|DWMFAj3IBXC$S9Xz@j3E zifvK(S}fmti;xeYbA$-=gpgCB<;-( zU5Z)jwbku8x|68@O2K+iAmRrDj@$0y1`{p$Q3Clxj(jh3PZ_56;9Qr(1;K$Uo^}qp zz@8ACO{u>W;1o!TEwSrO@wc9IaB-YvoN#1-=%MVKJW`T$giYzlz*>|@a)2kb15*(Y z>l0~|Lj)wm6EK{imM&XejV-RdNDRJBHb9QDBy0u65yhT2L4+SlE}%}fWs#m(D%m?G z#j@6d=Z*tAk~f1Q^RY^S@c4DUm$j#0rP3T@W7VnNo&42Ty{vdnQ!^-T*r_^i!*dpw zatL9EVGgUI8_5!aEFgr5AaXc&hx&IGRS&nb$UQgn2e9ZMAHh$bX!t7=G(a(Ki15LP z5)hN|SethJs%c~}mbHMk{c{5zqXInCi_?HL>I|X>LGQU9xv(uAy5MMy=7r13M+lgN zW%e<(pRCm28@cs41Ny+IhW7-0PQur8>15U!&PMxLO!W@kByYBj&YvQOJsFE|FBvE} z+ezTd&KrR5;lqj8i<4mI>E;;vpjo^cp!psh5Y`K zJi!##h1*?#7oq7$J}5wNK=dQa-mtCl$AKZT_IGF*VdXr+4(y$}aUnsxc!u^#@Zntz z+@+>*cK|$>XGXZ`QsAbw&fXZ@9SY~lDmowtm)auLQWk?m6REtb5O}936mvT(p5v~` z=Z*m!2P3Yd=Q){~r%b~=9;pnVMH-pSkSRXCSSJeo(lgN?;;QU-jz_+3?P9~ z1gL>f$d$*Xzsra3%y_~>>H7G1_*=O9Wyasiy!$)z`?K@i^d`BcYv{OtKb!KNl|Ds? zffz)DgbkFPhu;e3cjuDw%PK<{6PUH1IR9uq8bJ2YwBIl4qP#>_1VNzO5z`Oa57Ifm z0J0f8@>Y1R+hGVlRz35+8M?^CC^HZN0e!+iAynf$b0OTNr@ zkBan8BoKf0$2_#WL_kDDHWCpc5y2X_{J7WloBCQf$854bxbe38H#}6_I5$m`w&onK zCZ}+ah=72IhXN59Wy4gIs|UiFz*fFh>K&HZsrT`cRI zGRfr$;hJ5Xug)uakFHu)Z;~H&VmFZpfalSkuiBPdvI z0BK;YH{B47@vu)9BNg9`B-$?(J6tjhQsA%%2#AP|qCg@!MLM7Ozm}(5@5R;23^PnK zwrY~|&qT4VPg4x@BRWq3~nwW<6>Xl>x~Nk3Zq%{Jehre;WCwJR9%# z`@&y;wm&_qW~!)6V7L9ZK+Fh?F%^Z;+e?y)0;axd2m<~B?0|lMu~P~Ri#Hfxd~22vTt&UMRJ^pNA*v)|B8|o| zh=>S;NJzRd7>MREvtsWeG-}&g%f^kv1-|&kHKds&wU|wo$F9qQJaSMN#v&tRV;qEt zh)9Ttj7B(>e8HBV;U0J zBOr}-$+>M5;!~88Nfjl!$DY2P?_aNv)5Uu) zhri%4?eO?Y7Qu;oGh<;@+Z^lgX=X%1Qv(r*NC=2Xh=53ls>J0eQu0{gCffV&W)-Cs z8%?c5u%z?FsO33GgoubqL~W~W{%6QPn0MRh5I`q*6q zD-1S~!)%sNI{&j|+f{bA8Y7M0fAUYz&sYKSH|LtI8?%^B6JVlIDf^?vIKSUsfe-SG z_Rhmiw%chXYi+kJa{Xpzdu6~Sv@KR_pTB;v(*d;?-3Z5v}~1Dk^2DsP!#XScs{%M(K3gimt5@@5^l>|yb zM2JLa5C`wqQ(x|WzWt8OzTc0Q$sh!Zr_Q^U+tO4?c9Ip~;j5C;j6^kVU78?ftTPX$ z+n+D5m!F@0=ORdw0b6?6Z@(B4^vR+-xap)hb{&&a1oQj6Vaj+sdf~s9aX||Ej$dzG zLsMqqzfgJ#H2g7(oMX7>gD{27veY9)B%WQH1cM+f6!sXQOswF!TYe-f-yjP}M6S3> zfJ7o;0V4Uh#xRc&);QX+K3HDN7<{jeHfBW3Wc0?&+;grVh@fsExI{#8-Cj+YyjP7e zD%#e^8pQb7Y+@XX?UmySM>P?LVgeD*qa@@g5+Td&308kvs5R9}$6T8$&!Y5$TPG%l z$4vBpy3;Xej)X!Y1`-nx5hX~=I=I=+xNi&a&vWRiH%%DbQI59OUpMoxT(#|~7{V8U z2_R5o1;AsNT~xC%y~8T!YGoX!7G;y0k{`A?;cTNZ5gbH-Ku05h2Si{;JKu(|&L)IQ zJuqfCkf0ZknRA&_>0kauLixga`)Y%2M%|q_K@nTyeu0O9{GQ^}7`(9P2Fe zufR9#KncWyDyA^UFfkm+2r(RGK!}haz`(?4eSZ}Wu%9X_27rs@zZxGn9`OHiGH$u0 zO?3KV@eZOvNZnOZx6DBe4FK3Dhcl%UTjCH{xEtt4bp5E{XNLIwol2V@}% z6m$dz!a{{87|UK?GO&m5>1^M1)QiX-hfWj)Gwn?@{Jp`|>JLrMZO?w1%D-xEzWuyG z)HoM5r>SR4+|RhBXR?&WWUpW-5>HZic9*ujGdDvbhyfuZl3SS;;!my|zNbmrJ|~g~ z#ELcL1Hj1w>&KsQsh<|vnn;u-vU)`xDpp}h2~ayeoqZ6}oEr7gr{(5p_as47gi|CG zQ3y#T4N(zAQx!GDI89PaR8dSa#Z^pEMG;jMGgQP>%rjIKK{HWI&{9-E5fxQMB@tzf zOjR)z6*L4(FjB=u6-WLvl@T*lHB8FQHB~hHBe1NRS^Wi6G<~P$x%@hOjR_s6%kQP6fqRl5fns`6vWk0 zHAEEA6ih`-5>*W{L_twa6GRl%QB<)_6i`u8K`~5IOw|=75JeFaO)(HuOqDSdLx++a zLphr7>+X3mP(FBEl#5RrWclmc!ckFG7mn-1Q|<6I&>zd%J+|nmf$7_QOi&VOu$k?L z%eNyJdc@L?(V8G**-b)rWdd>LZ|Cjb<8rrlhqRxUNW-hMDYf ziX7Uiug`Pb_1|e1b!Q=)XS;K0*1G0w893dM2BS>g4}?VT3mZZEnMs{L828Mnom>-Y zp3eS3HUo6wDGlKqpdFiX3-hytv|523ESuSCPD0%_Npo>P6{SA2U52+sKVTgT`Vb6Ju^fqq!krW>hxZ`Yq%ohukbIU<#9;GgJRjgE!B8sZ>*!TgsS+>foShvCIgr>AT>?HQT>8QXZDFZce%tRaIK8Jd%MDbbty4q{slITBXJeB?O^2 zLFd&^!sGSvIM^tQp8{0{Xu&%Cuy#(}dQ7ivjV&g(spSj%@rI2vR`L_#1UVj&R_A~m}6u2S4Jr0r&D1P>C$%R?{sEw;&< zBGuY2ihHi}%LsNCaRB0?q7k@6L_|PWJ~&M{+gc9JzZ2se)2^~UE!Ho>kWTbo$!<{3 z6I4Kk;1MD$m3~;;+-iCucEz`?d1Xi5oM4z`6yrEe*XwUHx}bp*7Geew5y!5BJ98<| z8(wT*q_o5rqgNdso)rkos$nq^5gUX=2O=UO;|!q9=ufm$Os_1Xm2zGgJ%@ZFlS^G= za0uig0wN;H;5kv6^O2=GiJg{_e8xmq&pBe=oX@)EQq{KGTk2@}ox8#F00?@r z5k!5^DPe*tE9_E0m{K5NfH2ELw{<(Mw6@ai^5^IC@3y-@&#YnD3%BO7-GO#P2~=B= z!VEr?QT2*~y5)ok)SLC~=cp_w=8w2LtIK!W+pl|CHE6clw%&X}8>y--r73M|MwYgU zDSwZhxozm+1CXg?EutzxT1h=j$S5@^Pzch63K?M}%B&KgGDwutiUlaD(gQM)DME-9 zK(q-!gef3Ws-*$}LlOWXk^sW@B&4MvQAMv65PPnA zfza?n@;$=mrUqxg=4Z^uz4<_VGEyd59hgrH4tbf^!`IP7_O&frZ5rNo*0id&#b0(; z1byj^Ps_F071gTkZCh_JI|)959gmFa1$KTA^X=QWIhk#(sJ7K@xq5vL&WWufuJt;K zJTU60b|He<_gVz*&>&uuoghgKy?r6?J>;`k80y-w29IjcVhIBDTfVz{aqyZxYXlEHI6oNpckUJ=pmV^#Z%jI`;JpMB> zOI1~NwO=o&Z9ZIt`obB%A1Yq0TGB@+6RdOX^5w3XNjyrcLF~8O@eoeJAfWjNpB&or zYnJ7?YRz->gXWle!S(XdliGwnlU;T@)uRzxYWi+mPvdJy{$NNY1BsRbaU8(>s|kXZwRaY(#$r3bi(U<*sw1v1W%s-Y^ZpIboa%*N`~ zxI#(s;2=YY&O!_j$P=(>#RdIIF@`OOL7-TbU5P_d2C7^tD9q3Fl)_Qe0z`NoMI=g4 zMGYkgLWGkINU$tGh)^Ozlv4~M5Hmu}2*F83B*2jb1j!5#$iX7eBS6qFh(#z;0Zb(# z%?m;_0TVz_g;b*iK~XHkAhbvgBD9Snw5n1GN`O+Nl~e^NQ$SMC1eBpl(v46JDAFXY zAT%T;3PB-6Nl6s6piqEBpg;*iq=_&C3au1?$TBj3Ofr;2gpdnL3oAmDjUdnj%8(;M zq{1OUqEgC;6-u-zLNE(OAV{<_{7e;nkRib+lrE!C0gTWEIhcz;Ixpq?e{SFLxC$U~ zAaY0m1qx(2DrAOO!enIBN{|xMFho#vNl?__NE#I5|kxGj^x3<0jL)g zCrxTFQ2j8tfml|g1p`I0MUy{UJ>7e3Tr77iF~SPOSt43a`Y^y?iMAHCsn#VlCsI^4 zh5IDl6x66>Zw)y?6hk#aP|*{_a^YZW^+NuPuwk~(zYZFbY-p)y9H_$+6Ui(SDYi@S z%)}x5uF0C%Yiven+B~lesB)5;390+t3z&!z67c2H#<2KaR!$o1L^@h5$U0&T| z0h}>{U6b4LpNarOgXQ(O4WL_LZGl(|1(FK)gnz_lroWlsmNvFI@?s^NGja1AOFbg? zzwt^+_dk^803&c+b=Tc83jmDn0ud$<7KqaqsyD|8$!SUBf-Qn8Dq)QeGTrHGvZXA( zTC3-k!E`ks%xoaxC$*2Z60RAYf*H>XDOQj^S!7dlr1{R4%2$QgWFbxnGR)**5dk0C z_%eE>ooBFDY+7_;>~Y&`^|r-+(sQ+|ADzK-@EwT2MgbeL3wIiR{TunyLyYx3=hnDK zO>3sP*sAUJloz$KphH`LGzox+h>pZUBQ$=U-M!~sXSR9boM^lC)b^zH)$W25H^U9` zh=_=Yh>PM>05? zOU9XPWE-~Ic}|Li;d&(8G}6n?5hlX6#uAR5h1Y$Q7YCzo2gpa$$Px%zi$dq;tcYNk z3Moj5onmDH8sqruWGb2>38G|TDWQ|`>05Qd=5r1t{vFc=POtHia{G|q4?-=rHz@Wt z$7%R&%hN5_i0)m`sUT1kMLwW4jt+f4LDrq;v>DO4+LsZhwg6OBtI zWu0{zC5vZi$l4-^q`QG>(+uXjMX8gS$CLK@< zK|NSY8T!07wp(uMhbOw8@?JhJf6I&}1&cCO03tu|EvcHO_TW3pnD zEW$!gc_zg=>zT(NUG6pKEr75(w1U7= z8EgqRk{b(qdFbPFXU8`c5h(fqW$Q&1UM72M-)l~-4zFqG$OnKr>YcUW3`ESk(LS3% z-8eCbpPpg|p}3HQ3zh~$pGXVz!F=q#%g2Rl#NLQQm=HV21T&qvs*0kv-=m9^DM?Kb zQ*PrU%gf>(hj2NA8qhmjG?GaZYcpAu+k^pyg$@9~&vl5g3#c@Kf&?U<|4ZF?yKK;# z^7M_Xnmr4WdyG4!1E`BaV2-8@p%k{yNRkAa#E^#kCn~nB8d}@A>ij21Foqt>L00Mh z?PzSH;WEi26i_@z5F4b9)`;b*qvyRa*)~;bs&M!6sD*ksHQAtv^o<&@w2l zJ`nZamA8Ugw`arD;kLfE+}ACWmF(CzH#YFkB=;PS&;P25XncN_08nvrd0|CV(0hHo zrGIR>mpR~i^$H$Xft}LErMAe=Qs|bzAqoLAGq(JUi~wqn(_mx?+-|8|p}!Zt?2iN3 zHYV;fC7{y>Tqhv1CwfN*nRTOqb0HpLC*jK~vO9vuT`JlF(#{<-9u=8baQGdCropQ5 zzKl76ruzn4>D!Cd7vyLb?aOvfeJ3z`F_e=deY;EXo2q13<;*qE&oZ3j({MG&&(DCi z?l5limM&a@BM70n;g~%wxDmuId$hsKhNguJ-+o%^sX^^1`N@6BRBDH8N7V+R0 z+rEtONw>m}F3eF;x8bjgzpyjpap)*>LuDIIAqkFHKmn-8VuhT36x#?G6GO^4oO7MB z{fL~(b%8U=walj(@vwKc&&YXFo2H^?p$m25xq=+7a77E9OLUTT@88we*5V*OMU}U? zo&9(HX(AjSe=I1oHyaNn~gj72Sa}l)2W)!@u20| zyai2^x&hZfRaD%Kg$i7bGaFX-el-peHInsyL}m;J4td*r2twfvG}%LX_7|$ER2qd3 z#};Yt($q!yH+LV!Y$5|I8L&kj5MdHMVZJx(M!d3hchhGtgRlK(K{RV!kl$`X0@=9Z^RqY|n@eWQTa|+YaW0WzJw$Kia;Kn<6J(Nl|+_TK(<-?eA zPE?g4TeOhteYw*a1%#jynV%W%V4@jka>T7EPKntGi3;-QHA{J{4!tPA&PZ~=qh>;fgI#-69;2r)%v)2<}M z$~n#vDq|^Zo%r<9<7aZ)+U&6D(twnE+D~CEOPU+>O8kaG1nIL<1sA__l+`Ka6s#7nL_Y z`YTQM$F36`Z|b?jk!rLWQh|_%7YE(G2hjm@+l&AR^wo(b?=D%e9MX`YP+~cVL_||Z z59cNaT;il}LDDI`SY@+I2<-jKH2T~y1iUTv2C2;|}TiaY!>M6c7#~e1U z`E4z*rD2pcq4u@$uJ14yE=ENu3Ti|nu@~G7V;C;D000QE`Jv#nVS?WqZnfZ?%S-fx zoV(*EQ%Ggq=i}WxyZ5h=&b)#5*R`-IP*`z=ufE(ZQ_S|E^R%UgoMnNRwtMZD7-2Gc z+qQP%7QcQkdU*4YxHB7q>w?G{h-y5B;swft3o!Ur*4rZIk{$1+T=BEtg*j@up3#Qw zT_i=&To(aDm_di?;J8<{!RFYC1Vr}$5NUxO1`m<#)8Bj7vhFbzVY&dS^vZx20V^na zQ;~FBReS9X>=*}jpeAXP%sOk&ozVxA4IqxmgwpqK#}qsRV4n~G-&bpq_vb!Q9d_KY zc4z2SJXxf)IElqj;n_yFI&P}q(N;9n)UGH!*B0NAgkFat{q7){2NDp9N-koq-GF2q zjE=0dORG0F(M$T(90`1w?rrV0^5`AfV!208pF-C8PRF`UXpr21o?xlBcLE(m4qdkA z<>8BLs5nEEO*7jp=&)UOiUs?5jYiRT%bD1#_-&YGvuv+c3$yS76kf0S7fRkVR=myG z@_?LenSveOTr}*`Yb22E(@hRsH;L3MQ9x9g*2aw(GfUdN$UwXwP5BsWzlrp=sED5* zeP=xIYv`r-JMD%rcC=QNRRdZ4bIlM^{D9wgzjb#D=sIvvCZU#D95;lMb`1Lrv0P<& zV|S7gK!R@3uLjnA^S3+Ms`IH{2O2{1bT=c-vVfXZ8-if85aBZm&i#A22!=5V-tOtk zCwFCWl_yy*|4d1Y@!~bueKCMZAQF9$G@>v0`ih%Nl!>aXSw*L?N~0W}o@S2+*k{Te z=afyQDf7nW<)qYV3CWMT$tK0uwb!aKR=@ z1f`%#QQAdJqFogLrV&X@5nAbkq7QrSR?c^dG$ZtmFoQr_95qIZ_zn;Qu0o*&Hp8j;}k&+!oWZhNT(N$5c zewM$5tu0$^+ih!KnV9LWu3W~d+_{_^`hHRY4|BIX^KVTN6}GDK9&cXWQwW>y#jD!Y z%T;GzP7V;BNhYBQYVa7zHX?v&2PFas$qEFDA)zBP;FFauphy30FVQnQW5|Y@8RjU)AsjY>*Mg}U!S}2)ABm~e>`sMw!Y8Lj(s)zV!l6@56*Az zp1$em4@gPtRLKa)Ac);?U2u)Ta9lOnQ2Utxj6S!Q^_#aHwm$mJ?TmNRb?(G;^f}k3 zExf!`UNJ$|s1c|lch#&Y+NnmZYb~v72%cBH?kIz6TFL??tv2z|G{d`Vt(&jsEwD?l z+c(VfzO;skLfF2mzVp9rKmY>kt`C_)Z6z(Vl1LiEJphZ(-9k?XZBuB+EwA;FuyDU5eE)Teh~ zbDW5TNQjJM7>I~OhzORo#jU;d0(x+i1<=C=;l2EfsLgYI_{}6lL_|bHL_|ZO7{nq( z;mJ+*o#WwXooi(yU2_C$T$eiQMr*2M{&>pM-n;wnIP-xJiG++qLL_4t#6luII=A5( zYo-?18e>~!VYD-hYo)fDSGD)Kg#CNE;0vy}E`&7D#yJrM*B>(>CA1`fTVV+RA#Sa< z+yKnTtK-Ms?6a0_4HSdvrYMW_tLvtW(?&Ox<`)13!F9oP+e7hw-hN+g5Hm9&E@N%B zs=B$B-9QY+-~bbD6KN!pB`IyBn@uE=NhF(c)wbJhwzjt0S}T^~+ih*Nw%Xfm_&JMh zt+v~1Yi(O?t-83{Y^0JUHp@k}(n%x=ZM2d|q?NX+t+v{$ZB<;gRaI41+ikY0u3D>e zGTP;;ujOj$)m2R^b#63QR<3QBtQAyMSMn{|)m2ng8@6S%L{(QUQ7v4?+R;>1RapL( z+e>Y_wMR8`Dkf5CB#D;WZMNG7 z59l5u{_M@+nwz8JFVK~huWmCVg)~HLfy9I#@Kf$0JnZCobrl|Bg)>H-Frn}X z%Z?IrD5KMXov1IG2%L`~%gYb437B3WK9mWGi7E#tkEh>l@;=(kZ>DBa+c3LxoZ?6_ z1t&qk#xec*_4$0`_vbL}s?RRo{{FZ2{UwLgl>a&UsKt&0;y~VM@*E%n9(vI;l3$;mD_xVpMDEur~vD@1Vlt3 zF%jRRAm%X<8sIU`a}iL)Vj@MxGTVTA}q+p5+M^2E1hYl$^OyaS?=a;XkWJbviNJbTMf>g_l8xL?J(tyz!tc|0sAe_R93g;4QHrQx~{C(T@QUJHC@Z(0wN+JA|ym2L`jYqSa97q!q~}d zz8HjMjrPZGv%@tHl-nt^1|T3JKYNITL_kDDd!THr(TTDN*HuexHC_8Z9i%k2$lGn5 zc;T*r^dD37&mT%6A}Xu%AK5f&KoKHdkCZ*Yd$IS7a7kV~g(SDDL0Z!hy!ty~PV!))6x^2_u=35?h%hgPDYdxos`}efrz64yIi? zoj^?@wun8%AXRFLH|j&q{BUoF{=x|}ooY?Lpg$l2ZCGhU1s#Up!w|0#$jCIV1-ch` zr>BM3R88@30M1eH=jwk> zr`z8G>)I~`@$4IotGqPkUDI45PV$T9d0u2=B-FJf5XE?y6Ugsbdpu5_UL=oPof$!i z`TagRUe^5Ww%Sz@&&!{0tlx3%>&CUFimI>QYwr6;J~zuMiXtkj2SGNM7a) zRisR>Y_GXTepSYLov@i{;n*d-lh@gHd#gK?iF22Ma9&=vFOzceIHtu7QXHLIpbD!L zGT5L)EpJ5xxn$D9UDH}76G)jc3c-7+onI=z9LOM`hLRTGyu&mCg$tC7`0hE+DaLmq zbMUcMLG<6qq7IU@wo^-#y+^DNJAh*yf*Cb%0mJuIs;}Q|wzPjsRn@Lqs;cGRfa(N$ zUv4*1>f6p-w&rFwsP6y*dHjMxbvX|k6V!R&Gn}( zZMAK^zEC;#ihgXLdk%Iv<#OJw_qBW5ZFYVhJr_X_Be@SrWXKx!ysGuzGa6OibA&rV z6G6fEg9vSiwyy~yncAf)3KG*ouQ<_&J~cTz`;}u z349j&=nvb=9^RX6ye+qRfA3yBDw~v&G9|VWG7FMKPGjtb9SCVx zmA*;52NQzleDQlc-pvaoL2r_r{ui*cKgiAO2#IA^D{DQgr@b1r6r`_ z?(E3?7JzK@!+dvCH_@`)Tj9Fbt96uVyq*|KU+t)Cd~9=@I;y8NG8ELymfA`A1gqx5 z^Y#AtukY#c@#*gP`Fy>;ek9#r6Z@tcs?Eaq*8Th90g!EQR$>Ao1E`cp!eJpEv4b8^ zIJ-$|oi);O)5l7>`L@m3Ps4S2!}mrk(tC$kOj<%jL?gk7#6&sQiy~_ zNqqO-8Bcrbx*NXn&3_yjyCVIr{cM`XrXny28)7ktfPh3uh=jDk-*zKVhHBGRzYcW4 z6P$HRHP&k5Smn0dWoCZ9xt;fbki5i1LPSJFL_$O)O~RPM=^AX++Uu^5lu>PFR5IPJ zx-UyN4~MouB0wY}L?R?YB3GEk)V?=sF0HUEa?QBgIhCoJRhD#2^R9KOp_Y33Yfc~} z1~3tbj9?=ejAIFmBm-6Jr^fWm#W{r`uExe%?84dzVa-cfP}^;)8wXCjeGg(M;p^?c zx4V~8h)E=pLRD30TrlW?4gf!W55j^K!W-Vt460HGaRoIB6s$-PSp$wZTWYIqR`Z!|-FG|N@i540 zB4kA&F-!GLl0g6dUc>dA=bk#-VEg2@itLj!EwW{_-=F|M_t@F2WAja<3P}`-M4^`2 zUeVuw-&^B0mfJ^M;ebxX8FzX5E+6X?jiQ?;dp5hkx3R&Eqn_k`O0m! z*=)3uZB(~@TkNCG2?T;kkCpoCdzP0H+DMj}W>QkyZzF;<2q1z9DzFj>BOtKz7-K2m z=Z*_`%x%pnX(?%53=1t5M|+~McPUFKVD zq|!j5K_!O1oa}e^42|a_Uk2Zs%vEwwP!S66pvrrT)}pRCNJ8*G!JnqH+cZI;SO zHqk|UeSVN)D^+PGQVC%ol&NytWgU8W5d*)cao_=Ddq#NL1RfGa^4l_-nR5AuMC4?D zlYB)$SPK9|2(-B7G?rjY0(XqHBDP_Yw1s80si7KFh@}{*ACf*2ElE-=1PKcQ#Do%x z%2fpgDFA#4aDreLGaw*BB}S1#SX2m=edJfd42lzL_jjp-vnqheiid4**)goW^eWJS zgn(D@6_TO6c{<)3==9>$ys}x^U!NOwoBh}J?YpoBIp_KHs{Fi1hIAJ~JnO&&e9TQA zWz0|3_m;KOD@ROsTu~jO|4gYs4)~}U!B)XK@+@{vnPn|2t}ENa!?igP?ceX%+hE3r zZue9!CAB8YCT2joKvpXL*I zem=C-ztS72NWNQ6doSrxSj-567=kz7}u2jF>{{EbKram^k=evbA@ZImS zr281pzrWz+d*1E}z3^Z)5$~Fi1qy*wDKj`ZM{Hqz9M1J z;dI0W0uc~UVn!2@5fK+=Nz<$A8*u(|C10fLtB)OZw_0COR@dz%THn*&9DJ^5mc4}@ zA_F1rBu63<6$lnpo+y@onriKruF{Pi9i^qERqBl2Dl&WPrd{@+3Typ{ghWIEg8|zg z-rcHs*L&bOM`LfhX>IqW`@X8}c=NpRw0pfYz+@rLJTC^*nGf?uL}L4YAj>`3sL2p z7!Kvz=oVW;B3~6zZfv?y55f+HnTdyf(JTv_oy{IRd;5DT+kM)is`-_mnV_^J4c=r{ zfQ!?`Jhv18LnCug`Fm?{`DYUlbIuc$10)7uXqJ1kAnoBZ95_3*+L^~))BN+*o8;8;74*dT6#rJByLuwW|$V#Yf%+q0FeOjgXHn{H_~(jZQbCFPjVaZdkJ zT{8$_eTia1%nFGfBxrA*Xq#Vp4b1>lo+ZGGJd7pz!of^AkWYoiWMdmGqf;4zT|ybPg)J(rZq{ia+oO&< zKsZSYHm1sfem$7(3x=ixB@FLQgjS#!y{cW`s&}UPyFskU-K#dKC8Fd36hpT4aZSX} zzKemcrvXHw$aVM79oDsmphz>ikj%s^!6*wbOoPr*_QF0;4|!OO4>6vC5>6OA*mloc z49$F+BccigJ7%<=GLK0Fd>+^)#D+p)4?IvFIl^mMfM&IXQZ~ZdC1Guav`nFq6QgZ) zE~#jN!>uCO{^cTR!i9%q4*oL%VQww~ZGml)+Y4zkGav=GGcwhqM=e!fkCQ_jE%e3P zT2)_0sE+`60KozrxvgrHM*`cvV2I%_l#=;`{7&Ac6V&#w!Nr=(+}PMPHgz}--Iu#o zw=G<^8nzun^g3#!_zAD?_xeA$Vais&KM}NL9ey^vRXh&m5mUyshZ zeiM1HeDui!o%*vzTKj3Fl`S5;u+o?8Uw_>T+yd`JFAx&|fQSfz5dhz!>A>2m%TtVv zsqo!9D;G|0*f!g3Yu@14AO*RATyi2JA_Wi#kco_A2$32XD;@8{Cm?a1`BIDo^_-CP zPP)E1=ba6b^@c&dfB=hu$|37n)7Yi1GCZH_^vn`j&9a6w=o0zyC{A|iD2(srz~jVf1; zIpT6=Y)*A`p`H2XL*trs(AxK}yFk2NEWjf^yQIZc^UB9;iQSLBQ@$k_y9 zA|fJ0Q5<+&+nJ#=D?IVXeKTDbq^VfxhK>W*GzBlNnrU!iHklC!kr0TWjRJXijXy#S z$VU+;)8)s$tW3#VFgdJMbUUrWZRa@HsPPS^!o!znq(HErK{140cXM`zvO`IYJ$d*RLgvL+&(8iRXcX(``}{-D4?}aeG<&sj+U8v9;-lww%Ix1LRs-iE zYg^%nyQq`cBagaN6#WcOjV1nr^qk0v#%TgVZ~|9_cR;4&Rd`r49){;nB%?=0#6Lb?R)g9 zmD~x>+1_@T$n^2_I18s-FQXU=Jg(s8m#&ur>`#ZX);-?pEjO~5ND>?Xxgs5D@?nh1b3Il=DgBiJK)R z)Rq`36owY7vz9j=B$(lF00KZnKmC*328Ht9}jw_3Cwk(D>@88|*=hLHk3s|2O&&w6-#J> z5Zhp|3{_N$y0#*+K+83u=HC)ma;6>4_vgz$~aX+bPtmK~s@! zJ6qCjh%YW+_xwG_IW)iE<$X92{ z+f zJFyFb;JpQQm5kE3zZm`6tb!Qi$3>NI+zpLmDdHqfZcG~J^hjR8?28f>T{Id{1sr3NwPEaEL%|(K)QT zx9+3mT%!yPM&E3clP#RHh~$yWF_bMDxBx(4M7qx;Z?<{83yxZjZ_f^CeXr2^Gd6wB zM$=eO*2jNi<_$U*UEVd6SOi}W^Nuz#kFUn5(sJJ>29rXmdwGQ4v{~6_bhQasi`t~9K zAmiLU7=%#>o{!W*>zLPmA#ggR(S!+q@HuEXi0kxkzaL8YSJz7{IXalWpY`^a(0#Zj zZpi(-N8OCv`+~$vf22n1vKz9u<~?sB!ga~+raI$(YtvgiFKs2Z$FY4;NuKP6>Hs#N zk-7vk5X3;jA|fI<(QQIFid}nJ+hPrdE5=#QO&I24!^+Os?S9VYI0%S{WFjCU7vJv% zew|-@t&DWmE!G;+Sva)_;@Z&~)L7YQoa1l?Vy>B!$*4b6iQhbjJeQNR&X?f~;uGIF z;btr|&Hw@+A^}GAo0Dwi3Sl-IoZVcfoKc;dhFd2*DfvzIuDITaO5kwZ7Rs;vS4Y1{ zPgKzO*Ic*Qti5)IF3%0HKF17k!RTXafd#J=l$kM+%QaYE~^c~w=#uSuLPjZL(WrwwBN}nUY&bLKfNIGYw{BEun3;z|72sW?)-o zwn@?%G_N^gj6CRR7G<>T*ke^ug{45^%T;pKRkqu5+u{mAKywvUR@-e_!9IS0(fIhU z2u&2Hw$z#;kdj0+MoUSeZ6U1_ETBoE9AcpsNtq<80~;h@T<@3P)CTCp^AO1x@&K_) zqJ7wyzRMOjHZa$L_QSM$O!sG%%b{tOuBMlok&UaT86-M2RKUhD6G((i1YKuOU%_gA z#OwI(9bvzc=1t5R`s3W#qx$=M`t(L zKf(o7P^Q!dEdVA|fKA3RTyPtX7Xi*d0Bf6@-|It7DJ+eCIfHaH6`VzRyPn;#`24&$?L-q6Mrae%2EPN!407PX+)fWh^{!?V<7=?821<*VZE^JeNFmVnj08rrAtaD zM{g9?S^c>$a%Ho+nP@~JKqLYJ;v)cEsNHcGg5wV+IF0$9CbK%vWa5V@dTXs?v=KFG zz-G>lF_xM%w5$P95y%9z5+NIehyd4UbBO3fL{ENQUs8vdB8$K1sXZ&ple-1m*Jj?!%a3y@7k738X_Zk5~98>`&*x9fc#I4J^16BZK|rG zzbkkI=xH@oO;uIMevtK@;{ag?>Ms8-Tj4LF<nn5w%WgX zb(K|leDbVU&+oWy+V6{PnQ8D24_)=yH)aT`J0%rRR6!(=Nf;;}eg^!PpRa#c`pCH* zvlwwvs~h0cvF^$$+u=O)q#8QZRfR7AFpTi=EUVDaAhgTEEMHC1a>FpxaCC4h7xIootb zBC4t@#jlHU_tv!NYw&SVS2wsT9qzKNTUMog4>RCvS9^?ARaF&LMc&o@Peb?lN&a8Y z^{SocdR|BiNpv!7mH@QcIZo%sdV;=Cu9U3S6}J*|(?+b@3stmw+6 zWrOw8M$y_XSKp%azhXvO+G#^X#6(0wL_#7WA|r!m1ZEcb(?zlRX{5@yy&6`!X$6}6 zv-=b>(UefZ0wN=Dh=_=Z;Mqle&6?-;sX zBTMv4e%NOW*K9Jr1vcap$>oMk#xW(|jrd968VF?K0CccJvuC-@*$cBaSNWcRHOks( zx}sQbz8Sk!?XqO3V}cLP_roo~uhq^{pPr+lCdgU@of?jZU3J$-Yp$-=S)8=fOT3#v^ssBIR9Uk}G*%n3xSd4;nQ#r`$K_oO4SVy z>-~Cfup7}^;NY2jTrwi4E2}2hYX+*+6%bzI!`q#({{PRew(;N7KijH(X<(!VA_#*3 zfFVbmF(^r}%xW2;Xh{l~DUt|jEU}=}nt|0(QprTwjuo22RccHrnW830Q$6x%p*4Tn zIADa+A##)Ll>f#g*3y90um~&)f75J}MwTb)d2BA;`)B*pyB!N?1L2^+rmBjdNn)r7 zl&U7wCKRMZ5h7M)m{UwiDMczl3R6-=Q$$3BQxg$26CuuKjpOqU`TX}dAUw$byN{dM z`Xdvch?wyrY;@SsrnQcwB2P#F z_w@f={{8ZyPxMI00Ny!+#svP-eV=cM>ugdRL&P~LkhP$mun2X8N<<$RRLDctRYQ$n zY80ge{_-gQct8;EepdAb&LHH1 z7$DVjG7bZ6_X>_b8Xgy)Ti5QnreWj?CD8+i6#wF9$R>cX zNd_gq%ZcsPFaePPWC6Oo(>?6f|9rT1ZhttK3;THW1A`?d1B88thmQTcqKh*F1KH>? zE!O+VGbqqejDo=hf&~#RERUQFLJ~)uotL18aYTM3w1`lG1}JNP-n?}7n0e|aw)avg z-`mF3I7{+jxEuIO$iz<3I640C`ogpu2>iQVoSlvSY8~*PDJC?ZPRTWLeWmXs;t!r? zdg~64o&)`W)Q!*n_os$MdB)@hVZYO9M6C+6J>O15*$4l86aiJEw29uOxE*M7hQbTc z5=bNK0g)&`(u9N*B#OY$jUclFLbRm_3`;T<5CqT_3siv$R0IG-$w4ud1ql%lFlfY0 zOOhhgNErr0C4@R83|RqyO-8a@q@z;AiZGyN5)xKsSs*CWoi>%gNH+bh_BZ%59r`pB zq$DavA`&2wgb#6y%`eG#?R!^~zH(I&BIy9AVg!I_l@&5k01RM24CcgPc-k(LT7}I` zVXX(gY$j_i4%*Fo=GvRP0PBr~FjPh$h>{Ya*$dwZ{v4cMYJ-JKM9WtJl7z7YGhA*O z%TQcoL*T}?Q61A(vE5>g*vfn(X1{K$5JphOd1A8tpn)jJHC5trN@eV#qH;tFJmgz|nA5kW}` zQ4LT~L=*m)20~Dz07FW%BFvO2B*I8Ui9jFa20<`e=2I14reXas#72h99KYmBs-i8n z3n%>9DyWJg^Zz;jQ$~geA~HHg*n#zHFNz<6Oh{z)_4<3c`~ApycLC@L<@xLI^rrwH z6V#U}M0!~posrW|{VVr1G_kv&ZEX}kYfXZ;?%{bVgK=T(=?f%7brUc%BizUsGDO;* z5Z_I*M^HKE<0LtmEeW>_KbkL`lmSf;MG5b@9;XMtE{X62?c@CLHV1Jw3E?U3_t*`t z+>2gCj~* zibDi@QWKM`9qiH!2J)b~oElX3{CV9Eusfp|XD9#Zsr(2(n33$&O>EKA#XZ1s6jQp- zdk6#!jv52R11;JYOpxYt?=v+7L_Q#fLX;+s|XU4r7{F@qbT;vqT|O0(S0ryOTHcNg;j7+qaxf z_Ne{>Lc=>V`E>R$`M_X+21qK3pn`@58EZ}XKJ;X~9LbMj2aOVp6-OKIr9I#3F+YG~ zZ)UlqfhnvbgQR_{!H0R2d6!eTI8XMk>kxh%n35c|=NHnq`%NeVi z3E7)AqFx+OCYClWiZX4?78wk|VXNm_QM?(eZnsHC!Z#W6l6{^b=4N;b65-HBCL;(b zBE={2p}DYV#Fl|=;JH&cE29Y90~)EtMg^8aR8t~C7QjY<0;w}wp+v~Bh8z(nQ&BW; z5&|}q@CF#k7_h92XBn_)0tzX@5f%(YC6p!2Q0$QX zx0CQN1sVi_s8&E-YbDgfv98G|99Hea7+f@E8+eBpMmTO;ZORM5cyd#K-;GRo7>g3@ zWnhUEogqd9l}(CjMDm#|tQsxlRt;U#1(P*GV>lDG<%YWJoYz^X$$>eF5vHQXQy|V# zS*vysw4ouE7&%s0r;*z^poIly@qEnzVz)Y{i8Ux7iPPY^JJJ}TcFB>H%dk;K28{jb z*3=r1%1GU2W-TM@L*23PZ$r0vdTm=?`%`Fb=^i2F0$PX|pVvS+BM`85ckKK3b$=2- zqki-n0c}Ei{2}YiJ-jDAaCQ|02egZTxk1!_(*xtZp9xVttYbJR_dq4PKoAJplM1enTn~rb>Z@C<`Uacg&8w zfw@!I+iCL+QCIW3-K5ksTSbtmUU)DZQiDz4P^n}gh>CCwgJ`1EA1jObt!{SX6jc+Y z)$N<0xHWS&(p{)JnEKRM)+)@Q3OLVMhyy(#(uHIQk_eUoGN5p?ZK6@)1jLhkGbJR& zz}z$x5=3iEqf~DLl2FnU3WQXIB}h)jL=Hg|NL5iO8X#V-Le_3sj3E`z50Bpa`?~|K zZv}cPW|uZkbs#Hz%7G}A%>xC+ktKpXVaSeftY{|#cdMRz7o{Y*fU<>*8pREIngCs$ zZ4ZY$fA88uAWi`$`#|72->OVxG|-q?P)kkF$herz#(xa+&l!fPoy?uGHHLhr9v4?w zC2-6^WZ%8tLG70MJqgvD5HQ{2p}wl0_hHuOflUfvQkh`kkcN|Yv8|x#v8yy zgi`zkcf148@goe;?o9yS$#ea4x@}{lD|^-t|Rf1VBVYZ~1?mX-~F-ANbC{@8oa)G6()m-BJIy zrZ7MBSC*>`ww1`5xUzUyFDX`#tdTjJ8lj@el3^rD2%bB~o7eJQUd4)yZ~l>WUL=3~ zC*?=hJpZ~C;l-EsUk=qh++YV03}+Ih9V_u_0Po} z0h1CW0YbqD6s(B~Ou1Q9frC(j{u(e~ zr2DZOtx z7dbja5CTCGO2mG6Wi-`I1T;l6L`elDFvLkERLV@u6+|7LpmU?+-jaz50-9VM&fU;o ze=4Uv7h;Mc2+Inl8m5SBY|OwWAZS98iK2ppnTaykTSP<=V;f4>aPixqSScuf!~Lyu zFqk(8Y9TeD5U?=-pvc6V6srox$d-yrO5MT*yKVmY4QaFP2Sq`3)$>UYqI%#QXF=z~Njs>lXFe>ohF84sWC{u06+I$n<6n&SH4{HpV_ zJ+s^2?V$sdMBYS^0Op;?F4$qcfzN1KFcxMQqS}bmBGTFF9 zCPbRk0nCdc8PKQ5aSFK{1?dPuqPJ#5(SHwN>D>>COu^<4^-l#njg?{`B^ClngegFo z0%Vo&Q6x7*Gpg_8N|Pc`B-D!WnEf3921(I!&dH&I?*juKVFVNiK?IQi8b@*1Ddj_n z-d@f7uSeM|=g&fTQ3-B`qk00VFi5NHl=Lz=231H6m0)K(Q+TBqI_< z5+w}@BnWs$Fo+bPLcjEj00u%Yz5Us z9>m|9!)XqO8}gePePjv}iduKDvK^iU&8PqZ5kq1rQ-@ydlV*Xt<^-^_+>pwR&dJr* z2oCa$mK*v|KHcfpK?k`2GqmEd zQA80*SeRuLvIc>mr3w^D4ML-(-!RY^n))~?fjfk%DZGQkpoYmZ!vCGZ+Ft>{3_yD< z*hQL0aRV4KT@iT!1?V}N@Z@@k2LfmUh-L8Sf@&(jPjZm+;M_IWG5`~8MS;FpZ@nMe zC=b-`?WJMN3B(8}EGsG!!o*TVEhE)cbm?KU);Sz{#ISOXGJB?D^{C$08=UzUV-fm4)`IDi-W zNGI%uAOP1tsiT-5>(s-KegJM#)d@^eL{jR=X^8k!cc~^5UOVQb@`EWt2@~0X@u8$R zLiO9y%x2r-q~6gOtmJh&Iy|p7nw6;dkpp%5-UAie zL1ie6DKsezb0V~MTFjUGV`vXj6%T32iqV!>=Xb%hQvW^rkDH_(vae@ zMkF)hsJYogh>2hV8~QOYAY|arHeys?7+-v&Kz(CY#1sZddRqBe`DFzIOqEim!WEFl zRM|0u|5`67qT)mIYD{-=3=&^%Ww!&AhW&M7`rDafCD$!C@xA}HKjGqXoi$T5oXks&?azLdOLBW0_-I# zt4VEz2HLZ9yK5X8j;WX%x^VG%-PSoku3IJvL}ff{e5B&wXvvC$L|FqN6a%cnV7O3S zur3T%QoA}C!zP(jH?tCM2NKftn*$D0c@r7G9P*k2anZG|Lv486*@=Nd!pSSZb&_a- z%oAslA<}i0u?}_&bjxW4Cb9+!BLrfMU=@Wnwjz=aFf!4O5fsd_$Ps2EXofc!TS%0$ z2+4Us@*5rYoP##D6&ksx)T*1HN%Eo>Z?JDZzU$(rvpi0$6Z1=P0jQTiq_!5 z)3-QhQgOQ?Dlmqa6O1xhciWUQ95k?o-AHtJqW-&beom?{&VaBH3yPZqOBV(pn*|uKQxj|lnRIIkXvu4OyIec;G^x)!M>_&cOpvi; zi;M+z!@NX9LC|}4fC8Mv3`JQJk^nV(7eWP&1qQ*mghv_{<|6>ua52b{#7L&JHD!pg z1V+u}00j^njPPq_NWJcFLFR#c_>|Q-+6QC{trTZdL@6*-k#|usU;)KV0!S1%Oh7bZ zIcWvZMrj1?c}~wZ%Z!pn8U!WQ zvY3yHk^#_{X8C4gvK-neBspQk$>P(gg~vv0!0OuBgcziZS!6MSwm_CNV}FGP7Fz>g zY$S?(mprCoNZG4V9f4_N^k86t(TjS*1A)BTjXinrW*R2K0Cb!r7DyGWAh@kbrUo(? z$t@PddP1@su&KKZiG|a-uFEG68BBQ1lO4oEVTI;(yohK73`%94L4?HHm?HH|{9Yu2 zHbxOLZ4(no5^jh|eY35!#r23{D!C>aC{Gd>I?eSWu*kv)skDH<ryJob}h7BfaQ_ z6c8T_cKYzHd1s`YyL7`)-Mxn&I_f_YraWp+^?4=a04xB+Z;kI?^)L4&#VVjS)HaIam%PFJK8y@CO3 z#av zkO2M?4niUvNGL0i5JD*Lm?D`V2nHh5QA3``c4r^!myQqoU(0C_BncE#vuZ%jsrax1 z7xxQ6B-cj>EQim~A*Dqg&Ebru7ajq>KbH=G87TG-cn1nTNe>0rkJr3kdL_Ueh=;x{ zuU3D|`gH4oHw*Sc6be#PMIcPm5lT?fK#)FuHUEv&`J`Ne2n1jKf9LV+UTffaAk;W> zIgn%_25`*#P@euaPg4hwLH5N0NCJeQ0hv^aDvx*MC!gjT8<8fkOH)C&k+ zJr8d&e;300y{YydLVGB#7QWXW)lJ}S@CH4gVM7!~F&I^b*11VZ0A%8{1X4C;39n>zhsG|JkKF# z!1#h>0#c1DG8fuviYk4w;wmHLov%Nu3HBhes#c^CMM9QPK5pduU0{5**m3jWoq~Dm zwe*GpM$wnf;ciiI`(%wlF1EN+eN#zU(9B>9)eR;>jNRr_#z#}R^wh=bGq$N=wGGTS zHes&`3Wl0eZ2*xEC58@Ef#*4IP}~#N+&79$f26ybK+k1}# zl9o1x!IrS38xTn)Q7WWOanS6`(| zH-zQY0now`alj5EE;j(&sqz5}`^*7>wu&F9U$0;}e2TlcrN{^ccp9}6Fe!5Gh7k^>Pe)d1fKs!K5TCLvi`E7Kp%S{=wJeXS4K> z_?9K1QL4SDJ|Iu45w*H7C`t;0B#J?2UwCKcVMD5+c=izwQ>5@zK$HLl^2{J;0AwH_iW&x|uEEO4RV^Vi5|oftB_u@+pNGHp z9sP^EMD^I$w2t7g2pT~kX-Agh@x)=dryoDPven)D|lliaK0UXUym6ipUzaAKMu{^Yy5q0_x!+JHV3-Jfkf6s zfl&2@23bLXgdc>38-O9_m0b&vgpNcDBLhG0Pj6L~Kx(-P2b>}Yh=*PjBom2$-^Dmc zf?m7}EsWGRFHrpV@+66vz;aPd(KnuBh-+ouhp!Q%m==*~bPxb@4 zy_C>Ig(ce&Oe9Jg6pS!KD21e$iRdL}ufu(Z#wKyiI#a*1FzLe@B!me+?x?CNMoC3e zRbL8G9(+=t0PG8^{dp=Kq)JdUj-dp9Y`TOBDSV_)e1`IGDvkJM0DPq2hM0nn`IPqv zgzNZa+SnKJT$nh-zcc&~;0v#F=ttcA0LdsJC;}*fCJHz9djbFHif^*zm5QjVrzD&i z_-VWd!sA5*BAFOW$ft?eQ0+BBXn-hV96>1%K>XkkO+bU9RHBM9r9gn1K`2miC6or0 zM+ih1F&JEPDaApI#3g_Xkigao87_P(sEbOKrVm3WQlEUxrNXEH$hYpue3fBt2{o*NJt&Qgx%UhzDVu z+rN$-CW-`DWl|;HQzW6>-SUh|$-q%XT*SmkM+5^3QE81Rjf{nfV%v_!Wjx}786*wya|U1^1tmv#H!pLy?;p-SM|%PifmUQj%mXNXQeStb&bA!- zqZ`E<;pwEsO+_jl(;@dXnl0arh+8Xb(YDdDy) zmy8h}Ihs@1< z5LMyaAhrC|&}?m!LqU-vae>an;5q!Npw;qSgh+xt$F2x%a|fbpu@MT;n>(rCM5{Kp>U#RFhnb`zcAr>B|wPmHae|B)EZ#oeS`+lG7%#-tB@1Md{A==uOwy9Fu0roCA zC|VX&TOwt>|5>#q6A$~;0qj7C6TQsWWi|wMiqsHg0?G=<+pnf~^%TkbLp`Oe;7XLyOfKl9GQ|f< zRF{%oc^q>{{bR0350_fQkh9vb#cw@ z&*h)8Hm!Pe`QdcI=5|)P=cl-HwZbl5mNMOodmNOoJyR9+ajtX52$yDkhK|OWhl7V7 zFrO#&8vvpDV=?pp=5h8U5JWA-Pv(tV&}UJht?Q@UIb9NA6D~)E)BV-+wG8RzzTfc& zubScU1&0>2AL>T^zizTd)CXvw{=)V(rpkla0S9;(QzX%MPWY*&{!{>-0Z&7jHlMD*ojmUaaBP8w0BKX+Q2q ziQLzMOO@KT;M5dahx7zz)rHM>|FyJuziM{;V6@*H@veFdfmXWDvHVX(ql?3?0SNMo ztGr=qVoDZ=RpguFs2ve+g;f2&1~$?PaNR64WM4)2m-LBoq@Bn?aAtAqW?Y`S^HWh@ zMxYvG$n*&M+=}O!$U18RhrEEr;giXFqW1$=Y~Beaw91Ek|DY*?R~S1z>zsKY1AGhy zjos^$dp)`U7-Q)3vQo!I@ zCzs^svLD(#rJ<`h!DKo7#PSn$V3T*+TXrtfE{svQAYuK!R(P|BPe6eMYQXhXvP#a1 zr$)+9qy_hBlj+oE)AC=QBH9-Ff0ny#NXC8m@x4XQv2ZNjepH5z(f16So$GL@3ixI3 zRQ#s>wBkDCXl>kdm-y?1^mvkCq+2Uudbj7wl*~*8PV0KthWe`V4wbxjrE(O^(kT%i zI!l!a5IYrMJtINYpb)zK|}qxKTV1A9-0$2f|sqk-qV4g$-D(sTE_Eli*! zF0~+7FF2Ml0V=1~{k#wcpa5=tB75={ArseaJP)*dAv^93G~zk^fJHd08#U7}n8vmG zU~lzFy=wfSkNjeOomKDI>?iZ06@u}<6&*en=%XsKXwv@GNg#K?r)FKsBuE=lKJ|5% zHd(0iBR3?#u5>%mhlQcxoxWa>s6IDQzPL|(UaGEN6w0DsxVM>2m!@0#&Duro)p)&m zohh1*_n{eUC-}H@O_KpBc0`#0C!*i?g$xte1C95&p|kEyO$Sd*o}4QyRBbG_c(Ma1 z*I6@+Nw;z4jr8tn*(~)tDdUS4+`z#t((XK#yr@8@i{7JV<+2c6n^VUC(=W4`DM?aNV1vnM~)TUIr34NmhE zd;y7*;%;strgxnkf9y~)B&qi9oP9CwvkKeq;$c|b%xUE;D}Ec~48Bjew}^XZN-;0e zrofTv`lcFW1tOW$^CzbK{mKDY4MYv>xDA=|P@EKv$ODHX~N~>D|ck%YGbSS4~UiwaumhTs*NZ*UrnYP!v zp}h<}w7klbnsjB(L!rn-BP=%zQm%iXai>7Yx5kOUE5RXI!O&#zOg{(S1x2)!=#VO8 zoEo5pkY0N0#yyC19=?P+dik4ADOAuelg&ib>^)aw73Ydqb$Gmm7J?llPN$4JGz%XCgjn3%$D?s6+Nyi_xy2$|L)Dfl24zexCwk> z42!&@>ZQQL2x&D7bKlZb*MDw$vsN3mH7}*bhUEU4zbE>> zj^-3R^l3O`93070>oT#iyF- z6=|1^CL7{dR~UVIEo>t~-oS9EH#iw1r__hA1N#yuZEy*P6CEN_<$ z-B)z!))M0N9*^N!W_ZvNw+SnQ?7XJG(>!K@Qe(fN}A(Ug9VG?{A-nh{*GpHY@-|`Z+py*Ia!x5enjAEJHr6ZWD9+M@+gyyWN&2@s zbR1RucI@ct#|r7;!+^WnuvHzQ$N%p1i#J`GIj+3Bawk^uU-{W@_YWSPMPJ@I>e$3T z_+IuQ?4OO(`817N?_V8hEcpM8`gdjQ<^1mm@$Xlhk*rN~Y4Ulb1<&h?4}VwS zLa0NJOV~G@TmdvHRB-d7xZu#;w6+*`r~2W=rsdzk^ywxy8&N$Yr%^3*7xrRYUi5O!NQ-xs&^GEcK({zQ2wTd!9tvZn_WX^ z-*Bj$`87C#0*^>kl*6my%}1&>A!p4@A-QbmBou^EG~Bg0hVN#+p<+@>4)Rw65f{fx-$ z*lH}fsa6psB$&LFS;C(=Q(M+hpV|Z!fb#Zv8$7byRWYW2zJ*8;uH%aq`aK3ltN;ha!B3B@j z3BUL<))fD7)~qdG;VJecnxZqFyIwXE6-!r2d;f{m`_%HRSZ$dU-dC1+6i2%NUc@q4Nuqxr~6F z4Ih^D0v7&Qpz@?jp>XjF!g7ItT`)xZS{weg!h6In_BcGddocGHr^K1;=^b!w z#SV=PTT1kh@%Gen;gT3H?!Hmj78y}n(-7z1sO77iq4->>#zh31FEqZW(9Jd$JW>L+ z{w0);@2V^}O>RPlUH1^x%$?H$QoW_~IUifweZUW1|68Y5tfFex)cDzKW|&KMwqGOJ z!0Bv63Rl0o#CF=ZGlAH1+5rt9&})p1B+Rj+)jxc@gvqw^;`EYl`K>ocE9ZlGGzH;M z(`=B&Ub=F+p57H8OBCz$&8~tuV1{T)3!9XanuS*ZyVKT0fG{EcrwPVpP9;K$4iOk^ z`V^X$!0jeodca7iLdCNOi6j+JcP1aZTgF(QWKk_qGewV>P7$RkVXV({<2|cezWmGp zUaQ!WJf)Jx`T(v=)WHBb(=`6_0C-zPhClL)TzkLwnSbu5v^gXW!Kn{olK3!6%&|=4 z^brLDVUlE;&X4T3fvXv0W+CZ(yykGz6O$~Em3xkUR+J9EKSQubUAb3uKD#Bb2N;8&M8n{c+q4r(8KSb9z z{E6yvMy|K&3%)`S*&_lz!*InnZX+uMOn9@rgN{Y6Tgc62 z0RM6~+t&h3P-MHE=E5OdA`RCy;Lf$kJY631xi&XR{*2zjuU6|(8qm0hSa&OeDw8@) z-N@H|a&AqayFDO|whMJ>ks@6p3E2n`ZggI~ciKs}OIPb7kAqa63n0<)xr;%ufoUvf zj!rL)hA2C`^?mYJ-^i)G?}4JJcm0sDQ>+q3yj9eblMWo~W<;!#X^ieXy>$JM&rXnn zm&f1AJFkB=3Vo+S4wWn9h=b=mKb5EXc~G#*~wAA*sl#HtRrUa+9*$ z9$4$a@*s1!zEAT~R5vXSy5ZB`UD-I{pP+JN^fVvmlj+ZC(y8tbvtXHA63He50r63; zXUVa41y$~)ppDi;5MQR0f(P>0!qR+0WsbcrujFK&dqI1R;s% zwLxZ>U`_N5rV$9jw24iQ6&?&zvw`Punodd~ZMsd6CRVl>Wm`QfydM9FB@tPV?+A6B8o&gjaHT0Sbh--3niqZ{ z+XW1&w_!~3l(O|Dx0j?%a)C;;vc2@BAOekO6h6MRRtYf@i-pEiLbI6+_!#s8CaD(J zrAU&4!htcSvb-fI2q`hWI9*jvJ{F;*YO^H`*GD4N%JqgZkVFC+~%_>mNJk~ql38B`gVP?ZEjMHnoCG1h{y7;htD z%FI+|Rl1mPWT*fhf%xoD+==Pf0gh14_(~kUt}^VTS>!OtXG4rl_%mpTm=qMYbfsDH zW(FpC5pBy0fT)4X_B3O&G!hZT$d@gbEzYZk?^JX-WNFS%ew+s@WG2fq$deK%B0mt< z$AM-7PYfBx6;)(LDcXzGmNm!50%OX>(052ZgChN$H#7t%by=H8@oJ=YXyDmuHXQQ9 zOpyGU`JCi3j|_+syIZE44a5~^7?UK}Pa`>vb=9E?eZ0oOIf~%ZFi|rpgY4GfWIJSr zD{g2~`r6X2pSE!gx_nZxvZN{>rZmh-^mMIcg}Y7?xG|6(k{~=_&ZQjup!8bfU;H~pvv zz=LH@M&$WjDk{)ryopu7a-Yg1!7AST7)TJXfHN24Eg?~oSm9FTAS+Sefb%FI8Uuz5 zY>Uf1VkA!X#w3!Mak&ma&Qh837$2h(U02##q8Ku1?gKFql#nQU_42C7^L$gYjk{S# zoJPQl9|M8elD&hcq<^Y$4sg29v^TOqa6%!8hcRhEI-9 zHpr8ZWw^PO4JrG?2n)-rJ28u7WWF{tA@E_9iisq;O)arcjbH#p55@FeYRUmN3Y{Pp zjnr^VMp6ayiL2+SXkfR8J|ynLc7YHg`gj$}T0Cj$_3S}qI%Tn!eB_jgx%5Jx_~EA8 zN6L$&8W(C5V$?(;3+<0WmU}Ad-^0P~Yb`|h ztIP=RZgG!(mOV0?WZ@6-^0nlcnkQDw4wMSHxPbKxT_!(5i|MmxC(L85VxbOG0#j^! z7)5zm=pYv1vZP{8F^W^mN#o>PR4FgbB{3XoQXYuRS?CctOgbXR9U2~_%Ee!aoC2;U9w4Yz%aNK;<-Iy@3El-p-Y38FmNp61Z0>%=6Qj#*Kx^aAd20Atm z3~*907tt{uaS6J&PzbrN{#hP8&m6HcC70~fUvjD+C?tS5BJ@_CxaAPswRZ58M$#ATdu_iQb z#)Lb>Ag&D6NFx;+Z$eN|&&zfYN(UlC#S8Dc^p>X!zL%4u-X9QsdqBkIjEVF*H{kj?XLD(av@&8ImdOeSpJ0t}@R1fa z$fMiBPrr4msQHzD?dyB;WCTuEm9K@TG!%nq`tU3kg1FNF8&;+OE}dytg^M%fzq1j< zfn^qtSEP!R593@mo}Bj)p?)^6#diF_3lR!RInbtDod9m~K&eVu%^P-FBx{(tAxMSa zP{z<(Pk?S}Bd~3|;-;?78LVj%akk%5Ctcm3IOb1~W6pA9@3*%%ZqQ>Vq11gr8{XQb z?=vvHl_vg~Zn&Gdv=f^h5}&LP_OI|fyGz0=U{u*?;(7j}oo5d@%bxcqrB`0vs}A}2 z_j4H6eZJt#Yxf=hMU1YWH*`)uKJ}A%p19aN`_J&wBgO=~Y>WOE<;3q?TP20kH|v7= z9Hm((@^%%2eSEU_41RY*y7YL~|Ddj|I;j*-c%8`3<9|v@)|2FFKPZ0=&*9XuNC#-9 zg_KBpqD3!;?(dC-@u|&WPffzgu$6>F|1vH=UK}s1Hp!IE8^==rMv8@QqUb02v^y}j z-A_4ZEKXamM z9=ME>@uNYp7Hc=xe@i;8RgJKp;K}|xN5^W#`SXIIs^L-liEUtEfri{6CFv+dSdw+K zd={7O4VuCJSWpvR&NUZY>m(UfdPcy`_U#KjBkHpFj$gtG@4qwsZ<}2v-eSHYps?Ow z6QS|s-?DkL;<;=Fs1qTPjeqavtS4*y=|$E6=~-dvm)}e|C;t3iP8_`0^|Oej_QONP zrLK0Qmp$wH0{gAMZFJ|qWU29swqNR)_cIiKEb5yZ*C};fl?Uz=mEOMrJbsG~l~E;- z)5*M6JK|K&=(~E{#WL$0r>?jj1JCba>A(x(pv>;%a37tkifam=>Rlm|plRh5*!kq{ z&44^oxW-2g%)AOeH!I6$*Cl6{a|*)@+ft?rC+)+{^IkW{Csw!45z8`VSZ}eFh@D=Q z|Ecf1t_wO?0wNL#w1y}PMv&L%_Cyf**zZqjI4Y(F{t zJ?lW~x(%zVCPOij6igpA-Ggru7>w`y0t9=T= z8w)?A;~d^+y2bY|=5krNWLr@mY?K6zO@8_3{S%ce3Y#be8h6b&v#x}m*vZykJw7=> zh`r}Y;_OKXv&`C+mAQ-NghgR$nBwaJb9%kq;aOrD=Wlx%BET^{D%lUZ+kHi3__(KX zJCs;gn_bSIJyV{QHUDR(`?h^XeNh(56h-Bw zqKVbqpPcZRA+3B*)`nHeXR0gL23_-Yo0$I0u%n5{u(lMyhV50T$#wNWVYpTy-`w|w zyS(qSaqNQ&6J^704E zM4x!N3-bTffi=L^jWJQ&cyUQ91(RiK9&QT z!mciu$8p!UnWnN7vLZ#962$zBaBG09%t7Bo@2^~+X z^LMB9xHnlJ!)p-_B*25UKgZ}SD}rG02`)DE@7FO*pCH|iLhAP5$!JA8m~p;ImM7># zLZZ2J!rFy^ub40CNqSgYecQpJJ!w(h+k$7#ea6MBDc=#TftN1aUg*85(5vD4IK20U zJf%#0@$*Egu!rE|_4_^r|42t_|IGqJoQx~ztfkX95t<1A`S`*4$_Y+vsbd0%jPZ{G zKF|geE{_bTzE87SrrzwcU<`E{nYQqGvfmBVJ$)_N?N!9->`5g=Vlkg0LQ>_Pf?K|{ zSuE9Is+*ksL^*qjM_l~t`QFvlXQZPoQVhe+K|02BH~Lk_?bARAwQa~CL{p&JZaKd}1JVkZim`+l(_N!BE$>8-^1mhNahq4nsVXG2aO zmoO1QLObbV?Np1Ejp?ZO>D=!xy0&a|{Q1Kz(8FimacStb?R$+IB>_{yn)QgY#IpC@ z7w&nyX4%5*H*zfArAF89K3VP5uNPrIT{R%_u(2dl0y54%^D{tmyB*nygj0I!>c2GSoJl40Jk@|DIp`6ZGZy;))m z(J9Y8ulyTeDDImVMP>ie&?ku9iT6TT@&?DGmBoWct%qk#$sUT;H<+Jv6b%;(-%9JW z@QClqA6V`wCh=G9D@5> zmUjH!mvR0Awo)TVD$w&+**;F*bJmPsyE!7sLMU@$WSaZPz6tET^l{BB>AsT3q>lN@ zqHXEAy}i@in48&jYf7yYmvi{>r@Hoi1i<7;Q}Ua( zl*G6f4Ox*#Q3_5ebSC&ewtX87Vh}<8s63z$seVQ3&71H5 z@0z#N`S(!|idJKU+IogQe|2otc#+HXyfp$A7uKY$!;g&ah+1e|ds<)9^m-xiFR-qQ z^~`F3qUO(9!&fQ(ZdGuihm8OSIfdhF;YptPhqFpP$SZtz8V+FZK*1(imYGkVE{uqWm+XtpfMl)9zgpZo?lLg=?jtILC4#3nZOMmJ3h+ZW!qdsnkGJlp<0(fraEvFH20zqZ`axUzTkMN-Z| zb6Q)S5bDjYy22IjkCLjbs!K1LO8doJ_7*&6>R!Bk77%jw+qua%r*k5|W!ryT^M<_^ zT-to*%6nDl!Eeiq-6+JEs%_Aei*57A8npoaFJ5_D$LrEk5x_3`RfiJZ7^|=KL zPm1DI@5;IT?v2KYGSjx?7g5o1mn;4>gCE}d5peCwiCPjC@l-1R{zA0Y{L`lx`U9Tge+s^#Ugg#@OMF7K1h1?0sHRi0U`gT6Gi(#Qo!#mU^T(4ls@U0g4*oli_;%&^ z-Ttu~9DBR@FfUL1*R;z?{=sp>orG(*ZYiUAzRdHyVgTDOeotuQ*Zr)vT(OV#P%x<3B}*b= zron4&=683v$B-5G5qzZj*q5$IP&9D;k9&yrz3O>;L^u5v=6w0CgfaUqu!ifFNKDib z!Smi9G{B0iu*Q?p;qHQ4WQ#{j6Cipe*sGd)!vvgH$S|_BR0u+&LqNqqSx^aD#+!rc z<-nVLVj?sEru!5CI0}%DFheI+VsI%-F^p+WyOd#o0|5)FAix|}v^m-bE6d1}D6cdw zNrIP_GWeyv9EkQZ(!?YP5X+J%Bm~SXF|g00dBvZEYf{DkNGdql)-xR7hnuDjThQAZ9Er`fvX@0Bp4W^pT0?bxnOz$$iTsr>5BU4G5Bgj6Fp8V zq@F?crW9*Be##Io3!HZB`65%A^IAgCRE`J+-p-7nQq=hI2rDH#_#|MHs3xUwBb`zV z{2jUd?BQT%glJ6CJJBEH-#^M`T60-pMRgf|ImuuWWQoE$XsL?5-U*rf}?P9 zLbJ*kv>aK=gfJn1aJmRpARVUyS7FOSU6$pIrwh_#fG6(k7&_Cz6k;foD3I=@lpW$g zP*ujMSW9ErRP9qNfK)HdfhR3;c1JTh>MZ*W^pB9Mo}J{onqMc9_bSzYkC65m_>Ct z^lE9f=|$H+uul_SD6cUjlbDzEu^g4k8KbHK=1NFr615nI^->w8oIY`G$Ys~+q(6~J zIJ{Vodhb($4*dM`sKtk_cSy`Zun=uBY)^2-xH1QvDY>e$1X~ImyI~*zn5A?@FSu5arE?=$?8CkDa$lS`K2X52T)yHW z6Q9KAsKyec>?~`r6xj*^V}V0dY{~qRU<-aYKfKnE6<&gDh`cY(_$vIk@@LNa+J$xW ze-u^{5P=y_|C>(1{bYN0PSW%8f7z(!L>7p|WnhlB|DDdfKd0Ly=SJ=d{L*wVv3?{$ z!K|^dy#EVx2)hy82H6x%C}tngvFty8RMJW`v=RL*m{Ur~|3{IoBFs!lD;aEb(Xxp! z2v1bVQ8c_uO|qUtu`yI84DqyyM@}k5?nxc6oDSuG>Tqk7yQ6(;;9x#o){yoBfD7bp z;P|O~@UcLhKxbr@xG`NyE>)CEWYWl#B)7yE?6n@K8&SH5`}d))k0@GM|IPx-ODvMz zhmni_HV4L#jVbT&_n4uz#s#qXZOl{~OVI@wiE+!nPFPg?OjEqiAqo^zosm zl>yDHIJ)yzMF*KBBN)8l8J)+jq5xbrMkR{zmG3tc*gW!BaWf{QTb#EF9~#;eLNA6X z(Hz-dZhA&w&jtJi7o}*b{R|Qsm%gtirz%`4EzWk-HZZFkzbzil`p6uKG)Te6dDAAx zA)Ho0l9D*+w!D=Kxf@hQmfi@k#}|CkBQsc{6P(Lv^#K>yicEKVxK03aF@H+RP5QOP zSO(*HDD1Wz0J{ht>kWa!w%zA1b2J{NEVlr>Ij_Spd3o4zIEf~1e3^@U7E~I;?k{B~ z<=CyjajtSNtFz9h!OG&B+?&BGQ9shMd$r1=Y+>IhB%V`A_KLuc8khWm-p?8PjRwpI zA_45QFWxso5VcEZye;9w!QA(QY11u;mispGX=I9=A;7f?*mn^2D&x(A_z$cPCbk+3 zA`@<2DThS3od24|X|HcrZhB2)jk}ji%szE8=nbYV1pNKd{8>5Eo4j316C6Ur)(H;{ zKSVyef-d(s7}OE%O^poKLGbb+Q(yc#1;D2p8_ck(St#LRdLhUL+>~;N;HAI zHdNv*gG|cPyE)|aOl*~vWaBV|7>=L3sM~hyCp10w6C{&PA~sr><%jGo9i4N(tvzf? z(p|iaVmM0Vbqko@V9ly?kBMEFciW@02gMoa2KgV~>#9nT&vfkQfLaa(AKCe?j~OEg zTKQ$uNs=sb(kxUsTpIYcs&A0_a{!cZO_wmMuF8l4zsp*#E&I*z^i=#jIFamkHeEuJ z!z!Ov{5pOzPJ&kE>m+VF{Y;;;N2xV?)x(Xg6?ue24owv2D zsWsIZKW`m98j3q|ZhbA~(}X)S{A_I*@}=f=y=J6dwNLKfU#He!qv`@(QluDy<*^*5 zSP@c90xm8zs8me8`(FHN-E- zPw||uX;j7E*QDI{JvCtKC6H=MMsI9($X?Tn7u3L%@FZW;&$=F-fdO(OJdC;jFydIE z^Eiw4ls3<-!%z6>AG71%viMQWbARh!kd>p$$JEuA+UleBd21prlW}mQ96?CJDE+*` z0bBQbj>JZT&a;|8Dyi%H5;ykQzne$j|1rFE{qcmT0OX`C4E-$@BU_2eG}Xx_F!b=S z!uB`Ox$qEk8ELq7O5BCT<(mg`6gYu0NsJzI64YK#ur)Gww&X~7T8VHmlO=&q_XtY3 z*iu{i!GGAs;D=tl{~o)0@i_w0A%)Am4!OzSoH59;L);IB$TzL=p(w6eWF?q~OMhJ)XYEZ$UoyeXEcH z9eZx6_e&Y)TyfrI222RZl$52SW)aedp=At!lH%O=0c8WLrmE)? zH7?=B9^QU5TX2p8@T`E|&Gk(00&E!E_z^@l&qYLwgGuf+;NDg2E(wmJsXN~)uTnY1 z*(g_GZWvIeSR18o_+RYJxslW{F%(@XdTAufrM|eAOEOijFrpXe{=4*^$A=bU)ZzRK zwJOsw&Dy?qMt~gIfuDKuAMBdSzC4X5KvK~144eW`x(sY{ z2rogZQu;(o)DRof4GhedVXZ@NCY66h;XwqtVHAaBAodL_3Oj@xw2Sqt&BXawPjwT7 z8qHVnU{(_51eJzY9pg*X}CwbWB>9s>n(hH*Z!j`t#z_BCu~?C=$&olUyFtk-O1?RclG-Rd$eMrB&G&3OKCbQ~YH^ zTwd>WspZh;d(^qJYiASn^|Kr$sFKYDowRK-$~iVjU2j7(PMg?@jvrI@f+{Or*N(j# zcG|i^8AjcYA3N=h2C-HIIk3%RHQq0WiUe)Wmdkl}KKs5XQXv%)di}E5h?84|IWxsA z2S}(|nuE>6&-qEXAwlT|DW-N!J=yr3*KM77QqQdv1|55?`6JTw8F5K6ywirJw<_J| zydO88dQ`Y2>a_+UD|XkS`wAALD)NajRcx7wYN%0;VnqQPvT|&rJfdg4LVpn81I4`H z-bT*KN%G1}nVULD7qEHDm;#GsFuAfevy8D|OiC;lR38ghsK-(zOorArKMScB=Ax|v zu;mjlzb(l5L&Rhc7{QxJ%He|7Qs8g|uvnoK7pGTg%l0MgQQF$-ueSi`5#Nn=>yf`| z+#+0?m?Ap^W#dE&fV($yyRH*cjOXRNftOdF257x52A-r))0M78@cO%vdwgl!SalsC z>=epd?xZ``l)F4Odhve)oY_@LatK~|RT+l9kcyQ}qaJ)p6m|l4ijdu58yP5L zrm{gvc18-N04de+DOfMB(54nLRTIUnk_Mb>Ik^ABEWO@W@YdnrYAC{9RP(gQ&w>X@ zLf67u4}s&o%F0U|%V8)Ko2$;#1VNfC{GG$dKH6)Wap!ulDyyH%M{ z`A|Bm$ZAyQAa`?yN$xr&J#Zs=6ysz!F8h2r8HmhZ^$+cL8X5urfXIhgpA+fUb^IE- z6nI(NY&34;6szm90QR)VKt{tEnwUmT`=X?<*JB$r4s39)u~o7G9I6{6q*ux`zHuQw zjuqPFZ-8yG1fdLlW)rPNuiWZeHJxG;y?6A3z*BYo*DbN}@R61es%Q2E@c5`ZSKnUz zcm8i=XYazzJfaCoE$UgfyG=Hxt(MfIAzW z18@bk&p@7of9C<^5Jo0PsWIByyZC*Cf&LE{EH9a#RK~I%>7@mc*}^b7UYr><`^q}z zP|bs!n7`xlDd^7E!hz!6ixz1=L4wR%Q3euKVjce-E9EE35_lXDk5sYR;({i2phOh* zI>Rsev$wgRPWIQzhzAVXf2rL^wFZWI?Q8~aV9%1cjt8Tqa8MpGI6p=4_JwzAPT#)X zaSe?uRa*+w{JI#VGglyOFHX&_MT_QMB;}%PuUo8E~8&Ea?x1s)A;Jf3Csz1!oj60cskr%q{%MZW*5*O?5IlT_u9$YB= zI#M`(AFI@q_ZOP>RZN3>)9n|Fk)(uJ^N&AzT{_?|7!o!KSWuDvU)cJ=fBO9zf~T^P zE2=dhaG7|(A3)3@cX;GKmfGmyw>|GJ(iWlOrz!CuTg?%#|Nf>)n$u0+m}@lmPu!6_ z{Bo5?I2E_-CJE}tm@VmUkcvsAYHts$vyZm5F?R$tFH<9bCjR9K`ip|mwg3IOsR`dZ z?`9mjKCpUtoHA17RfQG4|Ml8O_k4$ac|(IaiROfTOi7Fu7QyrEJ5yfS*mtoCYO&^> zGbE@4vv)Rc_RdH@CG-g22N>1`$;t>%f00p{R4j9;qT&=HG7r`Bqu|R~OY~ z5I!h@lC|h(J??v`bc>14XzxajvvN}KBI=wP_vAsMwN7%zZ{b8s)u#9ITIp>Ud zknI9vX$lfXJMTw6A9!B;k^kY;AI&l2-`?J@` zO{l~b5 z*W)7CS&>L@RH5{fmRJryg5CU-sdMc19^t4TVvc0?VwK1_2xSW?Yvb2M11nGx=^4`x za0~H$_PKGju@nnI(li5%Be4(_q+}=2WUxfGqzR#c1IaN7IGOr`$&&HRI0=k#3_fX? zBi1+@O_pe2!~q-dvPh-^I%P-(#8C{YQRguLzKe~&eX!P-z=$kD>X-|cEnfVY(^J4x6b$T$?@{#@$t3eP<#??rNn; z!eR5Hei-Ct?#|M}3~qa1ko#dcJ6ZuDZ@fq>|J8;y>|>-%mOO0WT4fK?a3wO6*b z*Z(}$WY-AKIhz_jL%Qx#*+kzN)XdjqCjbB}gqCyr<88K0*B7c2e-Lgq6}4?dL_~Me zK1Ji5{>-sAy{=2^&|YOZIM>-cBGj~9y(~Q2VZK~zterm{p_sOD7^v?Q81T%et2D=S ze!Jy$c?WUlDgVSkTg?i^XSO>lP4Dg(-LI6{Tgfq5>77v{Kf4L&Ap8hoAr^X( z09@wCD)90WVWB(Sk##wSb{4=1003B5L#v+yjLD{DvQ-tPk2+p-Zk-}0LTqgvRC4uO zSU%|f0BpIi&QsaOjzU)!uc?(B1vFlIQ+Y!uQ|eMm+wyXLw6Fj2jnGd|PTs}j`(($c zJ(u%UG{pdMPOOFSpsSA;QQLJ=0_aAs@Q4hC?H4`s?O1hUeLVT+0d47Ar?&2xuf_w# z2v3hX;g-qpz>a-B?T%e(_r0`hWxWqp!x1${wZ9KP{O=9moy8)Lw;G8(8Bz?x=rromeWcTdtLcOX*aqE|N9Y7@YcPW3s&K&uVWpezBF8a z*e8B_w`(6*c(3Z2;k|@7>kS4+%WMN0HQ5E>Zjcz;vo{#R$&?zFxMsN3%68~4bYPj=UO z*2K!2(Jib$#W0ts?()Af`|4HCNVXpu+V4gM(-YrNc-1n>^-iDYKmWV_Y~1v{$^Pd5 zu31k;cK_eSV)MTR^8Y{n-@EO}BlCYNlGfz^Zos>p+z-*eJA|9cR(>3~02*g+Ec;1i zk2g_s7aGS;EfUzHpDe>jyKk(WJNFtOGQtZ|tZGgBHh{+QYWt?r;c8&P1skfsDLa&U zV=eL|^IPc5lx?k{({l#wA9R88Nz>^+-XD>&grl(V%oCQSvo5sDXD$SRpNvs_k z^=xrw*E%|K^oU1|>f^qP>irrnC;!EjjtUmv+2$6fr)%CX8W#M+BUsc?HQ`MK?m|C0 z#5&jj(K_`cZUEcvVt5f%EF!y#LIPNuMYkwk`c&8ysO|DWVRrn9&wRO0kK}TaXstp< z$5VnRRSTTrXjoI@Z`(9bifBr$RmPVm)({&*(I;)Z!0>SIrivkx`z-0QUmbt|0EQ`A z{U|!^f`y-ezZ_D%to;sXI82dy=Em3*DEFSON1vrSlY0rigtrh+l`l7*esOJm*snwHC$?n2Uyq(EK1yKyX?>n zszKJI00#hov0lSG6?c6@1N_39TwjhxAxQb6yGJ#_(I2no>+*j9Pe8E0CX5Ey5mwCs zluBl;wzgjEJGIW21%y+`00e2E0Fnuyf&v1kw4?N|=%?vVQv#1jG6sSq ziJ(9r0!&Rb6DC43X_1m9lzygBy-~eWK@uVfPY41uG)zoQ8kitTpR$THJx7yB19*4% zczQw-G7z-%mX@`Cf0X^czn}8_&#&P>rkKV5K++$}F12Pns!AsgV76~;RUpOzQ>L_F zNT!ma@S8F~)~mu}fS3OaF0HzQf?6nb{&>*<5-5R>ZaASBg1Zfc{;&y%5|AC;3Q9}{ z)OR3Wwcm=umSP(0qTn~Sc$+V5vjE|Mx?F1I#K=e$02~njIaKR`yJcT_hSa3Nju2&_ z&`7`ltb`!4LrqpmP>ZC2F@Y6B5U9Du6wU%js^S8-ill|D8A2vd0_8xGh$#vvwYP@p z5~ywgcr84VQ)g{TiEcqdQm-sJ(~WG=lV*&NVVw#`dKgi`BC(mq z0t!W9ZxV%vO4zdXi(&zCiuXOkTR|ihxTB@g z3P^z&3(^x^D9Nm33@d^g&-XeN!{iBp>c*$P9r@P>ziAAk2!*D}71J@;*7~_|Bq21( z0(l_-HE!=`dvxu+-L#^>hb+X95M)`+D#8LH1d17o6#)odxHXx+7`mEm{ASY<3C89a zrMZ+wKnc1K=z&-m!fS@$2+CDFv|vqR0?4UDfqRGucRo7V*;wCt<)0PWQHY)plL9;# z1GinEx*oYxw!L1YfgBJZ33IY+S?yC(8C~VbBh=a8fnHMXpkazJqZNsas^l6|fr<3f zWJ!P^ofv^~d^JK`pb>*9BY`$b%~%6^tVr%-R4A>eZ*5x*#2wprZW)4L5(?WJF(P#* zCn?0URCW}LuI=6o*z44XxU3(W1w2LXe0ESs>+e zj{8{gJ9C#Jcgg9HIKF8JuGP6>A^^Or9HftY8=Y$VT}c|%%_~9D)*;DV9dj&i*89Ve zyzKSpkQRt1w=t;%_8j6J$TmekY1P2wz<|NC#0)fU>NvznkwlrSm1YPTcfPYVqz5Gu zbd0S@Tbg^=91l(Iin!ot0>@{5m`xryu!N(0p{3T8@(9}7r#6(Wp<(3VnpI<$bQ{Y+ z+Ot!3tcJZT=w|tli`v*}hC84!ob6(Fx_IqLiL9{fu8_xs**Hzvxs<4ArS`Qr-CW5F ziANLGT@ zaJg;tS`5T6Pa(+tdOS}NjD34k~zLJY?{mn<=xpcw#@qemv*oC@Sl z(UD|OHm(~egtXC-Y25~05KZY`vW}>nYR@wh0x*E4SZAvXdP9k|I<3s|M3*E6V40o> z=LO&hsx_{gwYPjw)rV#;U6Kbl#2G-Ptp_@*9FZc);pEvn@4XnUkFd#)7G(h5% z0ZlDch^VS6ps}4d%-)s6vv!M#YE_FE>6OHyyCGFJ;`rX|!<#`-P&eOU&U71T0s*8U z0Z9l;fF(pmL|nlJpdbW-s^$uTQBVxUMYyO2kU@FG1Tz5;)&Ql&Rm>DqT+^DA5*#YB zax+~xGj0$gF^=%JYi-jrXmpqu&`w>Wr<s~|)KVkS_548#D6vrYi&y4!9{1KAwIyGV%a zv5k60c+r}R;vfy^DPF<=l=pVUozJ$S2R-PAm$)6Xo|_t`4XRa%Qpj?Y^t0JEbb=yv zwTlyLvx5auR8dwV7AjjR2#PAPK|0w%9JOMI#Z*|VRZ&G1L5d=Blo3d*RR-ES4dXD$ z#h0a)VpzczA}AzBd{o}Z?WZi+l0kwP)q*Gs0Yp|3EEP(XQRT4O)gUU608o)gNGT-J z3qymk8tuk)Q*7Xxl|@S?FsLOi3Pd!DCeQ?L6k^|Wg@~N z8#1urDlt<))&}C&WcBBb&C_Pn6FTBpc&ld!lfqSKB1Xc2C6tsvhycvFR5qsYSiGGA z`9Pb+qJgBS6^bc`yR1Ro0Oz*1Ui!F{^|MTnlg3Y6X|KX7sXjdC7KRP~q9fNF24xOBEuOI7;Frv|zD8Ov^0IY)$ul z2cg4vm5(vSDyB#~MrFhrpeBZ{sDW*S5~db`-DxqfWbTf)CX7Mc$lDY|PzhvEAx>2| z)H{r!MkFy9MmDx8!T`XSZJSGGG<1YrQQ*V}g7Y-$MHmqRHA*1jaEt6aJnHg=NdwV^ z*w%E_fTL+Dq)?F^)q&V*VA^H@0#--?1%MC~0D-+XH|5T|^BmdErnf*fF=Z$?+m~*O zx&g?9Q+7l$1P25jR8=AnH%X5Ab&~34WMhLvsC2M~B#KES-BWA~5EL@G&W?c{w%E(o z^vd&^n`V<8PfGh|+*3>z&oF$Ru z>2~6jO@?E`4Q*;}uGzUWbcZf#+Op3P=A6QNG!dVz&QTFIG)q?*#R=)${ZAOu@*2ZNw<%iXcw?X%yVxz0PD zxvb9Ew>&(yS6f`;p11GT`OEdtk>UqTfa2OSl=J|r;j7Zg+SSb~f1Xw~$2v9g25)z0=C6y>xB8lK35wqWw$-oPH z531xAZpU!p$CXTrF{9K7<)&k?gh^y!b5>>-9hIJX@2XxmEJC8_K~XLMR1q05%8Rfn z22213Wo}ku3BooJ^&DzI$?H-mfg81xuBnMrNsNSevfW@VvZEmkQ9+RuSpgXVT-ITD z&iKit>3B$xy1|n(P{}2NX)+Tu1P}atKl%m#-2e1E_dob!{;~hO|M@>d8%ILlw<6aJ zjIG=0WjMKish!#U>fJGnWzB!g|M$uRAdE1aBlkybh#t3u=r4cP#{)=kP_R^YKg;#u zj`ohh0YROA)5Ai|756GRJQ3g7523L25F$Dp_UpE#|1`fJ>A&C)e?QBedkpaGLwzTb z{&FlI#(j8-Bby4%(9)scqFL%?F=yYsIq}A%TtLi@XAuj`Mrle8i~*?^0INcKu1&x< zg-IN?N@+)84q~qfC-l14!$3GdD>LeX&`J@p`hAo@z(>c*4_(*v=iy$aj&N7vQSy7A z1t`~F``!I40&FVtw~m9BCXDu|U%3+s&gaF>qAdh}r^Vd{SKhy)^P181=r20g_=>G{@%#)q*IM-;HJDw-wE-D6ZVwjSx7E z{T|{7_3Mmk?h(me!>TewO-MVeDUi$^2R5B+)<8sS)SZ})jb{w#`MuYGLq*cGwh;>ny+!6 zbvrnJ`z674h2oEo^p)qm{4?7TKSSKcaO&}|#5DFjw3f;W4%W|-2Si%)ulZD;YFrVr z0{fUp;Vu~jj64Dy{g~@$njrrxA1NPN=Oi*H^4HaOE+~)c-?A0)zPJ?a1-0y1{P<6@ z?wTx;p%3ZLH#_516n)#pl?Uy%Vu;)OrcaCH;Gyhc5&49Km==0HQaj;nnT!AJbUxqz zHp~kNAdSAQJMFigr}lKs)8L1brg%Hkb@c0YCWbxr!{d9;4F29@ca-&kym88KB^Es9 zvpzMHEt=Fn_IdVc4!X{eykqGz)qOM6b?#*9j@v;fi5a|*L?qhLXF2A_89#HWNLkZ? zIwk|QDTP1wN>Yr&^1!5o%Pc5ZVFNAwZIQw7CNtB18frnwgmDa35lNBV08l`WaMJ5j zg10_+khU-U>xnTv(0rYZvWvIJGDs2$`Y-;hb~(PTc`%Pj9(h0jsHyq<)ee4Y_yk{G zrbL=6OlSdLAB2kppK`rx0s;o91CM$o6qrO9uu;!%K1!;&p1*JjLIvy(Lt27^X&u#K)a`)UY z_cS<7YkM~%r-eVJxh&`J*382);PSS-AxEN7&%5JhKYFR*I9n-56iFlBUS3{3`SoVD z$)Cp5PM%yU-uz1(6n?5$|0ldh=tVGp9}FD$uO0pxkvI{L7Jmtfq0*^)wj*}IGT4Pc z%TDYr+Ld(9q-p%`t#ebcq_D&$Fu5X)wU>j-@%X|8&HfJ zvm`S3=j{9O;pUO^A`9<6w<3RQ2RPb&+wp3b3icyfh*o2mOT! z@?b{$|Cb>^{$>XRNiVzo1kcdObN%>YM6XHahNdf`0mz-eS8g`~0_7Cu;1hpsJ3s-K zNtM8Vy6fT54PH}s{(S2`Uk;fA^wR4Oc4_f%W_|uQtL16RR=zdD{MYyP@ceYq!WV)` zv`#Y7mY}I7d3Wu+Bhn50KV33Q_)}2Ezm?7xc7>`qD%@*R-Snc*O%bvwu}caeRrqag zF%LOdqhB2(#O>FXxt~4Fh@yr5=zUC&QB8=0=UzaG=imV!Pd)W@gUf64P3Xs4hY5LO z1T9CqdUl%-%R1-FU<|a%cT7)Aa~lxa>D)TIG%y32r8-5@AsGWSl7pGmf63d+QW?F0 zN_lFTrCK3fw3c?xx!Jdl`en@4tJ^j75}z&@OvR*`vx=wdI1r-9ln9 z!9!F$$oWtKNE5rN1|_)sJi6eH2;-C1v5g&}+kIu%h%KMZ!J~%_U=4!oq z2mODa19`XNZ+`k*phND3e0_Z^U)-Gf^got5z`-@6u>D+e(C_QE#>Ya+kWOt-U{?S5lU@%2Gm}I#QQC^&{)Ir2G;UEM zrVxkq$N*#yl<(Ek{SiI?=mbClJi6#l74qlKXtJpz(L-WRn4?M;!6q?{5=0U&2jh50 z8B?MEOEuD+pN~zP_8q_F=m&-7 z7{(n~{?p}BxDw$=Po9ZO*hihFp&sEC-FuiULTgQG$|1TWDz6lU{-qg z;ln~AMk0cU`XR@b-yC(g#RZExQh=Mz@?;MQp^GLkmsX%67?7we6<{daC18vcf;0DY zhPr>d({8hFdeFVv(2_n1K&@$gfsgpgo?^6Y~JkThrFiNW9hO+x|3hF!cgNw7ND zIROL$2N#_<36N|O8VKAXcxBl83e&0X3K)Wc*T)rHtXq20{rI^8#OG*vAuk)h@4=zk zoIUU_CfC|KDfTG7N0ImCaU}+#C zj5E69KseMgr;MERT+`>Y@tUAzSO1L(P)t zv|@qydFu@zr{uu9Yu8ZHiVOs1wL=&y_?hFj(`47r#?t;ilKpPyz$@Q<_t~z)u>_I` zBpq+rFK#)SR7s=#+GFu6WHyxbo)#|$x-CRGlBA0wyV8->l_G+`*K@Zv`1d?}a&%az z^q#qb?t5#g+qA9rrn!=GArX-5g%yKp8i5GTT}ItKC){m8NKTmoonTuPRAX)LY_k8CTW)$QFuAO_ z?sddCUNUeg0Hzk-vi=v`UQcjG9+|U=r8Si92(~{e0`dJ{)HwEa`ZW(ff^Kp33k%Q4 ziANDGCIUk^PDS_y(DFy&^AsOO3D0-`KSs$0h^C5OavLJS5&3U|TR+?UFVR4K=|wpt z+mBd-2H^{%f~Pcb``-uMbOQqb2l`$APj{aKUrwgnddJOxVzFKszurB`#~qz@;A9C- z@8!pNJxp8{-{Jpd9z{a_|3x1;*w{RZaWI59{YKr@Q{8ge|9|Lx@8OnagR~tlL?akR zO}+QN$EU?V3)iE+9L$*$gfYXzui_q1j9^E;GNCAqQ1Qpdz}wf|wf{0%&FcQWU#>X8 z12k=v2qAVP?LV)cemG~pd`8Kv0Jq8Cvlt^n#L}tY+eE<0W4~fr6AIHX@BgL=0F|ASRRW>wZeDWiF>)ReN z`OfnfdGK$uJSTrRnLw>dIkY*#oMF!4A#e78Bj z`;O-dd}|_c=inr_CrWXrTRwSr_v#k`gC2fo*V^C*W0Twd&j3M=>!82*&d9k+N|Xh0 z#4ZSj!oEcBoM3oEls&#PO~W0K`ftsAXIHnix@6FB*sQGO)L92xUx&PSpX5P4;gHyr z@&K@QA}kQoA?U#V8wR+SEkqUse=~}9Ov)KD5z4>o<@x=f|!}u9H7*;7`)(a3P*vILChoFXnhw z9RJ(XS=i?QedMoEV8(8W0r#Z^n?BFU#WYl9WGY5Akp3C1Q9)wCV4xVo`K0F7Z~nhN z*dE9B=avWO8l1)o@s0S+x}oid6zYAR$YW5~&yNsJyWI8pYvr;BN;|{UpqIDbwq|#4 z_H&wr^bGys!u@jULW_(c1l*iD`kN~dR+yS5V+xvc> zGjLjV|!R+NJZvAJE>&{W4QYpTtSPGb=#;q%=iZf-;#~dSHI271KiO- zobM}${-Zzc;$Z^{1#BcNkv}N|k2W{gkJV1gedoXxUm&?y`{!I#dj5xBnT)Z45RfN- zuh;0#dU}&<-|b#rR@s-mPtUJj?K=3d{Lki_>C|rwGolpv=O1pn|9A29k{Fa-NQ~N}yE zdb}Dkji;dSZsctJAKtlWj)33|kB|CSr(h8AunAvZ{vH}eC5wR15V(|IsY|4W0s%-@ zT|ok!LE&4Ia0`<3Yw#2NGUWbPe)6*Y-0r^pBxLZ{ zzz^8+4It09dSC;ql}YKpf46Vh>LzbZZRXHuhP11bKDNr^CZ>cf+rq<%P= zkIajo&vP36sfn~W2a^o+WKtT*+?UG;jWoZa0l8z@WY57bc@#oBIy7q&KMqAX7I=Q* zJq=>`9Gz81W#0(VA%mUrhmY`kKE}C^wBuI{gyh{H2o)qr53kJ7iQr|AV!sc4_R^UL zFPZb}jOM)YqT*!`b$3!a^Z8VbGbh>Pz9~ZKNdL>*UZc$Mg&$M5+Ndm!;5~p*;5dOM9PMF9;5F3Z;hR{I&!2Z-eoL2<{w*K4%YN}t+gh=&T zYA)Nv+qO{-$8X2b>Tiy}AD;hZWa%C!HK(lSDh1%koB(Jf7zhB2L_YC||8D=load&O zod{R>O6m(@*Z!+p7S(TXZgVqvn%?HCdfr^t-vi;>{fPOV{+7VTzllTTS8ss^*dHt# z>ztxU_0n+Z==^y0Z8M(J9hc$V-_Kq=b{0~Pd}md z8=URqTKGWA=yjhH_rBnN@BgM}k>g@WGBvDG58*}(J;t4EUpdQ}m!GWh+V;1Rv*|o| zp+m-SwA)Pvz|ax`AUX9X9uXC+;@h2bhD1RO(Wo<|f$Tuhz-tKML|t0V;Bg8F37o2& zHBkToislrIcr0Re4Zuhp=f|hK-D9cUR9xB|52*JD^TIQKEMBS**`Mx)I(ZN4{z26zJp{2rQ;+ zuDSRin#L+alP;@QdQjj38}9``(_lm9EOdkt$GGPNkz`1o0V8KDvC$K4rx&Ca#H!>W zaA*XLHm#Zk$|6pIs3gX;J9rmcnhuEk1$B}6_FWP?HPMhhMiff>;{)6>vs6_#vGs&!qh@C^|mLcGkCmei1!e@cE5QM5@-|IAxED1n^@zK9rX}EiD3ePnVpJd z(dS%v-DrIO9Wh;be>3wUe0>*x9r$bv5=2+F&E=)H*4056qQe^07jtT8blw{j&AxaQ zno)+6cNA4en>C&A-94A>wrLYvhq4>7RRa4jV-z-XQ`n6X>KcCL1vt9avl7~M_TLS*@0!XE ztp!yPQK(jW<;|SJq4Y^rIyE?I3nGV)YNjLIs*Oq_?QSQM^!2{I2TwR}?df{nT=K*u zGeZLUcS#2aC7ZYjc z9{6}p|4TV%cCs&ZNl@7ezP7R~J0z@vAf!{Jt01J=koq{z?LlN&E#1XLRgh9IcCb)) zvZS0PK}8i1>w94h@UT^go*6zY3}PlHc6Uj#PqJq89xdH0JlJxE2q<~7R9WbiIkZ_8 zdA(3P*~7Qm`Xn)t6Nhy5OhZB(CX#y~d9Xc`WCL`2w;xy6+tbriyE-H~GmAr`Cx&7j zlCZ{d;|1HThCgICU~I$H*@CFE-IWu&^xINn1qD%HEZ)&%s6P3Co-b~+G>a7b+toR7 z0ahsulikjVNG#c?_`a{BG$_eXDkv%J^l(V;mm-R%t*gol?(X@d*@(iW;im~$9|~8= zzAf;V-Mt&jV#C$H3o{QyOerE%42(`>jmOl9DvXp6GPJ!$76hz$KMGZKGMGQR5?|!N z-}5ix8Sc_?Ta$kMUf1t|{-580t#kqL?YEA+{CgYw9sADK`n3x1n2Hm2f_pJwvQ&x- z)v4xyR3NJq1)8=;wGETDtQeEKL3*g1}JP*u4@?*+mpF zJegcgsbOt``loj7u5~41slTl=R4Sq5$=9Whtem9zCLk*Lr+k!xAOaz93`*mO7_lf! z380plnYD^|<#OoJ(6qipgMpVakcxE@GAXHm0_<@HTrnfnD~42U&3!~0N?dknj}H#R zaNowcK$m#MkmC-*_3b-z=Rd#BkEfCz|JQGpnnPY?YvmuJook1wf%o6-!}P`k{f+cC z$(>Ut6g9u`%f;t>i6z>#GfKBkwb_rpeTv1>-Ks+V9zSg|JonRo4B-5?e5)1Tg5E%z z1q_KqZYB1z7WLQkmQSRTR%N6y=MVEfG)+6S?q^-o?)K_(2|OTw0TB+*?e;w<5SiKp zdpQ`#+sdqxNOaPRzR^Br1kbGn92h1Wh^}8l`kB{uVK0Npx z)4N#zu3U~xy6zA6ApZ%%HjgM7zj-57MM9(e`gG^%9XRN`P>nGE4OY1{(**AA{6e$d zRUs&umkU2r$;RftJWs)@R({}@n@;mmh|S$bmLe75UPr{R#~26K2iz~b%_F1Rho{H|sQ zLu_kjpCIcquDZ>B>$4Z_4M57T{#vi&!*BFM-`-gFd-@D$9_9VHQ!m}$k3K*s> zl7A0oj+`qlU;(@?9{l~-Cw_YW0!P0PM=tnacHA-#cW){Md8?WtxRnQ8oqLet?zP5; z=Q2IS4SIw;88iC*+@JjXmb?o;AbKZeN?mx(6TBFql%=_f6f=zco!GPTPE!P%vz~JU zqpj?&=pnV#LiKN5{=?UwS^pB}!tH}B_dB=xZW~*Wajiuau12`ruX$^5|GN;EJI)`x zPrCegcu{T_J9J*|N8tmZ?e#wAybt9@10bsl9|MaORYVnw85Yu2h^%MD3K`}eSN8kU zuV41U5~sTW|6`;3_HK`^Zj%)Kns3h6kMPU2-muwxtk<1B-^Y3P)I6UAe<$Fc_IHXn zVtt# z?Di*{1loJ~UDORHzZ7wX7Dj6x{=Uxe`9OU+Iho=8zj4!!XFgnyFR6=gJFQ`o@Zub4 z?r%k&$YVor6+k1O-`)4mb*va;LxdY#v}KKSe{YBc!rdR?VXzi{#p?|&1v(&O|NJ`~ROiV`vZ|h>xbUoko^0~tmjml@a z@%`&sf3v6`&<(@?uis;HQ~naL{W-l`amR-X8G1i%me#4xG){l|$DT$Z<39<-A*&hg zPD*qbd?YGG@MT8#?GJGsod}CVK+Y(+oorpr6n64pC+a+IFkogHZGSZ`q9S znZ)=V{%1#TOjKkz$JRgVog|-^%CXjXe!Nb*c-D}DNP>qFX%SM;c~9$Nr*6M;UE*^1 zb<38Ko*!GEuE+G9Hw_A}4A84hJ}qX;{icUJf{A|nKO5z)es3mY%c8Ci8Bh)TBf^)Q@hw28RDDUgDh1L} z4k4>k6`dx;tg9=5NO=NDF@Znb0FgR(N{UG~g-<``DEUnL@?kZtYKj_qoHUfZ`r^?-f4Un1b`KWJ0DQE3ax`QpfUFOCZbp2cH~P~i&> zByq`F9&B36)|htB9pUTQkhB?6me!{5r}uby>Un!<4NZBw#Fx(<*=0L0FPEnb4&>(s zm>xKI$G&8OEm0)`05TrDu>7_I+%@b+-O4niUr)&V>|lr(Bp{;5C_tEiCX&oK z3=?Q%5V-{^AyAQ8h$*O$$pmf;lqZIk5a|N$8VD&u0uT`t%98Gms#K_d@LSRv!!&(W zTu(E$zD{`{ewg){``=q*J5szYT*_qffxnTM9s6bQz9)tHv%_xILrlFvJBS^B;{myD z+QRbXS{z_ia<6RY$ygs}NPL)iL^;)v-@;HPC*mQGXZw$BUhTFW`+iv`b`#hhy#J0I zx_!e|K@xc&*zuDQQy7d34p~Sqdvs7N2t|Uz3IIagHWs$pN-7I_I6rUn_v?|7_cwpP-#&SrI@=PDtTpcW6UxPDMu{9r8xTV&ugCjv8Wce_A^t^A zDhA-g&uLKy`}5d0I6x*aecU|s?)6{yKEIbQNFPtdJJER+KEtPl{(d;*Il0kqtU%)* ze2*8-`O5Q@WI%PFaUb?<-BWg~Vs$p45}sF<0X`CzLt`%&CIrASW7G&s1JDsYBF zZMojYe@D&!CfN;Z9pAj7LjPEEEky0L-aeT+=S$tafL+-G&5`S)Ag~n`g2EjTg<}7G zteLoLAY%(`<&`6CNxM*s3BwH`H`Ri~LEgw_7A&^Kg4PDiDq;qj!9o8TAMz76HJO={ z0sH@-PvU<)8L8>wxPWJ#AL*`TsO(g#J-tBT1PXwhV1Rh`$9}Sq@9_PPj-TQb!2Nqw zw<>IO-1;+xua<08{Md>=kr~`zRyADJ{8gGDgSy)jKcE+Z<*(O2^$&(zemZM<5AeL` zKRc(1J-hNi^^YiNk54XN7so93Enz$Rukp#-56XWTY4(Tn?V*eSI(ukG6;f+iAM356qehB?xB~%qeaQb2UGa~_$kL%<>CtbGkx3NjG9vvWE zbkExl)id_~*|=!Be}~Ied;D&7bT(DmYIVuGe?;qS@OqD!s?$)nI!7+|qh= zb~HN+DvkxVo_zjW`m?l7ImtVB%633A7g!$%wG{;ta}X~6URh`1XTb$T4EUGx?Wr+h zBC+r*J(&)MH92ot11LM+H})Ty|20{^*Q!-vx^jDGtD%cNzn|lS1dPUdvCM-inuS#n zld_koRb*)HtSa z(^s{~%n4xLR%@qlQ*@)HHaZT2M#)+xlyG)En%r$p2J?j*+?(99aGH24Y2MHkcfCzr zL&8Mq3Qr_nQ)XCb*UJ6L&~cA>f>YbgS0WR)#2wY!UY zR@PqJ-;FEJwK_!QUd-20`?I@uMC!&luq8dC*%Z1C4NavtD>_?S%scHB9)ccX?OUCi z9cCHT-BXp7_NAm6SCUO8^D&mseH8_vL02m>Z^GrZO?4}&)0(__$ZMFY_%4o&!CSgH z)x~*x+Z@73IdPm4l5opurOE3tk_hm3__@>$4Qo(!rZrX|rW-O5E<_iS*cp z;22ImV5%2=dpoWdkGL$(w%`u&?L*DF%9E^NC$o_0*-jyj?LFXJ2p;U_Rz;-81-APh z>FdttR*vur)@KSUuK1?-Y;x^Cix0E1o?CkRK%}bquKMmO&CxC1A`xiy^LFal%;7BO z099q4j_WQlR!gn7O;nue_gv$19xBZlx+^|qJo`xh_3vf0vpS$k=)I_Oa~V}P zA9h)I#+p1i#l+-#(RFt#ySGRU8_K+_vjSyP~hI@u`n`vrWuoh1ND6u(HP< zD|dL-QBhp2oGvAYo^q@qo8T*h2b9*3H@&yaPVKNd?z@5=dKDk1b=7CzG|xYjmAhaF zY?E@YIOV)%$m+lvz(KiuYVSFT39$R5SRC5k;3W}`2X)I|UWvIOnQsR5RM2lrbnVGb zcc#jFWX>DmcB#?D)@_>~6-kg&+L>H$Vo}xK1+{5*h}jOhq3p3ic2hW}o&&oai>CKT zz+JsdH!SK!u6A>CDDgt*IyJji#IUq$L0ao#o!CQbZm)Oj(1w${V?@NSP1g`GT|1mX z516bt_qA1nx=yYgGL5oU-vkh%7#=4KT)AMGD1~5Wj1T z-75&My*5LHnpBGcA_LaL6A~{tb5wM~+5mIgXQZ7^GFS%M_N zMsaw+1JB{*V@^Ne2ix)1ytDXnZEj<~*Nzhh4SSHmF;D4#e$6rj*#@G0VL)#=gD_!o zBk^C@e8CcZXx^xIA^!EKdC$S zuNb=xQdV`nxa;ddr>x5FZr{f*E%i8hpUxeEz}7}nzk$l=o&n>>DsQrBfI9P9{q`;3 zML#2I(B9MrLpEY)z@TcB4}HW$*dyIznA*1RDKpzR^ffKv#!oa|mg5Rpx^pL2`$O;flzTzzw%cEims@wt z_>Y;EsqXv?zL3+1N{Bru6^F-tYc)8_6j9c?X%rbf{RVc)Cx@3|^g!Sp_L zl&EwSKCpz5IdQ@w@N7FSjk9WVNfQ-Fm6a+sivz=kd`x6`K;sRFA$B9eFQE@_oSr>0 z;^+z{BJBrQw_NnbNA`x2OMNTlEdy|$@3qYJ{Vjm+=SPNght|4$`hJ)^_vLDY`v>~5 zCxhxyhhOZn)p+(_1O3kj)ZqPs{^f#|m;c19`E?+1-A8W7aQ6(-^wj^n{RkZ#G<=vp z6cL7dpZV8)EThWN5y!K?{Lmf<9{no@4UXSW4tV|7$>f$gW?_*``0=ul0At~yu3b@`W}}roq5`aPu8*q>x6C*F#dD6E{|zK zcibglHRHCxY!bt8U^Bp7hwSs0J6rnZ`go@z5Oc0*XX7jf!wi@@ImOW<>F4yw^zr&z z_3%IG#QTDlMacARd-=~>!Cvi5Y36|Ob})qD6SMJbN+=Xz1DXka&0*Xla-7jHV>7ux z2~wV$I>~x(`w%P=APrf}A`7Q*i^u^}`-x8xb~0ES?SOtUbFkU@3xGgCh(D*0s94ep z7=Y16vp{C+zJ0L-XcY>Y@eo*|Luv``13+6}`~qoGy0FXwA47K!UV;TD--clOj3r8$ zOu9sHYpeVR^o`UDb93Ss8EWKokZrg9R(1dWn&plE3zuXCvVagb0ElKm?w|%%CUK^6 z-mevlOhEEdm}LPOtUx3mPy-X127MBe92pkLvWviWZ+^c^{J)>4H}(3hilE_etkC)+ zh&E`06t*#jNueYd_rl`^aRKbWfY;aP^p8KB@9wm3c(HT+F7@=>L^c3U$^St@`*Wn9 zobz-i?wa1O)bE|2RrKfGrj61h-Hzq(6zIO$5g^)t0NS`cF5N)Rw-|ZzJo5ts><3TX z`SV0c1$4!O=_9k(G299j-?x2v>_NO9D8hjPu+?CvaOZ;hf{k0C*0`93;|4@b=>sAz zbbtZ{Pk`I0B3jZQAhY?@PXCS~bJ;uptR@^m>?Qv>P%et8e8Hd~+I~GbvNA@9VBF#3 zgZup+ljq*~`OeEF??bVZzO*^ELmDX<-B8nrx`@B$f6p$hVhDw6AiF;nIM7(5uiood zYc{kE0jd?mxkZMUiHNQuE3N?nyJQ|2q2M5)$sj|A^U8t?OecI@uzK1EuwO&bEKRij zC-mgO-W(cpoI4tMH?Kx>nutP$h4Q>H`1^RxiDW1+fIq6iw zNhv)M9@YHieCz#RckN^FDgJx@lzY#U)#t;d0+o)Jz1xRlA6BzWuFlNC8EbFlX#0Ik ziT-QyK!^?^CK%z^8yeMhVpMYyQU+NPQnkr=qzP^Ex;wbzuUAxdWgf(AU%~$^#fx{_ zwcc!S4r<8~_|u%&*?e{JKL3Z~`q-~jD^)~o5_ zTmj(3NfF$@=0qw3P$WqctN`sBMLTO)->*)Zn0bn0Dk+F!fQg8{AOP_L{#F5T$3eU7 zE^}b`CRnX=QdaKncYdA_1c)S<9!wGkhwSC39`uI2-AU`NyX(J-%HtQD-fw~o5gmw2 zxP{@MNdvV&_Zag4GL-`maRrfFr+h%m6o*)LCUdtQK4-O|y)wY=cp^v$!~uKW=ZT+R zTlLRf=4NIOTu?k11F?bN(FB2AyLH!Hb*|gq_f+vy-s;ChK>3&&<674@cg9GF?m#3H z6!p%kwXUWheTX?kIzi_iFrAILYsTC!etB}nIc⪼S+@I158lzwk$D{dk>qsVg}3! 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%0D^G$ItLuOfUQjy2odez04 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

    K#{=$FM5-39Z7-z?SfXT|Lqxq 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%0DnmrB}=IPn7Ws}MEmn1o1 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%0A@nvt+hFf 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

    3$*W6-kmj$yv-Hg z3S+kDyv8vAgaHYjt{o8F2HmrTmT@)O7F}H|UMJHXGtsM`Gez>_ZMilUAPMA~HN70+ z#FYK4;+XJ%R^5IB$1&p-;Jb9=t13C)e?L8YEq_;L+V$?)*$B{Dm;+;I3!6!#AQ;G? znF%Z)p-M17{phgo*PX2&(XDQ67uWqG4C;&sa$zDxz9i5bj~$ zpRDWO-^U5S+9j#grMK+M-iwjTD@t}T1u3P5PX~7l>qZ2`u!ARr@kmIz5Ch7fLMLKD z!WHS|ty=?y0+ec9~kn{NQm&% zIZtb6WIgX+E}ScEFsKHJg1BJOiU+1{II&9e9C)f5$;C|AJJL)hU34iWkirCjgoI=g zQ1y?Lk4G~Jh)j%vl;Ks@iV{f#l~%Np5dy`RTF6UN2{K9CWSE2<>H6@Y$8g`5H8sPLSP@r(i%;v4~!?iQsZEjnmWK41r9*DISfb` zKp6m}NVORmK|oP86cCjGKy5}sq^t#n{^cN5gW`DL@37@km`*`iB{4ZEkOc}*WTF&g z9p8d7LjnOJHjp6Q2Be{;&i0lmpu4ZQ{*Ckthk(Gl2}*4P=THg}8{n}Fd{rj&N(!I8XlVAu(V@OcMkeg!dn>95)f$qTPitIL^ z)lrThY{2#y`+dKKe#!jGHVr?eP0N8wPFpQ8bVU4$&HNAFk}@At20wS2WBC5r{$u-o zbNko%Vw)dENnf>t_3QQL^lk6;{H)BUO#YI`=M2AUBlvE1*llsK;&JpTm=eMDv-UB* zz$X0!#t|`tBq4(TLHk(^1yB@_*E>WERA?cfGGsKQz_wi8T|QIk>GF>*Jw9E$ zZdVERKMU=8L%$rOyPq%g^wZFB20PauTdhs6;K9(CAVlCcOh`lrLr1@ZWp^ba7i$Oz zh=eJjDhO$4q@0*tKo?JJKw#@lD98Qnb z_KI6M@xMGfVBA9U7zD;40;jLC3}lC)5roD8A7KL!m;^uoL?wTH{*LdTZ%sJ#J+^So z_Ge46<-Sev-TAjCjGHes^d&yXr_(f6etF0nuTl&^1WW*90f8Tl-e#RT^PY#4t*6@! zFVSbu9f)#QoLd3wjzDEzb8PD_$!h8B>q6F&O((A58-`CN$mFmgEY!{b1p`LTk7Rj(k`ewd*=b4(35 zo|*c3XPP|~FF}TTh1Mdg>y_WnRtxO0CEtj+yR*+vPP#FKL`)r!5xUS!X$Wn{C!aV; zyC*R|JMoBVhK@Wl(|INr@a`4O6#rg*LABd)0|*EKvFv58aB}LYvysi+4aDn80i;l1hRYUeF0QDWx9Vo7R(XB%#Ryfb}m@#D8bh ze0c;F$fW@T)(BrMhHV`b+iDVIRFVP_CP_j~Z@p7x#zv@%76vS`o(%J4ub~BW-;nKm z;E1zANeB@x@;Me#2~Rdsux8i=3_@UlB$43FsU(AXou{yDv30jnLi|TbBDW-lVME#t zw0F^Br=H$AO(c+9=1ABHyAch9lDeu>xy=iShWr`xqxd1ytiQCAzUQy*!q#=?}jTAiwM^YD^cQxLI{!AQ5pPnByFJJly z?P!8Ud~4U#xrKA!PA-bx46>GyKt`c35Q1PyAss{B91yl`H`@Ki;f5&XxGR&_etSWg znn9vncyj0}D1s=6B4Cz0Fbqx$eh|=vy`*50`#zkhlrY42kewt#yf(ok^Rgl;N}3pe zYL*y)cNp=vaxrlCP6qSUvPPLA2pN=U4l@JAtFd?~9uWNW&l zES$O;UOa8=B89}K_LklKth=Y&3ehCiq}*)+FpYF*dna~48>Iun4^gex3^R}lh25pICQZ$ z>#jATK(K0xR;QzM-7O4~1mQwJ(?FL!!UtLi$%w?(@=P~M6&|s_4sQ7P>oVjxkdj7+ zrAdUjFIh^H;!&^2PVh!Dh1wia& zrmBP&P$yI!00{xysTI&R#W~J3#o|Kif}y;eOap9$HqkZ2niZ1jTbD*y2P%{Rnuyr3 zgj2f-3Zr)o-2=mSv^q83i^L_G=TNH5i+S0L0911Ftcx|cnXOR7gj68RRDy(3Q~;Po zkPRBZqoyKks?ip5GysG+G0o(7%+sytaN88nno3-}$+eLnh}0xWHBd;iItfDIXz!wR8ckw+@3I~Opapyi4yceR{Ing+s^%4yj%SPrgO zW=I#D;s&8%X}1Z(H^G{da-_R5+%Cfc<78u_WV@u%DY#8#MFXN@a**4c@j28NM41hS zi_W%aDR{Dm(}n??g@JU9l#HCTHMe`>LqKj5fVM**2ya!!ny@1iM@DaK4p5sB%Ck(B zQiM1`)`ixk(TG+!>7$vZx^pp>m68xOqLFJivTsAV&l{5+X0WWu4iMns2yK#7tO_9U zQ3iqCC5rV`E>LY$bQP2WjF`ww5@9Oh8sUIREQT*N;Jb9?sEyr28@=&$z7)%NZ5lKP z(m>^syvtGvz!DdLQ(`NTs?%(Q)6?)})_#9?>R+?|q3{t9`Ur`-0l)IG-1SZDpIz&IKc8~QuiI_! z={oV3Y45h5sllr6OY3~{)3E5ncwQiI0l$jzj}gy|EZBL+2(b6-o3gHRWp&v6z1fD* zw4cXn*6|;@^X;wr-mpU5_p>GMZTC*u z=X3W+cKNRBE_yJ-AlF@cM%rM>2G7BpqLbfiqq)`>I%GRDX09iZ;u_g~irui$dhLpnEcMkou6qmftw(OV zM%kJNXEDElz$z2fq!yLk{b!HU$wPWv0u|4<2|OSda!Da;uQ-a?Am~A4AWRaNkbiP! z-*xQ_I$>=*Pwnoc^lAv=RthW-+8f*!Y^iJ3{3)ui*7loOr*%jtNt@Qwj0mc-W zvoRG5US@I=!v|N#fOvAhb?ZSb$eQs z>h9#7z4-y%U)H!WmCX(fuU2>R#gmu z6ef^}W8{sltlpQl?upu8_WDc=7|RtSZWMo);2+U{pXR+o^GVEWgP*tM`1>Q;zn9{m z{IwWyhu!#F`2GqSF3(s?&!fLD%Lun9Q}QpxN=opnbJD2{nHynR9{E;^C?`Z@&!gA) zYoFrXYoX7s`rEE)-|&Aq2RFO#x2`pnI?V0sXnfAqbCfw}IJdrSt>Aq(i0@9%Tew{n zk8Rp!QwSNZyE^RSdm5phP#D&hD;KvZhFN6TS(Uxclh=1T>WF}dm_$Tq-7UhI=Up8Y z=bfcT*oQTPzG0qm!(AnSXJYd?d($_gcLQ0;_Y*TDfY9{#M7V z{cxUoiRsouTI0#SSy#(dVyL36v~tlNdS(x1qN*x9_Ln>jQRwe1RChn8`ctwY{|o46 z6Or#qle1M`)~&TwQ!P^3ua)bY%BrhvcHOIqJpjN!KfeQl^n97Vx2BY}f4@1Mtr1n? z_R6>4cW&7i5?<1kKK6gVzvRd=2?=>1GF6Z!7#alIi))HZ^L4Elqit(dR94>3klTs+ z5<%J?AUN9!Q;cyGeIQKd1jq_SA-hN^4WvHJYY1hegpsr%QWPZuTi}~QblU{hVj#Y6 ziwc6Th)}E#n@|OWw#vz1fPh2*A`N_3^3P|1`fK|yx7qRjzS!(RwS(QlM4}KxK!}JC z;siuMh=>skL;867{XI4Puln@PUitg8_;-42l(etQ2ZzVyh5t^?`F!Pn(fxUCt3m{? zVl{KXhj|#^CnFfwB!CeDF{z{R!%U#3;!?BHO8(>1t04xUSe%c;CL7)F8_twoInej@Ra)5ikh- z!ay&}c5fXSCfmQEUAZ&9aSlTG^LBjaC1=dgJa3;6uMi5t=-b|4;Tn-p=Q++mAR-_u z+Zt}TMf(IVy&GfrZ75ra)1F&IU%GS4b{^dsE%#4y;qA|jpE!VsfQW!cdaE8dTk&$V z<El!DVC`i?V{wcFuZVo!G-IPllGFwxXz`@wfFxh~=W9C+2~#>Oa*cl{9}~ONE#U z@QnM?@B10Ai@ptZ*0R#t+k#-ItXFGV{)usQe*-nz5&^(w$D_t8TGbjq%RJ9Eq0 z*IAA&L{v$%pJx zttEF<^A7_UDhi1aJWLJ*eCTP;&YTt>Be>jWn?eZ$lh~k$M2H1&PVGk0+-1NLZ8lq$ z*cFAg5P?kJPHB0(bzvm*i^SRn{m7?NVR`JYqt6Bs{v zSJ(r<-_KKmjcI?`etUn{_xyhVw`t%4zuWG6T;JRLqxnzmm;iEafPR-#O#d&%nS0p| z^G*o-z0>)9KNu(J>d(AATJ`=`Up)UWt|j?Kd56Jl4G}fpLy!r;xZxX9ix*F?1;jZl z@y;3^R;dwOx7}GUESmEkk_geMB zdnHg=_t^Wf$1nkb!ebej4x~UwF@#Jz<+}53)u%hRLEdvG1>8E$E_-NxIEw7gZIiUW zSl^aXbGP5dn8q=<5s;7o5fO|eMj#LXz;)W}ao)9D?REQan7>70bK6Za2%-;lIJaA7 ztZRywY&6lPFdAY85is;1KqN*n5fLEfIr5`sdp1KSJ6(1-s_@8%Mb~-h7#%oH>gatm zyBp8?-JeL-?Vtc)3@jiaArUYS0fBB8X8YooFKzLRZ0i=%DR&$kaIHAcjxJR3hnI8D zE?aiyO0OZxpkNMbnS?KklgcyaXYFKiKHIK{-LGt3~r$$I`I}3;1oF_V!BfAad3%qXk_8drz1CBV%5n9-A$qqVk zS>Hsw_x*fpNTIRoTS2Vq%j9VOeDRZq8C7$P*O#DZ=%`1QB_MdhKM#160b;#fmyyR?1HAN#abMO8(9 zB!muu)SA+aMO9YF0oSMbnej=!7u{&8tMJULo(LLZ3OY*u$H}H8C8(sP2qjE-k|`1iMTtTxX@Y`DkSHi=h!rUjriPj*prJ~j zrfLZ&3Z_7z2&xDXC>V*9p^{lxkgA1hAc|q4kO~fm_y3o!{-xpjhM!H5z^V@$2l)E_ zs0=-2cqNa6>lbgkq`)o59iP8Eq>o`*D(FRZ_-uI< zTzkPQ(@h_obh2<5s&<~3XPIq@1c*dL1Ox;`1Vjfg-&$)M^JSW0mT1E)e^lqJ21k=# zP&~BOb_qKL(`H}3pCAGH$-*KcAR+<+A*;mtYbw`^b&iPMp5MSA6VwDm zL_`DxL_|iJV8iVTPi~xxU2XYl>1$A>bqlqGY+kvx>N<8`Wi)oF)>M#=qxy+};vg`y zR(G4@cD#+p%Io$*cFmg;b;}Gg*AYz5Zr2qQ*A2u%A|fCHIpFN_x%uIbQB|nB0*;Nq zGS0%uxu;m)9dgY&qU-Lj0LL=G|ctRdD}enp1eX@TZM8q zq6rZn0Bbt~bbtT~zeAV_VkAUB32myY#QzdW4l_ckBD=L#!WaMrKc7QLEGCh`P>uH@ zs;ZS=aX18kLgC)kL{(LI4V`tN)M&ibxlBXww@4_ij~W&i>{LT_in!MA7~7UOV^pwMV_ai)u5sk?MJP_ju8ow~9%E zc`)9JRT&KiH0tF6^k`VF?zEPGV#@Sxr=!OM5X_UXbi2bqpE>1{4!+`qpaAdC^OHeo z<_OlPi1j21=xbUP64LW;BW>-Ty1LfDo@5T;(gpw!PN%m{g08Jm5f<90h^@DySM8lo zZqI4&62SD`i+Pa4g!|>7pxbwu_mm08I4V6;)SvS($aOjQ;bE zI8hZ{+NvV0wN+nRS4~TC!&zJpB0>gL=iS#d#Zgsis;aAJXhZu#20{T!RV@)gXB_`> zdZ)r=Kh6G={2XR~fAY+JUY?4p+SMBfghWnW;q~Sl?_U0#7uA1Pbw2)s^o4$nv(m++ zt!LJj-SzbP&n#{@h=`nsL_|bHL`&|o6%%PRL}@u@>@cQSNk4YkS!Ptp*J*7p(_Lj! z(|a)3LDiU`$ye*H7BggL001^o zBLEQ)0TBU!h>QV#P0$bXYzCDif>C4q-_N1xZ`<(ri_Z>zJ}0MO*6c5#Gdw8_Ted@U zG}C%*h8Vrk!nzHhV;da=L_|bHL_|bHalN<-bRf3*(%>jCEOYVBNn5bZ;`{KiO|8wd z9Gv{MW_s8L05Y^9A~6vd#6)5t*tj_eh@gltqcq!9;BdC&XOh0q&9>3IDmrVNU#_?F zrP*V=GRk3|*;gF6yx<1TVmlECh=_=^NCZV0=8caFYe2T`3gd7BGm2h=@c)L`QKe|A+DV0n9EN)551y?f?&YOi};+OAgJ+|0_Ts;a81ZB)%8j*GAsfZHmonULWx*9(f`|2O$mA)uoJq)>1v`>hY5UrgE8Lxwk|iXP z1QJduBWXm5B$EABRNI|SuDEY@XYmCVrAsZ-cs!EGm?68mq8+pdD`&2+Y9VO?*X zUR%+`jOxr2cAHMQ@zbMfUZ^U;Tf?a0?xJv@D6-*swX5yWXgve@mb8=nwr{!%+-dnCntJuKgkS&m|?pau^>o^e#8F_4j&gPxj zMqtdTd0AP4%E~yd^ZhKU8T`EmUi{{p`+W|eqS4@Fw#OuLvdrHF^N*DtqXCrts1C|A=TCtR2^C( zD;%+&rhX8d?q}U$P7~p`UA^A_zQ@Jquf%w{g5}HqG?dA4r zPRMXFXBPxN(7}M2)DT5H4xd9h)}Xe~pJw}yus_kDaR7Y2S_!l3)l&30B9Ja zkP0U#hK83qESFnD8IM?g0Q`Mp@&1XB^^XHAabth(5DQWS)TiErk+CFO<3g>~{@>++ zqu&lc1aHjN2oMxCRK*f}LO&>V1t3*Z$q^_y0{47Amj7PD1K+O9LN|>!wCZd{(=iNb z5UhZ*JqY7}7NQ}DPfvcWDgC3`DReuXHPAW`J&w>RKs(4NmevS66f zZ7_>`7Q`@rX&h-tl%Z-|Fl@`lG7_aY6gB{SoYCvxpk+va4Iq64(a^75C=Rre5(zXQ z8$c$30LW1sfkXi0)kkZ1HgphP)3e1TUP;H=5q1wq8Qi4!9bd8g3d~m?wgcLX~ZzddW zhis;iVa8*hNz4omex=RxF0>whK%D@@P(=_02%rbCB#v=xP6VNYS0i9F2`7R^)RGt& z*#!xmJbx4IGA1aBCM1$k`#blHg+3%by|Y$%SqhZ59GG1Zht`0`lXhq{&}|9ck-hLm zATLUlH{K^5YohK$TDG8T##Tr__`pZhfKm%?LcJUKCdr5bCMx@r*nVNi7@p(7J>%~U z_d+^800(Iwj4c3CpQPaoKujO`8c6-?%dF>yhV&9uYc|F_rKi7o4=)wP_!ANi)|QQf zY!ZeXhw(DXo(G4GEDp6y*g@Qhuwqmh5`u|*QSTEHSWmEm9}{vLVyY^3FuTfU=4Q3P zVJIX+^I>OdbN6Hz$+p2V&QJ}yHBtyrM?yh1@RQK=W=IG~f+;@3lYu`Fe~@MzQx*yc zL_#S6u~(kE-pbu61`30Bz}W*($~81=J+PM(vgn~L%nM@(qZPq)CPD~OY!fo_avyJ( zU@$-Yb>=8yfAb!I==z8&AB=jyV2ifcA$l#vl|z z<|s)@08x9mrFamG5h7qNaJdKxLRUfs#Ar<>*gAn_YWKsyBOrDLib7hDlJxTE zKzR5DKZjxPaq{yO+_*>tgh`~5NoXX7k_3Z-K~@>I322CY?9yvcH334~g3BE3?m0uS z55fnpIq_%z#DZ{lF%xaHG-SXgjS?G_0nAB@PDd}VSE!F>kBE<>NE$iiNyHyHAz$)| zB(Z-# z(ZOHae{g&ur|s}Q-^g|_J%(tI9eaBP6hurA+ifukDI^$tq=^AUxb|oQm|}V~Z{Ci! zgsQp#QHdi4B$n^cyy3(i(&Bn3OSz;XTM!`N#ENJwYt2ZLE9eS`XdPWV=Z2Np)m?tV zxCPgL(GNe?E0Q*0N&TF(8I?o|{3(G#jKB~Xl^F4IK@~XIj3Npym6ljrWkwjy5G~Od zpsY#~2`UOh8sDZB6Z0d#>RS2e;SrABElrYyE>YCR&B|tUB z193$b42|gYghbJ>-3pWqR|*}@#ft(^8IXz5J$FwxM@vP%Z#p&MdTUvA#E{g^c{VBx z4Z>t7925u)lTwxr`m#AY?%wt|>$e1|)LQ)2D_7F+9hOTco55(%z(YnMqWHU!!+Y%9 z;B+@6Bp3jIr4Y(+TNuM2go1PcYOJ}^!#dMjW~j-bKzOQQRWci_k_>Nwm1#wdG8LjV zlE%hYX|`)lg6@PbfiuP2Z>e~DX;?kEp>otLA>nlpHJl4IWU`1BK(hPvGzDeo;!6S= zeVsFFE@>!`4d;qV*B$P{>O#TQy$T9x5pjq?W3;Wx7zK148?8*vNHjqJZj5#agPlP* zMX`i_1FJ>ONkgMm$g^5iSXhI%V~h?8OH`{)m~Ws`0#g*3Ky#Ua+Odh3JouNX(b+Sj z9$m(<@0VuYy2wFg7)%X9#=*D!0~2=G>X(5uDvnK&LtY4(J03|80eN;(RYas+hh&P} z$a5A32zV>X7&5#QajuAWATnO$;k4Krc=YHb9d*){C00Rog+x;3?RBg-H%(DFBo~%} zC_*uj(}o}z^Q>HHB?FD%Z)4JE=XsPdVgtOvKw(!x^6lq)8UztFT&#~bgGCe7j_Owi zzzIZ#aC&y;`c@v%TB<^s6akF09!s@Ek_jY3D5XH{uN;!rAoH&L*FzJflpStB2nblW z)-l|>LojHL&n*n?#3Aeg^$y=%4(n#t%eYWJD??~a1^^X!D%Ryx`_{=7=@cY)MlSF$HvlF%lF9!a>_$p?kE9R|$R?lFh`VO=X=z=YmJ)f2D|*$7h!V~yO>r># zyez^Q9CHW+82}0~7)2zrZcQr+?*Xi5T;8+0M>5|axpw4D9-oJ9+v`3LD=*vWl#MTq zB&-dpsz7J8LHSxUa>gT!l2k-6p$Xdx_1i3((i&L{fvLt8`o!uCH3E2OJRMP&}rRg}6&*eVS{*(l{*?<=&>cm_pGjg&*;cN3tMwK~Xk zt*2|t9euz?Hj(hK+0cTnB%d=a*~-2wmU?L7vexjOL$>m-6GNm;lSQes1REiPsD>1d z-W|>8nGD$^jlC{hu#qJ0=^bouEfHj2Tg?vUg#lcPLz!E&?LN=GwaJscy}}LmIWFvh zP1C02Lb^y=wsw0pSG@vI^RBtA*JD+~hsd{-VNCAesn40xzUCJDg|?%``-_mx)R4MGi=mO~?ux`M4*G*Mv~z?*xO@vi_*t-2 z4~hWLOR^HhD;!8z*eKzg^I?{%oL?aC)ZKYb4lg}SG^LuTI8+$>EwRQxShgKgakdzA z@Gh8#h4po#(H8nWT%z{-LY`}SzQz;T6hNAaDZs$)n}C35@gYR+ZV^2gLwi8$X^!fV z&fU9SScEWI^tGkDb!9!J3?k+vBI{75Wz@|94Y~1N@&DS7ESF;yNqhyb31t09Ju%Cz`EwsA=m3y?p76c*D^blpyVvrqL8D;)MfPiS9mS+|} z?@^`=DT!c^gY=pbIHQvr4pcxWOTmcM<{Rt3WDHJ)BSOFfNJ`N}L{yOk%3TC~B~A{> z{Uh;%OA=!mYzCMidJH&r{hxbrudfNkG1yh62&55^{QbU^gl~pH6*R4eCRBcOflL-s zkzmCUMOcYYqY@~Q6`xa0HJ;xez#wSn+I!Bs*lHO@4Goo)RT2ad55Ofsl*)&05s{f@ zuZEkOWJKWK!s#+beT~kXBbrI8P~?L;49z;1NM{? znV7*0A|e*vHM2@(q6Lf)n$%rgiD|(M;zlkopp{~0RZIF+l4$oDpf_C5LH>>I3Imu$ zB9aK4cJ0Pyh-US^Fb(k)HN$bc#_ooWI5AMF>90C3FD$9R`Skmc>OwVJ!00tiO;uEN zSEZ!bl$dLXFx4%ril|^4H{(h~2;s^Eaj{k?7&5>K)FZh|M%1xQHt=ZI2yc8B2t?ta zBLYk}LhuFFAUY|9Rz~iEpdGQY9Hg{E3soVx1UWib&4$Y^9W)XOZU>eGqh&Fxwy8oA zykv?f0sv>-?lB>NqN0o+s2yf1ka3=N1(*~;Bus=;6jef@GK5US3=^>>i)IN@Nf8uO z5>X_?6jdx1tO!i)8quTm&s*HfkUrw`M6pdXwcwaUfdhq77n6B@7e?xhNnMB91}= zodO4>hzU$$NCOrKMol3gIPKP;$rx8ugd(WKRb&N*mDT-7}{et6loNNQrov6?(ly_UoCa*hSjVWXMA>9hahrcoDAJBKhBhO7)6tVUB$tU+du)q-|xxM!^Io zg)pk?){y@Hg*G!9O7gfyngyAIUJ0#j18P(ei% z5Ykdm639ffLo5s=l$B8-RT4l@!3k86QA0%_R7DdsRTP9WL{h~PQ%wyO1VJ%VH33u< z(G>wjB?J&vup1cqW-4x)){Xs#|0Pt+F*QuZ7$%A$Al!YHP!V})iTTcPum7yVD8>)-*G z_BG%d+ZhQU1T!$A%$R`bqM$ZwMA8<_e~&%Yc?TTCEWx(13V=cZ2r@U6(YC^N>u1x^ zf?E;`{s_rv&;l@XVI~RuRY(Ki_4{WOb)rZ7<15U=Qi z;&`7NSAlg^<1d7CI0+7$r+I^EgKe!_zE_rSFUCE1svQ(4Q#YV=w4h6cnvSoRM?Rw0 zT>pEv*Aj&5Y3!e>ijtjef2Z2_-@l(jr^Dsg-14X+_u5Co>++XvAph^&55@Op2)&9M zr2TiV1KNQ@emv>v9=n~u?A6}oL+*Rn#qJunp5>5|5P@xMU;+wUQU0LAv3rkDS&?z} zF!CKQnQ@+))Go$hkj%3r&`?n{!1b3DlG-k;igM!~58AkC)H;?)D#XQdoXOq?2&D>W z43d{f6uPb@`U?aa-&?vQRKUzyFia<~{ww~w)HVIzy@lb<6lo+tZ9rtu5=7?T(Sh<^ zqz|7ubgL9ZM5z*$10s?jM1=|t3?cseAa&{jumiGNWRxH{3ilVOlAghBK!yz<7X2x& zdh_qFR6Nk+9}etE4N}5P%K{MzNGGTBfxowi{fq>DMm`X!l9d7y8WuSEzgD_=2#2`| zN*V%&zjXIF38GN+%smi&%59@zra++vDa=ko&4kz`tz41*)d3cvcVbhLU;tdiLI74o zrXugAzU_doM>7xu^F`zXJLMob>Nt4u+6AAnDYevFnD!LQ>q&b+B0w8x#>)RA`_7iZ^@ix&gIuFN7 zsDcU;O)Lym#F7b4av{kjtqLTjWFk!k$u1;Sh7t)HNdiwB0;z$!`#CLO~`ZgtpgmLfRZ=tc$vzKX>3e+QPPs zbZ~c^&t6_V5e_7kQXy4?pi-KwK*l1Gm@Vf3Ax}arf!5|47hn^3M{*-4DR)4o1P3G) zawMgKW)f102Xa8o3&Dw`3Nm1VnkICU5Fs?Gkwgee+{uJ1U~v!ALrM9;vPrM5Dfbr$ z7UzHxBM|XutVp7OaowiVb9Bg%z-FQ3Hs_`~&|;qlGPRh9Z7V{QA_cow+wC7+V$B&f z6F}Jn5djVY0WqY1l1t+3t^~0=5K$3^LEd#}vn4|UNdq%1#EkHBPLfevmIzx5VMq+L zD82?5Ar?aluSPnN2Uev`;TKlXk&@D@YZF?vg#;dRF@*#Ygl!NR36>f7{p~b)FW9xy zYzAD}SW6ctfkg=V7?rzAt@=gIU!2;U`TxaFpMSActsOT<zl!LoeA~y{DdW5t7 zKdGRGE^ee$?pzLYXa->*07GM9Uk`c1uxxdYXaSNXNPvV{B@-ec7X}BiNFTd^_TMNg z`N`aV%tYEpNI)NO0}l|T6%j*G1Z+6u6+#G5jVRKB&=e751R8&p3HuEtF2lEv+KPe! z)FOts^*2X$faPAtml^?~x?m{~7RpvZWU|`^0YpVWP1AiO)EycuSFNk-yWi9QPY%gc z#8D&9V}G#jYio}~vKt#!qsLp%i@7Rei4t=dM7Gg7PRWQV2c_Am?SABcaWslcWtHGKorN>)+-5 z{U6g;=zv}g2$jGh5Rw3G0-H%BuS-)80*pshd?u1R8f-~xHK8OXFkq7LNicOmIS;q^ zf6`8;@FI#Lsv;IO+l$TWr)Pf zSrCeXz>9?&Bq|{HHE4z)GA1*Iz;{SCw!*4(r2#}(Mxo2Bb&0x`(?Xq~!a{t45X+D< zMROpeB!-q)5(-Yl(@BgfOid9%Yon*8+0dCr9I2$DCW&Q?k_QVRLInm^4xp z5}`p&-vsT>h3ZkZ#KQ(F4FdHn(hc4QCM5QUXm*CU!vji^aV$itNHGH(5Vj;MMQKYK z(yAbVQIirex`;a(Q9{>EAi;>s36--@=#)?9bg^crXojMna${^V-q$MnQ~0hb2LK88{D&|77xw` zn0SKY2a0Zb;7lDM-0pY4D?l0@j#o864^Vnw@qw|1-F9%)07Tt4%B9~}3)v?{(#DGn zz;K>a-5^pRvR-p7?Sv+Sof!jgXqDZek_co{G}ijS9au&ZO-LCKE?SDX!sWS1DdhprnYJcLCmsDGSb8agA#{ZOuP<46p@_6h!i`UE-}y&f!Iz+CeSp=f?%7P z&Y3#WyOR#vESJ4jfmdJ<5X7$`zyvV(Xs zATJhlZm$!uQ4AO;5ZIOdVCX@-l0vyr8{)gg0oFS!5hiL7sBI*qI02Y+2Ga!73^g=U zGKQK#A_D`i?xZ`RNjXIWd>R>>$t+|J4MtcA0OUZL)~*&(nBqXN5E&ULMXyV0%B2K~ zsToZI(xO>SGFt{ll}e3(n#F2u*6kE^CO{b_F_3KOs9z=%cqNsPZ8qlcHdtXCVC;FO z2N8l!74Co|qzJ@LZDfY^W=$(z@`n2fwvh@R0fq5{M4X+@HMCG~Zi3($ZRup2cXdp- zc(P&|r8Eg9Q<~GOU~-&z&IVqxhQtR#17nLL$i<;ZTN$ z#sN|Y=NiBi#u}Y7A&k|s7?QG~w3AMhMT$lUcMPgPsAlP=X{RNI&{Krv0zn6CD)!{3Xm*3iCXRQRU&drG5R45fFNPeUG{Eh4XwoIg&s!yoo&=B; z1DVLA!w9f3f~HXB1Hwey3pT+uCnWUOA`XG7DIlSQm?l_2vX!AxNXQ6K(UfqSP~j(h zR}PFBJCR3J!C>$c0wRT92@ID|S%yRfk(E16m_-7d_3wmZSur#-qcn!4G*qRKVgSG@ zG*}3dt4-XdOpuo5NG-O2*eWp*5iVviR7-KWhBPa2!lXBKgCtN^F$Y!^Lehq4hGOx) zUSXpwn{kotK*I`~rj~fj*vYm84Q~R)1owv-poEo}hfQ716$FVu>u6+&9y2dY&FrM< ztm2z)L4zQ!u7w2b?8RWj#v#md+{!VDElbekq-ZEkp(}+IOoyQcKyDm6j+d(4`ld&F z6nhl1_$I7W$>NJrJwyECcfCpm(rcU}as$5mClYZZsCz-$0~l?Ug#V3DhM6>z5S5Y3 z3Br3jh3jlwRH1{%Q%(|aUJ{(Zb0>s7H8Rqh2;@k~A1h#>O;Aq1O=25?Qci_82SnhE z3JfGROf16HDkE^GPOQZnnhgxRR`Fb-i*T4jQ!lgT4njkPj|GEACGt3 zT!H4mIz8BJggi1DKr0M#7Jw-eAv!`C8YTW)cXg1DPTaK1(6Uh56odzgaoWi!XrmLf zETrJFjAnMxF@POdp_jfwp^OX>MIac22J0lp5Q`DE!L}-}AR9_#S`1K#szS0{jDf19 z%)z7(Jm3wZU?l4Rog_`AdenkI)Hhh#$91yZbUNiICPcILHFSdf@nFKH+aYC>xL=b)86APC{LbEN47>p@s`{-s!h|0~hihIF)5ALdJ zijszcivgSwNHXfNQi&82E41Tspn0z$C*=rG5ehaDJ1A|eGV64jk_?!M(fmIYI=pN{N6+Ynn`X5;+DrTCi%u~reUk@(;4SqMk zL&<&ckpQ5{Dos>XRZ@yfs}eLL5_t*w$s7fW8%?L!AlPEkgoKTF0a}`l1c?WvLK9GR6q2-Nmm4|;smp~LQ`mBg*ama zTHZhbK@FjATJ9!ddIAv!d_`e1Yz~BrFdFeD#OaR1=m|0;l4s!_>2Qw`gn0anEX%QWy0YsMP zl9C_+u_TzsFr1hvtV9(kPj%_XBb%Byc^LKsWpQe;(S&FXKd`?xA_9&C_rU`woloca zVh@`3?pgauAq0sbcrXs(>S!J zA7g#!d&s11ZtN7213*MDMI4#F^HRnku~ZV8ADx-k>{L7mM2K1_Qi&(ncXu!W3EUXR zs}u=b8`9j;5$rc~9V`g!fh5!EW2_~c>>P<@bn9&aITr`7tggc3yx~N{29TL#1xX}H zn47~q4&Mzwk{%(G(#B1ymiOI;T}p{BS{a&(7UE^e(8}mU(;8CJmg3==Db1|d>4uLh z1`Ec(5`c934nPGC$c;V)$=%o#O>}D8qm+mniM>*}6M!bcAowvOptkCs%aT0XP%9xF z*r;2y5zK=Vc}62}!4M}1a|bAxkeMVRKp>sVgYT$x^baRBZyG3WCU>#Wg}< z87Yt$O*Ao85ly75L=_Q8h#~_W2Eu%hIr2QXJCU0LK(Y)BF*Q{XfSX#;v9==Q;#!76 z2_YdUiAW`cm8dFUlIic!qiDo&Ug$DXJzUiVB&ifiS_s+k^=~3_@VF^t4}xWsKjc9rBxy+d^)XS8Y>9VEsmWiQp%s zVk)mRVxh~f@pYP-=MwicQGgs73>yTR8O4Uuj-c|g0+IFhfHI(nAWClMZA^?gt z(3X_~fotlVDle-3(!?JEm>`>E^-R~IyRuFV@(sG7#ahjkd&cEy!36bXUC#q z#fO=O0gTgPGEz{}Rop^S7&O?5bI78THw|bdA#=b|(fqmP%&C}MVX&ZtHX$g96b;7{L52yG(Fg(|qD%>* zOD+OrVkp{92wY|e8$kw&qeZgmHrg>n8;mGYU@BpP593R+QaHw7F-reIXT%&@6uB}E3()uU-` zVOuL=TVn>++ikTQl%+Msw~o6v}0*hL}IHEYF4rIm|=>GLeisDwGm5IwxWen)T=1lL~R9C6;Obf zimDi*A|R-mSqHNc0``qkNf6)@DODy&snt(7VuzEwFftSs5th_7LS%>o0V04#npTN~2%3UwqKbu~nr0w? zf|aESV5(%MstKs1qKPD-8UlvQLn2}!h$$eNswhLEEOx*!0Ho$%{D@Wb*)}?y1bUg` zVx-{1nqhhH)GA)bnMnrL*vCRh`a21!^`fS5{A<&bJ> zmc)tD5~Qk!urji0(MSqIQ7rfYtAde57%WJUK_O{q({j?;WJQL+l7@jHC59xT65N_` zm`^bsBe}7zOu|5ypi8t;U&|APEeW(ZpKT2=nQtGbhqy%V+;D(Y02)b!gkLK#K?as{ zI4R8|m@h!6CL}!h2E-Lp5Qm#Kvh**t5prPOh!&)g-9=72&gh1|Ur&(S0gfXLiGzVQ zfg0G60%-`83I@_n6OJ6$@t+en01LdOAe5+*BAuW{ zXaFI71pk~_pT;p?l4B2#h4+-Xq;qZ5A!tILYIB$jAbLoc8qF|#al@Eh&V*D^73y{+ zk_e(AI%&KfI&}OBhAk_XLK?yn6(%8Q!3iKr>0UOYSL9w^)r+4C#*ix^UMy53lU5M4 zuq4F<4?v1UXcj4&qM~nJKu}po)N+h>9kHikT@X`=`%`xc4(a=sW~X zhkYR6v`Pt!=Acs%->a>J*pp#Mdj<#*(5M0?r!hvm$S-MwN~{nJ(%_2rkqU`bXjCeM zA_jtrsuBXAsH%xri5UoLVt|^42ntDHf}~1?q-szK8HJ`Q3Ksl7A8uz`8US5NLdfz5 zjH(4t0N_HyixI6LQZNMnK-qF8a=#KmzyWUJh&&=BUvykhF%EyN$z1p@f4~g2xqX6*hmI|^1hQ0Vxo$n{k=XO-m-V+6aU!$ zfMbT=b50Rd9gnQgu#!E15M?g%NJH2HDmueZw?EpL;~Q3UlNfRN9cRi*amWah^FEu8 zy`zT=?1v$tuTTnRA&3e9h=`U%sAMa+ADaIQD+qsL$&p(bKt3JO|ENPwW3B2plrCPJx-sVO3oK??=p z;^s`+VKTb+NT4AOsHDb;(Ua#>3Llh0oE#cB*||HfUb#(4%+Yep8csK2Iw%!MBa>8B zp<)tldZb87Q&1FAiL&Jlov@o;t0_StP*U4?V(|%*^Uy}YJKZ33KDt6^07<~AhMw?# zx@QI28b812eVOv=bV3pkEn`U}2B5hDSFj}3O&9{D79=y>fNUs}zGcbcD3wIa^97(@?l(3nZxz8fU@>vDD_ znhX{!DLph^18pcf!b)mrlT$>ZO`E7gPQYd{HD((&;Wtx8K{OUf#sf?fRFp{ynD%d= zs;Z2UkX%j7fr5sD+M8Bbdn7EBJCG$eG!oUa)=&mRVuzrziw24g#R{7ygo^N?E0Xu` zynKX2D=lTiK!Ji9P2F`qaP`1ce3zlT>q5xT=h%cRfh^5-8e>Ck%a~+b2n*Db%b$50okQ}(S zWP}8l?&KNp;xm_W`v$q`0O%&+Y#FL)G7S3+-k}cK5@4hR4+#?xK*0gy?GwHiO;Xyl zG)Tz;F5$cu+RyeVod~*hb5U0*Zhd*e<4!5@G;3Fi|Q@2AT`4fRU1c$ts4@fwZIy2n7NGLc0?C z;2vz0#lf)*gABrhBhp!*DJGPJgeWYXcU)3!-2VXq0Z|cAaa4dn;L3sKXs|RuG(^pj znwplgVYU}2ZY{u(s}e**vvOsn4OgaS=C0IAyG@(gp7&ippWpMGf39<`^XGZJ&h=fN z_eTi;`QZq{s%oOM=up(-Q!u-H`p0b7Q&G$)l`3LJ5tct6^2+Q&q6g3^46$O4CB>y6!Yf6@^N$7{pklfW15lWe}@sY@II zFTZo8er#q|*SU33@|})HRW4qScF-qUOW>=u!{e%olB-ug{_tfu@@=ShnG?A=B->2e zRiIQTiiwjG!*S z^WYcv&+Wmc2wM*h?TPJ*#cYsMpL}Z~9HqNzNPCagr8ne70S!H{(*o6f zk6f#*y84RNU-hmZtb9H}<;7mVBh-_^spG3{Pw&e(tj(%J=DIi!WtUZAqQB&vKgJdZ zSEs#;Xn8E| z0+G&I0Fl?n=I%d9{hkAwCyyif$n8X*LIyU_;z}BD`%c}+b--QYE44vIx*+vvLHhe` z0Xq17J}EYzZ&r`2!qRxqp^t!LibDlDiL>spfH7P~55z_4BBf6<&VKy({B~Z2GR*+!{S1~3a4+5WrVgWWOSBUpK`|DI^j zyLD}Ch$xg@!MVht;oQ(SAOGoXKql+eRL~AV1-Mq3S>dK)zx`TtjRgdh4xI22yzrT*cg|jd33fgLPj2dA z7H)HiiH>o%=S|NQilBD;Mw*X54$!BUe=r&h8yaUIR>`)TUs2U%Ba zM{@1NS%F7KvB|6ijTnRXZTN36R)S`7VR@q<%Hd#JuBKw{^7lN`kKB{jzL}sDI~3K# zzkq)=K79W&0b~qqR4FS}UK)OmkBcc#=|3rUW24U2w<5{w2QMbPoY375#y0}KY}@mW zv9zk(>@nsFV5zm!x?_`uNOEhR@jn+dS$X-#GB}?!oirLPMEBAmnFg&1WXVFvTlPOY zyf&t`!xj~{6@$sIJ3Hv?P^=n}*=-oYQHHHQG&W)SN>8ay$G1g{`??*ExLEN{5$Qpd zn*Xa|06bze_-KpUHbJ(3YQ5>&K{fe@qv`0bA4|Q-I+B}n(me&+)3|iC1N;eG8SZ`d z%b07_i;h@40&ssDhwRidF0HkGdcYUdj}yOcdudy&?p$I%^y;U>#P7abTUUa3L4AGZ z_MID-!=C0)u288>DtzZ-tzm+@NSjA3%L@naH2>BS5aw@Yt?wiY^>s9M6UzVVPOip93gA6o+ z6C~PV1r=O%%UPTqzn#JoW`K&XaZ7Wo(a`ChPvBKQ-4Flzv&Rv|rU_!+{2`l}V&AQsxxQ7e zt5xQRPB4ek2bAtC12!vke1Nwm>BP^sooJ5r5pXhSQ@fkfn-8(bSpDy;g_N9*aKzVX zO`qpBo4h;B!ABcK30Q-mi0v`mN%yI-%k%A6f)yd7_^=Tc_f7uRwt(s`uaKa0#i?HdcvFF{<<|f(5P=UK#dZ*AqWzB2jF868OeVt1OP&9(kZC zKzYNw2)2?b%>X3yuG@-JX~pZ>rgss@&yxx?mn+<#e~uOK;lA#tzWbqjw-7HT;#R@3 zuuui_xO!DY`wsIGFxv;oqkaoCx|et~uUu>;5(J*Ynkri#doq2VOz-SMW+YS$jAatD zEpI%J5S4P*_O#SL*yAJ_0FQ$s-Qo@xN z&1ZiBZo%CFRTzT*s#w&o)sL!4LqAX#03igkJ5%Cy+Yhlw(Hrk$`01roM&=GdMFovM zK^I^|!Vzmnj~##@lM$$A4N_FWBJ$6e8gCe2{n@!!u(8nu6?XM(?__mqsAiHk+DDrL zgc%e4nZ^cNj+q1L`iJ&0>^+Q#z5IfK&v0q6D;U#~3YM=Zr`lDRZ>PNzy$A1z-OH6$ z7BSaaJVJ|l^bFfXmw266R$qnLe}4WI<|)AN zd-tC&?p!>T8g?9zWs5{j^s-Z%v-F)PM39basNAq3(v-6uZ0$a(SJ!q87Dv_+-5s&Z z`+famV^w=|xNVFk@ZIm(8uf$03&oAW)=)?z;YuN87LY+y(MU;<<`Oos#{UQiOYQ8g z$t3)bdV76cacOnb1tqi2MqcsYT^Bg8f?9jusvqdKz2c1T&D0tKVTW2-BTnhqzl=Mq ztA&?V+mr-mR$J&q_K|MmQ%M+^Kln)rP+(lbmBc-YI%%TxPZyUw|CK`{kxZACe@DUt+Lqr?$?qN4`gW5CY-<&;Cnl4z~YORGkC z1CydhuN4S}FllDLc`H|fP0jYxp>wtl<8svsm(z!nGhJYsyO#}44NGHH6dhm1^N-IP zKYwz1uJ6&≧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

    RIyIDI__ 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

    k4SfhUFT< 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%0DPEE0#--o@W2V)r=C7Y>8(4-I& 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

    yDwAX2^9|##hXQHiS6t zU0%@dj=jC-InQmn+g)XSZfwtQXML{=s_o~OboV7+Uy4L$`eXp){@7d2-$E(S_Ilc7vy4HoQXYuZ3oqX$Ub=O#N2z4H% zE~6aFh-Nmnx!1hUSoe%dSG=R=k8g?Ut6f;d?M}q%Q`qM`amN|0YrN;jw5B)ibDrBu zIF2&sI`)Tk>xMIi=;w%I0Sr-eae%}jhF}PXC>+{|i4*c^a~XzGR3RSth9!@9@_yf? z_3vS?ym@PJ$9?hbtlaU(mbac`7{?X0?R)t?x}`TWRGxj!+O^)h&$;a=!cmV}Qtr6}4% z$2)DGn>*g&3(=R}?CZ`Qx(}~Xw^>GQ3ia#gO{wiYe{F2f0#>j|UWy;tVrJ;=eYMqg ze~eFwX1(_scCmwNv!0uU%zED>y@hE^+9lyw&UBJ0u`Ob)8n|jF+SPs z=7{(oLNysiM}b6bJd1!N#fXnmAJ+4jRmh;7VO7ME7~!=(dD6Du!^_U6mR6i4WA_>Oh!L2iK|?Xo;6ov=#s7LS^3w3-FBj1B6tbUb}jvTty|Jy2I?; zO|fymy3jp&EVtSXXpa8s)NmdoC?Czp{ju71;6?;8cDE`Mz{*~p+dd|<>9`jDichNU zLB!)LVe83Y8&T&MyEr&@wrfsi{ogxAtbe=inD@F<1!`|MNCYBD6Oz&7(YxU((`WD8 z=gaVX`mt&tuLCJU5{E4#rYE$&Q>f<@b2I1+-EcJ*Sj~I zzzeN*JP+;8`+4t)?L2>)u|Hqwl+>y?7{#AJV_fD3cvj?+N-}NOz(|l~_%IY9C#eVm zdq|?~Xd_L&_q}aYUmoh>BX?bgV{f4FJphnEZ@+!NiSN!5KijBt%+K+6jQJiO|ClpW4wrMvUa zM9dj^eofSXo&Mb;+z(S%ar>r#?L2spQ4dY9(+mlc{peZ$Pw```<~xV+IP zgw4&2?dZ@?GtoZppI&#o!RMZMPqsI7dpz0Y2_R|R1Eb8ESnWaKYr7lhfSiNw;^!o6 z#z>64oy;Qg?a3i&CfNW3+G7?bG?x%}UcC%0#+PW(p|s=egi8Zi43iT@A-Gynp9h4N zhi1+(>CILXOC_yN#ItngY<4qLa@5?;ZPZ3_*Tcn=-aD^(b#^7Do{X#L)!40WO$mn} zwJ>1FckO)RFBhYE2UO_6JzZJ1UB_{bVEL*n%@`Lr+TVHS zd4KV**6kN)RPd{Q{xou4IXHpK{;2YmaqE+Q9k33kQGtTdTudTt?yD}Sm5e) zUrv3!R}AhXls0lu7rX1Sc0qk320xp=On2AvDZ}_n^b%BBOY(h>_$6jW(G>qb#(#JK z0016`KmZEA7A%I_d;s7vgQ1K?Xe6YVy?<*|J-pl4gF}vICi{{^W@IQm5X~1r=Bp*; zUER!CybS&C`B;){eX}HE3A+1{d+Oq`hVODQl9|%g^_-K%<_u!T8Ds(qNE2wzYUTn{ za!(jmB#=lhvz)vQaa+*Qu+gf!rMX^8@GG4C{Kj3i?)T@KK2(pP$j0vl06;(xh)6OB zk%{sJYv_^7oXqlb)MNLqw%v@8OrkJ+k)1b>Jof$|3?B+$Swut>xd)YWV$fO? z8`N3|?$%;c`oYgv^08;T11dO@9nr1QH&Td+psu{ZDJM)V86GydS3MQ|YE_H8&%{y; zmsh!}pg}e=YN%@M&A}BBl#Xh`e@smjq<^p(M47>-1MWs%r#HfG;)p8uQ%cuVjqE`@ zv>)ksU?B3le20=@9U#~OS7{*J*Yj2bZCF`%t z<7yTG-o!+UU#|Z*`+t>tv&FN>Q}Vjj37$*lq2=RCPGHR4#&#V|Err;9V30KopvJYk zf7+|^T}tYj6#mu_SpX6(cg8C*jx`YyvMe-70FjMFXvNmGr*k^cup|$fLcpEs_d3#f zSimGyD;6v}B<h(O_jSemi%kS+kZNc7H1eo5~PhQs(0x>5AeSpUCXCm zt<^b==PMQ_%Hr3Ul4PVN*QokWzuR6l@A-T^q-p}TC3aG!c7biJ z>P9D~fQ^2=Y$gy)5C}}wZ}9Myi};=H?c4kve-6FS24(8kXxcyXwZq1w|S)Yipk?)$jS(<3wAF?rv1A zS0C&7X0muX2SlBUQy`H|5H+_^MUZmS0=lV^WgB*y`}@6|e0|+(%iA0G$Is*Ay>32? z-JX@LvJkxZQkYY_cl_P4BJZ{WcYWzjBc=A zc?$za9bq#e9QBs+a{;G^Hi?RmTK9h^(yrZRRwMZmYyH2=-_`x6J2&;YtLZjUth~(p z(?9!>^`ikyT)FJCv?2JzqH-*uC5O}k*j%^PA1u?=H=CQd~d?8?e!|Mf0x($ z$KyV}v+?FA;o_uXVIHr`=60S3J(`!?T{EzlpkVlwd25{|=QU@#B@lF__sqp*n&4^$bb#Hzvg!4z03 z8D1(>)S8XOmFdw%oU@Ju9XQq`0ZC%GaK6N!>p!3qGKtIX!weo1!@N7BlZy-8e7hHS zP;U*9s2l0sr|buvvS_=n$%)>D+Eebod748gJ7Q|GMBLolhz-F{4(07yS_tB^cQuQK zOiRR2Wh+J~IwGl9D&km?AQbGs0&A9Fyf0Ws;||eTP)SN^tfyd2#17~)9PnE+WN*Gk z;!d}LSuv{_<>TGIfjQtA)050d6^4Wm=P6oo;Y#cq<~^YE4&vP>#Wzw>lMx`3#&=X* zlS>z;-WObugv^GfrOHT!urO*U$p)sXqNtRQv=}i75>bp^@p=mA zBaN{#rwuT%#%~lU5e}c3_pdLVO;k~>3$C~AUn6j#f;7*3?!^dI%1FiX&~UwVgU+h! zdznTyz{%7v+xD0$@)n%A4^%$=!|rOuCFp^jB`rG%79V#+NOJ-qbSro>T3ftZT1UDQ zJXX(>8%LFeIsmy~Riv*FDG8XuYk=`u&6(>e=Bj)<;z9`&TxB;y8L;#4Q2lmiv4|-X z-+643lW^`Br@s5P1+lnb(>}Js$r8VQch){`DOi^Eb|KHZmb}@Xd&`<;&K#km+gTiG z8u;c-zfD%&f(e7}obj~Xw7Xuq!s=~f?oECb!9rxhoa1MwX4b_vJixo^ei5Q&xqY&- zX8?9L0+q7kT5zUQ$`lL>o96EcNJ4INAg6K-o?D#8Al)9rhg9}L`sH-?b1}9noRn`3 z`{y$@vTR7DQ1W}MigF##KF>GRZ>2GhdghSkJWH8MJKL#que!&HN-*L)Mm6uaa{i$A zIt=Mjzh~80!zRwHx3=yEn_Fdp`(!eD9OpNV{q8V^9|~k}d)ea(y}Gp< zz_(>7m$NMcd3S!olXdyKo$rptYh6j(x8J9|?^P+}G3PLcF|4|jrI}}0O0e~GO;eu} zUDv$lZz%b}_wqC5Jo#M8QN&~1yUyCmF^y{}SDqy(b7*26_RbpC*0pavXV==+>ib*W zdbeKQ5QF_~+tqq=s`pW?+uXMeZX4YlN<#O%JFk7p(uW?(HiS6lJz4hV-apIUeMi_| z+r~GHZ+^(}mSr5!a-?87OcRKOID$Bnfd`Hns6q*2;OHh5uXwewdQO+WWbfSd<}ZFY zxXy_LM~IFzv{$FFJ>3LPTP=OR{;-((Op2Yt9kbG13i2C0UR{ipV4{_}q%K_RZ z$F&W8%I6EzW_)ZX7rcZzijQ&it*B1q91ycqIgbPHt<)Oha;qM=(N{4rz25kJ3FiS3 zwQFMi^;aNAvrE0;6TCf(JEA(bMxDdKOS?O7shtqaom{7)OSNL|M{)La;mX-uv#%h- zZd)p;21ahY89MZp?Dm1vo$zYstid+hIpd#Z*yQ_T)c7mlDRUX;ol6zRliETG`n;vy zI;>s4xVr)Ct+%N2kwnplva7t~ahM!hm20-#p>Y8UZQczXmp$2I`F%o}Oss-Iny+CY zU7+}u`j@SI;+{1@pv2-1Gce7F5uM?-2EE55C6%aNvQeAmN@qDT)vD{VaaDlZC|(iO z@vzp{6%o86#9|(ks{O7x1dPQgaB5W0DjSy2aeD}PiU#QkxMY0UCf4QTP1OBWXWw!c z&o1SN6p(}U>xbjlu=FARu_5K&!{n%@kb;3zZBdG)YA7Nu^>I}dLfaKZ49p5Dorp+; z)FmSRaGgn3QWm$=fC&H-a6g~#{jv3)KEvtlA6_7RFESYZ3qPb!b;+3EafuSFl!JEo z{Cm6J)F^)73mif}-(DWr$0lq*B!glH`JnNjAC;CrXk*jAh6V3UBZyfOBoo3wgB;Qh zEK}1ET-9|u&UdZmOX%?H!{O)O(>-LyUf$vv9YAYZ2lYvegk8bn*KYjo*H>>OP1Fe& zx!+28^S<`T4z=QYT^g;B5DuwC8xSn;gt2hO8@zbc?^WVqi2N8%itQ+FdKrn1$&|U> zOlOB^;v*!06D*(kdExOvi_aVJusgd#?46i+qmN4zb1+Isoob9IbVF>ToS<=gg`jg1 zvxFl+sAg`9B!8T4it`7aEWJK?smZs!uCQie5^3NxmZBAm?_n_eI@t1`i+t}HT9w(@ zE*G7tCP;gv?uk3JEs*b7jC2Ag=ZnGSJJsSwATa4Y!^O-unDSuVi?uy_ospr09|oQa z&f&1`1v~>^Vvw@-cIw3z>n+BB9oI3EMZr5#J;8JVcTJ8&lptZkAeN>$w=nDO(7T8| z&8SIal4c?_IPz>=+#$)CBW059ZZW~t+hy*9XSpHQX7ci|wIa*f=LCH8c&Xo>Q#ax1 znX9!#^USIF_zrouPP}5@+4J%H#BXO|p-axo@VPUDyy;+ab@gO_?&?s37;UZ8QHiD- zTdd4YWr(Kgtx*gq!-F?r*i9&bC?{-HB<0Ri#fApx~3#3PJ)oC8lKFho_LLO!Wm z&=3Od4sIriw@8dLjDmOGQWe$v=M@IGc#F4DRD=qYBBVKqm}b(_BoAs@#qGBqP4;dW`{Ik^WGQG0S} z@@Ly_wVgXY{TAtA8-0Xt<|FLJ9F8UoTcGC=K;PoAe_$2yJGx8k!jc$Jo4YI(i10_F z5^>)0H$sTi4|f)f~~cmtK2bbYMVV%96Y6IJrO)l) zd{!Y`goObmz%hc_B76J(eEQ?>ZSU5n*jo!`ErP#r)|)xl!C2)Kv2(lS18Vq12s2JH z*}P^fk7i){=eS+<*kjb9^JWDF0ZpiqW04{v&SQkBDR()J&U&V<(L0hP$gO?MI|@UD0pHde;4@r+*Abyq=A6hQ=K@)kbDilaAszg#)BIJRXssPVoG`E6U)&=gCBT>fEC=}@;sW=u1O9wmn z2zZt=jhjv*vSG{Jwx%C4ou0%5WEk8?RFOHzb|i;M#$)bXjNLrJ02d^X#s_npqt46& zm!;IC<2R(M255wexgR3KvMntGT={tj66uU4hjBH(dyV<#!{SSSS z(|AA>temU&N#F|UF26~W>#oLSS~=)nt`}E+lj6~+G?mh@s;G)o(Y7zE%--y@RXfEI zFoOMn1Q3+O)m9Za18eluvYUUKcF}=%-#+t-*-JwIW|F*8#jPSnOT|Z z`FK3SPG(l0por7^JJeAkDcNyV6bO`og$zMvZ&4REK$wgD#tgHWL*q&|?A&HB?Ty{8 z{=a4XkJsn?=g#x$8L-3R@yz)nS2>WJoX)PRi_R{(-@Y5wkU%SOJ6AdS_g=~Tv1s+z z?ESGiwZ7AN_q*Qy^Yg?%v{q>ajNN6Ba54v|#7j-0JGt`AM!IWSmBRUZJgCqi-_X@LNJu}pBx_* zi|iplV0mK}4#bq4eVE0WX&r>Hx4vnMx+$Q#k!9FB?mgB`9Ra%5!Q2)Rx;f5XB$5QE z5OVYS_{QeJi%5}@T1hfUmQDjvwjAw{GuW&&^k4SFa=(%8H*23aO}cHqH-TCK*d21%(_ti~MnNcC7m?mmT!ln&X&Fk&u^54Vd&eU@@ z6FO$wx2p`MrqmTu+bmFO*e&@pAx=mTA6-bpz0W6kqE9aS{M-iqUU-Me<#l75ji~$lkh$Mu=Irlbd=06p{A>$_u}?TxPvZs zej||C&Jd4zhva367;Z8v@1dg^8(qWMq6}d5Y5L3Vd2i*q4*XSd7TvE? zzCc}weow#-!NM@T4ol3n_#MLtD(&W_GgBfXx)g$AE@HV?tbnR!v zJsL5y?TucPdA){dDF`)B4fE8;z(7k?I-Rg)w(jl0Iae4&VcMI;0D~uhbpbpl=eQ?k z_Bl$!4tn#?U5=$tJQ4S$9TMUz=x(TiF4f#x9PS+Ot#%-HUDU5>L5+-OQ}&Rjl#L~A_V(RF*gfxiTFv~XUCnFf5{`QIFzbS|o_F&q zPNYY+OZ`6ISU2D{( z*1c=yvG=%HeXow}zkk2&_WO40<>0kSmx1!cV)2tX#U$z`YO!;fP5u4v_*@dDc?yG4q{$&U20HGG=+Fl&79| z#}uTPr6CBc(YAK?mdn?%k&B$}`Lpd`O1@ULDKhRi;Yx*kmpDhe?c*7?s@^d>1d*rA zKPw-7<5^*?lzlkq=Z24sZEmGzUcORAB8j`Ys5tZAc5rz;7-GW)TCCGr!D<&@J*fh{ zynx$0<9gU6-%>D0-B2lgQaD|)k2v5!7O1FR&bp}h^LlW-akp147trD}t@PE{blc;& zST}V2?~xM>R5daJFmyu0va?LFsH;yzaeJvnnCo zcWhZS_Z0$L0y{U3pE#xQ!f~_(j~&+ZH+){Z`GaRN^|PWQ6D1qIK&gBp(A3M4kG?r? zkKmM!dNsH67=OFU5k-Lx)SfRoWk-CeO|KbjjyaP|(KDo1oOs^Qh>eFVd$5PCV$9W@ zl!7ac%5!f`&Qnfz+h;o*H(}u$a6#{6aE`Vk9kj+E`u6dP!Pp4j?({BVE)rRDGNl_r zhvPG_pk)Gqcpj^5Y?Fq0wN=YE4_+uQ?;FND`zG4b>TiTO>5qh&b?w{z_92N4>NfQ( z+j+)5wF?9|-t5=V&s%^trm3ZylZ`)>_d6wGxn(&`H zr1Qx`4T5+&daT~#Ai!;~NbzyGb(GBF*c2Zr)ym>Eu$jjq=tCW;s?uJgCRHU^Mbj_N zCwptMR)k}%woA;qr}`C^dYx>{W1Gjo_<~)Uo-Gf5`9@f_0gDMAQd38 zPV9v#`>L;|V^vKbT*fLYsivq^UF9Y#9B817MOG+^sp$r)BC0Bg{no0iI*hDXo$X?Z zh_OY2s;-emZO1aI%VkMT6;(x5RaF#KF;f^I6Jhlgh}$0@e5YS|yj{ocsyh92HB=dr zv7e>uYboIV*08oU{zXI$3R5=e&jK6IBrqLLFOyfi!~udNfic6gf)>cuV9)f%^;@X8 zwa0JrYv^EEJbLZVZ9qI(A?#-pO(ZWK84J&jv>GEO^0vT4k_tkcSv@)P*BtfV+1Fil z-bs+Y>*n<4Us$kg-DbzYb`Ul~pG?4)b0~CT61%!c`K--YW@j1e9rhmX*2z&smGOac z>aUce5e_u#QnIq54iq>!l%~rPs^B+W3mXKO$tH}M*&VXaAO}Y^?k(QtSg|k)?b!J= zce)*23Qe>CzQ|rjqj2_X1tbB3b&0%%0no`H17~A^X2Y1H(|z5*5!v2_lPzR69F<>rK;?Rnp?o9N-a&DUFIF#&Yf zoqJavoLJ`?8+o^MZ)>hMZBw*&t@Ehr`jEb!&Unw5yUUm>A6U)u>eJxh&^Uq?>@cG= zJd3Y$wGj39V&iD{2hp5Vj=)b=97eCb?`ku_bjwp1tg1?pBn?gV^sZ#rwxV zO0eX*&4E%)@$}+v2SVxFLtvfU7?v?WOx@kz*H}Pt%<;_333l#gYKlyKxdfAKy-Ob5 zr)}{IKHo$8KjP{<;o;)E*LM9>n^(Q>2In_`?vOiH5r}Aw$wtC;yNMXW3|>|dN1VG$ zsVfMghiG3U>rOb9de{mhqy@WTJ#I z#MU2VBWMUh`DY(W#3}2jhE6l7%?A*9On|B#e9!M&{r^r}e_rn2v`Bq7Sig9U?#>5d z=?@Y$fwPos;U$j6z&6G`%Njd$-Cj)J?d#BAS%zgJAPLKfqQg2OYNjb8a3>w)NHu=F zs>MI0?IVN{;G>z%xOkQ;MUnij*%N*X{e?zQ5q>YTImxiE31f(w{jBlnmOX!65MJ zAWmGxG&!=P7nzk1t&VqGYeM-U8}9hKnk3w;^PJ|p+k-I5G@!!);7A~0Te(KNl<6vp z(C%<%o4a8xLg#6tR#-ZoTn$HO)EAkZ#rp=PNVPd6!whIphE*8g5lAv5$Or(k6p}=> z8*Q)v=b?qr&F9Vm(2|Nj5ErL;n?gtu1V*n@M#P5`skGpj#6dQ75dhfD>lwc{z&!2R zPV<|Zn>}lJn8ef&1pxqpLX2PtSTmMB@yorn@rDEg&Q#0BSeoiWH5H-6CAp9Hjr{M! z?AwBG#(dZ~s{IKp1}H&4YF)%2G^`M~9$m|Q%XiKIA+&I4)60nI1T6Ng8KB&XR~Z!x zG$d0`|BqlI-?z8UZf+)k6#!zD6C#MO5hju%Y>lmlSnS1aFyLa=(HYE0Cg>t0SVmZb zI8KGTRn{ujpl+6U$Ot`W7Z6Nfga$DR6a+yi0APRvDwoZlQpES=sH~I%YGWL{ywnm1 zr0h~xa5J1HE8aWhe zv1nZZ-4XMw=Mg;&RVKOu^1rozdbbwKfLvlZPcEs+h54jw|4zHsUd4F z?(aEc7RV&$H6U2h7Zq}BK^4?Z&6Lptl!w<@#lXTU_plkO?ys|DeH&yPYC)@)Y|QdK z-bCTa-!R!yke=d-rwPr$`8=Dx!YaqPN+R6Nv5vl~6Zj^n+o8rugTWmiGvs48&*G%O zh$j6>&&z+E#i;{#a8dGY~l#bNV#7|C;bQpHgw)9ZhnNvA3VWwr!M z0nDpy;-FA2o43TwC^dTe@~~^cDJWh z&%3ZyN&Bnah?aqjUAw?ZPqs67OBjSe_-03oOHYt!47=IU^{+wBJ&!iByO#CW=I87^ z3cEL#b#S(g8;>i0c}NOewgIi(ijZkDXq8Z^lOWW**B@>#0`tp%yoHY?o-2-f> zH9U|lh$`xF01DpiEXKULuaf!OotrMqSe0Dx3h>WV=BB0E#-sQ1vA<|V-MgYwe0kRP zOWUsVZG(`lfrh(zBm2&lsnB->IOy4%i0z zl2g~C=YJpAOGEYv77t*(-TK0bjVMj>^ff_1_uQo9^5|g^21Mk^P!5rcZRy{JSB+&M zwY%eEaVDuoKXHCIG217XEnXjj=kNxSS|0E7l4JdXB45P#xR?B!LsVV94un%n3JzF>^<2> zU%u?V7q1$^``B!ob=SqZZy#K3o_gyNF(s0zTk<^mhN78mPTB-M@4o)$Si*7gI>%gV z=GwlHz50h-`uDx}eRAyEk0lzm(wx2H3G$ljUDTejWI6LskKzWw*l8pnv%F5S&* zZ0GyS@z0+7?!I$5+Hlrh+s$={alB(3!TdrHg?x=;7(>nToW={oH^pko`(HTXzB;bm z&Sqx2vnp9no2zLy6x{5Qk7M%^!I%G2us)DidUDS z{o%ZE>>YyU#tgT=llwZBC!xVXph{?RwvP*V@u^p0I>B*Ij*t zEga>oPJ8a2SJt$?TaM{U!!Yt5^&2~=N}F?d60bH$%c>HZNmk8pwYtM%qUr5Ta7;rM#7Ujv zrVu>pOpN;ndHcU4y-RO#UpVsFDM5YWhP)?wGox#v>S1ANIGVg4tHc;rWKJ$bA;ibVG?pgc!-w)q*h z6?x;FD-55J-xdgi>^olPp4}!pB)n|jc=bqH3}MCICPm*h7(4d%c%1!i#KZuL&n0`f zyx%(+%-h{{A3UnwVJ5K$eMelAq52-*!8DN?GUW+f&-^poiVZWILxNKljt0ZN4m(3B+zfO85ND2f`9Q8QR2 z3HfFyY6PSyZDK88J-<=g8>O^OTd;5!0*o6 zNb(ykV+%A>E?b$sXr#HZx-1cm_`C#Y%|?@+udh%4z|ZE5FOdbmU?sIayBDk z0o#HU0GNo#wihRzG@m5ohMyLU&o`Uz{P+R$###as;v|5%r8zF+xHNGNYTZM-R0o@Z zt;N>BzIQt@LILOiNS;r*j>QJU1MYfxkl8H`)4RM>QV`lxkVzI2%bT1xL(y|7%HZp| z&NbNdb?;p?@ojGLw_T*Aw~Zv}?P*g?Ch%rkqWIP3IT~_CT@AMDe!OkUnm4{?GEKla zp=ZQ%*;+4e5pmtDo4xL(`Y=dfvxV-QoIJ(TmmtR}M3T1 zy;deQF&U=oCQgt|+=(OwLn#$!hg_X828iv-p+wQSvjh>B=>`zOM4uvv#U~2LM61nI zRW@Lw5W^B?3J{tPUDL-K?c>(By_y^NbyIZfNkAusC}%rh+SbP@o4DeSEQ(=oEw%gT zJ%H)`a)&nns?XNHb$%bW?fCv^=4S$oZ!l%l&O0W(SerqSCq7{Wq$w_)Z@Nmij2cD4 zvE^vGrD6y}9-5o0yMk(y6)l^jV4*PWa{-Wq!?i+WD#hw8d)|M`Ig8lV9px{Vvwt6s zMh~8ku3_D3@;$&>;Z&xFrHDuKoabk@A(sWbq9((bZjF4C!)jdx_6$xrG55t87PmI8w8R;II3bc zQIdf?6i9TLjG;25vfnKb9aPm-?>K=sScv(+uDw2b^UcqmFT3ddq#>M=Y9?%M*eipy zqKWyci%sXZH&hbFpIDCvMLssQvcHP^Z+}0Bk1cyl)@a`ah^MiJs`z-$RAVsfnNX5a zgS(q$-5FaWf;S_T23BtF+4?IeO3&q(6SN}tXrqMVb7+coa$xyFBoiqayu=zSG@?+K zcFh?f$YC>>Z$Wz~>bGM%R5miD6se27?3m4(u%$02TTQymYd%5DkCelLHCap8;dhRj z*#n4!`AzX@KrH(nKKQjY#gA7f)vIa4AXhCtIlGHzEc#09RhKL{Gl5& zGrl0$!Vfse(%m;#PBLkT1;+z(dbEO9}ZE?zF94>>c=D(McOHUpKiAbj|DJEc@DXdyv` zmhy$jWS5OzWaT1Ir)CN$Mi69TD2PG?CO)KHDj7FuMC&t1bJEvRpA|gkQ%TuMS7rh? z9Pb^{{qS)Y8>p>s-h%n@(Kxrt99+S;NJtE#84f{|#D3A|@2t$jqWfl}6w-8r%VIzw zrB6;@6Ln68EUuaQf$nUXmdl%3XIZ$tZ5@d`437g7xo8B!{s2iIgZsFc&z1Cn+ zo0Lk@cELoL@4gpD^32i4ucUTfzf4v9d%ADt?Y{+PGJHMY&qQO<)ORVQQuw#P@sssCjg2_w2g@d5|-TF zAVm}iL!ij5-v%2vVCONK4|q}-+?2E-!_po)4ik~GVwY#+v) z)yf9cRE^L$Gk+jdo6anON;GH6^Fib2g$BIVzM~80V9=RaS051oXp z+F-E8$=DwDSA=GwG6%uO=!)8VYrwdeir!xF>z$<>8?@2+1Cd9T0#3OX03N-OFhjS0 zsFgQUnY3{T`9QCB?WiS!iq=(9`ph+)1QgsU!W|ex#doV)D(Q(67ccF8;^itGy&nY!fzi&-*^&0_hxXOE&92YcR#?_6)+J>I0|w}#Jo z)_wLt`_B$`c@pu1@fz1%_ivuU52sM$t~&2sbDisLd3S#}oaXrT)Hv_HWtc+u;mu<=>wV`wn%;Tx0^Pg252QM4dYd|M*xm>h3*rIN>SZdE*=J z-Fjy=-`GMJ-R<5U*0_WxzUtkc@Q!<~bL`pd=QiVwcvlIUr#5-z>qugE)>4@QFp!k= zv=Bm2iv`f2NrG{eAQ@5;qpsFraXHV%%a!?=_DVbz?f%lA2R7|uai?W>%|X0`7$&oA>N^RD&m zn`?|?Y;BBf?>^6tDaRaU-G@Rc3Rf8zE6)F>Gk8Utv76)y`Y;@-S^$*cZcyE_?zpS-^wkQsKSxzemq|`2C%({1#S-d4{isYH0NH@~bCp zi?%ri#=b`EQu6N?B|7)pQK~gYo78aF{x!8u@r7r_<#qG|z*ui%27H*Jg(gG`RMCh9 z@0!=7qi5{&3KrB?+6#ulWqlV~+g_r-C(4n3XnT>!qK~`)9AG$X+v5tD^}TB2f;V9p zk;U|RB25gFdd638VNo8?b@o&H2L@UPUkt8A1_k~YTyz)hdII?LwyQjsLQs4NsP2=G zcIGI+xXrv{D0@6T>&Yt*C?21cYNP|6keB!3ua+k>VJY9SrdV@r5pbmKg&h#d`%_(Y zv5l{{YidNBo*Fh2lS5kTG`xeyTk?p**$S+1pvvcv$izM1c!ETiAUBh2OiiVF&vpK-oDB23Jy>C(By1QlcwW8?c@7i=%yITg2tG>4}VA*xT zD5w?!HztOxO8es^=y1cajnh(PU10!L=Hv8zKJMF}Zx0~-(0TosSICi}Qxb@GDhRaD zBoXR-yCE9Tk8rtzaW(G#IIn$944b&A8obZwEo)x;-0NS{cXfZ;17guh-#cd8ww0Se zf_Nm0P{dnwi6oG5aPLyvR$-|N8B2w@zE-RR=t8t9kSr#U(YT>3KvH;+rq_%oMz2Ml zs@=~a;=V70n3irQ1>lR8@$P*cnu{~LSWBC1h;t+|ZW4kql1U35BKve07cTCW@c=t_ zM{efaC2tu9j5h@&PG@f`i7D2A*VW7^4PCcsL`5e_WMuRvuenUVNtw;+ z!^t$~Xk9mVxb8&Q-B1C^jz9*9C6UXU-4?8A!>p$}x(54Jx7~qoea$k-B$B`YNjETn z_j`46D4o=E07MQwx;Y!P$m?tbW98V+vOAY<97}?Q$+M?!M#3p5NX?RTBKL1VLNZE7 z4LdU3q8{GnPL0jBEan`Q`LD9-M%|{ zzRK`SrPlAZue5l&k9poy-WEU^Wha%kY!TYu4TSYTle9aG;OkpkxfoM1B>VC66bcRR z_bjvQ`IYW>m*U}pO&B+lo!N_ETpwy2WrJc0HccQ!+-78nlpMKYOp!Bqf+Z=Lf}=u^ zq&Vax!;!QHXkjz+!xFJR$YTmQrHc@)OD}DCi|0W&9IEC1lSvs_6I?ohD)dh@_bE7yw^5+$Lz>-I?1(bmW<=apc5X-xX zkw%CuS(ZsLKN~~|NP~*hL7X=w2*kKj<-i6J5U@mIoANZ&Tgd9Zy2Z6y%Aye<+gDTp zyGfcsS>C>T^6gK{A0ID2P1mXC+aC`+HsRu6-eMZP;pJ0@dxMzK%(Quxdd6^>Ea4#V zS?X2Q_0{HAUl|Az;(M}50M4{;!&%ENwR5JXcI}!`DFaaA6`27LRVQnuXqlUxT)usu zFFv>Q&mEkRs9ahynGF;slqzP$7{*pGOk-wCj5iMBc4h=rwQ3i$qx2H5MOV&!*r=rA z+>98sE!aw|w8O|8FzzyYJ6_&C+b2gI>KGWS!mw;vybl=Mjuz>p3|> zD&b!4awt2$XxI5K$f8+D5n^ArXHSbR=GdUI5W}|a(?PTr3Z#o}Ad)3)RT!BiZ3z~V zNFb0iFx01h`?fZ)Jlv0yS|nbQ_^z3=7N)U*hKIPG~^}^F}Cz z1VJ+sWUmfVo5OUK77A9kT|3`6X9l>XM%M3UN{!`A*0R8`@l(ddif4pAQCgU0xfsn6 z${W3%Jy_D3BAlg$V>zNo+_Oi6KtOgTMW_Y~X>Tcbj0gl!PPweJ#UK?e7kAjPI8WRfP(;K3$DCJ7~n5dsn@ zI1$KQ0t1LdDGeOYWYbo?PFaC8wC8x(UD+8ggP6b}Uu?^cQk{vsmaf zO*96YXbmpw&ORXy!ohbSU%wXv}_fZv&`80HwDr`CYeKul>7Mr_o)Bq_e*+skt~ zW&WIEQ->a!SXiA!44rqZ<0`F-%OeF5S$A_VSe5z+5j5ryEh__BvB1m>a4o-e#ZwE7 z&JxY)<*?UY0N7>J8J!fxL5fjvRVfZTuyekl4=Az`lP#0ZPG@Tbbq;sPv)ptBfY2If z00S~Mcdjg)AAQ@wGr0baY9eB=j@a@x`MLLyqYi$i%DK9E!{M$IpS3m)uUR+iX8e1) z+Qi4+Rl;$@c;G6(lRFd2_H#>`omR@^@|GTXH|{EOWttY(RM#qt4z9T4o-V*VJ`_5} zGb4)5j1C3ryr!}sIIOq#bT3l&25b~@xTEOt)(Zmw5NT!yw&dC zd{yn;n~Y+mmu#z?DN|rGe{;62XIocYuM6(qBpdiul#=1`4Pg4#Os|hLH}}Unq}@C3 z))~`M(_cKlF!0dp&pYie?TlwClILz7ZhVh0SZluQdY++J{Oz{N<8FL*TR3|hVlj2Q z@-c)V&l#(n<}F!X%+}6xt!q8u4^XDk^RAxl-v434TW>ebYY0|2Gvhp~T9>e7^> zUG(1M4zP(BnjwOw4t~}SyICs6h&f$w*`}OaZ^8R^>PIH~Sz3F}P)pwL)_vfBv zDS4fB^I2y+?YDN6r72ncz5I6$?&YqlT2tQL&%Swf&+d1GDNE}qOW%BbYv-EltX}t3 zyYHAme%6_8_}#bPefMR#V>iBhe;r1(lqxvqf^0%f1wjNLlqexiQ52{sLV*w?^a#Q2 zv`T`XdQc6N{Iv3EQ)l_-Jw|!geY)y$N4@jrIjAv*IZpyYB`M&*7-mUrX-+Lf$=aKM|&bs-w+2(xC-1F@# zTA!XnTGDgwl+SdfHtCF7cvlMUw50l*X6e1}+iPtOIO+NIwefqVYPB&d<2O{16xBP& zntPVEU25p@7D?UIlgnAxTpD*rJeNBAT4fDuZ+^9sTyjS`rv7&7yxaWRx z^~X|FHXZt)#jW$_K4x4)eEBQ&oS(t()ejw84Mm5uR@@#!b?4JW9zB35QzW~@QSj${ zHY{fDiC4ikW=Wa7Bj$A4tYvR>(6dCnWl&q+*ESr27uVt%++Ew^B{&o-R@{S2u^&$H zLhvHR-5mn7xVsaexD%{J3WYcS`}y$BWX^}o$v$&-mhQFIbrBS~mV7VRzBB(<^Q*_e zh{%j@{Y39`b4m{6hZ8Lqq_EhimTmBZS?IK%$?Wv zjpNn!xQyC6{1)@@TET{|nc`oUBBtz^RD(9EWE%L;w=K#fuG2TCKEFZ_L0UiLK{z{5 zStVIO2TiaX3&od#7agnyEl@!R%QDL(b7`Z=B(o1HVuM(8$dr}A=qSoMq|ISG$jSsM z3$~n2B#=u^hm?g;PAfGMTSlv}Ir4us3l`*MCKU?=8q*;`-V{-QN}9&V42nci)0)W- znThXHV51CE!{$%oCq*Mv<&jm#l54`#otMWJBxPm~$@R0@Mf@IL{+jsY6yLZp{SP*B z5VYyX=1+f(c}Y&>#AO)zG98RM{1x;B8^5k&^oM1O@E7adHi#`x;}`^Nw2Zx2MP~Bs zf{*>`=)Ht^C@O6|H!@;t3HcJ7Jy{QN{MLLNcSuh4+D&_;$%Tz5^m4`InHzEK?8zNi zQ-3eeP>+|J$8Cj#f3?W;jSV+TGOyHx#4HpUdmaYHdcf zZR^!X;Ka*%8^qSLweTc1AA#_GmR$ zwWIU*KGV?YxPO(Mzu=`!YcBWLFnIr3v)HBJ&3l7Sw%x^2T*SHEQqF8?sN>laG_BQ; z4HEO;F(Cx5v{jqcWmWBWYA;5APM7O+wU5;8(DxDaboY4zex1^Z`R~=5j-AMLn}eJS zqKMMpzXdMU`u@D_dn7URvgjiBaeCA2&KQ+*;^W0AZ-Y!KL~n4a+q1oGPrZEU`r{TT zgK$Xgr!qEbcGErn*_=(Tkv87W$a-?MiR1Pz;dbtVOD7Ri=_h^h*BT|OIJ}?SA$ZIG zeJd0(BF|Zu!0B1w;`AQEN=rH^P^k@J)H1x~Z1eZbQMsw!HTj%8_4hAHb}PcbJxNE+ zm9ZQ#&+ejD65}$St@CFIHy9JmhM}k!&*p*m6z`PQ7<^pTVRY4prRARW0rbLoTyD)F`*EiaV}EpD{~oQhML4(g3An9d$i>oTj2J zEy~Cz?U!mtHxkYUE?+9ZqehnVAiyFCKxzM6?sqhx9YhDSvw&^$s-!Is%T*Zk`MPoC zgm$Tlr4Rb5Pj)Y2oSf|;TK*VrR_CO;sMqLq1aaaTbng204MKRG>JR3-zlz71<4EOd z)NW_AIMsl&qsh`o7ST;-S35Q0+zpJS4Be*E+LZo44morNNWH@O&AjccT@F0Ct(8y= z*g*7-My&D*o8rId6}_0Lvgcu;64kpqcCrgRqCXdhmCtlm8v?xTW1D?!@jB1NA^i=v zwzW&+Jpjd!Z#y1!Rdiiv6IS9@g~GOYKU*7ay*T9*e*->ugVq9&m6Svf! z0gG@*6D;vVtNEch53Ff%dF=9ZQD!aL=tyG|TXLYu+##TzHcp?jJ&mhsb1~7*zJEES zb613ATp39k%o#$L{L$n3-ipp2DLh_&J4*qQXv*C(d<1X0^qs#0u!jzX^wSb{VdJD5 zTmmTxJyDih4zdP;yeeN@`7&kPicGQJ+q{Z^@O?lR7srsqsuG}8G`AR`3zs|1>*>b-xky7>bMKB$wQa6nqh65 zp>FfX_LxsYdqUI^cLex(W0QKVUg?5n(=R`5UTdnxsXECqo)e4CnZD0DQ`Sv@5qV4MWgSs@)w9kUm2BCl|1>?fMg)$zeEIZt zO_k;>E4}`cD48+_tkVB zE6%Uv2It_e4(1k~uza1|y4qbv_1tfDfF=99CBY@Ou%FF0u1ciMJ{85Lc}78Qo7P6g zWWElhzx3JzqO)kSU>V+VW{kPk<0S^G%C+bI*a_tTW$2ynM^Fj?D4Ib66$LXu+NgQK zAV{N{!U#NuH%Ta8W4J4?7n5UX%AL_UI|u3=@}-1uluh+#Qpo!(DhA+q0t+?GQZ1Mr ziu{1Gh!dKNKt9Ji#$ctrSpsVy{CK`>$R43-JN zGa`~rxrGDO8fv+*0g;7Q#REMo&c0Y!>`X1gVFgIq<>d7atT_i>b5C2QpQnCo6Q z8XDo&5$S1b3JnY>h2ZF0n!VQyapxO}$~zNa7AcbVZZ?IhSYDA(@L>(F4A2&lwN_-r z50pXk6}0w1leo=eAocZ<18{&Sdxi8%#Y~PP+kYxysc~bFXL{d6mjGz#6;|0Eqktsx82e0j3!0BSR6O$YI;(54T|KgPy`w z*6X8IRUrZCph*OYKsG5wMR!z!!+yGyKzwTQx#p{`ukD*;R2cFiM^FnM zEc>J~^GVgn5j?IAQ_99{pEa%9w()#G*s`t5j>vGCyA}tJ$~g8|&pBfhiKos62FW=2 z>4>eRkqT7K7vDmSJbb@=SH)s~U<;phO?l9k$#DwZ(lc4kT7bou6v9G11b1#n?{)fY zyF$fpsl)5qF`|rnJv`=MD+SC#Y`EW9th1Vy8jjX?HTqSbS3@@iy`W$rA2pMKjGw%5 zj^t+cp7r5c`@31fuw%DV(h#OG@XRCPo!# zV^gT13bC<249i4I2A~M<$Re81l(yR+15&}=OKnY2$HT(DfMgz4wGAbW9`xFCu76$N zwy^o=D4+v*z>ts9LRBvX1t?NOQ04(j*7F$eyI~EYa0g>t+MF&7BASjY&yp4%= z1JxOT%2u7r?hrIewz1w%;*0$Tl+Yd{-M^v%)doS4Ix=eAXLx|=a%wszi^Ko+ppUT1 zQz39!DWQ)VVdc$zI7XWFX0p%H9%`9Lv;kN*;d31LBtWLHPtHOvwJorzy zMj@?$gVh)%FhIG@9TWo=s51_4BJv@&g!y%;@FChvj34qC3oJrxU0v0Vq+>kt%Fgz2=V z1a9s|O=}0;VJ;gPlbqEo;Oi$Z>SeTm7+H{q=o(3$`9M4EXSrnP9N5LmMH$Ieu^N!g zG?Hzu<_`ykA}!6EIbNj4;0K(`O9CE_gGL3x{WRviQkl+ab)87!S22OsReq>72x{yC z2E~BlK~YAzu$ti}ArpToS)u$WVN648(ea}jSRUdkJY@^O%WTpQrC@l&KZ1gA7Gm~L zM)noXDW?!?c!{G;jQR)I#H)|YnX-ADB`c5ghX>fcCq=?hfSKV9QNLv8e70tP@>BA# zCbNQ!bhH322*jT0TFl&6F9Z{t76eI@qN>C4RAiKU{N zc(S`OW(h8kbm%;eT`|dWXbz!D%I%aG1t7BRnJfpIe;){1S$lF>r)2nwj&2y0IsS}I z7x3DPNE~H1q+OQ*VFA>#{U+3?J3o(tl8d90WN|EQG48aMsgo(7V6~{WB*X94RGYp! z{cWYLHtJ&=>mG=Y=kn%LDyb5y)FV8q6ILQL*;v_)HU$PY_Q$VkHkuu(YL8FOmvziq zxWASTxSz&pqUN^qFfZ9UZZ-a~$rR(DDF`D^wyoh8@wuGPs_f?0(riAr=E^X=@cv76 zXi9@2&0jNtv9@d___y^hRx-tVys7oEooe1{>CXOdBDpP{7~PHOv^xPbiCiaEQZBbV zGgLj>d{ABf-*Jw<>gm}B*^rT4FrjLUQZlGv!|pYPer(g+)eQ`avQ)T_0zd&EJXU#l zv|FhYkgc;lxf`zeaDAhd#Q^++R5uYeFu9zSTRk7HGG|oDZtXuBEBkp{9vnH^KM^OV3C={b%uv7@$ z0b_JtLQM?_%@QnY4D-cCX_axsrUI&ISl}eOh|(x$1Kwf{7}g$8ObvL=*c!o=C}gZL zEJ5RP_y^y9;uBjs2yCn;gDt^41FZ_GpbRFYt5F9{s6xY;*_s*9Afrsm*!a@>{VfW& zzFtt}7419G73llK7->gks8RuF%&KF=g~^jY9;zfSNq=|F+h%R%SI2iey&=|IdE`XjV}u)Dr%;=g8e=GjJKe)CgR4V1ZSDEMlQx z(FZ25H3~pSbWg#JSb=#+e`EYG3y>neb*&JfYXVC*Bto3L&pSzJeY=sH6_*q-qI4}N zWg^GR)0BuF#hYv`@ioH%(V8mh+Cejb1Li$n0H8oaXnHqi*QE$2{e65Qq+0mn_TXPS z1=YFhF{(P&{c7VqOqNzCVx&4SVC(aa6xPq-ZrO8A^nx7mzL3zXl{Da(z0+cBI&YTnMRHFNDFn05wG z3}#nGgy7HH8NCq{CS^oK6IeA+*<;1@j&9Uvacmy9_PVCqeBm}dUrJr!83iS&K#>92 z{|PVhTDY!D?oQ~;I~fBoSLMoHT=Oi(_u9r_V~AADoPiu^I?)_Cv34*}t`V!_JxM6^u|Hntd-K8n!Nw2mUaQnhd?NiXA~=40tcU&Flz zAnG`k!Q11kfxbdk6v4685;JE+)km=7;%wz&{vY!kf#^F6d?^`h(4i*9yW%Q2~`y?*=tP>}&KrmL!KPP)=~%52cBZd#mK9YTDa6y%nQv)si?Zy5s6^ z_bf+8y~N60G8}Oam;6m>$F|&23$FCCy0VP^-u`X<2Qh`2+Fq_726a1{;^dSQ-X2MA zvgNg#o_rQHLcCdj)G*I^^yM`?S#SsA?P9(T*_s*8LDw4cws109B5#a8Wy~DhO42Z% zbDbz`wo4HV%Ic`WlLDFeASy@|xY1%LI73zuOEpl13eNzEf}NBjoJa zvjXg{Sk?KRoI_QVtw6*RHK%5~^U7vZ9pp0kO+$-xWNk&9Cb!=Y#eXfG*BUVugTc{K z`*R0-Y)trMGNoJ0C%V(*frt2$_$+B(7Fe=-Bkab&ktcSoBQp1ohz|L6T##aAJPXfE zga|**_)5_f5gE@TJv>*^$$6p0WvjBK*DQwwN4ntc@z=0{WU)ul8p1K^G$ z@t#lP5;J|Zt3TQj4o@)cC1AY}6Ai@|baNt%=>g@OEVV?2w1iA7xvR(Ysp|VBs1BhB z0qHo3lCmnotT+`<4h7B`=XO%JIw%hVWIidr%7ZEHwBI>Nxh-Hv*#fT{HoLn73=u8! z&Do#1s%mxb zUi^IKTSE=2uO9HCBi67js6BxBKnNhlWpKp^E=G=LVG=Dl2^<{?d`kFPfP@eH&g|kJm#Y1GQYYgEj1Jyp|WtGT?WiiTbdqC)KJP4KGz*^cN{h zu+YVYS$maNgUz=U4=3IT97D; zP$o@RU57ViQFDQF=Z)Jlk9{{be7Gu>B^tbQGUZ-f2aCA#7&5Y2sH6?mn-ic!rWEv4fw0Yl+dH5k0mhS!XoFDb%=d>aIWHB~(#wCwTh@&#c2 zi*HjnNzj5Cg-rU7wQTh*$Ca0&Ek|m7{;rn`HNMKJ?bP*ZGN2H2UhYJ=>_TfyrD5k~ z>$vjD(PO&xdp(pNVr%;Z5si1P8x}sM)dQ3Dk6(mY=L@>XtEx9lVMZ_!mr;EZ$K$<& zx`e$5|BRmI$uwA-OGFdpcA2#g;h8$mtHJ&znKe~0UnbY1(&8O%G!#R zvh=#H$(QEmI1OnaJpO9)7&r!pm)4wL;|b0|!AwYhm@xYPTp}|v1Ni^l-qzxKqa%le*_&mpx`2Oc*+WY4%|v1PGesnk=}bj<5bS=?;B zZ!LQKdhPnhX+CUA?9PbS@yqUT4`+X%XZh0Zc6wf#AGka4lR9^8>YN_%EWgz9JTiK@rFxR%tG`$q|Sb4c#q0=PWHG{L!4F}r$3a} zsfs$@c=%d-B)r-X;o~Qh;ReYe2E`aFEUl?q$*g&E9T0i~OUBXXJ!va$sIZ^{RlgOO zpgXCZossQg>tRJd?YHnCZr>zq!ocsjcO2 z{bmg_8vo|IN>OyvwWhxslQjL-d?DU;M6G+d!)cXXkGHxC=Z<4a;A#l?;<9$W2~o2U zH3D9AT-I#%va0tz{BqfM+#E}m>h$>tG<9_!>tQr%ul?kM4f3l!{)FoJ$wfNxY>jd> ziOjH36!NyI-Q=)TgPFYS+uYQdjg!}v^@PH9^XB{2!+dTY`+31Xgzhm@70DF7j@S{F zqY-g1X5iGO zrZ$%lUzStXvQ{oQTmZ>`Z38+{p-jZ8OSRkf!!)ymWx*% zpF>#-Y6Dr!?r2iS0H%naC50rD+~X04bSvHRU-_7~)7rD<1+_K`c+<{Wc()}|W!FT) z%xsyDxQ%JyBc)vyyQK%(qncu#<%#)U-bwt1l}25vk@MWv>m?by5lTjGWL4&&AH zBMx1z@up&g^Ew@t%xF*iTwNRCZdg*FHH2Ye_uCdDWqYoC{mQ*fH$iCNZKeC9N@E6)t8<1309^Mq!vWqMAqDOztRW0?(uvkC(5yIAX z6Cp)v$!0*L#GBg%#pG`ujonX#WZ^8&xs$gT)sus(qSgiyh=rU$jeUh^A2WSs-MzRP zR>2Z1d9xnxmp4oT_liDR`C zCzJ;8g}!d>C^04L#;qn>;9&Y`HRt2R#h2__oOnVft^HaG+RSFWwxAC7x?akMHQ`?w z_`2D`7(#4&y_uPZ*Y-!f+$)8_;}&E&lm*%Nwd%L7afttk?Qs;Z-lB1;s6Uu6C2 zZJ?=TgLC}hb>}W;3R?=jBH9Xr z0;v?IN@!{%$uFX$^pCm103hE}gunersA=7Gc<*uZ$1pdv@|VHjt0xl8N7HnvvyjXo z0W9ClVdaJ8<_K{*^x%~>rI%X`9wfJuLq4*Pt?u7>eh48o1Vo0$tgJOJD_h>1JnHdk zoQ>NCOo1gt^c3_$f4cqPqw($OU3pZLZ~&U>Qdl`9{O^eG+RKAqUjIdeoZba3NKA{84*c?|kn!Jy68;j3=Ce>bx66)M z_%WsL(Czq;)AO!u>fduP#m(=0%!$xm+`Qqt-&df}*AP=?i;%Jh3e0D=2a4$o8us2@ zsYDH@`=s@7V9;w61|UEIOfQ@1OR(S?NdsXZ%YICJ#@=2Bz1yeP{14`GJ`R?8oA4yR zk9qRFzs!C0K4_z?^1noHGCnm9MMX%Oo(d>!yQ zS}Nya3AG}mu-CdemP4<^sFJ5ekBqFsQozcA3tbP#rbb3(L5Y)mj9WpgwOXOPMXR+4 zO_+Y~kFZP6dwJ?ONMkFx^~m&fD-880jT#p#nYaxLS!`r&S_=$I zS~&-6v_GmkDQKrBa0)1L>9xkP7gnR!wB}bva_dm1n`@u|E9~}f1lAGF;zlh^Xv793e-M0sn(sZ+l40tl8@cvp**HAusgpcpS;ig!pb3$*$3w|SvEQg| zlmEGA; z@Ixev z@&iD2L5O!bQdcvCHMEd$K6NWG6)WsX0UzoGERP@L`3>>gdA5NLT@Rmv|9gIGir`ho z1fV=2vlajU(hpsu9VYo{>$tI8fhy}SOrC4GGUlpZ2lGp0}bO6XoOkcutsd_l2M2F=d@Pwkic3E|fEUJW!8 z_Pb^a)7>I{Z{Gw5TkSE%SYngf4Q~r;k}g}d(LAa<=9&3>o2o<}P8kq$_Sy1^d-hc*7g%tYcyC0T3{-UE%sJ_poiYlh>An@reMn>UR3gzpgj$Xg~kO zaD}5E1&y3t23#_n->eU?IqW6|QE>p>l-{&XyZbn+yXXyt_=wBhN}Fr((kK&ralmh@ z4V;Q~`tNP>J1m{DE^@LN1;Vm*UGuobsOux@$)sY^Lxb4y#^!ynDEhi>BWQ**^8K>}2?5TNNksm)&5F?pBim^c|_+eoPdHSEPcGzMo` z_KC|^$=OotgBz$8R=~8__)W$lu4Z8IdKvGPz|n9s64J=ARPJ>OYs<2N0&Z1!+^Zfs z3~q>NwjH_C7$DyZrYNJdV+9CxOg3v6VUg9hZ?dr_tURl&obWHc8U78*{5mMuj zkHDwuSxLzP{4HinvZUfFLC)&Q_Qlk=YL$Vl1)A4^X$Inw-FoDS_WdJzMroE`YC1!9J33eXj_FL% zYXk4@yz@WY^mAy72&WXI?w@8Og>M$`N zKhqqVv3%%HA9C8#Lv1~Q<*GxfTH8B|1wpZ>zod6=>&~B}n_&9-(O-L3JP}#!$uWoU zvF$$f?4Nc61%x5G*s=>r5f<94jwF%x4e>uoulWF$cIZUMlA@M>nZIa zL_GFp^=w_(l_MzS7>gMi*>!L)4A|Zq9n!iTA6;xM3BDpG50uE;tpif!Xp&%D-dnx4 z)Rf}mm`SmbOI8pf%NLs{F!*V$DZi%mCa%?9Q%5~oPA)nXdt#(SKUph@Bf4_L-ID8K z!a6gSutYS4FpAOF&vt(g^L^b611B5*ejSejI%eHxOH8Yz+qbrN<+suS4w78ZnYjVn z1%){Qpw^j+PdcLqlvu7%p_tu62p2LTuZ6DA`6_}%$-~G}O&f>79{7zssXA5A2o>7_ zHyk)_shC*h6p!urk%CjNIBiB-Ff3J&9P_*DC%(LnUpq^vKgzyeHa^_@UffF%mS5N&3;m#XkLZB{Ko0my!h+-65^0gJuTx8AjnHM6n_4`BC~=bpzRtR{S|t8 zCHBv#ARlNiHnxsotsA_4Yti7e_Xm&@bZ8NTnnWW2k-9*49C zbUb!vKPM)rouH1P`N@Cl!{2f{_H*$#`}ygj3-bHo_YKnX$pKJj&;S4+0E+C|~f;3I*oFE!)zNZN`yeF!AmFsSf9P2jxg*|}f_VF%AA2%~s2|2Vaf8Ks)P;<=z+ zDFLo<}=6GC}f)p#27k~8Cs!|O10 z&ha@0&nYc|7*fzm2Tkqy$b>gW!<#Sxqvl&?BSxI~s;AboA$Dm?@x*TL26ldP5-d3Y z8aH7Gt;tlI_8-|+%Zq?isClvn*h1ufDa#OIOs(3-#!e;DN$08OoYntbT_>0p3?5gs?au2@)O=(JAo^96Qb;BJcZ6=FoVJnD z*F{QjFKWtNUiSl7SBHg|IJH<2pqSMvGsEXY7tl|Y^#^q%>6&qVft8%9lG8G?l9e*O z{9Dj1c9gZ0PpwkvNyTAy#6^Wzt~`?QE%hJ*;5jkz{>SdK8Aah)!*N6kIiZyLm(b${ zqQJinwfoW}38*=!Q<%fDOCd>jpKb3@km>dSdfxj`X?=Fi@6>AAEEZ@gprGa=>`E=Y z86@&5qy?hCqzkPNelv@@$6)^-D}B!oy;^$tdeo&CUzK&h3>5${NAMJZ47+4PzJ6&< z`MslM`Kk7V;QR;uuu1&=^Dk+FuL*Yn9iwzphWzX#ti-t5X#I@XkHNv?kHPIWCC@Lr zNe`HwTh>qiNe3@yyZS%B{1f_jGvD>);su%n5S~})5I?PvzqlcFBPef5{CD>tR=xc7 zSp}zF`wb!Bo&oha-fb_K{@tOc*5YhN|1~wi;k)0vpdESkPpf&m?;7)KHMR_NpVr;H@J+@)j|6{s za;Gmx=B&-19q1GoiUnRjCjWWh!SIVhEn)sw&sX+Hyu(&3^NjlR-&;z8<+m^yRODNo z*L^yydx-v#|09hsm_B6i-@CevTNoBrLyS4(h3eN;g6PWkAD4G?!F~T3wfz*A1pr9Z zKD^}mQYLnvzq~F~RyvF3&L)g7M3!JYM(7dky!`eZGp|9zS1%&~d=Ei+p6mc?& z++<*MAalSxswn<;0vKNmo&;Lnw))TA`CVm^?VlvnM>jkv4$p(9ecRPR)!HSTR7g5u zboC7W$eGU-)9q^~k;TRVm%n^|Gjv{n5OTn~pI#XAb)2ZXC`DKcu(izLh&?0;n{lk| z-tCxf1%&&M_$A;^c zmVE{U$A|wY_*sT`jBffl>ab0%CC@zQkx<9h-T=UMq(FSDjvM8qzM=D)-jIvV#FV{2 zf=R&GN!YzwjJtswd)z-UjF8!Xds?{Pt2sj-BL8{?7nQzz|H<`=llo@Z{h_XWjui_F>KH=4uW?>efRw_Cpa%_in7keMOK91=Qg*`BzRz?Yi z^NnO&Yb#~eF6;USs<|)v9e2U*`dy}x`~t)4m{-I}CB^JGIVKaRAa+@COtgHdWWCo_ zun@$EEI@)LZOVWJA}EDghVqN%!W16Paz~rI+~qaXM-dfSYG0$V`4LmY&PrO^U0NI` zlB9OD!vU`!a)@%S4$7&SA6L4-*i$FUq3S$3aYJDR@q#->B7m4)xKcZ`Okq&gVg-}~ zTh^_`5SiOc_0LcLf&?#C$^*N##erSIc$<+OH{stqk6jhwgiumLRVb@PxXM2)p*4{T z@oNS!_+Ruqvg?2#d0UsKoKb)aj1O&;uhkx{aYuG~UgekJg>0|MNZ8!!Y3pRdr5V2} za*^W@dud;2YH&!{H6<3K_U3U%Y-UW24`W!y)|+Q-q1UMibE{L5j?0J;4xo#VLj{%&O#~a@G{O1u~>1veD$M=nXz(3t_^HWD5MrQQQy|LJCz|Yvr*bXsLjF zCcco`kVUEunvKFh^PaYasZ<0dh=MjRDFQCaHsmd2a?4JJvX-PkaQ~u!N)G%nfAd0r zC7LvRbMgEZtFU)tU&XNSJ@1AivPp8c@BOXtay7Lylp`6zyVpn{#P{d zb0oF&M{P&V%N1pgyHMrBr>7Y1;9qHG`=&2#*LlG>!6Wfq8OOgK`cLWq1uq46GBSlfe80XZklJ6ZE5PGvfK>-T6EC-(cV16hQFiyTkhz`sGW_hwo1Yw**h> z!)|#_!Hri*m?~%h6tz#c6msoER9+yao!2dU+9yO6V%-(OFKwlkUs!n?gF3$Q6!sCK z0WeP5w3n#9r=Q`6H8d2mRQ#uOZ56V_3^|=o`hY8)cvmWN_`R>wk=j6p2({s!(0yKBM;X$Vb@|>*6 zM}ZkgO!nuoAM>kM|7oeINHEoF7?D#TX{vm*jN`my{en#{^l<@zv995}>~wZaUz2)= zB!Lz%jWzulcA1GPG3BkVY1+0?#O{%UzzbstVFZv>;$lP%MK8Gsh+Yh}Fw$J6==0ND znYmP$>A)O!*eC=(&j3D-95r!c-$W)P`#8`sShDhCJi40s67#58JY`Lldc%KRoWB^I zy!*AA{qKhrpa993duHuQ(k2vd9a;Pmtp4T0?p%arDSOgi6;`m3d{;oG^jljA#M1^} zI&5I>kGAYzz+=ta-4Go!)UR<2yP@JlIR%SKvP|6TmNZj;K^RfCdre zH9ws%?zEm=sw?dBSEkfyQ0hG~lb=ztxbF^g(HAxf>QBf4-Ddkwgb0%9rM{r!v%iLz z3ASu1fJr>G!EUrt%4Gy43b9g1kiaJe(iV6~7 z;7m&9KuIcKeMbd;qO(UiRo?Ze@&yK ziP_RzcMh;N5d3m}cfRlM(#?lOF!uhO>8UIR$a3H<+VvLcE&e-iJqvF?`z4NJG1Zh* zqcYEi@4`lI>8=jx&pk!i%YbH*kYjCVI6HjSO_U2y_1nzu7mA;&|EX?Ax|fEI^t;U@ z4k7=9J-_*}x+*0t?&LVdiS8ZsyB+Q3IWpQ8LvUK_*tO|M__<=b^h5Oo;A&Z-JCn}$ zZ`wWtw1wi*#{iYv3gnz2m7+`)4AwHy4aIPj7-E)%dHKsglUdA`ZyLut#|j@xqb5C^)D{pk zye+tamwhD8UjW;?_5>ttc`Zq`E+!#f)tL$aCjA|I$Uq{tl|@!d2cPh_U)K1^?zLDD z29v0kn#)t%b&39XiYYqY53ok7uOUARKYv7w`fr_fWG#va_c!7w#Nmva*N??&Jh+{P z9E-QIhZPm3<=6oYXL;1kPq5n4SzM*-C6}hp>=wSWlCeF!4Cnp0<#>5Z|M24C{n+_} z(e|SGFF5(;swYne68aoG_?;j%|9R*;TW=^A>Jnke)Tax!*?`)h7c<#*uABa7M5H?& zwG75gYWc&<_lw7lsL+0xbQ4GMw!(NKL0)*UzKn=Cfh)!72MIb8AY1#wwfv_%j~s@8 zeD!_QXp<0;>JLMfx&{wMubLt%h{(v-3X^qpR4grHW7*3KV+z@$i7X+7SVgJTJgM4b zfrk1lq(np_+SG_dHF%z3F}BufyWK4 zPf1;|C85{vM$6Sy^n*@$|7KU9kH7soPuovi8S!(TD4^ z6~DO0(dLLX+k@wQA0FH2>+V;!|1}REKeY}&2D@I}KX*LmNjdfZYufp_4SaeD-mHiS zes@>TAoYAX6#{rSBU{{GBt!6<5SXjd@lrDDmJ`>5&`WsBUqx24P{Eu-b@%=Ecv0pb zLn)I7+Q3UEc(?G2zr#^zh&`}uz>Dl*{$}h`{E8Fek2cR>jgMAWmWulj8~+95q$gBv< zQ&$aRuyCll^`!(UgIWwXVZ`h76rjYzG75|kMwEkl3F?ru(0nNEOYnvhn{TrIupJ+M_FpCF3s#;P710&F43nI_u5bs6-Gs(x%pA@<%0yS@ z`X6coFDBuQZ&wr6C4&M6Mug1FxAfevC*NG#+Qv$H@8;*O-UFk6Cfd)dp`-9_wLjLJATR1k+8r!XGe+h<-XHL6W3p&l0r`2{CQpN4KgQ!!kk5 z0av3rr@L=+J7(OH1cgA-(*07O?`9?Mop~;%3qZH`xx|CgLhRrPOXlhRCKo!kSR2v+ zse)Znc+86FLdVUTASw-Lh1OyR?dWL9&Bo#_(0@!p%Gca) zGj{W{-;w7$nMu-~YQDw#@BcLUwI&QU2n5Q@82T8wvvl;)jji(|9nlpl$br3%U`SXb zMNNaM>d%k-|C+D=glb$3_`Q;^4`;k+C7h#E!bl)6sE^uOBiy-nSrPZ65FGWvf10u+ zd0er-+i>%*3N1*sX16VUJylHCAmNHCWvLV-|l2Q$qmdyLL*bBcokKw+mPcCr_3vmwMdD$(!`2T3S>Y%p1U>)2cXmJu8io0u|NO5R! zhvHINq*(CaUR;Y8FIt>X+zJ#6lmf+yyTi-xy?G~-KkiJ<5G5-!@o1?Nvi zkI7G%GJ`>cVQB-PR${V}WHw6JM*?o&)hpVFHc3je|?Al7fi%3b@DX8+W6vT;h}b1KxVD{ z5;GhiK!6&EN{31ZfUnOL9O$*gFGaE|!S+p-Z2in}C`O#c+bx_n{d33-8794+YXBzY zOpn7TFXd2lMEdFb&myR?UjDxRz0DuX%;ly)F*cKKmC|ODV_t!3Hze&<1Vsx60qClu zyRmcKq^`I(Dhep`v0t5JVThP0NLaVX@^__~tAG7t^K2oSCvSHt+ag^@+b6W@68PwtQ2f@-Vl5j_23k4Z7z_VZOnBq9T}-jSUP*b5O;H_+Ci>h^b3TIHL`w)PLEed|Z#@OJGII ze_1E;TPodmu#}$HYM<==WPoNCPCrVN!i0@mL)I?2g+qqZGMp;TD$b_ZAa-V26g!_s z8>d|Q#Qpfz0twLo8K{Fjo{=F-p{(drbp)yMC`76G!H8cTCZBF7hF?@=Ah;n$JO143 z=h9=?dBTGinWG1|3g|AxxfD>K$v!L2FDo5Nq5C#SIz5*cw1y9!k-rB1$pcQkb{L?0NerqtcQi$^`ZTyj#9&O z>1y?sX!!C9h3tm7MUV>2Hz?ivx2umqYwn4&v*z%lgZ-hf>Yg^1tK4zSk8sL)j`5Hi zg%9bsYHYe#GvdEm?_?h@o)w;YeisDd@--LqY|9U0;r`6)VR)cqXeBhiLr0x~Qbe!a zqj@?Mhoh^W?gU%h2ai2h$e#7U!wzD!-#!GxgU?@J3F~_lo%lQ^Cl~=h+QGX8Cqm&Q zn9%#~t00TIbJ>m)wv9UY(QfHO_iMxF@*6dD=B9sG7f(q75huro*EAQ;vRk1(cZtV$ zb2!*SMWWB)ZT#8=I_x&y%hd*}DsM`+*F679-vvS9I@x%7>ZkA*m zvA=8m7E;4GG~P*3Rz)*(d2tt*d=nkJeWpgC24Lkkecq!-jiP;UZ{}8*z^>BNZA|;) zII#as0bw*G!YRe;z8Ruu%%aE6U7s(X^N~$2n^kimt|ES?=f(F`6A)SYP=ka5iX0MI z&ft}X$ye0@$r z)WT9V@XDRu7_pS`wKSG~^1Eox?b1T#O1_Bq(r-G|l_;wz=ELvy7utcd-zADT?LGOE z5&0N@o!HEMN$WaLtrWd>ee!2WZE575-Q^CeaP?h5ryO{$)_5EPss^&&g$^G(y$wtU zuGQ!QOWD-CiF7wYYRRQg>A9rHqZBH9d~G(r+wZocX@J#qX9z$Hqok}UpP8)2&Bt@&KBXjQSEp=DN?(du&(&*G2r@#@Zo9g_DS&!AX}K<3`KeR z%clu}K64XaKj{HhAC>vAE(*vnv)`M#F?%keYwxOJ7jVp4LqXEAmCrwFfzKdzWjV5f zwKUKU4$c!kQ_R>i1MiIDbMpYsb6(vQF+5&>}Tv$UwSxTUB*cY|GGc@CEZ7{9Uy)j?8}Xv=a0`MS!F@Cn7Z_vu;wUo#EoU$%!7O>t;K zQER`>r^KT4LmHTk^BI*#rApF&xBlR=v#y0(yj!CDYYE_wrIYLiv_}eB#y_pBkpMrc z2zTGCXWGi=HeM|FDlb+zjx40^eVJCRzUGG_GACWuX~fDUaalIRU5i3ure8Z*9UEFu z`cEC^2`Ut5-V{B%A2#k{HDn{;ACI~cUlBjFJ&Iv_%O#^?C29qgbDh>0oNo$t5M#Uz zTnM09ghl#Z_v1}PB>nRNeh(?8+7TyyY;ef_QnPWi;B(+S3{@hyS8m)uGZABBxgYj9 zg!_3=U}kuRd~(OZ0MFC1XD*U9!HSn^z`gJBqmv&Kgd8Pa-JcPj*r&e7{L2R<@C?jr zW4<~~?k7i!j>e@ed@)xdx|S&Fh^t*>tN<-y2MXG_;*`m0D1>BL<|t^haD&zU!+5_o z6}BURT(TyiCJdx%65#)|l#1k#a!P%G*c37h_WzWXkaA1^E5Gy~WQ)X+anuf9?y@Ds z;WCzITC8p{dh;boR)9#O;rzu->c&P{Mn>OrH@jCn|4LqJ6TMew_ibdw0kZK-qm9Fw zVB$LBD$FV&sjvzwW9_|O66p^+2uCR#Lml)2c ze29=6B#X{U8UY)r(>RUccxGXL0VHwYIwb=D9P)AwWTk4GJrOL@Dg-8sgiX;RVJ6R~+`g++oz0s+doj3L7mcz*^-kwVi-Pd^J}ybjM6*9Jvl6);B29*cte zdmq_T!DsqfVPjZKf06P)5{~SdOVmoSi_&!3^Sghep~yxAr(cNuml$$b!{<#0@gd6w^JdMiPOGUIZ|~7&7~FlEWf4J2)hCvoTNV zG=t08(Wk&&BQYDhu6uQN{}`wZkOs4>k%Si^^9)S@R5~Gi-vv87V_YWMeLL#(6-Q2} z;~Ht1+x)1&0FfqqY5$+={=b;oUF3{Hb~V!VIBEbR1r!iU03dVsoB7zcDd0le+puHq zoABU~VCqc}?I9WXH055`vsU}t#BS`)=YgF3=D+*`Qq)TbpjZe1hRLBLb&cjFDU8&^X!%y+M%~LFA{y$cV=4)R`=R5Wa0bIxEs_TK=o%Yf0jNGWF zmQHhG^EuFt1OHaomwcds6nHCx$!{Chv`?EQ+gPvx^XPIyq) zqk(twK}?`cg7g~Vo?0t`*{L8y!xufY#obHRh@7_R7bdwg*|U z3rL>=&AfY>81{-;$C7#FCP}He8h0f|#AmZL-7pu&gf5`iK{N1Qn^J$AJebs-@g_Q$0-eRDBuSKBP7zG#6lauYjGj*K)p+av*s z88`@CywgN-APe)+mIR=A4c^fxj#Y$ zy)x5)T)ij#jmt<_;Z4tGGoqex!?Z|Ck6O9P2=E!EDOdcE%1bw~-@h~>pufU&QsI5p zyOg|>fmOsScpihk0r~XGJZBH9ehfHkxyP5l^ajReEA<+@l<)`O3svqT@IdywZv)ht5IFeMDPfn6^QtI56nkBX?L)+v93KFkWwZ9z+ZS+! z-erj2)*`}|@`YHkhhh>vXC_3ngdadtPi>Rum(B5e_aon+{FD^>hS`=WEJSz#rPg<9 zD9XN5LxP^l*vE+dI(Z_`#{M21`j-UD9Nskjkew0>slUo)@NU%H4Y>Xk)iEKJP1+yw z^PfM3TFM}H%vW@4kQ1m%H{48!^vvTrQLG*%r=#QOZ%*MbUFwId^kKHwgf7m_-{ zggaO`exZet0qsNyKi4r&j!s6IW{3Y32jE5?n@!jQyhcKG(3$x;ELAJm=ORT1rzKp- zCj%c>hj`Sy=1yn52E@wixG+qf!az%+H2U@`P3=#474kXeUk-?AGhExL6 zFyyfTQSt!LtXvpM)X)l#uEmPnQ_sLtiXXu(k;_HrK89B{j(P08jN0obsz9-k#c-H zbm9MOv2a*rX+mwADa>|tKiN381JyrN*@2NbWfX`=FN&(Y#rhHhSwpLc_Dz%CVQ7e-bdhXJ9#yCO|ug$ ztrk$DEZPxY_m;u?Wi$!0_JKswK<1yIh|?Zw+EFP6+VmFXWQ%^s?*PvMN4PPTM0us1 z(=LGQEB* zt4O5d5T&IhomglUOIq1LHJ?`PCYY{&Pso=oKw6}am&mZSl z2*6G%%~7|_nxx$sq7@9C7{Oz`ejEB{;k!4ZJlv>$)!+ONDe-;nnO7WE)1K#=apK3^ zJ-$H^eycSD?b+rd?vEX2F0b3j8S}lj#%UZ@Ke9Kk;x9Ojxvr$AC$>CLIcRn&kI9|P zk&ugf>=M~hRb`pqeBX%~3XP*NoJ!b^_ckM~ayTm^ zS#v7uGtzE8rKfAqYo+BYt{w5Ha6nOij~>6VIwzQ=icISnyz$ZeLi!T!yGXhaOP$&% z9Jb_5EorQ~{$tUR*-7FQ?kjzX%G97(efMpDVPAIf=_>G@y~Est^W#Gw3>=8|ICYm> z9{Id*K{v8rk97ynf(a1|J+=_Flap@bNFzA?um4F#m~+_$nLW?W9`075Z2k_4O#2Z; zPs!zW;5hSH_Myf>(7Kd~p`mp65&`&4j0PjeGn5?VnF_a0T4IJLo*o}QH9UT2m_3b8 zL`=oT-JQ0*3T)DVilA)+u8FeV``-A!4ky&5nvyXV0l6)#S<*!hJuwN#&_>c7xF$o# zQ??csgJl;k*LT+MJZCM;1P(6=00bxjK?Q-gM2Lcno$JSm7d@%6(&qAl=kAF8JLdS? zTn4Yvd8g^8;KZHFN4#tEOH~zR6;y0hW^B+j@&f<>9q5E+6*=9^>EvUiTnD+$uC?`? zX-^dn_Fo{@$A%&g2YF{#_fIYvbZpZ@8Jg02M|*)tPX%QfgqaQ6ffT&JO;8yb5F0Eh zCaX-a;RgS(uu6Iq_&ab5XBa3)I>!Y zQ=Y^CNJGD=rYm?dsTd!Nphiy_&gAlSl6JpebXNIP(mo>p(1waeFX~N{9NQ#LgBcrt zI}64BhL=PrsT7U%XPff0{UOqh229I`9VBn( zTi(FNiQQUNJ^O4poAdARl^wijnpSM`W1(M?6vsQvf(Zx}_pd6V6xv0XCD{!cPPVAD z<7t6<=(ugQD>wegB9l`F)7$c?e@gmB>?@f91e$-i?tL`mL|2|F24IP#Idy|tOZB`L z$J-nQ26>EG$Krd}4AqPj_Z|bb16Ij=S zu+Prp4H4QXSvpI;QCJw-%5IEBnh(zJk_Hv)4hIdU>Q1>WoQ1|=*1CdXs#Bsj3_PNn zIO`-I`R8lI=$S$gg}tNzbP4g5JT8Pi_OMv=Xq) zji)5h*9zT+ z?I3vQ?D+DapfXrLBF;vZCur7aJum2J@i<+UsBZJ@0gh;W%;osX^o|D7z`Yl+HEK%9 zcj|w(5DN@q`YgTsN_1sk^iF3s^|! z`S7N7j&Fs>dVOHJ!#}dd-pweJYmrO#gOO@Q%H}3Ceel6E zeHgq1j8|ovW`rnEnWyDBH&A(G#S**Sm~WwL#XEFR!2b;UM0632at(=ZS3r!8+^7NcTSQfGw>yK6Q%8abJ2Rbo9DFcY+>W3%~_AAo-s7Sg8lhC9P8TrM1Cq*!XgFijyhUFAQpHXh! zM!&D8o-8*Yyvd%aXrTY@$p2OmUOQ@{4nkN)zmXJABk3c0_r~V0t}hlVbYF>7H+O5G zdNyo(Vu;|qqrphuX^`@(IjYOwba@rDfB6y>m|q3?d8s(-l7*w`f?bo$T|j^VM#e0PbTQlh)JjR ziL|H^H}=g3d2-UEu*?1|;0zW~5C&bmMilN zG>{0ipXMDY=bPkEpbE=eSST6VAyuG`4j0L1pCQmNc|9NYVT>&~-|K&TDMx+MXqmF^ zTTjw{l%lBa2|>zOTkNb!n4c_VX-~WoPf;mhSoUPiX9bW!DmtPev5?h# z)gpqDkspmse7-y>DMF3>${+TXY~t#Z%I{R;oWc;o*Cr0&Eh-Sh763O1yyNwF$ue~n zB!PBme`(3K0YnF51As@et&)Cgo4jMP?&TAtymQ%47SYHmVaAL7hi$E)lZP&z5}~&C3HpE_3PR^UcjI{A#%dZ}EBWMTXG+q)F$VrTiqS5)ZKsnI3RM zIB~0yR-AEvt7IET311^@&x_rp0PvH!Hio+p_SPK;ks2DBtT~s|{-}(wxiG*%^gTpM*;)pi?Uoq#$6?9?RI_~% zJyIT$2YJg%qf=h_G3UKPXojwq_(r)bozh$juFm5wwx#1)!W*S+*K}EAs@`~JKJ@py z01IpIx;J7rlDVTB*JyxU_fXBNtzzO(U*v=ITt2^lm>i?zL?{9EXYoYpzhj2p-4#w* z0oIGZDkR*!xQjkYb(^|9Y|YAzkl}}82&kpY{bW|sLDxh72{zz{u#gFJ2;g9_0Ep3( zQW|wp`^O4kPb~k>YN632TC?!m#b z`@GF@5u^JPmBcAl4_Pg&NIIb~0u)I2PaOd{a}g^%F#0}zzoE`)h{KZ5Y=jaE?v?5*=_yA#tc9=K^m?8UFSdVz@mQA zlJY=nl-LDG9*6yKg7IfE(`IXGP&k*w4D$({#Jez2mZ0;bA3%H_)4)UH07=L*Uw(}g`ut` zfkRl|ycSydu&-|bzPl$&5tiX+=NWApPH=)Ne7JBbAB!m)X)qmuH;Hx|6*Z2%+z5H( z%ldak-6!Gs?*hN06dxu0ntbevguvg}fXTv%(fT;bbRaCsVgw1kY;h;TLs-oJepL(h z>ZM&Ef`Wm?xRKxUPcFfW*jC`&d=0yrsGuZe>1^LmPwPbP`C0kx<+Hu)Db4j#sgM;< zx>bU>Gcn5;yz1HLfBU0--4jO}p8g5&L`4WgQNqYu8g23%qQLo7xT}r%Y>*Q2A*amkvV5UKK>3i8XQq8Vb#kB!V zj5>Wu;jYp#4hSGw2)pTaz1Ho-)gZz=nYN3n3y8JK#Wa3>bWeS`HM0$6Nh&&j z1|Jg&LEy2(5q+o6hhrg`{HJysJEet&g%N&o(gwSs$c_(Qe{jSH>A8}1e{i*YseFlX z(>w4>nn5!#hEL<>k#@#!_(ja?ghyc7;^~=K4$3NrAORFwmB~!Wh{?(oqXwu5Wwrzv zoBq(>sm-TrCF;tOnw6!aB8~nL$?IO=l#pp3zNNv>_&TbyK| z3L)9NyYF$|zYl2r&?Re;c)c~XR>1r1_^~IE@Te!@aH4pVIL<$i<4n=0JD9AYN9SUy z#{YbiiDH?H`u%@#8;CI5fJ-6JZj>?YJu=Y|62xbX(%jF(tgr($RfyP23{EgNH*qe2 z(;ul$>g(=MsD#6dDJG7I{w(P4i>bpaF_X)CJ9nzZ{o1=g!uG9vVY3hBr97PoS5~||P?&i{Apyrhe1Ohr_m`xh z*wg-z&?5gz$MDb!I@vVCB4(=;~C22kagb09DOzp-FHc;Ywv#%Av5iZwAv;#Fwxjg0JQU2 zz%->@+OH$~4irw__Ld*`HfEHChxn4&g@X+}t4C9s68p#3K~dF(LU@XDdP;&@zq4;1 z`1|<(#ORi?Z*tE!0>h2m&Gx$vRm~q2fPZy&09arwWDrb>!4OU=wuC;&-!?SiZM*Jb z9=4h;5v{&r*`4QwYHakmQcpwm>|}Cw~h;T zhxO5ZMYTY7c>+*7YVRUhPAG-%S`^!!RnHMb+!h@xWLaLs!XToN{H(7 zL9@{Nc$iXL?#5!hqjFG-5d6l(x%1n~1dpCx$Y;WMTVhcuzTYg0^BB0C4TpBBY;IP= z&QY&Ed3a+XdNsQUh1jU84j<*GWhJMAy4$(S80e?@eiBkfOGO8E%fsYkgI(QctoD*F z?>eptcSJ@cwkOIWY1~?011dl6JNb&dW!)5+L|-TPcb}Zo@m6F%a$nhX*_K%N!>=rx zR%HpKb6_C!MJTKHI--Y@F75Bm=%;pk14XzcTW645xna`&EHEJfXHFcJ zwBI~^PCwPV8>N>>I&F^|0}CxB!-zm(W?{!xV6_d!2FRtl@J|_rvb~mym|I+^nTmCH zX}2w@qXOj4v$fDV zmWq%v{iV8>_W(BR2Omzkb#*2!2ucz{FL_@;S#%fA#@LVc)JFxx)A+e&amXQD)_ADL zQh)t5D=nQo%TkFyFvg42>(HrS+kh+4=dvQHKs3YCOqFuOdSJO<;bbT^wA8PY%wX)O zNg9RP&Cx(`g;Eh2JDG9_lHAhe&$ddf@KGi|)VmvHY0N1dLdF=I>6I`(`>kG+PQ+}r z*VZ|S-Iu+QhE}j4j+HfhoD^glE~v!DXj8S!%8E+~isocxv@DEfBmpFsM5`8apgP5H zMk}OZV|#8DW^GfFF3tC5Dp+uA*01;+Z`gBx{Sijk@qx5Y)F-|;=?ZNIL+Cqnc|3_x z9n>Gr&Z-<)!GVW`1**bNsQ`udlT@IFusfFEayTf27l(2sTYC4liBLd`-l1ec;Q)|5 z`aU&>8WieLpRCAP!E8STb)2RSFV*Z5XDpFxN~?ijlf`3msFi}{kgQhhfhsZ%MGb8h z5E|b!S*dOn0k%*TS*&t(q(hQ5xeSd+Yhpnw;^=ZJD)PdGKY=^RME&=kbXH(xKs#lx5V}5PPNvksjul5LW9#SZ z<`Nq!c3geF(Umo*u`j_bNtPJ^Q)zn5a`5G<3-vqcYp+&`fu?HUT6W1~(EU+ME40Ah zxObXj*?}s`AF|waH}BmP1CdA9t?{3Z2AEzNk1AyipL%+gWg{`?*8mCa80M4;B-#~& zrDZ;O?9TV!oc@Jinti6dxNpwel6sQK54$AG_|x=b z)4F|4CwZZqwjd5Gc{9qlDZDXmj6&<+!)=$Zrr0xKL*@GHVR2fM#zfe@T}|kpLb{hI zk6+CXo{!Dz5YPNivWL$L`JLXoh!@c74fD1~+2CX2W#blvK?}lt=_$A_c*XevNv=m$ z(ji&0_s_wX&zgSExY)sZH4_iPQtEe4Lb}hqtI1 zrud&DPWO+*#kd)hg5%Yn3wul-EoRrPPH#y7jZf_q>)bJ>jRD4RdeZ%`bFq?n=tQCVP$z({^{8_ID01bm71ERrQ>j^F)_p-XLX zAR|em0WG)%gO)6>Y=Y#}SkKVT*-b#V5_4r)wgWT5g$(Wx8^$K(qncQrPdyc|@KTic zjoA;T1@-+Jxu(nM&zKR9A7smal3(I9rV=pcye`ADEx%lok?AVH`1B}~v@=B6hi#Oo z^ZR^mMFd($y@ z8|cZU?B+Vr=`-2R8evJV)XssEb6Zby`8mWqFjF5(gYgi=V6D!tIUQ1LAanD|QBp!A z`I*Nnmp#{a(2lY9hInU3qu_f1QO4L`@dVQ$zVX542rqWK=62I5j& zuH)l_V=iP%7QU`+Fi+ABT&DaKCdwaH5D3Kz1S01O_gHU(sfrN;QxZ8RBTnP2Y59R0 z)G)gNk*vr+qCkWP;*9?I>Y}+ini>V}g4Jpr;NhY1r&6p8pPikZgE6Lxy)q^7wjd5w z+O~rI(Ll?uxFp>7=u^@J_BTSOSe9Jp&5z7mViG#_a&Nj8UlZ#ED!eOi?1vBA_rpj0 zuFsQQ<_rv!sH&>!-B|4z?QO*~BRBBdqIs-YSy=;yN}+ND)(ruyMa=6h{ZSa19s}$i zGmfIf#N}zESt3x$yxksh=Mf?rNT$& zvae)D{%+)T$&v#tiQ%71G}_QTzZC_(9~8f@G+VUQ&>|>$uw~%4$M&3(J_MGY zLNGxvxEndmv`-@^nSxN}_&KHv$V+t*|8ygo0`PXY-TsuV3_MD@NTZe$(^PaY1G&B& z`pl8D+e^Q>u!L80nA*zq33CKx(UN!L{K>NN0G*ial5QR3SE_3d^w zbDwL|jBC@fLy6w8)i4Eev{t~XtV(7yg!){WN0B$|A~FFz+xIT}rG;tgC9rLhrO^Hv zEi0UM9NNkin?0ZhWts=@N&f?GaFkd3X}z^akp@H)K6d;KbK`rdP2&kR9aW@B3(Fv( z*p_Se1Z{;(CvE5XOh7(C`#&U&0yM=LGZiD?h!zFo_OEEdp5W|x$B_5?`e9$A@#nw2 z#$B0Lv8(5CHVzpFrgmTuS}O1vlPdc}N{|b)U!`m8hKM9fTq0TuO+HpBtXkoZWtZ^J z>r#7hVDUKh)=XIO&&az~hion<-QeIHLVHi;Si3I3hcG~XBb~pN7B5f0!%=hX#~Noy zdzR|}yC*>_CQalDda>ktF7#yr4b~j)lra~$N0AtT7(X#C-6#F=S#FUWSR{=nCKca0 za)*t&c)WVk;^OLTTvc}1f`GvyS0F6J#Dv7!MFW%`e@#SR#31V#LN^$ZGZ?9(a0V2( z%T@%5X(PV1aaO9~9bHby4Tz(J|Fz-U3jM2#qCl2bs7scqz0X``P-U!(4qn^!*J@q) zbl~IL+M9mhn90B1Z9j%*uP zJ+f=pH&4NHNP-3tvMerl>Ne<~T7qoB)bYXdCz<1+!`kPzIR0L~yMgD#S-JN>Q))EL z@0G@u4wl?@2Eu}boc&6n*;O#NYIdCL?8jZ>va$pKwk?OUJU$Z`rx!7xn?nhg*U=IVk-w9!8l@w-yoSSD$V= zL{`!1xI79?MGz_XnZ#Rs!t-Na^3_wm$@t)-$>L%|LWnENVY3zu&KUwH4H(dgr`z!2?o&*)yVQ zg4=M!qJY#ejsd^ovNwqH&Lr+#y)g_L_q3I+g99la_+5Z_In$ig9@VhWc6YFB2_+1s zgAa#!Al&dg@!OPIQWM>0S}|ujuEDS4qa@sX1&vCp^KR*mn%~p4xbgAQV}D%GYU4)i zY+c+juLu&Nd7@N=&Z_phF}h$B)3)dW8?tY|RL?le%jRo^xs~95n39V9Xp;p`=O&~U zobn@Tx(bx#dK!2=>DGL&H4$>3xeQ~hmM1TEimphh&Sj0MDz*`n`CX8>S-%_u`|{(f zZpG*H2!}o+Ya9;kkuL-{7dv^A9NWXN;pjIC*H!INK$HLWE(AhOOiYZ*$k*?KufnVzdilInGH?@mIeasT|E^P2qt=JgEVa_B59>T6b329{BEt3}3C;Z;9S zx{B|d3fm^e7FC?niW_a8I**+sL9H5w%@1bAV3zbg&dR&2aW)jA~$eXb44`jcSqGsZg~zYtz0IPt;3u2q{rUEi#4P*L0uh6c)a&@yn%5K zKp=|9Cj}(shG4reUvO~&jt_pAN792?hzUVW{hq{xV37?n2&Egp)78f~8%m9~$o0=- za&3`w5Cufq8M7mtnD6hGmQF`N-@^Fs~8 zM-z7cFg`yUJ*0cif4HP^?mr$FPe_*aX@Lm`1KY!UXLX4*FoH-+%fiAoNfG8_QDG^8_LfbV6E19fGnkk6F*`t7ILaqea&;c)S2Hzh|g-=ORe}*Iix}U44A#_2V_}93V^jHOB-*~JU>Aa7RC*%tBz+llX zcU=WvXXCYi@tYMzT_db|AyT}02=j`#@bP)N?Hd_6)#c{S)`uByzWD$1Ewu zLK%kOR`*Vn|2#~X1EnVgF(ISuD^h`C&hF!&5=d(A55I&~wkf#HEBRa^#i(&bn4;=QIF-@)n9>ED5cXE9Fo_#SedpnzmI^`Xk}h zK(l4I2CU?K+&?)p#9it4`xe0|utKw|IFtJ1@|gnAHVL4MU&=nJkg9-P!ak_*0$+`hlADR(>~#U0h>oeBl^_)xHVilZ7>B%J5Fw}=nCyt4CC7W?#I@1=@Yotg+duY z=sKwiX%QUqg~hD)(;KWV$Y`hOk1%j1p*v{moy6^{YX8S)-i%SOz5-SQ4kwz_^w!Aj zcI3`y*6AI|zn%Hwlqv$~wxIv>Jv?STQbUMw6sKg4%X@x21ryo7qwntF5j|a)#B3h( z_zfR=C1OPQ=~MmRu$&9UCpx732g*IMO)`W4W!eAkY=#qD&di$G#!!{%f3h= zGFN6o-v$q2WZ{a$eHo{FuEu7UIkT|s+mgI1bmCXT79b-`q5uA7?-yUfPzB@fKEUEX zm*(C#XmR%#2hThKJ}1-|Eh&!0IgX7;>$g?}3r{6L#%Gwzs%4p~kt?@_Qo7kJe5tC9 zdam^*EJEhrjB2|MJ+|2W0g>|G{}}UT1HfBC8Ir=>(dpin9~H7 zUBj1Ew;4eq{Vr02E7$u1`+_|7OxfVxLHd&DKYUkCpXljjbT)teLBL1onfWrA1@!bP zsP#tBez3YB0e3@~Z=-7F2c1L0gqEGLOs8RBug!OU0?SI)Tr(96aYjrMMaXLwawXka zRmg~bsdfaJcA8MBTr8+Qi9MfwN@KkJ00~)aY>QHCdc8CqUr9PXuoG9sfU;9>rtk3g zw-{TAEW3)(IJ7S0#dp$pd%uCq#jciSB1P-5_?o@&Je{9pPPVo5w%Bs4w3G(JsO|a$ zUS~6B=WleLqp>z@!2epA8IOjhQ{XQ1sT$dcTj_CQ$Z$j_pE;zG*VuisS+oyjsV~>h zW96I9wA95=C1dtPiGEKx;*iMVD>yWE^Fh>Yb&HmWmU45*lqSRd9{K}Eq$NnHlbF~` z)Q56xOmm>Vey2cI%izGZY<9$xpmCa`BwO{K{U8wDfYv?T^5a{)12Sl)c$o1>v1`I} zWpA~VNl_u8FQ@eoY0Xv7+_uU}ha+E#>8`F+VMv*YV^bspU8-y8`7A&zn^8{%i$K9<={&t zNL!N*b!3-n!41gw&_pUiOANYo`ks!CakjhJiwg3Pjd=+Q3hKTWEG-2a8lhA)SIzF~ zVsdiDg4j`e2UYoo(4oU5EbN%j63a|ZhoVSa6&Mbyyh>zxA%}7VCn$zFB+U_*Jj9Mt zPCJqioR$_rf*l(t&cc~5V@?!a7{Q~$e?F#+3UnqDG-M={PeF+Ws7Ep;NW_&Wt5T#F z6_q3jppz}5E3xY+B+Hke14deU1z0gg9PnEr*!k^(Gg?oU-(g2Tym|=M*}EgsBn%TP z)JUt_bg;R7s!u$UedMOw5oaIdk5hdp22olfp*_}AtJZ?U`ykn=o9DR4$FZeu3iIZ2;W;0taF**ap&$E=5YDMoSoUjFLuDMz@5dg3>M0EiEB}pdca$ z|9yY|jl~D<``(wk=eg(Z+;h&8sh6@^>T|O8CgWG{ptFnO12z%1uw=aG2o$xs;^a6Rin%DKYkv#@v8QrYAxtT1jODjlY2$!4&C-; z3uE94?5r`6_D5*EJrE-iVZRm&X{2!$va}WcdFJ(FmB(l9FJg2`_d)9jpg_&Z_3wkNBx@gd$8eRIGZDUNGS-=Nj5xsXLz(CH>xX zy1w;Emp=~gK?kH=mg}boi9zEEa}cr%ZfV1-17CmqTzP(}nwWQ4FTFYJb0k*dG(T4I z{d~SI4405z@xyBcP4vXl*>ZGB(Ak5CA3F-v38h1E*mJtJbJr@dIM46oIo!q0)QTY5 z{P`bC9UPrs-jVqF_2)t2y_ZkV*>Vt3+4o3#$qO1M^qLPPY){I6U$X~vIX7qPvW+}y zoENMAeYHB_Wm`m)mgA^eV;j+BAv(O4aKy#A>PO@?e>(6aC_n7YUL$q?2KD%6Esk@^ z)Sg(v0VhjrV}f<_RK+ZJTv$o0*-T*sa;nR%p>y+{jtdNKo2Bv-EGoa6}Gq@s3FA(si|{ zo(u5hJW+PHWt~^mvx%BIS=~F9RWUnhDJM5)kQq`DH=<~s(vx1qHDbm#vy(Awz`%$Pk#I9TW-`lt-sB!S4;&^WhQiNCjIQlSy>%WVy0l{_-~UEs zz@MSby`5dzMa!m|k}B68uPR*g?4pd-3zR|vuCd8VM`P)^El*!b5w50*ORx!t<64w< znQ0>4h*rF*$z_S?gFo!MS}+!z3NviXd=bR^%|PM_ z3i3`f^7lo@Jb-Nh5-3h4qXn_5h6*`4KzT+(Nw*yUJfi~8tV|@`=#|Qq>igrJvlrJ7 z-~arVeR-X@a2XuE8`PrNuUdl+uDDYnn-W3RvU*mpcfr2%UmnZmn`nac6cUe|q!=9n zT4j=Fr6px-YoevZL#4!RrjSk&cmQPxAVS)es@sCy>fl{;qeq{<%>*Om#as@1e(==D z>cQOSGLIX|s(fXicOjR*_DZNMYD74*C(9KwwMdC8VLz1aCmSuX2I>CQw?BSe_&;W5 zA?0oQ;OWi(l#GIyVf~nm4}$nQ_I9`b*%!KJNPF^U@niu12hpr^kI2&2y7TB z7ms_gk$G34_x${y@+Ea{U;@tvQi{m|>+JtN> z&1S`uxqE$-dHLjC!odq=hE++opx8cGtk&&D#<`P=gvA~shVvoBO`I6l;^O4uM3u3t ztLc)*=tu?;u}dz^O93JGCP+b2mN=IsSIdd!6+G`BmG)P^7>5E6=H1`ey3~j@&(2=E zjpAx*aJZW0jM*!;jmg>a8g3oaB^}d@n&voX_dmb&rRwyKiJIO^mX^}ZO~gH1%Za9v z4`MyTa$-0!oTX*+L=D^I?2^l3LUVHoYt8I^F-y6ZBlDrzU#gs)i9L%H$}YK#V-;{I z6{RWaEX1)*(#h%7;C6-)`9x${^Nba)O2-OUtFK^Xg~M6lnp;M0S?S=2msHbCp1%#>OUG^A)#JP_Ws;+~=iB)r5Z^Jw{i3V#C|$_YY607K1ULkiL`EdjGvedo_*KD_97y!!pqGlGfA3i$Tl4HxkQE!m zfbb|F21*ViI75jm6J2wkqW%dEHSrrxx6ba@f6NNh-S z2@o)#G*0ROYt8o__I6K?tiAxKWz5l1WslL z+YI;rw%%JP;)Yq%!!7`2=d%rq|IOYt6}XT0 zrb6|8JgI43a&}ce^AOiFogjuISjsN`7tBC>zkR=^efv>UmCk=55C8qiRUOydT=U=2 z%|tL-t=*MqCR&an9n;zM!#v04r5u z5w6HIft!fn=8W>yRca`0W@A$`@rMZNHNn;;91-%(&5K2>L@gVGy~6UsTe8HSYKSJO zhRd?4(P;_iigTHrAVv{zW)cG~CKqR#XPT;TMXp4O;u>9MicFiA)SZ@`5}Juc=v{GK zjaJ0pms?sAiB#k2F2^pJo8lf62@m@G_l5N}_E*{4Z>^tg!zh!agY#Ri9qxG}@@p@H zJ^GgXEA$zA{?^er2OE;afaJBKNb^sr9(pV|JFSuZ|q=iFSq;usrP^LFDZzEtad|b zE_gJ4eR0lW={YyW+Mw0^)s5rFJms02Wi5WZEmIsI6oF_AQ2()l6x4kNUifU_+P1>9 z`O@okphQv%bv)2v!cLh-2G2o&w(hSN5Y-$u_uGF^;1lPwKR{j? zfbxGWH$60$%gC{k7g`vSZ4qvCORF*8>kXFM=W-%dm1dlX$i_8HstKg%{ge55V>AEutJ?gBw;zveIf!0J z+1nACym~!Zel?VS&>JSBTeck|#&8f#4)OXx5ljFSNd1nPy57u8RIP=sS?+pz5vdxl z*oQyeH3>dH&i}qp`FGbt<{{!QQAI^S2Ukqg)x_%jS^AUi(R_HYDMd--gj;jC8}80A zK5=Na30Ffz9`RunsraM{XDQQ!Ya+(`5KYHy4L1?fS46+Y60W4Av9WoPsQx@V)6|@9 zP#Iep3xmhT{r%0PDN_kEF*e(IvT=AANHd5WO4mU%CuB_;vl?kNbb9^A1ifu1+qmY!&+><$wJR=KQl& zJM|~%(&PR`$4YSP6<_~}YR#2yp_;mRn3k&OGnVERU7-P?W&T(eN7mAI%ZE4D*ZZ`_ zEvEr7sJzI1>b~@O z?#t2U_w|q2B!>r;mA9PjD%;yzU7KIM{%&I-W`1G$Rnx>F%yfN;`;maq^yQ6qPm7}? zBDaVxJtDzCQ5+6DU#}G7F^tf6hooY()+Q5NCEM z!)Mo(gp?h(MK-0#!HjQ;Ei2BlJ72YXMYVVYX^Jm=#>D@h=;S2CV=DI2wiTkHquG~Y z-NuB(zG>j%O80v+nyLdj{X!i@?acpoN@BwZ67-YzZ!#qXbqidr!i$aXZ?muXez}lr z*jV>xim)rdzUr4DDoYTlO=J+s+rW$+I~yT|ru&aw^?cA2k}?T-fqZ zS0VqElP4!WQB&?V2jt}6lCP=ICdbESaN&H-a(-UR1oxU;dh#Gxa79f-}Hw$3x=LhDi{Tn{hGlVM59D@z$PZ<&clWW){a%cLiItdnW$c?^VF`5;e65A2iMn0kGUw$Tf26BS zzx6Ve`RCqCcgCrns?5U?ePWJS0JNcV+ys#(V!G2N=>3cTd!Fm-r$e6=nS-8x3>Yq~ zRPJKK;=IghV< zyOou26yQ?lK7!-yt< zhyxTL1VTH^^T5z(k80IwW&4YX`FwZ3Fy+Tc=ySdd$w$w|&Q>-$YRid0{ErY3B#d%1 zd-9yDabOj%c$@b>-k~Pkzf=6`3V@ONl-vcnTi6}6Y6&C-*Q>DvJ>)&zyV;`RKM<_S zcRRTG&?~^Q^VE6_Gv$@B)!dxZ!()90kZ&cP^ncie+_E*RRWerMlTEK2nS3daooK3} zRsS^L#+O(33EOSYvr6O*fap6yGJ9qsx)o*58`F+9kDM5G23IYV5VTEDm>vh&McC64Ubq%P3_#Ed{`hn6<2tYZ{*4Fi|5%9PVk$qXHWhyN_?Ui-F_?M#QuoM5 zVH?iSMwtx&PzDh58Gu~mC;%yxRvukfR((xBTo!~v?CH4P#&A`I%Txqz`&#!99xMm zuU&SutHLpvG{WOvFSf*yJZl~N}+7f^}rvR&%L>xg@yQ7 zq8TCmNUM$^>L&hK6sfwJt*ke;o(vq*b22Y4uPl#ssmvxWz-}i2Zn&kOC6jPa;vKSx z`rloxG2B@|IFBd@Ndz;oPZK5sCgK}b7UGljZ(`@w>KOIF(7&CJk`0*DO+M`joU{#v zzd^@BuM_90pZprmKR>zlP<`{U|9S9Xe3tcumZ*cfLCE3|B6 za;G3ro$X(}UyHfUOaq-m{C9U+XevvkjZMUsB-GVL?3t_{#f~^N8CDrqHl-V|nEi&l zFm&J5x_;luIrHjpJTfC7)o_&Ikik!T1Qn085QkBO0|TOC_2jum+Y;~@^@!WQfAOcn zZD~EOYd&nIZeAx|Oe$)B3)LT2jK$|v7MP-S#D%$oD&R=h76;1~q=ZCe!$p!} z?AR)vY}SY*(?fhoC5m!2q1^y@Nioc+xRj&h8Df@U?egPy_h(czcd*fg+yrA58GlM) zBb5Oze4$YR<&hNH)~p|?>i`y*8wqj-UhjO(?(%wGo>W}P+KEg2_vuK7x32xuh{3D5 zq*LswUp84O=3iOP;f2?#efwFknEb(7W~S1c7e>-~6l0oHMToZF8Hs@Fw;_DA=U2b> zAFLv8Xbt^qm#n(3^t~+o$T%&oo5qr%=Ond&>iuORE1~GUu^aMW#%F@QG~tqo2El{m zj{t>ert1Aj_rymQp(u(Uh91iCMboGf15!J*5PEkw34X#3VU0z^qT@B=!)e+kw_m)A zTC+cM9t_z)zyZ1t19p4MPNs2KF&JN27Y+;|)K!xf00GAiS=Bw#hV_yHDc}Y$s4G-$ zX12iTMH^wEKG6u8!0h?W`RB;@t0pwb&wm9ccc{`>G9y*4PdOBUh#FidQL5C?=EY~% z^%dbpR^#`NGI@%|uHtqk{c|!UNn`m%J`G~Gf`swhe~#Awyv*BSG@nLZCT&yyWCW;$ z?jesEA;+PM<@})prEaQ;WY{So>H6%pFLz6lu`c^#C%@aOk9YYTwr}=@K@h!f`Y$vDs4gtx15J>rl#~Jz|3H}+(ofF+u)kULn zQh`zUh~+Tti1%Yh+-xn9Vh`T9Ax{OF6_l88N}2yU{{#A`G~b<&fislPN+ry?pZB8olfC znIz%`$B}npSg9yCvwh~zqkFV{^*T?FzCPqvMSzK4RRw`SgnYm)wQo-d_+rgM$3IbB z2VGO8n`$q8hMvWjQ!uU4z+WD1eq_vAoxid_&g6f%=Cfa#BEnj5^*21F58ZEGajY~j z#<;&53<&n9ZSnuTH0M?u?{`FY7^OmxFr29$quvf=nwBw~HW>3SUl`xI7aN_89iI^g zLHRY^f6)C^j%#;q9nr7z6=&d9Sp!eo>~@gCVQF}HMLB{7;cP$yw==pwMv{5ONhNbR zh@F0h<>TkOo!sE{N_;EV=dU!YuLL1xf%FJ@a_5TdFHg_U^A|hTZ)lh9Xmj~4=}@YH zf#q$o?EI9AbBk%-E|UyHDX=cy;*#P;o5ErZj@XhFwd%AUUvKgPVaJD)i*UIoZyUZv z^U$%eiOa@8y=V%ew#z7Pm)?8nZJ0A`vQ9ClR+qyZb!$jTC20wgDq4cf*A&4w8>8AC z?TE=5b>B~gcWhI{HnW8#f;1D1CFye?5%g|&inG1tXaCZ$WueVwOUZ=EbBd-kl1*Wv zkI;OCeDsNcw^I8Tk?ZtpBw%g&1Vav_Kf2tbBU3k=yKPS zORERTXv)_de}?Y0t4Otanjv2++lKKovGKF^PGZR=znXl?RF@qWT(Rq?u(s)u%@AcO ztgHc>)X0{Sa~q-_q|VtgKY}RR0y!uOG`is8V;<=hhrPcKFKl2FU8_lF8;o?| z$|+TPFkRTqCLl?|%j%-3p0H;58=yv>6X!ndJdv5R>cu3lCObcil@LwN3HNif(d9J8 zWXHjym65GmZcR7UUR$)VKh5&()>;93%_-GK>pye6FnY3I*|xQbI!V@dkQoDJuUHjt z_Iq`NFqBTFgMZk5w%qR9F08%vn%ehxa*jve|DZ_!v9;Vz*Ha}+>-*v%$SwK>s=`j0 z@}^#pTE`!Muq|c%u+2VK=5|;YhfMQGgyUXj*g_v1risWzVeF1IwiCKd6IxyPdhnS2@vBGN0Tg2rCCM8CQDw16_nY8ruOsv-nOpr3*beirnW`< zq^)u$6nO}|>ocr;Wo{rtW+pz`X*sJ=F4#1btWH~2v*ItGYRNCLMymN3#T&7WaxzM$ zWI|+6TQbwP$bwKjRU*TRr~}{*eddBb+aD$nH1DCf?z)13Pq>gRok(C>R|-vbUui2; zSB1%IwdvJuu`>5Jc^(N`vPWh2yO%^|;Yx44>?F${IWYy)nKlghb(D-!=k~HI_j*z* zq;z~a(2-ir60_!?VKh0lexw>%bT?DQ_%@uQON72~d_L0O7)F3m6DrDMdY6|cp|fQi zZRQ3HplV6zMh%SOi{#teo~*SMy(8W3Im3-IGEy{{ZJQ{e&`DNLA@vc*K@u&nB{Ecg z%qwph7c*OH1t$8>)qA2z;WI|8FIhBz>z2Pgu@2zxndS-+gY71ELfht;2mIuwmhrD1 z%Td$lA5C{grJ1^LdqaDKMmgaT~8}KCBtyZbd;SUQ1svJgv9%sn^uVLHki@wx8O;A*^qP62?X&FTo&*A&wp? z9m+Pw*9e=fD_es|HxlRqHhlW39YK@y<>oX;lr^;gJ`&LOwJTDJIyoc<{2-frKFzir zO~nF_xs^IIN{THt3HbRmA8-XH77LA# z9JeVT>9-Yu3t zyTee(G!At{B$g-(ohq(HmH9SpiCP1p_h=gC7ExW=RX+-E_uPws#6UA`c74$?oFjC7 zLtQp?j%<&>oJJMqJDiN*^qr2_mn^`c@FDE+RH-C>Ra7BF!+ST_p4PktA49r!24!SV?r9a;%YNshP7 z?NX_pfWidOl=eP>uY`u={j((TZ7^M#zD3)GRd=5TpHI`@cERymPl`0xnWw@ix#T&# z2vvo2WOO~siNRkJt2dLdcOag@5o@mu=I@eE3tL6%2}xyL=av4%UIwk+zYB`euk>b1 zVHhE?{uUFYF4}JniN}RL#z*2|0*2$&1~7hi`7SY#Q)RX3O^8!;*;`e&b9XNx<2re~ zU9E9PN*cOBf=SXzI%lF_rb?(+T(RO2hKb9SKC$eXxc5R)%ZGTuYj}H*$Sx6|2 z4Cs?7RbG~*(Wcbn5aSoq74K~UF$sbp!s3xSz6?#`Eb^-(^iCVcgFuym6njIfmS~mxvZ$S-ZasjYSetr)x&)roLvkAC8#i>fD7)7Aiy<3Nh{24Uj$AH!*OAN$7q#fwbAz)@1aAG*o48u2l5;@ zaz}qt@N8)dX+#)?z`@B}Ah}o56&m&cDzYPpDdg>p}8R^foj1MWW7|6f-zAA^gI>m6z zLy;qJhkhV#DXuK<$x=Qe)4xH48rjA3E2@^ngU5Y*_=>+}$B^LsEhoO;TObGx1)V(- z75ed)@bDPqP$9ET%$AV;_*Fq6EYx+sMiJ8NXv9H&P5uVP+1~)BrSzAe2cno0*UB z&Vqb&QhS{O+$}%eX{#hZw|njW{T0&dmw*{B30UefX2UJJ0Q)h;9)O(;MVgR+DWB;d z&+y(MyW^ zR8nR@rcnqI(id%}`sw?IQ<*V+n%Xi!T<8eFB*W0|ENzQx9s$pvb!G$d!4!r<=hY;( zgNg_Mm*3n~JYf6jU$?gGz8CM0rNGgl4b1D2_s%b5^_40$-8o=szUn;DE_9?qQU?6< zck*{$otC{W)4ka~;xu1qB;2PzO_uY<$%)gpD@7wD37E@5U zz1+IzGBYX2^}?7NN9=>@+wG8cB`M21Z3N?B_yZ4Yp)z z#_G(7{(n1~x#3hIFE!N1wa>e$sOn@zY4!L)y%_RLj`Bh%yuXgM-olguQ$ms1WqNbe z#~5Tth6RaDjR@(5({iy;f?-&Z03q?x?h%-anzr6sa9(QEY!?LG3{A=uBA;N6MS(e4 zIG}9Jn8fO(BR6;`i8eMkdM|`1?8vzIrxte<*`53O;fpJU3#bdqSEYtk_|Q8flS9rD z6rL32y8QW%iV({EF-1tgEZ=ROUn&YcRk{BE?pO`2g+S+D<<(JbD@yc*I2&Y^$2epr z!v(YfU|TZe3#c{zS6JDkv}ANFe>2qG0p+ggB4*wwYS?Mmpjpuf%uJ%efCXu2Sdu~< z`NMD|lGWWF80JUP&dDLNMn2i1@Eb-@Mn6T3bYOU4SBk?;9b~3%CpPY8?@_8DCrPgM zi=7|4`K@iymz4q0zM5I7rEQyuBpJYrRNTY!z1Qh1Q&~(XsE_B(v(`+*i{XZ z@0}Ie3?jngA^Sj@T?PietRX3wx(2_ztq3eEHrn)0|7*~49Yd}=Zx7BS)IHj~_(7^6 z!uST#&+qwfdWO*YUq43@k@O^VuilGwQ-4}u*Yl>XCSkrW1oT*`TBl6weIf#av(-J^ zyew@dNMV1Q%Z^y(@9587jbFFlfLm!zNz_D5@P8Ai3B%|9qH+{=)xv zkQNE_AxnxKHzDPF$8wA$t@=K!OPOX@R6n%>=qvT%Y@bq-sjF&w|2U_zuGO;{3 zE_ai{Cpomm-o8JcZN%wPMhp&6Vh2qjWkk0Zm`M_6~G7R{=Q#tk(Zm<_q0kSuly5nG)&z#@G}o_T1r zqMA(CXDe+tVWu|fIXb-_n2G7wA6pFiDLoexx#)oYSy;={BpC(nVv8C^4gctXFDu3& zQa}=PlN@j(LM~@qB!(P2u>c)LN^`;7dBvVeSUoA0(bew$7GI&?I>nyA6c6mRNon_b zV#OQTBiEfdIzL|?He>gWtuiek(o^QWjGV9GsIg?7CY>{7qh}$j#j9JU4%p^iGcy(p zX0|13npQS>TFQ!ZW^_}Ya9pH)lj0%WR9D{t19XtE1@X!pT^7<~p%@28h|wv9rhX)` zG2W0&a=37lAX7kftw3_$-o`}H!JtlSp0wT%wz}MSGz8ElsTO*irMwpH%H{!MY~NmP zt2}8p`}0`8EjA|u!>(c9utC{GrZE^o!6Y4(0!g6<)}@F{Nw)x;?i$PW7)MhgJ=007 z_YF5m9hSNKFhi!uN7AfXEH>uABhxtZ81i_#@yWJn~TteMxtuos?f6 zotU|LgnImXMOtM;L%OJ5%zc7bfP2Qo_NY)P?#y6CJSAOG)&}X{Q4GqyQ&VkZb;cOukDi#D_(#hE#BJ zt{f+cn*X&3fF-4M@OFOUZNA@_*DZdFvxnX>imve{If|byj8!e7L5#*FjV0^NEmuQS zu>{1HSS0sWk>B`4wGYQEmpX}yF+xvw5tlO&gT@{w3!RCANr)*5g4)%9AUPmw)^8<%M2@`fw+Pix6W3Dze2#oVBDS;KmvC85Cy|#@gc9h|ltwNPI4t0(x zg+nAZkfEUt)QAot#p1ELT&(LYdb29}!yMAARr%#uy!q_W+mKlbb*KI%UfA0GcnquL zgwb7ap(ShEhhCgM59!NSj;VHr8xoT&eX^qrL-cmeH*HLtOAbuOc5x#9d2wD`orYvJ zhn#Btl#`2XxeQIx15s>TQby95n;Lb!v{hyC>FSf=(lKj2*xri1w)fbmtTIiQY>H!X z6ht2s+8Ej8pW`T0!aKNP4Ur2$&}bwrYJ@J@YtXNY_KJ9>!`%mQsrtV+Jn-8%dCYFIo`J|d2TTxU{B`P-zdPw%`^DGYwqQ5&&T)mzqGNJ=2;jRgXQ~%rMHa)1+Yn5 zIm!yIp1zdsV@?Y|C-DzF05)W5 z`pojvZ(MUhVOog*6ZHUOZ^+HR#p#p0%#)~SBSpH+@NmnB;=ESoOi!Ajv2ygw0|kBh zc1MhE=6Bz?!oyU$eF^z@w-|V&WY9t~SzO}Y+2V!Cto+h2WlfG+uY{_K{-a5Vnk`94 zEj=g6t0p1Gw{XVN^M$hFe!C!Eq`a-78dYQaOX}Vx<9a46*w~0g+C-X3T|!X8m=*KZ zgu+CfMqQZ;CSk1pkd0ZPDNHEqj)RVt0aHbPxd;tDyU>9E%anZcVL@=Kb@A zaMuYVmn4@&FpaR3Mm|xp?<$rack#5zGk;s$Ilb|2eK0^M5wzj{z!g!4){+KxLy|S? z&<5r)@(w*WnAusx5IEMC65MWV<-Nu%l5FT^j!*P@(OMM@*7gnOK3dt0yUeoOfW>#T zlx(IH$ii{ax4x4XYiJh_!A8Z8mpUWn=`r+P^x)RY<-WmF4~)(=gW)*XcVrK1DQ z+CwGP^-A=08VPj$p8)i?XqQ^#`i<>qfFg|yAZ2p5gg>K zlWb8$WR*@c)=3~sm>;HDNu6Rxli`4`ENXtlDrF!*E?}ar#*86m3UUpAX{hb+970@$ zG}L((ECzbFpeA;e^(Ja`+BcbEEsgORVa3Gn1Ycnya63({+`ViYU1)E(gqJqtexD$u z*Ukc$%*c1|OaGsfKLIZu@Ufp+zdJejEESpmCo|6B>VpZs(KW7f2R}_`$h!K){KnGt znnYaCL&zO~qEh&$$@qXA&a;dHH$pfUny1f&8bO^T1|`IIPRejH;HA-)$yO4^-oS>g z5$fJJ5ex_1%2r#n+DWpc$(7c!(6r0Iu%U!W?N?JOQ|;$;RT2^WHI8I{@hs;L-;HRS z(~;y9z5^C;bHpioDn!MYf$|EmNKmNg#;yy~i2+!}Py+WG$f{b(yC;%JJp;AVzmRN| z_dm5Av;<_JG&NL$N+CAt@LQ7%lipw+{9Sy&Z+o7Xn{P8?vxgB#pwrh=hs$?_OWPQ@ z-QDc#Ue7J}K)-jq6o9Q=Ku$5-7+VaFfnhEW03j1(y_1lRM<#gV2RDR)|NLYD0CG7L zq!UFN*GNNn0!6>N^t>l!XcUl`Y(+2psvLQlS?hHfSf(vHjr{_n(f;|kY@wNaF*&GMO zs)dS-&AVJS=cRBXsQmq&@nJYZJK(%Lc&sDZfy?K6KR`Bc_js%q>Z6Gs{TmqaqP&Qb zlvHF+)tFNo8=`^{#m2x6Xtv}v?Eqa!XNWF18zk(BR2BD3wjhwE$Jc4ck|qF%ViXb3 zG-Q4YK}p=7>dE}iZ%>rvl>B}g(Ri+ewvh?+zC05ajb-m8`>}SKsbvW+WKs2Kncw@a z+0k>pM}9JH7qcAGODt$0C8hd!=i zu942}vzK>X+X)Q;M?@r`XhP=Yk&Nf?pJ+qIsgW!X+kHRxM*kq1*B=(aCmu=wno*jkX{m$0P-hI%XfpqB z!2NT1fN$#&;AbcJ7oq{%P0E3A1iE3Q^8@KIx-b@&JUtu0H&#nTX&Ue38%>67`b>r& zDeJ=#1hfhhcc(Yi1JII*J|_?36J`Np3<|Aoq=y>a3DWd0_fBR%kgSQuul!ot_Sz5U zld66Hs`C$3GQp{+Lph)K<|D-js-z>@_4A-3#^9RI?Ic1prKK<+1X>8DiGCtJd>1GE z>@x3GRQ5O|JCcJ`E{Bv4bz2~i`eQy>7U$i$NO9>JH7$uRVUct?D0Ov#&eYjH>Fy{! zdYbfQJWWVY_Zjd5hX4u{jJS{TUEj7n^tLp3`S_vUFoDm0l^o(NN2MWXtqmJW zT&Rw=5Q+)1!79Q;>OdIBQZNV)A`x_LssWrvsNN0a$ezn?#Qe8XT) z85>nfEtHj6tVHuVu>;vj%4_^t7y%gEuLE*26JC5wIF^_@eI}zsMdftn>LK-Bmg2cm z7ptyx+5X8T_IKYUzlkgbWBKK15Y_&}66?T3;VjHm+vj~5i-F)NK2^VWbGE?eA3Mz0 z3rv(x|GlXEx3_h5t7*h8iCF0A{5n~6WDV8@icO~AF}Sx1ulSnCiyS1&4LND^xPj5aU=91)=>oAa5mnn2K zMk%eK5@hokpG`^nL76w?WSd76=1ETG48R~a%O9jp>hIJF{!6UiT#kN6fEV6tzrntw zFC44dl^ZY*`kvkQL<>d_j=+qvewi=G8ZZRzzNX6182v)`Q{UL1Fd&pUA94olCQCNW}6{*DA{!IJzfaFxJ z$7XI}gcMNf^1-$y&1{%}dZZ&-Le8KkqiW7W353HcLBwFsFd9%{tV_1#8y3YKG>W6R zRSqQSV#{fW1&Iic4dFRinZlCsGRxob$`K*#t#HUPFpEZNm%p~8qq#9iq!@H35daY7 zKS^xa3mX0XOXE5|v1JpKmGpv#oZq)>D~&`*g5;M~2`m&sicjWC6@^R(@L=@LHy1WL z_V1hJ-;r`8%3Z#A{Pv%12GdQluS_-ue<>w8b2Xna{rN+(SkMzLNc%Y~7u36(!xLnZ zm8sxKzTBfNnG#8F`_4$6WkQ`Ll1UwmVlhI{BIqzBGPioMd;@ zc|NAQc+F>W9~ekSLIKzz^(;JoyTllT{DQx2L6$6;j5bDrdC7nC$CLE>+33C&>|Ew^ zu6uVTB)%p5m<7GFb(lt03^6SDvi^6AGC~kG$`G|C^X&9UIdrf0o^%0&);^k(&3)W_ zQL75;YOLeb|0qHfw)Q0>c|?10V#-H~PK+O?9jWU>Yhd*fwJ2}pn$|D}o{e#Si-#c35cqm6W#?l>7G)PcK_bcyk32CQ140va|BP(2cTy3BPDN}PKr zV&Zo79!L}I;D2w81ZA3<|D5V#6K{m&qNXgX?sE{ z-ChWdJM*3z#RQnWC6+Xt*xMKB64f$9BTPG^3wD+|`(XlM<(ZZELby$sg)8+L7bG`g zYVEdxY*%)dA_xa|D#!?_}vdmi^9WdDO`fFf(W2w z^d}qRDVBY4Z^l8`64nM$-s8zlO*XMmTtr08lBO24i*&1bUId>^Dguot(1c})K*U4{$$%WB z1I3b@gJl#!p-v5exoNrZR5m2W()ZQ}7lKd@9lbIaqX7TVYn8uajMOM~iJmtFonRL# z#O`Zd#T@a@)es}U2LhIZ-2VI}gX!UVlJo_E%*0wE9kVT*k4iUD&q~;y)*hgSLSIJ!!Ywl3uQ|3 zq)muW0BzCJ?Yrsf8Quy|h?(+^K*d!;8I z;cbBvc~9l9C@S|U=|JeSe(R4w-Ldrn)T&~JxzE^x)E86LUhvYNFV(cUweyOtZ5NrH zj3rU&B}@e4>7pcv3&nJH@(`6FcUNOoIhmaiWE$GOB@J<))Q+TK5L%??pNgl~s-T}A ztd?(Anla~oWGg}`JI{)3j+J+0LKf;eO6U%w2=?L+={Znv3Z?EQHIRcWM;pJoAh=K* zJdO)1C*VZx*=dK8CDa3o_h`HzT*(L~`h&L$^v739{+Gd{Dyfk_$=-hVzGK<7@Hr*s zMUCQ)MO{>CDB6+B@zapwo*mbhD8h2tiDR?**Hp>uVNnSSnkr`z3L6A_g2mBnvLuOt zO|5h_i6+fJu*JV;kV75IEh#7e?rLf=@$AZ~8Ep z_V<;<42ivnULWP^wr0nBIU1Zdn}vBTdG^g1Q?k~8}uJQ z8&}qc7ey7RnyC=ewo&NxP}`2wmXBudhcemYN3+IuOWgF zhy|9^m8GilN?6!vm{aB(9?i-rTYei~jh~5hU#LBn5h=a8_)hpDBr#mBky$bO~18>z&lsOEbV z_!rr6gOjc$jg;_-B2Bl^D5F+)^w))ZB8M3`udP1Idm~RwOH)C(n?0d{+^0a3+@`~O*L54&lv!$sSm!BDvCsX-iY1XMViG}cu z1SaUhjf`V7(du_WTgDPdL+lhQLi=LP3^JcU)I?E-8HOdR0srI@xCFtPHz;1m(=wQA z7tKT>V(?lOhf{6yM!~D!(#F|d9sM6y=N%2l_qhKp%35u)M7LI3LiFAis|HyuK_byZ zqDQZ*uNEbGh_$+i5+VfAdoMwvNAlL9ga}c;KIiw}@18R=XXc!_XJ*dK+_`g~=k-Kv z+hMTBb#adBF_UqPzq;S!55MQ)i6AJFmCwnXHwKb{(lf_*=&Kr}YhV%KEd#WR2{WO~ z*W}|V%F2rR%}-kvw*84*rS{SR{3c5XTT@?zRy?#66S;iG%*kmcFQogFXKk&&<9KZK zR^iV=8I}G)LT6y?_%UsuSKxm=*8jSh#LP#!@+R$7Y z`%q&DKB{nUGn`P~tW&99Cibs3KsCjihaUIg%Rd3H3&3Wq(c@V2_#83qEbpjwGh6FP z!-o8hke~Xwmn60}5#sDd^tLz3`^tzo+^aARJBj+9`x`1a-`K%MCFT$4)m~oXvU`J< zyG3Z!ogM(n*?WYvR@>kbl^qY2ZQsf} zuQL-l`Sv<3?NFNse0XIa1htO({HmN?@e}C|&8dd)E&aOnfPmj-u=nc&+ay6O=dwNq zwiF@a_*|z5d!jl8&&+>rx3+0hDVrgKvJ`DQ@CM^_HnngQ^q^Ul1WG-#To7doMG=TP zI+Za*C{>jKDTUhv^(XRA z>yDAO;!@}(ke!6nOg00BtAPYMo7u>P%xLBpStHShRgBjAj$sZQ?Vn<5>f_MJobap% ziqi00fiK)gm9y#gO1Npn(NBoe2{LWkA#y)vP&;v_$!Ms3p8xTqs*JfBp#wO8u?Q-e zvzuf2M&u?XjR(z((KAkZv+71DcN2&@0XNx5w6++Rc7vgV&6~G0t3Vx@T z=b^7vl$L8!EFXQzTK~Cq_fXH}2)z^r85PcxO75Ad6GR4@gdXB2XoDaHt}hBroR_4E^^53+tWpj0^5k)tL`Dh;32AQKE#{sbafgUj zGgPFpk>_nuCJp8~BP|?0#<)^lc0`vbR3yp&ESFGTj;ch(^T$<|FxM?WS@aUsZY)%` zL+Ry6y;3A!d~PLcF}|FLtSqI-POFF+Q4U9UF!>j^GqpxJt{n|M#32eTGJG_!E!~Kh+a}m}mrHY|QCDfL0s!y88Lkfx+#1Y4@q9G2 z`E%a>hEUcj_UE^`Wjv(WmooF|#_2N}8zWP}yV+ea3-2+}9$NqY4FMYz_n(GZe%3 z6e{LiL{y$yV>T5G7X3DD-Q}vs(SS_!fwB*0Y9^kqm#z=|#SZ)tGt1%A>Wii6YI@!8 z6*2**k|+VIvj7|}V|8!qIBOd#)dYQ)pUKLWnU|TwlO@;@Xk+)9CyIP1ZNGn;!fox7vtUdZF)5Y5hw&;=0P%9#3=ijvfE=pDg!g) zO#uO%F0Scy_twy(m|t#M^%C`DF)vSyLjJgczAI=tVIaW2&%l z7%TBD`@p`;zf<#_H8=NhXw}j#@P9g+Z(>lQM zfl3d~dB9uviOd=UtHjXp=tvRCVqg$%5}u13joH)h8T6B`H`4cq_LW^JGzSMjTw-cA z(tP4z-LxVh8TKgiWs7yrvypdwHI1==mKzHhSRB6LQ*Tt zScl@jk*a4B3rqF4iewEpLVElZna>9^BA5>@S$SBH;(lFs_ z4L^)~wccSZUSek7!kq#yWod7yXB55MfZwlnq7xe1NDE4cO!Ph1#^XUv;m8$ zG8(TurJy+PcthBHk67u0XShxZMr$`R+znDO(^3!>6@|pash2ZHJ0ond#5(+@=X|L3GL^TD6tT;wSDRn4+N{VqUQ!OnMFg%q{NUw|Fioj45VQoisNbNfTn4)l` zp%OcA5V!FxGMSzx7DNo>-&LD0BtVk{4e3}MF1_n00i z7loafh`!xQjl`0h8_jSNec;b3?~1vfQN(LmTJWkf z&rLGjsp0q$(Vsn3{3ctok%GtefhGiRCs!t7@{L@892t z%}>}5&cp6~{KaAME#%d!WdXY*0MUcp*c2<)hwc1l$FUTQ8T>}d$B_F9CWxvBNMQM6 zGM!PZ4!Oh;2^28~ib{)#$W6O%ZE;&%!n_`o$Vw25cS15p;w5Y=D$9|TNWr+9M#Ql+ zUXMdJ4MSlng%Oc@$E&7iM4xJ6z+)iDD9(V@svUybI^pqYLc@Z@|7jJAor)*Jaq6Rl zE;4(s+v1eYq;=6k>CYo?lS&9jlSMJfN4-?HO`B3)<4>O6_V!gf>NnF4Z(5T>@D&nn zOrP;if)qS_U_E-YS_S!iT>JnzqKPNC=PX*0782nCjq3r_%uD~LFlu6=Zfu5EWbO3e zrH|Lud6dHOwOHJk*Nh|7T{*xsjG>ZrlVJC z=Pk*}6%Qy2S$)t7cD@`X)Ol3SdQgKubZ;UR(K;y)-QZT4?5nbjc_MG@F-?x=2BX;oGhazf~G-Niq0il%N8ybm-0%acR(*xONI0c3*%oMW-3OY zVRsz6u#J?2{ZM1L3c|~v)@F6Ei_AhXlPN8&32DR=#c$1*jnSvH<70iO2Q|(d!C@Wl zlCl6vNgJ!6a)kE!U&zi&PtESL)Wf?L$v+oghwcTd^nXP8n51s6B{=cl)jjiF3XlVb zy+1)#AE{{VS)Iq4j(GlF2xC^MPc1w_30fJbhK04RUf(kW-+SJyEG6)u&NG*qw*Dkk z)Z_0ttrIN?Oxdc{XR5--*_{JB$$A7{vG#SMio}xa7FeIW2OcJFz)deypxIHR&So#>Z zkcHD1@TP4N2dv5}4463c<~QGa5ShBz+Cj@AHa1%*H1qAzL#N5=`#(KCzqvOa!P+jL zHqPODARL}jFmoZQwmKm7rvP!;9yRxN>4+@AZni-PGh|Tu$7uM$u-c!=P>mnKY>aotY&@T5BY8>bAq>%M^SX=$<36pFiP+^_BTT4CeM8jlTG zCu-krD5YAEH%F~wfv;D^M9}F$%79^6#B)tLGFE^tZZ4%{VwgZ?=rV=_cqo!PPysxd z79MlE>``Gv%`;gjBJg@9Ki}t(hfPk?SX8t33(V`Ns378gf$|1TGe}}MbK$=?F$E-a zX68&}HN%$sw{ zf47WBbA-Vqv10#h97d9uOBqOS8ljo{L5AtMpa{jHUbcIL{exJxr`CV;Z`J)wt~Uc$$OJ7l@3gn+`!lXw$RM(HkKEZftD*Rjb?%)6qzeJPMQ>u?z}iJg zAwbpVBu+s@uyQ#rr=mkP&=dNfNU$&?yc5b;jS8JXN~&`}^Rp{q0Thpbx4l-(H`S3C zyhSvOoUl=z;@UDb_O}YWuz*&*#iHK|6>EW_(YGm`>M-^dqit>j)4zTGBM(fiwEqNR z%l{YKb8L31qudtTJlv{c#dWP+raAW{<%Qp!@GmN#OJA?1paABSOu}y(WF>dSGHTrJ z;DLD9<^>sFHi17ad?&jhomst^!o8{bfKi7z*6AL8FnbI#sp}$Y^0&^AwU0_mvTKx0 z6Bi4DQ>-9uKwpr?Wa`<&m~ciS7|i|xNM#)KCs4JBmGrplJ4|JgpC ze4dX)-{dVY(+AofI;vo|nE1C(Lr*=El_|k4h>J11Ql;^NP`aZ)*JoJ)1kurwlweoe zp43iU-i3R9XO#{M=J%MGO0aG~M|Yd&r>{uHTPX~$pWZsZeADt<_D_i>6Ur_`@*O!_ zed;&U9?ya8*S?3V3AC->eaLoY`IR%Bq6!5kHE91VoN(^1_e+_5AHed8wT=makrZE4 zRsORc^`|-TJ9H;fR3=#;vCd>NXne}zH{Ra-G+6AJk?k69@ zlByhp)1oMenk*>*Jo#gY);POz#Mjdr%-V?bB-ojXha(ThZ{!6NN->;roL}vrP_I$w z?iYBtBluRBc`9paeHfg$A@|Hxd}Ks^xE2|+n)SM)!&Yyo!&oTx(kuU+k~!J$Ok>`) z+w;$Ky2ShNd`@4UgY`!m`o+dL3R7Q0``pDnKNKM=@KH%t*4`hVGVEm;_Ic=qqwIPf zsCzxnxk)5kwCSc#ub>cuB1(5+;HF=+P92Sf=BztWo?hwcViT61{BB$GZwAh`>8TX?tV zJN#Yb(jk84^8fyRcZgwR$1`U;TDvLu;Q(E6_@cQQ2xABT_SK#Tl@3WJ-m+Lfo#1?n z1+B#ABcL;gM8;7?apY+8YLpMt-%*pcr=!uc$2PODkfF)ct98?iY4p->LV5Ml zn@Is2+(4CEXbCP=dn#@tI5?H}D3EJzlU#1+fz7nEl7=7lf|e&}LSqTlX6NuL%h_v3 zRCeVHE0T0hHdvPGc2i!8)7RkuZPnlMlx8}{={Fu+DWnu+3YCO_7wRFxF=Ehg`pO6_ zA0$3PjSj^o*96nhp~29T=}p>1N+g6+=;{}Xnc7RfXWta<`b$PB*%n%2ckM_ z!#8N-N*F@`jFjg3;i;UZ8EPGd^F5;SFf!OK?&N7tv{VG75i~I@zdPd1`x=_6W)JT9 zaQ$xPfs&JLx5S{G04@M_J-siu9X!@*^Ai%AUhW_HBVe<-!tJk+4>FaAEO5Hg`W z{4OiC(5r!#X`(TjshMEfcL`S>A<@%sR_7o&!mAG63eS*$_UHQGjF9H zF*l7sKnYcp#1#`W;}DRFlw2pFG!*hCuTeKQ4v)`8#z&xb`NbFnt)6nDXfeL{3_@`+ zBvXi0CsrxBvr**V@)EHyRK7P%BsO$|#|J+I{qZ95U*?b^=g8d48eHJC#WTO*pFv{U z>`#@03J;75bi>cM-S;onFBLB|(}ki*ShLNfr@?5>*mD3xrt{C0g3M|d7JT>)L)A$h zR$asB-YzElx}PBceZjpW6S;L&X>8a&2Iv5oUwql`xZ^`9Xe6eGF=o_&lTh=hq3eX{ z-`%+MbpK-+LfP1gi~dp6vT~(721yND^MAP1U*6gR7UF9e>;d&J{RUJbdZ} zKO;lGKll!~ENIA#({514gRFbQ#-l2EuEog7 z2m5}cGEM=^j{d$6f-RWnWk#u^kN)Xt3fE{kzlQ9N|dar8^aY@mwQ=E z_cD~w8SEn+Girmdvk5Yp3)~ewc{?u+j_cOpsF?EzztRMIPE_HGfenW7mz{4u3v`$m zkNA6eSkD+u6;c8^B&nVIPq#eLVPkZQW@+lUSsytSil0G=;$w2qd|LD9^sh78DDen1xG;`k#sX^FwtVA6|A{pK@ju0qei7auL0Orho=pQ>C$ug zMV9+4vSoZ%%#c;zCC0$Ddrh%RJz(n~8Ql4)B01*25T*Fpa~dJ*h+>#x(AXIbzYE>( z+BywxW$@Qvod^FN3%sWec>R9ifhMEX0hC7_v4)~9keT=SFV}##=%-RIT0KIZhw4a_ zp6ojS3*sz`TgxX(toD=MWd^y862Uj%eyAzhrF0Yvi%w(4Qxt5#8UKG~VhBd;sv8 z;!R`GgCV<5+Cc*!d9^hDvMlw@3r5pPW8KGD8jV;y(oM0zLm@V>P+A1$OG4|#jueIT z(!X8Gow8vi<;&z&6f>p-j2u19ndfhR9jtN*{P!Nu^dmuF_w_<{!#w3%!R({<=ku1@ zT^|6h?8h`j1?_~O7|d;dCk<|}un5KvXAf3dGi?@(2g47mUgG(_0 zOVOzptt0Ww#9^8~yW7T5g2=9jx9F4sDvzI>5W#~5uGEIYf4P;<6v%bfCZ54!M&!C@ zW{<+=yO@|I#PlsZ-vAIV`t63WL|vJ^C?guaTNPoYeW-^V4*$YeHxnLxd{O0uf+Etb zI^4XdA|0@E84b9cSS34iSYehi_B;CtGcjNK-D+)lDsF-Z=%Ztyqc&CW7e3&T(|*8$ z&y32PA$e?JI&{+@NqD4yoe-bRddrP1VtQ1F7i4$Qd{p@pFE>9M$Z$rN&(Pu!@*1?ojw#v%)&j!kCc28uO5}EAw0Qb6MwjzUfzV zuj>sJ-fHqO7z|PPBsCjJ3Nc6PaThPVVU(r5-KSeAVrcg328_ZRL*$5L*Yef|kVAa8 zEn#X@(Qw(Ap#!7ckfT3G3=dLs?V&N;#*z96QfT4;XsR4Dt!XCpg^vQ(ORo=CMpW8j z!F<{)NPE!Db5V)1W#=|`pkBsv$MvH9f!v?^a%kJdl=OR1g}U@Y;mjkjE|_93;3v2b zZe}WB24_bL`UnZWzq26OMEuonZ64)JMks8V>CGS3!zKp41BO}^la*;B8uBt7RBSKV-sFqr z88jK{Yk-rzjy-1oTRkT2k^0>p#!xPXb}AISjf%3I;z7LXXdq2wh9Jd}GtdMVN)jsj zkBCVk(yJmBiH%*Lv{@YLJ*lblZ9Xpz9)$V` zRU|?`s-)6%SU^C4kAY9P7s@7Hnvw?Mr`YUz`D~v`(W0EY%NCUKHFaXULlN9rd+=$y z%$YUcB&*?atna$MBL8Hywx1?!V#yk|*YB3!L3f~D5Jl~{e8EUJY8`XtQ9ke8Ro3^X|wZi9^0Wo3oN$5c!1cI zSlgJS2}R5{R*6(t-sd5^?aE|&8*cpm!_D-KDNEP9l&Nuui!3r-@8R8Us-@`&k>_+% zmNsn~QdSrfi4PqfBaL6^Je+e9`x-^mY-}G|e-mzu=y>Os4)2M#Z`wtbDy8CprKTuL zJ+yArH_`!^peZ1pzQT#`mNRBP2pG9LPz*Al5b#}4>buI{mLq%l2&3pD{V{03+xy88 zneKv|_SRasJb6m9eIDVm)t3~z$ zc*;v)0mQCRs)tW}*EK!t^upqUkN9I>B*%Nd&Mv?H ziutjqX-1VKCy>ARVMlMcW;bI($e# z4$Zb*axU8P}T7povm#Kj|V`RkBX4=P!$s4rF z0p$}8T?|I^X5;HkK9C1({=w`)pUDj-&gGg(v=7gBxx*tg^y;XJ5f~VZbFaqudGkP} z;TT0_JX5OuOz;QO^ZXcham4~FSx{oi=V14Vur3$f0QFrfm@Y(`C$JKMmvtm>jj#EjZHXBqG9EEn}xB+JcP{FMV| zQs1WM;ZeQk6Vr5D+m9=WGpD`_RKuyK7i-dKLLsSzQ1;r05f5&ZR#b@=R5k56jW6RM zS~lfMs3kJz$=~h}e!(eI*;MjD8CYt&GV10Pf4ep%oS#H=gi4AP9mNEu+^w)?puU!a z0(tDL?RM}*Jyc4xsF!u@W=~pEIN!&=gN;P%pnCZ9DR{$+sr$^rbzC=}(nVzqf-oQv-@h%qc^bC%_@N!pS&GYu#_+(Fv zKr*nb;!Trzs9y8GYef`ZVUjJ1DySJ4aH_>xY!Z;l_2y4Xjtj@+w z%|=+cmUO_N1NN^)A4+vQ%g)wv6TXA*los|v$?T&Hy4t4mr8YOe#%jpZd3y3?+3S)- zQ1Iy){xZ1zI#;$*{}G;BF*kv7*`Y)0MAmnzQ0D%%2Mt3PG3 z@@9KGVw&sT#%1#lQH{uoEVI9+T#1x&Pw<>Ge{SZ#G<=t#H&#to3j`)hOt+iQH1y9u z?m>Oy&OaEW&NI2^Mo!%;MIY&4_krT!7*g{ZQG9w$V{DJEX2 z$*h+nGRt7Y;Fp|+orj}0s{K~(3n|180Y7=CXU|>~hEGB{%7p0*JPsAjY+CP%+b1Q9 zEtQ&kYe)ioEZ-tg^Yr!+hHOc#a;wW;7N2Q&R~Y1GA2STrqaW&x{WNN>r`DxvB8BZz zsWX1K^P?F)eTVq0oTWU&(4D3SZ11*}9ZS}y28nbT@NME3obacT7f-Nt*NXGgvpoh` z9qt{~NjV;}GrZ~^jbXzWkr-*F-&e+!K=O>py2zh-kW0_s5<6ZRWYa4z4%~eo8cwdr z*<9-#*0~m($ATzL!Nu^V^YW(?3Ea2J*=Rb$qnbQKh1JtB=|*tVDEe~1qMhv?K;r$&G^E&g%#1X|fLBwr&B)-d)fc6QhH;LM<>)P<=0|K1B`M{2 zo6JgPU1u2{7BYHCI|o`|bb9*JH~Xo77~WnMD2;B8g&#XstAG5`;;SR@7FBS?OsIM# zSXJ|;mnyubVZTER!hLdmxpIAd8FqbrDsFyH8B`9h?S9*!qW+*S+pILB@j*17e%ZcksdKfNPA@T!fU#;CNsOuh+csX?FMJwm zTyeWS>zWueJlFP7d1+*q0D?rec>s2dq<*l^!#L@VbC0Bi+{0i>jx zM}9sl*55xb(F894WnVxPxNdm7*lpXRxfR^8ZRO4W=Y$LZ!T|s!GEM$f3Vv56vYe#{Ix8Ejs}p=RE*efHy$wAm?w()(QYx-4XKl4~+}i-rAo4 zZ>o8!5vqB%rH&o7oBF5$R7wo)cMbsYv@%5^CNfN})Xt8RnHf15uf0}pvTo5JpDv$Q zI1+-wgroIno^rtYth(i}q@;{B;O2NpIDRvSr~sf`0ymOXiLPPcq<0n!&s-A$H&}E) zNU=a_fp!Oob#7#weUIv^EiYfy2S;8s;3h+tRE|1X69 zw*eIWza{63Z}0Gd0Gcx;JHBVr0!eP)8?0{!*2qo(f>u=;tbAk%08aAOUZJm8gN2ZB zf=Xp&aDj7fX~No&yI}|LB@Sw|wTuHME2sHQ0NftuMxUeumTRnWGq3kU0PM1R+Cjd|*_3e-+ zXtIzIf+YX6&wZQ~pt%k|Z-Kjs@iz4a4&_!n0`SW>0oHy2{1^Zfl{hS53V@~sPEYH6 zUoe(VGsv#X%`h#`_TYnV_UfwR{&!_=e_G{0#lPI!YC_<=27_tcpebgX5+;%cdM08_ zGc%fEg=i@ND-b8J| z3AQk2Qb!N~Oka%D;n15ZjQ}i;*3?2W&Vof0j86$K2)7OFd!(ZcKnr?rYv;@Xk|b%x zuYe6PlZ^IYn!RQS@vUPNiF0FLDj1R9^|e$+u!)$isSH4X^??*161qZ$8Iq|tuh0`t zW~x;1R9=2G$zV8zOhuA`B=61b3pVLNAd#S(^toLANZmMTWs}jH=-XUo-YEth3ltY8 z87v;iy|MJs3Z!lwv;noE?}{-F(nnrQ+}jO9nMuGU%(!MTw6i2Lg(>9w;q8OSo*|1^ zhA821lDc~AlrZZAF}_k5?MsAzM+3fV3erd7W&NGvC8_YEYWg!oSDtr7C&6pE!Ie}# zINM7-`6$czq~h+UMssuSclG-kxmNJ%lLo^1L0w0M)LDvFlx`WQ15QY!BRp* za6f!%T8w~afe<5c_&ewbieW9XECDKhWWT>O)zL&Hp1r6*2^6o#l9n01$=;kgI+P{g zx_UFfSCV6#QfYb1k^^74K^SE)gPSrKKbJrXCY?A5@nW%>Xsj``Mnlkih}{8`d;iA3 zQR%c2f_qQs>gpS&R$47yjL6K)e5>=z9b+zS>X8e>+`8Xs2Q#u{rG_MRrE&d0`Mqiv zmnjxF7r3tQzd!QF1HDvprKZw(S#O!PpH$xo%v9Z4*}1f?^@y(-&E``?IMzDiM+3u7 zxbN{wq5sikd7;q#U5_BgbqAJaYhfqX*L^c`V%HZkq3+}DrD5akakZz{H6?b{H9IKH zw)U{|kk2RU^Q!Y~-Yu@~*Zy#&JL#Kj{-@U~3*dqS({~MMRZ9%*y|kyRDZCM+>u(C& zRE6y}c%CV78^%*~;8w0R$N&fsK-iPSckv}-1*Keyo86Rh&XX%@PuDn2)f4)Sa1Glm z#tJ}CSJ-6)d8@+Cqi!V_Gt{5Le?CtAYEiWjoc!crLUKWwrE%!>_x68dR}t0Japq5$ zVryEyd<*4#`5#oFefsF~%Z0sPfhYYV#Q7pVQe#TwsbrFXPR^tj?_37UlYW&?gWf&C z$`&W2)#op0+Tsq;lTKl8x6cTBic~b1>xH=mxqt{;(@WN^D~jPZtFrq=Mk5*eH5k_ zVSO}-95Hq>QlV8&^-9B1E_Q1KHxFwzQ}dZQoMfK5J&`?{jrD&W=&@Fl@uscW6ZvJs zHgsJ2J;{$#+466)|~i# zwst%_QO)c4*HueEBT^$^&8Ly=FH!avZ#nI3MgKWG5Vh}kW2%YHj)Qs zb0YgOPyVvaI!t>K=*V^LWU*4P_Pg!V$wIzUO|j?{qdag=d!z}(KLs&!asdB2m{MbMK-;3rCzPX-K=iKqV@fymp z?hA(|XQA$chrZhLT`OO=dp{Szj}i;R(tmxM{krMkD&kDJ6)+;YcR1eOG;Z1Yh|9_s zdqy-$)_cyrcfITBHcUP)o!z%ISvPBY?z^A0-1L(`B`fIWp8}I*oU`(zPjgFIskXSu zZ23x=H-71SUi2{X#|<9CWd$JjupoFH`=om zzp(J($s-5x05aS0%?}~&&q1*tL|cb1(6 zm9tDA8p>(zoe%Bh2w-mrn|JiC{Z#j<`J}@6$KQMo(CGX)V+a1ZO#waVI&+AiZ5n?8 zLQS5w1nZ*_k?T+MQlBx*m_}yB6gE(o^0eA-ob0(C@4W2Z`#8SluS)->OHm9j;PdX^ zWr)hnk9JQu;F*zu+K^-Z&a zr1seTvUbhu454G!qSot^f@;_P!^>c{0;~CunvLVQtP+v_f#RO~Y6t&T+{PGCB(F?< zOApx?20xe6QKuIG@jOx8NhtT&*qyVza0qu0*xoi1O|ChTi zPh?${S}WHcw7ZNPS_NDlm2|GH5*Wdz8^i1I`@KwSGOOgCfE9_%vd)C&Kp@{D`z6SO#-sxdv>uhet{ za&bE{Ne`K9uxI&OAgVEbxW6$quCeTY<3~QJs7z`^8W}wm8Md4(4^HL$N;!IBkV!IT zpjcqyu^_d|$Joht!w>1{io^)A;8tYn%pGe-pgPWAePKt!hQLAI9y*1#$*=AoLvozp z`|Z$r_pQfcSrUB4-=#IjMeC4Q2++1=xztgXbiRs|t$v`D(?umc!o} z+Z35}fr2gn`P8&5sWR|ba@g1Y5ZS4)<+GKe{DSAQfBUr|I`;#UVHkVZ^Nk5LK-dWk zK$hH=N}W6hkRgGmW{^rFprX^A7f*DP#Z(H4UKF`+KIo+_vkYl4T13P6) zVxg#|G1?M(LYh<*WT;y4c=PnfjQz1LSIN7+jin2ZlaSE*Uot8J)9wYyt;hbE%3f6} z->dH#{P$*l(KRP^_+9qi=lveP*O$EWo~&%w@6$NKVxNocj=hbn(G?_+hOQ|-kt|Ss z@|U}hH1Scu^^*-@yBYthrLkTvI-~sq&1X^{he>58f95Z8Hu{|YD~J>I5Q!j$zwGRj@Iwt?HSU8@WGm)ok(QuCF~m03^K`R* z*sD>!7VKdGvSdot1cw0L%WYv)=<)%Gcc4D&zlv-ct=V_ZDT zPWgj@Lb^Aej#8$p$MrUG=UidDr^H^i2*vv$<+JAxx0jPw?#OTK-@Xmrt<%_1ZsY2H z(!D3UpelKF_rRNc-KOr}dIXyDTV7zmpP7)*ujOgcY!Gy^{OV@(+4mtB-7Y%zyLJwQ zmh6pgA3L-0@3w?z6V|HHW$*s$2ttMZA+b*IusZAeab;(raETN70lFw^P%iv9ry{y} zu5#qS=#!fbb$EaGljF5UULRXMA_5okIv|nNkqsmJ1MXhneg(X9ElkDP@z03RfJP3!1^_*as@p>0k+>uZ{!^?&eO>jP{ZB$pabI=(S0T{F#It$3!oe9lB| z>`6W58o6}3@We?W_}W&iY>!P61t^H=cUm1w%L{!xq0^#skF0laW74`84@W;gT(zXY zL~u0CdR^(~_rorKWdzh4f;`_UYcE~$^{n{|){xSs(& zWkt?kSHFU1H#U1ew~R(Z!=5ahCekYNxMc;-7VSMbZO&>x?6Q0yoIvmWA*6k_nSDF@ z)rzL2>cUX63J!oAK3A2`<7I!>|7<4vw8UOTzuFZroF23upuE1b z;=?Ubl^fQnakX%%pmKb58AL)m`Zd%!Z1?EX$1mPVgn}p$k~&gJc_sm_x$i!q-T`G{ zKb&$duP$G2y?^m%tv^8g@0gYHW9OQFl%ETQ01i!+gnU#B`1acDLZ6jQBQyHb*k0er z*w@Y98hX`>+n)|#9l>=rM_=aG9(py}Y+NUfPgh$7gnU|KgmtSLuA@d+hrKCrryJmp5C=IWZFH1G++4|JXzN zYcMU(%ei;!EtdgRgQHhrKd{gi(LZ@81WhA5F8wDt)!z}OlV-C4PIgMty?585hPO1@ z!{-#%B;FmVJXmAUzf@b~2)6s?d}h+T@bUt@ao^>|n^$&$HS1*=$KfBQ_!q$@r`JJ? zT-ygTA8om|xprk!};y+6g(Z|N=>f2JYkCEWN&NpwJqKUZz)90g-TJZ_z!`*z*Y4? zbz>FTgGl2!i=QLwcgj?G3==+mweZm^{8&D^E;1exu-Khk@OgE>>d}vHJI09Ta;Fql zzHL_p?`YaS5D+P)!5LxNx3M?uVZ*2O5vw0OOdd`4yimLIjH2G<;RhHs$sO~h!A4pY z6y*N^l|X90BcT(A<6|Lu73TO}-%uQ?^)Kg-eOJ2X3%|6Ow;*v*xITGcqb&%~={PTv zK)VgD59jx|fpCwPV|@Yhy%C4xq_4ULhu!~w%P)DZa5CgrEKTI}xNP(j@GT9;k`&Pt zEj4K*r6qzW1uw*)NJHImR)T7L@9WFs%ZEbYdu{Fi_x0F5ujAr%>w=*P1Dus!ssp-b z%e(sHLqhYJV?#WvZ2KN}%;1U!I^4PI{$IEsthf8w_oVr2Ew~>8^|$Y0^I7e|b-_*1 z07&u(i(j-+Igs^-h6Cq=0QuGI|2>GaCUKi;VOz12jos*dkVZ1X<*Wtni4aGw72u{~c= z|DHE7pY3mdwDsU_^7s3v6F;*mjKAH-Ja^?K5Z+ZvNS3uwO8WA)I;U)uIWy_sv>|U*BvC{$GwgaBs^$CORBV zr>oXqJIak8KD=L4*gn_?&Igol4m*Eaoje`sP~|(Idwyh(`bLXj32l_5@Zbrd14v^O zwgsgsT~gWWx1Z8F&~&|!tePzG7$4I!&=B5>ru|5SW@m+NEcA<-2upM%I;Lr{`^@k;g43{!Wob4q5Sib!Yl~^D~T7 z&By!h>}&VSqFkOK0(1e<*lu-V+^_PF;<=#&}8CXC?Dbr$L{uN zo}JRn%{|o!V$VMdch$S+ZMb6n#CmG?PC3($R}&a;SUFBzw$2*6|BUrJeSDD{y8pIZ zNz3i5kDfG~yu+yz{`flRdc9}Uhy24p2{QRvggEi8^spFp<4k@nJ6r4j9{l=M4E~?` zdYT{Ufcv5e5=D$#vv0C;er`1xjO*#sCf_`P;SBg<@H3uAbtQDt!HBx+p_BB#Gm2~F z#$)oNqx_Jk+TIed`lT`Qn2?`H_|BIr5bR!uSQ>QnzMltQSIf|n-m>3c3Eq59)zkQDrq9!R*8TWQ9tj9elDlE?Y-#lCG>R-^yO}=O zc%=^l2`Vy+5+VqXe5NYu>m~N5U8rpSvC7R>^{H|~*NmfE{IBeeMDiTp9a8qz#eh2! z&<8yQ$mR~+npOTx-g2L(!g-JQ2&S7 z1w66!Bs{Tvy7*1dvktR|DsT`qyGVW2jQUnBJIS24_%azMW2WXud6UN8MAd=*j>+HG z_p#XS%;PE;pD75)GDatCkd@#>(A#Y+y=NKz^WE(HJ=b;1U9Ou!_#1G={_FbS8a|j~ z<0KbkO6ROWK7bHgUlaBC_sd-gjehHfTl}%Z*Uyl0q~0RUc~Bmcm)TzZXFfZ2^xK#m z72Adi3Z#+s!^Ry*pl!!mhvawTDjmEA3{G>e>#jReR3GyE;=mDp^Ih}x=iRDfD3iX< zCmJaJ0-va!y#1!PCv9w69wma2%JiQp&`@Rm`Z-M{o*U$FzYMu_thO0Ob84cZ)Hy_> zYBj|H_|3e|gXwEn8=GIkV>SL6_l9iiNQdRs;U`mx`RV92xDa@AOUVd($(E{!?}BHs zCKH(P8bDS~)kEvOT;KYO&A2#+#wk#dc9p#xcwErGS;%SatUJD+3rKIlml`D0%`_b$ zDlAF$q~e%`z}33<_{lr)!l!((XyDo!s85nr#xBWk6(#?&bw& z2yb^=H-aSI=os$ZxD3$Yy1$PGU{{6`UD^x;VIZXh(MVjSEH;c9fXKC5z@+iCm4Gr}7 zQi$cO-a!XOW{j90bpEFv^M-*$hB(`cuvM?qy1C+p@{Cc; ziGUC$9z6_)TnIhOE#)|I|x?Upp572i?T){DZ~*|L83PWr-bg*up$N;M)DA3-Y7{6+I#QPwn9t zA1Bk>8Ds7G$H4!ErStpo^UC*v?g4{Y0BC2={e9!?I)#mXp6KYsgZ_vF2vrsDZ<;jl zWIk_NuSGu`qN(<3#OCL1b*m8VOUAIs;uo{d727IAUysw}t?$oEuF}$}wz7N@d<+)8 z&mOuAocYW-5j)f9_3OWPZ%!VVh;v}mFsx8ZYQn{#S~UB3^n~*RM}aT5*CO@&vkXJs z-{=mEkUp>OKhEFoeS{|bZoPf>A6LTv;}idTzwn@UE#x4Hu|G^8|0(vxtNvHB+lhtJ z3dh0`|FVk{33y)mhbdhjMVR+F>3s)uG}#{SkpG3V0g+^E56*xH+6{tAYBk|pPtCq5 z^~`_#j^_KOO@@#|L981ow(pzHZJ~xltu+rlP2- zvPBR5{9c_ZK9uIurgggwv{s_yHic%=aLA#rurf1Vs6rEcQC$eX? zl}0a5hdHylE+QmQtP0jYjQ93`%enXGE9d&=cfWt+Yy0rcXc3s-*89`=riJU>h9cqz z;QFDh6p8Tqei{rNznT9Wc7B3%IqCUAtLN4w|42_YDiA1{G7?6-)$RvS)YyK^Gy4vP z2V7fjFC+clex`j=aCHoaB^(#wFH|uzJ8HRmNtDh3)6a7;%dC$s^*ZS%cZyoT@KOk&@`$SY3`4UIp zk{x;RDDhHn&a(2?k0VP57(~$Do%JAO9&9W!r$s^VcJ@i(1r!fPc5$2`3#7k+t%IhP zw=cquGn~=qnAuKMzXTwQY|1~*XVXu=opnD?_uG{3_~+36eG5-#m(v)x9G|SZIyEc2 z_29YXi+WtG5gf+?YY4(9MKZT51QIXM1_ADWW3ITF4vy9uaCYL1)3i3jN$`5++pGf6 z=f-`v##Q@!SbA~%=P398+DlLq+>Qb9?bi>@W94PY9|iR=fEpv!HWD@{@F_82^#9Tw zU=QId5c&R_{{4SmQMvs*U`ez9K$A@!(xQsbob%85_53*2&%TCa`%A<8Z_fG}4z$wM z4Ab?EL(2sNEFh+y{dWNampr}%4Ivm&41zY7|Ek#I&+fbVR{=8k?aMpS$7}J?`Qz&n zIwL_ZtmUXDU?hjJV0t+N-EQm{VO@W?#XV-hZF%PX`<_!Nqm)ieI!ClEHKK&8SJL;f zyd}B*KVJ;HLcSb&l78Pu{%61P@rA#}3-X`W7`Z3sP~I(UsuzPstox>MWai!`%F5qd z+>b4i*8l-c;;L15jb35Lxi6dQJe;l_-5lnMnDWZA6S>C514A$lV663cX)YyKj?uhk zuB;orE>+awu5p<8mS)U~hN9GJj^SJi46KU zuMYCV;EQI#uMUAY_0(0$8_QI4cV`wGEo=$$ua$>w)dz?rPLsT`$7eO=gPd~FBavyX zta*GiEgm7pBr>y8RS_|m5Y&oU&GISYiDDZ4j^~fOO*M1Y)kJ-a*23`N!N{ay>MznGRF@-7W_%!Gn>=)O{ds^ z(8K`Puy^6iv&J<7tEt=pq4xp7v*5t^-ZQ?kZ8el2Kfc3481D3IPEbG1lb<(%hYXXH zAR2*zr`=V$3@>2xkF%FtackZR@?Ctyk z8Hj=P7L~R0{tOSZ({CF@pR*6=KIyU-@=JZW#~6N(8){m|*N?aIcsFQ>OAnWG>GFnl z)|816U}*Li;a^pFkOr8*(T$PpbRExU)Z5P0iZM)CBe{(B#y{<$p93?A!}>Lc@YWLt zSwV@=3*WehhgS8Ho$*bj%A+dRk6Yg?tqG-o^}?ye`D;=Aq-GZaAlhFKvMNHi<`1&K z+JP7#DM21(4pAiIHjgN|LtQ*MU+R?Hf++)}P{q1&D${8N$6o8lAxQbI@>CD)@Aha( z&8R*%L5Hod!_&TF9cDunCR(Q{trsp{>&kGLyKCO1uaQ+O64^FAJzmeN-G}b?(fY=s z`}gI6=Gp9cBBWUYe6JzO7Gy*P5fCqF2rvVP2!Y6hATG=P^tyqCU?oGof&f)4jM_6aZ-Ew5*;#b|rcbTF5A4LXWoU}ed z6H7@lA)?5@+QX#coz1y3GGN;<&UoOyz*R{WDOglAP?oS+4lo`NybI)OIe*U;<};3# zwh9Us9yeQeN1QB|NHzSdQcOj6xYKlCfoT;i#Nx|tRl7F6HW%5gz?YH81 zADVVHCx+Tt@e@yzD00dD$>9++A>|s3gPankSEIhC?BD%Ro#vWoCVBT_<{?iS*82*X zPmBycqg}hXU_B$lY~(+!YxmY%LtxJ4$AMXW-|D?O>|4vO{>WV>>^+_B@+OCtUbwv^ z+AdsParkHtr24_QartU}@g)?LjM9`5;}|5Y0TD?n3{Xl*OidAM`)`NNeLYMs+@FV@ zwss0l9ud*`z++61X=fW~dzWXTIB#!N^ONa-%#T0S>B!(@FL2jsp6i1l4%Iw2R*AR{ zBau`3_aF)`DYo|9;rJc@MBqVs6@jpb2!MON$WW9d7^wh|DaVJLP%8fE5F^~JM1xIQ z*CIXwoRCk}M|EWtb(5oQZZ^GD^Z*DF4?5X`+vg2vtH#gS#*7;aM4y0i;7y6YS+Km0 zeYw1@@02GGM(gDqGo`trJmurcBBB&&!p*Y?PFvMmX~?3ka=62vFjO7n1$x6m(xr|+ zlsk*(Sb4za=flvNNQ+x+AwE8?q`wpp(6{ydFRHdymB{TlcJb1o{;QR>>DOJ$Uph0M z60naJ(PS8hz9N)G6=kJWfu@Kf7nfL3MNfY5nRQD95qHEk!&^fz?f3JBK}vy0g;8+; zLi?6b09Jwh)6Hn+|Dt;z_0w|WYk)WqAxiDPM{jeBuW)AR*U|KQ`=3_ggvXq!W9|FD z9M5sC>EX8zMe9DB(*99S=%=CnA*Ap5@9n$xPC3;;=WX!TQDWbPFiz|%yHwc0Wc(ap zbKaS|KM(Suj_&Z`5BjrAQ%O)nuGn0^pNqr-KqP(2UkJiYAaIpBfJhKY47;X&vN=cy zI5#6E!fKe4WJkl>;_!YyLg#;P(iVQ1?SQrOzS)%Jk~LNK*f$Z=QnMqq3t#|21l>S< zPLUgs0=Y~7S+eu4+{?YNF8Q0?-^gP);_l~kAE6RO5qkV5MX zB!NX2Gk{O${cg?~$Cq9AvM9RiCPZVV#hYzu8-`2=j4m}QDfpzKMC)0Kixwjk6S7x7 zANAhNp!#;qN7B^u>2U>!#XS1@`)_e#f+)o2ld=wtDk#JhQHj4>iZK(OwNtJ2pR@M- zJvi>O*ST>YK`h_JvpdqXN--Fx!q_ZPMLgO?*=)T2 zV&8fcMJtMq!VqS?iHwtsyEEij1E$gwuXJK-dFA4%TErcTU_h;^4y>)Q2u%bhsbUY+ zf74l*u0p_)MiT^TB?Kn|#f(vsL9oF7>_{)YQ;8WJz^Gl`{lu0H^1g}!ULtXds8kWw zDg{9R3IRj3D?o?^0)Geq4M2^cAL=NDL=f5_y*}MJWloXdrR9)st3}-_0o{#kfwmc+ z+tfWcoqE|^RPDQi6&7s@&YGCeO#Rm6)?(Xu4Zpx|742wMHsEU|nkw%SLvxnCY>$h9!nJvW96jmDg;!#htQ@Smt1`G2?d> zM})2}W@RNw%2u4E)z!+gc8pNtePlG8Z@ky3qg$rCIH<8#{6CdWXbSuNX*%r+Zs45UKLOZT%{ z(VeXfWhnX9_PRD+ZeVXXnCnzfLnwC0)0$Dkm?rpCqQu zf0r{zuI=%jPQVVgTHO3tpC}HkkV67JLA({ zg}ibBhSmGJ&!&l478B0z4_G%}YwDb{Xn*ialHj%yM1SD~S?StJ zhS&c2VgcC~Xi>F_bC=xw7n`@}{AaJ_=lfzEt! zV-SJL0+frD0wV=66-5-st|nB)R0L5)Q8Yx+OjC0*)KaLWma2;svesDA+LbkI!q!?` zjWQ_)m7t4BZ7peOYL?njwUrST*=cGj*2bt?Q3PPHMMVWwKc$u$wjHz5<_4Qa*$Nci zU*353VePY&S-^S_Gk0}E-Qa&|w?t@o7yeo>XLTY8bHA!Te_{jO_58j&9#71oo>HjK zajfm1^OOB_ic@DE|Doub?2RP)q|cU&_D;0jnzw%|OAO{8p|fZG-}+(3EjhO-!}0KT zde6M##_UwL(5ziwEF0*Ue2I(@ygNnCV%`_?R`wSSWt(4?!7Fd`f_G|2>yvb z6FWV>Zskn2S)o-TtPv;vFZd=k3YOIo1Ytfs<;dPT{Xfe=vTtR+_x-o+kg+%H-&V@e zU0GR6*ZyvU8CYE+?;1fAKYWBVnq9rG^d9>g^Jv!R!BxPKMB3 z6>0tu_=fd~lcQocg8Qyin@J>}lCof;0RdTf`CoD$#Fl|ZkJb-#@?00x^t4Kuk-lLcDy=~KJV`Gvh{~KpZTYxJ8j)9 zct#RIhv@&BP*ba`3u&YQa*ir}RMo24me0_}F-6kmv37$;+qR^0<$F*~k0uGf*(kWR`!WS)f=m z_1)N-lG^9LFj$MK1sIbMs34kZqKcxS>h$G9gfZgJ-W&a)#*gUBBW#!I20v_lgCe?*Y

    kXsd*u=)uW#e2pXqO8Q=~D(ywYjGQ{S1sm_jsv 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�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%0ApV#614G-!51TWr)_}Gg^^Z0Lz+M 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%0Asa{$9&UbBMGUn79;Pb|d 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

    Gf!Tj_jZG|d80nMt+w)!IQPzB+om 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%0DjveMg0Fq`Ic*gjQ_s% zt>KCX{IEam8bbXu-v*&c=ENrmAB-6WZ$HoKb(7tU*rV!91N`OQIkSLxkJ&C<65l;fD8h1$;LB=?HYBt27 zobtLQKD0rM1VZEnqfk(53>WHp{dV61hyG&OP6D>zX8LS%M+C-60QUg?qi5t5-a{;K!s}9 zbV7h>>-odE#LNWByd;QdtT2SaDB01&zIVDMC+iO{Zr50n*n@2)jFd*HMEsQmavwbA zqPj5FA7_>0IB3R$?iD%KjXpfP%i-XL`DH&6-ov*U*x`Fc7*rI)h=v;}P-G+v(Z{&H49wdqZIn#y ztSEA96Ae<#A<+%Yt6~S_M#72(ka-Ce5E3xolQ4{*Z}Sx=fk&vd))uHRFZVs%bTt#UO= z9`@R|e9&THIf?*me9T?;<;QYqr-1VAZQEokR0l%HwAn~W1_uVF zBl3kGC{7XOKuo9!W->A$Z@zM%gr!x4X((Zq2v`_K1R*6;L_f+m-^=`Tsl;@cpHiTA z;|7P67AB|VgT!N?(F z5|P4eJ#_4cA;h9$W&|X|dlp|b%pSeD0nmyes{nu-hCpgv@p%}x0*pZ5En-J92tpol z`QFmyDArRa%yd|a5y09cp!KrY4nVss|)|)BB>%tK&n8cN4(Odghk_z?O8&lfE7@xH@4qKQ-mhp$86ZGPW3?&# z{u&RU|xZX_&>JX7oa}yXamjeJljt+$Z)IONx zge2$;6D7bUS&GCQIm!cGr?`K8Ak;P~@?MN(`D9Q;Uqt(=1Ml?{kbq);ABZ|v&(i~s zaryona>*1+R>ehWsWwGlf45hRlWBq|3PO|-h@hBHb`D6WG5ov6YhSV*Iy@fdG1MIP zg1q$c`OqRXfJH0se9~aQY#^{dP<1EWE&T^y9 zsoqPZ>E;8(Z!t2L~CLI~NtgrthX90jRtRyb}(j2H{&7Y0Ud8(&LdhD@8#j=CXP zkz4z9%bYNlEt5<@1SX06sBlCwEh~iKj1De1+NKEmpf&ao{HD)3FOX8KyA$!=sC zCt5I0u__2>bB*2RMw2RKMLQA+^x>Br4o7!!xvw{FEOGZVbM+<2biGWINkJ|{qt0Yr z@B-4({*@-B325n^{;`ITr(o1r0mwXmJMGVkp$FAT_!RY2T+i+!MnQ~ZnkJ6Aj5CPb=giRT zL!LD)DG-|D0mdB@1PXzC@aJ&Dk`|w~STmQ+p_!Pn-Zx?gwFh7YPSl$uDyY)iP+v$E z2xekKFbY)&fjQWBoF&X~n-e@Ie#yR6&|CD)(&1+-m{y_F;9yLl+SIOe9w!kjSg z2B;xvX($e}5bW?~pelHC749dbXin^sEFv5tlmug2Bcwze%ZgeD>-?Ow7DtnS^0IE( z)L*w1^A!-<&SmmZ?;y*909?6^QM-_3 z0J2z;Gf+g0t)m+Hv^LzXyKYJd0U8yj)+MwrRzdDU)_a9;MT;`fSrXb?C8I)$i3Ft@ zR70UKI7h+Z={`V4uyXfs{2O{wZ*CsH4ex8Cvfy3VOo~~Jic;T7 z?I{}~icJuTW?0fJi3}l6->x=*sEXe>hvV*50mPJ0=unsY9qXxBqo!K!1z-SohO3$h zlAyMLqeKoN)K8<`cC3EYF?prX0bus znkOe@QvxC73&Q?XWB2Kh20_q5BK+f%nSu-l3=~;`8)_OhdG)762yFa%6fnkdq(T$3 zZ=SFrA+E=E_XoZxIhbzl2KS*R)mAcFcUiLw0kw?akpgBpr!%LXc{CW!AkYZ>-zTmv z1E931X4tl2sg|Y*BPT#D6w9D&UF(<>W&{Vq*_Q(k4!^W6A{xOzcD2k{ zqiQuImc^pAnnj3T_JvH9N+=pvl72`ZJlP>zjLvtnppD7G6mKvpD1wSAUtl2{AstGE zOsAB;uy0<#GayO?8dr`m_ZA1{!kaGaf(9`X9fe-J9wYgD&1h&VP=7eor-!S4OyXDm z@cgSaIkzMO2?7RSXSHdZE0)Gg!F*lLqcl-l^3E5H8GQm8X*ph%y5-Ryb8=E#$kE6BP@iI zWrf_+rfE3u#~U~(yG1FPl;B8dDmgPHZzSpyu>et_4nX4$&DOS@MZ*}zp`IjInP`l* zQPyE(MkbD$Q<-R7&CXv2DFKiU4qH0m38dRYZQV0pm0kRN99mTU09YBeYfEg+YNP|ELN-ZKiNFXkuR)G)>&KN55 znJh;+iEzq4t?XR8w|(=SJUMc1CbMn>8VFWNcv@=H#MAEgPXoqh24{FO1R!Uk*^7$6 zfNi;jfTPh$$adkBHs!ILceH>QF_YEj8YktLBuy(&-)oH+C4Va>v=>95o|8YEZ)vY# z5fj;$m##kzWKgLqt6q=wzvv$7|0VWXMP^ShZLx$Lo86kViM);X!iz4!V+R zIVM9eVLP7VF1UPkIL+$Kt`rBF+Dsv$jK%8mw$*QwG>**Q8_CdDF>YEbiH*BI9_xC@ z-F`dEUrM;XE}OWzY+IU(xy9R z4K5OfFjU_15Mhvnlhu=SqaB2{62S^m6m1(!+vNIJrOmZ+hgQ3$UI+}MfY$S%~LqSS9+DLF_2JTAoK*Rpo$6Q`GXnXoWhz7K)x>zb; z6Wn6sBw*jOn@q@oPZ582Cje+u&)9bZOG5=G0H?MBXn-7kR2GM~q*xO!Eat4f) z^5YnX2{_S$!ql`4^a2705yYku7j9^h5E1ZJ9Eta~2$@0}Zfx5nvQ1Z8V!6@WF88d+ zxtMD;aLd3z2T5XPV9X7Ts7x4ACa!UYX+S2WFtkV}9fJoTNRm*@#0j$u$i`9<8kLkY z6)h>;FbHM0#M5X*-S9Owksa3wkh_Y&$TaBW67U(nE?z7@@fYg4j;;P{lz zH|r$HNOO|SXt;51f)^4Da+qYpsV*`C$SW971P}-y79?>X29{I4a`c@XW<0p^ zb;+V2NrK}7K+z@fdpD@h&)!cuo2Az%>bepp(j}1Ak~MVK66Z@qYBhuK+@gSsiR6tj zPYytK(Zco@7nBp8V^?A*sO`mupx*R4mrSFDvRg13(WWF(N+hwSQY|TM6{yz8(-^Fc zB?*x!9pU6a^8juROOT+9ipYq_a>-8G#WxCWGP=ceoa9=i96>LNy+$%tEEWSY;AJy8 zge+{L#1kM>5+vel*avh?aP#4D@Tw1OtUwTE353KcmQF!b^s!Cd*Ij8%T-er1sM}ZP zF3Wp!k|fAq}T8OoF8v;8fhV{;oG;*(D?(wuLAf=x>q8WZV?ULKfaV_Py4EJ_L zuI|yb&hD+#5|b&Dce~jh?YTfza-G*TT-la@)+(A!Eh!e!D3LalQsa}iJ-yZ;=Wblw zw>!G-r1Y2Da_iJNrSJ=b~L7~R{Tm{J=uT4cMp6(Y^Vk z+V{FGn^MwCWY(nFSj@Y0YTUNGw|Bj{eLNL153U3Cg}?qOc*utuoXd%3BV za@Q>PUC%w;+e`wyx{zd;g;5hG1_nipKx*MxYlM5v?oRDsl8-KvPg-_P?Oom333TY4 z+-f&5S2Me!6q1*_o?Wr~x$*PYz0+Rnyc~x+H*nmUXG@?pQq)BmghXKDIs;nM5at+R zIcWeXRWcBRFcVtP2D~sTYhA4I(Sf4`bgkMr*iT15rqE35CMfB5qn_&oU?0Nyemr=e zW_IGxgks1sx_v^_onD4rLo-%9X-N0Vlp=E|A%r#DQkOl3P8PL5(GdHiKku zDEZeSMX_#jvQ=Mw+jl*A>!$MCsci|t6C_~*M3RKl31SkrZ*_K_T#K0P-O}>xFdHqiS0XfPM$xH5V_^(tCXko{IWaE{*N_m% z@Gpssi z&Y~i5cnf%5Su5fFj;PHCKgR<$NrxYwn`?#hFaz5`Q%am3txQAe9mB4T83KPNA7xYr zDbHgL-NQ!M+nMuDBHfpS@bxya!|hG`yRaL8!-(1l`#D1IOdJl}0VCkZq%tfXe|8^J zeZxqcVF9BhN>HeY)&SUzN8xY$o)ZX!Xj9uNr*Qq=%yL)nfXGscK%gpwrBKtD9_?T) zm|dyrbZwC-7`)f>{>@i;uZaX&ssxZiLO}5-X|%r%)7ScbkMlm3^z;5GLGHG4DAt}Y zhPCkiimA$y5_55LhSTazD@ihsK2W zAD`g{l@Im%ehq$Te+N+uKabE&eFN($FhM|fKUfdOQkDJ69+oPhqE$!iQgrXvhIJk)*)28In;b2v|mCB!Gx% zL^sMD#h3{HsLH@J!g2tIsYs3sr`R;~PFtCNF+X&~yZqk$pOfB)$3F2b@a$U2F9L}d z2&y)Y;i=hsc>F>1%S}x}A0mN1@qh!`e@Y06i2;6``JU#xkbAJgsDn^q9?co6W@7=o zGLfCU3H9Z{$r=J+a}1j?=RiaTNvK$XDukdSR+QmAWJ8di#BrFmgIZVKsqQ4Cf&ikJ zAs^d?-CRRWN!W7+6!PQ;4VKU?37FNzkyhk6cs>u*6$iwMgVN>fWyv(>ySeGVAe$(O z?K;Jbk`f-{G#_|t0NEl9HiaOmJI+s$aSh_&>oAlx2)l)SPvichO))eF=bb+fcjSCe zU&qZ4piol8P)fx~Ap~EV|MC6Wd8eE{-Xi+?oH~=+7K#`<`^552>=y7j08WHiAL1MM z0086jEYK(QJqF*0)%gH>&Oi^(-SX~=5R4=9GYpUu)B_lVRDl5Yefb52um4#4fYKhUAFvbb7t#uk%fE&i<@ezGTF}GuJ%Jz}Nl_*&ror+O`P_nG zh`HL39<1*uk|{tK*`Nc@t_4&%U-F~6{!oOFhRt|R#mk3%tX{9#ONErq4eK_`YaH3V z?1(+cpA1)1T;^rgg%`TCvM;TR-xf4#$(3K1c5cR<0tr#7Vnzul8WN%?6R;<*!o%Um ziQ$FO%Wun?etl}rNk}2ei3E@%C>j_RJ%XpgNHP-v&vrG&@ z8$X7f0VF|Al{pOuo@B4vqe<$(oRFE6+&IDO{Jxc@ftU(#5BZIv8fW~yCy`$>m_F$7 z;c=qj;CxvB3-J#V(4yxM$g&4;bx;)B0eVQ-6;368U+u?u;z)8buv%!CB#9^FVSyVg z8!<5Q*1i1e#}5Il=P7hxOJ9sGq13sS08*sUT-SW-)6`#|t$g>(1*Dbl{WkTrLPd}c zzsN07x58iRV#bCjss>VW-+##QRKzuyK7=o{G6&JUmi^D??T0PTTXI}ap=R=vJvjcq zvm6|J{AzO~O2k82*NuUS?6;#r8r@0v!LE7I3&9GUgkv;J)o9Y78S3BwcZc46WBoq- zb*xk6A8|kwlmC>CNpln!gRxBS2ON)v zjamq%pok0k=+kQsr9m(m8bOcScy=-g9Ci~@HXhVl_D8en`avXA|{>wxg97B#okLUIqo%yK7(#+mG`lfxq`(7D>? zxfNjTSWOFI7Ad8rg@o9_pDGY=rcouFCoB}WzKb~F(QVr#wIyrrKf3-&wyIa z*3LIJRM6cL-^P8MU=BGh2TPt=%P`SoWwJ~fFAy1Q-x>|_?@q1BxpKYg*C-0b8BDSa zTS74oBFNJO#pr-T5vN80EDimb*BOB{Ge-dg4M4WK-Ol2)8G)5$7e#dcz+*Due7V|# zUWt%fBA0v3`;Icb(|fuYh-NZYm16NQS;`yhS~Y7Kcc-0GCkD7RH>s$Mkckmz5=}FF zZs!VR$0iub#hP?p3^1GCJ7kw?B0)4zh)|48%g~o1q1m|{v$HU^BnKhnh!mmSSB28M zlTkA9huR4th@hbA|3;#X+tkt)Hi#;-XxseorW+l}BowtJBWBJm z8dn-Y0+#G~9}mpv5g)I%VscFQXx6M%<<7O)CSsD3TFQkYhN>48!07$HB9x0r(yaqE znvrZXM8shlq>(06iJ_>G0*AVWfkW{J-&yzpwJWk zHAs4gV*14@Y_$4vX0)sCZ2lCDMX3yC6`~3XK&X{sQ$wecVhwynQS~5?oMimHPw5AF zh~$8pVW}^e9^np?>p>GF63~4R_kv@g@Vv~uleJuTH@RJ#Wf+mufnk|E{famVlKMB)z6W`bIZ{U81yu|`|XF%9KYxy2RuVVUb^3c&8 zAf$vK1c*PG!Eha4{z~1_4~S70-6n*m}zRg^j zNKVEsW0_+HJ#V(&-tz8I^46KC_u2I7_Iqn)tG4@nb4_<1z0}@y%}=&(kA2;j8uz`S z@p;wBx%b`c-Rqv9eIFOEP1n2U-S58Ly|JbAbAYYUsy)td@4fB5dGEWp*L}U-uHC-u zr?0sC>aFjv4*L4dqL-z2Hf;0LLGdIKB&wwVJ!x&*TPO!EW9QUmRY|w5JDtH=YI}9l zw(mLLW_#}K_HkarHe^u&MG7MB?#$=bc)Y6BV#_mID5Qto(wBknr?0o&@^!Xr@3%kz z1>0X|-tzBvwY|OXc609w9OvElH(Skno!NHx+3e4~xc~qMzKQd5tlweX<`*~J?sUG* z+tQk?000J`Y_aW^ytjPwueRH5zV_Fk004bDZ>qOXlVg008yx z9_M#=rj=Dn004dWzCONsI>&CSySs0200V*5sZym-00Zx)d)x26>u0K=eZK4f0C?ws z9)UmrpeRy+04M^000AlhC@7#+04Sg;fB*;H00H&iM}4q6J@6a0`Ofogedq$+;i~q4 z95-V$*h5YLA=9BlSo`kV;0L`$^;TAlaD5y-QhV=E9z6$I4?Dm)a*+S<2cA=PA8zW4) z-*;V`C`a45hu>anD_J)>dA$cuHlF$CJOM@E45Y@jSfG#r8I`tdW9q0Y&0>eD=vP6Y zJKGy+wZ7waL9JFx7pgitBP&ZqGgT&yv7_zRTUnBotUYH~Ohy0?N_(?*qiknw9RN`8 zFD?SE(%2}OvZa&?t65SrRe_bMjjLNVW*T4%KxhC1Y|sq=A_9^M8(zVxQOTP|S~DtP zW}rsctlMjAeKE+UrIZR(g#ZH0pw`-Kt(Me>Kmr891k@DrL8go}&;*1dB*XwF znI<(E0u=o;hLNBEG{Qk3fB^&q(s=~+Fq73kQ`E?hP#ORv(nLUkGzb$DLqy4`f?*W> z5@R($WCA3F1QRK=nw}8`nrJ2(Ns@k=sPy$Rjj5mji6R8h6DC45VGuObsrqT<854S% zjVGuy0sr`gq=%G&>+;DDKi|jr-@%JztNqEDm|Sa?sH%S3aAjkr>eAfJE|TegH%b{q zZP}I!B4SphRdK+$qK)1fW(9QQ(MqgMCA76}S_mdtiE=AxP!^_<8FZIc)s~_-H!W95 za>MvLX`9%llPp=7UBMYmLPrv%8)#c%T9u}mWMPoaYN4P3ml$x_EEW_5s6d6#GZO!8 z*=4I2cOEyr2$~9oyl&=-nj0)q(M%~vL8}cqfvZql87Qr>La59YK@kLqN+y}85GlHe z)WusM#H%YcXE%h_&A_IeYS1;ADAPr`K_)qow995=V;YMy9XW+EnZ+rh?a7WaX{eFQ z4Jw9{`?ogc;EbWRjZ)Vxvc$&PIfhoM4pxgtDXlB4nM{Dom15YfuuAf|L^n-L+mc1c zqH%`~K|$RrDXTLZqYUFtv};#Tb&#f8EgUViaan9qj*v>(QM9t9(qov=HA7PoqExXQ zrBxMEETFN7>WUPiTxk|^)L6~k0*u>TSz~UgB3UpDDPSvL*r`h~EKO?Qk`Ps}wXmhK z$|ILKDWyy)H5_o>WkTU;yG`njLWX6;#<_tEDnUgcrtMKRQ){hgVWf&p!oy8?Kv7mG zECo_13PlM3i~SmE5=jXaB3g<<0w1J7RcZ+&nuRQi2qc<`Mr1&&f*^>n6a|AApo$_P zt7M3Qj0+MiDP&YdQ3b}q5n&j`j1`g$RD#GTC?gEY7zhg@ARx^QB^b?8#vrU|O29!C zRxA}61QB5oivbcNIP1{I8rI&Jyz0$4nPGxNt}d*@DLC1z(Nts7wxhJx1rupdQ9%_8l!hV;X+|w% z)x#BGr)_ZoU}Kpni6eC8?l~f;>f&OVvCSB^GV3Xg!eoVob*mZIS*f^D!sAeK#LbyE zN^C<^$`%4_HL(mfP6~0L(U@Gav5;WPMXe$>+bRIjt+lP7lo5>(OU0Rxr7Q~=vbqq` zVi5+s7+ehja||EanY>PpqK%W)S4khG}56eX{myuh#-Ztc7Vaw^EX?X zplZ`dc4X5swwrDfWvr$c+zWD30Jb2Bg(vc6&6_#Q%xR*bWt<9J$~&;kjf_ClWmHp>Z8ENMKsGHF6n- zVN&f1o3^!}vCJ+vKMu$sE((YS=JRy#?W}`G1qjHU` zOm0jr7g%pJn9ETITg(H=rPM1mQwnN~AWwc7tKs25hkD(gVaOfuVTFmk4~n!2jn4KoaFv@&G~qcNacssh|#DGE;kVz0^5g>?kl_O46ILj3iZ5vJQ?$cDd8Vaajj50w9EFnqT zMUiL)3W#8b2#zE~#@05L!BNb}uIVoKZtQaD6-Q1*!q;e#m5yDw4pQwn4QNLS)vp(B zXlpX(4Foi$vX?0_atIxokgI4|DaKrCfP_LrNEm=bGyw{s0g`0`6hb7(!cyCI_#!$% z1sEYphKA+^;W*86bvT);nsF^ITBtc;iq@MD5B6| zDsiF|6l97f*~zO%gx*^y-5GMW*>`J+8$niFw#BARHEIyzMI)@oFx@9ZL|{s`kpSdE z+9ganVh{}wT~cL1ByNQh8E^vIB37l-aT;4oY$}ZlR9RV6%3|dm#M2X{(Y}sNrm;&X zHcC{dGMSkvPRzQqci({Ha+_4(h+&iy~>;Qfpb*3-wG zcco}bKcB!Wz3rpiMqMjosHR`etBd6 zq&zea(1lEa5fKrDQ!1#>?vN5(Bp2wi8MJ`Yb>4YTS`E?WY^yeKF7Y9PD%}#!p6f-qtNwhqq7m(5=xs z=dg#>pMJew+!i~5&d*KRqp_W?r630U84w~XqPYLuc)65?^PaVk_6ouNZ3XtmonqTzae3_1T2xtc^oIz z|A`Ljq&m0j!$H#j$sclj70>;;7R6-c%M>u7p=V|l#*46rv-Qm}5e#MUB2F;P)dpy_dz{Bt9 zL+0hAkP7*7f%z+=M~Eyah9;F1b^0|R2bkwvqD;Q(hvl|2$^}yOdPGf(qwU2=53rBp z3vBf|aG^Uc5eC9S$;7hsyw+8F(k>xs37Npn22x|^@LC3BE-Z&9Z)w$JafulF-;@0t zx`6F-1@{GoygybAw!3(KzwMr@+!8o0S$_UrQs|R`+nMd(7>Dxf z%`(SGYPl30W^Mo`ObZv@>r6M_7QZJRBn0s=Wp*NzV$;4^wmrlQJ^oumI&%j1_O_Xs z`|Dq*a5{4stn`RYjFY?)Lk1BR3mM zrfjB{RZN>~p?6RTL>%np#58-iu8#1wN@jXy4+?7Dmx`fbZV?TMKr3a}3<6p4TC{ z>weeW=>C`b=P|cGxAMNb*CG0teo^OZbotmjGRO!kbRmo!d|HozaWi=U4^nXipzoeM zr>xKve0r#3(1hwyjFIdp!~#bmmQa2D-K`U7g^5=V984M%NbG%;iq00wjO_-ir!q`k zu3Ii3sefrZus9qUx+13&Fb>QryC^GN7;Juc3K(6sL5gdK$xfe1t&uOz?O25o4}GW!l8HRX(fyUTg)oB~szw%5YpUlaWE31MAUSEH zQm3!I+I+CY+$_~<;l!1-RC`C?M!O5x@9azP!OGKIN3l@QG zyCe@XGzxA7g7w}HF6ZN1m={&qR2Di6qn&x(!d|W%4EtiWueIJy5Ihyg=;NvMIEIug zN2z|^iQFGA6hJEEZTm92E!5!FOj;vphAB)tZ$nd+TqkC!$|o6m38CDDOq()`8O}Z! z)B=CSiIyg;Hu|}aEHVtY3ukIeva__%V;m!7SvC8@kx`)BS?shRe5Pt8U2+j&F_b$j zfMLknR^ZHtzcmT>U(}#EIzsfI8lsSdd`qDtVhIQkNKhEdAW$b>)&O^1|LAg^V~6my zkv;KJHk1g(tIfD@BRDJ1T=of;IJX?42L%a+b_Hcam!d-c56_+-ml*U;BvC<8hc=M( zv=&qkv0PkH`&;oZ`+r$js3K%mmHirmN-H)4210H$W~)25=}@tW0PRjCYy*-IfRGw& zE4EHDZ(6w|CnV9bG`7<*!6>B0!JSrTP-PxjRHKD7$WkcImMpaD=VC1H+71%ybKn^lq zpA~N=Vj?OsE$N>cRfD3$yqGnRkTi%C0+R$T(wkXPC&uNoKM?w&=0yl@-;Q5YAp<`j zh|jk`e!#zOPD0r8UU)G`<)EU8Lw*tj2vDk}VTk?te{}nsm>^Aoa6sH1Y92LHv_SqBZhk+7 zRI!Ql5kQGFtG>Ip0t$8?x`4)k=)VRG)IsPd1_phJT!kB>>mY$RU(Hotpwr+6$|UyAZgi4 ze->u$ItX^KWj3|b?0t@w+Z_aJ=@BR+lTdF*ZJT~5HH-=B(m2>SMHb*DJKCZJkT&ZA zH6m%GNg{}dU1VMyq7~n8H%`Gw6dF#KMq|P82w*!0yk%y?p|l~yQecNM+WF%iS+=K< zsW_{o&jvI{CPz=Rw{zo9Tv-d#KIROAXFbkJoaCJ`bE(Y>(BQt|&s~#Tt&VXZf`#`K zP1^H`-Z^&A!wqWb-Nxu#hDrguk+p8j7qSxIiL->}(Pkcl>ElM)H~HQ(d>#AovDaI1 zt46G_`%;)KIl0@eW44bwv#Z~ZF}}?+uC!NAoAz@9li>-fBa%EnTp?D(EF_=~TVT~s4+2KnM3S-^%~bNYww9R9 zHP2l7>bN&7i-wLQ2=^NtF8rhK$-4*|9zYtZUxHUV1oyLVkLy+m7d{k~&$o@Lb@A@E zPMj*v7*mzUZwT#tcGiS8S3P6 zliR}Ov4T6Q4g?RykaGp=!kp+Hsyo_2FqA;scY#O(ng^-|z831d6$!ju2m^!9sF+IF z;c?7}J3_F1Z>XBGE1sCzIKzg#os59N6d|oj-ffj6m!Tj>I9(r6y^RL+sv~sakZ>nQ zkRegYCY214vZ>M40r<25X(7Vw!Q_VeEcQ>F*#BI;j8za2Crhw4Nr@gYsoiylK^t6) z5rjJ}@%Lq!ftNs&3Zj2m`ZO2Nv4{|S&wT85QFqhpM7qraw)*fy0EhlYBZ(_R8%OED?OT2pndniR ztD89l^6Q~9VISi&5&{B%V?<$Fp#IK|yUkbZ{8La!oo98)_6W3;wV&$rEX*IC;vVNc z-nWTFFH+P+NP%AiVdxC;_YT__AD#SYdA0wi@O9mGN$pXli6gy-=tt^t^$~|*`fGUk z_$52!tzd=7w=jeviJq~xnE>hvKptc&Pce^d-M!l>_EHHTF9Xx=4)VUl_YY_F&IMS% zpibC3GO~pv{{+H3RA^@#Z0Z1CLZ#lw-|c4KSO`64dfG8c#6c2?YCtp^Bo;pkA2ARt zekU_(QW4NN??+Jway{qRP+3FS{H^SXL*|skmAa`C>OYk;^QMGJ?#zh-$y zqRS;D6t4MZAfMAA{=eNsW;kPz9rgR)_SfJo;lNxFL3kv8=|MXvf=Ii9A-$h*$IG|P z&h`oSKV^%13}h2Ego{vcux_<7ZPK}a=jn$N?#{l?pMv{nD6su0Pi|UF7Z=iGUAx^l zdwYDG$VfapzH*R5&T}-#;^S_+YJW`Z_pCSjem&`D#30OBTS1qWrJw>2u-TzIZCC8) z1meGJyQP+Z-yqWj7pxm=4c;YcwH9mwQe2t=q>lFGVdA85g}PQ>w?Y4nesa(Huk}A< z;ilQ~_Uipae?D0@j&EF2!U+U{M3@gQnqfqZLN+T4_5L;yKCFr@rM8kqz=gdvr>z;yhY1fRP0WQQ1wmh2G7xm1 z)Xl4*pfkl01_yLkKqw9W#Cuo>j1HUC}`+g#hh-T zY!Z=~MhHjcgpy+ff+6<_FcKwH{Vi3B7n!lVlYQZQdDeK9@Azu>L^>IG#c{7Gs6yvx z@;7dM8mxHW~a55Iuc+|s(N z6a;PIsie93ALI0~mNZBh!GvOe797brm96f@QKm!(r}sh4sJJmiW`a@gm8sh!UCIcj zb80n1@`b~^LIenaQ4t6bGWCdZHge#;3>AafzWKus6zGQc6W_haN+^LKqS)hqw|LtS zSQ2b`h1RBneHqbG&8`XrNFYQ+Koux(wE&Kcd5YU-Z?I_2{eFH+7H{RnFXIF8&wb~! zw*AbVspONsNnqC;=RWb+DRT8JIz19Y$o|gA?`P=BrOb5RRNdg_VotLnFnZ+PoBnL7< zwmgbEAmJOaCV_Ji_2huHH+Z6P-}cab_hdzb>}bV8zKQ_CFBgO(`7te(l!d8(VR!Zm ze65o&e(lB_sa6~F`=Ymxq*R5WbLJESS({7uO9>sUatSIgp?p3clzn#?dKxv%K_C34 z=TuP$n4nh@@#COl?*vrD-omkas941U(2Kkg2^T?v-3_@N2a%aFHVY+j*3Z*_Ru+th zrYS6Rwwv_Jd_y*iM~#}qf4>s49^%_sI>TsX16pEm-@9^UjPIPNe|}j>B=rjEq*J7? ztl7Q(LaQ0%$dqWZLsl7wTQ{E_(|Y6Qe%<`X2D~xUt|9r+mnx%C=q%_DDNH+MPd zCfU)S^^d-KT9VKyZS;uaT?z#6Z^w}Tu-nnczPEwr-ty&gEAVF2BFtJlEq_Pep-50XfjI+xxMP=r_Ip3d8`i_e1tvQT%?q__PsNAV4u zH4me;6+QFm{lA-hvMNm@^aMSCsFOp#s*mI={+HQ)YLG}Bngk*8?2+y*h=#4Il6SWoJtA`vxkv>#zCni|8f6E~ z|I%y7WdjF`O7w$Xe`&y`H}(9)*K6--lwcNsl{N+zq$z4M79skt+kJea7$g42AL2PV zey(!gb_Li2=r&Lg1}o{T*{;_5^K>#9hDu4jNI@*iRZD*t@#o3tQh~@2zU>9J3Us4v zSx)bp33K6{A^!iL7tT<3>6%1RBjzwkHS@`yw6Mm$RyDknuyv^lBoj~yjNT|3?pe!^ zQrBPC_7eQ9LjgmVEr#M9dEb(#$2Cq$KkqEr2B>RGG(0&|pdfzxXREv8>u#1myBluX z>nr@s93_-00a({l`rt)>wmmxW{ie@_UsmF)t&i5I3KfsD{D!v&wQFb_3UYwX z8PBW;mIxrDIfAVJTT6OALXlwk>=WGE5P^WumTDQu2SKnP%Ioj7`vb3_0VsB!G8~cO zojbvh+%&g9$>UcohJ^mX3itH)@8ZF!zPi~9Fe)yY$!?LvD=`Zvn^?OwbByrp8@aRf zrutnWTho%4&S~G6lEol=1c0(l+x??8hQIcl>@=ETS-0og3+f{(JZ%f}xi%%cV$~rZ z^459(vNElR%nUg&iGSI1UEeSF=)qRh6{&Iod|w=7%WPb7?AtHd`&#DZ4|siF+wY%= z{Ml&UC%4p0q< zY~wdGLedlAsz=-p7N`8*Y-)h@GTV#-1`P(E9LWRYkonlbcA*(Of7wGL6bZ*F2Z@k> zDdyGr{(&5Hgmlv8C~W!H&a|U8ehYv>ml6|)}$&&x!=+f@R!ZezRcq} z+N+k;>2rH}bg)4LktT{brm0`9Q;x$T4)C zlcAK>@_=%JA<+%Pno6i()mH>;=Q(&Grs0ADrrlFDL{^D3?Ewu|2;qbo$;?r4&IW7y znjqGti9^^!IaC;A5sPe4P^VfOY+dh2}f7lV|3+vK(>!9@x2C5%s9?Hf3EFtk> zS#5Vnph92IKPRb841uF!A7o$CqX1-OKrAqn0wM%T-Qeqa+-7>hzyxd}1Xh6}T!(MC zxdZ#4T>}0{j2@@9{d=_=j|>gFhGS>VJz$U(Q3Jyd=|TFs)zW(%5oM%CX(jwj79k27 zQVi|!|3Bxkh<+AQ{@hEid=d-D$t8Zi!h28Q$z$i&thaYv`SM74j-|+K$0vX7R5q%c zbzJG(NX2-#aEi^d&$F+}@z33c`gP9p3SA>Nife?FbxRvo-M zc?0F_@cXhrOx36mv=9J|*?b}DE}LeUq#^VP{_1i5>I_3&0eSMze%w>`vs&8rLp0r4Zh;%8y@VSKZ}0ED-{qspg&ws z#tEz{E8+j~;H)T9q@ zWdyEg@fGI*osS&#=H4dDk3BaIw>R$XPwnc2AEh`Y)8IP4SVZ7jXq|oQrMj46u1O4) z{r&szMY#1biUmZ-*$i!HSFz^$Yv-e>+Ug%(FCqJdBB*4INo^ZsAx#9z#s|(kIM89Q zYi(>V-krIZ=~tgkv|6(apbA=N&gcVShWE+J9lkYvPg>hsXkHRt#XT)W{!|_Ou)w1A zVk1wa(RHT3b7!wC>wYP-pOya2KdXMFXPcx&a?nojrK@yU4%~2UJSy9?;h1NKseeDm z$N1y>|6jlB_v`-u-$9XQm#{52)GuJYoukwo2`w~(Fcbn1eD6x1nfNtdsTbDhm=-xw zpZee|{47JQjlnwNCN6T)E?aszt-aJgA`cBA;FEK6Kkiy|{EF6wjsdt6+7(jq?O{Z-`%@VQ|Xj?5?F~GLWu}s+t(L$!BR2(LRt-aOb z%?PzMI3!!FSy(X`9$xG{2a2YgHm=523EI)x~F(y4QB4dve;6$QZ1(FzGb{B#$8<%Y-UxM zs%NQ|E@l}N@0^+4qsnPTBx9yYEQ+)0=y3U=O_uJqiT(LtACAvIE^g~My>t7M0!jn1MIF#F zgPSjl=W`t8`ScfDnjrB$$?IfJ%vi_oDRD|FT!uSg{Ei!NrJMI;mj0YOd+zPJz#1T` zpicstB#33_oOEl4BfN@k@|^l{;44t8jYb-O##!ucQQkYn@kQm5eoL}UkYU9O%Vi_W zW`Ks^6pSO=S~~@xgQ=Fg59&UQ9!!fs&F{#MX&es0eFP1U{!*zV6dHlLjTT|d4m&`i zr`;@v?lDdJcf==lnuT)@E z<(>XfIX%x$ONS%A6m?rXTP1$ zyaG0pJ6G%1dh@8(F8(pJ1>bsjD17ah1mE1KgVpZuo!${XV30pG2m@TW?tSmzkSG0f zvUhaaU5*bQY4-V_=cZCt40)eiHOG%60GxRZh*+ZvF?ECByV*9X>V6^oE6&}cTOOYA%O+HATGxQYcyqV-s>a$i;>&Ti zm!IkFVO*!XW?0TO`|i`XXT7J{zk5P?b6#7lZ@akPb^(8$2(`BX`slal9yC>$1~V02 zwTnwnM@1Ce)P@^HHx?%5eTWEODgbJI(K7ep{&v8)h@ISb5?#`8N@v?e_KG=q4*bnJC(0>4ch9Je$#xyi2<|G_2rB#h7eOq1ha`rUJ5xv zUvynYjnZ0ci%k=-P&TG~XaSRjhbaMunMdwdjq5H$GQoYKXkuMyOS5q3>8_)eopF-y zNW!Wd4F$kupd&@SzVLy_u8QgR5`qc|&y%@&hu{GM!XhNWX@+*0{_F=n^!?gOSQ5c# zB0nO#IOM3vn{I>{rufJm%#v^_E`x4lmeFlcADX04M4EKn6NGK7_5K}Kr5Z2jWH&jtrWBO`O6jXd21XqG_Zekd1gsJK3FSE zbnE~F{1A#t9-(21d8N`?lH*9BP{Id$9M3~arDZ7{Rqk=GRJ@hkLiYD#tmr*JI)%Nu zS7v7#DX|Ic+aAn}wCT4IpkLp&_mTP%xP9ICrJ?K%7eVc7 zdN2Q$1grC^A6%ju_muqka`)a2puG~50L4D#dg%ri zUh9;i&o9s^SMxH%nzigtW%g@FZd>)&e~ZU~-{rT{ZKP~-L^FV`19oThR&4HRnyxqHWxx?m+B94>E&A34)2xzIm%} z=&SxG@VorA>i9%B;5W}dZ*Y#6YcJJsVnSHI*6otB`F>vn+Cd*`O2s-${_>PsmHn*n z+O_NW67Dy>M9T$!*7XNF?4#}QdPHVICEm-vKNdS;v$DS*tyze^b=tYvY&`w0xh zp)KD-^07aZ43Fda=zd6M|D(t6SZ6J6yg1G=9$RUohlLzbQuz!Zu~!4nrMb|Jw*W<^TAuO z17F&R<3G<3;2#9GhwwEGm!<}%atiLmFGq6t&_vMTM@$_8-WJO zfO#_{6d6qCg&^Oe76S7>6RH)Y@okT**|lZ@(qO^fOkdARFH1K08l{n>o@hm$#t>-j znEj_0FZ^U*2$$&tv=sXM zwJaTGkdxt{6p}r}SpqPR6y!puXRsJQ0fzd{qry6TD{3Ye*M2-BU+fzW=hI+p8%!1S z6eitAWM6BJtpn!@SwS6p$A!7%M?j}`WE2QS->;%}59`+0C&jv?F4b$iwTq`NXRRUp ze$QWTPE;|+Du0k9f_V_SHqcZN#*>FZesHfeoa;zv7zd0V9)u4X>*(|UtL!*UM8&PT z+tlEMi@~6#-=)SGG8WoMKt?$~_Qn=~oSK>shh6c&_~+L4G)U`=I71aCfEkCGe&qmu za8PgxB|wMr?C%D;j{xGrWB2qCcz6g{9q_!ulEu6U*p|b!y?D+6uswN0663$8cMeq& zfiADqb_Wb>Y z`0x9t-jwQuHL?d$_@NxtBI$pdJ`vn>K=M5qc@fjs*Nza@F7^iSRY%+TSQ(S(EDm9e zTTj>T`Txbr!e|sM$F5RJC_x^CGysEELRZ)EupgcqEOq?`;6T#jV@C@M9AwYaT}i}o zY(VIOnXZ3Lr}C}Dm4;>!<}|Ic6s?gE1mOV!&{YWl5~3wUI99ORp+|NAuq6wCN3+83 zD`JI!>~UndTofc^n=$@S<*VPNQvc7`Qh$NoA*+zM;Vrp~mI03fqtxhwp>mEIN)0_q zh9Y%X@Au%A}qpTWOJ>G(*KXQZB}ofCV&3AB)58}>aMv4B7=w~zrV z9jyeB)~P<_a5$y=5QRhO*ps{acBld7Ss11ezr_VY5z;gey9H86{~%{_PG9lv=-7X~ z5DBS*t3SEz4nSEVC3&Zgs!0Y#W*L0r6Wg-n&AzAnzIf<6j%L1@)FTjQnM~81` zpR$JGzaNWgG!%|(Qfo#Ebx)?WV6YeGmp#}+jt%-y$V8|{f?1zn{{h}Ir2s&<1+TG> z%ET^#CXx;cO3emH1Zn>3A8<)4fe%;zWQ0-OV|J4LJnb$np$q*pEq5xH3jTCTJDDN^ z(dbAWod6QEyA1-+<;6hN$|Ql=!y19AdWP)J^zCokcI+v{Ap`q({@i(a?I-iEtn_n~ zV%GcohWX5c$NX7a8I$yt5RBaWem(yW_scl+nEHFq-{2cKx8c^m?ZlyXpU2z8|G|O| zxfS_;!T2Fz(kfmk5BMS`PyhiliXsE-h@Z4XIQt$P?nW%WbV~t*MGyIk1wdp|qy$Ge zj!OkI^r2s>Dk=9wJPu!{U-kpoS|;>lj<5fgddvKMq?LZX00he$)5olMLJ`XG7h$jv z@9{O4&!T_BG?R*RHkHXRwTavR^g@Z@>zMm>-zxL?TtS zO2uHy(^GlM+K~iYI(NdXPr@c5S*SaaEazUz8rYxra920bTlFG92|JPyIu;d@9us7hHmF(gkW&RJ@$Kwd zN%Fl`=71{|5^hl-dV!;IKhBXI)GT>?5QI5`=^dJy#$d?3i!7U;9xX7+5Pmuq21}=Z)xT=f7TwRi7I9?%bfWg|xg_yoh3TNE#%G!XQpG zAJZ-D9Uz=^k)sn|Ok*qnm-d=^Ogca)`O_$lmK{ zw~97`VmX5HMS%NRG15mt!-h2!nqfY1o})3E`DJ~KE;AYl(UpV|i4IK;*vc|jLg zouY?~PlP0CjdHnx{-&~IQ z#;`w`TD3rULlVhy7`X|x-}AJRCt#>fHP5Drj9-}0n0h>|XI zF4sF}KzT-@b&mF>gjHkFSGg7bExYAVa`dplVEiu`ih6o4@av9#kI&Zto1_U8+6M?a z$8CPgCgec8Oz=@TbEOKvCxo`lf=Ym}>iGOW`sCpcst>%gpQV$>e%vp%2=~p*5XNB< z(19d~T2@uQeIn}zoHB+`YCh2liaj7#ZZ^6@f*c|qbDTK9@yfT4)i^=xIZm*7 zr}ODAgpzm|8{)tZy)h15vq|p2#OQ~gG0UC)76JGmPyBr-A_pi*_B^^v1nVDd{A{bV zcaa_tH;($iH%_n{<3JpsNWa=^3W@WH`qvZ0_WVyk_jSJm<}LV9h*7DqYv{QkH5+XVk(Y6&_OQS)E%@b`1;kL-`tn)bXwj(EC%=z@_tAQnov znxS@GJ2s>3>k+E$Z~h3^aQ_%9(VuuwAv4YC9@ho^LW1%^IA5Cu^y?TnAN1Uw^>5#@ z!#`FvK!`mHd1(c>N6=aF{5Z5!A#JQQ^B3TY?2szn;sk_P4lA^YNGuZC z{K8hwg#wbM9kwmLWXu1XLT|+xDg|!}Y?;q2t>5|hQEy)-XY{d2ykQv@<9XOC%FT}e{R|Pe3SE1UqT3p0Yneb)DzePGTu1+e~&EEH@DkNA^acPy;joT zzg*AMy}_3uW3(+=nTpQ=>I?;onq?TSnH-~!W`1Yi>l*E? zn|=oC7k^#@-II6u4{x7z)mL6P-NjW_STHehSIl(Qy2Cp?X#n;#nP1E9(SXze()mjm z88X}?dm$N+>+0_X!f#T60v|ej>|rnF?!djT3u+}ZL>gqgyzqZ9?_*)^b;|cpCML79 z(&;tLyWD6(Y>uCcOXWpiPjE<4Wb(Jvqx7&Q&RW50etn-dTpmO|=pZ|ZzycQuQfT@X zK!<{T4gU`f5*@cE0`K495;9Tz771p56#Ee=E}zZ@2Wn<=Lu0C(%dDI>(|MN-ieS3a(5tgph1?jXGfMO?0<_*diI*sx$96j14W;XYnW95~4N6)_(EawM!j_gF z13osji_)q2sYy|#D!oIM7$W4L>idXi`MDuvJ@d)ir@mJ1;m0S(sNg_IezI?-?-xZ^ zH3t2{Pzuz3p=LQCE*2KvsziO?hThKtS-%g9EB5t!>Yg=}R;E?)uQ90JTTSL#;W0#q z%$hFt@kQ;jW^$n0n7j)&82Jl}eqMbFrkc3EV9n=sq>?NQ(q>);{R>6JhuBvaSzlN8 zV7T;8ii?AOfWAK9Is*r^YqR%Ann^qobyHfjtPoQgI@YXIH5i6A*tFSk6zeTwtVT4G z;qc$gHhEq=Rm1?7;hU9A<`Y1xefj6MvFghQ?i=msU0(Tze0nAX^5&t`J@ITI9=eBx_@aj8fsC>BVbFKtZg0MB2rY5zw0J2ipZ-eJxGm>&UJ)GW9ydEsSDH>H3AT+qZ51ZDA4)l#Wnb9%rJp*rc0n`hLfD`g%cO zWY^>B{yzUsyT^QzH&4&q@@OF%k3f`YMfms+(0=~{yb&M}m-)NsHdm%Qi8tZFf-W(R z?iQn6HA8-SR1sw`X+~-sDNY!XFok_1TNA`jrLwg9Ee=QJ+s&{1UK|CGnY9fje@M!E zJRuEFkdQdP;T(9{blojS{hins+-cfklj0Au&}xhLhJA>M>Y3xy(9Ve!Q-{);D!W%pK$*L`{o*ppMdvYb^}>4vO5VNq4uA+e*W=OZ2eeZ?(BCB!rKUiZfG@5PcN9`0g|hZyrD`4BWU=cO*h$;wQ7M+1cU>S*SUg$+tRmB>~7CAU$RmIP)rHtn&fR- zKU2(+{d0w@SqqWuwdw))?r;E4euu@(C$lfQ+@bHX4*75!-L?mN%q$WdK%GKx>JX3! z3ba+XsvN963zd>zl&5Z7A|*&2y|DUsKVY5jbsBa8*1f8T43&ZV`1AZ{jdPwEAJ@CaX=o$@BpAiye&_VH|CSZmJI9XxxaNBL`rCn)Bu>zJe~t$AarTu5E0#Uy zhuCfVt0%YSe*eFNvF(a@98Zilke5C5|5Doh(7Qjw%M^T6j&nQ$gst2%p-7T22&p_0 z@Ffy`=ywQ^MQcSMd<*la`8t{XEB}mu{L;pI(txrcMco*R8DA=UZy#$Z-d!%tI}_rY^Lm}*8z75gDU#F)$Vch|o*4v9d6ROu?r&=cffuOz@% zYwE78E0rBB#jdsE&*^(Fx$QM#lhafVTChLHqfd9*gOIC*UE3$F^@svVSo{N&&Oiec zUZKzijRJP}0qcswY@grstAtT$g&03^IDq$$!6CSh(EvaJ`jtJY>xj+P_3j*^z%fe) z;Z71lz%h*#8|3iDWSM%auZjV$lze_xsm>P5x81o|6J}`F#|xrG0y$ z!`a927*XG^uc#4M9>p>b2v5&fbqo=5J8B4j!StHX7PUh zrNo~*Pm%O>3X9Y+lJYn4$yh{zQopj@T`iJ@l zKgfsb!}dMNem-CAm1F)Er=Nw)OW`=vcX(wXMLSa6W(KbUYMtoIGSo?#!r~@Fh6Qz6 zRTYBT4lUkdp=K~>RJE;SHcP|G1pitCu@XTeE@8t`i6k6UX)w{(T{+;{%p(V7FfJV6 zz*y=Lrx~{nF5+F}Hz2SL8d-_K+H5&E-tA~g!kdZBv7Ok~0zZszSDtb5!z6(v$T34` z`(X|^HN8P|S3@|CI?5K%(=jQk3h7fx5M?mxw8T;c$#8Rdd0FOF*%rq0$k@&^khmb1 z6jM_zqVk~DZb5+KR}P$HIY;ex}%#4uX`I6??03J6pPS`M0W0W{MD zU6&UTye!^WcFR>}j5PSm6ICoTBCrUyP{PuY<&OubUs#)i2#>rHH?33OEey}d2Q0uEDBt~)WX(-cC?R#|6h#$dg>dB9X{l4F+@b}pMTDsTzCsf$W8D^+>6OA68jEk|?hfi z-LnAt!IlvOdSEfW^;*I2pOg=`&X{rhwr{TT$Wc@#{`cWHhAPwN=2eXPWG{NXuY@up z1Rq8GqC*JIewWyR14@zsBD~K0SMObrcjG{AOc-abCp9)gC4fjWtU|ZLd5DBiM#fw% zm^`{P{+X{8NY|mnwyXeMJ;pcb;S)&^Dg5)&Ijgmq{;iuRa*}Cv`#56@$hXw>=i~f4-~n4g zuqYiyk1NI`bRuh(bGZ+hrrTpZReKS+1j%-m@hVajTYWwJxP2WEbMW-5#PMD668u*k z7K0p+sKqcaP`0vol^TZ5ecJFouTOn+-1g_k9mAa4?jJrnjZ_Zoj(UJd{UNUS<1deg z+cYnKriY(7U{Bw!k1FYY#cun|h@yFSDekNi4aB&we!Vk;3o~9nAGXnQyf$d*Pjz-SE ztZFPT6`uUwKOy`Sh!e>2XSsdQ1w_#V0uCr$ZIuzxKw44V=(rFFY} zl3bkvL;BATw!qn)+Wie~(FD<|HQoblWAT06CC>u#0u{@WV1}#9h3D&m$#T~gzG{T? zjDjSL(!J`XvEy}3`eVV%3u8y|456+StSh>moR?8dmF3poL?Pc~{2e}CB~Wk(;PND( z?e<=zN!g|%qXcr3)UYT+a-kqVkn$d-icA8DnPy$`79}<_;Ivzk*EQ%y+|&iq{=An? zxsJg16>R%X^4+T98*CNTpN3UqH7)_MEjRzoc^kHK`oJRv~+2pfgFKe%!P9FRsHd6b*?gN?8)i1bY^=E0zAse|+ekby-kvmfh{b z{qVzXG+J$xKT7*T$KD$CrS$Keb97I7LRt);wYmh(<7O=u-c#?@* zo~FF8tcd&Gt{YAgS0A;<($hkEr5L|!^z-q7%fdfqXH@#6-kL>H9_>lP-*lvqNJ11y z_+f9e?SCs#0A0+0dXztc-eVme!0mw%S8Awz|IhS&gZgdx@mvf-(>>%<^84MM%kL~d zK8qd8q7&sxAJdGUCI}~W+=;c?c`)}fkVt!A)LdsySFh52TUKAS7LN7l+iYzZPSa_8 z{cQQ;>g?#06(dB^Szw=D+`ku^ekF8O@JI4Iq7`9;A8Mv~{mUMf9a#w_2Uf>|ueG7u zkB@yl{+;&Y>DSo#3&z&pE^-^01B}!@woohPsqOatt{}>WAbPqe_mqvw$pCUie&|x5$Eqv{>Au|v+*Gy z>xG>%MdH;j^ky0;2LQkzDV9`?{Cr+E0dl#wJO%lj8;6qu7)C)w_%P2q=_{ch(+f#a zAf2B4p-`XQw^=CE%174F8SYllWPWiFXji%VWdXBi=y!gyRn$QqV2l=Lm_dGVf;W#$ zNI(fsr|?wrC;)*@ch~f2l@-6aaoF;AM|2P~fcNmmm5u=H@<^L$LHX z1Q6A;+O;6G5Aga)L!Q~x*1BTF*fj6!W1+f8doclXY24w6*2 zCs)Ru_+bROQ;SWx?#NAu+9jiFVH<5N(V~iIj$E3w>c?sDe_!FpGd68i)p%7+&a}Vf zQ|#SMcXu)p!)#rfBcVONG{sDxh2LVWmck^{{2us&$>3ZbZIHuIjv}&+G=thgPCI3o zuS9v@BY}X42?Tj{=EU8mNy6Je@+hQ@Wm~iud6Dtmu2wHZ(JQrh?jA}GUg%;3YmK1M z8GS!ep`tBU5m1DlBG--NiZ+e)Jx!jt<1*z0TG0@UnH(m3OVST=Hm`!lh53;$!_$}FkbbxKB-Ix0CmR9A9@ zYg{*5hJGmso?GvUo5OjCk41ho*(8`F>@61!}quW`4Bb!l&U*4FkS+tiM3 z!bsiSiM*_mGmMPggoMs8?O<;9W-+X!5JfhYSZg{p;pX1l5$(<5IkvM4ys2>^ddr*E zVBR+&J1D&E?+8pX#CGi7@=FIdybHT;1r`pOMO<*CRoIjYpxxC}P`qq>%*?8!B~@%) z+(9y`s-zSURMtb>-R0F|w9E*JmwA?%nGRXYv2_HJ12sF#B z#u)F45d0S|OIq<`)Q{$QS`bHO~AjUD5XIHVUP_j3WxlbkFyD>4yfw`Qh=>gyf3(5I! z-TsTq1@_&5habmD-)}!|qT)VYsO9hSZEiY{yv~S4C<|`v!_SBN8fEZPA^lb>#=g0A z_GHdbH1TT%2h|FusdeI*otml&Cz4ir_PD68XRDgL<i9CBn(vs)FIj#?i1$W-F}C$?TfXlQ6!;E9lQ6q{Ja-W=;@bZhP%7H zixxnlYp#$P(i}64R2`PX0tk_#X_@-Jl3P^nxVl~`VhRT&hJn9C(r!RvdqhZ)U8d^k< zf8E4|NDyrxFB|VSAbf zqrz9mwaPNstPn|0DEBfb=4rfje-3pnA(32-6w0hqn1rPhp^F^ymdf`N?P#$CLBzKe z?EUr?YcnyGVw+rije%)dsem^{Iw6n{(kbFCqlv+kC_5mT$F{2F$ zVVYO@!lAOiciu?;A88lwZ!8M*L-O?Nx}Vh6L@6a-XQFuV{(HA)_cuq&UpEJ-M1n5m zr5=}Ve}q}+oWDO*q_JReBzYqt-?J2}%*ca^&Wcy5MzVYsDXU%SK|ZK>&qvzUG48)* z@;DykdOvxnSt|Q-D=ljtb4v*zN8XUdEQG8$Zwv`r5Sq@>6B%~3;X(|LG9ZLWex9w| zeENQDIPlMb*pcbIGoF3e{tz2%Ws%yPO*19;F57$=$vt3p^K^nVM&0h)f`Ldu1+$Rn z$qYB_eCfm=ALa3U@R2}|y^qiD>xrZN!emk zMkC^&np`gSu&u<$^1k0|&jerfRl%*15+;cp8d*w-=z=sfX##j7y(R?1hIL;?2QMpp z@%7U2T6sHH@*u?lX%>bKjUTeU6qD41Ooqg)7w-NAAo$^pzb@`qybgS`9 zc>Zq2mSz6La-Er4nTO)4o}VTjlHanY%0kJ>&OGX5pfAa-;ThGsx(?YgKO61bxyk-~ z)k>eI?&~^#9IzrlrPyiF9S}qljIi3S!kXr5Bx{}evR9o76iyDEm!N#BKgQ3lj3;2c-rY@6$v0f$i77Tbef0yQMS6J zBqR4Er5-I!J3Wlb*N7NjPrYSwMwm2N_C03Q_Ra|m__{E23aoln3Z&Jl#gAfAOuip> zet%{iJGP%e;&&xBAt|?*^?AF2qh_CD>}ZX@E^d3(NP==WjY&M~L4u=4X4t_f*UI*I zkVXDq!(Z}iO2z(G^DmhVR6ainkNksFtpo+0!KOs7e+Pe|g~7fMHdpeDlef;oeuszg zVf@FwD(QpXHXri;*7ob}?$jX#$Lae2hgehNi@q|s2yJWfAGV-xWq^TN%X0!tNrOTX ze_(_G1%IFvHbOq&z+yfQQ-4tN`TahRhA$Tw_x%gALhkw4Bn%71-AC!O)kE(szQN!> zgg#B{(=4U%W&wsopSi*gN+baQqxuaob4Ecj3aY*7W`&T*B>^pSANO^D?3yANghUyu zi(JyJq1K2J4ZN_Ds6@goY0LvM2>*vOoYr%M!yC^SnmErH)-xsKOv$O2ft*=!loW#C zO}0`+i6-*tMm#JOgva-Z8Xk}|K(01UhKuKjI7A9ZIiwUeY!HcLhC24G^B3d{#H0gQXM>VHSoXd&*#!}!@k-4Z@uWr zB!f9o2>|j(v@!20OS*>TnsxI4)yYZQaS1`9ScgSX!#NO@2o-=-ANKt`CRgX}^WVpP zsysctJTDuGZd~7IT;0~No965kk^vkyjj>89n6Hel4C5p`kbp!2kxAk9Su@c4-KHjy zMsm-Kvk6J5hJd9S49dcllh;Nz%}c}dR<(BS zJzu%v{q?(aRx(95M_wZsU+9ycG-l&cKoi3yDuG5yA|MiI(?~J!X&;dk>Hti{3<`?8 zN7v>5KW=*H^Xc*7vtDlejb z>HiE^EL8>f!%yCr?SPaDsV2c7IUP}m1ZtdNicwH+*e4=A^D?otmbc+uZgeu)+3J?1 zmsuQ@MyoPGRT@^MJ$dq8CdD_J=dnP9_XG`C@yRRztPSK4(gcvCfRZyg!=ymXSa^8j zSa9-&++d`lRc5_Zochzut-a=vy05kFYc%Y9<=1#6`q|p<+LfK=w-xA3Irn-=!=G$i z?)GNm+EAs}>AkYuW&nq1WyL%CLhZdS>3dX$9H3|B%0I*Mv#%}XCSge016oCxmoJiq z5)h(B>og%sR;8Mj!sD}2)b{3jGQnfJUB>9*C-^(|h^aWT(qFx5$JKAGbd%txac zJFGj!G`0`Ja>H(O7J`l|->sQ`Y@Yoyd(Rymgnig;Tsh9m^WaB849lH&>u8pH-6=xy z+fPPe({XnjA3Ed5YOy|Q@=g2dIC^|KTD!DMc0+a!`%?Pc($`UP#p~J-&GEBsFu}Md zz42hT2l0FF+nzbIHs!1%$v2&9tdB(KrEM?we%kDJ?~JZe`I2PYv7M!#74LS=OP$}h z9YI@P##uV{JA}D;A8XeB%tv)qgU6o4tsj0m(+4Vg-{YI>2X%{dSCq#)vriZI>kCy* z=cax3J)t6Vcq(4S^{;WaW|e7&Jmu$v@rqe?RzDc4bL+l3_bqj1*hI`1s5a9PW{ z{FJxa?jGB@+I5aynSQ)wE;R7&%DuDO#Ie&(eE03&zDwWFon5T-wEM@Wd7azw4ff~1 zUU}~5wVoS4H|m=o(6z(2L8k>qs#+#%wu?V-C~6sg;nop9ed@nVLm-I3a_ z(~h=#bGyv@JAT7YEj8CY`0t|i;$6m-^Mkg1xcS*iIZox7A2E9yPY-q_ot71Q#@5;A zLXvZNH_hGqMXb?}v%_y~tW6bmy=_J8tEjB6y3VccElu(Bvik3O^zz;dYxyW&%=_NP zIoR^7`tGG!-VWD9;+%(0Qgw^8;pH7~oqW-_+0Cvkx0zVoi7e(E^159PSCHb%shhPR zy;o!~^7PGlSsRu#Sv$;lo{+xkYiu#1)z#=q4>4GG%h;MJ;GleroBC@79=;Jfkc4lU%;{a{0(=G(KU1%D`Rg%KaQeW&n~@yvZ6m+q!( zh*44sISJH3NvC{u-jAoXm~?ON{~wv(d-wTkKZt$j6A@8ZChYw1ynWg71|6T;hg^_t zFv2AgK`8h^^Lh9p9-nXZevkWfyUpRp@ww;H{%WV;4}a0@)35L4sq@3E^_q64SW5$c z?(dU3G%MKu$J`#>AJyLq*LrSNN=6((sW#f=(Wo?RTzW}1rb$57E*UECqJazv|5Mr~Mh};cwl_L@XT;XODCL<+I{rDy_Hhml z@_Y`)DbMx8Lln(nnUSkct33RcM?UzvJ*K}%*g7c^uCRK3Q@7#cJL}>_6rzstUo2a@ z;A3H(TF|owE+ix9qeesprS?!eKrjr9fQ=6%lKl7ky8kYJylb0n{~YIA#o#2^Nd!Wo zSZGMe$W_a8`QZP3RM=R%3MbWSF2qRv7N#W32_%F2#=yI5eZn7?y8J&bULS6m{{EkD z>-{ek+^Ybep^OXFCuwfhCPUEbO97~O_kUi93Db}GnZ1bvAVwAPp`7S)LIV4{e!f4h zTs6_ODj`)tRaDdfs02Vk6o^3}melp-j}Esn>AZl&bm`IEtLbc9ma9uue;>#6-qUO( zJa5RRNTk(ne;d@uzm}R!_&d-Mc12vs6TQFJ`_Eb$KK=YXh@qYZ_(((lCxnmsN&X5R zrqmbeNdH6=!_)M=$zb2#s#deOugG%#KYfnOeeG}i;j`Mmge(6WT0$@pKONq`6T9?T zB|UukZsX%W>eaiooqqKIIVbc`r}^)a@h+|93de1+gOj5lAM5ss938*ZE)qcf!i76O z!M7@MhkdK7sSCTu3rpuV+af=a@Rp2E%!Tr*W>Z<WBs^ix;eE>ZdZH%_m+k5G{@)L} zd;J(cJ#J630~{H@+-s(kV6Z+PKxx?EgntATjofY%@neJUKEa2-7I??+jlT$Gm+9kjboBc6+}Aty5}&^}^O_F1dKY;=18Fw;F}6y`u}Ja5 zfV;~4mxe3l@w4j8J7M#;-&2Rlj^>{KlfGE|{gOo*U6}x10oU#9`h5t0$KvJT6f}N6 zHt>P!u%L@VdiMDhQmR!{s(EihLbDPX6-giG$9v^@TNPA5zxevE@UWqZeb49mvLK=F zXs~|^B^W9EZ5BQ)Pt!do3iJTQ|0lq$HMn~eEhUjeFThv%Ii28 zMZO2PIeq=LuwJ9tPLU*^?}oj11PqNKDM^``nxgUT$cQRiLfPNXj^sb|dvknx&%em& z@Mn9J0(nrE_>j>M;4uy#tbWe(+5%GrPw@(x(6wZo~<6|6ue066c?m7$sY4QZp~HtODC& z8|}Bj{~%CXU(E#ghE!FtOUfYv(*_l$=zdwc0`qK9Gy_2j3m;F%UmsBN@$^04P0Rcn z*lD-2&)d`4w@$ie!h{_u&fj7U3?}+|Btl#pRMHbp6^U_%f1^G z2(ndCB$X(i#j)MvvK4^+f7TOhhOO^OhSYD;8`Ndm~_Mga|jVmTZJlE$Wu6 z78@b-oxOd!`{!>gw*3BoE;r}TyPQ24?Fe6NeSIhD%0=R&*V#laNdTWuOdXLr?iJcT57~1%4 z#!LdG2FhE+kt{&2e*aI7zWn_(`1ZdZd~efyuQO|1<{-SS-h8WDsWA^_fC7BRnwbrI zd=>8AeDk)6X1T+k-)?Z1$7>c%eIKZxzIe|@TMOw{a;@BU}Ngy9Yz^=mHEVL7Vpm)#*V~dM+Y-? zZJw3Pv-3S^tJmJ&FPiwoR0$6XL7Dfa_?lkF~K&Jt*m;5abU8Y?c}q* zIQgV|OP%z`wY}NW?!LG)IQUql-1*1JJkuWikF+)6m?q+veDr!*bGzY$al@|E>pE%M z&vz?Mr+1z4bozd=Uv;al+iRD946M~hYun8?rQP!D$2<46J=E&2&Zp9`kC}GJbyx7a zg&B*+PlT7;oJ;Xxuf0v2`0;O;#vU|=id$aO(OZ;kvsSOqJ-c#Ss>tm$vDi9VaLNix z0o|pGdcvG_jJ$T^Pd7qVhtAkHUivdWv%I@nylc6rp#6JQ*7zvXsNb7cSk>}R2dz9) zF1eWM#%HBpJ2hu({9#V8-@d+UuYTF_9jbm0&Kj%6Sluc3*Ur!7yXby25idJkdSmBU zSr0l5E>}7C^WHj3yY|C+Pj~C6rHG8{y{vWgliRJypNGwoP7%Mpw&AewlXb@oiMb!0 zHRV_1?)66Bk)b{}NJ|tnjhwVUSozQ#h2KA1Tp_VqLE(~worE7)y2!O*ZXY2z3cNM zZUMfp`Z#9M`VTKFU_a0DoGCuWyM$s#yg*^zQ2OPXcVOS_zw&YP zVgrBB{m6F+rZ9 zzw}-*K1OEH9^Dy}Ic5*f(zpS^VNf3Xghv+Ep@5i}9|in90hb~)zcq|QI= z5aS=qC4Y9J<<=Usbkt_f?N|3ngqNP`wSQ9kDO%X02mY|>)(6R=exCIEAe;)NICb?< zQVX&Cnnz}RgFz0&PmO!{UqV0U$M_0>BV7TO77}!SCqF=M_9@KDX_!!nCRnf~Q)%7) z+10048&X2g@Icr3Gb>ic9?buyVgm~QLI+|Ji^{4VK+7|WZex2rA_#H<(GcZ+Gf8xv0LhSC{rmH3UGoj+diC&0g-``_f1 z`PM&=$%Vds;o8?B@1E9p*JH!k{%B0S;Q}Khqy9Fw{{>PEjgWrM>{NR_oN|~>4*M=Z z_FaSS&PK$@0(m04X5d+)wb zQu)0$p61Q}rvK6XofLm^J#rWBd*|HA_WrR2{=cAHC*dKR`W=2h=`ZV=4?NY7qT6kA zm|vle{r`KZs|4b^eHLdVr!!jt|ION#u*dbEJ)iH?3)lTb7I*j*Uy=-SK^{6M^gs3F zhCu(2LmB_UQ1VS8e|I;JZTlhom|UU!Q~7A+Z6_#q&l(EWDl*ZmuU|4RRFujBgt z`uih4+P@0j%{M!@o#ir*y{VLek_79B z*F)Z@CoB@@ziABaP*>8;@8bw>Qhv+52Eqs`?8w%$ z|K`Br-UdiS0ObII5-=&Ly!&H)GeX|I$4D1f6Vd@AA^#GthkgiC!b^JHTZWX-mZ}T! zr%Z2=alCJ0ief?%5SI7Qbltd8O@RAqJ2VqtuN*Qq@Djc6dvYlaZp(b@vn1cb)n~k% z1Eh_Jh(#(v1P~+uOTpax6OhrTCPK}V>mLh*VWnYUs7QCiws-p7D%hYKZh}Y`RNYWo zHCkv?_FG>lIQjZ~eKYOH;XYqGE;RPcq^Qz8gQWPK5-#WAhF_4+pB=rEitIZO7@&dQ zxpC}IUUFMSfsidJ49q4&?_sO}EDRV1g%AdW8K8{-&;=Exs>!-zw)QhlTfe?8u=nN1 z)#bOXOJRoXvuWHN(e~#&e6!Qf&p$3+>9sp=7B6M0JKbz| z5&ypq^{~jjG~=F69kksEY7xlxV=Xn%59gb=L8`4NieUy{^=*QEzMoGnIQGAlkH5>~ z>1OYNVQ)i@{PQ5Q;6ATR~+_Q^5V_0YKwa|6VyKmq+Z>bO3T!= zwpnf3zl9e``)182!|_g;=a7o9Uki4&MxCjqH0AxPec6u^WDZd~n0#1OWirk@S*Fqt z=RCOAwvoeL-gjYhzFt;DYvh;XDC&BZk;>g}-0hog>S@_r5XjMI9$lNXb&c({=B)YA zy0AB7?bRqf+u z89R>47r$$`zSGcaw~nEms>41VCcM?(E;iAf`N9r;X$@YU_V444xsN*@uDiuK~<3pNve_eH(^6OrE?RFS>^RYL_o|i>_Prd@juM zJuul_YMeU^v9m+(b!U$R=6K&)Q;j);7W-~<{A%Yo>q`pTTV~3!HzbUc9HnFIuC39cs`s0G=O}NI?Ucu!mi(QblFznkQ}p4eY&NExJ=w5FHOQe!t9AI!PoHh~ zzr(D%pA|hg<5fuN{mTTW7F8;4y>qLtimdS(Nbct7O+b$w%FWnzbH4PiobkHDURvLV znjIRcrRIcnIB_7r}jung2^~4rS@O?AThJ3Ak+a7`lKfB zXeC3;U_I*)PNa-2d&yMNyhq6F=StbwQ=3oamdg;)$a>p?gl9H0%NHLBR4 zKD>bMJ^PRu^qEMT^ z!25(Ax*w1pTD4wZMZ^Jd`1ad?LKz)C#o;ts2&AEmAMxRKAIIST9hk)WoykCIqDs`n ztWS@4iG!HelG&E-7S<}I!DBHF`u7C*%6D8+t2Bx7zKeQjnyOgRYL+#E%z&N z^JD+%wcM{rC%i34_~?jMUY<;G+w=(xu*}GaPR6f{8-~FBiSlGm=b6>7?RI|Ks&&X$ z5Dm1*0hKj@ldJm+xt&Z^kpTvwRBZx;oI(kLipr!YEJClBt>%0FE#17fpZ#~guKL^d z^ZNAtyS`t}`fb?uJP3GveLX&(x3+#~xGu2Q}q>ndjq0HJ1AWc`*OsMfz{Ind}i-2Pw#`Xx0G2I%rc$)4%@@YhgsGy4mPsh z_qu`_GIA-A39E{OO@K{RsOU8q4PzCmLl(V>+gVM^X=$X~&mB&4W*1j}AwRTj%KAK& zic&<+AMfS(dq`kw=OlxkB6wk;^4-=lIcY_tW7^c%B|sLbWuhdYBy0yGvsBul6Fz;N z*O!}Xgj;2W$E-8or|}3@&SzLxc%L0vD`O6i1UpUwGvJUsqMsi)AACCd-{xApS3fEZ zm2%15h8McIdY%<)HQkeAJGJq?#Misl zp8a?1%vkh!PNQxr5QKrr?n@tj`yB*DHtCraMMbVS$y`WRx*<}c+97S}Zy9Rvm92L0 zwwiV}@Y8*I%==~O%lp1sZ)Upj=Z;I4%~@lvfVS`!JRv|puV7VxCu4B{I%S84GRdYH zmKM+}1z2k{AT7%jL02BjHF2Yu+3#heJSpK!WrK}(rxTs-mmG1|Jd|Ob-P@0Ej~|nt zr<|&vHTn4U{2~}bY^m^xC7{@rvt)!Mkb_B}io-P}Db0MbmUoS7e~Y+ck~4EGZM-aX zuWPB<{wv?Vc=y!;UB|aWx-IWBA|fIRK(@_5c`T4e<4W@$(uW|XMY$ClQ~ zbCsEEx!u*WnT_|dTs`sEZbNwJ?9wEUSZAYVvGq)Hx$-{uEB&1(P8;WWVEp{+uj2|! zd$WhxJ^Aal@!_!QYD=o*w!nP1RauMUZg!KdNe(7I>l*rJ%6fiAS`f!kK2HeH06{ zTaI3PZDSN&47^3L!Z%y48BIOy;`QRL@YeZl*^xgMvg>hj9ski{JeFQ z>)(wy$Gg&cYi7)sk2-deb#Y`-%YN?VlARwM6RL+5cG=yhfs`kODR+!+q~CWey2vif zEysn&8tz4oy&WUsclO`TP+kQ2tvV>%%dg#*_+M`duH4d-yQ#rZqjT@)g)Ywhn%+E9 zTkc-FS4{i(qkK=64X8B|x*eHfqdGUJu?UP_P<4NCl9yMK+ zDPX%MsBfmu&F|Bgbv2%wZDy|LEh9F`bPn-ztOrTg|-LDd3n=I<}iP zc*}cnt~q#(DdAoXTpyl%cwSjg%k0dow{>Ap9r>8j-x+adl#criv){1DYP|bL8tIRn z83j@_-)p&9!m&&eZcZK{va3oHtb06Hz66ll7TXdISEp;zO|r~;1+nS&Om-+~_?=#^WLGOOnl)`we7^4kaIa8)&Fm!a~rSudofYSKJU?ejXSY zc0iGgm_g`efgwh5$8xV<`ZwxSiLfLO@+0&_e<5HZC{MqYjBWp)%D>GjpN+pS^d7Nf zQ(+H`7$m2Ajh?(@t3MR_D~B@KHGub61}#WIk`Q*?@{*dKg-^$!cdy5u$0+SD7O_Rj zsFu0#>%N4L;PeC_UFS{FXj-hezugmW_OffC{%WPXChGr#SLe!q4deVq-2QeTe_tCw z8v0Tj0A~GOV6s?XGCWNvqYT;ENBPUuudfmc5Aqm!{CaJEI{f;4a_afivx<3TR%T*Q zm?V=PUE>(V-fs<0G7BA=ykhiLuH+O;QXvry5U}bZBUu$OHxUmJ0rQXGoaBTrSU2D2 z-B`^YeU1II%*!l4&?>;HGziA*R0I8lxe6H^1qk&eP$cBh4@qC{AZQn|xtS0NLU}aM zfLZXq%NL2YPi1b@*t+cOe^Ni|+JXJ0d-u2W{8S15^vjhl5A~rRuvKy;XLjmhRynnx z(uD>r8Z;!31dpvM0x~RF0Q2J0RdKhk>H23!PXA6<+VXEgTV-z^I~k9!3M>2{Vp>-! z1d{z-1h4RB${jwVqGkRr1BvM*ICg@j+ldC0KA5~@FX8#ejDAng<@$W%Nkh7l$A4Xa zUx(rR%M`C);D7z|Ag%i($cZC!37|SJmo(i(nJp%qbsLf?4MyC>sVw;2izvzE#kTNv zXQ9G4zAvFQ%*k8puHUa2{!g~Kfg0)n@BZZ9x6$J@Ar5mg6B!`gCP0&W%m9uhC_q9I zfizTQ>+6-TEcBK>lfwPeyEA7ywHf-7 zQb-&m=@$_v)Si+eBrME~)>)-lWVqK#Uh8#}$+vHg>^>W2_VIZ)jt*QEwA$I-*Q_uO zCoz#El1U%ir-!pbG!CipL?NU6tT9FYWpo1i@BQ$_!lQRTHbtAz^Ad?A7UvlLuZ_&=y_u9#8Zl>|2 zs@9K@>#OjVw_LovkFq~6kGHePo@e5T1IvzQ0GMHRou0r6b|WA^y=SB*^?ipxo1VWP`mT4N{c*dczk!R z{>zR$^3U~}%bv@0rn_SNxG(kg+a|y_M)8D>8~it+-<)!$eYjm6e6E`A8*xQ>;mpn2 zXRe8P=Ip$9o$Ti3GZx&wct1A7kf>r>;Z>zdBh>QCwoUOKwza!EH97aPvAPt=emL@$ z@7VaugV}rebRCJ~!g<>rcyTKgVBEI2pA~MDt!>&CQzc(RzYjL6rT3E^NZB`nOD1`@ zY^{Zz?aL^o+^cDF$X6S?_uZQJ%-PQ!hI-AsXU@>QUGldIcD9vTspmMdTWU_iJm=qi zAe?tEH`{M!&6;=XC|vqN`V;1!c*iXK?zuyL_Sw^UO>Dt7U98s4ou zE1UB)zsHU3qYsZPhFC`wvHAkb!5l1?m(J7T=i$Z#rDLsapepelGvc&)ux$EH(`hc?+#@#d$lr^B-Gn>=05pFH+G@$Ji9v?~+Owfm;TwQjRk z64R|t`7>H}G3))arryDA+g{F9d{$KU* z-V2};%<>-z7~{Fil7tXZ9c~nN7R<+QH<}QH16%$}4ySIg|5M|?td;IDB>aX7{G*gU zI;0P_2jqb8AND@cfrt4=-#~q+XP|nymJ}U^S#ze;A86{g?C+Ol~6v z9KV}1<67-|Z54ZMpcx3(t6J8sYQ^1M*r8Bfrkp#yJF_b@LoVWe9eQ=;Z@%22IYQ_@ zUJHy)>%Y^JXU01RgJ^5HXn@;u*7GPO@(w}SVMfy%KXYF4R>F(+bpNZq|MbLG<9)6x(8cz_Hdk>d9qQWIu_GM|vO)yeSA?7TZ+xR}Hk1NhFd-*#tYhGE1Kw*ns;! z|9+nw{{L;3YL0_#qh|S29rw7`&$KjAZiEsH!I=>^LpPZy$c*x=a9&Gn+6nqME6V29 z$>dpSEa~3~TU6(#G+7b{NY;mLh2IGvQcWOBNhFddy!^boeopbCJn8SZTygHs6&<&> zqkZrEr`n?QZ4EoOR3H%q0w4&15(f$ckb`E)@l2QTB#Dy3ZMXbzI{dy~JNH}T*8Tan zw`<&6+P$vO_$}qTd9$uZ{FOl8nT8CQ#}SZdAKeHQR_)aa7=-`@6^1IQr)?zF!6RQC z*X&TR(!n}oT(d6ws<@nW(Dc=}(*(IG9Cd~{k_MwTlB`K>rsXwu-MFN?PG{WoykO%@ z$2xX-_IQ2VFFjv}uDj;Lw&kwaPhE7z_I7qviP}U+)GcS3sb*11lw}G*rix-Tn@zOS z3yu}{dUC|?>&CCo#$R`*bc=-LcdOpj=KS>695O5IPkyxt{&bYVWU=$uwoghcW$62A zquS12dwFRj+;!(3+?*Q>;crupPRE)+;cjVuu#$d`!c06=Evm(t@i=zU&T+ZA+N?_K z_@?|i*K=*!!1YwrtnBFG-SM{WaOnFnZFT?ARA!?*BYw$HxsddgMD1%c&zl)+Fxf}O zT>Pw747VNocGH@{Pn^5!8R@IH?BY{ASG;_;2kVC&vF^~OT@<%QY+bhJn9|=Cb1TV( ztWFg0s&|C@hex*?V`&0SrQw@7#5Ceq?DLK9+s!!ewoIcvHR}28oV)1$`&qw!3u}Cz z49lu^;a&C3R8p>gSZ(IIXO?oRwY$GplKbGjD8}x4<%bE>`gCHJ-02q_K{n?In(@ON(-`oaNeQ6?eCe;vQis zR<*;vTDwf+4*dA-Rq)91$1C5uN;&bC7&JLQI$b+mHtw+cDans%b`)_T{Arz;+lS=pKjZB=mX+)Jz4=4*zltE)}O zPj(9wc3VSdb9)@0i1l_o$Gwf8wfN%wpH$&3Fv3V~E+jD8O1L*R*|7)PaI2ANdL(UTctK z|7$ri=DM?OE3IU|dj3j|u_4Db& zoX^W=@3fNB@l{~PTYi7`|cmm|-C#WNM(BE8A~!yZ5^59@}8IGd}tsJmGX+f4_G1WMh_D^u9eR+(05CB1ZuW z8dYKBnkX7gixNiLX@rdinjo)_4xYZ=d0qZVUT?$feLnN=h} zUl{5rdLLid*aU(={;^-J_#(?Kwu?=ol4(dIPqp{yX4O4Sds}YTrS;PWXALydjqKqt zpBZ6+Y=n0IPucfA|Cj>;j}PbX*2(JIPbM`jrrd~;5h*e$uh$^0ujc#IQC{g@)@3@D zoGRkijBi&QbltG4^`eD){im$&!R&2DsYqz)LU9qz-7uGY%(!n?C1Xd=>ldjBnJs_t9kw));5%Gwn$ zyJ_Q5n{v{(S*?=5XXpq^5+D!$TBO*NlTwgL2{JP@nWZUyD^t=mHf9XUI@tU0vrQLa z!!0J5gUXrf+kx%!_r5&6I(t%Q&#+n{b&>bjO@_gJFyzbQ$2VTsF5V?=jg^5q*`4$W zo^qC>M3GnMt{CiBL9xYI8NopABv#cj8lr0~Z^ zL9M<;Z0N3gc$9e4!#c%x924NASoKcUNq6PtcW&AjWyV|UMfJYvvUphuA2RYhS*#A; zA7$G37`}}jY?IE`>%5k(yl;KoLmpM_BMtoP;t<@^pJ{T%JgH@t*`xevgIfr($*s7<#XG&}t~KSj zDmUo5S=oLw#jB@KQ`Z=Ea(io%Z+Jf5Je=~iidKms4b*(N`KA%R(#yW8+l=|sx19I6 z`ompuwq8p8%NAc{z^sif(vR0Wq)xYu9j|@7_0ml{tAn4Kmb>^{dj*dUK6vflbMLme zcfWq!Z-1I^+dZ<-QSP$KcJa@F1EU#k8us!hW$S}g+qV1i`ri6syV|cE^KJ8*LDRh~ z!D-GORoRky=)I$fA37zh$fUxws~Cgq%N5?uiaW2;?+5%v<2&Mbc;3)hInHqo5pxm& ziLr_cHS_Oc@WPs~{g`y;jfS#vUVeKg^&G5RUh-m=h&$m66tKTz{YyNwClk$i9 z=SNSyY{vR2f1d-*h&=YJv0d;Vgk7WW+B zIQFWD<}@AIA(6}TSrDi^0iGAWyVhfII+K>aTA~RK7T7?lySF!3ITsjVB#|VYR)8IE z_5V)5?1R~sAgT>Q*^V}q6S~AmXh$|~*xEaV4(e#EZ$3W#AMs=Csl`GNugxukBEy>4 z#uu_wScEK+2>^)z2D^o}s#@(n*W-eOApzdC|Bv|x10w%_r|O_UhwXhMkpww_5a=}b z)WIF1TPp}m{>@V}JsOYK>y6_yMoLNGWo=u_JMPl)@!ATpoLg%@CVlB=$Ll(?9T==} zD96$td?d!KVbys9f~DaAaJNYiCBV$kV2q4V(vk#ca*ZxL$!GX;w4BuFd;Y zKSI+d%G%*By?|TDi$=230qcT5O4FE!gg2IWLo&l3`wgVGoqqk3Tc9Wl0@^`9SPBY7 zj<@aCXBlzWv?@fPBp_92ijW|p5(r3lRV~lY)8Uh=^7Zg` zdc5@7#>X8gu31ry!gFg^a6%eL1VIiNh#?q4)PylgYJiB-pbNW|IZKrzkPd*8a@Y+w z2`VI{DQRN~hkdCw;OQ#I;f40j_b&QhDBSeZR(CN+3@Df7zo(C%C2odVpqD2=UrXtL z<&_--kOB2l*rlKaB+wF+gtccf=SkMuTcOq`Q@cdzW?9tqjhOs<7n|}S=l6PCQ{nRu zP3x|${M+3(xfQLC79zw$qC7-HmU!?myV1@zzYdoC#>?9Fj?1}j-j5H@v%k#s>|DP8 zQRm)84|-mioy-uIG*d04kSlGzO4{bw%>|QYbEXY!E%Ba_vdtZ)n!Bh`uD1N9`f5 zHE#~_+sAs~IMJnsyy4eU(iv^l_E^1`wWmepN50;V!Ec7LkB+tTEpvP@xvJ@8bjHYK zX1K}4x^l(%H@cJChi^F;s=3?Z&lA6$;om+x_q6vzO3I z(RW)v8toe;yX57roOkTLuV0&dJ$`u04i`SBJ1pbMbiT{FvYJ->@$rg=Ql?!Vpy7u- zbqYFjE1omk3OK8>g!$;7dSb?Q z%PLb_FlT37XPYza2D=_%(=VPnA)VOeb>X(hCuwGv^{m4a)hl$Z!Cm%$i9e3dOt=QE z^H+_uv5v*J;9AESK4)t?y9Z=;T*U0_6U6bIEbFgYh!0=q{v~7xk`tYG+oCsLUtT8X ztk`f<1v4U)K&Hx&7F~t>luBs`Q~S5r2qg*HI-a|r0S<@C#s5#~`_D|yeN`gT^0XO=7T^rhd zW@E3fTy*>|KVQ&)r}W16+3nOa)bUsebSNZ}D1?$hFQ!RWKQGhl*jnrU`X!go@A-Xs zn@Yc@A0Ew|ei~fAhUyrRkFQBU5YPkx^ZB%rUCmEQhSmeJ|7e{l1=DwEYK}B+(@M{v4~*;~wvnYA`*VFf{E+w9L)y(+dL4VamPs zCnaN)U$Nzm8WXREl|UH>&6wIr8%>l_1reW52>N+67Q?wUiRUlrb#!yB5$O5ceR_piDG` zSz=O@r1(MsnV}0ZSr9B(q@hVp=A~$uTCy>IZ%xk2B(_#zmKkLm;Y&X*zP??)TdMUP zzLFbUid@q4PC5cRySk@xKqCnN86gIhxlw5zYL&L7One!e^Uph7<4p6?_$>35AYv=G zy)#WVE6vA2roar-OgPXAM4c$JQk?N#JH9NGEH>uV8snK~o8cU8PFYkokr!flI>h8w ztCeDz5Yx1sF4KBf_EPDevow}#!Vm0rVi9IiX?$l0~eWrNetl(DVb zRd308?Y&^S>a@N6Yp&M4>UCSUjW1R`1@7Z{>$ZFKUp8mXSKhsxpBZ`P`^@R&;fx=Z zk4ZgK^1Zt|GAmDZ&K9(+go@1!dBJ)1PdPRHOKDlgPg1y^IAr+mvbB2j=SpwcTSu=o z-^`A9VYS>GwJOed$^KGv@|=3`(^Gl3j}D&RU4{2NuFu6hue>Lf!@qAg#zSqJE6k-H ze3yR~tZb{#HCLYx%FeX2nN@f2Sm7DAJ9MC=vFy&6J2dBIIbH2>a(2b6QuPq)HbU7l z>#Eo*ROzelfz!i0_tUn}W&RIOJ>j+Q?H+ZGH*=?hvO7P|GfJ!HY$=kqQ*}>#yPtY> z1ozLz9!6d^Z=R*kK5p^e&98!cQ*~s$Tgw`&vSOy#b#F9%A%b~sbhn97Hzgrb+q$~S zVR-Z8tsUhQu;=HCF0C;v#rsX0J1Z{7zBoDwRp*|$WsT3%J(XA2o(i}Wd*8%evoFTf z(5oSrdDi;b;do!%UlN^?hnuo3HP6Ge@0V`;6*7&t>pg9^Rq=LR-NkEunx9@gE3mVh z-3@!oeXABL8~EkDxbHjsQ@QwudSP6&$g#skXU_~v_VVv3;{d$)o*rYH{9KUiN^R>- z-L%oUHJ3hkY}D!0Cu*!XdGF`n?97J`eOFIjCu)ZfkIT-NnUz#S(jm?R=>EnMpmt>6 zr6oC}y0GXWmZK*Q%&2IJGDa#aPjxCjG*R0JMZ}AmRQ8% zUtTw|`9EBY5L19|ACHpzls+H=D-(2oB-+wJf+7I4f&YSf5D+P=zSzyyC(wd!R5!+~ zArQi6yASW z^Ds-xz%9m2(i3@jYYd-v+NAtcIdR~;WaYT6nGDnvQ>n7BfN3BJk%B=G2x0nh!wxtc ztIt24xVb+n4GRR{g}eIS+)(zcEapHavVa^QC<_z~=CTJ212Tl#B2JlK7*GquOrXdz z09pga`QI!60BTgVlh>Mk_~V%do?kXn)z9k>x5HHZynSl-u)cRIGz0)s+v($FOlxZb z+O@sWEqi6;e`zF{5)uKx$WAWP2@K5RKoeQ4Bm+6#v_b-wq@W-GvIs&2uh5iOYHCXI z-)3!t)G>Xs*Ijk1XKG)qtlzEvnrW}Qg9=bUA^`+&N)U^C7)CUs8)8(ottv=vJ7}A2 z6-g&}=ke+9!RP15eR^c~dij06++z6UUN-BVAciS>@d|VB@8G%7s0bp!;roOrkPwcN zz0?p8vISM*VgXf?Kvm@m6-h=ai;EAtqj^r}Jf)A>!)2$F+UuLbw5B{dfq=uPZLwqR zJm5o6taGze=oF;ADN|fvgA6p%W|X9oY0F&a6}0r7+N&GsLo<#VX&oyaFS2)VduuA_ z2B|g;PeLpR8iARt%|vQWs$$8OF>!7FudR|<&Cbr{;J7zD&YJ6Xn@3%#hJr{r=y4>u zU?nC72>_TvnpAHW04)kPZj*PccJuMOWt-X0#N}=5{HI?tof^FKxvmk6^8CIyO3pYIaH zRb0E5Wsc?#BCEVx=2|3Wm&bv%*audfTAb|gyzJ`CG0(*6S<3|K>(hAX@rGS1o-`3| zZIWi`rB$x)w$3bR&m$Et9kw0uJ(^nQ>uw#U&Tp;~*`48)jxNo!J`A#bvyI8)Y36b5 zz0LDpF7LkD>)y{eYsN5JA;p`L&na6SeC-+Y^%rK(?auX)np z%3_-nZ*AJkE1YM{6>mN8za4BmaF#Sziq7pk@|-QXJ~h(auUoOzC>W1~Y zGq)=7*Na=839^T+yF(rY8?jne1}f&iDz|P|p7)O>y{C_g2~T0gny$?<+}+ue(=Fr` zSH(Le*Y33&`15tT8zs~@)m{5{6X#&p2W*d?XOS>~+KSSEPeY-hXS8_kWYw9j5?yzcH>zrPQsIA?>gV=;k;1nH2=6Zy=Y=zRF75Bf9(?q^H!mI9uKCk#wT{!u>#~}lkmB&BZ(-6- z-MMd(x4x^F7gm-vtGVL7U|`@ZPBSe$+ouP8y_sftyF4W<^j=AwJ1W(=(aW}~rU{*% zp}-`~#1I-=k_MmzT=PMUsVYSx$Pz$gNFJIn*PVz1%P<}!BmnxK>4AU_-K6#>Enq6e zSrkx`MFCY11?X8gkm8d`EQ*o{qLeWPLPj>i5>Fe7TnK=uSo?&Nm;GPvA76t<-~MXL z{6JBo{Ga?FUY)!<`6pr9)LsdAi3{B_qL<051gg->GZ$>_F>yIDcMlQ^JXFoKg82yy zFhaG6c8r@h-D7THF3s>Uzq zh!-PN?A2xRav^XaO;a)fl~TC%O*rM(RR!&+-l|@L-BVptD%`nPXjW4ZCS-!F#?}Q@ zsw+5=M$KfhzD1Rmo54vc&miP3RXBjJM=*thm5$YeDqNm#P5_qg$RlLbAY zleZm{C2ntP8kr668^x@w6rn>zRiik3gOaN^3vla?6dYSa8Bua3Xx+?Vnyg%gs%B-P z*+%d%ibX3_&bOctAP9pPy6O%rY35yCCm7>h-Gx?z65>@_rYN;qv$EVXE4)QSOO|E1 ztJUMhOGMbn%xQ_kD{pU9REK!0hh|c$EpCOg#MVVn%5w6|_U7@kDyuTgC6#P^ql*z` zV8YU>TV|lNp7D~VV%j*(!!qw;%Q0Eh#J4XRR?`A>fFMCymOz4AESA+SX0=paCZNPq z)4jx+c&xQqdWg!5doh%**!OtxFuDN|5FkYlYno})wmi&E7+Tb}JY(RyZ6KXPAV+(t z)HYd&Xm(pb018n6K$8y_LsOwn`kK4d7jq9+l{HrD6=u#mJKE$e)=fp#D!a8^-eWVo zUEX91xDzn#b4_Hqb+F7Ls@-vnOiYm3Y@&%QF5OH9yKxVaF|BgqDCQiJ>||Z$WX-)~ zy+u)Gc+A6RC6=(Sm5XZBu0~Zpt4~t)9j0EEjKe&%K2qa7&OR7gx_O!{ibf2@3lEsV zRfEBYwakor#+g;dp?LDEj_q$X5+bR>;?Z|?5k*SPth~^AcWMoHjV5L0CTk(=(yUxT zxM_TVAEq|7z*|wA!4R(uI}>6+|V?(UZ(BtZX&|v#oR_U znJbcGG~!!U5))fHxw|UK$hniZsd&PO?{F+`R$Co%inH5APGOqOwK@?Ej4;^>+Lsq| z5p`P3!sYUmO}$*pwM9!A$2N*yWo8wYRc`K#2&}5d6JWfy5tVr6V49}MrkJ-7rJd>O zEt#^#yv$}Om#0?BFzbXGrDdprPAegC-SJl!NPq>1tg^v#QrW01?<*}6R}Ng&OsiqD z62;gvL^X$abBd=0%tGXu$5~o>btdWF*D&L);?kL$tA<&S^DwL~@?NoLapX6h962Dy zCCoC|V)d+RMl7SPAYGcUhFN9He27_5knZ^}R%Y@lt|p~U47Pb}jUpgG1}=!IY6gQn ziPh?Y#)uJ>SyM%hOts6^mbo<%8540BxYix*^C8+C28vt7m2A4lx|N2=XAhAo z)lY3X2JT}o70R5F>R$52>@-x92adxmX{>UOf_CJ)zzxwGv#GgG|7px4A%`sYaS$)h&b~vOsf-kOfhSV z4$G2S&6=90h*@mBdb0vA3pGQ?$2hMMW@yA1yTEeV=P_RcTixVTm<%$om7@i)EnGXi zv^-T?$jDIkwyRj;UWKxisA-GCVs7oGGXb@x4%KaH#ZE;s&ODej zw5*pAbm8i&7H~;ioHKR}JqTk}F_nr`T^4hdg_V{sD;#7t2{|mR?@X%_SP=O zonE26>egl>#h4TlX6cxzd|8E;Y^hbjaM&u0(>16ubQOwBTV>WW1$SVxBPdF{#f*}( zLaL%O1mjB8Wvj(Rmza${g<6HtX``A}x1ljE9`8pYoGCLUjM!NW47rGgXnayK)RkAd zi?$05FJ|0gzB;Pj(0)Uny?!T30dyO{`dktXvsclLqB-SW?77 zwp3-AyQPVFve2TQY{jX!%g20WWs_p6*_^YxV96@Q@Uqw@R2;%v77ex3Ld-l{Gd3H^ z$jlhk2HQvg5Xun&Y+8xbu@vJ0-WA4%)6T448%k;3b$fGI+DALob#;*Oj?~$0aM3bW z9pe`lBxEqExqPz#s^h*!2${*Mn~PezN4$qzF;g{eOfzQE7T*rFsj1OrS}zXKHu|9! z`v5K-V*%E%#A%uY4P!olKmbGmZz9y?oLP5wbZRX1sT9o7Ry1f~iNf_oh&E>Gv2ksl zWZb!-fv^~5Er!aq(3o|>L{#2AQrT?DXfbtBYdEWmPRwDVS+3>t6jm(2S%GnE_K+H? ztxSrGnPRf{l&0#zCIlI*iFXThYVqCahZXzkN;f%9GT9CDt(D^ebE*f3jT^N_NEm`-9W>5Ug@gW7GiD&Ej&H3WmhDS*<>ok#m0gJ2!Y0) zEt#KA`q5X3%CTWx>MvNUftZEb)(k);uJVLbz-6e1oX{~df#GtduJVn(EK0-Rwr9MI zW}|qf?b@znWy-Xdnrw3zGcui~rrB`jWLwS$n}E`DDa>3OW|?MdQ8H!GsV-ew>Mo>P znzOW$#xbpk<}n&edsmGkwY)dI?QLZ18#p=4w#&x$ma~Dh+l?oi%tG&4NnSN~f|{wC zD%?BfV_L$rS%zh(YG;fSGRz|NFLv_-%TE$U+j-V3EoEUsvdX>P-fs1l%S~|aEfr>> z>TV6?TTMhII zD&56SK4q|+XN$_Hs?5UljS%Z*mFg8qsi|vhxpx^3z(UmEim173S!`1ciqCOVl3+Zn z+cP^9tjl}M$27v$>gFOJDAdh|Yh`sc$CS_)>9K*-AKDtc9O{k*2Trf zWV^jo4_oXmV&SQ8YWyi>!5s&{saF)eV;B4#N`EhgUH z;o}6=W7UxL87+csS=>C`JV1KKgO0|eO4~ID3f{)TB)y=c#)QsqDza>s5ZV(kNDEhn zs$%8MMTDXJQ< zO_jWZD$ymc9&x7x5bGqU zF%GXfBYSCEfodZa#Z*njy)8UIb;}O*VybOfgH21U)l|(h#na^C)mxJ`?)8aE?Q>aD z(jw~CVd7&Yrd%~d5cJYnVc1-(+bPR?h--UUnYyd2Q@MrL6+s~KggU0gn0iJEw!f^PE;7`e-0#g&d!NqdQSxSb}e zC1&qbxa~H~&n_Un)zZyHL{u8qMk{49;fq$47WsKkB62C@-4%SLV#9jDxh76*JiP*P zpw3vBf!SG-Jgb`C&}&m~D+dU3l;mKF%zU>KSz_KM=L9LLV}ynbZXQ*Nm7?`|Pj5wE z8DvV<3Xz#JjIAzZ?%krAuAPi53x%kKoOcmd1kkq1xaP3Lb2zPoyTRJqZyO5rtGsQX zteqrQ32C@F87)W{&}$PU+sv)LVl)#XnT6as-o7io+;+)+T>0{DXA9>*mBzi zMZ4xb-KeK7wA8gPc;V(6DW&o*t1lUIDc=O-W#G3erD7Cf!MG6TpapmBgG~NdHce7U0A!Q+CiK1^Js_Js? zYYke=yu>W!t>C?0TwB0)MU%0ty@YkWrD;T#cA@R%@iW(OijJk zJ>^7RJ)4Op-N}HjktCKT?nMWQH&1jam4q7*9qJrAHBCijnarAJiKtmxo3&GH@pfTw zP0GWWrDn-`!;O^|(Kiz$h`eK%p;S#lS!#xRSBPnOt96?yw@)z-b(mHRT~sRtffa@2 z7T~<5yjY61b`Z;PH&o88j_(rI@i8t97rdsNhI>q6 z>a%w53w0PSs+%&w%e9FX&MIA1&19*i%x7tZVqi+MV^upx)OmfU>Gbu_*Xja~;xqiQ zemt_x0VvrdX04f!dA^@rYuqqOfgi=LfF_91mpt41Zq*#cu0?8I51(0Jw zpj%Y}3nUa-7$S;zyRw#^ED;Pp72r9r( zRUo8?>dGLj859%+2&j=_ipC=pBFKoMtVRnI0Yw%l3IL%73?eG9V6aT5@%b>XLN=l& z-5hV~WD+mEb97Gp_Ck@msDu;&8gJ*P&2OGp(bs?I0HOw$!P{aBc_>IAP@VjRcYo)B z;s{bHlri@Ag$=i`N^fL;w9s-@NR!g~S_I?}lmJLWY`q{|fcz(KbbqBG$O+DxXt9At zrV`yT{5|Egh)FKPZAo~!NoN8Y)1$49E>X%Nr%Wk>lMl@3Z0#1#1a zT4Yymcpcpp59gm%$W9?aD*rtB^4&M=f9P^(y-^#f9W!G3IVh!YSkgc}BVp_bk(TmSawbGw^ zG)*amivt6xtVIp{e=$>)W*EZ^Y@QfwoN~i0v7RI7pD}H?Uu)+&P4m9X?&DuDz+TH} zv(6V%ly;S6Ykgn@o@#tl?+SFKDC;L@h7&|cO_7tjoZ&h6b!&Hu)_^frCJmLagau-Oq0x=<-qY`CQZ%<{t|6Cny<73QG3M2mTTNZ&`t82il<= zc>fW&frEzV`OEQe#l&-;Gt8&! zqh0ifGPq>tzF?n$-(lGMJ_To9J+5MQ+b>`fxWX!%n0Go9aG*Z-E=Xi7WMAKB&x@(9 z&~zPqzN5UwgK9O2?>6^$7unZ)S+feNpF>X1)#sLT&IeA91ArTGzJUVeK$foVjJv`J24|Zj6H{EP0x0e*FeCd$(XPFR(2w285BY^t6)ae3@<*1Y^3eOCbqKpU>*>=ZW~z51V~N{ zY36;of*_|W^El8L26xSHhHwO4+j?tq-|PHCSz_a+AH4o?V48;PWO zTf&YADq#75W@T$yI>0%ly2^8;jKJN^LU%hGXM4-8aXM;KAqf~dQ%8lgosBshGj$2M zoox=~{^i`(qXm>meP=oP*HdU9_nw6y)CaT)2~q;U1IzhXaDfpux@Y5M zLL(9oJdN%6ITO-&pELabO#h8jU(#PvewowZdPq<0QZJw5@$?O~fCDyz9)%La!0wTQ zxF*N!nG;|cRGN;Y1+uJwN+1urX?$VAJ+`xTx#2rK{~x%{_&)iLEzDYfP`v^2GHVb% z={Ax-YM7Z0_dz~?g*9Plf!S)zy{}!CkTfr^MGcqzjW9uUa7oqwqERQ9BJ||aEF*ci zB}p*QL_l*hSp;qVU2MJ)`ObfD*43x)$KM~se-}+R-;n{I`oSn3zkL46x3n(z81K2_ zO_BclV%|R5H;QSvX zwYC^f3@cgRNGjUjII^KAXYN_0*IgJ|DRas-mDO8-?e`WM9#MN9cm7q1p)Gn?pQ@i6 z05ofWK>KZ36O1~Sq6Q)RQ~f204g@Y&%6u-JHq>hr&!K2;fN#q+=W(Sw;-aXk#1K@B z#@)^$TsWC2YiBY)_K0uyG1B*ij7aNHhJgww2`73|WOwfNuAdq(`W*kt9}eHA_rqm& zbNxK^{xIWRDSCn+r&(a_R*?>YZ&G5|6t zr%03`q`$(Py;P$NiT{+a9^~I0F{c7KLZNb^QIXrgt#nP=vW|E>?rMg`TV~@9&?{zTA6xv`Wr0?j)o5>!< z^v#wi#e|XpMrVjS2qyDtFaH95@lu(2BiR1rUdEC%pWlzgJ6Y`CUrV|C{r5-nf223s zzqj9o7~wiP7$;m56wJ0suU&%{m4pMpjJ*(6ka(xp4k4y|Ixg9k%Z1;*S8ul4e1>3g z@l#pqhH>qVU5Rr)Uj5RPo`eO&?f&b_za8~1{CTmRt7AItw~qKTf#3ei>4X5%WDF1v zBu_T77d0-ElYW-o$5$Ni%uhSek78`mG9OYhyp{~dET&6tHB4|@aAr@w%kP-$W8Uy0 zK^l78DEjR@DRnJ|3CjfF&9j$;V@y!+NJXqxpQP`LhE?r+>Z|$0@m^KQ7e@R-1{mC@ zPPZH1s-;3E<4SQrB1j(#aI4u$NShVXlnTZ7-);C|lrRVcvZmFQYlif_i=tw>-&(O4 zApjv7XbAwJ5ud)&Q3}9VEEyOgMIflF7{mowjA0Q`DpeTB$g&DV7zPXN1h*Sz9!`hK5#6232=7P^_uxM!gGJ88wNoFIub+F1AZ z$8G4!g*kaiBwro={uri{84#E&HyJvi@(yJ(m+j7Qqs|muaiEJa7~?P#AK7y!VG9G} z->PsFNxz{ulhd&49$g*efLi8`#OOmol@KYvEoWoMGs~vhoT6BcW~e$jx|1rr6;T`= zEE?L2^|V4!`|Ksu?!Y;qXY88fTfuYaU$>sR8`zt9L@a`$IR???U73M+mxdYnZs2&w z8E0=EW%*u!=pFp-HMl(B?sIRz($*(q#46>ETpn@}gmcO#c!;Hw&L&lN=j`Y^=uWfZ z^2B$B8I-n1dk`;=S$LDVPyNVhZtc&tvE4-)6qlB_!+pMP1dAjReqKbbkg!X}LRNL% zw`rq-c%wCEjQCM08ilZWX1jRKa0}@A?VVQnFpnVRSUIZg%15QGLmCQ^_CBIA&p zc=5hjartWm5diz2kGObYxk8K@fz?=A6G#nm>{ zYu3D+w_jJM1Q8kt{f%S=Q#}>PGpdlCbx> z*S`@u;_yl~5DOq}vGlhanjsd}cS7hsw52SG1PR8aTu!0kccxoy4j;cBfZGDv1zY^)JXv8`3%QUmV}OR>ww?wbucGBd_9ncrTP$nhgW|Nc5|+Jc?!i*RA0#|h_TT; z{`1t<@U>P)XLy@G)34d96O-zJlN4k+WJN_3{~}M4K!CDHcH@H~mjp;!3KlW;yWE;L zp&G;GK9>$7<>^mgL=&mLc00@fLoL0Bp>6J23p!Zm+(Ho29SGk1;2TAMJ48iQMRl;) zhQSd0Gma5K6&?)p&3Ls%6;xFeL_|lt>nEJ_69>l}Dyqa)R7GIFTTx=Fs;kqC#Z^^R zRlRlv?l6H^eb7~L+ZD*@&=f#hBuD}hrEO)9K41i%>;zMQ4k1<2_nb>kW^R* zgc2wc0*n?Sp#&nJL4Y9uG}@6q{j@9?oZ&1vSfenm= zFq)wnXMw#y@-CUuuwFnWqcy3qg;fc<6dW9?>>Mpjn-+9|l+cqxz-1IXSYEnuMxA&% zNdQ0>B3(qnq_`@DK*K+Ou-J+M2%XWg{ z)#N>r0Wj1_Ptdz4>@qSUB^jEHKT|MJjIzT@Wn`UEn=Z*%WT#%NJ%UF$g9L!wO%5?X_3n zBYqDZ=&(dUfgphq0<->(+eKYUE^|6soGCJ-Zod?Q7@g=MK@k#2$`87cgJRmk#L~1G z#m}d2HB$(Ph=FPi11sd`wlKj{)^&TYb`tie%^(mUhv?{1mcpA^TPs@Fy1xu5c?1h* zT`imKrLKgmzH_Sz+SaH6PqvS-Zn=?(s;hiuJAEjbtcGBLf&>X2jR+b92d1cyo;)1t zl(sd&SsEI2C@L_QKODX)B5!IcuR_&Tc#;A1=a>g>{Ww2bT^^G;ST3Slm~(7Lk9kJX zGJs_gMD>ZEJqsEu6@Qm<MVM$Golw zL^28BS0YTH0G-ju>|18yxgoArMnEHway+1IsAnHI>BP%B8}SLt>wOGneB6~_Cj~&D zjy=^y9?el2dwOrv;NnpFAa-@!o*(fyhn`A9%eM2-wzU;i zRpdE1`LlabRRxNwq}C)^{-3AAud8jvC+)F}^?1uX&IJ?B5xc*4cy zg55dM5AT86;db9{x+~$2;oy1v^*r#*m>E>X+Cwj?uML@W=xDDJCGm=MFe2Y>HGvs- z>SfohefVomQ;!qCa9>!Mu!w?4$d{ML;(2X3-;lj3}=qUk)^N-ZUI*n)c?`Sk`3@X=>QMI8-iBXtMFwV?s#;L{Gc5V(3|Z z7v8DZ+#y><#6*PGUM;B*Q5kTPNf8kZCYVs)R#J_d1uf0-xpg@R;0D*pwweoZ% z_O+zVrF5w4K$7GEC`lmgEz6EP4RY5#>VIbC$31ua6Pp4FB$7~=eU>TglvvfyFN`H7 z>9ERk1VluF1PF+sHe9JX3WfB0CqU{(o~^$FfI!D`su6J_vcgKXoTlcIoiy2nDOy6{ z;s8qL-GpU1q^8?vbn&Gt8{3H>1tkFhdICZ}f(PRRuBX>7zkg3fRa8|z8vcCiYO0Eg zt?|>)1a-CgTB;(dI1LdIQ57Hc-jA{$LoZW~N4=sds;lU9K6=uss*621>J{TN_0jA4 zv!05GlkE4*Spdn>59P# z7BM=eVQj%VrqHZ+RY_u(qAHs?`q29NaH=A!Afmo~_~6_PkB+OUApq)g(~ek4z0zW; zuZgRXRaI4W^?Jvi-+rmCOCy1v2xmT7};Sd=z{-MRj|nf0l^4gKm+}&v%42L`TC{g&)AF? zqD?6Ve&aupnvDEnEbYg)tE;QSJ?hANpILe&FQ3`>_wIo0h5g>@8vR^sIT0(HLP?=G* z>(O&T5fK95%n=bZpG)_?>cr_sQnAAcB&t9dDv^+ME~L{buL@a5%IQ{XKu{zG!r545 z8)bAHr|WI@VHHw~79nJU1VoNf85&ZS!IBcblcVP_L_|ao$^J=|(v(DH7}iqD3$$F2 z0}C;s0i;YMdP<>Me)K9TU%c<%xT>J5ztb|$hGtuHGYe~pmX1%1lds2*9|?LW^r|Y` zYk2U*4{h&lw$-hxRaW04+mZ6==zi#SiuNg_#3MVZg|?#GuRmRVHMSNbOq+A(Yg*fB znWo!oYi+!@E!SYrE{8bF@aIaZimJV&o?A|Q-SOVlRC`+Grn`{1#ZhO&zha5xbvkhl zL{%0jE7rF2#%o2bRaLgA{|$4@XL;246h0Du2L<4+_GVEhUj5a#|FyVUw%R3MStNno zB%g8lOUG8)Nfe1BqLC<`{#1I^4Ix_{A$Oe6u{u?#+ZMLg+Ugt3*S=h~+iPs9s;a80 zKc^qdu}i_}_$wmMZ4uJOwXjJ zwuwr}$bk?mNan36J6L$-Yq808T$$&YLnI^Mf(RJ6X`)mVKwDBE2#`b*hgZ_)_nNVz zG5cqZP0DsHIo{Y=W&kZ15dt6+aa&bW2g2&e-4P|$`-I34M69*4g!o*gA$zBDDej@} z0;qu3-0_^DWLY{+lcYqD6x*9+xUNoNx(yKdc7$t303~bX2}!eh=VmdT*-Fqdm8rzq z>#mGtHrBE*5Qt0$pdd%+g8(?5&=43Js)(xprMiCxdu#A;Q}Sq>GWCTjs-mj6QmU$| zi1R-Q4V#qZ7fs(?+utY!tWe?L7y{7CRSQH8B3~d?5#gn31>EWld~_28gh0#H|EviF zy3`AKmLwYC54h2X!2Sv1c%XQv0C5;HP85N)){gBP3iB_VW^z%$4KisD9$Y^H_>b)* zPC>lX8-65P>9|{Uox7@`Bth?~lLS;nI`p#^Dk`K!QB_s8s;G#J=Z#;q`%BlyUJKCb zsKOKMxOw_7D5XI*wICBn1QruWs=pH0DvV+z1yE7^62&wk$Pr{9p#eaO zB#Nsd2_m5Ao&F564}kkilVFf#Dx$%trTK?>?*7Gbh!Pu9D+5VtXM+_)pX^*r8WjXklY`AmQ#Z`$^)k!6m*=?5D8~Q?G3=ZN+54)*I_X{*1 zUwkeD(Ml)-P~1a)?br-zl2sufk_4({Q&mVjh#}%8yaxT^d`_p|_L094CT`kv_(}5i zI833&9kTZN@%Z{_A6hDh2E%Y@?GaHN^fv|^`SLkN5IrGA>?ECH?*m`UTW#7(H^6r7 z>xghQF%A@SfLmt{T(k2(&UzdpW~n|}9FQw39`3ntCiBK8*BUf2+F3Tsyh>hayP2Sy z%5-7zE7B!G#O)62R#MY^Z@#Cm*HFR(#jGHREQ%SXk)#b)=wa{pD;VtTmHe*Q zN9^mj2|whh20_6ZQv58Bl~^804dtJJXOBH+l@DY%@S{ML`%${msz9v7+@HBZcbkwd zqK;2%$Oha>kAzL9h;|R5=ij+s7zTE+Qb@k{EpXw%-E!X(ShnF=u=0pw0_040(3+>u za`a06eLS3`Ks)8=^O=XQ;b&F`(r(al%7Tg^na?`b`g(6Lc|f4r2Pw;{r+>o$*C}X_ z@2mofs8kFTaz-2|RzCr%-sfNo z>@0F&(}YI?NRn(WcPQsDCD1Q0s5dAkM;ngqgD#XK5uujXP5RJZpoT5oV=K}Zlp9m8 zBkTvuLcoP5eALfPs)0M0v8@}}>%y{n9D_povpVBhWb91sUi1!BQBVm9Bm!qxt&Q|` zI}7rAC@5F*RTO(Z*Jku)hyG0k2HWh0r^@Z110s7Y8z>`g1lppEIF0_B-v|WzfuC&5V!3%dy!tJfZvC^2p_8Ix=8U7S+4?ilj#7mYg8hyqRrC?r49h83%C@%aP= zfD!cw1Tf1RFm#hk5+hmDEO5T}J1D{uZEPsUlEreZnfAFXTN7Ju7h73QwXOfF;VK;7 z`O0qAk)0D#Y&dRjyOU_rAFFKU;XZ6U#T< z_}9!L4{yNvl24J`B#CKuyT=c2Yz!hxHOU1;b?1v5--}SRUVzN~cmFBdMs5mVJ#Eh=xJ^{&}*?Cr<7TIt0$e%S4{+miO*OVfDPmmBuxO?A}geX+Kb zt<%E=LkzvXnZo0`w^BC}V>(Ti-L&-PlCnPgvaKoam2j?CW22BEmlj!NZJn~Vvas)$ zJowtm%2AAAme^s1;|pOIM$BU(l_3fpuWKNz$=_~{$MsoFEbEQJV0E3IcF;vg&@ zK>#R}0P*$9-*qLIdQz19(vveHL-qJ>q^hOk;XXFo+TP8q8>Bi?4lhSL_5uMSAA8FFHwwJ_w;Mvy7QV@-4Qmd;pFhb^V*h4F4 z0}_=Tgv8Su6qv4eDe;wMY-PW`LM0embnUpUbS#9fLiV<8b{AYOgX1Yn)dWy^XURQ2 zkB5*R8}L9RL997932kpXf@+k00&yld0bt52j40$@tU%avIr?!9ito zTeZ@0e6478h51rEF|MZJI2-5JNzTLGu5bXqF<-4C-o|%plY&w#*+lP6+ zZ3BssnI?e9x=>a}Kznb?r&1PV-;a62$H}ntdH`{rMz>vuBeB}~oWdnygeM2f18VNG zv&+E57o6!~I-4{5QMVGEn@sn>vUAH`VSt$#8=*;uxqu~3Qbn&vEU|<(usW5(4-Wb^ zD={+3Q-dd!uoNXop;A;tfk-h(PriNm*Ey_x2tlNjO6B4akmXI8%cUlBzn2adxdYOE zoOWqnIt(MYi3m#oOQNT7 zraF8!H40&Rwe%ZeuteN)E7o(zBFikPmg`m*vJu$<6j=@LPsc74Oh+GmFw8@g^sCdR z+UKUZ>9ZZ4%fSM&Vs4w)ICUpdbFwQ;$f5_uY+(^yJ5_9LyRQ%hZH+cLPSE}K!z=iv zGY-~SmJ?jz8(O!~W5R6=WtZQi7|0#BLg^7g5ZdP3b=O^Tiukwx0fz_yAB6S{b%Qlw=p4(OiRXR4l4LgSvZe?S`ss zxIBFRSgXachWoI;!$|&zOtL27=&?&Sl1R^7QDcOXr*{W_eoClY6sxd~`T@=w8mTRH;TY1tL!#s@2n!G#u_7N1YTwx03qZuFV`@Xm$?`I~_6VU- z8fv00%T-WeJk#ri0NBDpiiA#TX=0D|svM${DoFM%jgTq;S}2D}1J#lTLE;wgdwk%Gu$F_REQLl7o=++@;8_h1qe$II^V`Emoa12`;*)ltWj zy@`BSOs>+CjWb3m&q#Epzst&o#TXpJq6&6EI&bm9>q$TcNcay{AcvW0Tr}H$^|QQB zyXmBTJL2aMZ%RuA_?OG+o^2rnTmvTMHD{QrcYD$gMZ5Jxx9>dtYH3VRgk5jxu(OsZvsutc@g?;3Dd> z54Fbggbon3H(Zv+XsP*-1)_=V%Tq3F!;~Ar(OwFc3usG9au$ zAi;txSr{+p&*h*raYDi%q-JgU+lQg}a4o(UpG-~~L#LRJV%c(pAOw;rAhSK2I%b9V z{%6-~*_JZDu3LK~ib;Das+kBOyWthDL=3oAF%Xly7L*au8UImSJMdGKB?c zal%`e6zFo2nlvV%(0W>`G@$SwUx?3v#Eug4EOftW@O}Bt+)?B~=Kx;_Sb!WZQODM? zA-GNczg#ypy11gPu;ygJXYn?Cl`_A~zFYC0mi;YL42o((d6*q7WH%s+4i0eSYIspX zS;MnrEkIwkthsPFxt0Vc1dMiiTXCin$pA99V*e|^a`HDn2xyPi&UOzt4?|a^4P;Ut=uslbk(?9F ziE9JrO(J>4M<^}J)Tu;}fVCBB6lKl^s27&!tut&=SSogZa9(yMbW!GP?79B zkf}`iDJS3cY5($o0uk?bsr-Ep<&E^bto+HSpd-lWJ$}Q?_?|v{<(AK%hU7!e@f)SW z#xdh$GV{LTWTbU;e6q_W=o$T9crm=&kz4?<9Kgvjy+q+%*=R2!@G~Hr2X)vp7<D%$k!>9`H39e0VBgKi?* zZ7V|5jM)=9E$q03b}|ZGzQIo)B7;wDH6$S{PVo^=z2P1ja(dRpAW_y=9wh}M)V5*l z4rg(sb~$W!V8f;Siy7<_D{dLCz;Gk224t$f^W_ zB6HT(6eL*?z;Oc%c^?DRg!R7J%-Vw-wWqk+yW$qb>EZvQGzFWEhnGhV z26>1pmaiYhQRoeO1Z z2sTrGrsi1?rzN?#q2~brT;c^4LNz23zU2$e-@D3h?=bG$Jp*=DY3mFp8sCuox8G=+ zP0di!f`sF6wYqRR_iXX&FJ>9^%M~B_%Wji|5GW^_l91Z2i36Yk>`Cg63J(rBw<`?e zOWZ1S*1GV(?jQ~Z(Wu)1D|EV6YzZjyv&Jah?)WG^+9#4sT@Xqk?jKJCqaTaBtko$b>fKQ8%TvLeiIWksawl&I6at^99hHumupa|(n6h5XC|$jG_0aGLN~`~KYZ z*Gj{jl|FbJ5czVRv7N>eL(xbzD|HbcPjZ09#u~QJdJ_azlmZGz*a2_32*A1^9nCC0=xR~-sCCw2=OMnnv(oP3 zKW1JUrZYH)KQ9a#V!G=X0MIwzd*gMv)s`tKI@2`&+*Ll^~GEuq^rLMK6_lA4k_~3?FbgffvgWk77QH&SpM+jTZ z^NeEilxGIpg^If5rLlxz7RKd1s0aWd005#0KoBjSTkz+n9yP}HQ6cu? zfuxRHUe)$bvy($GM%p zUYULVUOK~1ZxsAqpRUZEO#vCVt2XwUSRw&rI{5sZWcK8D%>8=){a0y22?{GJVFC_3 zZ=cG{uHKeyyxU<F38eUT-RdT2+cP?3DL6!Fx6)274y2aN!C!ZnbKCZx8N!tHPtp& zFH~DdM+eHX4Sb&{MP~fdCd%lxDU@e09OyN-PG@UwnJQMiyFfw^!WP&`eX5KpDo!#1 zAV%TY7nY8R`6SpHB!vnkW!I>^0SH1{E~&gq%hPgz2QR5~C;;dNxU@8xA|Rx#t^v0c zgd{M6q)n7W#|pF`^Y~<6yf8~8ZbCcKA_{GlarD2i$l>49Qs57K1B6z!Q8aAa>R0^Y zgG|vY;i={c7h_;WzwDeAB+-({k$Wf5zv56N0SiypBcrX{1`z85S3Y`bPJV;k|10Vx z9>}(_?B7YYXL+?Qmci^ZcxRan{__>;annO0jgrUee!m~XxaG*GNKsWP+S^-IYZ}@$ zMJ=G(jZ%$`O19fotx;_eZMNDlX-XE`MM{-p1ZvwB(!~^G5fMcZRI#gCDvJ)M}ZxXINp=T}PV(rF9I=Lag z_V<00FW33_*d_YdU{P87+PXlDj!9S{iF%3Bvc`?OwDTa}hKch|Ih?tnJUld*r%LPL ziLKPoE8Tq@aO3s3f@`KrTBAh{4`AlE@Yy27TLZEjM!_A*NXR`F z6w6Uw<2MVrN`^PsmAUH<*&2- z+4i;CC6+CHsoX(B5Bts$$dc3~5-|sIK#CG@>iOU8Wze#BSZuBLw)y2iWD4tHYu!jm zM=L!noe6mbWiASUi3*-AjbAAgrz!o7u)WEZq=DZS;~Cbqgd*6cm7Qy3tmgCyRdXw( z$kLJCvXQl^qUnk)Ko~YMd*kturBMuy5~V9U2qN312}IihZMRNz5JN~Mb%O1D6?|66 z%Lh*FqyV-FRAY^>k7!2vEtIWpbfH+05(W5;4GPu(BThQ%v;n?_iiy%1FPupQ2@*sJ z0g)tG0o}Fr&*{4o_aWF~HRx8rEx)@F(h4F0A_}r9oWV^XDda>G?VU#TJNbHMcpQ4b zbc5tJb$Z;l^|zZ?qZLE!t+)@+Dy`?3;K*_P7;e%gi6o{)d&5eqir{er*z`QTI`#U! zbHGwgK;>;5$wxQI5`sx`rXz2_o z!WfXO^P>lLWgDq_k)MpNV)L$k&(e$@3OW!2j;_Vh1d|o>x^a$w4c?sj&1*YNYKUdI zT*kakAaN8do?#;oGvHpFllgclgB4@fsQ<6*1e2&Ywh4uArsrj*blN@ zP$O5h+7duVO%%aIgXe(Ar#{^}u~_Er zF?+RVmqVro)L{7suJ%Krz*&S-$skmPLL(tW3W2l*21QvEkrgCXL1aXc7DhmjP>@gs zSr!Bq02xXJ1qxUNKv80dAbK@Wg2F|PQWxcAhJ*Tjk;K;uHGoxihkOV&} z`u+Exr>^(<^`L@2r?1I4_um~4UBiH$s3<5P$gDOWTY9;! zhhlKYU;6Q|%``kT(h?RT5F%$Uj^j5X7Cj4X+FvK6FF2RTEUQ)tqw-C-VaOyn51#^1 zn({KrLP9cf)HxaD83lO(aZziTuD^~QNcnpvt>EXix?FA^;lD+F$9EfkHn&K0n3o|W zlU3Y58FuqhRxjcA(wbRZ{oaV3=Yzi!P8MX6LImrl7d;Iy1r=*U&v;i%u=Chz5IEhF zEt$S1G(mQ-b_`Bh6z|h;zihZ~sbw~m-B_O7!vrIEU81zMiDyCtWJt3v8FywnE@c!| zA((Z~vGvi}SSpN3uZ-!P6JIY|)VhGocSDQr7{_>)akJ$bIT>~7CS~*uMxn405C|ZO z3l=e*E)2mSk&3bmiv>jlR8Y(W!Wd~Y>^;lzg9t8=q(hu2!{51+W1x(bh!GKD$cLJJ zG$K6y8IksAuc`9gpAIEOhuw4@n!+)D4FKZP-wQ{~gPG&cIbNSrllL2!f57TVK0dw= zVyLU<(JV4CRUK*jS>?Tob**qij}4YP5j;%{^H3;j?}$@k@wMbsimS*D8T?-Yc6XWbMDRwa~X04*FBeA20hTZCw2=tp#w<_ag?8oXL6&9 zPB-3n*E{L~EgubE`xp;)#>aeA+XopWkdhq@*Qc)$4z7;jQ|fd&s;a8KTz$|yZf#O_ zJv`uNXJ{*5pKD3`XOxhDcf*wwRoJOpOYrP=*T-?-t`@Cr;HAo#tMgSUR#uoHg#zQ_qWXq1f)sF`DS@8RNNP5=kVGke%0- z9`~3=C%dj%VOA-mCmSLSxQaOrMF5_Os4KGlIS=f18iL;*VL;Bx^=#{-#~%V;U`AN zoaHG>)Ya;hCJ++%)((8)adhW7)aNu_NJQaeod`ixUC^B%5EPj_q&J3%c0BoaX+KyiqMe)5F_VhZS2O9^rc21EfffSSP+ zf{<+?P=Eu)AyNuK%0i?nK}aY;LI4U7SOSGfJwgH@c!>F^83$RsgK!flB!VdgfTR?M zOF)O(Aq}Ao#Dad0@xUSAo_@GPX%Cti)bmr5iQMrOQDpl>nW@3U$+3hmys06@DyXW8 zf0;{BYihQ(%C^;6ZEZIpZd+|FQ7yD-X>CT<@^DTVK~FYH@g)G3h#bB9h8_&Q?@l@J z3-OcF)4Fu?J)V}~l< zR8mm2_S*)1y!vTTWz(q zsCuCC@w0iHMW2N>H@P1oK4_X(ql?lbabF-7cOaHAJ-{=+tKVAW&TElWgI7T`7ax zP*>K;ipGdUpp%YWolCf_E1odERnH>B0D<1COR)~E_v3x{;(lpprHal2^)}A-LSVdON6lHaj?}( zEEyoh5kaM&M=^?iG@^=$fH8$AlO%NJKCi7fmK>rtv|J(N8qr`H*$7#ngCXRohf$wX zgMi0;XYJ%PX6L~AdSMH)ZwOfmMjdk6UB1}~`)8>)$-)s&1+q4jKZPtq_qHafQBY!_ zq>DV-exHm*ibO#K7$7MY3JAay1yB|Msz`|ljFCZLEEqCDMMMH3L0}^!Mnxio1_*;8 z5rW6*pJ8X;A?;Asg2eTuK?Dl|jG=-YpH;QNTjXF22Aj8TIeM!;xP(i!*F(M^`>N^Y zwo&kujzV#pVOrjcUX{9Dj9VHl>#T^OS!s>@Rv zSqoug68KIaNRUKD2#{UU%PLM1oMftSb1qFeOgbISeK}akX3`qh;MGh?qwg!cF>+iE}NNcWjagxS& zg^yfK(K#;NlFm-l0Elcou%vZx0Y}sp>7jD>H!n)KH6foK#dXxd73SB4BEM(_u5sY{aMn03e9;mX-~`gr(Hkewi%NG&lT6l4)BMfl@^b#ca*?nr5_P+Zlx?hG8 z$YD?hZ?;sn*NHWa-1#BAPa1A?y%Qw%(m;Jv;s417j!Il z@ff;2r4WG?yXAGzxt85!vA6-tKHBlmzlOVMzYMR-mn7;$eBd4t3lWEfTq3uLP`R!B z&$Uq!^X;)MlJS9utpI0gThMe&c!CztR-IyB^VS+?vPtLSo9FrDhrwXoQsht~NWe5> z`B}gFztjAG<^8{oAGIIP<#uNF+|pua`5xKf<8-6`mZj-T^Rl8Y|8{LVZ-)Q3KfhP) z|JOPRrUgi?mRJf}tt!@1T3XR%VO6dEtzt3D5})64BU1eA=bf9#9~8T^84-YrgAQs@ zN|^EgxYJB8z2SJ%OtxN);{V;_kEayXhZs@kC#oF!|KE+F*xA#T4vIgkeJ#aq)<+e+ z%r#$qzvanF#Z>Lej}PhbvH%&!&+nn>z%bXY3wuh`E5^fDr79?fu@!QOA?kvM?{N4G zHOSLQG{_jmimL`HvNGJpWw|PhRaHfgCK;yNTMvZ8V1YVIFpgioHkhe6+x%y9azkwY zkGeu0XWUTN?dvv#$RY}V^eGPt%xx+I0@|^N!~U$+6kiOYBOtMxjfbz3&^Nutm6lP6 z!6iRsF@ds$))yxiIsbi{2ZqE^QA=u~RHvo(|8sAT5t#x@CVJ*$cs;51;rff-n!XN? zvMC0BUi?s>96WjukH6@dqv&~_WPdZUg~@US|Af7D?83@@#{@_Z>QI4Se1viQmCXhb z=4TSO7vy2YNcfg<`QlH@ok>$1Hhju83Oo>r+0j4uZh3#7-9U4z057ML$>b2~(PReK zM1ucy&O`Un?N>x=_ulRwx$yUb2s$6>ArdwLB%-XEPp2yX=E5k$@Ou+1Gb;R9Kg~@ zD)>uz?t8R4^UuK!Ocrt5KJAT8Ax61dGdrK%$qb7X5=OY-vOuv+iZF`>RfwppK|&CO zSvM(sd6YlxRKn#}R|`A^73TqO0YyV){;&ey0R2e`o6oi^o-r(aC(6Pp6e?ep{$Fm5 z?!Z}cz{tuB`11oq|6XKz6d~O0%buMmsEH?=QqdYf{#YvWkOjCPSra3+vUhUN{)l^kO`>kT#V6L0J2qI{wf3}ho91c5tv8%)oWpC57k962Ua z=a*P?%)?30`X3l&uRnyT_TqyO*6mrj28KNNR%&92j!bBiBiTlCc=Xut{4cT0Lyd?F z=S??GZ%A9ukHP1T_!137a)R^qm$O?_V#GfCsrfyQM>(5`6-gJ2);i$w;FlnWGczRL zo9WN~Yev~^J}6LVB!RbRDD~rHkt7H>A?z3ha);@qU)0=jiYSMe3&N2aXf99=^nX$T z2n?SOY=`wWfB}oW1HPJf`SLyiD)E2j3)w6 z_2z{9|M+w;F#v?qco*{eTVH0Mf}(xVj6wZRak-?KEcYi<_B%pJIDfvsotLk<4c!g! zSQGyIK<}JQTJrqMx@zXV-oEhfE=c_;MLG8)f77J+tdEQ)%KUni_L4VFeT#94;P5H7 z62WM;q&rd{SYR%~V4~v0s{u!CF@pobT}X!(gQ5)@8S%@ZEU0gc{*JPuGPc!44TY(K zrA!d(lITp7B`j`%h{#GfC5w@RsU0BYi*pu6DDtOI8D^rK7*=y=(&%}3`Ps(J;k?kC znujckWvjfQZt-D>dl|-!%S|d{!g4% z8B3QV1fEY+n(4kXzHQXo;nAT^63L0umL0W7ro^eI4!4X%ZRHs!tOqe1u7DR3(44!2y zM%^$fLn&#Zl^t3&q@xP46ky9Jm=vW+a8ZjTWkrJ)AR@*JFhNkHVN?V}K~x0=1Zj*6 znGlW=mqGzp$P##w3Y0T@=B%X`cr6mJ`Yl=YUjGbPC2HV#^B_*x67~ zIXIKYjrn8|2WrHK5gE?8^gT(jx^aMqLG{=PL;>UxpzkQFPN={VG|V9a839I=PMi&! zO*VvHQ)-7aup@XI+8`PrG9rfL1k`{Wz&xJ)-OAe2X(cS|76p^c(U~l6s!Lq9ES*_2 zkmUkE2qt!|ypLs=gdVnzv#f(LWD8&_G$e^kUMNmd6vLsMO2#kQK z7>rSXuvAnP6+spXv53M94O0C2ii;L1BvBYBs`Q$ZpaJ|2LK4lJp=vf(fh?#$*-6;y z&9KAE{j+><5Cc9`mlYy#zw2~dm>U6)??8XlJmj4cC~PRjA}ysULdp~yAXdlWKHrAUH!Vu@hye%$ zAe=ha?*RJ|OT<6ef}a#p1w~6hF@j{t7{#9G zi%|>N)`0y#dw$y1pW`k5-uh#5svmz|eb@BF@$7$`Kg*-q-+d0L>L2f|@#Tgb?}hwA z7IpZ2KMhalMHGEy;{45p9sG0rU(fyKgdj|#3Zkk)p^57MeFeC83W&&nGmWsBpyt1F zP!l4H1P2~V_s=tnrltssun~ttWS4<7Kwb@C8l~KsC__?DgSRKxh4k@|is249wkQjkCZrMK_=iv2PE;ZilPjR5KvG+S8@y0+uB}f;s>Zefd(*< z68bDekOFcII#6L`%(ISO2E&^WBozL?qxRAffeoYrk|Z^i9AwA~uNXy&0VHA}B1oQU zkW_p(DbIm`P_0I7EP&-HS|8=IBIXT*0t{aGcgR3> zqsqN-Gb}zT(8-5iQfCd*BL0n-%R9pc0 zo~b6`U5J`Q%qJ3a4PcoN5}_i*j3d2QB@w|BD1aD`2%~ZlNR?X89P20sLCDoCaDZ%u zkUClB1bHoNw#|%=u2h;udk89mB%V>w8Y|L7piX2G2jKDyF@fCn`Qe}#jAE(`h{O>= zL=PP#4i$=FFJ6*k1(onfcj8own3*f{&9kVNAZnL-o#vMeoG4)sA>}#?5Jo^|5rNWd zRoT8n?tF}(I9XUjp-z;d51pbh654|pu(TQlfoK%8l(w0fCIYbpMrzR^49xAUg@~HT zAg~CeCZg%Pu%VzMH9TmhK!FO1NJyj*kQ8J9L1+kpKu~F_SWMeerj|KFJQNa8mJDXG zL>x@O!?_70o&>47cZ_+Y*7r_fVIl6|X_BGvXG6a)gRTS1WX%>SiLDkSLs3{!f#Hy& z1;Sb|8$)(v4vf|iECAM3#w>+FR4gH5aDxJjWAnm+Hp5H;ArTlUi34nvgwh5H1UWa8 z1hjJ@C4#FD+}CWWCfGq>a3nDyD+-Zh1(?N<(rHARP-GPaR7Hv?un;uR6gn1}L1Qg} ztSJlxn8=oMg(EbPXu$-Ut(1rx&0($$WZ^#do-EonoLF*U%R9G@o36Njf>kv?%`%Q% z;a>?+!6ox8YNK0I!9Fh|Jb>v8-Ve31H!&aLZCmG>mK=hqO34+C37XsOAe-HKz-i47gB0qJkjc2%?P;R>m|Ogog7g zCWJ#_q6tBK{ioxp=V~E^PA+zuBH$N9I!U*}AgEPCidG<^G6)JeNmwW=1zFm_pcu5N z5)qkH3|Qsh(!p4SgJUGZhKe~EOnrYR!5n!JGf;*l&@4hERAdGW1U4MxJd2OI5Ezie zFo09R64h{!xlsYnLHXyNU^yFrj+;H`e$WM3CWqr`3i+qD>_1)xz~%_LbRmcZPnPcg zhO!4%9CInq5a&kRW+P0(ilJC=3CrD*a(Ck-;m&$EE8CpY*m^^NsZ&xWPE%V>J9!pSNqJuS}J!f^F?=9Phix|7ms!z^IE68ZcW~F{Xka>90MN2XAh2)^NpQl-mqn85o26V{ z++m$A$5yPALxdI`44mgKCsd+N0S$AkQWSN_;|xx=YA`VvoIN<8f*iAfH{+dP&RywY z2Z0bo1%iN)QBfGhSTGP$Aq5zSsDQ*`h#-TGskjhfsw5cGEt}UpiU3%vw5Zc%=<|mn zbOdKR-scmAbu9;11@9;J<`D@?X!{VzFgocOML}zS5)mw0(|`!>u>*q7XsCRuz1~uCpqT#4gBSUG^}xDz*{e;Or8JBmhyicjXA@K?dS< zbzuy!wRRhYy3%w!4`F&edFV9FSWf%Xz91Wb&Ke6aV-Q6&*@4qrQFq4fnK*9tYcd+= zi0&6+4l`3P5Y#Vly>77QV9o^WcI;q0nVpF${?@|6Rf5oiGnt`z*y3mY=LrF6e?>+ zNvO^zQ-ba0ano_{qVOd|P94Z*2qSrV(>oV%6*5wQbd*HI%3EC=?CF{uCpvhRaFIw< z6fu*U4Ax@}JvD}dI(TF|TS;aikwD={4smm1`$ml-(bb?u@1XImc65^mc7mSvjOx)> zWuz$dC}bo>t%|%Tmpmc{Hjzv*ENEf@L#GyF<5!IoI*Exf@4F53q}XR&LYOa-0gQ9B zB*QZxVoHRzP-c@Rl1hYnSYB-40}Bok@wj2QL6~W~aTEhCTr>weJCS4#`wZ)|o6y%O zoQbrztZX3YMgXuS0~=Z)sXbU_hGX@sB;d0g@_xSJuTcGsDT9%3L>qOfr?n> z?gJ!7fhG0_EVzeEOQ>wh+ykDl4duy$4lBn`E50EP?~QQ>ltA+x|LGu9!c*6ikSXh-3zRDUhwOBx~D|`^mQacBZ_F<|l zfxsR#bk4Ib;L;Q>=?G3E8l3xBPm%|ALx!S}PSKF%BvV2hyJj})Cqz3YAvMK>s-#j2 zE#bw)3Yd~(I88<>lM=z~$ZduoEEaj%0ki{oMHHCHLBy)LV?`#$V9g{J+Hmz5J`VRv zhf#Q^ZnQoLipkOJ&WYy9%dKfFNZyq1;urJ#>cr>%D~-y8&`rJlTil$vKMvu4f+J#F z3u0GD-~mgqB&dJLy)bQ8xW}1e< zn@`0dV2G0w<_ywu^(2i$=5;7z4n+3+X`GUo_!R1sOe{leZH>gU78oHDIJZdDInB_t zQ%z{yJ=<7Acu+`1Jjes24dAi>-UA3FqCU}GAnP1h7{M`smI)F-V21hk)_{jr94B!% zO}SpD2BxQ(fVqaCBn%`}KBo4#Gd=F$zu=Zg2-Fmi5Ij%)u}HddA?eGzcjkS0Uogyv zX~{q9D=x*bHWlW&2NkHPj2HocL4yQK5bWeC8YTawV_)PuXP79dh=>q^00!_FK@)}y zLQ#+u2`G{T1C%0w1PK)c_{>JeigWNX1PrZ33Jp_25qV2HP;`xxoTYd~*DN1Te zLMK1VAoJ}&;CT!~CM1~dF(MzAFgT!EF1|k`4-!Ta0}@Tz5VT*9UfA>Jm;rzg_(4eo zX7KA597*J=bLde~@i##?(Z7k}axy+!c7Vod*ItT0j7o@~iY%2sNo55-yVh#i1p9!X z7{X3Pxr;(x8OuA|TadaSeu2&h3Esai(v84@%8~K0s)qBk85yNUEfFM8kx`Mc1qAM8 zrtyzhfxtQPIHu$Iq((_SGe)T>UIa*x^C+fG&!V*2Y10-9fl3%oJF-u%SUYv2ofZb) zUf(Cq1{BdD2rNfv)skBZ5fVoj9WnL0)q?^Go>IyM-kBPD&x|D4f)`KTChBn?Gw2|rP)QUd zkFM}`!YByx<_7(JBqIpVPuygF&uU^Zf!5ff@KVOhK!0jz&FPB4s+gYL&R7+(Lm}ia zBiJKwbMAZ$fG)dEoh*t;i6`3}?L(@omUuJwJw)Jmwi1aAq&dI_L4xm2rq@KLu(0nI zLEP35p#MJF%{2u?GV=4+WFgaFf_`!vVvy8{5sHPCB7%ydDikXkTSgUyWLSwRMS+3x z>-<$wVnRj)BYMh#*lj$#eNB9~?>TTV)JZ|AQ3J%0p8TDDKp!9w72TpU-GvF&b*`G~ z`l0n-iYx?3r!7TM2ejiset-q26UM&%o$`}%S`;c@#{Qm^{!ar4_eF;x4f=>hae$0s zag30XMJeVQ;y-YbOz`9k%aGV`g&Jel+X5TUSL@@~IgI5Gka(DJ>Zd2JUou4UPHy;L zw#I@GYw1=%kuw*?)ZD0M{7DQ8?DgVp0^t}ZSgQ|0zb_7EQ@w>ynjbsb=7FboWQz*; zO<|0S+q?a3bPM0eRK$=7leB4zATkVy!Z2AFD+Vk@BoSCLMS~F&-6RiINTB6}K`;-G zLzE%-)yNOCP}qW(zDfE4ra*G8$)-=?p{W&&4u?Pwd(4mkEe};117YmSv4TPj2+0Wu zPrzdhoGiBK(nG;+cpq0k#612%A^du5sxeb^3X3EWQOUFrL6As{j71g-vLg}s(hlXMXIYlYIcx6pM|-p|w|oB)Jl5)qIBK#(RO&rhWCKc0?jiLQrS-&+a!WU*pMEFl$9B!Y~H zhytGfOEPtRcxxgsdip`I4%W&0WK!s#gGU_8^zX3hWe9)46v|pIMO%p%q8o95#bBU} z6l6vmwIom^(hJB40KK3Aat5(Y5SAhp7NG@zNNFT7B7~U93>a`_2oPZ+L-MZ)taET7 z@r56y!_9PYRo~jl#JAJ@7|^f4pR4(C{1oBX=swII9&%z;5<)~jbjvXo1QrU23JgR0 zn7?0nJ#6E)r1@}6=_ra4kmM%{eix^RwhcnCi&%+D9!D2T$U3u9f`pX_Q5s4hg%TZe zCQ+rLrKn0W76ok?Q3|Y8ls_>Ak+!lU0AeBnlVplPMUi0LoyaM6yk z$xlRue(9JwPBvwN_*AA>fA!Rd0s(lFu{ zeT>lcI68)Gp-f^~>YEZn2mm`L%O|oLIfUB@Ks!W`3`{=r`6?=?d@p=Iv11`5z)2S* zK&v2_c*$-VBM00|B)TzaKveDVU?0P*r=7G*YE{B}iWCGQAe9C|57fF82?RjgEM6z> zPV4IE>7qQ44;@qh#4kn>_P8bBBn1Oaj*{)=&)zAuG*u+wWKh)Fa)1^;TGA6FJcdv$ zB0)%s0-q;GBteTHLk{=$!`2_^fqNhsL3_k4ZB3I17aN2W$|?X8>oNVgA{e2$F94xv z)s>T$3kC{6b6f`qf1EHmkr6{L%<|jf`C~Sg8xi`p>Wdv1E%Bl3!2aRCNWOQW>u(I?d6?P8%?X$t(7w^7;@H8KCf3DwL3g~_klbbFAUDSnKqGl)rwrO z$qip23}%zbsJEpjNB2EM^T|wzgCVw|(I-X+J!vzFNE|Q#OGrYxO)?!_D;%J{db~bf z4slE@C@hC(uWoaW)p=kWO3u7*JUeGpIBOtR5-P!9awdjKB>@gRb;%TjHju2Tv7C0W z(ip0!YSK}hr&evBQHK`E!_}QryB2s#&AJmB#UamYB|{#EZ#)g9VkU>8TX}OIJlX{* zEL4;Pm{ECbH=j!&xJ5wZa8i#1E-sNkKYDJFC{u3`WL6ssOa2d9Y%8bmS|pUGYb~suqK3ib1|YWt>{c zwh+z>;_>9216N@Tctumg0Eb3QiPS+uZ1+BdJ>dpLbuI4!!H9r_4Fgw!Rf4N{wt(tD zHefkog7rX>5Q%uEhayS1GO#GjQgu%(Dr`!rDoP|V2zc|^o*su_JdTEv-16Wzu6$X- z?i%B6r6HVN0vR{dR{@aF&=P_I%fJ(-P}>nucpEszk)0|S7*MGON!Y0=B?8;BX6dGL zFB3Tk!^~>)(+@XDY~y_E(10unBqjth`lSRI8F_9mD+)CdN`VDR1|*O*YCGVCU?Z8^ zdo(<~^PIkUofvpSqDiI-1H}!#9N$wE-cZ{%+usYA^R6=1+s{2&km;PvW)u_+D=QTlJsDn%g@OW_6NAcz zbk}Wgb+e5X_T9SaM;Oe6TE(MDA=GA8j&iFxfdz*(1~9JBXuwD#XIIYNBq@=#rXZ{; zvs|^>>#j?PW=qDQ2+FLva;#HuHE{*FI6*9-{|(PWEwhC(LT52OJvXD3xSVUByfsYY zlZJKdb!LP*+V2%Y)%G;`@j{WUQQ+n(JkYV|hO+v&_338~K|t8Tb+<{kT`#gp+odAp7J0Rpla^G6SE3xVgqgi~ zbQ5eenYwA`wIYPu1Y`wJS^=bY=Q=;_llDB4iOA~6Vx2pbeQ+yN21 zK+*hqJw=Z$h&&E_`_km1hoOC-b&Lvu>I|Nk@rGL@#tIM?1xYap3_`|tU>I(N{uCf{ z8Nz8*ld2dn6D+G3ZJcy&jo3DoQDL?htoRA%$9dJ858@waf~x{VkdhE2At1-YC-QPc zK<*FIt8gTeJ9h8mrR3>iEhO;t}Eon1#3j;Jc9Uv7X7-5A=7Ab>57&J8|mm$21$mEn2I5o!| zpchd>_)+o<=7E4}8kqxYXAs*a$7^nW0g@NcfhD1l_iUXHrftuLab)t8%H_gRW`z0f zk^0u}Dw28~vl%KxwXLP}{X;-!Qg-W}#I>blhKg(_PSc)Yt-;{da)A9eF&$7j69iDn z@TPNRPZ25(=qW@NE6ZYs*H%mvMT|w2Dxqw&KoOV9(| zV801PD9R0K_=oI^Xp2T_814^quf`R3K_HP0o%uf#ejLYlvdy*4XpS;746EEnu5Gq8 z_a=l?%oK$X(WPxh!_r31lrvW<_m@(+&y?tN6jF{Z-9^XOKk)hC^TX%!e!SkV*YovE zZJ+OoRY|SEO*nnvt%tk=@4%?cPUWN%k{2t;%B`S`+PClA+qo#ARZabd?{_;h+?$TAQ#2GZ~ExCFPyJPZ8XH`hBS z_od!%S#)9r_-V{)U`jdc>*U4fp$a9@?@!d$8W#CAMkl{I0T{W0)#Jz8V8v3gvpVEu z*|i&RJlB_eT`@)W?0&B4DR7;1d#B#*SL5p(jjQdc;Xj;1WekwWiu5{^p?40Sy2nL< zTfjGbT?#y}oEG6h25}@l(SWVrxSz}sU1oS=5pz`Cz1cjSo@Js9T?T0HIUVE-WA3>y zp%b05%XuvfUbS@MGkD-zv44FrJ3S7(S@e)d6Gk}B{#`6&v%C}HWnZ^H{GgHTlN^I5^x*@nc<8uVOIDdNW8M# z=c?ptD7vwKNU1^h?Spe3&K%8e7Hi)h9sm3%Q*LPP0}P}2RRODY>6AO(bI`h5OS~ff zi5G%OF+3M`sULddUhqP|Own^^ekf?3vt@l7^-Ka<85paiI%g#pG^eHy3;7)lrlfWU zyZLv8YPOh(Q;<(Ev`MEBFfFYHkVye6t7YvS`+J=yBR^?p9Tc=X5vroC-IbS4ua$&iS9iw(3Q3718c1qZPx$+a}fTPJO%Mx1?sCZQ?opM()tU!oE#r z5xFHPE7zV)GgzbgCu3g4UfOXc>8O&Pm%QWlA0@}08fRU*vT`G`cJF>9rcV<$Eq#lnEtkS*wg@yTWkgbH{kjHX zu2=8MpOH4hy;L9iqUpkFA{1uo?e>)s5z*D2RUkXz#;7qYYywbcu|+Qu7aw?#Pwr41 zOrNI3ys(JMKl|NmPll>7U2yqezLC!H@$C9u z>rk$ROvI=UXG zpS*W`fmB5?>6o3~2@$>a3qkDO4IGsxW8sL5u?uH=D!a%iEDF>aWrtTIODcpWijrX5yJC42X-qg+Mfpzg>Y>&yL}~|UDDto!Yih7P z3K6Z7)4a70ybmL1z-P!`o}Kke!!e1*exObo3ZIOIcroO#M3KNG3vV3MK=U)i;Yhy3 zZj>5El`ak{iMHP{7PCEY@M4`uF4T-w?`!-e=*2Mb-_b@J!megZ`7($XK@2Xw_3{DI z{ZCG(-@%tx8<8*uvw^ubglA|cZ$`y2f4v^Wb(o0 zKUvN7U$s|YhUo+h+*v&xO{nVhAL0nV_6qx#^o*4YP9*1$gOxnC()YvCaMxKxo=b)< z14o!K-6NE&X1N`p;pLH(!pZ^Q=exHqyYubhD(0^6Fl7gh)y~Zswtm>Md5tm^PNw3> z8LFgRqTzITuTVIL*tD)b$f4(_@}Vvm(oMRnZbCVa^cX>&+@B>f0-hdA&3|{GvnS0zNt)FdO*NTYfG=cc*?#nfU{q zz!AN4R~sG_1vdVjHO>3^5)y2>PxIlwRiCLgQ*kDN-tX^+pKM;h%FiS#n4L}vz zew;>h2+qhAAwdj@bAU`=HwmMx1^FHrDMz7osFoRom6(jUZiP~CqzgeQx;dym*9dLm zV>I>}M>|^1^a3>2PbC%3AY~v;P1^$8B9Iav2_YQ~cbuR&|D7z+xJveqd*kLz@HdX2 zZ)2kf!A3eM1iqMHQl1lB;H-=t@duhU`ZXdSTxJ4C41g5r zgK@I7(!pe)P?7_+56z(wM!L#*GFK7Cwf8ovq+5tEZ~0)6fniI2egQrc<}IUWv@vKW zLt^lcQKT!2mpUI-I6UOBkb@gN-f$yp?!`2C?4U2Y-duP!&*)GH!J3=xrhxNBnoEO8 zE_-}@yyQ$W6rVHcuu|bp>MSvy=u9TH|Ljz}PYoG-AAW)VQmM%1sr`BtWdEUZa6DSWFY{J8K zRx@>ec3v3!vs&cg&k0&Def)Rq>>0FMt4n^a8<1M%LYZ zP$@G5MHdWu=inOr>Y(tUvf=DSY;@YU^+25GB3Az8zFb*bjq@26f`TjL2eNB@%-RaV+oo;!KeYam@tMi z5?RY5vVzQXkWj2HdJre&nBeh^#vxv*0gTb0a36F3pt#XF)j@xdFW$SXdN;!|(V|YZ zi*E_hZAUSv=!fMO@`aZx z=Z;MvS>iN<%k}kG9;t(3eQT)Nm6UJdg6A!uS?@Jb-n3otYhOpdHy!WEmaiYC54p+{ zOCtjgs9KMolS|`9Y8=ql%vB`FkF&!D4_WNNDE zJ2mK38hFo*nLXXiO+DC@vQDqWCm^XwEAx=-*{h%+g^0}r1yw&}=VvQHkH++eH`UQt z_f#PwJj(M~uRI_C>y#*;5j$b>w>Re549S6|O%NP&!F^p?xSi#Hvyn-l(mHZ*?(*1SP#V7FeR+Gw^HCyEw7 zb{DUmX49nxj>81-_+ig49-Qo0ZLeTihye0rgI>cUluMdHO80+xB`yJ46P_Oq_t563R`jIx$r#!;bgU{oi-qT4R|`vbr` zt;=U#O-W?y+i6a$Fmo0k>Mq@MLfxY_6ez@M+>?27FKY9{%$l%uk9|oujwz-FE1liO zf43tw#$LYpD)icABe=<3aKo?6;aNMe!<1RV=FEHbcdKI`C8n0Id^m(85TruCZszab z=kNxw*A24w{lOON)G&)`H)txetzX1kM&S*${?(o$;TJYFZx{`3X@YYCw_9y%nM0grYprWZ%UCU&^Tf!sgzlNnm^Q7@YS@y91OpeJbgu(=Lxv z&g4}me6l(JLC#@gl*+w>&-_=0q}~=5r&{18pR?x{$9tgn6BVJ&uU`20cr5luOr-<+ zY@D1zR{uQ>{!=u;w#y{`3FCfq&E|{b2|9zkJs$SRk*dzlaDt3HQvze6$-(bbZ`^)S zIz~AXRlI+WLo4#+>%ie=FI8>N`}TzJy~TJjd%yS4Qo`cw*x2P=o0v!WPFhj|I9k@4 zZaL>Fa@ialJrvfKx-)$mcD@vp^*JhXk4d1t{%I= zW)^i5d{7&uQ4MB?bsb`#Y2{hOIlM5F-8yQ}XHgzzz(x{TGmqW4_`yaK@9(zmF*~ZA z3cj5#c$ey!ztk%C*Z~yBVMGfInQ3f$3AqE>EH$?x9b#E`RpZoOZzrCSIgLH_FU9sw z$B)@F}DPba}G3Ty*xi!))%M|zx+so-A z{&jp`Em5e-Tun?FSO89}FDfo61cUc|>(4)X$Ybf?t#`kvOPAHh3LR=LSNehWqb-c9 z^uYMi<}I=*w-ZjqDn}KAwq|yoMx=^T;ajaj@^Y*%FKMr69nSl=UR`h6GN zh1M?~xQ?+~hvZ6%0q?S(bnGd8J1h)Y{VYiD3YBQc2~I4rEVo{2Ug!G$-_G( zeg@zRx^w{y^lY_77s)*;+R>*u2*>dD?C{YCG2IDg4a~zxs>aT9)wLV()u7%DA8R#H z)XSEHVEcS=Vzy5@vCNQIRwhc8F|5F_*l8FFkduK;R)GL%C-UQOC(kv!GilhIa;Iu!qB!BB`Gfk#jvrgqvuvMPDnD16tcF!ra9YW*gxzKj z9<^NV$O1$~DS5v%UGUP@Tvn-FfasP;Y`TV!)$$_PHo3KMo7Mj^YTzAa#pbqsvdI;_ z1qW||c=^zS@BZG6Xi9kOnOK%Ub}#vgi_OS+nwe78%65h$6dXa9wwWVS9}cR@hDDj4 z^guDHkKu+Y)!aNZ*Xt6h`FP%;iHAkX6)Nw4{CfN2`xo19<@1T>t^Bxqd{WBl%b(tS z!|3VY!)RP8eKD(}9>lxSz4bmXQRJ+dID2e}1^8&;F5KI!d-$H063{q~wq({OE}Vb9 zIVyG)xi?^&N26y4(W6JdS3$Oo+p2@0$J*qAGy4~l&iLaBY?F9iTZ&NjJ8Z%aZ(in%?JlREl56qAFCP5gb^1)oKz|wmBjAa#>4w^XuTIqBn13fhK7Vjb1hnLa<1**e)e%r$A$n~~sBUAKkGF4_mzFPbTy|QsXNHp;s(7lowBU!M zqq`gW~lC$H$)Ozt>pMP$`9sZajt;Z7_gbQxU%eg(f9aaa=&PoFYmW?B>iMGX@DI=+zEK|ENYTcNRB4ZC1TbfPemKm^^P7h= zV92QoeaCmnYupv@q9tq#x8PTD`*Ttf#$~sc{_NTFX}Ci<%d!u)<`)Wo1`yXk8?x7#Msi5jUXL#KqV8Dq!~IhTi~)eH1e zPje*v${A0smAR?VFt=F?_>97yI+l@DX zdL^vyY1{*xg@XjH>2`K^p@ByXwBM2!u;@ltT*6cX_IM>i@RW6x>$%mh}x7G z=U5w^>~si>HPKWebezt^;EAtbRn~d?ye0id?&s*q!%-k#fDF%Pt4g&Tu7X#>qLaB8 zY#+fNE<*q#YcNotFPV}-5OY~VLr4u!45T6eWr87GBY=cRpsxF1!l zYLXRzk%l_^kyu1Hu0E?CF=PbC=U}9V32g4h+d**-YLWSbtj1>%uh7|taN3Y;tbr<3 zC0!Y-qT&n{Q|UZ87+n+`wmo|rgW_}GkNC#hpIZNUAP#+$$r?dF);R9kTWwkY&n{f& zmB0O3?5aMc0;JOp$L+)6nlMl_0}1P+5!eI*+iff4u%=2qGI%DZLoe^S9hhYzC`l_r zR|vgOG_I76Gk}$Ucn0e9NhjfX6xyy^q_aO7#Vle9G94!3mB;~Ajd22UB+nOZ0L=p7 zU_uo*AQ;)$XDEkn1mY3p*g-k`Ln9!Xgb|u#shDabx)IFdeu3x`B9cvk&^g1p=~b0`LFnIjpJ>FsO~R$s;bZK&P2HYGQvqNf*fM6OJ9fz6;V-V zqD=}4qM{7|jc_@ZAGL(0UMs;fWW95s_#U_7={3hX_xcITJW#jYb5_t4M_@t`)9M_H z#BecCO&h~Az(~2gG+3F`8yq z)UV$>0k8ZpbA0W~N6Yqb=HIy!?ljNaNu}qd@Ah+hCZ0r=7(nQ9(>=W^LHYwbv$|SM zp4sFo4^^{P9?!mm);XCi4I1q_$PHuXodGL86%ts?UMjInh~yZ;bRb-okD7`=>?5F4 zaALZ5dYPD+-XH@;rsL7Xz779}0N*Etc&86mfbi)C*m7JaT`Z9I5qqbB$YcrpA?m*+ z=Kd|%H#s#eo_J?qFqBU;rWJ>PDljIx{G5vdua;R>C!Bp}5JpZkC@SOoU z%+3z`=+#z=u?x;<<%G$?rFG9%|1BvMviC@Sy}VlEp%kUJ>&<%)vTPT1u0L@MI-hwk ziD_8c%riCY6*cwO2(GeSMCMc^@>pj{QOJHDWQ6Eo4xCpegS!mA-nyq#jo@e4nLToT z|Dx5$-Ub;!tw{(WU93VE@wzr}t0XTX%^8=4lJEu{Jq8LsCzsCM^H|Qmy*WFK!u?FH zGbPQh=c`E+jCcQh$$A9&{keDe=j7(us3d;KI9w=?NsV6pG_UD!;#`jXi=QFLkIIP7 z9=p*@GlLkdkYd3EeJj0j60dI~`~YLtmGR9LOegf7)VtULo7-!6 zUeApF6kDAr0G$Yxi?mHXXTw8Lk9jN&q8TxpUU!vf1OzihE^*zBcoXD-!fu}7siW$etOJ0;t zI>X`k@+;$Orsurt_m1H%163FmtD0Yjo*3JJnTII#;=@TzN4CYvo9~73i|9CKV>xcz z)f})CF-?_N*&K{E$be}f7<}`1p{}s0e5g?~&gT7PnU*MR=+R1kJ4)_Bgv1$5mI?`n zE6+Q0YLsStnPw$yVOXwDn4v#A;W5?DAPTIcWRPfTm}N*3z>uQ)ECN?lqek!o8NuXP zY}iK96;Dh?(J7E1XB1D$C7_^O$iw%8je#p{b`V7vnw{xxq-^Z4bI>F4!y-6@P`I#A z&CD`{z>z|NKO@`K2Q?arYsXJjE2IeNNpkt{WlgS@6xcqxI7q<^wYAKwa z4VZ~-H(l7*J4Ah$i9Nem^HdUk=F_7cr_3WMIv2c*B5>z>c|UXdyM@t)Pjn$?1{j^G z=MuC{&g^}CqfxT*N>7CS@r&Xo)3bTd42ay#_P=vXbKvm<#ruDAE~@`dn+ z7El^B0SHR`FVZl%81*x+Ai%rL<;{uu&Ec$*;>wri8t~8iJ9x8O-bd`vBhDTn-c+Ce zwClmcl7{KFf9IyuS5jb(=SfWv$fLe(8}9?#Bbo{&fA*8`AMyz#zd<5wDp)KUG6Lkl z)xAnoBnD4{O%>(=UUVIl7>U2gs%>A|&wi1cb|E5F=aj4ICa~T3k1Ud{9-mn(-cPgx zWUk9zX?6d1hokdmXR*z%BMuW0J1e+k0(=VB7Vyp?y|(QvYK4C@RC^tWJNdi9ew7zu zmK%2h`*b!115vEIou!fQL^sej0aRCX1rC*i^(Yrjll!k{yXszfUMCH5Hnb+2jt)hw zZh8Mr5+Fq6nQL!nQnit0>R@t^UYCEmbem)U!I=R!Ihb4efa&mG7U<)r%bwSsCIuJj z0T-l|Vw0D^KOd-De9a1B*P}Lt4H0f4Hto>NKW^L;qCzKJ{&6)e9NX21xr&kUsfV&D zi|>?g)_alCusYa^4JISOOHN-ixJ_eW^RIJH{{uAa<1a*fdet#3JiT3jXAV-0V0Cmh z2TxCcgW`Zn&j+G@L*yHRg5e})0|4QZY!2_zP>boj(r7=NRPxt_@gIpmC_gv%>xjM#|F$y z%bS>*LF2}Ds$CUHwr*!69B^k@SH>qE=!|-&eMhUr39^NCBz-g|QEOD%6=x8WuN^Si z^qV-m^zm}v#q8wc##Xm{y;3VyK20#b&1EZ}?T^27-mUl3K$J4|vC9y+`n&1A2WQi+ zk7PlXhFX&?cg8ByK0D_(-~4z|^UBT2t)`8zNyNq%s4!ohmS~9Lk+V0vs$<~?Zf_C7$SMU}9Q2dGO(pl{hZrPgRiO+nG5D)yxSB089vcFe zQM_UhE?1(Q3Y0uT-lCRwIqReP&`vV$Wjz4bn=UUj3Tr#euC3m{!V}wC48oZ5^8J$I zWa^mvoTy}sOtD6qwORu-aQL*^qJZg#`~CoobTYtEccW6TA6QTi>`fzZk0PseeKbaB z)14;iUFboxTLH)i`~kJt{Htx&pC0Vm@B^K@cX3sm!C&tPdvR) z;PN|5x(Vt33?AJ;H^2Gowo@DA&DTfnoE>S(aM1>_8~XI-Z17RD+1L65bzHbvK}}YE zhn!mVGuwBXQHMM9tKYxFU!>p~AmX2wcilZa9CqiY@g`$z!>PUaMprADC(0_jOT8Wc zieT!Un2yn@-Jrb+m|?_wI?Ghm>#Kwvz;$b>NpVbA5<%a4;|b*5|-!hNm!N1a+dIxi_?=-1Q*!(9t>Dpst6M6U%PP}bw=j|$2`R^9*%WzBbxYU>p z2Z5j@%GBbZubrZDqxR}HvJcPPWMku8F1jz-nl`uY1g8~z-c9OiVuLYwSrSZ zLdhJZdSh4&n%iLj7WGOcERN8PUJ;B(v_A5tK`3lU29{W-gWf~zgXRxc50d=K zq#_21CL-xT=qzS+omg-+Y%7xDCx@vCVO=m}iMbgNh7MLmm)9U*LhvqGjr3$08XAvk z?Dlmwg8LG$$@ydOJbXP{EHLqE6B#I;|AqvUlM+$Ck-JDkv77K$h z!Ar3S7LdgN=6YfKG7NFX4WLGfpLPI1=now6BkF|jM!3`tr-)N@b4`LKeYimxX2yLZ z91@mc-1@qKEl?f4*Pa8V6+~oQs6dTS!k$2{;K~FBUVXmXEDig-&Z$+q3cGh4+W;jI zb2H>vBM3lq^U=oCo0W&N3xZ!AdsP`W|Ay%v8meG@#xXd0cl&R!6t32jIUe1zVs~Kd z$QgC$&UVE8T(UMS&Git|`!Iz<>l4ZtYnC!lIzS(16%B0sOW7FO@+AZ*v~6de^?q`T zjm8FBX^O<%yUl_YoAOmMn;2%0(xWhGcI?O;nS}~nDbcrth?WotTo}1z%`IvBPp`P|-zx}~pZTb+`+(y$Mbs3pF`)CD zq{DSn(xIi!Xa^-B3GGyGex~~LD*y#w4n^S&%L#rA+@P}zfG);WQn$>*H$@m;UfL9R z2Y3O{{Oa`l^a~4|4{P)69%c1=uWtNtdZN%|(`|tCthE)o-Ph2n^*o-5q=%SfrPzZ` z1r5YmgdmrSKZO0FJxTV@ z`cA!hBvqc}?gwOTHAH~4fBmB%{mlmdN#A%%zoiQV=}o^p>;G*(IMax{nXoQ-C)jas zE$O!p*|N*wi0g@xcxAS|67T0Gxw5b;e~q!-b(arXcT^B$Acfs2le9ZMLj&aJm4SCo zlujgFzRXNau5_6Mgvqdi#_HIzq3We?hjx5ftv{Z9rK2iHX_C9XxjCtk zJ+X3cxtu3HGXelURHG9wg=fsc4*mO^aDm!6lm)$hD zTMZyC53RmcRw#SP*GXyzOZ-fzBtA;iO+%A12+O%{3}X?olg+kuOsP@}g9HwWQURnP=h?%r&;vF;{WIXQH4nN?q0N!B;MWX>-6L$G)`<_V4h&rb7 zuGb|I|J@%@`#m!`+4$qb`j@WPyz;YckGt0Dv>lBbi(UGE)HU{sQ>1wMNzhuqi6F~_ zZ-5y>9nC^~I-O)(-g>_qsGFElH@Z>Q<7k>xF&=3b^A=j~^d=%mCnkz?DN0pPQHqF^C{>Dt zj(~`Ofb@i_Kp>%n4Jq91^SBhJ@0sj_=qT~iRkLGv)&5{_H+$kXT560dRfF9EM|4@ z&m~wy;WGFUC8BS|D&l#^<3EalxBs-G@_%kn;lH#O^gq>7{lBYa@jum4{LfnKtnxQq zgFWwrh^T=tEx|`i&wGKP!S0^-M6|U<Yp|YlteWCsU~lr0BYgix0gi}6#jjy zD5CI3q<`A|qe6KzPY++$tAP<<<9~{)f+f{76#i*d4{Q|__a6AwAC*~(C@B5&@kbMu zB7cU(@}F{6KA{0_A`1V!09&+*yz2=H3JS;0`sXM9L+yY1^Y3v4OI`I1xp&huST8W( zZs46iN>K-2>IL2o48C>O)g5f$nrE1=yQih$Rq(xm@9hxJ;6MGpre}4{(>>6`^PgY7 z73vo9&#(QX3$UP(r?0n9h=_uUGWhT>LH?~)@cBQC=dz-*2KZ>}>j9dQsxnyg|7c7{ zKaX&bGbRSc29RUNAdq9=ALM8ga{3BrJf0BG2N3Yx(KJL4a{Snz4afie3HK&SN=D6jyQ!j$vWtXNjwimIBrhNj*%eFH-yW0PA});6|w_73hIo?hNQzJB*YLc_u%BBLI~#>FQj zCM9QNW@YE(K6{>5SX5l{w)9=u`|6t7y84DsjZGb$UEMvsU;6q-Mt_WrPyC#m!Y?c? zEw8Np`n^Wl-r3zF?*j*ifBJO{a^hdz0sZYHr=I=q9sAFI zO+ikbI0g>h2~G$cLZcTZODD5R6+Za?-6@@r++zMFLb6jJH>JhmouT(zU*5AWYihx? zFS7WQKCu^JR+ea1>L4u-i(4{JXoUeo_{}bp;?nLVbj$$D?>v}Lg?g@Vg|c&Rao8(S#(iq zPK%M-;;)Wmsn^HX*al!;_ix<_J21?6fG(1Ef?^xkn`C%| z-`Z!nD;d`rsHTKxjwtM*3pIk&o7C;90_KJtYc}91^L5N^h)H^fBQ_b!RXeEYvv{g0 z{N;-CC$Z(}oQ%<=rL(tFwv5ahxAv>u*8l z2IMB3i|;=z^2t+6Q2r8P&f&{j&ujC$dhT2QtZ1^tx3KpjtVQCxLhDsnvak#7rBu_7 zWBrUTH7gVya5lhmQ*OGZWA_&vS3IW}=Q&o#5r;a}@C+tyGv1K9UqAD}Vjup5 z>al#1&e^N}yApMdKB15@iyDhM6&F-1-zjbZ96{dh009`=!j|8QYo@r;lNc#|x}q8V z;_w@u=D?LBi0OIZmv8B#d1hbb-$!(|MyVI%Dvlpizwe%PP+!&S zvp^*MS{L^tRaa;CXD@Lgey9=5C_?ma(E8lYGF?9U2%JrMi}QE0IIrc5VfCtc_|3Pb zzM~u`sO1^4OjBjk0949tz^O< z3rL^JnW`};RD<;!e0^H*x{vh9FC?2Ij_$oc7bUg^ru3L9#x|DqC?uzE>xXYtO}9?1 zErh{|CV>Dfw~OOvc(+Xfo37NFTHb2M%c~o*<1fXYOMK^_4WFH&mL$u|kk_|cO{Hwb z8@6m?T72>F#8%Ex?P#1CYQlQB?(sQ{@@JF&zlbyKqVa}THDiixw|!p&2__`D7kO_p zgE41M+orr(k6}dRquWnlam5WskdwL>>`~oNK9y253s7z`i5qBs?u@MtHGUCLd*zGW z9q~Kdt~TDF#$}xz4_5!QeuUBYYjCF0&`Jpp)O$H|-QHxaaO?+cw|~aVJw?w(%P*s6 zr^$uMQkWcg)c+FBxpaZ!j1P+Ydll7e!OW6P2yR{$xLH zOeuYY%P*=9yMf0$8`8MG>xVD6Ghk&hy+c&LF?$@7fQ{ZWoP~|_2TwItX`YMlc~yA? zk%__%N51&fa{Y3Mkm2^8b~yPHt%4dru>m&O1^=pTP3Zi95Em9CE=ga{y{8lzG$`YD z<6t^$%;IJ8G+)Noc@KIg^rK5EMFnt1dM>g_$+d)+Pf4%ky5?LPEtI@l({LO4Ue|ep zT6gRF&h}UB_wY)aam(pGv|}Xb)e!>GSM<4W9{Y1z z*H!Wvl7!R4@mptpt4>Va->aEM*v4AiwqQF!En;kT8Cv#rj= z-lWRCXsy6AKDO!nGu8UymH`njjl`bzKe>BFxXX4=fntpsM4!g`4^19Hy5?(oy9H$r zZ4-AV8XTW3+T?WLkl&s4o0oSkJhjwkmNp6S^pGh%FaXMkHNEJM;l1*l$P2*3w*!H~ zNmVny^RiCG-p}*#@VxE4Wnj1^7PQ@RyP~*^sTFgn*Q8F3Wed7?1X)3G_O@IyWN}fs z`*GP4E4t(G3H4#SB`g{K77Iwo6O!Z!WfXyk@C8+D)M!M$0rV$IKKxRXBPC*Su-&Q+ zp{bhYruvRuOgcphQw$?<(AgVlMY(O*I+r>k)4pZcC`vRUvUJofrToGV8SB-niV;jd zX1Q$3u6+?Xj%~=suh{wEKL*F5_}=fL$I?dtn8vH{&RTz~@E7;{(8)T8{B#)VjXt;S zvAu`?FIB>;y#KdD-RE8z2u>aGr$4Jtu&2MKICRXM1NWiLe~e|sy)X`uGvyltLO zP}z+;!@hYT7Kkha>C9G7;GtR|+YtmevPy*w_gBjdXs#X>b2rM~x11x-Q)N2Orgq{E z?w8k5o1x{kw#$6fYg(jydg^q?5d=_fJc6*&6aY37*Z#s*+Ylqw{zvW4+f~{YcpWv{ zPc;u88=jb%>Q*u+-nKT)X4rXXn|GJ)n|Ujibko8z%%PipwbT8>&qno;@P?=37WzC3 zFaM=-o>jUUt>Osc85r*()kK7MrBAuz_Y>;Mq4I<#-Nr>NHq-L^q>7|geotGo;U>jp z1M94`ljU)m*-#nL>1~C|#7_L1L5HB&ux4Kvb?C3cmQuPP7^y)84*(WNkc6`!R$1Id zcZSnD=XWE~tZ?FjZvhomdsrn&zmKIdzQ9g3BB)1@(j&-2L+X%C;in@=Jh~R%#*xZ5 zp^0c8N^?0)@*GTo$u2jjYm!@X&wDo{r(U%VJ6pF}@{yiVLt-W`ap zuPv}3j@Ja<59D4;B(NEus4kC<`1wYIbuB1H+WTsq`rJ+5$hW?RLJzylGqUZB$ti{N zxNkAZQWa?*z=#9+*9lPQtk@$6qYP399Vrn z-D^m`YOA*X-l*Gz!C5v(K^JA8^1iuQRa+W|mg?YTdpU&m9XY33{6M(Zz8_4#iU9q4 z7?EB;;_B^%9;%{QK;xVPjq^7M-6p6!^9yQ(1JV)14$xWv@yVfNLS@Jhvy;EVoNw-^ zsaPM+Z1Hi$Duvq0&hvZyth*o2!=K}QOe&2e&aLew?P!E2I>GYXeesva9AC`K*ox=0 zR;lW47be5Hb!VgsKT^>owl*jWmH!>p04P~Z73|a%9+6EstpB{genSujlez-wQ{GYR z)D#{mgF(>q+NpEwZAt1vUIele`upn zkarbXyHq2`4!K{d?@Cn#UJ@r3LaY@9ZPKR2)aka#%;Tk>d zQ^Q~0|N3I`vEB0XmCAmIRAKV}#o2lnl;aa>nl24~2BF(^P$KlnRu-b_%LTJr?FEx? z&tVnEqzet7C@z(re^0-HKMyMzQ17)&*1X9)yleXnN;Cp(8r_W`TFe8In9liWwVpYq z(H52W5d#!Qg2Tn^An|(gy!#kN=B#_)j!>Up)xGZ@g&6Nc|2l`|YzcUaR3S3ek(lkL z$;-_H<8vx3Fl73elE#x+HMrihNR~M~2v$P*=9dX?vq~y=8*Nh8ZfoefPqn{&jax zA!jfGpM%lEDd~CNB&B~gh49Xod#}m2VdKaMMmh%&j=!I2F#mJP>86t@7s0+1t~~OP zK2x!E1UX(+l?>Zy%9gY#DwCZKIIQ_CcCJHOVG_gyH!uI^gpz__y37HMauKL|&{PVw8!$V2KGdfOqX#SB`1pN;HnF3tm-YeSgpb;U z^C*|{O}5X0{+xZ{E7cRUf(WF|7}^Uu-HCf!=ZhBoozp5;8?(7={WZyJyMj;QK}zw; zoUOG>>dR7CHvGpRS}cn8t)y`Nx3K)Mq>p?^fDJ6)cld+5Ysb@Fw}iDqY?aB@P+1Sp zC9EXiNFB;0mh-OTg3d&j@*Y9D<@~W!CIt||ww&0z`)_5Ocm{xIMBKf5o(!8mg8Wv_ zrp`?4rjlytM!k=*8@8a^8S#Z3G-Af6s&ppFacEZhvjvW{f+E`SWZ0nr06Ix=_YOE2 z_WKBOXeM+Y&P9SAHs8qloDSDQ`{&Hm)7Lj6C&LhX2gdh;w+|3|hCBBhbs2!T#i2O5 zSVA`#%Bh}Zzcfo)wexAB2ZUvd?11JXX_IAJ=?EAiYvY(k_eLph zX(Lwdr?$)D9>|?sytW-UY^msJkBNjG;0TQ8q+9>oU_JZ)TDg6i{Injf^{BxsR zr^lk-r^5m@_^Dx_e=4)~{+;=pgi4!|Q#V*sJ}UZB`s`gOcaUJMQ|1)VbcTzOAn@s6 z1B2`$52b-}!6#}W9_=w7M;8RqZfNP6Cc5)8*Z2{{ytTo{t3FTbBan5_PidT(`h7xEx^3((5n$MTk}kY zAiOZn?|kd4m#5kG?Q1e$gUfRy3pi5Nyt9eB7gCB&Mi1paZB!-HrF|__mkz!7tM9W) zQ(d}2AyyggvjwON$ikeOi2EBg#Iym6+K0mdRO5xoi*}nDg7uSK?xEK`V9M`%MY5a% z;A#<%>3{mhcxrq#IY4P)CBLY`$GUK|<BO=5KM#_SI;G z_sF?AF}UwIIkY`@&JXwaaI+sB)T%}`8%42F`AOd0H2a&=5s1$4rizb^`0f@CxuM{0 z)dw2l4>T|<(YS=JSwkGA2f;!`jBpMP#Ze92-**ZKJ57Jf*w{aH)|WYkg$Wyo#(hEy zhG3XM(o1D8_xqmg`XWKkbVND7IqYxD`D(Uav6EM9>+7;3f2v}g2)9T`!v~=|NS&N) zS-$NkItLMchd2$lJI(P`bna91H#m7$XAH!0dRyLjUd;P7O>%i?l|Nsg&McvGC{#OP zCBx9|Ywt{k*%kdL3_*eDPUoJF)#adJ%qcoYkmOeGD+{uE`&!yVb$*AXlk-^y8ntN? zna%14c5nMB##V6}SB1z2u!5vponsi266;#7fWtcI1kpR&mJm)AL?1yeYAs+W(i8KC zw@21V23UVAZu$svpfJyap0oj3mr<`=7iJ#xmp6x9G`0@(0Sr%Pp&S0<;UV%7K7y7& z0(dC8Kr%W3QL`F<0Z6TKFd?pKW;x_e?v|@r>|0tHs@*<)g_Ce)>gp8-;8AY@5m5k0 z6+E8v1|ca`7H35-1fcrZ|7+I##>~)kKcCM z)c2RddCoq~Fz)H@(O`C@vo2Dik+QT_6bF)%v=syLf)gPaz(|A?7=JN0q{+FnD#t3m zZAT>2{aJC_3};rHM+l;*e_IA+pFdn?AqkDPTg&~lKMZf9P9#U{Cjj}e3K2-9ENO@Q zn=h;!O^W3Q`e&RQ>b3#`JP1Sr>LI!vT<>fnbwPMqZE+u5lj+D|;r_d9baoI1Wa3G- zw2a4FG>zY(y9cY(WEeV@+WZi{RMn17MO~*=fyjPaj{-TkMP~((7^5oy1q0j@+Vg@% z!>(q26%5z9rKvlPgUR8Gd#(fa+9^Hb+Cik=Ldn+F_H)XCUD!!~I!i8C864?H zc~ol-LM0`VKEfx=4%}2>5hYHWmZV-vJE^r{6Gqu?@46%awRxA29Huw_)GER(`Mv+XDrZ z(e#s8lG1ewb4)8YFp8gPwJe=R3N2FlmcN9${Twsfh?Fkj=xgvl51F<{U;p)*;|v%% z?xMPcdH#ITdxTHXQd-U~rs{R&As)eNQ3I8JIm4Ygy;FOF| zN?BzXq)9>!UnNt80FY^6M1uM(1esM$88koqZ+SqnA(pB|JT#WjRH4ycwwS)_-o5~f zu9%zdjw%y1dP8tay&{+TsV8h7T7#jUKcJY?2eGw-2^*F1b4&`*aF!;@N}^dAT?u--<*JJ`l*>kyf{^1L47r_raJ21D;J zL=Q~v`MB1mY1}PWLVJ}lOD9%}HA@>9L1^xUSdNf%Kzg1k1jZM}!EueykIoITl`E6nb1-7hQ=Pi6H*3qGZPTX%%RnBZv@Eg_fjkPO(7s!`VH6(n<&5hK_f;uHdk2X*0-)UkhaI z$ay#N1tYkHkTr%4qBXEY7Y;xgP32xC<7iK)YQzHa2xu>k5k-m4wUhweld>5147OWmi-!#|U1gcIZuPK`ac4>5ps6F0eg*Y&Gh#Zv6Rk zHp-fdInDG6Z_kM>)kyAR`!9J8G(ZCY*{VmGq4SfM0XFhoT59WwN#u2avMA5;J8!NW zUl+4R9_TEO^c0%084Bbrjz#6cgjIk}1iRt&MxlF?t9i)sVrd z@+cOLE1Tzn`yrB{H5^o~2|CLy$D1Q+I0WtM{9)$W*gg${R02n%k`z!M z_m(O@>>Ug4(fJ)_6*^B}Wr#ob!F)Va2OiUcptJ0Um-bRz0RjJ>;~H{-HafjfjnU1k z990{(7;qlnZBam10MYo?B44)}alWaNX34uFhPT(#kypod_%=LA%;w))H36|MhaY&} z&aUyNi2fspRH}=9YO!uI&%UsZKB_EZ#5&?ihu|kGgw~e>&h8aBHhjd%$s2KRP7 zYf+={1LpV_3L2kC=IMmlpAgOff^2E_!O+}}!#rD>ZFos2PGmK;lxG$tP@vNtx)_gt z;k0}N(Org8S+&b|;OAO-BQCT`P%Vf0&=Ph~*fAZ!!<6*t=KIle{OJSve1Uko6Vs< zg)ThYQ#wqx#+x75u7Yb%q+0AV4aKh+5Ckftauy$fvs;L5?8C#h8^9tSxaGI9FhYveb1?)YU|#@3QVj zz;DB+7A8#1xF*OYKq^m`%{oI^5HLq`Gm0T_#-0s0$+tY6;-0*dOnU-=iyQ_ET0GK% zxY|jV91G##%C9uMR@>C503?lF&$ya4Z5wz(oP=Q;3plPofMWx? zn9eTwu*Dr+4&3X`X)rHE`zO*T{AFvdNu*9mTnnAn*0&Q4^_<>bqSm;?3-XyN4-_Go zLAa}HJJ4VrNA?@PTxMeDxB1d;U1*rbgzAQW4DaOlnSj?rsuLMT*7$NK5PlP(lrI)? zDlBAzQ`}H4mwf-zlV0EpYyJ)nCXf) z#Kl8A)07p1vM+klr2wGmvp>1-kyF9~JRWMJlpm?f1zf8As2uzH5uI~T$2^DS;MSmh z#JPh8;k{juT|95#o{%-sJ}7lKr9hQOci~Dbt%y4o>-|`@Lt#@F66H9(!$pzSqARiH z!ulQQ7>FmxUmLaAvK!x&Ngc{;?9k`BT9rSWwtdXQ`J?WQurgv4O%3$2_s}aKN}Bn6 z1ZmVwWYC9)a%96moIkyfXKbwmm6J?+hSHpx7Wwp@ zP&_O*rz|)p*p=Zk@FX_NpyuyJPgZYrOQ&q$IM!zm4kjKnqj7UDwK{FaUwN+N5?6GB z+uko{n6eCxG6+o;CL57{Y>5Qxd%sxFEw^R2AbiW*4GKa(KbT5N_{wu2R-3L#$)#ro8VtgZ0rE~j>f%d2{AwJ5I&1DSR#`i%DVs9A z`pPON;=|(+n0h!4XU_NwaT@MdkbvgUmJeL|oyXCxBW5;Q`15h~92>zv zYQj(YJ)YBm$NE0xyzMJ6fbq~zp*xnqp-haBBt)SLN`YGhVbLG(d(Hh68Sjm)e#I)e zxrxjM{sVi2XB3ut{t-whcH$8f30~;oy&vlXn8cN#U*8d4Txif6*8m094+rk&CIBt| z4&N%(<&B)NpFuWK0uJ}zM1w>y`TYdks{jy9NZFNV@Kc=fr|STN(QoW$r)$J>aw>~` zN1RPkidg3yP8v$L4K-)bbc+MAJ3<8oDl1EQ(R4~yfWp|Z-KqzeNJuL?3F&k8tnH4 zv}-yueFj@wG9RydNe~NMLn;;OmR7X8hg`_m)DzWbtjF&Z)+i|{o+89nEy=uXwW`X+ z7xWaQpcye$q2`YYc#&p!SpH8N*g*QJ^$A`sbAcD{wf_2Le`V>?mqFjhB`);>R=);v z%zP;48+9d*J^K3FrpJ<;^?FMxyneu0HrhGV0s00?bbtdAh>ar%MHVSId<5}9OlEfS zMe$^5&Nz4{)@p=CR=wsN5PVkU?*Cla+Ev_5_2yTOyjba2H?(qjGw_gNNgqY?BGuqv1+6XKtj>mJ0_?joz4uZLgCFdmpJKcBgcysyvG%ExBNV%Cv$J3nw`7Q}W@VhM_a z3eW3&th@R*&&2Y990t$+CZ&FI9sSX8Baoy-UIk`3+U4W+4@2WRd`H$aUzNVsN|d=> z7%{vgs^aA}EAI1-S!Rtze?Z<8lnIQIF`-lk@EQ$t>U{?(m~`Xu-7T&uGu5Q>-@X!h02+7b9rBL~*lHW)T^*mdn4x7<2St;FmFrWT$D*<=Nil}3&i8)U zCfKTU>m|N;c?fl!}L36!AUr@cx z!&*voA7_8g)9cp_P8;r`|Ajr#>aWfav#`Xw9N?0BAwMvAq`Lws0*FP1Fa5Ih$+UO& z$&;OO(7#>&LFVba9~Z6gTBgkRAw}=oe&sZwiETE}e_t3u zz8+fvZax?7G3^^o0iE-XI>R0kbuj-2-@GKAXTi>A7{BINpZfM~)Vwyiqhnl37MJ86 zbJG3f)56sE@5?*hK_JW~R4_0-dX08VXF!dEIbrbg)GMEfUAek)fW8;f7B6cs#TO|n z8n-|nPR-`diQC9=Yr|W=Nj4DCM@XYP^1;ee*k2pEP|#8vIuO*dD)hq8MkW|gbE!dq z?LuHo0XNnco^V(iukDJb%yM)^Atqa7nWr}7aM96;$S)za89Kv8znfGIoR&?VoP->1 z(b-LD<=PgMo9K3t7KK9K+vfJxO~87=bn7^+b+=4u%Aq?T)FY|(2vQ#ZjXX6L%uT5O zg(6Y!f+l?tL>cF4SS+rwRh7umZS2tqpmFlN{wPh7c|u7fYOrF^y{xV-t~u_2g^#a) z*$MgG@ZP!JXa0Lf5IQ^9n-~YwIFx7__^{wC@&v{9*A&mIqJ;up`!#{9K2aksMOS#r zk{&Bc{R|h*CY4eJK!dzwMytXSK;&(n`JH)d4;74VA4ON&KEV3Q1LEFks0;oAJed(i z`0F{X7l}EQ3foI{Y(b~gK5SWeD-8IGW19{vmXjx+rC&0kr%rr<5)tVKdfo&U(3t6g zG$D3KB$g_$N~&=IKxUG`5pZ}V+4$*GD>1I89ADq`=@Mli+VOYldlCI}MwK27542R=C>b1!O1?^=8HIVpMYV(q0)mdvo}f7ve=`KAclrc%v50z7)X62a?oBd zWrGVio!|$$f8c)%xR22XfnN!(W;=IiErkY%I2ULkWln#x%~ z_O2%y#@0^9#Ur@=1oYp&(TOz^xfJwne!j?;TtT|F9AGJ#>3{uWU8kt#ev=xNQ;>f8 z4$$k%)J&SDv-w8i*`95@QFRE9MTz>ifBz&aZVU5fFVySbboAiEcM; zxrE35OrW18(F$~>krKnQ6>ov^cM)zBr`nMP-bA_3$Lm9<=S+UiRgCBhnq9C;AM}NW ze;b6M693zJe`2Ax_XzTHg4{w&0Q-Y0nB>E&5lSd-{!l^Wt#=WNZJPfOO!hzIOKL}# zNKQ`--Kr7B;>k&}E!(#(&+zx1kVvAHf~HY~U1m6foIiqWf`jy8%E(1R=RHZ0{ic29DweCrT$kWOc9#tXi@N4`6XwDvxJ7C+Bt zKkH<4Gvmqij494nZJ)cGBM$UYo)K@ys24CV{Uk&?Z_;KvUN1<}_vvxK*kU#Tj5X$i^>b?t@9qMo-$d@(&H%@F~of>WaX`hnASR+-xy$BjDgZMYrW6P=<8 z7uJPDxG#8?bQ-H{zWC^O?3=wD{vv-n4n1J>v#hN@TfLp<7taA0GZ|je-a>KMu30^D zAdp#JAz+>;VI1O^Uqu5Tl%aIb5sr;5qz(fGx~Shcaj@l+lU|0Biix$EK6U z`eT^$W+B|P5gRFjnCqB>qS6nJadY63H(?S72lG=l-e9QVB>f*;esn$i2tC86@dU$L zA-a|UU%m!C@O(l}yVzq_Sg_hl7NX_rf*fGG9@@td&g46ly}X}Dy;nYjiRkRgedphD?2)GT*%Uy`C_!9Atx5EFf>aI}N@Xief#VUO^irP<*oH8)K3xEL*a%Qf1)?hPm@ozE}} zQCVIfadj<7SnpArpn*?3m8-Q2(^#QynyuSW4LjinAU))?`hnX*AM)qC2Ni@br9?E- zyFoWeyO@E^&!cCxO8nAHNY*_MW)}%u_qkIi#I-p-=3HNvVdQ+~>`#w0e^Mv?ygw!C z2=cudpH96bb_7}Q-+guL>o&DDO;kPaW86$Yxc?@S9G-x238B3ZtRuT5^kyF#;|c(E zIQ`5P<1ae6mk_T{F(ljM26~gz0WfK})yhhAd7lh~o&^keA_3UR+@Vjdr~5gFlUU&YyA za9WMNbx`yL8-SR8v@k*FCNT~4pt&y8jc$bG+cbRNWmhTK7?)bUo~D-JU?`Pekdioj zmxr5!AM@b|g73jLU}$WAa+f@5|Iv9KhGyUeUC(*kkV`lepjoIL;m@PF6Vq6gJF z$6d+EI;u|W#`)UC(_V#B=~{tX=w!{0_FkfCyxHpdeU!mzM?@|)Jsn2Cf@I1D7Sju^ zH;&UPT9gV0RG-Ut$e;f8N-F1AcHMIsH-Gz=fAyD_*Xj>_Ib|W)?;H*$Z*-=j0}+RO zfAV4D#L-kU6ox7e@RXEpJjQ_`dVUcRr#x#T2tDTOAfH%Uo@Gxc$(b8DSA5f`lQBcP z{L~q1`@4TBe|nUBSKS0~GTI@`=9lZ}r{Of1PeFxC!>w41y0yF09N)aa`{0uJ-q*g9F%{0A% zjq!_Gyb2r8zrG*8tV3qwR^9 zcx_{f6;NaRYOLkTohEo3_1D<7abuB;1+l}k{Wr&>l82|vq3u`tjhw1K&f9EZFulAvK<`(xN` zs17VM)tksnzDDF|$0UZ4hy77P-z`Ti(?)QnTwkiX;)3?$Pp%YjyAvZ`2&sQB<5z)E zFntATc$+IPJR`d!7w?XivfNs3DI5vR)AV0LgWEoWbbdcLBT5md!8291%m9e4@FuIO z^@04zIaxYB#)Gq+fzzoQ^%hi-2^yDDP-jbEp?Cl_i|DohvCa_y-Gy~;vfBy`sml<| zu1n_sQSMRyThvz#+499e*Qo$R+X=_e?bqPH9Eb&U9?m~rboZRomRwnUY^jYxW^z;O zx2d9?uR{-kboOWCC3?)3R*RRU>X=581G7t4>U6;s;v-*>3F^B}dlSkIrz5Fa#m%;O#RYp4{kpL;jgCHq@0l+Yc^KYT>AHe5r3c-98SRIewk79(Z@oli zA5k{mO@+6GHJJ^pIrKXkHE_<&eeFL}*1z#e_kOUJ?N?W&^U6R@=&H&&f9~l~eb4=$ zG*cCPMNdNfIb>@bi%A{+(p7~!#(j-in9ccY@<)Jx02fRJ)!~U)KLp4)rIr$z;#A)( zAQ+HdEfclPFl#3NcVZ*Tzc&BYZ6u;Ex_w=Hmrs5Erso?to!Ha)Qow(#75q<|Tik%*ypM(+f$uZ+wt(WLu z^JwW0v`s@ERw=W{T>TYZ{hn~DjCHHpYi&^AOTwLNCSSjz7y%G1Gw6eZ@PrD_Sh3S( z)Wb|p5kTsJxRrRj)IPY~Fqf@AvqAhUrHU`JO?|ECg(v@8{?RfO!E*J!Z7kM2(=a;) z_w6zs*{|~MW)>~K#ruXfX|z1`Wy_+}^cXbK2TimO1jKDBOZ49%sKU)7%b8&mwygx- z02w>CqM(Px=}(Rc+7S)z1{W0o&p{^R6DW*(gv)Rt5J-W|0)@m54DS~6?{VJO8Eriy zM%R-&{R(n;oi4A6yaUb}gN3i7+YLfr8VE@bk#CaD2Y;i8`8U)zB$-nzO{EJt!lYrt zbYXBdod6w9k*@M*iew^{1wVAMw*@nW)LSU`b#J>m+5Pa-ZLZ_AnWZ$xKYx-)=&WQ>8{*6olWL zsz*r-@3Qe+cIXZ6CKQLKo@GsE>vGOw@?At^5pErHBSz%ghkj0X(1mI7yMaG3iw;u} zxuy-oA+ka3ct5c_q(2*vD2zRI;B7?TD^X1jJ)&P zEn@NEPJi7cuZSqQJ0W<2J7c6lvFo|M?cNXq`Bu&6jS6Hs1x6o(o`bs=r0^mH=&b&i zr`B>l)O{W+Su!wnzB<;QTlXo|-n6Ux%##v(d(Q0ar}j}>({S<_xw+MhYOB2+B_iN&06B{jXUh>WhSuMl)pEYW-_Mr{Xbh8E)M>Wc}k7u zz+FBtL6IJZ0lh8W0wj#iBJ9!a=drkF@H*R#TNJZ(EH_=lS3sim>AQ&2>&Er>mF!KE z*gNNbetmCYXyirqhy?FpnY}6Nygdu^0r4<(ZVxfcE0- zR~s}*FxP2E>@bCngyVh<{nT45-EgG%MBJjYWmBNeGj;*v%4OQ_k+%~U^(Ho`?_{dx zRMj)a*UsT%jHosI8GKy46w4A+ExKJAjjKd}`};h$IJsOBGhY62?Yg|c)GzWju!En; zeJ~H8HmDg@J*=Y+&v{zP+pb4!^z(-sF0-xJ8bn^EU_)j|oO-FYB zYh#sM(f-rEH;bS22_COVDUM-BiPNX%iN2Cu*!Uv|Pt_5`7XyeH60F}LH6|<<7B+`E z1m0r9-}aRT&h)UWS=TW6WENX=YraxwUF26jMtP}^f=p8#!5H)d?wP8i&A9-LohN>% zL=DSmdevOa#uNMulDYUIGkUC^TkOLwHCc$AN>f#=e2fM&a@yD7b+IfZzfpV*fNRmf z%H+IDpF6%%C_9_s;n38nhQ1dS{t`{GeIfnT^#XDWE>7k+b1Q+7QoO+DU0OG^C7`%YFTCsk{)i`XbQ4xFGh zr349zB&q{+rz{i~D##zj#gU-b=%cyax|iuQEkCfe5{+YWn~QM2&(~fB%JDBe4oNQE zw}VJI5aEEFH}yXn`zvg#}rKfy%_#TIoe}XTUPg@PHQuJ z1!u2tJ3~%xeO`>dfPB{DkT=}N-+f|9d(`8i2&#Gj8>pj$)F`G(5V37gjx~*#otwi| zAv9qlGEblUz3|Ag_RMbpPw+7aLBfc6vknCT74~+1J8OPwoj!-&J0q@oCnQ#{?j_(v$r@uWyoqkZYM9M24&*{%%f<~sw@8Tx;C zMn*X93AWyrdUl??Ona@XLmzH}CJ>NXB))H8`n#W*n2Tu{BCJ%l|KRESN6^jLsQrZp zaNG4I4nV$_`lf~)3#JjG)#z#Qtym1WmxU`w*Q9q1f#R`@k^;$ofSRwTTC%n~UPGD2 zC3KY#fb&gx`hnvDgDBoy`PjB3Re&F44+Dnb8?XK64>dJ$aNJ%X$Ob+@Z{UL}5XqKt+e3+cj(FC(Fs%qan@a+zvpE)sKq_hCjwPk1=eE8C*+#eKt-*sJsO% z3gU-$?G^B*fZm2uq-E|R_#AySY5S9V@+@n)6nYy znCah6n1E@$!i@+8RF|#{IJUK5b{XQ-0xdyTklqo6NZpl{BL!&7-d|*kP&ub;_f{fD z%lYc)t%gS%l#+S+lW!lk6Z)-uCN?+#7@B&voX#2!I%xw?7Gy1MqFt`Wdlv zgQV8wthr@ZTT@eesnqYg@hMBkt^bX>w}6Uk+17=T;1=8^xVyW%yGw9)cLG5Y+zApO zxVyW1aCd?e92$R}WasR?&pqdk`_6d(_}?3h(cNoxSAA<%&0007`qnoCKiYcQV`(lX zgc!G-X$JT<0mm0`b0R_Wd5rMJ{uv&4Y4{mF0>GuMIFI-N9Lz@)0okcXGKe0_`-y%8 zjFH}xSMUe;L5qi&&?Yp!mNzZlY%A;ZTOVeVI)KrpVMj1O^HY|9Q5Nw34N!g(on?_N zLhwh5v%S#k{nGERD)UZ~l5K6d`?o`dNM+GmKH>=25iYC)AF923papc?$O2aF9f8km z19wbnzXi#(;0Nt?d#sW*GzTaNU@` z9Ybr8+9On^W%l}^g)2$Ky;#bV)t!!{LL)N!H9Bv9{SkKm@I!e=7E*vfRly@3aJTx^ zn~u45T)+Ny$g_?C!r)756kScrNLu%L`U@)63>)pkx#wYZ~v=;xKESGB3~>*tM{TLedLKWexq zGon82BQj^p`Becu>~GYm`9Xi=j*Z2RFv6NF;Di2nfZQ9Rv;M>~0FXcbfwc^{D-vD@ ze2#QPZN4IVu8e`+P95V;Gll44^Ml{Q6z4X5FKgsIa5zD9KgF~&Kd%{_$y9^`hiCNh zlTm@LM@OIkLe}DItK=hVyLHpKV+OKS8Zgw?%aRg!F(qpOydD2~wKYLtBebI$v)^EW z;~B>Ftm8)M>9Y+hkZS-?d9Z%aN1%SPE1N#yUVYl(AyWkR+ub7e*obQ@IlKpc+4z?Tak;SPPe7+ueGzG|P8blEy zTnoIgqY0qa@^aD+4@>N9Di3#r1WogT)4V;-=sROKU0{9Vq z)Y^3na1St!;1wLH=t_EU{7WIiS1HxVn(ji!J9>-G3;K}WKQjU-wvT|TYW)1w$ZH1| zgyh>s7v-B2x6Zx5UGhKxUQw4aO?>6-^|Pa|#-UFV5~dDA@zta~;nDq*zuA68c!vpaA%d#y(QJBi z;DpPPWE69x_T2B2*#vGO;l(wMNj8XosZexF;$~+1@YhGR%?=bhJtVFACYSeI`dD9Z zr#N)``;bP9M~34VHDY58l6JZDS!m0SkNQ{B00z0wX~({Pn7Hrzrg!t7^<=J;#60&j zmHr1$V+*p!wUCvg-o!k8X-D!KT8F+Ci1f$f)j^ESK5!(^N*MEGQZ}w{_!wiFdJ|K~ z2ScW&Sur9|KkUh^9oSi$trqQ z2eDUEXanp77QCNf+kie?3dn})J6%#xi{G3G^4X2(KGK>tX?Q1B$MrT%KjD}(HA>a< zk{RkwDoKIPSV06S(2hFKeF%wfJ%?X{bt}T5_)JUJxBbn5#SygUxQuA>#o7}qzxq?P zzs2cN!82UmgVzCY9j_h7gGRZdsxI-whi2mlk5yYd(^T&QIP*Di_=rzWyiwDo94?i7 zcWe9%0~|@OHqS60QEN7$ABmG1*wZ>bUU#8AGo912cfFb--r|vjQ9QCn)D$lpVc`u? zZSULnHw5-31;=p%u;>xMY7OKmlNY{H-{6bfmH^rzv*&$g9XF8yvuE_GZqNw45wY;7 z5?T%F_u6xhS#^T`1W&^bLf|~=NrCVrgM58#(w66z*)igKvU{bkB+WE+3#8;-Mwk3; zE&u;VWg*^yo7|^lAM^(~0L25U7L8HqLJ5CJxfsR)?GEQ~^?5saKQ_{=TXhj(nm@W9 z7BFtwNdCABha&x*0of}L#$}MF%299lN_HO{3b~)oF4JyRj#rPBqqG?z<(rP zLja_1Hdd60VAiMj#A{1^^o$wgimV#Imw1KT=Swfv%jQ&YY*lWh*F5kjQ0h--zhkDQ z#_Qs_`F*0pU*$6Sh77<%IAHKGX1_sQ-|dq%6?f8kFoxp^2k-UBX~go=V*b7g&AsWC z0i=gU-@S>KL^vz1bs>=>SvlaQtu!J}T~g2C>)_{%YH_ugi#$2cj^o@15)YXh<*B+1 z0m1pb+5Fjxj~_hUE%B5^?DEn$5hq$jct7fVgE#nIPBV8z@Mg>?b^C6=W3^9Ppyas) zJ@MOl*QPEtO+&|iM|nYpNBl-;)ZD$E!e;0R_SOUh~&5UO`y0z^t)sahx$3-qpBI|n3_)}X$UqY4dn|;Qu`%S zZ8;I=B_5d z7@nm)LXUw%@zv@NT9>J@x%Zj%jr-YCW|3*-^3i={!*U(gs(&QC9o!HM=}xH_W z@rT;rpQ3*9Mz%oZK5-VHx}LC+v*}M+LZBv}jhm^9rLhs6!dn|lM^~UMAcL44P{YsC z&K#)J_d`Yyc;+8cem_+En1CmKsrUV;;_otoKTG@xDQanEW(rhQ{Gp<#L&U;N1dMs? zU4R;NzoZF&sssK;`{S~H9}+Rh85t|v+Zx&ZKJ!mVKLio~MEb+HAJ_ITj02wiT?-M@ zPlZI_ng6*_e^HkNmizzGs2}2!e;TFvhhicJJM)k0buqP7Ct_y*p~d)T`-_@78#`G# zxY#=ZPm35i{85CR>&MT26pdpEff&q89PGfuAC>=*f23n(`ca9Li;<0`v5=j)jp;us75-D6@<)&S5WE!n zRfvP_H!x5k(v*dW>8JSRKlS3@UGz^WN#KRJnEop<$)6r50z~;kFp`Oli{l?hOhnAg zTtNBAze+}Gh9s(5JD{qet+5`I2cwY5XcJX>Lk)v~!ou%^fK6dk&G82a2S%9I59NpN z^nI_l9L~K+(1ryq4zx-kj)-O+B%1pCN(e9e&_alk^Fm|*iu)d1{K}>c`^paXBR)@n zfK$!h=$do;DbG3qzNuuk3wK5xqq&{mK{}K37wSGeD(P(uFEpvabLg9I2~n*=V~P(d z#cBnJQn@qPRMZ6;o;`{YOB`i{y@6CUwt~5z0Nzo$M`A$^S^UHv==|%slJ{pb=F?i9?^H$))gh>p(k` z2_ojMem#8S@zv*~{NwJ2YD%^EW81HTbR?k2D~OXck|VL};jkvL@Um8V8v;}dvAX+F%qL=CKO`HtQb7MNB!Oc44(o9a}ct#dz zRD$9Xn%@QT#`oiV44|ZX6X_65-A{06xf0*oGI>YlX~X;tT{x^Tc#u!(IG>ceKZjb2 zCsGuRYXezWd*hmCMZV!iG|nyBz*y3RDB{7SfKrMSz8O8aLt1JJ#TqP*a^#D+q7zNT zzKC$ZOa%t7dkjjZXv0H%X2P`vOz3B5zHc1l%TES(6gMuR=jAtp-%W9FoRqo43zC&q zDsDgCW(I9%vJjz2x@QU7vjC8KNt4#l8!r>(e6h$Hz@^JWmk<2u;BB+7atk45Y^>fS zil8fz&7i6>u_X^v=n%yZ=e$=zvV!Xp6>boACo?sP;P@s9J7<02#5K#E=ngdBwWqUI=%`}Vk#_PV#Y00d0T(~|um>(;y9yWNoftfJbNL=Q`;n$QlqTrHm>ZU`zM^;?) z^fJFG{Z6Z%n& z+QX6u77XhGBZ3STUS?{dPi{Ju32G7w&JI*BzNKDZ*>53?{Q6m z6V0rK5PQ{Qqh$2kfz*+6lg!ls*ACi;NaN6qm*YqU#EVE)9e%jEPAjpzIwnjRzXGQi(tu5 z*|Xt=*RiR3aQP^Iz(#54``(+yLhIfJdcPIaE!DoIU7l%&w0rEoGK?XYwLNlvan1Va znnZsfrLrs!r#(8W<&K!Fc zyV&ezx=np_MMkzbqz&FBDUEJj*mZ-tAgpw$W-)H)-=2mzMtw=K@YV0WZLY1XjDfF% zt2_4A^Svuu6YQs5ZO40nXUh6018%gf2KICp!A!L4r5O_5QRKDUdwhqoV?2V)beDN=cFsIjz_vpYKzs9Y#KlPq(^I%}|*Jpnz zwb?$9Nr%ZIa>(hDADsL$WLVJ$gUA-q!^#r~0oGN$`! z)Frtq_W?e*&O7!b?Q4jIgsy(c7o4=VR<+1HyIdnh;v`sR1QDqPN&D#>1U)gB%*+(V zg1Ko_Rc9-(Nph^OAgPS$kEOj`!O*fHX00j@!*;#Xvy-eJ1B{eXe9HlGwwUXKm23j1 zJdRuQU5wDTd>E1Ds(wN%=00z zE&kwwE_T)m?LorY+Qe5y*6mV|B>tKF0z~Smip7y-3d%;@;-G~rQqxxu)BFx9xVzQx zUxrmoe-}&suknEMPmyGHb|MC0A_fs64h~>2L&ODqH6r5TB4RKGia!HGAv53`8xeyg z@C|qpxcg!UoX6~eYS64i3{FH0&O{6@{|CaPziV9o5hnczC;mm4L?>)-V*>o@AF&ei zPmyZing4OD^s~gD5zK#WoBwkG;19j)KaqaxM>Dbf2yp*xAo2IepifiF9#;azZ?9s% zVHCv3`aXpQI!Ln`k2B1@hP@5$*o%-dPI+gxi%kl5yh6cuR*#Pljcg<^J|M-2a8}J= zes8+)E^}6!eGPX!< zU4^Jj1KjH?w~OeZa~r3tQf2Y6afe5q^K(1_Ov=1)eG6pIcfS=cJ9PFj7R5iL7E4Xr%8TgFxF|gQ9M2WeE0|%v?w;AuEXsQU&V^0*3jK zB^W|oFFP^bCKz)XT6DB@8{Eq1{SEWf@m4F5N~~S1TSo-iGADR3YxXvZQfUA;MNmX4 zi@KjLt*x4@lwS%OnVvIJ`Ww&*>K+dD8fx3+C-)l?&!-uS?MP> zw2v(X-3I0KMT8j6@2R2~E4#*SXQ^Avn9m?F=$81r%#3Y3VGE+(#u>|SCmh_jXZwp5 zSbuu0L%N1B@q*~>D?%*Qq9AQBc~j7yV&F^ru%$7ochL!ys=A8Q}?Z(Ud1*xbl>UzEaJt%82URw|1ZK;Gp`=#?eL(sV~s;uw*=oi}Ahn zPbl$g_8h8_@Cbzj)wDiNby( z6sb$^mfwJ2WJ1cLlq~lkc*hs4KkB)x?IZGD%B_oy_dF`eMMo4YVzv8ue(xQBU1B*-MgC4qxz*C= zRgKD)FAtvz`;)iO3sNAodD9*GhplTVqLf^#YeXLg4oa-+$}HgsB5E?POouv3GDiWP z_c?Ei>aW&sn=N_qk)-sfO624UJ`F4LaoV~_yx4wSaR$4Fz2BT)AD&xMLetcrMahA6 z>qP1Cvx{KA=Z)g%1z$qvyM8@K+&U+B6b>gAT;gMR`K6Xmtf%&k+#6B{JRxI|_X7Zl z-tM$5LpF!Vufdj(kt7oE!4@Jj4BP(051383qlCrm-)(}aOCg&@EN*xBQy)&CceJ22 z@xsr7&OZCfpmO-6fJc9Tu^=VR%OKhe=vJ{ykr;KanR?S{)4`KwAQ}>?JiwIpnvXuR zWZ*O34#61z(wFZFU8~c_6HR8DxLXup2P}yXeF4w>(SCY}Y%<291uNJDt&tPlnamRB zLgleg*t@ciw{EHvbeF@|L#*oO zC_ZH@{8rpHs&K7lA|*fJRk4F6DUGib(9Hr=s+X18eBb*y;&7tlD(6)xSN8acE#GVo zw61*^cd9Nkh8lWeGt;Sfm|IfH^ioW1JCyaj5A7^%%R2#dxUj!i)39_jSpVM z$Z6s_#*x+imMW9CT@UmyW%(ZhtnZ?TZ12Vwl$y5g9Ri<+$4yUFc5i(hm|{!l!Og^NwSLp;aW3xl2=1gJ5{Q7tAD6~%&g zUFS!rPNtkQI*RcjE|bl}RFkCs*3S3dUG85Y(3_n58N$u;!$*ShNukWKpj5H8_zuQFnOy? zHSXEcQXA7U>O!(cVK=NI+k1H`_R8L-G_eN*`-ZVva_TY6Bc}fn1_4Rv26&I05Rw`~ z6-c0eE7vJbiPYG`$A75?C`Tqj6ptT%TiDZ|W*;$+mdtRl`87W51C*xOU7vYcElmFM z@v_w$A7z{kH7s%SXLe|ZiXn5T^fE3ZV{FvS&D@-ir{;(>6Rp7GWZ{VUsLp1f+EfP3Ha16-G~z7< zXjMQ4kr2qMNpC26dN2D|O5x%$7NoE=nw{|?Qb}YoYmI|B{oVrSk9!;GFB{L@5TIvZ zhKyLF8j6d&F_?xgCa}ApU*`#WCgUlqz`#>nIs>X-Yh!>QuZyj{=deHSy~eFv58)uL zd}4B3m_o+_YhhdwcqyZdHUc4lfnV)GFy8romxh!!0e_34qrZw4^u-G@PYHQI7N> zsAzB9`zAEfU+ihpx$~YwfDmw(Y4>Dn+ADPrS5p4^3hIf;UH+4QIM`lIKN?`yPL=8w6g~3199O3$mX2qWv#QvL1UBUTh8}Iy{@Nq3qii&gSD8Up{Hac86B<29s1a zr|SV9(5i}bsofuD5Q|2n6*GrSNT&WiimcmlI{9#YnrRD&HZPiZgw@P?wp>=xn`nJp z37O9%=XE~`wdb|=y*XYi(0>`gH1K&TD(|p=(V`oD>6iV$(*$zN6g?(?F{B*GX2ggE z4|(aE5Y4BhZX|a*m@tymXVa`ZPO6Oijc4lH+eKVgvSc5JJAK9qXn#X@;ufXWHhtZ9 zo9(3!opcRNx)d^#PB?B#oI%nQP;wNyRefqBLyQpC%^j@}{sPgM7c<+hF76;&RQt9n zhZ?Wjg)V624<@B8d7A~rcBNjyM>x6Avy3~BMh$8S)x=HFCq=@H@J4a3r>i?t(H05H zW5OlE2abvFID0G+$b8q|hK$XzcoC z?u+W6v2Ly0tyBwziN;a{0)EEgjmzn`O~k{z?>Is)Uq6}{<+r)(5-ZIq=cnNFiHLZl z@4T;l-|}52p9Xhl)CvOns5MNu&JAO%wHa}W;^iof4B}yl+ zt0nt_Ao4|DT8IZct3)&(%DcBix`ezS>p880-Dn)m zZS5Y+Xc68V@IqpPk-=MztHl$qp|gcr^taEOMzUj;G2Qz{xczze5krT=u=B*r=2S_| zA_umgHD#4_l?R;JEf-A2S@b;`{Wjo9^oAczVZv z+9}t|MblbM8&Daw|IWYZ>geF5 zRr6u^ZoTcH3#!Aj!Jk0=Jg<2k>O2zD*XFC}i=_YdqpJ_nWygXCuip;B{Nr6w(E<0k z;kzwm3IYX!6BNI#uk&)5H7EWq*TW%9;yo*91P1P)94md6#L4;=J<+26GMOFSfU67| zI1k=jqcn;B?IV~cgwIF5eh38iBr`x2&mp(Ib-4=4Q~yXMcXY4GimatLMg|3rE*%Vci;y9YmG_ie}%4Q!Ha| zz0}?t|MnrR=Gr_A)4tvA)_3Z>;`5%5`*ugiB}S1EU}*q<&*1oZ|8;)m`{rg0yyv{~ zyLCTJ4&`~jJGM{Xtz_^4SJQCk4TlbLfc)mPC6*W7^ATQIJ_Mln7|-nS=Gyn&x$jDd zCLn`q4V|0!c6F_FDr2hd9Ejrl{Jdp{jO*rIx_;gx+GD{DUF;xQoZ$FfZwB#A>Kmp8 z42?051MxW>ae!*tM|n28lqBRus&DX6d#r1vk;P~=%CXWyTw+H-;A<&Y$%2Xs3`4kh zq_SZV%|l+j8DJzr!(q)K;58nc!aj!C zS$|AS=7)wzv{2UheSCqgqMJaQrqjV2t*uU(y61Zf$r4eGL+~Q*PAp8MlM|vMgz?JU zdC~41SLgSv?r8T&_}YzCI*vQkr!Uz@9D}~aLJU*u(TMezun0Z5l*NJW7ps$0Bz_EU zlSqmsNpqrJLF9)S&`uSp*?pBz4hx0eDYE2>7FOgKb3`{L{XR+>PL75CF@`)f4S9(u z+#Xn5@3L!xf}#RHKO@f48r7y-CK#l5E7K#P1-e5ppqmoD0iu=BW2*u4J3n~4j0zI?K)Wf#3-n{1e8s zbo4sVSlRQtCqb7CpDCzMCy#4xu|@IHd(ffNDykO?m6ElBxvp~A4(kUC(E+c)ia4Qz z7&!+;G9Gu|{+PLb+#1&Bx^Su^cj_-cHzu>5BnNDN##&{>?@Xi+-fcs=pU^ucGb7b) zS+EZyu_}*a_tnN6CWtw;YFX5tFainfwpqO`k4nZvVG;n>U`!E^D!q;vQ<)@GS1CF? z7lIgUXguN{xap6zbapM%U08v-^OY#xpuz9j890r^#l*2rTOQvemBXax=;&0rL2|#Q z`wF0QZjDuG=L~YKCP->cqW!Gz_CZ

    Z|rVp&AAxPkZ#%PYYfwu(bDv>u1nC;OBjhe95N_QE+MP72PkCb(-!OCB(wHYktgKZvIrQ zI5{q3{>2J&VC_v+0etNuXtg%9vqIO5_3BCTI6Iqbt-kM_kNX2-px^aH$af7-knF-3 zJ2!94jY2J3+9~2uK8Pkwa$Ne-3VV}?E@37ES^@|S4d-)k5B(B}P>JOhL+=6y-IbMh zO<1EO*Ne`6`1LyKB@O+Hg8a%{TD((vNg3F1co|?XAHbG6T}}XFIC$-r5l$kdUf$US z^=?cwJ&QZXf&9g9Cd`XfYgkjfVJX|>j-SKtF&;&IN!mU*iqVvx;_SazV0#41Bdv-G zr7)F4ZjNOPLnTgh6b7Aa`ZpO>P^O$pQ<#sGNYsX`27}Srmw(5Hnc`Ypa_ldTC{}T9 z-!e;zvKIOM&^{2%*cXxfeTZL5~Z(WlJlX8#*Vb!)KapoB9B*+e0d!4>BW=M={B2Ygi< zj_7hK3#crzNh&wTpN!kY=hqH>(D7bwxmzvci{ULjHj$@C3odq7c*E;`h8DCP|7_y$ z5Zvu>>d6a|nES4U2N-1EYJW4t6bF&641|4jF9E;n-kr4De;s9K-UUfLaNEYXk_LW; zzj+zyp1grOJk)#Qaf`qE#a9cvk`KOm)J+nWz#Q&taVQ#h&KPYeacRau*U?h{O!a_G zn53B3Ni7|iMU7V=&qzZG+o9oWAuyK)C6oEj!4XOvU5s*^ddOwb*4KSvGO?dn-1uj| z2%ig%suJ;*jS3?d4;5o~2%yB`gy3xR&zoW#l&vteDFqG7`31z>hNwgFz|b@!#q#k@ zzs|z%K;-@ee|47%I+dq~lJa>{oC`(83klMK~i zQd5sF=erJh9eM&?DR{Yw732D8M5&U_Gl6zue7I$Vo$o*iB69HO7ZT>g9etx$^3!k# z&0;6(WKgZ9zFu{HHNjkBINB`B-GaA`3&^R=sVIeAVO+zu?*?H&TKWDQ26zK+&<&yU zs(xaH=h>o85S~^b9M2~GK9*S3mH1NtL&P}bLLT{^$%SmG1=w_pOR~Z+ot;>c__Bi*J zR*zD1`^K=haTgW~KScNqUIdrZd0%&Nee=!-(pFFZDL3nK#jx@;CtXEN{l(yIQ6rWX zn~-I=gW!%0IRM!53c8MH9hz>Hc)a+AON9sV0e*vlk)TFR^|^4hCS}UJ`Uy>!h^?FD zYGdYEz9CtPfG6%oBfMMGrUh<5og~3d8yRQwQ`5z`jzpfv(e^HTI)j&y!Q!xgJ#@kM z(iI#+P=CamyWFiIx!WNb)D;-a_9A{H$8J&9H0`%9!EFN^^5mr%9Z;}o%joD5NzjD_3*tFf%B-rsqkB@wE zLT3&`OgVVe^nAmyJr&P%iIV8WJrdLYOS;v?U|_cA;~-%rLfg3JWi@ zcuuk5dsrf8(Jizl^WbV`Zi|!@I*#ZZGZCcZ<>7*m!_)z4L92WV@#bZSk659LgUo}T zk-e6_p+uG-8bg-oPaAyq5!r3C8$N#JeH=|Nzl)U*MkvKO`-CWgj_^_71VB_FT2Au&CM*m3@nwUOR(K`M-$Ep#OxsdHm;*E#6-IN!J za)>(Yu0&oZ{dhOeiyi)HmxBZq=$z55soQs{Yr@WeE+0KplxQP;eGG|Ylt4q)0r*sW zc~&#Tv)av=q?39Gc2y(;-<>ns9MF|7%A#23^5u5x9Q8I~ALq1E= zqa>x0H>|y(TaqJBmij2CdBL)@nEID_Yg4A|^)xq+ee!{3sbe8w{t9+WrX@O*@IG6qCBE|DK8twKShc1)6Alkl zb{Wp&>J&DN+~uN$&^q2@urMOaDy*1FXSIB^Bb9VA72d+Ra2fqiGbKq>@$?_`vMWn9 z*qW_O>o0z&v^n1)kBk5Nzqse zM}Lp-tjfE8cHh987r=prNS-7-B2*v{qa7vb6rpHEW`d~QGc+?5H-Rggm(Y**IyBiC zv;)rUA!yTt9q*M;$2|IEfyizc?6v1(X22pQG^g*HPv_|?gQK0|JKhj0eGHXcs|1b; zSbCT`8fDSpNS3F!*q{0sMk2yfYvc6a3Q{iZSIgd;~AJ~}NhJAo4k5w~j ze4w=NcE~F8F8}az9py)lrwjleCrB7jqyE{bFPNNUG}$T!<5~cLh?WelXEw zEKPp!-hSou{lSd-BgHWD&xF5!XF@UmeWO;@(gjGeqEvA)a&jTEHzNYRSsL4zQUNQG z|B+yr`DeCY;1Q6b^&|H%^RJA*48R<(M0Tz=Hh+2fEAStLzQ1Pv{aMqW`>1~ai(8tz zI++qN{Qy*SGIawItAN|BKe&Lu;D3|oe#8IFnhZ>n{J#(XcXHj|;hF!0|84It_@C*Q z|6=_gd6oYI_`mPv{~ey?Px#;V{)A`wy)FKS^(=oRaQ@$i|5?+&Ykbx};eXrv3;uUk z{D%LP`T0L+d>|w9uY2f!x1Q}E@c*#)7yR#B(!b$<<)8jf;QziX{&#rxKjDAd`wRYe zSNw+mk6n-DzjHl~KjDAd`wRYeSNw+mk6n-DzjHm#KjDAd`xBn^pIndiKX$#JHT^r+ zB()3N?#()hgv#LV%x-1fq%u#80Jz%i-n{Nu$5NDTtMc@c@J!v4$r^?$eF zkJ*LwcaQx&gZ;nEQ?Cakg#RTyJ?kINEY3{C_S4aTUjs?JY`+uKGZC@q zlkMLpP_}=f68~f}|Hw4|Cn@>|ANfy8^uOUy|Dsv{rY`>?Ovx&!sHrH@sH(Cu*)#t5 z>Nhj{_s@PYoZ0`F*MBphe}DTgIMV-2r3QM}Po_1n$X_StpEdqDNdN5~-#-zw{=$#u z~KieK=1jGyZ zVB&TDd@0mMM;43uV}>Bnmr=xyQy==rwHF`!`;?b)gRd`}p>!0l*NA$N)scb9s}#p% zwB)qJt@4_JVPvAnYs5CBUy$8Uw_vD(O@qy0XrN_aDp1r>Fi-}A$$~jxyrCXFS*>tC~@?jpOru1Bp$iJNqCLq>st36={+f<8rMe;o(y3`5gX;uCRpQX5rZm3jYo zP+#!E@`UBca85qNmmApn>2Wg4WCG92?CtKSiK$HdOtB1C^ZL7{!@bLAlv~UJ1C5vK z6}ST8Gy~oz4#B$sWjXwO^wIFNOKX$y_4PaNjZ?a-*5vwjmy>U?8Y#|MpB~0aay%y{ za3-(~SiVPg63Vh?8BAp@Xo;WD@{u)tiDRaWpObPxzsrlPiAof^O<5K*aRm&W&pI&G*Fh-e8N$4<@h~khXPh__GD>+VJ$=xeu~E zn2i=b32!?JarbjPzah4V&@=8?-WCq>#xaTF@yNz8VGV;p6vPdeQtnAFyv3jhtn=V{ z3}Q}VV}DXUtwIdVvZ}VCRZr75di`l%nNMS6YF{Lw%Jqx1xR+@@t${4v>%B`PN7IW& zUx(d@q4^ED;nMx8AjvJDXl|*}?oJcu60;&$#11WD^oXe%vzn}FYSi`)mr3MjY}Nx@ zJo@BZp;MLkF8DrDHn6#;XK6@X0;Gb9RoT^AKee?uu2eB@?>ia1meHcC;$!WSKC8Ng zTKSDvbJV%Lq-DuQ%C2H{lH^^*R>g_1Y6#yX5t%h!%>UEf=ZM3^bR_q zSn^(`XJ3a~xn8?mA=%!knhnevn-`>+RXf5wxPRo4@XW4@tuMz_IEr2BSG zEe(;k!nbm}aTHH5%-@&^YQAeXyxQu#*K%NeOHUi>55|bnSrAkr;Po)q1+@Y7RUdci z#>!_GbdSzwT$7;BQEYx*`cjqK6N7sqAwL@N!ER2I&5y0MEIb%&>hwmEGcv4#bdyQi zC;ukRcZPXpWqB6&5D#(Xje9Icw?yx{bDAXTxa5`#@iBQ9W+mBdcr~dbH_xf!bM{t3 z_1KQ=6v^XbLR0%k((*89V{1B?Xtk}G3n(Z;laF@znqF2?+t!8zn$+4_jm3bI$A!|F z^qJm_qpf*+gT(fPrdq7HUI#=X1;qH#Y?Y0DR3aW)@nlrc#Y--*i%_%yveg4b?c5b5 zqwGuM7!|c0CzNM!8nBy30_t_5F%aS6FY4+BQuD(uu*Q*P%|-co*B>r;o&7Vyf6yEZ`50(d1r};oHSIBn1Ml|27*jy$rL^h5Q z@@l<57b0F0YtDhkubN+EW6$j~s#?}Q@!ffCiGEDXpNUNzSwSEm8H_mPMvJ={W-u0i zK?Cq1h>w>ui}}8dxK$dSyDigWHn1llZ1ZTg<3f*XsDL8uyr{!N)ad143C(LJ#P zu4{V$P3b*QuA+bL{Dj$yL_n3TkeDMUg+xA+>_DWKe2U7{ylwt)h6_){ z?Mz%i6%1X-_FiKnWceG37MTw*LBN*lwjOw9LkD*Y9@C_i>!r0BO+PO^# zYVthYp&$$kSMWF$9DP9Uduby)L z)RHxGn$&Vv((g0}<}cVntyI)D2d8tP1qx{u6GjTfz}%WDRW(N=&D%gjq9>FaamkyZ)?#KrIIW%VhZg}n+}%@FTIo;R>x^j;wX4!vxecjgzFj7&pW$dyM9vLX(9z|k&2`%=|MNDw#!?HnZ?xMebb$(|gf z+*w}!I&6p-v?8r+iwXiKT>ot$I~eZQIh?~$?Rf3zxB!fjWa}NAs%GJgK+_M1OhXSf z*f3m20BkXtTM=&TXyPY(_boWd+r&M&?EV-Im)(VTFGmW#h3xwU_?QjMZ7%r~eQ0IG zJrJav&dh1JG(&>rK5>~RTLgEZDQJD4z_~VA-?AN{W~F9+*_$Zv*=;T5S(U0GsF%%F z&MEn-ZgG+M*{M5t1$ev;{aL)RQ>{Y zya~VBynDKv^31qRj`K0qJ^H>oGU>vFwXs|FfUz2?vmV83bEoZ#&qD{# zJk%v@P5-X{^*8k7uUy9{T7eN|J999y!tpDxx`GDQU$NM{awqMoJ|Wy|+m?yvL2w%? z@Ar8zulE*@Xbc$hEWkXVPP^L+G?KgO9|*sOc#BWfb!=!Ra2j;@<>E_G!+G$n>ggF} zQxj>c^5ci_K4gOTbS?Y_$tBChdJ8OCA_u&V-^WkZg9^O(@g9q>6LM?Tawm)6J72L5 zH}|Baai@xFG8D$+n79?mZN4IKil4Kso*q;GG+uP`mcFWObbJaQ3`(e)h~Hi1`|g4U zMrRY;M#&jOBQ$+rNzTSJE_)vODGfj6FoX$#fi-G7Y2}FCFl6Gy!j6p#hlgxrC;U}t zoti6~>lC-2uUMIAZXuuUhaDNZLY1SVA^a#~Its6Gq%7XWxkOg^Jk@97=F!VDK8Sw! zM9rb%p}s*1vkgAU`i;8ma|vX?0o*v6OfgfUmH&LLs(?m~3|zsH;niwrThH!$h4WMj zdn~^4+$4-Lg`+|z2fa@1&Ed-(Pe3G*pc^(GBG0Pj^?urnZHmF6DM$53*%%}z^t&nH z&F|f|55~-E%ax3<<4LME`k`+3%-!z{ZLZ&}q&?DfBw8950*0&8z#y9ZA(bJG!w1jK zLWV|-(!csMu!^=_9rVHN@w_WX6e$2^X$)UAB}i(2y%W${{0`lFP6Qo-VjKRE%BM>q z3*kEb8a~^=vu~UkQzi>x3M4n}&D+jBilT(622t-4izyN{9Edjcz?HmWjl-kT{LdA6 zHFqYs$;5^jdyLFj2Tgr_VEL6_U?(9q=HX(mN}PfqUsviPJ_76?>GRH$igYAYa8=1s z$CQnejt-nMWJ#1TjUl>ycDoa0HbxU29H&aC&ieQqAg~=t33%9dn@f*C35riDmFzx` zAoobl;+2+0kPVvTllQfuH!#~?XYWTG%L4W|8>8_EYHc4A`zKh*6A3JeFha10tg56m z2b467zOiwsp;Mmli^}79n+1Is#Ij3$R5dYj56G3$rELkcJ2| zXr@`Y3#^cOj)T<+ZWaS1HeNr{ZreL^D8D zwML6}c=0ZazQtDKP~nyg+}TAD}#fYWViF_zj?R3J-s%x*Pz&~ zwU>)&v<5g_NwbkliiOR}_=x#EmPL@iPISUG>_FYI;1O0myxv@dbrngQja^TZ@RJ<9 zd#Cf#n_f1k*wrm>6=aG#22%une%`RuZ5s95|ma>`l$UvZtZOipfK;c)APlh%-C&LN2l%c z;)=RwMHBg5x(8hh+ z#<%FYFj?;>x(8<+#;G|uQ0YOOyQFXX*W}u$NbU$@FYPbwSHEmdK%MQ0pDkX&0giEB zo*$s-~lO2H{_9-lZ^BBx`P2j}3Z z-}I&Hz9@}H7bAc3JaV{n*mx}Z;68ZU-V`x`*NgeN1t$6x0B+;W(R3Tfv|TTr9+saS zmLFj#9Hw&^XTKQNOEW62Ue6TZe~MsT+AaL)mt$VZW83`80Caks z4k5?L!-q5_z1y$z)f6$iK>}D*w)x>UMDg z2`G&yp#{C82CQvcLR(KbhS+vaq8q{BajLx}=t*-~>j3>Rz=g?Nw`E$Sh_$H)|mFZ|Cd#n7G>6ShqO%2 zGx=>@w$VPrQDH2Y+cq!_(w;Gpd=N<(;jR6xBm0eDUjUezqNnO=j_vG~7QH9o=1We> z!;x@VZ9g^CVGddg^VPDd3Aq#@aa4x5s}gmR3VQisA718X(f)7bHR|GBSyc8r;x(wI z;ZrBGgdkWD8?vWyU3~@hx)T8AZO{jqGo*ltvn_?&m${eAK>@qb3VU@;C-TWvLSi@13@BSRJg@y7mT!Ddl_R6Qz?6dPWs7}co!HY03=tBYNwshby%5CAgt{kw*!ydHxzx2Gt5LQ(ran zEVR8+an_XZUfo|uM@GlF^Mp<7=(rBi735NN>CP>)9xowK7(#=3+i}>G_RDNAPJ5=V z1I|1OJ@G6%(|KeRwzO57EMwpN>H!PnwZ=?`;uNbDS;IFLc;X#Ht33nx^b zVq(G=gAlS51u6@gVFGPP>$f;7&HszFcMgv1@7G0V;$(t}C(gv~*q+$7la6g06Wg|J zCllMYC$@F__wK!GpIztFsayBH|8*^V*IHd&UF*T;c`zoIYssnkL}S9qsM%_?QOa=> zO^gynPnlQyBo?adiH_P=Si5Q!if5^uu=BfC<`(#_MtU-n>KC`Y-_GlxL+*`w8LV^W z<&CFi3QGeey5hixH<+#lORbmHZd(`)-ee1GuBzn$#$O!evJ+_Sm71>PSL|UDX@^Y= zD@hmxMYH_1#c50Qt^*G;w4A|S@hIFp1O9}^8`qfb1P8(c&tu+B(1>VYkUwSpj2u^R zv`nxGw(Eyj1#4DSpyE z9R!m@`fL(d+~xT5MQq2ON0fs9iOB49Rl8LZ(i zrm+YHiOJJZAJ+3E)E+!NUO}$q^;T{vG`}%@BJ)NDPhIw6dW8ZC^Z7Dt=+XMx826BlZP%gOVtK-SV0E=%d{`lPa-h;x2pk)p zwTcMg(xy9rAl6HD(eD?1K zH1|D_s&}X0cWGr5rczD|Tlp22oU&eGx11*Rbo1 zs7gFOAPdsm3~cnTVOuFl^b$s$Rby7Fo&+|wS<-n_8=^(yf+r-#yiCU3mr|~HJRR#% zFYiqdj1uf;L#y^6ea)cvM+I!l`rKR%rMpaNJ!&gu_iz^Y+1vY`^BS$3zQ+1@;}HoW zONF!3SpyKJ)w={Gqh7Qv?+4Ls@!K9lUUR1c(0&!AAJCbhu$2pr;>-G6W|kA{KJ3iB zcw4;4-0GFJt8xWvBqqU_K6`Ea%G>7aXeW*WHHi#WC5ptltyJ(RftURw-B7`W?~!DizmDN>>&sR5xUR z?93eE3<)4jNGa)WsrWOVhpW#^0cDvvt-RRVqe`+naYf1=&xrI90+TQHv@v`fS9ED1 zO~phnFAW#3B%AyfBF(-Z`z%c`h+e4oGgJ_H)()Z23S?-&PV?IR+CbtpL*RdwNIV3i#74Xx>%Z%9~ z(Un0B+`v&YLo?HCbGK<%MP3ezq}(&uw|)iP^a?6NW)AC9)hj3~jO_cDNHX1DJ*Rvd z58^{mb26WPT>+g3#l0LiY`LJ99ieWYZ`q4cqGhkOF?m=Mc;BB~jn;+z`Fco^1M&<9 zXzzCUn}FHw;7!C_wC=jhr`pUOb@zG>0)*Atwpt5CmJ5ySYq-+VRry&en$c!4me>`i zra69C@s!bQqGvQ5F}nQ}#xOs`K!xqbE@+5&Evg^Xt}wi{I*2;FtFz$2z5uPey3XTC zS`~Zi_tQvQ^+(jd+q(?rLcA1TaozKXD~aPbd;jhrl(i-P)DFoX)nQl9=o);+OlnS8Qo%sxgyY(iRv<|nus!3jk4%dDhU88Wn6 zsXaAZy7Zg7)mL(j-Q$SuKOu)R1y|sQ^AwRT;iRxG4AXq-Vzfyuo{lw~WMMd&Td*Z# zWwTkqU^hHqWPb&3VaDoG1EVDLoNM21;JWneIF!fW)fE0vc`ki7ey!YYtS2Uje-&ep zw_v4_)J^)Z=LlneVs@Q)SGm;eB+y#@eEyJK(aksisyiJt)gIpc2K#~Xf!6jnJMdDK z^ICO&zkHc?#>-gltg@-BLZZOxL>fC}0~5v~z1Cz9rH>hvAvH*J7q)wQYKvXAli^MO z7Tt*p@R9Ar>_WjQAPpdQOutwRn1t}(c)?vrHQTI@hl0!Y9 z@__%ofB$^oL}+>w?b?mKj^GTdvn8k2FF$z_ZfDP?*QPGa!1x7BDZSO3_AE@>pRC1|>WJ zL$4{H)eAY|Y>AFcA)DYN3&CA|hn9~z0$#}$<>jE?T0)I08N(t?C8CPdXnWMuyb(C= z_NU=eFJT*5KD@sa@7nS0)Z0YM*+hCSdn)7gzwJ`K2Bj+>&u*-ri_KT$!8ofjq7Qp7 z>;RRQmge8}yK|~5%dNhzRC71eQ!`PA+x;F9qD`oyV%5NX?50f+*=EYN>WJ=UZ~AS( zQ;Gm-TGaPagWkAHtWRB67A9OO%;h{Ja=XH%G7%yV>7h>fXCER(95(%WZ}`|h|LL|z z1&EwhN`$IACSo~MPT4zZLE&>o={}Cj(aE~Y^Otb7Q-q<)A$1*9e!N)lA*-J5q`!`j85&=@W7E z0?2x1qfT0QOY*qvjy^lbKV&uf@PBc#i+N{bB_~M9O1O7B9%S5UgJul?b_nR$wPB@3 z4uPo@=@HwHzke#6Q&**I`#pfaA7CnZjndUuuN*N!3$R^LVUtFpXRer_+K}l?VO7Au z1tbbg%XF>N&#y`HtvGBtD4zexNNF6*u^owmTczT*4;U@BwB>9Y$y7v6h*0UqD&u>3 z87V~nGCl1qi)NP(T?90B;o&um{dbWJCnk=zUgwPoL3Ull!sp)9>Z0bN!Pgm>Wee zW+wy?tYt^0UwCF@m$0*iWi6}98&$J$N4rIjHX|GM2)rQCpt3#v7OYkKO=p2GA$zMO z9Pk8@z2w&obtNpzXtwXDZ^S<99TsTUQ8^3lD=JLeMh{DQ@*Vb=-m6mQl#$^4q}{V2 zBd*rzGwW{sZan}!)%V+UZnCmbY`Xvx%*m^EvY;#4fpW_m0{eMopwOU<44fF0$3}#X z2+|{1%QtWCmo;?HLFJ66Xq&5IYu+DiN8Py>J<|eFDQBq6wVjZmG|?U zzIZ>-ph|TLj?6~C3((h|QIfxbv^|d7>!{y`yG;swnF}d4#wE#ylB{(8)g51t&VwAj zcz!KNsl%4QN#V6iKOsI?a>T3byRh$eTw1%%a~{>6DK~JewZZi>Y&+yyn%_Q|r}TQ3&Q)vXgAo|&N{BO8+f z5(Yh79Ym`yr0cyweLsl{5$iY8=v3%*?}8j#osY%#R}^~}6%s$An2T{lpp*TSfBN=P z{?lFgQ~lBvpU?FMfQ=9DW!dG|Mx@hkFQ5_MSf-f_XV_<|e>FTZxp>6y_hlVx^TWZw zmPD?dI}$PDNodJlUPT$hQcQiKoEM?zZFsPsyx`e(hG%4qV7ajj$`sqx z8?XfYZ|+|kOX%Os-g=1N7OHs*5%2JC8whvna@T<}# zS7E&fFfHUvi#Ixkex1mPqu^k1gHxecH_SAR67o0IA*oO$A(#Xgq*Cl-`h6@CrM+Ke zFB!lBPBlV+V3Zd!UkQJbhKm@mP>3|Y*5H-K#p;O)yaA#V^!EP&Unk*v zs1t0PzKD03fXyz*jX>dqY@-z*XzcSjd^@)pgeD`S&?ZTN00>FZrQ(wAq87{<=EHnx z!yG(D{scEwebM?q4z{!Y;}ZIBf6D)i`(Ypi2>dI`NS_d3@K4YYz=#kOa0IaZSGduC zgd~A7jsT{F083E%(LYg108m1u3CONu3$!=00Ud2Y2(Tjr$P)s@2m!8y04YL%3}}m! zjU#Bki7Dt@Q9^*?zhahT2>}YAXeApfE6~;C2mwz2id1q2t>yMl;u1g!!1E_kdATX?Y9 z=`zzyUT67EES)IZ$Vu=(SL0=A|W_9%^1Y6IA`uMv zeSk?QFS{^9jDyfis5e`;uA9*CeZR@-vhm}Wr*PttKQZ^oj56tl6II9^fBT(Xi|PxD zsaz!XrfKQ*))HBp6urMLWKJpXiI;>{qEVHU(z%(uR;;rUixZ0(b#Kj=vrLth3n7sx z?iH>_K-8K|!_36VC=u5fP(ey9 z*;G!XwA*w?7o@VPFuPo$fbJ6SamTTEquQtJ-?+dvA4eC;`p(%Z-jnnE8uCc60T~5% zIIQ0UA3++;cF)B+6N>O#aqxj&KBZaoDOl)(-?6%TuyUZ#5>;Jvnh_Tvsk%-xbUl+j zeB04K_`b=-m=EJ?NDs|T&Dq5>uanK?fXUI{@ueL3nmr>itBM-3BFc6}Z*k`jqw|%t zG{wq&xEb$NTo=|R5v~2=tHfZFfq{MzlMrOx7qw9eRXyF4A~@7C!L`}8{bV355W#%m zIq!5I`FQLsu7r60XJHncsu{n87Qdxl5&*f@I}4h)vvC{D_B2?+I^iLsP4lkh?{z5j z&?P~;%U_(En4Ub`lzNLWxhd`dy;sgXe?Xto=uLQU8{fe(c_=JgA6x_NAW@vv z;&0oa(V)z0S;p%_NQr80zqUivma4O_vYdlZ-9pjq>Kx0`+5^K$nuZ5HoTx6 zeb*A=h>4a$#>UK*AE-FtDAdHkaNO;GG?FOH4~QpypBh0KI0O7j8qA)nz_J@M%IbXA zVAhDNU(9LzMh7R{POp_3wFp6eE8q8y;>q&;4dT!7*WhjVq?$B7&QwWgEDqjT0Ke0l zNpf8p%4Eurs)#o_&0`E?e@J-$rnqTJh{ffDPw|H|q9L#wimwr;#!3WHK+^wK(5_;G zkxP>qegG>ldXfEs@d{Iu7R;LP%vbOm#rc=&C3>AF)CfOHC769ZidWvlsxhylrU6p+ ztQQt@26GxU#lu-#I!i=r$@YR4iUqVx#oHo{G z|1l5#ueL(4m_`Ec z?0mZ4ge|5CJJ!NWfEF@-`;2Y=Q?|WB3gIj5)A7w$O_m#24P;y#4u|>)qKvS)jcLCe zj)~?$^k~($F{Bh4dLJ8pzf$Y8D!lAd8T)N=I+`KpCx}&!tKjhNQ>5dHyCwD~Cd@s( zFMYPY0erQ#NI0qf8lSYd`^R_04(zu3l`QPJXqjq_dne|RPVKJC#ajb@ybljQHw>_M zg7p}ZN8T?ag|IqB(cnP6mU8uuaD1)unDsSB|lLb6z+om^q|_wQNP5@EIv6d z|1JHL)Zrk$0Mb_f(6_2#q;_(#^0G4RJIKy6r=t6)IyDQF&pIawoQz#jO8TJQ@frez^N#{3H&viIu9UuTM6<-h5gUt6)u(iWIfo51oJ4Ndx zTILa`>1!c1?98V53bg1Dq7*L;#S-VB^wdU8Rwm12Aq}niR`^1Oc;BU?I3zJ%j>=3(%t9$8?VvqjZm)7bC-3bm>lOxAm@gxc0 zhy8;M=(6A?ct4RfDH<7l>O%uX%)vg!-*Wq$hFQ+V%N>DHBEzzFOJB<+g|2d`(xFi+ z*hb34kCL8%C)rQ3YgEBl%HU3cVl2`(KKv=P8P!2N^TO78ovszOw5CxZWe4Mk24%H= z*hyp#+#i>DA)%%FY(~JA+Y-!2nWenGc_5;z#R$jDrSC8!5QjL;{An~MC zLQ=fpAHVqKL~X&s2Z^bkbHA=|tK!jebJ>#LX%O!W$%y!rIz>7~2{sc}uCg~trQlUUJ4vmJ ztAS%`vJ6_4r9F{4iG3WVQ*G7;RlHqCe2Ip9x{MO9^vTJ;>=waon&$gahkF zko+g0zqvJrJ#K8Ku!b$s{+1>ZDQ6y~o`ZdSAmC1OvmH?QX~>NC$ZWHHpDwdasTX$l z*h3x;jgeIh7ZnAO>9Q+YepvnCszVs{6Td%yx_-5uGl!)kB%0OHTJDq%&eTmq^N8G1 zcMJ8J-&=XnO{7v;m&!|GIm^QHrM`x4@xZEL3|7BuClAeo@ibExnubHY$Tc$DP(LRB zGRFjWUk^#uo`-+7!~V>L3C?kf#rt!_u0; z2FXS^8m)Q0Xa2`+!{7bDz=)^2lCw;=-Hx0o&rpKv_t|Pfbm#PQ)$*>AY`gr*mfF>_ zLoH#^9p(1~}378JXv?rS3yrvEk&_P(bvRq+GGnl>gvoh zdG5FeuT}Il^bOpCbsdzHZolz^XwDpw$8VR9Ud?l-f#T9!lAWbJB4?ozp%M~dqlaTxA&rQm9LnWO91P`1-M5QljPz|DZsjy77=%Y~atVe$RFMGiU8xn`77ti?! zQ?o#(okGekBgmrQZ@u{!+bn03eq>avcbqAmRXe+qDq7~Pe|b8Pc|^_dvknw;pTlux zxNYNlQ^2)3z(-ub>A0MI^0dTaBrWTfL|cX1gP&i8Uxl9vU(TFHv%J30?t9+NT9~~k zG+{l$+*#-&APtVZM6;r20xHTYN~%lvW`s1%9+y!n!^~g+NW;mV$F4sRjsqN8$Y`3? zNETWGHC^QMk9pU$UEb$uAtU0uU|l=5k2`L~p6_9MY4uGT4L-`EO`vxncEvrvfsF=? zf~R>^-Q2U36a_1W9e;yl&;8RhptyXpiM~aB8LQ1XR{{EUy9^p{(qNJH2ea*KTz_UyV%SYMh#S*8$r*_)ZQ!L`%r; zkP^k@ZpYQj?f;rFgDyP-Uz`i+U5Bs-tj=5|oP-68A=4d)t8hsY{ zKIRP@6beTl`%&h`{A8K~D+SArQWNc4`ta%O$|)K-hsLhV$u;kt_-@Z2L)?%Jyho+k zG}-aU%$Yu3UwKf`{e$CvFUplNO?D_@ZDMbtpr{2DDr{lr=40pkdqr0Fn{PB%>EzI_ z7t_VTBJkCmkvc96HGKDG;6^T$9l%J+NlM8`&CX@IrBWABT`hp}ZaY7_*re>y8 zm^64zu~6OEuY9(Dq`6W;>o$xx-mSh)MYE8htgYmnbxi9?c$v&I{?5vQ9WWty(-$2` z-9H=XrLL}y^_u^iz=sLK00k-vG0)ibdous5$BM!GG>ff%-q|y#cGe{H(ceA8#?nex zwYkN5M_hupfrOpGL!}}U0>Se3DovxDn{N>`|cku6*o;my={UH^v(0EELzHNm- zD>cM`1iUbJaW5A98UGjB12&5zvE-=2GAnwzt>1=6o(9%7kzlZ^SOeEQR z41~-AcPmeumqmAs{BdB~vIdU59-7a(Q9n!nCT~`C*k4PS+~!N@J)O1br%2;r$aH?Q zDHU|25Orne@{!&7_|rL{n=n!iJTcTRg#4kOR0H&?+JMjQF%;HU(J$T|olV42=7@Y< z<*Vje7TvsZicMG$*FzNGp7uqc{n7wcr}yU525kBxec~nQSE5iM!KgZ*J9?hD6>lb6 zQbrZtRYurYu+J|qqc0<{uKEF)vKUOz*kZ2Y6v9K)9ZR5ubn$p|dH2z0?JR!XMCcb^t|6$O?72X$}qIK^X_cZjXVy_0rX>R))B9cdC#UssQ zc}ljQfoU2&NL4?tGI1_CmYMgKM$eE7Cc7KCD<_jo`-D=j6|LyyL+{iNsf&?nX^J{FD}0 zWoeFq#;F~E@7^}G zIbhzhh0cwz`{!KNjH5*ZP!{ILY+DxV(^lIB(XBWPa?oqRayRBi_u&$YeeYAf%?);- z+kI-Hc%k?}?K6s74GlLrkw9DwN-Am_`O_C|;O+B^ky7-uXFqAj<=?!XE9?}?Dha@m zw%ECt3aBTdDgiD0_SelXM6P(2x0&ZN_&zpikm07TkI%^C?BU1K8LiPbJFa7G>M~@D zxN1_}NiQky9i(coM&9s{Z(UmMG!iKU+8Ju8-emdKHt`+Oi=Mld%EYvWLDE6ex?Opa z_Fa>E-C;Q%90eBW+U&5WYkPCY}30`v`c8Ksa4UL z=O(JEn9u1vl+qxV&bTR)B>#R03%V0c80r^Cop zIh<`wx1Ykg{klQdjjb-xw3U0*^6jWop5XmsoE;9!)6k_|Wqxixqry%0`BN|Efuw<2 z>9lZNWUN(Ikp29}++s|sk5$e)sZKsAw`)#%kDox*CO@Alo0lVUWsp|If^ZIl%l?2U@Lp!^M!<+{ugB;Pz=fkO7|VhSsAjlWHReBb0{6zW}M6DBtmn5hy?WP--A3EYG0r2Ty=nh#Fn_XhNuMS!JP3mC%VJ|5IBJOR+;`Yyj(>n}j z;jo@(N3`5^&#u3(T;;^|3i;Zl9de9pv~|WX2cTueqM?7k{ppPFhuAEEJ2H33N|uR1miX#(K!Ow_4*J(4 zDJm2;hOG0O)=wqmoZ@on%ZlXqXf1VIKR#@}`cPfbwb#!$YoDsR=uRq@wh6Zgw^~;}Ro!zK4QPp-IG!{BTqADP(1wCv zvju2qX=aYG#Uy$bpIOz?{b4_nBajai>mYU7`1%RX{y^9^=l;2}b&n7IGf;Fb*ydnC zv_W)Um}Q}HG(K`4%xpxNlmazzmuO~Y`PbONQ*Fiu>b#FdMKcsS5`3X9K^gC=^PN^{ zT~%9=+^@D!vP&%qZFA}Mi5W^1Q>P`Md_k$>Y5c>||^Fajuf3o}_Y97SwgDMR`L_dhN2NC^dAUYVty@LpO z5Hk-_06?5Ph{6X+10e3+8TT>utucHg-E*wqmfuL>1Hcp^E1(1ATZ07vWU6_GBIsl#j zIn2r02x#wMXakD60NCn-nyM^;#-K_ofIHA0bpF4#{HM?W{13gs+U%dJ7}{9=a|<&6 z2EE{)5$ON^cK@w<0jTLoQb-h}7cl+$zv>15n!5%)^uJFp_+KX7LF@j1&@9_6!8rrf#R>~b;(B&>9Q4k^X17FdQ zg(}-_MNWHv<_u^45`yGFVa@Z++ipEwusT(rYCJ7l`|#sy;gWCW8tHIL9Z7%u+ZS4>_a`?fd$wOQIIb7E3*~&%^&A0IMYhcC97Gd}@clh{~g(8yQ-@ z^D;G&_C4Gt=SGLzdhLyM6_l*ZLr?``i$)fAl+-3bH%4d(w8{(2D^U4r2)8QwB_JKh zJ}ZosCeCA1Mcfo6$(5HfycHnMJDymWW3UV+eCkVZC^(d&p)$quka5mg6{(J^q_U)P zr4yhy=*q_-SCVz7k?(D|dbbm&7Vn7LOTBIGb4G8->k zDJFaOu$9L_V%Qj@ zEDX%kWs@it=9~vg!zqqIbdc&Rei&8CEf3<}566Pa`_^qE2wbHAprC7YGg=ScDj{>k z{2C(Xx0*s2vdD1tZeOc2QJ%UT_?5)hL*wR>wee(Q;+>>n-zFpyUR=0td z%14CoJ1Nf;M-IW$%Ih*M!9xc8be_G=0sHFVn4WvT)1>05E#wD0jdMXh-s}yZ{Q%jY zQZPwp6Fgy^c&};E6p2*AX2fRXm96CQiIia}eLtahA2}V^gJty@te#fZ3H?z8>47$9 z%J|dx?DADg)XE_;@rbh-K1AA?MRBSkNkYlv%h9?w#A>S=x%kszdMD9$07%ubwf=)j z1O(2)s;cHYx<{9Xko7e)h98#Xw7*xolQhT3_DxKHCRX7;1tO>e4RM2!ctw;y4Kv{E zxb+>NqwY<@_ItBuMtagpOk*`5bH2BbG}cv2UcW z>%&IIF(Qc{ao@*XHis3%o2i(}QODwu#^CZ>=vk=%th8jb@=3HCBr6vJ#*D%4N?v-w zc5!}~O(p)vjs-4iE!FF?7wsz{Ii$~J8wZVJrxdnC+X8yROzb?a&)Wkw=Y+dGVP2>Y zrYQLU$i%%KxSegfPL)86kfRd+0ga`uWe?93Z8+)VqVkuYU(mAPOdk#k|JrK8t9_QL1hc65YpCMpTU2QC)V`53Awis;#6svS%|NU2cMpv%gXO z%KA=znXS&2O|Z%>&9{am3Qhn@0^pm{`!>v2M@qhTD%(ZGEoh2J$BIj4+jFi#EsNDXJ;THc9uE_OrwZ zlf6kR%Y^wVIwXLWRF?siwi}WERr8yL`cOZmv_&+O{i&LI6^(LI9MxE?CE`|Xpp+iG z@LTr_b_S>60Rf+mqYQ4`?j9#)^e5`t-@*aK!S z6EFRv#?oRvHoa;b&G6=Phro$u{08>(&!rw0_l?B4@~V9eDB>8HQb z?NfTFZV|c5-z(jQtG%{do_L*mO@yDg;Eo&g(*2!CY0jV87W1EkI10|`Tb?nD6_lr+ zB#a+!7)`aBtfYSVL%;TpP^1o-84^iu`J?w zt&6NBV;kl^Z&SFFfiF(Az?Yhg)KjVF zUY4`&EGfrPx!NF3v5$gK4l}*iCb{8P@~%mguRF1%9pcx(q*l93-jz+;M%pRT&T!uQ z)eR=?dxQr@6+usqL3+eps9=3|tEa)3NYt5Uauv~04i7K-(XHyk^56w<4TtIJ8Y^39 z%ge2w+pkb3?^T5q;`cJ~M*S-${e>jt#w5np!=amP&gDiX^sqmFz6yrh>jh|g&y8r` zBl4t$kp;!qmEK6HXZKq3TMP}o%mh4d?EZ3Wy{h0-3>2z_h<_lc&aUs?ye>k-<#>wl zN}7wemEXkGBrb&oWc6L9!f&F=tQ_f(pkqo<|546`FFVFNSW9q|Zb!PLdb#yu>HT^7 zrU<6sY2WE)^t*nxeCXEy4be@8E+IqtO*q$zJGUG-Ilo@!>4qk>5MA!59HFqBx|E_s zEK>!?)e!j2aLGz~TxwKIHydx1xEzy^dNt-W`!sDY4K*#kO*pBJGHY1OQapoEJ=Kw@ zI&sUPp|JAgWmE#F-`5+~Su75iyB^Xhv&r@QxKObUV83)V);4gPjYSALZINR&7+Wo9 z6c?|foz3`-_eQ0`5L_XGbdj!p7vqZ6mkk8Sdm#{m+7lc?tQVFC!}riA`Sz_4~aXz@M%R|Kb>GWzs-oI zCKY~HpGp{|H_JCsb~TF+(JgnqkNOWaWT`U$9a@`#`{vau=SRm!E%VMYclVPG`I>D# z@NeIE^dO@4WkY!Hezs(8v&w2kX73Fn9r+(n5dRRh-9dlD6=C!=yoBA1F=-%_&V|vI z&HYIw2FGwO?oI3?D_< zGA#CJ!)I4AF`U~JeNc8Cyh#{nMg!BdF4h%0Pim&KvMawM;kuhLICZDfWWK^oiMZiN zDT28`VHM}>>49KoJ2dC~6gOzv()>jV+=hhe95vzk04JOcBlt{rkf9tNY9Br4*oWF* z2z#(b_92_XnnEdoKv`uTJ%f-|DBguiJhdQ#qppb1X-WYxjAY=}L~^-5`sc(!T-J{*%@9 z-_P=I1-0T*a!OMFL~$_*|KC6@+kfTc{o6q8zgGNT9?HxTWI_ZbZ~oJn{Qt75n1Pw& zpK`+gLbVJ`^vs~{;{OS26Ww6d6qnkZ8%R7x z3KGIX2#OS)CF&7^|NKc3_;cLQ2t|%xAe_CqQKh`Gk_T_n%*taDuHx^z%k7mP z=NtD51enEnWB1Pc=H+{l9CwjIkyI+9#ndKv$Roa*{nOPe*9x_YTv1H6f(qD8_-KmA z_3##aPxq#YUbO;6LXY~zWrz+*w`{Kt70K47#~tHys7E~^oG`z-=!&4aWG}@nr6Q$% z!Vv}YXnTSxB@+ews7Jy98tcKYFaVHlAbeNcEr2m(S2|ZwC$~dNT^G>W!Ht(#n&b8{#p@LmrWH`7g>>A5rNIYE%Fq)1`R^d zkPxu+zjr87Iw^V<2g+<*XY9AyM`LmydQg-^Hh^iMS|vQNEcyZl`Fe1&_*l;i&1_$| zn2g6M+;-kEiFBWU#uwvtsd)998I5j>E0~5l?x%&9I!)c{*P|BIV!F?E&XZ@L@t?bE zjuD^h56QM8_bDHD^eHd>Dx=LCw`s1Y1@vkiy_6$Bw(R)l1Iy$o8)kpEfJeUT&Wvz9 zW~Oe&C)s0VqD^me&?R&CErH}BZR?Hog~H}6*BJ8{Cf%h@Z1>H3V!5%q;`7x{ZkcLT zCCO1Yl`39H5`R~5#^k9Za!C|^FtNqkO78L&Y-ZoK-BJ7W1&zvT#houWx=h6~^1@Yh zc24o-1^ZO^*|(PHQ=^}Ti3=(p#mbHGk1vnPBXRwo7KuQ6NZ)k1NvVc`TgWY9D5GUFHm+%yYnr&t`_+sOSdGXy{ zxynSR9S-|nQ5#Wp9FG*pCisqART%kFF?ZYF@A0ZDJuD7x#<)U$y~a<~OodHSOnt{2 zm`I#JN3R_0S~QZKjN4m73Vsf`*tG)t*!Df<-|*Aes^{XMxvy-trp?a@GoV-nE zXS&<8eR^hbZBx@3L+i_idZoBisME|K%z*$=MmE|2Z!8w10l%kw1Mlp2Gp^-^RCt-+ zd|3ipU?vdW@yz}BM%t0B-Mn{tSFoR`&~p!8b!!UW@*jK=KXdnSMpg2J*DS5+&Mi9W zccaWrCj0xYS?s7tr>P%mU>Yf_c3Fv$}q3#_m&<(c7#7Q`N%oh$DLowo*z|3pq&>=EDns>zhp7!yl~d$gHbOrwFXZ`D$*EK^Y{H1^|= z-s>9cU4K{D$}ic77k6+Q=YZlW%r-&t)c_3bgU#)OwdZM>%dp)xmR`gUBf=%&i4+e* zGLffsl;Yk9`w(4c4d>A1N{e-tw$2ln%9b5^mbYLmv^Ux~3_$C_@=uXhUu}5|yC7L~ zGN!OApy=S}M;~v)7sJC2^*Gs1uxoJmt0J+vI4(J@c|>$xkdNKw*Tb-8qb9lwHelpn z_S#R#{7T_1OVFmHKu))(Dbo;E2Dvfc&Gx*$6oa!%KCzS&$W|XEkWq}>qpDZIx>x6k zE@wJ&<{qmpT_*%CL=< z5ZPRummJsHBQ`GTDc=8vLWuT68WN0XKu%lQqwZ;VsJU4x8&}pPl`yL|%s-@bdAdi8 zSEIZ>BaFz(3J8YX*4vS8sGm}`HSXAN6Rug%>(e{%`!NxCu-7>M(NQy}#|e}0g$32T zt_0)qR1+1gB<@CBIa>8KVFsE#!Al1Vn8vO`KAdrqZXOH{(XD=&F|K1tTYqvT$iC{S z+IJeG#^MmMgWc+3B{LgtCvaeYO&Ky37s|_^mBKUujy~I4dqXS-w6p4y4s75x^Z6l9 zBTf3(%S5J8HzxLgMXUtV{7T|&q|gZ^XV1Wr(ugDC0I;N|XHtYoMjwQbLu7w9zF3Yj z&QF#@340`|?`7yp=Czxk%Rs`8hXQCwUS1InIZP|rp z#x>I2EID29agrs?h@X)nrvzWPa=(sfvv(Y72~O$izMJ(_`c|WOj}E3Tdz3ZPhGS!} zba=Tx58uQhF(CEA$oRgSX~nDi;w;4EkOx#Ed;`EJxGc_iP04DFGC_;IBfZbWKIW7 zF8D5_c_c!*rw0jmj&q{22QJ2-7%d}|Je0(*3c~$U^c(v6VZXAe^d~|GNVl-X4e873 zq(Aw+JXN(bC$&i$N~(0DTExW8;BM%2qN;4(J=&et~Czf0NwEOTlY8deH{d*$r#*W zY2Rj*eueSsIArvznqZ=?QJY9W3i`>VLA4ML{?IxCC*ZYy2=v-hcFM+v=I=~aHz znw_u?Y4U_xDq9YTX;FA-Dk?E@Qa?IY?0|rHJW<<$x5k z_8cojA>_<_dCt>f?L514mCMa8w0O;jTlVW6-tUh%-47pgh^61&l1Qo)=zcD;zOG-j zBEO=ho_^uox_dpiy!cZZ!wAu-6jS!ZaP|QAW&?97T%GUaFw;Ks_kQ9pAfnQA5==lfaW97-fO?ZKoGa zRcUoGzDR=?lx-^wEQKaNMxI;TeNE^0C8XdaK7}8YZNI^5PBtTPO=@@E%^@_~sC>wDJNDU4uAA{H&wmT< zQQnd32snUgexXJ}9eQGjwUg>a{tjUfW*}i8Rh!gOCWPyrzf@vMrNNKHHww1{Sp@kT z=_}t=u9K>Tn1`+I3FHCHjOOC{=B)Vz~5E*(i7^@+;1lD_g5+xUxXg=4FDDW%~dXHI>$bicB0qaD6WSNk9_u)Py^Mc zjAz~{?PdKu8+LmnUK%g`mkScD4Ym#&Qy@ZG)oS_G6yoF`?a1Z5W*+NXzT^#i;xVL$ z8HeQHlWPCh?TRa!^6Ul7)erdz{8#rmE(tQ^d@+)^8%0<@Fqe&tar?40iqjeFG7HFa zD>OtT(!K$L_nY7)wlOXpQKlp7snx#CDZN)==n#Tv&`SnEN*jlHz8<(565L9h% zdfB!bw!d33xwpccWUyq(@J32KtcF_MY54E6nHlBxe1+}VpeVR*8Hp28_9s%Gs=ua* z8xawZJ#=p^Y-^cBh&QcbOB1>L!`rNFdcwZ3VsQ)|&=XTUv3OACAah7@Ak-E?`+cPD zCXggra{gw5n+X(Dp)z=kURL4Tmn{B^cyk_BWYh&x1j=f3H)?1j5SxD@_4FAZUJQ zLz+1Sd~chqWsm&nWNW8m?h5$DY&(5_>Mi6w#AV4+;ezC$=vDMZl;J(Tc`ufkDP!^Z zYVhxU_}2XAFG#bnOGE4Pmc~jTiz~F{)LrP>|HIllM_ICNZN6!v(nh77m9}lG(zdNi zv(mP0+qP|IrET@v`|Q)>JKbO3amT&=PpsfOBHp!DyfbF}o@b)?7gdQc3yaJHVC{G> zAG#f=%Yr#x(kb+XQp?3fPEGTm+KxW0Xs(fZ60T%-rQ><+o#mN?dL1RJ^Mx*NG~K1T?wqEQl72RLyOmpzJm z!?-9kX=su1sSOjPlV`{If1-QB!j!F1mJ1e5NtYcLY^AziT$rU631f zNdkJ@=hH0;+6T5!AWO^5Wy9DSQ$42faJ`M}7Git#KbQt(h++Lm^cmSl1od9n!rz$L zLx(%QDhMczqZRk*zT|QhtP@ zSe6mG$RBYjICo~_Wz%Jfb9Xf1)LV#~+D@MmpORBDHz>OB5Jd>Zse#526@qd&I*yWX zmB3?M^xdiuqp6AJxQ&UE!2)}<)Ks#;;JuWTcCItubdi9-lfp- zK`x0dp#GGS#*V~K;b&-OaRQ?a9Oj<&aAMZ?F~N;-H#V!6CJG+WN}T@@9VUvKB4fOm zB3U*O)#cc%50&7V_stBt9ep!V@o12tzCqytx+e9S#Ov2Ph6lMzdt-NNUT&SvHUy_H zM>R>ix(jyYTy z1mDVz&0z%5^L0-z&}8NcCKp+9m&T^%uBO(i(gHLm5X~$J)r`tm3~?33pwJDi7~+X( zB69@IWW}k*xb)>6=fTG@7>7GfhdUcUn=it!^SFX8^IYy-yO2bWSMa*==TW-1&uSZ# z=us~NAwy(?&Tz$kXICg`IqiZWHQrNolTg%*yv3MzS4B zN14s#o5$5{XXp7`jb@Qju*)+hoIdxDB~Hmyu&24Avj?Vy7kOn3s!cpY$V%8nJp6f* zBk{az^9dzH(6-x59S)WPa?n===*+VrOL|@5hOMKkwHgwX87T{9yRjRfZm5$mo+T)V z=1k>!ASaJH=di0qixD_7kO0j(QJRH zDpi9!%W7L9ojg4~9F^~&=Po|=Xg$~cqVxI?2CdTXr4#!BT79bprK*?&$_% z*M&26+--=keP&}9%J6&k3;hh`{nE+KGR-)ia>M_yWIqduCZOylzszcB+g)oTV+PMr z1OAEUdqg{*j!^?yfI+LhW zDm~sc&UNR&Ys5xrVae=3vI)F??+Mou3iCzYpHF}@=&ez&9u!Mqo=iA`DtJqnBn zw?IWgst=f{puq;RnB&LrKDF{Q*9G=$Wfeu$OrnN#V;iG&vB`uC*w8SU*J#qzqL5~| zL90NVc+BbGJoH!~T={jv0dgs2iz-)*V_K3yd~0phMclrr>DEAX7J3@fC=Oa1nbRtBsSiR%_W=Q4a5)B0r4Wt;J~XCV2GB25-af^EhCS=#ZnJ{LXkafgJZ2b``IOhUR2Q{Z_3hZO)!c=KIf-TQ=(a1pGS#ta z3pfE{a2R zys zwHX~{@=dC*sZuMf#?XwGUjpbxHotN^7mF>~hXA6Oa(8^-%G=ea^{yVY3sMi+H_xuc z8{F&HTmRsuS(5|fJp?(K`0Da^-9UV$Y%}swEgXqM$%>%jYz2;0EMUry1!2B33Iay+ z^{|+85@^iEMbxgnn1?aW#&@qQp*MT&qt+lNq2o*XaFKJrv z#G2I92_=KzS}GYZu05)8rH2Ivp@mv>e5@Z7ZJ#R#qXoHK`w;qus)Z{Dq*O?#cj1K= zRh(T=8NOpD#hP3M$dqRnE`SjDMW}6ns&?d zEBX(-m54&k`OG;~Ww*kx zOviO{&2pfCBS?H$%%H-7WL8Q?-W`SV-K2WU~D^B%#xFue?$3VY*M8d<%kI2;nrSYDy*(#e@nC#p;MmX$F$y><+Qn*rq3KVqv1{#+6PA6Vg6bAfUu6u;@Cg+0E{Nnocy(x!ILHgyR zvU-))GAogv2%0owqhlEUW-%p)Utg@F1;T$Aj$|1^EOAz!2EXoBl0&9#+dfRV(h7yo zpzgz`sqRl*m}#*YfIJ8Yr>U4f?k&AT8Jl*0&$RctDqT^(h0O=?Ky<9nXe?=jaq0F~ z9l1zY!-bL7Cp6?=3g>ofVpQmp8GeSB!0A*_XyAi1?NueNB!yOnX@afKEsd#y6hKlu z)1^VObwTUG_`w2e!R|0~6~OnD8rnTJ^9ij*5`+*oLQE+OP#egQMs2`fL4rN81v33GBmye8%Q~asUdyo;JY>CDilPZC|z{33_H+6ot9Ks0`0Q13nxdQ7W-#LX{k&5(Zb=6F4KuG=y~FvTU0N7ijNeT`S|Xga z7g;wtpEV9u1RVwoJ6A_Iyk_pT!^YLmkONRv)!17MC`QEn;bmWn}n)!xOd z;uUfSokv&ZIpoR|>BBGaP2~ng)kVvsECp-d=i2-m#}T{74>n_ZTT+(Ot}pyo*;xQ- zlkDJw_;xYU8JS-lnOFMo$Jkc~^3V162AJ8IaWmGRp&%}K$iD5r3OGu)=dSK-N2aKE zVL;|Weg!S)?mB+hQThS{;Ufe~p$nc0KI7hE3lfw(QoBg974L6Rpr%tg@jA_r2O*yO zpzwZjGjmA766G-}YNT$Q>nWnU?fF@M(HlrsB46dk{)Ajy=kXM}G7MRm6#)qr)f=Ij zWR*C*ZBJ}TPczUK*7j4-EMvfIK+k+Jf@Keh{<_s|X%(i;I5?tYj5Fz((=E*`khFJr zM+gK2YIv`gF5MSzOQcQaSg;-_sd8zS3=NDslo^Uzn zk&zG9>DUn6ghzW#gSEWLT|ywM$cNRF_G|3}XVgm2KgQQ-ADy|x50sHP&?&Omi)7wG zjk#4QYUO8XA)@({qlJBnxe7KAs(Q038fP>tJjFIy{lE~-oVN1;Vf*juCb&vFkgA}} zje7x?pp*KW8v={IdHr)MODn1#NZdenFi+((vnf?}>$wsSw=*d89u{7rd7-o>$0VS1 z;uKQmhdR7BhMa(B2aKL&W1*-!1W(965Ro97(h^pq2p4BY-R&JfGRs~io@DZhqnwv* zQJtl0Vr1EAnj{OOPRK%C0ve(T7;A8((sD*R;yehT=4Wabu@hRJ@JE&Ql+xn`w1FHb+vPN-p91WMClS&YemjMK?7~a`9a;Y(X()uk109D?{W_ zGypHb^Q7(})gxGboQiv|OPd9Si-ZF|u>p1!U(G#uUfyp$ELdCC0vkS)V7ch2V6iB@ z6RfDfpa|bp8i6M?%-U&$aL3W_30+5bwPR#bWx1%Dqn7ow-?x)jI(t9;nLw6xOlhhr zNXeBaf|L>j;xftSq~$l)B|?;zy_R{W{>Q*Yf1vk0rbq-y5<$PIn0H%**YwXW&>6tHioKnTi|u_ev5(W{vMd>o%-KojnK%Qi~hX+b-l;}STe3mS@zGf^~Y(^aD z00}M26CYU7FI(fMZD6`syKG`@lGk}++1~vBvTMz@!8=d zf{>f4Z*rLD6H97k)B=ggvb#m`tro36E0VILl}O9P`BWKd7djfWYPCqFC&r|w6T_7l z^Ji@3iadw99i7qvxg2qR3!qR4=+}j^1(;YoX8)hsg{>1-RdXyrI3=--&=-4i8-l)? zw4CMEU6YElHtlZsT_<6@SlbjVrmEMc9gLM4WMQf$GK)hN0;H68Y%553OC7u z7bb&EwBswgO7rvY9FARE0z^;QyXCVN;zg^7EyByBXxotEhstWp+Im!)O9_k+p~kQ} zPD_v-92I%1-N~{|H<7c@7NE~@HKon#E<@MEg4#{yO`^m+mEwj# zy4#v<1&r4SP!Q!SW_t{ZIUd$i>&h*v3Ugz7@=_KP$tx~^sg}HU-}6M+o?&Kk9tm5% zAn-19+oB3V7tiJu^&QPC)9Y>~=4(gw%>hlxo_(AgoZQc%hzXF6ffvtp^ zg$y9P7F~EdYqnXbV~6O3A`*}m(E8rJ)6%fJA@a9o)g#aL0%uM{1%d~p|u0Q zd~ikEe|uL&(mXoUtw^yLG{(?8zH2o}zc;M7a<|HAYSqY1k_&Xpmn5H%1iu>;rh<95 z3&{EZIuW#B*Ai{t+r1yW^%TK-PiiZLes+y;WD4mq1c$A-DU*;%A)%CQOo zapPku%qbDu@$=RO%uCi2JcU2ail&(M8s(ERq}2B_@ayz z@T&;e6GOubYY%U2k+f;~$aa;g120>>Mu~1yNLzre=)r$n_P{Ka)LADYcp7=VR80%128U(_yT^J&bAD zf5%H6$*f`t@C59$>->_(5*rvX0Aujqzvjk>plJN*$?-6(SQRz2^NtCof`{TQRB4$W?-NvS{0$IR8Em8gk zMfvpAN53TtxJjjkA;oNx`6T%!_tJ@;-px$BqgHRG3GsgIF(=`S~eE0aXdg> zc|3{)>CEX4o`Wr;w~qtktFY>lDV&DtuyJGUi_FRkUFKdac#f>DKWwM*)#c{)^}Fr1$G*qp}KRq>g1A+}$pQRPePLbBesoT7V{rR@Y(qo-PTw%aICH4 zFY}`FNdW(g=hbh9p&Kh}1|Cf}XDQ{=IL5IDN2NpbMg5d^kJW}gYL6(|c}ENAj5-yc zqD4c~c=UH0H+eFqsK%JWg{y^eYwxBAtcD1AO*2Lmix}y!8)Dxz(X50A8+$U4M&)TKSzCz zmk3=sISKmIPOhxhJR^uB(S^tQd&LNQu(zB$0$lMo!0=vOq?D}1bdOnv8(G;a5v#Cz z(`z96Vgn&W1r1ZoyQ#F0s3nd_i%sl-G@WPS6Eo8&jiA6!9HQc+3M?5X1>-y7GR_bd zGqEo5PFi)LDM?0jM>*5acNXg=kOrYeAbY5Awfj`dKw##u$md~#NWPCQ9h?DZnBs*J znV?5TF&_LV+RcuOKU3~BvbD6n@ReP1w)h!WMyAP6T`DfRwIrjaq(;b5LPC#t@vnkk}d zK|?pZZobiZqmKl=8-~>PgAo^nMWQf_?3b~skZNZ~Gzskf{46%t(T|L>KUSw^W*jQ6 zMGbvRN{)EVajM>)UXuf?x2)0;fMA@Wo}=#j$ayi0l5lvu;wok8s4qOxLl}BgqIWn? z8r1gfO<)9%nksEdds^c#TOiVTJCk#Nhfo)wXwHjQcTbJ&|k6B7poN~&1oQz>x<>-tH!we4Z z!doe0*jduEX{)3ahs~qKvW3&Uc#*+0#tfS1biGP84Lu8T$GM?Jdwyg+iTGA-d^U}= z5@|wq&ZAUT98p~r8)|x=r1FI;w@n@Q4D&UvvPy5&C zkIfrWaUQ`9vU>YT4v`XR&!d7!nMlN;p|A+Q(mpSVaz|;%eh0qjiueaUx;*V;N-lVG z4!y&zebI*rR!qr0*~h_JB_xAQ`!S zj|b?;0ZcpqbO&JY0I@oNfd_E&0InVYzypYR01prFll{j-R_$+BSb(-%`fp`AKs63% z=pRM--%|5`X~Y2l{$H~6f5hT{$;bc3?EkBD{J;9u{v~$*TcQqV?C@SPPQ_31Wcv=?%}_SRR7O2 z2b`Tg;JYw(GqlnN^tq{nF#v^k0JNrW4fr-3^=$zCul}DZdkw(uR#xVAj^>X4|Ahu@ ze-+&RFHHXb&6?jba^i9-l7G4FGX6gb4gRiz4!Gq1dqRW%G+g-qpq^)7WMToF(f`yL zFtV`!uQCIcSZjF{Q&dq`hE;96M2pD0!4l9=bjuHZ*vdw1W_2ah7sUc|@i8(AKQm-r zMM985)ms~y6}@+uC@hlv!UD6OFQQ?BEJC?!Ae=LPdF%)-W*5_gB!cDRTU>)ob4w_BkF1tT(L@Hjs*CJk_aEww&zBOFhOfpmsj4;&APrs{(*gZ71YGTr0VO+w=fW?TEfJf3mQyBcl0Q50R{Za)aB# zjASJCK&M{u9(}N+FbxUSkDMszhMF!kr~PI>h#0NhZ;IE6Z%^Segb~%f=_snfn&$&s zzh;^^6hJt^at@J;ZX<4~cueymZz;7(u1@$3!clF>)7iTLFmdUaISC>8X#q99frLX` zkk8K^+C^m+efF(!R8y*`p-K@)$Q`1uXgzGE#G>46@NGG;86_Aw*kP!b`iFt{+`Z== zzw2`UkQkrzVh>wnLUAV4W7MSdwSOzMpvFV^AU52Q*FM9w*XV$9-%M9jXQpSB4P>ld zqm|Ts)gR12)4W5VARy*y=gEb% zyBlcXs&+k$iWLpZx{^a3!K>49@`x2pA z0R?pmBhm z->5jRB=Q^Zov`>+vPBalCsCh3L&+ zMI&a!0CP}J{^`#zJnc_+US<&>XVQXJAldsX4?Qz3RooS4J?3$>YuS$1; z5a`NpV9)4K-}tmxF&2c(HdR;(2-)9kQ})G1l8)O+zTg|BLH9QhXmLJbj_hA_gH6-D zQ@{EE@UNIA%z4nG1J}G|i>0LttE)B^*| zlhWzw%Bz^w)b7e4R*kvO>QfhE>bf4+907b637NYexEyKOhjr}{%cknuua+B4iI*T*cjRxncMtjV=t)hX#DR*K#ZbqsAy}gZ}aap|GFmw z2Hw9%FqZ!`S^w9~oA7_JJ+c39FO%gzO=SK#l#%6c50(Gp`0<~*vqFt=oAVZ=%{OZ1 zlt>;w=a+8}K-ds%nsY>!S9@0eMj&7*G!QR72N_Bvq|VKLSzy7{q~SD6cMJPEyt=wZCyZpoKqc|{w_uIJ;p_xui?LRfiOp5_Y}b=`hF*jw?MGIG7y7nRG{?QpDT*a?=r zIW3Nau6%fONHimt1locv4l0ETE24o<*|G7d^5Wp~WkFi5M{@o2GICFeF#ORhC~rqA zN^bZK&UNj>@L|=iE3>H7o;jTdJ^z6x;t0j%Llk~QYo{UvEe>b%pd;Uy+b#2EYo2UM zNa}K68Xw~}c1_2s8*$?*fB3sM7}Mqs;}h_P=@v=?>yGp>-Xr-5emglNQ~Z(ty4#!o zRhY+ICjNl+K3X$Yb^yVRYp+c$n1v(R?x-?(vj3?$?tar#IcWY*EpbrnOHg$L0Yy>y zOc=g^E6SBEATq&Fb-7&7FoY1rB1FGC7JQ@ps~e%jKZ>qX6|1UYL*pBLXSqXur}M-7 z@R1D=e65audbht76fajdS2yeadiAg2^J(4rx;KGvofft@4Ox1q#l&L>gEFG&{f%0o zXDG6AEz$Ld&*0ugpalPL?_g+8=~0pXj~C7`>K!;1M4j%e)YSAVdBeIao*M?Kx){TO zkvV6-&hBnob6Us+mwHr`z=uh35M&6}PwgGbYuZ=LEwhdbqgCbiZ(QTV-K4>6G?LS8 z^{s*=+2>}TrxSIya<&bmoI~K<@fC2qmw4w$&19z_t-e;z7)=hVko7==Pnp)gK7a#x z?4TxTnv$!;h_0F0L~wKD(<|zq2bGeF<-4xc)o(DiOOBBX!qJ96NE&feXYV!I4|VFi ze<1GUO=Ca52mPrLv>3~92L(r2fzxaagvC{U&W!xBtwcKpnk*y0bh@8|r~+20C3tlS zkF@0dk_AN{Bq}1#aOJZ2SxodB6wirF@k-S4_}jNlGovnw56~&N8E!OKkvSr;tBSEb z2pAZmOv2=+mlY4u@9I90w%K2KK+2fs4ML{kH1L;~lhRPeoe_bgK^`o+>ISA8A;TLu z;92SLQHFU!X+#nA-bN%GSfikW(dyOtruaZ6id+mC~umD@a4)NSfd#n9wBQmQ+}c568gsG88K*s?k)YAfON>^Bf}n zc$@;eKZR+214`O#$Tgci|LJV9Yy{Tkc%sF@faxg$?ZXAJLl+n=N}ss+g$?C4B*WrH zduhs~GR4s5CFQ_Ip-nvkvxw;UDj@YqO!AU{pz8MIzgfCa2&aIS-6y9d?u{uN;QGy| zDA$|23o0kU6H%qI=VZ1LpJA1S1BQy|r%fP{yZdOB@PH6FkTZWy(206VQ_{S&S~JI5 zxTB-XraPFG$R9@pjNjs5Kv{Kp^oPujsN1;XtYT|Oz=RkQPJklHH;tiEs8GKU>C$m&tE&_Fx2Jta=i!sn@pG@@^2#F3#JpeeL}j z3v5|2FYH*Blc$rv8LU6$hT(m>{IUXJ6*7;sM7is|`f_`D5McuQ(jNP>w}9ZC!B5;+ z`s9sA*pa0iK*?;Tu!24%Z;@XLAF?K{w}2*1nFc6!fkSJ9ZN!6kweyzQ6yDQ?GZPb0 z8>Xjs-nZaZqGvZh!%gpi>9tPGkyq~jM?hmvlT%X<}L5v+zy zl*`$IY!@YK`&AEe`;RHD8s7a#)C!miukMhA*ZgotI9%JlSC|7sHl7`P#q)%!(DW7& zVpP@f)6FQ?nC40p`7zB;vrgoqnW+2?h+J`J=@tv{dK$dzN2^)nV0;92C(*EnHe!Q7 zO}DY#U%UyRI3{Gq=fzbX5&k1o?%0ji~smES9=lLu960KPs=RKIrgU~dgBP3pw zRb5;u<@)Zw750;s7v{uShGlOs+a@L}URBvKwRsxxYEGw^PclaVxf+4CWTRKOrdE=a z3VFP-MjMkmPQ&TFqiQOTxbq5j?<9!iCs7aos@J?5QA+AlH+cqvlxwRcP~?&=osg!x z?z}t7ZCy~nHzGQGTPnUdvSefRnu%S;n#d(ecuUSmFBdzBY)5D^?8;%=%`ZXz& zs^ZTfHZO>HWIHx%aeuOE zPgAQg_B(I8@}Ov^9s-4|0z8Mw--`b7HOL>my+}YBKW+n zT%Tl;qAD9yH_JV3&EeJ!kZ{>L^~Sk_o4Re8i*>3kQNXw4^ir01k%o|=Q6Jsn>gM@$ z$;Kr_mNS9~`;e|hWKDV@Q>yqm3p7^h)-`!M-ho?AHwE;PR!UdRCFBKx%FgySv4^VlNzxS!Y4SU-?eUobHV}1HXhFZt8f(g~dMqzCzDX#Jqn&kBnP9qk zM(n5FKxe*Mc4>7sc2-!;kDRamSYL()ZEHvBzK-F2pa&D9_Cv;zVQfLnLKf0d5bE(s z-&qo6a(dz`PWA*LdC>FfRRP^oo<#DHuOUUG(xa>11eN)xjC3ZNSn6CN*WwMG=nEyVk{7*}Y|2`sB`0o$>PY1w%N2LFY+kv1m%nw3SKnh3M@vn&kA;S;AhX2Yq+IhX0r0@y#AOgY+-AG4T05+z>%x-G=AyQFK`e6`mU$kT^VFshQ?UWsZ#4A@4m8K9*3?z2 zqiKS6(}LNbKf{>jEa0x0yN}1WHMJiW)pR?-lV~*Rj7H-~rT#TD9%oWF8nz0mv?B-< z+7DEQN1@B)y9-`NOpzP`2z+efv-n@^TZUfNpAfEo>9P9$=`N+hSG@{SWu}`2^)ptp z(2NGUG}$S2mw7-Z8sDb3wdJ$n6SqOyS)yH%4p`aj(0(g2*%aqp4a1}OntJ^)^|g+U zdnd+O=i_zNY02xq4o2{v9MZkIr`_3fyOlU*i|}~)bxFGi_I`Rp5W79vt^PJxt!8oc z{w%s+9{B`PM8*ZcZMnFxj#^?T)?bAWbWuc`j*L627 z1Kz^a(k_~zwW*oEpNNlpM{Y=u2%guW01kucL!BL+`@RtKV_|bgQ?i@( z!?f@~ghX8M1>(V)q8jWt>4i^+>(;h%tJS!px3#{>r{Co+>w1lLs_B{PQ3B{3WlpYR zJ-Zv@`48}l&-=^K5&WYro{!fP&)q{O+Ujs`^cK+ifXrn#hL73D=A&5AnOqCODle4( zqMRC^UjRU=iuQRp2J^xeoUT^=sdPH#qpbnm<@z*6pfEKymY8wiGuo3VhSQB)p{4O5 z{zYA*_;Tgb@&WM`ZK+npt&Z~X>oA+wbNSt}rVd?8<7G1d5^=l3JLK*$aiJYCs`o0J zJEpH!_hRIdM7iv7JChUPF@c)kGP6YXLQ{+EQmr(?b;VP^N275o04rp7lFbjs3N}_O zDg+{N%;DA(q={k^4J2`2xe#Upjw2%*@`LL2*PbXusA{}E`!h9CilBXQuJ7p$<-*lY z22RK;OCn4{c7~S)0aZ)PGUVmkv(K;n-R+LjSKs>E7p{f%?yvsF7Y#4?=YYF4G|HyB z+wX6WW42FU#t%MQpK?BlXZIh>Zr-{=$9E5IGP+t>KKpDsSTx@7VNN-J|IojZuVnQh zfk^Fi{7-~OS-}<1iwJ*V0$s~^vtar)6@hR|?7&9rA60`At9p@MZph zVj=i_{ox_q7&S_UlVYwU(p;77%XqlKCvT!x+zpc(vEKhP!v@>_?e>@H?#2%BrpZ_t z1EjZT=hzPfi%u`%b%*xTsXz(xu%aGINwi>6DRhyG$)?juk9JB>s=P((xXGc_R0i5V zaHwG>-NuYb>5Y05+fXi3)9Zz~78HdzouZXz=1CBd7I~gqv56Tc9?jZ_WZ0dKzGH?D zOi41#uf?CTSAbE*|KM9V-uP)0n7AAEWGxUzPSrgx;yRf`5QHfv)-Un6i79;iTZ$_v ziJZO6b1HoCgpxg`^t~frGE7TFw~1qzg@ObVzc-g}``6iVV<=g{I-W4J9ru!&lPa7S z1y>7<5+?Pv^yeIMxhiJ`g6?WtnGs1+VOlit({;1*JUCIpdHwS9q?K!ZgHEi2Ci#<+ z#IVCP$9IobTPjALIa`RYOtaEc_skjeqU19JQgLUl0^mbCg6YNA?m(2FcB)iU`HF{m zAQ@;tf0p&~JRyK8P8ND{@U9|c->l`&vQ0vcYc9n^SaR@wEg2S60&gs$dsMOnJo3$U`ss&6EHJKkA9P>ENSMimT+|y~`e7WG2h60$wsux+=h1~`h)ZlP zh-1`brU*~8;s>K}iD`})HO);G1=gE|O?jY0kt#Z(C_}rX-)PXAjx=YQ^>(Y@`P-X;8q{l9Of<<7e=x}BZB;CJb> zJ{^wXH@W=3fOIf;J)Q`*7(Z_+*{ZMqG=FX4t=-_LKYHwd(W%ZNL3SJ|<+s_-B~0t> z#*y+ddO!C8>#P(Y=)3VeUtd|@-y~Cr+K#|O9Hg{DjO!rsemp!hf4$rx^1khzgs}O% ztiL_!WD^I_<6a|{ILYt&1N%sIAxb9^wmlrJ)~K8}hpN(Qn7K?(pDv1atRtuie4KY| zWG=J)H0`u$W_>D{u+T+oBHz?&UTbRCT#Tt^Db0MqUQ9B%Yyj@m$ufD<-am1FLUjo& zLN9m+kE|w^94p`0DVOhxTp4iEk^WA?Td*=&%ul%1%aR^?``Z_{Rv-iphKF)Ty-P+5 zoe28QFj0_}R~bqo1D0AC#xEQ;lU0^KJBM7(d@o6oSeQLcyN12ehWBg&116Up#~5YQ ziKP8VP4#xwff+4K7P)rAg!5v;l)FnSA3wr0m;8_hf6}^`@lMdE8&mF>X_Ws*wyT%` zH}=Ev3bWH%Aa(1QWCpj2>aMEdtOKuUHTK zhBxDs7Bd7K?YT-pcfa|Q4e$DI3QJbCArhIxxI~N^%SpTwctwY8->4ngy*-dt2E#$4 zMNREi;~8b9< z51HQ3tIp+{$}yz_c6v9_p$pCG3!Gr$8}6wGVxk>H7ctI20qa|`*j!kZFH|W0o9GXZ zu=U2`=8SkDW7JRgkSzkc1l-tQ>I5701Vxk}>e$SH(xcdg(QUPFUc$UB-AMGfCCzT9 zH7aCn!^MbBZE`<&T(~R(5V{wMrFMix72c35$aO9KgPX?cqo z4dB@m5{6B0vP14a8)JUMwKoJ~IxVaT1)5tevMFIlqtCbCDS4KBJ3Q6WQDWL*y($#c ziHx@ksz+yoHPB9`n^Sq~6Ij|!=lC$4*${-&Rfo~ra{@a$#s|C$!A*e|Xh%dz?xv){ znl|2Q0tIgZtv|MeqnJM8G0|fNMPWZ@+WB_8k0eba%HD!xT>@HsB2R+G{AO^>+l&}i zZ)3`AegnQ2RyE4EUcV5}<(8E|0kJn) zx49RWhQh+EBNY^IqPKx|Q%nS`hKj8T)%X~ew3$ROi-;CSuINxLrVvt&DWRZyskeS> zSmuKPJYpIsL2;OmTH4Wz0UNb&Fu6ZEnuh<9QWRrZG(+YrRuWfzsV{d3BFP1DN*^?| z#{$Q3r1bO+D`?}|b_xhOlC~-9f$Q_`*R(lb0Nm8;PQ^U_y@%nDc{$M5!B6u(|~{)@#mYTXbYcvC?X(7Rs`~V!xXN!cNlq_NzQ-YIA}# zt`{MstC>HX&$hI;8 z$*m-xVxoTYrYqW3u6Ab>qmxkc{wV&CszRskKc}#=7 z1x+Z41)g;Ijx^S${k@zsPBAG~Uiv^ko=%N2DdjmdtN63 zNb8$e=I%nwG2)_OR|Vy%s~FyqVgzC(E%P*7I@wD=*K5pivDqTTt8gG+)bAHT6~Ekj zF)t6H7jnudn+ij@dPS|q`Y`;gj0~thp$S~^SkV$e;vNLXHuEkDh-zh6S~uo9bZT{; z+UEG%@nOCPhFOBY@YJ;TtuO3z8bvT8$@^c<`mGq9v!X@gZ_L=UB8mb|fEw23Z_Iw+ zBLE)ZjktmOXYH7=BlUqXdne%FhWC-IczK7%Hzj?zYkSdwq8P9uP4Z9N*g(_uo?9$Xtoz(CONT6YE9tz2*t@Scpa>cT;QsK#} zarB6arDMZ-BVBq*o2khZ=k^;`ooH;-urPkvr@g5Fjr35c1>a7>Dx`Yqy~+cn^sKp4 zUqOxO8f~4P#p;G#o|tzgbb4=CRcxz~nbu87X(3Y--g5Y$6?V z;~(z)C^RzSfcWe^_Mt)e<`<8AbF7^M{f_8a4SRaBZ6Sz}^syR=|wF>u10MiDal&kppRSST4*deU1i z?J1+cIZHH8Bt;_!2^#jwVM$uo5enJ0hJh%6*N&_({Ey$Og|+IBc$}$*kc8jcS*hzZ z?`<{=i>w-u(=-n@!|0FCRD0Bll7nX)oA|KiHLqPJB9@tdw~lCL^4v((6DYZ}A}gY@_7 zbl@MnhpziDWzr_#^OZX{GNXYtnaW^l4#rKI67cnA_K7VdS0$pgRc0!hNAFcVNCrFx zcD2U4pv31}O8lAfLC9OrH<*?zD{F&&THxW{%^`(gM3buivj}88wnM-6nH2+9ewqWe z;R>sTQ@MmZ4j+!K5n=8l0}jhaF|9~9nwISFGr^l2I{b$ECasyclVapqqqvcQmrwD9 z%SJYU(E!a}<3QuAdJH{gu=I!j_irXjnKOh|u5KVN$O`ld#AX+TSoZ>uqRCPst}d-w z339nWKVIwq2XE&XBwN>Q>9TRkwr$(CZQHg_*|u%lwr!oVU8n2)?subaML4+=p{dk|v$ z5o)kSoeo+g<^_v}I5<|N5v+v~7Edjftcc_!iTl z$A|Znm~xB}QB>+nDqr*1!0+0>q>79(Va+WR=--9AWD8zY6?Sw<8k0pxJc`AK-_ZMc zRSV#Md~sBMbj&ve$-*iU434GDLY462NN^%KXHkIhIbnChp4&-oN_$Kz%dr zK!bSw=HP|!&pM?+y#dibb*1pnddVNbfzt7@9}k{Pc;BTK)9EaNiu{0H7V`9h)1~bG zK4>_l0O7mASrYuJD@Kf9bpQSW@Rc(^H2?t%coXP5!guj(FX)Hl3?EpA9icnqBZ~4? zHcBc|u?E^XlU0nCdc6Ih6s0G1;I+n&Mp8B!g=yk2k7JZ&cT?6LCBnCdMEt1e$cmF7 z21_0-*Qg#B!N##C2)2?lbh5RO7&0WyAkz|%w3w?125D+Wx6lZGYA5<`U>nNNmX^1o zzo#j0TFfY@B!#~k#CGV^iPdmswm4My!>Hu=M$_Z&YU&gz=z)gIWJI0vC_3ISN#d3> z(yWutWR<8XXg+5bJ@V-rv}DxMX+mm#kz8Xzkva+Dv@25&_S194v4EeTQkW&loRFl~ zxKe5O64l+Nq|oA3Vb%m?v8heJL2ik)!_&2wj6khe= zCy{jn*#;2#JLFCqZSqcB;aL#N9dN)_Lt{Ue;_sxgBh-ywwK4KAKOQRi5qN-TFuUn5 zgSSo&a5GZ$fyg;mdch+@6ez*L#w!!8w;af)WI={II-_@)2XJ5DWtf>M9`U z+`NvPi{$N^q-$fxC>5Z&uok`}GqgC+Ki_^&z(z=+UFU zj1}0ZN_2Yi7Ef(5vy|v;s8H?c_ACSyQWu8bCv@Yy&5U@=m7nOG9fOmSk?Ni z1QXj*O=P4wk6cd&^IKMBz0{r0?nW3Ix$>XKE-hmXz^Z9POW{ps9%|6;v`zIDJEe6{ z`*tVeuLU)dRD00R2+EnmU$td?8nEr4s`p(vVowTB#qlxi(yp$4pEgO?hg7l0jTe1o zOTs;WoD0wsROjDL)6#hEaj!4$C{?bqH}N&gBrw6=VN~qNgZOw;o1tq8)kF?GDiw!! zsQ>n}l)YG&taM5NURKQa+$bZFTo#ltxNf#$kuN`*JeI9lrZJhARxMVYUfx(XtWLe@ zi}`maMlSSkaLBvahZ=yQ%&n7?&C88TE{dIItv$;N>}oicE~wF~qR)LSuKEiT-uecg zz26%F(q}81pPA?Fby#Vy@5c!6SMqM{_oo($r>xpDNaKkRWR3^32NJn{rLv{AWNnt4 zyW@&>4N|2Uq+-W@y-HH7Zb$t~sW8WJ&j{FLp=*P7Me3h|fzwTXqTR9FbLJ4%nRXW% zjc`Eeb=XqSGYplOAtnP~%>%uGpu{aHY={O{-Y;D7@f)(3;^B3P2)erO+FVlWh*XWp z3G;=SBz>L;&663~0hX*K9SOq&_LmnYiJPcA%=rch#AK>{Catzp(6HNPwj+fGMONs2 zxy|3CCiJdS6{I$ zY3z*GI2aH=o$hO9_-~Irbr<#)L}JEy7*JcwUfz-tXURga>F5BeyEun&lOlmb0h=i0 zzY!(e?|P;mKnE+CFr&jl=AF551NR}KLXGHi`Wo)cwO3%LjV2+Ez?$<-n6Y4?nGD&p zQAeuPZIfsN=bN@MqoG1R^8l>+hsg(-&oZbI<2_(RsdI8*B_9mL=4KA&uqR0gb&m5d z^mXdZeC)B}Uev0w5kj_7F!@dx$w&r1Em9T2k2BYdg&I66PHOE6R<4-$bk%I~!pJF4 z_qxI)>tb+jpjIL6ecOZz$nKMngLH|%acS#1$fH0;WA z#oMj(ht_^Y7DIuWoh%_bJ?7;Pw|8}8$v=wc$* z{FN~PN|Dy0&!|m6dUd8yG5CXW(nZ&oaT!Ir_ghG=ZV)&wj!Ij4>A<0p17QgG&>18W zlrU7A+0YHmf4d=tnJeh2O(vD`l@QmZBeb(iotGcgXkQ;>OkHT?CX@0kk0h_avWA&_ z#Aj|wsxOs7`OGF>u|1l{L)w8N`%EH^T{`L+%uq1Twvr`M46RenM%UDo(cs$szs58R-f2ApbsdMe3$sH1=% z*s;hBW|G}{0r1W6@ki(bBkZx^6|KPAZ(Nw#OFrHojHz>xsqH7MYAZ&Z>;M$j)jPg* zprhgiv~tCXoDK*J#mW8vY-9gT3C>fRj+M!Po%uF;pFC0k0tO}w-$XGcph+LfLulEv zDgk;46VAvKV9LOw(yil0?GwqDcZUN!3Tz2%-*s~)tZ(fgjwGWJ zpHf9Aj_J}2oWg+3=q0WUF(Q54L_C+p;P!P~cC&j|@D@%>IZY^2p$}qlHC*PrKB05$<1LE@UfT~SP2tVQicm__O$hb zorXS`UmuK8%YrrQRF)jw=f;Dm{5aIqz#IJLR0*qkVGsj0NJ>UE;4C#5*0dE3l98Dv zu>GaSVB|OS3{$)~p&|$|**)E|SYbB{B6s|c!)9AG1TX$vtjyRM$ZGRjYnh_}5ghW%`~g8GZ&(4l+v0^+!!+`eZIzC*Bnje03+ z#Ge3bW#gcJurAXE#3)59CT<%cYd@u{VpuY1ge#E{Dwrb+8nvYl;t56qdbq#4|wvCF$0ZHjSft`gccEnN9@BM>OVo zRqiX*FwmHa)U;^3=<&Ly8fO%;K=Cpq1=b-Y)ma}JXwgD8isqa5VHX({nv-#vvdMP0 zXVD^HsC_Bo6@CU5tGHDX9u3CnQ!?TM9oeB5Fba43ze{1`lhDWcB1jL;%h<7bT3`eVN~ zw7?cr?gr0C=9J0cJtQ)9+PZed17}6@ncr{f1Ui;H_9|NKnl(v4{p!`47sLvUnBcBjo01|rG>Zu zHOavCUtr&V>oo8g+3^1>lKX#vBk+HiVJGJwv5n2Y;ER9Z!)*T}11$efn58p5^FPFd z;t$rKXyWvff@x&pgwM_Wqbzc?Gg2~f{wKXcUihEP4-t3%j2+|2#pI0iWd` zc3SagOaIyxos5aGg@K@*`_GzxqBU4JnDN<}8U7{V5&Bv6b26u&hyK}wBL2TnW<`9q zfB2D~qyM;J`v(b8#Q*ofKkr}hKLkMLE;fevZ2!5@|6r))4a|OIV*h*`|A|Nc>&5=N z)aT#q2NNUPKRJ>Am(WJChD_|?7;N`Tt-U|>LN~uvr6lD#7$(k|(Ro~>-DW$;I0!`C zB;jAY$rtgJu&V3qDMJQatqRJ7*x1;ri?8!k7TkmV?=OmxeQ#d8z)v$gxl@8DBTnoG z3-SFlxR<}YA%nfSzCO^S^r0j}?3<+$ym|-NsV}R@I|q;7n1h+#WW8sjBvbCxEPtck z>uFg+uxAOvoY;pezpz)`p-$c7M;o{c_>S$D@O*M#k_LBg{JbO$!s++FXG`^RXYpqJ z-XRFSpRPcA$IDIT(@dDET8q#P(+(-B9bilC6QAlC8kG0qfg5V*Awn!G#&QbqZ@HmU=npK)U}@~@ffOHP6=lx;@?J4phHZuOh!Lx zdky)%eG~p3bFJGaRSU+&oqe02cy4x0f~Go0lKoAdVQ9SJ8?}h zX5EWebYRbh3m$)Xb^HrIXhDl0CFjWw&7ErlOqVHad-r)48~YbQ%R*c%Xj^OST+7HR zim59~TE7JV_aH#RUxIF5>(z38`#AT$3`~gHe6{@yiR>;VSeiPPdx(w>$M7g5qK67$ zMV%Qi>_yeq>jC!BL^PPJ1LeU$!-_{$3sF(UQS4p}XbD(Vp(xaX_^2+Imx}l3&BQMF zW(;_qeY9AxVGax@)gU+6Ir$JsGrb(@aj<{`AB_@<8Ytnn0&aaX6mz@~Y>C!hWHE~e zr1mvj)4iP_R7*y-bIB`MIFldO>%P;dGIm%T{EQ-6F_}TBo4`Tkw>r}wj^;a*mq|-F z5Q2b}Lj9)S@kE1d4yC1=2NpG-6?%G|rLO{jUwx3l4h$J5+1jb`L%3!;OOwbH}xHt+tEt|^v;z4FLnNsjMm*2JX+q3WgS zltu!m+dkfVM{XaHs>R2L%|c^<3y7i0f5)y0kj0q-p|gd`8~O?}i&p-O&4spBLVtfwkxzdw|jJK--r+sIWEh2qXe~+{S0kyWdZbU*}d5srTGdZ&}9C%+eG&a3YJ*yMp;G zcjg)5GMS<4PA6~PUJ?6mS0-7^xuNdV$#e_B&<>zo5@}w{=v1n0?Y$V3`qUk?QD#JX zkThFH)~g_|e^@AU!i>}kNJ@(@Z%|6cdtJ!|SnCXdK_KXVje*#DNTFIVwaTPf0wQgN zBm7D!mO5bXAj-|6+-e-huLyTw9|_`GBtDNpu>iz}^rodoHa0=Q?Kt?0h(^uKdOIoIzYMYR!^bFg9x9m7F(Wb-a8#1Y z68(7uX~a33ve>!T8<3SlyPWldU~y47d&J(-7Qj@t9c<^V@X`gm=4jgLtG ziDq<%a8|xm|2h`0;}$(kwX`WRYKcaPN`7*m`t|zT>|=@gn?521y5Slye1eq-Oz_NacHiL zOPVF$sKvO?nUdSP$c5o9_wpN*AN}ViSg6_B?mPvjVLmvEs9+?Gh2BlPtTeabjgg`2N*-9a`Z-$n+P zRC&Gh8WiSJ0_xh0{o5`GKq?=kDGoNHZn{hq?lB3({8!hjq20r6pZ{tss)OKNVGr8p zz<-$=oNM|;Ht?>gnoiBiP7p>ZEK?3qF$%<8FW1+pZHk~-YAQ$DnM{iMuxzI_yS8qS zS$l%edCvg^!!o6C*kd-NOSe=^bW?<=?qSW_>Yq+lV_6O_rrKvkcxHa7fPyR`6Dim{ zlF#s1Fiu-DA2_JI2{TpMqp8w)Mu+$v3ZYOp;yW|V2_qP@LQQ1M5RQU2M4>1&ng+`W7+dr&{RlBVohEv zn?sl(*F|{CU|WCua&C6&7ZorDc&mx~3u&-oP%|3Y3Dz7}?3+XIFO(h^S)2!Xu4WN3 z6vtm!u79QmHZ8-ooVAN*lZ67@T`Z^UvA4N#Mt@rj;0TqZekfoMmP-ZEnCD=;xf)cZM zy(J&-?i)S-G7l{*u2&ga7MCG`R(P>$cyCtD6i+P-SVDMQ zs|G(N>08%10q-@%0<2hk{TZ5MC3VT$_;dP|eh+-+S{vFTbPQxmR{x>^9#GJ*;cKi) zzLKyx@wtMW<+Kv&l!!^Y(}7xi)7t7ILcPjFMKS+j8|{SC(k><=0AXcq4bFj2Md_8; zW9T}O=%#|$*DW1yvh;Tzz4;lh#MQMzLQZ~IVj0M|m;}>53X)r0?cop7iUJDbNhCudFdyAD5uV2vEyPs=cecNc~ViXaAh@X<*TDKLuY33tCpdR%Iuc85=t{Mc>xk4f^34t=>TP9}wwdTj32&>7r;_lYDCf(SN&91hO6R6*V#&5h&hO+Q z@>Kx7KMxtPtUY4b<{lgte7@$y3XeI;wcPOx;wh9Y8CdBpR`rT2iLp%(GIz}Z@p|r8 z9)fQ>blwxM8>h+D9r^&{gVx`eajD zHYn&)JHF|wQ#vH7p?uS>a9y5wX<4sofET!|R2=*dE-kJB?3Je}p0hg>)!Sz;50qCNGyL!}v z0e{@7jjy^=uh$Ldi0iy4*kD|8R$-h!Ptj@RSn^5nmq=Sy5W!SzH5dRDHUo!%Uce3@}N&&Ju;lry5U@2RXTyM5<)<|eLHQ-Aw%*jF%7zF*NwACm%|tC%{2 zn-ChygvPy+s?iL<%>y+RL)^w>AosJKIk(P}!ieMJ!aywMHh`vryE#94;r#KYu4c8a zx#=D(N7IoBpjr)Q6<`hRM@W-@f?B@uH}0KrzfBS>Pd|+}UX)DT%J_`wxSDRyknUKK zP~XYLWkbE=*&Cb8e3|BjnRA3Ay+fQOm`n%7Z(TKF75y_B$mwLwnmV=s+!GBO7{ZP6 z)6XA&pmm|6rNhf=FgcCpli#h?NzsVAOBW^ei zNSUE@Fcg0Y;4uO^4B92Sj}2=XtkLgc6ttP?b*C+t2)(qyHiAIS+l%tUs4i1$O4ym? zS%u39JN&xVU_mpsJi^vu{znpU|1JAM5d|^iJF#V#CIvjgL zA~?saHsr2wxw&mD+6v+uYKL!V=@SN%c3R(l@x5ZP<0N)1+}6{h0Zh!W~;otDc8+v??Rn&WvM}2 z=LZP#K$F}|@xE^Bg{fR^?DPf0qE8MX$63a|v0&79Vk3F_;wQ!9-maJt*0n5bJl`yX z4jL$jei8Gpix{yC*gnAy0a&oMMayI>p>H5-IT|y~Ls%#!@VsjSF8{L}V%vcY$ zokT5Qo35>FxQ}*SL9Y3Ln$?n0*sEcOqQw-h1C6@vT(~YDPqJvrVo#xKna*U>0<}t9 zk}d)@*>TJ7i=5`qYF7ri)Xf#!w$*$=wz$C98;U>u+ueMt&l-0Oy7OZ6uwkdet%1j0 z_;@KUJ2sudu1SL+zTIAuE5O$&vu_FGgJuAj9faUQeUK{yPKSY80-RviT6)M@SZ!!G zw}CS*oU4Vn<@Orw9P#bq-LjhlTcZ=k#9o$Xi3_Lb( z6Xu)%Lr8`1$g|kR z$?5*GxFR%(uq9&<_9MR|_B;qsii4W?RPI77*M%)p1PdJ)bAG$;pBNpAAi1*Yz!iTg zZrMzRh4cHPw4#RKzZ#w!pXDWr+Ybbz6$FOqm3|`laZ7L}#%gEoH2Q;~7Sb$T(ImNP z@EtxEUJfIQ>!4qc2?6T^O_I@j?+$bheP5VT{Hi_5jyG*P`#t0o;t_iJ8W@q)Id%Gg z;gAjGKKUk2gG`B5)ofXCaPX6fS(G`hvS`?4)6{t%q|cafylGIdmvRt=j-uEh&HZcY zWNY4?w=)6su-zWRa|11kB$pnIZkgCKw1=_6oGcLd6AM`czQ+91hRH!lA&s_g9@$iW z3_hm3cU*pE%Bq~`kZL%8=CZ#H*T@08w+NODTZM4~K&CQ>2t=lrUC=lb2{Ua;-r~&S zX0#1G?N8&KId}H7U1=jmnkP~$uwegoL!7?w}) z1^W9$9w_bk0fD)lYs)P;fuPPB(EDw|SAD~cW#6)TaF~)g1{0J+1Nz_S9>}CfLPjG1 z`KB(;CI!XPWPw*3`U{=Xu$8R(OmQo0fM@|H0Db}TY3qA11b`P<(<|QBg;S{n&==5R z*}4r^^ic}sMG}NlR&ykeE%4%5Y-V1ZsbP-qI{poVt?+!2?gtHREksMsx>IMe zdYN0EmEE&g=)#3k=rjVP=D@fMBD-zex?AI;{N-Y{$ErDyOaL#>T-mu82N;Z+ zP^W7bS^{VT&#NuokI8PvZQK>zMUNny_s6Kqxez9(&QmS<*n){0CNM;o+r7 z*{Un+F=1H_ycrIv59zur@=_p_3Jp2Pd68lb%p8J_%~4(a;!^cb&EE%JAdTK$j&GVa z5_s9$XT9D**yJ#;U|)Y|T&FSMjMSp;dHn&(%f6wgG|k!p2&jxYPUhJhyv$)dEVBXqF=9zjo^@OX$pak z$u3}->sm^I@To|Uu2nsiyS&8n7i?Jc>d-cU@!3Nzze<3f;px!~Zl$6xK|Kb~(7Qpq zOKPXILQ?n#g71Kov`|RXb9$0!uj~>j^|b9k(Ad!P)-!*Bu?HWh9$kdCqjt9tZ4rW? zg&XDqw=+@YbCAG5VVEgcwfqi05h41$PSXG#2JG zaRmZ~XPtbLOMO+ffn{kVgCO7@o3E!yL?dgT9LmpEqEcnmB7xzIhqyGD@A2E2Yud1K z{=D_$%X9E7Ls{!s)lL^x>&vy3%VuhG+tqK*!nWf|w{uyGts`5td%bK{G*NR~)!H@V zph~9SpRn4|*nyD4A|j*Jg>(W@tVf2*oQ5^^C~$*D8;fWU z+FFg);jjQ~&*TvphKVrHi?m4R&a;l_1xH43G;y#kIN(ERZXHiKCERaJru6JoPPbJV zFdxd%E%Og|`%hKGT0u?1QODK!z>V@Ic0$JPpgj84H0C?#YNCQwEgVuRC0EPks-C?j z%Y&6~4dH8NJT`=WNg`R?E7aNnGEy&X9{gB#Fj)`POr_dbG9|XO9EWDwZI-iBgd}3} zzsH9=`~h_2PUP^fr=Vqg#p)sVAN(R?X*2YT`Y24W>Ru#nTzV2ju-4BjGm zCtnNHsp+ei`t%xv00d9l8g_^En^pQp=+q^Jm(%7v8MB>@>u1ld%sSGNi{}tkX16vz z%vdQ&*`v}}q!ZQLvv?TJ$xev&6-;RT#t*KlZu$eZ5XKP|9@q};+y=@cYVGgE`&LAA zDNo>}IFq0=?VN*ulr;lOj1y#iijC})Gnl|wHaSx8)zO@al_`={*VDNmc&?=KRnE|` z3bi|O=m4@s%zS5vc%j4|Ndx2dv1g4u5rt$(LnO%JjO-XD?VK{3Du3pLSg_jn%E9J6 z3ctnpd3Ag>#@Z=O~CuhAoD5X6A*jPu^fQ99CnsW94CG)n?>r{ zWV-4t9WF~P@)1qc1)cCKCYr8zK#i>EX_5YJ>3CE1DAq;X<1gu~_Z~d-gU6euAd$ex zJ#ZXK=sGyjqordeSna0*YE5|D2b5Jr*Ovg-Y07vjP*^FDXuhM#3G~I4z}~Q(J#7zp zC%QPg#&-h&70&Z{Y_9-6Mq4ZC1DK)5Ykh!(L6sk2s&kmZg;N#c-@0nrclqnn3%Qv1 z%YD`w<{+6K;I^aE&kdg{(8kLRdMeMIjM83+z+^~N3~|YgGDtBXfjN))5fAmc zbtGm#Sp<|9u;>@rtND+jn=>YDb7u4raI=oAsK9|T30?hwq;-0fNkMOCGjces@6v_c zA3Ed@zBYBJp)cXdnrVpTCe~drAu^WK>p_U4KPISmj!PE&NM4ZGVmB9b5ZaopTelJL z71~-C6?&~J&{Y6@!OaVC?_%qq^I@0v$YHhPLd{jx-9(s}IYmoy%X=i%^`H@mYN zS>m@j&kpRyPldG@@Zby!)@#3Y_wa&V4j1(2qret0<|-`0a3|!xKbnWVv&xhH{x#%0 zLB}C$_nb@-Rc+kiA{Laqb2?HaP`W#X1w3$?ILo(s-#HF;fddEO`HYYpPu)tsb&($x zf*XnO+;d9B2cfVD|M#i&Mpm4tQZUj}a$AxGun%_(gl+nI4PqYzk zlp6I6&1X>EF!w3rqvUSux;ikS*$?le`Z)%0gy#CUeBx4NU-vmw%RC5e^*fTKynhMJ zbVo+176w=aO5vR3>`+gfq;tG~Z`GC7&;l+5$952hvCMl3i0q$2tcZRJJ$UiE?N%RP*@e(IXZ4a^FTbxS(#ln3(>25m3#3@wW$ zGon0SCo6*5>1p_W!z^Ceui@62C#|c>mP2^WCq5X9<@fxrgN!4MQK z-l5XjKE6jz!DskylYxgXs;~N!p}S(xRF?c8F{LLnW840eDTn=*v}Y4X47S`Ek}LcP zvPuj&<3zYp{$N=%!g}jDgz42Ui(eBVrQga_N|GNHPu7C@*$q^=WZCCzmI@5l$c*Lo ztVdABYY5J_6170L9zIP@X>w}zv~T8eyt^;})S)$dPYyQt)x2X~`W@TZRf1mnO~DO# z^HsUfr@@}=sANhp@+I1rX7L0MEjpM-2Z2QCC{>D8*qkDS3|7RlCSW7xZMZYXA&$~e z^wZYt=aKPk=E%_9mg-TVS^{QN=?P7D;VfP#6T_NQPez=c&ie`OpI`T21HyJPzF$-%UQ+S!rtPq^ic#C} z@({6I-GW@m=so$?Tnq1QyZW=X4L)=bV~#o(I=c_(zv$gtH~VTLbZp!+K{kUm+ytq5#AcW?glHEjZ{f3u_e~A+t zJZ|4vTims|P?j+nv9Y)HN44cr8P52N#QYNItIw-#8LI`nI9f-SCBO4m#Oa}kZ(#~L zgsMvw>771mu{y>Kdr$^dmk}7h-Jrro{?QBDPSm~$4wWz}IvqT1{iN=aiS}Z7ZeC>8 zCBrnr*l#$^xD)H4PJLsQwh}_-2t&fBO>4=i-!@4Lgzh_Al5N1enG;$kZ(X-^qM|qk zVDauXauCOUsG8l*8<5`cAIxp=bz;AJHP%cBq2 zzf85rUpKH~q4%9G1>ajy?{&q6?RSQKEyB-sI?ac1oUkEX%aBd0H*SPGTSkm57-L0m zZHTUSio9=vK%2~|sY0ny6oSDkW z{i1epJIm^RZxstUFi?lBF|-Xso}Cm+8+kjM=`ZKTW!k18%M#FS?t3L17}o^z8$~y; zJwVW3RCD^i7$y5r^}#?Zb(2-DEc)wWx!yZ2ZGip~>aRvCMhKUr3jqbJ%RuH!P5O6^ zwzYg|U3DB0%Helw zIDxP@hO4e<^UmD}I17%+s4F`_U0#h9wSP8!(40?b%G(NN z=$bf*C$!>fx9y55YkxVvUM@Uu6)5Cb&#yYns+E>B5Se`*XrFex2MR;kN`7?fy0}z; zhb?WUQm(quJ%PA5NF6|;L9+@S?#|XWgKLJM9DNGk{()yCs_?ZE%xmp_ZW2^IiQ!}f z)oRj#Gn0%jOM+E(yihNQBR@`GZPYGE-b0#E;Uc&VDT#X;{!A35PK}DDOr{PmIvm&D z!kI)x#QgcA8tCaM>_x0^C;H_^xQ;hQ#udYe(Hy$iTiPIplOOd z4f%Mr20h+a!K~4}8uxh)dS3M@v$ul*b&VOF4Me`wpvAz6dNG`+}i7-J4Tx4JqEMkE1b_m9|m?pn1rK) zV7<%IJDD~3%Tn30Uw`ytOlQ6d;5Y`3nE|nPHYZ3%F?fH6-W0<$9;qNwtye!rz8Y9T zLk4qNm4RNzM^4ok!bpKgGkfQE)uSXV0)Q!!&md_cX5vmuk3nOVgdK}rO?_6TcLg(N z68bn9qgqFO_M$doSQ?5?e+N0&cwl!qh!Md6k#s~I|FMMHK*(!QphP2m%M<~n(y_-< zOel{#xuHe~VHuT1IH=IG`*zTKTHgq+-F*_(39#=fy`ufmtvGRfv@5oH6&8Zv2F!R^ z7rI^S@BqS@r5&+3pFw)SLe~cfI3^Eyuj(5uhc5rynX7qj3;`0wvex{c4D}K~dEh4H zS<{Mk&8wCi>LX8;eB8j}K}{mwt0t){3lcw741{5cZq4$fAi)RLv|pPC6;bm80p&7y1|V-O!+_Q~Y|iL2w|~t~u$Zt^81x8=u9a>0 zd$%(bSOyt~A{zMX?J#0T9I?GCi{MC#QEB6t7sl6kF9SV8gCD+6Y3U z&)PPfwJf`Bn^zH9w`HAHbWu5*9m$ygL>!8kF_U;2wrYS*3$$wK{C(8m14Gcn#Vmr@ z%L6xrobWO8#P1HhH$n@#P=BwPnN1gS%GUXDL=618eZQneYx&j1f(`4@6`>T?czHbF zIH6z2Onhot@}<_s;$j1vnRQ&WyVW9L%IAfGK;D@x>aV6YM5WoeD#OsDxR%yL#H*O@ z(D*1i@JSI>gf1>jF=B8UT#sF}R^DzIeEIvFf@_TrhO0+dN~S%pRBs z=8@b+&jB%2p34qurbyOJ4<%^?jLYohz+Xr>YLE&Tn|;bfO7t7s0$6fs#z>>jHCdT{ zl&3yjgDWDJ6UVlWE*l|94=`pmSB4@0Wl4_!{L08OGWYb0)Yi`I0dgtOvb)H?mA-Xn zhtqV=wMTo)*7V`e72)wsi0Nbw4~NE#ZR?KzDxBxi>$59EW-9bj%H|9pi{30{Bt>fN z4%`P5y-weJQ%+6kFb28(^f==CI-a&@rtFC6_Z3EE4+x^C(NdYlK{1Axt-h|09e$KE z1dQGUqY#aa&$*(5_Gc*Ypc;>$Z#2_A67twL>T?Fi^D+jTXR|c*73jI3!BE(P3&G9os^YpvK}&OSL%DG|`u&M^rZ=zpnIK=R=pTXh z4?&p2uQ0h@yjdV6a<`|Jx-PIo0Bf+#?V-8O&Z~fV%!%0O?PXtNgIpeY=?+TC+Fw$@ zk-K*5_GsnmifWE1I#14H>avL|4TD&BAx7RqqvJ*q30<5DVS$6}|*4{#Mpjw=G32@e^GSH=+Pat&UxXz=)|(cj4`?a^)2kWkaN?Sga%d3ys}1X&-C=KqtXlRJ-s0CDlN^+)`SZGUpC z%4<&bd@FuSl5z4Uf`DW16?#pGHIbVKzCdxKFjCu{$ZAj;@^p-j0NZY!NmFQJk6j^v z4vSifpP*Pw98LmjbRR4QQx4&xE_MA1_&OTV1BnIj%@~V_7uPpA@fNMzv+t<#u}zkI zq!ZJX;p8+m;???nFIor)+GFa$D*!17K($1q(8#jTAYAe0A2%(+y$@lFmi2Z&mq6BN zphkTbAp$H(YTY~j4*X}ReTF*km?htlqQw5mPU)e{kD_bfKOIXd@)4%`BXq1WByQOI8x2GWu zeOQD0Kh}-e>TmA(it0igdx;-U<@;`ZL)KUgK67>~QvqwkD4aeQS$&bvDc*uvgb0DK zoJUw#q3IF;_a=m+%==96#YK^<*@Wg>H3Aq+w?r>S^iP3srI?4~Ih-2JMec*kPol!i z_SW_foQ&~Np^)QUwje=p&fVHRe@xc`LmHJyLA$SjC8bQCPOe}rnsh1YXP#L%_zYVa z2Yj3??{(>;u+cOJSl)3C3glEmS9fThzEGpuz#?KZRcZ$`@r)_T&GQmkt_q= zC{36i1%)_fT%e6EXUeF^onoO@xmDFaWQfShGE^~BBt@@=1QT9-?e{Rsv@vtz8VW$2 zzb%$8LGK2cdq)dbt7qty`}h0N`q_2|y}Q$56___aa}++&hjD>+2=PswGYy*Leo|f0 zv8TK!*mwS%JIt;#U9tw7Mzti_l0d#%80pQPivZR8Uii1pa&nF7Hrk{rbjEa~x}RnX zS|ma~KiGzdRf!U;SR)nf7UgRJqI1h`CjG}0DfT(-c&TT|HA#%0mC|FxYQo#Cw&*^L z?Yy5r;RspqTbPp2@~iS2uXpg5I?d{oi|uBBPOJ7c>!M}L?ybJhB(rv} zmdL9SuHAv(mCLTpm$WHXug%u5mDP(i$xT3$m)aQ*0H`;ZnsgTnp6xmklgE~g0h#kW z5)tK{bRoU=r%+J_b`o3H1%$|T;zI4EyrK8di?fXFoi|?$ADpSd@9gZW5^-z`=oS+i&+shUfIAHjjob|tH2Yxs;qqUXpf_r7Ysgu{?iJv?cjkPtpOwgOMNpGC>DMwN z1guxalp7I{M7Om)p~)MN=VC-kytM3OZMoLVZDH9ClQ9>wS4Gm|(TZJ5SK~`dPeO5Q z9x-_wS7c|S0C0O&+3q!ZHEWC_Tvaba7vN&oCQ*veZ zGN$L^(VXv>9UTj6PPO7Snchc;T<)hq+OnT4lk3$Z*f3=n6f9YwixqK+rS3S%pRf)U z3sY>F#fp#AtKh+w7d{74EtwbQ)_0cjx;IOExcqN~+6y_%Yh6Enb0)oHM!j#-EWfmV zKR$Ohe6*ZyyUp{A6F9?7k|_H!;)-nXBs?gxQkl20R86}|eGtM0xP5U`B$fhYb9j5yT-XQr+!(g)!^m)|%vE*quj{NkMkEpJ;;N;Qsf z(!7d_&fhi1K$_OwTgi-@jL6P?wGNi{6WIW;7)|!foS5xo$#fcm&gL-<_Ptg1eRx~J zeB8KoA?^r>aI1QtDC>nz{}UQHc=ekYkYRZZ$fDJ4-Lv1-3oQUcYp+M{$-^S^Vq1hH zjmm~=p@Dl>^463bH*L9n@+W}%7)y@|&T3#v2h!R~Z;Cj^$Br2{zXj4@i#NCIuR)u` z4*i8u@9w;9@X#? zr7xsGEa3bEybJ5LQ)!ze-F1Y;^XQWaD4(mh%;VwUIHU_hgDfdv)3oRzQDE9u>3ap0 zB^0R#3fIi~cfw8OqW#&T#_>P-G`TWwpY>UBkfNXCmL+MZm*?Ky*XqU%zE-5DvBXd; znQ=D48SUB~%F-om+9eRrrqHgPIakP{{SD2y15x`n53a2eIx~Riz-!SXi*JUIPQ01{ zD@*{Q^jj`UuflxBEf)}-sHK?;ACe!4WkY{-++eVi6fI6ak(&XQ&*&qk|3J1NGAv78 zYp&1?)A)2(9Kw^f?%4Mv$Q^lIb#1?OC=`WgvVw7z_JppHpCs%n_NR(3L4_!GYR#1- zps?9qlpNuIrX?qq+yxtkp!fH?m11`L z-iPR>^izYOjpV)G#H>?Y5qx!ReapJ2H}dA|;%M`wYV7ES_>@79e*@^X!YPxcUrs+S zx1)7zBtB~f@_k+B+qxBAZUgT`t4LHl8MwMNbZ{|*6uS-H_YCM@!X3GLbNx6Y-|GGN ze8#U!DC`Ef@r<@|Q9uf{^Zhs8-YH6#rcKu^+qP}nwr$(Cty#7?%T=>% z+qR8aHg|o0uio7Yy-s$IeG(%xG9vQH%y;A)8FAlnY0C=(cD*|ZQna{FsFCY$`4hsj5l&eLOCqUL=L2id78` zl{Tz9r(cVk88K8*Mkk}A_$g%C4_GF?In+oF}mt15bwVJSI;GztlhvdWCjBj1*A6@vDMMIQl57=S zcCssZETHxADByp&lxpEhf$hr@vN0;G)2y^;RmU_sTEEpI<}qrfu=*YB%=F7Kp2jiA zE#kd4xhuU zdA+2Hb!vU@&?(#?L1I8kq4P(6+!NX0&M?+ooFB zW4$UV)$U`}D&sM2!kW-VS1MYH?7EhEDm4*1Lex5`` zc1i%!M_L%}91Nfr-h(hL+)74-t@1YZhCyl*!0D^9p~}-g(4ZkQSfKcV8onr$EZQBi z+=`BL(-Wcx47mYt4k8^wHcXCkgc4aeCy~mJh~AjZiz=M~uPrIk|AfG-$48GamV)N| z4c&4Z{zczd06lNVq-A>;3TvRQnd|g>67Dlq3Brmx*pdedoA|Vv{$W=uj)9*6$9wZAHD(&kkDNbD04i?~E5@B5ZDcdBq+cjps=I8%(*Bd>y<_%ywYm8Yh=4JAci;P(5Y zY6O#o!x7dgR0X~Xj+gV*pI3y#?EWQt7!AR(F_TlwFn>?S>YjkBr~J+OBduzazAS1~ z;@blyLVIbDV9^)3co%WwHM>V5MF-UE0+#{;8=dG>Vr2+)wgjJoBVFIW(~yBu+&bf$ zqO*xUKIMyWP}Nd&SyOA!S0;QbcgNkg%lDxs5)^~Zvs->J0H?e(OxBPvqyTTg4ten5 z?_lF24+UHGzUr0$ds1OE5MeO2r;CE z1UPY1p9HD$^C?xk^2Nf`CEVnYB{b&IKk^m2)H^!kCnFBhK6tJKh5TbG(gW&A+C?jk z`HV}D;t35Yh?4x;Pk~q-(?IfiEC=5z@vopXzu8mO9RjK2)eoskmY&>mKLKrh`)+RM zY(LZo{r$xS(EWx0V_<6k(&KK0-QQ;upkasG2>1LnzZxruL7#`+V74s|!--12gGau- zjKAXi3J3CQNA|a-mfU;%F~;S~x&U7i%)p^YAYi*gJ>0H|@Q**_L<#^A&aaGe`h#aW z%BevG(7)`nZV4m$SkkYTGv)~rx@CJ&s`N4Y=#KAtDM;pO=2BLnUU-(=tGBmY@qI!1 zpmRcFPEo-_)Ic%1{!-xWn<_3Svqs@-4INKpS&dz~%&vf)&pQ|oS6_jG(<7|>h=-I% zj?cxUk)dc!r=15J>d}k<-U|cL3@bx`PpWEbG=kN*0{rl9VQ@XB6D98Ovfz_C`v~}v zl+@ByE@Wnoa26=y(*hkt#lw5Y_?y&z#wFydy%3f(z%%#1b zbVIdJKwh<~?-K)BC%7;?t{`=3bPX014LoqT%Jks|mLoyeB{+wdEC~hO#iH`bT9#73r^4u*sIzlhdS#c4T2`b|p+y zy%>R3)pBKP$@dMpaZ8%DubATFMe?dNMUY7_cdSD`vdGCEF=22gG-L6+DM7x@3EZ>uI|X8DFx%Pu z=55C7Z{V3G+o=j+U7bWKD_TjLqIBEixc(Wp{wsUpR2Sc}>zpxxHBZG0cCHg5wOtnM zzUp0b`Pz0(Ly{$HW9-~rTE;9FkzIX-yxA~nMBG(zUa?voJLhip)Eijy;i{Rj>kjj+ zwys)RR%IKASuIA8$wOY&^Nr@WnoXKGG3YsYe8)RtkXRG|9Hf^NabUYAF$a8gL0i&P zeS;nEA_RZ!sJ0(j9G>U(K-_J6V=sjtkdM{#(%jlQ1w)BLq`}&@V1G?zYb`BT(`&?j zoFmD4Jq*M8nL3yrB;)!9cVv=oqrq``@S+w@^$GA-iz0aKJ~>5!5KPH&<2~VVlMG9@ zOvVf=fY)Yl;LE4*wk8YQ^T?)T&F0<=*W?o5PBk} zT8OyooH#(%GvpClZBmx<9jAoqo~R0)e$xnJ+CQ=C7zELoX1~f;uFV#t&x=wCxYJJv zd$O*|7yMAB$eaA@<-^^hD>r_>VRPcfn=`X~Z-~1oryh-&zDpXi6KsD2y=oB@u_^)oRl zh1W#MrDy%@uhPW)jj0mR`ql@?f+&A&M4(V15-pG1DzoTU38SNlL7yZgGu{2l3^j7J z&;~I^EEMSvv})LjQ@din|18)3QEor)eFO6)M+5#BGWh?*ko@m)Rdf8~b^Z?t{Qp;1 zH8TOrKOz3$D8*O_IR1eb{lCuulO->T4mdC^(o2Z zeRO$k_Pw?7#udRsnJL%JtTl-8OWM*Hcid1tLxTdu#u z)3KIvEFW9?Ew-5Drae(1b3dgOT>nSSni3o2pq2j-*CytaZjL!QmZ@QuV7^QR zPw`+*ZbfR{#-Hk@%=Wg-=}bQOgFIBFF^~=OP+nDO4{Uv*XXaD!QFJ{ep1K3)qK~PL z!S?TTd`<_@d}^gS0`_0RGbqER8XNpmTG_< z0VOaX5Wv*bE$75d8E>0d<$8t`j1^NNu9~WQb2_oQL6XR8BhoJDFu|K+0PHDkYYR0An6LaMoQX}AkSG@ z$CM6_(``C*?jPiR_^EBD<{F^5#(SoZ@{EJz-cQ+uL0+Y}_^;d7uxHF^&?FR~phloF zStjHwC?J8m?SCby*W;cS8-vC`*)`>h=@C0q$OCRVQvwhD;my_f8weql+`wEn$E9e0bsU};_o=2!*XTxA<9sB#-VAYDG-{Rg@R4g z60KgW!MOpUb%HbE6|oLovY5k?(XuWnsDjrSB3CyuuITQ^5-ZR&+Q)u*n;a)$#XHH? z7%XOtY$VFfmeDNSMUR$>3qsiJf_6r%X|c<`#sSjpj!kTj!3rzR*6r?rac{4Zq0!1v zi6@;(yo~hqZSW?1+YA?h*};FG4(22qrXHh48XIz|R~V;OJq$1F-qU-2sE3aZ>&|*` zllMQDl`U=~Ci_N%rnFQCRnr#~E@iCA=DF7;Lo1P@Mv)$x7h*&Rpm9z&Ca&_o%Y;8{ z)q)q^d64%o50ULIJm!Jc&#RQKluz%BDTG*9)0m$M_IF!#hOPtHF!(77u>i{?Z zMIPOng()XZ#v$6qRG+Og#8Xm7f_OQcCpXfZI%EMFGv0|6*;H3rr_NeBOqlY-=ve;d zaX)5O)^H%S5*qhz>%etYJeAveE^q7I98w=jnP?+uB_^_~_5gJ5oc5M)U-#D(^2kW6 zq)y8yLAy9ssspR1-{;SUXXLUVi~1s_?7Ee5iK_LiM`EZOjINU}GEn{M#Tsn)W;=>6 zj%NchJu{~UQAVW(T_T#qsOz}ZnyVXOa@+H}K#KL}X;Je<{yfE{VWYj_2YijD>WUMFD@u!V>j-r zUpGv*fFEwy1mFii@9zr-;%xBGeEx^fYyEI>)|=l@-95N(g!-qyj&+5x0iu8`v^lh1 zsWO9mqK*qW15aV`;20V+Y&2X#5G#d+W~29No#vnd;DA+Tql5Uw7oo4Wyznum8B zd?zC{myVrs)btfg!IyezT5jLBgKJ-H{CRn`;&rtSwP`3*(BC3|Nm7q#si~lzOI4)M zR`~t7+N9^KH|#IJw!F0DaeqCg&+9+qv!La{{Ti5qZ@BPnd&~%HWODlPJf=f&lPFP1 zM+pSh3Mo5O#TO`^i^=$CnyO5Jy??s)5s?NabD{j zY;BEK9Ub{`XRnk;in_QXG&j)bN%spGBri^27gvwdvGVN(4t=8x+%}RBbw!XPkC%{y zMdul=cFmKzCoq=erV}xdt;9 z($hw>)d?FC9aKvMU%@qUgK1+v)}|Na7D-LaOpHt$2ObGvBY8V>jp`f_xYzQ^s%b;J zL*^6DE_3U$&}+0oeTlH%(FVtuN&-Yik}BM%L;`6kQY0$Dc%o5qJrMZ;YeU2o@J)0mgV&LqH=m04a>Qg-1Oc}z@t2+vVRiy?ay>s|7%Fla$`EfN zDj6?;ThQn6&C|`(De`1}OyH$-CwI2^{s@2^xPv9{gL^;vOgft~ zJr=b{^#GX!(%nE)te1$!T!zYsYrq?kW;tu?>!#fvm-kL9bohTVI^~L1|)#&0dN6a_`-=OC?YgBF>Mo=V1Te?D2w9Jxf}UnX}iWQ z8Bkn_5TzVS$)t9p@n7?FhD(edd1Pz^JEsgtFJaxihEOy=L`=r?cEpf+qHJz zo}WLJWIk5(UfPN`i;9I5+ZoY~3#$Zl0(xzS{H~t(S;>?A7cO3O>xi$29hu_@(>C+= z{cQ@j|L~miYHF`+0U#w{IdzBymq0XtS2^fZYeeaz~4)mQ)CS_ZJi?nhjljl(QWeG7Wr*Z zJ6@~2dijlb$uc}&FxN*8x!2KN| z$?V@37j!<#dU7>p8yaXgRx&Tr*N@4&r_C;L=5#gf*;G|C1%PMEVWfyD)LD+e|AO5Eg7OmBDY_?U1@oXFN_@@u&PsECzT{m6ie<+lz(G! zAuRWl8D?S4ID^l9sgGJX%`4M``tNO-;L2mcIonj5p9PJh$3O1NX7S!W9-{H#Qj(+P z?~_CS?qgBms;4+RX|&da(^u4Orqq--5}O>HS8bEhOihL*X^vU-2ROR6X_SbW zp|~A~Hu}(MwSSN)s^JKzUSKqO52WymJcI9@=aHxWoiPV9Ex8YE=ul(=4mcz*r7Xxl zvNh`wK>+K;d8_AX%YB>sdv2-^J2;QUr-n}$2Aw0cRe3gLArp%I>vG}muhvG~Bbn-m z1XHUdxM|~d?VMEuZB5g^A6&Lga@Mn0EVR9m9SoNRY0*)iRh@LU=A+zBwwAK{=O0it z$93lvdC2%JN!OI&1_2mNweI09B+Vz>OH(4z%~Lk)8<{q`9Fl6t>bkbb+b%8iXc~CB zlm;rdQ~O?_s^=}m~>UiM1w&yRE}?d^n9Id$djYH}k>QtqNkoXQIo zpiBrl$Vz?5b%Oow0~ZWrcY@b1@>g04W{H>>MZzYjjv1Yt`H28kvWaJq4^K+|#t1Gb zUL?8uxaGqWA(EzGI-dfNV}t~0C`a)Q(OnXO3bbt7+5TZ`!dMRkW|^?MKYwj!i4SlN z#6V$&dVEvb;)!mnSZ3N;K5yN8R6g;=XF5>i>%t3W&ivkVKAFs6E>aJ>g4t>IxAq)F zsWZitl5_O3tnh-YZ)Scue##mn@z4X&U*7uL9_qfs;r!L^-1#iFHIg}_+TzJ>Y(J>8 zdZxo(S8B&8umGTy9i_Jxr?(w+klYQA0Gi(gds-5>+nmm~4T;2o+b(!q$WuFRFJp z_2b*yTDNt}%tj5~g?UkOAUy*q%Q59Fj3d|Rk6CTBKy$5 zD`J|T`YhpU1#MW)kRiJ?tQL$+zUDH28kMdiDIQ&? zj2@ozIR(6II6(O*x?lX8zJYxUPrK#%QoJneS4&P^4ofa!%SrO@tc9GlWRti7+4_`? z?Hgy~;^Rox2+ZPRMGoFZN_V3!tE{x z#-;GWHE;j@rKfJ$uy=tRO*VGB4^5W(65&Z)LtemLz!s-lYnlTtP&eso{bOl~-P|I1zD^E>Jt#S_msPBVf z-cO&+GO_`@A-+#Hn0t^%G%=>Oq+s53iX8~MdPM6(y@R!d=>nu!1D+>)5y?66j-WFz zf;}RqXOi8?u>BPLhT^EhGFdMnE7dieKaW>gHJf@tOV$CNT*JTK?|b0f!pW%ZNHSu(&j`I z2bVYVLUsmnf55Ao)eBV@@@m&Ry#h3AO@jh;L$00ENa?r2emb?Jie@XT$&WE2Y3Wu{ z+%wxx@f#7-bE%EX>=mV_C#=sM;*_+lzb(^|tl&gp25^F}4jbg;lG}-c$_5wtlQP&w z!fprbt#(lNb8MLTkvA?iFqLnB(*ZR`a>j(SO)m9Q!dK-JjJMFj;aS$EHjNvIJEp!7 z6Af@6aYt#koKHOa_fwUHd75jhW9u8s3qlNPT*OS29JwogBc6?hcI@x-ok$DBHLTs4 zXhocA>Jr9*cw0kNQb05aG#mp_QasK{s4=K99*W4>P7e7r z`ve9n(WiYs)=j@ja5_>yq#WrU?41tiDzNa7y-N%?7nwW3ugqjqBN5<>Ub4Sz&UKvg zncJD$RL#L|n>F^97G@gQIj(8e+fHKoAbA0T(*7#~Y4<)exFhY&U2@B7gA1?deXcjM z&wsVm?czR5fD_w(Ar*-lGr@~i8_y@HX1sD<;-uP)BkL=6RWh!PH%H=}(-lr_E-tMW z^nm#R&PuzHI}`MU*x(eo$$9jTH2d%(by(?U9Hy&b#}cI>jW&UFvCb{nM9SAQqZ*PzE<`K;9+!|^y_y`!z%BPXKv115~gN{YwiMS z-{2EE1FDZ^u1qrdjG9A~ks!nuN_}0~*O%VeVi|KiEvxt?Ck%Lt@^abmM*0;5xotLw zolSjHvkLyR00s1fn*&$tW7|@98(!`5fSc#)Wv_Xtu$9hb@Hj_sfZ?R|&zlTaRnF}Q z&9}kSuc`jecPT#PnYAczB3Ia8Vu^Vwe{f?DdM3}M(SmLRnSMcg_N0f_eljp=;&-t1 zqYLTNFF2J?|5K$d5$({&y!K=uXY7x;jYXWyj=r4>;qwLGRk|s~*kr{Nt1-JV>#+-U zpWkH6F%DRD%k!ysX1>a*x~@$_3PsjcE*9g0;21;X<=+g`H=~YZMNE+}PVMWKHEDU> zLXV9%*ba!evf_(FhW0bi(UoT=GxC<`FxmImE&eQCKg)=Nylscw!r$Q6YnKd!HpK`< z4`!PmV>?kbus~8Z2N5GkNvx>Bh;Su@?qt`T0MSXLIy-r+b+UL8d9nsopRhPr?W@f~ zhFySpfq7?}Z;VtQEN3m@SN4$F9p#zjNuEovFuG>{+1iE0`3xGupID~A7%@2tMIDzi zEs?6MA)G`-3)VeO!WuTK_q4%NMg#8eRTTD;_G-xQxdDRApU`ta@#a5Q5K$75OQeCU z6U?Nmq+7|}Q7}+$LF9e({Zv-d=;DsJ8XOLnhvyCp6X)i${;J2FW*LYDCgsAm4z`Bt_Z)@xDu{IeTX(?|1xN-|Fr(m#Fw1|AM}N%~|7s+g zbcP%Z*gi${OsIc42(~rXp24IKK+Gp@93P+mlV~i}6s3@gRuQ7)2Z>%BJwHc7xDKJfByelixE|K2H5b#pL>|;pD90qe#(^wsJze1G0Ot8KdGFGC zivR=85Z!qT&43~ojy?M9J)8HT!+j@XDOV~R$?@mqju7pW;6`mXHlSwd+<=JZo8sNV zNDn9i@GM0~SkBi<`^_LM`1w{bBDBBh`m_1y((PljIW^Y)osh=vb>o^5NR7C*$l|LL z#4I$9m0uBEx2K18DqA(B3=JVD$j7i-AemUUFQbNvd@4@w9pOh}eN)+suK~a09wF^2 zJZ)$`;K%^94uuQU(VJ^)ypgEw=HA5{lH1dG{!k$JkFA{(NIRq>ft?)=%0xTn0?) zO0}#VQ;lV<=cbZn=d2^PrW}iU4esikH|>8$oyhUKQJkrr159~^q|!}1dA>2Z`=pg= zm$RBdmXx;AEbB+H(I|JXd>!C2kD)2;a|HE9SFUriUBiJf5HH*>wI}o@^awR%GG7yYFgI4ggI0!$pczyWGS>T9UAm~wk(~ zKZ6?{{$HurNuz~D?}FEI9DmP&hkZ{$Er}iKe}==uy$R0;Ahan~!Q;l6Jr1drht

    L?X7qrTegq1(XdYN^5`zBz1Ah4mltb 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

    ?4c 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

  1. fMm%5UPJpBAX3}Am(&GLI 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 z zpdue7f(7S5(M&;m(Js^}7G#+n+t z-Kk?D6fPTBhBx0~Ntjh#)1aGIoU6c##`uqd8wm@`#TW5g8@b9h>bsw^6*wItwf4&H zudoR%^NI7|12c7lW?LZClRw^)9s&oxu)_G5L$T-|4Huachk8e~kgqsyPIr+A5US+N zUz3BFdP6grgK|pQFSO~ObhBakX%fp@8QdLjwJWCuEjcZz>T+PsWJ(0h6|;d}b>=o1 z+xW>D3};&5RtlPB<4@p3`RZYXmpgxUT#$_ZIJPtfdu_E3*3%f&GyGw-pIgW#(`2DO zaKdwNxSLKlIW%Vub!{IG2P zZl@7*S|+S&t^UAbXiIJkKkZb8Fk;Tc(0mGn*rgo}AM{i$gqa>H$F@ah=rpJ#8MZls zHHML8#w57a8>8lY8iJ}qvWHDS`x9eYJqTea*)cNDBMf!STB9z zSz@?4u4c*`ug;OhWeC)QW-~N>Z}{-7L5a_bwUN;FlE)OHRZ*_a#RP>r$=TCFa;=EL z&OwcUU27ZeBJR0d1)x2w7I^xaEGg|kA*&6>#>~6tq?bD4A)i3BkN>=MbA6qGwv8@D z>BW>vvGuhD%g!8_X}NT+7+j+~GxHi6+Hh3?(DJVh-Ey-$Sl*Mm#s+gWR1L$hC+VtI z0;gePrpT_%Nhf~j>30^1qO{CC*b+~z#sJcZIuhb$_89TeDpF3ZMzc|KvP{T!pe=W; z3R;-opiX`~JPMn)%FV|M&9}g7VbB{6NDenfh_$VwJY~tzyn&AHG%nFtNG6ySyQru` z!#&n@AMf1uN7@euA-NEY(kmWHR-kUEr9H2eI#}cv^8^=8}`1_JXj9e-4O@LX~t` zgf{Tl#3sQ%r#gD}Nd&y$*=TU%QVs_qO*jjeJv8cFH}BvB%h0kkQ3m3J&7ah{VAmS4 zBTLk{(56_Y`>`5WS#)8OL;AI1MajB~CCxnM=>_=eegVOYAo(*^hRWM78_|Oz4ouX?(2g7u& z7&ye?>X&fjQ|8ZTqpLga$&|Tk1rfq{HSK>#eOsPeV`%qZfqoFZspElS2NcESLX`TBgK^!T_7FH`hg5h5xS_GfTPVC zGCWIiAojlsh4S+9>=y@%&CBK1mX6RF#oMq-S9^l53F{v@Y2y%MeIs@S=|=`FJJP#l zFL|n9)C10#y2he7dVf2q7Bo0aVN7uZ&#oO@mo~LtxKN{6q5Do(p?+ZG^MJYx1-xc< zdJnDPSWe4Q?}Sy#24NaJJc7S=#0QW*H46<|tl|H=jLg-SaN7C=`z3-5&ct zE@-t-!7|&`f;mgJlZU#7tvDw_A@Slwjx+ZMx8S9_|# z3)#VgUCwk>UN{($a3aJB6140ggbttO=Pqr|vOrQHkqX9D#GMWih5@d|IKLPH7m+Sh zY-k&p`sQ%t{}Ru3*){+W43HSHX~AIQIAd+%YD71bRkgvIzf6UPSmI!V;2nsaRJGwm zxVX~X2jhVG6+y5Ny-!AFql(?yusVo9kG<@e8wIv)jTF5{w15lwF6glO!7;cMN7{%B zV(W)9=WroIAH*oESp;qY=1IrET>7hN*)Krw0AL0XZTOG;l~{0?xVRF}M;(Vc2ckR> zNqB;~Cm}MWNEBk{U$*hV!7`;~LUS`F4YN#z3m{J4_YVi!5+-B_2cb0j7F2p5 z0y!02@RFr>xk{4?S75Fr9m|6(yy$~;G2E7a^(+2ds1i&cef32><%TAHJl$MEGZUOY zAC$U`RXADV2((ooa0~Q^w%W?avAIr+Fl8bz1tA7pbRLX}&^EpQTBf8YJo(*dq(TX*0OZmap<-Jtb)CO9mL^wAeIzcC=-Lz7$v$Jstt`Uvhh<)8O zADp+f03{2p9D;TP<70?5qIKWvCo@^Y$0*IO2q3V>&sS@LSmndDEiI-ZrJ~LhK>M$< zmVVB_5@S@tpKL`TzCi=%QtO&K-{*V8Aev zt~X}HRk(8+(=_(S5^C8O6ar*YFjmDi^;TS5RXtv~anHUwr9RNA0g1m9JyRSPx)G~Q z7Om9?qwD)@dH?|*pU(or=Gz~H3rSAVdZlI-0^oj#x+szy6Qh&CV`0-OUtqJymU%{& z{d9v#o?uFLC9<`?r?9P)P5v)Wt807>W_A)~aD=E{0vw-gf`TXyK-QS6{CaJtbv_{? zcgBVt5HhG;BsX^xD5UJRxmW&m+L%v5-_U|G5P$r8?`&|(&WJ7~E(As}3C8t^tJa8W zAR|PirO2^)qnH@)lHb!QQ?MQ}H@Cy)%6ejXjaPzB#^qSB!o5mf0DM8QF%tzL%@BYi z$_-goIV-2K8$~5?l_3A!yi$^>=^B(9)rk>Ug!UtGgh~ehM&4|^(2+6l*x}ZeVkT;( z`omF^*ByqKoFMe=uKg|j5(8Op<29*b?$^%q4|g(GX1#vA<2dZ{_D7Hl_wAov1i-12 zVzWt_w16i)s%sO~b$DC5-PRoK8df8^fj*Iao8`SdzLWZM(W4Q)Gbmr^+dFo<*-L&o zhLCA?md=1!UD4?cn4-+jgpt3SUBuV)wgThSFqYh{6w74~{|IQ5zFI&V#8Q)k?hB%x zEG^?SC3CY2H5nbjYD1nFlfzj=A~qSSO&WQ)TP7N>H&NF6FB3dO-sH%S&oyvZ1N3v@QWea@)ND~H?K$P9B(_j*)w}QU}tBqt+1PBiSq@D zvia-rw3!Cce?BnfidYga=HiRR>OTniiFG{O_a^U1*+=B%vu=Gdkvm`=SNcc$Zi|mPioW;n(LV-^|&5mq_;R8Cj&4tdt-%5B?GW-YHT> zqhyuU7RX8IB3$|Q4@uZxap1E%9Gum;KC~eS(J^eK%w^ONK2vE#udU6Xn1Gx*_TTE- z3Bjgo0hwnLPbG`}+6Yk3qBs=Qyh1T1j^VAc_5Z@vb%-O-kxo*{Oiv|xdML=(-`RaX z(Q^fW9Xdc*9GkR}LAUC+*{uFQ$ltoFk zwhPLg-PBU(4h>U|#)cTShwI~L8(Y1q}l zZP!ga9xs<1Ue8`Mwsih|FU-~5%`0@QB0G)yI&kuwKj!jp5?qLy#*=`x-sc)%%7m$* zZyX+&!wFnOjB@O(ZaR?@4OqagF5gs7k&C0lTYh_N#!6H9VJ7^xE_kgB*(u6>SpGJA z14cCdohGYm3bW=4AuY2(L`5TZd2(|Pm<%1vVb8E*VDCq;JD+{*bvwo1op!k0+tMcp zoWDC{>ls6E9*UuT^SHzto2`OW*bytdgKE8N9g`(>hz59!8T z#Ov*d!iYZ_Le3lsJhI)KHjOFZLRp_H281bpiu!%-WDrv;Ee$%7Ni-M_CjJX}9B-|5 zm=Q?ATym%-40KMb6e}#EORemKEE$Kil4rEqaB38o8jLqO8v)Z=U$D*ghN7#^^kP=q zGrle1qLh+#a6eR#=51Vf)9ZI1-fMh1VTm|&n4_SsmKj7QqdL>bG#aj5X{qelLN2PY zz=0Y_^{;Spg#P24b9-Z%6r2)fl3Rq9h=`dt8u%KaH^{i}(zAN86%lAV&jD4=M+oE{ zVYqINhB4(IQavNsay4xv%1(NNuEwN|5XTi7X8yaCF%mQ2Lw(H%f|VBE#7 z?^CLf{eSAO6RG)hyt88o-w7^I|--d_JU^4MYQHqnUC)@rnK-IAfag1IXr zLj0X1r^a^F@m0{H%5Qq9-@MfL;KmnY;Cy=k|ME8b!uW1;+kNg+)4F;m^!ovLpQ!c@ z{Z1-!nSc0k7n1!4>c<051T^FB092`j`=1ay0cL>Tx4Y-PFGfIL(`j4NX%eK^(VRk` z{K8tCk{_6dV>Z=RKTvv{)@BS|B*YZTg}8&{VX=lmi%rDa;xIXfnTbct`I)s4G#WOk zzeZyrc`I98aGK7_uMkfe!GGgH-e5RjU8nMAwJZdx~gXn z&{Q%=>k{z&O;IwZufW#7s4dReat3qYVEL{(dk^aVEG88}u}Hm5>3^@8e!uJkHBWt6 z;Ky>@w}4>!=D|`AG3sQqTxB;2O5_^R&^P2*=&ST|sxfO)sM+$YU^oqXH%sdgDGOtS z2yfG9GsH1K5&!$1a^c4319+7Vcd9n9vkjhuc50_~+a1i?6CWDk(sty|X-_;zC#Ipb zLDZ-_>{E=W*-L?C$PmjV7HSQ%I3!YyDQVs$i}&Yz#z4*=yJyd#0Z+eRXcw7gO>Wm} zs9$_ocubj3*;cFU+JXF@kkx7VHhl2Qmf^ZTl*D_ETk18LjL^y{&p)1i#u>q~F z!Cw#nfg$Ew zk+6n|di80VVWvgLj&^|5N^Ko0-!Z1guFf4tZ7$!|j(=f46q?B9I~CRNxZ1`#NNP{fJ`5-LK7P^^1p zYr0(n8|_m6gCvsHdDg;PF#e+uO#kfs|Ld?lt{iumI3~$dYPFU8Kpr#gB|D{rytb$b zm|Wq2+2NaRJs-R+Kq%1=yRzMT4Wf>5+>k&9;ve3wZ>R;>K_Pn*#sg0AkCk&`tBk_ZDscgSVblZpKj-+dZ;nvA;O54<8 zFKo)rw20e`Ve~M#v|L`v?man!v(b6V+K~lI2Q?0TBXE9{LluF)pyLV8lKCbvu*YIJ zGAl733;kWvco}`+KUpztI#kMtK)RCSKNe_P9e!7T*TL*t1)>NAOmW%U|8XGb?47tG zeMX^gT>UfUclkVvJnFm4z5W9yUho6HtDrIG0j3?NE-os(GD_GMpbh zo}iCe1OX5BBE$1|Mt4oA=BFIqyu4IQtqq?f4ckZk!=7$Hp(>Y)IkMc6QY5>6O!Zlr zKhDU+!LhEe`ggCG4vWVRlqxwbF^4|L7&x>98N~He z)z;!GMps>peZ)xE{<@tjb*tehmfVf5!|bo4*YGF7%qdPS;ro`f0A`FbTRwy5rF=Kg z&%$?stNfCmo`ROVeb5HY17bS)Qp`d8h!pCR)#l{A@63c!`6&6^$k20>aS)QtVQ%|9 zdHrEHS<`OpsAa{o6IS3VLnafVc{)jTZoYE6<3!|0uZjlee1&Dd$r2lKDjPQKyVtOp z*?_ex4{t#6GBX;rU|bP3j^|K}04J*Mx_0hOW=P362kzpgHd~Ju(qJlTu&vGzGz)V? zgEk6S+E5-0djpExc)7q)+0d?Wpdjp6Z=qkY2AtUY4btgSaE_xOG} z6yE2zLVtOj`3F|>7DBE~kC?&PRjowda70O_J&F`7dI&t-w5qjpq>9b}OSS&^Nacq! z>ZJ$C1Ee~oM!auz;Qd@*1_Ue93@csQG!!tQk> z-M$QuR;Mpv$Tt?+m%XEBW}O>Ve1HJ7d8U%XM{msx#$0QVPArLF@FEG(^6#nQs zr#PzbqwH_Z|BtbE01l>k_C{mdcJc&IY}>YN+qP}nw)w=i?L4uae0l%hsZ;kobe_11gh%ydF3(>U3 zDfswaZ1l0$XfQy-n0BeXXbKs>dt{|;-cq?ie$_g8N{nQ|#UsFJB^MbqYpsyjQXPtO z(vYWYb~80F)%t3N>)#>~R?7;!rNxlcTM5lvEW?w?@p%zItrh~z1?t@=&72bj`Rh=u z=0`_UGx8-Tu=aqfl~8HVVBb|qR?=QQN@~w$Y2CwU!7--ZOnFyQ<0$?psKFDBNXr${?&I!Y$6mTcg(q97fvC2O!sd(Toh3gx$Yiy3&fTpfPR~qlnerI@ z7A6N=C?*>f!xmP*FG6!oC>x4zE^b$nk`0vlqWdsh*KVjMGMO23jub|Bx|(n7iak9me$~%>6h>M7p;%44wBPlKX|hqu%rXS`nMFTUq?^0CUP4e|J5_^zlXVQ03KEI#qZp%6r zj6OqEyui6>M*nR{dVPK-iIIsY(L)BzP8=*8gT&|4mq@_&by6_E_-k4N-8NW{Fo070 z1+jn0CO^7-M z@f9y1qwU|Jb&f18ipM%jO6MGcXP<97I6;QDk2@BN-^dW;OJF8{5gUvT@F70F!z)`N z9JG9Y7ChHd^Ue>JiEf`H?YYNhuyiT{ClpnLx6g`JHs&SGMU)RzdHu0rAW!u5@ZF`V z?YO~$=KUP?1+2rBIJw9Kh(xf)MNxjxVL4JhWz*Go>1LLmyfj}Vp&*m2+j{~;0x_0g zWxF7QBhJOuhX1p2K7!r zfpkqDyFxsIy<%@`3TrO&h+ZBE*-ny0SJqZFj8K7bZ`>7Cc3oGD?eoxXTsNSJ9(+CO z!_PV=;MtoFF;iBig2^d>CE(`x-9QOo&@`|rtL!w0D=RUt3rgRwv(6OAOgY_g-9_in zFsnw$4Q{j#)bEK`SpG>g8UgD`UO@~J?9*h;!^fgJi#v~zB~U7UH801$ulUGF}Z9z3b8 zl74F`d~@R~qarpa?lA$(J&7T4M~;=K&^etq`R|IedoA7AhoOZ{$D5-CWun{8_b|Mp zOXgT@>a#QOk2ly=Q?v%gryX4{7tVoB=!Ri8_s0XX>l+U(!yFz-%;&Rff*T7O9fwryx-C7 ztR+;CodY?#-OPbaMrWP;tpuOBd>~$%vg>D3wbxqcFX(j-KhLut*1o4jn|Z#xH@*Zf zaotXXIb5L)`n>_mS%&0W>2}|PYu7hsHdS}P90d!neyvVprEF#(Iw@Z4Qp+wsqDU); zAl8byymY1TpY@2(`qA?vMhABnN(7GU0aQ$4J~D`&_gFNocrC-dLsmAsqBk zIemTvNf+Mr#R#Vf`Z#b7xM$WUar1Y&P63hvp;0%bI0 zu_JN=6&Rlv`iOefCEkUCZJddEnFodC?tzNT`1VT?BFM{^>8WXJFZyMfU@igwpg8oj zsWZZ(R|SFO2LVJd0HPlUVkfW-QwBBxe=<0*pO7fRPsh>`HgkdtxkGTPIKo+CE$%JG z>iU+4tnF2u(F|S_O}vwahjw%@O~=(A z0zB1TXq}kZ*y?(Dgdq|oO4Kwl#Vx;QHc?JbW|aUi2P>Ck27jUli}c#SeugWhsia%L1c5} zDRNeqg*RS^B){_mju$_?ky)Vd&#rO_NdZ~y>p>n1x&2V`XSu-musOLDaOlBdkY@YI z2UH}Vr6Na>?q(gTs=HA}&@XY|&6xP+6$fU$@-0UU%skQrFhrMwd!qay82iqI6wCA@ z`Ebx7lPe|vc+s*~#0s79&+tbHbWa<^V?N@D*JEDd1mg-oH*255!%eMkM`}FJzC{Z_ zb~@=Fa1@CZa{m)QUQ`!PH{4tVwvL-Gh987Ru1MlPBp%n_WugG<(>=Inzl zo;D%0_-c*vBzDqTZ<(j=>mh%Rcf}P&G8zx_6?1<|C4;|FHNr!-F|txyC^UX~@~ArR zH}Ii(B)V~UorTl$eP;EscVrP9t0aRWy~G4)IIv!oxnT$vzI2peC@ba*zUr|_70u1t zy@?jQ-9K0Ghg@JGNwf9!8-crxf=G7QSN*AG;dP%>)QL45GA2eAoG6;;lZ3?&u_N({ zlgA+lPJv>se>S3C+o@+1Fuy18c8xW(p;(-wEQ#2Hk0aVcAD%LI9r-OEwHTziZgy^! zxI_3UL_LFfJHq3z(8jscR@C$T0NLGJX*9xA$oDug zXMNMSwb21eqbu^MhO*-A5btlFQfJzI)zE}P==MS5`2m*3eZv-Mnf7$$&uG^vvafXc z)vLnfccEPf8$%b@_}RVqm!GnJfB>q_ws!yT9*9g#|MEbTGPW^wG9#e-w~yif(v|sN zT}8~ToQxd^Xhp2_os5Ny4Q-8#VWDXMiy=J=6Z5}$iiK~guGyflqkIOuf%6VTZgfr% z2MMu=5T}KohPd-_p=3*tFG`lo>%YIXw{|6&v*sgBP52Qs$=1whd$s0dTcx(1yEJCD zc5a;ik~KM*Qhrz6(RRkZOOXWf-I>zas#)g=h@!i@I#YCT(3#R<(%rzLq3+nKAdL+n z-itN0?Z~|1Cg}WXA#J?x`CM$y{d4wEu)+LF+c{O!4N;nC(;f21xUs{3;nt=3a!j*7 zNKOdK(!!uA1xuNT@;2^PzP;-%06IUpn23$hE1rE5`s0<;UtocKQ=iu6^d@oAFPCt zRfSzF$PExVUf;$0TjjLMBDGP9_hZtQfIGI&zN!^ za$p5T)V80D{LVj_n@D=DNRecRc)Z*my9P2&^uA0BMkW1t26}n(cN7=5JeTI~u?+zq+eq3TM|5A;&8@PB11w2npL!@CRU7Qj7n- z@n2dd6~2XWEua=BVMh>u;?_{XuP7W>MH(FP^=ktN+)ptp*$u$qiVe$`vdo)Tf+Pj3 zOTt8ed@5pGH7qxz3GCy0#ueoPrw)Y11AL}VG%7-vm2srrgHcT&lqb=^Vt?|w<@xR^ zHybWbK+YWh!dbIq2)DFIe5Iw@t$Ev|+D*9A4@pY2aOaa($@pD68bKv)c|s6qDPBzn zh7>0$6Fpw99CDUnp^sv4b`>_oC_X`f4yKslD4Oo@7*@?7B|!qo~ASMi3y$mjxuG7(PVJrqqsS1oY$1 zHEWyI(4JK66-zIOh8X|o}=uL51 z3%+2QH?;Y>!JDec&~th{1dL{mfTzugNJ~wo!d|H;UBVHqrgGGQMh6l-S;_UMfpTR! zN|}9pA7uNS407U8Ox`IGCi5UoLPP^ny|<<*UnRCL)*}d*0|Sh>NkXo{-MJ6`P|`IY zvHxK>ALkNcl#&o@n+bykXZaU^f^j$)1E;5w!EHhg&jm2GKFG*P#tA~nP7l6T`&ZrtU2g6 z6%Ed^G7YI-jzbxW5thpw%r` zR(9)^kzuau*vt~7xr6!V-*yXW7@TfOtj?djDEV&RsnK!E zimh?Ld$*~+TdRD!K4wO{e`~SPIjLz}ugb*&5Gh^fS3vLPiP^NS9jq&e1NaSH!Fsj# zTlrroZxn4!M({JftTt+~NwQpbG;TnOWu^r;ipiLCj+)DWEoOICp6eI;;*RQu$u0Xm zx#@8eL5ChavFY9jelIHR>I@E$)ekrdmUrMfI`QGI%5QQxj?YXUUe| z%+vy7g!_VG0Elc)75py>jOG8o0%K$SxB7C+0_~@V3gkl(p8KlZPbs z4TFPRjSBLsoMCSiWD24U;-uKiv{x>l5f~DMu!Z;*6Pni~5g=igzr`HL-g~s!=~2Xc zL5@6tU&}@%g!*3uW&M|+|D{tI{)b2cN>FqJravu}9RJxl5YW^896ShwmHs!jZ2w}b z$WLIRZ{_%p)|Qp~@1m{Ue;4`175}?zs88?{h(IgI|DS_^Gy$!Qt%J3`)lZ$65&^A{ zv5CI3mDB&dX2v!~wgwikP>d|}{~A!q-Ol*OUa+-s5;Ar)bTGGbvUT|B|4)UCzV**3 z4MjOM4Gk)O2lM|h{^x{%fUO&WCIK}I3o`*VBLg!5!%s-W&rBIv3AF#|Yo%}MNWjSO zk7)XKV#emCW=;gG^gp%-Ex)6ov5nJzn*LD#jQ9`v504*G(aG3ag@B#qrzq~EZ)I-C zZ)0j@{Er<(tM*@9nCaPmsDEVmv2=_X2pCxyerBWaKd1Ol<$q?&#r03~|1YD6fr;TC ztLVRMBzgj71|~YDe=jq!@Tg=+IaF1&kZ;Fp_fG(Md3(XYPrL`kIeC-`Eb5WGLK#YB zWM-2|0|TZoPM|9edr3QB^dzyxL7`1_l+9;t`yJ-Ft`lG_`NCZqCtyeU$c)7(MMs_N ztFLSBXQ$rUt9EdZJR&lI0?88_>CAUiR{SCnAJuJc$`V&CALkhbzja{cZh7L+^KyH1 z5g>n#yx`~Pb9BavufL{za_D_2YqmFOJ-6wvl!X~0TU(!np3m%Wt?&2%)-IL)DW6Mx zOKFsi$v#z1X5VRhg}mD=MesMNSd^yc{q^$Q^xp42d6nbntAr)br))dbUle=~u9Q0X z^PFTIf(k(q(c3UVMlJ_PC%-0Xf8lYGpvBKhQf~|; z)S&3wN@5f97Z(@T8XRKRLVGk9iBUWrg4e~Wc8?SX;nGBvLNcY!lP7X1QN~0Z>}QZr z6xYJU9~c*85iT5JKAlW|u=|cVT5(#1T0L9IGW%A?sK{DYdzZn^8#K9Dcd-a()>1F1 zSYobITsEj+aIv?^)mEvl1Ui>q&1atOc?4~1*cP@fah}${fq19)D9F05;w<4X?N<~PRQbDP?lI)y<%LfB)_1?|~_VEBtr7uFzJ zFtKQ0SV#2_3laCHnM~3tL@^O>t(sjhxnPGzCl0G0RM>AU4Wph}T>m|aaCmfv9dA5Z z8n@IYfXYZ8Se!~R!EUTxo4(LmLuh~pYv`%l)ZgFf0V9mnOC|W-6b)baE!RS(ZUa34|cGk9s zQq0OYuim!9Dr2Ko&RYKPS7a517jCW=jv7g@=D3@d}H8QNPFUeYf z96F2GU+l)savwMy7WG5J!rk6`+?aAD}oG@KH0OfgsIj@+P>L7res-Ug5W z9)heFWublqAWdG9$&@TKLx62YqvFo9qD^6C zt~=H|Q^|NMRzt1=Imfp2EB?DTjNa!wbAFl2sQ%iuiN_Af9^78(AVN`WLG?@B-C(+H z6LAf=apdr#YmUuS<*DLA$+p5ZoE7q>hFmjKdjb3UQ=#0>wup5A`|sJ|*{S(~`H}fq z_)U-}mPb|&M-Cr+JATJ?=ly2u=E{Uhd*kN&rsvjQ>MP=_qbnF!QCCk_PS>)HGncl& zz$b82&?B%5W#+Dxo`Igxufk98cY$}HcdvK*cMi{tPg75-%bMk7mIW|OWtCu*2nS?U zop<~P=d-}pv=*AZp)KC`XZ5R^t`ke&%v(?6>FZwk>}|YPe5yco zTHl&?UgDwebOi$nBs%pcAxaxVC=)`+$U3YE1iznXOU%;fie0oTriZY>|#?u|95L>}^5NZDC(+k?(0S z{uqAzVf}hA{RV?Xc=i|(`WXIu7~%4xf6StWFg}nEZkSsLVUg*6fV0KhNm(PjnS0Efs4qc08v72e{}=42llIaKFIQ$NapUKfxwB2L`+C(PKZ^OBn) zR2Hx_B+r^+mMianC9=$ltOupGNrfi~Wtu}<7h5-FQ!0?I^K+InfXbm(MBp4MFhdn- zH)U2R!e;P$n$cbsemeQVDM(iY!x$-8Llp=*rTvxD_6Q9)gD}oV5N?aXR*H3Uh)ax_ zr{|FQbxM-0aI%95l`qGj1kWyca>}Kh7wH7aSodeW zUJB$<)G=x3As~Ck-kq1KBqqEVCe=`uCQ*e%wT4XVY?CA?oV|Ex8AXAPjkBcy58UF3Vpug*`5J^A;91N z;}z8SLXLlM;1wWyN5L~?`tm#X;NHuh_Kvh?viGLeE4cQ~_QC{S*O1oK5$@#9xu>7? z6>aC3Gi${46>sNc=M|9m(2HhQ^dl|zM$t!v^^}bF1pOo72gOv{s!t?djJgg~(>}~b zADQKVuBRVRDj9!t`c807*d_TpZtG~|4tY)5C&<)E^y1`pH5$|{kJ5qtc)l}D`qGSK zO5U3wSVW)GTN?h9aO7StXYkKq=^f*mpbt&&E(l(Kp&LW&Aq7`R=^azfba>VvqZ^a& z$hSf7_#aD-g_n2glkHKPF&p-k_@vE2Bx!5&phK`|g76~|YF3hDp-4H49mo}%Fz?Fd zpA_Ty`AY>DxC!JEXD}6pX1Q3$@C)e`p2x08Nj&$H-}hYYwpZNOuiLinz0aOIJI@nH z?MgI>6Gu?$L@N`p4uzW}tP{)*)mpzw$EY1DH_3LA$!MG8V2}Dk)79=hyZq(Fh72An z4lWPQPw)}cT6I3b`1=X-_4g2Av6*cO)-x=ohzfNqwu#p9kT)8X&sprPbz^*swcp`z zIZ3-RR@uuXR}N7`En2U*btKQzw<}$9qb93*KHuQ&OyIq|XLkt&wb_}h+-$b7iSMAH zM0;MB%jOIthGRTEKZ0DzWHPvn|2Ca5noMVKn_hLj4nd=Jpi}EKIIZ2GQhnE1IFDsC zpD)|4wwd3jRBvo=^%$PiYg-OjJ1)_OTUuDAMrO*~>ZF<+2@B;Hq~%Y1k>z`A`$j()s2b@b5s4Mr3J ziYCOR?udvn0pPiYI0izfb=7*h!YGaWE6^U)Q%-3mKn!-jYHb_C0I6?9)UUV)lSXv8YS z1+1&%9N-j?m6Jjsf`ATj5$EW&SJ4UhKL=e|0P!q{t+ zU}=xx+pFt~WXb>*4#@xMR`*ppHtSK3BBiZb1xtVi(Gjzxe|OFsBqZQNWn1QX9i1O_ zT(}tt7n%dxgdFkr%IB-Fw_@p>>^T|pBH!`jbV9AT3}6QD!~??76?pfncvSOD>DMuR z9sOfqbi}c{=I)Z}y662WmM73djwEWVDwcxt>xBG1SvaK=uk@toglc9+B#SXkzipBX}3Lm*I4a{t8>T);EUTR*3S{dE0T^L zs^GT%1Ggu__E0(Q{^Qq|Eh13{RA(4EWLf;&O@-R;P#lz*mJw=g&4?%2iYse4ckeed%1yJGbrR=Mb1Z_pUJ76DoJi z-br6Xm0cY_2&B1!OpM=mgBu139kN&%mQidDK;#$kor{?*t zhKTun_@56;S2amZa?Eax7hb(1X>s)iIrXL#3!0lE8=a&#^;FuUdy==?^9qk=^0k%|$*kXG0V-jFNO1=J zYq!QiE5A&Wan&16q6m$WtRtR)4#5z{-DN%!6awR+lA%WpbJ0 zFa(KaP*M1Oled}{f%!aZts&yM$~A*>Q$AdlbzW7PFkYFYM4Zz3s+=<@Y!RG`uo;bd*?-arYIvve8!`JkJ%r|z)&f)6Q30pp` z_*{eXr%rQ@PBm@q@@L+L6-FM1z`deUcDqt&4hP}RrCqUJhXVe!5jFb^CrgM#w|Cwf z--2KheerLScx5WC!MXaR#8mvO`9IAlp?D?5X?Q<(AwIG4dCZPOfyk=mVihBs6n-V- ztjKu@_+m+$yxjwHE1^oWGF2XWa%+~Tndvyq)83r`)^W|-v3WC#Uq<`TDARJW*>DSm z+vrYL(ARV5@G&8KXhxGbXai9rFQeARwZ6i3%8tjjIlXsnEe+Vv-Kb(B`{&OiahSO} zrOLs5LpDcdD5jtW>QECjB{MX>`3i*@MK_4LL5&Xz!$fAMdGZXZ2$#ym|bmn%9mH8hSJ zM;R7~tHF^3R6{Fo2FvwjFQ;<5o(}Q0@wRTpOfZU1_JyDxIL2sP^+X%DaB8XI{WJdh zKpbDsUwu9pNKPlBNgC}6GAJ|3<`iRH$U1M?tP~bbq12NdNbMOKJbHRrO$IsCm>U8q zb0P5j4O~4oanfJ_e;=NYjnP1pdQK52zX0RNtdOb z3F%}qa=_f{<%626x}MxC;gmTFPETFhET1rYn~0NpkyYM zkU&DrNEzu*SP-F5_C91E10kwe5Ab4p#f18qGn_FtrWTr|WK3-)W@3M6?AT8#>J_jcMo9 zu2r%;eb~@Wdn73+yR`0MeFcU2>!96#q!HdPkrp*ZCE6tBF|Z15H`;R7f`y2= zkQLv$xr+w~kHZXZmdM#d6HhcOV|vg}z8eE=&oqH{26lGw_g}wGbThMrKp4CSpZ|CZ z@nO~2_iR?Rp6VKd4_18vdua9cfAiQ$f2*Zp?!c$p*ZT0`EnQQ(E_G&%Qe=&rqZlB} z*hf^<`w@`yF^U25bF}0I>G{c7I7&dMgfVl?SO77_{Q`~&OS{V#q$33VO&n!BqGZ*i zo7d?mc1$J$nG9($#~9vW+;ZuP;V05F5z)t-)i30@a0v!-lq0 zS{k1$GgPvmNa2mOt?y&KAIC%AwS0%AOC-X;UL`AKhK&5jtKHhVf2;8Bq(jsape419 zz*qpV2Di+~7ntkwWsScTt@S_ys}$8V*H_WQ)hMA(^AH*IRS zH9~V#$7_GQ)z=M$>5k!$aNAo})^0>NeBvc;%U zD55;e%uqJBrolWn8KA2TPtWC)(PpN*JP01AHf`)U>8ihUD=hRN^2pfc=p&Me{u}+x zyT`63?Mqpn8yrBOHlRfHB@3r5Kzbaap18Bu~2SRhr7uM|g&cmn8n%3)lk7;;~^vN9(MZT|JXYK6=u zo{m_~G9OWFm2@e$6r~kQPI1;PBDN|~Z>dC)QE?9ew*Kk)l^{RyfQ;pVM1&dSk}?bE z89$@(nq8U;fC~&{Qgsz&=>nKO5STu1kZ7s7uMB~Ttfu^Rb)^Wgc%a9>EZ`%ODh7W3Xk z0-A6q!QtP@LrGggzoEqR@=KV*)z3@Utz`0Gb&8^glWKaAkT@ONUsHsari;rTj}WOeMUhf zF~k!KpEB|rl<-d6YqKWQbQSSVK|Fkek&qgAp@lbDIPfA!L9^w zP*2waGg>9S&V{EPr}UqIy#obL8^$ZDza4OvfLb|;B*?k859MbPbQH7;K&yKRxR!V2 zpp>;B;1>1CpgA66rCm23c{1r6E=o6mdN9^vVN5eN{Pp>#lq+%ty=0RUkE<`47Xs;= z3;P%9kg-;c+EC@m^wjnvlYPen{7#FY*=+pZ0BB<#1v79Q*5tR-zunB-of?Fv4a+)s3XT-93d@soM2riFX5$uAE}8IszHF z5wuDca)LV{5BFV&h1%9psm3_sB*~G?Z8dG})^1B99j`y@**NKX9yjwd4ZZZgKC1UW zsAlvZ1v?zS25f10nPUX;uH}P*0{c3HW7##a`{r$-zx>5cstw7zraPQ)4LYsu+b3C#RrJrz)Vk8?EV7riH9eKY0-=H1 zMH|3S=Q3p0r$T|#EFp?u)<+gwkPG0~WEJSJNh=trqQhr$ibKO!akDt<&m(6L>2uaB zF~GZp>-X^01M#)t@X`xs2KHjFBqy=6wJ%F-G#NKjR0idgl6zoWkNaqz`L=u2dclzF3IL7EZth37joZfJv z1{xUMbHb;?&~$3bgwbBc)&(5NSO4=axT&+p8S(^$oBw7no{O}p9cB|_et5eVmwqO^#_TD<(y>HC8 zA&GCdv}r2G{daI8>qJP|DypJ>7_7M-(aWQ)(ZbMBwXm`yT30dGe6r__qz_{SNsKK ze3T*g&>dG^Ti0vDYfIN_n^^8$o*-hVO4X((rOMF(xt=LAQ-mcNfg06WHYI($Pazf!zEIYH|hTLSv&b$Egpg zdRwG*LNH?Ljvp&!{7{Nz4p49-b zCF-jBa!{OE66Qo7$p~%j6B9o9>fY8df1jP3Znbn1ne3p9%(S^EqqZ{Nd=r`Vw39x1 z6@a1!xvGV-X8gD z4%sPCc1bu2k@61c9mqb}J6X-N7Fl;hXT;Z(<4>+VHY^$XMiBG9^r4MmW%(bcL=%-+YdPvP^k->r?7K!W{36L@^ ze33g@NBqh!?R5c3QBEyFE^pxGWwS@*sAz5ltWNOKBy%;Fw*(HDe9;$UE#PA;upcA? zTN(_Zv9UkE1YCe~WEOtFmWwJuH>hWMAud>|T^HQfpS-ZL-<_A4h1Wj$4{cAi*Iw_F zmD08Sg8RB)`REPTd>4E(=Cb!K=dC>78&qK@$q>czhn6b4pt+SN>QQu{Qt}G|$e50U zhbMJQ7ZM|s?$9c-EOeQ;&JMkInC=@q`x$kzY*&%bTFBe<#v+I)q!%>EQMX%^qN83 zd`6+%D=n%UUDP1YX)?dDBo+!EV5H4fsY~tGlM$=M-<1v28Bk^OW&_@?+peD1H!9{H zL<3BQnF5GHN&p3);GLTc2t1DozE ztQ$2X+}IfljiF%G)}wMp9lf`n*t|bNZP8efa4)PL>Xx@DUC&lrO&SCS)Q~DrBQ}GD zLpPE{-?Z&2Kz%qfAi!8sS*k48@{d5+`)v9< z6U_stZjaS))3E5qoD1=TO{3o}S~Bchknfj8?#UHyF0Ck7dkNlfOP~Nz1;?Rin?=W1 zW{LAXmfUqs6L8Qb$A+NR>w2v3O+D#B*@HgWcS z*ONn~xflKix+P~x>nZ&V^`#YJ3?>emY>6X=7}s5^@AkLqULHp6MCJ%6uKOCPR=gpF z>Y17(?~L^kUc1=9E_epL!5x7}ts?i49izR1HSNRBXil z5ZG}=got+ql*{3`M1)rjeE_2hA1l8DQ{*S2g5`c6r5uf7YwdMur(;q7S>m9MPyRb8 z6)l@@mbB=_#8Xr4K_pH<9ZAF>x&j_mXdzmfR6X z+b3P@wy!zoAlF|J48~%YY#m$P7GCTNLr#p{QoM}gQVdLbC?&~fdNSNR%)^s(RRaXi z1&}bN)YVQVO?7!l{g?GF(i=fPnf8-1uUz*J;n_w{gRTWdT=XtFVE| zQDF(ufAKNj8ZPbGb=Z8$H=ng@WFo;o#jE0}6kx>y_&PNHoz`!*M){T+CQuGgIOo}w-DiRCNVZs$eSEfA7 z7YNVkm@5ou6x)=m{!N8|93he+^aihh)#eR{dhwkrP^nY73T$w?mI+Gqz@nw1mDOmj zQi-sWSe+lZAHS3 zs%4K1n5kir9$~Aehj$xxks`$B>L~jWx8XF~;a^6``aBm=h{aqPnJ3lq`!4R_>*Gw7TVgKtAYIU#MC-z+0lr3DngN8Jv-cdQx4k#FIyYB(uC|Q( zjn}l*K|nyz=d@9Y!GaMe5hG$3Rr#ucEWGuA3&9d!DrA%yV)%`u3@-d4%45~6EsD&C z!x@)~WJ)t)$e7dDO&E$6EL>Z^*R*kwq3~3=Q|Y#&J#PuVz!)*v zqAdN&lB3Rw;j*M^tdAOlPDiyRjCQH*(4)(gOoB_xluG~;!!Rm?<>v1qGk$3;ZRxh0 z6kD%oEN^bFwo%D)b+~MG+E&}}B3dr%xK+2fcz*Q7ul`vvO%cYoc&pX>gZ?CQ=o1Pc8KL)Aihsh0;CwGo)!iU)F!WVzFnv{5R0!pK=tlQ!7MXopD z(@e7O$7^V{_niF5N;5vLTIaD?RXPTl(g9c1b+k24$9=!jRBesU=hn@mY$ye%O>mPt zXcuw8R6OJ>0~$uw5DKGWI)@2lW5!&4fj@JdiMr90m|SMy4 zxZLOWE}!dDB-_IJ{-)7Z@;VO7=GKMI6}Pwza{XeF^jaA5TyhSbF*y~=R#Y;yVaI{Wz$c0IUG ze{;~n=d7fWg6!TfnWf(}7Y^*RTn5b`lSEjwP=ts=Fht@@CmqAyUsFSq!Ea`fOO?8w zpnvuJde67wHz013Eb59%>2+a~K%%PqLh}80IL7&);aTUbJe`Z@1l>84hAARY%hORb zaw_F|)4|@?`#xDZcXJR~dtx0;Rcg|~2z~mrBBzHZ4zX&pZSmG?;l5bC#%b-8I%9Kg z@#PqL#JtG;U?%~`8or@$x^Wa@hipQ1Qh`=BM4%L?B7_mU9&8PSWfa?=l9^2Bh5(*L zat$Zu9Cl&V9QvX1A^UC11B^fBYzh7^?OE-a^P6K4D7)QQIO*6QAQ*Riq&mCQ1^_MI zf}z~?>IVDZTJ z(Sb{~Ual5HPp9iDE$002-9@kImpEW;wn(LlFaG;DsWp{J#d3O$1{84P3+7Q4xCs_y z95=+4zzC}~I8OnC)mu`|7S+mdLs`<0w`d8K^6tNRSgM%G6DIh`K&RX+iQQm-WA!VO zMH3+IOeC}c7-zLZCK99KASjX%=O??;PanXt`7HsW`|V_mSi)q4P(@^9(CLT<#s5+s zgRA;YHvbwZ3QA$#i^0B+S%fGdOng~bU(ZGkfrC@7DZ^Zmc@mPn#Nh01u~}h30`d== zBX48;0QSn?zf$aizJDNj?i2u&jAF!296WmjoP$4%HdJoz|Asu|>> zsTO4dE%MVcw~WI&1hZ^h{LQMla=x6g5{dmAyGnDaHhiP_@~$!kc(_&i8v10&F{L)z zx6#Wq2I{+hP}?T_gq=T$gm|7DO?^5g3a#u0ht^?@tZ>MPVLV~bo-BK~_-2%}O|0j< zAhK;b?#5gvMhtNR^R6(A;!$>Tb_hWhKikg+V*wlYV(kZW z>3UTB57N^yh;7UW>f8(J(=yr^YHv{px9o`*Co+Uf^@XMSl;55&@BS39&P>PtMxNVj z&-=Z-*)yrWrgm5epXZ$iGx<+OOP9Rd7-2N1<1mc*;{v`MKzX?+l_H9u4|)VDBuS(i zxi1SD&gEoC9#Q;vm>DBY#8i4AJh-1ynz6^bHj830`EXFu91(OQ^4JgDV2@*ZGjsK` zzAU>ec{p1qg+O&&Sp1gQDIFAMc^ zRutbKEqx*-(w<&)^=V=0P8$7GcX4O@y}{%_y^ZP=0k+&QtpEJE<#B^UvkrN7U2x$O z9#cx+veTt^z>?fZ-89D~f=A#oU?Y-QtY~^*nJQzz@SjH54)3~H;oa+cKi_<>J69%=)M%ZM zmkPhvPJmFoY0q%C7yS1nAgv{3;g!$sX9z<4`5=(rkYayW3F82v<_S@t#K6gOL15UJ zJ_Hr=KA;$jgZ5;_OAGW7)}bJRkx4i0AkjmrjvFYFTH2H zgTNsaa79l@8@F{#ckb6ruf3nRU7?2UJ_W`No}-RuDGj(+-XwQ_-NJ56V64b%okwJW z$KXrDm}psqS=5J~yQ1bwZdNx~cCS4nKcy4o^#liare-D4GvqjO>)qMCJBMFhC`$Hz z#mtj3421w>n1Xpd(VUDC3JiV<5!#2W$|xavhp~pi{QxSg%y}74i`iKC(6M$sp9-#* zu%BP=kw%yLnzW?18)dWPcb74k5j&2%$7dB&g9o%9Nr_K`DBO2S+-<)pJyEcuCUSXR zxx=7gKfo}w0#TgAuuQnGj=t|;jZaM;93?aw=n@RkCRqMO&VeL;XIZz5&q0&`e`y$d zJo1O}LQG_=3v}ec%NWdPKo#74#n|@(PTcG@$Xh@R)2WHi%;R3QeMz0!l{KtxT1>nPq7#@AbQxE4dj~} z>FE)kffs}Ni91>u?W0d@E=RN4Ig605^-|ujO<#o_8RbQEmATdgPxui~dai>^Ay)_C z$-W~+9DmQSWce#usRM-|m+uG+5B&?LeZ2dF_JnR>>Y}MPZ=DEo<%d_aPQ=j(;zf}c z%jirSS9Qe1%;8H{RO*|JzBl|d#ibhdh3??{9=v3CxREc*L(Clh;;i6*vf+qP}nwr$(CZKGpPY;}xDZhq&yZ{2(9o{OqotJin$ z)w`?uk6qnseb)2Xz=r}x<7U>)a7??$M2iXp7IX@N7Pe*YPp{?OfO<%}&gjoQ{NNv>)g zaf>He4Y}{*4yyOuigMDw^319Itv%?*xfUvl@{V+rqmE`NcF>Kj832zy3y4M*??}sc z-*H3d9d&EO95J`HbV6rdzjX+ zDZptHL$;H(35OCx*s+$SXBV8&d+!pJAdO24?gjCxPiiMBcb^D%mlX%^>XME9 zRm;-Uny+J80#{&mnmsh5Ad4rW{|5duO6^Vd2&)}Txz zVw^F*Q4jcPzWgnUgLO@jPY>t1heZ|y(J`1U0`hr>nEY0V@TPU&WM8bwbb#(2+nSV? zkt+o2&LHo0+4PhHU~D_Em;ZtJ&Y!L>rrAnC&bq}f2xOL?y4AI*zuRA6<y+0QWcnZt|w&n7CZa3e_xKWso+KB)tS}$KevbNKi*xvwC_~d^o8ccARP)& zD7L40*f09Jh8|AdriZnKf;I%`~*TnuG0T1aHT-wk|PTfHyoj zH+H<4jxxC1?Dz61 zZV+RezhcNI<9oiEzV1Z552`<*iR1bIZ_USC|Icpb&xavn_xgm;T6YZlq@>zG11yX~ zxRW~2*RImOL7Jyt)AksYDTb{8vl6W9M6*BF1e=y7?%{8SLqjhakNJB@hgxcIc7ZOg zT0==&ZkIiwY$L_D)I&)OG#^q!Ss@6bo|w6T&=e=eW^ZlGF7bQK9FO&Ttb-L|@MSX< zco?!-N^+Rj1RRga|G5$u8pc5JC>JUgpTN3xOX^NsGk8nfMR;X0lvSuDx^`=fV#aOm z&Q!)-G>>U@qnHvVvRjw}38-xj^hco4h(6RA-AjZCAcmiz*(qj=N!3&0qRQImv01bn?6!?!s4gb-v**Ru#L6 zKL0e2I@6w9FoH(XgDTQPVRG9l#)qheF{b5t;hGqt((OEt41Q=iO&qlazDZssh{>>w zp(nyC`;4GxS6EFqaz`I0SyG2TW{7R8QT%)C{I1g*UD*)F*>fPv&D zNXn1wTz@$0x#5e`WT;Anm{t=qr)x>sFzd}|N$#B(GUDV#eC^z!|BU^+vABeYdP#Rs z>ZrQ@s>G>iO4S`A(>rJ8q|;!5@J`!nQ&)j$b@rUB$->iWTQX7n^YO)6no$*Tm5hlw z6ScWiYWm5qUe~6}0b9%&lvl$4vmg%+D?hdPJCDBumB|RDRXh*{!Ux^M)5C=`E3?Sc zrRgKtiw_a_!$aC1UoU>lTlkYurL4-#v?H0C3!-5tqj%|Osp9;b%Z^apQECQRMfAZi zI0p7bK@H8%vA2>)6RB#kClXx?`t+x8=B_T^Dm;VGMjlgj!myWSQXIJ@my(!pPjn(x zzvVn=3pw)X#R$E}97gNHY$y!Md$1Uyt{3?@Qmy0^wiOMp_V3u=INv^hFclg>K;y*EvbI~0-I#L| zOl`6DggM!31%TcJ)Ii<{>d6@{tv{vT2vmwrlhRRRRhnhfAR+O*`u|(7OtqrtqNlN( z^H&X`)_B$>-bS?~owLGUh(wqz2siBiG#=(|cEb?O!$T4;bC>~W*ZjHU5`bv(8qm8)x=fj%Z{hB|gtx#co`S;L|Pq z_ysrf{Gh(EwB;^z1H>UU@A*@>YxI(~q)_z3NR?$Ut^jE3c&da8|G^%1vzZ{}M#t+^ zy)|FRcGqk6Yx!IkZo|tRF_Fi%%A0875LS@@Zk`kY@%3+Ut~ChOe0OjPxjA!rVd#Ls6kvZOU=Zwa>-Az>SCp`lhR3epEBW61>YfnH|q`*Qj0uZx$Gmtz;c|&yzr4ZUn7tK zawSob6|TM3Hd-DDB4A8*&bqVpC9Ma*F@ROd85x*V{iUv9eE_svRQv=y0$MZo(KV}t zB$T=boKb}4CcSycm<$HHsbD-qYKnWSB_gUCXCd3qhdS$xh|_&?Th>~gQB|8CaUzzD z`_9A_;Pj6l3Xfk^WYep*(BKIat3tFisei<@P(mT7Xb#pohNfPWHh>wKP*X(Mb3sV0 zKOah4M70p^ayyji|0$vRVHZDqTR1l#o1v0JCJ7?*UTb8;HS|*DAw!!a>_`cA4BfG# z8R>;@DWA?Q0O1KRt3ZDXsuFL8H)RVH-DEn+60Fkzzp1^PWa}hYG?x%1g*efmr?cDW ztR}F@44d!X*wm^~T~vhPVsYt63u|1X5-O4EQhRI5#K{BxHM3P;4-}EP(=mQSl&em*HPLtiyJKisTpYGN}(XOqL_^YBjkT@B3=nru zJGWw~f#16^3Q|W{;qJ7xl9Z0K zrzqTFE(YTck4hUVdzY+kyqsc3_>Si5D5jW**`|{SxvD|tTFeM!onUX7vqG?v(zE2#J~g*X^_69^Haz%w~PgocBP)>K*6|vksqo5alY=2}e7-tFQf) zm-ys4h4Lz2BqC|`;^-9{MSsDSAGIXaX~>h(W`@C2fU^~-ZKEAgXJ2r9;ndxk`*(7h z{ciean(?Rw2HuYEFz@c>gy#$6^ZZ8N;60j6f(UUths5gIZlpxFCtdO0n)Oxa6oa1H z@*(7#54AqFt2@-`i~e?*U@9+%~Fgo&CI^gm0G^eNy5)=+vPSgg}UFa zJR&IR4GZV6(}&^psjLheJBFhH5~~lF`YzD|(QgbRf0b)*q8$foM5g}knOP4|7tbuz zY7E;8ICcG%h+J<+{r2Mq3r9Uw3t>|U=nYuH`-m3q6>Bi9VbSYJz-q*7V31i`69+cr z0L?QC-6#Y#FK_Z?B&0ahQwZnQ)*!JMbhU(5{-H@m;VJZ?8DG~OpwYG}Z!wCli;8mM z&qQOg>ku_*;%n;jX;m&57K<`k(y#TQ)W~wj*c7Fp(HGK->HcqiZCFU*?F(1>^gfRi z`Zjh8h)Q{04{t0jVJef5Xk^k)<$DDzwC6EROTalD>JVX9oK5`cL1``uF2J-Jrfd`f z5hD8J60Ygbgy=wDS2r+wFrKzuWr||@>JcstW|^KTIaICY60sADs0--X+lkn_c{LLr zgG1)T&#|#zl-*fy7fkK2@kBiN+xio72UH7jC!{xbxV-6#VK+!QCS68XomF{`U5k*= z6A1ENv`oFK@2ao4lnYV=q0xBVBi>21B%Qm;Uxa0dEn7a4lkcRyi5$~1SXD_CzzO=TLm?mvG zV0XUbBh$BRnA^9nSb-PhbIe1etqG&R?_;esMwMz%C(hw>Fp& z%61idy7_%&`x<`KGoSaTqn`Nw-A}u|Z9AuD)8m~CCbL-^<6N5RyHL~O9uLm?^)=_f z&|^!B7}t2_L_jB(x_P85nAMKM!7QhPC^I0o1FPt(HmZZ^z|dGN7qq%gXy!w}ffw|k zeI~-pjSpxnMdsA*v82&gz-lJC$+A7xh>SfJ5o>v6=;fsBRy|V!;;=n_#&isy;NWob zm)#Ynm5P=fVNn6iZ+Pty+wg#)!M&q$9;rbek?NXK_LOe?+8+T7LVfyF+r>X8!+z7z z@DHcm6{T-+c69bHRA`>A_L%|0&s5b1Hr=61bFocqAm?uE>3aqe+Z=*Se3ZVHiMu5& znb*4(Rb(?EmL*k=Uy_p@R@5Hu)-muxKM|h_P=KpLJSjAl8kvQ26rkmH+3uhP4AQg;}VbR5caRv;oYHj>i0INwW!PJu7*kiEAQ4c z7M_sZMgkU|Oid5jbhgyDHCDF1WIy^BUn%W}CuJn)hi#mb^+ zV85dF)9p#;snGf#x@DdOvXTSz{b_WnRs)14>+h9squpoSFy|p(%?i#@Fz){I`wJCJ z>vyE_jE5FB_Fh8AAr~z25B!altis5Qmr2oCRk{Km)4owH$}uqM_(>Y?z9sv0->Oe7 z73TPtNN==_xa0BbhWLqPI#^fPgK39pKqtDkA<(nZnqD}H$W=O;2H*O z1L8hlW*MLj@_ar`UZ~7gb*LHDWgcs=uG_I49~dii=JVXOKi0 zr&uTIIEu?okaUp59j16gK);swqa+I|u4Q{fVH%^RAu9rIjV+Rr8qrKAv8G=zi$m0ba;vd-C=hVYZ2>Cx~>dyImj zljMJBjEt+JlkOM=NGFLisFjQ>rIXHpsogX;<6VqGrjyheG)~5~(?My}@ga>+62=kK zDJJ5SRK_LMiOY?mE0dfaayw~=he8^3SjI)xi8GBNys2`BO0UwbldS8sT*hUWiQD3& zUM6{$X>&)guZq2ippNng69ycFVn^xNX}=v6WhX2+h|G?%&j7pQZH@x8lO!F~YKN8D zNf*EzffYnx(N=txqm=CwP6yTVVJ~-l7*HH{N)FicLD)C>+k>)i;szM@LE$&C3zW{C zg7ttFa4hDREEcpZ7SJpf@-*fbH5N2A7Em=7ay{giJruM(6wo~kVgnZafGPY1Qv?-R zh!I%?CRvCgSp+vZ2zexri~2VzvOIXQJg~An^t?PEvpi&@JgBog?9JRi)I509Jh0R} z^w>Ng)jVXyJgC(??CJCepR+KTvnaZ=2%EDQ;)5{VLnzb9y<&ho-t{yI;9!;ViX`&vBsve=D9>by@<>HQba{%fc{`dlgRgaV6f03cFtbd(Z%TKmmKmA-i89d(a|#VD%df zz#eCJOGEpYkamx;_Ah1a9%t{+^9u;yK7{Q)n(YC?^*-+P0SN9s67B)nN3`B8RqkI3 z-=UiqP``b;j~FxeSaf#@0&&Wo^k9jM=!uL#ij2sLj8Kb=*t3j)KN%4j86v4nR80(A zPV{6>3~cxGboUEcuNwZ~8sf)I^ilQXQ4Q=;^~6#Q%v1H$KI*YY8Uel4jo8B*u%`*ICk?P?k+3HeuxA*s zryQ{7ptHv%vZw#EmnM6*?S*xBuPb{XBby|OBg=_B?Vddkwmm+oJzc6jd8$2|sy(r) zJ=3Z^_2T7w6FlTc{KYF0n>`Vm15?|rk?)|~>z_79tTrb|H%D|gC&Xt*yytr--vPQ; zRK)MVz#VyWB0Y+#U1WtyS(3NA3yRM=H8|LYjMqntRHsd(Q5i*JnSTM-ZDw zRGUYbn@8O9t3Tpvc--r6zhkxnW{799@F{gObI3{w3*6v=C0%U>`W;qE8Ll?*CnlcD-fFUkmh={g+fi~ zC@W~1ijwB$)P=_LqNC<+Re8Od@|5OA)rCq;nJO#znu?a@)|G`$O}PszP@D3Y<_6Y< z(hcb>D_EO~n&y_)h1Lz(O)JR9#n=rAE-Un_%I)T^r}^9sDX*$N2=n~Q1$_9GUspvw zEXwZ|e(;MRn6*fl6`(AVMJ%F_7S#wV1f0rYXZAP+L@vp(D-4{fV`qHYs%Gw3V@NF= zH$MW4sW}`xfhEtw1pY)I#IK3-$TSM6A|ixDQWcQ;(Anw(vY9}gh*z~Cd8XNXfBMf>Xq=pW;S7;Mk^DBkHo&+n&)I$qw;Ndri) zKi$663uA9!-M-ZeXD`7n`|fbtt&KP2?#T14&&LnG;ka9)53uiO-mQ~$xL&?qZx9Um z;P4L!1;Ib4AIN=!bw^XDY%esvVFcE}9qC~P*3`RFu=If;z?o*KEJFs-2C%*{Md~4p z(K|@$F;n$`loz7UV7>#o7phMPSd}IDuzoO1^TAO{=|KTlTJGis%wEp}eEx7KrSwru z>)4hTuFr(%uisyTeRp`)2@ju9G!3Y&qpWLan+9H&{x}W4T}NrxP`eD=E(3TP(4R(m z*U;Y${ILB&9eyE<60oC$?b%}o5ILa4jxw;LjqSN-`~P-8mK~*FM=jfP&JJL5K${)q zU`IdM^Varca+H;ZSH%kxIg+GvhFCAJ8IpYOLqX<9oo() zmpl5+o{zUb;vEw2DA~)B`k4CaDdV`m0mdI9D`zYYUjo}x(O9Oj$F0;OxeePPbc4gL zrAXjX>pk;^wE;V@$GXR4*?VrrLunAvGMA2#rc3vEa9VyDU5U_$gp})$gKElCnwNqa$J> zW~GXf^TZ-qqcS@0DY>t1nvn&AxYVnf^t|;zecJ$r(P)xJI-22n%7U@5eI}+!aafWn zMI#HNI+{tB3d^W>*-~RvT`3ri#$qG%s5vWD0bSPIM1-pzX98y}CRL;WRiVpbE^^D0 zb3KupY-I_%3YCa0d}FYUhi?%rpm<87_eO@xkZ_um-13=tr44IF-ly7Yu~txp&iYuf zt#fm%95Wnu4l(O4Q(ZRiDpXNxNpRE2Yvg=9w-I}9C3xYXkbgQc>dGCy%ao%Q{b_g> ze%Eo3b;xq9$NIqA?;}cp7yKVwBqjB|LCv61Qsh{i7c8PCx(wn4cz=xVi7eqF|MZZ)Ph_Bb6_7On&ntvsxl(jSld z9cNlM4p{`tvocl73M62_jrj_)_S|!&W8z5P8^wiMcb;4vlqLl3fa5UC#HNF*Oo=J6 zW+cqJo)a38k#Z#-8|C-=Xfa8G2jev(a3>;Mc6-VXH z1&UF8weQC%4;)wwC}`dS5uVNvx(h+=c!S_Q5ZD593tqhCV(mRrEz@x@RacNBu5e^% znL~R1WH;^0TtID3Qm2I#OxtK?9G%;ytLjc&wBCy7Lv~oiFj6HS97klda3*p)r~t`p zPrR#ezX*mijl-VPs7!gu0_AJFKEe)-8wh!CvwRGcXtM_eZi0DA9Q5!rwEqp(O$;TXvcB4GTv|hTKD4TT;b(l4i zU`|^2Xm$FD4v3@FCv*d%Jtlh6&-G2bEhKSmKdn!hrhHJxUb z%H4FBQPNKhZc1Ta3O-xc@BN=<8r+nY-YFp?YFgX)m~c)YfhDq9!8nG{3Pq!69Fx>4 zz1pBLbmF@+JstI*m+yLZnn?`KaTx!9Hp%Q&$R~>X+LGB)5gAg`+J?u-Olj#I)6*uk zZPS=0E96b087!043Z^lPR>>MggP5o*<@KT=ER@v>1~D*J%BJV(1`C+TOp{FeJ)3&Q z#*CQy%;V+5<(ay%r*8z%B}0W=qrZL2sUEK;v6Vf$O4lIXO%Bn!MnAF z5_|$WWHgwcA+2Rs8N<1)JWL3)Cg>4Z;UZrA`-kD6YJ~5|!vj%Zu)!fZ0?9&8VcSQ; z2GDAGhMVyZT|6TOKV%) zb~bXR+a50$qua!}XyMYibE_iTcBd<|?isiy-xkCo;k=m4%DJ+x+A2Kh-JF$tKl6Q+ z^_)LTJ)Nd{oIn7syoiQ=2XnPw(1a4;dTbuMnr#x+L*O%6dA@dXfz~s zaA~Lv`o_ujH&RP=aWIga7X=diGuy~BKMHE0Q8e!p6#br;kvCDoPP&42bQZyLZY}Fv zw^4Lr+bkq%(<*tgELF;^TJqH7L!DG1aiiF+4hRV}8kV)sMFFiCs6>`>mkl+RQsJ-? zG1eChr$n!$luuBEXj{ygy#|}mVa`h~q@pgNyLIQH>Ia(p$OKGG33?#U3ptLmSqe{Y z!2MqgOURw~YN;5#Z`Y-yMGzD?|Yyv-gtu3g+l(Swv45m4{ zB`vq*4+C7J=E!`N;NFA1Fq5fp`9#bpk16Y5WqV0;sE>_Okwj_)NL6B${TJ zBm&g|uH$Iuf4~dAb;rZ)lT`BIy{6oYL_Y+(e)ufA6F?6KNK-G63)=*~l6uk@4Qcq? z$xCmWpbS-#o>z%1o!=Rn#?N9o4Nu!f&g}H-M#mmG!IMzE?c1;S41srX8~ zjtquL9fat8R>G9W?gdt=FQGaHABh%Kd;|icCNDfQ3_LtM6mGsk5mA1G@N132r6kxM zTKz(TI>YrH>Lz2C=*D>0%d?cuvm}U`*0}Hp-)j!^P2li*FW5sTGPRUJ7(%QjoaScsaoAv568(!D06Qy{mw~Y+HvfaH zY%X8V7{lKJOb4TJWIn`z+i916nub-oAAeMn@i1Jb=Fi-15CnTf(b@ychkTa4D0DO9 zGbkGay$n6u)(~%)FEj?Rek9iV3HtzMDdaVr6Pr`E9sKvPh~8CtoJ3NlNGL*f&*1+)Ob7{ciZ9j?-)!=3n`q)2#%Crco zjj=K$h7gLK@CWfCK#9&&6qNqxxC+5%W>SB~sHxJFhyBID{#bt`A&n?24!c=1OAC_A z=FRC$1`Y0X^FoBRV*Lf}N!QpM=SN5wiQjFA+ zBtYDT!6Yym|L1B!$D@HT!( z2m$eb?F11(3VnZPa2yzpf2HrHGxpi0H^tMn*68Y*?|W=H(vB*rAq%m$&6x!igbT%w zSMIM`WWS%I)+etu&NRDogk?;&qzeDI?1O|T-b1Phs6pD*9kitv|KIjL+{HDfW0%QID zFDKFuw)iNpTMyJckzbsAw^~>A)ruxG9T8?FZDdG@ffl6x6{0@^Mn$ULkV+1QPTFoi z5K@~}ifc!>T)q+PyNqJr+Oe~)g=cMNZNe9SX}Y-Qzbq&_X-fclQiF!^;_WFqk1JIh z&yxzrZPYS9ohQMElVx3dWg@6=$ey9u9xkOzNqZ-a1euia@X&Nl#!>EzEQjupJe)QQHDu_~xkYNwBDEU) zRDeN;XXMdel&K4TNPUlOICuS>*o%=(2mI}|{7nn@D76$lMcwYFP z-e>y@7v7(|9e7f1-cC^yW6ka#*UyIscWrg(pIE!pAInxEO=*#)xq88Ujq)#a-=FC; z*Q6FwC)>c5i7ttr?KZA$7B-3W{5(579_Db_*WG{b z3tzp;T{oW>F96tE+eB6J zd16Z^NRJ-;PiX5zWdf{nPmJsB@3TlH9XGu`%6jE2bnSjlU#Hr{3SZ}+5^rr=Y$ab& z?~rF-(w`bY#4WbC+!~G&QFN5{tEF~@W8VTFQ6#wE=9_wr=p z>Nw?f#QSTJs!c4!Yt6m>Rza%RY+uP&%Kems*{7*ZZ?Cx5Wg_`Golnd!)UY&!i)-(H zCw=*13QK-(oCM$P!*9XD^4(X0?|$18bVT7!r-V4lpiO){ z3?(w8EUL=Lnt(x)a$%y};UM^M0ycYpMKh$N?D1T65;798>A$bM*RPrB-Hi1|L--Ub zpF5jXDNV}bK!gni?&c_&XEEnQe@m$4Svrz@ur^N{>w0lv`9aL&-D zF8QGRWdWG{D)|cer1LVTV&ouxDhkha3(uv|;NF)rFK)tOsMjdcBG#OGs5kY*Cd$mZ`6L>p$|mG+xr z%4fJ6JC&XwUEoy{NgEK@dp#@7IFD*qZp$h4Z&{rc|Ejxu%Psi|PIfY%iaM)(b`K~| zJ>s1~WP zwHAL|G_h{WnY!mPpI}P$-Ir~ppMoh#W5h=M?aH*4uN_ZOp5ptMDeiRvgb8g>UOQ$I zE5ZoWPxi6uO`Pvegx7-w_ez%??g;8xBGnVv7i`pOwQ)_!1`HmTIfmeWQ)6^VeNKO7 zPXo$M#6>wL?IPu-p-)W^mr-h0=y~W_*W{3kX z6ONeWD5O$|>pF0NzKqjGXB!9qNlef#jE~RGXJ5PTj0#Mtr5(Utj3B}|N&l2Hr3#QH zBuICaYz1ptmgN|N057Zz7gh=AcPNAr4mtSQaSL~5fj{Ln-k3fCIft=qq}l40k!oWc z{iQX@G33A8%%et`d=Qf1UJ%VV#M|l0F@0KHt9ERSJD)+v!Nld3u_THS32OjhgO3aWnnfu;Cgy%4Aj!m8vm%=Z~+{2~UM=&lZ~X-0MWd41ou1=PcBrT@LefR*WgA>;pl z!vCdJH07kE{wMsO`hP-wps42Dbm{0AQeJXZ!~Hf7<~5PX_?Ue`x*xj}CzU z0sa5qIsn-J!~FmM?*RCZKI#AF0Qg^>O8>7800uUCdZz!21AvK@o#ESFz{?8{O7OQ6^>_1rT>J7-5ArNJ)~1Tym`=50Vj= z8rw9Q#5GJM`e0=j4W{4Cs5eGm759>9`y9NFI_W$=@;*0d-@JG2o_y{iLh*x3gBK}{ z(YljtscHd~&Vywi2H8N^V+bnLer}C`pwvtC zozEY4*n>8ZdIPn6@^`ToRv+&t8o~ny)pg{-6dniB;<8dZGn3k-BBXS+c2sO=xjY6z zJs>I)67pm{Bk=c!;$NkuG`5abX>ZB4%O+W+8WJoV)K+b^r1N>@<#UpL7+*UFL9pom zOXDx*IUQb~o{VZR70{6bQU(2@74;yu8t9HdB1qN8qJj0p&C%!Uaw6>)Ep|=I;HV@~ zFgY1B|LeNn?l!NdIy01{M8cD#gB#2|xPmJEsr+Zv^Ww+CmOQ4+DPswl*NVpcDe_Uj z(H}i3xFO?A!6=HD)`SenVF?G#EmOl|$IFQ%j@;kuF>_YdEI2GZEdQ9Jn%|qpn*Gf6 z+UK18iq%hokQus;4Eh>bml#*K}AxM-47 zzC{8U)o`v5VnIy>nFB+AZEjhbS%NVJxkJi&%5+00m9>_2T@-bc*_NehN>B`$x_Wc2k85lht{T!7yYIisVwJ9L4wn9Q10rVrA zLpL%vH8(p`Q&3V+{4)|y>8@x_nO)FIAo8%IpL9PUzWFJ;8edvi+EiLcs?a6VrRSxf zb;`TUqtc*4Nuh!w0(=wS@suoz>lPxm>pYx!32uw(P2+8dUKIeUvb6ghUfE&1OZac)4-xv0&V8Wqd z03C5<{3*INF0PJRBI##;wod*;^F;APTl;$LvT#M{v@lY*<>lkwb&PmYtzX();^v7u zjN0AN)Sw^z@FbpOR*v7R56Dq?6#|Z-8t-yw*W>#c`6}uv?qqg*@bA0DO7;sn?80=?EDJnTJ}^ zWYQPXS~4}#Gcq&Mx}-r8c8+zfYoGbksX?8OohqFu+mbqswjs70i|q4zpr6rzdKkyR*i!6c=<~mz8H<+|ka% z2BqYJ$i73=)cxGmgQV3VJo_f}ruxt@cPRG_a8C9prrZOT#(z0-_rO>1f0xAv&0zS; z6C2{s;=_?SV4fsIHL-{7BE?Fz`$w$>3MkT{?NQPmz!2WreMEF%1P)+Ck_$_sN{BFr z5Z zx?PhFAc)ZIs|DRF7e{SQ`O_|L;{6M*Rk;k_r8 zO&Rq@z-qhb9dn#3fObRX8>Fw2AK4t&I1zg}5rD1mJqH<)ZO(^-Z&oP{{lJ7%{EgL* zomZ$7q+N@&QBJ8`VBnOkJrrG@$dQ#t*!fHI9Rcu&7xZMDm*5mBJA*p{XjD+0OeA%S zlMwv}updFYh}s!xT`9mak>!0$b-l=U4-?Ns5@op zDQG*CLZd8nQUJf)=EMQ%*aFmV^1FD~KwpAhd+CGbr}rDD(~J?0|*@ zs$mbyaHMBBIN1)+bfC5!vu>sK9lL(O`%PVSfVv&ZZe{cx&~Bylo!D;W`2EG*O7e2B zyB_lCzQ zmjxkD;aIf^m8)rvJBe--+kQ=beN;6jt9Hti6H9G>?d9n5dJd1efmZE=C+m3T{s`rJ zJ>IH;U+vW6TAG!EjqBeZwR3v*pr496#?`k4;!~o)Qjj~o3|cacq85Ng8kL=qRzYD- zPmmD_*~z4ecBQJ5OV#yt!6|&MZe@e0j2+&tX3M|xm(?0{`L8GlJyz?bc8R}g0y05a zEOy@{;tN)rKHKM+wks~@%ca*YTAjX|m49KlJYJ92i*0&ezu=&7Fwl6(4R7NM5)_6C zjY8uv{%~17q&FOl%B8bg0Fx^gOXtF~IINzsJMQk0kLlFY+s*G1{b*z~TfIeqlgTPo ze$p~pNxiPyZ}3=bCLhBYS#8$atvps^vpQYRm)mJQU;T5Ch&a5C4{LY7ImqO4c$2)I zwq9Y;9nOF$RjajMjt9pzU-f!512WobFI!{Rldbh8^y;k=>J1GJ@gq$7)?ljjC75t< zbIPs~qQ?eU<^in97^KA9fIH=O{>-yx8G?d66^PR6e)@f+LFsJ@(1TEbv=As503?wW z1QUjYS$)&a7w61BOMEuYo6z8o|7%7UZ?Ajs5IX0Ev1wPWfC5hiB)88ITgTv zS6>B`3bBf^z_uty6OfL8HN1o8h<|zN=G)C45hW{n?J+T7oPIcY2M-7=LQ^{C42}#D zPXL=}c#s;a?}I$+Xo(Qu6H?oE_~pr%EOKSM(q406C>s!e<3p&vvK+ZLD} zDqA8R3z#Ph9EII+!Zx zP#1+WC7tjWZO7lVI{RT#94{C>z6rAp_mcR_uADQhci3=;(Fn67bMs)Z_vR;P8&A4>!?nS0d{7ZqH3zB1}&TSSo9eA zfMp@%3uZ>U%@&-LqiOd1c+f&*j$J@&u6ZEkzNQ~JgTeuC)GdwkpLzCIBwABHHgmb$ ztVT+Ag*tttR7YWbkqfvBq-*x@3cfZ>qgrJExmXCPh34kz)oE75|i-qpy{xT-(? zvBr&u_Naid)|=}41MZ8%b<64ib3;LYP9*;oy?+Ho-w=)d1{yyZF`Xe(Mrc`n=zQI= zHL=DBYu)tkJzD;SfVk67@)wXM*tpGlxM{eLi6514hay{JVYe0Cxomec-gw`UjiQ{R zo4fmupM9a_U5Gbxf>`7*{)9>Xzoe2DJ`>kqy>gM%iiclK#sxKq^%A&_d|zunly}qs z$uW~wlXJ;dlPoF9X`He-rL5(A3J2$TECn*F=gn!&X)P`r29O+ZW4xUHr{MyNV!Yl6 zjq`Zx&~Ncq$Qs^sS)*=5h$XOWG-!SLe)5&4VOw)DtRc_8zkWbe=l2>Sb_IERV1#?+ zdK}rd#>5gOX1*HkkTb2Z9pSFercOC2-c~h7?KVFvG#%Prw*Ewqys5v-KTjar{j1>| zdecwgjV^v4nmNdJu*IeTQdg{CUFgI5fyQ_tItd0rBbeRXbT#StDb*_JJ(%+VXLXXc zu5QAyTtTZjg#fJBhwF+Q=R)wSFof?8o)LNKj)n8cnJcC6=CMh8ob<$Mgr&MK3GUJOk4_OHzk3->Z*^=luLkD~wQFQ|6h$JYOY!rOUl&Vs2uw zi9q8bEKVFG)kA()fgqcPFk)r_D*S?e@z0y6l9E)cBUnWr5fmvI&)v$96Q-8Tm;oa5ANk&!laZrrsGUwX?mva2@2)h ztx@GE8Jcf@!Mti1>uEz_(!z0j)c4Z*?Ca>q28V&tlIo_Hv1fx_NJh_j<$D#a?oJo? z)&n`4oN&-}NauEpXqL0n=EH4~cHF<}+EK3h)RQp6g} zbeG^bAC(!R%MY3LxY44VHd-uIT6IBurBSOA89tLkgmG?)+;YSnx5FGdNmsIK7L(rI z%f)1KaaIWJhK|8!1dFH@m+q=%p4?vth3$`SUMj$wDw7<;%#xk!e+}Dj+rv(x;9#lX z-Il5{%$XZ8=s&N8iwJ}eMTq_n+P(rTs;z6-0z^?k5orbi5l~`=p+mZ*L0V!cfuTbL zTWJxMkdj6km2PQiltw@r>2CPWo`H+^zW4qA@A;qSKjZ9u&f2Tj+G}qH+0)jWpJSR4 zQ{*>ERQhJ#kM*o1b(DEOUmwze{*`cJE^b{~pt+z0nwEF)SQhsvR+ryvsN_aE)M_HGPW}NZf zzuiPSz1_dS34kUJ@D~R5p+H^|R<3Hy9fyM)@T`&cBm zTWz26J~DDlRpGXxY*xOSP?n4KPEOn+%VM*yLDny`FyU3f`68B){qF7uR`(jzSugn1 zW{yn92JXI)Ny?S4dg)7J)!DxPRuiU_>083$4=;m_w}6tDD@QTTKq>PBQ}qI5s9 zRKf9N$wr$NQ6?*&1dX%!XSBx_#sZ@!*iB{YU8DydycutHu=Af*@$>hKH$C6T@+IrU z+0W1DtCT|M%NSOUeWlesr*>-Pyv9#4ztrK`vz;vgw{V@nJ9+8xpRw+uS% zG&o-W#!quKpp53Po5@+0)RCx(W1Q!`BPuz)QDZ{a zM9W04`Jsho)BEaJz97e+bB+a0KhyhumIQRCbykpcJhjQ_n|-Pt5a+LRlZ4e3`bA>F z>=tp9abAzTZNcZ-?wqAj2JcylTdNe18<%;F2ED)`Jk{PmSFpq{(6soGIs>n6;iv(9!5wUb+56$mu z3G)@XD$T74F1D=I7(^()C+_|@Gb3bQQj+0RE7e}v#hkGHDldI!XA4m$kGS18m7E9X zD}FjxrR?i~R8-R-Ck}5JClKVC`KYVU9P++lH%Q}~NgJ7Hk^yB!iYo!r^`?hy%nUv0 zZZ78$32$91r-)7U(PxYqv^JT7n99VB{fUh$>DFT0gfwG(84F1A^I2-1_I=AKj=d90 zXH=mg5jjx&IA>~Dy`>R=u2rk729 zaDH)i<;|8%5=&0zl6WAjACp69#g?o64irN)X3>y2_YKjBEIO^-22x`*;jMwjT@lvOtH1Deq|Y@*c!g? z^ROx)|H&H-wGx5pC|kGLjfkSI#h-ka;~pOU$(*?6+CW@7S%)cPEe{qzR9*>m4%U9mB|QN-`N-(t-TCzIm$ zHKF{i`~$__JNf7OR~XZ|SI>|A^5k5|3{|)JFjY?3Ar~ooF5RpltWn1TfmSGnxlI-K z-{$bUDca{)Cm|4FUa>JThO2R`fb`BW@y8R7xQ6)eo?Bq?Gq^r}hGN(J?kC=-<19$; z%&Y;Egg4G7RAUt1lqDoH`FS|1_=mDw@|W0F>wbUNGJ(lFQ*3|R-2JpY_rSdvZe#ru zTeYntzt2c!mEdhLe7RB?K;=rY?WwVK%$VY0gDXqJ(*b6A=CGXvA=*x9a&Q{mW%b#TQ)B;Kw5<48p zW~+Q3rGD{_PI{L}yCSr)3Y*D1-fQUay5c$Cd#}w(0{$d(*vjgoJN!j#x36*~Kj!{% zdBve>w=fy6QTWt@dcMWDE^i%2Dx~3V_0{pK^J$6O1TzAUI1tB#dnYK&VJt>DC*4X2 zJZYY!o4LF3%)W@XC@G$O*)2vx5ViW%%Y((^jN`HG$8lag4&^+P>g6QIj6=!pB|Vnv z!8NELtD@~2!po=KV6#Wr=GMM^Nf1DWtR!w!d>%`l7n3XU6=G8d8u|?mTcS7M- z6mPk9&-5yJ*QE?|QLWtqg7NmW6Co z#{7Jw%N*}Sl*1e^w=(o+Nl!EdD^JF?o?KJ9IlUB>5Gim+Xk1N%dbPe_Sl8Z^(ZJU% zWAnW#e7eWo^^qHieS2leUct6a^f-(!va|`c_8#bPe+?feaD!7ER=|*IK&u96Q zYw*C6t+@zQA&Ta`0wH_<5%PMcX8s05+b_1L%gDo^ju$(}u?8XLdUr3#NC z(Z6=kzqE1nGB-k0s`dqPbn=wC%W$_?+xhkh$bCHw?A?E#Eb#4BOyVzjyZdbZN~F;5 za9IYG7X5g26|{al?o?cs|8~-Th~rNKh2wheVJ$Hc75+b}O4@AV1lNoU*0Ww2+$nor zCX%PwmN!PxMmhboU(T7w<*|Egj*g{L>aOb?)il*8b*2X_WFaypdV4-zLz8;>t|@un z{JvmhUbfVrYWwoTnIFah9`)TSB;izVmw`YbY>$R_G=ZJPC33xAqy zitH02uWVY+!N-Lz<+H56-+wfD?;^!UR8Y*z^b6+i)=xJ{+$_i&CA3GSuS`k3euy^G zg+C22Z0yKxB|wvvMoI?Q)NCJ5ZC^$X2@a60n9b7`k$*WeSFlD${8`7m5P8mN^lZLr zL?WZ0rbU^$2=6xWY~HJO0|Cu8#?(oJ&hKBo-hYvSzl)N6f_}VC(3HI%>)G=7f=e6D zwn(qd?t7tZ{R-+{rRnTu=+KZ+3dM5^+n&=tNzYzRSpUw^PVU;*>uuQzy)dFxcVRhe zJ{DI?lf6pAjJRi}B%DjjcalGAU2n+4W9E5!Mr6^XUbfw_?W*&^zD|wC^GT871rDSJ zT+2!8B#j+UNhi*X!&Ky? zrYA0(Oh3DfW)Cs`^7wpIzg;Uyx3Qgud}Qy5Ua<{N;uY0U#o?0U%lNVP9@bvx9@&y^ z6t3v@StON2;D&9!DI<5cZ(v8CJhzk~7=WZ1_P|{b@=GNR;W&R+zz2yQ+BWekS}etn zi*zU&EE#u*#+x&H8d+eI9T{piOsRi;PUdM;r0akQ>zv;09W>XKei2{O5j-;*oRXCn zg5SevjZ%cfKclzONPjp)1h~In6qs;prf`m~9H{IhnaDP~0R4$pD`JHJ>h`P^bJl8BUxK2mq?r9>&|-uCaHsl52ANuP~IP&r!x88=Tj zb7|{hwY&jKcgr44q3%Hv8SU8F*Ya18U0Q&)S22l%Ne895YrOAw2vPV)e@@(&Nwfz2zp~V|Xd!E(u=t}}JlYPX9UA!k0;>{w} z@(bLRd{nG4lEQAKy%XcVF2wtNUQ5wE8c>2q&$(ViRcH*v2u)T-UPdcZT zOm69T^-P9KeqNAIz?Jy^obLk5aA=5e)BWzicj^taY)@Y&vhL(I%hif5)}Q?x<9g$S zx0Ms+&TG;8G*Kj4;da(2J%a@Pt%b&uQu6dv!Mn?I+S#m+c@-#b$$jnHFEM-aK{7ju zbf(Tnup2*_<5zvkkL{rx*v&VqBJW{aBqJ_Nj(OfMMTaJwl%-M8jt#QGoji{eu93@3 zqQX^%W;f+Cl1+{;JNc?l>y>acW#f8F1bww!y|~%VYInZkeSOBP#pcB~540Z--p=k7 zuc-387RzpMquwWksw}}!j!>7jiS*KX=timf(j!EinB$l+$ullG7W&-9Z_lJniuz)N zX)pS(KQ(faUXkD=A3v)T+2;Dp+?c1 zHKOh_dZR?gB=3sJ$>nPj!ELjx{&}B&zxFbStk9~W4k<&~~DCv!T zY5QvVGBnd))Goc@N6=;#RUdcdzXJsKey~$#`m=#=o{-#;FJp5 z7`yZ{VSwx65|Wob8{R`iOe5*I&*81D>#AbECeP(uC;R!$*O`EVuxiGKZzQkLcG}uF zPxZi^80UIl2j)FkGxgn)Of-K;)ImgoA2~eLDO5m~;QxU?YOFsXpWo_D|9RQ-Ru>0N z>E}P$2y!T!^)3qw+T?a$|N zMPioM9$xTfY)^UG61Zrj(aBH3->w=YhW{}t!+5mjz!{{S#*SLnwP0Pt(KaS$I6F23QrZi(ixQrX6#yRxQFuOc5 z-5H=;xu&Es6ymTPK6y&PmE^1wgZ~E=G8Tq#_{mZ2)`V~eBZ2oS(Gw1iwt6>c$daz| z+nsOdqF!(*e%hQRBy+0glb2}-)(_~d3&qC<@DBA?_r`lK?m8GQovQmxNM-h(=Kl;`D z&XP>_I$L~troR6CJ?!&TN2quzNA&yv%UT}DD$)6t`Sj( zj^wY%2DSOXJ8v(x)T|^TLPPP8SNP9ZhR21l$fUaRX|zhT<8b#v-xFF0Lob(X*F+gj zU%Wb4pK3zm_VeQYxrW1kUp93SWl32q<5g#Bdi7vz zHe8ImS6N7yhD5yXV;+>&&bi=J|1&xK z3|f=>RVf`?`ns?K-eeyWmD}!!dGWilY)Ns`eTN;I&eV9`fcP^>QbySoGt*fN;kCFQ zbv~iwxcW|OQ9rY;r^_LzQcE z|6m@~*>0Ibe<3-JUsj84aH)jNpj6XTo~oj7Uu~fCx}r{K@jRnod#P`e-TGT{b0MuO zHW%~#s6BBUeq0vFj7>7A{C!a)c!Bp-OKJWzL&$;)?ave@ zTz5P1KA%d@WBDycJ|=`9J6BiOoXn*L%Gho9rN`gK7WwO!no-cu;U20tsJyv_=jqxbE_XRSg|}H}u&z*1)yKQQ#cLPN;Qe*wEW$ z&@J7hkV`#A%Ff}@^SzT`7^nVq{V|nqL#VeV+UI?xt8EQ%#om29W;jH1=}uLQk++Mn z&)~6N#K(W%(g`o8#EJhBN|8rT7fJbBo;JrVQJwnNW$V*t;=6)4!dHG>D{5u?O89DqrBMpsFEn4XJ3=gH zljny5y;o>(+T;y5hnz|M@gK|^G{o$q7rPObfvwwZgrN;F=T%`rb&q*}+$bl|grA~> zx0kbW9j{VW* zyU8#!-$x4}yQgTy=$?FY7{(WE;arM(N-q5d$3$LnhvMVo`$k5|oo-n}w<_17vMrKp zOrAK`-ZxQw_Z8{2GGt_PgX!8Lr(Eo_oSYYKQ3IBFQgO;GOV6xvWPVVOD|ZJh-H|Ay z>Iu1wGZ0&iupylyOnskcHSd@^XJwt{lIxs1)=cGwzGv*-Li#F-`VvMvv6c^$`4S3xP^X}4qKl`4{m zDK5OA4^2G0(DB3k{-Lf7JGa_5yQIi_)Nav369NgIQLmBRH;ab zBd6*Zl>EZ1zi6)Bf5CHH!&LXt6?0x=t4&85J7&(;F^}#-e|IJ0e3wcl>{W57pOTWV zjXCru0k=Y)@}E%tC9Lu;Ab~DZ%DkO$B)cQ?Y25GCeG4oS-5VI#%JW+GPi3}Q6Z`4_WIo=vf`F>=(Ec5 z0_294dcXa?Tu@k?oB!q07stJwJ-r*OH`y}NhFn&AQ*=x0cE?x4udp@pI5AR7Ze`B? z9C7dpdsisZup1^iA*x5aI&yZB$H6mpd;d{Fl$T};Y|ODKsKC9jv44Jik88cQpsaD% zX|4sa>X>+~N^@a$BMM#ks&D8v$Jn50OSGs#x!{hqzUF>hqVrgoIAiF-7maU9(IwS_ zygfRSiY}La4#Ykz{FXZ1E%Lo}PTZxmp+wMWDZ@AFx$LrAaAVr)%d|m_#X#X752G?B z6#X=793scbyb@DCU3i!-UD#td#F$v$^JQ-C<6!Xc@%fP9i+x3}2C2H|5V1eX)?I7P zkyR4SJAUu@qR8s*9j&ig7hoo9VS29KKV|b<4>IbFZ$#0l?@yQShYu2jUHR5h(7f(9 zNIE`9?Rj>s7gc44I!D&Cu#6X@I~=^&Xv}+?TgnP;liF6x?@B7XMgH0!L-t(SkRY(4sy+rHiZZDFUHR9Wj3dvf?v%1T#UHR zl9+B3<3co@>SU7TFjS&Wz5nQ5*hFyIK`dg`fT;0*08gZM7NoZ+<3WhO(%SQDJ3dD?almL@kFU* z{&y3>hTp%Z1|%bhpwqh-w6bTU&NrOBB=6Aa?x*oB$wXH|xi_G|wB5a0+GGGXlJ=!h z^S0b8xmhNM>%)awTb;ucH*1S@@|pTt<)TUCkStcdsj8>EX`>Se6^WvZnghr8(_F)N zhu{M#^!sHbl8vN{sT3Ny%2WLL7v_hGj*qu3pVyee&3`)RUR>(^P7wMXpFz1omUoMX z{;Zep@QH`~jn~`>x=eEBn!Uw1S3|of1^aGlm?fswp`wa*oC!8#Kar{BG%XgCzIxx$ zt{zYrP`G^WLDQE#`3rY^Gc2!0c7_xq`F_4E4R%iLtLtf0yp@<18JEIm@o?C&ddhEF zYOcj$aCwoZ_?xP<*VK#PEn>yK=}n42((bWulf`pejaB-~c4S+4Qb_N&sdeAeLUVOH zx$1wq)^#LI-wPf77E8h1qTKgvPe|i8AAi)h=WBYBpC{})bh4$G=88ao5&26P(4sH3KY(r@^ zQucvV6-Av^1v&`<@e}hgVsrkIu|0Z`QM)Pz+c`fCjzN-t??&A!{DD`q+*rL^TiZTfmLS=VjV0<|ZGd%vc7SPsVc_Nf-2lq~;{aRKWg0>nVw#IIBs3Ln`^g)j8~Gd0HsbT?qr`Ue zuL>~;of9UpTk6#%%ZP=ieW32YWqn6XJ)c2{PKZT_QHZS+7WH!8K>SDE;}xovXoDyF z2Dq2zVltHXw{8`CMLAw5sVQ~6UV63E$9?+V@boanaQLv!q(@m3^cRmF27_iR{6msn zmuMWEJgQvVnS@UD(L7yNta7PduUfCZP<5gDRn@C%#VW<>ma3L&wko#j%&N?4^j?Fp z7M`S?xZ#e+U;_jFEjt!sAAW`x_h|DkKT(|=w|P@EZhz(W2??K~BKO6sH*f3cvfT17 zRC#@n=S3U>ID^w1F~=W!a<@oL44ILMIyh4X$-QJngOe zC-T>yG&<|=_rTC~l0Ed{C||30)}Qp8>u&cj6ph_<(^;$2?_t~?dqnwG%>K^6YZoF0 zsnKN0HzW4YA73)@-ZUFci+HoVRQdo$^GynKPTA%ip?58!gGM3PgUvF>C^j{q|HUwd zx5?oc_-V%3}IR>8cfjK3H z&+@}H%NVZTA6S3?!ucU}W0>&ODf-ysALPV#t( z@%XtcuntrbQC4$M*5XH0F-6pnMO5=f)NXGaqZy{tEtk;!iaqA+K|sUC3Fut22ma9c zWd~=LK_`^4Y~Yj)bMFMC=D!eLVBGsUm>)oq@2!*X&!6x6(DuUqun_eSE%h&ss3Bp2 z1VZ|EL|-_9lpAZ!YuJU)X2GHjX-Q0pNKhOkX82l_K{u+~Z&aFT1&?h|Hhex2Z6={% zgwlA;@QTsWA!!Bs%G4(BG{_B^TBKD?qC_K+O?VTfSIc1 znXl0Q)18~C2c1aScB5rc0CUnA&Eg5RrHjJjj5}|m7ajD+uj~XFEZ+01 zL~l}+Ow#Z-dzJ1xA%|y~J=vKa%#Z+Ty;J*%2<{b~j@fa^41a!ne|bJM6b2g1gRa z6>I#E)z(TiS5Hsu$a&HELt9&C+FUO^iOt-@zk|oW>y*L|++HOL3uEh8g`6<1E|Ojq z9gBM&%6;ZK3hmCl`uyfnv+rp zjnaO7o`EaD`oBaT28_z(hMy1VvmQM=Dr#cSb0d&0cc8S@_!G|OzR3Z%uqSR|xX)1H z0pbL88Lr~V**V;BIDyWm?*yd1l~bR{=H!zM9YW_G5ur@C^yUKd2Hyo6nwOupO#H6S zK4~{9G!y9dg|~l>3;wBo>bM4)^>;fg>3&S_PKEo=WNRn{o zet3*??xu9(^HU9s&Dv4s3DRF8Ms7y)+@o*y@&5eaV!Fzuv?142zkGqLPqkXBRTGbq z@9rjeHOX1>)@mhO8^zIS#@7(UcUwpCGTv#pv~0uP!e~a%92z#f*84q9)IBsk*R~}R zI=2g!N3+0x?xjV8MI7Z6FL@+6-_ZVNJ!F|Rou=*}F++oM1o7D~*C%gke?bQMOV@8n zUwCcQko~#GJX{YMu6sh3T*i-~okZqg{H^bOv6C@#PHZ;=Vb=psoaMQt0ezK8!M@ll z_iwq~s%>mvCd0WarL^yzULHWdSRRKI~f3zrLZswLTj3a>)( zi9H%3c$|fW7xgxkva3(OND|6+U@;W@);AtCa$nU9UF8C!*w0JDi%H?lO7pRKd+&Hk z2cplmHWmC2avip_c^Ppm@9dkYKR@?OVB+GgCKf8I&>T_3HFkbG|C}eMV!u(4T~%T{2X1F%@Uaydrx?UGvY0*jLMr#!YH?BoD+HCP0wPQT{P;3 zS+AW(mjrK?POzU4t9>bj#cDhf<^K z)lc~CD@t`2N~G5+PnXhE)Y9Ir6cTWBP$(@MAvy1EaqOL`oa>vImb}GVm%8z@Etg(8 zH{L)vT;LLGb-vy&XvanAqqV+85)SXO@2EV6n)CIpojkKGH2N#`NqTy^`MgGrYl{(-HD>j$4-PpI9K3370;tiPQ31!hQ499=FK&D z;2LG0-Py;?Gh^>}%0=^AFHT%`{&Z8(FNHrq{OqiE^}OGtHysVL$k>9TusvtbKS>{Dw^Rqmd{0nr`&_H2Pe1g<6O&%~G7uYN+qH z-mBm4Ugi5k9sNh*xz zYvJM3OQ%GyGZJdoV?~KB`y>aYFk5^K3Wge$ab{G;K|_wpXuE%}N|`Qz-0p{0oFpZ3 zIGISwpXYa#GGhRr-4E}$+muej$(N)Ab)`ZXhK|WgGm5v^WQ!;Nr9GkDWEGL6{)Mh< zS2t*2u8~aX6bo}T=NlPbkDf!|vtV4CYcH=^1wFgQ zmy2eMsW9t)HXEQK;Qi#v+8v`;V}$ovXC7I6srSHp`(%Z<>-3;Jp5@?Tk#TaX2rl`; zx8t|MXa}!JG4t@mzDk#=Fny`i<5?gMxO^50~$ikgkZ2*(Xyq3aO7ZDMggC0WJscULZ>)dJ{5yq{ijXzA6A={LGh?aRs$tUom4h5zB} z{ZUjgnf;Hm*HV-&J~n^6bRtF|Lowj1V9;rsz*}dBxx8YQh!0#Ki)E}p9wYFrgC z`)1&FZQRiX|MkRz;eh6YKDdvh>J~*iT6QqVQ*6U$Ml&})#O^YgCjPkLjz)I(+r1Yn z6zzCj9D|*mosxxu_KD8DB7Gv$4&mg)zIrzI``K-n`_&3QW|mXvbbb0Y>p03&WZK0$ zgjl)C&0ynbExGEq`Ge_R!JqV;~3aKe``xP=r0pJP^DY zO(>J3*)7MsrR!^0ro?uHHqXS56YEIgPzO=3xa+chS9PnDFJ@0hO!<(~U*R}?mWMp+ za)i0!Ea8%jBBT7|%dAVX%VOR5>RU12nzi2TX}yb7N}x%ZiBO)3R(6YS<@i`kb4}p< zKGk}4*$63>Ft5*6P2$SUsk~={H)J#A(9#A$r8jm9S1wPbws*y6$_-)?py^%ro2upR zq*i^g?K9fU8mIbRtPyI%JEaALchx^~oLndT*}yN%<=MPDyG}5}o%_7y@-xj${0jy~ z?DIVhoka7(?iRY2c9D83W!r)yG7h|pH%Rb|Y(mQQpF30aUNUEbJzQI&7$h0gl;5nHh?HrTrgWkG|v3Jgi>GY+R8Y2dxxq}}(o~+UKPMc@O>IG>I+B$#9 zZ1eP4V}>Ao=2TyJg!i~Nb}xGxe4SU=Q7~q3=B55V+z>L-pj~XoJJ32DUEATh_a$xj zK1mCA3Tig8<6P4t4egSTdbpV)+f%){&N#h&_rkT2=iQ7g1&A7I2JW+v_@?XDahWa- zK3pq%b#{L@pHS6oaXRT@d#ooY*kzDh&m65H*ZeciC? zhxRGEI^n31q~5YGT2}}1lXq3OMYmtBNzKmp-kfc@$M&Vgu#+*VS3W%9ZYR3S)ccA* z!)!>e9^v|P=Xigl`(-x&LENsodxEF$XRY1ZHg~GgnoGOdpm46exLw=U&cT}GRarZE zFWZ;)%LGW*Nfw2!#9n^#c0CeDVd7rT@}DfT+qc%JOe`!SpJ*$kGCowk?U@uIpn2Of zF@p2m8yY6Y%VQ>byiClD`(_b4dVRRDJf4gNoz=oB)yM$9Y!qFgc&=(;JVVC2>nbk> z2pO9{$RVBupYJ*2d`9mRSz$csncWL#VmQa;W4fc3xE-IU*j|WgiE#L+Fy7^qaKSRC~rhwNw>V@ukd(U4} zgl0sMKrQ0|M{(7vRPg-j&3n$B((t$`t>SA$-%rJx$e!}Nta|mD2K}e9TgGSz2mBH;DIelk9?YY%&Lx^j0NI9U8YC|&D@$!CW&FIFSwOUvuqSC3 zz8E^Tls|U0mct7Ae!Vz+Y8;uTnyq~dBXDjX*n^u>r|Rn2)qB!se2C>UrPH76u*;K$ z^dC(^;B`mFJc?uU|UnJ3e+;cPk46*j!li5y#D5XbYN^UVq&6(4k!~Cf(r@Gz5qvVplnRgMwaK!U_qE$0RiYxi`y`8w1uRFl_Sa? z2GL4d89JiGQO0N!6y~H3d6bQrqd5%0&iT(1FO2R&-_q-7XOFsg_ikMi3)2~U7Zoor zKb5<}E#)=kjmL1k>#K1}D{N?C&ibDE%qMX-oc$jYi5qm{ggs|^b;Xw93h}#RQ^L1q z-UMk!G?tf79yc)y2_ZgKO_q18=c-K4-8Fo|qU-c^WObz{O_meHy3x00=ucCaoHrn9 zy+lADF92JeBFsI}O?kTSR28dC`mvsdp$G#dt+!!O%CR3_r+vI@Zej6pC^RVgZ3>~T zmTu5{owT8_kO%{{K!dk;g5Jj_4TZjmBRr*|pGNprJ3?Cxm)PV{J_W%k+V>)~ACGf3 zioU5@fStazc+$}0{Hd4xaouFkNKep*kh~KK^OLW6ws{&cF3rxq!G^kfck?MBVhVNl z&WFnKa^cIgiKcbsun#TeS?Ke(9vwf{rF#ec?_uMFABGJR4D5j`N`_`A2Pi0V7A6i* zND$yq7EBD;#L!MQjxY{rOv%t51>M3CAnyNhxCz%0SGI!y!nt989#|r(c7`2h2BE1r zfW{s=ng#0a!z9$sz@SudI5^kjudD%ibd)qldP1rwpiC?bMbWO1s_f8p>_Up5hY zM=WmyCo4A+hD30)a`UpYbHX@~NLC~q$-@KVMzXW=^6A{Q93A5t>-sAeJhygHbMQ4-UIgK{=qE?2Sz;UI2Eha6pW(0TvR1 zW*?*q21^pav1+hMvvcwwpy>za#7YE+O7>`DRg@!`u}b2SFg7)mt0Uw^YbbTZV0thp zQ>@VTs@Z|U?8KnMa-aZfpzIwi&^9n$h@Ti_ zu%U$w>Tf_5D9ueA?JaEo#8k9(goqp;r|1ySv#t!DzfAHjl#xTMD7dj*~hKc9DjB!C@n3(?4O~9ffH(@OW z(FLVh3~g;|=xAYNVP)ay217y+32P&i3CI)&n4`TD3WBIQ89AUFF(6Tt724%r;3^Og zG??WOx|+F@wULdXh1DS*h9k6UKv`vKVTC#b8w1()CN4;`^4Zo9Fj!a^TDo*ncG`9I9eFmz_hKQ zRs9|l?7F6*gE>qcnr#dWY8H-GC7Rn0bu&9-x@x4E3RGn;Xt)RLC;)$uJd@x&x4V3v<2OC(SoKaSA0}&Y{ zjDr=Lpn#a=2uDi6K+4|G!~!gw98ieGHARat_X%1Ow0Bze)P?A_1I>L~c zY!Z<{U@cI0fSd{W6)Xb~M-drr1B_8nRdIwkK`zHw1uY1FMgoFjUe|S0P-allLF+M; z9(tH$fxLlbt%|ZW#125r_+T8+>pF1N!5V{=2|L1qZXKC0^MM6+P{c7*U`YYQpvq!j z*e4E9%K!el$pM4@9m4+Y4zPmCISg7Rf%}w{#DNSr7L|(~#)*W6p#$hJOpX{FvIPBg zjFP~EYA9=4unorMJ=i?J5WLWC11dRx-D8{zp+XVBpm9K(3j~Y{+C_1Lt$|VV zCW4n6#tSW*P(U~!A98bY!r%wt;)0yW0lfWJ@D6wa27vsKF*gKf09#o_dkZrQ8$OJK z01S9W2^1(5l(8e zof_0&jAwut02^$lr^n+pqZMOe?dyd&T{73Caa`Hl3 zm%r8i{|}`SOxeE{YCagWmEwSQxR~-F3QbN>v<>;7tu3_GmPWb4MBN<04-E|L(1m~& zTXuFXC>hz=d7;fRJG+?JArt{!;2w-35MUI6z>Z2vV#u*%TwDN+3%WoH(73n&8W)$O z0WoM1V08fIs0xib&Lw8__ zfn5Lso`6xH1+0MThpd57;2vW;xB+OuE+7@4VO0dyfqTFTYnmi<0iA$D0Uo40xWW1x z>rt%3u%uuFm;zd?`dIC-@-fO|NwI^V#a;jn*a%v{3L8kQ<=C-)J!- zVU!1oV66ve;Eh!c^w^n(We;!;$H5&i5TiVHq5>PSam88=S}YQ<5}V4vv_p>o)(|-$ z!_Hx#K6WNyorPrwpdd4_GaNhtqd<$X9o%500yJP3XaO293ba^{V|4;JNAAQ(KXS>T zx&ReihmyfPHdJC_(87heKo60Fdyaz(4*e_uuA?4~xi~qo@S~m+b3x=tBzEYiM`A8+ z=(t#L9rfIpiw9bN!3FvQ={yIQhzNG*s29OpqM}&%Q7?+QAaZeW?9fp!j=3Zxu<)Z^ z0&`)ZpvA-;bl3;rAnYB0VV|%)uo2EF#)*^^M}TA(XGe-i@`z%exWz?yppReR+~RO< zNl7?2w>UHoVI7S_v3@`F|KEF%LLjlByy2DPg^P;tLTn(99odeVZ-;9ApI9A) z6vGTCkKqS#gAx-nv&Gpltbpop00R;+Dj&EM8pZku0e!Lv<@`U1{_w?LIsw>!;$g^- zxMJ`A9rdrc|H1NqA^lL%|CMy$ynmC9$-}=g6U;;4AxJtB4(A51!yY?;H3P&L)H_g~ zFzEu-fy3DWrV>OBxPZaKH(>Km7MOq{q3A=Hm>f8$w-7mI!eA%EUrylwrSXsQ0dW55 zcc2+WepENXWc@octlO|A92PH3rGwam848g@ivCMXv6+3S0bu<1YK&P8K+Ydo3M|Bu zVeSrVJf@~X3_zIyY#{N6h5+f9GH~R&Ll^${9ujg;^&oPf6c;zPrUEnmo`XjLJq+xh zJw|ze0x89b?f+VsFiHcJMW7YvPo*&v3A6q{>ag;I`E|sG^RKvbiU8#gLiH#3e+&D6AcwLP z5{P|6;=s&Ckl;r_go6*M{v-s6dWdj{ik)@XU>?FSSl9`R zO;YSI$i9Cf9x;T*xUd@-te?0+wUHF(#AG_uLq5euo%gTp34np=gdN3dhb0C9gvdbz zC82tTwNVmmxyAppMS`ef);N&d5C!JKxDGrVz9Bi#Jtn^okT9|_FhBw1AL3$m7ubhG z;NcULC=gSyK*2?!bro}gF~9&g6Uzo8{h;`A0?FVFJOH6W;Mb3#7H?zcG+m{NsJG|VyqX@qeeRD3c1{v$0ga43+n3a)0K)KUo4?3=Bhs2^{tj6F_JPc>jtoLu`%RFF~%|h&)BqqY=`clB?=?`pvO4xFX@0QNZG>#!A9Wl37`RD zz!FP>)$k8;ta67_0t_5#0reR9V37o?Fi07Yc~~S9?8F4J9ut`Kl#E*`POSe(lT$K z#2#}BPc*+KGCXtFS%uW6srzePkY-3&lPB~gY;R3?>#ay6XntSfhr6+k{(ALtrKn7I zFlxzZ6?S_n4Ap2hKOm7)*P9~5t@hbYnON_8=clRNCU2q$EfsHrjRyTiMrCd{^{5Ma zAHR6eSWg#QET?gL4xs!u?i&^FzeVbd%!&WLv6M^LD%(6iFRZ@WwY?qgo9dB!Wp&r% zJ-Sf)2D<2FE{Tzr&x6k%$-l>MG$__A(%y~8u@zCM{o+;8jE~Gm0UDo^);Ft?CK!emH5*R1s(MR48c?4*WNrp+Q?SND{3QqV#@MiLR8CF&(kNTATIx8JQn% zV4CjAtSQky*cC0x{cZ)HuFQQcHqL`P71AJf(VFU`LGeJ6BdiIpRz9N&8CaCEte_v2 zddebja!H${oFdz@MX@cwkIaVfu7CXpTkp1eajL75YV8g?G0k0gejm*?w!{?n8l#J! z{`%QML{_PP!+q_IJ(W6tfsj9QBCNE^^m>Z_&VA+oq3oQ3GY#6cJITbhZBA_4wyig| zZQGgHZ){I&+nLz5_k3UdM}O^;eb8Oi&skS>*VEPa)oay6+0ln(Jy=N3<5CDzDhjZB zHyd^%A4)u)!#5J9HF8|&SKHaI^3uB5TmDghKUl|4ldi^#IC;8XOMi`lIAYLSih@uN zWdxlOUH$_-Yaz!?;GmivKdPpGw)_}uH?W&_osB1(ac_m#M_DscU*$3=2fP5{oxDB-6i_k3XMqhcI%&un@>h5D0 zMg4wTIU3T=(9CaMHDim@YxKlW#ntH7)o62Mm5cky&nOU_i^F0E*SKauYue{Lsiv_~ zsLQt-ZNa~|q@l!b%1L1}!vX2*tah2_mG}6jbaBVbU^E>O*>nu7q5>{&@?W+VvRb=p z_d3{KHKgKU%ttjdJ?F!u>6x_b082&Y?<(0h=xccPTWyw_`!`*wJ{DDN&(R|^w$+V) zV~Rm2l;;$ILxf~6SJEy<_!zi-&6}~=9PG2x61c|n)H7WKWat|G(9o4QNM1VN{^OIw zmyXKlX)OMUG%1>y9myP)Zfcwx#iMlJS`?5!e_rX%H8k-w!a1}Q=m_mI*(LXh*oLXs0i$ta+uD#UE1sY(!B zD7uqBJL9v1NVJLgIU4^tsPKsvZ2~SSA_$6Om=TEU(MHEa1p$I6 zED07F43^|XmP%@t;~<;KgZJ|oi$KBwVFZuj9y`4j2}Q_Q5>!g08LvRvJ;EhSQtKon z!{a1W78(KrqWeav|CMgBR#K{pOeqPFIrGJ2Cahf0o?wdC*oTIz!c9h)g(QPqh^>?o z0KM#7C>2RY{Z};ESb+2}BbA!|CqtXn^JG`C`N5HbB8x-tVb+YeS8seaO;8**w_-6@ z6uB5`9NE8i)RqsWfrmf%72O^!OJ$dtPjQx6D;{E4`Wj3{#Gq0bWs94YX7KnIh>s~n|uJpf0B zB#1kYpa5kJh?HDG9U3SowIp%TdnKjFRSE2@u4D|yDQd6t{*@z@>Zxz>CcThMyr$?9 z06i7HqLH0Xxt|fc@8w+18C(|}0R1Q3Foo1kpYc|}>yyy4DLy17$N-3XwIyKwU5?Tr zVNr6#ms&hy!FQbGB-eJJ(?H*zCK{e(7D5(f1mQ>CP2E;vm=?H>~N4{ zcKW5#{+dQR%sb`;@XL!LmK6nap`_qUhL&+knW%Oki9-I(`JDD!dlYyR~pbc^W7CVpu<}X(}DhBP>CgR$uUYGOR7&aBJ|e921<7P+3l%&sV|oXnBPExb&{t3)f?HG>(rl}V>1 zdRaH)VbV?k#z}lIs2uTu%(j{!WEM(Rq1eQ^OJXTl72abF=cr8+&3ySF{zN7G0Aa{% z&=`PWDr~AjzJ~A;$v*FoI0QQIx1s`>oZ2k#H*zX0?ALw{rFChp1k**Lw6WuXcwKF@4BK0e;bL0Fudym|C~@xq$ZTdu7Uj5b9OgN1UA z?2e2=*Tdj{J5;a!JpJxSLe?~OO4>5Dyr7Tpoi88n`?INChJAaVGXx`EHFw(;Z{G@S z{jkbu!r9h4+vC*SHxMnpy%2*~fiRByfzNY9`|F)Q-YP2Dz7GPxY4o%rWrAK(zjW<%-d-%02Kv~&?mErM&n%-ltB9UnAU zdI;?cmLu#9I-&Y8WXD;L3@6?cORD<1i6_q_s&b>*LPH>h7g#h3s0Dl=mSgimH4Z>Z z66e$DqH&fo&|bGlKhhK9mh3M)&V_W9i5R>q$|>D+Y(!v4yC=M3Y#0ZB8?;@cI6JgW ztT-F2B~Cw5Ndysjh!p{*X;ip)9dAE+LM;OJIdUV@I2*D3iG{8t*$wuZb%H=VR10v7 z(9S+#q}<$}Cd`0N0Of4)fdlZtH(!YuJLy*Z@1G!9D+*FUof@4iltaB2n7XiMh-6P) zi|*8{tyiOOy^4nDb>xvyb>^fX*?X+He0Ao`(A%ASo@;g_qY0NeEris_T-QIBjN|w z4;zwR3a}iLUM{E zlkUyJ;R$D5^DYVmS0jVzQfst{A&87!7(gotd`rY!;iq<%65Mh>L3BHyu^vUmEUi+F zC6!S*P6_!Z+XJ#l>RYHY<_1}s6x_n(>(WD2CRx428qONiCj9o27X)FTCe58f9#%eV z8w2t+OADHARhy|#Sqvi+b?|yd8Z`34KAQfWg>vI!Fnzrmf??zqPNsLDD)}!Mq*%eo z>OzKO&~h{BK}fM&4Rae1%AiCD8z@GvP|=}jXgE+7A`^jz0r-Uw8|HcD(cFrJM0_qn z>`CdVyWZKcHno`47?lYt8A?iSL2jYpUL1eh>zVT|W*7tDPabs1*&{)4f|URhaK$go zxBZ%Q{7;5ef1xk>=hU~%SBpL8_{5&&idcpsx7!{vFBUk z58Mlznh0Zv^XVIE-9U4VuLjLI3wAr;mRc*&Ph(tP9gm%jKy`De3FuNI`=&b8+0k+~ z;it0s6+}`=vjK2Bl(BuRWEiS%NLN#1aQxq`3(d;Ecq zgzU{SueOJh6xJ3h;vV%7_I2-KB*Wnr*i*)WjpyZ3sDX;#X(__lF6Ffrja<;k!`)Rj z1OAm*qksd6$v#?v6j5+Px3=f6ZC+ww4naX#X&^m`f>jWivkFBp3hV^9UPpg?NvP)U zb;>V|of5uw^0R&7du!g?Z$IB(P60XcJaj%{Q{_vk?v%q5c4)6*mnvZ0*^a&Ruc_^q z)vnhI40h;TH4syMYRs_`h7&`uq5MJKq}gRPqgZZ|P|JWTACPu<1~Ys2;gX`i^VRmz8*SNZBFx5R9N-HslDyyI;P)K{#n(`dABu>wc@>TybkoYLT_*J-~gS`sVCk|ujh#G9dwF)cD^rpkqmH=wrJ4j?Mvs3ZgesUBT ztFYGpyw;X&cr|>Lrqo`6Fr75Xb+vXH$I#lxmeo^PRc-&_N7w>;DksX; zc^fZ4-#ywHI(=z>)p5fXjuk{2jo~fO1XBe0p$jJep)QLDr1Bwm$K_sVjH&cZI9V85 zC{qeskXWEtfLh#{@0rh2^bey})MZv>mOs*1Qdm%!+o3ZjGodmiGosdYL}-lgRk~z4 zRM?o!F^>UuMG&dQBbbEZGE-Fgl5k2rPUeL(3D#q>JW%lV2#k_~<=|6bvi!VG*Z`o? zS%EZCLP#?MJs2oYijIrWiT{M2uIs7uo-Sy==S21s3ldD36<~V?t+a0~Jz%T6ZYZhE z`y-M8H_AzlI9-B*t>n*eS%Gv)j`3M#06BS^EK9a!|CBjm7^FM|xU)uGgSx#y$W07d zzdigsot=Xy4W$6|=i9%)vjtj!LR+JM5#L}_@;Am*KpH4zNfVh+L;eXBJdM@t__4A| zHtYHPxH6z+EbdL(_(QVftZ-BNcxF0_b1Vmw;$;5s17AxZ=8gyX*t14`{Vet zhf9gBLg#qrZIZ&*Bx-H^=KfopJp^{V0fMIpAh88mD;v29f*Kd89t_dC7%0|2V%tun zN|1P#SO!Lk-+-1-48kQGgH(uv3_vD2fHab(;V0oE;U(cA;illC;7m&v1;|?dd*v=> zPRg{pT0MGUDlS$!8l$1ISt)e2L>EuPsiebLaY6KCTs34U5nBal!=mhA5Sh%*P6HAJ%`^R=&&?t;NO|EH&E3OK33rZ z@GpxHf6g*qz#+3|pP?2Ya%{r~;5oM-M$Q-GGLV^2gLHx5&;ag18&v?JC_&MBpgxP% zY!i88<$Q69;t5ngME*+Pzz-tafK%fVqThjMV7uam8^K!`KfDcfMXCUrf-a!{h_{IO zoj>BmCgVs^bRH zCH3KgBle@F!u;q3wmdW-*u%m?6RTUj09M zhFbf0ir#x2=V8*92vptGx|j3W0Alpqf#}KN1QizTO`&Ma_?KD+?KLQNQPufF+5MN<_hQ*?6B7!hG z)opOi;}oaN!A3W}VI8pxZbjROv^Mek;eU%<3UaD@=2UmN4C} zT64p=BzX=^3bQzNL5jj`?~CdQST@l@-bK2M{bn0V=rhCzp%<#5xk*G4m2~i0gcn@H zv=fHV58U7%nEGVx-`{>!B;?9g-rRA=o;sm}ZaU_`^BnGD)!CAAY0uu51=|aI&piQR zu+Lpe3Kk`8EWFY_E4sLShg=ZIJI=Y7nyO9Pn{tTSe?EhOP6*z~eKQuAriOAX-kQF1 zy4+(;2QNH_L1;=mML?*`n;is z4WR>c8DZF#4mJ~_oJYn`KnfLR7J8#K)&{$l1_y2}E(tB}<2JXfHjni>FXl+TMy%x- z>Rz18=Csiz$>2_88gk`RLEq{J z)mfWMNq;&bEy!ZwiZn%;W zbMY7p;qNqZOEL#zgC^bnpkyM(s8`4hjpk8Mh*8=r5Z57HWQ{H%ow_(l*y*SS<0>fH zo}gdhv>j2GG;K7M&Uq($uCg6Km>#sjV%WcaO?eOHEFWC!5|4@I2omjGr%^qZs5}?TBW5$q@(Dl z$D71#=Wb;)cvYQHl80i>ot*UKqYjH{4)zrs?$0CrKO+Yr<>5d`;*mT9h=id;{4ijp zbr$}iod_#8i=ObM-6)G^ZF!O}q?HUzIg->Ikv-wLi==~>Bj(Afxys>(--U;`%BM=% zP88>}ididJq|DOVSm8F-krqp&qeT|cJLwUy9!sf(l!9_2vP^-&-o~y_X9ep8hpD$xT4|Yv zb|DfXlX8x&o$}*SMxZ%Zh00JeMPQ{!nZlMRGjWf;u;=au-*Kpo8IF4LH4|fwTw|ca zwI41TbF(V0$J*BN=tJM`YKLAu6$)v2K$^|3tEZ!>_lc{gyn%M#wrT?Hb~*c0p0|%S z3%jVYHhn)&i?^0U`^rk}Hu~*V^s>*dDX+6xwQhc&4+FogBMUyy=-hnY1cQvvmB*E8 zZs+Kn-U0Yg{}*MQ&hF&Rv5&KI#h7kF*|3;B#QpzcMDllrNnVd>##q?5oZobekML5CZ`AkA) zsurqNLCavx&|au$7J`xDbHDR>g}j5_%D+?#g~VN`s1gB*m5HcgFj>WHc83KC`pGFF zyzo(eOVZS&6TtE4-k2oZGX^dmP=OXWSdkRceiY7K5{0DW@^i8s>P%%PatoQgX!2lc ziyrf->o&!{tgXaaXRYee^l1R z%yQO5>_FUp1kQpFNh^xO%p}~B?Te`7@k?;ZH_ZWcaQmLUL0UckB2+o0M|GQW?CZ<> zO@@>kpR=%2GTTE>!**ug8y*Lq8*avR$Y1wq%?_)5JH6ZJ+w2a@ed>rZ8ZT?T(wY#( zEOb>yc|Yf|)0S>3!)0i@>KV;~Fxlv^B1+MJE`VIbFt!pmOPf!joL|bxRuR_%w8??P z#WY-OjzL4F#G&%5V^EJ?^Hvhlwo*X0ie}?aozZ&K78c_$KGNCSXL`@pqoyb}$K8ua zcPvjze%R|(;&J+GgXA3A<+0G?ERUYVvJ21kI40Y%O|}_>T~pX;_FWfJgw_2B{HxVF zZ0q8%nSSGrd|Omqg4Ykes_PTc37bV(si8@_$>~A7*h!TcQ`d(ovuyxHtuX@Tkz-*t zDe5>2b2a{_ZRT#4R?X(P>C9wX+569d3&kI>IPe)*8U@I(P;%wNqbE;PQsJdde>H+h zW-K*SEyR6!i@1qk5NsPPRfE;Bb((3<*!BUrjs!>u;dELrbG;}F>Qhl~Q|0*<2jQid zt`~-?u(g1u#!8J8moR$*Gkn9m;9!hj?B%r;w2l3<*ri@rJiWS*!Su3rhD}UHEdi*d z3r-&YK;=Pkk$Banob{r z@}sF};$m$i!%#&=Q`E#5^~g5lgR0VXS)h8l$@1kD)pO9TP*GCyt34Eof8`bAIw*|N zK9RruC7e@uf&GaBDH(RGnQ;GCi^7yH0xtlU!Mx8CAwf0QRH!dF2bv4hP-GaqHvl&f zaUAL}q(RuD09yXBa8nuqS4KSCcw$ZIa_@jbR!T3*dUPZRkhQPG?Bb8HLNnd8S2-F7 ztyRi1<)&iXDd!Pq$92ek9CaPW$Wl^#Y zq2Gok|AmrV5rT|O5g~#^6a$RFMmFIA&!e~OSKI91fh`ItvwTX#^@jAiK|^)vs+&z; zsBKT?*>6~>rR17p*$9?gxmU;O{o;X0H331+$NPZ__t$Mld;phs7pm|s~ zeYC0o)JrY$)n=lKzEVg?4NfZ194fVf#ZYBzX4!czkt^S+LKtKS!|(_pO8O6S-J^NI!gA# z^uy&5UAU-hr-H+$z3|vw*j!j$SX`9fvAoLhi`{2B0D4r^cB*c)PvhpFfCl`QP1_m$ zoR{$x14rXMupJzJcM%4<-;OR;`3AY$Qx6U$@L{>^E-Uk960MLOSEpZaFtltqJ3bZ(g_~cTAU^}`w4TB8HBBNfUP7oP{%=4 zCMJdt!;{~c8<{z#N-JzPssq0^!7LLe%Fd{kyUCusuU-xq-G;w6&*aWce8pvSm|>lk zJ&Yp8GH)_cr$;?US`K`DJow18(r1Dnu;GwxGn>a(=S4c^_3oeS>181y{xOU(*C02G z0p?{m@ONsBJCSs!~goI=>wjZZNOy z?6;*hE>K za)tjpCHbrbqC#n0Mow9hixR>g9-Y0Ht%kyDNjX-PmK<1h5#Ja5`^AAlpErU~#qhF( zqCyLhn6wrJOdzPyAYGEys`z&#dE7hfn}T$FP}1FsZdBO2YUK1OXG>`jCDe%@e#~C% zlgWA2@p*kZLb3S5Fc5!da5%ERJ>1Ct_nE|?#?87kQ;h071ZLm4o=*5hmFg!T((FM< zc+CmQj5rD2n`{DfjbP-7kwOWsR|M;4GrmJ6d~#oRu%2-D&+ZY1h^D|Qr0XA$9;j`| z>mq--gJ=>^8c@n5B=cajk9$A3P5Gb?-8)WE-Az#*qgK9$BF*15fKATEq-iU|C8JTu zZpIP6Y9zZe4v5T8_d8f4L#K^Pt#xzyQ;gG?E9B6eFv+`iiZ`O^6&&5tsg|Wmv*mKt zGQ5$GjFR_H{V&od?8rvYMW4Z55I3RfI7GV%!;JEC!&bsH^r1k-k(zGkY`z72NbJmA z**dvIq>2)a8f(C;IEOCIszy1H!{M*PKh-Ip`~&rRI<_@<^$xcx;!+%VBa1h`hzqELjG))7;;JRz^@L2PUCqgc4nUAYl-0@CcK)X* zGKXxj?he?3{(u?a2#XXcTb(pH1*EH&EYAYbaI?gk!|h5oXKNO% zKehV`j4C)?=*YvAUlTj4^em(ht}DTd;K9G`*yh^gTIXA}*2KBYy@+S!ra$t} zOvn}Ih_|;6sX3w%t|6fTnQn4U+F86mK5^stXyiNb3+y#|@;h%Q{Hm2$e)p6AVU7Jk z8?&F1kNvEE{&0Af`L7Xo==@u(@bV=pxLi?I*jFoNn!(O2Q_CZ_YkmWfe9Qp zUm`G91OGtz`t>8nV;C2T!lXm+CZ@Oli1Z!$W6Z&n4RnXXWOry>+mxmOH3ke;%N7r{ z204F#f-!0I{&Mp zT)xiD5Vek_!5XrI_i>4}%qsqr*B5}MeLGJ}0xAxr+RE7)?ffUA-3oh-$s;_yw7$(M z<2%u$$ab*<=UQT-$E6V78*F!#K?%L@e3km=;su3;&QVpZazSxNBv4GN5WOFr@K%l5 z&dR4vF&|GzOUt0^E?g>47pxwk8vrqf{+V?`#f8wp9C06w>Sm)|0x9;2n-~>+LO0j)mWQ<%iOF}uLS;+ zxkFjf;x`+s48uvW^!Q12_z)jz?cdmQy>t2*uf{Hgt@74#4$j+c4--F?*q!N&Z7BQx z&K-|diEFC&GQ~YU>(%H$D3*O4Tw;lannclXpxny_45BF_I*OI!A7nyZ_!iIt_ONxT zd?jKG(rVUe?joB(YY=QbX((W9-H%n05q9!3(J;aEUh=yX+|*bNzR|RHwQ?G>KnS(# zd|n(C=^^_ryv{!-kFV%uue4_uf2_s+A!QGLS6s<|j<5FI|(vfL9K56mZeC~XwFto#Wv&bE1oRlVi}{WL<#R0%p1Ev zc6YlkWwu@y%_3%k=trXDSRfxIsdRx2eb`hap`jl}AvW?CB(4c@vk!1rVDzrM6U zjcXZQ$k^&pUt7`6iN$qjo%?F}>!5SjhLR4vblw_m9li`Z=lmv_{S)(Wtmyww>Ucp& zsN5vb-(4h(@SN^J2qJKN3iX`+NhyohcS_2;BKb?( zN_)^6_nI2~HBGCJ{^WVsf%e2R@~It|=hjA=>iWZVRD8}~RNNQlyLnGQMG=HOJpday zZXPG;Lf8Ae=;i7k6jnGF$pwt)Up}T{r4lkqUbK7)+~}Vm4JX)Icp^{?AIds%sBoe`Rn6<7dLSyD;!#Y^Rz*qg9Ewlu>o{J%&faJUR(bOqh0yNQVF<#p&!Dc$^8Wg6upY2cwpVemv)6v-4=hU~L<_ZhKi?nV*ztR- zc{QjSkDsWg&HE4_v)@@g*jWF{6q(0^?YVWU*5$<%Wc79Pd_8FKEe*>dxJ_>LB=-%m zi_+;8>Zv%*<w<)=k_b`0<4z-JbtY{ETHzBK52T+8pO(Z zZfd;tsQb6ky;O8IP0QN6n!m}sUq0OqN^Pn z1h>PAqpBjR{*?WUr)n#Kz>-BQWPqGwndwBG2|n70Jkl%Vibc#~DD^b=OyxGP&$Y-J zxEH-2XT6rYH+)UfBw)3dXGP4Ni9CMqyC3I8ER3%>J*;VMKS#gvs<`CiZ@YfH@;)BM z{9Ws?A3g1E<@>;&p0xR{?*3=0IjS`S$IzuWV-w6feAqHL8F$xbaMgCrB&AG+=Rq+K z@H}W4br$s-RxOX4w3=z^;0i0b@%D@$bEG65eTfE^VEg{3u&XA6H$smoYA8zJb6tR~>SgTD_o=i0Q1{F0{mad(cj@D}TGRo3$!AH! z$bl7ab=my`0iiOUWfQDiO|VR#P7|RN;ERd@2b2APd96*;EqB|DWfR~8qIaQf&55}^ z^jz@)e5%X3TVEaH#?*ezgt^Mmt6pb&V&l?zNVTN%wWEK?*wl4$AG<7(za;z26P=K4UH6iS?;#MyyuEutq~!`az& z6;2sO+cJjUc_X^_z&S#0A`?fYVA_v(eh>*Uup4e6p)2n<8aY*ig;Gbj9FCj&S?9fk zSeA@fc+X~_5tl*PzGr6lc^fL@WIW@y*5xqe{k7J;SMnK~o@?R5)OzLR?*U)sao%O0 zx3c-l!ZPKqdk7>i`Oo_DF}U@&AF6Hyrm&~^QsP(N7=_7^PM+^tc5-;bKTdQL@!EQP z1VzfRPk|&~GVVik*3>R?PL#x7zYe4qn z1gIw}3F4J+jBdfcpfX7$tj_RO5w8VIMDhOQ?>m7=745`sixX6@yX>{wH&zBQK|#~p zHq2P%R55XZ|C@~t;t4wo{uEUOcGUN2en+36xk-Qz?WGK%7n314Pt2GyZux1qT!nzv z$e-oF#0_`=n1dmLC#;87skV^jM5xg!nFT)aRyKfvh_|{UumVDxf5tiCF*F>qWq1R% zYULCgupT+b*%4%_gOgD*jZ>Tq=WgyM6>s&l0;^SMJbfH~s2t7hyS@#HrweDP5G7Wt zx&S?2kLsO*P{JFc*q3ojV;vq$2qOc(9O#wKoeEu4$xg*xSTBphsRuaUIgLB4)u)Z( za(!G2tu$VNgFijn+ejL?WoU=L!awg`V>cuVZ}bAb!rQ?le?erM-b>VJ2Jn#u=LF|C zF~W^9`a~c|efeK#)OK(kSlZA=y6>9~314UydQqt_dG8eE(B@cAwK*etQ=3`a)`XXMz4VTZC8FJzl=|*{2$x zi@8QaNz_~Lqj3$df35?H}A9PEV zThQ6{>dZ4H__eQ<|C#G}m~~q8>GsZ;$CTHU&y?R*KyZrX6#IoZ9qo2Zo969MjM>n$ zJ0uT(#%*6zBeH?42a93r&Xm{n^`wVc=a7@PmTilc)&*C#b)IeWbQnOLdt7*m-z*2; zn0A46g0+z~n>Dzqfj$fWsi9B&Nn`A3dUcB`+S<%E^7sH9 zz4c7B8wO%;5Cje{P>6Q8chq*t!zyj1Q=mN5M^~dGaS? za~^e3`Z`*89@MoQ0$IGZqCxg48}u32V6c{|KwMIumEZzW+>F(MOkZ82v|cy%3rjG7 zH@n*fh1>Ha0t1}Zko-!5$wZht-^^%B{9k9|XA3mL&eF-=FqhyiO+ref#Q5~w#+aROa!buI`*;8E#3>=hpf7n(^Kle z?zwGq`-WCc_#+4Vx>k2J>+brJ>h#jIG%pcno>ue9RKEUtw!8UZUsMKqI{1gD!=p=_ z^bK*AZb$!o+jgswmRo7(bLo5Ocj=!q%(G(J8e`h$o8#&&8;4;C4Q2#zQhBD!nAAIw z4?MNadYuT`0+QnGWStdFv42eV=Eu!RX?E{URO!JH&fL@|Vw zvIxhr@J-5#eFsSCIumzp~s~%e`b!h+cmo%(09`kN%b* zP3DRhs~*EeHJ?9n92Koj%lAa15rRUdWrAYBCpRF6K;LCvWB!*4sbp_=s_(!Lf=H)Y z>?N;+Lc4Q`6rzyrtbb9>dhK4>c^JGojzaxDfHvrl98%CH8J7`lkE7!0Wi)YYO>Lbr zK1~TkDL%mVx^H1&4;NqrBnTY0`d4>u$QM}Ba#+6e!_NC65p ziZ24pZ>(7>MY2&$+6yJ=0j&8VEU?J4c@a-BCkU0ndyD0A;q&<{RI_xcOtDO%OukI6 zj<$|wLK=$b3uqcCg_M|VYgS{QTS9WVCy|TACy~@q)=|Ky(az_KC*{_|21saxm@O+d&X($>dD#!x7P+mAsybiEJ8M4Y- z3S%V%u@OzxpgD}#uOMn~uG=Da-H3ZaLFv5R!S6TPZ=M{@V&OTP;Q>?t8z>PU5ei5W z1S7P~2TbMUi?{HCI8rI38HwZq)w8;Aq864hQji|3P+|UnVG#;J1|P+4Z@wXBU*&K= zzIH>94jAvOweT|Co-33|wBqupIXST&l3KJksxgl&#w!W)rsjo6q&nGpp@H%XZo;)Z zNS)AYknrC^tPG@2$G_P10rHM@^@0&`T4Xu&XoaVwEk^Z>#w2oaVdoeKltTmhAoXgZ zaQHKALxU;7#}JUDBN+ z+lzgsne|1xBsuSyK*WZb2QdG^o%n@1Ho53XcAw^2_X{yD1^pGu^&05}^Y z0Q}E=!y(C4#Z}G8*ZrhnlcalioFx4oXuSg?tAn~eyp*<5RPkp@>YlBBMe1G89wT*q?vxg6Z!nRI9bfsxxKnkm*w5YZh znYn2<%E*-DOw>CBMTJozN%9hl5vg<9%SmRt4)J_I23v%-=`U|{C&4oc^T)}_U&SFX z)K!@WX^~eM7a;XH8TTyrJqfrpM}N!_wOa~IXdzlmjAf?NNVNS(lSB=}aongIRQR&l zv`haEP1)p>MCI$w(P%x4Vq3AjZSaH`agwJpD_inZM+58hp0J;M{l zU@}D!!4cEvY3*I_0CN+5-Et8;ffs z7YL572R<5Qly8#!*M3)Q1D!?ecfEI<5vcZR1uD-PGhNeAWJPcqgr=4HUp*FTu_L$y zCgFzD;JBDrFZ1~f%iV&PAAYlvmO()=fx<_G7J2tjQlMC&UO65~D4Uh^G*v2+BTuu` z-P42kzg^3fbaI`%ewV-kQ-bQz?l~VhpFOZYWuqX)1^wvdg$s%IiE}2tAEc6?`icvc zkLR_o7giTf7GD>)tJP3S%;l$w&#JPl&<$LS@tfl1t21>1t7tSvKLDQ&VQf*Zajr>n zQ6RGy{;Le>cF*W!@8M${5eUO8#RZPSCEJpHaBC6 zm1bOqfTQWTN!av+-1Hoij=8k0C0piemxryBvvBD%C~>eGY!fBNZg-pddZy4bsn^U_ z*tH$e%NyrJ;#>^Xm`Zj$P6|ie)vUd*nsHc$;w*g>Y1d)JybSG`0W zY=*4n>eVdN18aM3{%UfCh9H7?aSOV8l!C@r3&Hd2hT{?bczBXe_jQN>%~#X#e?~vG z6eN*`Soq5+2Tu6|JOe7VT7Gc6?+$(ZFOE+lOk0G;kF+LL{Ej|Bo1s7_)k57iLvXv~ z<*ER?C5J8Wor2Wp8$K={u1GLqCOp;*rnsh{DV!Bx?Wv8Tzf>!o6lsGZ#H7B(Vyyg`Q8UI6yLWpvN;3 zo4IboTxwNv*l)4EBvI>B<4{d_6dE+k5*1?Q#d0wibkM`MkVfCLocKa{;Kahg9T>Y6 z&ihZoG(xg{57l3iS&$?#w@#`Y+QSLKYGBO0vmceW$D^zpLH`EC;t zzoK4tL#)6@8k?+BJRS=_nez4oXdA#>pa@mrp2NA#!FkK$Iy0x8&q~eyRU>gn4P2M1 zb6iCvwpR4r)BD}_*zeT|{YKnlqt%}C_!uitAs&KN5tzeg$z8O5QdOw2SNtB^s@m@J zS3-p6ND3;-r^12>3L-3`Ts`IFqy_ZCNp@sF8^@&c(Dy|-8mEAfibuTk>cQ~G#HGO} zD3vo(#6a!$S)SxTn1HxT(P2R+L*Qb2aQ+nU)t_&@@HVp_J5K62bh@gOlqlG zDcqlIdydJxnKQL+XIAq8Pc5wKi|PFOs;l{o@Lx%PyBdLf+W7avaHk3k$W{nZ%L$hK^GyqR^ zyijFs38ZnuiV|wFhAjnQg1nwQUVST2vvlSwXYl*3?N-QUdH z>T&T*j%CKSX)&w1Cf!&~o#GRl-ox2PEz0@$zvI_7%$=FF+1Gp8aVT>Sy?O`FX4G@T zvN0)o=FSBk;`Htx4g=%VHx=^C|5)``WTp_Wa~&6NLQ(FRX6q)Oh^F0=dNXwe z7|eSIZGcSv%4Z9lNA*F-M@b=`hlBB+Z6%tA8~1W(4k|(2lqEX+fyqa;TGz_wU}O%K ztu$Gr&Qs$GO_NhFXmPZ@B$6!gqvr<@zlijh66R0vTQBmlYS&u*0J)v29y8NU3SV&2p)Hh8!K_GYggK>%#hw7Ei@uHB1pL3 zK1GOMwokT~Ld_QO<~Pf&UgnF%58)0~y8oRT`(JMS{{=q4$7e_1ocl z2s6GN>@e1&`Bod~H%ic^Ev%$kW!8lasg1ZZuWbUY9_dA z7jQJVC(blu@3|T7c@>;<1}-de zwrng|2C6KCxi1&ks~4E37FdU_*Oq>{wIs)~Yue9!2^@vs_jvR9 zxAnY5KE-bj3&oxUAAY0F`z!V3zaYZN!;__xeL49)Zk^X+WC$cZ^)G&e3%F+GzGoC4 zrSdEIJJhz0aQyjpxIfz3+E>}{`r7^6k0;#b{cF?9nx{gcPP3D00PGh$$1fIkXi=<+%edY7Ew*CB7omM0Hi>o<1tEqU&b z{CsctFQPB-sRwWGu>(v$^;UUQlu~~qNmTQdxJ$#7(4rvJx}3Q96x@D7x}4p728;)| z?3xC6J=nd-7OF?mi}x3k&x7N^#Vl8HGA7gCou#28ofb~xZ9r?yjclNV1}<9iL_|m^ zjr`M0mu3ubi&cUg#1eu#-xDNPb&co}=OJO1N-q9JXFNaoA>jTMZ2uxrynaP$_+=Fk z%MEI0WZM9mPaqm{0Rr2pi_g?rY}JFRGCAg_hJRGbXk;h#qL{2`JZT(0;2x($S%zK# z%PK3KB33!{=P*pu1Ysgtb-*KJ%PCkY(j`<+DNiuEEC4VVz87yr zYc5Up`Mx{ff4Up~dh?I_yW9KsPybB4_mY+S8PMNv?Yc?9L+OT)yC>_bOO;nj7P+_n z`OCfa=DFTVArUhu3dIO^tMc*ZWMnjGJsB`G^krou@;@;`Vnu5e#4ntp*L#?vswO3x z)CHC%-MsO2_^|o5dJ!+QW3Te-b7Q%Ac>n3=`MHTY2jw+;mYb0j#D9UCdY@(m$_dR-Pr3C~gjSVKU3bZ0W8GzG!MJfuee@-T^L z^oexjJXPJBd69C>;2^Oi+Gu*|2~AnD@Vw#22!v0vMrhej?MTtnw(6^NZ?iHBE(*p0 zr_hI^Rc1LpxKTT2&UEiVVTzYYNuX7|&w>pnvd?W{$_0Q_EX*@>e}yWuTryIE%DEHWUsBfZ}O=RUDAEdR$j?# z>&Pn+PxRq(RA#wBmW#YQ)BQCRX00jI4k5%deJC=*ELEXIS&Bv>rN+2O+2UHK5}LMK z&{XkER_zH&q!0^@IHD%pxe^K!#;D1pb7M$%?UE+tpq&T_lj=KVEuBfFu6Ie&Q9~%6 z7bZ>C+NL8?YNgtCqUm{|Rk2f<)LNrY7$SIoNg6*wsFhuqh9-DwR*q^1BAjT5RK04O z5+>!B$9#gAy5A*D`Dmmn36ll{40Nd-P$ft`_>y)brDGAQOg$PP&Ezs~QJ-i}iGZ$p zn|Wr8G;~OmZN4%>mI_m=#J5bD_wPSH4%5@q&F#N=&g^MwqYOJGA*9Cetplg%d8h;x zm=^{6iPGgHt|ty7Xhe#E%$4c)3zMcFIW$lnkeMd6)Q&hr#;4cBn4AY?!QKyK0c_!5 zCxlgDPKWgDB+OKShav-}sLP8y-V{^ioA0DLh_`LhREVh)_%uYz5oMgFe5B3Bj#`dY zIHWPsD6Hu+II4ZriAZ_c1SR7&jf>G*{sL`3h_c)A0-}l=UCPh0p9*LmGt;I_%6hi8*Xb#F)q$W!iFSf@NJI2BBz#(y+x? z`hazN#nv5!CoTlvz2SU*yYd6C#LQN>4;@YOj5XX7qCy^=@>Of}1CeY|+6O!Fj}E&;0{^IUZe_l<|fp_}Yd+e%pu z1ESn*KLF0 zy@B};cj+vAA&L6zE-|ubF?9_GMgtT@VAzw?g=ZQ}Y#90XeJN6(=h~h)K|J>y9*LsJ zM3ww_&`j0o-SP*P1F637S}$}eiRj{} zwo_=TB}(EsQgOTAffT52b*R4?k=YdxgV(R3trB0o_>m}xcW$aOGD5LFvZr0H@h zQcGlRH}cEH&5~l!GKmUcS@es=)RM zb}mS^wuG!e2Rqf`x`V2ECtYY89M=M=@$pFtS}L&z37JEaqE}bD9;hy|{q~fdtM4vy z$i}0Dz@2U4aqYVmr}p{nee}^?gi@GXU0qb5Vi7M*{jt>nF`<2LCbs#@F1`$>FB_aH zP{@3m;q-o^69;6*bD2tI2eizfwW)s6JTcl9*3awIUGu{jMVeh8m3M`X?^OfSvT};; z4NxidN&Gk<<2S{xO>j-ulu;V4vb;{1Y5kr*=3^L zw0^c+r@30EsaS`lRv${Woh!9zlT5Fvrj=T|ROv&J4s(r8Q;BYd%~9d&3ulUu+AfeJ zI&bIz0^cs;*-*C1ToVR#fQ((%X3eA5Gd2Dt@)b_sTN`4CuWoG+8sL;CCGA~T>bl83+?r72GNu1!`@iI@i;nwasJ*y(bNb=^{o7w}7`Ew+ORX)Z zM5pl8u!#ySB+w%yRh9h_1Fpx|3AGop!Y6KH-(KV^pFUnyRrvo_7r>aY3B)uU&>)^Az9eRu!ixBqlqkDuLqJn0+C3!G|Bu=T^$ zYU^dsiQk^2j0&9tnv~o6X587NVnuYliHyfnwkod^FNkE~-4)w`GmLJk(idwlfFHwj zSLpj?7gN#j;jqoCh(Snk-WJx&9SXd@8|8ycyxxcBbBtK!dQ;!`g@&^Z*oW3ltXij` zvk^y|A^-X6M}xfHecxtf;FVnv8=Z&0AWZ(8xu2-QWV(smNZc{d$MN7mwPzK>u}xx`JLB9WRe%$ueujb^qpNPR@SUl< z;npHoVdB=rSBG*RVpW4g%9F^g_!$vRPELv%F5wT>ka*b^+q}aI|acCgtTU2srV{?gWLJaP7k-*oVAoCp`;pGebR+z1w*yXJS zx`F#|6AtLYvY2dH+2xbMEG+E835ieY&MwO%rIlUwSgM|x*oBa=;DKGpEm283OLr5yu`fB$jljeCW5R_zxI`Okq+oag>zvyBK3#3!HZR~Z#uxs);N<^csb-$ZJ6MNA6#xeoZy9= zaHm?~h0wZGR(PSd7*7XyIXcx^lY6;!baqAL)fVYXvyaTUyqe=uKnIfiHx$ zIPUl+Ck@+zFAugkulPbZ%Kd~dh zv1`EMImfi(i#?G~X~h>pl(urfH=$v2rfm4aeCM{d0nYTH<-G}CXb4vF-oQ5j0VA1n z;ENbhY}tRp7q%g&VZ#@vg=tvug>*BxJ$$I&7PzU;J=(uyyHK9D`&3pomqU-4z` ztWBqjFz)y^`2~D4XfXDGFFd1}Z^Ac^H3z;Bl50hK!WZ)B(n>F6E~dEB%UXNYpXr6a zZ7q8fy;!#;&xziQk(cnzs5z4AI=N+%b~mka$a#ALHy!R2U^a~rs5aQL7e zz~#2ZxD8wmPmCM5$aQnq(YQreQlX7om=N98G&Bki+^YQDpS`obyt{jKd-LY&E~|it z9je`RhU>Gh8-(b36QM<~cctqw@q$Pu-d$M(bMATldQpvmZ>qSR=K9ymRW&8J3vU+w zlgnzxDXZO>Wa9)5#54pwr&dcT3+0g6)-?UJDcI!KP2O%4=}ema ztpukwsJK-|6?*IJNt<>6))jB^uGq=Vuiek;P-oTPY>MbT?D#1&(H)3=!?PMyw9%ej z7R7;%f12kGc684fG&USAY+TAi2G^0B42_{&S2iI6t2;!bNNz{iQuU*{rCX%8~(ie#k+pJw1a!Sx^-z6k2 z$~$WH&L&*RjjrNn6+a)sClQ`eL-<3*j8m1IR5Z{0o{^?&-Js6f?77<}Lbo=%JB2o4 zN)S)?bfMaK_tojiG@qAHvwQWqvtQ-&DQpx&)9Xso0Bak$voYLa`{6^c&W8`Bj(uYJ zr#S;>F@&->!!Udkj3`@?XnubP(l`t*wZjk^9tQU(IW;JMUv>2A`7L^UQ|UUW`Tz$V z)s#M$6)vZcjAq0}(O^jq@2DYIYclO9SJPmT-d(dB*(TPI;oe5n(v?o<`$Q;l7`Dl; zdyI_N_B%z>5+T}VWy~cTPJ1+W7WfDf0|6sb{Xvj%G$Kk0KK`Hhs%x$5xT5cd`yb9r zz%H#av*){gvfDni+>+v8YAD61wwpTG3aFAp{(aW|m^pLLxi`2%kOW)O^48q_z19ZL zSx@Z48!U@0E&&G2t=$ZWIs2r0ATre{m}Fd8Kl{D~w&@G9jY?N|65FMh!V0jL~3!_G)`1M z&-NZGu7}C2#XnSN5v057sCcX-5FYpD+ zh^`!Dt*i6etr2ID({bhotX)0;cUcM_;ge62=!n8;2_t`Uq2;q0L->Qcfrp}Zfr70h z1Czrp8pb|}@(O%U=x)QuMN%+9=z%WPIAQI2QO-f+y$lV&mSs6crYxkxjIn!SZR(zj zN!*Z?CPMwxXW;VT!1)$SGIJVHUUmvZy)Cr!e!WIL@Py% zXns;@39#t!M_!N^elsq7{gH;^gG$2{3^-1LkE?NN!fGMIAC+_fp{JW>C^s6$SQkys zp};aBOPW~&D;Wj8!O}=GA3?GsgX2Qz%Q&OF9E61LLhA+0EDy5RZiHTzmor3pDs$_8 z?$=`~&5UEHk_{}t;G`x5_2ayH2GJ8m#xSrbkHceZPZ`;1a{$9ajZ@x-6FEie^?tAbbiPe( zZMOL6COd*Rcx}Pb77(I>1!{3k8#QUR2<4G$vs6UwAQ-n8!!{MudWOW2O$SJhP_rB{ zPh|$!$Q#I0^0|vB?|S<*yDeB*B^e|H3p1{4-Ga+{k zdZ%%oRjD*l#NfLK-M&^W8trh0TO}~4%5ng~OnJ?LsU0S!Z2b`Wg%_k_NBf3aMJc08 zKz_>>%(2GZ5Mc#n>YJykzT|@;PkRr1Yl5r43(jdN?QB!($>pt&dfNJ4d0C{rcIwLP z@GX=c@~TG=9;9wq&We=Jtmg19fz_QXJJy5v(c}y8oSTV4@~TKsFgu`lo4e5c=84zk zo|yG>G-KPi0H*@N7y_2mL2#iOb1jP$CGw%rtHNRi|0y0_mS_TZX%*wfx~wk>;E>Q! zGt#2H%)b}v&S#8w$t`IK;FORsKp$jsg)h1(YF}fome&mwc+1I|iWV5uL83RBb&)m( z@d0X(3xkn}^+hQf1@sOrr=S#Owe>nkNJC4?-(*rzKm^{?K)mlcFmy=gWDpJ(MOIM! zHe1$O5=CSJ*8>q?^iq3t3x(9Xo=jN^OXOD77)7+@!QZvvh3O;Jzd_obSZL_%7S)Mn zYjh@FKqpq~dy*AQ>NReaVjmbu3M$If^}d>LURc3wQDeg@UpvFL;`y zHP~vwY~=M>pJixJrs#F`o`4wD@i1C8YkMXZkInpzLBuQ;$RJmQmQ_+9!z|Mj!_XvM zR&uNk+oI&kYueWTng$lCCDH0I1Ygkd3y(6GRMZLRLLM)p#fs<;zHD@Mk(~pm>|T)T)*PJ(g4?*nFt5L&i(7xesB}Lq}94WMCmmR{_jv9F3lDm?jlL zcv;s1azUxt3!s9w%f+;!J-R8zsvwSs-tueMQ>~GpD!hcgXsZr)*gk=5NGKdA@wPDeZW#qy^@P%ZfEE&`*3rLKYev`bN%W4yT!X_hbL}% zet2?!aEo7@{QvqV2LFohz6bW>5|_U%|NNI*-ofVeOVg@XN%DX%qL)fT(8dm=U+by_Fum_+#lGhZ{Q4ygqs%>NFW-|-#APvE(iUyyuN0SU$SM1{14!bC|?}^ zT65GxL#Q61`Q`hA&Qgn+D}__0fCo+dksGoX0~D|aK5lSqWQwD*>pPhR6g0^e@9zWu z_u;EIUq8RS`_qTFcOQPZxxW2r`8{g&=IQUCOys|3%h%uD-F~?FZh89R#q+ms??1i# z;qID^pDn*-(?9TE94&F5VXxJwU#bMkAC)&>I7KHOLF!R)X%{i^F;p!A$QdkQ*HsMf zbi-NQNM)f+DD4x`pMT_llZSv6U%B?p;x3p8cNOgq?So~y&RB%oU@=glgSO>8Ny7Q4 z&c6T1(FX7-2NXa8-1g2Vjy~I;5olKwD2s&%KI}>bT#P*JLOc!qY$%(TA33-$m}xkG z!2ut6UAmuaQRueBQP#s^eoP_R0mh_gha)7Ek9Ma*DfF;TUj4OaGVytpl3ft%2?_@F z#BhK@ZLu$*OQqeE>g>ah9I9hwq{QLn?;g=E?VmPjk5zBC;{`{LyO53-`gDu;5j~#Y zQ(N=Cn74ReQq%&b_U19(m=P3pkcSZG(rVOkBXH zcOET851)hhVExbePS_0D&m(}#F(TUD7xgMu`X#(SaooT9OCtdBT?4MQFCT$#R=UCn zBn?%0t8>=sY}8BB;zH;7QYZYl!B2z8e5cB?zlh^IAKE?{7x3wG|MOTG`OUp1giiQ- zWs2$3^HpxGPZe;xdHDj(&^E>uNfZgrC2FPZz{F(ub`Z$RJjI0U$Jig7}e6!NTmn{IPpLq{A-g7*T2(8C>urucB{Vby>r0nVNx> zQkg*YD|=NQr^fy&1v#MbZ17l~Td;5u#tR)s#I+?e_PnVCgxKhgL0^Umv=^YGV~RWD z(2C^-eL@|iKvTSUX`34 z^s!Y1OK_S+Vyd3sD~`hn>Q4^`--`xd!Jsy zqgPAnD#sp%B1}~wK|W6;MZ2(o#Mk-xgySXG>h-3I z3CJM-wFiLRY@sY{R*}yX_M^OLm85g8fVVVIkrZ^XnG(=efM3x|5?9~y`xCC+!94}G z@jCu+#G&eQ9!wEqA-S&kln=?}mzQG7D@BsWd8qwSU@qy4OO5RSW~sVqVd0~ejM;)G zyWvBrK|$jAHRBUK_54;8E79N@UsWn(%JqJu(W+GS;Rd}vz9zZ96N2Y=WsrOv!zfH~ z1fABr4zH4h#^Fj!O(&Pn8W`*@#35){Hr-;XcJZYNoRqJb%MbzqeUY#fPHwNU0jdG! zk)8!}nA;_!x|;=9vmPv~%27b2^oC$>W0kXEbP2x;l+i&HPzzyz;1-z!8{WC_ao{m# zGPqdwCF^ZkVcf}4V^h|Ag2UN&7H{aaRHMd$gns}=pVI-9C3nVV!2EU%0y(dRM9~+$ zpHi@(IuI_@;_+|-FE=$>oEu;ceOxrA$`Xc!$P5q-E@rU}dI6jAssX`;Eg2sMj*HVs zgioUuiZYYQ!k%A?haw|~9})V?a9d{*eT1vgfNCLe>1mPrs5yhNP}Q$k^9i#qFq!0d z@E7@~q+oW56htSFD$ikBu!mjMkfD=g9CLkyR!?Awj+PG#548;+Ft@yDM%YgZR^N5P z0M$Z4<+^e>Tu`IZelY8zKY@iaH7yJrF{4-xPc|K~A_*6hdBlQyTRzMHQ=mh;GG!$N z^L%hjNn175Nki;Js-sm&(}_UDm=665{_|v;dPS$n`e+Wj*1qKXRrC81oWSgT}&oQ}$PuE^8R6}kkM`Kdb zPyv2Ob-~A`>czLy2Fn#lFTgC+YPS2Ue-ZAkymnQ*)G1hr!WamY)>6Ch?PW`)-Ne<- z!wvgCRmt8iJ=Wm`qeZ2SiON8bAtGhR! z?>^s2VEE_#zZm{C{`Yra|GZE4zq$Y8pWOXNoO%Cy>Ciq=>!5}#^cCD_^IS2myN0^~ zx6v)b5`KGz{oit;s9@V2{_ww}0O#jpGkqEbW8aPn3nV)rb^vT0dKfP1V@ndr+QsoG>E4tYf_e#g zxaNJ;LQo_*hrk~nwPaz&1;`T4#7Ggx*l@(wMvg!s7JDpKAyD-4kT#(`{4#uc`m7ni?rTvCzW5y?b{@_g{Q@ z|Naj@hEmHbQ7S6UQ;+jx$^~gJJRHdPDy4qDJJU6XWk}KBnzc{YVE*L?DEoHfarGt< zXXR1~&Dk0*Jm^)lHIiCvSSP$HJV?NvabyXbSriK~<#K3qda1cy zilQe=3)%|~86O559BR@H<9m3}eA5|DLH9DY@2eQ79s^%n1a(WDo`46EJqKZoLI=cK zS5*U{_MM7L9cM;`g9m)o&ViArE#h!`ls%2r5TB7m{;fvVW<`GEg0AsYF}LuY^Nvdg1e zo(>Qmhm9&p3t-M8ACzCf7Y$mgmJ456qO75KK}|Ms$X=W;p`>!UAj%A55^fS7n zAI8+kF>CWhQAmz>fENRb1=p|@wQ@LIFRAuH2D42yjsX#(I9t`=*hZUZH<8WI(mx2I<+u4pkQPy3lesfxTj$5?xlTLfz~` zBZJLHD8<^dt1I-y3PQ`C;}|b^LooQm8867oy@El~*<=Y3(6Qw2U`)QP3{lKp-AHL< zXml|m5koqGWDN|MWGRu`LhNIh<%FxluN=LKX&j8}ag9gJemG%}xNtDLz|92@Pl^gAlp>PXUASji=Bq(B=mo)RfNo!Dg0PIV2e@7`8GIu+?}j9k3|M{&2Qj z5GsEt$OZ1zYw=m?tPn;M&!&J2!=Gm zd$>)dwI+oDx3L18f=~Ml@+b^)ai3NO+(w(h*Bpe|Dx%p;On8e{qSJWg(sA{07VoJg z9ELUm28DZ`@T(_`99S*9bc4lgCRP(F{&2)IhN>Hs5t~fngbL7JS-FIiwpFU@K!oUx zVbqx9Ebut3N356K{9a+dswtZl!)w_l@eUX!3$FqzFrp8zBD9nTld6({JjV_|JChbA ztTiU6H>EusP$fq`eVmPr%VB@Ao^;A+k7kgPT1 zOj;MHHSqR^E`98p_TAkZ*0rpLvkBW&_@$IRYQTI+evcY-G6sJ>MGbh0v;_^2Z&JJ~ zY6jfGw&5dg%jgOluu^2So3OF3Dd#Vukw;;3a$oq(nOVR-5@XF*GCmU!OkM}cCg=JH+)QMfRIylpX+>A8EVXk01iXT>2R2{TJx?g0G7FG86g5ZOm#dD zgI;nt=$j2RV#wf2Ik8z);!9((54l;*zFJ*}j5)lTV#z#!A&(($Be{BT(~28D1Sh~u zLv#;m3NST)Qn3uXqUv@?-qpfO8e5F)=ZY@D4XnC&kmj91cL~3d>Va{wCJnA1A3Y5` zQ7@EboWavNVL{{Z4(sC>94pj}LI>xvwL->taeiNw7(@>DMC@SC+S_4a>`#h63U2o; zEeQrI`K@-aHGmWHsn8gwc03Egn&wg@pQNE(XDEY%oge{}s72tl;$49LB3EJFT$&Yfy{-FAYI=sv1<>(-slxo5u- z9&+xN!FTb^Bev1#{+uDF{T-r;SrqaOIzx@LRJvFH}_%GMdB2 zX$!XU-vSS=B$Fx1`ZrjWJ?(J?NBm4IFNaYYv9^ubIZjG+s|;9sVQ7Z6c}-mG*qVUZ ze5>ML@u6|}wp7!mhSn5L;l%xzW7;$p7nhRS5Mw(ymD`H@wT{fJ=|RF`y9#dhHgIgF z&g6H68aG9{jL}W>zcOCO0Cx9pc|2#-KnW^FbAvq*z6CyeaVet9Xt)=YM&bd1p9=O7 zmP;OlBU8f()2X&XL3F7jJTwN@cL-(oCT3Z65SYYeP73Dbu#mFKDmzC-?*1$bFZ3u5H53jp1yxJFx< zgsazLlVl1!;0<5sjB-Ahh3b`!U5kpj735s0eSOgI)G5G}&{2tjvM z2@_u%`yyVUMa2>Ic(=$VUKuAc`!&F{Qw^5V0nPOaY8;$r*4dg62;S$quW$==E>m+alLJRw%8!9gnY9J0? z0uI`y!wHVNtl~ZQ$OW2EKt+cP8prA&78xPJRU+)7gSWBoi3#{DWvf{#Pcaa(3_W3` z${`4N0#S}kxgzQ`P#|JBO0kLy>0aJ}-TFAP$A`hh#Bh2CGnxqppasW5DhY`ml1@Q#l$)QAnR%g0}~~KC?Q)E0@Yg;80yS2 z;js5<9CdLGn94F$YLw)O3&4YvIrT&H9EN~t*G$mICdGteC^8Zd$2AWwveM(FFk2XF z2->C`4k^Z@#RN$gyz)XLaa?UwSj0#Ssk_K;sT^CGsD%nf=F-L+m;mrU=8ZXOMiL>|x3pEXH7dWJ%uzG(L2ny#RBB<=&c+-B zI_FQ~s2QU)__`5C%~WQtY{XIV<{~p-V~$$zTjkp(b5xqpE|iTqDwxAIvz0k2jcplv zlQ{_Ny=}xn@zUDch=Xuni>-)49AY4Zl{g4vd2$d3xvQz0^NA9{&P?W@82Fsq$s80g zh?cf7hlJMc%uzFOU(F|T5RQ?RHs&C(1ZTQHT|k+3p3fU|aM@ImHG?^%!1Bf%6+^;F zDQ(PA=?WL}${e*)_q4n*MFh}iZf)wJ)9JLpC zD-&QcheOHv?k~*YC|-3V4i|KiFT4S)&@4H512`gEHr}Yc+i07-fm9pAY`jr>Hkz8m zQTtGLlQ;;(Oiw3qPz>Nl*ocF`(rep@gF#pONgRY{zw-uRC^f(F2BL}}#gjImy-nXO z^9K*BKF5tVC<o;0-A+Q-{hMREto!;p7dBeJR(KH$Xk02xBhgjf&xbb|@!r5N;yIW-tPcNcN33 zULgmj4M+7+@6>kaDThCv|GxilY%7J994t&foH#8T7+<{NwKj#yTe#YJdc*#cd4&!$ zXYlW1c*P~Ol|z+YT%v`}UvGW`Rx1~WCjNhfi3btN?(_-z@x1soNWVUPS@8cgI55f^ z?8TAvSfk6=tKY`i&c&sPllW*n@10INwxmnz#6c-3$+ASv*>$lgs&fxJ$s>J6*mcwf(%-HK~xjqbQ6jL6b< z)sb2Pq5k?=2T=0(u9V|2TC?SRm|ekH2e06tPJ9&ldfjM=)wi{O)`u*I=aUz+m-swi z<1=gY-L2oh`11b#Pq&A6w_knzoA%dVzkK}W$It)z`yW31^wW1gzT6%d{pP#B{o`fF zzj*iZ^5KW?KHh!%^7i2FU*8@+-#*`jBk0fj{}B9J{Pa&?|GuaD@9uy8i@SfsnfHH` zna@jCAr-0oB@i(=X)0j`)LCjF{S0m4NNh8Cb4t&2I zoF57gpEq$5Tgc(%6>s3nz2D!y`h0uv_iyDnZ*a1FD+?Z;3w^6^0ZuYlaNdc?F*lkG zLXpaE2TAh=Z|t$+Rkk?-O~6v?d&8VU5#v$6hX<|8;)hKm%l8Cgii@P=Ryn~CTvZ7T z!y%-y;GYKGyY5(6WyLd(b;fyB(N38Wx;CV+fcmz84E1~*W|7!5IyuGzL=@a&V8W*E zi|Tatm*1`~B;OWLEkG!z)Gvo)uVU3V+5QL%zAdjE`RS##<1kh)-}Sa447Xt%#^HhM zZ4Iy97VU71L9wE%YJJS}>j^q27(E#nqUn~>al3-U{fT>1Uf%Y$nnkf|ve1JI_-t)9 zq}wK}b^_TEx?1Xc*Y z9>NSx^o_?V9+OyQ$w6j*5KRQE;PO9fOW-Bx4SMP2QG@Ee(ohQA`1W=6GsP`Pt zBH*P2&H&}x#-<>5&ji&1imujr9FDeY ztY(pl(DklDMWhxmxg>t%aPo2(kpO+^)09^FW9dB@mTY{la12mXGQMHLr<@mDE{nc& zy{t+vz%!Thy(Kp58|s!SaX>?6AM|NCaf{IM=w%!%Ak|yyGdPB$wsP!xTNVaEx_cCE zf?xRW6@0cwi11y`;=!?nC{~M0S=YOsS!6e=Zs(@~-z0B}3)oX`0ydex3x-saXQtzW>^g(gM6 z``bi+GnieI(Nm#Kv_?Hmo?&2~b>sWov=Dk!Vp*^fQ=6X;IJ97&qk2@Ob=o84`ig)dmLP?=f>JZhQXUZZ-?Lhlas0hq*CTy{wNAWWW&bUaX7P!^*8LE6Up+bzC$ zbhN%IT?BLCwpW|?*g)^RH;}n59!LSI_iPI)qqU<1g<&~v?)O}_w+8U<|0z+?9 zk;rg2h|P!vMc(B~E3giZAheLIhi5LyJWJ#SY>5~aoT*Xa3?^Iq6D+IN1*CC2OU$$3 z+$v8htTtf;3?a@N4+I<~Hu027-xIL8w#Yy{ArHOCT~powV=_^>aOP|bTpk&Dbo~in zoL8V2K-tt-HittW5Saw9ED9PNI!vLE>oJa;WriZ6(eHObgOlda=$pfn4f0w6T}b;N z4*Cgvy@ON9ecLM4TDIGo72Czu8yNHuATv28Cy8wgy}mkk5d&A^4y-n)2GVhahLkP4 zkaOSctSoV(hXTuawymtt7h8U|778$u3Cf>=7x){%dEm_;;TSXt{vc?C7hHw zVf}5#(f&6bf-2u7xAqbRE{$iwdzT`x*08iQU?Fo$U0NUT*y>faNph>tkKRu;)>`jX z|J+5V;Ga8ebM6gQx_TJ{Y_@+8K8?nyW(9C(wr4GGFw6W=pc+*R+NT=XEH$(hBKsD|tU^%b)f^PFEFG2*ql4jd# zmIdzmhUz)Rv??Lxz#^L#ylbp7g!L3-xC$@a2{%-AVI`xE8dAb(Rf7s#m1Dh3Z8B+* z2?7i?IOOOASM54+C3Gtfu0;|PGb^izML(CZ$>_uQ8LeAoIYmqIwP<)nhAH?Jap!8V zfI1I@d;(u@;JKmDWx+@w`YNOHxa>WJgteFG^d*TZEcrZ(uga*sC+!u}f-A|if8nP{rv2=_-QtTh%C7IBNBAm@IA~{}MFAWshAjWLl}i&J zdg-i)`1*RueSuzzXkyt`_WE`MCC4lsuQ4{b2k`Om#cC5sUgtx#DT9s2mhsXXdNGnZST3=;2=GIWnKIA817cC53GM4H+H;O zJlgSM?@~$Y-On$$N{VZvdVTZ6NoD5!BPRR_yaO?6Y$IsB1q>)5xLvIF=eIbvoa{#j zrvc_uc?gHHg7{XvZi4>+hDy(M4l;NdoqYf&2^Uh{2k8JOFJ*xKU)c~Q8$OE(t>w-7 z$EIRrlJ%zyC}BUWb&iAc(5&|J){D&VYMj2I99}^GcEQfQOs^h&XD`tmb4`y=-#@>9|L*Rm)1#+PpWNJhxPA7^{cAe>`1CtE`Um=pzE@DH|$}7luS)uqMNoov4JiG24fco_@uhnw@cv3bLl|h zW?oOhMGT?B_2f!r3s~Ju7WHo;yyU$X{$Rfp<=plSwva5ZMoF&6a$8xqtCfOAOtrF@ zk#1{;Nfuk-e2%48JqeaZ5>^n!*bDTa?l1Ih6t?)e+ zt~M#yP-K^yubTX?J#o@@;<*1|;&|lBC7ad6QIHSY?!QO0x@vtqduS(8B`q=ZBbeN% z?~zDz=_&8Rd!MkbMz)(x@9iG78Ir)YdPms|m_$&x1V&ar1j3zQ9D~6jWn3QtMP*%O zywy2z$zR&+3xjkU3k7Sdo!BT(Ypq|7qSV~hBORRX!^=LN z(^qkG6u~GZi%ql?0b@;a(E2(Yz*~$H+|-ceu)F}6;ciJ7#s$9sy`pyqWXae>6@enE zj-QL2%EnkYoXBCbicW(}w3Fz9DRmdXpXyp{P_rTDD7`Ja<`MSz+&q8>u8UhkRoiVhq)9Wf*yO6>A8nmii>9E-@HlrwUCb z*Qf$GN^${OnR<2bm)crv+8XcA*3WeLTm$2QN|`~)L7~RQ1YW>8W|@NRAiJ_kRH|DS zz#8lAv>@&_T7+&v9tM!!yTm}So32E2s&P3=fi>&^T#*)nYz5nx*e=419%|HCD~CZ9 zK5RjtR^I@n;LtB22;9W@`-stLQ(lio<$t#c0v40f&Vgu<{J8Np5D}tXo(2B-n8P*# z)a967%hBn7k7~fk$8&cn2vKx~N*7@^)-|yT)J3qsS)FC0s4N%C#sQR}FLu5_yv;;g zF)*GbHNQk);Q@jrU6MFc3WpnEO`$Tol4~}p+si>>;%HmcaCv4DZ7nkq;GlPB=ftEF zT=nnQzHz;Qu>jDNVNA*pAR4O|ziMx9*~Q@&@)6rap&nOxCgELW+Y2$&3g+v!n^Ig{ zQjPbzhg+tavJfs)>Tbo#Z3AP~r;xeJCxhoozD%EVFqNEZq49{a&6!86XJrk{m>710 z1}Xv*fcrkED0|?eF=){ z>pr@h)@ct~=RC=pQqn3409qGU^`J2&G64IUdB}z^@8Sgl9Ko{Dy+R3C);H1E=|9?t zOuism3Sd`*Q#EZR<`rrB?{X&LWwPiwlB`X8X0!^*`Gg6hji^My*e-$!4;l>tM%OzT z+9tM$A_h{B!^k2UfYy^x8dy}a!ub2zI^lA%Qco>)HCa6=>Hm^l?bwptATaki-ouL> z=?hY9hqH@`9eV#RK9Zn2o2jSP1q4MEeSLoqsFKoiup8xK;*`}!|IJn(=D%OzW9O*I z>FSv8SOI$*ekW#!-vz^~MMthFxEmWdE72FYVgv_<52Jc7VAD^~K~trUf{h(i&bc>$ zSXDkRA8yTIH-pf+)iGrs1tr(N?dNEjW>y25WNr&~+WaZ#^eDw1dpZvx=^Fqvv;0r- zMP>MlO*XwKLWAZ92tg{g;@t!@;cM1YAtW zLcy=y9n?JlaM-mrqy;fF-5%KQ7|QM3S;1pPXGG6K;5qK{+%7NLI|5>vc^Iqq>7Y;9 zNHUz%TU`ayxnP7!U-qEe<4P zxS?bt!WPdf{0Sr>ygjU&+?R}1I4dt;5I;#^nG2HK;p}x|uNW}G=yKYd-hUSVX%SoIw^E&i+Br+(EZq(E zdHF$!C-ap(kv7G4aFx>Ue(5!&wN}}(7}$bVYn2A`R&fY|XvFLT>a_-I)A{JYP-PSO zOnSok=<3rhmaG9!E)a@Cz3qk68DKOC*duD1_&Ng+Cu+W694{)tqXn2|4)}Jkf&@zI zO4y*ZMI_s&*wZ4S7()1eMo*mfjkphP0{r&>=>2`{b6ntIcSA=hZ^DsjlC!dlo?i}) z^6c}jNQ%^HZk%?PL!obUj+scXDgT$kL9w2R_ysrFSbNwH&e#JV^( z24m+!s3ZX_3_)lON_|%8Yu~6ufIQEIh=CB*uQ9fd6r`^{nlyq;4-{)#ZQOk*Y3f|N zJu5+bp(Z|_E{KKB`?i7)z&yI8y=Gf9+xtm%aQks`qPs`xL5W$$l_dO~lh}3Tk!HlnFP7J}wbI;8U!IUZUdapx;VT?2OH~U|_ zG%y988;P{c4TZJTg~Ovqh!BlrU1@F|87ZmzR{w}1!rETIo>I}OvBH0iW3=694LRBz zna*eK-?c{87IH13L>i`CLFe7s+Qly7 znA`xk_&xH%PP0zvC4nK|T3q}2wj7vT0)F1k2w%cv*;p1bivIrl2@K}~9bn8X z$%43ahi}&Y!=uHMEr=H#Ul2}WHwh26V{|?F7+LER1reqjAW&G}0Xgj-#~_H{!XH)7 zo(pW4+Qt7p>=S>|&k)n~0ghC8DG6mw7_BjzRASi+)6Eot&uR}w?q?+DtaR}jC+hD9 zsQAh`3*K$7=feV%LFcKgnoA7IUNa%m-E3<$WtVvwmM--!TlYnPiKn>DM`gG(B7aT< zWo$t(!^k`||KvEa{0+)7$85vS971`2rw7F2o{fXy@aK%bieYDbls-{@o8_$&4h%h@r6$oZBsJv^c>{9*lbMD(C=PQHmKXEBY_wP1x&!JXAZGgp@Q>m(is22G7uOj zR~f9;5FbG*I)-`B_riGe=B8gJViTBT)1LcOgo%dMmXZn%a2&|(@4g4Ce}z#fo=o1U zbZ5eC=(r__xdC5e%)umpL%}$FR(Nn#+f7V@)XD1XwL^GtA3MBU>_bAli__}6j{w`7nZ!P zYgG){CmUk@Tig+OJNK5mz#jGQH&ZKv2Pv&-fu&D&KV#v$frC!SoRDGC!^#NMsWerg zNa5Z0QlF|RdTs5^O$h%R3^uO%OLe3f1QX-tFy&uDVaCONf*e=XO1`i0e2JNZLz{cb z%s&t~pz!6e_y2{d#7x9U^nYL~F*CBUa{d2IC0h-iI#Mo#XWVn16g~jCs8W%r�}3 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 oz}CtH!9A(@~z@WMyEyq)aRt;2I{Inx}I zqhEeD3pVMlxxPIU(nQSCZ-4v7XwYZHTg`YMZWV2mFH3ADJx^Lt9+00bd%qMAJmFqv zS4+?0G&H{J;iz?MY2CoFz4jZ%zE3kpOQ3;zwh(#lR8H#rh(Px^)~mBG?Cx6KF}J05 zsu$sEOHTc!J)rS|#mm~tTAM+}n%?@VHJ0_3)n}^-`tEL&x;fGSsj)KlX7Kgk;BPw% zD|0I|D^n|zaWf;f?cxc`?t%s_r2*EmAUw)^5=8fT0ebzo5IQ2I3vUX7xGC#M>((sz zyF{MT;yt!wB&t8~cw_$t>tX#F0bB9Q9G&f0_+F~6ZwP2c*+y49nJw2JG1BLSbf1Zk zNbBQy{Sm*)k#27OQuT6YR^6ingmT$6MfskRK8!0Ll4nQl&pnZODPosZS|?CryD%vTD}Hy%-`q?m6x9odoZI()K>0s?t*|-&dXyFD< z{tLQhh*!qRE=SxrXVh~1myTzuS9j-=!ZDqxu8G9BpK0Pcgzck`SUYem1U-DOAguY2Mr0#SBW0kZ%la}{a^6&OPQ z!uy$4la}H4|02DEvwK%s;vMnsSXc6731aT1oCbqew7B z=z{fDF@F_=!h+$-9{yc3THu~HCyCf-EtY4ql|&1XBd&tx3~gk8 z6D?xQBo=tV+qz&#fP_-Ph=OorT1{%i5aGIH#7 zcLDA^)G?^7kP9=45l#;Yu{RwI=^-rV zcmc^jW8#)F#e2&7r>xLGrLS_!ybEIMJ0i;m7H0)VMGZhz24TM{#Bm`o?TNWDX0c6y z23OfzuC;>BT4ks}QK`|OszTK_NxR80k!0i1(L04kE?Ri@01m%9ZG^RcJ`T>6s}LAM zi;4=)b)pyOBiQ?Q*(mcbet@m~u88_sisN9r?mK$0jdZ%bO!+F+0#!*yz4hPW)=37) z(yu_>Huia`bu{QUbW5nFVD&-jw#G?u(rir%lV~PE%Dnu52a5s}>pK&u8Rbw)DUBKZkqK(QDua(-KtkzQf38BOx)4|3!2y?`&=Lh0LMafZS}UzeK~kt zqkHO57dX%KkqI+&b7MIsPwl`JP41bxy(g~yFcdkigMml&zF~|~D??LI9xo4`!4;?# z#_9w#{F=KBOc{4~Ti5}yE>FlwW5^IqdMK8;z4eqZ$EhJ?6`2wfGp)e}OQUUTqdk`f zrodtGl6LGmjGD>I}t&0{O^SP8# zKp`+UJkz);$jj6P^0HvFU=nE!Tp^~NL%2u2MZU&dm^@GtGzJnH=?TaM(ImZ)s+=sG zNPDnxI0EjVCl;4O?Ih(vLL)Up-!@oGXj;ahtxI-N!T>lMvrrLIstB|cF+8EyDcwOwwsva5fpY?Q^zO@9ZDC%?=iudZ zXKd>BMQ^afr@aPWvqQ!%h5O^H9m6)VtX0UZsc6 z`%BMv=hTeXD=IhNCtff8d+oWchRZ1`yMG97-0w|MtE(qzJ1GYMusI;%cRG68_0`V3 z_51v~_<1*8n3>pvp?*2WYA%{h zjGz)-H=mo&SIM7Z9*=|v zEm^EtYKIo4OHx^fZ{g7A6XDM42L;Y9FK?RAe6*fcYw-DYp`vwieMFV z0+7jLtN-Ff4PIj>F-b|%c1_~CkWtAPi|&WkgUC|wD`rY~lpc##uy-96J9-U7@U7OX z3}o4HJczFOEku--ds4G4N58(9++s+&^Zf^cOl$@4)N5nmzu~pxx#MBpfTVd$X>wfe z+v(py+u?9r=~so7P=8tLlhS}JVxh0r&jDS)PFcFI43(hms;4szL}8=D3NJ+lT>Nnr zP2Y;wByBQ{czz)xTa8y^tw~fdQcTIt!Q z+QMQS%0)VV`%LZDa?%{hY`1?I=8o=0$qRA2Mm$M>%Rlq|83uDt@sT8P+uGvI;&U9d%<3NB6 z6H2A|GS`o=s4^A#HdUTy1_&)hak(;7hN!V_YOGL8at*P^HNw}=4G6$s;4H5#r)U_Q z!z%Gcv_4m={4s8xv(C8Hyk@o~$HFr%SXU7g&|5#RA>aMV2S0 zp#HB!4HT5*ylOYOV%nU%Ts!$O+9$HlecUe0set%3qgh{ZYpax<0JZPDxf-PxS3~7;2!^w5ItAis-X))ah z>#>ml>&ycMRwsXy6`Gl*gNpH3FwIhqX%}U~4jGSFTef44(}kZn);c{Zf@Qew@CY#3{<^o!%nVevq?tHNjT^Q1qF zm{|8vn1HjOdcD-|XhfMq-~x=B9$K|O;-wn-S~GrGe<>)48W$BvHn~#%Qt&?%2^)z^ zy6#j&Ix-7!aB%+nUtA+g3ArS?{B(I}S#NKs&g+t^$nIS&mMYd3w1!Q_uEAa3MLI zPOFQ?qAd`eS7$%)kd#s^28(~Afr!?i6+o+A_E{N0Dd0Hu*6D~ajqu(OrDM!u%;k0c z`uhJs5NMds(t851o+zHCg$sH7P0|-bEn1{&jC>(Z*O}*-lX`$F3|4VWcL&)auE5*R z6vD7_)B|?%apAg~%c17NYhf8yiddO5n-0am@hsp00vg@y1Tc=I}Q!_&rJccC6l(s*;@UvQZ1X4qz>jw6V$%$p2VsSz%aSN&g}jz7~Zb?Ko7tvF=cOc(If z_~A~uyauLv`&bExe~hBcH^|IkfO+c;?oX|8raE;w9sYOh3`aC4{lK%|YIA2-cFjK5 zcvo=s!m9XG7GEaS$hKR&MIp4Y-|^{wLHxj!jbX$je^u7pYIfzlY{LQ8(z;jN_%is? z%+9>nd)o-o%0Bn_{5t)--9NDP9uWL^_)6A%IlrF{_T=&i`gp#)y_$Tc2zMs-q<%5$ zo@45MJ5VsnS%nznVhrwJw?LMi2(N^MV6Z0k<`bX9IE6@+n{uw7e_g2&1`hZsGdo!6e`4T6852!kqSHo%9B{A z^ILD@y_3m$v*M9zgSZKLDNb4JDN1rw>{Dn+Zvq~(CNIP`2;tVv0|BEeaq+s)Jd{x_B{vdYWh zMPl0rJq)2GbTReZ=xU+eH;KzVg4r*Qes5R%aC+}(%KR5>_KUaI`@b?$%zDRDE4DK% zO^_xz@&?|NsUnbhFed+K8>0EdDYW1VXoMRL;*2%^ZXK=TkCH?JxkDP|w}Q|$88EfG z)k~GT<-fjxC9uV#9pdf(u>)oo^n%nDlLu22R0V#9yl@h@!cE@`tu`z85@7c^jg>Ck zz5nRrSg`)JOmUU99tLc-qiQe?%EB&;pjBWb;SSUIXs3}i%xg?L$3!WmD^4qtwL}Qs z76!j&IeRsnP|n^Wk8n*mH%&A_JJApFSUd9AFm>Akw9IyY!FA|rf9v(=x)N~J5O+}a z`R$4OcM+d`F+&49v2}5DJqRH&1?C5v>c4;QBib`oR<2KBNn=DqXF8FK4^W$`nuv~s zyX)LLC%csJC=Xm?xBDa8E(poPub%8D;H_j~!@4Vl)bFWJ0ufbbfwu&HnY2WpPoTGa~X1Eu>6LSafd3}PXXv##r>z_+UR4H~X7FCq(O zF|Qz*y{ubDY^|c(NGxyH?<4W%)&b$Xuj$TF8f)gA*&BBjVRO``d_z}AR(B0==tXr3 zz7rE$4Zmo!bN%|kpSW@tlCx*l6+Q3A=Qk~J3)+UQ>e?j>`a`saJ$uL-hCRX)YMsK-{{*3A3|7svnsQLA3vNmpv{ z5uQ%1o|7Hr4_+pIdh5TIQ|UC0X?W{3PoOT8H?&YM`|ZG!4`uJws>>yv$vCBN*W-@| zlScZIEvL>nYXX<@*^u+%h^tOEos|{}tAYe69d78X6=cr@!#6tB7-y8p3OqC^D0Kou zFbSaoq60h6Bu$k?6$+_MXcq~+0tO2jWmQf{DT_tTav4vU5eX-r zA{X+LkQYmcZN)Jey*=n;aG{Vz0}2IASXRlnf^kK$lz1W?$&3P-3g#!ukWkT*#d(X9 zKlC+{H3e#vY%Ech2s@G;1v(XLA1#4GLy8XP>XPuZQZof+lw2%2liJ~?imlCfm#Mu% z2a6n3eMuaBi3PqHXi_*f=~jqd%>k2qMV5G~<7^gDfPlF%9h`!q+n`+dj#zixd++We z`z!M+{ZI8K3x{f#a?Zu;?pUW3ct_kLj^P%B`q(=7y4YHHy0KL;SBbHdw1cC|p^sD@ zNB~C0FMl7xj-62U;HS@dlg)VxU9i$uBinHp=GWgMS_9WqJ!@1g&uaJo;Dd!>R^R?P zaAx;Lv8{x?wM7#9mO|k`Bf# zL3?FJ2cuG2#+8l9F`>{KH#x|(iT{Pk=p!1yC&?7FAfaB|&*6Fs%y5mNOY;0wJFAnH z;1~t2dns zK|I4Czg};aM2G~ietBY~Wo$IWg&w4jHnUThy&)PsGKjKzN#8x;*A=~rV)wunSHv8q zzob7U`0&?g{D%xUGO=tkEP@6%b}osZ<+3tQ)t#3}NnX%Gi1H%S9l%-ZTGh&ZHucEs zRIpR9vp?*482u{6?#p59LD~&=>wB<`+f{gxD;V}#t;YaCG97JW6O1+1A&!7o%erqv z!ym_|B3V52CFX0#wgwZlfo)OvS0qRys%eq!BDxX22F%o%jHrrZ08}p$Ya_WF0UJOU zAazX1PK8tF8Bgm}C9g6G3|F};;K5Rw9J%Mt>FT#|^++xIsJ6V}w-za$jW)%tw3G9Z z(%^H#-*9O4x-;k~ zX7p4tY>bKk@7n3(`qKT`-I^oAwMi&r?DDB;tZU)GVc)kc`nDN3XgziyrBmBF>rAkV z*@9bh_z}tX!@8I&_~BaRUgzg4Hunqm5(~k-rGMZ9_MKfq0?;$^L->3p9`lrJU$^^# z{)B&VK5@TniJ^TGzllA?-4i_Qf&JmXf_IA{`WvT$rQWn8O6q<~!}intpa#<>^EKE{ z??$s+Z#;4c*4Ok907Jn0fCz%H^q>xhp#D$}c4f=+byzMpeMWtfPJq-W{lFLYnWf){ zsy3jz;L8!_)!HKsYa*#gXeV=qQ^_2)7^ zrtmjB`UCaHYQ(QJAK01>h?xktgq38Y<7HLsVMhlFJ(!2^9P(c!IIUux3Ib|QxO^7O zAWe+}3;0@aDo7EBs7iiCC5<&G8(L@taVdwG#eR4T9X#t;{V=cF*Z?b9IOJ;2(UDDc zFX$C+4b+{vhSuS2x z+83%XE^1w2rb&iLnrF)DUB!!o&^p>05Ld`iB55JiRZr_$VQBO+mr<3QrG=fVNS={j za|Aj1dxMb}#qCp2N`dH(c_?*EhiH7b&im?SeA|l$k#L8Befk~?r+X(6Mk}pyBT5r} zBTgs3s&cga6wo^_Yhz({z28qdkA3PX1ZhTUeD8kZyS)t)Z7tu-Va1&2-bXi@9qx4g z<{#Gpz=X}GG#n@IA-Ub7G+$w@d(f8l9bC@?N=P$wM zD-(TdMA5}Icp5MdS^!%CcfyD!E5|PfPyZlLu$O{kNXHk}gD*78btBJ(m}x_q z=@NFrCScK%ew+qSx%BSx%&~->MVzKs>}H(~07x5n%y+ZR@pyUeY334>=;@5&;1!YpkCl( z7Qo5b2j9aRwi?GM87|G0zR(P4>qzI@hRnToy z8CMve85h_doyVTaunh4D0KYazj7u}q>`mQl)$P_-^yyhqXnr3pewOMFNq)aeXFri% z507UL2am7PS1DDf6Izm=QYLW|OYWL-XBWJD#T@hI7@67-X@PC#{E5q73c4(G*5f9P z4h`2lJyWLbE62c{>n*GHblp*RO7Chn2COG74M{F^%>ZV!ZO$&u7OQJ3$JTS|1@(_@ z&2z?%j^o?JEvcMMsW%;4hKXl$M#rA}o^wV3-!#NomNBL)|7JA%<)QzA*|PcR5XkGY zg`^wyyS^2HavhdeH%rHXDSa}|VVLXCy<|(RJFZJMxL7iID7B$}vIJIw z4w4>Ci%o5QWnoWPXR@|~tH%z49ITpk61D3=#PEeftkh^Ku0rm3Fv02s3S8(A!dz^7 z_E$VgmJTC{K7Ta=JI|-VYbAj!If3w*Rc|dWqnzW&)b_^_Oxp2q?sucdLFVgMlh=sU zCk{RD+?%28&hyVbw)(?=GMuljI$ zS)%D{Lkq5UFW8r9UIOl$_itb*S=N~#WLpNKaIQKAS74=mKtUn>JT-q|&0+P6L8#%< zEBs{*Ky4U|1FTTWv7>9@gIWL75Ec1z$hReQVce4&#{O-{^H3LR1WH5m0QU}DfTN0V zWwyr)sMg;K*clxu1|B7$sP7(NXmBVUJ;&~6rv?U~=fhm1X+TW}ea;+f{cULHJY~i3s@kNRm2b>=>5y!Lo2m&xPRcYwanfISaFS7Q*wqNERi+Gh z+y7HKT{L#}6cs}k!cz8+NUP#p^${>*bOK5WZ-Qo1%`S~|a6ZO|4Dx-TS-5&4d{HjG z7;|pEDTbgF>hR()?7UW;J%r2qekr_E3s8%I0602`7`vpZMw<|+3D;^YPUrq7HTe4e z$Ghl-ng3--`!g}3pJe?5i4IdAW*qMnuLK_ogcXXgKsfOm_kF3t9)=rZL;7HwU9BFD zC#8%qQt5f;l{EP`-Q!s9LHFE=lVVKUrj|_YCtto+`T=9rYy^61S}UhbQcI=_yA2zj z^yy4E?$1uap-PKfWrs#Lk!-b{vb*WGK?PMippc5b^8atJR7!Y#p1Hmq{a#V{odD34 zAIb<{L3cm)ey=N6S$oobmu0#!Hsv>UT%tRM?5kztzp7yWGEV_|o` z9*_4wH%E5w)E75huW=_cYrk6XZBaOw%*Az=d!2#y$90A@4jrz zX7w0V`o?@-7@o#+Gf@2s)f?IM=$1qe{44hvHJ8~GWhFN4CT;20AK6i>RjX60mn(4G zVqvRR19n4=2h-t^NP1Hm>fS!?^@o9I1l8=AH^ad!pssJ*RWCoYQR*$))U7GYrkP2@ zxee`4>nayE<)%dibjugYqiaO1j8cu#jFOFFEaMcLh3on>IJU+<$yT?~TTu;dYO5+^ zGgG5E-M=e?8c}yznmA#dwYBsg)D*xGX42b0L`umWunvCG0wpF86pX+-rP>lRn&vP6K z%mc>3hkwhXnokO8mISo^CmA9N$^9Z@I^kXV@7#2AZM)Z>MC^D8G z02&kIwD-`lSbYt|p=dl^0|xU}1CeEbj>US$`011W;W$2NtA%NmyDlb4y$Rel=0*oT zEZ#={F#hcI5p)x1YmZu6DY?nZu(b&FpQo9$xhMyySe0!QRS z{`;<{Rd?G?)-7$>fu);mtL9D23!7I`&xj>Mm{(9wPnG6X46RKMOH1=IPUcnzt5VH1 zQfy5^8ryA_yM=*8ej7cz-CFxLTjoW~Cy33I40mgcTBep-rrM?&wtH#--D0QYs^*z$ zYvT?byK_A4qrUhDNmH-*yKFJSqBrf>O#z#LDbL}U6*+E7(&(hwjI^9#q-be{StU^z zo3}P%2u)!WNg?Jik^-o~m%NE1hnZ!5N+GyeC+g?vm<}>QL>=o&K-yOI3&74zHe0Q(D~*Db#gGUP>p?U^DUW;E(LDu1~FPReIG7 zSO7H!3o@M?M1e7A9TCCrhnfCz9-o5&iRk85qZhSJhWkPShWbKLFzyRv!Gu03l=OIB zgr3#l7z?52t6O-kgs$){4|c}12aTo7ZaPB}TbvM?Weey`kvx>(f5xJK`vt{26=OMM z+C*wZs)TCGL`u}k4I)dsZ~-`-f=GURnG`IO!Dh@z+2ZtF&rd0ND8E|v8@b#YvMh}+ z09iqoXwpS^11JaqxmYt4M?U~Mr?ceha{>SMn;<@&n zhdcT`QD83c`2qu!kCuFGxJ=eURpubQA_ct7WXvfv5le+4AiPYCaQ`3SW;0Q}_Ci$Nj`9gvsoOhvOMtLkF`0;*w1T#h zwu-cxv__(+eQGZav{5NjDYJm4k>!%OgJy+nGQj=0BUC8nGtmF#H#b)`BZBr%3Z$~2 ze1rfeqlU8tX)O3j*>>~sPXL*7A_OVoFu2q9 z({5}m0&D^t0$c(-f?OWHtv@G7fncLUn0OEu43e;mzR52`%{b(M7=-1U1WzvI=;fpU zu4oh)Kmb?lQjGz2Y>+c%5tDE<;<7!juo|&4$q~8-PnWHB_FMNAvArLSED!bAPVI?k z%@}}lJ91BF$)n;!enzE54J}W3Be=|k8{+1-r_alcjQsZXvQg)=vhMOt>&Dm23#NPQ z$jbw;3$3F}8U01EzkJN>NVd8ho{9@kB6e= z*owLUz)2th=3cIsO31m~s9s;kkYEF3ZIErVhZ3GWhv(XrG8qJSRNTx$CiOgqNpb~hJgic}`F5N0+H>a}s zpQJ9Me=+2#gNj#jsa`drMGywzL+q z@mpcctyJ3YyHw6A{2uY)-`?|i{y=Ff(c`>O8RGA2> z$-5uW`T||;X|d~p7TP-Z`_HF;Ht1~F%6pE^daUrSsuSDE=2vHj4O`;#Ui$g&zT9f( zpQ!qH+i|tc?C|^G>(#|4=>0sI8TxFC>pQ6{ZoAv%Pp$Lu`uG?d8)N71 z^Wo^3(&J+N{_oAj-d8Orfsl!$44Pw!Mu|NFO+OftMijc{-K*`TDkCO16Um|Naj8TF zx41|(mb@iQg?}PqOeB(`Wzn>79wKJu)4o*xP~K!7Hi{F4-9(&UI8X9(EZhy`G)Nu2 z8pCr_6wSrmU9zLje86AyhAea)b7`hff?{HY1eO_0>cG!kFN_jLiY@``$jAbQOfG&T z7IgU#Nf5_q950miSMls`V>n?F<{|}PFrh^(0ay4`l0FQ(l>vC9AAvL8J9i522nJ9z z=VNG4D|^Ria6|S6XSWS$1x-_aPW4X}76dN~)DMP!vo@XbGJ3}e7G-`=HfMbz)u4b@ zRvNFFrC+iM_%2g|lF7_J8YxkRz}eV(nK@}x7zSYk;yy@J5Czp37M1Cj<1<@K9J!xj z`Di#Pd0*8=!5~MFt2Ipa!iDViyjmz`6Og=gMWdr$f*M_tK2|Z-F*bE>rpUtp46t%Q zMux*eIMDtnlS>qaBtuK#N?Y~J8!Z(rn=N~>tx2R{b+RN=F zW!mwyEt|Vl6-9H<0nj0%JyLO7@btnPrZ_8kCYrPnyPfE6E9R&E9*KFS1ok}PM+csE z;%<2g-&P~>{U=L+l}gx@6Mq}Z ze|Pty5dmJ|PxIyFT`v(HoVf6WJ~nPy#Xe~MAC!W|l?ZiC^1-$ zF?P)G8V>nb$z&Le>VBKWOtkqL?Aoq|J ziyU*BXy0;nI~gwHMGWfPE>14b(zNErii0{Wq?nI~OE)t5*xxP3hZI z4jV-#9vTXxG=bHExj=4%^`Z!@M-pbqhj0UY<3?(ZSo?{_V!7{+-0*>5jSQS2eL*eH z*_QF{kHH3$6k;S;I}ZA>)}p1@Iul(M>zgRl6U}QBs}ZXN1VeypoT-E(v0KCo1oO4? z>|5n>9u<}?Ts$(hbNk6;jQsY8071sMag$&Y%nx7}Nr6Z_@lo(8!9qaH8eb%!T@uyk z3T!n;Tigk2Q9?`A8C6kyL;9gP_QRANjFre~1+a z_9YM5o#yKQ+(?l3s@l$!CfoD!&&{h_#dX(I5*W+^(GQMgr0R^a z(TV!QkVpjWQUhTN3ynZb&}gH4b=S1- z+KTMoqw4e#Zn>_ii>c3=&e>S6xr``$nbx#wrIB*9B5l%jJoF0eDtFqe^g4U$Ed1q_?HFo8j_lo6^O%$!-JSSR-17wJvl!#A%a#%@YO^cwBlO zX&#Fh-(Fj8WA9^FeS|-znO!ZrR((%>=2IgCt1Sc%cOQy--*5fCpBZS;K`;&^>^3$@@(yXV!9A!;`ihpq8l;~*@sOVGy^)mg# z1}O~U=-W&(2y|`IioogSC#gZs`jtJ4HHksL3gCXxKFpIcAiw6KJ#e1z?+QY@qTbxQ ztlK`#ZYIrgbw+qX!{DDb%~thW=5=9RF)tvP$or^4zmpp?M#G+|o2@!7nlo&r+dQBRmmdU?X9MzG|V92C%b<=S! zwN!{s69SqHtiPIgex%RfC}gzFQP2dD*5)Y=4Kt7Ra%;YEcn)KSOmEjb2H^z=4vz?J z5l7V#aO5<4$A?uZjc!doFp}LWSI;COWm#2Y1i7x6XL!xIFKw$rHy1rJdTm+DicX1c zv8x>oH)$iJtAB4yF4;d04zqjuh~2HT%IV>sn~!`yS-fPCWoK$wbmx(L-{d&SPR7^+ zWLhU!BV>)S_!}{XVBSc3$lLMyuYomDD0m0X{!j^E5zXY+L-@e_*HuHPQLA$e%z!Gw z+b;wK!g+0hV3>;5V~y}wwj61udYjhj@UnP-?!(k?GIBZk7T$AX?m*7u{tC(b zQc1|Y(GbKx)hRql&dbadT(ArL7U%j&&r&mrJ!)J2P@UFk`X&Lg;)TXmV#$tMV%L~_ zE83&nNe>G43HRsiwu9&GlI)c3CR(_IKmEvhVaR^4{$zA1y!>Byx&K4T|9_zlaIkUw zA1K}br~_&`QMw&)y#(pM_O|GoQM~Jov|A;pvt||&ZBmxqRT|UQWGFK2y-d6L4x`vc{pLmbVQ{MI`k_!n zp!fd!{eeJ#;3V%nm#TE1s>$(O=5>o)H!X_5eD>OWcG7%y%Xn`MUb$~=+qyOk){2eyT5WbxZFWm(Z4DlAY;BveHuRT_ z4fWbwbkbaO%UEljQ&;NRJ6CE=LsU?LeKt~EG*Ue>Qrm+^=-b;z=u87dQ2Kp#PhE6R zJ#tSu!ZzkOx;AD_LpA1toj1#DG|Nmf%Pb<5(!YX}vaXHE(pm8A;sZh4H&&=6>Mc_b^jcEAH@;u^78d~d4GPthVbw8 z_`I(Bb@YB5@PEx5+wt%6@b37yf6d%iUG(MgZNt%9%#G>k>EVq7={vuVg#eP`eLH2% zS@UG!>U<~8f5or-kX|44!}#I&zjfg3-1n-|F1(bU)rV_?2CE^T z4@uB>+u#4EdMm*1!#hgEc57qPwLVxifad>2E{imp&Q%d#)4>dqUZ1KbSawlgqa%do z2&oy)AaP~)Nv+ufvX*0sGmY>dbwclRQwa@YIKPM$ZC;UFrx3|Vx6xche1K`wt=>6C zkJX_+l62h<_6flW72)=goTlQtb^cq&)k*=B575QbtVl0@mB2aE@nLL43p!AOB_{QC zpN?J0jG`5t%*%T(_nu!T&X4C~+-KL;=d0YWbkA#I$|u(Rp50BS#DLI6XnYs>Rh3kV znk0Hh+t2${&+}==t|TE6GX?Yrq-z!6;mp{W#he$5f#u1>gc!ijC}=2Rg*Hr|UAX3z zURX&+nz;;?O19Je;PO`g-s*`&-)vL|xNfFj>5nh(VC-8B1!tmIxaZAwYc37>5-FOf}eV zlAmQE`rlmQ;$*><4rqB?k!(9F&;nJLLhDSc<@q;!u%=1`Itv#C(9$jac2K-1Iebj=LM9EM&o_=!5Cz)T%)M@hTM(#!cyyHm9t$F z6AT^nC{WpaSdoe;Ctte)x7n=ooq$1PnuJ8Yl~-xkKPb6C3Gn7d%+7uxR887Uih+|IC_8$J2PsxG4s>qX;yF!) zXu+D2iqBN6(m-o9@snvQvr;-!Bg2b5`50Ceq#=@~imZR{z@D&#%Z=ld+*|zRkz!u3 zKID~xHM&JrbIOFfiVtmJmeQ z=HbdcmRZPTCuw8ef$5!lq%!a3#Z*v9;GnS16?pQb;=FH(uEZrqNR`sO*nek^nd}tu z%;h5dYdy0(Oru$x#glD%nFLdzm8yo@q%&Uc`1#?NmX>C2`aEW@Ei8**xk(9&NAGJu z%FaE?LDAANz&;}uPe^LX;fc+KBLk*WE?!}hN(new@?vKuXJ}qIh;ul}@tmin+quY!;QnD^T88gr|^9vP->- zXGUW+V^uhc85b$4FPJzgeU>A{JvKo}k62@(7Bqi=ZTQ0*w*bI}kvKY&bB%e>=J?D@ zrP9YWBZ{VIs3I@^jXBZqXf~e43n3+flt5GD%v1q_oahP81{G)aNBLX96)lM%7omU# zZx;qmHgKF1?ycI!L%d)%LsEFKAQyCvqtVLDHKzM|lT#9ZkxB#JkQ(8t5>kyn_{Jo< zrEgP$_mn8va!SF6$Kg;RmK8@+wO=bKkBoKluGSW*JwqRrB;;zVTYzd!6IB6a67KGu zgGKH!CB9^wRb(c)Mpnyo>k1aw_&S>6Fv!L`OmNk)kM0OgYpLP%acq-KM~grc9U|}o z^Weq$5%mv$7q5|3ykK%V(7m1mZ{IEeNZs(XYC8g+%wsg`HcFu&el|eG)q`>^P?RBw z^W8E^yPy&UTIMERb5|bBXbF2PwRyvM`sebPtJ8}ObPegX$GERJ5EY3 z<-j0f(q*}#`;*%cZXNe*&(Rs)i$A+Mr116*_ot)?O|dKuv@EJM*R1ULAX_)&jo`v$ z$!N_c=%6Ry9l`B_#+xwW1K(VWo*4nh#^!_OvcPJ4Vr+aY>S0vS=;h1M}emT0AKfHi{Qd^+;0PQ1cOsG&13u zLCEnvx2BF9r$f1^Rc$@3IiZSwM_t==jn%|9j%&au-uj6|kz92On`ZCIOsT-IpYS&u zBd+X!fpVo2Z*2{({s+Oma@ZME=}E3*j)S`fT=DQA0j){Z00EUDlvJpu)`eeA*ZBRC zoKtm2=QuuE6x^Rg;w_Re&h4BpcAZ^uC1e^oNtIkFZ1270>oJ0V@KBdK1J6H zTSkwQO(j3>oq6!&TZ95(JnEDoX#&wao!?U7yU4@1iM~2_wXE|vgej7#^EbsUB=$}P zWU0|H@&-$}G90hksy!%}09#wUHz&Dye0NzHp; zfz)Hk8i<0KSdO(+gm|^NlNm9ACd{HP^s3~(=OTU>M|644DW}jL1@OvA5#)No9DIlk zBhrRR;ZCz}t9Dt3W?6-LScxiuWJ?Zpi$#)jT}5e%W|#7XPy)PDjI2_GZRm``!4-^I zWc(&wJPDWG`5)jty2B0m)=6y?aA*H$omJDBqBUmLA5s9C?4A~mVR)Ub4I=h_GCApu zj@o5U3$zr?#d6ADL^^5e3oj{|n&)HzBZNZZEhV?nsj9n&w;R2Svb(!o9>3?G@0sr$ z=-#gPlbf8#A4kuxuh&ntHoLvAmzkBK2knZ~!5IGPCm|cP445(NFFM9AoZMfSi?JmB z@9(ENzpSM!uG=vT#hsO@%B#*Dc!au-ZT#EHM89R$w@5XPpmo%Du@B>p)>Fz~cIPaI z&eCeTWWO(;HtYvm>`&W#)FcGyI6__Sdl49YusOTh-z&Amc{fjWD7{kBGuHCl_NJrb zY5v{T#?oKq?=$B)t#lWN4wbj~M~3Z8`D3P%U(?UN}<^LcnF+`_xL2S>LLiMz4?C??KzIvrb&zjyKN*&Lm8> zrELB4(2C`i$y~%;fkh9wPrwNAA!u>)0OjWpmxWg{`>J%PycQ4LKkaYKM*qKwb`iZB~-fKu`6a0GE zs!X+JSwRz$SQg>$`{juWC-2Yc(-D6ieouGhfKdP1JTFBtosW*V608{!v~?}FSDdPf zcZS)*GvWz}-O?~jp~WEqEFJYjJ8=W@@-%KDW-`&G+Qdqo@;9`GAc{Vv6l|jiuZcmb zC6s|MT=@yo;dTCuDUw%X!kB3^q(De$oeUy6@o3cQv5J7eUgWPZuDqq}GDv(%E_pZ;LsmXqd4kAuYSl?gipX`pj z@5YAmPcR@tQX*BpF%RNNl#FSbI!-~54{@=hVZltQ+Fb6s!vAJS;^4e zNS}{l3u!Kd^kgzXbi|7o$AEOin@unTX$NC@N#tnL7)nY)I2uqYP*HavmL@(%(gl|Y zd;Mc4GnO&%%g>VkLLPzJ8AMBfKNk&gGGHfq4r?EXQfaW`>YrNWNK$p@JXW?z-wz?s zw&ly-56QMK(>w^7?^ITGFKES-gK+2M+89C8Z6)k<>>NLowM!zn2;sH@+X|#dXyvSX6Xclu4yHdgm%R?PyNGbQkJ4FBM|cyIPBaGZg*0F8 z)Oi?5KR;@)>ObThYd(zPO^~w~!4OPtb?j#^FmNojejD^YYi$LZeJVKVfzmUFR0Ztz zvjYJUXE^OgVJcW}_zhyT5|$ebVU&efsNaVWFcGZb>7|Y>5JC1{HzzMf(g*X!^X|iN zLdWYpnA}#<nT8FUroTJCtS#!?A5U*|BZgwv8Rzwv8Rzwr$(C?R@zI=i*$?%<46( ztE%7Wo_e3_SJpRBFD7&PXFodbf^^${wpbSMZiECY5zl_~`_p+zI%C@6*7*rd&!wER z;2s+qPvkE37SfsU?Wp+F+o@8HgmcdB)#w6o;GF;$x>-Oy^&$*G zxp=)t%|orQ+Hi7F*sY_^jw^GmBI=5H(OPK;zfUql!Ecs-Zsl|}ba!@mI(t4GU(i(|H2vor(TqyomY*p#^aMUcUhGQuw zMnd1ZOJ zs%L;9{4?JK&6!4qp-EF!#l1qKOw|~*xUg(FB&`^|8a+Wgl%x89dvDH@Y^u}e|2AN2A*y4%ar*%)(9s(gdzQ(J@H(F27wiqOJ^*^>`pa(j&C zu^P{)sFi0fkp(2ebyJf`QfygIW>>UV2qa)YVx=#EID2LyNhsd$oY!)zs*BeAn~)Fu zX{lb?D#nJB4)6L6-p0*@eSJ&vq0;6|&Q++=1fg&53$Bt@-=q&9AOy zuo(@x%K>caNE%u|u*s?|m@tlyLQew5C5kj-Z4JJUZqVk_QnP0dQ2xa_A0~QZ#ib>u zHtE%*I#kZT3Fceld&8_hUJ3a$%(?=I)}N(I>%L2n$d0(>j3Yl<(tpE{>RE&>?bn!P zmHB3#@u;dp$0~>Tl+6(fJI)VF1+19Zwawa{VR*CqLCT^5mYq#&wEIiU{=$)ULs`+? zf=+~0;}};}JgiqCn#C{JAA?ou@B+AMK;iEt$|anJ^;C;dC8sr9T*W&q!&2#r(I$Fc+ibm8iidh z=i`^RG)Z{(f(O5w4CdJY7;~P5!)3sAr>KWCftiYnUO^l^SpkXWusxwMLE9s)SY3ctKMg=U^GCf$2HJ=q{%XM7>R-p z5<|sIIl8zNJtxo(S&|VG>i$YU!S!d>=Fq#LwgO4M=20B6InVviR4DD)Ozh~DfybSz_<@*?D^ARb-8P{b*Gx3!Z?{6DC@ z2CHTktIqg}dRBgIr(x;Y7Gh+G-`Vb3EKdRENl_+Q^(w6s8kVYSLv$Y^0ONp6C+l8W z4}+i5BC%h91B7s&D;|Vr(@t(pf31i4wcAum^VqP~IFOtW5>qBM)+dxy1Dv$LiO#l7 zBSRH%(^vs=5GY%N&JAdu7;4PtX{Q)2Cx{8%zPDOcs*2C0>4K^;I6%^L%Ed(oa4!G5u5F0nz z)pc0Zp&fSvfUcO2hZ)bdf<=W;t4{`r9>)hqJ;jw_!Zk!XXtwt0?$2%6qF0%38o-9w zQ){!QYUlp2Xj!5RX61TSE3__gkxmtOFU)^vo8$d^iiw24Ai1m-5Nf6@3Q|F9;BAF% zO{Xe6+{x+n^hx(Lm1Dcz)!Oy5|?fUZle0(cBi+C-TJW!i&Ti9Ky?T@IPx#$v zay^_MO~*wcp;ElOx1*21X~oENs$ivJKX94Pca{&j?bD_~x}sjeUj>@9Ppb!Q=rhRY2R0w^ zNc6vzPIv!|&Vk)hfTQpOZ9Y%`iQ(PIK{QuGA&(4(;JuUt)sEu666A*cvL??=#ph_H zOS542>jT7h*J;nORyb`QR9GG`^pPf90~{_i4<#l^ighUwqu<#VI#3DIDB8y1|>Hy~<&=h*hy|IRF)l?TCv(e|L&} zLFCEaQPO(oPHS<~J4__TTxU{Rf77lD8+BbsT;|jjAGupuL;m=bLq;WZkGw#3$a|Y^ zUR+DXZ(7pDUB7=^yMM>ew8by?><4y+uTN+&KOA4{-(n)I6&gVmJd(;?{m}n>CiU{z zKUTbls%cj}i`*Cpicc^O-yW3TX;f1&K^zC0`#2D&2rtHE0M$HMvD0lOz4_GJv&EnK zs$g_(VcKD$9MpZd9+7UVe{k*vEs;FO4z`WRx`*=J>}PlMp6;r$$8$f*gl10>vbn<4g_U?5uGMt`DIeJAbYv)}A_mm&tZ(*dq-qQm#M zRc-HwAc6hW;f~Aa){9aL`+_HLihn*^`{V*gy-LRGd%_O5@Yi`U(QnTje;(8^-=@0A zf@EJkO(M<~9#sBT$)VbHxW55S&9V-oN}xbalUf#C^$r@px*$ySLMKIGb|hTwTDs*2 z(yqq6Az1kWvS~aFj}oYQ0}?R%2fW71_Vr)(eAapL7Y@*#VklT*VQSx!)a2XhIBN{p zq-XdiE2i^5QF*H1l?;DVf^y{ETHmT?Yt`Bz4nyOL4K|T7J$IIY1g)ON2=W;#*JWAgkdsEt zt`ZOlxyHhmTQbNJe|yRq3!92=e|WR(qck8;n77LwMMp)Agd^*Eo6|1iCb7%HLzF5J=Up!O4((I7?x-6P{j;Dp3A|5??i&>_vLbK?ex6`_PI;8dDQ83Gm91h;-EY4X(Vs1s#yC zoIe#uK#mgpG=ckVS?5t(tH#fuJQsADCl@-___Z+0$D=sar6bL%`svL{A*t=$e;`+H z_3?l<-*JB14d$IY;z=VK5w=yoCBcs!rKTE=Q;8&uxR-t@=+mA>N=07*n3lC$80;0K zM6Ct<>DUu06A;*cV>v+PdHPgEp_<#p(o>-{9)I#Fm@8L)+5_w2?IvsMK@K=^HHq`W z86cOo2l=<$30IR4JiI38DPybpGwFqmrorZzf|1g)SHQrUE1KSLXwCv)5~=I3Y44{CED%Rc zu<#suSB_$BE++!*;{Kf-5FHzfW)`+SoVPY}@il|Sy@^n@ z$O-r>S`VgSKy!@)z=&v~8Bm`zyR;HVg2)9MH&8GbjUx4F1mnyC%^8NaV7V1t8fBrs z#in?r@h1b` z)AgmH#%JmKbK)dc&-djG-}h^a?RVWi>oEI_o~z;eIcRMC`F?TL|LK%_>1q2p$l3f7%X0tmJe%cJxX2Bmenj0gf6!*A z?g;4sY?-4OK=Sbn`Py;FFV)|`{l4uf05~}@V)DiUJ(66ILF1C1y#j{3$&RN_WzKwI zLN+#)r}c&lP!|WqhbpE3ch<#wR~OF;b*U1iJmSTz1G#l{hMRbS{l|HjzYMEA9+!CG zh~GZA>xvlNajU0up`FBn=Ih#~1ZNx1ZL|{u1x><5-~wQc>w!UgZX|^?wmx)6ezu*2 z72pBs-g@l4bVSOvc21P~vnrl-k&)V@GG&!x=aE7qf(2j9`#{CldJ^oZl^xtN+$JO4 ziY~pRlW*2Zr)lO!6|^mXJ)hPI)W82Yl4Aw_zJ+XjwqT?5Q&aX+m4QXUS2x?=)8*+Z z_M+$I{__pb7os>pr9eqJr4;*MJPv9>$Bi@kLRsX~&9%T1Y9c;b@L9ZgCazV{cq$_M*am z$)l`IHzNO!6!bbY+;0lv;8@PX9(cOVdM#ke3cN5j-&A0f;sNVvfjCS3%k~3L-~l&? z5(FRAQd0rWd;S+8g=;1n90=~UH0>W>O0#e0k;D_dgpd<2{9PrwY%1b&5Kw)m%+PZC z?;#E%g13~7SIY6gFh?RkOXp%cEAd?b;&u6Sd(#)|((WkzSKu;vs0n$~{Asy&rCD1k z-!}!-sc5b+aW4p|LHk@qIKqZbHLGO#_J7gS@pxy zR6kLml?{i07aC0|0j)nxjGv^}iw>(ZgMLJ{fFH(MNS^Wh8DkR8 z_{h{=fIqxA%3$>%q97jQ=7$a(0lHF)+Vope=*pf2z#3#&VgM2I*|nB-S4A_;+0vdQ zs)4Z;s-XnCQ~(`&Jxkz$>4>5i_Y{|`WAc%C;0Kgp*be}f_TfVjneRzV`((~Qo|UDc zr^e39TK(et-9&ERKulB3HOQALN+aqL@W^r=?I4P9yyR~O$U}o&wSd|enWEwnmLaN% zQb8t3(;djk(--!XhuO`OhKarMjQN{(!OqqO;8f5a+h-lv{ksfHg8c)(BQo8kkaScl z1-CARhy$m@$cNS&DySZZpads=X)bhbLiDc#m~^8PT>%2~YsQd>vvr3z`qJH1Fbb2p zTjCbR=1vSmh(etH#;`DH#uV`zf|o{VM?n<>H8@=n7C2EC_R(UKKI{f@t#Xon#h6yTk3$a0^~km?#W>s>~mDXHbpc0R&avWDD&5(rQIS`^B3HX=Ix*C z&~C~|aY9&uz=A!qZ!7*p;i%JeIt30{lc^$8{we^bkaFxK#7yb^AgEbgjkchqW|i^_ z{-D!ngT=H%>Ra|IvC7n~PhEqaa*9mU0jo8#J2(t7=o%m@`h56WqQ)ff#PS3`?h!bC zu0%A_N*1zGwjv%Jc^B_(%?5$jn?qnx6$^0RI~=i4R~c(~e}A*a6ba;IQW$HnUCXJf zxJs4-Y0Y1os@vxfTJOt@=dCU5<)+Gz2FMNN*PMlfGq5m>i~Mo`!| zTg6T)OR&xU<~`!S6Q@wvwTi}#nYDE_6em2^pXC1-sjPo5f^iSmid_L%Dc$R|Z&zQN zv?xB7sE+tZt;V?M0)!#rx_}vo@Cy!MZ|L{t5$yYx|Yjvr$E!8XT;ePL1vwvuJ3e#CeQZ}vBR zxA!lyOG^SU+8CU??q~I5^OCmmi&JvWx$siMw44kBfD@WHvrB8xe5j@YNNKagBn0A? zcIJi;)OBD#&4gt(9Nm@TsMAo{moln@Z_}9S*3=1&;^@pU9OL#Qj3xX_+~#4o5P{7L z@~2l?$O+y8ik`(+u@0sq|J+4!VTS*ajZykWF??=!BrhSS7jMJiFQtVDE}klp4@oq ztUc#F@Pgkh)BBuX=B~cZ9vK7&35X~FA<%dUGumZGE%@y{{m;^4%OxQ0l(*dVV)@^6 zn^_Mcp2KzOKvqRlG^EoUSl^|)hn>ao06X{M1P&<|dq?o?@jGYiW4m>za~2{-flM^V zhl@5iY5G-Pm2m4vZOjhtipG?^xI6Z_^M_6ksN-=U1%&WiNwkux-BC`)tyTjEow5ot zW5&R+1$6WM4iJ1bNg~DgJDYkk&y_u>*rzl#U8n+9U32srhpePi1&q31d1S zv|dM-Nks-tKAZd%Fx>kM_-TG@u z9%E#9J60D}esS@|0cBm;7KOytbVF???C4in*h6ZLJ){LYliLK33lcjJLFkWsY)U#L zO9D7uAh`A70mzt+%6*=fQP2!|evwcZtdVm9G)%&N6{5@hz?Qn3aL89`lL`$=IR=D! z7#@S7aY6_;AcYv|HllN8dG~Q)(C|Y;caUq%70kVV%tEE+A;k^3%xiu?0eb0mfc+_L z2y@$6j)w&ygJwnv(i8NMQ&g)Rmz{CwWz+%?YudY*B>L1MBj8kyfOU=@fJ)IOnxpM4 zMDW$Cdubh}jKPEMVVLLRq<49Vx7iWgVloWjI>%?!0H8f<@{?e((Y&Mi^V@ zl1qio86h?G15AhzrNL05$MeJ3X#lr;$I%>?qDX|REseigi?SzsQi17Cz!uw4+0tNf zdKd?U^F(gH6tjT&wH;AxO4+p9dQjo+n21T=C`R*E>u7__Q8{ClHYu8eGHrmhA(?|R z+6L1jkptqg%VtpEZhn0uEYMCbvMNjv$B-Z>nH|E&-2nl-t)eXRAsnf1TKYH_<27qz z3Oh^ z(A}tz^%+Bj#@?>!Cilp7or&Slof7Ce0V`*zIoyHSiL_X^OS?AAGdum2u?MU>6+Brp zG6oes}N-`TiPcDQJ?NM~Zo}UZ(A6taKM8l@^K+)pQ z(X6_J;Ki_FPYO4SE~gZseAz$UKX%qs!6`V@(tKI$G}st=o%>C!!Q)!3>+T){--+(Q za7<>mH%4wlq>af!$-3J4!P9!SKESF}=%HlazCq#Oh~w9fkneY$uPov{yxtnOKP>F@ z>nO@y!no_h;6X>~ z6%~1>RqL9x{^hpQ!{EG@P)*~uY=M3I@3V6&$-~Z=QHQSZ!&Ic6a_7vYSKD(-2%KyW zv6}ufbr@Pu-!i|ObA~bH*MuroJ^(7;4A~7Uy9@;sBnsKO1S*Fg==b++-v`_{@$RAJ zZdN_t%M2(VJP}G6up*zlWZ|7L^D4Hbj%6~LD{2sQ)kYT8mnDJ`vy}MEeY)2G4>CK7 zx}q-~#Wz*6TkfNJEkVY2?$%}FG<>qT%6=l8*n2x1x+LYDS$VBwk#yRMuriCjZY7Hv zop)J^*96M@e%An(zkjVxI-u8VIPyx<>C*tO+0BvlLV5StG7n#BY4TkTr4BtwL~lra z<<>i3vU=RA+Ua?{|NfS133YAJ^Zv?wUeW9E`aB+)`Fa1q=ly(KaOLaX#KZVH?&$eC zFd6A_d%3^g3%%jp_Wrnk-o4h_!QE&C)zVBoNzGyq%Fuq6C~`Ae2vtqRz++rKlAnnSwyltMkH8rmsAJdgwD z)q|Ub4+WpYW{;#bx_5+XyF1afv(x?V<$3#Jd&FUDSMNmyjh7AWU119-%cyR*9X`sy zmH{gmKW+;y@c?FfS+}p!%mF0Rt9ao#kR^zCpwJTvUNx~FDnmT+0%8~uS$L?*(TAX| z0tq`nSXjTC1Ge39t*&k|#1!j1?5;8=n~vDdT3GA%-s}hSvT3N_ zUwj>T?)03xQ%y^4g=88M29YVuI&!s?2t8zSnBBThc61jeL9lIshDWk_v3M*w>>GN!m z$&H+ar5|?sFUlpiSU?|}@JmCdA_{wkmxwb5G<<8d9zSKH_^azPJ7JwxT_)$`&HT}AWiwRt3K$d_as+T=* zVw$ZgP2(eGpQ;5#3eo7>NPG_M?j11V0ld!^l2qS~&Ui3Vti5XNVC0nMv`GrjJA1yfSBWLeVO>n3QmbA{9*h31M9WFhz(7*)R zJyHG!=)K;cdNqrM-Rey5_tgcHt42y`taM~+7_*iCJt+a)A+e2sURC-F#G2j>9ip6g zhzSNW1EF;8k;Z9W>@YKsvI7fWgvP^7Ti|;Msqz>VFaVGmoTR?^wnS)kfgF#$5)KFzt(a>rVV~ngCKZF3THs5NCvo~%ui#OA1rQEdCb!yzDM9voavk3^UhlVGSE(f3 zK7t@z>LH?Qn z55;Kt?|H(OUkBOY&Wm|r`rPKnW|K}wTH2oxM;0szF-}VXTI475)De28m@%k*8{0*@KN8@MOHv_W-k7x51Q>Fg*cZh0+vwES;@_2Kso znr=6z#%@aOOKtqsAM^NG;fn6sRSRSraYQ}rSpUpuK~T=i=AE{p5O&NIp3d9j;_A+)ETl&wL2C_ zT@OH$edmjKF*i2*t`?|MIP~w^xtM~#dF~OiRB&^ONs;|EZ0s3f4LA!+6~NkS0z#j? z*|@49$w0RI%}&)U&TPSUD_WWi9Yh3&&R6#yr=Cec3H$l>U-@fFtA2$}{hzuwKt<5X zP0V3ojuQb4CxKech%LN$Crjs=wK)F(IgUuXtrg zG}T{!wM6~SR|j>uJC&VtU{@T>lx=)~;?LPv3$Yl!K&F*{N#JpmT;#XtZA!h4RRRqp zWUCxMYR48f6$UD@eI!X$3l~Gs7*`o;MmxqWbqH!5j)9g{rmzP?ruBhLU9k*WXwNM* z*|4`sDMwk!Y5)R5IE@Vtf%Fj&*-!-bEv<+aysL*D2Yz?E0hw1M0 z1*xB&!|MN z7`2AycfyE%5Nzr;Dn%myl!mRt?`+V>?t??0%X;DO%2^Xhxs$L8|c7%-Wl4d zid!GfsmV(|LnqC9J@amw4G6@-!0%OS1|c7ZL{?2y_FL>%@GDm1?&gqY zC2<&h*^JD6v*89%?vS=TBZ1OJoAr6764fr(HZtiGI!fti;@_^Gt29YCRLsO~%dsqL z-l+U+ij?f;a9KNE!>Y7Yd@AH(sX(unV69QJ);z@G z+}iU|`>WY*9@}N=yZq||uz~Ri*n0enBtzRVK=FLh4x`S`a!sz!QS%<~_kn^=5TrZ7 zbi**mcvEM=^5K24Qs7u<0 z(IOra2!@6I@DxPtiqoFdi3+}21PPgmsv=B;FSTy$bl?@UO3Q>pMC!iD+)X5e;uY2Y z#In|p6F$%jNY8e+EpOJOPn_VLvf#e;k|#K*DfRS`G@O$9!$GsT3^XeYF^VSITI1bF*9#Kpct?>YtWm zDP(+)v&yj7caJe|f87Xk!!_0CcNbvN5o+8T2G&;a+q>H#OJwoGWhNvd0z>O`u~180 z!SGw(qemoLyIXW%Mt9%$r~OK{mWSm8Rom=>M#fTUG#;{+cq$~+mBg|FEnx9eH8c=R z%F5SeNiLtRz6SZ%c2{4l%n`d@SJ5$1jh2|(C)HVoA~%?t)M6M$j}L_IO->_^poJ!~ zb;N~O5}PsbVa;%i-?=(>Yj7X*ui*#(DRMH$#gDSNY1`T*;PElh`FO&(R;`Aw^u=Ry z=~U-lzcaj1l(^WMp=*_luqyEIei)Q6IsPIh`-JQSX0Ws-Htzz3At!9rseC?ZVQ zjDO!$SFTS4Ca?eLP|^fieM=hc$(E?|unYbB*O2yT^BJ}|j=DxvqI$$ZOQWSCIY3mp zsXi_KuT`i7n%16IOs8Vw%q(^zroEpA%$SJLUzhl_FM z>k2erFngd8Zw|37`4z&=6~ZG1ox z6CIPzB@X*Bz4c4zKqqWyP^*f6tK@Q4ReCY`i<`?N=k$lF+ZSJhlE+mJ&H9}gt?p<} zvJR9$+WGvEwvYTlwWrLqsIC@~HmL&JAekU2KH#p9#qM_iAE`F^j3n|!cYp}5f}%oQ z%>FecD59Qc3U6P3{S8M|c&S*0!5p1%K`f3)#1oI3$gtbl`n9yQU+NmE0iAGU^l91Z zA<1?Y)a)Hm`p8KmWg1Zcjbt2V-#Kx5wW5$W7vqjOgs&sa7ORVIoGt7Zy-D&@1p5AMo%z{NCi{j2n*18 zLd5HoL&no8Ze%h61?NhQwY$5qtY|wfNW=%hcAlyO&KCnD3 z0xLK&Yd`k@{>@f6jMT2EEcQkXgPU;dG7^?hFC#2Nm?c{i40jh)D~QsRcalgSqQXqCo2SCkq59iy|bxrGatectT8K*aG-~)fjbb&E}yx}1b-Cj=9^nfdZj(SPu zaxL^;tc$Bgf@@aIpuYlmU~$_WgZ#Cb)xwVD_8gM_ESCV<@n`|opc`qcwEaUF{^oI?t#_;li1|9%pxzxijBb%ihruM^_361*Z^6bOY99mO7|Kk=kC3e zgN4Z2Pd6*w_FevU0JBL3(&GpOSQY3!mbSKQLwjiVh#SIrcxvusdpaf?&QG!$1CL@lE#mCLR1H+aR$eY6#F|gT!TRUQl2bs~*m8k}QvDlCvqguS*IFRj`)Sq%BRLXdoHbRZR1wj@>mkRf-(gr}mW5EK7 zu5e+llQoACfhoofj1pn_EhoxjsVmp_zkaN9?m5&e%F#HpXz);+{UqpIttM;{(7$kO z4@BagK`UB^HbjQwdi>DxCggHumX$1nf{37cd;7wdCd@n5VjmgqCoPHoOsV1@_vq~z zos^EAou}QX1A1cn{4ovP0Uf9i5v!(X#l~i*nnQ0j1OX3$FYut#Uyz#>P%4TEh{jc( zZe#OPSK+0@|2t*C7C76!#9)FCO1jc>bz+`wstTN8{1@6~{gdMKk$ecxlM|ls3>$#C z;ZyET#N;(nhP8`aFz^^0LV&V)fBW{9BHEOIhD8)3WM0eB4m~lGk+4yhSpN^(Kwsqn zh_>{oU|-D^?jjF>-D(qSAt(d$7T)R&#`x8yMxT+0nedFzF30u#CN14M7m#7PJ4VIx zS+3lgIAd-UccslGziUenkbHb z`M8o;3pf4U?%oihi9E#*B=ym)97VL-A3C)uP36{1de*=d8btxzGndc5_^;&ZtNw^;lB% zG8Q(Gvx`9yZrvWG3E^4|b(1a_7Zx%t#b&p26GN}`W3Iiec*>_vEXZ ztXw?Fsj8hi+{%EvAjaMv&IkogyEg*%KwLW{-KQJXTYTJB1uLk142Cm|;Ig z(VDL`2JEa3jAzq#ZyX1HArcA$dSb~`7vAD{h zKxW@q+eFV}8C~^q@VaJ)9A_NSiUWebG&=S0Y}hh5`hLBf;6I(pW`Lc$z&2R<@NW&R67=4~M3 zpm6paBkbedTl$f860qG;!-D}Lh00Y{J`?Ysxne}1z24kp%qsOXC|TrDyy^u975nEp z2bu21fb20In7$Ft1TB5v^quX<{M$dn6ulWUeE{k8m9{q)`(zXZi#KcZSp+lft>}UL z(R|L@CxgKrJ-PEb3?%9D-v-_L+VYt5zPl#`vMRVp|9x4)2Q$ixZ*RJnhPsc4t z%`=o-!Fb|UnF|AUZR<5&)D`FoeHJ<%3=-P@quia7%65DLxK>76mkr#V%gFxud^ZC8 zO^imz2Nb2z@%&+x%f#!aXz2?J*`7^8I3)ZVj-1oQ*2vS!eYqDRYoQ8NP2JYHbW zy3le)i=g;rb(4JHF6jVsa6xPM^~}q^Io61u?{tkcE`*f&Ii_yu-L$#SS~eO1Q+&E{ zR|^AR`=VsIe7RSzb6tx1$d#2BX93(#5a^hS59Of-Aat~={iL6`ytK33I2n%er5rEA z*+LUr+vew_Xl99=A82}jl8lhI|6!}d^8eW?G19Xzv%x~~^1?znIysma*uX-Ghg++0 zRFiVRJwlgqad-GjglUq`U9(R7LuRJeP51tRq+P#ndbmTBldy*kxi@Q+oH-5W{Wb8)}MYd>X-%h|`enLmYp zWoM=7=IW9lp7=WoNiWglslgW9L%jleXpu)8S_L;R=0KszHH;Zx=t zL zNvrZGt3eUb4i-_?xBmXLLZ_DOs{u`%OCULgG8xg$w|CId0~($5`&fhnBbUd`Bt zE;=wy0|~xQBRlz0cPJZYjSCK}A?|^y79T7XAhceouY1K|CX*fbAXk^RKIk(p{|$?g zdgITS<=Q)9M26s5WvYa8{DL4cA^G4zA51+Z!>4vJ^H|=cB~EWe8E5}2F??ujkrdgmod4kb zZl~${nn3pF3Hqqd{tP9Gj5T!87iIP{`N0;{4rTJ&v@3BkCKLk;F9UJfQxf#^bAXsJ z0hTB{$rn2&x`8LJOwSDy^!%`wJ(z4*$)X?^I7({E z(NVGcHyJ8<{`k!SNqR`Ui*p2g+Ev}P+FA9uY}yG|yByC(jLOKn2uBgPPcJN>jV7R? zgQ5Dt!$wL z(U4cY-%WBPeIB>QTjZFanWvA9h7U)tDye9HydbeUv2&&-!NBVAJcsI#eYtV&dpMnI zS9sUmRg7WNu!kHR=O{>Iqr3h$Rq(mbSe$x;zW?f(e8!9xaGxdzmN>)AG*pgYVlV7i}IucWb7?_I2k;r|BXyY zAP*}RD@aCW!2@6eBuQ_>Yp);z0U_)JL$5qYI~>ZVCl-W+-%%4>EIEbZ^nQlEQJl!D z0Vlly$qF7~k8bTbFeJR&RpOcw*W>l|~O#XM>nacB98gQ1Ui`1YLB{f5v z$Pgi?!tw0P4%FJy10SDn9A9I`c5j;q)mhMYcB>xXDszm{5Gqvf^?+TV)WkpfsXm6; zKfb5HYQ;+EtQpdIc{NQYghoDV zzEu&5@kMLfrQWi41A1Fi$l3H30ZDLtP_&&36P6t@6Un53;=dKMJgLAk9Y*^LTJoym z^SG)5Tw_P8$$-6WM=xXhn*23b(tyj;4M6IuA0MnFmZR12D1*H%NK83(g+a696cc;j!R^ z3HvmPzl$oNOg)EXtgyW0oH4{mIiMwen~!r61uk*{AQ#%(($kTYZXfIWX7&~14kW?0`}HGiMreop3+m=TBTn9Pxk zVmf!xZwruKVMs9)hZj8orzL|OeG#o8erBYy!hv$obpb&T^Q(#CG4NHl-omtVd^yiQ zW-*>B6$NSv1oor_Ny%6+dUpKV!SiI~z;!Oqh-I~W)B{O9FmT+|${EM^?hQN>x z8gG5Ou^q9Cma*}jcs22}EyQ?I^Yp=^WLX$P9T}HHT{tf^N%Q&H>e5|4+wF#DAhIhj zI%ST3nq+-g!QEDLap6`4Gos0kU!mhN7S)Np+ODK_;awrhN)>p{9BKTd-G2zT)T8)N zeg&+!(5Y!E{muZC(Mr$d8F5y+?c?^L;5)hoC%XCZ^DE~0FRGxA8iM< zO`EyTqTUW<)a}dLLMqPh1QZh;{ha~8BNBTa6`9G3Eu=4?Bqr>xm8Cez$k%>TFju){ z=n0-ZaKW=(4y#Lso-Uj+^ze7d&?By`LysI>Q-E}3via75sm79;*k-)1582)=2N_M2 z$DG2-vj!kkYB8}bQ`GDKbXPmBCASXD4a^=+Y`_=#ON__iO}zpG&L({Oe?^fJ$!$@YWx|Gk)=}u_w+tKoeicKh} zBavP(&Nvq~77A+17PS8yWSCM6-qxeaI_rG@T$wv0-S$H9``8`$Qi;KW)n<(&! zz~P?QSK*{O+n_{OmkfUDZ6ZfDWzu9-!*L!5K&YnNi7uWb8L-pJ`&NjCG278r zR~fO#Ti65N2T!G|6Dm_Q&%%9_l_lElZkAlRE;T%f+etIS&(i3EZ$=R%H%C_&R7A(& z4eD__E#J6!sZ8DUrI9LYP>z0Tj76%!QD>5v2HmIO2-R?nYhLl+R=QGGl9}WG)+*Fh zP{VoME1hgHfV^S9FWi>G=+|x9Q0XO30AQnhz&g8Nb)tPFvd$t^TD*xK5U|%W72LDH zSQg8snEoD4s@E2e4z%Bi_1@XPZv6iHm?ql2tLw01XRG&9IeJ3&oq#b~Tb zk9EiJLT+C4F*Xwg&BqvoaF3erpC9S-r|?4ks%u-o#@Z9a@#~2rC>|C8X-(Z^W2#QX z->Fw2hIBK8h`991yIa;C%fjAu7abl1V+QQ1;)2BE(aJ7VcVQ}}D>#=lB+_p4QYNWYU^ae028FcwzwIx4w48#X#>Ct=a{RF!4(Cp`*W3pk8P#GEBxeu^QPE;f{i!Qc^5KdTbCPsZ_l)O{@XE06Vzt3BgD&B#yyRdEDY%6OX(SGvJX^ky>xb{&aBuPgOeURUbB z?_H@2)?BH}>N+h~0B_2;SSflku4$3hG@r*$rGa`+*fSfkr2b6}WCx=Rn!#!I+;!}| zC++!)J9iQiETjHC(hD7olAx&5G>6tq%^j@ z2C-jf$oul61aC}zxZQWdN$i>}R|DtE+(5ab*bq%Wbq6ma@vflxLLTY5hWf&BSYlo= zd)y|oL`gLproXRHZ^wk5qv(frLOpkarD)Xl3SjT5(qgn&fn$u26c#Ar8jt)NJm^3G z{%C^(9OAR^07IsxEp|k$NVmbRsm$bUZ;Ecsy{DWmfO>8C%jaK3gjd46^_%{N+qrht z7!HTh-QCa#C+1d9m?<#Ue)Yr>L)0-?2w9y9Svg6KFH}`7LE7@RDC8jhEgQQ2I62Q= z;<;;`bhTHZb{^6^mpu=adxEpn41@vXpzc#N%{#?-@0duQOiwnI=%f6tt`9!Ig)i)eN-?UdLy3{`|6 zD(yX#PZmGh$F%o@d+yF_y|2%|_Qu~wrsA*Y(%MODoS^5mb9hi{*OtXR@NhgPm zAY08xG<$+%IN#UT;Q*$s2TWH=tGxE6@}tcLU{F<2eiXOE;9N5Ye)OQ@#|U>jdu|1J zwOV2XpvOr!0*kgEg7s;2m)5C(r-yo1kDcsiMH%5V&Kqs;WT%G0Qzi;jhS=RGUdfE2>=eF_9!jRL1itTA#wo zVQ}Pm9^mdL#%C2?xXWyV_N@9U0bD+Ucf0Ic3x&liAy9s9X^FQtztMeOclG-k_$lb@ zcUsnoX(S)B!eX|l2$;{9^1F}oee^5s*1~wsGS7o`+MLwN4azWdLxJG`c`i_#-6|Mi z6JUd*EoJlYf57LK7Y^mc49y_;h_)j`Y+%5tU}@WB9X^pn#yCdB@d@lCQPf*)u+7;Q zghB$YAgVwoqg<(AbOJEvUS51McyQ{Bd@}MC2G$@B^vx9D!zb=m;}aJ`AQTs`5sFK! zyTncn{6L{xFTF8%$<_y>;JFNR6Frl|&-hO$7NQb(Vm1tcS62Faj7}+!qw8zQesXuR zl^Jcl0$5i&Sg;G?VIEG>tk%S~CVCbCF#2^okB)U}br=QUB_u~EfH6!p5(kQ($DZr2J zC*YxN@`h|j?|A1~=m7>sG5mP7?@P*)u9SY08_-MWec z)SkVMvv~F8`f3m0t+q!e0Gu_q7s&MaY!5ERyq$1vMKRK&J%B+*)>nI=NM(&2`-3aj zSFC_y`ujUe?&z60KzHWueDZgu5yTy4;Q0{5o%(gxjS+-m`uocz?&u{Qcc(E_48Z8j zMQglgSs6u!0vMZyqe{E`TdhTo<`;mZd94ZHo%LIwetuW&0SEdX2=M6_cPl!pwDkx9 zZCF=+tqFAO==TOqOj|zGAdJD?sys2`Ox*g#6Aw`wwyNVC+Fs|OO|yK00>E_R-xE|S z`1z0vY??q`-w!SFA8;fThZ~^)q%CzFp+GwIEs0|ukXa?w9Qg!-Y|4ZKY_~)=UmILNQtF2*osXWE2zJj!`Tzn-Z%*7%0>G?&#I8 zZb;2V#ECY`;l}@36Qc<;F@aH7;f@?mZhd^n>)dE2Dt?|tN$QVS*_ri6{$}Dr{^s|> zQ8k8+P_BuLd}4;v@rhYe$0rW-EfC;oXV0z1Cl*1V6N}c-iKS(9VigEefMTsqXJV93 zSZmeIUB)L+N>vYrImFZCwLOsI6M#0{hff?B_{8vNOB`;t#6IV2iN)q@$v;2-m=&9h zz*rv>>%aK!im;LzmMhj7EV%@+&RB)cd1%#&Tzjc49>sc}$LMM^*1dC&s5PxzQEkHI zA1|!&sz@&DVPT(&CWK0LnEW2fsg_paQKVQ-toKex*|uI{y)Ll$pdO=L^tE!dE0sV) zl-sicfbC;;lzNV89aMxFZ+fT6b;h%n>&kToF){Sl3TS44DVx}8(Qg01}D{06dY|Q3$UlL?1uldUF|w{-7v5Z z;D5Mf5+DnS)U$TVZG*TCT)XuDXZX_NTo()M&gw`MMGj|%GAQ6Va`AApUblcs$7IKR zGD?@qrk(`ojHZQH(XR!?W8Irj0fl2ZNPfZ7W5eFbTwcO-s@hEmVq~rkdW)5d^MUtS z{mLDJ*cVTl-9V!G1VOIdXyJ+Hsc9FmDUaeQpwg9BBv^=X1E~h*0;bvAy$#BChqB5U znaZXH5(R}_J`Zqd>9Bu>anT9MV@Vf)F5;weF<>GBR4$motGtL5avMX8W zK3%McOyallBv6DN9&0Zp2-gQEBSZ|aAll=6Li~MA0FRYWL^SUE(^y$O?+=*zJwXKH z*{`7_7$`OJFB5Ei-_-cwt*9{hS~r;Ts$KyXIL`9}-qo@d){Etgq5|K00Plp(MCi{Q%9+kQUY4{0*W0F7u9=NXL| zOyo@{oUIQFQ-=vl!B7jo4a2tWS9uO#Hto^UPY ziSjS;x$nsn7KqnH*ZDj};pW@0sB9{^oVOAs=2PxWfWU2VelD#~!y;gLH!K44)369g zPs4J8M+w|;-)s44SdIuz!*WEs4a;$@Wmt|3oJ}ACjmccZGAukn9QsYiDDnhGe<~gk@IAM2k&-BV8=k^m)r2zglzn(W z4N7geRe;D~Bj9Npo7vz*bjb}dD>e7_)Tw}>w8kkn)aw{YZMmVYsJAz{Auehd)i1T7 zSStORA18P!^$V`Y+GYY`O|W11HFa|Te3`G`|9E}-_sefTzn~nk+bg{?evq>c1)adi z*b9HjzrOt^#}4tf?9&Wuei#U5O4UF$xq{)gRKp<1R0deY_k_lpt#}7O+{5N&SN*v* zN$03Zh{@AQRUurp$KWG>%+VMLnAgH4lepD;!;ZE^oxh!qC(1pdicnDu^4WDKbVnNd z@?Y(1bT9I2rBqn8vw(00*$Z^Al){i=%t=)?s%HcP3XX1XIH(Ut^AQ=37~8FLl`3)=5EpSthRTA~P+b;MVh8-A&-gks3| zxPI+49_ug&$srm6rpmrw8#xX~C-#;C7gb{*!l(w;(x!vpCqEw}isAua%{n(rRcXqU zL-mAtC44r!Z3{a#)wJRPMj9&y(Wt6hVW3i;Q9^knw?ECxs$sy)vN4OGVK>;)4SyPp z+YdW#?|?T_q60Lty({Xs)k#(?lrrtQh9H=R*R|G4u*g4iy)nFX%RQnB7_6*@_VWSb zf^GN)WoQY>Sg;C0pk%?L5;&*TY~Zt@jEWk|#GaPkt7C0ciwadxU4leJ*nM=Ls>z=f zV6(1}Q5&CjiiwOuk46EGR&rS|yNY=QE%}2@{y)Kbe7?Ybtn@wcG&1q-08nZ*TZi5w2tc|l9RWnNpzyhNh%3?K)=}i81^b~HIw!k2 zQb{Rk_e^PRfbSfY$ziA`|@#cr&1awO71BbaYevAJ&K4G92$7y7`i)pY z@f*0Vg(c(Jh8F@vO=-5Eev*}Z%^zMn5Gkecd>bEv=a`Dsh96f`Plnl3v(*0ZnbeK| zWNdK^Kxb5dkcWIuML>JcH9n!I`lM?eAD_lF1{fE*MmIwUm!9uA&r-*H3xbVZ+5xZ( zL%|^d=RRzz%966JX*kG0ZFYhVcKnr!&!`mIkC)8blIWovzlsL^t9Q`_trf$Ch*VN` zv;-BR4GWereO(#%caYcnotvr|BMLjxIOW^dr;VuSz_ zY}V|LlIm!0AfEwjxZzo2E!nOzNL7#MNnnAOx-O-g9f27v;MUg~Z8cdKQpOYzUauKAyXR$tQZtSB4uKcM zFpDqF+Ac+gY9YtC&Jvw5#@;}eC|-$U1IR5l8cUqnZ$_kpw>104x-*F_BiXqLd-v(2 znWm-M*P{X#-Yhyi6*BZPY|J*5y83ZPaJB9ZcDMO)sl^A! z{ZHzEslk*pid##O{+Yw}IvZ!ydhh*7T~K8oCiOPW!KNT>vmSIfD18*-ant4?3~nBD zEfn#_HxCa2=}vw-n-Kd9&W}JDwNs2^*M&H*e4cj)Jm)<#WWeQIJ*0RKfF#09!9scN zY04#gup*LuF$>x0i)MfQ3*4`N!R=VhA$ zaqQ;<7qKc@_YD^}YW)VV^=(H@(xG5g_qbYK3Mh+!)LARaI!{|H{HNQhA+?rA85d*1 zrPZaf({%3{-3AcEj$H zsnd)qnCfjtZ}2#KgLJI)J(n3h131m-8SOHo=auMjYYHKSX;M@(Z8It%R9EEc|ya8ATM0=#WtW~3>I@F zY~$J_{;7%l`cN<+uF$ zTepI5Q>v&)tBBhlH`<`OS!LG^Bdr%vAFI@ZdO&db@w?S5HoEm zm@0eYgDIY>#;Jm)xAYUt!N0TqF;~#RpVm(ZJUFh@9R}~cE zah4z*?Nb?$m5lC@5tJz6eH8~4N>H*}njlMPu#{LjpKFn=ccrpHpYN7jbUdwJ$1`}o z*7e59s9_rC&WwsI@~9YVi_CE^LBd`Kpr9JGPrIPF+xTNG6w3g&2YJEk=mTa&oGrHj zx{trj(j9B~s{1-?A@1+{(IM2xKnrM{k0!ED*^o(FnF zEYSh7f*+2K-)Q%_BaZ1-rXV<}A{o=N8U)y=^C^PfQmD+c`BjBm*!4Q-qY_@B+Rt|; zgX@|12yvz488=S)&SY}s`4*}hyoBn8x6JHK_po~f@Jzc`uxH%8u660uet~=ByISU2 z3S-q$(spm*EhI`57b3-L-94pl}CRT7U=Necf+YRioPaZ z*BmS1D^y4sxe%N?K?kR6|9yKnCzS1cR%$6VYXJ2Q(JDA~qNKg3_&60vHas1>*+Sn~ z0j0DcvICt~&#ZB%sVR1p4P)NppQ^o(ro zXGG5w?@gRuizODf@YkL?{gG@aKE?}jj=U|!Aw)(^;bIAWZcf?Sm^%3Gv`CrR#l6yP z1@Ka(@OmJn1*G@22c+EJ>xVrc2-zCxIM|CVWwKT6%41-?ljlE@_p)br=Lq23aXEAMHJ%H z$Y(G=boR_mN0l~n>xi&KaiZr2dv)M0!#&gm-WR{{sZtrYyJeR zmc2HM;oPdH(LQ(Y$C2v`>HK*u)R&ya+`JNz4|4yJ`I|~e(72`CdHwx?qtu4=BVn{1 zY_Xw?o6kd}V{CP)H8;p7KAAQ#prdP;&8>p$yY^9cUh;7g{NEU2>R z(EB@a@J`@(Agc%keJ4nTyOA4<&<@hmv)tREyK2ep^6c)0Wp4mBjyX3TSHZ=B*_ORP zJJw3XKkZtP^;rhSnx<-sSgjEHDs&y#?z^t!C8-w15d?w5#A6KJ?Kl1+;y?W>^d5wL zoE1pZkarVs4jC2S#|^DPs!w1#sm*>xKh+L*elH1H0;k-UROucZd->F<7#NA}Sf|d4 zrG;+w5zBVADDH4$HpK4FPx_Uia?2K=RaYDxQaV01X#O_P+SYPy?Oqx4y7R1w{NZMF9IULZdnuhoNEP<5ZtXT=AX?Y`6g-oNuZDfQ@qlnB;2j4}4#i zqOSE;mAn@wKMh0yw=Pb+W0ib=R;3)%IgZ1z5{j*?B*WU1 zjChThLWFkbLn-ZD*QG@(2V1vJCT{E38BLUKqFa3hsHQcycWSdd=_upKF2*IZVNq}x z0^3-QmpUohG6)3W)ln!+3&%AovXQlpOi`VoA(3-{A^iZ$Yzc<;Yn~MRf9?8FRdtCg!| zxZs*g-lcdzm8#&G6^r|logEAFlo!#L1A zZOt3t1>xmTk&Zx%eiSfF)5vx>bxL=8B^N;B04x(%!Yu< z>^s-OmO+54QP^f(>zJ_hqXw&~_B*KjcpiYSF7{vwip_`i2ws2>$Xe!Shrnfbh#oh* z3?Lwbdw}*|r+w|}*nu~PoV4Q^rY8cRzzZ2T)UWehNa|K7O3Q!7ld2B6N*g%FO_Fi& zcnMNRM|Q3_{qTUFDk<_cAtY2G=O z@I@BMIa&d$N|u2ZvMUjrr#=Hi)jiOTk@mmLFTfrbdv@`KU3d z*d|CDbF3*T9zswEim3(QMG1y;c3A3x16$?1nf-p~RVPZH_x1{Eg+6zIFK-7spZWy) zF6Gsp?L22Q-AbyzizaP%@dai0v&Zc8MR|&I>-FJ11&O=`H}AdRJf9zs&&u3$8^b$*f9bAr9LsVX z=r>SzD7%44XkY9aGu=5s1MQVL_n+V*k<_2|Dx>uENQw+bcwy+Hy~5C^^k#j(j7?Op zE~E;!ly+#cks%)Q2kVWD0BVW4aO8nkT0!iMj0H93OMBo7uM_8~AbWqL^`ilGXAs!+9=~7+2QSaCjR>4PA-1*x=DvKf z(-7{$D-8YDy)yKnsxtK1TxsaDKK)&wX=YNvH&zuVG>9Wr4zOYoFdxUrMncOCN|?3l zC~h%#cpEpgLukZ-Lrj;3aPc-oeSW_-P++;xFwRp*xulNCTQt>7ISJ6c$7=+EzbHR{KuA9B-NzUo*SSUxwT<2(Rf zGANZzqCmVb3bs;#p7m?+-G<8-C zaC!|-bk&7`Q%uB_7fTjz-&dhSN)$8$ZC~o(oK-Wl#4k0_VQIG`k*>gD;93c?x$1{)-ieaDD^?8c~SN|{gy1b>xdN@p*s-O5_Jzc=|^iEPpW zX-m&CNl}ccp5K=&)dk%s>*1z)Uk3tPoe+XOmU7ZV@#@1>U1qM&g8O;BLV#zIpK2+` zNf!-Lu#3JgoVvDCR<8uGh;*+MV-=A0HV?uOub^I+#HREkhD}S;Nuee^EX~+y>ex95 zq`!vl%DIJu&=08Gb75tw`S>{YO)qbts6dtrTuN9%v%2)9Dm0j=oU4|U1&8XGMM~S$ z1>)PSbnTc-$q6skcPGc?16 zWONhx9|`^*tfI*TN}c&Tk*dyujf`UJ&oM)(D&9-yX(e+b1O~9`cEx)`#p=nDv_l%eJv!Yu3YREeTvRI?I4{`|-u5ojVs^U+KT@eWefe`bwYAld82<$)>LjrEY|6|ROOda-wfivb61UseSRX`x0)np z(^+o3y-cLiHejN6T9)hB^A5-Q*)^nP*W3!uvCe4reb+I1cE`mf4 zqkbrbLF12qy-Hz_3vKNv1!-f5rJ+NQ*s63VDJUB{(l+8Z2l!Zg0;wQSlY;dsqc%iU zRX4OGFjWAaqg?7WGyv5={4QcO2d&_7o`u|MQ-RBRGd4jNo%??~Jcc)xgY&3w^l$6%g zv=CSts}AGE2;LG$INRBCE5+SQ3;|#(*@d9-5@`sty2NbetpfJeZ6b0AiWQ+q{ zicm{=*{R`3oii|5Lo)2vjPV-H5@c+o#zu22>ECnciWZ3xI{2##GsRE0{dKcEVRoHa zpHC<9m+j+I2fWav@6kQd;b2)a4NeHO3*D*sSv(!E?h0-oWph2?b!qewVmfVVl(k$$vJ0hesp{ z;A%P?kAU8qYBA#xgtN;kA64AgmrisEq~gHQ2xT+#`k;|c_;( zvsx>iMLttK?}rpst3hbMrRrn3xrQ5kz(6C0A5ZrE;@7~r&zaS8u?1h~5-}6$QZ~D3 z)j6ir717MAtM>7@_gMgpTN@*yxEnTR3}W%Lb7y$TrA#YJrb4wRgJLT_=|Y6w;qxzOa)p zo&bux$xHpf^S(D|M&-%*G`B6tMKU2B&ev5+(;_WvYd21o?Pwaqw#(13&1qosd_kS= zU(f1CF!Z$FkEZwsIC6x;jU!0duvv5z0bP{x93P1QA495b6ai&bYTl6|OoiPtnp$%l zVY2RWgekzt5+)ZNOPH|qP2s^$3F=tl>RLw2lJXxOxulcLyu_I4Zd~cUC zGSak_8nAzE;EES%>`@#~;BDN{Do;2t@Py&fIyl^{gMH3f2aC;FhrfUPYgTL`WTO_A z1@&*boA547Xo8x+F?RDxk+7B8D=O>6T&)~W(nfBo$F=V&ugv33P1Dvnzv^zPHuJdw z&sCQf$`v);yN#bgQCE7Zm8U;QeY4t(7orz?>K}@_LMO~JMhtaL={%p)+QcyX%^vXi zm_ORm30|3!KOS zYpVZKQBB~ns!ml?v3lWRk*ZEvVx_j`u>lBHl?$*1ch-}e8uq?{lnNU#TQjojM04 zTM|;V_v&5WtH`t%^$ujTbK?lGam;}A6f^RiVmg6@}hn<4)w=j0*66wlu zv>B89*+3t7(xDR7Zeb#YoOF~YoCfp4IyZ4FMUMm|*1 z$N*C{s!VAS*I6?Yy-Z`H2K70-JY9we=!#5gcA}I17T?#Y2jFSb%t0rz-3S+OH_Zi( z20NneR@^CE`*!DhH2FH$B7@@wPTr6!gc#1(r6BZrN1G*K;8VNjtwL}RrYJYb6+-{y z3u|IPVru0()+|)r4efQvg7Y<8PFD8!duJ4gjK@o!8RawTg)>X8>q5`71Mchly%hhg zmnkIRY-1cF%LAYv&8o>mjcOCUg$=}$l0E+w8163xDV8E zHZok|3=o%LdTqH6srTg`bF=_-=k4Bn01j)n%?AmM<*U*>vAREASU8U(;Iq!bRM`^T(QSr{7{ANZ}-w4%Ldm@Etr+`TkUAV+r0y zt+&&6$ip1{YQEzHPv3FiAcFyNv8ESwjnba?5{8FNA7iz}G@{vuW(-QwS#9FJj*xL> z&tEYEQ@s|rP6G?*-sV&g;yPw8?Os8M8EJPC0vLqPorDm3!=XS92?3ma;A{y2P&xi0 zAuix?gcGK{R&~}nnI1SV^<+Oh&D%HM-roP|>D>=czxeJq!=7-nU51&7Myz#eB@6zqNr*~hTzC5KH-ID%$|6hTBi{JhQ z>_4}1``zu&e@VBGSo8jml0Mi8r`D=$W&}5acc7ZwdkzeCCVj%M;V~mFF@d~lPQOPg zXsmg|n{-@_{6IUTUkPn^x*sfJ4evTcd0?o04jcxhIo{PEC|Fc*3uw)*V6qlQh2qtp zci=#6bSY*9Bw*EP`yhj7d8zAZ6BrM@@;Pn+)b6?Aa;Ar2>Loy)Kc5@d8Cw$fn?*&% z#9XCJw}&aL! z4@~p@SZw7YqrKI=C-iRj^>d7k-^F?H9V$q!YljLSGZcmGAb2j_aJ44}<{69Y%)>z@ zWf_^=pyTHi;2L;sNpi8>Shv82#g-r`6ZS)Bne;sXHj~x@7P~NjJ!j`~@D9bESX|j7 zI6GR{7K^zDc$Y(5d6}zJz}I*|&klI4)*q0SIU2O6Bx|v}YlRD#Ef0Vy*dD}<9T|hJ z#uUP!9lj&*Zc-Qcz)Zgx2=?}=NGUZ3ORGLVqks$_{)i@;9IL+Bl=6R=LF85;Y*8;# zIH=s3qv!?iZ5WP=?tUG>EoHzXHzfhVsugPuN%J7^^DYk`P?%rR!mBzW3Z^Qh8immG zQ2>_WRZ78R0M&r5>KI9HLvT{}qhPK922zTT?;_6Vc_(n@74=*OhAa8)>*Vo@0p4cd zNrj1lI_wopWq~fcp?iY007E&>cs@|(OWTU-+Y6rI?>TPqQOI(dZIbH6=I;Zg#rMt=`F zYhbl~$+tIap$BjG3#ruO2}=nwiGzq7q_;u8LNJ}9C7BmR#gLT6{2;AtjxZQkGP3gO z+&1B6O+#Rsb5W~fkb{AtZ06Aii*KEqMfS0u4WJE9S!|~0Z36$7h@iNky__ul^#lx` z$+J|)h=PAP&8P`kTjJJR(9oRm6!2U0^E{MyWYIZ&4MOOAmnV2|lK>rCcb5P)+jatS zXpTH0$0T`4TRF>$lod_!m<3s$gAU zF1Lq)V@nbIcs={e+&W2c_bxJH)KDtuQ>z%=0}0!R(Ogd$N_D>I)Ap2|%xeKFIY)wWs_B7=TTC6`s^5&D z#ItQ&cvsiMA<)L%?ns4u!*O! z2x1~k*$e$poVX>mBXS?pgqbXCZUK~&*Y}wxdw`syj>B>&&eH^&5|)Js=K`n=&vjCq z3!Le^F8y610b+`ak%u%8mcd`F(WD(9`<$06H(dd+;Y}<7=xDuf(J9p}PoYpq!UbM- zSXwIk(qyC}?=g+&0ghoq3|B1XU`5z8trzeTcptmdW=haB!sV z5y~WAsY>3Lr4W+vDs_h)y@$9f$AD?o=Ixe;a#$iCFr8-v=0;BVW$b4_;8}b?Kn>0v z*=1EhrKAWvi`{I2TrML(yV;_@?AI+*;dVSMsl*voj9yenW1F0ywZieRwPpwP-BwWI z;`@VfyD!e9w1&l`9%pRE)yH-$v2ng&(_XB|KvQY6R}&&7VXBW?#%^x`b$Ii)3YvE~-ChdH+pse+el6oRl3^1EaPg+o#%+ax#bWy zly_uG-mk;uLAQx#EhrxDYvL&I?ETuiwV;4h-TPH)OQ7W%whcmfN8qHyt!EyQL+X)k z%N!yivYKP7h1tS3GP&x3gqZGK!gh!#$gaY3qP)LvIXhqG$iJD%Gr~$GuOS&APfB5uEbS%%T|#vyMVZsM<7vh8pzmQ_sA=PyRM! z-1riLuFv6jlh|CKD8d>9n>cZR!yVvgbST2!!x_%FNMWQD=dBbNC(odc}4a#+$r?>mPhH;=PlIP6wT;kpH%5U1}%lz(v)jVYbROFqQwY zU2QjZ%Pj6sgmSe0`$$gn$ji3qr!EEAlR>1mJPoB%RlweSB2QD~ zJ86tCC3uRVH9QU@tXvU3W|nt@Hg=&EZ?P4LUt#c~b=sH$Gs1a%3B2yE!;@8l z@mS1dw~&GpDxoW?lNf(LLQ%wxeXM?jm!iqSE?kUZc39CnBM$cXT~tnCJ7kwyvgumj zg%&A;LJc1EgLSfT`b<4JdseNa<^m}3St3US!@+o)H7Geou<$c+g&r~lhrw3TzSI^t zDZNla6=no(IbY>o9p=WFsBs9!2|Wg|4z*cZLHx72AmCu4qZAnMnM`_Zp_-=Ch^5>P z8u6%QGd${PnUgIzRVdW_ZBAMLhB$p}7f!8+9b zKf()E00mNuksp{KiW^I9;wOvrV{vj|&o%ZdguD-TF$+=e6)tDRD)*Bn(7aIZ z4z-CQ>rx`|5sSl}YkOE~D$uc|fdj54@g3juu*<`s7BU$?bQasm&iq8Ul7$nsMY4Xr zY8l^k9^l+oHI_%8gVLuR`rgbIJF=SX7q-k!$|zI=17Ge(rh|MuTIy?j3$J{Eu|C;o zvp#CL`ZO)cRFIK=glqw596i`hUbua1l9&Nlk#lmr_78SNMgF``5$7Gy0BuVJ&U$nw z{3qgu%X|^6s6v9$zvlSS0B^MJE0}N@U%sAGx9{cuX zJk@(c91=nR0R4-NND ziwL|`BR~q2YVa z=Ry_unqY*U5zK2?c^IzGq$`@RGo%XIvKPRbG4Pd>Kf>`+Y1$T2*$vK1`#)-{5(v$hjO*`s-&@5ReIup@LT9d$x9xsN5?@aMvE-U4=DdvG{Z_?yy z+lo=BS|41WRhX__j@R<<+cCxOHxff*&NGoF3?ni<@Vdf1XQieOWbI#*)1RRidL=2K zHqByv61R557(g~x-ODjk|4vq8fS$kOh}iWBKov;WLrH^cHLJ?XiPI&UB-rK`30OQpn_1P$Q=`qgH268V#(t@Ly$;h(1Ajh_Rx$e>!?PdppR#v#?q}4%6UDGE+b81U~?Vx6M76uevasgLtE>*%@&Tm*#dVSo%NgY1oxlZtpi(TaJ>g{ z=>T!Yv;w1qCz>md&`t*52?Aby04e&jF089M+Jznd-3Z}Qi5(8UtJN+U_4=KZ8a9`;*%WW-LhfIRAf4K$n<(t*6q@$I z_2m5=S#DxiG6RPj1+&F9fHG9-4)}+Lsz^?GK}x@!+Cq7mQEzSTs;ZgbEMBYomNj!+ zUG$)^5ymzJOv8WI*E<_89gglKUM_Kkm2XZ{0rD+*KvPp}%V$NZ70&y2Xf@?!4F(=) zXu`aoU?pj6cp4cU~z2> zHgI`^;^`*u4uMm;+MM~I1JSa@M)CSu+?8Y=64a%+T|B(-w*ExRo$nwr%4=(Eb9Pxc z{zB+|ojG%ReRP!72x{cpU|lL=ummP>&h`0jB2Rj@hp24UDT1^hlyPxPBo>4VkefJ{ z;^<21_rPFOj1r(XfUlAd*q3Yc`#>bXG9qp`at?Tw_lRPv*)c{#f^n?9rZ>d*t4f$` z5QM(N2UDMvKn)<~0aMa%+apSM+O(GRY|(UnV57cl#`vdq;v8J|39YOtan7C`MF#3* ze*a~3p-`R<%zVewM7x)_)^&q`bfw`XS=yO>{9nE|>g>7QiGRf>G@6SYrq>kiKUjR> zfK~wxC#p}8yhvz?4cWH`ft#Xy;*$k&zXEKBCM`K>(N9o4ryF|0(Eo~gy>{SRYvnv^ zR&#ry^?jv|@rw;+4(QDvjjK)f}qK6MLmMM z)T?;Dm7HPq1L_H}9$57P+At<9E>{!7X80`%Siy3}6~DH>K-yd7;&%UxJ2z`-AOtnU zy?p{Vhi>}vU=bYn$io#w019-zQU?CP|NDd>q#_)G$)SXxfp4XM{L?hnlCInjSzr8N#J`;jyug|r z+%ake)LEs)P0jW|I-8=%p-8Qv-XBHq72gH*SG}WqW9%*FR6gFs*R}HxzU$%zBijXV#262RTh>aoQ z%XYNNgwXFy6Hze((*PIJeg~rf!4`0SH2oCGS;L%h9`;2`UXS{Sjt<9j?hkN(qdfP& zunF1zuWUjFM%MqIO&Fri?PSdjH(hplBZ%Ez29X31v5xG8o9y{_0RWOE-gy0m1WKDn z)(d+dPj`X7G(To^BAqooh7W#mxWLX)$LYz#_xmxI&sCiiu8oJQj_(Y{LYFy+or4a0 z@zQfX`1WK4<SYX&1&Pnj~nJ%w=Pu7Jjq7&+nRa#=!7SO4MY7 zag>OG_y#4UuVz3G)ax?IC|J8ISY7inM()7m&Kfxa(XMCJO^@=HvP#w#t#*aUmgl@z zJ|l~Vns-vLbX!h86 z_VKjOgo?P*yfMH=?UG!9zRrQk6LEQRF#Y#6_IKdwICt({%u5?zH*@1bzs9>he9w4K zMbBU7yLUn0NdTQ92SDsR(NDhTZ8 z-)g(0oq3yA)0^Df%{I)sUo1q_fvs-k20p#CgogH#{@-4(Wfw&+c6*OQTFVlaSVr+C$MK&D!}0C>j{6*7C3Css?W* z3a+jCRb9yv+^1!~Ts&ECxM#(1u0=)BgF@ZV*wp=NU?CrZA{fQ!tj{%jX1Wg_ZBbu# zoUXY_Y7e!-^OoufuEOlbq%P5HHgj2+c!Y4#B06`6hfzj1TyEj{_{?m z03I;^p2D1P%=W|yCk#|;kN_R~N|pekgpMoSwN@eNWZx@#08&ncaK$oy?*jV2M(M3i z*yX;pU83e@x1I-ko^m-ma~>~aIe3j-hMBpASIf}<_=C76lal99?6znTnoT;xJqrB& z0wm&+rOOALrTqzJpmudr*dr0{Tc70$^1L8z2^ljflkDUO0{G{)4nIYgqrQgT8noc% z^C}na^z<9InozDmHBzIZ=CoaJ@daT3lEUS9D0r|oy#Jxt85=vOeb;X6}gz$toS?Kwoifpao}@#UFc^D#u? zB3e_v1A@400JW~nDMa9SgZlei2Gu_NUJuv$)~HI#^4cF~D@3hSF01b6KsH+Yc@2

    u|-x64UD=L6%vp3b%b>B7~> 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 H?(lyA4*t%k literal 0 HcmV?d00001 diff --git a/forester/archive/RIO/others/hmmer/00README b/forester/archive/RIO/others/hmmer/00README new file mode 100644 index 0000000..71bff7e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/00README @@ -0,0 +1,57 @@ +HMMER - profile hidden Markov models for biological sequence analysis +Version 2.2 (August 2001) +Copyright (C) 1992-2001 Washington University School of Medicine +------------------------------------------------------------------ + +o About this software... + HMMER is an implementation of profile HMM methods for + sensitive database searches using multiple sequence alignments as queries. + + Basically, you give HMMER a multiple sequence alignment as input; + it builds a statistical model called a "hidden Markov model" + which you can then use as a query into a sequence database + to find (and/or align) additional homologues of the sequence family. + +o Getting HMMER + WWW home: http://hmmer.wustl.edu/ + Distribution: ftp://ftp.genetics.wustl.edu/pub/eddy/hmmer/ + +o Installing HMMER + See the file INSTALL for brief instructions. + See the chapter Installation in the HMMER User's Guide for more + detailed instructions. + + You should also read the following files: + COPYING -- copyright notice, and information on the free software license + LICENSE -- Full text of the GNU Public License, version 2 (see COPYING) + + If you have obtained HMMER from Washington University under + a non-GPL license as part of a special licensing agreement, + COPYING and LICENSE will refer to the terms of that agreement. + +o Getting started with HMMER + The User's Guide is in Userguide/Userguide.pdf [Adobe PDF format]. + It is also available online as hypertext: + http://hmmer.wustl.edu/hmmer-html/ + + A quick tutorial intro is given as the first chapter of + the User's Guide. + +o Registering HMMER + Email eddy@genetics.wustl.edu to register and get on my + infrequent mailing list of HMMER news, patches, and updates. + +o Reporting bugs + These programs are under active development. Though this + release has been tested and appears to be stable, bugs may crop up. If + you use these programs, please help me out and e-mail me with + suggestions, comments, and bug reports. (eddy@genetics.wustl.edu) + + +Sean Eddy +Howard Hughes Medical Institute and Dept. of Genetics +Washington University School of Medicine, St. Louis, Missouri, USA +------------------------------------------------------------------- + + + diff --git a/forester/archive/RIO/others/hmmer/COPYRIGHT b/forester/archive/RIO/others/hmmer/COPYRIGHT new file mode 100644 index 0000000..f50acd7 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/COPYRIGHT @@ -0,0 +1,36 @@ +HMMER - Biological sequence analysis with profile hidden Markov models +Copyright (C) 1992-2001 Washington University School of Medicine + +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 HMMER 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 obtaining a specially licensed version from Washington University +School of Medicine. Contact Jack Pincus (jhpincus@cris.com) to arrange +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. + + diff --git a/forester/archive/RIO/others/hmmer/INSTALL b/forester/archive/RIO/others/hmmer/INSTALL new file mode 100644 index 0000000..268dd24 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/INSTALL @@ -0,0 +1,45 @@ +Brief installation instructions for HMMER 2.2 +SRE, Sun Aug 5 16:22:52 2001 +------------------------------------------ + +For a source distribution (hmmer-2.2.tar.gz): + + uncompress hmmer-2.2.tar.gz Uncompresses the archive. + tar xf hmmer-2.2.tar Unpacks the archive. (makes a new directory, hmmer-2.2) + cd hmmer-2.2 Moves into the distribution toplevel directory. + ./configure Configures the software for your system. + make Builds the binaries. + make check Runs the test suite to test the new binaries. + make install Installs the software. (You may need to be root.) + + It should build cleanly on just about any UNIX machine. + +For a binary distribution (hmmer-2.2.bin.-.tar.gz), +for example, the sun-solaris distro: + + uncompress hmmer-2.2.bin.sun-solaris.tar.Z + tar xf hmmer-2.2.bin.sun-solaris.tar + cd hmmer-2.2 + ./configure + make install + + Note that "make" and "make check" aren't necessary, since you + have a precompiled distribution. + + If your machine doesn't have a C compiler, the ./configure will + fail, and you won't be able to do a "make install". This is + an artifact of the way I have the configure script built. + If this happens, just copy the man pages and binaries whereever + you want them, for instance: + + cp Man/* /usr/local/man/man1/ + cp binaries/* /usr/local/bin/ + + HMMER doesn't depend on any external data files, so the installation is + simple - the binaries are free standing, and you can install + them anywhere you like. + +For more detail, see the Installation chapter in the HMMER User's +Guide. + + diff --git a/forester/archive/RIO/others/hmmer/LICENSE b/forester/archive/RIO/others/hmmer/LICENSE new file mode 100644 index 0000000..a43ea21 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + 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 2 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, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/forester/archive/RIO/others/hmmer/Makefile.in b/forester/archive/RIO/others/hmmer/Makefile.in new file mode 100644 index 0000000..a8e4cb4 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/Makefile.in @@ -0,0 +1,284 @@ +################################################################# +# Makefile for HMMER: Main project directory: installation, documentation +# CVS $Id: Makefile.in,v 1.1.1.1 2005/03/22 08:33:51 cmzmasek Exp $ +########### +# HMMER - Biological sequence analysis with profile HMMs +# Copyright (C) 1992-1999 Washington University School of Medicine +# All Rights Reserved +# +# This source code is distributed under the terms of the +# GNU General Public License. See the files COPYING and LICENSE +# for details. +########### + +# On most Unices, you can build the package without modifying anything +# by just typing "./configure; make". +# +# You may want to modify the following make variables: +# BINDIR - where the executables will be installed by a 'make install' +# MANDIR - where the man pages will be installed by a 'make install' +# CC - which compiler to use +# CFLAGS - compiler flags to use + +# where you want things installed +# Sort of uses GNU coding standards. ${prefix} might be /usr/local. +# ${exec_prefix} gives you some flexibility for installing architecture +# dependent files (e.g. the programs): an example ${exec_prefix} might be +# /nfs/share/irix64/ +# +prefix = @prefix@ +exec_prefix = @exec_prefix@ +BINDIR = @bindir@ +MANDIR = @mandir@ + +# how to install the man pages; +# cp is generally fine, unless you preformat your pages. +# +INSTMAN = cp +MANSUFFIX = 1 + +# your compiler and compiler flags +# +CC = @CC@ +CFLAGS = @CFLAGS@ + +####### +## You should not need to modify below this line. +## Much of it is concerned with maintenance of the development version +## and building the release (indeed, several commands will only work in +## St. Louis) +####### +SHELL = /bin/sh +BASENAME = "hmmer" +PACKAGE = "HMMER" +RELEASE = "2.2g" +RELCODE = "hmmer2_2g" +RELEASEDATE = "August 2001" +COPYRIGHT = "Copyright \(C\) 1992-2001 HHMI/Washington University School of Medicine" +LICENSE = "Freely distributed under the GNU General Public License \(GPL\)" +LICENSETAG = gnu +COMPRESS = gzip + +# The program lists below for HMMER and SQUID are not necessarily +# a complete manifest. They are the list of stable programs that the +# package will install. There must be a man page for each one of them +# in the appropriate places (documentation/man for HMMER, squid/Man +# for the SQUID library). +# +PROGS = hmmalign\ + hmmbuild\ + hmmcalibrate\ + hmmconvert\ + hmmemit\ + hmmfetch\ + hmmindex\ + hmmpfam\ + hmmsearch + +PVMPROGS = @PVMPROGS@ + +SQUIDPROGS = afetch\ + alistat\ + seqstat\ + sfetch\ + sindex\ + shuffle\ + sreformat + +# all: Compile everything (except the testsuite), +# and stick the supported programs in binaries/ +# +all: version.h + @if test -d binaries; then\ + echo "You appear to already have a compiled HMMER distribution.";\ + echo "You don't need to make.";\ + echo "";\ + echo "If I'm wrong, it's because I'm only looking to see if you have";\ + echo "a 'binaries' directory; do 'make distclean' to revert HMMER";\ + echo "to a pristine source distribution.";\ + else\ + (cd squid; make CC="$(CC)" CFLAGS="$(CFLAGS)"; make module);\ + (cd src; make CC="$(CC)" CFLAGS="$(CFLAGS)"; make module);\ + mkdir binaries;\ + for prog in $(PROGS) $(PVMPROGS); do\ + mv src/$$prog binaries/;\ + done;\ + for prog in $(SQUIDPROGS); do\ + mv squid/$$prog binaries/;\ + done;\ + fi + +# version.h: +# create the version.h file that will define stamps used by +# squidcore.c's Banner(), which is called by all executables to +# print a standard package/copyright/license banner; +# then puts copies of version.h in all directories that are +# going to need it -- HMMER src/ and any modules of mine that +# also produce installed executables (squid/) +# +version.h: + echo "/* version.h -- automatically generated by a Makefile. DO NOT EDIT. */" > version.h + echo "#define PACKAGE \"$(PACKAGE)\"" >> version.h + echo "#define RELEASE \"$(RELEASE)\"" >> version.h + echo "#define RELEASEDATE \"$(RELEASEDATE)\"" >> version.h + echo "#define COPYRIGHT \"$(COPYRIGHT)\"" >> version.h + echo "#define LICENSE \"$(LICENSE)\"" >> version.h + cp version.h squid/ + cp version.h src/ + +# check: compiles and runs test suite in testsuite/ +# These are public tests, distributed with the package. +# +check: squid/libsquid.a src/libhmmer.a + (cd testsuite; make CC="$(CC)" CFLAGS="$(CFLAGS)") + (cd testsuite; make check) + +squid/libsquid.a: version.h + (cd squid; make CC="$(CC)" CFLAGS="$(CFLAGS)"; make module) + +src/libhmmer.a: version.h + (cd src; make CC="$(CC)" CFLAGS="$(CFLAGS)"; make module) + + +# install: installs the binaries in BINDIR/ +# installs man pages in MANDIR/man1/ (e.g. if MANSUFFIX is 1) +install: + for file in $(PROGS) $(SQUIDPROGS) $(PVMPROGS); do\ + cp binaries/$$file $(BINDIR)/;\ + done + for file in hmmer $(PROGS) $(SQUIDPROGS); do\ + $(INSTMAN) documentation/man/$$file.man $(MANDIR)/man$(MANSUFFIX)/$$file.$(MANSUFFIX);\ + done + for file in $(SQUIDPROGS); do\ + $(INSTMAN) squid/Man/$$file.man $(MANDIR)/man$(MANSUFFIX)/$$file.$(MANSUFFIX);\ + done + +# "make clean" removes almost everything except configuration files +# and binaries. +clean: + -rm -f *.o *~ Makefile.bak core TAGS gmon.out + (cd src; make clean) + (cd squid; make clean) + (cd testsuite; make clean) + +# "make distclean" leaves a pristine source distribution. +# +distclean: + -rm -rf binaries + -rm config.cache config.log config.status + -rm version.h + make clean + (cd src; make distclean) + (cd squid; make distclean) + (cd testsuite; make distclean) + -rm Makefile + +# verify: consistency checks on the package +# These are private tests, not distributed with HMMER +verify: + @echo Checking options for consistency and documentation... + @for prog in $(PROGS) $(SQUIDPROGS); do\ + ./checkoptions.pl $$prog;\ + done + +# doc: build the Userguide and on-line manual +# +doc: + (cd Userguide; make) + +# dist: build a new distribution directory in hmmer-$RELEASE +# Exports from the CVS repository. +# tags RCS files with $(RELCODE) for later reconstruction +# squid RCS files are tagged with hmmer$(RELCODE). +# Adds a license statement to each file that has a @ LICENSE @ line. +# Virtually identical to squid's make dist -- keep them in sync! +dist: + # Delete old versions of the same release + # + @if test -d ${BASENAME}-$(RELEASE); then rm -rf ${BASENAME}-$(RELEASE); fi + @if test -e ${BASENAME}-$(RELEASE).tar; then rm -f ${BASENAME}-$(RELEASE).tar; fi + @if test -e ${BASENAME}-$(RELEASE).tar.Z; then rm -f ${BASENAME}-$(RELEASE).tar.Z; fi + @if test -e ${BASENAME}-$(RELEASE).tar.gz; then rm -f ${BASENAME}-$(RELEASE).tar.gz; fi + # + # CVS tag and extract. -c: make sure we committed; + # -F: allow more than one "make dist" per rel + # prep: must have done "cvs commit", and CVSROOT must be set + # We also need the squid library, so tag and export it too. + # + cvs tag -F $(RELCODE) + cvs export -r $(RELCODE) -d ${BASENAME}-${RELEASE} ${BASENAME} + cvs rtag -F ${RELCODE} squid + (cd ${BASENAME}-${RELEASE}; cvs export -r ${RELCODE} -d squid squid) + # + # Make the configure scripts from configure.in + # + (cd ${BASENAME}-${RELEASE}; autoconf) + (cd ${BASENAME}-${RELEASE}/squid; autoconf) + # + # Include the appropriate license files and release notes + # + cp Licenses/LICENSE.$(LICENSETAG) ${BASENAME}-$(RELEASE)/LICENSE + cp Licenses/COPYING.$(LICENSETAG) ${BASENAME}-$(RELEASE)/COPYRIGHT + -cp Release-Notes/RELEASE-$(RELEASE) ${BASENAME}-$(RELEASE)/NOTES + # + # Attach license stamps on files that need 'em (replace LICENSE keyword) + # licenseadd.pl is basically harmless, so we can overannotate here by + # trying to licenseadd everything. + # + find ${BASENAME}-${RELEASE} -type f -exec licenseadd.pl Licenses/$(LICENSETAG) {} \; + # + # Compilation of the documentation. + # Documentation is not provided in source form. + # + (cd documentation/userguide; make clean) + (cd documentation/userguide; make pdf) + cp -f documentation/userguide/Userguide.pdf build/hmmer-$(RELEASE)/ + # + # Remove CVS-controlled files/directories that don't belong in + # the distro + # + -rm -rf ${BASENAME}-${RELEASE}/Bugs + -rm -rf ${BASENAME}-${RELEASE}/CHECKLIST + -rm -rf ${BASENAME}-${RELEASE}/Internal-Notes + -rm -rf ${BASENAME}-${RELEASE}/Licenses + -rm -rf ${BASENAME}-${RELEASE}/MAILING_LIST + -rm -rf ${BASENAME}-${RELEASE}/Release-Notes + -rm -rf ${BASENAME}-${RELEASE}/configure.in + -rm -rf ${BASENAME}-${RELEASE}/checkoptions.pl + -rm -rf ${BASENAME}-${RELEASE}/licenseadd.pl + -rm -rf ${BASENAME}-${RELEASE}/nodebuild + -rm -rf ${BASENAME}-${RELEASE}/rootbuild + -rm -rf ${BASENAME}-${RELEASE}/buildall + -rm -rf ${BASENAME}-${RELEASE}/documentation/userguide + -rm -rf ${BASENAME}-${RELEASE}/squid/Licenses + -rm -rf ${BASENAME}-${RELEASE}/squid/LOG + -rm -rf ${BASENAME}-${RELEASE}/squid/configure.in + # + # Packaging commands + # + tar cvf ${BASENAME}-${RELEASE}.tar ${BASENAME}-${RELEASE} + $(COMPRESS) ${BASENAME}-$(RELEASE).tar + + +# make ftpdist: install FTP distribution. Assumes a "make dist" +# has already succeeded. Doesn't do the symlink; +# doesn't install the on-line manual for the Web site. +# +ftpdist: + cp -f $(READMES) $(FTPDIR) + cp -f build/hmmer-$(RELEASE)/COPYING $(FTPDIR) + cp -f build/hmmer-$(RELEASE)/LICENSETAG $(FTPDIR) + cp -f build/hmmer-$(RELEASE)/NOTES $(FTPDIR) + cp -f build/hmmer-$(RELEASE).tar.Z $(FTPDIR) + cp -f build/hmmer-$(RELEASE)-*.tar.Z $(FTPDIR) + cp -f Userguide/Userguide.ps $(FTPDIR) + cp -f Userguide/Userguide.pdf $(FTPDIR) + cp -f Userguide/hmmer-html.tar.Z $(FTPDIR) + + +# make stable: Set up the FTP site symlink to the current stable HMMER release. +# +stable: + ln -sf $(FTPDIR)/hmmer-$(RELEASE).tar.Z $(FTPDIR)/hmmer.tar.Z + + diff --git a/forester/archive/RIO/others/hmmer/NOTES b/forester/archive/RIO/others/hmmer/NOTES new file mode 100644 index 0000000..12c069b --- /dev/null +++ b/forester/archive/RIO/others/hmmer/NOTES @@ -0,0 +1,197 @@ +HMMER 2.2 release notes +http://hmmer.wustl.edu/ +SRE, Fri May 4 13:00:33 2001 +--------------------------------------------------------------- + +As it has been more than 2 years since the last HMMER release, this is +unlikely to be a comprehensive list of changes. + +HMMER is now maintained under CVS. Anonymous read-only access to the +development code is permitted. To download the current snapshot: + > setenv CVSROOT :pserver:anonymous@skynet.wustl.edu:/repository/sre + > cvs login + [password is "anonymous"] + > cvs checkout hmmer + > cd hmmer + > cvs checkout squid + > cvs logout + +The following programs were added to the distribution: + + - The program "afetch" can fetch an alignment from + a Stockholm format multiple alignment database (e.g. Pfam). + "afetch --index" creates the index files for such + a database. + + - The program "shuffle" makes "randomized" sequences. + It supports a variety of sequence randomization methods, + including an implementation of Altschul/Erickson's + shuffling-while-preserving-digram-composition algorithm. + + - The program "sindex" creates SSI indices from sequence + files, that "sfetch" can use to rapidly retrieve sequences + from databases. Previously, index files were constructed + with Perl scripts that were not supported as part of the + HMMER distribution. + +The following features were added: + + - hmmsearch and hmmpfam can now use Pfam GA, TC, NC cutoffs, + if these have been picked up in the HMM file (by hmmbuild). + See the --cut_ga, --cut_tc, and --cut_nc options. + + - "Stockholm format" alignments are supported, and have replaced + SELEX format as the default alignment format. Stockholm format + is the alignment format agreed upon by the Pfam Consortium, + providing extensible markup and annotation capabilities. HMMER + writes Stockholm format alignments by default. The program + sreformat can reformat alignments to other formats, including + Clustal and GCG MSF formats. + + - To improve robustness, particularly in high-throughput annotation + pipelines, all programs now accept an option --informat , + where is the name of a sequence file format (FASTA, for + example). The format autodetection code that is used by default + is almost always right, and is very helpful in interactive use + (HMMER reads almost anything without you worrying much about + format issues). --informat bypasses the autodetector, asserts + a particular format, and decreases the likelihood that HMMER + misparses a sequence file. + + - new options: + hmmpfam --acc reports HMM accession numbers instead of + HMM names in output files. [Pfam infrastructure] + + sreformat --nogap, when reformatting an alignment, + removes all columns containing any gap symbols; useful + as a prefilter for phylogenetic analysis. + + - The real software version of HMMER is logged into + the HMMER2.0 line of ASCII save files, for better + version control (e.g. bug tracking, but there are + no bugs in HMMER). + + - GCG MSF format reading/writing is now much more robust, + thanks to assistance from Steve Smith at GCG. + + - The PVM implementation of hmmcalibrate is now + parallelized in a finer grained fashion; single models + can be accelerated. (The previous version parallelized + by assigning models to processors, so could not + accelerate a single model calibration.) + + - hmmemit can now take HMM libraries as input, not just + a single HMM at a time - useful for instance for producing + "consensus sequences" for every model in Pfam with one + command. + +The following changes may affect HMMER-compatible software: + + - The name of the sequence retrieval program "getseq" was + changed to "sfetch" in this release. The name "getseq" + clashes with a Genetics Computer Group package program + of similar functionality. + + - The output format for the headers of hmmsearch and hmmpfam + were changed. The accessions and descriptions of query + HMMs or sequences, respectively, are reported on separate + lines. An option ("--compat") is provided for reverting + to the previous format, if you don't want to rewrite your + parser(s) right away. + + - hmmpfam now calculates E-values based on the actual + number of HMMs in the database that is searched, unless + overridden with the -Z option from the command line. + It used to use Z=59021 semi-arbitrarily to make results + jibe with a typical hmmsearch, but this just confused + people more than it helped. hmmpfam E-values will therefore + become more significant in this release by about 37x, + for a typical Pfam search (59021/1600 = 37). + +The following major bugs were fixed: + [none] + +The following minor bugs were fixed: + - more argument casting to silence compiler warnings + [M. Regelson, Paracel ] + + - a potential reentrancy problem with setting the + alphabet type in the threads version was + fixed, but this problem is unlikely to have ever affected + anyone. [M. Sievers, Paracel]. + + - fixed a bug where hmmbuild on Solaris machines would crash + when presented with an alignment with an #=ID line. + Same bug caused a crash when building a model from a single + sequence FASTA file [A. Bateman, Sanger] + + - The configure script was modified to deal better with + different vendor's implementations of pthreads, in response + to a DEC Digital UNIX compilation problem [W. Pearson, + U. Virginia] + + - Automatic sequence file format detection was slightly + improved, fixing a bug in detecting GCG-reformatted + Swissprot files [reported by J. Holzwarth] + + - hmmpfam-pvm and hmmindex had a bad interaction if an HMM file had + accession numbers as well as names (e.g., Pfam). The phenotype was + that hmmpfam-pvm would search each model twice: once for its name, + and once for its accession. hmmindex now uses a new + indexing scheme (SSI, replacing GSI). [multiple reports; + often manifested as a failure of the StL Pfam server to + install, because of an hmmindex --one2one option in the Makefile; this was + a local hack, never distributed in HMMER]. + + - a rare floating exception bug in ExtremeValueP() was fixed; + range-checking protections in the function were in error, and + a range error in a log() calculation appeared on + Digital Unix platforms for a *very* tiny set of scores + for any given mu, lambda. + + - The default null2 score correction was applied in + a way that was justifiable, but differed between per-seq + and per-domain scores; thus per-domain scores did not + necessarily add up to per-seq scores. In certain cases + this produced counterintuitive results. null2 is now + applied in a way that is still justifiable, and also + consistent; per-domain scores add up to the per-seq score. + [first reported by David Kerk] + + - --domE and --domT did not work correctly in hmmpfam, because + the code assumed that E-values are monotonic with score. + In some cases, this could cause HMMER to fail to report some + significant domains. [Christiane VanSchlun, GCG] + +The following obscure bugs were fixed (i.e., there were no reports of +anyone but me detecting these bugs): + + - sreformat no longer core dumps when reformatting a + single sequence to an alignment format. + + - Banner() was printing a line to stdout instead of its + file handle... but Banner is always called w/ stdout as + its filehandle in the current implementation. + [M. Regelson, Paracel] + + - .gz file reading is only supported on POSIX OS's. A compile + time define, SRE_STRICT_ANSI, may be defined to allow compiling + on ANSI compliant but non-POSIX operating systems. + + - Several problems with robustness w.r.t. unexpected + combinations of command line options were detected by + GCG quality control testing. [Christiane VanSchlun] + +(At least) the following projects remain incomplete: + + - Ian Holmes' posterior probability routines (POSTAL) are + partially assimilated; see postprob.c, display.c + + - CPU times can now be reported for serial, threaded, + and PVM executions; this is only supported by hmmcalibrate + right now. + + - Mixture Dirichlet priors now include some ongoing work + in collaboration with Michael Asman and Erik Sonnhammer + in Stockholm; also #=GC X-PRM, X-PRT, X-PRI support in + hmmbuild/Stockholm annotation. diff --git a/forester/archive/RIO/others/hmmer/Userguide.pdf b/forester/archive/RIO/others/hmmer/Userguide.pdf new file mode 100644 index 0000000000000000000000000000000000000000..74eab166cac3474ed789a8c8f98e9e7f32200623 GIT binary patch literal 299122 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 z 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 literal 0 HcmV?d00001 diff --git a/forester/archive/RIO/others/hmmer/config.guess b/forester/archive/RIO/others/hmmer/config.guess new file mode 100755 index 0000000..2960d6e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/config.guess @@ -0,0 +1,951 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc. +# +# This file 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Written by Per Bothner . +# The master version of this file is at the FSF in /home/gd/gnu/lib. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit system type (host/target name). +# +# Only a few systems have been added to this list; please add others +# (but try to keep the structure clean). +# + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 8/24/94.) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15 + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + cat <dummy.s + .globl main + .ent main +main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + ${CC-cc} dummy.s -o dummy 2>/dev/null + if test "$?" = 0 ; then + ./dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + fi + rm -f dummy.s dummy + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]` + exit 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-cbm-sysv4 + exit 0;; + amiga:NetBSD:*:*) + echo m68k-cbm-netbsd${UNAME_RELEASE} + exit 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + arc64:OpenBSD:*:*) + echo mips64el-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hkmips:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mips-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + arm32:NetBSD:*:*) + echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + SR2?01:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit 0 ;; + NILE:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(head -1 /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + atari*:NetBSD:*:*) + echo m68k-atari-netbsd${UNAME_RELEASE} + exit 0 ;; + atari*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:NetBSD:*:*) + echo m68k-sun-netbsd${UNAME_RELEASE} + exit 0 ;; + sun3*:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:NetBSD:*:*) + echo m68k-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + macppc:NetBSD:*:*) + echo powerpc-apple-netbsd${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + sed 's/^ //' << EOF >dummy.c + int main (argc, argv) int argc; char **argv; { + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + ${CC-cc} dummy.c -o dummy \ + && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \ + -o ${TARGET_BINARY_INTERFACE}x = x ] ; then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else echo i586-dg-dgux${UNAME_RELEASE} + fi + exit 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i?86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + sed 's/^ //' << EOF >dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:4) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | head -1 | awk '{ print $1 }'` + if /usr/sbin/lsattr -EHl ${IBM_CPU_ID} | grep POWER >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=4.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[34678]??:HP-UX:*:*) + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/6?? | 9000/7?? | 9000/80[24] | 9000/8?[13679] | 9000/892 ) + sed 's/^ //' << EOF >dummy.c + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (${CC-cc} dummy.c -o dummy 2>/dev/null ) && HP_ARCH=`./dummy` + rm -f dummy.c dummy + esac + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + 3050*:HI-UX:*:*) + sed 's/^ //' << EOF >dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i?86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*X-MP:*:*:*) + echo xmp-cray-unicos + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} + exit 0 ;; + CRAY-2:*:*:*) + echo cray2-cray-unicos + exit 0 ;; + F300:UNIX_System_V:*:*) + FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit 0 ;; + F301:UNIX_System_V:*:*) + echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'` + exit 0 ;; + hp3[0-9][05]:NetBSD:*:*) + echo m68k-hp-netbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + i?86:BSD/386:*:* | *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit 0 ;; + *:NetBSD:*:*) + echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + *:Linux:*:*) + # uname on the ARM produces all sorts of strangeness, and we need to + # filter it out. + case "$UNAME_MACHINE" in + arm* | sa110*) UNAME_MACHINE="arm" ;; + esac + + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. + ld_help_string=`ld --help 2>&1` + ld_supported_emulations=`echo $ld_help_string \ + | sed -ne '/supported emulations:/!d + s/[ ][ ]*/ /g + s/.*supported emulations: *// + s/ .*// + p'` + case "$ld_supported_emulations" in + i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;; + i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;; + sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;; + elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;; + esac + + if test "${UNAME_MACHINE}" = "alpha" ; then + sed 's/^ //' <dummy.s + .globl main + .ent main + main: + .frame \$30,0,\$26,0 + .prologue 0 + .long 0x47e03d80 # implver $0 + lda \$2,259 + .long 0x47e20c21 # amask $2,$1 + srl \$1,8,\$2 + sll \$2,2,\$2 + sll \$0,3,\$0 + addl \$1,\$0,\$0 + addl \$2,\$0,\$0 + ret \$31,(\$26),1 + .end main +EOF + LIBC="" + ${CC-cc} dummy.s -o dummy 2>/dev/null + if test "$?" = 0 ; then + ./dummy + case "$?" in + 7) + UNAME_MACHINE="alpha" + ;; + 15) + UNAME_MACHINE="alphaev5" + ;; + 14) + UNAME_MACHINE="alphaev56" + ;; + 10) + UNAME_MACHINE="alphapca56" + ;; + 16) + UNAME_MACHINE="alphaev6" + ;; + esac + + objdump --private-headers dummy | \ + grep ld.so.1 > /dev/null + if test "$?" = 0 ; then + LIBC="libc1" + fi + fi + rm -f dummy.s dummy + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0 + elif test "${UNAME_MACHINE}" = "mips" ; then + cat >dummy.c </dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + else + # Either a pre-BFD a.out linker (linux-gnuoldld) + # or one that does not give us useful --help. + # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout. + # If ld does not provide *any* "supported emulations:" + # that means it is gnuoldld. + echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations:" + test $? != 0 && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0 + + case "${UNAME_MACHINE}" in + i?86) + VENDOR=pc; + ;; + *) + VENDOR=unknown; + ;; + esac + # Determine whether the default compiler is a.out or elf + cat >dummy.c < +main(argc, argv) + int argc; + char *argv[]; +{ +#ifdef __ELF__ +# ifdef __GLIBC__ +# if __GLIBC__ >= 2 + printf ("%s-${VENDOR}-linux-gnu\n", argv[1]); +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +# else + printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]); +# endif +#else + printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]); +#endif + return 0; +} +EOF + ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0 + rm -f dummy.c dummy + fi ;; +# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions +# are messed up and put the nodename in both sysname and nodename. + i?86:DYNIX/ptx:4*:*) + echo i386-sequent-sysv4 + exit 0 ;; + i?86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit 0 ;; + i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*) + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE} + fi + exit 0 ;; + i?86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')` + (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit 0 ;; + i?86:UnixWare:*:*) + if /bin/uname -X 2>/dev/null >/dev/null ; then + (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + fi + echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION} + exit 0 ;; + pc:*:*:*) + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + i?86:LynxOS:2.*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:*:6*) + echo mips-sony-newsos6 + exit 0 ;; + R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +cat >dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +#if !defined (ultrix) + printf ("vax-dec-bsd\n"); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0 +rm -f dummy.c dummy + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +#echo '(Unable to guess system type)' 1>&2 + +exit 1 diff --git a/forester/archive/RIO/others/hmmer/config.sub b/forester/archive/RIO/others/hmmer/config.sub new file mode 100755 index 0000000..00bea6e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/config.sub @@ -0,0 +1,955 @@ +#! /bin/sh +# Configuration validation subroutine script, version 1.1. +# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc. +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file 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 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +if [ x$1 = x ] +then + echo Configuration name missing. 1>&2 + echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 + echo "or $0 ALIAS" 1>&2 + echo where ALIAS is a recognized configuration type. 1>&2 + exit 1 +fi + +# First pass through any local machine types. +case $1 in + *local*) + echo $1 + exit 0 + ;; + *) + ;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + linux-gnu*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple) + os= + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco5) + os=sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ + | arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \ + | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 | hppa2.0 \ + | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \ + | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \ + | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ + | mipstx39 | mipstx39el \ + | sparc | sparclet | sparclite | sparc64 | v850) + basic_machine=$basic_machine-unknown + ;; + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i[34567]86) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \ + | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ + | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ + | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ + | xmp-* | ymp-* | hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* \ + | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \ + | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \ + | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ + | sparc64-* | mips64-* | mipsel-* \ + | mips64el-* | mips64orion-* | mips64orionel-* \ + | mipstx39-* | mipstx39el-* \ + | f301-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-cbm + ;; + amigaos | amigados) + basic_machine=m68k-cbm + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-cbm + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | ymp) + basic_machine=ymp-cray + os=-unicos + ;; + cray2) + basic_machine=cray2-cray + os=-unicos + ;; + [ctj]90-cray) + basic_machine=c90-cray + os=-unicos + ;; + crds | unos) + basic_machine=m68k-crds + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + os=-mvs + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i[34567]86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i[34567]86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i[34567]86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i[34567]86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + miniframe) + basic_machine=m68000-convergent + ;; + mipsel*-linux*) + basic_machine=mipsel-unknown + os=-linux-gnu + ;; + mips*-linux*) + basic_machine=mips-unknown + os=-linux-gnu + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + np1) + basic_machine=np1-gould + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | nexen) + basic_machine=i586-pc + ;; + pentiumpro | p6 | k6 | 6x86) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | nexen-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | k6-* | 6x86-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=rs6000-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + xmp) + basic_machine=xmp-cray + os=-unicos + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + mips) + if [ x$os = x-linux-gnu ]; then + basic_machine=mips-unknown + else + basic_machine=mips-mips + fi + ;; + romp) + basic_machine=romp-ibm + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sparc) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -uxpv* | -beos*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -ctix* | -uts*) + os=-sysv + ;; + -ns2 ) + os=-nextstep2 + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -xenix) + os=-xenix + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-semi) + os=-aout + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f301-fujitsu) + os=-uxpv + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -hpux*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -vxsim* | -vxworks*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os diff --git a/forester/archive/RIO/others/hmmer/configure b/forester/archive/RIO/others/hmmer/configure new file mode 100755 index 0000000..e5b79e4 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/configure @@ -0,0 +1,2509 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-pvm enable PVM, Parallel Virtual Machine" +ac_help="$ac_help + --disable-threads disable POSIX threads support" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=src/hmmpfam.c + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + +echo " Welcome to HMMER... configuring for your system." + + + + + + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:542: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:572: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:623: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:655: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 666 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:697: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:702: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:730: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + +echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +echo "configure:762: checking whether ln -s works" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + rm -f conftestdata +if ln -s X conftestdata 2>/dev/null +then + rm -f conftestdata + ac_cv_prog_LN_S="ln -s" +else + ac_cv_prog_LN_S=ln +fi +fi +LN_S="$ac_cv_prog_LN_S" +if test "$ac_cv_prog_LN_S" = "ln -s"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:785: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + + + echo $ac_n "checking whether your make is GNU make""... $ac_c" 1>&6 +echo "configure:816: checking whether your make is GNU make" >&5 + foundGNUmake='nope, assuming sysv make.' ; + EXEC_DEPENDENCY=\$\$\@.o ; + if ( make --version nothing 2> /dev/null | grep GNU > /dev/null ) ; then + foundGNUmake='yes, it is.' ; + EXEC_DEPENDENCY='%: %.o' ; + fi + echo "$ac_t""$foundGNUmake" 1>&6 + + + +# Check whether --with-pvm or --without-pvm was given. +if test "${with_pvm+set}" = set; then + withval="$with_pvm" + case $with_pvm in + yes) echo 'Configuring for PVM' + PVMLIBDIR="-L${PVM_ROOT}/lib/${PVM_ARCH}" + PVMINCDIR="-I${PVM_ROOT}/include" + PVMFLAG="-DHMMER_PVM" + PVMPROGS="hmmcalibrate-pvm hmmpfam-pvm hmmsearch-pvm" + PVMLIBS="-lpvm3" + ;; + no) ;; + *) echo "Ignoring unknown argument to --with-pvm: $with_pvm" + ;; +esac +fi + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + + +# Make sure we can run config.sub. +if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : +else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } +fi + +echo $ac_n "checking host system type""... $ac_c" 1>&6 +echo "configure:871: checking host system type" >&5 + +host_alias=$host +case "$host_alias" in +NONE) + case $nonopt in + NONE) + if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : + else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; } + fi ;; + *) host_alias=$nonopt ;; + esac ;; +esac + +host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` +host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` +echo "$ac_t""$host" 1>&6 + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:892: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:913: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:930: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:947: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +# Check whether --enable-threads or --disable-threads was given. +if test "${enable_threads+set}" = set; then + enableval="$enable_threads" + case $enable_threads in + yes) echo "Enabling POSIX threads support" + + +acx_pthread_ok=no + +# First, check if the POSIX threads header, pthread.h, is available. +# If it isn't, don't bother looking for the threads libraries. +ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for pthread.h""... $ac_c" 1>&6 +echo "configure:984: checking for pthread.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:994: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +acx_pthread_ok=noheader +fi + + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + echo $ac_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS""... $ac_c" 1>&6 +echo "configure:1031: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + acx_pthread_ok=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + echo "$ac_t""$acx_pthread_ok" 1>&6 + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# pthread: Linux, etcetera +# --thread-safe: KAI C++ + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthread or + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + echo $ac_n "checking whether pthreads work without any flags""... $ac_c" 1>&6 +echo "configure:1106: checking whether pthreads work without any flags" >&5 + ;; + + -*) + echo $ac_n "checking whether pthreads work with $flag""... $ac_c" 1>&6 +echo "configure:1111: checking whether pthreads work with $flag" >&5 + PTHREAD_CFLAGS="$flag" + ;; + + *) + echo $ac_n "checking for the pthreads library -l$flag""... $ac_c" 1>&6 +echo "configure:1117: checking for the pthreads library -l$flag" >&5 + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + cat > conftest.$ac_ext < +int main() { +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); +; return 0; } +EOF +if { (eval echo configure:1146: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + acx_pthread_ok=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + echo "$ac_t""$acx_pthread_ok" 1>&6 + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: threads are created detached by default + # and the JOINABLE attribute has a nonstandard name (UNDETACHED). + echo $ac_n "checking for joinable pthread attribute""... $ac_c" 1>&6 +echo "configure:1178: checking for joinable pthread attribute" >&5 + cat > conftest.$ac_ext < +int main() { +int attr=PTHREAD_CREATE_JOINABLE; +; return 0; } +EOF +if { (eval echo configure:1187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ok=PTHREAD_CREATE_JOINABLE +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ok=unknown +fi +rm -f conftest* + if test x"$ok" = xunknown; then + cat > conftest.$ac_ext < +int main() { +int attr=PTHREAD_CREATE_UNDETACHED; +; return 0; } +EOF +if { (eval echo configure:1206: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ok=PTHREAD_CREATE_UNDETACHED +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ok=unknown +fi +rm -f conftest* + fi + if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then + cat >> confdefs.h <<\EOF +#define PTHREAD_CREATE_JOINABLE $ok +EOF + + fi + echo "$ac_t""${ok}" 1>&6 + if test x"$ok" = xunknown; then + echo "configure: warning: we do not know how to create joinable pthreads" 1>&2 + fi + + echo $ac_n "checking if more special flags are required for pthreads""... $ac_c" 1>&6 +echo "configure:1229: checking if more special flags are required for pthreads" >&5 + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; + *solaris* | alpha*-osf*) flag="-D_REENTRANT";; + esac + echo "$ac_t""${flag}" 1>&6 + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with cc_r + # Extract the first word of "cc_r", so it can be a program name with args. +set dummy cc_r; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1247: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_PTHREAD_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_PTHREAD_CC="cc_r" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}" +fi +fi +PTHREAD_CC="$ac_cv_prog_PTHREAD_CC" +if test -n "$PTHREAD_CC"; then + echo "$ac_t""$PTHREAD_CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + PTHREAD_CC="$CC" +fi + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + MDEFS="${MDEFS} -DHMMER_THREADS" + : +else + acx_pthread_ok=no + +fi + + + ;; + no) echo "POSIX threads support disabled" + ;; + *) echo "Ignoring unknown argument to --disable-threads: $enable_threads" + ;; +esac +else + + echo " Trying to enable default POSIX threads support" + + +acx_pthread_ok=no + +# First, check if the POSIX threads header, pthread.h, is available. +# If it isn't, don't bother looking for the threads libraries. +ac_safe=`echo "pthread.h" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for pthread.h""... $ac_c" 1>&6 +echo "configure:1309: checking for pthread.h" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1319: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +acx_pthread_ok=noheader +fi + + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + echo $ac_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS""... $ac_c" 1>&6 +echo "configure:1356: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + acx_pthread_ok=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + echo "$ac_t""$acx_pthread_ok" 1>&6 + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# pthread: Linux, etcetera +# --thread-safe: KAI C++ + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthread or + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + echo $ac_n "checking whether pthreads work without any flags""... $ac_c" 1>&6 +echo "configure:1431: checking whether pthreads work without any flags" >&5 + ;; + + -*) + echo $ac_n "checking whether pthreads work with $flag""... $ac_c" 1>&6 +echo "configure:1436: checking whether pthreads work with $flag" >&5 + PTHREAD_CFLAGS="$flag" + ;; + + *) + echo $ac_n "checking for the pthreads library -l$flag""... $ac_c" 1>&6 +echo "configure:1442: checking for the pthreads library -l$flag" >&5 + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + cat > conftest.$ac_ext < +int main() { +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); +; return 0; } +EOF +if { (eval echo configure:1471: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + acx_pthread_ok=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + echo "$ac_t""$acx_pthread_ok" 1>&6 + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: threads are created detached by default + # and the JOINABLE attribute has a nonstandard name (UNDETACHED). + echo $ac_n "checking for joinable pthread attribute""... $ac_c" 1>&6 +echo "configure:1503: checking for joinable pthread attribute" >&5 + cat > conftest.$ac_ext < +int main() { +int attr=PTHREAD_CREATE_JOINABLE; +; return 0; } +EOF +if { (eval echo configure:1512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ok=PTHREAD_CREATE_JOINABLE +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ok=unknown +fi +rm -f conftest* + if test x"$ok" = xunknown; then + cat > conftest.$ac_ext < +int main() { +int attr=PTHREAD_CREATE_UNDETACHED; +; return 0; } +EOF +if { (eval echo configure:1531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + ok=PTHREAD_CREATE_UNDETACHED +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ok=unknown +fi +rm -f conftest* + fi + if test x"$ok" != xPTHREAD_CREATE_JOINABLE; then + cat >> confdefs.h <<\EOF +#define PTHREAD_CREATE_JOINABLE $ok +EOF + + fi + echo "$ac_t""${ok}" 1>&6 + if test x"$ok" = xunknown; then + echo "configure: warning: we do not know how to create joinable pthreads" 1>&2 + fi + + echo $ac_n "checking if more special flags are required for pthreads""... $ac_c" 1>&6 +echo "configure:1554: checking if more special flags are required for pthreads" >&5 + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd*) flag="-D_THREAD_SAFE";; + *solaris* | alpha*-osf*) flag="-D_REENTRANT";; + esac + echo "$ac_t""${flag}" 1>&6 + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with cc_r + # Extract the first word of "cc_r", so it can be a program name with args. +set dummy cc_r; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1572: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_PTHREAD_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_PTHREAD_CC="cc_r" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_PTHREAD_CC" && ac_cv_prog_PTHREAD_CC="${CC}" +fi +fi +PTHREAD_CC="$ac_cv_prog_PTHREAD_CC" +if test -n "$PTHREAD_CC"; then + echo "$ac_t""$PTHREAD_CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +else + PTHREAD_CC="$CC" +fi + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + MDEFS="${MDEFS} -DHMMER_THREADS" + : +else + acx_pthread_ok=no + +fi + + + +fi + + + +for ac_func in pthread_setconcurrency +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1625: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in pthread_attr_setscope +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1680: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + + +for ac_func in ntohs +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1736: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1764: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for ntohs in -lsocket""... $ac_c" 1>&6 +echo "configure:1786: checking for ntohs in -lsocket" >&5 +ac_lib_var=`echo socket'_'ntohs | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi +done + +for ac_func in ntohl +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1838: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for ntohl in -lsocket""... $ac_c" 1>&6 +echo "configure:1888: checking for ntohl in -lsocket" >&5 +ac_lib_var=`echo socket'_'ntohl | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi +done + +for ac_func in htons +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1940: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for htons in -lsocket""... $ac_c" 1>&6 +echo "configure:1990: checking for htons in -lsocket" >&5 +ac_lib_var=`echo socket'_'htons | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi +done + +for ac_func in htonl +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:2042: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for htonl in -lsocket""... $ac_c" 1>&6 +echo "configure:2092: checking for htonl in -lsocket" >&5 +ac_lib_var=`echo socket'_'htonl | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi +done + + +subdirs="squid" + + +echo " Configuration complete. Writing Makefiles and such..." +trap '' 1 2 15 +cat > confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir + +trap 'rm -fr `echo "Makefile src/Makefile testsuite/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@MDEFS@%$MDEFS%g +s%@PVMLIBDIR@%$PVMLIBDIR%g +s%@PVMINCDIR@%$PVMINCDIR%g +s%@PVMFLAG@%$PVMFLAG%g +s%@PVMPROGS@%$PVMPROGS%g +s%@PVMLIBS@%$PVMLIBS%g +s%@CC@%$CC%g +s%@LN_S@%$LN_S%g +s%@RANLIB@%$RANLIB%g +s%@EXEC_DEPENDENCY@%$EXEC_DEPENDENCY%g +s%@host@%$host%g +s%@host_alias@%$host_alias%g +s%@host_cpu@%$host_cpu%g +s%@host_vendor@%$host_vendor%g +s%@host_os@%$host_os%g +s%@CPP@%$CPP%g +s%@PTHREAD_CC@%$PTHREAD_CC%g +s%@PTHREAD_LIBS@%$PTHREAD_LIBS%g +s%@PTHREAD_CFLAGS@%$PTHREAD_CFLAGS%g +s%@subdirs@%$subdirs%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + +if test "$no_recursion" != yes; then + + # Remove --cache-file and --srcdir arguments so they do not pile up. + ac_sub_configure_args= + ac_prev= + for ac_arg in $ac_configure_args; do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case "$ac_arg" in + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; + esac + done + + for ac_config_dir in squid; do + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + if test ! -d $srcdir/$ac_config_dir; then + continue + fi + + echo configuring in $ac_config_dir + + case "$srcdir" in + .) ;; + *) + if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; + else + { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; } + fi + ;; + esac + + ac_popdir=`pwd` + cd $ac_config_dir + + # A "../" for each directory in /$ac_config_dir. + ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` + + case "$srcdir" in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir=$srcdir ;; + /*) # Absolute path. + ac_sub_srcdir=$srcdir/$ac_config_dir ;; + *) # Relative path. + ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f $ac_sub_srcdir/configure; then + ac_sub_configure=$ac_sub_srcdir/configure + elif test -f $ac_sub_srcdir/configure.in; then + ac_sub_configure=$ac_configure + else + echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2 + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + + # Make the cache file name correct relative to the subdirectory. + case "$cache_file" in + /*) ac_sub_cache_file=$cache_file ;; + *) # Relative path. + ac_sub_cache_file="$ac_dots$cache_file" ;; + esac + + echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir" + # The eval makes quoting arguments work. + if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir + then : + else + { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; } + fi + fi + + cd $ac_popdir + done +fi + + diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmalign.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmalign.man new file mode 100644 index 0000000..dc08445 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmalign.man @@ -0,0 +1,154 @@ +.TH "hmmalign" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmalign - align sequences to an HMM profile + +.SH SYNOPSIS +.B hmmalign +.I [options] +.I hmmfile +.I seqfile + +.SH DESCRIPTION + +.B hmmalign +reads an HMM file from +.I hmmfile +and a set of sequences from +.I seqfile, +aligns the sequences to the profile HMM, +and outputs a multiple sequence alignment. + +.PP +.I seqfile +may be in any unaligned or aligned file format +accepted by HMMER. If it is in a multiple alignment format +(e.g. Stockholm, MSF, SELEX, ClustalW), the existing alignment +is ignored (i.e., the sequences are read as if they were +unaligned - hmmalign will align them the way it wants). + +.SH OPTIONS + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.B -m +Include in the alignment only those symbols aligned to match states. +Do not show symbols assigned to insert states. + +.TP +.BI -o " " +Save alignment to file +.I +instead of to standard output. + +.TP +.B -q +quiet; suppress all output except the alignment itself. +Useful for piping or redirecting the output. + +.SH EXPERT OPTIONS + +.TP +.BI --informat " " +Assert that the input +.I seqfile +is in format +.I ; +do not run Babelfish format autodection. This increases +the reliability of the program somewhat, because +the Babelfish can make mistakes; particularly +recommended for unattended, high-throughput runs +of HMMER. Valid format strings include FASTA, +GENBANK, EMBL, GCG, PIR, STOCKHOLM, SELEX, MSF, +CLUSTAL, and PHYLIP. See the User's Guide for a complete +list. + +.TP +.BI --mapali " " +Reads an alignment from file +.I +and aligns it as a single object to the HMM; e.g. the alignment in +.I +is held fixed. +This allows you to align sequences to a model with +.B hmmalign +and view them in the context of an existing trusted +multiple alignment. +The alignment to the alignment is defined by a "map" kept +in the HMM, and so is fast and guaranteed to be consistent +with the way the HMM was constructed from the alignment. +The alignment in the file +.I +must be exactly the alignment that the HMM was built from. +Compare the +.B --withali +option. + +.TP +.BI --withali " " +Reads an alignment from file +.I +and aligns it as a single object to the HMM; e.g. the alignment in +.I +is held fixed. +This allows you to align sequences to a model with +.B hmmalign +and view them in the context of an existing trusted +multiple alignment. The alignment to the alignment is +done with a heuristic (nonoptimal) dynamic programming procedure, +which may be somewhat slow and is not guaranteed to +be completely consistent with the way the HMM was +constructed (though it should be quite close). +However, any alignment can be used, not just the alignment that +the HMM was built from. Compare the +.B --mapali +option. + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmbuild.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmbuild.man new file mode 100644 index 0000000..f4856b8 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmbuild.man @@ -0,0 +1,476 @@ +.TH "hmmbuild" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmbuild - build a profile HMM from an alignment + +.SH SYNOPSIS +.B hmmbuild +.I [options] +.I hmmfile +.I alignfile + +.SH DESCRIPTION + +.B hmmbuild +reads a multiple sequence alignment file +.I alignfile +, builds a new profile HMM, and saves the HMM in +.I hmmfile. + +.PP +.I alignfile +may be in ClustalW, GCG MSF, SELEX, Stockholm, or aligned FASTA +alignment format. The format is automatically detected. + +.PP +By default, the model is configured to find one or more +nonoverlapping alignments to the complete model: multiple +global alignments with respect to the model, and local with +respect to the sequence. +This +is analogous to the behavior of the +.B hmmls +program of HMMER 1. +To configure the model for multiple +.I local +alignments +with respect to the model and local with respect to +the sequence, +a la the old program +.B hmmfs, +use the +.B -f +(fragment) option. More rarely, you may want to +configure the model for a single +global alignment (global with respect to both +model and sequence), using the +.B -g +option; +or to configure the model for a single local/local alignment +(a la standard Smith/Waterman, or the old +.B hmmsw +program), use the +.B -s +option. + +.SH OPTIONS + +.TP +.B -f +Configure the model for finding multiple domains per sequence, +where each domain can be a local (fragmentary) alignment. This +is analogous to the old +.B hmmfs +program of HMMER 1. + +.TP +.B -g +Configure the model for finding a single global alignment to +a target sequence, analogous to +the old +.B hmms +program of HMMER 1. + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.BI -n " " +Name this HMM +.I . +.I +can be any string of non-whitespace characters (e.g. one "word"). +There is no length limit (at least not one imposed by HMMER; +your shell will complain about command line lengths first). + +.TP +.BI -o " " +Re-save the starting alignment to +.I , +in Stockholm format. +The columns which were assigned to match states will be +marked with x's in an #=RF annotation line. +If either the +.B --hand +or +.B --fast +construction options were chosen, the alignment may have +been slightly altered to be compatible with Plan 7 transitions, +so saving the final alignment and comparing to the +starting alignment can let you view these alterations. +See the User's Guide for more information on this arcane +side effect. + +.TP +.B -s +Configure the model for finding a single local alignment per +target sequence. This is analogous to the standard Smith/Waterman +algorithm or the +.B hmmsw +program of HMMER 1. + +.TP +.B -A +Append this model to an existing +.I hmmfile +rather than creating +.I hmmfile. +Useful for building HMM libraries (like Pfam). + +.TP +.B -F +Force overwriting of an existing +.I hmmfile. +Otherwise HMMER will refuse to clobber your existing HMM files, +for safety's sake. + +.SH EXPERT OPTIONS + +.TP +.B --amino +Force the sequence alignment to be interpreted as amino acid +sequences. Normally HMMER autodetects whether the alignment is +protein or DNA, but sometimes alignments are so small that +autodetection is ambiguous. See +.B --nucleic. + +.TP +.BI --archpri " " +Set the "architecture prior" used by MAP architecture construction to +.I , +where +.I +is a probability between 0 and 1. This parameter governs a geometric +prior distribution over model lengths. As +.I +increases, longer models are favored a priori. +As +.I +decreases, it takes more residue conservation in a column to +make a column a "consensus" match column in the model architecture. +The 0.85 default has been chosen empirically as a reasonable setting. + +.TP +.B --binary +Write the HMM to +.I hmmfile +in HMMER binary format instead of readable ASCII text. + +.TP +.BI --cfile " " +Save the observed emission and transition counts to +.I +after the architecture has been determined (e.g. after residues/gaps +have been assigned to match, delete, and insert states). +This option is used in HMMER development for generating data files +useful for training new Dirichlet priors. The format of +count files is documented in the User's Guide. + +.TP +.B --fast +Quickly and heuristically determine the architecture of the model by +assigning all columns will more than a certain fraction of gap +characters to insert states. By default this fraction is 0.5, and it +can be changed using the +.B --gapmax +option. +The default construction algorithm is a maximum a posteriori (MAP) +algorithm, which is slower. + +.TP +.BI --gapmax " " +Controls the +.I --fast +model construction algorithm, but if +.I --fast +is not being used, has no effect. +If a column has more than a fraction +.I +of gap symbols in it, it gets assigned to an insert column. +.I +is a frequency from 0 to 1, and by default is set +to 0.5. Higher values of +.I +mean more columns get assigned to consensus, and models get +longer; smaller values of +.I +mean fewer columns get assigned to consensus, and models get +smaller. +.I + +.TP +.B --hand +Specify the architecture of the model by hand: the alignment file must +be in SELEX or Stockholm format, and the reference annotation +line (#=RF in SELEX, #=GC RF in Stockholm) is used to specify +the architecture. Any column marked with a non-gap symbol (such +as an 'x', for instance) is assigned as a consensus (match) column in +the model. + +.TP +.BI --idlevel " " +Controls both the determination of effective sequence number and +the behavior of the +.I --wblosum +weighting option. The sequence alignment is clustered by percent +identity, and the number of clusters at a cutoff threshold of +.I +is used to determine the effective sequence number. +Higher values of +.I +give more clusters and higher effective sequence +numbers; lower values of +.I +give fewer clusters and lower effective sequence numbers. +.I +is a fraction from 0 to 1, and +by default is set to 0.62 (corresponding to the clustering level used +in constructing the BLOSUM62 substitution matrix). + +.TP +.BI --informat " " +Assert that the input +.I seqfile +is in format +.I ; +do not run Babelfish format autodection. This increases +the reliability of the program somewhat, because +the Babelfish can make mistakes; particularly +recommended for unattended, high-throughput runs +of HMMER. Valid format strings include FASTA, +GENBANK, EMBL, GCG, PIR, STOCKHOLM, SELEX, MSF, +CLUSTAL, and PHYLIP. See the User's Guide for a complete +list. + +.TP +.B --noeff +Turn off the effective sequence number calculation, and use the +true number of sequences instead. This will usually reduce the +sensitivity of the final model (so don't do it without good reason!) + +.TP +.B --nucleic +Force the alignment to be interpreted as nucleic acid sequence, +either RNA or DNA. Normally HMMER autodetects whether the alignment is +protein or DNA, but sometimes alignments are so small that +autodetection is ambiguous. See +.B --amino. + +.TP +.BI --null " " +Read a null model from +.I . +The default for protein is to use average amino acid frequencies from +Swissprot 34 and p1 = 350/351; for nucleic acid, the default is +to use 0.25 for each base and p1 = 1000/1001. For documentation +of the format of the null model file and further explanation +of how the null model is used, see the User's Guide. + +.TP +.BI --pam " " +Apply a heuristic PAM- (substitution matrix-) based prior on match +emission probabilities instead of +the default mixture Dirichlet. The substitution matrix is read +from +.I . +See +.B --pamwgt. + +The default Dirichlet state transition prior and insert emission prior +are unaffected. Therefore in principle you could combine +.B --prior +with +.B --pam +but this isn't recommended, as it hasn't been tested. ( +.B --pam +itself hasn't been tested much!) + +.TP +.BI --pamwgt " " +Controls the weight on a PAM-based prior. Only has effect if +.B --pam +option is also in use. +.I +is a positive real number, 20.0 by default. +.I +is the number of "pseudocounts" contriubuted by the heuristic +prior. Very high values of +.I +can force a scoring system that is entirely driven by the +substitution matrix, making +HMMER somewhat approximate Gribskov profiles. + +.TP +.BI --pbswitch " " +For alignments with a very large number of sequences, +the GSC, BLOSUM, and Voronoi weighting schemes are slow; +they're O(N^2) for N sequences. Henikoff position-based +weights (PB weights) are more efficient. At or above a certain +threshold sequence number +.I +.B hmmbuild +will switch from GSC, BLOSUM, or Voronoi weights to +PB weights. To disable this switching behavior (at the cost +of compute time, set +.I +to be something larger than the number of sequences in +your alignment. +.I +is a positive integer; the default is 1000. + +.TP +.BI --prior " " +Read a Dirichlet prior from +.I , +replacing the default mixture Dirichlet. +The format of prior files is documented in the User's Guide, +and an example is given in the Demos directory of the HMMER +distribution. + +.TP +.BI --swentry " " +Controls the total probability that is distributed to local entries +into the model, versus starting at the beginning of the model +as in a global alignment. +.I +is a probability from 0 to 1, and by default is set to 0.5. +Higher values of +.I +mean that hits that are fragments on their left (N or 5'-terminal) side will be +penalized less, but complete global alignments will be penalized more. +Lower values of +.I +mean that fragments on the left will be penalized more, and +global alignments on this side will be favored. +This option only affects the configurations that allow local +alignments, +e.g. +.B -s +and +.B -f; +unless one of these options is also activated, this option has no effect. +You have independent control over local/global alignment behavior for +the N/C (5'/3') termini of your target sequences using +.B --swentry +and +.B --swexit. + +.TP +.BI --swexit " " +Controls the total probability that is distributed to local exits +from the model, versus ending an alignment at the end of the model +as in a global alignment. +.I +is a probability from 0 to 1, and by default is set to 0.5. +Higher values of +.I +mean that hits that are fragments on their right (C or 3'-terminal) side will be +penalized less, but complete global alignments will be penalized more. +Lower values of +.I +mean that fragments on the right will be penalized more, and +global alignments on this side will be favored. +This option only affects the configurations that allow local +alignments, +e.g. +.B -s +and +.B -f; +unless one of these options is also activated, this option has no effect. +You have independent control over local/global alignment behavior for +the N/C (5'/3') termini of your target sequences using +.B --swentry +and +.B --swexit. + +.TP +.B --verbose +Print more possibly useful stuff, such as the individual scores for +each sequence in the alignment. + +.TP +.B --wblosum +Use the BLOSUM filtering algorithm to weight the sequences, +instead of the default. +Cluster the sequences at a given percentage identity +(see +.B --idlevel); +assign each cluster a total weight of 1.0, distributed equally +amongst the members of that cluster. + + +.TP +.B --wgsc +Use the Gerstein/Sonnhammer/Chothia ad hoc sequence weighting +algorithm. This is already the default, so this option has no effect +(unless it follows another option in the --w family, in which case it +overrides it). + +.TP +.B --wme +Use the Krogh/Mitchison maximum entropy algorithm to "weight" +the sequences. This supercedes the Eddy/Mitchison/Durbin +maximum discrimination algorithm, which gives almost +identical weights but is less robust. ME weighting seems +to give a marginal increase in sensitivity +over the default GSC weights, but takes a fair amount of time. + +.TP +.B --wnone +Turn off all sequence weighting. + +.TP +.B --wpb +Use the Henikoff position-based weighting scheme. + +.TP +.B --wvoronoi +Use the Sibbald/Argos Voronoi sequence weighting algorithm +in place of the default GSC weighting. + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmcalibrate.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmcalibrate.man new file mode 100644 index 0000000..e472b92 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmcalibrate.man @@ -0,0 +1,172 @@ +.TH "hmmcalibrate" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmcalibrate - calibrate HMM search statistics + +.SH SYNOPSIS +.B hmmcalibrate +.I [options] +.I hmmfile + +.SH DESCRIPTION + +.B hmmcalibrate +reads an HMM file from +.I hmmfile, +scores a large number of synthesized random sequences with it, fits an +extreme value distribution (EVD) to the histogram of those scores, and +re-saves +.I hmmfile +now including the EVD parameters. + +.PP +.B hmmcalibrate +may take several minutes (or longer) to run. +While it is running, a temporary file called +.I hmmfile.xxx +is generated in your working directory. +If you abort +.B hmmcalibrate +prematurely (ctrl-C, for instance), your original +.I hmmfile +will be untouched, and you should delete the +.I hmmfile.xxx +temporary file. + +.SH OPTIONS + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.SH EXPERT OPTIONS + +.TP +.BI --cpu " " +Sets the maximum number of CPUs that the program +will run on. The default is to use all CPUs +in the machine. Overrides the HMMER_NCPU +environment variable. Only affects threaded +versions of HMMER (the default on most systems). + +.TP +.BI --fixed " " +Fix the length of the random sequences to +.I , +where +.I +is a positive (and reasonably sized) integer. +The default is instead to generate sequences with +a variety of different lengths, controlled by a Gaussian +(normal) distribution. + +.TP +.BI --histfile " " +Save a histogram of the scores and the fitted theoretical curve +to file +.I . + +.TP +.BI --mean " " +Set the mean length of the synthetic sequences to +.I , +where +.I +is a positive real number. The default is 350. + +.TP +.BI --num " " +Set the number of synthetic sequences to +.I , +where +.I +is a positive integer. If +.I is less than about 1000, the fit to the EVD may fail. +Higher numbers of +.I +will give better determined EVD parameters. The default +is 5000; it was empirically chosen as +a tradeoff between accuracy and computation time. + +.TP +.B --pvm +Run on a Parallel Virtual Machine (PVM). The PVM must +already be running. The client program +.B hmmcalibrate-pvm +must be installed on all the PVM nodes. +Optional PVM support must have been compiled into +HMMER. + +.TP +.BI --sd " " +Set the standard deviation of the synthetic sequence +length distribution to +.I , +where +.I +is a positive real number. The default is 350. Note that the +Gaussian is left-truncated so that no sequences have lengths +<= 0. + +.TP +.BI --seed " " +Set the random seed to +.I , +where +.I +is a positive integer. The default is to use +.B time() +to generate a different seed for each run, which +means that two different runs of +.B hmmcalibrate +on the same HMM will give slightly different +results. You can use +this option to generate reproducible results for +different +.B hmmcalibrate +runs on the same HMM. + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmconvert.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmconvert.man new file mode 100644 index 0000000..58cb3a6 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmconvert.man @@ -0,0 +1,124 @@ +.TH "hmmconvert" 1 "@RELEASEDATE@" "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmconvert - convert between profile HMM file formats + +.SH SYNOPSIS +.B hmmconvert +.I [options] +.I oldhmmfile +.I newhmmfile + +.SH DESCRIPTION + +.B hmmconvert +reads an HMM file from +.I oldhmmfile +in any HMMER format, and writes it to a new file +.I newhmmfile +in a new format. +.I oldhmmfile +and +.I newhmmfile +must be different files; you can't reliably overwrite +the old file. +By default, the new HMM file is written in HMMER 2 +ASCII format. + +Available formats are HMMER 2 ASCII (default), HMMER 2 binary +.I (-b) +GCG profile +.I (-p) +, and Compugen XSW extended profile +.I (-P). + +.SH OPTIONS + +.TP +.B -a +Convert to HMMER 2 ASCII file. This is the default, so this option +is unnecessary. + +.TP +.B -b +Convert to HMMER 2 binary file. + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.B -p +Convert to GCG profile .prf format. + +.TP +.B -A +Append mode; append to +.I newhmmfile +rather than creating a new file. + +.TP +.B -F +Force; if +.I newhmmfile +already exists, and +.I -A +is not being used to append to the file, +hmmconvert will refuse to clobber the existing +file unless +.I -F +is used. + +.TP +.B -P +Convert the HMM to Compugen XSW extended profile format, +which is similar to GCG profile format but has two +extra columns for delete-open and delete-extend costs. +(I do not believe that Compugen publicly supports this +format; it may be undocumented.) + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmemit.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmemit.man new file mode 100644 index 0000000..bfc61c9 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmemit.man @@ -0,0 +1,130 @@ +.TH "hmmemit" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmemit - generate sequences from a profile HMM + +.SH SYNOPSIS +.B hmmemit +.I [options] +.I hmmfile + +.SH DESCRIPTION + +.B hmmemit +reads an HMM file from +.I hmmfile +containing one or more HMMs, +and generates a number of sequences from each HMM; +or, if the +.B -c +option is selected, generate a single majority-rule consensus. +This can be useful for various applications in which one needs a simulation +of sequences consistent with a sequence family consensus. + +.pp +By default, +.B hmmemit +generates 10 sequences and outputs them in FASTA (unaligned) format. + +.SH OPTIONS + +.TP +.B -a +Write the generated sequences in an aligned format (SELEX) rather than +FASTA. + +.TP +.B -c +Predict a single majority-rule consensus sequence instead of sampling +sequences from the HMM's probability distribution. Highly conserved +residues (p >= 0.9 for DNA, p >= 0.5 for protein) are shown in upper +case; others are shown in lower case. Some insert states may become +part of the majority rule consensus, because they are used in >= 50% +of generated sequences; when this happens, insert-generated residues +are simply shown as "x". + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.BI -n " " +Generate +.I +sequences. Default is 10. + +.TP +.BI -o " " +Save the synthetic sequences to file +.I +rather than writing them to stdout. + +.TP +.B -q +Quiet; suppress all output except for the sequences themselves. +Useful for piping or directing the output. + +.SH EXPERT OPTIONS + +.TP +.BI --seed " " +Set the random seed to +.I , +where +.I +is a positive integer. The default is to use +.B time() +to generate a different seed for each run, which +means that two different runs of +.B hmmemit +on the same HMM will give slightly different +results. You can use +this option to generate reproducible results. + + + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmer.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmer.man new file mode 100644 index 0000000..70e3ce9 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmer.man @@ -0,0 +1,168 @@ +.TH "hmmer" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +HMMER - profile hidden Markov model software + +.SH SYNOPSIS +.TP +.B hmmalign +Align multiple sequences to a profile HMM. + +.TP +.B hmmbuild +Build a profile HMM from a given multiple sequence alignment. + +.TP +.B hmmcalibrate +Determine appropriate statistical significance parameters +for a profile HMM prior to doing database searches. + +.TP +.B hmmconvert +Convert HMMER profile HMMs to other formats, such as GCG profiles. + +.TP +.B hmmemit +Generate sequences probabilistically from a profile HMM. + +.TP +.B hmmfetch +Retrieve an HMM from an HMM database + +.TP +.B hmmindex +Create a binary SSI index for an HMM database + +.TP +.B hmmpfam +Search a profile HMM database with a sequence (i.e., annotate various +kinds of domains in the query sequence). + +.TP +.B hmmsearch +Search a sequence database with a profile HMM (i.e., find additional +homologues of a modeled family). + +.SH DESCRIPTION + +These programs use profile hidden Markov models (profile HMMs) to +model the primary structure consensus of a family of protein or +nucleic acid sequences. + +.SH OPTIONS + +.PP +All +.B HMMER +programs give a brief summary of their command-line syntax and options +if invoked without any arguments. +When invoked with the single argument, +.B -h +(i.e., help), a program will report more verbose command-line usage +information, including rarely used, experimental, and expert options. +.B -h +will report version numbers which are useful if +you need to report a bug or problem to me. + +.PP +Each +.B HMMER +program has its own man page briefly summarizing command line usage. +There is also a user's guide that came +with the software distribution, which includes a tutorial introduction +and more detailed descriptions of the programs. + +See http://hmmer.wustl.edu/ for on-line documentation and +the current HMMER release. + +.PP +In general, no command line options should be needed by beginning users. +The defaults are set up for optimum performance in most situations. +Options that are single lowercase letters (e.g. +.B -a +) are "common" options that are expected to be frequently used +and will be important in many applications. +Options that are single uppercase letters (e.g. +.B -B +) are usually less common options, but also may be important +in some applications. +Options that are full words (e.g. +.B --verbose +) are either rarely used, experimental, or expert options. +Some experimental options are only there for my own ongoing experiments +with HMMER, and may not be supported or documented adequately. + + +.SH SEQUENCE FILE FORMATS + +In general, +.B HMMER +attempts to read most common biological sequence file formats. +It autodetects the format of the file. It also autodetects +whether the sequences are protein or nucleic acid. +Standard IUPAC degeneracy codes are allowed in addition +to the usual 4-letter or 20-letter codes. + +.TP +.B Unaligned sequences +Unaligned sequence files may be in FASTA, Swissprot, EMBL, GenBank, +PIR, Intelligenetics, Strider, or GCG format. +These formats +are documented in the User's Guide. + +.TP +.B Sequence alignments +Multiple sequence alignments may be in CLUSTALW, SELEX, or GCG MSF +format. These formats +are documented in the User's Guide. + +.SH ENVIRONMENT VARIABLES + +For ease of using large stable sequence and HMM databases, +.B HMMER +looks for sequence files and HMM files in the current +working directory as well as in system directories specified +by environment variables. + +.TP +.B BLASTDB +Specifies the directory location of sequence databases. Example: +.B /seqlibs/blast-db/. +In installations that use BLAST software, this environment variable +is likely to already be set. + +.TP +.B HMMERDB +Specifies the directory location of HMM databases. Example: +.B /seqlibs/pfam/. + +.SH SEE ALSO + +.PP +@SEEALSO@ +.PP +User guide and tutorial: Userguide.ps +.PP +WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is Copyright (C) 1992-1998 Washington +University School of Medicine. It is freely distributable under terms +of the GNU General Public License. See COPYING in the source code +distribution for more details, or contact me. + +.nf +Sean Eddy +Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmfetch.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmfetch.man new file mode 100644 index 0000000..c8e8051 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmfetch.man @@ -0,0 +1,83 @@ +.TH "hmmfetch" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmfetch - retrieve an HMM from an HMM database + +.SH SYNOPSIS +.B hmmfetch +.I [options] +.I database +.I name + +.SH DESCRIPTION + +.B hmmfetch +is a small utility that retrieves an HMM called +.I name +from a HMMER model database called +.I database. +in a new format, +and prints that model to standard output. +For example, +.I hmmfetch Pfam rrm +retrieves the RRM (RNA recognition motif) model from +Pfam, if the environment variable HMMERDB is +set to the location of the Pfam database. +The retrieved HMM file is written in HMMER 2 ASCII format. + +.PP +The database must have an associated GSI index file. +To index an HMM database, use the program +.B hmmindex. + +.SH OPTIONS + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + + + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmindex.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmindex.man new file mode 100644 index 0000000..3bf171b --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmindex.man @@ -0,0 +1,73 @@ +.TH "hmmindex" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmindex - create a binary SSI index for an HMM database + +.SH SYNOPSIS +.B hmmindex +.I [options] +.I database + +.SH DESCRIPTION + +.B hmmindex +is a utility that creates a binary SSI ("squid sequence index" +format) index for an HMM database file called +.I database. +The new index file is named +.IR database.ssi. +An SSI index file is required for +.B hmmfetch +to work, and also for the PVM implementation of +.B hmmpfam. + +.SH OPTIONS + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmpfam.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmpfam.man new file mode 100644 index 0000000..a3e8c8a --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmpfam.man @@ -0,0 +1,320 @@ +.TH "hmmpfam" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmpfam - search one or more sequences against an HMM database + +.SH SYNOPSIS +.B hmmpfam +.I [options] +.I hmmfile +.I seqfile + +.SH DESCRIPTION + +.B hmmpfam +reads a sequence file +.I seqfile +and compares each sequence in it, one at a time, against all the HMMs in +.I hmmfile +looking for significantly similar sequence matches. + +.PP +.I hmmfile +will be looked for first in the current working directory, +then in a directory named by the environment variable +.I HMMERDB. +This lets administrators install HMM library(s) such as +Pfam in a common location. + +.PP +There is a separate output report for each sequence in +.I seqfile. +This report consists of three sections: a ranked list +of the best scoring HMMs, a list of the +best scoring domains in order of their occurrence +in the sequence, and alignments for all the best scoring +domains. +A sequence score may be higher than a domain score for +the same sequence if there is more than one domain in the sequence; +the sequence score takes into account all the domains. +All sequences scoring above the +.I -E +and +.I -T +cutoffs are shown in the first list, then +.I every +domain found in this list is +shown in the second list of domain hits. +If desired, E-value and bit score thresholds may also be applied +to the domain list using the +.I --domE +and +.I --domT +options. + +.SH OPTIONS + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.B -n +Specify that models and sequence are nucleic acid, not protein. +Other HMMER programs autodetect this; but because of the order in +which +.B hmmpfam +accesses data, it can't reliably determine the correct "alphabet" +by itself. + +.TP +.BI -A " " +Limits the alignment output to the +.I +best scoring domains. +.B -A0 +shuts off the alignment output and can be used to reduce +the size of output files. + +.TP +.BI -E " " +Set the E-value cutoff for the per-sequence ranked hit list to +.I , +where +.I +is a positive real number. The default is 10.0. Hits with E-values +better than (less than) this threshold will be shown. + +.TP +.BI -T " " +Set the bit score cutoff for the per-sequence ranked hit list to +.I , +where +.I +is a real number. +The default is negative infinity; by default, the threshold +is controlled by E-value and not by bit score. +Hits with bit scores better than (greater than) this threshold +will be shown. + +.TP +.BI -Z " " +Calculate the E-value scores as if we had seen a sequence database of +.I +sequences. The default is arbitrarily set to 59021, the size of +Swissprot 34. + +.SH EXPERT OPTIONS + +.TP +.B --acc +Report HMM accessions instead of names in the output reports. +Useful for high-throughput annotation, where the data are being +parsed for storage in a relational database. + +.TP +.B --compat +Use the output format of HMMER 2.1.1, the 1998-2001 public +release; provided so 2.1.1 parsers don't have to be rewritten. + +.TP +.BI --cpu " " +Sets the maximum number of CPUs that the program +will run on. The default is to use all CPUs +in the machine. Overrides the HMMER_NCPU +environment variable. Only affects threaded +versions of HMMER (the default on most systems). + +.TP +.B --cut_ga +Use Pfam GA (gathering threshold) score cutoffs. +Equivalent +to --globT --domT , but the GA1 and GA2 cutoffs +are read from each HMM in +.I hmmfile +individually. hmmbuild puts these cutoffs there +if the alignment file was annotated in a Pfam-friendly +alignment format (extended SELEX or Stockholm format) and +the optional GA annotation line was present. If these +cutoffs are not set in the HMM file, +.B --cut_ga +doesn't work. + +.TP +.B --cut_tc +Use Pfam TC (trusted cutoff) score cutoffs. Equivalent +to --globT --domT , but the TC1 and TC2 cutoffs +are read from each HMM in +.I hmmfile +individually. hmmbuild puts these cutoffs there +if the alignment file was annotated in a Pfam-friendly +alignment format (extended SELEX or Stockholm format) and +the optional TC annotation line was present. If these +cutoffs are not set in the HMM file, +.B --cut_tc +doesn't work. + +.TP +.B --cut_nc +Use Pfam NC (noise cutoff) score cutoffs. Equivalent +to --globT --domT , but the NC1 and NC2 cutoffs +are read from each HMM in +.I hmmfile +individually. hmmbuild puts these cutoffs there +if the alignment file was annotated in a Pfam-friendly +alignment format (extended SELEX or Stockholm format) and +the optional NC annotation line was present. If these +cutoffs are not set in the HMM file, +.B --cut_nc +doesn't work. + +.TP +.BI --domE " " +Set the E-value cutoff for the per-domain ranked hit list to +.I , +where +.I +is a positive real number. +The default is infinity; by default, all domains in the sequences +that passed the first threshold will be reported in the second list, +so that the number of domains reported in the per-sequence list is +consistent with the number that appear in the per-domain list. + +.TP +.BI --domT " " +Set the bit score cutoff for the per-domain ranked hit list to +.I , +where +.I +is a real number. The default is negative infinity; +by default, all domains in the sequences +that passed the first threshold will be reported in the second list, +so that the number of domains reported in the per-sequence list is +consistent with the number that appear in the per-domain list. +.I Important note: +only one domain in a sequence is absolutely controlled by this +parameter, or by +.B --domT. +The second and subsequent domains in a sequence have a de facto +bit score threshold of 0 because of the details of how HMMER +works. HMMER requires at least one pass through the main model +per sequence; to do more than one pass (more than one domain) +the multidomain alignment must have a better score than the +single domain alignment, and hence the extra domains must contribute +positive score. See the Users' Guide for more detail. + +.TP +.BI --forward +Use the Forward algorithm instead of the Viterbi algorithm +to determine the per-sequence scores. Per-domain scores are +still determined by the Viterbi algorithm. Some have argued that +Forward is a more sensitive algorithm for detecting remote +sequence homologues; my experiments with HMMER have not +confirmed this, however. + +.TP +.BI --informat " " +Assert that the input +.I seqfile +is in format +.I ; +do not run Babelfish format autodection. This increases +the reliability of the program somewhat, because +the Babelfish can make mistakes; particularly +recommended for unattended, high-throughput runs +of HMMER. Valid format strings include FASTA, +GENBANK, EMBL, GCG, PIR, STOCKHOLM, SELEX, MSF, +CLUSTAL, and PHYLIP. See the User's Guide for a complete +list. + +.TP +.B --null2 +Turn off the post hoc second null model. By default, each alignment +is rescored by a postprocessing step that takes into account possible +biased composition in either the HMM or the target sequence. +This is almost essential in database searches, especially with +local alignment models. There is a very small chance that this +postprocessing might remove real matches, and +in these cases +.B --null2 +may improve sensitivity at the expense of reducing +specificity by letting biased composition hits through. + +.TP +.B --pvm +Run on a Parallel Virtual Machine (PVM). The PVM must +already be running. The client program +.B hmmpfam-pvm +must be installed on all the PVM nodes. +The HMM database +.I hmmfile +and an associated GSI index file +.IR hmmfile. gsi +must also be installed on all the PVM nodes. +(The GSI index is produced by the program +.BR hmmindex .) +Because the PVM implementation is I/O bound, +it is highly recommended that each node have a +local copy of +.I hmmfile +rather than NFS mounting a shared copy. +Optional PVM support must have been compiled into +HMMER for +.B --pvm +to function. + +.TP +.B --xnu +Turn on XNU filtering of target protein sequences. Has no effect +on nucleic acid sequences. In trial experiments, +.B --xnu +appears to perform less well than the default +post hoc null2 model. + + + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/documentation/man/hmmsearch.man b/forester/archive/RIO/others/hmmer/documentation/man/hmmsearch.man new file mode 100644 index 0000000..0073a07 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/documentation/man/hmmsearch.man @@ -0,0 +1,289 @@ +.TH "hmmsearch" 1 @RELEASEDATE@ "HMMER @RELEASE@" "HMMER Manual" + +.SH NAME +.TP +hmmsearch - search a sequence database with a profile HMM + +.SH SYNOPSIS +.B hmmsearch +.I [options] +.I hmmfile +.I seqfile + +.SH DESCRIPTION + +.B hmmsearch +reads an HMM from +.I hmmfile +and searches +.I seqfile +for significantly similar sequence matches. + +.PP +.I seqfile +will be looked for first in the current working directory, +then in a directory named by the environment variable +.I BLASTDB. +This lets users use existing BLAST databases, if BLAST +has been configured for the site. + +.PP +.B hmmsearch +may take minutes or even hours to run, depending +on the size of the sequence database. It is a good +idea to redirect the output to a file. + +.PP +The output consists of four sections: a ranked list +of the best scoring sequences, a ranked list of the +best scoring domains, alignments for all the best scoring +domains, and a histogram of the scores. +A sequence score may be higher than a domain score for +the same sequence if there is more than one domain in the sequence; +the sequence score takes into account all the domains. +All sequences scoring above the +.I -E +and +.I -T +cutoffs are shown in the first list, then +.I every +domain found in this list is +shown in the second list of domain hits. +If desired, E-value and bit score thresholds may also be applied +to the domain list using the +.I --domE +and +.I --domT +options. + +.SH OPTIONS + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.BI -A " " +Limits the alignment output to the +.I +best scoring domains. +.B -A0 +shuts off the alignment output and can be used to reduce +the size of output files. + +.TP +.BI -E " " +Set the E-value cutoff for the per-sequence ranked hit list to +.I , +where +.I +is a positive real number. The default is 10.0. Hits with E-values +better than (less than) this threshold will be shown. + +.TP +.BI -T " " +Set the bit score cutoff for the per-sequence ranked hit list to +.I , +where +.I +is a real number. +The default is negative infinity; by default, the threshold +is controlled by E-value and not by bit score. +Hits with bit scores better than (greater than) this threshold +will be shown. + +.TP +.BI -Z " " +Calculate the E-value scores as if we had seen a sequence database of +.I +sequences. The default is the number of sequences seen in your +database file +.I . + +.SH EXPERT OPTIONS + +.TP +.B --compat +Use the output format of HMMER 2.1.1, the 1998-2001 public +release; provided so 2.1.1 parsers don't have to be rewritten. + +.TP +.BI --cpu " " +Sets the maximum number of CPUs that the program +will run on. The default is to use all CPUs +in the machine. Overrides the HMMER_NCPU +environment variable. Only affects threaded +versions of HMMER (the default on most systems). + +.TP +.B --cut_ga +Use Pfam GA (gathering threshold) score cutoffs. +Equivalent +to --globT --domT , but the GA1 and GA2 cutoffs +are read from the HMM file. hmmbuild puts these cutoffs there +if the alignment file was annotated in a Pfam-friendly +alignment format (extended SELEX or Stockholm format) and +the optional GA annotation line was present. If these +cutoffs are not set in the HMM file, +.B --cut_ga +doesn't work. + +.TP +.B --cut_tc +Use Pfam TC (trusted cutoff) score cutoffs. Equivalent +to --globT --domT , but the TC1 and TC2 cutoffs +are read from the HMM file. hmmbuild puts these cutoffs there +if the alignment file was annotated in a Pfam-friendly +alignment format (extended SELEX or Stockholm format) and +the optional TC annotation line was present. If these +cutoffs are not set in the HMM file, +.B --cut_tc +doesn't work. + +.TP +.B --cut_nc +Use Pfam NC (noise cutoff) score cutoffs. Equivalent +to --globT --domT , but the NC1 and NC2 cutoffs +are read from the HMM file. hmmbuild puts these cutoffs there +if the alignment file was annotated in a Pfam-friendly +alignment format (extended SELEX or Stockholm format) and +the optional NC annotation line was present. If these +cutoffs are not set in the HMM file, +.B --cut_nc +doesn't work. + +.TP +.BI --domE " " +Set the E-value cutoff for the per-domain ranked hit list to +.I , +where +.I +is a positive real number. +The default is infinity; by default, all domains in the sequences +that passed the first threshold will be reported in the second list, +so that the number of domains reported in the per-sequence list is +consistent with the number that appear in the per-domain list. + +.TP +.BI --domT " " +Set the bit score cutoff for the per-domain ranked hit list to +.I , +where +.I +is a real number. The default is negative infinity; +by default, all domains in the sequences +that passed the first threshold will be reported in the second list, +so that the number of domains reported in the per-sequence list is +consistent with the number that appear in the per-domain list. +.I Important note: +only one domain in a sequence is absolutely controlled by this +parameter, or by +.B --domT. +The second and subsequent domains in a sequence have a de facto +bit score threshold of 0 because of the details of how HMMER +works. HMMER requires at least one pass through the main model +per sequence; to do more than one pass (more than one domain) +the multidomain alignment must have a better score than the +single domain alignment, and hence the extra domains must contribute +positive score. See the Users' Guide for more detail. + +.TP +.BI --forward +Use the Forward algorithm instead of the Viterbi algorithm +to determine the per-sequence scores. Per-domain scores are +still determined by the Viterbi algorithm. Some have argued that +Forward is a more sensitive algorithm for detecting remote +sequence homologues; my experiments with HMMER have not +confirmed this, however. + +.TP +.BI --informat " " +Assert that the input +.I seqfile +is in format +.I ; +do not run Babelfish format autodection. This increases +the reliability of the program somewhat, because +the Babelfish can make mistakes; particularly +recommended for unattended, high-throughput runs +of HMMER. Valid format strings include FASTA, +GENBANK, EMBL, GCG, PIR, STOCKHOLM, SELEX, MSF, +CLUSTAL, and PHYLIP. See the User's Guide for a complete +list. + +.TP +.B --null2 +Turn off the post hoc second null model. By default, each alignment +is rescored by a postprocessing step that takes into account possible +biased composition in either the HMM or the target sequence. +This is almost essential in database searches, especially with +local alignment models. There is a very small chance that this +postprocessing might remove real matches, and +in these cases +.B --null2 +may improve sensitivity at the expense of reducing +specificity by letting biased composition hits through. + +.TP +.B --pvm +Run on a Parallel Virtual Machine (PVM). The PVM must +already be running. The client program +.B hmmsearch-pvm +must be installed on all the PVM nodes. +Optional PVM support must have been compiled into +HMMER. + +.TP +.B --xnu +Turn on XNU filtering of target protein sequences. Has no effect +on nucleic acid sequences. In trial experiments, +.B --xnu +appears to perform less well than the default +post hoc null2 model. + + + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the individual man +pages: see +.B hmmer(1). +.PP +A User guide and tutorial came with the distribution: +.B Userguide.ps +[Postscript] and/or +.B Userguide.pdf +[PDF]. +.PP +Finally, all documentation is also available online via WWW: +.B http://hmmer.wustl.edu/ + +.SH AUTHOR + +This software and documentation is: +.nf +@COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +.fi +See the file COPYING in your distribution for complete details. + +.nf +Sean Eddy +HHMI/Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/install-sh b/forester/archive/RIO/others/hmmer/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/forester/archive/RIO/others/hmmer/squid/00README b/forester/archive/RIO/others/hmmer/squid/00README new file mode 100644 index 0000000..fa03d67 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/00README @@ -0,0 +1,39 @@ +SQUID - library of functions for biological sequence analysis +Copyright (C) 1992-2001 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 + diff --git a/forester/archive/RIO/others/hmmer/squid/Docs/abstract.tex b/forester/archive/RIO/others/hmmer/squid/Docs/abstract.tex new file mode 100644 index 0000000..d27df57 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Docs/abstract.tex @@ -0,0 +1,7 @@ +\begin{abstract} + +The {\tt squid} library is an evolving collection of C functions for +nucleic acid and protein sequence analysis. + +\end {abstract} + diff --git a/forester/archive/RIO/others/hmmer/squid/Docs/formats.tex b/forester/archive/RIO/others/hmmer/squid/Docs/formats.tex new file mode 100644 index 0000000..f775cc9 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Docs/formats.tex @@ -0,0 +1,517 @@ +% -------------------------------------------------------------- +% squid:formats.tex +% SRE, Wed Jul 14 17:54:59 1999 +% $CVS Id$ +% -------------------------------------------------------------- + +\chapter {Sequence file formats} + +\section{Summary} + +The software can handle a number of different file formats. By +default, it autodetects the file format, so you don't have to worry +about converting formats. Most common file formats are recognized, +including FASTA, Genbank, EMBL, Swissprot, PIR, and FASTA for +unaligned sequences, and GCG MSF, Clustal, Phylip, and Stockholm +format for multiple sequence alignments. Some parts of the source code +call the autodetector the ``Babelfish''. + +The Babelfish has three drawbacks. First, it takes a small amount of +time to do the autodetection. Second, the Babelfish is aggressive, and +it makes mistakes when a file isn't one of the known formats -- in +particular, it can recognize plain text files as SELEX alignments, +because the SELEX format is so free-form. Third, because the Babelfish +works by reading the first part of the file then rewinding it before +starting to process it, you can't use the Babelfish on a nonrewindable +stream: e.g. when you're taking sequence input from a UNIX pipe +instead of a file, or when the file is gzipped and has to be +decompressed before processing. In normal use, when you're using the +software interactively from the command line on sequence files that +you're familiar with, the Babelfish is very convenient and +(relatively) safe. + +However, you'll find that there are times when you want to override +the Babelfish -- particularly in high-throughput analysis, when you +know the format your files are supposed to be in, and you'd rather +increase robustness and sacrifice interactive flexibility. All the +programs have an \verb+--informat + option that lets you +specify the format and shut off the Babelfish. You \emph{must} use +\verb+--informat+ to use compressed files, or to read sequence from a +UNIX pipe... see below for more details on these tricks. + +\section{Formats recognized by the Babelfish} + +Recognized unaligned sequence file formats: + +\begin{tabular}{ll}\hline +Format name & Note \\ \hline +fasta & BLAST flatfile databases, etc.\\ +genbank & NCBI Genbank flat file format.\\ +embl & Includes both EMBL (DNA) and SWISSPROT (protein) databases.\\ +pir & Protein Information Resource database (NBRF/Georgetown)\\ +gcg & Wisconsin Genetics Computer Group; only allows one sequence per file.\\ +gcgdata & I think this GCG database format is obsolete now.\\ \hline +\end{tabular} + +Recognized multiple sequence alignment file formats: + +\begin{tabular}{ll}\hline +Format name & Note \\ \hline +stockholm & Pfam format. Allows databases of more than one alignment per file\\ +selex & Old NeXagen RNA alignment format, adopted by early HMMER releases.\\ +msf & GCG's alignment format.\\ +clustal & ClustalV, ClustalW, and friends.\\ +a2m & Aligned FASTA format; see comment below.\\ +phylip & Format used by Felsenstein's PHYLIP phylogenetic inference software\\\hline +\end{tabular} + +Aligned FASTA format (here called ``A2M'', though I believe that what +Haussler's group at UCSC started calling A2M is yet another variant of +aligned FASTA that's incompatible with this A2M) is only autodetected +when an alignment file is expected. Otherwise an A2M file will be +recognized as unaligned FASTA, and its gap characters (if any) will be +parsed as sequence characters -- often not what you want. + +Alignment files may be used when unaligned files are expected -- the +sequences will silently be de-aligned and read sequentially. The +converse is not true; you can't give an unaligned sequence format when +an alignment is expected (makes sense, right?). + +There is no provision for enforcing that single unaligned sequence +formats really do contain just a single sequence. An attempt to +convert a multisequence file to GCG format will silently ``succeed'', +and the file may look ok to your eye, but that multisequence ``GCG'' +file is illegal. The data will be corrupted if you try to read that +file back in, possibly without generating any error messages. + +It turns out that other formats work too, but they're undocumented, +not subjected to any quality control testing at software release time, +and prone to change without notice at my slightest whim. (In other +words, even less supported than the software already is.) The brave, +curious, or desperate are invited to peruse +\prog{seqio.c} and \prog{squid.h}. + +\section{Special tricks} + +\subsection{Reading from standard input (probably UNIX-only)} + +If you give ``-'' as a sequence filename, the software will read the +sequences from standard input rather than from a file. You will need +to specify the format of the incoming data using the +\verb+--informat+ option. +Any format except SELEX can be read from standard input. This lets you +use any program downstream in a standard UNIX pipe. + +There is one limitation: you can't use ``-'' more than once on a +command line, for obvious reasons. (How is it supposed to read more +than one file from one standard input stream?) If you do, behavior of +the software is undefined -- in other words, the software don't check +for whether you're making this mistake, so God help you if you do. + +\subsection{Reading from gzip'ed files (probably UNIX-only)} + +A sequence file in any format except SELEX can be compressed by gzip, +and read in its compressed form. The software looks for the suffix +\prog{.gz} to detect gzip'ed files. This allows you to save disk space +by keeping sequence files gzip'ed, if you like. gzip is not built in; +the software needs to find a gzip executable in your current PATH. + +If for some reason you name a file with a \prog{.gz} suffix and it's +\emph{not} a gzip-compressed file, the software will still try to +decompress it, and peculiar things may happen. + +\section{FASTA format, the recommended unaligned format} + +FASTA is probably the simplest of formats for unaligned sequences. +FASTA files are easily created in a text editor. Each sequence is +preceded by a line starting with \verb+>+. The first word on this line +is the name of the sequence. The rest of the line is a description of +the sequence (free format). The remaining lines contain the sequence +itself. You can put as many letters on a sequence line as you want. + +\textbf{Example of a simple FASTA file:} +\begin{verbatim} +>seq1 This is the description of my first sequence. +AGTACGTAGTAGCTGCTGCTACGTGCGCTAGCTAGTACGTCA CGACGTAGATGCTAGCTGACTCGATGC +>seq2 This is a description of my second sequence. +CGATCGATCGTACGTCGACTGATCGTAGCTACGTCGTACGTAG CATCGTCAGTTACTGCATGCTCG +\end{verbatim} + +For better or worse, FASTA is not a documented standard. Minor (and +major) variants are in widespread use in the bioinformatics community, +all of which are called ``FASTA format''. My software attempts to +cater to all of them, and is tolerant of common deviations in FASTA +format. Certainly anything that is accepted by the database formatting +programs in NCBI BLAST or WU-BLAST (e.g. setdb, pressdb, xdformat) +will also be accepted by my software. Blank lines in a FASTA file are +ignored, and so are spaces or other gap symbols (dashes, underscores, +periods) in a sequence. Other non-amino or non-nucleic acid symbols in +the sequence are also silently ignored, mostly because some people +seem to think that ``*'' or ``.'' should be added to protein sequences +to (redundantly) indicate the end of the sequence. The parser will +also accept unlimited line lengths, which allows it to accomodate the +enormous description lines in the NCBI NR databases. + +On the other hand, any FASTA files \emph{generated} by my software +adhere closely to community standards, and should be usable by other +software packages (BLAST, FASTA, etc.) that are more picky about +parsing their input files. That means you can run a sloppy FASTA file +thru \prog{sreformat} to clean it up. + +Partly because of this tolerance, the software may have a difficult +time dealing with files that are \textit{not} in FASTA format, +especially if you're relying on the Babelfish to do format +autodetection. Some (now mercifully uncommon) file formats are so +similar to FASTA format that they be erroneously called FASTA by the +Babelfish and then quietly but lethally misparsed. An example is the +old NBRF file format. If you're using \verb+--informat+, things will +be more robust, and the software should simply refuse to accept a +non-FASTA file -- but you shouldn't count on this, because files +perversely similar to FASTA will still confuse the parser. (The gist +of these caveats applies to all formats, not just FASTA.) + +\section{SELEX, the quick and dirty alignment format} + +An example of a simple SELEX alignment file: + +\begin{verbatim} +# Example selex file + +seq1 ACGACGACGACG. +seq2 ..GGGAAAGG.GA +seq3 UUU..AAAUUU.A + +seq1 ..ACG +seq2 AAGGG +seq3 AA...UUU +\end{verbatim} + +SELEX is an interleaved multiple alignment format that arose as a +simple, intuitive format that was easy to write and manipulate +manually in a text editor. It is usually easy to convert other +alignment formats into SELEX format, even with a couple of lines of +Perl, but it can be harder to go the other way, since SELEX is more +free-format than other alignment formats. For instance, GCG's MSF +format and the output of the CLUSTALV multiple alignment program are +similar interleaved formats that can be converted to SELEX just by +stripping a small number of non-sequence lines out. Because SELEX +evolved to accomodate different user input styles, it is very tolerant +of various inconsistencies such as different gap symbols, varying line +lengths, etc. + +Each line contains a name, followed by the aligned sequence. A space, +dash, underscore, or period denotes a gap. If the alignment is too +long to fit on one line, the alignment is split into multiple blocks, +separated by blank lines. The number of sequences, their order, and +their names must be the same in every block (even if a sequence has no +residues in a given block!) Other blank lines are ignored. You can add +comments to the file on lines starting with a \verb+#+. + +SELEX stands for ``Systematic Evolution of Ligands by Exponential +Enrichment'' -- it refers to the Tuerk and Gold technology for +evolving families of small RNAs for particular functions +\cite{Tuerk90b}. SELEX files were what we used to keep track of +alignments of these small RNA families, at a company then called +NeXagen, in Boulder. It's an interesting piece of historical baggage. +With the development of HMMER and more need for annotated alignments +in Pfam, SELEX format later evolved into ``extended SELEX'', with a +reserved comment style that allowed structural markup and other +annotations, but that became unwieldy. We now use Stockholm format +(see below) for highly annotated alignments. (Extended SELEX is +deprecated and undocumented.) Still, the basic SELEX format remains a +useful ``lowest common denominator'' alignment format, and has been +retained. + +\subsubsection {Detailed specification of a SELEX file} + +\begin{enumerate} +\item +Any line beginning with a \verb+#=+ as the first two characters is a +parsed machine comment in extended SELEX, and is now deprecated. + +\item +All other lines beginning with a \verb+%+ or \verb+#+ as the first +character are user comments. User comments are ignored by all +software. Anything may appear on these lines. Any number of comments +may be included in a SELEX file, and at any point. + +\item +Lines of data consist of a name followed by a sequence. The total +length of the line must be smaller than 4096 characters. + +\item +Names must be a single word. Any non-whitespace characters are +accepted. No spaces are tolerated in names: names MUST be a +single word. Names must be less than 32 characters long. + +\item In the sequence, any of the characters \verb+-_.+ or a space are +recognized as gaps. Any other characters are interpreted as sequence. +Sequence is case-sensitive. There is a common assumption by my +software that upper-case symbols are used for consensus (match) +positions and lower-case symbols are used for inserts. This language +of ``match'' versus ``insert'' comes from the hidden Markov model +formalism \cite{Krogh94}. To almost all of my software, this isn't +important, and it immediately converts the sequence to all upper-case +after it's read. + +\item +Multiple different sequences are grouped in a block of data lines. +Blocks are separated by blank lines. No blank lines are tolerated +between the sequence lines in a block. Each block in a multi-block +file of a long alignment must have its sequences in the same order in +each block. The names are checked to verify that this is the case; if +not, only a warning is generated. (In manually constructed files, some +users may wish to use shorthand names in subsequent blocks after an +initial block with full names -- but this isn't recommended.) +\end{enumerate} + +\section{Stockholm, the recommended multiple sequence alignment format} + +While we recommend a community standard format (FASTA) for unaligned +sequence files, the recommended multiple alignment file format is not +a community standard. The Pfam Consortium developed a format (based +on extended SELEX) called ``Stockholm format''. The reasons for this +are two-fold. First, there really is no standard accepted format for +multiple sequence alignment files, so we don't feel guilty about +inventing a new one. Second, the formats of popular multiple alignment +software (e.g. CLUSTAL, GCG MSF, PHYLIP) do not support rich +documentation and markup of the alignment. Stockholm format was +developed to support extensible markup of multiple sequence +alignments, and we use this capability extensively in both RNA work +(with structural markup) and the Pfam database (with extensive use of +both annotation and markup). + +\subsection{A minimal Stockholm file} +\begin{verbatim} +# STOCKHOLM 1.0 + +seq1 ACDEF...GHIKL +seq2 ACDEF...GHIKL +seq3 ...EFMNRGHIKL + +seq1 MNPQTVWY +seq2 MNPQTVWY +seq3 MNPQT... + +\end{verbatim} + +The simplest Stockholm file is pretty intuitive, easily generated in a +text editor. It is usually easy to convert alignment formats into a +``least common denominator'' Stockholm format. For instance, SELEX, +GCG's MSF format, and the output of the CLUSTALV multiple alignment +program are all similar interleaved formats. + +The first line in the file must be \verb+# STOCKHOLM 1.x+, where +\verb+x+ is a minor version number for the format specification +(and which currently has no effect on my parsers). This line allows a +parser to instantly identify the file format. + +In the alignment, each line contains a name, followed by the aligned +sequence. A dash or period denotes a gap. If the alignment is too long +to fit on one line, the alignment may be split into multiple blocks, +with blocks separated by blank lines. The number of sequences, their +order, and their names must be the same in every block. Within a given +block, each (sub)sequence (and any associated \verb+#=GR+ and +\verb+#=GC+ markup, see below) is of equal length, called the +\textit{block length}. Block lengths may differ from block to block; +the block length must be at least one residue, and there is no +maximum. + +Other blank lines are ignored. You can add comments to the file on +lines starting with a \verb+#+. + +All other annotation is added using a tag/value comment style. The +tag/value format is inherently extensible, and readily made +backwards-compatible; unrecognized tags will simply be ignored. Extra +annotation includes consensus and individual RNA or protein secondary +structure, sequence weights, a reference coordinate system for the +columns, and database source information including name, accession +number, and coordinates (for subsequences extracted from a longer +source sequence) See below for details. + +\subsection{Syntax of Stockholm markup} + +There are four types of Stockholm markup annotation, for per-file, +per-sequence, per-column, and per-residue annotation: + +\begin{wideitem} +\item {\emprog{#=GF }} + Per-file annotation. \prog{} is a free format text line + of annotation type \prog{}. For example, \prog{#=GF DATE + April 1, 2000}. Can occur anywhere in the file, but usually + all the \prog{#=GF} markups occur in a header. + +\item {\emprog{#=GS }} + Per-sequence annotation. \prog{} is a free format text line + of annotation type \prog{tag} associated with the sequence + named \prog{}. For example, \prog{#=GS seq1 + SPECIES_SOURCE Caenorhabditis elegans}. Can occur anywhere + in the file, but in single-block formats (e.g. the Pfam + distribution) will typically follow on the line after the + sequence itself, and in multi-block formats (e.g. HMMER + output), will typically occur in the header preceding the + alignment but following the \prog{#=GF} annotation. + +\item {\emprog{#=GC <...s...>} + Per-column annotation. \prog{<...s...>} is an aligned text line + of annotation type \prog{}. + \verb+#=GC+ lines are + associated with a sequence alignment block; \prog{<...s...>} + is aligned to the residues in the alignment block, and has + the same length as the rest of the block. + Typically \verb+#=GC+ lines are placed at the end of each block. + +\item {\emprog{#=GR <.....s.....>} + Per-residue annotation. \prog{<...s...>} is an aligned text line + of annotation type \prog{}, associated with the sequence + named \prog{}. + \verb+#=GR+ lines are + associated with one sequence in a sequence alignment block; + \prog{<...s...>} + is aligned to the residues in that sequence, and has + the same length as the rest of the block. + Typically + \verb+#=GR+ lines are placed immediately following the + aligned sequence they annotate. +\end{wideitem} + +\subsection{Semantics of Stockholm markup} + +Any Stockholm parser will accept syntactically correct files, but is +not obligated to do anything with the markup lines. It is up to the +application whether it will attempt to interpret the meaning (the +semantics) of the markup in a useful way. At the two extremes are the +Belvu alignment viewer and the HMMER profile hidden Markov model +software package. + +Belvu simply reads Stockholm markup and displays it, without trying to +interpret it at all. The tag types (\prog{#=GF}, etc.) are sufficient +to tell Belvu how to display the markup: whether it is attached to the +whole file, sequences, columns, or residues. + +HMMER uses Stockholm markup to pick up a variety of information from +the Pfam multiple alignment database. The Pfam consortium therefore +agrees on additional syntax for certain tag types, so HMMER can parse +some markups for useful information. This additional syntax is imposed +by Pfam, HMMER, and other software of mine, not by Stockholm format +per se. You can think of Stockholm as akin to XML, and what my +software reads as akin to an XML DTD, if you're into that sort of +structured data format lingo. + +The Stockholm markup tags that are parsed semantically by my software +are as follows: + +\subsubsection{Recognized #=GF annotations} +\begin{wideitem} +\item [\emprog{ID }] + Identifier. \emprog{} is a name for the alignment; + e.g. ``rrm''. One word. Unique in file. + +\item [\emprog{AC }] + Accession. \emprog{} is a unique accession number for the + alignment; e.g. + ``PF00001''. Used by the Pfam database, for instance. + Often a alphabetical prefix indicating the database + (e.g. ``PF'') followed by a unique numerical accession. + One word. Unique in file. + +\item [\emprog{DE }] + Description. \emprog{} is a free format line giving + a description of the alignment; e.g. + ``RNA recognition motif proteins''. One line. Unique in file. + +\item [\emprog{AU }] + Author. \emprog{} is a free format line listing the + authors responsible for an alignment; e.g. + ``Bateman A''. One line. Unique in file. + +\item [\emprog{GA }] + Gathering thresholds. Two real numbers giving HMMER bit score + per-sequence and per-domain cutoffs used in gathering the + members of Pfam full alignments. See Pfam and HMMER + documentation for more detail. + +\item [\emprog{NC }] + Noise cutoffs. Two real numbers giving HMMER bit score + per-sequence and per-domain cutoffs, set according to the + highest scores seen for unrelated sequences when gathering + members of Pfam full alignments. See Pfam and HMMER + documentation for more detail. + +\item [\emprog{TC }] + Trusted cutoffs. Two real numbers giving HMMER bit score + per-sequence and per-domain cutoffs, set according to the + lowest scores seen for true homologous sequences that + were above the GA gathering thresholds, when gathering + members of Pfam full alignments. See Pfam and HMMER + documentation for more detail. +\end{wideitem} + +\subsection{Recognized #=GS annotations} + +\begin{wideitem} +\item [\emprog{WT }] + Weight. \emprog{} is a positive real number giving the + relative weight for a sequence, usually used to compensate + for biased representation by downweighting similar sequences. + Usually the weights average 1.0 (e.g. the weights sum to + the number of sequences in the alignment) but this is not + required. Either every sequence must have a weight annotated, + or none of them can. + +\item [\emprog{AC }] + Accession. \emprog{} is a database accession number for + this sequence. (Compare the \prog{#=GF AC} markup, which gives + an accession for the whole alignment.) One word. + +\item [\emprog{DE }] + Description. \emprog{} is one line giving a description for + this sequence. (Compare the \prog{#=GF DE} markup, which gives + a description for the whole alignment.) +\end{wideitem} + + +\subsection{Recognized #=GC annotations} + +\begin{wideitem} +\item [\emprog{RF}] + Reference line. Any character is accepted as a markup for a + column. The intent is to allow labeling the columns with some + sort of mark. + +\item [\emprog{SS_cons}] + Secondary structure consensus. For protein alignments, + DSSP codes or gaps are accepted as markup: [HGIEBTSCX.-_], where + H is alpha helix, G is 3/10-helix, I is p-helix, E is extended + strand, B is a residue in an isolated b-bridge, T is a turn, + S is a bend, C is a random coil or loop, and X is unknown + (for instance, a residue that was not resolved in a crystal + structure). For RNA alignments + the symbols \verb+>+ and \verb+<+ are + used for base pairs (pairs point at each other). \verb-+- indicate + definitely single-stranded positions, and any gap symbol indicates + unassigned bases or single-stranded positions. This description + roughly follows \cite{Konings89}. + RNA pseudoknots are represented by alphabetic characters, with upper + case letters representing the 5' side of the helix and lower case + letters representing the 3' side. Note that this limits the + annotation to a maximum of 26 pseudoknots per sequence. + + +\item [\emprog{SA_cons}] + Surface accessibility consensus. 0-9, gap symbols, or X are + accepted as markup. 0 means <10\% accessible residue surface + area, 1 means <20\%, 9 means <100\%, etc. X means unknown + structure. +\end{wideitem} + +\subsection{Recognized #=GR annotations} + +\begin{wideitem} +\item [\emprog{SS}] + Secondary structure consensus. See \prog{#=GC SS_cons} above. +\item [\emprog{SA}] + Surface accessibility consensus. See \prog{#=GC SA_cons} above. +\end{wideitem} + + diff --git a/forester/archive/RIO/others/hmmer/squid/Docs/gsi-format.tex b/forester/archive/RIO/others/hmmer/squid/Docs/gsi-format.tex new file mode 100644 index 0000000..3170824 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Docs/gsi-format.tex @@ -0,0 +1,87 @@ +% Mon Dec 5 15:23:18 1994 + +\section{GSI format} + +{\tt GSI} (``generic sequence index'') is a format for indexing +sequence databases. Database retrieval programs such as {\tt sfetch} +can read GSI files when they are available to enable fast retrieval of +a sequence from large databases. + +GSI files are created from sequence databases by Perl scripts. +Scripts are currently provided for indexing GenBank, SwissProt, +GenPept, FASTA, and PIR formatted databases. + +\subsection {GSI programmatic details} + +A single GSI file indexes one or more files in a sequence database. +It is a binary file consisting of a number of fixed-length records. +There are three types of records: one header record, one file record +for every file in the database, and one keyword record for every +sequence retrieval key. (The retrieval key is usually the sequence +name, but may also be a database accession number.) + +Every GSI record is 38 bytes long and contains three fields: 32 bytes +of text (31 bytes plus a trailing NUL byte), a 2 byte network short, +and a 4 byte network long. (``Network short'' and ``network long'' +refer to portable integer variables of fixed size and byte order. See +Perl manuals for a few more details.) + +The first record is a header. It contains a short identifying text +string (``GSI''), then the number of files indexed ({\tt nfiles}), and +the number of keywords indexed ({\tt nkeys}). + +The next {\tt nfiles} records (records 1..{\tt nfiles}) map file +numbers onto file names. The three fields are \verb+ +. These records must be in numerical order +according to their file numbers. Because of the 31-character +restriction on filename lengths, the sequence files will generally +have to be in the same directory as the GSI index file. The file +format number is defined in {\tt squid.h}: + +\begin{tabular}{rl} +0 & Unknown \\ +1 & Intelligenetics\\ +2 & Genbank\\ +4 & EMBL\\ +5 & GCG single sequence\\ +6 & Strider \\ +7 & FASTA\\ +8 & Zuker\\ +9 & Idraw\\ +12 & PIR\\ +13 & Raw\\ +14 & SQUID\\ +16 & GCG data library \\ +101& Stockholm alignment\\ +102& SELEX alignment\\ +103& GCG MSF alignment\\ +104& Clustal alignment\\ +105& A2M (aligned FASTA) alignment\\ +106& Phylip\\ +\end{tabular} + +The remaining records ({\tt nfiles}+1..{\tt nfiles+nkeys}) are for +mapping keys onto files and disk offsets. The three fields are +\verb+ +. These records must be +sorted in alphabetic order by their retrieval keys, because the +function GSIGetOffset() locates a keyword in the index file by a +binary search. + +\subsection{Relevant functions} +\begin{description} +\item[GSIOpen()] + Opens a GSI index file. +\item[GSIGetRecord()] + Gets three fields from the current record. +\item[GSIGetOffset()] + Looks up a keyword in a GSI index and returns a filename, + file format, and disk offset in the file. +\item[SeqfilePosition()] + Repositions an open sequence file to a given disk offset. +\item[GSIClose()] + Closes an open GSI index file. +\end{description} + + + + diff --git a/forester/archive/RIO/others/hmmer/squid/Docs/intro.tex b/forester/archive/RIO/others/hmmer/squid/Docs/intro.tex new file mode 100644 index 0000000..166c382 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Docs/intro.tex @@ -0,0 +1,2 @@ +\section {Introduction} + diff --git a/forester/archive/RIO/others/hmmer/squid/Docs/main.tex b/forester/archive/RIO/others/hmmer/squid/Docs/main.tex new file mode 100644 index 0000000..e469d1f --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Docs/main.tex @@ -0,0 +1,35 @@ + +\documentstyle[jmb]{article} +\setcounter{secnumdepth}{0} +\input{psfig} + +\addtolength{\oddsidemargin}{-.5in} +\addtolength{\textwidth}{1in} +\addtolength{\topmargin}{-.5in} +\addtolength{\textheight}{1in} +\renewcommand{\baselinestretch}{1.2} + +\title{The SQUID sequence function library} + +\author{Sean R. Eddy \\ +MRC Laboratory of Molecular Biology\\ +Hills Road\\ +Cambridge CB2 2QH\\ +England\\ +sre@mrc-lmb.cam.ac.uk} + +\begin{document} +\bibliographystyle{jmb} +\nocite{TitlesOn} + +\maketitle + +\input{abstract} +\input{formats} +\input{selex} +\input{squid-format} +\input{gsi-format} + +\bibliography{master} + +\end{document} diff --git a/forester/archive/RIO/others/hmmer/squid/Docs/selex.tex b/forester/archive/RIO/others/hmmer/squid/Docs/selex.tex new file mode 100644 index 0000000..c802e16 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Docs/selex.tex @@ -0,0 +1,153 @@ +\section{ SELEX alignment file format } + +\subsection{ Example of a simple SELEX format file} + +\begin{verbatim} +# Example selex file + +seq1 ACGACGACGACG. +seq2 ..GGGAAAGG.GA +seq3 UUU..AAAUUU.A + +seq1 ..ACG +seq2 AAGGG +seq3 AA...UUU +\end{verbatim} + +SELEX is an interleaved multiple alignment format that evolved as an +intuitive format. SELEX files are easy to write and manipulate +manually with a text editor. It is usually easy to convert other +alignment formats into SELEX format; the output of the CLUSTALV +multiple alignment program and GCG's MSF format are similar +interleaved formats. Because it evolved to accomodate different user +input styles, it is very tolerant of various inconsistencies such as +different gap symbols, varying line lengths, etc. + +As the format evolved, more features have been added. To maintain +compatibility with past alignment files, the new features are added +using a reserved comment style. These extra features are usually +maintained by automated SELEX-generating software, such as the {\tt +koala} sequence alignment editor or my {\tt cove} and {\tt hmm} sequence +analysis packages. This extra information includes consensus and +individual RNA or protein secondary structure, per-sequence weights, a +reference coordinate system for the columns, and database source +information including name, accession number, and coordinates (for +subsequences extracted from a longer source sequence). + +\subsection {Specification of a SELEX file} + +\begin{enumerate} +\item +Any line beginning with a \verb+#=+ as the first two characters is a +machine ``comment''. \verb+#=+ comments are reserved for additional +data about the alignment. Usually these features are maintained by +software such as the {\tt koala} editor, not by hand. + +\item +All other lines beginning with a \verb+%+ or \verb+#+ as the first +character is a user comment. User comments are ignored by all +software. Any number of comments may be included. + +\item +Lines of data consist of a name followed by a sequence. The total +length of the line must be smaller than 1024 characters. + +\item +Names must be a single word. Any non-whitespace characters are +accepted. No spaces are tolerated in names: names MUST be a +single word. + +\item +In the sequence, any of the characters \verb+-_.+ or a space are +recognized as gaps. Gaps are converted to a '.'. Any other characters +are interpreted as sequence. Sequence is case-sensitive. There is a +common assumption by my software that upper-case symbols are used for +consensus (match) positions and lower-case symbols are used for +inserts. This language of ``match'' versus ``insert'' comes from the +hidden Markov model formalism \cite{Krogh94}. To almost all of my +software, this isn't important, and it immediately converts the +sequence to all upper-case after it's read. + +\item +Multiple different sequences are grouped in a block of data lines. +Blocks are separated by blank lines. No blank lines are tolerated +between the sequence lines in a block. Each block in a multi-block +file of a long alignment must have its sequences in the same order in +each block. The names are checked to verify that this is the case; if +not, only a warning is generated. (In manually constructed files, some +users may wish to use shorthand names after the first block with full +names, but this isn't recommended.) +\end{enumerate} + +\subsection {Special comments} + +\subsubsection {Secondary structure} + +I use one-letter codes to indicate secondary structures. Secondary +structure strings are aligned to sequence blocks just like additional +sequences. + +For RNA secondary structure, the symbols \verb+>+ and \verb+<+ are +used for base pairs (pairs point at each other). \verb-+- indicate +other single-stranded positions, {\tt .} indicates unassigned bases. +This description follows \cite{Konings89}. For protein secondary +structure, I use {\tt E} to indicate residues in $\beta$-sheet, {\tt +H} for those in $\alpha$-helix, {\tt L} for those in loops, and {\tt +.} for unassigned residues. + +RNA pseudoknots are represented by alphabetic characters, with upper +case letters representing the 5' side of the helix and lower case +letters representing the 3' side. Note that this restricts the +annotation to a maximum of 26 pseudoknots per sequence. + +Lines beginning with \verb+#=SS+ or \verb+#=CS+ are individual or +consensus secondary structure data, respectively. \verb+#=SS+ +individual secondary structure lines must immediately follow the +sequence they are associated with. There can only be one \verb+#=SS+ +per sequence. \verb+#=CS+ consensus secondary structure predictions +precede all the sequences in each block. There can only be one +\verb+#=CS+ per file. + +\subsubsection {Reference coordinate system} + +Alignments are usually numbered by some reference coordinate system, +often a canonical molecule. For instance, tRNA positions are numbered +by reference to the positions of yeast tRNA-Phe. + +A line beginning with \verb+#=RF+ preceding the sequences in a block +gives a reference coordinate system. Any non-gap symbol in the +\verb+#=RF+ line indicates that sequence positions in its columns are +numbered. For instance, the \verb+#=RF+ lines for a tRNA alignment +would have 76 non-gap symbols for the canonical numbered columns; they +might be the aligned tRNA-Phe sequence itself, or they might be just +X's. + +\subsubsection {Sequence header} + +Additional per-sequence information can be placed in a header before +any blocks appear. These lines, one per sequence and in exactly the +same order as the sequences appear in the alignment, are formatted +like \verb+#=SQ ++. + +This information includes a sequence weight (for compensating for +biased representation of subfamilies of sequences in the alignment); +source information, if the sequence came from a database, consisting +of identifier, accession number, and source coordinates; and a +description of the sequence. + +If a \verb+#=SQ+ line is present, all the fields must be present. If +no information is available for a field, use '-' for all the fields +except the source coordinates, which would be given as '0'. + +\subsubsection {Author} + +The first non-comment, non-blank line of the file may be a \verb+#=AU+ +``author'' line. There is a programmatic interface for +alignment-generating programs to record a short comment like \verb+11 +November 1993, by Feng-Doolittle v. 2.1.1+, and this comment will be +recorded on the \verb+#=AU+ line by \verb+WriteSELEX()+. + + + diff --git a/forester/archive/RIO/others/hmmer/squid/Docs/squid-format.tex b/forester/archive/RIO/others/hmmer/squid/Docs/squid-format.tex new file mode 100644 index 0000000..e318534 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Docs/squid-format.tex @@ -0,0 +1,80 @@ +\newpage +\section {SQUID format} + +SQUID format is a sequence database format similar to the PIR, +GenBank, and EMBL formats. The primary difference is that SQUID format +may optionally contain secondary structure annotation information for +the sequence. No other sequence format allows secondary structure +annotation, which is why SQUID format became necessary. + +An example SQUID format file: + +\begin{verbatim} +NAM DY9990 +SRC HSTGYA M27547 76..169::196 +DES Human Tyr-tRNA gene, clone pM6. +SEQ +SS + 1 ccttcgatagctcagctggtagagcggaggactgtagactgcggaaacgt + >>>>>>>..>>>>........<<<<.>>>>>................... + 51 ttgtggacatccttaggtcgctggttcaattccggctcgaagga + .........<<<<<.....>>>>>.......<<<<<<<<<<<<. +++ +NAM DY9991 +SRC HSTRNAYE M55611 1..93::93 +DES Human Tyr-tRNA precursor. +SEQ +SS + 1 ccttcgatagctcagctggtagagcggaggactgtagcctgtagaaacat + >>>>>>>..>>>>........<<<<.>>>>>................... + 51 ttgtggacatccttaggtcgctggttcgattccggctcgaagg + .........<<<<<.....>>>>>.......<<<<<<<<<<<< +++ +NAM DA0260 +SEQ + 1 GGGCGAAUAGUGUCAGCGGGAGCACACCAGACUUGCAAUCUGGUAGGGAG + 51 GGUUCGAGUCCCUCUUUGUCCACCA +++ +\end{verbatim} + + +\subsection {Specification of a SQUID file} + +\begin{enumerate} +\item There must be a line of the form \verb+NAM +. + +\item There may be an optional line \verb+SRC +..::+, which specified a database source for this +sequence, giving the database identifier (name), accession number, +start and end position in the database sequence, and the original +length of the database sequence, respectively. If a \verb+SRC+ line +is present, all of these values must be specified. If any values are +unknown, they may be set to \verb+-+ in the case of \verb++ and +\verb++ and \verb+0+ in the case of \verb++, \verb+, +and \verb++, and in these cases the values will be ignored. + +\item There may be an optional line \verb+DES + giving +a one-line description of the sequence. + +\item There must be a line of the form \verb-SEQ +SS- or \verb-SEQ-. +If the line contains \verb-+SS-, it means that the record contains +secondary structure annotation interleaved with the sequence. + +\item The sequence (and optional structure) immediately follow. There may be +optional numbering either before or after the sequence. The number of +characters per line is unimportant. Spaces and tabs are ignored. +There must be no non-numeric non-space characters on any lines except +sequence or structure annotation characters. Structure annotation is +fairly free-form; any alphabetic character or character in the set +\verb/_.-*?<>{}[]()!@#$%^&=+;:'|`~"\/ is accepted. There must +be one such character for every sequence character (preferably aligned +to the sequence, but in fact this is not checked for). Note that +spaces in the secondary structure annotation are not permitted, +except where they are aligned to gaps in the sequence. + +\item Sequence records are separated by a line of the form \verb-++-. +\end{enumerate} + + + + + + diff --git a/forester/archive/RIO/others/hmmer/squid/Docs/ssi-format.tex b/forester/archive/RIO/others/hmmer/squid/Docs/ssi-format.tex new file mode 100644 index 0000000..b236d13 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Docs/ssi-format.tex @@ -0,0 +1,641 @@ +% SRE, Mon Dec 25 13:00:46 2000 + +\documentclass[12pt]{report} +\usepackage{fullpage} +\usepackage{times} +\usepackage{epsfig} +%\usepackage{html} % From the LaTeX2html translator +\usepackage{apalike} +\setcounter{secnumdepth}{2} + +\input{macros} + +\begin{document} +\bibliographystyle{apalike} + +\section{SSI format} + +SSI format (Sequence/Subsequence Index format) indexes flatfile +databases by names and/or accessions, enabling fast retrieval. + +An SSI index is a binary file that stores sequence names or accessions +as \emph{keys} that it can look up rapidly. It differentiates between +\emph{primary keys} and \emph{secondary keys}. There is one and only +one primary key per sequence. There can be more than one secondary key +per sequence. Both primary and secondary keys must be unique +identifiers (no two records have the same key). A program (like +HMMER's distributed PVM implementation) that needs to step through +each sequence one at a time can refer to the list of primary keys. A +program solely concerned with flexible sequence retrieval (such as +SQUID's \prog{sfetch}) might consult an SSI index with accessions as +primary keys, and names as secondary keys. + +A single SSI file can index multiple sequence data files. This allows +indexing multifile databases (e.g. Genbank flatfile distributions). + +The SSI format is relatively simple and may prove useful for other +indexing tasks besides sequence names. HMMER uses SSI format to index +HMM files. + +\subsection{Special features of SSI} + +SSI superceded 1994's GSI format after human genome sequence files +started exceeding 2 GB filesystem limitations, and after problems in +the HMMER PVM implementation had to be hacked around. SSI has the +following additional features compared to GSI. + +\begin{description} +\item[Separate primary key section] +Primary keys are set apart in a separate section, enabling programs to +step through a guaranteed one-to-one mapping of keys to sequences. A +secondary key section adds many-to-one mapping of keys to sequences. + +\item[Arbitrary filename and key lengths] +File name lengths and key name lengths are effectively unlimited. + +\item[64-bit indexing] +For sequence files exceeding 2GB, on architectures that support 64-bit +filesystems (such as IRIX, Solaris, Tru64 UNIX, FreeBSD...), SSI +supports 64-bit indexing; depending on the system, file sizes may +theoretically be allowed to range up to millions of terabytes. + +\item[Fast subsequence extraction] +SSI can be used to greatly accelerate \emph{subsequence} extraction +from very long sequences (example: human chromosome contigs). The +sequence file must meet certain formatting conditions for this to +work; see below for details. +\end{description} + +\subsection{SSI API in SQUID} + +\subsubsection{Functions for using a SSI index file:} + +\begin{sreapi} +\item[int SSIOpen(char *filename, SSIFILE **ret\_sfp)] + +Opens the SSI index file \prog{filename} and returns a \prog{SSIFILE +*} stream through \prog{ret\_sfp}. Returns 0 on success, nonzero on +failure. The caller must eventually close this stream using +\prog{SSIClose()}. More than one index can be open at once. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_NOFILE} & failed to open file; doesn't exist or not readable\\ +\prog{SSI\_ERR\_BADMAGIC} & not a SSI file \\ +\prog{SSI\_ERR\_NO64BIT} & it has 64-bit offsets, and we can't support that\\ +\prog{SSI\_ERR\_FORMAT} & file appears to be corrupted\\ +\prog{SSI\_ERR\_MALLOC} & malloc failed \\ +\end{tabular} + +\item[int SSIGetOffsetByName(SSIFILE *sfp, char *key, int *ret\_fh, SSIOFFSET *ret\_offset)] + +Looks up the string \prog{key} in the open index \prog{sfp}. +\prog{key} can be either a primary or secondary key. If \prog{key} is +found, \prog{*ret\_fh} contains a unique handle on the file +that contains {key} (suitable for an \prog{SSIFileInfo()} call, or for +comparison to the handle of the last file that was opened for +retrieval), and \prog{offset} is filled in with the offset in that +file. Returns 0 on success, non-zero on error. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_NO\_SUCH\_KEY} & key not found \\ +\prog{SSI\_ERR\_NODATA} & fread() failed, file appears to be corrupted\\ +\end{tabular} + +\item[int SSIGetOffsetByNumber(SSIFILE *sfp, int nkey, int +*ret\_fh, SSIOFFSET *offset)] + +Retrieves information for primary key number \prog{nkey}. \prog{nkey} +ranges from 0..\prog{nprimary-1}. When the key is found, +\prog{*ret\_fh} contains a unique handle on the file that +contains {key} (suitable for an SSIFileInfo() call, or for comparison +to the handle of the last file that was opened for retrieval), and +\prog{offset} is filled in with the offset in that file. Returns 0 on +success, non-zero on error. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_SEEK\_FAILED} & failed to reposition in index file\\ +\prog{SSI\_ERR\_NO\_SUCH\_KEY} & key not found \\ +\prog{SSI\_ERR\_NODATA} & fread() failed, file appears to be corrupted\\ +\end{tabular} + +\item[int SSIGetSubseqOffset(SSIFILE *sfp, char *key, int +requested\_start, int *ret\_fh, +SSIOFFSET *record\_offset, SSIOFFSET *data\_offset, int *ret\_actual\_start)] + +Implements \prog{SSI\_FAST\_SUBSEQ}. + +Looks up the string \prog{key} in the open index \prog{sfp}, and +asks for the nearest offset to a subsequence starting at position +\prog{requested\_start} in the sequence (numbering the sequence 1..L). +\prog{key} can be either a primary or secondary key. If \prog{key} is +found, \prog{*ret\_fh} contains a unique handle on the file that +contains {key} (suitable for an SSIFileInfo() call, or for comparison +to the handle of the last file that was opened for retrieval); +\prog{record\_offset} contains the disk offset to the start of the +record; \prog{data\_offset} contains the disk offset either exactly at +the requested residue, or at the start of the line containing the +requested residue; \prog{ret\_actual\_start} contains the coordinate +(1..L) of the first valid residue at or after +\prog{data\_offset}. \prog{ret\_actual\_start} is $\leq$ +\prog{requested\_start}. Returns 0 on success, non-zero on failure. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_NO\_SUBSEQS} & this file or key doesn't allow subseq lookup\\ +\prog{SSI\_ERR\_NO\_SUCH\_KEY} & key not found \\ +\prog{SSI\_ERR\_RANGE} & the requested\_start is out of bounds\\ +\prog{SSI\_ERR\_NODATA} & fread() failed, file appears to be corrupted\\ +\end{tabular} + +\item[int SSISetFilePosition(FILE *fp, SSIOFFSET *offset] + +Uses \prog{offset} to sets the file position for \prog{fp} (usually an +open sequence file) relative to the start of the file. Hides the +details of system-dependent shenanigans necessary for file positioning +in large ($>2$ GB) files. Behaves just like \prog{fseek(fp, offset, +SEEK\_SET)} for 32 bit offsets and $<2$ GB files. Returns 0 on +success, nonzero on error. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_SEEK\_FAILED} & failed to reposition the file\\ +\end{tabular} + +\item[int SSIFileInfo(SSIFILE *sfp, int fh, char **ret\_filename, int *ret\_format)] + +Given a file handle \prog{fh} in an open index file \prog{sfp}, +retrieve file name \prog{ret\_filename} and the file format +\prog{ret\_format}. \prog{ret\_filename} is a pointer to a string +maintained internally by \prog{sfp}. It should not be free'd; +\prog{SSIClose(sfp)} will take care of it. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_BADARG} & no such file n\\ +\end{tabular} + +\item[void SSIClose(SSIFILE *sfp)] + +Close an open \prog{SSIFILE *}. +\end{sreapi} + +\subsubsection{Skeleton example code for using a SSI index file:} + +\small\begin{verbatim} + SSIFILE *sfp; + FILE *fp; + int fh; + char *seqfile; + int fmt; + SSIOFFSET offset; + + SSIOpen(``foo.gsi'', &sfp); + + /* Finding an entry by name + * (by number, with SSIGetOffsetByNumber(), is analogous) + */ + SSIGetOffsetByName(sfp, ``important_key'', &fh, &offset); + SSIGetFileInfo(sfp, fh, &seqfile, &fmt); + fp = fopen(seqfile, ``r''); /* more usually SeqfileOpen(), using fmt */ + SSIFilePosition(fp, &offset); + /* read the entry from there, do whatever... */ + free(seqfile); + fclose(fp); + + SSIClose(sfp); +\end{verbatim}\normalsize + +\subsubsection{Functions for creating a SSI index file:} + +\begin{sreapi} +\item[int SSIRecommendMode(char *file)] + +Examines the file and determines whether it should be indexed with +large file support or not; returns \prog{SSI\_OFFSET\_I32} for most +files, \prog{SSI\_OFFSET\_I64} for large files, or -1 on failure. + +\item[SSIINDEX *SSICreateIndex(int mode)] + +Creates and initializes a SSI index structure. Sequence file offset +type to be used is specified by \prog{mode}, which may be either +\prog{SSI\_OFFSET\_I32} or \prog{SSI\_OFFSET\_I64}. Returns a +pointer to the new structure, or NULL on failure. The caller must free +this structure with \prog{SSIFreeIndex()} when done. + +\item[int SSIGetFilePosition(FILE *fp, int mode, SSIOFFSET *ret\_offset)] + +Fills \prog{ret\_offset} with the current disk offset of \prog{fp}, +relative to the start of the file. {mode} is the type of offset to +use; it must be either \prog{SSI\_OFFSET\_I32} or +\prog{SSI\_OFFSET\_I64}. Returns 0 on success, non-zero on error. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_NO64BIT} & 64-bit mode unsupported on this system\\ +\prog{SSI\_ERR\_TELL\_FAILED} & failed to determine position in file\\ +\end{tabular} + +\item[int SSIAddFileToIndex(SSIINDEX *g, char *filename, int fmt, +int *ret\_fh)] + +Adds the sequence file \prog{filename}, which is known to be in format +\prog{fmt}, to the index \prog{g}. Creates and returns a unique +filehandle \prog{ret\_fh} for associating primary keys with this file +using \prog{SSIAddPrimaryKeyToIndex()}. Returns 0 on success, non-zero +on failure. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_TOOMANY\_FILES} & exceeded file number limit\\ +\prog{SSI\_ERR\_MALLOC} & a malloc() failed\\ +\end{tabular} + +\item[int SSISetFileForSubseq(SSIINDEX *g, int fh, int bpl, int rpl)] + +Set \prog{SSI\_FAST\_SUBSEQ} for the file indicated by filehandle +\prog{fh} in the index \prog{g}, setting parameters \prog{bpl} and +\prog{rpl} to the values given. \prog{bpl} is the number of bytes per +sequence data line. \prog{rpl} is the number of residues per sequence +data line. Caller must be sure that \prog{bpl} and \prog{rpl} do not +change on any line of any sequence record in the file (except for the +last data line of each record). If this is not the case in this file, +\prog{SSI\_FAST\_SUBSEQ} will not work, and this routine should not be +called. Returns 0 on success, non-zero on failure. + +\item[int SSIAddPrimaryKeyToIndex(SSIINDEX *g, char *key, int +fh, SSIOFFSET *r\_off, SSIOFFSET *d\_off, int L)] + +Puts a primary key \prog{key} in the index \prog{g}, while telling the +index that this primary key is in the file associated with filehandle +\prog{fh} and its record starts at position \prog{r\_off} in that +file. + +\prog{d\_off} and \prog{L} are optional; they may be left unset by +passing NULL and 0, respectively. (If one is provided, both must be +provided.) If they are provided, \prog{d\_off} gives the position of +the first line of sequence data in the record, and \prog{L} gives +the length of the sequence in residues. They are used when +\prog{SSI\_FAST\_SUBSEQ} is set for the sequence file. If +\prog{SSI\_FAST\_SUBSEQ} is not set for the file, \prog{d\_off} and +\prog{L} will be ignored even if they are available, so it doesn't +hurt for the indexing program to provide them; typically it won't know +whether it's safe to set \prog{SSI\_FAST\_SUBSEQ} for the whole file +until the whole file has been read and every key has already been +added to the index. + +Through \prog{ret\_kh} it provides a ``handle'' - a unique +identifier for the primary key - that any subsequent calls to +\prog{SSIAddSecondaryKeyToIndex()} will use to associate one or more +secondary keys with this primary key. + +Returns 0 on success, non-zero on error. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_TOOMANY\_KEYS} & exceeded primary key limit\\ +\prog{SSI\_ERR\_TOOMANY\_FILES} & filenum exceeds file limit\\ +\prog{SSI\_ERR\_MALLOC} & a malloc() failed\\ +\end{tabular} + + +\item[int SSIAddSecondaryKeyToIndex(SSIINDEX *g, char *key, char *pkey)] + +Puts a secondary key \prog{key} in the index \prog{g}, associating it +with a primary key \prog{pkey} that has already been added to the index +by \prog{SSIAddPrimaryKeyToIndex()}. +Returns 0 on success, non-zero on error. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_TOOMANY\_KEYS} & exceeded secondary key limit\\ +\prog{SSI\_ERR\_MALLOC} & a malloc() failed\\ +\end{tabular} + + + +\item[int SSIWriteIndex(char *file, SSIINDEX *g)] + +Writes complete index \prog{g} in SSI format to a binary file +\prog{file}. Does all overhead of sorting the primary and secondary +keys, and maintaining the association of secondary keys with primary +keys during and after the sort. Returns 0 on success, non-zero on +error. + +Error codes:\\ +\begin{tabular}{ll} +\prog{SSI\_ERR\_NOFILE} & an fopen() failed\\ +\prog{SSI\_ERR\_FWRITE} & an fwrite() failed\\ +\prog{SSI\_ERR\_MALLOC} & a malloc() failed\\ +\end{tabular} + + +\item[void SSIFreeIndex(SSIINDEX *g)] + +Free an index structure. +\end{sreapi} + + +\subsubsection{Other SSI functions:} + +\begin{sreapi} +\item[char *SSIErrorString(int n)] + +Returns a pointer to an internal string corresponding to error +\prog{n}, a return code from any of the functions in the API that +return non-zero on error. +\end{sreapi} + +\subsection{Detailed specification of SSI binary format} + +There are four sections to the SSI file: +\begin{sreitems}{\textbf{Secondary keys}} +\item[\textbf{Header}] +Contains a magic number indicating GSI version number, and +various information about the number and sizes of things in the index. + +\item[\textbf{Files}] +Contains one or more \emph{file records}, one per sequence file that's +indexed. These contain information about the individual files. + +\item[\textbf{Primary keys}] +Contains one or more \emph{primary key records}, one per primary key. + +\item[\textbf{Secondary keys}] +Contains one or more \emph{secondary key records}, one per secondary key. +\end{sreitems} + +All numeric quantities are stored as unsigned integers of known size +in network (bigendian) order, for maximum crossplatform portability of +the index files. \prog{sqd\_uint16}, \prog{sqd\_uint32}, and +\prog{sqd\_uint64} are typically typedef'd as \prog{unsigned short}, +\prog{unsigned int}, and \prog{unsigned long long} or \prog{unsigned +long} at SQUID compile-time. Values may need to be cast to signed +quantities, so only half of their dynamic range is valid +(e.g. 0..32,767 for values of type \prog{sqd\_uint16}; +0..2,146,483,647 (2 billion) for \prog{sqd\_uint32}; and 0..9.22e18 (9 +million trillion) for \prog{sqd\_uint64}). These typedef's are +handled automatically by the \prog{./configure} script (see +\prog{squidconf.h.in} before configuration, \prog{squidconf.h} after +configuration). If necessary, \prog{./configure}'s guess can be +overridden in \prog{squidconf.h} after configuration. + +\subsubsection{Header section} + +The header section contains: + +\vspace{1em} +\begin{tabular}{llrr} +Variable & Description & Bytes & Type \\\hline +\prog{magic} & SSI version magic number. & 4 & \prog{sqd\_uint32}\\ +\prog{flags} & Optional behavior flags (see below) & 4 & \prog{sqd\_uint32}\\ +\prog{nfiles} & Number of files in file section. & 2 & \prog{sqd\_uint16}\\ +\prog{nprimary} & Number of primary keys. & 4 & \prog{sqd\_uint32}\\ +\prog{nsecondary} & Number of secondary keys. & 4 & \prog{sqd\_uint32}\\ +\prog{flen} & Length of filenames (incl. '\verb+\0+') & 4 & \prog{sqd\_uint32}\\ +\prog{plen} & Length of primary key names (incl. '\verb+\0+') & 4 & \prog{sqd\_uint32}\\ +\prog{slen} & Length of sec. key names (incl. '\verb+\0+') & 4 & \prog{sqd\_uint32}\\ +\prog{frecsize} & \# of bytes in a file record & 4 & \prog{sqd\_uint32}\\ +\prog{precsize} & \# of bytes in a primary key record & 4 & \prog{sqd\_uint32}\\ +\prog{srecsize} & \# of bytes in a sec. key record & 4 & \prog{sqd\_uint32}\\ +\prog{foffset} & disk offset, start of file records & \dag & \dag\\ +\prog{poffset} & disk offset, start of primary key recs & \dag & \dag\\ +\prog{soffset} & disk offset, start of sec. key records & \dag & \dag\\ +\end{tabular} +\vspace{1em} + +The optional behavior flags are: + +\vspace{1em} +\begin{tabular}{lll} +Flag & Value& Note\\ \hline +\prog{SSI\_USE64} & $1 \ll 0$ & Large sequence files; all key offsets 64 bit.\\ +\prog{SSI\_USE64\_INDEX} & $1 \ll 1$ & Large index; GSI file itself uses 64-bit offsets.\\\hline +\end{tabular} +\vspace{1em} + +The optional behavior flags define whether the SSI file uses large +file (64-bit) offsets. This issue is discussed in greater detail +below (see ``Large sequence files and large indices''). Briefly: if +\prog{SSI\_USE64} is set, the sequence file is large, and all sequence +file offsets are 64-bit integers. If \prog{SSI\_USE64\_INDEX} is +set, the index file itself is large, and \prog{foffset}, +\prog{poffset}, and \prog{soffset} (that is, all offsets within the +index file itself, indicated as \dag\ in the above table) are 64-bit +integers. \footnote{In the current API it is not expected that +\prog{SSI\_USE64\_INDEX} would ever be set. The current index-writing +API keeps the entire index in RAM (it has to sort the keys), and would +presumably have to be modified or replaced to be able to generate very +large indices.} + +The reason to explicitly record various record sizes (\prog{frecsize}, +\prog{precsize}, \prog{srecsize}) and index file positions +(\prog{foffset}, \prog{poffset}, \prog{soffset}) is to allow future +extendibility. More fields might be added without breaking older SSI +parsers. The format is meant to be both forwards- and +backwards-compatible. + +\subsubsection{File section} + +The file section consists of \prog{nfiles} file records. Each record +is \prog{frecsize} bytes long, and contains: + +\vspace{1em} +\begin{tabular}{llrr} +Variable & Description & Bytes & Type \\\hline +\prog{filename} & Name of file (possibly including full path) & \prog{flen} & char *\\ +\prog{format} & Format code for file; see squid.h for definitions & 4 & \prog{sqd\_uint32} \\ +\prog{flags} & Optional behavior flags & 4 & \prog{sqd\_uint32} \\ +\prog{bpl} & Bytes per sequence data line & 4 & \prog{sqd\_uint32} \\ +\prog{rpl} & Residues per sequence data line & 4 & \prog{sqd\_uint32} \\\hline +\end{tabular} +\vspace{1em} + +When a SSI file is written, \prog{frecsize} is equal to the sum of +the sizes above. When a SSI file is read by a parser, it is possible +that \prog{frecsize} is larger than the parser expects, if the parser +is expecting an older version of the SSI format: additional fields +may be present, which increases \prog{frecsize}. The parser will only +try to understand the data up to the \prog{frecsize} it expected to +see, but still knows the absolutely correct \prog{frecsize} for +purposes of skipping around in the index file. + +Normally the SSI index resides in the same directory as the sequence +data file(s), so \prog{filename} is relative to the location of the +SSI index. In the event this is not true, \prog{filename} can contain +a full path. + +\prog{format} is a SQUID sequence file format code; e.g. something like +\prog{SQFILE\_FASTA} or \prog{MSAFILE\_STOCKHOLM}. These constants are defined +in \prog{squid.h}. + +Only one possible optional behavior flag is defined: + +\vspace{1em} +\begin{tabular}{lll} +Flag & Value& Note\\ \hline +\prog{SSI\_FAST\_SUBSEQ} & $1 \ll 0$ & Fast subseq retrieval is possible for this file.\\\hline +\end{tabular} +\vspace{1em} + +When \prog{SSI\_FAST\_SUBSEQ} is set, \prog{bpl} and \prog{rpl} are +nonzero. They can be used to calculate the offset of subsequence +positions in the data file. This is described in the optional behavior +section below. + +\subsubsection{Primary key section} + +The primary key section consists of \prog{nprimary} records. Each +record is \prog{precsize} bytes long, and contains: + +\vspace{1em} +\begin{tabular}{llrr} +Variable & Description & Bytes & Type \\\hline +\prog{key} & Key name (seq name, identifier, accession) & \prog{plen}& char *\\ +\prog{fnum} & File number (0..nfiles-1) & 2 & \prog{sqd\_uint16}\\ +\prog{offset1} & Offset to start of record & \ddag & \ddag \\ +\prog{offset2} & Offset to start of sequence data & \ddag & \ddag \\ +\prog{len} & Length of data (e.g. seq length, residues) & 4 & \prog{sqd\_uint32} \\\hline +\end{tabular} +\vspace{1em} + +The offsets are sequence file offsets (indicated by \ddag). They are +4 bytes of type \prog{sqd\_uint32} normally, 8 bytes of type +\prog{sqd\_uint32} if \prog{SSI\_USE64} is set, and \prog{sizeof(fpos\_t)} +bytes of type \prog{fpos\_t} if \prog{SSI\_FPOS\_T} is set. + +\prog{offset2} and \prog{len} are only meaningful if \prog{SSI\_FAST\_SUBSEQ} +is set on this key's file. \prog{offset2} gives the absolute disk +position of line 0 in the sequence data. \prog{len} is necessary for +bounds checking in a subsequence retrieval, to be sure we don't try to +reposition the disk outside the valid data. + +\subsubsection{Secondary key section} + +The secondary key section consists of \prog{nsecondary} records. Each +record is \prog{srecsize} bytes long, and contains: + +\vspace{1em} +\begin{tabular}{llrr} +Variable & Description & Bytes & Type \\\hline +\prog{key} & Key name (seq name, identifier, accession) & \prog{slen}& char *\\ +\prog{pkey} & Primary key & +\prog{plen}& char *\\\hline +\end{tabular} +\vspace{1em} + +All data are kept with the primary key records. Secondary keys are +simply translated to primary keys, then the primary key has to be +looked up. + +\subsection{Optional behaviors} + +\subsubsection{Large sequence files and large indices: 64-bit operation} + +Normally a SSI index file can be no larger than 2 GB, and can index +sequence files that are no larger than 2 GB each. This is due to +limitations in the ANSI C/POSIX standards, which were developed for +32-bit operating systems and filesystems. Most modern operating +systems allow larger 64-bit file sizes, but as far as I'm aware (Dec +2000), there are no standard interfaces yet for working with positions +(offsets) in large files. On many platforms, SSI can extend to full +64-bit capabilities, but on some platforms, it cannot. To understand +the limitations (of SSI, and possibly of my understanding) you need +to understand some details about what's happening behind the SSI API +and how I understand C API's to modern 64-bit OS's and hardware. + +First, some information on ANSI C APIs for file positioning. ANSI C +provides the portable functions \prog{fseek()} and \prog{ftell()} for +manipulating simple offsets in a file. They store the offset in a +\prog{long} (which ranges up to 2 GB). The Standard says we're allowed +to do arithmetic on this value if the file is binary. ANSI C also +provides \prog{fgetpos()} and \prog{fsetpos()} which store file +positions in an opaque data type called \prog{fpos\_t}. Modern +operating systems with large file support define \prog{fpos\_t} in a +way that permits files $>$2 GB. However, \prog{fpos\_t} is an opaque +type. It has two disadvantages compared to a simple arithmetic type +like \prog{long}: first, we're not allowed to do arithmetic on it, and +second, we can't store it in a binary file in an +architecture-independent manner. We need both features for SSI, +unfortunately. \footnote{Surely the professional C community has the +same problem; does \emph{everyone} hack around \prog{fpos\_t}?} + +Therefore we have to rely on system dependent features. Most operating +systems provide a non-compliant library call that returns an +arithmetic offset. Fully 64-bit systems typically give us a 64-bit +\prog{off\_t} and functions \prog{ftello()}/\prog{fseeko()} that work +with that offset. Many systems provide a ``transitional interface'' +where all normally named functions are 32-bits, but specially named +64-bit varieties are available: e.g. \prog{off\_t} is 32 bits, but +\prog{off64\_t} is 64 bits and we have functions \prog{ftello64()} and +\prog{fseeko64()}. Some systems provide a \prog{ftell64()} and +\prog{fseek64()} that work on offsets of type \prog{long long}. Many +popular systems may even provide more than one of these models, +depending on compiler flags. + +And, unfortunately, some systems provide none of these models (FreeBSD +for example). There, we will exploit the fact that most systems +(including FreeBSD) do in fact implement \prog{fpos\_t} as a simple +arithmetic type, such as an \prog{off\_t}, so we can misuse it. + +At compile time, SQUID's \prog{./configure} script tests for the +system's capabilities for 64-bit file offsets, and configures a +section in the \prog{squidconf.h} file. (The configuration includes a +custom autoconf macro, \prog{SQ\_ARITHMETIC\_FPOS\_T()}, to test +\prog{fpos\_t} and define \prog{ARITHMETIC\_FPOS\_T} if it is.) Four +possible 64-bit models are tested in the following order; if one of +them is possible, it will be used, and the constant +\prog{HAS\_64BIT\_FILE\_OFFSETS} is set. + +\begin{enumerate} +\item has \prog{ftello()}, \prog{fseeko()}; sizeof(\prog{off\_t}) $= 8$. +\item has \prog{ftello64()}, \prog{fseeko64()}; sizeof(\prog{off64\_t}) $= 8$. +\item has \prog{ftell64()}, \prog{fseek64()} +\item \prog{fpos\_t} is an arithmetic 64-bit type; (mis)use +\prog{fgetpos()}, \prog{fsetpos()}. +\end{enumerate} + + + +\subsubsection{Fast subsequence retrieval} + +In some files (notably vertebrate chromosome contigs) the size of each +sequence is large. It may be slow to extract a subsequence by first +reading the whole sequence into memory -- or even prohibitive, if the +sequence is so large that it can't be stored in memory. + +If the sequence data file is very consistently formatted so that each +line in each record (except the last one) is of the same length, in +both bytes and residues, we can determine a disk offset of the start +of any subsequence by direct calculation. +For example, a simple well-formatted FASTA +file with 50 residues per line would have 51 bytes per sequence line +(counting the '\verb+\0+') (\prog{bpl}=51, \prog{rpl}=50). Position $i$ in a sequence +$1..L$ will be on line $l = (i-1)/\mbox{\prog{rpl}}$, and line $l$ starts at +disk offset $l * \mbox{\prog{bpl}}$ relative to the start of the sequence +data. If there are no nonsequence characters in the data line except +the terminal '\verb+\0+' (which is true iff \prog{bpl} = \prog{rpl}+1 and 1 residue = 1 +byte), position $i$ can be precisely found: + +\[ +\mbox{relative offset of residue $i$} = +\left((i-1)/\mbox{\prog{rpl}}\right)*\mbox{\prog{bpl}} + (i-1) \% \mbox{ \prog{rpl}} +\] + +Even for sequence data lines with extra characters (e.g. spaces, +coordinates, whatever), fast subsequence retrieval is possible; a +parser can be positioned at the beginning of the appropriate line $l$, +which starts at residue $(l*\mbox{\prog{rpl}}) + 1$, and it can start reading +from there (e.g. the line that $i$ is on) rather than the beginning of +the whole sequence record. + +The program that creates the index is responsible for determining if +\prog{bpl} and \prog{rpl} are consistent throughout a file; if so, it +may set the \prog{SSI\_FAST\_SUBSEQ} flag for the file. Then any record +whose primary key carries the optional data offset (\prog(offset2)) +and sequence length data is available for subsequence position +calculations by \prog{SSIGetSubseqOffset()}. + +\end{document} \ No newline at end of file diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/a2m b/forester/archive/RIO/others/hmmer/squid/Formats/a2m new file mode 100644 index 0000000..5001742 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/a2m @@ -0,0 +1,200 @@ +>GLB2_MORMR +...PIVD..SGSVSPLSDAEKNKIRAAW.DIVYKNYEKNGVDILVKFFTGTPAAQAFFPK +FKGLTTADALKKSSDVRWHAERIINAVNDAVKSMDDTEKMSMKLQELSVKHAQSFYVDRQ +YFKVLAGII.........ADTTAPGDAGFEKLMSMICILLSSAY....... +>GLBZ_CHITH +MKFIILALCVAAASALSGDQIGLVQST.YGKVKG....DSVGILYAVFKADPTIQAAFPQ +FVGK.DLDAIKGGAEFSTHAGRIVGFLGGVIDDLP...NIGKHVDALVATH.KPRGVTHA +QFNNFRAAFIAYLKGHV..DYTAAVEAAWGATFDAFFGAVFAK.......M +>HBA2_BOSMU +...V...........LSAADKGNVKAAW.GKVGGHAAEYGAEALERMFLSFPTTKTYFPH +FD.LSH.....GSAQVKGHGAKVAAALTKAVGHLDD...LPGALSELSDLHAHKLRVDPV +NFKLLSHSLLVTLASHLPSDFTPAVHASLDKFLANVSTVLTSKYR...... +>HBA2_GALCR +...V...........LSPTDKSNVKAAW.EKVGAHAGDYGAEALERMFLSFPTTKTYFPH +FD.LSH.....GSTQVKGHGKKVADALTNAVLHVDD...MPSALSALSDLHAHKLRVDPV +NFKLLRHCLLVTLACHHPAEFTPAVHASLDKFMASVSTVLTSKYR...... +>HBA4_SALIR +...S...........LSAKDKANVKAIW.GKILPKSDEIGEQALSRMLVVYPQTKAYFSH +WASVAP.....GSAPVKKHGITIMNQIDDCVGHMDD...LFGFLTKLSELHATKLRVDPT +NFKILAHNLIVVIAAYFPAEFTPEIHLSVDKFLQQLALALAEKYR...... +>HBAD_CHLME +...M...........LTADDKKLLTQLW.EKVAGHQEEFGSEALQRMFLTYPQTKTYFPH +FD.LHP.....GSEQVRGHGKKVAAALGNAVKSLDN...LSQALSELSNLHAYNLRVDPA +NFKLLAQCFQVVLATHLGKDYSPEMHAAFDKFLSAVAAVLAEKYR...... +>HBAD_PASMO +...M...........LTAEDKKLIQQIW.GKLGGAEEEIGADALWRMFHSYPSTKTYFPH +FD.LSQ.....GSDQIRGHGKKVVAALSNAIKNLDN...LSQALSELSNLHAYNLRVDPV +NFKFLSQCLQVSLATRLGKEYSPEVHSAVDKFMSAVASVLAEKYR...... +>HBAZ_HORSE +...S...........LTKAERTMVVSIW.GKISMQADAVGTEALQRLFSSYPQTKTYFPH +FD.LHE.....GSPQLRAHGSKVAAAVGDAVKSIDN...VAGALAKLSELHAYILRVDPV +NFKFLSHCLLVTLASRLPADFTADAHAAWDKFLSIVSSVLTEKYR...... +>HBA_AILME +...V...........LSPADKTNVKATW.DKIGGHAGEYGGEALERTFASFPTTKTYFPH +FD.LSP.....GSAQVKAHGKKVADALTTAVGHLDD...LPGALSALSDLHAHKLRVDPV +NFKLLSHCLLVTLASHHPAEFTPAVHASLDKFFSAVSTVLTSKYR...... +>HBA_ANSSE +...V...........LSAADKGNVKTVF.GKIGGHAEEYGAETLQRMFQTFPQTKTYFPH +FD.LQP.....GSAQIKAHGKKVAAALVEAANHIDD...IAGALSKLSDLHAQKLRVDPV +NFKFLGHCFLVVLAIHHPSLLTPEVHASMDKFLCAVATVLTAKYR...... +>HBA_COLLI +...V...........LSANDKSNVKAVF.AKIGGQAGDLGGEALERLFITYPQTKTYFPH +FD.LSH.....GSAQIKGHGKKVAEALVEAANHIDD...IAGALSKLSDLHAQKLRVDPV +NFKLLGHCFLVVVAVHFPSLLTPEVHASLDKFVLAVGTVLTAKYR...... +>HBA_ERIEU +...V...........LSATDKANVKTFW.GKLGGHGGEYGGEALDRMFQAHPTTKTYFPH +FD.LNP.....GSAQVKGHGKKVADALTTAVNNLDD...VPGALSALSDLHAHKLRVDPV +NFKLLSHCLLVTLALHHPADFTPAVHASLDKFLATVATVLTSKYR...... +>HBA_FRAPO +...V...........LSAADKNNVKGIF.GKISSHAEDYGAEALERMFITYPSTKTYFPH +FD.LSH.....GSAQVKGHGKKVVAALIEAANHIDD...IAGTLSKLSDLHAHKLRVDPV +NFKLLGQCFLVVVAIHHPSALTPEVHASLDKFLCAVGNVLTAKYR...... +>HBA_MACFA +...V...........LSPADKTNVKAAW.GKVGGHAGEYGAEALERMFLSFPTTKTYFPH +FD.LSH.....GSAQVKGHGKKVADALTLAVGHVDD...MPQALSALSDLHAHKLRVDPV +NFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR...... +>HBA_MACSI +...V...........LSPADKTNVKDAW.GKVGGHAGEYGAEALERMFLSFPTTKTYFPH +FD.LSH.....GSAQVKGHGKKVADALTLAVGHVDD...MPQALSALSDLHAHKLRVDPV +NFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR...... +>HBA_MESAU +...V...........LSAKDKTNISEAW.GKIGGHAGEYGAEALERMFFVYPTTKTYFPH +FD.VSH.....GSAQVKGHGKKVADALTNAVGHLDD...LPGALSALSDLHAHKLRVDPV +NFKLLSHCLLVTLANHHPADFTPAVHASLDKFFASVSTVLTSKYR...... +>HBA_PAGLA +...V...........LSSADKNNIKATW.DKIGSHAGEYGAEALERTFISFPTTKTYFPH +FD.LSH.....GSAQVKAHGKKVADALTLAVGHLED...LPNALSALSDLHAYKLRVDPV +NFKLLSHCLLVTLACHHPAEFTPAVHSALDKFFSAVSTVLTSKYR...... +>HBA_PHACO +...V...........LSAADKNNVKGIF.TKIAGHAEEYGAEALERMFITYPSTKTYFPH +FD.LSH.....GSAQIKGHGKKVVAALIEAVNHIDD...ITGTLSKLSDLHAHKLRVDPV +NFKLLGQCFLVVVAIHHPSALTPEVHASLDKFLCAVGTVLTAKYR...... +>HBA_PONPY +...V...........LSPADKTNVKTAW.GKVGAHAGDYGAEALERMFLSFPTTKTYFPH +FD.LSH.....GSAQVKDHGKKVADALTNAVAHVDD...MPNALSALSDLHAHKLRVDPV +NFKLLSHCLLVTLAAHLPAEFTPAVHASLDKFLASVSTVLTSKYR...... +>HBA_PROLO +...V...........LSPADKANIKATW.DKIGGHAGEYGGEALERTFASFPTTKTYFPH +FD.LSP.....GSAQVKAHGKKVADALTLAVGHLDD...LPGALSALSDLHAYKLRVDPV +NFKLLSHCLLVTLACHHPAEFTPAVHASLDKFFTSVSTVLTSKYR...... +>HBA_TRIOC +...V...........LSANDKTNVKTVF.TKITGHAEDYGAETLERMFITYPPTKTYFPH +FD.LHH.....GSAQIKAHGKKVVGALIEAVNHIDD...IAGALSKLSDLHAQKLRVDPV +NFKLLGQCFLVVVAIHHPSVLTPEVHASLDKFLCAVGNVLSAKYR...... +>HBB1_VAREX +...V..........HWTAEEKQLICSLW.GKI..DVGLIGGETLAGLLVIYPWTQRQFSH +FGNLSSPTAIAGNPRVKAHGKKVLTSFGDAIKNLDN...IKDTFAKLSELHCDKLHVDPT +NFKLLGNVLVIVLADHHGKEFTPAHHAAYQKLVNVVSHSLARRYH...... +>HBB2_TRICR +...V..........HLTAEDRKEIAAIL.GKV..NVDSLGGQCLARLIVVNPWSRRYFHD +FGDLSSCDAICRNPKVLAHGAKVMRSIVEATKHLDN...LREYYADLSVTHSLKFYVDPE +NFKLFSGIVIVCLALTLQTDFSCHKQLAFEKLMKGVSHALGHGY....... +>HBB2_XENTR +...V..........HWTAEEKATIASVW.GKV..DIEQDGHDALSRLLVVYPWTQRYFSS +FGNLSNVSAVSGNVKVKAHGNKVLSAVGSAIQHLDD...VKSHLKGLSKSHAEDLHVDPE +NFKRLADVLVIVLAAKLGSAFTPQVQAVWEKLNATLVAALSHGYF...... +>HBBL_RANCA +...V..........HWTAEEKAVINSVW.QKV..DVEQDGHEALTRLFIVYPWTQRYFST +FGDLSSPAAIAGNPKVHAHGKKILGAIDNAIHNLDD...VKGTLHDLSEEHANELHVDPE +NFRRLGEVLIVVLGAKLGKAFSPQVQHVWEKFIAVLVDALSHSYH...... +>HBB_CALAR +...V..........HLTGEEKSAVTALW.GKV..NVDEVGGEALGRLLVVYPWTQRFFES +FGDLSTPDAVMNNPKVKAHGKKVLGAFSDGLTHLDN...LKGTFAHLSELHCDKLHVDPE +NFRLLGNVLVCVLAHHFGKEFTPVVQAAYQKVVAGVANALAHKYH...... +>HBB_COLLI +...V..........HWSAEEKQLITSIW.GKV..NVADCGAEALARLLIVYPWTQRFFSS +FGNLSSATAISGNPNVKAHGKKVLTSFGDAVKNLDN...IKGTFAQLSELHCDKLHVDPE +NFRLLGDILVIILAAHFGKDFTPECQAAWQKLVRVVAHALARKYH...... +>HBB_EQUHE +...V..........QLSGEEKAAVLALW.DKV..NEEEVGGEALGRLLVVYPWTQRFFDS +FGDLSNPAAVMGNPKVKAHGKKVLHSFGEGVHHLDN...LKGTFAQLSELHCDKLHVDPE +NFRLLGNVLVVVLARHFGKDFTPELQASYQKVVAGVANALAHKYH...... +>HBB_LARRI +...V..........HWSAEEKQLITGLW.GKV..NVADCGAEALARLLIVYPWTQRFFAS +FGNLSSPTAINGNPMVRAHGKKVLTSFGEAVKNLDN...IKNTFAQLSELHCDKLHVDPE +NFRLLGDILIIVLAAHFAKDFTPDSQAAWQKLVRVVAHALARKYH...... +>HBB_MANSP +...V..........HLTPEEKTAVTTLW.GKV..NVDEVGGEALGRLLVVYPWTQRFFDS +FGDLSSPDAVMGNPKVKAHGKKVLGAFSDGLNHLDN...LKGTFAQLSELHCDKLHVDPE +NFKLLGNVLVCVLAHHFGKEFTPQVQAAYQKVVAGVANALAHKYH...... +>HBB_ORNAN +...V..........HLSGGEKSAVTNLW.GKV..NINELGGEALGRLLVVYPWTQRFFEA +FGDLSSAGAVMGNPKVKAHGAKVLTSFGDALKNLDD...LKGTFAKLSELHCDKLHVDPE +NFNRLGNVLIVVLARHFSKDFSPEVQAAWQKLVSGVAHALGHKYH...... +>HBB_RABIT +...V..........HLSSEEKSAVTALW.GKV..NVEEVGGEALGRLLVVYPWTQRFFES +FGDLSSANAVMNNPKVKAHGKKVLAAFSEGLSHLDN...LKGTFAKLSELHCDKLHVDPE +NFRLLGNVLVIVLSHHFGKEFTPQVQAAYQKVVAGVANALAHKYH...... +>HBB_SPECI +...V..........HLSDGEKNAISTAW.GKV..HAAEVGAEALGRLLVVYPWTQRFFDS +FGDLSSASAVMGNAKVKAHGKKVIDSFSNGLKHLDN...LKGTFASLSELHCDKLHVDPE +NFKLLGNMIVIVMAHHLGKDFTPEAQAAFQKVVAGVANALAHKYH...... +>HBB_SPETO +...V..........HLTDGEKNAISTAW.GKV..NAAEIGAEALGRLLVVYPWTQRFFDS +FGDLSSASAVMGNAKVKAHGKKVIDSFSNGLKHLDN...LKGTFASLSELHCDKLHVDPE +NFKLLGNMIVIVMAHHLGKDFTPEAQAAFQKVVAGVANALSHKYH...... +>HBB_SUNMU +...V..........HLSGEEKACVTGLW.GKV..NEDEVGAEALGRLLVVYPWTQRFFDS +FGDLSSASAVMGNPKVKAHGKKVLHSLGEGVANLDN...LKGTFAKLSELHCDKLHVDPE +NFRLLGNVLVVVLASKFGKEFTPPVQAAFQKVVAGVANALAHKYH...... +>HBB_TACAC +...V..........HLSGSEKTAVTNLW.GHV..NVNELGGEALGRLLVVYPWTQRFFES +FGDLSSADAVMGNAKVKAHGAKVLTSFGDALKNLDN...LKGTFAKLSELHCDKLHVDPE +NFNRLGNVLVVVLARHFSKEFTPEAQAAWQKLVSGVSHALAHKYH...... +>HBB_TRIIN +...V..........HLTPEEKALVIGLW.AKV..NVKEYGGEALGRLLVVYPWTQRFFEH +FGDLSSASAIMNNPKVKAHGEKVFTSFGDGLKHLED...LKGAFAELSELHCDKLHVDPE +NFRLLGNVLVCVLARHFGKEFSPEAQAAYQKVVAGVANALAHKYH...... +>HBB_TUPGL +...V..........HLSGEEKAAVTGLW.GKV..DLEKVGGQSLGSLLIVYPWTQRFFDS +FGDLSSPSAVMSNPKVKAHGKKVLTSFSDGLNHLDN...LKGTFAKLSELHCDKLHVDPE +NFRLLGNVLVRVLACNFGPEFTPQVQAAFQKVVAGVANALAHKYH...... +>HBB_URSMA +...V..........HLTGEEKSLVTGLW.GKV..NVDEVGGEALGRLLVVYPWTQRFFDS +FGDLSSADAIMNNPKVKAHGKKVLNSFSDGLKNLDN...LKGTFAKLSELHCDKLHVDPE +NFKLLGNVLVCVLAHHFGKEFTPQVQAAYQKVVAGVANALAHKYH...... +>HBE_PONPY +...V..........HFTAEEKAAVTSLW.SKM..NVEEAGGEALGRLLVVYPWTQRFFDS +FGNLSSPSAILGNPKVKAHGKKVLTSFGDAIKNMDN...LKTTFAKLSELHCDKLHVDPE +NFKLLGNVMVIILATHFGKEFTPEVQAAWQKLVSAVAIALAHKYH...... +>HBF1_URECA +..............GLTTAQIKAIQDHWFLNIKGCLQAAADSIFFKYLTAYPGDLAFFHK +FSSV.PLYGLRSNPAYKAQTLTVINYLDKVVDALGG..NAGALMKAKVPSH.DAMGITPK +HFGQLLKLVGGVFQEEF..SADPTTVAAWGDAAGVLVAAM..........K +>LGB1_PEA +GFTDKQEALVNSSSE.FKQNLPGYSILFYTIVLEKAP..AAKGL................ +FSFLKDTAGVEDSPKLQAHAEQVFGLVRDSAAQLRTKGEVVLGNATLGAIHVQKGVTNP. +HFVVVKEALLQTIKKASGNNWSEELNTAWEVAYDGLATAIKKAMKT....A +>LGB1_VICFA +GFTEKQEALVNSSSQLFKQNPSNYSVLFYTIILQKAP..TAKAM................ +FSFLKDSAGVVDSPKLGAHAEKVFGMVRDSAVQLRATGEVVLDGKD.GSIHIQKGVLDP. +HFVVVKEALLKTIKEASGDKWSEELSAAWEVAYDGLATAIK....A....A +>MYG_ESCGI +...V...........LSDAEWQLVLNIW.AKVEADVAGHGQDILIRLFKGHPETLEKFDK +FKHLKTEAEMKASEDLKKHGNTVLTALGGILKKKGH...HEAELKPLAQSHATKHKIPIK +YLEFISDAIIHVLHSRHPGDFGADAQAAMNKALELFRKDIAAKYKELGFQG +>MYG_HORSE +...G...........LSDGEWQQVLNVW.GKVEADIAGHGQEVLIRLFTGHPETLEKFDK +FKHLKTEAEMKASEDLKKHGTVVLTALGGILKKKGH...HEAELKPLAQSHATKHKIPIK +YLEFISDAIIHVLHSKHPGNFGADAQGAMTKALELFRNDIAAKYKELGFQG +>MYG_LYCPI +...G...........LSDGEWQIVLNIW.GKVETDLAGHGQEVLIRLFKNHPETLDKFDK +FKHLKTEDEMKGSEDLKKHGNTVLTALGGILKKKGH...HEAELKPLAQSHATKHKIPVK +YLEFISDAIIQVLQNKHSGDFHADTEAAMKKALELFRNDIAAKYKELGFQG +>MYG_MOUSE +...G...........LSDGEWQLVLNVW.GKVEADLAGHGQEVLIGLFKTHPETLDKFDK +FKNLKSEEDMKGSEDLKKHGCTVLTALGTILKKKGQ...HAAEIQPLAQSHATKHKIPVK +YLEFISEIIIEVLKKRHSGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +>MYG_MUSAN +..................VDWEKVNSVW.SAVESDLTAIGQNILLRLFEQYPESQNHFPK +FKN.KSLGELKDTADIKAQADTVLSALGNIVKKKGS...HSQPVKALAATHITTHKIPPH +YFTKITTIAVDVLSEMYPSEMNAQVQAAFSGAFKIICSDIEKEYKAANFQG +>MYG_PROGU +...G...........LSDGEWQLVLNVW.GKVEGDLSGHGQEVLIRLFKGHPETLEKFDK +FKHLKAEDEMRASEELKKHGTTVLTALGGILKKKGQ...HAAELAPLAQSHATKHKIPVK +YLEFISEAIIQVLQSKHPGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +>MYG_SAISC +...G...........LSDGEWQLVLNIW.GKVEADIPSHGQEVLISLFKGHPETLEKFDK +FKHLKSEDEMKASEELKKHGTTVLTALGGILKKKGQ...HEAELKPLAQSHATKHKIPVK +YLELISDAIVHVLQKKHPGDFGADAQGAMKKALELFRNDMAAKYKELGFQG diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/clustal b/forester/archive/RIO/others/hmmer/squid/Formats/clustal new file mode 100644 index 0000000..cebd347 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/clustal @@ -0,0 +1,47 @@ +CLUSTAL W(1.5) multiple sequence alignment + + +REF -----GCGGATTTAGCTCAGTTGGGAGAGCGCCAGACTGAAAATCTGGAGGTC-CTGTGT +A0380 -----GGGCTCGTAGATCAG-CGGTAGATCGCTTCCTTCGCAAGGAAGAGGCC-CTGGGT +A0500 -----GGGCTCGTAGATCAG-TGGCAGATCGCTTCCTTCGCAAGGAAGAGGCC-CGGGGT +A0501 -----GGGCTCGTAGATCAG-GGGTAGATCACTCCCTTGGCATGGGAGAGGCC-CCGGGT +A0502 -----GGGCCCATAGCTCAG-TGGTAGAGTGCCTCCTTTGCAAGGAGGATGCC-CAGGGT +A1140 -----GGGCCCTAAGCTCAGCTGGGAGAGCACCTGCCTTGCACGCAGGGGGTC-GACGGT +A1180 -----GGGCCCTTAGCTCAGCTGGGAGAGCACCTGCCTTGCACGCAGGGGGTC-GACGGT +A1540 -----GGAGCCTTAGCTCAGCTGGGAGAGCGCCTGCTTTGCACGCAGGAGGTC-AGCGGT +A1660 -----GGGGCTATAGCTCAGCTGGGAGAGCGCTTGCATGGCATGCAAGAGGTC-AGCGGT +A1661 -----GGGGGCATAGCTCAGCTGGGAGAGCGCCTGCTTTGCACGCAGGAGGTC-TGCGGT +A1662 -----GGGGCTATAGCTCAGCTGGGAGAGCGCCTGCTTTGCACGCAGGAGGTC-TGCGGT +A3920 -----GGGGGTATAGTATAATTGGTAGTACAGCAATCTTGCTCAATGCTTGTC--AAGGT +A6360 -----GGGCGTGTGGCGTAGTTGGTAGCGCGTTCGCTTAGCATGCGAAAGGTC-TCCGGT +A6400 -----GGGCGTGTGGCGTAGTCGGTAGCGCGCTCCCTTAGCATGGGAGAGGTC-TCCGGT +A7680 -----GGGGGCGTAGCTCAGATGGTAGAGCGCTCGCTTAGCATGTGAGAGGTA-CCGGGA +A7681 -----GGGGGCGTAGCTCAGATGGTAGAGCGCTCGCTTAGCATGCGAGAGGTA-CCGGGA +A9990 -----GGGGGATTAGCTCAAATGGTAGAGCGCTCGCTTAGCATGCGAGAGGTA-GCGGGA +A9991 -----GGGGAATTAGCTCAAATGGTAGAGCGCTCGCTTAGCATGCGAGAGGTA-GCGGGA +C0500 GCCAAGGTGGCAGAATTCGGC--CCAACGCATCCGCCTGCAGAGCGGAACCCCCGCCGGT +C1140 -----GGCAACAAGGCCAAGCGGCTAAGGCATGGGTCTGCAACACCCTGATC--ATCGGT + * * * * + +REF TCGATCCACAGAATTCGCACCA +A0380 TCAAATCCCAGCGAGTCCACCA +A0500 TCAAATCCCCGCGAGTCCACCA +A0501 TCAAATCCCGGCGAGTCCACCA +A0502 TCGAATCCCTGTGGGTCCACCA +A1140 TCGATCCCGTTAGGGTCCACCA +A1180 TCGATCCCGTTAGGGTCCACCA +A1540 TCGATCCCGCTAGGCTCCACCA +A1660 TCGATCCCGCTTAGCTCCACCA +A1661 TCGATCCCGCGCGCTCCCACCA +A1662 TCGATCCCGCATAGCTCCACCA +A3920 TCAAATCCTTGTATCTCCACCA +A6360 TCGACTCCGGACTCGTCCACCA +A6400 TCGATTCCGGACTCGTCCACCA +A7680 TCGATACCCGGCGCCTCCACCA +A7681 TCGATACCCGGCGCCTCCACCA +A9990 TCGATGCCCGCATCCTCCACCA +A9991 TCGATGCCCGCATTCTCCACCA +C0500 TCAAATCCGGCCCTTGGCTCCA +C1140 TCGAATCCGATTGTTGCCTCCA + ** * * * *** + diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/embl b/forester/archive/RIO/others/hmmer/squid/Formats/embl new file mode 100644 index 0000000..717a99e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/embl @@ -0,0 +1,155 @@ +ID XXPHA21 standard; DNA; PHG; 1635 BP. +XX +AC X02501; M23775; +XX +SV X02501.1 +XX +DT 28-JAN-1986 (Rel. 08, Created) +DT 12-SEP-1993 (Rel. 36, Last updated, Version 3) +XX +DE Bacteriophage 21 DNA for left end sequence with genes 1 and 2 +XX +KW overlapping genes. +XX +OS Bacteriophage 21 +OC Viruses; dsDNA viruses, no RNA stage; Tailed phages; Siphoviridae. +XX +RN [1] +RP 1-1635 +RX MEDLINE; 85237525. +RA Miller G., Feiss M.; +RT "Sequence of the left end of phage 21 DNA"; +RL J. Mol. Biol. 183:246-249(1985). +XX +DR SWISS-PROT; P36693; TERL_BPP21. +DR SWISS-PROT; P36694; TERS_BPP21. +XX +CC Data kindly reviewed (06-MAR-1986) by M. Feiss +XX +FH Key Location/Qualifiers +FH +FT source 1..1635 +FT /db_xref="taxon:10743" +FT /organism="Bacteriophage 21" +FT misc_feature 1..177 +FT /note="bacteriophage 21 cos segment" +FT misc_feature complement(31..41) +FT /note="integrative host factor (IHF) binding sequence 1" +FT misc_feature 75..85 +FT /note="IHF binding sequence 2" +FT misc_feature 175..185 +FT /note="IHF binding sequence 3" +FT RBS 178..181 +FT /note="pot. SD-sequence" +FT CDS 189..737 +FT /db_xref="SWISS-PROT:P36694" +FT /note="gp 1 (aa 1-182)" +FT /transl_table=11 +FT /protein_id="CAA26342.1" +FT /translation="MKVNKKRLAEIFNVDPRTIERWQSQGLPCASKGSKGIESVFDTAM +FT AIQWYAQRETDIENEKLRKELDDLRAAAESDLQPGTIDYERYRLTKAQADAQELKNARE +FT DGVVLETELFTFILQRVAQEISGILVRVPLTLQRKYPDISPSHLDVVKTEIAKASNVAA +FT KAGENVGGWIDDFRRAEGS" +FT RBS 699..702 +FT /note="pot. SD-sequence" +FT CDS 709..>1635 +FT /db_xref="SWISS-PROT:P36693" +FT /note="gp 2 (aa 1-309)" +FT /transl_table=11 +FT /protein_id="CAA26343.1" +FT /translation="MISDAQKAANAAGAIATGLLSLIIPVPLTTVQWANKHYYLPKESS +FT YTPGRWETLPFQVGIMNCMGNDLIRTVNLIKSARVGYTKMLLGVEAYFIEHKSRNSLLF +FT QPTDSAAEDFMKSHVEPTIRDVPALLELAPWFGRKHRDNTLTLKRFSSGVGFWCLGGAA +FT AKNYREKSVDVVCYDELSSFEPDVEKEGSPTLLGDKRIEGSVWPKSIRGSTPKIKGSCQ +FT IEKAANESAHFMRFYVPCPHCGEEQYLKFGDDASPFGLKWEKNKPESVFYLCEHHGCVI +FT HQSELDQSNGRWICENTGMWTRDGLMFF" +XX +SQ Sequence 1635 BP; 411 A; 356 C; 436 G; 432 T; 0 other; + gggcggcgac ctcgcggttt ttcactattt atgaaaattt ttcagggaaa atcgtgtcgg 60 + tacttctcga atataacttt ttgttttttt taatattgca tccgtaaagg tccgacatga 120 + aagtgtccga aaatgccttt ttctggcgtt ttcatgtcgg gccttgtatt tgataatggg 180 + ttgttttcat gaaggttaat aaaaagaggc ttgccgaaat tttcaacgtg gacccgcgga 240 + cgattgaacg ctggcagtct cagggactcc cttgcgcctc caaaggtagt aagggcattg 300 + aatctgtatt tgatactgcc atggcaattc agtggtatgc gcagagggaa actgatatcg 360 + aaaacgaaaa gctccgcaaa gaactggacg atttgcgtgc ggcagcggag tcagatttac 420 + aacccggcac cattgactat gaacgctacc ggctcacaaa agcgcaggca gatgcgcagg 480 + aactgaaaaa tgcccgtgaa gacggagtag tgctggaaac tgaactgttt accttcattc 540 + tgcaacgtgt ggcacaggag atttcgggga tacttgtgcg tgtgccgttg acattacagc 600 + gtaaatatcc ggacatttca ccatcacacc ttgatgtggt gaaaactgaa atcgcgaaag 660 + cctccaatgt tgcagctaag gccggtgaaa acgtgggcgg gtggatcgat gatttcagac 720 + gcgcagaagg cagctaatgc agccggtgcg atagctacag ggcttttatc tctcattatt 780 + cctgttccac tgacgacagt tcagtgggcc aataaacatt attaccttcc taaagagtcg 840 + tcttataccc cggggcgatg ggaaacactg ccgtttcagg ttggcatcat gaactgtatg 900 + ggcaacgatc tgattcgcac ggttaacctg attaaatctg cccgtgttgg ttatacaaag 960 + atgttgctgg gagtggaggc ttattttatt gagcataaat cacgcaacag ccttcttttt 1020 + cagcccacgg actcagctgc tgaagatttt atgaaatctc atgttgagcc aacgataagg 1080 + gatgttcctg cattgctgga gctggctcca tggttcggaa gaaaacaccg cgataatacg 1140 + ctcaccctga agcgtttttc ctccggtgtg gggttctggt gtctgggtgg tgcggcagca 1200 + aaaaactacc gtgaaaaatc cgtggatgtg gtctgttatg acgagctttc ctcgttcgaa 1260 + ccggatgttg aaaaagaggg ttcgccaacc ctgctggggg ataaacgtat tgagggctct 1320 + gtatggccaa aatccattcg cggctcgacg ccaaaaatca aaggctcctg tcagatcgaa 1380 + aaagccgcta acgagtcggc acacttcatg cgtttttatg tgccctgtcc gcactgtggg 1440 + gaggagcagt atctgaaatt tggcgatgat gcctcgcctt tcggtcttaa gtgggagaag 1500 + aataagccag aaagtgtttt ctacctttgc gagcatcatg gctgtgtgat ccatcagtct 1560 + gagcttgacc agagtaacgg gcggtggatc tgtgaaaaca cgggcatgtg gacccgtgac 1620 + ggcctgatgt ttttc 1635 +// +ID XXPHI80 standard; DNA; PHG; 233 BP. +XX +AC X01639; +XX +SV X01639.1 +XX +DT 02-JUL-1986 (Rel. 09, Created) +DT 02-JUL-1986 (Rel. 09, Last updated, Version 1) +XX +DE Bacteriophage phi 80 DNA-fragment with replication origin +XX +KW origin of replication. +XX +OS Bacteriophage phi-80 +OC Viruses; dsDNA viruses, no RNA stage; Tailed phages; Siphoviridae; +OC Lambda phage group; bacteriophage lambda. +XX +RN [1] +RP 1-233 +RX MEDLINE; 79135017. +RA Grosschedl R., Hobom G.; +RT "DNA sequences and structural homologies of the replication origins of +RT lambdoid bacteriophages"; +RL Nature 277:621-627(1979). +XX +FH Key Location/Qualifiers +FH +FT source 1..233 +FT /db_xref="taxon:10713" +FT /organism="Bacteriophage phi-80" +FT rep_origin 40..187 +FT /note="origin of replication of phi 21" +FT misc_feature 40..128 +FT /note="pot. binding site for initiator protein" +FT repeat_region 50..55 +FT /note="multiple repeated sequence I" +FT misc_feature 61..66 +FT /note="inverted repeat of sequence I" +FT repeat_region 71..76 +FT /note="direct repeat of I" +FT misc_feature 82..87 +FT /note="inverted repeat of I" +FT repeat_region 92..97 +FT /note="direct repeat of I" +FT misc_feature 103..108 +FT /note="inverted repeat of I" +FT repeat_region 113..117 +FT /note="imp. direct repeat of I" +FT misc_feature 129..155 +FT /note="pot. region of replicational primer start site" +FT misc_feature 156..187 +FT /note="pot. binding site for initiator protein" +XX +SQ Sequence 233 BP; 91 A; 51 C; 48 G; 43 T; 0 other; + ggaccaaata aaaacatctc agaatggtgc atcctcaaaa cgagggaaaa tcccctaaaa 60 + cgagggataa aacatccctc aaattggggg attgctatcc ctcaaaacag ggggacacaa 120 + aagacactat tacaaaagaa aaaagaaaag attattcgtc agagaattct ggcgaatcct 180 + ctgaccagcc agaaaacgac ctttctgtgg tgaaaccgga tgctgcaatt cag 233 +// diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/fasta b/forester/archive/RIO/others/hmmer/squid/Formats/fasta new file mode 100644 index 0000000..783cf51 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/fasta @@ -0,0 +1,26 @@ +>AC3.1 CE05131 (CAMBRIDGE) +MAQTLLSRHFRGVNCYFIFLNFAGWLMDLHLSTFMQFIPLFPVFGGYCTGLLTQIFRIDDSFQTTYTAFTICLVASALNS +CFVRKHQAISKISSKYLLDNVTYCIVIFLLNIYPVIAASLLYLSMLNKSEQVELVKSVYPNLVDKFASLPNYVVFDSNIW +AIVFFAFIFFGCTYTLVLIVTTTYQMFKILDDNRKHISASNYAKHRATLRSLLAQFTTCFLIVGPASLFSLLVVIRYEHS +QVATHWTIVALTLHSSANAIIIPLRIISISTVYSPEYKNSNGAKYCSNNNNPLTSNFPSFKLVNKLFRLLMILFYYFKLK +VPDLLSFCDFTHFDNPESKFYKIHIAKIRLNCSLIF +>AC3.2 CE05132 UDP-GLUCURONOSYLTRANSFERASE (CAMBRIDGE) +MLHFLSVLRSEETNFLKISKLKKLKTCILNFSIKYGLFEFVKVNHQISILGMYTFLFLLLSLLAVDAGKILVYSPSISRS +HLISNGRIADALVDAGHDVVMFITEYEPLTEFTGTKKAKVITMKGFSTKFAEDMDGIGEYLLSSSRLSFLERLMFEKTCT +GACDDLMTRREELEQLRAYNFDVAFSEQIDLCGVGIVRYLGIKNHLWISTTPIMDAVSYNLGIPAPSSYVPTIEENDNGD +KMDFWQRTFNLYMKIGSILIHRYGTDGTTEVFRKYIPDFPNVREIAANSSLCFVNSDEVLDLPRPTITKAIYVGGLGIPK +VSKPLDKKFTNIMSKGKEGVVIISLGSIIPFGDLPAAAKEGVLRAIQEISDYHFLIKIAKGDNNTKKLVEGIKNVDVAEW +LPQVDILSHPRLKLFVMHGGINGLVETAIQAVPTVIVPVFADQFRNGRMVEKRGIGKVLLKLDIGYESFKNTVLTVLNTP +SYKKNAIRIGKMMRDKPFSPEERLTKWTQFAIDHGVLEELHVEGSRLNTIIYYNLDVIAFVLFVFVAVLHVFIYAFKFLC +CDCYDLISYSSPSSCSFSSILVYSPSISRSHLISNGRIADALVDAGHDVVMFITEYEPLTEFTGTKKAKVRSTMIIQWTI +LGSTLLLIQEQIFWKGLCTKNGSLIFVMVICFKILNTKSNILNLDLMARREELEQLRAYNFDVAFSEQIDLCGVRIVRYL +GIKNHLWISTTPIMDAVSYNLGIPAPSSYVPTIEENDNGDKMDFWQRTFSLYMKIGAILIHRYATDSTTEVFRKYIPDFP +NVREIAANSSLCFVNSDEVLDLPRLTITKTIYVGGLGTPNISQHLDNVFAKIMSKGKRGVIIISLGSFVQFGDFPVNIKK +EVFRAISELSEYHFLIKISKDDTNTKTLTKEISNVDLVHWFPQVDLLSNPRLKLFIMHGGINGLVEKFF +>AC3.3 CE05133 (CAMBRIDGE) +MRFIAIAALIASSVLLAEATTIRDKRQSCGCAPRVQPSCSCQRTTYTQPQQYSCSCQNTAPVQKSCSCAQPVQQQTYQIQ +ASQCAPACQQSCQNQCQSAPSVSQCQSTCQQSCQTSSCYTPTTPAPVQCQPSCMPACEQSCVVQTPAPVQCVPQCQQQCQ +QQCVQTQPIQQCQPQCQQQCVQQCAPTTTAAPQIIKINMEISAQCVPQCQQSCQQQCVQQQVPAQQCNQQCTQQCQTTCQ +QAVPQCQQQCAPQCQQPSAPQCQQCQNTCQQAAPVCQQQCAPQCQQQSAPACQQCQTSCQQTQQCQQQCTPQCQQPSAPQ +CQQCQSACQAPVATTAAPQVVTIILEASVSQSAQCEPQCQQSCQQQCVQQQQPMQQCAPACTQSCSQSCSAAQPAQMPCQ +TQSVNSCSCQQNYSPCGNGQCCKRK diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/formattest.pl b/forester/archive/RIO/others/hmmer/squid/Formats/formattest.pl new file mode 100755 index 0000000..9eafaac --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/formattest.pl @@ -0,0 +1,97 @@ +#! /usr/local/bin/perl + +$binpath = shift; + +# Suck in the regression data on our file format test suite. +# + +print "Format test suite...\t"; + +open(DAT,"regression.dat") || die "failed to open regression.dat"; +$nfiles = 0; +while () { + if (/^\#/) { next; } + if (/^(\S+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\S+)/) { + $filename[$nfiles] = $1; + $format[$nfiles] = $2; + $seqtype[$nfiles] = $3; + $nseq[$nfiles] = $4; + $nres[$nfiles] = $5; + $shortest[$nfiles] = $6; + $longest[$nfiles] = $7; + if ($8 eq "yes") { $autodetect[$nfiles] = 1; } else { $autodetect[$nfiles] = 0; } + if ($9 eq "yes") { $is_alignment[$nfiles] = 1; } else { $is_alignment[$nfiles] = 0; } + if ($10 eq "yes") { $is_singleseq[$nfiles] = 1; } else { $is_singleseq[$nfiles] = 0; } + $nfiles++; + } +} +close(DAT); + +# Test 1. +# Run seqstat on every file in two modes; +# autodetecting (if format allows it), then forcing a format with --informat. +# +for ($i = 0; $i < $nfiles; $i++) { + if ($autodetect[$i]) { + $output = `$binpath/seqstat $filename[$i]`; + if ($? != 0) { die "seqstat failed, autodetecting, on $filename[$i]"; } + ($ns, $nr, $fr, $to) = &parse_seqstat($output); + if ($ns != $nseq[$i] || + $nr != $nres[$i] || + $fr != $shortest[$i] || + $to != $longest[$i]) + { die "seqstat regression failed, autodetecting, on $filename[$i]"; } + } + $output = `$binpath/seqstat --informat $format[$i] $filename[$i]`; + if ($? != 0) { die "seqstat failed, using --informat, on $filename[$i]"; } + ($ns, $nr, $fr, $to) = &parse_seqstat($output); + if ($ns != $nseq[$i] || + $nr != $nres[$i] || + $fr != $shortest[$i] || + $to != $longest[$i]) + { die "seqstat regression failed, using --informat, on $filename[$i]"; } +} + +# Test 2. +# Reformatting tests. +# +for ($i = 0; $i < $nfiles; $i++) { + for ($j = 0; $j < $nfiles; $j++) { + if (! $is_alignment[$i] && $is_alignment[$j]) { next; } # can't convert unaligned to aligned + if (! $is_singleseq[$i] && $is_singleseq[$j]) { next; } # can't convert multiple seqs to single seq format + + `$binpath/sreformat --informat $format[$i] $format[$j] $filename[$i] > formattest.tmp`; + if ($? != 0) { die "sreformat failed ($format[$i] to $format[$j]) on $filename[$i]"; } + $output = `$binpath/seqstat --informat $format[$j] formattest.tmp`; + if ($? != 0) { die "seqstat failed after sreformat ($format[$i] to $format[$j]) on $filename[$i]"; } + ($ns, $nr, $fr, $to) = &parse_seqstat($output); + if ($ns != $nseq[$i] || + $nr != $nres[$i] || + $fr != $shortest[$i] || + $to != $longest[$i]) + { die "seqstat regression failed after sreformat ($format[$i] to $format[$j]) on $filename[$i]"; } + } +} + +print "passed.\n"; +unlink "formattest.tmp"; + + +# Function: parse_seqstat(file) +# +# Returns the number of sequences in the file, +# and their maximum and minimum length, and their avg. len. +# Dies if 'seqstat' fails. +# +sub parse_seqstat { + local($output) = shift; + my ($nseq, $nres, $fromlen, $tolen); + + if ($output =~ /Number of sequences:\s+(\d+)/) {$nseq = $1; } + if ($output =~ /Total # residues:\s+(\d+)/) {$nres = $1; } + if ($output =~ /Smallest:\s+(\d+)/) {$fromlen = $1; } + if ($output =~ /Largest:\s+(\d+)/) {$tolen = $1; } + ($nseq, $nres, $fromlen, $tolen); +} + + diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/gcg b/forester/archive/RIO/others/hmmer/squid/Formats/gcg new file mode 100644 index 0000000..0affa1f --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/gcg @@ -0,0 +1,397 @@ + Free format documentation can precede a GCG file. + In principle it's possible for this documentation to confuse + Babelfish autodetection, if it looks like the header of + a different sequence file format. + +HIVHXB2CG Length: 9718 March 10, 1993 14:11 Type: N Check: 1730 .. + + 1 TGGAAGGGCT AATTCACTCC CAACGAAGAC AAGATATCCT TGATCTGTGG + + 51 ATCTACCACA CACAAGGCTA CTTCCCTGAT TAGCAGAACT ACACACCAGG + + 101 GCCAGGGATC AGATATCCAC TGACCTTTGG ATGGTGCTAC AAGCTAGTAC + + 151 CAGTTGAGCC AGAGAAGTTA GAAGAAGCCA ACAAAGGAGA GAACACCAGC + + 201 TTGTTACACC CTGTGAGCCT GCATGGAATG GATGACCCGG AGAGAGAAGT + + 251 GTTAGAGTGG AGGTTTGACA GCCGCCTAGC ATTTCATCAC ATGGCCCGAG + + 301 AGCTGCATCC GGAGTACTTC AAGAACTGCT GACATCGAGC TTGCTACAAG + + 351 GGACTTTCCG CTGGGGACTT TCCAGGGAGG CGTGGCCTGG GCGGGACTGG + + 401 GGAGTGGCGA GCCCTCAGAT CCTGCATATA AGCAGCTGCT TTTTGCCTGT + + 451 ACTGGGTCTC TCTGGTTAGA CCAGATCTGA GCCTGGGAGC TCTCTGGCTA + + 501 ACTAGGGAAC CCACTGCTTA AGCCTCAATA AAGCTTGCCT TGAGTGCTTC + + 551 AAGTAGTGTG TGCCCGTCTG TTGTGTGACT CTGGTAACTA GAGATCCCTC + + 601 AGACCCTTTT AGTCAGTGTG GAAAATCTCT AGCAGTGGCG CCCGAACAGG + + 651 GACCTGAAAG CGAAAGGGAA ACCAGAGCTC TCTCGACGCA GGACTCGGCT + + 701 TGCTGAAGCG CCCGCACGGC AAGAGGCGAG GGGCGGCGAC TGGTGAGTAC + + 751 GCCAAAAATT TTGACTAGCG GAGGCTAGAA GGAGAGAGAT GGGTGCGAGA + + 801 GCGTCAGTAT TAAGCGGGGG AGAATTAGAT CGATGGGAAA AAATTCGGTT + + 851 AAGGCCAGGG GGAAAGAAAA AATATAAATT AAAACATATA GTATGGGCAA + + 901 GCAGGGAGCT AGAACGATTC GCAGTTAATC CTGGCCTGTT AGAAACATCA + + 951 GAAGGCTGTA GACAAATACT GGGACAGCTA CAACCATCCC TTCAGACAGG + + 1001 ATCAGAAGAA CTTAGATCAT TATATAATAC AGTAGCAACC CTCTATTGTG + + 1051 TGCATCAAAG GATAGAGATA AAAGACACCA AGGAAGCTTT AGACAAGATA + + 1101 GAGGAAGAGC AAAACAAAAG TAAGAAAAAA GCACAGCAAG CAGCAGCTGA + + 1151 CACAGGACAC AGCAATCAGG TCAGCCAAAA TTACCCTATA GTGCAGAACA + + 1201 TCCAGGGGCA AATGGTACAT CAGGCCATAT CACCTAGAAC TTTAAATGCA + + 1251 TGGGTAAAAG TAGTAGAAGA GAAGGCTTTC AGCCCAGAAG TGATACCCAT + + 1301 GTTTTCAGCA TTATCAGAAG GAGCCACCCC ACAAGATTTA AACACCATGC + + 1351 TAAACACAGT GGGGGGACAT CAAGCAGCCA TGCAAATGTT AAAAGAGACC + + 1401 ATCAATGAGG AAGCTGCAGA ATGGGATAGA GTGCATCCAG TGCATGCAGG + + 1451 GCCTATTGCA CCAGGCCAGA TGAGAGAACC AAGGGGAAGT GACATAGCAG + + 1501 GAACTACTAG TACCCTTCAG GAACAAATAG GATGGATGAC AAATAATCCA + + 1551 CCTATCCCAG TAGGAGAAAT TTATAAAAGA TGGATAATCC TGGGATTAAA + + 1601 TAAAATAGTA AGAATGTATA GCCCTACCAG CATTCTGGAC ATAAGACAAG + + 1651 GACCAAAGGA ACCCTTTAGA GACTATGTAG ACCGGTTCTA TAAAACTCTA + + 1701 AGAGCCGAGC AAGCTTCACA GGAGGTAAAA AATTGGATGA CAGAAACCTT + + 1751 GTTGGTCCAA AATGCGAACC CAGATTGTAA GACTATTTTA AAAGCATTGG + + 1801 GACCAGCGGC TACACTAGAA GAAATGATGA CAGCATGTCA GGGAGTAGGA + + 1851 GGACCCGGCC ATAAGGCAAG AGTTTTGGCT GAAGCAATGA GCCAAGTAAC + + 1901 AAATTCAGCT ACCATAATGA TGCAGAGAGG CAATTTTAGG AACCAAAGAA + + 1951 AGATTGTTAA GTGTTTCAAT TGTGGCAAAG AAGGGCACAC AGCCAGAAAT + + 2001 TGCAGGGCCC CTAGGAAAAA GGGCTGTTGG AAATGTGGAA AGGAAGGACA + + 2051 CCAAATGAAA GATTGTACTG AGAGACAGGC TAATTTTTTA GGGAAGATCT + + 2101 GGCCTTCCTA CAAGGGAAGG CCAGGGAATT TTCTTCAGAG CAGACCAGAG + + 2151 CCAACAGCCC CACCAGAAGA GAGCTTCAGG TCTGGGGTAG AGACAACAAC + + 2201 TCCCCCTCAG AAGCAGGAGC CGATAGACAA GGAACTGTAT CCTTTAACTT + + 2251 CCCTCAGGTC ACTCTTTGGC AACGACCCCT CGTCACAATA AAGATAGGGG + + 2301 GGCAACTAAA GGAAGCTCTA TTAGATACAG GAGCAGATGA TACAGTATTA + + 2351 GAAGAAATGA GTTTGCCAGG AAGATGGAAA CCAAAAATGA TAGGGGGAAT + + 2401 TGGAGGTTTT ATCAAAGTAA GACAGTATGA TCAGATACTC ATAGAAATCT + + 2451 GTGGACATAA AGCTATAGGT ACAGTATTAG TAGGACCTAC ACCTGTCAAC + + 2501 ATAATTGGAA GAAATCTGTT GACTCAGATT GGTTGCACTT TAAATTTTCC + + 2551 CATTAGCCCT ATTGAGACTG TACCAGTAAA ATTAAAGCCA GGAATGGATG + + 2601 GCCCAAAAGT TAAACAATGG CCATTGACAG AAGAAAAAAT AAAAGCATTA + + 2651 GTAGAAATTT GTACAGAGAT GGAAAAGGAA GGGAAAATTT CAAAAATTGG + + 2701 GCCTGAAAAT CCATACAATA CTCCAGTATT TGCCATAAAG AAAAAAGACA + + 2751 GTACTAAATG GAGAAAATTA GTAGATTTCA GAGAACTTAA TAAGAGAACT + + 2801 CAAGACTTCT GGGAAGTTCA ATTAGGAATA CCACATCCCG CAGGGTTAAA + + 2851 AAAGAAAAAA TCAGTAACAG TACTGGATGT GGGTGATGCA TATTTTTCAG + + 2901 TTCCCTTAGA TGAAGACTTC AGGAAGTATA CTGCATTTAC CATACCTAGT + + 2951 ATAAACAATG AGACACCAGG GATTAGATAT CAGTACAATG TGCTTCCACA + + 3001 GGGATGGAAA GGATCACCAG CAATATTCCA AAGTAGCATG ACAAAAATCT + + 3051 TAGAGCCTTT TAGAAAACAA AATCCAGACA TAGTTATCTA TCAATACATG + + 3101 GATGATTTGT ATGTAGGATC TGACTTAGAA ATAGGGCAGC ATAGAACAAA + + 3151 AATAGAGGAG CTGAGACAAC ATCTGTTGAG GTGGGGACTT ACCACACCAG + + 3201 ACAAAAAACA TCAGAAAGAA CCTCCATTCC TTTGGATGGG TTATGAACTC + + 3251 CATCCTGATA AATGGACAGT ACAGCCTATA GTGCTGCCAG AAAAAGACAG + + 3301 CTGGACTGTC AATGACATAC AGAAGTTAGT GGGGAAATTG AATTGGGCAA + + 3351 GTCAGATTTA CCCAGGGATT AAAGTAAGGC AATTATGTAA ACTCCTTAGA + + 3401 GGAACCAAAG CACTAACAGA AGTAATACCA CTAACAGAAG AAGCAGAGCT + + 3451 AGAACTGGCA GAAAACAGAG AGATTCTAAA AGAACCAGTA CATGGAGTGT + + 3501 ATTATGACCC ATCAAAAGAC TTAATAGCAG AAATACAGAA GCAGGGGCAA + + 3551 GGCCAATGGA CATATCAAAT TTATCAAGAG CCATTTAAAA ATCTGAAAAC + + 3601 AGGAAAATAT GCAAGAATGA GGGGTGCCCA CACTAATGAT GTAAAACAAT + + 3651 TAACAGAGGC AGTGCAAAAA ATAACCACAG AAAGCATAGT AATATGGGGA + + 3701 AAGACTCCTA AATTTAAACT GCCCATACAA AAGGAAACAT GGGAAACATG + + 3751 GTGGACAGAG TATTGGCAAG CCACCTGGAT TCCTGAGTGG GAGTTTGTTA + + 3801 ATACCCCTCC CTTAGTGAAA TTATGGTACC AGTTAGAGAA AGAACCCATA + + 3851 GTAGGAGCAG AAACCTTCTA TGTAGATGGG GCAGCTAACA GGGAGACTAA + + 3901 ATTAGGAAAA GCAGGATATG TTACTAATAG AGGAAGACAA AAAGTTGTCA + + 3951 CCCTAACTGA CACAACAAAT CAGAAGACTG AGTTACAAGC AATTTATCTA + + 4001 GCTTTGCAGG ATTCGGGATT AGAAGTAAAC ATAGTAACAG ACTCACAATA + + 4051 TGCATTAGGA ATCATTCAAG CACAACCAGA TCAAAGTGAA TCAGAGTTAG + + 4101 TCAATCAAAT AATAGAGCAG TTAATAAAAA AGGAAAAGGT CTATCTGGCA + + 4151 TGGGTACCAG CACACAAAGG AATTGGAGGA AATGAACAAG TAGATAAATT + + 4201 AGTCAGTGCT GGAATCAGGA AAGTACTATT TTTAGATGGA ATAGATAAGG + + 4251 CCCAAGATGA ACATGAGAAA TATCACAGTA ATTGGAGAGC AATGGCTAGT + + 4301 GATTTTAACC TGCCACCTGT AGTAGCAAAA GAAATAGTAG CCAGCTGTGA + + 4351 TAAATGTCAG CTAAAAGGAG AAGCCATGCA TGGACAAGTA GACTGTAGTC + + 4401 CAGGAATATG GCAACTAGAT TGTACACATT TAGAAGGAAA AGTTATCCTG + + 4451 GTAGCAGTTC ATGTAGCCAG TGGATATATA GAAGCAGAAG TTATTCCAGC + + 4501 AGAAACAGGG CAGGAAACAG CATATTTTCT TTTAAAATTA GCAGGAAGAT + + 4551 GGCCAGTAAA AACAATACAT ACTGACAATG GCAGCAATTT CACCGGTGCT + + 4601 ACGGTTAGGG CCGCCTGTTG GTGGGCGGGA ATCAAGCAGG AATTTGGAAT + + 4651 TCCCTACAAT CCCCAAAGTC AAGGAGTAGT AGAATCTATG AATAAAGAAT + + 4701 TAAAGAAAAT TATAGGACAG GTAAGAGATC AGGCTGAACA TCTTAAGACA + + 4751 GCAGTACAAA TGGCAGTATT CATCCACAAT TTTAAAAGAA AAGGGGGGAT + + 4801 TGGGGGGTAC AGTGCAGGGG AAAGAATAGT AGACATAATA GCAACAGACA + + 4851 TACAAACTAA AGAATTACAA AAACAAATTA CAAAAATTCA AAATTTTCGG + + 4901 GTTTATTACA GGGACAGCAG AAATTCACTT TGGAAAGGAC CAGCAAAGCT + + 4951 CCTCTGGAAA GGTGAAGGGG CAGTAGTAAT ACAAGATAAT AGTGACATAA + + 5001 AAGTAGTGCC AAGAAGAAAA GCAAAGATCA TTAGGGATTA TGGAAAACAG + + 5051 ATGGCAGGTG ATGATTGTGT GGCAAGTAGA CAGGATGAGG ATTAGAACAT + + 5101 GGAAAAGTTT AGTAAAACAC CATATGTATG TTTCAGGGAA AGCTAGGGGA + + 5151 TGGTTTTATA GACATCACTA TGAAAGCCCT CATCCAAGAA TAAGTTCAGA + + 5201 AGTACACATC CCACTAGGGG ATGCTAGATT GGTAATAACA ACATATTGGG + + 5251 GTCTGCATAC AGGAGAAAGA GACTGGCATT TGGGTCAGGG AGTCTCCATA + + 5301 GAATGGAGGA AAAAGAGATA TAGCACACAA GTAGACCCTG AACTAGCAGA + + 5351 CCAACTAATT CATCTGTATT ACTTTGACTG TTTTTCAGAC TCTGCTATAA + + 5401 GAAAGGCCTT ATTAGGACAC ATAGTTAGCC CTAGGTGTGA ATATCAAGCA + + 5451 GGACATAACA AGGTAGGATC TCTACAATAC TTGGCACTAG CAGCATTAAT + + 5501 AACACCAAAA AAGATAAAGC CACCTTTGCC TAGTGTTACG AAACTGACAG + + 5551 AGGATAGATG GAACAAGCCC CAGAAGACCA AGGGCCACAG AGGGAGCCAC + + 5601 ACAATGAATG GACACTAGAG CTTTTAGAGG AGCTTAAGAA TGAAGCTGTT + + 5651 AGACATTTTC CTAGGATTTG GCTCCATGGC TTAGGGCAAC ATATCTATGA + + 5701 AACTTATGGG GATACTTGGG CAGGAGTGGA AGCCATAATA AGAATTCTGC + + 5751 AACAACTGCT GTTTATCCAT TTTCAGAATT GGGTGTCGAC ATAGCAGAAT + + 5801 AGGCGTTACT CGACAGAGGA GAGCAAGAAA TGGAGCCAGT AGATCCTAGA + + 5851 CTAGAGCCCT GGAAGCATCC AGGAAGTCAG CCTAAAACTG CTTGTACCAA + + 5901 TTGCTATTGT AAAAAGTGTT GCTTTCATTG CCAAGTTTGT TTCATAACAA + + 5951 AAGCCTTAGG CATCTCCTAT GGCAGGAAGA AGCGGAGACA GCGACGAAGA + + 6001 GCTCATCAGA ACAGTCAGAC TCATCAAGCT TCTCTATCAA AGCAGTAAGT + + 6051 AGTACATGTA ACGCAACCTA TACCAATAGT AGCAATAGTA GCATTAGTAG + + 6101 TAGCAATAAT AATAGCAATA GTTGTGTGGT CCATAGTAAT CATAGAATAT + + 6151 AGGAAAATAT TAAGACAAAG AAAAATAGAC AGGTTAATTG ATAGACTAAT + + 6201 AGAAAGAGCA GAAGACAGTG GCAATGAGAG TGAAGGAGAA ATATCAGCAC + + 6251 TTGTGGAGAT GGGGGTGGAG ATGGGGCACC ATGCTCCTTG GGATGTTGAT + + 6301 GATCTGTAGT GCTACAGAAA AATTGTGGGT CACAGTCTAT TATGGGGTAC + + 6351 CTGTGTGGAA GGAAGCAACC ACCACTCTAT TTTGTGCATC AGATGCTAAA + + 6401 GCATATGATA CAGAGGTACA TAATGTTTGG GCCACACATG CCTGTGTACC + + 6451 CACAGACCCC AACCCACAAG AAGTAGTATT GGTAAATGTG ACAGAAAATT + + 6501 TTGACATGTG GAAAAATGAC ATGGTAGAAC AGATGCATGA GGATATAATC + + 6551 AGTTTATGGG ATCAAAGCCT AAAGCCATGT GTAAAATTAA CCCCACTCTG + + 6601 TGTTAGTTTA AAGTGCACTG ATTTGAAGAA TGATACTAAT ACCAATAGTA + + 6651 GTAGCGGGAG AATGATAATG GAGAAAGGAG AGATAAAAAA CTGCTCTTTC + + 6701 AATATCAGCA CAAGCATAAG AGGTAAGGTG CAGAAAGAAT ATGCATTTTT + + 6751 TTATAAACTT GATATAATAC CAATAGATAA TGATACTACC AGCTATAGCT + + 6801 TGACAAGTTG TAACACCTCA GTCATTACAC AGGCCTGTCC AAAGGTATCC + + 6851 TTTGAGCCAA TTCCCATACA TTATTGTGCC CCGGCTGGTT TTGCGATTCT + + 6901 AAAATGTAAT AATAAGACGT TCAATGGAAC AGGACCATGT ACAAATGTCA + + 6951 GCACAGTACA ATGTACACAT GGAATTAGGC CAGTAGTATC AACTCAACTG + + 7001 CTGTTAAATG GCAGTCTAGC AGAAGAAGAG GTAGTAATTA GATCTGTCAA + + 7051 TTTCACGGAC AATGCTAAAA CCATAATAGT ACAGCTGAAC ACATCTGTAG + + 7101 AAATTAATTG TACAAGACCC AACAACAATA CAAGAAAAAG AATCCGTATC + + 7151 CAGAGAGGAC CAGGGAGAGC ATTTGTTACA ATAGGAAAAA TAGGAAATAT + + 7201 GAGACAAGCA CATTGTAACA TTAGTAGAGC AAAATGGAAT AACACTTTAA + + 7251 AACAGATAGA TAGCAAATTA AGAGAACAAT TCGGAAATAA TAAAACAATA + + 7301 ATCTTTAAGC AATCCTCAGG AGGGGACCCA GAAATTGTAA CGCACAGTTT + + 7351 TAATTGTGGA GGGGAATTTT TCTACTGTAA TTCAACACAA CTGTTTAATA + + 7401 GTACTTGGTT TAATAGTACT TGGAGTACTG AAGGGTCAAA TAACACTGAA + + 7451 GGAAGTGACA CAATCACCCT CCCATGCAGA ATAAAACAAA TTATAAACAT + + 7501 GTGGCAGAAA GTAGGAAAAG CAATGTATGC CCCTCCCATC AGTGGACAAA + + 7551 TTAGATGTTC ATCAAATATT ACAGGGCTGC TATTAACAAG AGATGGTGGT + + 7601 AATAGCAACA ATGAGTCCGA GATCTTCAGA CTTGGAGGAG GAGATATGAG + + 7651 GGACAATTGG AGAAGTGAAT TATATAAATA TAAAGTAGTA AAAATTGAAC + + 7701 CATTAGGAGT AGCACCCACC AAGGCAAAGA GAAGAGTGGT GCAGAGAGAA + + 7751 AAAAGAGCAG TGGGAATAGG AGCTTTGTTC CTTGGGTTCT TGGGAGCAGC + + 7801 AGGAAGCACT ATGGGCGCAG CCTCAATGAC GCTGACGGTA CAGGCCAGAC + + 7851 AATTATTGTC TGGTATAGTG CAGCAGCAGA ACAATTTGCT GAGGGCTATT + + 7901 GAGGCGCAAC AGCATCTGTT GCAACTCACA GTCTGGGGCA TCAAGCAGCT + + 7951 CCAAGCAAGA ATCCTAGCTG TGGAAAGATA CCTAAAGGAT CAACAGCTCC + + 8001 TAGGGATTTG GGGTTGCTCT GGAAAACTCA TTTGCACCAC TGCTGTGCCT + + 8051 TGGAATGCTA GTTGGAGTAA TAAATCTCTG GAACAGATCT GGAATCACAC + + 8101 GACCTGGATG GAGTGGGACA GAGAAATTAA CAATTACACA AGCTTAATAC + + 8151 ACTCCTTAAT TGAAGAATCG CAAAACCAGC AAGAAAAGAA TGAACAAGAA + + 8201 TTATTGGAAT TAGATAAATG GGCAAGTTTG TGGAATTGGT TTAACATAAC + + 8251 AAATTGGCTG TGGTATATAA AATTATTCAT AATGATAGTA GGAGGCTTGG + + 8301 TAGGTTTAAG AATAGTTTTT GCTGTACTTT CTATAGTGAA TAGAGTTAGG + + 8351 CAGGGATATT CACCATTATC GTTTCAGACC CACCTCCCAA TCCCGAGGGG + + 8401 ACCCGACAGG CCCGAAGGAA TAGAAGAAGA AGGTGGAGAG AGAGACAGAG + + 8451 ACAGATCCAT TCGATTAGTG AACGGATCCT TGGCACTTAT CTGGGACGAT + + 8501 CTGCGGAGCC TGTGCCTCTT CAGCTACCAC CGCTTGAGAG ACTTACTCTT + + 8551 GATTGTAACG AGGATTGTGG AACTTCTGGG ACGCAGGGGG TGGGAAGCCC + + 8601 TCAAATATTG GTGGAATCTC CTACAGTATT GGAGTCAGGA ACTAAAGAAT + + 8651 AGTGCTGTTA GCTTGCTCAA TGCCACAGCC ATAGCAGTAG CTGAGGGGAC + + 8701 AGATAGGGTT ATAGAAGTAG TACAAGGAGC TTGTAGAGCT ATTCGCCACA + + 8751 TACCTAGAAG AATAAGACAG GGCTTGGAAA GGATTTTGCT ATAAGATGGG + + 8801 TGGCAAGTGG TCAAAAAGTA GTGTGATTGG ATGGCTTACT GTAAGGGAAA + + 8851 GAATGAGACG AGCTGAGCCA GCAGCAGATG GGGTGGGAGC AGCATCTCGA + + 8901 GACCTGGAAA AACATGGAGC AATCACAAGT AGCAACACAG CAGCTACCAA + + 8951 TGCTGCTTGT GCCTGGCTAG AAGCACAAGA GGAGGAGGAG GTGGGTTTTC + + 9001 CAGTCACACC TCAGGTACCT TTAAGACCAA TGACTTACAA GGCAGCTGTA + + 9051 GATCTTAGCC ACTTTTTAAA AGAAAAGGGG GGACTGGAAG GGCTAATTCA + + 9101 CTCCCAAAGA AGACAAGATA TCCTTGATCT GTGGATCTAC CACACACAAG + + 9151 GCTACTTCCC TGATTGACAG AACTACACAC CAGGGCCAGG GGTCAGATAT + + 9201 CCACTGACCT TTGGATGGTG CTACAAGCTA GTACCAGTTG AGCCAGATAA + + 9251 GATAGAAGAG GCCAATAAAG GAGAGAACAC CAGCTTGTTA CACCCTGTGA + + 9301 GCCTGCATGG GATGGATGAC CCGGAGAGAG AAGTGTTAGA GTGGAGGTTT + + 9351 GACAGCCGCC TAGCATTTCA TCACGTGGCC CGAGAGCTGC ATCCGGAGTA + + 9401 CTTCAAGAAC TGCTGACATC GAGCTTGCTA CAAGGGACTT TCCGCTGGGG + + 9451 ACTTTCCAGG GAGGCGTGGC CTGGGCGGGA CTGGGGAGTG GCGAGCCCTC + + 9501 AGATCCTGCA TATAAGCAGC TGCTTTTTGC CTGTACTGGG TCTCTCTGGT + + 9551 TAGACCAGAT CTGAGCCTGG GAGCTCTCTG GCTAACTAGG GAACCCACTG + + 9601 CTTAAGCCTC AATAAAGCTT GCCTTGAGTG CTTCAAGTAG TGTGTGCCCG + + 9651 TCTGTTGTGT GACTCTGGTA ACTAGAGATC CCTCAGACCC TTTTAGTCAG + + 9701 TGTGGAAAAT CTCTAGCA + diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/gcgdata.1 b/forester/archive/RIO/others/hmmer/squid/Formats/gcgdata.1 new file mode 100644 index 0000000..93c01ff --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/gcgdata.1 @@ -0,0 +1,60 @@ +>>>>104K_THEPA 8/92 ASCII Len: 924 +P15711 theileria parva. 104 kd microneme-rhoptry antigen. 8/92 +MKFLILLFNILCLFPVLAADNHGVGPQGASGVDPITFDINSNQTGPAFLTAVEMAGVKYLQVQHGSNVNIHRLVEGNVVIWENASTPLYTGAIVTNNDGPYMAYVEVLGDPNLQFFIKSGDAWVTLSEHEYLAKLQEIRQAVHIESVFSLNMAFQLENNKYEVETHAKNGANMVTFIPRNGHICKMVYHKNVRIYKATGNDTVTSVVGFFRGLRLLLINVFSIDDNGMMSNRYFQHVDDKYVPISQKNYETGIVKLKDYKHAYHPVDLDIKDIDYTMFHLADATYHEPCFKIIPNTGFCITKLFDGDQVLYESFNPLIHCINEVHIYDRNNGSIICLHLNYSPPSYKAYLVLKDTGWEATTHPLLEEKIEELQDQRACELDVNFISDKDLYVAALTNADLNYTMVTPRPHRDVIRVSDGSEVLWYYEGLDNFLVCAWIYVSDGVASLVHLRIKDRIPANNDIYVLKGDLYWTRITKIQFTQEIKRLVKKSKKKLAPITEEDSDKHDEPPEGPGASGLPPKAPGDKEGSEGHKGPSKGSDSSKEGKKPGSGKKPGPAREHKPSKIPTLSKKPSGPKDPKHPRDPKEPRKSKSPRTASPTRRPSPKLPQLSKLPKSTSPRSPPPPTRPSSPERPEGTKIIKTSKPPSPKPPFDPSFKEKFYDDYSKAASRSKETKTTVVLDESFESILKETLPETPGTPFTTPRPVPPKRPRTPESPFEPPKDPDSPSTSPSEFFTPPESKRTRFHETPADTPLPDVTAELFKEPDVTAETKSPDEAMKRPRSPSEYEDTSPGDYPSLPMKRHRLERLRLTTTEMETDPGRMAKDASGKPVKLKRSKSFDDLTTVELAPEPKASRIVVDDEGTEADDEETHPPEERQKTEVRRRRPPKKPSKSPRPSKPKKPKKPDSAYIPSILAILVVSLIVGIL +>>>>10KD_VIGUN 2/95 ASCII Len: 75 +P18646 vigna unguiculata (cowpea). 10 kd protein precursor (clone psas10). 2/95 +MEKKSIAGLCFLFLVLFVAQEVVVQSEAKTCENLVDTYRGPCFTTGSCDDHCKNKEHLLSGRCRDDVRCWCTRNC +>>>>110K_PLAKN 2/94 ASCII Len: 296 +P13813 plasmodium knowlesi. 110 kd antigen (pk110) (fragment). 2/94 +FNSNMLRGSVCEEDVSLMTSIDNMIEEIDFYEKEIYKGSHSGGVIKGMDYDLEDDENDEDEMTEQMVEEVADHITQDMIDEVAHHVLDNITHDMAHMEEIVHGLSGDVTQIKEIVQKVNVAVEKVKHIVETEETQKTVEPEQIEETQNTVEPEQTEETQKTVEPEQTEETQNTVEPEQIEETQKTVEPEQTEEAQKTVEPEQTEETQKTVEPEQTEETQKTVEPEQTEETQKTVEPEQTEETQKTVEPEQTEETQKTVEPEQTEETQKTVEPEQTEETQNTVEPEPTQETQNTVEP +>>>>11S3_HELAN 2/94 ASCII Len: 493 +P19084 helianthus annuus (common sunflower). 11s globulin seed storage protein g3 precursor (helianthinin g3). 2/94 +MASKATLLLAFTLLFATCIARHQQRQQQQNQCQLQNIEALEPIEVIQAEAGVTEIWDAYDQQFQCAWSILFDTGFNLVAFSCLPTSTPLFWPSSREGVILPGCRRTYEYSQEQQFSGEGGRRGGGEGTFRTVIRKLENLKEGDVVAIPTGTAHWLHNDGNTELVVVFLDTQNHENQLDENQRRFFLAGNPQAQAQSQQQQQRQPRQQSPQRQRQRQRQGQGQNAGNIFNGFTPELIAQSFNVDQETAQKLQGQNDQRGHIVNVGQDLQIVRPPQDRRSPRQQQEQATSPRQQQEQQQGRRGGWSNGVEETICSMKFKVNIDNPSQADFVNPQAGSIANLNSFKFPILEHLRLSVERGELRPNAIQSPHWTINAHNLLYVTEGALRVQIVDNQGNSVFDNELREGQVVVIPQNFAVIKRANEQGSRWVSFKTNDNAMIANLAGRVSASAASPLTLWANRYQLSREEAQQLKFSQRETVLFAPSFSRGQGIRASR +>>>>11SB_CUCMA 11/90 ASCII Len: 480 +P13744 cucurbita maxima (pumpkin) (winter squash). 11s globulin beta subunit precursor. 11/90 +MARSSLFTFLCLAVFINGCLSQIEQQSPWEFQGSEVWQQHRYQSPRACRLENLRAQDPVRRAEAEAIFTEVWDQDNDEFQCAGVNMIRHTIRPKGLLLPGFSNAPKLIFVAQGFGIRGIAIPGCAETYQTDLRRSQSAGSAFKDQHQKIRPFREGDLLVVPAGVSHWMYNRGQSDLVLIVFADTRNVANQIDPYLRKFYLAGRPEQVERGVEEWERSSRKGSSGEKSGNIFSGFADEFLEEAFQIDGGLVRKLKGEDDERDRIVQVDEDFEVLLPEKDEEERSRGRYIESESESENGLEETICTLRLKQNIGRSVRADVFNPRGGRISTANYHTLPILRQVRLSAERGVLYSNAMVAPHYTVNSHSVMYATRGNARVQVVDNFGQSVFDGEVREGQVLMIPQNFVVIKRASDRGFEWIAFKTNDNAITNLLAGRVSQMRMLPLGVLSNMYRISREEAQRLKYGQQEMRVLSPGRSQGRRE +>>>>120K_RICRI 10/94 ASCII Len: 1299 +P14914 rickettsia rickettsii. 120 kd surface-exposed protein. 10/94 +MVIQSANATGQVNFRHIVDVGADGTTAFKTAASKVTITQDSNFGNTDFGNLAAQIKVPNAITLTGNFTGDASNPGNTAGVITFDANGTLESASADANVAVTNNITAIEASGAGVVQLSGTHAAELRLGNAGSIFKLADGTVINGKVNQTALVGGALAAGTITLDGSATITGDIGNAGGAAALQRITLANDAKKTLTLGGANIIGAGGGTIDLQANGGTIKLTSTQNNIVVDFDLAIATDQTGVVDASSLTNAQTLTINGKIGTIGANNKTLGQFNIGSSKTVLSNGNVAINELVIGNDGAVQFAHDTYLITRTTNAAGQGKIIFNPVVNNGTTLAAGTNLGSATNPLAEINFGSKGVNVDTVLNVGEGVNLYATNITTTDANVGSFVFNAGGTNIVSGTVGGQQGNKFNTVALENGTTVKFLGNATFNGNTTIAANSTLQIGGNYTADCVASADGTGIVEFVNTGPITVTLNKEAAPVNALKQITVSGPGNVVINEIGNAGNHHGAVTDTIAFENSSLGAVVFLPRGIPFNDAGNTMPLTIKSTVGNKTAKGFDVPSVVVLGVDSVIADGQVIVDQNNIVGLGLGSDNGIIVNATTLYAGISTLNNNQGTVTLSGGVPNTPGTVYGLGTGIGASKFKQVTFTTDYNNLGNIIATNATINDGVTVTTGGIAGIGFDGKITLGSVNGNGNVRFADGILSNSTSMIGTTKANNGTVTYLGNAFVGNIGDSDTPVASVRFTGSDSGAGLQGNIYSQVIDFGTYNLGIVNSNIILGGGTTAINGKIDLVTNTLTFASGTSTWGNNTSIETTLTLANGNIGHIVILEGAQVNTTTTGTTTIKVQDNANANFSGTQTYTLIQGGARFNGTLGSPNFAVTGSNRFVNYSLIRAANQDYVITRTNNAENVVTNDIANSPFGGAPGVDQNVTTFVNATNTAAYNNLLLAKNSANSANFVGAIVTDTSAAITNVQLDLAKDIQAQLGNRLGALRYLGTPETAEMADLKLEHIGSVAAGDEAIDNVAYGIWAKPFYTDAHQSKKGGLAGYKAKTTGVVIGLDTLANDNLMIGAAIGITKTDIKHQDYKKGDKTDVNGFSFSLYGAQQLVKNFFAQGSAIFSLNQVKNKSQRYFFDANGNMSKQIAAGHYDNMTFGGNLTVGYDYNAMQGVLVTPMAGLSYLKSSDENYKETGTTVANKQVNSKFSDRTDLIVGAKVAGSTMNRTDLAVYPEVHAFVVHKVTGRLSKTQSVLDGQVTPCINQPDRTTKTSYNLGLSASIRSDAKMEYGIGYDAQISSKYTAHQGTLKVRVNF +>>>>128U_DROME 2/94 ASCII Len: 368 +P32234 drosophila melanogaster (fruit fly). gtp-binding protein 128up. 2/94 +MITILEKISAIESEMARTQKNKATSAHLGLLKANVAKLRRELISPKGGGGGTGEAGFEVAKTGDARVGFVGFPSVGKSTLLSNLAGVYSEVAAYEFTTLTTVPGCIKYKGAKIQLLDLPGIIEGAKDGKGRGRQVIAVARTCNLIFMVLDCLKPLGHKKLLEHELEGFGIRLNKKPPNIYYKRKDKGGINLNSMVPQSELDTDLVKTILSEYKIHNADITLRYDATSDDLIDVIEGNRIYIPCIYLLNKIDQISIEELDVIYKIPHCVPISAHHHWNFDDLLELMWEYLRLQRIYTKPKGQLPDYNSPVVLHNERTSIEDFCNKLHRSIAKEFKYALVWGSSVKHQPQKVGIEHVLNDEDVVQIVKKV +>>>>12AH_CLOS4 8/91 ASCII Len: 29 +P21215 clostridium sp. (strain c 48-50). 12-alpha-hydroxysteroid dehydrogenase (ec 1.1.1.176) (fragment). 8/91 +MIFDGKVAIITGGGKAKSIGYGIAVAYAK +>>>>12KD_MYCLE 2/95 ASCII Len: 156 +P15878 mycobacterium leprae. 12 kd protein. 2/95 +MNDIIALKFHISLNATTWIGRIGMVILPLLVYFITYRWCIGLQRSDRAVLEHGIETGIIKRLPHGAYIELHQPLGPVDDHGHPIPLEYQGTAVPKRMNKLGSAGSPSSGSFLFADPVSEDAALREATHVAEQRALTALREHQDSIASSPNGERGKH +>>>>12S1_ARATH 4/90 ASCII Len: 472 +P15455 arabidopsis thaliana (mouse-ear cress). 12s seed storage protein. 4/90 +MARVSSLLSFCLTLLILFHGYAAQQGQQGQQFPNECQLDQLNALEPSHVLKSEAGRIEVWDHHAPQLRCSGVSFARYIIESKGLYLPSFFNTAKLSFVAKGRGLMGKVIPGCAETFQDSSEFQPRFEGQGQSQRFRDMHQKVEHIRSGDTIATTPGVAQWFYNDGQQPLVIVSVFDLASHQNQLDRNPRPFYLAGNNPQGQVWLQGREQQPQKNIFNGFGPEVIAQALKIDLQTAQQLQNQDDNRGNIVRVQGPFGVIRPPLRGQRPQEEEEEEGRHGRHGNGLEETICSARCTDNLDDPSRADVYKPQLGYISTLNSYDLPILRFIRLSALRGSIRQNAMVLPQWNANANAILYETDGEAQIQIVNDNGNRVFDGQVSQGQLIAVPQGFSVVKRATSNRFQWVEFKTNANAQINTLAGRTSVLRGLPLEVITNGFQISPEEARRVKFNTLETTLTHSSGPASYGRPRVAAA +>>>>12S2_ARATH 4/90 ASCII Len: 455 +P15456 arabidopsis thaliana (mouse-ear cress). 12s seed storage protein. 4/90 +MGRVSSIISFSLTLLILFNGYTAQQWPNECQLDQLNALEPSQIIKSEGGRIEVWDHHAPQLRCSGFAFERFVIEPQGLFLPTFLNAGKLTFVVHGRGLMGRVIPGCAETFMESPVFGEGQGQGQSQGFRDMHQKVEHLRCGDTIATPSGVAQWFYNNGNEPLILVAAADLASNQNQLDRNLRPFLIAGNNPQGQEWLQGRKQQKQNNIFNGFAPEILAQAFKINVETAQQLQNQQDNRGNIVKVNGPFGVIRPPLRRGEGGQQPHEIANGLEETLCTMRCTENLDDPSDADVYKPSLGYISTLNSYNLPILRLLRLSALRGSIRKNAMVLPQWNVNANAALYVTNGKAHIQMVNDNGERVFDQEISSGQLLVVPQGFSVMKHRIGEQFEWIEFKTNENAQVNTLAGRTSVMRGLPLEVITNGYQISPEEAKRVKFSTIETTLTHSSPMSYGRPRA +>>>>1433_DROME 12/92 ASCII Len: 248 +P29310 drosophila melanogaster (fruit fly). 14-3-3-like protein. 12/92 +MSTVDKEELVQKAKLAEQSERYDDMAQAMKSVTETGVELSNEERNLLSVAYKNVVGARRSSWRVISSIEQKTEASARKQQLAREYRERVEKELREICYEVLGLLDKYLIPKASNPESKVFYLKMKGDYYRYLAEVATGDARNTVVDDSQTAYQDAFDISKGKMQPTHPIRLGLALNFSVFYYEILNSPDKACQLAKQAFDDAIAELDTLNEDSYKDSTLIMQLLRDNLTLWTSDTQGDEAEPQEGGDN +>>>>1433_HORVU 2/94 ASCII Len: 262 +P29305 hordeum vulgare (barley). 14-3-3-like protein. 2/94 +MSTAEATREENVYMAKLAEQAERYEEMVEFMEKVAKTADVGELTVEERNLLSVAYKNVIGARRASWRIISSIEQKEESRGNEAYVASIKEYRTRIETELSKICDGILKLLDSHLVPSATAAESKVFYLKMKGDYHRYLAEFKAGAERKEAAENTLVAYKSAQDIALADLPTTHPIRLGLALNFSVFYYEILNSPDRACNLAKQAFDEAIAELDSLGEESYKDSTLIMQLLRDNLTLWTSDNAEEGGDEIKEAASKPEGEGHS +>>>>1433_MAIZE 6/94 ASCII Len: 61 +P29306 zea mays (maize). 14-3-3-like protein (fragment). 6/94 +ILNSPDRACNLAKQAFDEAISELDSLGEESYKDSTLIMQLLXDNLTLWTSDTNEDGGDEIK +>>>>1433_OENHO 12/92 ASCII Len: 260 +P29307 oenothera hookeri (hooker's evening primrose). 14-3-3-like protein. 12/92 +MATAPSPREENVYLAKLAEQAERYEEMVEFMEKVCAAADSEELTVEERNLLSVAYKNVIGARRASWRIISSIEQKEESRGNDDHVSTIRDYRSKIETELSNICGGILKLLDSRLIPSAASGDSKVFYLKMKGDYHRYLAEFKTGAERKEAAESTLSAYKAAQDIANAELAPTHPIRLGLALNFSVFYYEILNSPDRACNLANEAFDEAIAELDTLEEESYKDSTLIMQLLRDNLTLWTSDNQDDGGDEIKEAAPKPDEQY +>>>>1433_ORYSA 6/94 ASCII Len: 260 +Q06967 oryza sativa (rice). 14-3-3-like protein s94. 6/94 +MSPAEASREENVYMAKLAEQAERYEEMVEFMEKVAKTTDVGELTVEERNLLSVAYKNVIGARRASWRIISSIEQKEESRGNEAYVASIKEYRSRIETELSKICDGILKLLDSHLVPSATAAESNVFYLKMKGDYHRYLAEFKSGAERKEAAENTLVAYKSAQDIALADLPTTHPIRLGLALNLSVFYYEILNSPDRACNLAKQAFDDAIAELDTLGEESYKDSTLIMQLLRDNLTLWTSDNAEDGGDEIKEAAKPEGEGH +>>>>1433_SPIOL 12/92 ASCII Len: 220 +P29308 spinacia oleracea (spinach). 14-3-3-like protein (fragment). 12/92 +RNLLSVAYKNVVGARRASWRIISSIEQKEESRGNEDHVSVIRDYRSRIEKELSDNCDGILKLLDTKLVPAASSGDSKVFYLKMKGDYHRYLAEFKTGAQRKEAAESTLTAYKAAQDIANAELAPTHPIRLGLALNFSVFYYEILNSPDRACNLAKQAFVEAIAELDTLGEDSYKDSTLIMQLLRDNLTLWTSDMQDEAADEITEEAAKQQKAVNNNKIAY +>>>>1433_XENLA 12/92 ASCII Len: 235 +P29309 xenopus laevis (african clawed frog). 14-3-3-like protein (fragment). 12/92 +AKLSEQAERYDDMAASMKAVTELGAELSNEERNLLSVAYKNVVGARRSSWRVISSIEQKTEGNDKRQQMAREYREKVETELQDICKDVLDLLDRFLVPNATPPESKVFYLKMKGDYYRYLSEVASGDSKQETVASSQQAYQEAFEISKSEMQPTHPIRLGLALNFSVFYYEILNSPEKACSLAKSAFDEAIRELDTLNEESYKDSTLIMQLLRDNLTLWTSENQGEEADNVEGDN +>>>>1434_ARATH 2/94 ASCII Len: 259 +Q01525 arabidopsis thaliana (mouse-ear cress). 14-3-3-like protein gf14. 2/94 +MASGREELVYMAKLAEQAERYEEMVEFMEKVSAAVDGDELTVEERNLLSVAYKNVIGARRASWRIISSIEQKEESRGNDDHVTAIREYRSKIETELSGICDGILKLLDSRLIPAAASGDSKVFYLKMKGDYHRYLAEFKTGQERKDAAEHTLAAYKSAQDIANAELAPTHPIRLGLALNFSVFYYEILNSPDRACNLAKQAFDEAIAELDTLGEESYKDSTLIMQLLRDNLTLWTSDMQDDAADEIKEAAAPKPTEEQQ +>>>>1434_MAIZE 6/94 ASCII Len: 248 +Q01526 zea mays (maize). 14-3-3-like protein gf14-12. 6/94 +MAKLAEQAERYEEMVEFMEKVAKTVDSEELTVEERNLLSVAYKNVIGARRASWRIISSIEQKEEGRGNEDRVTLIKDYRGKIETELTKICDGILKLLESHLVPSSTAPESKVFYLKMKGDYYRYLAEFKTGAERKDAAENTMVAYKAAQDIALAELAPTHPIRLGLALNFSVFYYEILNSPDRACSLAKQAFDEAISELDTLSEESYKDSTLIMQLLHDNLTLWTSDISEDPAEEIREAPKHDLSEGQ diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/gcgdata.2 b/forester/archive/RIO/others/hmmer/squid/Formats/gcgdata.2 new file mode 100644 index 0000000000000000000000000000000000000000..b51258533c9e23a2cfcf4237e17b3409524b9195 GIT binary patch literal 2192 zcmbW2do-JQ9>&LzG13qv+UagqUV}p`$X!BQQVg27RP4|l7Ms39IwX;}Rz;~ZGwlp* zUCKJj?CPE=MRaI8Gzf1a*}6>`dR3I760Hc;x^CF*IqjaA-Lw1O`_J$De7@&>p6Bb~ z;o-sX4hX(xNeT02|l!Dy);fiKjWg7pBJCe27?9Bh4$jd!^EVbD1b)mHte> zU}VWZul0H#u?xW1!|Ie_X?uqaI@clf#;x*orE=Xr+}>Gh{UAqvrDyPF*A&JA8CjU` zY*)Er^xEyKg}Q7vNTigl{?v0-Sa+E@T3_8sR%Forky_7u0LZoGZaAb z)JnGcEHkleNq?K}nf_mx6G?{S2eyJm^yiTt8{aa6-` zQh72z?&`owlq)&fCHFI1CTD>Y>8;+w-UY4Ww}LS1{XOczDGAa>9OV5%UtIvBPp}aA zr+Zjh6%m>|HH*kTrFfoegC=6sUk95%w#iwh4&_B-f3%wkdOZkjS@oG)CR-P#YaubQ zq0M^aq=F3%5cF5`ku=5oy;6eer)sKJjYPH+&oLHeHFTuo#<`1%TtqQ6j>z8Zz;r5! zXROg#y|_lqmgh}&ntq|T%~1P2=sHu~?`D15LGscDt;y_not^CAcutC45M)^IRRul= zJF&2MGWdMBwK0-uq-AY>HAa9TkuDjp`qw&$XFdA}z$P)f@hKXkcp}oG*A>=Z&p3Ka zX^*cVPW=3Wz6A_Hn}-H$3soj`ZAGseRlJF5pFX_0Ugheto;(?~)ptjaDKRCg`%Dk` zc-2hBdRAsz%Pf&@t$#eIKDGOUx{V=c_9e9E;x4P)v54$5>$?Wk*Zex&VLlc5vFJ$O zj2H{WMA138E;Jqt7SWr{004?JmHJL(@HjF&5Ran}@xZ}YPBJLu{wp)F3A*e!5&=#E z7@N8sA`v$k1U}~rfq!O75YKgtz`KxuIFJVd3_u{{Cxcv`(~bmu-fTj4cy;{Gix{>l z4GrI0p7_^&KLYpkqAT8e!{Z;ajYGq~i{qk8a3Fz9A>n?7$N!DejxZMB@Dl|Ipbm|5 zRJ1Kl!^4+GpT0E07nm&wOK}L6j$*S}_;)T5m zI?C{>z0qdALY*c5P_V%}?`QT5+j_I&_{@GW*Qo)#UDH!lzCW@h>1F7hE>z%wGS$=H z9g($WR)pTaRGrC^etVa6)EsU#?mux^8e>;u*M0(a@)7enhH0A~@6!?|7tcvP5za-| z78kbU)$YbuCHU0GLg=}fh-Z}%Gziruw~QV(>k$|K{AqhuJ>0!SkDEJJ9+h7F!FPKy z^CCkFs_WbD{66k7HURfYfMHUW@A7cHj2y>4GOrh4J!Ej9El|Nux6mj3aJLlBs4caa zjIvdq@v{QRTiN{%ZU?kjF&cq`-7Q7JxcHGcie#kbC@a)$3-%$OEe!7BeYaJ{+e za!S!$N$GA)X{2vOs<_lJym)Qccn;@(12esED2A8AHoqx zB+@S#MA!2|ZXB1lUH9AVE(8S$Tuy8HSJDf})&hr@BWq!3-Is(D;41Xi5Z6CqTeD;WZcg(gEyQh0hAa}hG{$e+F?3&+^ z9*0M6e#p`<&(gI289 + /number=1 +BASE COUNT 30 a 99 c 80 g 80 t +ORIGIN + 1 gtccccgcgg gccttgtcct gattggctgt ccctgcgggc cttgtcctga ttggctgtgc + 61 ccgactccgt ataacataaa tagaggcgtc gagtcgcgcg ggcattactg cagcggacta + 121 cacttgggtc gagatggctc gcttcgtggt ggtggccctg ctcgtgctac tctctctgtc + 181 tggcctggag gctatccagc gtaagtctct cctcccgtcc ggcgctggtc cttcccctcc + 241 cgctcccacc ctctgtagcc gtctctgtgc tctctggttt cgttacctc +// + +LOCUS AAB2MCG2 1276 bp DNA PRI 06-JUL-1998 +DEFINITION Aotus azarai beta-2-microglobulin precursor, gene, exons 2 and 3 + and complete cds. +ACCESSION AF032093 AF032094 +VERSION AF032093.1 GI:3287308 +KEYWORDS . +SEGMENT 2 of 2 +SOURCE Azara's night monkey. + ORGANISM Aotus azarai + Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; + Mammalia; Eutheria; Primates; Platyrrhini; Cebidae; Aotinae; Aotus. +REFERENCE 1 (bases 1 to 1276) + AUTHORS Canavez,F.C., Ladasky,J.J., Muniz,J.A.C., Seuanez,H.N., Parham,P. + and Cavanez,F.C. + TITLE beta2-Microglobulin in neotropical primates (Platyrrhini) + JOURNAL Immunogenetics 48 (2), 133-140 (1998) + MEDLINE 98298008 +REFERENCE 2 (bases 1 to 1276) + AUTHORS Canavez,F.C., Ladasky,J.J., Seuanez,H.N. and Parham,P. + TITLE Direct Submission + JOURNAL Submitted (31-OCT-1997) Structural Biology, Stanford University, + Fairchild Building Campus West Dr. Room D-100, Stanford, CA + 94305-5126, USA +COMMENT On Jul 2, 1998 this sequence version replaced gi:3265029 + gi:3265028. +FEATURES Location/Qualifiers + source 1..1276 + /organism="Aotus azarai" + /db_xref="taxon:30591" + mRNA join(AF032092.1:<134..200,66..344,1023..>1050) + /product="beta-2-microglobulin precursor" + CDS join(AF032092.1:134..200,66..344,1023..1036) + /codon_start=1 + /product="beta-2-microglobulin precursor" + /protein_id="AAC52107.1" + /db_xref="GI:3289965" + /translation="MARFVVVALLVLLSLSGLEAIQRXPKIQVYSRHPAENGKPNFLN + CYVSGFHPSDIEVDLLKNGKKIEKVEHSDLSFSKDWSFYLLYYTEFTPNEKDEYACRV + SHVTLSTPKTVKWDRNM" + mat_peptide join(AF032092.1:194..200,66..344,1023..1033) + /product="beta-2-microglobulin" + intron <1..65 + /number=1 + variation 3 + /note="allele 1" + /replace="g" + exon 66..344 + /number=2 + intron 345..1022 + /number=2 + exon 1023..1050 + /number=3 + intron 1051..>1276 + /number=3 +BASE COUNT 353 a 253 c 269 g 400 t 1 others +ORIGIN + 1 caagttatcc gtaattgaaa taccctggta attaatattc atttgtcttt tcctgatttt + 61 ttcaggtrct ccaaagattc aggtttactc acgtcatccg gcagagaatg gaaagccaaa + 121 ttttctgaat tgctatgtgt ctgggtttca tccgtccgac attgaagttg acttactgaa + 181 gaatggaaag aaaattgaaa aagtggagca ttcagacttg tctttcagca aggactggtc + 241 tttctatctc ttgtactaca ccgagtttac ccccaatgaa aaagatgagt atgcctgccg + 301 tgtgagccat gtgactttat caacacccaa gacagtaaag tggggtaagt cttacgttct + 361 tttgtaggct gctgaaagtt gtgtatgggt agtcatgtca taaagctgct ttgatataaa + 421 aaaaattcgt ctatggccat actgccctga atgagtccca tcccgtctga taaaaaaaaa + 481 tcttcatatt gggattgtca gggaatgtgc ttaaagatca gattagagac aacggctgag + 541 agagcgctgc acagcattct tctgaaccag cagtttccct gcagctgagc agggagcagc + 601 agcagcagtt gcacaaatac atatgcactc ctaacacttc ttacctactg acttcctcag + 661 ctttcgtggc agctttaggt atatttagca ctaatgaaca tcaggaaggt ataggccttt + 721 ctttgtaaat ccttctatcc tagcatccta taatcctgga ctcctccagt actctctggc + 781 tggattggta tctgaggcta gtaggtgggg cttgttcctg ctgggtagct ccaaacaagg + 841 tattcatgga taggaacagc agcctatttt gccagcctta tttcttaata gttttagaaa + 901 tctgttagta cgtggtgttt tttgttttgt tttgttttaa cacagtgtaa acaaaaagta + 961 catgtatttt aaaagtaaaa cttaatgtct tcctttttct ttctccactg tctttttcat + 1021 agatcgaaac atgtaaccag catcatggag gtaagttctt gaccttaatt aaatgttttt + 1081 tgtttcactg gggactattt atagacagcc ctaacatgat aaccctcact atgtggagaa + 1141 cattgacaga gtagcatttt agcaggcaaa gaggaatcct atagggttac attccctttt + 1201 cctgtggagt ggcatgaaaa aggtatgtgg ccccagctgt ggccacatta ctgactctac + 1261 agggagggca aaggaa +// +LOCUS AACCOSIV1 168 bp DNA PRI 26-JAN-1998 +DEFINITION Aotus azarai cytochrome c oxidase subunit IV gene, exon 3. +ACCESSION AF042765 +VERSION AF042765.1 GI:2809514 +KEYWORDS . +SEGMENT 1 of 3 +SOURCE Azara's night monkey. + ORGANISM Aotus azarai + Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; + Mammalia; Eutheria; Primates; Platyrrhini; Cebidae; Aotinae; Aotus. +REFERENCE 1 (bases 1 to 168) + AUTHORS Wu,W., Goodman,M., Lomax,M.I. and Grossman,L.I. + TITLE Molecular evolution of cytochrome c oxidase subunit IV: evidence + for positive selection in simian primates + JOURNAL J. Mol. Evol. 44 (5), 477-491 (1997) + MEDLINE 97277139 +REFERENCE 2 (bases 1 to 168) + AUTHORS Wu,W., Goodman,M., Lomax,M.I. and Grossman,L.I. + TITLE Direct Submission + JOURNAL Submitted (14-JAN-1998) CMMG, Wayne State University, 540 E. + Canfield, Detroit, MI 48201, USA +FEATURES Location/Qualifiers + source 1..168 + /organism="Aotus azarai" + /db_xref="taxon:30591" + exon 1..168 + /number=3 +BASE COUNT 40 a 42 c 54 g 32 t +ORIGIN + 1 gaagtgttgt gaagagcgaa gactatgcgc tcccaagtta tgtggatcgg cgtgactatc + 61 ccttgcccga cgtggcccat gtcaggcacc tgtcggccag ccagaaggcc ttgaaggaga + 121 aggagaaggc ctcctggagc agcctctcca tggatgagaa agtcgagt +// + +LOCUS AACCOSIV2 132 bp DNA PRI 26-JAN-1998 +DEFINITION Aotus azarai cytochrome c oxidase subunit IV gene, exon 4. +ACCESSION AF042766 +VERSION AF042766.1 GI:2809515 +KEYWORDS . +SEGMENT 2 of 3 +SOURCE Azara's night monkey. + ORGANISM Aotus azarai + Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; + Mammalia; Eutheria; Primates; Platyrrhini; Cebidae; Aotinae; Aotus. +REFERENCE 1 (bases 1 to 132) + AUTHORS Wu,W., Goodman,M., Lomax,M.I. and Grossman,L.I. + TITLE Molecular evolution of cytochrome c oxidase subunit IV: evidence + for positive selection in simian primates + JOURNAL J. Mol. Evol. 44 (5), 477-491 (1997) + MEDLINE 97277139 +REFERENCE 2 (bases 1 to 132) + AUTHORS Wu,W., Goodman,M., Lomax,M.I. and Grossman,L.I. + TITLE Direct Submission + JOURNAL Submitted (14-JAN-1998) CMMG, Wayne State University, 540 E. + Canfield, Detroit, MI 48201, USA +FEATURES Location/Qualifiers + source 1..132 + /organism="Aotus azarai" + /db_xref="taxon:30591" + exon 1..132 + /number=4 +BASE COUNT 30 a 25 c 38 g 39 t +ORIGIN + 1 tgtatcgtat tcagttcaag gagagctttg ctgagatgaa caggggctcc aatgagtgga + 61 agacggttgt gggtgctgcc atgttcttca tcggcttcac agcaattctt atcatcttgg + 121 agaagcgcta tg +// + +LOCUS AACCOSIV3 137 bp DNA PRI 26-JAN-1998 +DEFINITION Aotus azarai cytochrome c oxidase subunit IV gene, exon 5; and + partial cds. +ACCESSION AF042767 +VERSION AF042767.1 GI:2809516 +KEYWORDS . +SEGMENT 3 of 3 +SOURCE Azara's night monkey. + ORGANISM Aotus azarai + Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; + Mammalia; Eutheria; Primates; Platyrrhini; Cebidae; Aotinae; Aotus. +REFERENCE 1 (bases 1 to 137) + AUTHORS Wu,W., Goodman,M., Lomax,M.I. and Grossman,L.I. + TITLE Molecular evolution of cytochrome c oxidase subunit IV: evidence + for positive selection in simian primates + JOURNAL J. Mol. Evol. 44 (5), 477-491 (1997) + MEDLINE 97277139 +REFERENCE 2 (bases 1 to 137) + AUTHORS Wu,W., Goodman,M., Lomax,M.I. and Grossman,L.I. + TITLE Direct Submission + JOURNAL Submitted (14-JAN-1998) CMMG, Wayne State University, 540 E. + Canfield, Detroit, MI 48201, USA +FEATURES Location/Qualifiers + source 1..137 + /organism="Aotus azarai" + /db_xref="taxon:30591" + mRNA join(AF042765.1:<1..168,AF042766.1:1..132,1..>137) + /product="cytochrome c oxidase subunit IV" + CDS join(AF042765.1:<1..168,AF042766.1:1..132,1..137) + /codon_start=3 + /product="cytochrome c oxidase subunit IV" + /protein_id="AAB97755.1" + /db_xref="GI:2809518" + /translation="SVVKSEDYALPSYVDRRDYPLPDVAHVRHLSASQKALKEKEKAS + WSSLSMDEKVELYRIQFKESFAEMNRGSNEWKTVVGAAMFFIGFTAILIILEKRYVYG + PLPHTFDKEWVAMQTKRMLDLKVNPVDGLASKWDYDKKEWKK" + exon 1..137 + /number=5 +BASE COUNT 36 a 36 c 43 g 22 t +ORIGIN + 1 tgtacggccc cctcccgcac acctttgaca aagagtgggt ggccatgcag accaagagga + 61 tgctggacct gaaggtgaac cctgtcgatg gcctcgcctc caagtgggac tacgacaaga + 121 aggagtggaa gaagtga +// +LOCUS AAU18601 1771 bp DNA PRI 17-JAN-1997 +DEFINITION Aotus azarae interphotoreceptor retinoid-binding protein (IRBP) + gene, intron 1, complete sequence. +ACCESSION U18601 +VERSION U18601.1 GI:624187 +KEYWORDS . +SOURCE Azara's night monkey. + ORGANISM Aotus azarai + Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Euteleostomi; + Mammalia; Eutheria; Primates; Platyrrhini; Cebidae; Aotinae; Aotus. +REFERENCE 1 (bases 1 to 1771) + AUTHORS Harada,M.L., Schneider,H., Schneider,M.P., Sampaio,I., + Czelusniak,J. and Goodman,M. + TITLE DNA evidence on the phylogenetic systematics of New World monkeys: + support for the sister-grouping of Cebus and Saimiri from two + unlinked nuclear genes + JOURNAL Mol. Phylogenet. Evol. 4 (3), 331-349 (1995) + MEDLINE 96111507 +REFERENCE 2 (bases 1 to 1771) + AUTHORS Harada,M.L. + TITLE Direct Submission + JOURNAL Submitted (13-DEC-1994) Universidade Federal do Para, Departamento + de Genetica, Campus Universitario do Guama, Belem, Para, 66075-900, + Brazil +FEATURES Location/Qualifiers + source 1..1771 + /organism="Aotus azarai" + /db_xref="taxon:30591" + /tissue_type="lymphocytes" + /dev_stage="adult" + gene 1..1771 + /gene="IRBP" + intron 1..1771 + /gene="IRBP" + /note="interphotoreceptor retinoid-binding protein" + /number=1 +BASE COUNT 384 a 443 c 533 g 411 t +ORIGIN + 1 gtgagaccca agggagacct ggccgggccc agtcctggga gtgagttgac ctgtcgtttg + 61 cacatgcagg gctctgtgca caatgcgtga caatggcttt tagatttgtt ctcatgctta + 121 agttgtggcc agttgagtcc tttcctcttt ccatccactg ttccatccac tctctgggac + 181 cctggtgctg ctgtagaacc tccgtagaac attcatgtta ggttggtgtg aaagtacttt + 241 taattgcaaa acccacaatt acttttgcat caacctcacg ggaagccagt ttggaagcct + 301 cgggatagac agagtttcag ccttggctgg gtggaaggtg agcgttggcg gggcttctca + 361 tcgtcagtgt gggagaagag gccaacatgt ggcagaggtg gcggtgggct tcaccgcgtg + 421 ccccaccgca ggccgagagc tccgcccggg cagcactcac tccacgctgt tctcctacct + 481 gtggctttgc tgcattgtca cagttgggca gggcagcatg tgtcatgaat cccttgcaag + 541 gagggtctga gactggggtt gggtgcaggc agtttgtctg ggaggtggtt gctgaagcag + 601 gtgtgaagga gggagcaggg agagtgagat aggaaggtga caggcaggtc cctcaaagct + 661 gttctgctga agccaggacg ctgacaagtg tggggatgct cccaggcaca gttctctgcg + 721 ggcgggcccc agggctcctg tcccgctttg gccaagagtt gccctgagga cataactcgg + 781 ggtggggcag gctcccctct cttggagaag gcctgagctg agggtggaaa gacaggatgg + 841 tgctgtggga gagcctgtca gtggggccag gtgcagctga aatcagaggg ggctgagagt + 901 gccaacggca tctgttacag aattctcatc cccattttgc ataactgagg cccagagagg + 961 tgcagagggg agtggcctgg agccagagag ctgtgactga aggcagggca gggcctggag + 1021 ggcagtgtct ctgtcagcac aggctccttg ccccagtcca gctcaccaag tcctgccgcc + 1081 ctcccgcagc cttagagagg gaggaagagg tgcatccaca tggaagtagc ctgtgctagg + 1141 ctttcagaat acccagtttc caaattaatt gcttcttcct ttctggtata gccaaggttc + 1201 acaatttgga gtcagatgtg gattcagatg ctggctccac cacttattga ctgtgtaacc + 1261 tgggactagt tacttaatct cactgtgctt cagtttttcc gtggaaaaga tggggaccat + 1321 gttatctcct gtacaggtgg ctgtgaggat gacgataagc tctgcaaagt gcttagtaca + 1381 gggccaggca cctgttaaag gtaactaaca tcttccaatc ctgccccagt ggaggggaag + 1441 ataagcttag agatgttggg aagtatctgg cgaggttgga cgaatcagag aggagaccat + 1501 tcctgggcct tccagctctg aacaccagag cagacaggag catcctctgc aaggaggctt + 1561 cccatggatc acacatgtcc cagtggcatg tcacatccca gacatgccac tgggaaagtc + 1621 ccaggtgcct actgactcct tcagaaatgt cagttcctgt cccatgccct taatatttcc + 1681 catgacataa aggcgatcca tggcacctgc tttcctgggc tcgaaaaccg gctgccctcc + 1741 tgacactgag caggacctcc aactcttgca g +// diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/msf b/forester/archive/RIO/others/hmmer/squid/Formats/msf new file mode 100644 index 0000000..8ef0bcd --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/msf @@ -0,0 +1,266 @@ + + + MSF: 171 Type: P Check: 4694 .. + + Name: GLB2_MORMR oo Len: 171 Check: 6522 Weight: 2.7687 + Name: GLBZ_CHITH oo Len: 171 Check: 6733 Weight: 2.9329 + Name: HBA2_BOSMU oo Len: 171 Check: 5006 Weight: 0.6394 + Name: HBA2_GALCR oo Len: 171 Check: 6652 Weight: 0.5183 + Name: HBA4_SALIR oo Len: 171 Check: 5434 Weight: 1.9511 + Name: HBAD_CHLME oo Len: 171 Check: 6621 Weight: 1.2927 + Name: HBAD_PASMO oo Len: 171 Check: 8118 Weight: 1.2927 + Name: HBAZ_HORSE oo Len: 171 Check: 8382 Weight: 1.6223 + Name: HBA_AILME oo Len: 171 Check: 5402 Weight: 0.4145 + Name: HBA_ANSSE oo Len: 171 Check: 3688 Weight: 0.8315 + Name: HBA_COLLI oo Len: 171 Check: 4420 Weight: 0.8557 + Name: HBA_ERIEU oo Len: 171 Check: 5528 Weight: 0.8390 + Name: HBA_FRAPO oo Len: 171 Check: 4136 Weight: 0.5014 + Name: HBA_MACFA oo Len: 171 Check: 5986 Weight: 0.2233 + Name: HBA_MACSI oo Len: 171 Check: 6064 Weight: 0.2233 + Name: HBA_MESAU oo Len: 171 Check: 5499 Weight: 0.6722 + Name: HBA_PAGLA oo Len: 171 Check: 6189 Weight: 0.5388 + Name: HBA_PHACO oo Len: 171 Check: 5129 Weight: 0.5014 + Name: HBA_PONPY oo Len: 171 Check: 5894 Weight: 0.3907 + Name: HBA_PROLO oo Len: 171 Check: 5810 Weight: 0.4145 + Name: HBA_TRIOC oo Len: 171 Check: 6427 Weight: 0.6883 + Name: HBB1_VAREX oo Len: 171 Check: 7239 Weight: 1.1252 + Name: HBB2_TRICR oo Len: 171 Check: 7790 Weight: 1.9629 + Name: HBB2_XENTR oo Len: 171 Check: 9537 Weight: 1.4685 + Name: HBBL_RANCA oo Len: 171 Check: 7490 Weight: 1.4685 + Name: HBB_CALAR oo Len: 171 Check: 6568 Weight: 0.4226 + Name: HBB_COLLI oo Len: 171 Check: 5043 Weight: 0.7672 + Name: HBB_EQUHE oo Len: 171 Check: 6101 Weight: 0.6734 + Name: HBB_LARRI oo Len: 171 Check: 5673 Weight: 0.7672 + Name: HBB_MANSP oo Len: 171 Check: 7148 Weight: 0.4226 + Name: HBB_ORNAN oo Len: 171 Check: 6249 Weight: 0.6615 + Name: HBB_RABIT oo Len: 171 Check: 7043 Weight: 0.5259 + Name: HBB_SPECI oo Len: 171 Check: 3680 Weight: 0.5422 + Name: HBB_SPETO oo Len: 171 Check: 4246 Weight: 0.5422 + Name: HBB_SUNMU oo Len: 171 Check: 5601 Weight: 0.6734 + Name: HBB_TACAC oo Len: 171 Check: 7133 Weight: 0.6615 + Name: HBB_TRIIN oo Len: 171 Check: 4009 Weight: 0.8445 + Name: HBB_TUPGL oo Len: 171 Check: 7197 Weight: 0.7375 + Name: HBB_URSMA oo Len: 171 Check: 7200 Weight: 0.4695 + Name: HBE_PONPY oo Len: 171 Check: 5902 Weight: 1.0101 + Name: HBF1_URECA oo Len: 171 Check: 6462 Weight: 2.9329 + Name: LGB1_PEA oo Len: 171 Check: 4791 Weight: 2.0005 + Name: LGB1_VICFA oo Len: 171 Check: 7426 Weight: 2.0005 + Name: MYG_ESCGI oo Len: 171 Check: 9170 Weight: 0.7432 + Name: MYG_HORSE oo Len: 171 Check: 1290 Weight: 0.7432 + Name: MYG_LYCPI oo Len: 171 Check: 1107 Weight: 0.8773 + Name: MYG_MOUSE oo Len: 171 Check: 1320 Weight: 1.0018 + Name: MYG_MUSAN oo Len: 171 Check: 5461 Weight: 2.3158 + Name: MYG_PROGU oo Len: 171 Check: 1450 Weight: 0.7629 + Name: MYG_SAISC oo Len: 171 Check: 1728 Weight: 0.7629 + +// + + + +GLB2_MORMR ...PIVD..S GSVSPLSDAE KNKIRAAW.D IVYKNYEKNG VDILVKFFTG +GLBZ_CHITH MKFIILALCV AAASALSGDQ IGLVQST.YG KVKG....DS VGILYAVFKA +HBA2_BOSMU ...V...... .....LSAAD KGNVKAAW.G KVGGHAAEYG AEALERMFLS +HBA2_GALCR ...V...... .....LSPTD KSNVKAAW.E KVGAHAGDYG AEALERMFLS +HBA4_SALIR ...S...... .....LSAKD KANVKAIW.G KILPKSDEIG EQALSRMLVV +HBAD_CHLME ...M...... .....LTADD KKLLTQLW.E KVAGHQEEFG SEALQRMFLT +HBAD_PASMO ...M...... .....LTAED KKLIQQIW.G KLGGAEEEIG ADALWRMFHS +HBAZ_HORSE ...S...... .....LTKAE RTMVVSIW.G KISMQADAVG TEALQRLFSS +HBA_AILME ...V...... .....LSPAD KTNVKATW.D KIGGHAGEYG GEALERTFAS +HBA_ANSSE ...V...... .....LSAAD KGNVKTVF.G KIGGHAEEYG AETLQRMFQT +HBA_COLLI ...V...... .....LSAND KSNVKAVF.A KIGGQAGDLG GEALERLFIT +HBA_ERIEU ...V...... .....LSATD KANVKTFW.G KLGGHGGEYG GEALDRMFQA +HBA_FRAPO ...V...... .....LSAAD KNNVKGIF.G KISSHAEDYG AEALERMFIT +HBA_MACFA ...V...... .....LSPAD KTNVKAAW.G KVGGHAGEYG AEALERMFLS +HBA_MACSI ...V...... .....LSPAD KTNVKDAW.G KVGGHAGEYG AEALERMFLS +HBA_MESAU ...V...... .....LSAKD KTNISEAW.G KIGGHAGEYG AEALERMFFV +HBA_PAGLA ...V...... .....LSSAD KNNIKATW.D KIGSHAGEYG AEALERTFIS +HBA_PHACO ...V...... .....LSAAD KNNVKGIF.T KIAGHAEEYG AEALERMFIT +HBA_PONPY ...V...... .....LSPAD KTNVKTAW.G KVGAHAGDYG AEALERMFLS +HBA_PROLO ...V...... .....LSPAD KANIKATW.D KIGGHAGEYG GEALERTFAS +HBA_TRIOC ...V...... .....LSAND KTNVKTVF.T KITGHAEDYG AETLERMFIT +HBB1_VAREX ...V...... ....HWTAEE KQLICSLW.G KI..DVGLIG GETLAGLLVI +HBB2_TRICR ...V...... ....HLTAED RKEIAAIL.G KV..NVDSLG GQCLARLIVV +HBB2_XENTR ...V...... ....HWTAEE KATIASVW.G KV..DIEQDG HDALSRLLVV +HBBL_RANCA ...V...... ....HWTAEE KAVINSVW.Q KV..DVEQDG HEALTRLFIV +HBB_CALAR ...V...... ....HLTGEE KSAVTALW.G KV..NVDEVG GEALGRLLVV +HBB_COLLI ...V...... ....HWSAEE KQLITSIW.G KV..NVADCG AEALARLLIV +HBB_EQUHE ...V...... ....QLSGEE KAAVLALW.D KV..NEEEVG GEALGRLLVV +HBB_LARRI ...V...... ....HWSAEE KQLITGLW.G KV..NVADCG AEALARLLIV +HBB_MANSP ...V...... ....HLTPEE KTAVTTLW.G KV..NVDEVG GEALGRLLVV +HBB_ORNAN ...V...... ....HLSGGE KSAVTNLW.G KV..NINELG GEALGRLLVV +HBB_RABIT ...V...... ....HLSSEE KSAVTALW.G KV..NVEEVG GEALGRLLVV +HBB_SPECI ...V...... ....HLSDGE KNAISTAW.G KV..HAAEVG AEALGRLLVV +HBB_SPETO ...V...... ....HLTDGE KNAISTAW.G KV..NAAEIG AEALGRLLVV +HBB_SUNMU ...V...... ....HLSGEE KACVTGLW.G KV..NEDEVG AEALGRLLVV +HBB_TACAC ...V...... ....HLSGSE KTAVTNLW.G HV..NVNELG GEALGRLLVV +HBB_TRIIN ...V...... ....HLTPEE KALVIGLW.A KV..NVKEYG GEALGRLLVV +HBB_TUPGL ...V...... ....HLSGEE KAAVTGLW.G KV..DLEKVG GQSLGSLLIV +HBB_URSMA ...V...... ....HLTGEE KSLVTGLW.G KV..NVDEVG GEALGRLLVV +HBE_PONPY ...V...... ....HFTAEE KAAVTSLW.S KM..NVEEAG GEALGRLLVV +HBF1_URECA .......... ....GLTTAQ IKAIQDHWFL NIKGCLQAAA DSIFFKYLTA +LGB1_PEA GFTDKQEALV NSSSE.FKQN LPGYSILFYT IVLEKAP..A AKGL...... +LGB1_VICFA GFTEKQEALV NSSSQLFKQN PSNYSVLFYT IILQKAP..T AKAM...... +MYG_ESCGI ...V...... .....LSDAE WQLVLNIW.A KVEADVAGHG QDILIRLFKG +MYG_HORSE ...G...... .....LSDGE WQQVLNVW.G KVEADIAGHG QEVLIRLFTG +MYG_LYCPI ...G...... .....LSDGE WQIVLNIW.G KVETDLAGHG QEVLIRLFKN +MYG_MOUSE ...G...... .....LSDGE WQLVLNVW.G KVEADLAGHG QEVLIGLFKT +MYG_MUSAN .......... ........VD WEKVNSVW.S AVESDLTAIG QNILLRLFEQ +MYG_PROGU ...G...... .....LSDGE WQLVLNVW.G KVEGDLSGHG QEVLIRLFKG +MYG_SAISC ...G...... .....LSDGE WQLVLNIW.G KVEADIPSHG QEVLISLFKG + + +GLB2_MORMR TPAAQAFFPK FKGLTTADAL KKSSDVRWHA ERIINAVNDA VKSMDDTEKM +GLBZ_CHITH DPTIQAAFPQ FVGK.DLDAI KGGAEFSTHA GRIVGFLGGV IDDLP...NI +HBA2_BOSMU FPTTKTYFPH FD.LSH.... .GSAQVKGHG AKVAAALTKA VGHLDD...L +HBA2_GALCR FPTTKTYFPH FD.LSH.... .GSTQVKGHG KKVADALTNA VLHVDD...M +HBA4_SALIR YPQTKAYFSH WASVAP.... .GSAPVKKHG ITIMNQIDDC VGHMDD...L +HBAD_CHLME YPQTKTYFPH FD.LHP.... .GSEQVRGHG KKVAAALGNA VKSLDN...L +HBAD_PASMO YPSTKTYFPH FD.LSQ.... .GSDQIRGHG KKVVAALSNA IKNLDN...L +HBAZ_HORSE YPQTKTYFPH FD.LHE.... .GSPQLRAHG SKVAAAVGDA VKSIDN...V +HBA_AILME FPTTKTYFPH FD.LSP.... .GSAQVKAHG KKVADALTTA VGHLDD...L +HBA_ANSSE FPQTKTYFPH FD.LQP.... .GSAQIKAHG KKVAAALVEA ANHIDD...I +HBA_COLLI YPQTKTYFPH FD.LSH.... .GSAQIKGHG KKVAEALVEA ANHIDD...I +HBA_ERIEU HPTTKTYFPH FD.LNP.... .GSAQVKGHG KKVADALTTA VNNLDD...V +HBA_FRAPO YPSTKTYFPH FD.LSH.... .GSAQVKGHG KKVVAALIEA ANHIDD...I +HBA_MACFA FPTTKTYFPH FD.LSH.... .GSAQVKGHG KKVADALTLA VGHVDD...M +HBA_MACSI FPTTKTYFPH FD.LSH.... .GSAQVKGHG KKVADALTLA VGHVDD...M +HBA_MESAU YPTTKTYFPH FD.VSH.... .GSAQVKGHG KKVADALTNA VGHLDD...L +HBA_PAGLA FPTTKTYFPH FD.LSH.... .GSAQVKAHG KKVADALTLA VGHLED...L +HBA_PHACO YPSTKTYFPH FD.LSH.... .GSAQIKGHG KKVVAALIEA VNHIDD...I +HBA_PONPY FPTTKTYFPH FD.LSH.... .GSAQVKDHG KKVADALTNA VAHVDD...M +HBA_PROLO FPTTKTYFPH FD.LSP.... .GSAQVKAHG KKVADALTLA VGHLDD...L +HBA_TRIOC YPPTKTYFPH FD.LHH.... .GSAQIKAHG KKVVGALIEA VNHIDD...I +HBB1_VAREX YPWTQRQFSH FGNLSSPTAI AGNPRVKAHG KKVLTSFGDA IKNLDN...I +HBB2_TRICR NPWSRRYFHD FGDLSSCDAI CRNPKVLAHG AKVMRSIVEA TKHLDN...L +HBB2_XENTR YPWTQRYFSS FGNLSNVSAV SGNVKVKAHG NKVLSAVGSA IQHLDD...V +HBBL_RANCA YPWTQRYFST FGDLSSPAAI AGNPKVHAHG KKILGAIDNA IHNLDD...V +HBB_CALAR YPWTQRFFES FGDLSTPDAV MNNPKVKAHG KKVLGAFSDG LTHLDN...L +HBB_COLLI YPWTQRFFSS FGNLSSATAI SGNPNVKAHG KKVLTSFGDA VKNLDN...I +HBB_EQUHE YPWTQRFFDS FGDLSNPAAV MGNPKVKAHG KKVLHSFGEG VHHLDN...L +HBB_LARRI YPWTQRFFAS FGNLSSPTAI NGNPMVRAHG KKVLTSFGEA VKNLDN...I +HBB_MANSP YPWTQRFFDS FGDLSSPDAV MGNPKVKAHG KKVLGAFSDG LNHLDN...L +HBB_ORNAN YPWTQRFFEA FGDLSSAGAV MGNPKVKAHG AKVLTSFGDA LKNLDD...L +HBB_RABIT YPWTQRFFES FGDLSSANAV MNNPKVKAHG KKVLAAFSEG LSHLDN...L +HBB_SPECI YPWTQRFFDS FGDLSSASAV MGNAKVKAHG KKVIDSFSNG LKHLDN...L +HBB_SPETO YPWTQRFFDS FGDLSSASAV MGNAKVKAHG KKVIDSFSNG LKHLDN...L +HBB_SUNMU YPWTQRFFDS FGDLSSASAV MGNPKVKAHG KKVLHSLGEG VANLDN...L +HBB_TACAC YPWTQRFFES FGDLSSADAV MGNAKVKAHG AKVLTSFGDA LKNLDN...L +HBB_TRIIN YPWTQRFFEH FGDLSSASAI MNNPKVKAHG EKVFTSFGDG LKHLED...L +HBB_TUPGL YPWTQRFFDS FGDLSSPSAV MSNPKVKAHG KKVLTSFSDG LNHLDN...L +HBB_URSMA YPWTQRFFDS FGDLSSADAI MNNPKVKAHG KKVLNSFSDG LKNLDN...L +HBE_PONPY YPWTQRFFDS FGNLSSPSAI LGNPKVKAHG KKVLTSFGDA IKNMDN...L +HBF1_URECA YPGDLAFFHK FSSV.PLYGL RSNPAYKAQT LTVINYLDKV VDALGG..NA +LGB1_PEA .......... FSFLKDTAGV EDSPKLQAHA EQVFGLVRDS AAQLRTKGEV +LGB1_VICFA .......... FSFLKDSAGV VDSPKLGAHA EKVFGMVRDS AVQLRATGEV +MYG_ESCGI HPETLEKFDK FKHLKTEAEM KASEDLKKHG NTVLTALGGI LKKKGH...H +MYG_HORSE HPETLEKFDK FKHLKTEAEM KASEDLKKHG TVVLTALGGI LKKKGH...H +MYG_LYCPI HPETLDKFDK FKHLKTEDEM KGSEDLKKHG NTVLTALGGI LKKKGH...H +MYG_MOUSE HPETLDKFDK FKNLKSEEDM KGSEDLKKHG CTVLTALGTI LKKKGQ...H +MYG_MUSAN YPESQNHFPK FKN.KSLGEL KDTADIKAQA DTVLSALGNI VKKKGS...H +MYG_PROGU HPETLEKFDK FKHLKAEDEM RASEELKKHG TTVLTALGGI LKKKGQ...H +MYG_SAISC HPETLEKFDK FKHLKSEDEM KASEELKKHG TTVLTALGGI LKKKGQ...H + + +GLB2_MORMR SMKLQELSVK HAQSFYVDRQ YFKVLAGII. ........AD TTAPGDAGFE +GLBZ_CHITH GKHVDALVAT H.KPRGVTHA QFNNFRAAFI AYLKGHV..D YTAAVEAAWG +HBA2_BOSMU PGALSELSDL HAHKLRVDPV NFKLLSHSLL VTLASHLPSD FTPAVHASLD +HBA2_GALCR PSALSALSDL HAHKLRVDPV NFKLLRHCLL VTLACHHPAE FTPAVHASLD +HBA4_SALIR FGFLTKLSEL HATKLRVDPT NFKILAHNLI VVIAAYFPAE FTPEIHLSVD +HBAD_CHLME SQALSELSNL HAYNLRVDPA NFKLLAQCFQ VVLATHLGKD YSPEMHAAFD +HBAD_PASMO SQALSELSNL HAYNLRVDPV NFKFLSQCLQ VSLATRLGKE YSPEVHSAVD +HBAZ_HORSE AGALAKLSEL HAYILRVDPV NFKFLSHCLL VTLASRLPAD FTADAHAAWD +HBA_AILME PGALSALSDL HAHKLRVDPV NFKLLSHCLL VTLASHHPAE FTPAVHASLD +HBA_ANSSE AGALSKLSDL HAQKLRVDPV NFKFLGHCFL VVLAIHHPSL LTPEVHASMD +HBA_COLLI AGALSKLSDL HAQKLRVDPV NFKLLGHCFL VVVAVHFPSL LTPEVHASLD +HBA_ERIEU PGALSALSDL HAHKLRVDPV NFKLLSHCLL VTLALHHPAD FTPAVHASLD +HBA_FRAPO AGTLSKLSDL HAHKLRVDPV NFKLLGQCFL VVVAIHHPSA LTPEVHASLD +HBA_MACFA PQALSALSDL HAHKLRVDPV NFKLLSHCLL VTLAAHLPAE FTPAVHASLD +HBA_MACSI PQALSALSDL HAHKLRVDPV NFKLLSHCLL VTLAAHLPAE FTPAVHASLD +HBA_MESAU PGALSALSDL HAHKLRVDPV NFKLLSHCLL VTLANHHPAD FTPAVHASLD +HBA_PAGLA PNALSALSDL HAYKLRVDPV NFKLLSHCLL VTLACHHPAE FTPAVHSALD +HBA_PHACO TGTLSKLSDL HAHKLRVDPV NFKLLGQCFL VVVAIHHPSA LTPEVHASLD +HBA_PONPY PNALSALSDL HAHKLRVDPV NFKLLSHCLL VTLAAHLPAE FTPAVHASLD +HBA_PROLO PGALSALSDL HAYKLRVDPV NFKLLSHCLL VTLACHHPAE FTPAVHASLD +HBA_TRIOC AGALSKLSDL HAQKLRVDPV NFKLLGQCFL VVVAIHHPSV LTPEVHASLD +HBB1_VAREX KDTFAKLSEL HCDKLHVDPT NFKLLGNVLV IVLADHHGKE FTPAHHAAYQ +HBB2_TRICR REYYADLSVT HSLKFYVDPE NFKLFSGIVI VCLALTLQTD FSCHKQLAFE +HBB2_XENTR KSHLKGLSKS HAEDLHVDPE NFKRLADVLV IVLAAKLGSA FTPQVQAVWE +HBBL_RANCA KGTLHDLSEE HANELHVDPE NFRRLGEVLI VVLGAKLGKA FSPQVQHVWE +HBB_CALAR KGTFAHLSEL HCDKLHVDPE NFRLLGNVLV CVLAHHFGKE FTPVVQAAYQ +HBB_COLLI KGTFAQLSEL HCDKLHVDPE NFRLLGDILV IILAAHFGKD FTPECQAAWQ +HBB_EQUHE KGTFAQLSEL HCDKLHVDPE NFRLLGNVLV VVLARHFGKD FTPELQASYQ +HBB_LARRI KNTFAQLSEL HCDKLHVDPE NFRLLGDILI IVLAAHFAKD FTPDSQAAWQ +HBB_MANSP KGTFAQLSEL HCDKLHVDPE NFKLLGNVLV CVLAHHFGKE FTPQVQAAYQ +HBB_ORNAN KGTFAKLSEL HCDKLHVDPE NFNRLGNVLI VVLARHFSKD FSPEVQAAWQ +HBB_RABIT KGTFAKLSEL HCDKLHVDPE NFRLLGNVLV IVLSHHFGKE FTPQVQAAYQ +HBB_SPECI KGTFASLSEL HCDKLHVDPE NFKLLGNMIV IVMAHHLGKD FTPEAQAAFQ +HBB_SPETO KGTFASLSEL HCDKLHVDPE NFKLLGNMIV IVMAHHLGKD FTPEAQAAFQ +HBB_SUNMU KGTFAKLSEL HCDKLHVDPE NFRLLGNVLV VVLASKFGKE FTPPVQAAFQ +HBB_TACAC KGTFAKLSEL HCDKLHVDPE NFNRLGNVLV VVLARHFSKE FTPEAQAAWQ +HBB_TRIIN KGAFAELSEL HCDKLHVDPE NFRLLGNVLV CVLARHFGKE FSPEAQAAYQ +HBB_TUPGL KGTFAKLSEL HCDKLHVDPE NFRLLGNVLV RVLACNFGPE FTPQVQAAFQ +HBB_URSMA KGTFAKLSEL HCDKLHVDPE NFKLLGNVLV CVLAHHFGKE FTPQVQAAYQ +HBE_PONPY KTTFAKLSEL HCDKLHVDPE NFKLLGNVMV IILATHFGKE FTPEVQAAWQ +HBF1_URECA GALMKAKVPS H.DAMGITPK HFGQLLKLVG GVFQEEF..S ADPTTVAAWG +LGB1_PEA VLGNATLGAI HVQKGVTNP. HFVVVKEALL QTIKKASGNN WSEELNTAWE +LGB1_VICFA VLDGKD.GSI HIQKGVLDP. HFVVVKEALL KTIKEASGDK WSEELSAAWE +MYG_ESCGI EAELKPLAQS HATKHKIPIK YLEFISDAII HVLHSRHPGD FGADAQAAMN +MYG_HORSE EAELKPLAQS HATKHKIPIK YLEFISDAII HVLHSKHPGN FGADAQGAMT +MYG_LYCPI EAELKPLAQS HATKHKIPVK YLEFISDAII QVLQNKHSGD FHADTEAAMK +MYG_MOUSE AAEIQPLAQS HATKHKIPVK YLEFISEIII EVLKKRHSGD FGADAQGAMS +MYG_MUSAN SQPVKALAAT HITTHKIPPH YFTKITTIAV DVLSEMYPSE MNAQVQAAFS +MYG_PROGU AAELAPLAQS HATKHKIPVK YLEFISEAII QVLQSKHPGD FGADAQGAMS +MYG_SAISC EAELKPLAQS HATKHKIPVK YLELISDAIV HVLQKKHPGD FGADAQGAMK + + +GLB2_MORMR KLMSMICILL SSAY...... . +GLBZ_CHITH ATFDAFFGAV FAK....... M +HBA2_BOSMU KFLANVSTVL TSKYR..... . +HBA2_GALCR KFMASVSTVL TSKYR..... . +HBA4_SALIR KFLQQLALAL AEKYR..... . +HBAD_CHLME KFLSAVAAVL AEKYR..... . +HBAD_PASMO KFMSAVASVL AEKYR..... . +HBAZ_HORSE KFLSIVSSVL TEKYR..... . +HBA_AILME KFFSAVSTVL TSKYR..... . +HBA_ANSSE KFLCAVATVL TAKYR..... . +HBA_COLLI KFVLAVGTVL TAKYR..... . +HBA_ERIEU KFLATVATVL TSKYR..... . +HBA_FRAPO KFLCAVGNVL TAKYR..... . +HBA_MACFA KFLASVSTVL TSKYR..... . +HBA_MACSI KFLASVSTVL TSKYR..... . +HBA_MESAU KFFASVSTVL TSKYR..... . +HBA_PAGLA KFFSAVSTVL TSKYR..... . +HBA_PHACO KFLCAVGTVL TAKYR..... . +HBA_PONPY KFLASVSTVL TSKYR..... . +HBA_PROLO KFFTSVSTVL TSKYR..... . +HBA_TRIOC KFLCAVGNVL SAKYR..... . +HBB1_VAREX KLVNVVSHSL ARRYH..... . +HBB2_TRICR KLMKGVSHAL GHGY...... . +HBB2_XENTR KLNATLVAAL SHGYF..... . +HBBL_RANCA KFIAVLVDAL SHSYH..... . +HBB_CALAR KVVAGVANAL AHKYH..... . +HBB_COLLI KLVRVVAHAL ARKYH..... . +HBB_EQUHE KVVAGVANAL AHKYH..... . +HBB_LARRI KLVRVVAHAL ARKYH..... . +HBB_MANSP KVVAGVANAL AHKYH..... . +HBB_ORNAN KLVSGVAHAL GHKYH..... . +HBB_RABIT KVVAGVANAL AHKYH..... . +HBB_SPECI KVVAGVANAL AHKYH..... . +HBB_SPETO KVVAGVANAL SHKYH..... . +HBB_SUNMU KVVAGVANAL AHKYH..... . +HBB_TACAC KLVSGVSHAL AHKYH..... . +HBB_TRIIN KVVAGVANAL AHKYH..... . +HBB_TUPGL KVVAGVANAL AHKYH..... . +HBB_URSMA KVVAGVANAL AHKYH..... . +HBE_PONPY KLVSAVAIAL AHKYH..... . +HBF1_URECA DAAGVLVAAM .......... K +LGB1_PEA VAYDGLATAI KKAMKT.... A +LGB1_VICFA VAYDGLATAI K....A.... A +MYG_ESCGI KALELFRKDI AAKYKELGFQ G +MYG_HORSE KALELFRNDI AAKYKELGFQ G +MYG_LYCPI KALELFRNDI AAKYKELGFQ G +MYG_MOUSE KALELFRNDI AAKYKELGFQ G +MYG_MUSAN GAFKIICSDI EKEYKAANFQ G +MYG_PROGU KALELFRNDI AAKYKELGFQ G +MYG_SAISC KALELFRNDM AAKYKELGFQ G + diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/phylip b/forester/archive/RIO/others/hmmer/squid/Formats/phylip new file mode 100644 index 0000000..32646bd --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/phylip @@ -0,0 +1,204 @@ + 50 171 +GLB2_MORMR...PIVD..SGSVSPLSDAEKNKIRAAW.DIVYKNYEKNGVDILVKFFTG +GLBZ_CHITHMKFIILALCVAAASALSGDQIGLVQST.YGKVKG....DSVGILYAVFKA +HBA2_BOSMU...V...........LSAADKGNVKAAW.GKVGGHAAEYGAEALERMFLS +HBA2_GALCR...V...........LSPTDKSNVKAAW.EKVGAHAGDYGAEALERMFLS +HBA4_SALIR...S...........LSAKDKANVKAIW.GKILPKSDEIGEQALSRMLVV +HBAD_CHLME...M...........LTADDKKLLTQLW.EKVAGHQEEFGSEALQRMFLT +HBAD_PASMO...M...........LTAEDKKLIQQIW.GKLGGAEEEIGADALWRMFHS +HBAZ_HORSE...S...........LTKAERTMVVSIW.GKISMQADAVGTEALQRLFSS +HBA_AILME ...V...........LSPADKTNVKATW.DKIGGHAGEYGGEALERTFAS +HBA_ANSSE ...V...........LSAADKGNVKTVF.GKIGGHAEEYGAETLQRMFQT +HBA_COLLI ...V...........LSANDKSNVKAVF.AKIGGQAGDLGGEALERLFIT +HBA_ERIEU ...V...........LSATDKANVKTFW.GKLGGHGGEYGGEALDRMFQA +HBA_FRAPO ...V...........LSAADKNNVKGIF.GKISSHAEDYGAEALERMFIT +HBA_MACFA ...V...........LSPADKTNVKAAW.GKVGGHAGEYGAEALERMFLS +HBA_MACSI ...V...........LSPADKTNVKDAW.GKVGGHAGEYGAEALERMFLS +HBA_MESAU ...V...........LSAKDKTNISEAW.GKIGGHAGEYGAEALERMFFV +HBA_PAGLA ...V...........LSSADKNNIKATW.DKIGSHAGEYGAEALERTFIS +HBA_PHACO ...V...........LSAADKNNVKGIF.TKIAGHAEEYGAEALERMFIT +HBA_PONPY ...V...........LSPADKTNVKTAW.GKVGAHAGDYGAEALERMFLS +HBA_PROLO ...V...........LSPADKANIKATW.DKIGGHAGEYGGEALERTFAS +HBA_TRIOC ...V...........LSANDKTNVKTVF.TKITGHAEDYGAETLERMFIT +HBB1_VAREX...V..........HWTAEEKQLICSLW.GKI..DVGLIGGETLAGLLVI +HBB2_TRICR...V..........HLTAEDRKEIAAIL.GKV..NVDSLGGQCLARLIVV +HBB2_XENTR...V..........HWTAEEKATIASVW.GKV..DIEQDGHDALSRLLVV +HBBL_RANCA...V..........HWTAEEKAVINSVW.QKV..DVEQDGHEALTRLFIV +HBB_CALAR ...V..........HLTGEEKSAVTALW.GKV..NVDEVGGEALGRLLVV +HBB_COLLI ...V..........HWSAEEKQLITSIW.GKV..NVADCGAEALARLLIV +HBB_EQUHE ...V..........QLSGEEKAAVLALW.DKV..NEEEVGGEALGRLLVV +HBB_LARRI ...V..........HWSAEEKQLITGLW.GKV..NVADCGAEALARLLIV +HBB_MANSP ...V..........HLTPEEKTAVTTLW.GKV..NVDEVGGEALGRLLVV +HBB_ORNAN ...V..........HLSGGEKSAVTNLW.GKV..NINELGGEALGRLLVV +HBB_RABIT ...V..........HLSSEEKSAVTALW.GKV..NVEEVGGEALGRLLVV +HBB_SPECI ...V..........HLSDGEKNAISTAW.GKV..HAAEVGAEALGRLLVV +HBB_SPETO ...V..........HLTDGEKNAISTAW.GKV..NAAEIGAEALGRLLVV +HBB_SUNMU ...V..........HLSGEEKACVTGLW.GKV..NEDEVGAEALGRLLVV +HBB_TACAC ...V..........HLSGSEKTAVTNLW.GHV..NVNELGGEALGRLLVV +HBB_TRIIN ...V..........HLTPEEKALVIGLW.AKV..NVKEYGGEALGRLLVV +HBB_TUPGL ...V..........HLSGEEKAAVTGLW.GKV..DLEKVGGQSLGSLLIV +HBB_URSMA ...V..........HLTGEEKSLVTGLW.GKV..NVDEVGGEALGRLLVV +HBE_PONPY ...V..........HFTAEEKAAVTSLW.SKM..NVEEAGGEALGRLLVV +HBF1_URECA..............GLTTAQIKAIQDHWFLNIKGCLQAAADSIFFKYLTA +LGB1_PEA GFTDKQEALVNSSSE.FKQNLPGYSILFYTIVLEKAP..AAKGL...... +LGB1_VICFAGFTEKQEALVNSSSQLFKQNPSNYSVLFYTIILQKAP..TAKAM...... +MYG_ESCGI ...V...........LSDAEWQLVLNIW.AKVEADVAGHGQDILIRLFKG +MYG_HORSE ...G...........LSDGEWQQVLNVW.GKVEADIAGHGQEVLIRLFTG +MYG_LYCPI ...G...........LSDGEWQIVLNIW.GKVETDLAGHGQEVLIRLFKN +MYG_MOUSE ...G...........LSDGEWQLVLNVW.GKVEADLAGHGQEVLIGLFKT +MYG_MUSAN ..................VDWEKVNSVW.SAVESDLTAIGQNILLRLFEQ +MYG_PROGU ...G...........LSDGEWQLVLNVW.GKVEGDLSGHGQEVLIRLFKG +MYG_SAISC ...G...........LSDGEWQLVLNIW.GKVEADIPSHGQEVLISLFKG + +TPAAQAFFPKFKGLTTADALKKSSDVRWHAERIINAVNDAVKSMDDTEKM +DPTIQAAFPQFVGK.DLDAIKGGAEFSTHAGRIVGFLGGVIDDLP...NI +FPTTKTYFPHFD.LSH.....GSAQVKGHGAKVAAALTKAVGHLDD...L +FPTTKTYFPHFD.LSH.....GSTQVKGHGKKVADALTNAVLHVDD...M +YPQTKAYFSHWASVAP.....GSAPVKKHGITIMNQIDDCVGHMDD...L +YPQTKTYFPHFD.LHP.....GSEQVRGHGKKVAAALGNAVKSLDN...L +YPSTKTYFPHFD.LSQ.....GSDQIRGHGKKVVAALSNAIKNLDN...L +YPQTKTYFPHFD.LHE.....GSPQLRAHGSKVAAAVGDAVKSIDN...V +FPTTKTYFPHFD.LSP.....GSAQVKAHGKKVADALTTAVGHLDD...L +FPQTKTYFPHFD.LQP.....GSAQIKAHGKKVAAALVEAANHIDD...I +YPQTKTYFPHFD.LSH.....GSAQIKGHGKKVAEALVEAANHIDD...I +HPTTKTYFPHFD.LNP.....GSAQVKGHGKKVADALTTAVNNLDD...V +YPSTKTYFPHFD.LSH.....GSAQVKGHGKKVVAALIEAANHIDD...I +FPTTKTYFPHFD.LSH.....GSAQVKGHGKKVADALTLAVGHVDD...M +FPTTKTYFPHFD.LSH.....GSAQVKGHGKKVADALTLAVGHVDD...M +YPTTKTYFPHFD.VSH.....GSAQVKGHGKKVADALTNAVGHLDD...L +FPTTKTYFPHFD.LSH.....GSAQVKAHGKKVADALTLAVGHLED...L +YPSTKTYFPHFD.LSH.....GSAQIKGHGKKVVAALIEAVNHIDD...I +FPTTKTYFPHFD.LSH.....GSAQVKDHGKKVADALTNAVAHVDD...M +FPTTKTYFPHFD.LSP.....GSAQVKAHGKKVADALTLAVGHLDD...L +YPPTKTYFPHFD.LHH.....GSAQIKAHGKKVVGALIEAVNHIDD...I +YPWTQRQFSHFGNLSSPTAIAGNPRVKAHGKKVLTSFGDAIKNLDN...I +NPWSRRYFHDFGDLSSCDAICRNPKVLAHGAKVMRSIVEATKHLDN...L +YPWTQRYFSSFGNLSNVSAVSGNVKVKAHGNKVLSAVGSAIQHLDD...V +YPWTQRYFSTFGDLSSPAAIAGNPKVHAHGKKILGAIDNAIHNLDD...V +YPWTQRFFESFGDLSTPDAVMNNPKVKAHGKKVLGAFSDGLTHLDN...L +YPWTQRFFSSFGNLSSATAISGNPNVKAHGKKVLTSFGDAVKNLDN...I +YPWTQRFFDSFGDLSNPAAVMGNPKVKAHGKKVLHSFGEGVHHLDN...L +YPWTQRFFASFGNLSSPTAINGNPMVRAHGKKVLTSFGEAVKNLDN...I +YPWTQRFFDSFGDLSSPDAVMGNPKVKAHGKKVLGAFSDGLNHLDN...L +YPWTQRFFEAFGDLSSAGAVMGNPKVKAHGAKVLTSFGDALKNLDD...L +YPWTQRFFESFGDLSSANAVMNNPKVKAHGKKVLAAFSEGLSHLDN...L +YPWTQRFFDSFGDLSSASAVMGNAKVKAHGKKVIDSFSNGLKHLDN...L +YPWTQRFFDSFGDLSSASAVMGNAKVKAHGKKVIDSFSNGLKHLDN...L +YPWTQRFFDSFGDLSSASAVMGNPKVKAHGKKVLHSLGEGVANLDN...L +YPWTQRFFESFGDLSSADAVMGNAKVKAHGAKVLTSFGDALKNLDN...L +YPWTQRFFEHFGDLSSASAIMNNPKVKAHGEKVFTSFGDGLKHLED...L +YPWTQRFFDSFGDLSSPSAVMSNPKVKAHGKKVLTSFSDGLNHLDN...L +YPWTQRFFDSFGDLSSADAIMNNPKVKAHGKKVLNSFSDGLKNLDN...L +YPWTQRFFDSFGNLSSPSAILGNPKVKAHGKKVLTSFGDAIKNMDN...L +YPGDLAFFHKFSSV.PLYGLRSNPAYKAQTLTVINYLDKVVDALGG..NA +..........FSFLKDTAGVEDSPKLQAHAEQVFGLVRDSAAQLRTKGEV +..........FSFLKDSAGVVDSPKLGAHAEKVFGMVRDSAVQLRATGEV +HPETLEKFDKFKHLKTEAEMKASEDLKKHGNTVLTALGGILKKKGH...H +HPETLEKFDKFKHLKTEAEMKASEDLKKHGTVVLTALGGILKKKGH...H +HPETLDKFDKFKHLKTEDEMKGSEDLKKHGNTVLTALGGILKKKGH...H +HPETLDKFDKFKNLKSEEDMKGSEDLKKHGCTVLTALGTILKKKGQ...H +YPESQNHFPKFKN.KSLGELKDTADIKAQADTVLSALGNIVKKKGS...H +HPETLEKFDKFKHLKAEDEMRASEELKKHGTTVLTALGGILKKKGQ...H +HPETLEKFDKFKHLKSEDEMKASEELKKHGTTVLTALGGILKKKGQ...H + +SMKLQELSVKHAQSFYVDRQYFKVLAGII.........ADTTAPGDAGFE +GKHVDALVATH.KPRGVTHAQFNNFRAAFIAYLKGHV..DYTAAVEAAWG +PGALSELSDLHAHKLRVDPVNFKLLSHSLLVTLASHLPSDFTPAVHASLD +PSALSALSDLHAHKLRVDPVNFKLLRHCLLVTLACHHPAEFTPAVHASLD +FGFLTKLSELHATKLRVDPTNFKILAHNLIVVIAAYFPAEFTPEIHLSVD +SQALSELSNLHAYNLRVDPANFKLLAQCFQVVLATHLGKDYSPEMHAAFD +SQALSELSNLHAYNLRVDPVNFKFLSQCLQVSLATRLGKEYSPEVHSAVD +AGALAKLSELHAYILRVDPVNFKFLSHCLLVTLASRLPADFTADAHAAWD +PGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLASHHPAEFTPAVHASLD +AGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVLAIHHPSLLTPEVHASMD +AGALSKLSDLHAQKLRVDPVNFKLLGHCFLVVVAVHFPSLLTPEVHASLD +PGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLALHHPADFTPAVHASLD +AGTLSKLSDLHAHKLRVDPVNFKLLGQCFLVVVAIHHPSALTPEVHASLD +PQALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLD +PQALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLD +PGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLANHHPADFTPAVHASLD +PNALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTPAVHSALD +TGTLSKLSDLHAHKLRVDPVNFKLLGQCFLVVVAIHHPSALTPEVHASLD +PNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTPAVHASLD +PGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTPAVHASLD +AGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSVLTPEVHASLD +KDTFAKLSELHCDKLHVDPTNFKLLGNVLVIVLADHHGKEFTPAHHAAYQ +REYYADLSVTHSLKFYVDPENFKLFSGIVIVCLALTLQTDFSCHKQLAFE +KSHLKGLSKSHAEDLHVDPENFKRLADVLVIVLAAKLGSAFTPQVQAVWE +KGTLHDLSEEHANELHVDPENFRRLGEVLIVVLGAKLGKAFSPQVQHVWE +KGTFAHLSELHCDKLHVDPENFRLLGNVLVCVLAHHFGKEFTPVVQAAYQ +KGTFAQLSELHCDKLHVDPENFRLLGDILVIILAAHFGKDFTPECQAAWQ +KGTFAQLSELHCDKLHVDPENFRLLGNVLVVVLARHFGKDFTPELQASYQ +KNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFAKDFTPDSQAAWQ +KGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFGKEFTPQVQAAYQ +KGTFAKLSELHCDKLHVDPENFNRLGNVLIVVLARHFSKDFSPEVQAAWQ +KGTFAKLSELHCDKLHVDPENFRLLGNVLVIVLSHHFGKEFTPQVQAAYQ +KGTFASLSELHCDKLHVDPENFKLLGNMIVIVMAHHLGKDFTPEAQAAFQ +KGTFASLSELHCDKLHVDPENFKLLGNMIVIVMAHHLGKDFTPEAQAAFQ +KGTFAKLSELHCDKLHVDPENFRLLGNVLVVVLASKFGKEFTPPVQAAFQ +KGTFAKLSELHCDKLHVDPENFNRLGNVLVVVLARHFSKEFTPEAQAAWQ +KGAFAELSELHCDKLHVDPENFRLLGNVLVCVLARHFGKEFSPEAQAAYQ +KGTFAKLSELHCDKLHVDPENFRLLGNVLVRVLACNFGPEFTPQVQAAFQ +KGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFGKEFTPQVQAAYQ +KTTFAKLSELHCDKLHVDPENFKLLGNVMVIILATHFGKEFTPEVQAAWQ +GALMKAKVPSH.DAMGITPKHFGQLLKLVGGVFQEEF..SADPTTVAAWG +VLGNATLGAIHVQKGVTNP.HFVVVKEALLQTIKKASGNNWSEELNTAWE +VLDGKD.GSIHIQKGVLDP.HFVVVKEALLKTIKEASGDKWSEELSAAWE +EAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSRHPGDFGADAQAAMN +EAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSKHPGNFGADAQGAMT +EAELKPLAQSHATKHKIPVKYLEFISDAIIQVLQNKHSGDFHADTEAAMK +AAEIQPLAQSHATKHKIPVKYLEFISEIIIEVLKKRHSGDFGADAQGAMS +SQPVKALAATHITTHKIPPHYFTKITTIAVDVLSEMYPSEMNAQVQAAFS +AAELAPLAQSHATKHKIPVKYLEFISEAIIQVLQSKHPGDFGADAQGAMS +EAELKPLAQSHATKHKIPVKYLELISDAIVHVLQKKHPGDFGADAQGAMK + +KLMSMICILLSSAY....... +ATFDAFFGAVFAK.......M +KFLANVSTVLTSKYR...... +KFMASVSTVLTSKYR...... +KFLQQLALALAEKYR...... +KFLSAVAAVLAEKYR...... +KFMSAVASVLAEKYR...... +KFLSIVSSVLTEKYR...... +KFFSAVSTVLTSKYR...... +KFLCAVATVLTAKYR...... +KFVLAVGTVLTAKYR...... +KFLATVATVLTSKYR...... +KFLCAVGNVLTAKYR...... +KFLASVSTVLTSKYR...... +KFLASVSTVLTSKYR...... +KFFASVSTVLTSKYR...... +KFFSAVSTVLTSKYR...... +KFLCAVGTVLTAKYR...... +KFLASVSTVLTSKYR...... +KFFTSVSTVLTSKYR...... +KFLCAVGNVLSAKYR...... +KLVNVVSHSLARRYH...... +KLMKGVSHALGHGY....... +KLNATLVAALSHGYF...... +KFIAVLVDALSHSYH...... +KVVAGVANALAHKYH...... +KLVRVVAHALARKYH...... +KVVAGVANALAHKYH...... +KLVRVVAHALARKYH...... +KVVAGVANALAHKYH...... +KLVSGVAHALGHKYH...... +KVVAGVANALAHKYH...... +KVVAGVANALAHKYH...... +KVVAGVANALSHKYH...... +KVVAGVANALAHKYH...... +KLVSGVSHALAHKYH...... +KVVAGVANALAHKYH...... +KVVAGVANALAHKYH...... +KVVAGVANALAHKYH...... +KLVSAVAIALAHKYH...... +DAAGVLVAAM..........K +VAYDGLATAIKKAMKT....A +VAYDGLATAIK....A....A +KALELFRKDIAAKYKELGFQG +KALELFRNDIAAKYKELGFQG +KALELFRNDIAAKYKELGFQG +KALELFRNDIAAKYKELGFQG +GAFKIICSDIEKEYKAANFQG +KALELFRNDIAAKYKELGFQG +KALELFRNDMAAKYKELGFQG diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/pir b/forester/archive/RIO/others/hmmer/squid/Formats/pir new file mode 100644 index 0000000..0999703 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/pir @@ -0,0 +1,249 @@ + + P R O T E I N S E Q U E N C E D A T A B A S E + of PIR-International + + Section 1. Fully Classified Entries + Release 63.00, December 30, 1999 + 20032 sequences, 7820966 residues + + Protein Information Resource (PIR)* + National Biomedical Research Foundation + 3900 Reservoir Road, N.W., + Washington, DC 20007, USA + +International Protein Information Munich Information Center for + Database in Japan (JIPID) Protein Sequences (MIPS) + Science University of Tokyo GSF-Forschungszentrum f. Umwelt und Gesundheit + 2669 Yamazaki, Noda 278, Japan am Max-Planck-Instut f. Biochemie + Am Klopferspitz 18, D-82152 Martinsried, FRG + + This database may be redistributed without prior consent, provided that + this notice be given to each user and that the words "Derived from" shall + precede this notice if the database has been altered by the redistributor. + + *PIR is a registered mark of NBRF. + + +\\\ +ENTRY CCHU #type complete +TITLE cytochrome c - human +ORGANISM #formal_name Homo sapiens #common_name man +DATE 24-Apr-1984 #sequence_revision 30-Sep-1991 #text_change + 28-Jun-1999 +ACCESSIONS A31764; A05676; I55192; A00001 +REFERENCE A31764 + #authors Evans, M.J.; Scarpulla, R.C. + #journal Proc. Natl. Acad. Sci. U.S.A. (1988) 85:9625-9629 + #title The human somatic cytochrome c gene: two classes of processed + pseudogenes demarcate a period of rapid molecular + evolution. + #cross-references MUID:89071748 + #accession A31764 + ##molecule_type DNA + ##residues 1-105 ##label EVA + ##cross-references GB:M22877; NID:g181241; PIDN:AAA35732.1; PID:g181242 +REFERENCE A05676 + #authors Matsubara, H.; Smith, E.L. + #journal J. Biol. Chem. (1963) 238:2732-2753 + #title Human heart cytochrome c. Chymotryptic peptides, tryptic + peptides, and the complete amino acid sequence. + #accession A05676 + ##molecule_type protein + ##residues 2-28;29-46;47-100;101-105 ##label MATS +REFERENCE A00001 + #authors Matsubara, H.; Smith, E.L. + #journal J. Biol. Chem. (1962) 237:3575-3576 + #title The amino acid sequence of human heart cytochrome c. + #contents annotation + #note 66-Leu is found in 10% of the molecules in pooled protein +REFERENCE I55192 + #authors Tanaka, Y.; Ashikari, T.; Shibano, Y.; Amachi, T.; Yoshizumi, + H.; Matsubara, H. + #journal J. Biochem. (1988) 103:954-961 + #title Construction of a human cytochrome c gene and its functional + expression in Saccharomyces cerevisiae. + #cross-references MUID:89008207 + #accession I55192 + ##status translated from GB/EMBL/DDBJ + ##molecule_type mRNA + ##residues 78-105 ##label RES + ##cross-references GB:D00265; NID:g2897691; PIDN:BAA00187.1; + PID:d1000635; PID:g219557 +GENETICS + #introns 57/1 +CLASSIFICATION #superfamily cytochrome c; cytochrome c homology +KEYWORDS acetylated amino end; chromoprotein; electron transfer; heme; + iron; mitochondrion; oxidative phosphorylation; + polymorphism; respiratory chain +FEATURE + 2-105 #product cytochrome c #status experimental #label MAT\ + 5-99 #domain cytochrome c homology #label CYC\ + 2 #modified_site acetylated amino end (Gly) (in mature + form) #status experimental\ + 15,18 #binding_site heme (Cys) (covalent) #status + experimental\ + 19,81 #binding_site heme iron (His, Met) (axial ligands) + #status predicted +SUMMARY #length 105 #molecular-weight 11749 #checksum 3247 +SEQUENCE + 5 10 15 20 25 30 + 1 M G D V E K G K K I F I M K C S Q C H T V E K G G K H K T G + 31 P N L H G L F G R K T G Q A P G Y S Y T A A N K N K G I I W + 61 G E D T L M E Y L E N P K K Y I P G T K M I F V G I K K K E + 91 E R A D L I A Y L K K A T N E +/// +ENTRY CCCZ #type complete +TITLE cytochrome c - chimpanzee (tentative sequence) +ORGANISM #formal_name Pan troglodytes #common_name chimpanzee +DATE 17-Mar-1987 #sequence_revision 17-Mar-1987 #text_change + 25-Apr-1997 +ACCESSIONS A00002 +REFERENCE A94601 + #authors Needleman, S.B. + #submission submitted to the Atlas, October 1968 + #accession A00002 + ##molecule_type protein + ##residues 1-104 ##label NEE +REFERENCE A94455 + #authors Needleman, S.B.; Margoliash, E. + #citation unpublished results, 1966, cited by Margoliash, E., and + Fitch, W.M., Ann. N.Y. Acad. Sci. 151, 359-381, 1968 + #contents annotation; compositions of chymotryptic peptides +CLASSIFICATION #superfamily cytochrome c; cytochrome c homology +KEYWORDS acetylated amino end; chromoprotein; electron transfer; heme; + iron; mitochondrion; oxidative phosphorylation; respiratory + chain +FEATURE + 4-98 #domain cytochrome c homology #label CYC\ + 1 #modified_site acetylated amino end (Gly) #status + predicted\ + 14,17 #binding_site heme (Cys) (covalent) #status predicted\ + 18,80 #binding_site heme iron (His, Met) (axial ligands) + #status predicted +SUMMARY #length 104 #molecular-weight 11617 #checksum 9501 +SEQUENCE + 5 10 15 20 25 30 + 1 G D V E K G K K I F I M K C S Q C H T V E K G G K H K T G P + 31 N L H G L F G R K T G Q A P G Y S Y T A A N K N K G I I W G + 61 E D T L M E Y L E N P K K Y I P G T K M I F V G I K K K E E + 91 R A D L I A Y L K K A T N E +/// +ENTRY CCMQR #type complete +TITLE cytochrome c - rhesus macaque (tentative sequence) +ORGANISM #formal_name Macaca mulatta #common_name rhesus macaque +DATE 17-Mar-1987 #sequence_revision 17-Mar-1987 #text_change + 25-Apr-1997 +ACCESSIONS A00003 +REFERENCE A00003 + #authors Rothfus, J.A.; Smith, E.L. + #journal J. Biol. Chem. (1965) 240:4277-4283 + #title Amino acid sequence of rhesus monkey heart cytochrome c. + #cross-references MUID:66045191 + #contents compositions of chymotryptic peptides; sequences of residues + 55-61 and 68-70 + #accession A00003 + ##molecule_type protein + ##residues 1-104 ##label ROT +CLASSIFICATION #superfamily cytochrome c; cytochrome c homology +KEYWORDS acetylated amino end; chromoprotein; electron transfer; heme; + iron; mitochondrion; oxidative phosphorylation; respiratory + chain +FEATURE + 4-98 #domain cytochrome c homology #label CYC\ + 1 #modified_site acetylated amino end (Gly) #status + experimental\ + 14,17 #binding_site heme (Cys) (covalent) #status predicted\ + 18,80 #binding_site heme iron (His, Met) (axial ligands) + #status predicted +SUMMARY #length 104 #molecular-weight 11605 #checksum 9512 +SEQUENCE + 5 10 15 20 25 30 + 1 G D V E K G K K I F I M K C S Q C H T V E K G G K H K T G P + 31 N L H G L F G R K T G Q A P G Y S Y T A A N K N K G I T W G + 61 E D T L M E Y L E N P K K Y I P G T K M I F V G I K K K E E + 91 R A D L I A Y L K K A T N E +/// +ENTRY CCMKP #type complete +TITLE cytochrome c - spider monkey +ORGANISM #formal_name Ateles sp. #common_name spider monkey +DATE 17-Dec-1982 #sequence_revision 17-Dec-1982 #text_change + 25-Apr-1997 +ACCESSIONS A00004 +REFERENCE A00004 + #authors Margoliash, E. + #citation unpublished results, cited by Shelnutt, J.A., Rousseau, D.L., + Dethmers, J.K., and Margoliash, E., Biochemistry 20, + 6485-6497, 1981 + #accession A00004 + ##molecule_type protein + ##residues 1-104 ##label MAR +CLASSIFICATION #superfamily cytochrome c; cytochrome c homology +KEYWORDS acetylated amino end; chromoprotein; electron transfer; heme; + iron; mitochondrion; oxidative phosphorylation; respiratory + chain +FEATURE + 4-98 #domain cytochrome c homology #label CYC\ + 1 #modified_site acetylated amino end (Gly) #status + predicted\ + 14,17 #binding_site heme (Cys) (covalent) #status predicted\ + 18,80 #binding_site heme iron (His, Met) (axial ligands) + #status predicted +SUMMARY #length 104 #molecular-weight 11710 #checksum 9066 +SEQUENCE + 5 10 15 20 25 30 + 1 G D V F K G K R I F I M K C S Q C H T V E K G G K H K T G P + 31 N L H G L F G R K T G Q A S G F T Y T E A N K N K G I I W G + 61 E D T L M E Y L E N P K K Y I P G T K M I F V G I K K K E E + 91 R A D L I A Y L K K A T N E +/// +ENTRY CCMS #type complete +TITLE cytochrome c - mouse +ORGANISM #formal_name Mus musculus #common_name house mouse +DATE 31-Dec-1990 #sequence_revision 30-Sep-1991 #text_change + 11-Jun-1999 +ACCESSIONS A23057; A04604; A00009 +REFERENCE A23057 + #authors Limbach, K.J.; Wu, R. + #journal Nucleic Acids Res. (1985) 13:617-630 + #title Characterization of a mouse somatic cytochrome c gene and + three cytochrome c pseudogenes. + #cross-references MUID:85215501 + #accession A23057 + ##molecule_type DNA + ##residues 1-105 ##label LIM + ##cross-references EMBL:X01756; NID:g50618; PIDN:CAA25899.1; PID:g50619 + ##experimental_source strain BALB/c +REFERENCE A04604 + #authors Carlson, S.S.; Mross, G.A.; Wilson, A.C.; Mead, R.T.; Wolin, + L.D.; Bowers, S.F.; Foley, N.T.; Muijsers, A.O.; + Margoliash, E. + #journal Biochemistry (1977) 16:1437-1442 + #title Primary structure of mouse, rat, and guinea pig cytochrome c. + #cross-references MUID:77134768 + #accession A04604 + ##molecule_type protein + ##residues 2-105 ##label CAR + ##experimental_source strain BALB/c +GENETICS + #introns 57/1 +CLASSIFICATION #superfamily cytochrome c; cytochrome c homology +KEYWORDS acetylated amino end; chromoprotein; electron transfer; heme; + iron; mitochondrion; oxidative phosphorylation; respiratory + chain +FEATURE + 2-105 #product cytochrome c #status experimental #label MAT\ + 5-99 #domain cytochrome c homology #label CYC\ + 2 #modified_site acetylated amino end (Gly) (in mature + form) #status experimental\ + 15,18 #binding_site heme (Cys) (covalent) #status + experimental\ + 19,81 #binding_site heme iron (His, Met) (axial ligands) + #status predicted +SUMMARY #length 105 #molecular-weight 11605 #checksum 1273 +SEQUENCE + 5 10 15 20 25 30 + 1 M G D V E K G K K I F V Q K C A Q C H T V E K G G K H K T G + 31 P N L H G L F G R K T G Q A A G F S Y T D A N K N K G I T W + 61 G E D T L M E Y L E N P K K Y I P G T K M I F A G I K K K G + 91 E R A D L I A Y L K K A T N E +/// diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/regression.dat b/forester/archive/RIO/others/hmmer/squid/Formats/regression.dat new file mode 100644 index 0000000..5743930 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/regression.dat @@ -0,0 +1,20 @@ +# filename format type nseq nres short long autodetect? alignment? singleseq? +# -------- -------- ------- ---- ---- ----- ---- ---------- ---------- ---------- +fasta fasta Protein 3 1730 356 949 yes no no +genbank genbank DNA 6 3773 132 1771 yes no no +embl embl DNA 2 1868 233 1635 yes no no +swissprot embl Protein 6 2779 75 924 yes no no +gcg gcg DNA 1 9718 9718 9718 yes no yes +gcgdata.1 gcgdata Protein 20 7100 29 1299 yes no no +gcgdata.2 gcgdata DNA 7 5867 105 2886 yes no no +pir pir Protein 5 522 104 105 yes no no +stockholm.1 stockholm Protein 7 266 38 38 yes yes no +stockholm.2 stockholm Protein 16 3769 227 239 yes yes no +msf msf Protein 50 7251 141 153 yes yes no +clustal clustal DNA 20 1518 75 80 yes yes no +selex.1 selex RNA 11 201 11 29 yes yes no +selex.2 selex RNA 11 201 11 29 yes yes no +phylip phylip Protein 50 7251 141 153 yes yes no +a2m a2m Protein 50 7251 141 153 no yes no + + diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/selex.1 b/forester/archive/RIO/others/hmmer/squid/Formats/selex.1 new file mode 100644 index 0000000..bf2f905 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/selex.1 @@ -0,0 +1,37 @@ +#=ID r17 +#=AC PF99999 +#=DE Test of extended SELEX format +#=AU SRE, Tue Dec 1 19:17:48 1998 +#=GA -1.0 -2.0 +#=TC -3.0 -4.0 +#=NC -5.0 -6.0 + +# Derived from r17.slx +#tag name weight source src acc # from,to,olen description +#=SQ 28 1.0000 IDENT: ACCESSION 1..29::29 Sequence one +#=SQ longname 102.0000 SWISS NUMBER; 3..19::100 A long name +#=SQ 2 2.0000 OR OR 0..0::0 two +#=SQ 3 3.0000 PIR - 0..0::0 three +#=SQ 4 4.0000 OR FOR 0..0::0 - means no data +#=SQ 5 5.0000 WHATEVER MISSING 0..0::0 - +#=SQ 6 6.0000 - DATA 0..0::0 foo +#=SQ 7 7 - - 0..0::0 bar +#=SQ 8 8.0000 - - 0..0::0 baz +#=SQ 9 9.0000 - - 0..0::0 a description of several words. +#=SQ 10 10.0000 - - 0..0::0 - + +#=RF xxxxxxx xxxx xxxxxx +#=CS >>>>+>> ^^^^ <<<<<< +28 gGAGUAAGAUAGC AUCA GCAUCUUGUUCC +#=SS +++++>>>>>+>> ^^^^ <<<<<<<+++++ +longname GUUCACC AUCA GGGGAc +#=SS >>>>+>> ^^^^ <<<<<< +2 AUGGAUGCGCACC AUCA GGGCGUaucuau +3 GAUCACC AUCA GGGauc +4 GGUCACC AUCA GGGauc +5 GGACACC AUCA GGGucu +6 CACC AUCA GGG +7 GAUCACC AUCA GGGauc +8 CUCACC AUCA GGGGG +9 AUGCACC AUCA GGGCAU +10 CUCACC AUCA GGGGG diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/selex.2 b/forester/archive/RIO/others/hmmer/squid/Formats/selex.2 new file mode 100644 index 0000000..1f8f6c7 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/selex.2 @@ -0,0 +1,11 @@ +28 gGAGUAAGAUAGC AUCA GCAUCUUGUUCC +longname GUUCACC AUCA GGGGAc +2 AUGGAUGCGCACC AUCA GGGCGUaucuau +3 GAUCACC AUCA GGGauc +4 GGUCACC AUCA GGGauc +5 GGACACC AUCA GGGucu +6 CACC AUCA GGG +7 GAUCACC AUCA GGGauc +8 CUCACC AUCA GGGGG +9 AUGCACC AUCA GGGCAU +10 CUCACC AUCA GGGGG diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/stockholm.1 b/forester/archive/RIO/others/hmmer/squid/Formats/stockholm.1 new file mode 100644 index 0000000..c557d53 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/stockholm.1 @@ -0,0 +1,94 @@ +# STOCKHOLM 1.0 +# +# This is an example of a Stockholm multiple sequence alignment +# file. It is deliberately designed to exercise many of the +# features of Stockholm format, in order to test a parser. +# +#=GF ID 14-3-3 +#=GF AC PF00244 +#=GF DE 14-3-3 proteins +#=GF AU Finn RD +#=GF AL Clustalw +#=GF SE Prosite +#=GF GA 25 25 +#=GF TC 35.40 35.40 +#=GF NC 8.80 8.80 +#=GF BM hmmbuild -f HMM SEED +#=GF BM hmmcalibrate --seed 0 HMM +#=GF RN [1] +#=GF RM 95327195 +#=GF RT Structure of a 14-3-3 protein and implications for +#=GF RT coordination of multiple signalling pathways. +#=GF RA Xiao B, Smerdon SJ, Jones DH, Dodson GG, Soneji Y, Aitken +#=GF RA A, Gamblin SJ; +#=GF RL Nature 1995;376:188-191. +#=GF RN [2] +#=GF RM 95327196 +#=GF RT Crystal structure of the zeta isoform of the 14-3-3 +#=GF RT protein. +#=GF RA Liu D, Bienkowska J, Petosa C, Collier RJ, Fu H, Liddington +#=GF RA R; +#=GF RL Nature 1995;376:191-194. +#=GF DR PROSITE; PDOC00633; +#=GF DR SMART; 14_3_3; +#=GF DR PRINTS; PR00305; +#=GF SQ 119 + +#=GS 1431_ENTHI/4-239 WT 0.42 +#=GS seq1 WT 0.40 +#=GS seq2 WT 0.41 +#=GS seq3 WT 0.43 +#=GS seq4 WT 0.44 +#=GS seq5 WT 0.45 +#=GS seq6 WT 0.46 + +#=GS seq4 AC PF00001 +#=GS seq4 DE A description of seq4. + +#=GS seq1 NEWTAG foo +#=GS seq2 NEWTAG bar +#=GS seq3 NEWTAG baz + +#=GS seq3 TAG2 foo2 +#=GS seq4 TAG2 foo3 +#=GS seq5 TAG2 foo4 + +#=GC SS_cons xxxxxxxxxxxxxxxxxxx +#=GC SA_cons xxxxxxxxxxxxxxxxxxx +#=GC New_long_tag_thingie xxxxxxxxxxxxxxxxxxx +1431_ENTHI/4-239 ACDEFGHKLMNPQRSTVWY +#=GR seq1 SS ................... +#=GR seq1 SA 0000000000000000000 +seq1 ACDEFGHKLMNPQRSTVWY +seq2 ACDEFGHKLMNPQRSTVWY +seq3 ACDEFGHKLMNPQRSTVWY +seq4 ACDEFGHKLMNPQRSTVWY +seq5 ACDEFGHKLMNPQRSTVWY +seq6 ACDEFGHKLMNPQRSTVWY +#=GR seq6 SS ................... +#=GR seq6 SA 9999999999999999999 +#=GR seq6 Invented_tag ******************* + + +#=GC SS_cons xxxxxxxxxxxxxxxxxxx +#=GC SA_cons xxxxxxxxxxxxxxxxxxx +#=GC New_long_tag_thingie xxxxxxxxxxxxxxxxxxx +1431_ENTHI/4-239 ACDEFGHKLMNPQRSTVWY +#=GR seq1 SS ................... +#=GR seq1 SA 0000000000000000000 +seq1 ACDEFGHKLMNPQRSTVWY +seq2 ACDEFGHKLMNPQRSTVWY +seq3 ACDEFGHKLMNPQRSTVWY +seq4 ACDEFGHKLMNPQRSTVWY +seq5 ACDEFGHKLMNPQRSTVWY +seq6 ACDEFGHKLMNPQRSTVWY +#=GR seq6 SS ................... +#=GR seq6 SA 9999999999999999999 +#=GR seq6 Invented_tag ******************* + +# +# And here's some trailing comments, just to +# try to confuse a parser. +# + +// \ No newline at end of file diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/stockholm.2 b/forester/archive/RIO/others/hmmer/squid/Formats/stockholm.2 new file mode 100644 index 0000000..ba224d4 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/stockholm.2 @@ -0,0 +1,366 @@ +# STOCKHOLM 1.0 +#=GF ID 14-3-3 +#=GF AC PF00244 +#=GF DE 14-3-3 proteins +#=GF AU Finn RD +#=GF AL Clustalw +#=GF SE Prosite +#=GF GA 25 25 +#=GF TC 35.40 35.40 +#=GF NC 8.80 8.80 +#=GF BM hmmbuild -f HMM SEED +#=GF BM hmmcalibrate --seed 0 HMM +#=GF RN [1] +#=GF RM 95327195 +#=GF RT Structure of a 14-3-3 protein and implications for +#=GF RT coordination of multiple signalling pathways. +#=GF RA Xiao B, Smerdon SJ, Jones DH, Dodson GG, Soneji Y, Aitken A, +#=GF RA Gamblin SJ; +#=GF RL Nature 1995;376:188-191. +#=GF RN [2] +#=GF RM 95327196 +#=GF RT Crystal structure of the zeta isoform of the 14-3-3 protein. +#=GF RA Liu D, Bienkowska J, Petosa C, Collier RJ, Fu H, Liddington +#=GF RA R; +#=GF RL Nature 1995;376:191-194. +#=GF RN [3] +#=GF RM 96182649 +#=GF RT Interaction of 14-3-3 with signaling proteins is mediated by +#=GF RT the recognition of phosphoserine. +#=GF RA Muslin AJ, Tanner JW, Allen PM, Shaw AS; +#=GF RL Cell 1996;84:889-897. +#=GF RN [4] +#=GF RM 97424374 +#=GF RT The 14-3-3 protein binds its target proteins with a common +#=GF RT site located towards the C-terminus. +#=GF RA Ichimura T, Ito M, Itagaki C, Takahashi M, Horigome T, Omata +#=GF RA S, Ohno S, Isobe T +#=GF RL FEBS Lett 1997;413:273-276. +#=GF RN [5] +#=GF RM 96394689 +#=GF RT Molecular evolution of the 14-3-3 protein family. +#=GF RA Wang W, Shakes DC +#=GF RL J Mol Evol 1996;43:384-398. +#=GF RN [6] +#=GF RM 96300316 +#=GF RT Function of 14-3-3 proteins. +#=GF RA Jin DY, Lyu MS, Kozak CA, Jeang KT +#=GF RL Nature 1996;382:308-308. +#=GF DR PROSITE; PDOC00633; +#=GF DR SMART; 14_3_3; +#=GF DR PRINTS; PR00305; +#=GF SQ 16 +1431_ENTHI/4-239 REDCVYTAKLAEQSERYDEMVQCMKQVAEMEA...ELSIEERNLLSVAYKNVIGAKRASWRIISSLEQKEQAKG.NDKHVEIIKGYRAKIEKELSTCCDDVLKVIQENLLPKA..STSESKVFFKKMEGDYYRYFAEFTVDEKRKEVADKSLAAYTEATEISNAELAPTHPIRLGLALNFSVFYFEIMNDADKACQLAKQAFDDAIAKLDEVPENMYKDSTLIMQLLRDNLTLWTSDACDEE +#=GS 1431_ENTHI/4-239 AC P42648 +1432_ENTHI/4-238 REDLVYLSKLAEQSERYEEMVQYMKQVAEMGT...ELSVEERNLISVAYKNVVGSRRASWRIISSLEQKEQAKG.NTQRVELIKTYRAKIEQELSQKCDDVLKIITEFLLKNS..TSIESKVFFKKMEGDYYRYYAEFTVDEKRKEVADKSLAAYQEATDTA.ASLVPTHPIRLGLALNFSVFYYQIMNDADKACQLAKEAFDEAIQKLDEVPEESYKESTLIMQLLRDNLTLWTSDMGDDE +#=GS 1432_ENTHI/4-238 AC P42649 +1433_CAEEL/5-237 VEELVQRAKLAEQAERYDDMAAAMKKVTEQGQ...ELSNEERNLLSVAYKNVVGARRSSWRVISSIEQKTEG...SEKKQQLAKEYRVKVEQELNDICQDVLKLLDEFLIVKA..GAAESKAFYLKMKGDYYRYLAEVAS.EDRAAVVEKSQKAYQEALDIAKDKMQPTHPIRLGLALNFSVFYYEILNTPEHACQLAKQAFDDAIAELDTLNEDSYKDSTLIMQLLRDNLTLWTSDVGAED +#=GS 1433_CAEEL/5-237 AC P41932 +1433_LYCES/9-246 REENVYMAKLADRAESDEEMVEFMEKVSNSLGS.EELTVEERNLLSVAYKNVIGARRASWRIISSIEQKEESRG.NEEHVNSIREYRSKIENELSKICDGILKLLDSKLIPSA..TSGDSKVFYLKMKGDYHRYLAEFKTGAERKEAAESTLTAYKAAQDIASAELAPTHPIRLGLALNFSVFYYEILNSPDRACNLAKQAFDEAIAELDTLGEESYKDSTLIMQLLRDNLTLWTSDMQDDG +#=GS 1433_LYCES/9-246 AC P93209 +1433_XENLA/1-227 .......AKLSEQAERYDDMAASMKAVTELGA...ELSNEERNLLSVAYKNVVGARRSSWRVISSIEQKTEG...NDKRQQMAREYREKVETELQDICKDVLDLLDRFLVPNA..TPPESKVFYLKMKGDYYRYLSEVASGDSKQETVASSQQAYQEAFEISKSEMQPTHPIRLGLALNFSVFYYEILNSPEKACSLAKSAFDEAIRELDTLNEESYKDSTLIMQLLRDNLTLWTSENQGEE +#=GS 1433_XENLA/1-227 AC P29309 +1434_LYCES/6-243 REENVYLAKLAEQAERYEEMIEFMEKVAKTADV.EELTVEERNLLSVAYKNVIGARRASWRIISSIEQKEESRG.NEDHVNTIKEYRSKIEADLSKICDGILSLLESNLIPSA..STAESKVFHLKMKGDYHRYLAEFKTGTERKEAAENTLLAYKSAQDIALAELAPTHPIRLGLALNFSVFYYEILNSPDRACNLAKQAFDEAISELDTLGEESYKDSTLIMQLLRDNLTLWTSDNADDV +#=GS 1434_LYCES/6-243 AC P42652 +143B_VICFA/7-242 RENFVYIAKLAEQAERYEEMVDSMKNVANLDV...ELTIEERNLLSVGYKNVIGARRASWRILSSIEQKEESKG.NDVNAKRIKEYRHKVETELSNICIDVMRVIDEHLIPSA..AAGESTVFYYKMKGDYYRYLAEFKTGNEKKEAGDQSMKAYESATTAAEAELPPTHPIRLGLALNFSVFYYEILNSPERACHLAKQAFDEAISELDTLNEESYKDSTLIMQLLRDNLTLWTSDIPEDG +#=GS 143B_VICFA/7-242 AC P42654 +143E_HUMAN/4-239 REDLVYQAKLAEQAERYDEMVESMKKVAGMDV...ELTVEERNLLSVAYKNVIGARRASWRIISSIEQKEENKG.GEDKLKMIREYRQMVETELKLICCDILDVLDKHLIPAA..NTGESKVFYYKMKGDYHRYLAEFATGNDRKEAAENSLVAYKAASDIAMTELPPTHPIRLGLALNFSVFYYEILNSPDRACRLAKAAFDDAIAELDTLSEESYKDSTLIMQLLRDNLTLWTSDMQGDG +#=GS 143E_HUMAN/4-239 AC P42655 +143F_MOUSE/3-240 REQLLQRARLAEQAERYDDMASAMKAVTELNE...PLSNEDRNLLSVAYKNVVGARRSSWRVISSIEQKTMADG.NEKKLEKVKAYREKIEKELETVCNDVLALLDKFLIKNCNDFQYESKVFYLKMKGDYYRYLAEVASGEKKNSVVEASEAAYKEAFEISKEHMQPTHPIRLGLALNFSVFYYEIQNAPEQACLLAKQAFDDAIAELDTLNEDSYKDSTLIMQLLRDNLTLWTSDQQDEE +#=GS 143F_MOUSE/3-240 AC P11576 +143R_ARATH/7-245 RDQYVYMAKLAEQAERYEEMVQFMEQLVTGATPAEELTVEERNLLSVAYKNVIGSLRAAWRIVSSIEQKEESRK.NDEHVSLVKDYRSKVESELSSVCSGILKLLDSHLIPSA..GASESKVFYLKMKGDYHRYMAEFKSGDERKTAAEDTMLAYKAAQDIAAADMAPTHPIRLGLALNFSVFYYEILNSSDKACNMAKQAFEEAIAELDTLGEESYKDSTLIMQLLRDNLTLWTSDYAGAD +#=GS 143R_ARATH/7-245 AC P42647 +143S_HUMAN/3-238 RASLIQKAKLAEQAERYEDMAAFMKGAVEKGE...ELSCEERNLLSVAYKNVVGGQRAAWRVLSSIEQKSNEEG.SEEKGPEVREYREKVETELQGVCDTVLGLLDSHLIKEA..GDAESRVFYLKMKGDYYRYLAEVATGDDKKRIIDSARSAYQEAMDISKKEMPPTNPIRLGLALNFSVFHYEIANSPEEAISLAKTTFDEAMADLHTLSEDSYKDSTLIMQLLRDNLTLWTADNAGEE +#=GS 143S_HUMAN/3-238 AC P31947 +143T_HUMAN/3-236 KTELIQKAKLAEQAERYDDMATCMKAVTEQGA...ELSNEERNLLSVAYKNVVGGRRSAWRVISSIEQKTDT...SDKKLQLIKDYREKVESELRSICTTVLELLDKYLIANA..TNPESKVFYLKMKGDYFRYLAEVACGDDRKQTIDNSQGAYQEAFDISKKEMQPTHPIRLGLALNFSVFYYEILNNPELACTLAKTAFDEAIAELDTLNEDSYKDSTLIMQLLRDNLTLWTSDSAGEE +#=GS 143T_HUMAN/3-236 AC P27348 +143Z_DROME/6-239 KEELVQKAKLAEQSERYDDMAQAMKSVTETGV...ELSNEERNLLSVAYKNVVGARRSSWRVISSIEQKTEA...SARKQQLAREYRERVEKELREICYEVLGLLDKYLIPKA..SNPESKVFYLKMKGDYYRYLAEVATGDARNTVVDDSQTAYQDAFDISKGKMQPTHPIRLGLALNFSVFYYEILNSPDKACQLAKQAFDDAIAELDTLNEDSYKDSTLIMQLLRDNLTLWTSDTQGDE +#=GS 143Z_DROME/6-239 AC P29310 +BMH1_YEAST/4-240 REDSVYLAKLAEQAERYEEMVENMKTVASSGQ...ELSVEERNLLSVAYKNVIGARRASWRIVSSIEQKEESKEKSEHQVELICSYRSKIETELTKISDDILSVLDSHLIPSA..TTGESKVFYYKMKGDYHRYLAEFSSGDAREKATNASLEAYKTASEIATTELPPTHPIRLGLALNFSVFYYEIQNSPDKACHLAKQAFDDAIAELDTLSEESYKDSTLIMQLLRDNLTLWTSDMSESG +#=GS BMH1_YEAST/4-240 AC P29311 +RA24_SCHPO/6-241 REDAVYLAKLAEQAERYEGMVENMKSVASTDQ...ELTVEERNLLSVAYKNVIGARRASWRIVSSIEQKEESKG.NTAQVELIKEYRQKIEQELDTICQDILTVLEKHLIPNA..ASAESKVFYYKMKGDYYRYLAEFAVGEKRQHSADQSLEGYKAASEIATAELAPTHPIRLGLALNFSVFYYEILNSPDRACYLAKQAFDEAISELDSLSEESYKDSTLIMQLLRDNLTLWTSDAEYSA +#=GS RA24_SCHPO/6-241 AC P42656 +RA25_SCHPO/5-240 RENSVYLAKLAEQAERYEEMVENMKKVACSND...KLSVEERNLLSVAYKNIIGARRASWRIISSIEQKEESRG.NTRQAALIKEYRKKIEDELSDICHDVLSVLEKHLIPAA..TTGESKVFYYKMKGDYYRYLAEFTVGEVCKEAADSSLEAYKAASDIAVAELPPTDPMRLGLALNFSVFYYEILDSPESACHLAKQVFDEAISELDSLSEESYKDSTLIMQLLRDNLTLWTSDAEYNQ +#=GS RA25_SCHPO/5-240 AC P42657 +// +# STOCKHOLM 1.0 +#=GF ID rrm +#=GF AC PF00076 +#=GF DE RNA recognition motif. (a.k.a. RRM, RBD, or RNP domain) +#=GF GA 14.6 0.0 +#=GF TC 14.5 14.5 +#=GF TC 14.6 0.1 + +ARP2_PLAFA/364-438 VEVTYLF....STYLVNGQTL..IYS.....N.ISVV....LVILY.... +CABA_MOUSE/77-147 MFVGGL......SWDTSKKDLKDYFT.....K.FGEV..VDCTIKMD... +GR10_BRANA/8-79 CFVGGL......AWATGDAELERTFS.....Q.FGEV..IDSKIIND... +NSR1_YEAST/170-241 IFVGRL......SWSIDDEWLKKEFE.....H.IGGV..IGARVIYE... +RT19_ARATH/33-104 LYIGGL......SPGTDEHSLKDAFS.....S.FNGV..TEARVMTN... +RO28_NICSY/99-170 LFVGNL......PYDIDSEGLAQLFQ.....Q.AGVV..EIAEVIYN... +RO33_NICSY/116-187 LYVGNL......PFSMTSSQLSEIFA.....E.AGTV..ANVEIVYD... +RO33_NICSY/219-290 LYVANL......SWALTSQGLRDAFA.....D.QPGF..MSAKVIYD... +GBP2_YEAST/221-291 VFIINL......PYSMNWQSLKDMFK.....E.CGHV..LRADVELD... +HUD_HUMAN/48-119 LIVNYL......PQNMTQEEFRSLFG.....S.IGEI..ESCKLVRD... +SXLF_DROME/127-198 LIVNYL......PQDMTDRELYALFR.....A.IGPI..NTCRIMRD... +PABP_DROME/4-75 LYVGDL......PQDVNESGLFDKFS.....S.AGPV..LSIRVCRD... +NAM8_YEAST/165-237 IFVGDL......APNVTESQLFELFI.....NRYAST..SHAKIVHD... +PUB1_YEAST/163-234 LFVGDL......NVNVDDETLRNAFK.....D.FPSY..LSGHVMWD... +TIA1_HUMAN/108-179 VFVGDL......SPQITTEDIKAAFA.....P.FGRI..SDARVVKD... +PES4_YEAST/93-164 LFIGDL......HETVTEETLKGIFK.....K.YPSF..VSAKVCLD... +NOP4_YEAST/28-98 LFVRSI......PQDVTDEQLADFFS.....N.FAPI..KHAVVVKD... +CST2_HUMAN/18-89 VFVGNI......PYEATEEQLKDIFS.....E.VGPV..VSFRLVYD... +RN15_YEAST/20-91 VYLGSI......PYDQTEEQILDLCS.....N.VGPV..INLKMMFD... +YIS1_YEAST/66-136 IFVGNI......TPDVTPEQIEDHFK.....D.CGQI..KRITLLYD... +IF4B_HUMAN/98-168 AFLGNL......PYDVTEESIKEFFR.....G.LNIS...AVRLPR.... +NSR1_YEAST/269-340 LFLGNL......SFNADRDAIFELFA.....K.HGEV..VSVRIPTH... +GBP2_YEAST/124-193 IFVRNL......TFDCTPEDLKELFG.....T.VGEV..VEADIIT.... +NOP3_YEAST/127-190 LFVRPF......PLDVQESELNEIFG.....P.FGPM..KEVKILN.... +U2AF_HUMAN/261-332 LFIGGL......PNYLNDDQVKELLT.....S.FGPL..KAFNLVKD... +U2AF_SCHPO/312-383 IYISNL......PLNLGEDQVVELLK.....P.FGDL..LSFQLIKN... +ELAV_DROME/250-322 LYVSGL......PKTMTQQELEAIFA.....P.FGAI..ITSRILQN... +SXLF_DROME/213-285 LYVTNL......PRTITDDQLDTIFG.....K.YGSI..VQKNILRD... +ELAV_DROME/404-475 IFIYNL......APETEEAALWQLFG.....P.FGAV..QSVKIVKD... +MSSP_HUMAN/31-102 LYIRGL......PPHTTDQDLVKLCQ.....P.YGKI..VSTKAILD... +NONA_DROME/304-369 LYVGNL......TNDITDDELREMFK.....P.YGEI..SEIFSNLD... +PABP_DROME/92-162 VFIKNL......DRAIDNKAIYDTFS.....A.FGNI..LSCKVATD... +PABP_DROME/183-254 VYVKNF......TEDFDDEKLKEFFE.....P.YGKI..TSYKVMS.... +PABP_SCHPO/263-333 VYIKNL......DTEITEQEFSDLFG.....Q.FGEI..TSLSLVKD... +PUB1_YEAST/342-407 AYIGNI......PHFATEADLIPLFQ.....N.FGFI..LDFKHYPE... +PUB1_YEAST/76-146 LYVGNL......DKAITEDILKQYFQ.....V.GGPI..ANIKIMID... +TIA1_HUMAN/9-78 LYVGNL......SRDVTEALILQLFS.....Q.IGPC..KNCKMIMD... +TIA1_HUMAN/216-281 VYCGGV......TSGLTEQLMRQTFS.....P.FGQI..MEIRVFPD... +EWS_HUMAN/363-442 IYVQGL......NDSVTLDDLADFFK.....Q.CGVV..K.MNKRTG... +PTB_HUMAN/186-253 IIVENL......FYPVTLDVLHQIFS.....K.FGTV....LKIIT.... +ROC_HUMAN/18-82 VFIGNL.....NTLVVKKSDVEAIFS.....K.YGKI..VGCSVHK.... +YIS5_YEAST/33-104 IYIGNL......NRELTEGDILTVFS.....E.YGVP..VDVILSRD... +RU1A_HUMAN/12-84 IYINNLNE..KIKKDELKKSLYAIFS.....Q.FGQI..LDILVSR.... +RU2B_HUMAN/9-81 IYINNMND..KIKKEELKRSLYALFS.....Q.FGHV..VDIVALK.... +CABA_MOUSE/161-231 IFVGGL......NPEATEEKIREYFG.....Q.FGEI..EAIELPID... +ROA1_BOVIN/106-176 IFVGGI......KEDTEEHHLRDYFE.....Q.YGKI..EVIEIMTD... +SQD_DROME/138-208 IFVGGL......TTEISDEEIKTYFG.....Q.FGNI..VEVEMPLD... +RB97_DROME/34-104 LFIGGL......APYTTEENLKLFYG.....Q.WGKV..VDVVVMRD... +SQD_DROME/58-128 LFVGGL......SWETTEKELRDHFG.....K.YGEI..ESINVKTD... +ROG_HUMAN/10-81 LFIGGL......NTETNEKALEAVFG.....K.YGRI..VEVLLMKD... +SFR2_CHICK/16-87 LKVDNL......TYRTSPDTLRRVFE.....K.YGRV..GDVYIPRD... +SFR1_HUMAN/17-85 IYVGNL......PPDIRTKDIEDVFY.....K.YGAI..RDIDLKNR... +SR55_DROME/5-68 VYVGGL......PYGVRERDLERFFK.....G.YGRT..RDILIKN.... +SFR3_HUMAN/12-78 VYVGNL......GNNGNKTELERAFG.....Y.YGPL..RSVWVARN... +TRA2_DROME/99-170 IGVFGL......NTNTSQHKVRELFN.....K.YGPI..ERIQMVID... +RU17_DROME/104-175 LFIARI......NYDTSESKLRREFE.....F.YGPI..KKIVLIHD... +GBP2_YEAST/351-421 IYCSNL......PFSTARSDLFDLFG.....P.IGKI..NNAELKP.... +RNP1_YEAST/37-109 LYVGNL......PKNCRKQDLRDLFE.....PNYGKI..TINMLKKK... +PES4_YEAST/305-374 IFIKNL......PTITTRDDILNFFS.....E.VGPI..KSIYLSN.... +YHH5_YEAST/315-384 ILVKNL......PSDTTQEEVLDYFS.....T.IGPI..KSVFISEK... +YHC4_YEAST/348-415 IFVGQL......DKETTREELNRRFS.....T.HGKI..QDINLIFK... +IF39_YEAST/79-157 IVVNGAPVIPSAKVPVLKKALTSLFS.....K.AGKV..VNMEFPID... +MEI2_SCHPO/197-265 LFVTNL......PRIVPYATLLELFS.....K.LGDV..KGIDTSSL... +NOP4_YEAST/292-363 VFVRNV......PYDATEESLAPHFS.....K.FGSV..KYALPVID... +MODU_DROME/260-326 VVVGLI......GPNITKDDLKTFFE.....K.VAPV..EAVTISSN... +ROF_HUMAN/113-183 VRLRGL......PFGCTKEEIVQFFS.....G.LEIV.PNGITLPVD... +MODU_DROME/342-410 LVVENVG....KHESYSSDALEKIFK.....K.FGDV..EEIDVVC.... +NUCL_CHICK/283-352 LFVKNL......TPTKDYEELRTAIK.....EFFGKK...NLQVSEV... +NONA_DROME/378-448 LRVSNL......TPFVSNELLYKSFE.....I.FGPI..ERASITVD... +PSF_HUMAN/373-443 LSVRNL......SPYVSNELLEEAFS.....Q.FGPI..ERAVVIVD... +NOP3_YEAST/202-270 ITMKNL......PEGCSWQDLKDLAR.....E.NSLE..TTFSSVN.... +SFR1_HUMAN/122-186 VVVSGL......PPSGSWQDLKDHMR.....E.AGDV..CYADVYRD... +CPO_DROME/453-526 LFVSGL......PMDAKPRELYLLFR.....A.YEGY..EGSLLKV.... +WHI3_YEAST/540-614 LYVGNL......PSDATEQELRQLFS.....G.QEGF..RRLSFRNK... +RU1A_HUMAN/210-276 LFLTNL......PEETNELMLSMLFN.....Q.FPGF..KEVRLVPG... +RU2B_HUMAN/153-220 LFLNNL......PEETNEMMLSMLFN.....Q.FPGF..KEVRLVPG... +RU1A_YEAST/229-293 LLIQNL......PSGTTEQLLSQILG.....N.EALV...EIRLVSV... +MODU_DROME/177-246 VFVTNL......PNEYLHKDLVALFA.....K.FGRL..SALQRFTN... +PR24_YEAST/43-111 VLVKNL......PKSYNQNKVYKYFK.....H.CGPI..IHVDVAD.... +MODU_DROME/422-484 ILVTNL......TSDATEADLRKVFN.....D.SGEI..ESIIMLG.... +PR24_YEAST/212-284 IMIRNL.....STELLDENLLRESFE.....G.FGSI..EKINIPAG... +SSB1_YEAST/39-114 IFIGNV......AHECTEDDLKQLFV.....EEFGDE..VSVEIPIK... +PTB_HUMAN/61-128 IHIRKL......PIDVTEGEVISLGL.....P.FGKV..TNLLMLKG... +RN12_YEAST/200-267 IVIKFQ......GPALTEEEIYSLFR.....R.YGTI....IDIFP.... +D111_ARATH/281-360 LLLRNMVG.PGQVDDELEDEVGGECA.....K.YGTV..TRVLIFE.... +U2AG_HUMAN/67-142 CAVSDVEM..QEHYDEFFEEVFTEME.....EKYGEV..EEMNVCDN... +IF39_SCHPO/41-124 VVIEGAP....VVEEAKQQDFFRFLSSKVLAK.IGKVKENGFYMPFE... +LA_DROME/151-225 AYAKGF......PLDSQISELLDFTA.....N.YDKV..VNLTMRNS... +LA_HUMAN/113-182 VYIKGF......PTDATLDDIKEWLE.....D.KGQV..LNIQMRR.... +PR24_YEAST/119-190 LWMTNF......PPSYTQRNIRDLLQ.....D.INVV.ALSIRLPSL... + +ARP2_PLAFA/364-438 ....HQKFKETVLGRNSGFGFVSYDNVISAQHAIQFMNG.Y...FVNNKY +CABA_MOUSE/77-147 ..........PNTGRSRGFGFILFKDSSSVEKVLD.QKE.H...RLDGRV +GR10_BRANA/8-79 ..........RETGRSRGFGFVTFKDEKSMKDAIDEMNG.K...ELDGRT +NSR1_YEAST/170-241 ..........RGTDRSRGYGYVDFENKSYAEKAIQEMQG.K...EIDGRP +RT19_ARATH/33-104 ..........KVTGRSRGYGFVNFISEDSANSAISAMNG.Q...ELNGFN +RO28_NICSY/99-170 ..........RETDRSRGFGFVTMSTVEEADKAVELYSQ.Y...DLNGRL +RO33_NICSY/116-187 ..........RVTDRSRGFAFVTMGSVEEAKEAIRLFDG.S...QVGGRT +RO33_NICSY/219-290 ..........RSSGRSRGFGFITFSSAEAMNSALDTMNE.V...ELEGRP +GBP2_YEAST/221-291 ...........FNGFSRGFGSVIYPTEDEMIRAIDTFNG.M...EVEGRV +HUD_HUMAN/48-119 ..........KITGQSLGYGFVNYIDPKDAEKAINTLNG.L...RLQTKT +SXLF_DROME/127-198 ..........YKTGYSFGYAFVDFTSEMDSQRAIKVLNG.I...TVRNKR +PABP_DROME/4-75 ..........VITRRSLGYAYVNFQQPADAERALDTMNF.D...LVRNKP +NAM8_YEAST/165-237 ..........QVTGMSKGYGFVKFTNSDEQQLALSEMQG.V...FLNGRA +PUB1_YEAST/163-234 ..........MQTGSSRGYGFVSFTSQDDAQNAMDSMQG.Q...DLNGRP +TIA1_HUMAN/108-179 ..........MATGKSKGYGFVSFFNKWDAENAIQQMGG.Q...WLGGRQ +PES4_YEAST/93-164 ..........SVTKKSLGHGYLNFEDKEEAEKAMEELNY.T...KVNGKE +NOP4_YEAST/28-98 ...........TNKRSRGFGFVSFAVEDDTKEALAKARK.T...KFNGHI +CST2_HUMAN/18-89 ..........RETGKPKGYGFCEYQDQETALSAMRNLNG.R...EFSGRA +RN15_YEAST/20-91 ..........PQTGRSKGYAFIEFRDLESSASAVRNLNG.Y...QLGSRF +YIS1_YEAST/66-136 ..........RNTGTPKGYGYIEFESPAYREKALQ.LNG.G...ELKGKK +IF4B_HUMAN/98-168 ........EPSNPERLKGFGYAEFEDLDSLLSALS.LNE.E...SLGNRR +NSR1_YEAST/269-340 ..........PETEQPKGFGYVQFSNMEDAKKALDALQG.E...YIDNRP +GBP2_YEAST/124-193 ...........SKGHHRGMGTVEFTKNESVQDAISKFDG.A...LFMDRK +NOP3_YEAST/127-190 .................GFAFVEFEEAESAAKAIEEVHG.K...SFANQP +U2AF_HUMAN/261-332 ..........SATGLSKGYAFCEYVDINVTDQAIAGLNG.M...QLGDKK +U2AF_SCHPO/312-383 ..........IADGSSKGFCFCEFKNPSDAEVAISGLDG.K...DTYGNK +ELAV_DROME/250-322 .........AGNDTQTKGVGFIRFDKREEATRAIIALNG.T...TPSSCT +SXLF_DROME/213-285 ..........KLTGRPRGVAFVRYNKREEAQEAISALNNVI...PEGGSQ +ELAV_DROME/404-475 ..........PTTNQCKGYGFVSMTNYDEAAMAIRALNG.Y...TMGNRV +MSSP_HUMAN/31-102 ..........KTTNKCKGYGFVDFDSPAAAQKAVSALKA.S...GVQAQK +NONA_DROME/304-369 ................KNFTFLKVDYHPNAEKAKRALDG.S...MRKGRQ +PABP_DROME/92-162 ...........EKGNSKGYGFVHFETEEAANTSIDKVNG.M...LLNGKK +PABP_DROME/183-254 ..........KEDGKSKGFGFVAFETTEAAEAAVQALNGKD...MGEGKS +PABP_SCHPO/263-333 ...........QNDKPRGFGFVNYANHECAQKAVDELND.K...EYKGKK +PUB1_YEAST/342-407 ................KGCCFIKYDTHEQAAVCIVALAN.F...PFQGRN +PUB1_YEAST/76-146 ...........KNNKNVNYAFVEYHQSHDANIALQTLNG.K...QIENNI +TIA1_HUMAN/9-78 ............TAGNDPYCFVEFHEHRHAAAALAAMNG.R...KIMGKE +TIA1_HUMAN/216-281 ................KGYSFVRFNSHESAAHAIVSVNG.T...TIEGHV +EWS_HUMAN/363-442 .QPMIHIYLDKETGKPKGDATVSYEDPPTAKAAVEWFDG.K...DFQGSK +PTB_HUMAN/186-253 ...........FTKNNQFQALLQYADPVSAQHAKLSLDG.Q...NIYNAC +ROC_HUMAN/18-82 .................GFAFVQYVNERNARAAVAGEDG.R...MIAGQV +YIS5_YEAST/33-104 ..........ENTGESQGFAYLKYEDQRSTILAVDNLNG.F...KIGGRA +RU1A_HUMAN/12-84 ............SLKMRGQAFVIFKEVSSATNALRSMQG.F...PFYDKP +RU2B_HUMAN/9-81 ............TMKMRGQAFVIFKELGSSTNALRQLQG.F...PFYGKP +CABA_MOUSE/161-231 ..........PKLNKRRGFVFITFKEEDPVKKVLE.KKF.H...TVSGSK +ROA1_BOVIN/106-176 ..........RGSGKKRGFAFVTFDDHDSVDKIVI.QKY.H...TVNGHN +SQD_DROME/138-208 ..........KQKSQRKGFCFITFDSEQVVTDLLK.TPK.Q...KIAGKE +RB97_DROME/34-104 ..........AATKRSRGFGFITYTKSLMVDRAQE..NRPH...IIDGKT +SQD_DROME/58-128 ..........PQTGRSRGFAFIVFTNTEAIDKVSA.ADE.H...IINSKK +ROG_HUMAN/10-81 ..........RETNKSRGFAFVTFESPADAKDAARDMNG.K...SLDGKA +SFR2_CHICK/16-87 ..........RYTKESRGFAFVRFHDKRDAEDAMDAMDG.A...VLDGRE +SFR1_HUMAN/17-85 .............RGGPPFAFVEFEDPRDAEDAVYGRDG.Y...DYDGYR +SR55_DROME/5-68 .................GYGFVEFEDYRDADDAVYELNG.K...ELLGER +SFR3_HUMAN/12-78 ...............PPGFAFVEFEDPRDAADAVRELDG.R...TLCGCR +TRA2_DROME/99-170 ..........AQTQRSRGFCFIYFEKLSDARAAKDSCSG.I...EVDGRR +RU17_DROME/104-175 ..........QESGKPKGYAFIEYEHERDMHAAYKHADG.K...KIDSKR +GBP2_YEAST/351-421 ..........QENGQPTGVAVVEYENLVDADFCIQKLNN.Y...NYGGCS +RNP1_YEAST/37-109 ..........PLKKPLKRFAFIEFQEGVNLKKVKEKMNG.K...IFMNEK +PES4_YEAST/305-374 ...........ATKVKYLWAFVTYKNSSDSEKAIKRYNN.F...YFRGKK +YHH5_YEAST/315-384 ............QANTPHKAFVTYKNEEESKKAQKCLNK.T...IFKNHT +YHC4_YEAST/348-415 ..............PTNIFAFIKYETEEAAAAALESENH.A...IFLNKT +IF39_YEAST/79-157 ..........EATGKTKGFLFVECGSMNDAKKIIKSFHGKR...LDLKHR +MEI2_SCHPO/197-265 ..............STDGICIVAFFDIRQAIQAAKSLRSQR...FFNDRL +NOP4_YEAST/292-363 ..........KSTGLAKGTAFVAFKDQYTYNECIKNAPA.A...GSTSLL +MODU_DROME/260-326 ..............RLMPRAFVRLASVDDIPKALK.LHS.T...ELFSRF +ROF_HUMAN/113-183 ...........PEGKITGEAFVQFASQELAEKALG.KHK.E...RIGHRY +MODU_DROME/342-410 ..............SKAVLAFVTFKQSDAATKALAQLDG.K...TVNKFE +NUCL_CHICK/283-352 ...........RIGSSKRFGYVDFLSAEDMDKALQ.LNG.K...KLMGLE +NONA_DROME/378-448 ...........DRGKHMGEGIVEFAKKSSASACLRMCNE.K...CFFLTA +PSF_HUMAN/373-443 ...........DRGRSTGKGIVEFASKPAARKAFERCSE.G...VFLLTT +NOP3_YEAST/202-270 ............TRDFDGTGALEFPSEEILVEALERLNN.I...EFRGSV +SFR1_HUMAN/122-186 .................GTGVVEFVRKEDMTYAVRKLDN.T...KFRSHE +CPO_DROME/453-526 ........TSKNGKTASPVGFVTFHTRAGAEAAKQDLQGVR...FDPDMP +WHI3_YEAST/540-614 .......NTTSNGHSHGPMCFVEFDDVSFATRALAELYG.R...QLPRST +RU1A_HUMAN/210-276 ...............RHDIAFVEFDNEVQAGAARDALQG.F...KITQNN +RU2B_HUMAN/153-220 ...............RHDIAFVEFENDGQAGAARDALQGFK...ITPSHA +RU1A_YEAST/229-293 ................RNLAFVEYETVADATKIKNQLGS.T...YKLQNN +MODU_DROME/177-246 .............LNGNKSVLIAFDTSTGAEAVLQAKPKAL...TLGDNV +PR24_YEAST/43-111 ...........SLKKNFRFARIEFARYDGALAAIT.KTH.K...VVGQNE +MODU_DROME/422-484 .................QKAVVKFKDDEGFCKSFL.ANE.S...IVNNAP +PR24_YEAST/212-284 .........QKEHSFNNCCAFMVFENKDSAERALQ.MNR.S...LLGNRE +SSB1_YEAST/39-114 .......EHTDGHIPASKHALVKFPTKIDFDNIKENYDT.K...VVKDRE +PTB_HUMAN/61-128 ................KNQAFIEMNTEEAANTMVN.YYT.SVTPVLRGQP +RN12_YEAST/200-267 ...........PTAANNNVAKVRYRSFRGAISAKNCVSG.I...EIHNTV +D111_ARATH/281-360 ......ITEPNFPVHEAVRIFVQFSRPEETTKALVDLDG.R...YFGGRT +U2AG_HUMAN/67-142 ...........LGDHLVGNVYVKFRREEDAEKAVIDLNN.R...WFNGQP +IF39_SCHPO/41-124 ......EKNGK..KMSLGLVFADFENVDGADLCVQELDGKQ...ILKNHT +LA_DROME/151-225 ......YDKPTKSYKFKGSIFLTFETKDQAKAFLE.QEK.I...VYKERE +LA_HUMAN/113-182 ..........TLHKAFKGSIFVVFDSIESAKKFVE.TPG.Q...KYKETD +PR24_YEAST/119-190 ...........RFNTSRRFAYIDVTSKEDARYCVEKLNG.L...KIEGYT + +ARP2_PLAFA/364-438 LKV +CABA_MOUSE/77-147 IDP +GR10_BRANA/8-79 ITV +NSR1_YEAST/170-241 INC +RT19_ARATH/33-104 ISV +RO28_NICSY/99-170 LTV +RO33_NICSY/116-187 VKV +RO33_NICSY/219-290 LRL +GBP2_YEAST/221-291 LEV +HUD_HUMAN/48-119 IKV +SXLF_DROME/127-198 LKV +PABP_DROME/4-75 IRI +NAM8_YEAST/165-237 IKV +PUB1_YEAST/163-234 LRI +TIA1_HUMAN/108-179 IRT +PES4_YEAST/93-164 IRI +NOP4_YEAST/28-98 LRV +CST2_HUMAN/18-89 LRV +RN15_YEAST/20-91 LKC +YIS1_YEAST/66-136 IAV +IF4B_HUMAN/98-168 IRV +NSR1_YEAST/269-340 VRL +GBP2_YEAST/124-193 LMV +NOP3_YEAST/127-190 LEV +U2AF_HUMAN/261-332 LLV +U2AF_SCHPO/312-383 LHA +ELAV_DROME/250-322 DPI +SXLF_DROME/213-285 PLS +ELAV_DROME/404-475 LQV +MSSP_HUMAN/31-102 AKQ +NONA_DROME/304-369 LRV +PABP_DROME/92-162 VYV +PABP_DROME/183-254 LYV +PABP_SCHPO/263-333 LYV +PUB1_YEAST/342-407 LRT +PUB1_YEAST/76-146 VKI +TIA1_HUMAN/9-78 VKV +TIA1_HUMAN/216-281 VKC +EWS_HUMAN/363-442 LKV +PTB_HUMAN/186-253 CTL +ROC_HUMAN/18-82 LDI +YIS5_YEAST/33-104 LKI +RU1A_HUMAN/12-84 MRI +RU2B_HUMAN/9-81 MRI +CABA_MOUSE/161-231 CEI +ROA1_BOVIN/106-176 CEV +SQD_DROME/138-208 VDV +RB97_DROME/34-104 VEA +SQD_DROME/58-128 VDP +ROG_HUMAN/10-81 IKV +SFR2_CHICK/16-87 LRV +SFR1_HUMAN/17-85 LRV +SR55_DROME/5-68 VVV +SFR3_HUMAN/12-78 VRV +TRA2_DROME/99-170 IRV +RU17_DROME/104-175 VLV +GBP2_YEAST/351-421 LQI +RNP1_YEAST/37-109 IVI +PES4_YEAST/305-374 LLV +YHH5_YEAST/315-384 IWV +YHC4_YEAST/348-415 MHV +IF39_YEAST/79-157 LFL +MEI2_SCHPO/197-265 LYF +NOP4_YEAST/292-363 IGD +MODU_DROME/260-326 ITV +ROF_HUMAN/113-183 IEV +MODU_DROME/342-410 WKL +NUCL_CHICK/283-352 IKL +NONA_DROME/378-448 SLR +PSF_HUMAN/373-443 TPR +NOP3_YEAST/202-270 ITV +SFR1_HUMAN/122-186 GET +CPO_DROME/453-526 QTI +WHI3_YEAST/540-614 VSS +RU1A_HUMAN/210-276 AMK +RU2B_HUMAN/153-220 MKI +RU1A_YEAST/229-293 DVT +MODU_DROME/177-246 LSV +PR24_YEAST/43-111 IIV +MODU_DROME/422-484 IFI +PR24_YEAST/212-284 ISV +SSB1_YEAST/39-114 IHI +PTB_HUMAN/61-128 IYI +RN12_YEAST/200-267 LHI +D111_ARATH/281-360 VRA +U2AG_HUMAN/67-142 IHA +IF39_SCHPO/41-124 FVV +LA_DROME/151-225 LLR +LA_HUMAN/113-182 LLI +PR24_YEAST/119-190 LVT +// diff --git a/forester/archive/RIO/others/hmmer/squid/Formats/swissprot b/forester/archive/RIO/others/hmmer/squid/Formats/swissprot new file mode 100644 index 0000000..1f1220e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Formats/swissprot @@ -0,0 +1,317 @@ +ID 100K_RAT STANDARD; PRT; 889 AA. +AC Q62671; +DT 01-NOV-1997 (Rel. 35, Created) +DT 01-NOV-1997 (Rel. 35, Last sequence update) +DT 15-JUL-1999 (Rel. 38, Last annotation update) +DE 100 KD PROTEIN (EC 6.3.2.-). +OS Rattus norvegicus (Rat). +OC Eukaryota; Metazoa; Chordata; Craniata; Vertebrata; Mammalia; +OC Eutheria; Rodentia; Sciurognathi; Muridae; Murinae; Rattus. +RN [1] +RP SEQUENCE FROM N.A. +RC STRAIN=WISTAR; TISSUE=TESTIS; +RX MEDLINE; 92253337. +RA MUELLER D., REHBEIN M., BAUMEISTER H., RICHTER D.; +RT "Molecular characterization of a novel rat protein structurally +RT related to poly(A) binding proteins and the 70K protein of the U1 +RT small nuclear ribonucleoprotein particle (snRNP)."; +RL Nucleic Acids Res. 20:1471-1475(1992). +RN [2] +RP ERRATUM. +RA MUELLER D., REHBEIN M., BAUMEISTER H., RICHTER D.; +RL Nucleic Acids Res. 20:2624-2624(1992). +CC -!- FUNCTION: E3 UBIQUITIN-PROTEIN LIGASE WHICH ACCEPTS UBIQUITIN FROM +CC AN E2 UBIQUITIN-CONJUGATING ENZYME IN THE FORM OF A THIOESTER AND +CC THEN DIRECTLY TRANSFERS THE UBIQUITIN TO TARGETED SUBSTRATES (BY +CC SIMILARITY). THIS PROTEIN MAY BE INVOLVED IN MATURATION AND/OR +CC POST-TRANSCRIPTIONAL REGULATION OF MRNA. +CC -!- TISSUE SPECIFICITY: HIGHEST LEVELS FOUND IN TESTIS. ALSO PRESENT +CC IN LIVER, KIDNEY, LUNG AND BRAIN. +CC -!- DEVELOPMENTAL STAGE: IN EARLY POST-NATAL LIFE, EXPRESSION IN +CC THE TESTIS INCREASES TO REACH A MAXIMUM AROUND DAY 28. +CC -!- MISCELLANEOUS: A CYSTEINE RESIDUE IS REQUIRED FOR +CC UBIQUITIN-THIOLESTER FORMATION. +CC -!- SIMILARITY: CONTAINS AN HECT-TYPE E3 UBIQUITIN-PROTEIN LIGASE +CC DOMAIN. +CC -!- SIMILARITY: A CENTRAL REGION (AA 485-514) IS SIMILAR TO THE +CC C-TERMINAL DOMAINS OF MAMMALIAN AND YEAST POLY (A) RNA BINDING +CC PROTEINS (PABP). +CC -!- SIMILARITY: THE C-TERMINAL HALF SHOWS HIGH SIMILARITY TO +CC DROSOPHILA HYPERPLASMIC DISC PROTEIN AND SOME, TO HUMAN E6-AP. +CC -!- SIMILARITY: CONTAINS MIXED-CHARGE DOMAINS SIMILAR TO RNA-BINDING +CC PROTEINS. +CC -------------------------------------------------------------------------- +CC This SWISS-PROT entry is copyright. It is produced through a collaboration +CC between the Swiss Institute of Bioinformatics and the EMBL outstation - +CC the European Bioinformatics Institute. There are no restrictions on its +CC use by non-profit institutions as long as its content is in no way +CC modified and this statement is not removed. Usage by and for commercial +CC entities requires a license agreement (See http://www.isb-sib.ch/announce/ +CC or send an email to license@isb-sib.ch). +CC -------------------------------------------------------------------------- +DR EMBL; X64411; CAA45756.1; -. +DR PFAM; PF00632; HECT; 1. +DR PFAM; PF00658; PABP; 1. +KW Ubiquitin conjugation; Ligase. +FT DOMAIN 77 88 ASP/GLU-RICH (ACIDIC). +FT DOMAIN 127 150 PRO-RICH. +FT DOMAIN 420 439 ARG/GLU-RICH (MIXED CHARGE). +FT DOMAIN 448 457 ARG/ASP-RICH (MIXED CHARGE). +FT DOMAIN 485 514 PABP-LIKE. +FT DOMAIN 579 590 ASP/GLU-RICH (ACIDIC). +FT DOMAIN 786 889 HECT DOMAIN. +FT DOMAIN 827 847 PRO-RICH. +FT BINDING 858 858 UBIQUITIN (BY SIMILARITY). +SQ SEQUENCE 889 AA; 100368 MW; DD7E6C7A CRC32; + MMSARGDFLN YALSLMRSHN DEHSDVLPVL DVCSLKHVAY VFQALIYWIK AMNQQTTLDT + PQLERKRTRE LLELGIDNED SEHENDDDTS QSATLNDKDD ESLPAETGQN HPFFRRSDSM + TFLGCIPPNP FEVPLAEAIP LADQPHLLQP NARKEDLFGR PSQGLYSSSA GSGKCLVEVT + MDRNCLEVLP TKMSYAANLK NVMNMQNRQK KAGEDQSMLA EEADSSKPGP SAHDVAAQLK + SSLLAEIGLT ESEGPPLTSF RPQCSFMGMV ISHDMLLGRW RLSLELFGRV FMEDVGAEPG + SILTELGGFE VKESKFRREM EKLRNQQSRD LSLEVDRDRD LLIQQTMRQL NNHFGRRCAT + TPMAVHRVKV TFKDEPGEGS GVARSFYTAI AQAFLSNEKL PNLDCIQNAN KGTHTSLMQR + LRNRGERDRE REREREMRRS SGLRAGSRRD RDRDFRRQLS IDTRPFRPAS EGNPSDDPDP + LPAHRQALGE RLYPRVQAMQ PAFASKITGM LLELSPAQLL LLLASEDSLR ARVEEAMELI + VAHGRENGAD SILDLGLLDS SEKVQENRKR HGSSRSVVDM DLDDTDDGDD NAPLFYQPGK + RGFYTPRPGK NTEARLNCFR NIGRILGLCL LQNELCPITL NRHVIKVLLG RKVNWHDFAF + FDPVMYESLR QLILASQSSD ADAVFSAMDL AFAVDLCKEE GGGQVELIPN GVNIPVTPQN + VYEYVRKYAE HRMLVVAEQP LHAMRKGLLD VLPKNSLEDL TAEDFRLLVN GCGEVNVQML + ISFTSFNDES GENAEKLLQF KRWFWSIVER MSMTERQDLV YFWTSSPSLP ASEEGFQPMP + SITIRPPDDQ HLPTANTCIS RLYVPLYSSK QILKQKLLLA IKTKNFGFV +// +ID 104K_THEPA STANDARD; PRT; 924 AA. +AC P15711; +DT 01-APR-1990 (Rel. 14, Created) +DT 01-APR-1990 (Rel. 14, Last sequence update) +DT 01-AUG-1992 (Rel. 23, Last annotation update) +DE 104 KD MICRONEME-RHOPTRY ANTIGEN. +OS Theileria parva. +OC Eukaryota; Alveolata; Apicomplexa; Piroplasmida; Theileriidae; +OC Theileria. +RN [1] +RP SEQUENCE FROM N.A. +RC STRAIN=MUGUGA; +RX MEDLINE; 90158697. +RA IAMS K.P., YOUNG J.R., NENE V., DESAI J., WEBSTER P., +RA OLE-MOIYOI O.K., MUSOKE A.J.; +RT "Characterisation of the gene encoding a 104-kilodalton microneme- +RT rhoptry protein of Theileria parva."; +RL Mol. Biochem. Parasitol. 39:47-60(1990). +CC -!- SUBCELLULAR LOCATION: IN MICRONEME/RHOPTRY COMPLEXES. +CC -!- DEVELOPMENTAL STAGE: SPOROZOITE ANTIGEN. +CC -------------------------------------------------------------------------- +CC This SWISS-PROT entry is copyright. It is produced through a collaboration +CC between the Swiss Institute of Bioinformatics and the EMBL outstation - +CC the European Bioinformatics Institute. There are no restrictions on its +CC use by non-profit institutions as long as its content is in no way +CC modified and this statement is not removed. Usage by and for commercial +CC entities requires a license agreement (See http://www.isb-sib.ch/announce/ +CC or send an email to license@isb-sib.ch). +CC -------------------------------------------------------------------------- +DR EMBL; M29954; AAA18217.1; -. +DR PIR; A44945; A44945. +KW Antigen; Sporozoite; Repeat. +FT DOMAIN 1 19 HYDROPHOBIC. +FT DOMAIN 905 924 HYDROPHOBIC. +SQ SEQUENCE 924 AA; 103625 MW; 4563AAA0 CRC32; + MKFLILLFNI LCLFPVLAAD NHGVGPQGAS GVDPITFDIN SNQTGPAFLT AVEMAGVKYL + QVQHGSNVNI HRLVEGNVVI WENASTPLYT GAIVTNNDGP YMAYVEVLGD PNLQFFIKSG + DAWVTLSEHE YLAKLQEIRQ AVHIESVFSL NMAFQLENNK YEVETHAKNG ANMVTFIPRN + GHICKMVYHK NVRIYKATGN DTVTSVVGFF RGLRLLLINV FSIDDNGMMS NRYFQHVDDK + YVPISQKNYE TGIVKLKDYK HAYHPVDLDI KDIDYTMFHL ADATYHEPCF KIIPNTGFCI + TKLFDGDQVL YESFNPLIHC INEVHIYDRN NGSIICLHLN YSPPSYKAYL VLKDTGWEAT + THPLLEEKIE ELQDQRACEL DVNFISDKDL YVAALTNADL NYTMVTPRPH RDVIRVSDGS + EVLWYYEGLD NFLVCAWIYV SDGVASLVHL RIKDRIPANN DIYVLKGDLY WTRITKIQFT + QEIKRLVKKS KKKLAPITEE DSDKHDEPPE GPGASGLPPK APGDKEGSEG HKGPSKGSDS + SKEGKKPGSG KKPGPAREHK PSKIPTLSKK PSGPKDPKHP RDPKEPRKSK SPRTASPTRR + PSPKLPQLSK LPKSTSPRSP PPPTRPSSPE RPEGTKIIKT SKPPSPKPPF DPSFKEKFYD + DYSKAASRSK ETKTTVVLDE SFESILKETL PETPGTPFTT PRPVPPKRPR TPESPFEPPK + DPDSPSTSPS EFFTPPESKR TRFHETPADT PLPDVTAELF KEPDVTAETK SPDEAMKRPR + SPSEYEDTSP GDYPSLPMKR HRLERLRLTT TEMETDPGRM AKDASGKPVK LKRSKSFDDL + TTVELAPEPK ASRIVVDDEG TEADDEETHP PEERQKTEVR RRRPPKKPSK SPRPSKPKKP + KKPDSAYIPS ILAILVVSLI VGIL +// +ID 108_LYCES STANDARD; PRT; 102 AA. +AC Q43495; +DT 15-JUL-1999 (Rel. 38, Created) +DT 15-JUL-1999 (Rel. 38, Last sequence update) +DT 15-JUL-1999 (Rel. 38, Last annotation update) +DE PROTEIN 108 PRECURSOR. +OS Lycopersicon esculentum (Tomato). +OC Eukaryota; Viridiplantae; Streptophyta; Embryophyta; Tracheophyta; +OC euphyllophytes; Spermatophyta; Magnoliophyta; eudicotyledons; +OC core eudicots; Asteridae; euasterids I; Solanales; Solanaceae; +OC Solanum. +RN [1] +RP SEQUENCE FROM N.A. +RC STRAIN=CV. VF36; TISSUE=ANTHER; +RX MEDLINE; 94143497. +RA CHEN R., SMITH A.G.; +RT "Nucleotide sequence of a stamen- and tapetum-specific gene from +RT Lycopersicon esculentum."; +RL Plant Physiol. 101:1413-1413(1993). +CC -!- TISSUE SPECIFICITY: STAMEN- AND TAPETUM-SPECIFIC. +CC -!- SIMILARITY: BELONGS TO THE A9 / FIL1 FAMILY. +CC -------------------------------------------------------------------------- +CC This SWISS-PROT entry is copyright. It is produced through a collaboration +CC between the Swiss Institute of Bioinformatics and the EMBL outstation - +CC the European Bioinformatics Institute. There are no restrictions on its +CC use by non-profit institutions as long as its content is in no way +CC modified and this statement is not removed. Usage by and for commercial +CC entities requires a license agreement (See http://www.isb-sib.ch/announce/ +CC or send an email to license@isb-sib.ch). +CC -------------------------------------------------------------------------- +DR EMBL; Z14088; CAA78466.1; -. +DR MENDEL; 8853; LYCes;1133;1. +KW Signal. +FT SIGNAL 1 30 POTENTIAL. +FT CHAIN 31 102 PROTEIN 108. +FT DISULFID 41 77 BY SIMILARITY. +FT DISULFID 51 66 BY SIMILARITY. +FT DISULFID 67 92 BY SIMILARITY. +FT DISULFID 79 99 BY SIMILARITY. +SQ SEQUENCE 102 AA; 10576 MW; AFA4875A CRC32; + MASVKSSSSS SSSSFISLLL LILLVIVLQS QVIECQPQQS CTASLTGLNV CAPFLVPGSP + TASTECCNAV QSINHDCMCN TMRIAAQIPA QCNLPPLSCS AN +// +ID 10KD_VIGUN STANDARD; PRT; 75 AA. +AC P18646; +DT 01-NOV-1990 (Rel. 16, Created) +DT 01-NOV-1990 (Rel. 16, Last sequence update) +DT 01-FEB-1995 (Rel. 31, Last annotation update) +DE 10 KD PROTEIN PRECURSOR (CLONE PSAS10). +OS Vigna unguiculata (Cowpea). +OC Eukaryota; Viridiplantae; Streptophyta; Embryophyta; Tracheophyta; +OC euphyllophytes; Spermatophyta; Magnoliophyta; eudicotyledons; +OC core eudicots; Rosidae; eurosids I; Fabales; Fabaceae; Papilionoideae; +OC Vigna. +RN [1] +RP SEQUENCE FROM N.A. +RC TISSUE=COTYLEDON; +RX MEDLINE; 91355865. +RA ISHIBASHI N., YAMAUCHI D., MINIAMIKAWA T.; +RT "Stored mRNA in cotyledons of Vigna unguiculata seeds: nucleotide +RT sequence of cloned cDNA for a stored mRNA and induction of its +RT synthesis by precocious germination."; +RL Plant Mol. Biol. 15:59-64(1990). +CC -!- FUNCTION: THIS PROTEIN IS REQUIRED FOR GERMINATION. +CC -!- SIMILARITY: BELONGS TO THE GAMMA-PUROTHIONIN FAMILY. +CC -------------------------------------------------------------------------- +CC This SWISS-PROT entry is copyright. It is produced through a collaboration +CC between the Swiss Institute of Bioinformatics and the EMBL outstation - +CC the European Bioinformatics Institute. There are no restrictions on its +CC use by non-profit institutions as long as its content is in no way +CC modified and this statement is not removed. Usage by and for commercial +CC entities requires a license agreement (See http://www.isb-sib.ch/announce/ +CC or send an email to license@isb-sib.ch). +CC -------------------------------------------------------------------------- +DR EMBL; X16877; CAA34760.1; -. +DR PIR; S11156; S11156. +DR HSSP; P45639; 1CHL. +DR PFAM; PF00304; Gamma-thionin; 1. +DR PROSITE; PS00940; GAMMA_THIONIN; 1. +KW Germination; Signal. +FT SIGNAL 1 ? POTENTIAL. +FT CHAIN ? 75 10 KD PROTEIN. +FT DISULFID 31 75 BY SIMILARITY. +FT DISULFID 42 63 BY SIMILARITY. +FT DISULFID 48 69 BY SIMILARITY. +FT DISULFID 52 71 BY SIMILARITY. +SQ SEQUENCE 75 AA; 8523 MW; AFF911AB CRC32; + MEKKSIAGLC FLFLVLFVAQ EVVVQSEAKT CENLVDTYRG PCFTTGSCDD HCKNKEHLLS + GRCRDDVRCW CTRNC +// +ID 110K_PLAKN STANDARD; PRT; 296 AA. +AC P13813; +DT 01-JAN-1990 (Rel. 13, Created) +DT 01-JAN-1990 (Rel. 13, Last sequence update) +DT 01-FEB-1994 (Rel. 28, Last annotation update) +DE 110 KD ANTIGEN (PK110) (FRAGMENT). +OS Plasmodium knowlesi. +OC Eukaryota; Alveolata; Apicomplexa; Haemosporida; Plasmodium. +RN [1] +RP SEQUENCE FROM N.A. +RX MEDLINE; 88039002. +RA PERLER F.B., MOON A.M., QIANG B.Q., MEDA M., DALTON M., CARD C., +RA SCHMIDT-ULLRICH R., WALLACH D., LYNCH J., DONELSON J.E.; +RT "Cloning and characterization of an abundant Plasmodium knowlesi +RT antigen which cross reacts with Gambian sera."; +RL Mol. Biochem. Parasitol. 25:185-193(1987). +CC -------------------------------------------------------------------------- +CC This SWISS-PROT entry is copyright. It is produced through a collaboration +CC between the Swiss Institute of Bioinformatics and the EMBL outstation - +CC the European Bioinformatics Institute. There are no restrictions on its +CC use by non-profit institutions as long as its content is in no way +CC modified and this statement is not removed. Usage by and for commercial +CC entities requires a license agreement (See http://www.isb-sib.ch/announce/ +CC or send an email to license@isb-sib.ch). +CC -------------------------------------------------------------------------- +DR EMBL; M19152; AAA29471.1; -. +DR PIR; A54527; A54527. +KW Malaria; Antigen; Repeat. +FT NON_TER 1 1 +FT DOMAIN 131 296 13.5 X 12 AA TANDEM REPEATS OF E-E-T-Q-K- +FT T-V-E-P-E-Q-T. +SQ SEQUENCE 296 AA; 34077 MW; 666F88DF CRC32; + FNSNMLRGSV CEEDVSLMTS IDNMIEEIDF YEKEIYKGSH SGGVIKGMDY DLEDDENDED + EMTEQMVEEV ADHITQDMID EVAHHVLDNI THDMAHMEEI VHGLSGDVTQ IKEIVQKVNV + AVEKVKHIVE TEETQKTVEP EQIEETQNTV EPEQTEETQK TVEPEQTEET QNTVEPEQIE + ETQKTVEPEQ TEEAQKTVEP EQTEETQKTV EPEQTEETQK TVEPEQTEET QKTVEPEQTE + ETQKTVEPEQ TEETQKTVEP EQTEETQKTV EPEQTEETQN TVEPEPTQET QNTVEP +// +ID 11S3_HELAN STANDARD; PRT; 493 AA. +AC P19084; +DT 01-NOV-1990 (Rel. 16, Created) +DT 01-NOV-1990 (Rel. 16, Last sequence update) +DT 01-FEB-1994 (Rel. 28, Last annotation update) +DE 11S GLOBULIN SEED STORAGE PROTEIN G3 PRECURSOR (HELIANTHININ G3). +GN HAG3. +OS Helianthus annuus (Common sunflower). +OC Eukaryota; Viridiplantae; Streptophyta; Embryophyta; Tracheophyta; +OC euphyllophytes; Spermatophyta; Magnoliophyta; eudicotyledons; +OC core eudicots; Asteridae; euasterids II; Asterales; Asteraceae; +OC Helianthus. +RN [1] +RP SEQUENCE FROM N.A. +RX MEDLINE; 89232734. +RA VONDER HARR R.A., ALLEN R.D., COHEN E.A., NESSLER C.L., THOMAS T.L.; +RT "Organization of the sunflower 11S storage protein gene family."; +RL Gene 74:433-443(1988). +CC -!- FUNCTION: THIS IS A SEED STORAGE PROTEIN. +CC -!- SUBUNIT: HEXAMER; EACH SUBUNIT IS COMPOSED OF AN ACIDIC AND A +CC BASIC CHAIN DERIVED FROM A SINGLE PRECURSOR AND LINKED BY A +CC DISULFIDE BOND. +CC -!- SIMILARITY: BELONGS TO THE 11S SEED STORAGE PROTEINS (GLOBULINS) +CC FAMILY. +CC -------------------------------------------------------------------------- +CC This SWISS-PROT entry is copyright. It is produced through a collaboration +CC between the Swiss Institute of Bioinformatics and the EMBL outstation - +CC the European Bioinformatics Institute. There are no restrictions on its +CC use by non-profit institutions as long as its content is in no way +CC modified and this statement is not removed. Usage by and for commercial +CC entities requires a license agreement (See http://www.isb-sib.ch/announce/ +CC or send an email to license@isb-sib.ch). +CC -------------------------------------------------------------------------- +DR EMBL; M28832; AAA33374.1; -. +DR PIR; JA0089; JA0089. +DR PFAM; PF00190; Seedstore_11s; 1. +DR PROSITE; PS00305; 11S_SEED_STORAGE; 1. +KW Seed storage protein; Multigene family; Signal. +FT SIGNAL 1 20 +FT CHAIN 21 305 ACIDIC CHAIN. +FT CHAIN 306 493 BASIC CHAIN. +FT DISULFID 103 312 INTERCHAIN (ACIDIC-BASIC) (POTENTIAL). +FT DOMAIN 23 35 GLN-RICH. +FT DOMAIN 111 127 GLN/GLY-RICH. +FT DOMAIN 191 297 GLN-RICH. +SQ SEQUENCE 493 AA; 55687 MW; E79DEAAE CRC32; + MASKATLLLA FTLLFATCIA RHQQRQQQQN QCQLQNIEAL EPIEVIQAEA GVTEIWDAYD + QQFQCAWSIL FDTGFNLVAF SCLPTSTPLF WPSSREGVIL PGCRRTYEYS QEQQFSGEGG + RRGGGEGTFR TVIRKLENLK EGDVVAIPTG TAHWLHNDGN TELVVVFLDT QNHENQLDEN + QRRFFLAGNP QAQAQSQQQQ QRQPRQQSPQ RQRQRQRQGQ GQNAGNIFNG FTPELIAQSF + NVDQETAQKL QGQNDQRGHI VNVGQDLQIV RPPQDRRSPR QQQEQATSPR QQQEQQQGRR + GGWSNGVEET ICSMKFKVNI DNPSQADFVN PQAGSIANLN SFKFPILEHL RLSVERGELR + PNAIQSPHWT INAHNLLYVT EGALRVQIVD NQGNSVFDNE LREGQVVVIP QNFAVIKRAN + EQGSRWVSFK TNDNAMIANL AGRVSASAAS PLTLWANRYQ LSREEAQQLK FSQRETVLFA + PSFSRGQGIR ASR +// diff --git a/forester/archive/RIO/others/hmmer/squid/INSTALL b/forester/archive/RIO/others/hmmer/squid/INSTALL new file mode 100644 index 0000000..4f96254 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/INSTALL @@ -0,0 +1,31 @@ +Brief installation instructions for squid +SRE, Tue Jul 25 08:52:03 2000 +________________________________________________________________ + +For a source distribution (example: squid-1.7.tar.gz), on a UNIX system: + + gunzip squid-1.7.tar.gz Uncompresses the archive. + tar xf squid-1.7.tar Unpacks the archive. + (makes a new directory, squid-1.7) + cd squid-1.7 Moves into the distribution toplevel directory. + ./configure Configures the software for your system. + make Builds the binaries. + make install Installs the software. (You may need to be root.) + make clean Cleans up. + +The default is to install into /usr/local/bin and other /usr/local +subdirectories. If this isn't what you want, edit the top of the +Makefile; instructions are provided there for changing the +installation paths. + +Any failure to install on a UNIX system is a bug. Please report it. + +Man pages are provided for some programs; see Man/ subdirectory. + + + + + + + + diff --git a/forester/archive/RIO/others/hmmer/squid/Makefile.in b/forester/archive/RIO/others/hmmer/squid/Makefile.in new file mode 100644 index 0000000..340aa82 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Makefile.in @@ -0,0 +1,292 @@ +############################################################### +# Makefile for SQUID library +# CVS $Id: Makefile.in,v 1.1.1.1 2005/03/22 08:34:26 cmzmasek Exp $ +# +# Note: The autoconf variables in this file must be coordinated +# with HMMER, if you change them, because HMMER will +# create a Makefile from this Makefile.in using its own +# configure script, not SQUID's. +# +########### +# HMMER - Biological sequence analysis with profile HMMs +# Copyright (C) 1992-1999 Washington University School of Medicine +# All Rights Reserved +# +# This source code is distributed under the terms of the +# GNU General Public License. See the files COPYING and LICENSE +# for details. +########### + +### Installation points +### +# For simple installations, just make sure ${prefix} is set correctly: +# default is /usr/local. +# +# For heterogenous computing environments, also +# set ${exec_prefix}, which gives you some flexibility +# for installing architecture dependent files (e.g. the programs). +# +# It's less likely that you'll need to set the individual +# variables BINDIR, MANDIR, etc., but they're there if you need 'em. +# +# The (simple) default configuration installs as follows: +# prefix = /usr/local +# executables in /usr/local/bin +# man pages in /usr/local/man/man1 +# header files in /usr/local/include +# libsquid.a in /usr/local/lib +# scripts in /usr/local/bin +# +# The St. Louis configuration, an example of a heterogenous +# computing environment, installs by setting: +# prefix = /usr/seshare/ +# exec_prefix = /usr/seshare/`uname` +# +# on a Linux platform, for instance, this results in: +# executables in /usr/seshare/Linux/bin +# man pages in /usr/seshare/man +# header files in /usr/seshare/include +# libsquid.a in /usr/seshare/Linux/lib +# scripts in /usr/seshare/Linux/bin +# +prefix = @prefix@ +exec_prefix = @exec_prefix@ +BINDIR = @bindir@ +MANDIR = @mandir@ +INCLUDEDIR = @includedir@ +LIBDIR = @libdir@ +SCRIPTDIR = @bindir@ + +## your compiler and compiler flags +# +CC = @CC@ +CFLAGS = @CFLAGS@ + +## other defined flags for machine-specific stuff +# +MDEFS = @MDEFS@ @DEFS@ +LIBS = @LIBS@ -lm + +## Archiver command +# +AR = ar rcv +RANLIB = @RANLIB@ + +## instructions for installing man pages +# +INSTMAN = cp +MANSUFFIX = 1 + +# Configuration for compiling in optional PVM support +# +PVMFLAG = @PVMFLAG@ +PVMLIBDIR = @PVMLIBDIR@ +PVMINCDIR = @PVMINCDIR@ +PVMLIBS = @PVMLIBS@ + +####### +## You should not need to modify below this line +####### +SHELL = /bin/sh +BASENAME = "squid" +PACKAGE = "SQUID" +RELEASE = "1.7" +RELCODE = "rel1_7" +RELEASEDATE = "July 2000" +COPYRIGHT = "Copyright \(C\) 1992-2000 HHMI/Washington University School of Medicine" +LICENSE = "Freely distributed under the GNU General Public License \(GPL\)" +LICENSETAG = gnu +COMPRESS = gzip + +PROGS = afetch\ + alistat\ + compalign\ + compstruct\ + sfetch\ + sreformat\ + revcomp\ + seqsplit\ + seqstat\ + shuffle\ + sindex\ + translate\ + weight + +MANS = alistat\ + seqstat\ + sfetch\ + shuffle\ + sreformat\ + +READMES = 00README INSTALL Makefile.in + +SCRIPTS = + +PRECONFHDRS = \ + squid.h.in\ + squidconf.h.in + +POSTCONFHDRS = \ + squid.h\ + squidconf.h\ + version.h + +HDRS = rk.h\ + sqfuncs.h\ + gki.h\ + gsi.h\ + msa.h\ + ssi.h\ + stopwatch.h + +OBJS = a2m.o\ + aligneval.o\ + alignio.o\ + clustal.o\ + cluster.o\ + dayhoff.o\ + eps.o\ + file.o\ + getopt.o\ + gki.o\ + gsi.o\ + hsregex.o\ + iupac.o\ + msa.o\ + msf.o\ + phylip.o\ + revcomp.o\ + rk.o\ + selex.o\ + seqencode.o\ + shuffle.o\ + sqerror.o\ + sqio.o\ + squidcore.o\ + sre_ctype.o\ + sre_math.o\ + sre_string.o\ + ssi.o\ + stack.o\ + stockholm.o\ + stopwatch.o\ + translate.o\ + types.o\ + weight.o + +################################################################ +# Targets that actually build the squid executables +all: version.h $(PROGS) + +$(PROGS): @EXEC_DEPENDENCY@ version.h $(OBJS) + $(CC) $(CFLAGS) $(MDEFS) $(PVMLIBDIR) -o $@ $@_main.o $(OBJS) $(PVMLIBS) $(LIBS) + +.c.o: + $(CC) $(CFLAGS) $(PVMFLAG) $(PVMINCDIR) $(MDEFS) -c $< +################################################################ + + +################################################################ +# Targets expected by packages (e.g. HMMER) that +# include SQUID as a module. +# +module: libsquid.a + +libsquid.a: version.h $(OBJS) + $(AR) libsquid.a $(OBJS) + $(RANLIB) libsquid.a + chmod 644 libsquid.a +################################################################# + + +# version.h: +# create the version.h file that will define stamps used by +# squidcore.c's Banner(), which is called by all executables to +# print a standard package/copyright/license banner; +# then puts copies of version.h in all directories that are +# going to need it. +# +version.h: + @echo "Creating version.h..." + @echo "/* version.h -- automatically generated by a Makefile. DO NOT EDIT. */" > version.h + @echo "#define PACKAGE \"$(PACKAGE)\"" >> version.h + @echo "#define RELEASE \"$(RELEASE)\"" >> version.h + @echo "#define RELEASEDATE \"$(RELEASEDATE)\"" >> version.h + @echo "#define COPYRIGHT \"$(COPYRIGHT)\"" >> version.h + @echo "#define LICENSE \"$(LICENSE)\"" >> version.h + +install: $(PROGS) libsquid.a + test -d $(LIBDIR) || mkdir -p $(LIBDIR) + test -d $(BINDIR) || mkdir -p $(BINDIR) + test -d $(SCRIPTDIR) || mkdir -p $(SCRIPTDIR) + test -d $(INCLUDEDIR)|| mkdir -p $(INCLUDEDIR) + test -d $(MANDIR)/man$(MANSUFFIX) || mkdir -p $(MANDIR)/man$(MANSUFFIX) + cp libsquid.a $(LIBDIR)/ + cp $(HDRS) $(INCLUDEDIR)/ + cp $(PROGS) $(BINDIR)/ + for scriptfile in $(SCRIPTS); do\ + cp Scripts/$$scriptfile $(SCRIPTDIR)/;\ + done + @for manpage in $(MANS); do\ + $(INSTMAN) $$manpage.man $(MANDIR)/man$(MANSUFFIX)/$$manpage.$(MANSUFFIX);\ + done + +distclean: + make clean + -rm -f Makefile libsquid.a version.h config.cache config.log config.status ${POSTCONFHDRS} + +clean: + -rm -f *.o *~ core TAGS llib-lsquid.ln $(PROGS) + +# dist: build a new distribution directory in squid-$RELEASE, and make a tarball. +# Extracts straight from the CVS repository, so you must first do +# a "cvs commit" (it checks to be sure you do, at least for the current +# working directory). +dist: +# Delete old versions of the same release +# + @if test -d ${BASENAME}-$(RELEASE); then rm -rf ${BASENAME}-$(RELEASE); fi + @if test -e ${BASENAME}-$(RELEASE).tar; then rm -f ${BASENAME}-$(RELEASE).tar; fi + @if test -e ${BASENAME}-$(RELEASE).tar.Z; then rm -f ${BASENAME}-$(RELEASE).tar.Z; fi + @if test -e ${BASENAME}-$(RELEASE).tar.gz; then rm -f ${BASENAME}-$(RELEASE).tar.gz; fi +# +# CVS tag and extract. -c: make sure we committed; +# -F: allow more than one "make dist" per rel +# prep: must have done "cvs commit", and CVSROOT must be set +# + cvs tag -c -F ${BASENAME}_${RELCODE} + cvs export -r ${BASENAME}_${RELCODE} -d ${BASENAME}-${RELEASE} ${BASENAME} +# +# Make the configure script from configure.in +# + (cd ${BASENAME}-${RELEASE}; autoconf) +# +# Include the appropriate license files +# + cp Licenses/LICENSE.${LICENSETAG} ${BASENAME}-${RELEASE}/LICENSE + cp Licenses/COPYRIGHT.${LICENSETAG} ${BASENAME}-${RELEASE}/COPYRIGHT +# +# Put license tags (short licenses) on files that need 'em (replace LICENSE keyword) +# + for file in $(READMES) *.c ${HDRS} ${PRECONFHDRS}; do\ + licenseadd.pl Licenses/$(LICENSETAG) ${BASENAME}-${RELEASE}/$$file;\ + done; +# +# Remove files/directories that aren't supposed to go out in the distro. +# Do this last, so other steps (license adding, etc.) have simple loops. +# + -rm -rf ${BASENAME}-${RELEASE}/Licenses + -rm -rf ${BASENAME}-${RELEASE}/Docs + -rm ${BASENAME}-${RELEASE}/LOG + -rm ${BASENAME}-${RELEASE}/configure.in + -rm ${BASENAME}-${RELEASE}/test_main.c +# +# pack it up! +# + tar cvf ${BASENAME}-${RELEASE}.tar ${BASENAME}-${RELEASE} + ${COMPRESS} ${BASENAME}-$(RELEASE).tar + +TAGS: + etags -t *.h *.c Makefile.in + + diff --git a/forester/archive/RIO/others/hmmer/squid/Man/afetch.man b/forester/archive/RIO/others/hmmer/squid/Man/afetch.man new file mode 100644 index 0000000..67074ad --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Man/afetch.man @@ -0,0 +1,98 @@ +.TH "afetch" 1 "@RELEASEDATE@" "@PACKAGE@ @RELEASE@" "@PACKAGE@ Manual" + +.SH NAME +.TP +afetch - retrieve an alignment from an alignment database + +.SH SYNOPSIS +.B afetch +.I [options] +.I alignmentdb +.I key + +.PP +.B afetch --index +.I alignmentdb + +.SH DESCRIPTION + +.B afetch +retrieves the alignment named +.I key +from an alignment database in file +.I alignmentdb. + +.PP +.I alignmentdb +is a "multiple multiple alignment" file in Stockholm (e.g. native +Pfam) format. + +.PP +.I key +is either the name (ID) of the alignment, or its accession +number (AC). + +.PP +The +.I alignmentdb +file should first be SSI indexed with +.B afetch --index +for efficient retrieval. An SSI index is +not required, but alignment retrieval without one may +be painfully slow. + +.SH OPTIONS + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.SH EXPERT OPTIONS + +.TP +.B --index +Instead of retrieving a +.I key, +the special command +.B afetch --index +.I alignmentdb +produces an SSI index of the names and accessions +of the alignments in +the file +.I alignmentdb. +This should be run once on the +.I alignmentdb +file to prepare it for all future afetch's. + +.SH SEE ALSO + +.PP +Master man page, with full list of and guide to the +individual man pages for SQUID's auxiliary programs: see +.B squid(1). + +.SH AUTHOR + +@PACKAGE@ and its documentation is @COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +See COPYING in the source code distribution for more details, or contact me. + +.nf +Sean Eddy +Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/squid/Man/alistat.man b/forester/archive/RIO/others/hmmer/squid/Man/alistat.man new file mode 100644 index 0000000..63d3e0d --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Man/alistat.man @@ -0,0 +1,138 @@ +.TH "alistat" 1 "@RELEASEDATE@" "@PACKAGE@ @RELEASE@" "@PACKAGE@ Manual" + +.SH NAME +.TP +alistat - show statistics for a multiple alignment file + +.SH SYNOPSIS +.B alistat +.I [options] +.I alignfile + +.SH DESCRIPTION + +.B alistat +reads a multiple sequence alignment from the file +.I alignfile +in any supported format (including SELEX, GCG MSF, and +CLUSTAL), and shows a number of simple statistics about it. +These statistics include the name of the format, +the number of sequences, the total number of residues, +the average and range of the sequence lengths, the +alignment length (e.g. including gap characters). + +.PP +Also shown are some percent identities. A percent +pairwise alignment identity is defined as +.I (idents / MIN(len1, len2)) +where +.I idents +is the number of exact identities +and +.I len1, len2 +are the unaligned lengths of the two +sequences. The "average percent identity", +"most related pair", and "most unrelated pair" +of the alignment are the average, maximum, and +minimum of all +(N)(N-1)/2 pairs, respectively. +The "most distant seq" is calculated by finding +the maximum pairwise identity (best relative) for all N sequences, +then finding the minimum of these N numbers (hence, +the most outlying sequence). + +.SH OPTIONS + +.TP +.B -a +Show additional verbose information: a table with one line per +sequence showing name, length, and its highest and lowest pairwise +identity. These lines are prefixed with a * character to enable +easily +.BR grep' ing +them out and sorting them. For example, +.I alistat -a foo.slx | grep "*" | sort -n +3 +gives a ranked list of the most distant sequences +in the alignment. +Incompatible with the +.B -f +option. + +.TP +.B -f +Fast; use a sampling method to estimate the average %id. +When this option is chosen, +.B alistat +doesn't show the other three pairwise identity numbers. +This option is useful for very large alignments, for +which the full (N)(N-1) calculation of all pairs would +be prohibitive (e.g. Pfam's GP120 alignment, with over +10,000 sequences). Incompatible with the +.B -a +option. + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.B -q +be quiet - suppress the verbose header (program name, release number +and date, the parameters and options in effect). + +.TP +.B -B +(Babelfish). Autodetect and read a sequence file format other than the +default (FASTA). Almost any common sequence file format is recognized +(including Genbank, EMBL, SWISS-PROT, PIR, and GCG unaligned sequence +formats, and Stockholm, GCG MSF, and Clustal alignment formats). See +the printed documentation for a complete list of supported formats. + +.SH EXPERT OPTIONS + +.TP +.BI --informat " " +Specify that the sequence file is in format +.I , +rather than the default FASTA format. +Common examples include Genbank, EMBL, GCG, +PIR, Stockholm, Clustal, MSF, or PHYLIP; +see the printed documentation for a complete list +of accepted format names. +This option overrides the default format (FASTA) +and the +.I -B +Babelfish autodetection option. + + + +.SH SEE ALSO + +.PP +@SEEALSO@ + +.SH AUTHOR + +@PACKAGE@ and its documentation is @COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +See COPYING in the source code distribution for more details, or contact me. + +.nf +Sean Eddy +Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/squid/Man/seqstat.man b/forester/archive/RIO/others/hmmer/squid/Man/seqstat.man new file mode 100644 index 0000000..5c0644e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Man/seqstat.man @@ -0,0 +1,98 @@ +.TH "seqstat" 1 "@RELEASEDATE@" "@PACKAGE@ @RELEASE@" "@PACKAGE@ Manual" + +.SH NAME +.TP +seqstat - show statistics and format for a sequence file + +.SH SYNOPSIS +.B seqstat +.I [options] +.I seqfile + +.SH DESCRIPTION + +.B seqstat +reads a sequence file +.I seqfile +and shows a number of simple statistics about it. + +.pp +The printed statistics include the name of the format, the residue +type of the first sequence (protein, RNA, or DNA), the number of +sequences, the total number of residues, and the average and range of +the sequence lengths. + +.SH OPTIONS + +.TP +.B -a +Show additional verbose information: a table with one line per +sequence showing name, length, and description line. +These lines are prefixed with a * character to enable +easily +.BR grep' ing +them out and sorting them. + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.B -B +(Babelfish). Autodetect and read a sequence file format other than the +default (FASTA). Almost any common sequence file format is recognized +(including Genbank, EMBL, SWISS-PROT, PIR, and GCG unaligned sequence +formats, and Stockholm, GCG MSF, and Clustal alignment formats). See +the printed documentation for a complete list of supported formats. + +.SH EXPERT OPTIONS + +.TP +.BI --informat " " +Specify that the sequence file is in format +.I , +rather than the default FASTA format. +Common examples include Genbank, EMBL, GCG, +PIR, Stockholm, Clustal, MSF, or PHYLIP; +see the printed documentation for a complete list +of accepted format names. +This option overrides the default expected format (FASTA) +and the +.I -B +Babelfish autodetection option. + +.TP +.B --quiet +Suppress the verbose header (program name, release number +and date, the parameters and options in effect). + +.SH SEE ALSO + +.PP +@SEEALSO@ + +.SH AUTHOR + +@PACKAGE@ and its documentation is @COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +See COPYING in the source code distribution for more details, or contact me. + +.nf +Sean Eddy +Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/squid/Man/sfetch.man b/forester/archive/RIO/others/hmmer/squid/Man/sfetch.man new file mode 100644 index 0000000..25f745c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Man/sfetch.man @@ -0,0 +1,226 @@ +.TH "sfetch" 1 "@RELEASEDATE@" "@PACKAGE@ @RELEASE@" "@PACKAGE@ Manual" + +.SH NAME +.TP +sfetch - get a sequence from a flatfile database. + +.SH SYNOPSIS +.B sfetch +.I [options] +.I seqname + +.SH DESCRIPTION + +.B sfetch +retrieves the sequence named +.I seqname +from a sequence database. + +.PP +Which database is used is controlled by the +.B -d +and +.B -D +options, or "little databases" and "big +databases". +The directory location of "big databases" can +be specified by environment variables, +such as $SWDIR for Swissprot, and $GBDIR +for Genbank (see +.B -D +for complete list). +A complete file path must be specified +for "little databases". +By default, if neither option is specified +and the name looks like a Swissprot identifier +(e.g. it has a _ character), the $SWDIR +environment variable is used to attempt +to retrieve the sequence +.I seqname +from Swissprot. + +.PP +A variety of other options are available which allow +retrieval of subsequences +.RI ( -f,-t ); +retrieval by accession number instead of +by name +.RI ( -a ); +reformatting the extracted sequence into a variety +of other formats +.RI ( -F ); +etc. + +.PP +If the database has been GSI indexed, sequence +retrieval will be extremely efficient; else, +retrieval may be painfully slow (the entire +database may have to be read into memory to +find +.IR seqname ). +GSI indexing +is recommended for all large or permanent +databases. + +.pp +This program was originally named +.B getseq, +and was renamed because it clashed with a GCG +program of the same name. + +.SH OPTIONS + +.TP +.B -a +Interpret +.I seqname +as an accession number, not an identifier. + +.TP +.BI -d " " +Retrieve the sequence from a sequence file named +.I . +If a GSI index +.I .gsi +exists, it is used to speed up the retrieval. + +.TP +.BI -f " " +Extract a subsequence starting from position +.I , +rather than from 1. See +.B -t. +If +.I +is greater than +.I +(as specified by the +.B -t +option), then the sequence is extracted as +its reverse complement (it is assumed to be +nucleic acid sequence). + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.BI -o " " +Direct the output to a file named +.I . +By default, output would go to stdout. + +.TP +.BI -r " " +Rename the sequence +.I +in the output after extraction. By default, the original +sequence identifier would be retained. Useful, for instance, +if retrieving a sequence fragment; the coordinates of +the fragment might be added to the name (this is what Pfam +does). + +.TP +.BI -t " " +Extract a subsequence that ends at position +.I , +rather than at the end of the sequence. See +.B -f. +If +.I +is less than +.I +(as specified by the +.B -f +option), then the sequence is extracted as +its reverse complement (it is assumed to be +nucleic acid sequence) + +.TP +.B -B +(Babelfish). Autodetect and read a sequence file format other than the +default (FASTA). Almost any common sequence file format is recognized +(including Genbank, EMBL, SWISS-PROT, PIR, and GCG unaligned sequence +formats, and Stockholm, GCG MSF, and Clustal alignment formats). See +the printed documentation for a complete list of supported formats. + + +.TP +.BI -D " " +Retrieve the sequence from the main sequence database +coded +.I . For each code, there is an environment +variable that specifies the directory path to that +database. +Recognized codes and their corresponding environment +variables are +.I -Dsw +(Swissprot, $SWDIR); +.I -Dpir +(PIR, $PIRDIR); +.I -Dem +(EMBL, $EMBLDIR); +.I -Dgb +(Genbank, $GBDIR); +.I -Dwp +(Wormpep, $WORMDIR); and +.I -Dowl +(OWL, $OWLDIR). +Each database is read in its native flatfile format. + +.TP +.BI -F " " +Reformat the extracted sequence into a different format. +(By default, the sequence is extracted from the database +in the same format as the database.) Available formats +are +.B embl, fasta, genbank, gcg, strider, zuker, ig, pir, squid, +and +.B raw. + +.SH EXPERT OPTIONS + +.TP +.BI --informat " " +Specify that the sequence file is in format +.I , +rather than the default FASTA format. +Common examples include Genbank, EMBL, GCG, +PIR, Stockholm, Clustal, MSF, or PHYLIP; +see the printed documentation for a complete list +of accepted format names. +This option overrides the default format (FASTA) +and the +.I -B +Babelfish autodetection option. + +.SH SEE ALSO + +.PP +@SEEALSO@ + +.SH AUTHOR + +@PACKAGE@ and its documentation is @COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +See COPYING in the source code distribution for more details, or contact me. + +.nf +Sean Eddy +Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/squid/Man/shuffle.man b/forester/archive/RIO/others/hmmer/squid/Man/shuffle.man new file mode 100644 index 0000000..93bbe53 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Man/shuffle.man @@ -0,0 +1,204 @@ +.TH "shuffle" 1 "@RELEASEDATE@" "@PACKAGE@ @RELEASE@" "@PACKAGE@ Manual" + +.SH NAME +.TP +shuffle - randomize the sequences in a sequence file + +.SH SYNOPSIS +.B shuffle +.I [options] +.I seqfile + +.SH DESCRIPTION + +.B shuffle +reads a sequence file +.I seqfile, +randomizes each sequence, and prints the randomized sequences +in FASTA format on standard output. The sequence names +are unchanged; this allows you to track down the source +of each randomized sequence if necessary. + +.pp +The default is to simply shuffle each input sequence, preserving +monosymbol composition exactly. To shuffle +each sequence while preserving both its monosymbol and disymbol +composition exactly, use the +.I -d +option. + +.pp +The +.I -0 +and +.I -1 +options allow you to generate sequences with the same +Markov properties as each input sequence. With +.I -0, +for each input sequence, 0th order Markov statistics +are collected (e.g. symbol composition), and a new +sequence is generated with the same composition. +With +.I -1, +the generated sequence has the same 1st order +Markov properties as the input sequence (e.g. +the same disymbol frequencies). + +.pp +Note that the default and +.I -0, +or +.I -d +and +.I -1, +are similar; the shuffling algorithms preserve +composition exactly, while the Markov algorithms +only expect to generate a sequence of similar +composition on average. + +.pp +Other shuffling algorithms are also available, +as documented below in the options. + +.SH OPTIONS + +.TP +.B -0 +Calculate 0th order Markov frequencies of each input sequence +(e.g. residue composition); generate output sequence +using the same 0th order Markov frequencies. + +.TP +.B -1 +Calculate 1st order Markov frequencies for each input +sequence (e.g. diresidue composition); generate output +sequence using the same 1st order Markov frequencies. +The first residue of the output sequence is always +the same as the first residue of the input sequence. + +.TP +.B -d +Shuffle the input sequence while preserving both +monosymbol and disymbol composition exactly. Uses +an algorithm published by S.F. Altschul and B.W. Erickson, +Mol. Biol. Evol. 2:526-538, 1985. + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.B -l +Look only at the length of each input sequence; generate +an i.i.d. output protein sequence of that length, +using monoresidue frequencies typical of proteins +(taken from Swissprot 35). + +.TP +.BI -n " " +Make +.I +different randomizations of each input sequence in +.I seqfile, +rather than the default of one. + +.TP +.B -r +Generate the output sequence by reversing the +input sequence. (Therefore only one "randomization" +per input sequence is possible, so it's +not worth using +.I -n +if you use reversal.) + +.TP +.BI -t " " +Truncate each input sequence to a fixed length of exactly +.I +residues. If the input sequence is shorter than +.I +it is discarded (therefore the output file may contain +fewer sequences than the input file). +If the input sequence is longer than +.I +a contiguous subsequence is randomly chosen. + +.TP +.BI -w " " +Regionally shuffle each input sequence in window sizes of +.I , +preserving local residue composition in each window. +Probably a better shuffling algorithm for biosequences +with nonstationary residue composition (e.g. composition +that is varying along the sequence, such as between +different isochores in human genome sequence). + +.TP +.B -B +(Babelfish). Autodetect and read a sequence file format other than the +default (FASTA). Almost any common sequence file format is recognized +(including Genbank, EMBL, SWISS-PROT, PIR, and GCG unaligned sequence +formats, and Stockholm, GCG MSF, and Clustal alignment formats). See +the printed documentation for a complete list of supported formats. + +.SH EXPERT OPTIONS + +.TP +.BI --informat " " +Specify that the sequence file is in format +.I , +rather than the default FASTA format. +Common examples include Genbank, EMBL, GCG, +PIR, Stockholm, Clustal, MSF, or PHYLIP; +see the printed documentation for a complete list +of accepted format names. +This option overrides the default expected format (FASTA) +and the +.I -B +Babelfish autodetection option. + +.TP +.B --nodesc +Do not output any sequence description in the output file, +only the sequence names. + +.TP +.BI --seed " " +Set the random number seed to +.I . +If you want reproducible results, use the same seed each time. +By default, +.B shuffle +uses a different seed each time, so does not generate +the same output in subsequent runs with the same input. + +.SH SEE ALSO + +.PP +@SEEALSO@ + +.SH AUTHOR + +@PACKAGE@ and its documentation is @COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +See COPYING in the source code distribution for more details, or contact me. + +.nf +Sean Eddy +Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/squid/Man/sreformat.man b/forester/archive/RIO/others/hmmer/squid/Man/sreformat.man new file mode 100644 index 0000000..c502a39 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/Man/sreformat.man @@ -0,0 +1,249 @@ +.TH "sreformat" 1 "@RELEASEDATE@" "@PACKAGE@ @RELEASE@" "@PACKAGE@ Manual" + +.SH NAME +.TP +sreformat - convert sequence file to different format + +.SH SYNOPSIS +.B sreformat +.I [options] +.I format +.I seqfile + +.SH DESCRIPTION + +.B sreformat +reads the sequence file +.I seqfile +in any supported format, reformats it +into a new format specified by +.I format, +then prints the reformatted text. + +.PP +Supported input formats include (but are not limited to) the unaligned +formats FASTA, Genbank, EMBL, SWISS-PROT, PIR, and GCG, and the +aligned formats Stockholm, Clustal, GCG MSF, and Phylip. + +.PP +Available unaligned output file format codes +include +.I fasta +(FASTA format); +.I embl +(EMBL/SWISSPROT format); +.I genbank +(Genbank format); +.I gcg +(GCG single sequence format); +.I gcgdata +(GCG flatfile database format); +.I strider +(MacStrider format); +.I zuker +(Zuker MFOLD format); +.I ig +(Intelligenetics format); +.I pir +(PIR/CODATA flatfile format); +.I squid +(an undocumented St. Louis format); +.I raw +(raw sequence, no other information). + +.pp +The available aligned output file format +codes include +.I stockholm +(PFAM/Stockholm format); +.I msf +(GCG MSF format); +.I a2m +(aligned FASTA format, called A2M by the UC Santa Cruz +HMM group); +.I PHYLIP +(Felsenstein's PHYLIP format); and +.I selex +(old SELEX/HMMER/Pfam annotated alignment format); + +.pp +All thee codes are interpreted case-insensitively +(e.g. MSF, Msf, or msf all work). + +.PP +Unaligned format files cannot be reformatted to +aligned formats. +However, aligned formats can be reformatted +to unaligned formats -- gap characters are +simply stripped out. + +.PP +This program was originally named +.B reformat, +but that name clashes with a GCG program of the same name. + +.SH OPTIONS + +.TP +.B -a +Enable alignment reformatting. By default, sreformat expects +that the input file should be handled as an unaligned input +file (even if it is an alignment), and it will not allow you +to convert an unaligned file to an alignment (for obvious +reasons). +.pp +This may seem silly; surely if sreformat can autodetect and parse +alignment file formats as input, it can figure out when it's got an +alignment! There are two reasons. One is just the historical +structure of the code. The other is that FASTA unaligned format and +A2M aligned format (aligned FASTA) are impossible to tell apart with +100% confidence. + +.TP +.B -d +DNA; convert U's to T's, to make sure a nucleic acid +sequence is shown as DNA not RNA. See +.B -r. + +.TP +.B -h +Print brief help; includes version number and summary of +all options, including expert options. + +.TP +.B -l +Lowercase; convert all sequence residues to lower case. +See +.B -u. + +.TP +.B -r +RNA; convert T's to U's, to make sure a nucleic acid +sequence is shown as RNA not DNA. See +.B -d. + +.TP +.B -u +Uppercase; convert all sequence residues to upper case. +See +.B -l. + +.TP +.B -x +For DNA sequences, convert non-IUPAC characters (such as X's) to N's. +This is for compatibility with benighted people who insist on using X +instead of the IUPAC ambiguity character N. (X is for ambiguity +in an amino acid residue). +.pp +Warning: the code doesn't +check that you are actually giving it DNA. It simply +literally just converts non-IUPAC DNA symbols to N. So +if you accidentally give it protein sequence, it will +happily convert most every amino acid residue to an N. + +.TP +.B -B +(Babelfish). Autodetect and read a sequence file format other than the +default (FASTA). Almost any common sequence file format is recognized +(including Genbank, EMBL, SWISS-PROT, PIR, and GCG unaligned sequence +formats, and Stockholm, GCG MSF, and Clustal alignment formats). See +the printed documentation for a complete list of supported formats. + + +.SH EXPERT OPTIONS + +.TP +.BI --informat " " +Specify that the sequence file is in format +.I , +rather than the default FASTA format. +Common examples include Genbank, EMBL, GCG, +PIR, Stockholm, Clustal, MSF, or PHYLIP; +see the printed documentation for a complete list +of accepted format names. +This option overrides the default format (FASTA) +and the +.I -B +Babelfish autodetection option. + +.TP +.B --mingap +If +.I seqfile +is an alignment, remove any columns that contain 100% gap +characters, minimizing the overall length of the alignment. +(Often useful if you've extracted a subset of aligned +sequences from a larger alignment.) + +.TP +.B --pfam +For SELEX alignment output format only, put the entire +alignment in one block (don't wrap into multiple blocks). +This is close to the format used internally by Pfam +in Stockholm and Cambridge. + +.TP +.B --sam +Try to convert gap characters to UC Santa Cruz SAM style, where a . +means a gap in an insert column, and a - means a +deletion in a consensus/match column. This only +works for converting aligned file formats, and only +if the alignment already adheres to the SAM convention +of upper case for residues in consensus/match columns, +and lower case for residues in insert columns. This is +true, for instance, of all alignments produced by old +versions of HMMER. (HMMER2 produces alignments +that adhere to SAM's conventions even in gap character choice.) +This option was added to allow Pfam alignments to be +reformatted into something more suitable for profile HMM +construction using the UCSC SAM software. + +.TP +.BI --samfrac " " +Try to convert the alignment gap characters and +residue cases to UC Santa Cruz SAM style, where a . +means a gap in an insert column and a - means a +deletion in a consensus/match column, and +upper case means match/consensus residues and +lower case means inserted resiudes. This will only +work for converting aligned file formats, but unlike the +.B --sam +option, it will work regardless of whether the file adheres +to the upper/lower case residue convention. Instead, any +column containing more than a fraction +.I +of gap characters is interpreted as an insert column, +and all other columns are interpreted as match columns. +This option was added to allow Pfam alignments to be +reformatted into something more suitable for profile HMM +construction using the UCSC SAM software. + +.SH SEE ALSO + +.PP +@SEEALSO@ + +.SH AUTHOR + +@PACKAGE@ and its documentation is @COPYRIGHT@ +HMMER - Biological sequence analysis with profile HMMs +Copyright (C) 1992-1999 Washington University School of Medicine +All Rights Reserved + + This source code is distributed under the terms of the + GNU General Public License. See the files COPYING and LICENSE + for details. +See COPYING in the source code distribution for more details, or contact me. + +.nf +Sean Eddy +Dept. of Genetics +Washington Univ. School of Medicine +4566 Scott Ave. +St Louis, MO 63110 USA +Phone: 1-314-362-7666 +FAX : 1-314-362-7855 +Email: eddy@genetics.wustl.edu +.fi + + diff --git a/forester/archive/RIO/others/hmmer/squid/a2m.c b/forester/archive/RIO/others/hmmer/squid/a2m.c new file mode 100644 index 0000000..5beff81 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/a2m.c @@ -0,0 +1,113 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* a2m.c + * + * reading/writing A2M (aligned FASTA) files. + * + * RCS $Id: a2m.c,v 1.1.1.1 2005/03/22 08:34:17 cmzmasek Exp $ + */ + +#include +#include +#include +#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 +WriteA2M(FILE *fp, MSA *msa) +{ + 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++) + { + fprintf(fp, ">%s %s\n", + msa->sqname[idx], + (msa->sqdesc != NULL && msa->sqdesc[idx] != NULL) ? msa->sqdesc[idx] : ""); + for (pos = 0; pos < msa->alen; pos+=cpl) + { + strncpy(buf, &(msa->aseq[idx][pos]), cpl); + fprintf(fp, "%s\n", buf); + } + } +} diff --git a/forester/archive/RIO/others/hmmer/squid/afetch_main.c b/forester/archive/RIO/others/hmmer/squid/afetch_main.c new file mode 100644 index 0000000..23119a5 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/afetch_main.c @@ -0,0 +1,182 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* afetch_main.c + * SRE, Tue Nov 9 18:47:02 1999 [Saint Louis] + * + * afetch -- a program to extract alignments from the Pfam database + * + * CVS $Id: afetch_main.c,v 1.1.1.1 2005/03/22 08:34:30 cmzmasek Exp $ + */ + +#include +#include +#include "squid.h" +#include "msa.h" +#include "ssi.h" + +static char banner[] = "afetch - retrieve an alignment from Pfam"; + +static char usage[] = "\ +Usage: afetch [-options] \n\ + or: afetch --index \n\ +\n\ + Get an alignment from a database.\n\ + Available options:\n\ + -h : help; print version and usage info\n\ +"; + +static char experts[] = "\ + --index : construct indices for the database\n\ +"; + +struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "--index", FALSE, sqdARG_NONE } +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *afile; /* name of alignment file to read */ + MSAFILE *afp; /* pointer to open index file */ + char *key; /* name/accession of alignment to fetch */ + MSA *msa; /* the fetched alignment */ + int format; /* format of afile */ + int do_index; /* TRUE to index instead of retrieve */ + + char *optname; + char *optarg; + int optind; + + /*********************************************** + * Parse the command line + ***********************************************/ + + /* initializations and defaults */ + format = MSAFILE_STOCKHOLM; /* period. It's the only multi-MSA file format. */ + do_index = FALSE; + key = NULL; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "--index") == 0) { do_index = TRUE; } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if ((do_index && argc - optind != 1) || (! do_index && argc - optind != 2)) + Die("Incorrect number of command line arguments.\n%s\n", usage); + + afile = argv[optind++]; + if (! do_index) key = argv[optind++]; + + if ((afp = MSAFileOpen(afile, format, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", afile); + + /*********************************************** + * Section 1. Alignment database indexing + ***********************************************/ + + if (do_index) { + int mode; + char *ssifile; + SSIINDEX *si; + int fh; + int status; + SSIOFFSET offset; + int n = 0; + + /* Not that we're expecting an alignment file so + * large that it would require a 64-bit index, but... + */ + if ((mode = SSIRecommendMode(afile)) == -1) + Die("File %s doesn't exist, or is too large for your OS", afile); + + ssifile = sre_strdup(afile, -1); + sre_strcat(&ssifile, -1, ".ssi", -1); + + if ((si = SSICreateIndex(mode)) == NULL) + Die("Couldn't allocate/initialize the new SSI index"); + if (SSIAddFileToIndex(si, afile, afp->format, &fh) != 0) + Die("SSIAddFileToIndex() failed"); + + status = SSIGetFilePosition(afp->f, mode, &offset); + if (status != 0) Die("SSIGetFilePosition() failed"); + + while ((msa = MSAFileRead(afp)) != NULL) + { + if (msa->name == NULL) + Die("SSI index requires that every MSA has a name"); + + status = SSIAddPrimaryKeyToIndex(si, msa->name, fh, &offset, NULL, 0); + if (status != 0) Die("SSIAddPrimaryKeyToIndex() failed"); + + if (msa->acc != NULL) { + status = SSIAddSecondaryKeyToIndex(si, msa->acc, msa->name); + if (status != 0) Die("SSIAddSecondaryKeyToIndex() failed"); + } + + status = SSIGetFilePosition(afp->f, mode, &offset); + if (status != 0) Die("SSIGetFilePosition() failed"); + + n++; + MSAFree(msa); + } + + status = SSIWriteIndex(ssifile, si); + if (status != 0) Die("SSIWriteIndex() failed"); + + printf ("%d alignments indexed in SSI index %s\n", n, ssifile); + free(ssifile); + MSAFileClose(afp); + SSIFreeIndex(si); + SqdClean(); + exit (0); /* exit indexing program here */ + } + + /*********************************************** + * Section 2. Alignment retrieval + ***********************************************/ + + /* Indexed retrieval: + */ + if (afp->ssi != NULL) { + if (! MSAFilePositionByKey(afp, key)) + Die("No such alignment %s found in file %s", key, afile); + msa = MSAFileRead(afp); + } + /* Brute force retrieval: + */ + else { + while ((msa = MSAFileRead(afp)) != NULL) + { + if (strcmp(msa->name, key) == 0) break; + if (strcmp(msa->acc, key) == 0) break; + MSAFree(msa); + } + } + + if (msa == NULL) Die("Failed to retrieve %s from file %s", key, afile); + + /* Output the alignment we retrieved + */ + WriteStockholm(stdout, msa); + + MSAFileClose(afp); + MSAFree(msa); + exit (0); +} diff --git a/forester/archive/RIO/others/hmmer/squid/aligneval.c b/forester/archive/RIO/others/hmmer/squid/aligneval.c new file mode 100644 index 0000000..e9c23a2 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/aligneval.c @@ -0,0 +1,513 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* aligneval.c + * RCS $Id: aligneval.c,v 1.1.1.1 2005/03/22 08:34:31 cmzmasek Exp $ + * + * Comparison of multiple alignments. Three functions are + * provided, using subtly different scoring schemes: + * CompareMultAlignments() - basic scoring scheme + * CompareRefMultAlignments() - only certain "canonical" columns + * are scored + * + * The similarity measure is a fractional alignment identity averaged + * over all sequence pairs. The score for all pairs is: + * (identically aligned symbols) / (total aligned columns in + * known alignment) + * + * A column c is identically aligned for sequences i, j if: + * 1) both i,j have a symbol aligned in column c, and the + * same pair of symbols is aligned somewhere in the test + * alignment + * 2) S[i][c] is aligned to a gap in sequence j, and that symbol + * is aligned to a gap in the test alignment + * 3) converse of 2) + * + * + * The algorithm is as follows: + * 1) For each known/test aligned pair of sequences (k1,k2 and t1,t2) + * construct a list for each sequence, in which for every + * counted symbol we record the raw index of the symbol in + * the other sequence that it aligns to, or -1 if it aligns + * to a gap or uncounted symbol. + * + * 2) Compare the list for k1 to the list for t1 and count an identity + * for each correct alignment. + * + * 3) Repeat 2) for comparing k2 to t2. Note that this means correct sym/sym + * alignments count for 2; correct sym/gap alignments count for 1. + * + * 4) The score is (identities from 2 + identities from 3) / + * (totals from 2 + totals from 3). + * + * Written originally for koala's ss2 pairwise alignment package. + * + * Sean Eddy, Sun Nov 1 12:45:11 1992 + * SRE, Thu Jul 29 16:47:18 1993: major revision: all functions replaced by new algorithm + * CVS $Id: aligneval.c,v 1.1.1.1 2005/03/22 08:34:31 cmzmasek Exp $ + */ + + +#include +#include +#include +#include "squid.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +static int make_alilist(char *s1, char *s2, int **ret_s1_list, int *ret_listlen); +static int make_ref_alilist(int *refcoords, char *k1, char *k2, char *s1, char *s2, + int **ret_s1_list, int *ret_listlen); +static int compare_lists(int *k1, int *k2, int *t1, int *t2, int len1, int len2, float *ret_sc); + + +/* Function: ComparePairAlignments + * + * Purpose: Calculate and return a number representing how well two different alignments + * of a pair of sequences compare. The number is, roughly speaking, + * the fraction of columns which are identically aligned. + * + * For all columns c in which either known1[c] or known2[c] + * is a non-gap, count an identity if those same symbols are + * aligned somewhere in calc1/calc2. The score is identities/total + * columns examined. (i.e. fully gapped columns don't count) + * + * more explicitly, identities come from: + * both known and test aligned pairs have the same symbol in the first sequence aligned to + * a gap in the second sequence; + * both known and test aligned pairs have the same symbol in the second sequence + * aligned to a gap in the first sequence; + * the known alignment has symbols aligned at this column, and the test + * alignment aligns the same two symbols. + * + * Args: known1, known2: trusted alignment of two sequences + * calc1, calc2: test alignment of two sequences + * + * Return: Returns -1.0 on internal failure. + */ +float +ComparePairAlignments(char *known1, char *known2, char *calc1, char *calc2) +{ + int *klist1; + int *klist2; + int *tlist1; + int *tlist2; + int len1, len2; + float score; + + if (! make_alilist(calc1, calc2, &tlist1, &len1)) return -1.0; + if (! make_alilist(calc2, calc1, &tlist2, &len2)) return -1.0; + if (! make_alilist(known1, known2, &klist1, &len1)) return -1.0; + if (! make_alilist(known2, known1, &klist2, &len2)) return -1.0; + if (! compare_lists(klist1, klist2, tlist1, tlist2, len1, len2, &score)) return -1.0; + + free(klist1); + free(klist2); + free(tlist1); + free(tlist2); + return score; +} + + + +/* Function: CompareRefPairAlignments() + * + * Same as above, but the only columns that count are the ones + * with indices in *refcoord. *refcoord and the known1, known2 + * pair must be in sync with each other (come from the same + * multiple sequence alignment) + * + * Args: ref - 0..alen-1 array of 1 or 0 + * known1,known2 - trusted alignment + * calc1, calc2 - test alignment + * + * Return: the fractional alignment identity on success, -1.0 on failure. + */ +float +CompareRefPairAlignments(int *ref, char *known1, char *known2, char *calc1, char *calc2) +{ + int *klist1; + int *klist2; + int *tlist1; + int *tlist2; + int len1, len2; + float score; + + if (! make_ref_alilist(ref, known1, known2, calc1, calc2, &tlist1, &len1)) return -1.0; + if (! make_ref_alilist(ref, known2, known1, calc2, calc1, &tlist2, &len2)) return -1.0; + if (! make_ref_alilist(ref, known1, known2, known1, known2, &klist1, &len1)) return -1.0; + if (! make_ref_alilist(ref, known2, known1, known2, known1, &klist2, &len2)) return -1.0; + if (! compare_lists(klist1, klist2, tlist1, tlist2, len1, len2, &score)) return -1.0; + + free(klist1); + free(klist2); + free(tlist1); + free(tlist2); + return score; +} + +/* Function: make_alilist() + * + * Purpose: Construct a list (array) mapping the raw symbols of s1 + * onto the indexes of the aligned symbols in s2 (or -1 + * for gaps in s2). The list (s1_list) will be of the + * length of s1's raw sequence. + * + * Args: s1 - sequence to construct the list for + * s2 - sequence s1 is aligned to + * ret_s1_list - RETURN: the constructed list (caller must free) + * ret_listlen - RETURN: length of the list + * + * Returns: 1 on success, 0 on failure + */ +static int +make_alilist(char *s1, char *s2, int **ret_s1_list, int *ret_listlen) +{ + int *s1_list; + int col; /* column position in alignment */ + int r1, r2; /* raw symbol index at current col in s1, s2 */ + + /* Malloc for s1_list. It can't be longer than s1 itself; we just malloc + * for that (and waste a wee bit of space) + */ + s1_list = (int *) MallocOrDie (sizeof(int) * strlen(s1)); + r1 = r2 = 0; + for (col = 0; s1[col] != '\0'; col++) + { + /* symbol in s1? Record what it's aligned to, and bump + * the r1 counter. + */ + if (! isgap(s1[col])) + { + s1_list[r1] = isgap(s2[col]) ? -1 : r2; + r1++; + } + + /* symbol in s2? bump the r2 counter + */ + if (! isgap(s2[col])) + r2++; + } + + *ret_listlen = r1; + *ret_s1_list = s1_list; + return 1; +} + + + +/* Function: make_ref_alilist() + * + * Purpose: Construct a list (array) mapping the raw symbols of s1 + * which are under canonical columns of the ref alignment + * onto the indexes of the aligned symbols in s2 (or -1 + * for gaps in s2 or noncanonical symbols in s2). + * + * Args: ref: - array of indices of canonical coords (1 canonical, 0 non) + * k1 - s1's known alignment (w/ respect to refcoords) + * k2 - s2's known alignment (w/ respect to refcoords) + * s1 - sequence to construct the list for + * s2 - sequence s1 is aligned to + * ret_s1_list - RETURN: the constructed list (caller must free) + * ret_listlen - RETURN: length of the list + * + * Returns: 1 on success, 0 on failure + */ +/*ARGSUSED*/ +static int +make_ref_alilist(int *ref, char *k1, char *k2, + char *s1, char *s2, int **ret_s1_list, int *ret_listlen) +{ + int *s1_list; + int col; /* column position in alignment */ + int r1, r2; /* raw symbol index at current col in s1, s2 */ + int *canons1; /* flag array, 1 if position i in s1 raw seq is canonical */ + int lpos; /* position in list */ + + /* Allocations. No arrays can exceed the length of their + * appropriate parent (s1 or s2) + */ + s1_list = (int *) MallocOrDie (sizeof(int) * strlen(s1)); + canons1 = (int *) MallocOrDie (sizeof(int) * strlen(s1)); + + /* First we use refcoords and k1,k2 to construct an array of 1's + * and 0's, telling us whether s1's raw symbol number i is countable. + * It's countable simply if it's under a canonical column. + */ + r1 = 0; + for (col = 0; k1[col] != '\0'; col++) + { + if (! isgap(k1[col])) + { + canons1[r1] = ref[col] ? 1 : 0; + r1++; + } + } + + /* Now we can construct the list. We don't count pairs if the sym in s1 + * is non-canonical. + * We have to keep separate track of our position in the list (lpos) + * from our positions in the raw sequences (r1,r2) + */ + r1 = r2 = lpos = 0; + for (col = 0; s1[col] != '\0'; col++) + { + if (! isgap(s1[col]) && canons1[r1]) + { + s1_list[lpos] = isgap(s2[col]) ? -1 : r2; + lpos++; + } + + if (! isgap(s1[col])) + r1++; + if (! isgap(s2[col])) + r2++; + } + + free(canons1); + *ret_listlen = lpos; + *ret_s1_list = s1_list; + return 1; +} + +/* Function: compare_lists() + * + * Purpose: Given four alignment lists (k1,k2, t1,t2), calculate the + * alignment score. + * + * Args: k1 - list of k1's alignment to k2 + * k2 - list of k2's alignment to k1 + * t1 - list of t1's alignment to t2 + * t2 - list of t2's alignment to t2 + * len1 - length of k1, t1 lists (same by definition) + * len2 - length of k2, t2 lists (same by definition) + * ret_sc - RETURN: identity score of alignment + * + * Return: 1 on success, 0 on failure. + */ +static int +compare_lists(int *k1, int *k2, int *t1, int *t2, int len1, int len2, float *ret_sc) +{ + float id; + float tot; + int i; + + id = tot = 0.0; + for (i = 0; i < len1; i++) + { + tot += 1.0; + if (t1[i] == k1[i]) id += 1.0; + } + + for ( i = 0; i < len2; i++) + { + tot += 1.0; + if (k2[i] == t2[i]) id += 1.0; + } + + *ret_sc = id / tot; + return 1; +} + + +/* Function: CompareMultAlignments + * + * Purpose: Invokes pairwise alignment comparison for every possible pair, + * and returns the average score over all N(N-1) of them or -1.0 + * on an internal failure. + * + * Can be slow for large N, since it's quadratic. + * + * Args: kseqs - trusted multiple alignment + * tseqs - test multiple alignment + * N - number of sequences + * + * Return: average identity score, or -1.0 on failure. + */ +float +CompareMultAlignments(char **kseqs, char **tseqs, int N) +{ + int i, j; /* counters for sequences */ + float score; + float tot_score = 0.0; + /* do all pairwise comparisons */ + for (i = 0; i < N; i++) + for (j = i+1; j < N; j++) + { + score = ComparePairAlignments(kseqs[i], kseqs[j], tseqs[i], tseqs[j]); + if (score < 0.0) return -1.0; + tot_score += score; + } + return ((tot_score * 2.0) / ((float) N * ((float) N - 1.0))); +} + + + +/* Function: CompareRefMultAlignments() + * + * Purpose: Same as above, except an array of reference coords for + * the canonical positions of the known alignment is also + * provided. + * + * Args: ref : 0..alen-1 array of 1/0 flags, 1 if canon + * kseqs : trusted alignment + * tseqs : test alignment + * N : number of sequences + * + * Return: average identity score, or -1.0 on failure + */ +float +CompareRefMultAlignments(int *ref, char **kseqs, char **tseqs, int N) +{ + int i, j; /* counters for sequences */ + float score; + float tot_score = 0.0; + + /* do all pairwise comparisons */ + for (i = 0; i < N; i++) + for (j = i+1; j < N; j++) + { + score = CompareRefPairAlignments(ref, kseqs[i], kseqs[j], tseqs[i], tseqs[j]); + if (score < 0.0) return -1.0; + tot_score += score; + } + return ((tot_score * 2.0)/ ((float) N * ((float) N - 1.0))); +} + +/* Function: PairwiseIdentity() + * + * Purpose: Calculate the pairwise fractional identity between + * two aligned sequences s1 and s2. This is simply + * (idents / MIN(len1, len2)). + * + * Note how many ways there are to calculate pairwise identity, + * because of the variety of choices for the denominator: + * idents/(idents+mismat) has the disadvantage that artifactual + * gappy alignments would have high "identities". + * idents/(AVG|MAX)(len1,len2) both have the disadvantage that + * alignments of fragments to longer sequences would have + * artifactually low "identities". + * + * Case sensitive; also, watch out in nucleic acid alignments; + * U/T RNA/DNA alignments will be counted as mismatches! + */ +float +PairwiseIdentity(char *s1, char *s2) +{ + int idents; /* total identical positions */ + int len1, len2; /* lengths of seqs */ + int x; /* position in aligned seqs */ + + idents = len1 = len2 = 0; + for (x = 0; s1[x] != '\0' && s2[x] != '\0'; x++) + { + if (!isgap(s1[x])) { + len1++; + if (s1[x] == s2[x]) idents++; + } + if (!isgap(s2[x])) len2++; + } + if (len2 < len1) len1 = len2; + return (len1 == 0 ? 0.0 : (float) idents / (float) len1); +} + + + +/* Function: AlignmentIdentityBySampling() + * Date: SRE, Mon Oct 19 14:29:01 1998 [St. Louis] + * + * Purpose: Estimate and return the average pairwise + * fractional identity of an alignment, + * using sampling. + * + * For use when there's so many sequences that + * an all vs. all rigorous calculation will + * take too long. + * + * Case sensitive! + * + * Args: aseq - aligned sequences + * L - length of alignment + * N - number of seqs in alignment + * nsample - number of samples + * + * Returns: average fractional identity, 0..1. + */ +float +AlignmentIdentityBySampling(char **aseq, int L, int N, int nsample) +{ + int x, i, j; /* counters */ + float sum; + + if (N < 2) return 1.0; + + sum = 0.; + for (x = 0; x < nsample; x++) + { + i = CHOOSE(N); + do { j = CHOOSE(N); } while (j == i); /* make sure j != i */ + sum += PairwiseIdentity(aseq[i], aseq[j]); + } + return sum / (float) nsample; +} + +/* Function: MajorityRuleConsensus() + * Date: SRE, Tue Mar 7 15:30:30 2000 [St. Louis] + * + * Purpose: Given a set of aligned sequences, produce a + * majority rule consensus sequence. If >50% nonalphabetic + * (usually meaning gaps) in the column, ignore the column. + * + * Args: aseq - aligned sequences, [0..nseq-1][0..alen-1] + * nseq - number of sequences + * alen - length of alignment + * + * Returns: ptr to allocated consensus sequence. + * Caller is responsible for free'ing this. + */ +char * +MajorityRuleConsensus(char **aseq, int nseq, int alen) +{ + char *cs; /* RETURN: consensus sequence */ + int count[27]; /* counts for a..z and gaps in a column */ + int idx,apos; /* counters for seq, column */ + int spos; /* position in cs */ + int x; /* counter for characters */ + int sym; + int max, bestx; + + cs = MallocOrDie(sizeof(char) * (alen+1)); + + for (spos=0,apos=0; apos < alen; apos++) + { + for (x = 0; x < 27; x++) count[x] = 0; + + for (idx = 0; idx < nseq; idx++) + { + if (isalpha(aseq[idx][apos])) { + sym = toupper(aseq[idx][apos]); + count[sym-'A']++; + } else { + count[26]++; + } + } + + if ((float) count[26] / (float) nseq <= 0.5) { + max = bestx = -1; + for (x = 0; x < 26; x++) + if (count[x] > max) { max = count[x]; bestx = x; } + cs[spos++] = (char) ('A' + bestx); + } + } + cs[spos] = '\0'; + return cs; +} diff --git a/forester/archive/RIO/others/hmmer/squid/alignio.c b/forester/archive/RIO/others/hmmer/squid/alignio.c new file mode 100644 index 0000000..f9070a8 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/alignio.c @@ -0,0 +1,643 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* alignio.c + * SRE, Mon Jul 12 11:57:37 1993 + * RCS $Id: alignio.c,v 1.1.1.1 2005/03/22 08:34:27 cmzmasek Exp $ + * + * Input/output of sequence alignments. + */ + +#include +#include +#include +#include +#include "squid.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +/* Function: AllocAlignment() + * + * Purpose: Allocate space for an alignment, given the number + * of sequences and the alignment length in columns. + * + * Args: nseq - number of sequences + * alen - width of alignment + * ret_aseq - RETURN: alignment itself + * ainfo - RETURN: other info associated with alignment + * + * Return: (void) + * aseq, ainfo free'd by caller: FreeAlignment(aseq, &ainfo). + * note that ainfo itself is alloc'ed in caller, usually + * just by a "AINFO ainfo" definition. + */ +void +AllocAlignment(int nseq, int alen, char ***ret_aseq, AINFO *ainfo) +{ + char **aseq; + int idx; + + InitAinfo(ainfo); + + aseq = (char **) MallocOrDie (sizeof(char *) * nseq); + for (idx = 0; idx < nseq; idx++) + aseq[idx] = (char *) MallocOrDie (sizeof(char) * (alen+1)); + + ainfo->alen = alen; + ainfo->nseq = nseq; + + ainfo->wgt = (float *) MallocOrDie (sizeof(float) * nseq); + FSet(ainfo->wgt, nseq, 1.0); + + ainfo->sqinfo = (SQINFO *) MallocOrDie (sizeof(SQINFO) * nseq); + for (idx = 0; idx < nseq; idx++) + ainfo->sqinfo[idx].flags = 0; + + *ret_aseq = aseq; +} + + +/* Function: InitAinfo() + * Date: SRE, Tue Jan 19 10:16:02 1999 [St. Louis] + * + * Purpose: Initialize the fields in ainfo structure to + * default (null) values. Does nothing with + * fields that are dependent on nseq or alen. + * + * Args: ainfo - optional info structure for an alignment + * + * Returns: (void). ainfo is modified. + */ +void +InitAinfo(AINFO *ainfo) +{ + ainfo->name = NULL; + ainfo->desc = NULL; + ainfo->cs = NULL; + ainfo->rf = NULL; + ainfo->acc = NULL; + ainfo->au = NULL; + ainfo->flags = 0; + + ainfo->tc1 = ainfo->tc2 = 0.0; + ainfo->nc1 = ainfo->nc2 = 0.0; + ainfo->ga1 = ainfo->ga2 = 0.0; +} + + +/* Function: FreeAlignment() + * + * Purpose: Free the space allocated to alignment, names, and optional + * information. + * + * Args: aseqs - sequence alignment + * ainfo - associated alignment data. + */ +void +FreeAlignment(char **aseqs, AINFO *ainfo) +{ + int i; + + for (i = 0; i < ainfo->nseq; i++) + { + if (ainfo->sqinfo[i].flags & SQINFO_SS) free(ainfo->sqinfo[i].ss); + if (ainfo->sqinfo[i].flags & SQINFO_SA) free(ainfo->sqinfo[i].sa); + } + if (ainfo->cs != NULL) free(ainfo->cs); + if (ainfo->rf != NULL) free(ainfo->rf); + if (ainfo->name != NULL) free(ainfo->name); + if (ainfo->desc != NULL) free(ainfo->desc); + if (ainfo->acc != NULL) free(ainfo->acc); + if (ainfo->au != NULL) free(ainfo->au); + + free(ainfo->sqinfo); + free(ainfo->wgt); + Free2DArray((void **) aseqs, ainfo->nseq); +} + + + +/* Function: SAMizeAlignment() + * Date: SRE, Tue Jun 30 09:49:40 1998 [St. Louis] + * + * Purpose: Make a "best effort" attempt to convert an alignment + * to SAM gap format: - in delete col, . in insert col. + * Only works if alignment adheres to SAM's upper/lower + * case convention, which is true for instance of old + * HMMER alignments. + * + * Args: aseq - alignment to convert + * nseq - number of seqs in alignment + * alen - length of alignment + * + * Returns: (void) + */ +void +SAMizeAlignment(char **aseq, int nseq, int alen) +{ + int col; /* counter for aligned columns */ + int i; /* counter for seqs */ + int sawlower, sawupper, sawgap; + char gapchar; + + for (col = 0; col < alen; col++) + { + sawlower = sawupper = sawgap = 0; + /* pass 1: do we see only upper or lower? */ + for (i = 0; i < nseq; i++) + { + if (isgap(aseq[i][col])) { sawgap = 1; continue; } + if (isupper((int) aseq[i][col])) { sawupper = 1; continue; } + if (islower((int) aseq[i][col])) sawlower = 1; + } + /* select gap character for column */ + gapchar = '-'; /* default */ + if (sawlower && ! sawupper) gapchar = '.'; + + /* pass 2: set gap char */ + for (i = 0; i < nseq; i++) + if (isgap(aseq[i][col])) aseq[i][col] = gapchar; + } +} + + +/* Function: SAMizeAlignmentByGapFrac() + * Date: SRE, Tue Jun 30 10:58:38 1998 [St. Louis] + * + * Purpose: Convert an alignment to SAM's gap and case + * conventions, using gap fraction in a column + * to choose match versus insert columns. In match columns, + * residues are upper case and gaps are '-'. + * In insert columns, residues are lower case and + * gaps are '.' + * + * Args: aseq - aligned sequences + * nseq - number of sequences + * alen - length of alignment + * maxgap - if more gaps than this fraction, column is insert. + * + * Returns: (void) Characters in aseq may be altered. + */ +void +SAMizeAlignmentByGapFrac(char **aseq, int nseq, int alen, float maxgap) +{ + int apos; /* counter over columns */ + int idx; /* counter over sequences */ + int ngap; /* number of gaps seen */ + + for (apos = 0; apos < alen; apos++) + { + /* count gaps */ + ngap = 0; + for (idx = 0; idx < nseq; idx++) + if (isgap(aseq[idx][apos])) ngap++; + + /* convert to SAM conventions */ + if ((float) ngap / (float) nseq > maxgap) + { /* insert column */ + for (idx = 0; idx < nseq; idx++) + if (isgap(aseq[idx][apos])) aseq[idx][apos] = '.'; + else aseq[idx][apos] = (char) tolower((int) aseq[idx][apos]); + } + else + { /* match column */ + for (idx = 0; idx < nseq; idx++) + if (isgap(aseq[idx][apos])) aseq[idx][apos] = '-'; + else aseq[idx][apos] = (char) toupper((int) aseq[idx][apos]); + } + } +} + + + + +/* Function: MakeAlignedString() + * + * Purpose: Given a raw string of some type (secondary structure, say), + * align it to a given aseq by putting gaps wherever the + * aseq has gaps. + * + * Args: aseq: template for alignment + * alen: length of aseq + * ss: raw string to align to aseq + * ret_s: RETURN: aligned ss + * + * Return: 1 on success, 0 on failure (and squid_errno is set.) + * ret_ss is malloc'ed here and must be free'd by caller. + */ +int +MakeAlignedString(char *aseq, int alen, char *ss, char **ret_s) +{ + char *new; + int apos, rpos; + + new = (char *) MallocOrDie ((alen+1) * sizeof(char)); + for (apos = rpos = 0; apos < alen; apos++) + if (! isgap(aseq[apos])) + { + new[apos] = ss[rpos]; + rpos++; + } + else + new[apos] = '.'; + new[apos] = '\0'; + + if (rpos != strlen(ss)) + { squid_errno = SQERR_PARAMETER; free(new); return 0; } + *ret_s = new; + return 1; +} + + +/* Function: MakeDealignedString() + * + * Purpose: Given an aligned string of some type (either sequence or + * secondary structure, for instance), dealign it relative + * to a given aseq. Return a ptr to the new string. + * + * Args: aseq : template alignment + * alen : length of aseq + * ss: : string to make dealigned copy of; same length as aseq + * ret_s : RETURN: dealigned copy of ss + * + * Return: 1 on success, 0 on failure (and squid_errno is set) + * ret_s is alloc'ed here and must be freed by caller + */ +int +MakeDealignedString(char *aseq, int alen, char *ss, char **ret_s) +{ + char *new; + int apos, rpos; + + new = (char *) MallocOrDie ((alen+1) * sizeof(char)); + for (apos = rpos = 0; apos < alen; apos++) + if (! isgap(aseq[apos])) + { + new[rpos] = ss[apos]; + rpos++; + } + new[rpos] = '\0'; + if (alen != strlen(ss)) + { squid_errno = SQERR_PARAMETER; free(new); return 0; } + *ret_s = new; + return 1; +} + + +/* Function: DealignedLength() + * + * Purpose: Count the number of non-gap symbols in seq. + * (i.e. find the length of the unaligned sequence) + * + * Args: aseq - aligned sequence to count symbols in, \0 terminated + * + * Return: raw length of seq. + */ +int +DealignedLength(char *aseq) +{ + int rlen; + for (rlen = 0; *aseq; aseq++) + if (! isgap(*aseq)) rlen++; + return rlen; +} + + +/* Function: WritePairwiseAlignment() + * + * Purpose: Write a nice formatted pairwise alignment out, + * with a BLAST-style middle line showing identities + * as themselves (single letter) and conservative + * changes as '+'. + * + * Args: ofp - open fp to write to (stdout, perhaps) + * aseq1, aseq2 - alignments to write (not necessarily + * flushed right with gaps) + * name1, name2 - names of sequences + * spos1, spos2 - starting position in each (raw) sequence + * pam - PAM matrix; positive values define + * conservative changes + * indent - how many extra spaces to print on left + * + * Return: 1 on success, 0 on failure + */ +int +WritePairwiseAlignment(FILE *ofp, + char *aseq1, char *name1, int spos1, + char *aseq2, char *name2, int spos2, + int **pam, int indent) +{ + char sname1[11]; /* shortened name */ + char sname2[11]; + int still_going; /* True if writing another block */ + char buf1[61]; /* buffer for writing seq1; CPL+1*/ + char bufmid[61]; /* buffer for writing consensus */ + char buf2[61]; + char *s1, *s2; /* ptrs into each sequence */ + int count1, count2; /* number of symbols we're writing */ + int rpos1, rpos2; /* position in raw seqs */ + int rawcount1, rawcount2; /* number of nongap symbols written */ + int apos; + + strncpy(sname1, name1, 10); + sname1[10] = '\0'; + strtok(sname1, WHITESPACE); + + strncpy(sname2, name2, 10); + sname2[10] = '\0'; + strtok(sname2, WHITESPACE); + + s1 = aseq1; + s2 = aseq2; + rpos1 = spos1; + rpos2 = spos2; + + still_going = TRUE; + while (still_going) + { + still_going = FALSE; + + /* get next line's worth from both */ + strncpy(buf1, s1, 60); buf1[60] = '\0'; + strncpy(buf2, s2, 60); buf2[60] = '\0'; + count1 = strlen(buf1); + count2 = strlen(buf2); + + /* is there still more to go? */ + if ((count1 == 60 && s1[60] != '\0') || + (count2 == 60 && s2[60] != '\0')) + still_going = TRUE; + + /* shift seq ptrs by a line */ + s1 += count1; + s2 += count2; + + /* assemble the consensus line */ + for (apos = 0; apos < count1 && apos < count2; apos++) + { + if (!isgap(buf1[apos]) && !isgap(buf2[apos])) + { + if (buf1[apos] == buf2[apos]) + bufmid[apos] = buf1[apos]; + else if (pam[buf1[apos] - 'A'][buf2[apos] - 'A'] > 0) + bufmid[apos] = '+'; + else + bufmid[apos] = ' '; + } + else + bufmid[apos] = ' '; + } + bufmid[apos] = '\0'; + + rawcount1 = 0; + for (apos = 0; apos < count1; apos++) + if (!isgap(buf1[apos])) rawcount1++; + + rawcount2 = 0; + for (apos = 0; apos < count2; apos++) + if (!isgap(buf2[apos])) rawcount2++; + + (void) fprintf(ofp, "%*s%-10.10s %5d %s %5d\n", indent, "", + sname1, rpos1, buf1, rpos1 + rawcount1 -1); + (void) fprintf(ofp, "%*s %s\n", indent, "", + bufmid); + (void) fprintf(ofp, "%*s%-10.10s %5d %s %5d\n", indent, "", + sname2, rpos2, buf2, rpos2 + rawcount2 -1); + (void) fprintf(ofp, "\n"); + + rpos1 += rawcount1; + rpos2 += rawcount2; + } + + return 1; +} + + +/* Function: MingapAlignment() + * + * Purpose: Remove all-gap columns from a multiple sequence alignment + * and its associated data. The alignment is assumed to be + * flushed (all aseqs the same length). + */ +int +MingapAlignment(char **aseqs, AINFO *ainfo) +{ + int apos; /* position in original alignment */ + int mpos; /* position in new alignment */ + int idx; + + /* We overwrite aseqs, using its allocated memory. + */ + for (apos = 0, mpos = 0; aseqs[0][apos] != '\0'; apos++) + { + /* check for all-gap in column */ + for (idx = 0; idx < ainfo->nseq; idx++) + if (! isgap(aseqs[idx][apos])) + break; + if (idx == ainfo->nseq) continue; + + /* shift alignment and ainfo */ + if (mpos != apos) + { + for (idx = 0; idx < ainfo->nseq; idx++) + aseqs[idx][mpos] = aseqs[idx][apos]; + + if (ainfo->cs != NULL) ainfo->cs[mpos] = ainfo->cs[apos]; + if (ainfo->rf != NULL) ainfo->rf[mpos] = ainfo->rf[apos]; + } + mpos++; + } + /* null terminate everything */ + for (idx = 0; idx < ainfo->nseq; idx++) + aseqs[idx][mpos] = '\0'; + ainfo->alen = mpos; /* set new length */ + if (ainfo->cs != NULL) ainfo->cs[mpos] = '\0'; + if (ainfo->rf != NULL) ainfo->rf[mpos] = '\0'; + return 1; +} + + + +/* Function: RandomAlignment() + * + * Purpose: Create a random alignment from raw sequences. + * + * Ideally, we would like to sample an alignment from the + * space of possible alignments according to its probability, + * given a prior probability distribution for alignments. + * I don't see how to describe such a distribution, let alone + * sample it. + * + * This is a rough approximation that tries to capture some + * desired properties. We assume the alignment is generated + * by a simple HMM composed of match and insert states. + * Given parameters (pop, pex) for the probability of opening + * and extending an insertion, we can find the expected number + * of match states, M, in the underlying model for each sequence. + * We use an average M taken over all the sequences (this is + * an approximation. The expectation of M given all the sequence + * lengths is a nasty-looking summation.) + * + * M = len / ( 1 + pop ( 1 + 1/ (1-pex) ) ) + * + * Then, we assign positions in each raw sequence onto the M match + * states and M+1 insert states of this "HMM", by rolling random + * numbers and inserting the (rlen-M) inserted positions randomly + * into the insert slots, taking into account the relative probability + * of open vs. extend. + * + * The resulting alignment has two desired properties: insertions + * tend to follow the HMM-like exponential distribution, and + * the "sparseness" of the alignment is controllable through + * pop and pex. + * + * Args: rseqs - raw sequences to "align", 0..nseq-1 + * sqinfo - array of 0..nseq-1 info structures for the sequences + * nseq - number of sequences + * pop - probability to open insertion (0 minlen) M = minlen; + + /* make arrays that count insertions in M+1 possible insert states + */ + ins = (int **) MallocOrDie (sizeof(int *) * nseq); + master_ins = (int *) MallocOrDie (sizeof(int) * (M+1)); + for (idx = 0; idx < nseq; idx++) + { + ins[idx] = (int *) MallocOrDie (sizeof(int) * (M+1)); + for (rpos = 0; rpos <= M; rpos++) + ins[idx][rpos] = 0; + } + /* normalize */ + pop = pop / (pop+pex); + pex = 1.0 - pop; + /* make insertions for individual sequences */ + for (idx = 0; idx < nseq; idx++) + { + apos = -1; + for (rpos = 0; rpos < rlen[idx]-M; rpos++) + { + if (sre_random() < pop || apos == -1) /* open insertion */ + apos = CHOOSE(M+1); /* choose 0..M */ + ins[idx][apos]++; + } + } + /* calculate master_ins, max inserts */ + alen = M; + for (apos = 0; apos <= M; apos++) + { + master_ins[apos] = 0; + for (idx = 0; idx < nseq; idx++) + if (ins[idx][apos] > master_ins[apos]) + master_ins[apos] = ins[idx][apos]; + alen += master_ins[apos]; + } + + + /* Now, construct alignment + */ + aseqs = (char **) MallocOrDie (sizeof (char *) * nseq); + for (idx = 0; idx < nseq; idx++) + aseqs[idx] = (char *) MallocOrDie (sizeof(char) * (alen+1)); + for (idx = 0; idx < nseq; idx++) + { + apos = rpos = 0; + + for (statepos = 0; statepos <= M; statepos++) + { + for (count = 0; count < ins[idx][statepos]; count++) + aseqs[idx][apos++] = rseqs[idx][rpos++]; + for (; count < master_ins[statepos]; count++) + aseqs[idx][apos++] = ' '; + + if (statepos != M) + aseqs[idx][apos++] = rseqs[idx][rpos++]; + } + aseqs[idx][alen] = '\0'; + } + ainfo->flags = 0; + ainfo->alen = alen; + ainfo->nseq = nseq; + ainfo->sqinfo = (SQINFO *) MallocOrDie (sizeof(SQINFO) * nseq); + for (idx = 0; idx < nseq; idx++) + SeqinfoCopy(&(ainfo->sqinfo[idx]), &(sqinfo[idx])); + + free(rlen); + free(master_ins); + Free2DArray((void **) ins, nseq); + *ret_aseqs = aseqs; + return 1; +} + +/* Function: AlignmentHomogenousGapsym() + * Date: SRE, Sun Mar 19 19:37:12 2000 [wren, St. Louis] + * + * Purpose: Sometimes we've got to convert alignments to + * a lowest common denominator, and we need + * a single specific gap character -- for example, + * PSI-BLAST blastpgp -B takes a very simplistic + * alignment input format which appears to only + * allow '-' as a gap symbol. + * + * Anything matching the isgap() macro is + * converted. + * + * Args: aseq - aligned character strings, [0..nseq-1][0..alen-1] + * nseq - number of aligned strings + * alen - length of alignment + * gapsym - character to use for gaps. + * + * Returns: void ("never fails") + */ +void +AlignmentHomogenousGapsym(char **aseq, int nseq, int alen, char gapsym) +{ + int i, apos; + + for (i = 0; i < nseq; i++) + for (apos = 0; apos < alen; apos++) + if (isgap(aseq[i][apos])) aseq[i][apos] = gapsym; +} diff --git a/forester/archive/RIO/others/hmmer/squid/alistat_main.c b/forester/archive/RIO/others/hmmer/squid/alistat_main.c new file mode 100644 index 0000000..b7c2c2f --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/alistat_main.c @@ -0,0 +1,273 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* alistat_main.c + * Fri Jan 27 10:41:41 1995 + * CVS $Id: alistat_main.c,v 1.1.1.1 2005/03/22 08:34:31 cmzmasek Exp $ + * + * Look at an alignment file, determine some simple statistics. + */ + +#include +#include +#include +#include "squid.h" +#include "msa.h" + +static char banner[] = "alistat - show some simple statistics on an alignment file"; + +static char usage[] = "\ +Usage: alistat [-options] \n\ + Available options:\n\ + -a : report per-sequence info, not just a summary\n\ + -f : fast: estimate average %id by sampling (not compatible with -a)\n\ + -h : help: display usage and version\n\ + -q : quiet: suppress verbose header\n\ +"; + +static char experts[] = "\ + Expert options:\n\ + --consensus : write majority rule consensus sequence(s) in FASTA\n\ + format to file \n\ + --identmx : save a report on all NxN pairwise identities to file \n\ + --informat : specify alignment file format \n\ + allowed formats: SELEX, MSF, Clustal, a2m, PHYLIP\n\ +"; + +struct opt_s OPTIONS[] = { + { "-a", TRUE, sqdARG_NONE }, + { "-f", TRUE, sqdARG_NONE }, + { "-h", TRUE, sqdARG_NONE }, + { "-q", TRUE, sqdARG_NONE }, + { "--consensus", FALSE, sqdARG_STRING }, + { "--identmx", FALSE, sqdARG_STRING }, + { "--informat", FALSE, sqdARG_STRING }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *afile; /* name of aligned sequence file */ + MSAFILE *afp; /* pointer to open alignment file*/ + MSA *msa; /* multiple sequence alignment */ + int fmt; /* format of afile */ + int rlen; /* raw sequence length */ + int nres; /* number of residues */ + float **imx; /* identity matrix */ + int i,j; + int small, large; + int bestj, worstj; + float sum, best, worst; + float worst_worst, worst_best, best_best; + float avgid; + int nsample; + + int allreport; + int do_fast; + int be_quiet; + char *consfile; + FILE *consfp = NULL; + char *identmx_report; /* file to save identity matrix info to */ + FILE *identmx_fp = NULL; + + char *optname; + char *optarg; + int optind; + + /* These inits are solely to silence gcc warnings about + * uninitialized variables + */ + worst_worst = worst_best = best_best = 0.0; + bestj = worstj = -1; + + /*********************************************** + * Parse command line + ***********************************************/ + + fmt = MSAFILE_UNKNOWN; /* by default, we autodetect file format */ + allreport = FALSE; + do_fast = FALSE; + be_quiet = FALSE; + consfile = NULL; + identmx_report = NULL; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-a") == 0) { allreport = TRUE; } + else if (strcmp(optname, "-f") == 0) { do_fast = TRUE; } + else if (strcmp(optname, "-q") == 0) { be_quiet = TRUE; } + else if (strcmp(optname, "--consensus") == 0) { consfile = optarg; } + else if (strcmp(optname, "--identmx") == 0) { identmx_report = optarg; } + else if (strcmp(optname, "--informat") == 0) { + fmt = String2SeqfileFormat(optarg); + if (fmt == MSAFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + if (! IsAlignmentFormat(fmt)) + Die("%s is an unaligned format, can't read as an alignment", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc - optind != 1) Die("Incorrect number of arguments.\n%s\n", usage); + afile = argv[optind]; + + if (do_fast && allreport) + Die("Verbose reports (-a, --identmx) are incompatible with fast sampling (-f)"); + if (do_fast && identmx_report != NULL) + Die("Verbose reports (-a, --identmx) are incompatible with fast sampling (-f)"); + + if (! be_quiet) + Banner(stdout, banner); + + /*********************************************** + * Loop over every alignment in the file. + ***********************************************/ + + if ((afp = MSAFileOpen(afile, fmt, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", afile); + + if (consfile != NULL && (consfp = fopen(consfile, "w")) == NULL) + Die("Failed to open consensus sequence file %s for writing", consfile); + + if (identmx_report != NULL && (identmx_fp = fopen(identmx_report, "w")) == NULL) + Die("Failed to open identity matrix report file %s for writing", identmx_report); + + while ((msa = MSAFileRead(afp)) != NULL) + { + for (i = 0; i < msa->nseq; i++) s2upper(msa->aseq[i]); + + /* Statistics we always collect: + * unaligned sequence lengths; mean and range + */ + nres = 0; + small = large = -1; + for (i = 0; i < msa->nseq; i++) + { + rlen = DealignedLength(msa->aseq[i]); + nres += rlen; + if (small == -1 || rlen < small) small = rlen; + if (large == -1 || rlen > large) large = rlen; + } + + /* Statistics we have to be careful about + * collecting, because of time constraints on NxN operations + */ + if (do_fast) + { + nsample = 1000; + avgid = AlignmentIdentityBySampling(msa->aseq, msa->alen, msa->nseq, + nsample); + } + else + { + /* In a full report, for each sequence, find the best relative, + * and the worst relative. For overall statistics, save the + * worst best (most distant single seq) and the best best + * (most closely related pair) and the worst worst (most + * distantly related pair) and yes, I know it's confusing. + */ + + MakeIdentityMx(msa->aseq, msa->nseq, &imx); + if (allreport) { + printf(" %-15s %5s %7s %-15s %7s %-15s\n", + "NAME", "LEN", "HIGH ID", "(TO)", "LOW ID", "(TO)"); + printf(" --------------- ----- ------- --------------- ------- ---------------\n"); + } + + /* Print the identity matrix report: one line per pair of sequences. + */ + if (identmx_report != NULL) + { + for (i = 0; i < msa->nseq; i++) + for (j = i+1; j < msa->nseq; j++) + fprintf(identmx_fp, "%-4d %-4d %-15s %-15s %.3f\n", + i, j, msa->sqname[i], msa->sqname[j], imx[i][j]); + } + + sum = 0.0; + worst_best = 1.0; + best_best = 0.0; + worst_worst = 1.0; + for (i = 0; i < msa->nseq; i++) + { + worst = 1.0; + best = 0.0; + for (j = 0; j < msa->nseq; j++) + { /* closest seq to this one = best */ + if (i != j && imx[i][j] > best) + { best = imx[i][j]; bestj = j; } + if (imx[i][j] < worst) + { worst = imx[i][j]; worstj = j; } + } + + if (allreport) + printf("* %-15s %5d %7.1f %-15s %7.1f %-15s\n", + msa->sqname[i], DealignedLength(msa->aseq[i]), + best * 100., msa->sqname[bestj], + worst * 100., msa->sqname[worstj]); + + if (best > best_best) best_best = best; + if (best < worst_best) worst_best = best; + if (worst < worst_worst) worst_worst = worst; + for (j = 0; j < i; j++) + sum += imx[i][j]; + + } + avgid = sum / (float) (msa->nseq * (msa->nseq-1)/2.0); + if (allreport) puts(""); + FMX2Free(imx); + } + + /* Print output. + * Some fields aren't available if -f (fast) was chosen. + */ + if (msa->name != NULL) + printf("Alignment name: %s\n", msa->name); + printf("Format: %s\n", SeqfileFormat2String(afp->format)); + printf("Number of sequences: %d\n", msa->nseq); + printf("Total # residues: %d\n", nres); + printf("Smallest: %d\n", small); + printf("Largest: %d\n", large); + printf("Average length: %.1f\n", (float) nres / (float) msa->nseq); + printf("Alignment length: %d\n", msa->alen); + printf("Average identity: %.0f%%\n", 100.*avgid); + if (! do_fast) { + printf("Most related pair: %.0f%%\n", 100.*best_best); + printf("Most unrelated pair: %.0f%%\n", 100.*worst_worst); + printf("Most distant seq: %.0f%%\n", 100.*worst_best); + } + + /* Save majority rule consensus sequence if we were asked + */ + if (consfile != NULL) { + char *cs; + cs = MajorityRuleConsensus(msa->aseq, msa->nseq, msa->alen); + WriteSimpleFASTA(consfp, cs, + msa->name != NULL? msa->name : "consensus", + msa->desc); + free(cs); + printf("Consensus: written to %s\n", consfile); + } + + puts("//"); + MSAFree(msa); + } + + MSAFileClose(afp); + if (consfile != NULL) fclose(consfp); + return 0; +} diff --git a/forester/archive/RIO/others/hmmer/squid/clustal.c b/forester/archive/RIO/others/hmmer/squid/clustal.c new file mode 100644 index 0000000..5fbafb0 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/clustal.c @@ -0,0 +1,179 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* clustal.c + * SRE, Sun Jun 6 17:50:45 1999 [bus from Madison, 1999 worm mtg] + * + * Import/export of ClustalV/W multiple sequence alignment + * formatted files. Derivative of msf.c; MSF is a pretty + * generic interleaved format. + * + * RCS $Id: clustal.c,v 1.1.1.1 2005/03/22 08:34:27 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#include "squid.h" +#include "msa.h" + +#ifdef TESTDRIVE_CLUSTAL +/***************************************************************** + * msf.c test driver: + * 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 + * + */ +int +main(int argc, char **argv) +{ + MSAFILE *afp; + MSA *msa; + char *file; + + file = argv[1]; + + if ((afp = MSAFileOpen(file, MSAFILE_CLUSTAL, NULL)) == NULL) + Die("Couldn't open %s\n", file); + + while ((msa = ReadClustal(afp)) != NULL) + { + WriteClustal(stdout, msa); + MSAFree(msa); + } + + MSAFileClose(afp); + exit(0); +} +/******************************************************************/ +#endif /* testdrive_clustal */ + + +/* Function: ReadClustal() + * Date: SRE, Sun Jun 6 17:53:49 1999 [bus from Madison, 1999 worm mtg] + * + * Purpose: Parse an alignment read from an open Clustal format + * alignment file. Clustal 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 + * + * Diagnostics: + * Will Die() here with a (potentially) useful message + * if a parsing error occurs. + */ +MSA * +ReadClustal(MSAFILE *afp) +{ + MSA *msa; + char *s; + int slen; + int sqidx; + char *name; + char *seq; + char *s2; + + if (feof(afp->f)) return NULL; + + /* Skip until we see the CLUSTAL header + */ + while ((s = MSAFileGetLine(afp)) != NULL) + { + if (strncmp(s, "CLUSTAL", 7) == 0 && + strstr(s, "multiple sequence alignment") != NULL) + break; + } + if (s == NULL) return NULL; + + msa = MSAAlloc(10, 0); + + /* Now we're in the sequence section. + * As discussed above, if we haven't seen a sequence name, then we + * don't include the sequence in the alignment. + * Watch out for conservation markup lines that contain *.: chars + */ + while ((s = MSAFileGetLine(afp)) != NULL) + { + if ((name = sre_strtok(&s, WHITESPACE, NULL)) == NULL) continue; + if ((seq = sre_strtok(&s, WHITESPACE, &slen)) == NULL) continue; + s2 = sre_strtok(&s, "\n", NULL); + + /* The test for a conservation markup line + */ + if (strpbrk(name, ".*:") != NULL && strpbrk(seq, ".*:") != NULL) + continue; + if (s2 != NULL) + Die("Parse failed at line %d, file %s: possibly using spaces as gaps", + afp->linenumber, afp->fname); + + /* It's not blank, and it's not a coord line: must be sequence + */ + sqidx = MSAGetSeqidx(msa, name, msa->lastidx+1); + msa->lastidx = sqidx; + msa->sqlen[sqidx] = sre_strcat(&(msa->aseq[sqidx]), msa->sqlen[sqidx], seq, slen); + } + + MSAVerifyParse(msa); /* verifies, and also sets alen and wgt. */ + return msa; +} + + +/* Function: WriteClustal() + * Date: SRE, Sun Jun 6 18:12:47 1999 [bus from Madison, worm mtg 1999] + * + * Purpose: Write an alignment in Clustal format to an open file. + * + * Args: fp - file that's open for writing. + * msa - alignment to write. + * + * Returns: (void) + */ +void +WriteClustal(FILE *fp, MSA *msa) +{ + int idx; /* counter for sequences */ + int len; /* tmp variable for name lengths */ + int namelen; /* maximum name length used */ + int pos; /* position counter */ + char buf[64]; /* buffer for writing seq */ + int cpl = 50; /* char per line (< 64) */ + + /* calculate max namelen used */ + namelen = 0; + for (idx = 0; idx < msa->nseq; idx++) + if ((len = strlen(msa->sqname[idx])) > namelen) + namelen = len; + + fprintf(fp, "CLUSTAL W(1.5) multiple sequence alignment\n"); + + /***************************************************** + * Write the sequences + *****************************************************/ + + for (pos = 0; pos < msa->alen; pos += cpl) + { + fprintf(fp, "\n"); /* Blank line between sequence blocks */ + for (idx = 0; idx < msa->nseq; idx++) + { + strncpy(buf, msa->aseq[idx] + pos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "%*s %s\n", namelen, msa->sqname[idx], buf); + } + } + + return; +} + + + diff --git a/forester/archive/RIO/others/hmmer/squid/cluster.c b/forester/archive/RIO/others/hmmer/squid/cluster.c new file mode 100644 index 0000000..538ae76 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/cluster.c @@ -0,0 +1,544 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* cluster.c + * SRE, Sun Jul 18 09:49:47 1993 + * moved to squid Thu Mar 3 08:42:57 1994 + * RCS $Id: cluster.c,v 1.1.1.1 2005/03/22 08:34:27 cmzmasek Exp $ + * + * almost identical to bord.c, from fd + * also now contains routines for constructing difference matrices + * from alignments + * + * "branch ordering": Input a symmetric or upper-right-diagonal + * NxN difference matrix (usually constructed by pairwise alignment + * and similarity calculations for N sequences). Use the simple + * cluster analysis part of the Fitch/Margoliash tree-building algorithm + * (as described by Fitch and Margoliash 1967 as well as Feng + * and Doolittle 1987) to calculate the topology of an "evolutionary + * tree" consistent with the difference matrix. Returns an array + * which represents the tree. + * + * The input difference matrix is just an NxN matrix of floats. + * A good match is a small difference score (the algorithm is going + * to search for minima among the difference scores). The original difference + * matrix remains unchanged by the calculations. + * + * The output requires some explanation. A phylogenetic + * tree is a binary tree, with N "leaves" and N-1 "nodes". The + * topology of the tree may be completely described by N-1 structures + * containing two pointers; each pointer points to either a leaf + * or another node. Here, this is implemented with integer indices + * rather than pointers. An array of N-1 pairs of ints is returned. + * If the index is in the range (0..N-1), it is a "leaf" -- the + * number of one of the sequences. If the index is in the range + * (N..2N-2), it is another "node" -- (index-N) is the index + * of the node in the returned array. + * + * If both indices of a member of the returned array point to + * nodes, the tree is "compound": composed of more than one + * cluster of related sequences. + * + * The higher-numbered elements of the returned array were the + * first constructed, and hence represent the distal tips + * of the tree -- the most similar sequences. The root + * is node 0. + ****************************************************************** + * + * Algorithm + * + * INITIALIZATIONS: + * - copy the difference matrix (otherwise the caller's copy would + * get destroyed by the operations of this algorithm). If + * it's asymmetric, make it symmetric. + * - make a (0..N-1) array of ints to keep track of the indices in + * the difference matrix as they get swapped around. Initialize + * this matrix to 0..N-1. + * - make a (0..N-2) array of int[2] to store the results (the tree + * topology). Doesn't need to be initialized. + * - keep track of a "N'", the current size of the difference + * matrix being operated on. + * + * PROCESSING THE DIFFERENCE MATRIX: + * - for N' = N down to N' = 2 (N-1 steps): + * - in the half-diagonal N'xN' matrix, find the indices i,j at which + * there's the minimum difference score + * + * Store the results: + * - at position N'-2 of the result array, store coords[i] and + * coords[j]. + * + * Move i,j rows, cols to the outside edges of the matrix: + * - swap row i and row N'-2 + * - swap row j and row N'-1 + * - swap column i and column N'-2 + * - swap column j and column N'-1 + * - swap indices i, N'-2 in the index array + * - swap indices j, N'-1 in the index array + * + * Build a average difference score for differences to i,j: + * - for all columns, find avg difference between rows i and j and store in row i: + * row[i][col] = (row[i][col] + row[j][col]) / 2.0 + * - copy the contents of row i to column i (it's a symmetric + * matrix, no need to recalculate) + * - store an index N'+N-2 at position N'-2 of the index array: means + * that this row/column is now a node rather than a leaf, and + * contains minimum values + * + * Continue: + * - go to the next N' + * + * GARBAGE COLLECTION & RETURN. + * + ********************************************************************** + * + * References: + * + * Feng D-F and R.F. Doolittle. "Progressive sequence alignment as a + * prerequisite to correct phylogenetic trees." J. Mol. Evol. + * 25:351-360, 1987. + * + * Fitch W.M. and Margoliash E. "Construction of phylogenetic trees." + * Science 155:279-284, 1967. + * + ********************************************************************** + * + * SRE, 18 March 1992 (bord.c) + * SRE, Sun Jul 18 09:52:14 1993 (cluster.c) + * added to squid Thu Mar 3 09:13:56 1994 + ********************************************************************** + * Mon May 4 09:47:02 1992: keep track of difference scores at each node + */ + + +#include +#include +#include + +#include "squid.h" +#include "sqfuncs.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +/* Function: Cluster() + * + * Purpose: Cluster analysis on a distance matrix. Constructs a + * phylogenetic tree which contains the topology + * and info for each node: branch lengths, how many + * sequences are included under the node, and which + * sequences are included under the node. + * + * Args: dmx - the NxN distance matrix ( >= 0.0, larger means more diverged) + * N - size of mx (number of sequences) + * mode - CLUSTER_MEAN, CLUSTER_MAX, or CLUSTER_MIN + * ret_tree- RETURN: the tree + * + * Return: 1 on success, 0 on failure. + * The caller is responsible for freeing the tree's memory, + * by calling FreePhylo(tree, N). + */ +int +Cluster(float **dmx, int N, enum clust_strategy mode, struct phylo_s **ret_tree) +{ + struct phylo_s *tree; /* (0..N-2) phylogenetic tree */ + float **mx; /* copy of difference matrix */ + int *coord; /* (0..N-1), indices for matrix coords */ + int i, j; /* coords of minimum difference */ + int idx; /* counter over seqs */ + int Np; /* N', a working copy of N */ + int row, col; /* loop variables */ + float min; /* best minimum score found */ + float *trow; /* tmp pointer for swapping rows */ + float tcol; /* tmp storage for swapping cols */ + float *diff; /* (0..N-2) difference scores at nodes */ + int swapfoo; /* for SWAP() macro */ + + /************************** + * Initializations. + **************************/ + /* We destroy the matrix we work on, so make a copy of dmx. + */ + mx = MallocOrDie (sizeof(float *) * N); + for (i = 0; i < N; i++) + { + mx[i] = MallocOrDie (sizeof(float) * N); + for (j = 0; j < N; j++) + mx[i][j] = dmx[i][j]; + } + /* coord array alloc, (0..N-1) */ + coord = MallocOrDie (N * sizeof(int)); + diff = MallocOrDie ((N-1) * sizeof(float)); + /* init the coord array to 0..N-1 */ + for (col = 0; col < N; col++) coord[col] = col; + for (i = 0; i < N-1; i++) diff[i] = 0.0; + + /* tree array alloc, (0..N-2) */ + if ((tree = AllocPhylo(N)) == NULL) Die("AllocPhylo() failed"); + + /********************************* + * Process the difference matrix + *********************************/ + + /* N-prime, for an NxN down to a 2x2 diffmx */ + j= 0; /* just to silence gcc uninit warnings */ + for (Np = N; Np >= 2; Np--) + { + /* find a minimum on the N'xN' matrix*/ + min = 999999.; + for (row = 0; row < Np; row++) + for (col = row+1; col < Np; col++) + if (mx[row][col] < min) + { + min = mx[row][col]; + i = row; + j = col; + } + + /* We're clustering row i with col j. write necessary + * data into a node on the tree + */ + /* topology info */ + tree[Np-2].left = coord[i]; + tree[Np-2].right = coord[j]; + if (coord[i] >= N) tree[coord[i]-N].parent = N + Np - 2; + if (coord[j] >= N) tree[coord[j]-N].parent = N + Np - 2; + + /* keep score info */ + diff[Np-2] = tree[Np-2].diff = min; + + /* way-simple branch length estimation */ + tree[Np-2].lblen = tree[Np-2].rblen = min; + if (coord[i] >= N) tree[Np-2].lblen -= diff[coord[i]-N]; + if (coord[j] >= N) tree[Np-2].rblen -= diff[coord[j]-N]; + + /* number seqs included at node */ + if (coord[i] < N) + { + tree[Np-2].incnum ++; + tree[Np-2].is_in[coord[i]] = 1; + } + else + { + tree[Np-2].incnum += tree[coord[i]-N].incnum; + for (idx = 0; idx < N; idx++) + tree[Np-2].is_in[idx] |= tree[coord[i]-N].is_in[idx]; + } + + if (coord[j] < N) + { + tree[Np-2].incnum ++; + tree[Np-2].is_in[coord[j]] = 1; + } + else + { + tree[Np-2].incnum += tree[coord[j]-N].incnum; + for (idx = 0; idx < N; idx++) + tree[Np-2].is_in[idx] |= tree[coord[j]-N].is_in[idx]; + } + + + /* Now build a new matrix, by merging row i with row j and + * column i with column j; see Fitch and Margoliash + */ + /* Row and column swapping. */ + /* watch out for swapping i, j away: */ + if (i == Np-1 || j == Np-2) + SWAP(i,j); + + if (i != Np-2) + { + /* swap row i, row N'-2 */ + trow = mx[Np-2]; mx[Np-2] = mx[i]; mx[i] = trow; + /* swap col i, col N'-2 */ + for (row = 0; row < Np; row++) + { + tcol = mx[row][Np-2]; + mx[row][Np-2] = mx[row][i]; + mx[row][i] = tcol; + } + /* swap coord i, coord N'-2 */ + SWAP(coord[i], coord[Np-2]); + } + + if (j != Np-1) + { + /* swap row j, row N'-1 */ + trow = mx[Np-1]; mx[Np-1] = mx[j]; mx[j] = trow; + /* swap col j, col N'-1 */ + for (row = 0; row < Np; row++) + { + tcol = mx[row][Np-1]; + mx[row][Np-1] = mx[row][j]; + mx[row][j] = tcol; + } + /* swap coord j, coord N'-1 */ + SWAP(coord[j], coord[Np-1]); + } + + /* average i and j together; they're now + at Np-2 and Np-1 though */ + i = Np-2; + j = Np-1; + /* merge by saving avg of cols of row i and row j */ + for (col = 0; col < Np; col++) + { + switch (mode) { + case CLUSTER_MEAN: mx[i][col] =(mx[i][col]+ mx[j][col]) / 2.0; break; + case CLUSTER_MIN: mx[i][col] = MIN(mx[i][col], mx[j][col]); break; + case CLUSTER_MAX: mx[i][col] = MAX(mx[i][col], mx[j][col]); break; + default: mx[i][col] =(mx[i][col]+ mx[j][col]) / 2.0; break; + } + } + /* copy those rows to columns */ + for (col = 0; col < Np; col++) + mx[col][i] = mx[i][col]; + /* store the node index in coords */ + coord[Np-2] = Np+N-2; + } + + /************************** + * Garbage collection and return + **************************/ + Free2DArray((void **) mx, N); + free(coord); + free(diff); + *ret_tree = tree; + return 1; +} + +/* Function: AllocPhylo() + * + * Purpose: Allocate space for a phylo_s array. N-1 structures + * are allocated, one for each node; in each node, a 0..N + * is_in flag array is also allocated and initialized to + * all zeros. + * + * Args: N - size; number of sequences being clustered + * + * Return: pointer to the allocated array + * + */ +struct phylo_s * +AllocPhylo(int N) +{ + struct phylo_s *tree; + int i; + + if ((tree = (struct phylo_s *) malloc ((N-1) * sizeof(struct phylo_s))) == NULL) + return NULL; + + for (i = 0; i < N-1; i++) + { + tree[i].diff = 0.0; + tree[i].lblen = tree[i].rblen = 0.0; + tree[i].left = tree[i].right = tree[i].parent = -1; + tree[i].incnum = 0; + if ((tree[i].is_in = (char *) calloc (N, sizeof(char))) == NULL) + return NULL; + } + return tree; +} + + +/* Function: FreePhylo() + * + * Purpose: Free a clustree array that was built to cluster N sequences. + * + * Args: tree - phylogenetic tree to free + * N - size of clustree; number of sequences it clustered + * + * Return: (void) + */ +void +FreePhylo(struct phylo_s *tree, int N) +{ + int idx; + + for (idx = 0; idx < N-1; idx++) + free(tree[idx].is_in); + free(tree); +} + + +/* Function: MakeDiffMx() + * + * Purpose: Given a set of aligned sequences, construct + * an NxN fractional difference matrix. (i.e. 1.0 is + * completely different, 0.0 is exactly identical). + * + * Args: aseqs - flushed, aligned sequences + * num - number of aseqs + * ret_dmx - RETURN: difference matrix + * + * Return: 1 on success, 0 on failure. + * Caller must free diff matrix with FMX2Free(dmx) + */ +void +MakeDiffMx(char **aseqs, int num, float ***ret_dmx) +{ + float **dmx; /* RETURN: distance matrix */ + int i,j; /* counters over sequences */ + + /* Allocate 2D float matrix + */ + dmx = FMX2Alloc(num, num); + + /* Calculate distances; symmetric matrix + * record difference, not identity (1 - identity) + */ + for (i = 0; i < num; i++) + for (j = i; j < num; j++) + dmx[i][j] = dmx[j][i] = 1.0 - PairwiseIdentity(aseqs[i], aseqs[j]); + + *ret_dmx = dmx; + return; +} + +/* Function: MakeIdentityMx() + * + * Purpose: Given a set of aligned sequences, construct + * an NxN fractional identity matrix. (i.e. 1.0 is + * completely identical, 0.0 is completely different). + * Virtually identical to MakeDiffMx(). It's + * less confusing to have two distinct functions, I find. + * + * Args: aseqs - flushed, aligned sequences + * num - number of aseqs + * ret_imx - RETURN: identity matrix (caller must free) + * + * Return: 1 on success, 0 on failure. + * Caller must free imx using FMX2Free(imx) + */ +void +MakeIdentityMx(char **aseqs, int num, float ***ret_imx) +{ + float **imx; /* RETURN: identity matrix */ + int i,j; /* counters over sequences */ + + /* Allocate 2D float matrix + */ + imx = FMX2Alloc(num, num); + + /* Calculate distances, symmetric matrix + */ + for (i = 0; i < num; i++) + for (j = i; j < num; j++) + imx[i][j] = imx[j][i] = PairwiseIdentity(aseqs[i], aseqs[j]); + + *ret_imx = imx; + return; +} + + + +/* Function: PrintNewHampshireTree() + * + * Purpose: Print out a tree in the "New Hampshire" standard + * format. See PHYLIP's draw.doc for a definition of + * the New Hampshire format. + * + * Like a CFG, we generate the format string left to + * right by a preorder tree traversal. + * + * Args: fp - file to print to + * ainfo- alignment info, including sequence names + * tree - tree to print + * N - number of leaves + * + */ +void +PrintNewHampshireTree(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N) +{ + struct intstack_s *stack; + int code; + float *blen; + int docomma; + + blen = (float *) MallocOrDie (sizeof(float) * (2*N-1)); + stack = InitIntStack(); + PushIntStack(stack, N); /* push root on stack */ + docomma = FALSE; + + /* node index code: + * 0..N-1 = leaves; indexes of sequences. + * N..2N-2 = interior nodes; node-N = index of node in tree structure. + * code N is the root. + * 2N..3N-2 = special flags for closing interior nodes; node-2N = index in tree + */ + while (PopIntStack(stack, &code)) + { + if (code < N) /* we're a leaf. */ + { + /* 1) print name:branchlength */ + if (docomma) fputs(",", fp); + fprintf(fp, "%s:%.5f", ainfo->sqinfo[code].name, blen[code]); + docomma = TRUE; + } + + else if (code < 2*N) /* we're an interior node */ + { + /* 1) print a '(' */ + if (docomma) fputs(",\n", fp); + fputs("(", fp); + /* 2) push on stack: ), rchild, lchild */ + PushIntStack(stack, code+N); + PushIntStack(stack, tree[code-N].right); + PushIntStack(stack, tree[code-N].left); + /* 3) record branch lengths */ + blen[tree[code-N].right] = tree[code-N].rblen; + blen[tree[code-N].left] = tree[code-N].lblen; + docomma = FALSE; + } + + else /* we're closing an interior node */ + { + /* print a ):branchlength */ + if (code == 2*N) fprintf(fp, ");\n"); + else fprintf(fp, "):%.5f", blen[code-N]); + docomma = TRUE; + } + } + + FreeIntStack(stack); + free(blen); + return; +} + + +/* Function: PrintPhylo() + * + * Purpose: Debugging output of a phylogenetic tree structure. + */ +void +PrintPhylo(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N) +{ + int idx; + + for (idx = 0; idx < N-1; idx++) + { + fprintf(fp, "Interior node %d (code %d)\n", idx, idx+N); + fprintf(fp, "\tParent: %d (code %d)\n", tree[idx].parent-N, tree[idx].parent); + fprintf(fp, "\tLeft: %d (%s) %f\n", + tree[idx].left < N ? tree[idx].left-N : tree[idx].left, + tree[idx].left < N ? ainfo->sqinfo[tree[idx].left].name : "interior", + tree[idx].lblen); + fprintf(fp, "\tRight: %d (%s) %f\n", + tree[idx].right < N ? tree[idx].right-N : tree[idx].right, + tree[idx].right < N ? ainfo->sqinfo[tree[idx].right].name : "interior", + tree[idx].rblen); + fprintf(fp, "\tHeight: %f\n", tree[idx].diff); + fprintf(fp, "\tIncludes:%d seqs\n", tree[idx].incnum); + } +} + + + diff --git a/forester/archive/RIO/others/hmmer/squid/compalign_main.c b/forester/archive/RIO/others/hmmer/squid/compalign_main.c new file mode 100644 index 0000000..0ac499d --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/compalign_main.c @@ -0,0 +1,221 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* main for compalign + * + * Compalign -- a program to compare two sequence alignments + * SRE, Tue Nov 3 07:38:03 1992 + * RCS $Id: compalign_main.c,v 1.1.1.1 2005/03/22 08:34:31 cmzmasek Exp $ + * + * incorporated into SQUID, Thu Jan 26 16:52:41 1995 + * + * Usage: compalign + * + * Calculate the fractional "identity" between the trusted alignment + * and the test alignment. The two files must contain exactly the same + * sequences, in exactly the same order. + * + * The identity of the multiple sequence alignments is defined as + * the averaged identity over all N(N-1)/2 pairwise alignments. + * + * The fractional identity of two sets of pairwise alignments + * is in turn defined as follows (for aligned known sequences k1 and k2, + * and aligned test sequences t1 and t2): + * + * matched columns / total columns, + * + * where total columns = the total number of columns in + * which there is a valid (nongap) symbol in k1 or k2; + * + * matched columns = the number of columns in which one of the + * following is true: + * + * k1 and k2 both have valid symbols at a given column; t1 and t2 + * have the same symbols aligned in a column of the t1/t2 + * alignment; + * + * k1 has a symbol aligned to a gap in k2; that symbol in t1 + * is also aligned to a gap; + * + * k2 has a symbol aligned to a gap in k1; that symbol in t2 + * is also aligned to a gap. + * + * Because scores for all possible pairs are calculated, the + * algorithm is of order (N^2)L for N sequences of length L; + * large sequence sets will take a while. + * + * Sean Eddy, Tue Nov 3 07:46:59 1992 + * + */ + +#include +#include +#include "squid.h" +#include "msa.h" + +static char banner[] = "compalign - compare two multiple alignments"; + +static char usage[] = "\ +Usage: compalign [-options] \n\ + Available options:\n\ + -c : only compare under marked #=CS consensus structure\n\ + -h : print short help and usage info\n\ +"; + +static char experts[] = "\ + --informat : specify that both alignments are in format (MSF, for instance)\n\ + --quiet : suppress verbose header (used in regression testing)\n\ +"; + +struct opt_s OPTIONS[] = { + { "-c", TRUE, sqdARG_NONE }, + { "-h", TRUE, sqdARG_NONE }, + { "--informat", FALSE, sqdARG_STRING }, + { "--quiet", FALSE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + + +int +main(int argc, char **argv) +{ + char *kfile; /* name of file of trusted (known) alignment */ + char *tfile; /* name of file of test alignment */ + MSAFILE *kfp; /* open ptr into trusted (known) alignfile */ + MSAFILE *tfp; /* open ptr into test alignment file */ + int format; /* expected format of alignment files */ + MSA *kmsa; /* a trusted (known) alignment */ + MSA *tmsa; /* a test alignment */ + char **kraw; /* dealigned trusted seqs */ + char **traw; /* dealigned test sequences */ + int idx; /* counter for sequences */ + int apos; /* position in alignment */ + float score; /* RESULT: score for the comparison */ + + int cs_only; /* TRUE to compare under #=CS annotation only */ + int *ref = NULL; /* init only to silence gcc warning */ + int be_quiet; /* TRUE to suppress verbose header */ + + char *optname; + char *optarg; + int optind; + + /*********************************************** + * Parse command line + ***********************************************/ + + format = MSAFILE_UNKNOWN; + cs_only = FALSE; + be_quiet = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-c") == 0) cs_only = TRUE; + else if (strcmp(optname, "--quiet") == 0) be_quiet = TRUE; + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == MSAFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + if (! IsAlignmentFormat(format)) + Die("%s is an unaligned format, can't read as an alignment", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc - optind != 2) + Die("Incorrect number of command line arguments.\n%s\n", usage); + + kfile = argv[optind++]; + tfile = argv[optind]; + + if (! be_quiet) Banner(stdout, banner); + + /*********************************************** + * Read in the alignments + * Capable of handling full Stockholm: >1 alignment/file + ***********************************************/ + + if ((kfp = MSAFileOpen(kfile, format, NULL)) == NULL) + Die("Trusted alignment file %s could not be opened for reading", kfile); + if ((tfp = MSAFileOpen(tfile, format, NULL)) == NULL) + Die("Test alignment file %s could not be opened for reading", tfile); + + while ((kmsa = MSAFileRead(kfp)) != NULL) + { + if ((tmsa = MSAFileRead(tfp)) == NULL) + Die("Failed to get a test alignment to match with the trusted alignment"); + + /* test that they're the same! */ + if (kmsa->nseq != tmsa->nseq) + Die("files %s and %s do not contain same number of seqs!\n", kfile, tfile); + + for (idx = 0; idx < kmsa->nseq; idx++) + { + s2upper(kmsa->aseq[idx]); + s2upper(tmsa->aseq[idx]); + } + /* another sanity check */ + for (idx = 0; idx < kmsa->nseq; idx++) + if (strcmp(kmsa->sqname[idx], tmsa->sqname[idx]) != 0) + Die("seqs in %s and %s don't seem to be in the same order\n (%s != %s)", + kfile, tfile, kmsa->sqname[idx], tmsa->sqname[idx]); + + /* and *another* sanity check */ + DealignAseqs(kmsa->aseq, kmsa->nseq, &kraw); + DealignAseqs(tmsa->aseq, tmsa->nseq, &traw); + for (idx = 0; idx < kmsa->nseq; idx++) + if (strcmp(kraw[idx], traw[idx]) != 0) + Die("raw seqs in %s and %s are not the same (died at %s, number %d)\n", + kfile, tfile, kmsa->sqname[idx], idx); + Free2DArray((void **) kraw, kmsa->nseq); + Free2DArray((void **) traw, tmsa->nseq); + + if (cs_only) + { + if (kmsa->ss_cons == NULL) + Die("Trusted alignment %s has no consensus structure annotation\n -- can't use -c!\n", + kfile); + ref = (int *) MallocOrDie (sizeof(int) * kmsa->alen); + for (apos = 0; apos < kmsa->alen; apos++) + ref[apos] = (isgap(kmsa->ss_cons[apos])) ? FALSE : TRUE; + } + + /*********************************************** + * Compare the alignments, print results + ***********************************************/ + + if (cs_only) + score = CompareRefMultAlignments(ref, kmsa->aseq, tmsa->aseq, kmsa->nseq); + else + score = CompareMultAlignments(kmsa->aseq, tmsa->aseq, kmsa->nseq); + + printf("Trusted alignment: %s\n", kmsa->name != NULL ? kmsa->name : kfile); + printf("Test alignment: %s\n", tmsa->name != NULL ? tmsa->name : tfile); + printf("Total sequences: %d\n", kmsa->nseq); + printf("Alignment identity: %.4f\n", score); + puts("//"); + + if (cs_only) free(ref); + MSAFree(kmsa); + MSAFree(tmsa); + } + + MSAFileClose(kfp); + MSAFileClose(tfp); + return 0; +} + + diff --git a/forester/archive/RIO/others/hmmer/squid/compstruct_main.c b/forester/archive/RIO/others/hmmer/squid/compstruct_main.c new file mode 100644 index 0000000..9701a00 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/compstruct_main.c @@ -0,0 +1,321 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* compstruct_main.c + * SRE, Tue Aug 30 10:35:31 1994 + * + * Compare RNA secondary structures. + * RCS $Id: compstruct_main.c,v 1.1.1.1 2005/03/22 08:34:22 cmzmasek Exp $ + */ + +#include +#include +#include +#include "squid.h" +#include "msa.h" + +static char banner[] = "compalign - compare test RNA secondary structure predictions to trusted set"; + +char usage[] = "\ +Usage: compstruct [-options] \n\ + Both files must contain secondary structure markup (e.g. Stockholm, SQUID,\n\ + SELEX formats), and sequences must occur in the same order in the two files.\n\ +\n\ + Available options are:\n\ + -h : print short help and usage info\n\ +"; + +static char experts[] = "\ + --informat : specify that both alignments are in format (SELEX, for instance)\n\ + --quiet : suppress verbose header (used in regression testing)\n\ +"; + +struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "--informat", FALSE, sqdARG_STRING }, + { "--quiet", FALSE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + + +static int KHS2ct(char *ss, int **ret_ct); +/* static void WriteCT(FILE *fp, char *seq, int *ct, int len); */ + +int +main(int argc, char **argv) +{ + char *kfile, *tfile; /* known, test structure file */ + int format; /* expected format of kfile, tfile */ + SQFILE *kfp, *tfp; /* open kfile, tfile */ + char *kseq, *tseq; /* known, test sequence */ + SQINFO kinfo, tinfo; /* known, test info */ + int *kct, *tct; /* known, test CT rep of structure */ + int pos; + int nseq; + + int correct; /* count of correct base pair predictions */ + int missedpair; /* count of false negatives */ + int falsepair; /* count of false positives */ + int tot_trusted; /* total base pairs in trusted structure */ + int tot_predicted; /* total base pairs in predicted structure*/ + int tot_correct; /* cumulative total correct pairs */ + + int dscorrect; /* count of correct 2-state paired prediction */ + int sscorrect; /* count of correct 2-state unpaired prediction */ + int tot_dscorrect; + int tot_sscorrect; + int tot_positions; + + int quiet; /* TRUE to silence verbose banner */ + + char *optname; + char *optarg; + int optind; + + /*********************************************** + * Parse command line + ***********************************************/ + + format = MSAFILE_UNKNOWN; + quiet = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "--quiet") == 0) quiet = TRUE; + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == MSAFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + if (! IsAlignmentFormat(format)) + Die("%s is an unaligned format, can't read as an alignment", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc - optind != 2) + Die("Incorrect number of command line arguments.\n%s\n", usage); + + kfile = argv[optind++]; + tfile = argv[optind]; + + if (! quiet) Banner(stdout, banner); + + /*********************************************** + * Open the files + ***********************************************/ + + if ((kfp = SeqfileOpen(kfile, format, NULL)) == NULL) + Die("Failed to open trusted structure file %s for reading", kfile); + if ((tfp = SeqfileOpen(tfile, format, NULL)) == NULL) + Die("Failed to open test structure file %s for reading", tfile); + + /*********************************************** + * Do structure comparisons, one seq at a time + ***********************************************/ + + tot_trusted = tot_predicted = tot_correct = 0; + tot_dscorrect = tot_sscorrect = tot_positions = 0; + nseq = 0; + while (ReadSeq(kfp, kfp->format, &kseq, &kinfo) && ReadSeq(tfp, tfp->format, &tseq, &tinfo)) + { + if (!quiet && strcmp(tinfo.name, kinfo.name) != 0) + Warn("Trusted sequence %s, test sequence %s -- names not identical\n", + kinfo.name, tinfo.name); + if (!quiet && strcmp(kseq, tseq) != 0) + Warn("Trusted sequence %s, test sequence %s -- sequences not identical\n", + kinfo.name, tinfo.name); + + printf("%s %s\n", kinfo.name, (kinfo.flags & SQINFO_DESC) ? kinfo.desc : ""); + + if (! (tinfo.flags & SQINFO_SS) && ! (kinfo.flags & SQINFO_SS)) + printf("[no test or trusted structure]\n\n"); + else if (! (tinfo.flags & SQINFO_SS)) + printf("[no test structure]\n\n"); + else if (! (kinfo.flags & SQINFO_SS)) + printf("[no trusted structure]\n\n"); + else + { + if (! KHS2ct(kinfo.ss, &kct)) + { printf("[bad trusted structure]\n"); goto CLEANUP;} + if (! KHS2ct(tinfo.ss, &tct)) + { printf("[bad test structure]\n"); free(kct); goto CLEANUP; } + +/* WriteCT(stdout, tseq, tct, tinfo.len); */ +/* WriteCT(stdout, tseq, kct, tinfo.len); */ + + correct = falsepair = missedpair = 0; + dscorrect = sscorrect = 0; + for (pos = 0; pos < kinfo.len; pos++) + { + /* check if actual base pair is predicted */ + if (kct[pos] >= 0 && kct[pos] == tct[pos]) + correct++; + else if (kct[pos] >= 0) + missedpair++; + + if (tct[pos] >= 0 && kct[pos] != tct[pos]) + falsepair++; + + /* 2 state prediction */ + if (kct[pos] >= 0 && tct[pos] >= 0) + dscorrect++; + else if (kct[pos] < 0 && tct[pos] < 0) + sscorrect++; + } + nseq++; + tot_trusted += correct + missedpair; + tot_predicted += correct + falsepair; + tot_correct += correct; + + tot_dscorrect += dscorrect; + tot_sscorrect += sscorrect; + tot_positions += kinfo.len; + + /* print out per sequence info */ + printf(" %d/%d trusted pairs predicted (%.2f%% sensitivity)\n", + correct, correct+missedpair, + 100. * (float) correct/ (float) (correct + missedpair)); + printf(" %d/%d predicted pairs correct (%.2f%% specificity)\n", + correct, correct + falsepair, + 100. * (float) correct/ (float) (correct + falsepair)); + + printf(" Two state: %d/%d positions correctly predicted (%.2f%% accuracy)\n", + dscorrect + sscorrect, + kinfo.len, + 100. * (float) (dscorrect + sscorrect) / (float) kinfo.len); + puts(""); + + + free(kct); + free(tct); + } + + CLEANUP: + FreeSequence(kseq, &kinfo); + FreeSequence(tseq, &tinfo); + } + + /* And the final summary: + */ + puts(""); + printf("Overall structure prediction accuracy (%d sequences, %d positions)\n", + nseq, tot_positions); + printf(" %d/%d trusted pairs predicted (%.2f%% sensitivity)\n", + tot_correct, tot_trusted, + 100. * (float) tot_correct/ (float) tot_trusted); + printf(" %d/%d predicted pairs correct (%.2f%% specificity)\n", + tot_correct, tot_predicted, + 100. * (float) tot_correct/ (float) tot_predicted); + printf(" Two state: %d/%d positions correctly predicted (%.2f%% accuracy)\n", + tot_dscorrect + tot_sscorrect, tot_positions, + 100. * (float) (tot_dscorrect + tot_sscorrect) / (float) tot_positions); + puts(""); + + SeqfileClose(tfp); + SeqfileClose(kfp); + return 0; +} + + +/* Function: KHS2ct() + * + * Purpose: Convert a secondary structure string to an array of integers + * representing what position each position is base-paired + * to (0..len-1), or -1 if none. This is off-by-one from a + * Zuker .ct file representation. + * + * The .ct representation can accomodate pseudoknots but the + * secondary structure string cannot easily; the string contains + * "Aa", "Bb", etc. pairs as a limited representation of + * pseudoknots. The string contains "><" for base pairs. + * Other symbols are ignored. + * + * Return: ret_ct is allocated here and must be free'd by caller. + * Returns 1 on success, 0 if ss is somehow inconsistent. + */ +static int +KHS2ct(char *ss, int **ret_ct) +{ + struct intstack_s *dolist[27]; + int *ct; + int i; + int pos, pair; + int status = 1; /* success or failure return status */ + int len; + + for (i = 0; i < 27; i++) + dolist[i] = InitIntStack(); + len = strlen(ss); + + if ((ct = (int *) malloc (len * sizeof(int))) == NULL) + Die("malloc failed"); + for (pos = 0; pos < len; pos++) + ct[pos] = -1; + + for (pos = 0; ss[pos] != '\0'; pos++) + { + if (ss[pos] == '>') /* left side of a pair: push onto stack 0 */ + PushIntStack(dolist[0], pos); + else if (ss[pos] == '<') /* right side of a pair; resolve pair */ + { + if (! PopIntStack(dolist[0], &pair)) + { status = 0; } + else + { + ct[pos] = pair; + ct[pair] = pos; + } + } + /* same stuff for pseudoknots */ + else if (isupper((int) ss[pos])) + PushIntStack(dolist[ss[pos] - 'A' + 1], pos); + else if (islower((int) ss[pos])) + { + if (! PopIntStack(dolist[ss[pos] - 'a' + 1], &pair)) + { status = 0; } + else + { + ct[pos] = pair; + ct[pair] = pos; + } + } + else if (!isgap(ss[pos])) status = 0; /* bad character */ + } + + for (i = 0; i < 27; i++) + if ( FreeIntStack(dolist[i]) > 0) + status = 0; + + *ret_ct = ct; + return status; +} + + +#ifdef SRE_REMOVED +/* Function: WriteCT() + * + * Purpose: Write a CT representation of a structure. + * Written in 1..len sense, with 0 for unpaired + * positions. + */ +static void +WriteCT(FILE *fp, char *seq, int *ct, int len) +{ + int pos; + for (pos = 0; pos < len; pos++) + fprintf(fp, "%d %c %d\n", pos+1, seq[pos], ct[pos]+1); +} +#endif diff --git a/forester/archive/RIO/others/hmmer/squid/configure b/forester/archive/RIO/others/hmmer/squid/configure new file mode 100755 index 0000000..3bfb5cb --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/configure @@ -0,0 +1,2241 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: +ac_help="$ac_help + --with-pvm enable PVM, Parallel Virtual Machine" + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=squidcore.c + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + echo "loading cache $cache_file" + . $cache_file +else + echo "creating cache $cache_file" + > $cache_file +fi + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + + +echo " Welcome to SQUID... configuring for your system." + + + + + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:540: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:570: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:621: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:653: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 664 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:695: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:700: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:728: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + +echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6 +echo "configure:760: checking whether ln -s works" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + rm -f conftestdata +if ln -s X conftestdata 2>/dev/null +then + rm -f conftestdata + ac_cv_prog_LN_S="ln -s" +else + ac_cv_prog_LN_S=ln +fi +fi +LN_S="$ac_cv_prog_LN_S" +if test "$ac_cv_prog_LN_S" = "ln -s"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:783: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_RANLIB="ranlib" + break + fi + done + IFS="$ac_save_ifs" + test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" +fi +fi +RANLIB="$ac_cv_prog_RANLIB" +if test -n "$RANLIB"; then + echo "$ac_t""$RANLIB" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + + + echo $ac_n "checking whether your make is GNU make""... $ac_c" 1>&6 +echo "configure:814: checking whether your make is GNU make" >&5 + foundGNUmake='nope, assuming sysv make.' ; + EXEC_DEPENDENCY=\$\$\@_main.o ; + if ( make --version nothing 2> /dev/null | grep GNU > /dev/null ) ; then + foundGNUmake='yes, it is.' ; + EXEC_DEPENDENCY='%: %_main.o' ; + fi + echo "$ac_t""$foundGNUmake" 1>&6 + + + +# Check whether --with-pvm or --without-pvm was given. +if test "${with_pvm+set}" = set; then + withval="$with_pvm" + case $with_pvm in + yes) echo 'Configuring for PVM' + PVMLIBDIR="-L${PVM_ROOT}/lib/${PVM_ARCH}" + PVMINCDIR="-I${PVM_ROOT}/include" + PVMFLAG="-DSRE_ENABLE_PVM" + PVMLIBS="-lpvm3" + ;; + no) ;; + *) echo "Ignoring unknown argument to --with-pvm: $with_pvm" + ;; +esac +fi + + +echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 +echo "configure:843: checking whether byte ordering is bigendian" >&5 +if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_cv_c_bigendian=unknown +# See if sys/param.h defines the BYTE_ORDER macro. +cat > conftest.$ac_ext < +#include +int main() { + +#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN + bogus endian macros +#endif +; return 0; } +EOF +if { (eval echo configure:861: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + # It does; now see whether it defined to BIG_ENDIAN or not. +cat > conftest.$ac_ext < +#include +int main() { + +#if BYTE_ORDER != BIG_ENDIAN + not big endian +#endif +; return 0; } +EOF +if { (eval echo configure:876: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_bigendian=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_bigendian=no +fi +rm -f conftest* +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* +if test $ac_cv_c_bigendian = unknown; then +if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_c_bigendian=no +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_c_bigendian=yes +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_c_bigendian" 1>&6 +if test $ac_cv_c_bigendian = yes; then + cat >> confdefs.h <<\EOF +#define WORDS_BIGENDIAN 1 +EOF + +fi + +for ac_func in ntohs +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:935: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for ntohs in -lsocket""... $ac_c" 1>&6 +echo "configure:985: checking for ntohs in -lsocket" >&5 +ac_lib_var=`echo socket'_'ntohs | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi +done + +for ac_func in ntohl +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1037: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1065: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for ntohl in -lsocket""... $ac_c" 1>&6 +echo "configure:1087: checking for ntohl in -lsocket" >&5 +ac_lib_var=`echo socket'_'ntohl | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi +done + +for ac_func in htons +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1139: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for htons in -lsocket""... $ac_c" 1>&6 +echo "configure:1189: checking for htons in -lsocket" >&5 +ac_lib_var=`echo socket'_'htons | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi +done + +for ac_func in htonl +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1241: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1269: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +echo $ac_n "checking for htonl in -lsocket""... $ac_c" 1>&6 +echo "configure:1291: checking for htonl in -lsocket" >&5 +ac_lib_var=`echo socket'_'htonl | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lsocket $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + +fi +done + +echo $ac_n "checking size of unsigned short""... $ac_c" 1>&6 +echo "configure:1341: checking size of unsigned short" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_short'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_sizeof_unsigned_short=2 +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(unsigned short)); + exit(0); +} +EOF +if { (eval echo configure:1360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_unsigned_short=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_unsigned_short=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_unsigned_short" 1>&6 +cat >> confdefs.h <&6 +echo "configure:1380: checking size of unsigned int" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_int'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_sizeof_unsigned_int=4 +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(unsigned int)); + exit(0); +} +EOF +if { (eval echo configure:1399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_unsigned_int=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_unsigned_int=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_unsigned_int" 1>&6 +cat >> confdefs.h <&6 +echo "configure:1419: checking size of unsigned long" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_sizeof_unsigned_long=4 +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(unsigned long)); + exit(0); +} +EOF +if { (eval echo configure:1438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_unsigned_long=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_unsigned_long=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_unsigned_long" 1>&6 +cat >> confdefs.h <&6 +echo "configure:1458: checking size of unsigned long long" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_unsigned_long_long'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + ac_cv_sizeof_unsigned_long_long=8 +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(unsigned long long)); + exit(0); +} +EOF +if { (eval echo configure:1477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_unsigned_long_long=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_unsigned_long_long=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_unsigned_long_long" 1>&6 +cat >> confdefs.h <&2 "No 16-bit int? Manually edit config file to typedef sqd_uint16." +fi +if test "$ac_cv_sizeof_unsigned_int" = "4"; then + SQD_UINT32="unsigned int " +elif test "$ac_cv_sizeof_unsigned_long" = "4"; then + SQD_UINT32="unsigned long " +else + SQD_UINT32="FIXME" + echo "configure: warning: " 1>&2 "No 32-bit int? Manually edit config file to typedef sqd_uint32." +fi +if test "$ac_cv_sizeof_unsigned_long" = "8"; then + SQD_UINT64="unsigned long " +elif test "$ac_cv_sizeof_unsigned_long_long" = "8"; then + SQD_UINT64="unsigned long long" +else + SQD_UINT64="FIXME" + echo "configure: warning: " 1>&2 "No 64-bit int? Manually edit config file to typedef sqd_uint64." +fi + + + + + + + + echo $ac_n "checking whether fpos_t is an arithmetic datatype""... $ac_c" 1>&6 +echo "configure:1526: checking whether fpos_t is an arithmetic datatype" >&5 + fpos_arithmetic="no." + cat > conftest.$ac_ext < +int main() { +int main(void) { fpos_t f1, f2; if (f1 == f2) f1 = 0;} +; return 0; } +EOF +if { (eval echo configure:1536: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + cat >> confdefs.h <<\EOF +#define ARITHMETIC_FPOS_T 1 +EOF + + fpos_arithmetic="yes." +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 +fi +rm -f conftest* + echo "$ac_t""$fpos_arithmetic" 1>&6 + + +for ac_func in ftello fseeko +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1554: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in ftello64 fseeko64 +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1609: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +for ac_func in ftell64 fseek64 +do +echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 +echo "configure:1664: checking for $ac_func" >&5 +if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +$ac_func(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_$ac_func=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_$ac_func=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` + cat >> confdefs.h <&6 +fi +done + +echo $ac_n "checking for stat64""... $ac_c" 1>&6 +echo "configure:1717: checking for stat64" >&5 +if eval "test \"`echo '$''{'ac_cv_func_stat64'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char stat64(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_stat64) || defined (__stub___stat64) +choke me +#else +stat64(); +#endif + +; return 0; } +EOF +if { (eval echo configure:1745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_stat64=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_stat64=no" +fi +rm -f conftest* +fi + +if eval "test \"`echo '$ac_cv_func_'stat64`\" = yes"; then + echo "$ac_t""yes" 1>&6 + : +else + echo "$ac_t""no" 1>&6 +fi + +echo $ac_n "checking size of off_t""... $ac_c" 1>&6 +echo "configure:1765: checking size of off_t" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_off_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(off_t)); + exit(0); +} +EOF +if { (eval echo configure:1784: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_off_t=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_off_t=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_off_t" 1>&6 +cat >> confdefs.h <&6 +echo "configure:1804: checking size of off64_t" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_off64_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(off64_t)); + exit(0); +} +EOF +if { (eval echo configure:1823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_off64_t=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_off64_t=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_off64_t" 1>&6 +cat >> confdefs.h <&6 +echo "configure:1843: checking size of fpos_t" >&5 +if eval "test \"`echo '$''{'ac_cv_sizeof_fpos_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test "$cross_compiling" = yes; then + { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } +else + cat > conftest.$ac_ext < +main() +{ + FILE *f=fopen("conftestval", "w"); + if (!f) exit(1); + fprintf(f, "%d\n", sizeof(fpos_t)); + exit(0); +} +EOF +if { (eval echo configure:1862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + ac_cv_sizeof_fpos_t=`cat conftestval` +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_sizeof_fpos_t=0 +fi +rm -fr conftest* +fi + +fi +echo "$ac_t""$ac_cv_sizeof_fpos_t" 1>&6 +cat >> confdefs.h < confcache <<\EOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs. It is not useful on other systems. +# If it contains results you don't want to keep, you may remove or edit it. +# +# By default, configure uses ./config.cache as the cache file, +# creating it if it does not exist already. You can give configure +# the --cache-file=FILE option to use a different cache file; that is +# what configure does when it calls configure scripts in +# subdirectories, so they share the cache. +# Giving --cache-file=/dev/null disables caching, for debugging configure. +# config.status only pays attention to the cache file if you give it the +# --recheck option to rerun configure. +# +EOF +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +(set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote substitution + # turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + -e "s/'/'\\\\''/g" \ + -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' + ;; + esac >> confcache +if cmp -s $cache_file confcache; then + : +else + if test -w $cache_file; then + echo "updating cache $cache_file" + cat confcache > $cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +DEFS=-DHAVE_CONFIG_H + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir + +trap 'rm -fr `echo "Makefile squid.h squidconf.h" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@MDEFS@%$MDEFS%g +s%@PVMLIBDIR@%$PVMLIBDIR%g +s%@PVMINCDIR@%$PVMINCDIR%g +s%@PVMFLAG@%$PVMFLAG%g +s%@PVMLIBS@%$PVMLIBS%g +s%@CC@%$CC%g +s%@LN_S@%$LN_S%g +s%@RANLIB@%$RANLIB%g +s%@EXEC_DEPENDENCY@%$EXEC_DEPENDENCY%g +s%@SQD_UINT16@%$SQD_UINT16%g +s%@SQD_UINT32@%$SQD_UINT32%g +s%@SQD_UINT64@%$SQD_UINT64%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' +ac_dC='\3' +ac_dD='%g' +# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='\([ ]\)%\1#\2define\3' +ac_uC=' ' +ac_uD='\4%g' +# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_eB='$%\1#\2define\3' +ac_eC=' ' +ac_eD='%g' + +if test "${CONFIG_HEADERS+set}" != set; then +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +fi +for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + echo creating $ac_file + + rm -f conftest.frag conftest.in conftest.out + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + cat $ac_file_inputs > conftest.in + +EOF + +# Transform confdefs.h into a sed script conftest.vals that substitutes +# the proper values into config.h.in to produce config.h. And first: +# Protect against being on the right side of a sed subst in config.status. +# Protect against being in an unquoted here document in config.status. +rm -f conftest.vals +cat > conftest.hdr <<\EOF +s/[\\&%]/\\&/g +s%[\\$`]%\\&%g +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp +s%ac_d%ac_u%gp +s%ac_u%ac_e%gp +EOF +sed -n -f conftest.hdr confdefs.h > conftest.vals +rm -f conftest.hdr + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >> conftest.vals <<\EOF +s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% +EOF + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +while : +do + ac_lines=`grep -c . conftest.vals` + # grep -c gives empty output for an empty file on some AIX systems. + if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi + # Write a limited-size here document to conftest.frag. + echo ' cat > conftest.frag <> $CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS + echo 'CEOF + sed -f conftest.frag conftest.in > conftest.out + rm -f conftest.in + mv conftest.out conftest.in +' >> $CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +cat >> $CONFIG_STATUS <<\EOF + rm -f conftest.frag conftest.h + echo "/* $ac_file. Generated automatically by configure. */" > conftest.h + cat conftest.in >> conftest.h + rm -f conftest.in + if cmp -s $ac_file conftest.h 2>/dev/null; then + echo "$ac_file is unchanged" + rm -f conftest.h + else + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + fi + rm -f $ac_file + mv conftest.h $ac_file + fi +fi; done + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + + + diff --git a/forester/archive/RIO/others/hmmer/squid/dayhoff.c b/forester/archive/RIO/others/hmmer/squid/dayhoff.c new file mode 100644 index 0000000..906fb76 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/dayhoff.c @@ -0,0 +1,171 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:17 cmzmasek Exp $ + */ + + +#include +#include +#include +#include +#include +#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; + + 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 + */ + scale = 0.0; /* just to silence gcc uninit warnings */ + 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 + { + Warn("Failed to parse PAM matrix scale factor. Defaulting to ln(2)/2!"); + *ret_scale = log(2.0) / 2.0; + } + } + *ret_pam = pam; + return 1; +} diff --git a/forester/archive/RIO/others/hmmer/squid/eps.c b/forester/archive/RIO/others/hmmer/squid/eps.c new file mode 100644 index 0000000..849c8f1 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/eps.c @@ -0,0 +1,115 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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.1.1.1 2005/03/22 08:34:17 cmzmasek Exp $ + */ + +#include +#include + +#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); +} + + diff --git a/forester/archive/RIO/others/hmmer/squid/file.c b/forester/archive/RIO/others/hmmer/squid/file.c new file mode 100644 index 0000000..ec3647a --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/file.c @@ -0,0 +1,231 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + + +/* file.c + * SRE, Wed Jun 19 11:19:22 1996 + * + * File operation utilities, dealing with pathnames, directories, + * and environment variables. + * + * The goal is to have these be platform-independent but they + * currently are UNIX-specific: i.e. this file is currently POSIX compliant + * but it is NOT ANSI C compliant. (The sole offender is getenv().) + * + * RCS $Id: file.c,v 1.1.1.1 2005/03/22 08:34:26 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "squid.h" +#include "sqfuncs.h" + +/* + * VMS: #define DIRSLASH ']' + * MacOS: #define DIRSLASH ':' + * DOS: #define DIRSLASH '\\' + * + * The code assumes that '.' is used for file name extensions, + * such as "foo.bar". + */ +#define DIRSLASH '/' /* UNIX directory paths have /foo/bar */ + + + +/* Function: FileDirname() + * + * Purpose: Returns the path from a filename: + * "/foo/bar/baz" -> "/foo/bar" + * "foo/bar" -> "foo" + * "foo" -> "." + * "/" -> "/" + * i.e. the string will be non-NULL; it will + * contain the string up to but not including the + * last '/' character; returns "." if + * there are no '/' characters, and returns "/" + * if the last slash is the first character. + * Modeled on Tcl's "file dirname" command. + * + * Args: file - name of file "/foo/bar/baz". + * + * Return: ptr to malloc'ed string "/foo/bar". + */ +char * +FileDirname(char *file) +{ + char *dirname; + char *lastslash; + int len; + + lastslash = strrchr(file, DIRSLASH); + len = (lastslash == NULL) ? 0 : (int) (lastslash - file); + dirname = (char *) MallocOrDie (sizeof(char) * (len+2)); + if (len > 0) strncpy(dirname, file, len); + else if (*file != DIRSLASH) { *dirname = '.'; len = 1; } + else { *dirname = DIRSLASH; len = 1; } + dirname[len] = '\0'; + return dirname; +} + + +/* Function: FileTail() + * + * Purpose: Return everything after the DIRSLASH: + * "/foo/bar/baz.1" -> "baz.1" + * "foo/bar" -> "bar" + * "foo" -> "foo" + * "/" -> "" + * If noextension is TRUE, removes a trailing ".foo" extension + * too. + * + * Args: file - name of file "/foo/bar/baz.1" + * noextension - TRUE to also remove extensions + * + * Return: ptr to malloc'ed string "baz.1" + */ +char * +FileTail(char *file, int noextension) +{ + char *tail; + char *lastslash; + char *lastdot; + /* remove directory prefix */ + lastslash = strrchr(file, DIRSLASH); + tail = (char *) MallocOrDie (sizeof(char) * (strlen(file)+1)); + if (lastslash == NULL) strcpy(tail, file); + else strcpy(tail, lastslash+1); + /* remove trailing suffix */ + if (noextension) { + if ((lastdot = strrchr(tail, '.')) != NULL) + *lastdot = '\0'; + } + + return tail; +} + + +/* Function: FileConcat() + * + * Purpose: Concatenate a directory path and a file name, + * returning a pointer to a malloc'ed string with the + * full filename. + */ +char * +FileConcat(char *dir, char *file) +{ + char *full; + + full = (char *) MallocOrDie (sizeof(char) * (strlen(dir)+strlen(file)+2)); + if (*file == DIRSLASH) strcpy(full, file); /* file = "/foo", ignore directory. */ + else sprintf(full, "%s%c%s", dir, DIRSLASH, file); + return full; +} + + +/* Function: FileAddSuffix() + * Date: SRE, Wed Aug 1 11:19:33 2001 [Pasadena] + * + * Purpose: Add a suffix to a filename, return a malloc'ed + * string containing the new filename.sfx name. + * Example: + * FileAddSuffix("genbank", "ssi") + * returns "genbank.ssi". + */ +char * +FileAddSuffix(char *filename, char *sfx) +{ + char *new; + new = MallocOrDie(strlen(filename) + strlen(sfx) + 2); + sprintf(new, "%s.%s", filename, sfx); + return new; +} + +/* Function: EnvFileOpen() + * Date: Sun Feb 12 10:55:29 1995 + * + * Purpose: Open a file, given a file name and an environment + * variable that contains a directory path. Files + * are opened read-only. Does not look at current directory + * unless "." is explicitly in the path specified by env. + * + * For instance: + * fp = EnvFileOpen("BLOSUM45", "BLASTMAT", NULL); + * or: + * fp = EnvFileOpen("swiss", "BLASTDB", NULL); + * + * Environment variables may contain a colon-delimited + * list of more than one path; e.g. + * setenv BLASTDB /nfs/databases/foo:/nfs/databases/bar + * + * Sometimes a group of files may be found in + * one directory; for instance, an index file with a + * database. The caller can EnvFileOpen() the main + * file, and ask to get the name of the + * directory back in ret_dir, so it can construct + * the other auxiliary file names and fopen() them. (If it called + * EnvFileOpen(), it might get confused by + * file name clashes and open files in different + * directories. + * + * Args: fname - name of file to open + * env - name of environment variable containing path + * ret_dir - if non-NULL, RETURN: name of dir that was used. + * + * Return: FILE * to open file, or NULL on failure -- same as fopen() + * Caller must free ret_dir if it passed a non-NULL address. + */ +FILE * +EnvFileOpen(char *fname, char *env, char **ret_dir) +{ + FILE *fp; + char *path; + char *s; /* ptr to indiv element in env list */ + char full[1024]; /* constructed file name */ + + if (env == NULL) return NULL; + if ((path = Strdup(getenv(env))) == NULL) return NULL; + + fp = NULL; + s = strtok(path, ":"); + while (s != NULL) + { + if (((int) strlen(fname) + (int) strlen(s) + 2) > 1024) + { free(path); return NULL; } + sprintf(full, "%s%c%s", s, DIRSLASH, fname); + if ((fp = fopen(full, "r")) != NULL) break; + s = strtok(NULL, ":"); + } + + /* Return the path we used, if caller wants it + */ + if (ret_dir != NULL) *ret_dir = Strdup(s); + free(path); + + return fp; +} + + +/* Function: FileExists() + * + * Purpose: Return TRUE if filename exists. + * Testing fopen() is the only possible platform-independent test + * I'm aware of. + */ +int +FileExists(char *filename) +{ + FILE *fp; + if ((fp = fopen(filename, "r"))) { fclose(fp); return TRUE; } + return FALSE; +} + + diff --git a/forester/archive/RIO/others/hmmer/squid/getopt.c b/forester/archive/RIO/others/hmmer/squid/getopt.c new file mode 100644 index 0000000..75158f7 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/getopt.c @@ -0,0 +1,251 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* RCS $Id: getopt.c,v 1.1.1.1 2005/03/22 08:34:26 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "squid.h" + +/* Function: Getopt() + * + * Purpose: Portable command line option parsing with abbreviated + * option switches. Replaces UNIX getopt(). Using UNIX getopt() + * hinders portability to non-UNIX platforms, and getopt() + * is also limited to single letter options. + * + * Getopt() implements a superset of UNIX getopt(). + * All of getopt()'s single-character switch behavior + * is emulated, and "--" by itself terminates the options. + * Additionally, Getopt() provides extended switches + * like "--youroptionhere", and Getopt() type checks + * arguments. + * + * Extended options must start with "--", as in "--option1". + * Normal options must start with "-", as in "-o". + * Normal options may be concatenated, as in "-a -b" == "-ab". + * + * See bottom of this .c file after #fdef GETOPT_TESTDRIVER + * for an example of calling Getopt(). + * + * Args: argc - from main(). number of elems in argv. + * argv - from main(). argv[0] is the name of the command. + * opt - array of opt_s structures, defining option switches + * nopts - number of switches in opt + * usage - a (possibly long) string to print if usage error. + * ret_optind - RETURN: the index in argv[] of the next + * valid command-line token. + * ret_optname- RETURN: ptr to the name of option switch + * seen, or NULL if no option was seen. + * ret_optarg - RETURN: ptr to the optional argument, if any; + * NULL if option takes no argument. + * + * Return: 1 if a valid option was parsed. + * 0 if no option was found, and command-line parsing is complete. + * Die()'s here if an error is detected. + */ +int +Getopt(int argc, char **argv, struct opt_s *opt, int nopts, char *usage, + int *ret_optind, char **ret_optname, char **ret_optarg) +{ + int i; + int arglen; + int nmatch; + static int optind = 1; /* init to 1 on first call */ + static char *optptr = NULL; /* ptr to next valid switch */ + int opti = 0; /* init only to silence gcc uninit warnings */ + + /* Check to see if we've run out of options. + * A '-' by itself is an argument (e.g. "read from stdin") + * not an option. + */ + if (optind >= argc || argv[optind][0] != '-' || strcmp(argv[optind], "-") == 0) + { + *ret_optind = optind; + *ret_optarg = NULL; + *ret_optname = NULL; + return 0; + } + + /* Check to see if we're being told that this is the end + * of the options with the special "--" flag. + */ + if (strcmp(argv[optind], "--") == 0) + { + optind++; + *ret_optind = optind; + *ret_optname = NULL; + *ret_optarg = NULL; + return 0; + } + + /* We have a real option. Find which one it is. + * We handle single letter switches "-o" separately + * from full switches "--option", based on the "-" vs. "--" + * prefix -- single letter switches can be concatenated + * as long as they don't have arguments. + */ + /* full option */ + if (optptr == NULL && strncmp(argv[optind], "--", 2) == 0) + { + /* Use optptr to parse argument in options of form "--foo=666" + */ + if ((optptr = strchr(argv[optind], '=')) != NULL) + { *optptr = '\0'; optptr++; } + + arglen = strlen(argv[optind]); + nmatch = 0; + for (i = 0; i < nopts; i++) + if (opt[i].single == FALSE && + strncmp(opt[i].name, argv[optind], arglen) == 0) + { + nmatch++; + opti = i; + if (arglen == strlen(opt[i].name)) break; /* exact match, stop now */ + } + if (nmatch > 1 && arglen != strlen(opt[i].name)) + Die("Option \"%s\" is ambiguous; please be more specific.\n%s", + argv[optind], usage); + if (nmatch == 0) + Die("No such option \"%s\".\n%s", argv[optind], usage); + + *ret_optname = opt[opti].name; + + /* Set the argument, if there is one + */ + if (opt[opti].argtype != sqdARG_NONE) + { + if (optptr != NULL) + { /* --foo=666 style */ + *ret_optarg = optptr; + optptr = NULL; + optind++; + } + else if (optind+1 >= argc) + Die("Option %s requires an argument\n%s", opt[opti].name, usage); + else /* "--foo 666" style */ + { + *ret_optarg = argv[optind+1]; + optind+=2; + } + } + else /* sqdARG_NONE */ + { + if (optptr != NULL) + Die("Option %s does not take an argument\n%s", opt[opti].name, usage); + *ret_optarg = NULL; + optind++; + } + } + else /* else, a single letter option "-o" */ + { + /* find the option */ + if (optptr == NULL) + optptr = argv[optind]+1; + for (opti = -1, i = 0; i < nopts; i++) + if (opt[i].single == TRUE && *optptr == opt[i].name[1]) + { opti = i; break; } + if (opti == -1) + Die("No such option \"%c\".\n%s", *optptr, usage); + *ret_optname = opt[opti].name; + + /* set the argument, if there is one */ + if (opt[opti].argtype != sqdARG_NONE) + { + if (*(optptr+1) != '\0') /* attached argument */ + { + *ret_optarg = optptr+1; + optind++; + } + else if (optind+1 < argc) /* unattached argument */ + { + *ret_optarg = argv[optind+1]; + optind+=2; + } + else Die("Option %s requires an argument\n%s", opt[opti].name, usage); + + optptr = NULL; /* can't concatenate after an argument */ + } + else /* sqdARG_NONE */ + { + *ret_optarg = NULL; + if (*(optptr+1) != '\0') /* concatenation */ + optptr++; + else + { + optind++; /* move to next field */ + optptr = NULL; + } + } + + } + + /* Type check the argument, if there is one + */ + if (opt[opti].argtype != sqdARG_NONE) + { + if (opt[opti].argtype == sqdARG_INT && ! IsInt(*ret_optarg)) + Die("Option %s requires an integer argument\n%s", + opt[opti].name, usage); + else if (opt[opti].argtype == sqdARG_FLOAT && ! IsReal(*ret_optarg)) + Die("Option %s requires a numerical argument\n%s", + opt[opti].name, usage); + else if (opt[opti].argtype == sqdARG_CHAR && strlen(*ret_optarg) != 1) + Die("Option %s requires a single-character argument\n%s", + opt[opti].name, usage); + /* sqdARG_STRING is always ok, no type check necessary */ + } + + *ret_optind = optind; + return 1; +} + + + +#ifdef GETOPT_TESTDRIVER +/* cc -DGETOPT_TESTDRIVER -L ~/lib/squid.linux/ getopt.c -lsquid + */ +struct opt_s OPTIONS[] = { + { "--test1", FALSE, sqdARG_INT }, + { "--test2", FALSE, sqdARG_FLOAT }, + { "--test3", FALSE, sqdARG_STRING }, + { "--test4", FALSE, sqdARG_CHAR }, + { "-a", TRUE, sqdARG_NONE }, + { "-b", TRUE, sqdARG_INT }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + int optind; + char *optarg; + char *optname; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, "Usage/help here", + &optind, &optname, &optarg)) + { + printf("Option: index: %d name: %s argument: %s\n", + optind, optname, optarg); + } + while (optind < argc) + { + printf("Argument: index: %d name: %s\n", optind, argv[optind]); + optind++; + } + + +} + + +#endif /*GETOPT_TESTDRIVER*/ diff --git a/forester/archive/RIO/others/hmmer/squid/gki.c b/forester/archive/RIO/others/hmmer/squid/gki.c new file mode 100644 index 0000000..3ce8390 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/gki.c @@ -0,0 +1,390 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* gki.c + * SRE, Sat May 1 14:49:08 1999 + * + * "generic key index" module: emulation of Perl hashes. + * Maps keys (ASCII char strings) to array index. Dynamically + * resizes the hash table. + * + * Limitations: + * - hash table can only grow; no provision for deleting keys + * or downsizing the hash table. + * - Maximum hash table size set at 100003. Performance + * will degrade for key sets much larger than this. + * - Assumes that integers are 32 bits (or greater). + * + * Defines a typedef'd structure: + * gki - a key index hash table. + * Provides functions: + * GKIInit() - start a hash table. + * GKIStoreKey() - store a new key, get a unique index. + * GKIKeyIndex() - retrieve an existing key's index. + * GKIFree() - free a hash table. + * GKIStatus() - Debugging: prints internal status of a hash struct + * + * + * Note that there are no dependencies on squid; the gki.c/gki.h + * pair are base ANSI C and can be reused anywhere. + ***************************************************************** + * + * API for storing/reading stuff: + * moral equivalent of Perl's $foo{$key} = whatever, $bar{$key} = whatever: + * #include "gki.h" + * + * gki *hash; + * int idx; + * char *key; + * + * hash = GKIInit(); + * (Storing:) + * (foreach key) { + * idx = GKIStoreKey(hash, key); + * (reallocate foo, bar as needed) + * foo[idx] = whatever; + * bar[idx] = whatever; + * } + * (Reading:) + * (foreach key) { + * idx = GKIKeyIndex(hash, key); + * if (idx == -1) {no_such_key; } + * (do something with) foo[idx]; + * (do something with) bar[idx]; + * } + * GKIFree(); + * + ***************************************************************** + * + * Timings on wrasse for 45402 keys in /usr/dict/words using + * Tests/test_gki: + * 250 msec store (6 usec/store) + * 140 msec retrieve (3 usec/retrieve) + * and using the 13408 names of Pfam's GP120.full alignment: + * 70 msec store (5 usec/store) + * 50 msec retrieve (4 usec/retrieve) + * + * RCS $Id: gki.c,v 1.1.1.1 2005/03/22 08:34:18 cmzmasek Exp $ + */ + + + +#include +#include +#include +#include +#include "squid.h" +#include "gki.h" + +/* + * Best hash table sizes are prime numbers (see Knuth vol 3, Sorting + * and Searching). + * gki_primes[] defines the ascending order of hash table sizes + * that we use in upsizing the hash table dynamically. + * useful site for testing primes: + * http://www.idbsu.edu/people/jbrennan/algebra/numbers/sieve.html + * Because of the way gki_hashvalue works, the largest number + * must be < INT_MAX / 128 / 128 : 131072 on a 32 bit machine. + */ +static int gki_primes[] = { 101, 1009, 10007, 100003 }; +#define GKI_NPRIMES 4 +#define GKI_ALPHABETSIZE 128 + +static GKI *gki_alloc(int primelevel); +static int gki_hashvalue(GKI *hash, char *key); +static int gki_upsize(GKI *old); + + +/* Function: GKIInit() + * Date: SRE, Sat May 1 11:12:24 1999 [May Day geek-out] + * + * Purpose: Initialize a hash table for key indexing. + * Simply a wrapper around a level 0 gki_alloc(). + * + * Args: (void) + * + * Returns: An allocated hash table structure. + * Caller frees with GKIFree(). + */ +GKI * +GKIInit(void) +{ + GKI *hash; + hash = gki_alloc(0); + return hash; +} + +/* Function: GKIFree() + * Date: SRE, Sat May 1 11:13:26 1999 [May Day geek-out] + * + * Purpose: Free a key index hash table. + * + * Args: hash - the gki structure + * + * Returns: (void). + * hash table is destroyed. + */ +void +GKIFree(GKI *hash) +{ + struct gki_elem *ptr; + int i; + + if (hash == NULL) return; /* tolerate a NULL */ + + for (i = 0; i < hash->nhash; i++) + while (hash->table[i] != NULL) + { + ptr = hash->table[i]->nxt; + /* NULL keys can occur after we've gki_upsize'd */ + if (hash->table[i]->key != NULL) free(hash->table[i]->key); + free(hash->table[i]); + hash->table[i] = ptr; + } + free(hash->table); + free(hash); +} + +/* Function: GKIStoreKey() + * Date: SRE, Sat May 1 11:16:48 1999 [May Day geek-out] + * + * Purpose: Store a key in the key index hash table. + * Associate it with a unique "key index", counting + * from 0. (It's this index that lets us map + * the hashed keys to indexed C arrays, (clumsily) + * emulating Perl's hashes.) + * + * Does *not* check to see if the key's already + * in the table, so it's possible to store multiple + * copies of a key with different indices; probably + * not what you want, so if you're not sure the + * key is unique, check the table first with + * GKIKeyIndex(). + * + * Args: hash - GKI structure to store the key in + * key - string to store + * + * Returns: the new key's index. Since it's always the + * last one in the current array, this index is + * just hash->nkeys-1. + * On a malloc failure, returns -1. + * hash table is modified. + */ +int +GKIStoreKey(GKI *hash, char *key) +{ + int val; + struct gki_elem *ptr; + + val = gki_hashvalue(hash, key); + + ptr = hash->table[val]; + hash->table[val] = MallocOrDie(sizeof(struct gki_elem)); + hash->table[val]->key = MallocOrDie(sizeof(char) * (strlen(key)+1)); + strcpy(hash->table[val]->key, key); + + hash->table[val]->idx = hash->nkeys; + hash->table[val]->nxt = ptr; + + hash->nkeys++; + /* time to upsize? */ + if (hash->nkeys > 3*hash->nhash && hash->primelevel < GKI_NPRIMES-1) + gki_upsize(hash); + + return hash->nkeys-1; +} + +/* Function: GKIKeyIndex() + * Date: SRE, Sat May 1 11:20:42 1999 [May Day geek-out] + * + * Purpose: Look up a key in the hash table. Return + * its index (0..nkeys-1), else -1 if the key + * isn't in the hash (yet). + * + * Args: hash - the GKI hash table to search in + * key - the key to look up + * + * Returns: -1 if key is not found; + * index of key if it is found (range 0..nkeys-1). + * hash table is unchanged. + */ +int +GKIKeyIndex(GKI *hash, char *key) +{ + struct gki_elem *ptr; + int val; + + val = gki_hashvalue(hash, key); + for (ptr = hash->table[val]; ptr != NULL; ptr = ptr->nxt) + if (strcmp(key, ptr->key) == 0) return ptr->idx; + return -1; +} + +/* Function: GKIStatus() + * Date: SRE, Sat May 1 11:11:13 1999 [St. Louis] + * + * Purpose: (DEBUGGING) How are we doing? Calculate some + * simple statistics for the hash table. + * + * Args: hash - the GKI hash table to look at + * + * Returns: (void) + * Prints diagnostics on stdout. + * hash table is unchanged. + */ +void +GKIStatus(GKI *hash) +{ + struct gki_elem *ptr; + int i; + int nkeys; + int nempty = 0; + int maxkeys = -1; + int minkeys = INT_MAX; + + for (i = 0; i < hash->nhash; i++) + { + nkeys = 0; + for (ptr = hash->table[i]; ptr != NULL; ptr = ptr->nxt) + nkeys++; + + if (nkeys == 0) nempty++; + if (nkeys > maxkeys) maxkeys = nkeys; + if (nkeys < minkeys) minkeys = nkeys; + } + + printf("Total keys: %d\n", hash->nkeys); + printf("Hash table size: %d\n", hash->nhash); + printf("Average occupancy: %.1f\n", (float) hash->nkeys / (float) hash->nhash); + printf("Unoccupied slots: %d\n", nempty); + printf("Most in one slot: %d\n", maxkeys); + printf("Least in one slot: %d\n", minkeys); + +} + + +/* Function: gki_alloc() + * Date: SRE, Sat May 1 11:55:47 1999 [May Day geek-out] + * + * Purpose: Allocate a hash table structure with the + * size given by primelevel. + * + * Args: primelevel - level 0..GKI_NPRIMES-1, specifying + * the size of the table; see gki_primes[] + * array. + * + * Returns: An allocated hash table structure. + * Caller frees with GKIFree(). + */ +static GKI * +gki_alloc(int primelevel) +{ + GKI *hash; + int i; + + if (primelevel < 0 || primelevel >= GKI_NPRIMES) + Die("bad primelevel in gki_alloc()"); + hash = MallocOrDie(sizeof(GKI)); + + hash->primelevel = primelevel; + hash->nhash = gki_primes[hash->primelevel]; + hash->table = MallocOrDie(sizeof(struct gki_elem) * hash->nhash); + for (i = 0; i < hash->nhash; i++) + hash->table[i] = NULL; + hash->nkeys = 0; + return hash; +} + + +/* Function: gki_hashvalue() + * Date: SRE, Sat May 1 11:14:10 1999 [May Day geek-out] + * + * Purpose: Calculate the hash value for a key. Usually + * we expect a one-word key, but the function will + * hash any ASCII string effectively. The hash function + * is a simple one (see p. 233 of Sedgewick, + * Algorithms in C). + * Slightly optimized: does two characters at a time + * before doing the modulo; this gives us a significant + * speedup. + * + * Args: hash - the gki structure (we need to know the hash table size) + * key - a string to calculate the hash value for + * + * Returns: a hash value, in the range 0..hash->nhash-1. + * hash table is unmodified. + */ +static int +gki_hashvalue(GKI *hash, char *key) +{ + int val = 0; + + for (; *key != '\0'; key++) + { + val = GKI_ALPHABETSIZE*val + *key; + if (*(++key) == '\0') { val = val % hash->nhash; break; } + val = (GKI_ALPHABETSIZE*val + *key) % hash->nhash; + } + return val; +} + +/* Function: gki_upsize() + * Date: SRE, Sat May 1 11:46:07 1999 [May Day geek-out] + * + * Purpose: Grow the hash table to the next available size. + * + * Args: old - the GKI hash table to reallocate. + * + * Returns: 1 on success (the hash table is changed); + * 0 on failure; the table is already at its maximum size, + * and the hash table is returned unchanged. + */ +static int +gki_upsize(GKI *old) +{ + GKI *new; + int i; + struct gki_elem *optr; + struct gki_elem *nptr; + int val; + + if (old->primelevel >= GKI_NPRIMES-1) return 0; + new = gki_alloc(old->primelevel+1); + + /* Read the old, store in the new, while *not changing* + * any key indices. Because of the way the lists are + * treated as LIFO stacks, all the lists are reversed + * in the new structure. + */ + for (i = 0; i < old->nhash; i++) + { + optr = old->table[i]; + while (optr != NULL) + { + val = gki_hashvalue(new, optr->key); + + nptr = new->table[val]; + new->table[val] = optr; + optr = optr->nxt; + new->table[val]->nxt = nptr; + } + } + free(old->table); + + /* Now swap within the interior of the structures, so the old + * structure is updated to the new structure. + * (nkeys is identical, so we don't need to swap that element.) + */ + old->primelevel = new->primelevel; + old->nhash = new->nhash; + old->table = new->table; + free(new); + return 1; +} diff --git a/forester/archive/RIO/others/hmmer/squid/gki.h b/forester/archive/RIO/others/hmmer/squid/gki.h new file mode 100644 index 0000000..1346045 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/gki.h @@ -0,0 +1,51 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:18 cmzmasek 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 */ diff --git a/forester/archive/RIO/others/hmmer/squid/gsi.c b/forester/archive/RIO/others/hmmer/squid/gsi.c new file mode 100644 index 0000000..f5cbee1 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/gsi.c @@ -0,0 +1,385 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* gsi.c + * Interfaces for GSI "generic sequence index" files. + * broken away from sqio.c and extended: SRE, Wed Aug 5 10:32:53 1998 + * + * + * GSI definition: + * 1 + + total records. + * Each record = 38 bytes. + * + * one header record : <"GSI" (32)> + * file records : + * key records : + * + * Matches up with my Perl scripts that create GSI files. + * + * RCS $Id: gsi.c,v 1.1.1.1 2005/03/22 08:34:18 cmzmasek Exp $ + */ + +#include +#include +#include +#ifndef SEEK_SET +#include /* needed for poor crippled SunOS */ +#endif + +#include "squid.h" +#include "gsi.h" + + +/***************************************************************** + * GSI index file access routines + *****************************************************************/ + +/* Function: GSIOpen() + * + * Purpose: Open a GSI file. Returns the number of records in + * the file and a file pointer. Returns NULL on failure. + * The file pointer should be fclose()'d normally. + */ +GSIFILE * +GSIOpen(char *gsifile) +{ + GSIFILE *gsi; + char magic[GSI_KEYSIZE]; + + gsi = (GSIFILE *) MallocOrDie (sizeof(GSIFILE)); + if ((gsi->gsifp = fopen(gsifile, "r")) == NULL) + { free(gsi); squid_errno = SQERR_NOFILE; return NULL; } + + if (! fread(magic, sizeof(char), GSI_KEYSIZE, gsi->gsifp)) + { free(gsi); squid_errno = SQERR_NODATA; return NULL; } + if (strcmp(magic, "GSI") != 0) + { free(gsi); squid_errno = SQERR_FORMAT; return NULL; } + + if (! fread(&(gsi->nfiles), sizeof(sqd_uint16), 1, gsi->gsifp)) + { free(gsi); squid_errno = SQERR_NODATA; return NULL; } + if (! fread(&(gsi->recnum), sizeof(sqd_uint32), 1, gsi->gsifp)) + { free(gsi); squid_errno = SQERR_NODATA; return NULL; } + + gsi->nfiles = sre_ntoh16(gsi->nfiles); /* convert from network short */ + gsi->recnum = sre_ntoh32(gsi->recnum); /* convert from network long */ + + return gsi; +} + +/* Function: GSIGetRecord() + * + * Purpose: Each non-header record of a GSI index files consists + * of 38 bytes: 32 bytes of character string, a 2 byte + * short, and a 4 byte long. This function returns the + * three values. + * + * Args: gsi - open GSI index file, correctly positioned at a record + * f1 - char[32], allocated by caller (or NULL if unwanted) + * f2 - pointer to short (or NULL if unwanted) + * f3 - pointer to long (or NULL if unwanted) + * + * Return: 0 on failure and sets squid_errno. + */ +int +GSIGetRecord(GSIFILE *gsi, char *f1, sqd_uint16 *f2, sqd_uint32 *f3) +{ + if (f1 == NULL) fseek(gsi->gsifp, GSI_KEYSIZE, SEEK_CUR); + else if (! fread(f1, GSI_KEYSIZE, 1, gsi->gsifp)) + { squid_errno = SQERR_NODATA; return 0; } + + if (f2 == NULL) fseek(gsi->gsifp, sizeof(sqd_uint16), SEEK_CUR); + else if (! fread(f2, sizeof(sqd_uint16), 1, gsi->gsifp)) + { squid_errno = SQERR_NODATA; return 0; } + + if (f3 == NULL) fseek(gsi->gsifp, sizeof(sqd_uint32), SEEK_CUR); + else if (! fread(f3, sizeof(sqd_uint32), 1, gsi->gsifp)) + { squid_errno = SQERR_NODATA; return 0; } + + if (f2 != NULL) *f2 = sre_ntoh16(*f2); + if (f3 != NULL) *f3 = sre_ntoh32(*f3); + + return 1; +} + + +/* Function: GSIGetOffset() + * + * Purpose: From a key (sequence name), find a disk offset + * in an open general sequence index file by binary + * search. Presumably GSI indexing could be even faster + * if we used hashing. + * + * Args: gsi - GSI index file, opened by GSIOpen() + * key - name of key to retrieve indices for + * ret_seqfile - pre-alloced char[32] array for seqfile name + * ret_fmt - format of seqfile + * ret_offset - return: disk offset in seqfile. + */ +int +GSIGetOffset(GSIFILE *gsi, char *key, char *ret_seqfile, + int *ret_format, long *ret_offset) +{ + sqd_uint32 left, right, mid; + int cmp; + char name[GSI_KEYSIZE + 1]; + sqd_uint32 offset; + sqd_uint16 filenum; + sqd_uint32 fmt; + + name[GSI_KEYSIZE] = '\0'; + + left = gsi->nfiles + 1; + right = gsi->nfiles + gsi->recnum; + mid = (left + right) / 2; + fseek(gsi->gsifp, mid * GSI_RECSIZE, SEEK_SET); + + while (GSIGetRecord(gsi, name, &filenum, &offset)) + { + cmp = strcmp(name, key); + if (cmp == 0) break; /* found it! */ + else if (left >= right) return 0; /* oops, missed it; fail. */ + else if (cmp < 0) left = mid + 1; /* it's right of mid */ + else if (cmp > 0) right = mid - 1; /* it's left of mid */ + mid = (left + right) / 2; + fseek(gsi->gsifp, mid * GSI_RECSIZE, SEEK_SET); + } + + /* Using file number, look up the sequence file and format. + */ + fseek(gsi->gsifp, filenum * GSI_RECSIZE, SEEK_SET); + GSIGetRecord(gsi, ret_seqfile, NULL, &fmt); + *ret_format = (int) fmt; + *ret_offset = (long) offset; + + return 1; +} + +/* Function: GSIClose() + * + * Purpose: Close an open GSI sequence index file. + */ +void +GSIClose(GSIFILE *gsi) +{ + fclose(gsi->gsifp); + free(gsi); +} + + +/***************************************************************** + * GSI index construction routines + * SRE, Wed Nov 10 11:49:14 1999 [St. Louis] + * + * API: + * g = GSIAllocIndex(); + * + * [foreach filename, <32 char, no directory path] + * GSIAddFileToIndex(g, filename); + * filenum++; + * [foreach key, <32 char, w/ filenum 1..nfiles, w/ 32bit offset] + * GSIAddKeyToIndex(g, key, filenum, offset); + * + * GSISortIndex(g); + * GSIWriteIndex(fp, g); + * GSIFreeIndex(g); + *****************************************************************/ +struct gsiindex_s * +GSIAllocIndex(void) +{ + struct gsiindex_s *g; + + g = MallocOrDie(sizeof(struct gsiindex_s)); + g->filenames = MallocOrDie(sizeof(char *) * 10); + g->fmt = MallocOrDie(sizeof(int) * 10); + g->elems = MallocOrDie(sizeof(struct gsikey_s) * 100); + g->nfiles = 0; + g->nkeys = 0; + return g; +} +void +GSIFreeIndex(struct gsiindex_s *g) +{ + int i; + for (i = 0; i < g->nfiles; i++) free(g->filenames[i]); + free(g->filenames); + free(g->fmt); + free(g->elems); + free(g); +} +void +GSIAddFileToIndex(struct gsiindex_s *g, char *filename, int fmt) +{ + int len; + + len = strlen(filename); + if (len >= GSI_KEYSIZE) Die("File name too long to be indexed."); + g->filenames[g->nfiles] = sre_strdup(filename, len); + g->fmt[g->nfiles] = fmt; + g->nfiles++; + if (g->nfiles % 10 == 0) { + g->filenames = ReallocOrDie(g->filenames, sizeof(char *) * (g->nfiles + 10)); + g->fmt = ReallocOrDie(g->fmt, sizeof(int) * (g->nfiles + 10)); + } +} +void +GSIAddKeyToIndex(struct gsiindex_s *g, char *key, int filenum, long offset) +{ + if (strlen(key) >= GSI_KEYSIZE) Die("key too long in GSI index"); + if (filenum > SQD_UINT16_MAX) Die("too many files in GSI index"); + if (offset > SQD_UINT32_MAX) Die("offset too big in GSI index"); + + strncpy(g->elems[g->nkeys].key, key, GSI_KEYSIZE-1); + g->elems[g->nkeys].key[GSI_KEYSIZE-1] = '\0'; + g->elems[g->nkeys].filenum = (sqd_uint16) filenum; + g->elems[g->nkeys].offset = (sqd_uint32) offset; + g->nkeys++; + + if (g->nkeys % 100 == 0) + g->elems = ReallocOrDie(g->elems, sizeof(struct gsikey_s) * (g->nkeys + 100)); +} +static int +gsi_keysorter(const void *k1, const void *k2) +{ + struct gsikey_s *key1; + struct gsikey_s *key2; + key1 = (struct gsikey_s *) k1; + key2 = (struct gsikey_s *) k2; + return strcmp(key1->key, key2->key); +} +void +GSISortIndex(struct gsiindex_s *g) +{ + qsort((void *) g->elems, g->nkeys, sizeof(struct gsikey_s), gsi_keysorter); +} +void +GSIWriteIndex(FILE *fp, struct gsiindex_s *g) +{ + sqd_uint32 i; + + /* Range checking. + */ + if (g->nfiles > SQD_UINT16_MAX) Die("Too many files in GSI index."); + if (g->nkeys > SQD_UINT32_MAX) Die("Too many keys in GSI index."); + + GSIWriteHeader(fp, g->nfiles, g->nkeys); + for (i = 0; i < g->nfiles; i++) + GSIWriteFileRecord(fp, g->filenames[i], i+1, g->fmt[i]); + for (i = 0; i < g->nkeys; i++) + GSIWriteKeyRecord(fp, g->elems[i].key, g->elems[i].filenum, g->elems[i].offset); +} + + + + + +/* Function: GSIWriteHeader() + * Date: SRE, Wed Aug 5 10:36:02 1998 [St. Louis] + * + * Purpose: Write the first record to an open GSI file: + * "GSI" + * + * Args: fp - open file to write to. + * nfiles - number of files indexed + * nkeys - number of keys indexed + * + * Returns: void + */ +void +GSIWriteHeader(FILE *fp, int nfiles, long nkeys) +{ + char key[GSI_KEYSIZE]; + sqd_uint16 f1; + sqd_uint32 f2; + + /* beware potential range errors! + */ + if (nfiles > SQD_UINT16_MAX) Die("GSI: nfiles out of range"); + if (nkeys > SQD_UINT32_MAX) Die("GSI: nkeys out of range"); + + f1 = (sqd_uint16) nfiles; + f2 = (sqd_uint32) nkeys; + f1 = sre_hton16(f1); + f2 = sre_hton32(f2); + strcpy(key, "GSI"); + + if (fwrite(key, 1, GSI_KEYSIZE, fp) < GSI_KEYSIZE) PANIC; + if (fwrite(&f1, 2, 1, fp) < 1) PANIC; + if (fwrite(&f2, 4, 1, fp) < 1) PANIC; +} + + +/* Function: GSIWriteFileRecord() + * Date: SRE, Wed Aug 5 10:45:51 1998 [St. Louis] + * + * Purpose: Write a file record to an open GSI file. + * + * Args: fp - open GSI file + * fname - file name (max 31 characters) + * idx - file number + * fmt - file format (e.g. kPearson, etc.) + * + * Returns: 0 on failure. 1 on success. + */ +int +GSIWriteFileRecord(FILE *fp, char *fname, int idx, int fmt) +{ + sqd_uint16 f1; + sqd_uint32 f2; + + if (strlen(fname) >= GSI_KEYSIZE) return 0; + if (idx > SQD_UINT16_MAX) Die("GSI: file index out of range"); + if (fmt > SQD_UINT32_MAX) Die("GSI: format index out of range"); + + f1 = (sqd_uint16) idx; + f2 = (sqd_uint32) fmt; + f1 = sre_hton16(f1); + f2 = sre_hton32(f2); + + if (fwrite(fname, 1, GSI_KEYSIZE, fp) < GSI_KEYSIZE) PANIC; + if (fwrite(&f1, 2, 1, fp) < 1) PANIC; + if (fwrite(&f2, 4, 1, fp) < 1) PANIC; + return 1; +} + + +/* Function: GSIWriteKeyRecord() + * Date: SRE, Wed Aug 5 10:52:30 1998 [St. Louis] + * + * Purpose: Write a key record to a GSI file. + * + * Args: fp - open GSI file for writing + * key - key (max 31 char + \0) + * fileidx - which file number to find this key in + * offset - offset for this key + * + * Returns: 1 on success, else 0. + * will fail if key >= 32 chars, for instance. + */ +int +GSIWriteKeyRecord(FILE *fp, char *key, int fileidx, long offset) +{ + sqd_uint16 f1; + sqd_uint32 f2; + + if (strlen(key) >= GSI_KEYSIZE) return 0; + if (fileidx > SQD_UINT16_MAX) Die("GSI: file index out of range"); + if (offset > SQD_UINT32_MAX) Die("GSI: offset out of range"); + + f1 = (sqd_uint16) fileidx; + f2 = (sqd_uint32) offset; + f1 = sre_hton16(f1); + f2 = sre_hton32(f2); + + if (fwrite(key, 1, GSI_KEYSIZE, fp) < GSI_KEYSIZE) PANIC; + if (fwrite(&f1, 2, 1, fp) < 1) PANIC; + if (fwrite(&f2, 4, 1, fp) < 1) PANIC; + return 1; +} + diff --git a/forester/archive/RIO/others/hmmer/squid/gsi.h b/forester/archive/RIO/others/hmmer/squid/gsi.h new file mode 100644 index 0000000..1c385ff --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/gsi.h @@ -0,0 +1,85 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +#ifndef GSIH_INCLUDED +#define GSIH_INCLUDED + +/* gsi.h + * Database indexing (GSI format support) + * RCS $Id: gsi.h,v 1.1.1.1 2005/03/22 08:34:18 cmzmasek 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*/ diff --git a/forester/archive/RIO/others/hmmer/squid/gsi64.c b/forester/archive/RIO/others/hmmer/squid/gsi64.c new file mode 100644 index 0000000..0aeb82c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/gsi64.c @@ -0,0 +1,395 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ +#ifdef USE_GSI64 + +/* gsi64.c + * Updated interfaces for GSI64 64-bit "generic sequence index" files. + * See gsi.c for old interfaces. + * This is a temporary hack! Needed for human genome project. + */ + +/* 1 + + total records. + * Each record = 42 bytes. + * + * one header record : <"GSI64" (32)> + * file records : + * key records : + * + * CVS $Id: gsi64.c,v 1.1.1.1 2005/03/22 08:34:29 cmzmasek Exp $ + */ + +#include +#include +#include +#ifndef SEEK_SET +#include /* needed for poor crippled SunOS */ +#endif + +#include "squid.h" +#include "gsi64.h" + +/***************************************************************** + * GSI64 index file access routines + *****************************************************************/ + +/* Function: GSI64Open() + * + * Purpose: Open a GSI64 file. Returns the number of records in + * the file and a file pointer. Returns NULL on failure. + * The file pointer should be fclose()'d normally. + */ +GSI64FILE * +GSI64Open(char *gsifile) +{ + GSI64FILE *gsi; + char magic[GSI64_KEYSIZE]; + + gsi = (GSI64FILE *) MallocOrDie (sizeof(GSI64FILE)); + if ((gsi->gsifp = fopen(gsifile, "r")) == NULL) + { free(gsi); squid_errno = SQERR_NOFILE; return NULL; } + + if (! fread(magic, sizeof(char), GSI64_KEYSIZE, gsi->gsifp)) + { free(gsi); squid_errno = SQERR_NODATA; return NULL; } + if (strcmp(magic, "GSI64") != 0) + { free(gsi); squid_errno = SQERR_FORMAT; return NULL; } + + if (! fread(&(gsi->nfiles), sizeof(sqd_uint16), 1, gsi->gsifp)) + { free(gsi); squid_errno = SQERR_NODATA; return NULL; } + if (! fread(&(gsi->recnum), sizeof(sqd_uint64), 1, gsi->gsifp)) + { free(gsi); squid_errno = SQERR_NODATA; return NULL; } + +#if 0 /* HACK! we don't byteswap */ + gsi->nfiles = sre_ntohs(gsi->nfiles); /* convert from network short */ + gsi->recnum = sre_ntohl(gsi->recnum); /* convert from network long */ +#endif + + return gsi; +} + +/* Function: GSI64GetRecord() + * + * Purpose: Each non-header record of a GSI64 index file consists + * of 42 bytes: 32 bytes of character string, a 2 byte + * short, and an 8 byte long long. This function returns the + * three values. + * + * Args: gsi - open GSI64 index file, correctly positioned at a record + * f1 - char[32], allocated by caller (or NULL if unwanted) + * f2 - pointer to short (or NULL if unwanted) + * f3 - pointer to long long (or NULL if unwanted) + * + * Return: 0 on failure and sets squid_errno. + */ +int +GSI64GetRecord(GSI64FILE *gsi, char *f1, sqd_uint16 *f2, sqd_uint64 *f3) +{ + if (f1 == NULL) fseek64(gsi->gsifp, GSI64_KEYSIZE, SEEK_CUR); + else if (! fread(f1, GSI64_KEYSIZE, 1, gsi->gsifp)) + { squid_errno = SQERR_NODATA; return 0; } + + if (f2 == NULL) fseek64(gsi->gsifp, sizeof(sqd_uint16), SEEK_CUR); + else if (! fread(f2, sizeof(sqd_uint16), 1, gsi->gsifp)) + { squid_errno = SQERR_NODATA; return 0; } + + if (f3 == NULL) fseek64(gsi->gsifp, sizeof(sqd_uint64), SEEK_CUR); + else if (! fread(f3, sizeof(sqd_uint64), 1, gsi->gsifp)) + { squid_errno = SQERR_NODATA; return 0; } + +#if 0 /* no byteswap yet! HACK! */ + if (f2 != NULL) *f2 = sre_ntohs(*f2); + if (f3 != NULL) *f3 = sre_ntohl(*f3); +#endif + + return 1; +} + + +/* Function: GSI64GetOffset() + * + * Purpose: From a key (sequence name), find a disk offset + * in an open general sequence index file by binary + * search. Presumably GSI64 indexing could be even faster + * if we used hashing. + * + * Args: gsi - GSI64 index file, opened by GSI64Open() + * key - name of key to retrieve indices for + * ret_seqfile - pre-alloced char[32] array for seqfile name + * ret_fmt - format of seqfile + * ret_offset - return: disk offset in seqfile. + */ +int +GSI64GetOffset(GSI64FILE *gsi, char *key, char *ret_seqfile, + int *ret_format, long long *ret_offset) +{ + sqd_uint64 left, right, mid; + int cmp; + char name[GSI64_KEYSIZE + 1]; + sqd_uint64 offset; + sqd_uint16 filenum; + sqd_uint64 fmt; + + name[GSI64_KEYSIZE] = '\0'; + + left = gsi->nfiles + 1; + right = gsi->nfiles + gsi->recnum; + mid = (left + right) / 2; + fseek64(gsi->gsifp, mid * GSI64_RECSIZE, SEEK_SET); + + while (GSI64GetRecord(gsi, name, &filenum, &offset)) + { + cmp = strcmp(name, key); + if (cmp == 0) break; /* found it! */ + else if (left >= right) return 0; /* oops, missed it; fail. */ + else if (cmp < 0) left = mid + 1; /* it's right of mid */ + else if (cmp > 0) right = mid - 1; /* it's left of mid */ + mid = (left + right) / 2; + fseek64(gsi->gsifp, mid * GSI64_RECSIZE, SEEK_SET); + } + + /* Using file number, look up the sequence file and format. + */ + fseek64(gsi->gsifp, filenum * GSI64_RECSIZE, SEEK_SET); + GSI64GetRecord(gsi, ret_seqfile, NULL, &fmt); + *ret_format = (int) fmt; + *ret_offset = (long long) offset; + + return 1; +} + +/* Function: GSI64Close() + * + * Purpose: Close an open GSI64 sequence index file. + */ +void +GSI64Close(GSI64FILE *gsi) +{ + fclose(gsi->gsifp); + free(gsi); +} + + +/***************************************************************** + * GSI64 index construction routines + * SRE, Wed Nov 10 11:49:14 1999 [St. Louis] + * + * API: + * g = GSI64AllocIndex(); + * + * [foreach filename, <32 char, no directory path] + * GSI64AddFileToIndex(g, filename); + * filenum++; + * [foreach key, <32 char, w/ filenum 1..nfiles, w/ 64bit offset] + * GSI64AddKeyToIndex(g, key, filenum, offset); + * + * GSI64SortIndex(g); + * GSI64WriteIndex(fp, g); + * GSI64FreeIndex(g); + *****************************************************************/ +struct gsi64index_s * +GSI64AllocIndex(void) +{ + struct gsi64index_s *g; + + g = MallocOrDie(sizeof(struct gsi64index_s)); + g->filenames = MallocOrDie(sizeof(char *) * 10); + g->fmt = MallocOrDie(sizeof(int) * 10); + g->elems = MallocOrDie(sizeof(struct gsi64key_s) * 100); + g->nfiles = 0; + g->nkeys = 0; + return g; +} +void +GSI64FreeIndex(struct gsi64index_s *g) +{ + int i; + for (i = 0; i < g->nfiles; i++) free(g->filenames[i]); + free(g->filenames); + free(g->fmt); + free(g->elems); + free(g); +} +void +GSI64AddFileToIndex(struct gsi64index_s *g, char *filename, int fmt) +{ + int len; + + len = strlen(filename); + if (len >= GSI64_KEYSIZE) Die("File name too long to be indexed."); + g->filenames[g->nfiles] = sre_strdup(filename, len); + g->fmt[g->nfiles] = fmt; + g->nfiles++; + if (g->nfiles % 10 == 0) { + g->filenames = ReallocOrDie(g->filenames, sizeof(char *) * (g->nfiles + 10)); + g->fmt = ReallocOrDie(g->fmt, sizeof(int) * (g->nfiles + 10)); + } +} +void +GSI64AddKeyToIndex(struct gsi64index_s *g, char *key, int filenum, long long offset) +{ + if (strlen(key) >= GSI64_KEYSIZE) Die("key too long in GSI64 index"); + if (filenum > SQD_UINT16_MAX) Die("too many files in GSI64 index"); + if (offset > SQD_UINT64_MAX) Die("offset too big in GSI64 index"); + + strncpy(g->elems[g->nkeys].key, key, GSI64_KEYSIZE-1); + g->elems[g->nkeys].key[GSI64_KEYSIZE-1] = '\0'; + g->elems[g->nkeys].filenum = (sqd_uint16) filenum; + g->elems[g->nkeys].offset = (sqd_uint64) offset; + g->nkeys++; + + if (g->nkeys % 100 == 0) + g->elems = ReallocOrDie(g->elems, sizeof(struct gsi64key_s) * (g->nkeys + 100)); +} +static int +gsi_keysorter(const void *k1, const void *k2) +{ + struct gsi64key_s *key1; + struct gsi64key_s *key2; + key1 = (struct gsi64key_s *) k1; + key2 = (struct gsi64key_s *) k2; + return strcmp(key1->key, key2->key); +} +void +GSI64SortIndex(struct gsi64index_s *g) +{ + qsort((void *) g->elems, g->nkeys, sizeof(struct gsi64key_s), gsi_keysorter); +} +void +GSI64WriteIndex(FILE *fp, struct gsi64index_s *g) +{ + sqd_uint16 i; + sqd_uint64 j; + + /* Range checking. + */ + if (g->nfiles > SQD_UINT16_MAX) Die("Too many files in GSI64 index."); + if (g->nkeys > SQD_UINT64_MAX) Die("Too many keys in GSI64 index."); + + GSI64WriteHeader(fp, g->nfiles, g->nkeys); + for (i = 0; i < g->nfiles; i++) + GSI64WriteFileRecord(fp, g->filenames[i], i+1, g->fmt[i]); + for (j = 0; j < g->nkeys; j++) + GSI64WriteKeyRecord(fp, g->elems[j].key, g->elems[j].filenum, g->elems[j].offset); +} + + + + + +/* Function: GSI64WriteHeader() + * Date: SRE, Wed Aug 5 10:36:02 1998 [St. Louis] + * + * Purpose: Write the first record to an open GSI64 file: + * "GSI64" + * + * Args: fp - open file to write to. + * nfiles - number of files indexed + * nkeys - number of keys indexed + * + * Returns: void + */ +void +GSI64WriteHeader(FILE *fp, int nfiles, long long nkeys) +{ + char key[GSI64_KEYSIZE]; + sqd_uint16 f1; + sqd_uint64 f2; + + /* beware potential range errors! + */ + if (nfiles > SQD_UINT16_MAX) Die("GSI64: nfiles out of range"); + if (nkeys > SQD_UINT64_MAX) Die("GSI64: nkeys out of range"); + + f1 = (sqd_uint16) nfiles; + f2 = (sqd_uint64) nkeys; +#if 0 /* HACK no byteswap */ + f1 = sre_htons(f1); + f2 = sre_htonl(f2); +#endif + strcpy(key, "GSI64"); + + if (fwrite(key, 1, GSI64_KEYSIZE, fp) < GSI64_KEYSIZE) PANIC; + if (fwrite(&f1, 2, 1, fp) < 1) PANIC; + if (fwrite(&f2, 8, 1, fp) < 1) PANIC; +} + + +/* Function: GSI64WriteFileRecord() + * Date: SRE, Wed Aug 5 10:45:51 1998 [St. Louis] + * + * Purpose: Write a file record to an open GSI64 file. + * + * Args: fp - open GSI64 file + * fname - file name (max 31 characters) + * idx - file number + * fmt - file format (e.g. kPearson, etc.) + * + * Returns: 0 on failure. 1 on success. + */ +int +GSI64WriteFileRecord(FILE *fp, char *fname, int idx, int fmt) +{ + sqd_uint16 f1; + sqd_uint64 f2; + + if (strlen(fname) >= GSI64_KEYSIZE) return 0; + if (idx > SQD_UINT16_MAX) Die("GSI64: file index out of range"); + if (fmt > SQD_UINT64_MAX) Die("GSI64: format index out of range"); + + f1 = (sqd_uint16) idx; + f2 = (sqd_uint64) fmt; +#if 0 /* hack : no byteswap */ + f1 = sre_htons(f1); + f2 = sre_htonl(f2); +#endif + + if (fwrite(fname, 1, GSI64_KEYSIZE, fp) < GSI64_KEYSIZE) PANIC; + if (fwrite(&f1, 2, 1, fp) < 1) PANIC; + if (fwrite(&f2, 8, 1, fp) < 1) PANIC; + return 1; +} + + +/* Function: GSI64WriteKeyRecord() + * Date: SRE, Wed Aug 5 10:52:30 1998 [St. Louis] + * + * Purpose: Write a key record to a GSI64 file. + * + * Args: fp - open GSI64 file for writing + * key - key (max 31 char + \0) + * fileidx - which file number to find this key in + * offset - offset for this key + * + * Returns: 1 on success, else 0. + * will fail if key >= 32 chars, for instance. + */ +int +GSI64WriteKeyRecord(FILE *fp, char *key, int fileidx, long long offset) +{ + sqd_uint16 f1; + sqd_uint64 f2; + + if (strlen(key) >= GSI64_KEYSIZE) return 0; + if (fileidx > SQD_UINT16_MAX) Die("GSI64: file index out of range"); + if (offset > SQD_UINT64_MAX) Die("GSI64: offset out of range"); + + f1 = (sqd_uint16) fileidx; + f2 = (sqd_uint64) offset; +#if 0 /* HACK! */ + f1 = sre_htons(f1); + f2 = sre_htonl(f2); +#endif + + if (fwrite(key, 1, GSI64_KEYSIZE, fp) < GSI64_KEYSIZE) PANIC; + if (fwrite(&f1, 2, 1, fp) < 1) PANIC; + if (fwrite(&f2, 8, 1, fp) < 1) PANIC; + return 1; +} + +#endif /*USE_GSI64 */ diff --git a/forester/archive/RIO/others/hmmer/squid/gsi64.h b/forester/archive/RIO/others/hmmer/squid/gsi64.h new file mode 100644 index 0000000..99f7296 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/gsi64.h @@ -0,0 +1,101 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +#ifndef GSI64H_INCLUDED +#define GSI64H_INCLUDED +#ifdef USE_GSI64 + +/* gsi64.h + * Database indexing (GSI64 format support) + * CVS $Id: gsi64.h,v 1.1.1.1 2005/03/22 08:34:29 cmzmasek 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*/ diff --git a/forester/archive/RIO/others/hmmer/squid/hsregex.c b/forester/archive/RIO/others/hmmer/squid/hsregex.c new file mode 100644 index 0000000..6113900 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/hsregex.c @@ -0,0 +1,1314 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/***************************************************************** + * This code is an altered version of Henry Spencer's + * regex library. Alterations are limited to minor streamlining, + * and some name changes to protect the SQUID namespace. + * Henry's copyright notice appears below. + * You can obtain the original from + * ftp://ftp.zoo.toronto.edu/pub/bookregex.tar.Z + * Thanks, Henry! + * + * SRE, Fri Aug 28 11:10:17 1998 + * RCS $Id: hsregex.c,v 1.1.1.1 2005/03/22 08:34:17 cmzmasek Exp $ + *****************************************************************/ + +#include +#include +#include +#include +#include "squid.h" + +/* global sqd_parse[] are managed by Strparse(). + * WARNING: TODO: this code is not threadsafe, and needs to be revised. + */ +char *sqd_parse[10]; + +/* Function: Strparse() + * + * Purpose: Match a regexp to a string. Returns 1 if pattern matches, + * else 0. + * + * Much like Perl, Strparse() makes copies of the matching + * substrings available via globals, sqd_parse[]. + * sqd_parse[0] contains a copy of the complete matched + * text. sqd_parse[1-9] contain copies of up to nine + * different substrings matched within parentheses. + * The memory for these strings is internally managed and + * volatile; the next call to Strparse() may destroy them. + * If the caller needs the matched substrings to persist + * beyond a new Strparse() call, it must make its own + * copies. + * + * A minor drawback of the memory management is that + * there will be a small amount of unfree'd memory being + * managed by Strparse() when a program exits; this may + * confuse memory debugging (Purify, dbmalloc). The + * general cleanup function SqdClean() is provided; + * you can call this before exiting. + * + * Uses an extended POSIX regular expression interface. + * A copylefted GNU implementation is included in the squid + * implementation (gnuregex.c) for use on non-POSIX compliant + * systems. POSIX 1003.2-compliant systems (all UNIX, + * some WinNT, I believe) can omit the GNU code if necessary. + * + * I built this for ease of use, not speed nor efficiency. + * + * Example: Strparse("foo-...-baz", "foo-bar-baz") returns 0 + * Strparse("foo-(...)-baz", "foo-bar-baz") + * returns 0; sqd_parse[0] is "foo-bar-baz"; + * sqd_parse[1] is "bar". + * + * Args: rexp - regular expression, extended POSIX form + * s - string to match against + * ntok - number of () substrings we will save (maximum NSUBEXP-1) + * + * Return: 1 on match, 0 if no match + */ +int +Strparse(char *rexp, char *s, int ntok) +{ + sqd_regexp *pat; + int code; + int len; + int i; + /* sanity check */ + if (ntok >= NSUBEXP ) Die("Strparse(): ntok must be <= %d", NSUBEXP-1); + + /* Free previous global substring buffers + */ + for (i = 0; i <= ntok; i++) + if (sqd_parse[i] != NULL) + { + free(sqd_parse[i]); + sqd_parse[i] = NULL; + } + + /* Compile and match the pattern, using our modified + * copy of Henry Spencer's regexp library + */ + if ((pat = sqd_regcomp(rexp)) == NULL) + Die("regexp compilation failed."); + code = sqd_regexec(pat, s); + + /* Fill the global substring buffers + */ + if (code == 1) + for (i = 0; i <= ntok; i++) + if (pat->startp[i] != NULL && pat->endp[i] != NULL) + { + len = pat->endp[i] - pat->startp[i]; + sqd_parse[i] = (char *) MallocOrDie(sizeof(char) * (len+1)); + strncpy(sqd_parse[i], pat->startp[i], len); + sqd_parse[i][len] = '\0'; + } + + free(pat); + return code; +} + +/* Function: SqdClean() + * Date: SRE, Wed Oct 29 12:52:08 1997 [TWA 721] + * + * Purpose: Clean up any squid library allocations before exiting + * a program, so we don't leave unfree'd memory around + * and confuse a malloc debugger like Purify or dbmalloc. + */ +void +SqdClean(void) +{ + int i; + + /* Free global substring buffers that Strparse() uses + */ + for (i = 0; i <= 9; i++) + if (sqd_parse[i] != NULL) { + free(sqd_parse[i]); + sqd_parse[i] = NULL; + } +} + + + +/* all code below is: + * Copyright (c) 1986, 1993, 1995 by University of Toronto. + * Written by Henry Spencer. Not derived from licensed software. + * + * Permission is granted to anyone to use this software for any + * purpose on any computer system, and to redistribute it in any way, + * subject to the following restrictions: + * + * 1. The author is not responsible for the consequences of use of + * this software, no matter how awful, even if they arise + * from defects in it. + * + * 2. The origin of this software must not be misrepresented, either + * by explicit claim or by omission. + * + * 3. Altered versions must be plainly marked as such, and must not + * be misrepresented (by explicit claim or omission) as being + * the original software. + * + * 4. This notice must not be removed or altered. + */ + +/* + * sqd_regcomp and sqd_regexec -- sqd_regsub and sqd_regerror are elsewhere + */ + +/* + * The first byte of the regexp internal "program" is actually this magic + * number; the start node begins in the second byte. + */ +#define SQD_REGMAGIC 0234 + +/* + * The "internal use only" fields in regexp.h are present to pass info from + * compile to execute that permits the execute phase to run lots faster on + * simple cases. They are: + * + * regstart char that must begin a match; '\0' if none obvious + * reganch is the match anchored (at beginning-of-line only)? + * regmust string (pointer into program) that match must include, or NULL + * regmlen length of regmust string + * + * Regstart and reganch permit very fast decisions on suitable starting points + * for a match, cutting down the work a lot. Regmust permits fast rejection + * of lines that cannot possibly match. The regmust tests are costly enough + * that sqd_regcomp() supplies a regmust only if the r.e. contains something + * potentially expensive (at present, the only such thing detected is * or + + * at the start of the r.e., which can involve a lot of backup). Regmlen is + * supplied because the test in sqd_regexec() needs it and sqd_regcomp() is computing + * it anyway. + */ + +/* + * Structure for regexp "program". This is essentially a linear encoding + * of a nondeterministic finite-state machine (aka syntax charts or + * "railroad normal form" in parsing technology). Each node is an opcode + * plus a "next" pointer, possibly plus an operand. "Next" pointers of + * all nodes except BRANCH implement concatenation; a "next" pointer with + * a BRANCH on both ends of it is connecting two alternatives. (Here we + * have one of the subtle syntax dependencies: an individual BRANCH (as + * opposed to a collection of them) is never concatenated with anything + * because of operator precedence.) The operand of some types of node is + * a literal string; for others, it is a node leading into a sub-FSM. In + * particular, the operand of a BRANCH node is the first node of the branch. + * (NB this is *not* a tree structure: the tail of the branch connects + * to the thing following the set of BRANCHes.) The opcodes are: + */ + +/* definition number opnd? meaning */ +#define END 0 /* no End of program. */ +#define BOL 1 /* no Match beginning of line. */ +#define EOL 2 /* no Match end of line. */ +#define ANY 3 /* no Match any character. */ +#define ANYOF 4 /* str Match any of these. */ +#define ANYBUT 5 /* str Match any but one of these. */ +#define BRANCH 6 /* node Match this, or the next..\&. */ +#define BACK 7 /* no "next" ptr points backward. */ +#define EXACTLY 8 /* str Match this string. */ +#define NOTHING 9 /* no Match empty string. */ +#define STAR 10 /* node Match this 0 or more times. */ +#define PLUS 11 /* node Match this 1 or more times. */ +#define OPEN 20 /* no Sub-RE starts here. */ + /* OPEN+1 is number 1, etc. */ +#define CLOSE 30 /* no Analogous to OPEN. */ + +/* + * Opcode notes: + * + * BRANCH The set of branches constituting a single choice are hooked + * together with their "next" pointers, since precedence prevents + * anything being concatenated to any individual branch. The + * "next" pointer of the last BRANCH in a choice points to the + * thing following the whole choice. This is also where the + * final "next" pointer of each individual branch points; each + * branch starts with the operand node of a BRANCH node. + * + * BACK Normal "next" pointers all implicitly point forward; BACK + * exists to make loop structures possible. + * + * STAR,PLUS '?', and complex '*' and '+', are implemented as circular + * BRANCH structures using BACK. Simple cases (one character + * per match) are implemented with STAR and PLUS for speed + * and to minimize recursive plunges. + * + * OPEN,CLOSE ...are numbered at compile time. + */ + +/* + * A node is one char of opcode followed by two chars of "next" pointer. + * "Next" pointers are stored as two 8-bit pieces, high order first. The + * value is a positive offset from the opcode of the node containing it. + * An operand, if any, simply follows the node. (Note that much of the + * code generation knows about this implicit relationship.) + * + * Using two bytes for the "next" pointer is vast overkill for most things, + * but allows patterns to get big without disasters. + */ +#define OP(p) (*(p)) +#define NEXT(p) (((*((p)+1)&0177)<<8) + (*((p)+2)&0377)) +#define OPERAND(p) ((p) + 3) + +/* + * Utility definitions. + */ +#define FAIL(m) { sqd_regerror(m); return(NULL); } +#define ISREPN(c) ((c) == '*' || (c) == '+' || (c) == '?') +#define META "^$.[()|?+*\\" + +/* + * Flags to be passed up and down. + */ +#define HASWIDTH 01 /* Known never to match null string. */ +#define SIMPLE 02 /* Simple enough to be STAR/PLUS operand. */ +#define SPSTART 04 /* Starts with * or +. */ +#define WORST 0 /* Worst case. */ + +/* + * Work-variable struct for sqd_regcomp(). + */ +struct comp { + char *regparse; /* Input-scan pointer. */ + int regnpar; /* () count. */ + char *regcode; /* Code-emit pointer; ®dummy = don't. */ + char regdummy[3]; /* NOTHING, 0 next ptr */ + long regsize; /* Code size. */ +}; +#define EMITTING(cp) ((cp)->regcode != (cp)->regdummy) + +/* + * Forward declarations for sqd_regcomp()'s friends. + */ +static char *reg(struct comp *cp, int paren, int *flagp); +static char *regbranch(struct comp *cp, int *flagp); +static char *regpiece(struct comp *cp, int *flagp); +static char *regatom(struct comp *cp, int *flagp); +static char *regnode(struct comp *cp, int op); +static char *regnext(char *node); +static void regc(struct comp *cp, int c); +static void reginsert(struct comp *cp, int op, char *opnd); +static void regtail(struct comp *cp, char *p, char *val); +static void regoptail(struct comp *cp, char *p, char *val); + +/* + - sqd_regcomp - compile a regular expression into internal code + * + * We can't allocate space until we know how big the compiled form will be, + * but we can't compile it (and thus know how big it is) until we've got a + * place to put the code. So we cheat: we compile it twice, once with code + * generation turned off and size counting turned on, and once "for real". + * This also means that we don't allocate space until we are sure that the + * thing really will compile successfully, and we never have to move the + * code and thus invalidate pointers into it. (Note that it has to be in + * one piece because free() must be able to free it all.) + * + * Beware that the optimization-preparation code in here knows about some + * of the structure of the compiled regexp. + */ +sqd_regexp * +sqd_regcomp(exp) +const char *exp; +{ + register sqd_regexp *r; + register char *scan; + int flags; + struct comp co; + + if (exp == NULL) + FAIL("NULL argument to sqd_regcomp"); + + /* First pass: determine size, legality. */ + co.regparse = (char *)exp; + co.regnpar = 1; + co.regsize = 0L; + co.regdummy[0] = NOTHING; + co.regdummy[1] = co.regdummy[2] = 0; + co.regcode = co.regdummy; + regc(&co, SQD_REGMAGIC); + if (reg(&co, 0, &flags) == NULL) + return(NULL); + + /* Small enough for pointer-storage convention? */ + if (co.regsize >= 0x7fffL) /* Probably could be 0xffffL. */ + FAIL("regexp too big"); + + /* Allocate space. */ + r = (sqd_regexp *)malloc(sizeof(sqd_regexp) + (size_t)co.regsize); + if (r == NULL) + FAIL("out of space"); + + /* Second pass: emit code. */ + co.regparse = (char *)exp; + co.regnpar = 1; + co.regcode = r->program; + regc(&co, SQD_REGMAGIC); + if (reg(&co, 0, &flags) == NULL) + return(NULL); + + /* Dig out information for optimizations. */ + r->regstart = '\0'; /* Worst-case defaults. */ + r->reganch = 0; + r->regmust = NULL; + r->regmlen = 0; + scan = r->program+1; /* First BRANCH. */ + if (OP(regnext(scan)) == END) { /* Only one top-level choice. */ + scan = OPERAND(scan); + + /* Starting-point info. */ + if (OP(scan) == EXACTLY) + r->regstart = *OPERAND(scan); + else if (OP(scan) == BOL) + r->reganch = 1; + + /* + * If there's something expensive in the r.e., find the + * longest literal string that must appear and make it the + * regmust. Resolve ties in favor of later strings, since + * the regstart check works with the beginning of the r.e. + * and avoiding duplication strengthens checking. Not a + * strong reason, but sufficient in the absence of others. + */ + if (flags&SPSTART) { + register char *longest = NULL; + register size_t len = 0; + + for (; scan != NULL; scan = regnext(scan)) + if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= len) { + longest = OPERAND(scan); + len = strlen(OPERAND(scan)); + } + r->regmust = longest; + r->regmlen = (int)len; + } + } + + return(r); +} + +/* + - reg - regular expression, i.e. main body or parenthesized thing + * + * Caller must absorb opening parenthesis. + * + * Combining parenthesis handling with the base level of regular expression + * is a trifle forced, but the need to tie the tails of the branches to what + * follows makes it hard to avoid. + */ +static char * +reg(cp, paren, flagp) +register struct comp *cp; +int paren; /* Parenthesized? */ +int *flagp; +{ + register char *ret = NULL; /* SRE: NULL init added to silence gcc */ + register char *br; + register char *ender; + register int parno = 0; /* SRE: init added to silence gcc */ + int flags; + + *flagp = HASWIDTH; /* Tentatively. */ + + if (paren) { + /* Make an OPEN node. */ + if (cp->regnpar >= NSUBEXP) + FAIL("too many ()"); + parno = cp->regnpar; + cp->regnpar++; + ret = regnode(cp, OPEN+parno); + } + + /* Pick up the branches, linking them together. */ + br = regbranch(cp, &flags); + if (br == NULL) + return(NULL); + if (paren) + regtail(cp, ret, br); /* OPEN -> first. */ + else + ret = br; + *flagp &= ~(~flags&HASWIDTH); /* Clear bit if bit 0. */ + *flagp |= flags&SPSTART; + while (*cp->regparse == '|') { + cp->regparse++; + br = regbranch(cp, &flags); + if (br == NULL) + return(NULL); + regtail(cp, ret, br); /* BRANCH -> BRANCH. */ + *flagp &= ~(~flags&HASWIDTH); + *flagp |= flags&SPSTART; + } + + /* Make a closing node, and hook it on the end. */ + ender = regnode(cp, (paren) ? CLOSE+parno : END); + regtail(cp, ret, ender); + + /* Hook the tails of the branches to the closing node. */ + for (br = ret; br != NULL; br = regnext(br)) + regoptail(cp, br, ender); + + /* Check for proper termination. */ + if (paren && *cp->regparse++ != ')') { + FAIL("unterminated ()"); + } else if (!paren && *cp->regparse != '\0') { + if (*cp->regparse == ')') { + FAIL("unmatched ()"); + } else + FAIL("internal error: junk on end"); + /* NOTREACHED */ + } + + return(ret); +} + +/* + - regbranch - one alternative of an | operator + * + * Implements the concatenation operator. + */ +static char * +regbranch(cp, flagp) +register struct comp *cp; +int *flagp; +{ + register char *ret; + register char *chain; + register char *latest; + int flags; + register int c; + + *flagp = WORST; /* Tentatively. */ + + ret = regnode(cp, BRANCH); + chain = NULL; + while ((c = *cp->regparse) != '\0' && c != '|' && c != ')') { + latest = regpiece(cp, &flags); + if (latest == NULL) + return(NULL); + *flagp |= flags&HASWIDTH; + if (chain == NULL) /* First piece. */ + *flagp |= flags&SPSTART; + else + regtail(cp, chain, latest); + chain = latest; + } + if (chain == NULL) /* Loop ran zero times. */ + (void) regnode(cp, NOTHING); + + return(ret); +} + +/* + - regpiece - something followed by possible [*+?] + * + * Note that the branching code sequences used for ? and the general cases + * of * and + are somewhat optimized: they use the same NOTHING node as + * both the endmarker for their branch list and the body of the last branch. + * It might seem that this node could be dispensed with entirely, but the + * endmarker role is not redundant. + */ +static char * +regpiece(cp, flagp) +register struct comp *cp; +int *flagp; +{ + register char *ret; + register char op; + register char *next; + int flags; + + ret = regatom(cp, &flags); + if (ret == NULL) + return(NULL); + + op = *cp->regparse; + if (!ISREPN(op)) { + *flagp = flags; + return(ret); + } + + if (!(flags&HASWIDTH) && op != '?') + FAIL("*+ operand could be empty"); + switch (op) { + case '*': *flagp = WORST|SPSTART; break; + case '+': *flagp = WORST|SPSTART|HASWIDTH; break; + case '?': *flagp = WORST; break; + } + + if (op == '*' && (flags&SIMPLE)) + reginsert(cp, STAR, ret); + else if (op == '*') { + /* Emit x* as (x&|), where & means "self". */ + reginsert(cp, BRANCH, ret); /* Either x */ + regoptail(cp, ret, regnode(cp, BACK)); /* and loop */ + regoptail(cp, ret, ret); /* back */ + regtail(cp, ret, regnode(cp, BRANCH)); /* or */ + regtail(cp, ret, regnode(cp, NOTHING)); /* null. */ + } else if (op == '+' && (flags&SIMPLE)) + reginsert(cp, PLUS, ret); + else if (op == '+') { + /* Emit x+ as x(&|), where & means "self". */ + next = regnode(cp, BRANCH); /* Either */ + regtail(cp, ret, next); + regtail(cp, regnode(cp, BACK), ret); /* loop back */ + regtail(cp, next, regnode(cp, BRANCH)); /* or */ + regtail(cp, ret, regnode(cp, NOTHING)); /* null. */ + } else if (op == '?') { + /* Emit x? as (x|) */ + reginsert(cp, BRANCH, ret); /* Either x */ + regtail(cp, ret, regnode(cp, BRANCH)); /* or */ + next = regnode(cp, NOTHING); /* null. */ + regtail(cp, ret, next); + regoptail(cp, ret, next); + } + cp->regparse++; + if (ISREPN(*cp->regparse)) + FAIL("nested *?+"); + + return(ret); +} + +/* + - regatom - the lowest level + * + * Optimization: gobbles an entire sequence of ordinary characters so that + * it can turn them into a single node, which is smaller to store and + * faster to run. Backslashed characters are exceptions, each becoming a + * separate node; the code is simpler that way and it's not worth fixing. + */ +static char * +regatom(cp, flagp) +register struct comp *cp; +int *flagp; +{ + register char *ret; + int flags; + + *flagp = WORST; /* Tentatively. */ + + switch (*cp->regparse++) { + case '^': + ret = regnode(cp, BOL); + break; + case '$': + ret = regnode(cp, EOL); + break; + case '.': + ret = regnode(cp, ANY); + *flagp |= HASWIDTH|SIMPLE; + break; + case '[': { + register int range; + register int rangeend; + register int c; + + if (*cp->regparse == '^') { /* Complement of range. */ + ret = regnode(cp, ANYBUT); + cp->regparse++; + } else + ret = regnode(cp, ANYOF); + if ((c = *cp->regparse) == ']' || c == '-') { + regc(cp, c); + cp->regparse++; + } + while ((c = *cp->regparse++) != '\0' && c != ']') { + if (c != '-') + regc(cp, c); + else if ((c = *cp->regparse) == ']' || c == '\0') + regc(cp, '-'); + else { + range = (unsigned char)*(cp->regparse-2); + rangeend = (unsigned char)c; + if (range > rangeend) + FAIL("invalid [] range"); + for (range++; range <= rangeend; range++) + regc(cp, range); + cp->regparse++; + } + } + regc(cp, '\0'); + if (c != ']') + FAIL("unmatched []"); + *flagp |= HASWIDTH|SIMPLE; + break; + } + case '(': + ret = reg(cp, 1, &flags); + if (ret == NULL) + return(NULL); + *flagp |= flags&(HASWIDTH|SPSTART); + break; + case '\0': + case '|': + case ')': + /* supposed to be caught earlier */ + FAIL("internal error: \\0|) unexpected"); + break; + case '?': + case '+': + case '*': + FAIL("?+* follows nothing"); + break; + case '\\': + if (*cp->regparse == '\0') + FAIL("trailing \\"); + ret = regnode(cp, EXACTLY); + regc(cp, *cp->regparse++); + regc(cp, '\0'); + *flagp |= HASWIDTH|SIMPLE; + break; + default: { + register size_t len; + register char ender; + + cp->regparse--; + len = strcspn(cp->regparse, META); + if (len == 0) + FAIL("internal error: strcspn 0"); + ender = *(cp->regparse+len); + if (len > 1 && ISREPN(ender)) + len--; /* Back off clear of ?+* operand. */ + *flagp |= HASWIDTH; + if (len == 1) + *flagp |= SIMPLE; + ret = regnode(cp, EXACTLY); + for (; len > 0; len--) + regc(cp, *cp->regparse++); + regc(cp, '\0'); + break; + } + } + + return(ret); +} + +/* + - regnode - emit a node + */ +static char * /* Location. */ +regnode(cp, op) +register struct comp *cp; +char op; +{ + register char *const ret = cp->regcode; + register char *ptr; + + if (!EMITTING(cp)) { + cp->regsize += 3; + return(ret); + } + + ptr = ret; + *ptr++ = op; + *ptr++ = '\0'; /* Null next pointer. */ + *ptr++ = '\0'; + cp->regcode = ptr; + + return(ret); +} + +/* + - regc - emit (if appropriate) a byte of code + */ +static void +regc(cp, b) +register struct comp *cp; +char b; +{ + if (EMITTING(cp)) + *cp->regcode++ = b; + else + cp->regsize++; +} + +/* + - reginsert - insert an operator in front of already-emitted operand + * + * Means relocating the operand. + */ +static void +reginsert(cp, op, opnd) +register struct comp *cp; +char op; +char *opnd; +{ + register char *place; + + if (!EMITTING(cp)) { + cp->regsize += 3; + return; + } + + (void) memmove(opnd+3, opnd, (size_t)(cp->regcode - opnd)); + cp->regcode += 3; + + place = opnd; /* Op node, where operand used to be. */ + *place++ = op; + *place++ = '\0'; + *place++ = '\0'; +} + +/* + - regtail - set the next-pointer at the end of a node chain + */ +static void +regtail(cp, p, val) +register struct comp *cp; +char *p; +char *val; +{ + register char *scan; + register char *temp; + register int offset; + + if (!EMITTING(cp)) + return; + + /* Find last node. */ + for (scan = p; (temp = regnext(scan)) != NULL; scan = temp) + continue; + + offset = (OP(scan) == BACK) ? scan - val : val - scan; + *(scan+1) = (offset>>8)&0177; + *(scan+2) = offset&0377; +} + +/* + - regoptail - regtail on operand of first argument; nop if operandless + */ +static void +regoptail(cp, p, val) +register struct comp *cp; +char *p; +char *val; +{ + /* "Operandless" and "op != BRANCH" are synonymous in practice. */ + if (!EMITTING(cp) || OP(p) != BRANCH) + return; + regtail(cp, OPERAND(p), val); +} + +/* + * sqd_regexec and friends + */ + +/* + * Work-variable struct for sqd_regexec(). + */ +struct exec { + char *reginput; /* String-input pointer. */ + char *regbol; /* Beginning of input, for ^ check. */ + char **regstartp; /* Pointer to startp array. */ + char **regendp; /* Ditto for endp. */ +}; + +/* + * Forwards. + */ +static int regtry(struct exec *ep, sqd_regexp *rp, char *string); +static int regmatch(struct exec *ep, char *prog); +static size_t regrepeat(struct exec *ep, char *node); + +#ifdef DEBUG +int regnarrate = 0; +void regdump(); +static char *regprop(); +#endif + +/* + - sqd_regexec - match a regexp against a string + */ +int +sqd_regexec(prog, str) +register sqd_regexp *prog; +const char *str; +{ + register char *string = (char *)str; /* avert const poisoning */ + register char *s; + struct exec ex; + + /* Be paranoid. */ + if (prog == NULL || string == NULL) { + sqd_regerror("NULL argument to sqd_regexec"); + return(0); + } + + /* Check validity of program. */ + if ((unsigned char)*prog->program != SQD_REGMAGIC) { + sqd_regerror("corrupted regexp"); + return(0); + } + + /* If there is a "must appear" string, look for it. */ + if (prog->regmust != NULL && strstr(string, prog->regmust) == NULL) + return(0); + + /* Mark beginning of line for ^ . */ + ex.regbol = string; + ex.regstartp = prog->startp; + ex.regendp = prog->endp; + + /* Simplest case: anchored match need be tried only once. */ + if (prog->reganch) + return(regtry(&ex, prog, string)); + + /* Messy cases: unanchored match. */ + if (prog->regstart != '\0') { + /* We know what char it must start with. */ + for (s = string; s != NULL; s = strchr(s+1, prog->regstart)) + if (regtry(&ex, prog, s)) + return(1); + return(0); + } else { + /* We don't -- general case. */ + for (s = string; !regtry(&ex, prog, s); s++) + if (*s == '\0') + return(0); + return(1); + } + /* NOTREACHED */ +} + +/* + - regtry - try match at specific point + */ +static int /* 0 failure, 1 success */ +regtry(ep, prog, string) +register struct exec *ep; +sqd_regexp *prog; +char *string; +{ + register int i; + register char **stp; + register char **enp; + + ep->reginput = string; + + stp = prog->startp; + enp = prog->endp; + for (i = NSUBEXP; i > 0; i--) { + *stp++ = NULL; + *enp++ = NULL; + } + if (regmatch(ep, prog->program + 1)) { + prog->startp[0] = string; + prog->endp[0] = ep->reginput; + return(1); + } else + return(0); +} + +/* + - regmatch - main matching routine + * + * Conceptually the strategy is simple: check to see whether the current + * node matches, call self recursively to see whether the rest matches, + * and then act accordingly. In practice we make some effort to avoid + * recursion, in particular by going through "ordinary" nodes (that don't + * need to know whether the rest of the match failed) by a loop instead of + * by recursion. + */ +static int /* 0 failure, 1 success */ +regmatch(ep, prog) +register struct exec *ep; +char *prog; +{ + register char *scan; /* Current node. */ + char *next; /* Next node. */ + +#ifdef DEBUG + if (prog != NULL && regnarrate) + fprintf(stderr, "%s(\n", regprop(prog)); +#endif + for (scan = prog; scan != NULL; scan = next) { +#ifdef DEBUG + if (regnarrate) + fprintf(stderr, "%s...\n", regprop(scan)); +#endif + next = regnext(scan); + + switch (OP(scan)) { + case BOL: + if (ep->reginput != ep->regbol) + return(0); + break; + case EOL: + if (*ep->reginput != '\0') + return(0); + break; + case ANY: + if (*ep->reginput == '\0') + return(0); + ep->reginput++; + break; + case EXACTLY: { + register size_t len; + register char *const opnd = OPERAND(scan); + + /* Inline the first character, for speed. */ + if (*opnd != *ep->reginput) + return(0); + len = strlen(opnd); + if (len > 1 && strncmp(opnd, ep->reginput, len) != 0) + return(0); + ep->reginput += len; + break; + } + case ANYOF: + if (*ep->reginput == '\0' || + strchr(OPERAND(scan), *ep->reginput) == NULL) + return(0); + ep->reginput++; + break; + case ANYBUT: + if (*ep->reginput == '\0' || + strchr(OPERAND(scan), *ep->reginput) != NULL) + return(0); + ep->reginput++; + break; + case NOTHING: + break; + case BACK: + break; + case OPEN+1: case OPEN+2: case OPEN+3: + case OPEN+4: case OPEN+5: case OPEN+6: + case OPEN+7: case OPEN+8: case OPEN+9: { + register const int no = OP(scan) - OPEN; + register char *const input = ep->reginput; + + if (regmatch(ep, next)) { + /* + * Don't set startp if some later + * invocation of the same parentheses + * already has. + */ + if (ep->regstartp[no] == NULL) + ep->regstartp[no] = input; + return(1); + } else + return(0); + break; + } + case CLOSE+1: case CLOSE+2: case CLOSE+3: + case CLOSE+4: case CLOSE+5: case CLOSE+6: + case CLOSE+7: case CLOSE+8: case CLOSE+9: { + register const int no = OP(scan) - CLOSE; + register char *const input = ep->reginput; + + if (regmatch(ep, next)) { + /* + * Don't set endp if some later + * invocation of the same parentheses + * already has. + */ + if (ep->regendp[no] == NULL) + ep->regendp[no] = input; + return(1); + } else + return(0); + break; + } + case BRANCH: { + register char *const save = ep->reginput; + + if (OP(next) != BRANCH) /* No choice. */ + next = OPERAND(scan); /* Avoid recursion. */ + else { + while (OP(scan) == BRANCH) { + if (regmatch(ep, OPERAND(scan))) + return(1); + ep->reginput = save; + scan = regnext(scan); + } + return(0); + /* NOTREACHED */ + } + break; + } + case STAR: case PLUS: { + register const char nextch = + (OP(next) == EXACTLY) ? *OPERAND(next) : '\0'; + register size_t no; + register char *const save = ep->reginput; + register const size_t min = (OP(scan) == STAR) ? 0 : 1; + + for (no = regrepeat(ep, OPERAND(scan)) + 1; no > min; no--) { + ep->reginput = save + no - 1; + /* If it could work, try it. */ + if (nextch == '\0' || *ep->reginput == nextch) + if (regmatch(ep, next)) + return(1); + } + return(0); + break; + } + case END: + return(1); /* Success! */ + break; + default: + sqd_regerror("regexp corruption"); + return(0); + break; + } + } + + /* + * We get here only if there's trouble -- normally "case END" is + * the terminating point. + */ + sqd_regerror("corrupted pointers"); + return(0); +} + +/* + - regrepeat - report how many times something simple would match + */ +static size_t +regrepeat(ep, node) +register struct exec *ep; +char *node; +{ + register size_t count; + register char *scan; + register char ch; + + switch (OP(node)) { + case ANY: + return(strlen(ep->reginput)); + break; + case EXACTLY: + ch = *OPERAND(node); + count = 0; + for (scan = ep->reginput; *scan == ch; scan++) + count++; + return(count); + break; + case ANYOF: + return(strspn(ep->reginput, OPERAND(node))); + break; + case ANYBUT: + return(strcspn(ep->reginput, OPERAND(node))); + break; + default: /* Oh dear. Called inappropriately. */ + sqd_regerror("internal error: bad call of regrepeat"); + return(0); /* Best compromise. */ + break; + } + /* NOTREACHED */ +} + +/* + - regnext - dig the "next" pointer out of a node + */ +static char * +regnext(p) +register char *p; +{ + register const int offset = NEXT(p); + + if (offset == 0) + return(NULL); + + return((OP(p) == BACK) ? p-offset : p+offset); +} + +#ifdef DEBUG + +static char *regprop(); + +/* + - regdump - dump a regexp onto stdout in vaguely comprehensible form + */ +void +regdump(r) +sqd_regexp *r; +{ + register char *s; + register char op = EXACTLY; /* Arbitrary non-END op. */ + register char *next; + + + s = r->program + 1; + while (op != END) { /* While that wasn't END last time... */ + op = OP(s); + printf("%2d%s", s-r->program, regprop(s)); /* Where, what. */ + next = regnext(s); + if (next == NULL) /* Next ptr. */ + printf("(0)"); + else + printf("(%d)", (s-r->program)+(next-s)); + s += 3; + if (op == ANYOF || op == ANYBUT || op == EXACTLY) { + /* Literal string, where present. */ + while (*s != '\0') { + putchar(*s); + s++; + } + s++; + } + putchar('\n'); + } + + /* Header fields of interest. */ + if (r->regstart != '\0') + printf("start `%c' ", r->regstart); + if (r->reganch) + printf("anchored "); + if (r->regmust != NULL) + printf("must have \"%s\"", r->regmust); + printf("\n"); +} + +/* + - regprop - printable representation of opcode + */ +static char * +regprop(op) +char *op; +{ + register char *p; + static char buf[50]; + + (void) strcpy(buf, ":"); + + switch (OP(op)) { + case BOL: + p = "BOL"; + break; + case EOL: + p = "EOL"; + break; + case ANY: + p = "ANY"; + break; + case ANYOF: + p = "ANYOF"; + break; + case ANYBUT: + p = "ANYBUT"; + break; + case BRANCH: + p = "BRANCH"; + break; + case EXACTLY: + p = "EXACTLY"; + break; + case NOTHING: + p = "NOTHING"; + break; + case BACK: + p = "BACK"; + break; + case END: + p = "END"; + break; + case OPEN+1: + case OPEN+2: + case OPEN+3: + case OPEN+4: + case OPEN+5: + case OPEN+6: + case OPEN+7: + case OPEN+8: + case OPEN+9: + sprintf(buf+strlen(buf), "OPEN%d", OP(op)-OPEN); + p = NULL; + break; + case CLOSE+1: + case CLOSE+2: + case CLOSE+3: + case CLOSE+4: + case CLOSE+5: + case CLOSE+6: + case CLOSE+7: + case CLOSE+8: + case CLOSE+9: + sprintf(buf+strlen(buf), "CLOSE%d", OP(op)-CLOSE); + p = NULL; + break; + case STAR: + p = "STAR"; + break; + case PLUS: + p = "PLUS"; + break; + default: + sqd_regerror("corrupted opcode"); + break; + } + if (p != NULL) + (void) strcat(buf, p); + return(buf); +} +#endif + + +/* + - sqd_regsub - perform substitutions after a regexp match + */ +void +sqd_regsub(rp, source, dest) +const sqd_regexp *rp; +const char *source; +char *dest; +{ + register sqd_regexp * const prog = (sqd_regexp *)rp; + register char *src = (char *)source; + register char *dst = dest; + register char c; + register int no; + register size_t len; + + if (prog == NULL || source == NULL || dest == NULL) { + sqd_regerror("NULL parameter to sqd_regsub"); + return; + } + if ((unsigned char)*(prog->program) != SQD_REGMAGIC) { + sqd_regerror("damaged regexp"); + return; + } + + while ((c = *src++) != '\0') { + if (c == '&') + no = 0; + else if (c == '\\' && isdigit((int) (*src))) + no = *src++ - '0'; + else + no = -1; + + if (no < 0) { /* Ordinary character. */ + if (c == '\\' && (*src == '\\' || *src == '&')) + c = *src++; + *dst++ = c; + } else if (prog->startp[no] != NULL && prog->endp[no] != NULL && + prog->endp[no] > prog->startp[no]) { + len = prog->endp[no] - prog->startp[no]; + (void) strncpy(dst, prog->startp[no], len); + dst += len; + if (*(dst-1) == '\0') { /* strncpy hit NUL. */ + sqd_regerror("damaged match string"); + return; + } + } + } + *dst++ = '\0'; +} + + +void +sqd_regerror(s) +char *s; +{ + fprintf(stderr, "regexp(3): %s\n", s); + exit(EXIT_FAILURE); + /* NOTREACHED */ +} diff --git a/forester/archive/RIO/others/hmmer/squid/install-sh b/forester/archive/RIO/others/hmmer/squid/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/forester/archive/RIO/others/hmmer/squid/iupac.c b/forester/archive/RIO/others/hmmer/squid/iupac.c new file mode 100644 index 0000000..9f2a577 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/iupac.c @@ -0,0 +1,220 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:32 cmzmasek 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 */ +}; diff --git a/forester/archive/RIO/others/hmmer/squid/msa.c b/forester/archive/RIO/others/hmmer/squid/msa.c new file mode 100644 index 0000000..03bd57a --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/msa.c @@ -0,0 +1,1394 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* msa.c + * SRE, Mon May 17 10:48:47 1999 + * + * SQUID's interface for multiple sequence alignment + * manipulation: access to the MSA object. + * + * RCS $Id: msa.c,v 1.1.1.1 2005/03/22 08:34:19 cmzmasek Exp $ + */ + +#include +#include +#include +#include "squid.h" +#include "msa.h" /* multiple sequence alignment object support */ +#include "gki.h" /* string indexing hashtable code */ +#include "ssi.h" /* SSI sequence file indexing code */ + +/* Function: MSAAlloc() + * Date: SRE, Tue May 18 10:45:47 1999 [St. Louis] + * + * Purpose: Allocate an MSA structure, return a pointer + * to it. + * + * Designed to be used in three ways: + * 1) We know exactly the dimensions of the alignment: + * both nseq and alen. + * msa = MSAAlloc(nseq, alen); + * + * 2) We know the number of sequences but not alen. + * (We add sequences later.) + * msa = MSAAlloc(nseq, 0); + * + * 3) We even don't know the number of sequences, so + * we'll have to dynamically expand allocations. + * We provide a blocksize for the allocation expansion, + * and expand when needed. + * msa = MSAAlloc(10, 0); + * if (msa->nseq == msa->nseqalloc) MSAExpand(msa); + * + * Args: nseq - number of sequences, or nseq allocation blocksize + * alen - length of alignment in columns, or 0 + * + * Returns: pointer to new MSA object, w/ all values initialized. + * Note that msa->nseq is initialized to 0, though space + * is allocated. + * + * Diagnostics: "always works". Die()'s on memory allocation failure. + * + */ +MSA * +MSAAlloc(int nseq, int alen) +{ + MSA *msa; + int i; + + msa = MallocOrDie(sizeof(MSA)); + msa->aseq = MallocOrDie(sizeof(char *) * nseq); + msa->sqname = MallocOrDie(sizeof(char *) * nseq); + msa->sqlen = MallocOrDie(sizeof(int) * nseq); + msa->wgt = MallocOrDie(sizeof(float) * nseq); + + for (i = 0; i < nseq; i++) + { + msa->sqname[i] = NULL; + msa->sqlen[i] = 0; + msa->wgt[i] = -1.0; + + if (alen != 0) msa->aseq[i] = MallocOrDie(sizeof(char) * (alen+1)); + else msa->aseq[i] = NULL; + } + + msa->alen = alen; + msa->nseq = 0; + msa->nseqalloc = nseq; + msa->nseqlump = nseq; + + msa->flags = 0; + msa->type = kOtherSeq; + msa->name = NULL; + msa->desc = NULL; + msa->acc = NULL; + msa->au = NULL; + msa->ss_cons = NULL; + msa->sa_cons = NULL; + msa->rf = NULL; + msa->sqacc = NULL; + msa->sqdesc = NULL; + msa->ss = NULL; + msa->sslen = NULL; + msa->sa = NULL; + msa->salen = NULL; + msa->index = GKIInit(); + msa->lastidx = 0; + + /* Initialize unparsed optional markup + */ + msa->comment = NULL; + msa->ncomment = 0; + msa->alloc_ncomment = 0; + + msa->gf_tag = NULL; + msa->gf = NULL; + msa->ngf = 0; + + msa->gs_tag = NULL; + msa->gs = NULL; + msa->gs_idx = NULL; + msa->ngs = 0; + + msa->gc_tag = NULL; + msa->gc = NULL; + msa->gc_idx = NULL; + msa->ngc = 0; + + msa->gr_tag = NULL; + msa->gr = NULL; + msa->gr_idx = NULL; + msa->ngr = 0; + + /* Done. Return the alloced, initialized structure + */ + return msa; +} + +/* Function: MSAExpand() + * Date: SRE, Tue May 18 11:06:53 1999 [St. Louis] + * + * Purpose: Increase the sequence allocation in an MSA + * by msa->nseqlump. (Typically used when we're reading + * in an alignment sequentially from a file, + * so we don't know nseq until we're done.) + * + * Args: msa - the MSA object + * + * Returns: (void) + * + */ +void +MSAExpand(MSA *msa) +{ + int i,j; + + msa->nseqalloc += msa->nseqlump; + + msa->aseq = ReallocOrDie(msa->aseq, sizeof(char *) * msa->nseqalloc); + msa->sqname = ReallocOrDie(msa->sqname, sizeof(char *) * msa->nseqalloc); + msa->sqlen = ReallocOrDie(msa->sqlen, sizeof(char *) * msa->nseqalloc); + msa->wgt = ReallocOrDie(msa->wgt, sizeof(float) * msa->nseqalloc); + + if (msa->ss != NULL) { + msa->ss = ReallocOrDie(msa->ss, sizeof(char *) * msa->nseqalloc); + msa->sslen = ReallocOrDie(msa->sslen, sizeof(int) * msa->nseqalloc); + } + if (msa->sa != NULL) { + msa->sa = ReallocOrDie(msa->sa, sizeof(char *) * msa->nseqalloc); + msa->salen = ReallocOrDie(msa->salen, sizeof(int) * msa->nseqalloc); + } + if (msa->sqacc != NULL) + msa->sqacc = ReallocOrDie(msa->sqacc, sizeof(char *) * msa->nseqalloc); + if (msa->sqdesc != NULL) + msa->sqdesc =ReallocOrDie(msa->sqdesc,sizeof(char *) * msa->nseqalloc); + + for (i = msa->nseqalloc-msa->nseqlump; i < msa->nseqalloc; i++) + { + msa->sqname[i] = NULL; + msa->wgt[i] = -1.0; + + if (msa->sqacc != NULL) msa->sqacc[i] = NULL; + if (msa->sqdesc != NULL) msa->sqdesc[i] = NULL; + + if (msa->alen != 0) + msa->aseq[i] = ReallocOrDie(msa->aseq[i], sizeof(char) * (msa->alen+1)); + else msa->aseq[i] = NULL; + msa->sqlen[i] = 0; + + if (msa->ss != NULL) { + if (msa->alen != 0) + msa->ss[i] = ReallocOrDie(msa->ss[i], sizeof(char) * (msa->alen+1)); + else msa->ss[i] = NULL; + msa->sslen[i] = 0; + } + if (msa->sa != NULL) { + if (msa->alen != 0) + msa->sa[i] = ReallocOrDie(msa->ss[i], sizeof(char) * (msa->alen+1)); + else + msa->sa[i] = NULL; + msa->salen[i] = 0; + } + } + + /* Reallocate and re-init for unparsed #=GS tags, if we have some. + * gs is [0..ngs-1][0..nseq-1][], so we're reallocing the middle + * set of pointers. + */ + if (msa->gs != NULL) + for (i = 0; i < msa->ngs; i++) + { + if (msa->gs[i] != NULL) + { + msa->gs[i] = ReallocOrDie(msa->gs[i], sizeof(char *) * msa->nseqalloc); + for (j = msa->nseqalloc-msa->nseqlump; j < msa->nseqalloc; j++) + msa->gs[i][j] = NULL; + } + } + + /* Reallocate and re-init for unparsed #=GR tags, if we have some. + * gr is [0..ngs-1][0..nseq-1][], so we're reallocing the middle + * set of pointers. + */ + if (msa->gr != NULL) + for (i = 0; i < msa->ngr; i++) + { + if (msa->gr[i] != NULL) + { + msa->gr[i] = ReallocOrDie(msa->gr[i], sizeof(char *) * msa->nseqalloc); + for (j = msa->nseqalloc-msa->nseqlump; j < msa->nseqalloc; j++) + msa->gr[i][j] = NULL; + } + } + + return; +} + +/* Function: MSAFree() + * Date: SRE, Tue May 18 11:20:16 1999 [St. Louis] + * + * Purpose: Free a multiple sequence alignment structure. + * + * Args: msa - the alignment + * + * Returns: (void) + */ +void +MSAFree(MSA *msa) +{ + Free2DArray((void **) msa->aseq, msa->nseq); + Free2DArray((void **) msa->sqname, msa->nseq); + Free2DArray((void **) msa->sqacc, msa->nseq); + Free2DArray((void **) msa->sqdesc, msa->nseq); + Free2DArray((void **) msa->ss, msa->nseq); + Free2DArray((void **) msa->sa, msa->nseq); + + if (msa->sqlen != NULL) free(msa->sqlen); + if (msa->wgt != NULL) free(msa->wgt); + + if (msa->name != NULL) free(msa->name); + if (msa->desc != NULL) free(msa->desc); + if (msa->acc != NULL) free(msa->acc); + if (msa->au != NULL) free(msa->au); + if (msa->ss_cons != NULL) free(msa->ss_cons); + if (msa->sa_cons != NULL) free(msa->sa_cons); + if (msa->rf != NULL) free(msa->rf); + if (msa->sslen != NULL) free(msa->sslen); + if (msa->salen != NULL) free(msa->salen); + + Free2DArray((void **) msa->comment, msa->ncomment); + Free2DArray((void **) msa->gf_tag, msa->ngf); + Free2DArray((void **) msa->gf, msa->ngf); + Free2DArray((void **) msa->gs_tag, msa->ngs); + Free3DArray((void ***)msa->gs, msa->ngs, msa->nseq); + Free2DArray((void **) msa->gc_tag, msa->ngc); + Free2DArray((void **) msa->gc, msa->ngc); + Free2DArray((void **) msa->gr_tag, msa->ngr); + Free3DArray((void ***)msa->gr, msa->ngr, msa->nseq); + + GKIFree(msa->index); + GKIFree(msa->gs_idx); + GKIFree(msa->gc_idx); + GKIFree(msa->gr_idx); + + free(msa); +} + + +/* Function: MSASetSeqAccession() + * Date: SRE, Mon Jun 21 04:13:33 1999 [Sanger Centre] + * + * Purpose: Set a sequence accession in an MSA structure. + * Handles some necessary allocation/initialization. + * + * Args: msa - multiple alignment to add accession to + * seqidx - index of sequence to attach accession to + * acc - accession + * + * Returns: void + */ +void +MSASetSeqAccession(MSA *msa, int seqidx, char *acc) +{ + int x; + + if (msa->sqacc == NULL) { + msa->sqacc = MallocOrDie(sizeof(char *) * msa->nseqalloc); + for (x = 0; x < msa->nseqalloc; x++) + msa->sqacc[x] = NULL; + } + msa->sqacc[seqidx] = sre_strdup(acc, -1); +} + +/* Function: MSASetSeqDescription() + * Date: SRE, Mon Jun 21 04:21:09 1999 [Sanger Centre] + * + * Purpose: Set a sequence description in an MSA structure. + * Handles some necessary allocation/initialization. + * + * Args: msa - multiple alignment to add accession to + * seqidx - index of sequence to attach accession to + * desc - description + * + * Returns: void + */ +void +MSASetSeqDescription(MSA *msa, int seqidx, char *desc) +{ + int x; + + if (msa->sqdesc == NULL) { + msa->sqdesc = MallocOrDie(sizeof(char *) * msa->nseqalloc); + for (x = 0; x < msa->nseqalloc; x++) + msa->sqdesc[x] = NULL; + } + msa->sqdesc[seqidx] = sre_strdup(desc, -1); +} + + +/* Function: MSAAddComment() + * Date: SRE, Tue Jun 1 17:37:21 1999 [St. Louis] + * + * Purpose: Add an (unparsed) comment line to the MSA structure, + * allocating as necessary. + * + * Args: msa - a multiple alignment + * s - comment line to add + * + * Returns: (void) + */ +void +MSAAddComment(MSA *msa, char *s) +{ + /* If this is our first recorded comment, we need to malloc(); + * and if we've filled available space, we need to realloc(). + * Note the arbitrary lumpsize of 10 lines per allocation... + */ + if (msa->comment == NULL) { + msa->comment = MallocOrDie (sizeof(char *) * 10); + msa->alloc_ncomment = 10; + } + if (msa->ncomment == msa->alloc_ncomment) { + msa->alloc_ncomment += 10; + msa->comment = ReallocOrDie(msa->comment, sizeof(char *) * msa->alloc_ncomment); + } + + msa->comment[msa->ncomment] = sre_strdup(s, -1); + msa->ncomment++; + return; +} + +/* Function: MSAAddGF() + * Date: SRE, Wed Jun 2 06:53:54 1999 [bus to Madison] + * + * Purpose: Add an unparsed #=GF markup line to the MSA + * structure, allocating as necessary. + * + * Args: msa - a multiple alignment + * tag - markup tag (e.g. "AU") + * value - free text markup (e.g. "Alex Bateman") + * + * Returns: (void) + */ +void +MSAAddGF(MSA *msa, char *tag, char *value) +{ + /* If this is our first recorded unparsed #=GF line, we need to malloc(); + * if we've filled availabl space If we already have a hash index, and the GF + * Note the arbitrary lumpsize of 10 lines per allocation... + */ + if (msa->gf_tag == NULL) { + msa->gf_tag = MallocOrDie (sizeof(char *) * 10); + msa->gf = MallocOrDie (sizeof(char *) * 10); + msa->alloc_ngf = 10; + } + if (msa->ngf == msa->alloc_ngf) { + msa->alloc_ngf += 10; + msa->gf_tag = ReallocOrDie(msa->gf_tag, sizeof(char *) * msa->alloc_ngf); + msa->gf = ReallocOrDie(msa->gf, sizeof(char *) * msa->alloc_ngf); + } + + msa->gf_tag[msa->ngf] = sre_strdup(tag, -1); + msa->gf[msa->ngf] = sre_strdup(value, -1); + msa->ngf++; + + return; +} + + +/* Function: MSAAddGS() + * Date: SRE, Wed Jun 2 06:57:03 1999 [St. Louis] + * + * Purpose: Add an unparsed #=GS markup line to the MSA + * structure, allocating as necessary. + * + * It's possible that we could get more than one + * of the same type of GS tag per sequence; for + * example, "DR PDB;" structure links in Pfam. + * Hack: handle these by appending to the string, + * in a \n separated fashion. + * + * Args: msa - multiple alignment structure + * tag - markup tag (e.g. "AC") + * sqidx - index of sequence to assoc markup with (0..nseq-1) + * value - markup (e.g. "P00666") + * + * Returns: 0 on success + */ +void +MSAAddGS(MSA *msa, char *tag, int sqidx, char *value) +{ + int tagidx; + int i; + + /* Is this an unparsed tag name that we recognize? + * If not, handle adding it to index, and reallocating + * as needed. + */ + if (msa->gs_tag == NULL) /* first tag? init w/ malloc */ + { + msa->gs_idx = GKIInit(); + tagidx = GKIStoreKey(msa->gs_idx, tag); + SQD_DASSERT1((tagidx == 0)); + msa->gs_tag = MallocOrDie(sizeof(char *)); + msa->gs = MallocOrDie(sizeof(char **)); + msa->gs[0] = MallocOrDie(sizeof(char *) * msa->nseqalloc); + for (i = 0; i < msa->nseqalloc; i++) + msa->gs[0][i] = NULL; + } + else + { + /* new tag? */ + tagidx = GKIKeyIndex(msa->gs_idx, tag); + if (tagidx < 0) { /* it's a new tag name; realloc */ + tagidx = GKIStoreKey(msa->gs_idx, tag); + /* since we alloc in blocks of 1, + we always realloc upon seeing + a new tag. */ + SQD_DASSERT1((tagidx == msa->ngs)); + msa->gs_tag = ReallocOrDie(msa->gs_tag, (msa->ngs+1) + sizeof(char *)); + msa->gs = ReallocOrDie(msa->gs, (msa->ngs+1) + sizeof(char **)); + msa->gs[msa->ngs] = MallocOrDie(sizeof(char *) * msa->nseqalloc); + for (i = 0; i < msa->nseqalloc; i++) + msa->gs[msa->ngs][i] = NULL; + } + } + + if (tagidx == msa->ngs) { + msa->gs_tag[tagidx] = sre_strdup(tag, -1); + msa->ngs++; + } + + if (msa->gs[tagidx][sqidx] == NULL) /* first annotation of this seq with this tag? */ + msa->gs[tagidx][sqidx] = sre_strdup(value, -1); + else { + /* >1 annotation of this seq with this tag; append */ + int len; + if ((len = sre_strcat(&(msa->gs[tagidx][sqidx]), -1, "\n", 1)) < 0) + Die("failed to sre_strcat()"); + if (sre_strcat(&(msa->gs[tagidx][sqidx]), len, value, -1) < 0) + Die("failed to sre_strcat()"); + } + return; +} + +/* Function: MSAAppendGC() + * Date: SRE, Thu Jun 3 06:25:14 1999 [Madison] + * + * Purpose: Add an unparsed #=GC markup line to the MSA + * structure, allocating as necessary. + * + * When called multiple times for the same tag, + * appends value strings together -- used when + * parsing multiblock alignment files, for + * example. + * + * Args: msa - multiple alignment structure + * tag - markup tag (e.g. "CS") + * value - markup, one char per aligned column + * + * Returns: (void) + */ +void +MSAAppendGC(MSA *msa, char *tag, char *value) +{ + int tagidx; + + /* Is this an unparsed tag name that we recognize? + * If not, handle adding it to index, and reallocating + * as needed. + */ + if (msa->gc_tag == NULL) /* first tag? init w/ malloc */ + { + msa->gc_tag = MallocOrDie(sizeof(char *)); + msa->gc = MallocOrDie(sizeof(char **)); + msa->gc_idx = GKIInit(); + tagidx = GKIStoreKey(msa->gc_idx, tag); + SQD_DASSERT1((tagidx == 0)); + msa->gc[0] = NULL; + } + else + { /* new tag? */ + tagidx = GKIKeyIndex(msa->gc_idx, tag); + if (tagidx < 0) { /* it's a new tag name; realloc */ + tagidx = GKIStoreKey(msa->gc_idx, tag); + /* since we alloc in blocks of 1, + we always realloc upon seeing + a new tag. */ + SQD_DASSERT1((tagidx == msa->ngc)); + msa->gc_tag = ReallocOrDie(msa->gc_tag, (msa->ngc+1) + sizeof(char *)); + msa->gc = ReallocOrDie(msa->gc, (msa->ngc+1) + sizeof(char **)); + msa->gc[tagidx] = NULL; + } + } + + if (tagidx == msa->ngc) { + msa->gc_tag[tagidx] = sre_strdup(tag, -1); + msa->ngc++; + } + sre_strcat(&(msa->gc[tagidx]), -1, value, -1); + return; +} + +/* Function: MSAGetGC() + * Date: SRE, Fri Aug 13 13:25:57 1999 [St. Louis] + * + * Purpose: Given a tagname for a miscellaneous #=GC column + * annotation, return a pointer to the annotation + * string. + * + * Args: msa - alignment and its annotation + * tag - name of the annotation + * + * Returns: ptr to the annotation string. Caller does *not* + * free; is managed by msa object still. + */ +char * +MSAGetGC(MSA *msa, char *tag) +{ + int tagidx; + + if (msa->gc_idx == NULL) return NULL; + if ((tagidx = GKIKeyIndex(msa->gc_idx, tag)) < 0) return NULL; + return msa->gc[tagidx]; +} + + +/* Function: MSAAppendGR() + * Date: SRE, Thu Jun 3 06:34:38 1999 [Madison] + * + * Purpose: Add an unparsed #=GR markup line to the + * MSA structure, allocating as necessary. + * + * When called multiple times for the same tag, + * appends value strings together -- used when + * parsing multiblock alignment files, for + * example. + * + * Args: msa - multiple alignment structure + * tag - markup tag (e.g. "SS") + * sqidx - index of seq to assoc markup with (0..nseq-1) + * value - markup, one char per aligned column + * + * Returns: (void) + */ +void +MSAAppendGR(MSA *msa, char *tag, int sqidx, char *value) +{ + int tagidx; + int i; + + /* Is this an unparsed tag name that we recognize? + * If not, handle adding it to index, and reallocating + * as needed. + */ + if (msa->gr_tag == NULL) /* first tag? init w/ malloc */ + { + msa->gr_tag = MallocOrDie(sizeof(char *)); + msa->gr = MallocOrDie(sizeof(char **)); + msa->gr[0] = MallocOrDie(sizeof(char *) * msa->nseqalloc); + msa->gr_idx = GKIInit(); + tagidx = GKIStoreKey(msa->gr_idx, tag); + SQD_DASSERT1((tagidx == 0)); + } + else + { + /* new tag? */ + tagidx = GKIKeyIndex(msa->gr_idx, tag); + if (tagidx < 0) { /* it's a new tag name; realloc */ + tagidx = GKIStoreKey(msa->gr_idx, tag); + /* since we alloc in blocks of 1, + we always realloc upon seeing + a new tag. */ + SQD_DASSERT1((tagidx == msa->ngr)); + msa->gr_tag = ReallocOrDie(msa->gr_tag, (msa->ngr+1) + sizeof(char *)); + msa->gr = ReallocOrDie(msa->gr, (msa->ngr+1) + sizeof(char **)); + msa->gr[msa->ngr] = MallocOrDie(sizeof(char *) * msa->nseqalloc); + for (i = 0; i < msa->nseqalloc; i++) + msa->gr[msa->ngr][i] = NULL; + } + } + + if (tagidx == msa->ngr) { + msa->gr_tag[tagidx] = sre_strdup(tag, -1); + msa->ngr++; + } + sre_strcat(&(msa->gr[tagidx][sqidx]), -1, value, -1); + return; +} + + +/* Function: MSAVerifyParse() + * Date: SRE, Sat Jun 5 14:24:24 1999 [Madison, 1999 worm mtg] + * + * Purpose: Last function called after a multiple alignment is + * parsed. Checks that parse was successful; makes sure + * required information is present; makes sure required + * information is consistent. Some fields that are + * only use during parsing may be freed (sqlen, for + * example). + * + * Some fields in msa may be modified (msa->alen is set, + * for example). + * + * Args: msa - the multiple alignment + * sqname, aseq must be set + * nseq must be correct + * alen need not be set; will be set here. + * wgt will be set here if not already set + * + * Returns: (void) + * Will Die() here with diagnostics on error. + * + * Example: + */ +void +MSAVerifyParse(MSA *msa) +{ + int idx; + + if (msa->nseq == 0) Die("Parse error: no sequences were found for alignment %s", + msa->name != NULL ? msa->name : ""); + + msa->alen = msa->sqlen[0]; + + /* We can rely on msa->sqname[] being valid for any index, + * because of the way the line parsers always store any name + * they add to the index. + */ + for (idx = 0; idx < msa->nseq; idx++) + { + /* aseq is required. */ + if (msa->aseq[idx] == NULL) + Die("Parse error: No sequence for %s in alignment %s", msa->sqname[idx], + msa->name != NULL ? msa->name : ""); + /* either all weights must be set, or none of them */ + if ((msa->flags & MSA_SET_WGT) && msa->wgt[idx] == -1.0) + Die("Parse error: some weights are set, but %s doesn't have one in alignment %s", + msa->sqname[idx], + msa->name != NULL ? msa->name : ""); + /* all aseq must be same length. */ + if (msa->sqlen[idx] != msa->alen) + Die("Parse error: sequence %s: length %d, expected %d in alignment %s", + msa->sqname[idx], msa->sqlen[idx], msa->alen, + msa->name != NULL ? msa->name : ""); + /* if SS is present, must have length right */ + if (msa->ss != NULL && msa->ss[idx] != NULL && msa->sslen[idx] != msa->alen) + Die("Parse error: #=GR SS annotation for %s: length %d, expected %d in alignment %s", + msa->sqname[idx], msa->sslen[idx], msa->alen, + msa->name != NULL ? msa->name : ""); + /* if SA is present, must have length right */ + if (msa->sa != NULL && msa->sa[idx] != NULL && msa->salen[idx] != msa->alen) + Die("Parse error: #=GR SA annotation for %s: length %d, expected %d in alignment %s", + msa->sqname[idx], msa->salen[idx], msa->alen, + msa->name != NULL ? msa->name : ""); + } + + /* if cons SS is present, must have length right */ + if (msa->ss_cons != NULL && strlen(msa->ss_cons) != msa->alen) + Die("Parse error: #=GC SS_cons annotation: length %d, expected %d in alignment %s", + strlen(msa->ss_cons), msa->alen, + msa->name != NULL ? msa->name : ""); + + /* if cons SA is present, must have length right */ + if (msa->sa_cons != NULL && strlen(msa->sa_cons) != msa->alen) + Die("Parse error: #=GC SA_cons annotation: length %d, expected %d in alignment %s", + strlen(msa->sa_cons), msa->alen, + msa->name != NULL ? msa->name : ""); + + /* if RF is present, must have length right */ + if (msa->rf != NULL && strlen(msa->rf) != msa->alen) + Die("Parse error: #=GC RF annotation: length %d, expected %d in alignment %s", + strlen(msa->rf), msa->alen, + msa->name != NULL ? msa->name : ""); + + /* Check that all or no weights are set */ + if (!(msa->flags & MSA_SET_WGT)) + FSet(msa->wgt, msa->nseq, 1.0); /* default weights */ + + /* Clean up a little from the parser */ + if (msa->sqlen != NULL) { free(msa->sqlen); msa->sqlen = NULL; } + if (msa->sslen != NULL) { free(msa->sslen); msa->sslen = NULL; } + if (msa->salen != NULL) { free(msa->salen); msa->salen = NULL; } + + return; +} + + + + +/* Function: MSAFileOpen() + * Date: SRE, Tue May 18 13:22:01 1999 [St. Louis] + * + * Purpose: Open an alignment database file and prepare + * for reading one alignment, or sequentially + * in the (rare) case of multiple MSA databases + * (e.g. Stockholm format). + * + * Args: filename - name of file to open + * if "-", read stdin + * if it ends in ".gz", read from pipe to gunzip -dc + * format - format of file (e.g. MSAFILE_STOCKHOLM) + * env - environment variable for path (e.g. BLASTDB) + * + * Returns: opened MSAFILE * on success. + * NULL on failure: + * usually, because the file doesn't exist; + * for gzip'ed files, may also mean that gzip isn't in the path. + */ +MSAFILE * +MSAFileOpen(char *filename, int format, char *env) +{ + MSAFILE *afp; + + afp = MallocOrDie(sizeof(MSAFILE)); + if (strcmp(filename, "-") == 0) + { + afp->f = stdin; + afp->do_stdin = TRUE; + afp->do_gzip = FALSE; + afp->fname = sre_strdup("[STDIN]", -1); + afp->ssi = NULL; /* can't index stdin because we can't seek*/ + } +#ifndef SRE_STRICT_ANSI + /* popen(), pclose() aren't portable to non-POSIX systems; disable */ + else if (Strparse("^.*\\.gz$", filename, 0)) + { + char cmd[256]; + + /* Note that popen() will return "successfully" + * if file doesn't exist, because gzip works fine + * and prints an error! So we have to check for + * existence of file ourself. + */ + if (! FileExists(filename)) + Die("%s: file does not exist", filename); + if (strlen(filename) + strlen("gzip -dc ") >= 256) + Die("filename > 255 char in MSAFileOpen()"); + sprintf(cmd, "gzip -dc %s", filename); + if ((afp->f = popen(cmd, "r")) == NULL) + return NULL; + + afp->do_stdin = FALSE; + afp->do_gzip = TRUE; + afp->fname = sre_strdup(filename, -1); + /* we can't index a .gz file, because we can't seek in a pipe afaik */ + afp->ssi = NULL; + } +#endif /*SRE_STRICT_ANSI*/ + else + { + char *ssifile; + char *dir; + + /* When we open a file, it may be either in the current + * directory, or in the directory indicated by the env + * argument - and we have to construct the SSI filename accordingly. + */ + if ((afp->f = fopen(filename, "r")) != NULL) + { + ssifile = MallocOrDie(sizeof(char) * (strlen(filename) + 5)); + sprintf(ssifile, "%s.ssi", filename); + } + else if ((afp->f = EnvFileOpen(filename, env, &dir)) != NULL) + { + char *full; + full = FileConcat(dir, filename); + ssifile = MallocOrDie(sizeof(char) * (strlen(full) + strlen(filename) + 5)); + sprintf(ssifile, "%s.ssi", full); + free(dir); + } + else return NULL; + + afp->do_stdin = FALSE; + afp->do_gzip = FALSE; + afp->fname = sre_strdup(filename, -1); + afp->ssi = NULL; + + /* Open the SSI index file. If it doesn't exist, or + * it's corrupt, or some error happens, afp->ssi stays NULL. + */ + SSIOpen(ssifile, &(afp->ssi)); + free(ssifile); + } + + /* Invoke autodetection if we haven't already been told what + * to expect. + */ + if (format == MSAFILE_UNKNOWN) + { + if (afp->do_stdin == TRUE || afp->do_gzip) + Die("Can't autodetect alignment file format from a stdin or gzip pipe"); + format = MSAFileFormat(afp); + if (format == MSAFILE_UNKNOWN) + Die("Can't determine format of multiple alignment file %s", afp->fname); + } + + afp->format = format; + afp->linenumber = 0; + afp->buf = NULL; + afp->buflen = 0; + + return afp; +} + + +/* Function: MSAFilePositionByKey() + * MSAFilePositionByIndex() + * MSAFileRewind() + * + * Date: SRE, Tue Nov 9 19:02:54 1999 [St. Louis] + * + * Purpose: Family of functions for repositioning in + * open MSA files; analogous to a similarly + * named function series in HMMER's hmmio.c. + * + * Args: afp - open alignment file + * offset - disk offset in bytes + * key - key to look up in SSI indices + * idx - index of alignment. + * + * Returns: 0 on failure. + * 1 on success. + * If called on a non-fseek()'able file (e.g. a gzip'ed + * or pipe'd alignment), returns 0 as a failure flag. + */ +int +MSAFileRewind(MSAFILE *afp) +{ + if (afp->do_gzip || afp->do_stdin) return 0; + rewind(afp->f); + return 1; +} +int +MSAFilePositionByKey(MSAFILE *afp, char *key) +{ + int fh; /* filehandle is ignored */ + SSIOFFSET offset; /* offset of the key alignment */ + + if (afp->ssi == NULL) return 0; + if (SSIGetOffsetByName(afp->ssi, key, &fh, &offset) != 0) return 0; + if (SSISetFilePosition(afp->f, &offset) != 0) return 0; + return 1; +} +int +MSAFilePositionByIndex(MSAFILE *afp, int idx) +{ + int fh; /* filehandled is passed but ignored */ + SSIOFFSET offset; /* disk offset of desired alignment */ + + if (afp->ssi == NULL) return 0; + if (SSIGetOffsetByNumber(afp->ssi, idx, &fh, &offset) != 0) return 0; + if (SSISetFilePosition(afp->f, &offset) != 0) return 0; + return 1; +} + + +/* Function: MSAFileRead() + * Date: SRE, Fri May 28 16:01:43 1999 [St. Louis] + * + * Purpose: Read the next msa from an open alignment file. + * This is a wrapper around format-specific calls. + * + * Args: afp - open alignment file + * + * Returns: next alignment, or NULL if out of alignments + */ +MSA * +MSAFileRead(MSAFILE *afp) +{ + MSA *msa = NULL; + + switch (afp->format) { + case MSAFILE_STOCKHOLM: msa = ReadStockholm(afp); break; + case MSAFILE_MSF: msa = ReadMSF(afp); break; + case MSAFILE_A2M: msa = ReadA2M(afp); break; + case MSAFILE_CLUSTAL: msa = ReadClustal(afp); break; + case MSAFILE_SELEX: msa = ReadSELEX(afp); break; + case MSAFILE_PHYLIP: msa = ReadPhylip(afp); break; + default: + Die("MSAFILE corrupted: bad format index"); + } + return msa; +} + +/* Function: MSAFileClose() + * Date: SRE, Tue May 18 14:05:28 1999 [St. Louis] + * + * Purpose: Close an open MSAFILE. + * + * Args: afp - ptr to an open MSAFILE. + * + * Returns: void + */ +void +MSAFileClose(MSAFILE *afp) +{ +#ifndef SRE_STRICT_ANSI /* gzip functionality only on POSIX systems */ + if (afp->do_gzip) pclose(afp->f); +#endif + if (! afp->do_stdin) fclose(afp->f); + if (afp->buf != NULL) free(afp->buf); + if (afp->ssi != NULL) SSIClose(afp->ssi); + if (afp->fname != NULL) free(afp->fname); + free(afp); +} + +char * +MSAFileGetLine(MSAFILE *afp) +{ + char *s; + if ((s = sre_fgets(&(afp->buf), &(afp->buflen), afp->f)) == NULL) + return NULL; + afp->linenumber++; + return afp->buf; +} + +void +MSAFileWrite(FILE *fp, MSA *msa, int outfmt, int do_oneline) +{ + switch (outfmt) { + case MSAFILE_A2M: WriteA2M(stdout, msa); break; + case MSAFILE_CLUSTAL: WriteClustal(stdout, msa); break; + case MSAFILE_MSF: WriteMSF(stdout, msa); break; + case MSAFILE_PHYLIP: WritePhylip(stdout, msa); break; + case MSAFILE_SELEX: WriteSELEX(stdout, msa); break; + case MSAFILE_STOCKHOLM: + if (do_oneline) WriteStockholmOneBlock(stdout, msa); + else WriteStockholm(stdout, msa); + break; + default: + Die("can't write. no such alignment format %d\n", outfmt); + } +} + +/* Function: MSAGetSeqidx() + * Date: SRE, Wed May 19 15:08:25 1999 [St. Louis] + * + * Purpose: From a sequence name, return seqidx appropriate + * for an MSA structure. + * + * 1) try to guess the index. (pass -1 if you can't guess) + * 2) Look up name in msa's hashtable. + * 3) If it's a new name, store in msa's hashtable; + * expand allocs as needed; + * save sqname. + * + * Args: msa - alignment object + * name - a sequence name + * guess - a guess at the right index, or -1 if no guess. + * + * Returns: seqidx + */ +int +MSAGetSeqidx(MSA *msa, char *name, int guess) +{ + int seqidx; + /* can we guess? */ + if (guess >= 0 && guess < msa->nseq && strcmp(name, msa->sqname[guess]) == 0) + return guess; + /* else, a lookup in the index */ + if ((seqidx = GKIKeyIndex(msa->index, name)) >= 0) + return seqidx; + /* else, it's a new name */ + seqidx = GKIStoreKey(msa->index, name); + if (seqidx >= msa->nseqalloc) MSAExpand(msa); + + msa->sqname[seqidx] = sre_strdup(name, -1); + msa->nseq++; + return seqidx; +} + + +/* Function: MSAFromAINFO() + * Date: SRE, Mon Jun 14 11:22:24 1999 [St. Louis] + * + * Purpose: Convert the old aseq/ainfo alignment structure + * to new MSA structure. Enables more rapid conversion + * of codebase to the new world order. + * + * Args: aseq - [0..nseq-1][0..alen-1] alignment + * ainfo - old-style optional info + * + * Returns: MSA * + */ +MSA * +MSAFromAINFO(char **aseq, AINFO *ainfo) +{ + MSA *msa; + int i, j; + + msa = MSAAlloc(ainfo->nseq, ainfo->alen); + for (i = 0; i < ainfo->nseq; i++) + { + strcpy(msa->aseq[i], aseq[i]); + msa->wgt[i] = ainfo->wgt[i]; + msa->sqname[i] = sre_strdup(ainfo->sqinfo[i].name, -1); + msa->sqlen[i] = msa->alen; + GKIStoreKey(msa->index, msa->sqname[i]); + + if (ainfo->sqinfo[i].flags & SQINFO_ACC) + MSASetSeqAccession(msa, i, ainfo->sqinfo[i].acc); + + if (ainfo->sqinfo[i].flags & SQINFO_DESC) + MSASetSeqDescription(msa, i, ainfo->sqinfo[i].desc); + + if (ainfo->sqinfo[i].flags & SQINFO_SS) { + if (msa->ss == NULL) { + msa->ss = MallocOrDie(sizeof(char *) * msa->nseqalloc); + msa->sslen = MallocOrDie(sizeof(int) * msa->nseqalloc); + for (j = 0; j < msa->nseqalloc; j++) { + msa->ss[j] = NULL; + msa->sslen[j] = 0; + } + } + MakeAlignedString(msa->aseq[i], msa->alen, ainfo->sqinfo[i].ss, &(msa->ss[i])); + msa->sslen[i] = msa->alen; + } + + if (ainfo->sqinfo[i].flags & SQINFO_SA) { + if (msa->sa == NULL) { + msa->sa = MallocOrDie(sizeof(char *) * msa->nseqalloc); + msa->salen = MallocOrDie(sizeof(int) * msa->nseqalloc); + for (j = 0; j < msa->nseqalloc; j++) { + msa->sa[j] = NULL; + msa->salen[j] = 0; + } + } + MakeAlignedString(msa->aseq[i], msa->alen, ainfo->sqinfo[i].sa, &(msa->sa[i])); + msa->salen[i] = msa->alen; + } + } + /* note that sre_strdup() returns NULL when passed NULL */ + msa->name = sre_strdup(ainfo->name, -1); + msa->desc = sre_strdup(ainfo->desc, -1); + msa->acc = sre_strdup(ainfo->acc, -1); + msa->au = sre_strdup(ainfo->au, -1); + msa->ss_cons = sre_strdup(ainfo->cs, -1); + msa->rf = sre_strdup(ainfo->rf, -1); + if (ainfo->flags & AINFO_TC) + { msa->tc1 = ainfo->tc1; msa->tc2 = ainfo->tc2; msa->flags |= MSA_SET_TC; } + if (ainfo->flags & AINFO_NC) + { msa->nc1 = ainfo->nc1; msa->nc2 = ainfo->nc2; msa->flags |= MSA_SET_NC; } + if (ainfo->flags & AINFO_GA) + { msa->ga1 = ainfo->ga1; msa->ga2 = ainfo->ga2; msa->flags |= MSA_SET_GA; } + + msa->nseq = ainfo->nseq; + msa->alen = ainfo->alen; + return msa; +} + + + + +/* Function: MSAFileFormat() + * Date: SRE, Fri Jun 18 14:26:49 1999 [Sanger Centre] + * + * Purpose: (Attempt to) determine the format of an alignment file. + * Since it rewinds the file pointer when it's done, + * cannot be used on a pipe or gzip'ed file. Works by + * calling SeqfileFormat() from sqio.c, then making sure + * that the format is indeed an alignment. If the format + * comes back as FASTA, it assumes that the format as A2M + * (e.g. aligned FASTA). + * + * Args: fname - file to evaluate + * + * Returns: format code; e.g. MSAFILE_STOCKHOLM + */ +int +MSAFileFormat(MSAFILE *afp) +{ + int fmt; + + fmt = SeqfileFormat(afp->f); + + if (fmt == SQFILE_FASTA) fmt = MSAFILE_A2M; + + if (fmt != MSAFILE_UNKNOWN && ! IsAlignmentFormat(fmt)) + Die("File %s does not appear to be an alignment file;\n\ +rather, it appears to be an unaligned file in %s format.\n\ +I'm expecting an alignment file in this context.\n", + afp->fname, + SeqfileFormat2String(fmt)); + return fmt; +} + + +/* Function: MSAMingap() + * Date: SRE, Mon Jun 28 18:57:54 1999 [on jury duty, St. Louis Civil Court] + * + * Purpose: Remove all-gap columns from a multiple sequence alignment + * and its associated per-residue data. + * + * Args: msa - the alignment + * + * Returns: (void) + */ +void +MSAMingap(MSA *msa) +{ + int *useme; /* array of TRUE/FALSE flags for which columns to keep */ + int apos; /* position in original alignment */ + int idx; /* sequence index */ + + useme = MallocOrDie(sizeof(int) * msa->alen); + for (apos = 0; apos < msa->alen; apos++) + { + for (idx = 0; idx < msa->nseq; idx++) + if (! isgap(msa->aseq[idx][apos])) + break; + if (idx == msa->nseq) useme[apos] = FALSE; else useme[apos] = TRUE; + } + MSAShorterAlignment(msa, useme); + free(useme); + return; +} + +/* Function: MSANogap() + * Date: SRE, Wed Nov 17 09:59:51 1999 [St. Louis] + * + * Purpose: Remove all columns from a multiple sequence alignment that + * contain any gaps -- used for filtering before phylogenetic + * analysis. + * + * Args: msa - the alignment + * + * Returns: (void). The alignment is modified, so if you want to keep + * the original for something, make a copy. + */ +void +MSANogap(MSA *msa) +{ + int *useme; /* array of TRUE/FALSE flags for which columns to keep */ + int apos; /* position in original alignment */ + int idx; /* sequence index */ + + useme = MallocOrDie(sizeof(int) * msa->alen); + for (apos = 0; apos < msa->alen; apos++) + { + for (idx = 0; idx < msa->nseq; idx++) + if (isgap(msa->aseq[idx][apos])) + break; + if (idx == msa->nseq) useme[apos] = TRUE; else useme[apos] = FALSE; + } + MSAShorterAlignment(msa, useme); + free(useme); + return; +} + + +/* Function: MSAShorterAlignment() + * Date: SRE, Wed Nov 17 09:49:32 1999 [St. Louis] + * + * Purpose: Given an array "useme" (0..alen-1) of TRUE/FALSE flags, + * where TRUE means "keep this column in the new alignment": + * Remove all columns annotated as "FALSE" in the useme + * array. + * + * Args: msa - the alignment. The alignment is changed, so + * if you don't want the original screwed up, make + * a copy of it first. + * useme - TRUE/FALSE flags for columns to keep: 0..alen-1 + * + * Returns: (void) + */ +void +MSAShorterAlignment(MSA *msa, int *useme) +{ + int apos; /* position in original alignment */ + int mpos; /* position in new alignment */ + int idx; /* sequence index */ + int i; /* markup index */ + + /* Since we're minimizing, we can overwrite, using already allocated + * memory. + */ + for (apos = 0, mpos = 0; apos < msa->alen; apos++) + { + if (useme[apos] == FALSE) continue; + + /* shift alignment and associated per-column+per-residue markup */ + if (mpos != apos) + { + for (idx = 0; idx < msa->nseq; idx++) + { + msa->aseq[idx][mpos] = msa->aseq[idx][apos]; + if (msa->ss != NULL && msa->ss[idx] != NULL) msa->ss[idx][mpos] = msa->ss[idx][apos]; + if (msa->sa != NULL && msa->sa[idx] != NULL) msa->sa[idx][mpos] = msa->sa[idx][apos]; + + for (i = 0; i < msa->ngr; i++) + if (msa->gr[i][idx] != NULL) msa->gr[i][idx][mpos] = msa->gr[i][idx][apos]; + } + + if (msa->ss_cons != NULL) msa->ss_cons[mpos] = msa->ss_cons[apos]; + if (msa->sa_cons != NULL) msa->sa_cons[mpos] = msa->sa_cons[apos]; + if (msa->rf != NULL) msa->rf[mpos] = msa->rf[apos]; + + for (i = 0; i < msa->ngc; i++) + msa->gc[i][mpos] = msa->gc[i][apos]; + } + mpos++; + } + + msa->alen = mpos; /* set new length */ + /* null terminate everything */ + for (idx = 0; idx < msa->nseq; idx++) + { + msa->aseq[idx][mpos] = '\0'; + if (msa->ss != NULL && msa->ss[idx] != NULL) msa->ss[idx][mpos] = '\0'; + if (msa->sa != NULL && msa->sa[idx] != NULL) msa->sa[idx][mpos] = '\0'; + + for (i = 0; i < msa->ngr; i++) + if (msa->gr[i][idx] != NULL) msa->gr[i][idx][mpos] = '\0'; + } + + if (msa->ss_cons != NULL) msa->ss_cons[mpos] = '\0'; + if (msa->sa_cons != NULL) msa->sa_cons[mpos] = '\0'; + if (msa->rf != NULL) msa->rf[mpos] = '\0'; + + for (i = 0; i < msa->ngc; i++) + msa->gc[i][mpos] = '\0'; + + return; +} + + +/* Function: MSASmallerAlignment() + * Date: SRE, Wed Jun 30 09:56:08 1999 [St. Louis] + * + * Purpose: Given an array "useme" of TRUE/FALSE flags for + * each sequence in an alignment, construct + * and return a new alignment containing only + * those sequences that are flagged useme=TRUE. + * + * Used by routines such as MSAFilterAlignment() + * and MSASampleAlignment(). + * + * Limitations: + * Does not copy unparsed Stockholm markup. + * + * Does not make assumptions about meaning of wgt; + * if you want the new wgt vector renormalized, do + * it yourself with FNorm(new->wgt, new->nseq). + * + * Args: msa -- the original (larger) alignment + * useme -- [0..nseq-1] array of TRUE/FALSE flags; TRUE means include + * this seq in new alignment + * ret_new -- RETURN: new alignment + * + * Returns: void + * ret_new is allocated here; free with MSAFree() + */ +void +MSASmallerAlignment(MSA *msa, int *useme, MSA **ret_new) +{ + MSA *new; /* RETURN: new alignment */ + int nnew; /* number of seqs in new msa (e.g. # of TRUEs) */ + int oidx, nidx; /* old, new indices */ + + nnew = 0; + for (oidx = 0; oidx < msa->nseq; oidx++) + if (useme[oidx]) nnew++; + if (nnew == 0) { *ret_new = NULL; return; } + + new = MSAAlloc(nnew, 0); + nidx = 0; + for (oidx = 0; oidx < msa->nseq; oidx++) + if (useme[oidx]) + { + new->aseq[nidx] = sre_strdup(msa->aseq[oidx], msa->alen); + new->sqname[nidx] = sre_strdup(msa->sqname[oidx], msa->alen); + GKIStoreKey(new->index, msa->sqname[oidx]); + new->wgt[nidx] = msa->wgt[oidx]; + if (msa->sqacc != NULL) + MSASetSeqAccession(new, nidx, msa->sqacc[oidx]); + if (msa->sqdesc != NULL) + MSASetSeqDescription(new, nidx, msa->sqdesc[oidx]); + if (msa->ss != NULL && msa->ss[oidx] != NULL) + { + if (new->ss == NULL) new->ss = MallocOrDie(sizeof(char *) * new->nseq); + new->ss[nidx] = sre_strdup(msa->ss[oidx], -1); + } + if (msa->sa != NULL && msa->sa[oidx] != NULL) + { + if (new->sa == NULL) new->sa = MallocOrDie(sizeof(char *) * new->nseq); + new->sa[nidx] = sre_strdup(msa->sa[oidx], -1); + } + nidx++; + } + + new->nseq = nnew; + new->alen = msa->alen; + new->flags = msa->flags; + new->type = msa->type; + new->name = sre_strdup(msa->name, -1); + new->desc = sre_strdup(msa->desc, -1); + new->acc = sre_strdup(msa->acc, -1); + new->au = sre_strdup(msa->au, -1); + new->ss_cons = sre_strdup(msa->ss_cons, -1); + new->sa_cons = sre_strdup(msa->sa_cons, -1); + new->rf = sre_strdup(msa->rf, -1); + new->tc1 = msa->tc1; + new->tc2 = msa->tc2; + new->nc1 = msa->nc1; + new->nc2 = msa->nc2; + new->ga1 = msa->ga1; + new->ga2 = msa->ga2; + free(new->sqlen); + + MSAMingap(new); + *ret_new = new; + return; +} + + +/***************************************************************** + * Retrieval routines + * + * Access to MSA structure data is possible through these routines. + * I'm not doing this because of object oriented design, though + * it might work in my favor someday. + * I'm doing this because lots of MSA data is optional, and + * checking through the chain of possible NULLs is a pain. + *****************************************************************/ + +char * +MSAGetSeqAccession(MSA *msa, int idx) +{ + if (msa->sqacc != NULL && msa->sqacc[idx] != NULL) + return msa->sqacc[idx]; + else + return NULL; +} +char * +MSAGetSeqDescription(MSA *msa, int idx) +{ + if (msa->sqdesc != NULL && msa->sqdesc[idx] != NULL) + return msa->sqdesc[idx]; + else + return NULL; +} +char * +MSAGetSeqSS(MSA *msa, int idx) +{ + if (msa->ss != NULL && msa->ss[idx] != NULL) + return msa->ss[idx]; + else + return NULL; +} +char * +MSAGetSeqSA(MSA *msa, int idx) +{ + if (msa->sa != NULL && msa->sa[idx] != NULL) + return msa->sa[idx]; + else + return NULL; +} diff --git a/forester/archive/RIO/others/hmmer/squid/msa.h b/forester/archive/RIO/others/hmmer/squid/msa.h new file mode 100644 index 0000000..ff52f60 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/msa.h @@ -0,0 +1,286 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +#ifndef SQUID_MSA_INCLUDED +#define SQUID_MSA_INCLUDED + +/* msa.h + * SRE, Mon May 17 10:24:30 1999 + * + * Header file for SQUID's multiple sequence alignment + * manipulation code. + * + * RCS $Id: msa.h,v 1.1.1.1 2005/03/22 08:34:19 cmzmasek Exp $ + */ + +#include /* FILE support */ +#include "gki.h" /* hash table support */ +#include "ssi.h" /* sequence file index support */ +#include "squid.h" /* need SQINFO */ + +/**************************************************** + * Obsolete alignment information, AINFO + * Superceded by MSA structure further below; but we + * need AINFO for the near future for backwards + * compatibility. + ****************************************************/ +/* Structure: aliinfo_s + * + * Purpose: Optional information returned from an alignment file. + * + * flags: always used. Flags for which info is valid/alloced. + * + * alen: mandatory. Alignments are always flushed right + * with gaps so that all aseqs are the same length, alen. + * Available for all alignment formats. + * + * nseq: mandatory. Aligned seqs are indexed 0..nseq-1. + * + * wgt: 0..nseq-1 vector of sequence weights. Mandatory. + * If not explicitly set, weights are initialized to 1.0. + * + * cs: 0..alen-1, just like the alignment. Contains single-letter + * secondary structure codes for consensus structure; "<>^+" + * for RNA, "EHL." for protein. May be NULL if unavailable + * from seqfile. Only available for SELEX format files. + * + * rf: 0..alen-1, just like the alignment. rf is an arbitrary string + * of characters, used for annotating columns. Blanks are + * interpreted as non-canonical columns and anything else is + * considered canonical. Only available from SELEX files. + * + * sqinfo: mandatory. Array of 0..nseq-1 + * per-sequence information structures, carrying + * name, id, accession, coords. + * + */ +struct aliinfo_s { + int flags; /* flags for what info is valid */ + int alen; /* length of alignment (columns) */ + int nseq; /* number of seqs in alignment */ + float *wgt; /* sequence weights [0..nseq-1] */ + char *cs; /* consensus secondary structure string */ + char *rf; /* reference coordinate system */ + struct seqinfo_s *sqinfo; /* name, id, coord info for each sequence */ + + /* Pfam/HMMER pick-ups */ + char *name; /* name of alignment */ + char *desc; /* description of alignment */ + char *acc; /* accession of alignment */ + char *au; /* "author" information */ + float tc1, tc2; /* trusted score cutoffs (per-seq, per-domain) */ + float nc1, nc2; /* noise score cutoffs (per-seq, per-domain) */ + float ga1, ga2; /* gathering cutoffs */ +}; +typedef struct aliinfo_s AINFO; +#define AINFO_TC (1 << 0) +#define AINFO_NC (1 << 1) +#define AINFO_GA (1 << 2) + +/***************************************************************** + * MSA + * SRE, Sun Jun 27 15:03:35 1999 [TW 723 over Greenland] + * + * Defines the new data structure and API for multiple + * sequence alignment i/o. + *****************************************************************/ + +/* Structure: MSA + * SRE, Tue May 18 11:33:08 1999 + * + * Our object for a multiple sequence alignment. + */ +typedef struct msa_struct { + /* Mandatory information associated with the alignment. + */ + char **aseq; /* the alignment itself, [0..nseq-1][0..alen-1] */ + char **sqname; /* names of sequences, [0..nseq-1][0..alen-1] */ + float *wgt; /* sequence weights [0..nseq-1] */ + int alen; /* length of alignment (columns) */ + int nseq; /* number of seqs in alignment */ + + /* Optional information that we understand, and might have. + */ + int flags; /* flags for what optional info is valid */ + int type; /* kOtherSeq, kRNA/hmmNUCLEIC, or kAmino/hmmAMINO */ + char *name; /* name of alignment, or NULL */ + char *desc; /* description of alignment, or NULL */ + char *acc; /* accession of alignment, or NULL */ + char *au; /* "author" information, or NULL */ + char *ss_cons; /* consensus secondary structure string, or NULL */ + char *sa_cons; /* consensus surface accessibility string, or NULL */ + char *rf; /* reference coordinate system, or NULL */ + char **sqacc; /* accession numbers for individual sequences */ + char **sqdesc; /* description lines for individual sequences */ + char **ss; /* per-seq secondary structure annotation, or NULL */ + char **sa; /* per-seq surface accessibility annotation, or NULL */ + float tc1, tc2; /* trusted score cutoffs (per-seq, per-domain) */ + float nc1, nc2; /* noise score cutoffs (per-seq, per-domain) */ + float ga1, ga2; /* gathering cutoffs (per-seq, per-domain) */ + + /* Optional information that we don't understand. + * That is, we know what type of information it is, but it's + * either (interpreted as) free-text comment, or it's Stockholm + * markup with unfamiliar tags. + */ + char **comment; /* free text comments, or NULL */ + int ncomment; /* number of comment lines */ + int alloc_ncomment; /* number of comment lines alloc'ed */ + + char **gf_tag; /* markup tags for unparsed #=GF lines */ + char **gf; /* annotations for unparsed #=GF lines */ + int ngf; /* number of unparsed #=GF lines */ + int alloc_ngf; /* number of gf lines alloc'ed */ + + char **gs_tag; /* markup tags for unparsed #=GS lines */ + char ***gs; /* [0..ngs-1][0..nseq-1][free text] markup */ + GKI *gs_idx; /* hash of #=GS tag types */ + int ngs; /* number of #=GS tag types */ + + char **gc_tag; /* markup tags for unparsed #=GC lines */ + char **gc; /* [0..ngc-1][0..alen-1] markup */ + GKI *gc_idx; /* hash of #=GC tag types */ + int ngc; /* number of #=GC tag types */ + + char **gr_tag; /* markup tags for unparsed #=GR lines */ + char ***gr; /* [0..ngr][0..nseq-1][0..alen-1] markup */ + GKI *gr_idx; /* hash of #=GR tag types */ + int ngr; /* number of #=GR tag types */ + + /* Stuff we need for our own maintenance of the data structure + */ + GKI *index; /* name ->seqidx hash table */ + int nseqalloc; /* number of seqs currently allocated for */ + int nseqlump; /* lump size for dynamic expansions of nseq */ + int *sqlen; /* individual sequence lengths during parsing */ + int *sslen; /* individual ss lengths during parsing */ + int *salen; /* individual sa lengths during parsing */ + int lastidx; /* last index we saw; use for guessing next */ +} MSA; +#define MSA_SET_TC (1 << 0) +#define MSA_SET_NC (1 << 1) +#define MSA_SET_GA (1 << 2) +#define MSA_SET_WGT (1 << 3) + +/* Structure: MSAFILE + * SRE, Tue May 18 11:36:54 1999 + * + * Defines an alignment file that's open for reading. + */ +typedef struct msafile_struct { + FILE *f; /* open file pointer */ + char *fname; /* name of file. used for diagnostic output */ + int linenumber; /* what line are we on in the file */ + + char *buf; /* buffer for line input w/ sre_fgets() */ + int buflen; /* current allocated length for buf */ + + SSIFILE *ssi; /* open SSI index file; or NULL, if none. */ + + int do_gzip; /* TRUE if f is a pipe from gzip -dc (need pclose(f)) */ + int do_stdin; /* TRUE if f is stdin (don't close f, not our problem) */ + int format; /* format of alignment file we're reading */ +} MSAFILE; + + +/* Alignment file formats. + * Must coexist with sqio.c/squid.h unaligned file format codes. + * Rules: + * - 0 is an unknown/unassigned format + * - <100 reserved for unaligned formats + * - >100 reserved for aligned formats + */ +#define MSAFILE_UNKNOWN 0 /* unknown format */ +#define MSAFILE_STOCKHOLM 101 /* Pfam/HMMER's Stockholm format */ +#define MSAFILE_SELEX 102 /* Obsolete(!): old HMMER/SELEX format */ +#define MSAFILE_MSF 103 /* GCG MSF format */ +#define MSAFILE_CLUSTAL 104 /* Clustal V/W format */ +#define MSAFILE_A2M 105 /* aligned FASTA (A2M is UCSC terminology) */ +#define MSAFILE_PHYLIP 106 /* Felsenstein's PHYLIP format */ +#define MSAFILE_EPS 107 /* Encapsulated PostScript (output only) */ + +#define IsAlignmentFormat(fmt) ((fmt) > 100) + + +/* from msa.c + */ +extern MSAFILE *MSAFileOpen(char *filename, int format, char *env); +extern MSA *MSAFileRead(MSAFILE *afp); +extern void MSAFileClose(MSAFILE *afp); +extern void MSAFree(MSA *msa); +extern void MSAFileWrite(FILE *fp, MSA *msa, int outfmt, int do_oneline); + +extern int MSAFileRewind(MSAFILE *afp); +extern int MSAFilePositionByKey(MSAFILE *afp, char *key); +extern int MSAFilePositionByIndex(MSAFILE *afp, int idx); + +extern int MSAFileFormat(MSAFILE *afp); +extern MSA *MSAAlloc(int nseq, int alen); +extern void MSAExpand(MSA *msa); +extern char *MSAFileGetLine(MSAFILE *afp); +extern void MSASetSeqAccession(MSA *msa, int seqidx, char *acc); +extern void MSASetSeqDescription(MSA *msa, int seqidx, char *desc); +extern void MSAAddComment(MSA *msa, char *s); +extern void MSAAddGF(MSA *msa, char *tag, char *value); +extern void MSAAddGS(MSA *msa, char *tag, int seqidx, char *value); +extern void MSAAppendGC(MSA *msa, char *tag, char *value); +extern char *MSAGetGC(MSA *msa, char *tag); +extern void MSAAppendGR(MSA *msa, char *tag, int seqidx, char *value); +extern void MSAVerifyParse(MSA *msa); +extern int MSAGetSeqidx(MSA *msa, char *name, int guess); + +extern MSA *MSAFromAINFO(char **aseq, AINFO *ainfo); + +extern void MSAMingap(MSA *msa); +extern void MSANogap(MSA *msa); +extern void MSAShorterAlignment(MSA *msa, int *useme); +extern void MSASmallerAlignment(MSA *msa, int *useme, MSA **ret_new); + +extern char *MSAGetSeqAccession(MSA *msa, int idx); +extern char *MSAGetSeqDescription(MSA *msa, int idx); +extern char *MSAGetSeqSS(MSA *msa, int idx); +extern char *MSAGetSeqSA(MSA *msa, int idx); + +/* from a2m.c + */ +extern MSA *ReadA2M(MSAFILE *afp); +extern void WriteA2M(FILE *fp, MSA *msa); + +/* from clustal.c + */ +extern MSA *ReadClustal(MSAFILE *afp); +extern void WriteClustal(FILE *fp, MSA *msa); + +/* from eps.c + */ +extern void EPSWriteSmallMSA(FILE *fp, MSA *msa); + +/* from msf.c + */ +extern MSA *ReadMSF(MSAFILE *afp); +extern void WriteMSF(FILE *fp, MSA *msa); + +/* from phylip.c + */ +extern MSA *ReadPhylip(MSAFILE *afp); +extern void WritePhylip(FILE *fp, MSA *msa); + +/* from selex.c + */ +extern MSA *ReadSELEX(MSAFILE *afp); +extern void WriteSELEX(FILE *fp, MSA *msa); + +/* from stockholm.c + */ +extern MSA *ReadStockholm(MSAFILE *afp); +extern void WriteStockholm(FILE *fp, MSA *msa); +extern void WriteStockholmOneBlock(FILE *fp, MSA *msa); + +#endif /*SQUID_MSA_INCLUDED*/ diff --git a/forester/archive/RIO/others/hmmer/squid/msf.c b/forester/archive/RIO/others/hmmer/squid/msf.c new file mode 100644 index 0000000..ffbfa14 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/msf.c @@ -0,0 +1,389 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* msf.c + * SRE, Sun Jul 11 16:17:32 1993 + * + * Import/export of GCG MSF multiple sequence alignment + * formatted files. Designed using format specifications + * kindly provided by Steve Smith of Genetics Computer Group. + * + * RCS $Id: msf.c,v 1.1.1.1 2005/03/22 08:34:20 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#include +#include "squid.h" +#include "msa.h" + +#ifdef TESTDRIVE_MSF +/***************************************************************** + * msf.c test driver: + * 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 + * + */ +int +main(int argc, char **argv) +{ + MSAFILE *afp; + MSA *msa; + char *file; + + file = argv[1]; + + if ((afp = MSAFileOpen(file, MSAFILE_STOCKHOLM, NULL)) == NULL) + Die("Couldn't open %s\n", file); + + while ((msa = ReadMSF(afp)) != NULL) + { + WriteMSF(stdout, msa); + MSAFree(msa); + } + + MSAFileClose(afp); + exit(0); +} +/******************************************************************/ +#endif /* testdrive_msf */ + + + +/* Function: ReadMSF() + * Date: SRE, Tue Jun 1 08:07:22 1999 [St. Louis] + * + * Purpose: Parse an alignment read from an open MSF format + * alignment file. (MSF 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() + * NULL if no more alignments + * + * Diagnostics: + * Will Die() here with a (potentially) useful message + * if a parsing error occurs. + */ +MSA * +ReadMSF(MSAFILE *afp) +{ + MSA *msa; + char *s; + int alleged_alen; + int alleged_type; + int alleged_checksum; + char *tok; + char *sp; + int slen; + int sqidx; + char *name; + char *seq; + + if (feof(afp->f)) return NULL; + if ((s = MSAFileGetLine(afp)) == NULL) return NULL; + + /* The first line is the header. + * This is a new-ish GCG feature. Don't count on it, so + * we can be a bit more tolerant towards non-GCG software + * generating "MSF" files. + */ + msa = MSAAlloc(10, 0); + if (strncmp(s, "!!AA_MULTIPLE_ALIGNMENT", 23) == 0) { + msa->type = kAmino; + if ((s = MSAFileGetLine(afp)) == NULL) return NULL; + } else if (strncmp(s, "!!NA_MULTIPLE_ALIGNMENT", 23) == 0) { + msa->type = kRNA; + if ((s = MSAFileGetLine(afp)) == NULL) return NULL; + } + + /* Now we're in the free text comment section of the MSF file. + * It ends when we see the "MSF: Type: Check: .." line. + * This line must be present. + */ + do + { + if ((strstr(s, "..") != NULL && strstr(s, "MSF:") != NULL) && + Strparse("^.+MSF: +([0-9]+) +Type: +([PNX]).+Check: +([0-9]+) +\\.\\.", s, 3)) + { + alleged_alen = atoi(sqd_parse[0]); + switch (*(sqd_parse[1])) { + case 'N' : alleged_type = kRNA; break; + case 'P' : alleged_type = kAmino; break; + case 'X' : alleged_type = kOtherSeq; break; + default : alleged_type = kOtherSeq; + } + alleged_checksum = atoi(sqd_parse[3]); + if (msa->type == kOtherSeq) msa->type = alleged_type; + break; /* we're done with comment section. */ + } + if (! IsBlankline(s)) + MSAAddComment(msa, s); + } while ((s = MSAFileGetLine(afp)) != NULL); + + /* Now we're in the name section. + * GCG has a relatively poorly documented feature: only sequences that + * appear in this list will be read from the alignment section. Commenting + * out sequences in the name list (by preceding them with "!") is + * allowed as a means of manually defining subsets of sequences in + * the alignment section. We can support this feature reasonably + * easily because of the hash table for names in the MSA: we + * only add names to the hash table when we see 'em in the name section. + */ + while ((s = MSAFileGetLine(afp)) != NULL) + { + while ((*s == ' ' || *s == '\t') && *s) s++; /* skip leading whitespace */ + + if (*s == '\n') continue; /* skip blank lines */ + else if (*s == '!') MSAAddComment(msa, s); + else if ((sp = strstr(s, "Name:")) != NULL) + { + /* We take the name and the weigh, and that's it */ + sp += 5; + tok = sre_strtok(&sp, " \t", &slen); /* */ + sqidx = GKIStoreKey(msa->index, tok); + if (sqidx >= msa->nseqalloc) MSAExpand(msa); + msa->sqname[sqidx] = sre_strdup(tok, slen); + msa->nseq++; + + if ((sp = strstr(sp, "Weight:")) == NULL) + Die("No Weight: on line %d for %s in name section of MSF file %s\n", + afp->linenumber, msa->sqname[sqidx], afp->fname); + sp += 7; + tok = sre_strtok(&sp, " \t", &slen); + msa->wgt[sqidx] = atof(tok); + msa->flags |= MSA_SET_WGT; + } + else if (strncmp(s, "//", 2) == 0) + break; + else + { + Die("Invalid line (probably %d) in name section of MSF file %s:\n%s\n", + afp->linenumber, afp->fname, s); + squid_errno = SQERR_FORMAT; /* NOT THREADSAFE */ + return NULL; + } + + } + + /* And now we're in the sequence section. + * As discussed above, if we haven't seen a sequence name, then we + * don't include the sequence in the alignment. + * Also, watch out for coordinate-only lines. + */ + while ((s = MSAFileGetLine(afp)) != NULL) + { + sp = s; + if ((name = sre_strtok(&sp, " \t", NULL)) == NULL) continue; + if ((seq = sre_strtok(&sp, "\n", &slen)) == NULL) continue; + + /* The test for a coord line: digits starting both fields + */ + if (isdigit(*name) && isdigit(*seq)) + continue; + + /* It's not blank, and it's not a coord line: must be sequence + */ + sqidx = GKIKeyIndex(msa->index, name); + if (sqidx < 0) continue; /* not a sequence we recognize */ + + msa->sqlen[sqidx] = sre_strcat(&(msa->aseq[sqidx]), msa->sqlen[sqidx], seq, slen); + } + + /* We've left blanks in the aseqs; take them back out. + */ + for (sqidx = 0; sqidx < msa->nseq; sqidx++) + { + if (msa->aseq[sqidx] == NULL) + Die("Didn't find a sequence for %s in MSF file %s\n", msa->sqname[sqidx], afp->fname); + + for (s = sp = msa->aseq[sqidx]; *s != '\0'; s++) + { + if (*s == ' ' || *s == '\t') { + msa->sqlen[sqidx]--; + } else { + *sp = *s; + sp++; + } + } + *sp = '\0'; + } + + MSAVerifyParse(msa); /* verifies, and also sets alen and wgt. */ + return msa; +} + + +/* Function: WriteMSF() + * Date: SRE, Mon May 31 11:25:18 1999 [St. Louis] + * + * Purpose: Write an alignment in MSF format to an open file. + * + * Args: fp - file that's open for writing. + * msa - alignment to write. + * + * Note that msa->type, usually optional, must be + * set for WriteMSF to work. If it isn't, a fatal + * error is generated. + * + * Returns: (void) + */ +void +WriteMSF(FILE *fp, MSA *msa) +{ + time_t now; /* current time as a time_t */ + char date[64]; /* today's date in GCG's format "October 3, 1996 15:57" */ + char **gcg_aseq; /* aligned sequences with gaps converted to GCG format */ + char **gcg_sqname; /* sequence names with GCG-valid character sets */ + int idx; /* counter for sequences */ + char *s; /* pointer into sqname or seq */ + int len; /* tmp variable for name lengths */ + int namelen; /* maximum name length used */ + int pos; /* position counter */ + char buffer[51]; /* buffer for writing seq */ + int i; /* another position counter */ + + /***************************************************************** + * Make copies of sequence names and sequences. + * GCG recommends that name characters should only contain + * alphanumeric characters, -, or _ + * Some GCG and GCG-compatible software is sensitive to this. + * We silently convert all other characters to '_'. + * + * For sequences, GCG allows only ~ and . for gaps. + * Otherwise, everthing is interpreted as a residue; + * so squid's IUPAC-restricted chars are fine. ~ means + * an external gap. . means an internal gap. + *****************************************************************/ + + /* make copies that we can edit */ + gcg_aseq = MallocOrDie(sizeof(char *) * msa->nseq); + gcg_sqname = MallocOrDie(sizeof(char *) * msa->nseq); + for (idx = 0; idx < msa->nseq; idx++) + { + gcg_aseq[idx] = sre_strdup(msa->aseq[idx], msa->alen); + gcg_sqname[idx] = sre_strdup(msa->sqname[idx], -1); + } + /* alter names as needed */ + for (idx = 0; idx < msa->nseq; idx++) + for (s = gcg_sqname[idx]; *s != '\0'; s++) + if (! isalnum((int) *s) && *s != '-' && *s != '_') + *s = '_'; + /* alter gap chars in seq */ + for (idx = 0; idx < msa->nseq; idx++) + { + for (s = gcg_aseq[idx]; *s != '\0' && isgap(*s); s++) + *s = '~'; + for (; *s != '\0'; s++) + if (isgap(*s)) *s = '.'; + for (pos = msa->alen-1; pos > 0 && isgap(gcg_aseq[idx][pos]); pos--) + gcg_aseq[idx][pos] = '~'; + } + /* calculate max namelen used */ + namelen = 0; + for (idx = 0; idx < msa->nseq; idx++) + if ((len = strlen(msa->sqname[idx])) > namelen) + namelen = len; + + /***************************************************** + * Write the MSF header + *****************************************************/ + /* required file type line */ + if (msa->type == kOtherSeq) + msa->type = GuessAlignmentSeqtype(msa->aseq, msa->nseq); + + if (msa->type == kRNA) fprintf(fp, "!!NA_MULTIPLE_ALIGNMENT 1.0\n"); + else if (msa->type == kDNA) fprintf(fp, "!!NA_MULTIPLE_ALIGNMENT 1.0\n"); + else if (msa->type == kAmino) fprintf(fp, "!!AA_MULTIPLE_ALIGNMENT 1.0\n"); + else if (msa->type == kOtherSeq) + Die("WriteMSF(): couldn't guess whether that alignment is RNA or protein.\n"); + else + Die("Invalid sequence type %d in WriteMSF()\n", msa->type); + + /* free text comments */ + if (msa->ncomment > 0) + { + for (idx = 0; idx < msa->ncomment; idx++) + fprintf(fp, "%s\n", msa->comment[idx]); + fprintf(fp, "\n"); + } + /* required checksum line */ + now = time(NULL); + if (strftime(date, 64, "%B %d, %Y %H:%M", localtime(&now)) == 0) + Die("What time is it on earth? strftime() failed in WriteMSF().\n"); + fprintf(fp, " %s MSF: %d Type: %c %s Check: %d ..\n", + msa->name != NULL ? msa->name : "squid.msf", + msa->alen, + msa->type == kRNA ? 'N' : 'P', + date, + GCGMultchecksum(gcg_aseq, msa->nseq)); + fprintf(fp, "\n"); + + /***************************************************** + * Names/weights section + *****************************************************/ + + for (idx = 0; idx < msa->nseq; idx++) + { + fprintf(fp, " Name: %-*.*s Len: %5d Check: %4d Weight: %.2f\n", + namelen, namelen, + gcg_sqname[idx], + msa->alen, + GCGchecksum(gcg_aseq[idx], msa->alen), + msa->wgt[idx]); + } + fprintf(fp, "\n"); + fprintf(fp, "//\n"); + + /***************************************************** + * Write the sequences + *****************************************************/ + + for (pos = 0; pos < msa->alen; pos += 50) + { + fprintf(fp, "\n"); /* Blank line between sequence blocks */ + + /* Coordinate line */ + len = (pos + 50) > msa->alen ? msa->alen - pos : 50; + if (len > 10) + fprintf(fp, "%*s %-6d%*s%6d\n", namelen, "", + pos+1, + len + ((len-1)/10) - 12, "", + pos + len); + else + fprintf(fp, "%*s %-6d\n", namelen, "", pos+1); + + for (idx = 0; idx < msa->nseq; idx++) + { + fprintf(fp, "%-*s ", namelen, gcg_sqname[idx]); + /* get next line's worth of 50 from seq */ + strncpy(buffer, gcg_aseq[idx] + pos, 50); + buffer[50] = '\0'; + /* draw the sequence line */ + for (i = 0; i < len; i++) + { + if (! (i % 10)) fputc(' ', fp); + fputc(buffer[i], fp); + } + fputc('\n', fp); + } + } + + Free2DArray((void **) gcg_aseq, msa->nseq); + Free2DArray((void **) gcg_sqname, msa->nseq); + return; +} + + + diff --git a/forester/archive/RIO/others/hmmer/squid/phylip.c b/forester/archive/RIO/others/hmmer/squid/phylip.c new file mode 100644 index 0000000..e2980f1 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/phylip.c @@ -0,0 +1,174 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:25 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#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; +} diff --git a/forester/archive/RIO/others/hmmer/squid/revcomp.c b/forester/archive/RIO/others/hmmer/squid/revcomp.c new file mode 100644 index 0000000..a245e2b --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/revcomp.c @@ -0,0 +1,62 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* revcomp.c + * + * Reverse complement of a IUPAC character string + * RCS $Id: revcomp.c,v 1.1.1.1 2005/03/22 08:34:16 cmzmasek Exp $ + */ + +#include +#include +#include +#include "squid.h" + + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + + +char * +revcomp(char *comp, char *seq) +{ + long bases; + char *bckp, *fwdp; + int idx; + long pos; + int c; + + if (comp == NULL) return NULL; + if (seq == NULL) return NULL; + bases = strlen(seq); + + fwdp = comp; + bckp = seq + bases -1; + for (pos = 0; pos < bases; pos++) + { + c = *bckp; + c = sre_toupper(c); + for (idx = 0; c != iupac[idx].sym && idx < IUPACSYMNUM; idx++); + if (idx == IUPACSYMNUM) + { + Warn("Can't reverse complement an %c, pal. Using N.", c); + *fwdp = 'N'; + } + else + *fwdp = iupac[idx].symcomp; + if (islower((int) *bckp)) *fwdp = (char) sre_tolower((int) *fwdp); + fwdp++; + bckp--; + } + *fwdp = '\0'; + return comp; +} + diff --git a/forester/archive/RIO/others/hmmer/squid/revcomp_main.c b/forester/archive/RIO/others/hmmer/squid/revcomp_main.c new file mode 100644 index 0000000..130bff1 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/revcomp_main.c @@ -0,0 +1,93 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* main for revcomp + * + * revcomp - generate reverse complement of sequences + * SRE, Thu Aug 5 17:36:57 1993 + * RCS $Id: revcomp_main.c,v 1.1.1.1 2005/03/22 08:34:31 cmzmasek Exp $ + */ + +#include +#include +#include "squid.h" +#include "version.h" + +#define OPTIONS "h" + +char usage[] = "Usage: revcomp [-options] \n\ + Reverse complement a nucleic acid sequence.\n\ + Available options:\n\ + -h : help; print version and usage info\n"; + +int +main(int argc, char **argv) +{ + char *seqfile; /* name of sequence file */ + SQFILE *dbfp; /* open sequence file */ + int fmt; /* format of seqfile */ + char *seq; /* sequence */ + SQINFO sqinfo; /* additional sequence info */ + char *rev; /* reverse complement */ + int swap; + + int optchar; /* option character, command line */ + extern int optind; + + /*********************************************** + * Parse command line + ***********************************************/ + + fmt = SQFILE_UNKNOWN; + + while ((optchar = getopt(argc, argv, OPTIONS)) != -1) + switch (optchar) { + case 'h': + printf("revcomp %s, %s\n%s\n", RELEASE, RELEASEDATE, usage); + exit(EXIT_SUCCESS); + default: + Die("%s\n", usage); + } + + if (argc - optind != 1) Die("%s\n", usage); + seqfile = argv[optind]; + + if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL) + Die("Failed to open sequence file %s for reading", seqfile); + + while (ReadSeq(dbfp, dbfp->format, &seq, &sqinfo)) + { + if ((rev = (char *) malloc ((sqinfo.len + 1) * sizeof(char))) == NULL) + Die("malloc failed"); + + revcomp(rev, seq); + if (sqinfo.flags & (SQINFO_START | SQINFO_STOP)) + { + swap = sqinfo.start; + sqinfo.start = sqinfo.stop; + sqinfo.stop = swap; + } + /* secondary structure of reverse strand is nonsense + */ + if (sqinfo.flags & SQINFO_SS) + { + sqinfo.flags = sqinfo.flags & ~SQINFO_SS; + free(sqinfo.ss); + } + + WriteSeq(stdout, SQFILE_FASTA, rev, &sqinfo); + + free(rev); + FreeSequence(seq, &sqinfo); + } + + SeqfileClose(dbfp); + return 0; +} diff --git a/forester/archive/RIO/others/hmmer/squid/rk.c b/forester/archive/RIO/others/hmmer/squid/rk.c new file mode 100644 index 0000000..9ae0c68 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/rk.c @@ -0,0 +1,134 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:16 cmzmasek Exp $ + */ + +#include +#include +#include +#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 diff --git a/forester/archive/RIO/others/hmmer/squid/rk.h b/forester/archive/RIO/others/hmmer/squid/rk.h new file mode 100644 index 0000000..e9ff0b2 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/rk.h @@ -0,0 +1,40 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:16 cmzmasek 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 */ diff --git a/forester/archive/RIO/others/hmmer/squid/selex.c b/forester/archive/RIO/others/hmmer/squid/selex.c new file mode 100644 index 0000000..25f63d3 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/selex.c @@ -0,0 +1,814 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* selex.c + * + * SRE, Mon Jun 14 11:08:38 1999 + * SELEX obsolete as the preferred HMMER/SQUID format + * replaced by Stockholm format + * selex support retained for backwards compatibility + * kludged to use the MSA interface + * + * SRE, Mon Jan 30 14:41:49 1995: + * #=SA side chain % surface accessibility annotation supported + * + * SRE, Tue Nov 9 17:40:50 1993: + * major revision. #= special comments and aliinfo_s optional + * alignment info support added. Support for #=CS (consensus + * secondary structure), #=SS (individual secondary structure), + * #=RF (reference coordinate system), #=SQ (per-sequence header info), + * and #=AU ("author") added. + * + * Fri Dec 4 17:43:24 1992, SRE: + * Reading and writing aligned sequences to/from disk files. + * Implements a new, broader specification of SELEX format + * and supercedes alignio.c. + * + * SELEX format is documented in Docs/formats.tex. + **************************************************************************** + * RCS $Id: selex.c,v 1.1.1.1 2005/03/22 08:34:24 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#include +#include "squid.h" +#include "msa.h" + +static int copy_alignment_line(char *aseq, int apos, int name_rcol, + char *buffer, int lcol, int rcol, char gapsym); +static void actually_write_selex(FILE *fp, MSA *msa, int cpl); + +static char commentsyms[] = "%#"; + +/* Function: ReadSELEX() + * Date: SRE, Sun Jun 6 18:24:09 1999 [St. Louis] + * + * Purpose: Parse an alignment read from an open SELEX format + * alignment file. (SELEX is a single alignment format). + * Return the alignment, or NULL if we've already read the + * alignment or there's no alignment data in the file. + * + * Limitations: SELEX is the only remaining multipass parser for + * alignment files. It cannot read from gzip or from stdin. + * It Die()'s here if you try. The reason for this + * that SELEX allows space characters as gaps, so we don't + * know the borders of an alignment block until we've seen + * the whole block. I could rewrite to allow single-pass + * parsing (by storing the whole block in memory) but + * since SELEX is now legacy, why bother. + * + * Note that the interface is totally kludged: fastest + * possible adaptation of old ReadSELEX() to the new + * MSA interface. + * + * Args: afp - open alignment file + * + * Returns: MSA * - an alignment object + * caller responsible for an MSAFree() + * NULL if no alignment data. + */ +MSA * +ReadSELEX(MSAFILE *afp) +{ + MSA *msa; /* RETURN: mult seq alignment */ + FILE *fp; /* ptr to opened seqfile */ + char **aseqs; /* aligned seqs */ + int num = 0; /* number of seqs read */ + char buffer[LINEBUFLEN]; /* input buffer for lines */ + char bufcpy[LINEBUFLEN]; /* strtok'able copy of buffer */ + struct block_struc { /** alignment data for a block: */ + int lcol; /* furthest left aligned sym */ + int rcol; /* furthest right aligned sym */ + } *blocks = NULL; + int blocknum; /* number of blocks in file */ + char *nptr; /* ptr to start of name on line */ + char *sptr; /* ptr into sequence on line */ + int currnum; /* num. seqs in given block */ + int currblock; /* index for blocks */ + int i; /* loop counter */ + int seqidx; /* counter for seqs */ + int alen; /* length of alignment */ + int warn_names; /* becomes TRUE if names don't match between blocks */ + int headnum; /* seqidx in per-sequence header info */ + int currlen; + int count; + int have_cs = 0; + int have_rf = 0; + AINFO base_ainfo, *ainfo; /* hack: used to be passed ptr to AINFO */ + + + /* Convert from MSA interface to what old ReadSELEX() did: + * - copy our open fp, rather than opening file + * - verify that we're not reading a gzip or stdin + */ + if (feof(afp->f)) return NULL; + if (afp->do_gzip || afp->do_stdin) + Die("Can't read a SELEX format alignment from a pipe, stdin, or gzip'ed file"); + fp = afp->f; + ainfo = &base_ainfo; + + /*************************************************** + * First pass across file. + * Count seqs, get names, determine column info + * Determine what sorts of info are active in this file. + ***************************************************/ + + InitAinfo(ainfo); + /* get first line of the block + * (non-comment, non-blank) */ + do + { + if (fgets(buffer, LINEBUFLEN, fp) == NULL) + { squid_errno = SQERR_NODATA; return 0; } + strcpy(bufcpy, buffer); + if (*buffer == '#') + { + if (strncmp(buffer, "#=CS", 4) == 0) have_cs = 1; + else if (strncmp(buffer, "#=RF", 4) == 0) have_rf = 1; + } + } + while ((nptr = strtok(bufcpy, WHITESPACE)) == NULL || + (strchr(commentsyms, *nptr) != NULL)); + + blocknum = 0; + warn_names = FALSE; + while (!feof(fp)) + { + /* allocate for info about this block. */ + if (blocknum == 0) + blocks = (struct block_struc *) MallocOrDie (sizeof(struct block_struc)); + else + blocks = (struct block_struc *) ReallocOrDie (blocks, (blocknum+1) * sizeof(struct block_struc)); + blocks[blocknum].lcol = LINEBUFLEN+1; + blocks[blocknum].rcol = -1; + + currnum = 0; + while (nptr != NULL) /* becomes NULL when this block ends. */ + { + /* First block only: save names */ + if (blocknum == 0) + { + if (currnum == 0) + ainfo->sqinfo = (SQINFO *) MallocOrDie (sizeof(SQINFO)); + else + ainfo->sqinfo = (SQINFO *) ReallocOrDie (ainfo->sqinfo, (currnum + 1) * sizeof(SQINFO)); + + ainfo->sqinfo[currnum].flags = 0; + SetSeqinfoString(&(ainfo->sqinfo[currnum]), nptr, SQINFO_NAME); + } + else /* in each additional block: check names */ + { + if (strcmp(ainfo->sqinfo[currnum].name, nptr) != 0) + warn_names = TRUE; + } + currnum++; + + /* check rcol, lcol */ + if ((sptr = strtok(NULL, WHITESPACE)) != NULL) + { + /* is this the furthest left we've + seen word 2 in this block? */ + if (sptr - bufcpy < blocks[blocknum].lcol) + blocks[blocknum].lcol = sptr - bufcpy; + /* look for right side in buffer */ + for (sptr = buffer + strlen(buffer) - 1; + strchr(WHITESPACE, *sptr) != NULL; + sptr --) + /* do nothing */ ; + if (sptr - buffer > blocks[blocknum].rcol) + blocks[blocknum].rcol = sptr - buffer; + } + + /* get the next line; blank line means end of block */ + do + { + if (fgets(buffer, LINEBUFLEN, fp) == NULL) + { nptr = NULL; break; } + strcpy(bufcpy, buffer); + + if (strncmp(buffer, "#=SS", 4) == 0) ainfo->sqinfo[currnum-1].flags |= SQINFO_SS; + else if (strncmp(buffer, "#=SA", 4) == 0) ainfo->sqinfo[currnum-1].flags |= SQINFO_SA; + else if (strncmp(buffer, "#=CS", 4) == 0) have_cs = 1; + else if (strncmp(buffer, "#=RF", 4) == 0) have_rf = 1; + + if ((nptr = strtok(bufcpy, WHITESPACE)) == NULL) + break; + } while (strchr(commentsyms, *nptr) != NULL); + } + + + /* check that number of sequences matches expected */ + if (blocknum == 0) + num = currnum; + else if (currnum != num) + Die("Parse error in ReadSELEX()"); + blocknum++; + + /* get first line of next block + * (non-comment, non-blank) */ + do + { + if (fgets(buffer, LINEBUFLEN, fp) == NULL) { nptr = NULL; break; } + strcpy(bufcpy, buffer); + } + while ((nptr = strtok(bufcpy, WHITESPACE)) == NULL || + (strchr(commentsyms, *nptr) != NULL)); + } + + + /*************************************************** + * Get ready for second pass: + * figure out the length of the alignment + * malloc space + * rewind the file + ***************************************************/ + + alen = 0; + for (currblock = 0; currblock < blocknum; currblock++) + alen += blocks[currblock].rcol - blocks[currblock].lcol + 1; + + rewind(fp); + + /* allocations. we can't use AllocateAlignment because of + * the way we already used ainfo->sqinfo. + */ + aseqs = (char **) MallocOrDie (num * sizeof(char *)); + if (have_cs) + ainfo->cs = (char *) MallocOrDie ((alen+1) * sizeof(char)); + if (have_rf) + ainfo->rf = (char *) MallocOrDie ((alen+1) * sizeof(char)); + + + + for (i = 0; i < num; i++) + { + aseqs[i] = (char *) MallocOrDie ((alen+1) * sizeof(char)); + if (ainfo->sqinfo[i].flags & SQINFO_SS) + ainfo->sqinfo[i].ss = (char *) MallocOrDie ((alen+1) * sizeof(char)); + if (ainfo->sqinfo[i].flags & SQINFO_SA) + ainfo->sqinfo[i].sa = (char *) MallocOrDie ((alen+1) * sizeof(char)); + } + + ainfo->alen = alen; + ainfo->nseq = num; + ainfo->wgt = (float *) MallocOrDie (sizeof(float) * num); + FSet(ainfo->wgt, num, 1.0); + + /*************************************************** + * Second pass across file. Parse header; assemble sequences + ***************************************************/ + /* We've now made a complete first pass over the file. We know how + * many blocks it contains, we know the number of seqs in the first + * block, and we know every block has the same number of blocks; + * so we can be a bit more cavalier about error-checking as we + * make the second pass. + */ + + /* Look for header + */ + headnum = 0; + for (;;) + { + if (fgets(buffer, LINEBUFLEN, fp) == NULL) + Die("Parse error in ReadSELEX()"); + strcpy(bufcpy, buffer); + if ((nptr = strtok(bufcpy, WHITESPACE)) == NULL) continue; /* skip blank lines */ + + if (strcmp(nptr, "#=AU") == 0 && (sptr = strtok(NULL, "\n")) != NULL) + ainfo->au = Strdup(sptr); + else if (strcmp(nptr, "#=ID") == 0 && (sptr = strtok(NULL, "\n")) != NULL) + ainfo->name = Strdup(sptr); + else if (strcmp(nptr, "#=AC") == 0 && (sptr = strtok(NULL, "\n")) != NULL) + ainfo->acc = Strdup(sptr); + else if (strcmp(nptr, "#=DE") == 0 && (sptr = strtok(NULL, "\n")) != NULL) + ainfo->desc = Strdup(sptr); + else if (strcmp(nptr, "#=GA") == 0) + { + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=GA line in ReadSELEX()"); + ainfo->ga1 = atof(sptr); + + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=GA line in ReadSELEX()"); + ainfo->ga2 = atof(sptr); + + ainfo->flags |= AINFO_GA; + } + else if (strcmp(nptr, "#=TC") == 0) + { + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=TC line in ReadSELEX()"); + ainfo->tc1 = atof(sptr); + + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=TC line in ReadSELEX()"); + ainfo->tc2 = atof(sptr); + + ainfo->flags |= AINFO_TC; + } + else if (strcmp(nptr, "#=NC") == 0) + { + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=NC line in ReadSELEX()"); + ainfo->nc1 = atof(sptr); + + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=NC line in ReadSELEX()"); + ainfo->nc2 = atof(sptr); + + ainfo->flags |= AINFO_NC; + } + else if (strcmp(nptr, "#=SQ") == 0) /* per-sequence header info */ + { + /* first field is the name */ + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=SQ line in ReadSELEX()"); + if (strcmp(sptr, ainfo->sqinfo[headnum].name) != 0) warn_names = TRUE; + + /* second field is the weight */ + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=SQ line in ReadSELEX()"); + if (!IsReal(sptr)) + Die("Parse error in #=SQ line in ReadSELEX(): weight is not a number"); + ainfo->wgt[headnum] = atof(sptr); + + /* third field is database source id */ + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=SQ line in ReadSELEX(): incomplete line"); + SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_ID); + + /* fourth field is database accession number */ + if ((sptr = strtok(NULL, WHITESPACE)) == NULL) + Die("Parse error in #=SQ line in ReadSELEX(): incomplete line"); + SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_ACC); + + /* fifth field is start..stop::olen */ + if ((sptr = strtok(NULL, ".:")) == NULL) + Die("Parse error in #=SQ line in ReadSELEX(): incomplete line"); + SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_START); + + if ((sptr = strtok(NULL, ".:")) == NULL) + Die("Parse error in #=SQ line in ReadSELEX(): incomplete line"); + SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_STOP); + + if ((sptr = strtok(NULL, ":\t ")) == NULL) + Die("Parse error in #=SQ line in ReadSELEX(): incomplete line"); + SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_OLEN); + + /* rest of line is optional description */ + if ((sptr = strtok(NULL, "\n")) != NULL) + SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_DESC); + + headnum++; + } + else if (strcmp(nptr, "#=CS") == 0) break; + else if (strcmp(nptr, "#=RF") == 0) break; + else if (strchr(commentsyms, *nptr) == NULL) break; /* non-comment, non-header */ + } + + + currlen = 0; + for (currblock = 0 ; currblock < blocknum; currblock++) + { + /* parse the block */ + seqidx = 0; + while (nptr != NULL) + { + /* Consensus structure */ + if (strcmp(nptr, "#=CS") == 0) + { + if (! copy_alignment_line(ainfo->cs, currlen, strlen(nptr)-1, + buffer, blocks[currblock].lcol, blocks[currblock].rcol, (char) '.')) + Die("Parse error in #=CS line in ReadSELEX()"); + } + + /* Reference coordinates */ + else if (strcmp(nptr, "#=RF") == 0) + { + if (! copy_alignment_line(ainfo->rf, currlen, strlen(nptr)-1, + buffer, blocks[currblock].lcol, blocks[currblock].rcol, (char) '.')) + Die("Parse error in #=RF line in ReadSELEX()"); + } + /* Individual secondary structure */ + else if (strcmp(nptr, "#=SS") == 0) + { + if (! copy_alignment_line(ainfo->sqinfo[seqidx-1].ss, currlen, strlen(nptr)-1, + buffer, blocks[currblock].lcol, + blocks[currblock].rcol, (char) '.')) + Die("Parse error in #=SS line in ReadSELEX()"); + } + + /* Side chain % surface accessibility code */ + else if (strcmp(nptr, "#=SA") == 0) + { + if (! copy_alignment_line(ainfo->sqinfo[seqidx-1].sa, currlen, strlen(nptr)-1, + buffer, blocks[currblock].lcol, + blocks[currblock].rcol, (char) '.')) + Die("Parse error in #=SA line in ReadSELEX()"); + } + /* Aligned sequence; avoid unparsed machine comments */ + else if (strncmp(nptr, "#=", 2) != 0) + { + if (! copy_alignment_line(aseqs[seqidx], currlen, strlen(nptr)-1, + buffer, blocks[currblock].lcol, blocks[currblock].rcol, (char) '.')) + Die("Parse error in alignment line in ReadSELEX()"); + seqidx++; + } + + /* get next line */ + for (;;) + { + nptr = NULL; + if (fgets(buffer, LINEBUFLEN, fp) == NULL) break; /* EOF */ + strcpy(bufcpy, buffer); + if ((nptr = strtok(bufcpy, WHITESPACE)) == NULL) break; /* blank */ + if (strncmp(buffer, "#=", 2) == 0) break; /* machine comment */ + if (strchr(commentsyms, *nptr) == NULL) break; /* data */ + } + } /* end of a block */ + + currlen += blocks[currblock].rcol - blocks[currblock].lcol + 1; + + /* get line 1 of next block */ + for (;;) + { + if (fgets(buffer, LINEBUFLEN, fp) == NULL) break; /* no data */ + strcpy(bufcpy, buffer); + if ((nptr = strtok(bufcpy, WHITESPACE)) == NULL) continue; /* blank */ + if (strncmp(buffer, "#=", 2) == 0) break; /* machine comment */ + if (strchr(commentsyms, *nptr) == NULL) break; /* non-comment */ + } + } /* end of the file */ + + /* Lengths in sqinfo are for raw sequence (ungapped), + * and SS, SA are 0..rlen-1 not 0..alen-1. + * Only the seqs with structures come out of here with lengths set. + */ + for (seqidx = 0; seqidx < num; seqidx++) + { + int apos, rpos; + /* secondary structures */ + if (ainfo->sqinfo[seqidx].flags & SQINFO_SS) + { + for (apos = rpos = 0; apos < alen; apos++) + if (! isgap(aseqs[seqidx][apos])) + { + ainfo->sqinfo[seqidx].ss[rpos] = ainfo->sqinfo[seqidx].ss[apos]; + rpos++; + } + ainfo->sqinfo[seqidx].ss[rpos] = '\0'; + } + /* Surface accessibility */ + if (ainfo->sqinfo[seqidx].flags & SQINFO_SA) + { + for (apos = rpos = 0; apos < alen; apos++) + if (! isgap(aseqs[seqidx][apos])) + { + ainfo->sqinfo[seqidx].sa[rpos] = ainfo->sqinfo[seqidx].sa[apos]; + rpos++; + } + ainfo->sqinfo[seqidx].sa[rpos] = '\0'; + } + } + + /* NULL-terminate all the strings */ + if (ainfo->rf != NULL) ainfo->rf[alen] = '\0'; + if (ainfo->cs != NULL) ainfo->cs[alen] = '\0'; + for (seqidx = 0; seqidx < num; seqidx++) + aseqs[seqidx][alen] = '\0'; + + /* find raw sequence lengths for sqinfo */ + for (seqidx = 0; seqidx < num; seqidx++) + { + count = 0; + for (sptr = aseqs[seqidx]; *sptr != '\0'; sptr++) + if (!isgap(*sptr)) count++; + ainfo->sqinfo[seqidx].len = count; + ainfo->sqinfo[seqidx].flags |= SQINFO_LEN; + } + + + /*************************************************** + * Garbage collection and return + ***************************************************/ + free(blocks); + if (warn_names) + Warn("sequences may be in different orders in blocks of %s?", afp->fname); + + /* Convert back to MSA structure. (Wasteful kludge.) + */ + msa = MSAFromAINFO(aseqs, ainfo); + MSAVerifyParse(msa); + FreeAlignment(aseqs, ainfo); + return msa; +} + + +/* Function: WriteSELEX() + * Date: SRE, Mon Jun 14 13:13:14 1999 [St. Louis] + * + * Purpose: Write a SELEX file in multiblock format. + * + * Args: fp - file that's open for writing + * msa - multiple sequence alignment object + * + * Returns: (void) + */ +void +WriteSELEX(FILE *fp, MSA *msa) +{ + actually_write_selex(fp, msa, 50); /* 50 char per block */ +} + +/* Function: WriteSELEXOneBlock() + * Date: SRE, Mon Jun 14 13:14:56 1999 [St. Louis] + * + * Purpose: Write a SELEX alignment file in Pfam's single-block + * format style. A wrapper for actually_write_selex(). + * + * Args: fp - file that's open for writing + * msa- alignment to write + * + * Returns: (void) + */ +void +WriteSELEXOneBlock(FILE *fp, MSA *msa) +{ + actually_write_selex(fp, msa, msa->alen); /* one big block */ +} + + +/* Function: actually_write_selex() + * Date: SRE, Mon Jun 14 12:54:46 1999 [St. Louis] + * + * Purpose: Write an alignment in SELEX format to an open + * file. This is the function that actually does + * the work. The API's WriteSELEX() and + * WriteSELEXOneBlock() are wrappers. + * + * Args: fp - file that's open for writing + * msa - alignment to write + * cpl - characters to write per line in alignment block + * + * Returns: (void) + */ +static void +actually_write_selex(FILE *fp, MSA *msa, int cpl) +{ + int i; + int len = 0; + int namewidth; + char *buf; + int currpos; + + buf = malloc(sizeof(char) * (cpl+101)); /* 100 chars allowed for name, etc. */ + + /* Figure out how much space we need for name + markup + * to keep the alignment in register, for easier human viewing -- + * even though Stockholm format doesn't care about visual + * alignment. + */ + namewidth = 0; + for (i = 0; i < msa->nseq; i++) + if ((len = strlen(msa->sqname[i])) > namewidth) + namewidth = len; + if (namewidth < 6) namewidth = 6; /* minimum space for markup tags */ + + /* Free text comments + */ + for (i = 0; i < msa->ncomment; i++) + fprintf(fp, "# %s\n", msa->comment[i]); + if (msa->ncomment > 0) fprintf(fp, "\n"); + + /* Per-file annotation + */ + if (msa->name != NULL) fprintf(fp, "#=ID %s\n", msa->name); + if (msa->acc != NULL) fprintf(fp, "#=AC %s\n", msa->acc); + if (msa->desc != NULL) fprintf(fp, "#=DE %s\n", msa->desc); + if (msa->au != NULL) fprintf(fp, "#=AU %s\n", msa->au); + if (msa->flags & MSA_SET_GA) fprintf(fp, "#=GA %.1f %.1f\n", msa->ga1, msa->ga2); + if (msa->flags & MSA_SET_NC) fprintf(fp, "#=NC %.1f %.1f\n", msa->nc1, msa->nc2); + if (msa->flags & MSA_SET_TC) fprintf(fp, "#=TC %.1f %.1f\n", msa->tc1, msa->tc2); + + /* Per-sequence annotation + */ + for (i = 0; i < msa->nseq; i++) + fprintf(fp, "#=SQ %-*.*s %6.4f %s %s %d..%d::%d %s\n", + namewidth, namewidth, msa->sqname[i], + msa->wgt[i], + "-", /* MSA has no ID field */ + (msa->sqacc != NULL && msa->sqacc[i] != NULL) ? msa->sqacc[i] : "-", + 0, 0, 0, /* MSA has no start, stop, olen field */ + (msa->sqdesc != NULL && msa->sqdesc[i] != NULL) ? msa->sqdesc[i] : "-"); + fprintf(fp, "\n"); + + /* Alignment section: + */ + for (currpos = 0; currpos < msa->alen; currpos += cpl) + { + if (currpos > 0) fprintf(fp, "\n"); + + if (msa->ss_cons != NULL) { + strncpy(buf, msa->ss_cons + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "%-*.*s %s\n", namewidth, namewidth, "#=CS", buf); + } + if (msa->rf != NULL) { + strncpy(buf, msa->rf + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "%-*.*s %s\n", namewidth, namewidth, "#=RF", buf); + } + for (i = 0; i < msa->nseq; i++) + { + strncpy(buf, msa->aseq[i] + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "%-*.*s %s\n", namewidth, namewidth, msa->sqname[i], buf); + + if (msa->ss != NULL && msa->ss[i] != NULL) { + strncpy(buf, msa->ss[i] + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "%-*.*s %s\n", namewidth, namewidth, "#=SS", buf); + } + if (msa->sa != NULL && msa->sa[i] != NULL) { + strncpy(buf, msa->sa[i] + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "%-*.*s %s\n", namewidth, namewidth, "#=SA", buf); + } + } + } + free(buf); +} + + +/* Function: copy_alignment_line() + * + * Purpose: Given a line from an alignment file, and bounds lcol,rcol + * on what part of it may be sequence, save the alignment into + * aseq starting at position apos. + * + * name_rcol is set to the rightmost column this aseqs's name + * occupies; if name_rcol >= lcol, we have a special case in + * which the name intrudes into the sequence zone. + */ +static int +copy_alignment_line(char *aseq, int apos, int name_rcol, + char *buffer, int lcol, int rcol, char gapsym) +{ + char *s1, *s2; + int i; + + s1 = aseq + apos; + s2 = buffer; /* be careful that buffer doesn't end before lcol! */ + for (i = 0; i < lcol; i++) + if (*s2) s2++; + + for (i = lcol; i <= rcol; i++) + { + if (*s2 == '\t') { + Warn("TAB characters will corrupt a SELEX alignment! Please remove them first."); + return 0; + } + if (name_rcol >= i) /* name intrusion special case: pad left w/ gaps */ + *s1 = gapsym; + /* short buffer special case: pad right w/ gaps */ + else if (*s2 == '\0' || *s2 == '\n') + *s1 = gapsym; + + else if (*s2 == ' ') /* new: disallow spaces as gap symbols */ + *s1 = gapsym; + + else /* normal case: copy buffer into aseq */ + *s1 = *s2; + + s1++; + if (*s2) s2++; + } + return 1; +} + + + + + +/* Function: DealignAseqs() + * + * Given an array of (num) aligned sequences aseqs, + * strip the gaps. Store the raw sequences in a new allocated array. + * + * Caller is responsible for free'ing the memory allocated to + * rseqs. + * + * Returns 1 on success. Returns 0 and sets squid_errno on + * failure. + */ +int +DealignAseqs(char **aseqs, int num, char ***ret_rseqs) +{ + char **rseqs; /* de-aligned sequence array */ + int idx; /* counter for sequences */ + int depos; /* position counter for dealigned seq*/ + int apos; /* position counter for aligned seq */ + int seqlen; /* length of aligned seq */ + + /* alloc space */ + rseqs = (char **) MallocOrDie (num * sizeof(char *)); + /* main loop */ + for (idx = 0; idx < num; idx++) + { + seqlen = strlen(aseqs[idx]); + /* alloc space */ + rseqs[idx] = (char *) MallocOrDie ((seqlen + 1) * sizeof(char)); + + /* strip gaps */ + depos = 0; + for (apos = 0; aseqs[idx][apos] != '\0'; apos++) + if (!isgap(aseqs[idx][apos])) + { + rseqs[idx][depos] = aseqs[idx][apos]; + depos++; + } + rseqs[idx][depos] = '\0'; + } + *ret_rseqs = rseqs; + return 1; +} + + +/* Function: IsSELEXFormat() + * + * Return TRUE if filename may be in SELEX format. + * + * Accuracy is sacrificed for speed; a TRUE return does + * *not* guarantee that the file will pass the stricter + * error-checking of ReadSELEX(). All it checks is that + * the first 500 non-comment lines of a file are + * blank, or if there's a second "word" on the line + * it looks like sequence (i.e., it's not kOtherSeq). + * + * Returns TRUE or FALSE. + */ +int +IsSELEXFormat(char *filename) +{ + FILE *fp; /* ptr to open sequence file */ + char buffer[LINEBUFLEN]; + char *sptr; /* ptr to first word */ + int linenum; + + + if ((fp = fopen(filename, "r")) == NULL) + { squid_errno = SQERR_NOFILE; return 0; } + + linenum = 0; + while (linenum < 500 && + fgets(buffer, LINEBUFLEN, fp) != NULL) + { + linenum++; + /* dead giveaways for extended SELEX */ + if (strncmp(buffer, "#=AU", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=ID", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=AC", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=DE", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=GA", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=TC", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=NC", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=SQ", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=SS", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=CS", 4) == 0) goto DONE; + else if (strncmp(buffer, "#=RF", 4) == 0) goto DONE; + + /* a comment? */ + if (strchr(commentsyms, *buffer) != NULL) continue; + + /* a blank line? */ + if ((sptr = strtok(buffer, WHITESPACE)) == NULL) continue; + + /* a one-word line (name only) + is possible, though rare */ + if ((sptr = strtok(NULL, "\n")) == NULL) continue; + + if (Seqtype(sptr) == kOtherSeq) {fclose(fp); return 0;} + } + + DONE: + fclose(fp); + return 1; +} + + + + + + + + diff --git a/forester/archive/RIO/others/hmmer/squid/seqencode.c b/forester/archive/RIO/others/hmmer/squid/seqencode.c new file mode 100644 index 0000000..6cdc265 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/seqencode.c @@ -0,0 +1,177 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* seqencode.c + * + * Routines for creating and manipulating encoded sequence strings. + * RCS $Id: seqencode.c,v 1.1.1.1 2005/03/22 08:34:29 cmzmasek Exp $ + */ +#include +#include +#include +#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; +} + diff --git a/forester/archive/RIO/others/hmmer/squid/seqsplit_main.c b/forester/archive/RIO/others/hmmer/squid/seqsplit_main.c new file mode 100644 index 0000000..a38f6fd --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/seqsplit_main.c @@ -0,0 +1,163 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + + +/* seqsplit_main.c + * SRE, Mon Sep 25 11:43:58 2000 + * + * Split sequences into smaller chunks of defined size and overlap; + * output a FASTA file. + * + * Limitations: + * still working in 32 bits -- no sequence can be more than 2 GB + * in size. + * CVS $Id: seqsplit_main.c,v 1.1.1.1 2005/03/22 08:34:26 cmzmasek Exp $ + */ + +#include +#include +#include "squid.h" +#include "msa.h" + +static char banner[] = "seqsplit - split seqs into chunks of defined size and overlap"; + +static char usage[] = "\ +Usage: seqsplit [-options] \n\ + Available options:\n\ + -h : help; display usage and version\n\ + -o : output the new FASTA file to \n\ +"; + +static char experts[] = "\ + --informat : specify sequence file format \n\ + --length : set max length of each unique seq frag to \n\ + --overlap : set overlap length to (total frag size = length+overlap)\n\ +"; + +struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-o", TRUE, sqdARG_STRING }, + { "--informat", FALSE, sqdARG_STRING }, + { "--length", FALSE, sqdARG_INT }, + { "--overlap", FALSE, sqdARG_INT }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + + +int +main(int argc, char **argv) +{ + char *seqfile; /* name of sequence file */ + char *outfile; /* name of output file */ + SQFILE *dbfp; /* open sequence file */ + FILE *ofp; /* open output file */ + int fmt; /* format of seqfile */ + char *seq; /* sequence */ + SQINFO sqinfo; /* extra info about sequence */ + char *seqfrag; /* space for a seq fragment */ + int fraglength; /* length of unique seq per frag */ + int overlap; /* length of overlap. frags are fraglength+overlap*/ + char seqname[256]; /* renamed fragment, w/ coord info */ + int num; /* number of this fragment */ + int pos; /* position in a sequence */ + int len; /* length of a fragment */ + char *desc; + + int nseqs; /* total number of sequences */ + int nsplit; /* number of seqs that get split */ + int nnewfrags; /* total number of new fragments */ + + char *optname; + char *optarg; + int optind; + + /*********************************************** + * Parse command line + ***********************************************/ + + fmt = SQFILE_UNKNOWN; /* default: autodetect */ + fraglength = 100000; + overlap = 1000; + outfile = NULL; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-o") == 0) outfile = optarg; + else if (strcmp(optname, "--length") == 0) fraglength = atoi(optarg); + else if (strcmp(optname, "--overlap") == 0) overlap = atoi(optarg); + else if (strcmp(optname, "--informat") == 0) { + fmt = String2SeqfileFormat(optarg); + if (fmt == SQFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc - optind != 1) Die("%s\n", usage); + seqfile = argv[argc-1]; + + seqfrag = MallocOrDie(sizeof(char) * (fraglength+overlap)); + seqfrag[fraglength+overlap] = '\0'; + + /*********************************************** + * Read the file. + ***********************************************/ + + if (outfile == NULL) ofp = stdout; + else { + if ((ofp = fopen(outfile, "w")) == NULL) + Die("Failed to open output sequence file %s for writing", outfile); + } + + if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL) + Die("Failed to open sequence file %s for reading", seqfile); + + nseqs = nsplit = nnewfrags = 0; + while (ReadSeq(dbfp, dbfp->format, &seq, &sqinfo)) + { + nseqs++; + if (sqinfo.flags & SQINFO_DESC) desc = sqinfo.desc; + else desc = NULL; + + if (sqinfo.len <= fraglength+overlap) { + WriteSimpleFASTA(ofp, seq, sqinfo.name, desc); + continue; + } + + num = 1; + nsplit++; + for (pos = 0; pos < sqinfo.len; pos += fraglength) + { + if (sqinfo.len - pos <= overlap) continue; + strncpy(seqfrag, seq+pos, fraglength+overlap); + len = strlen(seqfrag); + sprintf(seqname, "%s/frag%d/%d-%d", + sqinfo.name, num, pos+1, pos+len); + WriteSimpleFASTA(ofp, seqfrag, seqname, desc); + nnewfrags++; + num ++; + } + FreeSequence(seq, &sqinfo); + } + SeqfileClose(dbfp); + if (outfile != NULL) fclose(ofp); + + printf("Total # of seqs: %d\n", nseqs); + printf("Affected by splitting: %d\n", nsplit); + printf("New # of seqs: %d\n", nseqs-nsplit + nnewfrags); + + return 0; +} diff --git a/forester/archive/RIO/others/hmmer/squid/seqstat_main.c b/forester/archive/RIO/others/hmmer/squid/seqstat_main.c new file mode 100644 index 0000000..01fe620 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/seqstat_main.c @@ -0,0 +1,229 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* seqstat_main.c + * Wed Aug 10 15:47:14 1994 + * + * Look at a sequence file, determine some simple statistics. + * CVS $Id: seqstat_main.c,v 1.1.1.1 2005/03/22 08:34:29 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#include "squid.h" +#include "msa.h" + +static char banner[] = "seqstat - show some simple statistics on a sequence file"; + +static char usage[] = "\ +Usage: seqstat [-options] \n\ + Available options:\n\ + -a : report per-sequence info, not just a summary\n\ + -h : help; display usage and version\n\ +"; + +static char experts[] = "\ + --gccomp : with -a, include GC composition in report (DNA/RNA only)\n\ + --informat : specify sequence file format \n\ + --quiet : suppress verbose header (used in regression testing)\n\ +"; + +struct opt_s OPTIONS[] = { + { "-a", TRUE, sqdARG_NONE }, + { "-h", TRUE, sqdARG_NONE }, + { "--gccomp", FALSE, sqdARG_NONE }, + { "--informat", FALSE, sqdARG_STRING }, + { "--quiet", FALSE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +static float gc_composition(char *seq); + +int +main(int argc, char **argv) +{ + char *seqfile; /* name of sequence file */ + SQFILE *dbfp; /* open sequence file */ + int fmt; /* format of seqfile */ + char *seq; /* sequence */ + SQINFO sqinfo; /* extra info about sequence */ + int nseqs; + long long small; /* smallest length */ + long long large; /* largest length */ + long long total; /* total length */ + int type; /* kAmino, kDNA, kRNA, or kOtherSeq */ + + int allreport; /* TRUE to do a short table for each sequence */ + int be_quiet; /* TRUE to suppress header */ + int do_gccomp; /* TRUE to include GC composition in per-seq report */ + float gc; /* fractional gc composition, 0..1 */ + + char *optname; + char *optarg; + int optind; + + /*********************************************** + * Parse command line + ***********************************************/ + + fmt = SQFILE_UNKNOWN; /* default: autodetect format */ + allreport = FALSE; /* default: file summary only */ + be_quiet = FALSE; /* show header info by default */ + type = kOtherSeq; /* just to silence gcc uninit warning */ + do_gccomp = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-a") == 0) allreport = TRUE; + else if (strcmp(optname, "--quiet") == 0) be_quiet = TRUE; + else if (strcmp(optname, "--gccomp") == 0) do_gccomp = TRUE; + + else if (strcmp(optname, "--informat") == 0) { + fmt = String2SeqfileFormat(optarg); + if (fmt == SQFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc - optind != 1) Die("%s\n", usage); + seqfile = argv[argc-1]; + + if (! be_quiet) Banner(stdout, banner); + + /*********************************************** + * Read the file. + ***********************************************/ + + if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL) + Die("Failed to open sequence file %s for reading", seqfile); + + if (allreport) { + printf(" %-15s %-5s %s%s\n", " NAME", "LEN", + do_gccomp? " f_GC " : "", + "DESCRIPTION"); + printf(" --------------- ----- %s-----------\n", + do_gccomp ? "----- " : ""); + } + + nseqs = 0; + small = -1; + large = -1; + total = 0L; + while (ReadSeq(dbfp, dbfp->format, &seq, &sqinfo)) + { + if (nseqs == 0) type = Seqtype(seq); + if (do_gccomp) gc = gc_composition(seq); + + if (allreport) { + if (do_gccomp) { + printf("* %-15s %5d %.3f %-50.50s\n", sqinfo.name, sqinfo.len, + gc, + sqinfo.flags & SQINFO_DESC ? sqinfo.desc : ""); + } else { + printf("* %-15s %5d %-50.50s\n", sqinfo.name, sqinfo.len, + sqinfo.flags & SQINFO_DESC ? sqinfo.desc : ""); + } + } + + if (small == -1 || sqinfo.len < small) small = (long long) sqinfo.len; + if (large == -1 || sqinfo.len > large) large = (long long) sqinfo.len; + total += (long long) sqinfo.len; + nseqs++; + FreeSequence(seq, &sqinfo); + } + if (allreport) puts(""); + + printf("Format: %s\n", SeqfileFormat2String(dbfp->format)); + printf("Type (of 1st seq): "); + switch (type) + { + case kDNA: puts("DNA"); break; + case kRNA: puts("RNA"); break; + case kAmino: puts("Protein"); break; + case kOtherSeq: puts("Unknown"); break; + default: Die("oops."); + } + printf("Number of sequences: %d\n", nseqs); + printf("Total # residues: %lld\n", total); + printf("Smallest: %lld\n", small); + printf("Largest: %lld\n", large); + printf("Average length: %.1f\n", (float) total / (float) nseqs); + + SeqfileClose(dbfp); + + return 0; +} + + +/* Function: gc_composition() + * Date: SRE, Mon Apr 23 10:01:48 2001 [St. Louis] + * + * Purpose: Calculate the fractional GC composition of + * an input RNA or DNA sequence. Deals appropriately + * with IUPAC degeneracy. Case-insensitive. + * Ignores gap symbols. Other unexpected characters + * make it die with an error (protein, for instance). + * + * Args: seq - the DNA or RNA sequence + * + * Returns: fractional GC composition, 0-1 + */ +static float +gc_composition(char *seq) +{ + int c; + float total; + float gc; + + gc = total = 0.; + for (; *seq != '\0'; seq++) + { + if (isgap(c)) continue; + + c = toupper((int) *seq); + total += 1.0; + + switch (c) { + case 'C': + case 'G': + case 'S': gc += 1.0; break; + + case 'A': + case 'T': + case 'U': + case 'W': gc += 0.0; break; + + case 'N': + case 'R': + case 'Y': + case 'M': + case 'K': gc += 0.5; break; + + case 'H': + case 'D': gc += 0.3333; break; + + case 'B': + case 'V': gc += 0.6667; break; + + default: + Die("unrecognized nucleic acid character %c in sequence", c); + } + } + return (gc/total); +} diff --git a/forester/archive/RIO/others/hmmer/squid/sfetch_main.c b/forester/archive/RIO/others/hmmer/squid/sfetch_main.c new file mode 100644 index 0000000..8cb6aa4 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sfetch_main.c @@ -0,0 +1,444 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* sfetch_main.c, Fri Dec 25 14:22:17 1992, SRE + * + * sfetch -- a program to extract subsequences from a sequence database + * Renamed from "getseq" SRE, Tue Jan 19 10:47:42 1999 (GCG clash) + * + * CVS $Id: sfetch_main.c,v 1.1.1.1 2005/03/22 08:34:20 cmzmasek Exp $ + */ + +#include +#include +#include "squid.h" +#include "msa.h" +#include "ssi.h" + +static char banner[] = "sfetch - retrieve a specified sequence from a file"; + +static char usage[] = "\ +Usage: sfetch [-options] \n\ + or: sfetch [-options] .\n\ + (The second version fetches the first seq in the file.)\n\ + Get a sequence from a database.\n\ + Available options:\n\ + -a : name is an accession number, not a key\n\ + -d : get sequence from \n\ + -D : instead, get sequence from main database\n\ + -h : help; print version and usage info\n\ + -r : rename the fragment \n\ + -f : from which residue (1..N)\n\ + -t : to which residue (1..N)\n\ + -o : direct output to \n\ + -F : use output format of ; see below for\n\ + list. Default is original format of database.\n\ +\n\ + Available output formats include:\n\ + fasta\n\ + genbank\n\ + embl\n\ + gcg\n\ + pir\n\ + raw\n\n\ + Available databases are: (if $env variables are set correctly)\n\ + -Dsw $SWDIR SwissProt\n\ + -Dpir $PIRDIR PIR\n\ + -Dem $EMBLDIR EMBL\n\ + -Dgb $GBDIR GenBank\n\ + -Dwp $WORMDIR WormPep\n\ + -Dowl $OWLDIR OWL\n"; + +static char experts[] = "\ + --informat : specify input sequence file format \n\ +"; + +struct opt_s OPTIONS[] = { + { "-a", TRUE, sqdARG_NONE }, + { "-d", TRUE, sqdARG_STRING }, + { "-f", TRUE, sqdARG_INT }, + { "-h", TRUE, sqdARG_NONE }, + { "-o", TRUE, sqdARG_STRING }, + { "-r", TRUE, sqdARG_STRING }, + { "-t", TRUE, sqdARG_INT }, + { "-D", TRUE, sqdARG_STRING }, + { "-F", TRUE, sqdARG_STRING }, + { "--informat", FALSE, sqdARG_STRING }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +/* dbenv maps command line database selection to an environment + * variable, from which the database directory is obtained. + */ +struct dbenv_s { + char *dbname; /* name of database, as used on command line */ + char *ssiname; /* name of GSI index file to look for */ + char *envname; /* environment var to get directory path from*/ + char *entryend; /* string signifying end of entry */ + int addend; /* TRUE if entryend line is part of entry */ +} dbenv[] = +{ + { "sw", "swiss.ssi", "SWDIR", "//", TRUE}, + { "pir", "pir.ssi", "PIRDIR", "///", TRUE}, + { "em", "embl.ssi", "EMBLDIR", "//", TRUE}, + { "gb", "genbank.ssi","GBDIR", "//", TRUE}, + { "wp", "wormpep.ssi","WORMDIR", ">", FALSE}, + { "owl", "owl.ssi", "OWLDIR", ">", FALSE}, /* use FASTA OWL version */ +}; +#define NUMDBS (sizeof(dbenv) / sizeof(struct dbenv_s)) + +int +main(int argc, char **argv) +{ + char *dbname; /* master database to search */ + char *seqfile; /* name of sequence file to read */ + char *ssifile; /* name of SSI index file (if one exists) */ + SQFILE *seqfp; /* pointer to open sequence file */ + char *getname; /* name of sequence to get from */ + int from; /* starting residue, 1..N */ + int to; /* ending residue, 1..N */ + char *outfile; /* name of file to put output to */ + FILE *outfp; /* file pointer to put output to */ + int format; /* format of seqfile */ + int outfmt; /* output format */ + char *seq; /* current working sequence */ + SQINFO sqinfo; + char *frag; /* extracted subsequence */ + int source_start; /* start of seq on original source 1..N */ + int source_stop; /* end of seq on original source 1..N */ + int source_orient; /* sign of parent: -1 revcomp, +1 normal*/ + char *ss; /* secondary structure representation */ + + SSIFILE *ssi; /* open SSI index file */ + SSIOFFSET ssi_offset; /* disk offset for locating sequence */ + int used_ssi; /* TRUE if SSI file was used (don't scan) */ + int status; /* status returned by an SSI call */ + + char *rename; /* new name to give fragment */ + int reverse_complement; /* do we have to reverse complement? */ + int getall; + int getfirst; /* TRUE to extract from the first seq, w/o looking at name */ + char *outformat; /* output format string */ + int by_accession; /* TRUE if name is accession number not key */ + + int dbidx; + + char *optname; + char *optarg; + int optind; + + /*********************************************** + * Parse the command line + ***********************************************/ + + /* initializations and defaults */ + format = SQFILE_UNKNOWN; /* autodetect default, overridden by --informat or SSI files */ + reverse_complement = 0; + getall = TRUE; + getfirst= FALSE; + dbname = NULL; + dbidx = -1; + seqfile = NULL; + from = -1; + to = -1; /* flag that says do the whole thing */ + outfile = NULL; + getname = NULL; + rename = NULL; + outformat = NULL; + by_accession = FALSE; + used_ssi = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-a") == 0) { by_accession = TRUE; } + else if (strcmp(optname, "-d") == 0) { seqfile = optarg; } + else if (strcmp(optname, "-f") == 0) { + from = atoi(optarg); getall = FALSE; + } + else if (strcmp(optname, "-t") == 0) { + to = atoi(optarg); getall = FALSE; + } + else if (strcmp(optname, "-r") == 0) { rename = optarg; } + else if (strcmp(optname, "-o") == 0) { outfile = optarg; } + else if (strcmp(optname, "-D") == 0) { dbname = optarg; } + else if (strcmp(optname, "-F") == 0) { outformat = optarg; } + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == SQFILE_UNKNOWN) + Die("unrecognized input sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc - optind != 1) + Die("Incorrect number of command line arguments.\n%s\n", usage); + + getname = argv[optind]; + if (strcmp(getname, ".") == 0) getfirst = TRUE; + + if (getfirst && seqfile == NULL) + Die("You need to specify -d to retrieve a first sequence.\n%s", + usage); + + /*********************************************** + * Get name of file to look through, and disk offset, + * using SSI file if one exists. Three possibilities: + * 1) Look in main DB, which has SSI index in the directory + * 2) Look in a file, which has associated SSI index + * 3) Look in an unindexed file + ***********************************************/ + + if (dbname != NULL && seqfile != NULL) + Die("Can't fetch from *both* a database %s and a file %s\n%s", + dbname, seqfile, usage); + if (dbname == NULL && seqfile == NULL) + { /* try to guess SwissProt, stupidly, but usually works */ + if (strchr(getname, '_') != NULL) dbname = Strdup("sw"); + else Die("You have to specify either a database or a seqfile\n%s", usage); + } + + if (dbname != NULL) /* Main database. GSI index mandatory. */ + { + char *dbdir; + char *dbfile; + int fh; + /* find which db this is */ + for (dbidx = 0; dbidx < NUMDBS; dbidx++) + if (strcmp(dbenv[dbidx].dbname, dbname) == 0) + break; + if (dbidx == NUMDBS) + Die("No such main database %s\n%s", dbname, usage); + + /* get directory name */ + if ((dbdir = getenv(dbenv[dbidx].envname)) == NULL) + Die("Environment variable %s is not set.\n%s", + dbenv[dbidx].envname, usage); + /* open ssi file */ + ssifile = (char *) MallocOrDie + ((strlen(dbdir) + strlen(dbenv[dbidx].ssiname) + 2) * sizeof(char)); + sprintf(ssifile, "%s/%s", dbdir, dbenv[dbidx].ssiname); + if ((status = SSIOpen(ssifile, &ssi)) != 0) + Die("Failed to open SSI index file %s in directory %s\n%s", + dbenv[dbidx].ssiname, dbdir, usage); + /* get seqfile name, file format, and offset */ + if ((status = SSIGetOffsetByName(ssi, getname, &fh, &ssi_offset)) != 0) + Die("Failed to find key %s in SSI file %s", getname, ssifile); + if ((status = SSIFileInfo(ssi, fh, &dbfile, &format)) != 0) + Die("SSI error: %s", SSIErrorString(status)); + free(ssifile); + /* set up proper seqfile, with path */ + seqfile = (char *) MallocOrDie + ((strlen(dbdir) + strlen(dbfile) + 2) * sizeof(char)); + sprintf(seqfile, "%s/%s", dbdir, dbfile); + used_ssi = TRUE; + SSIClose(ssi); + } + else if (! getfirst) /* Sequence file. SSI index optional. */ + { + char *dbfile; + int fh; + + ssifile = (char *) MallocOrDie ((strlen(seqfile) + 5) * sizeof(char)); + sprintf(ssifile, "%s.ssi", seqfile); + if ((status = SSIOpen(ssifile, &ssi)) == 0) + { + SQD_DPRINTF1(("Opened SSI index %s...\n", ssifile)); + if ((status = SSIGetOffsetByName(ssi, getname, &fh, &ssi_offset)) != 0) + Die("Failed to find key %s in SSI file %s", getname, ssifile); + if ((status = SSIFileInfo(ssi, fh, &dbfile, &format)) != 0) + Die("SSI error: %s", SSIErrorString(status)); + SSIClose(ssi); + used_ssi = TRUE; + } + free(ssifile); + } + + /*********************************************** + * Open database file + ***********************************************/ + + if ((seqfp = SeqfileOpen(seqfile, format, NULL)) == NULL) + Die("Failed to open sequence database file %s\n%s\n", seqfile, usage); + if (used_ssi) + SeqfilePosition(seqfp, &ssi_offset); + + /*********************************************** + * Open output file + ***********************************************/ + + /* Determine output format. Default: use same as input. Override: -F option. + */ + outfmt = seqfp->format; + if (outformat != NULL) + { + outfmt = String2SeqfileFormat(outformat); + if (outfmt == SQFILE_UNKNOWN) + Die("Unknown output format %s\n%s", outformat, usage); + if (IsAlignmentFormat(outfmt)) + Die("Can't output a single sequence in an alignment format (%s)\n", outformat); + } + /* open output file for writing; + use stdout by default */ + if (outfile == NULL) outfp = stdout; + else if ((outfp = fopen(outfile, "w")) == NULL) + Die("cannot open %s for output\n", outfile); + + + /*********************************************** + * Main loop + ***********************************************/ + + /* If this is a simple fetch of the complete sequence + * in native format, and we've been positioned in the file + * by an SSI index file, we can just read right from the file, + * partially bypassing the ReadSeq() API, and probably + * putting our fingers a little too deep into the seqfp object. + */ + if (getall && used_ssi && outfmt == format && dbname != NULL) + { + char *buf = NULL; + int buflen = 0; + int endlen; + + if (dbidx == -1) Die("That's weird. No database index available."); + endlen = strlen(dbenv[dbidx].entryend); + fputs(seqfp->buf, outfp); /* always do first line */ + /* fputs("\n", outfp); */ /* buf has its /n */ + while (sre_fgets(&buf, &buflen, seqfp->f) != NULL) + { + if (strncmp(buf, dbenv[dbidx].entryend, endlen) == 0) + { + if (dbenv[dbidx].addend) fputs(buf, outfp); + break; + } + fputs(buf, outfp); + } + if (buf != NULL) free(buf); + } + else /* else, the hard way with ReadSeq */ + { + seq = NULL; + frag = NULL; + + while (ReadSeq(seqfp, format, &seq, &sqinfo)) + { + if (used_ssi) /* GSI file puts us right on our seq. */ + break; + else if (getfirst) /* Use the first seq in the file. */ + break; + else if (by_accession && + (sqinfo.flags & SQINFO_ACC) && + strcmp(sqinfo.acc, getname) == 0) + break; + else if (strcmp(sqinfo.name, getname) == 0) + break; + + FreeSequence(seq, &sqinfo); + seq = NULL; + } + + if (seq == NULL) + Die("failed to extract the subsequence %s\n%s", getname, usage); + + if (getall) + { + from = 1; + to = sqinfo.len; + } + else if (from == -1) from = 1; + else if (to == -1) to = sqinfo.len; + + if (to > sqinfo.len || from > sqinfo.len) + Warn("Extracting beyond the length of the sequence"); + if (to < 1 || from < 1) + Warn("Extracting beyond the beginning of the sequence"); + + /* check for reverse complement */ + if (to != -1 && from > to) + { + int swapfoo; /* temp variable for swapping coords */ + + reverse_complement = TRUE; + swapfoo = from; from = to; to = swapfoo; + } + if (to > sqinfo.len) to = sqinfo.len; + if (from < 1) from = 1; + + if ((frag = (char *) calloc (to-from+2, sizeof(char))) == NULL) + Die("memory error\n"); + + if (strncpy(frag, seq+from-1, to-from+1) == NULL) + Die("strncpy() failed\n"); + + if (sqinfo.flags & SQINFO_SS) + { + if ((ss = (char *) calloc (to-from+2, sizeof(char))) == NULL) + Die("memory error\n"); + if (strncpy(ss, sqinfo.ss+from-1, to-from+1) == NULL) + Die("strncpy() failed\n"); + free(sqinfo.ss); + sqinfo.ss = ss; + } + + if (reverse_complement) + { + char *revfrag; /* temp variable for reverse complement */ + int swapfoo; /* temp variable for swapping coords back */ + + if ((revfrag = calloc ( to-from+2, sizeof(char))) == NULL) + Die("memory failure\n"); + revcomp(revfrag, frag); + free(frag); + frag = revfrag; + swapfoo = from; from = to; to = swapfoo; + + /* reverse complement nullifies secondary structure */ + if (sqinfo.flags & SQINFO_SS) + { free(sqinfo.ss); sqinfo.flags &= ~SQINFO_SS; } + } + + if (! (sqinfo.flags & SQINFO_ID)) + SetSeqinfoString(&sqinfo, sqinfo.name, SQINFO_ID); + + if (! (sqinfo.flags & SQINFO_OLEN)) + { sqinfo.olen = sqinfo.len; sqinfo.flags |= SQINFO_OLEN; } + + sqinfo.len = (to > from) ? to-from+1 : from-to+1; + sqinfo.flags |= SQINFO_LEN; + + if (rename != NULL) + SetSeqinfoString(&sqinfo, rename, SQINFO_NAME); + + source_start = (sqinfo.flags & SQINFO_START) ? sqinfo.start : 1; + source_stop = (sqinfo.flags & SQINFO_STOP) ? sqinfo.stop : sqinfo.len; + source_orient= (source_stop > source_start) ? 1 : -1; + + sqinfo.start = source_start + (from- 1) * source_orient; + sqinfo.stop = source_start + (to - 1) * source_orient; + sqinfo.flags |= SQINFO_START | SQINFO_STOP; + + WriteSeq(outfp, outfmt, frag, &sqinfo); + free(frag); + FreeSequence(seq, &sqinfo); + } + + if (outfile != NULL) + printf("Fragment written to file %s\n", outfile); + + SeqfileClose(seqfp); + fclose(outfp); + return(0); +} diff --git a/forester/archive/RIO/others/hmmer/squid/shuffle.c b/forester/archive/RIO/others/hmmer/squid/shuffle.c new file mode 100644 index 0000000..d923a2a --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/shuffle.c @@ -0,0 +1,550 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* shuffle.c + * + * Routines for randomizing sequences. + * + * All routines are alphabet-independent (DNA, protein, RNA, whatever); + * they assume that input strings are purely alphabetical [a-zA-Z], and + * will return strings in all upper case [A-Z]. + * + * All return 1 on success, and 0 on failure; 0 status invariably + * means the input string was not alphabetical. + * + * StrShuffle() - shuffled string, preserve mono-symbol composition. + * StrDPShuffle() - shuffled string, preserve mono- and di-symbol composition. + * + * StrMarkov0() - random string, same zeroth order Markov properties. + * StrMarkov1() - random string, same first order Markov properties. + * + * StrReverse() - simple reversal of string + * StrRegionalShuffle() - mono-symbol shuffled string in regional windows + * + * There are also similar routines for shuffling alignments: + * + * AlignmentShuffle() - alignment version of StrShuffle(). + * AlignmentBootstrap() - sample with replacement; a bootstrap dataset. + * + * CVS $Id: shuffle.c,v 1.1.1.1 2005/03/22 08:34:24 cmzmasek Exp $ + */ + +#include +#include + +#include "squid.h" + +/* Function: StrShuffle() + * + * Purpose: Returns a shuffled version of s2, in s1. + * (s1 and s2 can be identical, to shuffle in place.) + * + * Args: s1 - allocated space for shuffled string. + * s2 - string to shuffle. + * + * Return: 1 on success. + */ +int +StrShuffle(char *s1, char *s2) +{ + int len; + int pos; + char c; + + if (s1 != s2) strcpy(s1, s2); + for (len = strlen(s1); len > 1; len--) + { + pos = CHOOSE(len); + c = s1[pos]; + s1[pos] = s1[len-1]; + s1[len-1] = c; + } + return 1; +} + +/* Function: StrDPShuffle() + * Date: SRE, Fri Oct 29 09:15:17 1999 [St. Louis] + * + * Purpose: Returns a shuffled version of s2, in s1. + * (s1 and s2 may be identical; i.e. a string + * may be shuffled in place.) The shuffle is a + * "doublet-preserving" (DP) shuffle. Both + * mono- and di-symbol composition are preserved. + * + * Done by searching for a random Eulerian + * walk on a directed multigraph. + * Reference: S.F. Altschul and B.W. Erickson, Mol. Biol. + * Evol. 2:526-538, 1985. Quoted bits in my comments + * are from Altschul's outline of the algorithm. + * + * Args: s1 - RETURN: the string after it's been shuffled + * (space for s1 allocated by caller) + * s2 - the string to be shuffled + * + * Returns: 0 if string can't be shuffled (it's not all [a-zA-z] + * alphabetic. + * 1 on success. + */ +int +StrDPShuffle(char *s1, char *s2) +{ + int len; + int pos; /* a position in s1 or s2 */ + int x,y; /* indices of two characters */ + char **E; /* edge lists: E[0] is the edge list from vertex A */ + int *nE; /* lengths of edge lists */ + int *iE; /* positions in edge lists */ + int n; /* tmp: remaining length of an edge list to be shuffled */ + char sf; /* last character in s2 */ + char Z[26]; /* connectivity in last edge graph Z */ + int keep_connecting; /* flag used in Z connectivity algorithm */ + int is_eulerian; /* flag used for when we've got a good Z */ + + /* First, verify that the string is entirely alphabetic. + */ + len = strlen(s2); + for (pos = 0; pos < len; pos++) + if (! isalpha(s2[pos])) return 0; + + /* "(1) Construct the doublet graph G and edge ordering E + * corresponding to S." + * + * Note that these also imply the graph G; and note, + * for any list x with nE[x] = 0, vertex x is not part + * of G. + */ + E = MallocOrDie(sizeof(char *) * 26); + nE = MallocOrDie(sizeof(int) * 26); + for (x = 0; x < 26; x++) + { + E[x] = MallocOrDie(sizeof(char) * (len-1)); + nE[x] = 0; + } + + x = toupper(s2[0]) - 'A'; + for (pos = 1; pos < len; pos++) + { + y = toupper(s2[pos]) - 'A'; + E[x][nE[x]] = y; + nE[x]++; + x = y; + } + + /* Now we have to find a random Eulerian edge ordering. + */ + sf = toupper(s2[len-1]) - 'A'; + is_eulerian = 0; + while (! is_eulerian) + { + /* "(2) For each vertex s in G except s_f, randomly select + * one edge from the s edge list of E(S) to be the + * last edge of the s list in a new edge ordering." + * + * select random edges and move them to the end of each + * edge list. + */ + for (x = 0; x < 26; x++) + { + if (nE[x] == 0 || x == sf) continue; + + pos = CHOOSE(nE[x]); + y = E[x][pos]; + E[x][pos] = E[x][nE[x]-1]; + E[x][nE[x]-1] = y; + } + + /* "(3) From this last set of edges, construct the last-edge + * graph Z and determine whether or not all of its + * vertices are connected to s_f." + * + * a probably stupid algorithm for looking at the + * connectivity in Z: iteratively sweep through the + * edges in Z, and build up an array (confusing called Z[x]) + * whose elements are 1 if x is connected to sf, else 0. + */ + for (x = 0; x < 26; x++) Z[x] = 0; + Z[(int) sf] = keep_connecting = 1; + + while (keep_connecting) { + keep_connecting = 0; + for (x = 0; x < 26; x++) + { + y = E[x][nE[x]-1]; /* xy is an edge in Z */ + if (Z[x] == 0 && Z[y] == 1) /* x is connected to sf in Z */ + { + Z[x] = 1; + keep_connecting = 1; + } + } + } + + /* if any vertex in Z is tagged with a 0, it's + * not connected to sf, and we won't have a Eulerian + * walk. + */ + is_eulerian = 1; + for (x = 0; x < 26; x++) + { + if (nE[x] == 0 || x == sf) continue; + if (Z[x] == 0) { + is_eulerian = 0; + break; + } + } + + /* "(4) If any vertex is not connected in Z to s_f, the + * new edge ordering will not be Eulerian, so return to + * (2). If all vertices are connected in Z to s_f, + * the new edge ordering will be Eulerian, so + * continue to (5)." + * + * e.g. note infinite loop while is_eulerian is FALSE. + */ + } + + /* "(5) For each vertex s in G, randomly permute the remaining + * edges of the s edge list of E(S) to generate the s + * edge list of the new edge ordering E(S')." + * + * Essentially a StrShuffle() on the remaining nE[x]-1 elements + * of each edge list; unfortunately our edge lists are arrays, + * not strings, so we can't just call out to StrShuffle(). + */ + for (x = 0; x < 26; x++) + for (n = nE[x] - 1; n > 1; n--) + { + pos = CHOOSE(n); + y = E[x][pos]; + E[x][pos] = E[x][n-1]; + E[x][n-1] = y; + } + + /* "(6) Construct sequence S', a random DP permutation of + * S, from E(S') as follows. Start at the s_1 edge list. + * At each s_i edge list, add s_i to S', delete the + * first edge s_i,s_j of the edge list, and move to + * the s_j edge list. Continue this process until + * all edge lists are exhausted." + */ + iE = MallocOrDie(sizeof(int) * 26); + for (x = 0; x < 26; x++) iE[x] = 0; + + pos = 0; + x = toupper(s2[0]) - 'A'; + while (1) + { + s1[pos++] = 'A' + x; /* add s_i to S' */ + + y = E[x][iE[x]]; + iE[x]++; /* "delete" s_i,s_j from edge list */ + + x = y; /* move to s_j edge list. */ + + if (iE[x] == nE[x]) + break; /* the edge list is exhausted. */ + } + s1[pos++] = 'A' + sf; + s1[pos] = '\0'; + + /* Reality checks. + */ + if (x != sf) Die("hey, you didn't end on s_f."); + if (pos != len) Die("hey, pos (%d) != len (%d).", pos, len); + + /* Free and return. + */ + Free2DArray((void **) E, 26); + free(nE); + free(iE); + return 1; +} + + +/* Function: StrMarkov0() + * Date: SRE, Fri Oct 29 11:08:31 1999 [St. Louis] + * + * Purpose: Returns a random string s1 with the same + * length and zero-th order Markov properties + * as s2. + * + * s1 and s2 may be identical, to randomize s2 + * in place. + * + * Args: s1 - allocated space for random string + * s2 - string to base s1's properties on. + * + * Returns: 1 on success; 0 if s2 doesn't look alphabetical. + */ +int +StrMarkov0(char *s1, char *s2) +{ + int len; + int pos; + float p[26]; /* symbol probabilities */ + + /* First, verify that the string is entirely alphabetic. + */ + len = strlen(s2); + for (pos = 0; pos < len; pos++) + if (! isalpha(s2[pos])) return 0; + + /* Collect zeroth order counts and convert to frequencies. + */ + FSet(p, 26, 0.); + for (pos = 0; pos < len; pos++) + p[(int)(toupper(s2[pos]) - 'A')] += 1.0; + FNorm(p, 26); + + /* Generate a random string using those p's. + */ + for (pos = 0; pos < len; pos++) + s1[pos] = FChoose(p, 26) + 'A'; + s1[pos] = '\0'; + + return 1; +} + + +/* Function: StrMarkov1() + * Date: SRE, Fri Oct 29 11:22:20 1999 [St. Louis] + * + * Purpose: Returns a random string s1 with the same + * length and first order Markov properties + * as s2. + * + * s1 and s2 may be identical, to randomize s2 + * in place. + * + * Args: s1 - allocated space for random string + * s2 - string to base s1's properties on. + * + * Returns: 1 on success; 0 if s2 doesn't look alphabetical. + */ +int +StrMarkov1(char *s1, char *s2) +{ + int len; + int pos; + int x,y; + int i; /* initial symbol */ + float p[26][26]; /* symbol probabilities */ + + /* First, verify that the string is entirely alphabetic. + */ + len = strlen(s2); + for (pos = 0; pos < len; pos++) + if (! isalpha(s2[pos])) return 0; + + /* Collect first order counts and convert to frequencies. + */ + for (x = 0; x < 26; x++) FSet(p[x], 26, 0.); + + i = x = toupper(s2[0]) - 'A'; + for (pos = 1; pos < len; pos++) + { + y = toupper(s2[pos]) - 'A'; + p[x][y] += 1.0; + x = y; + } + for (x = 0; x < 26; x++) + FNorm(p[x], 26); + + /* Generate a random string using those p's. + */ + x = i; + s1[0] = x + 'A'; + for (pos = 1; pos < len; pos++) + { + y = FChoose(p[x], 26); + s1[pos] = y + 'A'; + x = y; + } + s1[pos] = '\0'; + + return 1; +} + + + +/* Function: StrReverse() + * Date: SRE, Thu Nov 20 10:54:52 1997 [St. Louis] + * + * Purpose: Returns a reversed version of s2, in s1. + * (s1 and s2 can be identical, to reverse in place) + * + * Args: s1 - allocated space for reversed string. + * s2 - string to reverse. + * + * Return: 1. + */ +int +StrReverse(char *s1, char *s2) +{ + int len; + int pos; + char c; + + if (s1 != s2) strcpy(s1, s2); + len = strlen(s1); + for (pos = 0; pos < len/2; pos++) + { /* swap ends */ + c = s1[len-pos-1]; + s1[len-pos-1] = s1[pos]; + s1[pos] = c; + } + return 1; +} + +/* Function: StrRegionalShuffle() + * Date: SRE, Thu Nov 20 11:02:34 1997 [St. Louis] + * + * Purpose: Returns a regionally shuffled version of s2, in s1. + * (s1 and s2 can be identical to regionally + * shuffle in place.) See [Pearson88]. + * + * Args: s1 - allocated space for regionally shuffled string. + * s2 - string to regionally shuffle + * w - window size (typically 10 or 20) + * + * Return: 1. + */ +int +StrRegionalShuffle(char *s1, char *s2, int w) +{ + int len; + char c; + int pos; + int i, j; + + if (s1 != s2) strcpy(s1, s2); + len = strlen(s1); + + for (i = 0; i < len; i += w) + for (j = MIN(len-1, i+w-1); j > i; j--) + { + pos = i + CHOOSE(j-i); + c = s1[pos]; + s1[pos] = s1[j]; + s1[j] = c; + } + return 1; +} + + +/* Function: AlignmentShuffle() + * Date: SRE, Sun Apr 22 18:37:15 2001 [St. Louis] + * + * Purpose: Returns a shuffled version of ali2, in ali1. + * (ali1 and ali2 can be identical, to shuffle + * in place.) The alignment columns are shuffled, + * preserving % identity within the columns. + * + * Args: ali1 - allocated space for shuffled alignment + * [0..nseq-1][0..alen-1] + * ali2 - alignment to be shuffled + * nseq - number of sequences in the alignment + * alen - length of alignment, in columns. + * + * Returns: int + */ +int +AlignmentShuffle(char **ali1, char **ali2, int nseq, int alen) +{ + int i; + int pos; + char c; + + if (ali1 != ali2) + { + for (i = 0; i < nseq; i++) strcpy(ali1[i], ali2[i]); + } + + for (i = 0; i < nseq; i++) + ali1[i][alen] = '\0'; + + for (; alen > 1; alen--) + { + pos = CHOOSE(alen); + for (i = 0; i < nseq; i++) + { + c = ali1[i][pos]; + ali1[i][pos] = ali1[i][alen-1]; + ali1[i][alen-1] = c; + } + } + + return 1; +} + +/* Function: AlignmentBootstrap() + * Date: SRE, Sun Apr 22 18:49:14 2001 [St. Louis] + * + * Purpose: Returns a bootstrapped alignment sample in ali1, + * constructed from ali2 by sampling columns with + * replacement. + * + * Unlike the other shuffling routines, ali1 and + * ali2 cannot be the same. ali2 is left unchanged. + * ali1 must be a properly allocated space for an + * alignment the same size as ali2. + * + * Args: ali1 - allocated space for bootstrapped alignment + * [0..nseq-1][0..alen-1] + * ali2 - alignment to be bootstrapped + * nseq - number of sequences in the alignment + * alen - length of alignment, in columns. + * + * Returns: 1 on success. + */ +int +AlignmentBootstrap(char **ali1, char **ali2, int nseq, int alen) +{ + int pos; + int col; + int i; + + for (pos = 0; pos < alen; pos++) + { + col = CHOOSE(alen); + for (i = 0; i < nseq; i++) + ali1[i][pos] = ali2[i][col]; + } + for (i = 0; i < nseq; i++) + ali1[i][alen] = '\0'; + + return 1; +} + + + + +#ifdef TESTDRIVER +/* + * cc -g -o testdriver -DTESTDRIVER -L. shuffle.c -lsquid -lm + */ +int +main(int argc, char **argv) +{ + char s1[100]; + char s2[100]; + + sre_srandom(42); + strcpy(s2, "GGGGGGGGGGCCCCCCCCCC"); + /* strcpy(s2, "AGACATAAAGTTCCGTACTGCCGGGAT"); + */ + StrDPShuffle(s1, s2); + printf("DPshuffle: %s\n", s1); + StrMarkov0(s1,s2); + printf("Markov 0 : %s\n", s1); + StrMarkov1(s1,s2); + printf("Markov 1 : %s\n", s1); + return 0; +} +#endif diff --git a/forester/archive/RIO/others/hmmer/squid/shuffle_main.c b/forester/archive/RIO/others/hmmer/squid/shuffle_main.c new file mode 100644 index 0000000..34be923 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/shuffle_main.c @@ -0,0 +1,281 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* main for shuffle + * + * shuffle - generate shuffled sequences + * Mon Feb 26 16:56:08 1996 + * + * CVS $Id: shuffle_main.c,v 1.1.1.1 2005/03/22 08:34:16 cmzmasek Exp $ + */ + +#include +#include +#include +#include "squid.h" + +char banner[] = "shuffle - generated shuffled (or otherwise randomized) sequence"; + +char usage[] = "\ +Usage: shuffle [-options] \n\ + Available options:\n\ + -h : help; print version and usage info\n\ + -n : make samples per input seq (default 1)\n\ + -t : truncate/delete inputs to fixed length \n\ +\n\ + Default: shuffle each input randomly, preserving mono-symbol composition.\n\ + Other choices (exclusive; can't use more than one) :\n\ + -d : shuffle but preserve both mono- and di-symbol composition\n\ + -0 : generate with same 0th order Markov properties as each input\n\ + -1 : generate with same 1st order Markov properties as each input\n\ + -l : make iid sequences of same number and length as inputs\n\ + -r : reverse inputs\n\ + -w : regionally shuffle inputs in window size \n\ + -i : make [-n] iid seqs of length [-t] of type [--dna|--amino];\n\ + when -i is set, no argument is used\n\ +"; + +char experts[] = "\ + --alignment : is an alignment; shuffle the columns\n\ + --amino : synthesize protein sequences [default] (see -i, -l)\n\ + --dna : synthesize DNA sequences (see -i, -l))\n\ + --informat : specify sequence file format \n\ + --nodesc : remove sequence description lines\n\ + --seed : set random number seed to \n\ +"; + +struct opt_s OPTIONS[] = { + { "-0", TRUE, sqdARG_NONE }, /* 0th order Markov */ + { "-1", TRUE, sqdARG_NONE }, /* 1st order Markov */ + { "-d", TRUE, sqdARG_NONE }, /* digram shuffle */ + { "-h", TRUE, sqdARG_NONE }, /* help */ + { "-i", TRUE, sqdARG_NONE }, /* make iid seq of set length */ + { "-l", TRUE, sqdARG_NONE }, /* make iid seq of same length */ + { "-n", TRUE, sqdARG_INT }, /* number of shuffles per input seq */ + { "-r", TRUE, sqdARG_NONE }, /* reverse seq rather than shuffle */ + { "-t", TRUE, sqdARG_INT }, /* truncation of inputs to fixed len */ + { "-w", TRUE, sqdARG_INT }, /* do regional shuffling */ + { "--alignment",FALSE, sqdARG_NONE }, /* input is alignment; shuff cols */ + { "--amino", FALSE, sqdARG_NONE }, /* make iid protein seqs [default]*/ + { "--dna", FALSE, sqdARG_NONE }, /* make iid DNA seqs */ + { "--informat", FALSE, sqdARG_STRING }, /* remove desc lines */ + { "--nodesc", FALSE, sqdARG_NONE }, /* remove desc lines */ + { "--seed", FALSE, sqdARG_INT }, /* set the random number seed */ +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +static void shuffle_alignment_file(char *afile, int fmt); + +int +main(int argc, char **argv) +{ + char *seqfile; /* name of sequence file */ + SQFILE *dbfp; /* open sequence file */ + int fmt; /* format of seqfile */ + char *seq; /* sequence */ + char sqname[32]; /* name of an iid sequence */ + SQINFO sqinfo; /* additional sequence info */ + char *shuff; /* shuffled sequence */ + int num; /* number to generate */ + int seed; /* random number generator seed */ + int i; + int w; /* window size for regional shuffle (or 0) */ + int truncation; /* fixed length for truncation option (or 0) */ + int no_desc; /* TRUE to remove description lines */ + enum { /* shuffling strategy */ + DO_SHUFFLE, DO_DPSHUFFLE, DO_MARKOV0, DO_MARKOV1, DO_REVERSE, DO_REGIONAL, + DO_IID_SAMELEN, DO_IID_FIXEDLEN} strategy; + int do_dna; /* TRUE to make DNA iid seqs, not protein */ + int do_alignment; /* TRUE to shuffle alignment columns */ + + char *optname; /* option name */ + char *optarg; /* option argument (or NULL) */ + int optind; /* index of next argv[] */ + + + /*********************************************** + * Parse command line + ***********************************************/ + + fmt = SQFILE_UNKNOWN; /* autodetect file format by default */ + num = 0; + seed = (int) time ((time_t *) NULL); + w = 0; + truncation = 0; + strategy = DO_SHUFFLE; + no_desc = FALSE; + do_dna = FALSE; + do_alignment = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-0") == 0) strategy = DO_MARKOV0; + else if (strcmp(optname, "-1") == 0) strategy = DO_MARKOV1; + else if (strcmp(optname, "-d") == 0) strategy = DO_DPSHUFFLE; + else if (strcmp(optname, "-n") == 0) num = atoi(optarg); + else if (strcmp(optname, "-w") == 0) {strategy = DO_REGIONAL; w = atoi(optarg); } + else if (strcmp(optname, "-i") == 0) strategy = DO_IID_FIXEDLEN; + else if (strcmp(optname, "-l") == 0) strategy = DO_IID_SAMELEN; + else if (strcmp(optname, "-r") == 0) strategy = DO_REVERSE; + else if (strcmp(optname, "-t") == 0) truncation = atoi(optarg); + + else if (strcmp(optname, "--alignment")== 0) do_alignment = TRUE; + else if (strcmp(optname, "--amino") == 0) do_dna = FALSE; + else if (strcmp(optname, "--dna") == 0) do_dna = TRUE; + else if (strcmp(optname, "--nodesc") == 0) no_desc = TRUE; + else if (strcmp(optname, "--seed") == 0) seed = atoi(optarg); + else if (strcmp(optname, "--informat") == 0) { + fmt = String2SeqfileFormat(optarg); + if (fmt == SQFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + /***************************************************************** + * Special case, 1: IID sequence generation. + * -i option is special, because it synthesizes, rather than + * shuffles. Doesn't take a seqfile argument; + * requires -n, -t; and doesn't use the same code logic as the + * other shuffling strategies. Note that we misuse/overload the + * -t "truncation length" option to set our fixed length for + * generating iid sequence. + *****************************************************************/ + + if (strategy == DO_IID_FIXEDLEN) { + if (num == 0 || truncation == 0) + Die("-i (i.i.d. sequence generation) requires -n,-t to be set\n%s\n", + usage); + if (argc-optind != 0) + Die("-i (i.i.d. sequence generation) takes no seqfile argument\n%s\n", + usage); + sre_srandom(seed); + for (i = 0; i < num; i++) + { + if (do_dna) + shuff = RandomSequence(DNA_ALPHABET, dnafq, 4, truncation); + else + shuff = RandomSequence(AMINO_ALPHABET, aafq, 20, truncation); + + /* pedantic note: sqname has room for 31 char + \0, so + * there's room for 24 digits - a 32-bit integer can only run up + * to 10 digits, and a 64-bit integer to 20, so we don't worry + * about the following sprintf() overrunning its bounds. + */ + sprintf(sqname, "randseq%d", i); + WriteSimpleFASTA(stdout, shuff, sqname, NULL); + free(shuff); + } + return 0; + } + + /***************************************************************** + * Check command line + *****************************************************************/ + + if (argc - optind != 1) + Die("Incorrect number of command line arguments\n%s\n", usage); + seqfile = argv[optind]; + if (num == 0) num = 1; /* set default shuffle number per sequence */ + sre_srandom(seed); + + /***************************************************************** + * Special case, 2: Alignment shuffling + *****************************************************************/ + if (do_alignment) + { + shuffle_alignment_file(seqfile, fmt); + return 0; + } + + /***************************************************************** + * Main logic of the shuffling program: + * expect one seqfile argument + *****************************************************************/ + + if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL) + Die("Failed to open sequence file %s for reading", seqfile); + + while (ReadSeq(dbfp, dbfp->format, &seq, &sqinfo)) + { + shuff = (char *) MallocOrDie ((sqinfo.len + 1) * sizeof(char)); + + if (no_desc) strcpy(sqinfo.desc, ""); + + /* If we're truncating seq, do it now. + */ + if (truncation > 0) + { + int start; + if (sqinfo.len < truncation) { + free(shuff); + FreeSequence(seq, &sqinfo); + continue; + } + + start = CHOOSE(sqinfo.len - truncation + 1); + strncpy(shuff, seq+start, truncation); + shuff[truncation] = '\0'; + strcpy(seq, shuff); + sqinfo.len = truncation; + } + + for (i = 0; i < num; i++) + { + switch (strategy) { + case DO_SHUFFLE: StrShuffle(shuff, seq); break; + case DO_DPSHUFFLE: StrDPShuffle(shuff, seq); break; + case DO_MARKOV0: StrMarkov0(shuff, seq); break; + case DO_MARKOV1: StrMarkov1(shuff, seq); break; + case DO_REVERSE: StrReverse(shuff, seq); break; + case DO_REGIONAL: StrRegionalShuffle(shuff, seq, w); break; + case DO_IID_SAMELEN: + free(shuff); + shuff = RandomSequence(AMINO_ALPHABET, aafq, 20, sqinfo.len); + break; + default: Die("choked on a bad enum; tragic."); + } + + WriteSeq(stdout, SQFILE_FASTA, shuff, &sqinfo); + } + + if (shuff != NULL) free(shuff); + FreeSequence(seq, &sqinfo); + } + + SeqfileClose(dbfp); + return 0; +} + + +static void +shuffle_alignment_file(char *afile, int fmt) +{ + MSAFILE *afp; + MSA *msa; + + if ((afp = MSAFileOpen(afile, fmt, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", afile); + while ((msa = MSAFileRead(afp)) != NULL) + { + /* shuffle in place */ + AlignmentShuffle(msa->aseq, msa->aseq, msa->nseq, msa->alen); + /* write in same format we read in */ + MSAFileWrite(stdout, msa, afp->format, FALSE); + MSAFree(msa); + } + MSAFileClose(afp); +} diff --git a/forester/archive/RIO/others/hmmer/squid/sindex_main.c b/forester/archive/RIO/others/hmmer/squid/sindex_main.c new file mode 100644 index 0000000..ad2faca --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sindex_main.c @@ -0,0 +1,185 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* sindex_main.c, SRE, Fri Feb 16 08:38:39 2001 [St. Louis] + * + * sindex -- create SSI index of sequence file(s) for sfetch + * + * CVS $Id: sindex_main.c,v 1.1.1.1 2005/03/22 08:34:31 cmzmasek Exp $ + */ + +#include +#include "squid.h" +#include "msa.h" +#include "ssi.h" + +static char banner[] = "sindex - create SSI index of sequence file(s) for sfetch"; + +static char usage[] = "\ +Usage: sindex [-options] ...\n\ + Available options:\n\ + -h : help; print version and usage info.\n\ + -o : output the SSI index to file named \n\ +"; + +static char experts[] = "\ + --informat : specify input sequence file format \n\ +"; + +struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-o", TRUE, sqdARG_STRING }, + { "--64", FALSE< sqdARG_NONE }, + { "--informat", FALSE, sqdARG_STRING }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *file; /* name of a sequence file */ + SQFILE *sfp; /* open sequence file */ + int format; /* forced sequence file format, if any */ + int mode; /* SSI_OFFSET_I32 or SSI_OFFSET_I64 */ + int idx; /* counter over files */ + int status; /* return status from an SSI call */ + SSIINDEX *ssi; /* the index we're creating */ + char *ssifile; /* file name for the SSI index */ + int fh; /* handle on current file */ + char *seq; /* a sequence read from the file */ + SQINFO sqinfo; /* info on the sequence */ + + char *optname; + char *optarg; + int optind; + + /*********************************************** + * Parse the command line + ***********************************************/ + + /* initializations and defaults */ + format = SQFILE_UNKNOWN; /* autodetecting format is the default */ + mode = SSI_OFFSET_I32; /* default = 32 bit mode */ + ssifile = NULL; /* default: set SSI file name as .ssi */ + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "--64") == 0) mode = SSI_OFFSET_I64; + else if (strcmp(optname, "-o") == 0) ssifile = sre_strdup(optarg, -1); + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == SQFILE_UNKNOWN) + Die("unrecognized input sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc - optind < 1) + Die("Incorrect number of command line arguments.\n%s\n", usage); + + + /***************************************************************** + * Get set up... + *****************************************************************/ + + /* Determine whether we'll index in 32-bit or 64-bit mode. + * 32-bit is default, but 64-bit trumps; if any file needs 64-bit, + * we index them all that way. + */ + for (idx = optind; idx < argc; idx++) + { + file = argv[idx]; + if ((status = SSIRecommendMode(file)) == -1) + Die("Couldn't stat %s - file doesn't exist, or is too big", file); + if (status == SSI_OFFSET_I64) mode = SSI_OFFSET_I64; + } + + if (ssifile == NULL) { + ssifile = sre_strdup(file, -1); + sre_strcat(&ssifile, -1, ".ssi", -1); + } + + if ((ssi = SSICreateIndex(mode)) == NULL) + Die("Couldn't allocate/initialize the new SSI index\n"); + + /***************************************************************** + * Go through the files one at a time and compile index. + *****************************************************************/ + + for (idx = optind; idx < argc; idx++) + { + file = argv[idx]; + printf("Working on file %s... \t", file); + fflush(stdout); + + if ((sfp = SeqfileOpenForIndexing(file, format, NULL, mode)) == NULL) + Die("Failed to open sequence file %s for reading", file); + + if ((status = SSIAddFileToIndex(ssi, file, sfp->format, &fh)) != 0) + Die("SSI error: %s\n", SSIErrorString(status)); + + while (ReadSeq(sfp, sfp->format, &seq, &sqinfo)) { + if ((status = SSIAddPrimaryKeyToIndex(ssi, sqinfo.name, fh, + &(sfp->r_off), &(sfp->d_off), + sqinfo.len)) != 0) + Die("SSI error: %s\n", SSIErrorString(status)); + +#if DEBUGLEVEL >= 2 + if (mode == SSI_OFFSET_I32) + SQD_DPRINTF2(("Added primary key %s: r_off=%d, d_off=%d len=%d\n", + sqinfo.name, sfp->r_off.off.i32, + sfp->d_off.off.i32, sqinfo.len)); + else + SQD_DPRINTF2(("Added primary key %s: r_off=%lld, d_off=%lld len=%d\n", + sqinfo.name, sfp->r_off.off.i64, sfp->d_off.off.i64, + sqinfo.len)); +#endif + + if (sqinfo.flags & SQINFO_ACC) { + if ((status = SSIAddSecondaryKeyToIndex(ssi, sqinfo.acc, sqinfo.name)) != 0) + Die("SSI error: %s\n", SSIErrorString(status)); + } + + FreeSequence(seq, &sqinfo); + } + if (sfp->bpl > 0 && sfp->rpl > 0) { + if ((status = SSISetFileForSubseq(ssi, fh, sfp->bpl, sfp->rpl)) != 0) + Die("SSI error: %s\n", SSIErrorString(status)); + printf("FAST_SUBSEQ set...\t"); + } + + SeqfileClose(sfp); + printf("[done]\n"); + } + + printf("Sorting and writing index to SSI file %s...\t", ssifile); + fflush(stdout); + if ((status = SSIWriteIndex(ssifile, ssi)) != 0) + Die("SSIWriteIndex() failed: %s", SSIErrorString(status)); + printf("[done]\n"); + + printf("%s:\n", ssifile); + printf("Mode: %s\n", + mode == SSI_OFFSET_I32 ? "32-bit" : "64-bit"); + printf("Files: %d\n", ssi->nfiles); + printf("Primary keys: %d\n", ssi->nprimary); + printf("Secondary keys: %d\n", ssi->nsecondary); + + SSIFreeIndex(ssi); + + free(ssifile); + return 0; +} diff --git a/forester/archive/RIO/others/hmmer/squid/sqerror.c b/forester/archive/RIO/others/hmmer/squid/sqerror.c new file mode 100644 index 0000000..ee6a32e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sqerror.c @@ -0,0 +1,95 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* sqerror.c + * + * error handling for the squid library + * RCS $Id: sqerror.c,v 1.1.1.1 2005/03/22 08:34:26 cmzmasek Exp $ + */ + + /* a global errno equivalent */ +int squid_errno; + +#include +#include +#include + +#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 +Warn(char *format, ...) +{ + 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); +} + diff --git a/forester/archive/RIO/others/hmmer/squid/sqfuncs.h b/forester/archive/RIO/others/hmmer/squid/sqfuncs.h new file mode 100644 index 0000000..4b5ef3c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sqfuncs.h @@ -0,0 +1,293 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +#ifndef SQFUNCSH_INCLUDED +#define SQFUNCSH_INCLUDED +/* sqfuncs.h + * + * Prototypes for squid library functions; + * also makes a good reference list for what the package contains. + * + * Warning: squid is a slowly evolving beast. Some functions are + * obsolete. Some functions are probably just wrong, dating to + * a primordial era before I knew anything about what I was doing. + * Some functions are both obsolete and wrong but still necessary + * to get legacy code to compile. + * + * RCS $Id: sqfuncs.h,v 1.1.1.1 2005/03/22 08:34:30 cmzmasek Exp $ + */ + +/* + * from aligneval.c + */ +extern float ComparePairAlignments(char *known1, char *known2, char *calc1, char *calc2); +extern float CompareRefPairAlignments(int *ref, char *known1, char *known2, char *calc1, char *calc2); +extern float CompareMultAlignments(char **kseqs, char **tseqs, int N); +extern float CompareRefMultAlignments(int *ref, char **kseqs, char **tseqs, int N); +extern float PairwiseIdentity(char *s1, char *s2); +extern float AlignmentIdentityBySampling(char **aseq, int L, int N, int nsample); +extern char *MajorityRuleConsensus(char **aseq, int nseq, int alen); + +/* + * from alignio.c + */ +extern void AllocAlignment(int nseq, int alen, char ***ret_aseq, AINFO *ainfo); +extern void InitAinfo(AINFO *ainfo); +extern void FreeAlignment(char **aseqs, AINFO *ainfo); +extern void SAMizeAlignment(char **aseq, int nseq, int alen); +extern void SAMizeAlignmentByGapFrac(char **aseq, int nseq, int alen, float maxgap); +extern int MakeAlignedString(char *aseq, int alen, char *ss, char **ret_s); +extern int MakeDealignedString(char *aseq, int alen, char *ss, char **ret_s); +extern int DealignedLength(char *aseq); +extern int WritePairwiseAlignment(FILE *ofp, char *aseq1, char *name1, int spos1, + char *aseq2, char *name2, int spos2, + int **pam, int indent); +extern int MingapAlignment(char **aseqs, AINFO *ainfo); +extern int RandomAlignment(char **rseqs, SQINFO *sqinfo, int nseq, float pop, float pex, + char ***ret_aseqs, AINFO *ainfo); +extern void AlignmentHomogenousGapsym(char **aseq, int nseq, int alen, char gapsym); + +/* from cluster.c + */ +extern int Cluster(float **mx, int N, enum clust_strategy mode, struct phylo_s **ret_tree); +extern struct phylo_s *AllocPhylo(int N); +extern void FreePhylo(struct phylo_s *tree, int N); +extern void MakeDiffMx(char **aseqs, int num, float ***ret_dmx); +extern void MakeIdentityMx(char **aseqs, int num, float ***ret_imx); +extern void PrintNewHampshireTree(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N); +extern void PrintPhylo(FILE *fp, AINFO *ainfo, struct phylo_s *tree, int N); + +/* + * from dayhoff.c + */ +extern int ParsePAMFile(FILE *fp, int ***ret_pam, float *ret_scale); +extern void ScalePAM(int **pam, int scale); + + +/* from file.c + */ +extern char *FileDirname(char *filename); +extern char *FileTail(char *file, int noextension); +extern char *FileConcat(char *dir, char *file); +extern char *FileAddSuffix(char *filename, char *sfx); +extern FILE *EnvFileOpen(char *fname, char *env, char **ret_dir); +extern int FileExists(char *filename); + + +/* from getopt.c + */ +extern int Getopt(int argc, char **argv, + struct opt_s *opt, int nopts, char *usage, + int *ret_optind, char **ret_optname, char **ret_optarg); + + +/* from hsregex.c + * Henry Spencer's regex() code + */ +extern int Strparse(char *rexp, char *s, int ntok); +extern void SqdClean(void); +extern sqd_regexp *sqd_regcomp(const char *re); +extern int sqd_regexec(sqd_regexp *rp, const char *s); +extern void sqd_regsub(const sqd_regexp *rp, const char *src, char *dst); +extern void sqd_regerror(char *message); + +/* from interleaved.c + */ +extern int IsInterleavedFormat(int format); +extern int ReadInterleaved(char *seqfile, + int (*skip_header)(FILE *), + int (*parse_header)(FILE *, AINFO *), + int (*is_dataline)(char *, char *), + char ***ret_aseqs, AINFO *ainfo); +extern int ReadAlignment(char *seqfile, int format, char ***ret_aseqs, AINFO *ainfo); + + +/* from revcomp.c + */ +extern char *revcomp(char *comp, char *seq); + +/* + * from selex.c + */ +extern int DealignAseqs(char **aseqs, int num, char ***ret_rseqs); +extern int IsSELEXFormat(char *filename); +extern int TruncateNames(char **names, int N); /* OBSOLETE? */ + +/* + * from seqencode.c + */ +extern int seqcmp(char *s1, char *s2, int allow); +extern int seqncmp(char *s1, char *s2, int n, int allow); +extern int seqencode(char *codeseq,char *str); +extern int coded_revcomp(char *comp, char *seq); +extern int seqdecode(char *str, char *codeseq); +extern int seqndecode(char *str, char *codeseq, int n); + +/* + * from shuffle.c + */ +extern int StrShuffle(char *s1, char *s2); +extern int StrDPShuffle(char *s1, char *s2); +extern int StrMarkov0(char *s1, char *s2); +extern int StrMarkov1(char *s1, char *s2); +extern int StrReverse(char *s1, char *s2); +extern int StrRegionalShuffle(char *s1, char *s2, int w); +extern int AlignmentShuffle(char **ali1, char **ali2, int nseq, int alen); +extern int AlignmentBootstrap(char **ali1, char **ali2, int nseq, int alen); + +/* + * from sqerror.c + */ +extern void Die(char *format, ...); +extern void Warn(char *format, ...); +extern void Panic(char *file, int line); + + +/* + * from sqio.c + */ +extern void FreeSequence(char *seq, SQINFO *sqinfo); +extern int SetSeqinfoString(SQINFO *sqinfo, char *sptr, int flag); +extern void SeqinfoCopy(SQINFO *sq1, SQINFO *sq2); +extern void ToDNA(char *seq); +extern void ToRNA(char *seq); +extern void ToIUPAC(char *seq); +extern int ReadMultipleRseqs(char *seqfile, int fformat, char ***ret_rseqs, + SQINFO **ret_sqinfo, int *ret_num); +extern SQFILE *SeqfileOpen(char *filename, int format, char *env); +extern SQFILE *SeqfileOpenForIndexing(char *filename, int format, char *env, int ssimode); +extern int SeqfileFormat(FILE *fp); +extern void SeqfilePosition(SQFILE *sfp, SSIOFFSET *offset); +extern void SeqfileRewind(SQFILE *sfp); +extern void SeqfileClose(SQFILE *sfp); + +extern int ReadSeq(SQFILE *fp, int format, char **ret_seq, SQINFO *sqinfo); +extern int GCGBinaryToSequence(char *seq, int len); +extern int GCGchecksum(char *seq, int seqlen); +extern int GCGMultchecksum(char **seqs, int nseq); +extern void WriteSimpleFASTA(FILE *fp, char *seq, char *name, char *desc); +extern int WriteSeq(FILE *outf, int outfmt, char *seq, SQINFO *sqinfo); +extern int Seqtype(char *seq); +extern int GuessAlignmentSeqtype(char **aseq, int nseq); +extern int String2SeqfileFormat(char *s); +extern char *SeqfileFormat2String(int code); +extern SQINFO *MSAToSqinfo(MSA *msa); + +/* from squidcore.c + */ +extern void Banner(FILE *fp, char *banner); + + +/* from sre_ctype.c + */ +extern int sre_tolower(int c); +extern int sre_toupper(int c); + +/* from sre_math.c + */ +extern float ExponentialRandom(void); +extern float Gaussrandom(float mean, float stddev); +extern int Linefit(float *x, float *y, int N, + float *ret_a, float *ret_b, float *ret_r); +extern void WeightedLinefit(float *x, float *y, float *var, int N, + float *ret_m, float *ret_b); +extern double Gammln(double xx); +extern int DNorm(double *vec, int n); +extern int FNorm(float *vec, int n); +extern void DScale(double *vec, int n, double scale); +extern void FScale(float *vec, int n, float scale); +extern void DSet(double *vec, int n, double value); +extern void FSet(float *vec, int n, float value); +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 int DMax(double *vec, int n); +extern int FMax(float *vec, int n); +extern double DDot(double *vec1, double *vec2, int n); +extern float FDot(float *vec1, float *vec2, int n); +extern float **FMX2Alloc(int rows, int cols); +extern void FMX2Free(float **mx); +extern double **DMX2Alloc(int rows, int cols); +extern void DMX2Free(double **mx); +extern void FMX2Multiply(float **A, float **B, float **C, int m, int p, int n); +extern float sre_random(void); +extern void sre_srandom(int seed); +extern int DChoose(double *p, int n); +extern int FChoose(float *p, int n); +extern double DLogSum(double *logp, int n); +extern float FLogSum(float *logp, int n); +extern double IncompleteGamma(double a, double x); + +/* from sre_string.c + */ +#ifdef NOSTR +extern char *strstr(char *s, char *subs); +#endif +extern char *Strdup(char *s); +extern void StringChop(char *s); +extern int Strinsert(char *s1, char c, int pos); +extern int Strdelete(char *s1, int pos); +extern void s2lower(char *s); +extern void s2upper(char *s); +extern void *sre_malloc(char *file, int line, size_t size); +extern void *sre_realloc(char *file, int line, void *p, size_t size); +extern void Free2DArray(void **p, int dim1); +extern void Free3DArray(void ***p, int dim1, int dim2); +extern char *RandomSequence(char *alphabet, float *p, int n, int len); +extern char *sre_fgets(char **buf, int *n, FILE *fp); +extern int sre_strcat(char **dest, int ldest, char *src, int lsrc); +extern char *sre_strtok(char **s, char *delim, int *len); +extern char *sre_strdup(char *s, int n); +extern char *sre_strncat(char *s1, char *s2, int n); +extern int IsBlankline(char *s); + +/* from stack.c + */ +extern struct intstack_s *InitIntStack(void); +extern void PushIntStack(struct intstack_s *stack, int data); +extern int PopIntStack(struct intstack_s *stack, int *ret_data); +extern void ReverseIntStack(struct intstack_s *stack); +extern int FreeIntStack( struct intstack_s *stack ); + +/* + * from translate.c + */ +extern char *Translate(char *seq, char **code); + +/* + * from types.c + */ +extern int IsInt(char *s); +extern int IsReal(char *s); +extern void Byteswap(char *swap, int nbytes); +#ifndef USE_HOST_BYTESWAP_FUNCTIONS +extern sqd_uint16 sre_ntoh16(sqd_uint16 netshort); +extern sqd_uint32 sre_ntoh32(sqd_uint32 netlong); +extern sqd_uint16 sre_hton16(sqd_uint16 hostshort); +extern sqd_uint32 sre_hton32(sqd_uint32 hostlong); +#endif /*!USE_HOST_BYTESWAP_FUNCTIONS*/ +extern sqd_uint64 sre_ntoh64(sqd_uint64 net_int64); +extern sqd_uint64 sre_hton64(sqd_uint64 host_int64); + +/* + * from weight.c + */ +extern void GSCWeights(char **aseq, int nseq, int alen, float *wgt); +extern void VoronoiWeights(char **aseq, int nseq, int alen, float *wgt); +extern void BlosumWeights(char **aseq, int nseq, int alen, float blosumlevel, float *wgt); +extern void PositionBasedWeights(char **aseq, int nseq, int alen, float *wgt); +extern void FilterAlignment(MSA *msa, float cutoff, MSA **ret_new); +extern void SampleAlignment(MSA *msa, int sample, MSA **ret_new); +extern void SingleLinkCluster(char **aseq, int nseq, int alen, float maxid, + int **ret_c, int *ret_nc); +#endif /* SQFUNCSH_INCLUDED */ diff --git a/forester/archive/RIO/others/hmmer/squid/sqio.c b/forester/archive/RIO/others/hmmer/squid/sqio.c new file mode 100644 index 0000000..4192f59 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sqio.c @@ -0,0 +1,1901 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* File: sqio.c + * From: ureadseq.c in Don Gilbert's sequence i/o package + * + * Reads and writes nucleic/protein sequence in various + * formats. Data files may have multiple sequences. + * + * Heavily modified from READSEQ package + * Copyright (C) 1990 by D.G. Gilbert + * Biology Dept., Indiana University, Bloomington, IN 47405 + * email: gilbertd@bio.indiana.edu + * Thanks Don! + * + * SRE: Modifications as noted. Fri Jul 3 09:44:54 1992 + * Packaged for squid, Thu Oct 1 10:07:11 1992 + * ANSI conversion in full swing, Mon Jul 12 12:22:21 1993 + * + * CVS $Id: sqio.c,v 1.1.1.1 2005/03/22 08:34:29 cmzmasek Exp $ + * + ***************************************************************** + * Basic API for single sequence reading: + * + * SQFILE *sqfp; + * char *seqfile; + * int format; - see squid.h for formats; example: SQFILE_FASTA + * char *seq; + * SQINFO *sqinfo; + * + * if ((sqfp = SeqfileOpen(seqfile, format, "BLASTDB")) == NULL) + * Die("Failed to open sequence database file %s\n%s\n", seqfile, usage); + * while (ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) { + * do_stuff; + * FreeSequence(seq, &sqinfo); + * } + * SeqfileClose(sqfp); + * + ***************************************************************** + */ + +#include +#include +#include +#include + +#ifndef SEEK_SET +#include +#endif + +#include "squid.h" +#include "msa.h" +#include "ssi.h" + +static void SeqfileGetLine(SQFILE *V); + +#define kStartLength 500 + +static char *aminos = "ABCDEFGHIKLMNPQRSTVWXYZ*"; +static char *primenuc = "ACGTUN"; +static char *protonly = "EFIPQZ"; + +static SQFILE *seqfile_open(char *filename, int format, char *env, int ssimode); + +/* Function: SeqfileOpen() + * + * Purpose : Open a sequence database file and prepare for reading + * sequentially. + * + * Args: filename - name of file to open + * format - format of file + * env - environment variable for path (e.g. BLASTDB) + * ssimode - -1, SSI_OFFSET_I32, or SSI_OFFSET_I64 + * + * Returns opened SQFILE ptr, or NULL on failure. + */ +SQFILE * +SeqfileOpen(char *filename, int format, char *env) +{ + return seqfile_open(filename, format, env, -1); +} +SQFILE * +SeqfileOpenForIndexing(char *filename, int format, char *env, int ssimode) +{ + return seqfile_open(filename, format, env, ssimode); +} +static SQFILE * +seqfile_open(char *filename, int format, char *env, int ssimode) +{ + SQFILE *dbfp; + + dbfp = (SQFILE *) MallocOrDie (sizeof(SQFILE)); + + dbfp->ssimode = ssimode; + dbfp->rpl = -1; /* flag meaning "unset" */ + dbfp->lastrpl = 0; + dbfp->maxrpl = 0; + dbfp->bpl = -1; /* flag meaning "unset" */ + dbfp->lastbpl = 0; + dbfp->maxbpl = 0; + + /* Open our file handle. + * Three possibilities: + * 1. normal file open + * 2. filename = "-"; read from stdin + * 3. filename = "*.gz"; read thru pipe from gzip + * If we're reading from stdin or a pipe, we can't reliably + * back up, so we can't do two-pass parsers like the interleaved alignment + * formats. + */ + if (strcmp(filename, "-") == 0) + { + dbfp->f = stdin; + dbfp->do_stdin = TRUE; + dbfp->do_gzip = FALSE; + dbfp->fname = sre_strdup("[STDIN]", -1); + } +#ifndef SRE_STRICT_ANSI + /* popen(), pclose() aren't portable to non-POSIX systems; disable */ + else if (Strparse("^.*\\.gz$", filename, 0)) + { + char cmd[256]; + + /* Note that popen() will return "successfully" + * if file doesn't exist, because gzip works fine + * and prints an error! So we have to check for + * existence of file ourself. + */ + if (! FileExists(filename)) + Die("%s: file does not exist", filename); + + if (strlen(filename) + strlen("gzip -dc ") >= 256) + Die("filename > 255 char in SeqfileOpen()"); + sprintf(cmd, "gzip -dc %s", filename); + if ((dbfp->f = popen(cmd, "r")) == NULL) + return NULL; + + dbfp->do_stdin = FALSE; + dbfp->do_gzip = TRUE; + dbfp->fname = sre_strdup(filename, -1); + } +#endif /*SRE_STRICT_ANSI*/ + else + { + if ((dbfp->f = fopen(filename, "r")) == NULL && + (dbfp->f = EnvFileOpen(filename, env, NULL)) == NULL) + return NULL; + + dbfp->do_stdin = FALSE; + dbfp->do_gzip = FALSE; + dbfp->fname = sre_strdup(filename, -1); + } + + + /* Invoke autodetection if we haven't already been told what + * to expect. + */ + if (format == SQFILE_UNKNOWN) + { + if (dbfp->do_stdin == TRUE || dbfp->do_gzip) + Die("Can't autodetect sequence file format from a stdin or gzip pipe"); + format = SeqfileFormat(dbfp->f); + if (format == SQFILE_UNKNOWN) + Die("Can't determine format of sequence file %s", dbfp->fname); + } + + /* The hack for sequential access of an interleaved alignment file: + * read the alignment in, we'll copy sequences out one at a time. + */ + dbfp->msa = NULL; + dbfp->afp = NULL; + dbfp->format = format; + dbfp->linenumber = 0; + dbfp->buf = NULL; + dbfp->buflen = 0; + if (IsAlignmentFormat(format)) + { + /* We'll be reading from the MSA interface. Copy our data + * to the MSA afp's structure. + */ + dbfp->afp = MallocOrDie(sizeof(MSAFILE)); + dbfp->afp->f = dbfp->f; /* just a ptr, don't close */ + dbfp->afp->do_stdin = dbfp->do_stdin; + dbfp->afp->do_gzip = dbfp->do_gzip; + dbfp->afp->fname = dbfp->fname; /* just a ptr, don't free */ + dbfp->afp->format = dbfp->format; /* e.g. format */ + dbfp->afp->linenumber = dbfp->linenumber; /* e.g. 0 */ + dbfp->afp->buf = NULL; + dbfp->afp->buflen = 0; + + if ((dbfp->msa = MSAFileRead(dbfp->afp)) == NULL) + Die("Failed to read any alignment data from file %s", dbfp->fname); + /* hack: overload/reuse msa->lastidx; indicates + next seq to return upon a ReadSeq() call */ + dbfp->msa->lastidx = 0; + + return dbfp; + } + + /* Load the first line. + */ + SeqfileGetLine(dbfp); + return dbfp; +} + +/* Function: SeqfilePosition() + * + * Purpose: Move to a particular offset in a seqfile. + * Will not work on alignment files. + */ +void +SeqfilePosition(SQFILE *sqfp, SSIOFFSET *offset) +{ + if (sqfp->do_stdin || sqfp->do_gzip || IsAlignmentFormat(sqfp->format)) + Die("SeqfilePosition() failed: in a nonrewindable data file or stream"); + + if (SSISetFilePosition(sqfp->f, offset) != 0) + Die("SSISetFilePosition failed, but that shouldn't happen."); + SeqfileGetLine(sqfp); +} + + +/* Function: SeqfileRewind() + * + * Purpose: Set a sequence file back to the first sequence. + * + * Won't work on alignment files. Although it would + * seem that it could (just set msa->lastidx back to 0), + * that'll fail on "multiple multiple" alignment file formats + * (e.g. Stockholm). + */ +void +SeqfileRewind(SQFILE *sqfp) +{ + if (sqfp->do_stdin || sqfp->do_gzip) + Die("SeqfileRewind() failed: in a nonrewindable data file or stream"); + + rewind(sqfp->f); + SeqfileGetLine(sqfp); +} + +/* Function: SeqfileLineParameters() + * Date: SRE, Thu Feb 15 17:00:41 2001 [St. Louis] + * + * Purpose: After all the sequences have been read from the file, + * but before closing it, retrieve overall bytes-per-line and + * residues-per-line info. If non-zero, these mean that + * the file contains homogeneous sequence line lengths (except + * the last line in each record). + * + * If either of bpl or rpl is determined to be inhomogeneous, + * both are returned as 0. + * + * Args: *sqfp - an open but fully read sequence file + * ret_bpl - RETURN: bytes per line, or 0 if inhomogeneous + * ret_rpl - RETURN: residues per line, or 0 if inhomogenous. + * + * Returns: void + */ +void +SeqfileLineParameters(SQFILE *V, int *ret_bpl, int *ret_rpl) +{ + if (V->rpl > 0 && V->maxrpl == V->rpl && + V->bpl > 0 && V->maxbpl == V->bpl) { + *ret_bpl = V->bpl; + *ret_rpl = V->rpl; + } else { + *ret_bpl = 0; + *ret_rpl = 0; + } +} + + +void +SeqfileClose(SQFILE *sqfp) +{ + /* note: don't test for sqfp->msa being NULL. Now that + * we're holding afp open and allowing access to multi-MSA + * databases (e.g. Stockholm format, Pfam), msa ends + * up being NULL when we run out of alignments. + */ + if (sqfp->afp != NULL) { + if (sqfp->msa != NULL) MSAFree(sqfp->msa); + if (sqfp->afp->buf != NULL) free(sqfp->afp->buf); + free(sqfp->afp); + } +#ifndef SRE_STRICT_ANSI /* gunzip functionality only on POSIX systems */ + if (sqfp->do_gzip) pclose(sqfp->f); +#endif + else if (! sqfp->do_stdin) fclose(sqfp->f); + if (sqfp->buf != NULL) free(sqfp->buf); + if (sqfp->fname != NULL) free(sqfp->fname); + free(sqfp); +} + + +/* Function: SeqfileGetLine() + * Date: SRE, Tue Jun 22 09:15:49 1999 [Sanger Centre] + * + * Purpose: read a line from a sequence file into V->buf + * If the fgets() is NULL, sets V->buf[0] to '\0'. + * + * Args: V + * + * Returns: void + */ +static void +SeqfileGetLine(SQFILE *V) +{ + if (V->ssimode >= 0) + if (0 != SSIGetFilePosition(V->f, V->ssimode, &(V->ssioffset))) + Die("SSIGetFilePosition() failed"); + if (sre_fgets(&(V->buf), &(V->buflen), V->f) == NULL) + *(V->buf) = '\0'; + V->linenumber++; +} + + +void +FreeSequence(char *seq, SQINFO *sqinfo) +{ + if (seq != NULL) free(seq); + if (sqinfo->flags & SQINFO_SS) free(sqinfo->ss); + if (sqinfo->flags & SQINFO_SA) free(sqinfo->sa); +} + +int +SetSeqinfoString(SQINFO *sqinfo, char *sptr, int flag) +{ + int len; + int pos; + + /* silently ignore NULL. */ + if (sptr == NULL) return 1; + + while (*sptr == ' ') sptr++; /* ignore leading whitespace */ + for (pos = strlen(sptr)-1; pos >= 0; pos--) + if (! isspace((int) sptr[pos])) break; + sptr[pos+1] = '\0'; /* ignore trailing whitespace */ + + switch (flag) { + case SQINFO_NAME: + if (*sptr != '-') + { + strncpy(sqinfo->name, sptr, SQINFO_NAMELEN-1); + sqinfo->name[SQINFO_NAMELEN-1] = '\0'; + sqinfo->flags |= SQINFO_NAME; + } + break; + + case SQINFO_ID: + if (*sptr != '-') + { + strncpy(sqinfo->id, sptr, SQINFO_NAMELEN-1); + sqinfo->id[SQINFO_NAMELEN-1] = '\0'; + sqinfo->flags |= SQINFO_ID; + } + break; + + case SQINFO_ACC: + if (*sptr != '-') + { + strncpy(sqinfo->acc, sptr, SQINFO_NAMELEN-1); + sqinfo->acc[SQINFO_NAMELEN-1] = '\0'; + sqinfo->flags |= SQINFO_ACC; + } + break; + + case SQINFO_DESC: + if (*sptr != '-') + { + if (sqinfo->flags & SQINFO_DESC) /* append? */ + { + len = strlen(sqinfo->desc); + if (len < SQINFO_DESCLEN-2) /* is there room? */ + { + strncat(sqinfo->desc, " ", SQINFO_DESCLEN-1-len); len++; + strncat(sqinfo->desc, sptr, SQINFO_DESCLEN-1-len); + } + } + else /* else copy */ + strncpy(sqinfo->desc, sptr, SQINFO_DESCLEN-1); + sqinfo->desc[SQINFO_DESCLEN-1] = '\0'; + sqinfo->flags |= SQINFO_DESC; + } + break; + + case SQINFO_START: + if (!IsInt(sptr)) { squid_errno = SQERR_FORMAT; return 0; } + sqinfo->start = atoi(sptr); + if (sqinfo->start != 0) sqinfo->flags |= SQINFO_START; + break; + + case SQINFO_STOP: + if (!IsInt(sptr)) { squid_errno = SQERR_FORMAT; return 0; } + sqinfo->stop = atoi(sptr); + if (sqinfo->stop != 0) sqinfo->flags |= SQINFO_STOP; + break; + + case SQINFO_OLEN: + if (!IsInt(sptr)) { squid_errno = SQERR_FORMAT; return 0; } + sqinfo->olen = atoi(sptr); + if (sqinfo->olen != 0) sqinfo->flags |= SQINFO_OLEN; + break; + + default: + Die("Invalid flag %d to SetSeqinfoString()", flag); + } + return 1; +} + +void +SeqinfoCopy(SQINFO *sq1, SQINFO *sq2) +{ + sq1->flags = sq2->flags; + if (sq2->flags & SQINFO_NAME) strcpy(sq1->name, sq2->name); + if (sq2->flags & SQINFO_ID) strcpy(sq1->id, sq2->id); + if (sq2->flags & SQINFO_ACC) strcpy(sq1->acc, sq2->acc); + if (sq2->flags & SQINFO_DESC) strcpy(sq1->desc, sq2->desc); + if (sq2->flags & SQINFO_LEN) sq1->len = sq2->len; + if (sq2->flags & SQINFO_START) sq1->start = sq2->start; + if (sq2->flags & SQINFO_STOP) sq1->stop = sq2->stop; + if (sq2->flags & SQINFO_OLEN) sq1->olen = sq2->olen; + if (sq2->flags & SQINFO_TYPE) sq1->type = sq2->type; + if (sq2->flags & SQINFO_SS) sq1->ss = Strdup(sq2->ss); + if (sq2->flags & SQINFO_SA) sq1->sa = Strdup(sq2->sa); +} + +/* Function: ToDNA() + * + * Purpose: Convert a sequence to DNA. + * U --> T + */ +void +ToDNA(char *seq) +{ + for (; *seq != '\0'; seq++) + { + if (*seq == 'U') *seq = 'T'; + else if (*seq == 'u') *seq = 't'; + } +} + +/* Function: ToRNA() + * + * Purpose: Convert a sequence to RNA. + * T --> U + */ +void +ToRNA(char *seq) +{ + for (; *seq != '\0'; seq++) + { + if (*seq == 'T') *seq = 'U'; + else if (*seq == 't') *seq = 'u'; + } +} + + +/* Function: ToIUPAC() + * + * Purpose: Convert X's, o's, other junk in a nucleic acid sequence to N's, + * to comply with IUPAC code. Does allow gap characters + * though, so we can call ToIUPAC() on aligned seqs. + * + * WU-BLAST's pressdb will + * choke on X's, for instance, necessitating conversion + * of certain genome centers' data. + */ +void +ToIUPAC(char *seq) +{ + for (; *seq != '\0'; seq++) + if (strchr(NUCLEOTIDES, *seq) == NULL && ! isgap(*seq)) *seq = 'N'; +} + + +/* Function: addseq() + * + * Purpose: Add a line of sequence to the growing string in V. + * Skip all nonalphabetic characters in the input string: + * in particular, spaces and digits (coordinates). This + * allows us to generically read sequence data from most + * any format. + */ +static void +addseq(char *s, struct ReadSeqVars *V) +{ + char *s0; + char *sq; + int rpl; /* valid residues per line */ + int bpl; /* characters per line */ + + if (V->ssimode == -1) + { /* Normal mode: keeping the seq */ + /* Make sure we have enough room. We know that s is <= buflen, + * so just make sure we've got room for a whole new buflen worth + * of sequence. + */ + if (V->seqlen + V->buflen > V->maxseq) { + V->maxseq += MAX(V->buflen, kStartLength); + V->seq = ReallocOrDie (V->seq, V->maxseq+1); + } + + s0 = s; + sq = V->seq + V->seqlen; + while (*s != 0) { + if (isalpha((int) *s)) { + *sq = *s; + sq++; + } + s++; + } + V->seqlen = sq - V->seq; + } + else /* else: indexing mode, discard the seq */ + { + s0 = s; + rpl = 0; + while (*s != 0) { + if (isalpha((int) *s)) rpl++; + s++; + } + V->seqlen += rpl; + bpl = s - s0; + + /* Keep track of the global rpl, bpl for the file. + * This is overly complicated because we have to + * allow the last line of each record (e.g. the last addseq() call + * on each sequence) to have a different length - and sometimes + * we'll have one-line sequence records, too. Thus we only + * do something with the global V->rpl when we have *passed over* + * a line - we keep the last line's rpl in last_rpl. And because + * a file might consist entirely of single-line records, we keep + * a third guy, maxrpl, that tells us the maximum rpl of any line + * in the file. If we reach the end of file and rpl is still unset, + * we'll set it to maxrpl. If we reach eof and rpl is set, but is + * less than maxrpl, that's a weird case where a last line in some + * record is longer than every other line. + */ + if (V->rpl != 0) { /* 0 means we already know rpl is invalid */ + if (V->lastrpl > 0) { /* we're on something that's not the first line */ + if (V->rpl > 0 && V->lastrpl != V->rpl) V->rpl = 0; + else if (V->rpl == -1) V->rpl = V->lastrpl; + } + V->lastrpl = rpl; + if (rpl > V->maxrpl) V->maxrpl = rpl; /* make sure we check max length of final lines */ + } + if (V->bpl != 0) { /* 0 means we already know bpl is invalid */ + if (V->lastbpl > 0) { /* we're on something that's not the first line */ + if (V->bpl > 0 && V->lastbpl != V->bpl) V->bpl = 0; + else if (V->bpl == -1) V->bpl = V->lastbpl; + } + V->lastbpl = bpl; + if (bpl > V->maxbpl) V->maxbpl = bpl; /* make sure we check max length of final lines */ + } + } /* end of indexing mode of addseq(). */ + +} + +static void +readLoop(int addfirst, int (*endTest)(char *,int *), struct ReadSeqVars *V) +{ + int addend = 0; + int done = 0; + + V->seqlen = 0; + V->lastrpl = V->lastbpl = 0; + if (addfirst) { + if (V->ssimode >= 0) V->d_off = V->ssioffset; + addseq(V->buf, V); + } else if (V->ssimode >= 0) + if (0 != SSIGetFilePosition(V->f, V->ssimode, &(V->d_off))) + Die("SSIGetFilePosition() failed"); + + do { + SeqfileGetLine(V); + /* feof() alone is a bug; files not necessarily \n terminated */ + if (*(V->buf) == '\0' && feof(V->f)) + done = TRUE; + done |= (*endTest)(V->buf, &addend); + if (addend || !done) + addseq(V->buf, V); + } while (!done); +} + + +static int +endPIR(char *s, int *addend) +{ + *addend = 0; + if ((strncmp(s, "///", 3) == 0) || + (strncmp(s, "ENTRY", 5) == 0)) + return 1; + else + return 0; +} + +static void +readPIR(struct ReadSeqVars *V) +{ + char *sptr; + /* load first line of entry */ + while (!feof(V->f) && strncmp(V->buf, "ENTRY", 5) != 0) { + SeqfileGetLine(V); + } + if (feof(V->f)) return; + if (V->ssimode >= 0) V->r_off = V->ssioffset; + + if ((sptr = strtok(V->buf + 15, "\n\t ")) != NULL) + { + SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME); + SetSeqinfoString(V->sqinfo, sptr, SQINFO_ID); + } + do { + SeqfileGetLine(V); + if (!feof(V->f) && strncmp(V->buf, "TITLE", 5) == 0) + SetSeqinfoString(V->sqinfo, V->buf+15, SQINFO_DESC); + else if (!feof(V->f) && strncmp(V->buf, "ACCESSION", 9) == 0) + { + if ((sptr = strtok(V->buf+15, " \t\n")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_ACC); + } + } while (! feof(V->f) && (strncmp(V->buf,"SEQUENCE", 8) != 0)); + SeqfileGetLine(V); /* skip next line, coords */ + + readLoop(0, endPIR, V); + + /* reading a real PIR-CODATA database file, we keep the source coords + */ + V->sqinfo->start = 1; + V->sqinfo->stop = V->seqlen; + V->sqinfo->olen = V->seqlen; + V->sqinfo->flags |= SQINFO_START | SQINFO_STOP | SQINFO_OLEN; + + /* get next line + */ + while (!feof(V->f) && strncmp(V->buf, "ENTRY", 5) != 0) { + SeqfileGetLine(V); + } +} + + + +static int +endIG(char *s, int *addend) +{ + *addend = 1; /* 1 or 2 occur in line w/ bases */ + return((strchr(s,'1')!=NULL) || (strchr(s,'2')!=NULL)); +} + +static void +readIG(struct ReadSeqVars *V) +{ + char *nm; + /* position past ';' comments */ + do { + SeqfileGetLine(V); + } while (! (feof(V->f) || ((*V->buf != 0) && (*V->buf != ';')) )); + + if (!feof(V->f)) + { + if ((nm = strtok(V->buf, "\n\t ")) != NULL) + SetSeqinfoString(V->sqinfo, nm, SQINFO_NAME); + + readLoop(0, endIG, V); + } + + while (!(feof(V->f) || ((*V->buf != '\0') && (*V->buf == ';')))) + SeqfileGetLine(V); +} + +static int +endStrider(char *s, int *addend) +{ + *addend = 0; + return (strstr( s, "//") != NULL); +} + +static void +readStrider(struct ReadSeqVars *V) +{ + char *nm; + + while ((!feof(V->f)) && (*V->buf == ';')) + { + if (strncmp(V->buf,"; DNA sequence", 14) == 0) + { + if ((nm = strtok(V->buf+16, ",\n\t ")) != NULL) + SetSeqinfoString(V->sqinfo, nm, SQINFO_NAME); + } + SeqfileGetLine(V); + } + + if (! feof(V->f)) + readLoop(1, endStrider, V); + + /* load next line + */ + while ((!feof(V->f)) && (*V->buf != ';')) + SeqfileGetLine(V); +} + + +static int +endGB(char *s, int *addend) +{ + *addend = 0; + return ((strstr(s,"//") != NULL) || (strstr(s,"LOCUS") == s)); +} + +static void +readGenBank(struct ReadSeqVars *V) +{ + char *sptr; + int in_definition; + + while (strncmp(V->buf, "LOCUS", 5) != 0) { + SeqfileGetLine(V); + } + if (V->ssimode >= 0) V->r_off = V->ssioffset; + + if ((sptr = strtok(V->buf+12, "\n\t ")) != NULL) + { + SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME); + SetSeqinfoString(V->sqinfo, sptr, SQINFO_ID); + } + + in_definition = FALSE; + while (! feof(V->f)) + { + SeqfileGetLine(V); + if (! feof(V->f) && strstr(V->buf, "DEFINITION") == V->buf) + { + if ((sptr = strtok(V->buf+12, "\n")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_DESC); + in_definition = TRUE; + } + else if (! feof(V->f) && strstr(V->buf, "ACCESSION") == V->buf) + { + if ((sptr = strtok(V->buf+12, "\n\t ")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_ACC); + in_definition = FALSE; + } + else if (strncmp(V->buf,"ORIGIN", 6) != 0) + { + if (in_definition) + SetSeqinfoString(V->sqinfo, V->buf, SQINFO_DESC); + } + else + break; + } + + readLoop(0, endGB, V); + + /* reading a real GenBank database file, we keep the source coords + */ + V->sqinfo->start = 1; + V->sqinfo->stop = V->seqlen; + V->sqinfo->olen = V->seqlen; + V->sqinfo->flags |= SQINFO_START | SQINFO_STOP | SQINFO_OLEN; + + + while (!(feof(V->f) || ((*V->buf!=0) && (strstr(V->buf,"LOCUS") == V->buf)))) + SeqfileGetLine(V); + /* SRE: V->s now holds "//", so sequential + reads are wedged: fixed Tue Jul 13 1993 */ + while (!feof(V->f) && strstr(V->buf, "LOCUS ") != V->buf) + SeqfileGetLine(V); +} + +static int +endGCGdata(char *s, int *addend) +{ + *addend = 0; + return (*s == '>'); +} + +static void +readGCGdata(struct ReadSeqVars *V) +{ + int binary = FALSE; /* whether data are binary or not */ + int blen = 0; /* length of binary sequence */ + + /* first line contains ">>>>" followed by name */ + if (Strparse(">>>>([^ ]+) .+2BIT +Len: ([0-9]+)", V->buf, 2)) + { + binary = TRUE; + SetSeqinfoString(V->sqinfo, sqd_parse[1], SQINFO_NAME); + blen = atoi(sqd_parse[2]); + } + else if (Strparse(">>>>([^ ]+) .+ASCII +Len: [0-9]+", V->buf, 1)) + SetSeqinfoString(V->sqinfo, sqd_parse[1], SQINFO_NAME); + else + Die("bogus GCGdata format? %s", V->buf); + + /* second line contains free text description */ + SeqfileGetLine(V); + SetSeqinfoString(V->sqinfo, V->buf, SQINFO_DESC); + + if (binary) { + /* allocate for blen characters +3... (allow for 3 bytes of slop) */ + if (blen >= V->maxseq) { + V->maxseq = blen; + if ((V->seq = (char *) realloc (V->seq, sizeof(char)*(V->maxseq+4)))==NULL) + Die("malloc failed"); + } + /* read (blen+3)/4 bytes from file */ + if (fread(V->seq, sizeof(char), (blen+3)/4, V->f) < (size_t) ((blen+3)/4)) + Die("fread failed"); + V->seqlen = blen; + /* convert binary code to seq */ + GCGBinaryToSequence(V->seq, blen); + } + else readLoop(0, endGCGdata, V); + + while (!(feof(V->f) || ((*V->buf != 0) && (*V->buf == '>')))) + SeqfileGetLine(V); +} + +static int +endPearson(char *s, int *addend) +{ + *addend = 0; + return(*s == '>'); +} + +static void +readPearson(struct ReadSeqVars *V) +{ + char *sptr; + + if (V->ssimode >= 0) V->r_off = V->ssioffset; + + if (*V->buf != '>') + Die("\ +File %s does not appear to be in FASTA format at line %d.\n\ +You may want to invoke the Babelfish to autodetect your file's format.\n\ +Usually this is done with a -B option.\n", + V->fname, V->linenumber); + + if ((sptr = strtok(V->buf+1, "\n\t ")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME); + if ((sptr = strtok(NULL, "\n")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_DESC); + + readLoop(0, endPearson, V); + + while (!(feof(V->f) || ((*V->buf != 0) && (*V->buf == '>')))) { + SeqfileGetLine(V); + } +} + + +static int +endEMBL(char *s, int *addend) +{ + *addend = 0; + /* Some people (Berlin 5S rRNA database, f'r instance) use + * an extended EMBL format that attaches extra data after + * the sequence -- watch out for that. We use the fact that + * real EMBL sequence lines begin with five spaces. + * + * We can use this as the sole end test because readEMBL() will + * advance to the next ID line before starting to read again. + */ + return (strncmp(s," ",5) != 0); +/* return ((strstr(s,"//") != NULL) || (strstr(s,"ID ") == s)); */ +} + +static void +readEMBL(struct ReadSeqVars *V) +{ + char *sptr; + + /* make sure we have first line */ + while (!feof(V->f) && strncmp(V->buf, "ID ", 4) != 0) { + SeqfileGetLine(V); + } + if (V->ssimode >= 0) V->r_off = V->ssioffset; + + if ((sptr = strtok(V->buf+5, "\n\t ")) != NULL) + { + SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME); + SetSeqinfoString(V->sqinfo, sptr, SQINFO_ID); + } + + do { + SeqfileGetLine(V); + if (!feof(V->f) && strstr(V->buf, "AC ") == V->buf) + { + if ((sptr = strtok(V->buf+5, "; \t\n")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_ACC); + } + else if (!feof(V->f) && strstr(V->buf, "DE ") == V->buf) + { + if ((sptr = strtok(V->buf+5, "\n")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_DESC); + } + } while (! feof(V->f) && strncmp(V->buf,"SQ",2) != 0); + + readLoop(0, endEMBL, V); + + /* Hack for Staden experiment files: convert - to N + */ + if (V->ssimode == -1) /* if we're in ssi mode, we're not keeping the seq */ + for (sptr = V->seq; *sptr != '\0'; sptr++) + if (*sptr == '-') *sptr = 'N'; + + /* reading a real EMBL database file, we keep the source coords + */ + V->sqinfo->start = 1; + V->sqinfo->stop = V->seqlen; + V->sqinfo->olen = V->seqlen; + V->sqinfo->flags |= SQINFO_START | SQINFO_STOP | SQINFO_OLEN; + + /* load next record's ID line */ + while (!feof(V->f) && strncmp(V->buf, "ID ", 4) != 0) { + SeqfileGetLine(V); + } + +} + + +static int +endZuker(char *s, int *addend) +{ + *addend = 0; + return( *s == '(' ); +} + +static void +readZuker(struct ReadSeqVars *V) +{ + char *sptr; + + SeqfileGetLine(V); /*s == "seqLen seqid string..."*/ + + if ((sptr = strtok(V->buf+6, " \t\n")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME); + + if ((sptr = strtok(NULL, "\n")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_DESC); + + readLoop(0, endZuker, V); + + while (!(feof(V->f) | ((*V->buf != '\0') & (*V->buf == '(')))) + SeqfileGetLine(V); +} + +static void +readUWGCG(struct ReadSeqVars *V) +{ + char *si; + char *sptr; + int done; + + V->seqlen = 0; + + /*writeseq: " %s Length: %d (today) Check: %d ..\n" */ + /*drop above or ".." from id*/ + if ((si = strstr(V->buf," Length: ")) != NULL) *si = 0; + else if ((si = strstr(V->buf,"..")) != NULL) *si = 0; + + if ((sptr = strtok(V->buf, "\n\t ")) != NULL) + SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME); + + do { + done = feof(V->f); + SeqfileGetLine(V); + if (! done) addseq(V->buf, V); + } while (!done); +} + + +/* Function: ReadSeq() + * + * Purpose: Read next sequence from an open database file. + * Return the sequence and associated info. + * + * Args: fp - open sequence database file pointer + * format - format of the file (previously determined + * by call to SeqfileFormat()). + * Currently unused, since we carry it in V. + * ret_seq - RETURN: sequence + * sqinfo - RETURN: filled in w/ other information + * + * Limitations: uses squid_errno, so it's not threadsafe. + * + * Return: 1 on success, 0 on failure. + * ret_seq and some field of sqinfo are allocated here, + * The preferred call mechanism to properly free the memory is: + * + * SQINFO sqinfo; + * char *seq; + * + * ReadSeq(fp, format, &seq, &sqinfo); + * ... do something... + * FreeSequence(seq, &sqinfo); + */ +int +ReadSeq(SQFILE *V, int format, char **ret_seq, SQINFO *sqinfo) +{ + int gotuw; + + squid_errno = SQERR_OK; + + /* Here's the hack for sequential access of sequences from + * the multiple sequence alignment formats + */ + if (IsAlignmentFormat(V->format)) + { + if (V->msa->lastidx >= V->msa->nseq) + { /* out of data. try to read another alignment */ + MSAFree(V->msa); + if ((V->msa = MSAFileRead(V->afp)) == NULL) + return 0; + V->msa->lastidx = 0; + } + /* copy and dealign the appropriate aligned seq */ + MakeDealignedString(V->msa->aseq[V->msa->lastidx], V->msa->alen, + V->msa->aseq[V->msa->lastidx], &(V->seq)); + V->seqlen = strlen(V->seq); + + /* Extract sqinfo stuff for this sequence from the msa. + * Tedious; code that should be cleaned. + */ + sqinfo->flags = 0; + if (V->msa->sqname[V->msa->lastidx] != NULL) + SetSeqinfoString(sqinfo, V->msa->sqname[V->msa->lastidx], SQINFO_NAME); + if (V->msa->sqacc != NULL && V->msa->sqacc[V->msa->lastidx] != NULL) + SetSeqinfoString(sqinfo, V->msa->sqacc[V->msa->lastidx], SQINFO_ACC); + if (V->msa->sqdesc != NULL && V->msa->sqdesc[V->msa->lastidx] != NULL) + SetSeqinfoString(sqinfo, V->msa->sqdesc[V->msa->lastidx], SQINFO_DESC); + if (V->msa->ss != NULL && V->msa->ss[V->msa->lastidx] != NULL) { + MakeDealignedString(V->msa->aseq[V->msa->lastidx], V->msa->alen, + V->msa->ss[V->msa->lastidx], &(sqinfo->ss)); + sqinfo->flags |= SQINFO_SS; + } + if (V->msa->sa != NULL && V->msa->sa[V->msa->lastidx] != NULL) { + MakeDealignedString(V->msa->aseq[V->msa->lastidx], V->msa->alen, + V->msa->sa[V->msa->lastidx], &(sqinfo->sa)); + sqinfo->flags |= SQINFO_SA; + } + V->msa->lastidx++; + } + else { + if (feof(V->f)) return 0; + + if (V->ssimode == -1) { /* normal mode */ + V->seq = (char*) calloc (kStartLength+1, sizeof(char)); + V->maxseq = kStartLength; + } else { /* index mode: discarding seq */ + V->seq = NULL; + V->maxseq = 0; + } + V->seqlen = 0; + V->sqinfo = sqinfo; + V->sqinfo->flags = 0; + + switch (V->format) { + case SQFILE_IG : readIG(V); break; + case SQFILE_STRIDER : readStrider(V); break; + case SQFILE_GENBANK : readGenBank(V); break; + case SQFILE_FASTA : readPearson(V); break; + case SQFILE_EMBL : readEMBL(V); break; + case SQFILE_ZUKER : readZuker(V); break; + case SQFILE_PIR : readPIR(V); break; + case SQFILE_GCGDATA : readGCGdata(V); break; + + case SQFILE_GCG : + do { /* skip leading comments on GCG file */ + gotuw = (strstr(V->buf,"..") != NULL); + if (gotuw) readUWGCG(V); + SeqfileGetLine(V); + } while (! feof(V->f)); + break; + + case SQFILE_IDRAW: /* SRE: no attempt to read idraw postscript */ + default: + squid_errno = SQERR_FORMAT; + free(V->seq); + return 0; + } + if (V->seq != NULL) /* (it can be NULL in indexing mode) */ + V->seq[V->seqlen] = 0; /* stick a string terminator on it */ + } + + /* Cleanup + */ + sqinfo->len = V->seqlen; + sqinfo->flags |= SQINFO_LEN; + *ret_seq = V->seq; + if (squid_errno == SQERR_OK) return 1; else return 0; +} + +/* Function: SeqfileFormat() + * Date: SRE, Tue Jun 22 10:58:58 1999 [Sanger Centre] + * + * Purpose: Determine format of an open file. + * Returns format code. + * Rewinds the file. + * + * Autodetects the following unaligned formats: + * SQFILE_FASTA + * SQFILE_GENBANK + * SQFILE_EMBL + * SQFILE_GCG + * SQFILE_GCGDATA + * SQFILE_PIR + * Also autodetects the following alignment formats: + * MSAFILE_STOCKHOLM + * MSAFILE_MSF + * MSAFILE_CLUSTAL + * MSAFILE_SELEX + * MSAFILE_PHYLIP + * + * Can't autodetect MSAFILE_A2M, calls it SQFILE_FASTA. + * MSAFileFormat() does the opposite. + * + * Args: sfp - open SQFILE + * + * Return: format code, or SQFILE_UNKNOWN if unrecognized + */ +int +SeqfileFormat(FILE *fp) +{ + char *buf; + int len; + int fmt = SQFILE_UNKNOWN; + int ndataline; + char *bufcpy, *s, *s1, *s2; + int has_junk; + + buf = NULL; + len = 0; + ndataline = 0; + has_junk = FALSE; + while (sre_fgets(&buf, &len, fp) != NULL) + { + if (IsBlankline(buf)) continue; + + /* Well-behaved formats identify themselves in first nonblank line. + */ + if (ndataline == 0) + { + if (strncmp(buf, ">>>>", 4) == 0 && strstr(buf, "Len: ")) + { fmt = SQFILE_GCGDATA; goto DONE; } + + if (buf[0] == '>') + { fmt = SQFILE_FASTA; goto DONE; } + + if (strncmp(buf, "!!AA_SEQUENCE", 13) == 0 || + strncmp(buf, "!!NA_SEQUENCE", 13) == 0) + { fmt = SQFILE_GCG; goto DONE; } + + if (strncmp(buf, "# STOCKHOLM 1.", 14) == 0) + { fmt = MSAFILE_STOCKHOLM; goto DONE; } + + if (strncmp(buf, "CLUSTAL", 7) == 0 && + strstr(buf, "multiple sequence alignment") != NULL) + { fmt = MSAFILE_CLUSTAL; goto DONE; } + + if (strncmp(buf, "!!AA_MULTIPLE_ALIGNMENT", 23) == 0 || + strncmp(buf, "!!NA_MULTIPLE_ALIGNMENT", 23) == 0) + { fmt = MSAFILE_MSF; goto DONE; } + + /* PHYLIP id: also just a good bet */ + bufcpy = sre_strdup(buf, -1); + s = bufcpy; + if ((s1 = sre_strtok(&s, WHITESPACE, NULL)) != NULL && + (s2 = sre_strtok(&s, WHITESPACE, NULL)) != NULL && + IsInt(s1) && + IsInt(s2)) + { free(bufcpy); fmt = MSAFILE_PHYLIP; goto DONE; } + free(bufcpy); + } + + /* We trust that other formats identify themselves soon. + */ + /* dead giveaways for extended SELEX */ + if (strncmp(buf, "#=AU", 4) == 0 || + strncmp(buf, "#=ID", 4) == 0 || + strncmp(buf, "#=AC", 4) == 0 || + strncmp(buf, "#=DE", 4) == 0 || + strncmp(buf, "#=GA", 4) == 0 || + strncmp(buf, "#=TC", 4) == 0 || + strncmp(buf, "#=NC", 4) == 0 || + strncmp(buf, "#=SQ", 4) == 0 || + strncmp(buf, "#=SS", 4) == 0 || + strncmp(buf, "#=CS", 4) == 0 || + strncmp(buf, "#=RF", 4) == 0) + { fmt = MSAFILE_SELEX; goto DONE; } + + if (strncmp(buf, "///", 3) == 0 || strncmp(buf, "ENTRY ", 6) == 0) + { fmt = SQFILE_PIR; goto DONE; } + + /* a ha, diagnostic of an (old) MSF file */ + if ((strstr(buf, "..") != NULL) && + (strstr(buf, "MSF:") != NULL) && + (strstr(buf, "Check:")!= NULL)) + { fmt = MSAFILE_MSF; goto DONE; } + + /* unaligned GCG (must follow MSF test!) */ + if (strstr(buf, " Check: ") != NULL && strstr(buf, "..") != NULL) + { fmt = SQFILE_GCG; goto DONE; } + + if (strncmp(buf,"LOCUS ",6) == 0 || strncmp(buf,"ORIGIN ",6) == 0) + { fmt = SQFILE_GENBANK; goto DONE; } + + if (strncmp(buf,"ID ",5) == 0 || strncmp(buf,"SQ ",5) == 0) + { fmt = SQFILE_EMBL; goto DONE; } + + /* But past here, we're being desperate. A simple SELEX file is + * very difficult to detect; we can only try to disprove it. + */ + s = buf; + if ((s1 = sre_strtok(&s, WHITESPACE, NULL)) == NULL) continue; /* skip blank lines */ + if (strchr("#%", *s1) != NULL) continue; /* skip comment lines */ + + /* Disproof 1. Noncomment, nonblank lines in a SELEX file + * must have at least two space-delimited fields (name/seq) + */ + if ((s2 = sre_strtok(&s, WHITESPACE, NULL)) == NULL) + has_junk = TRUE; + + /* Disproof 2. + * The sequence field should look like a sequence. + */ + if (s2 != NULL && Seqtype(s2) == kOtherSeq) + has_junk = TRUE; + + ndataline++; + if (ndataline == 300) break; /* only look at first 300 lines */ + } + + if (ndataline == 0) + Die("Sequence file contains no data"); + + /* If we've made it this far, we've run out of data, but there + * was at least one line of it; check if we've + * disproven SELEX. If not, cross our fingers, pray, and guess SELEX. + */ + if (has_junk == TRUE) fmt = SQFILE_UNKNOWN; + else fmt = MSAFILE_SELEX; + + DONE: + if (buf != NULL) free(buf); + rewind(fp); + return fmt; +} + +/* Function: GCGBinaryToSequence() + * + * Purpose: Convert a GCG 2BIT binary string to DNA sequence. + * 0 = C 1 = T 2 = A 3 = G + * 4 nts/byte + * + * Args: seq - binary sequence. Converted in place to DNA. + * len - length of DNA. binary is (len+3)/4 bytes + */ +int +GCGBinaryToSequence(char *seq, int len) +{ + int bpos; /* position in binary */ + int spos; /* position in sequence */ + char twobit; + int i; + + for (bpos = (len-1)/4; bpos >= 0; bpos--) + { + twobit = seq[bpos]; + spos = bpos*4; + + for (i = 3; i >= 0; i--) + { + switch (twobit & 0x3) { + case 0: seq[spos+i] = 'C'; break; + case 1: seq[spos+i] = 'T'; break; + case 2: seq[spos+i] = 'A'; break; + case 3: seq[spos+i] = 'G'; break; + } + twobit = twobit >> 2; + } + } + seq[len] = '\0'; + return 1; +} + + +/* Function: GCGchecksum() + * Date: SRE, Mon May 31 11:13:21 1999 [St. Louis] + * + * Purpose: Calculate a GCG checksum for a sequence. + * Code provided by Steve Smith of Genetics + * Computer Group. + * + * Args: seq - sequence to calculate checksum for. + * may contain gap symbols. + * len - length of sequence (usually known, + * so save a strlen() call) + * + * Returns: GCG checksum. + */ +int +GCGchecksum(char *seq, int len) +{ + int i; /* position in sequence */ + int chk = 0; /* calculated checksum */ + + for (i = 0; i < len; i++) + chk = (chk + (i % 57 + 1) * (sre_toupper((int) seq[i]))) % 10000; + return chk; +} + + +/* Function: GCGMultchecksum() + * + * Purpose: GCG checksum for a multiple alignment: sum of + * individual sequence checksums (including their + * gap characters) modulo 10000. + * + * Implemented using spec provided by Steve Smith of + * Genetics Computer Group. + * + * Args: seqs - sequences to be checksummed; aligned or not + * nseq - number of sequences + * + * Return: the checksum, a number between 0 and 9999 + */ +int +GCGMultchecksum(char **seqs, int nseq) +{ + int chk = 0; + int idx; + + for (idx = 0; idx < nseq; idx++) + chk = (chk + GCGchecksum(seqs[idx], strlen(seqs[idx]))) % 10000; + return chk; +} + + + + +/* Function: Seqtype() + * + * Purpose: Returns a (very good) guess about type of sequence: + * kDNA, kRNA, kAmino, or kOtherSeq. + * + * Modified from, and replaces, Gilbert getseqtype(). + */ +int +Seqtype(char *seq) +{ + int saw; /* how many non-gap characters I saw */ + char c; + int po = 0; /* count of protein-only */ + int nt = 0; /* count of t's */ + int nu = 0; /* count of u's */ + int na = 0; /* count of nucleotides */ + int aa = 0; /* count of amino acids */ + int no = 0; /* count of others */ + + /* Look at the first 300 non-gap characters + */ + for (saw = 0; *seq != '\0' && saw < 300; seq++) + { + c = sre_toupper((int) *seq); + if (! isgap(c)) + { + if (strchr(protonly, c)) po++; + else if (strchr(primenuc,c)) { + na++; + if (c == 'T') nt++; + else if (c == 'U') nu++; + } + else if (strchr(aminos,c)) aa++; + else if (isalpha((int) c)) no++; + saw++; + } + } + + if (no > 0) return kOtherSeq; + else if (po > 0) return kAmino; + else if (na > aa) { + if (nu > nt) return kRNA; + else return kDNA; + } + else return kAmino; /* ooooh. risky. */ +} + + +/* Function: GuessAlignmentSeqtype() + * Date: SRE, Wed Jul 7 09:42:34 1999 [St. Louis] + * + * Purpose: Try to guess whether an alignment is protein + * or nucleic acid; return a code for the + * type (kRNA, kDNA, or kAmino). + * + * Args: aseq - array of aligned sequences. (Could also + * be an rseq unaligned sequence array) + * nseq - number of aseqs + * + * Returns: kRNA, kDNA, kAmino; + * kOtherSeq if inconsistency is detected. + */ +int +GuessAlignmentSeqtype(char **aseq, int nseq) +{ + int idx; + int nrna = 0; + int ndna = 0; + int namino = 0; + int nother = 0; + + for (idx = 0; idx < nseq; idx++) + switch (Seqtype(aseq[idx])) { + case kRNA: nrna++; break; + case kDNA: ndna++; break; + case kAmino: namino++; break; + default: nother++; + } + + /* Unambiguous decisions: + */ + if (nother) return kOtherSeq; + if (namino == nseq) return kAmino; + if (ndna == nseq) return kDNA; + if (nrna == nseq) return kRNA; + + /* Ambiguous decisions: + */ + if (namino == 0) return kRNA; /* it's nucleic acid, but seems mixed RNA/DNA */ + return kAmino; /* some amino acid seen; others probably short seqs, some + of which may be entirely ACGT (ala,cys,gly,thr). We + could be a little more sophisticated: U would be a giveaway + that we're not in protein seqs */ +} + +/* Function: WriteSimpleFASTA() + * Date: SRE, Tue Nov 16 18:06:00 1999 [St. Louis] + * + * Purpose: Just write a FASTA format sequence to a file; + * minimal interface, mostly for quick and dirty programs. + * + * Args: fp - open file handle (stdout, possibly) + * seq - sequence to output + * name - name for the sequence + * desc - optional description line, or NULL. + * + * Returns: void + */ +void +WriteSimpleFASTA(FILE *fp, char *seq, char *name, char *desc) +{ + char buf[61]; + int len; + int pos; + + len = strlen(seq); + buf[60] = '\0'; + fprintf(fp, ">%s %s\n", name, desc != NULL ? desc : ""); + for (pos = 0; pos < len; pos += 60) + { + strncpy(buf, seq+pos, 60); + fprintf(fp, "%s\n", buf); + } +} + +int +WriteSeq(FILE *outf, int outform, char *seq, SQINFO *sqinfo) +{ + int numline = 0; + int lines = 0, spacer = 0, width = 50, tab = 0; + int i, j, l, l1, ibase; + char endstr[10]; + char s[100]; /* buffer for sequence */ + char ss[100]; /* buffer for structure */ + int checksum = 0; + int seqlen; + int which_case; /* 0 = do nothing. 1 = upper case. 2 = lower case */ + int dostruc; /* TRUE to print structure lines*/ + + which_case = 0; + dostruc = FALSE; + seqlen = (sqinfo->flags & SQINFO_LEN) ? sqinfo->len : strlen(seq); + + if (IsAlignmentFormat(outform)) + Die("Tried to write an aligned format with WriteSeq() -- bad, bad."); + + + strcpy( endstr,""); + l1 = 0; + checksum = GCGchecksum(seq, seqlen); + + switch (outform) { + case SQFILE_UNKNOWN: /* no header, just sequence */ + strcpy(endstr,"\n"); /* end w/ extra blank line */ + break; + + case SQFILE_GENBANK: + fprintf(outf,"LOCUS %s %d bp\n", + (sqinfo->flags & SQINFO_ID) ? sqinfo->id : sqinfo->name, + seqlen); + fprintf(outf,"DEFINITION %s\n", + (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : "-"); + fprintf(outf,"ACCESSION %s\n", + (sqinfo->flags & SQINFO_ACC) ? sqinfo->acc : "-"); + fprintf(outf,"ORIGIN \n"); + spacer = 11; + numline = 1; + strcpy(endstr, "\n//"); + break; + + case SQFILE_GCGDATA: + fprintf(outf, ">>>>%s 9/95 ASCII Len: %d\n", sqinfo->name, seqlen); + fprintf(outf, "%s\n", (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : "-"); + break; + + case SQFILE_PIR: + fprintf(outf, "ENTRY %s\n", + (sqinfo->flags & SQINFO_ID) ? sqinfo->id : sqinfo->name); + fprintf(outf, "TITLE %s\n", + (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : "-"); + fprintf(outf, "ACCESSION %s\n", + (sqinfo->flags & SQINFO_ACC) ? sqinfo->acc : "-"); + fprintf(outf, "SUMMARY #Length %d #Checksum %d\n", + sqinfo->len, checksum); + fprintf(outf, "SEQUENCE\n"); + fprintf(outf, " 5 10 15 20 25 30\n"); + spacer = 2; /* spaces after every residue */ + numline = 1; /* number lines w/ coords */ + width = 30; /* 30 aa per line */ + strcpy(endstr, "\n///"); + break; + + case SQFILE_SQUID: + fprintf(outf, "NAM %s\n", sqinfo->name); + if (sqinfo->flags & (SQINFO_ID | SQINFO_ACC | SQINFO_START | SQINFO_STOP | SQINFO_OLEN)) + fprintf(outf, "SRC %s %s %d..%d::%d\n", + (sqinfo->flags & SQINFO_ID) ? sqinfo->id : "-", + (sqinfo->flags & SQINFO_ACC) ? sqinfo->acc : "-", + (sqinfo->flags & SQINFO_START) ? sqinfo->start : 0, + (sqinfo->flags & SQINFO_STOP) ? sqinfo->stop : 0, + (sqinfo->flags & SQINFO_OLEN) ? sqinfo->olen : 0); + if (sqinfo->flags & SQINFO_DESC) + fprintf(outf, "DES %s\n", sqinfo->desc); + if (sqinfo->flags & SQINFO_SS) + { + fprintf(outf, "SEQ +SS\n"); + dostruc = TRUE; /* print structure lines too */ + } + else + fprintf(outf, "SEQ\n"); + numline = 1; /* number seq lines w/ coords */ + strcpy(endstr, "\n++"); + break; + + case SQFILE_EMBL: + fprintf(outf,"ID %s\n", + (sqinfo->flags & SQINFO_ID) ? sqinfo->id : sqinfo->name); + fprintf(outf,"AC %s\n", + (sqinfo->flags & SQINFO_ACC) ? sqinfo->acc : "-"); + fprintf(outf,"DE %s\n", + (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : "-"); + fprintf(outf,"SQ %d BP\n", seqlen); + strcpy(endstr, "\n//"); /* 11Oct90: bug fix*/ + tab = 5; /** added 31jan91 */ + spacer = 11; /** added 31jan91 */ + break; + + case SQFILE_GCG: + fprintf(outf,"%s\n", sqinfo->name); + if (sqinfo->flags & SQINFO_ACC) + fprintf(outf,"ACCESSION %s\n", sqinfo->acc); + if (sqinfo->flags & SQINFO_DESC) + fprintf(outf,"DEFINITION %s\n", sqinfo->desc); + fprintf(outf," %s Length: %d (today) Check: %d ..\n", + sqinfo->name, seqlen, checksum); + spacer = 11; + numline = 1; + strcpy(endstr, "\n"); /* this is insurance to help prevent misreads at eof */ + break; + + case SQFILE_STRIDER: /* ?? map ?*/ + fprintf(outf,"; ### from DNA Strider ;-)\n"); + fprintf(outf,"; DNA sequence %s, %d bases, %d checksum.\n;\n", + sqinfo->name, seqlen, checksum); + strcpy(endstr, "\n//"); + break; + + /* SRE: Don had Zuker default to Pearson, which is not + intuitive or helpful, since Zuker's MFOLD can't read + Pearson format. More useful to use kIG */ + case SQFILE_ZUKER: + which_case = 1; /* MFOLD requires upper case. */ + /*FALLTHRU*/ + case SQFILE_IG: + fprintf(outf,";%s %s\n", + sqinfo->name, + (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : ""); + fprintf(outf,"%s\n", sqinfo->name); + strcpy(endstr,"1"); /* == linear dna */ + break; + + case SQFILE_RAW: /* Raw: no header at all. */ + break; + + default : + case SQFILE_FASTA: + fprintf(outf,">%s %s\n", sqinfo->name, + (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : ""); + break; + } + + if (which_case == 1) s2upper(seq); + if (which_case == 2) s2lower(seq); + + + width = MIN(width,100); + for (i=0, l=0, ibase = 1, lines = 0; i < seqlen; ) { + if (l1 < 0) l1 = 0; + else if (l1 == 0) { + if (numline) fprintf(outf,"%8d ",ibase); + for (j=0; jflags & SQINFO_SS) ? sqinfo->ss[i] : '.'; + l++; i++; + l1++; /* don't count spaces for width*/ + if (l1 == width || i == seqlen) { + s[l] = ss[l] = '\0'; + l = 0; l1 = 0; + if (dostruc) + { + fprintf(outf, "%s\n", s); + if (numline) fprintf(outf," "); + for (j=0; jformat, &rseqs[num], &(sqinfo[num]))) + { + num++; + if (num == numalloced) /* more seqs coming, alloc more room */ + { + numalloced += 16; + rseqs = (char **) ReallocOrDie (rseqs, numalloced*sizeof(char *)); + sqinfo = (SQINFO *) ReallocOrDie (sqinfo, numalloced * sizeof(SQINFO)); + } + } + SeqfileClose(dbfp); + + *ret_rseqs = rseqs; + *ret_sqinfo = sqinfo; + *ret_num = num; + return 1; +} + + +/* Function: String2SeqfileFormat() + * Date: SRE, Sun Jun 27 15:25:54 1999 [TW 723 over Canadian Shield] + * + * Purpose: Convert a string (e.g. from command line option arg) + * to a format code. Case insensitive. Return + * MSAFILE_UNKNOWN/SQFILE_UNKNOWN if string is bad. + * Uses codes defined in squid.h (unaligned formats) and + * msa.h (aligned formats). + * + * Args: s - string to convert; e.g. "stockholm" + * + * Returns: format code; e.g. MSAFILE_STOCKHOLM + */ +int +String2SeqfileFormat(char *s) +{ + char *s2; + int code = SQFILE_UNKNOWN; + + if (s == NULL) return SQFILE_UNKNOWN; + s2 = sre_strdup(s, -1); + s2upper(s2); + + if (strcmp(s2, "FASTA") == 0) code = SQFILE_FASTA; + else if (strcmp(s2, "GENBANK") == 0) code = SQFILE_GENBANK; + else if (strcmp(s2, "EMBL") == 0) code = SQFILE_EMBL; + else if (strcmp(s2, "GCG") == 0) code = SQFILE_GCG; + else if (strcmp(s2, "GCGDATA") == 0) code = SQFILE_GCGDATA; + else if (strcmp(s2, "RAW") == 0) code = SQFILE_RAW; + else if (strcmp(s2, "IG") == 0) code = SQFILE_IG; + else if (strcmp(s2, "STRIDER") == 0) code = SQFILE_STRIDER; + else if (strcmp(s2, "IDRAW") == 0) code = SQFILE_IDRAW; + else if (strcmp(s2, "ZUKER") == 0) code = SQFILE_ZUKER; + else if (strcmp(s2, "PIR") == 0) code = SQFILE_PIR; + else if (strcmp(s2, "SQUID") == 0) code = SQFILE_SQUID; + else if (strcmp(s2, "STOCKHOLM") == 0) code = MSAFILE_STOCKHOLM; + else if (strcmp(s2, "SELEX") == 0) code = MSAFILE_SELEX; + else if (strcmp(s2, "MSF") == 0) code = MSAFILE_MSF; + else if (strcmp(s2, "CLUSTAL") == 0) code = MSAFILE_CLUSTAL; + else if (strcmp(s2, "A2M") == 0) code = MSAFILE_A2M; + else if (strcmp(s2, "PHYLIP") == 0) code = MSAFILE_PHYLIP; + else if (strcmp(s2, "EPS") == 0) code = MSAFILE_EPS; + + free(s2); + return code; +} +char * +SeqfileFormat2String(int code) +{ + switch (code) { + case SQFILE_UNKNOWN: return "unknown"; + case SQFILE_FASTA: return "FASTA"; + case SQFILE_GENBANK: return "Genbank"; + case SQFILE_EMBL: return "EMBL"; + case SQFILE_GCG: return "GCG"; + case SQFILE_GCGDATA: return "GCG data library"; + case SQFILE_RAW: return "raw"; + case SQFILE_IG: return "Intelligenetics"; + case SQFILE_STRIDER: return "MacStrider"; + case SQFILE_IDRAW: return "Idraw Postscript"; + case SQFILE_ZUKER: return "Zuker"; + case SQFILE_PIR: return "PIR"; + case SQFILE_SQUID: return "SQUID"; + case MSAFILE_STOCKHOLM: return "Stockholm"; + case MSAFILE_SELEX: return "SELEX"; + case MSAFILE_MSF: return "MSF"; + case MSAFILE_CLUSTAL: return "Clustal"; + case MSAFILE_A2M: return "a2m"; + case MSAFILE_PHYLIP: return "Phylip"; + case MSAFILE_EPS: return "EPS"; + default: + Die("Bad code passed to MSAFormat2String()"); + } + /*NOTREACHED*/ + return NULL; +} + + +/* Function: MSAToSqinfo() + * Date: SRE, Tue Jul 20 14:36:56 1999 [St. Louis] + * + * Purpose: Take an MSA and generate a SQINFO array suitable + * for use in annotating the unaligned sequences. + * Return the array. + * + * Permanent temporary code. sqinfo was poorly designed. + * it must eventually be replaced, but the odds + * of this happening soon are nil, so I have to deal. + * + * Args: msa - the alignment + * + * Returns: ptr to allocated sqinfo array. + * Freeing is ghastly: free in each individual sqinfo[i] + * with FreeSequence(NULL, &(sqinfo[i])), then + * free(sqinfo). + */ +SQINFO * +MSAToSqinfo(MSA *msa) +{ + int idx; + SQINFO *sqinfo; + + sqinfo = MallocOrDie(sizeof(SQINFO) * msa->nseq); + + for (idx = 0; idx < msa->nseq; idx++) + { + sqinfo[idx].flags = 0; + SetSeqinfoString(&(sqinfo[idx]), + msa->sqname[idx], SQINFO_NAME); + SetSeqinfoString(&(sqinfo[idx]), + MSAGetSeqAccession(msa, idx), SQINFO_ACC); + SetSeqinfoString(&(sqinfo[idx]), + MSAGetSeqDescription(msa, idx), SQINFO_DESC); + + if (msa->ss != NULL && msa->ss[idx] != NULL) { + MakeDealignedString(msa->aseq[idx], msa->alen, + msa->ss[idx], &(sqinfo[idx].ss)); + sqinfo[idx].flags |= SQINFO_SS; + } + + if (msa->sa != NULL && msa->sa[idx] != NULL) { + MakeDealignedString(msa->aseq[idx], msa->alen, + msa->sa[idx], &(sqinfo[idx].sa)); + sqinfo[idx].flags |= SQINFO_SA; + } + + sqinfo[idx].len = DealignedLength(msa->aseq[idx]); + sqinfo[idx].flags |= SQINFO_LEN; + } + return sqinfo; +} + + + +/* cc -o sqio_test -DA_QUIET_DAY -L. sqio.c -lsquid */ +#ifdef A_QUIET_DAY +#include "ssi.h" +int +main(int argc, char **argv) +{ + FILE *fp; + char *filename; + char *buf; + int len; + int mode = 3; + SSIOFFSET off; + + filename = argv[1]; + + if (mode == 1) { + buf = malloc(sizeof(char) * 256); + if ((fp = fopen(filename, "r")) == NULL) + Die("open of %s failed", filename); + while (fgets(buf, 255, fp) != NULL) + ; + fclose(fp); + free(buf); + } else if (mode == 2) { + if ((fp = fopen(filename, "r")) == NULL) + Die("open of %s failed", filename); + buf = NULL; len = 0; + while (sre_fgets(&buf, &len, fp) != NULL) + SSIGetFilePosition(fp, SSI_OFFSET_I32, &off); + fclose(fp); + free(buf); + } else if (mode == 3) { + SQFILE *dbfp; + SQINFO info; + + if ((dbfp = SeqfileOpen(filename, SQFILE_FASTA, NULL)) == NULL) + Die("open of %s failed", filename); + while (ReadSeq(dbfp, dbfp->format, &buf, &info)) { + SSIGetFilePosition(dbfp->f, SSI_OFFSET_I32, &off); + FreeSequence(buf, &info); + } + SeqfileClose(dbfp); + } + +} + + +#endif diff --git a/forester/archive/RIO/others/hmmer/squid/squid.h.in b/forester/archive/RIO/others/hmmer/squid/squid.h.in new file mode 100644 index 0000000..2cf9a73 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/squid.h.in @@ -0,0 +1,473 @@ +/* @configure_input@ */ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +#ifndef SQUIDH_INCLUDED +#define SQUIDH_INCLUDED + +/* squid.h + * Header file for my library of sequence functions. + * + * CVS $Id: squid.h.in,v 1.1.1.1 2005/03/22 08:34:25 cmzmasek Exp $ + */ + +#include +#include +#include +#include /* for sysconf() #define's */ + + +#if DEBUGLEVEL > 0 +#include /* for SQD_DASSERT1(), etc. */ +#endif + +#include "squidconf.h" /* #define's generated by ./configure script */ + +/***************************************************************** + * Integers of guaranteed size. (used for instance in gsi.c, gsi2.c) + * These are set by the ./configure script; if they show up as FIXME, + * they must be manually edited to appropriate type definitions. You + * do need 64-bit integers in the current code; email me if this + * prevents you from compiling SQUID and tell me your system (I don't + * know of any systems that don't have 64-bit integers these days). + *****************************************************************/ +typedef @SQD_UINT16@ sqd_uint16; +typedef @SQD_UINT32@ sqd_uint32; +typedef @SQD_UINT64@ sqd_uint64; + +#ifdef USE_HOST_BYTESWAP_FUNCTIONS +#include /* only for ntohl() and friends. */ +#include /* only for ntohl() and friends. */ +#define sre_ntoh16(x) ntohs(x); +#define sre_ntoh32(x) ntohl(x); +#define sre_hton16(x) htons(x); +#define sre_hton32(x) htonl(x); +#endif /* USE_HOST_BYTESWAP_FUNCTIONS */ + +/* Library version info is made available as a global to + * any interested program. These are defined in iupac.c + * with the other globals. + */ +extern char squid_version[]; /* version number */ +extern char squid_date[]; /* date of release */ +extern int squid_errno; /* error codes */ + + + +/**************************************************** + * Error codes returned by squid library functions (squid_errno) + ****************************************************/ + +#define SQERR_OK 0 /* no error */ +#define SQERR_UNKNOWN 1 /* generic error, unidentified */ +#define SQERR_NODATA 2 /* unexpectedly NULL stream */ +#define SQERR_MEM 3 /* malloc or realloc failed */ +#define SQERR_NOFILE 4 /* file not found */ +#define SQERR_FORMAT 5 /* file format not recognized */ +#define SQERR_PARAMETER 6 /* bad parameter passed to func */ +#define SQERR_DIVZERO 7 /* error in sre_math.c */ +#define SQERR_INCOMPAT 8 /* incompatible parameters */ +#define SQERR_EOD 9 /* end-of-data (often normal) */ + +/**************************************************** + * Single sequence information + ****************************************************/ +#define SQINFO_NAMELEN 64 +#define SQINFO_DESCLEN 128 + +struct seqinfo_s { + int flags; /* what extra data are available */ + char name[SQINFO_NAMELEN];/* up to 63 characters of name */ + char id[SQINFO_NAMELEN]; /* up to 63 char of database identifier */ + char acc[SQINFO_NAMELEN]; /* up to 63 char of database accession # */ + char desc[SQINFO_DESCLEN];/* up to 127 char of description */ + int len; /* length of this seq */ + int start; /* (1..len) start position on source seq */ + int stop; /* (1..len) end position on source seq */ + int olen; /* original length of source seq */ + int type; /* kRNA, kDNA, kAmino, or kOther */ + char *ss; /* 0..len-1 secondary structure string */ + char *sa; /* 0..len-1 % side chain surface access. */ +}; +typedef struct seqinfo_s SQINFO; + +#define SQINFO_NAME (1 << 0) +#define SQINFO_ID (1 << 1) +#define SQINFO_ACC (1 << 2) +#define SQINFO_DESC (1 << 3) +#define SQINFO_START (1 << 4) +#define SQINFO_STOP (1 << 5) +#define SQINFO_LEN (1 << 6) +#define SQINFO_TYPE (1 << 7) +#define SQINFO_OLEN (1 << 8) +#define SQINFO_SS (1 << 9) +#define SQINFO_SA (1 << 10) + + +/**************************************************** + * Sequence alphabet: see also iupac.c + ****************************************************/ + /* IUPAC symbols defined globally in iupac.c */ +struct iupactype { + char sym; /* character representation */ + char symcomp; /* complement (regular char */ + char code; /* my binary rep */ + char comp; /* binary encoded complement */ +}; +extern struct iupactype iupac[]; +#define IUPACSYMNUM 17 + +extern char *stdcode1[]; /* 1-letter amino acid translation code */ +extern char *stdcode3[]; /* 3-letter amino acid translation code */ +extern float dnafq[]; /* nucleotide occurrence frequencies */ +extern float aafq[]; /* amino acid occurrence frequencies */ +extern char aa_alphabet[]; /* amino acid alphabet */ +extern int aa_index[]; /* convert 0..19 indices to 0..26 */ + + /* valid symbols in IUPAC code */ +#define NUCLEOTIDES "ACGTUNRYMKSWHBVDacgtunrymkswhbvd" +#define AMINO_ALPHABET "ACDEFGHIKLMNPQRSTVWY" +#define DNA_ALPHABET "ACGT" +#define RNA_ALPHABET "ACGU" +#define WHITESPACE " \t\n" + +#define isgap(c) ((c) == ' ' || (c) == '.' || (c) == '_' || (c) == '-' || (c) == '~') + + +/**************************************************** + * Sequence i/o: originally from Don Gilbert's readseq + ****************************************************/ +#include "msa.h" /* for multiple sequence alignment support */ + + /* buffer size for reading in lines from sequence files*/ +#define LINEBUFLEN 4096 + +/* sequence types parsed by Seqtype() */ +/* note that these must match hmmAMINO and hmmNUCLEIC in HMMER */ +#define kOtherSeq 0 /* hmmNOTSETYET */ +#define kDNA 1 +#define kRNA 2 /* hmmNUCLEIC */ +#define kAmino 3 /* hmmAMINO */ + +/* Unaligned sequence file formats recognized + * Coexists with definitions of multiple alignment formats in msa.h: + * >100 reserved for alignment formats + * <100 reserved for unaligned formats + * 0 reserved for unknown + * + * Some "legacy" formats are supported only when explicitly + * requested; not autodetected by SeqfileFormat(). + * + * DON'T REASSIGN THESE CODES. They're written into + * GSI index files. You can use new ones, but reassigning + * the sense of old ones will break GSI indices. + * Alignment format codes were reassigned with the creation + * of msa.c, but before Stockholm format, there were no + * indexed alignment databases. + */ +#define SQFILE_UNKNOWN 0 /* unknown format */ +#define SQFILE_IG 1 /* Intelligenetics (!) */ +#define SQFILE_GENBANK 2 /* GenBank flatfile */ + /* 3 was A2M. Now an alignment format */ +#define SQFILE_EMBL 4 /* EMBL or Swissprot flatfile */ +#define SQFILE_GCG 5 /* GCG single sequence files */ +#define SQFILE_STRIDER 6 /* MacStrider (!!) */ +#define SQFILE_FASTA 7 /* FASTA format: default */ +#define SQFILE_ZUKER 8 /* Zuker MFOLD format (legacy) */ +#define SQFILE_IDRAW 9 /* Idraw-style PostScript (legacy) */ + /* 10 was SELEX. Now alignment format */ + /* 11 was MSF. Now alignment format */ +#define SQFILE_PIR 12 /* PIR format */ +#define SQFILE_RAW 13 /* raw sequence */ +#define SQFILE_SQUID 14 /* my obsolete squid format */ + /* 15 was kXPearson, extended FASTA; withdrawn */ +#define SQFILE_GCGDATA 16 /* GCG data library file */ + /* 17 was Clustal. Now alignment format*/ + +#define IsUnalignedFormat(fmt) ((fmt) && (fmt) < 100) + +#include "ssi.h" + +struct ReadSeqVars { + FILE *f; /* open file pointer */ + char *fname; /* name of file; used for diagnostics */ + int linenumber; /* what line are we on in the file */ + + char *buf; /* dynamically allocated sre_fgets() buffer */ + int buflen; /* allocation length for buf */ + + int ssimode; /* SSI_OFFSET_I32 or SSI_OFFSET_I64 */ + SSIOFFSET ssioffset; /* disk offset to last line read into buf */ + SSIOFFSET r_off; /* offset to start of record */ + SSIOFFSET d_off; /* offset to start of sequence data */ + + int rpl; /* residues per data line for this file; -1 if unset, 0 if invalid */ + int lastrpl; /* rpl on last line seen */ + int maxrpl; /* max rpl on any line of the file */ + int bpl; /* bytes per data line; -1 if unset, 0 if invalid */ + int lastbpl; /* bpl on last line seen */ + int maxbpl; /* max bpl on any line of the file */ + + char *seq; /* growing sequence during parse */ + SQINFO *sqinfo; /* name, id, etc, gathered during parse */ + char *sp; + int seqlen; /* current sequence length */ + int maxseq; /* current allocation length for seq */ + + int format; /* format of seqfile we're reading. */ + int do_gzip; /* TRUE if f is a pipe from gzip -dc */ + int do_stdin; /* TRUE if f is stdin */ + + /* An (important) hack for sequential access of multiple alignment files: + * we read the whole alignment in, + * and then copy it one sequence at a time into seq and sqinfo. + * It is active if msa is non NULL. + * msa->lastidx is reused/overloaded: used to keep track of what + * seq we'll return next. + * afp->format is the real format, while SQFILE->format is kMSA. + * Because we keep it in the SQFILE structure, + * ReadSeq() and friends are always reentrant for multiple seqfiles. + */ + MSA *msa; + MSAFILE *afp; +}; +typedef struct ReadSeqVars SQFILE; + + +/**************************************************** + * Cluster analysis and phylogenetic tree support + ****************************************************/ + +/* struct phylo_s - a phylogenetic tree + * + * For N sequences, there will generally be an array of 0..N-2 + * phylo_s structures representing the nodes of a tree. + * [0] is the root. The indexes of left and + * right children are somewhat confusing so be careful. The + * indexes can have values of 0..2N-2. If they are 0..N-1, they + * represent pointers to individual sequences. If they are + * >= N, they represent pointers to a phylo_s structure + * at (index - N). + */ +struct phylo_s { + int parent; /* index of parent, N..2N-2, or -1 for root */ + int left; /* index of one of the branches, 0..2N-2 */ + int right; /* index of other branch, 0..2N-2 */ + float diff; /* difference score between seqs */ + float lblen; /* left branch length */ + float rblen; /* right branch length */ + char *is_in; /* 0..N-1 flag array, 1 if seq included */ + int incnum; /* number of seqs included at this node */ +}; + + +/* Strategies for cluster analysis; cluster by mean distance, + * minimum distance, or maximum distance. + */ +enum clust_strategy { CLUSTER_MEAN, CLUSTER_MAX, CLUSTER_MIN }; + +/**************************************************** + * Generic data structure support + ****************************************************/ + +/* a struct intstack_s implements a pushdown stack for storing + * single integers. + */ +struct intstack_s { + int data; + struct intstack_s *nxt; +}; + +/**************************************************** + * Binary nucleotide alphabet support + ****************************************************/ + +/* Binary encoding of the IUPAC code for nucleotides + * + * four-bit "word", permitting rapid degenerate matching + * A C G T/U + * 0 0 1 0 + */ +#define NTA 8 +#define NTC 4 +#define NTG 2 +#define NTT 1 +#define NTU 1 +#define NTN 15 /* A|C|G|T */ +#define NTR 10 /* A|G */ +#define NTY 5 /* C|T */ +#define NTM 12 /* A|C */ +#define NTK 3 /* G|T */ +#define NTS 6 /* C|G */ +#define NTW 9 /* A|T */ +#define NTH 13 /* A|C|T */ +#define NTB 7 /* C|G|T */ +#define NTV 14 /* A|C|G */ +#define NTD 11 /* A|G|T */ +#define NTGAP 16 /* GAP */ +#define NTEND 0 /* null string terminator */ + +/* ntmatch(): bitwise comparison of two nuc's + * note that it's sensitive to the order; + * probe may be degenerate but target should not be + */ +#define ntmatch(probe, target) ((probe & target) == target) + +/**************************************************** + * Support for a portable, flexible Getopt() + ****************************************************/ + +/* Structure: opt_s + * + * Structure for declaring options to a main(). + */ +struct opt_s { + char *name; /* name of option, e.g. "--option1" or "-o" */ + int single; /* TRUE if a single letter option */ + int argtype; /* for typechecking, e.g. sqdARG_INT */ +}; + /* acceptable argtype's... */ +#define sqdARG_NONE 0 /* no argument */ +#define sqdARG_INT 1 /* something that atoi() can grok */ +#define sqdARG_FLOAT 2 /* something that atof() can grok */ +#define sqdARG_CHAR 3 /* require single character or digit */ +#define sqdARG_STRING 4 /* anything goes */ + +/**************************************************** + * Support for convenient Perl-y regexp matching + * See hsregexp.c for copyright notice: this code is derived + * from Henry Spencer's freely distributed regexp library. + ****************************************************/ + +#define NSUBEXP 10 +typedef struct sqd_regexp { + char *startp[NSUBEXP]; + char *endp[NSUBEXP]; + char regstart; /* Internal use only. */ + char reganch; /* Internal use only. */ + char *regmust; /* Internal use only. */ + int regmlen; /* Internal use only. */ + char program[1]; /* Unwarranted chumminess with compiler. */ +} sqd_regexp; + +/* Strparse() defines and manages these. + * sqd_parse[0] contains the substring that matched the pattern. + * sqd_parse[1-9] contain substrings matched with ()'s. + */ +extern char *sqd_parse[10]; + +/**************************************************** + * Portable detection of multiprocessor # of CPUs. + * #include + * long foo = SQD_NPROC; + * returns the number of available processors. + * if foo == -1, we failed. + ****************************************************/ + +/* Our problem here is that POSIX apparently doesn't specify + * a standard for how to get sysconf() to report the number of + * processors on-line. _SC_NPROCESSORS_ONLN is specified + * by SVR4.0MP. Thanks to W. Gish for help here. + */ +#undef SQD_NPROC +#ifdef _SC_NPROCESSORS_ONLN /* Sun Solaris, Digital UNIX */ +#define SQD_NPROC sysconf(_SC_NPROCESSORS_ONLN) +#else +#ifdef _SC_NPROC_ONLN /* Silicon Graphics IRIX */ +#define SQD_NPROC sysconf(_SC_NPROC_ONLN) +#else /* FreeBSD, Linux don't support getting ncpu via sysconf() */ +#define SQD_NPROC -1 +#endif +#endif + +/**************************************************** + * Three levels of debugging printf's and assert's + * level 1: little impact on verbosity or performance + * level 2: moderate impact + * level 3: high impact + * Example: + * SQD_DPRINTF3(("Matrix row %d col %d = %f\n", i, j, val)); + * Note the double parentheses; these are important. + ****************************************************/ + +#ifndef DEBUGLEVEL +#define DEBUGLEVEL 0 +#endif + +#if (DEBUGLEVEL >= 1) +#define SQD_DPRINTF1(x) printf x +#define SQD_DASSERT1(x) assert x +#else +#define SQD_DPRINTF1(x) +#define SQD_DASSERT1(x) +#endif +#if (DEBUGLEVEL >= 2) +#define SQD_DPRINTF2(x) printf x +#define SQD_DASSERT2(x) assert x +#else +#define SQD_DPRINTF2(x) +#define SQD_DASSERT2(x) +#endif +#if (DEBUGLEVEL >= 3) +#define SQD_DPRINTF3(x) printf x +#define SQD_DASSERT3(x) assert x +#else +#define SQD_DPRINTF3(x) +#define SQD_DASSERT3(x) +#endif + +/* PANIC is called for failures of Std C/POSIX functions, + * instead of my own functions. Panic() calls perror() and exits + * abnormally. + */ +#define PANIC Panic(__FILE__, __LINE__) + +/* Malloc/realloc calls are wrapped + */ +#define MallocOrDie(x) sre_malloc(__FILE__, __LINE__, (x)) +#define ReallocOrDie(x,y) sre_realloc(__FILE__, __LINE__, (x), (y)) + +/**************************************************** + * Miscellaneous macros and defines + ****************************************************/ + +#define CHOOSE(a) ((int) (sre_random() * (a))) + /* must declare swapfoo to use SWAP() */ +#define SWAP(a,b) {swapfoo = b; b = a; a = swapfoo;} +#define ScalarsEqual(a,b) (fabs((a)-(b)) < 1e-7) + +#ifndef MIN +#define MIN(a,b) (((a)<(b))?(a):(b)) +#endif +#ifndef MAX +#define MAX(a,b) (((a)>(b))?(a):(b)) +#endif + +/* For convenience and (one hopes) clarity in boolean tests: + */ +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +/* Somewhere, there is a universe in which Unix vendors comply + * with the ANSI C standard. Unfortunately, it is not ours: + */ +#ifndef EXIT_SUCCESS +#define EXIT_SUCCESS 0 +#endif +#ifndef EXIT_FAILURE +#define EXIT_FAILURE 1 +#endif + +#include "sqfuncs.h" /* squid function declarations */ +#endif /* SQUIDH_INCLUDED */ diff --git a/forester/archive/RIO/others/hmmer/squid/squidconf.h.in b/forester/archive/RIO/others/hmmer/squid/squidconf.h.in new file mode 100644 index 0000000..354c912 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/squidconf.h.in @@ -0,0 +1,76 @@ +/* @configure_input@ */ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +#ifndef SQUIDCONFH_INCLUDED +#define SQUIDCONFH_INCLUDED + +/* squidconf.h + * Captures #define's generated by the ./configure script; + * this configuration information is #included at the start of + * squid.h + */ + +/***************************************************************** + * Sizes of integer types. + * various things are set by ./configure; the code + * uses WORDS_BIGENDIAN and USE_HOST_BYTESWAP_FUNCTIONS. + *****************************************************************/ +#undef WORDS_BIGENDIAN +#define SIZEOF_UNSIGNED_SHORT 0 +#define SIZEOF_UNSIGNED_INT 0 +#define SIZEOF_UNSIGNED_LONG 0 +#define SIZEOF_UNSIGNED_LONG_LONG 0 +#undef HAVE_NTOHS /* if defined, system provides ntohs() */ +#undef HAVE_NTOHL /* if defined, system provides ntohl() */ +#undef HAVE_HTONS /* if defined, system provides htons() */ +#undef HAVE_HTONL /* if defined, system provides htonl() */ +#if defined HAVE_NTOHL && defined HAVE_NTOHS && defined HAVE_HTONS && defined HAVE_HTONL +#define USE_HOST_BYTESWAP_FUNCTIONS 1 +#endif + +/***************************************************************** + * Can we support arithmetic 64-bit file offsets? + * four possible models checked for: + * 1. ftello(), fseeko() with 64-bit off_t + * 2. ftello64(), fseeko64() with 64-bit off64_t + * 3. ftell64(), fseek64() with 64-bit integer + * 4. fgetpos(), fsetpos() with an fpos_t that happens to be a + * 64-bit integer, even though ANSI says we're not supposed to know + * anything about fpos_t's internals. + * Based on what ./configure tells us about these, we set + * HAS_64BIT_FILE_OFFSETS or not. + *****************************************************************/ +#undef HAVE_FTELLO +#undef HAVE_FSEEKO +#undef HAVE_FTELLO64 +#undef HAVE_FSEEKO64 +#undef HAVE_FTELL64 +#undef HAVE_FSEEK64 +#undef ARITHMETIC_FPOS_T +#undef HAVE_STAT64 +#define SIZEOF_FPOS_T -1 +#define SIZEOF_OFF_T -1 +#define SIZEOF_OFF64_T -1 + +#if defined HAVE_FTELLO && defined HAVE_FSEEKO && SIZEOF_OFF_T == 8 +#define HAS_64BIT_FILE_OFFSETS 1 +#elif defined HAVE_FTELLO64 && defined HAVE_FSEEKO64 && SIZEOF_OFF64_T == 8 +#define HAS_64BIT_FILE_OFFSETS 1 +#elif defined HAVE_FTELL64 && defined HAVE_FSEEK64 +#define HAS_64BIT_FILE_OFFSETS 1 +#elif defined ARITHMETIC_FPOS_T && SIZEOF_FPOS_T == 8 +#define HAS_64BIT_FILE_OFFSETS 1 +#else +#undef HAS_64BIT_FILE_OFFSETS +#endif + + +#endif /* SQUIDCONFH_INCLUDED */ diff --git a/forester/archive/RIO/others/hmmer/squid/squidcore.c b/forester/archive/RIO/others/hmmer/squid/squidcore.c new file mode 100644 index 0000000..9970f0d --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/squidcore.c @@ -0,0 +1,53 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:32 cmzmasek Exp $ + */ + +#include +#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"); +} + + diff --git a/forester/archive/RIO/others/hmmer/squid/sre_ctype.c b/forester/archive/RIO/others/hmmer/squid/sre_ctype.c new file mode 100644 index 0000000..6be7b82 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sre_ctype.c @@ -0,0 +1,39 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:16 cmzmasek Exp $ + */ + +#include +#include "squid.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +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; +} + diff --git a/forester/archive/RIO/others/hmmer/squid/sre_math.c b/forester/archive/RIO/others/hmmer/squid/sre_math.c new file mode 100644 index 0000000..f5ecda2 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sre_math.c @@ -0,0 +1,787 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* sre_math.c + * + * Portability for and extensions to C math library. + * RCS $Id: sre_math.c,v 1.1.1.1 2005/03/22 08:34:32 cmzmasek Exp $ + */ + +#include +#include +#include +#include "squid.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +static int sre_reseed = 0; /* TRUE to reinit sre_random() */ +static int sre_randseed = 666; /* default seed for sre_random() */ + +/* Function: ExponentialRandom() + * Date: SRE, Mon Sep 6 21:24:29 1999 [St. Louis] + * + * Purpose: Pick an exponentially distributed random variable + * 0 > x >= infinity + * + * Args: (void) + * + * Returns: x + */ +float +ExponentialRandom(void) +{ + float x; + + do x = sre_random(); while (x == 0.0); + return -log(x); +} + +/* Function: Gaussrandom() + * + * Pick a Gaussian-distributed random variable + * with some mean and standard deviation, and + * return it. + * + * Based on RANLIB.c public domain implementation. + * Thanks to the authors, Barry W. Brown and James Lovato, + * University of Texas, M.D. Anderson Cancer Center, Houston TX. + * Their implementation is from Ahrens and Dieter, "Extensions + * of Forsythe's method for random sampling from the normal + * distribution", Math. Comput. 27:927-937 (1973). + * + * Impenetrability of the code is to be blamed on its FORTRAN/f2c lineage. + * + */ +float +Gaussrandom(float mean, float stddev) +{ + static float a[32] = { + 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, + 0.626099,0.6744898,0.7245144,0.7764218,0.8305109,0.8871466,0.9467818, + 1.00999,1.077516,1.150349,1.229859,1.318011,1.417797,1.534121,1.67594, + 1.862732,2.153875 + }; + static float d[31] = { + 0.0,0.0,0.0,0.0,0.0,0.2636843,0.2425085,0.2255674,0.2116342,0.1999243, + 0.1899108,0.1812252,0.1736014,0.1668419,0.1607967,0.1553497,0.1504094, + 0.1459026,0.14177,0.1379632,0.1344418,0.1311722,0.128126,0.1252791, + 0.1226109,0.1201036,0.1177417,0.1155119,0.1134023,0.1114027,0.1095039 + }; + static float t[31] = { + 7.673828E-4,2.30687E-3,3.860618E-3,5.438454E-3,7.0507E-3,8.708396E-3, + 1.042357E-2,1.220953E-2,1.408125E-2,1.605579E-2,1.81529E-2,2.039573E-2, + 2.281177E-2,2.543407E-2,2.830296E-2,3.146822E-2,3.499233E-2,3.895483E-2, + 4.345878E-2,4.864035E-2,5.468334E-2,6.184222E-2,7.047983E-2,8.113195E-2, + 9.462444E-2,0.1123001,0.136498,0.1716886,0.2276241,0.330498,0.5847031 + }; + static float h[31] = { + 3.920617E-2,3.932705E-2,3.951E-2,3.975703E-2,4.007093E-2,4.045533E-2, + 4.091481E-2,4.145507E-2,4.208311E-2,4.280748E-2,4.363863E-2,4.458932E-2, + 4.567523E-2,4.691571E-2,4.833487E-2,4.996298E-2,5.183859E-2,5.401138E-2, + 5.654656E-2,5.95313E-2,6.308489E-2,6.737503E-2,7.264544E-2,7.926471E-2, + 8.781922E-2,9.930398E-2,0.11556,0.1404344,0.1836142,0.2790016,0.7010474 + }; + static long i; + static float snorm,u,s,ustar,aa,w,y,tt; + + u = sre_random(); + s = 0.0; + if(u > 0.5) s = 1.0; + u += (u-s); + u = 32.0*u; + i = (long) (u); + if(i == 32) i = 31; + if(i == 0) goto S100; + /* + * START CENTER + */ + ustar = u-(float)i; + aa = *(a+i-1); +S40: + if(ustar <= *(t+i-1)) goto S60; + w = (ustar-*(t+i-1))**(h+i-1); +S50: + /* + * EXIT (BOTH CASES) + */ + y = aa+w; + snorm = y; + if(s == 1.0) snorm = -y; + return (stddev*snorm + mean); +S60: + /* + * CENTER CONTINUED + */ + u = sre_random(); + w = u*(*(a+i)-aa); + tt = (0.5*w+aa)*w; + goto S80; +S70: + tt = u; + ustar = sre_random(); +S80: + if(ustar > tt) goto S50; + u = sre_random(); + if(ustar >= u) goto S70; + ustar = sre_random(); + goto S40; +S100: + /* + * START TAIL + */ + i = 6; + aa = *(a+31); + goto S120; +S110: + aa += *(d+i-1); + i += 1; +S120: + u += u; + if(u < 1.0) goto S110; + u -= 1.0; +S140: + w = u**(d+i-1); + tt = (0.5*w+aa)*w; + goto S160; +S150: + tt = u; +S160: + ustar = sre_random(); + if(ustar > tt) goto S50; + u = sre_random(); + if(ustar >= u) goto S150; + u = sre_random(); + goto S140; +} + + +/* Function: Linefit() + * + * Purpose: Given points x[0..N-1] and y[0..N-1], fit to + * a straight line y = a + bx. + * a, b, and the linear correlation coefficient r + * are filled in for return. + * + * Args: x - x values of data + * y - y values of data + * N - number of data points + * ret_a - RETURN: intercept + * ret_b - RETURN: slope + * ret_r - RETURN: correlation coefficient + * + * Return: 1 on success, 0 on failure. + */ +int +Linefit(float *x, float *y, int N, float *ret_a, float *ret_b, float *ret_r) +{ + float xavg, yavg; + float sxx, syy, sxy; + int i; + + /* Calculate averages, xavg and yavg + */ + xavg = yavg = 0.0; + for (i = 0; i < N; i++) + { + xavg += x[i]; + yavg += y[i]; + } + xavg /= (float) N; + yavg /= (float) N; + + sxx = syy = sxy = 0.0; + for (i = 0; i < N; i++) + { + sxx += (x[i] - xavg) * (x[i] - xavg); + syy += (y[i] - yavg) * (y[i] - xavg); + sxy += (x[i] - xavg) * (y[i] - yavg); + } + *ret_b = sxy / sxx; + *ret_a = yavg - xavg*(*ret_b); + *ret_r = sxy / (sqrt(sxx) * sqrt(syy)); + return 1; +} + + +/* Function: WeightedLinefit() + * + * Purpose: Given points x[0..N-1] and y[0..N-1] with + * variances (measurement errors) var[0..N-1], + * fit to a straight line y = mx + b. + * + * Method: Algorithm from Numerical Recipes in C, [Press88]. + * + * Return: (void) + * ret_m contains slope; ret_b contains intercept + */ +void +WeightedLinefit(float *x, float *y, float *var, int N, float *ret_m, float *ret_b) +{ + int i; + double s; + double sx, sy; + double sxx, sxy; + double delta; + double m, b; + + s = sx = sy = sxx = sxy = 0.; + for (i = 0; i < N; i++) + { + s += 1./var[i]; + sx += x[i] / var[i]; + sy += y[i] / var[i]; + sxx += x[i] * x[i] / var[i]; + sxy += x[i] * y[i] / var[i]; + } + + delta = s * sxx - (sx * sx); + b = (sxx * sy - sx * sxy) / delta; + m = (s * sxy - sx * sy) / delta; + + *ret_m = m; + *ret_b = b; +} + + +/* Function: Gammln() + * + * Returns the natural log of the gamma function of x. + * x is > 0.0. + * + * Adapted from a public domain implementation in the + * NCBI core math library. Thanks to John Spouge and + * the NCBI. (According to the NCBI, that's Dr. John + * "Gammas Galore" Spouge to you, pal.) + */ +double +Gammln(double x) +{ + int i; + double xx, tx; + double tmp, value; + static double cof[11] = { + 4.694580336184385e+04, + -1.560605207784446e+05, + 2.065049568014106e+05, + -1.388934775095388e+05, + 5.031796415085709e+04, + -9.601592329182778e+03, + 8.785855930895250e+02, + -3.155153906098611e+01, + 2.908143421162229e-01, + -2.319827630494973e-04, + 1.251639670050933e-10 + }; + + /* Protect against x=0. We see this in Dirichlet code, + * for terms alpha = 0. This is a severe hack but it is effective + * and (we think?) safe. (due to GJM) + */ + if (x <= 0.0) return 999999.; + + xx = x - 1.0; + tx = tmp = xx + 11.0; + value = 1.0; + for (i = 10; i >= 0; i--) /* sum least significant terms first */ + { + value += cof[i] / tmp; + tmp -= 1.0; + } + value = log(value); + tx += 0.5; + value += 0.918938533 + (xx+0.5)*log(tx) - tx; + return value; +} + + +/* Vector operations for doubles and floats. + * DNorm(), FNorm() -- normalize a probability vector of length n. + * return 0 if all values were zero. + * DScale(), FScale() -- multiply all items in vector by scale + * DSet(), FSet() -- set all items in vector to value. + * DAdd(), FAdd() -- add vec2 to vec1. + * DDot(), FDot() -- calculate dot product of two vectors. + * DCopy(), FCopy() -- set vec1 to be same as vec2. + * DMax(), FMax() -- return index of maximum element in vec + */ +int +DNorm(double *vec, int n) +{ + int x; + double sum; + + sum = 0.0; + for (x = 0; x < n; x++) sum += vec[x]; + if (sum != 0.0) + for (x = 0; x < n; x++) vec[x] /= sum; + else + { squid_errno = SQERR_DIVZERO; return 0; } + return 1; +} +int +FNorm(float *vec, int n) +{ + int x; + float sum; + + sum = 0.0; + for (x = 0; x < n; x++) sum += vec[x]; + if (sum != 0.0) + for (x = 0; x < n; x++) vec[x] /= sum; + else + { squid_errno = SQERR_DIVZERO; return 0; } + return 1; +} + +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; +} + +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; +} + +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; +} + +/* Functions: DMax(), FMax() + * Date: SRE, Fri Aug 29 11:14:08 1997 (Denver CO) + * + * Purpose: return index of maximum element in vec. + */ +int +DMax(double *vec, int n) +{ + int i; + int best = 0; + + for (i = 1; i < n; i++) + if (vec[i] > vec[best]) best = i; + return best; +} +int +FMax(float *vec, int n) +{ + int i; + int best = 0; + + for (i = 1; i < n; i++) + if (vec[i] > vec[best]) best = i; + return best; +} + + +/* 2D matrix operations + */ +float ** +FMX2Alloc(int rows, int cols) +{ + float **mx; + int r; + + mx = (float **) MallocOrDie(sizeof(float *) * rows); + mx[0] = (float *) MallocOrDie(sizeof(float) * rows * cols); + for (r = 1; r < rows; r++) + mx[r] = mx[0] + r*cols; + return mx; +} +void +FMX2Free(float **mx) +{ + free(mx[0]); + free(mx); +} +double ** +DMX2Alloc(int rows, int cols) +{ + double **mx; + int r; + + mx = (double **) MallocOrDie(sizeof(double *) * rows); + mx[0] = (double *) MallocOrDie(sizeof(double) * rows * cols); + for (r = 1; r < rows; r++) + mx[r] = mx[0] + r*cols; + return mx; +} +void +DMX2Free(double **mx) +{ + free(mx[0]); + free(mx); +} +/* Function: FMX2Multiply() + * + * Purpose: Matrix multiplication. + * Multiply an m x p matrix A by a p x n matrix B, + * giving an m x n matrix C. + * Matrix C must be a preallocated matrix of the right + * size. + */ +void +FMX2Multiply(float **A, float **B, float **C, int m, int p, int n) +{ + int i, j, k; + + for (i = 0; i < m; i++) + for (j = 0; j < n; j++) + { + C[i][j] = 0.; + for (k = 0; k < p; k++) + C[i][j] += A[i][p] * B[p][j]; + } +} + +/* Function: sre_random() + * + * Purpose: Return a uniform deviate from 0.0 to 1.0. + * sre_randseed is a static variable, set + * by sre_srandom(). sre_reseed is a static flag + * raised by sre_srandom(), saying that we need + * to re-initialize. + * [0.0 <= x < 1.0] + * + * Uses a simple linear congruential generator with + * period 2^28. Based on discussion in Robert Sedgewick's + * _Algorithms in C_, Addison-Wesley, 1990. + * + * Requires that long int's have at least 32 bits. + * + * Reliable and portable, but slow. Benchmarks on wol, + * using IRIX cc and IRIX C library rand() and random(): + * sre_random(): 0.8 usec/call + * random(): 0.3 usec/call + * rand(): 0.3 usec/call + */ +#define RANGE 268435456 /* 2^28 */ +#define DIV 16384 /* sqrt(RANGE) */ +#define MULT 72530821 /* my/Cathy's birthdays, x21, x even (Knuth)*/ +float +sre_random(void) +{ + static long rnd; + static int firsttime = 1; + long high1, low1; + long high2, low2; + + if (sre_reseed || firsttime) + { + sre_reseed = firsttime = 0; + if (sre_randseed <= 0) sre_randseed = 666; /* seeds of zero break me */ + high1 = sre_randseed / DIV; low1 = sre_randseed % DIV; + high2 = MULT / DIV; low2 = MULT % DIV; + rnd = (((high2*low1 + high1*low2) % DIV)*DIV + low1*low2) % RANGE; + } + high1 = rnd / DIV; low1 = rnd % DIV; + high2 = MULT / DIV; low2 = MULT % DIV; + rnd = (((high2*low1 + high1*low2) % DIV)*DIV + low1*low2) % RANGE; + + return ((float) rnd / (float) RANGE); +} +#undef RANGE +#undef DIV +#undef MULT + + +/* Function: sre_srandom() + * + * Purpose: Initialize with a random seed. Seed can be + * any integer. + */ +void +sre_srandom(int seed) +{ + if (seed < 0) seed = -1 * seed; + sre_reseed = 1; + sre_randseed = seed; +} + + +/* Functions: DChoose(), FChoose() + * + * Purpose: Make a random choice from a normalized distribution. + * DChoose() is for double-precision vectors; + * FChoose() is for single-precision float vectors. + * Returns the number of the choice. + */ +int +DChoose(double *p, int N) +{ + double roll; /* random fraction */ + double sum; /* integrated prob */ + int i; /* counter over the probs */ + + roll = sre_random(); + sum = 0.0; + for (i = 0; i < N; i++) + { + sum += p[i]; + if (roll < sum) return i; + } + SQD_DASSERT2((fabs(1.0 - sum) < 1e-14)); /* a verification at level 2 */ + return (int) (sre_random() * N); /* bulletproof */ +} +int +FChoose(float *p, int N) +{ + float roll; /* random fraction */ + float sum; /* integrated prob */ + int i; /* counter over the probs */ + + roll = sre_random(); + sum = 0.0; + for (i = 0; i < N; i++) + { + sum += p[i]; + if (roll < sum) return i; + } + SQD_DASSERT2((fabs(1.0f - sum) < 1e-6f)); /* a verification at level 2 */ + return (int) (sre_random() * N); /* bulletproof */ +} + +/* Functions: DLogSum(), FLogSum() + * + * Calculate the sum of a log vector + * *in normal space*, and return the log of the sum. + */ +double +DLogSum(double *logp, int n) +{ + int x; + double max, sum; + + max = logp[0]; + for (x = 1; x < n; x++) + if (logp[x] > max) max = logp[x]; + sum = 0.0; + for (x = 0; x < n; x++) + if (logp[x] > max - 50.) + sum += exp(logp[x] - max); + sum = log(sum) + max; + return sum; +} +float +FLogSum(float *logp, int n) +{ + int x; + float max, sum; + + max = logp[0]; + for (x = 1; x < n; x++) + if (logp[x] > max) max = logp[x]; + sum = 0.0; + for (x = 0; x < n; x++) + if (logp[x] > max - 50.) + sum += exp(logp[x] - max); + sum = log(sum) + max; + return sum; +} + + +/* Function: IncompleteGamma() + * + * Purpose: Returns 1 - P(a,x) where: + * P(a,x) = \frac{1}{\Gamma(a)} \int_{0}^{x} t^{a-1} e^{-t} dt + * = \frac{\gamma(a,x)}{\Gamma(a)} + * = 1 - \frac{\Gamma(a,x)}{\Gamma(a)} + * + * Used in a chi-squared test: for a X^2 statistic x + * with v degrees of freedom, call: + * p = IncompleteGamma(v/2., x/2.) + * to get the probability p that a chi-squared value + * greater than x could be obtained by chance even for + * a correct model. (i.e. p should be large, say + * 0.95 or more). + * + * Method: Based on ideas from Numerical Recipes in C, Press et al., + * Cambridge University Press, 1988. + * + * Args: a - for instance, degrees of freedom / 2 [a > 0] + * x - for instance, chi-squared statistic / 2 [x >= 0] + * + * Return: 1 - P(a,x). + */ +double +IncompleteGamma(double a, double x) +{ + int iter; /* iteration counter */ + + if (a <= 0.) Die("IncompleteGamma(): a must be > 0"); + if (x < 0.) Die("IncompleteGamma(): x must be >= 0"); + + /* For x > a + 1 the following gives rapid convergence; + * calculate 1 - P(a,x) = \frac{\Gamma(a,x)}{\Gamma(a)}: + * use a continued fraction development for \Gamma(a,x). + */ + if (x > a+1) + { + double oldp; /* previous value of p */ + double nu0, nu1; /* numerators for continued fraction calc */ + double de0, de1; /* denominators for continued fraction calc */ + + nu0 = 0.; /* A_0 = 0 */ + de0 = 1.; /* B_0 = 1 */ + nu1 = 1.; /* A_1 = 1 */ + de1 = x; /* B_1 = x */ + + oldp = nu1; + for (iter = 1; iter < 100; iter++) + { + /* Continued fraction development: + * set A_j = b_j A_j-1 + a_j A_j-2 + * B_j = b_j B_j-1 + a_j B_j-2 + * We start with A_2, B_2. + */ + /* j = even: a_j = iter-a, b_j = 1 */ + /* A,B_j-2 are in nu0, de0; A,B_j-1 are in nu1,de1 */ + nu0 = nu1 + ((double)iter - a) * nu0; + de0 = de1 + ((double)iter - a) * de0; + + /* j = odd: a_j = iter, b_j = x */ + /* A,B_j-2 are in nu1, de1; A,B_j-1 in nu0,de0 */ + nu1 = x * nu0 + (double) iter * nu1; + de1 = x * de0 + (double) iter * de1; + + /* rescale */ + if (de1) + { + nu0 /= de1; + de0 /= de1; + nu1 /= de1; + de1 = 1.; + } + /* check for convergence */ + if (fabs((nu1-oldp)/nu1) < 1.e-7) + return nu1 * exp(a * log(x) - x - Gammln(a)); + + oldp = nu1; + } + Die("IncompleteGamma(): failed to converge using continued fraction approx"); + } + else /* x <= a+1 */ + { + double p; /* current sum */ + double val; /* current value used in sum */ + + /* For x <= a+1 we use a convergent series instead: + * P(a,x) = \frac{\gamma(a,x)}{\Gamma(a)}, + * where + * \gamma(a,x) = e^{-x}x^a \sum_{n=0}{\infty} \frac{\Gamma{a}}{\Gamma{a+1+n}} x^n + * which looks appalling but the sum is in fact rearrangeable to + * a simple series without the \Gamma functions: + * = \frac{1}{a} + \frac{x}{a(a+1)} + \frac{x^2}{a(a+1)(a+2)} ... + * and it's obvious that this should converge nicely for x <= a+1. + */ + + p = val = 1. / a; + for (iter = 1; iter < 10000; iter++) + { + val *= x / (a+(double)iter); + p += val; + + if (fabs(val/p) < 1.e-7) + return 1. - p * exp(a * log(x) - x - Gammln(a)); + } + Die("IncompleteGamma(): failed to converge using series approx"); + } + /*NOTREACHED*/ + return 0.; +} + diff --git a/forester/archive/RIO/others/hmmer/squid/sre_string.c b/forester/archive/RIO/others/hmmer/squid/sre_string.c new file mode 100644 index 0000000..15255ba --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sre_string.c @@ -0,0 +1,524 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* sre_string.c + * + * my library of extra string functions. Some for portability + * across UNIXes + * + * RCS $Id: sre_string.c,v 1.1.1.1 2005/03/22 08:34:25 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#include +#include "squid.h" + +/* Function: Strdup() + * + * Purpose: Implementation of the common (but non-ANSI) function + * strdup(). Robust against being passed a NULL pointer. + * + */ +char * +Strdup(char *s) +{ + char *new; + if (s == NULL) return NULL; + if ((new = (char *) malloc (strlen(s) +1)) == NULL) return NULL; + strcpy(new, s); + return new; +} + +/* Function: StringChop() + * Date: SRE, Wed Oct 29 12:10:02 1997 [TWA 721] + * + * Purpose: Chop trailing whitespace off of a string. + */ +void +StringChop(char *s) +{ + int i; + + i = strlen(s) - 1; /* set i at last char in string */ + while (i >= 0 && isspace((int) s[i])) i--; /* i now at last non-whitespace char, or -1 */ + s[i+1] = '\0'; +} + +int +Strinsert(char *s1, /* string to insert a char into */ + char c, /* char to insert */ + int pos) /* position in s1 to insert c at */ +{ + char oldc; + char *s; + + for (s = s1 + pos; c; s++) + { + /* swap current char for inserted one */ + oldc = *s; /* pick up current */ + *s = c; /* put down inserted one */ + c = oldc; /* old becomes next to insert */ + } + *s = '\0'; + + return 1; +} + + +int +Strdelete(char *s1, /* string to delete a char from */ + int pos) /* position of char to delete 0..n-1 */ +{ + char *s; + + for (s = s1 + pos; *s; s++) + *s = *(s + 1); + + return 1; +} + +void +s2lower(char *s) +{ + for (; *s != '\0'; s++) + *s = sre_tolower((int) *s); +} + +void +s2upper(char *s) +{ + for (; *s != '\0'; s++) + *s = sre_toupper((int) *s); +} + + +void * +sre_malloc(char *file, int line, size_t size) +{ + void *ptr; + + SQD_DPRINTF3(("MALLOC: %d bytes (file %s line %d)\n", size, file, line)); + if ((ptr = malloc (size)) == NULL) + Die("malloc of %ld bytes failed: file %s line %d", size, file, line); + return ptr; +} + +void * +sre_realloc(char *file, int line, void *p, size_t size) +{ + void *ptr; + + if ((ptr = realloc(p, size)) == NULL) + Die("realloc of %ld bytes failed: file %s line %d", size, file, line); + return ptr; +} + + + +/* Function: Free2DArray(), Free3DArray() + * Date: SRE, Tue Jun 1 14:47:14 1999 [St. Louis] + * + * Purpose: Convenience functions for free'ing 2D + * and 3D pointer arrays. Tolerates any of the + * pointers being NULL, to allow "sparse" + * arrays. + * + * Args: p - array to be freed + * dim1 - n for first dimension + * dim2 - n for second dimension + * + * e.g. a 2d array is indexed p[0..dim1-1][] + * a 3D array is indexed p[0..dim1-1][0..dim2-1][] + * + * Returns: void + * + * Diagnostics: (void) + * "never fails" + */ +void +Free2DArray(void **p, int dim1) +{ + int i; + + if (p != NULL) { + for (i = 0; i < dim1; i++) + if (p[i] != NULL) free(p[i]); + free(p); + } +} +void +Free3DArray(void ***p, int dim1, int dim2) +{ + int i, j; + + if (p != NULL) { + for (i = 0; i < dim1; i++) + if (p[i] != NULL) { + for (j = 0; j < dim2; j++) + if (p[i][j] != NULL) free(p[i][j]); + free(p[i]); + } + free(p); + } +} + + +/* Function: RandomSequence() + * + * Purpose: Generate an iid symbol sequence according + * to some alphabet, alphabet_size, probability + * distribution, and length. Return the + * sequence. + * + * Args: alphabet - e.g. "ACGT" + * p - probability distribution [0..n-1] + * n - number of symbols in alphabet + * len - length of generated sequence + * + * Return: ptr to random sequence, or NULL on failure. + */ +char * +RandomSequence(char *alphabet, float *p, int n, int len) +{ + char *s; + int x; + + s = (char *) MallocOrDie (sizeof(char) * (len+1)); + for (x = 0; x < len; x++) + s[x] = alphabet[FChoose(p,n)]; + s[x] = '\0'; + return s; +} + +/* Function: sre_fgets() + * Date: SRE, Thu May 13 10:56:28 1999 [St. Louis] + * + * Purpose: Dynamic allocation version of fgets(), + * capable of reading unlimited line lengths. + * + * Args: buf - ptr to a string (may be reallocated) + * n - ptr to current allocated length of buf, + * (may be changed) + * fp - open file ptr for reading + * + * Before the first call to sre_fgets(), + * buf should be initialized to NULL and n to 0. + * They're a linked pair, so don't muck with the + * allocation of buf or the value of n while + * you're still doing sre_fgets() calls with them. + * + * Returns: ptr to the buffer on success. + * NULL on EOF (buf isn't to be used in this case) + * sre_fgets() *always* results in an allocation + * in buf. + * + * The reason to have it return a ptr to buf + * is that it makes wrapper macros easy; see + * MSAFileGetLine() for an example. + * + * Example: char *buf; + * int n; + * FILE *fp; + * + * fp = fopen("my_file", "r"); + * buf = NULL; + * n = 0; + * while (sre_fgets(&buf, &n, fp) != NULL) + * { + * do stuff with buf; + * } + */ +char * +sre_fgets(char **buf, int *n, FILE *fp) +{ + char *s; + int len; + int pos; + + if (*n == 0) + { + *buf = MallocOrDie(sizeof(char) * 128); + *n = 128; + } + + /* Simple case 1. We're sitting at EOF, or there's an error. + * fgets() returns NULL, so we return NULL. + */ + if (fgets(*buf, *n, fp) == NULL) return NULL; + + /* Simple case 2. fgets() got a string, and it reached EOF. + * return success status, so caller can use + * the last line; on the next call we'll + * return the 0 for the EOF. + */ + if (feof(fp)) return *buf; + + /* Simple case 3. We got a complete string, with \n, + * and don't need to extend the buffer. + */ + len = strlen(*buf); + if ((*buf)[len-1] == '\n') return *buf; + + /* The case we're waiting for. We have an incomplete string, + * and we have to extend the buffer one or more times. Make + * sure we overwrite the previous fgets's \0 (hence +(n-1) + * in first step, rather than 128, and reads of 129, not 128). + */ + pos = (*n)-1; + while (1) { + *n += 128; + *buf = ReallocOrDie(*buf, sizeof(char) * (*n)); + s = *buf + pos; + if (fgets(s, 129, fp) == NULL) return *buf; + len = strlen(s); + if (s[len-1] == '\n') return *buf; + pos += 128; + } + /*NOTREACHED*/ +} + +/* Function: sre_strcat() + * Date: SRE, Thu May 13 09:36:32 1999 [St. Louis] + * + * Purpose: Dynamic memory version of strcat(). + * appends src to the string that dest points to, + * extending allocation for dest if necessary. + * + * One timing experiment (100 successive appends of + * 1-255 char) shows sre_strcat() has about a 20% + * overhead relative to strcat(). However, if optional + * length info is passed, sre_strcat() is about 30% + * faster than strcat(). + * + * Args: dest - ptr to string (char **), '\0' terminated + * ldest - length of dest, if known; or -1 if length unknown. + * src - string to append to dest, '\0' terminated + * lsrc - length of src, if known; or -1 if length unknown. + * + * dest may be NULL, in which case this is + * the equivalent of dest = Strdup(src). + * + * src may also be NULL, in which case + * dest is unmodified (but why would you want to pass + * a NULL src?) + * + * if both dest and src are NULL, dest is + * unmodified; it stays NULL. + * + * the length parameters are optional. If a -1 + * is passed, sre_strcat() will call strlen() to + * determine the length itself. Passing length + * info saves the strlen() calls and can speed things + * up if lots of successive appends need to be done. + * + * Returns: new length of dest (>=0 on success); + * dest is (probably) reallocated, and modified + * to a longer string, '\0' terminated. + */ +int +sre_strcat(char **dest, int ldest, char *src, int lsrc) +{ + int len1, len2; + + if (ldest < 0) len1 = ((*dest == NULL) ? 0 : strlen(*dest)); + else len1 = ldest; + + if (lsrc < 0) len2 = (( src == NULL) ? 0 : strlen(src)); + else len2 = lsrc; + + if (len2 == 0) return len1; + + if (*dest == NULL) *dest = MallocOrDie(sizeof(char) * (len2+1)); + else *dest = ReallocOrDie(*dest, sizeof(char) * (len1+len2+1)); + + memcpy((*dest)+len1, src, len2+1); + return len1+len2; +} + +/* Function: sre_strtok() + * Date: SRE, Wed May 19 16:30:20 1999 [St. Louis] + * + * Purpose: Thread-safe version of strtok(). + * + * Returns ptr to next token in a string: skips + * until it reaches a character that is not in the delim + * string, and sets beginning of token. Skips to + * next delim character (or '\0') to set the end; replaces that + * character with '\0'. + * If there's still more string left, sets s to point to next + * character after the '\0' that was written, so successive + * calls extract tokens in succession. If there was no string + * left, s points at the terminal '\0'. + * + * If no token is found, returns NULL. + * + * Also returns the length of the token, which + * may save us a strlen() call in some applications. + * + * Limitations: + * *s can't be a constant string, since we write to it. + * + * Example: + * char *tok; + * int len; + * char *s; + * char buf[50] = "This is a sentence."; + * + * s = buf; + * tok = sre_strtok(&s, " ", &len); + * tok is "This"; s is "is a sentence."; len is 4. + * tok = sre_strtok(&s, " ", &len); + * tok is "is"; s is " a sentence."; len is 2. + * tok = sre_strtok(&s, " ", &len); + * tok is "a"; s is "sentence."; len is 1. + * tok = sre_strtok(&s, " ", &len); + * tok is "sentence."; s is "\0"; len is 9. + * tok = sre_strtok(&s, " ", &len); + * tok is NULL; s is "\0", len is undefined. + * + * Args: s - a tmp, modifiable ptr to string + * delim - characters that delimits tokens + * len - RETURN: length of token; pass NULL if not wanted + * + * Returns: ptr to next token, or NULL if there aren't any. + */ +char * +sre_strtok(char **s, char *delim, int *len) +{ + char *begin, *end; + int n; + + begin = *s; + begin += strspn(begin, delim); + if (! *begin) return NULL; + + n = strcspn(begin, delim); + end = begin + n; + if (*end == '\0') { *s = end;} + else { + *end = '\0'; + *s = end+1; + } + + if (len != NULL) *len = n; + return begin; +} + + + +/* Function: sre_strdup() + * Date: SRE, Wed May 19 17:57:28 1999 [St. Louis] + * + * Purpose: A version of the common but non-ANSI strdup() + * function. Can pass len, if known, to save a + * strlen() call. + * + * Args: s - string to duplicate + * n - length of string, if known; -1 if unknown. + * + * Returns: allocated copy of string. + * NULL on failure. + */ +char * +sre_strdup(char *s, int n) +{ + char *new; + + if (s == NULL) return NULL; + if (n < 0) n = strlen(s); + new = MallocOrDie (sizeof(char) * (n+1)); + strcpy(new, s); + return new; +} + + +/* Function: sre_strncpy() + * Date: SRE, Tue Jun 22 10:10:46 1999 [Sanger Centre] + * + * Purpose: a strncpy() that makes sure it adds a trailing \0. + * + * Args: s1 - string to copy to (allocated n+1 or larger) + * s2 - string to copy from + * n - number of chars to copy + * + * Returns: s1. + * Done only for consistency with strncpy(). Not clear + * why it's useful for a strncpy() to return s1. + */ +char * +sre_strncpy(char *s1, char *s2, int n) +{ + strncpy(s1,s2,n); + s1[n] = '\0'; + return s1; +} + +/* Function: IsBlankline() + * Date: SRE, Fri Jun 18 14:36:08 1999 [St. Louis] + * + * Purpose: Returns TRUE if string consists solely of whitespace. + * + * Args: s - string to check + */ +int +IsBlankline(char *s) +{ + for (; *s != '\0'; s++) + if (! isspace(*s)) return FALSE; + return TRUE; +} + + + +#ifdef CUBS_WIN +/* A timing test for sre_strcat() + * cc -O2 -g sre_string.c sre_ctype.c sqerror.c sre_math.c hsregex.c -lm + * 15.200u - 5.360u = 9.84u if sre_strcat() with no length info passed + * 13.660u - 5.360u = 8.30u if strcat(), with a single malloc(). + * 11.370u - 5.360u = 6.01u if sre_strcat() with length info passed. + */ +int main(void) +{ + float p[4] = {0.25, 0.25, 0.25, 0.25}; + int buflen; + int len; + int nappends; + int nstrings; + char *s1 = NULL; + char *s2; + int i; + + nappends = 100; + nstrings = 1000; + while (nstrings--) + { + /* s1 = malloc(sizeof(char) * (255*nappends+1)); + s1[0] = '\0'; + */ + + s1 = NULL; + len = 0; + for (i = 0; i < nappends; i++) + { + buflen = CHOOSE(255) + 1; + s2 = RandomSequence("ACGT", p, 4, buflen); + + /* strcat(s1,s2); */ + if ((len = sre_strcat(&s1, len, s2, buflen)) < 0) exit(1); + free(s2); + } + free(s1); + } + exit(0); +} +#endif /*CUBS_WIN*/ diff --git a/forester/archive/RIO/others/hmmer/squid/sreformat_main.c b/forester/archive/RIO/others/hmmer/squid/sreformat_main.c new file mode 100644 index 0000000..709f5ba --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/sreformat_main.c @@ -0,0 +1,251 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* sreformat_main.c + * Mon Sep 13 13:06:51 1993 + * + * sreformat - reformat sequence files. + * renamed sreformat from reformat, Tue Jun 30 10:53:38 1998 + * + * CVS $Id: sreformat_main.c,v 1.1.1.1 2005/03/22 08:34:25 cmzmasek Exp $ + */ + + +#include +#include +#include +#include "squid.h" +#include "msa.h" + +static char banner[] = "sreformat - convert between sequence formats"; + +static char usage[] = "\ +Usage: sreformat [-options] \n\ + Output format choices: Unaligned Aligned\n\ + ----------- -------\n\ + fasta stockholm\n\ + embl msf\n\ + genbank a2m\n\ + gcg phylip\n\ + gcgdata clustal\n\ + pir selex\n\ + raw eps\n\n\ + Available options are:\n\ + -h : help; print brief help on version and usage\n\ + -d : force DNA alphabet for nucleic acid sequence\n\ + -r : force RNA alphabet for nucleic acid sequence\n\ + -l : force lower case\n\ + -u : force upper case\n\ + -x : convert non-IUPAC chars in DNA to N's for IUPAC/BLAST compatibility\n\ +"; + +static char experts[] = "\ + Expert options:\n\ + --informat : input sequence file is in format \n\ + --mingap : remove columns containing all gaps (seqfile=alignment)\n\ + --nogap : remove columns containing any gaps (seqfile=alignment)\n\ + --pfam : modify Stockholm format output to be in PFAM style (1 line/seq)\n\ + --sam : try to convert gaps to SAM style (seqfile=alignment)\n\ + --samfrac : convert to SAM convention; cols w/ gapfrac > x are inserts\n\ + --gapsym : convert all gaps to character ''\n\ +"; + +static struct opt_s OPTIONS[] = { + { "-d", TRUE, sqdARG_NONE }, + { "-h", TRUE, sqdARG_NONE }, + { "-l", TRUE, sqdARG_NONE }, + { "-r", TRUE, sqdARG_NONE }, + { "-u", TRUE, sqdARG_NONE }, + { "-x", TRUE, sqdARG_NONE }, + { "--gapsym", FALSE, sqdARG_CHAR }, + { "--informat",FALSE, sqdARG_STRING }, + { "--mingap", FALSE, sqdARG_NONE }, + { "--nogap", FALSE, sqdARG_NONE }, + { "--pfam", FALSE, sqdARG_NONE }, + { "--sam", FALSE, sqdARG_NONE }, + { "--samfrac", FALSE, sqdARG_FLOAT }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *seqfile; /* name of sequence file */ + char *format; + SQFILE *dbfp; /* open sequence file */ + int fmt; /* format of seqfile */ + int outfmt; /* output format */ + char *seq; /* sequence */ + SQINFO sqinfo; + int i; + + int force_rna; /* TRUE to force RNA alphabet */ + int force_dna; /* TRUE to force DNA alphabet */ + int force_lower; /* TRUE to force lower case */ + int force_upper; /* TRUE to force upper case */ + int x_is_bad; /* TRUE to convert X to N */ + int do_mingap; /* TRUE to remove columns containing all gaps */ + int do_nogap; /* TRUE to remove columns containing any gaps */ + int do_pfam; /* TRUE to make SELEX -> PFAM */ + int samize; /* TRUE to SAMize an A2M conversion */ + float samfrac; /* -1, or gap fraction for a SAM conversion */ + int expect_alignment; /* TRUE to expect an input alignment to convert */ + char gapsym; /* 0 if unset; else = character to use for gaps */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse command line + ***********************************************/ + + force_rna = FALSE; + force_dna = FALSE; + force_upper = FALSE; + force_lower = FALSE; + x_is_bad = FALSE; + do_mingap = FALSE; + do_nogap = FALSE; + do_pfam = FALSE; + samize = FALSE; + samfrac = -1.0; + fmt = SQFILE_UNKNOWN; + expect_alignment = FALSE; + gapsym = 0; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-a") == 0) expect_alignment= TRUE; + else if (strcmp(optname, "-d") == 0) force_dna = TRUE; + else if (strcmp(optname, "-l") == 0) force_lower = TRUE; + else if (strcmp(optname, "-r") == 0) force_rna = TRUE; + else if (strcmp(optname, "-u") == 0) force_upper = TRUE; + else if (strcmp(optname, "-x") == 0) x_is_bad = TRUE; + else if (strcmp(optname, "--gapsym") == 0) gapsym = *optarg; + else if (strcmp(optname, "--mingap") == 0) do_mingap = TRUE; + else if (strcmp(optname, "--nogap") == 0) do_nogap = TRUE; + else if (strcmp(optname, "--pfam") == 0) do_pfam = TRUE; + else if (strcmp(optname, "--sam") == 0) samize = TRUE; + else if (strcmp(optname, "--samfrac") == 0) samfrac = atof(optarg); + else if (strcmp(optname, "--informat") == 0) { + fmt = String2SeqfileFormat(optarg); + if (fmt == SQFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc - optind != 2) + Die("%s\n", usage); + if (force_lower && force_upper) + Die("Can't force both upper case and lower case. Stop trying to confuse me.\n%s", + usage); + if (force_rna && force_dna) + Die("Can't force both RNA and DNA. Stop trying to find bugs. You'll be sorry.\n%s", + usage); + + format = argv[optind]; optind++; + seqfile = argv[optind]; optind++; + + /*********************************************** + * Figure out what format we're supposed to write + ***********************************************/ + + if ((outfmt = String2SeqfileFormat(format)) == SQFILE_UNKNOWN) + Die("Unknown output format %s\n%s", format, usage); + + /*********************************************** + * Reformat the file, printing to stdout. + ***********************************************/ + + /* If the output format is an alignment, then the input format + * has to be an alignment. + */ + if (IsAlignmentFormat(outfmt)) + { + MSAFILE *afp; + MSA *msa; + + if ((afp = MSAFileOpen(seqfile, fmt, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", seqfile); + + while ((msa = MSAFileRead(afp)) != NULL) + { + /* If asked, convert upper/lower convention and + * gap character conventions now + */ + if (do_mingap) MSAMingap(msa); + if (do_nogap) MSANogap(msa); + if (gapsym) AlignmentHomogenousGapsym(msa->aseq, msa->nseq, msa->alen, gapsym); + if (samize) SAMizeAlignment(msa->aseq, msa->nseq, msa->alen); + if (samfrac >= 0) SAMizeAlignmentByGapFrac(msa->aseq, msa->nseq, msa->alen, samfrac); + + for (i = 0; i < msa->nseq; i++) + { + if (force_dna) ToDNA(msa->aseq[i]); + if (force_rna) ToRNA(msa->aseq[i]); + if (x_is_bad) ToIUPAC(msa->aseq[i]); + if (force_lower) s2lower(msa->aseq[i]); + if (force_upper) s2upper(msa->aseq[i]); + } + + /* This code block can be replaced with a + * MSAFileWrite() call someday... SRE Sun Apr 22 19:17:19 2001 + */ + switch (outfmt) { + case MSAFILE_A2M: WriteA2M(stdout, msa); break; + case MSAFILE_CLUSTAL: WriteClustal(stdout, msa); break; + case MSAFILE_MSF: WriteMSF(stdout, msa); break; + case MSAFILE_PHYLIP: WritePhylip(stdout, msa); break; + case MSAFILE_SELEX: + if (do_pfam) WriteSELEXOneBlock(stdout, msa); + else WriteSELEX(stdout, msa); + break; + case MSAFILE_EPS: EPSWriteSmallMSA(stdout, msa); break; + case MSAFILE_STOCKHOLM: + if (do_pfam) WriteStockholmOneBlock(stdout, msa); + else WriteStockholm(stdout, msa); + break; + default: + Die("can't write. no such alignment format %d\n", outfmt); + } + + MSAFree(msa); + } + MSAFileClose(afp); + } + else + { + if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL) + Die("Failed to open sequence file %s for reading", seqfile); + + while (ReadSeq(dbfp, fmt, &seq, &sqinfo)) + { + if (force_dna) ToDNA(seq); + if (force_rna) ToRNA(seq); + if (x_is_bad) ToIUPAC(seq); + if (force_lower) s2lower(seq); + if (force_upper) s2upper(seq); + + WriteSeq(stdout, outfmt, seq, &sqinfo); + FreeSequence(seq, &sqinfo); + } + SeqfileClose(dbfp); + } + + return 0; +} + diff --git a/forester/archive/RIO/others/hmmer/squid/ssi.c b/forester/archive/RIO/others/hmmer/squid/ssi.c new file mode 100644 index 0000000..04bb4a5 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/ssi.c @@ -0,0 +1,1504 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +#include +#include +#include +#include +#include +#include +#include "squid.h" +#include "ssi.h" + +static sqd_uint32 v20magic = 0xf3f3e9b1; /* SSI 1.0: "ssi1" + 0x80808080 */ +static sqd_uint32 v20swap = 0xb1e9f3f3; /* byteswapped */ + +static int read_i16(FILE *fp, sqd_uint16 *ret_result); +static int read_i32(FILE *fp, sqd_uint32 *ret_result); +static int read_i64(FILE *fp, sqd_uint64 *ret_result); +static int read_offset(FILE *fp, char mode, SSIOFFSET *ret_offset); +static int write_i16(FILE *fp, sqd_uint16 n); +static int write_i32(FILE *fp, sqd_uint32 n); +static int write_i64(FILE *fp, sqd_uint64 n); +static int write_offset(FILE *fp, SSIOFFSET *offset); +static int binary_search(SSIFILE *sfp, char *key, int klen, SSIOFFSET *base, + sqd_uint32 recsize, sqd_uint32 maxidx); +static int indexfile_position(SSIFILE *sfp, SSIOFFSET *base, sqd_uint32 len, + sqd_uint32 n); +static void clear_ssifile(SSIFILE *sfp); +static int write_index(FILE *fp, SSIINDEX *g); +static int write_index_chunk(SSIINDEX *g); +static sqd_uint64 current_chunk_size(SSIINDEX *g); +static int load_indexfile(SSIFILE *sfp); + +/* Function: SSIOpen() + * Date: SRE, Sun Dec 31 12:40:03 2000 [St. Louis] + * + * Purpose: Opens the SSI index file {filename} and returns + * a SSIFILE * stream thru {ret_sfp}. + * The caller must eventually close this stream using + * SSIClose(). More than one index file can be open + * at once. + * + * Args: filename - full path to a SSI index file + * + * Returns: Returns 0 on success, nonzero on failure. + */ +int +SSIOpen(char *filename, SSIFILE **ret_sfp) +{ + SSIFILE *sfp = NULL; + int status; + if ((sfp = malloc(sizeof(SSIFILE))) == NULL) return SSI_ERR_MALLOC; + if ((sfp->fp = fopen(filename, "rb")) == NULL) return SSI_ERR_NOFILE; + status = load_indexfile(sfp); + *ret_sfp = sfp; + return status; +} +/* load_indexfile(): given a SSIFILE structure with an open and positioned + * stream (fp) -- but no other data loaded -- read the next SSIFILE + * in from disk. We use this routine without its SSIOpen() wrapper + * as part of the external mergesort when creating large indices. + */ +static int +load_indexfile(SSIFILE *sfp) +{ + sqd_uint32 magic; + sqd_uint16 i; /* counter over files */ + int status; /* overall return status if an error is thrown */ + + status = SSI_ERR_BADFORMAT; /* default: almost every kind of error is a bad format error */ + + sfp->filename = NULL; + sfp->fileformat = NULL; + sfp->fileflags = NULL; + sfp->bpl = NULL; + sfp->rpl = NULL; + sfp->nfiles = 0; + if (! read_i32(sfp->fp, &magic)) {status = SSI_ERR_BADMAGIC; goto FAILURE; } + if (magic != v20magic && magic != v20swap) {status = SSI_ERR_BADMAGIC; goto FAILURE; } + if (! read_i32(sfp->fp, &(sfp->flags))) goto FAILURE; + + /* If we have 64-bit offsets, make sure we can deal with them. + */ +#ifndef HAS_64BIT_FILE_OFFSETS + if ((sfp->flags & SSI_USE64_INDEX) || + (sfp->flags & SSI_USE64)) + { status = SSI_ERR_NO64BIT; goto FAILURE; } +#endif + + sfp->imode = (sfp->flags & SSI_USE64_INDEX) ? SSI_OFFSET_I64 : SSI_OFFSET_I32; + sfp->smode = (sfp->flags & SSI_USE64) ? SSI_OFFSET_I64 : SSI_OFFSET_I32; + + if (! read_i16(sfp->fp, &(sfp->nfiles))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->nprimary))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->nsecondary))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->flen))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->plen))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->slen))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->frecsize))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->precsize))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->srecsize))) goto FAILURE; + + if (! read_offset(sfp->fp, sfp->imode, &(sfp->foffset))) goto FAILURE; + if (! read_offset(sfp->fp, sfp->imode, &(sfp->poffset))) goto FAILURE; + if (! read_offset(sfp->fp, sfp->imode, &(sfp->soffset))) goto FAILURE; + + /* Read the file information and keep it. + * We expect the number of files to be small, so reading it + * once should be advantageous overall. If SSI ever had to + * deal with large numbers of files, you'd probably want to + * read file information on demand. + */ + if (sfp->nfiles == 0) goto FAILURE; + if ((sfp->filename=malloc(sizeof(char *) *sfp->nfiles)) == NULL) {status = SSI_ERR_MALLOC; goto FAILURE; } + for (i = 0; i < sfp->nfiles; i++) sfp->filename[i] = NULL; + if ((sfp->fileformat=malloc(sizeof(sqd_uint32)*sfp->nfiles)) == NULL) {status = SSI_ERR_MALLOC; goto FAILURE; } + if ((sfp->fileflags =malloc(sizeof(sqd_uint32)*sfp->nfiles)) == NULL) {status = SSI_ERR_MALLOC; goto FAILURE; } + if ((sfp->bpl =malloc(sizeof(sqd_uint32)*sfp->nfiles)) == NULL) {status = SSI_ERR_MALLOC; goto FAILURE; } + if ((sfp->rpl =malloc(sizeof(sqd_uint32)*sfp->nfiles)) == NULL) {status = SSI_ERR_MALLOC; goto FAILURE; } + + for (i = 0; i < sfp->nfiles; i++) + { + /* We have to explicitly position, because header and file + * records may expand in the future; frecsize and foffset + * give us forwards compatibility. + */ + if (indexfile_position(sfp, &(sfp->foffset), sfp->frecsize, i) !=0) goto FAILURE; + if ((sfp->filename[i] =malloc(sizeof(char)*sfp->flen)) == NULL) {status = SSI_ERR_MALLOC; goto FAILURE; } + if (fread(sfp->filename[i],sizeof(char),sfp->flen, sfp->fp)!=sfp->flen) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->fileformat[i]))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->fileflags[i]))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->bpl[i]))) goto FAILURE; + if (! read_i32(sfp->fp, &(sfp->rpl[i]))) goto FAILURE; + } + + /* Success. Return 0. + */ + return 0; + + FAILURE: + /* Failure: free the damaged structure, return status code. + */ + SSIClose(sfp); + return status; +} + + + +/* Function: SSIGetOffsetByName() + * Date: SRE, Sun Dec 31 13:55:31 2000 [St. Louis] + * + * Purpose: Looks up the string {key} in the open index {sfp}. + * {key} can be either a primary or secondary key. If {key} + * is found, {*ret_fh} contains a unique handle on + * the file that contains {key} (suitable for an SSIFileInfo() + * call, or for comparison to the handle of the last file + * that was opened for retrieval), and {offset} is filled + * in with the offset in that file. + * + * Args: sfp - open index file + * key - string to search for + * ret_fh - RETURN: handle on file that key is in + * ret_offset - RETURN: offset of the start of that key's record + * + * Returns: 0 on success. + * non-zero on error. + */ +int +SSIGetOffsetByName(SSIFILE *sfp, char *key, int *ret_fh, + SSIOFFSET *ret_offset) +{ + int status; + sqd_uint16 fnum; + + /* Look in the primary keys. + */ + status = binary_search(sfp, key, sfp->plen, &(sfp->poffset), sfp->precsize, + sfp->nprimary); + if (status == 0) { + /* We found it as a primary key; get our data & return. + */ + if (! read_i16(sfp->fp, &fnum)) return SSI_ERR_NODATA; + *ret_fh = (int) fnum; + if (! read_offset(sfp->fp, sfp->smode, ret_offset)) return SSI_ERR_NODATA; + + return 0; /* success! (we don't need the other key data) */ + } else if (status == SSI_ERR_NO_SUCH_KEY) { + /* Not in the primary keys? OK, try the secondary keys. + */ + if (sfp->nsecondary > 0) { + char *pkey; + status = binary_search(sfp, key, sfp->slen, &(sfp->soffset), sfp->srecsize, + sfp->nsecondary); + if (status != 0) return status; + if ((pkey = malloc(sizeof(char) * sfp->plen)) == NULL) return SSI_ERR_MALLOC; + if (fread(pkey, sizeof(char), sfp->plen, sfp->fp) != sfp->plen) return SSI_ERR_NODATA; + + status = SSIGetOffsetByName(sfp, pkey, ret_fh, ret_offset); + free(pkey); + } + return status; + + } else return status; + /*NOTREACHED*/ +} + +/* Function: SSIGetOffsetByNumber() + * Date: SRE, Mon Jan 1 19:42:42 2001 [St. Louis] + * + * Purpose: Looks up primary key #{n} in the open index {sfp}. + * {n} ranges from 0..nprimary-1. When key #{n} + * is found, {*ret_fh} contains a unique + * handle on the file that contains {key} (suitable + * for an SSIFileInfo() call, or for comparison to + * the handle of the last file that was opened for retrieval), + * and {offset} is filled in with the offset in that file. + * + * Args: sfp - open index file + * n - primary key number to retrieve. + * ret_fh - RETURN: handle on file that key is in + * ret_offset - RETURN: offset of the start of that key's record + * + * Returns: 0 on success. + * non-zero on error. + */ +int +SSIGetOffsetByNumber(SSIFILE *sfp, int n, int *ret_fh, SSIOFFSET *ret_offset) +{ + sqd_uint16 fnum; + char *pkey; + + if (n >= sfp->nprimary) return SSI_ERR_NO_SUCH_KEY; + if (indexfile_position(sfp, &(sfp->poffset), sfp->precsize, n) != 0) + return SSI_ERR_SEEK_FAILED; + + if ((pkey = malloc(sizeof(char) * sfp->plen)) == NULL) return SSI_ERR_MALLOC; + if (fread(pkey, sizeof(char), sfp->plen, sfp->fp) != sfp->plen) return SSI_ERR_NODATA; + if (! read_i16(sfp->fp, &fnum)) return SSI_ERR_NODATA; + if (! read_offset(sfp->fp, sfp->smode, ret_offset)) return SSI_ERR_NODATA; + *ret_fh = fnum; + free(pkey); + return 0; +} + +/* Function: SSIGetSubseqOffset() + * Date: SRE, Mon Jan 1 19:49:31 2001 [St. Louis] + * + * Purpose: Implements SSI_FAST_SUBSEQ. + * + * Looks up a primary or secondary {key} in the open + * index {sfp}. Asks for the nearest offset to a + * subsequence starting at position {requested_start} + * in the sequence (numbering the sequence 1..L). + * If {key} is found, on return, {ret_fh} + * contains a unique handle on the file that contains + * {key} (suitable for an SSIFileInfo() call, or for + * comparison to the handle of the last file that was + * opened for retrieval); {record_offset} contains the + * disk offset to the start of the record; {data_offset} + * contains the disk offset either exactly at the requested + * residue, or at the start of the line containing the + * requested residue; {ret_actual_start} contains the + * coordinate (1..L) of the first valid residue at or + * after {data_offset}. {ret_actual_start} is <= + * {requested_start}. + * + * Args: sfp - open index file + * key - primary or secondary key to find + * requested_start - residue we'd like to start at (1..L) + * ret_fh - RETURN: handle for file the key is in + * record_offset - RETURN: offset of entire record + * data_offset - RETURN: offset of subseq (see above) + * ret_actual_start- RETURN: coord (1..L) of residue at data_offset + * + * Returns: 0 on success, non-zero on failure. + */ +int +SSIGetSubseqOffset(SSIFILE *sfp, char *key, int requested_start, + int *ret_fh, SSIOFFSET *record_offset, + SSIOFFSET *data_offset, int *ret_actual_start) +{ + int status; + sqd_uint32 len; + int r, b, i, l; /* tmp variables for "clarity", to match docs */ + + /* Look up the key. Rely on the fact that SSIGetOffsetByName() + * leaves the index file positioned at the rest of the data for this key. + */ + status = SSIGetOffsetByName(sfp, key, ret_fh, record_offset); + if (status != 0) return status; + + /* Check that we're allowed to do subseq lookup on that file. + */ + if (! (sfp->fileflags[*ret_fh] & SSI_FAST_SUBSEQ)) + return SSI_ERR_NO_SUBSEQS; + + /* Read the data we need for subseq lookup + */ + if (! read_offset(sfp->fp, sfp->smode, data_offset)) return SSI_ERR_NODATA; + if (! read_i32(sfp->fp, &len)) return SSI_ERR_NODATA; + + /* Set up tmp variables for clarity of equations below, + * and to make them match documentation (ssi-format.tex). + */ + r = sfp->rpl[*ret_fh]; /* residues per line */ + b = sfp->bpl[*ret_fh]; /* bytes per line */ + i = requested_start; /* start position 1..L */ + l = (i-1)/r; /* data line # (0..) that the residue is on */ + if (r == 0 || b == 0) return SSI_ERR_NO_SUBSEQS; + if (i < 0 || i > len) return SSI_ERR_RANGE; + + /* When b = r+1, there's nothing but sequence on each data line (and the \0), + * and we can find each residue precisely. + */ + if (b == r+1) { + if (sfp->smode == SSI_OFFSET_I32) { + data_offset->mode = SSI_OFFSET_I32; + data_offset->off.i32 = data_offset->off.i32 + l*b + (i-1)%r; + } else if (sfp->smode == SSI_OFFSET_I64) { + data_offset->mode = SSI_OFFSET_I64; + data_offset->off.i64 = data_offset->off.i64 + l*b + (i-1)%r; + } + *ret_actual_start = requested_start; + } else { + /* else, there's other stuff on seq lines, so the best + * we can do easily is to position at start of relevant line. + */ + if (sfp->smode == SSI_OFFSET_I32) { + data_offset->mode = SSI_OFFSET_I32; + data_offset->off.i32 = data_offset->off.i32 + l*b; + } else if (sfp->smode == SSI_OFFSET_I64) { + data_offset->mode = SSI_OFFSET_I64; + data_offset->off.i64 = data_offset->off.i64 + l*b; + } + /* yes, the eq below is = 1 + (i-1)/r*r but it's not = i. that's an integer /. */ + *ret_actual_start = 1 + l*r; + } + return 0; +} + +/* Function: SSISetFilePosition() + * Date: SRE, Tue Jan 2 09:13:46 2001 [St. Louis] + * + * Purpose: Uses {offset} to sets the file position for {fp}, usually an + * open sequence file, relative to the start of the file. + * Hides the details of system-dependent shenanigans necessary for + * file positioning in large (>2 GB) files. + * + * Behaves just like fseek(fp, offset, SEEK_SET) for 32 bit + * offsets and <2 GB files. + * + * Warning: if all else fails, in desperation, it will try to + * use fsetpos(). This requires making assumptions about fpos_t + * that may be unwarranted... assumptions that ANSI C prohibits + * me from making... though I believe the ./configure + * script robustly tests whether I can play with fpos_t like this. + * + * Args: fp - file to position. + * offset - SSI offset relative to file start. + * + * Returns: 0 on success, nonzero on error. + */ +int +SSISetFilePosition(FILE *fp, SSIOFFSET *offset) +{ + if (offset->mode == SSI_OFFSET_I32) { + if (fseek(fp, offset->off.i32, SEEK_SET) != 0) return SSI_ERR_SEEK_FAILED; + } +#ifndef HAS_64BIT_FILE_OFFSETS + else return SSI_ERR_NO64BIT; +#elif defined HAVE_FSEEKO && SIZEOF_OFF_T == 8 + else if (fseeko(fp, offset->off.i64, SEEK_SET) != 0) return SSI_ERR_SEEK_FAILED; +#elif defined HAVE_FSEEKO64 && SIZEOF_OFF64_T == 8 + else if (fseeko64(fp, offset->off.i64, SEEK_SET) != 0) return SSI_ERR_SEEK_FAILED; +#elif defined HAVE_FSEEK64 + else if (fseek64(fp, offset->off.i64, SEEK_SET) != 0) return SSI_ERR_SEEK_FAILED; +#elif defined ARITHMETIC_FPOS_T && SIZEOF_FPOS_T == 8 + else if (fsetpos(fp, &(offset->off.i64)) != 0) return SSI_ERR_SEEK_FAILED; +#endif + return 0; +} + + +/* Function: SSIFileInfo() + * Date: SRE, Tue Jan 2 10:31:01 2001 [St. Louis] + * + * Purpose: Given a file number {fh} in an open index file + * {sfp}, retrieve file name {ret_filename} and + * the file format {ret_format}. + * + * {ret_filename} is a pointer to a string maintained + * internally by {sfp}. It should not be free'd; + * SSIClose(sfp) takes care of it. + * + * Args: sfp - open index file + * fh - handle on file to look up + * ret_filename - RETURN: name of file n + * ret_format - RETURN: format of file n + * + * Returns: 0 on success, nonzero on failure. + */ +int +SSIFileInfo(SSIFILE *sfp, int fh, char **ret_filename, int *ret_format) +{ + if (fh < 0 || fh >= sfp->nfiles) return SSI_ERR_BADARG; + *ret_filename = sfp->filename[fh]; + *ret_format = sfp->fileformat[fh]; + return 0; +} + +/* Function: SSIClose() + * Date: SRE, Sun Dec 31 14:56:37 2000 [St. Louis] + * + * Purpose: Close an open {SSIFILE *}. + * + * Args: sfp - index file to close. + * + * Returns: (void) + */ +void +SSIClose(SSIFILE *sfp) +{ + if (sfp != NULL) { + clear_ssifile(sfp); + if (sfp->fp != NULL) fclose(sfp->fp); + free(sfp); + } +} +/* clear_ssifile(): free the innards of SSIFILE, without + * destroying the structure or closing the stream. + */ +static void +clear_ssifile(SSIFILE *sfp) +{ + int i; + + if (sfp->filename != NULL) { + for (i = 0; i < sfp->nfiles; i++) + if (sfp->filename[i] != NULL) free(sfp->filename[i]); + free(sfp->filename); + } + if (sfp->fileformat != NULL) free(sfp->fileformat); + if (sfp->fileflags != NULL) free(sfp->fileflags); + if (sfp->bpl != NULL) free(sfp->bpl); + if (sfp->rpl != NULL) free(sfp->rpl); +} + + +/* Function: SSIRecommendMode() + * Date: SRE, Fri Feb 16 08:23:47 2001 [St. Louis] + * + * Purpose: Examines the file and determines whether it should be + * indexed with large file support or not; returns + * SSI_OFFSET_I32 for most files, SSI_OFFSET_I64 for large + * files, or -1 on failure. + * + * Args: file - name of file to check for size + * + * Returns: -1 on failure (including case where file is too big) + * SSI_OFFSET_I32 for most files (<= 2^31-1 bytes) + * SSI_OFFSET_I64 for large files (> 2^31-1 bytes) + */ +int +SSIRecommendMode(char *file) +{ +#if HAVE_STAT64 + struct stat64 s1; + if (stat64(file, &s1) == 0) { + if (s1.st_size <= 2146483647L) return SSI_OFFSET_I32; + else return SSI_OFFSET_I64; + } +#else + struct stat s2; + if (stat(file, &s2) == 0) { + if (s2.st_size <= 2146483647L) return SSI_OFFSET_I32; + else return SSI_OFFSET_I64; + } +#endif + return -1; +} + + +/* Function: SSICreateIndex() + * Date: SRE, Tue Jan 2 11:23:25 2001 [St. Louis] + * + * Purpose: Creates and initializes a SSI index structure. + * Sequence file offset type is specified by {mode}. + * + * Args: mode - SSI_OFFSET_I32 or SSI_OFFSET_I64, sequence file index mode. + * + * Returns: ptr to new index structure, or NULL on failure. + * Caller is responsible for free'ing the returned + * structure with SSIFreeIndex(). + */ +SSIINDEX * +SSICreateIndex(int mode) +{ + SSIINDEX *g; + + g = NULL; + if ((g = malloc(sizeof(SSIINDEX))) == NULL) goto FAILURE; + g->smode = mode; + g->imode = SSI_OFFSET_I32; /* index always starts as 32-bit; may get upgraded later */ + +#ifndef HAS_64BIT_FILE_OFFSETS + if (mode == SSI_OFFSET_I64) + Die("\ +Can't create a 64-bit SSI index on this system, sorry;\n\ +I don't have 64-bit file offset functions available.\n"); +#endif + + g->filenames = NULL; + g->fileformat = NULL; + g->bpl = NULL; + g->rpl = NULL; + g->flen = 0; + g->nfiles = 0; + + g->pkeys = NULL; + g->plen = 0; + g->nprimary = 0; + g->tot_primary = 0; + + g->skeys = NULL; + g->slen = 0; + g->nsecondary = 0; + g->tot_secondary = 0; + + g->tmpbase = NULL; + g->t1 = NULL; + g->chunkoffset = NULL; + g->nchunks = 0; + + /* temporarily disabled: sort-on-disk needs more thought! */ + /* g->max_chunk_size= maxchunk; */ + g->max_chunk_size = 999999; + + /* All mallocs must go after NULL initializations, because of the cleanup strategy; + * we'll try to free anything non-NULL if a malloc fails. + */ + /* This is temporarily disabled. Sort-on-disk needs more thought! + if ((g->tmpbase = sre_strdup(tmpfile, -1)) == NULL) goto FAILURE; + */ + + if ((g->filenames = malloc(sizeof(char *) * SSI_FILE_BLOCK)) == NULL) goto FAILURE; + if ((g->fileformat= malloc(sizeof(sqd_uint32) * SSI_FILE_BLOCK)) == NULL) goto FAILURE; + if ((g->bpl = malloc(sizeof(sqd_uint32) * SSI_FILE_BLOCK)) == NULL) goto FAILURE; + if ((g->rpl = malloc(sizeof(sqd_uint32) * SSI_FILE_BLOCK)) == NULL) goto FAILURE; + + if ((g->pkeys = malloc(sizeof(struct ssipkey_s)* SSI_KEY_BLOCK))== NULL) goto FAILURE; + if ((g->skeys = malloc(sizeof(struct ssipkey_s)* SSI_KEY_BLOCK))== NULL) goto FAILURE; + + return g; + + FAILURE: + SSIFreeIndex(g); /* free the damaged structure */ + return NULL; +} + +/* Function: SSIGetFilePosition() + * Date: SRE, Tue Jan 2 09:59:26 2001 [St. Louis] + * + * Purpose: Fills {ret_offset} with the current disk + * offset of {fp}, relative to the start of the file. + * {mode} is set to either SSI_OFFSET_I32 or + * SSI_OFFSET_I64. If {mode} is _I32 (32 bit), just wraps + * a call to ftell(); otherwise deals with system-dependent + * details of 64-bit file offsets. + * + * Args: fp - open stream + * mode - SSI_OFFSET_I32 or SSI_OFFSET_I64 + * ret_offset - RETURN: file position + * + * Returns: 0 on success. nonzero on error. + */ +int +SSIGetFilePosition(FILE *fp, int mode, SSIOFFSET *ret_offset) +{ + if (mode == SSI_OFFSET_I32) + { + ret_offset->mode = SSI_OFFSET_I32; + ret_offset->off.i32 = ftell(fp); + if (ret_offset->off.i32 == -1) return SSI_ERR_TELL_FAILED; + } + else if (mode != SSI_OFFSET_I64) abort(); /* only happens on a coding error */ + else { + ret_offset->mode = SSI_OFFSET_I64; +#ifndef HAS_64BIT_FILE_OFFSETS + return SSI_ERR_NO64BIT; +#elif defined HAVE_FTELLO && SIZEOF_OFF_T == 8 + if ((ret_offset->off.i64 = ftello(fp)) == -1) return SSI_ERR_TELL_FAILED; +#elif defined HAVE_FTELLO64 && SIZEOF_OFF64_T == 8 + if ((ret_offset->off.i64 = ftello64(fp)) == -1) return SSI_ERR_TELL_FAILED; +#elif defined HAVE_FTELL64 + if ((ret_offset->off.i64 = ftell64(fp)) == -1) return SSI_ERR_TELL_FAILED; +#elif defined ARITHMETIC_FPOS_T && SIZEOF_FPOS_T == 8 + if (fgetpos(fp, &(ret_offset->off.i64)) != 0) return SSI_ERR_TELL_FAILED; +#endif + } + return 0; +} + +/* Function: SSIAddFileToIndex() + * Date: SRE, Tue Jan 2 12:54:36 2001 [St. Louis] + * + * Purpose: Adds the sequence file {filename}, which is known to + * be in format {fmt}, to the index {g}. Creates and returns + * a unique filehandle {fh} for then associating primary keys + * with this file using SSIAddPrimaryKeyToIndex(). + * + * Args: g - active index + * filename - file to add + * fmt - format code for this file (e.g. SQFILE_FASTA) + * ret_fh - RETURN: unique handle for this file + * + * Returns: 0 on success; nonzero on error. + */ +int +SSIAddFileToIndex(SSIINDEX *g, char *filename, int fmt, int *ret_fh) +{ + int n; + + if (g->nfiles >= SSI_MAXFILES) return SSI_ERR_TOOMANY_FILES; + + n = strlen(filename); + if ((n+1) > g->flen) g->flen = n+1; + + if ((g->filenames[g->nfiles] = sre_strdup(filename, n)) == NULL) return SSI_ERR_MALLOC; + g->fileformat[g->nfiles] = fmt; + g->bpl[g->nfiles] = 0; + g->rpl[g->nfiles] = 0; + *ret_fh = g->nfiles; /* handle is simply = file number */ + g->nfiles++; + + if (g->nfiles % SSI_FILE_BLOCK == 0) { + g->filenames = realloc(g->filenames, sizeof(char *) * (g->nfiles+SSI_FILE_BLOCK)); + if (g->filenames == NULL) return SSI_ERR_MALLOC; + g->fileformat= realloc(g->fileformat,sizeof(int) * (g->nfiles+SSI_FILE_BLOCK)); + if (g->fileformat == NULL) return SSI_ERR_MALLOC; + g->bpl = realloc(g->fileformat,sizeof(int) * (g->nfiles+SSI_FILE_BLOCK)); + if (g->bpl == NULL) return SSI_ERR_MALLOC; + g->rpl = realloc(g->fileformat,sizeof(int) * (g->nfiles+SSI_FILE_BLOCK)); + if (g->rpl == NULL) return SSI_ERR_MALLOC; + } + return 0; +} + + +/* Function: SSISetFileForSubseq() + * Date: SRE, Tue Jan 9 10:02:05 2001 [St. Louis] + * + * Purpose: Set SSI_FAST_SUBSEQ for the file indicated by + * filehandle {fh} in the index {g}, setting + * parameters {bpl} and {rpl} to the values given. + * {bpl} is the number of bytes per sequence data line. + * {rpl} is the number of residues per sequence data line. + * Caller must be sure that {bpl} and {rpl} do not change + * on any line of any sequence record in the file + * (except for the last data line of each record). If + * this is not the case in this file, SSI_FAST_SUBSEQ + * will not work, and this routine should not be + * called. + * + * Args: g - the active index + * fh - handle for file to set SSI_FAST_SUBSEQ on + * bpl - bytes per data line + * rpl - residues per data line + * + * Returns: 0 on success; 1 on error. + */ +int +SSISetFileForSubseq(SSIINDEX *g, int fh, int bpl, int rpl) +{ + if (fh < 0 || fh >= g->nfiles) return SSI_ERR_BADARG; + if (bpl <= 0 || rpl <= 0) return SSI_ERR_BADARG; + g->bpl[fh] = bpl; + g->rpl[fh] = rpl; + return 0; +} + + +/* Function: SSIAddPrimaryKeyToIndex() + * Date: SRE, Tue Jan 2 11:50:54 2001 [St. Louis] + * + * Purpose: Put primary key {key} in the index {g}, while telling + * the index this primary key is in the file associated + * with filehandle {fh} (returned by a previous call + * to SSIAddFileToIndex()), and its record starts at + * position {r_off} in the file. + * + * {d_off} and {L} are optional; they may be left unset + * by passing NULL and 0, respectively. (If one is + * provided, both must be provided.) If they are provided, + * {d_off} gives the position of the first line of sequence + * data in the record, and {L} gives the length of + * the sequence in residues. They are used when + * SSI_FAST_SUBSEQ is set for this file. If SSI_FAST_SUBSEQ + * is not set for the file, {d_off} and {L} will be + * ignored by the index reading API even if they are stored + * by the index writing API, so it doesn't hurt for the + * indexing program to provide them; typically they + * won't know whether it's safe to set SSI_FAST_SUBSEQ + * for the whole file until the whole file has been + * read and every key has already been added to the index. + * + * Args: g - active index + * key - primary key to add + * fh - handle on file that this key's in + * r_off - offset to start of record + * d_off - offset to start of sequence data + * L - length of sequence, or 0 + * + * Returns: 0 on success, nonzero on error. + */ +int +SSIAddPrimaryKeyToIndex(SSIINDEX *g, char *key, int fh, + SSIOFFSET *r_off, SSIOFFSET *d_off, int L) +{ + int n; /* a string length */ + + if (fh >= SSI_MAXFILES) return SSI_ERR_TOOMANY_FILES; + if (g->nprimary >= SSI_MAXKEYS) return SSI_ERR_TOOMANY_KEYS; + if (L > 0 && d_off == NULL) abort(); /* need both. */ + + /* Before adding the key: check how big our chunk of + * index is. If it's getting too large, flush a chunk to disk tmpfile. + */ + if (current_chunk_size(g) >= g->max_chunk_size) write_index_chunk(g); + + n = strlen(key); + if ((n+1) > g->plen) g->plen = n+1; + + if ((g->pkeys[g->nprimary].key = sre_strdup(key, n)) == NULL) return SSI_ERR_MALLOC; + g->pkeys[g->nprimary].fnum = (sqd_uint16) fh; + g->pkeys[g->nprimary].r_off = *r_off; + if (d_off != NULL && L > 0) { + g->pkeys[g->nprimary].d_off = *d_off; + g->pkeys[g->nprimary].len = L; + } else { + /* yeah, this looks stupid, but look: we have to give a valid + looking, non-NULL d_off of some sort, or writes will fail. + It's going to be unused anyway. */ + g->pkeys[g->nprimary].d_off = *r_off; + g->pkeys[g->nprimary].len = 0; + } + g->pkeys[g->nprimary].handle = g->nprimary; + g->nprimary++; + + if (g->nprimary % SSI_KEY_BLOCK == 0) { + g->pkeys = realloc(g->pkeys, sizeof(struct ssipkey_s) * (g->nprimary+SSI_KEY_BLOCK)); + if (g->pkeys == NULL) return SSI_ERR_MALLOC; + } + + return 0; +} + + +/* Function: SSIAddSecondaryKeyToIndex() + * Date: SRE, Tue Jan 2 12:44:40 2001 [St. Louis] + * + * Purpose: Puts secondary key {key} in the index {g}, associating + * it with primary key {pkey} that was previously + * registered by SSIAddPrimaryKeyToIndex(). + * + * Args: g - active index + * key - secondary key to add + * pkey - primary key to associate this key with + * + * Returns: 0 on success, 1 on failure. + */ +int +SSIAddSecondaryKeyToIndex(SSIINDEX *g, char *key, char *pkey) +{ + int n; /* a string length */ + + if (g->nsecondary >= SSI_MAXKEYS) return SSI_ERR_TOOMANY_KEYS; + + n = strlen(key); + if ((n+1) > g->slen) g->slen = n+1; + + if ((g->skeys[g->nsecondary].key = sre_strdup(key, n)) == NULL) return SSI_ERR_MALLOC; + if ((g->skeys[g->nsecondary].pkey = sre_strdup(pkey, -1)) == NULL) return SSI_ERR_MALLOC; + g->nsecondary++; + + if (g->nsecondary % SSI_KEY_BLOCK == 0) { + g->skeys = realloc(g->skeys, sizeof(struct ssiskey_s) * (g->nsecondary+SSI_KEY_BLOCK)); + if (g->skeys == NULL) return SSI_ERR_MALLOC; + } + return 0; +} + + + + +/* Function: SSIWriteIndex() + * Date: SRE, Tue Jan 2 13:55:56 2001 [St. Louis] + * + * Purpose: Writes complete index {g} in SSI format to a + * binary file {file}. Does all + * the overhead of sorting the primary and secondary keys, + * and maintaining the association of secondary keys + * with primary keys during and after the sort. + * + * Args: file - file to write to + * g - index to sort & write out. + * + * Returns: 0 on success, nonzero on error. + */ +/* needed for qsort() */ +static int +pkeysort(const void *k1, const void *k2) +{ + struct ssipkey_s *key1; + struct ssipkey_s *key2; + key1 = (struct ssipkey_s *) k1; + key2 = (struct ssipkey_s *) k2; + return strcmp(key1->key, key2->key); +} +static int +skeysort(const void *k1, const void *k2) +{ + struct ssiskey_s *key1; + struct ssiskey_s *key2; + key1 = (struct ssiskey_s *) k1; + key2 = (struct ssiskey_s *) k2; + return strcmp(key1->key, key2->key); +} +int +SSIWriteIndex(char *file, SSIINDEX *g) +{ + FILE *fp; + int status; + + /* Case 1. Simple: the whole index fit in memory; write it to disk, + * we're done. + */ + if (g->t1 == NULL) { + if ((fp = fopen(file,"wb")) == NULL) return SSI_ERR_NOFILE; + status = write_index(fp, g); + fclose(fp); + g->tot_primary = g->nprimary; + g->tot_secondary = g->nsecondary; + return status; + } + + /* Case 2. Ugly: the index is big (and possibly *really* big, necessitating + * 64-bit offsets in the index itself!); we had to write the index to a tmp + * file on disk. Flush the last chunk to disk; then mergesort the chunks + * until we have one chunk to rule them all, one chunk to bind them. + */ + write_index_chunk(g); /* flush the last chunk. */ + fclose(g->t1); + + Die("oi, you haven't IMPLEMENTED the mergesort yet, dumbass."); + return 0; +} +static int +write_index(FILE *fp, SSIINDEX *g) +{ + int i; + sqd_uint32 header_flags, file_flags; + sqd_uint32 frecsize, precsize, srecsize; + sqd_uint64 foffset, poffset, soffset; + char *s, *s2; + + /* Magic-looking numbers come from adding up sizes + * of things in bytes + */ + frecsize = 16 + g->flen; + precsize = (g->smode == SSI_OFFSET_I64) ? 22+g->plen : 14+g->plen; + srecsize = g->slen + g->plen; + + header_flags = 0; + if (g->smode == SSI_OFFSET_I64) header_flags |= SSI_USE64; + if (g->imode == SSI_OFFSET_I64) header_flags |= SSI_USE64_INDEX; + + /* Magic-looking numbers again come from adding up sizes + * of things in bytes + */ + foffset = (header_flags & SSI_USE64_INDEX) ? 66 : 54; + poffset = foffset + frecsize*g->nfiles; + soffset = poffset + precsize*g->nprimary; + + /* Sort the keys + */ + qsort((void *) g->pkeys, g->nprimary, sizeof(struct ssipkey_s), pkeysort); + qsort((void *) g->skeys, g->nsecondary, sizeof(struct ssiskey_s), skeysort); + + /* Write the header + */ + if (! write_i32(fp, v20magic)) return SSI_ERR_FWRITE; + if (! write_i32(fp, header_flags)) return SSI_ERR_FWRITE; + if (! write_i16(fp, g->nfiles)) return SSI_ERR_FWRITE; + if (! write_i32(fp, g->nprimary)) return SSI_ERR_FWRITE; + if (! write_i32(fp, g->nsecondary)) return SSI_ERR_FWRITE; + if (! write_i32(fp, g->flen)) return SSI_ERR_FWRITE; + if (! write_i32(fp, g->plen)) return SSI_ERR_FWRITE; + if (! write_i32(fp, g->slen)) return SSI_ERR_FWRITE; + if (! write_i32(fp, frecsize)) return SSI_ERR_FWRITE; + if (! write_i32(fp, precsize)) return SSI_ERR_FWRITE; + if (! write_i32(fp, srecsize)) return SSI_ERR_FWRITE; + if (g->imode == SSI_OFFSET_I32) { + if (! write_i32(fp, foffset)) return SSI_ERR_FWRITE; + if (! write_i32(fp, poffset)) return SSI_ERR_FWRITE; + if (! write_i32(fp, soffset)) return SSI_ERR_FWRITE; + } else { + if (! write_i64(fp, foffset)) return SSI_ERR_FWRITE; + if (! write_i64(fp, poffset)) return SSI_ERR_FWRITE; + if (! write_i64(fp, soffset)) return SSI_ERR_FWRITE; + } + + /* The file section + */ + if ((s = malloc(sizeof(char) * g->flen)) == NULL) return SSI_ERR_MALLOC; + for (i = 0; i < g->nfiles; i++) + { + file_flags = 0; + if (g->bpl[i] > 0 && g->rpl[i] > 0) file_flags |= SSI_FAST_SUBSEQ; + + strcpy(s, g->filenames[i]); + if (fwrite(s, sizeof(char), g->flen, fp) != g->flen) return SSI_ERR_FWRITE; + if (! write_i32(fp, g->fileformat[i])) return SSI_ERR_FWRITE; + if (! write_i32(fp, file_flags)) return SSI_ERR_FWRITE; + if (! write_i32(fp, g->bpl[i])) return SSI_ERR_FWRITE; + if (! write_i32(fp, g->rpl[i])) return SSI_ERR_FWRITE; + } + free(s); + + /* The primary key section + */ + if ((s = malloc(sizeof(char) * g->plen)) == NULL) return SSI_ERR_MALLOC; + for (i = 0; i < g->nprimary; i++) + { + strcpy(s, g->pkeys[i].key); + if (fwrite(s, sizeof(char), g->plen, fp) != g->plen) return SSI_ERR_FWRITE; + if (! write_i16( fp, g->pkeys[i].fnum)) return SSI_ERR_FWRITE; + if (! write_offset(fp, &(g->pkeys[i].r_off))) return SSI_ERR_FWRITE; + if (! write_offset(fp, &(g->pkeys[i].d_off))) return SSI_ERR_FWRITE; + if (! write_i32( fp, g->pkeys[i].len)) return SSI_ERR_FWRITE; + } + + /* The secondary key section + */ + if (g->nsecondary > 0) { + if ((s2 = malloc(sizeof(char) * g->slen)) == NULL) return SSI_ERR_MALLOC; + for (i = 0; i < g->nsecondary; i++) + { + strcpy(s2, g->skeys[i].key); + strcpy(s, g->skeys[i].pkey); + if (fwrite(s2, sizeof(char), g->slen, fp) != g->slen) return SSI_ERR_FWRITE; + if (fwrite(s, sizeof(char), g->plen, fp) != g->plen) return SSI_ERR_FWRITE; + } + free(s2); + } + + free(s); + return 0; +} +static int +write_index_chunk(SSIINDEX *g) +{ + int status; + int i; + + SQD_DPRINTF1(("Writing index chunk %d to disk... \n", g->nchunks)); + + /* Save the offset for each chunk in an array; remember how many + * chunks we put into the tmp file t1. + */ + if (g->t1 == NULL) { + char *t1file = NULL; + if ((t1file = sre_strdup(g->tmpbase, -1)) == NULL) goto FAILURE; + if (sre_strcat(&t1file, -1, ".t1", 3) < 0) goto FAILURE; + if ((g->t1 = fopen(t1file, "wb")) == NULL) return SSI_ERR_NOFILE; + free(t1file); + + if ((g->chunkoffset = malloc(sizeof(fpos_t))) == NULL) goto FAILURE; + } else { + if ((g->chunkoffset = realloc(g->chunkoffset, sizeof(fpos_t) * (g->nchunks+1))) == NULL) goto FAILURE; + } + if (fgetpos(g->t1, &(g->chunkoffset[g->nchunks])) != 0) + Die("Index file size has apparently exceeded system limitations, sorry."); + g->nchunks++; + + /* Sort and append this chunk of the index to the open tmp file t1 + */ + if ((status = write_index(g->t1, g)) != 0) return status; + g->tot_primary += g->nprimary; + g->tot_secondary += g->nsecondary; + + /* Now, a partial free'ing of the index - clear the keys, but leave the files + */ + for (i = 0; i < g->nprimary; i++) free(g->pkeys[i].key); + for (i = 0; i < g->nsecondary; i++) free(g->skeys[i].key); + for (i = 0; i < g->nsecondary; i++) free(g->skeys[i].pkey); + free(g->pkeys); + free(g->skeys); + + /* Reset the primary and secondary keys sections, in preparation + * for accumulating more + */ + g->pkeys = NULL; + g->plen = 0; + g->nprimary = 0; + + g->skeys = NULL; + g->slen = 0; + g->nsecondary = 0; + + if ((g->pkeys = malloc(sizeof(struct ssipkey_s)* SSI_KEY_BLOCK))== NULL) goto FAILURE; + if ((g->skeys = malloc(sizeof(struct ssipkey_s)* SSI_KEY_BLOCK))== NULL) goto FAILURE; + return 0; + + FAILURE: + SSIFreeIndex(g); + return SSI_ERR_MALLOC; +} + + + +/* Function: SSIFreeIndex() + * Date: SRE, Tue Jan 2 11:44:08 2001 [St. Louis] + * + * Purpose: Free an index structure {g}. + * + * Args: g - ptr to an open index. + * + * Returns: (void) + */ +void +SSIFreeIndex(SSIINDEX *g) +{ + int i; + if (g != NULL) + { + for (i = 0; i < g->nfiles; i++) free(g->filenames[i]); + for (i = 0; i < g->nprimary; i++) free(g->pkeys[i].key); + for (i = 0; i < g->nsecondary; i++) free(g->skeys[i].key); + for (i = 0; i < g->nsecondary; i++) free(g->skeys[i].pkey); + if (g->filenames != NULL) free(g->filenames); + if (g->fileformat != NULL) free(g->fileformat); + if (g->bpl != NULL) free(g->bpl); + if (g->rpl != NULL) free(g->rpl); + if (g->pkeys != NULL) free(g->pkeys); + if (g->skeys != NULL) free(g->skeys); + if (g->tmpbase != NULL) free(g->tmpbase); + if (g->chunkoffset != NULL) free(g->chunkoffset); + if (g->t1 != NULL) fclose(g->t1); + free(g); + } +} + + +/* Function: SSIErrorString() + * Date: SRE, Tue Jan 2 10:38:10 2001 [St. Louis] + * + * Purpose: Returns a ptr to an internal string corresponding + * to error {n}, a code returned from any of the + * functions in the API that return non-zero on error. + * + * Args: n - error code + * + * Returns: ptr to an internal string. + */ +char * +SSIErrorString(int n) +{ + switch (n) { + case SSI_ERR_OK: return "ok (no error)"; + case SSI_ERR_NODATA: return "no data, fread() failed"; + case SSI_ERR_NO_SUCH_KEY: return "no such key"; + case SSI_ERR_MALLOC: return "out of memory, malloc() failed"; + case SSI_ERR_NOFILE: return "file not found, fopen() failed"; + case SSI_ERR_BADMAGIC: return "not a SSI file? (bad magic)"; + case SSI_ERR_BADFORMAT: return "corrupt format? unexpected data"; + case SSI_ERR_NO64BIT: return "no large file support for this system"; + case SSI_ERR_SEEK_FAILED: return "failed to reposition on disk"; + case SSI_ERR_TELL_FAILED: return "failed to get file position on disk"; + case SSI_ERR_NO_SUBSEQS: return "no fast subseq support for this seqfile"; + case SSI_ERR_RANGE: return "subseq start is out of range"; + case SSI_ERR_BADARG: return "an argument is out of range"; + default: return "unrecognized code"; + } + /*NOTREACHED*/ +} + +static int +read_i16(FILE *fp, sqd_uint16 *ret_result) +{ + sqd_uint16 result; + if (fread(&result, sizeof(sqd_uint16), 1, fp) != 1) return 0; + *ret_result = sre_ntoh16(result); + return 1; +} +static int +write_i16(FILE *fp, sqd_uint16 n) +{ + n = sre_hton16(n); + if (fwrite(&n, sizeof(sqd_uint16), 1, fp) != 1) return 0; + return 1; +} +static int +read_i32(FILE *fp, sqd_uint32 *ret_result) +{ + sqd_uint32 result; + if (fread(&result, sizeof(sqd_uint32), 1, fp) != 1) return 0; + *ret_result = sre_ntoh32(result); + return 1; +} +static int +write_i32(FILE *fp, sqd_uint32 n) +{ + n = sre_hton32(n); + if (fwrite(&n, sizeof(sqd_uint32), 1, fp) != 1) return 0; + return 1; +} +static int +read_i64(FILE *fp, sqd_uint64 *ret_result) +{ + sqd_uint64 result; + if (fread(&result, sizeof(sqd_uint64), 1, fp) != 1) return 0; + *ret_result = sre_ntoh64(result); + return 1; +} +static int +write_i64(FILE *fp, sqd_uint64 n) +{ + n = sre_hton64(n); + if (fwrite(&n, sizeof(sqd_uint64), 1, fp) != 1) return 0; + return 1; +} +static int +read_offset(FILE *fp, char mode, SSIOFFSET *ret_offset) +{ + if (mode == SSI_OFFSET_I32) { + ret_offset->mode = SSI_OFFSET_I32; + if (! read_i32(fp, &(ret_offset->off.i32))) return 0; + } else if (mode == SSI_OFFSET_I64) { + ret_offset->mode = SSI_OFFSET_I64; + if (! read_i64(fp, &(ret_offset->off.i64))) return 0; + } else return 0; + + return 1; +} +static int +write_offset(FILE *fp, SSIOFFSET *offset) +{ + if (offset->mode == SSI_OFFSET_I32) return write_i32(fp, offset->off.i32); + else if (offset->mode == SSI_OFFSET_I64) return write_i64(fp, offset->off.i64); + else abort(); + /*UNREACHED*/ + return 1; /* silence bitchy compilers */ +} + + +/* Function: binary_search() + * Date: SRE, Sun Dec 31 16:05:03 2000 [St. Louis] + * + * Purpose: Find a key in a SSI index, by a binary search + * in an alphabetically sorted list of keys. If successful, + * return 0, and the index file is positioned to read + * the rest of the data for that key. Else returns nonzero. + * + * Args: sfp - an open SSIFILE + * key - key to find + * klen - key length to allocate (plen or slen from sfp) + * base - base offset (poffset or soffset) + * recsize - size of each key record in bytes (precsize or srecsize) + * maxidx - # of keys (nprimary or nsecondary) + * + * Returns: 0 on success, and leaves file positioned for reading remaining + * data for the key. + * Nonzero on failure: + * SSI_ERR_NO_SUCH_KEY - that key's not in the index + * SSI_ERR_MALLOC - a memory allocation failure + * SSI_ERR_NODATA - an fread() failed + */ +static int +binary_search(SSIFILE *sfp, char *key, int klen, SSIOFFSET *base, + sqd_uint32 recsize, sqd_uint32 maxidx) +{ + char *name; + sqd_uint32 left, right, mid; + int cmp; + int status; + + if ((name = malloc (sizeof(char)*klen)) == NULL) return SSI_ERR_MALLOC; + left = 0; + right = maxidx; + while (1) { /* A binary search: */ + mid = (left+right) / 2; /* careful here. only works because + we limit unsigned vars to signed ranges. */ + if ((status = indexfile_position(sfp, base, recsize, mid)) != 0) + { free(name); return status; } + if (fread(name, sizeof(char), klen, sfp->fp) != klen) + { free(name); return SSI_ERR_NODATA; } + cmp = strcmp(name, key); + if (cmp == 0) break; /* found it! */ + else if (left >= right) /* oops, missed it; fail */ + { free(name); return SSI_ERR_NO_SUCH_KEY; } + else if (cmp < 0) left = mid+1; /* it's right of mid */ + else if (cmp > 0) right = mid-1; /* it's left of mid */ + } + free(name); + return 0; /* and sfp->fp is positioned... */ +} + +/* Function: indexfile_position() + * Date: SRE, Mon Jan 1 19:32:49 2001 [St. Louis] + * + * Purpose: Position the open index file {sfp} at the start + * of record {n} in a list of records that starts at + * base offset {base}, where each record takes up {l} + * bytes. (e.g. the position is byte (base + n*l)). + * + * Args: sfp - open SSIFILE + * base - offset of record 0 (e.g. sfp->foffset) + * len - size of each record in bytes (e.g. sfp->frecsize) + * n - which record to get (e.g. 0..sfp->nfiles) + * + * Returns: 0 on success, non-zero on failure. + */ +static int +indexfile_position(SSIFILE *sfp, SSIOFFSET *base, sqd_uint32 len, sqd_uint32 n) +{ + SSIOFFSET pos; + int status; + + if (base->mode == SSI_OFFSET_I32) { + pos.mode = SSI_OFFSET_I32; + pos.off.i32 = base->off.i32 + n*len; + } else if (base->mode == SSI_OFFSET_I64) { + pos.mode = SSI_OFFSET_I64; + pos.off.i64 = base->off.i64 + n*len; + } else return 0; + if ((status = SSISetFilePosition(sfp->fp, &pos)) != 0) return status; + return 0; +} + +/* Function: current_chunk_size() + * Date: SRE, Tue Feb 20 18:23:30 2001 [St. Louis] + * + * Purpose: Calculates the size of the current indexfile chunk, + * in megabytes. + */ +static sqd_uint64 +current_chunk_size(SSIINDEX *g) +{ + sqd_uint64 frecsize, precsize, srecsize; + sqd_uint64 total; + + /* Magic-looking numbers come from adding up sizes + * of things in bytes + */ + frecsize = 16 + g->flen; + precsize = (g->smode == SSI_OFFSET_I64) ? 22+g->plen : 14+g->plen; + srecsize = g->plen+g->slen; + total = (66L + /* header size, if 64bit index offsets */ + frecsize * g->nfiles + /* file section size */ + precsize * g->nprimary + /* primary key section size */ + srecsize * g->nsecondary) / /* secondary key section size */ + 1048576L; + return total; +} + + +#if 0 +static int +mergesort(SSIINDEX *g) +{ + char *infile; /* reading "tape" 1: source. */ + char *outfile; /* writing "tape" 2: destination. */ + SSIFILE *in1; /* on read, a chunk of the SSI file goes in an SSIFILE. */ + SSIFILE *in2; /* and chunk 2 goes in here. */ + FILE *outfp; /* where we're writing the merged data */ + int b; /* b, b+1 are current chunks we're merging from infile */ + char *k1, *k2; /* buffers full of keys to be merged from ch1, ch2 */ + sqd_uint32 base1, pos1, buflen1; /* buffered key input for ch1 */ + sqd_uint32 base2, pos2, buflen2; /* buffered key input for ch2 */ + sqd_uint32 maxbuf; + int status; + + /* Initializations. + */ + /* create the tmp file names */ + if ((infile = sre_strdup(g->tmpbase, -1)) == NULL) return SSI_ERR_MALLOC; + if (sre_strcat(&infile, -1, ".t1", 3) < 0) return SSI_ERR_MALLOC; + if ((outfile = sre_strdup(g->tmpbase, -1)) == NULL) return SSI_ERR_MALLOC; + if (sre_strcat(&outfile, -1, ".t2", 3) < 0) return SSI_ERR_MALLOC; + /* allocate the SSIFILEs for reading chunks */ + if ((in1 = malloc(sizeof(SSIFILE))) == NULL) return SSI_ERR_MALLOC; + if ((in2 = malloc(sizeof(SSIFILE))) == NULL) return SSI_ERR_MALLOC; + + /* Open infile for read; both chunks (in1 and in2) are read from this file, + * from different file offsets kept in g->chunkoffset[] + */ + if ((in1->fp = fopen(infile, "rb")) == NULL) return SSI_ERR_NOFILE; + in2->fp = in1->fp; + if ((outfp = fopen(outfile, "wb")) == NULL) return SSI_ERR_NOFILE; + + for (b = 0; b+1 < g->nchunks; b+=2) + { + if (fsetpos(in1->fp, &(g->chunkoffset[b])) > 0) return SSI_ERR_SEEK_FAILED; + if (fsetpos(in2->fp, &(g->chunkoffset[b+1])) > 0) return SSI_ERR_SEEK_FAILED; + + if (status = load_indexfile(in1) > 0) return status; + if (status = load_indexfile(in2) > 0) return status; + + merge_headers(g, in1, in2); + write_index_header(outfp, g); + + /* Merge the primary key section; + * do a buffered read of the pkeys from ch1 and ch2. + */ + maxbuf = 100000; + if ((k1 = malloc(sizeof(char) * (maxbuf*in1->precsize))) == NULL) return SSI_ERR_MALLOC; + if ((k2 = malloc(sizeof(char) * (maxbuf*in2->precsize))) == NULL) return SSI_ERR_MALLOC; + base1 = pos1 = buflen1 = 0; + base2 = pos2 = buflen2 = 0; + while (base1+pos1 < ch1->nprimary || base2+pos2 < ch2->nprimary) { + /* refill buffer for ch1? */ + if (pos1 == buflen1) { + base1 += buflen1; + pos1 = 0; + buflen1 = MIN(in1->nprimary - base1, maxbuf); + if (buflen1 > 0) { + if (fread(k1, sizeof(char), (buflen1*in1->precsize), in1->fp) + < buflen1*in1->precsize) + return SSI_ERR_NODATA; + } + } + /* refill buffer for ch2? */ + if (pos2 == buflen2) { + base2 += buflen2; + pos2 = 0; + buflen2 = MIN(in2->nprimary - base2, maxbuf); + if (buflen2 > 0) { + if (fread(k2, sizeof(char), (buflen1*in2->precsize), in2->fp) + < buflen2*in2->precsize) + return SSI_ERR_NODATA; + } + } + /* mergesort on keys; be careful of case where we're + out of keys in either ch1 or ch2 */ + if (base2+pos2 == ch2->nprimary || + strcmp(k1+(pos1*in1->precsize), k2+(pos2*in2->precsize))) + write_pkey(t3, &(pk1[pos1]), s); + pos1++; + } else { + write_pkey(t3, &(pk2[pos2]), s); + pos2++; + } + } + free(s); + free(pk1); + free(pk2); + + /* Merge the secondary keys; much like the primary key code above. + */ + maxbuf = 100000; + if ((sk1 = malloc(sizeof(struct ssiskey_s) * maxbuf)) == NULL) return SSI_ERR_MALLOC; + if ((sk2 = malloc(sizeof(struct ssiskey_s) * maxbuf)) == NULL) return SSI_ERR_MALLOC; + if ((s = malloc(sizeof(char) * newch->slen)) == NULL) return SSI_ERR_MALLOC; + base1 = pos1 = buflen1 = 0; + base2 = pos2 = buflen2 = 0; + while (base1+pos1 < ch1->nsecondary || base2+pos2 < ch2->nsecondary) { + /* refill buffer for ch1? */ + if (pos1 == buflen1) { + base1 += buflen1; + pos1 = 0; + buflen1 = MIN(ch1->nsecondary - base1, maxbuf); + if (buflen1 > 0) read_skeys(ch1->fp, sk1, buflen1); + } + /* refill buffer for ch2? */ + if (pos2 == buflen2) { + base2 += buflen2; + pos2 = 0; + buflen2 = MIN(ch2->nsecondary - base2, maxbuf); + if (buflen2 > 0) read_skeys(ch2->fp, sk2, buflen2); + } + /* mergesort on keys; be careful of case where we're + out of keys in either ch1 or ch2 */ + if (base2+pos2 == ch2->nsecondary || pkeysort(&(sk1[pos1]), &(sk2[pos2])) < 0) { + write_skey(t3, &(pk1[pos1]), s); + pos1++; + } else { + write_skey(t3, &(pk2[pos2]), s); + pos2++; + } + } + free(s); + free(pk1); + free(pk2); + + + + + /* clear ch1, ch2, in prep for loading new chunks */ + clear_ssifile(ch1); + clear_ssifile(ch2); + } /* end loop over chunks */ + +} +#endif + + +#ifdef MUGGINS_LETS_ME_SLEEP /* test driving code. */ +/* Minimally: + cc -g -Wall -o shiva -D MUGGINS_LETS_ME_SLEEP ssi.c sqerror.c sre_string.c types.c sre_ctype.c sre_math.c -lm +*/ + +int +main(int argc, char **argv) +{ + char name[32], accession[32]; + SSIINDEX *ssi; + int mode; + SSIOFFSET r_off, d_off; + FILE *ofp; + int i; + int fh; /* a file handle */ + int status; /* return status from a SSI call */ + + mode = SSI_OFFSET_I32; + if ((ssi = SSICreateIndex(mode)) == NULL) + Die("Failed to allocate SSI index"); + + /* Generate two FASTA files, tmp.0 and tmp.1, and index them. + */ + if ((ofp = fopen("tmp.0", "w")) == NULL) + Die("failed to open tmp.0"); + if ((status = SSIAddFileToIndex(ssi, "tmp.0", SQFILE_FASTA, &fh)) != 0) + Die("SSIAddFileToIndex() failed: %s", SSIErrorString(status)); + for (i = 0; i < 10; i++) { + if ((status = SSIGetFilePosition(ofp, mode, &r_off)) != 0) + Die("SSIGetFilePosition() failed: %s", SSIErrorString(status)); + sprintf(name, "seq%d", i); + sprintf(accession, "ac%d", i); + fprintf(ofp, ">%s [%s] Description? we don't need no steenking description.\n", + name, accession); + if ((status = SSIGetFilePosition(ofp, mode, &d_off)) != 0) + Die("SSIGetFilePosition() failed: %s", SSIErrorString(status)); + fprintf(ofp, "AAAAAAAAAA\n"); + fprintf(ofp, "CCCCCCCCCC\n"); + fprintf(ofp, "GGGGGGGGGG\n"); + fprintf(ofp, "TTTTTTTTTT\n"); + + if ((status = SSIAddPrimaryKeyToIndex(ssi, name, fh, &r_off, &d_off, 40)) != 0) + Die("SSIAddPrimaryKeyToIndex() failed: %s", SSIErrorString(status)); + if ((status = SSIAddSecondaryKeyToIndex(ssi, accession, name)) != 0) + Die("SSIAddSecondaryKeyToIndex() failed: %s", SSIErrorString(status)); + } + SSISetFileForSubseq(ssi, fh, 11, 10); + fclose(ofp); + + if ((ofp = fopen("tmp.1", "w")) == NULL) + Die("failed to open tmp.1"); + if ((status = SSIAddFileToIndex(ssi, "tmp.1", SQFILE_FASTA, &fh)) != 0) + Die("SSIAddFileToIndex() failed: %s", SSIErrorString(status)); + for (i = 10; i < 20; i++) { + if ((status = SSIGetFilePosition(ofp, mode, &r_off)) != 0) + Die("SSIGetFilePosition() failed: %s", SSIErrorString(status)); + sprintf(name, "seq%d", i); + sprintf(accession, "ac%d", i); + fprintf(ofp, ">%s [%s] i/o, i/o, it's off to disk we go.\n", + name, accession); + if ((status = SSIGetFilePosition(ofp, mode, &d_off)) != 0) + Die("SSIGetFilePosition() failed: %s", SSIErrorString(status)); + fprintf(ofp, "AAAAAAAAAA 10\n"); + fprintf(ofp, "CCCCCCCCCC 20\n"); + fprintf(ofp, "GGGGGGGGGG 30\n"); + fprintf(ofp, "TTTTTTTTTT 40\n"); + + if ((status = SSIAddPrimaryKeyToIndex(ssi, name, fh, &r_off, &d_off, 40)) != 0) + Die("SSIAddPrimaryKeyToIndex() failed: %s", SSIErrorString(status)); + if ((status = SSIAddSecondaryKeyToIndex(ssi, accession, name)) != 0) + Die("SSIAddSecondaryKeyToIndex() failed: %s", SSIErrorString(status)); + } + SSISetFileForSubseq(ssi, fh, 14, 10); + fclose(ofp); + + /* Write the index to tmp.ssi + */ + if ((status = SSIWriteIndex("tmp.ssi", ssi)) != 0) + Die("SSIWriteIndex() failed: %s", SSIErrorString(status)); + SSIFreeIndex(ssi); + + /* Now reopen the index and run some tests. + */ + exit(0); +} + + +#endif /* test driving code */ + + + diff --git a/forester/archive/RIO/others/hmmer/squid/ssi.h b/forester/archive/RIO/others/hmmer/squid/ssi.h new file mode 100644 index 0000000..1ecde6c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/ssi.h @@ -0,0 +1,193 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +#ifndef SSIH_INCLUDED +#define SSIH_INCLUDED + +/* ssi.h + * Database indexing (SSI format support) + * CVS $Id: ssi.h,v 1.1.1.1 2005/03/22 08:34:21 cmzmasek Exp $ + * + * See: ssi_format.tex in Docs/ + */ + +#include +#include "squid.h" + +/* Limits + */ +#define SSI_MAXFILES 32767 /* 2^15-1 */ +#define SSI_MAXKEYS 2147483647L /* 2^31-1 */ + +/* 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 */ + sqd_uint32 handle; /* handle on this key*/ +}; +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 */ + + 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; + sqd_uint32 tot_primary; + + struct ssiskey_s *skeys; + sqd_uint32 slen; /* length of longest skey, including '\0' */ + sqd_uint32 nsecondary; + sqd_uint32 tot_secondary; + + /* The following stuff is for creating really big indexes, where + * we have to write a tmp file to disk with multiple chunks, then + * mergesort the chunks. + */ + char *tmpbase; /* root name of tmp files: .t1 and .t2 */ + FILE *t1; /* open tmp file for collecting chunks */ + fpos_t *chunkoffset; /* array of offsets to individual chunks; 0..nchunks-1 */ + int nchunks; /* total # of chunks in t1 */ + int max_chunk_size; /* maximum size of chunk to hold in memory at one time, in MB */ +}; +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 + +/* 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); + + +#endif /*SSIH_INCLUDED*/ diff --git a/forester/archive/RIO/others/hmmer/squid/stack.c b/forester/archive/RIO/others/hmmer/squid/stack.c new file mode 100644 index 0000000..51b8664 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/stack.c @@ -0,0 +1,103 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* stack.c + * SRE, Thu Mar 3 10:08:48 1994 + * + * Implementation of generic stack structures. + * RCS $Id: stack.c,v 1.1.1.1 2005/03/22 08:34:25 cmzmasek Exp $ + */ + +#include +#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; +} diff --git a/forester/archive/RIO/others/hmmer/squid/stockholm.c b/forester/archive/RIO/others/hmmer/squid/stockholm.c new file mode 100644 index 0000000..f70250e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/stockholm.c @@ -0,0 +1,607 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* stockholm.c + * SRE, Fri May 28 15:46:41 1999 + * + * Reading/writing of Stockholm format multiple sequence alignments. + * + * example of API: + * + * MSA *msa; + * FILE *fp; -- opened for write with fopen() + * MSAFILE *afp; -- opened for read with MSAFileOpen() + * + * while ((msa = ReadStockholm(afp)) != NULL) + * { + * WriteStockholm(fp, msa); + * MSAFree(msa); + * } + * + * RCS $Id: stockholm.c,v 1.1.1.1 2005/03/22 08:34:30 cmzmasek Exp $ + */ +#include +#include +#include "squid.h" +#include "msa.h" + +static int parse_gf(MSA *msa, char *buf); +static int parse_gs(MSA *msa, char *buf); +static int parse_gc(MSA *msa, char *buf); +static int parse_gr(MSA *msa, char *buf); +static int parse_comment(MSA *msa, char *buf); +static int parse_sequence(MSA *msa, char *buf); +static void actually_write_stockholm(FILE *fp, MSA *msa, int cpl); + +#ifdef TESTDRIVE_STOCKHOLM +/***************************************************************** + * stockholm.c test driver: + * 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 + * + */ +int +main(int argc, char **argv) +{ + MSAFILE *afp; + MSA *msa; + char *file; + + file = argv[1]; + + if ((afp = MSAFileOpen(file, MSAFILE_STOCKHOLM, NULL)) == NULL) + Die("Couldn't open %s\n", file); + + while ((msa = ReadStockholm(afp)) != NULL) + { + WriteStockholm(stdout, msa); + MSAFree(msa); + } + + MSAFileClose(afp); + exit(0); +} +/******************************************************************/ +#endif /* testdriver */ + + +/* Function: ReadStockholm() + * Date: SRE, Fri May 21 17:33:10 1999 [St. Louis] + * + * Purpose: Parse the next alignment from an open Stockholm + * format alignment file. Return the alignment, or + * NULL if there are no more alignments in the file. + * + * Args: afp - open alignment file + * + * Returns: MSA * - an alignment object. + * caller responsible for an MSAFree() + * NULL if no more alignments + * + * Diagnostics: + * Will Die() here with a (potentially) useful message + * if a parsing error occurs + */ +MSA * +ReadStockholm(MSAFILE *afp) +{ + MSA *msa; + char *s; + int status; + + if (feof(afp->f)) return NULL; + + /* Initialize allocation of the MSA. + */ + msa = MSAAlloc(10, 0); + + /* Check the magic Stockholm header line. + * We have to skip blank lines here, else we perceive + * trailing blank lines in a file as a format error when + * reading in multi-record mode. + */ + do { + if ((s = MSAFileGetLine(afp)) == NULL) { + MSAFree(msa); + return NULL; + } + } while (IsBlankline(s)); + + if (strncmp(s, "# STOCKHOLM 1.", 14) != 0) + Die("\ +File %s doesn't appear to be in Stockholm format.\n\ +Assuming there isn't some other problem with your file (it is an\n\ +alignment file, right?), please either:\n\ + a) use the Babelfish format autotranslator option (-B, usually);\n\ + b) specify the file's format with the --informat option; or\n\ + a) reformat the alignment to Stockholm format.\n", + afp->fname); + + /* Read the alignment file one line at a time. + */ + while ((s = MSAFileGetLine(afp)) != NULL) + { + while (*s == ' ' || *s == '\t') s++; /* skip leading whitespace */ + + if (*s == '#') { + if (strncmp(s, "#=GF", 4) == 0) status = parse_gf(msa, s); + else if (strncmp(s, "#=GS", 4) == 0) status = parse_gs(msa, s); + else if (strncmp(s, "#=GC", 4) == 0) status = parse_gc(msa, s); + else if (strncmp(s, "#=GR", 4) == 0) status = parse_gr(msa, s); + else status = parse_comment(msa, s); + } + else if (strncmp(s, "//", 2) == 0) break; + else if (*s == '\n') continue; + else status = parse_sequence(msa, s); + + if (status == 0) + Die("Stockholm format parse error: line %d of file %s while reading alignment %s", + afp->linenumber, afp->fname, msa->name == NULL? "" : msa->name); + } + + if (s == NULL && msa->nseq != 0) + Die ("Didn't find // at end of alignment %s", msa->name == NULL ? "" : msa->name); + + if (s == NULL && msa->nseq == 0) { + /* probably just some junk at end of file */ + MSAFree(msa); + return NULL; + } + + MSAVerifyParse(msa); + return msa; +} + + +/* Function: WriteStockholm() + * Date: SRE, Mon May 31 19:15:22 1999 [St. Louis] + * + * Purpose: Write an alignment in standard multi-block + * Stockholm format to an open file. A wrapper + * for actually_write_stockholm(). + * + * Args: fp - file that's open for writing + * msa - alignment to write + * + * Returns: (void) + */ +void +WriteStockholm(FILE *fp, MSA *msa) +{ + actually_write_stockholm(fp, msa, 50); /* 50 char per block */ +} + +/* Function: WriteStockholmOneBlock() + * Date: SRE, Mon May 31 19:15:22 1999 [St. Louis] + * + * Purpose: Write an alignment in Pfam's single-block + * Stockholm format to an open file. A wrapper + * for actually_write_stockholm(). + * + * Args: fp - file that's open for writing + * msa - alignment to write + * + * Returns: (void) + */ +void +WriteStockholmOneBlock(FILE *fp, MSA *msa) +{ + actually_write_stockholm(fp, msa, msa->alen); /* one big block */ +} + + +/* Function: actually_write_stockholm() + * Date: SRE, Fri May 21 17:39:22 1999 [St. Louis] + * + * Purpose: Write an alignment in Stockholm format to + * an open file. This is the function that actually + * does the work. The API's WriteStockholm() + * and WriteStockholmOneBlock() are wrappers. + * + * Args: fp - file that's open for writing + * msa - alignment to write + * cpl - characters to write per line in alignment block + * + * Returns: (void) + */ +static void +actually_write_stockholm(FILE *fp, MSA *msa, int cpl) +{ + int i, j; + int len = 0; + int namewidth; + int typewidth = 0; /* markup tags are up to 5 chars long */ + int markupwidth = 0; /* #=GR, #=GC are four char wide + 1 space */ + char buf[256]; + int currpos; + char *s, *tok; + + /* Figure out how much space we need for name + markup + * to keep the alignment in register. Required by Stockholm + * spec, even though our Stockholm parser doesn't care (Erik's does). + */ + namewidth = 0; + for (i = 0; i < msa->nseq; i++) + if ((len = strlen(msa->sqname[i])) > namewidth) + namewidth = len; + + /* Figure out how much space we need for markup tags + * markupwidth = always 4 if we're doing markup: strlen("#=GR") + * typewidth = longest markup tag + */ + if (msa->ss != NULL) { markupwidth = 4; typewidth = 2; } + if (msa->sa != NULL) { markupwidth = 4; typewidth = 2; } + for (i = 0; i < msa->ngr; i++) + if ((len = strlen(msa->gr_tag[i])) > typewidth) typewidth = len; + + if (msa->rf != NULL) { markupwidth = 4; if (typewidth < 2) typewidth = 2; } + if (msa->ss_cons != NULL) { markupwidth = 4; if (typewidth < 7) typewidth = 7; } + if (msa->sa_cons != NULL) { markupwidth = 4; if (typewidth < 7) typewidth = 7; } + for (i = 0; i < msa->ngc; i++) + if ((len = strlen(msa->gc_tag[i])) > typewidth) typewidth = len; + + + /* Magic Stockholm header + */ + fprintf(fp, "# STOCKHOLM 1.0\n"); + + /* Free text comments + */ + for (i = 0; i < msa->ncomment; i++) + fprintf(fp, "# %s\n", msa->comment[i]); + if (msa->ncomment > 0) fprintf(fp, "\n"); + + /* GF section: per-file annotation + */ + if (msa->name != NULL) fprintf(fp, "#=GF ID %s\n", msa->name); + if (msa->acc != NULL) fprintf(fp, "#=GF AC %s\n", msa->acc); + if (msa->desc != NULL) fprintf(fp, "#=GF DE %s\n", msa->desc); + if (msa->au != NULL) fprintf(fp, "#=GF AU %s\n", msa->au); + if (msa->flags & MSA_SET_GA) fprintf(fp, "#=GF GA %.1f %.1f\n", msa->ga1, msa->ga2); + if (msa->flags & MSA_SET_NC) fprintf(fp, "#=GF TC %.1f %.1f\n", msa->nc1, msa->nc2); + if (msa->flags & MSA_SET_TC) fprintf(fp, "#=GF TC %.1f %.1f\n", msa->tc1, msa->tc2); + for (i = 0; i < msa->ngf; i++) + fprintf(fp, "#=GF %-5s %s\n", msa->gf_tag[i], msa->gf[i]); + fprintf(fp, "\n"); + + + /* GS section: per-sequence annotation + */ + if (msa->flags & MSA_SET_WGT) + { + for (i = 0; i < msa->nseq; i++) + fprintf(fp, "#=GS %-*.*s WT %.2f\n", namewidth, namewidth, msa->sqname[i], msa->wgt[i]); + fprintf(fp, "\n"); + } + if (msa->sqacc != NULL) + { + for (i = 0; i < msa->nseq; i++) + if (msa->sqacc[i] != NULL) + fprintf(fp, "#=GS %-*.*s AC %s\n", namewidth, namewidth, msa->sqname[i], msa->sqacc[i]); + fprintf(fp, "\n"); + } + if (msa->sqdesc != NULL) + { + for (i = 0; i < msa->nseq; i++) + if (msa->sqdesc[i] != NULL) + fprintf(fp, "#=GS %*.*s DE %s\n", namewidth, namewidth, msa->sqname[i], msa->sqdesc[i]); + fprintf(fp, "\n"); + } + for (i = 0; i < msa->ngs; i++) + { + /* Multiannotated GS tags are possible; for example, + * #=GS foo DR PDB; 1xxx; + * #=GS foo DR PDB; 2yyy; + * These are stored, for example, as: + * msa->gs[0][0] = "PDB; 1xxx;\nPDB; 2yyy;" + * and must be decomposed. + */ + for (j = 0; j < msa->nseq; j++) + if (msa->gs[i][j] != NULL) + { + s = msa->gs[i][j]; + while ((tok = sre_strtok(&s, "\n", NULL)) != NULL) + fprintf(fp, "#=GS %*.*s %5s %s\n", namewidth, namewidth, + msa->sqname[j], msa->gs_tag[i], tok); + } + fprintf(fp, "\n"); + } + + /* Alignment section: + * contains aligned sequence, #=GR annotation, and #=GC annotation + */ + for (currpos = 0; currpos < msa->alen; currpos += cpl) + { + if (currpos > 0) fprintf(fp, "\n"); + for (i = 0; i < msa->nseq; i++) + { + strncpy(buf, msa->aseq[i] + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "%-*.*s %s\n", namewidth+typewidth+markupwidth, namewidth+typewidth+markupwidth, + msa->sqname[i], buf); + + if (msa->ss != NULL && msa->ss[i] != NULL) { + strncpy(buf, msa->ss[i] + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "#=GR %-*.*s SS %s\n", namewidth, namewidth, msa->sqname[i], buf); + } + if (msa->sa != NULL && msa->sa[i] != NULL) { + strncpy(buf, msa->sa[i] + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "#=GR %-*.*s SA %s\n", namewidth, namewidth, msa->sqname[i], buf); + } + for (j = 0; j < msa->ngr; j++) + if (msa->gr[j][i] != NULL) { + strncpy(buf, msa->gr[j][i] + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "#=GR %-*.*s %5s %s\n", + namewidth, namewidth, msa->sqname[i], msa->gr_tag[j], buf); + } + } + if (msa->ss_cons != NULL) { + strncpy(buf, msa->ss_cons + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "#=GC %-*.*s %s\n", namewidth+typewidth, namewidth+typewidth, "SS_cons", buf); + } + + if (msa->sa_cons != NULL) { + strncpy(buf, msa->sa_cons + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "#=GC %-*.*s %s\n", namewidth+typewidth, namewidth+typewidth, "SA_cons", buf); + } + + if (msa->rf != NULL) { + strncpy(buf, msa->rf + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "#=GC %-*.*s %s\n", namewidth+typewidth, namewidth+typewidth, "RF", buf); + } + for (j = 0; j < msa->ngc; j++) { + strncpy(buf, msa->gc[j] + currpos, cpl); + buf[cpl] = '\0'; + fprintf(fp, "#=GC %-*.*s %s\n", namewidth+typewidth, namewidth+typewidth, + msa->gc_tag[j], buf); + } + } + fprintf(fp, "//\n"); +} + + + + + +/* Format of a GF line: + * #=GF + */ +static int +parse_gf(MSA *msa, char *buf) +{ + char *gf; + char *featurename; + char *text; + char *s; + + s = buf; + if ((gf = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((featurename = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((text = sre_strtok(&s, "\n", NULL)) == NULL) return 0; + while (*text && (*text == ' ' || *text == '\t')) text++; + + if (strcmp(featurename, "ID") == 0) + msa->name = sre_strdup(text, -1); + else if (strcmp(featurename, "AC") == 0) + msa->acc = sre_strdup(text, -1); + else if (strcmp(featurename, "DE") == 0) + msa->desc = sre_strdup(text, -1); + else if (strcmp(featurename, "AU") == 0) + msa->au = sre_strdup(text, -1); + else if (strcmp(featurename, "GA") == 0) + { + s = text; + if ((text = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + msa->ga1 = atof(text); + if ((text = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + msa->ga2 = atof(text); + msa->flags |= MSA_SET_GA; + } + else if (strcmp(featurename, "NC") == 0) + { + s = text; + if ((text = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + msa->nc1 = atof(text); + if ((text = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + msa->nc2 = atof(text); + msa->flags |= MSA_SET_NC; + } + else if (strcmp(featurename, "TC") == 0) + { + s = text; + if ((text = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + msa->tc1 = atof(text); + if ((text = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + msa->tc2 = atof(text); + msa->flags |= MSA_SET_TC; + } + else + MSAAddGF(msa, featurename, text); + + return 1; +} + + +/* Format of a GS line: + * #=GS + */ +static int +parse_gs(MSA *msa, char *buf) +{ + char *gs; + char *seqname; + char *featurename; + char *text; + int seqidx; + char *s; + + s = buf; + if ((gs = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((seqname = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((featurename = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((text = sre_strtok(&s, "\n", NULL)) == NULL) return 0; + while (*text && (*text == ' ' || *text == '\t')) text++; + + /* GS usually follows another GS; guess lastidx+1 + */ + seqidx = MSAGetSeqidx(msa, seqname, msa->lastidx+1); + msa->lastidx = seqidx; + + if (strcmp(featurename, "WT") == 0) + { + msa->wgt[seqidx] = atof(text); + msa->flags |= MSA_SET_WGT; + } + + else if (strcmp(featurename, "AC") == 0) + MSASetSeqAccession(msa, seqidx, text); + + else if (strcmp(featurename, "DE") == 0) + MSASetSeqDescription(msa, seqidx, text); + + else + MSAAddGS(msa, featurename, seqidx, text); + + return 1; +} + +/* Format of a GC line: + * #=GC + */ +static int +parse_gc(MSA *msa, char *buf) +{ + char *gc; + char *featurename; + char *text; + char *s; + int len; + + s = buf; + if ((gc = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((featurename = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((text = sre_strtok(&s, WHITESPACE, &len)) == NULL) return 0; + + if (strcmp(featurename, "SS_cons") == 0) + sre_strcat(&(msa->ss_cons), -1, text, len); + else if (strcmp(featurename, "SA_cons") == 0) + sre_strcat(&(msa->sa_cons), -1, text, len); + else if (strcmp(featurename, "RF") == 0) + sre_strcat(&(msa->rf), -1, text, len); + else + MSAAppendGC(msa, featurename, text); + + return 1; +} + +/* Format of a GR line: + * #=GR + */ +static int +parse_gr(MSA *msa, char *buf) +{ + char *gr; + char *seqname; + char *featurename; + char *text; + int seqidx; + int len; + int j; + char *s; + + s = buf; + if ((gr = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((seqname = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((featurename = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((text = sre_strtok(&s, WHITESPACE, &len)) == NULL) return 0; + + /* GR usually follows sequence it refers to; guess msa->lastidx */ + seqidx = MSAGetSeqidx(msa, seqname, msa->lastidx); + msa->lastidx = seqidx; + + if (strcmp(featurename, "SS") == 0) + { + if (msa->ss == NULL) + { + msa->ss = MallocOrDie(sizeof(char *) * msa->nseqalloc); + msa->sslen = MallocOrDie(sizeof(int) * msa->nseqalloc); + for (j = 0; j < msa->nseqalloc; j++) + { + msa->ss[j] = NULL; + msa->sslen[j] = 0; + } + } + msa->sslen[seqidx] = sre_strcat(&(msa->ss[seqidx]), msa->sslen[seqidx], text, len); + } + else if (strcmp(featurename, "SA") == 0) + { + if (msa->sa == NULL) + { + msa->sa = MallocOrDie(sizeof(char *) * msa->nseqalloc); + msa->salen = MallocOrDie(sizeof(int) * msa->nseqalloc); + for (j = 0; j < msa->nseqalloc; j++) + { + msa->sa[j] = NULL; + msa->salen[j] = 0; + } + } + msa->salen[seqidx] = sre_strcat(&(msa->sa[seqidx]), msa->salen[seqidx], text, len); + } + else + MSAAppendGR(msa, featurename, seqidx, text); + + return 1; +} + + +/* comments are simply stored verbatim, not parsed + */ +static int +parse_comment(MSA *msa, char *buf) +{ + char *s; + char *comment; + + s = buf + 1; /* skip leading '#' */ + if (*s == '\n') { *s = '\0'; comment = s; } /* deal with blank comment */ + else if ((comment = sre_strtok(&s, "\n", NULL)) == NULL) return 0; + + MSAAddComment(msa, comment); + return 1; +} + +static int +parse_sequence(MSA *msa, char *buf) +{ + char *s; + char *seqname; + char *text; + int seqidx; + int len; + + s = buf; + if ((seqname = sre_strtok(&s, WHITESPACE, NULL)) == NULL) return 0; + if ((text = sre_strtok(&s, WHITESPACE, &len)) == NULL) return 0; + + /* seq usually follows another seq; guess msa->lastidx +1 */ + seqidx = MSAGetSeqidx(msa, seqname, msa->lastidx+1); + msa->lastidx = seqidx; + + msa->sqlen[seqidx] = sre_strcat(&(msa->aseq[seqidx]), msa->sqlen[seqidx], text, len); + return 1; +} + + + diff --git a/forester/archive/RIO/others/hmmer/squid/stockholm.h b/forester/archive/RIO/others/hmmer/squid/stockholm.h new file mode 100644 index 0000000..a9cae55 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/stockholm.h @@ -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*/ diff --git a/forester/archive/RIO/others/hmmer/squid/stopwatch.c b/forester/archive/RIO/others/hmmer/squid/stopwatch.c new file mode 100644 index 0000000..5f2c4bd --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/stopwatch.c @@ -0,0 +1,307 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* stopwatch.c + * SRE, Fri Nov 26 14:54:21 1999 [St. Louis] [HMMER] + * SRE, Thu Aug 3 08:11:52 2000 [St. Louis] [moved to SQUID] + * + * Reporting of cpu/system/elapsed time used by a process. + * thanks to Warren Gish for assistance. + * + * Basic API: + * + * Stopwatch_t *w; + * w = StopwatchCreate(); + * + * StopwatchStart(w); + * do_lots_of_stuff; + * StopwatchStop(w); + * StopwatchDisplay(stdout, "CPU time: ", w); + * + * StopwatchFree(w); + * + * Some behavior can be controlled at compile time by #define's: + * + * SRE_STRICT_ANSI: By default, stopwatch module assumes that a + * machine is POSIX-compliant (e.g. has struct tms, sys/times.h, + * and times()). If compiled with -DSRE_STRICT_ANSI, reverts to + * pure ANSI C conformant implementation. This simpler system + * won't report system times, only user and elapsed times. + * + * SRE_ENABLE_PVM: If compiled with -DSRE_ENABLE_PVM, the + * functions StopwatchPVMPack() and StopwatchPVMUnpack() + * are compiled, providing PVM communications ability. + * + * One additional compile-time configuration note: + * PTHREAD_TIMES_HACK: Linux pthreads, as of RH6.0/glibc-devel-2.1.1-6, + * appears to interact poorly with times() -- usage times in all + * but the master thread are lost. A workaround for this bug is + * to run stopwatches in each worker thread, and accumulate those + * times back into the master stopwatch using StopwatchInclude(). + * (Just like a PVM implementation has to do.) In HMMER, this + * behavior is compiled in with -DPTHREAD_TIMES_HACK. No + * changes are made in stopwatch functions themselves, though; + * all the extra code is HMMER code. See hmmcalibrate.c for + * an example. + * + * See hmmcalibrate.c for examples of more complex usage + * in dealing with pthreads and PVM. + */ + +#include +#include +#include +#ifdef SRE_ENABLE_PVM +#include +#endif + +#include "stopwatch.h" + +/* Function: format_time_string() + * Date: SRE, Fri Nov 26 15:06:28 1999 [St. Louis] + * + * Purpose: Given a number of seconds, format into + * hh:mm:ss.xx in a provided buffer. + * + * Args: buf - allocated space (128 is plenty!) + * sec - number of seconds + * do_frac - TRUE (1) to include hundredths of a sec + */ +static void +format_time_string(char *buf, double sec, int do_frac) +{ + int h, m, s, hs; + + h = (int) (sec / 3600.); + m = (int) (sec / 60.) - h * 60; + s = (int) (sec) - h * 3600 - m * 60; + if (do_frac) { + hs = (int) (sec * 100.) - h * 360000 - m * 6000 - s * 100; + sprintf(buf, "%02d:%02d:%02d.%02d", h,m,s,hs); + } else { + sprintf(buf, "%02d:%02d:%02d", h,m,s); + } +} + +/* Function: StopwatchStart() + * Date: SRE, Fri Nov 26 15:07:48 1999 [St. Louis] + * + * Purpose: Start a stopwatch. + * + * Args: w - the watch + */ +void +StopwatchStart(Stopwatch_t *w) +{ + w->t0 = time(NULL); +#ifdef SRE_STRICT_ANSI + w->cpu0 = clock(); +#else + (void) times(&(w->cpu0)); +#endif + + w->elapsed = 0.; + w->user = 0.; + w->sys = 0.; +} + +/* Function: StopwatchStop() + * Date: SRE, Fri Nov 26 15:08:16 1999 [St. Louis] + * + * Purpose: Stop a stopwatch. + * + * The implementation allows "split times": + * you can stop a watch multiple times, reporting + * times at multiple points during program + * execution. + * + * Args: w - the watch + */ +void +StopwatchStop(Stopwatch_t *w) +{ + time_t t1; +#ifdef SRE_STRICT_ANSI + clock_t cpu1; +#else + struct tms cpu1; + long clk_tck; +#endif + + t1 = time(NULL); + w->elapsed = difftime(t1, w->t0); + +#ifdef SRE_STRICT_ANSI + cpu1 = clock(); + w->user = (double) (cpu1- w->cpu0) / (double) CLOCKS_PER_SEC; + w->sys = 0.; /* no way to portably get system time in ANSI C */ + +#else /* assume we're on a POSIX system by default */ + (void) times(&cpu1); + + clk_tck = sysconf(_SC_CLK_TCK); + w->user = (double) (cpu1.tms_utime + cpu1.tms_cutime - + w->cpu0.tms_utime - w->cpu0.tms_cutime) / + (double) clk_tck; + + w->sys = (double) (cpu1.tms_stime + cpu1.tms_cstime - + w->cpu0.tms_stime - w->cpu0.tms_cstime) / + (double) clk_tck; +#endif +} + +/* Function: StopwatchInclude() + * Date: SRE, Fri Nov 26 15:09:34 1999 [St. Louis] + * + * Purpose: Merge the cpu and system times from a slave into + * a master stopwatch. Both watches must be + * stopped, and should not be stopped again unless + * You Know What You're Doing. + * + * Elapsed time is *not* merged; master is assumed + * to be keeping track of the wall clock time, + * and the slave/worker watch is ignored. + * + * Used in two cases: + * 1) PVM; merge in the stopwatch(es) from separate + * process(es) in a cluster. + * 2) Threads, for broken pthreads/times() implementations + * that lose track of cpu times used by spawned + * threads. + * + * Args: w1 - the master stopwatch + * w2 - the slave/worker watch + * + */ +void +StopwatchInclude(Stopwatch_t *w1, Stopwatch_t *w2) +{ + w1->user += w2->user; + w1->sys += w2->sys; +} + +/* Function: StopwatchAlloc(), StopwatchZero(), StopwatchCopy(), + * StopwatchFree() + * Date: SRE, Fri Nov 26 15:13:14 1999 [St. Louis] + * + * Purpose: The usual creation/manipulation/destruction routines + * for a stopwatch object. + */ +Stopwatch_t * +StopwatchCreate(void) +{ + Stopwatch_t *w; + w = malloc(sizeof(Stopwatch_t)); + return w; +} +void +StopwatchZero(Stopwatch_t *w) +{ + w->elapsed = 0.; + w->user = 0.; + w->sys = 0.; +} +void +StopwatchCopy(Stopwatch_t *w1, Stopwatch_t *w2) +{ + w1->t0 = w2->t0; +#ifdef SRE_STRICT_ANSI + w1->cpu0 = w2->cpu0; +#else + w1->cpu0.tms_utime = w2->cpu0.tms_utime; + w1->cpu0.tms_stime = w2->cpu0.tms_stime; + w1->cpu0.tms_cutime = w2->cpu0.tms_cutime; + w1->cpu0.tms_cstime = w2->cpu0.tms_cstime; +#endif + w1->elapsed = w2->elapsed; + w1->user = w2->user; + w1->sys = w2->sys; +} +void +StopwatchFree(Stopwatch_t *w) +{ + free(w); +} + + +/* Function: StopwatchDisplay() + * Date: SRE, Fri Nov 26 15:14:12 1999 [St. Louis] + * + * Purpose: Output a usage summary line from a *stopped* + * stopwatch (the times will reflect the last + * time StopwatchStop() was called.) + * + * For s = "CPU Time: " an example output line is: + * CPU Time: 142.55u 7.17s 149.72 Elapsed: 00:02:35.00 + * + * Args: fp - open file for writing (stdout, possibly) + * s - prefix for the report line + * w - a (recently stopped) stopwatch + * + */ +void +StopwatchDisplay(FILE *fp, char *s, Stopwatch_t *w) +{ + char buf[128]; /* (safely holds up to 10^14 years) */ + + if (s == NULL) + fputs("CPU Time: ", fp); + else + fputs(s, fp); + + format_time_string(buf, w->user+w->sys, 1); +#ifdef SRE_STRICT_ANSI + fprintf(fp, "%.2fu %s ", w->user, buf); +#else + fprintf(fp, "%.2fu %.2fs %s ", w->user, w->sys, buf); +#endif + + format_time_string(buf, w->elapsed, 0); + fprintf(fp, "Elapsed: %s\n", buf); +} + +#ifdef SRE_ENABLE_PVM +/* Function: StopwatchPVMPack(), StopwatchPVMUnpack() + * Date: SRE, Fri Nov 26 15:22:04 1999 [St. Louis] + * + * Purpose: Transmission of stopwatch data in a PVM + * cluster. + */ +void +StopwatchPVMPack(Stopwatch_t *w) +{ + pvm_pkdouble(&(w->elapsed), 1, 1); + pvm_pkdouble(&(w->user), 1, 1); + pvm_pkdouble(&(w->sys), 1, 1); +} +void +StopwatchPVMUnpack(Stopwatch_t *w) +{ + pvm_upkdouble(&(w->elapsed), 1, 1); + pvm_upkdouble(&(w->user), 1, 1); + pvm_upkdouble(&(w->sys), 1, 1); +} +#endif /*SRE_ENABLE_PVM*/ + + +#ifdef TESTDRIVER +int +main(int argc, char **argv) +{ + Stopwatch_t stopwatch; + + StopwatchStart(&stopwatch); + + sleep(5); + + StopwatchStop(&stopwatch); + StopwatchDisplay(stdout, "CPU Time: ", &stopwatch); +} +#endif diff --git a/forester/archive/RIO/others/hmmer/squid/stopwatch.h b/forester/archive/RIO/others/hmmer/squid/stopwatch.h new file mode 100644 index 0000000..4794a2e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/stopwatch.h @@ -0,0 +1,59 @@ +/* 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.1.1.1 2005/03/22 08:34:24 cmzmasek 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. + * + ***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ***************************************************************** + */ +#include +#include +#ifndef SRE_STRICT_ANSI +#include +#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*/ + diff --git a/forester/archive/RIO/others/hmmer/squid/test_main.c b/forester/archive/RIO/others/hmmer/squid/test_main.c new file mode 100644 index 0000000..1e80d54 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/test_main.c @@ -0,0 +1,25 @@ +/* Test of the file.c functions + * cp to ../test_main.c and "make test". + * Usage: ./test + */ + +#include +#include +#include "squid.h" + +int +main(int argc, char **argv) +{ + char *env; + char *file; + FILE *fp; + + env = argv[1]; + file = argv[2]; + + fp = EnvFileOpen(file, env); + if (fp != NULL) printf("File open succeeded\n"); + else printf("File open FAILED\n"); + + return 0; +} diff --git a/forester/archive/RIO/others/hmmer/squid/translate.c b/forester/archive/RIO/others/hmmer/squid/translate.c new file mode 100644 index 0000000..fbf7247 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/translate.c @@ -0,0 +1,87 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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,v 1.1.1.1 2005/03/22 08:34:31 cmzmasek Exp $ + */ + +#include +#include +#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; +} diff --git a/forester/archive/RIO/others/hmmer/squid/translate_main.c b/forester/archive/RIO/others/hmmer/squid/translate_main.c new file mode 100644 index 0000000..1de9505 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/translate_main.c @@ -0,0 +1,226 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* translate_main.c + * + * translate - create a file of all possible protein ORFs, given + * an input nucleic acid sequence + * + * + * Not currently compliant w/ HMMER API. + * + * 1.02 Thu Apr 20 16:12:41 1995 + * + incorporated into squid + * + -a, -s options added + * + * CVS $Id: translate_main.c,v 1.1.1.1 2005/03/22 08:34:27 cmzmasek Exp $ + */ + +#include +#include +#include +#include "squid.h" +#include "version.h" + +#ifdef NEED_GETOPTH +#include +#endif + +#define OPTIONS "ahl:o:qs:" + +static char usage[] = "\ +Usage: translate [-options] \n\ + Translate a nucleic acid sequence into protein ORFs.\n\ + Available options are:\n\ + -a : translate in full, with stops; no individual ORFs\n\ + -h : help; show brief usage and version info\n\ + -l : report only ORFs greater than minlen (default 20)\n\ + -o : save results in output file\n\ + -q : quiet; silence banner, for piping or redirection\n\ + -s : with -a, set stop character to \n"; + +int +main(int argc, char **argv) +{ + char *seqfile; /* name of seq file to read */ + SQFILE *seqfp; /* ptr to opened seq file */ + int format; /* format of sequence file */ + char *seq; /* ptr to current sequence */ + SQINFO sqinfo; /* sequence information */ + char *revseq; /* reverse complement of seq */ + int start, end; /* coords of ORF in current seq */ + int orfnumber; /* counter for ORFs in current seq */ + char *aaseq[6]; /* full translations in all 6 frames */ + char *orf; /* ptr to translated ORF sequence */ + char *sptr; /* ptr into orf */ + int len; /* length of an ORF */ + int frame; /* counter for frames (3..5 are reverse)*/ + + int minimum_len; /* minimum length of ORFs to print out */ + char *outfile; /* file to save output in */ + FILE *ofp; /* where to direct output */ + char stopchar; /* what to use as a stop character */ + int keepstops; /* TRUE to do six big ORFs */ + int quiet; /* TRUE to silence banner */ + + int optchar; /* option character */ + extern char *optarg; /* for getopt() */ + extern int optind; /* for getopt() */ + + /*********************************************** + * Parse the command line + ***********************************************/ + + format = SQFILE_UNKNOWN; /* autodetect by default */ + minimum_len = 20; + outfile = NULL; + stopchar = '*'; + keepstops = FALSE; + quiet = FALSE; + + while ((optchar = getopt(argc, argv, OPTIONS)) != -1) + switch (optchar) { + + case 'a': keepstops = TRUE; break; + case 'l': minimum_len = atoi(optarg); break; + case 'o': outfile = optarg; break; + case 'q': quiet = TRUE; break; + case 's': stopchar = *optarg; break; + + case 'h': + printf("translate %s, %s\n%s\n", RELEASE, RELEASEDATE, usage); + exit(EXIT_SUCCESS); + default: + Die("%s\n", usage); + } + + if (argc - optind != 1) + Die("Incorrect number of command line arguments\n%s\n", usage); + + seqfile = argv[optind]; + + /*********************************************** + * Open sequence file and output file + ***********************************************/ + + seqfp = SeqfileOpen(seqfile, format, NULL); + if (seqfp == NULL) + Die("Failed to open sequence file %s\n%s\n", + seqfile, usage); + + if (outfile != NULL) + { + if ((ofp = fopen(outfile, "w")) == NULL) + Die("Failed to open output file %s\n", outfile); + } + else + ofp = stdout; + + + /*********************************************** + * Main routine + ***********************************************/ + + if (! quiet) printf("translate %s, %s\n", RELEASE, RELEASEDATE); + + while (ReadSeq(seqfp, seqfp->format, &seq, &sqinfo)) + { + s2upper(seq); + revseq = (char *) malloc (sqinfo.len + 1); + revcomp(revseq, seq); + orfnumber = 1; + + /* Translate seq in all six frames */ + aaseq[0] = Translate(seq, stdcode1); + aaseq[1] = Translate(seq + 1, stdcode1); + aaseq[2] = Translate(seq + 2, stdcode1); + aaseq[3] = Translate(revseq, stdcode1); + aaseq[4] = Translate(revseq + 1, stdcode1); + aaseq[5] = Translate(revseq + 2, stdcode1); + + + + if (keepstops) + { /* full translation including stops */ + for (frame = 0; frame < 6; frame++) + { + fprintf(ofp, "> %s:%d", sqinfo.name, frame); + for (sptr = aaseq[frame]; *sptr; sptr++) + { + if (*sptr == '*') *sptr = stopchar; + if (! ((sptr - aaseq[frame]) % 50)) putc('\n', ofp); + putc((int) *sptr, ofp); + } + putc('\n', ofp); + } + } + else + { /* Print all decent ORF's in FASTA format */ + for (frame = 0; frame < 6; frame++) + { + /* initialize strtok on the first ORF; + termination codons are '*' symbols */ + orf = strtok(aaseq[frame], "*"); + while (orf != NULL) + { + len = strlen(orf); + if (len > minimum_len) + { + /* calculate coords */ + start = (orf - aaseq[frame]) * 3 + 1; + if (frame < 3) start += frame; /* frame corrections */ + else start -= frame-3; + + if (frame < 3) + end = start + len * 3; + else + { + start = -1 * (start - sqinfo.len - 1); + end = start - len * 3; + } + + fprintf(ofp, "> %s.%d length %d, nt %d..%d", + sqinfo.name, + orfnumber, + len, + start, + end); + + for (sptr = orf; *sptr; sptr++) + { + if (! ((sptr - orf) % 50)) + putc('\n', ofp); + putc((int) *sptr, ofp); + } + putc('\n', ofp); + + orfnumber++; + } + + /* pick off next orf */ + orf = strtok(NULL, "*"); + } + } + } + + for (frame = 0; frame < 6; frame++) + free(aaseq[frame]); + FreeSequence(seq, &sqinfo); + free(revseq); + } + + SeqfileClose(seqfp); + + /************************************************** + * Successful return to invocation environment + **************************************************/ + return 0; +} + diff --git a/forester/archive/RIO/others/hmmer/squid/types.c b/forester/archive/RIO/others/hmmer/squid/types.c new file mode 100644 index 0000000..d1e0b16 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/types.c @@ -0,0 +1,228 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING 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.1.1.1 2005/03/22 08:34:27 cmzmasek Exp $ + */ + +#include +#include +#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 +} + + + + diff --git a/forester/archive/RIO/others/hmmer/squid/weight.c b/forester/archive/RIO/others/hmmer/squid/weight.c new file mode 100644 index 0000000..d33902b --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/weight.c @@ -0,0 +1,748 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* weight.c + * SRE, Thu Mar 3 07:56:01 1994 + * + * Calculate weights for sequences in an alignment. + * RCS $Id: weight.c,v 1.1.1.1 2005/03/22 08:34:33 cmzmasek Exp $ + */ + +#include +#include +#include "squid.h" + +static void upweight(struct phylo_s *tree, int nseq, float *lwt, float *rwt, int node); +static void downweight(struct phylo_s *tree, int nseq, float *lwt, float *rwt, + float *fwt, int node); +static float simple_distance(char *s1, char *s2); +static int simple_diffmx(char **aseqs,int num, float ***ret_dmx); + +/* Function: GSCWeights() + * + * Purpose: Use Erik's tree-based algorithm to set weights for + * sequences in an alignment. upweight() and downweight() + * are derived from Graeme Mitchison's code. + * + * Args: aseq - array of (0..nseq-1) aligned sequences + * nseq - number of seqs in alignment + * alen - length of alignment + * wgt - allocated [0..nseq-1] array of weights to be returned + * + * Return: (void) + * wgt is filled in. + */ +void +GSCWeights(char **aseq, int nseq, int alen, float *wgt) +{ + float **dmx; /* distance (difference) matrix */ + struct phylo_s *tree; + float *lwt, *rwt; /* weight on left, right of this tree node */ + float *fwt; /* final weight assigned to this node */ + int i; + + /* Sanity check first + */ + if (nseq == 1) { wgt[0] = 1.0; return; } + + /* I use a simple fractional difference matrix derived by + * pairwise identity. Perhaps I should include a Poisson + * distance correction. + */ + MakeDiffMx(aseq, nseq, &dmx); + if (! Cluster(dmx, nseq, CLUSTER_MIN, &tree)) Die("Cluster() failed"); + + /* Allocations + */ + lwt = MallocOrDie (sizeof(float) * (2 * nseq - 1)); + rwt = MallocOrDie (sizeof(float) * (2 * nseq - 1)); + fwt = MallocOrDie (sizeof(float) * (2 * nseq - 1)); + + /* lwt and rwt are the total branch weight to the left and + * right of a node or sequence. They are 0..2N-2. 0..N-1 are + * the sequences; these have weight 0. N..2N-2 are the actual + * tree nodes. + */ + for (i = 0; i < nseq; i++) + lwt[i] = rwt[i] = 0.0; + /* recursively calculate rwt, lwt, starting + at node nseq (the root) */ + upweight(tree, nseq, lwt, rwt, nseq); + + /* recursively distribute weight across the + tree */ + fwt[nseq] = nseq; + downweight(tree, nseq, lwt, rwt, fwt, nseq); + /* collect the weights */ + for (i = 0; i < nseq; i++) + wgt[i] = fwt[i]; + + FMX2Free(dmx); + FreePhylo(tree, nseq); + free(lwt); free(rwt); free(fwt); +} + +static void +upweight(struct phylo_s *tree, int nseq, float *lwt, float *rwt, int node) +{ + int ld,rd; + + ld = tree[node-nseq].left; + if (ld >= nseq) upweight(tree, nseq, lwt, rwt, ld); + rd = tree[node-nseq].right; + if (rd >= nseq) upweight(tree, nseq, lwt, rwt, rd); + lwt[node] = lwt[ld] + rwt[ld] + tree[node-nseq].lblen; + rwt[node] = lwt[rd] + rwt[rd] + tree[node-nseq].rblen; +} + + +static void +downweight(struct phylo_s *tree, int nseq, float *lwt, float *rwt, float *fwt, int node) +{ + int ld,rd; + float lnum, rnum; + + ld = tree[node-nseq].left; + rd = tree[node-nseq].right; + if (lwt[node] + rwt[node] > 0.0) + { + fwt[ld] = fwt[node] * (lwt[node] / (lwt[node] + rwt[node])); + fwt[rd] = fwt[node] * (rwt[node] / (lwt[node] + rwt[node])); + } + else + { + lnum = (ld >= nseq) ? tree[ld-nseq].incnum : 1.0; + rnum = (rd >= nseq) ? tree[rd-nseq].incnum : 1.0; + fwt[ld] = fwt[node] * lnum / (lnum + rnum); + fwt[rd] = fwt[node] * rnum / (lnum + rnum); + } + + if (ld >= nseq) downweight(tree, nseq, lwt, rwt, fwt, ld); + if (rd >= nseq) downweight(tree, nseq, lwt, rwt, fwt, rd); +} + + + + +/* Function: VoronoiWeights() + * + * Purpose: Calculate weights using the scheme of Sibbald & + * Argos (JMB 216:813-818 1990). The scheme is + * slightly modified because the original algorithm + * actually doesn't work on gapped alignments. + * The sequences are assumed to be protein. + * + * Args: aseq - array of (0..nseq-1) aligned sequences + * nseq - number of sequences + * alen - length of alignment + * wgt - allocated [0..nseq-1] array of weights to be returned + * + * Return: void + * wgt is filled in. + */ +void +VoronoiWeights(char **aseq, int nseq, int alen, float *wgt) +{ + float **dmx; /* distance (difference) matrix */ + float *halfmin; /* 1/2 minimum distance to other seqs */ + char **psym; /* symbols seen in each column */ + int *nsym; /* # syms seen in each column */ + int symseen[27]; /* flags for observed syms */ + char *randseq; /* randomly generated sequence */ + int acol; /* pos in aligned columns */ + int idx; /* index in sequences */ + int symidx; /* 0..25 index for symbol */ + int i; /* generic counter */ + float min; /* minimum distance */ + float dist; /* distance between random and real */ + float challenge, champion; /* for resolving ties */ + int itscale; /* how many iterations per seq */ + int iteration; + int best; /* index of nearest real sequence */ + + /* Sanity check first + */ + if (nseq == 1) { wgt[0] = 1.0; return; } + + itscale = 50; + + /* Precalculate 1/2 minimum distance to other + * sequences for each sequence + */ + if (! simple_diffmx(aseq, nseq, &dmx)) + Die("simple_diffmx() failed"); + halfmin = MallocOrDie (sizeof(float) * nseq); + for (idx = 0; idx < nseq; idx++) + { + for (min = 1.0, i = 0; i < nseq; i++) + { + if (i == idx) continue; + if (dmx[idx][i] < min) min = dmx[idx][i]; + } + halfmin[idx] = min / 2.0; + } + Free2DArray((void **) dmx, nseq); + + /* Set up the random sequence generating model. + */ + psym = MallocOrDie (alen * sizeof(char *)); + nsym = MallocOrDie (alen * sizeof(int)); + for (acol = 0; acol < alen; acol++) + psym[acol] = MallocOrDie (27 * sizeof(char)); + +/* #ifdef ORIGINAL_SIBBALD_ALGORITHM_IS_BROKEN */ + for (acol = 0; acol < alen; acol++) + { + memset(symseen, 0, sizeof(int) * 27); + for (idx = 0; idx < nseq; idx++) + if (! isgap(aseq[idx][acol])) + { + if (isupper((int) aseq[idx][acol])) + symidx = aseq[idx][acol] - 'A'; + else + symidx = aseq[idx][acol] - 'a'; + if (symidx >= 0 && symidx < 26) + symseen[symidx] = 1; + } + else + symseen[26] = 1; /* a gap */ + + for (nsym[acol] = 0, i = 0; i < 26; i++) + if (symseen[i]) + { + psym[acol][nsym[acol]] = 'A'+i; + nsym[acol]++; + } + if (symseen[26]) { psym[acol][nsym[acol]] = ' '; nsym[acol]++; } + } +/* #endif ORIGINAL_SIBBALD_ALGORITHM_IS_BROKEN */ + + /* Note: the original Sibbald&Argos algorithm calls for + * bounding the sampled space using a template-like random + * sequence generator. However, this leads to one minor + * and one major problem. The minor problem is that + * exceptional amino acids in a column can have a + * significant effect by altering the amount of sampled + * sequence space; the larger the data set, the worse + * this problem becomes. The major problem is that + * there is no reasonable way to deal with gaps. + * Gapped sequences simply inhabit a different dimensionality + * and it's pretty painful to imagine calculating Voronoi + * volumes when the N in your N-space is varying. + * Note that all the examples shown by Sibbald and Argos + * are *ungapped* examples. + * + * The best way I've found to circumvent this problem is + * just not to bound the sampled space; count gaps as + * symbols and generate completely random sequences. + */ +#ifdef ALL_SEQUENCE_SPACE + for (acol = 0; acol < alen; acol++) + { + strcpy(psym[acol], "ACDEFGHIKLMNPQRSTVWY "); + nsym[acol] = 21; + } +#endif + + /* Sibbald and Argos algorithm: + * 1) assign all seqs weight 0. + * 2) generate a "random" sequence + * 3) calculate distance to every other sequence + * (if we get a distance < 1/2 minimum distance + * to other real seqs, we can stop) + * 4) if unique closest sequence, increment its weight 1. + * if multiple closest seq, choose one randomly + * 5) repeat 2-4 for lots of iterations + * 6) normalize all weights to sum to nseq. + */ + randseq = MallocOrDie ((alen+1) * sizeof(char)); + + best = 42.; /* solely to silence GCC uninit warnings. */ + FSet(wgt, nseq, 0.0); + for (iteration = 0; iteration < itscale * nseq; iteration++) + { + for (acol = 0; acol < alen; acol++) + randseq[acol] = (nsym[acol] == 0) ? ' ' : psym[acol][CHOOSE(nsym[acol])]; + randseq[acol] = '\0'; + + champion = sre_random(); + for (min = 1.0, idx = 0; idx < nseq; idx++) + { + dist = simple_distance(aseq[idx], randseq); + if (dist < halfmin[idx]) + { + best = idx; + break; + } + if (dist < min) + { champion = sre_random(); best = idx; min = dist; } + else if (dist == min) + { + challenge = sre_random(); + if (challenge > champion) + { champion = challenge; best = idx; min = dist; } + } + } + wgt[best] += 1.0; + } + + for (idx = 0; idx < nseq; idx++) + wgt[idx] = wgt[idx] / (float) itscale; + + free(randseq); + free(nsym); + free(halfmin); + Free2DArray((void **) psym, alen); +} + + +/* Function: simple_distance() + * + * Purpose: For two identical-length null-terminated strings, return + * the fractional difference between them. (0..1) + * (Gaps don't count toward anything.) + */ +static float +simple_distance(char *s1, char *s2) +{ + int diff = 0; + int valid = 0; + + for (; *s1 != '\0'; s1++, s2++) + { + if (isgap(*s1) || isgap(*s2)) continue; + if (*s1 != *s2) diff++; + valid++; + } + return (valid > 0 ? ((float) diff / (float) valid) : 0.0); +} + +/* Function: simple_diffmx() + * + * Purpose: Given a set of flushed, aligned sequences, construct + * an NxN fractional difference matrix using the + * simple_distance rule. + * + * Args: aseqs - flushed, aligned sequences + * num - number of aseqs + * ret_dmx - RETURN: difference matrix (caller must free) + * + * Return: 1 on success, 0 on failure. + */ +static int +simple_diffmx(char **aseqs, + int num, + float ***ret_dmx) +{ + float **dmx; /* RETURN: distance matrix */ + int i,j; /* counters over sequences */ + + /* Allocate + */ + if ((dmx = (float **) malloc (sizeof(float *) * num)) == NULL) + Die("malloc failed"); + for (i = 0; i < num; i++) + if ((dmx[i] = (float *) malloc (sizeof(float) * num)) == NULL) + Die("malloc failed"); + + /* Calculate distances, symmetric matrix + */ + for (i = 0; i < num; i++) + for (j = i; j < num; j++) + dmx[i][j] = dmx[j][i] = simple_distance(aseqs[i], aseqs[j]); + + /* Return + */ + *ret_dmx = dmx; + return 1; +} + + + +/* Function: BlosumWeights() + * Date: SRE, Fri Jul 16 17:33:59 1999 (St. Louis) + * + * Purpose: Assign weights to a set of aligned sequences + * using the BLOSUM rule: + * - do single linkage clustering at some pairwise identity + * - in each cluster, give each sequence 1/clustsize + * total weight. + * + * The clusters have no pairwise link >= maxid. + * + * O(N) in memory. Probably ~O(NlogN) in time; O(N^2) + * in worst case, which is no links between sequences + * (e.g., values of maxid near 1.0). + * + * Args: aseqs - alignment + * nseq - number of seqs in alignment + * alen - # of columns in alignment + * maxid - fractional identity (e.g. 0.62 for BLOSUM62) + * wgt - [0..nseq-1] array of weights to be returned + */ +void +BlosumWeights(char **aseqs, int nseq, int alen, float maxid, float *wgt) +{ + int *c, nc; + int *nmem; /* number of seqs in each cluster */ + int i; /* loop counter */ + + SingleLinkCluster(aseqs, nseq, alen, maxid, &c, &nc); + + FSet(wgt, nseq, 1.0); + nmem = MallocOrDie(sizeof(int) * nc); + + for (i = 0; i < nc; i++) nmem[i] = 0; + for (i = 0; i < nseq; i++) nmem[c[i]]++; + for (i = 0; i < nseq; i++) wgt[i] = 1. / (float) nmem[c[i]]; + + free(nmem); + free(c); + return; +} + + +/* Function: PositionBasedWeights() + * Date: SRE, Fri Jul 16 17:47:22 1999 [St. Louis] + * + * Purpose: Implementation of Henikoff and Henikoff position-based + * weights (JMB 243:574-578, 1994) [Henikoff94b]. + * + * A significant advantage of this approach that Steve and Jorja + * don't point out is that it is O(N) in memory, unlike + * many other approaches like GSC weights or Voronoi. + * + * A potential disadvantage that they don't point out + * is that in the theoretical limit of infinite sequences + * in the alignment, weights go flat: eventually every + * column has at least one representative of each of 20 aa (or 4 nt) + * in it. + * + * They also don't give a rule for how to handle gaps. + * The rule used here seems the obvious and sensible one + * (ignore them). This means that longer sequences + * initially get more weight; hence a "double + * normalization" in which the weights are first divided + * by sequence length (to compensate for that effect), + * then normalized to sum to nseq. + * + * Limitations: + * Implemented in a way that's alphabet-independent: + * it uses the 26 upper case letters as "residues". + * Any alphabetic character in aseq is interpreted as + * a unique "residue" (case insensitively; lower case + * mapped to upper case). All other characters are + * interpreted as gaps. + * + * This way, we don't have to pass around any alphabet + * type info (DNA vs. RNA vs. protein) and don't have + * to deal with remapping IUPAC degenerate codes + * probabilistically. However, on the down side, + * a sequence with a lot of degenerate IUPAC characters + * will get an artifactually high PB weight. + * + * Args: aseq - sequence alignment to weight + * nseq - number of sequences in alignment + * alen - length of alignment + * wgt - RETURN: weights filled in (pre-allocated 0..nseq-1) + * + * Returns: (void) + * wgt is allocated (0..nseq-1) by caller, and filled in here. + */ +void +PositionBasedWeights(char **aseq, int nseq, int alen, float *wgt) +{ + int rescount[26]; /* count of A-Z residues in a column */ + int nres; /* number of different residues in col */ + int idx, pos; /* indices into aseq */ + int x; + float norm; + + FSet(wgt, nseq, 0.0); + for (pos = 0; pos < alen; pos++) + { + for (x = 0; x < 26; x++) rescount[x] = 0; + for (idx = 0; idx < nseq; idx++) + if (isalpha(aseq[idx][pos])) + rescount[toupper(aseq[idx][pos]) - 'A'] ++; + + nres = 0; + for (x = 0; x < 26; x++) + if (rescount[x] > 0) nres++; + + for (idx = 0; idx < nseq; idx++) + if (isalpha(aseq[idx][pos])) + wgt[idx] += 1. / (float) (nres * rescount[toupper(aseq[idx][pos]) - 'A']); + } + + for (idx = 0; idx < nseq; idx++) + wgt[idx] /= (float) DealignedLength(aseq[idx]); + norm = (float) nseq / FSum(wgt, nseq); + FScale(wgt, nseq, norm); + return; +} + + + + +/* Function: FilterAlignment() + * Date: SRE, Wed Jun 30 09:19:30 1999 [St. Louis] + * + * Purpose: Constructs a new alignment by removing near-identical + * sequences from a given alignment (where identity is + * calculated *based on the alignment*). + * Does not affect the given alignment. + * Keeps earlier sequence, discards later one. + * + * Usually called as an ad hoc sequence "weighting" mechanism. + * + * Limitations: + * Unparsed Stockholm markup is not propagated into the + * new alignment. + * + * Args: msa -- original alignment + * cutoff -- fraction identity cutoff. 0.8 removes sequences > 80% id. + * ret_new -- RETURN: new MSA, usually w/ fewer sequences + * + * Return: (void) + * ret_new must be free'd by caller: MSAFree(). + */ +void +FilterAlignment(MSA *msa, float cutoff, MSA **ret_new) +{ + int nnew; /* number of seqs in new alignment */ + int *list; + int *useme; + float ident; + int i,j; + int remove; + + /* find which seqs to keep (list) */ + /* diff matrix; allow ragged ends */ + list = MallocOrDie (sizeof(int) * msa->nseq); + useme = MallocOrDie (sizeof(int) * msa->nseq); + for (i = 0; i < msa->nseq; i++) useme[i] = FALSE; + + nnew = 0; + for (i = 0; i < msa->nseq; i++) + { + remove = FALSE; + for (j = 0; j < nnew; j++) + { + ident = PairwiseIdentity(msa->aseq[i], msa->aseq[list[j]]); + if (ident > cutoff) + { + remove = TRUE; + printf("removing %12s -- fractional identity %.2f to %s\n", + msa->sqname[i], ident, + msa->sqname[list[j]]); + break; + } + } + if (remove == FALSE) { + list[nnew++] = i; + useme[i] = TRUE; + } + } + + MSASmallerAlignment(msa, useme, ret_new); + free(list); + free(useme); + return; +} + + +/* Function: SampleAlignment() + * Date: SRE, Wed Jun 30 10:13:56 1999 [St. Louis] + * + * Purpose: Constructs a new, smaller alignment by sampling a given + * number of sequences at random. Does not change the + * alignment nor the order of the sequences. + * + * If you ask for a sample that is larger than nseqs, + * it silently returns the original alignment. + * + * Not really a weighting method, but this is as good + * a place as any to keep it, since it's similar in + * construction to FilterAlignment(). + * + * Args: msa -- original alignment + * sample -- number of sequences in new alignment (0 < sample <= nseq) + * ret_new -- RETURN: new MSA + * + * Return: (void) + * ret_new must be free'd by caller: MSAFree(). + */ +void +SampleAlignment(MSA *msa, int sample, MSA **ret_new) +{ + int *list; /* array for random selection w/o replace */ + int *useme; /* array of flags 0..nseq-1: TRUE to use */ + int i, idx; + int len; + + /* Allocations + */ + list = (int *) MallocOrDie (sizeof(int) * msa->nseq); + useme = (int *) MallocOrDie (sizeof(int) * msa->nseq); + for (i = 0; i < msa->nseq; i++) + { + list[i] = i; + useme[i] = FALSE; + } + + /* Sanity check. + */ + if (sample >= msa->nseq) sample = msa->nseq; + + /* random selection w/o replacement */ + for (len = msa->nseq, i = 0; i < sample; i++) + { + idx = CHOOSE(len); + printf("chose %d: %s\n", list[idx], msa->sqname[list[idx]]); + useme[list[idx]] = TRUE; + list[idx] = list[--len]; + } + + MSASmallerAlignment(msa, useme, ret_new); + free(list); + free(useme); + return; +} + + +/* Function: SingleLinkCluster() + * Date: SRE, Fri Jul 16 15:02:57 1999 [St. Louis] + * + * Purpose: Perform simple single link clustering of seqs in a + * sequence alignment. A pairwise identity threshold + * defines whether two sequences are linked or not. + * + * Important: runs in O(N) memory, unlike standard + * graph decomposition algorithms that use O(N^2) + * adjacency matrices or adjacency lists. Requires + * O(N^2) time in worst case (which is when you have + * no links at all), O(NlogN) in "average" + * case, and O(N) in best case (when there is just + * one cluster in a completely connected graph. + * + * (Developed because hmmbuild could no longer deal + * with GP120, a 16,013 sequence alignment.) + * + * Limitations: + * CASE-SENSITIVE. Assumes aseq have been put into + * either all lower or all upper case; or at least, + * within a column, there's no mixed case. + * + * Algorithm: + * I don't know if this algorithm is published. I + * haven't seen it in graph theory books, but that might + * be because it's so obvious that nobody's bothered. + * + * In brief, we're going to do a breadth-first search + * of the graph, and we're going to calculate links + * on the fly rather than precalculating them into + * some sort of standard adjacency structure. + * + * While working, we keep two stacks of maximum length N: + * a : list of vertices that are still unconnected. + * b : list of vertices that we've connected to + * in our current breadth level, but we haven't + * yet tested for other connections to a. + * The current length (number of elements in) a and b are + * kept in na, nb. + * + * We store our results in an array of length N: + * c : assigns each vertex to a component. for example + * c[4] = 1 means that vertex 4 is in component 1. + * nc is the number of components. Components + * are numbered from 0 to nc-1. We return c and nc + * to our caller. + * + * The algorithm is: + * + * Initialisation: + * a <-- all the vertices + * na <-- N + * b <-- empty set + * nb <-- 0 + * nc <-- 0 + * + * Then: + * while (a is not empty) + * pop a vertex off a, push onto b + * while (b is not empty) + * pop vertex v off b + * assign c[v] = nc + * for each vertex w in a: + * compare v,w. If w is linked to v, remove w + * from a, push onto b. + * nc++ + * q.e.d. :) + * + * Args: aseq - aligned sequences + * nseq - number of sequences in aseq + * alen - alignment length + * maxid - fractional identity threshold 0..1. if id >= maxid, seqs linked + * ret_c - RETURN: 0..nseq-1 assignments of seqs to components (clusters) + * ret_nc - RETURN: number of components + * + * Returns: void. + * ret_c is allocated here. Caller free's with free(*ret_c) + */ +void +SingleLinkCluster(char **aseq, int nseq, int alen, float maxid, + int **ret_c, int *ret_nc) +{ + int *a, na; /* stack of available vertices */ + int *b, nb; /* stack of working vertices */ + int *c; /* array of results */ + int nc; /* total number of components */ + int v,w; /* index of a working vertices */ + int i; /* loop counter */ + + /* allocations and initializations + */ + a = MallocOrDie (sizeof(int) * nseq); + b = MallocOrDie (sizeof(int) * nseq); + c = MallocOrDie (sizeof(int) * nseq); + for (i = 0; i < nseq; i++) a[i] = i; + na = nseq; + nb = 0; + nc = 0; + + /* Main algorithm + */ + while (na > 0) + { + v = a[na-1]; na--; /* pop a vertex off a, */ + b[nb] = v; nb++; /* and push onto b */ + while (nb > 0) + { + v = b[nb-1]; nb--; /* pop vertex off b */ + c[v] = nc; /* assign it to component nc */ + for (i = na-1; i >= 0; i--)/* backwards, becase of deletion/swapping we do*/ + if (simple_distance(aseq[v], aseq[a[i]]) < 1. - maxid) /* linked? */ + { + w = a[i]; a[i] = a[na-1]; na--; /* delete w from a (note swap) */ + b[nb] = w; nb++; /* push w onto b */ + } + } + nc++; + } + + /* Cleanup and return + */ + free(a); + free(b); + *ret_c = c; + *ret_nc = nc; + return; +} diff --git a/forester/archive/RIO/others/hmmer/squid/weight_main.c b/forester/archive/RIO/others/hmmer/squid/weight_main.c new file mode 100644 index 0000000..6bc3d65 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/squid/weight_main.c @@ -0,0 +1,187 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* weight_main.c + * SRE, Thu Mar 3 13:43:39 1994 + * + * Calculate weights for a sequence alignment. + * CVS $Id: weight_main.c,v 1.1.1.1 2005/03/22 08:34:30 cmzmasek Exp $ + */ + +#include +#include +#include +#include + +#include "squid.h" +#include "msa.h" + +static char banner[] = "weight - calculate sequence weights for an alignment"; + +static char usage[] = "\ +Usage: weight [-options] \n\ + Available options:\n\ + -b : use BLOSUM weighting scheme at fractional identity\n\ + -f : filter out seqs w/ fractional ident > [0-1]\n\ + -h : help; print version and usage info\n\ + -o : save weight-annotated alignment in \n\ + -p : use position based weight scheme (Henikoff & Henikoff)\n\ + -s : sample sequences at random into a new alignment\n\ + -v : use Voronoi weight scheme (Sibbald & Argos) \n\ +"; + +static char experts[] = "\ + Expert options:\n\ + --informat : specify alignment file format \n\ + allowed formats: SELEX, MSF, Clustal, a2m, PHYLIP\n\ + --quiet : suppress verbose banner\n\ +"; + +static struct opt_s OPTIONS[] = { + { "-b", TRUE, sqdARG_FLOAT }, + { "-f", TRUE, sqdARG_FLOAT }, + { "-h", TRUE, sqdARG_NONE }, + { "-o", TRUE, sqdARG_STRING }, + { "-p", TRUE, sqdARG_NONE }, + { "-s", TRUE, sqdARG_INT }, + { "-v", TRUE, sqdARG_NONE }, + { "--informat", FALSE, sqdARG_STRING }, + { "--quiet", FALSE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *seqfile; /* file containing aligned seqs */ + MSAFILE *afp; /* pointer to open alignment file */ + MSA *msa; /* multiple sequence alignment */ + int fmt; /* expected format of alignment file */ + int idx; + char *outfile; /* output file for weighted alignment */ + FILE *ofp; /* open outfile */ + + int do_voronoi; /* use Sibbald/Argos Voronoi scheme */ + int do_blosum; /* use BLOSUM weighting scheme */ + int do_pbased; /* use position-based weights */ + int do_filter; /* use filtering scheme */ + float idlevel; /* identity level to filter at, [0-1] */ + int samplesize; /* if >0, don't weight, random sample */ + int be_quiet; /* TRUE to suppress banner */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse command line + ***********************************************/ + + fmt = MSAFILE_UNKNOWN; /* autodetect file format by default */ + outfile = NULL; + do_blosum = FALSE; + do_voronoi = FALSE; + do_pbased = FALSE; + do_filter = FALSE; + samplesize = 0; + be_quiet = FALSE; + idlevel = 0.; /* just to suppress gcc uninit warnings */ + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-b") == 0) + { do_blosum = TRUE; idlevel = atof(optarg); } + else if (strcmp(optname, "-f") == 0) + { do_filter = TRUE; idlevel = atof(optarg); } + else if (strcmp(optname, "-o") == 0) outfile = optarg; + else if (strcmp(optname, "-p") == 0) do_pbased = TRUE; + else if (strcmp(optname, "-s") == 0) samplesize = atoi(optarg); + else if (strcmp(optname, "-v") == 0) do_voronoi = TRUE; + else if (strcmp(optname, "--quiet") == 0) be_quiet = TRUE; + else if (strcmp(optname, "--informat") == 0) { + fmt = String2SeqfileFormat(optarg); + if (fmt == MSAFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + if (! IsAlignmentFormat(fmt)) + Die("%s is an unaligned format, can't read as an alignment", optarg); + } + else if (strcmp(optname, "-h") == 0) + { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + + if (argc -optind != 1) + Die("Wrong number of arguments specified on command line\n%s\n", usage); + seqfile = argv[optind]; + + if (outfile == NULL) + ofp = stdout; + else if ((ofp = fopen(outfile, "w")) == NULL) + Die("Failed to open alignment output file %s", outfile); + + if (do_voronoi + do_pbased + do_blosum + do_filter + samplesize > 1) + Die("Choose only one weighting scheme, please.\n%s\n", usage); + + if (do_voronoi || samplesize > 0) + sre_srandom(time(0)); + + if (! be_quiet) + Banner(stdout, banner); + + /*********************************************** + * Open the input alignment file and start... + * be prepared to deal with multiple entries in Stockholm files + ***********************************************/ + + if ((afp = MSAFileOpen(seqfile, fmt, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", seqfile); + + while ((msa = MSAFileRead(afp)) != NULL) + { + for (idx = 0; idx < msa->nseq; idx++) + s2upper(msa->aseq[idx]); + + if (do_filter || samplesize > 0) + { + MSA *new; + + if (do_filter) + FilterAlignment(msa, idlevel, &new); + else if (samplesize > 0) + SampleAlignment(msa, samplesize, &new); + + if (new != NULL) { + WriteStockholm(ofp, new); + MSAFree(msa); + MSAFree(new); + } + } + else + { + if (do_voronoi) VoronoiWeights(msa->aseq, msa->nseq, msa->alen, msa->wgt); + else if (do_blosum) BlosumWeights(msa->aseq, msa->nseq, msa->alen, idlevel, msa->wgt); + else if (do_pbased) PositionBasedWeights(msa->aseq, msa->nseq, msa->alen, msa->wgt); + else GSCWeights (msa->aseq, msa->nseq, msa->alen, msa->wgt); + + msa->flags |= MSA_SET_WGT; + WriteStockholm(ofp, msa); + MSAFree(msa); + } + } + MSAFileClose(afp); + fclose(ofp); + return EXIT_SUCCESS; +} + diff --git a/forester/archive/RIO/others/hmmer/src/Makefile.in b/forester/archive/RIO/others/hmmer/src/Makefile.in new file mode 100644 index 0000000..8113e57 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/Makefile.in @@ -0,0 +1,128 @@ +############################################################ +# Makefile for HMMER src directory +# CVS $Id: Makefile.in,v 1.1.1.1 2005/03/22 08:34:05 cmzmasek Exp $ +########### +# HMMER - Biological sequence analysis with profile HMMs +# Copyright (C) 1992-1999 Washington University School of Medicine +# All Rights Reserved +# +# This source code is distributed under the terms of the +# GNU General Public License. See the files COPYING and LICENSE +# for details. +########### + +## your compiler and compiler flags +# +CC = @CC@ +CFLAGS = @CFLAGS@ + +## other defined flags. +# DEFS contains stuff that autoconf +# decides on. MDEFS contains stuff that we added to +# the configure script tests. LIBS contains system +# libraries that the configure script decides we need. +# +MDEFS = @MDEFS@ @DEFS@ +LIBS = @LIBS@ -lm + +## archiving command, and ranlib command if you need one. +# In general, you shouldn't need to change these, and they're +# only used for building the testsuite anyway... e.g. we +# make a "libhmmer.a" library for building the testsuite. +# +AR = ar rcv +RANLIB = @RANLIB@ + +# Configuration for optional pthreads multiprocessor support +# +PTHREAD_LIBS = @PTHREAD_LIBS@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + + +# Configuration for optional PVM functionality +# +PVMFLAG = @PVMFLAG@ +PVMLIBDIR = @PVMLIBDIR@ +PVMINCDIR = @PVMINCDIR@ +PVMLIBS = @PVMLIBS@ +PVMPROGS = @PVMPROGS@ + +SHELL = /bin/sh +MYLIBS = -lsquid +MYLIBDIR = -L../squid +MYINCDIR = -I../squid + +PROGS = hmmalign\ + hmmbuild\ + hmmcalibrate\ + hmmconvert\ + hmmemit\ + hmmfetch\ + hmmindex\ + hmmpfam\ + hmmsearch\ + ${PVMPROGS} + +OBJS = alphabet.o\ + core_algorithms.o\ + debug.o\ + display.o\ + emit.o\ + emulation.o\ + histogram.o\ + hmmio.o\ + mathsupport.o\ + masks.o\ + misc.o\ + modelmakers.o\ + plan7.o\ + plan9.o\ + postprob.o\ + prior.o\ + pvm.o\ + threads.o\ + tophits.o\ + trace.o + +HDRS = config.h\ + funcs.h\ + globals.h\ + postprob.h\ + structs.h + +.c.o: + $(CC) $(CFLAGS) $(MDEFS) $(PTHREAD_CFLAGS) $(PVMFLAG) $(MYINCDIR) $(PVMINCDIR) -c $< + +################################################################# +## Targets defining how to make HMMER executables. +## +all: $(PROGS) + +$(PROGS): @EXEC_DEPENDENCY@ $(OBJS) + $(CC) $(CFLAGS) $(PTHREAD_CFLAGS) $(MDEFS) $(MYLIBDIR) $(PVMLIBDIR) -o $@ $@.o $(OBJS) $(PVMLIBS) $(MYLIBS) $(PTHREAD_LIBS) $(LIBS) + + +################################################################# +## Targets used in making HMMER module for testsuite compilation. +## +module: libhmmer.a + +libhmmer.a: $(OBJS) + $(AR) libhmmer.a $(OBJS) + $(RANLIB) libhmmer.a + chmod 644 libhmmer.a + + +################################################################# +## Miscellaneous targets. +## +distclean: + make clean + -rm -f Makefile version.h + +clean: + -rm -f *.o *~ Makefile.bak core $(PROGS) TAGS gmon.out libhmmer.a + +TAGS: + etags -t *.c *.h Makefile.in + diff --git a/forester/archive/RIO/others/hmmer/src/alphabet.c b/forester/archive/RIO/others/hmmer/src/alphabet.c new file mode 100644 index 0000000..a431207 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/alphabet.c @@ -0,0 +1,426 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* alphabet.c + * Configuration of the global symbol alphabet information. + * RCS $Id: alphabet.c,v 1.1.1.1 2005/03/22 08:34:08 cmzmasek Exp $ + */ + +#include +#include +#include +#ifdef HMMER_THREADS +#include +#endif /* HMMER_THREADS */ + +#include "config.h" +#include "structs.h" +#include "funcs.h" +#include "squid.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +static void set_degenerate(char iupac, char *syms); + + +/* Function: DetermineAlphabet() + * + * Purpose: From a set of sequences (raw or aligned), make a good + * guess whether they're Nucleic, Amino, or something + * else, and set alphabet accordingly. + * + * If Alphabet_type is already set, that means our + * autodetection was overridden from the command line, + * and we just set the other globals accordingly. + */ +void +DetermineAlphabet(char **rseqs, int nseq) +{ + int idx; + int other, nucleic, amino; + int type; + + /* Autodetection of alphabet type. + */ + type = hmmNOTSETYET; + other = nucleic = amino = 0; + for (idx = 0; idx < nseq; idx++) { + switch (Seqtype(rseqs[idx])) { + case kRNA: nucleic++; break; + case kDNA: nucleic++; break; + case kAmino: amino++; break; + case kOtherSeq: other++; break; + default: Die("No such alphabet type"); + } + } + + if (nucleic == nseq) type = hmmNUCLEIC; + else if (amino == nseq) type = hmmAMINO; + else if (nucleic > amino && nucleic > other) { + Warn("Looks like nucleic acid sequence, hope that's right"); + type = hmmNUCLEIC; + } + else if (amino > nucleic && amino > other) { + Warn("Looks like amino acid sequence, hope that's right"); + type = hmmAMINO; + } + else Die("Sorry, I can't tell if that's protein or DNA"); + + /* Now set up the alphabet. + */ + SetAlphabet(type); +} + + +/* Function: SetAlphabet() + * + * Purpose: Set the alphabet globals, given an alphabet type + * of either hmmAMINO or hmmNUCLEIC. + */ +void +SetAlphabet(int type) +{ + int x; +#ifdef HMMER_THREADS + pthread_mutex_t alphabet_lock; /* alphabet is global; must protect to be threadsafe */ + int rtn; /* return code from pthreads */ + + if ((rtn = pthread_mutex_init(&alphabet_lock, NULL)) != 0) + Die("pthread_mutex_init FAILED; %s\n", strerror(rtn)); + if ((rtn = pthread_mutex_lock(&alphabet_lock)) != 0) + Die("pthread_mutex_lock FAILED: %s\n", strerror(rtn)); +#endif + + /* Because the alphabet information is global, we must + * be careful to make this a thread-safe function. The mutex + * (above) takes care of that. But, indeed, it's also + * just good sense (and more efficient) to simply never + * allow resetting the alphabet. If type is Alphabet_type, + * silently return; else die with an alphabet mismatch + * warning. + */ + if (Alphabet_type != hmmNOTSETYET) + { + if (type != Alphabet_type) + Die("An alphabet type conflict occurred.\nYou probably mixed a DNA seq file with a protein model, or vice versa."); + +#ifdef HMMER_THREADS + if ((rtn = pthread_mutex_unlock(&alphabet_lock)) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); +#endif + return; + } + + switch(type) { /* Alphabet is not a string - careful! */ + case hmmAMINO: + Alphabet_type = type; + strncpy(Alphabet, "ACDEFGHIKLMNPQRSTVWYBZX", 23); + Alphabet_size = 20; + Alphabet_iupac = 23; + for (x = 0; x < Alphabet_iupac; x++) { + memset(Degenerate[x], 0, Alphabet_size); + } + for (x = 0; x < Alphabet_size; x++) { + Degenerate[x][x] = 1; + DegenCount[x] = 1; + } + set_degenerate('B', "ND"); + set_degenerate('Z', "QE"); + set_degenerate('X', "ACDEFGHIKLMNPQRSTVWY"); + break; + case hmmNUCLEIC: + Alphabet_type = type; + strncpy(Alphabet, "ACGTUNRYMKSWHBVDX", 17); + Alphabet_size = 4; + Alphabet_iupac = 17; + for (x = 0; x < Alphabet_iupac; x++) { + memset(Degenerate[x], 0, Alphabet_size); + } + for (x = 0; x < Alphabet_size; x++) { + Degenerate[x][x] = 1; + DegenCount[x] = 1; + } + set_degenerate('U', "T"); + set_degenerate('N', "ACGT"); + set_degenerate('X', "ACGT"); + set_degenerate('R', "AG"); + set_degenerate('Y', "CT"); + set_degenerate('M', "AC"); + set_degenerate('K', "GT"); + set_degenerate('S', "CG"); + set_degenerate('W', "AT"); + set_degenerate('H', "ACT"); + set_degenerate('B', "CGT"); + set_degenerate('V', "ACG"); + set_degenerate('D', "AGT"); + break; + default: Die("No support for non-nucleic or protein alphabets"); + } + +#ifdef HMMER_THREADS + if ((rtn = pthread_mutex_unlock(&alphabet_lock)) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); +#endif +} + +/* Function: SymbolIndex() + * + * Purpose: Convert a symbol to its index in Alphabet[]. + * Bogus characters are converted to 'X'. + * More robust than the SYMIDX() macro but + * presumably slower. + */ +int +SymbolIndex(char sym) +{ + char *s; + return ((s = strchr(Alphabet, (char) toupper((int) sym))) == NULL) ? + Alphabet_iupac-1 : s - Alphabet; +} + + +/* Function: DigitizeSequence() + * + * Purpose: Internal representation of a sequence in HMMER is + * as a char array. 1..L are the indices + * of seq symbols in Alphabet[]. 0,L+1 are sentinel + * bytes, set to be Alphabet_iupac -- i.e. one more + * than the maximum allowed index. + * + * Assumes that 'X', the fully degenerate character, + * is the last character in the allowed alphabet. + * + * Args: seq - sequence to be digitized (0..L-1) + * L - length of sequence + * + * Return: digitized sequence, dsq. + * dsq is allocated here and must be free'd by caller. + */ +char * +DigitizeSequence(char *seq, int L) +{ + char *dsq; + int i; + + dsq = MallocOrDie (sizeof(char) * (L+2)); + dsq[0] = dsq[L+1] = (char) Alphabet_iupac; + for (i = 1; i <= L; i++) + dsq[i] = SymbolIndex(seq[i-1]); + return dsq; +} + + +/* Function: DedigitizeSequence() + * Date: SRE, Tue Dec 16 10:39:19 1997 [StL] + * + * Purpose: Returns a 0..L-1 character string, converting the + * dsq back to the real alphabet. + */ +char * +DedigitizeSequence(char *dsq, int L) +{ + char *seq; + int i; + + seq = MallocOrDie(sizeof(char) * (L+1)); + for (i = 0; i < L; i++) + seq[i] = Alphabet[(int) dsq[i+1]]; + seq[L] = '\0'; + return seq; +} + + +/* Function: DigitizeAlignment() + * + * Purpose: Given an alignment, return digitized unaligned + * sequence array. (Tracebacks are always relative + * to digitized unaligned seqs, even if they are + * faked from an existing alignment in modelmakers.c.) + * + * Args: msa - alignment to digitize + * ret_dsqs - RETURN: array of digitized unaligned sequences + * + * Return: (void) + * dsqs is alloced here. Free2DArray(dseqs, nseq). + */ +void +DigitizeAlignment(MSA *msa, char ***ret_dsqs) +{ + char **dsq; + int idx; /* counter for sequences */ + int dpos; /* position in digitized seq */ + int apos; /* position in aligned seq */ + + dsq = (char **) MallocOrDie (sizeof(char *) * msa->nseq); + for (idx = 0; idx < msa->nseq; idx++) { + dsq[idx] = (char *) MallocOrDie (sizeof(char) * (msa->alen+2)); + + dsq[idx][0] = (char) Alphabet_iupac; /* sentinel byte at start */ + + for (apos = 0, dpos = 1; apos < msa->alen; apos++) { + if (! isgap(msa->aseq[idx][apos])) /* skip gaps */ + dsq[idx][dpos++] = SymbolIndex(msa->aseq[idx][apos]); + } + dsq[idx][dpos] = (char) Alphabet_iupac; /* sentinel byte at end */ + } + *ret_dsqs = dsq; +} + + +/* Function: P7CountSymbol() + * + * Purpose: Given a possibly degenerate symbol code, increment + * a symbol counter array (generally an emission + * probability vector in counts form) appropriately. + * + * Args: counters: vector to count into. [0..Alphabet_size-1] + * symidx: symbol index to count: [0..Alphabet_iupac-1] + * wt: weight to use for the count; often 1.0 + * + * Return: (void) + */ +void +P7CountSymbol(float *counters, char symidx, float wt) +{ + int x; + + if (symidx < Alphabet_size) + counters[(int) symidx] += wt; + else + for (x = 0; x < Alphabet_size; x++) { + if (Degenerate[(int) symidx][x]) + counters[x] += wt / (float) DegenCount[(int) symidx]; + } +} + + +/* Function: DefaultGeneticCode() + * + * Purpose: Configure aacode, mapping triplets to amino acids. + * Triplet index: AAA = 0, AAC = 1, ... UUU = 63. + * AA index: alphabetical: A=0,C=1... Y=19 + * Stop codon: -1. + * Uses the stdcode1[] global translation table from SQUID. + * + * Args: aacode - preallocated 0.63 array for genetic code + * + * Return: (void) + */ +void +DefaultGeneticCode(int *aacode) +{ + int x; + + for (x = 0; x < 64; x++) { + if (*(stdcode1[x]) == '*') aacode[x] = -1; + else aacode[x] = SYMIDX(*(stdcode1[x])); + } +} + + +/* Function: DefaultCodonBias() + * + * Purpose: Configure a codonbias table, mapping triplets to + * probability of using the triplet for the amino acid + * it represents: P(triplet | aa). + * The default is to assume codons are used equiprobably. + * + * Args: codebias: 0..63 array of P(triplet|aa), preallocated. + * + * Return: (void) + */ +void +DefaultCodonBias(float *codebias) +{ + codebias[0] = 1./2.; /* AAA Lys 2 */ + codebias[1] = 1./2.; /* AAC Asn 2 */ + codebias[2] = 1./2.; /* AAG Lys 2 */ + codebias[3] = 1./2.; /* AAU Asn 2 */ + codebias[4] = 1./4.; /* ACA Thr 4 */ + codebias[5] = 1./4.; /* ACC Thr 4 */ + codebias[6] = 1./4.; /* ACG Thr 4 */ + codebias[7] = 1./4.; /* ACU Thr 4 */ + codebias[8] = 1./6.; /* AGA Ser 6 */ + codebias[9] = 1./6.; /* AGC Arg 6 */ + codebias[10] = 1./6.; /* AGG Ser 6 */ + codebias[11] = 1./6.; /* AGU Arg 6 */ + codebias[12] = 1./3.; /* AUA Ile 3 */ + codebias[13] = 1./3.; /* AUC Ile 3 */ + codebias[14] = 1.; /* AUG Met 1 */ + codebias[15] = 1./3.; /* AUU Ile 3 */ + codebias[16] = 1./2.; /* CAA Gln 2 */ + codebias[17] = 1./2.; /* CAC His 2 */ + codebias[18] = 1./2.; /* CAG Gln 2 */ + codebias[19] = 1./2.; /* CAU His 2 */ + codebias[20] = 1./4.; /* CCA Pro 4 */ + codebias[21] = 1./4.; /* CCC Pro 4 */ + codebias[22] = 1./4.; /* CCG Pro 4 */ + codebias[23] = 1./4.; /* CCU Pro 4 */ + codebias[24] = 1./6.; /* CGA Arg 6 */ + codebias[25] = 1./6.; /* CGC Arg 6 */ + codebias[26] = 1./6.; /* CGG Arg 6 */ + codebias[27] = 1./6.; /* CGU Arg 6 */ + codebias[28] = 1./6.; /* CUA Leu 6 */ + codebias[29] = 1./6.; /* CUC Leu 6 */ + codebias[30] = 1./6.; /* CUG Leu 6 */ + codebias[31] = 1./6.; /* CUU Leu 6 */ + codebias[32] = 1./2.; /* GAA Glu 2 */ + codebias[33] = 1./2.; /* GAC Asp 2 */ + codebias[34] = 1./2.; /* GAG Glu 2 */ + codebias[35] = 1./2.; /* GAU Asp 2 */ + codebias[36] = 1./4.; /* GCA Ala 4 */ + codebias[37] = 1./4.; /* GCC Ala 4 */ + codebias[38] = 1./4.; /* GCG Ala 4 */ + codebias[39] = 1./4.; /* GCU Ala 4 */ + codebias[40] = 1./4.; /* GGA Gly 4 */ + codebias[41] = 1./4.; /* GGC Gly 4 */ + codebias[42] = 1./4.; /* GGG Gly 4 */ + codebias[43] = 1./4.; /* GGU Gly 4 */ + codebias[44] = 1./4.; /* GUA Val 4 */ + codebias[45] = 1./4.; /* GUC Val 4 */ + codebias[46] = 1./4.; /* GUG Val 4 */ + codebias[47] = 1./4.; /* GUU Val 4 */ + codebias[48] = 0.; /* UAA och - */ + codebias[49] = 1./2.; /* UAC Tyr 2 */ + codebias[50] = 0.; /* UAG amb - */ + codebias[51] = 1./2.; /* UAU Tyr 2 */ + codebias[52] = 1./6.; /* UCA Ser 6 */ + codebias[53] = 1./6.; /* UCC Ser 6 */ + codebias[54] = 1./6.; /* UCG Ser 6 */ + codebias[55] = 1./6.; /* UCU Ser 6 */ + codebias[56] = 0.; /* UGA opa - */ + codebias[57] = 1./2.; /* UGC Cys 2 */ + codebias[58] = 1.; /* UGG Trp 1 */ + codebias[59] = 1./2.; /* UGU Cys 2 */ + codebias[60] = 1./6.; /* UUA Leu 6 */ + codebias[61] = 1./2.; /* UUC Phe 2 */ + codebias[62] = 1./6.; /* UUG Leu 6 */ + codebias[63] = 1./2.; /* UUU Phe 2 */ +} + + + +/* Function: set_degenerate() + * + * Purpose: convenience function for setting up + * Degenerate[][] global for the alphabet. + */ +static void +set_degenerate(char iupac, char *syms) +{ + DegenCount[strchr(Alphabet,iupac)-Alphabet] = strlen(syms); + while (*syms) { + Degenerate[strchr(Alphabet,iupac)-Alphabet] + [strchr(Alphabet,*syms)-Alphabet] = 1; + syms++; + } +} diff --git a/forester/archive/RIO/others/hmmer/src/camJul97.c b/forester/archive/RIO/others/hmmer/src/camJul97.c new file mode 100644 index 0000000..e9b364f --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/camJul97.c @@ -0,0 +1,747 @@ +/* Source code from Cambridge visit July 1997 + * + * Position-specific matrices. + */ + +#include +#include +#include +#include +#include +#include + +#include "funcs.h" +#include "config.h" +#include "structs.h" +#include "squid.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +/* Function: MakeStarHMM() + * + * Purpose: Given an HMM with counts, create an HMM according + * to the star rule. In star models we typically expect + * that the counts have been collected using BLOSUM style + * weights. + * + * Args: hmm - HMM structure containing counts data + * mx - Star vectors, mx[q][x] + * pq - vector prior P(q) + * nq - number of vectors + * pri - Dirichlet priors for other parameters + * + * Return: (void) + * hmm is converted to probabilities. + */ +void +MakeStarHMM(struct plan7_s *hmm, float **mx, float *pq, int nq, struct p7prior_s *pri) +{ + int k; /* counter over model position */ + int x; /* counter over symbol/transition */ + float *pxa; /* P(x | a) : our parameter estimate */ + float *pqa; /* P(q | a) for all q */ + int q; /* counters over vectors q */ + int ai; /* counter over symbols */ + + /* Match emissions: Star rule implementation. + */ + pxa = (float *) MallocOrDie(sizeof(float) * Alphabet_size); + pqa = (float *) MallocOrDie(sizeof(float) * nq); + for (k = 1; k <= hmm->M; k++) + { + /* calculate log P(q | a) unnormalized (i.e. + log P(a))*/ + for (q = 0; q < nq; q++) + { + pqa[q] = log(pq[q]); + for (ai = 0; ai < Alphabet_size; ai++) + pqa[q] += hmm->mat[k][ai] * log(mx[q][ai]); + } + /* calculate log P(x | a) unnormalized (i.e + log P(a))*/ + for (x = 0; x < Alphabet_size; x++) + { + pxa[x] = pqa[0] + log(mx[0][x]); + for (q = 1; q < nq; q++) + pxa[x] = LogSum(pxa[x], (pqa[q] + log(mx[q][x]))); + } + /* normalize now to get P(x|a) and store */ + LogNorm(pxa, Alphabet_size); + FCopy(hmm->mat[k], pxa, Alphabet_size); + } + + + /* Everything else is done according to P7PriorifyHMM() + */ + /* Model-dependent transitions are handled simply; Laplace. + */ + FSet(hmm->begin+2, hmm->M-1, 0.); /* wipe internal BM entries */ + FSet(hmm->end+1, hmm->M-1, 0.); /* wipe internal ME exits */ + hmm->tbd1 += 1.0; + hmm->begin[1] += 1.0; + + /* Main model transitions and insert emissions + */ + for (k = 1; k < hmm->M; k++) + { + P7PriorifyTransitionVector(hmm->t[k], pri); + P7PriorifyEmissionVector(hmm->ins[k], pri, pri->inum, pri->iq, pri->i, NULL); + } + + Plan7Renormalize(hmm); + free(pxa); + free(pqa); + return; +} + + + + +#ifdef SRE_REMOVED +/* Function: MakeIslandHMM() + * + * Purpose: Given a sequence alignment of i = 1..nseq sequences, + * with columns j = 1..alen; and a sequence index idx + * to build the island from. Return a Plan7 island HMM in + * probability form. + * + * Args: aseqs - alignment + * ainfo - alignment info + * idx - index of which sequence to build island from + * null - random sequence model [0..Alphabet_size-1] + * mx - probability matrices mx[q][root b][x] + * bpri - priors on root distributions bpri[q][root b] + * qpri - prior probability distribution over matrices + * nmx - number of joint probability matrices + * + * Return: a new Plan7 HMM + */ +struct plan7_s * +MakeIslandHMM(char **aseqs, AINFO *ainfo, int idx, + float null[MAXABET], float ***mx, float **bpri, + float *qpri, int nmx) +{ + struct plan7_s *hmm; /* RETURN: Plan7 HMM */ + int j; /* column position index */ + int k; /* model position index */ + int q; /* counter for matrices */ + int x; /* counter for symbols */ + float *mat; /* a match emission probability vector */ + float **probq; /* posterior P(q | column) */ + int sym; /* index of a symbol in alphabet */ + float max; + int qmax; + float **pxaq; /* P(x | a,q) vectors, [q][x] */ + int b; /* counter over root symbols */ + + /* Allocate a model which is the length of the + * raw sequence. + */ + hmm = AllocPlan7(DealignedLength(aseqs[idx])); + if (ainfo->sqinfo[idx].flags & SQINFO_NAME) + Plan7SetName(hmm, ainfo->sqinfo[idx].name); + if (ainfo->sqinfo[idx].flags & SQINFO_DESC) + Plan7SetDescription(hmm, ainfo->sqinfo[idx].desc); + Plan7SetNullModel(hmm, null, 350./351.); /* p1 made up; shouldn't matter*/ + + mat = (float *) MallocOrDie( sizeof(float) * Alphabet_size); + pxaq = FMX2Alloc(nmx, Alphabet_size); + + /* Calculate the posterior probability distribution + * probq (= P(q | col)) over nmx different matrices + * at each column j -- probq[0..alen-1][0..nmx-1]; + * currently does not use the prior on q, but does a + * winner-take-all rule. + */ + probq = FMX2Alloc(ainfo->alen, nmx); + calc_probq(aseqs, ainfo, mx, bpri, qpri, nmx, probq); + + /* Debugging + */ + print_probq(stdout, probq, ainfo->alen, nmx); + + for (k = 1, j = 0; j < ainfo->alen; j++) + { + if (isgap(aseqs[idx][j])) continue; + + if (strchr(Alphabet, aseqs[idx][j]) != NULL) + sym = SYMIDX(aseqs[idx][j]); + else + Die("MakeIslandHMM() can't handle ambiguous query symbols yet"); + + + /* Calculate P(x | a, q) emission vectors for all matrices q + */ + for (q = 0; q < nmx; q++) + { + for (x = 0; x < Alphabet_size; x++) + { + pxaq[q][x] = 0.0; + for (b = 0; b < 20; b++) + pxaq[q][x] += mx[q][b][x] * mx[q][b][sym] * bpri[q][b]; + } + FNorm(pxaq[q], Alphabet_size); + } + + /* Sum P(x | a, q) emission vectors over matrices q: + * P(x | a, col) = \sum_q P(x | a, q, col) P(q | a, col) + * = \sum_q P(x | a, q) P(q | col) + */ + for (x = 0; x < Alphabet_size; x++) + { + hmm->mat[k][x] = 0.; + for (q = 0; q < nmx; q++) + hmm->mat[k][x] += probq[j][q] * pxaq[q][x]; + if (k < hmm->M) + hmm->ins[k][x] = null[x]; + } + + /* Reference annotation on columns: most probable matrix + */ + max = -FLT_MAX; + for (q = 0; q < nmx; q++) + if (probq[j][q] > max) { qmax = q; max = probq[j][q]; } + hmm->rf[k] = 'a'+(char)qmax; /* q > 9, so convert to char a-z*/ + + /* Consensus annotation on columns: original sequence. + */ + hmm->cs[k] = aseqs[idx][j]; + + k++; + } + + /* State transitions are set subjectively + */ + hmm->tbd1 = 0.02; + for (k = 1; k < hmm->M; k++) + { + hmm->t[k][TMM] = 0.97; + hmm->t[k][TMI] = 0.02; + hmm->t[k][TMD] = 0.01; + hmm->t[k][TIM] = 0.20; + hmm->t[k][TII] = 0.80; + hmm->t[k][TDM] = 0.90; + hmm->t[k][TDD] = 0.10; + } + + hmm->flags |= PLAN7_HASPROB | PLAN7_RF | PLAN7_CS; + + FMX2Free(pxaq); + FMX2Free(probq); + free(mat); + return hmm; +} +#endif + + +/* Function: ReadGJMMatrices() + * + * Purpose: Read GJM's file format for star-based mixture matrices. + * Very first line is nq. + * First line of a set is P(q), the prior of the matrix. + * Second line contains P(b|q), the prior of the root symbols, + * _in arbitrary order_ (the root distribution is not over AA's!) + * Third line is blank. + * Next 20 lines give a 20x20 matrix of conditional probabilities; + * rows = root symbols b; cols = leaf symbols x; + * mx[row][col] = P(x | b). + * + * Instead of storing as matrices, store as q x r vectors. + * + * Return: (void) + * mx, pq, nq are returned via passed pointers. + * Caller must free FMX2Free(mx) + * Caller must free(pq). + */ +void +ReadGJMMatrices(FILE *fp, float ***ret_mx, float **ret_pq, int *ret_nq) +{ + float **mx; /* conditional p's [0..nq-1][0..19] */ + float *pq; /* priors on vectors, [0..nq-1] */ + int nq, nr; /* number of matrices, rows */ + char buf[2048]; + float tmppq; /* prior for matrix */ + int q,r; /* counter for matrices, rows */ + int x; /* counter for symbols */ + char *s; /* tmp pointer into buf */ + + + /* allocations */ + if (fgets(buf, 2048, fp) == NULL) Die("read failed"); + nr = 20; + nq = atoi(buf); + mx = FMX2Alloc(nq*nr, 20); + pq = (float *) MallocOrDie (nq*nr * sizeof(float)); + + /* parse matrices */ + for (q = 0; q < nq; q++) + { + if (fgets(buf, 2048, fp) == NULL) Die("parse failed"); + tmppq = atof(buf); + + if (fgets(buf, 2048, fp) == NULL) Die("parse failed"); + s = strtok(buf, "\n\t "); + for (r = 0; r < nr; r++) + { + pq[q*nr + r] = atof(s) * tmppq; + s = strtok(NULL, "\n\t "); + } + if (fgets(buf, 2048, fp) == NULL) Die("parse failed"); + + for (r = 0; r < 20; r++) + { + if (fgets(buf, 2048, fp) == NULL) Die("parse failed"); + s = strtok(buf, "\n\t "); + for (x = 0; x < 20; x++) + { + mx[q*nr+r][x] = atof(s); + s = strtok(NULL, "\n\t "); + } + } + /* two blank lines */ + if (fgets(buf, 2048, fp) == NULL) Die("parse failed"); + if (fgets(buf, 2048, fp) == NULL) Die("parse failed"); + } + + *ret_mx = mx; + *ret_pq = pq; + *ret_nq = nq*nr; + return; +} + + +#ifdef SRE_REMOVED +/* Function: OldReadGJMMatrices() + * + * Purpose: Read GJM's file format for joint probability matrix sets. + * + * Return: (void) + * mx, qprior, nmx are returned via passed pointers. + * Caller must free mx: each matrix by FMX2Free(), then free(mx). + * Caller must also free(qprior). + */ +void +OldReadGJMMatrices(FILE *fp, float ****ret_mx, float **ret_qprior, int *ret_nmx) +{ + float ***mx; /* joint prob matrix [0..nmx-1][0..19][0..19] */ + float *qprior; /* priors on matrices, [0..nmx-1] */ + int nmx; /* number of matrices */ + char buf[2048]; + int q; /* counter for matrices */ + int idx; /* index for this matrix seen in file */ + int r,c; /* counter for row, column */ + char *s; /* tmp pointer into buf */ + + /* pass one: count matrices */ + nmx = 0; + while (fgets(buf, 2048, fp) != NULL) + if (Strparse("use [0-9]+ = .+", buf, 0) == 0) + nmx++; + rewind(fp); + /* allocations */ + qprior = (float *) MallocOrDie (20 * sizeof(float)); + mx = (float ***) MallocOrDie (nmx * sizeof(float **)); + for (q = 0; q < nmx; q++) + mx[q] = FMX2Alloc(20, 20); + + /* pass two: parse matrices */ + q = 0; + while (fgets(buf, 2048, fp) != NULL) + { + if (Strparse("use ([0-9]+) = (.+)", buf, 2) != 0) + continue; + idx = atoi(sqd_parse[1]); + qprior[q] = atof(sqd_parse[2]); + + /* skip two lines in his new format */ + if (fgets(buf, 2048, fp) == NULL) Die("ReadGJMMatrices(): parse failed"); + if (fgets(buf, 2048, fp) == NULL) Die("ReadGJMMatrices(): parse failed"); + + for (r = 0; r < 20; r++) + { + if (fgets(buf, 2048, fp) == NULL) + Die("ReadGJMMatrices(): parse failed"); + s = strtok(buf, "\n\t "); + for (c = 0; c < 20; c++) + { + mx[q][r][c] = atof(s); + s = strtok(NULL, "\n\t "); + } + } + q++; + } + + *ret_mx = mx; + *ret_qprior = qprior; + *ret_nmx = nmx; + return; +} + +/* Function: OldPrintGJMMatrix() + * + * Purpose: (debugging, basically): print out Graeme's + * joint probability matrices in log odds integer form. + * + */ +void +OldPrintGJMMatrix(FILE *fp, float **jmx, float *rnd, int N) +{ + int r, c; + + fprintf(fp, " "); + for (c = 0; c < N; c++) + fprintf(fp, " %c ", Alphabet[c]); + fprintf(fp, "\n"); + + for (r = 0; r < N; r++) + { + fprintf(fp, "%c ", Alphabet[r]); + for (c = 0; c < N; c++) + fprintf(fp, "%3d ", + (int) (10. * sreLOG2(jmx[r][c] / (rnd[r] * rnd[c])))); + fprintf(fp, "\n"); + } +} +#endif /* SRE_REMOVED*/ + +/* Function: Joint2SubstitutionMatrix() + * + * Purpose: Convert a joint probability matrix to a substitution + * matrix. + * + * Convention here for substitution matrices is + * smx[r][c] = r->c = P(c|r). + * + * We obtain the substitution matrix from the following logic: + * P(rc) = P(c|r) P(r); + * P(r) = \sum_c P(rc); + * thus P(c|r) = P(rc) / \sum_c P(rc) + * + * Args: jmx - NxN P(rc) joint probability matrix + * smx - NxN P(c|r) substitution matrix, alloced in caller + * N - size of matrices; typically Alphabet_size + * + * Return: (void) + * smx is filled in. + */ +void +Joint2SubstitutionMatrix(float **jmx, float **smx, int N) +{ + float pr; /* P(r) = \sum_c P(rc) */ + int r,c; /* counters for rows, columns */ + + for (r = 0; r < N; r++) + { + for (pr = 0., c = 0; c < N; c++) + pr += jmx[r][c]; + for (c = 0; c < N; c++) + smx[r][c] = jmx[r][c] / pr; + } +} + + +#ifdef SRE_REMOVED +/* Function: BlosumWeights() + * + * Purpose: Assign weights to a set of aligned sequences + * using the BLOSUM rule: + * - do single linkage clustering at some pairwise identity + * - in each cluster, give each sequence 1/clustsize + * total weight. + * + * Args: aseqs - alignment + * N - number of seqs in alignment + * maxid - fractional identity (e.g. 0.62 for BLOSUM62) + * clust - [0..nseq-1] vector of cluster assignments, filled here (or NULL) + * ret_nc - total number of clusters found (or pass NULL) + */ +void +BlosumWeights(char **aseqs, AINFO *ainfo, float maxid, int *clust,int *ret_nc) +{ + float **dmx; /* difference matrix */ + struct phylo_s *tree; /* UPGMA tree */ + float mindiff; /* minimum distance between clusters */ + int c; /* counter for clusters */ + struct intstack_s *stack; + int node; + int i; + + mindiff = 1.0 - maxid; + /* first we do a difference matrix */ + MakeDiffMx(aseqs, ainfo->nseq, &dmx); + /* then we build a tree */ + Cluster(dmx, ainfo->nseq, CLUSTER_MIN, &tree); + + /* Find clusters below mindiff. + * The rule is: + * -traverse the tree + * -if the parent is > mindiff and current < mindiff, then + * make current node a cluster. + */ + for (i = 0; i < ainfo->nseq; i++) + { + ainfo->sqinfo[i].weight = 1.0; + ainfo->sqinfo[i].flags |= SQINFO_WGT; + } + + stack = InitIntStack(); + PushIntStack(stack, 0); /* push root on stack to start */ + c = 0; + while (PopIntStack(stack, &node)) + { + if ((node == 0 || tree[tree[node].parent-ainfo->nseq].diff > mindiff) && + tree[node].diff < mindiff) + { /* we're at a cluster */ + for (i = 0; i < ainfo->nseq; i++) + if (tree[node].is_in[i]) + { + ainfo->sqinfo[i].weight = 1.0 / (float) tree[node].incnum; + if (clust != NULL) clust[i] = c; + } + c++; + } + else /* we're not a cluster, keep traversing */ + { + if (tree[node].right >= ainfo->nseq) + PushIntStack(stack, tree[node].right - ainfo->nseq); + else + { + c++; + if (clust != NULL) clust[tree[node].right] = c; /* single seq, wgt 1.0 */ + } + + if (tree[node].left >= ainfo->nseq) + PushIntStack(stack, tree[node].left - ainfo->nseq); + else + { + c++; + if (clust != NULL) clust[tree[node].left] = c; + } + } + } + FreeIntStack(stack); + FreePhylo(tree, ainfo->nseq); + FMX2Free(dmx); + if (ret_nc != NULL) *ret_nc = c; + return; +} +#endif + + +#ifdef SRE_REMOVED +/* Function: calc_probq() + * + * Purpose: Calculate the posterior probability distribution + * P(q | a_j) for every column j in the alignment + * and every matrix choice q. + * + * Probabilistic, based on a star topology. + * Uses a BLOSUM-like rule to cluster the sequences in + * the alignment into groups with some seq identity (62%). + * Finds the consensus (majority rule) residue in + * each cluster as the representative. + * Then P(q | col) comes by Bayes: + * = (P(col | q) P(q) / Z + * where the likelihood + * P(col | q) = \sum_b [\prod_i P(a_i | q,b)] P(b | q) + * log P(col | q) = \logsum_b P(b|q) + \sum_i \log(P(a_i | q,b)) + * + * Args: aseqs - alignment + * ainfo - optional info for alignment + * mx - conditional probability matrices [0..nmx-1][root b][x] + * bprior- root priors [0..nmx-1][root b] + * qprior- prior prob distribution over matrices + * nmx - number of matrices + * probq - RETURN: posterior probabilities, [0..alen-1][0..nmx-1] + * alloc'ed in called, filled in here. + * + * Return: (void) + * probq is filled in. + */ +static void +calc_probq(char **aseqs, AINFO *ainfo, float ***mx, float **bprior, + float *qprior, int nmx, float **probq) +{ + int q; /* counter over matrices */ + int a1; /* counter over sequences */ + int j; /* counter over columns */ + int *clust; /* assignment of seqs to clusters 0..nseq-1 */ + int nclust; /* number of clusters */ + float *wgt; /* weights on seqs, 0..nseq-1 */ + int *sym; /* symbol indices in a column */ + float obs[MAXABET]; /* number of symbols observed in a column */ + int i, x; + float maxc; + float ngap; + float bterm[20]; /* intermediate in calculation, over root b's */ + int b; /* counter over root symbols */ + + /* Use the BLOSUM rule to calculate weights and clusters + * for sequences in the alignment + */ + wgt = (float *) MallocOrDie (sizeof(float) * ainfo->nseq); + clust = (int *) MallocOrDie (sizeof(int) * ainfo->nseq); + BlosumWeights(aseqs, ainfo, 0.62, clust, wgt, &nclust); + + /* Use the BLOSUM rule to calculate a "likelihood" function + * P(column | q) for each column. + */ + sym = (int *) MallocOrDie (sizeof(int) * nclust); + for (j = 0; j < ainfo->alen; j++) + { + /* Find majority rule symbols in this col */ + for (i = 0; i < nclust; i++) + { + FSet(obs, Alphabet_size, 0.); + ngap = 0.; + for (a1 = 0; a1 < ainfo->nseq; a1++) + if (clust[a1] == i) + if (isgap(aseqs[a1][j])) ngap += 0.; + else P7CountSymbol(obs, SymbolIndex(aseqs[a1][j]), 1.0); + + maxc = -1.; + for (x = 0; x < Alphabet_size; x++) + if (obs[x] > maxc) { maxc = obs[x]; sym[i] = x; } + /* either if no symbols observed, or more gaps than syms: */ + if (ngap >= maxc) sym[i] = -1; + } + /* Calculate log likelihood + log prior */ + for (q = 0; q < nmx; q++) + { + for (b = 0; b < 20; b++) + { + bterm[b] = bprior[q][b]; + for (i = 0; i < nclust; i++) + if (sym[i] >= 0) + bterm[b] += log(mx[q][b][sym[i]]); + } + probq[j][q] = log(qprior[q]) + FLogSum(bterm, 20); + } + LogNorm(probq[j], nmx); /* normalize -> gives posterior. */ + } + free(sym); + free(wgt); + free(clust); +} + + +/* Function: old_calc_probq() OBSOLETE VERSION + * + * Purpose: Calculate the posterior probability distribution + * P(q | a_j) for every column j in the alignment + * and every matrix choice q. + * + * Non-probabilistic. Uses a BLOSUM-like rule to + * find the single best matrix for a column, then + * assigns it a posterior of 1.0. + * + * This was version 1: a competitive learning rule, + * posterior either 1.0 or 0.0. + * + * Args: aseqs - alignment + * ainfo - optional info for alignment + * jmx - *joint* probability matrices [0..nmx-1][0..19][0..19] + * qprior- prior prob distribution over matrices [UNUSED] + * nmx - number of matrices + * probq - RETURN: posterior probabilities, [0..alen-1][0..nmx-1] + * alloc'ed in called, filled in here. + * + * Return: (void) + * probq is filled in. + */ +static void +old_calc_probq(char **aseqs, AINFO *ainfo, float ***jmx, float *qprior, + int nmx, float **probq) +{ + int q; /* counter over matrices */ + int a1, a2; /* counters over sequences */ + int j; /* counter over columns */ + float x; /* BLOSUM-style objective function */ + float maxx; /* maximum x so far */ + int maxq; /* maximum q so far */ + int *clust; /* assignment of seqs to clusters 0..nseq-1 */ + int nclust; /* number of clusters */ + float *wgt; /* weights on seqs, 0..nseq-1 */ + int *sym; /* symbol indices in a column */ + + + /* Use the BLOSUM rule to calculate weights and clusters + * for sequences in the alignment + */ + wgt = (float *) MallocOrDie (sizeof(float) * ainfo->nseq); + clust = (int *) MallocOrDie (sizeof(int) * ainfo->nseq); + BlosumWeights(aseqs, ainfo, 0.62, clust, wgt, &nclust); + + /* Use the BLOSUM rule to calculate a "likelihood" function + * P(column | q) for each column. + */ + sym = (int *) MallocOrDie (sizeof(int) * ainfo->nseq); + for (j = 0; j < ainfo->alen; j++) + { + for (a1 = 0; a1 < ainfo->nseq; a1++) + if (!isgap(aseqs[a1][j]) && + strchr(Alphabet, aseqs[a1][j]) != NULL) + { + sym[a1] = SYMIDX(aseqs[a1][j]); + if (sym[a1] >= Alphabet_size) sym[a1] = -1; /* no degenerates */ + } + else sym[a1] = -1; + + maxx = -FLT_MAX; + for (q = 0; q < nmx; q++) + { + x = 0.; + for (a1 = 0; a1 < ainfo->nseq; a1++) + for (a2 = 0; a2 < ainfo->nseq; a2++) + if (sym[a1] >= 0 && sym[a2] >= 0 && clust[a1] != clust[a2]) + x += wgt[a1] * wgt[a2] * log(jmx[q][sym[a1]][sym[a2]]); + +#ifdef SRE_REMOVED + printf("%% col %3d mx %c x = %f\n", + j+1, 'a'+(char)q, x); +#endif + + if (x > maxx) + { + maxx = x; + maxq = q; + } + } + FSet(probq[j], nmx, 0.0); + probq[j][maxq] = 1.0; /* winner-take-all rule */ + } + + free(sym); + free(wgt); + free(clust); +} + + +/* Function: print_probq() + * + * Purpose: Debugging output. + * probq is the posterior probability P(q | column) of + * a matrix q given an observed alignment column. + * Indexed probq[0..alen-1][0..nmx-1]. + */ +static void +print_probq(FILE *fp, float **probq, int alen, int nmx) +{ + int c; /* counter for columns */ + int q; /* counter for matrices */ + + fputs("### probq debugging output\n", fp); + fputs(" ", fp); + for (q = 0; q < nmx; q++) + fprintf(fp, " %c ", 'a'+(char)q); + fputs("\n", fp); + + for (c = 0; c < alen; c++) + { + fprintf(fp, "%4d ", c); + for (q = 0; q < nmx; q++) + fprintf(fp, "%5.3f ", probq[c][q]); + fputs("\n", fp); + } +} +#endif diff --git a/forester/archive/RIO/others/hmmer/src/config.h b/forester/archive/RIO/others/hmmer/src/config.h new file mode 100644 index 0000000..fb89df2 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/config.h @@ -0,0 +1,52 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* config.h + * + * Configurable compile-time parameters in HMMER. + */ + +#ifndef CONFIGH_INCLUDED +#define CONFIGH_INCLUDED + +/* RAMLIMIT determines the point at which we switch from fast, + * full dynamic programming to slow, linear-memory divide and conquer + * dynamic programming algorithms. It is the minimum amount of available + * RAM on the systems the package will run on. It can be overridden + * from the Makefile. + * By default, we assume we have 32 Mb RAM available (per thread). + */ +#ifndef RAMLIMIT +#define RAMLIMIT 32 +#endif + +/* HMMER_NCPU determines the number of threads/processors that + * a threads version will parallelize across. This can be overridden + * by -DHMMER_NCPU=x in the Makefile, and by a setenv HMMER_NCPU x + * in the environment, and usually by a command line option. + * Usually we detect the number of processors dynamically, but + * on some systems (FreeBSD and Linux, notably), we can't. On + * these systems we assume 2 processors by default. That assumption + * can be overridden here if HMMER_NCPU is uncommented. + */ +/* #define HMMER_NCPU 4 */ + +#define INTSCALE 1000.0 /* scaling constant for floats to integer scores */ +#define MAXABET 20 /* maximum size of alphabet (4 or 20) */ +#define MAXCODE 23 /* maximum degenerate alphabet size (17 or 23) */ +#define MAXDCHLET 200 /* maximum # Dirichlet components in mixture prior */ +#define NINPUTS 4 /* number of inputs into structural prior */ +#define INFTY 987654321 /* infinity for purposes of integer DP cells */ +#define NXRAY 4 /* number of structural inputs */ +#define LOGSUM_TBL 20000 /* controls precision of ILogsum() */ +#define ALILENGTH 50 /* length of displayed alignment lines */ + +#endif /*CONFIGH_INCLUDED*/ + diff --git a/forester/archive/RIO/others/hmmer/src/core_algorithms.c b/forester/archive/RIO/others/hmmer/src/core_algorithms.c new file mode 100644 index 0000000..b4fc349 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/core_algorithms.c @@ -0,0 +1,2445 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* core_algorithms.c + * SRE, Mon Nov 11 15:58:52 1996 + * CVS $Id: core_algorithms.c,v 1.1.1.1 2005/03/22 08:34:11 cmzmasek Exp $ + * + * Simple and robust "research" implementations of Forward, Backward, + * and Viterbi for Plan7. + */ + +#include "structs.h" +#include "config.h" +#include "funcs.h" +#include "squid.h" + +#include +#include + +static float get_wee_midpt(struct plan7_s *hmm, char *dsq, int L, + int k1, char t1, int s1, + int k3, char t3, int s3, + int *ret_k2, char *ret_t2, int *ret_s2); + + +/* Function: AllocPlan7Matrix() + * + * Purpose: Allocate a dynamic programming matrix for standard Forward, + * Backward, or Viterbi, with scores kept as scaled log-odds + * integers. Keeps 2D arrays compact in RAM in an attempt + * to maximize cache hits. Sets up individual ptrs to the + * four matrix components as a convenience. + * + * Args: rows - number of rows to allocate; typically L+1 + * M - size of model + * xmx, mmx, imx, dmx + * - RETURN: ptrs to four mx components as a convenience + * + * Return: mx + * mx is allocated here. Caller frees with FreeDPMatrix(mx). + */ + +struct dpmatrix_s * +AllocPlan7Matrix(int rows, int M, int ***xmx, int ***mmx, int ***imx, int ***dmx) +{ + struct dpmatrix_s *mx; + int i; + + mx = (struct dpmatrix_s *) MallocOrDie (sizeof(struct dpmatrix_s)); + mx->xmx = (int **) MallocOrDie (sizeof(int *) * rows); + mx->mmx = (int **) MallocOrDie (sizeof(int *) * rows); + mx->imx = (int **) MallocOrDie (sizeof(int *) * rows); + mx->dmx = (int **) MallocOrDie (sizeof(int *) * rows); + mx->xmx[0] = (int *) MallocOrDie (sizeof(int) * (rows*5)); + mx->mmx[0] = (int *) MallocOrDie (sizeof(int) * (rows*(M+2))); + mx->imx[0] = (int *) MallocOrDie (sizeof(int) * (rows*(M+2))); + mx->dmx[0] = (int *) MallocOrDie (sizeof(int) * (rows*(M+2))); + for (i = 1; i < rows; i++) + { + mx->xmx[i] = mx->xmx[0] + (i*5); + mx->mmx[i] = mx->mmx[0] + (i*(M+2)); + mx->imx[i] = mx->imx[0] + (i*(M+2)); + mx->dmx[i] = mx->dmx[0] + (i*(M+2)); + } + + if (xmx != NULL) *xmx = mx->xmx; + if (mmx != NULL) *mmx = mx->mmx; + if (imx != NULL) *imx = mx->imx; + if (dmx != NULL) *dmx = mx->dmx; + return mx; +} + +/* Function: FreePlan7Matrix() + * + * Purpose: Free a dynamic programming matrix allocated by AllocPlan7Matrix(). + * + * Return: (void) + */ +void +FreePlan7Matrix(struct dpmatrix_s *mx) +{ + free (mx->xmx[0]); + free (mx->mmx[0]); + free (mx->imx[0]); + free (mx->dmx[0]); + free (mx->xmx); + free (mx->mmx); + free (mx->imx); + free (mx->dmx); + free (mx); +} + +/* Function: AllocShadowMatrix() + * + * Purpose: Allocate a dynamic programming traceback pointer matrix for + * a Viterbi algorithm. + * + * Args: rows - number of rows to allocate; typically L+1 + * M - size of model + * xtb, mtb, itb, dtb + * - RETURN: ptrs to four mx components as a convenience + * + * Return: mx + * mx is allocated here. Caller frees with FreeDPMatrix(mx). + */ + +struct dpshadow_s * +AllocShadowMatrix(int rows, int M, char ***xtb, char ***mtb, char ***itb, char ***dtb) +{ + struct dpshadow_s *tb; + int i; + + tb = (struct dpshadow_s *) MallocOrDie (sizeof(struct dpshadow_s)); + tb->xtb = (char **) MallocOrDie (sizeof(char *) * rows); + tb->mtb = (char **) MallocOrDie (sizeof(char *) * rows); + tb->itb = (char **) MallocOrDie (sizeof(char *) * rows); + tb->dtb = (char **) MallocOrDie (sizeof(char *) * rows); + tb->esrc = (int *) MallocOrDie (sizeof(int) * rows); + tb->xtb[0] = (char *) MallocOrDie (sizeof(char) * (rows*5)); + tb->mtb[0] = (char *) MallocOrDie (sizeof(char) * (rows*(M+2))); + tb->itb[0] = (char *) MallocOrDie (sizeof(char) * (rows*(M+2))); + tb->dtb[0] = (char *) MallocOrDie (sizeof(char) * (rows*(M+2))); + for (i = 1; i < rows; i++) + { + tb->xtb[i] = tb->xtb[0] + (i*5); + tb->mtb[i] = tb->mtb[0] + (i*(M+2)); + tb->itb[i] = tb->itb[0] + (i*(M+2)); + tb->dtb[i] = tb->dtb[0] + (i*(M+2)); + } + + if (xtb != NULL) *xtb = tb->xtb; + if (mtb != NULL) *mtb = tb->mtb; + if (itb != NULL) *itb = tb->itb; + if (dtb != NULL) *dtb = tb->dtb; + return tb; +} + +/* Function: FreeShadowMatrix() + * + * Purpose: Free a dynamic programming matrix allocated by AllocShadowMatrix(). + * + * Return: (void) + */ +void +FreeShadowMatrix(struct dpshadow_s *tb) +{ + free (tb->xtb[0]); + free (tb->mtb[0]); + free (tb->itb[0]); + free (tb->dtb[0]); + free (tb->esrc); + free (tb->xtb); + free (tb->mtb); + free (tb->itb); + free (tb->dtb); + free (tb); +} + +/* Function: P7ViterbiSize() + * Date: SRE, Fri Mar 6 15:13:20 1998 [St. Louis] + * + * Purpose: Returns the ballpark predicted memory requirement for a + * P7Viterbi() alignment, in MB. + * + * Currently L must fit in an int (< 2 GB), but we have + * to deal with LM > 2 GB - e.g. watch out for overflow, do + * the whole calculation in floating point. Bug here detected + * in 2.1.1 by David Harper, Sanger Centre. + * + * Args: L - length of sequence + * M - length of HMM + * + * Returns: # of MB + */ +int +P7ViterbiSize(int L, int M) +{ + float Mbytes; + + /* We're excessively precise here, but it doesn't cost + * us anything to be pedantic. The four terms are: + * 1. the matrix structure itself; + * 2. the O(NM) main matrix (this dominates!) + * 3. ptrs into the rows of the matrix + * 4. storage for 5 special states. (xmx) + */ + Mbytes = (float) sizeof(struct dpmatrix_s); + Mbytes += 3. * (float) (L+1) * (float) (M+2) * (float) sizeof(int); + Mbytes += 4. * (float) (L+1) * (float) sizeof(int *); + Mbytes += 5. * (float) (L+1) * (float) sizeof(int); + Mbytes /= 1048576.; + return (int) Mbytes; +} + +/* Function: P7SmallViterbiSize() + * Date: SRE, Fri Mar 6 15:20:04 1998 [St. Louis] + * + * Purpose: Returns the ballpark predicted memory requirement for + * a P7SmallViterbi() alignment, in MB. + * + * P7SmallViterbi() is a wrapper, calling both P7ParsingViterbi() + * and P7WeeViterbi(). P7ParsingViterbi() typically dominates + * the memory requirement, so the value returned + * is the P7ParsingViterbi() number. + * + * We don't (yet) worry about overflow issues like we did with + * P7ViterbiSize(). We'll have many other 32-bit int issues in the + * code if we overflow here. + * + * Args: L - length of sequence + * M - length of HMM + * + * Returns: # of MB + */ +int +P7SmallViterbiSize(int L, int M) +{ + return ((2 * sizeof(struct dpmatrix_s) + + 12 * (M+2) * sizeof(int) + /* 2 matrices w/ 2 rows */ + 16 * sizeof(int *) + /* ptrs into rows of matrix */ + 20 * sizeof(int) + /* 5 special states */ + 2 * (L+1) * sizeof(int)) /* traceback indices */ + / 1000000); +} + + +/* Function: P7WeeViterbiSize() + * Date: SRE, Fri Mar 6 15:40:42 1998 [St. Louis] + * + * Purpose: Returns the ballpark predicted memory requirement for + * a P7WeeViterbi() alignment, in MB. + * + * Args: L - length of sequence + * M - length of HMM + * + * Returns: # of MB + */ +int +P7WeeViterbiSize(int L, int M) +{ + return ((2 * sizeof(struct dpmatrix_s) + + 12 * (M+2) * sizeof(int) + /* 2 matrices w/ 2 rows */ + 16 * sizeof(int *) + /* ptrs into rows of matrix */ + 20 * sizeof(int) + /* 5 special states */ + 2 * (L+2) * sizeof(int) + /* stacks for starts/ends (overkill) */ + (L+2) * sizeof(int) + /* k assignments to seq positions */ + (L+2) * sizeof(char)) /* state assignments to seq pos */ + / 1000000); +} + + +/* Function: P7Forward() + * + * Purpose: The Forward dynamic programming algorithm. + * The scaling issue is dealt with by working in log space + * and calling ILogsum(); this is a slow but robust approach. + * + * Args: dsq - sequence in digitized form + * L - length of dsq + * hmm - the model + * ret_mx - RETURN: dp matrix; pass NULL if it's not wanted + * + * Return: log P(S|M)/P(S|R), as a bit score. + */ +float +P7Forward(char *dsq, int L, struct plan7_s *hmm, struct dpmatrix_s **ret_mx) +{ + struct dpmatrix_s *mx; + int **xmx; + int **mmx; + int **imx; + int **dmx; + int i,k; + int sc; + + /* Allocate a DP matrix with 0..L rows, 0..M-1 columns. + */ + mx = AllocPlan7Matrix(L+1, hmm->M, &xmx, &mmx, &imx, &dmx); + + /* Initialization of the zero row. + * Note that xmx[i][stN] = 0 by definition for all i, + * and xmx[i][stT] = xmx[i][stC], so neither stN nor stT need + * to be calculated in DP matrices. + */ + xmx[0][XMN] = 0; /* S->N, p=1 */ + xmx[0][XMB] = hmm->xsc[XTN][MOVE]; /* S->N->B, no N-tail */ + xmx[0][XME] = xmx[0][XMC] = xmx[0][XMJ] = -INFTY; /* need seq to get here */ + for (k = 0; k <= hmm->M; k++) + mmx[0][k] = imx[0][k] = dmx[0][k] = -INFTY; /* need seq to get here */ + + /* Recursion. Done as a pull. + * Note some slightly wasteful boundary conditions: + * tsc[0] = -INFTY for all eight transitions (no node 0) + * D_M and I_M are wastefully calculated (they don't exist) + */ + for (i = 1; i <= L; i++) + { + mmx[i][0] = imx[i][0] = dmx[i][0] = -INFTY; + for (k = 1; k < hmm->M; k++) + { + mmx[i][k] = ILogsum(ILogsum(mmx[i-1][k-1] + hmm->tsc[k-1][TMM], + imx[i-1][k-1] + hmm->tsc[k-1][TIM]), + ILogsum(xmx[i-1][XMB] + hmm->bsc[k], + dmx[i-1][k-1] + hmm->tsc[k-1][TDM])); + mmx[i][k] += hmm->msc[(int) dsq[i]][k]; + + dmx[i][k] = ILogsum(mmx[i][k-1] + hmm->tsc[k-1][TMD], + dmx[i][k-1] + hmm->tsc[k-1][TDD]); + imx[i][k] = ILogsum(mmx[i-1][k] + hmm->tsc[k][TMI], + imx[i-1][k] + hmm->tsc[k][TII]); + imx[i][k] += hmm->isc[(int) dsq[i]][k]; + } + mmx[i][hmm->M] = ILogsum(ILogsum(mmx[i-1][hmm->M-1] + hmm->tsc[hmm->M-1][TMM], + imx[i-1][hmm->M-1] + hmm->tsc[hmm->M-1][TIM]), + ILogsum(xmx[i-1][XMB] + hmm->bsc[hmm->M-1], + dmx[i-1][hmm->M-1] + hmm->tsc[hmm->M-1][TDM])); + mmx[i][hmm->M] += hmm->msc[(int) dsq[i]][hmm->M]; + + /* Now the special states. + * remember, C and J emissions are zero score by definition + */ + xmx[i][XMN] = xmx[i-1][XMN] + hmm->xsc[XTN][LOOP]; + + xmx[i][XME] = -INFTY; + for (k = 1; k <= hmm->M; k++) + xmx[i][XME] = ILogsum(xmx[i][XME], mmx[i][k] + hmm->esc[k]); + + xmx[i][XMJ] = ILogsum(xmx[i-1][XMJ] + hmm->xsc[XTJ][LOOP], + xmx[i][XME] + hmm->xsc[XTE][LOOP]); + + xmx[i][XMB] = ILogsum(xmx[i][XMN] + hmm->xsc[XTN][MOVE], + xmx[i][XMJ] + hmm->xsc[XTJ][MOVE]); + + xmx[i][XMC] = ILogsum(xmx[i-1][XMC] + hmm->xsc[XTC][LOOP], + xmx[i][XME] + hmm->xsc[XTE][MOVE]); + } + + sc = xmx[L][XMC] + hmm->xsc[XTC][MOVE]; + + if (ret_mx != NULL) *ret_mx = mx; + else FreePlan7Matrix(mx); + + return Scorify(sc); /* the total Forward score. */ +} + + +/* Function: P7Viterbi() + * + * Purpose: The Viterbi dynamic programming algorithm. + * Identical to Forward() except that max's + * replace sum's. + * + * Args: dsq - sequence in digitized form + * L - length of dsq + * hmm - the model + * ret_tr - RETURN: traceback; pass NULL if it's not wanted + * + * Return: log P(S|M)/P(S|R), as a bit score + */ +float +P7Viterbi(char *dsq, int L, struct plan7_s *hmm, struct p7trace_s **ret_tr) +{ + struct dpmatrix_s *mx; + struct p7trace_s *tr; + int **xmx; + int **mmx; + int **imx; + int **dmx; + int i,k; + int sc; + + /* Allocate a DP matrix with 0..L rows, 0..M-1 columns. + */ + mx = AllocPlan7Matrix(L+1, hmm->M, &xmx, &mmx, &imx, &dmx); + + /* Initialization of the zero row. + */ + xmx[0][XMN] = 0; /* S->N, p=1 */ + xmx[0][XMB] = hmm->xsc[XTN][MOVE]; /* S->N->B, no N-tail */ + xmx[0][XME] = xmx[0][XMC] = xmx[0][XMJ] = -INFTY; /* need seq to get here */ + for (k = 0; k <= hmm->M; k++) + mmx[0][k] = imx[0][k] = dmx[0][k] = -INFTY; /* need seq to get here */ + + /* Recursion. Done as a pull. + * Note some slightly wasteful boundary conditions: + * tsc[0] = -INFTY for all eight transitions (no node 0) + * D_M and I_M are wastefully calculated (they don't exist) + */ + for (i = 1; i <= L; i++) { + mmx[i][0] = imx[i][0] = dmx[i][0] = -INFTY; + + for (k = 1; k <= hmm->M; k++) { + /* match state */ + mmx[i][k] = -INFTY; + if ((sc = mmx[i-1][k-1] + hmm->tsc[k-1][TMM]) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = imx[i-1][k-1] + hmm->tsc[k-1][TIM]) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = xmx[i-1][XMB] + hmm->bsc[k]) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = dmx[i-1][k-1] + hmm->tsc[k-1][TDM]) > mmx[i][k]) + mmx[i][k] = sc; + if (hmm->msc[(int) dsq[i]][k] != -INFTY) mmx[i][k] += hmm->msc[(int) dsq[i]][k]; + else mmx[i][k] = -INFTY; + + /* delete state */ + dmx[i][k] = -INFTY; + if ((sc = mmx[i][k-1] + hmm->tsc[k-1][TMD]) > dmx[i][k]) + dmx[i][k] = sc; + if ((sc = dmx[i][k-1] + hmm->tsc[k-1][TDD]) > dmx[i][k]) + dmx[i][k] = sc; + + /* insert state */ + if (k < hmm->M) { + imx[i][k] = -INFTY; + if ((sc = mmx[i-1][k] + hmm->tsc[k][TMI]) > imx[i][k]) + imx[i][k] = sc; + if ((sc = imx[i-1][k] + hmm->tsc[k][TII]) > imx[i][k]) + imx[i][k] = sc; + if (hmm->isc[(int)dsq[i]][k] != -INFTY) imx[i][k] += hmm->isc[(int) dsq[i]][k]; + else imx[i][k] = -INFTY; + } + } + + /* Now the special states. Order is important here. + * remember, C and J emissions are zero score by definition, + */ + /* N state */ + xmx[i][XMN] = -INFTY; + if ((sc = xmx[i-1][XMN] + hmm->xsc[XTN][LOOP]) > -INFTY) + xmx[i][XMN] = sc; + + /* E state */ + xmx[i][XME] = -INFTY; + for (k = 1; k <= hmm->M; k++) + if ((sc = mmx[i][k] + hmm->esc[k]) > xmx[i][XME]) + xmx[i][XME] = sc; + /* J state */ + xmx[i][XMJ] = -INFTY; + if ((sc = xmx[i-1][XMJ] + hmm->xsc[XTJ][LOOP]) > -INFTY) + xmx[i][XMJ] = sc; + if ((sc = xmx[i][XME] + hmm->xsc[XTE][LOOP]) > xmx[i][XMJ]) + xmx[i][XMJ] = sc; + + /* B state */ + xmx[i][XMB] = -INFTY; + if ((sc = xmx[i][XMN] + hmm->xsc[XTN][MOVE]) > -INFTY) + xmx[i][XMB] = sc; + if ((sc = xmx[i][XMJ] + hmm->xsc[XTJ][MOVE]) > xmx[i][XMB]) + xmx[i][XMB] = sc; + + /* C state */ + xmx[i][XMC] = -INFTY; + if ((sc = xmx[i-1][XMC] + hmm->xsc[XTC][LOOP]) > -INFTY) + xmx[i][XMC] = sc; + if ((sc = xmx[i][XME] + hmm->xsc[XTE][MOVE]) > xmx[i][XMC]) + xmx[i][XMC] = sc; + } + /* T state (not stored) */ + sc = xmx[L][XMC] + hmm->xsc[XTC][MOVE]; + + if (ret_tr != NULL) { + P7ViterbiTrace(hmm, dsq, L, mx, &tr); + *ret_tr = tr; + } + + FreePlan7Matrix(mx); + return Scorify(sc); /* the total Viterbi score. */ +} + + +/* Function: P7ViterbiTrace() + * Date: SRE, Sat Aug 23 10:30:11 1997 (St. Louis Lambert Field) + * + * Purpose: Traceback of a Viterbi matrix: i.e. retrieval + * of optimum alignment. + * + * Args: hmm - hmm, log odds form, used to make mx + * dsq - sequence aligned to (digital form) 1..N + * N - length of seq + * mx - the matrix to trace back in, N x hmm->M + * ret_tr - RETURN: traceback. + * + * Return: (void) + * ret_tr is allocated here. Free using P7FreeTrace(). + */ +void +P7ViterbiTrace(struct plan7_s *hmm, char *dsq, int N, + struct dpmatrix_s *mx, struct p7trace_s **ret_tr) +{ + struct p7trace_s *tr; + int curralloc; /* current allocated length of trace */ + int tpos; /* position in trace */ + int i; /* position in seq (1..N) */ + int k; /* position in model (1..M) */ + int **xmx, **mmx, **imx, **dmx; + int sc; /* temp var for pre-emission score */ + + /* Overallocate for the trace. + * S-N-B- ... - E-C-T : 6 states + N is minimum trace; + * add N more as buffer. + */ + curralloc = N * 2 + 6; + P7AllocTrace(curralloc, &tr); + + xmx = mx->xmx; + mmx = mx->mmx; + imx = mx->imx; + dmx = mx->dmx; + + /* Initialization of trace + * We do it back to front; ReverseTrace() is called later. + */ + tr->statetype[0] = STT; + tr->nodeidx[0] = 0; + tr->pos[0] = 0; + tr->statetype[1] = STC; + tr->nodeidx[1] = 0; + tr->pos[1] = 0; + tpos = 2; + i = N; /* current i (seq pos) we're trying to assign */ + + /* Traceback + */ + while (tr->statetype[tpos-1] != STS) { + switch (tr->statetype[tpos-1]) { + case STM: /* M connects from i-1,k-1, or B */ + sc = mmx[i+1][k+1] - hmm->msc[(int) dsq[i+1]][k+1]; + if (sc == xmx[i][XMB] + hmm->bsc[k+1]) + { + /* Check for wing unfolding */ + if (Prob2Score(hmm->begin[k+1], hmm->p1) + 1 * INTSCALE <= hmm->bsc[k+1]) + while (k > 0) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = 0; + tpos++; + if (tpos == curralloc) + { /* grow trace if necessary */ + curralloc += N; + P7ReallocTrace(tr, curralloc); + } + } + + tr->statetype[tpos] = STB; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + } + else if (sc == mmx[i][k] + hmm->tsc[k][TMM]) + { + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + } + else if (sc == imx[i][k] + hmm->tsc[k][TIM]) + { + tr->statetype[tpos] = STI; + tr->nodeidx[tpos] = k; + tr->pos[tpos] = i--; + } + else if (sc == dmx[i][k] + hmm->tsc[k][TDM]) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = 0; + } + else Die("traceback failed"); + break; + + case STD: /* D connects from M,D */ + if (dmx[i][k+1] == mmx[i][k] + hmm->tsc[k][TMD]) + { + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + } + else if (dmx[i][k+1] == dmx[i][k] + hmm->tsc[k][TDD]) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = 0; + } + else Die("traceback failed"); + break; + + case STI: /* I connects from M,I */ + sc = imx[i+1][k] - hmm->isc[(int) dsq[i+1]][k]; + if (sc == mmx[i][k] + hmm->tsc[k][TMI]) + { + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + } + else if (sc == imx[i][k] + hmm->tsc[k][TII]) + { + tr->statetype[tpos] = STI; + tr->nodeidx[tpos] = k; + tr->pos[tpos] = i--; + } + else Die("traceback failed"); + break; + + case STN: /* N connects from S, N */ + if (i == 0 && xmx[i][XMN] == 0) + { + tr->statetype[tpos] = STS; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + } + else if (i > 0 && xmx[i+1][XMN] == xmx[i][XMN] + hmm->xsc[XTN][LOOP]) + { + tr->statetype[tpos] = STN; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* note convention adherence: */ + tr->pos[tpos-1] = i--; /* first N doesn't emit */ + } + else Die("traceback failed"); + break; + + case STB: /* B connects from N, J */ + if (xmx[i][XMB] == xmx[i][XMN] + hmm->xsc[XTN][MOVE]) + { + tr->statetype[tpos] = STN; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + } + else if (xmx[i][XMB] == xmx[i][XMJ] + hmm->xsc[XTJ][MOVE]) + { + tr->statetype[tpos] = STJ; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + } + else Die("traceback failed"); + break; + + case STE: /* E connects from any M state. k set here */ + for (k = hmm->M; k >= 1; k--) + if (xmx[i][XME] == mmx[i][k] + hmm->esc[k]) + { + /* check for wing unfolding */ + if (Prob2Score(hmm->end[k], 1.) + 1*INTSCALE <= hmm->esc[k]) + { + int dk; /* need a tmp k while moving thru delete wing */ + for (dk = hmm->M; dk > k; dk--) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = dk; + tr->pos[tpos] = 0; + tpos++; + if (tpos == curralloc) + { /* grow trace if necessary */ + curralloc += N; + P7ReallocTrace(tr, curralloc); + } + } + } + + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + break; + } + if (k < 0) Die("traceback failed"); + break; + + case STC: /* C comes from C, E */ + if (xmx[i][XMC] == xmx[i-1][XMC] + hmm->xsc[XTC][LOOP]) + { + tr->statetype[tpos] = STC; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* note convention adherence: */ + tr->pos[tpos-1] = i--; /* first C doesn't emit */ + } + else if (xmx[i][XMC] == xmx[i][XME] + hmm->xsc[XTE][MOVE]) + { + tr->statetype[tpos] = STE; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* E is a nonemitter */ + } + else Die("Traceback failed."); + break; + + case STJ: /* J connects from E, J */ + if (xmx[i][XMJ] == xmx[i-1][XMJ] + hmm->xsc[XTJ][LOOP]) + { + tr->statetype[tpos] = STJ; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* note convention adherence: */ + tr->pos[tpos-1] = i--; /* first J doesn't emit */ + } + else if (xmx[i][XMJ] == xmx[i][XME] + hmm->xsc[XTE][LOOP]) + { + tr->statetype[tpos] = STE; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* E is a nonemitter */ + } + else Die("Traceback failed."); + break; + + default: + Die("traceback failed"); + + } /* end switch over statetype[tpos-1] */ + + tpos++; + if (tpos == curralloc) + { /* grow trace if necessary */ + curralloc += N; + P7ReallocTrace(tr, curralloc); + } + + } /* end traceback, at S state; tpos == tlen now */ + tr->tlen = tpos; + P7ReverseTrace(tr); + *ret_tr = tr; +} + + +/* Function: P7SmallViterbi() + * Date: SRE, Fri Mar 6 15:29:41 1998 [St. Louis] + * + * Purpose: Wrapper function, for linear memory alignment + * with same arguments as P7Viterbi(). + * + * Calls P7ParsingViterbi to break the sequence + * into fragments. Then, based on size of fragments, + * calls either P7Viterbi() or P7WeeViterbi() to + * get traces for them. Finally, assembles all these + * traces together to produce an overall optimal + * trace for the sequence. + * + * If the trace isn't needed for some reason, + * all we do is call P7ParsingViterbi. + * + * Args: dsq - sequence in digitized form + * L - length of dsq + * hmm - the model + * ret_tr - RETURN: traceback; pass NULL if it's not wanted + * + * Returns: Score of optimal alignment in bits. + */ +float +P7SmallViterbi(char *dsq, int L, struct plan7_s *hmm, struct p7trace_s **ret_tr) +{ + struct p7trace_s *ctr; /* collapsed trace of optimal parse */ + struct p7trace_s *tr; /* full trace of optimal alignment */ + struct p7trace_s **tarr; /* trace array */ + int ndom; /* number of subsequences */ + int i; /* counter over domains */ + int pos; /* position in sequence */ + int tpos; /* position in trace */ + int tlen; /* length of full trace */ + int sqlen; /* length of a subsequence */ + int totlen; /* length of L matched by model (as opposed to N/C/J) */ + float sc; /* score of optimal alignment */ + int t2; /* position in a subtrace */ + + /* Step 1. Call P7ParsingViterbi to calculate an optimal parse + * of the sequence into single-hit subsequences; this parse + * is returned in a "collapsed" trace + */ + sc = P7ParsingViterbi(dsq, L, hmm, &ctr); + + /* If we don't want full trace, we're done */ + if (ret_tr == NULL) + { + P7FreeTrace(ctr); + return sc; + } + + /* Step 2. Call either P7Viterbi or P7WeeViterbi on each subsequence + * to recover a full traceback of each, collecting them in + * an array. + */ + ndom = ctr->tlen/2 - 1; + tarr = MallocOrDie(sizeof(struct p7trace_s *) * ndom); + tlen = totlen = 0; + for (i = 0; i < ndom; i++) + { + sqlen = ctr->pos[i*2+2] - ctr->pos[i*2+1]; /* length of subseq */ + + if (P7ViterbiSize(sqlen, hmm->M) > RAMLIMIT) + P7WeeViterbi(dsq + ctr->pos[i*2+1], sqlen, hmm, &(tarr[i])); + else + P7Viterbi(dsq + ctr->pos[i*2+1], sqlen, hmm, &(tarr[i])); + + tlen += tarr[i]->tlen - 4; /* not counting S->N,...,C->T */ + totlen += sqlen; + } + + /* Step 3. Compose the subtraces into one big final trace. + * This is wasteful because we're going to TraceDecompose() + * it again in both hmmsearch and hmmpfam to look at + * individual domains; but we do it anyway so the P7SmallViterbi + * interface looks exactly like the P7Viterbi interface. Maybe + * long traces shouldn't include all the N/J/C states anyway, + * since they're unambiguously implied. + */ + + /* Calculate total trace len and alloc; + * nonemitting SNCT + nonemitting J's + emitting NJC + */ + tlen += 4 + (ndom-1) + (L-totlen); + P7AllocTrace(tlen, &tr); + tr->tlen = tlen; + + /* Add N-terminal trace framework + */ + tr->statetype[0] = STS; + tr->nodeidx[0] = 0; + tr->pos[0] = 0; + tr->statetype[1] = STN; + tr->nodeidx[1] = 0; + tr->pos[1] = 0; + tpos = 2; + /* add implied N's */ + for (pos = 1; pos <= ctr->pos[1]; pos++) + { + tr->statetype[tpos] = STN; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = pos; + tpos++; + } + + /* Add each subseq trace in, with its appropriate + * sequence offset derived from the collapsed trace + */ + for (i = 0; i < ndom; i++) + { /* skip SN, CT framework at ends */ + for (t2 = 2; t2 < tarr[i]->tlen-2; t2++) + { + tr->statetype[tpos] = tarr[i]->statetype[t2]; + tr->nodeidx[tpos] = tarr[i]->nodeidx[t2]; + if (tarr[i]->pos[t2] > 0) + tr->pos[tpos] = tarr[i]->pos[t2] + ctr->pos[i*2+1]; + else + tr->pos[tpos] = 0; + tpos++; + } + /* add nonemitting J or C */ + tr->statetype[tpos] = (i == ndom-1) ? STC : STJ; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + tpos++; + /* add implied emitting J's */ + if (i != ndom-1) + for (pos = ctr->pos[i*2+2]+1; pos <= ctr->pos[(i+1)*2+1]; pos++) + { + tr->statetype[tpos] = STJ; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = pos; + tpos++; + } + } + + /* add implied C's */ + for (pos = ctr->pos[ndom*2]+1; pos <= L; pos++) + { + tr->statetype[tpos] = STC; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = pos; + tpos++; + } + /* add terminal T */ + tr->statetype[tpos] = STT; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + tpos++; + + for (i = 0; i < ndom; i++) P7FreeTrace(tarr[i]); + free(tarr); + P7FreeTrace(ctr); + + *ret_tr = tr; + return sc; +} + + + + +/* Function: P7ParsingViterbi() + * Date: SRE, Wed Mar 4 14:07:31 1998 [St. Louis] + * + * Purpose: The "hmmfs" linear-memory algorithm for finding + * the optimal alignment of a very long sequence to + * a looping, multihit (e.g. Plan7) model, parsing it into + * a series of nonoverlapping subsequences that match + * the model once. Other algorithms (e.g. P7Viterbi() + * or P7WeeViterbi()) are applied subsequently to + * these subsequences to recover complete alignments. + * + * The hmmfs algorithm appears briefly in [Durbin98], + * but is otherwise unpublished. + * + * The traceback structure returned is special: a + * "collapsed" trace S->B->E->...->B->E->T, where + * stateidx is unused and pos is used to indicate the + * position of B and E in the sequence. The matched + * subsequence is B_pos+1...E_pos. The number of + * matches in the trace is (tlen/2)-1. + * + * Args: dsq - sequence in digitized form + * L - length of dsq + * hmm - the model (log odds scores ready) + * ret_tr - RETURN: a collapsed traceback. + * + * Returns: Score of the optimal Viterbi alignment, in bits. + */ +float +P7ParsingViterbi(char *dsq, int L, struct plan7_s *hmm, struct p7trace_s **ret_tr) +{ + struct dpmatrix_s *mx; /* two rows of score matrix */ + struct dpmatrix_s *tmx; /* two rows of misused score matrix: traceback ptrs */ + struct p7trace_s *tr; /* RETURN: collapsed traceback */ + int **xmx, **mmx, **dmx, **imx; /* convenience ptrs to score matrix */ + int **xtr, **mtr, **dtr, **itr; /* convenience ptrs to traceback pointers */ + int *btr, *etr; /* O(L) trace ptrs for B, E state pts in seq */ + int sc; /* integer score of optimal alignment */ + int i,k,tpos; /* index for seq, model, trace position */ + int cur, prv; /* indices for rolling dp matrix */ + int curralloc; /* size of allocation for tr */ + + + /* Alloc a DP matrix and traceback pointers, two rows each, O(M). + * Alloc two O(L) arrays to trace back through the sequence thru B and E. + */ + mx = AllocPlan7Matrix(2, hmm->M, &xmx, &mmx, &imx, &dmx); + tmx = AllocPlan7Matrix(2, hmm->M, &xtr, &mtr, &itr, &dtr); + btr = MallocOrDie(sizeof(int) * (L+1)); + etr = MallocOrDie(sizeof(int) * (L+1)); + + /* Initialization of the zero row. + */ + xmx[0][XMN] = 0; /* S->N, p=1 */ + xmx[0][XMB] = hmm->xsc[XTN][MOVE]; /* S->N->B, no N-tail */ + btr[0] = 0; + xmx[0][XME] = xmx[0][XMC] = xmx[0][XMJ] = -INFTY; /* need seq to get here */ + etr[0] = -1; + for (k = 0; k <= hmm->M; k++) + mmx[0][k] = imx[0][k] = dmx[0][k] = -INFTY; /* need seq to get here */ + + /* Recursion. Done as a pull. Rolling index trick. Trace ptr propagation trick. + * Note some slightly wasteful boundary conditions: + * tsc[0] = -INFTY for all eight transitions (no node 0) + * D_M and I_M are wastefully calculated (they don't exist) + * + * Notes on traceback pointer propagation. + * - In the path B->E, we propagate the i that B was aligned to in the optimal + * alignment, via mtr, dtr, and itr. + * - When we reach an E, we record the i of the B it started from in etr. + * - In a looping path E->J...->B or terminal path E->C...->T, we propagate + * the i that E was aligned to in the optimal alignment via xtr[][XMC] + * and xtr[][XMJ]. + * - When we enter B, we record the i of the best previous E, or 0 if there + * isn't one, in btr. + */ + for (i = 1; i <= L; i++) { + cur = i % 2; + prv = !cur; + + mmx[cur][0] = imx[cur][0] = dmx[cur][0] = -INFTY; + + for (k = 1; k <= hmm->M; k++) { + /* match state */ + mmx[cur][k] = -INFTY; + if ((sc = mmx[prv][k-1] + hmm->tsc[k-1][TMM]) > -INFTY) + { mmx[cur][k] = sc; mtr[cur][k] = mtr[prv][k-1]; } + if ((sc = imx[prv][k-1] + hmm->tsc[k-1][TIM]) > mmx[cur][k]) + { mmx[cur][k] = sc; mtr[cur][k] = itr[prv][k-1]; } + if ((sc = xmx[prv][XMB] + hmm->bsc[k]) > mmx[cur][k]) + { mmx[cur][k] = sc; mtr[cur][k] = i-1; } + if ((sc = dmx[prv][k-1] + hmm->tsc[k-1][TDM]) > mmx[cur][k]) + { mmx[cur][k] = sc; mtr[cur][k] = dtr[prv][k-1]; } + if (hmm->msc[(int) dsq[i]][k] != -INFTY) + mmx[cur][k] += hmm->msc[(int) dsq[i]][k]; + else + mmx[cur][k] = -INFTY; + + /* delete state */ + dmx[cur][k] = -INFTY; + if ((sc = mmx[cur][k-1] + hmm->tsc[k-1][TMD]) > -INFTY) + { dmx[cur][k] = sc; dtr[cur][k] = mtr[cur][k-1]; } + if ((sc = dmx[cur][k-1] + hmm->tsc[k-1][TDD]) > dmx[cur][k]) + { dmx[cur][k] = sc; dtr[cur][k] = dtr[cur][k-1]; } + + /* insert state */ + if (k < hmm->M) { + imx[cur][k] = -INFTY; + if ((sc = mmx[prv][k] + hmm->tsc[k][TMI]) > -INFTY) + { imx[cur][k] = sc; itr[cur][k] = mtr[prv][k]; } + if ((sc = imx[prv][k] + hmm->tsc[k][TII]) > imx[cur][k]) + { imx[cur][k] = sc; itr[cur][k] = itr[prv][k]; } + if (hmm->isc[(int) dsq[i]][k] != -INFTY) + imx[cur][k] += hmm->isc[(int) dsq[i]][k]; + else + imx[cur][k] = -INFTY; + } + } + + /* Now the special states. Order is important here. + * remember, C and J emissions are zero score by definition, + */ + /* N state */ + xmx[cur][XMN] = -INFTY; + if ((sc = xmx[prv][XMN] + hmm->xsc[XTN][LOOP]) > -INFTY) + xmx[cur][XMN] = sc; + /* E state */ + xmx[cur][XME] = -INFTY; + for (k = 1; k <= hmm->M; k++) + if ((sc = mmx[cur][k] + hmm->esc[k]) > xmx[cur][XME]) + { xmx[cur][XME] = sc; etr[i] = mtr[cur][k]; } + /* J state */ + xmx[cur][XMJ] = -INFTY; + if ((sc = xmx[prv][XMJ] + hmm->xsc[XTJ][LOOP]) > -INFTY) + { xmx[cur][XMJ] = sc; xtr[cur][XMJ] = xtr[prv][XMJ]; } + if ((sc = xmx[cur][XME] + hmm->xsc[XTE][LOOP]) > xmx[cur][XMJ]) + { xmx[cur][XMJ] = sc; xtr[cur][XMJ] = i; } + /* B state */ + xmx[cur][XMB] = -INFTY; + if ((sc = xmx[cur][XMN] + hmm->xsc[XTN][MOVE]) > -INFTY) + { xmx[cur][XMB] = sc; btr[i] = 0; } + if ((sc = xmx[cur][XMJ] + hmm->xsc[XTJ][MOVE]) > xmx[cur][XMB]) + { xmx[cur][XMB] = sc; btr[i] = xtr[cur][XMJ]; } + /* C state */ + xmx[cur][XMC] = -INFTY; + if ((sc = xmx[prv][XMC] + hmm->xsc[XTC][LOOP]) > -INFTY) + { xmx[cur][XMC] = sc; xtr[cur][XMC] = xtr[prv][XMC]; } + if ((sc = xmx[cur][XME] + hmm->xsc[XTE][MOVE]) > xmx[cur][XMC]) + { xmx[cur][XMC] = sc; xtr[cur][XMC] = i; } + } + /* T state (not stored) */ + sc = xmx[cur][XMC] + hmm->xsc[XTC][MOVE]; + + /***************************************************************** + * Collapsed traceback stage. + * xtr[L%2][XMC] contains the position j of the previous E + * etr[j] contains the position i of the previous B + * btr[i] contains the position j of the previous E, or 0 + * continue until btr[i] = 0. + *****************************************************************/ + + curralloc = 2; /* minimum: no hits */ + P7AllocTrace(curralloc, &tr); + + /* Init of collapsed trace. Back to front; we ReverseTrace() later. + */ + tpos = 0; + tr->statetype[tpos] = STT; + tr->pos[tpos] = 0; + i = xtr[L%2][XMC]; + while (i > 0) + { + curralloc += 2; + P7ReallocTrace(tr, curralloc); + + tpos++; + tr->statetype[tpos] = STE; + tr->pos[tpos] = i; + i = etr[i]; + + tpos++; + tr->statetype[tpos] = STB; + tr->pos[tpos] = i; + i = btr[i]; + } + + tpos++; + tr->statetype[tpos] = STS; + tr->pos[tpos] = 0; + tr->tlen = tpos + 1; + P7ReverseTrace(tr); + + FreePlan7Matrix(mx); + FreePlan7Matrix(tmx); + free(btr); + free(etr); + + *ret_tr = tr; + return Scorify(sc); +} + +/* Function: P7WeeViterbi() + * Date: SRE, Wed Mar 4 08:24:04 1998 [St. Louis] + * + * Purpose: Hirschberg/Myers/Miller linear memory alignment. + * See [Hirschberg75,MyM-88a] for the idea of the algorithm. + * Adapted to HMM implementation. + * + * Requires that you /know/ that there's only + * one hit to the model in the sequence: either + * because you're forcing single-hit, or you've + * previously called P7ParsingViterbi to parse + * the sequence into single-hit segments. The reason + * for this is that a cyclic model (a la Plan7) + * defeats the nice divide and conquer trick. + * (I think some trickery with propagated trace pointers + * could get around this but haven't explored it.) + * This is implemented by ignoring transitions + * to/from J state. + * + * Args: dsq - sequence in digitized form + * L - length of dsq + * hmm - the model + * ret_tr - RETURN: traceback. + * + * Returns: Score of the optimal Viterbi alignment. + */ +float +P7WeeViterbi(char *dsq, int L, struct plan7_s *hmm, struct p7trace_s **ret_tr) +{ + struct p7trace_s *tr; /* RETURN: traceback */ + int *kassign; /* 0..L+1, alignment of seq positions to model nodes */ + char *tassign; /* 0..L+1, alignment of seq positions to state types */ + int *endlist; /* stack of end points on sequence to work on */ + int *startlist; /* stack of start points on sequence to work on */ + int lpos; /* position in endlist, startlist */ + int k1, k2, k3; /* start, mid, end in model */ + char t1, t2, t3; /* start, mid, end in state type */ + int s1, s2, s3; /* start, mid, end in sequence */ + float sc; /* score of segment optimal alignment */ + float ret_sc; /* optimal score over complete seq */ + int tlen; /* length needed for trace */ + int i, k, tpos; /* index in sequence, model, trace */ + + + /* Initialize. + */ + kassign = MallocOrDie (sizeof(int) * (L+1)); + tassign = MallocOrDie (sizeof(char)* (L+1)); + endlist = MallocOrDie (sizeof(int) * (L+1)); + startlist = MallocOrDie (sizeof(int) * (L+1)); + + lpos = 0; + startlist[lpos] = 1; + endlist[lpos] = L; + kassign[1] = 1; + kassign[L] = hmm->M; + tassign[1] = STS; /* temporary boundary condition! will become N or M */ + tassign[L] = STT; /* temporary boundary condition! will become M or C */ + + /* Recursive divide-and-conquer alignment. + */ + while (lpos >= 0) + { + /* Pop a segment off the stack */ + s1 = startlist[lpos]; + k1 = kassign[s1]; + t1 = tassign[s1]; + s3 = endlist[lpos]; + k3 = kassign[s3]; + t3 = tassign[s3]; + lpos--; + /* find optimal midpoint of segment */ + sc = get_wee_midpt(hmm, dsq, L, k1, t1, s1, k3, t3, s3, &k2, &t2, &s2); + kassign[s2] = k2; + tassign[s2] = t2; + /* score is valid on first pass */ + if (t1 == STS && t3 == STT) ret_sc = sc; + + /* push N-terminal segment on stack */ + if (t2 != STN && (s2 - s1 > 1 || (s2 - s1 == 1 && t1 == STS))) + { + lpos++; + startlist[lpos] = s1; + endlist[lpos] = s2; + } + /* push C-terminal segment on stack */ + if (t2 != STC && (s3 - s2 > 1 || (s3 - s2 == 1 && t3 == STT))) + { + lpos++; + startlist[lpos] = s2; + endlist[lpos] = s3; + } + + if (t2 == STN) + { /* if we see STN midpoint, we know the whole N-term is STN */ + for (; s2 >= s1; s2--) { + kassign[s2] = 1; + tassign[s2] = STN; + } + } + if (t2 == STC) + { /* if we see STC midpoint, we know whole C-term is STC */ + for (; s2 <= s3; s2++) { + kassign[s2] = hmm->M; + tassign[s2] = STC; + } + } + } + + /***************************************************************** + * Construct a traceback structure from kassign/tassign by interpolating + * necessary states. + * Trace allocation is as follows. We clearly need L emitting states. + * We also need nonemitting states as follows: + * STS,STN,STB,STE,STC,STT = 6 + * STD: count k2-k1-1 in kassign M->M's + * Also, count N->M's and M->C's (potential wing unfoldings)... + * ...and be careful to check wing unfoldings when there aren't + * any emitting N or C flanks! (bugfix, 2.1.1b) + *****************************************************************/ + + tlen = L + 6; + for (i = 1; i < L; i++) + { + if (tassign[i] == STM && tassign[i+1] == STM) + tlen += kassign[i+1] - kassign[i] - 1; + if (tassign[i] == STN && tassign[i+1] == STM) + tlen += kassign[i+1] - 1; + if (tassign[i] == STM && tassign[i+1] == STC) + tlen += hmm->M - kassign[i]; + } + if (tassign[1] == STM) tlen += kassign[1] - 1; + if (tassign[L] == STM) tlen += hmm->M - kassign[L]; + P7AllocTrace(tlen, &tr); + + tr->statetype[0] = STS; + tr->nodeidx[0] = 0; + tr->pos[0] = 0; + tr->statetype[1] = STN; + tr->nodeidx[1] = 0; + tr->pos[1] = 0; + tpos = 2; + + for (i = 1; i <= L; i++) + { + switch(tassign[i]) { + case STM: + /* check for first match state */ + if (tr->statetype[tpos-1] == STN) { + tr->statetype[tpos] = STB; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + tpos++; + /* check for wing unfolding */ + if (Prob2Score(hmm->begin[kassign[i]], hmm->p1) + INTSCALE <= hmm->bsc[kassign[i]]) + for (k = 1; k < kassign[i]; k++) { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k; + tr->pos[tpos] = 0; + tpos++; + } + } + /* do the match state itself */ + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = kassign[i]; + tr->pos[tpos] = i; + tpos++; + /* do any deletes necessary 'til next match */ + if (i < L && tassign[i+1] == STM && kassign[i+1] - kassign[i] > 1) + for (k = kassign[i] + 1; k < kassign[i+1]; k++) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k; + tr->pos[tpos] = 0; + tpos++; + } + /* check for last match state */ + if (i == L || tassign[i+1] == STC) { + /* check for wing unfolding */ + if (Prob2Score(hmm->end[kassign[i-1]], 1.) + INTSCALE <= hmm->esc[kassign[i-1]]) + for (k = kassign[i]+1; k <= hmm->M; k++) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k; + tr->pos[tpos] = 0; + tpos++; + } + /* add on the end state */ + tr->statetype[tpos] = STE; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + tpos++; + /* and a nonemitting C state */ + tr->statetype[tpos] = STC; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + tpos++; + } + break; + + case STI: + tr->statetype[tpos] = STI; + tr->nodeidx[tpos] = kassign[i]; + tr->pos[tpos] = i; + tpos++; + break; + + case STN: + tr->statetype[tpos] = STN; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = i; + tpos++; + break; + + case STC: + tr->statetype[tpos] = STC; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = i; + tpos++; + break; + + default: Die("Bogus state %s", Statetype(tassign[i])); + } + } + /* terminate the trace */ + tr->statetype[tpos] = STT; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + tr->tlen = tpos+1; + + *ret_tr = tr; + + free(kassign); + free(tassign); + free(startlist); + free(endlist); + return ret_sc; +} + + +/* Function: Plan7ESTViterbi() + * + * Purpose: Frameshift-tolerant alignment of protein model to cDNA EST. + * + * + */ +float +Plan7ESTViterbi(char *dsq, int L, struct plan7_s *hmm, struct dpmatrix_s **ret_mx) +{ + struct dpmatrix_s *mx; + int **xmx; + int **mmx; + int **imx; + int **dmx; + int i,k; + int sc; + int codon; + + /* Allocate a DP matrix with 0..L rows, 0..M+1 columns. + */ + mx = AllocPlan7Matrix(L+1, hmm->M, &xmx, &mmx, &imx, &dmx); + + /* Initialization of the zero row (DNA sequence of length 0) + * Note that xmx[i][stN] = 0 by definition for all i, + * and xmx[i][stT] = xmx[i][stC], so neither stN nor stT need + * to be calculated in DP matrices. + */ + xmx[0][XMN] = 0; /* S->N, p=1 */ + xmx[0][XMB] = hmm->xsc[XTN][MOVE]; /* S->N->B, no N-tail */ + xmx[0][XME] = xmx[0][XMC] = xmx[0][XMJ] = -INFTY; /* need seq to get here */ + for (k = 0; k <= hmm->M; k++) + mmx[0][k] = imx[0][k] = dmx[0][k] = -INFTY; /* need seq to get here */ + + /* Initialization of the first row (DNA sequence of length 1); + * only N state can make this nucleotide. + */ + xmx[1][XMN] = xmx[0][XMN] + hmm->xsc[XTN][LOOP]; + xmx[1][XMB] = xmx[1][XMN] + hmm->xsc[XTN][MOVE]; + xmx[0][XME] = xmx[0][XMC] = xmx[0][XMJ] = -INFTY; /* need 2 nt to get here */ + for (k = 0; k <= hmm->M; k++) + mmx[0][k] = imx[0][k] = dmx[0][k] = -INFTY; /* need 2 nt to get into model */ + + /* Recursion. Done as a pull. + * Note some slightly wasteful boundary conditions: + * tsc[0] = -INFTY for all eight transitions (no node 0) + * D_M and I_M are wastefully calculated (they don't exist) + */ + for (i = 2; i <= L; i++) { + mmx[i][0] = imx[i][0] = dmx[i][0] = -INFTY; + + /* crude calculation of lookup value for codon */ + if (i > 2) { + if (dsq[i-2] < 4 && dsq[i-1] < 4 && dsq[i] < 4) + codon = dsq[i-2] * 16 + dsq[i-1] * 4 + dsq[i]; + else + codon = 64; /* ambiguous codon; punt */ + } + + for (k = 1; k <= hmm->M; k++) { + /* match state */ + if (i > 2) { + mmx[i][k] = mmx[i-3][k-1] + hmm->tsc[k-1][TMM]; + if ((sc = imx[i-3][k-1] + hmm->tsc[k-1][TIM]) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = xmx[i-3][XMB] + hmm->bsc[k]) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = dmx[i-3][k-1] + hmm->tsc[k-1][TDM]) > mmx[i][k]) + mmx[i][k] = sc; + mmx[i][k] += hmm->dnam[codon][k]; + } + /* -1 frameshifts into match state */ + if ((sc = mmx[i-2][k-1] + hmm->tsc[k-1][TMM] + hmm->dna2) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = imx[i-2][k-1] + hmm->tsc[k-1][TIM] + hmm->dna2) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = xmx[i-2][XMB] + hmm->bsc[k] + hmm->dna2) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = dmx[i-2][k-1] + hmm->tsc[k-1][TDM] + hmm->dna2) > mmx[i][k]) + mmx[i][k] = sc; + + /* +1 frameshifts into match state */ + if (i > 3) { + if ((sc = mmx[i-4][k-1] + hmm->tsc[k-1][TMM] + hmm->dna4) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = imx[i-4][k-1] + hmm->tsc[k-1][TIM] + hmm->dna4) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = xmx[i-4][XMB] + hmm->bsc[k] + hmm->dna4) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = dmx[i-4][k-1] + hmm->tsc[k-1][TDM] + hmm->dna4) > mmx[i][k]) + mmx[i][k] = sc; + } + /* delete state */ + dmx[i][k] = mmx[i][k-1] + hmm->tsc[k-1][TMD]; + if ((sc = dmx[i][k-1] + hmm->tsc[k-1][TDD]) > dmx[i][k]) + dmx[i][k] = sc; + + /* insert state */ + if (i > 2) { + imx[i][k] = mmx[i-3][k] + hmm->tsc[k][TMI]; + if ((sc = imx[i-3][k] + hmm->tsc[k][TII]) > imx[i][k]) + imx[i][k] = sc; + imx[i][k] += hmm->dnai[codon][k]; + } + + /* -1 frameshifts into insert state */ + if ((sc = mmx[i-2][k] + hmm->tsc[k][TMI] + hmm->dna2) > imx[i][k]) + imx[i][k] = sc; + if ((sc = imx[i-2][k] + hmm->tsc[k][TII] + hmm->dna2) > imx[i][k]) + imx[i][k] = sc; + + /* +1 frameshifts into insert state */ + if (i > 4) { + if ((sc = mmx[i-4][k] + hmm->tsc[k][TMI] + hmm->dna4) > imx[i][k]) + imx[i][k] = sc; + if ((sc = imx[i-4][k] + hmm->tsc[k][TII] + hmm->dna4) > imx[i][k]) + imx[i][k] = sc; + } + } + /* Now the special states. Order is important here. + * remember, C and J emissions are zero score by definition, + */ + /* N state: +1 nucleotide */ + xmx[i][XMN] = xmx[i-1][XMN] + hmm->xsc[XTN][LOOP]; + /* E state: collect from M's, and last D */ + xmx[i][XME] = dmx[i][hmm->M]; /* transition prob from last D = 1.0 */ + for (k = 1; k <= hmm->M; k++) + if ((sc = mmx[i][k] + hmm->esc[k]) > xmx[i][XME]) + xmx[i][XME] = sc; + /* J state: +1 nucleotide */ + xmx[i][XMJ] = xmx[i-1][XMJ] + hmm->xsc[XTJ][LOOP]; + if ((sc = xmx[i][XME] + hmm->xsc[XTE][LOOP]) > xmx[i][XMJ]) + xmx[i][XMJ] = sc; + /* B state: collect from N,J */ + xmx[i][XMB] = xmx[i][XMN] + hmm->xsc[XTN][MOVE]; + if ((sc = xmx[i][XMJ] + hmm->xsc[XTJ][MOVE]) > xmx[i][XMB]) + xmx[i][XMB] = sc; + /* C state: +1 nucleotide */ + xmx[i][XMC] = xmx[i-1][XMC] + hmm->xsc[XTC][LOOP]; + if ((sc = xmx[i][XME] + hmm->xsc[XTE][MOVE]) > xmx[i][XMC]) + xmx[i][XMC] = sc; + } + + sc = xmx[L][XMC] + hmm->xsc[XTC][MOVE]; + + if (ret_mx != NULL) *ret_mx = mx; + else FreePlan7Matrix(mx); + + return Scorify(sc); /* the total Viterbi score. */ +} + + + +/* Function: get_wee_midpt() + * Date: SRE, Wed Mar 4 08:27:11 1998 [St. Louis] + * + * Purpose: The heart of the divide and conquer algorithm + * for P7WeeViterbi(). This function is called + * recursively to find successive optimal midpoints + * in the alignment matrix. See P7WeeViterbi() for + * further comments on the assumptions of this algorithm. + * + * Args: hmm - the model, set up for integer scores + * dsq - the sequence, digitized + * L - length of the sequence + * k1 - model node to start with, 1..M + * t1 - state type to start with, STM | STI | STN | STC; STS to start + * s1 - sequence position to start with, 1..L; 1 to start + * k3 - model node to end with, 1..M + * t3 - state type to end with, STM | STI | STN | STC; STT to start + * s3 - sequence position to end with, 1..L; L to start + * ret_k2 - RETURN: optimal midpoint, node position in model + * ret_t2 - RETURN: optimal midpoint, state type + * ret_s2 - RETURN: optimal midpoint, sequence position + * + * Returns: score of optimal alignment, in bits. + */ +static float +get_wee_midpt(struct plan7_s *hmm, char *dsq, int L, + int k1, char t1, int s1, + int k3, char t3, int s3, + int *ret_k2, char *ret_t2, int *ret_s2) +{ + struct dpmatrix_s *fwd; + struct dpmatrix_s *bck; + int **xmx; /* convenience ptr into special states */ + int **mmx; /* convenience ptr into match states */ + int **imx; /* convenience ptr into insert states */ + int **dmx; /* convenience ptr into delete states */ + int k2; + char t2; + int s2; + int cur, prv, nxt; /* current, previous, next row index (0 or 1)*/ + int i,k; /* indices for seq, model */ + int sc; /* integer score */ + int max; /* maximum integer score */ + int start; /* s1 to start at (need, for STS special case) */ + + + /* Choose our midpoint. + * Special cases: s1, s3 adjacent and t1 == STS: s2 = s1 + * s1, s3 adjacent and t3 == STT: s2 = s3 + * (where we must replace STS, STT eventually) + */ + s2 = s1 + (s3-s1) / 2; + if (s3-s1 == 1 && t1 == STS) s2 = s1; + if (s3-s1 == 1 && t3 == STT) s2 = s3; + + /* STS is a special case. STS aligns to row zero by convention, + * but we'll be passed s1=1, t1=STS. We have to init on row + * zero then start DP on row 1. + */ + start = (t1 == STS) ? 0 : s1; + + /* Allocate our forward two rows. + * Initialize row zero. + */ + fwd = AllocPlan7Matrix(2, hmm->M, &xmx, &mmx, &imx, &dmx); + cur = start%2; + xmx[cur][XMN] = xmx[cur][XMB] = -INFTY; + xmx[cur][XME] = xmx[cur][XMC] = -INFTY; + for (k = k1; k <= k3; k++) + mmx[cur][k] = imx[cur][k] = dmx[cur][k] = -INFTY; + + /* Where to put our zero for our start point... + * (only possible to start on an emitting state; J disallowed) + */ + switch (t1) { + case STM: mmx[cur][k1] = 0; break; + case STI: imx[cur][k1] = 0; break; + case STN: xmx[cur][XMN] = 0; break; + case STC: xmx[cur][XMC] = 0; break; + case STS: xmx[cur][XMN] = 0; break; + default: Die("you can't init get_wee_midpt with a %s\n", Statetype(t1)); + } + + /* Still initializing. + * Deal with pulling horizontal matrix moves in initial row. + * These are any transitions to nonemitters: + * STM-> E, D + * STI-> none + * STN-> B + * STC-> (T, but we never observe this in the forward pass of a d&c) + * STE-> C + * STS-> (N, already implied by setting xmx[cur][XMN] = 0) + * STB-> M + */ + if (t1 == STM) + { + for (k = k1+1; k <= k3; k++) + { /* transits into STD */ + dmx[cur][k] = -INFTY; + if ((sc = mmx[cur][k-1] + hmm->tsc[k-1][TMD]) > -INFTY) + dmx[cur][k] = sc; + if ((sc = dmx[cur][k-1] + hmm->tsc[k-1][TDD]) > dmx[cur][k]) + dmx[cur][k] = sc; + } + /* transit into STE */ + xmx[cur][XME] = -INFTY; + if ((sc = mmx[cur][k1] + hmm->esc[k1]) > -INFTY) + xmx[cur][XME] = sc; + } + /* transit into STB from STN */ + xmx[cur][XMB] = -INFTY; + if ((sc = xmx[cur][XMN] + hmm->xsc[XTN][MOVE]) > -INFTY) + xmx[cur][XMB] = sc; + /* transit into STC from STE */ + xmx[cur][XMC] = -INFTY; + if ((sc = xmx[cur][XME] + hmm->xsc[XTE][MOVE]) > -INFTY) + xmx[cur][XMC] = sc; + + /* Done initializing. + * Start recursive DP; sweep forward to chosen s2 midpoint. Done as a pull. + */ + for (i = start+1; i <= s2; i++) { + cur = i % 2; + prv = !cur; + + mmx[cur][k1] = imx[cur][k1] = dmx[cur][k1] = -INFTY; + + /* Insert state in column k1, and B->M transition in k1. + */ + if (k1 < hmm->M) { + imx[cur][k1] = -INFTY; + if ((sc = mmx[prv][k1] + hmm->tsc[k1][TMI]) > -INFTY) + imx[cur][k1] = sc; + if ((sc = imx[prv][k1] + hmm->tsc[k1][TII]) > imx[cur][k1]) + imx[cur][k1] = sc; + if (hmm->isc[(int) dsq[i]][k1] != -INFTY) + imx[cur][k1] += hmm->isc[(int) dsq[i]][k1]; + else + imx[cur][k1] = -INFTY; + } + if ((sc = xmx[prv][XMB] + hmm->bsc[k1]) > -INFTY) + mmx[cur][k1] = sc; + if (hmm->msc[(int) dsq[i]][k1] != -INFTY) + mmx[cur][k1] += hmm->msc[(int) dsq[i]][k1]; + else + mmx[cur][k1] = -INFTY; + + /* Main chunk of recursion across model positions + */ + for (k = k1+1; k <= k3; k++) { + /* match state */ + mmx[cur][k] = -INFTY; + if ((sc = mmx[prv][k-1] + hmm->tsc[k-1][TMM]) > -INFTY) + mmx[cur][k] = sc; + if ((sc = imx[prv][k-1] + hmm->tsc[k-1][TIM]) > mmx[cur][k]) + mmx[cur][k] = sc; + if ((sc = xmx[prv][XMB] + hmm->bsc[k]) > mmx[cur][k]) + mmx[cur][k] = sc; + if ((sc = dmx[prv][k-1] + hmm->tsc[k-1][TDM]) > mmx[cur][k]) + mmx[cur][k] = sc; + if (hmm->msc[(int) dsq[i]][k] != -INFTY) + mmx[cur][k] += hmm->msc[(int) dsq[i]][k]; + else + mmx[cur][k] = -INFTY; + + /* delete state */ + dmx[cur][k] = -INFTY; + if (k < hmm->M) { + if ((sc = mmx[cur][k-1] + hmm->tsc[k-1][TMD]) > -INFTY) + dmx[cur][k] = sc; + if ((sc = dmx[cur][k-1] + hmm->tsc[k-1][TDD]) > dmx[cur][k]) + dmx[cur][k] = sc; + } + + /* insert state */ + imx[cur][k] = -INFTY; + if (k < hmm->M) { + if ((sc = mmx[prv][k] + hmm->tsc[k][TMI]) > -INFTY) + imx[cur][k] = sc; + if ((sc = imx[prv][k] + hmm->tsc[k][TII]) > imx[cur][k]) + imx[cur][k] = sc; + if (hmm->isc[(int) dsq[i]][k] != -INFTY) + imx[cur][k] += hmm->isc[(int) dsq[i]][k]; + else + imx[cur][k] = -INFTY; + } + } + /* N state */ + xmx[cur][XMN] = -INFTY; + if ((sc = xmx[prv][XMN] + hmm->xsc[XTN][LOOP]) > -INFTY) + xmx[cur][XMN] = sc; + /* E state */ + xmx[cur][XME] = -INFTY; + for (k = k1; k <= k3 && k <= hmm->M; k++) + if ((sc = mmx[cur][k] + hmm->esc[k]) > xmx[cur][XME]) + xmx[cur][XME] = sc; + /* B state */ + xmx[cur][XMB] = -INFTY; + if ((sc = xmx[cur][XMN] + hmm->xsc[XTN][MOVE]) > -INFTY) + xmx[cur][XMB] = sc; + /* C state */ + xmx[cur][XMC] = -INFTY; + if ((sc = xmx[prv][XMC] + hmm->xsc[XTC][LOOP]) > -INFTY) + xmx[cur][XMC] = sc; + if ((sc = xmx[cur][XME] + hmm->xsc[XTE][MOVE]) > xmx[cur][XMC]) + xmx[cur][XMC] = sc; + } + + /* Row s2%2 in fwd matrix now contains valid scores from s1 (start) to s2, + * with J transitions disallowed (no cycles through model). + */ + + /***************************************************************** + * Backwards pass. + *****************************************************************/ + + /* Allocate our backwards two rows. Init last row. + */ + bck = AllocPlan7Matrix(2, hmm->M, &xmx, &mmx, &imx, &dmx); + nxt = s3%2; + xmx[nxt][XMN] = xmx[nxt][XMB] = -INFTY; + xmx[nxt][XME] = xmx[nxt][XMC] = -INFTY; + for (k = k1; k <= k3 + 1; k++) + mmx[nxt][k] = imx[nxt][k] = dmx[nxt][k] = -INFTY; + cur = !nxt; + mmx[cur][k3+1] = imx[cur][k3+1] = dmx[cur][k3+1] = -INFTY; + + /* Where to put the zero for our end point on last row. + */ + switch (t3) { + case STM: mmx[nxt][k3] = 0; break; + case STI: imx[nxt][k3] = 0; break; + case STN: xmx[nxt][XMN] = 0; break; + case STC: xmx[nxt][XMC] = 0; break; /* must be an emitting C */ + case STT: xmx[nxt][XMC] = hmm->xsc[XTC][MOVE]; break; /* C->T implied */ + default: Die("you can't init get_wee_midpt with a %s\n", Statetype(t3)); + } + + /* Still initializing. + * In the case t3==STT, there are a few horizontal moves possible + * on row s3, because STT isn't an emitter. All other states are + * emitters, so their connections have to be to the previous row s3-1. + */ + if (t3 == STT) + { /* E->C */ + xmx[nxt][XME] = xmx[nxt][XMC] + hmm->xsc[XTE][MOVE]; + /* M->E */ + for (k = k3; k >= k1; k--) { + mmx[nxt][k] = xmx[nxt][XME] + hmm->esc[k]; + if (s3 != s2) + mmx[nxt][k] += hmm->msc[(int)dsq[s3]][k]; + } + } + + /* Start recursive DP; sweep backwards to chosen s2 midpoint. + * Done as a pull. M, I scores at current row do /not/ include + * emission scores. Be careful of integer underflow. + */ + for (i = s3-1; i >= s2; i--) { + /* note i < L, so i+1 is always a legal index */ + cur = i%2; + nxt = !cur; + /* C pulls from C (T is special cased) */ + xmx[cur][XMC] = -INFTY; + if ((sc = xmx[nxt][XMC] + hmm->xsc[XTC][LOOP]) > -INFTY) + xmx[cur][XMC] = sc; + /* B pulls from M's */ + xmx[cur][XMB] = -INFTY; + for (k = k1; k <= k3; k++) + if ((sc = mmx[nxt][k] + hmm->bsc[k]) > xmx[cur][XMB]) + xmx[cur][XMB] = sc; + /* E pulls from C (J disallowed) */ + xmx[cur][XME] = -INFTY; + if ((sc = xmx[cur][XMC] + hmm->xsc[XTE][MOVE]) > -INFTY) + xmx[cur][XME] = sc; + /* N pulls from B, N */ + xmx[cur][XMN] = -INFTY; + if ((sc = xmx[cur][XMB] + hmm->xsc[XTN][MOVE]) > -INFTY) + xmx[cur][XMN] = sc; + if ((sc = xmx[nxt][XMN] + hmm->xsc[XTN][LOOP]) > xmx[cur][XMN]) + xmx[cur][XMN] = sc; + + /* Main recursion across model + */ + for (k = k3; k >= k1; k--) { + /* special case k == M */ + if (k == hmm->M) { + mmx[cur][k] = xmx[cur][XME]; /* p=1 transition to E by definition */ + dmx[cur][k] = -INFTY; /* doesn't exist */ + imx[cur][k] = -INFTY; /* doesn't exist */ + if (i != s2) + mmx[cur][k] += hmm->msc[(int)dsq[i]][k]; + continue; + } /* below this k < M, so k+1 is a legal index */ + + /* pull into match state */ + mmx[cur][k] = -INFTY; + if ((sc = xmx[cur][XME] + hmm->esc[k]) > -INFTY) + mmx[cur][k] = sc; + if ((sc = mmx[nxt][k+1] + hmm->tsc[k][TMM]) > mmx[cur][k]) + mmx[cur][k] = sc; + if ((sc = imx[nxt][k] + hmm->tsc[k][TMI]) > mmx[cur][k]) + mmx[cur][k] = sc; + if ((sc = dmx[cur][k+1] + hmm->tsc[k][TMD]) > mmx[cur][k]) + mmx[cur][k] = sc; + if (i != s2) + mmx[cur][k] += hmm->msc[(int)dsq[i]][k]; + + /* pull into delete state */ + dmx[cur][k] = -INFTY; + if ((sc = mmx[nxt][k+1] + hmm->tsc[k][TDM]) > -INFTY) + dmx[cur][k] = sc; + if ((sc = dmx[cur][k+1] + hmm->tsc[k][TDD]) > dmx[cur][k]) + dmx[cur][k] = sc; + /* pull into insert state */ + imx[cur][k] = -INFTY; + if ((sc = mmx[nxt][k+1] + hmm->tsc[k][TIM]) > -INFTY) + imx[cur][k] = sc; + if ((sc = imx[nxt][k] + hmm->tsc[k][TII]) > imx[cur][k]) + imx[cur][k] = sc; + if (i != s2) + imx[cur][k] += hmm->isc[(int)dsq[i]][k]; + + } + } + + /***************************************************************** + * DP complete; we have both forward and backward passes. Now we + * look across the s2 row and find the optimal emitting state. + *****************************************************************/ + + cur = s2%2; + max = -INFTY; + for (k = k1; k <= k3; k++) + { + if ((sc = fwd->mmx[cur][k] + bck->mmx[cur][k]) > max) + { k2 = k; t2 = STM; max = sc; } + if ((sc = fwd->imx[cur][k] + bck->imx[cur][k]) > max) + { k2 = k; t2 = STI; max = sc; } + } + if ((sc = fwd->xmx[cur][XMN] + bck->xmx[cur][XMN]) > max) + { k2 = 1; t2 = STN; max = sc; } + if ((sc = fwd->xmx[cur][XMC] + bck->xmx[cur][XMC]) > max) + { k2 = hmm->M; t2 = STC; max = sc; } + + /***************************************************************** + * Garbage collection, return. + *****************************************************************/ + + FreePlan7Matrix(fwd); + FreePlan7Matrix(bck); + *ret_k2 = k2; + *ret_t2 = t2; + *ret_s2 = s2; + return Scorify(max); +} + + +/* Function: P7ViterbiAlignAlignment() + * Date: SRE, Sat Jul 4 13:39:00 1998 [St. Louis] + * + * Purpose: Align a multiple alignment to an HMM without + * changing the multiple alignment itself. + * Adapted from P7Viterbi(). + * + * Heuristic; not a guaranteed optimal alignment. + * Guaranteeing an optimal alignment appears difficult. + * [cryptic note to myself:] In paths connecting to I* metastates, + * recursion breaks down; if there is a gap in the + * previous column for a given seq, we can't determine what state the + * I* metastate corresponds to for this sequence, unless we + * look back in the DP matrix. The lookback would either involve + * recursing back to the previous M* metastate (giving a + * O(MN^2) algorithm instead of O(MN)) or expanding the I* + * metastate into 3^nseq separate I* metastates to keep track + * of which of three states each seq is in. Since the second + * option blows up exponentially w/ nseq, it is not attractive. + * If the first option were used, the correct algorithm would be related to + * modelmakers.c:Maxmodelmaker(), but somewhat more difficult. + * + * The heuristic approach here is to calculate a "consensus" + * sequence from the alignment, and align the consensus to the HMM. + * Some hackery is employed, weighting transitions and emissions + * to make things work (re: con and mocc arrays). + * + * Args: aseq - aligned sequences + * ainfo - info for aseqs (includes alen, nseq, wgt) + * hmm - model to align to + * + * Returns: Traceback. Caller must free with P7FreeTrace(). + * pos[] contains alignment columns, indexed 1..alen. + * statetype[] contains metastates M*, etc. as STM, etc. + */ +struct p7trace_s * +P7ViterbiAlignAlignment(MSA *msa, struct plan7_s *hmm) +{ + struct dpmatrix_s *mx; /* Viterbi calculation lattice (two rows) */ + struct dpshadow_s *tb; /* shadow matrix of traceback pointers */ + struct p7trace_s *tr; /* RETURN: traceback */ + int **xmx, **mmx, **imx, **dmx; + char **xtb, **mtb, **itb, **dtb; + float **con; /* [1..alen][0..Alphabet_size-1], consensus counts */ + float *mocc; /* fractional occupancy of a column; used to weight transitions */ + int i; /* counter for columns */ + int k; /* counter for model positions */ + int idx; /* counter for seqs */ + int sym; /* counter for alphabet symbols */ + int sc; /* temp variable for holding score */ + float denom; /* total weight of seqs; used to "normalize" counts */ + int cur, prv; + + /* The "consensus" is a counts matrix, [1..alen][0..Alphabet_size-1]. + * Gaps are not counted explicitly, but columns with lots of gaps get + * less total weight because they have fewer counts. + */ + /* allocation */ + con = MallocOrDie(sizeof(float *) * (msa->alen+1)); + mocc = MallocOrDie(sizeof(float) * (msa->alen+1)); + for (i = 1; i <= msa->alen; i++) { + con[i] = MallocOrDie(sizeof(float) * Alphabet_size); + FSet(con[i], Alphabet_size, 0.0); + } + mocc[0] = -9999.; + /* initialization */ + /* note: aseq is off by one, 0..alen-1 */ + /* "normalized" to have a max total count of 1 per col */ + denom = FSum(msa->wgt, msa->nseq); + for (i = 1; i <= msa->alen; i++) + { + for (idx = 0; idx < msa->nseq; idx++) + if (! isgap(msa->aseq[idx][i-1])) + P7CountSymbol(con[i], SYMIDX(msa->aseq[idx][i-1]), msa->wgt[idx]); + FScale(con[i], Alphabet_size, 1./denom); + mocc[i] = FSum(con[i], Alphabet_size); + } + + /* Allocate a DP matrix with 2 rows, 0..M columns, + * and a shadow matrix with 0,1..alen rows, 0..M columns. + */ + mx = AllocPlan7Matrix(2, hmm->M, &xmx, &mmx, &imx, &dmx); + tb = AllocShadowMatrix(msa->alen+1, hmm->M, &xtb, &mtb, &itb, &dtb); + + /* Initialization of the zero row. + */ + xmx[0][XMN] = 0; /* S->N, p=1 */ + xtb[0][XMN] = STS; + xmx[0][XMB] = hmm->xsc[XTN][MOVE]; /* S->N->B, no N-tail */ + xtb[0][XMB] = STN; + xmx[0][XME] = xmx[0][XMC] = xmx[0][XMJ] = -INFTY; /* need seq to get here */ + tb->esrc[0] = 0; + xtb[0][XMC] = xtb[0][XMJ] = STBOGUS; + for (k = 0; k <= hmm->M; k++) { + mmx[0][k] = imx[0][k] = dmx[0][k] = -INFTY; /* need seq to get here */ + mtb[0][k] = itb[0][k] = dtb[0][k] = STBOGUS; + } + + /* Recursion. Done as a pull. + * Note some slightly wasteful boundary conditions: + * tsc[0] = -INFTY for all eight transitions (no node 0) + * D_M and I_M are wastefully calculated (they don't exist) + */ + for (i = 1; i <= msa->alen; i++) { + cur = i % 2; + prv = ! cur; + + mmx[cur][0] = imx[cur][0] = dmx[cur][0] = -INFTY; + mtb[i][0] = itb[i][0] = dtb[i][0] = STBOGUS; + + for (k = 1; k <= hmm->M; k++) { + /* match state */ + mmx[cur][k] = -INFTY; + mtb[i][k] = STBOGUS; + if (mmx[prv][k-1] > -INFTY && hmm->tsc[k-1][TMM] > -INFTY && + (sc = mmx[prv][k-1] + hmm->tsc[k-1][TMM]) > mmx[cur][k]) + { mmx[cur][k] = sc; mtb[i][k] = STM; } + if (imx[prv][k-1] > -INFTY && hmm->tsc[k-1][TIM] > -INFTY && + (sc = imx[prv][k-1] + hmm->tsc[k-1][TIM] * mocc[i-1]) > mmx[cur][k]) + { mmx[cur][k] = sc; mtb[i][k] = STI; } + if ((sc = xmx[prv][XMB] + hmm->bsc[k]) > mmx[cur][k]) + { mmx[cur][k] = sc; mtb[i][k] = STB; } + if (dmx[prv][k-1] > -INFTY && hmm->tsc[k-1][TDM] > -INFTY && + (sc = dmx[prv][k-1] + hmm->tsc[k-1][TDM]) > mmx[cur][k]) + { mmx[cur][k] = sc; mtb[i][k] = STD; } + /* average over "consensus" sequence */ + for (sym = 0; sym < Alphabet_size; sym++) + { + if (con[i][sym] > 0 && hmm->msc[sym][k] == -INFTY) { mmx[cur][k] = -INFTY; break; } + mmx[cur][k] += hmm->msc[sym][k] * con[i][sym]; + } + + /* delete state */ + dmx[cur][k] = -INFTY; + dtb[i][k] = STBOGUS; + if (mmx[cur][k-1] > -INFTY && hmm->tsc[k-1][TMD] > -INFTY && + (sc = mmx[cur][k-1] + hmm->tsc[k-1][TMD]) > dmx[cur][k]) + { dmx[cur][k] = sc; dtb[i][k] = STM; } + if (dmx[cur][k-1] > -INFTY && hmm->tsc[k-1][TDD] > -INFTY && + (sc = dmx[cur][k-1] + hmm->tsc[k-1][TDD]) > dmx[cur][k]) + { dmx[cur][k] = sc; dtb[i][k] = STD; } + + /* insert state */ + if (k < hmm->M) { + imx[cur][k] = -INFTY; + itb[i][k] = STBOGUS; + if (mmx[prv][k] > -INFTY && hmm->tsc[k][TMI] > -INFTY && + (sc = mmx[prv][k] + hmm->tsc[k][TMI] * mocc[i]) > imx[cur][k]) + { imx[cur][k] = sc; itb[i][k] = STM; } + if (imx[prv][k] > -INFTY && hmm->tsc[k][TII] > -INFTY && + (sc = imx[prv][k] + hmm->tsc[k][TII] * mocc[i-1] * mocc[i]) > imx[cur][k]) + { imx[cur][k] = sc; itb[i][k] = STI; } + /* average over "consensus" sequence */ + for (sym = 0; sym < Alphabet_size; sym++) + { + if (con[i][sym] > 0 && hmm->isc[sym][k] == -INFTY) { imx[cur][k] = -INFTY; break; } + imx[cur][k] += hmm->isc[sym][k] * con[i][sym]; + } + } + } + + /* Now the special states. Order is important here. + * remember, N, C, and J emissions are zero score by definition. + */ + /* N state */ + xmx[cur][XMN] = -INFTY; + xtb[i][XMN] = STBOGUS; + if (xmx[prv][XMN] > -INFTY && hmm->xsc[XTN][LOOP] > -INFTY && + (sc = xmx[prv][XMN] + hmm->xsc[XTN][LOOP] * mocc[i]) > -INFTY) + { xmx[cur][XMN] = sc; xtb[i][XMN] = STN; } + /* E state */ + xmx[cur][XME] = -INFTY; + xtb[i][XME] = STBOGUS; + for (k = 1; k <= hmm->M; k++) + if (mmx[cur][k] > -INFTY && hmm->esc[k] > -INFTY && + (sc = mmx[cur][k] + hmm->esc[k]) > xmx[cur][XME]) + { xmx[cur][XME] = sc; tb->esrc[i] = k; } + + /* we don't check J state */ + /* B state; don't connect from J */ + xmx[cur][XMB] = -INFTY; + xtb[i][XMB] = STBOGUS; + if (xmx[cur][XMN] > -INFTY && hmm->xsc[XTN][MOVE] > -INFTY && + (sc = xmx[cur][XMN] + hmm->xsc[XTN][MOVE]) > xmx[cur][XMB]) + { xmx[cur][XMB] = sc; xtb[i][XMB] = STN; } + + /* C state */ + xmx[cur][XMC] = -INFTY; + xtb[i][XMC] = STBOGUS; + if (xmx[prv][XMC] > -INFTY && hmm->xsc[XTC][LOOP] > -INFTY && + (sc = xmx[prv][XMC] + hmm->xsc[XTC][LOOP] * mocc[i]) > -INFTY) + { xmx[cur][XMC] = sc; xtb[i][XMC] = STC; } + if (xmx[cur][XME] > -INFTY && hmm->xsc[XTE][MOVE] > -INFTY && + (sc = xmx[cur][XME] + hmm->xsc[XTE][MOVE]) > xmx[cur][XMC]) + { xmx[cur][XMC] = sc; xtb[i][XMC] = STE; } + } + /* T state (not stored in mx) */ + sc = xmx[msa->alen%2][XMC] + hmm->xsc[XTC][MOVE]; + + /* do the traceback */ + tr = ShadowTrace(tb, hmm, msa->alen); + /* cleanup and return */ + FreePlan7Matrix(mx); + FreeShadowMatrix(tb); + for (i = 1; i <= msa->alen; i++) + free(con[i]); + free(con); + free(mocc); + + return tr; +} + + + +/* Function: ShadowTrace() + * Date: SRE, Sun Jul 5 11:38:24 1998 [St. Louis] + * + * Purpose: Given a shadow matrix, trace it back, and return + * the trace. + * + * Args: tb - shadow matrix of traceback pointers + * hmm - the model (needed for figuring out wing unfolding) + * L - sequence length + * + * Returns: traceback. Caller must free w/ P7FreeTrace(). + */ +struct p7trace_s * +ShadowTrace(struct dpshadow_s *tb, struct plan7_s *hmm, int L) +{ + struct p7trace_s *tr; + int curralloc; /* current allocated length of trace */ + int tpos; /* position in trace */ + int i; /* position in seq (1..N) */ + int k; /* position in model (1..M) */ + char nxtstate; /* next state to assign in traceback */ + + /* Overallocate for the trace. + * S-N-B- ... - E-C-T : 6 states + L is minimum trace; + * add L more as buffer. + */ + curralloc = L * 2 + 6; + P7AllocTrace(curralloc, &tr); + + /* Initialization of trace + * We do it back to front; ReverseTrace() is called later. + */ + tr->statetype[0] = STT; + tr->nodeidx[0] = 0; + tr->pos[0] = 0; + tpos = 1; + i = L; /* current i (seq pos) we're trying to assign */ + k = 0; /* current k (model pos) we're trying to assign */ + nxtstate = STC; /* assign the C state first, for C->T */ + + /* Traceback + */ + while (nxtstate != STS) { + switch (nxtstate) { + case STM: + tr->statetype[tpos] = STM; + nxtstate = tb->mtb[i][k]; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + tpos++; + break; + + case STI: + tr->statetype[tpos] = STI; + nxtstate = tb->itb[i][k]; + tr->nodeidx[tpos] = k; + tr->pos[tpos] = i--; + tpos++; + break; + + case STD: + tr->statetype[tpos] = STD; + nxtstate = tb->dtb[i][k]; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = 0; + tpos++; + break; + + case STN: + tr->statetype[tpos] = STN; + nxtstate = tb->xtb[i][XMN]; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = (nxtstate == STN) ? i-- : 0; /* N->N; 2nd one emits. */ + tpos++; + break; + + case STB: + /* Check for wing unfolding */ + if (Prob2Score(hmm->begin[k+1], hmm->p1) + 1 * INTSCALE <= hmm->bsc[k+1]) + while (k > 0) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = 0; + tpos++; + if (tpos == curralloc) + { /* grow trace if necessary */ + curralloc += L; + P7ReallocTrace(tr, curralloc); + } + } + + tr->statetype[tpos] = STB; + nxtstate = tb->xtb[i][XMB]; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + tpos++; + break; + + case STJ: + tr->statetype[tpos] = STJ; + nxtstate = tb->xtb[i][XMJ]; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = (nxtstate == STJ) ? i-- : 0; /* J->J; 2nd one emits. */ + tpos++; + break; + + case STE: + tr->statetype[tpos] = STE; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + k = tb->esrc[i]; + nxtstate = STM; + tpos++; + /* check for wing unfolding */ + if (Prob2Score(hmm->end[k], 1.) + 1*INTSCALE <= hmm->esc[k]) + { + int dk; /* need a tmp k while moving thru delete wing */ + for (dk = hmm->M; dk > k; dk--) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = dk; + tr->pos[tpos] = 0; + tpos++; + if (tpos == curralloc) + { /* grow trace if necessary */ + curralloc += L; + P7ReallocTrace(tr, curralloc); + } + } + } + break; + + case STC: + tr->statetype[tpos] = STC; + nxtstate = tb->xtb[i][XMC]; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = (nxtstate == STC) ? i-- : 0; /* C->C; 2nd one emits. */ + tpos++; + break; + + default: + Die("HMMER: Bad state (%s) in ShadowTrace()\n", Statetype(nxtstate)); + + } /* end switch over nxtstate */ + + if (tpos == curralloc) + { /* grow trace if necessary */ + curralloc += L; + P7ReallocTrace(tr, curralloc); + } + + } /* end traceback, just before assigning S state */ + + tr->statetype[tpos] = STS; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + tr->tlen = tpos + 1; + + P7ReverseTrace(tr); + return tr; +} + + + +/* Function: PostprocessSignificantHit() + * Date: SRE, Wed Dec 20 12:11:01 2000 [StL] + * + * Purpose: Add a significant hit to per-seq and per-domain hit + * lists, after postprocessing the scores appropriately, + * and making sure per-domain scores add up to the per-seq + * score. + * + * [doesn't really belong in core_algorithms.c, because + * it's more of a hack than an algorithm, but on the other + * hand it's now part of the core of how HMMER scores + * things. Maybe there should be a core_hacks.c.] + * + * Given: active hit lists for per-seq and per-domain + * scores (e.g. hmmpfam and hmmsearch, collating their + * results), and a new hit that's significant enough + * that it may need to be reported in final output. + * + * Breaks the traceback into individual domain traces; + * scores each one of them, then applies null2 correction + * for biased composition. Recalculates the per-seq score + * as the sum of the per-domain scores. Stores the hits + * in the lists, for eventual sorting and output by the + * caller. + * + * Notes: In principle we've got the score, and a pvalue, and a traceback + * by doing the Viterbi algorithm, right? What else is left + * to do? Well, in practice, life is more complicated, because + * of the trace-dependent null2 score correction. + * + * After a null2 score correction is carried out on + * each domain (the default) the number of detected domains + * with scores > 0 may have decreased. We want the + * global (per-seq) hit list to have the recalculated number of + * domains, not necessarily what Viterbi gave us. + * + * Also, since we want the global score to be the sum of + * the individual domains, but the null2 correction is + * applied to each domain individually, we have to calculate + * an adjusted global score. (To do otherwise invites + * subtle inconsistencies; xref bug 2.) + * + * We don't have final evalues, so we may put a few + * more hits into the hit lists than we end up reporting. + * The main output routine is responsible for final + * enforcement of the thresholds. + * + * This routine is NOT THREADSAFE. When multithreaded, + * with using shared ghit/dhit output buffers, calls to + * PostprocessSignificantHit() need to be protected. + * + * Args: ghit - an active list of per-seq (global) hits + * dhit - an active list of per-domain hits + * tr - the significant HMM/seq traceback we'll report on + * hmm - ptr to the HMM + * dsq - digitized sequence (1..L) + * L - length of dsq + * seqname - name of sequence (same as targname, in hmmsearch) + * seqacc - seq's accession (or NULL) + * seqdesc - seq's description (or NULL) + * do_forward - TRUE if we've already calculated final per-seq score + * sc_override - per-seq score to use if do_forward is TRUE + * do_null2 - TRUE to apply the null2 scoring correction + * thresh - contains the threshold/cutoff information. + * hmmpfam_mode - TRUE if called by hmmpfam, else assumes hmmsearch; + * affects how the lists' sort keys are set. + * + * Returns: (void) + */ +void +PostprocessSignificantHit(struct tophit_s *ghit, + struct tophit_s *dhit, + struct p7trace_s *tr, + struct plan7_s *hmm, + char *dsq, + int L, + char *seqname, + char *seqacc, + char *seqdesc, + int do_forward, + float sc_override, + int do_null2, + struct threshold_s *thresh, + int hmmpfam_mode) +{ + struct p7trace_s **tarr; /* array of per-domain traces */ + struct fancyali_s *ali; /* alignment of a domain */ + int ntr; /* number of domain traces from Viterbi */ + int tidx; /* index for traces (0..ntr-1) */ + int ndom; /* # of domains accepted in sequence */ + int didx; /* index for domains (1..ndom) */ + int k1, k2; /* start, stop coord in model */ + int i1, i2; /* start, stop in sequence */ + float whole_sc; /* whole sequence score = \sum domain scores */ + float *score; /* array of raw scores for each domain */ + int *usedomain; /* TRUE if this domain is accepted */ + double whole_pval; + double pvalue; + double sortkey; + + /* Break the trace into one or more individual domains. + */ + TraceDecompose(tr, &tarr, &ntr); + if (ntr == 0) Die("TraceDecompose() screwup"); /* "can't happen" (!) */ + + /* Rescore each domain, apply null2 correction if asked. + * Mark positive-scoring ones (we'll definitely report those), + * and include their score in the whole sequence score. + */ + score = MallocOrDie(sizeof(float) * ntr); + usedomain = MallocOrDie(sizeof(int) * ntr); + ndom = 0; + whole_sc = 0.; + for (tidx = 0; tidx < ntr; tidx++) + { + score[tidx] = P7TraceScore(hmm, dsq, tarr[tidx]); + if (do_null2) score[tidx] -= TraceScoreCorrection(hmm, tarr[tidx], dsq); + if (score[tidx] > 0.0) { + usedomain[tidx] = TRUE; + ndom++; + whole_sc += score[tidx]; + } else + usedomain[tidx] = FALSE; + } + + /* Make sure at least one positive scoring domain is in + * the trace. If not, invoke "weak single domain" rules: + * we will always report at least one domain per sequence, even + * if it has a negative score. (HMMER's Plan7 architecture can report + * one negative scoring domain but not more.) + */ + if (ndom == 0) { + tidx = FMax(score, ntr); + usedomain[tidx] = TRUE; + whole_sc = score[tidx]; + ndom = 1; + } + + /* Implement --do_forward: override the trace-dependent sum-of-domain + * whole score, use the P7Forward() score that the called passed + * us instead. This is a hack; null2 is trace-dependent and + * thus undefined for P7Forward() scoring; see commentary in hmmpfam.c. + */ + if (do_forward) whole_sc = sc_override; + + /* Go through and put all the accepted domains into the hit list. + */ + whole_pval = PValue(hmm, whole_sc); + for (tidx = 0, didx = 1; tidx < ntr; tidx++) { + if (! usedomain[tidx]) continue; + + TraceSimpleBounds(tarr[tidx], &i1, &i2, &k1, &k2); + pvalue = PValue(hmm, score[tidx]); + + if (pvalue <= thresh->domE && score[tidx] >= thresh->domT) { + ali = CreateFancyAli(tarr[tidx], hmm, dsq, seqname); + + if (hmmpfam_mode) + sortkey = -1.*(double)i1; /* hmmpfam: sort on position in seq */ + else + sortkey = score[tidx]; /* hmmsearch: sort on E (monotonic w/ sc) */ + + RegisterHit(dhit, sortkey, + pvalue, score[tidx], + whole_pval, whole_sc, + hmmpfam_mode ? hmm->name : seqname, + hmmpfam_mode ? hmm->acc : seqacc, + hmmpfam_mode ? hmm->desc : seqdesc, + i1,i2, L, + k1,k2, hmm->M, + didx,ndom,ali); + } + didx++; + } + + /* Now register the global hit, with the domain-derived score. + */ + + /* sorting: + * hmmpfam has to worry that score and E-value are not monotonic + * when multiple HMMs (with different EVD parameters) are potential + * targets. Therefore in hmmpfam_mode we apply a weird hack + * to sort primarily on E-value, but on score + * for really good hits with E=0.0... works because we can + * assume 100000. > -log(DBL_MIN). + * hmmsearch simply sorts on score (which for a single HMM, we + * know is monotonic with E-value). + */ + if (hmmpfam_mode) + sortkey = (whole_pval > 0.0) ? -1.*log(whole_pval) : 100000. + whole_sc; + else + sortkey = whole_sc; + + /* Note: we've recalculated whole_sc and it may have decreased + * after the null2 correction was applied. For Pfam GA, TC, + * or NC cutoffs, we have to be sure that everything on the + * hitlist is correct (the hmmpfam output routine assumes it, + * otherwise it would have to reload each HMM to get its + * cutoffs). In all other cases, though, we don't care if + * the hit list has a bit too many things on it, because the + * output routine in hmmsearch or hmmpfam will check against + * the cutoffs. Hence we only need to check against globT + * (it may be set by GA, TC, or NC) but not globE. + * - SRE, CSHL genome mtg May 2001 + */ + if (whole_sc >= thresh->globT) { + RegisterHit(ghit, sortkey, + whole_pval, whole_sc, + 0., 0., /* no mother seq */ + hmmpfam_mode ? hmm->name : seqname, + hmmpfam_mode ? hmm->acc : seqacc, + hmmpfam_mode ? hmm->desc : seqdesc, + 0,0,0, /* seq positions */ + 0,0,0, /* HMM positions */ + 0, ndom, /* # domains info */ + NULL); /* alignment info */ + } + + /* Clean up and return. + */ + for (tidx = 0; tidx < ntr; tidx++) + P7FreeTrace(tarr[tidx]); + free(tarr); + free(score); + free(usedomain); + return; +} diff --git a/forester/archive/RIO/others/hmmer/src/debug.c b/forester/archive/RIO/others/hmmer/src/debug.c new file mode 100644 index 0000000..1044436 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/debug.c @@ -0,0 +1,368 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* debug.c + * Thu Nov 21 09:58:05 1996 + * + * Printing out or naming various useful things from HMMER + * innards. + * + * CVS $Id: debug.c,v 1.1.1.1 2005/03/22 08:33:58 cmzmasek Exp $ + */ + +#include +#include +#include +#include + +#include "structs.h" +#include "config.h" +#include "funcs.h" +#include "squid.h" + +/* Function: Statetype() + * + * Purpose: Returns the state type in text. + * Example: Statetype(S) = "S" + */ +char * +Statetype(char st) +{ + switch (st) { + case STS: return "S"; + case STN: return "N"; + case STB: return "B"; + case STM: return "M"; + case STD: return "D"; + case STI: return "I"; + case STE: return "E"; + case STJ: return "J"; + case STC: return "C"; + case STT: return "T"; + default: return "BOGUS"; + } +} + +/* Function: AlphabetType2String() + * Date: SRE, Sun Dec 24 11:33:40 2000 [St. Louis] + * + * Purpose: Returns a string "protein" for hmmAMINO, + * "nucleic acid" for hmmNUCLEIC, etc... used + * for formatting diagnostics. + * + * Args: type - Alphabet type, e.g. hmmAMINO + * + * Returns: char * + */ +char * +AlphabetType2String(int type) +{ + switch (type) { + case hmmAMINO: return "protein"; + case hmmNUCLEIC: return "nucleic acid"; + case hmmNOTSETYET: return "unknown"; + default: return "BOGUS"; + } +} + + +/* Function: P7PrintTrace() + * + * Purpose: Print out a traceback structure. + * If hmm is non-NULL, also print transition and emission scores. + * + * Args: fp - stderr or stdout, often + * tr - trace structure to print + * hmm - NULL or hmm containing scores to print + * dsq - NULL or digitized sequence trace refers to. + */ +void +P7PrintTrace(FILE *fp, struct p7trace_s *tr, struct plan7_s *hmm, char *dsq) +{ + int tpos; /* counter for trace position */ + int sym; + int sc; + + if (hmm == NULL) { + fprintf(fp, "st node rpos - traceback len %d\n", tr->tlen); + fprintf(fp, "-- ---- ------\n"); + for (tpos = 0; tpos < tr->tlen; tpos++) { + fprintf(fp, "%1s %4d %6d\n", + Statetype(tr->statetype[tpos]), + tr->nodeidx[tpos], + tr->pos[tpos]); + } + } else { + if (!(hmm->flags & PLAN7_HASBITS)) + Die("oi, you can't print scores from that hmm, it's not ready."); + + sc = 0; + fprintf(fp, "st node rpos transit emission - traceback len %d\n", tr->tlen); + fprintf(fp, "-- ---- ------ ------- --------\n"); + for (tpos = 0; tpos < tr->tlen; tpos++) { + if (dsq != NULL) sym = (int) dsq[tr->pos[tpos]]; + + fprintf(fp, "%1s %4d %6d %7d", + Statetype(tr->statetype[tpos]), + tr->nodeidx[tpos], + tr->pos[tpos], + (tpos < tr->tlen-1) ? + TransitionScoreLookup(hmm, tr->statetype[tpos], tr->nodeidx[tpos], + tr->statetype[tpos+1], tr->nodeidx[tpos+1]) : 0); + + if (tpos < tr->tlen-1) + sc += TransitionScoreLookup(hmm, tr->statetype[tpos], tr->nodeidx[tpos], + tr->statetype[tpos+1], tr->nodeidx[tpos+1]); + + if (dsq != NULL) { + if (tr->statetype[tpos] == STM) + { + fprintf(fp, " %8d %c", hmm->msc[sym][tr->nodeidx[tpos]], + Alphabet[sym]); + sc += hmm->msc[sym][tr->nodeidx[tpos]]; + } + else if (tr->statetype[tpos] == STI) + { + fprintf(fp, " %8d %c", hmm->isc[sym][tr->nodeidx[tpos]], + (char) tolower((int) Alphabet[sym])); + sc += hmm->isc[sym][tr->nodeidx[tpos]]; + } + else if ((tr->statetype[tpos] == STN && tr->statetype[tpos-1] == STN) || + (tr->statetype[tpos] == STC && tr->statetype[tpos-1] == STC) || + (tr->statetype[tpos] == STJ && tr->statetype[tpos-1] == STJ)) + { + fprintf(fp, " %8d %c", 0, (char) tolower((int) Alphabet[sym])); + } + } else { + fprintf(fp, " %8s %c", "-", '-'); + } + + + fputs("\n", fp); + } + fprintf(fp, " ------- --------\n"); + fprintf(fp, " total: %6d\n\n", sc); + } +} + +/* Function: P7PrintPrior() + * + * Purpose: Print out a Plan 7 prior structure. + */ +void +P7PrintPrior(FILE *fp, struct p7prior_s *pri) +{ + int q, x; /* counters for mixture component, element */ + + if (pri->strategy == PRI_DCHLET) fputs("Dirichlet\n", fp); + else if (pri->strategy == PRI_PAM) fputs("PAM\n", fp); + else Die("No such strategy."); + + if (Alphabet_type == hmmAMINO) fputs("Amino\n", fp); + else if (Alphabet_type == hmmNUCLEIC) fputs("Nucleic\n", fp); + + /* Transitions + */ + fprintf(fp, "\n%d\n", pri->tnum); + for (q = 0; q < pri->tnum; q++) + { + fprintf(fp, "%.4f\n", pri->tq[q]); + for (x = 0; x < 7; x++) + fprintf(fp, "%.4f ", pri->t[q][x]); + fputs("\n", fp); + } + + /* Match emissions + */ + fprintf(fp, "\n%d\n", pri->mnum); + for (q = 0; q < pri->mnum; q++) + { + fprintf(fp, "%.4f\n", pri->mq[q]); + for (x = 0; x < Alphabet_size; x++) + fprintf(fp, "%.4f ", pri->m[q][x]); + fputs("\n", fp); + } + + /* Insert emissions + */ + fprintf(fp, "\n%d\n", pri->inum); + for (q = 0; q < pri->inum; q++) + { + fprintf(fp, "%.4f\n", pri->iq[q]); + for (x = 0; x < Alphabet_size; x++) + fprintf(fp, "%.4f ", pri->i[q][x]); + fputs("\n", fp); + } +} + +/* Function: TraceVerify() + * Date: SRE, Mon Feb 2 07:48:52 1998 [St. Louis] + * + * Purpose: Check a traceback structure for internal consistency. + * Used in Shiva testsuite, for example. + * + * Args: tr - traceback to verify + * M - length of HMM + * N - length of sequence + * + * Returns: 1 if OK. 0 if not. + */ +int +TraceVerify(struct p7trace_s *tr, int M, int N) +{ + int tpos; /* position in trace */ + int k; /* current position in HMM nodes 1..M */ + int i; /* current position in seq 1..N */ + int nn, nc, nj; /* number of STN's, STC's, STJ's seen */ + int nm; /* number of STM's seen */ + + /* Basic checks on ends. + */ + if (tr->statetype[0] != STS) return 0; + if (tr->statetype[1] != STN) return 0; + if (tr->statetype[tr->tlen-2] != STC) return 0; + if (tr->statetype[tr->tlen-1] != STT) return 0; + if (tr->pos[1] != 0) return 0; + + /* Check for consistency throughout trace + */ + k = i = nn = nc = nj = nm = 0; + for (tpos = 0; tpos < tr->tlen; tpos++) + { + switch (tr->statetype[tpos]) { + case STS: + if (tr->nodeidx[tpos] != 0) return 0; + if (tr->pos[tpos] != 0) return 0; + if (k != 0) return 0; + if (i != 0) return 0; + if (tpos != 0) return 0; + break; + + case STN: /* first N doesn't emit. */ + if (tr->nodeidx[tpos] != 0) return 0; + if (k != 0) return 0; + if (nn > 0) + { + if (tr->pos[tpos] != i+1) return 0; + i++; + } + else + { + if (tr->pos[tpos] != 0) return 0; + if (i != 0) return 0; + } + nn++; + break; + + case STB: + if (tr->nodeidx[tpos] != 0) return 0; + if (tr->pos[tpos] != 0) return 0; + nm = 0; + break; + + case STM: /* can enter anywhere on first M */ + if (tr->pos[tpos] != i+1) return 0; + if (tr->nodeidx[tpos] < 1 || tr->nodeidx[tpos] > M) return 0; + i++; + if (nm == 0) k = tr->nodeidx[tpos]; + else { + if (tr->nodeidx[tpos] != k+1) return 0; + k++; + } + nm++; + break; + + case STI: + if (tr->pos[tpos] != i+1) return 0; + if (tr->nodeidx[tpos] != k) return 0; + if (tr->nodeidx[tpos] < 1 || tr->nodeidx[tpos] > M-1) return 0; + if (k >= M) return 0; + i++; + break; + + case STD: + if (tr->pos[tpos] != 0) return 0; + if (tr->nodeidx[tpos] != k+1) return 0; + if (tr->nodeidx[tpos] < 1 || tr->nodeidx[tpos] > M) return 0; + k++; + break; + + case STE: + if (tr->nodeidx[tpos] != 0) return 0; + if (tr->pos[tpos] != 0) return 0; + nj = 0; + break; + + case STJ: + if (tr->nodeidx[tpos] != 0) return 0; + if (nj > 0) + { + if (tr->pos[tpos] != i+1) return 0; + i++; + } + else if (tr->pos[tpos] != 0) return 0; + nj++; + break; + + case STC: + if (tr->nodeidx[tpos] != 0) return 0; + if (nc > 0) + { + if (tr->pos[tpos] != i+1) return 0; + i++; + } + else if (tr->pos[tpos] != 0) return 0; + nc++; + break; + + case STT: + if (tpos != tr->tlen - 1) return 0; + if (tr->nodeidx[tpos] != 0) return 0; + if (tr->pos[tpos] != 0) return 0; + if (i != N) return 0; + break; + + case STBOGUS: + default: + return 0; + } /* end switch over statetypes */ + } /* end loop over trace positions */ + + return 1; +} + + +/* Function: TraceCompare() + * Date: SRE, Wed Mar 4 17:26:49 1998 [St. Louis] + * + * Purpose: Compare two tracebacks; return 1 if they're + * identical, else 0. Written for Shiva testsuite. + * + * Args: t1 - first trace + * t2 - second trace + * + * Returns: 1 if identical; 0 elsewise + */ +int +TraceCompare(struct p7trace_s *t1, struct p7trace_s *t2) +{ + int tpos; + + if (t1->tlen != t2->tlen) return 0; + + for (tpos = 0; tpos < t1->tlen; tpos++) + { + if (t1->statetype[tpos] != t2->statetype[tpos]) return 0; + if (t1->nodeidx[tpos] != t2->nodeidx[tpos]) return 0; + if (t1->pos[tpos] != t2->pos[tpos]) return 0; + } + return 1; +} + diff --git a/forester/archive/RIO/others/hmmer/src/display.c b/forester/archive/RIO/others/hmmer/src/display.c new file mode 100644 index 0000000..137180a --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/display.c @@ -0,0 +1,447 @@ +/************************************************************ + * Copyright (C) 1998 Ian Holmes + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* display.c + * Author: Ian Holmes (ihh@sanger.ac.uk, Jun 5 1998) + * Derived from core_algorithms.c (SRE, Nov 11 1996) + * Incorporated SRE, Sat Nov 6 10:09:41 1999 + * + * Functions for displaying HMMer2.0 structures. + * + * RCS $Id: display.c,v 1.1.1.1 2005/03/22 08:33:59 cmzmasek Exp $ + */ + +#include "structs.h" +#include "config.h" +#include "funcs.h" +#include "squid.h" + +void PrintIscore(int sc); + +void PrintTransition(char src, + int isrc, + int ksrc, + char dest, + int idest, + int kdest, + int sc, + struct p7trace_s **alignment, + int *min, + int *max, + int *on, + int A); + + +/* Function: DisplayPlan7Posteriors() + * + * Purpose: Print out posterior transition probabilities + * in modelpost format. + * NB only prints out transitions that touch + * either the Viterbi or the optimal accuracy path. + * + * Args: L - the length of the sequence + * hmm - the model + * forward - forward matrix + * backward - backward matrix + * viterbi - Viterbi trace + * optacc - optimal accuracy trace + * + * Return: void + * + */ +void DisplayPlan7Posteriors(int L, struct plan7_s *hmm, + struct dpmatrix_s *forward, + struct dpmatrix_s *backward, + struct p7trace_s *viterbi, + struct p7trace_s *optacc) +{ + struct p7trace_s* alignment[2]; + alignment[0] = viterbi; + alignment[1] = optacc; + DisplayPlan7PostAlign (L, hmm, forward, backward, alignment, 2); +} + + +/* Function: DisplayPlan7PostAlign() + * + * Purpose: Print out posterior transition probabilities + * in modelpost format, for any set of alignments. + * + * Args: L - the length of the sequence + * hmm - the model + * forward - forward matrix + * backward - backward matrix + * alignment - array of traces + * A - size of alignment array + * + * Return: void + * + */ +void DisplayPlan7PostAlign(int L, struct plan7_s *hmm, + struct dpmatrix_s *forward, + struct dpmatrix_s *backward, + struct p7trace_s **alignment, + int A) +{ + int sc; + int i; + int j; + int k; + int kmin; + int kmax; + int* min; + int* max; + int* on; + char state; + + sc = forward->xmx[L][XMC] + hmm->xsc[XTC][MOVE]; /* total Forward score */ + + min = (int*) calloc (A, sizeof(int)); + max = (int*) calloc (A, sizeof(int)); + on = (int*) calloc (A, sizeof(int)); + + for (i = 0; i <= L; i++) + { + for (j = 0; j < A; j++) { + while (alignment[j]->pos[min[j]] < i - 1 && min[j] < alignment[j]->tlen - 1) + min[j]++; + + while (alignment[j]->pos[max[j]] <= i + 1 && max[j] < alignment[j]->tlen - 1) + max[j]++; + } + + for (state = STM; state <= STJ; state++) + { + if (state == STM || state == STB) + { + kmin = 1; + kmax = hmm->M; + } + else if (state == STD) + { + kmin = 2; + kmax = hmm->M - 1; + } + else if (state == STI) + { + kmin = 1; + kmax = hmm->M - 1; + } + else + kmin = kmax = 0; + + for (k = kmin; k <= kmax; k++) + { + switch (state) + { + case STM: + if (iM) + PrintTransition (STM,i,k, STM,i+1,k+1, + forward->mmx[i][k] + hmm->tsc[k][TMM] + backward->mmx[i+1][k+1] - sc, + alignment, min, max, on, A); + + if (iM) + PrintTransition (STM,i,k, STI,i+1,k, + forward->mmx[i][k] + hmm->tsc[k][TMI] + backward->imx[i+1][k] - sc, + alignment, min, max, on, A); + + if (kM-1) + PrintTransition (STM,i,k, STD,i,k+1, + forward->mmx[i][k] + hmm->tsc[k][TMD] + backward->dmx[i][k+1] - sc, + alignment, min, max, on, A); + + PrintTransition (STM,i,k, STE,i,0, + forward->mmx[i][k] + hmm->esc[k] + backward->xmx[i][XME] - sc, + alignment, min, max, on, A); + break; + + case STD: + if (idmx[i][k] + hmm->tsc[k][TDM] + backward->mmx[i+1][k+1] - sc, + alignment, min, max, on, A); + + PrintTransition (STD,i,k, STD,i,k+1, + forward->dmx[i][k] + hmm->tsc[k][TDD] + backward->dmx[i][k+1] - sc, + alignment, min, max, on, A); + + break; + + case STI: + if (iimx[i][k] + hmm->tsc[k][TIM] + backward->mmx[i+1][k+1] - sc, + alignment, min, max, on, A); + + if (iimx[i][k] + hmm->tsc[k][TII] + backward->imx[i+1][k] - sc, + alignment, min, max, on, A); + + break; + + case STB: + if (ixmx[i][XMB] + hmm->bsc[k] + backward->mmx[i+1][k] - sc, + alignment, min, max, on, A); + break; + + default: + break; + + } + } + + switch (state) + { + case STN: + PrintTransition (STN,i,0, STB,i,0, + forward->xmx[i][XMN] + hmm->xsc[XTN][MOVE] + backward->xmx[i][XMB] - sc, + alignment, min, max, on, A); + + if (ixmx[i][XMN] + hmm->xsc[XTN][LOOP] + backward->xmx[i+1][XMN] - sc, + alignment, min, max, on, A); + break; + + case STJ: + PrintTransition (STJ,i,0, STB,i,0, + forward->xmx[i][XMJ] + hmm->xsc[XTJ][MOVE] + backward->xmx[i][XMB] - sc, + alignment, min, max, on, A); + + if (ixmx[i][XMJ] + hmm->xsc[XTJ][LOOP] + backward->xmx[i+1][XMJ] - sc, + alignment, min, max, on, A); + break; + + case STC: + PrintTransition (STC,i,0, STT,i,0, + forward->xmx[i][XMC] + hmm->xsc[XTC][MOVE] - sc, /* should be 1 */ + alignment, min, max, on, A); + + if (ixmx[i][XMC] + hmm->xsc[XTC][LOOP] + backward->xmx[i+1][XMC] - sc, + alignment, min, max, on, A); + break; + + case STE: + PrintTransition (STE,i,0, STC,i,0, + forward->xmx[i][XME] + hmm->xsc[XTE][MOVE] + backward->xmx[i][XMC] - sc, + alignment, min, max, on, A); + + PrintTransition (STE,i,0, STJ,i,0, + forward->xmx[i][XME] + hmm->xsc[XTE][LOOP] + backward->xmx[i][XMJ] - sc, + alignment, min, max, on, A); + break; + + case STS: + if (i == 0) + PrintTransition (STS,i,0, STN,i,0, + backward->xmx[i][XMN] - sc, /* should be 1 */ + alignment, min, max, on, A); + break; + + case STM: + case STD: + case STI: + case STB: + case STT: + break; + + default: + Die ("unknown state"); + + } + } + } + + free (min); + free (max); + free (on); + +} + + + +/* Function: DisplayPlan7Matrix() + * + * Purpose: Print out a dynamic programming matrix. + * + * Args: dsq - sequence in digitized form + * L - length of dsq + * hmm - the model + * mx - dp matrix + * + * Return: void + * + * The output of this function inverts HMMer's concept of rows and columns + * (i.e. each row represents a state, and each column, a residue); + * also, probabilities are displayed as natural logs, not bit scores. + * It should probably only be used by ihh... + * + */ +void +DisplayPlan7Matrix(char *dsq, int L, struct plan7_s *hmm, struct dpmatrix_s *mx) +{ + int i; + int k; + + printf(" * "); + for (i=1;i<=L;i++) printf(" %c ",Alphabet[dsq[i]]); + printf("\nN "); + for (i=0;i<=L;i++) PrintIscore(mx->xmx[i][XMN]); + for (k=1;k<=hmm->M;k++) { + printf("\nM%-3d ",k); + for (i=0;i<=L;i++) PrintIscore(mx->mmx[i][k]); + } + for (k=1;kM;k++) { + printf("\nI%-3d ",k); + for (i=0;i<=L;i++) PrintIscore(mx->imx[i][k]); + } + printf("\nE "); + for (i=0;i<=L;i++) PrintIscore(mx->xmx[i][XME]); + printf("\nC "); + for (i=0;i<=L;i++) PrintIscore(mx->xmx[i][XMC]); + printf("\nJ "); + for (i=0;i<=L;i++) PrintIscore(mx->xmx[i][XMJ]); + printf("\nB "); + for (i=0;i<=L;i++) PrintIscore(mx->xmx[i][XMB]); + for (k=2;kM;k++) { + printf("\nD%-3d ",k); + for (i=0;i<=L;i++) PrintIscore(mx->dmx[i][k]); + } + printf("\n\n"); +} + + +void PrintIscore(int sc) { + double dsc; + double div; + dsc = (double) sc; + div = INTSCALE / 0.693147180559945; /* == INTSCALE / log(2) */ + dsc = dsc / div; + printf("%- #11.3e",dsc); +} + + +void PrintTransition(char src, + int isrc, + int ksrc, + char dest, + int idest, + int kdest, + int sc, + struct p7trace_s **alignment, + int *min, + int *max, + int *on, + int A) +{ + char src_str[6]; /* buffer for source state label */ + char dest_str[6]; /* buffer for destination state label */ + int j; + int tpos; + int tnext; + int pos; + int next; + int near; + + near = 0; + + for (j = 0; j < A; j++) { + on[j] = 0; + for (pos = 0, tpos = min[j]; tpos <= max[j]; tpos++) { + + if (alignment[j]->pos[tpos] != 0) + pos = alignment[j]->pos[tpos]; + + if (src == alignment[j]->statetype[tpos] + && ksrc == alignment[j]->nodeidx[tpos] + && isrc == pos) + near = TRUE; + + if (dest == alignment[j]->statetype[tpos] + && kdest == alignment[j]->nodeidx[tpos] + && idest == pos) + near = TRUE; + + if (tpos < alignment[j]->tlen - 1) + { + tnext = tpos + 1; + + /* fold up B->D->M transitions into pseudo- B->M transitions */ + + if (alignment[j]->statetype[tpos] == STB) + while (alignment[j]->statetype[tnext] == STD && tnext < alignment[j]->tlen - 1) + tnext++; + + next = alignment[j]->pos[tnext]; + if (next == 0) + next = pos; + + if (src == alignment[j]->statetype[tpos] + && ksrc == alignment[j]->nodeidx[tpos] + && isrc == pos + && dest == alignment[j]->statetype[tnext] + && kdest == alignment[j]->nodeidx[tnext] + && idest == next) + on[j] = TRUE; + } + } + } + + if (!near) return; + + switch (src) + { + case STM: sprintf (src_str, "M%d", ksrc); break; + case STD: sprintf (src_str, "D%d", ksrc); break; + case STI: sprintf (src_str, "I%d", ksrc); break; + case STS: sprintf (src_str, "S"); break; + case STN: sprintf (src_str, "N"); break; + case STB: sprintf (src_str, "B"); break; + case STE: sprintf (src_str, "E"); break; + case STC: sprintf (src_str, "C"); break; + case STJ: sprintf (src_str, "J"); break; + case STT: sprintf (src_str, "T"); break; + default: Die ("bad transition"); + } + + switch (dest) + { + case STM: sprintf (dest_str, "M%d", kdest); break; + case STD: sprintf (dest_str, "D%d", kdest); break; + case STI: sprintf (dest_str, "I%d", kdest); break; + case STS: sprintf (dest_str, "S"); break; + case STN: sprintf (dest_str, "N"); break; + case STB: sprintf (dest_str, "B"); break; + case STE: sprintf (dest_str, "E"); break; + case STC: sprintf (dest_str, "C"); break; + case STJ: sprintf (dest_str, "J"); break; + case STT: sprintf (dest_str, "T"); break; + default: Die ("bad transition"); + } + + printf ("%d\t%s\t%d\t%s\t%-14.7g\t", isrc, src_str, idest, dest_str, (double) Score2Prob(sc,1.)); + + for (j = 0; j < A; j++) { + if (on[j]) printf ("*"); + if (j < A - 1) printf ("\t"); + } + + printf ("\n"); + +} + diff --git a/forester/archive/RIO/others/hmmer/src/emit.c b/forester/archive/RIO/others/hmmer/src/emit.c new file mode 100644 index 0000000..e6b101c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/emit.c @@ -0,0 +1,457 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* emit.c + * SRE, Sun Mar 8 12:26:58 1998 + * RCS $Id: emit.c,v 1.1.1.1 2005/03/22 08:34:04 cmzmasek Exp $ + * + * Generation of sequences/traces from an HMM. + */ + +#include "structs.h" +#include "config.h" +#include "funcs.h" +#include "squid.h" + +#include + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +/* Function: EmitSequence() + * Date: SRE, Sun Mar 8 12:28:03 1998 [St. Louis] + * + * Purpose: Given a model, sample a sequence and/or traceback. + * + * Args: hmm - the model + * ret_dsq - RETURN: generated digitized sequence (pass NULL if unwanted) + * ret_L - RETURN: length of generated sequence + * ret_tr - RETURN: generated trace (pass NULL if unwanted) + * + * Returns: void + */ +void +EmitSequence(struct plan7_s *hmm, char **ret_dsq, int *ret_L, struct p7trace_s **ret_tr) +{ + struct p7trace_s *tr; + char type; /* current state type */ + int k; /* current node index */ + char *dsq; /* generated sequence, digitized */ + int L; /* length of sequence */ + int alloc_tlen; /* allocated space for traceback */ + int alloc_L; /* allocated space for sequence */ + int tpos; /* position in traceback */ + int sym; /* a generated symbol index */ + float t[4]; /* little array for choosing M transition from */ + + /* Initialize; allocations + */ + P7AllocTrace(64, &tr); + alloc_tlen = 64; + dsq = MallocOrDie(sizeof(char) * 64); + alloc_L = 64; + + TraceSet(tr, 0, STS, 0, 0); + TraceSet(tr, 1, STN, 0, 0); + dsq[0] = (char) Alphabet_iupac; + L = 1; + k = 0; + type = STN; + tpos = 2; + + while (type != STT) + { + /* Deal with state transition + */ + switch (type) { + case STB: + hmm->begin[0] = hmm->tbd1; /* begin[0] hack (documented in structs.h) */ + k = FChoose(hmm->begin, hmm->M+1); + if (k == 0) { type = STD; k = 1; } else {type = STM; } + break; + + case STI: type = (FChoose(hmm->t[k]+TIM, 2) == 0) ? STM : STI; if (type == STM) k++; break; + case STN: type = (FChoose(hmm->xt[XTN], 2) == LOOP) ? STN : STB; k = 0; break; + case STE: type = (FChoose(hmm->xt[XTE], 2) == LOOP) ? STJ : STC; k = 0; break; + case STC: type = (FChoose(hmm->xt[XTC], 2) == LOOP) ? STC : STT; k = 0; break; + case STJ: type = (FChoose(hmm->xt[XTJ], 2) == LOOP) ? STJ : STB; k = 0; break; + + case STD: + if (k < hmm->M) { + type = (FChoose(hmm->t[k]+TDM, 2) == 0) ? STM : STD; + k++; + } else { + type = STE; + k = 0; + } + break; + + case STM: + if (k < hmm->M) { + FCopy(t, hmm->t[k], 3); + t[3] = hmm->end[k]; + switch (FChoose(t,4)) { + case 0: k++; type = STM; break; + case 1: type = STI; break; + case 2: k++; type = STD; break; + case 3: k=0; type = STE; break; + default: Die("never happens"); + } + } else { + k = 0; + type = STE; + } + break; + + case STT: + case STBOGUS: + default: + Die("can't happen."); + } + + /* Choose a symbol emission, if necessary + */ + sym = -1; + if (type == STM) sym = FChoose(hmm->mat[k], Alphabet_size); + else if (type == STI) sym = FChoose(hmm->ins[k], Alphabet_size); + else if ((type == STN && tr->statetype[tpos-1] == STN) || + (type == STC && tr->statetype[tpos-1] == STC) || + (type == STJ && tr->statetype[tpos-1] == STJ)) + sym = FChoose(hmm->null, Alphabet_size); + + /* Add to the traceback; deal with realloc if necessary + */ + TraceSet(tr, tpos, type, k, (sym != -1) ? L : 0); + tpos++; + if (tpos == alloc_tlen) { + alloc_tlen += 64; + P7ReallocTrace(tr, alloc_tlen); + } + + /* Add to the digitized seq; deal with realloc, if necessary + */ + if (sym != -1) { + dsq[L] = (char) sym; + L++; + if (L+1 == alloc_L) { /* L+1 leaves room for sentinel byte + \0 */ + alloc_L += 64; + dsq = ReallocOrDie(dsq, sizeof(char) * alloc_L); + } + } + } + + /* Finish off the trace + */ + tr->tlen = tpos; + + /* Finish off the dsq with sentinel byte and null terminator. + * Emitted Sequence length is L-1. + */ + dsq[L] = (char) Alphabet_iupac; + dsq[L+1] = '\0'; + L--; + + /* Return + */ + if (ret_dsq != NULL) *ret_dsq = dsq; else free(dsq); + if (ret_L != NULL) *ret_L = L; + if (ret_tr != NULL) *ret_tr = tr; else P7FreeTrace(tr); + return; +} + +#ifdef SRE_REMOVED +/* Function: EmitBestSequence() + * Date: SRE, Tue Nov 10 16:21:59 1998 [St. Louis] + * + * Purpose: Given a model, emit the maximum probability sequence + * from it: argmax_{seq} P(seq | model). + * This is a sensible HMM equivalent to a "consensus" + * sequence. + * The model should be Plan7NakedConfig()'ed; + * in particular, if we allowed B->M and M->E, + * the highest probability sequence would be + * artifactually short. (We could do the highest + * scoring sequence instead, to get around this problem, + * but the highest scoring sequence is prone to + * other artifacts -- any looping state N,C,J, or I + * with a positively scoring residue leads to + * an infinitely long "best scoring" sequence.) + * + * Args: hmm - the model + * ret_seq - RETURN: best sequence + * ret_L - RETURN: length of sequence + * ret_tr - RETURN: traceback of the model/seq alignment; or NULL. + * + * Returns: void + */ +void +EmitBestSequence(struct plan7_s *hmm, char **ret_dsq, int *ret_L, struct p7trace_s **ret_tr) +{ + char *seq; /* RETURN: best seq */ + struct p7trace_s *tr; /* RETURN: traceback */ + float *mmx, *imx, *dmx; /* log P forward scores for M,D,I */ + char *mtb, *itb, *dtb; /* traceback ptrs for M,D,I */ + int x; /* counter for symbols */ + int k; /* counter for nodes */ + float sc; /* tmp var for a log P */ + int bestsym; + int rpos; /* position in a sequence */ + int tpos; /* position in a trace */ + int tlen; /* length of the traceback */ + + /* Initial allocations. We only need a 1D matrix and its shadow; + * it's overkill to use the Plan7Matrix structures, so don't. + */ + mmx = MallocOrDie(sizeof(float) * (hmm->M+1)); + imx = MallocOrDie(sizeof(float) * (hmm->M)); + dmx = MallocOrDie(sizeof(float) * (hmm->M)); + mtb = MallocOrDie(sizeof(char) * (hmm->M+1)); + itb = MallocOrDie(sizeof(char) * (hmm->M)); + dtb = MallocOrDie(sizeof(char) * (hmm->M)); + + /* Initialization. + * We can safely assume a max probability path of S->N->B->(M1 or D1), + * so just init M1 and D1. + */ + mmx[1] = log(hmm->xt[XTN][MOVE]) + log(1.F - hmm->tbd1); + dmx[1] = + + + /* Main recursion, done as a push. + * The model is used in probability form; no wing folding needed. + */ + for (k = 1; k < hmm->M; k++) + { + /* Transits out of match state (init with these) + */ + mmx[k+1] = mmx[k] + log(hmm->t[k][TMM]); mtb[k+1] = STM; + dmx[k+1] = mmx[k] + log(hmm->t[k][TMD]); dtb[k+1] = STM; + if (k < hmm->M-1) + imx[k] = mmx[k] + log(hmm->t[k][TMI]); itb[k] = STM; + + /* Transits out of delete state + */ + if ((sc = dmx[k] + log(hmm->t[k][TDM])) > mmx[k+1]) + { mmx[k+1] = sc; mtb[k+1] = STD; } + if ((sc = dmx[k] + log(hmm->t[k][TDD])) > dmx[k+1]) + { dmx[k+1] = sc; dtb[k+1] = STD; } + + /* Transits out of insert state (self-loops are never good) + */ + if ((sc = imx[k] + log(hmm->t[k][TIM])) > mmx[k+1]) + { mmx[k+1] = sc; mtb[k+1] = STI; } + + /* Best emissions + */ + x = FMax(hmm->mat[k+1], Alphabet_size); + mmx[k+1] += log(hmm->mat[k+1][x]); + + if (k < hmm->M-1) { + x = FMax(hmm->ins[k+1], Alphabet_size); + imx[k+1] += log(hmm->ins[k+1][x]); + } + } +} +#endif /* SRE_REMOVED */ + + +/* Function: EmitConsensusSequence() + * Date: SRE, Wed Nov 11 11:08:59 1998 [St. Louis] + * + * Purpose: Generate a "consensus sequence". For the purposes + * of a profile HMM, this is defined as: + * - for each node: + * - if StateOccupancy() says that M is used + * with probability >= 0.5, this M is "consensus". + * Then, choose maximally likely residue. + * if P>0.5 (protein) or P>0.9 (DNA), make + * it upper case; else make it lower case. + * - if StateOccupancy() says that I + * is used with P >= 0.5, this I is "consensus"; + * use it 1/(1-TII) times (its expectation value). + * Generate an "x" from each I. + * + * The function expects that the model is config'ed + * by Plan7NakedConfig(): that is, for a single global pass + * with no N,C,J involvement. + * + * + * Args: hmm - the model + * ret_seq - RETURN: consensus sequence (pass NULL if unwanted) + * ret_dsq - RETURN: digitized consensus sequence (pass NULL if unwanted) + * ret_L - RETURN: length of generated sequence + * ret_tr - RETURN: generated trace (pass NULL if unwanted) + * + * Returns: void + */ +void +EmitConsensusSequence(struct plan7_s *hmm, char **ret_seq, char **ret_dsq, int *ret_L, struct p7trace_s **ret_tr) +{ + struct p7trace_s *tr; /* RETURN: traceback */ + char *dsq, *seq; /* sequence in digitized and undigitized form */ + float *mp, *ip, *dp; /* state occupancies from StateOccupancy() */ + int nmat, ndel, nins; /* number of matches, deletes, inserts used */ + int k; /* counter for nodes */ + int tpos; /* position in trace */ + int i; /* position in seq (equiv pos in dsq is i+1 */ + int x; /* symbol choice (M) or # symbols (I) */ + float mthresh; /* >= this, show symbol as upper case */ + + if (Alphabet_type == hmmAMINO) mthresh = 0.5; + else mthresh = 0.9; + + StateOccupancy(hmm, &mp, &ip, &dp); + + /* First pass: how many states do we need in the trace? + * how long will the sequence be? + */ + nmat = ndel = nins = 0; + for (k = 1; k <= hmm->M; k++) + { + if (mp[k] >= 0.5) nmat++; else ndel++; + if (k < hmm->M && ip[k] >= 0.5) + nins += (int) (1.f / (1.f - hmm->t[k][TII])); + } + + /* Allocations + */ + P7AllocTrace(6 + nmat + ndel + nins, &tr); + dsq = MallocOrDie(sizeof(char) * (nmat+nins+3)); + seq = MallocOrDie(sizeof(char) * (nmat+nins+1)); + + /* Main pass. + * Construct consensus trace, seq, and dsq. + */ + TraceSet(tr, 0, STS, 0, 0); + TraceSet(tr, 1, STN, 0, 0); + TraceSet(tr, 2, STB, 0, 0); + dsq[0] = Alphabet_iupac; /* guard byte */ + tpos = 3; + i = 0; + for (k = 1; k <= hmm->M; k++) + { + if (mp[k] >= 0.5) + { + x = FMax(hmm->mat[k], Alphabet_size); + TraceSet(tr, tpos, STM, k, i+1); + seq[i] = Alphabet[x]; + dsq[i+1] = x; + if (hmm->mat[k][x] < mthresh) + seq[i] = tolower((int) seq[i]); + i++; + tpos++; + } + else + { + TraceSet(tr, tpos, STD, k, 0); + tpos++; + } + + if (k < hmm->M && ip[k] >= 0.5) + { + x = (int) (1.f / (1.f - hmm->t[k][TII])); + while (x--) + { + TraceSet(tr, tpos, STI, k, i+1); + seq[i] = 'x'; + dsq[i+1] = Alphabet_iupac - 1; + i++; + tpos++; + } + } + } + TraceSet(tr, tpos, STE, 0, 0); tpos++; + TraceSet(tr, tpos, STC, 0, 0); tpos++; + TraceSet(tr, tpos, STT, 0, 0); tpos++; + dsq[i+1] = Alphabet_iupac; + + free(mp); + free(ip); + free(dp); + if (ret_seq != NULL) *ret_seq = seq; else free(seq); + if (ret_dsq != NULL) *ret_dsq = dsq; else free(dsq); + if (ret_L != NULL) *ret_L = i; + if (ret_tr != NULL) *ret_tr = tr; else P7FreeTrace(tr); +} + + + +/* Function: StateOccupancy() + * Date: SRE, Wed Nov 11 09:46:15 1998 [St. Louis] + * + * Purpose: Calculate the expected state occupancy for + * a given HMM in generated traces. + * + * Note that expected prob of getting into + * any special state in a trace is trivial: + * S,N,B,E,C,T = 1.0 + * J = E->J transition prob + * + * Args: hmm - the model + * ret_mp - RETURN: [1..M] prob's of occupying M + * ret_ip - RETURN: [1..M-1] prob's of occupying I + * ret_dp - RETURN: [1..M] prob's of occupying D + * + * Returns: void + * mp, ip, dp are malloc'ed here. Caller must free(). + */ +void +StateOccupancy(struct plan7_s *hmm, float **ret_mp, float **ret_ip, float **ret_dp) +{ + float *fmp, *fip, *fdp; /* forward probabilities */ + int k; /* counter for nodes */ + + /* Initial allocations + */ + fmp = MallocOrDie (sizeof(float) * (hmm->M+1)); + fip = MallocOrDie (sizeof(float) * (hmm->M)); + fdp = MallocOrDie (sizeof(float) * (hmm->M+1)); + + /* Forward pass. + */ + fdp[1] = hmm->tbd1; + fmp[1] = hmm->begin[1]; + fip[1] = fmp[1] * hmm->t[1][TMI]; + for (k = 2; k <= hmm->M; k++) + { + /* M: from M,D,I at k-1, or B; count t_II as 1.0 */ + fmp[k] = fmp[k-1] * hmm->t[k-1][TMM] + + fip[k-1] + + fdp[k-1] * hmm->t[k-1][TDM] + + hmm->begin[k]; + /* D: from M,D at k-1 */ + fdp[k] = fmp[k-1] * hmm->t[k-1][TMD] + + fdp[k-1] * hmm->t[k-1][TDD]; + /* I: from M at k; don't count II */ + if (k < hmm->M) { + fip[k] = fmp[k] * hmm->t[k][TMI]; + } + + SQD_DASSERT2((fabs(1.0f - fmp[k] - fdp[k]) < 1e-6f)); + fmp[k] /= fmp[k]+fdp[k]; /* prevent propagating fp errors */ + fdp[k] /= fmp[k]+fdp[k]; + } + /* We don't need a backward pass; all backwards P's are 1.0 + * by definition (you can always get out of a state with P=1). + * The only situation where this might not be true is for + * a TII of 1.0, when TIM = 0 -- but in that case, if there's + * a finite chance of getting into that insert state, the model + * generates infinitely long sequences, so we can consider this + * situation "perverse" and disallow it elsewhere in building + * profile HMMs. + */ + + /* Return. + */ + *ret_mp = fmp; + *ret_dp = fdp; + *ret_ip = fip; +} diff --git a/forester/archive/RIO/others/hmmer/src/emulation.c b/forester/archive/RIO/others/hmmer/src/emulation.c new file mode 100644 index 0000000..7de1833 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/emulation.c @@ -0,0 +1,242 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* emulation.c + * SRE, Wed Jan 21 07:50:01 1998 + * + * Interfaces between HMMER and other software packages. + * + * RCS $Id: emulation.c,v 1.1.1.1 2005/03/22 08:34:01 cmzmasek Exp $ + */ + +#include +#include + +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "funcs.h" +#include "version.h" + + +/* Function: WriteProfile() + * Date: SRE, Wed Jan 21 07:58:09 1998 [St. Louis] + * + * Purpose: Given an HMM, write a GCG profile .prf file as + * output. Based on examination of Michael Gribskov's Fortran + * source in GCG 9.1; on reverse engineering + * by examination of GCG 9.1 output from "profilemake" + * and how the .prf file is used by "profilesearch"; + * and on the GCG 9.0 documentation. + * + * See notes 28 Jan 98 for detail; in brief, the conversion goes like: + * + * PROF(i,k) = match score = msc(i,k) + TMM(k-1) + * + * GAP(k) = cost per insertion = TMI(k-1) + TIM(k-1) - TMM(k-1) - TII(k-1) + * LEN(k) = cost per inserted x = TII(k-1) + * + * QGAP(k) = cost per deletion = TDM(k-1) + TMD(unknown) - TMM(k-1) - TDD(k-1) + * QLEN(k) = cost per deleted k = TDD(k-1) + * + * Note that GCG affine gaps are GAP + n * LEN; + * HMMER affine gaps count (n-1) * gap-extend, thus an + * extra TII gets taken away from GAP (and TDD from QGAP), + * since GCG will charge it. + * + * Also note how the TMM transitions, which have no equivalent + * in a profile, get smuggled in OK. + * + * Also note that GCG charges gaps using the profile position + * /after/ the gap, not preceding the gap as HMMER does. + * + * Also note the TMD(unknown) in the QGAP calculation. HMMER + * distinguishes between gap-open and gap-close, but GCG does not, + * so there is a fundamental incompatibility here. Here + * we use an upper (best-scoring, minimum-cost) bound. + * + * And finally note that GCG's implementation forces GAP=QGAP and + * LEN=QLEN. Here, we upper bound again. Compugen's implementation + * allows an "extended profile" format which distinguishes between + * the two. + * + * The upper bound approach to these scores means that a + * score given by an emulated profile is an upper bound: the HMMER + * score (for a single Smith/Waterman style local alignment) + * cannot be better than this. This is intentional, so that + * the Compugen BIC can be used for rapid prefiltering of + * the database. + * + * To get a close approximation of hmmsw scores, call + * profilesearch as + * profilesearch -noave -nonor -gap 10 -len 1 + * On the Compugen BIC, using extended profiles, you want: + * om -model=xsw.model -gapop=10 -gapext=1 -qgapop=10 -qgapext=1 -noave -nonor + * + * Args: fp - open FILE to write to (or stdout, possibly) + * hmm - the HMM to write + * do_xsw - TRUE to write Compugen's experimental extended profile format + * + * Returns: (void) + */ +void +WriteProfile(FILE *fp, struct plan7_s *hmm, int do_xsw) +{ + int k; /* position in model */ + int x; /* symbol index */ + int sc; /* a score to print */ + float nx; /* expected # of symbol x */ + int gap, len, qgap, qlen; /* penalties to charge */ + + P7Logoddsify(hmm, TRUE); + + /* GCG can't deal with long profiles. Their limit is 1000 + * positions. However, Compugen can. Therefore we warn, + * but don't die. + */ + if (hmm->M > 1000 && !do_xsw) + Warn("Profile %s will have more than 1000 positions. GCG won't read it; Compugen will.", + hmm->name); + + /* Header information. + * GCG will look for sequence type and length of model. + * Other than this, nothing is parsed until we get to the + * Cons line that has a ".." on it. + * Lines that begin with "!" are comments. + */ + if (Alphabet_type == hmmAMINO) fprintf(fp, "!!AA_PROFILE 1.0\n"); + else if (Alphabet_type == hmmNUCLEIC) fprintf(fp, "!!NA_PROFILE 1.0\n"); + else Die("No support for profiles with non-biological alphabets"); + + if (Alphabet_type == hmmAMINO) fprintf(fp, "(Peptide) "); + else if (Alphabet_type == hmmNUCLEIC) fprintf(fp, "(Nucleotide) "); + fprintf(fp, "HMMCONVERT v%s Length: %d %s|%s|%s\n", + RELEASE, hmm->M, hmm->name, + hmm->flags & PLAN7_ACC ? hmm->acc : "", + hmm->flags & PLAN7_DESC ? hmm->desc : ""); + + /* Insert some HMMER-specific commentary + */ + if (do_xsw) + { + fprintf(fp, " Profile converted from a profile HMM using HMMER v%s emulation.\n", RELEASE); + fprintf(fp, " Compugen XSW extended profile format.\n"); + fprintf(fp, " Use -model=xsw.model -nonor -noave -gapop=10 -gapext=1 -qgapop=10 -qgapext=1\n"); + fprintf(fp, " with om on the Compugen BIC to get the closest approximation to HMMER bit scores.\n"); + fprintf(fp, " WARNING: There is a loss of information in this conversion.\n"); + fprintf(fp, " Neither the scores nor even the rank order of hits will be precisely\n"); + fprintf(fp, " preserved in a comparison of HMMER hmmsearch to GCG profilesearch.\n"); + fprintf(fp, " The profile score is an approximation of the (single-hit) HMMER score.\n\n"); + } + else + { + fprintf(fp, " Profile converted from a profile HMM using HMMER v%s emulation.\n", RELEASE); + fprintf(fp, " Use -nonor -noave -gap=10 -len=1 with profilesearch and friends\n"); + fprintf(fp, " to get the closest approximation to HMMER bit scores.\n"); + fprintf(fp, " WARNING: There is a loss of information in this conversion.\n"); + fprintf(fp, " Neither the scores nor even the rank order of hits will be precisely\n"); + fprintf(fp, " preserved in a comparison of HMMER hmmsearch to GCG profilesearch.\n"); + fprintf(fp, " The profile score is an approximation of the (single-hit) HMMER score.\n\n"); + } + + + /* Do the CONS line, which gives the valid IUPAC symbols and their order + */ + fprintf(fp, "Cons"); + for (x = 0; x < Alphabet_iupac; x++) + fprintf(fp, " %c ", Alphabet[x]); + if (do_xsw) + fprintf(fp, " Gap Len QGap Qlen ..\n"); + else + fprintf(fp, " Gap Len ..\n"); + + /* Now, the profile; for each position in the HMM, write a line of profile. + */ + for (k = 1; k <= hmm->M; k++) + { + /* GCG adds some indexing as comments */ + if ((k-1)%10 == 0 && k > 10) + fprintf(fp, "! %d\n", k); + + /* find consensus residue by max prob */ + x = FMax(hmm->mat[k], Alphabet_size); + fprintf(fp, " %c ", Alphabet[x]); + /* generate emission score profile; + * Profiles are scaled by a factor of 100 + */ + for (x = 0; x < Alphabet_iupac; x++) + { + sc = hmm->msc[x][k]; + if (k < hmm->M) sc += hmm->tsc[k][TMM]; + sc = sc * 100 / INTSCALE; + fprintf(fp, "%5d ", sc); + } + /* Generate gap open, gap extend penalties; + note we will force profilesearch to weights of 10, 1, + and that GCG profile values are percentages + of these base penalties, 0..100.*/ + /* gap open (insertion)*/ + if (k > 1) + { + gap = -1 * (hmm->tsc[k-1][TMI] + hmm->tsc[k-1][TIM] - hmm->tsc[k-1][TMM] - hmm->tsc[k-1][TII]); + gap = gap * 100 / (10.0 * INTSCALE); + } + else gap = 100; /* doesn't matter because GAP_1 is never used */ + + /* gap extend (insertion)*/ + if (k > 1) + { + len = -1 * hmm->tsc[k-1][TII]; + len = len * 100 / (1.0 * INTSCALE); + } + else len = 100; /* again, doesn't matter because LEN_1 is never used */ + + /* gap open (deletion) */ + if (k > 1) + { + qgap = -1 * (hmm->tsc[k-1][TDM] + hmm->tsc[k-1][TMD] - hmm->tsc[k-1][TMM] - hmm->tsc[k-1][TDD]); + qgap = qgap * 100 / (10.0 * INTSCALE); + } + else qgap = 100; + /* gap extend (deletion) */ + if (k > 1) + { + qlen = -1 * hmm->tsc[k-1][TDD]; + qlen = qlen * 100 / (1.0 * INTSCALE); + } + else qlen = 100; + + + if (do_xsw) + fprintf(fp, "%5d %5d %5d %5d\n", gap, len, qgap, qlen); + else + fprintf(fp, "%5d %5d\n", gap, len); /* assume insertions >= deletions */ + } + + /* The final line of the profile is a count of the observed + * residues in the training sequences. This information is not + * available in an HMM, and I'm not sure that GCG ever uses it. + * Approximate it by calculating a /very/ rough expectation. + */ + fprintf(fp, " * "); + for (x = 0; x < Alphabet_size; x++) + { + nx = 0.0; + for (k = 1; k <= hmm->M; k++) + nx += hmm->mat[k][x]; + nx *= hmm->nseq; + fprintf(fp, "%5d ", (int) nx); + } + for (; x < Alphabet_iupac; x++) + fprintf(fp, "%5d ", 0); + fprintf(fp, "\n"); + return; +} + diff --git a/forester/archive/RIO/others/hmmer/src/funcs.h b/forester/archive/RIO/others/hmmer/src/funcs.h new file mode 100644 index 0000000..81f31fb --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/funcs.h @@ -0,0 +1,350 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* funcs.h + * RCS $Id: funcs.h,v 1.1.1.1 2005/03/22 08:34:07 cmzmasek Exp $ + * + * Declarations of external functions in HMMER. + */ + +#ifndef FUNCSH_INCLUDED +#define FUNCSH_INCLUDED + +#include "config.h" +#include "structs.h" +#include "squid.h" +#include "msa.h" + +/* alphabet.c + * Configuration of global alphabet information + */ +extern void DetermineAlphabet(char **rseqs, int nseq); +extern void SetAlphabet(int type); +extern int SymbolIndex(char sym); +extern char *DigitizeSequence(char *seq, int L); +extern char *DedigitizeSequence(char *dsq, int L); +extern void DigitizeAlignment(MSA *msa, char ***ret_dsqs); +extern void P7CountSymbol(float *counters, char sym, float wt); +extern void DefaultGeneticCode(int *aacode); +extern void DefaultCodonBias(float *codebias); + +/* from core_algorithms.c + * Clean research/demonstration versions of basic algorithms. + */ +extern struct dpmatrix_s *AllocPlan7Matrix(int rows, int M, int ***xmx, + int ***mmx, int ***imx, int ***dmx); +extern struct dpshadow_s *AllocShadowMatrix(int rows, int M, char ***xtb, + char ***mtb, char ***itb, char ***dtb); +extern void FreePlan7Matrix(struct dpmatrix_s *mx); +extern void FreeShadowMatrix(struct dpshadow_s *tb); +extern int P7ViterbiSize(int L, int M); +extern int P7SmallViterbiSize(int L, int M); +extern int P7WeeViterbiSize(int L, int M); +extern float P7Forward(char *dsq, int L, struct plan7_s *hmm, + struct dpmatrix_s **ret_mx); +extern float P7Viterbi(char *dsq, int L, struct plan7_s *hmm, + struct p7trace_s **ret_tr); +extern void P7ViterbiTrace(struct plan7_s *hmm, char *dsq, int L, + struct dpmatrix_s *mx, struct p7trace_s **ret_tr); +extern float P7SmallViterbi(char *dsq, int L, struct plan7_s *hmm, struct p7trace_s **ret_tr); +extern float P7ParsingViterbi(char *dsq, int L, struct plan7_s *hmm, + struct p7trace_s **ret_tr); +extern float P7WeeViterbi(char *dsq, int L, struct plan7_s *hmm, + struct p7trace_s **ret_tr); +extern float Plan7ESTViterbi(char *dsq, int L, struct plan7_s *hmm, + struct dpmatrix_s **ret_mx); +extern struct p7trace_s *P7ViterbiAlignAlignment(MSA *msa, struct plan7_s *hmm); +extern struct p7trace_s *ShadowTrace(struct dpshadow_s *tb, struct plan7_s *hmm, int L); +extern void PostprocessSignificantHit(struct tophit_s *ghit, struct tophit_s *dhit, struct p7trace_s *tr, struct plan7_s *hmm, char *dsq, int L, char *seqname, char *seqacc, char *seqdesc, int do_forward, float sc_override, int do_null2, struct threshold_s *thresh, int hmmpfam_mode); + + +/* from debug.c + * Debugging output of various sorts. + */ +extern char *Statetype(char st); +extern char *AlphabetType2String(int type); +extern void P7PrintTrace(FILE *fp, struct p7trace_s *tr, + struct plan7_s *hmm, char *dsq); +extern void P7PrintPrior(FILE *fp, struct p7prior_s *pri); +extern int TraceCompare(struct p7trace_s *t1, struct p7trace_s *t2); +extern int TraceVerify(struct p7trace_s *tr, int M, int N); + +/* + * from display.c + * Ian Holmes' functions for displaying HMMER2 data structures, especially + * for posterior probabilities in alignments. + */ +extern void DisplayPlan7Matrix(char *dsq, int L, struct plan7_s *hmm, + struct dpmatrix_s *mx); +extern void DisplayPlan7Posteriors(int L, struct plan7_s *hmm, + struct dpmatrix_s *forward, struct dpmatrix_s *backward, + struct p7trace_s *viterbi, struct p7trace_s *optacc); +extern void DisplayPlan7PostAlign(int L, struct plan7_s *hmm, + struct dpmatrix_s *forward, struct dpmatrix_s *backward, + struct p7trace_s **alignment, int A); + + +/* from emit.c + * Generation of sequences/traces from an HMM + */ +extern void EmitSequence(struct plan7_s *hmm, char **ret_dsq, int *ret_L, struct p7trace_s **ret_tr); +extern void EmitConsensusSequence(struct plan7_s *hmm, char **ret_seq, char **ret_dsq, int *ret_L, struct p7trace_s **ret_tr); +extern void StateOccupancy(struct plan7_s *hmm, float **ret_mp, float **ret_ip, float **ret_dp); + + +/* from emulation.c + * Interfaces between HMMER and other software packages + */ +extern void WriteProfile(FILE *fp, struct plan7_s *hmm, int do_xsw); + + +/* from histogram.c + * accumulation of scores + */ +extern struct histogram_s *AllocHistogram(int min, int max, int lumpsize); +extern void FreeHistogram(struct histogram_s *h); +extern void UnfitHistogram(struct histogram_s *h); +extern void AddToHistogram(struct histogram_s *h, float sc); +extern void PrintASCIIHistogram(FILE *fp, struct histogram_s *h); +extern void PrintXMGRHistogram(FILE *fp, struct histogram_s *h); +extern void PrintXMGRDistribution(FILE *fp, struct histogram_s *h); +extern void PrintXMGRRegressionLine(FILE *fp, struct histogram_s *h); +extern void EVDBasicFit(struct histogram_s *h); +extern int ExtremeValueFitHistogram(struct histogram_s *h, int censor, + float high_hint); +extern void ExtremeValueSetHistogram(struct histogram_s *h, float mu, float lambda, + float low, float high, int ndegrees); +extern int GaussianFitHistogram(struct histogram_s *h, float high_hint); +extern void GaussianSetHistogram(struct histogram_s *h, float mean, float sd); +extern double EVDDensity(float x, float mu, float lambda); +extern double EVDDistribution(float x, float mu, float lambda); +extern double ExtremeValueP (float x, float mu, float lambda); +extern double ExtremeValueP2(float x, float mu, float lambda, int N); +extern double ExtremeValueE (float x, float mu, float lambda, int N); +extern float EVDrandom(float mu, float lambda); +extern int EVDMaxLikelyFit(float *x, int *y, int n, + float *ret_mu, float *ret_lambda); +extern int EVDCensoredFit(float *x, int *y, int n, int z, float c, + float *ret_mu, float *ret_lambda); +extern void Lawless416(float *x, int *y, int n, float lambda, + float *ret_f, float *ret_df); +extern void Lawless422(float *x, int *y, int n, int z, float c, + float lambda, float *ret_f, float *ret_df); + +/* from hmmio.c + * Input/output (saving/reading) of models + */ +extern HMMFILE *HMMFileOpen(char *hmmfile, char *env); +extern int HMMFileRead(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +extern void HMMFileClose(HMMFILE *hmmfp); +extern int HMMFileFormat(HMMFILE *hmmfp); +extern void HMMFileRewind(HMMFILE *hmmfp); +extern int HMMFilePositionByName(HMMFILE *hmmfp, char *name); +extern int HMMFilePositionByIndex(HMMFILE *hmmfp, int idx); +extern void WriteAscHMM(FILE *fp, struct plan7_s *hmm); +extern void WriteBinHMM(FILE *fp, struct plan7_s *hmm); + +/* masks.c + * Repetitive sequence masking. + */ +extern int XNU(char *dsq, int len); +extern float TraceScoreCorrection(struct plan7_s *hmm, struct p7trace_s *tr, char *dsq); + +/* mathsupport.c + * Much of this code deals with Dirichlet prior mathematics. + */ +extern int Prob2Score(float p, float null); +extern float Score2Prob(int sc, float null); +extern float Scorify(int sc); +extern double PValue(struct plan7_s *hmm, float sc); +extern float LogSum(float p1, float p2); +extern int ILogsum(int p1, int p2); +extern void LogNorm(float *vec, int n); +extern float Logp_cvec(float *cvec, int n, float *alpha); +extern void SampleDirichlet(float *alpha, int n, float *p); +extern float SampleGamma(float alpha); +extern void SampleCountvector(float *p, int n, int c, float *cvec); +extern float P_PvecGivenDirichlet(float *p, int n, float *alpha); + +/* from misc.c + * Miscellaneous functions with no home + */ +extern char *Getword(FILE *fp, int type); +extern char *Getline(char *s, int n, FILE *fp); +extern int SetAutocuts(struct threshold_s *thresh, struct plan7_s *hmm); + +/* from modelmakers.c + * Model construction algorithms + */ +extern void P7Handmodelmaker(MSA *msa, char **dsq, struct plan7_s **ret_hmm, + struct p7trace_s ***ret_tr); +extern void P7Fastmodelmaker(MSA *msa, char **dsq, + float maxgap, struct plan7_s **ret_hmm, + struct p7trace_s ***ret_tr); +extern void P7Maxmodelmaker(MSA *msa, char **dsq, + float maxgap, struct p7prior_s *prior, + float *null, float null_p1, float mpri, + struct plan7_s **ret_hmm, + struct p7trace_s ***ret_tr); + +/* from plan7.c + * Plan7 HMM structure support + */ +extern struct plan7_s *AllocPlan7(int M); +extern struct plan7_s *AllocPlan7Shell(void); +extern void AllocPlan7Body(struct plan7_s *hmm, int M); +extern void FreePlan7(struct plan7_s *hmm); +extern void ZeroPlan7(struct plan7_s *hmm); +extern void Plan7SetName(struct plan7_s *hmm, char *name); +extern void Plan7SetAccession(struct plan7_s *hmm, char *acc); +extern void Plan7SetDescription(struct plan7_s *hmm, char *desc); +extern void Plan7ComlogAppend(struct plan7_s *hmm, int argc, char **argv); +extern void Plan7SetCtime(struct plan7_s *hmm); +extern void Plan7SetNullModel(struct plan7_s *hmm, float null[MAXABET], float p1); +extern void P7Logoddsify(struct plan7_s *hmm, int viterbi_mode); +extern void Plan7Renormalize(struct plan7_s *hmm); +extern void Plan7RenormalizeExits(struct plan7_s *hmm); +extern void Plan7NakedConfig(struct plan7_s *hmm); +extern void Plan7GlobalConfig(struct plan7_s *hmm); +extern void Plan7LSConfig(struct plan7_s *hmm); +extern void Plan7SWConfig(struct plan7_s *hmm, float pentry, float pexit); +extern void Plan7FSConfig(struct plan7_s *hmm, float pentry, float pexit); +extern void PrintPlan7Stats(FILE *fp, struct plan7_s *hmm, char **dsq, + int nseq, struct p7trace_s **tr); +extern int DegenerateSymbolScore(float *p, float *null, int ambig); +extern void Plan9toPlan7(struct plan9_s *hmm, struct plan7_s **ret_plan7); + +/* + * from plan9.c + * Backwards compatibility for the Plan 9 data structures of HMMER 1.x + */ +extern struct plan9_s *P9AllocHMM(int M); +extern void P9ZeroHMM(struct plan9_s *hmm); +extern int P9FreeHMM(struct plan9_s *hmm); +extern void P9Renormalize(struct plan9_s *hmm); +extern void P9DefaultNullModel(float *null); + +/* + * from postprob.c + * Functions for working with posterior probabilities within alignments + */ +extern float P7OptimalAccuracy(char *dsq, int L, struct plan7_s *hmm, struct p7trace_s **ret_tr); +extern float P7Backward(char *dsq, int L, struct plan7_s *hmm, struct dpmatrix_s **ret_mx); +extern void P7EmitterPosterior(int L, struct plan7_s *hmm, struct dpmatrix_s *forward, + struct dpmatrix_s *backward, struct dpmatrix_s *mx); +extern float P7FillOptimalAccuracy(int L, int M, struct dpmatrix_s *posterior, + struct dpmatrix_s *mx, struct p7trace_s **ret_tr); +extern void P7OptimalAccuracyTrace(int L, int M, struct dpmatrix_s *posterior, + struct dpmatrix_s *mx, struct p7trace_s **ret_tr); +extern char *PostalCode(int L, struct dpmatrix_s *mx, struct p7trace_s *tr); + +/* from prior.c + * Dirichlet priors + */ +extern struct p7prior_s *P7AllocPrior(void); +extern struct p7prior_s *P7LaplacePrior(void); +extern struct p7prior_s *P7DefaultPrior(void); +extern struct p7prior_s *P7ReadPrior(char *prifile); +extern void P7FreePrior(struct p7prior_s *pri); +extern void PAMPrior(char *pamfile, struct p7prior_s *pri, float pamwgt); +extern void P7DefaultNullModel(float *null, float *ret_p1); +extern void P7ReadNullModel(char *rndfile, float *null, float *ret_p1); +extern void P7PriorifyHMM(struct plan7_s *hmm, struct p7prior_s *pri); +extern void P7PriorifyTransitionVector(float *t, struct p7prior_s *prior, + float tq[MAXDCHLET]); +extern void P7PriorifyEmissionVector(float *vec, struct p7prior_s *pri, + int num, float eq[MAXDCHLET], + float e[MAXDCHLET][MAXABET], + float *ret_mix); + + +#ifdef HMMER_PVM +/* from pvm.c + * PVM Parallel Virtual Machine implementation + */ +extern void PVMSpawnSlaves(char *slave, int **ret_tid, int *ret_nslaves); +extern void PVMConfirmSlaves(int *slave_tid, int nslaves); +extern void PVMCheckSlaves(int *slave_tid, int nslaves); +extern void PVMKillSlaves(int *slave_tid, int nslaves); +extern int PVMPackString(char *s); +extern char * PVMUnpackString(void); +extern int PVMPackTrace(struct p7trace_s *tr); +extern struct p7trace_s *PVMUnpackTrace(void); +extern int PVMPackHMM(struct plan7_s *hmm); +extern struct plan7_s * PVMUnpackHMM(void); +#endif /*HMMER_PVM*/ + +#ifdef HMMER_THREADS +/* from threads.c + * POSIX threads implementation + */ +extern int ThreadNumber(void); +#endif /*HMMER_THREADS*/ + + +/* from tophits.c + * Support for keeping/sorting top scoring hit/alignment lists + */ +extern struct tophit_s *AllocTophits(int lumpsize); +extern void GrowTophits(struct tophit_s *h); +extern void FreeTophits(struct tophit_s *h); +extern struct fancyali_s *AllocFancyAli(void); +extern void FreeFancyAli(struct fancyali_s *ali); +extern void RegisterHit(struct tophit_s *h, double sortkey, + double pvalue, float score, + double motherp, float mothersc, + char *name, char *acc, char *desc, + int sqfrom, int sqto, int sqlen, + int hmmfrom, int hmmto, int hmmlen, + int domidx, int ndom, + struct fancyali_s *ali); +extern void GetRankedHit(struct tophit_s *h, int rank, + double *r_pvalue, float *r_score, + double *r_motherp, float *r_mothersc, + char **r_name, char **r_acc, char **r_desc, + int *r_sqfrom, int *r_sqto, int *r_sqlen, + int *r_hmmfrom, int *r_hmmto, int *r_hmmlen, + int *r_domidx, int *r_ndom, + struct fancyali_s **r_ali); +extern int TophitsMaxName(struct tophit_s *h); +extern void FullSortTophits(struct tophit_s *h); +extern void TophitsReport(struct tophit_s *h, double E, int nseq); + +/* from trace.c + * Support for traceback (state path) structure + */ +extern void P7AllocTrace(int tlen, struct p7trace_s **ret_tr); +extern void P7ReallocTrace(struct p7trace_s *tr, int tlen); +extern void P7FreeTrace(struct p7trace_s *tr); +extern void TraceSet(struct p7trace_s *tr, int tpos, char type, int idx, int pos); +extern struct p7trace_s **MergeTraceArrays(struct p7trace_s **t1, int n1, struct p7trace_s **t2, int n2); +extern void P7ReverseTrace(struct p7trace_s *tr); +extern void P7TraceCount(struct plan7_s *hmm, char *dsq, float wt, + struct p7trace_s *tr); +extern float P7TraceScore(struct plan7_s *hmm, char *dsq, struct p7trace_s *tr); +extern MSA *P7Traces2Alignment(char **dsq, SQINFO *sqinfo, float *wgt, + int nseq, int M, + struct p7trace_s **tr, int matchonly); +extern int TransitionScoreLookup(struct plan7_s *hmm, char st1, + int k1, char st2, int k2); +extern struct fancyali_s *CreateFancyAli(struct p7trace_s *tr, struct plan7_s *hmm, + char *dsq, char *name); +extern void PrintFancyAli(FILE *fp, struct fancyali_s *ali); +extern void TraceDecompose(struct p7trace_s *otr, struct p7trace_s ***ret_tr, + int *ret_ntr); +extern int TraceDomainNumber(struct p7trace_s *tr); +extern void TraceSimpleBounds(struct p7trace_s *tr, int *ret_i1, int *ret_i2, + int *ret_k1, int *ret_k2); +extern struct p7trace_s *MasterTraceFromMap(int *map, int M, int alen); +extern void ImposeMasterTrace(char **aseq, int nseq, struct p7trace_s *mtr, + struct p7trace_s ***ret_tr); + + +#endif /*FUNCSH_INCLUDED*/ diff --git a/forester/archive/RIO/others/hmmer/src/globals.h b/forester/archive/RIO/others/hmmer/src/globals.h new file mode 100644 index 0000000..5a5ae23 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/globals.h @@ -0,0 +1,24 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* globals.h + * Mon Nov 18 13:05:03 1996 + * + * Global variable definitions. + * This file may only be included in a main() .c file. + */ + +char Alphabet[MAXCODE]; /* ACGT, for instance */ +int Alphabet_type; /* hmmNUCLEIC or hmmAMINO */ +int Alphabet_size; /* uniq alphabet size: 4 or 20 */ +int Alphabet_iupac; /* total size of alphabet + IUPAC degen. */ +char Degenerate[MAXCODE][MAXABET]; +int DegenCount[MAXCODE]; + diff --git a/forester/archive/RIO/others/hmmer/src/histogram.c b/forester/archive/RIO/others/hmmer/src/histogram.c new file mode 100644 index 0000000..88841fc --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/histogram.c @@ -0,0 +1,1369 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* histogram.c + * SRE, Sat Jan 20 16:16:17 1996 + * + * Accumulation, printing, and fitting of score histograms + * from database searches. + * + * RCS $Id: histogram.c,v 1.1.1.1 2005/03/22 08:34:00 cmzmasek Exp $ + ************************************************************ + * Basic API: + * + * struct histogram_s *h; + * + * h = AllocHistogram(min_hint, max_hint, lumpsize); + * + * while (getting scores x) AddToHistogram(h, x); + * + * ExtremeValueFitHistogram(h, high_hint); + * PrintASCIIHistogram(fp, h); + * FreeHistogram(h); + */ + +#include +#include +#include +#include +#include + +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "funcs.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +/* Function: AllocHistogram() + * + * Purpose: Allocate and return a histogram structure. + * min and max are your best guess. They need + * not be absolutely correct; the histogram + * will expand dynamically to accomodate scores + * that exceed these suggested bounds. The amount + * that the histogram grows by is set by "lumpsize". + * + * Args: min: minimum score (integer) + * max: maximum score (integer) + * lumpsize: when reallocating histogram, pad the reallocation + * by this much (saves excessive reallocation) + */ +struct histogram_s * +AllocHistogram(int min, int max, int lumpsize) +{ + struct histogram_s *h; + int newsize; + int i; + + newsize = max - min + 1; + + h = (struct histogram_s *) MallocOrDie(sizeof(struct histogram_s)); + h->min = min; + h->max = max; + h->total = 0; + h->lowscore = INT_MAX; + h->highscore = INT_MIN; + h->lumpsize = lumpsize; + h->histogram = (int *) MallocOrDie (sizeof(int) * newsize); + for (i = 0; i < newsize; i++) h->histogram[i] = 0; + + h->expect = NULL; + h->fit_type = HISTFIT_NONE; + + return h; +} + + +/* Function: FreeHistogram() + * + * Purpose: free a histogram structure. + */ +void +FreeHistogram(struct histogram_s *h) +{ + free(h->histogram); + if (h->expect != NULL) free(h->expect); + free(h); +} + +/* Function: UnfitHistogram() + * + * Purpose: Free only the theoretical fit part of a histogram. + */ +void +UnfitHistogram(struct histogram_s *h) +{ + if (h->expect != NULL) free(h->expect); + h->expect = NULL; + h->fit_type = HISTFIT_NONE; +} + + +/* Function: AddToHistogram() + * + * Purpose: Bump the appropriate counter in a histogram + * structure, given a score. The score is + * rounded off from float precision to the + * next lower integer. + */ +void +AddToHistogram(struct histogram_s *h, float sc) +{ + int score; + int moveby; + int prevsize; + int newsize; + int i; + + /* Adding to a histogram conflicts with existing fit: + * prohibit this. + */ + if (h->fit_type != HISTFIT_NONE) + Die("AddToHistogram(): Can't add to a fitted histogram\n"); + + + /* histogram bins are defined as: score >= bin value, < bin+1 + * -1.9 -> -2 -0.4 -> -1 1.9 -> 1 + * -2.1 -> -3 0.4 -> 0 2.1 -> 2 + */ + score = (int) floor(sc); + + /* Check to see if we must reallocate the histogram. + */ + if (score < h->min) + { + prevsize = h->max - h->min + 1; + moveby = (h->min - score) + h->lumpsize; + newsize = prevsize + moveby; + h->min -= moveby; + + h->histogram = (int *) ReallocOrDie(h->histogram, sizeof(int) * newsize); + memmove(h->histogram+moveby, h->histogram, sizeof(int) * prevsize); + for (i = 0; i < moveby; i++) + h->histogram[i] = 0; + } + else if (score > h->max) + { + prevsize = h->max - h->min + 1; + h->max = h->lumpsize + score; + newsize = h->max - h->min + 1; + + h->histogram = (int *) ReallocOrDie(h->histogram, sizeof(int) * newsize); + for (i = prevsize; i < newsize; i++) + h->histogram[i] = 0; + } + + /* Bump the correct bin. + * The bin number is score - h->min + */ + h->histogram[score - h->min]++; + h->total++; + if (score < h->lowscore) h->lowscore = score; + if (score > h->highscore) h->highscore = score; + + SQD_DPRINTF3(("AddToHistogram(): added %.1f; rounded to %d; in bin %d (%d-%d)\n", + sc, score, score-h->min, h->min, h->max)); + return; +} + + + +/* Function: PrintASCIIHistogram() + * + * Purpose: Print a "prettified" histogram to a file pointer. + * Deliberately a look-and-feel clone of Bill Pearson's + * excellent FASTA output. + * + * Args: fp - open file to print to (stdout works) + * h - histogram to print + */ +void +PrintASCIIHistogram(FILE *fp, struct histogram_s *h) +{ + int units; + int maxbar; + int num; + int i, idx; + char buffer[81]; /* output line buffer */ + int pos; /* position in output line buffer */ + int lowbound, lowcount; /* cutoffs on the low side */ + int highbound, highcount; /* cutoffs on the high side */ + int emptybins = 3; + + /* Find out how we'll scale the histogram. + * We have 59 characters to play with on a + * standard 80-column terminal display: + * leading "%5d %6d %6d|" occupies 20 chars. + * Save the peak position, we'll use it later. + */ + maxbar = 0; + for (i = h->lowscore - h->min; i <= h->highscore - h->min; i++) + if (h->histogram[i] > maxbar) + { + maxbar = h->histogram[i]; /* max height */ + lowbound = i + h->min; /* peak position */ + } + + /* Truncate histogram display on both sides, ad hoc fashion. + * Start from the peak; then move out until we see empty bins, + * and stop. + */ + highbound = lowbound; /* start at peak position */ + for (num = 0; lowbound > h->lowscore; lowbound--) + { + i = lowbound - h->min; + if (h->histogram[i] > 0) { num = 0; continue; } /* reset */ + if (++num == emptybins) { lowbound += emptybins; break; } /* stop */ + } + for (num = 0; highbound < h->highscore; highbound++) + { + i = highbound - h->min; + if (h->histogram[i] > 0) { num = 0; continue; } /* reset */ + if (++num == emptybins) { highbound -= emptybins; break; } /* stop */ + } + /* collect counts outside of bounds */ + for (lowcount = 0, i = h->lowscore - h->min; i <= lowbound - h->min; i++) + lowcount += h->histogram[i]; + for (highcount = 0, i = h->highscore - h->min; i >= highbound - h->min; i--) + highcount += h->histogram[i]; + + /* maxbar might need raised now; then set our units */ + if (lowcount > maxbar) maxbar = lowcount; + if (highcount > maxbar) maxbar = highcount; + units = ((maxbar-1)/ 59) + 1; + + + /* Print the histogram + */ + fprintf(fp, "%5s %6s %6s (one = represents %d sequences)\n", + "score", "obs", "exp", units); + fprintf(fp, "%5s %6s %6s\n", "-----", "---", "---"); + buffer[80] = '\0'; + buffer[79] = '\n'; + for (i = h->lowscore; i <= h->highscore; i++) + { + memset(buffer, ' ', 79 * sizeof(char)); + idx = i - h->min; + + /* Deal with special cases at edges + */ + if (i < lowbound) continue; + else if (i > highbound) continue; + else if (i == lowbound && i != h->lowscore) + { + sprintf(buffer, "<%4d %6d %6s|", i+1, lowcount, "-"); + if (lowcount > 0) { + num = 1+(lowcount-1) / units; + if (num > 60) Die("oops"); + for (pos = 20; num > 0; num--) buffer[pos++] = '='; + } + fputs(buffer, fp); + continue; + } + else if (i == highbound && i != h->highscore) + { + sprintf(buffer, ">%4d %6d %6s|", i, highcount, "-"); + if (highcount > 0) { + num = 1+(highcount-1) / units; + for (pos = 20; num > 0; num--) buffer[pos++] = '='; + } + fputs(buffer, fp); + continue; + } + + /* Deal with most cases + */ + if (h->fit_type != HISTFIT_NONE) + sprintf(buffer, "%5d %6d %6d|", + i, h->histogram[idx], (int) h->expect[idx]); + else + sprintf(buffer, "%5d %6d %6s|", i, h->histogram[idx], "-"); + buffer[20] = ' '; /* sprintf writes a null char */ + + /* Mark the histogram bar for observed hits + */ + if (h->histogram[idx] > 0) { + num = 1 + (h->histogram[idx]-1) / units; + for (pos = 20; num > 0; num--) buffer[pos++] = '='; + } + + /* Mark the theoretically expected value + */ + if (h->fit_type != HISTFIT_NONE && (int) h->expect[idx] > 0) + { + pos = 20 + (int)(h->expect[idx]-1) / units; + if (pos >= 78) pos = 78; /* be careful of buffer bounds */ + buffer[pos] = '*'; + } + + /* Print the line + */ + fputs(buffer, fp); + } + + /* Print details about the statistics + */ + switch (h->fit_type) { + case HISTFIT_NONE: + fprintf(fp, "\n\n%% No statistical fit available\n"); + break; + + case HISTFIT_EVD: + fprintf(fp, "\n\n%% Statistical details of theoretical EVD fit:\n"); + fprintf(fp, " mu = %10.4f\n", h->param[EVD_MU]); + fprintf(fp, " lambda = %10.4f\n", h->param[EVD_LAMBDA]); + fprintf(fp, "chi-sq statistic = %10.4f\n", h->chisq); + fprintf(fp, " P(chi-square) = %10.4g\n", h->chip); + break; + + case HISTFIT_GAUSSIAN: + fprintf(fp, "\n\n%% Statistical details of theoretical Gaussian fit:\n"); + fprintf(fp, " mean = %10.4f\n", h->param[GAUSS_MEAN]); + fprintf(fp, " sd = %10.4f\n", h->param[GAUSS_SD]); + fprintf(fp, "chi-sq statistic = %10.4f\n", h->chisq); + fprintf(fp, " P(chi-square) = %10.4g\n", h->chip); + break; + } + return; +} + + + +/* Function: PrintXMGRHistogram() + * Date: SRE, Wed Nov 12 11:02:00 1997 [St. Louis] + * + * Purpose: Print an XMGR data file that contains two data sets: + * - xy data for the observed histogram + * - xy data for the theoretical histogram + */ +void +PrintXMGRHistogram(FILE *fp, struct histogram_s *h) +{ + int sc; /* integer score in histogram structure */ + double val; + + /* First data set is the observed histogram + */ + for (sc = h->lowscore; sc <= h->highscore; sc++) + if (h->histogram[sc - h->min] > 0) + fprintf(fp, "%-6d %f\n", sc, + (float) h->histogram[sc - h->min]/ (float) h->total); + fprintf(fp, "&\n"); + + /* Second data set is the theoretical histogram + */ + if (h->fit_type != HISTFIT_NONE) + { + for (sc = h->lowscore; sc <= h->highscore; sc++) + { + val = + (1. - ExtremeValueP((float)sc+1, h->param[EVD_MU], h->param[EVD_LAMBDA]))- + (1. - ExtremeValueP((float)sc, h->param[EVD_MU], h->param[EVD_LAMBDA])); + fprintf(fp, "%-6d %f\n", sc, val); + } + fprintf(fp, "&\n"); + } +} + +/* Function: PrintXMGRDistribution() + * Date: SRE, Wed Nov 12 11:02:09 1997 [St. Louis] + * + * Purpose: Print an XMGR data file that contains two data sets: + * - xy data for the observed distribution P(Slowscore; sc <= h->highscore; sc++) + { + cum += h->histogram[sc - h->min]; + fprintf(fp, "%-6d %f\n", sc + 1, (float) cum / (float) h->total); + } + fprintf(fp, "&\n"); + + /* Second data set is the theoretical histogram + */ + if (h->fit_type != HISTFIT_NONE) + { + for (sc = h->lowscore; sc <= h->highscore; sc++) + { + val = (1. - ExtremeValueP((float) sc, h->param[EVD_MU], + h->param[EVD_LAMBDA])); + fprintf(fp, "%-6d %f\n", sc, val); + } + fprintf(fp, "&\n"); + } +} + +/* Function: PrintXMGRRegressionLine() + * Date: SRE, Wed Nov 12 11:02:19 1997 [St. Louis] + * + * Purpose: Print an XMGR data file that contains two data sets: + * - xy data for log log transform of observed distribution P(Slowscore; sc <= h->highscore; sc++) + { + cum += h->histogram[sc - h->min]; + val = log (-1. * log((double) cum / (double) h->total)); + if (cum < h->total) + fprintf(fp, "%-6d %f\n", sc + 1, val); + } + fprintf(fp, "&\n"); + + /* Second data set is the theoretical histogram + */ + if (h->fit_type != HISTFIT_NONE) + { + for (sc = h->lowscore; sc <= h->highscore; sc++) + { + val = log(-1. * log(1. - ExtremeValueP((float) sc, h->param[EVD_MU], + h->param[EVD_LAMBDA]))); + fprintf(fp, "%-6d %f\n", sc, val); + } + fprintf(fp, "&\n"); + } +} + +/* Function: EVDBasicFit() + * Date: SRE, Wed Nov 12 11:02:27 1997 [St. Louis] + * + * Purpose: Fit a score histogram to the extreme value + * distribution. Set the parameters lambda + * and mu in the histogram structure. Fill in the + * expected values in the histogram. Calculate + * a chi-square test as a measure of goodness of fit. + * + * This is the basic version of ExtremeValueFitHistogram(), + * in a nonrobust form: simple linear regression with no + * outlier pruning. + * + * Methods: Uses a linear regression fitting method [Collins88,Lawless82] + * + * Args: h - histogram to fit + * + * Return: (void) + */ +void +EVDBasicFit(struct histogram_s *h) +{ + float *d; /* distribution P(S < x) */ + float *x; /* x-axis of P(Smin */ + float slope, intercept; /* m,b fit from Linefit() */ + float corr; /* correlation coeff of line fit, not used */ + float lambda, mu; /* slope, intercept converted to EVD params */ + + /* Allocations for x, y axes + * distribution d runs from min..max with indices 0..max-min + * i.e. score - min = index into d, x, histogram, and expect + */ + hsize = h->highscore - h->lowscore + 1; + d = (float *) MallocOrDie(sizeof(float) * hsize); + x = (float *) MallocOrDie(sizeof(float) * hsize); + for (idx = 0; idx < hsize; idx++) + d[idx] = x[idx] = 0.; + + /* Calculate P(S < x) distribution from histogram. + * note off-by-one of sc, because histogram bin contains scores between + * x and x+1. + */ + sum = 0; + for (sc = h->lowscore; sc <= h->highscore; sc++) + { + sum += h->histogram[sc - h->min]; + d[sc - h->lowscore] = (float) sum / (float) h->total; + x[sc - h->lowscore] = (float) (sc + 1); + } + + /* Do a linear regression fit to the log[-log(P(Sx))] = -lambda * x + lambda * mu + * so lambda = -m and mu = b/lambda + */ + /* convert y axis to log[-log(P(Slowscore; sc < h->highscore; sc++) + d[sc - h->lowscore] = log(-1. * log(d[sc - h->lowscore])); + + /* do the linear regression */ + Linefit(x, d, hsize-1, &intercept, &slope, &corr); + /* calc mu, lambda */ + lambda = -1. * slope; + mu = intercept / lambda; + + /* Set the EVD parameters in the histogram; + * pass 2 for additional lost degrees of freedom because we fit mu, lambda. + */ + ExtremeValueSetHistogram(h, mu, lambda, h->lowscore, h->highscore, 2); + + free(x); + free(d); + return; +} + + +/* Function: ExtremeValueFitHistogram() + * Date: SRE, Sat Nov 15 17:16:15 1997 [St. Louis] + * + * Purpose: Fit a score histogram to the extreme value + * distribution. Set the parameters lambda + * and mu in the histogram structure. Calculate + * a chi-square test as a measure of goodness of fit. + * + * Methods: Uses a maximum likelihood method [Lawless82]. + * Lower outliers are removed by censoring the data below the peak. + * Upper outliers are removed iteratively using method + * described by [Mott92]. + * + * Args: h - histogram to fit + * censor - TRUE to censor data left of the peak + * high_hint - score cutoff; above this are `real' hits that aren't fit + * + * Return: 1 if fit is judged to be valid. + * else 0 if fit is invalid (too few seqs.) + */ +int +ExtremeValueFitHistogram(struct histogram_s *h, int censor, float high_hint) +{ + float *x; /* array of EVD samples to fit */ + int *y; /* histogram counts */ + int n; /* number of observed samples */ + int z; /* number of censored samples */ + int hsize; /* size of histogram */ + float lambda, mu; /* new estimates of lambda, mu */ + int sc; /* loop index for score */ + int lowbound; /* lower bound of fitted region*/ + int highbound; /* upper bound of fitted region*/ + int new_highbound; + int iteration; + + /* Determine lower bound on fitted region; + * if we're censoring the data, choose the peak of the histogram. + * if we're not, then we take the whole histogram. + */ + lowbound = h->lowscore; + if (censor) + { + int max = -1; + for (sc = h->lowscore; sc <= h->highscore; sc++) + if (h->histogram[sc - h->min] > max) + { + max = h->histogram[sc - h->min]; + lowbound = sc; + } + } + + /* Determine initial upper bound on fitted region. + */ + highbound = MIN(high_hint, h->highscore); + + /* Now, iteratively converge on our lambda, mu: + */ + for (iteration = 0; iteration < 100; iteration++) + { + /* Construct x, y vectors. + */ + x = NULL; + y = NULL; + hsize = highbound - lowbound + 1; + if (hsize < 5) goto FITFAILED; /* require at least 5 bins or we don't fit */ + + x = MallocOrDie(sizeof(float) * hsize); + y = MallocOrDie(sizeof(int) * hsize); + n = 0; + for (sc = lowbound; sc <= highbound; sc++) + { + x[sc-lowbound] = (float) sc + 0.5; /* crude, but tests OK */ + y[sc-lowbound] = h->histogram[sc - h->min]; + n += h->histogram[sc - h->min]; + } + + if (n < 100) goto FITFAILED; /* require fitting to at least 100 points */ + + /* If we're censoring, estimate z, the number of censored guys + * left of the bound. Our initial estimate is crudely that we're + * missing e^-1 of the total distribution (which would be exact + * if we censored exactly at mu; but we censored at the observed peak). + * Subsequent estimates are more exact based on our current estimate of mu. + */ + if (censor) + { + if (iteration == 0) + z = MIN(h->total-n, (int) (0.58198 * (float) n)); + else + { + double psx; + psx = EVDDistribution((float) lowbound, mu, lambda); + z = MIN(h->total-n, (int) ((double) n * psx / (1. - psx))); + } + } + + /* Do an ML fit + */ + if (censor) { + if (! EVDCensoredFit(x, y, hsize, z, (float) lowbound, &mu, &lambda)) + goto FITFAILED; + } else + if (! EVDMaxLikelyFit(x, y, hsize, &mu, &lambda)) + goto FITFAILED; + + /* Find the Eval = 1 point as a new highbound; + * the total number of samples estimated to "belong" to the EVD is n+z + */ + new_highbound = (int) + (mu - (log (-1. * log((double) (n+z-1) / (double)(n+z))) / lambda)); + + free(x); + free(y); + if (new_highbound >= highbound) break; + highbound = new_highbound; + } + + /* Set the histogram parameters; + * - we fit from lowbound to highbound; thus we lose 2 degrees of freedom + * for fitting mu, lambda, but we get 1 back because we're unnormalized + * in this interval, hence we pass 2-1 = 1 as ndegrees. + */ + ExtremeValueSetHistogram(h, mu, lambda, lowbound, highbound, 1); + return 1; + +FITFAILED: + UnfitHistogram(h); + if (x != NULL) free(x); + if (y != NULL) free(y); + return 0; +} + + +/* Function: ExtremeValueSetHistogram() + * + * Purpose: Instead of fitting the histogram to an EVD, + * simply set the EVD parameters from an external source. + * + * Args: h - the histogram to set + * mu - mu location parameter + * lambda - lambda scale parameter + * lowbound - low bound of the histogram that was fit + * highbound- high bound of histogram that was fit + * ndegrees - extra degrees of freedom to subtract in X^2 test: + * typically 0 if mu, lambda are parametric, + * else 2 if mu, lambda are estimated from data + */ +void +ExtremeValueSetHistogram(struct histogram_s *h, float mu, float lambda, + float lowbound, float highbound, int ndegrees) +{ + int sc; + int hsize, idx; + int nbins; + float delta; + + UnfitHistogram(h); + h->fit_type = HISTFIT_EVD; + h->param[EVD_LAMBDA] = lambda; + h->param[EVD_MU] = mu; + + hsize = h->max - h->min + 1; + h->expect = (float *) MallocOrDie(sizeof(float) * hsize); + for (idx = 0; idx < hsize; idx++) + h->expect[idx] = 0.; + + /* Calculate the expected values for the histogram. + */ + for (sc = h->min; sc <= h->max; sc++) + h->expect[sc - h->min] = + ExtremeValueE((float)(sc), h->param[EVD_MU], h->param[EVD_LAMBDA], + h->total) - + ExtremeValueE((float)(sc+1), h->param[EVD_MU], h->param[EVD_LAMBDA], + h->total); + + /* Calculate the goodness-of-fit (within whole region) + */ + h->chisq = 0.; + nbins = 0; + for (sc = lowbound; sc <= highbound; sc++) + if (h->expect[sc-h->min] >= 5. && h->histogram[sc-h->min] >= 5) + { + delta = (float) h->histogram[sc-h->min] - h->expect[sc-h->min]; + h->chisq += delta * delta / h->expect[sc-h->min]; + nbins++; + } + + /* Since we fit the whole histogram, there is at least + * one constraint on chi-square: the normalization to h->total. + */ + if (nbins > 1 + ndegrees) + h->chip = (float) IncompleteGamma((double)(nbins-1-ndegrees)/2., + (double) h->chisq/2.); + else + h->chip = 0.; +} + + + +/* Function: GaussianFitHistogram() + * + * Purpose: Fit a score histogram to a Gaussian distribution. + * Set the parameters mean and sd in the histogram + * structure, as well as a chi-squared test for + * goodness of fit. + * + * Args: h - histogram to fit + * high_hint - score cutoff; above this are `real' hits that aren't fit + * + * Return: 1 if fit is judged to be valid. + * else 0 if fit is invalid (too few seqs.) + */ +int +GaussianFitHistogram(struct histogram_s *h, float high_hint) +{ + float sum; + float sqsum; + float delta; + int sc; + int nbins; + int hsize, idx; + + /* Clear any previous fitting from the histogram. + */ + UnfitHistogram(h); + + /* Determine if we have enough hits to fit the histogram; + * arbitrarily require 1000. + */ + if (h->total < 1000) { h->fit_type = HISTFIT_NONE; return 0; } + + /* Simplest algorithm for mean and sd; + * no outlier detection yet (not even using high_hint) + * + * Magic 0.5 correction is because our histogram is for + * scores between x and x+1; we estimate the expectation + * (roughly) as x + 0.5. + */ + sum = sqsum = 0.; + for (sc = h->lowscore; sc <= h->highscore; sc++) + { + delta = (float) sc + 0.5; + sum += (float) h->histogram[sc-h->min] * delta; + sqsum += (float) h->histogram[sc-h->min] * delta * delta; + } + h->fit_type = HISTFIT_GAUSSIAN; + h->param[GAUSS_MEAN] = sum / (float) h->total; + h->param[GAUSS_SD] = sqrt((sqsum - (sum*sum/(float)h->total)) / + (float)(h->total-1)); + + /* Calculate the expected values for the histogram. + * Note that the magic 0.5 correction appears again. + * Calculating difference between distribution functions for Gaussian + * would be correct but hard. + */ + hsize = h->max - h->min + 1; + h->expect = (float *) MallocOrDie(sizeof(float) * hsize); + for (idx = 0; idx < hsize; idx++) + h->expect[idx] = 0.; + + for (sc = h->min; sc <= h->max; sc++) + { + delta = (float) sc + 0.5 - h->param[GAUSS_MEAN]; + h->expect[sc - h->min] = + (float) h->total * ((1. / (h->param[GAUSS_SD] * sqrt(2.*3.14159))) * + (exp(-1.* delta*delta / (2. * h->param[GAUSS_SD] * h->param[GAUSS_SD])))); + } + + /* Calculate the goodness-of-fit (within region that was fitted) + */ + h->chisq = 0.; + nbins = 0; + for (sc = h->lowscore; sc <= h->highscore; sc++) + if (h->expect[sc-h->min] >= 5. && h->histogram[sc-h->min] >= 5) + { + delta = (float) h->histogram[sc-h->min] - h->expect[sc-h->min]; + h->chisq += delta * delta / h->expect[sc-h->min]; + nbins++; + } + /* -1 d.f. for normalization; -2 d.f. for two free parameters */ + if (nbins > 3) + h->chip = (float) IncompleteGamma((double)(nbins-3)/2., + (double) h->chisq/2.); + else + h->chip = 0.; + + return 1; +} + + +/* Function: GaussianSetHistogram() + * + * Purpose: Instead of fitting the histogram to a Gaussian, + * simply set the Gaussian parameters from an external source. + */ +void +GaussianSetHistogram(struct histogram_s *h, float mean, float sd) +{ + int sc; + int hsize, idx; + int nbins; + float delta; + + UnfitHistogram(h); + h->fit_type = HISTFIT_GAUSSIAN; + h->param[GAUSS_MEAN] = mean; + h->param[GAUSS_SD] = sd; + + /* Calculate the expected values for the histogram. + */ + hsize = h->max - h->min + 1; + h->expect = (float *) MallocOrDie(sizeof(float) * hsize); + for (idx = 0; idx < hsize; idx++) + h->expect[idx] = 0.; + + /* Note: ideally we'd use the Gaussian distribution function + * to find the histogram occupancy in the window sc..sc+1. + * However, the distribution function is hard to calculate. + * Instead, estimate the histogram by taking the density at sc+0.5. + */ + for (sc = h->min; sc <= h->max; sc++) + { + delta = ((float)sc + 0.5) - h->param[GAUSS_MEAN]; + h->expect[sc - h->min] = + (float) h->total * ((1. / (h->param[GAUSS_SD] * sqrt(2.*3.14159))) * + (exp(-1.*delta*delta / (2. * h->param[GAUSS_SD] * h->param[GAUSS_SD])))); + } + + /* Calculate the goodness-of-fit (within whole region) + */ + h->chisq = 0.; + nbins = 0; + for (sc = h->lowscore; sc <= h->highscore; sc++) + if (h->expect[sc-h->min] >= 5. && h->histogram[sc-h->min] >= 5) + { + delta = (float) h->histogram[sc-h->min] - h->expect[sc-h->min]; + h->chisq += delta * delta / h->expect[sc-h->min]; + nbins++; + } + /* -1 d.f. for normalization */ + if (nbins > 1) + h->chip = (float) IncompleteGamma((double)(nbins-1)/2., + (double) h->chisq/2.); + else + h->chip = 0.; +} + + + +/* Function: EVDDensity() + * Date: SRE, Sat Nov 15 19:37:52 1997 [St. Louis] + * + * Purpose: Return the extreme value density P(S=x) at + * a given point x, for an EVD controlled by + * parameters mu and lambda. + */ +double +EVDDensity(float x, float mu, float lambda) +{ + return (lambda * exp(-1. * lambda * (x - mu) + - exp(-1. * lambda * (x - mu)))); +} + +/* Function: EVDDistribution() + * Date: SRE, Tue Nov 18 08:02:22 1997 [St. Louis] + * + * Purpose: Returns the extreme value distribution P(S < x) + * evaluated at x, for an EVD controlled by parameters + * mu and lambda. + */ +double +EVDDistribution(float x, float mu, float lambda) +{ + return (exp(-1. * exp(-1. * lambda * (x - mu)))); +} + +/* Function: ExtremeValueP() + * + * Purpose: Calculate P(S>x) according to an extreme + * value distribution, given x and the parameters + * of the distribution (characteristic + * value mu, decay constant lambda). + * + * This function is exquisitely prone to + * floating point exceptions if it isn't coded + * carefully. + * + * Args: x = score + * mu = characteristic value of extreme value distribution + * lambda = decay constant of extreme value distribution + * + * Return: P(S>x) + */ +double +ExtremeValueP(float x, float mu, float lambda) +{ + double y; + /* avoid exceptions near P=1.0 */ + /* typical 32-bit sys: if () < -3.6, return 1.0 */ + if ((lambda * (x - mu)) <= -1. * log(-1. * log(DBL_EPSILON))) return 1.0; + /* avoid underflow fp exceptions near P=0.0*/ + if ((lambda * (x - mu)) >= 2.3 * (double) DBL_MAX_10_EXP) return 0.0; + /* a roundoff issue arises; use 1 - e^-x --> x for small x */ + y = exp(-1. * lambda * (x - mu)); + if (y < 1e-7) return y; + else return (1.0 - exp(-1. * y)); +} + + +/* Function: ExtremeValueP2() + * + * Purpose: Calculate P(S>x) in a database of size N, + * using P(S>x) for a single sequence, according + * to a Poisson distribution. + * + * Args: x = score + * mu = characteristic value of extreme value distribution + * lambda = decay constant of extreme value distribution + * N = number of trials (number of sequences) + * + * Return: P(S>x) for database of size N + */ +double +ExtremeValueP2(float x, float mu, float lambda, int N) +{ + double y; + y = N * ExtremeValueP(x,mu,lambda); + if (y < 1e-7) return y; + else return (1.0 - exp(-1. * y)); +} + +/* Function: ExtremeValueE() + * + * Purpose: Calculate E(S>x) in a database of size N, + * using P(S>x) for a single sequence: simply np. + * + * Args: x = score + * mu = characteristic value of extreme value distribution + * lambda = decay constant of extreme value distribution + * N = number of trials (number of sequences) + * + * Return: E(S>x) for database of size N + */ +double +ExtremeValueE(float x, float mu, float lambda, int N) +{ + return (double)N * ExtremeValueP(x,mu,lambda); +} + + +/* Function: EVDrandom() + * + * Purpose: Randomly sample an x from an EVD. + * Trivially done by the transformation method, since + * the distribution is analytical: + * x = \mu - \frac{\log \left[ -\log P(S= c + * lambda - a lambda to test + * ret_f - RETURN: 4.2.2 evaluated at lambda + * ret_df - RETURN: first derivative of 4.2.2 evaluated at lambda + * + * Return: (void) + */ +void +Lawless422(float *x, int *y, int n, int z, float c, + float lambda, float *ret_f, float *ret_df) +{ + double esum; /* \sum e^(-lambda xi) + z term */ + double xesum; /* \sum xi e^(-lambda xi) + z term */ + double xxesum; /* \sum xi^2 e^(-lambda xi) + z term */ + double xsum; /* \sum xi (no z term) */ + double mult; /* histogram count multiplier */ + double total; /* total samples */ + int i; + + esum = xesum = xsum = xxesum = total = 0.; + for (i = 0; i < n; i++) + { + mult = (y == NULL) ? 1. : (double) y[i]; + xsum += mult * x[i]; + esum += mult * exp(-1. * lambda * x[i]); + xesum += mult * x[i] * exp(-1. * lambda * x[i]); + xxesum += mult * x[i] * x[i] * exp(-1. * lambda * x[i]); + total += mult; + } + + /* Add z terms for censored data + */ + esum += (double) z * exp(-1. * lambda * c); + xesum += (double) z * c * exp(-1. * lambda * c); + xxesum += (double) z * c * c * exp(-1. * lambda * c); + + *ret_f = 1./lambda - xsum / total + xesum / esum; + *ret_df = ((xesum / esum) * (xesum / esum)) + - (xxesum / esum) + - (1. / (lambda * lambda)); + + return; +} + + + +/* Function: EVDMaxLikelyFit() + * Date: SRE, Fri Nov 14 07:56:29 1997 [St. Louis] + * + * Purpose: Given a list or a histogram of EVD-distributed samples, + * find maximum likelihood parameters lambda and + * mu. + * + * Algorithm: Uses approach described in [Lawless82]. Solves + * for lambda using Newton/Raphson iterations; + * then substitutes lambda into Lawless' equation 4.1.5 + * to get mu. + * + * Newton/Raphson algorithm developed from description in + * Numerical Recipes in C [Press88]. + * + * Args: x - list of EVD distributed samples or x-axis of histogram + * c - NULL, or y-axis of histogram + * n - number of samples, or number of histogram bins + * ret_mu : RETURN: ML estimate of mu + * ret_lambda : RETURN: ML estimate of lambda + * + * Return: 1 on success; 0 on any failure + */ +int +EVDMaxLikelyFit(float *x, int *c, int n, float *ret_mu, float *ret_lambda) +{ + float lambda, mu; + float fx; /* f(x) */ + float dfx; /* f'(x) */ + double esum; /* \sum e^(-lambda xi) */ + double mult; + double total; + float tol = 1e-5; + int i; + + /* 1. Find an initial guess at lambda: linear regression here? + */ + lambda = 0.2; + + /* 2. Use Newton/Raphson to solve Lawless 4.1.6 and find ML lambda + */ + for (i = 0; i < 100; i++) + { + Lawless416(x, c, n, lambda, &fx, &dfx); + if (fabs(fx) < tol) break; /* success */ + lambda = lambda - fx / dfx; /* Newton/Raphson is simple */ + if (lambda <= 0.) lambda = 0.001; /* but be a little careful */ + } + + /* 2.5: If we did 100 iterations but didn't converge, Newton/Raphson failed. + * Resort to a bisection search. Worse convergence speed + * but guaranteed to converge (unlike Newton/Raphson). + * We assume (!?) that fx is a monotonically decreasing function of x; + * i.e. fx > 0 if we are left of the root, fx < 0 if we + * are right of the root. + */ + if (i == 100) + { + float left, right, mid; + SQD_DPRINTF2(("EVDMaxLikelyFit(): Newton/Raphson failed; switchover to bisection")); + + /* First we need to bracket the root */ + lambda = right = left = 0.2; + Lawless416(x, c, n, lambda, &fx, &dfx); + if (fx < 0.) + { /* fix right; search left. */ + do { + left -= 0.1; + if (left < 0.) { + SQD_DPRINTF2(("EVDMaxLikelyFit(): failed to bracket root")); + return 0; + } + Lawless416(x, c, n, left, &fx, &dfx); + } while (fx < 0.); + } + else + { /* fix left; search right. */ + do { + right += 0.1; + Lawless416(x, c, n, right, &fx, &dfx); + if (right > 100.) { + SQD_DPRINTF2(("EVDMaxLikelyFit(): failed to bracket root")); + return 0; + } + } while (fx > 0.); + } + /* now we bisection search in left/right interval */ + for (i = 0; i < 100; i++) + { + mid = (left + right) / 2.; + Lawless416(x, c, n, mid, &fx, &dfx); + if (fabs(fx) < tol) break; /* success */ + if (fx > 0.) left = mid; + else right = mid; + } + if (i == 100) { + SQD_DPRINTF2(("EVDMaxLikelyFit(): even the bisection search failed")); + return 0; + } + lambda = mid; + } + + /* 3. Substitute into Lawless 4.1.5 to find mu + */ + esum = 0.; + total = 0.; + for (i = 0; i < n; i++) + { + mult = (c == NULL) ? 1. : (double) c[i]; + esum += mult * exp(-1 * lambda * x[i]); + total += mult; + } + mu = -1. * log(esum / total) / lambda; + + *ret_lambda = lambda; + *ret_mu = mu; + return 1; +} + + +/* Function: EVDCensoredFit() + * Date: SRE, Mon Nov 17 10:01:05 1997 [St. Louis] + * + * Purpose: Given a /left-censored/ list or histogram of EVD-distributed + * samples, as well as the number of censored samples z and the + * censoring value c, + * find maximum likelihood parameters lambda and + * mu. + * + * Algorithm: Uses approach described in [Lawless82]. Solves + * for lambda using Newton/Raphson iterations; + * then substitutes lambda into Lawless' equation 4.2.3 + * to get mu. + * + * Newton/Raphson algorithm developed from description in + * Numerical Recipes in C [Press88]. + * + * Args: x - list of EVD distributed samples or x-axis of histogram + * y - NULL, or y-axis of histogram + * n - number of observed samples,or number of histogram bins + * z - number of censored samples + * c - censoring value (all x_i >= c) + * ret_mu : RETURN: ML estimate of mu + * ret_lambda : RETURN: ML estimate of lambda + * + * Return: (void) + */ +int +EVDCensoredFit(float *x, int *y, int n, int z, float c, + float *ret_mu, float *ret_lambda) +{ + float lambda, mu; + float fx; /* f(x) */ + float dfx; /* f'(x) */ + double esum; /* \sum e^(-lambda xi) */ + double mult; + double total; + float tol = 1e-5; + int i; + + /* 1. Find an initial guess at lambda: linear regression here? + */ + lambda = 0.2; + + /* 2. Use Newton/Raphson to solve Lawless 4.2.2 and find ML lambda + */ + for (i = 0; i < 100; i++) + { + Lawless422(x, y, n, z, c, lambda, &fx, &dfx); + if (fabs(fx) < tol) break; /* success */ + lambda = lambda - fx / dfx; /* Newton/Raphson is simple */ + if (lambda <= 0.) lambda = 0.001; /* but be a little careful */ + } + + /* 2.5: If we did 100 iterations but didn't converge, Newton/Raphson failed. + * Resort to a bisection search. Worse convergence speed + * but guaranteed to converge (unlike Newton/Raphson). + * We assume (!?) that fx is a monotonically decreasing function of x; + * i.e. fx > 0 if we are left of the root, fx < 0 if we + * are right of the root. + */ + if (i == 100) + { + float left, right, mid; + /* First we need to bracket the root */ + SQD_DPRINTF2(("EVDCensoredFit(): Newton/Raphson failed; switched to bisection")); + lambda = right = left = 0.2; + Lawless422(x, y, n, z, c, lambda, &fx, &dfx); + if (fx < 0.) + { /* fix right; search left. */ + do { + left -= 0.03; + if (left < 0.) { + SQD_DPRINTF2(("EVDCensoredFit(): failed to bracket root")); + return 0; + } + Lawless422(x, y, n, z, c, left, &fx, &dfx); + } while (fx < 0.); + } + else + { /* fix left; search right. */ + do { + right += 0.1; + Lawless422(x, y, n, z, c, left, &fx, &dfx); + if (right > 100.) { + SQD_DPRINTF2(("EVDCensoredFit(): failed to bracket root")); + return 0; + } + } while (fx > 0.); + } + /* now we bisection search in left/right interval */ + for (i = 0; i < 100; i++) + { + mid = (left + right) / 2.; + Lawless422(x, y, n, z, c, left, &fx, &dfx); + if (fabs(fx) < tol) break; /* success */ + if (fx > 0.) left = mid; + else right = mid; + } + if (i == 100) { + SQD_DPRINTF2(("EVDCensoredFit(): even the bisection search failed")); + return 0; + } + lambda = mid; + } + + /* 3. Substitute into Lawless 4.2.3 to find mu + */ + esum = total = 0.; + for (i = 0; i < n; i++) + { + mult = (y == NULL) ? 1. : (double) y[i]; + esum += mult * exp(-1. * lambda * x[i]); + total += mult; + } + esum += (double) z * exp(-1. * lambda * c); /* term from censored data */ + mu = -1. * log(esum / total) / lambda; + + *ret_lambda = lambda; + *ret_mu = mu; + return 1; +} + + + diff --git a/forester/archive/RIO/others/hmmer/src/hmmalign.c b/forester/archive/RIO/others/hmmer/src/hmmalign.c new file mode 100644 index 0000000..27d0802 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmalign.c @@ -0,0 +1,325 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmalign.c + * SRE, Thu Dec 18 16:05:29 1997 [St. Louis] + * + * main() for aligning a set of sequences to an HMM. + * RCS $Id: hmmalign.c,v 1.1.1.1 2005/03/22 08:34:00 cmzmasek Exp $ + */ + +#include +#include + +#include "structs.h" /* data structures, macros, #define's */ +#include "config.h" /* compile-time configuration constants */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "squid.h" /* general sequence analysis library */ +#include "msa.h" /* squid's multiple alignment i/o */ + +static char banner[] = "hmmalign - align sequences to an HMM profile"; + +static char usage[] = "\ +Usage: hmmalign [-options] \n\ +Available options are:\n\ + -h : help; print brief help on version and usage\n\ + -m : only print symbols aligned to match states\n\ + -o : save alignment in file in SELEX format\n\ + -q : quiet - suppress verbose banner\n\ +"; + +static char experts[] = "\ + --informat : sequence file is in format , not FASTA\n\ + --mapali : include alignment in file using map in HMM\n\ + --withali : include alignment to (fixed) alignment in file \n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-m", TRUE, sqdARG_NONE } , + { "-o", TRUE, sqdARG_STRING }, + { "-q", TRUE, sqdARG_NONE }, + { "--informat",FALSE, sqdARG_STRING }, + { "--mapali", FALSE, sqdARG_STRING }, + { "--withali", FALSE, sqdARG_STRING }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +static void include_alignment(char *seqfile, struct plan7_s *hmm, int do_mapped, + char ***rseq, char ***dsq, SQINFO **sqinfo, + struct p7trace_s ***tr, int *nseq); + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMMs from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + struct plan7_s *hmm; /* HMM to align to */ + char *seqfile; /* file to read target sequence from */ + int format; /* format of seqfile */ + char **rseq; /* raw, unaligned sequences */ + SQINFO *sqinfo; /* info associated with sequences */ + char **dsq; /* digitized raw sequences */ + int nseq; /* number of sequences */ + float *wgt; /* weights to assign to alignment */ + MSA *msa; /* alignment that's created */ + int i; + struct p7trace_s **tr; /* traces for aligned sequences */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + int be_quiet; /* TRUE to suppress verbose banner */ + int matchonly; /* TRUE to show only match state syms */ + char *outfile; /* optional alignment output file */ + FILE *ofp; /* handle on alignment output file */ + char *withali; /* name of additional alignment file to align */ + char *mapali; /* name of additional alignment file to map */ + + /*********************************************** + * Parse command line + ***********************************************/ + + format = SQFILE_UNKNOWN; /* default: autodetect format */ + matchonly = FALSE; + outfile = NULL; + be_quiet = FALSE; + withali = NULL; + mapali = NULL; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-m") == 0) matchonly= TRUE; + else if (strcmp(optname, "-o") == 0) outfile = optarg; + else if (strcmp(optname, "-q") == 0) be_quiet = TRUE; + else if (strcmp(optname, "--mapali") == 0) mapali = optarg; + else if (strcmp(optname, "--withali") == 0) withali = optarg; + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == SQFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) + { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + if (argc - optind != 2) + Die("Incorrect number of arguments.\n%s\n", usage); + + hmmfile = argv[optind++]; + seqfile = argv[optind++]; + + /*********************************************** + * Open HMM file (might be in HMMERDB or current directory). + * Read a single HMM from it. + * + * Currently hmmalign disallows the J state and + * only allows one domain per sequence. To preserve + * the S/W entry information, the J state is explicitly + * disallowed, rather than calling a Plan7*Config() function. + * this is a workaround in 2.1 for the 2.0.x "yo!" bug. + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, "HMMERDB")) == NULL) + Die("Failed to open HMM file %s\n%s", hmmfile, usage); + if (!HMMFileRead(hmmfp, &hmm)) + Die("Failed to read any HMMs from %s\n", hmmfile); + HMMFileClose(hmmfp); + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", hmmfile); + hmm->xt[XTE][MOVE] = 1.; /* only 1 domain/sequence ("global" alignment) */ + hmm->xt[XTE][LOOP] = 0.; + P7Logoddsify(hmm, TRUE); + /* do we have the map we might need? */ + if (mapali != NULL && ! (hmm->flags & PLAN7_MAP)) + Die("HMMER: HMM file %s has no map; you can't use --mapali.", hmmfile); + + /*********************************************** + * Open sequence file in current directory. + * Read all seqs from it. + ***********************************************/ + + if (! ReadMultipleRseqs(seqfile, format, &rseq, &sqinfo, &nseq)) + Die("Failed to read any sequences from file %s", seqfile); + + /*********************************************** + * Show the banner + ***********************************************/ + + if (! be_quiet) + { + Banner(stdout, banner); + printf( "HMM file: %s\n", hmmfile); + printf( "Sequence file: %s\n", seqfile); + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n"); + } + + /*********************************************** + * Do the work + ***********************************************/ + + /* Allocations and initializations. + */ + dsq = MallocOrDie(sizeof(char *) * nseq); + tr = MallocOrDie(sizeof(struct p7trace_s *) * nseq); + + /* Align each sequence to the model, collect traces + */ + for (i = 0; i < nseq; i++) + { + dsq[i] = DigitizeSequence(rseq[i], sqinfo[i].len); + + if (P7ViterbiSize(sqinfo[i].len, hmm->M) <= RAMLIMIT) + (void) P7Viterbi(dsq[i], sqinfo[i].len, hmm, &(tr[i])); + else + (void) P7SmallViterbi(dsq[i], sqinfo[i].len, hmm, &(tr[i])); + } + + /* Include an aligned alignment, if desired. + */ + if (mapali != NULL) + include_alignment(mapali, hmm, TRUE, &rseq, &dsq, &sqinfo, &tr, &nseq); + if (withali != NULL) + include_alignment(withali, hmm, FALSE, &rseq, &dsq, &sqinfo, &tr, &nseq); + + /* Turn traces into a multiple alignment + */ + wgt = MallocOrDie(sizeof(float) * nseq); + FSet(wgt, nseq, 1.0); + msa = P7Traces2Alignment(dsq, sqinfo, wgt, nseq, hmm->M, tr, matchonly); + + /*********************************************** + * Output the alignment + ***********************************************/ + + if (outfile != NULL && (ofp = fopen(outfile, "w")) != NULL) + { + WriteStockholm(ofp, msa); + printf("Alignment saved in file %s\n", outfile); + fclose(ofp); + } + else + WriteStockholm(stdout, msa); + + /*********************************************** + * Cleanup and exit + ***********************************************/ + + for (i = 0; i < nseq; i++) + { + P7FreeTrace(tr[i]); + FreeSequence(rseq[i], &(sqinfo[i])); + free(dsq[i]); + } + MSAFree(msa); + FreePlan7(hmm); + free(sqinfo); + free(rseq); + free(dsq); + free(wgt); + free(tr); + + SqdClean(); + return 0; +} + + +/* Function: include_alignment() + * Date: SRE, Sun Jul 5 15:25:13 1998 [St. Louis] + * + * Purpose: Given the name of a multiple alignment file, + * align that alignment to the HMM, and add traces + * to an existing array of traces. If do_mapped + * is TRUE, we use the HMM's map file. If not, + * we use P7ViterbiAlignAlignment(). + * + * Args: seqfile - name of alignment file + * hmm - model to align to + * do_mapped- TRUE if we're to use the HMM's alignment map + * rsq - RETURN: array of rseqs to add to + * dsq - RETURN: array of dsq to add to + * sqinfo - RETURN: array of SQINFO to add to + * tr - RETURN: array of traces to add to + * nseq - RETURN: number of seqs + * + * Returns: new, realloc'ed arrays for rsq, dsq, sqinfo, tr; nseq is + * increased to nseq+ainfo.nseq. + */ +static void +include_alignment(char *seqfile, struct plan7_s *hmm, int do_mapped, + char ***rsq, char ***dsq, SQINFO **sqinfo, + struct p7trace_s ***tr, int *nseq) +{ + int format; /* format of alignment file */ + MSA *msa; /* alignment to align to */ + MSAFILE *afp; + SQINFO *newinfo; /* sqinfo array from msa */ + char **newdsq; + char **newrseq; + int idx; /* counter over aseqs */ + struct p7trace_s *master; /* master trace */ + struct p7trace_s **addtr; /* individual traces for aseq */ + + format = MSAFILE_UNKNOWN; /* invoke Babelfish */ + if ((afp = MSAFileOpen(seqfile, format, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", seqfile); + if ((msa = MSAFileRead(afp)) == NULL) + Die("Failed to read an alignment from %s\n", seqfile); + MSAFileClose(afp); + for (idx = 0; idx < msa->nseq; idx++) + s2upper(msa->aseq[idx]); + newinfo = MSAToSqinfo(msa); + + /* Verify checksums before mapping */ + if (do_mapped && GCGMultchecksum(msa->aseq, msa->nseq) != hmm->checksum) + Die("The checksums for alignment file %s and the HMM alignment map don't match.", + seqfile); + /* Get a master trace */ + if (do_mapped) master = MasterTraceFromMap(hmm->map, hmm->M, msa->alen); + else master = P7ViterbiAlignAlignment(msa, hmm); + + /* convert to individual traces */ + ImposeMasterTrace(msa->aseq, msa->nseq, master, &addtr); + /* add those traces to existing ones */ + *tr = MergeTraceArrays(*tr, *nseq, addtr, msa->nseq); + + /* additional bookkeeping: add to dsq, sqinfo */ + *rsq = ReallocOrDie((*rsq), sizeof(char *) * (*nseq + msa->nseq)); + DealignAseqs(msa->aseq, msa->nseq, &newrseq); + for (idx = *nseq; idx < *nseq + msa->nseq; idx++) + (*rsq)[idx] = newrseq[idx - (*nseq)]; + free(newrseq); + + *dsq = ReallocOrDie((*dsq), sizeof(char *) * (*nseq + msa->nseq)); + DigitizeAlignment(msa, &newdsq); + for (idx = *nseq; idx < *nseq + msa->nseq; idx++) + (*dsq)[idx] = newdsq[idx - (*nseq)]; + free(newdsq); + /* unnecessarily complex, but I can't be bothered... */ + *sqinfo = ReallocOrDie((*sqinfo), sizeof(SQINFO) * (*nseq + msa->nseq)); + for (idx = *nseq; idx < *nseq + msa->nseq; idx++) + SeqinfoCopy(&((*sqinfo)[idx]), &(newinfo[idx - (*nseq)])); + + *nseq = *nseq + msa->nseq; + + /* Cleanup */ + P7FreeTrace(master); + MSAFree(msa); + /* Return */ + return; +} + + + diff --git a/forester/archive/RIO/others/hmmer/src/hmmbuild.c b/forester/archive/RIO/others/hmmer/src/hmmbuild.c new file mode 100644 index 0000000..b9308c7 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmbuild.c @@ -0,0 +1,1129 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmbuild.c + * SRE, Mon Nov 18 12:41:29 1996 + * + * main() for HMM construction from an alignment. + * CVS $Id: hmmbuild.c,v 1.1.1.1 2005/03/22 08:34:06 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "structs.h" /* data structures, macros, #define's */ +#include "config.h" /* compile-time configuration constants */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "squid.h" /* general sequence analysis library */ +#include "msa.h" /* squid's multiple alignment i/o */ + +static char banner[] = "hmmbuild - build a hidden Markov model from an alignment"; + +static char usage[] = "\ +Usage: hmmbuild [-options] \n\ + Available options are:\n\ + -h : help; print brief help on version and usage\n\ + -n : name; name this (first) HMM \n\ + -o : re-save annotated alignment to \n\ + -A : append; append this HMM to \n\ + -F : force; allow overwriting of \n\ +\n\ + Alternative search algorithm styles: (default: hmmls domain alignment)\n\ + -f : multi-hit local (hmmfs style)\n\ + -g : global alignment (hmms style, Needleman/Wunsch)\n\ + -s : local alignment (hmmsw style, Smith/Waterman)\n\ +"; + +static char experts[] = "\ + Alternative model construction strategies: (default: MAP)\n\ + --fast : Krogh/Haussler fast heuristic construction (see --gapmax)\n\ + --hand : manual construction (requires annotated alignment)\n\ +\n\ + Expert customization of parameters and priors:\n\ + --null : read null (random sequence) model from \n\ + --pam : heuristic PAM-based prior, using BLAST PAM matrix in \n\ + --prior : read Dirichlet prior parameters from \n\ +\n\ + Alternative sequence weighting strategies: (default: GSC weights)\n\ + --wblosum : Henikoff simple filter weights (see --idlevel)\n\ + --wgsc : Gerstein/Sonnhammer/Chothia tree weights (default)\n\ + --wme : maximum entropy (ME)\n\ + --wpb : Henikoff position-based weights\n\ + --wvoronoi : Sibbald/Argos Voronoi weights\n\ + --wnone : don't do any weighting\n\ + --noeff : don't use effective sequence number; just use nseq\n\ + --pbswitch : set switch from GSC to position-based wgts at > n seqs\n\ +\n\ + Forcing an alphabet: (normally autodetected)\n\ + --amino : override autodetection, assert that seqs are protein\n\ + --nucleic : override autodetection, assert that seqs are DNA/RNA\n\ +\n\ + Other expert options:\n\ + --archpri : set architecture size prior to {0.85} [0..1]\n\ + --binary : save the model in binary format, not ASCII text\n\ + --cfile : save count vectors to \n\ + --gapmax : max fraction of gaps in mat column {0.50} [0..1]\n\ + --idlevel : set frac. id level used by eff. nseq and --wblosum {0.62}\n\ + --informat : input alignment is in format , not Stockholm\n\ + --pamwgt : set weight on PAM-based prior to {20.}[>=0]\n\ + --swentry : set S/W aggregate entry prob. to {0.5}\n\ + --swexit : set S/W aggregate exit prob. to {0.5}\n\ + --verbose : print boring information\n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-f", TRUE, sqdARG_NONE }, + { "-g", TRUE, sqdARG_NONE }, + { "-h", TRUE, sqdARG_NONE }, + { "-n", TRUE, sqdARG_STRING}, + { "-o", TRUE, sqdARG_STRING}, + { "-s", TRUE, sqdARG_NONE }, + { "-A", TRUE, sqdARG_NONE }, + { "-F", TRUE, sqdARG_NONE }, + { "--amino", FALSE, sqdARG_NONE }, + { "--archpri", FALSE, sqdARG_FLOAT }, + { "--binary", FALSE, sqdARG_NONE }, + { "--cfile", FALSE, sqdARG_STRING}, + { "--fast", FALSE, sqdARG_NONE}, + { "--gapmax", FALSE, sqdARG_FLOAT }, + { "--hand", FALSE, sqdARG_NONE}, + { "--idlevel", FALSE, sqdARG_FLOAT }, + { "--informat",FALSE, sqdARG_STRING }, + { "--noeff", FALSE, sqdARG_NONE }, + { "--nucleic", FALSE, sqdARG_NONE }, + { "--null", FALSE, sqdARG_STRING }, + { "--pam", FALSE, sqdARG_STRING }, + { "--pamwgt", FALSE, sqdARG_FLOAT }, + { "--pbswitch",FALSE, sqdARG_INT }, + { "--prior", FALSE, sqdARG_STRING }, + { "--swentry", FALSE, sqdARG_FLOAT }, + { "--swexit", FALSE, sqdARG_FLOAT }, + { "--verbose", FALSE, sqdARG_NONE }, + { "--wgsc", FALSE, sqdARG_NONE }, + { "--wblosum", FALSE, sqdARG_NONE }, + { "--wme", FALSE, sqdARG_NONE }, + { "--wnone", FALSE, sqdARG_NONE }, + { "--wpb", FALSE, sqdARG_NONE }, + { "--wvoronoi",FALSE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +static void print_all_scores(FILE *fp, struct plan7_s *hmm, + char **dsq, MSA *msa, struct p7trace_s **tr); +static void save_countvectors(FILE *cfp, char *name, struct plan7_s *hmm); +static void position_average_score(struct plan7_s *hmm, char **seq, float *wgt, + int nseq, struct p7trace_s **tr, float *pernode, + float *ret_avg); +static float frag_trace_score(struct plan7_s *hmm, char *dsq, struct p7trace_s *tr, + float *pernode, float expected); +static void maximum_entropy(struct plan7_s *hmm, char **dsq, MSA *msa, + float eff_nseq, + struct p7prior_s *prior, struct p7trace_s **tr); + + +int +main(int argc, char **argv) +{ + char *seqfile; /* seqfile to read alignment from */ + int format; /* format of seqfile */ + MSAFILE *afp; /* open alignment file */ + MSA *msa; /* a multiple sequence alignment */ + char **dsq; /* digitized unaligned aseq's */ + struct plan7_s *hmm; /* constructed HMM; written to hmmfile */ + struct p7prior_s *pri; /* Dirichlet priors to use */ + struct p7trace_s **tr; /* fake tracebacks for aseq's */ + char *hmmfile; /* file to write HMM to */ + FILE *hmmfp; /* HMM output file handle */ + char *name; /* name of the HMM */ + int idx; /* counter for sequences */ + float randomseq[MAXABET]; /* null sequence model */ + float p1; /* null sequence model p1 transition */ + int nali; /* count number of alignments/HMMs */ + char fpopts[3]; /* options to open a file with, e.g. "ab" */ + int checksum; /* checksum of the alignment */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + enum p7_construction c_strategy; /* construction strategy choice */ + enum p7_weight { /* weighting strategy */ + WGT_NONE, WGT_GSC, WGT_BLOSUM, WGT_PB, WGT_VORONOI, WGT_ME} w_strategy; + enum p7_config { /* algorithm configuration strategy */ + P7_BASE_CONFIG, P7_LS_CONFIG, P7_FS_CONFIG, P7_SW_CONFIG } cfg_strategy; + float gapmax; /* max frac gaps in mat col for -k */ + int overwrite_protect; /* TRUE to prevent overwriting HMM file */ + int verbose; /* TRUE to show a lot of output */ + char *rndfile; /* random sequence model file to read */ + char *prifile; /* Dirichlet prior file to read */ + char *pamfile; /* PAM matrix file for heuristic prior */ + char *align_ofile; /* name of output alignment file */ + char *cfile; /* output file for count vectors */ + FILE *alignfp; /* open filehandle for alignment resaves */ + FILE *cfp; /* open filehandle for count vector saves*/ + float archpri; /* "architecture" prior on model size */ + float pamwgt; /* weight on PAM for heuristic prior */ + int do_append; /* TRUE to append to hmmfile */ + int do_binary; /* TRUE to write in binary format */ + float blosumlevel; /* BLOSUM frac id filtering level [0.62] */ + float swentry; /* S/W aggregate entry probability */ + float swexit; /* S/W aggregate exit probability */ + int do_eff; /* TRUE to set an effective seq number */ + float eff_nseq; /* effective sequence number */ + int pbswitch; /* nseq >= this, switchover to PB weights*/ + char *setname; /* NULL, or ptr to HMM name to set */ + int gapmax_set; /* TRUE if gapmax was set on commandline */ + + /*********************************************** + * Parse command line + ***********************************************/ + + format = MSAFILE_UNKNOWN; /* autodetect format by default. */ + c_strategy = P7_MAP_CONSTRUCTION; + w_strategy = WGT_GSC; + blosumlevel = 0.62; + cfg_strategy = P7_LS_CONFIG; + gapmax = 0.5; + overwrite_protect = TRUE; + verbose = FALSE; + rndfile = NULL; + prifile = NULL; + pamfile = NULL; + align_ofile = NULL; + alignfp = NULL; + cfile = NULL; + cfp = NULL; + archpri = 0.85; + pamwgt = 20.; + Alphabet_type = hmmNOTSETYET; /* initially unknown */ + name = NULL; + do_append = FALSE; + swentry = 0.5; + swexit = 0.5; + do_eff = TRUE; + do_binary = FALSE; + pbswitch = 1000; + setname = NULL; + gapmax_set = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-f") == 0) cfg_strategy = P7_FS_CONFIG; + else if (strcmp(optname, "-g") == 0) cfg_strategy = P7_BASE_CONFIG; + else if (strcmp(optname, "-n") == 0) setname = optarg; + else if (strcmp(optname, "-o") == 0) align_ofile = optarg; + else if (strcmp(optname, "-s") == 0) cfg_strategy = P7_SW_CONFIG; + else if (strcmp(optname, "-A") == 0) do_append = TRUE; + else if (strcmp(optname, "-F") == 0) overwrite_protect = FALSE; + else if (strcmp(optname, "--amino") == 0) SetAlphabet(hmmAMINO); + else if (strcmp(optname, "--archpri") == 0) archpri = atof(optarg); + else if (strcmp(optname, "--binary") == 0) do_binary = TRUE; + else if (strcmp(optname, "--cfile") == 0) cfile = optarg; + else if (strcmp(optname, "--fast") == 0) c_strategy = P7_FAST_CONSTRUCTION; + else if (strcmp(optname, "--gapmax") == 0) { gapmax = atof(optarg); gapmax_set = TRUE; } + else if (strcmp(optname, "--hand") == 0) c_strategy = P7_HAND_CONSTRUCTION; + else if (strcmp(optname, "--idlevel") == 0) blosumlevel = atof(optarg); + else if (strcmp(optname, "--noeff") == 0) do_eff = FALSE; + else if (strcmp(optname, "--nucleic") == 0) SetAlphabet(hmmNUCLEIC); + else if (strcmp(optname, "--null") == 0) rndfile = optarg; + else if (strcmp(optname, "--pam") == 0) pamfile = optarg; + else if (strcmp(optname, "--pamwgt") == 0) pamwgt = atof(optarg); + else if (strcmp(optname, "--pbswitch")== 0) pbswitch = atoi(optarg); + else if (strcmp(optname, "--prior") == 0) prifile = optarg; + else if (strcmp(optname, "--swentry") == 0) swentry = atof(optarg); + else if (strcmp(optname, "--swexit") == 0) swexit = atof(optarg); + else if (strcmp(optname, "--verbose") == 0) verbose = TRUE; + else if (strcmp(optname, "--wgsc") == 0) w_strategy = WGT_GSC; + else if (strcmp(optname, "--wblosum") == 0) w_strategy = WGT_BLOSUM; + else if (strcmp(optname, "--wme") == 0) w_strategy = WGT_ME; + else if (strcmp(optname, "--wpb") == 0) w_strategy = WGT_PB; + else if (strcmp(optname, "--wnone") == 0) w_strategy = WGT_NONE; + else if (strcmp(optname, "--wvoronoi")== 0) w_strategy = WGT_VORONOI; + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == MSAFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + if (! IsAlignmentFormat(format)) + Die("%s is an unaligned format, can't read as an alignment", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(EXIT_SUCCESS); + } + } + if (argc - optind != 2) + Die("Incorrect number of arguments.\n%s\n", usage); + + hmmfile = argv[optind++]; + seqfile = argv[optind++]; + + if (gapmax < 0. || gapmax > 1.) + Die("--gapmax must be a value from 0 to 1\n%s\n", usage); + if (archpri < 0. || archpri > 1.) + Die("--archpri must be a value from 0 to 1\n%s\n", usage); + if (overwrite_protect && !do_append && FileExists(hmmfile)) + Die("HMM file %s already exists. Rename or delete it.", hmmfile); + if (overwrite_protect && align_ofile != NULL && FileExists(align_ofile)) + Die("Alignment resave file %s exists. Rename or delete it.", align_ofile); + if (gapmax_set && c_strategy != P7_FAST_CONSTRUCTION) + Die("using --gapmax only makes sense if you use --fast"); + + /*********************************************** + * Preliminaries: open our files for i/o + ***********************************************/ + + /* Open the alignment */ + if ((afp = MSAFileOpen(seqfile, format, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", seqfile); + + /* Open the HMM output file */ + if (do_append) strcpy(fpopts, "a"); + else strcpy(fpopts, "w"); + if (do_binary) strcat(fpopts, "b"); + if ((hmmfp = fopen(hmmfile, fpopts)) == NULL) + Die("Failed to open HMM file %s for %s\n", hmmfile, + do_append ? "appending" : "writing"); + + /* Open the count vector save file */ + cfp = NULL; + if (cfile != NULL) + if ((cfp = fopen(cfile, "w")) == NULL) + Die("Failed to open count vector file %s for writing\n", cfile); + + /* Open the alignment resave file */ + alignfp = NULL; + if (align_ofile != NULL) + if ((alignfp = fopen(align_ofile, "w")) == NULL) + Die("Failed to open alignment resave file %s for writing\n", align_ofile); + + /*********************************************** + * Show the banner + ***********************************************/ + + Banner(stdout, banner); + printf("Alignment file: %s\n", + seqfile); + printf("File format: %s\n", + SeqfileFormat2String(afp->format)); + + printf("Search algorithm configuration: "); + if (cfg_strategy == P7_BASE_CONFIG) puts("Global alignment (hmms)"); + else if (cfg_strategy == P7_SW_CONFIG) { + puts("Local (hmmsw)"); + printf("S/W aggregate entry probability: %.2f\n", swentry); + printf("S/W aggregate exit probability: %.2f\n", swexit); + } + else if (cfg_strategy == P7_LS_CONFIG) puts("Multiple domain (hmmls)"); + else if (cfg_strategy == P7_FS_CONFIG) { + puts("Multiple local (hmmfs)"); + printf("S/W aggregate entry probability: %.2f\n", swentry); + printf("S/W aggregate exit probability: %.2f\n", swexit); + } + + printf("Model construction strategy: "); + if (c_strategy == P7_HAND_CONSTRUCTION) puts("Manual, from #=RF annotation"); + else if (c_strategy==P7_FAST_CONSTRUCTION) printf("Fast/ad hoc (gapmax %.2f)\n", gapmax); + else printf("MAP (gapmax hint: %.2f)\n", gapmax); + + printf("Null model used: %s\n", + (rndfile == NULL) ? "(default)" : rndfile); + + printf("Prior used: %s\n", + (prifile == NULL) ? "(default)" : prifile); + + printf("Sequence weighting method: "); + if (w_strategy == WGT_NONE) puts("none"); + else if (w_strategy == WGT_GSC) puts("G/S/C tree weights"); + else if (w_strategy == WGT_BLOSUM) printf("BLOSUM filter at %.2f id\n", blosumlevel); + else if (w_strategy == WGT_PB) puts("Henikoff position-based"); + else if (w_strategy == WGT_VORONOI)puts("Sibbald/Argos Voronoi"); + else if (w_strategy == WGT_ME) puts("Maximum entropy"); + + printf("New HMM file: %s %s\n", + hmmfile, do_append? "[appending]" : ""); + if (cfile != NULL) + printf("Count vectors saved to: %s\n", cfile); + if (align_ofile != NULL) + printf("Annotated alignment(s) resaved to: %s\n", align_ofile); + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n"); + + + /*********************************************** + * Get alignment(s), build HMMs one at a time + ***********************************************/ + + nali = 0; + while ((msa = MSAFileRead(afp)) != NULL) + { + /* Print some stuff about what we're about to do. + */ + if (msa->name != NULL) printf("Alignment: %s\n", msa->name); + else printf("Alignment: #%d\n", nali+1); + printf ("Number of sequences: %d\n", msa->nseq); + printf ("Number of columns: %d\n", msa->alen); + puts(""); + fflush(stdout); + + /* Make alignment upper case, because some symbol counting + * things are case-sensitive. + */ + for (idx = 0; idx < msa->nseq; idx++) + s2upper(msa->aseq[idx]); + + /* Set up the alphabet globals: + * either already set by --amino or --nucleic, or + * we guess based on the first alignment we see + */ + if (Alphabet_type == hmmNOTSETYET) + DetermineAlphabet(msa->aseq, msa->nseq); + + /* Do some initialization the first time through. + * This code must be delayed until after we've seen the + * first alignment, because we have to see the alphabet type first + */ + if (nali == 0) + { + /* Set up Dirichlet priors */ + if (prifile == NULL) pri = P7DefaultPrior(); + else pri = P7ReadPrior(prifile); + + if (pamfile != NULL) PAMPrior(pamfile, pri, pamwgt); + + /* Set up the null/random seq model */ + if (rndfile == NULL) P7DefaultNullModel(randomseq, &p1); + else P7ReadNullModel(rndfile, randomseq, &p1); + } + + /* Prepare unaligned digitized sequences for internal use + */ + DigitizeAlignment(msa, &dsq); + + /* In some respects we treat DNA more crudely for now; + * for example, we can't do eff seq #, because it's + * calibrated for protein. + */ + if (Alphabet_type == hmmNUCLEIC) + do_eff = FALSE; + + /* Determine "effective sequence number". + * The BlosumWeights() routine is now an efficient O(N) + * memory clustering algorithm that doesn't blow up on, + * say, Pfam's GP120 alignment (13000+ sequences) + */ + eff_nseq = (float) msa->nseq; + if (do_eff) + { + float *wgt; + printf("%-40s ... ", "Determining effective sequence number"); + fflush(stdout); + /* dummy weights array to feed BlosumWeights*/ + wgt = MallocOrDie(sizeof(float) * msa->nseq); + BlosumWeights(msa->aseq, msa->nseq, msa->alen, blosumlevel, wgt); + eff_nseq = FSum(wgt, msa->nseq); + + free(wgt); + printf("done. [%.0f]\n", eff_nseq); + } + + + /* Weight the sequences (optional), + */ + if (w_strategy == WGT_GSC || + w_strategy == WGT_BLOSUM || + w_strategy == WGT_VORONOI || + w_strategy == WGT_PB) + { + printf("%-40s ... ", "Weighting sequences heuristically"); + fflush(stdout); + + if (w_strategy != WGT_PB && msa->nseq >= pbswitch) + { + printf("[big alignment! doing PB]... "); + PositionBasedWeights(msa->aseq, msa->nseq, msa->alen, msa->wgt); + } + else if (w_strategy == WGT_GSC) + GSCWeights(msa->aseq, msa->nseq, msa->alen, msa->wgt); + else if (w_strategy == WGT_BLOSUM) + BlosumWeights(msa->aseq, msa->nseq, msa->alen, blosumlevel, msa->wgt); + else if (w_strategy == WGT_PB) + PositionBasedWeights(msa->aseq, msa->nseq, msa->alen, msa->wgt); + else if (w_strategy == WGT_VORONOI) + VoronoiWeights(msa->aseq, msa->nseq, msa->alen, msa->wgt); + + printf("done.\n"); + } + + /* Set the effective sequence number (if do_eff is FALSE, eff_nseq + * was set to nseq). + */ + FNorm(msa->wgt, msa->nseq); + FScale(msa->wgt, msa->nseq, eff_nseq); + + /* Build a model architecture. + * If we're not doing MD or ME, that's all we need to do. + * We get an allocated, counts-based HMM back. + * + * Because the architecture algorithms are allowed to change + * gap characters in the alignment, we have to calculate the + * alignment checksum before we enter the algorithms. + */ + printf("%-40s ... ", "Constructing model architecture"); + fflush(stdout); + checksum = GCGMultchecksum(msa->aseq, msa->nseq); + if (c_strategy == P7_FAST_CONSTRUCTION) + P7Fastmodelmaker(msa, dsq, gapmax, &hmm, &tr); + else if (c_strategy == P7_HAND_CONSTRUCTION) + P7Handmodelmaker(msa, dsq, &hmm, &tr); + else + P7Maxmodelmaker(msa, dsq, gapmax, + pri, randomseq, p1, archpri, &hmm, &tr); + hmm->checksum = checksum; + printf("done.\n"); + + /* Save the count vectors if asked. Used primarily for + * making the data files for training priors. + */ + if (cfile != NULL) + { + printf("%-40s ... ", "Saving count vector file"); + fflush(stdout); + save_countvectors(cfp, + (msa->name != NULL ? msa->name : "-"), + hmm); + printf("done. [%s]\n", cfile); + } + + /* Record the null model in the HMM; + * add prior contributions in pseudocounts and renormalize. + */ + printf("%-40s ... ", "Converting counts to probabilities"); + fflush(stdout); + Plan7SetNullModel(hmm, randomseq, p1); + P7PriorifyHMM(hmm, pri); + printf("done.\n"); + + /* Model configuration, temporary. + * hmmbuild assumes that it's given an alignment of single domains, + * and the alignment may contain fragments. So, for the purpose of + * scoring the sequences (or, optionally, MD/ME weighting), + * configure the model into hmmsw mode. Later we'll + * configure the model according to how the user wants to + * use it. + */ + Plan7SWConfig(hmm, 0.5, 0.5); + + /* Do model-dependent "weighting" strategies. + */ + if (w_strategy == WGT_ME) + { + printf("\n%-40s ...\n", "Maximum entropy weighting, iterative"); + maximum_entropy(hmm, dsq, msa, eff_nseq, pri, tr); + printf("----------------------------------------------\n\n"); + } + + /* Give the model a name. + * We deal with this differently depending on whether + * we're in an alignment database or a single alignment. + * + * If a single alignment, priority is: + * 1. Use -n if set. + * 2. Use msa->name (avail in Stockholm or SELEX formats only) + * 3. If all else fails, use alignment file name without + * filename extension (e.g. "globins.slx" gets named "globins" + * + * If a multiple MSA database (e.g. Stockholm/Pfam), + * only msa->name is applied. -n is not allowed. + * if msa->name is unavailable, or -n was used, + * a fatal error is thrown. + * + * Because we can't tell whether we've got more than one + * alignment 'til we're on the second one, these fatal errors + * only happen after the first HMM has already been built. + * Oh well. + */ + printf("%-40s ... ", "Setting model name, etc."); + fflush(stdout); + if (nali == 0) /* first (only?) HMM in file: */ + { + if (setname != NULL) name = Strdup(setname); + else if (msa->name != NULL) name = Strdup(msa->name); + else name = FileTail(seqfile, TRUE); + } + else + { + if (setname != NULL) + Die("Oops. Wait. You can't use -n with an alignment database."); + else if (msa->name != NULL) name = Strdup(msa->name); + else + Die("Oops. Wait. I need name annotation on each alignment.\n"); + } + Plan7SetName(hmm, name); + free(name); + + /* Transfer other information from the alignment to + * the HMM. This typically only works for SELEX format + * alignments, so these things are conditional/optional. + */ + if (msa->acc != NULL) Plan7SetAccession(hmm, msa->acc); + if (msa->desc != NULL) Plan7SetDescription(hmm, msa->desc); + + if (msa->flags & MSA_SET_GA) + { hmm->flags |= PLAN7_GA; hmm->ga1 = msa->ga1; hmm->ga2 = msa->ga2; } + if (msa->flags & MSA_SET_TC) + { hmm->flags |= PLAN7_TC; hmm->tc1 = msa->tc1; hmm->tc2 = msa->tc2; } + if (msa->flags & MSA_SET_NC) + { hmm->flags |= PLAN7_NC; hmm->nc1 = msa->nc1; hmm->nc2 = msa->nc2; } + + /* Record some other miscellaneous information in the HMM, + * like how/when we built it. + */ + Plan7ComlogAppend(hmm, argc, argv); + Plan7SetCtime(hmm); + hmm->nseq = msa->nseq; + printf("done. [%s]\n", hmm->name); + + /* Print information for the user + */ + printf("\nConstructed a profile HMM (length %d)\n", hmm->M); + PrintPlan7Stats(stdout, hmm, dsq, msa->nseq, tr); + printf("\n"); + + /* Configure the model for chosen algorithm + */ + printf("%-40s ... ", "Finalizing model configuration"); + fflush(stdout); + switch (cfg_strategy) { + case P7_BASE_CONFIG: Plan7GlobalConfig(hmm); break; + case P7_SW_CONFIG: Plan7SWConfig(hmm, swentry, swexit); break; + case P7_LS_CONFIG: Plan7LSConfig(hmm); break; + case P7_FS_CONFIG: Plan7FSConfig(hmm, swentry, swexit); break; + default: Die("bogus configuration choice"); + } + printf("done.\n"); + + /* Save new HMM to disk: open a file for appending or writing. + */ + printf("%-40s ... ", "Saving model to file"); + fflush(stdout); + if (do_binary) WriteBinHMM(hmmfp, hmm); + else WriteAscHMM(hmmfp, hmm); + printf("done.\n"); + + /* the annotated alignment may be resaved */ + if (alignfp != NULL) + { + MSA *new_msa; + SQINFO *sqinfo; + + printf("%-40s ... ", "Saving annotated alignment"); + fflush(stdout); + sqinfo = MSAToSqinfo(msa); + new_msa = P7Traces2Alignment(dsq, sqinfo, msa->wgt, msa->nseq, + hmm->M, tr, FALSE); + + WriteStockholm(alignfp, new_msa); + MSAFree(new_msa); + for (idx = 0; idx < msa->nseq; idx++) + FreeSequence(NULL, &(sqinfo[idx])); + free(sqinfo); + printf("done.\n"); + } + + /* Verbose output; show scores for each sequence + */ + if (verbose) + print_all_scores(stdout, hmm, dsq, msa, tr); + + /* Clean up before moving on to next alignment + */ + for (idx = 0; idx < msa->nseq; idx++) P7FreeTrace(tr[idx]); + free(tr); + FreePlan7(hmm); + MSAFree(msa); + Free2DArray((void **) dsq, msa->nseq); + fflush(hmmfp); + if (cfp != NULL) fflush(cfp); + if (alignfp != NULL) fflush(alignfp); + + puts("//\n"); + nali++; + } + + + + /* Clean up and exit + */ + MSAFileClose(afp); + fclose(hmmfp); + if (cfp != NULL) fclose(cfp); + if (alignfp != NULL) fclose(alignfp); + P7FreePrior(pri); + SqdClean(); + return 0; +} + + +/* Function: print_all_scores() + * + * Purpose: For each training sequence, print its score under + * the final model. + * + * Args: fp - where to print the output (usu. stdout) + * hmm - newly constructed HMM, with prob's. + * dsq - digitized unaligned training sequences. + * msa - alignment and associated info + * tr - array of tracebacks + * + * Return: (void) + */ +static void +print_all_scores(FILE *fp, struct plan7_s *hmm, + char **dsq, MSA *msa, struct p7trace_s **tr) +{ + int idx; /* counter for sequences */ + + /* make sure model scores are ready */ + P7Logoddsify(hmm, TRUE); + /* header */ + fputs("**\n", fp); + fputs("Individual training sequence scores:\n", fp); + /* score for each sequence */ + for (idx = 0; idx < msa->nseq; idx++) + { + fprintf(fp, "%7.2f %-12s %s\n", + P7TraceScore(hmm, dsq[idx], tr[idx]), + msa->sqname[idx], + (MSAGetSeqDescription(msa,idx) != NULL) ? + MSAGetSeqDescription(msa,idx) : ""); + P7PrintTrace(fp, tr[idx], hmm, dsq[idx]); + } + fputs("\n", fp); +} + + + +/* Function: save_countvectors() + * + * Purpose: Save emission/transition count vectors to a file. + * Used for gathering the data on which to train a + * prior (e.g. mixture Dirichlet, etc.) + * + * The format of the file is one vector per line: + * M ...: 20 match emission counts in order AC..WY. + * followed by two chars of CS, CA annotation. + * I ...: 20 insert emission counts in order AC..WY. + * followed by two chars of CS, CA annotation. + * T ...: 7 transition counts in order TMM, TMI, TMD, + * TIM, TII, TDM, TDD. (see structs.h) + * followed by four chars of structure + * annotation: CS, CS of M+1; CA, CA of M+1. + * + * Args: cfp - open counts file + * name - name of alignment or HMM to associate with these vectors + * hmm - counts-based HMM + */ +static void +save_countvectors(FILE *cfp, char *name, struct plan7_s *hmm) +{ + int k, x; + /* match emission vectors */ + for (k = 1; k <= hmm->M; k++) + { + fputs("M ", cfp); + for (x = 0; x < Alphabet_size; x++) + fprintf(cfp, "%8.2f ", hmm->mat[k][x]); + + fprintf(cfp, "%15s %6d %6d ", name, hmm->map[k], k); + if ((hmm->flags & PLAN7_CS) && hmm->flags & PLAN7_CA) + fprintf(cfp, "%c %c", hmm->cs[k], hmm->ca[k]); + else + fputs("- -", cfp); + fputs("\n", cfp); + } + /* insert emission vectors */ + for (k = 1; k < hmm->M; k++) + { + fputs("I ", cfp); + for (x = 0; x < Alphabet_size; x++) + fprintf(cfp, "%8.2f ", hmm->ins[k][x]); + + fprintf(cfp, "%15s %6d %6d ", name, hmm->map[k], k); + if ((hmm->flags & PLAN7_CS) && hmm->flags & PLAN7_CA) + fprintf(cfp, "%c %c", hmm->cs[k], hmm->ca[k]); + else + fputs("- -", cfp); + + fputs("\n", cfp); + } + /* transition vectors */ + for (k = 1; k < hmm->M; k++) + { + fputs("T ", cfp); + + for (x = 0; x < 7; x++) + fprintf(cfp, "%8.2f ", hmm->t[k][x]); + + fprintf(cfp, "%15s %6d %6d ", name, hmm->map[k], k); + if ((hmm->flags & PLAN7_CS) && hmm->flags & PLAN7_CA) + fprintf(cfp, "%c %c %c %c", + hmm->cs[k], hmm->cs[k+1], + hmm->ca[k], hmm->ca[k+1]); + else + fputs("- -", cfp); + fputs("\n", cfp); + } +} + + +/* Function: position_average_score() + * Date: Wed Dec 31 09:36:35 1997 [StL] + * + * Purpose: Calculate scores from tracebacks, keeping them + * in a position specific array. The final array + * is normalized position-specifically too, according + * to how many sequences contributed data to this + * position. Used for compensating for sequence + * fragments in ME and MD score optimization. + * Very much ad hoc. + * + * Code related to (derived from) TraceScore(). + * + * Args: hmm - HMM structure, scores valid + * dsq - digitized unaligned sequences + * wgt - weights on the sequences + * nseq - number of sequences + * tr - array of nseq tracebacks that aligns each dsq to hmm + * pernode - RETURN: [0]1..M array of position-specific avg scores + * ret_avg - RETURN: overall average full-length, one-domain score + * + * Return: 1 on success, 0 on failure. + * pernode is malloc'ed [0]1..M by CALLER and filled here. + */ +static void +position_average_score(struct plan7_s *hmm, + char **dsq, + float *wgt, + int nseq, + struct p7trace_s **tr, + float *pernode, + float *ret_avg) +{ + int pos; /* position in seq */ + int sym; + int tpos; /* position in trace/state sequence */ + float *counts; /* counts at each position */ + float avg; /* RETURN: average overall */ + int k; /* counter for model position */ + int idx; /* counter for sequence number */ + + /* Allocations + */ + counts = MallocOrDie ((hmm->M+1) * sizeof(float)); + FSet(pernode, hmm->M+1, 0.); + FSet(counts, hmm->M+1, 0.); + + /* Loop over traces, accumulate weighted scores per position + */ + for (idx = 0; idx < nseq; idx++) + for (tpos = 0; tpos < tr[idx]->tlen; tpos++) + { + pos = tr[idx]->pos[tpos]; + sym = (int) dsq[idx][tr[idx]->pos[tpos]]; + k = tr[idx]->nodeidx[tpos]; + + /* Counts: how many times did we use this model position 1..M? + * (weighted) + */ + if (tr[idx]->statetype[tpos] == STM || tr[idx]->statetype[tpos] == STD) + counts[k] += wgt[idx]; + + /* Emission scores. + */ + if (tr[idx]->statetype[tpos] == STM) + pernode[k] += wgt[idx] * Scorify(hmm->msc[sym][k]); + else if (tr[idx]->statetype[tpos] == STI) + pernode[k] += wgt[idx] * Scorify(hmm->isc[sym][k]); + + /* Transition scores. + */ + if (tr[idx]->statetype[tpos] == STM || + tr[idx]->statetype[tpos] == STD || + tr[idx]->statetype[tpos] == STI) + pernode[k] += wgt[idx] * + Scorify(TransitionScoreLookup(hmm, tr[idx]->statetype[tpos], tr[idx]->nodeidx[tpos], + tr[idx]->statetype[tpos+1],tr[idx]->nodeidx[tpos+1])); + } + + /* Divide accumulated scores by accumulated weighted counts + */ + avg = 0.; + for (k = 1; k <= hmm->M; k++) + { + pernode[k] /= counts[k]; + avg += pernode[k]; + } + + free(counts); + *ret_avg = avg; + return; +} + + +/* Function: frag_trace_score() + * Date: SRE, Wed Dec 31 10:03:47 1997 [StL] + * + * Purpose: Allow MD/ME optimization to be used for alignments + * that include fragments and multihits -- estimate a full-length + * per-domain score. + * + * + * + * Return: "corrected" score. + */ +static float +frag_trace_score(struct plan7_s *hmm, char *dsq, struct p7trace_s *tr, + float *pernode, float expected) +{ + float sc; /* corrected score */ + float fragexp; /* expected score for a trace like this */ + int tpos; /* position in trace */ + + /* get uncorrected score */ + sc = P7TraceScore(hmm, dsq, tr); + + /* calc expected score for trace like this */ + fragexp = 0.; + for (tpos = 0; tpos < tr->tlen; tpos++) + if (tr->statetype[tpos] == STM || tr->statetype[tpos] == STD) + fragexp += pernode[tr->nodeidx[tpos]]; + + /* correct for multihits */ + fragexp /= (float) TraceDomainNumber(tr); + + /* extrapolate to full-length, one-hit score */ + sc = sc * expected / fragexp; + return sc; +} + + +/* Function: maximum_entropy() + * Date: SRE, Fri Jan 2 10:56:00 1998 [StL] + * + * Purpose: Optimizes a model according to maximum entropy weighting. + * See Krogh and Mitchison (1995). + * + * [Actually, we do minimum relative entropy, rather than + * maximum entropy. Same thing, though we refer to "ME" + * weights and models. The optimization is a steepest + * descents minimization of the relative entropy.] + * + * Expects to be called shortly after a Maxmodelmaker() + * or Handmodelmaker(), so that both a new model architecture + * (with MAP parameters) and fake tracebacks are available. + * + * Prints a summary of optimization progress to stdout. + * + * Args: hmm - model. allocated, set with initial MAP parameters. + * dsq - dealigned digitized seqs the model is based on + * ainfo - extra info for aseqs + * nseq - number of aseqs + * eff_nseq- effective sequence number; weights normalize up to this. + * prior - prior distributions for parameterizing model + * tr - array of fake traces for each sequence + * + * Return: (void) + * hmm changed to an ME HMM + * ainfo changed, contains ME weights + */ +static void +maximum_entropy(struct plan7_s *hmm, char **dsq, MSA *msa, + float eff_nseq, struct p7prior_s *prior, struct p7trace_s **tr) +{ + float *wgt; /* current best set of ME weights */ + float *new_wgt; /* new set of ME weights to try */ + float *sc; /* log-odds score of each sequence */ + float *grad; /* gradient */ + float epsilon; /* steepness of descent */ + float relative_entropy; /* current best relative entropy */ + float new_entropy; /* relative entropy at new weights */ + float last_new_entropy; /* last new_entropy we calc'ed */ + float use_epsilon; /* current epsilon value in use */ + int idx; /* counter over sequences */ + int i1, i2; /* counters for iterations */ + + float converge_criterion; + float minw, maxw; /* min, max weight */ + int posw, highw; /* number of positive weights */ + float mins, maxs, avgs; /* min, max, avg score */ + float *pernode; /* expected score per node of HMM */ + float expscore; /* expected score of complete HMM */ + int max_iter; /* bulletproof against infinite loop bugs */ + + epsilon = 0.2; /* works fine */ + max_iter = 666; + + /* Allocations + */ + sc = MallocOrDie (sizeof(float) * msa->nseq); + wgt = MallocOrDie (sizeof(float) * msa->nseq); + new_wgt = MallocOrDie (sizeof(float) * msa->nseq); + grad = MallocOrDie (sizeof(float) * msa->nseq); + pernode = MallocOrDie (sizeof(float) * (hmm->M+1)); + + /* Initialization. Start with all weights == 1.0. + * Find relative entropy and gradient. + */ + Plan7SWConfig(hmm, 0.5, 0.5); + P7Logoddsify(hmm, TRUE); + + FSet(wgt, msa->nseq, 1.0); + position_average_score(hmm, dsq, wgt, msa->nseq, tr, pernode,&expscore); + for (idx = 0; idx < msa->nseq; idx++) + sc[idx] = frag_trace_score(hmm, dsq[idx], tr[idx], pernode, expscore); + relative_entropy = FSum(sc, msa->nseq) / (float) msa->nseq; + for (idx = 0; idx < msa->nseq; idx++) + grad[idx] = relative_entropy - sc[idx]; + + + printf("iter avg-sc min-sc max-sc min-wgt max-wgt +wgt ++wgt rel.ent convergence\n"); + printf("---- ------ ------ ------ ------- ------- ---- ----- ------- -----------\n"); + mins = maxs = avgs = sc[0]; + for (idx = 1; idx < msa->nseq; idx++) + { + if (sc[idx] < mins) mins = sc[idx]; + if (sc[idx] > maxs) maxs = sc[idx]; + avgs += sc[idx]; + } + avgs /= (float) msa->nseq; + printf("%4d %6.1f %6.1f %6.1f %7.2f %7.2f %4d %5d %7.2f %8s\n", + 0, avgs, mins, maxs, 1.0, 1.0, msa->nseq, 0, relative_entropy, "-"); + + + /* Steepest descents optimization; + * iterate until relative entropy converges. + */ + i1 = 0; + while (++i1 < max_iter) + { + /* Gradient gives us a line of steepest descents. + * (Roughly speaking, anyway. We actually have a constraint + * that weights are nonnegative and normalized, and the + * gradient doesn't take these into account.) + * Look along this line, a distance of epsilon * gradient: + * if new point is better, accept; if new point is worse, + * move back along the line by half the distance and re-evaluate. + */ + use_epsilon = epsilon; + new_entropy = relative_entropy + 1.0; /* just ensure new > old */ + + i2 = 0; + while (new_entropy > relative_entropy && ++i2 < max_iter) + { + last_new_entropy = new_entropy; + + /* find a new point in weight space */ + for (idx = 0; idx < msa->nseq; idx++) + { + new_wgt[idx] = wgt[idx] + use_epsilon * grad[idx]; + if (new_wgt[idx] < 0.) new_wgt[idx] = 0.0; + } + FNorm(new_wgt, msa->nseq); + FScale(new_wgt, msa->nseq, (float) msa->nseq); + + /* Make new HMM using these weights */ + ZeroPlan7(hmm); + for (idx = 0; idx < msa->nseq; idx++) + P7TraceCount(hmm, dsq[idx], new_wgt[idx], tr[idx]); + P7PriorifyHMM(hmm, prior); + + + /* Evaluate new point */ + Plan7SWConfig(hmm, 0.5, 0.5); + P7Logoddsify(hmm, TRUE); + position_average_score(hmm, dsq, new_wgt, msa->nseq, tr, pernode, &expscore); + for (idx = 0; idx < msa->nseq; idx++) + sc[idx] = frag_trace_score(hmm, dsq[idx], tr[idx], pernode, expscore); + new_entropy = FDot(sc, new_wgt, msa->nseq) / (float) msa->nseq; + + use_epsilon /= 2.0; + /* Failsafe: we're not converging. Set epsilon to zero, + * do one more round. + */ + if (use_epsilon < 1e-6) use_epsilon = 0.0; + if (use_epsilon == 0.0) break; + + /* Failsafe: avoid infinite loops. Sometimes the + new entropy converges without ever being better + than the previous point, probably as a result + of minor roundoff error. */ + if (last_new_entropy == new_entropy) break; + } + if (i2 == max_iter) printf(" -- exceeded maximum iterations; giving up --\n"); + + /* Evaluate convergence before accepting the new weights; + * then, accept the new point and evaluate the gradient there. + */ + converge_criterion = fabs((relative_entropy-new_entropy)/relative_entropy); + relative_entropy = new_entropy; + FCopy(wgt, new_wgt, msa->nseq); + for (idx = 0; idx < msa->nseq; idx++) + grad[idx] = relative_entropy - sc[idx]; + + /* Print some statistics about this iteration + */ + mins = maxs = avgs = sc[0]; + minw = maxw = wgt[0]; + posw = (wgt[0] > 0.0) ? 1 : 0; + highw = (wgt[0] > 1.0) ? 1 : 0; + for (idx = 1; idx < msa->nseq; idx++) + { + if (sc[idx] < mins) mins = sc[idx]; + if (sc[idx] > maxs) maxs = sc[idx]; + if (wgt[idx] < minw) minw = wgt[idx]; + if (wgt[idx] > maxw) maxw = wgt[idx]; + if (wgt[idx] > 0.0) posw++; + if (wgt[idx] > 1.0) highw++; + avgs += sc[idx]; + } + avgs /= (float) msa->nseq; + printf("%4d %6.1f %6.1f %6.1f %7.2f %7.2f %4d %5d %7.2f %8.5f\n", + i1, + avgs, mins, maxs, + minw, maxw, posw, highw, + relative_entropy, converge_criterion); + + if (converge_criterion < 1e-5) break; + } + if (i1 == max_iter) printf(" -- exceeded maximum iterations; giving up --\n"); + + /* Renormalize weights to sum to eff_nseq, and save. + */ + FNorm(wgt, msa->nseq); + FScale(wgt, msa->nseq, (float) eff_nseq); + FCopy(msa->wgt, wgt, msa->nseq); + /* Make final HMM using these adjusted weights */ + ZeroPlan7(hmm); + for (idx = 0; idx < msa->nseq; idx++) + P7TraceCount(hmm, dsq[idx], wgt[idx], tr[idx]); + P7PriorifyHMM(hmm, prior); + + /* Cleanup and return + */ + free(pernode); + free(new_wgt); + free(grad); + free(wgt); + free(sc); + return; +} diff --git a/forester/archive/RIO/others/hmmer/src/hmmcalibrate-pvm.c b/forester/archive/RIO/others/hmmer/src/hmmcalibrate-pvm.c new file mode 100644 index 0000000..52824c6 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmcalibrate-pvm.c @@ -0,0 +1,209 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +#ifdef HMMER_PVM + +/* hmmcalibrate-pvm.c + * SRE, Tue Aug 18 15:19:28 1998 + * Redesigned for better parallelization: SRE, Wed Dec 1 09:48:58 1999 + * + * Design: + * Initialization: + * receive parameters of random sequence synthesis, and an HMM. + * send an OK signal to the master. + * + * Main loop: + * receive work packet: # of seqs to make + * Synthesize and score # seqs + * send results: # raw scores. + * + * Termination: + * master sends a shutdown signal instead of a work packet. + * + * PVM slave for hmmcalibrate. + * RCS $Id: hmmcalibrate-pvm.c,v 1.1.1.1 2005/03/22 08:34:12 cmzmasek Exp $ + */ + +#include +#include +#include +#include + +#include "version.h" +#include "structs.h" /* data structures, macros, #define's */ +#include "config.h" /* compile-time configuration constants */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "squid.h" /* general sequence analysis library */ +#include "stopwatch.h" /* CPU timing routines */ + +static void leave_pvm(void); + +int +main(void) +{ + int master_tid; /* PVM TID of our master */ + int slaveidx; /* my slave index (0..nslaves-1) */ + struct plan7_s *hmm; /* HMM to calibrate, sent from master */ + char *seq; /* synthetic random sequence */ + char *dsq; /* digitized seq */ + int len; /* length of seq */ + float *sc; /* scores of seqs */ + int seed; /* random number seed */ + int nsample; /* number of seqs to sample */ + int fixedlen; /* if nonzero, fixed length of seq */ + float lenmean; /* Gaussian mean length of seq */ + float lensd; /* Gaussian length std. dev. for seq */ + float randomseq[MAXABET]; /* iid frequencies of residues */ + float p1; + int alphatype; /* alphabet type, hmmAMINO or hmmNUCLEIC */ + int idx; + int code; + Stopwatch_t stopwatch; /* CPU timings */ + + /* Register leave_pvm() cleanup function so any exit() call + * first calls pvm_exit(). + */ + if (atexit(leave_pvm) != 0) { + pvm_exit(); Die("slave couldn't register leave_pvm()"); + } + + /***************************************************************** + * initialization. + * Master broadcasts the problem to us: + * an HMM; + * parameters of the HMM calibration. + * We send back: + * an OK flag, and our RELEASE, for some sanity checking. + ******************************************************************/ + + StopwatchStart(&stopwatch); + + master_tid = pvm_parent(); /* who's our master? */ + + pvm_recv(master_tid, HMMPVM_INIT); + pvm_upkfloat(&lenmean, 1, 1); /* mean length of random seqs */ + pvm_upkfloat(&lensd, 1, 1); /* std. dev. of random seq len */ + pvm_upkint(&fixedlen, 1, 1); /* if non-zero, override lenmean */ + pvm_upkint(&alphatype, 1, 1); /* alphabet type, hmmAMINO or hmmNUCLEIC */ + pvm_upkint(&seed, 1, 1); /* random number seed */ + SetAlphabet(alphatype); /* must set alphabet before reading HMM! */ + hmm = PVMUnpackHMM(); + if (hmm == NULL) Die("oh no, the HMM never arrived"); + + P7DefaultNullModel(randomseq, &p1); + P7Logoddsify(hmm, TRUE); + + /* tell the master we're OK and ready to go (or not) + */ + code = HMMPVM_OK; + pvm_initsend(PvmDataDefault); + pvm_pkint(&code, 1, 1); + PVMPackString(RELEASE); + pvm_send(master_tid, HMMPVM_RESULTS); + + /***************************************************************** + * Main loop. + * Receive: a number of sequences we're supposed to do. + * If we receive a 0, we have no work, so wait for shutdown; + * if we receive a -1, shut down. + *****************************************************************/ + slaveidx = -1; + for (;;) + { + pvm_recv(master_tid, HMMPVM_WORK); + pvm_upkint(&nsample, 1, 1); + pvm_upkint(&idx, 1, 1); + + if (nsample == 0) continue; /* go into stasis */ + if (nsample == -1) break; /* shut down */ + + if (slaveidx == -1) { /* first time: set id, seed sre_random */ + slaveidx = idx; + sre_srandom(seed+idx); /* unique seed in current PVM */ + } + + sc = MallocOrDie(sizeof(float) * nsample); + for (idx = 0; idx < nsample; idx++) + { + /* choose length of random sequence */ + if (fixedlen) len = fixedlen; + else do len = (int) Gaussrandom(lenmean, lensd); while (len < 1); + /* generate it */ + seq = RandomSequence(Alphabet, randomseq, Alphabet_size, len); + dsq = DigitizeSequence(seq, len); + SQD_DPRINTF2(("slave %d seq: %d : %20.20s...\n", slaveidx, len, seq)); + + if (P7ViterbiSize(len, hmm->M) <= RAMLIMIT) + sc[idx] = P7Viterbi(dsq, len, hmm, NULL); + else + sc[idx] = P7SmallViterbi(dsq, len, hmm, NULL); + + free(seq); + free(dsq); + } + + /* Return output to master, some of which is sanity checking. + * 1. our slave index. + * 2. how many seqs we simulated. + * 3. the array of scores we got, so the master can stuff + * them into a histogram. + */ + pvm_initsend(PvmDataDefault); + pvm_pkint(&slaveidx, 1, 1); + pvm_pkint(&nsample, 1, 1); + pvm_pkfloat(sc, nsample,1); + pvm_send(master_tid, HMMPVM_RESULTS); + + /* cleanup + */ + free(sc); + } + + /*********************************************** + * Cleanup, return. + ***********************************************/ + + FreePlan7(hmm); + StopwatchStop(&stopwatch); + + /* tell the master we heard his shutdown signal, and + * give him our CPU times; then exit. + */ + pvm_initsend(PvmDataDefault); + pvm_pkint(&slaveidx, 1, 1); + StopwatchPVMPack(&stopwatch); + pvm_send(master_tid, HMMPVM_RESULTS); + + return 0; /* pvm_exit() is called by atexit() registration. */ +} + +/* Function: leave_pvm() + * + * Purpose: Cleanup function, to deal with crashes. We register + * this function using atexit() so it gets called before + * the slave dies. + */ +void leave_pvm(void) +{ + SQD_DPRINTF1(("slave leaving PVM.\n")); + pvm_exit(); +} + +#else /* if HMMER_PVM not defined: include a dummy */ + +#include +int main(void) +{ + printf("hmmcalibrate-pvm disabled. PVM support was not compiled into HMMER.\n"); + exit(0); +} + +#endif diff --git a/forester/archive/RIO/others/hmmer/src/hmmcalibrate.c b/forester/archive/RIO/others/hmmer/src/hmmcalibrate.c new file mode 100644 index 0000000..b003f8b --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmcalibrate.c @@ -0,0 +1,957 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmcalibrate.c + * SRE, Fri Oct 31 09:25:21 1997 [St. Louis] + * + * Score an HMM against random sequence data sets; + * set histogram fitting parameters. + * + * CVS $Id: hmmcalibrate.c,v 1.1.1.1 2005/03/22 08:34:03 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#ifdef HMMER_THREADS +#include +#endif +#ifdef HMMER_PVM +#include +#endif + +#include "squid.h" /* general sequence analysis library */ +#include "config.h" /* compile-time configuration constants */ +#include "structs.h" /* data structures, macros, #define's */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "version.h" /* release version info */ +#include "stopwatch.h" /* process timings */ + +static char banner[] = "hmmcalibrate -- calibrate HMM search statistics"; + +static char usage[] = "\ +Usage: hmmcalibrate [-options] \n\ +Available options are:\n\ + -h : print short usage and version info, then exit\n\ +"; + +static char experts[] = "\ + --cpu : run threads in parallel (if threaded)\n\ + --fixed : fix random sequence length at \n\ + --histfile : save histogram(s) to file \n\ + --mean : set random seq length mean at [350]\n\ + --num : set number of sampled seqs to [5000]\n\ + --pvm : run on a Parallel Virtual Machine (PVM)\n\ + --sd : set random seq length std. dev to [350]\n\ + --seed : set random seed to [time()]\n\ +"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "--cpu", FALSE, sqdARG_INT }, + { "--fixed", FALSE, sqdARG_INT }, + { "--histfile", FALSE, sqdARG_STRING }, + { "--mean", FALSE, sqdARG_FLOAT }, + { "--num", FALSE, sqdARG_INT }, + { "--pvm", FALSE, sqdARG_NONE }, + { "--sd", FALSE, sqdARG_FLOAT }, + { "--seed", FALSE, sqdARG_INT}, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + + +static void main_loop_serial(struct plan7_s *hmm, int seed, int nsample, + float lenmean, float lensd, int fixedlen, + struct histogram_s **ret_hist, float *ret_max); + +#ifdef HMMER_THREADS +/* A structure of this type is shared by worker threads in the POSIX + * threads parallel version. + */ +struct workpool_s { + /* Static configuration: + */ + struct plan7_s *hmm; /* ptr to single HMM to search with */ + int fixedlen; /* if >0, fix random seq len to this */ + float lenmean; /* mean of Gaussian for random seq len */ + float lensd; /* s.d. of Gaussian for random seq len */ + float *randomseq; /* 0..Alphabet_size-1 i.i.d. probs */ + int nsample; /* number of random seqs to do */ + + /* Shared (mutex-protected) input: + */ + int nseq; /* current number of seqs searched */ + + /* Shared (mutex-protected) output: + */ + struct histogram_s *hist; /* histogram */ + float max_score; /* maximum score seen */ + Stopwatch_t watch; /* Timings accumulated for threads */ + + /* Thread pool information: + */ + pthread_t *thread; /* our pool of threads */ + int num_threads; /* number of threads */ + pthread_mutex_t input_lock; /* a mutex protecting input fields */ + pthread_mutex_t output_lock; /* a mutex protecting output fields */ +}; +static void main_loop_threaded(struct plan7_s *hmm, int seed, int nsample, + float lenmean, float lensd, int fixedlen, + int nthreads, + struct histogram_s **ret_hist, float *ret_max, + Stopwatch_t *twatch); +static struct workpool_s *workpool_start(struct plan7_s *hmm, + float lenmean, float lensd, int fixedlen, + float *randomseq, int nsample, + struct histogram_s *hist, + int num_threads); +static void workpool_stop(struct workpool_s *wpool); +static void workpool_free(struct workpool_s *wpool); +static void *worker_thread(void *ptr); +#endif /* HMMER_THREADS */ + +#ifdef HMMER_PVM +static void main_loop_pvm(struct plan7_s *hmm, int seed, int nsample, + int lumpsize, + float lenmean, float lensd, int fixedlen, + struct histogram_s **ret_hist, float *ret_max, + Stopwatch_t *extrawatch, int *ret_nslaves); +#endif /* HMMER_PVM */ + + +int +main(int argc, char **argv) +{ + char *hmmfile; /* HMM file to open */ + char *tmpfile; /* temporary calibrated HMM file */ + HMMFILE *hmmfp; /* opened hmm file pointer */ + FILE *outfp; /* for writing HMM(s) into tmpfile */ + char *mode; /* write mode, "w" or "wb" */ + struct plan7_s *hmm; /* the hidden Markov model */ + int idx; /* counter over sequences */ + sigset_t blocksigs; /* list of signals to protect from */ + int nhmm; /* number of HMMs calibrated */ + + struct histogram_s *hist; /* a resulting histogram */ + float max; /* maximum score from an HMM */ + char *histfile; /* histogram save file */ + FILE *hfp; /* open file pointer for histfile */ + + Stopwatch_t stopwatch; /* main stopwatch for process */ + Stopwatch_t extrawatch; /* stopwatch for threads/PVM slaves */ + + float *mu; /* array of EVD mu's for HMMs */ + float *lambda; /* array of EVD lambda's for HMMs */ + int mu_lumpsize; /* allocation lumpsize for mu, lambda */ + + int nsample; /* number of random seqs to sample */ + int seed; /* random number seed */ + int fixedlen; /* fixed length, or 0 if unused */ + float lenmean; /* mean of length distribution */ + float lensd; /* std dev of length distribution */ + int do_pvm; /* TRUE to use PVM */ + int pvm_lumpsize; /* # of seqs to do per PVM slave exchange */ + int pvm_nslaves; /* number of slaves used in the PVM */ + + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + int num_threads; /* number of worker threads */ + + + /*********************************************** + * Parse the command line + ***********************************************/ + StopwatchStart(&stopwatch); + StopwatchZero(&extrawatch); + + nsample = 5000; + fixedlen = 0; + lenmean = 325.; + lensd = 200.; + seed = (int) time ((time_t *) NULL); + histfile = NULL; + do_pvm = FALSE; + pvm_lumpsize = 20; /* 20 seqs/PVM exchange: sets granularity */ + mu_lumpsize = 100; +#ifdef HMMER_THREADS + num_threads = ThreadNumber(); /* only matters if we're threaded */ +#else + num_threads = 0; +#endif + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "--cpu") == 0) num_threads = atoi(optarg); + else if (strcmp(optname, "--fixed") == 0) fixedlen = atoi(optarg); + else if (strcmp(optname, "--histfile") == 0) histfile = optarg; + else if (strcmp(optname, "--mean") == 0) lenmean = atof(optarg); + else if (strcmp(optname, "--num") == 0) nsample = atoi(optarg); + else if (strcmp(optname, "--pvm") == 0) do_pvm = TRUE; + else if (strcmp(optname, "--sd") == 0) lensd = atof(optarg); + else if (strcmp(optname, "--seed") == 0) seed = atoi(optarg); + else if (strcmp(optname, "-h") == 0) + { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + + if (argc - optind != 1) Die("Incorrect number of arguments.\n%s\n", usage); + hmmfile = argv[optind++]; + +#ifndef HMMER_PVM + if (do_pvm) Die("PVM support is not compiled into HMMER; --pvm doesn't work."); +#endif +#ifndef HMMER_THREADS + if (num_threads) Die("Posix threads support is not compiled into HMMER; --cpu doesn't have any effect"); +#endif + + /*********************************************** + * Open our i/o file pointers, make sure all is well + ***********************************************/ + + /* HMM file */ + if ((hmmfp = HMMFileOpen(hmmfile, NULL)) == NULL) + Die("failed to open HMM file %s for reading.", hmmfile); + + /* histogram file */ + hfp = NULL; + if (histfile != NULL) { + if ((hfp = fopen(histfile, "w")) == NULL) + Die("Failed to open histogram save file %s for writing\n", histfile); + } + + /* Generate calibrated HMM(s) in a tmp file in the current + * directory. When we're finished, we delete the original + * HMM file and rename() this one. That way, the worst + * effect of a catastrophic failure should be that we + * leave a tmp file lying around, but the original HMM + * file remains uncorrupted. tmpnam() doesn't work portably here, + * because it'll put the file in /tmp and we won't + * necessarily be able to rename() it from there. + */ + tmpfile = MallocOrDie(strlen(hmmfile) + 5); + strcpy(tmpfile, hmmfile); + strcat(tmpfile, ".xxx"); /* could be more inventive here... */ + if (FileExists(tmpfile)) + Die("temporary file %s already exists; please delete it first", tmpfile); + if (hmmfp->is_binary) mode = "wb"; + else mode = "w"; + + /*********************************************** + * Show the banner + ***********************************************/ + + Banner(stdout, banner); + printf("HMM file: %s\n", hmmfile); + if (fixedlen) + printf("Length fixed to: %d\n", fixedlen); + else { + printf("Length distribution mean: %.0f\n", lenmean); + printf("Length distribution s.d.: %.0f\n", lensd); + } + printf("Number of samples: %d\n", nsample); + printf("random seed: %d\n", seed); + printf("histogram(s) saved to: %s\n", + histfile != NULL ? histfile : "[not saved]"); + if (do_pvm) + printf("PVM: ACTIVE\n"); + else if (num_threads > 0) + printf("POSIX threads: %d\n", num_threads); + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n"); + + /*********************************************** + * Read the HMMs one at a time, and send them off + * in probability form to one of the main loops. + * The main loop functions are responsible for + * synthesizing random sequences and returning + * a score histogram for each HMM. + ***********************************************/ + + nhmm = 0; + mu = MallocOrDie(sizeof(float) * mu_lumpsize); + lambda = MallocOrDie(sizeof(float) * mu_lumpsize); + + while (HMMFileRead(hmmfp, &hmm)) + { + if (hmm == NULL) + Die("HMM file may be corrupt or in incorrect format; parse failed"); + + if (! do_pvm && num_threads == 0) + main_loop_serial(hmm, seed, nsample, lenmean, lensd, fixedlen, + &hist, &max); +#ifdef HMMER_PVM + else if (do_pvm) { + pvm_nslaves = 0; /* solely to silence compiler warnings */ + main_loop_pvm(hmm, seed, nsample, pvm_lumpsize, + lenmean, lensd, fixedlen, + &hist, &max, &extrawatch, &pvm_nslaves); + } +#endif +#ifdef HMMER_THREADS + else if (num_threads > 0) + main_loop_threaded(hmm, seed, nsample, lenmean, lensd, fixedlen, + num_threads, &hist, &max, &extrawatch); +#endif + else + Die("wait. that can't happen. I didn't do anything."); + + + /* Fit an EVD to the observed histogram. + * The TRUE left-censors and fits only the right slope of the histogram. + * The 9999. is an arbitrary high number that means we won't trim + * outliers on the right. + */ + if (! ExtremeValueFitHistogram(hist, TRUE, 9999.)) + Die("fit failed; -n may be set too small?\n"); + + mu[nhmm] = hist->param[EVD_MU]; + lambda[nhmm] = hist->param[EVD_LAMBDA]; + nhmm++; + if (nhmm % 100 == 0) { + mu = ReallocOrDie(mu, sizeof(float) * (nhmm+mu_lumpsize)); + lambda = ReallocOrDie(lambda, sizeof(float) * (nhmm+mu_lumpsize)); + } + + /* Output + */ + printf("HMM : %s\n", hmm->name); + printf("mu : %12f\n", hist->param[EVD_MU]); + printf("lambda : %12f\n", hist->param[EVD_LAMBDA]); + printf("max : %12f\n", max); + printf("//\n"); + + if (hfp != NULL) + { + fprintf(hfp, "HMM: %s\n", hmm->name); + PrintASCIIHistogram(hfp, hist); + fprintf(hfp, "//\n"); + } + + FreeHistogram(hist); + } + SQD_DPRINTF1(("Main body believes it has calibrations for %d HMMs\n", nhmm)); + + /***************************************************************** + * Rewind the HMM file for a second pass. + * Write a temporary HMM file with new mu, lambda values in it + *****************************************************************/ + + HMMFileRewind(hmmfp); + if (FileExists(tmpfile)) + Die("Ouch. Temporary file %s appeared during the run.", tmpfile); + if ((outfp = fopen(tmpfile, mode)) == NULL) + Die("Ouch. Temporary file %s couldn't be opened for writing.", tmpfile); + + for (idx = 0; idx < nhmm; idx++) + { + /* Sanity checks + */ + if (!HMMFileRead(hmmfp, &hmm)) + Die("Ran out of HMMs too early in pass 2"); + if (hmm == NULL) + Die("HMM file %s was corrupted? Parse failed in pass 2", hmmfile); + + /* Put results in HMM + */ + hmm->mu = mu[idx]; + hmm->lambda = lambda[idx]; + hmm->flags |= PLAN7_STATS; + Plan7ComlogAppend(hmm, argc, argv); + + /* Save HMM to tmpfile + */ + if (hmmfp->is_binary) WriteBinHMM(outfp, hmm); + else WriteAscHMM(outfp, hmm); + + FreePlan7(hmm); + } + + /***************************************************************** + * Now, carefully remove original file and replace it + * with the tmpfile. Note the protection from signals; + * we wouldn't want a user to ctrl-C just as we've deleted + * their HMM file but before the new one is moved. + *****************************************************************/ + + HMMFileClose(hmmfp); + if (fclose(outfp) != 0) PANIC; + + if (sigemptyset(&blocksigs) != 0) PANIC; + if (sigaddset(&blocksigs, SIGINT) != 0) PANIC; + if (sigprocmask(SIG_BLOCK, &blocksigs, NULL) != 0) PANIC; + if (remove(hmmfile) != 0) PANIC; + if (rename(tmpfile, hmmfile) != 0) PANIC; + if (sigprocmask(SIG_UNBLOCK, &blocksigs, NULL) != 0) PANIC; + + /*********************************************** + * Exit + ***********************************************/ + + StopwatchStop(&stopwatch); + if (do_pvm > 0) { + printf("PVM processors used: %d\n", pvm_nslaves); + StopwatchInclude(&stopwatch, &extrawatch); + } +#ifdef PTHREAD_TIMES_HACK + else if (num_threads > 0) StopwatchInclude(&stopwatch, &extrawatch); +#endif + + /* StopwatchDisplay(stdout, "CPU Time: ", &stopwatch); */ + + free(mu); + free(lambda); + free(tmpfile); + if (hfp != NULL) fclose(hfp); + SqdClean(); + return 0; +} + +/* Function: main_loop_serial() + * Date: SRE, Tue Aug 18 16:18:28 1998 [St. Louis] + * + * Purpose: Given an HMM and parameters for synthesizing random + * sequences; return a histogram of scores. + * (Serial version) + * + * Args: hmm - an HMM to calibrate. + * seed - random number seed + * nsample - number of seqs to synthesize + * lenmean - mean length of random sequence + * lensd - std dev of random seq length + * fixedlen - if nonzero, override lenmean, always this len + * ret_hist - RETURN: the score histogram + * ret_max - RETURN: highest score seen in simulation + * + * Returns: (void) + * hist is alloc'ed here, and must be free'd by caller. + */ +static void +main_loop_serial(struct plan7_s *hmm, int seed, int nsample, + float lenmean, float lensd, int fixedlen, + struct histogram_s **ret_hist, float *ret_max) +{ + struct histogram_s *hist; + float randomseq[MAXABET]; + float p1; + float max; + char *seq; + char *dsq; + float score; + int sqlen; + int idx; + + /* Initialize. + * We assume we've already set the alphabet (safe, because + * HMM input sets the alphabet). + */ + sre_srandom(seed); + P7Logoddsify(hmm, TRUE); + P7DefaultNullModel(randomseq, &p1); + hist = AllocHistogram(-200, 200, 100); + max = -FLT_MAX; + + for (idx = 0; idx < nsample; idx++) + { + /* choose length of random sequence */ + if (fixedlen) sqlen = fixedlen; + else do sqlen = (int) Gaussrandom(lenmean, lensd); while (sqlen < 1); + /* generate it */ + seq = RandomSequence(Alphabet, randomseq, Alphabet_size, sqlen); + dsq = DigitizeSequence(seq, sqlen); + + if (P7ViterbiSize(sqlen, hmm->M) <= RAMLIMIT) + score = P7Viterbi(dsq, sqlen, hmm, NULL); + else + score = P7SmallViterbi(dsq, sqlen, hmm, NULL); + + AddToHistogram(hist, score); + if (score > max) max = score; + + free(dsq); + free(seq); + } + + *ret_hist = hist; + *ret_max = max; + return; +} + + +#ifdef HMMER_THREADS +/* Function: main_loop_threaded() + * Date: SRE, Wed Dec 1 12:43:09 1999 [St. Louis] + * + * Purpose: Given an HMM and parameters for synthesizing random + * sequences; return a histogram of scores. + * (Threaded version.) + * + * Args: hmm - an HMM to calibrate. + * seed - random number seed + * nsample - number of seqs to synthesize + * lenmean - mean length of random sequence + * lensd - std dev of random seq length + * fixedlen - if nonzero, override lenmean, always this len + * nthreads - number of threads to start + * ret_hist - RETURN: the score histogram + * ret_max - RETURN: highest score seen in simulation + * twatch - RETURN: accumulation of thread times + * + * Returns: (void) + * hist is alloc'ed here, and must be free'd by caller. + */ +static void +main_loop_threaded(struct plan7_s *hmm, int seed, int nsample, + float lenmean, float lensd, int fixedlen, + int nthreads, + struct histogram_s **ret_hist, float *ret_max, + Stopwatch_t *twatch) +{ + struct histogram_s *hist; + float randomseq[MAXABET]; + float p1; + struct workpool_s *wpool; /* pool of worker threads */ + + /* Initialize. + * We assume we've already set the alphabet (safe, because + * HMM input sets the alphabet). + */ + sre_srandom(seed); + P7Logoddsify(hmm, TRUE); + P7DefaultNullModel(randomseq, &p1); + hist = AllocHistogram(-200, 200, 100); + + wpool = workpool_start(hmm, lenmean, lensd, fixedlen, randomseq, nsample, + hist, nthreads); + workpool_stop(wpool); + + *ret_hist = hist; + *ret_max = wpool->max_score; + StopwatchInclude(twatch, &(wpool->watch)); + + workpool_free(wpool); + return; +} + +/***************************************************************** + * POSIX threads implementation. + * API: + * workpool_start() (makes a workpool_s structure. Starts calculations.) + * workpool_stop() (waits for threads to finish.) + * [process histogram] + * workpool_free() (destroys the structure) + * + * Threads: + * worker_thread() (the actual parallelized worker thread). + *****************************************************************/ + +/* Function: workpool_start() + * Date: SRE, Thu Jul 16 11:09:05 1998 [St. Louis] + * + * Purpose: Initialize a workpool_s structure, and return it. + * + * Args: hmm - the HMM to calibrate + * fixedlen - 0, or a fixed length for seqs (bypass of Gaussian) + * lenmean - mean sequence length + * lensd - std. dev. for sequence length + * randomseq- i.i.d. frequencies for residues, 0..Alphabet_size-1 + * nsample - how many seqs to calibrate on + * hist - histogram structure for storing results + * num_threads - how many processors to run on + * + * Returns: ptr to struct workpool_s. + * Caller must wait for threads to finish with workpool_stop(), + * then free the structure with workpool_free(). + */ +static struct workpool_s * +workpool_start(struct plan7_s *hmm, float lenmean, float lensd, int fixedlen, + float *randomseq, int nsample, struct histogram_s *hist, + int num_threads) +{ + struct workpool_s *wpool; + pthread_attr_t attr; + int i; + int rtn; + + wpool = MallocOrDie(sizeof(struct workpool_s)); + wpool->thread = MallocOrDie(num_threads * sizeof(pthread_t)); + wpool->hmm = hmm; + wpool->fixedlen = fixedlen; + wpool->lenmean = lenmean; + wpool->lensd = lensd; + wpool->randomseq = randomseq; + wpool->nsample = nsample; + + wpool->nseq = 0; + wpool->hist = hist; + wpool->max_score = -FLT_MAX; + wpool->num_threads= num_threads; + + StopwatchZero(&(wpool->watch)); + + if ((rtn = pthread_mutex_init(&(wpool->input_lock), NULL)) != 0) + Die("pthread_mutex_init FAILED; %s\n", strerror(rtn)); + if ((rtn = pthread_mutex_init(&(wpool->output_lock), NULL)) != 0) + Die("pthread_mutex_init FAILED; %s\n", strerror(rtn)); + + /* Create slave threads. + * Note the crazy machinations we have to go through to achieve concurrency. + * You'd think that POSIX threads were portable... ha. + * On IRIX 6.5, system scope threads are only available to root, or if + * /etc/capability has been configured specially, so to avoid strange + * permissions errors we can't set PTHREAD_SCOPE_SYSTEM for IRIX. + * On IRIX pre-6.5, we can't get good concurrency, period. As of 6.5, + * SGI provides the nonportable pthread_setconcurrency() call. + * On FreeBSD (3.0 snapshots), the pthread_attr_setscope() call isn't + * even provided, apparently on grounds of "if it doesn't do anything, + * why provide it?" Hello? POSIX compliance, perhaps? + * On Sun Solaris, we need to set system scope to achieve concurrency. + * Linux and DEC Digital UNIX seem to work fine in either process scope + * or system scope, without a pthread_setconcurrency call. + */ + pthread_attr_init(&attr); +#ifndef __sgi +#ifdef HAVE_PTHREAD_ATTR_SETSCOPE + pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); +#endif +#endif +#ifdef HAVE_PTHREAD_SETCONCURRENCY + pthread_setconcurrency(num_threads+1); +#endif + for (i = 0; i < num_threads; i++) + if ((rtn = pthread_create(&(wpool->thread[i]), &attr, + worker_thread , (void *) wpool)) != 0) + Die("Failed to create thread %d; return code %d\n", i, rtn); + + pthread_attr_destroy(&attr); + + return wpool; +} + +/* Function: workpool_stop() + * Date: SRE, Thu Jul 16 11:20:16 1998 [St. Louis] + * + * Purpose: Waits for threads in a workpool to finish. + * + * Args: wpool -- ptr to the workpool structure + * + * Returns: (void) + */ +static void +workpool_stop(struct workpool_s *wpool) +{ + int i; + /* wait for threads to stop */ + for (i = 0; i < wpool->num_threads; i++) + if (pthread_join(wpool->thread[i],NULL) != 0) + Die("pthread_join failed"); + return; +} + +/* Function: workpool_free() + * Date: SRE, Thu Jul 16 11:26:27 1998 [St. Louis] + * + * Purpose: Free a workpool_s structure, after the threads + * have finished. + * + * Args: wpool -- ptr to the workpool. + * + * Returns: (void) + */ +static void +workpool_free(struct workpool_s *wpool) +{ + free(wpool->thread); + free(wpool); + return; +} + +/* Function: worker_thread() + * Date: SRE, Thu Jul 16 10:41:02 1998 [St. Louis] + * + * Purpose: The procedure executed by the worker threads. + * + * Args: ptr - (void *) that is recast to a pointer to + * the workpool. + * + * Returns: (void *) + */ +void * +worker_thread(void *ptr) +{ + struct plan7_s *hmm; + struct workpool_s *wpool; + char *seq; + char *dsq; + int len; + float sc; + int rtn; + Stopwatch_t thread_watch; + + StopwatchStart(&thread_watch); + wpool = (struct workpool_s *) ptr; + hmm = wpool->hmm; + for (;;) + { + /* 1. Synthesize a random sequence. + * The input sequence number is a shared resource, + * and sre_random() isn't thread-safe, so protect + * the whole section with mutex. + */ + /* acquire a lock */ + if ((rtn = pthread_mutex_lock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_lock failure: %s\n", strerror(rtn)); + /* generate a sequence */ + wpool->nseq++; + if (wpool->nseq > wpool->nsample) + { /* we're done; release input lock, break loop */ + if ((rtn = pthread_mutex_unlock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + break; + } + if (wpool->fixedlen) len = wpool->fixedlen; + else do len = (int) Gaussrandom(wpool->lenmean, wpool->lensd); while (len < 1); + seq = RandomSequence(Alphabet, wpool->randomseq, Alphabet_size, len); + + /* release the lock */ + if ((rtn = pthread_mutex_unlock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + + /* 2. Score the sequence against the model. + */ + dsq = DigitizeSequence(seq, len); + + if (P7ViterbiSize(len, hmm->M) <= RAMLIMIT) + sc = P7Viterbi(dsq, len, hmm, NULL); + else + sc = P7SmallViterbi(dsq, len, hmm, NULL); + free(dsq); + free(seq); + + /* 3. Save the output; hist and max_score are shared, + * so protect this section with the output mutex. + */ + /* acquire lock on the output queue */ + if ((rtn = pthread_mutex_lock(&(wpool->output_lock))) != 0) + Die("pthread_mutex_lock failure: %s\n", strerror(rtn)); + /* save output */ + AddToHistogram(wpool->hist, sc); + if (sc > wpool->max_score) wpool->max_score = sc; + /* release our lock */ + if ((rtn = pthread_mutex_unlock(&(wpool->output_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + } + + StopwatchStop(&thread_watch); + /* acquire lock on the output queue */ + if ((rtn = pthread_mutex_lock(&(wpool->output_lock))) != 0) + Die("pthread_mutex_lock failure: %s\n", strerror(rtn)); + /* accumulate cpu time into main stopwatch */ + StopwatchInclude(&(wpool->watch), &thread_watch); + /* release our lock */ + if ((rtn = pthread_mutex_unlock(&(wpool->output_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + + pthread_exit(NULL); + return NULL; /* solely to silence compiler warnings */ +} +#endif /* HMMER_THREADS */ + + + +#ifdef HMMER_PVM +/* Function: main_loop_pvm() + * Date: SRE, Wed Aug 19 13:59:54 1998 [St. Louis] + * + * Purpose: Given an HMM and parameters for synthesizing random + * sequences; return a histogram of scores. + * (PVM version) + * + * Args: hmm - an HMM to calibrate. + * seed - random number seed + * nsample - number of seqs to synthesize + * lumpsize- # of seqs per slave exchange; controls granularity + * lenmean - mean length of random sequence + * lensd - std dev of random seq length + * fixedlen- if nonzero, override lenmean, always this len + * hist - RETURN: the score histogram + * ret_max - RETURN: highest score seen in simulation + * extrawatch - RETURN: total CPU time spend in slaves. + * ret_nslaves- RETURN: number of PVM slaves run. + * + * Returns: (void) + * hist is alloc'ed here, and must be free'd by caller. + */ +static void +main_loop_pvm(struct plan7_s *hmm, int seed, int nsample, int lumpsize, + float lenmean, float lensd, int fixedlen, + struct histogram_s **ret_hist, float *ret_max, + Stopwatch_t *extrawatch, int *ret_nslaves) +{ + struct histogram_s *hist; + int master_tid; + int *slave_tid; + int nslaves; + int nsent; /* # of seqs we've asked for so far */ + int ndone; /* # of seqs we've got results for so far */ + int packet; /* # of seqs to have a slave do */ + float max; + int slaveidx; /* id of a slave */ + float *sc; /* scores returned by a slave */ + Stopwatch_t slavewatch; + int i; + + StopwatchZero(extrawatch); + hist = AllocHistogram(-200, 200, 100); + max = -FLT_MAX; + + /* Initialize PVM + */ + if ((master_tid = pvm_mytid()) < 0) + Die("pvmd not responding -- do you have PVM running?"); +#if DEBUGLEVEL >= 1 + pvm_catchout(stderr); /* catch output for debugging */ +#endif + PVMSpawnSlaves("hmmcalibrate-pvm", &slave_tid, &nslaves); + + /* Initialize the slaves + */ + pvm_initsend(PvmDataDefault); + pvm_pkfloat(&lenmean, 1, 1); + pvm_pkfloat(&lensd, 1, 1); + pvm_pkint( &fixedlen, 1, 1); + pvm_pkint( &Alphabet_type, 1, 1); + pvm_pkint( &seed, 1, 1); + if (! PVMPackHMM(hmm)) Die("Failed to pack the HMM"); + pvm_mcast(slave_tid, nslaves, HMMPVM_INIT); + SQD_DPRINTF1(("Initialized %d slaves\n", nslaves)); + + /* Confirm slaves' OK status. + */ + PVMConfirmSlaves(slave_tid, nslaves); + SQD_DPRINTF1(("Slaves confirm that they're ok...\n")); + + /* Load the slaves + */ + nsent = ndone = 0; + for (slaveidx = 0; slaveidx < nslaves; slaveidx++) + { + packet = (nsample - nsent > lumpsize ? lumpsize : nsample - nsent); + + pvm_initsend(PvmDataDefault); + pvm_pkint(&packet, 1, 1); + pvm_pkint(&slaveidx, 1, 1); + pvm_send(slave_tid[slaveidx], HMMPVM_WORK); + nsent += packet; + } + SQD_DPRINTF1(("Loaded %d slaves\n", nslaves)); + + /* Receive/send loop + */ + sc = MallocOrDie(sizeof(float) * lumpsize); + while (nsent < nsample) + { + /* integrity check of slaves */ + PVMCheckSlaves(slave_tid, nslaves); + + /* receive results */ + SQD_DPRINTF2(("Waiting for results...\n")); + pvm_recv(-1, HMMPVM_RESULTS); + pvm_upkint(&slaveidx, 1, 1); + pvm_upkint(&packet, 1, 1); + pvm_upkfloat(sc, packet, 1); + SQD_DPRINTF2(("Got results.\n")); + ndone += packet; + + /* store results */ + for (i = 0; i < packet; i++) { + AddToHistogram(hist, sc[i]); + if (sc[i] > max) max = sc[i]; + } + /* send new work */ + packet = (nsample - nsent > lumpsize ? lumpsize : nsample - nsent); + + pvm_initsend(PvmDataDefault); + pvm_pkint(&packet, 1, 1); + pvm_pkint(&slaveidx, 1, 1); + pvm_send(slave_tid[slaveidx], HMMPVM_WORK); + SQD_DPRINTF2(("Told slave %d to do %d more seqs.\n", slaveidx, packet)); + nsent += packet; + } + + /* Wait for the last output to come in. + */ + while (ndone < nsample) + { + /* integrity check of slaves */ + PVMCheckSlaves(slave_tid, nslaves); + + /* receive results */ + SQD_DPRINTF1(("Waiting for final results...\n")); + pvm_recv(-1, HMMPVM_RESULTS); + pvm_upkint(&slaveidx, 1, 1); + pvm_upkint(&packet, 1, 1); + pvm_upkfloat(sc, packet, 1); + SQD_DPRINTF2(("Got some final results.\n")); + ndone += packet; + /* store results */ + for (i = 0; i < packet; i++) { + AddToHistogram(hist, sc[i]); + if (sc[i] > max) max = sc[i]; + } + } + + /* Shut down the slaves: send -1,-1,-1. + */ + pvm_initsend(PvmDataDefault); + packet = -1; + pvm_pkint(&packet, 1, 1); + pvm_pkint(&packet, 1, 1); + pvm_pkint(&packet, 1, 1); + pvm_mcast(slave_tid, nslaves, HMMPVM_WORK); + + /* Collect stopwatch results; quit the VM; return. + */ + for (i = 0; i < nslaves; i++) + { + pvm_recv(-1, HMMPVM_RESULTS); + pvm_upkint(&slaveidx, 1, 1); + StopwatchPVMUnpack(&slavewatch); + + SQD_DPRINTF1(("Slave %d finished; says it used %.2f cpu, %.2f sys\n", + slaveidx, slavewatch.user, slavewatch.sys)); + + StopwatchInclude(extrawatch, &slavewatch); + } + + free(slave_tid); + free(sc); + pvm_exit(); + *ret_hist = hist; + *ret_max = max; + *ret_nslaves = nslaves; + return; +} +#endif /* HMMER_PVM */ + + + diff --git a/forester/archive/RIO/others/hmmer/src/hmmconvert.c b/forester/archive/RIO/others/hmmer/src/hmmconvert.c new file mode 100644 index 0000000..6a9ea06 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmconvert.c @@ -0,0 +1,209 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmconvert.c + * SRE, Thu Oct 30 08:56:22 1997; St. Louis + * + * main() for converting between HMM file formats, and + * for converting HMMs to other software formats like GCG profiles. + * + * CVS $Id: hmmconvert.c,v 1.1.1.1 2005/03/22 08:33:58 cmzmasek Exp $ + */ + +#include +#include + +#include "structs.h" /* data structures, macros, #define's */ +#include "config.h" /* compile-time configuration constants */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "squid.h" /* general sequence analysis library */ + +static char banner[] = "hmmconvert - convert between profile HMM file formats"; + +static char usage[] = "\ +Usage: hmmconvert [-options] \n\ + Available options are:\n\ + -h : help; print brief help on version and usage\n\ +\n\ + -a : convert to HMMER ASCII file (the default)\n\ + -b : convert to HMMER binary file\n\ + -p : convert to GCG Profile .prf format\n\ + -P : convert to Compugen extended .eprf profile format\n\ +\n\ + -A : append mode; append to \n\ + -F : force mode; allow overwriting of existing files\n\ +"; + +static char experts[] = "\ +\n"; + + +static struct opt_s OPTIONS[] = { + { "-a", TRUE, sqdARG_NONE }, + { "-b", TRUE, sqdARG_NONE }, + { "-h", TRUE, sqdARG_NONE }, + { "-p", TRUE, sqdARG_NONE }, + { "-A", TRUE, sqdARG_NONE }, + { "-F", TRUE, sqdARG_NONE }, + { "-P", TRUE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *infile; /* name of input HMM file */ + char *outfile; /* name of output HMM file */ + HMMFILE *infp; /* input HMM file ptr */ + FILE *outfp; /* output HMM file ptr */ + char *mode; /* mode to open file in */ + struct plan7_s *hmm; /* a profile HMM structure */ + int nhmm; /* number of HMMs converted */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + int do_append; /* TRUE to append to existing outfile */ + int do_force; /* TRUE to allow overwriting */ + enum hmmfmt_e { P7ASCII, P7BINARY, GCGPROFILE, BICPROFILE } + outfmt; /* output format */ + + /*********************************************** + * Parse command line + ***********************************************/ + + outfmt = P7ASCII; + do_append = FALSE; + do_force = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-a") == 0) { outfmt = P7ASCII; } + else if (strcmp(optname, "-b") == 0) { outfmt = P7BINARY; } + else if (strcmp(optname, "-p") == 0) { outfmt = GCGPROFILE; } + else if (strcmp(optname, "-A") == 0) { do_append = TRUE; } + else if (strcmp(optname, "-F") == 0) { do_force = TRUE; } + else if (strcmp(optname, "-P") == 0) { outfmt = BICPROFILE; } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 2) + Die("Incorrect number of arguments.\n%s\n", usage); + + infile = argv[optind++]; + outfile = argv[optind++]; + + /*********************************************** + * Open input HMM database (might be in HMMERDB or current directory) + ***********************************************/ + + if ((infp = HMMFileOpen(infile, "HMMERDB")) == NULL) + Die("Failed to open HMM database %s\n%s", infile, usage); + + /*********************************************** + * Open output HMM file + ***********************************************/ + + if (do_append) + { /* If we're appending to a file, it needs to be Plan7 format */ + HMMFILE *test; + + if (FileExists(outfile)) { + test = HMMFileOpen(outfile, NULL); + if (test == NULL) + Die("%s not an HMM file; I refuse to append to it; using stdout instead", + outfile); + + /* bug #14 fix. 12/24/00, xref STL3 p.133. */ + if (test->is_binary && outfmt != P7BINARY) + Die("File %s is in Plan 7 binary format; must append the same fmt.", outfile); + else if (! test->is_binary && outfmt != P7ASCII) + Die("File %s is in Plan 7 ASCII format; must append the same fmt.", outfile); + + HMMFileClose(test); + } + switch (outfmt) { + case P7ASCII: mode = "a"; break; + case P7BINARY: mode = "ab"; break; + case GCGPROFILE: Die("You cannot append GCG profiles"); + case BICPROFILE: Die("You cannot append Compugen extended profiles"); + default: Die("unexpected format"); + } + } + else + { /* else, we're writing a new file */ + if (! do_force && FileExists(outfile)) + Die("Output HMM file %s already exists. Please rename or delete it.", outfile); + switch (outfmt) { + case P7ASCII: mode = "w"; break; + case P7BINARY: mode = "wb"; break; + case GCGPROFILE: mode = "w"; break; + case BICPROFILE: mode = "w"; break; + default: Die("unexpected format"); + } + } + if ((outfp = fopen(outfile, mode)) == NULL) + Die("Failed to open output file %s for writing", outfile); + + /*********************************************** + * Show the banner + ***********************************************/ + + Banner(stdout, banner); + printf( "Input HMM file: %s\n", infile); + printf( "Output HMM file: %s\n", outfile); + printf( "Converting to: "); + switch (outfmt) { + case P7ASCII: puts("HMMER Plan7 ASCII"); break; + case P7BINARY: puts("HMMER Plan7 binary"); break; + case GCGPROFILE: puts("GCG Profile .prf"); break; + case BICPROFILE: puts("Compugen .eprf profile"); break; + default: Die("unexpected fault"); + } + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n"); + + /*********************************************** + * Do the conversion + ***********************************************/ + + nhmm = 0; + while (HMMFileRead(infp, &hmm)) { + if (hmm == NULL) + Die("HMM file %s may be corrupt or in incorrect format; parse failed", infile); + + switch(outfmt) { + case P7ASCII: WriteAscHMM(outfp, hmm); break; + case P7BINARY: WriteBinHMM(outfp, hmm); break; + case GCGPROFILE: WriteProfile(outfp, hmm, FALSE); break; + case BICPROFILE: WriteProfile(outfp, hmm, TRUE); break; + default: Die("unexpected format"); + } + + printf(" - converted %s\n", hmm->name); + FreePlan7(hmm); + nhmm++; + } + printf("\n%d HMM(s) converted and written to %s\n", nhmm, outfile); + + /*********************************************** + * Clean-up and exit. + ***********************************************/ + + HMMFileClose(infp); + fclose(outfp); + SqdClean(); + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/src/hmmemit.c b/forester/archive/RIO/others/hmmer/src/hmmemit.c new file mode 100644 index 0000000..857b61c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmemit.c @@ -0,0 +1,267 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmemit.c + * SRE, Sun Mar 8 14:11:24 1998 [St. Louis] + * + * main() for generating sequences from an HMM + * CVS $Id: hmmemit.c,v 1.1.1.1 2005/03/22 08:34:09 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "structs.h" /* data structures, macros, #define's */ +#include "config.h" /* compile-time configuration constants */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "squid.h" /* general sequence analysis library */ +#include "msa.h" /* squid's multiple sequence i/o */ + +static char banner[] = "hmmemit - generate sequences from a profile HMM"; + +static char usage[] = "\ +Usage: hmmemit [-options] \n\ +Available options are:\n\ + -a : write generated sequences as an alignment, not FASTA\n\ + -c : generate a single \"consensus\" sequence\n\ + -h : help; print brief help on version and usage\n\ + -n : emit sequences (default 10)\n\ + -o : save sequences in file \n\ + -q : quiet - suppress verbose banner\n\ +"; + +static char experts[] = "\ + --seed : set random number seed to \n\ +"; + +static struct opt_s OPTIONS[] = { + { "-a", TRUE, sqdARG_NONE }, + { "-c", TRUE, sqdARG_NONE }, + { "-h", TRUE, sqdARG_NONE }, + { "-n", TRUE, sqdARG_INT}, + { "-o", TRUE, sqdARG_STRING}, + { "-q", TRUE, sqdARG_NONE}, + { "--seed", FALSE, sqdARG_INT}, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMMs from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + struct plan7_s *hmm; /* HMM to generate from */ + FILE *fp; /* output file handle */ + int L; /* length of a sequence */ + int i; /* counter over sequences */ + int nhmm; /* counter over HMMs */ + + char *ofile; /* output sequence file */ + int nseq; /* number of seqs to sample */ + int seed; /* random number generator seed */ + int be_quiet; /* TRUE to silence header/footer */ + int do_alignment;/* TRUE to output in aligned format */ + int do_consensus;/* TRUE to do a single consensus seq */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse command line + ***********************************************/ + + nseq = 10; + seed = time ((time_t *) NULL); + be_quiet = FALSE; + do_alignment = FALSE; + do_consensus = FALSE; + ofile = NULL; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-a") == 0) do_alignment = TRUE; + else if (strcmp(optname, "-c") == 0) do_consensus = TRUE; + else if (strcmp(optname, "-n") == 0) nseq = atoi(optarg); + else if (strcmp(optname, "-o") == 0) ofile = optarg; + else if (strcmp(optname, "-q") == 0) be_quiet = TRUE; + else if (strcmp(optname, "--seed") == 0) seed = atoi(optarg); + else if (strcmp(optname, "-h") == 0) + { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 1) + Die("Incorrect number of arguments.\n%s\n", usage); + + hmmfile = argv[optind++]; + + sre_srandom(seed); + + if (do_alignment && do_consensus) + Die("Sorry, -a and -c are incompatible.\nUsage:\n%s", usage); + if (nseq != 10 && do_consensus) + Warn("-c (consensus) overrides -n (# of sampled seqs)"); + + /*********************************************** + * Open HMM file (might be in HMMERDB or current directory). + * Open output file, if needed. + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, "HMMERDB")) == NULL) + Die("Failed to open HMM file %s\n%s", hmmfile, usage); + + if (ofile == NULL) fp = stdout; + else { + if ((fp = fopen(ofile, "w")) == NULL) + Die("Failed to open output file %s for writing", ofile); + } + + /*********************************************** + * Show the options banner + ***********************************************/ + + if (! be_quiet) + { + Banner(stdout, banner); + printf("HMM file: %s\n", hmmfile); + if (! do_consensus) { + printf("Number of seqs: %d\n", nseq); + printf("Random seed: %d\n", seed); + } else { + printf("Generating consensus sequence.\n"); + } + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n"); + } + + /*********************************************** + * For every HMM in the file, do some emission. + ***********************************************/ + + nhmm = 0; + while (HMMFileRead(hmmfp, &hmm)) { + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", hmmfile); + + /* Configure the HMM to shut off N,J,C emission: so we + * do a simple single pass through the model. + */ + Plan7NakedConfig(hmm); + Plan7Renormalize(hmm); + + /*********************************************** + * Do the work. + * If we're generating an alignment, we have to collect + * all our traces, then output. If we're generating unaligned + * sequences, we can emit one at a time. + ***********************************************/ + + if (do_consensus) + { + char *seq; + SQINFO sqinfo; /* info about sequence (name/desc) */ + + EmitConsensusSequence(hmm, &seq, NULL, &L, NULL); + strcpy(sqinfo.name, hmm->name); + strcpy(sqinfo.desc, "profile HMM generated consensus sequence [hmmemit]"); + + sqinfo.len = L; + sqinfo.flags = SQINFO_NAME | SQINFO_DESC | SQINFO_LEN; + + WriteSeq(fp, SQFILE_FASTA, seq, &sqinfo); + free(seq); + } + else if (do_alignment) + { + struct p7trace_s **tr; /* traces for aligned sequences */ + char **dsq; /* digitized sequences */ + SQINFO *sqinfo; /* info about sequences (name/desc) */ + MSA *msa; /* alignment */ + float *wgt; + + dsq = MallocOrDie(sizeof(char *) * nseq); + tr = MallocOrDie(sizeof(struct p7trace_s *) * nseq); + sqinfo = MallocOrDie(sizeof(SQINFO) * nseq); + wgt = MallocOrDie(sizeof(float) * nseq); + FSet(wgt, nseq, 1.0); + + for (i = 0; i < nseq; i++) + { + EmitSequence(hmm, &(dsq[i]), &L, &(tr[i])); + sprintf(sqinfo[i].name, "seq%d", i+1); + sqinfo[i].len = L; + sqinfo[i].flags = SQINFO_NAME | SQINFO_LEN; + } + + msa = P7Traces2Alignment(dsq, sqinfo, wgt, nseq, hmm->M, tr, FALSE); + msa->name = sre_strdup(hmm->name, -1); + msa->desc = sre_strdup("Synthetic sequence alignment generated by hmmemit", -1); + + /* Output the alignment */ + WriteStockholm(fp, msa); + + /* Free memory + */ + for (i = 0; i < nseq; i++) + { + P7FreeTrace(tr[i]); + free(dsq[i]); + } + MSAFree(msa); + free(sqinfo); + free(dsq); + free(wgt); + free(tr); + } + else /* unaligned sequence output */ + { + struct p7trace_s *tr; /* generated trace */ + char *dsq; /* digitized sequence */ + char *seq; /* alphabetic sequence */ + SQINFO sqinfo; /* info about sequence (name/len) */ + + for (i = 0; i < nseq; i++) + { + EmitSequence(hmm, &dsq, &L, &tr); + sprintf(sqinfo.name, "%s-%d", hmm->name, i+1); + sqinfo.len = L; + sqinfo.flags = SQINFO_NAME | SQINFO_LEN; + + seq = DedigitizeSequence(dsq, L); + + WriteSeq(fp, SQFILE_FASTA, seq, &sqinfo); + + P7FreeTrace(tr); + free(dsq); + free(seq); + } + } + nhmm++; + FreePlan7(hmm); + } + + /* We're done; clean up and exit. + */ + if (nhmm == 0) + Die("Failed to read any HMMs from %s\n", hmmfile); + if (ofile != NULL) { + fclose(fp); + if (!be_quiet) printf("Output saved in file %s\n", ofile); + } + HMMFileClose(hmmfp); + SqdClean(); + return 0; +} + diff --git a/forester/archive/RIO/others/hmmer/src/hmmfetch.c b/forester/archive/RIO/others/hmmer/src/hmmfetch.c new file mode 100644 index 0000000..3f06f7c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmfetch.c @@ -0,0 +1,130 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmfetch.c + * SRE, Wed Aug 5 14:26:51 1998 [St. Louis] + * + * Recover a specific HMM file from an HMM database, using + * an SSI index (created with hmmindex). + * + * CVS $Id: hmmfetch.c,v 1.1.1.1 2005/03/22 08:34:14 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "funcs.h" +#include "version.h" + +#include "globals.h" + +static char banner[] = "hmmfetch -- retrieve specific HMM from an HMM database"; + +static char usage[] = "\ +Usage: hmmfetch [-options] \n\ +Available options are:\n\ + -h : print short usage and version info, then exit\n\ + -n : interpret instead as an HMM number\n\ +"; + +static char experts[] = "\ +"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-n", TRUE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + + +int +main(int argc, char **argv) +{ + char *hmmfile; /* HMM file to open */ + char *key; /* HMM name to retrieve */ + HMMFILE *hmmfp; /* opened hmm file pointer */ + struct plan7_s *hmm; /* a hidden Markov model */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + int by_number; /* fetch by number, not name */ + int nhmm; /* hmm number */ + + /*********************************************** + * Parse the command line + ***********************************************/ + + by_number = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-n") == 0) by_number = TRUE; + else if (strcmp(optname, "-h") == 0) + { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + + if (argc - optind != 2) Die("Incorrect number of arguments.\n%s\n", usage); + hmmfile = argv[optind++]; + key = argv[optind++]; + + /*********************************************** + * Open HMM file, make sure SSI index exists + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, "HMMERDB")) == NULL) + Die("failed to open HMM file %s for reading.", hmmfile); + if (hmmfp->ssi == NULL) + Die("There is no SSI index for %s; you need to use hmmindex on it.", hmmfile); + + /*********************************************** + * find key in hmmfile; get HMM; show as ASCII + ***********************************************/ + + if (by_number) { + if (! IsInt(key)) Die("%s does not appear to be a number.", key); + nhmm = atoi(key); + if (! HMMFilePositionByIndex(hmmfp, nhmm)) + Die("failed to position %s to HMM #%d", hmmfile, nhmm); + } else { + if (! HMMFilePositionByName(hmmfp, key)) + Die("No such hmm %s in HMM file %s\n", key, hmmfile); + } + + if (! HMMFileRead(hmmfp, &hmm)) + Die("Unexpected end of HMM file"); + if (hmm == NULL) + Die("HMM file %s may be corrupt or in incorrect format; parse failed", hmmfile); + + WriteAscHMM(stdout, hmm); + + FreePlan7(hmm); + HMMFileClose(hmmfp); + + /*********************************************** + * Exit + ***********************************************/ + + SqdClean(); + return 0; +} + + diff --git a/forester/archive/RIO/others/hmmer/src/hmmindex.c b/forester/archive/RIO/others/hmmer/src/hmmindex.c new file mode 100644 index 0000000..8323687 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmindex.c @@ -0,0 +1,166 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmindex.c + * SRE, Wed Aug 5 11:05:03 1998 [St. Louis] + * + * Create an SSI index file for an HMM database. + * + * CVS $Id: hmmindex.c,v 1.1.1.1 2005/03/22 08:34:03 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "funcs.h" +#include "version.h" +#include "globals.h" +#include "ssi.h" + +static char banner[] = "hmmindex -- create SSI index for an HMM database"; + +static char usage[] = "\ +Usage: hmmindex [-options] \n\ +Available options are:\n\ + -h : print short usage and version info, then exit\n\ +"; + +static char experts[] = "\ +"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *hmmfile; /* HMM file to open */ + SSIINDEX *ssi; /* SSI index in memory */ + char *ssifile; /* name of SSI index on disk */ + HMMFILE *hmmfp; /* opened hmm file pointer */ + struct plan7_s *hmm; /* a hidden Markov model */ + int idx, nhmm; /* counter over HMMs */ + int npri, nsec; /* # of names, accessions */ + int fh; /* file handle */ + int status; /* return status from SSI call */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse the command line + ***********************************************/ + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) + { + if (strcmp(optname, "-h") == 0) + { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + + if (argc - optind != 1) Die("Incorrect number of arguments.\n%s\n", usage); + hmmfile = argv[optind++]; + + /*********************************************** + * Open our input HMM file, make sure all is well with the output SSI filename + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, NULL)) == NULL) + Die("failed to open HMM file %s for reading.", hmmfile); + if (hmmfp->ssi != NULL) + Die("SSI index already exists for %s.\nPlease delete it first.", hmmfile); + + ssifile = MallocOrDie(strlen(hmmfile) + 5); + sprintf(ssifile, "%s%s", hmmfile, ".ssi"); + if (FileExists(ssifile)) /* shouldn't happen */ + Die("An SSI file %s already exists; please delete it first", ssifile); + + if ((ssi = SSICreateIndex(hmmfp->mode)) == NULL) + Die("Failed to initialize the SSI index structure"); + if (SSIAddFileToIndex(ssi, hmmfile, hmmfp->is_binary, &fh) != 0) + Die("SSIAddFileToIndex() failed"); + + /*********************************************** + * Show the banner + ***********************************************/ + + Banner(stdout, banner); + printf("HMM file: %s\n", hmmfile); + if (hmmfp->mode == SSI_OFFSET_I64) + printf("Index file mode: 64-bit (large HMM file)\n"); + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n"); + + /*********************************************** + * Get offsets and names for every model; store in keylist + ***********************************************/ + + printf("Determining offsets for %s, please be patient...\n", hmmfile); + + nhmm = npri = nsec = 0; + while (HMMFileRead(hmmfp, &hmm)) + { + if (hmm == NULL) + Die("HMM file %s may be corrupt or in incorrect format; parse failed", hmmfile); + + /* record name of HMM as the primary retrieval key */ + status = SSIAddPrimaryKeyToIndex(ssi, hmm->name, fh, &(hmmfp->offset), NULL, 0); + if (status != 0) Die("SSIAddPrimaryKeyToIndex() failed"); + npri++; + + /* record accession of HMM as a secondary retrieval key */ + if (hmm->flags & PLAN7_ACC) { + status = SSIAddSecondaryKeyToIndex(ssi, hmm->acc, hmm->name); + if (status != 0) Die("SSIAddSecondaryKeyToIndex() failed"); + nsec++; + } + + nhmm++; + FreePlan7(hmm); + } + HMMFileClose(hmmfp); + + /*********************************************** + * Output the SSI file + ***********************************************/ + + status = SSIWriteIndex(ssifile, ssi); + if (status != 0) Die("SSIWriteIndex() failed"); + + printf("Complete.\n"); + printf("HMM file: %s\n", hmmfile); + printf("SSI index: %s\n", ssifile); + printf("# of HMMS: %d\n", nhmm); + printf("HMM names: %d\n", npri); + printf("HMM accessions: %d\n", nsec); + + + /*********************************************** + * Exit + ***********************************************/ + + free(ssifile); + SSIFreeIndex(ssi); + SqdClean(); + return 0; +} + + diff --git a/forester/archive/RIO/others/hmmer/src/hmmio.c b/forester/archive/RIO/others/hmmer/src/hmmio.c new file mode 100644 index 0000000..f2d6da5 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmio.c @@ -0,0 +1,1744 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmio.c + * + * Input/output of HMMs. + * + * As of HMMER 2.0, HMMs are saved by default in a tabular ASCII format + * as log-odds or log probabilities scaled to an integer. A binary save + * file format is also available which is faster to access (a + * consideration which might be important for HMM library applications). + * HMMs can be concatenated into HMM libraries. + * + * A comment on loss of accuracy. Storing a number as a scaled log + * probability guarantees us an error of about 0.035% or + * less in the retrieved probability. We are relatively invulnerable + * to the truncation errors which HMMER 1.8 was vulnerable to. + * + * Magic numbers (both for the ASCII and binary save formats) are used + * to label save files with a major version number. This simplifies the task of + * backwards compatibility as new versions of the program are created. + * Reverse but not forward compatibility is guaranteed. I.e. HMMER 2.0 + * can read `1.7' save files, but not vice versa. Note that the major + * version number in the save files is NOT the version of the software + * that generated it; rather, the number of the last major version in which + * save format changed. + * + ****************************************************************** + * + * The HMM input API: + * + * HMMFILE *hmmfp; + * char *hmmfile; + * struct plan7_s *hmm; + * char env[] = "HMMERDB"; (a la BLASTDB) + * + * hmmfp = HMMFileOpen(hmmfile, env) NULL on failure + * while (HMMFileRead(hmmfp, &hmm)) 0 if no more HMMs + * if (hmm == NULL) Die(); NULL on file parse failure + * whatever; + * FreeHMM(hmm); + * } + * HMMFileClose(hmmfp); + * + ***************************************************************** + * + * The HMM output API: + * + * FILE *ofp; + * struct plan7_s *hmm; + * + * WriteAscHMM(ofp, hmm); to write/append an HMM to open file + * or WriteBinHMM(ofp, hmm); to write/append binary format HMM to open file + * + ***************************************************************** + * + * V1.0: original implementation + * V1.1: regularizers removed from model structure + * V1.7: ref and cs annotation lines added from alignment, one + * char per match state 1..M + * V1.9: null model and name added to HMM structure. ASCII format changed + * to compact tabular one. + * V2.0: Plan7. Essentially complete rewrite. + */ + +#include +#include +#include +#include +#include +#include /* to get SEEK_CUR definition on silly Suns */ + +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "funcs.h" +#include "version.h" +#include "ssi.h" + +/* Magic numbers identifying binary formats. + * Do not change the old magics! Necessary for backwards compatibility. + */ +static unsigned int v10magic = 0xe8ededb1; /* v1.0 binary: "hmm1" + 0x80808080 */ +static unsigned int v10swap = 0xb1edede8; /* byteswapped v1.0 */ +static unsigned int v11magic = 0xe8ededb2; /* v1.1 binary: "hmm2" + 0x80808080 */ +static unsigned int v11swap = 0xb2edede8; /* byteswapped v1.1 */ +static unsigned int v17magic = 0xe8ededb3; /* v1.7 binary: "hmm3" + 0x80808080 */ +static unsigned int v17swap = 0xb3edede8; /* byteswapped v1.7 */ +static unsigned int v19magic = 0xe8ededb4; /* V1.9 binary: "hmm4" + 0x80808080 */ +static unsigned int v19swap = 0xb4edede8; /* V1.9 binary, byteswapped */ +static unsigned int v20magic = 0xe8ededb5; /* V2.0 binary: "hmm5" + 0x80808080 */ +static unsigned int v20swap = 0xb5edede8; /* V2.0 binary, byteswapped */ + +/* Old HMMER 1.x file formats. + */ +#define HMMER1_0B 1 /* binary HMMER 1.0 */ +#define HMMER1_0F 2 /* flat ascii HMMER 1.0 */ +#define HMMER1_1B 3 /* binary HMMER 1.1 */ +#define HMMER1_1F 4 /* flat ascii HMMER 1.1 */ +#define HMMER1_7B 5 /* binary HMMER 1.7 */ +#define HMMER1_7F 6 /* flat ascii HMMER 1.7 */ +#define HMMER1_9B 7 /* HMMER 1.9 binary */ +#define HMMER1_9F 8 /* HMMER 1.9 flat ascii */ + +static int read_asc20hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_bin20hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_asc19hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_bin19hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_asc17hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_bin17hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_asc11hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_bin11hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_asc10hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); +static int read_bin10hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm); + +static void byteswap(char *swap, int nbytes); +static char *prob2ascii(float p, float null); +static float ascii2prob(char *s, float null); +static void write_bin_string(FILE *fp, char *s); +static int read_bin_string(FILE *fp, int doswap, char **ret_s); +static void multiline(FILE *fp, char *pfx, char *s); + +static struct plan9_s *read_plan9_binhmm(FILE *fp, int version, int swapped); +static struct plan9_s *read_plan9_aschmm(FILE *fp, int version); + +/***************************************************************** + * HMM input API functions: + * HMMFileOpen() + * HMMFileRead() + * HMMFileClose() + * HMMFileRewind() + *****************************************************************/ + +/* Function: HMMFileOpen() + * + * Purpose: Open an HMM file for reading. The file may be either + * an index for a library of HMMs, or an HMM. + * + * Args: hmmfile - name of file + * env - NULL, or environment variable for HMM database. + * + * Return: Valid HMMFILE *, or NULL on failure. + */ +HMMFILE * +HMMFileOpen(char *hmmfile, char *env) +{ + HMMFILE *hmmfp; + unsigned int magic; + char buf[512]; + char *ssifile; + char *dir; /* dir name in which HMM file was found */ + int status; + + hmmfp = (HMMFILE *) MallocOrDie (sizeof(HMMFILE)); + hmmfp->f = NULL; + hmmfp->parser = NULL; + hmmfp->is_binary = FALSE; + hmmfp->byteswap = FALSE; + hmmfp->is_seekable= TRUE; /* always; right now, an HMM must always be in a file. */ + + /* Open the file. Look in current directory. + * If that doesn't work, check environment var for + * a second possible directory (usually the location + * of a system-wide HMM library). + * Using dir name if necessary, construct correct SSI file name. + */ + hmmfp->f = NULL; + hmmfp->ssi = NULL; + if ((hmmfp->f = fopen(hmmfile, "r")) != NULL) + { + ssifile = MallocOrDie(sizeof(char) * (strlen(hmmfile) + 5)); + sprintf(ssifile, "%s.ssi", hmmfile); + + if ((hmmfp->mode = SSIRecommendMode(hmmfile)) == -1) + Die("SSIRecommendMode() failed"); + } + else if ((hmmfp->f = EnvFileOpen(hmmfile, env, &dir)) != NULL) + { + char *full; + full = FileConcat(dir, hmmfile); + + ssifile = MallocOrDie(sizeof(char) * (strlen(full) + strlen(hmmfile) + 5)); + sprintf(ssifile, "%s.ssi", full); + + if ((hmmfp->mode = SSIRecommendMode(full)) == -1) + Die("SSIRecommendMode() failed"); + + free(full); + free(dir); + } + else return NULL; + + /* Open the SSI index file. If it doesn't exist, or it's corrupt, or + * some error happens, hmmfp->ssi stays NULL. + */ + SQD_DPRINTF1(("Opening ssifile %s...\n", ssifile)); + SSIOpen(ssifile, &(hmmfp->ssi)); + free(ssifile); + + /* Initialize the disk offset stuff. + */ + status = SSIGetFilePosition(hmmfp->f, hmmfp->mode, &(hmmfp->offset)); + if (status != 0) Die("SSIGetFilePosition() failed"); + + /* Check for binary or byteswapped binary format + * by peeking at first 4 bytes. + */ + if (! fread((char *) &magic, sizeof(unsigned int), 1, hmmfp->f)) { + HMMFileClose(hmmfp); + return NULL; + } + rewind(hmmfp->f); + + if (magic == v20magic) { + hmmfp->parser = read_bin20hmm; + hmmfp->is_binary = TRUE; + return hmmfp; + } + else if (magic == v20swap) { + SQD_DPRINTF1(("Opened a HMMER 2.0 binary file [byteswapped]\n")); + hmmfp->parser = read_bin20hmm; + hmmfp->is_binary = TRUE; + hmmfp->byteswap = TRUE; + return hmmfp; + } + else if (magic == v19magic) { + hmmfp->parser = read_bin19hmm; + hmmfp->is_binary = TRUE; + return hmmfp; + } + else if (magic == v19swap) { + hmmfp->parser = read_bin19hmm; + hmmfp->is_binary = TRUE; + hmmfp->byteswap = TRUE; + return hmmfp; + } + else if (magic == v17magic) { + hmmfp->parser = read_bin17hmm; + hmmfp->is_binary = TRUE; + return hmmfp; + } + else if (magic == v17swap) { + hmmfp->parser = read_bin17hmm; + hmmfp->is_binary = TRUE; + hmmfp->byteswap = TRUE; + return hmmfp; + } + else if (magic == v11magic) { + hmmfp->parser = read_bin11hmm; + hmmfp->is_binary = TRUE; + return hmmfp; + } + else if (magic == v11swap) { + hmmfp->parser = read_bin11hmm; + hmmfp->is_binary = TRUE; + hmmfp->byteswap = TRUE; + return hmmfp; + } + else if (magic == v10magic) { + hmmfp->parser = read_bin10hmm; + hmmfp->is_binary = TRUE; + return hmmfp; + } + else if (magic == v10swap) { + hmmfp->parser = read_bin10hmm; + hmmfp->is_binary = TRUE; + hmmfp->byteswap = TRUE; + return hmmfp; + } + /* else we fall thru; it may be an ASCII file. */ + + /* If magic looks binary but we don't recognize it, choke and die. + */ + if (magic & 0x80000000) { + Warn("\ +%s appears to be a binary but format is not recognized\n\ +It may be from a HMMER version more recent than yours,\n\ +or may be a different kind of binary altogether.\n", hmmfile); + HMMFileClose(hmmfp); + return NULL; + } + + /* Check for ASCII format by peeking at first word. + */ + if (fgets(buf, 512, hmmfp->f) == NULL) { + HMMFileClose(hmmfp); + return NULL; + } + rewind(hmmfp->f); + + if (strncmp("HMMER2.0", buf, 8) == 0) { + hmmfp->parser = read_asc20hmm; + return hmmfp; + } else if (strncmp("HMMER v1.9", buf, 10) == 0) { + hmmfp->parser = read_asc19hmm; + return hmmfp; + } else if (strncmp("# HMM v1.7", buf, 10) == 0) { + hmmfp->parser = read_asc17hmm; + return hmmfp; + } else if (strncmp("# HMM v1.1", buf, 10) == 0) { + hmmfp->parser = read_asc11hmm; + return hmmfp; + } else if (strncmp("# HMM v1.0", buf, 10) == 0) { + hmmfp->parser = read_asc10hmm; + return hmmfp; + } + + /* If we haven't recognized it yet, it's bogus. + */ + HMMFileClose(hmmfp); + return NULL; +} +int +HMMFileRead(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + int status; + /* Set the disk position marker. */ + if (hmmfp->is_seekable) { + status = SSIGetFilePosition(hmmfp->f, hmmfp->mode, &(hmmfp->offset)); + if (status != 0) Die("SSIGetFilePosition() failed"); + } + /* Parse the HMM and return it. */ + return (*hmmfp->parser)(hmmfp, ret_hmm); +} +void +HMMFileClose(HMMFILE *hmmfp) +{ + if (hmmfp->f != NULL) fclose(hmmfp->f); + if (hmmfp->ssi != NULL) SSIClose(hmmfp->ssi); + free(hmmfp); +} +void +HMMFileRewind(HMMFILE *hmmfp) +{ + rewind(hmmfp->f); +} +int +HMMFilePositionByName(HMMFILE *hmmfp, char *name) +{ + SSIOFFSET offset; /* offset in hmmfile, from SSI */ + int fh; /* ignored. */ + + if (hmmfp->ssi == NULL) return 0; + if (SSIGetOffsetByName(hmmfp->ssi, name, &fh, &offset) != 0) return 0; + if (SSISetFilePosition(hmmfp->f, &offset) != 0) return 0; + return 1; +} +int +HMMFilePositionByIndex(HMMFILE *hmmfp, int idx) +{ /* idx runs from 0..nhmm-1 */ + int fh; /* file handle is ignored; only one HMM file */ + SSIOFFSET offset; /* file position of HMM */ + + if (hmmfp->ssi == NULL) return 0; + if (SSIGetOffsetByNumber(hmmfp->ssi, idx, &fh, &offset) != 0) return 0; + if (SSISetFilePosition(hmmfp->f, &offset) != 0) return 0; + return 1; +} + +/***************************************************************** + * HMM output API: + * WriteAscHMM() + * WriteBinHMM() + * + *****************************************************************/ + +/* Function: WriteAscHMM() + * + * Purpose: Save an HMM in flat text ASCII format. + * + * Args: fp - open file for writing + * hmm - HMM to save + */ +void +WriteAscHMM(FILE *fp, struct plan7_s *hmm) +{ + int k; /* counter for nodes */ + int x; /* counter for symbols */ + int ts; /* counter for state transitions */ + + fprintf(fp, "HMMER2.0 [%s]\n", RELEASE); /* magic header */ + + /* write header information + */ + fprintf(fp, "NAME %s\n", hmm->name); + if (hmm->flags & PLAN7_ACC) + fprintf(fp, "ACC %s\n", hmm->acc); + if (hmm->flags & PLAN7_DESC) + fprintf(fp, "DESC %s\n", hmm->desc); + fprintf(fp, "LENG %d\n", hmm->M); + fprintf(fp, "ALPH %s\n", + (Alphabet_type == hmmAMINO) ? "Amino":"Nucleic"); + fprintf(fp, "RF %s\n", (hmm->flags & PLAN7_RF) ? "yes" : "no"); + fprintf(fp, "CS %s\n", (hmm->flags & PLAN7_CS) ? "yes" : "no"); + fprintf(fp, "MAP %s\n", (hmm->flags & PLAN7_MAP) ? "yes" : "no"); + multiline(fp, "COM ", hmm->comlog); + fprintf(fp, "NSEQ %d\n", hmm->nseq); + fprintf(fp, "DATE %s\n", hmm->ctime); + fprintf(fp, "CKSUM %d\n", hmm->checksum); + if (hmm->flags & PLAN7_GA) + fprintf(fp, "GA %.1f %.1f\n", hmm->ga1, hmm->ga2); + if (hmm->flags & PLAN7_TC) + fprintf(fp, "TC %.1f %.1f\n", hmm->tc1, hmm->tc2); + if (hmm->flags & PLAN7_NC) + fprintf(fp, "NC %.1f %.1f\n", hmm->nc1, hmm->nc2); + + /* Specials + */ + fputs("XT ", fp); + for (k = 0; k < 4; k++) + for (x = 0; x < 2; x++) + fprintf(fp, "%6s ", prob2ascii(hmm->xt[k][x], 1.0)); + fputs("\n", fp); + + /* Save the null model first, so HMM readers can decode + * log odds scores on the fly. Save as log odds probabilities + * relative to 1/Alphabet_size (flat distribution) + */ + fprintf(fp, "NULT "); + fprintf(fp, "%6s ", prob2ascii(hmm->p1, 1.0)); /* p1 */ + fprintf(fp, "%6s\n", prob2ascii(1.0-hmm->p1, 1.0)); /* p2 */ + fputs("NULE ", fp); + for (x = 0; x < Alphabet_size; x++) + fprintf(fp, "%6s ", prob2ascii(hmm->null[x], 1/(float)(Alphabet_size))); + fputs("\n", fp); + + /* EVD statistics + */ + if (hmm->flags & PLAN7_STATS) + fprintf(fp, "EVD %10f %10f\n", hmm->mu, hmm->lambda); + + /* Print header + */ + fprintf(fp, "HMM "); + for (x = 0; x < Alphabet_size; x++) fprintf(fp, " %c ", Alphabet[x]); + fprintf(fp, "\n"); + fprintf(fp, " %6s %6s %6s %6s %6s %6s %6s %6s %6s\n", + "m->m", "m->i", "m->d", "i->m", "i->i", "d->m", "d->d", "b->m", "m->e"); + + /* Print HMM parameters (main section of the save file) + */ + fprintf(fp, " %6s %6s ", prob2ascii(1-hmm->tbd1, 1.0), "*"); + fprintf(fp, "%6s\n", prob2ascii(hmm->tbd1, 1.0)); + for (k = 1; k <= hmm->M; k++) + { + /* Line 1: k, match emissions, map */ + fprintf(fp, " %5d ", k); + for (x = 0; x < Alphabet_size; x++) + fprintf(fp, "%6s ", prob2ascii(hmm->mat[k][x], hmm->null[x])); + if (hmm->flags & PLAN7_MAP) fprintf(fp, "%5d", hmm->map[k]); + fputs("\n", fp); + /* Line 2: RF and insert emissions */ + fprintf(fp, " %5c ", hmm->flags & PLAN7_RF ? hmm->rf[k] : '-'); + for (x = 0; x < Alphabet_size; x++) + fprintf(fp, "%6s ", (k < hmm->M) ? prob2ascii(hmm->ins[k][x], hmm->null[x]) : "*"); + fputs("\n", fp); + /* Line 3: CS and transition probs */ + fprintf(fp, " %5c ", hmm->flags & PLAN7_CS ? hmm->cs[k] : '-'); + for (ts = 0; ts < 7; ts++) + fprintf(fp, "%6s ", (k < hmm->M) ? prob2ascii(hmm->t[k][ts], 1.0) : "*"); + fprintf(fp, "%6s ", prob2ascii(hmm->begin[k], 1.0)); + fprintf(fp, "%6s ", prob2ascii(hmm->end[k], 1.0)); + + fputs("\n", fp); + } + fputs("//\n", fp); +} + +/* Function: WriteBinHMM() + * + * Purpose: Write an HMM in binary format. + */ +void +WriteBinHMM(FILE *fp, struct plan7_s *hmm) +{ + int k; + + /* ye olde magic number */ + fwrite((char *) &(v20magic), sizeof(unsigned int), 1, fp); + + /* header section + */ + fwrite((char *) &(hmm->flags), sizeof(int), 1, fp); + write_bin_string(fp, hmm->name); + if (hmm->flags & PLAN7_ACC) write_bin_string(fp, hmm->acc); + if (hmm->flags & PLAN7_DESC) write_bin_string(fp, hmm->desc); + fwrite((char *) &(hmm->M), sizeof(int), 1, fp); + fwrite((char *) &(Alphabet_type), sizeof(int), 1, fp); + if (hmm->flags & PLAN7_RF) fwrite((char *) hmm->rf, sizeof(char), hmm->M+1, fp); + if (hmm->flags & PLAN7_CS) fwrite((char *) hmm->cs, sizeof(char), hmm->M+1, fp); + if (hmm->flags & PLAN7_MAP) fwrite((char *) hmm->map, sizeof(int), hmm->M+1, fp); + write_bin_string(fp, hmm->comlog); + fwrite((char *) &(hmm->nseq), sizeof(int), 1, fp); + write_bin_string(fp, hmm->ctime); + fwrite((char *) &(hmm->checksum), sizeof(int), 1, fp); + if (hmm->flags & PLAN7_GA) { + fwrite((char *) &(hmm->ga1), sizeof(float), 1, fp); + fwrite((char *) &(hmm->ga2), sizeof(float), 1, fp); + } + if (hmm->flags & PLAN7_TC) { + fwrite((char *) &(hmm->tc1), sizeof(float), 1, fp); + fwrite((char *) &(hmm->tc2), sizeof(float), 1, fp); + } + if (hmm->flags & PLAN7_NC) { + fwrite((char *) &(hmm->nc1), sizeof(float), 1, fp); + fwrite((char *) &(hmm->nc2), sizeof(float), 1, fp); + } + + /* Specials */ + for (k = 0; k < 4; k++) + fwrite((char *) hmm->xt[k], sizeof(float), 2, fp); + + /* Null model */ + fwrite((char *)&(hmm->p1), sizeof(float), 1, fp); + fwrite((char *) hmm->null, sizeof(float), Alphabet_size, fp); + + /* EVD stats */ + if (hmm->flags & PLAN7_STATS) { + fwrite((char *) &(hmm->mu), sizeof(float), 1, fp); + fwrite((char *) &(hmm->lambda), sizeof(float), 1, fp); + } + + /* entry/exit probabilities + */ + fwrite((char *)&(hmm->tbd1),sizeof(float), 1, fp); + fwrite((char *) hmm->begin, sizeof(float), hmm->M+1, fp); + fwrite((char *) hmm->end, sizeof(float), hmm->M+1, fp); + + /* main model + */ + for (k = 1; k <= hmm->M; k++) + fwrite((char *) hmm->mat[k], sizeof(float), Alphabet_size, fp); + for (k = 1; k < hmm->M; k++) + fwrite((char *) hmm->ins[k], sizeof(float), Alphabet_size, fp); + for (k = 1; k < hmm->M; k++) + fwrite((char *) hmm->t[k], sizeof(float), 7, fp); +} + + +/***************************************************************** + * + * Internal: HMM file parsers for various releases of HMMER. + * + * read_{asc,bin}xxhmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) + * + * Upon return, *ret_hmm is an allocated Plan7 HMM. + * Return 0 if no more HMMs in the file (normal). + * Return 1 and *ret_hmm = something if we got an HMM (normal) + * Return 1 if an error occurs (meaning "I tried to + * read something...") and *ret_hmm == NULL (meaning + * "...but it wasn't an HMM"). I know, this is a funny + * way to handle errors. + * + *****************************************************************/ + +static int +read_asc20hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + struct plan7_s *hmm; + char buffer[512]; + char *s; + int M; + float p; + int k, x; + int atype; /* alphabet type, hmmAMINO or hmmNUCLEIC */ + + hmm = NULL; + if (feof(hmmfp->f) || fgets(buffer, 512, hmmfp->f) == NULL) return 0; + if (strncmp(buffer, "HMMER2.0", 8) != 0) goto FAILURE; + + /* Get the header information: tag/value pairs in any order, + * ignore unknown tags, stop when "HMM" is reached (signaling + * start of main model) + */ + hmm = AllocPlan7Shell(); + M = -1; + while (fgets(buffer, 512, hmmfp->f) != NULL) { + if (strncmp(buffer, "NAME ", 5) == 0) Plan7SetName(hmm, buffer+6); + else if (strncmp(buffer, "ACC ", 5) == 0) Plan7SetAccession(hmm, buffer+6); + else if (strncmp(buffer, "DESC ", 5) == 0) Plan7SetDescription(hmm, buffer+6); + else if (strncmp(buffer, "LENG ", 5) == 0) M = atoi(buffer+6); + else if (strncmp(buffer, "NSEQ ", 5) == 0) hmm->nseq = atoi(buffer+6); + else if (strncmp(buffer, "ALPH ", 5) == 0) + { /* Alphabet type */ + s2upper(buffer+6); + if (strncmp(buffer+6, "AMINO", 5) == 0) atype = hmmAMINO; + else if (strncmp(buffer+6, "NUCLEIC", 7) == 0) atype = hmmNUCLEIC; + else goto FAILURE; + + if (Alphabet_type == hmmNOTSETYET) SetAlphabet(atype); + else if (atype != Alphabet_type) + Die("Alphabet mismatch error.\nI thought we were working with %s, but tried to read a %s HMM.\n", AlphabetType2String(Alphabet_type), AlphabetType2String(atype)); + } + else if (strncmp(buffer, "RF ", 5) == 0) + { /* Reference annotation present? */ + if (sre_toupper(*(buffer+6)) == 'Y') hmm->flags |= PLAN7_RF; + } + else if (strncmp(buffer, "CS ", 5) == 0) + { /* Consensus annotation present? */ + if (sre_toupper(*(buffer+6)) == 'Y') hmm->flags |= PLAN7_CS; + } + else if (strncmp(buffer, "MAP ", 5) == 0) + { /* Map annotation present? */ + if (sre_toupper(*(buffer+6)) == 'Y') hmm->flags |= PLAN7_MAP; + } + else if (strncmp(buffer, "COM ", 5) == 0) + { /* Command line log */ + StringChop(buffer+6); + if (hmm->comlog == NULL) + hmm->comlog = Strdup(buffer+6); + else + { + hmm->comlog = ReallocOrDie(hmm->comlog, sizeof(char *) * + (strlen(hmm->comlog) + 1 + strlen(buffer+6))); + strcat(hmm->comlog, "\n"); + strcat(hmm->comlog, buffer+6); + } + } + else if (strncmp(buffer, "DATE ", 5) == 0) + { /* Date file created */ + StringChop(buffer+6); + hmm->ctime= Strdup(buffer+6); + } + else if (strncmp(buffer, "GA ", 5) == 0) + { + if ((s = strtok(buffer+6, " \t\n")) == NULL) goto FAILURE; + hmm->ga1 = atof(s); + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->ga2 = atof(s); + hmm->flags |= PLAN7_GA; + } + else if (strncmp(buffer, "TC ", 5) == 0) + { + if ((s = strtok(buffer+6, " \t\n")) == NULL) goto FAILURE; + hmm->tc1 = atof(s); + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->tc2 = atof(s); + hmm->flags |= PLAN7_TC; + } + else if (strncmp(buffer, "NC ", 5) == 0) + { + if ((s = strtok(buffer+6, " \t\n")) == NULL) goto FAILURE; + hmm->nc1 = atof(s); + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->nc2 = atof(s); + hmm->flags |= PLAN7_NC; + } + else if (strncmp(buffer, "XT ", 5) == 0) + { /* Special transition section */ + if ((s = strtok(buffer+6, " \t\n")) == NULL) goto FAILURE; + for (k = 0; k < 4; k++) + for (x = 0; x < 2; x++) + { + if (s == NULL) goto FAILURE; + hmm->xt[k][x] = ascii2prob(s, 1.0); + s = strtok(NULL, " \t\n"); + } + } + else if (strncmp(buffer, "NULT ", 5) == 0) + { /* Null model transitions */ + if ((s = strtok(buffer+6, " \t\n")) == NULL) goto FAILURE; + hmm->p1 = ascii2prob(s, 1.); + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->p1 = hmm->p1 / (hmm->p1 + ascii2prob(s, 1.0)); + } + else if (strncmp(buffer, "NULE ", 5) == 0) + { /* Null model emissions */ + if (Alphabet_type == hmmNOTSETYET) + Die("ALPH must precede NULE in HMM save files"); + s = strtok(buffer+6, " \t\n"); + for (x = 0; x < Alphabet_size; x++) { + if (s == NULL) goto FAILURE; + hmm->null[x] = ascii2prob(s, 1./(float)Alphabet_size); + s = strtok(NULL, " \t\n"); + } + } + else if (strncmp(buffer, "EVD ", 5) == 0) + { /* EVD parameters */ + hmm->flags |= PLAN7_STATS; + if ((s = strtok(buffer+6, " \t\n")) == NULL) goto FAILURE; + hmm->mu = atof(s); + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->lambda = atof(s); + } + else if (strncmp(buffer, "CKSUM", 5) == 0) hmm->checksum = atoi(buffer+6); + else if (strncmp(buffer, "HMM ", 5) == 0) break; + } + + /* partial check for mandatory fields */ + if (feof(hmmfp->f)) goto FAILURE; + if (M < 1) goto FAILURE; + if (hmm->name == NULL) goto FAILURE; + if (Alphabet_type == hmmNOTSETYET) goto FAILURE; + + /* Main model section. Read as integer log odds, convert + * to probabilities + */ + AllocPlan7Body(hmm, M); + /* skip an annotation line */ + if (fgets(buffer, 512, hmmfp->f) == NULL) goto FAILURE; + /* parse tbd1 line */ + if (fgets(buffer, 512, hmmfp->f) == NULL) goto FAILURE; + if ((s = strtok(buffer, " \t\n")) == NULL) goto FAILURE; + p = ascii2prob(s, 1.0); + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->tbd1 = ascii2prob(s, 1.0); + hmm->tbd1 = hmm->tbd1 / (p + hmm->tbd1); + + /* main model */ + for (k = 1; k <= hmm->M; k++) { + /* Line 1: k, match emissions, map */ + if (fgets(buffer, 512, hmmfp->f) == NULL) goto FAILURE; + if ((s = strtok(buffer, " \t\n")) == NULL) goto FAILURE; + if (atoi(s) != k) goto FAILURE; + for (x = 0; x < Alphabet_size; x++) { + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->mat[k][x] = ascii2prob(s, hmm->null[x]); + } + if (hmm->flags & PLAN7_MAP) { + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->map[k] = atoi(s); + } + /* Line 2: RF and insert emissions */ + if (fgets(buffer, 512, hmmfp->f) == NULL) goto FAILURE; + if ((s = strtok(buffer, " \t\n")) == NULL) goto FAILURE; + if (hmm->flags & PLAN7_RF) hmm->rf[k] = *s; + if (k < hmm->M) { + for (x = 0; x < Alphabet_size; x++) { + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->ins[k][x] = ascii2prob(s, hmm->null[x]); + } + } + /* Line 3: CS and transitions */ + if (fgets(buffer, 512, hmmfp->f) == NULL) goto FAILURE; + if ((s = strtok(buffer, " \t\n")) == NULL) goto FAILURE; + if (hmm->flags & PLAN7_CS) hmm->cs[k] = *s; + for (x = 0; x < 7; x++) { + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + if (k < hmm->M) hmm->t[k][x] = ascii2prob(s, 1.0); + } + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->begin[k] = ascii2prob(s, 1.0); + if ((s = strtok(NULL, " \t\n")) == NULL) goto FAILURE; + hmm->end[k] = ascii2prob(s, 1.0); + + } /* end loop over main model */ + + /* Advance to record separator + */ + while (fgets(buffer, 512, hmmfp->f) != NULL) + if (strncmp(buffer, "//", 2) == 0) break; + + Plan7Renormalize(hmm); /* Paracel reported bug 6/11/99 */ + + /* Set flags and return + */ + hmm->flags |= PLAN7_HASPROB; /* probabilities are valid */ + hmm->flags &= ~PLAN7_HASBITS; /* scores are not valid */ + + *ret_hmm = hmm; + return 1; + +FAILURE: + if (hmm != NULL) FreePlan7(hmm); + *ret_hmm = NULL; + return 1; +} + + +static int +read_bin20hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + struct plan7_s *hmm; + int k,x; + int type; + unsigned int magic; + + hmm = NULL; + + /* Header section + */ + if (feof(hmmfp->f)) return 0; + if (! fread((char *) &magic, sizeof(unsigned int), 1, hmmfp->f)) return 0; + + if (hmmfp->byteswap) byteswap((char *)&magic, sizeof(unsigned int)); + if (magic != v20magic) goto FAILURE; + /* allocate HMM shell for header info */ + hmm = AllocPlan7Shell(); + /* flags */ + if (! fread((char *) &(hmm->flags), sizeof(int), 1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) byteswap((char *)&(hmm->flags), sizeof(int)); + /* name */ + if (! read_bin_string(hmmfp->f, hmmfp->byteswap, &(hmm->name))) goto FAILURE; + + /* optional accession */ + if ((hmm->flags & PLAN7_ACC) && + ! read_bin_string(hmmfp->f, hmmfp->byteswap, &(hmm->acc))) goto FAILURE; + /* optional description */ + if ((hmm->flags & PLAN7_DESC) && + ! read_bin_string(hmmfp->f, hmmfp->byteswap, &(hmm->desc))) goto FAILURE; + /* length of model */ + if (! fread((char *) &hmm->M, sizeof(int), 1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) byteswap((char *)&(hmm->M), sizeof(int)); + /* alphabet type */ + if (! fread((char *) &type, sizeof(int), 1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) byteswap((char *)&type, sizeof(int)); + if (Alphabet_type == hmmNOTSETYET) SetAlphabet(type); + else if (type != Alphabet_type) + Die("Alphabet mismatch error.\nI thought we were working with %s, but tried to read a %s HMM.\n", AlphabetType2String(Alphabet_type), AlphabetType2String(type)); + + /* now allocate for rest of model */ + AllocPlan7Body(hmm, hmm->M); + + /* optional #=RF alignment annotation */ + if ((hmm->flags & PLAN7_RF) && + !fread((char *) hmm->rf, sizeof(char), hmm->M+1, hmmfp->f)) goto FAILURE; + hmm->rf[hmm->M+1] = '\0'; + /* optional #=CS alignment annotation */ + if ((hmm->flags & PLAN7_CS) && + !fread((char *) hmm->cs, sizeof(char), hmm->M+1, hmmfp->f)) goto FAILURE; + hmm->cs[hmm->M+1] = '\0'; + /* optional alignment map annotation */ + if ((hmm->flags & PLAN7_MAP) && + !fread((char *) hmm->map, sizeof(int), hmm->M+1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) + for (k = 1; k <= hmm->M; k++) + byteswap((char*)&(hmm->map[k]), sizeof(int)); + /* command line log */ + if (!read_bin_string(hmmfp->f, hmmfp->byteswap, &(hmm->comlog))) goto FAILURE; + /* nseq */ + if (!fread((char *) &(hmm->nseq),sizeof(int), 1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) byteswap((char *)&(hmm->nseq), sizeof(int)); + /* creation time */ + if (!read_bin_string(hmmfp->f, hmmfp->byteswap, &(hmm->ctime))) goto FAILURE; + /* checksum */ + if (!fread((char *) &(hmm->checksum),sizeof(int), 1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) byteswap((char *)&(hmm->checksum), sizeof(int)); + + /* Pfam gathering thresholds */ + if (hmm->flags & PLAN7_GA) { + if (! fread((char *) &(hmm->ga1), sizeof(float), 1, hmmfp->f)) goto FAILURE; + if (! fread((char *) &(hmm->ga2), sizeof(float), 1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) { + byteswap((char *) &(hmm->ga1), sizeof(float)); + byteswap((char *) &(hmm->ga2), sizeof(float)); + } + } + /* Pfam trusted cutoffs */ + if (hmm->flags & PLAN7_TC) { + if (! fread((char *) &(hmm->tc1), sizeof(float), 1, hmmfp->f)) goto FAILURE; + if (! fread((char *) &(hmm->tc2), sizeof(float), 1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) { + byteswap((char *) &(hmm->tc1), sizeof(float)); + byteswap((char *) &(hmm->tc2), sizeof(float)); + } + } + /* Pfam noise cutoffs */ + if (hmm->flags & PLAN7_NC) { + if (! fread((char *) &(hmm->nc1), sizeof(float), 1, hmmfp->f)) goto FAILURE; + if (! fread((char *) &(hmm->nc2), sizeof(float), 1, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) { + byteswap((char *) &(hmm->nc1), sizeof(float)); + byteswap((char *) &(hmm->nc2), sizeof(float)); + } + } + + /* specials */ + for (k = 0; k < 4; k++) + { + if (! fread((char *) hmm->xt[k], sizeof(float), 2, hmmfp->f)) goto FAILURE; + if (hmmfp->byteswap) { + for (x = 0; x < 2; x++) + byteswap((char *)&(hmm->xt[k][x]), sizeof(float)); + } + } + + /* null model */ + if (!fread((char *) &(hmm->p1),sizeof(float), 1, hmmfp->f)) goto FAILURE; + if (!fread((char *)hmm->null,sizeof(float),Alphabet_size,hmmfp->f))goto FAILURE; + + /* EVD stats */ + if (hmm->flags & PLAN7_STATS) { + if (! fread((char *) &(hmm->mu), sizeof(float), 1, hmmfp->f))goto FAILURE; + if (! fread((char *) &(hmm->lambda), sizeof(float), 1, hmmfp->f))goto FAILURE; + + if (hmmfp->byteswap) { + byteswap((char *)&(hmm->mu), sizeof(float)); + byteswap((char *)&(hmm->lambda), sizeof(float)); + } + } + + /* entry/exit probabilities + */ + if (! fread((char *)&(hmm->tbd1), sizeof(float), 1, hmmfp->f)) goto FAILURE; + if (! fread((char *) hmm->begin, sizeof(float), hmm->M+1, hmmfp->f)) goto FAILURE; + if (! fread((char *) hmm->end, sizeof(float), hmm->M+1, hmmfp->f)) goto FAILURE; + + /* main model */ + for (k = 1; k <= hmm->M; k++) + if (! fread((char *) hmm->mat[k], sizeof(float), Alphabet_size, hmmfp->f)) goto FAILURE; + for (k = 1; k < hmm->M; k++) + if (! fread((char *) hmm->ins[k], sizeof(float), Alphabet_size, hmmfp->f)) goto FAILURE; + for (k = 1; k < hmm->M; k++) + if (! fread((char *) hmm->t[k], sizeof(float), 7, hmmfp->f)) goto FAILURE; + + /* byteswapping + */ + if (hmmfp->byteswap) { + for (x = 0; x < Alphabet_size; x++) + byteswap((char *) &(hmm->null[x]), sizeof(float)); + byteswap((char *)&(hmm->p1), sizeof(float)); + byteswap((char *)&(hmm->tbd1), sizeof(float)); + + for (k = 1; k <= hmm->M; k++) + { + for (x = 0; x < Alphabet_size; x++) + byteswap((char *)&(hmm->mat[k][x]), sizeof(float)); + if (k < hmm->M) + for (x = 0; x < Alphabet_size; x++) + byteswap((char *)&(hmm->ins[k][x]), sizeof(float)); + byteswap((char *)&(hmm->begin[k]), sizeof(float)); + byteswap((char *)&(hmm->end[k]), sizeof(float)); + if (k < hmm->M) + for (x = 0; x < 7; x++) + byteswap((char *)&(hmm->t[k][x]), sizeof(float)); + } + } + + + /* set flags and return + */ + hmm->flags |= PLAN7_HASPROB; /* probabilities are valid */ + hmm->flags &= ~PLAN7_HASBITS; /* scores are not yet valid */ + *ret_hmm = hmm; + return 1; + +FAILURE: + if (hmm != NULL) FreePlan7(hmm); + *ret_hmm = NULL; + return 1; +} + + + + + +/* Function: read_asc19hmm() + * Date: Tue Apr 7 17:11:29 1998 [StL] + * + * Purpose: Read ASCII-format tabular (1.9 and later) save files. + * + * HMMER 1.9 was only used internally at WashU, as far as + * I know, so this code shouldn't be terribly important + * to anyone. + */ +static int +read_asc19hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + struct plan7_s *hmm; + FILE *fp; + char buffer[512]; + char *s; + int M; /* length of model */ + int k; /* state number */ + int x; /* symbol number */ + int atype; /* Alphabet type */ + + hmm = NULL; + fp = hmmfp->f; + if (feof(fp) || fgets(buffer, 512, fp) == NULL) return 0; + if (strncmp(buffer, "HMMER v1.9", 10) != 0) goto FAILURE; + + hmm = AllocPlan7Shell(); + /* read M from first line */ + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; M = atoi(s); /* model length */ + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; /* ignore alphabet size */ + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; Plan7SetName(hmm, s); /* name */ + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; /* alphabet type */ + s2upper(s); + if (strcmp(s, "AMINO") == 0) atype = hmmAMINO; + else if (strcmp(s, "NUCLEIC") == 0) atype = hmmNUCLEIC; + else goto FAILURE; + + if (Alphabet_type == hmmNOTSETYET) SetAlphabet(atype); + else if (atype != Alphabet_type) + Die("Alphabet mismatch error.\nI thought we were working with %s, but tried to read a %s HMM.\n", AlphabetType2String(Alphabet_type), AlphabetType2String(atype)); + + /* read alphabet, make sure it's Plan7-compatible... */ + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + if (strncmp(s, Alphabet, Alphabet_size) != 0) goto FAILURE; + + /* whether we have ref, cs info */ + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + if (strcmp(s, "yes") == 0) hmm->flags |= PLAN7_RF; + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + if (strcmp(s, "yes") == 0) hmm->flags |= PLAN7_CS; + + /* null model. 1.9 has emissions only. invent transitions. */ + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + if (strcmp(s, "null") != 0) goto FAILURE; + for (x = 0; x < Alphabet_size; x++) { + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + hmm->null[x] = ascii2prob(s, 1.0); + } + hmm->p1 = (Alphabet_type == hmmAMINO)? 350./351. : 1000./1001.; + + /* Done with header; check some stuff before proceeding + */ + if (feof(hmmfp->f)) goto FAILURE; + if (M < 1) goto FAILURE; + if (hmm->name == NULL) goto FAILURE; + if (Alphabet_type == hmmNOTSETYET) goto FAILURE; + + /* Allocate the model. Set up the probabilities that Plan9 + * doesn't set. + */ + AllocPlan7Body(hmm, M); + ZeroPlan7(hmm); + Plan7LSConfig(hmm); + + /* The zero row has: 4 or 20 unused scores for nonexistent M0 state + * then: B->M, tbd1, a B->I that Plan7 doesn't have; + * three unused D-> transitions; then three I0 transitions that Plan7 doesn't have; + * then two unused rf, cs annotations. + */ + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; /* position index ignored */ + for (x = 0; x < Alphabet_size; x++) + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; /* emissions ignored */ + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + hmm->begin[1] = ascii2prob(s, 1.0); + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + hmm->tbd1 = ascii2prob(s, 1.0); + /* renormalize */ + hmm->begin[1] = hmm->begin[1] / (hmm->begin[1] + hmm->tbd1); + hmm->tbd1 = hmm->tbd1 / (hmm->begin[1] + hmm->tbd1); + /* skip rest of line, seven integer fields, two char fields */ + for (x = 0; x < 7; x++) + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + + /* main model: table of emissions, transitions, annotation */ + for (k = 1; k <= hmm->M; k++) + { + /* position index ignored */ + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + /* match emissions */ + for (x = 0; x < Alphabet_size; x++) { + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + hmm->mat[k][x] = ascii2prob(s, hmm->null[x]); + } + /* nine transitions; two are ignored */ + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if (k < hmm->M) hmm->t[k][TMM] = ascii2prob(s, 1.0); + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if (k < hmm->M) hmm->t[k][TMD] = (k == hmm->M) ? 0.0 : ascii2prob(s, 1.0); + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if (k < hmm->M) hmm->t[k][TMI] = ascii2prob(s, 1.0); + + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if (k < hmm->M) hmm->t[k][TDM] = ascii2prob(s, 1.0); + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if (k < hmm->M) hmm->t[k][TDD] = (k == hmm->M) ? 0.0 : ascii2prob(s, 1.0); + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE;/* TDI ignored. */ + + /* no insert state at k == M, be careful */ + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if (k < hmm->M) hmm->t[k][TIM] = ascii2prob(s, 1.0); + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; /* TID ignored. */ + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if (k < hmm->M) hmm->t[k][TII] = ascii2prob(s, 1.0); + + /* annotations */ + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + if (hmm->flags & PLAN7_RF) hmm->rf[k] = *s; + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + if (hmm->flags & PLAN7_CS) hmm->cs[k] = *s; + } + /* table of insert emissions; + * Plan7 has no insert state at 0 or M */ + for (k = 0; k <= hmm->M; k++) + { + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; /* position index ignored */ + for (x = 0; x < Alphabet_size; x++) { + if ((s = Getword(fp, sqdARG_INT)) == NULL) goto FAILURE; + if (k > 0 && k < hmm->M) + hmm->ins[k][x] = ascii2prob(s, hmm->null[x]); + } + } + + /* Set flags and return + */ + hmm->flags |= PLAN7_HASPROB; /* probabilities are valid */ + hmm->flags &= ~PLAN7_HASBITS; /* scores are not valid */ + Plan7Renormalize(hmm); + hmm->comlog = Strdup("[converted from an old Plan9 HMM]"); + Plan7SetCtime(hmm); + *ret_hmm = hmm; + return 1; + +FAILURE: + if (hmm != NULL) FreePlan7(hmm); + *ret_hmm = NULL; + return 1; +} + +static int +read_bin19hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + unsigned int magic; + struct plan7_s *hmm; /* plan7 HMM */ + struct plan9_s *p9hmm; /* old style 1.x HMM */ + + /* Read the magic number; if we don't see it, then we + * must be out of data in the file. + */ + if (feof(hmmfp->f)) return 0; + if (! fread((char *) &magic, sizeof(unsigned int), 1, hmmfp->f)) return 0; + + p9hmm = read_plan9_binhmm(hmmfp->f, HMMER1_9B, hmmfp->byteswap); + if (p9hmm == NULL) { *ret_hmm = NULL; return 1; } + + Plan9toPlan7(p9hmm, &hmm); + + hmm->comlog = Strdup("[converted from an old Plan9 HMM]"); + Plan7SetCtime(hmm); + + P9FreeHMM(p9hmm); + *ret_hmm = hmm; + return 1; +} +static int +read_asc17hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + struct plan7_s *hmm; /* plan7 HMM */ + struct plan9_s *p9hmm; /* old style 1.x HMM */ + char buffer[512]; + + /* Read the magic header; if we don't see it, then + * we must be out of data in the file. + */ + if (feof(hmmfp->f) || fgets(buffer, 512, hmmfp->f) == NULL) return 0; + + p9hmm = read_plan9_aschmm(hmmfp->f, HMMER1_7F); + if (p9hmm == NULL) { *ret_hmm = NULL; return 1; } + + Plan9toPlan7(p9hmm, &hmm); + + hmm->comlog = Strdup("[converted from an old Plan9 HMM]"); + Plan7SetCtime(hmm); + + P9FreeHMM(p9hmm); + Plan7Renormalize(hmm); + *ret_hmm = hmm; + return 1; +} + +static int +read_bin17hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + unsigned int magic; + struct plan7_s *hmm; /* plan7 HMM */ + struct plan9_s *p9hmm; /* old style 1.x HMM */ + + /* Read the magic number; if we don't see it, then we + * must be out of data in the file. + */ + if (feof(hmmfp->f)) return 0; + if (! fread((char *) &magic, sizeof(unsigned int), 1, hmmfp->f)) return 0; + + p9hmm = read_plan9_binhmm(hmmfp->f, HMMER1_7B, hmmfp->byteswap); + if (p9hmm == NULL) { *ret_hmm = NULL; return 1; } + + Plan9toPlan7(p9hmm, &hmm); + + hmm->comlog = Strdup("[converted from an old Plan9 HMM]"); + Plan7SetCtime(hmm); + + P9FreeHMM(p9hmm); + *ret_hmm = hmm; + return 1; +} + +static int +read_asc11hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + Die("1.1 ASCII HMMs unsupported"); + return 1; +} +static int +read_bin11hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + unsigned int magic; + struct plan7_s *hmm; /* plan7 HMM */ + struct plan9_s *p9hmm; /* old style 1.x HMM */ + + /* Read the magic number; if we don't see it, then we + * must be out of data in the file. + */ + if (feof(hmmfp->f)) return 0; + if (! fread((char *) &magic, sizeof(unsigned int), 1, hmmfp->f)) return 0; + + p9hmm = read_plan9_binhmm(hmmfp->f, HMMER1_1B, hmmfp->byteswap); + if (p9hmm == NULL) { *ret_hmm = NULL; return 1; } + + Plan9toPlan7(p9hmm, &hmm); + + hmm->comlog = Strdup("[converted from an old Plan9 HMM]"); + Plan7SetCtime(hmm); + + P9FreeHMM(p9hmm); + *ret_hmm = hmm; + return 1; +} + +static int +read_asc10hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + Die("1.0 ASCII HMMs unsupported"); + return 1; +} + +static int +read_bin10hmm(HMMFILE *hmmfp, struct plan7_s **ret_hmm) +{ + unsigned int magic; + struct plan7_s *hmm; /* plan7 HMM */ + struct plan9_s *p9hmm; /* old style 1.x HMM */ + + /* Read the magic number; if we don't see it, then we + * must be out of data in the file. + */ + if (feof(hmmfp->f)) return 0; + if (! fread((char *) &magic, sizeof(unsigned int), 1, hmmfp->f)) return 0; + + p9hmm = read_plan9_binhmm(hmmfp->f, HMMER1_0B, hmmfp->byteswap); + if (p9hmm == NULL) { *ret_hmm = NULL; return 1; } + + Plan9toPlan7(p9hmm, &hmm); + + hmm->comlog = Strdup("[converted from an old Plan9 HMM]"); + Plan7SetCtime(hmm); + + P9FreeHMM(p9hmm); + *ret_hmm = hmm; + return 1; +} + +/***************************************************************** + * Some miscellaneous utility functions + *****************************************************************/ + +/* Function: prob2ascii() + * + * Purpose: Format a probability for output to an ASCII save + * file. Returns a ptr to a static internal buffer. + * + */ +static char * +prob2ascii(float p, float null) +{ + static char buffer[8]; + + if (p == 0.0) return "*"; + sprintf(buffer, "%6d", Prob2Score(p, null)); + return buffer; +} + + +/* Function: ascii2prob() + * + * Purpose: Convert a saved string back to a probability. + */ +static float +ascii2prob(char *s, float null) +{ + return (*s == '*') ? 0. : Score2Prob(atoi(s), null); +} + +/* 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 + * + * Note: this is only a partial solution to the problem of + * binary file portability. 32 bit integers are assumed by HMMER, + * for instance. This should be true for all UNIX, VAX, and WinNT + * platforms, I believe. + * + * Date: Sun Feb 12 10:26:22 1995 + */ +static 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; + } +} + +/* Function: write_bin_string() + * Date: SRE, Wed Oct 29 13:49:27 1997 [TWA 721 over Canada] + * + * Purpose: Write a string in binary save format: an integer + * for the string length (including \0), followed by + * the string. + */ +static void +write_bin_string(FILE *fp, char *s) +{ + int len; + if (s != NULL) + { + len = strlen(s) + 1; + fwrite((char *) &len, sizeof(int), 1, fp); + fwrite((char *) s, sizeof(char), len, fp); + } + else + { + len = 0; + fwrite((char *) &len, sizeof(int), 1, fp); + } +} + +/* Function: read_bin_string() + * Date: SRE, Wed Oct 29 14:03:23 1997 [TWA 721] + * + * Purpose: Read in a string from a binary file, where + * the first integer is the length (including '\0'). + * + * Args: fp - FILE to read from + * doswap - TRUE to byteswap + * ret_s - string to read into + * + * Return: 0 on failure. ret_s is malloc'ed here. + */ +static int +read_bin_string(FILE *fp, int doswap, char **ret_s) +{ + char *s; + int len; + + if (! fread((char *) &len, sizeof(int), 1, fp)) return 0; + if (doswap) byteswap((char *)&len, sizeof(int)); + s = MallocOrDie (sizeof(char) * (len)); + if (! fread((char *) s, sizeof(char), len, fp)) + { + free(s); + return 0; + } + + *ret_s = s; + return 1; +} + +/* Function: multiline() + * Date: Mon Jan 5 14:57:50 1998 [StL] + * + * Purpose: Given a record (like the comlog) that contains + * multiple lines, print it as multiple lines with + * a given prefix. e.g.: + * + * given: "COM ", "foo\nbar\nbaz" + * print: COM foo + * COM bar + * COM baz + * + * + * Used to print the command log to ASCII save files. + * + * Args: fp: FILE to print to + * pfx: prefix for each line + * s: line to break up and print; tolerates a NULL + * + * Return: (void) + */ +static void +multiline(FILE *fp, char *pfx, char *s) +{ + char *buf; + char *sptr; + + if (s == NULL) return; + buf = Strdup(s); + sptr = strtok(buf, "\n"); + while (sptr != NULL) + { + fprintf(fp, "%s%s\n", pfx, sptr); + sptr = strtok(NULL, "\n"); + } + free(buf); +} + + +/***************************************************************** + * HMMER 1.x save file reading functions, modified from the + * corpse of 1.9m. + *****************************************************************/ + + +/* Function: read_plan9_binhmm() + * + * Read old (Plan9) binary HMM save files from HMMER 1.9 and earlier. + * V1.0 saved regularizer and sympvec info, which V1.1 ignores. + * V1.7 and later may include optional ref, cs annotation lines. + * V1.9 added name, null model. + * + * Returns pointer to the HMM on success; NULL + * on failure. Sets global alphabet information based on + * whether it reads 4 or 20 as alphabet size (don't rely + * on ancient HMMER macro definitions). + */ +static struct plan9_s * +read_plan9_binhmm(FILE *fp, int version, int swapped) +{ + struct plan9_s *hmm; + int M; /* length of model */ + int k; /* state number */ + int x; /* symbol or transition number */ + int len; /* length of variable length string */ + int asize; /* alphabet size */ + int atype; /* alphabet type (read but ignored) */ + char abet[20]; /* alphabet (read but ignored) */ + + /* read M and alphabet size */ + if (! fread((char *) &(M), sizeof(int), 1, fp)) return NULL; + if (! fread((char *) &asize, sizeof(int), 1, fp)) return NULL; + if (swapped) { + byteswap((char *) &M, sizeof(int)); + byteswap((char *) &asize, sizeof(int)); + } + + /* Set global alphabet information + */ + if (asize == 4) atype = hmmNUCLEIC; + else if (asize == 20) atype = hmmAMINO; + else Die("A nonbiological alphabet size of %d; so I can't convert plan9 to plan7", asize); + if (Alphabet_type == hmmNOTSETYET) SetAlphabet(atype); + else if (atype != Alphabet_type) + Die("Alphabet mismatch error.\nI thought we were working with %s, but tried to read a %s HMM.\n", AlphabetType2String(Alphabet_type), AlphabetType2String(atype)); + + /* now, create space for hmm */ + if ((hmm = P9AllocHMM(M)) == NULL) + Die("malloc failed for reading hmm in\n"); + + /* version 1.9+ files have a name */ + if (version == HMMER1_9B) { + if (! fread((char *) &len, sizeof(int), 1, fp)) return NULL; + if (swapped) byteswap((char *) &len, sizeof(int)); + hmm->name = (char *) ReallocOrDie (hmm->name, sizeof(char) * (len+1)); + if (! fread((char *) hmm->name, sizeof(char), len, fp)) return NULL; + hmm->name[len] = '\0'; + } + + /* read alphabet_type and alphabet, but ignore: we've already set them */ + if (! fread((char *) &atype, sizeof(int), 1, fp)) return NULL; + if (! fread((char *) abet, sizeof(char), Alphabet_size, fp)) return NULL; + + /* skip the random symbol frequencies in V1.0 */ + if (version == HMMER1_0B) + fseek(fp, (long) (sizeof(float) * Alphabet_size), SEEK_CUR); + + /* Get optional info in V1.7 and later + */ + if (version == HMMER1_7B || version == HMMER1_9B) + { + if (! fread((char *) &(hmm->flags), sizeof(int), 1, fp)) return NULL; + if (swapped) byteswap((char *) &hmm->flags, sizeof(int)); + if ((hmm->flags & HMM_REF) && + ! fread((char *) hmm->ref, sizeof(char), hmm->M+1, fp)) return NULL; + hmm->ref[hmm->M+1] = '\0'; + if ((hmm->flags & HMM_CS) && + ! fread((char *) hmm->cs, sizeof(char), hmm->M+1, fp)) return NULL; + hmm->cs[hmm->M+1] = '\0'; + } + + /* Get the null model in V1.9 and later + */ + if (version == HMMER1_9B) + { + if (! fread((char *) hmm->null, sizeof(float), Alphabet_size, fp)) return NULL; + if (swapped) + for (x = 0; x < Alphabet_size; x++) + byteswap((char *) &(hmm->null[x]), sizeof(float)); + } + else P9DefaultNullModel(hmm->null); + + /* everything else is states */ + for (k = 0; k <= hmm->M; k++) + { + /* get match state info */ + if (! fread((char *) &(hmm->mat[k].t[MATCH]), sizeof(float), 1, fp)) return NULL; + if (! fread((char *) &(hmm->mat[k].t[DELETE]), sizeof(float), 1, fp)) return NULL; + if (! fread((char *) &(hmm->mat[k].t[INSERT]), sizeof(float), 1, fp)) return NULL; + if (! fread((char *) hmm->mat[k].p, sizeof(float), Alphabet_size, fp)) return NULL +; + if (swapped) { + byteswap((char *) &(hmm->mat[k].t[MATCH]), sizeof(float)); + byteswap((char *) &(hmm->mat[k].t[DELETE]), sizeof(float)); + byteswap((char *) &(hmm->mat[k].t[INSERT]), sizeof(float)); + for (x = 0; x < Alphabet_size; x++) + byteswap((char *) &(hmm->mat[k].p[x]), sizeof(float)); + } + + /* skip the regularizer info in V1.0 */ + if (version == HMMER1_0B) + fseek(fp, (long)(sizeof(float) * (3 + Alphabet_size)), SEEK_CUR); + + /* get delete state info */ + if (! fread((char *) &(hmm->del[k].t[MATCH]), sizeof(float), 1, fp)) return NULL; + if (! fread((char *) &(hmm->del[k].t[DELETE]), sizeof(float), 1, fp)) return NULL; + if (! fread((char *) &(hmm->del[k].t[INSERT]), sizeof(float), 1, fp)) return NULL; + if (swapped) { + byteswap((char *) &(hmm->del[k].t[MATCH]), sizeof(float)); + byteswap((char *) &(hmm->del[k].t[DELETE]), sizeof(float)); + byteswap((char *) &(hmm->del[k].t[INSERT]), sizeof(float)); + } + + /* skip the regularizer info in V1.0 */ + if (version == HMMER1_0B) + fseek(fp, (long)(sizeof(float) * 3), SEEK_CUR); + + /* get insert state info */ + if (! fread((char *) &(hmm->ins[k].t[MATCH]), sizeof(float), 1, fp)) return NULL; + if (! fread((char *) &(hmm->ins[k].t[DELETE]), sizeof(float), 1, fp)) return NULL; + if (! fread((char *) &(hmm->ins[k].t[INSERT]), sizeof(float), 1, fp)) return NULL; + if (! fread((char *) hmm->ins[k].p, sizeof(float), Alphabet_size, fp)) return NULL +; + if (swapped) { + byteswap((char *) &(hmm->ins[k].t[MATCH]), sizeof(float)); + byteswap((char *) &(hmm->ins[k].t[DELETE]), sizeof(float)); + byteswap((char *) &(hmm->ins[k].t[INSERT]), sizeof(float)); + for (x = 0; x < Alphabet_size; x++) + byteswap((char *) &(hmm->ins[k].p[x]), sizeof(float)); + } + + /* skip the regularizer info in V1.0 */ + if (version == HMMER1_0B) + fseek(fp, (long)(sizeof(float) * (3 + Alphabet_size)), SEEK_CUR); + } + P9Renormalize(hmm); + return hmm; +} + + +/* Function: read_plan9_aschmm() + * + * Purpose: Read ASCII-format save files from 1.8.4 and earlier. + * V1.0 contained sympvec and regularizers; these are ignored + * in V1.1 and later + * V1.7 and later contain ref and cs annotation. + * + * Args: fp - open save file, header has been read already + * version - HMMER1_7F, for instance + * + * Returns ptr to the (allocated) new HMM on success, + * or NULL on failure. + */ +static struct plan9_s * +read_plan9_aschmm(FILE *fp, int version) +{ + struct plan9_s *hmm; + int M; /* length of model */ + char buffer[512]; + char *statetype; + char *s; + int k; /* state number */ + int i; /* symbol number */ + int asize; /* Alphabet size */ + int atype; /* Alphabet type */ + + /* read M from first line */ + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + if (!isdigit((int) (*s))) return NULL; + M = atoi(s); + /* read alphabet_length */ + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + if (!isdigit((int) (*s))) return NULL; + asize = atoi(s); + + /* Set global alphabet information + */ + if (asize == 4) atype = hmmNUCLEIC; + else if (asize == 20) atype = hmmAMINO; + else Die("A nonbiological alphabet size of %d; so I can't convert plan9 to plan7", asize); + if (Alphabet_type == hmmNOTSETYET) SetAlphabet(atype); + else if (atype != Alphabet_type) + Die("Alphabet mismatch error.\nI thought we were working with %s, but tried to read a %s HMM.\n", AlphabetType2String(Alphabet_type), AlphabetType2String(atype)); + + /* now, create space for hmm */ + if ((hmm = P9AllocHMM(M)) == NULL) + Die("malloc failed for reading hmm in\n"); + + /* read alphabet_type but ignore */ + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + if (!isdigit((int) (*s))) return NULL; + /* read alphabet but ignore */ + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + + /* skip the random symbol frequencies in V1.0 files. now unused */ + if (version == HMMER1_0F) + for (i = 0; i < Alphabet_size; i++) + if (fgets(buffer, 512, fp) == NULL) return NULL; + + /* V1.7 has lines for whether we have valid ref, cs info + */ + if (version == HMMER1_7F) + { + if (fgets(buffer, 512, fp) == NULL) return NULL; + if (strncmp(buffer, "yes", 3) == 0) hmm->flags |= HMM_REF; + if (fgets(buffer, 512, fp) == NULL) return NULL; + if (strncmp(buffer, "yes", 3) == 0) hmm->flags |= HMM_CS; + } + + /* everything else is states */ + while (fgets(buffer, 512, fp) != NULL) + { + /* get state type and index info */ + if ((statetype = strtok(buffer, " \t\n")) == NULL) return NULL; + if ((s = strtok((char *) NULL, " \t\n")) == NULL) return NULL; + if (!isdigit((int) (*s))) return NULL; + k = atoi(s); + if (k < 0 || k > hmm->M+1) return NULL; + + if (strcmp(statetype, "###MATCH_STATE") == 0) + { + /* V1.7: get ref, cs info: */ + /* ###MATCH_STATE 16 (x) (H) */ + if (version == HMMER1_7F) + { + s = strtok(NULL, "\n"); + while (*s != '(' && *s != '\0') s++; + if (*s != '(') return NULL; + hmm->ref[k] = *(s+1); + while (*s != '(' && *s != '\0') s++; + if (*s != '(') return NULL; + hmm->cs[k] = *(s+1); + } + + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->mat[k].t[MATCH] = (float) atof(s); + + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->mat[k].t[DELETE] = (float) atof(s); + + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->mat[k].t[INSERT] = (float) atof(s); + + for (i = 0; i < Alphabet_size; i++) + { + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->mat[k].p[i] = (float) atof(s); + } + + /* Skip all regularizer info for V1.0 */ + if (version == HMMER1_0F) + for (i = 0; i < Alphabet_size + 3; i++) + if (fgets(buffer, 512, fp) == NULL) return NULL; + + } + else if (strcmp(statetype, "###INSERT_STATE") == 0) + { + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->ins[k].t[MATCH] = (float) atof(s); + + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->ins[k].t[DELETE] = (float) atof(s); + + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->ins[k].t[INSERT] = (float) atof(s); + + for (i = 0; i < Alphabet_size; i++) + { + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->ins[k].p[i] = (float) atof(s); + } + + /* Skip all regularizer info in V1.0 files */ + if (version == HMMER1_0F) + for (i = 0; i < Alphabet_size + 3; i++) + if (fgets(buffer, 512, fp) == NULL) return NULL; + + } + else if (strcmp(statetype, "###DELETE_STATE") == 0) + { + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->del[k].t[MATCH] = (float) atof(s); + + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->del[k].t[DELETE] = (float) atof(s); + + if (fgets(buffer, 512, fp) == NULL) return NULL; + if ((s = strtok(buffer, " \t\n")) == NULL) return NULL; + hmm->del[k].t[INSERT] = (float) atof(s); + + /* Skip all regularizer info in V1.0 files*/ + if (version == HMMER1_0F) + for (i = 0; i < 3; i++) + if (fgets(buffer, 512, fp) == NULL) return NULL; + } + else + return NULL; + } + + P9DefaultNullModel(hmm->null); + P9Renormalize(hmm); + return hmm; +} diff --git a/forester/archive/RIO/others/hmmer/src/hmmpfam-pvm.c b/forester/archive/RIO/others/hmmer/src/hmmpfam-pvm.c new file mode 100644 index 0000000..ea75d20 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmpfam-pvm.c @@ -0,0 +1,229 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +#ifdef HMMER_PVM + +/* hmmslave-pvm.c + * SRE, Sun Jul 12 17:15:36 1998 + * + * PVM slave for hmmpfam-pvm and hmmsearch-pvm. + * RCS $Id: hmmpfam-pvm.c,v 1.1.1.1 2005/03/22 08:34:15 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "version.h" +#include "structs.h" /* data structures, macros, #define's */ +#include "config.h" /* compile-time configuration constants */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "squid.h" /* general sequence analysis library */ + +static void leave_pvm(void); + +int +main(void) +{ + struct p7trace_s *tr; /* traceback of an alignment */ + int master_tid; /* PVM TID of our master */ + char *hmmfile; /* file to read HMM(s) from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + struct plan7_s *hmm; + char *seq; + char *dsq; + int len; + int nhmm; /* number of HMM to work on */ + float sc; + int my_idx = -1; /* my index, 0..nslaves-1 */ + double pvalue; /* Z*pvalue = Evalue */ + double evalue; /* upper bound on evalue */ + struct threshold_s thresh; /* threshold settings */ + int send_trace; /* TRUE if score is significant */ + int do_xnu; /* TRUE to do XNU filter on seq */ + int do_forward; /* TRUE to use Forward() scores not Viterbi */ + int do_null2; /* TRUE to correct scores w/ ad hoc null2 */ + int alphatype; /* alphabet type, hmmAMINO or hmmNUCLEIC */ + int code; /* return code after initialization */ + + + SQD_DPRINTF1(("a slave reporting for duty!\n")); + + /* Register leave_pvm() cleanup function so any exit() call + * first calls pvm_exit(). + */ + if (atexit(leave_pvm) != 0) { pvm_exit(); Die("slave couldn't register leave_pvm()"); } + + /***************************************************************** + * initialization. + * Master broadcasts to us: + * 1) len of HMM file name (int) + * 2) name of HMM file (string) + * 3) length of sequence string (int) + * 4) sequence (string) + * 5) globT threshold + * 6) globE threshold + * 7) Z + * 8) autocut setting + * 9) do_xnu flag + * 10) do_forward flag + * 11) do_null2 flag + * 12) alphabet type + * We receive the broadcast and open the files. + ******************************************************************/ + + master_tid = pvm_parent(); /* who's our master? */ + SQD_DPRINTF1(("I know my master is %d\n", master_tid)); + + pvm_recv(master_tid, HMMPVM_INIT); + pvm_upkint(&len, 1, 1); + hmmfile = MallocOrDie(sizeof(char *) * (len+1)); + pvm_upkstr(hmmfile); + pvm_upkint(&len, 1, 1); + seq = MallocOrDie(sizeof(char *) * (len+1)); + pvm_upkstr(seq); + pvm_upkfloat(&(thresh.globT), 1, 1); + pvm_upkdouble(&(thresh.globE), 1, 1); + pvm_upkint(&(thresh.Z), 1, 1); + pvm_upkint((int *) &(thresh.autocut), 1, 1); + pvm_upkint(&do_xnu, 1, 1); + pvm_upkint(&do_forward, 1, 1); + pvm_upkint(&do_null2, 1, 1); + pvm_upkint(&alphatype, 1, 1); + SQD_DPRINTF1(("My master has told me how to initialize, and I am happy.\n")); + + SetAlphabet(alphatype); + /* Open HMM file (maybe in HMMERDB) */ + code = HMMPVM_OK; + if ((hmmfp = HMMFileOpen(hmmfile, "HMMERDB")) == NULL) + code = HMMPVM_NO_HMMFILE; + else if (hmmfp->ssi == NULL) + code = HMMPVM_NO_INDEX; + + /* report our status. + */ + pvm_initsend(PvmDataDefault); + pvm_pkint(&code, 1, 1); + PVMPackString(RELEASE); /* proofing against bug#1 */ + pvm_send(master_tid, HMMPVM_RESULTS); + SQD_DPRINTF1(("I have told my master my initialization status and I await his command.\n")); + + dsq = DigitizeSequence(seq, len); + if (do_xnu) XNU(dsq, len); + + /***************************************************************** + * Main loop. + * Receive an integer 0..nhmm-1 for which HMM to search against. + * If we receive a -1, we shut down. + *****************************************************************/ + + for (;;) + { + pvm_recv(master_tid, HMMPVM_WORK); + pvm_upkint(&nhmm, 1, 1); + if (my_idx < 0) my_idx = nhmm; /* first time thru, remember what index we are. */ + + if (nhmm == -1) { /* shutdown signal */ + SQD_DPRINTF1(("I've been told to shut down.")); + break; + } + + /* move to our assigned HMM in the HMM file, and read it + */ + SQD_DPRINTF1(("The master says to do HMM #%d - I hear and obey\n", nhmm)); + if (! HMMFilePositionByIndex(hmmfp, nhmm)) Die("didn't position the HMM file"); + if (! HMMFileRead(hmmfp, &hmm)) Die("unexpected end of HMM file"); + if (hmm == NULL) Die("unexpected failure to parse HMM file"); + P7Logoddsify(hmm, TRUE); + + /* set Pfam specific score thresholds if needed */ + if (! SetAutocuts(&thresh, hmm)) + Die("HMM %s doesn't have the score cutoffs you wanted", hmm->name); + + /* Score sequence, do alignment (Viterbi), recover trace + */ + if (P7ViterbiSize(len, hmm->M) <= RAMLIMIT) + { + SQD_DPRINTF1(("P7Viterbi(): Estimated size %d Mb\n", P7ViterbiSize(len, hmm->M))); + sc = P7Viterbi(dsq, len, hmm, &tr); + } + else + { + SQD_DPRINTF1(("P7SmallViterbi() called; %d Mb > %d\n", P7ViterbiSize(len, hmm->M), RAMLIMIT)); + sc = P7SmallViterbi(dsq, len, hmm, &tr); + } + + /* The Forward score override. + * See comments in hmmpfam.c in serial version. + */ + if (do_forward) { + sc = P7Forward(dsq, len, hmm, NULL); + if (do_null2) sc -= TraceScoreCorrection(hmm, tr, dsq); + } + + pvalue = PValue(hmm, sc); + evalue = thresh.Z ? (double) thresh.Z * pvalue : (double) nhmm * pvalue; + send_trace = (sc >= thresh.globT && evalue <= thresh.globE) ? 1 : 0; + + /* return output + */ + pvm_initsend(PvmDataDefault); + pvm_pkint(&my_idx, 1, 1); /* tell master who we are */ + pvm_pkstr(hmm->name); /* double check that we did the right thing */ + pvm_pkfloat(&sc, 1, 1); + pvm_pkdouble(&pvalue, 1, 1); + pvm_pkint(&send_trace, 1, 1); /* flag for whether a trace structure is coming */ + if (send_trace) PVMPackTrace(tr); + pvm_send(master_tid, HMMPVM_RESULTS); + + /* cleanup + */ + FreePlan7(hmm); + P7FreeTrace(tr); + } + + /*********************************************** + * Cleanup, return. + ***********************************************/ + + HMMFileClose(hmmfp); + free(seq); + free(dsq); + free(hmmfile); + return 0; +} + + +/* Function: leave_pvm() + * + * Purpose: Cleanup function, to deal with crashes. We register + * this function using atexit() so it gets called before + * the slave dies. + */ +static void leave_pvm(void) +{ + SQD_DPRINTF1(("slave leaving PVM.\n")); + pvm_exit(); +} + + + +#else /* if HMMER_PVM not defined: include a dummy */ + +#include +int main(void) +{ + printf("hmmpfam-slave is disabled. PVM support was not compiled into HMMER.\n"); + exit(0); +} + +#endif + diff --git a/forester/archive/RIO/others/hmmer/src/hmmpfam.c b/forester/archive/RIO/others/hmmer/src/hmmpfam.c new file mode 100644 index 0000000..4d49f71 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmpfam.c @@ -0,0 +1,1094 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmpfam.c + * SRE, Mon Aug 25 17:03:14 1997 [Denver] + * + * Search a single sequence against an HMM database. + * Conditionally includes PVM parallelization when HMMER_PVM is defined + * at compile time; hmmpfam --pvm runs the PVM version. + * + * CVS $Id: hmmpfam.c,v 1.1.1.1 2005/03/22 08:34:13 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#include +#ifdef HMMER_THREADS +#include +#endif +#ifdef HMMER_PVM +#include +#endif + +#include "squid.h" /* general sequence analysis library */ +#include "config.h" /* compile-time configuration constants */ +#include "structs.h" /* data structures, macros, #define's */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "version.h" /* version info */ + +static char banner[] = "hmmpfam - search one or more sequences against HMM database"; + +static char usage[] = "\ +Usage: hmmpfam [-options] \n\ + Available options are:\n\ + -h : help; print brief help on version and usage\n\ + -n : nucleic acid models/sequence (default protein)\n\ + -A : sets alignment output limit to best domain alignments\n\ + -E : sets E value cutoff (globE) to ; default 10\n\ + -T : sets T bit threshold (globT) to ; no threshold by default\n\ + -Z : sets Z (# models) for E-value calculation\n\ +"; + +static char experts[] = "\ + --acc : use HMM accession numbers instead of names in output\n\ + --compat : make best effort to use last version's output style\n\ + --cpu : run threads in parallel (if threaded)\n\ + --cut_ga : use Pfam GA gathering threshold cutoffs\n\ + --cut_nc : use Pfam NC noise threshold cutoffs\n\ + --cut_tc : use Pfam TC trusted threshold cutoffs\n\ + --domE : sets domain Eval cutoff (2nd threshold) to \n\ + --domT : sets domain T bit thresh (2nd threshold) to \n\ + --forward : use the full Forward() algorithm instead of Viterbi\n\ + --informat : sequence file is in format , not FASTA\n\ + --null2 : turn OFF the post hoc second null model\n\ + --pvm : run on a PVM (Parallel Virtual Machine) cluster\n\ + --xnu : turn ON XNU filtering of query protein sequence\n\ +\n"; + + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-n", TRUE, sqdARG_NONE }, + { "-A", TRUE, sqdARG_INT }, + { "-E", TRUE, sqdARG_FLOAT}, + { "-T", TRUE, sqdARG_FLOAT}, + { "-Z", TRUE, sqdARG_INT }, + { "--acc", FALSE, sqdARG_NONE }, + { "--compat", FALSE, sqdARG_NONE }, + { "--cpu", FALSE, sqdARG_INT }, + { "--cut_ga", FALSE, sqdARG_NONE }, + { "--cut_nc", FALSE, sqdARG_NONE }, + { "--cut_tc", FALSE, sqdARG_NONE }, + { "--domE", FALSE, sqdARG_FLOAT}, + { "--domT", FALSE, sqdARG_FLOAT}, + { "--forward", FALSE, sqdARG_NONE }, + { "--informat",FALSE, sqdARG_STRING}, + { "--null2", FALSE, sqdARG_NONE }, + { "--pvm", FALSE, sqdARG_NONE }, + { "--xnu", FALSE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + + + +#ifdef HMMER_THREADS +/* POSIX threads version: + * the threads share a workpool_s structure amongst themselves, + * for obtaining locks on input HMM file and output histogram and + * tophits structures. + */ +struct workpool_s { + /* Shared configuration resources that don't change: + */ + char *hmmfile; /* name of HMM file */ + char *dsq; /* digitized query sequence */ + char *seqname; /* sequence name */ + int L; /* length of dsq */ + int do_forward; /* TRUE to score using Forward */ + int do_null2; /* TRUE to apply null2 correction */ + struct threshold_s *thresh; /* score/evalue cutoff information */ + + /* Shared (mutex-protected) input resources: + */ + HMMFILE *hmmfp; /* ptr to open HMM file */ + int nhmm; /* number of HMMs searched so far */ + pthread_mutex_t input_lock; /* mutex for locking input */ + + /* Shared (mutex-protected) output resources: + */ + struct tophit_s *ghit; /* per-sequence top hits */ + struct tophit_s *dhit; /* per-domain top hits */ + pthread_mutex_t output_lock; /* mutex for locking output */ + + /* Thread pool information + */ + pthread_t *thread; /* our pool of threads */ + int num_threads; /* number of threads */ +}; + +static struct workpool_s *workpool_start(char *hmmfile, HMMFILE *hmmfp, + char *dsq, char *seqname, int L, + int do_forward, int do_null2, + struct threshold_s *thresh, + struct tophit_s *ghit, struct tophit_s *dhit, + int num_threads); +static void workpool_stop(struct workpool_s *wpool); +static void workpool_free(struct workpool_s *wpool); +static void *worker_thread(void *ptr); +#endif /* HMMER_THREADS */ + + +#ifdef HMMER_PVM +static void main_loop_pvm(char *hmmfile, HMMFILE *hmmfp, char *seq, SQINFO *sqinfo, + struct threshold_s *thresh, int do_xnu, int do_forward, int do_null2, + struct tophit_s *ghit, struct tophit_s *dhit, int *ret_nhmm); +#endif +static void main_loop_serial(char *hmmfile, HMMFILE *hmmfp, char *seq, SQINFO *sqinfo, + struct threshold_s *thresh, int do_xnu, int do_forward, int do_null2, + int num_threads, + struct tophit_s *ghit, struct tophit_s *dhit, int *nhmm); + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMMs from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + char *seqfile; /* file to read target sequence from */ + SQFILE *sqfp; /* opened seqfile for reading */ + int format; /* format of seqfile */ + char *seq; /* target sequence */ + SQINFO sqinfo; /* optional info for seq */ + struct fancyali_s *ali; /* an alignment for display */ + struct tophit_s *ghit; /* list of top hits and alignments for seq */ + struct tophit_s *dhit; /* list of top hits/alignments for domains */ + + float sc; /* log-odds score in bits */ + double pvalue; /* pvalue of an HMM score */ + double evalue; /* evalue of an HMM score */ + double motherp; /* pvalue of a whole seq HMM score */ + float mothersc; /* score of a whole seq parent of domain */ + int sqfrom, sqto; /* coordinates in sequence */ + int hmmfrom, hmmto; /* coordinate in HMM */ + char *name, *acc, *desc; /* hit HMM name, accession, description */ + int hmmlen; /* length of HMM hit */ + int nhmm; /* number of HMMs searched */ + int domidx; /* number of this domain */ + int ndom; /* total # of domains in this seq */ + int namewidth; /* max width of printed HMM name */ + int descwidth; /* max width of printed description */ + + int Alimit; /* A parameter limiting output alignments */ + struct threshold_s thresh; /* contains all threshold (cutoff) info */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + int do_forward; /* TRUE to use Forward() not Viterbi() */ + int do_nucleic; /* TRUE to do DNA/RNA instead of protein */ + int do_null2; /* TRUE to adjust scores with null model #2 */ + int do_pvm; /* TRUE to run on PVM */ + int do_xnu; /* TRUE to do XNU filtering */ + int be_backwards; /* TRUE to be backwards-compatible in output*/ + int show_acc; /* TRUE to sub HMM accessions for names */ + int i; + int nreported; + + int num_threads; /* number of worker threads */ + + /*********************************************** + * Parse command line + ***********************************************/ + + format = SQFILE_UNKNOWN; /* default: autodetect format w/ Babelfish */ + do_forward = FALSE; + do_nucleic = FALSE; + do_null2 = TRUE; + do_pvm = FALSE; + do_xnu = FALSE; + be_backwards= FALSE; + show_acc = FALSE; + + Alimit = INT_MAX; /* no limit on alignment output */ + thresh.globE = 10.0; /* use a reasonable Eval threshold; */ + thresh.globT = -FLT_MAX; /* but no bit threshold, */ + thresh.domT = -FLT_MAX; /* no domain bit threshold, */ + thresh.domE = FLT_MAX; /* and no domain Eval threshold. */ + thresh.autocut = CUT_NONE; /* and no Pfam cutoffs used. */ + thresh.Z = 0; /* Z not preset, so determined by # of HMMs */ + +#ifdef HMMER_THREADS + num_threads = ThreadNumber(); /* only matters if we're threaded */ +#else + num_threads = 0; +#endif + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-n") == 0) do_nucleic = TRUE; + else if (strcmp(optname, "-A") == 0) Alimit = atoi(optarg); + else if (strcmp(optname, "-E") == 0) thresh.globE = atof(optarg); + else if (strcmp(optname, "-T") == 0) thresh.globT = atof(optarg); + else if (strcmp(optname, "-Z") == 0) thresh.Z = atoi(optarg); + else if (strcmp(optname, "--acc") == 0) show_acc = TRUE; + else if (strcmp(optname, "--compat") == 0) be_backwards = TRUE; + else if (strcmp(optname, "--cpu") == 0) num_threads = atoi(optarg); + else if (strcmp(optname, "--cut_ga") == 0) thresh.autocut = CUT_GA; + else if (strcmp(optname, "--cut_nc") == 0) thresh.autocut = CUT_NC; + else if (strcmp(optname, "--cut_tc") == 0) thresh.autocut = CUT_TC; + else if (strcmp(optname, "--domE") == 0) thresh.domE = atof(optarg); + else if (strcmp(optname, "--domT") == 0) thresh.domT = atof(optarg); + else if (strcmp(optname, "--forward") == 0) do_forward = TRUE; + else if (strcmp(optname, "--null2") == 0) do_null2 = FALSE; + else if (strcmp(optname, "--pvm") == 0) do_pvm = TRUE; + else if (strcmp(optname, "--xnu") == 0) do_xnu = TRUE; + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == SQFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 2) + Die("Incorrect number of arguments.\n%s\n", usage); + + hmmfile = argv[optind++]; + seqfile = argv[optind++]; + +#ifndef HMMER_PVM + if (do_pvm) Die("PVM support is not compiled into HMMER; --pvm doesn't work."); +#endif +#ifndef HMMER_THREADS + if (num_threads) Die("Posix threads support is not compiled into HMMER; --cpu doesn't have any effect"); +#endif + + /*********************************************** + * Open sequence database (must be in curr directory); + * get target sequence. + ***********************************************/ + + if (do_nucleic) SetAlphabet(hmmNUCLEIC); + else SetAlphabet(hmmAMINO); + + if (do_nucleic && do_xnu) + Die("You can't use -n and --xnu together: I can't xnu DNA data."); + + if ((sqfp = SeqfileOpen(seqfile, format, NULL)) == NULL) + Die("Failed to open sequence file %s\n%s\n", seqfile, usage); + + /*********************************************** + * Open HMM database (might be in HMMERDB or current directory) + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, "HMMERDB")) == NULL) + Die("Failed to open HMM database %s\n%s", hmmfile, usage); + + /*********************************************** + * Show the banner + ***********************************************/ + + Banner(stdout, banner); + printf( "HMM file: %s\n", hmmfile); + printf( "Sequence file: %s\n", seqfile); + if (do_pvm) + printf( "PVM: ACTIVE\n"); + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); + + /*********************************************** + * Search each HMM against each sequence + ***********************************************/ + + while (ReadSeq(sqfp, format, &seq, &sqinfo)) + { + ghit = AllocTophits(20); /* keeps full seq scores */ + dhit = AllocTophits(20); /* keeps domain scores */ + + /* 1. Search sequence against all HMMs. + * Significant scores+alignments accumulate in ghit, dhit. + */ + if (!do_pvm) + main_loop_serial(hmmfile, hmmfp, seq, &sqinfo, + &thresh, do_xnu, do_forward, do_null2, num_threads, + ghit, dhit, &nhmm); +#ifdef HMMER_PVM + else if (do_pvm) + { + SQD_DPRINTF1(("Entering PVM main loop\n")); + main_loop_pvm(hmmfile, hmmfp, seq, &sqinfo, + &thresh, do_xnu, do_forward, do_null2, + ghit, dhit, &nhmm); + } +#endif + else Die("wait. that can't happen. I didn't do anything."); + + /* set Z for good now that we're done */ + if (!thresh.Z) thresh.Z = nhmm; + + /* 2. (Done searching all HMMs for this query seq; start output) + * Report the overall sequence hits, sorted by significance. + */ + if (be_backwards) + { + printf("Query: %s %s\n", sqinfo.name, + sqinfo.flags & SQINFO_DESC ? sqinfo.desc : ""); + } + else + { + printf("\nQuery sequence: %s\n", sqinfo.name); + printf("Accession: %s\n", sqinfo.flags &SQINFO_ACC ? sqinfo.acc : "[none]"); + printf("Description: %s\n", sqinfo.flags &SQINFO_DESC? sqinfo.desc : "[none]"); + } + /* We'll now sort the global hit list by evalue... + * (not score! that was bug #12. in hmmpfam, score and evalue are not + * monotonic.) + */ + FullSortTophits(ghit); + namewidth = MAX(8, TophitsMaxName(ghit)); /* must print whole name, no truncation */ + descwidth = MAX(52-namewidth, 11); /* may truncate desc, but avoid neg len! */ + + printf("\nScores for sequence family classification (score includes all domains):\n"); + printf("%-*s %-*s %7s %10s %3s\n", namewidth, "Model", descwidth, "Description", "Score", "E-value", " N "); + printf("%-*s %-*s %7s %10s %3s\n", namewidth, "--------", descwidth, "-----------", "-----", "-------", "---"); + for (i = 0, nreported = 0; i < ghit->num; i++) + { + char *safedesc; + GetRankedHit(ghit, i, + &pvalue, &sc, NULL, NULL, + &name, &acc, &desc, + NULL, NULL, NULL, /* seq positions */ + NULL, NULL, NULL, /* HMM positions */ + NULL, &ndom, /* domain info */ + NULL); /* alignment info*/ + + evalue = pvalue * (double) thresh.Z; + + /* safedesc is a workaround for an apparent Linux printf() + * bug with the *.*s format. dbmalloc crashes with a memchr() ptr out of bounds + * flaw if the malloc'ed space for desc is short. The workaround + * is to make sure the ptr for *.* has a big malloc space. + */ + if (desc != NULL && strlen(desc) < 80) + { + safedesc = MallocOrDie(sizeof(char) * 80); + strcpy(safedesc, desc); + } + else safedesc = Strdup(desc); + + /* sneaky trick warning: + * if we're using dynamic Pfam score cutoffs (GA, TC, NC), + * then the list of hits is already correct and does not + * need any score cutoffs. Unset the thresholds. They'll + * be reset in the main_loop if we still have sequences + * to process. + */ + if (thresh.autocut != CUT_NONE) { + thresh.globE = thresh.domE = FLT_MAX; + thresh.globT = thresh.domT = -FLT_MAX; + } + + if (evalue <= thresh.globE && sc >= thresh.globT) + { + printf("%-*s %-*.*s %7.1f %10.2g %3d\n", + namewidth, + (show_acc && acc != NULL) ? acc : name, + descwidth, descwidth, safedesc != NULL ? safedesc : "", + sc, evalue, ndom); + nreported++; + } + free(safedesc); + } + if (nreported == 0) printf("\t[no hits above thresholds]\n"); + + /* 3. Report domain hits (sorted on sqto coordinate) + */ + FullSortTophits(dhit); + namewidth = MAX(8, TophitsMaxName(dhit)); /* must print whole name, no truncation */ + + printf("\nParsed for domains:\n"); + printf("%-*s %7s %5s %5s %5s %5s %7s %8s\n", + namewidth, "Model", "Domain ", "seq-f", "seq-t", "hmm-f", "hmm-t", "score", "E-value"); + printf("%-*s %7s %5s %5s %5s %5s %7s %8s\n", + namewidth, "--------", "-------", "-----", "-----", "-----", "-----", "-----", "-------"); + + for (i = 0, nreported = 0; i < dhit->num; i++) + { + GetRankedHit(dhit, i, + &pvalue, &sc, &motherp, &mothersc, + &name, &acc, NULL, + &sqfrom, &sqto, NULL, + &hmmfrom, &hmmto, &hmmlen, + &domidx, &ndom, + NULL); + evalue = pvalue * (double) thresh.Z; + + /* Does the "mother" (complete) sequence satisfy global thresholds? */ + if (motherp * (double)thresh. Z > thresh.globE || mothersc < thresh.globT) + continue; + else if (evalue <= thresh.domE && sc >= thresh.domT) { + printf("%-*s %3d/%-3d %5d %5d %c%c %5d %5d %c%c %7.1f %8.2g\n", + namewidth, + (show_acc && acc != NULL) ? acc : name, + domidx, ndom, + sqfrom, sqto, + sqfrom == 1 ? '[' : '.', sqto == sqinfo.len ? ']' : '.', + hmmfrom, hmmto, + hmmfrom == 1 ? '[':'.', hmmto == hmmlen ? ']' : '.', + sc, evalue); + nreported++; + } + } + if (nreported == 0) printf("\t[no hits above thresholds]\n"); + + + /* 3. Alignment output, also by domain. + * dhits is already sorted and namewidth is set, from above code. + * Number of displayed alignments is limited by Alimit parameter; + * also by domE (evalue threshold), domT (score theshold). + */ + if (Alimit != 0) + { + printf("\nAlignments of top-scoring domains:\n"); + for (i = 0, nreported = 0; i < dhit->num; i++) + { + if (nreported == Alimit) break; /* limit to Alimit output alignments */ + GetRankedHit(dhit, i, + &pvalue, &sc, &motherp, &mothersc, + &name, &acc, NULL, + &sqfrom, &sqto, NULL, /* seq position info */ + &hmmfrom, &hmmto, &hmmlen, /* HMM position info */ + &domidx, &ndom, /* domain info */ + &ali); /* alignment info */ + evalue = pvalue * (double) thresh.Z; + + if (motherp * (double) thresh.Z > thresh.globE || mothersc < thresh.globT) + continue; + else if (evalue <= thresh.domE && sc >= thresh.domT) + { + printf("%s: domain %d of %d, from %d to %d: score %.1f, E = %.2g\n", + (show_acc && acc != NULL) ? acc : name, + domidx, ndom, sqfrom, sqto, sc, evalue); + PrintFancyAli(stdout, ali); + nreported++; + } + } + if (nreported == 0) printf("\t[no hits above thresholds]\n"); + if (nreported == Alimit) printf("\t[output cut off at A = %d top alignments]\n", Alimit); + } + + + printf("//\n"); + FreeSequence(seq, &sqinfo); + FreeTophits(ghit); + FreeTophits(dhit); + + HMMFileRewind(hmmfp); + } + + /*********************************************** + * Clean-up and exit. + ***********************************************/ + SeqfileClose(sqfp); + HMMFileClose(hmmfp); + SqdClean(); + + return 0; +} + + +/* Function: main_loop_serial() + * Date: SRE, Fri Aug 7 13:46:48 1998 [St. Louis] + * + * Purpose: Search a sequence against an HMM database; + * main loop for the serial (non-PVM, non-threads) + * version. + * + * On return, ghit and dhit contain info for all hits + * that satisfy the set thresholds. If an evalue + * cutoff is used at all, the lists will be overestimated -- + * because the evalue will be underestimated until + * we know the final Z. (Thus the main program must recheck + * thresholds before printing any results.) If only + * score cutoffs are used, then the lists are correct, + * and may be printed exactly as they come (after + * appropriate sorting, anyway). This is especially + * important for dynamic thresholding using Pfam + * score cutoffs -- the main caller cannot afford to + * rescan the HMM file just to get the GA/TC/NC cutoffs + * back out for each HMM, and neither do I want to + * burn the space to store them as I make a pass thru + * Pfam. + * + * Args: hmmfile - name of HMM file + * hmmfp - open HMM file (and at start of file) + * dsq - digitized sequence + * sqinfo - ptr to SQINFO optional info for dsq + * thresh - score/evalue threshold information + * do_xnu - TRUE to apply XNU filter to sequence + * do_forward - TRUE to use Forward() scores + * do_null2 - TRUE to adjust scores w/ ad hoc null2 model + * num_threads- number of threads, if threaded + * ghit - global hits list + * dhit - domain hits list + * ret_nhmm - number of HMMs searched. + * + * Returns: (void) + */ +static void +main_loop_serial(char *hmmfile, HMMFILE *hmmfp, char *seq, SQINFO *sqinfo, + struct threshold_s *thresh, int do_xnu, int do_forward, int do_null2, + int num_threads, + struct tophit_s *ghit, struct tophit_s *dhit, int *ret_nhmm) +{ + char *dsq; /* digitized sequence */ + int nhmm; /* number of HMMs searched */ +#ifdef HMMER_THREADS + struct workpool_s *wpool; /* pool of worker threads */ +#endif + struct plan7_s *hmm; /* current HMM to search with */ + struct p7trace_s *tr; /* traceback of alignment */ + float sc; /* an alignment score */ + double pvalue; /* pvalue of an HMM score */ + double evalue; /* evalue of an HMM score */ + + /* Prepare sequence. + */ + dsq = DigitizeSequence(seq, sqinfo->len); + if (do_xnu && Alphabet_type == hmmAMINO) XNU(dsq, sqinfo->len); + +#ifdef HMMER_THREADS + if (num_threads > 0) { + wpool = workpool_start(hmmfile, hmmfp, dsq, sqinfo->name, sqinfo->len, + do_forward, do_null2, thresh, + ghit, dhit, num_threads); + workpool_stop(wpool); + nhmm = wpool->nhmm; + workpool_free(wpool); + + free(dsq); + *ret_nhmm = nhmm; + return; + } +#endif + /* unthreaded code: */ + nhmm = 0; + while (HMMFileRead(hmmfp, &hmm)) { + if (hmm == NULL) + Die("HMM file %s may be corrupt or in incorrect format; parse failed", hmmfile); + P7Logoddsify(hmm, !(do_forward)); + + if (! SetAutocuts(thresh, hmm)) + Die("HMM %s did not contain the GA, TC, or NC cutoffs you needed", + hmm->name); + + /* Score sequence, do alignment (Viterbi), recover trace + */ + if (P7ViterbiSize(sqinfo->len, hmm->M) <= RAMLIMIT) + sc = P7Viterbi(dsq, sqinfo->len, hmm, &tr); + else + sc = P7SmallViterbi(dsq, sqinfo->len, hmm, &tr); + + /* Implement do_forward; we'll override the whole_sc with a P7Forward() + * calculation. + * HMMER is so trace- (alignment-) dependent that this gets a bit hacky. + * Some important implications: + * 1) if --do_forward is selected, the domain (Viterbi) scores do not + * necessarily add up to the whole sequence (Forward) score. + * 2) The implementation of null2 for a Forward score is undefined, + * since the null2 correction is trace-dependent. As a total hack, + * we use a null2 correction derived from the whole trace + * (which was the behavior of HMMER 2.1.1 and earlier, anyway). + * This could put the sum of domain scores and whole seq score even + * further in disagreement. + * + * Note that you can't move the Forward calculation into + * PostprocessSignificantHit(). The Forward score will exceed the + * Viterbi score, so you can't apply thresholds until you + * know the Forward score. Also, since PostprocessSignificantHit() + * is wrapped by a mutex in the threaded implementation, + * you'd destroy all useful parallelism if PostprocessSignificantHit() + * did anything compute intensive. + */ + if (do_forward) { + sc = P7Forward(dsq, sqinfo->len, hmm, NULL); + if (do_null2) sc -= TraceScoreCorrection(hmm, tr, dsq); + } + + /* Store scores/pvalue for each HMM aligned to this sequence, overall + */ + pvalue = PValue(hmm, sc); + evalue = thresh->Z ? (double) thresh->Z * pvalue : (double) nhmm * pvalue; + if (sc >= thresh->globT && evalue <= thresh->globE) { + PostprocessSignificantHit(ghit, dhit, + tr, hmm, dsq, sqinfo->len, + sqinfo->name, NULL, NULL, /* won't need acc or desc even if we have 'em */ + do_forward, sc, + do_null2, + thresh, + TRUE); /* TRUE -> hmmpfam mode */ + } + P7FreeTrace(tr); + FreePlan7(hmm); + nhmm++; + } + + free(dsq); + *ret_nhmm = nhmm; + return; +} + + +#ifdef HMMER_PVM +/***************************************************************** + * PVM specific functions + ****************************************************************/ + +/* Function: main_loop_pvm() + * Date: SRE, Fri Aug 7 13:58:34 1998 [St. Louis] + * + * Purpose: Search a sequence against an HMM database; + * main loop for the PVM version. + * + * Args: hmmfile - name of HMM file + * hmmfp - open HMM file (and at start of file) + * seq - sequence to search against + * sqinfo - ptr to SQINFO optional info for dsq + * thresh - score/evalue threshold settings + * do_xnu - TRUE to apply XNU filter to sequence + * do_forward - TRUE to use Forward() scores + * do_null2 - TRUE to adjust scores w/ ad hoc null2 model + * ghit - global hits list + * dhit - domain hits list + * nhmm - number of HMMs searched. + * + * Returns: (void) + */ +static void +main_loop_pvm(char *hmmfile, HMMFILE *hmmfp, char *seq, SQINFO *sqinfo, + struct threshold_s *thresh, int do_xnu, int do_forward, int do_null2, + struct tophit_s *ghit, struct tophit_s *dhit, int *ret_nhmm) +{ + struct plan7_s *hmm; /* HMM that was searched with */ + struct p7trace_s *tr; /* a traceback structure */ + char *dsq; /* digitized sequence */ + float sc; /* score of an HMM match */ + int master_tid; /* master's ID */ + int *slave_tid; /* array of slave IDs */ + int *hmmlist; /* array of hmm indexes being worked on by slaves */ + int nslaves; /* number of slaves in virtual machine */ + int nhmm; /* number of HMMs searched */ + int slaveidx; /* index of a slave wanting work */ + int slave, msg; + int sent_trace; /* TRUE if slave sent us a trace */ + char slavename[32]; /* name of HMM that slave actually did */ + double pvalue; /* pvalue of HMM score */ + int arglen; + + /* Sanity checks. + */ + if (hmmfp->ssi == NULL) + Die("HMM file %s needs an SSI index to use PVM. See: hmmindex.", hmmfile); + + /* Prepare sequence. + */ + dsq = DigitizeSequence(seq, sqinfo->len); + if (do_xnu && Alphabet_type == hmmAMINO) XNU(dsq, sqinfo->len); + + /* Initialize PVM + */ + master_tid = pvm_mytid(); +#if DEBUGLEVEL >= 1 + pvm_catchout(stderr); /* catch output for debugging */ +#endif + SQD_DPRINTF1(("Spawning slaves...\n")); + PVMSpawnSlaves("hmmpfam-pvm", &slave_tid, &nslaves); + hmmlist = MallocOrDie(sizeof(int) * nslaves); + SQD_DPRINTF1(("Spawned a total of %d slaves...\n", nslaves)); + + /* Initialize the slaves + */ + SQD_DPRINTF1(("Broadcasting to %d slaves...\n", nslaves)); + pvm_initsend(PvmDataDefault); + arglen = strlen(hmmfile); + pvm_pkint(&arglen, 1, 1); + pvm_pkstr(hmmfile); + pvm_pkint(&(sqinfo->len), 1, 1); + pvm_pkstr(seq); + pvm_pkfloat(&(thresh->globT), 1, 1); + pvm_pkdouble(&(thresh->globE), 1, 1); + pvm_pkint(&(thresh->Z), 1, 1); + pvm_pkint((int *)&(thresh->autocut), 1, 1); + pvm_pkint(&do_xnu, 1, 1); + pvm_pkint(&do_forward, 1, 1); + pvm_pkint(&do_null2, 1, 1); + pvm_pkint(&Alphabet_type, 1, 1); + pvm_mcast(slave_tid, nslaves, HMMPVM_INIT); + SQD_DPRINTF1(("Slaves should be ready...\n")); + /* get their OK codes. */ + PVMConfirmSlaves(slave_tid, nslaves); + SQD_DPRINTF1(("Slaves confirm that they're ok...\n")); + + /* Load the slaves. + * For efficiency reasons, we don't want the master to + * load HMMs from disk until she absolutely needs them. + */ + for (nhmm = 0; nhmm < nslaves && nhmm < hmmfp->ssi->nprimary; nhmm++) { + pvm_initsend(PvmDataDefault); + pvm_pkint(&nhmm, 1, 1); /* side effect: also tells him what number he is. */ + pvm_send(slave_tid[nhmm], HMMPVM_WORK); + hmmlist[nhmm] = nhmm; + } + SQD_DPRINTF1(("%d slaves are loaded\n", nhmm)); + + + /* Receive/send loop + */ + for (; nhmm < hmmfp->ssi->nprimary; nhmm++) + { + /* check slaves before blocking */ + PVMCheckSlaves(slave_tid, nslaves); + /* receive output */ + SQD_DPRINTF1(("Waiting for a slave to give me output...\n")); + pvm_recv(-1, HMMPVM_RESULTS); + pvm_upkint(&slaveidx, 1, 1); /* # of slave who's sending us stuff */ + pvm_upkstr(slavename); /* name of HMM that slave did */ + pvm_upkfloat(&sc, 1, 1); /* score */ + pvm_upkdouble(&pvalue, 1, 1); /* P-value */ + pvm_upkint(&sent_trace, 1, 1); /* TRUE if trace is coming */ + tr = (sent_trace) ? PVMUnpackTrace() : NULL; + SQD_DPRINTF1(("Slave %d finished %s for me...\n", slaveidx, slavename)); + + /* send new work */ + pvm_initsend(PvmDataDefault); + pvm_pkint(&nhmm, 1, 1); + pvm_send(slave_tid[slaveidx], HMMPVM_WORK); + SQD_DPRINTF1(("Assigned %d -> slave %d\n", nhmm, slaveidx)); + + /* process output */ + /* 1b. Store scores/pvalue for each HMM aligned to this sequence, overall + */ + SQD_DPRINTF1(("%15s : %2d : %f\n", slavename, slaveidx, sc)); + if (sent_trace) + { + /* now load the HMM, because the hit is significant */ + HMMFilePositionByIndex(hmmfp, hmmlist[slaveidx]); + if (!HMMFileRead(hmmfp, &hmm)) + { pvm_exit(); Die("Unexpected failure to read HMM file %s", hmmfile); } + if (hmm == NULL) + { pvm_exit(); Die("HMM file %s may be corrupt; parse failed", hmmfile); } + P7Logoddsify(hmm, TRUE); + if (! SetAutocuts(thresh, hmm)) + Die("HMM %s did not contain your GA, NC, or TC cutoffs", hmm->name); + + PostprocessSignificantHit(ghit, dhit, + tr, hmm, dsq, sqinfo->len, + sqinfo->name, + sqinfo->flags & SQINFO_ACC ? sqinfo->acc : NULL, + sqinfo->flags & SQINFO_DESC ? sqinfo->desc : NULL, + do_forward, sc, + do_null2, + thresh, + TRUE); /* TRUE -> hmmpfam mode */ + + FreePlan7(hmm); + P7FreeTrace(tr); + } + hmmlist[slaveidx] = nhmm; + } + + /* Collect the output. all n slaves are still working, so wait for them. + */ + for (slave = 0; slave < nslaves && slave < nhmm; slave++) + { + /* don't check slaves (they're exiting normally); + window of vulnerability here to slave crashes */ + /* receive output */ + pvm_recv(-1, HMMPVM_RESULTS); + pvm_upkint(&slaveidx, 1, 1); /* slave who's sending us stuff */ + pvm_upkstr(slavename); + pvm_upkfloat(&sc, 1, 1); /* one score */ + pvm_upkdouble(&pvalue, 1, 1); /* P-value */ + pvm_upkint(&sent_trace, 1, 1); /* TRUE if trace is coming */ + tr = (sent_trace) ? PVMUnpackTrace() : NULL; + + /* process output */ + SQD_DPRINTF1(("%15s : %2d : %f\n", slavename, slaveidx, sc)); + if (sent_trace) + { + /* now load the HMM, because the hit is significant */ + HMMFilePositionByIndex(hmmfp, hmmlist[slaveidx]); + if (!HMMFileRead(hmmfp, &hmm)) + { pvm_exit(); Die("Unexpected failure to read HMM file %s", hmmfile);} + if (hmm == NULL) + { pvm_exit(); Die("HMM file %s may be corrupt; parse failed", hmmfile); } + P7Logoddsify(hmm, TRUE); + if (! SetAutocuts(thresh, hmm)) + Die("HMM %s did not contain your GA, NC, or TC cutoffs", hmm->name); + + PostprocessSignificantHit(ghit, dhit, + tr, hmm, dsq, sqinfo->len, + sqinfo->name, NULL, NULL, /* won't need acc or desc even if we have 'em */ + do_forward, sc, + do_null2, + thresh, + TRUE); /* TRUE -> hmmpfam mode */ + + FreePlan7(hmm); + P7FreeTrace(tr); + } + /* send cleanup/shutdown flag */ + pvm_initsend(PvmDataDefault); + msg = -1; + pvm_pkint(&msg, 1, 1); + pvm_send(slave_tid[slaveidx], HMMPVM_WORK); + } + + /* Cleanup; quit the VM; and return + */ + free(slave_tid); + free(hmmlist); + free(dsq); + pvm_exit(); + *ret_nhmm = nhmm; + return; +} + +#endif /*HMMER_PVM*/ + + +#ifdef HMMER_THREADS +/***************************************************************** + * POSIX threads implementation. + * + * API: + * workpool_start() (makes a workpool_s structure. Starts calculations.) + * workpool_stop() (waits for threads to finish.) + * workpool_free() (destroys the structure) + * + * Threads: + * worker_thread() (the actual parallelized worker thread). + *****************************************************************/ + +/* Function: workpool_start() + * Date: SRE, Mon Sep 28 11:10:58 1998 [St. Louis] + * + * Purpose: Initialize a workpool_s structure, and return it. + * + * Args: hmmfile - name of HMM file + * hmmfp - open HMM file, at start + * dsq - ptr to sequence to search + * seqname - ptr to name of dsq + * L - length of dsq + * do_forward - TRUE to score using Forward + * do_null2 - TRUE to apply null2 ad hoc correction + * threshold - evalue/score threshold settings + * ghit - per-seq hit list + * dhit - per-domain hit list + * num_threads- number of worker threads to run. + * + * Returns: ptr to struct workpool_s. + * Caller must wait for threads to finish with workpool_stop(), + * then free the structure with workpool_free(). + */ +static struct workpool_s * +workpool_start(char *hmmfile, HMMFILE *hmmfp, char *dsq, char *seqname, int L, + int do_forward, int do_null2, struct threshold_s *thresh, + struct tophit_s *ghit, struct tophit_s *dhit, + int num_threads) +{ + struct workpool_s *wpool; + pthread_attr_t attr; + int i; + int rtn; + + wpool = MallocOrDie(sizeof(struct workpool_s)); + wpool->thread = MallocOrDie(num_threads * sizeof(pthread_t)); + wpool->hmmfile = hmmfile; + wpool->dsq = dsq; + wpool->L = L; + wpool->seqname = seqname; + wpool->do_forward = do_forward; + wpool->do_null2 = do_null2; + wpool->thresh = thresh; + + wpool->hmmfp = hmmfp; + wpool->nhmm = 0; + if ((rtn = pthread_mutex_init(&(wpool->input_lock), NULL)) != 0) + Die("pthread_mutex_init FAILED; %s\n", strerror(rtn)); + + wpool->ghit = ghit; + wpool->dhit = dhit; + if ((rtn = pthread_mutex_init(&(wpool->output_lock), NULL)) != 0) + Die("pthread_mutex_init FAILED; %s\n", strerror(rtn)); + + wpool->num_threads= num_threads; + + /* Create slave threads. See comments in hmmcalibrate.c at + * this step regarding concurrency and system scope. + */ + pthread_attr_init(&attr); +#ifndef __sgi +#ifdef HAVE_PTHREAD_ATTR_SETSCOPE + pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); +#endif +#endif +#ifdef HAVE_PTHREAD_SETCONCURRENCY + pthread_setconcurrency(num_threads+1); +#endif + for (i = 0; i < num_threads; i++) + if ((rtn = pthread_create(&(wpool->thread[i]), &attr, + worker_thread , (void *) wpool)) != 0) + Die("Failed to create thread %d; return code %d\n", i, rtn); + + pthread_attr_destroy(&attr); + return wpool; +} + +/* Function: workpool_stop() + * Date: SRE, Thu Jul 16 11:20:16 1998 [St. Louis] + * + * Purpose: Waits for threads in a workpool to finish. + * + * Args: wpool -- ptr to the workpool structure + * + * Returns: (void) + */ +static void +workpool_stop(struct workpool_s *wpool) +{ + int i; + /* wait for threads to stop */ + for (i = 0; i < wpool->num_threads; i++) + if (pthread_join(wpool->thread[i],NULL) != 0) + Die("pthread_join failed"); + return; +} + +/* Function: workpool_free() + * Date: SRE, Thu Jul 16 11:26:27 1998 [St. Louis] + * + * Purpose: Free a workpool_s structure, after the threads + * have finished. + * + * Args: wpool -- ptr to the workpool. + * + * Returns: (void) + */ +static void +workpool_free(struct workpool_s *wpool) +{ + free(wpool->thread); + free(wpool); + return; +} + + +/* Function: worker_thread() + * Date: SRE, Mon Sep 28 10:48:29 1998 [St. Louis] + * + * Purpose: The procedure executed by the worker threads. + * + * Args: ptr - (void *) that is recast to a pointer to + * the workpool. + * + * Returns: (void *) + */ +void * +worker_thread(void *ptr) +{ + struct workpool_s *wpool; /* our working threads structure */ + struct plan7_s *hmm; /* an HMM to search with */ + struct p7trace_s *tr; /* traceback from an alignment */ + float sc; /* score of an alignment */ + int rtn; /* a return code from pthreads lib */ + double pvalue; /* P-value of score */ + double evalue; /* E-value of a score */ + struct threshold_s thresh; /* a local copy of thresholds */ + + wpool = (struct workpool_s *) ptr; + /* Because we might dynamically change the thresholds using + * Pfam GA/NC/TC cutoffs, we make a local copy of the threshold + * structure in this thread. + */ + thresh.globT = wpool->thresh->globT; + thresh.globE = wpool->thresh->globE; + thresh.domT = wpool->thresh->domT; + thresh.domE = wpool->thresh->domE; + thresh.autocut = wpool->thresh->autocut; + thresh.Z = wpool->thresh->Z; + for (;;) { + + /* 1. acquire lock on HMM input, and get + * the next HMM to work on. + */ + /* acquire a lock */ + if ((rtn = pthread_mutex_lock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_lock failure: %s\n", strerror(rtn)); + wpool->nhmm++; + + if (! HMMFileRead(wpool->hmmfp, &hmm)) + { /* we're done. release lock, exit thread */ + if ((rtn = pthread_mutex_unlock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + pthread_exit(NULL); + } + SQD_DPRINTF1(("a thread is working on %s\n", hmm->name)); + /* release the lock */ + if ((rtn = pthread_mutex_unlock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + + if (hmm == NULL) + Die("HMM file %s may be corrupt or in incorrect format; parse failed", wpool->hmmfile); + P7Logoddsify(hmm, !(wpool->do_forward)); + + if (!SetAutocuts(&thresh, hmm)) + Die("HMM %s did not have the right GA, NC, or TC cutoffs", hmm->name); + + /* 2. We have an HMM in score form. + * Score the sequence. + */ + if (P7ViterbiSize(wpool->L, hmm->M) <= RAMLIMIT) + sc = P7Viterbi(wpool->dsq, wpool->L, hmm, &tr); + else + sc = P7SmallViterbi(wpool->dsq, wpool->L, hmm, &tr); + + /* The Forward score override (see comments in serial vers) + */ + if (wpool->do_forward) { + sc = P7Forward(wpool->dsq, wpool->L, hmm, NULL); + if (wpool->do_null2) sc -= TraceScoreCorrection(hmm, tr, wpool->dsq); + } + + /* 3. Save the output in tophits structures, after acquiring a lock + */ + if ((rtn = pthread_mutex_lock(&(wpool->output_lock))) != 0) + Die("pthread_mutex_lock failure: %s\n", strerror(rtn)); + SQD_DPRINTF1(("model %s scores %f\n", hmm->name, sc)); + + pvalue = PValue(hmm, sc); + evalue = thresh.Z ? (double) thresh.Z * pvalue : (double) wpool->nhmm * pvalue; + if (sc >= thresh.globT && evalue <= thresh.globE) + { + PostprocessSignificantHit(wpool->ghit, wpool->dhit, + tr, hmm, wpool->dsq, wpool->L, + wpool->seqname, + NULL, NULL, /* won't need seq's acc or desc */ + wpool->do_forward, sc, + wpool->do_null2, + &thresh, + TRUE); /* TRUE -> hmmpfam mode */ + } + if ((rtn = pthread_mutex_unlock(&(wpool->output_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + + P7FreeTrace(tr); + FreePlan7(hmm); + + } /* end 'infinite' loop over HMMs in this thread */ +} + +#endif /* HMMER_THREADS */ diff --git a/forester/archive/RIO/others/hmmer/src/hmmpostal.c b/forester/archive/RIO/others/hmmer/src/hmmpostal.c new file mode 100644 index 0000000..3e56af5 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmpostal.c @@ -0,0 +1,1108 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* Derived from code developed by Ian Holmes (Sanger Centre and UC Berkeley) + * Copyright (C) 1998 Ian Holmes + * Distributed under the GNU General Public License + */ + +#include +#include +#include + +#include "structs.h" /* data structures, macros, #define's */ +#include "config.h" /* compile-time configuration constants */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "squid.h" /* general sequence analysis library */ + +static char banner[] = "hmmbuild - build a hidden Markov model from an alignment"; + +static char usage[] = "\ +Usage: hmmbuildpost [-options] \n\ + Available options are:\n\ + -h : help; print brief help on version and usage\n\ + -n : name; name this HMM \n\ + -r : read HMM from instead of building\n\ + -m : save HMM to \n\ + -o : re-save annotated alignment to \n\ + -A : append; append this HMM to \n\ + -F : force; allow overwriting of \n\ +\n\ + Alternative search algorithm styles: (default: hmmls domain alignment)\n\ + -f : multi-hit local (hmmfs style)\n\ + -g : global alignment (hmms style, Needleman/Wunsch)\n\ + -s : local alignment (hmmsw style, Smith/Waterman)\n\ +"; + +static char experts[] = "\ + Optional re-alignment of sequences to model:\n\ + --viterbi : standard max-likelihood (Viterbi) algorithm\n\ + --optacc : optimal accuracy algorithm\n\ +\n\ + Alternative model construction strategies: (default: MAP)\n\ + --fast : Krogh/Haussler fast heuristic construction (see --gapmax)\n\ + --hand : manual construction (requires SELEX file, #=RF annotation)\n\ +\n\ + Expert customization of parameters and priors:\n\ + --null : read null (random sequence) model from \n\ + --pam : heuristic PAM-based prior, using BLAST PAM matrix in \n\ + --prior : read Dirichlet prior parameters from \n\ +\n\ + Alternative sequence weighting strategies: (default: GSC weights)\n\ + --wblosum : Henikoff simple filter weights (see --idlevel)\n\ + --wgsc : Gerstein/Sonnhammer/Chothia tree weights (default)\n\ + --wme : maximum entropy (ME)\n\ + --wvoronoi : Sibbald/Argos Voronoi weights\n\ + --wnone : don't do any weighting\n\ + --noeff : don't use effective sequence number; just use nseq\n\ +\n\ + Forcing an alphabet: (normally autodetected)\n\ + --amino : override autodetection, assert that seqs are protein\n\ + --nucleic : override autodetection, assert that seqs are DNA/RNA\n\ +\n\ + Other expert options:\n\ + --archpri : set architecture size prior to {0.85} [0..1]\n\ + --binary : save the model in binary format, not ASCII text\n\ + --cfile : save count vectors to \n\ + --gapmax : max fraction of gaps in mat column {0.50} [0..1]\n\ + --idlevel : set frac. id level used by eff. nseq and --wblosum {0.62}\n\ + --informat : input alignment is in format , not Stockholm\n\ + --pamwgt : set weight on PAM-based prior to {20.}[>=0]\n\ + --swentry : set S/W aggregate entry prob. to {0.5}\n\ + --swexit : set S/W aggregate exit prob. to {0.5}\n\ + --verbose : print a lot of boring information\n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-f", TRUE, sqdARG_NONE }, + { "-g", TRUE, sqdARG_NONE }, + { "-h", TRUE, sqdARG_NONE }, + { "-n", TRUE, sqdARG_STRING}, + { "-r", TRUE, sqdARG_STRING}, + { "-m", TRUE, sqdARG_STRING}, + { "-o", TRUE, sqdARG_STRING}, + { "-s", TRUE, sqdARG_NONE }, + { "-A", TRUE, sqdARG_NONE }, + { "-F", TRUE, sqdARG_NONE }, + { "--amino", FALSE, sqdARG_NONE }, + { "--archpri", FALSE, sqdARG_FLOAT }, + { "--binary", FALSE, sqdARG_NONE }, + { "--cfile", FALSE, sqdARG_STRING}, + { "--fast", FALSE, sqdARG_NONE}, + { "--gapmax", FALSE, sqdARG_FLOAT }, + { "--hand", FALSE, sqdARG_NONE}, + { "--idlevel", FALSE, sqdARG_FLOAT }, + { "--informat",FALSE, sqdARG_STRING }, + { "--noeff", FALSE, sqdARG_NONE }, + { "--nucleic", FALSE, sqdARG_NONE }, + { "--null", FALSE, sqdARG_STRING }, + { "--optacc", FALSE, sqdARG_NONE }, + { "--pam", FALSE, sqdARG_STRING }, + { "--pamwgt", FALSE, sqdARG_FLOAT }, + { "--prior", FALSE, sqdARG_STRING }, + { "--swentry", FALSE, sqdARG_FLOAT }, + { "--swexit", FALSE, sqdARG_FLOAT }, + { "--verbose", FALSE, sqdARG_NONE }, + { "--viterbi", FALSE, sqdARG_NONE }, + { "--wgsc", FALSE, sqdARG_NONE }, + { "--wblosum", FALSE, sqdARG_NONE }, + { "--wme", FALSE, sqdARG_NONE }, + { "--wnone", FALSE, sqdARG_NONE }, + { "--wvoronoi",FALSE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +static void save_model(struct plan7_s *hmm, char *hmmfile, int do_append, int do_binary); +static void print_all_scores(FILE *fp, struct plan7_s *hmm, + AINFO *ainfo, char **dsq, int nseq, + struct p7trace_s **tr); +static void save_countvectors(char *cfile, struct plan7_s *hmm); +static void position_average_score(struct plan7_s *hmm, char **seq, float *wgt, + int nseq, struct p7trace_s **tr, float *pernode, + float *ret_avg); +static float frag_trace_score(struct plan7_s *hmm, char *dsq, struct p7trace_s *tr, + float *pernode, float expected); +static void maximum_entropy(struct plan7_s *hmm, char **dsq, AINFO *ainfo, + int nseq, float eff_nseq, + struct p7prior_s *prior, struct p7trace_s **tr); + +extern void Postcode(int L, struct dpmatrix_s *mx, struct p7trace_s *tr); + +int +main(int argc, char **argv) +{ + char *seqfile; /* seqfile to read alignment from */ + int format; /* format of seqfile */ + MSAFILE *afp; /* open alignment file */ + MSA *msa; /* a multiple sequence alignment */ + char **dsq; /* digitized unaligned aseq's */ + struct plan7_s *hmm; /* constructed HMM; written to hmmfile */ + struct p7prior_s *pri; /* Dirichlet priors to use */ + struct p7trace_s **tr; /* fake tracebacks for aseq's */ + char *readfile; /* file to read HMM from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + char *hmmfile; /* file to write HMM to */ + FILE *fp; /* OUTPUT file handle (misc.) */ + char *name; /* name of the HMM */ + int idx; /* counter for sequences */ + float randomseq[MAXABET]; /* null sequence model */ + float p1; /* null sequence model p1 transition */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + enum p7_construction c_strategy; /* construction strategy choice */ + enum p7_weight { /* weighting strategy */ + WGT_NONE, WGT_GSC, WGT_BLOSUM, WGT_VORONOI, WGT_ME} w_strategy; + enum p7_config { /* algorithm configuration strategy */ + P7_BASE_CONFIG, P7_LS_CONFIG, P7_FS_CONFIG, P7_SW_CONFIG } cfg_strategy; + float gapmax; /* max frac gaps in mat col for -k */ + int overwrite_protect; /* TRUE to prevent overwriting HMM file */ + enum realignment_strategy { /* re-alignment strategy */ + REALIGN_NONE, REALIGN_VITERBI, REALIGN_OPTACC } r_strategy; + int verbose; /* TRUE to show a lot of output */ + char *align_ofile; /* name of output alignment file */ + char *rndfile; /* random sequence model file to read */ + char *prifile; /* Dirichlet prior file to read */ + char *pamfile; /* PAM matrix file for heuristic prior */ + char *cfile; /* output file for count vectors */ + float archpri; /* "architecture" prior on model size */ + float pamwgt; /* weight on PAM for heuristic prior */ + int do_append; /* TRUE to append to hmmfile */ + int do_binary; /* TRUE to write in binary format */ + float blosumlevel; /* BLOSUM frac id filtering level [0.62] */ + float swentry; /* S/W aggregate entry probability */ + float swexit; /* S/W aggregate exit probability */ + int do_eff; /* TRUE to set an effective seq number */ + float eff_nseq; /* effective sequence number */ + int checksum; + int len; + + struct dpmatrix_s *forward_mx; /* Forward matrix */ + struct dpmatrix_s *backward_mx; /* Backward matrix */ + struct dpmatrix_s *posterior_mx; /* Posterior matrix */ + struct dpmatrix_s *optacc_mx; /* Optimal accuracy matrix */ + + /*********************************************** + * Parse command line + ***********************************************/ + + format = MSAFILE_UNKNOWN; + c_strategy = P7_MAP_CONSTRUCTION; + w_strategy = WGT_GSC; + blosumlevel = 0.62; + cfg_strategy = P7_LS_CONFIG; + gapmax = 0.5; + overwrite_protect = TRUE; + r_strategy = REALIGN_NONE; + verbose = FALSE; + readfile = NULL; + hmmfile = NULL; + align_ofile = NULL; + rndfile = NULL; + prifile = NULL; + pamfile = NULL; + cfile = NULL; + archpri = 0.85; + pamwgt = 20.; + Alphabet_type = hmmNOTSETYET; /* initially unknown */ + name = NULL; + do_append = FALSE; + swentry = 0.5; + swexit = 0.5; + do_eff = TRUE; + do_binary = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-f") == 0) cfg_strategy = P7_FS_CONFIG; + else if (strcmp(optname, "-g") == 0) cfg_strategy = P7_BASE_CONFIG; + else if (strcmp(optname, "-n") == 0) name = Strdup(optarg); + else if (strcmp(optname, "-r") == 0) readfile = optarg; + else if (strcmp(optname, "-m") == 0) hmmfile = optarg; + else if (strcmp(optname, "-o") == 0) align_ofile = optarg; + else if (strcmp(optname, "-r") == 0) rndfile = optarg; + else if (strcmp(optname, "-s") == 0) cfg_strategy = P7_SW_CONFIG; + else if (strcmp(optname, "-A") == 0) do_append = TRUE; + else if (strcmp(optname, "-F") == 0) overwrite_protect = FALSE; + else if (strcmp(optname, "--amino") == 0) SetAlphabet(hmmAMINO); + else if (strcmp(optname, "--archpri") == 0) archpri = atof(optarg); + else if (strcmp(optname, "--binary") == 0) do_binary = TRUE; + else if (strcmp(optname, "--cfile") == 0) cfile = optarg; + else if (strcmp(optname, "--fast") == 0) c_strategy = P7_FAST_CONSTRUCTION; + else if (strcmp(optname, "--hand") == 0) c_strategy = P7_HAND_CONSTRUCTION; + else if (strcmp(optname, "--gapmax") == 0) gapmax = atof(optarg); + else if (strcmp(optname, "--idlevel") == 0) blosumlevel = atof(optarg); + else if (strcmp(optname, "--noeff") == 0) do_eff = FALSE; + else if (strcmp(optname, "--nucleic") == 0) SetAlphabet(hmmNUCLEIC); + else if (strcmp(optname, "--optacc") == 0) r_strategy = REALIGN_OPTACC; + else if (strcmp(optname, "--pam") == 0) pamfile = optarg; + else if (strcmp(optname, "--pamwgt") == 0) pamwgt = atof(optarg); + else if (strcmp(optname, "--prior") == 0) prifile = optarg; + else if (strcmp(optname, "--swentry") == 0) swentry = atof(optarg); + else if (strcmp(optname, "--swexit") == 0) swexit = atof(optarg); + else if (strcmp(optname, "--verbose") == 0) verbose = TRUE; + else if (strcmp(optname, "--viterbi") == 0) r_strategy = REALIGN_VITERBI; + else if (strcmp(optname, "--wgsc") == 0) w_strategy = WGT_GSC; + else if (strcmp(optname, "--wblosum") == 0) w_strategy = WGT_BLOSUM; + else if (strcmp(optname, "--wme") == 0) w_strategy = WGT_ME; + else if (strcmp(optname, "--wnone") == 0) w_strategy = WGT_NONE; + else if (strcmp(optname, "--wvoronoi")== 0) w_strategy = WGT_VORONOI; + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == MSAFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + if (! IsAlignmentFormat(format)) + Die("%s is an unaligned format, can't read as an alignment", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 1) + Die("Incorrect number of arguments.\n%s\n", usage); + + seqfile = argv[optind++]; + + if (readfile != NULL && r_strategy == REALIGN_NONE) + r_strategy = REALIGN_VITERBI; + + if (gapmax < 0. || gapmax > 1.) + Die("--gapmax must be a value from 0 to 1\n%s\n", usage); + if (archpri < 0. || archpri > 1.) + Die("--archpri must be a value from 0 to 1\n%s\n", usage); + if (overwrite_protect && hmmfile && !do_append && FileExists(hmmfile)) + Die("HMM file %s already exists. Rename or delete it.", hmmfile); + if (overwrite_protect && align_ofile != NULL && FileExists(align_ofile)) + Die("Alignment resave file %s exists. Rename or delete it.", align_ofile); + + /*********************************************** + * Get sequence data + ***********************************************/ + + /* Open the alignment */ + if ((afp = MSAFileOpen(seqfile, format, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", seqfile); + + /* read the alignment from file */ + if ((msa = MSAFileRead(afp)) == NULL) + Die("Failed to read aligned sequence file %s", seqfile); + for (idx = 0; idx < msa->nseq; idx++) + s2upper(msa->aseq[idx]); + MSAFileClose(afp); + /* Set up the alphabet globals */ + if (Alphabet_type == hmmNOTSETYET) + DetermineAlphabet(msa->aseq, msa->nseq); + + /* Set up Dirichlet priors */ + if (prifile == NULL) pri = P7DefaultPrior(); + else pri = P7ReadPrior(prifile); + + if (pamfile != NULL) PAMPrior(pamfile, pri, pamwgt); + + /* Set up the null/random seq model */ + if (rndfile == NULL) P7DefaultNullModel(randomseq, &p1); + else P7ReadNullModel(rndfile, randomseq, &p1); + + /* Prepare sequences for internal use */ + DigitizeAlignment(msa, &dsq); + + /* In some respects we treat DNA more crudely... */ + if (Alphabet_type == hmmNUCLEIC) + { + do_eff = FALSE; /* don't do effective seq #; it's calibrated for protein */ + } + + /*********************************************** + * Either read in an HMM or build from alignment, + * depending on user specifications. + ***********************************************/ + + if (readfile != NULL) { + + /*********************************************** + * Open HMM file (might be in HMMERDB or current directory). + * Read a single HMM from it. + ***********************************************/ + + if ((hmmfp = HMMFileOpen(readfile, "HMMERDB")) == NULL) + Die("Failed to open HMM file %s\n%s", readfile, usage); + if (!HMMFileRead(hmmfp, &hmm)) + Die("Failed to read any HMMs from %s\n", readfile); + HMMFileClose(hmmfp); + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", readfile); + + tr = (struct p7trace_s **) MallocOrDie (sizeof(struct p7trace_s *) * msa->nseq); + for (idx = 0; idx < msa->nseq; idx++) + tr[idx] = 0; + + } else { + + /*********************************************** + * Build an HMM + ***********************************************/ + + /* Determine the effective sequence number to use (optional) + */ + eff_nseq = (float) msa->nseq; + if (do_eff) + { + float *wgt; + printf("%-40s ... ", "Determining effective sequence number"); + fflush(stdout); + /* dummy weights array to feed BlosumWeights*/ + wgt = MallocOrDie(sizeof(float) * msa->nseq); + BlosumWeights(msa->aseq, msa->nseq, msa->alen, blosumlevel, wgt); + eff_nseq = FSum(wgt, msa->nseq); + + free(wgt); + printf("done. [%.0f]\n", eff_nseq); + } + + + /* Weight the sequences (optional), + */ + /* Weight the sequences (optional), + */ + if (w_strategy == WGT_GSC || + w_strategy == WGT_BLOSUM || + w_strategy == WGT_VORONOI) + { + printf("%-40s ... ", "Weighting sequences heuristically"); + fflush(stdout); + + if (w_strategy == WGT_GSC) + GSCWeights(msa->aseq, msa->nseq, msa->alen, msa->wgt); + else if (w_strategy == WGT_BLOSUM) + BlosumWeights(msa->aseq, msa->nseq, msa->alen, blosumlevel, msa->wgt); + else if (w_strategy == WGT_VORONOI) + VoronoiWeights(msa->aseq, msa->nseq, msa->alen, msa->wgt); + + printf("done.\n"); + } + + /* Set the effective sequence number (if do_eff is FALSE, eff_nseq + * was set to nseq). + */ + FNorm(msa->wgt, msa->nseq); + FScale(msa->wgt, msa->nseq, eff_nseq); + + + /* Build a model architecture. + * If we're not doing MD or ME, that's all we need to do. + * We get an allocated, counts-based HMM back. + */ + printf("%-40s ... ", "Constructing model architecture"); + fflush(stdout); + checksum = GCGMultchecksum(msa->aseq, msa->nseq); + if (c_strategy == P7_FAST_CONSTRUCTION) + P7Fastmodelmaker(msa, dsq, gapmax, &hmm, &tr); + else if (c_strategy == P7_HAND_CONSTRUCTION) + P7Handmodelmaker(msa, dsq, &hmm, &tr); + else + P7Maxmodelmaker(msa, dsq, gapmax, + pri, randomseq, p1, archpri, &hmm, &tr); + hmm->checksum = checksum; + printf("done.\n"); + + /* Save the count vectors if asked. Used primarily for + * making the data files for training priors. + */ + if (cfile != NULL) + { + save_countvectors(cfile, hmm); + } + + /* Record the null model in the HMM; + * add prior contributions in pseudocounts and renormalize. + */ + Plan7SetNullModel(hmm, randomseq, p1); + P7PriorifyHMM(hmm, pri); + + + /* Model configuration, temporary. + * hmmbuild assumes that it's given an alignment of single domains, + * and the alignment may contain fragments. So, for the purpose of + * scoring the sequences (or, optionally, MD/ME weighting), + * configure the model into hmmsw mode. Later we'll + * configure the model according to how the user wants to + * use it. + */ + Plan7SWConfig(hmm, 0.5, 0.5); + + /* Do model-dependent "weighting" strategies. + */ + /* + if (w_strategy == WGT_ME) + { + maximum_entropy(hmm, dsq, &ainfo, ainfo.nseq, eff_nseq, pri, tr); + } + */ + + /* Give the model a name; by default, the name of the alignment file + * without any filename extension (i.e. "globins.slx" becomes "globins" + */ + if (name == NULL) name = FileTail(seqfile, TRUE); + Plan7SetName(hmm, name); + Plan7ComlogAppend(hmm, argc, argv); + Plan7SetCtime(hmm); + hmm->nseq = msa->nseq; + free(name); + + /* Configure the model for chosen algorithm + */ + switch (cfg_strategy) { + case P7_BASE_CONFIG: Plan7GlobalConfig(hmm); break; + case P7_SW_CONFIG: Plan7SWConfig(hmm, swentry, swexit); break; + case P7_LS_CONFIG: Plan7LSConfig(hmm); break; + case P7_FS_CONFIG: Plan7FSConfig(hmm, swentry, swexit); break; + default: Die("bogus configuration choice"); + } + + } + + /* Optionally save new HMM to disk: open a file for appending or writing. + */ + P7Logoddsify(hmm, TRUE); + if (hmmfile) + save_model(hmm, hmmfile, do_append, do_binary); + + /* Display posterior probabilities for each sequence, + re-aligning them to the model if user requested that + */ + + for (idx = 0; idx < msa->nseq; idx++) { + printf ("#\n# Sequence %d: %s\n#\n", idx + 1, msa->sqname[idx]); + + len = DealignedLength(msa->aseq[idx]); + if (P7ViterbiSize(len, hmm->M) * 2 > RAMLIMIT) + Die("insufficient memory"); + + (void) P7Forward (dsq[idx], len, hmm, &forward_mx); + (void) P7Backward (dsq[idx],len, hmm, &backward_mx); + + if (r_strategy == REALIGN_VITERBI) { + + if (tr[idx]) P7FreeTrace (tr[idx]); + + if (P7ViterbiSize(len, hmm->M) * 3 <= RAMLIMIT) + (void) P7Viterbi(dsq[idx], len, hmm, &(tr[idx])); + else + (void) P7SmallViterbi(dsq[idx], len, hmm, &(tr[idx])); + + } else if (r_strategy == REALIGN_OPTACC) { + + if (tr[idx]) P7FreeTrace (tr[idx]); + + if (P7ViterbiSize(len, hmm->M) * 4 > RAMLIMIT) + Die("insufficient memory"); + + posterior_mx = AllocPlan7Matrix (len + 1, hmm->M, 0, 0, 0, 0); + P7EmitterPosterior (len, hmm, forward_mx, backward_mx, + posterior_mx); + + optacc_mx = AllocPlan7Matrix (len + 1, hmm->M, 0, 0, 0, 0); + (void) P7FillOptimalAccuracy (len, hmm->M, posterior_mx, + optacc_mx, &(tr[idx])); + + FreePlan7Matrix (posterior_mx); + FreePlan7Matrix (optacc_mx); + + } + + posterior_mx = AllocPlan7Matrix (len + 1, hmm->M, 0, 0, 0, 0); + P7EmitterPosterior (len, hmm, forward_mx, backward_mx, + posterior_mx); + + Postcode(len, posterior_mx, tr[idx]); + /* DisplayPlan7Matrix(dsq[idx], len, hmm, posterior_mx); */ + + + /* DisplayPlan7PostAlign (len, hmm, + forward_mx, backward_mx, + &(tr[idx]), 1); + */ + + FreePlan7Matrix (backward_mx); + FreePlan7Matrix (forward_mx); + + } + + /* the annotated alignment may be resaved */ + if (align_ofile != NULL) { + MSA *new_msa; + SQINFO *sqinfo; + + sqinfo = MSAToSqinfo(msa); + new_msa = P7Traces2Alignment(dsq, sqinfo, msa->wgt, msa->nseq, + hmm->M, tr, FALSE); + if ((fp = fopen(align_ofile, "w")) == NULL) { + Warn("Failed to open alignment resave file %s; using stdout instead", + align_ofile); + fp = stdout; + } + WriteStockholm(fp, new_msa); + MSAFree(new_msa); + for (idx = 0; idx < msa->nseq; idx++) + FreeSequence(NULL, &(sqinfo[idx])); + free(sqinfo); + if (fp != stdout) fclose(fp); + } + + /* Verbose output; show scores for each sequence + */ + /* + if (verbose) + print_all_scores(stdout, hmm, dsq, msq, tr); + */ + + /* Clean up and exit + */ + for (idx = 0; idx < msa->nseq; idx++) P7FreeTrace(tr[idx]); + free(tr); + FreePlan7(hmm); + P7FreePrior(pri); + Free2DArray((void **) dsq, msa->nseq); + MSAFree(msa); + SqdClean(); + + return 0; +} + +/* Function: save_model() + * + * Purpose: Save the new model to a file. + * + * Args: hmm - model to save + * hmmfile - file to save to (if NULL, use stdout) + * do_append - TRUE to append to file + * do_binary - TRUE to write a binary file + * + * Return: (void) + */ +static void +save_model(struct plan7_s *hmm, char *hmmfile, int do_append, int do_binary) +{ + FILE *fp; + + if (hmmfile == NULL) + fp = stdout; + else if (do_append) + { + /* check that it looks like an HMM file */ +#ifdef REMOVED /* This code induces an unresolved Linux/SGI NFS bug! */ + if (FileExists(hmmfile)) + { + HMMFILE *hmmfp; + hmmfp = HMMFileOpen(hmmfile, NULL); + if (hmmfp == NULL) { + Warn("%s not an HMM file; can't append to it; using stdout instead", + hmmfile); + fp = stdout; + puts(""); /* do a newline before stdout HMM starts */ + } else { + HMMFileClose(hmmfp); + } + } +#endif + + if ((fp = fopen(hmmfile, "a")) == NULL) { + Warn("hey, where'd your HMM file go? Using stdout instead."); + fp = stdout; + puts(""); /* do a newline before stdout HMM starts */ + } + } + else + { + if ((fp = fopen(hmmfile, "w")) == NULL) { + Warn("Failed to open HMM save file %s; using stdout instead", hmmfile); + fp = stdout; + puts(""); /* do a newline before stdout HMM starts */ + } + } + + if (do_binary) WriteBinHMM(fp, hmm); + else WriteAscHMM(fp, hmm); + + if (fp != stdout) fclose(fp); + return; +} + + + + + +/* Function: print_all_scores() + * + * Purpose: For each training sequence, print its score under + * the final model. + * + * Args: fp - where to print the output (usu. stdout) + * hmm - newly constructed HMM, with prob's. + * ainfo- info with aseq + * dsq - digitized unaligned training sequences. + * nseq - number of training sequences + * tr - array of tracebacks + * + * Return: (void) + */ +static void +print_all_scores(FILE *fp, struct plan7_s *hmm, + AINFO *ainfo, char **dsq, int nseq, struct p7trace_s **tr) +{ + int idx; /* counter for sequences */ + + /* make sure model scores are ready */ + P7Logoddsify(hmm, TRUE); + /* header */ + fputs("**\n", fp); + fputs("Individual training sequence scores:\n", fp); + /* score for each sequence */ + for (idx = 0; idx < nseq; idx++) + { + fprintf(fp, "%7.2f %-12s %s\n", + P7TraceScore(hmm, dsq[idx], tr[idx]), + ainfo->sqinfo[idx].name, + (ainfo->sqinfo[idx].flags & SQINFO_DESC) ? + ainfo->sqinfo[idx].desc : ""); + P7PrintTrace(fp, tr[idx], hmm, dsq[idx]); + } + fputs("\n", fp); +} + + + +/* Function: save_countvectors() + * + * Purpose: Save emission/transition count vectors to a file. + * Used for gathering the data on which to train a + * prior (e.g. mixture Dirichlet, etc.) + * + * The format of the file is one vector per line: + * M ...: 20 match emission counts in order AC..WY. + * I ...: 20 insert emission counts in order AC..WY. + * T ...: 7 transition counts in order TMM, TMI, TMD, + * TIM, TII, TDM, TDD. (see structs.h) + * + * Args: cfile - counts file to make + * hmm - counts-based HMM + */ +static void +save_countvectors(char *cfile, struct plan7_s *hmm) +{ + FILE *fp; + int k, x; + + if ((fp = fopen(cfile, "w")) == NULL) + Die("failed to open count vector file %s for writing", cfile); + + /* match emission vectors */ + for (k = 1; k <= hmm->M; k++) + { + fputs("M ", fp); + for (x = 0; x < Alphabet_size; x++) + fprintf(fp, "%.2f ", hmm->mat[k][x]); + fputs("\n", fp); + } + /* insert emission vectors */ + for (k = 1; k < hmm->M; k++) + { + fputs("I ", fp); + for (x = 0; x < Alphabet_size; x++) + fprintf(fp, "%.2f ", hmm->ins[k][x]); + fputs("\n", fp); + } + /* transition vectors */ + for (k = 1; k < hmm->M; k++) + { + fputs("T ", fp); + for (x = 0; x < 7; x++) + fprintf(fp, "%.2f ", hmm->t[k][x]); + fputs("\n", fp); + } + + fclose(fp); +} + + +/* Function: position_average_score() + * Date: Wed Dec 31 09:36:35 1997 [StL] + * + * Purpose: Calculate scores from tracebacks, keeping them + * in a position specific array. The final array + * is normalized position-specifically too, according + * to how many sequences contributed data to this + * position. Used for compensating for sequence + * fragments in ME and MD score optimization. + * Very much ad hoc. + * + * Code related to (derived from) TraceScore(). + * + * Args: hmm - HMM structure, scores valid + * dsq - digitized unaligned sequences + * wgt - weights on the sequences + * nseq - number of sequences + * tr - array of nseq tracebacks that aligns each dsq to hmm + * pernode - RETURN: [0]1..M array of position-specific avg scores + * ret_avg - RETURN: overall average full-length, one-domain score + * + * Return: 1 on success, 0 on failure. + * pernode is malloc'ed [0]1..M by CALLER and filled here. + */ +static void +position_average_score(struct plan7_s *hmm, + char **dsq, + float *wgt, + int nseq, + struct p7trace_s **tr, + float *pernode, + float *ret_avg) +{ + int pos; /* position in seq */ + int sym; + int tpos; /* position in trace/state sequence */ + float *counts; /* counts at each position */ + float avg; /* RETURN: average overall */ + int k; /* counter for model position */ + int idx; /* counter for sequence number */ + + /* Allocations + */ + counts = MallocOrDie ((hmm->M+1) * sizeof(float)); + FSet(pernode, hmm->M+1, 0.); + FSet(counts, hmm->M+1, 0.); + + /* Loop over traces, accumulate weighted scores per position + */ + for (idx = 0; idx < nseq; idx++) + for (tpos = 0; tpos < tr[idx]->tlen; tpos++) + { + pos = tr[idx]->pos[tpos]; + sym = (int) dsq[idx][tr[idx]->pos[tpos]]; + k = tr[idx]->nodeidx[tpos]; + + /* Counts: how many times did we use this model position 1..M? + * (weighted) + */ + if (tr[idx]->statetype[tpos] == STM || tr[idx]->statetype[tpos] == STD) + counts[k] += wgt[idx]; + + /* Emission scores. + */ + if (tr[idx]->statetype[tpos] == STM) + pernode[k] += wgt[idx] * Scorify(hmm->msc[sym][k]); + else if (tr[idx]->statetype[tpos] == STI) + pernode[k] += wgt[idx] * Scorify(hmm->isc[sym][k]); + + /* Transition scores. + */ + if (tr[idx]->statetype[tpos] == STM || + tr[idx]->statetype[tpos] == STD || + tr[idx]->statetype[tpos] == STI) + pernode[k] += wgt[idx] * + Scorify(TransitionScoreLookup(hmm, tr[idx]->statetype[tpos], tr[idx]->nodeidx[tpos], + tr[idx]->statetype[tpos+1],tr[idx]->nodeidx[tpos+1])); + } + + /* Divide accumulated scores by accumulated weighted counts + */ + avg = 0.; + for (k = 1; k <= hmm->M; k++) + { + pernode[k] /= counts[k]; + avg += pernode[k]; + } + + free(counts); + *ret_avg = avg; + return; +} + + +/* Function: frag_trace_score() + * Date: SRE, Wed Dec 31 10:03:47 1997 [StL] + * + * Purpose: Allow MD/ME optimization to be used for alignments + * that include fragments and multihits -- estimate a full-length + * per-domain score. + * + * + * + * Return: "corrected" score. + */ +static float +frag_trace_score(struct plan7_s *hmm, char *dsq, struct p7trace_s *tr, + float *pernode, float expected) +{ + float sc; /* corrected score */ + float fragexp; /* expected score for a trace like this */ + int tpos; /* position in trace */ + + /* get uncorrected score */ + sc = P7TraceScore(hmm, dsq, tr); + + /* calc expected score for trace like this */ + fragexp = 0.; + for (tpos = 0; tpos < tr->tlen; tpos++) + if (tr->statetype[tpos] == STM || tr->statetype[tpos] == STD) + fragexp += pernode[tr->nodeidx[tpos]]; + + /* correct for multihits */ + fragexp /= (float) TraceDomainNumber(tr); + + /* extrapolate to full-length, one-hit score */ + sc = sc * expected / fragexp; + return sc; +} + + +/* Function: maximum_entropy() + * Date: SRE, Fri Jan 2 10:56:00 1998 [StL] + * + * Purpose: Optimizes a model according to maximum entropy weighting. + * See Krogh and Mitchison (1995). + * + * [Actually, we do minimum relative entropy, rather than + * maximum entropy. Same thing, though we refer to "ME" + * weights and models. The optimization is a steepest + * descents minimization of the relative entropy.] + * + * Expects to be called shortly after a Maxmodelmaker() + * or Handmodelmaker(), so that both a new model architecture + * (with MAP parameters) and fake tracebacks are available. + * + * Prints a summary of optimization progress to stdout. + * + * Args: hmm - model. allocated, set with initial MAP parameters. + * dsq - dealigned digitized seqs the model is based on + * ainfo - extra info for aseqs + * nseq - number of aseqs + * eff_nseq- effective sequence number; weights normalize up to this. + * prior - prior distributions for parameterizing model + * tr - array of fake traces for each sequence + * + * Return: (void) + * hmm changed to an ME HMM + * ainfo changed, contains ME weights + */ +static void +maximum_entropy(struct plan7_s *hmm, char **dsq, AINFO *ainfo, int nseq, + float eff_nseq, struct p7prior_s *prior, struct p7trace_s **tr) +{ + float *wgt; /* current best set of ME weights */ + float *new_wgt; /* new set of ME weights to try */ + float *sc; /* log-odds score of each sequence */ + float *grad; /* gradient */ + float epsilon; /* steepness of descent */ + float relative_entropy; /* current best relative entropy */ + float new_entropy; /* relative entropy at new weights */ + float last_new_entropy; /* last new_entropy we calc'ed */ + float use_epsilon; /* current epsilon value in use */ + int idx; /* counter over sequences */ + int i1, i2; /* counters for iterations */ + + float converge_criterion; + float minw, maxw; /* min, max weight */ + int posw, highw; /* number of positive weights */ + float mins, maxs, avgs; /* min, max, avg score */ + float *pernode; /* expected score per node of HMM */ + float expscore; /* expected score of complete HMM */ + int max_iter; /* bulletproof against infinite loop bugs */ + + epsilon = 0.2; /* works fine */ + max_iter = 666; + + /* Allocations + */ + sc = MallocOrDie (sizeof(float) * nseq); + wgt = MallocOrDie (sizeof(float) * nseq); + new_wgt = MallocOrDie (sizeof(float) * nseq); + grad = MallocOrDie (sizeof(float) * nseq); + pernode = MallocOrDie (sizeof(float) * (hmm->M+1)); + + /* Initialization. Start with all weights == 1.0. + * Find relative entropy and gradient. + */ + Plan7SWConfig(hmm, 0.5, 0.5); + P7Logoddsify(hmm, TRUE); + + FSet(wgt, nseq, 1.0); + position_average_score(hmm, dsq, wgt, nseq, tr, pernode, &expscore); + for (idx = 0; idx < nseq; idx++) + sc[idx] = frag_trace_score(hmm, dsq[idx], tr[idx], pernode, expscore); + relative_entropy = FSum(sc, nseq) / (float) nseq; + for (idx = 0; idx < nseq; idx++) + grad[idx] = relative_entropy - sc[idx]; + + + /* + * printf statements commented out: + * + * printf("iter avg-sc min-sc max-sc min-wgt max-wgt +wgt ++wgt rel.ent convergence\n"); + * printf("---- ------ ------ ------ ------- ------- ---- ----- ------- -----------\n"); + * + */ + mins = maxs = avgs = sc[0]; + for (idx = 1; idx < nseq; idx++) + { + if (sc[idx] < mins) mins = sc[idx]; + if (sc[idx] > maxs) maxs = sc[idx]; + avgs += sc[idx]; + } + avgs /= nseq; + + /* + * printf statement commented out: + * + * printf("%4d %6.1f %6.1f %6.1f %7.2f %7.2f %4d %5d %7.2f %8s\n", + * 0, avgs, mins, maxs, 1.0, 1.0, nseq, 0, relative_entropy, "-"); + * + */ + + + /* Steepest descents optimization; + * iterate until relative entropy converges. + */ + i1 = 0; + while (++i1 < max_iter) + { + /* Gradient gives us a line of steepest descents. + * (Roughly speaking, anyway. We actually have a constraint + * that weights are nonnegative and normalized, and the + * gradient doesn't take these into account.) + * Look along this line, a distance of epsilon * gradient: + * if new point is better, accept; if new point is worse, + * move back along the line by half the distance and re-evaluate. + */ + use_epsilon = epsilon; + new_entropy = relative_entropy + 1.0; /* just ensure new > old */ + + i2 = 0; + while (new_entropy > relative_entropy && ++i2 < max_iter) + { + last_new_entropy = new_entropy; + + /* find a new point in weight space */ + for (idx = 0; idx < nseq; idx++) + { + new_wgt[idx] = wgt[idx] + use_epsilon * grad[idx]; + if (new_wgt[idx] < 0.) new_wgt[idx] = 0.0; + } + FNorm(new_wgt, nseq); + FScale(new_wgt, nseq, (float) nseq); + + /* Make new HMM using these weights */ + ZeroPlan7(hmm); + for (idx = 0; idx < nseq; idx++) + P7TraceCount(hmm, dsq[idx], new_wgt[idx], tr[idx]); + P7PriorifyHMM(hmm, prior); + + + /* Evaluate new point */ + Plan7SWConfig(hmm, 0.5, 0.5); + P7Logoddsify(hmm, TRUE); + position_average_score(hmm, dsq, new_wgt, nseq, tr, pernode, &expscore); + for (idx = 0; idx < nseq; idx++) + sc[idx] = frag_trace_score(hmm, dsq[idx], tr[idx], pernode, expscore); + new_entropy = FDot(sc, new_wgt, nseq) / nseq; + + use_epsilon /= 2.0; + /* Failsafe: we're not converging. Set epsilon to zero, + * do one more round. + */ + if (use_epsilon < 1e-6) use_epsilon = 0.0; + if (use_epsilon == 0.0) break; + + /* Failsafe: avoid infinite loops. Sometimes the + new entropy converges without ever being better + than the previous point, probably as a result + of minor roundoff error. */ + if (last_new_entropy == new_entropy) break; + } + /* + * printf statement commented out: + * + * if (i2 == max_iter) printf(" -- exceeded maximum iterations; giving up --\n"); + * + */ + + /* Evaluate convergence before accepting the new weights; + * then, accept the new point and evaluate the gradient there. + */ + converge_criterion = fabs((relative_entropy-new_entropy)/relative_entropy); + relative_entropy = new_entropy; + FCopy(wgt, new_wgt, nseq); + for (idx = 0; idx < nseq; idx++) + grad[idx] = relative_entropy - sc[idx]; + + /* Print some statistics about this iteration + */ + mins = maxs = avgs = sc[0]; + minw = maxw = wgt[0]; + posw = (wgt[0] > 0.0) ? 1 : 0; + highw = (wgt[0] > 1.0) ? 1 : 0; + for (idx = 1; idx < nseq; idx++) + { + if (sc[idx] < mins) mins = sc[idx]; + if (sc[idx] > maxs) maxs = sc[idx]; + if (wgt[idx] < minw) minw = wgt[idx]; + if (wgt[idx] > maxw) maxw = wgt[idx]; + if (wgt[idx] > 0.0) posw++; + if (wgt[idx] > 1.0) highw++; + avgs += sc[idx]; + } + avgs /= nseq; + + + /* + * printf statement commented out: + * + * printf("%4d %6.1f %6.1f %6.1f %7.2f %7.2f %4d %5d %7.2f %8.5f\n", + * i1, + * avgs, mins, maxs, + * minw, maxw, posw, highw, + * relative_entropy, converge_criterion); + * + */ + + if (converge_criterion < 1e-5) break; + } + /* + * printf statement commented out: + * + * if (i1 == max_iter) printf(" -- exceeded maximum iterations; giving up --\n"); + * + */ + + /* Renormalize weights to sum to eff_nseq, and save. + */ + FNorm(wgt, nseq); + FScale(wgt, nseq, (float) eff_nseq); + FCopy(ainfo->wgt, wgt, nseq); + /* Make final HMM using these adjusted weights */ + ZeroPlan7(hmm); + for (idx = 0; idx < nseq; idx++) + P7TraceCount(hmm, dsq[idx], wgt[idx], tr[idx]); + P7PriorifyHMM(hmm, prior); + + /* Cleanup and return + */ + free(pernode); + free(new_wgt); + free(grad); + free(wgt); + free(sc); + return; +} diff --git a/forester/archive/RIO/others/hmmer/src/hmmsearch-pvm.c b/forester/archive/RIO/others/hmmer/src/hmmsearch-pvm.c new file mode 100644 index 0000000..7acde9b --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmsearch-pvm.c @@ -0,0 +1,180 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +#ifdef HMMER_PVM + +/* hmmsearch-pvm.c + * SRE, Wed Sep 23 09:30:53 1998 + * + * PVM slave for hmmsearch. + * RCS $Id: hmmsearch-pvm.c,v 1.1.1.1 2005/03/22 08:34:12 cmzmasek Exp $ + */ + +#include +#include +#include +#include + +#include "version.h" +#include "structs.h" /* data structures, macros, #define's */ +#include "config.h" /* compile-time configuration constants */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "squid.h" /* general sequence analysis library */ + +static void leave_pvm(void); + +int +main(void) +{ + struct plan7_s *hmm; /* HMM to search with */ + struct p7trace_s *tr; /* trace structure for a Viterbi alignment */ + int master_tid; /* PVM TID of our master */ + int alphatype; /* alphabet type */ + int code; /* status code for whether we're ok */ + int my_idx; /* my slave index: 0..nslaves-1, master assigns */ + int L; /* length of sequence */ + char *dsq; /* digitized sequence 1..L */ + float sc; /* log odds score for seq + HMM */ + double pvalue; /* P-value of sc */ + double evalue; /* bounded E-value of sc (we don't know nseq yet) */ + int do_forward; /* TRUE to score using Forward() */ + int do_null2; /* TRUE to use null2 ad hoc correction */ + float globT; /* T parameter: keep only hits > globT bits */ + double globE; /* E parameter: keep hits < globE E-value */ + int Z; /* nseq to base E value calculation on */ + int nseq; /* actual nseq so far (master keeps updating this) */ + int send_trace; /* TRUE if sc looks significant and we return tr */ + + /* Register leave_pvm() cleanup function so any exit() call + * first calls pvm_exit(). + */ + if (atexit(leave_pvm) != 0) { pvm_exit(); Die("slave couldn't register leave_pvm()"); } + + /***************************************************************** + * Initialization. + * Master broadcasts the problem to us: + * globT, globE, Z, do_forward, do_null2, alphabet type, HMM, + ******************************************************************/ + + master_tid = pvm_parent(); /* who's our master? */ + my_idx = -1; + + /* wait for a HMMPVM_INIT message, and unpack it; + * get options, set alphabet type, get HMM. + */ + pvm_recv(master_tid, HMMPVM_INIT); + pvm_upkfloat(&globT, 1, 1); + pvm_upkdouble(&globE, 1, 1); + pvm_upkint(&Z, 1, 1); + pvm_upkint(&do_forward, 1, 1); + pvm_upkint(&do_null2, 1, 1); + pvm_upkint(&alphatype, 1, 1); + SetAlphabet(alphatype); + hmm = PVMUnpackHMM(); + + P7Logoddsify(hmm, TRUE); + + /* tell the master we're OK and ready to go (or not) + */ + code = HMMPVM_OK; + if (hmm == NULL) code = HMMPVM_BAD_INIT; + pvm_initsend(PvmDataDefault); + pvm_pkint(&code, 1, 1); + PVMPackString(RELEASE); + pvm_send(master_tid, HMMPVM_RESULTS); + + /***************************************************************** + * Main loop. + * Receive a digitized sequence to search against. + *****************************************************************/ + + for (;;) + { + SQD_DPRINTF1(("Slave about to do a blocking receive, waiting for input.\n")); + pvm_recv(master_tid, HMMPVM_WORK); + pvm_upkint(&nseq, 1, 1); + if (nseq == -1) break; /* shutdown signal */ + if (my_idx == -1) my_idx = nseq; + pvm_upkint(&L, 1, 1); + SQD_DPRINTF1(("Slave received nseq=%d L=%d my_idx=%d\n", nseq, L, my_idx)); + dsq = MallocOrDie(sizeof(char) * (L + 2)); + pvm_upkbyte(dsq, L+2, 1); + SQD_DPRINTF1(("Slave unpacked a seq of %d bytes; beginning processing\n", L+2)); + + /* Score sequence, do alignment (Viterbi), recover trace + */ + if (P7ViterbiSize(L, hmm->M) <= RAMLIMIT) + { + SQD_DPRINTF1(("Slave doing Viterbi after estimating %d MB\n", (P7ViterbiSize(L, hmm->M)))); + sc = P7Viterbi(dsq, L, hmm, &tr); + } + else + { + SQD_DPRINTF1(("Slave going small after estimating %d MB\n", (P7ViterbiSize(L, hmm->M)))); + sc = P7SmallViterbi(dsq, L, hmm, &tr); + } + + if (do_forward) sc = P7Forward(dsq, L, hmm, NULL); + if (do_null2) sc -= TraceScoreCorrection(hmm, tr, dsq); + + pvalue = PValue(hmm, sc); + evalue = Z ? (double) Z * pvalue : (double) nseq * pvalue; + send_trace = (sc >= globT && evalue <= globE) ? 1 : 0; + + /* return output + */ + SQD_DPRINTF1(("Slave has a result (sc = %.1f); sending back to master\n", sc)); + pvm_initsend(PvmDataDefault); + pvm_pkint (&my_idx, 1, 1); + pvm_pkfloat (&sc, 1, 1); + pvm_pkdouble(&pvalue, 1, 1); + pvm_pkint(&send_trace, 1, 1); /* flag for whether a trace structure is coming */ + if (send_trace) PVMPackTrace(tr); + pvm_send(master_tid, HMMPVM_RESULTS); + + /* cleanup + */ + free(dsq); + P7FreeTrace(tr); + } + + /*********************************************** + * Cleanup, return. + ***********************************************/ + + SQD_DPRINTF1(("Slave is done; performing a normal exit.\n")); + FreePlan7(hmm); + exit(0); /* pvm_exit() gets called by atexit() registration. */ +} + +/* Function: leave_pvm() + * + * Purpose: Cleanup function, to deal with crashes. We register + * this function using atexit() so it gets called before + * the slave dies. + */ +void leave_pvm(void) +{ + SQD_DPRINTF1(("slave leaving PVM.\n")); + pvm_exit(); +} + + +#else /* if HMMER_PVM not defined: include a dummy */ + +#include +int main(void) +{ + printf("hmmsearch-pvm is disabled. PVM support was not compiled into HMMER.\n"); + exit(0); +} + +#endif diff --git a/forester/archive/RIO/others/hmmer/src/hmmsearch.c b/forester/archive/RIO/others/hmmer/src/hmmsearch.c new file mode 100644 index 0000000..1c5ba7a --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/hmmsearch.c @@ -0,0 +1,1101 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* hmmsearch.c + * SRE, Tue Jan 7 17:19:20 1997 [St. Louis] + * + * Search a sequence database with a profile HMM. + * Conditionally includes PVM parallelization when HMMER_PVM is defined + * at compile time; hmmsearch --pvm runs the PVM version. + * + * CVS $Id: hmmsearch.c,v 1.1.1.1 2005/03/22 08:34:05 cmzmasek Exp $ + */ + +#include +#include +#include +#include +#include +#ifdef HMMER_THREADS +#include +#endif +#ifdef HMMER_PVM +#include +#endif + +#include "squid.h" /* general sequence analysis library */ +#include "config.h" /* compile-time configuration constants */ +#include "structs.h" /* data structures, macros, #define's */ +#include "funcs.h" /* function declarations */ +#include "globals.h" /* alphabet global variables */ +#include "version.h" /* version info */ + +static char banner[] = "hmmsearch - search a sequence database with a profile HMM"; + +static char usage[] = "\ +Usage: hmmsearch [-options] \n\ + Available options are:\n\ + -h : help; print brief help on version and usage\n\ + -A : sets alignment output limit to best domain alignments\n\ + -E : sets E value cutoff (globE) to <= x\n\ + -T : sets T bit threshold (globT) to >= x\n\ + -Z : sets Z (# seqs) for E-value calculation\n\ +"; + +static char experts[] = "\ + --compat : make best effort to use last version's output style\n\ + --cpu : run threads in parallel (if threaded)\n\ + --cut_ga : use Pfam GA gathering threshold cutoffs\n\ + --cut_nc : use Pfam NC noise threshold cutoffs\n\ + --cut_tc : use Pfam TC trusted threshold cutoffs\n\ + --domE : sets domain Eval cutoff (2nd threshold) to <= x\n\ + --domT : sets domain T bit thresh (2nd threshold) to >= x\n\ + --forward : use the full Forward() algorithm instead of Viterbi\n\ + --informat : sequence file is in format , not FASTA\n\ + --null2 : turn OFF the post hoc second null model\n\ + --pvm : run on a Parallel Virtual Machine (PVM)\n\ + --xnu : turn ON XNU filtering of target protein sequences\n\ +"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-A", TRUE, sqdARG_INT }, + { "-E", TRUE, sqdARG_FLOAT}, + { "-T", TRUE, sqdARG_FLOAT}, + { "-Z", TRUE, sqdARG_INT }, + { "--compat", FALSE, sqdARG_NONE }, + { "--cpu", FALSE, sqdARG_INT }, + { "--cut_ga", FALSE, sqdARG_NONE }, + { "--cut_nc", FALSE, sqdARG_NONE }, + { "--cut_tc", FALSE, sqdARG_NONE }, + { "--domE", FALSE, sqdARG_FLOAT}, + { "--domT", FALSE, sqdARG_FLOAT}, + { "--forward", FALSE, sqdARG_NONE }, + { "--informat",FALSE, sqdARG_STRING}, + { "--null2", FALSE, sqdARG_NONE }, + { "--pvm", FALSE, sqdARG_NONE }, + { "--xnu", FALSE, sqdARG_NONE }, + +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + + +#ifdef HMMER_THREADS +/* POSIX threads version: + * the threads share a workpool_s structure amongst themselves, + * for obtaining locks on input HMM file and output histogram and + * tophits structures. + */ +struct workpool_s { + /* Shared configuration resources which don't change: + */ + struct plan7_s *hmm; /* HMM to search with */ + int do_xnu; /* TRUE to apply XNU filter */ + int do_forward; /* TRUE to score using Forward */ + int do_null2; /* TRUE to apply null2 ad hoc correction */ + struct threshold_s *thresh; /* score/evalue threshold info */ + + /* Shared (mutex-protected) input resources: + */ + SQFILE *sqfp; /* ptr to open sequence file */ + int nseq; /* number of seqs searched so far */ + pthread_mutex_t input_lock; /* mutex for locking input */ + + /* Shared (mutex-protected) output resources: + */ + struct tophit_s *ghit; /* per-sequence top hits */ + struct tophit_s *dhit; /* per-domain top hits */ + struct histogram_s *hist; /* histogram of scores */ + pthread_mutex_t output_lock; /* mutex for locking output */ + + /* Thread pool information + */ + pthread_t *thread; /* our pool of threads */ + int num_threads; /* number of threads */ +}; +static struct workpool_s *workpool_start(struct plan7_s *hmm, SQFILE *sqfp, + int do_xnu, int do_forward, int do_null2, + struct threshold_s *thresh, + struct tophit_s *ghit, struct tophit_s *dhit, + struct histogram_s *hist, int num_threads); +static void workpool_stop(struct workpool_s *wpool); +static void workpool_free(struct workpool_s *wpool); +static void *worker_thread(void *ptr); +#endif /* HMMER_THREADS */ + +static void main_loop_serial(struct plan7_s *hmm, SQFILE *sqfp, struct threshold_s *thresh, int do_forward, + int do_null2, int do_xnu, int num_threads, + struct histogram_s *histogram, struct tophit_s *ghit, + struct tophit_s *dhit, int *ret_nseq); +#ifdef HMMER_PVM +static void main_loop_pvm(struct plan7_s *hmm, SQFILE *sqfp, struct threshold_s *thresh, int do_forward, + int do_null2, int do_xnu, struct histogram_s *histogram, + struct tophit_s *ghit, struct tophit_s *dhit, int *ret_nseq); +#endif + + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMM(s) from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + char *seqfile; /* file to read target sequence(s) from */ + SQFILE *sqfp; /* opened seqfile for reading */ + int format; /* format of seqfile */ + int i; + struct plan7_s *hmm; /* HMM to search with */ + struct histogram_s *histogram;/* histogram of all scores */ + struct fancyali_s *ali; /* displayed alignment info */ + struct tophit_s *ghit; /* list of top hits for whole sequences */ + struct tophit_s *dhit; /* list of top hits for domains */ + + float sc; /* score of an HMM search */ + double pvalue; /* pvalue of an HMM score */ + double evalue; /* evalue of an HMM score */ + double motherp; /* pvalue of a whole seq HMM score */ + float mothersc; /* score of a whole seq parent of domain */ + int sqfrom, sqto; /* coordinates in sequence */ + int hmmfrom, hmmto; /* coordinate in HMM */ + char *name, *acc, *desc; /* hit sequence name and description */ + int sqlen; /* length of seq that was hit */ + int nseq; /* number of sequences searched */ + int Z; /* # of seqs for purposes of E-val calc */ + int domidx; /* number of this domain */ + int ndom; /* total # of domains in this seq */ + int namewidth; /* max width of sequence name */ + int descwidth; /* max width of description */ + int nreported; /* # of hits reported in a list */ + + int Alimit; /* A parameter limiting output alignments */ + struct threshold_s thresh; /* contains all threshold (cutoff) info */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + int do_null2; /* TRUE to adjust scores with null model #2 */ + int do_forward; /* TRUE to use Forward() not Viterbi() */ + int do_xnu; /* TRUE to filter sequences thru XNU */ + int do_pvm; /* TRUE to run on Parallel Virtual Machine */ + int be_backwards; /* TRUE to be backwards-compatible in output*/ + int num_threads; /* number of worker threads */ + + /*********************************************** + * Parse command line + ***********************************************/ + + format = SQFILE_UNKNOWN; /* default: autodetect seq file format w/ Babelfish */ + do_forward = FALSE; + do_null2 = TRUE; + do_xnu = FALSE; + do_pvm = FALSE; + Z = 0; + be_backwards= FALSE; + + Alimit = INT_MAX; /* no limit on alignment output */ + thresh.globE = 10.0; /* use a reasonable Eval threshold; */ + thresh.globT = -FLT_MAX; /* but no bit threshold, */ + thresh.domT = -FLT_MAX; /* no domain bit threshold, */ + thresh.domE = FLT_MAX; /* and no domain Eval threshold. */ + thresh.autocut = CUT_NONE; /* and no Pfam cutoffs used */ + thresh.Z = 0; /* Z not preset; use actual # of seqs */ + +#ifdef HMMER_THREADS + num_threads = ThreadNumber(); /* only matters if we're threaded */ +#else + num_threads = 0; +#endif + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-A") == 0) Alimit = atoi(optarg); + else if (strcmp(optname, "-E") == 0) thresh.globE = atof(optarg); + else if (strcmp(optname, "-T") == 0) thresh.globT = atof(optarg); + else if (strcmp(optname, "-Z") == 0) thresh.Z = atoi(optarg); + else if (strcmp(optname, "--compat") == 0) be_backwards = TRUE; + else if (strcmp(optname, "--cpu") == 0) num_threads = atoi(optarg); + else if (strcmp(optname, "--cut_ga") == 0) thresh.autocut = CUT_GA; + else if (strcmp(optname, "--cut_nc") == 0) thresh.autocut = CUT_NC; + else if (strcmp(optname, "--cut_tc") == 0) thresh.autocut = CUT_TC; + else if (strcmp(optname, "--domE") == 0) thresh.domE = atof(optarg); + else if (strcmp(optname, "--domT") == 0) thresh.domT = atof(optarg); + else if (strcmp(optname, "--forward") == 0) do_forward = TRUE; + else if (strcmp(optname, "--null2") == 0) do_null2 = FALSE; + else if (strcmp(optname, "--pvm") == 0) do_pvm = TRUE; + else if (strcmp(optname, "--xnu") == 0) do_xnu = TRUE; + else if (strcmp(optname, "--informat") == 0) { + format = String2SeqfileFormat(optarg); + if (format == SQFILE_UNKNOWN) + Die("unrecognized sequence file format \"%s\"", optarg); + } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 2) + Die("Incorrect number of arguments.\n%s\n", usage); + + hmmfile = argv[optind++]; + seqfile = argv[optind++]; + +#ifndef HMMER_PVM + if (do_pvm) Die("PVM support is not compiled into your HMMER software; --pvm doesn't work."); +#endif +#ifndef HMMER_THREADS + if (num_threads) Die("Posix threads support is not compiled into HMMER; --cpu doesn't have any effect"); +#endif + + + /*********************************************** + * Open sequence database (might be in BLASTDB or current directory) + ***********************************************/ + + if ((sqfp = SeqfileOpen(seqfile, format, "BLASTDB")) == NULL) + Die("Failed to open sequence database file %s\n%s\n", seqfile, usage); + + /*********************************************** + * Open HMM file (might be in HMMERDB or current directory). + * Read a single HMM from it. (Config HMM, if necessary). + * Alphabet globals are set by reading the HMM. + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, "HMMERDB")) == NULL) + Die("Failed to open HMM file %s\n%s", hmmfile, usage); + if (!HMMFileRead(hmmfp, &hmm)) + Die("Failed to read any HMMs from %s\n", hmmfile); + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", hmmfile); + P7Logoddsify(hmm, !do_forward); + + if (do_xnu && Alphabet_type == hmmNUCLEIC) + Die("The HMM is a DNA model, and you can't use the --xnu filter on DNA data"); + + /***************************************************************** + * Set up optional Pfam score thresholds. + * Can do this before starting any searches, since we'll only use 1 HMM. + *****************************************************************/ + + if (! SetAutocuts(&thresh, hmm)) + Die("HMM %s did not contain the GA, TC, or NC cutoffs you needed", + hmm->name); + + /*********************************************** + * Show the banner + ***********************************************/ + + Banner(stdout, banner); + printf( "HMM file: %s [%s]\n", hmmfile, hmm->name); + printf( "Sequence database: %s\n", seqfile); + if (do_pvm) + printf( "PVM: ACTIVE\n"); + printf( "per-sequence score cutoff: "); + if (thresh.globT == -FLT_MAX) printf("[none]\n"); + else { + printf(">= %.1f", thresh.globT); + if (thresh.autocut == CUT_GA) printf(" [GA1]\n"); + else if (thresh.autocut == CUT_NC) printf(" [NC1]\n"); + else if (thresh.autocut == CUT_TC) printf(" [TC1]\n"); + else printf("\n"); + } + printf( "per-domain score cutoff: "); + if (thresh.domT == -FLT_MAX) printf("[none]\n"); + else { + printf(">= %.1f", thresh.domT); + if (thresh.autocut == CUT_GA) printf(" [GA2]\n"); + else if (thresh.autocut == CUT_NC) printf(" [NC2]\n"); + else if (thresh.autocut == CUT_TC) printf(" [TC2]\n"); + else printf("\n"); + } + printf( "per-sequence Eval cutoff: "); + if (thresh.globE == FLT_MAX) printf("[none]\n"); + else printf("<= %-10.2g\n", thresh.globE); + + printf( "per-domain Eval cutoff: "); + if (thresh.domE == FLT_MAX) printf("[none]\n"); + else printf("<= %10.2g\n", thresh.domE); + printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); + + /*********************************************** + * Search HMM against each sequence + ***********************************************/ + + /* set up structures for storing output */ + histogram = AllocHistogram(-200, 200, 100); /* keeps full histogram */ + ghit = AllocTophits(200); /* per-seq hits: 200=lumpsize */ + dhit = AllocTophits(200); /* domain hits: 200=lumpsize */ + + if (! do_pvm) + main_loop_serial(hmm, sqfp, &thresh, do_forward, do_null2, do_xnu, num_threads, + histogram, ghit, dhit, &nseq); +#ifdef HMMER_PVM + else + main_loop_pvm(hmm, sqfp, &thresh, do_forward, do_null2, do_xnu, + histogram, ghit, dhit, &nseq); +#endif + + /*********************************************** + * Process hit lists, produce text output + ***********************************************/ + + /* Set the theoretical EVD curve in our histogram using + * calibration in the HMM, if available. + */ + if (hmm->flags & PLAN7_STATS) + ExtremeValueSetHistogram(histogram, hmm->mu, hmm->lambda, + histogram->lowscore, histogram->highscore, 0); + if (!thresh.Z) thresh.Z = nseq; /* set Z for good now that we're done. */ + + /* Format and report our output + */ + /* 1. Report overall sequence hits (sorted on E-value) */ + if (be_backwards) + { + printf("\nQuery HMM: %s|%s|%s\n", + hmm->name, + hmm->flags & PLAN7_ACC ? hmm->acc : "", + hmm->flags & PLAN7_DESC ? hmm->desc : ""); + } + else + { + printf("\nQuery HMM: %s\n", hmm->name); + printf("Accession: %s\n", hmm->flags & PLAN7_ACC ? hmm->acc : "[none]"); + printf("Description: %s\n", hmm->flags & PLAN7_DESC ? hmm->desc : "[none]"); + } + + if (hmm->flags & PLAN7_STATS) + printf(" [HMM has been calibrated; E-values are empirical estimates]\n"); + else + printf(" [No calibration for HMM; E-values are upper bounds]\n"); + + FullSortTophits(ghit); + namewidth = MAX(8, TophitsMaxName(ghit)); /* cannot truncate name. */ + descwidth = MAX(52-namewidth, 11);/* may truncate desc, but need strlen("Description") */ + + printf("\nScores for complete sequences (score includes all domains):\n"); + printf("%-*s %-*s %7s %10s %3s\n", namewidth, "Sequence", descwidth, "Description", "Score", "E-value", " N "); + printf("%-*s %-*s %7s %10s %3s\n", namewidth, "--------", descwidth, "-----------", "-----", "-------", "---"); + for (i = 0, nreported = 0; i < ghit->num; i++) + { + char *safedesc; + GetRankedHit(ghit, i, + &pvalue, &sc, NULL, NULL, + &name, NULL, &desc, + NULL, NULL, NULL, /* sequence positions */ + NULL, NULL, NULL, /* HMM positions */ + NULL, &ndom, /* domain info */ + NULL); /* alignment info */ + evalue = pvalue * (double) thresh.Z; + + /* safedesc is a workaround for an apparent Linux printf() + * bug with the *.*s format. dbmalloc crashes with a memchr() ptr out of bounds + * flaw if the malloc'ed space for desc is short. The workaround + * is to make sure the ptr for *.* has a big malloc space. + */ + if (desc != NULL && strlen(desc) < 80) + { + safedesc = MallocOrDie(sizeof(char) * 80); + strcpy(safedesc, desc); + } + else safedesc = Strdup(desc); + + if (evalue <= thresh.globE && sc >= thresh.globT) { + printf("%-*s %-*.*s %7.1f %10.2g %3d\n", + namewidth, name, + descwidth, descwidth, safedesc != NULL ? safedesc : "", + sc, evalue, ndom); + nreported++; + } + free(safedesc); + } + if (nreported == 0) printf("\t[no hits above thresholds]\n"); + + + /* 2. Report domain hits (also sorted on E-value) */ + FullSortTophits(dhit); + namewidth = MAX(8, TophitsMaxName(dhit)); + + printf("\nParsed for domains:\n"); + printf("%-*s %7s %5s %5s %5s %5s %7s %8s\n", + namewidth, "Sequence", "Domain ", "seq-f", "seq-t", "hmm-f", "hmm-t", "score", "E-value"); + printf("%-*s %7s %5s %5s %5s %5s %7s %8s\n", + namewidth, "--------", "-------", "-----", "-----", "-----", "-----", "-----", "-------"); + + for (i = 0, nreported = 0; i < dhit->num; i++) + { + GetRankedHit(dhit, i, + &pvalue, &sc, &motherp, &mothersc, + &name, NULL, NULL, + &sqfrom, &sqto, &sqlen, /* seq position info */ + &hmmfrom, &hmmto, NULL, /* HMM position info */ + &domidx, &ndom, /* domain info */ + NULL); /* alignment info */ + evalue = pvalue * (double) thresh.Z; + + if (motherp * (double) thresh.Z > thresh.globE || mothersc < thresh.globT) + continue; + else if (evalue <= thresh.domE && sc >= thresh.domT) { + printf("%-*s %3d/%-3d %5d %5d %c%c %5d %5d %c%c %7.1f %8.2g\n", + namewidth, name, + domidx, ndom, + sqfrom, sqto, + sqfrom == 1 ? '[' : '.', sqto == sqlen ? ']' : '.', + hmmfrom, hmmto, + hmmfrom == 1 ? '[':'.', hmmto == hmm->M ? ']' : '.', + sc, evalue); + nreported++; + } + } + if (nreported == 0) printf("\t[no hits above thresholds]\n"); + + + /* 3. Alignment output, also by domain. + * dhits is already sorted and namewidth is set, from above code. + * Number of displayed alignments is limited by Alimit parameter; + * also by domE (evalue threshold), domT (score theshold). + */ + if (Alimit != 0) + { + printf("\nAlignments of top-scoring domains:\n"); + for (i = 0, nreported = 0; i < dhit->num; i++) + { + if (nreported == Alimit) break; /* limit to Alimit output alignments */ + GetRankedHit(dhit, i, + &pvalue, &sc, &motherp, &mothersc, + &name, NULL, NULL, + &sqfrom, &sqto, &sqlen, /* seq position info */ + &hmmfrom, &hmmto, NULL, /* HMM position info */ + &domidx, &ndom, /* domain info */ + &ali); /* alignment info */ + evalue = pvalue * (double) thresh.Z; + + if (motherp * (double) thresh.Z > thresh.globE || mothersc < thresh.globT) + continue; + else if (evalue <= thresh.domE && sc >= thresh.domT) + { + printf("%s: domain %d of %d, from %d to %d: score %.1f, E = %.2g\n", + name, domidx, ndom, sqfrom, sqto, sc, evalue); + PrintFancyAli(stdout, ali); + nreported++; + } + } + if (nreported == 0) printf("\t[no hits above thresholds]\n"); + if (nreported == Alimit) printf("\t[output cut off at A = %d top alignments]\n", Alimit); + } + + /* 4. Histogram output */ + printf("\nHistogram of all scores:\n"); + PrintASCIIHistogram(stdout, histogram); + + /* 5. Tophits summaries, while developing... + */ + printf("\nTotal sequences searched: %d\n", nseq); + printf("\nWhole sequence top hits:\n"); + TophitsReport(ghit, thresh.globE, nseq); + printf("\nDomain top hits:\n"); + TophitsReport(dhit, thresh.domE, nseq); + + /*********************************************** + * Clean-up and exit. + ***********************************************/ + + FreeHistogram(histogram); + HMMFileClose(hmmfp); + SeqfileClose(sqfp); + FreeTophits(ghit); + FreeTophits(dhit); + FreePlan7(hmm); + SqdClean(); + + return 0; +} + + +/* Function: main_loop_serial() + * Date: SRE, Wed Sep 23 10:20:49 1998 [St. Louis] + * + * Purpose: Search an HMM against a sequence database. + * main loop for the serial (non-PVM, non-threads) + * version. + * + * In: HMM and open sqfile, plus options + * Out: histogram, global hits list, domain hits list, nseq. + * + * Args: hmm - the HMM to search with. + * sqfp - open SQFILE for sequence database + * thresh - score/evalue threshold info + * do_forward - TRUE to score using Forward() + * do_null2 - TRUE to use ad hoc null2 score correction + * do_xnu - TRUE to apply XNU mask + * num_threads- number of worker threads to start, or 0 + * histogram - RETURN: score histogram + * ghit - RETURN: ranked global scores + * dhit - RETURN: ranked domain scores + * ret_nseq - RETURN: actual number of seqs searched + * + * Returns: (void) + */ +static void +main_loop_serial(struct plan7_s *hmm, SQFILE *sqfp, struct threshold_s *thresh, int do_forward, + int do_null2, int do_xnu, int num_threads, + struct histogram_s *histogram, + struct tophit_s *ghit, struct tophit_s *dhit, int *ret_nseq) +{ +#ifdef HMMER_THREADS + struct workpool_s *wpool; /* pool of worker threads */ +#else + struct p7trace_s *tr; /* traceback */ + char *seq; /* target sequence */ + char *dsq; /* digitized target sequence */ + SQINFO sqinfo; /* optional info for seq */ + float sc; /* score of an HMM search */ + double pvalue; /* pvalue of an HMM score */ + double evalue; /* evalue of an HMM score */ +#endif + int nseq; /* number of sequences searched */ + +#ifdef HMMER_THREADS + wpool = workpool_start(hmm, sqfp, do_xnu, do_forward, do_null2, thresh, + ghit, dhit, histogram, num_threads); + workpool_stop(wpool); + nseq = wpool->nseq; + workpool_free(wpool); + +#else /* unthreaded code: */ + nseq = 0; + while (ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) + { + /* Silently skip length 0 seqs. + * What, you think this doesn't occur? Welcome to genomics, + * young grasshopper. + */ + if (sqinfo.len == 0) continue; + + nseq++; + dsq = DigitizeSequence(seq, sqinfo.len); + + if (do_xnu && Alphabet_type == hmmAMINO) XNU(dsq, sqinfo.len); + + /* 1. Recover a trace by Viterbi. + */ + if (P7ViterbiSize(sqinfo.len, hmm->M) <= RAMLIMIT) + sc = P7Viterbi(dsq, sqinfo.len, hmm, &tr); + else + sc = P7SmallViterbi(dsq, sqinfo.len, hmm, &tr); + + /* 2. If we're using Forward scores, calculate the + * whole sequence score; this overrides anything + * PostprocessSignificantHit() is going to do to the per-seq score. + */ + if (do_forward) { + sc = P7Forward(dsq, sqinfo.len, hmm, NULL); + if (do_null2) sc -= TraceScoreCorrection(hmm, tr, dsq); + } + +#if DEBUGLEVEL >= 2 + P7PrintTrace(stdout, tr, hmm, dsq); +#endif + + /* 2. Store score/pvalue for global alignment; will sort on score, + * which in hmmsearch is monotonic with E-value. + * Keep all domains in a significant sequence hit. + * We can only make a lower bound estimate of E-value since + * we don't know the final value of nseq yet, so the list + * of hits we keep in memory is >= the list we actually + * output. + */ + pvalue = PValue(hmm, sc); + evalue = thresh->Z ? (double) thresh->Z * pvalue : (double) nseq * pvalue; + if (sc >= thresh->globT && evalue <= thresh->globE) + { + PostprocessSignificantHit(ghit, dhit, + tr, hmm, dsq, sqinfo.len, + sqinfo.name, + sqinfo.flags & SQINFO_ACC ? sqinfo.acc : NULL, + sqinfo.flags & SQINFO_DESC ? sqinfo.desc : NULL, + do_forward, sc, + do_null2, + thresh, + FALSE); /* FALSE-> not hmmpfam mode, hmmsearch mode */ + } + AddToHistogram(histogram, sc); + FreeSequence(seq, &sqinfo); + P7FreeTrace(tr); + free(dsq); + } +#endif + + *ret_nseq = nseq; + return; +} + + + +#ifdef HMMER_PVM +/***************************************************************** + * PVM specific functions + ****************************************************************/ + +/* Function: main_loop_pvm() + * Date: SRE, Wed Sep 23 10:36:44 1998 [St. Louis] + * + * Purpose: Search an HMM against a sequence database. + * main loop for the PVM version. + * + * In: HMM and open sqfile, plus options + * Out: histogram, global hits list, domain hits list, nseq. + * + * Args: hmm - the HMM to search with. scoring form. + * sqfp - open SQFILE for sequence database + * thresh - score/evalue threshold information + * do_forward - TRUE to score using Forward() + * do_null2 - TRUE to use ad hoc null2 score correction + * do_xnu - TRUE to apply XNU mask + * histogram - RETURN: score histogram + * ghit - RETURN: ranked global scores + * dhit - RETURN: ranked domain scores + * ret_nseq - RETURN: actual number of seqs searched + * + * Returns: (void) + */ +static void +main_loop_pvm(struct plan7_s *hmm, SQFILE *sqfp, struct threshold_s *thresh, int do_forward, + int do_null2, int do_xnu, struct histogram_s *histogram, + struct tophit_s *ghit, struct tophit_s *dhit, int *ret_nseq) +{ + char *seq; /* target sequence */ + char *dsq; /* digitized target seq */ + SQINFO sqinfo; /* optional info about target seq */ + int master_tid; /* master's (my) PVM TID */ + int *slave_tid; /* array of slave TID's */ + int nslaves; /* number of slaves */ + int code; /* status code rec'd from a slave */ + int nseq; /* number of sequences searched */ + int sent_trace; /* TRUE if slave gave us a trace */ + char **dsqlist; /* remember what seqs slaves are doing */ + char **namelist; /* remember what seq names slaves are doing */ + char **acclist ; /* remember what seq accessions slaves are doing */ + char **desclist; /* remember what seq desc's slaves are doing */ + int *lenlist; /* remember lengths of seqs slaves are doing */ + int slaveidx; /* counter for slaves */ + float sc; /* score of an alignment */ + double pvalue; /* P-value of a score of an alignment */ + struct p7trace_s *tr; /* Viterbi traceback of an alignment */ + int i; /* generic counter */ + + /* Initialize PVM. + */ + SQD_DPRINTF1(("Requesting master TID...\n")); + master_tid = pvm_mytid(); +#if DEBUGLEVEL >= 1 + pvm_catchout(stderr); /* catch output for debugging */ +#endif + SQD_DPRINTF1(("Spawning slaves...\n")); + PVMSpawnSlaves("hmmsearch-pvm", &slave_tid, &nslaves); + SQD_DPRINTF1(("Spawned a total of %d slaves...\n", nslaves)); + + /* Initialize the slaves by broadcast. + */ + SQD_DPRINTF1(("Broadcasting to %d slaves...\n", nslaves)); + pvm_initsend(PvmDataDefault); + pvm_pkfloat(&(thresh->globT), 1, 1); + pvm_pkdouble(&(thresh->globE), 1, 1); + pvm_pkint(&(thresh->Z), 1, 1); + pvm_pkint(&do_forward, 1, 1); + pvm_pkint(&do_null2, 1, 1); + pvm_pkint(&Alphabet_type, 1, 1); + PVMPackHMM(hmm); + pvm_mcast(slave_tid, nslaves, HMMPVM_INIT); + SQD_DPRINTF1(("Slaves should be ready...\n")); + + /* Confirm slaves' OK status. + */ + PVMConfirmSlaves(slave_tid, nslaves); + SQD_DPRINTF1(("Slaves confirm that they're ok...\n")); + + /* Alloc arrays for remembering what seq each + * slave was working on. + */ + namelist = MallocOrDie(sizeof(char *) * nslaves); + acclist = MallocOrDie(sizeof(char *) * nslaves); + desclist = MallocOrDie(sizeof(char *) * nslaves); + dsqlist = MallocOrDie(sizeof(char *) * nslaves); + lenlist = MallocOrDie(sizeof(int) * nslaves); + + /* Load the slaves. + * Give them all a sequence number and a digitized sequence + * to work on. + * A side effect of the seq number is that we assign each slave + * a number from 0..nslaves-1. + */ + for (nseq = 0; nseq < nslaves; nseq++) + { + if (! ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) break; + if (sqinfo.len == 0) { nseq--; continue; } + + dsq = DigitizeSequence(seq, sqinfo.len); + if (do_xnu && Alphabet_type == hmmAMINO) XNU(dsq, sqinfo.len); + + pvm_initsend(PvmDataDefault); + pvm_pkint(&nseq, 1, 1); + pvm_pkint(&(sqinfo.len), 1, 1); + pvm_pkbyte(dsq, sqinfo.len+2, 1); + pvm_send(slave_tid[nseq], HMMPVM_WORK); + SQD_DPRINTF1(("sent a dsq : %d bytes\n", sqinfo.len+2)); + + namelist[nseq] = Strdup(sqinfo.name); + acclist[nseq] = (sqinfo.flags & SQINFO_ACC) ? Strdup(sqinfo.acc) : NULL; + desclist[nseq] = (sqinfo.flags & SQINFO_DESC) ? Strdup(sqinfo.desc) : NULL; + lenlist[nseq] = sqinfo.len; + dsqlist[nseq] = dsq; + + FreeSequence(seq, &sqinfo); + } + SQD_DPRINTF1(("%d slaves are loaded\n", nseq)); + + /* main receive/send loop + */ + while (ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) + { + if (sqinfo.len == 0) { continue; } + nseq++; + /* check slaves before blocking */ + PVMCheckSlaves(slave_tid, nslaves); + + /* receive output */ + SQD_DPRINTF1(("Waiting for a slave to give me output...\n")); + pvm_recv(-1, HMMPVM_RESULTS); + pvm_upkint(&slaveidx, 1, 1); /* # of slave who's sending us stuff */ + pvm_upkfloat(&sc, 1, 1); /* score */ + pvm_upkdouble(&pvalue, 1, 1); /* P-value */ + pvm_upkint(&sent_trace, 1, 1); /* TRUE if trace is coming */ + tr = (sent_trace) ? PVMUnpackTrace() : NULL; + SQD_DPRINTF1(("Slave %d finished %s for me...\n", slaveidx, namelist[slaveidx])); + + /* send new work */ + dsq = DigitizeSequence(seq, sqinfo.len); + if (do_xnu) XNU(dsq, sqinfo.len); + + pvm_initsend(PvmDataDefault); + pvm_pkint(&nseq, 1, 1); + pvm_pkint(&(sqinfo.len), 1, 1); + pvm_pkbyte(dsq, sqinfo.len+2, 1); + pvm_send(slave_tid[slaveidx], HMMPVM_WORK); + + /* process output */ + if (sent_trace) + { + PostprocessSignificantHit(ghit, dhit, + tr, hmm, dsqlist[slaveidx], lenlist[slaveidx], + namelist[slaveidx], acclist[slaveidx], desclist[slaveidx], + do_forward, sc, + do_null2, + thresh, + FALSE); /* FALSE-> not hmmpfam mode, hmmsearch mode */ + P7FreeTrace(tr); + } + AddToHistogram(histogram, sc); + + /* record seq info for seq we just sent */ + free(namelist[slaveidx]); + if (acclist[slaveidx] != NULL) free(acclist[slaveidx]); + if (desclist[slaveidx] != NULL) free(desclist[slaveidx]); + free(dsqlist[slaveidx]); + + dsqlist[slaveidx] = dsq; + namelist[slaveidx] = Strdup(sqinfo.name); + acclist[slaveidx] = (sqinfo.flags & SQINFO_ACC) ? Strdup(sqinfo.acc) : NULL; + desclist[slaveidx] = (sqinfo.flags & SQINFO_DESC) ? Strdup(sqinfo.desc) : NULL; + lenlist[slaveidx] = sqinfo.len; + + FreeSequence(seq, &sqinfo); + } + SQD_DPRINTF1(("End of receive/send loop\n")); + + /* Collect the output. All n slaves are still working. + */ + for (i = 0; i < nslaves && i < nseq; i++) + { + /* don't check slaves (they're exiting normally); + window of vulnerability here to slave crashes */ + /* receive output */ + pvm_recv(-1, HMMPVM_RESULTS); + pvm_upkint(&slaveidx, 1, 1); /* # of slave who's sending us stuff */ + pvm_upkfloat(&sc, 1, 1); /* score */ + pvm_upkdouble(&pvalue, 1, 1); /* P-value */ + pvm_upkint(&sent_trace, 1, 1); /* TRUE if trace is coming */ + tr = (sent_trace) ? PVMUnpackTrace() : NULL; + SQD_DPRINTF1(("Slave %d finished %s for me...\n", slaveidx, namelist[slaveidx])); + + /* process output */ + if (sent_trace) + { + PostprocessSignificantHit(ghit, dhit, + tr, hmm, dsqlist[slaveidx], lenlist[slaveidx], + namelist[slaveidx], acclist[slaveidx], desclist[slaveidx], + do_forward, sc, + do_null2, + thresh, + FALSE); /* FALSE-> not hmmpfam mode, hmmsearch mode */ + P7FreeTrace(tr); + } + AddToHistogram(histogram, sc); + + /* free seq info */ + free(namelist[slaveidx]); + if (acclist[slaveidx] != NULL) free(acclist[slaveidx]); + if (desclist[slaveidx] != NULL) free(desclist[slaveidx]); + free(dsqlist[slaveidx]); + + /* send cleanup/shutdown flag to slave */ + pvm_initsend(PvmDataDefault); + code = -1; + pvm_pkint(&code, 1, 1); + pvm_send(slave_tid[slaveidx], HMMPVM_WORK); + } + + + /* Cleanup; quit the VM; and return + */ + free(slave_tid); + free(dsqlist); + free(namelist); + free(acclist); + free(desclist); + free(lenlist); + pvm_exit(); + *ret_nseq = nseq; + return; +} +#endif /* HMMER_PVM */ + +#ifdef HMMER_THREADS +/***************************************************************** + * POSIX threads implementation. + * + * API: + * workpool_start() (makes a workpool_s structure. Starts calculations.) + * workpool_stop() (waits for threads to finish.) + * workpool_free() (destroys the structure) + * + * Threads: + * worker_thread() (the actual parallelized worker thread). + *****************************************************************/ + +/* Function: workpool_start() + * Date: SRE, Mon Oct 5 16:44:53 1998 + * + * Purpose: Initialize a workpool_s structure, and return it. + * + * Args: sqfp - open sequence file, at start + * do_xnu - TRUE to apply XNU filter + * do_forward - TRUE to score using Forward + * do_null2 - TRUE to apply null2 ad hoc correction + * thresh - score/evalue threshold info + * ghit - per-seq hit list + * dhit - per-domain hit list + * hist - histogram (alloced but empty) + * num_threads- number of worker threads to run. + * + * Returns: ptr to struct workpool_s. + * Caller must wait for threads to finish with workpool_stop(), + * then free the structure with workpool_free(). + */ +static struct workpool_s * +workpool_start(struct plan7_s *hmm, SQFILE *sqfp, int do_xnu, + int do_forward, int do_null2, struct threshold_s *thresh, + struct tophit_s *ghit, struct tophit_s *dhit, + struct histogram_s *hist, int num_threads) +{ + struct workpool_s *wpool; + pthread_attr_t attr; + int i; + int rtn; + + wpool = MallocOrDie(sizeof(struct workpool_s)); + wpool->thread = MallocOrDie(num_threads * sizeof(pthread_t)); + wpool->hmm = hmm; + + wpool->do_xnu = do_xnu; + wpool->do_forward = do_forward; + wpool->do_null2 = do_null2; + wpool->thresh = thresh; + + wpool->sqfp = sqfp; + wpool->nseq = 0; + if ((rtn = pthread_mutex_init(&(wpool->input_lock), NULL)) != 0) + Die("pthread_mutex_init FAILED; %s\n", strerror(rtn)); + + wpool->ghit = ghit; + wpool->dhit = dhit; + wpool->hist = hist; + if ((rtn = pthread_mutex_init(&(wpool->output_lock), NULL)) != 0) + Die("pthread_mutex_init FAILED; %s\n", strerror(rtn)); + + wpool->num_threads= num_threads; + + /* Create slave threads. See comments in hmmcalibrate.c at this + * step, regarding concurrency, system scope, and portability + * amongst various UNIX implementations of pthreads. + */ + pthread_attr_init(&attr); +#ifndef __sgi +#ifdef HAVE_PTHREAD_ATTR_SETSCOPE + pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); +#endif +#endif +#ifdef HAVE_PTHREAD_SETCONCURRENCY + pthread_setconcurrency(num_threads+1); +#endif + /* pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); */ + for (i = 0; i < num_threads; i++) + if ((rtn = pthread_create(&(wpool->thread[i]), &attr, + worker_thread , (void *) wpool)) != 0) + Die("Failed to create thread %d; return code %d\n", i, rtn); + + pthread_attr_destroy(&attr); + return wpool; +} +/* Function: workpool_stop() + * Date: SRE, Thu Jul 16 11:20:16 1998 [St. Louis] + * + * Purpose: Waits for threads in a workpool to finish. + * + * Args: wpool -- ptr to the workpool structure + * + * Returns: (void) + */ +static void +workpool_stop(struct workpool_s *wpool) +{ + int i; + /* wait for threads to stop */ + for (i = 0; i < wpool->num_threads; i++) + if (pthread_join(wpool->thread[i],NULL) != 0) + Die("pthread_join failed"); + return; +} + +/* Function: workpool_free() + * Date: SRE, Thu Jul 16 11:26:27 1998 [St. Louis] + * + * Purpose: Free a workpool_s structure, after the threads + * have finished. + * + * Args: wpool -- ptr to the workpool. + * + * Returns: (void) + */ +static void +workpool_free(struct workpool_s *wpool) +{ + free(wpool->thread); + free(wpool); + return; +} + + +/* Function: worker_thread() + * Date: SRE, Mon Sep 28 10:48:29 1998 [St. Louis] + * + * Purpose: The procedure executed by the worker threads. + * + * Args: ptr - (void *) that is recast to a pointer to + * the workpool. + * + * Returns: (void *) + */ +void * +worker_thread(void *ptr) +{ + struct workpool_s *wpool; /* our working threads structure */ + char *seq; /* target sequence */ + SQINFO sqinfo; /* information assoc w/ seq */ + char *dsq; /* digitized sequence */ + struct p7trace_s *tr; /* traceback from an alignment */ + float sc; /* score of an alignment */ + int rtn; /* a return code from pthreads lib */ + double pvalue; /* P-value of score */ + double evalue; /* E-value of score */ + + wpool = (struct workpool_s *) ptr; + for (;;) { + + /* 1. acquire lock on sequence input, and get + * the next seq to work on. + */ + /* acquire a lock */ + if ((rtn = pthread_mutex_lock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_lock failure: %s\n", strerror(rtn)); + if (! ReadSeq(wpool->sqfp, wpool->sqfp->format, &seq, &sqinfo)) + { /* we're done. release lock, exit thread */ + if ((rtn = pthread_mutex_unlock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + pthread_exit(NULL); + } + SQD_DPRINTF1(("a thread is working on %s\n", sqinfo.name)); + wpool->nseq++; + /* release the lock */ + if ((rtn = pthread_mutex_unlock(&(wpool->input_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + + if (sqinfo.len == 0) continue; /* silent skip of len=0 seqs (wormpep!?!) */ + + dsq = DigitizeSequence(seq, sqinfo.len); + if (wpool->do_xnu) XNU(dsq, sqinfo.len); + + /* 1. Recover a trace by Viterbi. + */ + if (P7ViterbiSize(sqinfo.len, wpool->hmm->M) <= RAMLIMIT) + sc = P7Viterbi(dsq, sqinfo.len, wpool->hmm, &tr); + else + sc = P7SmallViterbi(dsq, sqinfo.len, wpool->hmm, &tr); + + /* 2. If we're using Forward scores, do another DP + * to get it; else, we already have a Viterbi score + * in sc. + */ + if (wpool->do_forward) sc = P7Forward(dsq, sqinfo.len, wpool->hmm, NULL); + if (wpool->do_null2) sc -= TraceScoreCorrection(wpool->hmm, tr, dsq); + + /* 3. Save the output in tophits and histogram structures, after acquiring a lock + */ + if ((rtn = pthread_mutex_lock(&(wpool->output_lock))) != 0) + Die("pthread_mutex_lock failure: %s\n", strerror(rtn)); + SQD_DPRINTF1(("seq %s scores %f\n", sqinfo.name, sc)); + + pvalue = PValue(wpool->hmm, sc); + evalue = wpool->thresh->Z ? (double) wpool->thresh->Z * pvalue : (double) wpool->nseq * pvalue; + + if (sc >= wpool->thresh->globT && evalue <= wpool->thresh->globE) + { + PostprocessSignificantHit(wpool->ghit, wpool->dhit, + tr, wpool->hmm, dsq, sqinfo.len, + sqinfo.name, + sqinfo.flags & SQINFO_ACC ? sqinfo.acc : NULL, + sqinfo.flags & SQINFO_DESC ? sqinfo.desc : NULL, + wpool->do_forward, sc, + wpool->do_null2, + wpool->thresh, + FALSE); /* FALSE-> not hmmpfam mode, hmmsearch mode */ + } + AddToHistogram(wpool->hist, sc); + if ((rtn = pthread_mutex_unlock(&(wpool->output_lock))) != 0) + Die("pthread_mutex_unlock failure: %s\n", strerror(rtn)); + + P7FreeTrace(tr); + FreeSequence(seq, &sqinfo); + free(dsq); + } /* end 'infinite' loop over seqs in this thread */ +} + +#endif /* HMMER_THREADS */ + diff --git a/forester/archive/RIO/others/hmmer/src/masks.c b/forester/archive/RIO/others/hmmer/src/masks.c new file mode 100644 index 0000000..68eb09f --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/masks.c @@ -0,0 +1,367 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* masks.c + * SRE, Tue Nov 18 10:12:28 1997 + * + * Sequence masking routines; corrections for biased composition + * target sequences. + * + * The Claverie/States XNU code is not used by default because I + * consider X'ing out sequence to be too black/white and too + * aggressive, but it's available as an option. + * + * The Wooton/Federhen SEG code was studied, but deemed too + * nonportable to include; it would've suffered the same drawback + * as XNU. + * + * The TraceScoreCorrection() code is the default. + * + * RCS $Id: masks.c,v 1.1.1.1 2005/03/22 08:34:02 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "funcs.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +/* The PAM120 score matrix, in HMMER's AMINO_ALPHABET alphabetic order + */ +static int xpam120[23][23] = { + { 3, -3, 0, 0, -4, 1, -3, -1, -2, -3, -2, -1, 1, -1, -3, 1, 1, 0, -7, -4, 1, 0, 0 }, + {-3, 9, -7, -7, -6, -4, -4, -3, -7, -7, -6, -5, -4, -7, -4, 0, -3, -3, -8, -1, -4, -6, 0 }, + { 0, -7, 5, 3, -7, 0, 0, -3, -1, -5, -4, 2, -3, 1, -3, 0, -1, -3, -8, -5, 5, 3, 0 }, + { 0, -7, 3, 5, -7, -1, -1, -3, -1, -4, -3, 1, -2, 2, -3, -1, -2, -3, -8, -5, 3, 5, 0 }, + {-4, -6, -7, -7, 8, -5, -3, 0, -7, 0, -1, -4, -5, -6, -5, -3, -4, -3, -1, 4, -4, -5, 0 }, + { 1, -4, 0, -1, -5, 5, -4, -4, -3, -5, -4, 0, -2, -3, -4, 1, -1, -2, -8, -6, 1, -1, 0 }, + {-3, -4, 0, -1, -3, -4, 7, -4, -2, -3, -4, 2, -1, 3, 1, -2, -3, -3, -3, -1, 2, 2, 0 }, + {-1, -3, -3, -3, 0, -4, -4, 6, -3, 1, 1, -2, -3, -3, -2, -2, 0, 3, -6, -2, -2, -2, 0 }, + {-2, -7, -1, -1, -7, -3, -2, -3, 5, -4, 0, 1, -2, 0, 2, -1, -1, -4, -5, -5, 1, 0, 0 }, + {-3, -7, -5, -4, 0, -5, -3, 1, -4, 5, 3, -4, -3, -2, -4, -4, -3, 1, -3, -2, -3, -2, 0 }, + {-2, -6, -4, -3, -1, -4, -4, 1, 0, 3, 8, -3, -3, -1, -1, -2, -1, 1, -6, -4, -3, -1, 0 }, + {-1, -5, 2, 1, -4, 0, 2, -2, 1, -4, -3, 4, -2, 0, -1, 1, 0, -3, -4, -2, 4, 1, 0 }, + { 1, -4, -3, -2, -5, -2, -1, -3, -2, -3, -3, -2, 6, 0, -1, 1, -1, -2, -7, -6, -1, 0, 0 }, + {-1, -7, 1, 2, -6, -3, 3, -3, 0, -2, -1, 0, 0, 6, 1, -2, -2, -3, -6, -5, 1, 5, 0 }, + {-3, -4, -3, -3, -5, -4, 1, -2, 2, -4, -1, -1, -1, 1, 6, -1, -2, -3, 1, -5, -1, 0, 0 }, + { 1, 0, 0, -1, -3, 1, -2, -2, -1, -4, -2, 1, 1, -2, -1, 3, 2, -2, -2, -3, 1, 0, 0 }, + { 1, -3, -1, -2, -4, -1, -3, 0, -1, -3, -1, 0, -1, -2, -2, 2, 4, 0, -6, -3, 1, -1, 0 }, + { 0, -3, -3, -3, -3, -2, -3, 3, -4, 1, 1, -3, -2, -3, -3, -2, 0, 5, -8, -3, -2, -2, 0 }, + {-7, -8, -8, -8, -1, -8, -3, -6, -5, -3, -6, -4, -7, -6, 1, -2, -6, -8, 12, -2, -5, -6, 0 }, + {-4, -1, -5, -5, 4, -6, -1, -2, -5, -2, -4, -2, -6, -5, -5, -3, -3, -3, -2, 8, -2, -4, 0 }, + { 1, -4, 5, 3, -4, 1, 2, -2, 1, -3, -3, 4, -1, 1, -1, 1, 1, -2, -5, -2, 6, 4, 0 }, + { 0, -6, 3, 5, -5, -1, 2, -2, 0, -2, -1, 1, 0, 5, 0, 0, -1, -2, -6, -4, 4, 6, 0 }, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, +}; + + +/* Function: XNU() + * Date: 18 Nov 1997 [StL] + * + * Purpose: x-out of repetitive sequence. XNU tends to be + * good at x'ing out short period tandem repeats. + * + * Note: Apply /only/ to protein sequence. + * + * Args: dsq: 1..len digitized sequence + * len: length of dsq + * + * Return: number of characters x'ed out. + */ +int +XNU(char *dsq, int len) +{ + int i,k,off,sum,beg,end,top; + int topcut,fallcut; + double s0; + int noff = 4; /* maximum search offset */ + int mcut = 1; + double pcut = 0.01; + int *hit; + double lambda = 0.346574; + double K = 0.2; + double H = 0.664; + int xnum = 0; + + if (len == 0) return 0; + + hit = MallocOrDie(sizeof(int) * (len+1)); + for (i=1; i<=len; i++) hit[i]=0; + + /* + ** Determine the score cutoff so that pcut will be the fraction + ** of random sequence eliminated assuming lambda, K, and H are + ** characteristic of the database as a whole + */ + s0 = - log( pcut*H / (noff*K) ) / lambda; + if (s0>0) topcut = floor(s0 + log(s0)/lambda + 0.5); + else topcut = 0; + fallcut = (int)log(K/0.001)/lambda; + + for (off=mcut; off<=noff; off++) { + sum=top=0; + beg=off; + end=0; + + for (i=off+1; i<=len; i++) { + sum += xpam120[(int) dsq[i]][(int) dsq[i-off]]; + if (sum>top) { + top=sum; + end=i; + } + if (top>=topcut && top-sum>fallcut) { + for (k=beg; k<=end; k++) + hit[k] = hit[k-off] = 1; + sum=top=0; + beg=end=i+1; + } else if (top-sum>fallcut) { + sum=top=0; + beg=end=i+1; + } + if (sum<0) { + beg=end=i+1; + sum=top=0; + } + } + if (top>=topcut) { + for (k=beg; k<=end; k++) + hit[k] = hit[k-off] = 1; + } + } + + /* Now mask off detected repeats + */ + for (i=1; i<=len; i++) + if (hit[i]) { xnum++; dsq[i] = Alphabet_iupac-1;} /* e.g. 'X' */ + + free(hit); + return xnum; +} + + +/* Function: TraceScoreCorrection() + * Date: Sun Dec 21 12:05:47 1997 [StL] + * + * Purpose: Calculate a correction (in integer log_2 odds) to be + * applied to a sequence, using a second null model, + * based on a traceback. M/I emissions are corrected; + * C/N/J are not -- as if the nonmatching part and + * matching part were each generated by the best null model. + * The null model is constructed /post hoc/ as the + * average over all the M,I distributions used by the trace. + * + * Return: the log_2-odds score correction. + */ +float +TraceScoreCorrection(struct plan7_s *hmm, struct p7trace_s *tr, char *dsq) +{ + float p[MAXABET]; /* null model distribution */ + int sc[MAXCODE]; /* null model scores */ + int x; + int tpos; + int score; + + /* Set up model: average over the emission distributions of + * all M, I states that appear in the trace. Ad hoc? Sure, you betcha. + */ + FSet(p, Alphabet_size, 0.0); + for (tpos = 0; tpos < tr->tlen; tpos++) + if (tr->statetype[tpos] == STM) + FAdd(p, hmm->mat[tr->nodeidx[tpos]], Alphabet_size); + else if (tr->statetype[tpos] == STI) + FAdd(p, hmm->ins[tr->nodeidx[tpos]], Alphabet_size); + FNorm(p, Alphabet_size); + + for (x = 0; x < Alphabet_size; x++) + sc[x] = Prob2Score(p[x], hmm->null[x]); + /* could avoid this chunk if we knew + we didn't need any degenerate char scores */ + for (x = Alphabet_size; x < Alphabet_iupac; x++) + sc[x] = DegenerateSymbolScore(p, hmm->null, x); + + + /* Score all the M,I state emissions that appear in the trace. + */ + score = 0; + for (tpos = 0; tpos < tr->tlen; tpos++) + if (tr->statetype[tpos] == STM || tr->statetype[tpos] == STI) + score += sc[(int) dsq[tr->pos[tpos]]]; + + /* Apply an ad hoc 8 bit fudge factor penalty; + * interpreted as a prior, saying that the second null model is + * 1/2^8 (1/256) as likely as the standard null model + */ + score -= 8 * INTSCALE; + + /* Return the correction to the bit score. + */ + return Scorify(ILogsum(0, score)); +} + + +/* THE FOLLOWING CODE IS IN DEVELOPMENT. + * it is commented out of the current release deliberately. + * If you activate it, I'm not responsible for the consequences. + */ +#if MICHAEL_JORDAN_BUYS_THE_PACERS +/* Function: NewTraceScoreCorrection() + * Date: Wed Feb 17 14:32:45 1999 [StL] + * + * Purpose: Calculate a correction (in integer log_2 odds) to be + * applied to a sequence, using a second null model, + * based on sequence endpoints. M/I emissions are corrected; + * C/N/J are not -- as if the nonmatching part and + * matching part were each generated by the best null model. + * Each null model is constructed /post hoc/ from the + * sequence composition of each matching domain (e.g. + * a null2 model is constructed for each domain in a + * multihit trace). + * + * Constraints on the construction of this function include: + * 1) Paracel hardware can't deal with trace-dependent + * null2 models. Original implementation of + * TraceScoreCorrection() was dependent on traceback + * and could not be reproduced on GeneMatcher. + * GeneMatcher may be able to deal w/ sequence endpoint + * dependent rescoring, though. + * Although this function looks like it's trace- + * dependent (because it's being passed a p7trace_s + * structure), it's really not; only the sequence + * endpoints are being used. + * + * 2) It is desirable that for multihit traces, + * per-domain scores sum to the per-sequence score. + * Otherwise people see this as a "bug" (cf. + * bug #2, David Kerk, NRC). HMMER calculates the + * per-domain scores by going through a separate + * TraceScore() call for each one and separately + * correcting them with TraceScoreCorrection(), + * so we have to do each domain in a full trace + * by a similar mechanism -- even if this means that + * we're adopting a very dubiously post hoc + * null model. + * + * Return: the log_2-odds score correction. + */ +float +NewTraceScoreCorrection(struct plan7_s *hmm, struct p7trace_s *tr, char *dsq) +{ + float ct[MAXABET]; /* counts of observed residues */ + float p[MAXABET]; /* null2 model distribution (also counts) */ + float sc[MAXCODE]; /* null2 model scores (as floats not int) */ + + int x; + int tpos; + int score; /* tmp score for real HMM, integer logodds */ + float hmmscore; /* score for real HMM for this domain */ + float null2score; /* score for null2 model for this domain */ + + + float totscore; /* overall score for trace */ + float maxscore; /* best score so far for single domain */ + int in_domain; /* flag for whether we're counting this domain */ + int sym; /* digitized symbol in dsq */ + int ndom; /* number of domains counted towards score */ + + int nsym; /* number of symbols in this alignment */ + + totscore = 0.; + maxscore = -FLT_MAX; + in_domain = FALSE; + ndom = 0; + for (tpos = 0; tpos < tr->tlen; tpos++) + { + /* detect start of domain; start at N or J */ + if (tpos < tr->tlen-1 && tr->statetype[tpos+1] == STB) + { + FCopy(ct, hmm->null, Alphabet_size); /* simple Dirichlet prior */ + score = 0; + null2score = 0.; + nsym = 0; + in_domain = TRUE; + } + /* Count stuff in domain starting with N->B or J->B transition */ + if (in_domain) { + sym = (int) dsq[tr->pos[tpos]]; + + /* count emitted symbols in domain */ + if (tr->statetype[tpos] == STM || tr->statetype[tpos] == STI) + { + P7CountSymbol(ct, sym, 1.0); + nsym++; + } + + /* score emitted symbols in domain towards HMM */ + if (tr->statetype[tpos] == STM) + score += hmm->msc[sym][tr->nodeidx[tpos]]; + else if (tr->statetype[tpos] == STI) + score += hmm->isc[sym][tr->nodeidx[tpos]]; + /* score transitions in domain towards HMM */ + score += TransitionScoreLookup(hmm, + tr->statetype[tpos], tr->nodeidx[tpos], + tr->statetype[tpos+1], tr->nodeidx[tpos+1]); + } + + + if (tr->statetype[tpos] == STE) /* done w/ a domain; calc its score */ + { + /* convert counts to null2 prob distribution */ + FCopy(p, ct, Alphabet_size); + FNorm(p, Alphabet_size); + /* Convert probs to log-odds_e scores */ + /* p can't be zero, because of prior */ + for (x = 0; x < Alphabet_size; x++) + sc[x] = log(p[x] / hmm->null[x]); + /* null2 score = counts \dot scores */ + null2score = FDot(ct, sc, Alphabet_size); + + printf("NSYM = %d NULL2 = %.1f\n", nsym, null2score); + + /* Apply an ad hoc 12 bit fudge factor penalty, per domain. + * Interpreted probabilistically, saying that there's about + * a 1/256 probability to transition into the second null model. + */ + null2score -= 12.; + + /* Now correct score1 using the null2 score. + * If it's still > 0, add it to accumulated score. + */ + hmmscore = Scorify(score); + hmmscore -= 1.44269504 * LogSum(0, null2score); + if (hmmscore > 0.) { totscore += hmmscore; ndom++; } + if (hmmscore > maxscore) maxscore = hmmscore; + + in_domain = FALSE; + } + } + + /* Single domain special case. + */ + if (ndom == 0) totscore = maxscore; + + /* Return the correction to the bit score + */ + return (P7TraceScore(hmm, dsq, tr) - totscore); +} +#endif /*0*/ + + +float +SantaCruzCorrection(struct plan7_s *hmm, struct p7trace_s *tr, char *dsq) +{ + return 0.0; /* UNFINISHED CODE */ +} diff --git a/forester/archive/RIO/others/hmmer/src/mathsupport.c b/forester/archive/RIO/others/hmmer/src/mathsupport.c new file mode 100644 index 0000000..5938463 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/mathsupport.c @@ -0,0 +1,362 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + + +/* mathsupport.c + * SRE, Mon Nov 11 15:07:33 1996 + * + * Miscellaneous mathematical functions. + * General functions are in the SQUID library sre_math.c. + * These functions are too HMM-specific to warrant being in the + * SQUID library. + * + */ + + +#include +#include +#ifdef HMMER_THREADS +#include +#endif +#include "funcs.h" +#include "config.h" +#include "structs.h" +#include "squid.h" + +/* Function: Prob2Score() + * + * Purpose: Convert a probability to a scaled integer log_2 odds score. + * Round to nearest integer (i.e. note use of +0.5 and floor()) + * Return the score. + */ +int +Prob2Score(float p, float null) +{ + if (p == 0.0) return -INFTY; + else return (int) floor(0.5 + INTSCALE * sreLOG2(p/null)); +} + +/* Function: Score2Prob() + * + * Purpose: Convert an integer log_2 odds score back to a probability; + * needs the null model probability, if any, to do the conversion. + */ +float +Score2Prob(int sc, float null) +{ + if (sc == -INFTY) return 0.; + else return (null * sreEXP2((float) sc / INTSCALE)); +} + + +/* Function: Scorify() + * + * Purpose: Convert a scaled integer log-odds score to a floating + * point score for output. (could be a macro but who cares.) + */ +float +Scorify(int sc) +{ + return ((float) sc / INTSCALE); +} + + +/* Function: PValue() + * Date: SRE, Mon Oct 27 12:21:02 1997 [Sanger Centre, UK] + * + * Purpose: Convert an HMM score to a P-value. + * We know P(S>x) is bounded by 1 / (1 + exp_2^x) for a bit score of x. + * We can also use EVD parameters for a tighter bound if we have + * them available. + * + * Args: hmm - model structure, contains EVD parameters + * sc - score in bits + * + * Returns: P value for score significance. + */ +double +PValue(struct plan7_s *hmm, float sc) +{ + double pval; + double pval2; + /* the bound from Bayes */ + if (sc >= sreLOG2(DBL_MAX)) pval = 0.0; + else pval = 1. / (1.+sreEXP2(sc)); + + /* try for a better estimate from EVD fit */ + if (hmm != NULL && (hmm->flags & PLAN7_STATS)) + { + pval2 = ExtremeValueP(sc, hmm->mu, hmm->lambda); + if (pval2 < pval) pval = pval2; + } + return pval; +} + +/* Function: LogSum() + * + * Purpose: Returns the log of the sum of two log probabilities. + * log(exp(p1)+exp(p2)) = p1 + log(1 + exp(p2-p1)) for p1 > p2 + * Note that this is in natural log space, not log_2. + */ +float +LogSum(float p1, float p2) +{ + if (p1 > p2) + return (p1-p2 > 50.) ? p1 + log(1. + exp(p2-p1)) : p1; + else + return (p2-p1 > 50.) ? p2 + log(1. + exp(p1-p2)) : p2; +} + + +/* Function: ILogsum() + * + * Purpose: Return the scaled integer log probability of + * the sum of two probabilities p1 and p2, where + * p1 and p2 are also given as scaled log probabilities. + * + * log(exp(p1)+exp(p2)) = p1 + log(1 + exp(p2-p1)) for p1 > p2 + * + * For speed, builds a lookup table the first time it's called. + * LOGSUM_TBL is set to 20000 by default, in config.h. + * + * Because of the one-time initialization, we have to + * be careful in a multithreaded implementation... hence + * the use of pthread_once(), which forces us to put + * the initialization routine and the lookup table outside + * ILogsum(). (Thanks to Henry Gabb at Intel for pointing + * out this problem.) + * + * Args: p1,p2 -- scaled integer log_2 probabilities to be summed + * in probability space. + * + * Return: scaled integer log_2 probability of the sum. + */ +static int ilogsum_lookup[LOGSUM_TBL]; +static void +init_ilogsum(void) +{ + int i; + for (i = 0; i < LOGSUM_TBL; i++) + ilogsum_lookup[i] = (int) (INTSCALE * 1.44269504 * + (log(1.+exp(0.69314718 * (float) -i/INTSCALE)))); +} +int +ILogsum(int p1, int p2) +{ + int diff; +#ifdef HMMER_THREADS + static pthread_once_t firsttime = PTHREAD_ONCE_INIT; + pthread_once(&firsttime, init_ilogsum); +#else + static int firsttime = 1; + if (firsttime) { init_ilogsum(); firsttime = 0; } +#endif + + diff = p1-p2; + if (diff >= LOGSUM_TBL) return p1; + else if (diff <= -LOGSUM_TBL) return p2; + else if (diff > 0) return p1 + ilogsum_lookup[diff]; + else return p2 + ilogsum_lookup[-diff]; +} + +/* Function: LogNorm() + * + * Purpose: Normalize a vector of log likelihoods, changing it + * to a probability vector. Be careful of overflowing exp(). + * Implementation adapted from Graeme Mitchison. + * + * Args: vec - vector destined to become log probabilities + * n - length of vec + */ +void +LogNorm(float *vec, int n) +{ + int x; + float max = -1.0e30; + float denom = 0.; + + for (x = 0; x < n; x++) + if (vec[x] > max) max = vec[x]; + for (x = 0; x < n; x++) + if (vec[x] > max - 50.) + denom += exp(vec[x] - max); + for (x = 0; x < n; x++) + if (vec[x] > max - 50.) + vec[x] = exp(vec[x] - max) / denom; + else + vec[x] = 0.0; +} + + +/* Function: Logp_cvec() + * + * Purpose: Calculates ln P(cvec|dirichlet), the log probability of a + * count vector given a Dirichlet distribution. Adapted + * from an implementation by Graeme Mitchison. + * + * Args: cvec - count vector + * n - length of cvec + * alpha - Dirichlet alpha terms + * + * Return: log P(cvec|dirichlet) + */ +float +Logp_cvec(float *cvec, int n, float *alpha) +{ + float lnp; /* log likelihood of P(cvec | Dirichlet) */ + float sum1, sum2, sum3; + int x; + + sum1 = sum2 = sum3 = lnp = 0.0; + for (x = 0; x < n; x++) + { + sum1 += cvec[x] + alpha[x]; + sum2 += alpha[x]; + sum3 += cvec[x]; + lnp += Gammln(alpha[x] + cvec[x]); + lnp -= Gammln(cvec[x] + 1.); + lnp -= Gammln(alpha[x]); + } + lnp -= Gammln(sum1); + lnp += Gammln(sum2); + lnp += Gammln(sum3 + 1.); + return lnp; +} + +/* Function: SampleDirichlet() + * + * Purpose: Given a Dirichlet distribution defined by + * a vector of n alpha terms, sample of probability + * distribution of dimension n. + * + * This code was derived from source provided + * by Betty Lazareva, from Gary Churchill's group. + * + * Args: alpha - vector of Dirichlet alphas components + * n - number of components + * ret_p - RETURN: sampled probability vector. + * + * Return: (void) + * ret_p, an n-dimensional array alloced by the caller, + * is filled. + */ +void +SampleDirichlet(float *alpha, int n, float *p) +{ + int x; + + for (x = 0; x < n; x++) + p[x] = SampleGamma(alpha[x]); + FNorm(p, n); +} + + +/* Function: SampleGamma() + * + * Purpose: Return a random deviate distributed as Gamma(alpha, 1.0). + * Uses two different accept/reject algorithms, one + * for 0= 1.0) + { + /*CONSTCOND*/ while (1) + { + lambda = sqrt(2.0*alpha -1.0); + U = sre_random(); + V = U/(1-U); + X = alpha * pow(V, 1/lambda); + W = .25*exp(-X+alpha)*pow(V,1.0+alpha/lambda)*pow(1.0+1.0/V, 2.0); + if (sre_random() <= W) + return X; + } + } + else if (alpha > 0.0) + { + /*CONSTCOND*/ while (1) + { + U = sre_random(); + V = U*(1+ alpha/exp(1.0)); + if (V > 1.0) + { + X = -log( (1-V+alpha/exp(1.0))/alpha); + if (sre_random() <= pow(X, alpha-1.0)) + return X; + } + else + { + X = pow(V,1.0/alpha); + if (sre_random() <= exp(-X)) + return X; + } + } + } + Die("Invalid argument alpha < 0.0 to SampleGamma()"); + /*NOTREACHED*/ + return 0.0; +} + +/* Function: SampleCountvector() + * + * Purpose: Given a probability vector p of dimensionality + * n, sample c counts and store them in cvec. + * cvec is n-dimensional and is alloced by the caller. + */ +void +SampleCountvector(float *p, int n, int c, float *cvec) +{ + int i; + + FSet(cvec, n, 0.0); + for (i = 0; i < c; i++) + cvec[FChoose(p,n)] += 1.0; +} + + + +/* Function: P_PvecGivenDirichlet() + * + * Purpose: Calculate the log probability of a probability + * vector given a single Dirichlet component, alpha. + * Follows Sjolander (1996) appendix, lemma 2. + * + * Return: log P(p | alpha) + */ +float +P_PvecGivenDirichlet(float *p, int n, float *alpha) +{ + float sum; /* for Gammln(|alpha|) in Z */ + float logp; /* RETURN: log P(p|alpha) */ + int x; + + sum = logp = 0.0; + for (x = 0; x < n; x++) + if (p[x] > 0.0) /* any param that is == 0.0 doesn't exist */ + { + logp += (alpha[x]-1.0) * log(p[x]); + logp -= Gammln(alpha[x]); + sum += alpha[x]; + } + logp += Gammln(sum); + return logp; +} + + diff --git a/forester/archive/RIO/others/hmmer/src/misc.c b/forester/archive/RIO/others/hmmer/src/misc.c new file mode 100644 index 0000000..9a7cf26 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/misc.c @@ -0,0 +1,140 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* misc.c + * SRE, Thu Jul 15 18:49:19 1993 + * + * Functions that I don't know quite where to put yet. + */ + +#include +#include +#include +#include +#include +#include + +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "version.h" + +/* Function: Getword() + * + * Purpose: little function used by ReadPrior() and ReadHMM() to parse + * next valid field out of an open file, ignoring + * comments. '#' marks the beginning of a comment. + * + * Arg: fp - open file for reading + * type - sqdARG_INT, sqdARG_FLOAT, or sqdARG_STRING from squid.h + */ +char * +Getword(FILE *fp, int type) +{ + static char buffer[512]; + static char *sptr = NULL; + + if (sptr != NULL) sptr = strtok(NULL, " \t\n"); + + while (sptr == NULL) + { + if ((sptr = fgets(buffer, 512, fp)) == NULL) return NULL; + if ((sptr = strchr(buffer, '#')) != NULL) *sptr = '\0'; + sptr = strtok(buffer, " \t\n"); + } + + switch (type) { + case sqdARG_STRING: + if (strlen(sptr) == 0) { + Warn("Parse failed: expected string, got nothing"); + sptr = NULL; + } + break; + case sqdARG_INT: + if (!IsInt(sptr)) { + Warn("Parse failed: expected integer, got %s", sptr); + sptr = NULL; + } + break; + case sqdARG_FLOAT: + if (!IsReal(sptr)) { + Warn("Parse failed: expected real value, got %s", sptr); + sptr = NULL; + } + break; + } + + return sptr; +} + + +/* Function: Getline() + * + * Purpose: Get the next non-blank, non-comment line from an open file. + * A comment line has '#' as the first non-whitespace character. + * Returns NULL if no line is found. + * Syntax is the same as fgets(). + * + * Args: s - allocated storage for line + * n - number of characters allocated for s + * fp - open FILE * + * + * Return: Either s, or NULL if no new line is found. + */ +char * +Getline(char *s, int n, FILE *fp) +{ + char *first; + + do { + if (fgets(s, n, fp) == NULL) return NULL; + first = s; while (isspace((int) (*first))) first++; + } while (*first == '#' || *first == '\0'); + return s; +} + + +/* Function: SetAutocuts() + * Date: SRE, Thu Jun 8 08:19:46 2000 [TW721 over Ireland] + * + * Purpose: Set score thresholds using the GA, TC, or NC information + * in an HMM. + * + * Args: thresh - score threshold structure. autocut must be set + * properly (CUT_GA, CUT_NC, or CUT_TC). + * hmm - HMM containing appropriate score cutoff info + * + * Returns: 1 on success. + * 0 if HMM does not have the score cutoffs available -- caller + * will have to decide on a fallback plan. + * Has no effect (and returns success) if autocut is + * CUT_NONE. + */ +int +SetAutocuts(struct threshold_s *thresh, struct plan7_s *hmm) +{ + if (thresh->autocut == CUT_GA) { + if (! (hmm->flags & PLAN7_GA)) return 0; + thresh->globT = hmm->ga1; + thresh->domT = hmm->ga2; + thresh->globE = thresh->domE = FLT_MAX; + } else if (thresh->autocut == CUT_NC) { + if (! (hmm->flags & PLAN7_NC)) return 0; + thresh->globT = hmm->nc1; + thresh->domT = hmm->nc2; + thresh->globE = thresh->domE = FLT_MAX; + } else if (thresh->autocut == CUT_TC) { + if (! (hmm->flags & PLAN7_TC)) return 0; + thresh->globT = hmm->tc1; + thresh->domT = hmm->tc2; + thresh->globE = thresh->domE = FLT_MAX; + } + return 1; +} diff --git a/forester/archive/RIO/others/hmmer/src/modelmakers.c b/forester/archive/RIO/others/hmmer/src/modelmakers.c new file mode 100644 index 0000000..8e5eab8 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/modelmakers.c @@ -0,0 +1,940 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* modelmakers.c + * SRE, Fri Nov 15 10:00:04 1996 + * + * Construction of models from multiple alignments. Three versions: + * Handmodelmaker() -- use #=RF annotation to indicate match columns + * Fastmodelmaker() -- Krogh/Haussler heuristic + * Maxmodelmaker() -- MAP model construction algorithm (Eddy, + * unpublished) + * + * The meat of the model construction code is in matassign2hmm(). + * The three model construction strategies simply label which columns + * are supposed to be match states, and then hand this info to + * matassign2hmm(). + * + * Two wrinkles to watch for: + * 1) The alignment is assumed to contain sequence fragments. Look in + * fake_tracebacks() for how internal entry/exit points are handled. + * 2) Plan7 disallows DI and ID transitions, but an alignment may + * imply these. Look in trace_doctor() for how DI and ID transitions + * are removed. + */ + +#include +#include +#include +#include +#include +#include + +#include "structs.h" +#include "config.h" +#include "funcs.h" +#include "squid.h" +#include "msa.h" + +/* flags used for matassign[] arrays -- + * assignment of aligned columns to match/insert states + */ +#define ASSIGN_MATCH (1<<0) +#define FIRST_MATCH (1<<1) +#define LAST_MATCH (1<<2) +#define ASSIGN_INSERT (1<<3) +#define EXTERNAL_INSERT_N (1<<4) +#define EXTERNAL_INSERT_C (1<<5) + +static int build_cij(char **aseqs, int nseq, int *insopt, int i, int j, + float *wgt, float *cij); +static int estimate_model_length(MSA *msa); +static void matassign2hmm(MSA *msa, char **dsq, + int *matassign, struct plan7_s **ret_hmm, + struct p7trace_s ***ret_tr); +static void fake_tracebacks(char **aseq, int nseq, int alen, int *matassign, + struct p7trace_s ***ret_tr); +static void trace_doctor(struct p7trace_s *tr, int M, int *ret_ndi, + int *ret_nid); +static void annotate_model(struct plan7_s *hmm, int *matassign, MSA *msa); +static void print_matassign(int *matassign, int alen); + + + +/* Function: P7Handmodelmaker() + * + * Purpose: Manual model construction: + * Construct an HMM from an alignment, where the #=RF line + * of a HMMER alignment file is given to indicate + * the columns assigned to matches vs. inserts. + * + * NOTE: Handmodelmaker() will slightly revise the alignment + * if necessary, if the assignment of columns implies + * DI and ID transitions. + * + * Returns both the HMM in counts form (ready for applying + * Dirichlet priors as the next step), and fake tracebacks + * for each aligned sequence. + * + * Args: msa - multiple sequence alignment + * dsq - digitized unaligned aseq's + * ret_hmm - RETURN: counts-form HMM + * ret_tr - RETURN: array of tracebacks for aseq's + * + * Return: (void) + * ret_hmm and ret_tr alloc'ed here; FreeTrace(tr[i]), free(tr), + * FreeHMM(hmm). + */ +void +P7Handmodelmaker(MSA *msa, char **dsq, + struct plan7_s **ret_hmm, struct p7trace_s ***ret_tr) +{ + int *matassign; /* MAT state assignments if 1; 1..alen */ + int apos; /* counter for aligned columns */ + + /* Make sure we have all the info about the alignment that we need */ + if (msa->rf == NULL) + Die("Alignment must have RF annotation to hand-build an HMM"); + + /* Allocation */ + matassign = (int *) MallocOrDie (sizeof(int) * (msa->alen+1)); + + /* Determine match assignment from optional annotation + */ + matassign[0] = 0; + for (apos = 0; apos < msa->alen; apos++) + { + matassign[apos+1] = 0; + if (!isgap(msa->rf[apos])) + matassign[apos+1] |= ASSIGN_MATCH; + else + matassign[apos+1] |= ASSIGN_INSERT; + } + + /* Hand matassign off for remainder of model construction + */ + /* print_matassign(matassign, msa->alen); */ + matassign2hmm(msa, dsq, matassign, ret_hmm, ret_tr); + + free(matassign); + return; +} + + +/* Function: P7Fastmodelmaker() + * + * Purpose: Heuristic model construction: + * Construct an HMM from an alignment using the original + * Krogh/Haussler heuristic; any column with more + * symbols in it than a given fraction is assigned to + * match. + * + * NOTE: Fastmodelmaker() will slightly revise the + * alignment if the assignment of columns implies + * DI and ID transitions. + * + * Returns the HMM in counts form (ready for applying Dirichlet + * priors as the next step). Also returns fake traceback + * for each training sequence. + * + * Args: msa - multiple sequence alignment + * dsq - digitized unaligned aseq's + * maxgap - if more gaps than this, column becomes insert. + * ret_hmm - RETURN: counts-form HMM + * ret_tr - RETURN: array of tracebacks for aseq's + * + * Return: (void) + * ret_hmm and ret_tr alloc'ed here; FreeTrace(tr[i]), free(tr), + * FreeHMM(hmm). + */ +void +P7Fastmodelmaker(MSA *msa, char **dsq, float maxgap, + struct plan7_s **ret_hmm, struct p7trace_s ***ret_tr) +{ + int *matassign; /* MAT state assignments if 1; 1..alen */ + int idx; /* counter over sequences */ + int apos; /* counter for aligned columns */ + int ngap; /* number of gaps in a column */ + + /* Allocations: matassign is 1..alen array of bit flags + */ + matassign = (int *) MallocOrDie (sizeof(int) * (msa->alen+1)); + + /* Determine match assignment by counting symbols in columns + */ + matassign[0] = 0; + for (apos = 0; apos < msa->alen; apos++) { + matassign[apos+1] = 0; + + ngap = 0; + for (idx = 0; idx < msa->nseq; idx++) + if (isgap(msa->aseq[idx][apos])) + ngap++; + + if ((float) ngap / (float) msa->nseq > maxgap) + matassign[apos+1] |= ASSIGN_INSERT; + else + matassign[apos+1] |= ASSIGN_MATCH; + } + + /* Once we have matassign calculated, all modelmakers behave + * the same; matassign2hmm() does this stuff (traceback construction, + * trace counting) and sets up ret_hmm and ret_tr. + */ + matassign2hmm(msa, dsq, matassign, ret_hmm, ret_tr); + + free(matassign); + return; +} + + +/* Function: P7Maxmodelmaker() + * + * Purpose: The Unholy Beast of HMM model construction algorithms -- + * maximum a posteriori construction. A tour de force and + * probably overkill. MAP construction for Krogh + * HMM-profiles is fairly straightforward, but MAP construction of + * Plan 7 HMM-profiles is, er, intricate. + * + * Given a multiple alignment, construct an optimal (MAP) model + * architecture. Return a counts-based HMM. + * + * Args: msa - multiple sequence alignment + * dsq - digitized, unaligned seqs + * maxgap - above this, trailing columns are assigned to C + * prior - priors on parameters to use for model construction + * null - random sequence model emissions + * null_p1 - random sequence model p1 transition + * mpri - prior on architecture: probability of new match node + * ret_hmm - RETURN: new hmm (counts form) + * ret_tr - RETURN: array of tracebacks for aseq's + * + * Return: (void) + * ret_hmm and ret_tr (if !NULL) must be free'd by the caller. + */ +void +P7Maxmodelmaker(MSA *msa, char **dsq, float maxgap, + struct p7prior_s *prior, + float *null, float null_p1, float mpri, + struct plan7_s **ret_hmm, struct p7trace_s ***ret_tr) +{ + int idx; /* counter for seqs */ + int i, j; /* positions in alignment */ + int x; /* counter for syms or transitions */ + float **matc; /* count vectors: [1..alen][0..19] */ + float cij[8], tij[8]; /* count and score transit vectors */ + float matp[MAXABET]; /* match emission vector */ + float insp[MAXABET]; /* insert score vector */ + float insc[MAXABET]; /* insert count vector */ + float *sc; /* DP scores [0,1..alen,alen+1] */ + int *tbck; /* traceback ptrs for sc */ + int *matassign; /* match assignments [1..alen] */ + int *insopt; /* number of inserted chars [0..nseq-1] */ + int first, last; /* positions of first and last cols [1..alen] */ + float bm1, bm2; /* estimates for start,internal b->m t's */ + int est_M; /* estimate for the size of the model */ + float t_me; /* estimate for an internal M->E transition */ + float new, bestsc; /* new score, best score so far */ + int code; /* optimization: return code from build_cij() */ + int ngap; /* gap count in a column */ + float wgtsum; /* sum of weights; do not assume it is nseq */ + + /* Allocations + */ + matc = (float **) MallocOrDie (sizeof(float *) * (msa->alen+1)); + sc = (float *) MallocOrDie (sizeof(float) * (msa->alen+2)); + tbck = (int *) MallocOrDie (sizeof(int) * (msa->alen+2)); + matassign = (int *) MallocOrDie (sizeof(int) * (msa->alen+1)); + insopt = (int *) MallocOrDie (sizeof(int) * msa->nseq); + for (i = 0; i < msa->alen; i++) { + matc[i+1] = (float *) MallocOrDie (Alphabet_size * sizeof(float)); + FSet(matc[i+1], Alphabet_size, 0.); + } + + /* Precalculations + */ + for (i = 0; i < msa->alen; i++) + for (idx = 0; idx < msa->nseq; idx++) + if (!isgap(msa->aseq[idx][i])) + P7CountSymbol(matc[i+1], SymbolIndex(msa->aseq[idx][i]), msa->wgt[idx]); + mpri = sreLOG2(mpri); + + FCopy(insp, prior->i[0], Alphabet_size); + FNorm(insp, Alphabet_size); + wgtsum = FSum(msa->wgt, msa->nseq); + for (x = 0; x < Alphabet_size; x++) + insp[x] = sreLOG2(insp[x] / null[x]); + + /* Estimate the relevant special transitions. + */ + est_M = estimate_model_length(msa); + t_me = 0.5 / (float) (est_M-1); + bm1 = 0.5; + bm2 = 0.5 / (float) (est_M-1); + bm1 = sreLOG2(bm1 / null_p1); + bm2 = sreLOG2(bm2 / null_p1); + + /* Estimate the position of the last match-assigned column + * by counting gap frequencies. + */ + maxgap = 0.5; + for (last = msa->alen; last >= 1; last--) { + ngap = 0; + for (idx = 0; idx < msa->nseq; idx++) + if (isgap(msa->aseq[idx][last-1])) ngap++; + if ((float) ngap / (float) msa->nseq <= maxgap) + break; + } + + /* Initialization + */ + sc[last] = 0.; + tbck[last] = 0; + + /* Set ME gaps to '_' + */ + for (idx = 0; idx < msa->nseq; idx++) + for (i = last; i > 0 && isgap(msa->aseq[idx][i-1]); i--) + msa->aseq[idx][i-1] = '_'; + + /* Main recursion moves from right to left. + */ + for (i = last-1; i > 0; i--) { + /* Calculate match emission scores for i */ + FCopy(matp, matc[i], Alphabet_size); + P7PriorifyEmissionVector(matp, prior, prior->mnum, prior->mq, prior->m, NULL); + for (x = 0; x < Alphabet_size; x++) + matp[x] = sreLOG2(matp[x] / null[x]); + + /* Initialize insert counters to zero */ + FSet(insc, Alphabet_size, 0.); + for (idx = 0; idx < msa->nseq; idx++) insopt[idx] = 0; + + sc[i] = -FLT_MAX; + for (j = i+1; j <= last; j++) { + /* build transition matrix for column pair i,j */ + code = build_cij(msa->aseq, msa->nseq, insopt, i, j, msa->wgt, cij); + if (code == -1) break; /* no j to our right can work for us */ + if (code == 1) { + FCopy(tij, cij, 7); + P7PriorifyTransitionVector(tij, prior, prior->tq); + FNorm(tij, 3); + tij[TMM] = sreLOG2(tij[TMM] / null_p1); + tij[TMI] = sreLOG2(tij[TMI] / null_p1); + tij[TMD] = sreLOG2(tij[TMD]); + tij[TIM] = sreLOG2(tij[TIM] / null_p1); + tij[TII] = sreLOG2(tij[TII] / null_p1); + tij[TDM] = sreLOG2(tij[TDM] / null_p1); + tij[TDD] = sreLOG2(tij[TDD]); + /* calculate the score of using this j. */ + new = sc[j] + FDot(tij, cij, 7) + FDot(insp, insc, Alphabet_size); + + SQD_DPRINTF2(("%3d %3d new=%6.2f scj=%6.2f m=%6.2f i=%6.2f t=%6.2f\n", + i, j, new, sc[j], FDot(matp, matc[i], Alphabet_size), + FDot(insp, insc, Alphabet_size), FDot(tij, cij, 7))); + + /* keep it if it's better */ + if (new > sc[i]) { + sc[i] = new; + tbck[i] = j; + } + } + /* bump insc, insopt insert symbol counters */ + FAdd(insc, matc[j], Alphabet_size); + for (idx = 0; idx < msa->nseq; idx++) + if (!isgap(msa->aseq[idx][j-1])) insopt[idx]++; + } + /* add in constant contributions for col i */ + /* note ad hoc scaling of mpri by wgtsum (us. nseq)*/ + sc[i] += FDot(matp, matc[i], Alphabet_size) + mpri * wgtsum; + } /* end loop over start positions i */ + + /* Termination: place the begin state. + * log odds score for S->N->B is all zero except for NB transition, which + * is a constant. So we only have to evaluate BM transitions. + */ + bestsc = -FLT_MAX; + for (i = 1; i <= last; i++) { + new = sc[i]; + for (idx = 0; idx < msa->nseq; idx++) { + if (isgap(msa->aseq[idx][j-1])) + new += bm2; /* internal B->M transition */ + else + new += bm1; /* B->M1 transition */ + } + if (new > bestsc) { + bestsc = new; + first = i; + } + } + + /* Traceback + */ + matassign[0] = 0; + for (i = 1; i <= msa->alen; i++) matassign[i] = ASSIGN_INSERT; + for (i = first; i != 0; i = tbck[i]) { + matassign[i] &= ~ASSIGN_INSERT; + matassign[i] |= ASSIGN_MATCH; + } + + /* Hand matassign off for remainder of model construction + */ + /* print_matassign(matassign, ainfo->alen); */ + matassign2hmm(msa, dsq, matassign, ret_hmm, ret_tr); + + /* Clean up. + */ + for (i = 1; i <= msa->alen; i++) free(matc[i]); + free(matc); + free(sc); + free(tbck); + free(matassign); + free(insopt); +} + + +/* Function: build_cij() + * + * Purpose: Construct a counts vector for transitions between + * column i and column j in a multiple alignment. + * + * '_' gap characters indicate "external" gaps which + * are to be dealt with by B->M and M->E transitions. + * These characters must be placed by a preprocessor. + * + * insopt is an "insert optimization" -- an incrementor + * which keeps track of the number of insert symbols + * between i and j. + * + * Args: aseqs - multiple alignment. [0.nseq-1][0.alen-1] + * nseq - number of seqs in aseqs + * insopt - number of inserts per seq between i/j [0.nseq-1] + * i - i column [1.alen], off by one from aseqs + * j - j column [1.alen], off by one from aseqs + * wgt - per-seq weights [0.nseq-1] + * cij - transition count vectors [0..7] + * + * Return: -1 if an illegal transition was seen for this i/j assignment *and* + * we are guaranteed that any j to the right will also + * have illegal transitions. + * 0 if an illegal transition was seen, but a j further to the + * right may work. + * 1 if all transitions were legal. + */ +static int +build_cij(char **aseqs, int nseq, int *insopt, int i, int j, + float *wgt, float *cij) +{ + int idx; /* counter for seqs */ + + i--; /* make i,j relative to aseqs [0..alen-1] */ + j--; + FSet(cij, 8, 0.); /* zero cij */ + for (idx = 0; idx < nseq; idx++) { + if (insopt[idx] > 0) { + if (isgap(aseqs[idx][i])) return -1; /* D->I prohibited. */ + if (isgap(aseqs[idx][j])) return 0; /* I->D prohibited. */ + cij[TMI] += wgt[idx]; + cij[TII] += (insopt[idx]-1) * wgt[idx]; + cij[TIM] += wgt[idx]; + } else { + if (!isgap(aseqs[idx][i])) { + if (aseqs[idx][j] == '_') ; /* YO! what to do with trailer? */ + else if (isgap(aseqs[idx][j])) cij[TMD] += wgt[idx]; + else cij[TMM] += wgt[idx]; + } else { /* ignores B->E possibility */ + if (aseqs[idx][j] == '_') continue; + else if (isgap(aseqs[idx][j])) cij[TDD] += wgt[idx]; + else cij[TDM] += wgt[idx]; + } + } + } + return 1; +} + + +/* Function: estimate_model_length() + * + * Purpose: Return a decent guess about the length of the model, + * based on the lengths of the sequences. + * + * Algorithm is dumb: use weighted average length. + * + * Don't assume that weights sum to nseq! + */ +static int +estimate_model_length(MSA *msa) +{ + int idx; + float total = 0.; + float wgtsum = 0.; + + for (idx = 0; idx < msa->nseq; idx++) + { + total += msa->wgt[idx] * DealignedLength(msa->aseq[idx]); + wgtsum += msa->wgt[idx]; + } + + return (int) (total / wgtsum); +} + + +/* Function: matassign2hmm() + * + * Purpose: Given an assignment of alignment columns to match vs. + * insert, finish the final part of the model construction + * calculation that is constant between model construction + * algorithms. + * + * Args: msa - multiple sequence alignment + * dsq - digitized unaligned aseq's + * matassign - 1..alen bit flags for column assignments + * ret_hmm - RETURN: counts-form HMM + * ret_tr - RETURN: array of tracebacks for aseq's + * + * Return: (void) + * ret_hmm and ret_tr alloc'ed here for the calling + * modelmaker function. + */ +static void +matassign2hmm(MSA *msa, char **dsq, int *matassign, + struct plan7_s **ret_hmm, struct p7trace_s ***ret_tr) +{ + struct plan7_s *hmm; /* RETURN: new hmm */ + struct p7trace_s **tr; /* fake tracebacks for each seq */ + int M; /* length of new model in match states */ + int idx; /* counter over sequences */ + int apos; /* counter for aligned columns */ + + /* how many match states in the HMM? */ + M = 0; + for (apos = 1; apos <= msa->alen; apos++) { + if (matassign[apos] & ASSIGN_MATCH) + M++; + } + /* delimit N-terminal tail */ + for (apos=1; matassign[apos] & ASSIGN_INSERT && apos <= msa->alen; apos++) + matassign[apos] |= EXTERNAL_INSERT_N; + if (apos <= msa->alen) matassign[apos] |= FIRST_MATCH; + + /* delimit C-terminal tail */ + for (apos=msa->alen; matassign[apos] & ASSIGN_INSERT && apos > 0; apos--) + matassign[apos] |= EXTERNAL_INSERT_C; + if (apos > 0) matassign[apos] |= LAST_MATCH; + + /* print_matassign(matassign, msa->alen); */ + + /* make fake tracebacks for each seq */ + fake_tracebacks(msa->aseq, msa->nseq, msa->alen, matassign, &tr); + /* build model from tracebacks */ + hmm = AllocPlan7(M); + ZeroPlan7(hmm); + for (idx = 0; idx < msa->nseq; idx++) { + /* P7PrintTrace(stdout, tr[idx], NULL, NULL); */ + P7TraceCount(hmm, dsq[idx], msa->wgt[idx], tr[idx]); + } + /* annotate new model */ + annotate_model(hmm, matassign, msa); + + /* Set #=RF line of alignment to reflect our assignment + * of match, delete. matassign is valid from 1..alen and is off + * by one from msa->rf. + */ + if (msa->rf != NULL) free(msa->rf); + msa->rf = (char *) MallocOrDie (sizeof(char) * (msa->alen + 1)); + for (apos = 0; apos < msa->alen; apos++) + msa->rf[apos] = matassign[apos+1] & ASSIGN_MATCH ? 'x' : '.'; + msa->rf[msa->alen] = '\0'; + + /* Cleanup and return. */ + if (ret_tr != NULL) *ret_tr = tr; + else { for (idx = 0; idx < msa->nseq; idx++) P7FreeTrace(tr[idx]); free(tr); } + if (ret_hmm != NULL) *ret_hmm = hmm; else FreePlan7(hmm); + return; +} + + + +/* Function: fake_tracebacks() + * + * Purpose: From a consensus assignment of columns to MAT/INS, construct fake + * tracebacks for each individual sequence. + * + * Note: Fragment tolerant by default. Internal entries are + * B->M_x, instead of B->D1->D2->...->M_x; analogously + * for internal exits. + * + * Args: aseqs - alignment [0..nseq-1][0..alen-1] + * nseq - number of seqs in alignment + * alen - length of alignment in columns + * matassign - assignment of column; [1..alen] (off one from aseqs) + * ret_tr - RETURN: array of tracebacks + * + * Return: (void) + * ret_tr is alloc'ed here. Caller must free. + */ +static void +fake_tracebacks(char **aseq, int nseq, int alen, int *matassign, + struct p7trace_s ***ret_tr) +{ + struct p7trace_s **tr; + int idx; /* counter over sequences */ + int i; /* position in raw sequence (1..L) */ + int k; /* position in HMM */ + int apos; /* position in alignment columns */ + int tpos; /* position in traceback */ + + tr = (struct p7trace_s **) MallocOrDie (sizeof(struct p7trace_s *) * nseq); + + for (idx = 0; idx < nseq; idx++) + { + P7AllocTrace(alen+6, &tr[idx]); /* allow room for S,N,B,E,C,T */ + + /* all traces start with S state... */ + tr[idx]->statetype[0] = STS; + tr[idx]->nodeidx[0] = 0; + tr[idx]->pos[0] = 0; + /* ...and transit to N state; N-term tail + is emitted on N->N transitions */ + tr[idx]->statetype[1] = STN; + tr[idx]->nodeidx[1] = 0; + tr[idx]->pos[1] = 0; + + i = 1; + k = 0; + tpos = 2; + for (apos = 0; apos < alen; apos++) + { + tr[idx]->statetype[tpos] = STBOGUS; /* bogus, deliberately, to debug */ + + if (matassign[apos+1] & FIRST_MATCH) + { /* BEGIN */ + tr[idx]->statetype[tpos] = STB; + tr[idx]->nodeidx[tpos] = 0; + tr[idx]->pos[tpos] = 0; + tpos++; + } + + if (matassign[apos+1] & ASSIGN_MATCH && ! isgap(aseq[idx][apos])) + { /* MATCH */ + k++; /* move to next model pos */ + tr[idx]->statetype[tpos] = STM; + tr[idx]->nodeidx[tpos] = k; + tr[idx]->pos[tpos] = i; + i++; + tpos++; + } + else if (matassign[apos+1] & ASSIGN_MATCH) + { /* DELETE */ + /* being careful about S/W transitions; no B->D transitions */ + k++; /* *always* move on model when ASSIGN_MATCH */ + if (tr[idx]->statetype[tpos-1] != STB) + { + tr[idx]->statetype[tpos] = STD; + tr[idx]->nodeidx[tpos] = k; + tr[idx]->pos[tpos] = 0; + tpos++; + } + } + else if (matassign[apos+1] & EXTERNAL_INSERT_N && + ! isgap(aseq[idx][apos])) + { /* N-TERMINAL TAIL */ + tr[idx]->statetype[tpos] = STN; + tr[idx]->nodeidx[tpos] = 0; + tr[idx]->pos[tpos] = i; + i++; + tpos++; + } + else if (matassign[apos+1] & EXTERNAL_INSERT_C && + ! isgap(aseq[idx][apos])) + { /* C-TERMINAL TAIL */ + tr[idx]->statetype[tpos] = STC; + tr[idx]->nodeidx[tpos] = 0; + tr[idx]->pos[tpos] = i; + i++; + tpos++; + } + else if (! isgap(aseq[idx][apos])) + { /* INSERT */ + tr[idx]->statetype[tpos] = STI; + tr[idx]->nodeidx[tpos] = k; + tr[idx]->pos[tpos] = i; + i++; + tpos++; + } + + if (matassign[apos+1] & LAST_MATCH) + { /* END */ + /* be careful about S/W transitions; may need to roll + * back over some D's because there's no D->E transition + */ + while (tr[idx]->statetype[tpos-1] == STD) + tpos--; + tr[idx]->statetype[tpos] = STE; + tr[idx]->nodeidx[tpos] = 0; + tr[idx]->pos[tpos] = 0; + tpos++; + /* and then transit E->C; + alignments that use J are undefined; + C-term tail is emitted on C->C transitions */ + tr[idx]->statetype[tpos] = STC; + tr[idx]->nodeidx[tpos] = 0; + tr[idx]->pos[tpos] = 0; + tpos++; + } + } + /* all traces end with T state */ + tr[idx]->statetype[tpos] = STT; + tr[idx]->nodeidx[tpos] = 0; + tr[idx]->pos[tpos] = 0; + tr[idx]->tlen = ++tpos; + /* deal with DI, ID transitions */ + /* k == M here */ + trace_doctor(tr[idx], k, NULL, NULL); + + } /* end for sequence # idx */ + + *ret_tr = tr; + return; +} + +/* Function: trace_doctor() + * + * Purpose: Plan 7 disallows D->I and I->D "chatter" transitions. + * However, these transitions may be implied by many + * alignments for hand- or heuristic- built HMMs. + * trace_doctor() collapses I->D or D->I into a + * single M position in the trace. + * Similarly, B->I and I->E transitions may be implied + * by an alignment. + * + * trace_doctor does not examine any scores when it does + * this. In ambiguous situations (D->I->D) the symbol + * will be pulled arbitrarily to the left, regardless + * of whether that's the best column to put it in or not. + * + * Args: tr - trace to doctor + * M - length of model that traces are for + * ret_ndi - number of DI transitions doctored + * ret_nid - number of ID transitions doctored + * + * Return: (void) + * tr is modified + */ +static void +trace_doctor(struct p7trace_s *tr, int mlen, int *ret_ndi, int *ret_nid) +{ + int opos; /* position in old trace */ + int npos; /* position in new trace (<= opos) */ + int ndi, nid; /* number of DI, ID transitions doctored */ + + /* overwrite the trace from left to right */ + ndi = nid = 0; + opos = npos = 0; + while (opos < tr->tlen) { + /* fix implied D->I transitions; D transforms to M, I pulled in */ + if (tr->statetype[opos] == STD && tr->statetype[opos+1] == STI) { + tr->statetype[npos] = STM; + tr->nodeidx[npos] = tr->nodeidx[opos]; /* D transforms to M */ + tr->pos[npos] = tr->pos[opos+1]; /* insert char moves back */ + opos += 2; + npos += 1; + ndi++; + } /* fix implied I->D transitions; D transforms to M, I is pushed in */ + else if (tr->statetype[opos]== STI && tr->statetype[opos+1]== STD) { + tr->statetype[npos] = STM; + tr->nodeidx[npos] = tr->nodeidx[opos+1];/* D transforms to M */ + tr->pos[npos] = tr->pos[opos]; /* insert char moves up */ + opos += 2; + npos += 1; + nid++; + } /* fix implied B->I transitions; pull I back to its M */ + else if (tr->statetype[opos]== STI && tr->statetype[opos-1]== STB) { + tr->statetype[npos] = STM; + tr->nodeidx[npos] = tr->nodeidx[opos]; /* offending I transforms to M */ + tr->pos[npos] = tr->pos[opos]; + opos++; + npos++; + } /* fix implied I->E transitions; push I to next M */ + else if (tr->statetype[opos]== STI && tr->statetype[opos+1]== STE) { + tr->statetype[npos] = STM; + tr->nodeidx[npos] = tr->nodeidx[opos]+1;/* offending I transforms to M */ + tr->pos[npos] = tr->pos[opos]; + opos++; + npos++; + } /* rare: N-N-B-E becomes N-B-M_1-E (swap B,N) */ + else if (tr->statetype[opos]==STB && tr->statetype[opos+1]==STE + && tr->statetype[opos-1]==STN && tr->pos[opos-1] > 0) { + tr->statetype[npos] = STM; + tr->nodeidx[npos] = 1; + tr->pos[npos] = tr->pos[opos-1]; + tr->statetype[npos-1] = STB; + tr->nodeidx[npos-1] = 0; + tr->pos[npos-1] = 0; + opos++; + npos++; + } /* rare: B-E-C-C-x becomes B-M_M-E-C-x (swap E,C) */ + else if (tr->statetype[opos]==STE && tr->statetype[opos-1]==STB + && tr->statetype[opos+1]==STC + && tr->statetype[opos+2]==STC) { + tr->statetype[npos] = STM; + tr->nodeidx[npos] = mlen; + tr->pos[npos] = tr->pos[opos+2]; + tr->statetype[npos+1] = STE; + tr->nodeidx[npos+1] = 0; + tr->pos[npos+1] = 0; + tr->statetype[npos+2] = STC; /* first C must be a nonemitter */ + tr->nodeidx[npos+2] = 0; + tr->pos[npos+2] = 0; + opos+=3; + npos+=3; + } /* everything else is just copied */ + else { + tr->statetype[npos] = tr->statetype[opos]; + tr->nodeidx[npos] = tr->nodeidx[opos]; + tr->pos[npos] = tr->pos[opos]; + opos++; + npos++; + } + } + tr->tlen = npos; + + if (ret_ndi != NULL) *ret_ndi = ndi; + if (ret_nid != NULL) *ret_nid = nid; + return; +} + + +/* Function: annotate_model() + * + * Purpose: Add rf, cs optional annotation to a new model. + * + * Args: hmm - new model + * matassign - which alignment columns are MAT; [1..alen] + * msa - alignment, including annotation to transfer + * + * Return: (void) + */ +static void +annotate_model(struct plan7_s *hmm, int *matassign, MSA *msa) +{ + int apos; /* position in matassign, 1.alen */ + int k; /* position in model, 1.M */ + char *pri; /* X-PRM, X-PRI, X-PRT annotation */ + + /* Transfer reference coord annotation from alignment, + * if available + */ + if (msa->rf != NULL) { + hmm->rf[0] = ' '; + for (apos = k = 1; apos <= msa->alen; apos++) + if (matassign[apos] & ASSIGN_MATCH) /* ainfo is off by one from HMM */ + hmm->rf[k++] = (msa->rf[apos-1] == ' ') ? '.' : msa->rf[apos-1]; + hmm->rf[k] = '\0'; + hmm->flags |= PLAN7_RF; + } + + /* Transfer consensus structure annotation from alignment, + * if available + */ + if (msa->ss_cons != NULL) { + hmm->cs[0] = ' '; + for (apos = k = 1; apos <= msa->alen; apos++) + if (matassign[apos] & ASSIGN_MATCH) + hmm->cs[k++] = (msa->ss_cons[apos-1] == ' ') ? '.' : msa->ss_cons[apos-1]; + hmm->cs[k] = '\0'; + hmm->flags |= PLAN7_CS; + } + + /* Transfer surface accessibility annotation from alignment, + * if available + */ + if (msa->sa_cons != NULL) { + hmm->ca[0] = ' '; + for (apos = k = 1; apos <= msa->alen; apos++) + if (matassign[apos] & ASSIGN_MATCH) + hmm->ca[k++] = (msa->sa_cons[apos-1] == ' ') ? '.' : msa->sa_cons[apos-1]; + hmm->ca[k] = '\0'; + hmm->flags |= PLAN7_CA; + } + + /* Store the alignment map + */ + for (apos = k = 1; apos <= msa->alen; apos++) + if (matassign[apos] & ASSIGN_MATCH) + hmm->map[k++] = apos; + hmm->flags |= PLAN7_MAP; + + /* Translate and transfer X-PRM annotation. + * 0-9,[a-zA-Z] are legal; translate as 0-9,10-35 into hmm->mpri. + * Any other char is translated as -1, and this will be interpreted + * as a flag that means "unknown", e.g. use the normal mixture Dirichlet + * procedure for this column. + */ + if ((pri = MSAGetGC(msa, "X-PRM")) != NULL) + { + hmm->mpri = MallocOrDie(sizeof(int) * (hmm->M+1)); + for (apos = k = 1; apos <= msa->alen; apos++) + if (matassign[apos] & ASSIGN_MATCH) + { + if (isdigit((int) pri[apos-1])) hmm->mpri[k] = pri[apos-1] - '0'; + else if (islower((int) pri[apos-1])) hmm->mpri[k] = pri[apos-1] - 'a' + 10; + else if (isupper((int) pri[apos-1])) hmm->mpri[k] = pri[apos-1] - 'A' + 10; + else hmm->mpri[k] = -1; + k++; + } + } + /* And again for X-PRI annotation on insert priors: + */ + if ((pri = MSAGetGC(msa, "X-PRI")) != NULL) + { + hmm->ipri = MallocOrDie(sizeof(int) * (hmm->M+1)); + for (apos = k = 1; apos <= msa->alen; apos++) + if (matassign[apos] & ASSIGN_MATCH) + { + if (isdigit((int) pri[apos-1])) hmm->ipri[k] = pri[apos-1] - '0'; + else if (islower((int) pri[apos-1])) hmm->ipri[k] = pri[apos-1] - 'a' + 10; + else if (isupper((int) pri[apos-1])) hmm->ipri[k] = pri[apos-1] - 'A' + 10; + else hmm->ipri[k] = -1; + k++; + } + } + /* And one last time for X-PRT annotation on transition priors: + */ + if ((pri = MSAGetGC(msa, "X-PRT")) != NULL) + { + hmm->tpri = MallocOrDie(sizeof(int) * (hmm->M+1)); + for (apos = k = 1; apos <= msa->alen; apos++) + if (matassign[apos] & ASSIGN_MATCH) + { + if (isdigit((int) pri[apos-1])) hmm->tpri[k] = pri[apos-1] - '0'; + else if (islower((int) pri[apos-1])) hmm->tpri[k] = pri[apos-1] - 'a' + 10; + else if (isupper((int) pri[apos-1])) hmm->tpri[k] = pri[apos-1] - 'A' + 10; + else hmm->tpri[k] = -1; + k++; + } + } + +} + +static void +print_matassign(int *matassign, int alen) +{ + int apos; + + for (apos = 0; apos <= alen; apos++) { + printf("%3d %c %c %c\n", + apos, + (matassign[apos] & ASSIGN_MATCH) ? 'x':' ', + (matassign[apos] & FIRST_MATCH || matassign[apos] & LAST_MATCH) ? '<' : ' ', + (matassign[apos] & EXTERNAL_INSERT_N || + matassign[apos] & EXTERNAL_INSERT_C) ? '|':' '); + } +} diff --git a/forester/archive/RIO/others/hmmer/src/plan7.c b/forester/archive/RIO/others/hmmer/src/plan7.c new file mode 100644 index 0000000..6f5eed1 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/plan7.c @@ -0,0 +1,1036 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + + +/* plan7.c + * SRE, Sat Nov 16 14:19:56 1996 + * + * Support for Plan 7 HMM data structure, plan7_s. + */ + +#include +#include +#include +#include + +#include "funcs.h" +#include "config.h" +#include "structs.h" +#include "squid.h" + +/* Functions: AllocPlan7(), AllocPlan7Shell(), AllocPlan7Body(), FreePlan7() + * + * Purpose: Allocate or free a Plan7 HMM structure. + * Can either allocate all at one (AllocPlan7()) or + * in two steps (AllocPlan7Shell(), AllocPlan7Body()). + * The two step method is used in hmmio.c where we start + * parsing the header of an HMM file but don't + * see the size of the model 'til partway thru the header. + */ +struct plan7_s * +AllocPlan7(int M) +{ + struct plan7_s *hmm; + + hmm = AllocPlan7Shell(); + AllocPlan7Body(hmm, M); + return hmm; +} +struct plan7_s * +AllocPlan7Shell(void) +{ + struct plan7_s *hmm; + + hmm = (struct plan7_s *) MallocOrDie (sizeof(struct plan7_s)); + hmm->M = 0; + + hmm->name = NULL; + hmm->acc = NULL; + hmm->desc = NULL; + hmm->rf = NULL; + hmm->cs = NULL; + hmm->ca = NULL; + hmm->comlog = NULL; + hmm->nseq = 0; + hmm->ctime = NULL; + hmm->map = NULL; + hmm->checksum = 0; + + hmm->tpri = NULL; + hmm->mpri = NULL; + hmm->ipri = NULL; + + hmm->ga1 = hmm->ga2 = 0.0; + hmm->tc1 = hmm->tc2 = 0.0; + hmm->nc1 = hmm->nc2 = 0.0; + + hmm->t = NULL; + hmm->tsc = NULL; + hmm->mat = NULL; + hmm->ins = NULL; + hmm->msc = NULL; + hmm->isc = NULL; + + hmm->begin = NULL; + hmm->bsc = NULL; + hmm->end = NULL; + hmm->esc = NULL; + /* DNA translation is not enabled by default */ + hmm->dnam = NULL; + hmm->dnai = NULL; + hmm->dna2 = -INFTY; + hmm->dna4 = -INFTY; + /* statistical parameters set to innocuous empty values */ + hmm->mu = 0.; + hmm->lambda = 0.; + + hmm->flags = 0; + return hmm; +} +void +AllocPlan7Body(struct plan7_s *hmm, int M) +{ + int k, x; + + hmm->M = M; + + hmm->rf = MallocOrDie ((M+2) * sizeof(char)); + hmm->cs = MallocOrDie ((M+2) * sizeof(char)); + hmm->ca = MallocOrDie ((M+2) * sizeof(char)); + hmm->map = MallocOrDie ((M+1) * sizeof(int)); + + hmm->t = MallocOrDie (M * sizeof(float *)); + hmm->tsc = MallocOrDie (M * sizeof(int *)); + hmm->mat = MallocOrDie ((M+1) * sizeof(float *)); + hmm->ins = MallocOrDie (M * sizeof(float *)); + hmm->msc = MallocOrDie (MAXCODE * sizeof(int *)); + hmm->isc = MallocOrDie (MAXCODE * sizeof(int *)); + hmm->t[0] = MallocOrDie ((7*M) * sizeof(float)); + hmm->tsc[0] = MallocOrDie ((7*M) * sizeof(int)); + hmm->mat[0] = MallocOrDie ((MAXABET*(M+1)) * sizeof(float)); + hmm->ins[0] = MallocOrDie ((MAXABET*M) * sizeof(float)); + hmm->msc[0] = MallocOrDie ((MAXCODE*(M+1)) * sizeof(int)); + hmm->isc[0] = MallocOrDie ((MAXCODE*M) * sizeof(int)); + + /* note allocation strategy for important 2D arrays -- trying + * to keep locality as much as possible, cache efficiency etc. + */ + for (k = 1; k <= M; k++) { + hmm->mat[k] = hmm->mat[0] + k * MAXABET; + if (k < M) { + hmm->ins[k] = hmm->ins[0] + k * MAXABET; + hmm->t[k] = hmm->t[0] + k * 7; + hmm->tsc[k] = hmm->tsc[0] + k * 7; + } + } + for (x = 1; x < MAXCODE; x++) { + hmm->msc[x] = hmm->msc[0] + x * (M+1); + hmm->isc[x] = hmm->isc[0] + x * M; + } + /* tsc[0] is used as a boundary condition sometimes [Viterbi()], + * so set to -inf always. + */ + for (x = 0; x < 7; x++) + hmm->tsc[0][x] = -INFTY; + + hmm->begin = MallocOrDie ((M+1) * sizeof(float)); + hmm->bsc = MallocOrDie ((M+1) * sizeof(int)); + hmm->end = MallocOrDie ((M+1) * sizeof(float)); + hmm->esc = MallocOrDie ((M+1) * sizeof(int)); + + return; +} + + +void +FreePlan7(struct plan7_s *hmm) +{ + if (hmm->name != NULL) free(hmm->name); + if (hmm->desc != NULL) free(hmm->desc); + if (hmm->rf != NULL) free(hmm->rf); + if (hmm->cs != NULL) free(hmm->cs); + if (hmm->ca != NULL) free(hmm->ca); + if (hmm->comlog != NULL) free(hmm->comlog); + if (hmm->ctime != NULL) free(hmm->ctime); + if (hmm->map != NULL) free(hmm->map); + if (hmm->tpri != NULL) free(hmm->tpri); + if (hmm->mpri != NULL) free(hmm->mpri); + if (hmm->ipri != NULL) free(hmm->ipri); + if (hmm->bsc != NULL) free(hmm->bsc); + if (hmm->begin != NULL) free(hmm->begin); + if (hmm->esc != NULL) free(hmm->esc); + if (hmm->end != NULL) free(hmm->end); + if (hmm->msc != NULL) free(hmm->msc[0]); + if (hmm->mat != NULL) free(hmm->mat[0]); + if (hmm->isc != NULL) free(hmm->isc[0]); + if (hmm->ins != NULL) free(hmm->ins[0]); + if (hmm->tsc != NULL) free(hmm->tsc[0]); + if (hmm->t != NULL) free(hmm->t[0]); + if (hmm->msc != NULL) free(hmm->msc); + if (hmm->mat != NULL) free(hmm->mat); + if (hmm->isc != NULL) free(hmm->isc); + if (hmm->ins != NULL) free(hmm->ins); + if (hmm->tsc != NULL) free(hmm->tsc); + if (hmm->t != NULL) free(hmm->t); + if (hmm->dnam != NULL) free(hmm->dnam); + if (hmm->dnai != NULL) free(hmm->dnai); + free(hmm); +} + +/* Function: ZeroPlan7() + * + * Purpose: Zeros the counts/probabilities fields in a model. + * Leaves null model untouched. + */ +void +ZeroPlan7(struct plan7_s *hmm) +{ + int k; + for (k = 1; k < hmm->M; k++) + { + FSet(hmm->t[k], 7, 0.); + FSet(hmm->mat[k], Alphabet_size, 0.); + FSet(hmm->ins[k], Alphabet_size, 0.); + } + FSet(hmm->mat[hmm->M], Alphabet_size, 0.); + hmm->tbd1 = 0.; + FSet(hmm->begin+1, hmm->M, 0.); + FSet(hmm->end+1, hmm->M, 0.); + for (k = 0; k < 4; k++) + FSet(hmm->xt[k], 2, 0.); + hmm->flags &= ~PLAN7_HASBITS; /* invalidates scores */ + hmm->flags &= ~PLAN7_HASPROB; /* invalidates probabilities */ +} + + +/* Function: Plan7SetName() + * + * Purpose: Change the name of a Plan7 HMM. Convenience function. + * + * Note: Trailing whitespace and \n's are chopped. + */ +void +Plan7SetName(struct plan7_s *hmm, char *name) +{ + if (hmm->name != NULL) free(hmm->name); + hmm->name = Strdup(name); + StringChop(hmm->name); +} +/* Function: Plan7SetAccession() + * + * Purpose: Change the accession number of a Plan7 HMM. Convenience function. + * + * Note: Trailing whitespace and \n's are chopped. + */ +void +Plan7SetAccession(struct plan7_s *hmm, char *acc) +{ + if (hmm->acc != NULL) free(hmm->acc); + hmm->acc = Strdup(acc); + StringChop(hmm->acc); + hmm->flags |= PLAN7_ACC; +} + +/* Function: Plan7SetDescription() + * + * Purpose: Change the description line of a Plan7 HMM. Convenience function. + * + * Note: Trailing whitespace and \n's are chopped. + */ +void +Plan7SetDescription(struct plan7_s *hmm, char *desc) +{ + if (hmm->desc != NULL) free(hmm->desc); + hmm->desc = Strdup(desc); + StringChop(hmm->desc); + hmm->flags |= PLAN7_DESC; +} + +/* Function: Plan7ComlogAppend() + * Date: SRE, Wed Oct 29 09:57:30 1997 [TWA 721 over Greenland] + * + * Purpose: Concatenate command line options and append to the + * command line log. + */ +void +Plan7ComlogAppend(struct plan7_s *hmm, int argc, char **argv) +{ + int len; + int i; + + /* figure out length of command line, w/ spaces and \n */ + len = argc; + for (i = 0; i < argc; i++) + len += strlen(argv[i]); + + /* allocate */ + if (hmm->comlog != NULL) + { + len += strlen(hmm->comlog); + hmm->comlog = ReallocOrDie(hmm->comlog, sizeof(char)* (len+1)); + } + else + { + hmm->comlog = MallocOrDie(sizeof(char)* (len+1)); + *(hmm->comlog) = '\0'; /* need this to make strcat work */ + } + + /* append */ + strcat(hmm->comlog, "\n"); + for (i = 0; i < argc; i++) + { + strcat(hmm->comlog, argv[i]); + if (i < argc-1) strcat(hmm->comlog, " "); + } +} + +/* Function: Plan7SetCtime() + * Date: SRE, Wed Oct 29 11:53:19 1997 [TWA 721 over the Atlantic] + * + * Purpose: Set the ctime field in a new HMM to the current time. + */ +void +Plan7SetCtime(struct plan7_s *hmm) +{ + time_t date = time(NULL); + if (hmm->ctime != NULL) free(hmm->ctime); + hmm->ctime = Strdup(ctime(&date)); + StringChop(hmm->ctime); +} + + +/* Function: Plan7SetNullModel() + * + * Purpose: Set the null model section of an HMM. + * Convenience function. + */ +void +Plan7SetNullModel(struct plan7_s *hmm, float null[MAXABET], float p1) +{ + int x; + for (x = 0; x < Alphabet_size; x++) + hmm->null[x] = null[x]; + hmm->p1 = p1; +} + + +/* Function: P7Logoddsify() + * + * Purpose: Take an HMM with valid probabilities, and + * fill in the integer log-odds score section of the model. + * + * Notes on log-odds scores: + * type of parameter probability score + * ----------------- ----------- ------ + * any emission p_x log_2 p_x/null_x + * N,J,C /assume/ p_x = null_x so /always/ score zero. + * transition to emitters t_x log_2 t_x/p1 + * (M,I; N,C; J) + * NN and CC loops are often equal to p1, so usu. score zero. + * C->T transition t_x log_2 t_x/p2 + * often zero, usu. C->T = p2. + * all other transitions t_x log_2 t_x + * (no null model counterpart, so null prob is 1) + * + * Notes on entry/exit scores, B->M and M->E: + * The probability form model includes delete states 1 and M. + * these states are removed from a search form model to + * prevent B->D...D->E->J->B mute cycles, which would complicate + * dynamic programming algorithms. The data-independent + * S/W B->M and M->E transitions are folded together with + * data-dependent B->D...D->M and M->D...D->E paths. + * + * This process is referred to in the code as "wing folding" + * or "wing retraction"... the analogy is to a swept-wing + * fighter in landing vs. high speed flight configuration. + * + * Note on Viterbi vs. forward flag: + * Wing retraction must take forward vs. Viterbi + * into account. If forward, sum two paths; if Viterbi, take + * max. I tried to slide this by as a sum, without + * the flag, but Alex detected it as a bug, because you can + * then find cases where the Viterbi score doesn't match + * the P7TraceScore(). + * + * Args: hmm - the hmm to calculate scores in. + * viterbi_mode - TRUE to fold wings in Viterbi configuration. + * + * Return: (void) + * hmm scores are filled in. + */ +void +P7Logoddsify(struct plan7_s *hmm, int viterbi_mode) +{ + int k; /* counter for model position */ + int x; /* counter for symbols */ + float accum; + float tbm, tme; + + if (hmm->flags & PLAN7_HASBITS) return; + + /* Symbol emission scores + */ + for (k = 1; k <= hmm->M; k++) + { + /* match/insert emissions in main model */ + for (x = 0; x < Alphabet_size; x++) + { + hmm->msc[x][k] = Prob2Score(hmm->mat[k][x], hmm->null[x]); + if (k < hmm->M) + hmm->isc[x][k] = Prob2Score(hmm->ins[k][x], hmm->null[x]); + } + /* degenerate match/insert emissions */ + for (x = Alphabet_size; x < Alphabet_iupac; x++) + { + hmm->msc[x][k] = DegenerateSymbolScore(hmm->mat[k], hmm->null, x); + if (k < hmm->M) + hmm->isc[x][k] = DegenerateSymbolScore(hmm->ins[k], hmm->null, x); + } + } + + /* State transitions. + * + * A note on "folding" of D_1 and D_M. + * These two delete states are folded out of search form models + * in order to prevent null cycles in the dynamic programming + * algorithms (see code below). However, we use their log transitions + * when we save the model! So the following log transition probs + * are used *only* in save files, *never* in search algorithms: + * log (tbd1), D1 -> M2, D1 -> D2 + * Mm-1 -> Dm, Dm-1 -> Dm + * + * In a search algorithm, these have to be interpreted as -INFTY + * because their contributions are folded into bsc[] and esc[] + * entry/exit scores. They can't be set to -INFTY here because + * we need them in save files. + */ + for (k = 1; k < hmm->M; k++) + { + hmm->tsc[k][TMM] = Prob2Score(hmm->t[k][TMM], hmm->p1); + hmm->tsc[k][TMI] = Prob2Score(hmm->t[k][TMI], hmm->p1); + hmm->tsc[k][TMD] = Prob2Score(hmm->t[k][TMD], 1.0); + hmm->tsc[k][TIM] = Prob2Score(hmm->t[k][TIM], hmm->p1); + hmm->tsc[k][TII] = Prob2Score(hmm->t[k][TII], hmm->p1); + hmm->tsc[k][TDM] = Prob2Score(hmm->t[k][TDM], hmm->p1); + hmm->tsc[k][TDD] = Prob2Score(hmm->t[k][TDD], 1.0); + } + + /* B->M entry transitions. Note how D_1 is folded out. + * M1 is just B->M1 + * M2 is sum (or max) of B->M2 and B->D1->M2 + * M_k is sum (or max) of B->M_k and B->D1...D_k-1->M_k + * These have to be done in log space, else you'll get + * underflow errors; and we also have to watch for log(0). + * A little sloppier than it probably has to be; historically, + * doing in this in log space was in response to a bug report. + */ + accum = hmm->tbd1 > 0.0 ? log(hmm->tbd1) : -9999.; + for (k = 1; k <= hmm->M; k++) + { + tbm = hmm->begin[k] > 0. ? log(hmm->begin[k]) : -9999.; /* B->M_k part */ + + /* B->D1...D_k-1->M_k part we get from accum*/ + if (k > 1 && accum > -9999.) + { + if (hmm->t[k-1][TDM] > 0.0) + { + if (viterbi_mode) tbm = MAX(tbm, accum + log(hmm->t[k-1][TDM])); + else tbm = LogSum(tbm, accum + log(hmm->t[k-1][TDM])); + } + + accum = (hmm->t[k-1][TDD] > 0.0) ? accum + log(hmm->t[k-1][TDD]) : -9999.; + } + /* Convert from log_e to scaled integer log_2 odds. */ + if (tbm > -9999.) + hmm->bsc[k] = (int) floor(0.5 + INTSCALE * 1.44269504 * (tbm - log(hmm->p1))); + else + hmm->bsc[k] = -INFTY; + } + + /* M->E exit transitions. Note how D_M is folded out. + * M_M is 1 by definition + * M_M-1 is sum of M_M-1->E and M_M-1->D_M->E, where D_M->E is 1 by definition + * M_k is sum of M_k->E and M_k->D_k+1...D_M->E + * Must be done in log space to avoid underflow errors. + * A little sloppier than it probably has to be; historically, + * doing in this in log space was in response to a bug report. + */ + hmm->esc[hmm->M] = 0; + accum = 0.; + for (k = hmm->M-1; k >= 1; k--) + { + tme = hmm->end[k] > 0. ? log(hmm->end[k]) : -9999.; + if (accum > -9999.) + { + if (hmm->t[k][TMD] > 0.0) + { + if (viterbi_mode) tme = MAX(tme, accum + log(hmm->t[k][TMD])); + else tme = LogSum(tme, accum + log(hmm->t[k][TMD])); + } + accum = (hmm->t[k][TDD] > 0.0) ? accum + log(hmm->t[k][TDD]) : -9999.; + } + /* convert from log_e to scaled integer log odds. */ + hmm->esc[k] = (tme > -9999.) ? (int) floor(0.5 + INTSCALE * 1.44269504 * tme) : -INFTY; + } + + /* special transitions */ + hmm->xsc[XTN][LOOP] = Prob2Score(hmm->xt[XTN][LOOP], hmm->p1); + hmm->xsc[XTN][MOVE] = Prob2Score(hmm->xt[XTN][MOVE], 1.0); + hmm->xsc[XTE][LOOP] = Prob2Score(hmm->xt[XTE][LOOP], 1.0); + hmm->xsc[XTE][MOVE] = Prob2Score(hmm->xt[XTE][MOVE], 1.0); + hmm->xsc[XTC][LOOP] = Prob2Score(hmm->xt[XTC][LOOP], hmm->p1); + hmm->xsc[XTC][MOVE] = Prob2Score(hmm->xt[XTC][MOVE], 1.-hmm->p1); + hmm->xsc[XTJ][LOOP] = Prob2Score(hmm->xt[XTJ][LOOP], hmm->p1); + hmm->xsc[XTJ][MOVE] = Prob2Score(hmm->xt[XTJ][MOVE], 1.0); + + hmm->flags |= PLAN7_HASBITS; /* raise the log-odds ready flag */ +} + + + +/* Function: Plan7Renormalize() + * + * Purpose: Take an HMM in counts form, and renormalize + * all of its probability vectors. Also enforces + * Plan7 restrictions on nonexistent transitions. + * + * Args: hmm - the model to renormalize. + * + * Return: (void) + * hmm is changed. + */ +void +Plan7Renormalize(struct plan7_s *hmm) +{ + int k; /* counter for model position */ + int st; /* counter for special states */ + float d; /* denominator */ + + /* match emissions */ + for (k = 1; k <= hmm->M; k++) + FNorm(hmm->mat[k], Alphabet_size); + /* insert emissions */ + for (k = 1; k < hmm->M; k++) + FNorm(hmm->ins[k], Alphabet_size); + /* begin transitions */ + d = FSum(hmm->begin+1, hmm->M) + hmm->tbd1; + FScale(hmm->begin+1, hmm->M, 1./d); + hmm->tbd1 /= d; + /* main model transitions */ + for (k = 1; k < hmm->M; k++) + { + d = FSum(hmm->t[k], 3) + hmm->end[k]; + FScale(hmm->t[k], 3, 1./d); + hmm->end[k] /= d; + + FNorm(hmm->t[k]+3, 2); /* insert */ + FNorm(hmm->t[k]+5, 2); /* delete */ + } + /* null model emissions */ + FNorm(hmm->null, Alphabet_size); + /* special transitions */ + for (st = 0; st < 4; st++) + FNorm(hmm->xt[st], 2); + /* enforce nonexistent transitions */ + /* (is this necessary?) */ + hmm->t[0][TDM] = hmm->t[0][TDD] = 0.0; + + hmm->flags &= ~PLAN7_HASBITS; /* clear the log-odds ready flag */ + hmm->flags |= PLAN7_HASPROB; /* set the probabilities OK flag */ +} + + +/* Function: Plan7RenormalizeExits() + * Date: SRE, Fri Aug 14 11:22:19 1998 [St. Louis] + * + * Purpose: Renormalize just the match state transitions; + * for instance, after a Config() function has + * modified the exit distribution. + * + * Args: hmm - hmm to renormalize + * + * Returns: void + */ +void +Plan7RenormalizeExits(struct plan7_s *hmm) +{ + int k; + float d; + + for (k = 1; k < hmm->M; k++) + { + d = FSum(hmm->t[k], 3); + FScale(hmm->t[k], 3, 1./(d + d*hmm->end[k])); + } +} + + +/***************************************************************** + * Plan7 configuration functions + * The following few functions are the Plan7 equivalent of choosing + * different alignment styles (fully local, fully global, global/local, + * multihit, etc.) + * + * There is (at least) one constraint worth noting. + * If you want per-domain scores to sum up to per-sequence scores, + * then one of the following two sets of conditions must be met: + * + * 1) t(E->J) = 0 + * e.g. no multidomain hits + * + * 2) t(N->N) = t(C->C) = t(J->J) = hmm->p1 + * e.g. unmatching sequence scores zero, and + * N->B first-model score is equal to J->B another-model score. + * + * These constraints are obeyed in the default Config() functions below, + * but in the future (when HMM editing may be allowed) we'll have + * to remember this. Non-equality of the summed domain scores and + * the total sequence score is a really easy "red flag" for people to + * notice and report as a bug, even if it may make probabilistic + * sense not to meet either constraint for certain modeling problems. + ***************************************************************** + */ + +/* Function: Plan7NakedConfig() + * + * Purpose: Set the alignment-independent, algorithm-dependent parameters + * of a Plan7 model so that no special states (N,C,J) emit anything: + * one simple, full global pass through the model. + * + * Args: hmm - the plan7 model + * + * Return: (void) + * The HMM is modified; algorithm dependent parameters are set. + * Previous scores are invalidated if they existed. + */ +void +Plan7NakedConfig(struct plan7_s *hmm) +{ + hmm->xt[XTN][MOVE] = 1.; /* disallow N-terminal tail */ + hmm->xt[XTN][LOOP] = 0.; + hmm->xt[XTE][MOVE] = 1.; /* only 1 domain/sequence ("global" alignment) */ + hmm->xt[XTE][LOOP] = 0.; + hmm->xt[XTC][MOVE] = 1.; /* disallow C-terminal tail */ + hmm->xt[XTC][LOOP] = 0.; + hmm->xt[XTJ][MOVE] = 0.; /* J state unused */ + hmm->xt[XTJ][LOOP] = 1.; + FSet(hmm->begin+2, hmm->M-1, 0.); /* disallow internal entries. */ + hmm->begin[1] = 1. - hmm->tbd1; + FSet(hmm->end+1, hmm->M-1, 0.); /* disallow internal exits. */ + hmm->end[hmm->M] = 1.; + Plan7RenormalizeExits(hmm); + hmm->flags &= ~PLAN7_HASBITS; /* reconfig invalidates log-odds scores */ +} + +/* Function: Plan7GlobalConfig() + * + * Purpose: Set the alignment-independent, algorithm-dependent parameters + * of a Plan7 model to global (Needleman/Wunsch) configuration. + * + * Like a non-looping hmmls, since we actually allow flanking + * N and C terminal sequence. + * + * Args: hmm - the plan7 model + * + * Return: (void) + * The HMM is modified; algorithm dependent parameters are set. + * Previous scores are invalidated if they existed. + */ +void +Plan7GlobalConfig(struct plan7_s *hmm) +{ + hmm->xt[XTN][MOVE] = 1. - hmm->p1; /* allow N-terminal tail */ + hmm->xt[XTN][LOOP] = hmm->p1; + hmm->xt[XTE][MOVE] = 1.; /* only 1 domain/sequence ("global" alignment) */ + hmm->xt[XTE][LOOP] = 0.; + hmm->xt[XTC][MOVE] = 1. - hmm->p1; /* allow C-terminal tail */ + hmm->xt[XTC][LOOP] = hmm->p1; + hmm->xt[XTJ][MOVE] = 0.; /* J state unused */ + hmm->xt[XTJ][LOOP] = 1.; + FSet(hmm->begin+2, hmm->M-1, 0.); /* disallow internal entries. */ + hmm->begin[1] = 1. - hmm->tbd1; + FSet(hmm->end+1, hmm->M-1, 0.); /* disallow internal exits. */ + hmm->end[hmm->M] = 1.; + Plan7RenormalizeExits(hmm); + hmm->flags &= ~PLAN7_HASBITS; /* reconfig invalidates log-odds scores */ +} + +/* Function: Plan7LSConfig() + * + * Purpose: Set the alignment independent parameters of a Plan7 model + * to hmmls (global in HMM, local in sequence) configuration. + * + * Args: hmm - the plan7 model + * + * Return: (void); + * the HMM probabilities are modified. + */ +void +Plan7LSConfig(struct plan7_s *hmm) +{ + hmm->xt[XTN][MOVE] = 1.-hmm->p1; /* allow N-terminal tail */ + hmm->xt[XTN][LOOP] = hmm->p1; + hmm->xt[XTE][MOVE] = 0.5; /* expectation 2 domains/seq */ + hmm->xt[XTE][LOOP] = 0.5; + hmm->xt[XTC][MOVE] = 1.-hmm->p1; /* allow C-terminal tail */ + hmm->xt[XTC][LOOP] = hmm->p1; + hmm->xt[XTJ][MOVE] = 1.-hmm->p1; /* allow J junction state */ + hmm->xt[XTJ][LOOP] = hmm->p1; + FSet(hmm->begin+2, hmm->M-1, 0.); /* start at M1/D1 */ + hmm->begin[1] = 1. - hmm->tbd1; + FSet(hmm->end+1, hmm->M-1, 0.); /* end at M_m/D_m */ + hmm->end[hmm->M] = 1.; + Plan7RenormalizeExits(hmm); + hmm->flags &= ~PLAN7_HASBITS; /* reconfig invalidates log-odds scores */ +} + + +/* Function: Plan7SWConfig() + * + * Purpose: Set the alignment independent parameters of + * a Plan7 model to hmmsw (Smith/Waterman) configuration. + * + * Notes: entry/exit is asymmetric because of the left/right + * nature of the HMM/profile. Entry probability is distributed + * simply by assigning p_x = pentry / (M-1) to M-1 + * internal match states. However, the same approach doesn't + * lead to a flat distribution over exit points. Exit p's + * must be corrected for the probability of a previous exit + * from the model. Requiring a flat distribution over exit + * points leads to an easily solved piece of algebra, giving: + * p_1 = pexit / (M-1) + * p_x = p_1 / (1 - (x-1) p_1) + * + * Args: hmm - the Plan7 model w/ data-dep prob's valid + * pentry - probability of an internal entry somewhere; + * will be evenly distributed over M-1 match states + * pexit - probability of an internal exit somewhere; + * will be distributed over M-1 match states. + * + * Return: (void) + * HMM probabilities are modified. + */ +void +Plan7SWConfig(struct plan7_s *hmm, float pentry, float pexit) +{ + float basep; /* p1 for exits: the base p */ + int k; /* counter over states */ + + /* Configure special states. + */ + hmm->xt[XTN][MOVE] = 1-hmm->p1; /* allow N-terminal tail */ + hmm->xt[XTN][LOOP] = hmm->p1; + hmm->xt[XTE][MOVE] = 1.; /* disallow jump state */ + hmm->xt[XTE][LOOP] = 0.; + hmm->xt[XTC][MOVE] = 1-hmm->p1; /* allow C-terminal tail */ + hmm->xt[XTC][LOOP] = hmm->p1; + hmm->xt[XTJ][MOVE] = 1.; /* J is unused */ + hmm->xt[XTJ][LOOP] = 0.; + + /* Configure entry. + */ + hmm->begin[1] = (1. - pentry) * (1. - hmm->tbd1); + FSet(hmm->begin+2, hmm->M-1, (pentry * (1.- hmm->tbd1)) / (float)(hmm->M-1)); + + /* Configure exit. + */ + hmm->end[hmm->M] = 1.0; + basep = pexit / (float) (hmm->M-1); + for (k = 1; k < hmm->M; k++) + hmm->end[k] = basep / (1. - basep * (float) (k-1)); + Plan7RenormalizeExits(hmm); + hmm->flags &= ~PLAN7_HASBITS; /* reconfig invalidates log-odds scores */ +} + +/* Function: Plan7FSConfig() + * Date: SRE, Fri Jan 2 15:34:40 1998 [StL] + * + * Purpose: Set the alignment independent parameters of + * a Plan7 model to hmmfs (multihit Smith/Waterman) configuration. + * + * See comments on Plan7SWConfig() for explanation of + * how pentry and pexit are used. + * + * Args: hmm - the Plan7 model w/ data-dep prob's valid + * pentry - probability of an internal entry somewhere; + * will be evenly distributed over M-1 match states + * pexit - probability of an internal exit somewhere; + * will be distributed over M-1 match states. + * + * Return: (void) + * HMM probabilities are modified. + */ +void +Plan7FSConfig(struct plan7_s *hmm, float pentry, float pexit) +{ + float basep; /* p1 for exits: the base p */ + int k; /* counter over states */ + + /* Configure special states. + */ + hmm->xt[XTN][MOVE] = 1-hmm->p1; /* allow N-terminal tail */ + hmm->xt[XTN][LOOP] = hmm->p1; + hmm->xt[XTE][MOVE] = 0.5; /* allow loops / multihits */ + hmm->xt[XTE][LOOP] = 0.5; + hmm->xt[XTC][MOVE] = 1-hmm->p1; /* allow C-terminal tail */ + hmm->xt[XTC][LOOP] = hmm->p1; + hmm->xt[XTJ][MOVE] = 1.-hmm->p1; /* allow J junction between domains */ + hmm->xt[XTJ][LOOP] = hmm->p1; + + /* Configure entry. + */ + hmm->begin[1] = (1. - pentry) * (1. - hmm->tbd1); + FSet(hmm->begin+2, hmm->M-1, (pentry * (1.-hmm->tbd1)) / (float)(hmm->M-1)); + + /* Configure exit. + */ + hmm->end[hmm->M] = 1.0; + basep = pexit / (float) (hmm->M-1); + for (k = 1; k < hmm->M; k++) + hmm->end[k] = basep / (1. - basep * (float) (k-1)); + Plan7RenormalizeExits(hmm); + hmm->flags &= ~PLAN7_HASBITS; /* reconfig invalidates log-odds scores */ +} + + + + +/* Function: Plan7ESTConfig() + * + * Purpose: Configure a Plan7 model for EST Smith/Waterman + * analysis. + * + * OUTDATED; DO NOT USE WITHOUT RECHECKING + * + * Args: hmm - hmm to configure. + * aacode - 0..63 vector mapping genetic code to amino acids + * estmodel - 20x64 translation matrix, w/ codon bias and substitution error + * dna2 - probability of a -1 frameshift in a triplet + * dna4 - probability of a +1 frameshift in a triplet + */ +void +Plan7ESTConfig(struct plan7_s *hmm, int *aacode, float **estmodel, + float dna2, float dna4) +{ + int k; + int x; + float p; + float *tripnull; /* UNFINISHED!!! */ + + /* configure specials */ + hmm->xt[XTN][MOVE] = 1./351.; + hmm->xt[XTN][LOOP] = 350./351.; + hmm->xt[XTE][MOVE] = 1.; + hmm->xt[XTE][LOOP] = 0.; + hmm->xt[XTC][MOVE] = 1./351.; + hmm->xt[XTC][LOOP] = 350./351.; + hmm->xt[XTJ][MOVE] = 1.; + hmm->xt[XTJ][LOOP] = 0.; + /* configure entry/exit */ + hmm->begin[1] = 0.5; + FSet(hmm->begin+2, hmm->M-1, 0.5 / ((float)hmm->M - 1.)); + hmm->end[hmm->M] = 1.; + FSet(hmm->end, hmm->M-1, 0.5 / ((float)hmm->M - 1.)); + + /* configure dna triplet/frameshift emissions */ + for (k = 1; k <= hmm->M; k++) + { + /* translate aa to triplet probabilities */ + for (x = 0; x < 64; x++) { + p = hmm->mat[k][aacode[x]] * estmodel[aacode[x]][x] * (1.-dna2-dna4); + hmm->dnam[x][k] = Prob2Score(p, tripnull[x]); + + p = hmm->ins[k][aacode[x]] * estmodel[aacode[x]][x] * (1.-dna2-dna4); + hmm->dnai[x][k] = Prob2Score(p, tripnull[x]); + } + hmm->dnam[64][k] = 0; /* ambiguous codons score 0 (danger?) */ + hmm->dna2 = Prob2Score(dna2, 1.); + hmm->dna4 = Prob2Score(dna4, 1.); + } +} + +/* Function: PrintPlan7Stats() + * + * Purpose: Given a newly constructed HMM and the tracebacks + * of the sequences it was trained on, print out all + * the interesting information at the end of hmmb + * and hmmt runs that convinces the user we actually + * did something. + * + * Args: fp - where to send the output (stdout, usually) + * hmm - the new HMM, probability form + * dsq - digitized training seqs + * nseq - number of dsq's + * tr - array of tracebacks for dsq + * + * Return: (void) + */ +void +PrintPlan7Stats(FILE *fp, struct plan7_s *hmm, char **dsq, int nseq, + struct p7trace_s **tr) +{ + int idx; /* counter for sequences */ + float score; /* an individual trace score */ + float total, best, worst; /* for the avg. and range of the scores */ + float sqsum, stddev; /* for the std. deviation of the scores */ + + P7Logoddsify(hmm, TRUE); /* make sure model scores are ready */ + + /* find individual trace scores */ + score = P7TraceScore(hmm, dsq[0], tr[0]); + total = best = worst = score; + sqsum = score * score; + for (idx = 1; idx < nseq; idx++) { + /* P7PrintTrace(stdout, tr[idx], hmm, dsq[idx]); */ + score = P7TraceScore(hmm, dsq[idx], tr[idx]); + total += score; + sqsum += score * score; + if (score > best) best = score; + if (score < worst) worst = score; + } + if (nseq > 1) { + stddev = (sqsum - (total * total / (float) nseq)) / ((float) nseq - 1.); + stddev = (stddev > 0) ? sqrt(stddev) : 0.0; + } else stddev = 0.0; + /* print out stuff. */ + fprintf(fp, "Average score: %10.2f bits\n", total / (float) nseq); + fprintf(fp, "Minimum score: %10.2f bits\n", worst); + fprintf(fp, "Maximum score: %10.2f bits\n", best); + fprintf(fp, "Std. deviation: %10.2f bits\n", stddev); +} + +/* Function: DegenerateSymbolScore() + * + * Purpose: Given a sequence character x and an hmm emission probability + * vector, calculate the log-odds (base 2) score of + * the symbol. + * + * Easy if x is in the emission alphabet, but not so easy + * is x is a degenerate symbol. The "correct" Bayesian + * philosophy is to calculate score(X) by summing over + * p(x) for all x in the degenerate symbol X to get P(X), + * doing the same sum over the prior to get F(X), and + * doing log_2 (P(X)/F(X)). This gives an X a zero score, + * for instance. + * + * Though this is correct in a formal Bayesian sense -- + * we have no information on the sequence, so we can't + * say if it's random or model, so it scores zero -- + * it sucks, big time, for scoring biological sequences. + * Sequences with lots of X's score near zero, while + * real sequences have average scores that are negative -- + * so the X-laden sequences appear to be lifted out + * of the noise of a full histogram of a database search. + * Correct or not, this is highly undesirable. + * + * So therefore we calculated the expected score of + * the degenerate symbol by summing over all x in X: + * e_x log_2 (p(x)/f(x)) + * where the expectation of x, e_x, is calculated from + * the random model. + * + * Empirically, this works; it also has a wooly hand-waving + * probabilistic justification that I'm happy enough about. + * + * Args: p - probabilities of normal symbols + * null - null emission model + * ambig - index of the degenerate character in Alphabet[] + * + * Return: the integer log odds score of x given the emission + * vector and the null model, scaled up by INTSCALE. + */ +int +DegenerateSymbolScore(float *p, float *null, int ambig) +{ + int x; + float numer = 0.; + float denom = 0.; + + for (x = 0; x < Alphabet_size; x++) { + if (Degenerate[ambig][x]) { + numer += null[x] * sreLOG2(p[x] / null[x]); + denom += null[x]; + } + } + return (int) (INTSCALE * numer / denom); +} + +/***************************************************************** + * + * Plan9/Plan7 interface + * + * Very important code during the evolutionary takeover by Plan7 -- + * convert between Krogh/Haussler and Plan7 models. + *****************************************************************/ + +/* Function: Plan9toPlan7() + * + * Purpose: Convert an old HMM into Plan7. Configures it in + * ls mode. + * + * Args: hmm - old ugly plan9 style HMM + * ret_plan7 - new wonderful Plan7 HMM + * + * Return: (void) + * Plan7 HMM is allocated here. Free w/ FreePlan7(). + */ +void +Plan9toPlan7(struct plan9_s *hmm, struct plan7_s **ret_plan7) +{ + struct plan7_s *plan7; + int k, x; + + plan7 = AllocPlan7(hmm->M); + + for (k = 1; k < hmm->M; k++) + { + plan7->t[k][TMM] = hmm->mat[k].t[MATCH]; + plan7->t[k][TMD] = hmm->mat[k].t[DELETE]; + plan7->t[k][TMI] = hmm->mat[k].t[INSERT]; + plan7->t[k][TDM] = hmm->del[k].t[MATCH]; + plan7->t[k][TDD] = hmm->del[k].t[DELETE]; + plan7->t[k][TIM] = hmm->ins[k].t[MATCH]; + plan7->t[k][TII] = hmm->ins[k].t[INSERT]; + } + + for (k = 1; k <= hmm->M; k++) + for (x = 0; x < Alphabet_size; x++) + plan7->mat[k][x] = hmm->mat[k].p[x]; + + for (k = 1; k < hmm->M; k++) + for (x = 0; x < Alphabet_size; x++) + plan7->ins[k][x] = hmm->ins[k].p[x]; + + plan7->tbd1 = hmm->mat[0].t[DELETE] / (hmm->mat[0].t[DELETE] + hmm->mat[0].t[MATCH]); + + /* We have to make up the null transition p1; use default */ + P7DefaultNullModel(plan7->null, &(plan7->p1)); + for (x = 0; x < Alphabet_size; x++) + plan7->null[x] = hmm->null[x]; + + if (hmm->name != NULL) + Plan7SetName(plan7, hmm->name); + if (hmm->flags & HMM_REF) { + strcpy(plan7->rf, hmm->ref); + plan7->flags |= PLAN7_RF; + } + if (hmm->flags & HMM_CS) { + strcpy(plan7->cs, hmm->cs); + plan7->flags |= PLAN7_CS; + } + + Plan7LSConfig(plan7); /* configure specials for ls-style alignment */ + Plan7Renormalize(plan7); /* mainly to correct for missing ID and DI */ + plan7->flags |= PLAN7_HASPROB; /* probabilities are valid */ + plan7->flags &= ~PLAN7_HASBITS; /* scores are not valid */ + *ret_plan7 = plan7; +} + + diff --git a/forester/archive/RIO/others/hmmer/src/plan9.c b/forester/archive/RIO/others/hmmer/src/plan9.c new file mode 100644 index 0000000..f7bf7bb --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/plan9.c @@ -0,0 +1,141 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* plan9.c + * SRE, Wed Apr 8 07:35:30 1998 + * + * alloc, free, and initialization of old Plan9 (HMMER 1.x) functions. + * Rescued from the wreckage of HMMER 1.9m code. + */ + +#include +#include +#include +#include +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "funcs.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + + +struct plan9_s * +P9AllocHMM(int M) /* length of model to make */ +{ + struct plan9_s *hmm; /* RETURN: blank HMM */ + + hmm = (struct plan9_s *) MallocOrDie (sizeof(struct plan9_s)); + hmm->ins = (struct basic_state *) MallocOrDie (sizeof(struct basic_state) * (M+2)); + hmm->del = (struct basic_state *) MallocOrDie (sizeof(struct basic_state) * (M+2)); + hmm->mat = (struct basic_state *) MallocOrDie (sizeof(struct basic_state) * (M+2)); + hmm->ref = (char *) MallocOrDie ((M+2) * sizeof(char)); + hmm->cs = (char *) MallocOrDie ((M+2) * sizeof(char)); + hmm->xray = (float *) MallocOrDie ((M+2) * sizeof(float) * NINPUTS); + hmm->M = M; + hmm->name = Strdup("unnamed"); /* name is not optional. */ + + hmm->flags = 0; + P9ZeroHMM(hmm); + return hmm; +} +int +P9FreeHMM(struct plan9_s *hmm) +{ + if (hmm == NULL) return 0; + free(hmm->ref); + free(hmm->cs); + free(hmm->xray); + free(hmm->name); + if (hmm->mat != NULL) free (hmm->mat); + if (hmm->ins != NULL) free (hmm->ins); + if (hmm->del != NULL) free (hmm->del); + free(hmm); + return 1; +} + + +/* Function: P9ZeroHMM() + * + * Purpose: Zero emission and transition counts in an HMM. + */ +void +P9ZeroHMM(struct plan9_s *hmm) +{ + int k, ts, idx; + + for (k = 0; k <= hmm->M+1; k++) + { + for (ts = 0; ts < 3; ts++) + { + hmm->mat[k].t[ts] = 0.0; + hmm->ins[k].t[ts] = 0.0; + hmm->del[k].t[ts] = 0.0; + } + for (idx = 0; idx < Alphabet_size; idx++) + { + hmm->mat[k].p[idx] = 0.0; + hmm->ins[k].p[idx] = 0.0; + hmm->del[k].p[idx] = 0.0; + } + } +} + + + + + +/* Function: P9Renormalize() + * + * Normalize all P distributions so they sum to 1. + * P distributions that are all 0, or contain negative + * probabilities, are left untouched. + * + * Returns 1 on success, or 0 on failure. + */ +void +P9Renormalize(struct plan9_s *hmm) +{ + int k; /* counter for states */ + + for (k = 0; k <= hmm->M ; k++) + { + /* match state transition frequencies */ + FNorm(hmm->mat[k].t, 3); + FNorm(hmm->ins[k].t, 3); + if (k > 0) FNorm(hmm->del[k].t, 3); + + if (k > 0) FNorm(hmm->mat[k].p, Alphabet_size); + FNorm(hmm->ins[k].p, Alphabet_size); + } +} + +/* Function: P9DefaultNullModel() + * + * Purpose: Set up a default random sequence model, using + * global aafq[]'s for protein or 0.25 for nucleic + * acid. randomseq is alloc'ed in caller. Alphabet information + * must already be known. + */ +void +P9DefaultNullModel(float *null) +{ + int x; + if (Alphabet_type == hmmAMINO) + for (x = 0; x < Alphabet_size; x++) + null[x] = aafq[x]; + else if (Alphabet_type == hmmNUCLEIC) + for (x = 0; x < Alphabet_size; x++) + null[x] = 0.25; + else + Die("No support for non-protein, non-nucleic acid alphabets."); +} diff --git a/forester/archive/RIO/others/hmmer/src/postprob.c b/forester/archive/RIO/others/hmmer/src/postprob.c new file mode 100644 index 0000000..e57b1fc --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/postprob.c @@ -0,0 +1,709 @@ +/************************************************************ + * Copyright (C) 1998 Ian Holmes (ihh@sanger.ac.uk) + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* postprob.c + * Author: Ian Holmes (ihh@sanger.ac.uk, Jun 5 1998) + * Derived from core_algorithms.c (SRE, Nov 11 1996) + * Incorporated SRE, Sat Nov 6 09:07:12 1999 [Cold Spring Harbor] + * + * RCS $Id: postprob.c,v 1.1.1.1 2005/03/22 08:34:15 cmzmasek Exp $ + ***************************************************************** + * IHH's notes: + * + * Functions for working with posterior probabilities, + * including unfussed "backwards" and "optimal accuracy" + * implementations. + ***************************************************************** + * SRE's notes: + * + * Simple API example: + * struct p7trace_s *tr; + * struct dpmatrix_s *fwd; + * struct dpmatrix_s *bck; + * struct dpmatrix_s *posterior; + * char *postcode; + * + * (get a traceback from somewhere: P7Viterbi() or a modelmaker) + * (get an HMM from somewhere: read file or construct it) + * P7Forward (dsq, len, hmm, &fwd); + * P7Backward(dsq, len, hmm, &bck); + * posterior = bck; -- can alloc posterior, but also can re-use bck -- + * P7EmitterPosterior(len, hmm, fwd, bck, posterior); + * postcode = PostalCode(len, posterior, tr); + * + * MSAAppendGR(msa, "POST", seqidx, postcode); -- or a similar annotation call -- + * + * free(postcode); + * FreePlan7Matrix(fwd); + * FreePlan7Matrix(bck); + * + * P7OptimalAccuracy() - the Durbin/Holmes optimal accuracy + * alignment algorithm. Takes a sequence + * and an HMM, returns an alignment as + * a trace structure. + * + * P7Backward() - The Backward() algorithm, counterpart + * of P7Forward() in core_algorithms.c. + * + * P7EmitterPosterior()- The heart of postprob.c: given a Forward + * and a Backward matrix, calculate a new matrix + * that contains the posterior probabilities + * for each symbol i being emitted by + * state k (so, \sum_k p(k | x_i) = 1.0). + * + * P7FillOptimalAccuracy() - The core DP algorithm called by + * P7OptimalAccuracy(). + * + * P7OptimalAccuracyTrace() - the traceback algorithm called by + * P7FillOptimalAccuracy(). + * + * PostalCode() - Create a character string for annotating + * an alignment. + * + * No small memory variants of these algorithms are available + * right now. + */ + +#include "structs.h" +#include "config.h" +#include "funcs.h" +#include "squid.h" + + +/* Function: P7OptimalAccuracy() + * + * Purpose: The optimal accuracy dynamic programming algorithm. + * Identical to Viterbi() except that posterior residue + * label probabilities are used as scores. + * + * Args: dsq - sequence in digitized form + * L - length of dsq + * hmm - the model + * ret_tr - RETURN: traceback; pass NULL if it's not wanted + * + * Return: log ( sum_{residues} P(label|M,D) ), as a bit score + * (i.e. log of expected accuracy) + */ +float +P7OptimalAccuracy(char *dsq, int L, struct plan7_s *hmm, struct p7trace_s **ret_tr) +{ + double sc; + struct dpmatrix_s *forward; + struct dpmatrix_s *backward; + + (void) P7Forward(dsq, L, hmm, &forward); + (void) P7Backward(dsq, L, hmm, &backward); + + P7EmitterPosterior(L, hmm, forward, backward, backward); /* Re-use backward matrix for posterior scores */ + + sc = P7FillOptimalAccuracy(L, hmm->M, backward, forward, ret_tr); /* Re-use forward matrix for optimal accuracy scores */ + + FreePlan7Matrix(forward); + FreePlan7Matrix(backward); + + return sc; +} + + + +/* Function: P7Backward() + * + * Purpose: The Backward dynamic programming algorithm. + * The scaling issue is dealt with by working in log space + * and calling ILogsum(); this is a slow but robust approach. + * + * Args: dsq - sequence in digitized form + * L - length of dsq + * hmm - the model + * ret_mx - RETURN: dp matrix; pass NULL if it's not wanted + * + * Return: log P(S|M)/P(S|R), as a bit score. + */ +float +P7Backward(char *dsq, int L, struct plan7_s *hmm, struct dpmatrix_s **ret_mx) +{ + struct dpmatrix_s *mx; + int **xmx; + int **mmx; + int **imx; + int **dmx; + int i,k; + int sc; + + /* Allocate a DP matrix with 0..L rows, 0..M-1 columns. + */ + mx = AllocPlan7Matrix(L+1, hmm->M, &xmx, &mmx, &imx, &dmx); + + /* Initialization of the L row. + * Note that xmx[i][stS] = xmx[i][stN] by definition for all i, + * so stS need not be calculated in backward DP matrices. + */ + xmx[L][XMC] = hmm->xsc[XTC][MOVE]; /* C<-T */ + xmx[L][XME] = xmx[L][XMC] + hmm->xsc[XTE][MOVE]; /* E<-C, no C-tail */ + xmx[L][XMJ] = xmx[L][XMB] = xmx[L][XMN] = -INFTY; /* need seq to get out from here */ + for (k = hmm->M; k >= 1; k--) { + mmx[L][k] = xmx[L][XME] + hmm->esc[k]; /* M<-E ... */ + mmx[L][k] += hmm->msc[(int) dsq[L]][k]; /* ... + emitted match symbol */ + imx[L][k] = dmx[L][k] = -INFTY; /* need seq to get out from here */ + } + + /* Recursion. Done as a pull. + * Note slightly wasteful boundary conditions: + * M_M precalculated, D_M set to -INFTY, + * D_1 wastefully calculated. + * Scores for transitions to D_M also have to be hacked to -INFTY, + * as Plan7Logoddsify does not do this for us (I think? - ihh). + */ + hmm->tsc[hmm->M-1][TDD] = hmm->tsc[hmm->M-1][TMD] = -INFTY; /* no D_M state -- HACK -- should be in Plan7Logoddsify */ + for (i = L-1; i >= 0; i--) + { + /* Do the special states first. + * remember, C, N and J emissions are zero score by definition + */ + xmx[i][XMC] = xmx[i+1][XMC] + hmm->xsc[XTC][LOOP]; + + xmx[i][XMB] = -INFTY; + /* The following section has been hacked to fit a bug in core_algorithms.c + * The "correct" code is: + * for (k = hmm->M; k >= 1; k--) + * xmx[i][XMB] = ILogsum(xmx[i][XMB], mmx[i+1][k] + hmm->bsc[k]; + * + * The following code gives the same results as core_algorithms.c: + */ + xmx[i][XMB] = ILogsum(xmx[i][XMB], mmx[i+1][hmm->M] + hmm->bsc[hmm->M-1]); + for (k = hmm->M-1; k >= 1; k--) + xmx[i][XMB] = ILogsum(xmx[i][XMB], mmx[i+1][k] + hmm->bsc[k]); + + xmx[i][XMJ] = ILogsum(xmx[i][XMB] + hmm->xsc[XTJ][MOVE], + xmx[i+1][XMJ] + hmm->xsc[XTJ][LOOP]); + + xmx[i][XME] = ILogsum(xmx[i][XMC] + hmm->xsc[XTE][MOVE], + xmx[i][XMJ] + hmm->xsc[XTE][LOOP]); + + xmx[i][XMN] = ILogsum(xmx[i][XMB] + hmm->xsc[XTN][MOVE], + xmx[i+1][XMN] + hmm->xsc[XTN][LOOP]); + + /* Now the main states. Note the boundary conditions at M. + */ + + if (i>0) { + mmx[i][hmm->M] = xmx[i][XME] + hmm->esc[hmm->M] + hmm->msc[(int) dsq[i]][hmm->M]; + dmx[i][hmm->M] = -INFTY; + for (k = hmm->M-1; k >= 1; k--) + { + mmx[i][k] = ILogsum(ILogsum(xmx[i][XME] + hmm->esc[k], + mmx[i+1][k+1] + hmm->tsc[k][TMM]), + ILogsum(imx[i+1][k] + hmm->tsc[k][TMI], + dmx[i][k+1] + hmm->tsc[k][TMD])); + mmx[i][k] += hmm->msc[(int) dsq[i]][k]; + + imx[i][k] = ILogsum(imx[i+1][k] + hmm->tsc[k][TII], + mmx[i+1][k+1] + hmm->tsc[k][TIM]); + imx[i][k] += hmm->isc[(int) dsq[i]][k]; + + dmx[i][k] = ILogsum(dmx[i][k+1] + hmm->tsc[k][TDD], + mmx[i+1][k+1] + hmm->tsc[k][TDM]); + + } + } + + } + + sc = xmx[0][XMN]; + + if (ret_mx != NULL) *ret_mx = mx; + else FreePlan7Matrix(mx); + + return Scorify(sc); /* the total Backward score. */ +} + + +/* Function: P7EmitterPosterior() + * + * Purpose: Combines Forward and Backward matrices into a posterior + * probability matrix. + * The entries in row i of this matrix are the logs of the + * posterior probabilities of each state emitting symbol i of + * the sequence, i.e. all entries for non-emitting states are -INFTY. + * The caller must allocate space for the matrix, although the + * backward matrix can be used instead (overwriting it will not + * compromise the algorithm). + * + * Args: L - length of sequence + * hmm - the model + * forward - pre-calculated forward matrix + * backward - pre-calculated backward matrix + * mx - pre-allocated dynamic programming matrix + * + * Return: void + */ +void +P7EmitterPosterior(int L, + struct plan7_s *hmm, + struct dpmatrix_s *forward, + struct dpmatrix_s *backward, + struct dpmatrix_s *mx) +{ + int i; + int k; + int sc; + + sc = backward->xmx[0][XMN]; + + for (i = L; i >= 1; i--) + { + mx->xmx[i][XMC] = forward->xmx[i-1][XMC] + hmm->xsc[XTC][LOOP] + backward->xmx[i][XMC] - sc; + + mx->xmx[i][XMJ] = forward->xmx[i-1][XMJ] + hmm->xsc[XTJ][LOOP] + backward->xmx[i][XMJ] - sc; + + mx->xmx[i][XMN] = forward->xmx[i-1][XMN] + hmm->xsc[XTN][LOOP] + backward->xmx[i][XMN] - sc; + + mx->xmx[i][XMB] = mx->xmx[i][XME] = -INFTY; + + for (k = 1; k < hmm->M; k++) { + mx->mmx[i][k] = backward->mmx[i][k]; + mx->mmx[i][k] += ILogsum(ILogsum(forward->mmx[i-1][k-1] + hmm->tsc[k-1][TMM], + forward->imx[i-1][k-1] + hmm->tsc[k-1][TIM]), + ILogsum(forward->xmx[i-1][XMB] + hmm->bsc[k], + forward->dmx[i-1][k-1] + hmm->tsc[k-1][TDM])); + mx->mmx[i][k] -= sc; + + mx->imx[i][k] = backward->imx[i][k]; + mx->imx[i][k] += ILogsum(forward->mmx[i-1][k] + hmm->tsc[k][TMI], + forward->imx[i-1][k] + hmm->tsc[k][TII]); + mx->imx[i][k] -= sc; + + mx->dmx[i][k] = -INFTY; + } + mx->mmx[i][hmm->M] = backward->mmx[i][hmm->M]; + mx->mmx[i][hmm->M] += ILogsum(ILogsum(forward->mmx[i-1][hmm->M-1] + hmm->tsc[hmm->M-1][TMM], + forward->imx[i-1][hmm->M-1] + hmm->tsc[hmm->M-1][TIM]), + ILogsum(forward->xmx[i-1][XMB] + hmm->bsc[hmm->M], + forward->dmx[i-1][hmm->M-1] + hmm->tsc[hmm->M-1][TDM])); + mx->mmx[i][hmm->M] -= sc; + + mx->imx[i][hmm->M] = mx->dmx[i][hmm->M] = mx->dmx[i][0] = -INFTY; + + } +} + + +/* Function: P7FillOptimalAccuracy() + * + * Purpose: The core of the optimal accuracy dynamic programming algorithm. + * Identical to Viterbi() except that scores are given by a + * posterior matrix (that the caller must pre-calculate). + * Also, the caller must pre-allocate the optimal accuracy matrix + * (this allows the forward matrix to be re-used). + * P7OptimalAccuracy() does all this for you and cleans up. + * + * + * Args: L - length of sequence + * M - length of model + * posterior - pre-calculated emitter posterior matrix + * mx - pre-allocated dynamic programming matrix + * ret_tr - RETURN: traceback; pass NULL if it's not wanted + * + * Return: log ( sum_{residues} P(label|M,D) ), as a bit score + * (i.e. log of expected accuracy) + */ +float P7FillOptimalAccuracy(int L, + int M, + struct dpmatrix_s *posterior, + struct dpmatrix_s *mx, + struct p7trace_s **ret_tr) +{ + struct p7trace_s *tr; + int **xmx; + int **mmx; + int **imx; + int **dmx; + int i,k; + int sc; + + xmx = mx->xmx; + mmx = mx->mmx; + imx = mx->imx; + dmx = mx->dmx; + + /* Initialization of the zero row. + * Each cell in the optimal accuracy matrix holds the log of the expected + * of correctly assigned symbols up to that point. + * To begin with, everything is log(0) = -INFTY. + */ + xmx[0][XMN] = xmx[0][XMB] = xmx[0][XME] = xmx[0][XMC] = xmx[0][XMJ] = -INFTY; + for (k = 0; k <= M; k++) + mmx[0][k] = imx[0][k] = dmx[0][k] = -INFTY; + + /* Recursion. Done as a pull. + * Note some slightly wasteful boundary conditions: + * D_M and I_M are wastefully calculated (they don't exist) + */ + for (i = 1; i <= L; i++) + { + mmx[i][0] = imx[i][0] = dmx[i][0] = -INFTY; + + for (k = 1; k <= M; k++) + { + /* match state */ + mmx[i][k] = -INFTY; + if ((sc = mmx[i-1][k-1]) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = imx[i-1][k-1]) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = dmx[i-1][k-1]) > mmx[i][k]) + mmx[i][k] = sc; + if ((sc = xmx[i-1][XMB]) > mmx[i][k]) + mmx[i][k] = sc; + mmx[i][k] = ILogsum(mmx[i][k], posterior->mmx[i][k]); + + /* delete state */ + dmx[i][k] = -INFTY; + if ((sc = mmx[i][k-1]) > dmx[i][k]) + dmx[i][k] = sc; + if ((sc = dmx[i][k-1]) > dmx[i][k]) + dmx[i][k] = sc; + + /* insert state */ + imx[i][k] = -INFTY; + if ((sc = mmx[i-1][k]) > imx[i][k]) + imx[i][k] = sc; + if ((sc = imx[i-1][k]) > imx[i][k]) + imx[i][k] = sc; + imx[i][k] = ILogsum(imx[i][k], posterior->imx[i][k]); + } + + /* Now the special states. Order is important here. + * remember, C and J emissions are zero score by definition, + */ + + /* N state */ + xmx[i][XMN] = -INFTY; + if ((sc = ILogsum(xmx[i-1][XMN], posterior->xmx[i][XMN])) > -INFTY) + xmx[i][XMN] = sc; + + /* E state */ + xmx[i][XME] = -INFTY; + for (k = 1; k <= M; k++) + if ((sc = mmx[i][k]) > xmx[i][XME]) + xmx[i][XME] = sc; + + /* J state */ + xmx[i][XMJ] = -INFTY; + if ((sc = ILogsum(xmx[i-1][XMJ], posterior->xmx[i][XMJ])) > -INFTY) + xmx[i][XMJ] = sc; + if ((sc = xmx[i][XME]) > xmx[i][XMJ]) /* no E->J emission */ + xmx[i][XMJ] = sc; + + /* B state */ + xmx[i][XMB] = -INFTY; + if ((sc = xmx[i][XMN]) > -INFTY) + xmx[i][XMB] = sc; + if ((sc = xmx[i][XMJ]) > xmx[i][XMB]) + xmx[i][XMB] = sc; + + /* C state */ + xmx[i][XMC] = -INFTY; + if ((sc = ILogsum(xmx[i-1][XMC], posterior->xmx[i][XMC])) > -INFTY) + xmx[i][XMC] = sc; + if ((sc = xmx[i][XME]) > xmx[i][XMC]) /* no E->C emission */ + xmx[i][XMC] = sc; + } + + /* T state (not stored) */ + sc = xmx[L][XMC]; + + if (ret_tr != NULL) { + P7OptimalAccuracyTrace(L, M, posterior, mx, &tr); + *ret_tr = tr; + } + + return Score2Prob(sc,1); /* the log of the expected accuracy. */ +} + + +/* Function: P7OptimalAccuracyTrace() + * + * Purpose: Traceback of an optimal accuracy matrix: i.e. retrieval + * of optimum alignment. + * + * Args: L - length of sequence + * M - length of HMM + * posterior - the posterior matrix + * mx - the matrix to trace back in, (L+1) x M + * ret_tr - RETURN: traceback. + * + * Return: (void) + * ret_tr is allocated here. Free using P7FreeTrace(). + */ +void +P7OptimalAccuracyTrace(int L, + int M, + struct dpmatrix_s *posterior, + struct dpmatrix_s *mx, + struct p7trace_s **ret_tr) +{ + struct p7trace_s *tr; + int curralloc; /* current allocated length of trace */ + int tpos; /* position in trace */ + int i; /* position in seq (1..L) */ + int k; /* position in model (1..M) */ + int **xmx, **mmx, **imx, **dmx; + int sc; /* temp var for pre-emission score */ + + /* Overallocate for the trace. + * S-N-B- ... - E-C-T : 6 states + L is minimum trace; + * add L more as buffer. + */ + curralloc = L * 2 + 6; + P7AllocTrace(curralloc, &tr); + + xmx = mx->xmx; + mmx = mx->mmx; + imx = mx->imx; + dmx = mx->dmx; + + /* Initialization of trace + * We do it back to front; ReverseTrace() is called later. + */ + tr->statetype[0] = STT; + tr->nodeidx[0] = 0; + tr->pos[0] = 0; + tr->statetype[1] = STC; + tr->nodeidx[1] = 0; + tr->pos[1] = 0; + tpos = 2; + i = L; /* current i (seq pos) we're trying to assign */ + + /* Traceback + */ + while (tr->statetype[tpos-1] != STS) { + switch (tr->statetype[tpos-1]) { + case STM: /* M connects from i-1,k-1, or B */ + sc = mmx[i+1][k+1]; + if (sc == ILogsum(mmx[i][k], posterior->mmx[i+1][k+1]) && i > 0 && k > 0) + { + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + } + else if (sc == ILogsum(imx[i][k], posterior->mmx[i+1][k+1]) && i > 0 && k > 0) + { + tr->statetype[tpos] = STI; + tr->nodeidx[tpos] = k; + tr->pos[tpos] = i--; + } + else if (sc == ILogsum(dmx[i][k], posterior->mmx[i+1][k+1]) && i > 0 && k > 1) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = 0; + } + else if (sc == ILogsum(xmx[i][XMB], posterior->mmx[i+1][k+1])) + { + tr->statetype[tpos] = STB; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + } + else Die("traceback failed"); + break; + + case STD: /* D connects from M,D */ + if (dmx[i][k+1] == mmx[i][k] && i > 0 && k > 0) + { + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + } + else if (dmx[i][k+1] == dmx[i][k] && k > 1) + { + tr->statetype[tpos] = STD; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = 0; + } + else Die("traceback failed"); + break; + + case STI: /* I connects from M,I */ + sc = imx[i+1][k]; + if (sc == ILogsum(mmx[i][k], posterior->imx[i+1][k]) && i > 0 && k > 0) + { + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + } + else if (sc == ILogsum(imx[i][k], posterior->imx[i+1][k]) && i > 0 && k > 0) + { + tr->statetype[tpos] = STI; + tr->nodeidx[tpos] = k; + tr->pos[tpos] = i--; + } + else Die("traceback failed"); + break; + + case STN: /* N connects from S, N */ + if (i == 0 && xmx[i][XMN] == -INFTY) + { + tr->statetype[tpos] = STS; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + } + else if (i > 0 && xmx[i+1][XMN] == ILogsum(xmx[i][XMN], posterior->xmx[i+1][XMN]) && i > 0) + { + tr->statetype[tpos] = STN; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* note convention adherence: */ + tr->pos[tpos-1] = i--; /* first N doesn't emit */ + } + else Die("traceback failed"); + break; + + case STB: /* B connects from N, J */ + if (xmx[i][XMB] == xmx[i][XMN]) + { + tr->statetype[tpos] = STN; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + } + else if (xmx[i][XMB] == xmx[i][XMJ]) + { + tr->statetype[tpos] = STJ; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; + } + else Die("traceback failed"); + break; + + case STE: /* E connects from any M state. k set here */ + for (k = M; k >= 1; k--) + if (xmx[i][XME] == mmx[i][k] && i > 0) + { + tr->statetype[tpos] = STM; + tr->nodeidx[tpos] = k--; + tr->pos[tpos] = i--; + break; + } + if (k <= 0) Die("traceback failed"); + break; + + case STC: /* C comes from C, E */ + if (xmx[i][XMC] == ILogsum(xmx[i-1][XMC], posterior->xmx[i][XMC]) && i > 0) + { + tr->statetype[tpos] = STC; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* note convention adherence: */ + tr->pos[tpos-1] = i--; /* first C doesn't emit */ + } + else if (xmx[i][XMC] == xmx[i][XME]) + { + tr->statetype[tpos] = STE; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* E is a nonemitter */ + } + else Die("Traceback failed."); + break; + + case STJ: /* J connects from E, J */ + if (xmx[i][XMJ] == ILogsum(xmx[i-1][XMJ], posterior->xmx[i][XMJ]) && i > 0) + { + tr->statetype[tpos] = STJ; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* note convention adherence: */ + tr->pos[tpos-1] = i--; /* first J doesn't emit */ + } + else if (xmx[i][XMJ] == xmx[i][XME]) + { + tr->statetype[tpos] = STE; + tr->nodeidx[tpos] = 0; + tr->pos[tpos] = 0; /* E is a nonemitter */ + } + else Die("Traceback failed."); + break; + + default: + Die("traceback failed"); + + } /* end switch over statetype[tpos-1] */ + + tpos++; + if (tpos == curralloc) + { /* grow trace if necessary */ + curralloc += L; + P7ReallocTrace(tr, curralloc); + } + + } /* end traceback, at S state; tpos == tlen now */ + tr->tlen = tpos; + P7ReverseTrace(tr); + *ret_tr = tr; + +} + + +/* Function: PostalCode() + * Date: SRE, Sun Nov 7 15:31:35 1999 [Cold Spring Harbor] + * + * Purpose: Given a traceback and one of Ian's posterior + * probability matrices, calculate a string that + * represents the confidence values on each + * residue in the sequence. + * + * The code string is 0..L-1 (L = len of target seq), + * so it's in the coordinate system of the sequence string; + * off by one from dsq; and convertible to the coordinate + * system of aseq using MakeAlignedString(). + * + * Values are 0-9,* + * for example, 9 means with >=90% posterior probabiility, + * residue i is aligned to the state k that it + * is assigned to in the given trace. + * + * Args: L - length of seq + * mx - posterior prob matrix: see P7EmitterPosterior() + * tr - a traceback to get a Postal code string for. + * + * Returns: char * array of codes, 0..L-1 + * Caller is responsible for free'ing it. + */ +static char +score2postcode(int sc) +{ + char i; + i = (char) (Score2Prob(sc, 1.) * 10.); + return ((i > 9) ? '*' : '0'+i); +} +char * +PostalCode(int L, struct dpmatrix_s *mx, struct p7trace_s *tr) +{ + int tpos; + int i; + int k; + char *postcode; + + postcode = MallocOrDie((L+1) * sizeof(char)); + for (tpos = 0; tpos < tr->tlen; tpos++) + { + i = tr->pos[tpos]; + k = tr->nodeidx[tpos]; + if (i == 0) continue; + + switch (tr->statetype[tpos]) { + case STM: postcode[i-1] = score2postcode(mx->mmx[i][k]); break; + case STI: postcode[i-1] = score2postcode(mx->imx[i][k]); break; + case STN: postcode[i-1] = score2postcode(mx->xmx[i][XMN]); break; + case STC: postcode[i-1] = score2postcode(mx->xmx[i][XMC]); break; + case STJ: postcode[i-1] = score2postcode(mx->xmx[i][XMJ]); break; + } + } + postcode[L] = '\0'; + + return postcode; +} diff --git a/forester/archive/RIO/others/hmmer/src/postprob.h b/forester/archive/RIO/others/hmmer/src/postprob.h new file mode 100644 index 0000000..b09c036 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/postprob.h @@ -0,0 +1,55 @@ +/************************************************************ + * Copyright (C) 1998 Ian Holmes (ihh@sanger.ac.uk) + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* postprob.h + * Author: Ian Holmes (ihh@sanger.ac.uk, Jun 5 1998) + * Derived from core_algorithms.c (SRE, Nov 11 1996) + * Incorporated SRE, Sat Nov 6 09:07:02 1999 + * + * Functions for working with posterior probabilities, + * including unfussed "backwards" and "optimal accuracy" + * implementations. + */ + +#ifndef POSTPROB_INCLUDED +#define POSTPROB_INCLUDED + +#include "structs.h" +#include "config.h" +#include "funcs.h" +#include "squid.h" + +/* Extra algorithms to work with posterior probabilities. + */ + +extern float P7OptimalAccuracy(char *dsq, int L, struct plan7_s *hmm, + struct p7trace_s **ret_tr); + +extern float P7Backward(char *dsq, int L, struct plan7_s *hmm, + struct dpmatrix_s **ret_mx); + +extern void P7EmitterPosterior(int L, struct plan7_s *hmm, + struct dpmatrix_s *forward, + struct dpmatrix_s *backward, + struct dpmatrix_s *mx); + +extern float P7FillOptimalAccuracy(int L, int M, + struct dpmatrix_s *posterior, + struct dpmatrix_s *mx, + struct p7trace_s **ret_tr); + +extern void P7OptimalAccuracyTrace(int L, int M, + struct dpmatrix_s *posterior, + struct dpmatrix_s *mx, + struct p7trace_s **ret_tr); + +#endif + diff --git a/forester/archive/RIO/others/hmmer/src/prior.c b/forester/archive/RIO/others/hmmer/src/prior.c new file mode 100644 index 0000000..b2475ac --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/prior.c @@ -0,0 +1,725 @@ +/***************************************************************** + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + *****************************************************************/ + +/* prior.c + * SRE, Mon Nov 18 15:44:08 1996 + * + * Support for Dirichlet prior data structure, p7prior_s. + */ + +#include "config.h" +#include "structs.h" +#include "funcs.h" +#include "squid.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +static struct p7prior_s *default_amino_prior(void); +static struct p7prior_s *default_nucleic_prior(void); + +/* Function: P7AllocPrior(), P7FreePrior() + * + * Purpose: Allocation and free'ing of a prior structure. + * Very simple, but might get more complex someday. + */ +struct p7prior_s * +P7AllocPrior(void) +{ return (struct p7prior_s *) MallocOrDie (sizeof(struct p7prior_s)); } +void +P7FreePrior(struct p7prior_s *pri) +{ free(pri); } + + +/* Function: P7LaplacePrior() + * + * Purpose: Create a Laplace plus-one prior. (single component Dirichlets). + * Global alphabet info is assumed to have been set already. + * + * Args: (void) + * + * Return: prior. Allocated here; call FreePrior() to free it. + */ +struct p7prior_s * +P7LaplacePrior(void) +{ + struct p7prior_s *pri; + + pri = P7AllocPrior(); + pri->strategy = PRI_DCHLET; + + pri->tnum = 1; + pri->tq[0] = 1.; + FSet(pri->t[0], 8, 1.); + + pri->mnum = 1; + pri->mq[0] = 1.; + FSet(pri->m[0], Alphabet_size, 1.); + + pri->inum = 1; + pri->iq[0] = 1.; + FSet(pri->i[0], Alphabet_size, 1.); + + return pri; +} + +/* Function: P7DefaultPrior() + * + * Purpose: Set up a somewhat more realistic single component + * Dirichlet prior than Laplace. + */ +struct p7prior_s * +P7DefaultPrior(void) +{ + switch (Alphabet_type) { + case hmmAMINO: return default_amino_prior(); + case hmmNUCLEIC: return default_nucleic_prior(); + case hmmNOTSETYET: Die("Can't set prior; alphabet type not set yet"); + } + /*NOTREACHED*/ + return NULL; +} + +/* Function: P7ReadPrior() + * + * Purpose: Input a prior from disk file. + */ +struct p7prior_s * +P7ReadPrior(char *prifile) +{ + FILE *fp; + struct p7prior_s *pri; + char *sptr; + int q, x; + + if ((fp = fopen(prifile, "r")) == NULL) + Die("Failed to open HMMER prior file %s\n", prifile); + pri = P7AllocPrior(); + + /* First entry is the strategy: + * Only standard Dirichlet prior (simple or mixture) is supported in Plan7 so far + */ + sptr = Getword(fp, sqdARG_STRING); + s2upper(sptr); + if (strcmp(sptr, "DIRICHLET") == 0) pri->strategy = PRI_DCHLET; + else Die("No such prior strategy %s; failed to parse file %s", sptr, prifile); + + /* Second entry is the alphabet type: + * Amino or Nucleic + */ + sptr = Getword(fp, sqdARG_STRING); + s2upper(sptr); + if (strcmp(sptr, "AMINO") == 0) + { + if (Alphabet_type != hmmAMINO) + Die("HMM and/or sequences are DNA/RNA; can't use protein prior %s", prifile); + } + else if (strcmp(sptr, "NUCLEIC") == 0) + { + if (Alphabet_type != hmmNUCLEIC) + Die("HMM and/or sequences are protein; can't use DNA/RNA prior %s", prifile); + } + else + Die("Alphabet \"%s\" in prior file %s isn't valid.", sptr, prifile); + + /* State transition priors: + * # of mixtures. + * then for each mixture: + * prior P(q) + * Dirichlet terms for Tmm, Tmi, Tmd, Tim, Tii, Tid, Tdm, Tdi, Tdd + */ + pri->tnum = atoi(Getword(fp, sqdARG_INT)); + if (pri->tnum < 0) + Die("%d is bad; need at least one state transition mixture component", pri->tnum); + if (pri->tnum > MAXDCHLET) + Die("%d is bad, too many transition components (MAXDCHLET = %d)\n", MAXDCHLET); + for (q = 0; q < pri->tnum; q++) + { + pri->tq[q] = (float) atof(Getword(fp, sqdARG_FLOAT)); + for (x = 0; x < 7; x++) + pri->t[q][x] = (float) atof(Getword(fp, sqdARG_FLOAT)); + } + + /* Match emission priors: + * # of mixtures. + * then for each mixture: + * prior P(q) + * Dirichlet terms for Alphabet_size symbols in Alphabet + */ + pri->mnum = atoi(Getword(fp, sqdARG_INT)); + if (pri->mnum < 0) + Die("%d is bad; need at least one match emission mixture component", pri->mnum); + if (pri->mnum > MAXDCHLET) + Die("%d is bad; too many match components (MAXDCHLET = %d)\n", pri->mnum, MAXDCHLET); + + for (q = 0; q < pri->mnum; q++) + { + pri->mq[q] = (float) atof(Getword(fp, sqdARG_FLOAT)); + for (x = 0; x < Alphabet_size; x++) + pri->m[q][x] = (float) atof(Getword(fp, sqdARG_FLOAT)); + } + + /* Insert emission priors: + * # of mixtures. + * then for each mixture component: + * prior P(q) + * Dirichlet terms for Alphabet_size symbols in Alphabet + */ + pri->inum = atoi(Getword(fp, sqdARG_INT)); + if (pri->inum < 0) + Die("%d is bad; need at least one insert emission mixture component", pri->inum); + if (pri->inum > MAXDCHLET) + Die("%d is bad; too many insert components (MAXDCHLET = %d)\n", pri->inum, MAXDCHLET); + for (q = 0; q < pri->inum; q++) + { + pri->iq[q] = (float) atof(Getword(fp, sqdARG_FLOAT)); + for (x = 0; x < Alphabet_size; x++) + pri->i[q][x] = (float) atof(Getword(fp, sqdARG_FLOAT)); + } + + fclose(fp); + return pri; +} + + +/* Function: PAMPrior() + * + * Purpose: Produces an ad hoc "Dirichlet mixture" prior for + * match emissions, using a PAM matrix. + * + * Side effect notice: PAMPrior() replaces the match + * emission section of an existing Dirichlet prior, + * which is /expected/ to be a simple one-component + * kind of prior. The insert emissions /must/ be a + * one-component prior (because of details in how + * PriorifyEmissionVector() is done). However, + * the transitions /could/ be a mixture Dirichlet prior + * without causing problems. In other words, the + * -p and -P options of hmmb can coexist, but there + * may be conflicts. PAMPrior() checks for these, + * so there's no serious problem, except that the + * error message from PAMPrior() might be confusing to + * a user. + */ +void +PAMPrior(char *pamfile, struct p7prior_s *pri, float wt) +{ + FILE *fp; + char *blastpamfile; /* BLAST looks in aa/ subdirectory of BLASTMAT */ + int **pam; + float scale; + int xi, xj; + int idx1, idx2; + + if (Alphabet_type != hmmAMINO) + Die("PAM prior is only valid for protein sequences"); + if (pri->strategy != PRI_DCHLET) + Die("PAM prior may only be applied over an existing Dirichlet prior"); + if (pri->inum != 1) + Die("PAM prior requires that the insert emissions be a single Dirichlet"); + if (MAXDCHLET < 20) + Die("Whoa, code is misconfigured; MAXDCHLET must be >= 20 for PAM prior"); + + blastpamfile = FileConcat("aa", pamfile); + + if ((fp = fopen(pamfile, "r")) == NULL && + (fp = EnvFileOpen(pamfile, "BLASTMAT", NULL)) == NULL && + (fp = EnvFileOpen(blastpamfile, "BLASTMAT", NULL)) == NULL) + Die("Failed to open PAM scoring matrix file %s", pamfile); + if (! ParsePAMFile(fp, &pam, &scale)) + Die("Failed to parse PAM scoring matrix file %s", pamfile); + fclose(fp); + free(blastpamfile); + + pri->strategy = PRI_PAM; + pri->mnum = 20; + + /* Convert PAM entries back to conditional prob's P(xj | xi), + * which we'll use as "pseudocounts" weighted by wt. + */ + for (xi = 0; xi < Alphabet_size; xi++) + for (xj = 0; xj < Alphabet_size; xj++) + { + idx1 = Alphabet[xi] - 'A'; + idx2 = Alphabet[xj] - 'A'; + pri->m[xi][xj] = aafq[xj] * exp((float) pam[idx1][idx2] * scale); + } + + /* Normalize so that rows add up to wt. + * i.e. Sum(xj) mat[xi][xj] = wt for every row xi + */ + for (xi = 0; xi < Alphabet_size; xi++) + { + pri->mq[xi] = 1. / Alphabet_size; + FNorm(pri->m[xi], Alphabet_size); + FScale(pri->m[xi], Alphabet_size, wt); + } + + Free2DArray((void **)pam,27); +} + + +/* Function: P7DefaultNullModel() + * + * Purpose: Set up a default random sequence model, using + * global aafq[]'s for protein or 1/Alphabet_size for anything + * else. randomseq is alloc'ed in caller. Alphabet information + * must already be known. + */ +void +P7DefaultNullModel(float *null, float *ret_p1) +{ + int x; + if (Alphabet_type == hmmAMINO) { + for (x = 0; x < Alphabet_size; x++) + null[x] = aafq[x]; + *ret_p1 = 350./351.; /* rationale: approx avg protein length. */ + } else { + for (x = 0; x < Alphabet_size; x++) + null[x] = 1.0 / (float) Alphabet_size; + *ret_p1 = 1000./1001.; /* rationale: approx inter-Alu distance. */ + } +} + +void +P7ReadNullModel(char *rndfile, float *null, float *ret_p1) +{ + FILE *fp; + char *s; + int x; + int type = 0; + + if ((fp = fopen(rndfile, "r")) == NULL) + Die("Failed to open null model file %s\n", rndfile); + if ((s = Getword(fp, sqdARG_STRING)) == NULL) goto FAILURE; + s2upper(s); + if (strcmp(s, "NUCLEIC") == 0) type = hmmNUCLEIC; + else if (strcmp(s, "AMINO") == 0) type = hmmAMINO; + else goto FAILURE; + /* check/set alphabet type */ + if (Alphabet_type == 0) + SetAlphabet(type); + else if (Alphabet_type != type) + Die("Alphabet type conflict; null model in %s is inappropriate\n", rndfile); + /* parse the file */ + for (x = 0; x < Alphabet_size; x++) { + if ((s = Getword(fp, sqdARG_FLOAT)) == NULL) goto FAILURE; + null[x] = atof(s); + } + if ((s = Getword(fp, sqdARG_FLOAT)) == NULL) goto FAILURE; + *ret_p1 = atof(s); + + fclose(fp); + return; + +FAILURE: + fclose(fp); + Die("%s is not in HMMER null model file format", rndfile); +} + + +/* Function: P7PriorifyHMM() + * + * Purpose: Add pseudocounts to an HMM using Dirichlet priors, + * and renormalize the HMM. + * + * Args: hmm -- the HMM to add counts to (counts form) + * pri -- the Dirichlet prior to use + * + * Return: (void) + * HMM returns in probability form. + */ +void +P7PriorifyHMM(struct plan7_s *hmm, struct p7prior_s *pri) +{ + int k; /* counter for model position */ + float d; /* a denominator */ + float tq[MAXDCHLET]; /* prior distribution over mixtures */ + float mq[MAXDCHLET]; /* prior distribution over mixtures */ + float iq[MAXDCHLET]; /* prior distribution over mixtures */ + + /* Model-dependent transitions are handled simply; Laplace. + */ + FSet(hmm->begin+2, hmm->M-1, 0.); /* wipe internal BM entries */ + FSet(hmm->end+1, hmm->M-1, 0.); /* wipe internal ME exits */ + d = hmm->tbd1 + hmm->begin[1] + 2.; + hmm->tbd1 = (hmm->tbd1 + 1.)/ d; + hmm->begin[1] = (hmm->begin[1] + 1.)/ d; + hmm->end[hmm->M] = 1.0; + + /* Main model transitions and emissions + */ + for (k = 1; k < hmm->M; k++) + { + /* The following code chunk is experimental. + * Collaboration with Michael Asman, Erik Sonnhammer, CGR Stockholm. + * Only activated if X-PR* annotation has been used, in which + * priors are overridden and a single Dirichlet component is + * specified for each column (using structural annotation). + * If X-PR* annotation is not used, which is usually the case, + * the following code has no effect (observe how the real prior + * distributions are copied into tq, mq, iq). + */ + if (hmm->tpri != NULL && hmm->tpri[k] >= 0) + { + if (hmm->tpri[k] >= pri->tnum) Die("X-PRT annotation out of range"); + FSet(tq, pri->tnum, 0.0); + tq[hmm->tpri[k]] = 1.0; + } + else + FCopy(tq, pri->tq, pri->tnum); + if (hmm->mpri != NULL && hmm->mpri[k] >= 0) + { + if (hmm->mpri[k] >= pri->mnum) Die("X-PRM annotation out of range"); + FSet(mq, pri->mnum, 0.0); + mq[hmm->mpri[k]] = 1.0; + } + else + FCopy(mq, pri->mq, pri->mnum); + if (hmm->ipri != NULL && hmm->ipri[k] >= 0) + { + if (hmm->ipri[k] >= pri->inum) Die("X-PRI annotation out of range"); + FSet(iq, pri->inum, 0.0); + iq[hmm->ipri[k]] = 1.0; + } + else + FCopy(iq, pri->iq, pri->inum); + + /* This is the main line of the code: + */ + P7PriorifyTransitionVector(hmm->t[k], pri, tq); + P7PriorifyEmissionVector(hmm->mat[k], pri, pri->mnum, mq, pri->m, NULL); + P7PriorifyEmissionVector(hmm->ins[k], pri, pri->inum, iq, pri->i, NULL); + } + + /* We repeat the above steps just for the final match state, M. + */ + if (hmm->mpri != NULL && hmm->mpri[hmm->M] >= 0) + { + if (hmm->mpri[hmm->M] >= pri->mnum) Die("X-PRM annotation out of range"); + FSet(mq, pri->mnum, 0.0); + mq[hmm->mpri[hmm->M]] = 1.0; + } + else + FCopy(mq, pri->mq, pri->mnum); + + P7PriorifyEmissionVector(hmm->mat[hmm->M], pri, pri->mnum, mq, pri->m, NULL); + + /* Now we're done. Convert the counts-based HMM to probabilities. + */ + Plan7Renormalize(hmm); +} + + +/* Function: P7PriorifyEmissionVector() + * + * Purpose: Add prior pseudocounts to an observed + * emission count vector and renormalize. + * + * Can return the posterior mixture probabilities + * P(q | counts) if ret_mix[MAXDCHLET] is passed. + * Else, pass NULL. + * + * Args: vec - the 4 or 20-long vector of counts to modify + * pri - prior data structure + * num - pri->mnum or pri->inum; # of mixtures + * eq - pri->mq or pri->iq; prior mixture probabilities + * e - pri->i or pri->m; Dirichlet components + * ret_mix - filled with posterior mixture probabilities, or NULL + * + * Return: (void) + * The counts in vec are changed and normalized to probabilities. + */ +void +P7PriorifyEmissionVector(float *vec, struct p7prior_s *pri, + int num, float eq[MAXDCHLET], float e[MAXDCHLET][MAXABET], + float *ret_mix) +{ + int x; /* counter over vec */ + int q; /* counter over mixtures */ + float mix[MAXDCHLET]; /* posterior distribution over mixtures */ + float totc; /* total counts */ + float tota; /* total alpha terms */ + float xi; /* X_i term, Sjolander eq. 41 */ + + /* Calculate mix[], which is the posterior probability + * P(q | n) of mixture component q given the count vector n + * + * (side effect note: note that an insert vector in a PAM prior + * is passed with num = 1, bypassing pam prior code; this means + * that inserts cannot be mixture Dirichlets...) + * [SRE, 12/24/00: the above comment is cryptic! what the hell does that + * mean, inserts can't be mixtures? doesn't seem to be true. it + * may mean that in a PAM prior, you can't have a mixture for inserts, + * but I don't even understand that. The insert vectors aren't passed + * with num=1!!] + */ + mix[0] = 1.0; + if (pri->strategy == PRI_DCHLET && num > 1) + { + for (q = 0; q < num; q++) + { + mix[q] = eq[q] > 0.0 ? log(eq[q]) : -999.; + mix[q] += Logp_cvec(vec, Alphabet_size, e[q]); + } + LogNorm(mix, num); /* now mix[q] is P(component_q | n) */ + } + else if (pri->strategy == PRI_PAM && num > 1) + { /* pam prior uses aa frequencies as `P(q|n)' */ + for (q = 0; q < Alphabet_size; q++) + mix[q] = vec[q]; + FNorm(mix, Alphabet_size); + } + + /* Convert the counts to probabilities, following Sjolander (1996) + */ + totc = FSum(vec, Alphabet_size); + for (x = 0; x < Alphabet_size; x++) { + xi = 0.0; + for (q = 0; q < num; q++) { + tota = FSum(e[q], Alphabet_size); + xi += mix[q] * (vec[x] + e[q][x]) / (totc + tota); + } + vec[x] = xi; + } + FNorm(vec, Alphabet_size); + + if (ret_mix != NULL) + for (q = 0; q < num; q++) + ret_mix[q] = mix[q]; +} + + + +/* Function: P7PriorifyTransitionVector() + * + * Purpose: Add prior pseudocounts to transition vector, + * which contains three different probability vectors + * for m, d, and i. + * + * Args: t - state transitions, counts: 3 for M, 2 for I, 2 for D. + * prior - Dirichlet prior information + * tq - prior distribution over Dirichlet components. + * (overrides prior->iq[]; used for alternative + * methods of conditioning prior on structural data) + * + * Return: (void) + * t is changed, and renormalized -- comes back as + * probability vectors. + */ +void +P7PriorifyTransitionVector(float *t, struct p7prior_s *prior, + float tq[MAXDCHLET]) +{ + int ts; + int q; + float mix[MAXDCHLET]; + float totm, totd, toti; /* total counts in three transition vecs */ + float xi; /* Sjolander's X_i term */ + + mix[0] = 1.0; /* default is simple one component */ + if ((prior->strategy == PRI_DCHLET || prior->strategy == PRI_PAM) && prior->mnum > 1) + { + for (q = 0; q < prior->tnum; q++) + { + mix[q] = tq[q] > 0.0 ? log(tq[q]) : -999.; + mix[q] += Logp_cvec(t, 3, prior->t[q]); /* 3 match */ + mix[q] += Logp_cvec(t+3, 2, prior->t[q]+3); /* 2 insert */ + mix[q] += Logp_cvec(t+5, 2, prior->t[q]+5); /* 2 delete */ + } + LogNorm(mix, prior->tnum); /* mix[q] is now P(q | counts) */ + } + /* precalc some denominators */ + totm = FSum(t,3); + toti = t[TIM] + t[TII]; + totd = t[TDM] + t[TDD]; + + for (ts = 0; ts < 7; ts++) + { + xi = 0.0; + for (q = 0; q < prior->tnum; q++) + { + switch (ts) { + case TMM: case TMI: case TMD: + xi += mix[q] * (t[ts] + prior->t[q][ts]) / + (totm + FSum(prior->t[q], 3)); + break; + case TIM: case TII: + xi += mix[q] * (t[ts] + prior->t[q][ts]) / + (toti + prior->t[q][TIM] + prior->t[q][TII]); + break; + case TDM: case TDD: + xi += mix[q] * (t[ts] + prior->t[q][ts]) / + (totd + prior->t[q][TDM] + prior->t[q][TDD]); + break; + } + } + t[ts] = xi; + } + FNorm(t, 3); /* match */ + FNorm(t+3, 2); /* insert */ + FNorm(t+5, 2); /* delete */ +} + + +/* Function: default_amino_prior() + * + * Purpose: Set the default protein prior. + */ +static struct p7prior_s * +default_amino_prior(void) +{ + struct p7prior_s *pri; + int q, x; + /* default match mixture coefficients */ + static float defmq[9] = { + 0.178091, 0.056591, 0.0960191, 0.0781233, 0.0834977, + 0.0904123, 0.114468, 0.0682132, 0.234585 }; + + /* default match mixture Dirichlet components */ + static float defm[9][20] = { + { 0.270671, 0.039848, 0.017576, 0.016415, 0.014268, + 0.131916, 0.012391, 0.022599, 0.020358, 0.030727, + 0.015315, 0.048298, 0.053803, 0.020662, 0.023612, + 0.216147, 0.147226, 0.065438, 0.003758, 0.009621 }, + { 0.021465, 0.010300, 0.011741, 0.010883, 0.385651, + 0.016416, 0.076196, 0.035329, 0.013921, 0.093517, + 0.022034, 0.028593, 0.013086, 0.023011, 0.018866, + 0.029156, 0.018153, 0.036100, 0.071770, 0.419641 }, + { 0.561459, 0.045448, 0.438366, 0.764167, 0.087364, + 0.259114, 0.214940, 0.145928, 0.762204, 0.247320, + 0.118662, 0.441564, 0.174822, 0.530840, 0.465529, + 0.583402, 0.445586, 0.227050, 0.029510, 0.121090 }, + { 0.070143, 0.011140, 0.019479, 0.094657, 0.013162, + 0.048038, 0.077000, 0.032939, 0.576639, 0.072293, + 0.028240, 0.080372, 0.037661, 0.185037, 0.506783, + 0.073732, 0.071587, 0.042532, 0.011254, 0.028723 }, + { 0.041103, 0.014794, 0.005610, 0.010216, 0.153602, + 0.007797, 0.007175, 0.299635, 0.010849, 0.999446, + 0.210189, 0.006127, 0.013021, 0.019798, 0.014509, + 0.012049, 0.035799, 0.180085, 0.012744, 0.026466 }, + { 0.115607, 0.037381, 0.012414, 0.018179, 0.051778, + 0.017255, 0.004911, 0.796882, 0.017074, 0.285858, + 0.075811, 0.014548, 0.015092, 0.011382, 0.012696, + 0.027535, 0.088333, 0.944340, 0.004373, 0.016741 }, + { 0.093461, 0.004737, 0.387252, 0.347841, 0.010822, + 0.105877, 0.049776, 0.014963, 0.094276, 0.027761, + 0.010040, 0.187869, 0.050018, 0.110039, 0.038668, + 0.119471, 0.065802, 0.025430, 0.003215, 0.018742 }, + { 0.452171, 0.114613, 0.062460, 0.115702, 0.284246, + 0.140204, 0.100358, 0.550230, 0.143995, 0.700649, + 0.276580, 0.118569, 0.097470, 0.126673, 0.143634, + 0.278983, 0.358482, 0.661750, 0.061533, 0.199373 }, + { 0.005193, 0.004039, 0.006722, 0.006121, 0.003468, + 0.016931, 0.003647, 0.002184, 0.005019, 0.005990, + 0.001473, 0.004158, 0.009055, 0.003630, 0.006583, + 0.003172, 0.003690, 0.002967, 0.002772, 0.002686 }, + }; + + pri = P7AllocPrior(); + pri->strategy = PRI_DCHLET; + + /* Transition priors are subjective, but borrowed from GJM's estimations + * on Pfam + */ + pri->tnum = 1; + pri->tq[0] = 1.0; + pri->t[0][TMM] = 0.7939; + pri->t[0][TMI] = 0.0278; + pri->t[0][TMD] = 0.0135; + pri->t[0][TIM] = 0.1551; + pri->t[0][TII] = 0.1331; + pri->t[0][TDM] = 0.9002; + pri->t[0][TDD] = 0.5630; + + /* Match emission priors are a mixture Dirichlet, + * from Kimmen Sjolander (Blocks9) + */ + pri->mnum = 9; + for (q = 0; q < pri->mnum; q++) + { + pri->mq[q] = defmq[q]; + for (x = 0; x < 20; x++) + pri->m[q][x] = defm[q][x]; + } + + /* These insert emission priors are subjective. Observed frequencies + * were obtained from PFAM 1.0, 10 Nov 96; + * see ~/projects/plan7/InsertStatistics. + * Inserts are slightly biased towards polar residues and away from + * hydrophobic residues. + */ + pri->inum = 1; + pri->iq[0] = 1.; + pri->i[0][0] = 681.; /* A */ + pri->i[0][1] = 120.; /* C */ + pri->i[0][2] = 623.; /* D */ + pri->i[0][3] = 651.; /* E */ + pri->i[0][4] = 313.; /* F */ + pri->i[0][5] = 902.; /* G */ + pri->i[0][6] = 241.; /* H */ + pri->i[0][7] = 371.; /* I */ + pri->i[0][8] = 687.; /* K */ + pri->i[0][9] = 676.; /* L */ + pri->i[0][10] = 143.; /* M */ + pri->i[0][11] = 548.; /* N */ + pri->i[0][12] = 647.; /* P */ + pri->i[0][13] = 415.; /* Q */ + pri->i[0][14] = 551.; /* R */ + pri->i[0][15] = 926.; /* S */ + pri->i[0][16] = 623.; /* T */ + pri->i[0][17] = 505.; /* V */ + pri->i[0][18] = 102.; /* W */ + pri->i[0][19] = 269.; /* Y */ + + return pri; +} + + +/* Function: default_nucleic_prior() + * + * Purpose: Set the default DNA prior. (for now, almost a Laplace) + */ +static struct p7prior_s * +default_nucleic_prior(void) +{ + struct p7prior_s *pri; + + pri = P7AllocPrior(); + pri->strategy = PRI_DCHLET; + + /* The use of the Pfam-trained amino acid transition priors + * here is TOTALLY bogus. But it works better than a straight + * Laplace, esp. for Maxmodelmaker(). For example, a Laplace + * prior builds M=1 models for a single sequence GAATTC (at + * one time an open "bug"). + */ + pri->tnum = 1; + pri->tq[0] = 1.; + pri->t[0][TMM] = 0.7939; + pri->t[0][TMI] = 0.0278; + pri->t[0][TMD] = 0.0135; + pri->t[0][TIM] = 0.1551; + pri->t[0][TII] = 0.1331; + pri->t[0][TDM] = 0.9002; + pri->t[0][TDD] = 0.5630; + + pri->mnum = 1; + pri->mq[0] = 1.; + FSet(pri->m[0], Alphabet_size, 1.); + + pri->inum = 1; + pri->iq[0] = 1.; + FSet(pri->i[0], Alphabet_size, 1.); + + return pri; +} + diff --git a/forester/archive/RIO/others/hmmer/src/pvm.c b/forester/archive/RIO/others/hmmer/src/pvm.c new file mode 100644 index 0000000..fd5b4bb --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/pvm.c @@ -0,0 +1,453 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* pvm.c + * SRE, Wed Aug 5 15:40:09 1998 [St. Louis] + * + * PVM code shared amongst pvm masters and slaves. + * + * CVS $Id: pvm.c,v 1.1.1.1 2005/03/22 08:34:00 cmzmasek Exp $ + */ +#ifdef HMMER_PVM + +#include +#include +#include +#include +#include + +#include "version.h" +#include "structs.h" +#include "funcs.h" +#include "squid.h" +#include "sqfuncs.h" + +/* Function: PVMSpawnSlaves() + * Date: SRE, Wed Aug 19 14:01:39 1998 [St. Louis] + * + * Purpose: Spawn the slaves. + * We use the "speed" field for each host to + * determine how many tasks should be started + * on it. 1000 indicates a single processor; + * 2000 indicates a dual processor; etc. + * Since hmmpfam-pvm load balances automatically, + * the relative speed of the processor(s) is + * irrelevant. + * + * Args: slave - name of slave process to spawn ("hmmpfam-slave") + * ret_tid - RETURN: malloc'ed list of slave tid's. + * ret_nslaves - RETURN: total number of slaves. + * + * Returns: (void). + * caller must free() ret_tid. + */ +void +PVMSpawnSlaves(char *slave, int **ret_tid, int *ret_nslaves) +{ + struct pvmhostinfo *hostp; + int nodes; /* total number of nodes in the VM */ + int nslaves; /* RETURN: total number of slaves */ + int ntasks; /* number of tasks to start on this node */ + int code; /* a code returned from a PVM call */ + int *tid; /* array of slave task tids */ + int *dtid; /* array of host PVMD tids; for pvm_notify() */ + int i; + + SQD_DPRINTF1(("requesting PVM configuration...\n")); + if (pvm_config(&nodes, NULL, &hostp) != 0) Die("PVM not responding"); + dtid = MallocOrDie(sizeof(int) * nodes); + nslaves = 0; + for (i = 0; i < nodes; i++) + { + dtid[i] = hostp[i].hi_tid; + ntasks = hostp[i].hi_speed / 1000; + if (ntasks == 0) continue; + + if (nslaves == 0) tid = MallocOrDie(sizeof(int) * ntasks); + else tid = ReallocOrDie(tid, sizeof(int) * (ntasks+nslaves)); + code = pvm_spawn(slave, NULL, PvmTaskHost, hostp[i].hi_name, ntasks, tid + nslaves); + if (code < ntasks) { /* Careful error diagnostics. Important! */ + pvm_exit(); + switch (*(tid+nslaves)) { + case PvmBadParam: + Die("pvm_spawn claims PvmBadParam - code error?"); + case PvmNoHost: + Die("pvm_spawn: host %d (%s): not in virtual machine", + i, hostp[i].hi_name); + case PvmNoFile: + Die("pvm_spawn: host %d (%s): %s not in path", + i+1, hostp[i].hi_name, slave); + case PvmNoMem: + Die("pvm_spawn claims that host %s has insufficient memory", + hostp[i].hi_name); + case PvmSysErr: + Die("pvm_spawn: host %d (%s): pvmd not responding", + i+1, hostp[i].hi_name); + case PvmOutOfRes: + Die("pvm_spawn claims it is out of resources."); + default: + Die("Spawned too few slaves on node %s; expected %d got %d\n", hostp[i].hi_name, ntasks, code); + } + } + nslaves += ntasks; + SQD_DPRINTF1(("Spawned %d slaves on host %s...\n", ntasks, hostp[i].hi_name)); + } + if (nslaves == 0) { pvm_exit(); Die("No slaves were spawned"); } + + /* Arrange to be notified in case of trouble + */ + if (pvm_notify(PvmTaskExit, HMMPVM_TASK_TROUBLE, nslaves, tid) != 0) + { pvm_exit(); Die("pvm_notify() unexpectedly failed"); } + if (pvm_notify(PvmHostDelete, HMMPVM_HOST_TROUBLE, nodes, dtid) != 0) + { pvm_exit(); Die("pvm_notify() unexpectedly failed"); } + + *ret_tid = tid; + *ret_nslaves = nslaves; + free(dtid); + return; +} + +/* Function: PVMConfirmSlaves() + * Date: SRE, Mon Oct 26 17:31:42 1998 [St. Louis] + * + * Purpose: Make sure all the slaves initialized properly; + * after the master spawns and initializes them, + * they're supposed to send back a code. Valid + * codes are in structs.h and include: + * HMMPVM_OK everything's fine + * HMMPVM_NO_HMMFILE file not found (hmmpfam) + * HMMPVM_NO_INDEX no SSI file found (hmmpfam) + * HMMPVM_BAD_INIT miscellaneous error + * They also send back the RELEASE code, which + * must match the master. This was added as an + * integrity check for bug#1. + * + * Args: slave_tid array of nslaves TIDs + * nslaves number of slaves + * + * Returns: (void) + * If everything isn't OK, we Die() here. + */ +void +PVMConfirmSlaves(int *slave_tid, int nslaves) +{ + struct pvmhostinfo *hostp; + int nodes; + int i; + struct timeval tmout; + int code; /* code returned by slave */ + int bufid; + char *slaverelease; + + tmout.tv_sec = 5; /* wait 5 sec before giving up on a slave. */ + tmout.tv_usec = 0; + + SQD_DPRINTF1(("requesting PVM configuration...\n")); + if (pvm_config(&nodes, NULL, &hostp) != 0) Die("PVM not responding"); + SQD_DPRINTF1(("Slaves, count off!\n")); + for (i = 0; i < nslaves; i++) + { + /* Do a timeout receive. If we don't hear back pronto + * from our slaves, we've got a problem. + */ + if ((bufid = pvm_trecv(-1, HMMPVM_RESULTS, &tmout)) <= 0) + { + SQD_DPRINTF1(("Slave %d (%s) gives bufid %d.\n", i, hostp[i].hi_name, bufid)); + PVMKillSlaves(slave_tid, nslaves); + pvm_exit(); + Die("One or more slaves started but died before initializing."); + } + + SQD_DPRINTF1(("Slave %d (%s): present, sir!\n", i, hostp[i].hi_name)); + pvm_upkint(&code, 1, 1); + slaverelease = PVMUnpackString(); + + if (code != HMMPVM_OK) + { + PVMKillSlaves(slave_tid, nslaves); + pvm_exit(); + switch (code) { + case HMMPVM_NO_HMMFILE: + Die("One or more PVM slaves couldn't open hmm file. Check installation."); + case HMMPVM_NO_INDEX: + Die("One or more PVM slaves couldn't open SSI index for hmm file. Check installation."); + case HMMPVM_BAD_INIT: + Die("One or more PVM slaves reports a failure to initialize."); + default: + Die("Unknown error code. A slave is confused."); + } + } + + if (strcmp(slaverelease, RELEASE) != 0) + { + PVMKillSlaves(slave_tid, nslaves); + pvm_exit(); + Die("Slave %d reports that it's running release %s, which doesn't match the master (%s)", i, slaverelease, RELEASE); + } + } +} + + + +/* Function: PVMCheckSlaves() + * Date: SRE, Fri Aug 14 09:04:25 1998 [St. Louis] + * + * Purpose: Make sure all the slaves are alive. If they + * aren't, kill the rest, and die. + * + * Args: slave_tid - array of slave TIDs + * nslaves - number of slaves + * + * Returns: void + */ +void +PVMCheckSlaves(int *slave_tid, int nslaves) +{ + int trouble; /* non-zero if a trouble message is waiting */ + + trouble = pvm_nrecv(-1, HMMPVM_TASK_TROUBLE); + if (trouble > 0) + { + PVMKillSlaves(slave_tid, nslaves); + pvm_exit(); Die("One or more slave tasks exited prematurely. Shutting down."); + } + trouble = pvm_nrecv(-1, HMMPVM_HOST_TROUBLE); + if (trouble > 0) + { + PVMKillSlaves(slave_tid, nslaves); + pvm_exit(); Die("One or more hosts left the PVM unexpectedly. Shutting down."); + } +} + +/* Function: PVMKillSlaves() + * Date: SRE, Thu Aug 13 16:27:40 1998 [St. Louis] + * + * Purpose: shut down the slaves, after a fatal error. + * + * Args: slave_tid - array of slave tids + * nslaves - number of slaves + * + * Returns: void + */ +void +PVMKillSlaves(int *slave_tid, int nslaves) +{ + int i; + + for (i = 0; i < nslaves; i++) + if (pvm_kill(slave_tid[i]) != 0) + Warn("a slave refuses to die"); + return; +} + + +/* Function: PVMPackString() + * Date: SRE, Tue Aug 18 14:08:05 1998 [St. Louis] + * + * Purpose: pack a variable length string for sending over PVM, + * sending its length first so the receiver can + * malloc appropriately. + * + * Args: s - the string to send + * + * Returns: 1 on success. 0 on failure. + */ +int +PVMPackString(char *s) +{ + int len; + + len = (s == NULL) ? -1 : strlen(s); + if (pvm_pkint(&len, 1, 1) != 0) return 0; + if (len >= 0) + if (pvm_pkstr(s) != 0) return 0; + return 1; +} + +/* Function: PVMUnpackString() + * Date: SRE, Tue Aug 18 14:11:04 1998 [St. Louis] + * + * Purpose: unpack a string. + * + * Args: (void) + * + * Returns: ptr to string. + */ +char * +PVMUnpackString(void) +{ + int len; + char *s; + + if (pvm_upkint(&len, 1, 1) != 0) return NULL; + if (len == -1) return NULL; + + s = MallocOrDie(sizeof(char) * (len+1)); + if (pvm_upkstr(s) != 0) return NULL; + return s; +} + + +/* Function: PVMPackTrace() + * Date: SRE, Wed Aug 5 15:41:36 1998 [St. Louis] + * + * Purpose: Pack a trace structure for a PVM send. + * The caller is responsible for calling pvm_initsend() before, + * and pvm_send() after packing. + * + * Args: tr - the trace structure to pack. + * + * Returns: 1 on success, 0 on failure. + */ +int +PVMPackTrace(struct p7trace_s *tr) +{ + if (pvm_pkint(&(tr->tlen), 1, 1) < 0) return 0; + if (pvm_pkbyte(tr->statetype, tr->tlen, 1) < 0) return 0; + if (pvm_pkint(tr->nodeidx, tr->tlen, 1) < 0) return 0; + if (pvm_pkint(tr->pos, tr->tlen, 1) < 0) return 0; + return 1; +} + +/* Function: PVMUnpackTrace() + * Date: SRE, Wed Aug 5 15:51:03 1998 [St. Louis] + * + * Purpose: Unpack a trace structure from a PVM send. + * Caller is responsible for calling for a pvm_recv() + * before calling this. + * + * Args: none. + * + * Returns: ptr to alloc'ed trace, or NULL on failure. + * caller free's returned trace with P7FreeTrace(). + */ +struct p7trace_s * +PVMUnpackTrace(void) +{ + struct p7trace_s *tr; + int tlen; + + pvm_upkint(&tlen, 1, 1); + P7AllocTrace(tlen, &tr); + if (pvm_upkbyte(tr->statetype, tlen, 1) < 0) { P7FreeTrace(tr); return NULL;} + if (pvm_upkint(tr->nodeidx, tlen, 1) < 0) { P7FreeTrace(tr); return NULL;} + if (pvm_upkint(tr->pos, tlen, 1) < 0) { P7FreeTrace(tr); return NULL;} + tr->tlen = tlen; + return tr; +} + + +/* Function: PVMPackHMM() + * Date: SRE, Tue Aug 18 11:47:44 1998 [St. Louis] + * + * Purpose: Pack an HMM for sending over PVM. + * + * Args: hmm - the HMM to send. + * + * Returns: 1 on success, 0 on failure + */ +int +PVMPackHMM(struct plan7_s *hmm) +{ + int k; + int sendflags; /* HMM flags to send */ + + sendflags = hmm->flags; + sendflags &= ~PLAN7_HASBITS; /* no log odds scores sent */ + sendflags &= ~PLAN7_HASDNA; /* no DNA scores sent */ + + if (pvm_pkint(&(hmm->M), 1, 1) != 0) return 0; + if (pvm_pkint(&sendflags, 1, 1) != 0) return 0; + if (! PVMPackString(hmm->name)) return 0; + if (hmm->flags & PLAN7_DESC) { if (!PVMPackString(hmm->desc)) return 0; } + if (hmm->flags & PLAN7_RF) { if (!PVMPackString(hmm->rf)) return 0; } + if (hmm->flags & PLAN7_CS) { if (!PVMPackString(hmm->cs)) return 0; } + if (! PVMPackString(hmm->comlog)) return 0; + if (pvm_pkint(&(hmm->nseq), 1, 1) != 0) return 0; + if (!PVMPackString(hmm->ctime)) return 0; + if (hmm->flags & PLAN7_MAP) { if (pvm_pkint(hmm->map, hmm->M+1, 1) != 0) return 0; } + if (pvm_pkint(&(hmm->checksum), 1, 1) != 0) return 0; + + for (k = 1; k < hmm->M; k++) + if (pvm_pkfloat(hmm->t[k], 7, 1) != 0) return 0; + for (k = 1; k <= hmm->M; k++) + if (pvm_pkfloat(hmm->mat[k], Alphabet_size, 1) != 0) return 0; + for (k = 1; k < hmm->M; k++) + if (pvm_pkfloat(hmm->ins[k], Alphabet_size, 1) != 0) return 0; + if (pvm_pkfloat(&(hmm->tbd1), 1, 1) != 0) return 0; + for (k = 0; k < 4; k++) + if (pvm_pkfloat(hmm->xt[k], 2, 1) != 0) return 0; + if (pvm_pkfloat(hmm->begin, hmm->M+1, 1) != 0) return 0; + if (pvm_pkfloat(hmm->end, hmm->M+1, 1) != 0) return 0; + if (pvm_pkfloat(hmm->null, Alphabet_size, 1) != 0) return 0; + if (pvm_pkfloat(&(hmm->p1), 1, 1) != 0) return 0; + if (hmm->flags & PLAN7_STATS) + { + if (pvm_pkfloat(&(hmm->mu), 1, 1) != 0) return 0; + if (pvm_pkfloat(&(hmm->lambda), 1, 1) != 0) return 0; + } + return 1; +} + + +/* Function: PVMUnpackHMM() + * Date: SRE, Tue Aug 18 13:56:13 1998 [St. Louis] + * + * Purpose: Unpack an HMM from PVM. + * + * Args: (void) + * + * Returns: ptr to HMM, or NULL + */ +struct plan7_s * +PVMUnpackHMM(void) +{ + struct plan7_s *hmm; + int k; + int M; + + if (pvm_upkint(&(M), 1, 1) != 0) return NULL; + hmm = AllocPlan7(M); + + if (pvm_upkint(&(hmm->flags), 1, 1) != 0) return NULL; + if ((hmm->name = PVMUnpackString()) == NULL) return NULL; + if (hmm->flags & PLAN7_DESC) { if ((hmm->desc = PVMUnpackString()) == NULL) return NULL; } + if (hmm->flags & PLAN7_RF) { if ((hmm->rf = PVMUnpackString()) == NULL) return NULL; } + if (hmm->flags & PLAN7_CS) { if ((hmm->cs = PVMUnpackString()) == NULL) return NULL; } + + if ((hmm->comlog = PVMUnpackString()) == NULL) return NULL; + if (pvm_upkint(&(hmm->nseq), 1, 1) != 0) return NULL; + if ((hmm->ctime = PVMUnpackString()) == NULL) return NULL; + if (hmm->flags & PLAN7_MAP) { if (pvm_upkint(hmm->map, hmm->M+1, 1) != 0) return NULL; } + if (pvm_upkint(&(hmm->checksum), 1, 1) != 0) return NULL; + + for (k = 1; k < hmm->M; k++) + if (pvm_upkfloat(hmm->t[k], 7, 1) != 0) return NULL; + for (k = 1; k <= hmm->M; k++) + if (pvm_upkfloat(hmm->mat[k], Alphabet_size, 1) != 0) return NULL; + for (k = 1; k < hmm->M; k++) + if (pvm_upkfloat(hmm->ins[k], Alphabet_size, 1) != 0) return NULL; + if (pvm_upkfloat(&(hmm->tbd1), 1, 1) != 0) return NULL; + for (k = 0; k < 4; k++) + if (pvm_upkfloat(hmm->xt[k], 2, 1) != 0) return NULL; + if (pvm_upkfloat(hmm->begin, hmm->M+1, 1) != 0) return NULL; + if (pvm_upkfloat(hmm->end, hmm->M+1, 1) != 0) return NULL; + if (pvm_upkfloat(hmm->null, Alphabet_size, 1) != 0) return NULL; + if (pvm_upkfloat(&(hmm->p1), 1, 1) != 0) return NULL; + if (hmm->flags & PLAN7_STATS) + { + if (pvm_upkfloat(&(hmm->mu), 1, 1) != 0) return NULL; + if (pvm_upkfloat(&(hmm->lambda), 1, 1) != 0) return NULL; + } + return hmm; +} + + +#endif /* HMMER_PVM */ diff --git a/forester/archive/RIO/others/hmmer/src/states.c b/forester/archive/RIO/others/hmmer/src/states.c new file mode 100644 index 0000000..0fb7e50 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/states.c @@ -0,0 +1,444 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile-HMMs + * Copyright (C) 1992-1997 Sean R. Eddy + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and + * GNULICENSE for details. + * + ************************************************************/ + +/* states.c + * + * alloc, free, and initialization of state structures + */ + +#include +#include +#include +#include +#include "squid.h" +#include "config.h" +#include "structs.h" +#include "funcs.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + + +struct hmm_struc * +AllocHMM(int M) /* length of model to make */ +{ + struct hmm_struc *hmm; /* RETURN: blank HMM */ + + hmm = (struct hmm_struc *) MallocOrDie (sizeof(struct hmm_struc)); + hmm->ins = (struct basic_state *) MallocOrDie (sizeof(struct basic_state) * (M+2)); + hmm->del = (struct basic_state *) MallocOrDie (sizeof(struct basic_state) * (M+2)); + hmm->mat = (struct basic_state *) MallocOrDie (sizeof(struct basic_state) * (M+2)); + hmm->ref = (char *) MallocOrDie ((M+2) * sizeof(char)); + hmm->cs = (char *) MallocOrDie ((M+2) * sizeof(char)); + hmm->xray = (float *) MallocOrDie ((M+2) * sizeof(float) * NINPUTS); + hmm->M = M; + hmm->name = Strdup("unnamed"); /* name is not optional. */ + + hmm->flags = 0; + ZeroHMM(hmm); + return hmm; +} + +/* Function: ZeroHMM() + * + * Purpose: Zero emission and transition counts in an HMM. + */ +void +ZeroHMM(struct hmm_struc *hmm) +{ + int k, ts, idx; + + for (k = 0; k <= hmm->M+1; k++) + { + for (ts = 0; ts < 3; ts++) + { + hmm->mat[k].t[ts] = 0.0; + hmm->ins[k].t[ts] = 0.0; + hmm->del[k].t[ts] = 0.0; + } + for (idx = 0; idx < Alphabet_size; idx++) + { + hmm->mat[k].p[idx] = 0.0; + hmm->ins[k].p[idx] = 0.0; + hmm->del[k].p[idx] = 0.0; + } + } +} + + +/* Function: LogifyHMM() + * + * Purpose: Convert a probability-form HMM to log probabilities. + * Best to do this on a modifiable copy of an HMM. + */ +void +LogifyHMM(struct hmm_struc *hmm) +{ + int k, ts, idx; + + for (k = 0; k <= hmm->M+1; k++) + { + for (ts = 0; ts < 3; ts++) + { + hmm->mat[k].t[ts] = sreLOG2(hmm->mat[k].t[ts]); + hmm->ins[k].t[ts] = sreLOG2(hmm->ins[k].t[ts]); + hmm->del[k].t[ts] = sreLOG2(hmm->del[k].t[ts]); + } + for (idx = 0; idx < Alphabet_size; idx++) + { + hmm->mat[k].p[idx] = sreLOG2(hmm->mat[k].p[idx]); + hmm->ins[k].p[idx] = sreLOG2(hmm->ins[k].p[idx]); + } + } +} + +/* Function: LogoddsifyHMM() + * + * Convert a probability form HMM to log odds scores. + * Best to do this on a modifiable copy of an HMM. + */ +void +LogoddsifyHMM(struct hmm_struc *hmm) +{ + int k, ts, x; + + for (k = 0; k <= hmm->M+1; k++) + { + for (ts = 0; ts < 3; ts++) + { + hmm->mat[k].t[ts] = sreLOG2(hmm->mat[k].t[ts]); + hmm->ins[k].t[ts] = sreLOG2(hmm->ins[k].t[ts]); + hmm->del[k].t[ts] = sreLOG2(hmm->del[k].t[ts]); + } + for (x = 0; x < Alphabet_size; x++) + { + hmm->mat[k].p[x] = sreLOG2(hmm->mat[k].p[x]) - sreLOG2(hmm->null[x]); + hmm->ins[k].p[x] = sreLOG2(hmm->ins[k].p[x]) - sreLOG2(hmm->null[x]); + } + } +} + + +/* Function: WriteFlatPriorHMM() + * + * Purpose: Fill an HMM with expected probabilities according + * to a given prior. Used to construct "flat" initial + * models for hmmt. + */ +int +WriteFlatPriorHMM(struct hmm_struc *hmm, struct prior_s *prior) +{ + int k; /* counter across model */ + int q; /* counter over mixtures */ + int x; /* counter over symbols or transitions */ + float malpha; /* alpha for mixture */ + float ialpha; /* alpha for insert mixture */ + float dalpha; /* alpha for delete mixture */ + + for (k = 0; k <= hmm->M; k++) + { + /* xray info for structure prior */ + if (prior->strategy == PRI_STRUCT) + { + hmm->xray[k*NINPUTS + XRAY_bias] = 1.0; + hmm->xray[k*NINPUTS + XRAY_E] = 0.0; + hmm->xray[k*NINPUTS + XRAY_H] = 0.0; + hmm->xray[k*NINPUTS + XRAY_SA] = 0.0; + } + /* match symbol emissions */ + for (x = 0; x < Alphabet_size; x++) + hmm->mat[k].p[x] = 0.0; + if (k > 0) + for (q = 0; q < prior->mnum; q++) + { + if (prior->strategy == PRI_STRUCT) + prior->mq[q] = 1.0 / prior->mnum; + malpha = 0.0; + for (x = 0; x < Alphabet_size; x++) + malpha += prior->mat[q][x]; + for (x = 0; x < Alphabet_size; x++) + hmm->mat[k].p[x] += prior->mq[q] * prior->mat[q][x] / malpha; + } + /* insert emissions */ + for (x = 0; x < Alphabet_size; x++) + hmm->ins[k].p[x] = 0.0; + for (q = 0; q < prior->inum; q++) + { + if (prior->strategy == PRI_STRUCT) + prior->iq[q] = 1.0 / prior->inum; + ialpha = 0.0; + for (x = 0; x < Alphabet_size; x++) + ialpha += prior->ins[q][x]; + for (x = 0; x < Alphabet_size; x++) + hmm->ins[k].p[x] += prior->iq[q] * prior->ins[q][x] / ialpha; + } + + /* state transitions */ + for (x = 0; x < 3; x++) + hmm->mat[k].t[x] = hmm->ins[k].t[x] = hmm->del[k].t[x] = 0.0; + for (q = 0; q < prior->tnum; q++) + { + if (prior->strategy == PRI_STRUCT) + prior->tq[q] = 1.0 / prior->tnum; + malpha = ialpha = dalpha = 0.0; + for (x = 0; x < 3; x++) + { + malpha += prior->tm[q][x]; + ialpha += prior->ti[q][x]; + dalpha += prior->td[q][x]; + } + for (x = 0; x < 3; x++) + { + hmm->mat[k].t[x] += prior->tq[q] * prior->tm[q][x] / malpha; + hmm->ins[k].t[x] += prior->tq[q] * prior->ti[q][x] / ialpha; + if (k > 0) hmm->del[k].t[x] += prior->tq[q] * prior->td[q][x] / dalpha; + } + } + } + /* the final state never transits to d+1 */ + hmm->mat[hmm->M].t[DELETE] = 0.0; + hmm->ins[hmm->M].t[DELETE] = 0.0; + hmm->del[hmm->M].t[DELETE] = 0.0; + Renormalize(hmm); + return 1; +} + + +/* Function: HMMDup() + * + * Purpose: Create a duplicate copy of an HMM. + * + * Return: Pointer to the duplicate. + * Caller is responsible for free'ing the duplicate. + */ +struct hmm_struc * +HMMDup(struct hmm_struc *hmm) +{ + struct hmm_struc *newhmm; + + if ((newhmm = AllocHMM(hmm->M)) == NULL) + Die("AllocHMM() failed"); + HMMCopy(newhmm, hmm); + return newhmm; +} + + +/* Function: HMMCopy() + * + * Purpose: Make a copy of hmm2 in hmm1. + * + * Return: (void) + * Caller promises that hmm1 and hmm2 have identical architectures. + */ +void +HMMCopy(struct hmm_struc *hmm1, struct hmm_struc *hmm2) +{ + int k, x, ts; + + hmm1->flags = hmm2->flags; + if (hmm1->name != NULL) free(hmm1->name); + hmm1->name = Strdup(hmm2->name); + + if (hmm2->flags & HMM_REF) strcpy(hmm1->ref, hmm2->ref); + if (hmm2->flags & HMM_CS) strcpy(hmm1->cs, hmm2->cs); + if (hmm2->flags & HMM_XRAY) + memcpy(hmm1->xray, hmm2->xray, NINPUTS * (hmm2->M+2) * sizeof(float)); + memcpy(hmm1->null, hmm2->null, sizeof(float) * Alphabet_size); + + for (k = 0; k <= hmm2->M+1; k++) + { + /* copy transition T's */ + for (ts = 0; ts < 3; ts++) + { + hmm1->mat[k].t[ts] = hmm2->mat[k].t[ts]; + hmm1->ins[k].t[ts] = hmm2->ins[k].t[ts]; + hmm1->del[k].t[ts] = hmm2->del[k].t[ts]; + } + /* copy symbol P tables */ + for (x = 0; x < Alphabet_size; x++) + { + hmm1->mat[k].p[x] = hmm2->mat[k].p[x]; + hmm1->ins[k].p[x] = hmm2->ins[k].p[x]; + } + } + return; +} + + +int +FreeHMM(struct hmm_struc *hmm) +{ + if (hmm == NULL) return 0; + free(hmm->ref); + free(hmm->cs); + free(hmm->xray); + free(hmm->name); + if (hmm->mat != NULL) free (hmm->mat); + if (hmm->ins != NULL) free (hmm->ins); + if (hmm->del != NULL) free (hmm->del); + free(hmm); + return 1; +} + + +struct shmm_s * +AllocSearchHMM(int M) +{ + struct shmm_s *shmm; + int x; + + if ((shmm = (struct shmm_s *) malloc (sizeof(struct shmm_s))) == NULL) + Die("malloc failed"); + for (x = 0; x < 26; x++) + if ((shmm->m_emit[x] = (int *) calloc (M+1, sizeof(int))) == NULL || + (shmm->i_emit[x] = (int *) calloc (M+1, sizeof(int))) == NULL) + Die("malloc failed"); + if ((shmm->t = (int *) malloc (sizeof(int) * (9*(M+1)))) == NULL || + (shmm->ref = (char *) malloc (sizeof(char) * (M+2))) == NULL || + (shmm->cs = (char *) malloc (sizeof(char) * (M+2))) == NULL) + Die("malloc failed"); + shmm->flags = 0; + shmm->name = Strdup("nameless"); + shmm->M = M; + return shmm; +} + +void +FreeSearchHMM(struct shmm_s *shmm) +{ + int x; + + for (x = 0; x < 26; x++) + { + free(shmm->m_emit[x]); + free(shmm->i_emit[x]); + } + free(shmm->t); + free(shmm->ref); + free(shmm->cs); + free(shmm->name); + free(shmm); +} + + +/* Function: CountSymbol() + * + * Purpose: Given an observed symbol, and a number of counts to + * distribute (typically just 1.0), bump the appropriate counter(s). + * + * This is completely trivial only so long as the symbols + * always come from the expected alphabet; since we also + * have to deal with degenerate symbols for both nucleic + * acid and protein languages, we make a function to deal + * with this. + * + * Args: sym - observed symbol, e.g. `A' or `X' + * wt - number of counts to distribute (e.g. 1.0) + * counters - array of 4 or 20 counters to increment + * + * Return: Returns 1 on success and bumps the necessary counters. + * Returns 0 on failure and bumps each counter evenly, as + * if it saw a completely ambiguous symbol; this lets + * the caller silently accept garbage symbols, if it cares to. + */ +int +CountSymbol(char sym, float wt, float *counters) +{ + char *sptr; /* pointer into symbol in hmm->alphabet */ + int status; /* RETURN: status; did we recognize the symbol? */ + char symidx; /* index of symbol in Alphabet_iupac */ + + if ((sptr = strchr(Alphabet,sym)) != NULL) + { + symidx = (char) (sptr - Alphabet); + status = 1; + } + else + { + symidx = (char) (Alphabet_iupac - 1); + Warn("unrecognized character %c in CountSymbol()\n", sym); + status = 0; + } + P7CountSymbol(counters, symidx, wt); + return status; +} + + +/* Function: HMMDistance() + * + * Purpose: Test two models for how different they are, using + * a simple squared difference measure on all homologous + * parameters. They must have the same architecture: + * i.e. check that newhmm->M == oldhmm->M before calling. + * + * Args: newhmm - new HMM, probability form + * oldhmm - old HMM, probability form + * + * Return: distance. + */ +float +HMMDistance(struct hmm_struc *newhmm, struct hmm_struc *oldhmm) +{ + int k,x, ts; + float distance = 0.0; + + for (k = 0; k <= newhmm->M; k++) + { + /* state transition distances */ + if (k > 0) + { + for (ts = 0; ts < 3; ts++) + distance += SQR( 100. * (newhmm->del[k].t[ts] - oldhmm->del[k].t[ts])); + } + for (ts = 0; ts < 3; ts++) + distance += SQR( 100. * (newhmm->mat[k].t[ts] - oldhmm->mat[k].t[ts])); + for (ts = 0; ts < 3; ts++) + distance += SQR( 100. * (newhmm->ins[k].t[ts] - oldhmm->ins[k].t[ts])); + + /* symbol emission distances */ + if (k > 0) + for (x = 0; x < Alphabet_size; x++) + distance += SQR( 100. * (newhmm->mat[k].p[x] - oldhmm->mat[k].p[x])); + for (x = 0; x < Alphabet_size; x++) + distance += SQR( 100. * (newhmm->ins[k].p[x] - oldhmm->ins[k].p[x])); + } + distance = sqrt(distance) / newhmm->M; + return distance; +} + + + + +/* Function: Renormalize() + * + * Normalize all P distributions so they sum to 1. + * P distributions that are all 0, or contain negative + * probabilities, are left untouched. + * + * Returns 1 on success, or 0 on failure. + */ +void +Renormalize(struct hmm_struc *hmm) +{ + int k; /* counter for states */ + + for (k = 0; k <= hmm->M ; k++) + { + /* match state transition frequencies */ + FNorm(hmm->mat[k].t, 3); + FNorm(hmm->ins[k].t, 3); + if (k > 0) FNorm(hmm->del[k].t, 3); + + if (k > 0) FNorm(hmm->mat[k].p, Alphabet_size); + FNorm(hmm->ins[k].p, Alphabet_size); + } +} + diff --git a/forester/archive/RIO/others/hmmer/src/structs.h b/forester/archive/RIO/others/hmmer/src/structs.h new file mode 100644 index 0000000..105ebec --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/structs.h @@ -0,0 +1,564 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* structs.h + * + * Data structures used in HMMER. + * Also, a few miscellaneous macros and global variable declarations. + * + * RCS $Id: structs.h,v 1.1.1.1 2005/03/22 08:34:01 cmzmasek Exp $ + */ + +#ifndef STRUCTSH_INCLUDED +#define STRUCTSH_INCLUDED + +#include "squid.h" +#include "config.h" +#include "ssi.h" + +/* Miscellaneous math macros used in the package + */ +#define sreLOG2(x) ((x) > 0 ? log(x) * 1.44269504 : -9999.) +#define sreEXP2(x) (exp((x) * 0.69314718 )) +#define SQR(x) ((x) * (x)) + +/* an idiom for determining a symbol's position in the array + * by pointer arithmetic. + * does no error checking, so caller must already be damned sure x is + * valid in the alphabet! + */ +#define SYMIDX(x) (strchr(Alphabet, (x)) - Alphabet) + +/* The symbol alphabet. + * Must deal with IUPAC degeneracies. Nondegenerate symbols + * come first in Alphabet[], followed by degenerate symbols. + * Nucleic alphabet also must deal with other common symbols + * like U (in RNA) and X (often misused for N). + * Example: + * Nucleic: "ACGTUNRYMKSWHBVDX" size=4 iupac=17 + * Amino: "ACDEFGHIKLMNPQRSTVWYBZX" size=20 iupac=23 + * + * Parts of the code assume that the last symbol is a + * symbol for an unknown residue, i.e. 'X'. + * + * MAXCODE and MAXABET constants are defined in config.h + */ +extern char Alphabet[MAXCODE]; /* "ACDEFGHIKLMNPQRSTVWYBZX" for example */ +extern int Alphabet_type; /* hmmNUCLEIC or hmmAMINO */ +extern int Alphabet_size; /* uniq alphabet size: 4 or 20 */ +extern int Alphabet_iupac; /* total size of alphabet + IUPAC degen. */ +extern char Degenerate[MAXCODE][MAXABET]; +extern int DegenCount[MAXCODE]; +#define hmmNOTSETYET 0 +#define hmmNUCLEIC 2 /* compatibility with squid's kRNA */ +#define hmmAMINO 3 /* compatibility with squid's kAmino */ + +/********************************************************************** + * + * Plan7 + * Implementation of the new Plan7 HMM architecture. + * Fully probabilistic even for hmmsw, hmmls, and hmmfs; + * No insert->delete or delete->insert transitions; + * Improved structure layout. + * + * The strategy is to infiltrate plan7 code into HMMER in + * an evolutionary rather than revolutionary manner. + * + **********************************************************************/ + +/* Plan 7 construction strategies. + */ +enum p7_construction { + P7_MAP_CONSTRUCTION, /* maximum a posteriori architecture */ + P7_HAND_CONSTRUCTION, /* hand specified architecture */ + P7_FAST_CONSTRUCTION /* fast ad hoc architecture */ +}; + +/* Plan 7 parameter optimization strategies + */ +enum p7_param { + P7_MAP_PARAM, /* standard maximum a posteriori */ + P7_MD_PARAM, /* maximum discrimination */ + P7_MRE_PARAM, /* maximum relative entropy */ + P7_WMAP_PARAM /* ad hoc weighted MAP */ +}; + +/* Structure: plan7_s + * + * Declaration of a Plan 7 profile-HMM. + */ +struct plan7_s { + /* Annotation on the model. A name is mandatory. + * Other fields are optional; whether they are present is + * flagged in the stateflags bit array. + * + * desc is only valid if PLAN7_DESC is set in flags. + * acc is only valid if PLAN7_ACC is set in flags. + * rf is only valid if PLAN7_RF is set in flags. + * cs is only valid if PLAN7_CS is set in flags. + * ca is only valid if PLAN7_CA is set in flags. + * map is only valid if PLAN7_MAP is set in flags. + */ + char *name; /* name of the model +*/ + char *acc; /* accession number of model (Pfam) +*/ + char *desc; /* brief description of model +*/ + char *rf; /* reference line from alignment 0..M +*/ + char *cs; /* consensus structure line 0..M +*/ + char *ca; /* consensus accessibility line 0..M */ + char *comlog; /* command line(s) that built model +*/ + int nseq; /* number of training sequences +*/ + char *ctime; /* creation date +*/ + int *map; /* map of alignment cols onto model 1..M+*/ + int checksum; /* checksum of training sequences +*/ + + /* The following are annotations added to support work by Michael Asman, + * CGR Stockholm. They are not stored in model files; they are only + * used in model construction. + * + * #=GC X-PRM (PRT,PRI) annotation is picked up by hmmbuild and interpreted + * as specifying which mixture Dirichlet component to use. If these flags + * are non-NULL, the normal mixture Dirichlet code is bypassed, and a + * single specific Dirichlet is used at each position. + */ + int *tpri; /* which transition mixture prior to use */ + int *mpri; /* which match mixture prior to use */ + int *ipri; /* which insert mixture prior to use */ + + /* Pfam-specific score cutoffs. + * + * ga1, ga2 are valid if PLAN7_GA is set in flags. + * tc1, tc2 are valid if PLAN7_TC is set in flags. + * nc1, nc2 are valid if PLAN7_NC is set in flags. + */ + float ga1, ga2; /* per-seq/per-domain gathering thresholds (bits) +*/ + float tc1, tc2; /* per-seq/per-domain trusted cutoff (bits) +*/ + float nc1, nc2; /* per-seq/per-domain noise cutoff (bits) +*/ + + /* The main model in probability form: data-dependent probabilities. + * This is the core Krogh/Haussler model. + * Transition probabilities are usually accessed as a + * two-D array: hmm->t[k][TMM], for instance. They are allocated + * such that they can also be stepped through in 1D by pointer + * manipulations, for efficiency in DP algorithms. + */ + int M; /* length of the model (# nodes) +*/ + float **t; /* transition prob's. t[1..M-1][0..6] +*/ + float **mat; /* match emissions. mat[1..M][0..19] +*/ + float **ins; /* insert emissions. ins[1..M-1][0..19] +*/ + float tbd1; /* B->D1 prob (data dependent) +*/ + + /* The unique states of Plan 7 in probability form. + * These are the algorithm-dependent, data-independent probabilities. + * Some parts of the code may briefly use a trick of copying tbd1 + * into begin[0]; this makes it easy to call FChoose() or FNorm() + * on the resulting vector. However, in general begin[0] is not + * a valid number. + */ + float xt[4][2]; /* N,E,C,J extra states: 2 transitions +*/ + float *begin; /* 1..M B->M state transitions +*/ + float *end; /* 1..M M->E state transitions (!= a dist!) +*/ + + /* The null model probabilities. + */ + float null[MAXABET]; /* "random sequence" emission prob's +*/ + float p1; /* null model loop probability +*/ + + /* The model in log-odds score form. + * These are created from the probabilities by LogoddsifyHMM(). + * By definition, null[] emission scores are all zero. + * Note that emission distributions are over 26 upper-case letters, + * not just the unambiguous protein or DNA alphabet: we + * precalculate the scores for all IUPAC degenerate symbols we + * may see. Non-IUPAC symbols simply have a -INFTY score. + * Note the reversed indexing on msc and isc -- for efficiency reasons. + * + * Only valid if PLAN7_HASBITS is set. + */ + int **tsc; /* transition scores [1.M-1][0.6] -*/ + int **msc; /* match emission scores [0.MAXCODE-1][1.M] -*/ + int **isc; /* ins emission scores [0.MAXCODE-1][1.M-1] -*/ + int xsc[4][2]; /* N,E,C,J transitions -*/ + int *bsc; /* begin transitions [1.M] -*/ + int *esc; /* end transitions [1.M] -*/ + + /* DNA translation scoring parameters + * For aligning protein Plan7 models to DNA sequence. + * Lookup value for a codon is calculated by pos1 * 16 + pos2 * 4 + pos3, + * where 'pos1' is the digitized value of the first nucleotide position; + * if any of the positions are ambiguous codes, lookup value 64 is used + * (which will generally have a score of zero) + * + * Only valid if PLAN7_HASDNA is set. + */ + int **dnam; /* triplet match scores [0.64][1.M] -*/ + int **dnai; /* triplet insert scores [0.64][1.M] -*/ + int dna2; /* -1 frameshift, doublet emission, M or I -*/ + int dna4; /* +1 frameshift, doublet emission, M or I -*/ + + /* P-value and E-value statistical parameters + * Only valid if PLAN7_STATS is set. + */ + float mu; /* EVD mu +*/ + float lambda; /* EVD lambda +*/ + + int flags; /* bit flags indicating state of HMM, valid data +*/ +}; + +/* Flags for plan7->flags. + * Note: Some models have scores but no probabilities (for instance, + * after reading from an HMM save file). Other models have + * probabilities but no scores (for instance, during training + * or building). Since it costs time to convert either way, + * I use PLAN7_HASBITS and PLAN7_HASPROB flags to defer conversion + * until absolutely necessary. This means I have to be careful + * about keeping these flags set properly when I fiddle a model. + */ +#define PLAN7_HASBITS (1<<0) /* raised if model has log-odds scores */ +#define PLAN7_DESC (1<<1) /* raised if description exists */ +#define PLAN7_RF (1<<2) /* raised if #RF annotation available */ +#define PLAN7_CS (1<<3) /* raised if #CS annotation available */ +#define PLAN7_XRAY (1<<4) /* raised if structural data available */ +#define PLAN7_HASPROB (1<<5) /* raised if model has probabilities */ +#define PLAN7_HASDNA (1<<6) /* raised if protein HMM->DNA seq params set*/ +#define PLAN7_STATS (1<<7) /* raised if EVD parameters are available */ +#define PLAN7_MAP (1<<8) /* raised if alignment map is available */ +#define PLAN7_ACC (1<<9) /* raised if accession number is available */ +#define PLAN7_GA (1<<10) /* raised if gathering thresholds available */ +#define PLAN7_TC (1<<11) /* raised if trusted cutoffs available */ +#define PLAN7_NC (1<<12) /* raised if noise cutoffs available */ +#define PLAN7_CA (1<<13) /* raised if surface accessibility avail. */ + +/* Indices for special state types, I: used for dynamic programming xmx[][] + * mnemonic: eXtra Matrix for B state = XMB + */ +#define XMB 0 +#define XME 1 +#define XMC 2 +#define XMJ 3 +#define XMN 4 + +/* Indices for special state types, II: used for hmm->xt[] indexing + * mnemonic: eXtra Transition for N state = XTN + */ +#define XTN 0 +#define XTE 1 +#define XTC 2 +#define XTJ 3 + +/* Indices for Plan7 main model state transitions. + * Used for indexing hmm->t[k][] + * mnemonic: Transition from Match to Match = TMM + */ +#define TMM 0 +#define TMI 1 +#define TMD 2 +#define TIM 3 +#define TII 4 +#define TDM 5 +#define TDD 6 + +/* Indices for extra state transitions + * Used for indexing hmm->xt[][]. + */ +#define MOVE 0 /* trNB, trEC, trCT, trJB */ +#define LOOP 1 /* trNN, trEJ, trCC, trJJ */ + +/* Declaration of Plan7 dynamic programming matrix structure. + */ +struct dpmatrix_s { + int **xmx; /* special scores [0.1..N][BECJN] */ + int **mmx; /* match scores [0.1..N][0.1..M] */ + int **imx; /* insert scores [0.1..N][0.1..M-1.M] */ + int **dmx; /* delete scores [0.1..N][0.1..M-1.M] */ +}; + +/* Declaration of Plan7 shadow matrix structure. + * In general, allowed values are STM, STI, etc. + * However, E state has M possible sources, from 1..M match states; + * hence the esrc array. + */ +struct dpshadow_s { + char **xtb; /* special state traces [0.1..N][BECJN] */ + char **mtb; /* match state traces [0.1..N][0.1..M] */ + char **itb; /* insert state traces [0.1..N][0.1..M-1.M] */ + char **dtb; /* delete state traces [0.1..N][0.1..M-1.M] */ + int *esrc; /* E trace is special; must store a M state number 1..M */ +}; + +/* Structure: HMMFILE + * + * Purpose: An open HMM file or HMM library. See hmmio.c. + */ +struct hmmfile_s { + FILE *f; /* pointer to file opened for reading */ + SSIFILE *ssi; /* pointer to open SSI index, or NULL */ + int (*parser)(struct hmmfile_s *, struct plan7_s **); /* parsing function */ + int is_binary; /* TRUE if format is a binary one */ + int byteswap; /* TRUE if binary and byteswapped */ + + /* Ewan (GeneWise) needs the input API to know the offset of each + * HMM on the disk, as it's being read. This might be enough + * support for him. hmmindex also uses this. Ewan, see + * HMMFilePositionByIndex() for an example of how to use this + * opaque offset type in the SSI API - the call you need + * is SSISetFilePosition(). + */ + int is_seekable; /* TRUE if we use offsets in this HMM file */ + int mode; /* type of offset */ + SSIOFFSET offset; /* Disk offset for beginning of the current HMM */ +}; +typedef struct hmmfile_s HMMFILE; + + +/* Plan 7 model state types + * used in traceback structure + */ +#define STBOGUS 0 +#define STM 1 +#define STD 2 +#define STI 3 +#define STS 4 +#define STN 5 +#define STB 6 +#define STE 7 +#define STC 8 +#define STT 9 +#define STJ 10 + +/* Structure: p7trace_s + * + * Traceback structure for alignments of model to sequence. + * Each array in a trace_s is 0..tlen-1. + * Element 0 is always to STATE_S. Element tlen-1 is always to STATE_T. + */ +struct p7trace_s { + int tlen; /* length of traceback */ + char *statetype; /* state type used for alignment */ + int *nodeidx; /* index of aligned node, 1..M (if M,D,I), or 0 */ + int *pos; /* position in dsq, 1..L, or 0 if none */ +}; + +/* Structure: p7prior_s + * + * Dirichlet priors on HMM parameters. + */ +struct p7prior_s { + int strategy; /* PRI_DCHLET, etc. */ + + int tnum; /* number of transition Dirichlet mixtures */ + float tq[MAXDCHLET]; /* probabilities of tnum components */ + float t[MAXDCHLET][7]; /* transition terms per mix component */ + + int mnum; /* number of mat emission Dirichlet mixtures */ + float mq[MAXDCHLET]; /* probabilities of mnum components */ + float m[MAXDCHLET][MAXABET]; /* match emission terms per mix component */ + + int inum; /* number of insert emission Dirichlet mixes */ + float iq[MAXDCHLET]; /* probabilities of inum components */ + float i[MAXDCHLET][MAXABET]; /* insert emission terms */ +}; +#define PRI_DCHLET 0 /* simple or mixture Dirichlets */ +#define PRI_PAM 1 /* PAM prior hack */ + + +/********************************************************************** + * Other structures, not having to do with HMMs. + **********************************************************************/ + +/* Structure: histogram_s + * + * Keep a score histogram. + * + * The main implementation issue here is that the range of + * scores is unknown, and will go negative. histogram is + * a 0..max-min array that represents the range min..max. + * A given score is indexed in histogram array as score-min. + * The AddToHistogram() function deals with dynamically + * resizing the histogram array when necessary. + */ +struct histogram_s { + int *histogram; /* counts of hits */ + int min; /* elem 0 of histogram == min */ + int max; /* last elem of histogram == max */ + int highscore; /* highest active elem has this score */ + int lowscore; /* lowest active elem has this score */ + int lumpsize; /* when resizing, overalloc by this */ + int total; /* total # of hits counted */ + + float *expect; /* expected counts of hits */ + int fit_type; /* flag indicating distribution type */ + float param[3]; /* parameters used for fits */ + float chisq; /* chi-squared val for goodness of fit*/ + float chip; /* P value for chisquared */ +}; +#define HISTFIT_NONE 0 /* no fit done yet */ +#define HISTFIT_EVD 1 /* fit type = extreme value dist */ +#define HISTFIT_GAUSSIAN 2 /* fit type = Gaussian */ +#define EVD_MU 0 /* EVD fit parameter mu */ +#define EVD_LAMBDA 1 /* EVD fit parameter lambda */ +#define EVD_WONKA 2 /* EVD fit fudge factor */ +#define GAUSS_MEAN 0 /* Gaussian parameter mean */ +#define GAUSS_SD 1 /* Gaussian parameter std. dev. */ + +/* Structure: fancyali_s + * + * Alignment of a hit to an HMM, for printing. + */ +struct fancyali_s { + char *rfline; /* reference coord info */ + char *csline; /* consensus structure info */ + char *model; /* aligned query consensus sequence */ + char *mline; /* "identities", conservation +'s, etc. */ + char *aseq; /* aligned target sequence */ + int len; /* length of strings */ + char *query; /* name of query HMM */ + char *target; /* name of target sequence */ + int sqfrom; /* start position on sequence (1..L) */ + int sqto; /* end position on sequence (1..L) */ +}; + +/* Structure: hit_s + * + * Info about a high-scoring database hit. + * We keep this info in memory, so we can output a + * sorted list of high hits at the end. + * + * sqfrom and sqto are the coordinates that will be shown + * in the results, not coords in arrays... therefore, reverse + * complements have sqfrom > sqto + */ +struct hit_s { + double sortkey; /* number to sort by; big is better */ + float score; /* score of the hit */ + double pvalue; /* P-value of the hit */ + float mothersc; /* score of whole sequence */ + double motherp; /* P-value of whole sequence */ + char *name; /* name of the target */ + char *acc; /* accession of the target */ + char *desc; /* description of the target */ + int sqfrom; /* start position in seq (1..N) */ + int sqto; /* end position in seq (1..N) */ + int sqlen; /* length of sequence (N) */ + int hmmfrom; /* start position in HMM (1..M) */ + int hmmto; /* end position in HMM (1..M) */ + int hmmlen; /* length of HMM (M) */ + int domidx; /* index of this domain */ + int ndom; /* total # of domains in this seq */ + struct fancyali_s *ali; /* ptr to optional alignment info */ +}; + + +/* Structure: tophit_s + * + * Array of high scoring hits, suitable for efficient sorting + * when we prepare to output results. "hit" list is NULL and + * unavailable until after we do a sort. + */ +struct tophit_s { + struct hit_s **hit; /* array of ptrs to top scoring hits */ + struct hit_s *unsrt; /* unsorted array */ + int alloc; /* current allocation size */ + int num; /* number of hits in list now */ + int lump; /* allocation lumpsize */ +}; + +/* struct threshold_s + * Contains score/evalue threshold settings. + * + * made first for hmmpfam: + * Since we're going to loop over all HMMs in a Pfam (or pfam-like) + * database in main_loop_{serial,pvm}, and we're going to + * allow autocutoffs using Pfam GA, NC, TC lines, we will need + * to reset those cutoffs with each HMM in turn. Therefore the + * main loops need to know whether they're supposed to be + * doing autocutoff. This amount of info was unwieldy enough + * to pass through the argument list that I put it + * in a structure. + */ +struct threshold_s { + float globT; /* T parameter: keep only hits > globT bits */ + double globE; /* E parameter: keep hits < globE E-value */ + float domT; /* T parameter for individual domains */ + double domE; /* E parameter for individual domains */ + /* autosetting of cutoffs using Pfam annot: */ + enum { CUT_NONE, CUT_GA, CUT_NC, CUT_TC } autocut; + int Z; /* nseq to base E value calculation on */ +}; + +/********************************************************** + * PVM parallelization + **********************************************************/ +#ifdef HMMER_PVM + +/* Message tags + */ +#define HMMPVM_INIT 0 /* an initialization packet to all slaves */ +#define HMMPVM_WORK 1 /* a work packet sent to a slave */ +#define HMMPVM_RESULTS 2 /* a results packet sent back to master */ +#define HMMPVM_TASK_TROUBLE 3 /* a notification of bad things in a slave task */ +#define HMMPVM_HOST_TROUBLE 4 /* a notification of bad things in a PVM host */ + +/* error codes + */ +#define HMMPVM_OK 0 +#define HMMPVM_NO_HMMFILE 1 +#define HMMPVM_NO_INDEX 2 +#define HMMPVM_BAD_INIT 3 /* failed to initialize a slave somehow */ + +#endif + + +/********************************************************** + * Plan 9: obsolete HMMER1.x code. We still need these structures + * for reading old HMM files (e.g. backwards compatibility) + **********************************************************/ + +/* We define a "basic" state, which covers the basic match, insert, and + * delete states from the Haussler paper. Numbers are stored as + * pre-calculated negative logs. + */ +struct basic_state { + float t[3]; /* state transitions to +1 M, +0 I, +1 D */ + float p[MAXABET]; /* symbol emission probabilities */ +}; + +/* A complete hidden Markov model + */ +struct plan9_s { + int M; /* length of the model */ + struct basic_state *ins; /* insert states 0..M+1 */ + struct basic_state *mat; /* match 0..M+1; 0 = BEGIN, M+1 = END */ + struct basic_state *del; /* delete 0..M+1 */ + + float null[MAXABET]; /* the *suggested* null model */ + + /* Optional annotation on the HMM, taken from alignment + */ + char *name; /* a name for the HMM */ + char *ref; /* reference coords and annotation */ + char *cs; /* consensus structure annotation */ + float *xray; /* Structural annotation: xray[0..M+1][NINPUTS], indexed manually */ + + int flags; /* flags for what optional info is in HMM */ +}; + +/* Flags for optional info in an HMM structure + */ +#define HMM_REF (1<<0) +#define HMM_CS (1<<1) +#define HMM_XRAY (1<<2) + +#define MATCH 0 +#define INSERT 1 +#define DELETE 2 +#define BEGIN MATCH +#define END MATCH + +#endif /* STRUCTSH_INCLUDED */ diff --git a/forester/archive/RIO/others/hmmer/src/threads.c b/forester/archive/RIO/others/hmmer/src/threads.c new file mode 100644 index 0000000..d2eb450 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/threads.c @@ -0,0 +1,90 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* threads.c + * SRE, Fri Jul 10 10:05:44 1998 + * + * Pthreads code shared by hmmsearch, hmmcalibrate, and hmmpfam + * to coarse-grain parallelize on platforms capable of POSIX + * threads. Most of the threads code, however, is in the respective + * main's, i.e. hmmsearch.c, hmmpfam.c, hmmcalibrate.c + * + * RCS $Id: threads.c,v 1.1.1.1 2005/03/22 08:34:02 cmzmasek Exp $ + */ + +#ifdef HMMER_THREADS /* conditional inclusion of the entire file */ + +#include +#include +#include +#include + +#include "structs.h" +#include "funcs.h" +#include "squid.h" +#include "sqfuncs.h" + + +/* Function: ThreadNumber() + * Date: SRE, Sat Jul 11 11:03:50 1998 [St. Louis] + * + * Purpose: Recommend how many threads to use. + * + * - if we can determine the number of processors + * on the machine by SQD_NPROC, use that. This + * should succeed for SGI IRIX, Digital UNIX, and + * Sun Solaris platforms. + * - if not, assume two processors. We're probably + * on a FreeBSD or Linux box, and odds are that its + * a dualprocessor. + * - if HMMER_NCPU is defined in config.h, use that + * number instead; allows Linux or FreeBSD machines + * to compile code for a quadprocessor, for instance. + * That define can be overridden at compile + * time by a -DHMMER_NCPU=x, where x is the + * number of threads.. + * - if HMMER_NCPU is defined in the environment, + * use that number, overriding all others. + * + * Typically, we'll set the default number of + * threads with ThreadNumber() but allow it + * to be overridden at the command line with --cpu. + * + * Summarizing priority: + * --ncpu option + * environment variable, setenv HMMER_NCPU x + * compile-time, MDEFS=HMMER_NCPU=x + * compile-time, config.h definition of HMMER_NCPU + * SQD_NPROC, or 2 if SQD_NPROC doesn't work. + * + * Args: void + * + * Returns: >= 1, recommended number of threads + */ +int +ThreadNumber(void) +{ + int num; + char *env; + + num = SQD_NPROC; /* SGI, Sun, Digital: get # of available CPUs */ + if (num == -1) num = 2; /* Linux, FreeBSD: assume dualprocessor */ +#ifdef HMMER_NCPU + num = HMMER_NCPU; /* allow config.h to override; usually we don't */ +#endif + /* allow environment variable to override */ + if ((env = getenv("HMMER_NCPU")) != NULL) + num = atoi(env); + if (num <= 0) num = 1; /* silent sanity check */ + SQD_DPRINTF1(("ThreadNumber(): setting number of threads to %d\n", num)); + return num; +} + +#endif /*HMMER_THREADS*/ diff --git a/forester/archive/RIO/others/hmmer/src/tophits.c b/forester/archive/RIO/others/hmmer/src/tophits.c new file mode 100644 index 0000000..bbd1b05 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/tophits.c @@ -0,0 +1,376 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* tophits.c + * + * Routines for storing, sorting, displaying high scoring hits + * and alignments. + * + ***************************************************************************** + * + * main API: + * + * AllocTophits() - allocation + * FreeTophits() - free'ing + * RegisterHit() - put information about a hit in the list + * GetRankedHit() - recovers information about a hit + * FullSortTophits() - sorts the top H hits. + * + ***************************************************************************** + * Brief example of use: + * + * struct tophit_s *yourhits; // list of hits + * struct fancyali_s *ali; // (optional structure) alignment of a hit + * + * yourhits = AllocTophits(200); + * (for every hit in a search) { + * if (do_alignments) + * ali = Trace2FancyAli(); // You provide a function/structure here + * if (score > threshold) + * RegisterHit(yourhits, ...) + * } + * + * FullSortTophits(yourhits); // Sort hits by evalue + * for (i = 0; i < 100; i++) // Recover hits out in ranked order + * { + * GetRankedHit(yourhits, i, ...); + * // Presumably you'd print here... + * } + * FreeTophits(yourhits); + *************************************************************************** + * + * Estimated storage per hit: + * coords: 16 bytes + * scores: 8 bytes + * name/acc/desc: 192 bytes + * alignment: 1000 bytes total = ~1200 bytes with alignment; + * = ~200 bytes without + * Designed for: 10^5 hits (20 MB) or 10^4 alignments (10 MB) + */ + +#include +#include +#include +#include "structs.h" +#include "funcs.h" + +/* Function: AllocTophits() + * + * Purpose: Allocate a struct tophit_s, for maintaining + * a list of top-scoring hits in a database search. + * + * Args: lumpsize - allocation lumpsize + * + * Return: An allocated struct hit_s. Caller must free. + */ +struct tophit_s * +AllocTophits(int lumpsize) +{ + struct tophit_s *hitlist; + + hitlist = MallocOrDie (sizeof(struct tophit_s)); + hitlist->hit = NULL; + hitlist->unsrt = MallocOrDie (lumpsize * sizeof(struct hit_s)); + hitlist->alloc = lumpsize; + hitlist->num = 0; + hitlist->lump = lumpsize; + return hitlist; +} +void +GrowTophits(struct tophit_s *h) +{ + h->unsrt = ReallocOrDie(h->unsrt,(h->alloc + h->lump) * sizeof(struct hit_s)); + h->alloc += h->lump; +} +void +FreeTophits(struct tophit_s *h) +{ + int pos; + for (pos = 0; pos < h->num; pos++) + { + if (h->unsrt[pos].ali != NULL) FreeFancyAli(h->unsrt[pos].ali); + if (h->unsrt[pos].name != NULL) free(h->unsrt[pos].name); + if (h->unsrt[pos].acc != NULL) free(h->unsrt[pos].acc); + if (h->unsrt[pos].desc != NULL) free(h->unsrt[pos].desc); + } + free(h->unsrt); + if (h->hit != NULL) free(h->hit); + free(h); +} + +struct fancyali_s * +AllocFancyAli(void) +{ + struct fancyali_s *ali; + + ali = MallocOrDie (sizeof(struct fancyali_s)); + ali->rfline = ali->csline = ali->model = ali->mline = ali->aseq = NULL; + ali->query = ali->target = NULL; + ali->sqfrom = ali->sqto = 0; + return ali; +} +void +FreeFancyAli(struct fancyali_s *ali) +{ + if (ali != NULL) { + if (ali->rfline != NULL) free(ali->rfline); + if (ali->csline != NULL) free(ali->csline); + if (ali->model != NULL) free(ali->model); + if (ali->mline != NULL) free(ali->mline); + if (ali->aseq != NULL) free(ali->aseq); + if (ali->query != NULL) free(ali->query); + if (ali->target != NULL) free(ali->target); + free(ali); + } +} + +/* Function: RegisterHit() + * + * Purpose: Add a new hit to a list of top hits. + * + * "ali", if provided, is a pointer to allocated memory + * for an alignment output structure. + * Management is turned over to the top hits structure. + * Caller should not free them; they will be free'd by + * the FreeTophits() call. + * + * In contrast, "name", "acc", and "desc" are copied, so caller + * is still responsible for these. + * + * Number of args is unwieldy. + * + * Args: h - active top hit list + * key - value to sort by: bigger is better + * pvalue - P-value of this hit + * score - score of this hit + * motherp - P-value of parent whole sequence + * mothersc - score of parent whole sequence + * name - name of target + * acc - accession of target (may be NULL) + * desc - description of target (may be NULL) + * sqfrom - 1..L pos in target seq of start + * sqto - 1..L pos; sqfrom > sqto if rev comp + * sqlen - length of sequence, L + * hmmfrom - 0..M+1 pos in HMM of start + * hmmto - 0..M+1 pos in HMM of end + * hmmlen - length of HMM, M + * domidx - number of this domain + * ndom - total # of domains in sequence + * ali - optional printable alignment info + * + * Return: (void) + * hitlist is modified and possibly reallocated internally. + */ +void +RegisterHit(struct tophit_s *h, double key, + double pvalue, float score, double motherp, float mothersc, + char *name, char *acc, char *desc, + int sqfrom, int sqto, int sqlen, + int hmmfrom, int hmmto, int hmmlen, + int domidx, int ndom, + struct fancyali_s *ali) +{ + /* Check to see if list is full and we must realloc. + */ + if (h->num == h->alloc) GrowTophits(h); + + h->unsrt[h->num].name = Strdup(name); + h->unsrt[h->num].acc = Strdup(acc); + h->unsrt[h->num].desc = Strdup(desc); + h->unsrt[h->num].sortkey = key; + h->unsrt[h->num].pvalue = pvalue; + h->unsrt[h->num].score = score; + h->unsrt[h->num].motherp = motherp; + h->unsrt[h->num].mothersc= mothersc; + h->unsrt[h->num].sqfrom = sqfrom; + h->unsrt[h->num].sqto = sqto; + h->unsrt[h->num].sqlen = sqlen; + h->unsrt[h->num].hmmfrom = hmmfrom; + h->unsrt[h->num].hmmto = hmmto; + h->unsrt[h->num].hmmlen = hmmlen; + h->unsrt[h->num].domidx = domidx; + h->unsrt[h->num].ndom = ndom; + h->unsrt[h->num].ali = ali; + h->num++; + return; +} + +/* Function: GetRankedHit() + * Date: SRE, Tue Oct 28 10:06:48 1997 [Newton Institute, Cambridge UK] + * + * Purpose: Recover the data from the i'th ranked hit. + * Any of the data ptrs may be passed as NULL for fields + * you don't want. hitlist must have been sorted first. + * + * name, acc, desc, and ali are returned as pointers, not copies; + * don't free them! + */ +void +GetRankedHit(struct tophit_s *h, int rank, + double *r_pvalue, float *r_score, + double *r_motherp, float *r_mothersc, + char **r_name, char **r_acc, char **r_desc, + int *r_sqfrom, int *r_sqto, int *r_sqlen, + int *r_hmmfrom, int *r_hmmto, int *r_hmmlen, + int *r_domidx, int *r_ndom, + struct fancyali_s **r_ali) +{ + if (r_pvalue != NULL) *r_pvalue = h->hit[rank]->pvalue; + if (r_score != NULL) *r_score = h->hit[rank]->score; + if (r_motherp != NULL) *r_motherp = h->hit[rank]->motherp; + if (r_mothersc!= NULL) *r_mothersc= h->hit[rank]->mothersc; + if (r_name != NULL) *r_name = h->hit[rank]->name; + if (r_acc != NULL) *r_acc = h->hit[rank]->acc; + if (r_desc != NULL) *r_desc = h->hit[rank]->desc; + if (r_sqfrom != NULL) *r_sqfrom = h->hit[rank]->sqfrom; + if (r_sqto != NULL) *r_sqto = h->hit[rank]->sqto; + if (r_sqlen != NULL) *r_sqlen = h->hit[rank]->sqlen; + if (r_hmmfrom != NULL) *r_hmmfrom = h->hit[rank]->hmmfrom; + if (r_hmmto != NULL) *r_hmmto = h->hit[rank]->hmmto; + if (r_hmmlen != NULL) *r_hmmlen = h->hit[rank]->hmmlen; + if (r_domidx != NULL) *r_domidx = h->hit[rank]->domidx; + if (r_ndom != NULL) *r_ndom = h->hit[rank]->ndom; + if (r_ali != NULL) *r_ali = h->hit[rank]->ali; +} + +/* Function: TophitsMaxName() + * + * Purpose: Returns the maximum name length in a top hits list; + * doesn't need to be sorted yet. + */ +int +TophitsMaxName(struct tophit_s *h) +{ + int i; + int len, maxlen; + + maxlen = 0; + for (i = 0; i < h->num; i++) + { + len = strlen(h->unsrt[i].name); + if (len > maxlen) maxlen = len; + } + return maxlen; +} + +/* Function: FullSortTophits() + * + * Purpose: Completely sort the top hits list. Calls + * qsort() to do the sorting, and uses + * hit_comparison() to do the comparison. + * + * Args: h - top hits structure + */ +int +hit_comparison(const void *vh1, const void *vh2) +{ + /* don't ask. don't change. and, Don't Panic. */ + struct hit_s *h1 = *((struct hit_s **) vh1); + struct hit_s *h2 = *((struct hit_s **) vh2); + + if (h1->sortkey < h2->sortkey) return 1; + else if (h1->sortkey > h2->sortkey) return -1; + else if (h1->sortkey == h2->sortkey) return 0; + /*NOTREACHED*/ + return 0; +} +void +FullSortTophits(struct tophit_s *h) +{ + int i; + + /* If we don't have /any/ hits, then don't + * bother. + */ + if (h->num == 0) return; + + /* Assign the ptrs in h->hit. + */ + h->hit = MallocOrDie(h->num * sizeof(struct hit_s *)); + for (i = 0; i < h->num; i++) + h->hit[i] = &(h->unsrt[i]); + + /* Sort the pointers. Don't bother if we've only got one. + */ + if (h->num > 1) + qsort(h->hit, h->num, sizeof(struct hit_s *), hit_comparison); +} + + + +/* Function: TophitsReport() + * Date: Thu Dec 18 13:19:18 1997 + * + * Purpose: Generate a printout summarizing how much + * memory is used by a tophits structure, + * how many hits are stored, and how much + * waste there is from not knowing nseqs. + * + * Args: h - the sorted tophits list + * E - the cutoff in Evalue + * nseq - the final number of seqs used for Eval + * + * Return: (void) + * Prints information on stdout + */ +void +TophitsReport(struct tophit_s *h, double E, int nseq) +{ + int i; + int memused; + int x; + int n; + + /* Count up how much memory is used + * in the whole list. + */ + memused = sizeof(struct hit_s) * h->alloc + sizeof(struct tophit_s); + for (i = 0; i < h->num; i++) + { + if (h->unsrt[i].name != NULL) + memused += strlen(h->unsrt[i].name) + 1; + if (h->unsrt[i].acc != NULL) + memused += strlen(h->unsrt[i].acc) + 1; + if (h->unsrt[i].desc != NULL) + memused += strlen(h->unsrt[i].desc) + 1; + if (h->unsrt[i].ali != NULL) + { + memused += sizeof(struct fancyali_s); + x = 0; + if (h->unsrt[i].ali->rfline != NULL) x++; + if (h->unsrt[i].ali->csline != NULL) x++; + if (h->unsrt[i].ali->model != NULL) x++; + if (h->unsrt[i].ali->mline != NULL) x++; + if (h->unsrt[i].ali->aseq != NULL) x++; + memused += x * (h->unsrt[i].ali->len + 1); + + if (h->unsrt[i].ali->query != NULL) + memused += strlen(h->unsrt[i].ali->query) + 1; + if (h->unsrt[i].ali->target != NULL) + memused += strlen(h->unsrt[i].ali->target) + 1; + } + } + + /* Count how many hits actually satisfy the E cutoff. + */ + n = 0; + for (i = 0; i < h->num; i++) + { + if (h->hit[i]->pvalue * (double) nseq >= E) break; + n++; + } + + /* Format and print a summary + */ + printf("tophits_s report:\n"); + printf(" Total hits: %d\n", h->num); + printf(" Satisfying E cutoff: %d\n", n); + printf(" Total memory: %dK\n", memused / 1000); +} diff --git a/forester/archive/RIO/others/hmmer/src/trace.c b/forester/archive/RIO/others/hmmer/src/trace.c new file mode 100644 index 0000000..424d3ba --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/trace.c @@ -0,0 +1,1203 @@ +/************************************************************ + * HMMER - Biological sequence analysis with profile HMMs + * Copyright (C) 1992-1999 Washington University School of Medicine + * All Rights Reserved + * + * This source code is distributed under the terms of the + * GNU General Public License. See the files COPYING and LICENSE + * for details. + ************************************************************/ + +/* trace.c + * SRE, Sat Nov 16 12:34:57 1996 + * RCS $Id: trace.c,v 1.1.1.1 2005/03/22 08:34:07 cmzmasek Exp $ + * + * Support for Plan 7 traceback data structure, p7trace_s. + */ + +#include +#include +#include + +#include "structs.h" +#include "config.h" +#include "squid.h" +#include "funcs.h" +#include "version.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +static void rightjustify(char *s, int n); + +/* Function: P7AllocTrace(), P7ReallocTrace(), P7FreeTrace() + * + * Purpose: allocation and freeing of traceback structures + */ +void +P7AllocTrace(int tlen, struct p7trace_s **ret_tr) +{ + struct p7trace_s *tr; + + tr = MallocOrDie (sizeof(struct p7trace_s)); + tr->statetype = MallocOrDie (sizeof(char) * tlen); + tr->nodeidx = MallocOrDie (sizeof(int) * tlen); + tr->pos = MallocOrDie (sizeof(int) * tlen); + *ret_tr = tr; +} +void +P7ReallocTrace(struct p7trace_s *tr, int tlen) +{ + tr->statetype = ReallocOrDie (tr->statetype, tlen * sizeof(char)); + tr->nodeidx = ReallocOrDie (tr->nodeidx, tlen * sizeof(int)); + tr->pos = ReallocOrDie (tr->pos, tlen * sizeof(int)); +} +void +P7FreeTrace(struct p7trace_s *tr) +{ + free(tr->pos); + free(tr->nodeidx); + free(tr->statetype); + free(tr); +} + +/* Function: TraceSet() + * Date: SRE, Sun Mar 8 12:39:00 1998 [St. Louis] + * + * Purpose: Convenience function; set values at position tpos + * in a trace. + * + * + * Args: tr - trace object to write to + * tpos - ptr to position in trace to set + * type - statetype e.g. STS, etc. + * idx - nodeidx 1..M or 0 + * pos - seq position 1..L or 0 + * + * Returns: void + */ +void +TraceSet(struct p7trace_s *tr, int tpos, char type, int idx, int pos) +{ + tr->statetype[tpos] = type; + tr->nodeidx[tpos] = idx; + tr->pos[tpos] = pos; +} + + +/* Function: MergeTraceArrays() + * Date: SRE, Sun Jul 5 15:09:10 1998 [St. Louis] + * + * Purpose: Combine two arrays of traces into a single array. + * Used in hmmalign to merge traces from a fixed alignment + * with traces from individual unaligned seqs. + * + * t1 traces always precede t2 traces in the resulting array. + * + * Args: t1 - first set of traces + * n1 - number of traces in t1 + * t2 - second set of traces + * n2 - number of traces in t2 + * + * Returns: pointer to new array of traces. + * Both t1 and t2 are free'd here! Do not reuse. + */ +struct p7trace_s ** +MergeTraceArrays(struct p7trace_s **t1, int n1, struct p7trace_s **t2, int n2) +{ + struct p7trace_s **tr; + int i; /* index in traces */ + + tr = MallocOrDie(sizeof(struct p7trace_s *) * (n1+n2)); + for (i = 0; i < n1; i++) tr[i] = t1[i]; + for (i = 0; i < n2; i++) tr[n1+i] = t2[i]; + free(t1); + free(t2); + return tr; +} + + + +/* Function: P7ReverseTrace() + * Date: SRE, Mon Aug 25 12:57:29 1997; Denver CO. + * + * Purpose: Reverse the arrays in a traceback structure. + * Tracebacks from Forward() and Viterbi() are + * collected backwards, and call this function + * when they're done. + * + * It's possible to reverse the arrays in place + * more efficiently; but the realloc/copy strategy + * has the advantage of reallocating the trace + * into the right size of memory. (Tracebacks + * overallocate.) + * + * Args: tr - the traceback to reverse. tr->tlen must be set. + * + * Return: (void) + * tr is modified. + */ +void +P7ReverseTrace(struct p7trace_s *tr) +{ + char *statetype; + int *nodeidx; + int *pos; + int opos, npos; + + /* Allocate + */ + statetype = MallocOrDie (sizeof(char)* tr->tlen); + nodeidx = MallocOrDie (sizeof(int) * tr->tlen); + pos = MallocOrDie (sizeof(int) * tr->tlen); + + /* Reverse the trace. + */ + for (opos = tr->tlen-1, npos = 0; npos < tr->tlen; npos++, opos--) + { + statetype[npos] = tr->statetype[opos]; + nodeidx[npos] = tr->nodeidx[opos]; + pos[npos] = tr->pos[opos]; + } + + /* Swap old, new arrays. + */ + free(tr->statetype); + free(tr->nodeidx); + free(tr->pos); + tr->statetype = statetype; + tr->nodeidx = nodeidx; + tr->pos = pos; +} + + + +/* Function: P7TraceCount() + * + * Purpose: Count a traceback into a count-based HMM structure. + * (Usually as part of a model parameter re-estimation.) + * + * Args: hmm - counts-based HMM + * dsq - digitized sequence that traceback aligns to the HMM (1..L) + * wt - weight on the sequence + * tr - alignment of seq to HMM + * + * Return: (void) + */ +void +P7TraceCount(struct plan7_s *hmm, char *dsq, float wt, struct p7trace_s *tr) +{ + int tpos; /* position in tr */ + int i; /* symbol position in seq */ + + for (tpos = 0; tpos < tr->tlen; tpos++) + { + i = tr->pos[tpos]; + + /* Emission counts. + * Don't bother counting null states N,J,C. + */ + if (tr->statetype[tpos] == STM) + P7CountSymbol(hmm->mat[tr->nodeidx[tpos]], dsq[i], wt); + else if (tr->statetype[tpos] == STI) + P7CountSymbol(hmm->ins[tr->nodeidx[tpos]], dsq[i], wt); + + /* State transition counts + */ + switch (tr->statetype[tpos]) { + case STS: + break; /* don't bother; P=1 */ + case STN: + switch (tr->statetype[tpos+1]) { + case STB: hmm->xt[XTN][MOVE] += wt; break; + case STN: hmm->xt[XTN][LOOP] += wt; break; + default: + Die("illegal state transition %s->%s in traceback", + Statetype(tr->statetype[tpos]), + Statetype(tr->statetype[tpos+1])); + } + break; + case STB: + switch (tr->statetype[tpos+1]) { + case STM: hmm->begin[tr->nodeidx[tpos+1]] += wt; break; + case STD: hmm->tbd1 += wt; break; + default: + Die("illegal state transition %s->%s in traceback", + Statetype(tr->statetype[tpos]), + Statetype(tr->statetype[tpos+1])); + } + break; + case STM: + switch (tr->statetype[tpos+1]) { + case STM: hmm->t[tr->nodeidx[tpos]][TMM] += wt; break; + case STI: hmm->t[tr->nodeidx[tpos]][TMI] += wt; break; + case STD: hmm->t[tr->nodeidx[tpos]][TMD] += wt; break; + case STE: hmm->end[tr->nodeidx[tpos]] += wt; break; + default: + Die("illegal state transition %s->%s in traceback", + Statetype(tr->statetype[tpos]), + Statetype(tr->statetype[tpos+1])); + } + break; + case STI: + switch (tr->statetype[tpos+1]) { + case STM: hmm->t[tr->nodeidx[tpos]][TIM] += wt; break; + case STI: hmm->t[tr->nodeidx[tpos]][TII] += wt; break; + default: + Die("illegal state transition %s->%s in traceback", + Statetype(tr->statetype[tpos]), + Statetype(tr->statetype[tpos+1])); + } + break; + case STD: + switch (tr->statetype[tpos+1]) { + case STM: hmm->t[tr->nodeidx[tpos]][TDM] += wt; break; + case STD: hmm->t[tr->nodeidx[tpos]][TDD] += wt; break; + case STE: /* ignore; p(D->E) = 1.0 */ break; + default: + Die("illegal state transition %s->%s in traceback", + Statetype(tr->statetype[tpos]), + Statetype(tr->statetype[tpos+1])); + } + break; + case STE: + switch (tr->statetype[tpos+1]) { + case STC: hmm->xt[XTE][MOVE] += wt; break; + case STJ: hmm->xt[XTE][LOOP] += wt; break; + default: + Die("illegal state transition %s->%s in traceback", + Statetype(tr->statetype[tpos]), + Statetype(tr->statetype[tpos+1])); + } + break; + case STJ: + switch (tr->statetype[tpos+1]) { + case STB: hmm->xt[XTJ][MOVE] += wt; break; + case STJ: hmm->xt[XTJ][LOOP] += wt; break; + default: + Die("illegal state transition %s->%s in traceback", + Statetype(tr->statetype[tpos]), + Statetype(tr->statetype[tpos+1])); + } + break; + case STC: + switch (tr->statetype[tpos+1]) { + case STT: hmm->xt[XTC][MOVE] += wt; break; + case STC: hmm->xt[XTC][LOOP] += wt; break; + default: + Die("illegal state transition %s->%s in traceback", + Statetype(tr->statetype[tpos]), + Statetype(tr->statetype[tpos+1])); + } + break; + case STT: + break; /* T is the last. It makes no transitions. */ + default: + Die("illegal state %s in traceback", + Statetype(tr->statetype[tpos])); + } + } +} + + +/* Function: P7TraceScore() + * + * Purpose: Score a traceback and return the score in scaled bits. + * + * Args: hmm - HMM with valid log odds scores. + * dsq - digitized sequence that traceback aligns to the HMM (1..L) + * tr - alignment of seq to HMM + * + * Return: (void) + */ +float +P7TraceScore(struct plan7_s *hmm, char *dsq, struct p7trace_s *tr) +{ + int score; /* total score as a scaled integer */ + int tpos; /* position in tr */ + int sym; /* digitized symbol in dsq */ + + /* P7PrintTrace(stdout, tr, hmm, dsq); */ + score = 0; + for (tpos = 0; tpos < tr->tlen-1; tpos++) + { + sym = (int) dsq[tr->pos[tpos]]; + + /* Emissions. + * Don't bother counting null states N,J,C. + */ + if (tr->statetype[tpos] == STM) + score += hmm->msc[sym][tr->nodeidx[tpos]]; + else if (tr->statetype[tpos] == STI) + score += hmm->isc[sym][tr->nodeidx[tpos]]; + + /* State transitions. + */ + score += TransitionScoreLookup(hmm, + tr->statetype[tpos], tr->nodeidx[tpos], + tr->statetype[tpos+1], tr->nodeidx[tpos+1]); + } + return Scorify(score); +} + + + +/* Function: P7Traces2Alignment() + * + * Purpose: Convert an array of traceback structures for a set + * of sequences into a new multiple alignment. + * + * Insertions are put into lower case and + * are not aligned; instead, Nterm is right-justified, + * Cterm is left-justified, and internal insertions + * are split in half and the halves are justified in + * each direction (the objective being to increase + * the chances of getting insertions aligned well enough + * for them to become a match). SAM gap char conventions + * are used: - in match columns, . in insert columns + * + * NOTE: Does not recognize J state. + * + * Args: dsq - digitized unaligned sequences + * sqinfo - array of info about the sequences + * wgt - weights on seqs + * nseq - number of sequences + * mlen - length of model (number of match states) + * tr - array of tracebacks + * matchonly - TRUE if we don't print insert-generated symbols at all + * Return: MSA structure; NULL on failure. + * Caller responsible for freeing msa with MSAFree(msa); + */ +MSA * +P7Traces2Alignment(char **dsq, SQINFO *sqinfo, float *wgt, int nseq, int mlen, + struct p7trace_s **tr, int matchonly) +{ + MSA *msa; /* RETURN: new alignment */ + int idx; /* counter for sequences */ + int alen; /* width of alignment */ + int *inserts; /* array of max gaps between aligned columns */ + int *matmap; /* matmap[k] = apos of match k [1..M] */ + int nins; /* counter for inserts */ + int apos; /* position in aligned sequence (0..alen-1)*/ + int rpos; /* position in raw digital sequence (1..L)*/ + int tpos; /* position counter in traceback */ + int statetype; /* type of current state, e.g. STM */ + int k; /* counter over states in model */ + + /* Here's the problem. We want to align the match states in columns, + * but some sequences have inserted symbols in them; we need some + * sort of overall knowledge of where the inserts are and how long + * they are in order to create the alignment. + * + * Here's our trick. inserts[] is a 0..hmm->M array; inserts[i] stores + * the maximum number of times insert substate i was used. This + * is the maximum number of gaps to insert between canonical + * column i and i+1. inserts[0] is the N-term tail; inserts[M] is + * the C-term tail. + * + * Remember that N and C emit on transition, hence the check for an + * N->N or C->C transition before bumping nins. + */ + inserts = (int *) MallocOrDie (sizeof(int) * (mlen+1)); + for (k = 0; k <= mlen; k++) + inserts[k] = 0; + for (idx = 0; idx < nseq; idx++) { + nins = 0; + for (tpos = 0; tpos < tr[idx]->tlen; tpos++) { + switch (tr[idx]->statetype[tpos]) { + case STI: nins++; break; + case STN: if (tr[idx]->statetype[tpos-1] == STN) nins++; break; + case STC: if (tr[idx]->statetype[tpos-1] == STC) nins++; break; + case STM: + case STD: /* M,D: record max. reset ctr. */ + if (nins > inserts[tr[idx]->nodeidx[tpos]-1]) + inserts[tr[idx]->nodeidx[tpos]-1] = nins; + nins = 0; + break; + case STB: /* B; record N-tail max, reset ctr */ + if (nins > inserts[0]) + inserts[0] = nins; + nins = 0; + break; + case STT: /* T: record C-tail max */ + if (nins > inserts[mlen]) + inserts[mlen] = nins; + break; + case STS: case STE: break; /* ignore other states */ + case STJ: + Die("yo! you don't support J in Traces2Alignment(), remember?"); + default: + Die("Traces2Alignment reports unrecognized statetype %c", + Statetype(tr[idx]->statetype[tpos])); + } + } + } + + /* Insert compression option. */ + if (matchonly) + for (k = 0; k <= mlen; k++) + if (inserts[k] > 1) + inserts[k] = 1; + + /*********************************************** + * Construct the alignment + ***********************************************/ + /* calculate alignment length and matmap */ + matmap= (int *) MallocOrDie (sizeof(int) * (mlen+1)); + matmap[0] = -1; + alen = inserts[0]; + for (k = 1; k <= mlen ; k++) { + matmap[k] = alen; + alen += inserts[k] + 1; + } + /* allocation for new alignment */ + msa = MSAAlloc(nseq, alen); + + for (idx = 0; idx < nseq; idx++) { + /* blank an aseq */ + for (apos = 0; apos < alen; apos++) + msa->aseq[idx][apos] = '.'; + for (k = 1; k <= mlen; k++) + msa->aseq[idx][matmap[k]] = '-'; + msa->aseq[idx][alen] = '\0'; + /* align the sequence */ + apos = 0; + for (tpos = 0; tpos < tr[idx]->tlen; tpos++) { + statetype = tr[idx]->statetype[tpos]; /* just for clarity */ + rpos = tr[idx]->pos[tpos]; + k = tr[idx]->nodeidx[tpos]; + + if (statetype == STM) { + apos = matmap[k]; + msa->aseq[idx][apos] = Alphabet[(int) dsq[idx][rpos]]; + apos++; + } + else if (statetype == STI) { + if (matchonly) + msa->aseq[idx][apos] = '*'; /* insert compression option */ + else { + msa->aseq[idx][apos] = (char) tolower((int) Alphabet[(int) dsq[idx][rpos]]); + apos++; + } + } + else if ((statetype == STN || statetype == STC) && rpos > 0) { + if (matchonly) + msa->aseq[idx][apos] = '*'; /* insert compression option */ + else { + msa->aseq[idx][apos] = (char) tolower((int) Alphabet[(int) dsq[idx][rpos]]); + apos++; + } + } + else if (statetype == STE) + apos = matmap[mlen]+1; /* set position for C-term tail */ + } + + /* N-terminal extension is right-justified. + * Internal inserts are split in half, and C-term is right-justified. + * C-terminal extension remains left-justified. + */ + if (! matchonly) { + rightjustify(msa->aseq[idx], inserts[0]); + + for (k = 1; k < mlen; k++) + if (inserts[k] > 1) { + for (nins = 0, apos = matmap[k]+1; islower((int) (msa->aseq[idx][apos])); apos++) + nins++; + nins /= 2; /* split the insertion in half */ + rightjustify(msa->aseq[idx]+matmap[k]+1+nins, inserts[k]-nins); + } + } + + } + + /*********************************************** + * Build the rest of the MSA annotation. + ***********************************************/ + + msa->nseq = nseq; + msa->alen = alen; + msa->au = MallocOrDie(sizeof(char) * (strlen(RELEASE)+7)); + sprintf(msa->au, "HMMER %s", RELEASE); + /* copy sqinfo array and weights */ + for (idx = 0; idx < nseq; idx++) + { + msa->sqname[idx] = sre_strdup(sqinfo[idx].name, -1); + if (sqinfo[idx].flags & SQINFO_ACC) + MSASetSeqAccession(msa, idx, sqinfo[idx].acc); + if (sqinfo[idx].flags & SQINFO_DESC) + MSASetSeqAccession(msa, idx, sqinfo[idx].desc); + + if (sqinfo[idx].flags & SQINFO_SS) { + if (msa->ss == NULL) msa->ss = MallocOrDie(sizeof(char *) * nseq); + MakeAlignedString(msa->aseq[idx], alen, + sqinfo[idx].ss, &(msa->ss[idx])); + } + if (sqinfo[idx].flags & SQINFO_SA) { + if (msa->sa == NULL) msa->sa = MallocOrDie(sizeof(char *) * nseq); + MakeAlignedString(msa->aseq[idx], alen, + sqinfo[idx].sa, &(msa->sa[idx])); + } + msa->wgt[idx] = wgt[idx]; + } + + /* #=RF annotation: x for match column, . for insert column + */ + msa->rf = (char *) MallocOrDie (sizeof(char) * (alen+1)); + for (apos = 0; apos < alen; apos++) + msa->rf[apos] = '.'; + for (k = 1; k <= mlen; k++) + msa->rf[matmap[k]] = 'x'; + msa->rf[alen] = '\0'; + + /* Currently, we produce no consensus structure. + * #=CS, generated from HMM structural annotation, would go here. + */ + + free(inserts); + free(matmap); + return msa; +} + +/* Function: TransitionScoreLookup() + * + * Purpose: Convenience function used in PrintTrace() and TraceScore(); + * given state types and node indices for a transition, + * return the integer score for that transition. + */ +int +TransitionScoreLookup(struct plan7_s *hmm, char st1, int k1, + char st2, int k2) +{ + switch (st1) { + case STS: return 0; /* S never pays */ + case STN: + switch (st2) { + case STB: return hmm->xsc[XTN][MOVE]; + case STN: return hmm->xsc[XTN][LOOP]; + default: Die("illegal %s->%s transition", Statetype(st1), Statetype(st2)); + } + break; + case STB: + switch (st2) { + case STM: return hmm->bsc[k2]; + case STD: return Prob2Score(hmm->tbd1, 1.); + default: Die("illegal %s->%s transition", Statetype(st1), Statetype(st2)); + } + break; + case STM: + switch (st2) { + case STM: return hmm->tsc[k1][TMM]; + case STI: return hmm->tsc[k1][TMI]; + case STD: return hmm->tsc[k1][TMD]; + case STE: return hmm->esc[k1]; + default: Die("illegal %s->%s transition", Statetype(st1), Statetype(st2)); + } + break; + case STI: + switch (st2) { + case STM: return hmm->tsc[k1][TIM]; + case STI: return hmm->tsc[k1][TII]; + default: Die("illegal %s->%s transition", Statetype(st1), Statetype(st2)); + } + break; + case STD: + switch (st2) { + case STM: return hmm->tsc[k1][TDM]; + case STD: return hmm->tsc[k1][TDD]; + case STE: return 0; /* D_m->E has probability 1.0 by definition in Plan7 */ + default: Die("illegal %s->%s transition", Statetype(st1), Statetype(st2)); + } + break; + case STE: + switch (st2) { + case STC: return hmm->xsc[XTE][MOVE]; + case STJ: return hmm->xsc[XTE][LOOP]; + default: Die("illegal %s->%s transition", Statetype(st1), Statetype(st2)); + } + break; + case STJ: + switch (st2) { + case STB: return hmm->xsc[XTJ][MOVE]; + case STJ: return hmm->xsc[XTJ][LOOP]; + default: Die("illegal %s->%s transition", Statetype(st1), Statetype(st2)); + } + break; + case STC: + switch (st2) { + case STT: return hmm->xsc[XTC][MOVE]; + case STC: return hmm->xsc[XTC][LOOP]; + default: Die("illegal %s->%s transition", Statetype(st1), Statetype(st2)); + } + break; + case STT: return 0; /* T makes no transitions */ + default: Die("illegal state %s in traceback", Statetype(st1)); + } + /*NOTREACHED*/ + return 0; +} + + +/* Function: CreateFancyAli() + * Date: SRE, Mon Oct 27 06:49:44 1997 [Sanger Centre UK] + * + * Purpose: Output of an HMM/sequence alignment, using a + * traceback structure. Deliberately similar to + * the output of BLAST, to make it easier for + * people to adapt their Perl parsers (or what have + * you) from BLAST to HMMER. + * + * Args: tr - traceback structure that gives the alignment + * hmm - the model + * dsq - the sequence (digitized form) + * name- name of the sequence + * + * Return: allocated, filled fancy alignment structure. + */ +struct fancyali_s * +CreateFancyAli(struct p7trace_s *tr, struct plan7_s *hmm, + char *dsq, char *name) +{ + struct fancyali_s *ali; /* alignment to create */ + int tpos; /* position in trace and alignment */ + int bestsym; /* index of best symbol at this pos */ + float mthresh; /* above this P(x), display uppercase */ + + /* Allocate and initialize the five lines of display + */ + ali = AllocFancyAli(); + ali->rfline = NULL; + ali->csline = NULL; + ali->model = MallocOrDie (sizeof(char) * (tr->tlen+1)); + ali->mline = MallocOrDie (sizeof(char) * (tr->tlen+1)); + ali->aseq = MallocOrDie (sizeof(char) * (tr->tlen+1)); + + memset(ali->model, ' ', tr->tlen); + memset(ali->mline, ' ', tr->tlen); + memset(ali->aseq, ' ', tr->tlen); + + if (hmm->flags & PLAN7_RF) + { + ali->rfline = (char *) MallocOrDie (sizeof(char) * (tr->tlen+1)); + memset(ali->rfline, ' ', tr->tlen); + } + if (hmm->flags & PLAN7_CS) + { + ali->csline = (char *) MallocOrDie (sizeof(char) * (tr->tlen+1)); + memset(ali->csline, ' ', tr->tlen); + } + + ali->query = Strdup(hmm->name); + ali->target = Strdup(name); + + if (Alphabet_type == hmmAMINO) mthresh = 0.5; + else mthresh = 0.9; + + /* Find first, last seq position + * HMM start/end positions currently not recorded, because there + * might be multiple HMM hits per sequence. + */ + for (tpos = 0; tpos < tr->tlen; tpos++) + if (tr->pos[tpos] > 0) { + ali->sqfrom = tr->pos[tpos]; + break; + } + for (tpos = tr->tlen-1; tpos >= 0; tpos--) + if (tr->pos[tpos] > 0) { + ali->sqto = tr->pos[tpos]; + break; + } + + /* Fill in the five lines of display + */ + for (tpos = 0; tpos < tr->tlen; tpos++) { + switch (tr->statetype[tpos]) { + case STS: + case STT: + ali->model[tpos] = '*'; + break; + + case STN: + case STJ: + case STC: + ali->model[tpos] = '-'; + if (tr->pos[tpos] > 0) { + ali->aseq[tpos] = tolower(Alphabet[(int) dsq[tr->pos[tpos]]]); + } + break; + + case STB: + ali->model[tpos] = '>'; + break; + + case STE: + ali->model[tpos] = '<'; + break; + + case STM: + if (hmm->flags & PLAN7_RF) ali->rfline[tpos] = hmm->rf[tr->nodeidx[tpos]]; + if (hmm->flags & PLAN7_CS) ali->csline[tpos] = hmm->cs[tr->nodeidx[tpos]]; + bestsym = FMax(hmm->mat[tr->nodeidx[tpos]], Alphabet_size); + ali->model[tpos] = Alphabet[bestsym]; + if (hmm->mat[tr->nodeidx[tpos]][bestsym] < mthresh) + ali->model[tpos] = tolower(ali->model[tpos]); + if (dsq[tr->pos[tpos]] == bestsym) + { + ali->mline[tpos] = Alphabet[(int) dsq[tr->pos[tpos]]]; + if (hmm->mat[tr->nodeidx[tpos]][bestsym] < mthresh) + ali->mline[tpos] = tolower(ali->mline[tpos]); + } + else if (hmm->msc[(int) dsq[tr->pos[tpos]]] [tr->nodeidx[tpos]] > 0) + ali->mline[tpos] = '+'; + ali->aseq[tpos] = Alphabet[(int) dsq[tr->pos[tpos]]]; + break; + + case STD: + if (hmm->flags & PLAN7_RF) ali->rfline[tpos] = hmm->rf[tr->nodeidx[tpos]]; + if (hmm->flags & PLAN7_CS) ali->csline[tpos] = hmm->cs[tr->nodeidx[tpos]]; + bestsym = FMax(hmm->mat[tr->nodeidx[tpos]], Alphabet_size); + ali->model[tpos] = Alphabet[bestsym]; + if (hmm->mat[tr->nodeidx[tpos]][bestsym] < mthresh) + ali->model[tpos] = tolower(ali->model[tpos]); + ali->aseq[tpos] = '-'; + break; + + case STI: + ali->model[tpos] = '.'; + if (hmm->isc[(int) dsq[tr->pos[tpos]]] [tr->nodeidx[tpos]] > 0) + ali->mline[tpos] = '+'; + ali->aseq[tpos] = (char) tolower((int) Alphabet[(int) dsq[tr->pos[tpos]]]); + break; + + default: + Die("bogus statetype"); + } /* end switch over statetypes */ + } /* end loop over tpos */ + + ali->len = tpos; + if (hmm->flags & PLAN7_RF) ali->rfline[tpos] = '\0'; + if (hmm->flags & PLAN7_CS) ali->csline[tpos] = '\0'; + ali->model[tpos] = '\0'; + ali->mline[tpos] = '\0'; + ali->aseq[tpos] = '\0'; + return ali; +} + + +/* Function: PrintFancyAli() + * Date: SRE, Mon Oct 27 06:56:42 1997 [Sanger Centre UK] + * + * Purpose: Print an HMM/sequence alignment from a fancyali_s + * structure. Line length controlled by ALILENGTH in + * config.h (set to 50). + * + * Args: fp - where to print it (stdout or open FILE) + * ali - alignment to print + * + * Return: (void) + */ +void +PrintFancyAli(FILE *fp, struct fancyali_s *ali) +{ + char buffer[ALILENGTH+1]; /* output line buffer */ + int starti, endi; + int pos; + int i; + + buffer[ALILENGTH] = '\0'; + endi = ali->sqfrom - 1; + for (pos = 0; pos < ali->len; pos += ALILENGTH) + { + /* coords of target seq for this line */ + starti = endi + 1; + for (i = pos; ali->aseq[i] != '\0' && i < pos + ALILENGTH; i++) + if (!isgap(ali->aseq[i])) endi++; + + if (ali->csline != NULL) { + strncpy(buffer, ali->csline+pos, ALILENGTH); + fprintf(fp, " %16s %s\n", "CS", buffer); + } + if (ali->rfline != NULL) { + strncpy(buffer, ali->rfline+pos, ALILENGTH); + fprintf(fp, " %16s %s\n", "RF", buffer); + } + if (ali->model != NULL) { + strncpy(buffer, ali->model+pos, ALILENGTH); + fprintf(fp, " %16s %s\n", " ", buffer); + } + if (ali->mline != NULL) { + strncpy(buffer, ali->mline+pos, ALILENGTH); + fprintf(fp, " %16s %s\n", " ", buffer); + } + if (ali->aseq != NULL) { + strncpy(buffer, ali->aseq+pos, ALILENGTH); + if (endi >= starti) + fprintf(fp, " %10.10s %5d %s %-5d\n\n", ali->target, starti, buffer, endi); + else + fprintf(fp, " %10.10s %5s %s %-5s\n\n", ali->target, "-", buffer, "-"); + } + } + + /* Cleanup and return + */ + fflush(fp); + return; +} + + + +/* Function: TraceDecompose() + * Date: Sat Aug 30 11:18:40 1997 (Denver CO) + * + * Purpose: Decompose a long multi-hit trace into zero or more + * traces without N,C,J transitions: for consistent + * scoring and statistical evaluation of single domain + * hits. + * + * Args: otr - original trace structure + * ret_tr - RETURN: array of simpler traces + * ret_ntr- RETURN: number of traces. + * + * Return: (void) + * ret_tr alloc'ed here; free individuals with FreeTrace(). + */ +void +TraceDecompose(struct p7trace_s *otr, struct p7trace_s ***ret_tr, int *ret_ntr) +{ + struct p7trace_s **tr; /* array of new traces */ + int ntr; /* number of traces */ + int i,j; /* position counters in traces */ + int idx; /* index over ntr subtraces */ + + /* First pass: count begin states to get ntr. + */ + for (ntr = 0, i = 0; i < otr->tlen; i++) + if (otr->statetype[i] == STB) ntr++; + + /* Allocations. + */ + if (ntr == 0) { + *ret_ntr = 0; + *ret_tr = NULL; + return; + } + tr = (struct p7trace_s **) MallocOrDie (sizeof(struct p7trace_s *) * ntr); + + for (idx = 0, i = 0; i < otr->tlen; i++) /* i = position in old trace */ + if (otr->statetype[i] == STB) + { + for (j = i+1; j < otr->tlen; j++) /* j = tmp; get length of subtrace */ + if (otr->statetype[j] == STE) break; + /* trace = S-N-(B..E)-C-T : len + 4 : j-i+1 + 4*/ + P7AllocTrace(j-i+5, &(tr[idx])); + tr[idx]->tlen = j-i+5; + + tr[idx]->statetype[0] = STS; + tr[idx]->nodeidx[0] = 0; + tr[idx]->pos[0] = 0; + tr[idx]->statetype[1] = STN; + tr[idx]->nodeidx[1] = 0; + tr[idx]->pos[1] = 0; + j = 2; /* now j = position in new subtrace */ + while (1) /* copy subtrace */ + { + tr[idx]->statetype[j] = otr->statetype[i]; + tr[idx]->nodeidx[j] = otr->nodeidx[i]; + tr[idx]->pos[j] = otr->pos[i]; + if (otr->statetype[i] == STE) break; + i++; j++; + } + j++; + tr[idx]->statetype[j] = STC; + tr[idx]->nodeidx[j] = 0; + tr[idx]->pos[j] = 0; + j++; + tr[idx]->statetype[j] = STT; + tr[idx]->nodeidx[j] = 0; + tr[idx]->pos[j] = 0; + idx++; + } + + *ret_tr = tr; + *ret_ntr = ntr; + return; +} + + +/* Function: TraceDomainNumber() + * + * Purpose: Count how many times we traverse the + * model in a single Plan7 trace -- equivalent + * to counting the number of domains. + * + * (A weakness is that we might discard some of + * those domains because they have low scores + * below E or T threshold.) + */ +int +TraceDomainNumber(struct p7trace_s *tr) +{ + int i; + int ndom = 0; + + for (i = 0; i < tr->tlen; i++) + if (tr->statetype[i] == STB) ndom++; + return ndom; +} + + +/* Function: TraceSimpleBounds() + * + * Purpose: For a trace that contains only a single + * traverse of the model (i.e. something that's + * come from TraceDecompose(), or a global + * alignment), determine the bounds of + * the match on both the sequence [1..L] and the + * model [1..M]. + * + * Args: tr - trace to look at + * i1 - RETURN: start point in sequence [1..L] + * i2 - RETURN: end point in sequence [1..L] + * k1 - RETURN: start point in model [1..M] + * k2 - RETURN: end point in model [1..M] + */ +void +TraceSimpleBounds(struct p7trace_s *tr, int *ret_i1, int *ret_i2, + int *ret_k1, int *ret_k2) +{ + int i1, i2, k1, k2, tpos; + + i1 = k1 = i2 = k2 = -1; + + /* Look forwards to find start of match */ + for (tpos = 0; tpos < tr->tlen; tpos++) + { + if (k1 == -1 && (tr->statetype[tpos] == STM || tr->statetype[tpos] == STD)) + k1 = tr->nodeidx[tpos]; + if (tr->statetype[tpos] == STM) + { + i1 = tr->pos[tpos]; + break; + } + } + if (tpos == tr->tlen || i1 == -1 || k1 == -1) + Die("sanity check failed: didn't find a match state in trace"); + + /* Look backwards to find end of match */ + for (tpos = tr->tlen-1; tpos >= 0; tpos--) + { + if (k2 == -1 && (tr->statetype[tpos] == STM || tr->statetype[tpos] == STD)) + k2 = tr->nodeidx[tpos]; + if (tr->statetype[tpos] == STM) + { + i2 = tr->pos[tpos]; + break; + } + } + if (tpos == tr->tlen || i2 == -1 || k2 == -1) + Die("sanity check failed: didn't find a match state in trace"); + + *ret_k1 = k1; + *ret_i1 = i1; + *ret_k2 = k2; + *ret_i2 = i2; +} + + +/* Function: MasterTraceFromMap() + * Date: SRE, Tue Jul 7 18:51:11 1998 [St. Louis] + * + * Purpose: Convert an alignment map (e.g. hmm->map) to + * a master trace. Used for mapping an alignment + * onto an HMM. Generally precedes a call to + * ImposeMasterTrace(). Compare P7ViterbiAlignAlignment(), + * which aligns an alignment to the model using a + * Viterbi algorithm to get a master trace. + * MasterTraceFromMap() only works if the alignment + * is exactly the one used to train the model. + * + * Args: map - the map (usually hmm->map is passed) 1..M + * M - length of map (model; usually hmm->M passed) + * alen - length of alignment that map refers to + * + * Returns: ptr to master trace + * Caller must free: P7FreeTrace(). + */ +struct p7trace_s * +MasterTraceFromMap(int *map, int M, int alen) +{ + struct p7trace_s *tr; /* RETURN: master trace */ + int tpos; /* position in trace */ + int apos; /* position in alignment, 1..alen */ + int k; /* position in model */ + + /* Allocate for the trace. + * S-N-B- ... - E-C-T : 6 states + alen is maximum trace, + * because each of alen columns is an N*, M*, I*, or C* metastate. + * No D* metastates possible. + */ + P7AllocTrace(alen+6, &tr); + + /* Initialize the trace + */ + tpos = 0; + TraceSet(tr, tpos, STS, 0, 0); tpos++; + TraceSet(tr, tpos, STN, 0, 0); tpos++; + + /* Leading N's + */ + for (apos = 1; apos < map[1]; apos++) { + TraceSet(tr, tpos, STN, 0, apos); tpos++; + } /* now apos == map[1] */ + TraceSet(tr, tpos, STB, 0, 0); tpos++; + + for (k = 1; k < M; k++) + { + TraceSet(tr, tpos, STM, k, apos); tpos++; + apos++; + + for (; apos < map[k+1]; apos++) { + TraceSet(tr, tpos, STI, k, apos); tpos++; + } + } /* now apos == map[M] and k == M*/ + + TraceSet(tr, tpos, STM, M, apos); tpos++; + apos++; + + /* Trailing C's + */ + TraceSet(tr, tpos, STE, 0, 0); tpos++; + TraceSet(tr, tpos, STC, 0, 0); tpos++; + for (; apos <= alen; apos++) { + TraceSet(tr, tpos, STC, 0, apos); tpos++; + } + + /* Terminate and return + */ + TraceSet(tr, tpos, STT, 0, 0); tpos++; + tr->tlen = tpos; + return tr; +} + + + +/* Function: ImposeMasterTrace() + * Date: SRE, Sun Jul 5 14:27:16 1998 [St. Louis] + * + * Purpose: Goes with P7ViterbiAlignAlignment(), which gives us + * a "master trace" for a whole alignment. Now, given + * the alignment and the master trace, construct individual + * tracebacks for each sequence. Later we'll hand these + * (and presumably other traces) to P7Traces2Alignment(). + * + * It is possible to generate individual traces that + * are not consistent with Plan7 (e.g. D->I and I->D + * transitions may be present). P7Traces2Alignment() + * can handle such traces; other functions may not. + * See modelmaker.c:trace_doctor() if this is a problem. + * + * Akin to modelmaker.c:fake_tracebacks(). + * + * Args: aseq - aligned seqs + * nseq - number of aligned seqs + * mtr - master traceback + * ret_tr- RETURN: array of individual tracebacks, one for each aseq + * + * Returns: (void) + */ +void +ImposeMasterTrace(char **aseq, int nseq, struct p7trace_s *mtr, struct p7trace_s ***ret_tr) +{ + struct p7trace_s **tr; + int idx; /* counter over sequences */ + int i; /* position in raw sequence (1..L) */ + int tpos; /* position in traceback */ + int mpos; /* position in master trace */ + + tr = (struct p7trace_s **) MallocOrDie (sizeof(struct p7trace_s *) * nseq); + + for (idx = 0; idx < nseq; idx++) + { + P7AllocTrace(mtr->tlen, &tr[idx]); /* we're guaranteed that individuals len < master len */ + + tpos = 0; + i = 1; + for (mpos = 0; mpos < mtr->tlen; mpos++) + { + switch (mtr->statetype[mpos]) + { + case STS: /* straight copies w/ no emission: S, B, D, E, T*/ + case STB: + case STD: + case STE: + case STT: + TraceSet(tr[idx], tpos, mtr->statetype[mpos], mtr->nodeidx[mpos], 0); + tpos++; + break; + + case STM: /* M* implies M or D */ + if (isgap(aseq[idx][mtr->pos[mpos]-1])) + TraceSet(tr[idx], tpos, STD, mtr->nodeidx[mpos], 0); + else { + TraceSet(tr[idx], tpos, STM, mtr->nodeidx[mpos], i); + i++; + } + tpos++; + break; + + case STI: /* I* implies I or nothing */ + if (!isgap(aseq[idx][mtr->pos[mpos]-1])) { + TraceSet(tr[idx], tpos, STI, mtr->nodeidx[mpos], i); + i++; + tpos++; + } + break; + + case STJ: /* N,J,C: first N* -> N. After that, N* -> N or nothing. */ + case STN: + case STC: + if (mtr->pos[mpos] == 0) { + TraceSet(tr[idx], tpos, mtr->statetype[mpos], 0, 0); + tpos++; + } else if (!isgap(aseq[idx][mtr->pos[mpos]-1])) { + TraceSet(tr[idx], tpos, mtr->statetype[mpos], 0, i); + i++; + tpos++; + } + break; + + case STBOGUS: + Die("never happens. Trust me."); + } + } + tr[idx]->tlen = tpos; + } + *ret_tr = tr; +} + + +/* Function: rightjustify() + * + * Purpose: Given a gap-containing string of length n, + * pull all the non-gap characters as far as + * possible to the right, leaving gaps on the + * left side. Used to rearrange the positions + * of insertions in HMMER alignments. + */ +static void +rightjustify(char *s, int n) +{ + int npos; + int opos; + + npos = n-1; + opos = n-1; + while (opos >= 0) { + if (isgap(s[opos])) opos--; + else s[npos--]=s[opos--]; + } + while (npos >= 0) + s[npos--] = '.'; +} + + diff --git a/forester/archive/RIO/others/hmmer/src/weetest.c b/forester/archive/RIO/others/hmmer/src/weetest.c new file mode 100644 index 0000000..406a41e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/src/weetest.c @@ -0,0 +1,55 @@ +/* This is a throwaway wrapper program for doing quick + * and dirty tests on sequence databases. Archives of past + * versions are kept and logged in RCS. + * RCS $Id: weetest.c,v 1.1.1.1 2005/03/22 08:34:07 cmzmasek Exp $ + * + * Compile with: + * +cc -g -o weetest -I ~/lib/squid.linux -L/nfs/wol2/people/eddy/lib/squid.linux weetest.c alphabet.o camJul97.o core_algorithms.o histogram.o hmmio.o mathsupport.o masks.o misc.o modelmakers.o debug.o prior.o trace.o plan7.o states.o tophits.o -lsquid-debug -lm + * + * or, for optimized version: +cc -O2 -o weetest -I ~/lib/squid.linux -L/nfs/wol2/people/eddy/lib/squid.linux weetest.c alphabet.o camJul97.o core_algorithms.o histogram.o hmmio.o mathsupport.o masks.o misc.o modelmakers.o debug.o prior.o trace.o plan7.o states.o tophits.o -lsquid -lm + */ + +/* This test looks at histogram of protein lengths in Swissprot + */ +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +int +main(int argc, char **argv) +{ + char *file; + char *seq; + char *dsq; + int format; + SQFILE *sqfp; + SQINFO sqinfo; + int i,x; + + struct histogram_s *h; + + file = argv[1]; + if (! SeqfileFormat(file, &format, "BLASTDB")) + Die("SeqfileFormat()"); + if ((sqfp = SeqfileOpen(file, format, "BLASTDB")) == NULL) + Die("SeqfileOpen()"); + + h = AllocHistogram(0, 10000, 1000); + while (ReadSeq(sqfp, format, &seq, &sqinfo)) + AddToHistogram(h, (float) sqinfo.len); + + GaussianFitHistogram(h, 999999.); + PrintASCIIHistogram(stdout, h); + + printf("mean = %f\n", h->param[GAUSS_MEAN]); + printf("sd = %f\n", h->param[GAUSS_SD]); + + SeqfileClose(sqfp); + + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/Exercises.sh b/forester/archive/RIO/others/hmmer/testsuite/Exercises.sh new file mode 100644 index 0000000..612ac99 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Exercises.sh @@ -0,0 +1,17 @@ +#! /bin/sh + +# Various exercises to test the package. +# SRE, Fri Oct 23 10:38:44 1998 +# RCS $Id: Exercises.sh,v 1.1.1.1 2005/03/22 08:34:49 cmzmasek Exp $ + +# Test binary formats and interconversion. +# (tests for bug detected in 2.1, fixed in 2.1.1a.) +# +../binaries/hmmconvert -F fn3-bin ex1.tmp > /dev/null +../binaries/hmmconvert -F fn3-bin-swap ex2.tmp > /dev/null +diff ex1.tmp ex2.tmp > /dev/null +if (test $? != 0) then + echo FAILED: hmmconvert byteswap test +fi +rm ex1.tmp ex2.tmp + diff --git a/forester/archive/RIO/others/hmmer/testsuite/Makefile.in b/forester/archive/RIO/others/hmmer/testsuite/Makefile.in new file mode 100644 index 0000000..4bda272 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Makefile.in @@ -0,0 +1,83 @@ +################################################################ +# Makefile for HMMER testsuite +# CVS $Id: Makefile.in,v 1.1.1.1 2005/03/22 08:34:49 cmzmasek Exp $ +########## +# HMMER - Biological sequence analysis with profile HMMs +# Copyright (C) 1992-1999 Washington University School of Medicine +# All Rights Reserved +# +# This source code is distributed under the terms of the +# GNU General Public License. See the files COPYING and LICENSE +# for details. +########### + +CC = @CC@ +CFLAGS = @CFLAGS@ +MDEFS = @MDEFS@ @DEFS@ + +# Configuration for optional pthreads multiprocessor support +# +PTHREAD_LIBS = @PTHREAD_LIBS@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ + +SHELL = /bin/sh +MYLIBS = -lhmmer -lsquid +LIBS = @LIBS@ -lm + +SHIVA = alignalign_test\ + evd_test\ + masks_test\ + parsingviterbi_test\ + tophits_test\ + trace_test\ + viterbi_exercise\ + weeviterbi_test + +####### +## Targets defining how to make Shiva executables. +####### + +.c.o: + $(CC) $(CFLAGS) $(PTHREAD_CFLAGS) $(MDEFS) -I../squid -I../src -c $< + +all: $(SHIVA) + +$(SHIVA): @EXEC_DEPENDENCY@ + $(CC) $(CFLAGS) $(PTHREAD_CFLAGS) $(MDEFS) -o $@ -L../squid -L../src $@.o $(MYLIBS) $(PTHREAD_LIBS) $(LIBS) + +####### +## `make check` actually runs the tests. +####### + +check: $(SHIVA) + @echo + @echo Running compiled Shiva exercises: + @echo Warning: some tests may take several minutes to complete. + @for shivatest in $(SHIVA); do\ + if ./$$shivatest; then\ + echo $$shivatest: ok;\ + else\ + echo $$shivatest: FAILED;\ + fi;\ + done + @echo + @echo Running scripted Shiva exercises: + @echo Warning: This also may take several minutes. + perl ./Optiontests.pl + sh ./Exercises.sh + +####### +## Miscellaneous +####### + +clean: + -rm -f *.o *~ Makefile.bak core $(SHIVA) TAGS gmon.out + +distclean: + make clean + -rm -f Makefile + +TAGS: + etags -t *.c *.h Makefile.in + + diff --git a/forester/archive/RIO/others/hmmer/testsuite/Optiontests.fa b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.fa new file mode 100644 index 0000000..cdaa297 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.fa @@ -0,0 +1,16 @@ +>seq1 +ACDEFGHIKLMNPQRSTVWY +>seq2 +ACDEFGHIKLMNPQRSTVWY +>seq3 +ACDEFGHIKLMNPQRSTVWY +>seq4 +ACDEFGHIKLMNPQRSTVWY +>seq5 +ACDEFGHIKLMNPQRSTVWY +>seq6 +ACDEFGHIKLMNPQRSTVWY +>seq7 +ACDEFGHIKLMNPQRSTVWY +>seq8 +ACDEFGHIKLMNPQRSTVWY diff --git a/forester/archive/RIO/others/hmmer/testsuite/Optiontests.nfa b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.nfa new file mode 100644 index 0000000..03d614d --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.nfa @@ -0,0 +1,12 @@ +>seq1 +AAACCCGGGTTT +>seq1 +AAACCCGGGTTT +>seq1 +AAACCCGGGTTT +>seq1 +AAACCCGGGTTT +>seq1 +AAACCCGGGTTT +>seq1 +AAACCCGGGTTT diff --git a/forester/archive/RIO/others/hmmer/testsuite/Optiontests.nslx b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.nslx new file mode 100644 index 0000000..aa19616 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.nslx @@ -0,0 +1,9 @@ +# A simple DNA alignment for Optiontests.pl + +#=RF xxxxxx +seq1 AAACCCGGGTTT +seq1 AAACCCGGGTTT +seq1 AAACCCGGGTTT +seq1 AAACCCGGGTTT +seq1 AAACCCGGGTTT +seq1 AAACCCGGGTTT diff --git a/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pam b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pam new file mode 100644 index 0000000..205f139 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pam @@ -0,0 +1,31 @@ +# Matrix made by matblas from blosum62.iij +# * column uses minimum score +# BLOSUM Clustered Scoring Matrix in 1/2 Bit Units +# Blocks Database = /data/blocks_5.0/blocks.dat +# Cluster Percentage: >= 62 +# Entropy = 0.6979, Expected = -0.5209 + A R N D C Q E G H I L K M F P S T W Y V B Z X * +A 4 -1 -2 -2 0 -1 -1 0 -2 -1 -1 -1 -1 -2 -1 1 0 -3 -2 0 -2 -1 0 -4 +R -1 5 0 -2 -3 1 0 -2 0 -3 -2 2 -1 -3 -2 -1 -1 -3 -2 -3 -1 0 -1 -4 +N -2 0 6 1 -3 0 0 0 1 -3 -3 0 -2 -3 -2 1 0 -4 -2 -3 3 0 -1 -4 +D -2 -2 1 6 -3 0 2 -1 -1 -3 -4 -1 -3 -3 -1 0 -1 -4 -3 -3 4 1 -1 -4 +C 0 -3 -3 -3 9 -3 -4 -3 -3 -1 -1 -3 -1 -2 -3 -1 -1 -2 -2 -1 -3 -3 -2 -4 +Q -1 1 0 0 -3 5 2 -2 0 -3 -2 1 0 -3 -1 0 -1 -2 -1 -2 0 3 -1 -4 +E -1 0 0 2 -4 2 5 -2 0 -3 -3 1 -2 -3 -1 0 -1 -3 -2 -2 1 4 -1 -4 +G 0 -2 0 -1 -3 -2 -2 6 -2 -4 -4 -2 -3 -3 -2 0 -2 -2 -3 -3 -1 -2 -1 -4 +H -2 0 1 -1 -3 0 0 -2 8 -3 -3 -1 -2 -1 -2 -1 -2 -2 2 -3 0 0 -1 -4 +I -1 -3 -3 -3 -1 -3 -3 -4 -3 4 2 -3 1 0 -3 -2 -1 -3 -1 3 -3 -3 -1 -4 +L -1 -2 -3 -4 -1 -2 -3 -4 -3 2 4 -2 2 0 -3 -2 -1 -2 -1 1 -4 -3 -1 -4 +K -1 2 0 -1 -3 1 1 -2 -1 -3 -2 5 -1 -3 -1 0 -1 -3 -2 -2 0 1 -1 -4 +M -1 -1 -2 -3 -1 0 -2 -3 -2 1 2 -1 5 0 -2 -1 -1 -1 -1 1 -3 -1 -1 -4 +F -2 -3 -3 -3 -2 -3 -3 -3 -1 0 0 -3 0 6 -4 -2 -2 1 3 -1 -3 -3 -1 -4 +P -1 -2 -2 -1 -3 -1 -1 -2 -2 -3 -3 -1 -2 -4 7 -1 -1 -4 -3 -2 -2 -1 -2 -4 +S 1 -1 1 0 -1 0 0 0 -1 -2 -2 0 -1 -2 -1 4 1 -3 -2 -2 0 0 0 -4 +T 0 -1 0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -2 -1 1 5 -2 -2 0 -1 -1 0 -4 +W -3 -3 -4 -4 -2 -2 -3 -2 -2 -3 -2 -3 -1 1 -4 -3 -2 11 2 -3 -4 -3 -2 -4 +Y -2 -2 -2 -3 -2 -1 -2 -3 2 -1 -1 -2 -1 3 -3 -2 -2 2 7 -1 -3 -2 -1 -4 +V 0 -3 -3 -3 -1 -2 -2 -3 -3 3 1 -2 1 -1 -2 -2 0 -3 -1 4 -3 -2 -1 -4 +B -2 -1 3 4 -3 0 1 -1 0 -3 -4 0 -3 -3 -2 0 -1 -4 -3 -3 4 1 -1 -4 +Z -1 0 0 1 -3 3 4 -2 0 -3 -3 1 -1 -3 -1 0 -1 -3 -2 -2 1 4 -1 -4 +X 0 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2 0 0 -2 -1 -1 -1 -1 -1 -4 +* -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 1 diff --git a/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pl b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pl new file mode 100644 index 0000000..1b5fbb9 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pl @@ -0,0 +1,116 @@ +#! /usr/local/bin/perl + +@tests = ( + "hmmbuild --informat selex -F Optiontests.hmm Optiontests.slx", # Make a protein HMM + "hmmbuild --informat selex -F Optiontests.nhmm Optiontests.nslx", # Make a DNA HMM + "hmmalign -h", + "hmmalign Optiontests.hmm Optiontests.fa", + "hmmalign -m Optiontests.hmm Optiontests.fa", + "hmmalign -o tmp Optiontests.hmm Optiontests.fa", + "hmmalign -q Optiontests.hmm Optiontests.fa", + "hmmalign --withali Optiontests.slx Optiontests.hmm Optiontests.fa", + "hmmalign --mapali Optiontests.slx Optiontests.hmm Optiontests.fa", + "hmmbuild -h", + "hmmbuild --informat selex tmp.hmm Optiontests.slx", + "hmmbuild --informat selex -F tmp.hmm Optiontests.slx", # Need -F to force + "hmmbuild --informat selex -n foo -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex -o tmp -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex -A tmp.hmm Optiontests.slx", + "hmmbuild --informat selex -f -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex -g -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex -s -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --fast -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --hand -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --null ../tutorial/amino.null -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --pam Optiontests.pam -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --prior ../tutorial/amino.pri -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --wblosum -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --wgsc -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --wme -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --wvoronoi -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --wnone -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --noeff -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --amino -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --nucleic -F tmp.hmm Optiontests.nslx", + "hmmbuild --informat selex --archpri 0.9 -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --binary -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --cfile tmp -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --gapmax 0.6 --fast -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --idlevel 0.5 -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --pamwgt 10 --pam Optiontests.pam -F tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --swentry 0.3 -F -s tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --swexit 0.3 -F -s tmp.hmm Optiontests.slx", + "hmmbuild --informat selex --verbose -F tmp.hmm Optiontests.slx", + "hmmcalibrate -h", + "hmmcalibrate Optiontests.hmm", + "hmmcalibrate --fixed 15 Optiontests.hmm", + "hmmcalibrate --mean 25 Optiontests.hmm", + "hmmcalibrate --histfile tmp --fixed 15 Optiontests.hmm", + "hmmcalibrate --num 4500 --fixed 15 Optiontests.hmm", + "hmmcalibrate --sd 50 --mean 25 Optiontests.hmm", + "hmmcalibrate --seed 666 --fixed 15 Optiontests.hmm", + "hmmconvert -h", + "hmmconvert Optiontests.hmm tmp2.hmm", + "hmmconvert -F Optiontests.hmm tmp2.hmm", + "hmmconvert -a -F Optiontests.hmm tmp2.hmm", + "hmmconvert -A Optiontests.hmm tmp2.hmm", # order sensitive. tmp2.hmm must be HMM + "hmmconvert -b -F Optiontests.hmm tmp2.hmm", + "hmmconvert -p -F Optiontests.hmm tmp2.hmm", + "hmmconvert -P -F Optiontests.hmm tmp2.hmm", + "hmmemit -h", + "hmmemit Optiontests.hmm", + "hmmemit -a Optiontests.hmm", + "hmmemit -n 6 Optiontests.hmm", + "hmmemit -o tmp Optiontests.hmm", + "hmmemit -q Optiontests.hmm", + "hmmemit --seed 666 Optiontests.hmm", + "hmmindex -h", + "hmmindex Optiontests.hmm", + "hmmfetch -h", + "hmmfetch Optiontests.hmm Optiontests", + "hmmpfam -h", + "hmmpfam -n Optiontests.nhmm Optiontests.nfa", + "hmmpfam -A 0 Optiontests.hmm Optiontests.fa", + "hmmpfam -E 1 Optiontests.hmm Optiontests.fa", + "hmmpfam -T 1 Optiontests.hmm Optiontests.fa", + "hmmpfam -Z 10 Optiontests.hmm Optiontests.fa", + "hmmpfam --domE 1 Optiontests.hmm Optiontests.fa", + "hmmpfam --domT 1 Optiontests.hmm Optiontests.fa", + "hmmpfam --forward Optiontests.hmm Optiontests.fa", + "hmmpfam --null2 Optiontests.hmm Optiontests.fa", + "hmmpfam --xnu Optiontests.hmm Optiontests.fa", + "hmmsearch -h", + "hmmsearch -A 0 Optiontests.hmm Optiontests.fa", + "hmmsearch -E 1 Optiontests.hmm Optiontests.fa", + "hmmsearch -T 1 Optiontests.hmm Optiontests.fa", + "hmmsearch -Z 10 Optiontests.hmm Optiontests.fa", + "hmmsearch --domE 1 Optiontests.hmm Optiontests.fa", + "hmmsearch --domT 1 Optiontests.hmm Optiontests.fa", + "hmmsearch --forward Optiontests.hmm Optiontests.fa", + "hmmsearch --null2 Optiontests.hmm Optiontests.fa", + "hmmsearch --xnu Optiontests.hmm Optiontests.fa", + ); + + +unlink "tmp.hmm"; +while ($testline = shift(@tests)) +{ + $status = system("../binaries/$testline 2>&1 > tmp.out"); + if ($status > 0) { + print "failure: $testline\n"; + $failed++; + } + $total++; +} + +$passed = $total - $failed; +printf "Option tests: %d. Passed: %d. Failed: %d\n", $total, $passed, $failed; + +unlink "tmp"; +unlink "tmp.out"; +unlink "tmp.hmm"; +unlink "tmp2.hmm"; +unlink "Optiontests.hmm"; +unlink "Optiontests.nhmm"; +unlink "Optiontests.hmm.ssi"; + diff --git a/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pri b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pri new file mode 100644 index 0000000..a2f19d3 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.pri @@ -0,0 +1,59 @@ +# This file incorporates Blocks9.plib, the UCSC mixture +# Dirichlet prior created by Kimmen Sjolander. +# + +Dirichlet # Strategy (mixture Dirichlet) +Amino # type of prior (Amino or Nucleic) + +# Transitions +1 # Single component +1.0 # with probability = 1.0 +0.7939 0.0278 0.0135 # m->m, m->i, m->d alpha's +0.1551 0.1331 # i->m, i->i alpha's +0.9002 0.5630 # d->m, d->d alpha's + +# Match emissions +# +9 # 9 components + +0.178091 +0.270671 0.039848 0.017576 0.016415 0.014268 0.131916 0.012391 0.022599 0.020358 0.030727 0.015315 0.048298 0.053803 0.020662 0.023612 0.216147 0.147226 0.065438 0.003758 0.009621 +# S A T , C G P >< N V M , Q H R I K F L D W , E Y + +0.056591 +0.021465 0.0103 0.011741 0.010883 0.385651 0.016416 0.076196 0.035329 0.013921 0.093517 0.022034 0.028593 0.013086 0.023011 0.018866 0.029156 0.018153 0.0361 0.07177 0.419641 +# Y , F W , H ,>< L M , N Q I C V S R , T P A K D G E + +0.0960191 +0.561459 0.045448 0.438366 0.764167 0.087364 0.259114 0.21494 0.145928 0.762204 0.24732 0.118662 0.441564 0.174822 0.53084 0.465529 0.583402 0.445586 0.22705 0.02951 0.12109 +# Q E , K N R S H D T A >< M P Y G , V L I W C F + +0.0781233 +0.070143 0.01114 0.019479 0.094657 0.013162 0.048038 0.077 0.032939 0.576639 0.072293 0.02824 0.080372 0.037661 0.185037 0.506783 0.073732 0.071587 0.042532 0.011254 0.028723 +# K R , Q , H >< N E T M S , P W Y A L G V C I , D F + +0.0834977 +0.041103 0.014794 0.00561 0.010216 0.153602 0.007797 0.007175 0.299635 0.010849 0.999446 0.210189 0.006127 0.013021 0.019798 0.014509 0.012049 0.035799 0.180085 0.012744 0.026466 +# L M , I , F V ><, W Y C T Q , A P H R , K S E N , D G + +0.0904123 +0.115607 0.037381 0.012414 0.018179 0.051778 0.017255 0.004911 0.796882 0.017074 0.285858 0.075811 0.014548 0.015092 0.011382 0.012696 0.027535 0.088333 0.94434 0.004373 0.016741 +# I V ,, L M >< C T A , F , Y S P W N , E Q K R D G H + +0.114468 +0.093461 0.004737 0.387252 0.347841 0.010822 0.105877 0.049776 0.014963 0.094276 0.027761 0.01004 0.187869 0.050018 0.110039 0.038668 0.119471 0.065802 0.02543 0.003215 0.018742 +# D , E N , Q H S >< K G P T A , R Y , M V L F W I C + +0.0682132 +0.452171 0.114613 0.06246 0.115702 0.284246 0.140204 0.100358 0.55023 0.143995 0.700649 0.27658 0.118569 0.09747 0.126673 0.143634 0.278983 0.358482 0.66175 0.061533 0.199373 +# M , V I L F T Y C A >< W S H Q R N K , P E G , D + +0.234585 +0.005193 0.004039 0.006722 0.006121 0.003468 0.016931 0.003647 0.002184 0.005019 0.00599 0.001473 0.004158 0.009055 0.00363 0.006583 0.003172 0.00369 0.002967 0.002772 0.002686 +# P G W , C H R D E >< N Q K F Y T L A M , S V I + + +## Insert emissions +1 # Single component +1.0 # with probability 1.0 +681 120 623 651 313 902 241 371 687 676 143 548 647 415 551 926 623 505 102 269 diff --git a/forester/archive/RIO/others/hmmer/testsuite/Optiontests.slx b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.slx new file mode 100644 index 0000000..a821515 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/Optiontests.slx @@ -0,0 +1,15 @@ +# A simple amino acid test alignment for Optiontests.pl + +#=RF xxxxx +seq1 ACDEFGHIKLMNPQRSTVWY +seq2 ACDEFGHIKLMNPQRSTVWY +seq3 ACDEFGHIKLMNPQRSTVWY +seq4 ACDEFGHIKLMNPQRSTVWY +seq5 ACDEFGHIKLMNPQRSTVWY +seq6 ACDEFGHIKLMNPQRSTVWY +seq7 ACDEFGHIKLMNPQRSTVWY +seq8 ACDEFGHIKLMNPQRSTVWY + + + + diff --git a/forester/archive/RIO/others/hmmer/testsuite/README b/forester/archive/RIO/others/hmmer/testsuite/README new file mode 100644 index 0000000..4a4e2ac --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/README @@ -0,0 +1,82 @@ +Shiva: HMMER testsuite + +##################################################################### +I. Compiled test drivers. +--------------------------------------------------------------------- + +- A test driver runs with no arguments, gives no output, + and returns EXIT_SUCCESS if the test passes. +- If the test fails, the test driver calls Die() to print a diagnostic on + stderr, and exit with EXIT_FAILURE. +- The -v option always activates rudimentary verbose output on stdout. + + +Current tests: +--------------- + +alignalign_test + Exercises P7ViterbiAlignAlignment() -- alignment of a fixed + multiple alignment to an HMM. Aligns fn3 seed alignment to + fn3 model, compares to results of aligning sequences individually; + if an excessive number of discrepancies are detected, test + fails. + Other files: fn3.seed, fn3.hmm. + +evd_test + Exercises code in histogram.c, especially EVD fitting + Default generates 1000 EVD samples; fits EVD; tests that fitted + parameters are reasonably close to real ones. + +masks_test + Exercises code in masks.c + Default runs XNU on a sequence and compares to a known result. + +parsingviterbi_test + Exercises P7ParsingViterbi() in core_algorithms.c + Runs Fn3 model against titin using both standard Viterbi and + ParsingViterbi; compares results for identity. + +tophits_test + Exercises tophits.c + Generates random scores in three tiers (good, middling, bad). + Uses RegisterHit() API; FullSort's them; tests that they + end up in the right number/order. + +trace_test + Exercises traceback code in core_algorithms.c + Runs a simple HMM against synthetic sequences designed to + exercise all possible arrangements of transitions, and + does a TraceVerify() to be sure resulting trace is internally + consistent. + +viterbi_exercise + Exercises P7Viterbi and P7SmallViterbi in core_algorithms.c + Configures Fn3 model into various modes; generates 100 random + seqs from each configuration; does P7Viterbi and P7SmallViterbi + alignments, TraceVerify()'s them, checks them for identity. + +weeviterbi_test + Exercises P7WeeViterbi in core_algorithms.c + Runs RRM model against two subsequences of human U1A; + compares Viterbi trace to WeeViterbi trace. + +##################################################################### +II. Scripted test drivers. +--------------------------------------------------------------------- + +Optiontests.pl + Runs every documented option for every program, to be + sure they're really connected up. + + +##################################################################### +Obsolete: kept in RCS archive only for reproducibility of old results +--------------------------------------------------------------------- + +fitting_test.c Tests of EVD and Gaussian histogram fitting code. + 17 June 1997 + + + + + diff --git a/forester/archive/RIO/others/hmmer/testsuite/alignalign_test.c b/forester/archive/RIO/others/hmmer/testsuite/alignalign_test.c new file mode 100644 index 0000000..99679d2 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/alignalign_test.c @@ -0,0 +1,206 @@ +/* alignalign_test.c + * Sun Jul 5 13:42:41 1998 + * + * Test driver for P7ViterbiAlignAlignment(). + * + * The test is to + * 1) read an alignment and a corresponding HMM + * 2) align the alignment to the HMM to get a master trace + * 3) map the alignment to the HMM to get another master trace + * 4) Test that the two master traces are identical; if not, fail. + * This doesn't have to be true always, but it's true for the + * fn3 test example. + * 5) Get imposed traces for each sequence + * 6) Viterbi align individual seqs to the model; + * compare the imposed trace with the Viterbi trace; + * 7) If an excessive number of individual traces differ from + * those imposed by master, fail. + * + * CVS $Id: alignalign_test.c,v 1.1.1.1 2005/03/22 08:34:49 cmzmasek Exp $ + */ + +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +static char banner[] = "\ +alignalign_test : testing of P7ViterbiAlignAlignment() code"; + +static char usage[] = "\ +Usage: alignalign_test [-options]\n\ + Available options are:\n\ + -h : help; display this usage info\n\ + -v : be verbose\n\ +"; + +static char experts[] = "\ + --ali : read alignment from \n\ + --hmm : read HMM from \n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-v", TRUE, sqdARG_NONE }, + { "--ali", FALSE, sqdARG_STRING }, + { "--hmm", FALSE, sqdARG_STRING }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMM(s) from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + struct plan7_s *hmm; /* HMM to search with */ + char *afile; /* file to read alignment from */ + int format; /* format determined for afile */ + MSAFILE *afp; /* afile, open for reading */ + MSA *msa; /* multiple sequence alignment from afile */ + char **rseq; /* raw, dealigned aseq */ + char *dsq; /* digitized target sequence */ + struct p7trace_s *mtr; /* master traceback from alignment */ + struct p7trace_s *maptr; /* master traceback from mapping */ + struct p7trace_s **tr; /* individual tracebacks imposed by mtr */ + struct p7trace_s **itr; /* individual trace from P7Viterbi() */ + int idx; /* counter for seqs */ + int ndiff; /* number of differing traces */ + int rlen; /* length of an unaligned sequence */ + + int be_verbose; + int be_standard; /* TRUE when running standard test */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse command line + ***********************************************/ + + hmmfile = "fn3.hmm"; + afile = "fn3.seed"; + format = MSAFILE_STOCKHOLM; + be_verbose = FALSE; + be_standard = TRUE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-v") == 0) be_verbose = TRUE; + else if (strcmp(optname, "--ali") == 0) { afile = optarg; be_standard = FALSE; } + else if (strcmp(optname, "--hmm") == 0) { hmmfile = optarg; be_standard = FALSE; } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 0) + Die("Incorrect number of arguments.\n%s\n", usage); + + /*********************************************** + * Get one alignment from test file: must be Stockholm format. + ***********************************************/ + + if ((afp = MSAFileOpen(afile, format, NULL)) == NULL) + Die("Alignment file %s could not be opened for reading", afile); + if ((msa = MSAFileRead(afp)) == NULL) + Die("Didn't read an alignment from %s", afile); + MSAFileClose(afp); + + for (idx = 0; idx < msa->nseq; idx++) + s2upper(msa->aseq[idx]); + DealignAseqs(msa->aseq, msa->nseq, &rseq); + + /*********************************************** + * Open HMM file + * Read a single HMM from it. + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, NULL)) == NULL) + Die("Failed to open HMM file %s\n", hmmfile); + if (!HMMFileRead(hmmfp, &hmm)) + Die("Failed to read any HMMs from %s\n", hmmfile); + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", hmmfile); + P7Logoddsify(hmm, TRUE); + + if (! (hmm->flags & PLAN7_MAP)) + Die("HMM in %s has no map", hmmfile); + if (GCGMultchecksum(msa->aseq, msa->nseq) != hmm->checksum) + Die("Checksum for alignment in %s does not match that in HMM (%d != %d)", + afile, GCGMultchecksum(msa->aseq, msa->nseq), hmm->checksum); + + /*********************************************** + * First test: + * mapped alignment should match re-aligned alignment: + * obtain and compare the two master traces + ***********************************************/ + + mtr = P7ViterbiAlignAlignment(msa, hmm); + maptr = MasterTraceFromMap(hmm->map, hmm->M, msa->alen); + if (! TraceVerify(mtr, hmm->M, msa->alen)) + Die("Trace verify on P7ViterbiAlignAlignment() result failed\n"); + if (! TraceVerify(maptr, hmm->M, msa->alen)) + Die("Trace verify on MasterTraceFromMap() result failed\n"); + if (! TraceCompare(mtr, maptr)) + Die("Master traces differ for alignment versus map\n"); + + /************************************************** + * Second test: + * seq traces implied by mapped alignment should generally match + * re-aligned individual sequences. + ***************************************************/ + + ImposeMasterTrace(msa->aseq, msa->nseq, mtr, &tr); + + itr = MallocOrDie(sizeof(struct p7trace_s *) * msa->nseq); + /* align individuals, compare traces */ + ndiff = 0; + for (idx = 0; idx < msa->nseq; idx++) + { + rlen = strlen(rseq[idx]); + dsq = DigitizeSequence(rseq[idx], rlen); + P7Viterbi(dsq, rlen, hmm, &(itr[idx])); + + if (! TraceCompare(itr[idx], tr[idx])) + ndiff++; + free(dsq); + } + + /* Determine success/failure. + */ + if (ndiff > msa->nseq / 2) + Die("alignalign: Test FAILED; %d/%d differ\n", ndiff, msa->nseq); + + if (be_standard) { + if (ndiff != 12) + Die("alignalign: Test FAILED; %d traces differ, should be 12\n", ndiff); + if (msa->nseq != 109) + Die("alignalign: Test FAILED; %d seqs read, should be 109\n", msa->nseq); + } + + if (be_verbose) printf("alignalign: Test passed; %d/%d differ, as expected\n", + ndiff, msa->nseq); + + /* Cleanup. + */ + P7FreeTrace(mtr); + P7FreeTrace(maptr); + for (idx = 0; idx < msa->nseq; idx++) + { + P7FreeTrace(tr[idx]); + P7FreeTrace(itr[idx]); + } + free(tr); + free(itr); + Free2DArray((void **) rseq, msa->nseq); + MSAFree(msa); + FreePlan7(hmm); + SqdClean(); + + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/evd_test.c b/forester/archive/RIO/others/hmmer/testsuite/evd_test.c new file mode 100644 index 0000000..5a2446e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/evd_test.c @@ -0,0 +1,295 @@ +/* evd_test.c + * SRE, Wed Nov 12 11:17:27 1997 [St. Louis] + * + * Test driver for EVD distribution support in histogram.c + * Generates random EVD samples; fits them; checks fitted mu, lambda + * against parametric mu, lambda. If they differ badly, calls Die(). + * If OK, returns EXIT_SUCCESS. + * + * RCS $Id: evd_test.c,v 1.1.1.1 2005/03/22 08:34:45 cmzmasek Exp $ + */ + + +#include +#include +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +#ifdef MEMDEBUG +#include "dbmalloc.h" +#endif + +static char banner[] = "\ +evd_test : testing of EVD code in histogram.c"; + +static char usage[] = "\ +Usage: testdriver [-options]\n\ + Available options are:\n\ + -h : help; display this usage info\n\ + -c : censor data below \n\ + -e : sample times from EVD\n\ + -g : add Gaussian samples of \"noise\"\n\ + -n : set number of trials to \n\ + -s : set random seed to \n\ + -v : be verbose (default is to simply exit with status 1 or 0)\n\ +"; + +static char experts[] = "\ + --xmgr : save graphical data to \n\ + --hist : fit to histogram instead of raw samples\n\ + --loglog : save log log regression line to \n\ + --regress : do old-style linear regression fit, not ML\n\ + --mu : set EVD mu to \n\ + --lambda : set EVD lambda to \n\ + --mean : set Gaussian mean to \n\ + --sd : set Gaussian std. dev. to \n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-c", TRUE, sqdARG_FLOAT }, + { "-e", TRUE, sqdARG_INT }, + { "-g", TRUE, sqdARG_INT }, + { "-n", TRUE, sqdARG_INT }, + { "-s", TRUE, sqdARG_INT }, + { "-v", TRUE, sqdARG_NONE }, + { "--xmgr", FALSE, sqdARG_STRING}, + { "--hist", FALSE, sqdARG_NONE}, + { "--loglog", FALSE, sqdARG_STRING}, + { "--regress",FALSE, sqdARG_NONE}, + { "--mu", FALSE, sqdARG_FLOAT}, + { "--lambda", FALSE, sqdARG_FLOAT}, + { "--mean", FALSE, sqdARG_FLOAT}, + { "--sd", FALSE, sqdARG_FLOAT}, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + struct histogram_s *h; /* histogram structure */ + int ntrials; /* number of different fits */ + int be_verbose; /* option: TRUE to show output */ + int seed; /* option: random number seed */ + int nevd; /* # of samples from EVD */ + float mu; /* EVD mu parameter */ + float lambda; /* EVD lambda parameter */ + int ngauss; /* # of samples from Gaussian */ + float mean; /* Gaussian "noise" mean */ + float sd; /* Gaussian "noise" std. dev. */ + float x; /* a random sample */ + int i, idx; + float *val; /* array of samples */ + float mlmu; /* estimate of mu */ + float mllambda; /* estimate of lambda */ + + char *xmgrfile; /* output file for XMGR graph data */ + char *logfile; /* output file for regression line */ + FILE *xmgrfp; /* open output file */ + FILE *logfp; /* open log log file */ + int do_ml; /* TRUE to do a max likelihood fit */ + int fit_hist; /* TRUE to fit histogram instead of samples */ + int censoring; /* TRUE to left-censor the data */ + float censorlevel; /* value to censor at */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + +#ifdef MEMDEBUG + unsigned long histid1, histid2, orig_size, current_size; + orig_size = malloc_inuse(&histid1); + fprintf(stderr, "[... memory debugging is ON ...]\n"); +#endif + + /*********************************************** + * Parse command line + ***********************************************/ + be_verbose = FALSE; + seed = (int) time ((time_t *) NULL); + ntrials = 1; + nevd = 1000; + mu = -20.0; + lambda = 0.4; + ngauss = 0; + mean = 20.; + sd = 20.; + xmgrfile = NULL; + logfile = NULL; + xmgrfp = NULL; + logfp = NULL; + do_ml = TRUE; + censoring = FALSE; + censorlevel= 0.; + fit_hist = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-e") == 0) { nevd = atoi(optarg); } + else if (strcmp(optname, "-c") == 0) { censoring = TRUE; + censorlevel= atof(optarg); } + else if (strcmp(optname, "-g") == 0) { ngauss = atoi(optarg); } + else if (strcmp(optname, "-n") == 0) { ntrials = atoi(optarg); } + else if (strcmp(optname, "-s") == 0) { seed = atoi(optarg); } + else if (strcmp(optname, "-v") == 0) { be_verbose = TRUE; } + else if (strcmp(optname, "--xmgr") == 0) { xmgrfile = optarg; } + else if (strcmp(optname, "--hist") == 0) { fit_hist = TRUE; } + else if (strcmp(optname, "--loglog") == 0) { logfile = optarg; } + else if (strcmp(optname, "--regress")== 0) { do_ml = FALSE; } + else if (strcmp(optname, "--mu") == 0) { mu = atof(optarg); } + else if (strcmp(optname, "--lambda") == 0) { lambda = atof(optarg); } + else if (strcmp(optname, "--mean") == 0) { mean = atof(optarg); } + else if (strcmp(optname, "--sd") == 0) { sd = atof(optarg); } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 0) + Die("Incorrect number of arguments.\n%s\n", usage); + + sre_srandom(seed); + + /**************************************************************** + * Print options + ****************************************************************/ + + if (be_verbose) + { + puts("--------------------------------------------------------"); + printf("EVD samples = %d\n", nevd); + printf("mu, lambda = %f, %f\n", mu, lambda); + if (ngauss > 0) { + printf("Gaussian noise = %d\n", ngauss); + printf("mean, sd = %f, %f\n", mean, sd); + } + if (censoring) printf("pre-censoring = ON, at %f\n", censorlevel); + printf("total trials = %d\n", ntrials); + printf("random seed = %d\n", seed); + printf("fit method = %s\n", do_ml ? "ML" : "linear regression"); + printf("fit is to = %s\n", fit_hist ? "histogram" : "list"); + puts("--------------------------------------------------------"); + } + + if (xmgrfile != NULL) + if ((xmgrfp = fopen(xmgrfile, "w")) == NULL) + Die("Failed to open output file %s", xmgrfile); + if (logfile != NULL) + if ((logfp = fopen(logfile, "w")) == NULL) + Die("Failed to open output file %s", logfile); + + /* Generate random EVD "signal" (and Gaussian "noise") + * samples and put them in the histogram + */ + while (ntrials--) + { + val = MallocOrDie(sizeof(double) * (nevd+ngauss)); + h = AllocHistogram(-20, 20, 10); + + /* EVD signal */ + idx = 0; + for (i = 0; i < nevd; i++) + { + x = EVDrandom(mu, lambda); + if (! censoring || x > censorlevel) + { + AddToHistogram(h, x); + val[idx] = x; + idx++; + } + } + /* Gaussian noise */ + for (; i < nevd + ngauss; i++) + { + x = Gaussrandom(mean, sd); + if (! censoring || x > censorlevel) + { + AddToHistogram(h, x); + val[idx] = x; + idx++; + } + } + + if (do_ml) + { + + if (censoring) + { + if (be_verbose) + printf("I have censored the data at %f: %d observed, %d censored\n", censorlevel, idx, (nevd+ngauss)-idx); + + EVDCensoredFit(val, NULL, idx, + (nevd+ngauss)-idx, censorlevel, + &mlmu, &mllambda); + ExtremeValueSetHistogram(h, (float) mlmu, (float) mllambda, + censorlevel, h->highscore, 1); + } + else + { + if (fit_hist) + { + ExtremeValueFitHistogram(h, TRUE, 20.); + } + else + { + EVDMaxLikelyFit(val, NULL, idx, &mlmu, &mllambda); + ExtremeValueSetHistogram(h, (float) mlmu, (float) mllambda, + h->lowscore, h->highscore, 2); + } + } + } + else + EVDBasicFit(h); + + if (be_verbose) { + printf("%f\tmu\n", h->param[EVD_MU]); + printf("%f\tlambda\n", h->param[EVD_LAMBDA]); + printf("%f\t%% error on mu\n", + fabs(100. * (h->param[EVD_MU] - mu) / mu)); + printf("%f\t%% error on lambda\n", + fabs(100. * (h->param[EVD_LAMBDA] - lambda) / lambda)); + printf("%f\tchi-squared P value\n", h->chip); + } + if (xmgrfp != NULL) PrintXMGRHistogram(xmgrfp, h); + /* if (xmgrfp != NULL) PrintXMGRDistribution(xmgrfp, h); */ + if (logfp != NULL) PrintXMGRRegressionLine(logfp, h); + + /* Generate the expected lines: sets 5,7 of xmgrfile (manually delete 4,6) + * set 3 of loglogfile (manually delete 2) + */ + ExtremeValueSetHistogram(h, mu, lambda, h->lowscore, h->highscore, 0); + if (xmgrfp != NULL) PrintXMGRHistogram(xmgrfp, h); + /* if (xmgrfp != NULL) PrintXMGRDistribution(xmgrfp, h); */ + if (logfp != NULL) PrintXMGRRegressionLine(logfp, h); + + /* Do the internal test. + * Criterion: on a 1000 sample EVD of u = -40 and lambda = 0.4, + * estimate u to within +/- 2 and lambda to within +/- 0.05. + */ + if (fabs(h->param[EVD_MU] - mu) > 2.) + Die("evd_test: tolerance to mu exceeded (%f)", + fabs(h->param[EVD_MU] - mu)); + if (fabs(h->param[EVD_LAMBDA] - lambda) > 0.05) + Die("evd_test: tolerance to lambda exceeded (%f)", + fabs(h->param[EVD_LAMBDA] - lambda)); + + FreeHistogram(h); + free(val); + } + +#ifdef MEMDEBUG + current_size = malloc_inuse(&histid2); + if (current_size != orig_size) Die("evd_test failed memory test"); + else fprintf(stderr, "[No memory leaks.]\n"); +#endif + + if (xmgrfp != NULL) fclose(xmgrfp); + if (logfp != NULL) fclose(logfp); + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/fitting_test.c b/forester/archive/RIO/others/hmmer/testsuite/fitting_test.c new file mode 100644 index 0000000..5eefdfb --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/fitting_test.c @@ -0,0 +1,71 @@ +/* fitting_test.c + * 17 June 1997 (see notebook) + */ + +#include +#include +#include +#include +#include +#include + +#include "structs.h" +#include "funcs.h" +#include "squid.h" + +#include "globals.h" + +int +main(int argc, char **argv) +{ + int n; /* number of EVD samples */ + float p1, p2; + struct histogram_s *histog; + int i,j; + float x; + int seed; + int do_evd, set, fit_evd, show_hist; + + p1 = atof(argv[1]); /* mu or mean */ + p2 = atof(argv[2]); /* lambda or sd */ + n = atoi(argv[3]); /* # of histograms */ + do_evd = atoi(argv[4]); /* 1 to sample EVD; 0 to sample Gaussian */ + set = atoi(argv[5]); /* 1 to set instead of fit the dist */ + fit_evd = atoi(argv[6]); /* 1 to fit EVD; 0 to fit Gaussian */ + show_hist = atoi(argv[7]); /* 1 to show histogram */ + + seed = (int) time ((time_t *) NULL); + sre_srandom(seed); + + for (j = 0; j < n; j++) + { + histog = AllocHistogram(-200, 200, 100); + for (i = 0; i < 2500; i++) + { + if (do_evd) x = EVDrandom(p1, p2); + else x = Gaussrandom(p1, p2); + + assert(x > -100.); + assert(x < 100.); + AddToHistogram(histog, x); + } + + if (set && fit_evd) + ExtremeValueSetHistogram(histog, p1, p2); + else if (set && !fit_evd) + GaussianSetHistogram(histog, p1, p2); + else if (!set && fit_evd) + ExtremeValueFitHistogram(histog, 9999.); + else + GaussianFitHistogram(histog, 9999.); + + printf("%f\n", histog->chip); + + if (show_hist) + PrintASCIIHistogram(stdout, histog); + + FreeHistogram(histog); + } + + return 0; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/fn3-bin b/forester/archive/RIO/others/hmmer/testsuite/fn3-bin new file mode 100644 index 0000000000000000000000000000000000000000..59163b3442cc672a3ec1d25972ef1b7f7e08de8c GIT binary patch literal 16930 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 literal 0 HcmV?d00001 diff --git a/forester/archive/RIO/others/hmmer/testsuite/fn3.hmm b/forester/archive/RIO/others/hmmer/testsuite/fn3.hmm new file mode 100644 index 0000000..ed949cb --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/fn3.hmm @@ -0,0 +1,270 @@ +HMMER2.0 [2.1.4] +NAME fn3 +LENG 84 +ALPH Amino +RF no +CS no +MAP yes +COM ../binaries/hmmbuild -F fn3.hmm fn3.seed +NSEQ 109 +DATE Sat Apr 29 15:36:08 2000 +CKSUM 9857 +XT -8455 -4 -1000 -1000 -8455 -4 -8455 -4 +NULT -4 -8455 +NULE 595 -1558 85 338 -294 453 -1158 197 249 902 -1085 -142 -21 -313 45 531 201 384 -1998 -644 +HMM A C D E F G H I K L M N P Q R S T V W Y + m->m m->i m->d i->m i->i d->m d->d b->m m->e + -13 * -6769 + 1 -1712 -4227 -5498 -865 -4208 -2901 -1274 -566 -2467 395 -3420 -4836 3619 -1858 -4835 -1203 -1345 -131 -4660 -1520 1 + - -150 -501 232 46 -382 399 104 -628 211 -461 -722 274 395 44 95 358 118 -368 -296 -251 + - -142 -3413 -12964 -19 -6286 -701 -1378 -13 * + 2 -626 -5402 1665 -881 -5720 541 -3570 -5469 -3152 -906 -4492 -539 1858 -1555 -2021 1928 -595 -1313 -5587 -1487 3 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11922 -12964 -894 -1115 -701 -1378 * * + 3 1982 -5408 -2052 103 -5729 -1682 -3568 -5480 246 -3106 -4497 -1099 2207 785 -341 -15 -969 -591 -5592 -1728 4 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11922 -12964 -894 -1115 -701 -1378 * * + 4 -1926 -4681 -2749 -6730 -4830 -6496 -5599 -144 -6364 -1674 -3977 -6224 3833 -6035 -1363 -5637 -2263 1172 -5463 -5108 5 + - -148 -501 232 42 -382 397 104 -620 209 -460 -713 274 394 44 98 358 116 -371 -296 -251 + - -124 -3599 -12990 -21 -6130 -701 -1378 * * + 5 -1312 -699 -1390 365 -156 656 -278 -5500 196 -1273 -1315 -1810 -383 1165 1059 988 1349 -1727 -330 -1786 7 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -11948 -6745 -894 -1115 -701 -1378 * * + 6 -952 -5420 1492 -589 -2060 995 -241 -588 -1239 -1246 -4509 2702 -765 546 117 -1666 -1058 -5042 -5603 -1781 8 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11935 -12977 -894 -1115 -373 -2136 * * + 7 -1910 -4186 -1403 -683 554 -5930 -4807 398 -5685 2189 658 -5576 664 -5305 -5486 -5017 -4309 1814 -4661 -4323 9 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -22 -11948 -6043 -894 -1115 -701 -1378 * * + 8 -1843 -858 -1320 -329 -1890 -1639 2015 -1004 837 -3190 -4500 -528 -5007 1351 1283 933 1453 118 -5594 -4912 10 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11926 -12968 -894 -1115 -288 -2468 * * + 9 1390 190 -6595 -5959 1799 -625 -4670 917 -2544 -64 -175 -5444 -2246 -521 -2424 -1906 -2445 2071 -270 -4193 11 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 10 -1212 -976 -129 110 -5720 -2845 -164 383 351 -777 230 -1215 -2266 -366 198 1223 1864 -91 -385 -1640 12 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 11 357 -5433 1583 1276 -488 484 -1040 -5505 -1949 -5449 -4522 1509 419 -407 -723 -10 -541 -211 -5616 -1543 13 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -54 -11948 -4764 -894 -1115 -701 -1378 * * + 12 -185 -872 -1228 -815 -5284 -4981 -3657 1656 -1247 39 -279 70 -732 313 214 -878 364 1866 -5347 -4747 14 + - -147 -503 232 43 -379 402 103 -625 210 -467 -723 275 395 42 93 360 117 -369 -297 -247 + - -243 -2693 -12936 -347 -2227 -156 -3286 * * + 13 -1722 -5433 -171 -632 -5754 984 -3592 -5504 -1911 -2306 -1336 1274 -5027 757 52 1088 2327 -5055 -461 -684 17 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 14 545 -5433 984 806 -5754 -286 -134 -5505 -1324 -3076 -4522 -291 1593 -1508 -1328 1511 638 -1810 257 -1616 18 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11948 -6839 -894 -1115 -701 -1378 * * + 15 -3956 -5429 1465 -1445 -5750 -533 -126 -5501 -1258 -5445 -4519 1773 -5022 -3128 -91 1187 2378 -1884 -5613 197 19 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11935 -12978 -894 -1115 -384 -2097 * * + 16 -620 -5433 -1185 95 -2048 -386 -1155 -5505 -255 -5449 -4522 345 -5027 -387 -680 2481 1173 -1235 -453 371 20 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 17 545 -4080 -6600 -5964 979 -2741 -1162 1755 -5559 1775 1268 -5448 -5852 -5182 -5359 -4887 -2301 1502 -4538 -1461 21 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 18 -945 -842 -1435 -275 -1139 -2672 314 -366 -905 -66 -427 -211 -2235 675 461 548 1698 1036 -558 -670 22 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 19 -1902 -670 -6964 -6348 188 -2623 -5112 1707 -5963 1935 -237 -5851 -6235 -5596 -5776 -5302 -2390 2324 -4960 -4615 23 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 20 -657 -5433 -2278 72 -5754 -1781 1065 -5505 -429 -1282 -368 683 -5027 935 654 2126 1335 -5055 -468 -4933 24 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 21 -8231 -7330 -9169 -9336 78 -9016 -5428 -2450 -8949 -2065 -5190 -7783 -2409 -7649 -8320 -8300 -8080 -6572 6181 -3498 25 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 22 -1358 -5432 305 919 -2019 -2615 -276 -1003 511 -826 -1303 41 -2076 1069 -82 1302 1506 -1283 -5615 -1694 26 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 23 1017 -5398 -3827 -347 -5703 -777 618 -939 30 -1608 -4491 -1916 2739 -944 109 -308 -293 -499 474 -1759 27 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 24 7 -5362 -1347 -1387 -5651 -1257 -3617 -2388 -460 -727 -1300 -1005 3338 -1501 -3712 558 -1388 -154 -5565 -4903 28 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -649 -11948 -1466 -894 -1115 -701 -1378 * * + 25 -313 -4824 738 903 489 -1961 -319 -1743 600 -730 -3913 -512 1182 -1049 456 69 1061 -1200 -5008 -1017 29 + - -149 -513 256 52 -380 388 111 -628 204 -474 -734 271 397 57 90 357 118 -370 -308 -236 + - -2828 -458 -2930 -849 -1169 -4461 -67 * * + 26 -1035 -178 227 -2617 -4671 2074 534 -1574 -1120 -142 -607 230 1117 -92 -7 -60 -1463 -921 262 -829 34 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11120 -12162 -894 -1115 -167 -3197 * * + 27 -857 -5371 794 -103 -5693 997 431 -981 -785 -3041 -4461 2028 -43 581 354 793 -605 -1682 -313 -1481 35 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11883 -12925 -894 -1115 -135 -3482 * * + 28 586 -5425 -81 -53 -5742 2298 -3595 -991 -1451 -2142 -1249 -623 -2318 -1468 -5 1095 -941 -277 -5610 -1606 36 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 29 -210 -5433 989 1029 -5754 -1116 353 -1014 171 -3117 -1178 -275 2115 -43 -830 -503 318 111 -5616 -1638 37 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 30 -1068 -4078 -359 -5958 1263 -1799 -4669 2510 -5554 276 -910 -2229 -375 -1944 -5354 -2555 -2191 1553 549 775 38 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 31 -980 -681 1466 40 -545 -5057 -3737 -672 -560 -87 -1269 -558 -5145 282 -90 219 2049 -46 -417 -1694 39 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 32 -1302 -5429 -440 -620 -1239 2220 1313 -2398 434 -3100 -1104 805 -5028 -433 316 596 -1027 -1916 -565 522 40 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 33 -8272 -7332 -8886 -9158 2064 -8716 -1014 -1559 -1656 -2163 -6667 -7396 -8586 -7513 -8120 -7948 -8139 -1736 -299 4507 41 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 34 -1292 -5430 -146 1338 -556 -2813 -206 -371 415 -197 -4519 165 -5028 278 1599 253 380 -304 -5614 -262 42 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 35 -2855 -5757 -8978 -8661 -6170 -8865 -8890 2503 -8646 1015 -1233 -8521 -8521 -8496 -8785 -8267 -6272 2826 -8027 -7630 43 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -85 -11948 -4130 -894 -1115 -701 -1378 * * + 36 -740 -868 121 1136 -1117 -4863 456 -330 599 -1234 -4412 -3505 -4956 1505 886 120 1536 -1114 -5511 -101 44 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11863 -12905 -894 -1115 -109 -3778 * * + 37 -932 1837 -6595 -5959 -91 -5798 -328 -291 -407 -8 -3280 -5444 -5848 -5178 -795 -2551 -988 502 2740 3658 45 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1993 -11948 -418 -894 -1115 -701 -1378 * * + 38 -4510 -5545 -3323 -676 -6286 -4728 2257 -5751 -2041 -5420 -4762 -420 -4944 -2780 3841 -989 -4331 -5444 -5302 -5022 46 + - -149 -489 232 45 -381 398 105 -627 210 -467 -711 277 393 48 95 359 117 -370 -295 -250 + - -1797 -3160 -736 -733 -1328 -10 -7215 * * + 39 -147 363 -2007 304 -918 -1103 -3478 -161 1080 -715 -4049 -1617 -2050 2003 -3601 557 -702 -321 2877 644 49 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11712 -6548 -894 -1115 -359 -2184 * * + 40 -855 -930 550 1092 -5698 -1653 286 -2500 552 -1710 226 346 1948 343 -1203 414 429 -794 -5560 -4877 50 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11889 -12931 -894 -1115 -2701 -241 * * + 41 181 -153 516 463 -5664 -1662 -1038 -48 1045 -254 -194 -3524 143 556 -1145 61 726 794 -5544 -4868 51 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -116 -11889 -3697 -894 -1115 -146 -3378 * * + 42 -3855 -5327 1599 16 -1927 1687 -1100 -5398 -1840 -1553 -4416 2295 -4922 -736 263 13 -364 -765 -5511 -1538 52 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11837 -12879 -894 -1115 -87 -4089 * * + 43 -638 -5433 1340 850 -5754 1040 735 -2398 522 -1339 -1395 491 -5027 -79 -737 897 693 -1779 -5616 -4933 53 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 44 -972 -5410 -1362 621 -2330 1671 -968 -1642 -952 -1007 223 1495 819 1092 -3690 -29 -326 -652 -5600 -685 54 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -155 -11948 -3299 -894 -1115 -701 -1378 * * + 45 -2194 -5287 1087 1415 -5608 870 -907 -2395 349 -427 -4376 -492 291 1176 -317 355 -70 -2410 771 -4787 55 + - -148 -444 225 63 -389 400 108 -622 197 -475 -727 259 408 43 103 350 102 -361 -222 -237 + - -1290 -759 -12836 -1725 -520 -1218 -811 * * + 46 -157 337 519 798 -1912 -1225 -68 -653 114 -297 -291 -1697 725 -732 -1940 -255 36 -19 3575 -4817 66 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11858 -12900 -894 -1115 -104 -3844 * * + 47 -354 -5019 -821 -3545 401 -5079 1252 159 969 -224 -1342 1435 -694 1532 487 -1195 179 115 -703 -1756 67 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 48 -1345 -5433 -1224 1817 -5754 -2557 2299 -2518 -1322 -5449 -1196 460 -410 547 474 477 796 -85 1521 -203 68 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 49 -735 -922 -865 99 1424 -1378 -968 800 125 368 -298 -1091 -5130 1044 487 -1699 -652 820 -5380 495 69 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 50 -2548 -5416 476 -926 -786 -4939 -202 333 -743 -1027 220 1772 -491 302 391 547 1705 -327 -5604 -4926 70 + - -146 -501 231 42 -382 399 104 -628 211 -467 -722 274 394 47 94 361 116 -362 -296 -251 + - -54 -4771 -12990 -1430 -669 -701 -1378 * * + 51 -125 -4491 -206 -447 -1977 -1822 -4130 1477 -2342 582 -1108 -162 -2226 -3990 -445 -1290 -16 2224 -4885 -4452 74 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 52 -392 -879 1247 -518 -1099 -606 -233 -5499 1 -2146 -4519 -1046 2266 -3134 -723 1223 288 -67 -5614 -4932 75 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 53 110 -5432 -786 -62 -5753 1386 -3592 -2570 485 -1099 -4521 1153 1199 -1503 1373 399 -3899 -2642 1101 -1717 76 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 54 -933 -5432 792 -584 -5753 -910 1029 -2570 -3173 -5448 -4522 1505 989 185 -764 1043 1675 261 -5616 -1615 77 + - -149 -502 231 43 -383 404 104 -628 208 -461 -722 276 392 47 94 357 121 -371 -296 -251 + - -62 -4587 -12990 -1650 -554 -701 -1378 * * + 55 528 -5430 -2070 1507 -5750 -4935 -27 -1606 194 -768 -4520 -3570 -147 1018 -439 182 1977 -290 -5614 -4932 82 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -531 -11948 -1701 -894 -1115 -701 -1378 * * + 56 -1241 -4929 424 -414 -37 -713 1149 -537 -799 -2452 153 1422 -1051 -431 507 353 1641 -1262 -5114 735 83 + - -149 -490 230 45 -378 398 103 -621 208 -466 -723 273 391 43 104 358 121 -372 -297 -252 + - -348 -2223 -12460 -101 -3887 -730 -1332 * * + 57 -1103 -5244 -3635 529 -972 -961 40 -2282 -714 -1986 -1144 223 -1119 761 812 1888 1499 -2270 -5430 -107 86 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11760 -12802 -894 -1115 -56 -4726 * * + 58 990 1359 -2412 -5961 1171 -2669 1032 -583 -5555 -220 684 -5445 -5849 -5178 -2256 -4883 -79 1469 -497 2841 87 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 59 -1740 -5388 -543 238 -2017 -4947 205 658 -59 -940 305 334 -2308 69 -686 -619 2386 690 -5584 -1963 88 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 60 -4313 -4136 -693 -6024 1490 -5866 -4738 1755 -5621 1797 -1007 -5512 -5911 -452 -2279 -2669 -4253 1969 -4597 -4258 89 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 61 -1206 -5433 -67 557 -1180 -1815 996 -5504 429 -3083 -279 290 -135 714 105 843 1912 -622 -475 -1615 90 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 62 -2512 -5433 1789 -331 -5754 2420 -115 -2442 -207 -5449 -1143 1986 -2076 -952 -2025 -549 -3899 -5055 -5616 -1656 91 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 63 -2664 -4761 -2431 -6696 -927 -6570 -5431 -1266 -6307 3192 -228 -6220 -6539 -2095 -6083 -5670 -2437 -1081 -5161 -4890 92 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 64 -1265 -5432 -786 696 -5753 -2574 -190 -709 1120 -437 -1279 2 -869 1117 1301 -183 955 122 -5616 -235 93 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 65 667 -5360 -3850 234 -5648 -4957 -3619 -5375 -1411 -5362 -1250 -1129 3641 -944 -3714 -1681 -282 -2598 -323 -1676 94 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 66 -891 -5431 642 -1327 -637 2698 1447 -5500 -1220 -3194 -4520 1005 -5028 -1534 -1185 -106 -2252 -2539 -453 719 95 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 67 -341 -924 -3935 -309 -5457 -5000 -291 -1612 -499 -2284 675 -1099 -5091 -887 1180 235 2750 669 -5465 -4840 96 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 68 -728 -5432 601 1421 -1172 -1229 -74 -1011 998 -1077 -298 499 243 679 186 -154 551 -1728 -344 -4933 97 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 69 -8596 -7506 -8959 -9321 -422 -8843 -5022 -7480 -8878 -3146 -6880 -2244 -8697 -7593 -8237 -8093 -8445 -7638 -4268 4885 98 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 70 -1827 -5418 -2102 1225 -1065 -2710 630 -696 193 -993 -1227 1015 -5031 784 -68 445 1395 673 -5606 -199 99 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 71 -1785 -589 -6706 -6075 2739 -2734 -4797 1908 -5675 95 263 -5564 -5962 -5299 -5478 -5006 -4295 2092 -4657 643 100 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 72 -1787 144 -783 -139 -5753 -2709 -260 -1568 913 -5448 -373 39 -5027 1175 2142 801 910 -1336 1128 173 101 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 73 -1872 -5834 -9025 -8676 -1056 -8881 -8673 1755 -8630 359 -1237 -8541 -8490 -8319 -8674 -8265 -6337 3280 -7727 -7464 102 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 74 327 -924 -2319 -1494 -173 -4998 230 316 472 -1019 -4344 -1099 -5088 1874 1193 -1265 439 611 -5469 1668 103 + - -149 -500 233 43 -381 398 105 -626 210 -462 -721 275 394 45 96 359 117 -369 -295 -250 + - -42 -5742 -6616 -86 -4119 -701 -1378 * * + 75 3012 -4665 -7117 -2715 -5019 -382 -5509 -2260 -6298 -1487 -4254 -5905 -6197 -5917 -6115 536 1246 -967 -5505 -5179 105 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11933 -12975 -894 -1115 -357 -2190 * * + 76 -902 -714 -6363 -469 -141 -5764 290 585 -447 281 -993 -5334 -5816 439 1001 -1825 -1361 2268 -4558 1019 106 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 77 -2376 -795 187 -2095 -5752 -2675 -955 -1144 135 -3116 -4521 2792 -767 -1566 -777 1498 1246 -2809 -5615 251 107 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -11948 -6747 -894 -1115 -701 -1378 * * + 78 337 -737 928 157 -2106 1805 -240 -2485 -205 -5436 -4509 308 -2438 892 51 -133 409 -284 -5604 -4921 108 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11935 -12977 -894 -1115 -373 -2135 * * + 79 751 -879 627 278 -2228 932 413 207 367 -1700 -291 502 -2136 495 118 -1224 -556 59 -5609 -760 109 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -746 -11948 -1309 -894 -1115 -701 -1378 * * + 80 -1113 -4530 -1626 -702 -1338 3243 -3172 -4385 -2856 -2220 -3677 -1218 -4564 -2783 -3335 -609 475 -4087 -4819 473 110 + - -153 -500 231 50 -364 398 93 -624 206 -464 -733 283 383 46 94 356 116 -368 -250 -237 + - -6367 -18 -12245 -485 -1807 -3943 -97 * * + 81 -5380 -6068 -5956 -5195 -7389 3194 -752 -6800 -1418 -2482 -5840 -5064 -706 -4120 -1351 1839 -5345 -6386 -6418 -6291 116 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11248 -12290 -894 -1115 -270 -2549 * * + 82 55 -5343 -399 930 -1066 -48 1295 -2492 90 -1643 1044 -891 1912 1116 368 -1154 -891 -1051 -5526 -1841 117 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11854 -12896 -894 -1115 -101 -3893 * * + 83 90 -5310 -3879 1738 8 -1225 -3636 -1523 -271 -615 -1216 -1875 1773 -1639 653 -366 -193 -4902 2379 453 118 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -1 -11948 -12990 -894 -1115 -701 -1378 * * + 84 -1223 -5446 -3828 -1467 -5768 -863 -152 -2326 -1293 -5461 -4537 -3588 -2253 -1611 -424 3277 371 -5069 -5628 -4949 119 + - * * * * * * * * * * * * * * * * * * * * + - * * * * * * * * 0 +// diff --git a/forester/archive/RIO/others/hmmer/testsuite/fn3.seed b/forester/archive/RIO/others/hmmer/testsuite/fn3.seed new file mode 100644 index 0000000..aef27c1 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/fn3.seed @@ -0,0 +1,332 @@ +# STOCKHOLM 1.0 + +7LES_DROME/1799-1891 P.SPP.RNFSVRVL..SPRELEVSWLPPEq...LRSESVYYTLHW...QQ +7LES_DROVI/1917-1997 S.YAPlPPLQLIEL..NAYGMTLAWPGT......PDALSSLTLEC...QS +APU_THETY/928-1009 A.PQPiTDLKAVS...GNGKVDLSWSVV.......DKAVSYNI.YR...S +APU_THETY/1165-1248 P.TAP.V.LQQPGI..ESSRVTLNWSPSA....DDVAIFGYEIYK...SS +AXO1_CHICK/602-692 PpGPP.GGVVVRDI..GDTTVQLSWSRGFd...NHSPIARYSIEAR...T +AXO1_CHICK/807-896 PkVAP.FRVTAKAV..LSSEMDVSWEPVEqg.dMTGVLLGYEIRY...WK +CAML_HUMAN/812-907 P.QAI.PELEGIEIl.NSSAVLVKWRPVDla.qVKGHLRGYNVTY...WR +CHI1_BACCI/465-542 P.SVP.GNARSTGV..TANSVTLAWNAST....DNVGVTGYNV.YN.... +CHIT_STRLI/142-219 P.SAP.GTPTASNI..TDTSVKLSWSAAT....DDKGVKNYDV.LR.... +CHIX_STROI/169-240 P.PAPpTGLRTGSV..TATSVALSWSPV.......TGATGYAV.YR.... +CONT_CHICK/799-884 PtEVP.TDVSVKVL..SSSEISVSWHHVT.....EKSVEGYQIRY...WA +CPSF_CHICK/630-716 P.DPP.QSVRVTSV..GEDWAVLSWEAPPf..dGGMPITGYLMER...KK +CPSF_CHICK/923-1008 P.GPP.QAVRVMEV..WGSNALLQWEPPKd..dGNAEISGYTVQK...AD +ECK_HUMAN/329-420 P.SAP.HYLTAVGM..GA.KVELRWTPPQd..sGGREDIVYSVTCEqcWP +ECK_HUMAN/436-519 Q.TEP.PKVRLEGR..STTSLSVSWSIPPp...QQSRVWKYEVTYR...K +EPH1_HUMAN/333-435 P.SAP.RNLSFSA...SGTQLSLRWEPPAd..tGGRQDVRYSVRCS..QC +EPH3_CHICK/333-429 P.SAP.QAV.ISSV..NETSLMLEWTPPRd..sGGREDLVYNIIC...KS +EPH3_CHICK/444-528 P.SAV.SIMHQVSR..TVDSITLSWSQPDq...PNGVILDYELQY...YE +ETK1_CHICK/325-421 P.SAP.RNV.ISNI..NETSVILDWSWPLd..tGGRKDVTFNIIC...KK +FAS2_SCHAM/530-616 P.SAV.LQVKMDVM..TATTVTFKFFGPGn..dGGLPTKNYAVQY...KQ +FAS2_SCHAM/642-735 T.SGT.ENEVVVSP..YPNRYELRWQVPAd...NGEPITHYSVKS...CP +FINC_BOVIN/577-660 T.SGP.VQVIITETpsQPNSHPIQWSAPE.....SSHISKYILRW...KP +FINC_BOVIN/689-768 P.VVA.TSESVTEI..TASSFVVSWVSA......SDTVSGFRVEY...EL +FINC_BOVIN/780-858 P.DAP.PDPTVDQV..DDTSIVVRWSRP......RAPITGYRIVY...SP +FINC_BOVIN/875-955 KvPPP.RDLQFVEV..TDVKITIMWTPP......ESPVTGYRVDV...IP +FINC_BOVIN/1142-1225 PlSPP.TNLHLEANp.DTGVLTVSWERST.....TPDITGYRITT...TP +FINC_BOVIN/1236-1316 V.PPP.TDLRFTNV..GPDTMRVTWAPPS.....SIELTNLLVRY...SP +FINC_BOVIN/1327-1406 L.DSP.SGIDFSDI..TANSFTVHWIAP......RATITGYRIRHH...P +FINC_BOVIN/1417-1499 S.DVP.RDLEVIAA..TPTSLLISWDAP......AVTVRYYRITY...GE +FINC_BOVIN/1511-1590 I.DKP.SQMQVTDV..QDNSISVRWLPS......SSPVTGYRVTT...AP +FINC_BOVIN/1601-1680 I.PAP.TNLKFTQV..TPTSLTAQWTAP......NVQLTGYRVRV...TP +FINC_BOVIN/1693-1771 V.SPP.RRARVTDA..TETTITISWRTK......TETITGFQVDA...IP +FINC_BOVIN/1782-1861 I.DAP.SNLRFLAT..TPNSLLVSWQPP......RARITGYIIKY...EK +FINC_CHICK/551-630 I.DRP.KGLTFTEV..DVDSIKIAWESP......QGQVTRYRVTY...SS +FINC_RAT/1266-1346 V.PQL.TDLSFVDI..TDSSIGLRWTPLN.....SSTIIGYRITV...VA +GUNB_CELFI/651-733 P.TTP.GTPVATGV..TTVGASLSWAASTd...AGSGVAGYEL.YR...V +IL7R_HUMAN/129-221 P.EAP.FDLSVIYRe.GANDFVVTFNTSHlq.kKYVKVLMHDVAYR..QE +ITB4_HUMAN/1127-1208 L.GAP.QNPNAKAA..GSRKIHFNWLPP......SGKPMGYRVKY...WI +ITB4_HUMAN/1220-1310 P.SEP.GRLAFNVV..SSTVTQLSWAEPAe...TNGEITAYEVCY...GL +ITB4_HUMAN/1581-1665 P.DTP.TRLVFSAL..GPTSLRVSWQEPR....CERPLQGYSVEY...QL +ITB4_HUMAN/1694-1781 P.SAP.GPLVFTAL..SPDSLQLSWERPRr...PNGDIVGYLVTC...EM +KALM_CHICK/178-271 P.LKPrKELKFIEL..QSGDLEVKWSSKFn...ISIEPVIYVVQRR..WN +KALM_CHICK/544-642 L.AKP.ENLSASFIv.QEGNITGHFSWKIskavLHQPMTGFQVTW...AE +KMLC_CHICK/60-145 P.DPPaGTPCASDI..RSSSLTLSWYGSSy..dGGSAVQSYTVEI...WN +LAR_DROME/322-404 P.TAP.TDVQISEV..TATSVRLEWSYK.....GPEDLQYYVIQY...KP +LAR_DROME/417-503 E.SAP.RNVQVRTL..SSSTMVITWEPPEt...PNGQVTGYKV.Y...YT +LAR_DROME/515-598 P.SQP.SNFRATDI..GETAVTLQWTKPTh...SSENIVHYELYW...ND +LAR_DROME/709-800 P.GDP.QDVKATPL..NSTSIHVSWKPPLek.dRNGIIRGYHIHA...QE +LAR_DROME/909-995 PgGPP.SNITIRFQ..TPDVLCVTWDPPTre.hRNGIITRYDVQFH..KK +MPSF_CHICK/371-457 P.GAP.MDVKCHDA..NRDYVIVTWKPPNt..tSQNPVIGYFVDK...CE +MPSF_CHICK/499-585 P.GPP.TNVHASEI..SKTYVVLSWDPPVp...RGREPLTYFIEK...SM +MPSF_CHICK/600-684 P.SAP.GRVVATRN..TKTSVVVQWDKPK....HEENLYGYYIDY...SV +MPSF_CHICK/699-785 P.SYP.HGITLLNC..DGHSMTLGWKAPKy..sGGSPILGYYIDKR...E +MPSF_CHICK/801-887 P.GPA.YDLTVCEV..RNTSLVLLWKAPVy..eGKSPITGYLVDY...KE +NCA1_BOVIN/509-597 P.SSP.SIDQVEP...YSSTAQVQFDEPEa..tGGVPILKYKAEWR...A +NCA1_BOVIN/610-691 P.SAP.KLEGQMGE..DGNSIKVKLIKQDd...GGSPIRHYLVKYR...A +NGCA_CHICK/700-794 PeRNP.GGVHGEGN..ETGNLVITWEPLPpq.aWNAPWARYRVQWR...P +NRCA_CHICK/623-709 P.NPP.LDLELTGQ..LERSIELSWVPGEe...NNSPITNFVIEY...ED +NRCA_CHICK/726-810 ....P.SNVQGIGS..EPDNLVITWESLKgf.qSNGPGLQYKVSWR..QK +NRCA_CHICK/928-1014 P.SPP.SFLKITNP..TLDSLTLEWGSPTh...PNGVLTSYILKF...QP +NRG_DROME/717-799 ....P.DNVVGQGT..EPNNLVISWTPMPei.eHNAPNFHYYVSW...K. +NRG_DROME/815-905 PlDAP.TNFTMRQIt.SSTSGYMAWTPVSee.sVRGHFKGYKIQT...WT +NRG_DROME/917-1007 P.SPV.QGLDAYPL..GSSAFMLHWKKPLy...PNGKLTGYKIYY...EE +PHB_ALCFA/344-418 G.SAP.TGLAVTAT..TSTSVSLSWNAV.......ANASSYGV.YR.... +PTP1_DROME/123-205 P.DPP.SNLSVQVR..SGKNAIILWSPPT.....QGSYTAFKIKV...LG +PTP1_DROME/217-301 P.NTP.GKFIVWFR..NETTLLVLWQPPY....PAGIYTHYKVSI...EP +PTP1_DROME/312-394 P.LRP.LNVTFDRDfiTSNSFRVLWEAPK....GISEFDKYQVSV...AT +PTP1_DROME/405-485 P.LPV.RNLRSINDd.KTNTMIITWEADP.....ASTQDEYRIVYHe.LE +PTP1_DROME/583-661 P.NPP.RNMTIETV..RSNSVLVHWSPPE.....SGEFTEYSIRYR...T +PTP1_DROME/864-944 P.EPI.TQLHATNI..TDTEISLRWDLP......KGEYNDFDIAY...LT +PTP1_DROME/958-1044 P.GRV.ERFHPTDV..QPSEINFEWSLPSs..eANGVIRQFSIAY...TN +PTP6_DROME/236-321 V.PQV.SIDFAKAV..GANKIYLNWTVND....GNDPIQKFFITL...QE +PTP6_DROME/332-425 Y.DPI.FIPKVETTgsTASTITIGWNPPPp..dLIDYIQYYELIV...SE +PTP9_DROME/171-259 P.SKP.QNLTILDV..SANSITMSWHPPKn...QNGAIAGYHVFH...IH +PTPB_HUMAN/22-103 AePER.CNFTLAESkaSSHSVSIQWRIL.......GSPCNFSLIY...SS +PTPB_HUMAN/112-192 P.PAR.FGVSKEKT..TSTGLHVWWTPS......SGKVTSYEVQL...FD +PTPB_HUMAN/467-543 P.LAV.LQLRVKHA..NETSLSIMWQTP......VAEWEKYIISL...AD +PTPB_HUMAN/554-632 P.AQV.TDLHVANQg.MTSSLFTNWTQA......QGDVEFYQVLL...IH +PTPB_HUMAN/643-725 P.SSV.SGVTVNNSg.RNDYLSVSWLVA......PGDVDNYEVTL...SH +PTPB_HUMAN/731-808 P.DKV.QGVSVSNSa.RSDYLRVSWVHA......TGDFDHYEVTI...KN +PTPB_HUMAN/907-984 P.SAV.KNIHISPNg.ATDSLTVNWTPG......GGDVDSYTVSA...FR +PTPB_HUMAN/995-1074 P.ASV.QGVIADNAy.SSYSLIVSWQKA......AGVAERYDILL...LT +PTPB_HUMAN/1085-1162 P.AAV.TDLRITEN..STRHLSFRWTAS......EGELSWYNIFL...YN +PTPB_HUMAN/1173-1250 P.ASV.SHLRGSNRn.TTDSLWFNWSPA......SGDFDFYELIL...YN +PTPB_HUMAN/1261-1344 P.SPP.SLMSFADI..ANTSLAITWKGPP....DWTDYNDFELQW...LP +PTPB_HUMAN/1355-1434 P.DKI.QNLHCRPQ..NSTAIACSWIPP......DSDFDGYSIECR...K +PTPK_MOUSE/290-376 P.PRPiAPPQLLGV..GPTYLLIQLNANSi..iGDGPIILKEVEYR...M +PTPZ_HUMAN/312-401 S.SEP.ENVQADPE..NYTSLLVTWERPRv..vYDTMIEKFAVLY...QQ +SEK_MOUSE/441-525 P.SSI.ALVQAKEV..TRYSVALAWLEPDr...PNGVILEYEVKY...YE +TENA_CHICK/593-671 V.SPP.TELTVTNV..TDKTVNLEWKHE.......NLVNEYLVTY...VP +TENA_CHICK/682-767 L.PAP.EGLKFKSV..RETSVQVEWDPL......SISFDGWELVFRnmQK +TENA_CHICK/774-853 L.DAP.SQIEAKDV..TDTTALITWSKP......LAEIEGIELTY...GP +TENA_CHICK/864-945 L.DAP.RNLKRVSQ..TDNSITLEWKNS......HANIDNYRIKF...AP +TENA_CHICK/956-1033 L.DNP.KDLEVSDP..TETTLSLRWRRP......VAKFDRYRLTY...VS +TENA_CHICK/1045-1124 E.PEL.GNLSVSET..GWDGFQLTWTAA......DGAYENFVIQV...QQ +TENA_CHICK/1136-1215 H.PEV.GELTVSDI..TPESFNLSWTTT......NGDFDAFTIEI...ID +TENA_CHICK/1227-1306 E.PEV.DNLLVSDA..TPDGFRLSWTAD......DGVFDSFVLKIR..DT +TENA_CHICK/1317-1395 V.GSP.KGISFSDI..TENSATVSWTPP......RSRVDSYRVSY...VP +TENA_CHICK/1406-1483 L.DSP.SGLVVMNI..TDSEALATWQPA......IAAVDNYIVSY...SS +TENA_CHICK/1494-1571 L.DAP.KDLSATEV..QSETAVITWRPP......RAPVTDYLLTY...ES +TENA_HUMAN/1254-1334 E.VPDmGNLTVTEV..SWDALRLNWTTP......DGTYDQFTIQV...QE +TENA_HUMAN/1528-1607 L.PLL.ENLTISDI..NPYGFTVSWMAS......ENAFDSFLVTV...VD +TIE1_HUMAN/446-533 P.PVPlAAPRLLTK..QSRQLVVSPLVSFs...GDGPISTVRLHYR..PQ +TIE1_HUMAN/545-632 PlLQP.WLEGWHVE..GTDRLRVSWSLPLv..pGPLVGDGFLLRL...WD +TIE1_HUMAN/644-729 P.PAP.RHLHAQAL..SDSEIQLTWKHPEa...LPGPISKYVVEV...QV +TIE2_HUMAN/444-529 L.PKPlNAPNVIDT..GHNFAVINISSEPy..fGDGPIKSKKLLY...KP +TIE2_HUMAN/543-626 L.PPP.RGLNLLPK..SQTTLNLTWQPIFp...SSEDDFYVEVERR...S +TIE2_HUMAN/639-724 P.PQP.ENIKISNI..THSSAVISWTILD.....GYSISSITIRY...KV +UFO_HUMAN/327-411 L.GPP.ENISATR...NGSQAFVHWQEPRa..pLQGTLLGYRLAY...QG + +7LES_DROME/1799-1891 ELDGEnvqd..rrewEAHER...RLET....AG..THRLTGIKPGSGYSL +7LES_DROVI/1917-1997 LREQ............LQFN...VAGN....HT..QMRLAPLQPKTRYSC +APU_THETY/928-1009 TVKGG..........LYEKI...ASNV....TQi.TYTDTEVTNGLKYVY +APU_THETY/1165-1248 SETGPf.........IKIAT...VSDS....VY..NYVDTDVVNGNVYYY +AXO1_CHICK/602-692 LLSNKwkq.....mrTNPVN...IEGN....AE..TAQVVNLIPWMDYEF +AXO1_CHICK/807-896 DGDKEea.......aDRVRT...AGLV....T...SAHVTGLNPNTKYHV +CAML_HUMAN/812-907 EGSQRkhsk..rhihKDHVV...VPAN....TT..SVILSGLRPYSSYHL +CHI1_BACCI/465-542 .GAN............LATS...VTGT....T....ATISGLTAGTSYTF +CHIT_STRLI/142-219 .DGA............KVAT...VTGT....T....YTDNGLTKGTAYSY +CHIX_STROI/169-240 .DGV............KVAT...ASGT....S....ATVTGLTPDTAYAF +CONT_CHICK/799-884 AHDKEa........aAQRVQ...VSNQ....EY..STKLENLKPNTRYHI +CPSF_CHICK/630-716 KGSMRw........mKLNFE...VFPD....T...TYESTKMIEGVFYEM +CPSF_CHICK/923-1008 TRTME..........WFTVL...EHSR....PT..RCTVSELVMGNEYRF +ECK_HUMAN/329-420 E.SGEcgp....ceaSVRYS...EPPHgl.tRT..SVTVSDLEPHMNYTF +ECK_HUMAN/436-519 KGDS............NSYN...VRRT....EGf.SVTLDDLAPDTTYLV +EPH1_HUMAN/333-435 QGTAQdggpcqpcgvGVHFSpgaRGLT....TP..AVHVNGLEPYANYTF +EPH3_CHICK/333-429 CGSGRgact...rcgDNVQF...APRQlgltEP..RIYISDLLAHTQYTF +EPH3_CHICK/444-528 KNLSE..........LNSTA...VKSP....TN..TVTVQNLKAGTIYVF +ETK1_CHICK/325-421 CGGSSkice...pcsDNVRF...LPRQtg.lTNt.TVTVVDLLAHTNYTF +FAS2_SCHAM/530-616 DSQGW..........EDALN...RTWP....VDs.PYILENLKPQTRYNF +FAS2_SCHAM/642-735 VEKYDtewrl.lpypCQEHK...LEGQ....AT..TFQLESLQPDTHYKV +FINC_BOVIN/577-660 KNSPDr.........WKEAT...IPGH....LN..SYTIKGLRPGVVYEG +FINC_BOVIN/689-768 SEEGDe.........PQYLD...LPST....AT..SVNIPDLLPGRKYTV +FINC_BOVIN/780-858 SVEGS..........STELN...LPET....AN..SVTLSDLQPGVQYNI +FINC_BOVIN/875-955 VNLPGe........hGQRLP...VSRN....T...FAEVTGLSPGVTYHF +FINC_BOVIN/1142-1225 TNGQQg........ySLEEV...VHAD....QS..SCTFENLSPGLEYNV +FINC_BOVIN/1236-1316 VKNEEd.........VAELS...ISPS....DN..AVVLTNLLPGTEYLV +FINC_BOVIN/1327-1406 ENMGGr.........PREDR...VPPS....RN..SITLTNLNPGTEYVV +FINC_BOVIN/1417-1499 TGGSSp.........VQEFT...VPGS....KS..TATISGLKPGVDYTI +FINC_BOVIN/1511-1590 KNGPGp.........SKTKT...VGPD....QT..EMTIEGLQPTVEYVV +FINC_BOVIN/1601-1680 KEKTGp.........MKEIN...LAPD....SS..SVVVSGLMVATKYEV +FINC_BOVIN/1693-1771 ANGQT..........PIQRT...IRPD....VR..SYTITGLQPGTDYKI +FINC_BOVIN/1782-1861 PGSPPr........eVVPRP...RPGV....T...EATITGLEPGTEYTI +FINC_CHICK/551-630 PEDG............IHEL...LPAPgg.eED..TAELHGLRPGSEYTI +FINC_RAT/1266-1346 AGEGIp.........IFEDF...VDSS....VG..YYTVTGLEPGIDYDI +GUNB_CELFI/651-733 QGTTQ..........TLVGT...TTAA....A....YILRDLTPGTAYSY +IL7R_HUMAN/129-221 KDENK..........WTHVN...LSST....KL..TLLQRKLQPAAMYEI +ITB4_HUMAN/1127-1208 QGDSEs.........EAHLL...DSKV....P...SVELTNLYPYCDYEM +ITB4_HUMAN/1220-1310 VNDDNrpi.....gpMKKVL...VDNP....KNr.MLLIENLRESQPYRY +ITB4_HUMAN/1581-1665 LNGGE..........LHRLN...IPNP....AQt.SVVVEDLLPNHSYVF +ITB4_HUMAN/1694-1781 AQGGGpa.......tAFRVD...GDSP....ES..RLTVPGLSENVPYKF +KALM_CHICK/178-271 QGIHPsed.....daTNWQT...VAQT....TDe.RVQLSDIRASRWYQF +KALM_CHICK/544-642 VTTESrqnslpnsiiSQSQI...LPAD....HY..VLTVPNLRPSMLYRL +KMLC_CHICK/60-145 SVDNK..........WTDLT...TCRS....T...SFNVQDLQADREYKF +LAR_DROME/322-404 KNANQ..........AFSEI...SGII....TM..YYVVRALSPYTEYEF +LAR_DROME/417-503 TNSNQpe......asWNSQM...VDNS....E...LTTVSDVTPHAIYTV +LAR_DROME/515-598 TYANQ..........AHHKR...ISNS....E...AYTLDGLYPDTLYYI +LAR_DROME/709-800 LRDEGkgf....lnePFKFD...VVDT....L...EFNVTGLQPDTKYSI +LAR_DROME/909-995 IDHGL..........GSERN...MTLR....K....AVFTNLEENTEYIF +MPSF_CHICK/371-457 VGLEN..........WVQCN...DAPV....KIc.KYPVTGLYEGRSYIF +MPSF_CHICK/499-585 VGSGS..........WQRVNaqvAVKS....P...RYAVFDLAEGKPYVF +MPSF_CHICK/600-684 VGSNQwe.......pANHKP...INYN....R....FVVHGLETGEQYIF +MPSF_CHICK/699-785 ANHKN..........WHEVNssvISRT....I....YTVEDLTEDAFYEF +MPSF_CHICK/801-887 VDTED..........WITAN...EKPT....SHr.YFKVTDLHQGHTYVF +NCA1_BOVIN/509-597 MGEEVw........hSKWYD...AKEA....SMegIVTIVGLKPETTYAV +NCA1_BOVIN/610-691 LSSEW..........KPEIR...LPSG....SD..HVMLKSLDWNAEYEV +NGCA_CHICK/700-794 LEEPGgggps.ggfpWAEST...VDAP....P....VVVGGLPPFSPFQI +NRCA_CHICK/623-709 GLHEPg........vWHYQT...EVPG....SH..TTVQLKLSPYVNYSF +NRCA_CHICK/726-810 DVDDE..........WTSVV...VANV....S...KYIVSGTPTFVPYEI +NRCA_CHICK/928-1014 INNTHel......gpLVEIR...IPAN....ES..SLILKNLNYSTRYKF +NRG_DROME/717-799 .RDIPaa......awENNNI...FDWR....QN..NIVIADQPTFVKYLI +NRG_DROME/815-905 ENEGEe........gLREIH...VKGD....TH..NALVTQFKPDSKNYA +NRG_DROME/917-1007 V.KESyvge..rreyDPHIT...DPRV....T...RMKMAGLKPNSKYRI +PHB_ALCFA/344-418 .NGS............KVGS...ATAT....A....YTDSGLIAGTTYSY +PTP1_DROME/123-205 LSEASss.......yNRTFQ...VNDN....TF..QHSVKELTPGATYQV +PTP1_DROME/217-301 PDANDsvl.....yvEKEGE...PPGP....A...QAAFKGLVPGRAYNI +PTP1_DROME/312-394 TRRQS..........TVPRS...NEPV....AF..SDFRDIAEPGKTFNV +PTP1_DROME/405-485 TFNGD..........TSTLT...TDRT....R....FTLESLLPGRNYSL +PTP1_DROME/583-661 DSEQQ..........WVRLP...SVRS....T...EADITDMTKGEKYTI +PTP1_DROME/864-944 A.DNL..........LAQNM...TTRN....E....ITISDLRPHRNYTF +PTP1_DROME/958-1044 INNLT..........DAGMQ...DFES....EEa.FGVIKNLKPGETYVF +PTP6_DROME/236-321 AGTPTft.......yHKDFI...NGSH....T...SYILDHFKPNTTYFL +PTP6_DROME/332-425 SGEVPkvi.....eeAIYQQ...NSRN....L...PYMFDKLKTATDYEF +PTP9_DROME/171-259 DNQTGve......ivKNSRN...SVET....LI..HFELQNLRPYTDYRV +PTPB_HUMAN/22-103 DTLGAa........lCPTFR...IDNT....TY..GCNLQDLQAGTIYNF +PTPB_HUMAN/112-192 ENNQKiq......gvQIQES...TSWN....E....YTFFNLTAGSKYNI +PTPB_HUMAN/467-543 R.DLL..........LIHKS...LSKD....AK..EFTFTDLVPGRKYMA +PTPB_HUMAN/554-632 ENVV...........IKNES...ISSE....TS..RYSFHSLKSGSLYSV +PTPB_HUMAN/643-725 DGKV...........VQSLV...IAKS....VR..ECSFSSLTPGRLYTV +PTPB_HUMAN/731-808 KNNF...........IQTKS...IPKS....EN..ECVFVQLVPGRLYSV +PTPB_HUMAN/907-984 H.SQK..........VDSQT...IPKH....VF..EHTFHRLEAGEQYQI +PTPB_HUMAN/995-1074 ENGIL..........LRNTS...EPAT....TK..QHKFEDLTPGKKYKI +PTPB_HUMAN/1085-1162 PDGNLq.........ERAQV...DPLV....Q...SFSFQNLLQGRMYKM +PTPB_HUMAN/1173-1250 PNGTKk.........ENWKD...KDLT....E....WRFQGLVPGRKYVL +PTPB_HUMAN/1261-1344 RDALTv.........FNPYN...NRKS....E...GRIVYGLRPGRSYQF +PTPB_HUMAN/1355-1434 MDTQEv.........EFSRK...LEKE....KS..LLNIMMLVPHKRYLV +PTPK_MOUSE/290-376 T.SGS..........WTETH...AVNA....P...TYKLWHLDPDTEYEI +PTPZ_HUMAN/312-401 LDGEDq........tKHEFL...TDGY....QDl.GAILNNLLPNMSYVL +SEK_MOUSE/441-525 KDQN...........ERSYR...IVRT....AAr.NTDIKGLNPLTSYVF +TENA_CHICK/593-671 TSSGGl.........DLQFT...VPGN....QT..SATIHELEPGVEYFI +TENA_CHICK/682-767 KDDNG..........DITSS...LKRP....ET..SYMQPGLAPGQQYNV +TENA_CHICK/774-853 KDVPGd.........RTTID...LSED....EN..QYSIGNLRPHTEYEV +TENA_CHICK/864-945 ISGGD..........HTELT...VPKGnq.aTT..RATLTGLRPGTEYGI +TENA_CHICK/956-1033 P.SGK..........KNEME...IPVD....ST..SFILRGLDAGTEYTI +TENA_CHICK/1045-1124 SDNPEe.........TWNIT...VPGG....QH..SVNVTGLKANTPYNV +TENA_CHICK/1136-1215 SNRLLe.........PMEFN...ISGN....SR..TAHISGLSPSTDFIV +TENA_CHICK/1227-1306 KRKSD..........PLELI...VPGH....ER..THDITGLKEGTEYEI +TENA_CHICK/1317-1395 ITGGT..........PNVVT...VDGS....KT..RTKLVKLVPGVDYNV +TENA_CHICK/1406-1483 EDEP...........EVTQM...VSGN....TV..EYDLNGLRPATEYTL +TENA_CHICK/1494-1571 I.DGR..........VKEVI...LDPE....TT..SYTLTELSPSTQYTV +TENA_HUMAN/1254-1334 ADQVEe.........AHNLT...VPGS....LR..SMEIPGLRAGTPYTV +TENA_HUMAN/1528-1607 SGKLLd.........PQEFT...LSGT....QR..KLELRGLITGIGYEV +TIE1_HUMAN/446-533 DSTMD..........WSTIV...VDPS....E...NVTLMNLRPKTGYSV +TIE1_HUMAN/545-632 GTRGQ..........ERREN...VSSP....QAr.TALLTGLTPGTHYQL +TIE1_HUMAN/644-729 AGGAGd.........PLWID...VDRP....EEt.STIIRGLNASTRYLF +TIE2_HUMAN/444-529 VNHYEa.........WQHIQ...VTNE....I....VTLNYLEPRTEYEL +TIE2_HUMAN/543-626 VQKSD..........QQNIK...VPGN....LT..SVLLNNLHPREQYVV +TIE2_HUMAN/639-724 QGKNE..........DQHVDv.kIKNA....TIi.QYQLKGLEPETAYQV +UFO_HUMAN/327-411 QDTPE..........VLMDI...GLRQ....EV..TLELQGDGSVSNLTV + +7LES_DROME/1799-1891 WVQ.AHATPTk....SNSS +7LES_DROVI/1917-1997 RLA.LAYAATp....GAPI +APU_THETY/928-1009 AVT.AVDNDGn...eSALS +APU_THETY/1165-1248 KVV.AVDTSYn....RTAS +AXO1_CHICK/602-692 RVL.ASNILGv....GEPS +AXO1_CHICK/807-896 SVR.AYNRAGa....GPPS +CAML_HUMAN/812-907 EVQ.AFNGRGs....GPAS +CHI1_BACCI/465-542 TIK.AKDAAGn...lSAAS +CHIT_STRLI/142-219 SVK.ARDTADq...tGPAS +CHIX_STROI/169-240 QVA.AVNGA.......GES +CONT_CHICK/799-884 DVS.AFNSAGy....GPPS +CPSF_CHICK/630-716 RVF.AVNAIGv....SQPS +CPSF_CHICK/923-1008 RVY.SENVCGt....SQEP +ECK_HUMAN/329-420 TVE.ARNGV........SG +ECK_HUMAN/436-519 QVQ.ALTQEGq....GAGS +EPH1_HUMAN/333-435 NVE.AQNGVSglgssGHAS +EPH3_CHICK/333-429 EIQ.AVNGVTd...qSPFS +EPH3_CHICK/444-528 QVR.ARTVAGy....GRYS +ETK1_CHICK/325-421 EID.AVNGVSd...lSTLS +FAS2_SCHAM/530-616 RFA.AQNEVGf....GPWS +FAS2_SCHAM/642-735 EVR.ATNAIGn....SVPG +FINC_BOVIN/577-660 QLI.SVQHY......GQRE +FINC_BOVIN/689-768 NVY.EISEE.......GEQ +FINC_BOVIN/780-858 TIY.AVEEN.......QES +FINC_BOVIN/875-955 KVF.AVNQG.......RES +FINC_BOVIN/1142-1225 SVY.TVKDD.......KES +FINC_BOVIN/1236-1316 SVS.SVYEQ.......HES +FINC_BOVIN/1327-1406 SIV.ALNSK.......EES +FINC_BOVIN/1417-1499 TVY.AVTGRGd....SPAS +FINC_BOVIN/1511-1590 SVY.AQNQN.......GES +FINC_BOVIN/1601-1680 SVY.ALKDT.......LTS +FINC_BOVIN/1693-1771 HLY.TLNDN.......ARS +FINC_BOVIN/1782-1861 QVI.ALKNN.......QKS +FINC_CHICK/551-630 NIV.AIYDD.......MES +FINC_RAT/1266-1346 SVI.TLING.......GES +GUNB_CELFI/651-733 VVK.AKDVAGn...vSAAS +IL7R_HUMAN/129-221 KVR.SIPDHYfkgfwSEWS +ITB4_HUMAN/1127-1208 KVC.AYGAQGe....GPYS +ITB4_HUMAN/1220-1310 TVK.ARNGAGw....GPER +ITB4_HUMAN/1581-1665 RVR.AQSQEGw....GRER +ITB4_HUMAN/1694-1781 KVQ.ARTTEGf....GPER +KALM_CHICK/178-271 RVA.AVNVHGt...rGFTA +KALM_CHICK/544-642 EVQ.VLTTGGe....GPAT +KMLC_CHICK/60-145 RVR.AANVYGi....SEPS +LAR_DROME/322-404 YVI.AVNNIGr....GPPS +LAR_DROME/417-503 RVQ.AYTSMGa....GPMS +LAR_DROME/515-598 WLA.ARSQRGe....GATT +LAR_DROME/709-800 QVA.ALTRKGd....GDRS +LAR_DROME/909-995 RVR.AYTKQGa....GPFS +MPSF_CHICK/371-457 RVR.AVNSAGi....SRPS +MPSF_CHICK/499-585 RVL.SANKHGi....SDPS +MPSF_CHICK/600-684 RVK.AVNAVGf....SENS +MPSF_CHICK/699-785 KIA.AANVVGi....GHPS +MPSF_CHICK/801-887 KVR.AVNDAGv....GKSS +NCA1_BOVIN/509-597 RLA.ALNGKGl....GEIS +NCA1_BOVIN/610-691 YVV.AENQQ.......GKS +NGCA_CHICK/700-794 RVQ.AVNGAGk....GPEA +NRCA_CHICK/623-709 RVI.AVNEIGr....SQPS +NRCA_CHICK/726-810 KVQ.ALNDLGy...aPEPS +NRCA_CHICK/928-1014 YFN.AQTSV......GSGS +NRG_DROME/717-799 KVV.AINDR.......GES +NRG_DROME/815-905 RIL.AYNGRFn....GPPS +NRG_DROME/917-1007 SIT.ATTKMGe....GSEH +PHB_ALCFA/344-418 TVT.AVDPTAg...eSQPS +PTP1_DROME/123-205 QAY.TIYDG.......KES +PTP1_DROME/217-301 SVQ.TMSED.......EIS +PTP1_DROME/312-394 IVK.TVSGK.......VTS +PTP1_DROME/405-485 SVQ.AVSKK.......MES +PTP1_DROME/583-661 QVN.TVSFG.......VES +PTP1_DROME/864-944 TVV.VRSGTEss..vLRSS +PTP1_DROME/958-1044 KIQ.AKTAIGf....GPER +PTP6_DROME/236-321 RIV.GKNSIGn....GQPT +PTP6_DROME/332-425 RVR.ACSDLTkt..cGPWS +PTP9_DROME/171-259 IVK.AFTTKNe....GEPS +PTPB_HUMAN/22-103 KII.SLDEE........RT +PTPB_HUMAN/112-192 AIT.AVSGG.......KRS +PTPB_HUMAN/467-543 TVT.SISGD........LK +PTPB_HUMAN/554-632 VVT.TVSGG.......ISS +PTPB_HUMAN/643-725 TIT.TRSGKYe...nHSFS +PTPB_HUMAN/731-808 TVT.TKSGQ........YE +PTPB_HUMAN/907-984 MIA.SVSGS........LK +PTPB_HUMAN/995-1074 QIL.TVSGG.......LFS +PTPB_HUMAN/1085-1162 VIV.THSGE........LS +PTPB_HUMAN/1173-1250 WVV.THSGD........LS +PTPB_HUMAN/1261-1344 NVK.TVSGDSw....KTYS +PTPB_HUMAN/1355-1434 SIK.VQSAG.......MTS +PTPK_MOUSE/290-376 RVLlTRPGEGg...tGLPG +PTPZ_HUMAN/312-401 QIV.AICTNGl...yGKYS +SEK_MOUSE/441-525 HVR.ARTAAGy....GDFS +TENA_CHICK/593-671 RVF.AILKN.......KKS +TENA_CHICK/682-767 SLH.IVKNNTr...gPGLS +TENA_CHICK/774-853 TLI.SRRGD.......MES +TENA_CHICK/864-945 GVT.AVRQD.......RES +TENA_CHICK/956-1033 SLV.AEKGR.......HKS +TENA_CHICK/1045-1124 TLY.GVIRG.......YRT +TENA_CHICK/1136-1215 YLY.GISHG.......FRT +TENA_CHICK/1227-1306 ELY.GVSSG.......RRS +TENA_CHICK/1317-1395 NII.SVKGF.......EES +TENA_CHICK/1406-1483 RVH.AVKDA.......QKS +TENA_CHICK/1494-1571 KLQ.ALSRS.......MRS +TENA_HUMAN/1254-1334 TLH.GEVRG.......HST +TENA_HUMAN/1528-1607 MVS.GFTQG.......HQT +TIE1_HUMAN/446-533 RVQlSRPGEGg...eGAWG +TIE1_HUMAN/545-632 DVQ.LYHCTLl....GPAS +TIE1_HUMAN/644-729 RMR.ASI.QGl....GDWS +TIE2_HUMAN/444-529 CVQ.LVRRGEg....GEGH +TIE2_HUMAN/543-626 RAR..VNTKAq....GEWS +TIE2_HUMAN/639-724 DIF.AENNIGs....SNPA +UFO_HUMAN/327-411 CVA.AYTAAGd....GPWS +// diff --git a/forester/archive/RIO/others/hmmer/testsuite/masks_test.c b/forester/archive/RIO/others/hmmer/testsuite/masks_test.c new file mode 100644 index 0000000..9713ffd --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/masks_test.c @@ -0,0 +1,149 @@ +/* masks_test.c + * SRE, Tue Nov 18 11:10:20 1997 [St. Louis] + * + * Test driver for sequence masking routines in masks.c + * + * CVS $Id: masks_test.c,v 1.1.1.1 2005/03/22 08:34:46 cmzmasek Exp $ + */ + +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +static char banner[] = "\ +masks_test : testing of repeat masking code in masks.c"; + +static char usage[] = "\ +Usage: testdriver [-options]\n\ + Available options are:\n\ + -h : help; display this usage info\n\ + -v : verbose output\n\ +"; + +static char experts[] = "\ + --xnu : apply xnu to seqs in \n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-v", TRUE, sqdARG_NONE }, + { "--xnu", FALSE, sqdARG_STRING }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +/* The test sequence and result from the XNU software distribution + */ +static char *test1 = "\ +ACDEFGHIKLMNPQRQRQRQRQRQRQRQRQRSTVWYACDEFGHIKLMNPQRQRQRQRQRQ\ +RQRQRQRSTVWYACDEFGHIKLMNPQRQRQRQRQRQRQRQRQRSTVWYACDEFGHIKLMN\ +PQRQRQRQRQRQRQRQRQRSTVWYACDEFGHIKLMNPQRQRQRQRQRQRQRQRQRSTVWY\ +ACDEFGHIKLMNPQRQRQRQRQRQRQRQRQRSTVWY"; + +static char *answer1 = "\ +ACDEFGHIKLMNPXXXXXXXXXXXXXXXXXXSTVWYACDEFGHIKLMNPXXXXXXXXXXX\ +XXXXXXXSTVWYACDEFGHIKLMNPXXXXXXXXXXXXXXXXXXSTVWYACDEFGHIKLMN\ +PXXXXXXXXXXXXXXXXXXSTVWYACDEFGHIKLMNPXXXXXXXXXXXXXXXXXXSTVWY\ +ACDEFGHIKLMNPXXXXXXXXXXXXXXXXXXSTVWY"; + +int +main(int argc, char **argv) +{ + char *seq; + char *dsq; + int len; + int i,j; + char *result; + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + int be_verbose; + char *xnufile; /* NULL, or file to run xnu on */ + + + /*********************************************** + * Parse command line + ***********************************************/ + + be_verbose = FALSE; + xnufile = NULL; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-v") == 0) { be_verbose = TRUE; } + else if (strcmp(optname, "--xnu") == 0) { xnufile = optarg; } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 0) + Die("Incorrect number of arguments.\n%s\n", usage); + + SetAlphabet(hmmAMINO); + + /* XNU test + */ + seq = test1; + len = (int) strlen(seq); + dsq = DigitizeSequence(seq, len); + XNU(dsq, len); + result = MallocOrDie(sizeof(char) * (len+1)); + + for (i = 0; i < len; i++) + result[i] = Alphabet[(int) dsq[i+1]]; + result[len] = '\0'; + + if (be_verbose) + { + printf("XNU test:\n"); + for (i = 1; i <= len; i+=60) + { + for (j = i; j < i+60 && j <= len; j++) + putc(Alphabet[(int) dsq[j]], stdout); + putc('\n', stdout); + } + if (strcmp(answer1, result) == 0) + printf("-- OK; Identical to expected\n"); + } + + if (strcmp(answer1, result) != 0) + Die("XNU test failed."); + free(result); + free(dsq); + + /* On demand XNU test. + */ + if (xnufile != NULL) + { + int format; + SQFILE *sqfp; + SQINFO sqinfo; + int xnum; + + if ((sqfp = SeqfileOpen(xnufile, SQFILE_UNKNOWN, NULL)) == NULL) + Die("Failed to open sequence database file %s\n%s\n", xnufile, usage); + while (ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) + { + dsq = DigitizeSequence(seq, sqinfo.len); + xnum = XNU(dsq, sqinfo.len); + result = DedigitizeSequence(dsq, sqinfo.len); + + printf("%-20s\t%5d\n", sqinfo.name, xnum); + if (be_verbose) + WriteSeq(stdout, SQFILE_FASTA, result, &sqinfo); + + free(dsq); + FreeSequence(seq, &sqinfo); + free(result); + } + SeqfileClose(sqfp); + } + + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/parsingviterbi_test.c b/forester/archive/RIO/others/hmmer/testsuite/parsingviterbi_test.c new file mode 100644 index 0000000..57eab1e --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/parsingviterbi_test.c @@ -0,0 +1,167 @@ +/* parsingviterbi_test.c + * Wed Mar 4 15:07:37 1998 + * cp trace_test.c ../src/testdriver.c; cd ../src; make testdriver + * + * Test driver for P7ParsingViterbi(); alignment in linear memory. + * + * CVS $Id: parsingviterbi_test.c,v 1.1.1.1 2005/03/22 08:34:47 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +static char banner[] = "\ +parsingviterbi_test : testing of Plan7 linear memory alignment code"; + +static char usage[] = "\ +Usage: parsingviterbi_test [-options]\n\ + Available options are:\n\ + -h : help; display this usage info\n\ + -v : be verbose\n\ +"; + +static char experts[] = "\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-v", TRUE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMM(s) from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + char *seqfile; /* file to read target sequence(s) from */ + SQFILE *sqfp; /* opened seqfile for reading */ + char *seq; /* target sequence */ + SQINFO sqinfo; /* optional info for seq */ + char *dsq; /* digitized target sequence */ + struct plan7_s *hmm; /* HMM to search with */ + struct p7trace_s *tr1; /* traceback from P7Viterbi() */ + struct p7trace_s *tr2; /* traceback from P7ParsingViterbi() */ + int nseq; + float sc1, sc2; /* scores from Viterbi, ParsingViterbi() */ + + struct p7trace_s **tarr; /* array of decomposed Viterbi traces */ + int ntr; /* number of traces */ + int i1,i2,k1,k2; /* starts, stops in seq, model for Viterbi */ + int idx; /* index of a decomposed trace */ + + int be_verbose; + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse command line + ***********************************************/ + + be_verbose = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-v") == 0) be_verbose = TRUE; + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 0) + Die("Incorrect number of arguments.\n%s\n", usage); + + hmmfile = "fn3.hmm"; + seqfile = "titin.fa"; + + /*********************************************** + * Open test sequence file + ***********************************************/ + + if ((sqfp = SeqfileOpen(seqfile, SQFILE_UNKNOWN, "BLASTDB")) == NULL) + Die("Failed to open sequence database file %s\n%s\n", seqfile, usage); + + /*********************************************** + * Open HMM file + * Read a single HMM from it. (Config HMM, if necessary). + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, NULL)) == NULL) + Die("Failed to open HMM file %s\n%s", hmmfile, usage); + if (!HMMFileRead(hmmfp, &hmm)) + Die("Failed to read any HMMs from %s\n", hmmfile); + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", hmmfile); + P7Logoddsify(hmm, TRUE); + + /*********************************************** + * Search HMM against each sequence, using both + * normal Viterbi and P7ParsingViterbi. + ***********************************************/ + + nseq = 0; + while (ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) + { + nseq++; + dsq = DigitizeSequence(seq, sqinfo.len); + + sc1 = P7Viterbi(dsq, sqinfo.len, hmm, &tr1); + sc2 = P7ParsingViterbi(dsq, sqinfo.len, hmm, &tr2); + + if (be_verbose) + { + printf("test sequence %d: %s %s\n", + nseq, sqinfo.name, + sqinfo.flags & SQINFO_DESC ? sqinfo.desc : ""); + for (idx = 0; idx < tr2->tlen; idx++) + printf("%1s %d\n", Statetype(tr2->statetype[idx]), tr2->pos[idx]); + } + + if (sc1 != sc2) + Die("Scores for the two Viterbi implementations are unequal (%d,%d)", sc1, sc2); + + TraceDecompose(tr1, &tarr, &ntr); + if (ntr == 0) + Die("ntr == 0 can't happen"); + if (ntr != (tr2->tlen/2) -1) + Die("# of domains for the two Viterbi implementations are unequal (%d, %d)", + ntr, (tr2->tlen/2) -1); + + for (idx = 0; idx < ntr; idx++) + { + TraceSimpleBounds(tarr[idx], &i1, &i2, &k1, &k2); + + if (i1 != tr2->pos[idx*2 + 1] + 1) + Die("Start positions %d and %d disagree for domain %d\n", + i1, tr2->pos[idx*2 + 1] + 1, idx); + if (i2 != tr2->pos[idx*2 + 2]) + Die("End positions %d and %d disagree for domain %d\n", + i2, tr2->pos[idx*2 + 2], idx); + } + + + for (idx = 0; idx < ntr; idx++) + P7FreeTrace(tarr[idx]); + free(tarr); + FreeSequence(seq, &sqinfo); + P7FreeTrace(tr1); + P7FreeTrace(tr2); + free(dsq); + } + + FreePlan7(hmm); + HMMFileClose(hmmfp); + SeqfileClose(sqfp); + + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/titin.fa b/forester/archive/RIO/others/hmmer/testsuite/titin.fa new file mode 100644 index 0000000..0b0f1dd --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/titin.fa @@ -0,0 +1,386 @@ +>gi|2136280|pir||I38344 titin - human +MTTQAPTFTQPLQSVVVLEGSTATFEAHISGFPVPEVSWFRDGQVISTSTLPGVQISFSDGRAKLTIPAV +TKANSGRYSLKATNGSGQATSTAELLVKAETAPPNFVQRLQSMTVRQGSQVRLQVRVTGIPNPVVKFYRD +GAEIQSSLDFQISQEGDLYSLLIAEAYPEDSGTYSVNATNSVGRATSTAELLVQGEEEVPAKKTKTIVST +AQISESRQTRIEKKIEAHFDARSIATVEMVIDGAAGQQLPHKTPPRIPPKPKSRSPTPPSIAAKAQLARQ +QSPSPIRHSPSPVRHVRAPTPSPVRSVSPAARISTSPIRSVRSPLLMRKTQASTVATGPEVPPPWKQEGY +VASSSEAEMRETTLTTSTQIRTEERWEGRYGVQEQVTISGAAGAAASVSASASYAAEAVATGAKEVKQDA +DKSAAVATVVAAVDMARVREPVISAVEQTAQRTTTTAVHIQPAQEQVRKEAEKTAVTKVVVAADKAKEQE +LKSRTKEIITTKQEQMHVTHEQIRKETEKTFVPKVVISAAKAKEQETRISEEITKKQKQVTQEAIMKETR +KTVVPKVIVATPKVKEQDLVSRGREGITTKREQVQITQEKMRKEAEKTALSTIAVATAKAKEQETILRTR +ETMATRQEQIQVTHGKVDVGKKAEAVATVVAAVDQARVREPREPGHLEESYAQQTTLEYGYKERISAAKV +AEPPQRPASEPHVVPKAVKPRVIQAPSETHIKTTDQKGMHISSQIKKTTDLTTERLVHVDKRPRTASPHF +TVSKISVPKTEHGYEASIAGSAIATLQKELSATSSAQKITKSVKAPTVKPSETRVRAEPTPLPQFPFADT +PDTYKSEAGVEVKKEVGVSITGTTVREERFEVLHGREAKVTETARVPAPVEIPVTPPTLVSGLKNVTVIE +GESVTLECHISGYPSPTVTWYREDYQIESSIDFQITFQSGIARLMIREAFAEDSGRFTCSAVNEAGTVST +SCYLAVQVSEEFEKETTAVTEKFTTEEKRFVESRDVVMTDTSLTEEQAGPGEPAAPYFITKPVVQKLVEG +GSVVFGCQVGGNPKPHVYWKKSGVPLTTGYRYKVSYNKQTGECKLVISMTFADDAGEYTIVVRNKHGETS +ASASLLEEADYELLMKSQQEMLYQTQVTAFVQEPEVGETAPGFVYSEYEKEYEKEQALIRKKMAKDTVVV +RTYVEDQEFHISSFEERLIKEIEYRIIKTTLEELLEEDGEEKMAVDISESEAVESGFDLRIKNYRILEGM +GVTFHCKMSGYPLPKIAWYKDGKRIKHGERYQMDFLQDGRASLRIPVVLPEDEGIYTAFASNIKGNAICS +GKLYVEPAAPLGAPTYIPTLEPVSRIRSLSPRSVSRSPIRMSPARMSPARMSPARMSPARMSPGRRLEET +DESQLERLYKPVFVLKPVSFKCLEGANCRFDLKVVGRPMPETFWFHDGQQIVNDYTHKVVIKEDGTQSLI +IVPATPSDSGEWTVVAQNRAGRSSISVILTVEAVEHQVKPMFVEKLKNVNIKEGSRLEMKVRATGNPNPD +IVWLKNSDIIVPHKYPKIRIEGTKGEAALKIDSTVSQDSAWYTATAINKAGRDTTRCKVNVEVEFAEPEP +ERKLIIPRGTYRAKEIAAPELEPLHLRYGQEQWEEGDLYDKEKQQKPFFKKKLTSLRLKRFGPAHFECRL +TPISDPTMVVEWLHDGKPLEAANRLRMINEFGYCSLDYGVAYSRDSGIITCRATNKYGTDHTSATLIVKD +EKSLVEESQLPEGRKGLQRIEELERMAHEGALTGVTTDQKEKQKPDIVLYPEPVRVLEGETARFRCRVTG +YPQPKVNWYLNGQLIRKSKRFRVRYDGIHYLDIVDCKSYDTGEVKVTAENPEGVIEHKVKLEIQQREDFR +SVLRRAPEPRPEFHVHEPGKLQFEVQKVDRPVDTTETKEVVKLKRAERITHEKVPEESEELRSKFKRRTE +EGYYEAITAVELKSRKKDESYEELLRKTKDELLHWTKELTEEEKKALAEEGKITIPTFKPDKIELSPSME +APKIFERIQSQTVGQGSDAHFRVRVVGKPDPECEWYKNGVKIERSDRIYWYWPEDNVCELVIRDVTAEDS +ASIMVKAINIAGETSSHAFLLVQAKQLITFTQELQDVVAKEKDTMATFECETSEPFVKVKWYKDGMEVHE +GDKYRMHSDRKVHFLSILTIDTSDAEDYSCVLVEDENVKTTAKLIVEGAVVEFVKELQDIEVPESYSGEL +ECIVSPENIEGKWYHNDVELKSNGKYTITSRRGRQNLTVKDVTKEDQGEYSFVIDGKKTTCKLKMKPRPI +AILQGLSDQKVCEGDIVQLEVKVSLESVEGVWMKDGQEVQPSDRVHIVIDKQSHMLLIEDMTKEDAGNYS +FTIPALGLSTSGRVSVYSVDVITPLKDVNVIEGTKAVLECKVSVPDVTSVKWYLNDEQIKPDDRVQAIVK +GTKQRLVINRTHASDEGPYKLIVGRVETNCNLSVEKIKIIRGLRDLTCTETQNVVFEVELSHSGIDVLWN +FKDKEIKPSSKYKIEAHGKIYKLTVLNMMKDDEGKYTFYAGENMTSGKLTVAGGAISKPLTDQTVAESQE +AVFECEVANPDSKGEWLRDGKHLPLTNNIRSESDGHKRRLIIAATKLDDIGEYTYKVATSKTSAKLKVEA +VKIKKTLKNLTVTETQDAVFTVELTHPNVKGVQWIKNGVVLESNEKYAISVKGTIYSLRIKNCAIVDESV +YGFRLGRLGASARLHVETVKIIKKPKDVTALENATVAFEVSVSHDTVPVKWFHKSVEIKPSDKHRLVSER +KVHKLMLQNISPSDAGEYTAVVGQLECKAKLFVETLHITKTMKNIEVPETKTASFECEVSHFNVPSMWLK +NGVEIEMSEKFKIVVQGKLHQLIIMNTSTEDSAEYTFVCGNDQVSATLTVTPIMITSMLKDINAEEKDTI +TFEVTVNYEGISYKWLKNGVEIKSTDKCQMRTKKLTHSLNIRNVHFGDAADYTFVAGKATSTATLYVEAR +HIEFRKHIKDIKVLEKKRAMFECEVSEPDITVQWMKDDQELQITDRIKIQKEKYVHRLLIPSTRMSDAGK +YTVVAGGNVSTAKLFVEGRDVRIRSIKKEVQVIEKQRAVVEFEVNEDDVDAHWYKDGIEINFQVQERHKY +VVERRIHRMFISETRQSDAGEYTFVAGRNRSSVTLYVNAPEPPQVLQELQPVTVQSGKPARFCAMISGRP +QPKISWYKEEQLLSTGFKCKFLHDGQEYTLLLIEAFPEDAAVYTCEAKNDYGVATTSASLSVEVPEVVSP +DQEMPVYPPAIITPLQDTVTSEGQPARFQCRVSGTDLKVSWYSKDKKIKPSRFFRMTQFEDTYQLEIAEA +YPEDEGTYTFVANNAVGQVSSTANLSLEAPESILHERIEQEIEMEMKEFSSSFLSAEEEGLHSAELQLSK +INETLELLSESPVYPTKFDSEKEGTGPIFIKEVSNADISMGDVATLSVTVIGIPKPKIQWFFNGVLLTPS +ADYKFVFDGDDHSLIILFTKLEDEGEYTCMASNDYGKTICSAYLKINSKGEGHKDTETESAVAKSLEKLG +GPCPPHFLKELKPIRCAQGLPAIFEYTVVGEPAPTVTWFKENKQLCTSVYYTIIHNPNGSGTFIVNDPQR +EDSGLYICKAENMLGESTCAAELLVLLEDTDMTDTPCKAKSTPEAPEDFPQTPLKGPAVEALDSEQEIAT +FVKDTILKAALITEENQQLSYEHIAKANELSSQLPLGAQELQSILEQDKLTPESTREFLCINGSIHFQPL +KEPSPNLQLQIVQSQKTFSKEGILMPEEPETQAVLSDTEKIFPSAMSIEQINSLTVEPLKTLLAEPEGNY +PQSSIEPPMHSYLTSVAEEVLSLKEKTVSDTNREQRVTLQKQEAQSALILSQSLAEGHVESLQSPDVMIS +QVNYEPLVPSEHSCTEGGKILIESANPLENAGQDSAVRIEEGKSLRFPLALEEKQVLLKEEHSDNVVMPP +DQIIESKREPVAIKKVQEVQGRDLLSKESLLSGIPEEQRLNLKIQICRALQAAVASEQPGLFSEWLRNIE +KVEVEAVNITQEPRHIMCMYLVTSAKSVTEEVTIIIEDVDPQMANLKMELRDALCAIIYEEIDILTAEGP +RIQQGAKTSLQEEMDSFSGSQKVEPITEPEVESKYLISTEEVSYFNVQSRVKYLDATPVTKGVASAVVSD +EKQDESLKPSEEKEESSSESGTEEVATVKIQEAEGGLIKEDGPMIHTPLVDTVSEEGDIVHLTTSITNAK +EVNWYFENKLVPSDEKFKCLQDQNTYTLVIDKVNTEDHQGEYVCEALNDSGKTATSAKLTVVKRAAPVIK +RKIEPLEVALGHLAKFTCEIQSAPNVRFQWFKAGREIYESDKCSIRSSKYISSLEILRTQVVDCGEYTCK +ASNEYGSVSCTATLTVTVPGGEKKVRKLLPERKPEPKEEVVLKSVLRKRPEEEEPKVEPKKLEKVKKPAV +PEPPPPKPVEEVEVPTVTKRERKIPEPTKVPEIKPAIPLPAPEPKPKPEAEVKTIKPPPVEPEPTPIAAP +VTVPVVGKKAEAKAPKEEAAKPKGPIKGVPKKTPSPIEAERRKLRPGSGGEKPPDEAPFTYQLKAVPLKF +VKEIKDIILTESEFVGSSAIFECLVSPSTAITTWMKDGSNIRESPKHRFIADGKDRKLHIIDVQLSDAGE +YTCVLRLGNKEKTSTAKLVVEELPVRFVKTLEEEVTVVKGQPLYLSCELNKERDVVWRKDGKIVVEKPGR +IVPGVIGLMRALTINDADDTDAGTYTVTVENANNLECSSCVKVVEVIRDWLVKPIRDQHVKPKGTAIFAC +DIAKDTPNIKWFKGYDEIPAEPNDKTEILRDGNHLYLKIKNAMPEDIAEYAVEIEGKRYPAKLTLGEREV +ELLKPIEDVTIYEKESASFDAEISEADIPGQWKLKGELLRPSPTCEIKAEGGKRFLTLHKVKLDQAGEVL +YQALNAITTAILTVKEIELDFAVPLKDVTVPERRQARFECVLTREANVIWSKGPDIIKSSDKFDIIADGK +KHILVINDSQFDDEGVYTAEVEGKKTSARLFVTGIRLKFMSPLEDQTVKEGETATFVCELSHEKMHVVWF +KNDAKLHTSRTVLISSEGKTHKLEMKEVTLDDISQIKAQVKELSSTAQLKVLEADPYFTVKLHDKTAVEK +DEITLKCEVSKDVPVKWFKDGEEIVPSPKYSIKADGLRRILKIKKADLKDKGEYVCDCGTDKTKANVTVE +ARLIEVEKPLYGVEVFVGETAHFEIELSEPDVHGQWKLKGQPLTASPDCEIIEDGKKHILILHNCQLGMT +GEVSFQAANAKSAANLKVKELPLIFITPLSDVKVFEKDEAKFECEVSREPKTFRWLKGTQEITGDDRFEL +IKDGTKHSMVIKSAAFEDEAKYMFEAEDKHTSGKLIIEGIRLKFLTPLKDVTAKEKESAVFTVELSHDNI +RVKWFKNDQRLHTTRSVSMQDEGKTHSITFKDLSIDDTSQIRVEAMGMSSEAKLTVLEGDPYFTGKLQDY +TGVEKDEVILQCEISKADAPVKWFKDGKEIKPSKNAVIKTDGKKRMLILKKALKSDIGQYTCDCGTDKTS +GKLDIEDREIKLVRPLHSVEVMETETARFETEISEDDIHANWKLKGEALLQTPDCEIKEEGKIHSLVLHN +CRLDQTGGVDFQAANVKSSAHLRVKPRVIGLLRPLKDVTVTAGETATFDCELSYEDIPVEWYLKGKKLEP +SDKVVPRSEGKVHTLTLRDVKLEDAGEVQLTAKDFKTHANLFVKEPPVEFTKPLEDQTVEEGATAVLECE +VSRENAKVKWFKNGTEILKSKKYEIVADGRVRKLVIHDCTPEDIKTYTCDAKDFKTSCNLNVVPPHVEFL +RPLTDLQVREKEMARFECELSRENAKVKWFKDGAEIKKGKKYDIISKGAVRILVINKCLLDDEAEYSCEV +RTARTSGMLTVLEEEAVFTKNLANIEVSETDTIKLVCEVSKPGAEVIWYKGDEEIIETGRYEILTEGRKR +ILVIQNAHLEDAGNYNCRLPSSRTDGKVKVHELAAEFISKPQNLEILEGEKAEFVCSISKESFPVQWKRD +DKTLESGDKYDVIADGKKRVLVVKDATLQDMGTYVVMVGAARAAAHLTVIEKLRIVVPLKDTRVKEQQEV +VFNCEVNTEGAKAKWFRNEEAIFDSSKYIILQKDLVYTLRIRDAHLDDQANYNVSLTNHRGENVKSAANL +IVEEEDLRIVEPLKDIETMEKKSVTFWCKVNRLNVTLKWTKNGEEVPFDNRVSYRVDKYKHMLTIKDCGF +PDEGEYIVTAGQDKSVAELLIIEAPTEFVEHLEDQTVTEFDDAVFSCQLSREKANVKWYRNGREIKEGKK +YKFEKDGSIHRLIIKDCRLDDECEYACGVEDRKSRARLFVEEIPVEIIRPPQDILEAPGADVVFLAELNK +DKVEVQWLRNNMVVVQGDKHQMMSEGKIHRLQICDIKPRDQGEYRFIAKDKEARAKLELAAAPKIKTADQ +DLVVDVGKPLTMVVPYDAYPKAEAEWFKENEPLSTKTIDTTAEQTSFRILEAKKGDKGRYKIVLQNKHGK +AEGFINLKVIDVPGPVRNLEVTETFDGEVSLAWEEPLTDGGSKIIGYVVERRDIKRKTWVLATDRAESCE +FTVTGLQKGGVEYLFRVSARNRVGTGEPVETDNPVEARSKYDVPGPPLNVTITDVNRFGVSLTWEPPEYD +GGAEITNYVIELRDKTSIRWDTAMTVRAEDLSATVTDVVEGQEYSFRVRAQNRIGVGKPSAATPFVKVAD +PIERPSPPVNLTSSDQTQSSVQLKWEPPLKDGGSPILGYIIERCEEGKDNWIRCNMKLVPELTYKVTGLE +KGNKYLYRVSAENKAGVSDPSEILGPLTADDAFVEPTMDLSAFKDGLEVIVPNPITILVPSTGYPRPTAT +WCFGDKVLETGDRVKMKTLSAYAELVISPSERSDKGIYTLKLENRVKTISGEIDVNVIARPSAPKELKFG +DITKDSVHLTWEPPDDDGGSPLTGYVVEKREVSRKTWTKVMDFVTDLEFTVPDLVQGKEYLFKVCARNKC +GPGEPAYVDEPVNMSTPATVPDPPENVKWRDRTANSIFLTWDPPKNDGGSRIKGYIVERCPRGSDKWVAC +GEPVAETKMEVTGLEEGKWYAYRVKTLNRQGASKPSRPTEEIQAVDTQEAPEIFLDVKLLAGLTVKAGTK +IELPATVTGKPEPKITWTKADMILKQDKRITIENVPKKSTVTIVDSKRSDTGTYIIEAVNVCGRATAVVE +VNVLDKPGPPAAFDITDVTNESCLLTWNPPRDDGGSKITNYVVERRATDSEVWHKLSSTVKDTNFKATKL +IPNKEYIFRVAAENMYGAGEPVQASPITAKYQFDPPGPPTRLEPSDITKDAVTLTWCEPDDDGGSPITGY +WVERLDPDTDKWVRCNKMPVKDTTYRVKGLTNKKKYRFRVLAENLAGPGKPSKSTEPILIKDPIDPPWPP +GKPTVKDVGKTSVRLNWTKPEHDGGAKIESYVIEMLKTGTDEWVRVAEGVPTTQHLLPGLMEGQEYSFRV +RAVNKAGESEPSEPSDPVLCREKLYPPSPPRWLEVINITKNTADLKWTVPEKDGGSPITNYIVEKRDVRR +KGWQTVDTTVKDTKCTVTPLTEGSLYVFRVAAENAIGQSDYTEIEDSVLAKDTFTTPGPPYALAVVDVTK +RHVDLKWEPPKNDGGRPIQRYVIEKKERLGTRWVKAGKTAGPDCNFRVTDVIEGTEVQFQVRAENEAGVG +HPSEPTEILSIEDPTSPPSPPLDLHVTDAGRKHIAIAWKPPEKNGGSPIIGYHVEMCPVGTEKWMRVNSR +PIKDLKFKVEEGVVPDKEYVLRVRAVNAIGVSEPSEISENVVAKDPDCKPTIDLETHDIIVIEGEKLSIP +VPFRAVPVPTVSWHKDGKEVKASDRLTMKNDHISAHLEVPKSVRADAGIYTITLENKLGSATASINVKVI +GLPGPCKDIKASDITKSSCKLTWEPPEFDGGTPILHYVLERREAGRRTYIPVMSGENKLSWTVKDLIPNG +EYFFRVKAVNKVGGGEYIELKNPVIAQDPKQPPDPPVDVEVHNPTAEAMTITWKPPLYDGGSKIMGYIIE +KIAKGEERWKRCNEHLVPILTYTAKGLEEGKEYQFRVRAENAAGISEPSRATPPTKAVDPIDAPKVILRT +SLEVKRGDEIALDASISGSPYPTITWIKDENVIVPEEIKKRAAPLVRRRKGEVQEEEPFVLPLTQRLSID +NSKKGESQLRVRDSLRPDHGLYMIKVENDHGIAKAPCTVSVLDTPGPPINFVFEDIRKTSVLCKWEPPLD +DGGSEIINYTLEKKDKTKPDSEWIVVTSTLRHCKYSVTKLIEGKEYLFRVRAENRFGPGPPCVSKPLVAK +DPFGPPDAPDKPIVEDVTSNSMLVKWNEPKDNGSPILGYWLEKREVNSTHWSRVNKSLLNALKANVDGLL +EGLTYVFRVCAENAAGPGKFSPPSDPKTAHDPISPPGPPIPRVTDTSSTTIELEWEPPAFNGGGEIVGYF +VDKQLVGTNKWSRCTEKMIKVRQYTVKEIREGADYKLRVSAVNAAGEGPPGETQPVTVAEPQEPPAVELD +VSVKGGIQIMAGKTLRIPAVVTGRPVPTKVWTKEEGELDKDRVVIDNVGTKSELIIKDALRKDHGRYVIT +ATNSCGSKFAAARVEVFDVPGPVLDLKPVVTNRKMCLLNWSDPEDDGGSEITGFIIERKDAKMHTWRQPI +ETERSKCDITGLLEGQEYKFRVIAKNKFGCGPPVEIGPILAVDPLGPPTSPERLTYTERQRSTITLDWKE +PRSNGGSPIQGYIIEKRRHDKPDFERVNKRLCPTTSFLVENLDEHQMYEFRVKAVNEIGESEPSLPLNVV +IQDDEVPPTIKLRLSVRGDTIKVKAGEPVHIPADVTGLPMPKIEWSKNETVIEKPTDALQITKEEVSRSE +AKTELSIPKAVREDKGTYTVTASNRLGSVFRNVHVEVYDRPSPPRNLAVTDIKAESCYLTWDAPLDNGGS +EITHYVIDKRDASRKKAEWEEVTNTAVEKRYGIWKLIPNGQYEFRVRAVNKYGISDECKSDKVVIQDPYR +LPGPPGKPKVLARTKGSMLVSWTPPLDNGGSPITGYWLEKREEGSPYWSRVSRAPITKVGLKGVEFNVPR +LLEGVKYQFRAMAINAAGIGPPSEPSDPEVAGDPIFPPGPPSCPEVKDKTKSSISLGWKPPAKDGGSPIK +GYIVEMQEEGTTDWKRVNEPDKLITTCECVVPNLKELRKYRFRVKAVNEAGESEPSDTTGEIPATDIQEE +PEVFIDIGAQDCLVCKAGSQIRIPAVIKGRPTPKSSWEFDGKAKKAMKDGVHDIPEDAQLETAENSSVII +IPECKRSHTGKYSITAKNKAGQKTANCRVKVMDVPGPPKDLKVSDITRGSCRLSWKMPDDDGGDRIKGYV +IEKRTIDGKAWTKVNPDCGSTTFVVPDLLSEQQYFFRVRAENRFGIGPPVETIQRTTARDPIYPPDPPIK +LKIGLITKNTVHLSWKPPKNDGGSPVTHYIVECLAWDPTGTKKEAWRQCNKRDVEELQFTVEDLVEGGEY +EFRVKAVNAAGVSKPSATVGPCDCQRPDMPPSIDLKEFMEVEEGTNVNIVAKIKGVPFPTLTWFKAPPKK +PDNKEPVLYDTHVNKLVVDDTCTLVIPQSRRSDTGLYTITAVNNLGTASKEMRLNVLGRPGPPVGPIKFE +SVSADQMTLSWFPPKDDGGSKITNYVIEKREANRKTWVHVSSEPKECTYTIPKLLEGHEYVFRIMAQNKY +GIGEPLDSEPETARNLFSVPGAPDKPTVSSVTRNSMTVNWEEPEYDGGSPVTGYWLEMKDTTSKRWKRVN +RDPIKAMTLGVSYKVTGLIEGSDYQFRVYAINAAGVGPASLPSDPATARDPIAPPGPPFPKVTDWTKSSA +DLEWSPPLKDGGSKVTGYIVEYKEEGKEEWEKGKDKEVRGTKLVVTGLKEGAFYKFRVSAVNIAGIGEPG +EVTDVIEMKDRLVSPDLQLDASVRDRIVVHAGGVIRIIAYVSGKPPPTVTWNMNERTLPQEATIETTAIS +SSMVIKNCQRSHQGVYSLLAKNEAGERKKTIIVDVLDVPGPVGTPFLAHNLTNESCKLTWFSPEDDGGSP +ITNYVIEKRESDRRAWTPVTYTVTRQNATVQGLIQGKAYFFRIAAENSIGMGPFVETSEALVIREPITVP +ERPEDLEVKEVTKNTVTLTWNPPKYDGGSEIINYVLESRLIGTEKFHKVTNDNLLSRKYTVKGLKEGDTY +EYRVSAVNIVGQGKPSFCTKPITCKDELAPPTLHLDFRDKLTIRVGEAFALTGRYSGKPKPKVSWFKDEA +DVLEDDRTHIKTTPATLALEKIKAKRSDSGKYCVVVENSTGSRKGFCQVNVVDHPGPPVGPVSFDEVTKD +YMVISWKPPLDDGGSKITNYIIEKKEVGKDVWMPVTSASAKTTCKVSKLLEGKDYIFRIHAENLYGISDP +LVSDSMKAKDRFRVPDAPDQPIVTEVTKDSALVTWNKPHDGGKPITNYILEKRETMSKRWARVTKDPIHP +YTKFRVPDLLEGCQYEFRVSAENEIGIGDPSPPSKPVFAKDPIAKPSPPVNPEAIDTTCNSVDLTWQPPR +HDGGSKILGYIVEYQKVGDEEWRRANHTPESCPETKYKVTGLRDGQTYKFRVLAVNAAGESDPAHVPEPV +LVKDRLEPPELILDANMAREQHIKVGDTLRLSAIIKGVPFPKVTWKKEDRDAPTKARIDVTPVGSKLEIR +NAAHEDGGIYSLTVENPAGSKTVSVKVLVLDKPGPPRDLEVSEIRKDSCYLTWKEPLDDGGSVITNYVVE +RRDVASAQWSPLSATSKKKSHFAKHLNEGNQYLFRVAAENQYGRGPFVETPKPIKALDPLHPPGPPKDLH +HVDVDKTEVSLVWNKPDRDGGSPITGYLVEYQEEGTQDWIKFKTVTNLECVVTGLQQGKTYRFRVKAENI +VGLGLPDTTIPIECQEKLVPPSVELDVKLIEGLVVKAGTTVRFPAIIRGVPVPTAKWTTDGSEIKTDEHY +TVETDNFSSVLTIKNCLRRDTGEYQITVSNAAGSKTVAVHLTVLDVPGPPTGPINILDVTPEHMTISWQP +PKDDGGSPVINYIVEKQDTRKDTWGVVSSGSSKTKLKIPHLQKGCEYVFRVRAENKIGVGPPLDSTPTVA +KHKFSPPSPPGKPVVTDITENAATVSWTLPKSDGGSPITGYYMERREVTGKWVRVNKTPIADLKFRVTGL +YEGNTYEFRVFAENLAGLSKPSPSSDPIKACRPIKPPGPPINPKLKDKSRETADLVWTKPLSDGGSPILG +YVVECQKPGTAQWNRINKDELIRQCAFRVPGLIEGNEYRFRIKAANIVGEGEPRELAESVIAKDILHPPE +VELDVTCRDVITVRVGQTIRILARVKGRPEPDITWTKEGKVLVREKRVDLIQDLPRVELQIKEAVRADHG +KYIISAKNSSGHAQGSAIVNVLDRPGPCQNLKVTNVTKENCTISWENPLDNGGSEITNFIVEYRKPNQKG +WSIVASDVTKRLIKANLLANNEYYFRVCAENKVGVGPTIETKTPILAINPIDRPGEPENLHIADKGKTFV +YLKWRRPDYDGGSPNLSYHVERRLKGSDDWERVHKGSIKETHYMVDRCVENQIYEFRVQTKNEGGESDWV +KTEEVVVKEDLQKPVLDLKLSGVLTVKAGDTIRLEAGVRGKPFPEVAWTKDKDATDLTRSPRVKIDTRAD +SSKFSLTKAKRSDGGKYVVTATNTAGSFVAYATVNVLDKPGPVRNLKIVDVSSDRCTVCWDPPEDDGGCE +IQNYILEKCETKRMVWSTYSATVLTPGTTVTRLIEGNEYIFRVRAENKIGTGPPTESKPVIAKTKYDKPG +RPDPPEVTKVSKEEMTVVWNPPEYDGGKSITGYFLEKKEKHSTRWVPVNKSAIPERRMKVQNLLPDHEYQ +FRVKAENEIGIGEPSLPSRPVVAKDPIEPPGPPTNFRVVDTTKHSITLGWGKPVYDGGAPIIGYVVEMRP +KIADASPDEGWKRCNAAAQLVRKEFTVTSLDENQEYEFRVCAQNQVGIGRPAELKEAIKPKEILEPPEID +LDASMRKLVIVRAGCPIRLFAIVRGRPAPKVTWRKVGIDNVVRKGQVDLVDTMAFLVIPNSTRDDSGKYS +LTLVNPAGEKAVFVNVRVLDTPGPVSDLKVSDVTKTSCHVSWAPPENDGGSQVTHYIVEKREADRKTWST +VTPEVKKTSFHVTNLVPGNEYYFRVTAVNEYGPGVPTDVPKPVLASDPLSEPDPPRKLEATEMTKNSATL +AWLPPLRDGGAKIDGYIISYREEEQPADRWTEYSVVKDLSLVVTGLKEGKKYKFRVAARNAVGVSLPREA +EGVYEAKEQLLPPKILMPEQITIKAGKKLRIEAHVYGKPHPTCKWKKGEDEVVTSSHLAVHKADSSSILI +IKDVTRKDSGYYSLTAENSSGTDTQKIKVVVMDAPGPPQPPFDISDIDADACSLSWHIPLEDGGSNITNY +IVEKCDVSRGDWVTALASVTKTSCRVGKLIPGQEYIFRVRAENRFGISEPLTSPKMVAQFPFGVPSEPKN +ARVTKVNKDCIFVAWDRPDSDGGSPIIGYLIERKERNSLLWVKANDTLVRSTEYPCAGLVEGLEYSFRIY +ALNKAGSSPPSKPTEYVTARMPVDPPGKPEVIDVTKSTVSLIWARPKHDGGSKIIGYFVEACKLPGDKWV +RCNTAPHQIPQEEYTATGLEEKAQYQFRAIARTAVNISPPSEPSDPVTILAENVPPRIDLSVAMKSLLTV +KAGTNVCLDATVFGKPMPTVSWKKDGTLLKPAEGIKMAMQRNLCTLELFSVNRKDSGDYTITAENSSGSK +SATIKLKVLDKPGPPASVKINKMYSDRAMLSWEPPLEDGGSEITNYIVDKRETSRPNWAQVSATVPITSC +SVEKLIEGHEYQFRICAENKYGVGDPVFTEPAIAKNPYDPPGRCDPPVISNITKDHMTVSWKPPADDGGS +PITGYLLEKRETQAVNWTKVNRKPIIERTLKATGLQEGTEYEFRVTAINKAGPGKPSDASKAAYARDPQY +PPAPPAFPKVYDTTRSSVSLSWGKPAYDGGSPIIGYLVEVKRADSDNWVRCNLPQNLQKTRFEVTGLMED +TQYQFRVYAVNKIGYSDPSDVPDKHYPKDILIPPEGEHDADLRKTLILRAGVTMRLYVPVKGRPPPKITW +SKPNVNLRDRIGLDIKSTDFDTFLRCENVNKYDAGKYILTLENSCGKKEYTIVVKVLDTPGPPINVTVKE +ISKDSAYVTWEPPIIDGGSPIINYVVQKRDAERKSWSTVTTECSKTSFRVPNLEEGKSYFFRVFAENEYG +IGDPGETRDAVKASQTPGPVVDLKVRSVSKSSCSIGWKKPHSDGGSRIIGYVVDFLTEENKWQRVMKSLS +LQYSAKDLTEGKEYTFRVSAENENGEGTPSEITVVARDDVVAPDLDLKGLPDLCYLAKENSNFRLKIPIK +GKPAPSVSWKKGEDPLATDTRVSVESSAVNTTLIVYDCQKSDAGKYTITLKNVAGTKEGTISIKVVGKPG +IPTGPIKFDEVTAEAMTLKWAPPKDDGGSEITNYILEKRDSVNNKWVTCASAVQKTTFRVTRLHEGMEYT +FRVSAENKYGVGEGLKSEPIVARHPFDVPDAPPPPNIVDVRHDSVSLTWTDPKKTGGSPITGYHLEFKER +NSLLWKRANKTPIRMRDFKVTGLTEGLEYEFRVMAINLAGVGKPSLPSEPVVALDPIDPPGKPEVINITR +NSVTLIWTEPKYDGGHKLTGYIVEKRDLPSKSWMKANHVNVPECAFTVTDLVEGGKYEFRIRAKNTAGAI +SAPSESTETIICKDEYEAPTIVLDPTIKDGLTIKAGDTIVLNAISILGKPLPKSSWSKAGKDIRPSDITQ +ITSTPTSSMLTIKYATRKDAGEYTITATNPFGTKVEHVKVTVLDVPGPPGPVEISNVSAEKATLTWTPPL +EDGGSPIKSYILEKRETSRLLWTVVSEDIQSCRHVATKLIQGNEYIFRVSAVNHYGKGEPVQSEPVKMVD +RFGPPGPPEKPEVSNVTKNTATVSWKRPVDDGGSEITGYHVERREKKSLRWVRAIKTPVSDLRCKVTGLQ +EGSTYEFRVSAENRAGIGPPSEASDSVLMKDAAYPPGPPSNPHVTDTTKKSASLAWGKPHYDGGLEITGY +VVEHQKVGDEAWIKDTTGTALRITQFVVPDLQTKEKYNFRISAINDAGVGEPAVIPDVEIVEREMAPDFE +LDAELRRTLVVRAGLSIRIFVPIKGRPAPEVTWTKDNINLKNRANIENTESFTLLIIPECNRYDTGKFVM +TIENPAGKKSGFVNVRVLDTARPSPQLRPTDITKDSVTLHWDLPLIDGGSRITNYIVEKREATRKSYSTA +TTKCHKCTYKVTGLSEGCEYFFRVMAENEYGIGEPTETTEPVKASEAPSPPDSLNIMDITKSTVSLAWPK +PKHDGGSKITGYVIEAQRKGSDQWTHITTVKGLECVVRNLTEGEEYTFQVMAVNSAGRSAPRESRPVIVK +EQTMLPELDLRGIYQKLVIAKAGDNIKVEIPVLGRPKPTVTWKKGDQILKQTQRVNFETTATSTILNINE +CVRSDSGPYPLTARNIVGEVGDVITIQVHDIPGPPTGPIKFDEVSSDFVTFSWDPPENDGGVPISNYVVE +MRQTDSTTWVELATTVIRTTYKATRLTTGLEYQFRVKAQNRYGVGPGITSAWIVANYPFKVPGPPGTPQV +TAVTKDSMTISWHEPLSDGGSPILGYHVERKERNGILWQTVSKALVPGNIFKSSGLTDGIAYEFRVIAEN +MAGKSKPSKPSEPMLALDPIDPPGKPVPLNITRHTVTLKWAKPEYTGGFKITSYIVEKRDLPNGRWLKAN +FSNILENEFTVSGLTEDAAYEFRVIAKNAAGAISPPSEPSDAITCRDDVEAPKIKVDVKFKDTVILKAGE +AFRLEADVSGRPPPTMEWSKDGKELEGTAKLEIKIADFSTNLVNKDSTRRDSGAYTLTATNPGGFAKHIF +NVKVLDRPGPPEGPLAVTEVTSEKCVLSWFPPLDDGGAKIDHYIVQKRETSRLAWTNVASEVQVTKLKVT +KLLKGNEYIFRVMAVNKYGVGEPLESEPVLAVNPYGPPDPPKNPEVTTITKDSMVVCWGHPDSDGGSEII +NYIVERRDKAGQRWIKCNKKTLTDLRYKVSGLTEGHEYEFRIMAENAAGISAPSPTSPFYKACDTVFKPG +PPGNPRVLDTSRSSISIAWNKPIYDGGSEITGYMVEIALPEEDEWQIVTPPAGLKATSYTITGLTENQEY +KIRIYAMNSEGLGEPALVPGTPKAEDRMLPPEIELDADLRKVVTIRACCTLRLFVPIKGRPDPEVKWARD +HGESLDKASIESASSYTLLIVGNVNRFDSGKYILTVENSSGSKSAFVNVRVLDTPGPPQDLKVKEVTKTS +VTLTWDPPLLDGGSKIKNYIVEKRESTRKAYSTVATNCHKTSWKVDQLQEGCSYYFRVLAENEYGIGLPA +ETAESVKASERPLPPGKITLMDVTRNSVSLSWEKPEHDGGSRILGYIVEMQTKGSDKWATCATVKVTEAT +ITGLIQGEEYSFRVSAQNEKGISDPRQLSVPVIAKDLVIPPAFKLLFNTFTVLAGEDLKVDVPFIGRPTP +AVTWHKDNVPLKQTTRVNAESTENNSLLTIKDACREDVGHYVVKLTNSAGEAIETLNVIVLDKPGPPTGP +VKMDEVTADSITLSWGPPKYDGGSSINNYIVEKRDTSTTTWQIVSATVARTTIKACRLKTGCEYQFRIAA +ENRYGKSTYLNSEPTVAQYPFKVPGPPGTPVVTLSSRDSMEVQWNEPISDGGSRVIGYHLERKERNSILW +VKLNKTPIPQTKFKTTGLEEGVEYEFRVSAENIVGIGKPSKVSECYVARDPCDPPGRPEAIIVTRNSVTL +QWKKPTYDGGSKITGYIVEKKELPEGRWMKASFTNIIDTHFEVTGLVEDHRYEFRVIARNAAGVFSEPSE +STGAITARDEVDPPRISMDPKYKDTIVVHAGESFKVDADIYGKPIPTIQWIKGDQELSNTARLEIKSTDF +ATSLSVKDAVRVDSGNYILKAKNVAGERSVTVNVKVLDRPGPPEGPVVISGVTAEKCTLAWKPPLQDGGS +DIINYIVERRETSRLVWTVVDANVQTLSCKVTKLLEGNEYTFRIMAVNKYGVGEPLESEPVVAKNPFVVP +DAPKAPEVTTVTKDSMIVVWERPASDGGSEILGYVLEKRDKEGIRWTRCHKRLIGELRLRVTGLIENHDY +EFRVSAENAAGLSEPSPPSAYQKACDPIYKPGPPNNPKVIDITRSSVFLSWSKPIYDGGCEIQGYIVEKC +DVNVGEWTMCTPPTGINKTNIEVEKLLEKHEYNFRICAINKAGVGEHADVPGPIIVEEKLEAPDIDLDLE +LRKIINIRAGGSLRLFVPIKGRPTPEVKWGKVDGEIRDAAIIDVTSSFTSLVLDNVNRYDSGKYTLTLEN +SSGTKSAFVTVRVLDTPSPPVNLKVTEITKDSVSITWEPPLLDGGSKIKNYIVEKREATRKSYAAVVTNC +HKNSWKIDQLQEGCSYYFRVTAENEYGIGLPAQTADPIKVAEVPQPPGKITVDDVTRNSVSLSWTKPEHD +GGSKIIQYIVEMQAKHSEKWSECARVKSLQAVITNLTQGEEYLFRVVAVNEKGRSDPRSLAVPIVAKDLV +IEPDVKPAFSSYSVQVGQDLKMEVPISGRPKPTITWTKDGLPLKQTTRINVTDSLDLTTLSIKETHKDDG +GQYGITVANVVGQKTASIEIVTLDKPDPPKGPVKFDDVSAESITLSWNPPLYTGGCQITNYIVQKRDTTT +TVWDVVSATVARTTLKVTKLKTGTEYQFRIFAENRYGQSFALESDPIVAQYPYKEPGPPGTPFATAISKD +SMVIQWHEPVNNGGSPVIGYHLERKERNSILWTKVNKTIIHDTQFKAQNLEEGIEYEFRVYAENIVGVGK +ASKNSECYVARDPCDPPGTPEPIMVKRNEITLQWTKPVYDGGSMITGYIVEKRDLPDGRWMKASFTNVIE +TQFTVSGLTEDQRYEFRVIAKNAAGAISKPSDSTGPITAKDEVELPRISMDPKFRDTIVVNAGETFRLEA +DVHGKPLPTIEWLRGDKEIEESARCEIKNTDFKALLIVKDAIRIDGGQYILRASNVAGSKSFPVNVKVLD +RPGPPEGPVQVTGVTSEKCSLTWSPPLQDGGSDISHYVVEKRETSRLAWTVVASEVVTNSLKVTKLLEGN +EYVFRIMAVNKYGVGEPLESAPVLMKNPFVLPGPPKSLEVTNIAKDSMTVCWNRPDSDGGSEIIGYIVEK +RDRSGIRWIKCNKRRITDLRLRVTGLTEDHEYEFRVSAENAAGVGEPSPATVYYKACDPVFKPGPPTNAH +IVDTTKNSITLAWGKPIYDGGSEILGYVVEICKADEEEWQIVTPQTGLRVTRFEISKLTEHQEYKIRVCA +LNKVGLGEATSVPGTVKPEDKLEAPELDLDSELRKGIVVRAGGSARIHIPFKGRPMPEITWSREEGEFTD +KVQIEKGVNYTQLSIDNCDRNDAGKYILKLENSSGSKSAFVTVKVLDTPGPPQNLAVKEVRKDSAFLVWE +PPIIDGGAKVKNYVIDKRESTRKAYANVSSKCSKTSFKVENLTEGAIYYFRVMAENEFGVGVPVETVDAV +KAAEPPSPPGKVTLTDVSQTSASLMWEKPEHDGGSRVLGYVVEMQPKGTEKWSIVAESKVCNAVVTGLSS +GQEYQFRVKAYNEKGKSDPRVLGVPVIAKDLTIQPSLKLPFNTYSIQAGEDLKIEIPVIGRPRPNISWVK +DGEPLKQTTRVNVEETATSTVLHIKEGNKDDFGKYTVTATNSAGTATENLSVIVLEKPGPPVGPVRFDEV +SADFVVISWEPPAYTGGCQISNYIVEKRDTTTTTWHMVSATVARTTIKITKLKTGTEYQFRIFAENRYGK +SAPLDSKAVIVQYPFKEPGPPGTPFVTSISKDQMLVQWHEPVNDGGTKIIGYHLEQKEKNSILWVKLNKT +PIQDTKFKTTGLDEGLEYEFKVSAENIVGIGKPSKVSECFVARDPCDPPGRPEAIVITRNNVTLKWKKPA +YDGGSKITGYIVEKKDLPDGRWMKASFTNVLETEFTVSGLVEDQRYEFRVIARNAAGNFSEPSDSSGAIT +ARDEIDAPNASLDPKYKDVIVVHAGETFVLEADIRGKPIPDVVWSKDGKELEETAARMEIKSTIQKTTLV +VKDCIRTDGGQYILKLSNVGGTKSIPITVKVLDRPGSPEGPLKVTGVTAEKCYLAWNPPLQDGGANISHY +IIEKRETSRLSWTQVSTEVQALNYKVTKLLPGNEYIFRVMAVNKYGIGEPLESGPVTACNPYKPPGPPST +PEVSAITKDSMVVTWARPVDDGGTEIEGYILEKRDKEGVRWTKCNKKTLTDLRLRVTGLTEGHSYEFRVA +AENAAGVGEPSEPSVFYRACDALYPPGPPSNPKVTDTSRSSVSLAWSKPIYDGGAPVKGYVVEVKEAAAD +EWTTCTPPTGLQGKQFTVTKLKENTEYNFRICAINSEGVGEPATLPGSVVAQERIEPPEIELDADLRKVV +VLRASATLRLFVTIKGRPEPEVKWEKAEGILTDRAQIEVTSSFTMLVIDNVTRFDSGRYNLTLENNSGSK +TAFVNVRVLDSPSAPVNLTIREVKKDSVTLSWEPPLIDGGAKITNYIVEKRETTRKAYATITNNCTKTTF +RIENLQEGCSYYFRVLASNEYGIGLPAETTEPVKVSEPPLPPGRVTLVDVTRNTATIKWEKPESDGGSKI +TGYVVEMQTKGSEKWSTCTQVKTLEATISGLTAGEEYVFRVAAVNEKGRSDPRQLGVPVIARDIEIKPSV +ELPFHTFNVKAREQLKIDVPFKGRPQATVNWRKDGQTLKETTRVNVSSSKTVTSLSIKEASKEDVGTYEL +CVSNSAGSITVPITIIVLDRPGPPGPIRIDEVSCDSITISWNPPEYDGGCQISNYIVEKKETTSTTWHIV +SQAVARTSIKIVRLTTGSEYQFRVCAENRYGKSSYSESSAVVAEYPFSPPGPPGTPKVVHATKSTMLVTW +QVPVNDGGSRVIGYHLEYKERSSILWSKANKILIADTQVKVSGLDEGLMYEYRVYAENIAGIGKCSKSCE +PVPARDPCDPPGQPEVTNITRKSVSLKWSKPHYDGGAKITGYIVERRELPDGRWLKCNYTNIQETYFEVT +ELTEDQRYEFRVFARNAADSVSEPSESTGPIIVKDDVEPPRVMMDVKFRDVIVVKAGEVLKINADIAGRP +LPVISWAKDGIEIEERARTEIISTDNHTLLTVKDCIRRDTGQYVLTLKNVAGTRSVAVNCKVLDKPGPPA +GPLEINGLTAEKCSLSWGRPQEDGGADIDYYHRKKRETSHLAWTICEGELQMTSCKVTKLLKGNEYIFRV +TGVNKYGVGEPLESVAIKALDPFTVPSPPTSLEITSVTKESMTLCWSRPESDGGSEISGYIIERREKNSL +RWVRVNKKPVYDLRVKSTGLREGCEYEYRVYAENAAGLSLPSETSPLIRAEDPVFLPSPPSKPKIVDSGK +TTITIAWVKPLFDGGAPITGYTVEYKKSDDTDWKTSIQSLRGTEYTISGLTTGAEYVFRVKSVNKVGASD +PSDSSDPQIAKEREEEPLFDIDSEMRKTLIVKAGASFTMTVPFRGRPVPNVLWSKPDTDLRTRAYVDTTD +SRTSLTIENANRNDSGKYTLTIQNVLSAASLTLVVKVLDTPGPPTNITVQDVTKESAVLSWDVPENDGGA +PVKNYHIEKREASKKAWVSVTNNCNRLSYKVTNLQEGAIYYFRVSGENEFGVGIPAETKEGVKITEKPSP +PEKLGVTSISKDSVSLTWLKPEHDGGSRIVHYVVEALEKGQKNWVKCAVAKSTHHVVSGLRENSEYFFRV +FAENQAGLSDPRELLLPVLIKEQLEPPEIDMKNFPSHTVYVRAGSNLKVDIPISGKPLPKVTLSRDGVPL +KATMRFNTEITAENLTINLKESVTADAGRYEITAANSSGTTKAFINIVVLDRPGPPTGPVVISDITEESV +TLKWEPPKYDGGSQVTNYILLKRETSTAVWTEVSATVARTMMKVMKLTTGEEYQFRIKAENRFGISDHID +SACVTVKLPYTTPGPPSTPWVTNVTRESITVGWHEPVSNGGSAVVGYHLEMKDRNSILWQKANKLVIRTT +HFKVTTISAGLIYEFRVYAENAAGVGKPSHPSEPVLAIDACEPPRNVRITDISKNSVSLSWQQPAFDGGS +KITGYIVERRDLPDGRWTKASFTNVTETQFTISGLTQNSQYEFRVFARNAVGSISNPSEVVGPITCIDSY +GGPVIDLPLEYTEVVKYRAGTSVKLRAGISGKPAPTIEWYKDDKELQTNALVCVENTTDLASILIKDADR +LNSGCYELKLRNAMASASATIRVQILDKPGPPGGPIEFKTVTAEKITLLWRPPADDGGAKITHYIVEKRE +TSRVVWSMVSEHLEECIITTTKIIKGNEYIFRVRAVNKYGIGEPLESDSVVAKNAFVTPGPPGIPEVTKI +TKNSMTVVWSRPIADGGSDISGYFLEKRDKKSLGWFKVLKETIRDTRQKVTGLTENSDYQYRVCAVNAAG +QGPFSEPSEFYKAADPIDPPGPPAKIRIADSTKSSITLGWSKPVYDGGSAVTGYVVEIRQGEEEEWTTVS +TKGEVRTTEYVVSNLKPGVNYYFRVSAVNCAGQGEPIEMNEPVQAKDILEAPEIDLDVALRTSVIAKAGE +DVQVLIPFKGRPPPTVTWRKDEKNLGSDARYSIENTDSSSLLTIPQVTRNDTGKYILTIENGVGEPKSST +VSVKVLDTPAACQKLQVKHVSRGTVTLLWDPPLIDGGSPIINYVIEKRDATKRTWSVVSHKCSSTSFKLI +DLSEKTPFFFRVLAENEIGIGEPCETTEPVKAAEVPAPIRDLSMKDSTKTSVILSWTKPDFDGGSVITEY +VVERKGKGEQTWSHAGISKTCEIEVSQLKEQSVLEFRVFAKNEKGLSDPVTIGPITVKELIITPEVDLSD +IPGAQVTVRIGHNVHLELPYKGKPKPSISWLKDGLPLKESEFVRFSKTENKITLSIKNAKKEHGGKYTVI +LDNAVCRIAVPITVITLGPPSKPKGPIRFDEIKADSVILSWDVPEDNGGGEITCYSIEKRETSQTNWKMV +CSSVARTTFKVPNLVKDAEYQFRVRAENRYGVSQPLVSSIIVAKHQFRIPGPPGKPVIYNVTSDGMSLTW +DAPVYDGGSEVTGFHVEKKERNSILWQKVNTSPISGREYRATGLVEGLDYQFRVYAENSAGLSSPSDPSK +FTLAVSPVDPPGTPDYIDVTRETITLKWNPPLRDGGSKIVGYSIEKRQGNERWVRCNFTDVSECQYTVTG +LSPGDRYEFRIIARNAVGTISPPSQSSGIIMTRDENVPPIVEFGPEYFDGLIIKSGESLRIKALVQGRPV +PRVTWFKDGVEIEKRMNMEITNVLGSTSLFVRDATRDHRGVYTVEAKNASGSAKAEIKVKVQDTPGKVVG +PIRFTNITGEKMTLWWDAPLNDGCAPITHYIIEKRETSRLAWALIEDKCEAQSYTAIKLINGNEYQFRVS +AVNKFGVGRPLDSDPVVAQIQYTVPDAPGIPEPSNITGNSITLTWARPESDGGSEIQQYILERREKKSTR +WVKVISKRPISETRFKVTGLTEGNEYEFHVMAENAAGVGPASGISRLIKCREPVNPPGPPTVVKVTDTSK +TTVSLEWSKPVFDGGMEIIGYIIEMCKTDLGDWHKVNAEACVKTRYTVTDLQAGEEYKFRVSAINGAGKG +DSCEVTGTIKAVDRLTAPELDIDANFKQTHVVRAGASIRLFIAYQGRPTPTAVWSKPDSNLSLRADIHTT +DSFSTLTVENCNRNDAGKYTLTVENNSGSKSITFTVKVLDTPGPPGPITFKDVTRGSATLMWDAPLLDGG +ARIHHYVVEKREASRRSWQVISEKCTRQIFKVNDLAEGVPYYFRVSAVNEYGVGEPYEMPEPIVATEQPA +PPRRLDVVDTSKSSAVLAWLKPDHDGGSRITGYLLEMRQKGSDLWVEAGHTKQLTFTVERLVEKTEYEFR +VKAKNDAGYSEPREAFSSVIIKEPQIEPTADLTGITNQLITCKAGSPFTIDVPISGRPAPKVTWKLEEMR +LKETDRVSITTTKDRTTLTVKDSMRGDSGRYFLTLENTAGVKTFSVTVVVIGRPGPVTGPIEVSSVSAES +CVLSWGEPKDGGGTEITNYIVEKRESGTTAWQLVNSSVKRTQIKVTHLTKYMEYSFRVSSENRFGVSKPL +ESAPIIAEHPFVPPSAPTRPEVYHVSANAMSIRWEEPYHDGGSKIIGYWVEKKERNTILWVKENKVPCLE +CNYKVTGLVEGLEYQFRTYALNAAGVSKASEASRPIMAQNPVDAPGRPEVTDVTRSTVSLIWSAPAYDGG +SKVVGYIIERKPVSEVGDGRWLKCNYTIVSDNFFTVTALSEGDTYEFRVLAKNAAGVISKGSESTGPVTC +RDEYAPPKAELDARLHGDLVTIRAGSDLVLDAAVGGKPEPKIIWTKGDKELDLCEKVSLQYTGKRATAVI +KFCDRSDSGKYTLTVKNASGTKAVSVMVKVLDSPGPCGKLTVSRVTQEKCTLAWSLPQEDGGAEITHYIV +ERRETSRLNWVIVEGECPTLSYVVTRLIKNNEYIFRVRAVNKYGPGVPVESEPIVARNSFTIPSPPGIPE +EVGTGKEHIIIQWTKPESDGGNEISNYLVDKREKESLRWTRVNKDYVVYDTRLKVTSLMEGCDYQFRVTA +VNAAGNSEPSERSNFISCREPSYTPGPPSAPRVVDTTKHSISLAWTKPMYDGGTDIVGYVLEMQEKDTDQ +WYRVHTNATIRNTEFTVPDLKMGQKYSFRVAAVNVKGMSEYSESIAEIEPVERIEIPDLELADDLKKTVT +IRAGASLRLMVSVSGRPPPVITWSKQGIDLASRAIIDTTESYSLLIVDKVNRYDAGKYTIEAENQSGKKS +ATVLVKVYDTPGPCPSVKVKEVSRDSVTITWEIPTIDGGAPINNYIVEKREAAMRAFKTVTTKCSKTLYR +ISGLVEGTMHYFRVLPENIYGIGEPCETSDAVLVSEVPLVPAKLEVVDVTKSTVTLAWEKPLYDGGSRLT +GYVLEACKAGTERWMKVVTLKPTVLEHTVTSLNEGEQYLFRIRAQNEKGVSEPRETVTAVTVQDLRVLPT +IDLSTMPQKTIHVPAGRPVELVIPIAGRPPPAASWFFAGSKLRESERVTVETHTKVAKLTIRETTIRDTG +EYTLELKNVTGTTSETIKVIILDKPGPPTGPIKIDEIDATSITISWEPPELDGGAPLSGYVVEQRDAHRP +GWLPVSESVTRSTFKFTRLTEGNEYVFRVAATNRFGIGSYLQSEVIECRSSIRIPGPPETLQIFDVSRDG +MTLTWYPPEDDGGSQVTGYIVERKEVRADRWVRVNKVPVTMTRYRSTGLTEGLEYEHRVTAINARGSGKP +SRPSKPIVAMDPIAPPGKPQNPRVTDTTRTSVSLAWSVPEDEGGSKVTGYLIEMQKVDQHEWTKCNTTPT +KIREYTLTHLPQGAEYRFRVLACNAGGPGEPAEVPGTVKVTEMLEYPDYELDERYQEGIFVRQGGVIRLT +IPIKGKPFPICKWTKEGQDISKRAMIATSETHTELVIKEADRGDSGTYDLVLENKCGKKAVYIKVRVIGS +PNSPEGPLEYDDIQVRSVRVSWRPPADDGGADILGYILERREVPKAAWYTIDSRVRGTSLVVKGLKENVE +YHFRVSAENQFGISKPLKSEEPVTPKTPLNPPEPPSNPPEVLDVTKSSVSLSWSRPKDDGGSRVTGYYIE +RKETSTDKVVRHNKTQITTTMYTVTGLVPDAEYQFRIIAQNDVGLSETSPASEPVVCKDPFDKPSQPGEL +EILSISKDSVTLQWEKPECDGGKEILGYWVEYRQSGDSAWKKSNKERIKDKQFTIGGLLEATEYEFRVFA +ENETGLSRPRRTAMSIKTKLTSGEAPGIRKEMKDVTTKLGEAAQLSCQIVGRPLPDIKWYRFGKELIQSR +KYKMSSDGRTHTLTVMTEEQEDEGVYTCIATNEVGEVETSSKLLLQATPQFHPGYPLKEKYYGAVGSTLR +LHVMYIGRPVPAMTWFHGQKLLQNSENITIENTEHYTHLVMKNVQRKTHAGKYKVQLSNVFGTVDAILDV +EIQDKPDKPTGPIVIEALLKNSAVISWKPPADDGGSWITNYVVEKCEAKEGAEWQLVSSAISVTTCRIVN +LTENAGYYFRVSAQNTFGISDPLEVSSVVIIKSPFEKPGAPGKPTITAVTKDSCVVAWKPPASDGGAKIR +NYYLEKREKKQNKWISVTTEEIRETVFSVKNLIEGLEYEFRVKCENLGGESEWSEISEPITPKSDVPIQA +PHFKEELRNLNVRYQSNATLVCKVTGHPKPIVKWYRQGKEIIADGLKYRIQEFKGGYHQLIIASVTDDDA +TVYQVRATNQGGSVSGTASLEVEVPAKIHLPKTLEGMGAVHALRGEVVSIKIPFSGKPDPVITWQKGQDL +IDNNGHYQVIVTRSFTSLVFPNGVERKDAGFYVVCAKNRFGIDQKTVELDVADVPDPPRGVKVSDASRDS +VNLTWTEPASDGGSKITNYIVEKCATTAERWLRVGQARETRYTVINLFGKTSYQFRVIAENKFGLSKPSE +PSEPTITKEDKTRAMNYDEEVDETREVSMTKASHSSTKELYEKYMIAEDLGRGEFGIVHRCVETSSKKTY +MAKFVKVKGTDQVLVKKEISILNIARHRNILHLHESFESMEELVMIFEFISGLDIFERINTSAFELNERE +IVSYVHQVCEALQFLHSHNIGHFDIRPENIIYQTRRSSTIKIIEFGQARQLKPGDNFRLLFTAPEYYAPE +VHQHDVVSTATDMWSLGTLVYVLLSGINPFLAETNQQIIENIMNAEYTFDEEAFKEISIEAMDFVDRLLV +KERKSRMTASEALQHPWLKQKIERVSTKVIRTLKHRRYYHTLIKKDLNMVVSAARISCGGAIRSQKGVSV +AKVKVASIEIGPVSGQIMHAVGEEGGHVKYVCKIENYDQSTQVTWYFGVRQLENSEKYEITYEDGVAILY +VKDITKLDDGTYRCKVVNDYGEDSSYAELFVKGVREVYDYYCRRTMKKIKRRTDTMRLLERPPEFTLPLY +NKTAYVGENVRFGVTITVHPEPHVTWYKSGQKIKPGDNDKKYTFESDKGLYQLTINSVTTDDDAEYTVVA +RNKYGEDSCKAKLTVTLHPPPTDSTLRPMFKRLLANAECQEGQSVCFEIRVSGIPPPTLKWEKDGQPLSL +GPNIEIIHEGLDYYALHIRDTLPEDTGYYRVTATNTAGSTSCQAHLQVERLRYKKQEFKSKEEHERHVQK +QIDKTLRMAEILSGTESVPLTQVAKEALREAAVLYKPAVSTKTVKGEFRLEIEEKKEERKLRMPYDVPEP +RKYKQTTIEEDQRIKQFVPMSDMKWYKKIRDQYEMPGKLDRVVQKRPKRIRLSRWEQFYVMPLPRITDQY +RPKWRIPKLSQDDLEIVRPARRRTPSPDYDFYYRPRRRSLGDISDEELLLPIDDYLAMKRTEEERLRLEE +ELELGFSASPPSRSPPHFELSSLRYSSPQAHVKVEETRKNFRYSTYHIPTKAEASTSYAELRERHAQAAY +RQPKQRQRIMAEREDEELLRPVTTTQHLSEYKSELDFMSKEEKSRKKSRRQREVTEITEIEEEYEISKHA +QRESSSSASRLLRRRRSLSPTYIELMRPVSELIRSRPQPAEEYEDDTERRSPTPERTRPRSPSPVSSERS +LSRFERSARFDIFSRYESMKAALKTQKTSERKYEVLSQQPFTLDHAPRITLRMRSHRVPCGQNTRFILNV +QSKPTAEVKWYHNGVELQESSKIHYTNTSGVLTLEILDCHTDDSGTYRAVCTNYKGEASDYATLDVTGGD +YTTYASQRRDEEVPRSVFPELTRTEAYAVPSFKKTSEMEASSSVREVKSQMTETRESLSSYEHSASAEMK +SAALEEKSLEEKSTTRKIKTTLAARILTKPRSMTVYEGESARFSCDTDGEPVPTVTWLRKGQVLSTSARH +QVTTTKYKSTFEISSVQASDEGNYSVVVENSEGKQEAEFTLTIQKARVTEKAVTSPPRVKSPEPRVKSPE +AVKSPKRVKSPEPSHPKAVSPTETKPTPIEKVQHLPVSAPPKITQFLKAEASKEIAKLTCVVESSVLRAK +EVTWYKDGKKLKENGHFQFHYSADGTYELKINNLTESDQGEYVCEISGEGGTSKTNLQFMGQAFKSIHEK +VSKISETKKSDQKTTESTVTRKTEPKAPEPISSKPVIVTGLQDTTVSSDSVAKFAVKATGEPRPTAIWTK +DGKAITQGGKYKLSEDKGGFFLEIHKTDTSDSGLYTCTVKNSAGSVSSSCKLTIKAIKDTEAQKVSTQKT +SEITPQKKAVVQEEISQKALRSEEIKMSEAKSQEKLALKEEASKVLISEEVKKSAATSLEKSIVHEEITK +TSQASEEVRTHAEIKAFSTQMSINEGQRLVLKANIAGATDVKWVLNGVELTNSEEYRYGVSGSDQTLTIK +QASHRDEGILTCISKTKEGIVKCQYDLTLSKELSDAPAFISQPRSQNINEGQNVLFTREISGEPSPEIEW +FKNNLPISISSNVSISRSRNVYSLEIRNASVSDSGKYTIKAKNFRGQCSATASLMVLPLVEEPSREVVLR +TSGDTSLQGSFSSQSVQMSASKQEASFSSFSSSSASSMTEMKFASMSAQSMSSMQESFVEMSSSSFMGIS +NMTQLESSTSKMLKAGIRGIPPKIEALPSDISIDEGKVLTVACAFTGEPTPEVTWSCGGRKIHSQEQGRF +HIENTDDLTTLIIMDVQKQDGGLYTLSLGNEFGSDSATVNIHIRSI diff --git a/forester/archive/RIO/others/hmmer/testsuite/tophits_test.c b/forester/archive/RIO/others/hmmer/testsuite/tophits_test.c new file mode 100644 index 0000000..cdf1cfa --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/tophits_test.c @@ -0,0 +1,170 @@ +/* tophits_test.c + * SRE, Tue Oct 28 08:03:10 1997 [Newton Institute, Cambridge UK] + * + * Test driver for tophits.c. Returns 0 if everything is OK. + * + * Options: + * -v Verbose; print stuff. + */ + +#include +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +static char banner[] = "\ +tophits_test : internal verification of tophits.c"; + +static char usage[] = "\ +Usage: tophits_test [-options]\n\ + Available options are:\n\ + -h : help; display this usage info\n\ + -s : set random seed to \n\ + -v : be verbose (default is to simply exit with status 1 or 0)\n\ +"; + +static char experts[] = "\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-s", TRUE, sqdARG_INT }, + { "-v", TRUE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + struct tophit_s *hit; /* hit list */ + int i,j; /* counters */ + int nsamples; /* option: # of random "scores" */ + int be_verbose; /* option: TRUE to show output */ + int seed; /* option: random number seed */ + int paramH; /* option: H parameter */ + int paramA; /* option: A parameter */ + double *list; /* list of "scores" */ + double tmp; /* used for swapping */ + float score, score2; + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse command line + ***********************************************/ + be_verbose = FALSE; + seed = (int) time ((time_t *) NULL); + paramH = 100; + paramA = 10; + nsamples = 1000; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-s") == 0) { seed = atoi(optarg); } + else if (strcmp(optname, "-v") == 0) { be_verbose = TRUE; } + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 0) + Die("Incorrect number of arguments.\n%s\n", usage); + + sre_srandom(seed); + if (be_verbose) + printf("%d\tSEED\n", seed); + + /*********************************************** + * Generate three tiers of numbers: + * paramA - really good scores, 1000-2000 + * paramH - good scores, 100-200 + * nsamples - paramH - paramA: bad scores, 10-20 + * then shuffle. + ***********************************************/ + + list = MallocOrDie (sizeof(double) * nsamples); + for (i = 0; i < paramA; i++) + list[i] = 1000. + 1000. * sre_random(); + for (; i < paramA + paramH; i++) + list[i] = 100. + 100. * sre_random(); + for (; i < nsamples; i++) + list[i] = 10. + 10. * sre_random(); + + for (i = 0; i < nsamples; i++) + { + j = CHOOSE(nsamples); + tmp = list[j]; + list[j] = list[i]; + list[i] = tmp; + } + + if (be_verbose) + for (i = 0; i < nsamples; i++) + printf("%8.2f\tTest set\n", list[i]); + + /*********************************************** + * Test of FullSortTophits(). + * Fill up a hit list with random numbers; + * FullSort it; + * check that all top H are >= 100 and sorted. + ***********************************************/ + + hit = AllocTophits(100); + for (i = 0; i < nsamples; i++) + RegisterHit(hit, list[i], 0., (float) list[i], 0., 0., + NULL, NULL, NULL, /* name, acc, desc */ + 0,0,0, + 0,0,0, + 0,0, + NULL); + FullSortTophits(hit); + + if (be_verbose) + { + for (i = 0; i < hit->num; i++) + { + GetRankedHit(hit, i, NULL, &score, NULL, NULL, + NULL, NULL, NULL, /* name, acc, desc */ + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, + NULL); + printf("%8.2f FullSort()\n", score); + } + } + + for (i = 0; i < hit->num-1; i++) + { + GetRankedHit(hit, i, NULL, &score, NULL, NULL, + NULL, NULL, NULL, /* name, acc, desc */ + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, + NULL); + GetRankedHit(hit, i+1,NULL, &score2,NULL, NULL, + NULL, NULL, NULL, /* name, acc, desc */ + NULL, NULL, NULL, + NULL, NULL, NULL, + NULL, NULL, + NULL); + if (score < score2) + Die("FullSortTophits() fails test: order wrong"); + if (i < paramA && score < 1000.) + Die("FullSortTophits() fails test: lost a number"); + if (i < paramA + paramH && score < 100.) + Die("FullSortTophits() fails test: lost a number"); + } + + FreeTophits(hit); + free(list); + + if (be_verbose) printf("tophits_test is OK\n"); + return 0; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/trace_test.c b/forester/archive/RIO/others/hmmer/testsuite/trace_test.c new file mode 100644 index 0000000..98e5e97 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/trace_test.c @@ -0,0 +1,146 @@ +/* trace_test.c + * Mon Feb 2 07:57:47 1998 + * cp trace_test.c ../src/testdriver.c; cd ../src; make testdriver + * + * Test driver for Viterbi tracebacks. + * + * RCS $Id: trace_test.c,v 1.1.1.1 2005/03/22 08:34:47 cmzmasek Exp $ + */ + + +#include +#include +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +static char banner[] = "\ +trace_test : testing of Plan7 Viterbi traceback code"; + +static char usage[] = "\ +Usage: testdriver [-options]\n\ + Available options are:\n\ + -h : help; display this usage info\n\ + -v : be verbose\n\ +"; + +static char experts[] = "\ + --hmm : use HMM in file \n\ + --seq : use seq(s) in file \n\ + --small : run P7SmallViterbi()\n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-v", TRUE, sqdARG_NONE }, + { "--hmm", FALSE, sqdARG_STRING }, + { "--seq", FALSE, sqdARG_STRING }, + { "--small", FALSE, sqdARG_NONE }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMM(s) from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + char *seqfile; /* file to read target sequence(s) from */ + SQFILE *sqfp; /* opened seqfile for reading */ + char *seq; /* target sequence */ + SQINFO sqinfo; /* optional info for seq */ + char *dsq; /* digitized target sequence */ + struct plan7_s *hmm; /* HMM to search with */ + struct p7trace_s *tr; /* traceback */ + int nseq; + float sc; + + int be_verbose; + int do_small; /* TRUE to invoke P7SmallViterbi */ + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse command line + ***********************************************/ + + be_verbose = FALSE; + hmmfile = "trace_test.hmm"; + seqfile = "trace_test.seq"; + do_small = FALSE; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-v") == 0) be_verbose = TRUE; + else if (strcmp(optname, "--hmm") == 0) hmmfile = optarg; + else if (strcmp(optname, "--seq") == 0) seqfile = optarg; + else if (strcmp(optname, "--small") == 0) do_small = TRUE; + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 0) + Die("Incorrect number of arguments.\n%s\n", usage); + + /*********************************************** + * Open test sequence file + ***********************************************/ + + if ((sqfp = SeqfileOpen(seqfile, SQFILE_UNKNOWN, "BLASTDB")) == NULL) + Die("Failed to open sequence database file %s\n%s\n", seqfile, usage); + + /*********************************************** + * Open HMM file + * Read a single HMM from it. (Config HMM, if necessary). + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, NULL)) == NULL) + Die("Failed to open HMM file %s\n%s", hmmfile, usage); + if (!HMMFileRead(hmmfp, &hmm)) + Die("Failed to read any HMMs from %s\n", hmmfile); + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", hmmfile); + P7Logoddsify(hmm, TRUE); + + /*********************************************** + * Search HMM against each sequence + ***********************************************/ + + nseq = 0; + while (ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) + { + nseq++; + dsq = DigitizeSequence(seq, sqinfo.len); + + if (do_small) sc = P7SmallViterbi(dsq, sqinfo.len, hmm, &tr); + else sc = P7Viterbi(dsq, sqinfo.len, hmm, &tr); + + if (be_verbose) + { + printf("test sequence %d: score %.1f : %s %s\n", + nseq, sc, sqinfo.name, + sqinfo.flags & SQINFO_DESC ? sqinfo.desc : ""); + P7PrintTrace(stdout, tr, hmm, dsq); + } + + if (! TraceVerify(tr, hmm->M, sqinfo.len)) + Die("Trace verify failed on seq #%d, %s\n", nseq, sqinfo.name); + + FreeSequence(seq, &sqinfo); + P7FreeTrace(tr); + free(dsq); + } + + FreePlan7(hmm); + HMMFileClose(hmmfp); + SeqfileClose(sqfp); + + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/trace_test.hmm b/forester/archive/RIO/others/hmmer/testsuite/trace_test.hmm new file mode 100644 index 0000000..f52309a --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/trace_test.hmm @@ -0,0 +1,47 @@ +HMMER2.0 +NAME trace_test +DESC +LENG 10 +ALPH Amino +RF no +CS no +COM ./hmmbuild -F trace_test.hmm trace_test.slx +NSEQ 7 +DATE Mon Feb 2 09:14:31 1998 +XT -8455 -4 -1000 -1000 -8455 -4 -8455 -4 +NULT -4 -8455 +NULE 595 -1558 85 338 -294 453 -1158 197 249 902 -1085 -142 -21 -313 45 531 201 384 -1998 -644 +HMM A C D E F G H I K L M N P Q R S T V W Y + m->m m->i m->d i->m i->i d->m d->d b->m m->e + -585 * -1585 + 1 2806 -444 -1270 -1265 -1732 -744 -1182 -1034 -1212 -1545 -1010 -869 -1380 -1102 -1325 -156 -259 -640 -2039 -1721 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -111 -6123 -7165 -894 -1115 -701 -1378 -585 * + 2 -608 5196 -2368 -2362 -1635 -1253 -1702 -987 -2034 -1540 -1191 -1745 -1831 -1953 -1922 -934 -927 -770 -1855 -1692 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -115 -6127 -7169 -894 -1115 -701 -1378 * * + 3 -1130 -2063 3441 243 -2502 -1157 -662 -2514 -843 -2578 -2029 -96 -1658 -421 -1434 -970 -1239 -2138 -2388 -1915 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -120 -6132 -7174 -894 -1115 -701 -1378 * * + 4 -988 -1921 379 3052 -2309 -1196 -495 -2108 -350 -2194 -1612 -103 -1621 -210 -770 -862 -1042 -1799 -2207 -1742 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -126 -6138 -7180 -894 -1115 -701 -1378 * * + 5 -1602 -1340 -2512 -2455 3740 -2315 -379 -478 -2225 -175 -190 -1874 -2503 -1781 -2079 -1892 -1647 -683 210 1257 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -132 -6144 -7186 -894 -1115 -701 -1378 * * + 6 -759 -1104 -1314 -1488 -2461 3330 -1563 -2503 -1721 -2645 -2082 -1325 -1776 -1591 -1791 -959 -1094 -1922 -2199 -2280 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -140 -6152 -7194 -894 -1115 -701 -1378 * * + 7 -1192 -1547 -812 -781 -520 -1557 4586 -1881 -457 -1789 -1357 -866 -1913 -669 -600 -1231 -1258 -1678 -918 -90 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -148 -6160 -7202 -894 -1115 -701 -1378 * * + 8 -1016 -805 -2637 -2367 -591 -2470 -1853 3039 -2040 329 346 -2180 -2589 -1943 -2070 -1879 -1051 1184 -1698 -1261 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -158 -6170 -7212 -894 -1115 -701 -1378 * * + 9 -1028 -1686 -800 -442 -2171 -1521 -263 -1873 3103 -1859 -1251 -547 -1750 74 599 -1004 -972 -1620 -1812 -1528 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -170 -6182 -7224 -894 -1115 -701 -1378 * * + 10 -1369 -1199 -2542 -2295 -129 -2453 -1603 488 -1867 2607 742 -2168 -2539 -1724 -1835 -1992 -1384 130 -1284 -897 + - * * * * * * * * * * * * * * * * * * * * + - * * * * * * * * 0 +// diff --git a/forester/archive/RIO/others/hmmer/testsuite/trace_test.seq b/forester/archive/RIO/others/hmmer/testsuite/trace_test.seq new file mode 100644 index 0000000..5f5eba4 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/trace_test.seq @@ -0,0 +1,25 @@ +>seq1 Basic traceback. SNB M ECT +ACDEFGHIKL +>seq2 C-terminal tail; one CC transition +ACDEFGHIKLY +>seq3 C-terminal tail; three CC transitions +ACDEFGHIKLYYY +>seq4 N-terminal tail; one NN transition +YACDEFGHIKL +>seq5 N-terminal tail; three NN transitions +YYYACDEFGHIKL +>seq6 one JJ +ACDEFGHIKLYACDEFGHIKL +>seq7 three JJ +ACDEFGHIKLYYYACDEFGHIKL +>seq8 D->E wing unfolding +ACDEFGHIK +>seq9 B->D wing unfolding +CDEFGHIKL +>seq10 MD, DD, DM transitions +ACDEHIKL +>seq11 MI, II, IM transitions +ACDEFYYYGHIKL +>seq12 bogosity +Y + diff --git a/forester/archive/RIO/others/hmmer/testsuite/trace_test.slx b/forester/archive/RIO/others/hmmer/testsuite/trace_test.slx new file mode 100644 index 0000000..3e71587 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/trace_test.slx @@ -0,0 +1,7 @@ +seq1 ACDEFGHIKL +seq2 ACDEFGHIKL +seq3 ACDEFGHIKL +seq4 ACDEFGHIKL +seq5 ACDEFGHIKL +seq6 ACDEFGHIKL +seq7 ACDEFGHIKL diff --git a/forester/archive/RIO/others/hmmer/testsuite/viterbi_exercise.c b/forester/archive/RIO/others/hmmer/testsuite/viterbi_exercise.c new file mode 100644 index 0000000..01a9c1f --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/viterbi_exercise.c @@ -0,0 +1,166 @@ +/* viterbi_exercise.c + * SRE, Mon Mar 9 07:55:47 1998 [St. Louis] + * + * Exercise the various Viterbi algorithms, big and small. + * + * RCS $Id: viterbi_exercise.c,v 1.1.1.1 2005/03/22 08:34:50 cmzmasek Exp $ + */ + + +#include +#include +#include +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +static char banner[] = "\ +viterbi_exercise : testing of Plan7 Viterbi code"; + +static char usage[] = "\ +Usage: testdriver [-options]\n\ + Available options are:\n\ + -h : help; display this usage info\n\ + -v : be verbose\n\ +"; + +static char experts[] = "\ + --hmm : use HMM in file \n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-v", TRUE, sqdARG_NONE }, + { "--hmm", FALSE, sqdARG_STRING }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMM(s) from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + struct plan7_s *hmm; /* the HMM to search with */ + char *dsq; /* digitized target sequence */ + char *seq; + SQINFO sqinfo; + int L; /* length of dsq */ + struct p7trace_s *tr1; /* traceback */ + struct p7trace_s *tr2; /* another traceback */ + int nseq; + float sc1, sc2; /* scores */ + int config; + int i; + + int be_verbose; + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + + /*********************************************** + * Parse command line + ***********************************************/ + + be_verbose = FALSE; + hmmfile = "fn3.hmm"; + nseq = 100; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-v") == 0) be_verbose = TRUE; + else if (strcmp(optname, "--hmm") == 0) hmmfile = optarg; + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 0) + Die("Incorrect number of arguments.\n%s\n", usage); + + /*********************************************** + * Open HMM file + * Read a single HMM from it. + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, NULL)) == NULL) + Die("Failed to open HMM file %s\n%s", hmmfile, usage); + if (!HMMFileRead(hmmfp, &hmm)) + Die("Failed to read any HMMs from %s\n", hmmfile); + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", hmmfile); + Plan7Renormalize(hmm); + + /*********************************************** + * We cycle through different model configurations. + * For each configuration, we repeat 100 times: + * - generate a sequence + * - score it by Viterbi and by SmallViterbi + * - make sure they give OK and identical results + ***********************************************/ + + for (config = 1; config <= 5; config++) + { + switch (config) { + case 1: Plan7NakedConfig(hmm); break; + case 2: Plan7GlobalConfig(hmm); break; + case 3: Plan7LSConfig(hmm); break; + case 4: Plan7FSConfig(hmm, 0.5, 0.5); break; + case 5: Plan7SWConfig(hmm, 0.5, 0.5); break; + default: Die("never happens"); + } + P7Logoddsify(hmm, TRUE); + + for (i = 0; i < nseq; i++) + { + EmitSequence(hmm, &dsq, &L, NULL); + sprintf(sqinfo.name, "seq%d", i+1); + sqinfo.len = L; + sqinfo.flags = SQINFO_NAME | SQINFO_LEN; + + sc1 = P7Viterbi(dsq, L, hmm, &tr1); + sc2 = P7SmallViterbi(dsq, L, hmm, &tr2); + + if (be_verbose) + { + printf("Viterbi score: %.1f SmallViterbi: %.1f\n", sc1, sc2); + P7PrintTrace(stdout, tr1, hmm, dsq); + P7PrintTrace(stdout, tr2, hmm, dsq); + + seq = DedigitizeSequence(dsq, L); + WriteSeq(stdout, SQFILE_FASTA, seq, &sqinfo); + free(seq); + } + + if (sc1 != sc2) + Die("Different scores from normal/small Viterbi"); + + if (fabs(sc1 - P7TraceScore(hmm, dsq, tr1)) > 0.1) + Die("P7Viterbi score doesn't match its TraceScore"); + if (fabs(sc2 - P7TraceScore(hmm, dsq, tr2)) > 0.1) + Die("P7SmallViterbi score doesn't match its TraceScore"); + + if (! TraceVerify(tr1, hmm->M, L)) + Die("TraceVerify() failed for a P7Viterbi trace"); + if (! TraceVerify(tr2, hmm->M, L)) + Die("TraceVerify() failed for a P7SmallViterbi trace"); + + if (tr1->tlen != tr2->tlen) + Die("Trace lengths differ for normal/small Viterbi"); + if (! TraceCompare(tr1, tr2)) + Die("Different traces from normal/small Viterbi"); + + P7FreeTrace(tr1); + P7FreeTrace(tr2); + free(dsq); + } + } + + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.c b/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.c new file mode 100644 index 0000000..232ca9b --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.c @@ -0,0 +1,150 @@ +/* weeviterbi_test.c + * Wed Mar 4 17:30:39 1998 + * + * Test driver for Myers/Miller/Hirschberg linear memory Viterbi tracebacks. + * + * RCS $Id: weeviterbi_test.c,v 1.1.1.1 2005/03/22 08:34:47 cmzmasek Exp $ + */ + +#include +#include +#include + +#include "structs.h" +#include "funcs.h" +#include "globals.h" +#include "squid.h" + +static char banner[] = "\ +weeviterbi_test : testing of Plan7 Myers/Miller/Hirschberg Viterbi traceback code"; + +static char usage[] = "\ +Usage: testdriver [-options]\n\ + Available options are:\n\ + -h : help; display this usage info\n\ + -v : be verbose\n\ +"; + +static char experts[] = "\ + --hmm : use HMM in file \n\ + --seq : use seq(s) in file \n\ +\n"; + +static struct opt_s OPTIONS[] = { + { "-h", TRUE, sqdARG_NONE }, + { "-v", TRUE, sqdARG_NONE }, + { "--hmm", FALSE, sqdARG_STRING }, + { "--seq", FALSE, sqdARG_STRING }, +}; +#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s)) + +int +main(int argc, char **argv) +{ + char *hmmfile; /* file to read HMM(s) from */ + HMMFILE *hmmfp; /* opened hmmfile for reading */ + char *seqfile; /* file to read target sequence(s) from */ + SQFILE *sqfp; /* opened seqfile for reading */ + char *seq; /* target sequence */ + SQINFO sqinfo; /* optional info for seq */ + char *dsq; /* digitized target sequence */ + struct plan7_s *hmm; /* HMM to search with */ + struct p7trace_s *t1; /* standard Viterbi traceback */ + struct p7trace_s *t2; /* WeeViterbi traceback */ + int nseq; + float sc1,sc2; /* scores from Viterbi, WeeViterbi */ + + int be_verbose; + + char *optname; /* name of option found by Getopt() */ + char *optarg; /* argument found by Getopt() */ + int optind; /* index in argv[] */ + + /*********************************************** + * Parse command line + ***********************************************/ + + be_verbose = FALSE; + hmmfile = "weeviterbi_test.hmm"; + seqfile = "weeviterbi_test.seq"; + + while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, + &optind, &optname, &optarg)) { + if (strcmp(optname, "-v") == 0) be_verbose = TRUE; + else if (strcmp(optname, "--hmm") == 0) hmmfile = optarg; + else if (strcmp(optname, "--seq") == 0) seqfile = optarg; + else if (strcmp(optname, "-h") == 0) { + Banner(stdout, banner); + puts(usage); + puts(experts); + exit(0); + } + } + if (argc - optind != 0) + Die("Incorrect number of arguments.\n%s\n", usage); + + /*********************************************** + * Open test sequence file + ***********************************************/ + + if ((sqfp = SeqfileOpen(seqfile, SQFILE_UNKNOWN, "BLASTDB")) == NULL) + Die("Failed to open sequence database file %s\n%s\n", seqfile, usage); + + /*********************************************** + * Open HMM file + * Read a single HMM from it. (Config HMM, if necessary). + ***********************************************/ + + if ((hmmfp = HMMFileOpen(hmmfile, NULL)) == NULL) + Die("Failed to open HMM file %s\n%s", hmmfile, usage); + if (!HMMFileRead(hmmfp, &hmm)) + Die("Failed to read any HMMs from %s\n", hmmfile); + if (hmm == NULL) + Die("HMM file %s corrupt or in incorrect format? Parse failed", hmmfile); + P7Logoddsify(hmm, TRUE); + + /*********************************************** + * Search HMM against each sequence + ***********************************************/ + + nseq = 0; + while (ReadSeq(sqfp, sqfp->format, &seq, &sqinfo)) + { + nseq++; + dsq = DigitizeSequence(seq, sqinfo.len); + + sc1 = P7Viterbi(dsq, sqinfo.len, hmm, &t1); + sc2 = P7WeeViterbi(dsq, sqinfo.len, hmm, &t2); + + if (be_verbose) + { + printf("test sequence %d: %s %s\n", + nseq, sqinfo.name, + sqinfo.flags & SQINFO_DESC ? sqinfo.desc : ""); + printf("** P7Viterbi trace:\n"); + P7PrintTrace(stdout, t1, hmm, dsq); + printf("** P7WeeViterbi trace:\n"); + P7PrintTrace(stdout, t2, hmm, dsq); + } + + if (! TraceVerify(t1, hmm->M, sqinfo.len)) + Die("Trace verify failed on Viterbi for seq #%d, %s\n", nseq, sqinfo.name); + if (! TraceVerify(t2, hmm->M, sqinfo.len)) + Die("Trace verify failed on WeeViterbi for seq #%d, %s\n", nseq, sqinfo.name); + if (sc1 != sc2) + Die("Scores for the two Viterbi implementations are unequal (%.1f,%.1f)", sc1, sc2); + if (! TraceCompare(t1, t2)) + Die("WeeViterbi() trace is not identical to Viterbi() trace"); + + FreeSequence(seq, &sqinfo); + P7FreeTrace(t1); + P7FreeTrace(t2); + free(dsq); + } + + FreePlan7(hmm); + SeqfileClose(sqfp); + HMMFileClose(hmmfp); + + return EXIT_SUCCESS; +} diff --git a/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.hmm b/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.hmm new file mode 100644 index 0000000..ed56c05 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.hmm @@ -0,0 +1,233 @@ +HMMER2.0 +NAME rrm +DESC +LENG 72 +ALPH Amino +RF no +CS no +COM hmmbuild weeviterbi_test.hmm /nfs/w4/Pfam/Seed/rrm.seed +NSEQ 70 +DATE Wed Mar 4 17:40:23 1998 +XT -8455 -4 -1000 -1000 -8455 -4 -8455 -4 +NULT -4 -8455 +NULE 595 -1558 85 338 -294 453 -1158 197 249 902 -1085 -142 -21 -313 45 531 201 384 -1998 -644 +HMM A C D E F G H I K L M N P Q R S T V W Y + m->m m->i m->d i->m i->i d->m d->d b->m m->e + -21 * -6129 + 1 -1234 -371 -8214 -7849 -5304 -8003 -7706 2384 -7769 2261 -681 -7660 -7694 -7521 -7816 -7346 -5543 1527 -6974 -6639 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 -21 * + 2 -3634 -3460 -5973 -5340 3521 -2129 -4036 -831 -2054 -1257 -2663 -4822 -5229 -4557 -4735 -1979 -1569 -1476 -3893 3439 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 * * + 3 -5570 838 -8268 -7958 -5637 -8152 -8243 2427 -7947 -461 -539 -7805 -7843 -7878 -8124 -7550 -5559 3130 -7481 -7000 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 * * + 4 -1146 -4797 -1564 -2630 -1480 2769 -2963 -1850 992 -4812 -3887 737 -4397 -120 793 -205 -1019 -4418 -4981 -1059 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 * * + 5 -5242 -7035 445 -3538 -7284 1773 -4583 -7166 -4676 -7046 -6312 3633 -1651 -1262 -849 -1278 -5287 -6650 -7228 -291 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 * * + 6 -6898 -6238 -9292 -8703 -410 -9176 -7772 820 -8535 3071 -753 -8917 -8033 -7171 -7955 -8614 -6722 5 -6136 -6414 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 278 394 45 96 359 117 -369 -294 -249 + - -33 -6025 -12326 -153 -3315 -701 -1378 * * + 7 -5 -5297 178 -2982 -5685 -2278 -528 -5452 -1615 -5394 -4488 1396 3136 -3022 -3659 780 976 -4981 -5565 -4854 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12327 -894 -1115 -701 -1378 * * + 8 -3329 -4799 -805 543 789 -4303 572 -4868 140 -1087 -3888 -603 1691 530 183 -162 293 -2124 2317 2037 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11284 -12327 -894 -1115 -701 -1378 * * + 9 -373 -4801 2182 1353 -1426 44 -407 -1928 -366 -4817 -3891 1263 -4395 -1080 -666 295 50 -1947 -4985 397 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 10 450 1883 -5953 -5317 -1256 -1301 -4027 1322 -1847 -283 1542 -4802 -5206 -1502 -4713 -4241 2143 1615 -3893 -3551 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 11 -1786 -4835 1027 -807 -5155 -1278 -2989 -4907 -410 -4850 -3924 957 -4421 -943 -250 670 3048 -4456 -5017 -4333 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 12 -3329 -4802 1324 2670 -5123 -4302 -2961 -4874 732 -2424 -3891 -457 -262 553 250 -694 -989 -4424 1772 -1014 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 13 -325 -4802 1515 2286 -5123 -2017 868 -4874 260 -2865 -1087 -2938 -4395 2006 -810 492 -1754 -4424 -4985 -4302 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 14 -337 -4801 2075 1854 -5121 -723 -567 -1924 73 -634 -194 -1227 -4396 1588 -3049 -212 -414 -4422 -5 -4302 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 15 -6843 -6192 -9252 -8675 -481 -9132 -7773 1557 -8511 2856 467 -8869 -8024 -7180 -7953 -8566 -6676 459 -6154 -6421 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 16 5 -4654 -1525 936 444 -4347 -3013 -1809 2193 -441 -3760 -441 -4438 -2577 1775 -91 -3285 -1104 180 -259 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 17 -97 -4802 2341 1548 -5123 -2042 -2961 -4874 -347 -2479 -194 -5 -726 1566 807 -1858 42 -4424 -4985 -4302 + - -146 -501 232 42 -381 398 105 -627 210 -463 -721 275 393 44 95 361 116 -370 -295 -242 + - -45 -5457 -12327 -1928 -440 -701 -1378 * * + 18 358 -3435 -5945 -1175 1490 -5154 1309 1157 -1944 1759 -387 -4797 -5204 -4530 -1684 -4238 -376 166 -3893 1330 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 19 -2191 733 -7910 -7364 4360 -7323 -5649 -1557 -7016 -750 -407 -6877 -7039 -6263 -6681 -6482 -5572 -4211 -4950 -1019 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12328 -894 -1115 -701 -1378 * * + 20 -83 -4801 -3176 698 -5121 1566 -2961 -1977 942 -4817 -3890 -239 -4396 582 256 1807 -874 -1745 -4984 -1334 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 21 -1216 -4802 -289 1083 -1452 -655 -584 -4874 1345 -4818 -3891 964 1488 2130 -3049 -310 107 -2012 -4985 -1334 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 22 -45 1344 -1667 -843 2933 -2146 400 582 -4479 -1948 -2709 -506 -5117 -436 -1764 -4119 -3523 -96 215 2616 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 23 -556 -4294 -4426 -1796 -273 3377 -4149 -4100 -4273 -2279 -3695 -562 298 -4067 -4575 -1940 -3954 -3921 -4866 -77 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 24 -376 -4801 -143 1004 -1426 805 279 -1771 821 -1486 -3890 -527 2002 126 45 -287 -1679 -617 -4985 -4302 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 25 -3608 -178 -1585 -1970 660 -5154 -4024 2773 -894 -985 -386 -4796 -1707 -4528 -4707 -609 -1823 2145 -3893 -1100 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 26 -673 -173 -3429 1042 -4598 -2161 -3110 535 1570 9 283 -508 -4517 -255 382 -1924 313 1407 -4706 -4127 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 27 -1211 -4799 1518 768 -5119 -1218 -441 -945 -1312 -2414 -587 909 -4396 -1010 534 1815 78 -487 -4983 -128 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 28 1271 2236 -5933 -5299 810 -2278 -651 1901 -1970 -221 -2639 -1497 -5203 -4524 -629 -638 -1577 1521 -3894 -1008 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 29 -1909 -4796 153 441 -1513 -4304 -599 -1894 1709 25 -3886 689 -1498 243 1438 -189 -879 380 -126 -255 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12329 -894 -1115 -701 -1378 * * + 30 -1277 -3441 -5893 -1776 -1155 -5147 -513 1829 -1993 1189 1888 -1484 -703 -4503 -1652 -1974 -3546 2209 -3898 -3554 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -11287 -12329 -894 -1115 -701 -1378 * * + 31 -1299 746 -5893 -1992 -1190 -5147 -524 1691 424 -60 2330 -4774 111 -4503 -132 248 -1571 1419 -3898 -19 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -11287 -12329 -894 -1115 -701 -1378 * * + 32 -3370 -4477 -3387 50 -560 -1979 -449 -51 1375 -681 233 1068 701 -1040 1343 -1845 543 -480 -10 1246 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -240 -11287 -2797 -894 -1115 -701 -1378 * * + 33 -3122 -4595 3395 -593 -4916 -1399 589 -1433 360 -4611 -290 780 -1313 35 -1369 -1782 -3061 -1712 -4778 -4095 + - -151 -504 236 42 -380 396 122 -618 211 -468 -714 274 392 45 98 355 123 -373 -299 -248 + - -841 -2976 -1709 -1966 -426 -3668 -118 * * + 34 -452 -4116 -568 -735 -4435 -1350 -2280 -1270 1458 -4131 792 -2257 1620 415 1996 479 -765 -1327 -4300 -538 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -10529 -11571 -894 -1115 -1180 -840 * * + 35 272 -4448 -1054 1495 -1086 -283 -2616 -726 380 -1231 -3538 1286 -4050 1395 -988 154 68 50 -4633 -876 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -10906 -11948 -894 -1115 -2229 -346 * * + 36 -3050 -4521 457 -2349 -4841 -1681 65 -1545 404 -2305 -3610 996 -1241 -714 -1055 -351 3167 -4143 -4705 -4022 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -10981 -12024 -894 -1115 -2036 -403 * * + 37 -943 -4583 277 -486 -4904 2690 -181 -1421 829 -2551 -758 866 -4177 -751 11 -804 -1361 -4205 -4766 -4084 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11049 -12091 -894 -1115 -2632 -254 * * + 38 -1544 -4606 -1206 -627 -1238 -1111 -220 -4677 1841 -1463 -537 -311 146 1310 2236 252 -1424 -1820 -4789 -1025 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11074 -12116 -894 -1115 -1795 -490 * * + 39 -871 902 -3255 -2704 -1212 -2110 605 -4156 -647 -1293 101 192 1442 -2552 91 2587 -171 -3858 -4584 -3996 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11128 -12170 -894 -1115 -1064 -938 * * + 40 -3251 -4717 -597 -2552 -1539 -1882 45 -4784 2499 -1083 -3807 -1125 -312 -892 2672 -1497 -649 -1932 -4902 -1040 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11202 -12244 -894 -1115 -158 -3269 * * + 41 -4425 -5751 -1160 -3492 -6118 3496 -552 -1896 -1318 -2596 -4883 -434 -258 -3375 -548 -4283 -4348 -5409 -5833 -5262 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11288 -12330 -894 -1115 -701 -1378 * * + 42 -3608 -96 -1795 -5308 3204 -5154 498 -1086 -989 -1857 1406 -4797 -5204 -807 -4709 -4238 -268 -366 187 3035 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11288 -12330 -894 -1115 -701 -1378 * * + 43 2573 2359 -7700 -8052 -7623 2634 -6965 -7447 -7655 -7712 -6731 -6019 -5985 -7072 -7238 -2014 -4755 -2203 -7845 -7842 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11288 -12330 -894 -1115 -701 -1378 * * + 44 -1896 -3552 -6072 -5447 4093 -5277 -4115 -1389 -5044 -1849 -2748 -4920 -5327 -4660 -4842 -2020 -787 -772 -3948 1996 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11288 -12330 -894 -1115 -701 -1378 * * + 45 -2123 1258 -8228 -7927 -5768 -8106 -8270 1951 -7921 -982 -4434 -7761 -7830 -7926 -8131 -7503 -5516 3355 -7605 -7039 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11288 -12331 -894 -1115 -701 -1378 * * + 46 -1158 -4801 136 2359 -5122 -4302 -508 -644 437 -2559 -3890 628 -4395 -213 172 18 1464 -2067 -4985 -1086 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12331 -894 -1115 -701 -1378 * * + 47 -7925 -6836 -8294 -8655 4067 -8176 -4357 -6786 -8211 -6080 795 -6785 -8028 -6925 -7569 -7427 -7774 -6956 -3603 3066 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12331 -894 -1115 -701 -1378 * * + 48 -633 -4801 851 2019 -1639 -2148 879 -1118 1178 -2414 -3891 -481 -71 241 -1485 -232 744 -569 -4985 -4302 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12331 -894 -1115 -701 -1378 * * + 49 -3331 -4805 2054 434 -5126 -1882 -432 -4877 377 -4821 -3894 2009 -4398 -269 -1336 1291 1198 -1970 -4988 -4305 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12331 -894 -1115 -701 -1378 * * + 50 -638 -4800 -1786 1796 -5120 -1884 1628 -1952 812 -444 -621 -1191 1228 530 -672 8 -873 45 -4983 -276 + - -149 -500 232 43 -381 398 105 -627 210 -466 -721 277 393 45 95 359 119 -370 -295 -239 + - -38 -6076 -12331 -1893 -453 -701 -1378 * * + 51 243 -4801 1218 2315 -5122 -1551 -485 -1640 -795 -2479 -783 -420 -685 -1027 1035 415 -3268 -631 -23 -4302 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12332 -894 -1115 -701 -1378 * * + 52 415 694 2467 1155 -1401 -4334 -490 -1800 -2599 -4689 -637 -384 -1759 -12 -3098 1144 -834 -569 -4907 -271 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 53 2846 -3442 -1698 -5254 -979 -5146 -4014 -750 -4864 -773 1875 -4771 -5197 -1456 -1779 -127 -329 428 -3898 -3555 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 54 581 -4801 1239 1462 -5122 -1606 -432 -367 1251 -1623 -3891 335 -4395 1283 -110 -3209 753 -1920 -4985 -4302 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 55 686 -4798 937 304 -1378 -4303 -437 -1924 2219 -1669 -621 828 -4396 -1012 742 0 -1608 -1126 -4982 -1015 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 56 3420 863 -7680 -7410 -5526 -6323 -6681 -57 -7168 -2455 -4425 -6591 -6708 -6875 -7058 -2256 -4981 -4 -6573 -6193 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 57 -2038 -3436 -5943 -5308 -1145 -5154 -4025 2255 423 1498 1203 -4797 -1707 -478 -1267 -2117 -3548 1450 -3893 -931 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -18 -11291 -12333 -894 -1115 -701 -1378 * * + 58 622 -4802 1764 1486 -5123 -4302 -2961 -1060 334 -4818 -3891 -420 -4396 1293 1148 487 -3268 -1087 -4985 -429 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -102 -11291 -4156 -894 -1115 -701 -1378 * * + 59 1265 -231 -1498 1351 -5045 -262 -355 -4796 922 -1073 -3813 778 -4318 877 -34 53 386 -2030 289 -4225 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -18 -11207 -12249 -894 -1115 -160 -3250 * * + 60 -684 813 -5723 -473 532 -2124 -3981 -2958 -121 2114 2840 -1421 -5174 -4409 -926 -4196 -1685 -376 -3915 497 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -18 -11291 -12333 -894 -1115 -701 -1378 * * + 61 -1812 -4803 1626 -749 -515 -1133 -415 -4875 -1294 -4819 -3892 3181 -793 1470 -1377 -246 -3268 -4425 -4986 -193 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -18 -11291 -12333 -894 -1115 -701 -1378 * * + 62 -1812 -4808 -1465 33 -1509 2998 1583 -4879 122 -4823 -3897 972 -4400 -1078 -3055 -1613 -682 -4429 -4991 -1114 + - -149 -500 232 43 -378 398 105 -627 212 -466 -721 275 393 45 98 359 117 -367 -295 -250 + - -98 -4229 -12334 -49 -4901 -701 -1378 * * + 63 -676 -4701 -742 -1422 825 -589 -545 255 1702 -2571 812 -2986 -4424 796 418 -221 1302 -1179 -4912 1028 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -19 -11292 -12334 -894 -1115 -701 -1378 * * + 64 -3341 -4695 350 1378 -1551 -1973 -2998 477 1265 78 273 -1163 21 504 -1507 -1108 282 114 -19 473 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -19 -11292 -12334 -894 -1115 -701 -1378 * * + 65 -3605 -3444 -949 -2090 2356 -1177 -4010 1410 -1703 1341 -404 -1673 -747 -4487 -4679 -2139 -1048 1197 -3900 411 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -19 -11292 -12334 -894 -1115 -701 -1378 * * + 66 -655 -539 1179 279 -1324 1202 -2962 -1895 147 -682 1298 1427 -2056 608 756 -1119 -1893 -4419 -4982 140 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -19 -11292 -12335 -894 -1115 -701 -1378 * * + 67 -1814 -4814 166 -2636 -5135 2921 -568 -4885 -1333 -2415 -3903 1495 -4406 -312 -619 602 -1672 -4436 -4997 -4314 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -20 -11293 -12335 -894 -1115 -701 -1378 * * + 68 -3329 1217 -624 -797 -1594 -4303 1580 -4872 2069 -2414 -3890 617 -4396 283 2449 -560 -267 -2067 -4984 -1334 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -20 -11293 -12335 -894 -1115 -701 -1378 * * + 69 108 566 -1460 747 -1608 -4306 -2965 -30 1407 -2607 -3878 346 1033 -336 863 -1038 745 617 -4975 -4296 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -20 -11293 -12335 -894 -1115 -701 -1378 * * + 70 -1318 -3465 -283 -172 -3423 -2053 -3974 1957 -4721 1761 1425 -4678 -1762 -4391 -1578 -1974 -1561 1341 -3918 -3570 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -20 -11293 -12336 -894 -1115 -701 -1378 * * + 71 -1165 -4790 -240 -275 -5105 -4306 1035 -2009 1665 -395 707 -1334 -218 -188 1891 -1077 -383 404 110 348 + - -149 -500 233 43 -381 398 106 -626 210 -464 -720 275 394 45 96 359 117 -369 -294 -249 + - -43 -6001 -12336 -150 -3342 -701 -1378 * * + 72 -1929 1218 -1535 -1647 -3990 -4677 -3410 1725 207 -1481 -3117 -3608 -810 -1118 -743 -1942 428 2687 -4325 -3869 + - * * * * * * * * * * * * * * * * * * * * + - * * * * * * * * 0 +// diff --git a/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.seq b/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.seq new file mode 100644 index 0000000..3a8750f --- /dev/null +++ b/forester/archive/RIO/others/hmmer/testsuite/weeviterbi_test.seq @@ -0,0 +1,10 @@ +>RU1A_HUMAN U1 SMALL NUCLEAR RIBONUCLEOPROTEIN A (U1 SNRNP A PROTEIN). +MAVPETRPNHTIYINNLNEKIKKDELKKSLYAIFSQFGQILDILVSRSLK +MRGQAFVIFKEVSSATNALRSMQGFPFYDKPMRIQYAKTDSDIIAKMKGT +FVERDRKREKRKPKSQETPATKKAVQGGGATPVVGAVQGPVPGMPPMTQA +PRIMHHMPGQPPYMPPPGMIPPPGLAPGQIPPGAMPPQQLMPGQMPPAQP +>RU1A_HUMAN U1 SMALL NUCLEAR RIBONUCLEOPROTEIN A (U1 SNRNP A PROTEIN). +TFVERDRKREKRKPKSQETPATKKAVQGGGATPVVGAVQGPVPGMPPMTQ +APRIMHHMPGQPPYMPPPGMIPPPGLAPGQIPPGAMPPQQLMPGQMPPAQ +PLSENPPNHILFLTNLPEETNELMLSMLFNQFPGFKEVRLVPGRHDIAFV +EFDNEVQAGAARDALQGFKITQNNAMKISFAKK diff --git a/forester/archive/RIO/others/hmmer/tutorial/7LES_DROME b/forester/archive/RIO/others/hmmer/tutorial/7LES_DROME new file mode 100644 index 0000000..885cccf --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/7LES_DROME @@ -0,0 +1,138 @@ +ID 7LES_DROME STANDARD; PRT; 2554 AA. +AC P13368; +DT 01-JAN-1990 (REL. 13, CREATED) +DT 01-JAN-1990 (REL. 13, LAST SEQUENCE UPDATE) +DT 01-NOV-1995 (REL. 32, LAST ANNOTATION UPDATE) +DE SEVENLESS PROTEIN (EC 2.7.1.112). +GN SEV. +OS DROSOPHILA MELANOGASTER (FRUIT FLY). +OC EUKARYOTA; METAZOA; ARTHROPODA; INSECTA; DIPTERA. +RN [1] +RP SEQUENCE FROM N.A. +RC STRAIN=CANTON-S; +RX MEDLINE; 88282538. +RA BASLER K., HAFEN E.; +RL CELL 54:299-311(1988). +RN [2] +RP SEQUENCE FROM N.A. +RC STRAIN=OREGON-R; +RX MEDLINE; 88329706. +RA BOWTELL D.L.L., SIMON M.A., RUBIN G.M.; +RL GENES DEV. 2:620-634(1988). +RN [3] +RP IDENTIFICATION OF FN-III REPEATS. +RX MEDLINE; 90199889. +RA NORTON P.A., HYNES R.O., RESS D.J.G.; +RL CELL 61:15-16(1990). +CC -!- FUNCTION: RECEPTOR FOR AN EXTRACELLULAR SIGNAL REQUIRED TO +CC INSTRUCT A CELL TO DIFFERENTIATE INTO A R7 PHOTORECEPTOR. THE +CC LIGAND FOR SEV IS THE BOSS (BRIDE OF SEVENLESS) PROTEIN ON THE +CC SURFACE OF THE NEIGHBORING R8 CELL. +CC -!- CATALYTIC ACTIVITY: ATP + A PROTEIN TYROSINE = ADP + +CC PROTEIN TYROSINE PHOSPHATE. +CC -!- SUBUNIT: MAY FORM A COMPLEX WITH DRK AND SOS. +CC -!- SIMILARITY: BELONGS TO THE INSULIN RECEPTOR FAMILY OF TYROSINE- +CC PROTEIN KINASES. +CC -!- SIMILARITY: CONTAINS SEVEN FIBRONECTIN TYPE III-LIKE DOMAINS. +CC -!- CAUTION: UNCLEAR WHETHER THE POTENTIAL MEMBRANE SPANNING REGION +CC NEAR THE N-TERMINUS IS PRESENT AS A TRANSMEMBRANE DOMAIN IN THE +CC NATIVE PROTEIN OR SERVES AS A CLEAVED SIGNAL SEQUENCE. +DR EMBL; X13666; G8579; ALT_INIT. +DR EMBL; J03158; G158419; -. +DR PIR; A28912; TVFF7L. +DR FLYBASE; FBGN0003366; SEV. +DR PROSITE; PS00107; PROTEIN_KINASE_ATP. +DR PROSITE; PS00109; PROTEIN_KINASE_TYR. +DR PROSITE; PS00239; RECEPTOR_TYR_KIN_II. +DR PROSITE; PS50011; PROTEIN_KINASE_DOM. +KW TRANSFERASE; TYROSINE-PROTEIN KINASE; TRANSMEMBRANE; ATP-BINDING; +KW PHOSPHORYLATION; RECEPTOR; VISION; REPEAT. +FT DOMAIN 1 2123 EXTRACELLULAR (POTENTIAL). +FT TRANSMEM 102 122 POTENTIAL. +FT TRANSMEM 2124 2147 POTENTIAL. +FT DOMAIN 2148 2554 CYTOPLASMIC (POTENTIAL). +FT DOMAIN 311 431 FIBRONECTIN TYPE-III. +FT DOMAIN 436 528 FIBRONECTIN TYPE-III. +FT DOMAIN 822 921 FIBRONECTIN TYPE-III. +FT DOMAIN 1298 1392 FIBRONECTIN TYPE-III. +FT DOMAIN 1680 1794 FIBRONECTIN TYPE-III. +FT DOMAIN 1797 1897 FIBRONECTIN TYPE-III. +FT DOMAIN 1898 1988 FIBRONECTIN TYPE-III. +FT DOMAIN 2038 2046 POLY-ARG. +FT DOMAIN 2209 2485 PROTEIN KINASE. +FT NP_BIND 2215 2223 ATP (BY SIMILARITY). +FT BINDING 2242 2242 ATP (BY SIMILARITY). +FT MUTAGEN 2242 2242 K->M: INACTIVATES THE PROTEIN. +FT MOD_RES 2380 2380 PHOSPHORYLATION (AUTO-) (BY SIMILARITY). +FT CARBOHYD 30 30 POTENTIAL. +FT CARBOHYD 129 129 POTENTIAL. +FT CARBOHYD 481 481 POTENTIAL. +FT CARBOHYD 505 505 POTENTIAL. +FT CARBOHYD 617 617 POTENTIAL. +FT CARBOHYD 647 647 POTENTIAL. +FT CARBOHYD 966 966 POTENTIAL. +FT CARBOHYD 1228 1228 POTENTIAL. +FT CARBOHYD 1313 1313 POTENTIAL. +FT CARBOHYD 1353 1353 POTENTIAL. +FT CARBOHYD 1550 1550 POTENTIAL. +FT CARBOHYD 1557 1557 POTENTIAL. +FT CARBOHYD 1639 1639 POTENTIAL. +FT CARBOHYD 1725 1725 POTENTIAL. +FT CARBOHYD 1756 1756 POTENTIAL. +FT CARBOHYD 1804 1804 POTENTIAL. +FT CARBOHYD 1889 1889 POTENTIAL. +FT CARBOHYD 1947 1947 POTENTIAL. +FT CARBOHYD 2073 2073 POTENTIAL. +FT VARIANT 392 392 M -> V. +FT VARIANT 1668 1668 A -> V. +FT VARIANT 1703 1703 N -> H. +FT VARIANT 1730 1730 R -> K. +FT VARIANT 1731 1731 G -> E. +FT VARIANT 1741 1741 V -> M. +FT VARIANT 2271 2271 R -> C. +FT CONFLICT 1823 1823 E -> Q (IN REF. 2). +SQ SEQUENCE 2554 AA; 287107 MW; 1143D891 CRC32; + MTMFWQQNVD HQSDEQDKQA KGAAPTKRLN ISFNVKIAVN VNTKMTTTHI NQQAPGTSSS + SSNSQNASPS KIVVRQQSSS FDLRQQLARL GRQLASGQDG HGGISTILII NLLLLILLSI + CCDVCRSHNY TVHQSPEPVS KDQMRLLRPK LDSDVVEKVA IWHKHAAAAP PSIVEGIAIS + SRPQSTMAHH PDDRDRDRDP SEEQHGVDER MVLERVTRDC VQRCIVEEDL FLDEFGIQCE + KADNGEKCYK TRCTKGCAQW YRALKELESC QEACLSLQFY PYDMPCIGAC EMAQRDYWHL + QRLAISHLVE RTQPQLERAP RADGQSTPLT IRWAMHFPEH YLASRPFNIQ YQFVDHHGEE + LDLEQEDQDA SGETGSSAWF NLADYDCDEY YMCEILEALI PYTQYRFRFE LPFGENRDEV + LYSPATPAYQ TPPEGAPISA PVIEHLMGLD DSHLAVHWHP GRFTNGPIEG YRLRLSSSEG + NATSEQLVPA GRGSYIFSQL QAGTNYTLAL SMINKQGEGP VAKGFVQTHS ARNEKPAKDL + TESVLLVGRR AVMWQSLEPA GENSMIYQSQ EELADIAWSK REQQLWLLNV HGELRSLKFE + SGQMVSPAQQ LKLDLGNISS GRWVPRRLSF DWLHHRLYFA MESPERNQSS FQIISTDLLG + ESAQKVGESF DLPVEQLEVD ALNGWIFWRN EESLWRQDLH GRMIHRLLRI RQPGWFLVQP + QHFIIHLMLP QEGKFLEISY DGGFKHPLPL PPPSNGAGNG PASSHWQSFA LLGRSLLLPD + SGQLILVEQQ GQAASPSASW PLKNLPDCWA VILLVPESQP LTSAGGKPHS LKALLGAQAA + KISWKEPERN PYQSADAARS WSYELEVLDV ASQSAFSIRN IRGPIFGLQR LQPDNLYQLR + VRAINVDGEP GEWTEPLAAR TWPLGPHRLR WASRQGSVIH TNELGEGLEV QQEQLERLPG + PMTMVNESVG YYVTGDGLLH CINLVHSQWG CPISEPLQHV GSVTYDWRGG RVYWTDLARN + CVVRMDPWSG SRELLPVFEA NFLALDPRQG HLYYATSSQL SRHGSTPDEA VTYYRVNGLE + GSIASFVLDT QQDQLFWLVK GSGALRLYRA PLTAGGDSLQ MIQQIKGVFQ AVPDSLQLLR + PLGALLWLER SGRRARLVRL AAPLDVMELP TPDQASPASA LQLLDPQPLP PRDEGVIPMT + VLPDSVRLDD GHWDDFHVRW QPSTSGGNHS VSYRLLLEFG QRLQTLDLST PFARLTQLPQ + AQLQLKISIT PRTAWRSGDT TRVQLTTPPV APSQPRRLRV FVERLATALQ EANVSAVLRW + DAPEQGQEAP MQALEYHISC WVGSELHEEL RLNQSALEAR VEHLQPDQTY HFQVEARVAA + TGAAAGAASH ALHVAPEVQA VPRVLYANAE FIGELDLDTR NRRRLVHTAS PVEHLVGIEG + EQRLLWVNEH VELLTHVPGS APAKLARMRA EVLALAVDWI QRIVYWAELD ATAPQAAIIY + RLDLCNFEGK ILQGERVWST PRGRLLKDLV ALPQAQSLIW LEYEQGSPRN GSLRGRNLTD + GSELEWATVQ PLIRLHAGSL EPGSETLNLV DNQGKLCVYD VARQLCTASA LRAQLNLLGE + DSIAGQLAQD SGYLYAVKNW SIRAYGRRRQ QLEYTVELEP EEVRLLQAHN YQAYPPKNCL + LLPSSGGSLL KATDCEEQRC LLNLPMITAS EDCPLPIPGV RYQLNLTLAR GPGSEEHDHG + VEPLGQWLLG AGESLNLTDL LPFTRYRVSG ILSSFYQKKL ALPTLVLAPL ELLTASATPS + PPRNFSVRVL SPRELEVSWL PPEQLRSESV YYTLHWQQEL DGENVQDRRE WEAHERRLET + AGTHRLTGIK PGSGYSLWVQ AHATPTKSNS SERLHVRSFA ELPELQLLEL GPYSLSLTWA + GTPDPLGSLQ LECRSSAEQL RRNVAGNHTK MVVEPLQPRT RYQCRLLLGY AATPGAPLYH + GTAEVYETLG DAPSQPGKPQ LEHIAEEVFR VTWTAARGNG APIALYNLEA LQARSDIRRR + RRRRRRNSGG SLEQLPWAEE PVVVEDQWLD FCNTTELSCI VKSLHSSRLL LFRVRARSLE + HGWGPYSEES ERVAEPFVSP EKRGSLVLAI IAPAAIVSSC VLALVLVRKV QKRRLRAKKL + LQQSRPSIWS NLSTLQTQQQ LMAVRNRAFS TTLSDADIAL LPQINWSQLK LLRFLGSGAF + GEVYEGQLKT EDSEEPQRVA IKSLRKGASE FAELLQEAQL MSNFKHENIV RLVGICFDTE + SISLIMEHME AGDLLSYLRA ARATSTQEPQ PTAGLSLSEL LAMCIDVANG CSYLEDMHFV + HRDLACRNCL VTESTGSTDR RRTVKIGDFG LARDIYKSDY YRKEGEGLLP VRWMSPESLV + DGLFTTQSDV WAFGVLCWEI LTLGQQPYAA RNNFEVLAHV KEGGRLQQPP MCTEKLYSLL + LLCWRTDPWE RPSFRRCYNT LHAISTDLRR TQMASATADT VVSCSRPEFK VRFDGQPLEE + HREHNERPED ENLTLREVPL KDKQLYANEG VSRL +// diff --git a/forester/archive/RIO/others/hmmer/tutorial/Artemia.fa b/forester/archive/RIO/others/hmmer/tutorial/Artemia.fa new file mode 100644 index 0000000..339a71b --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/Artemia.fa @@ -0,0 +1,48 @@ +>S13421 S13421 GLOBIN - BRINE SHRIMP +DKATIKRTWATVTDLPSFGRNVFLSVFAAK +PEYKNLFVEFRNIPASELASSERLLYHGGR +VLSSIDEAIAGIDTPDRAVKTLLALGERHI +SRGTVRRHFEAFSYAFIDELKQRGVESADL +AAWRRGWDNIVNVLEAGLLRRQIDLEVTGL +SCVDVANIQESWSKVSGDLKTTGSVVFQRM +INGHPEYQQLFRQFRDVDLDKLGESNSFVA +HVFRVVAAFDGIIHELDNNQFIVSTLKKLG +EQHIARGTDISHFQNFRVTLLEYLKENGMN +GAQKASWNKAFDAFEKYISMGLSSLKRVDP +ITGLSGLEKNAILSTWGKVRGNLQEVGKAT +FGKLFTAHPEYQQMFRFSQGMPLASLVESP +KFAAHTQRVVSALDQTLLALNRPSDFVYMI +KELGLDHINRGTDRSHFENYQVVFIEYLKE +TLGDSLDEFTVKSFNHVFEVIISFLNEGLR +QADIVDPVTHLTGRQKEMIKASWSKARTDL +RSLGQELFMRMFKAHPEYQTLFVNKGFADV +PLVSLREDERFISHMANVLGGFDTLLQNLD +ESSYFIYSLRNLGDAHIQRKAGTQHFRSFE +AILIPILQESQGLDAASVEAWKKFFDVSIG +VIAQGLKVATSEEADPVTGLYGKEIVALRQ +AFAAVTPRNVEIGKRVFAKLFAAHPEYKNL +FKKFEQYSVEELPSTDAFHYHISLVMNRFS +SIGKVIDDNVSFVYLLKKLGREHIKRGLSR +KQFDQFVELYIAEISSELSDTGRNGLEKVL +TFATGVIEQGLFQLGQVDSNTLTALEKQSI +QDIWSNLRSTGLQDLAVKIFTRLFSAHPEY +KLLFTGRFGNVDNINENAPFKAHLHRVLSA +FDIVISTLDDSEHLIRQLKDLGLFHTRLGM +TRSHFDNFATAFLSVAQDIAPNQLTVLGRE +SLNKGFKLMHGVIEEGLLQLERINPITGLS +AREVAVVKQTWNLVKPDLMGVGMRIFKSLF +EAFPAYQAVFPKFSDVPLDKLEDTPAVGKH +SISVTTKLDELIQTLDEPANLALLARQLGE +DHIVLRVNKPMFKSFGKVLVRLLENDLGQR +FSSFASRSWHKAYDVIVEYIEEGLQQSYKQ +DPVTGITDAEKALVQESWDLLKPDLLGLGR +KIFTKVFTKHPDYQILFTRTGFGDTPLTKL +DDNPAFGTHIIKVMRAFDHVIQILGKPKTL +MAYLRSVGADHIATNVERRHFQAFSNALIP +VMQHDLKAQLRPDAVAAWRKGLDRIIGIID +QGLIGLKEVNPQNAFSAYDIQAVQRTWALA +KPDLMGKGAMVFKQLFTDHGYQPLFSNLAQ +YEITGLEGSPELNTHARNVMAQLDTLVGSL +QNSIELGQSLAQLGKDHVPRKVNRVHFKDF +AEHFIPLMKADLGDEFTPLAESAWKRAFDV +MIATIEQGQEGSSHALSSFLTNPVA diff --git a/forester/archive/RIO/others/hmmer/tutorial/RU1A_HUMAN b/forester/archive/RIO/others/hmmer/tutorial/RU1A_HUMAN new file mode 100644 index 0000000..412e284 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/RU1A_HUMAN @@ -0,0 +1,98 @@ +ID RU1A_HUMAN STANDARD; PRT; 282 AA. +AC P09012; +DT 01-NOV-1988 (REL. 09, CREATED) +DT 01-NOV-1988 (REL. 09, LAST SEQUENCE UPDATE) +DT 01-OCT-1996 (REL. 34, LAST ANNOTATION UPDATE) +DE U1 SMALL NUCLEAR RIBONUCLEOPROTEIN A (U1 SNRNP A PROTEIN). +GN SNRPA. +OS HOMO SAPIENS (HUMAN). +OC EUKARYOTA; METAZOA; CHORDATA; VERTEBRATA; TETRAPODA; MAMMALIA; +OC EUTHERIA; PRIMATES. +RN [1] +RP SEQUENCE FROM N.A. +RC TISSUE=LIVER; +RX MEDLINE; 91340152. +RA NELISSEN R.L.H., SILLEKENS P.T.G., BEIJER R.P., +RA GEURTS VAN KESSEL A.H.M., VAN VENROOIJ W.J.; +RL GENE 102:189-196(1991). +RN [2] +RP SEQUENCE FROM N.A. +RX MEDLINE; 88111575. +RA SILLEKENS P.T.G., HABETS W.J., BEIJER R.P., VAN VENROOIJ W.J.; +RL EMBO J. 6:3841-3848(1987). +RN [3] +RP X-RAY CRYSTALLOGRAPHY (2.8 ANGSTROMS) OF 1-95. +RX MEDLINE; 91061907. +RA NAGAI K., OUBRIDGE C., JESSEN T.-H., LI J., EVANS P.R.; +RL NATURE 348:515-520(1990). +RN [4] +RP X-RAY CRYSTALLOGRAPHY (1.92 ANGSTROMS). +RX MEDLINE; 95075454. +RA OUBRIDGE C., ITO N., EVANS P.R., TEO C.-H., NAGAI K.; +RL NATURE 372:432-438(1994). +RN [5] +RP STRUCTURE BY NMR OF 11-94. +RX MEDLINE; 91172834. +RA HOFFMAN D.W., QUERY C.C., GOLDEN B.L., WHITE S.W., KEENE J.D.; +RL PROC. NATL. ACAD. SCI. U.S.A. 88:2495-2499(1991). +RN [6] +RP STRUCTURE BY NMR OF 1-102. +RX MEDLINE; 94349935. +RA HOWE P.W.A., NAGAI K., NEUHAUS D., VARANI G.; +RL EMBO J. 13:3873-3881(1994). +RN [7] +RP STRUCTURE BY NMR OF 2-102. +RX MEDLINE; 96186818. +RA ALLAIN F.H.-T., GUBSER C.C., HOWE P.W.A., NAGAI K., NEUHAUS D., +RA VARANI G.; +RL NATURE 380:646-650(1996). +RN [8] +RP STRUCTURE BY NMR OF 1-117. +RX MEDLINE; 96180024. +RA AVIS J.M., ALLAIN F.H.-T., HOWE P.W.A., VARANI G., NAGAI K., +RA NEUHAUS D.; +RL J. MOL. BIOL. 257:398-411(1996). +RN [9] +RP MUTAGENESIS, AND DETAILED STUDIES OF RNA-BINDING. +RX MEDLINE; 92007796. +RA JESSEN T.-H., OUBRIDGE C., TEO C.H., PRITCHARD C., NAGAI K.; +RL EMBO J. 10:3447-3456(1991). +CC -!- FUNCTION: BINDS STEM LOOP II OF U1 SNRNA. IT IS THE FIRST SN-RNP +CC TO INTERACT WITH PRE-MRNA. THIS INTERACTION IS REQUIRED FOR THE +CC SUBSEQUENT BINDING OF U2 SN-RNP AND THE U4/U6/U5 TRI-SN-RNP. +CC -!- SUBUNIT: BELONGS TO THE SPLICEOSOME WHERE IT IS ASSOCIATED WITH +CC SN-RNP U1. +CC -!- SUBCELLULAR LOCATION: NUCLEAR. +CC -!- SIMILARITY: BELONGS TO THE U1 A/B" FAMILY. +CC -!- SIMILARITY: CONTAINS 2 RNA RECOGNITION MOTIFS (RNP). +DR EMBL; M60784; G340052; -. +DR EMBL; M60779; G340052; JOINED. +DR EMBL; M60780; G340052; JOINED. +DR EMBL; M60781; G340052; JOINED. +DR EMBL; M60782; G340052; JOINED. +DR EMBL; M60783; G340052; JOINED. +DR EMBL; X06347; G37541; -. +DR PIR; JQ1528; JQ1528. +DR PDB; 1NRC; 31-JAN-94. +DR MIM; 182285; -. +DR PROSITE; PS00030; RNP_1. +KW NUCLEAR PROTEIN; RNA-BINDING; RIBONUCLEOPROTEIN; REPEAT; +KW SPLICEOSOME; 3D-STRUCTURE. +FT DOMAIN 12 17 RNA-BINDING (RNP2) (BY SIMILARITY). +FT DOMAIN 52 59 RNA-BINDING (RNP1) (BY SIMILARITY). +FT DOMAIN 210 215 RNA-BINDING (RNP2) (BY SIMILARITY). +FT DOMAIN 244 251 RNA-BINDING (RNP1) (BY SIMILARITY). +FT REPEAT 1 89 +FT REPEAT 199 282 +FT MUTAGEN 11 11 T->V: ABOLISHES RNA-BINDING. +FT MUTAGEN 13 13 Y->F: SUBSTANTIALLY REDUCES RNA-BINDING. +FT MUTAGEN 15 15 N->V: ABOLISHES RNA-BINDING. +FT MUTAGEN 16 16 N->V: SUBSTANTIALLY REDUCES RNA-BINDING. +FT MUTAGEN 52 52 R->Q: ABOLISHES RNA-BINDING. +SQ SEQUENCE 282 AA; 31279 MW; 22427816 CRC32; + MAVPETRPNH TIYINNLNEK IKKDELKKSL YAIFSQFGQI LDILVSRSLK MRGQAFVIFK + EVSSATNALR SMQGFPFYDK PMRIQYAKTD SDIIAKMKGT FVERDRKREK RKPKSQETPA + TKKAVQGGGA TPVVGAVQGP VPGMPPMTQA PRIMHHMPGQ PPYMPPPGMI PPPGLAPGQI + PPGAMPPQQL MPGQMPPAQP LSENPPNHIL FLTNLPEETN ELMLSMLFNQ FPGFKEVRLV + PGRHDIAFVE FDNEVQAGAA RDALQGFKIT QNNAMKISFA KK +// diff --git a/forester/archive/RIO/others/hmmer/tutorial/amino.null b/forester/archive/RIO/others/hmmer/tutorial/amino.null new file mode 100644 index 0000000..f882173 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/amino.null @@ -0,0 +1,30 @@ +# amino.null +# +# Example of a null model file for protein sequences. +# The values in this file are the HMMER 2 default +# settings. + +Amino + +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 + +0.997151 # p1 diff --git a/forester/archive/RIO/others/hmmer/tutorial/amino.pri b/forester/archive/RIO/others/hmmer/tutorial/amino.pri new file mode 100644 index 0000000..77c1d8c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/amino.pri @@ -0,0 +1,70 @@ +# amino.pri +# +# This file incorporates Blocks9.plib, the UCSC mixture +# Dirichlet prior created by Kimmen Sjolander. +# The values in this file are the HMMER 2 default settings. + +Dirichlet # Strategy (mixture Dirichlet) +Amino # type of prior (Amino or Nucleic) + +# Transitions +1 # Single component +1.0 # with probability = 1.0 +0.7939 0.0278 0.0135 # m->m, m->i, m->d alpha's +0.1551 0.1331 # i->m, i->i alpha's +0.9002 0.5630 # d->m, d->d alpha's + +# Match emissions +# +9 # 9 components + +# Component 1 +0.178091 +0.270671 0.039848 0.017576 0.016415 0.014268 0.131916 0.012391 0.022599 0.020358 0.030727 0.015315 0.048298 0.053803 0.020662 0.023612 0.216147 0.147226 0.065438 0.003758 0.009621 +# S A T , C G P >< N V M , Q H R I K F L D W , E Y + +# Component 2 +0.056591 +0.021465 0.0103 0.011741 0.010883 0.385651 0.016416 0.076196 0.035329 0.013921 0.093517 0.022034 0.028593 0.013086 0.023011 0.018866 0.029156 0.018153 0.0361 0.07177 0.419641 +# Y , F W , H ,>< L M , N Q I C V S R , T P A K D G E + +# Component 3 +0.0960191 +0.561459 0.045448 0.438366 0.764167 0.087364 0.259114 0.21494 0.145928 0.762204 0.24732 0.118662 0.441564 0.174822 0.53084 0.465529 0.583402 0.445586 0.22705 0.02951 0.12109 +# Q E , K N R S H D T A >< M P Y G , V L I W C F + +# Component 4 +0.0781233 +0.070143 0.01114 0.019479 0.094657 0.013162 0.048038 0.077 0.032939 0.576639 0.072293 0.02824 0.080372 0.037661 0.185037 0.506783 0.073732 0.071587 0.042532 0.011254 0.028723 +# K R , Q , H >< N E T M S , P W Y A L G V C I , D F + +# Component 5 +0.0834977 +0.041103 0.014794 0.00561 0.010216 0.153602 0.007797 0.007175 0.299635 0.010849 0.999446 0.210189 0.006127 0.013021 0.019798 0.014509 0.012049 0.035799 0.180085 0.012744 0.026466 +# L M , I , F V ><, W Y C T Q , A P H R , K S E N , D G + +# Component 6 +0.0904123 +0.115607 0.037381 0.012414 0.018179 0.051778 0.017255 0.004911 0.796882 0.017074 0.285858 0.075811 0.014548 0.015092 0.011382 0.012696 0.027535 0.088333 0.94434 0.004373 0.016741 +# I V ,, L M >< C T A , F , Y S P W N , E Q K R D G H + +# Component 7 +0.114468 +0.093461 0.004737 0.387252 0.347841 0.010822 0.105877 0.049776 0.014963 0.094276 0.027761 0.01004 0.187869 0.050018 0.110039 0.038668 0.119471 0.065802 0.02543 0.003215 0.018742 +# D , E N , Q H S >< K G P T A , R Y , M V L F W I C + +# Component 8 +0.0682132 +0.452171 0.114613 0.06246 0.115702 0.284246 0.140204 0.100358 0.55023 0.143995 0.700649 0.27658 0.118569 0.09747 0.126673 0.143634 0.278983 0.358482 0.66175 0.061533 0.199373 +# M , V I L F T Y C A >< W S H Q R N K , P E G , D + +# Component 9 +0.234585 +0.005193 0.004039 0.006722 0.006121 0.003468 0.016931 0.003647 0.002184 0.005019 0.00599 0.001473 0.004158 0.009055 0.00363 0.006583 0.003172 0.00369 0.002967 0.002772 0.002686 +# P G W , C H R D E >< N Q K F Y T L A M , S V I + + +## Insert emissions +1 # Single component +1.0 # with probability 1.0 +681 120 623 651 313 902 241 371 687 676 143 548 647 415 551 926 623 505 102 269 diff --git a/forester/archive/RIO/others/hmmer/tutorial/fn3.slx b/forester/archive/RIO/others/hmmer/tutorial/fn3.slx new file mode 100644 index 0000000..631b108 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/fn3.slx @@ -0,0 +1,351 @@ +# ID fn3 +# AC PF00041 +# DE Fibronectin type III domain +# AU Sonnhammer ELL +# AL HMM_simulated_annealing +# AM hmma -qR +# SE Swissprot_feature_table +# GA Bic_raw 18 hmmls 20 +# CC There is no clear separation between signal and noise. +# DR PROSITE; PDOC00214; +# DR SCOP; 1ttf; sf; +# RN [1] +# RA Bazan J.F. +# RL PNAS USA 87:6934-6938(1990). +# RN [2] +# RA Little E., Bork P., Doolittle R. +# RL J. Mol. Evol. 39:631-643(1994). +# RN [3] +# RA Kornblihtt A.R., et al. +# RL EMBO J. 4:1755-1759(1985). +# SQ 109 +7LES_DROME/1799-1891 P.SPP.RNFSVRVL..SPRELEVSWLPPEq...LRSESVYYTLHW...QQ +7LES_DROVI/1917-1997 S.YAPlPPLQLIEL..NAYGMTLAWPGT......PDALSSLTLEC...QS +APU_THETY/928-1009 A.PQPiTDLKAVS...GNGKVDLSWSVV.......DKAVSYNI.YR...S +APU_THETY/1165-1248 P.TAP.V.LQQPGI..ESSRVTLNWSPSA....DDVAIFGYEIYK...SS +AXO1_CHICK/602-692 PpGPP.GGVVVRDI..GDTTVQLSWSRGFd...NHSPIARYSIEAR...T +AXO1_CHICK/807-896 PkVAP.FRVTAKAV..LSSEMDVSWEPVEqg.dMTGVLLGYEIRY...WK +CAML_HUMAN/812-907 P.QAI.PELEGIEIl.NSSAVLVKWRPVDla.qVKGHLRGYNVTY...WR +CHI1_BACCI/465-542 P.SVP.GNARSTGV..TANSVTLAWNAST....DNVGVTGYNV.YN.... +CHIT_STRLI/142-219 P.SAP.GTPTASNI..TDTSVKLSWSAAT....DDKGVKNYDV.LR.... +CHIX_STROI/169-240 P.PAPpTGLRTGSV..TATSVALSWSPV.......TGATGYAV.YR.... +CONT_CHICK/799-884 PtEVP.TDVSVKVL..SSSEISVSWHHVT.....EKSVEGYQIRY...WA +CPSF_CHICK/630-716 P.DPP.QSVRVTSV..GEDWAVLSWEAPPf..dGGMPITGYLMER...KK +CPSF_CHICK/923-1008 P.GPP.QAVRVMEV..WGSNALLQWEPPKd..dGNAEISGYTVQK...AD +ECK_HUMAN/329-420 P.SAP.HYLTAVGM..GA.KVELRWTPPQd..sGGREDIVYSVTCEqcWP +ECK_HUMAN/436-519 Q.TEP.PKVRLEGR..STTSLSVSWSIPPp...QQSRVWKYEVTYR...K +EPH1_HUMAN/333-435 P.SAP.RNLSFSA...SGTQLSLRWEPPAd..tGGRQDVRYSVRCS..QC +EPH3_CHICK/333-429 P.SAP.QAV.ISSV..NETSLMLEWTPPRd..sGGREDLVYNIIC...KS +EPH3_CHICK/444-528 P.SAV.SIMHQVSR..TVDSITLSWSQPDq...PNGVILDYELQY...YE +ETK1_CHICK/325-421 P.SAP.RNV.ISNI..NETSVILDWSWPLd..tGGRKDVTFNIIC...KK +FAS2_SCHAM/530-616 P.SAV.LQVKMDVM..TATTVTFKFFGPGn..dGGLPTKNYAVQY...KQ +FAS2_SCHAM/642-735 T.SGT.ENEVVVSP..YPNRYELRWQVPAd...NGEPITHYSVKS...CP +FINC_BOVIN/577-660 T.SGP.VQVIITETpsQPNSHPIQWSAPE.....SSHISKYILRW...KP +FINC_BOVIN/689-768 P.VVA.TSESVTEI..TASSFVVSWVSA......SDTVSGFRVEY...EL +FINC_BOVIN/780-858 P.DAP.PDPTVDQV..DDTSIVVRWSRP......RAPITGYRIVY...SP +FINC_BOVIN/875-955 KvPPP.RDLQFVEV..TDVKITIMWTPP......ESPVTGYRVDV...IP +FINC_BOVIN/1142-1225 PlSPP.TNLHLEANp.DTGVLTVSWERST.....TPDITGYRITT...TP +FINC_BOVIN/1236-1316 V.PPP.TDLRFTNV..GPDTMRVTWAPPS.....SIELTNLLVRY...SP +FINC_BOVIN/1327-1406 L.DSP.SGIDFSDI..TANSFTVHWIAP......RATITGYRIRHH...P +FINC_BOVIN/1417-1499 S.DVP.RDLEVIAA..TPTSLLISWDAP......AVTVRYYRITY...GE +FINC_BOVIN/1511-1590 I.DKP.SQMQVTDV..QDNSISVRWLPS......SSPVTGYRVTT...AP +FINC_BOVIN/1601-1680 I.PAP.TNLKFTQV..TPTSLTAQWTAP......NVQLTGYRVRV...TP +FINC_BOVIN/1693-1771 V.SPP.RRARVTDA..TETTITISWRTK......TETITGFQVDA...IP +FINC_BOVIN/1782-1861 I.DAP.SNLRFLAT..TPNSLLVSWQPP......RARITGYIIKY...EK +FINC_CHICK/551-630 I.DRP.KGLTFTEV..DVDSIKIAWESP......QGQVTRYRVTY...SS +FINC_RAT/1266-1346 V.PQL.TDLSFVDI..TDSSIGLRWTPLN.....SSTIIGYRITV...VA +GUNB_CELFI/651-733 P.TTP.GTPVATGV..TTVGASLSWAASTd...AGSGVAGYEL.YR...V +IL7R_HUMAN/129-221 P.EAP.FDLSVIYRe.GANDFVVTFNTSHlq.kKYVKVLMHDVAYR..QE +ITB4_HUMAN/1127-1208 L.GAP.QNPNAKAA..GSRKIHFNWLPP......SGKPMGYRVKY...WI +ITB4_HUMAN/1220-1310 P.SEP.GRLAFNVV..SSTVTQLSWAEPAe...TNGEITAYEVCY...GL +ITB4_HUMAN/1581-1665 P.DTP.TRLVFSAL..GPTSLRVSWQEPR....CERPLQGYSVEY...QL +ITB4_HUMAN/1694-1781 P.SAP.GPLVFTAL..SPDSLQLSWERPRr...PNGDIVGYLVTC...EM +KALM_CHICK/178-271 P.LKPrKELKFIEL..QSGDLEVKWSSKFn...ISIEPVIYVVQRR..WN +KALM_CHICK/544-642 L.AKP.ENLSASFIv.QEGNITGHFSWKIskavLHQPMTGFQVTW...AE +KMLC_CHICK/60-145 P.DPPaGTPCASDI..RSSSLTLSWYGSSy..dGGSAVQSYTVEI...WN +LAR_DROME/322-404 P.TAP.TDVQISEV..TATSVRLEWSYK.....GPEDLQYYVIQY...KP +LAR_DROME/417-503 E.SAP.RNVQVRTL..SSSTMVITWEPPEt...PNGQVTGYKV.Y...YT +LAR_DROME/515-598 P.SQP.SNFRATDI..GETAVTLQWTKPTh...SSENIVHYELYW...ND +LAR_DROME/709-800 P.GDP.QDVKATPL..NSTSIHVSWKPPLek.dRNGIIRGYHIHA...QE +LAR_DROME/909-995 PgGPP.SNITIRFQ..TPDVLCVTWDPPTre.hRNGIITRYDVQFH..KK +MPSF_CHICK/371-457 P.GAP.MDVKCHDA..NRDYVIVTWKPPNt..tSQNPVIGYFVDK...CE +MPSF_CHICK/499-585 P.GPP.TNVHASEI..SKTYVVLSWDPPVp...RGREPLTYFIEK...SM +MPSF_CHICK/600-684 P.SAP.GRVVATRN..TKTSVVVQWDKPK....HEENLYGYYIDY...SV +MPSF_CHICK/699-785 P.SYP.HGITLLNC..DGHSMTLGWKAPKy..sGGSPILGYYIDKR...E +MPSF_CHICK/801-887 P.GPA.YDLTVCEV..RNTSLVLLWKAPVy..eGKSPITGYLVDY...KE +NCA1_BOVIN/509-597 P.SSP.SIDQVEP...YSSTAQVQFDEPEa..tGGVPILKYKAEWR...A +NCA1_BOVIN/610-691 P.SAP.KLEGQMGE..DGNSIKVKLIKQDd...GGSPIRHYLVKYR...A +NGCA_CHICK/700-794 PeRNP.GGVHGEGN..ETGNLVITWEPLPpq.aWNAPWARYRVQWR...P +NRCA_CHICK/623-709 P.NPP.LDLELTGQ..LERSIELSWVPGEe...NNSPITNFVIEY...ED +NRCA_CHICK/726-810 ....P.SNVQGIGS..EPDNLVITWESLKgf.qSNGPGLQYKVSWR..QK +NRCA_CHICK/928-1014 P.SPP.SFLKITNP..TLDSLTLEWGSPTh...PNGVLTSYILKF...QP +NRG_DROME/717-799 ....P.DNVVGQGT..EPNNLVISWTPMPei.eHNAPNFHYYVSW...K. +NRG_DROME/815-905 PlDAP.TNFTMRQIt.SSTSGYMAWTPVSee.sVRGHFKGYKIQT...WT +NRG_DROME/917-1007 P.SPV.QGLDAYPL..GSSAFMLHWKKPLy...PNGKLTGYKIYY...EE +PHB_ALCFA/344-418 G.SAP.TGLAVTAT..TSTSVSLSWNAV.......ANASSYGV.YR.... +PTP1_DROME/123-205 P.DPP.SNLSVQVR..SGKNAIILWSPPT.....QGSYTAFKIKV...LG +PTP1_DROME/217-301 P.NTP.GKFIVWFR..NETTLLVLWQPPY....PAGIYTHYKVSI...EP +PTP1_DROME/312-394 P.LRP.LNVTFDRDfiTSNSFRVLWEAPK....GISEFDKYQVSV...AT +PTP1_DROME/405-485 P.LPV.RNLRSINDd.KTNTMIITWEADP.....ASTQDEYRIVYHe.LE +PTP1_DROME/583-661 P.NPP.RNMTIETV..RSNSVLVHWSPPE.....SGEFTEYSIRYR...T +PTP1_DROME/864-944 P.EPI.TQLHATNI..TDTEISLRWDLP......KGEYNDFDIAY...LT +PTP1_DROME/958-1044 P.GRV.ERFHPTDV..QPSEINFEWSLPSs..eANGVIRQFSIAY...TN +PTP6_DROME/236-321 V.PQV.SIDFAKAV..GANKIYLNWTVND....GNDPIQKFFITL...QE +PTP6_DROME/332-425 Y.DPI.FIPKVETTgsTASTITIGWNPPPp..dLIDYIQYYELIV...SE +PTP9_DROME/171-259 P.SKP.QNLTILDV..SANSITMSWHPPKn...QNGAIAGYHVFH...IH +PTPB_HUMAN/22-103 AePER.CNFTLAESkaSSHSVSIQWRIL.......GSPCNFSLIY...SS +PTPB_HUMAN/112-192 P.PAR.FGVSKEKT..TSTGLHVWWTPS......SGKVTSYEVQL...FD +PTPB_HUMAN/467-543 P.LAV.LQLRVKHA..NETSLSIMWQTP......VAEWEKYIISL...AD +PTPB_HUMAN/554-632 P.AQV.TDLHVANQg.MTSSLFTNWTQA......QGDVEFYQVLL...IH +PTPB_HUMAN/643-725 P.SSV.SGVTVNNSg.RNDYLSVSWLVA......PGDVDNYEVTL...SH +PTPB_HUMAN/731-808 P.DKV.QGVSVSNSa.RSDYLRVSWVHA......TGDFDHYEVTI...KN +PTPB_HUMAN/907-984 P.SAV.KNIHISPNg.ATDSLTVNWTPG......GGDVDSYTVSA...FR +PTPB_HUMAN/995-1074 P.ASV.QGVIADNAy.SSYSLIVSWQKA......AGVAERYDILL...LT +PTPB_HUMAN/1085-1162 P.AAV.TDLRITEN..STRHLSFRWTAS......EGELSWYNIFL...YN +PTPB_HUMAN/1173-1250 P.ASV.SHLRGSNRn.TTDSLWFNWSPA......SGDFDFYELIL...YN +PTPB_HUMAN/1261-1344 P.SPP.SLMSFADI..ANTSLAITWKGPP....DWTDYNDFELQW...LP +PTPB_HUMAN/1355-1434 P.DKI.QNLHCRPQ..NSTAIACSWIPP......DSDFDGYSIECR...K +PTPK_MOUSE/290-376 P.PRPiAPPQLLGV..GPTYLLIQLNANSi..iGDGPIILKEVEYR...M +PTPZ_HUMAN/312-401 S.SEP.ENVQADPE..NYTSLLVTWERPRv..vYDTMIEKFAVLY...QQ +SEK_MOUSE/441-525 P.SSI.ALVQAKEV..TRYSVALAWLEPDr...PNGVILEYEVKY...YE +TENA_CHICK/593-671 V.SPP.TELTVTNV..TDKTVNLEWKHE.......NLVNEYLVTY...VP +TENA_CHICK/682-767 L.PAP.EGLKFKSV..RETSVQVEWDPL......SISFDGWELVFRnmQK +TENA_CHICK/774-853 L.DAP.SQIEAKDV..TDTTALITWSKP......LAEIEGIELTY...GP +TENA_CHICK/864-945 L.DAP.RNLKRVSQ..TDNSITLEWKNS......HANIDNYRIKF...AP +TENA_CHICK/956-1033 L.DNP.KDLEVSDP..TETTLSLRWRRP......VAKFDRYRLTY...VS +TENA_CHICK/1045-1124 E.PEL.GNLSVSET..GWDGFQLTWTAA......DGAYENFVIQV...QQ +TENA_CHICK/1136-1215 H.PEV.GELTVSDI..TPESFNLSWTTT......NGDFDAFTIEI...ID +TENA_CHICK/1227-1306 E.PEV.DNLLVSDA..TPDGFRLSWTAD......DGVFDSFVLKIR..DT +TENA_CHICK/1317-1395 V.GSP.KGISFSDI..TENSATVSWTPP......RSRVDSYRVSY...VP +TENA_CHICK/1406-1483 L.DSP.SGLVVMNI..TDSEALATWQPA......IAAVDNYIVSY...SS +TENA_CHICK/1494-1571 L.DAP.KDLSATEV..QSETAVITWRPP......RAPVTDYLLTY...ES +TENA_HUMAN/1254-1334 E.VPDmGNLTVTEV..SWDALRLNWTTP......DGTYDQFTIQV...QE +TENA_HUMAN/1528-1607 L.PLL.ENLTISDI..NPYGFTVSWMAS......ENAFDSFLVTV...VD +TIE1_HUMAN/446-533 P.PVPlAAPRLLTK..QSRQLVVSPLVSFs...GDGPISTVRLHYR..PQ +TIE1_HUMAN/545-632 PlLQP.WLEGWHVE..GTDRLRVSWSLPLv..pGPLVGDGFLLRL...WD +TIE1_HUMAN/644-729 P.PAP.RHLHAQAL..SDSEIQLTWKHPEa...LPGPISKYVVEV...QV +TIE2_HUMAN/444-529 L.PKPlNAPNVIDT..GHNFAVINISSEPy..fGDGPIKSKKLLY...KP +TIE2_HUMAN/543-626 L.PPP.RGLNLLPK..SQTTLNLTWQPIFp...SSEDDFYVEVERR...S +TIE2_HUMAN/639-724 P.PQP.ENIKISNI..THSSAVISWTILD.....GYSISSITIRY...KV +UFO_HUMAN/327-411 L.GPP.ENISATR...NGSQAFVHWQEPRa..pLQGTLLGYRLAY...QG + +7LES_DROME/1799-1891 ELDGEnvqd..rrewEAHER...RLET....AG..THRLTGIKPGSGYSL +7LES_DROVI/1917-1997 LREQ............LQFN...VAGN....HT..QMRLAPLQPKTRYSC +APU_THETY/928-1009 TVKGG..........LYEKI...ASNV....TQi.TYTDTEVTNGLKYVY +APU_THETY/1165-1248 SETGPf.........IKIAT...VSDS....VY..NYVDTDVVNGNVYYY +AXO1_CHICK/602-692 LLSNKwkq.....mrTNPVN...IEGN....AE..TAQVVNLIPWMDYEF +AXO1_CHICK/807-896 DGDKEea.......aDRVRT...AGLV....T...SAHVTGLNPNTKYHV +CAML_HUMAN/812-907 EGSQRkhsk..rhihKDHVV...VPAN....TT..SVILSGLRPYSSYHL +CHI1_BACCI/465-542 .GAN............LATS...VTGT....T....ATISGLTAGTSYTF +CHIT_STRLI/142-219 .DGA............KVAT...VTGT....T....YTDNGLTKGTAYSY +CHIX_STROI/169-240 .DGV............KVAT...ASGT....S....ATVTGLTPDTAYAF +CONT_CHICK/799-884 AHDKEa........aAQRVQ...VSNQ....EY..STKLENLKPNTRYHI +CPSF_CHICK/630-716 KGSMRw........mKLNFE...VFPD....T...TYESTKMIEGVFYEM +CPSF_CHICK/923-1008 TRTME..........WFTVL...EHSR....PT..RCTVSELVMGNEYRF +ECK_HUMAN/329-420 E.SGEcgp....ceaSVRYS...EPPHgl.tRT..SVTVSDLEPHMNYTF +ECK_HUMAN/436-519 KGDS............NSYN...VRRT....EGf.SVTLDDLAPDTTYLV +EPH1_HUMAN/333-435 QGTAQdggpcqpcgvGVHFSpgaRGLT....TP..AVHVNGLEPYANYTF +EPH3_CHICK/333-429 CGSGRgact...rcgDNVQF...APRQlgltEP..RIYISDLLAHTQYTF +EPH3_CHICK/444-528 KNLSE..........LNSTA...VKSP....TN..TVTVQNLKAGTIYVF +ETK1_CHICK/325-421 CGGSSkice...pcsDNVRF...LPRQtg.lTNt.TVTVVDLLAHTNYTF +FAS2_SCHAM/530-616 DSQGW..........EDALN...RTWP....VDs.PYILENLKPQTRYNF +FAS2_SCHAM/642-735 VEKYDtewrl.lpypCQEHK...LEGQ....AT..TFQLESLQPDTHYKV +FINC_BOVIN/577-660 KNSPDr.........WKEAT...IPGH....LN..SYTIKGLRPGVVYEG +FINC_BOVIN/689-768 SEEGDe.........PQYLD...LPST....AT..SVNIPDLLPGRKYTV +FINC_BOVIN/780-858 SVEGS..........STELN...LPET....AN..SVTLSDLQPGVQYNI +FINC_BOVIN/875-955 VNLPGe........hGQRLP...VSRN....T...FAEVTGLSPGVTYHF +FINC_BOVIN/1142-1225 TNGQQg........ySLEEV...VHAD....QS..SCTFENLSPGLEYNV +FINC_BOVIN/1236-1316 VKNEEd.........VAELS...ISPS....DN..AVVLTNLLPGTEYLV +FINC_BOVIN/1327-1406 ENMGGr.........PREDR...VPPS....RN..SITLTNLNPGTEYVV +FINC_BOVIN/1417-1499 TGGSSp.........VQEFT...VPGS....KS..TATISGLKPGVDYTI +FINC_BOVIN/1511-1590 KNGPGp.........SKTKT...VGPD....QT..EMTIEGLQPTVEYVV +FINC_BOVIN/1601-1680 KEKTGp.........MKEIN...LAPD....SS..SVVVSGLMVATKYEV +FINC_BOVIN/1693-1771 ANGQT..........PIQRT...IRPD....VR..SYTITGLQPGTDYKI +FINC_BOVIN/1782-1861 PGSPPr........eVVPRP...RPGV....T...EATITGLEPGTEYTI +FINC_CHICK/551-630 PEDG............IHEL...LPAPgg.eED..TAELHGLRPGSEYTI +FINC_RAT/1266-1346 AGEGIp.........IFEDF...VDSS....VG..YYTVTGLEPGIDYDI +GUNB_CELFI/651-733 QGTTQ..........TLVGT...TTAA....A....YILRDLTPGTAYSY +IL7R_HUMAN/129-221 KDENK..........WTHVN...LSST....KL..TLLQRKLQPAAMYEI +ITB4_HUMAN/1127-1208 QGDSEs.........EAHLL...DSKV....P...SVELTNLYPYCDYEM +ITB4_HUMAN/1220-1310 VNDDNrpi.....gpMKKVL...VDNP....KNr.MLLIENLRESQPYRY +ITB4_HUMAN/1581-1665 LNGGE..........LHRLN...IPNP....AQt.SVVVEDLLPNHSYVF +ITB4_HUMAN/1694-1781 AQGGGpa.......tAFRVD...GDSP....ES..RLTVPGLSENVPYKF +KALM_CHICK/178-271 QGIHPsed.....daTNWQT...VAQT....TDe.RVQLSDIRASRWYQF +KALM_CHICK/544-642 VTTESrqnslpnsiiSQSQI...LPAD....HY..VLTVPNLRPSMLYRL +KMLC_CHICK/60-145 SVDNK..........WTDLT...TCRS....T...SFNVQDLQADREYKF +LAR_DROME/322-404 KNANQ..........AFSEI...SGII....TM..YYVVRALSPYTEYEF +LAR_DROME/417-503 TNSNQpe......asWNSQM...VDNS....E...LTTVSDVTPHAIYTV +LAR_DROME/515-598 TYANQ..........AHHKR...ISNS....E...AYTLDGLYPDTLYYI +LAR_DROME/709-800 LRDEGkgf....lnePFKFD...VVDT....L...EFNVTGLQPDTKYSI +LAR_DROME/909-995 IDHGL..........GSERN...MTLR....K....AVFTNLEENTEYIF +MPSF_CHICK/371-457 VGLEN..........WVQCN...DAPV....KIc.KYPVTGLYEGRSYIF +MPSF_CHICK/499-585 VGSGS..........WQRVNaqvAVKS....P...RYAVFDLAEGKPYVF +MPSF_CHICK/600-684 VGSNQwe.......pANHKP...INYN....R....FVVHGLETGEQYIF +MPSF_CHICK/699-785 ANHKN..........WHEVNssvISRT....I....YTVEDLTEDAFYEF +MPSF_CHICK/801-887 VDTED..........WITAN...EKPT....SHr.YFKVTDLHQGHTYVF +NCA1_BOVIN/509-597 MGEEVw........hSKWYD...AKEA....SMegIVTIVGLKPETTYAV +NCA1_BOVIN/610-691 LSSEW..........KPEIR...LPSG....SD..HVMLKSLDWNAEYEV +NGCA_CHICK/700-794 LEEPGgggps.ggfpWAEST...VDAP....P....VVVGGLPPFSPFQI +NRCA_CHICK/623-709 GLHEPg........vWHYQT...EVPG....SH..TTVQLKLSPYVNYSF +NRCA_CHICK/726-810 DVDDE..........WTSVV...VANV....S...KYIVSGTPTFVPYEI +NRCA_CHICK/928-1014 INNTHel......gpLVEIR...IPAN....ES..SLILKNLNYSTRYKF +NRG_DROME/717-799 .RDIPaa......awENNNI...FDWR....QN..NIVIADQPTFVKYLI +NRG_DROME/815-905 ENEGEe........gLREIH...VKGD....TH..NALVTQFKPDSKNYA +NRG_DROME/917-1007 V.KESyvge..rreyDPHIT...DPRV....T...RMKMAGLKPNSKYRI +PHB_ALCFA/344-418 .NGS............KVGS...ATAT....A....YTDSGLIAGTTYSY +PTP1_DROME/123-205 LSEASss.......yNRTFQ...VNDN....TF..QHSVKELTPGATYQV +PTP1_DROME/217-301 PDANDsvl.....yvEKEGE...PPGP....A...QAAFKGLVPGRAYNI +PTP1_DROME/312-394 TRRQS..........TVPRS...NEPV....AF..SDFRDIAEPGKTFNV +PTP1_DROME/405-485 TFNGD..........TSTLT...TDRT....R....FTLESLLPGRNYSL +PTP1_DROME/583-661 DSEQQ..........WVRLP...SVRS....T...EADITDMTKGEKYTI +PTP1_DROME/864-944 A.DNL..........LAQNM...TTRN....E....ITISDLRPHRNYTF +PTP1_DROME/958-1044 INNLT..........DAGMQ...DFES....EEa.FGVIKNLKPGETYVF +PTP6_DROME/236-321 AGTPTft.......yHKDFI...NGSH....T...SYILDHFKPNTTYFL +PTP6_DROME/332-425 SGEVPkvi.....eeAIYQQ...NSRN....L...PYMFDKLKTATDYEF +PTP9_DROME/171-259 DNQTGve......ivKNSRN...SVET....LI..HFELQNLRPYTDYRV +PTPB_HUMAN/22-103 DTLGAa........lCPTFR...IDNT....TY..GCNLQDLQAGTIYNF +PTPB_HUMAN/112-192 ENNQKiq......gvQIQES...TSWN....E....YTFFNLTAGSKYNI +PTPB_HUMAN/467-543 R.DLL..........LIHKS...LSKD....AK..EFTFTDLVPGRKYMA +PTPB_HUMAN/554-632 ENVV...........IKNES...ISSE....TS..RYSFHSLKSGSLYSV +PTPB_HUMAN/643-725 DGKV...........VQSLV...IAKS....VR..ECSFSSLTPGRLYTV +PTPB_HUMAN/731-808 KNNF...........IQTKS...IPKS....EN..ECVFVQLVPGRLYSV +PTPB_HUMAN/907-984 H.SQK..........VDSQT...IPKH....VF..EHTFHRLEAGEQYQI +PTPB_HUMAN/995-1074 ENGIL..........LRNTS...EPAT....TK..QHKFEDLTPGKKYKI +PTPB_HUMAN/1085-1162 PDGNLq.........ERAQV...DPLV....Q...SFSFQNLLQGRMYKM +PTPB_HUMAN/1173-1250 PNGTKk.........ENWKD...KDLT....E....WRFQGLVPGRKYVL +PTPB_HUMAN/1261-1344 RDALTv.........FNPYN...NRKS....E...GRIVYGLRPGRSYQF +PTPB_HUMAN/1355-1434 MDTQEv.........EFSRK...LEKE....KS..LLNIMMLVPHKRYLV +PTPK_MOUSE/290-376 T.SGS..........WTETH...AVNA....P...TYKLWHLDPDTEYEI +PTPZ_HUMAN/312-401 LDGEDq........tKHEFL...TDGY....QDl.GAILNNLLPNMSYVL +SEK_MOUSE/441-525 KDQN...........ERSYR...IVRT....AAr.NTDIKGLNPLTSYVF +TENA_CHICK/593-671 TSSGGl.........DLQFT...VPGN....QT..SATIHELEPGVEYFI +TENA_CHICK/682-767 KDDNG..........DITSS...LKRP....ET..SYMQPGLAPGQQYNV +TENA_CHICK/774-853 KDVPGd.........RTTID...LSED....EN..QYSIGNLRPHTEYEV +TENA_CHICK/864-945 ISGGD..........HTELT...VPKGnq.aTT..RATLTGLRPGTEYGI +TENA_CHICK/956-1033 P.SGK..........KNEME...IPVD....ST..SFILRGLDAGTEYTI +TENA_CHICK/1045-1124 SDNPEe.........TWNIT...VPGG....QH..SVNVTGLKANTPYNV +TENA_CHICK/1136-1215 SNRLLe.........PMEFN...ISGN....SR..TAHISGLSPSTDFIV +TENA_CHICK/1227-1306 KRKSD..........PLELI...VPGH....ER..THDITGLKEGTEYEI +TENA_CHICK/1317-1395 ITGGT..........PNVVT...VDGS....KT..RTKLVKLVPGVDYNV +TENA_CHICK/1406-1483 EDEP...........EVTQM...VSGN....TV..EYDLNGLRPATEYTL +TENA_CHICK/1494-1571 I.DGR..........VKEVI...LDPE....TT..SYTLTELSPSTQYTV +TENA_HUMAN/1254-1334 ADQVEe.........AHNLT...VPGS....LR..SMEIPGLRAGTPYTV +TENA_HUMAN/1528-1607 SGKLLd.........PQEFT...LSGT....QR..KLELRGLITGIGYEV +TIE1_HUMAN/446-533 DSTMD..........WSTIV...VDPS....E...NVTLMNLRPKTGYSV +TIE1_HUMAN/545-632 GTRGQ..........ERREN...VSSP....QAr.TALLTGLTPGTHYQL +TIE1_HUMAN/644-729 AGGAGd.........PLWID...VDRP....EEt.STIIRGLNASTRYLF +TIE2_HUMAN/444-529 VNHYEa.........WQHIQ...VTNE....I....VTLNYLEPRTEYEL +TIE2_HUMAN/543-626 VQKSD..........QQNIK...VPGN....LT..SVLLNNLHPREQYVV +TIE2_HUMAN/639-724 QGKNE..........DQHVDv.kIKNA....TIi.QYQLKGLEPETAYQV +UFO_HUMAN/327-411 QDTPE..........VLMDI...GLRQ....EV..TLELQGDGSVSNLTV + +7LES_DROME/1799-1891 WVQ.AHATPTk....SNSS +7LES_DROVI/1917-1997 RLA.LAYAATp....GAPI +APU_THETY/928-1009 AVT.AVDNDGn...eSALS +APU_THETY/1165-1248 KVV.AVDTSYn....RTAS +AXO1_CHICK/602-692 RVL.ASNILGv....GEPS +AXO1_CHICK/807-896 SVR.AYNRAGa....GPPS +CAML_HUMAN/812-907 EVQ.AFNGRGs....GPAS +CHI1_BACCI/465-542 TIK.AKDAAGn...lSAAS +CHIT_STRLI/142-219 SVK.ARDTADq...tGPAS +CHIX_STROI/169-240 QVA.AVNGA.......GES +CONT_CHICK/799-884 DVS.AFNSAGy....GPPS +CPSF_CHICK/630-716 RVF.AVNAIGv....SQPS +CPSF_CHICK/923-1008 RVY.SENVCGt....SQEP +ECK_HUMAN/329-420 TVE.ARNGV........SG +ECK_HUMAN/436-519 QVQ.ALTQEGq....GAGS +EPH1_HUMAN/333-435 NVE.AQNGVSglgssGHAS +EPH3_CHICK/333-429 EIQ.AVNGVTd...qSPFS +EPH3_CHICK/444-528 QVR.ARTVAGy....GRYS +ETK1_CHICK/325-421 EID.AVNGVSd...lSTLS +FAS2_SCHAM/530-616 RFA.AQNEVGf....GPWS +FAS2_SCHAM/642-735 EVR.ATNAIGn....SVPG +FINC_BOVIN/577-660 QLI.SVQHY......GQRE +FINC_BOVIN/689-768 NVY.EISEE.......GEQ +FINC_BOVIN/780-858 TIY.AVEEN.......QES +FINC_BOVIN/875-955 KVF.AVNQG.......RES +FINC_BOVIN/1142-1225 SVY.TVKDD.......KES +FINC_BOVIN/1236-1316 SVS.SVYEQ.......HES +FINC_BOVIN/1327-1406 SIV.ALNSK.......EES +FINC_BOVIN/1417-1499 TVY.AVTGRGd....SPAS +FINC_BOVIN/1511-1590 SVY.AQNQN.......GES +FINC_BOVIN/1601-1680 SVY.ALKDT.......LTS +FINC_BOVIN/1693-1771 HLY.TLNDN.......ARS +FINC_BOVIN/1782-1861 QVI.ALKNN.......QKS +FINC_CHICK/551-630 NIV.AIYDD.......MES +FINC_RAT/1266-1346 SVI.TLING.......GES +GUNB_CELFI/651-733 VVK.AKDVAGn...vSAAS +IL7R_HUMAN/129-221 KVR.SIPDHYfkgfwSEWS +ITB4_HUMAN/1127-1208 KVC.AYGAQGe....GPYS +ITB4_HUMAN/1220-1310 TVK.ARNGAGw....GPER +ITB4_HUMAN/1581-1665 RVR.AQSQEGw....GRER +ITB4_HUMAN/1694-1781 KVQ.ARTTEGf....GPER +KALM_CHICK/178-271 RVA.AVNVHGt...rGFTA +KALM_CHICK/544-642 EVQ.VLTTGGe....GPAT +KMLC_CHICK/60-145 RVR.AANVYGi....SEPS +LAR_DROME/322-404 YVI.AVNNIGr....GPPS +LAR_DROME/417-503 RVQ.AYTSMGa....GPMS +LAR_DROME/515-598 WLA.ARSQRGe....GATT +LAR_DROME/709-800 QVA.ALTRKGd....GDRS +LAR_DROME/909-995 RVR.AYTKQGa....GPFS +MPSF_CHICK/371-457 RVR.AVNSAGi....SRPS +MPSF_CHICK/499-585 RVL.SANKHGi....SDPS +MPSF_CHICK/600-684 RVK.AVNAVGf....SENS +MPSF_CHICK/699-785 KIA.AANVVGi....GHPS +MPSF_CHICK/801-887 KVR.AVNDAGv....GKSS +NCA1_BOVIN/509-597 RLA.ALNGKGl....GEIS +NCA1_BOVIN/610-691 YVV.AENQQ.......GKS +NGCA_CHICK/700-794 RVQ.AVNGAGk....GPEA +NRCA_CHICK/623-709 RVI.AVNEIGr....SQPS +NRCA_CHICK/726-810 KVQ.ALNDLGy...aPEPS +NRCA_CHICK/928-1014 YFN.AQTSV......GSGS +NRG_DROME/717-799 KVV.AINDR.......GES +NRG_DROME/815-905 RIL.AYNGRFn....GPPS +NRG_DROME/917-1007 SIT.ATTKMGe....GSEH +PHB_ALCFA/344-418 TVT.AVDPTAg...eSQPS +PTP1_DROME/123-205 QAY.TIYDG.......KES +PTP1_DROME/217-301 SVQ.TMSED.......EIS +PTP1_DROME/312-394 IVK.TVSGK.......VTS +PTP1_DROME/405-485 SVQ.AVSKK.......MES +PTP1_DROME/583-661 QVN.TVSFG.......VES +PTP1_DROME/864-944 TVV.VRSGTEss..vLRSS +PTP1_DROME/958-1044 KIQ.AKTAIGf....GPER +PTP6_DROME/236-321 RIV.GKNSIGn....GQPT +PTP6_DROME/332-425 RVR.ACSDLTkt..cGPWS +PTP9_DROME/171-259 IVK.AFTTKNe....GEPS +PTPB_HUMAN/22-103 KII.SLDEE........RT +PTPB_HUMAN/112-192 AIT.AVSGG.......KRS +PTPB_HUMAN/467-543 TVT.SISGD........LK +PTPB_HUMAN/554-632 VVT.TVSGG.......ISS +PTPB_HUMAN/643-725 TIT.TRSGKYe...nHSFS +PTPB_HUMAN/731-808 TVT.TKSGQ........YE +PTPB_HUMAN/907-984 MIA.SVSGS........LK +PTPB_HUMAN/995-1074 QIL.TVSGG.......LFS +PTPB_HUMAN/1085-1162 VIV.THSGE........LS +PTPB_HUMAN/1173-1250 WVV.THSGD........LS +PTPB_HUMAN/1261-1344 NVK.TVSGDSw....KTYS +PTPB_HUMAN/1355-1434 SIK.VQSAG.......MTS +PTPK_MOUSE/290-376 RVLlTRPGEGg...tGLPG +PTPZ_HUMAN/312-401 QIV.AICTNGl...yGKYS +SEK_MOUSE/441-525 HVR.ARTAAGy....GDFS +TENA_CHICK/593-671 RVF.AILKN.......KKS +TENA_CHICK/682-767 SLH.IVKNNTr...gPGLS +TENA_CHICK/774-853 TLI.SRRGD.......MES +TENA_CHICK/864-945 GVT.AVRQD.......RES +TENA_CHICK/956-1033 SLV.AEKGR.......HKS +TENA_CHICK/1045-1124 TLY.GVIRG.......YRT +TENA_CHICK/1136-1215 YLY.GISHG.......FRT +TENA_CHICK/1227-1306 ELY.GVSSG.......RRS +TENA_CHICK/1317-1395 NII.SVKGF.......EES +TENA_CHICK/1406-1483 RVH.AVKDA.......QKS +TENA_CHICK/1494-1571 KLQ.ALSRS.......MRS +TENA_HUMAN/1254-1334 TLH.GEVRG.......HST +TENA_HUMAN/1528-1607 MVS.GFTQG.......HQT +TIE1_HUMAN/446-533 RVQlSRPGEGg...eGAWG +TIE1_HUMAN/545-632 DVQ.LYHCTLl....GPAS +TIE1_HUMAN/644-729 RMR.ASI.QGl....GDWS +TIE2_HUMAN/444-529 CVQ.LVRRGEg....GEGH +TIE2_HUMAN/543-626 RAR..VNTKAq....GEWS +TIE2_HUMAN/639-724 DIF.AENNIGs....SNPA +UFO_HUMAN/327-411 CVA.AYTAAGd....GPWS + diff --git a/forester/archive/RIO/others/hmmer/tutorial/globins50.msf b/forester/archive/RIO/others/hmmer/tutorial/globins50.msf new file mode 100644 index 0000000..2f04100 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/globins50.msf @@ -0,0 +1,427 @@ +!!AA_MULTIPLE_ALIGNMENT 1.0 +PileUp of: *.pep + + Symbol comparison table: GenRunData:blosum62.cmp CompCheck: 6430 + + GapWeight: 12 + GapLengthWeight: 4 + + pileup.msf MSF: 308 Type: P August 16, 1999 09:09 Check: 9858 .. + + Name: lgb1_pea Len: 308 Check: 2200 Weight: 1.00 + Name: lgb1_vicfa Len: 308 Check: 214 Weight: 1.00 + Name: myg_escgi Len: 308 Check: 3961 Weight: 1.00 + Name: myg_horse Len: 308 Check: 5619 Weight: 1.00 + Name: myg_progu Len: 308 Check: 6401 Weight: 1.00 + Name: myg_saisc Len: 308 Check: 6606 Weight: 1.00 + Name: myg_lycpi Len: 308 Check: 6090 Weight: 1.00 + Name: myg_mouse Len: 308 Check: 6613 Weight: 1.00 + Name: myg_musan Len: 308 Check: 3942 Weight: 1.00 + Name: hba_ailme Len: 308 Check: 4558 Weight: 1.00 + Name: hba_prolo Len: 308 Check: 5054 Weight: 1.00 + Name: hba_pagla Len: 308 Check: 5383 Weight: 1.00 + Name: hba_macfa Len: 308 Check: 5135 Weight: 1.00 + Name: hba_macsi Len: 308 Check: 5198 Weight: 1.00 + Name: hba_ponpy Len: 308 Check: 5050 Weight: 1.00 + Name: hba2_galcr Len: 308 Check: 5609 Weight: 1.00 + Name: hba_mesau Len: 308 Check: 4702 Weight: 1.00 + Name: hba2_bosmu Len: 308 Check: 4241 Weight: 1.00 + Name: hba_erieu Len: 308 Check: 4680 Weight: 1.00 + Name: hba_frapo Len: 308 Check: 3549 Weight: 1.00 + Name: hba_phaco Len: 308 Check: 4440 Weight: 1.00 + Name: hba_trioc Len: 308 Check: 5465 Weight: 1.00 + Name: hba_ansse Len: 308 Check: 3300 Weight: 1.00 + Name: hba_colli Len: 308 Check: 3816 Weight: 1.00 + Name: hbad_chlme Len: 308 Check: 4571 Weight: 1.00 + Name: hbad_pasmo Len: 308 Check: 6777 Weight: 1.00 + Name: hbaz_horse Len: 308 Check: 7187 Weight: 1.00 + Name: hba4_salir Len: 308 Check: 7329 Weight: 1.00 + Name: hbb_ornan Len: 308 Check: 2667 Weight: 1.00 + Name: hbb_tacac Len: 308 Check: 4356 Weight: 1.00 + Name: hbe_ponpy Len: 308 Check: 3827 Weight: 1.00 + Name: hbb_speci Len: 308 Check: 1556 Weight: 1.00 + Name: hbb_speto Len: 308 Check: 2051 Weight: 1.00 + Name: hbb_equhe Len: 308 Check: 3414 Weight: 1.00 + Name: hbb_sunmu Len: 308 Check: 2927 Weight: 1.00 + Name: hbb_calar Len: 308 Check: 3836 Weight: 1.00 + Name: hbb_mansp Len: 308 Check: 4322 Weight: 1.00 + Name: hbb_ursma Len: 308 Check: 4428 Weight: 1.00 + Name: hbb_rabit Len: 308 Check: 4190 Weight: 1.00 + Name: hbb_tupgl Len: 308 Check: 4185 Weight: 1.00 + Name: hbb_triin Len: 308 Check: 1163 Weight: 1.00 + Name: hbb_colli Len: 308 Check: 3958 Weight: 1.00 + Name: hbb_larri Len: 308 Check: 3517 Weight: 1.00 + Name: hbb1_varex Len: 308 Check: 6009 Weight: 1.00 + Name: hbb2_xentr Len: 308 Check: 7617 Weight: 1.00 + Name: hbbl_ranca Len: 308 Check: 5606 Weight: 1.00 + Name: hbb2_tricr Len: 308 Check: 8767 Weight: 1.00 + Name: glb2_mormr Len: 308 Check: 6103 Weight: 1.00 + Name: glbz_chith Len: 308 Check: 8634 Weight: 1.00 + Name: hbf1_ureca Len: 308 Check: 9035 Weight: 1.00 + +// + + 1 50 + lgb1_pea ~~~~~~~~~G FTDKQEALVN SSSE.FKQNL PGYSILFYTI VLEKAPAAKG +lgb1_vicfa ~~~~~~~~~G FTEKQEALVN SSSQLFKQNP SNYSVLFYTI ILQKAPTAKA + myg_escgi ~~~~~~~~~V LSDAEWQLVL NIWAKVEADV AGHGQDILIR LFKGHPETLE + myg_horse ~~~~~~~~~G LSDGEWQQVL NVWGKVEADI AGHGQEVLIR LFTGHPETLE + myg_progu ~~~~~~~~~G LSDGEWQLVL NVWGKVEGDL SGHGQEVLIR LFKGHPETLE + myg_saisc ~~~~~~~~~G LSDGEWQLVL NIWGKVEADI PSHGQEVLIS LFKGHPETLE + myg_lycpi ~~~~~~~~~G LSDGEWQIVL NIWGKVETDL AGHGQEVLIR LFKNHPETLD + myg_mouse ~~~~~~~~~G LSDGEWQLVL NVWGKVEADL AGHGQEVLIG LFKTHPETLD + myg_musan ~~~~~~~~~~ ~~~VDWEKVN SVWSAVESDL TAIGQNILLR LFEQYPESQN + hba_ailme ~~~~~~~~~V LSPADKTNVK ATWDKIGGHA GEYGGEALER TFASFPTTKT + hba_prolo ~~~~~~~~~V LSPADKANIK ATWDKIGGHA GEYGGEALER TFASFPTTKT + hba_pagla ~~~~~~~~~V LSSADKNNIK ATWDKIGSHA GEYGAEALER TFISFPTTKT + hba_macfa ~~~~~~~~~V LSPADKTNVK AAWGKVGGHA GEYGAEALER MFLSFPTTKT + hba_macsi ~~~~~~~~~V LSPADKTNVK DAWGKVGGHA GEYGAEALER MFLSFPTTKT + hba_ponpy ~~~~~~~~~V LSPADKTNVK TAWGKVGAHA GDYGAEALER MFLSFPTTKT +hba2_galcr ~~~~~~~~~V LSPTDKSNVK AAWEKVGAHA GDYGAEALER MFLSFPTTKT + hba_mesau ~~~~~~~~~V LSAKDKTNIS EAWGKIGGHA GEYGAEALER MFFVYPTTKT +hba2_bosmu ~~~~~~~~~V LSAADKGNVK AAWGKVGGHA AEYGAEALER MFLSFPTTKT + hba_erieu ~~~~~~~~~V LSATDKANVK TFWGKLGGHG GEYGGEALDR MFQAHPTTKT + hba_frapo ~~~~~~~~~V LSAADKNNVK GIFGKISSHA EDYGAEALER MFITYPSTKT + hba_phaco ~~~~~~~~~V LSAADKNNVK GIFTKIAGHA EEYGAEALER MFITYPSTKT + hba_trioc ~~~~~~~~~V LSANDKTNVK TVFTKITGHA EDYGAETLER MFITYPPTKT + hba_ansse ~~~~~~~~~V LSAADKGNVK TVFGKIGGHA EEYGAETLQR MFQTFPQTKT + hba_colli ~~~~~~~~~V LSANDKSNVK AVFAKIGGQA GDLGGEALER LFITYPQTKT +hbad_chlme ~~~~~~~~~M LTADDKKLLT QLWEKVAGHQ EEFGSEALQR MFLTYPQTKT +hbad_pasmo ~~~~~~~~~M LTAEDKKLIQ QIWGKLGGAE EEIGADALWR MFHSYPSTKT +hbaz_horse ~~~~~~~~~S LTKAERTMVV SIWGKISMQA DAVGTEALQR LFSSYPQTKT +hba4_salir ~~~~~~~~~S LSAKDKANVK AIWGKILPKS DEIGEQALSR MLVVYPQTKA + hbb_ornan ~~~~~~~~VH LSGGEKSAVT NLWGKV..NI NELGGEALGR LLVVYPWTQR + hbb_tacac ~~~~~~~~VH LSGSEKTAVT NLWGHV..NV NELGGEALGR LLVVYPWTQR + hbe_ponpy ~~~~~~~~VH FTAEEKAAVT SLWSKM..NV EEAGGEALGR LLVVYPWTQR + hbb_speci ~~~~~~~~VH LSDGEKNAIS TAWGKV..HA AEVGAEALGR LLVVYPWTQR + hbb_speto ~~~~~~~~VH LTDGEKNAIS TAWGKV..NA AEIGAEALGR LLVVYPWTQR + hbb_equhe ~~~~~~~~VQ LSGEEKAAVL ALWDKV..NE EEVGGEALGR LLVVYPWTQR + hbb_sunmu ~~~~~~~~VH LSGEEKACVT GLWGKV..NE DEVGAEALGR LLVVYPWTQR + hbb_calar ~~~~~~~~VH LTGEEKSAVT ALWGKV..NV DEVGGEALGR LLVVYPWTQR + hbb_mansp ~~~~~~~~VH LTPEEKTAVT TLWGKV..NV DEVGGEALGR LLVVYPWTQR + hbb_ursma ~~~~~~~~VH LTGEEKSLVT GLWGKV..NV DEVGGEALGR LLVVYPWTQR + hbb_rabit ~~~~~~~~VH LSSEEKSAVT ALWGKV..NV EEVGGEALGR LLVVYPWTQR + hbb_tupgl ~~~~~~~~VH LSGEEKAAVT GLWGKV..DL EKVGGQSLGS LLIVYPWTQR + hbb_triin ~~~~~~~~VH LTPEEKALVI GLWAKV..NV KEYGGEALGR LLVVYPWTQR + hbb_colli ~~~~~~~~VH WSAEEKQLIT SIWGKV..NV ADCGAEALAR LLIVYPWTQR + hbb_larri ~~~~~~~~VH WSAEEKQLIT GLWGKV..NV ADCGAEALAR LLIVYPWTQR +hbb1_varex ~~~~~~~~VH WTAEEKQLIC SLWGKI..DV GLIGGETLAG LLVIYPWTQR +hbb2_xentr ~~~~~~~~VH WTAEEKATIA SVWGKV..DI EQDGHDALSR LLVVYPWTQR +hbbl_ranca ~~~~~~~~VH WTAEEKAVIN SVWQKV..DV EQDGHEALTR LFIVYPWTQR +hbb2_tricr ~~~~~~~~VH LTAEDRKEIA AILGKV..NV DSLGGQCLAR LIVVNPWSRR +glb2_mormr PIVDSGSVSP LSDAEKNKIR AAWDIVYKNY EKNGVDILVK FFTGTPAAQA +glbz_chith ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbf1_ureca ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + + 51 100 + lgb1_pea LFSFLKD... TAGVEDSPKL QAHAEQVFGL VRDSAAQLRT KGEVVLGNAT +lgb1_vicfa MFSFLKD... SAGVVDSPKL GAHAEKVFGM VRDSAVQLRA TGEVVLDGKD + myg_escgi KFDKFKHLKT EAEMKASEDL KKHGNTVLTA LGGILKKKGH ...HEAELKP + myg_horse KFDKFKHLKT EAEMKASEDL KKHGTVVLTA LGGILKKKGH ...HEAELKP + myg_progu KFDKFKHLKA EDEMRASEEL KKHGTTVLTA LGGILKKKGQ ...HAAELAP + myg_saisc KFDKFKHLKS EDEMKASEEL KKHGTTVLTA LGGILKKKGQ ...HEAELKP + myg_lycpi KFDKFKHLKT EDEMKGSEDL KKHGNTVLTA LGGILKKKGH ...HEAELKP + myg_mouse KFDKFKNLKS EEDMKGSEDL KKHGCTVLTA LGTILKKKGQ ...HAAEIQP + myg_musan HFPKFKN.KS LGELKDTADI KAQADTVLSA LGNIVKKKGS ...HSQPVKA + hba_ailme YFPHF.DLSP .....GSAQV KAHGKKVADA LTTAVGHLDD ...LPGALSA + hba_prolo YFPHF.DLSP .....GSAQV KAHGKKVADA LTLAVGHLDD ...LPGALSA + hba_pagla YFPHF.DLSH .....GSAQV KAHGKKVADA LTLAVGHLED ...LPNALSA + hba_macfa YFPHF.DLSH .....GSAQV KGHGKKVADA LTLAVGHVDD ...MPQALSA + hba_macsi YFPHF.DLSH .....GSAQV KGHGKKVADA LTLAVGHVDD ...MPQALSA + hba_ponpy YFPHF.DLSH .....GSAQV KDHGKKVADA LTNAVAHVDD ...MPNALSA +hba2_galcr YFPHF.DLSH .....GSTQV KGHGKKVADA LTNAVLHVDD ...MPSALSA + hba_mesau YFPHF.DVSH .....GSAQV KGHGKKVADA LTNAVGHLDD ...LPGALSA +hba2_bosmu YFPHF.DLSH .....GSAQV KGHGAKVAAA LTKAVGHLDD ...LPGALSE + hba_erieu YFPHF.DLNP .....GSAQV KGHGKKVADA LTTAVNNLDD ...VPGALSA + hba_frapo YFPHF.DLSH .....GSAQV KGHGKKVVAA LIEAANHIDD ...IAGTLSK + hba_phaco YFPHF.DLSH .....GSAQI KGHGKKVVAA LIEAVNHIDD ...ITGTLSK + hba_trioc YFPHF.DLHH .....GSAQI KAHGKKVVGA LIEAVNHIDD ...IAGALSK + hba_ansse YFPHF.DLQP .....GSAQI KAHGKKVAAA LVEAANHIDD ...IAGALSK + hba_colli YFPHF.DLSH .....GSAQI KGHGKKVAEA LVEAANHIDD ...IAGALSK +hbad_chlme YFPHF.DLHP .....GSEQV RGHGKKVAAA LGNAVKSLDN ...LSQALSE +hbad_pasmo YFPHF.DLSQ .....GSDQI RGHGKKVVAA LSNAIKNLDN ...LSQALSE +hbaz_horse YFPHF.DLHE .....GSPQL RAHGSKVAAA VGDAVKSIDN ...VAGALAK +hba4_salir YFSHWASVAP .....GSAPV KKHGITIMNQ IDDCVGHMDD ...LFGFLTK + hbb_ornan FFEAFGDLSS AGAVMGNPKV KAHGAKVLTS FGDALKNLDD ...LKGTFAK + hbb_tacac FFESFGDLSS ADAVMGNAKV KAHGAKVLTS FGDALKNLDN ...LKGTFAK + hbe_ponpy FFDSFGNLSS PSAILGNPKV KAHGKKVLTS FGDAIKNMDN ...LKTTFAK + hbb_speci FFDSFGDLSS ASAVMGNAKV KAHGKKVIDS FSNGLKHLDN ...LKGTFAS + hbb_speto FFDSFGDLSS ASAVMGNAKV KAHGKKVIDS FSNGLKHLDN ...LKGTFAS + hbb_equhe FFDSFGDLSN PAAVMGNPKV KAHGKKVLHS FGEGVHHLDN ...LKGTFAQ + hbb_sunmu FFDSFGDLSS ASAVMGNPKV KAHGKKVLHS LGEGVANLDN ...LKGTFAK + hbb_calar FFESFGDLST PDAVMNNPKV KAHGKKVLGA FSDGLTHLDN ...LKGTFAH + hbb_mansp FFDSFGDLSS PDAVMGNPKV KAHGKKVLGA FSDGLNHLDN ...LKGTFAQ + hbb_ursma FFDSFGDLSS ADAIMNNPKV KAHGKKVLNS FSDGLKNLDN ...LKGTFAK + hbb_rabit FFESFGDLSS ANAVMNNPKV KAHGKKVLAA FSEGLSHLDN ...LKGTFAK + hbb_tupgl FFDSFGDLSS PSAVMSNPKV KAHGKKVLTS FSDGLNHLDN ...LKGTFAK + hbb_triin FFEHFGDLSS ASAIMNNPKV KAHGEKVFTS FGDGLKHLED ...LKGAFAE + hbb_colli FFSSFGNLSS ATAISGNPNV KAHGKKVLTS FGDAVKNLDN ...IKGTFAQ + hbb_larri FFASFGNLSS PTAINGNPMV RAHGKKVLTS FGEAVKNLDN ...IKNTFAQ +hbb1_varex QFSHFGNLSS PTAIAGNPRV KAHGKKVLTS FGDAIKNLDN ...IKDTFAK +hbb2_xentr YFSSFGNLSN VSAVSGNVKV KAHGNKVLSA VGSAIQHLDD ...VKSHLKG +hbbl_ranca YFSTFGDLSS PAAIAGNPKV HAHGKKILGA IDNAIHNLDD ...VKGTLHD +hbb2_tricr YFHDFGDLSS CDAICRNPKV LAHGAKVMRS IVEATKHLDN ...LREYYAD +glb2_mormr FFPKFKGLTT ADALKKSSDV RWHAERIINA VNDAVKSMDD TEKMSMKLQE +glbz_chith ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbf1_ureca ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + + 101 150 + lgb1_pea LGAIHVQKGV TNP.HFVVVK EALLQTIKKA SGNNWSEELN TAWEVAYDGL +lgb1_vicfa .GSIHIQKGV LDP.HFVVVK EALLKTIKEA SGDKWSEELS AAWEVAYDGL + myg_escgi LAQSHATKHK IPIKYLEFIS DAIIHVLHSR HPGDFGADAQ AAMNKALELF + myg_horse LAQSHATKHK IPIKYLEFIS DAIIHVLHSK HPGNFGADAQ GAMTKALELF + myg_progu LAQSHATKHK IPVKYLEFIS EAIIQVLQSK HPGDFGADAQ GAMSKALELF + myg_saisc LAQSHATKHK IPVKYLELIS DAIVHVLQKK HPGDFGADAQ GAMKKALELF + myg_lycpi LAQSHATKHK IPVKYLEFIS DAIIQVLQNK HSGDFHADTE AAMKKALELF + myg_mouse LAQSHATKHK IPVKYLEFIS EIIIEVLKKR HSGDFGADAQ GAMSKALELF + myg_musan LAATHITTHK IPPHYFTKIT TIAVDVLSEM YPSEMNAQVQ AAFSGAFKII + hba_ailme LSDLHAHKLR VDPVNFKLLS HCLLVTLASH HPAEFTPAVH ASLDKFFSAV + hba_prolo LSDLHAYKLR VDPVNFKLLS HCLLVTLACH HPAEFTPAVH ASLDKFFTSV + hba_pagla LSDLHAYKLR VDPVNFKLLS HCLLVTLACH HPAEFTPAVH SALDKFFSAV + hba_macfa LSDLHAHKLR VDPVNFKLLS HCLLVTLAAH LPAEFTPAVH ASLDKFLASV + hba_macsi LSDLHAHKLR VDPVNFKLLS HCLLVTLAAH LPAEFTPAVH ASLDKFLASV + hba_ponpy LSDLHAHKLR VDPVNFKLLS HCLLVTLAAH LPAEFTPAVH ASLDKFLASV +hba2_galcr LSDLHAHKLR VDPVNFKLLR HCLLVTLACH HPAEFTPAVH ASLDKFMASV + hba_mesau LSDLHAHKLR VDPVNFKLLS HCLLVTLANH HPADFTPAVH ASLDKFFASV +hba2_bosmu LSDLHAHKLR VDPVNFKLLS HSLLVTLASH LPSDFTPAVH ASLDKFLANV + hba_erieu LSDLHAHKLR VDPVNFKLLS HCLLVTLALH HPADFTPAVH ASLDKFLATV + hba_frapo LSDLHAHKLR VDPVNFKLLG QCFLVVVAIH HPSALTPEVH ASLDKFLCAV + hba_phaco LSDLHAHKLR VDPVNFKLLG QCFLVVVAIH HPSALTPEVH ASLDKFLCAV + hba_trioc LSDLHAQKLR VDPVNFKLLG QCFLVVVAIH HPSVLTPEVH ASLDKFLCAV + hba_ansse LSDLHAQKLR VDPVNFKFLG HCFLVVLAIH HPSLLTPEVH ASMDKFLCAV + hba_colli LSDLHAQKLR VDPVNFKLLG HCFLVVVAVH FPSLLTPEVH ASLDKFVLAV +hbad_chlme LSNLHAYNLR VDPANFKLLA QCFQVVLATH LGKDYSPEMH AAFDKFLSAV +hbad_pasmo LSNLHAYNLR VDPVNFKFLS QCLQVSLATR LGKEYSPEVH SAVDKFMSAV +hbaz_horse LSELHAYILR VDPVNFKFLS HCLLVTLASR LPADFTADAH AAWDKFLSIV +hba4_salir LSELHATKLR VDPTNFKILA HNLIVVIAAY FPAEFTPEIH LSVDKFLQQL + hbb_ornan LSELHCDKLH VDPENFNRLG NVLIVVLARH FSKDFSPEVQ AAWQKLVSGV + hbb_tacac LSELHCDKLH VDPENFNRLG NVLVVVLARH FSKEFTPEAQ AAWQKLVSGV + hbe_ponpy LSELHCDKLH VDPENFKLLG NVMVIILATH FGKEFTPEVQ AAWQKLVSAV + hbb_speci LSELHCDKLH VDPENFKLLG NMIVIVMAHH LGKDFTPEAQ AAFQKVVAGV + hbb_speto LSELHCDKLH VDPENFKLLG NMIVIVMAHH LGKDFTPEAQ AAFQKVVAGV + hbb_equhe LSELHCDKLH VDPENFRLLG NVLVVVLARH FGKDFTPELQ ASYQKVVAGV + hbb_sunmu LSELHCDKLH VDPENFRLLG NVLVVVLASK FGKEFTPPVQ AAFQKVVAGV + hbb_calar LSELHCDKLH VDPENFRLLG NVLVCVLAHH FGKEFTPVVQ AAYQKVVAGV + hbb_mansp LSELHCDKLH VDPENFKLLG NVLVCVLAHH FGKEFTPQVQ AAYQKVVAGV + hbb_ursma LSELHCDKLH VDPENFKLLG NVLVCVLAHH FGKEFTPQVQ AAYQKVVAGV + hbb_rabit LSELHCDKLH VDPENFRLLG NVLVIVLSHH FGKEFTPQVQ AAYQKVVAGV + hbb_tupgl LSELHCDKLH VDPENFRLLG NVLVRVLACN FGPEFTPQVQ AAFQKVVAGV + hbb_triin LSELHCDKLH VDPENFRLLG NVLVCVLARH FGKEFSPEAQ AAYQKVVAGV + hbb_colli LSELHCDKLH VDPENFRLLG DILVIILAAH FGKDFTPECQ AAWQKLVRVV + hbb_larri LSELHCDKLH VDPENFRLLG DILIIVLAAH FAKDFTPDSQ AAWQKLVRVV +hbb1_varex LSELHCDKLH VDPTNFKLLG NVLVIVLADH HGKEFTPAHH AAYQKLVNVV +hbb2_xentr LSKSHAEDLH VDPENFKRLA DVLVIVLAAK LGSAFTPQVQ AVWEKLNATL +hbbl_ranca LSEEHANELH VDPENFRRLG EVLIVVLGAK LGKAFSPQVQ HVWEKFIAVL +hbb2_tricr LSVTHSLKFY VDPENFKLFS GIVIVCLALT LQTDFSCHKQ LAFEKLMKGV +glb2_mormr LSVKHAQSFY VDRQYFKVLA GII....... ..ADTTAPGD AGFEKLMSMI +glbz_chith ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbf1_ureca ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + + 151 200 + lgb1_pea ATAIKKAMKT A~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +lgb1_vicfa ATAIKAA~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_escgi RKDIAAKYKE LGFQG~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_horse RNDIAAKYKE LGFQG~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_progu RNDIAAKYKE LGFQG~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_saisc RNDMAAKYKE LGFQG~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_lycpi RNDIAAKYKE LGFQG~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_mouse RNDIAAKYKE LGFQG~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_musan CSDIEKEYKA ANFQG~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ailme STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_prolo STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_pagla STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_macfa STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_macsi STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ponpy STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba2_galcr STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_mesau STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba2_bosmu STVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_erieu ATVLTSKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_frapo GNVLTAKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_phaco GTVLTAKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_trioc GNVLSAKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ansse ATVLTAKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_colli GTVLTAKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbad_chlme AAVLAEKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbad_pasmo ASVLAEKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbaz_horse SSVLTEKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba4_salir ALALAEKYR~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_ornan AHALGHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_tacac SHALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbe_ponpy AIALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_speci ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_speto ANALSHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_equhe ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_sunmu ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_calar ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_mansp ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_ursma ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_rabit ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_tupgl ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_triin ANALAHKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_colli AHALARKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_larri AHALARKYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb1_varex SHSLARRYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb2_xentr VAALSHGYF~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbbl_ranca VDALSHSYH~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb2_tricr SHALGHGY~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +glb2_mormr CILLSSAY~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +glbz_chith ~~~~~MKFII LALCVAAASA LSGDQIGLVQ STYGKVKGDS VGILYAVFKA +hbf1_ureca ~~~~~~~~~~ ~~~~GLTTAQ IKAIQDHWFL NIKGCLQAAA DSIFFKYLTA + + 201 250 + lgb1_pea ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +lgb1_vicfa ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_escgi ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_horse ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_progu ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_saisc ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_lycpi ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_mouse ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_musan ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ailme ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_prolo ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_pagla ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_macfa ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_macsi ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ponpy ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba2_galcr ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_mesau ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba2_bosmu ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_erieu ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_frapo ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_phaco ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_trioc ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ansse ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_colli ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbad_chlme ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbad_pasmo ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbaz_horse ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba4_salir ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_ornan ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_tacac ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbe_ponpy ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_speci ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_speto ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_equhe ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_sunmu ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_calar ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_mansp ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_ursma ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_rabit ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_tupgl ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_triin ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_colli ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_larri ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb1_varex ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb2_xentr ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbbl_ranca ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb2_tricr ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +glb2_mormr ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +glbz_chith DPTIQAAFPQ FVGKDLDAIK GGAEFSTHAG RIVGFLGGVI DDL.PNIGKH +hbf1_ureca YPGDLAFFHK FSSVPLYGLR SNPAYKAQTL TVINYLDKVV DALGGNAGAL + + 251 300 + lgb1_pea ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +lgb1_vicfa ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_escgi ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_horse ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_progu ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_saisc ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_lycpi ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_mouse ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + myg_musan ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ailme ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_prolo ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_pagla ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_macfa ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_macsi ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ponpy ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba2_galcr ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_mesau ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba2_bosmu ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_erieu ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_frapo ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_phaco ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_trioc ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_ansse ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hba_colli ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbad_chlme ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbad_pasmo ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbaz_horse ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hba4_salir ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_ornan ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_tacac ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbe_ponpy ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_speci ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_speto ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_equhe ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_sunmu ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_calar ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_mansp ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_ursma ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_rabit ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_tupgl ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_triin ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_colli ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ + hbb_larri ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb1_varex ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb2_xentr ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbbl_ranca ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +hbb2_tricr ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +glb2_mormr ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ +glbz_chith VDALVATHKP RGVTHAQFNN FRAAFIAYLK GHVDYTAAVE AAWGATFDAF +hbf1_ureca MKAKVPSHDA MGITPKHFGQ LLKLVGGVFQ EEFSADPTTV AAWGDAAGVL + + 301 + lgb1_pea ~~~~~~~~ +lgb1_vicfa ~~~~~~~~ + myg_escgi ~~~~~~~~ + myg_horse ~~~~~~~~ + myg_progu ~~~~~~~~ + myg_saisc ~~~~~~~~ + myg_lycpi ~~~~~~~~ + myg_mouse ~~~~~~~~ + myg_musan ~~~~~~~~ + hba_ailme ~~~~~~~~ + hba_prolo ~~~~~~~~ + hba_pagla ~~~~~~~~ + hba_macfa ~~~~~~~~ + hba_macsi ~~~~~~~~ + hba_ponpy ~~~~~~~~ +hba2_galcr ~~~~~~~~ + hba_mesau ~~~~~~~~ +hba2_bosmu ~~~~~~~~ + hba_erieu ~~~~~~~~ + hba_frapo ~~~~~~~~ + hba_phaco ~~~~~~~~ + hba_trioc ~~~~~~~~ + hba_ansse ~~~~~~~~ + hba_colli ~~~~~~~~ +hbad_chlme ~~~~~~~~ +hbad_pasmo ~~~~~~~~ +hbaz_horse ~~~~~~~~ +hba4_salir ~~~~~~~~ + hbb_ornan ~~~~~~~~ + hbb_tacac ~~~~~~~~ + hbe_ponpy ~~~~~~~~ + hbb_speci ~~~~~~~~ + hbb_speto ~~~~~~~~ + hbb_equhe ~~~~~~~~ + hbb_sunmu ~~~~~~~~ + hbb_calar ~~~~~~~~ + hbb_mansp ~~~~~~~~ + hbb_ursma ~~~~~~~~ + hbb_rabit ~~~~~~~~ + hbb_tupgl ~~~~~~~~ + hbb_triin ~~~~~~~~ + hbb_colli ~~~~~~~~ + hbb_larri ~~~~~~~~ +hbb1_varex ~~~~~~~~ +hbb2_xentr ~~~~~~~~ +hbbl_ranca ~~~~~~~~ +hbb2_tricr ~~~~~~~~ +glb2_mormr ~~~~~~~~ +glbz_chith FGAVFAKM +hbf1_ureca VAAMK~~~ + diff --git a/forester/archive/RIO/others/hmmer/tutorial/globins630.fa b/forester/archive/RIO/others/hmmer/tutorial/globins630.fa new file mode 100644 index 0000000..b936a34 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/globins630.fa @@ -0,0 +1,2520 @@ +> BAHG_VITSP +MLDQQTINIIKATVPVLKEHGVTITTTFYKNLFAKHPEVRPLFDMGRQESLEQPKALAM +TVLAAAQNIENLPAILPAVKKIAVKHCQAGVAAAHYPIVGQELLGAIKEVLGDAATDDIL +DAWGKAYGVIADVfiqveadLYAQAVE +> GLB1_ANABR +PSVQGAAAQLTADVKKDLRDSWKVIGSDKKGNGVALMTTLFADNQETIGYFKRLGNVSQ +GMANDKLRGHSITLMYALQNFIDQLDNTDDLVCVVEKFAVNHITRKISAAEFGKINGPIK +KVLASKNFGDKYANAWAKLVAVVQAAL +> GLB1_ARTSX +ERVDPITGLSGLEKNAILDTWGKVRGNLQEVGKATFGKLFAAHPEYQQMFRFFQGVQLA +FLVQSPKFAAHTQRVVSALDQTLLALNRPSDQFVYMIKELGLDHINRGTDRSFVEYLKES +LGDSVDEFTVQSFGEVIVNFLNEGLRQA +> GLB1_CALSO +VSANDIKNVQDTWGKLYDQWDAVHAsKFYNKLFKDSEDISEAFVKAGTGSGIAMKRQAL +VFGAILQEFVANLNDPTALTLKIKGLCATHKTRGITNMELFAFALADLVAYMGTtISFTA +AQKASWTAVNDVILHQMSSYFATVA +> GLB1_CHITH +GPSGDQIAAAKASWNTVKNNQVDILYAVFKANPDIQTAFSQFAGKDLDSIKGTPDFSKH +AGRVVGLFSEVMDLLGNDANTPTILAKAKDFGKSHKSRASPAQLDNFRKSLVVYLKGATK +WDSAVESSWAPVLDFVFSTLKNEL +> GLB1_GLYDI +GLSAAQRQVIAATWKDIAGADNGAGVGKDCLIKFLSAHPQMAAVFGFSGASDPGVAALG +AKVLAQIGVAVSHLGDEGKMVAQMKAVGVRHKGYGNKHIKAQYFEPLGASLLSAMEHRIG +GKMNAAAKDAWAAAYADISGALISGLQS +> GLB1_LUMTE +ECLVTEGLKVKLQWASAFGHAHQRVAFGLELwkgILREHPEIKAPFSRVRGDNIYSPQF +GAHSQRVLSGLDITISMLDTPDmLAAQLAHLKVQHVERNLKPEFFDIFLKHLLHVLGDRL +GTHFDFGAWHDCVDQIIDGIKDI +> GLB1_MORMR +PIVDSGSVSPLSDAEKNKIRAAWDLVYKDYEKTGVDILVKFFTGTPAAQAFFPKFKGLT +TADDLKQSSDVRWHAERIINAVNDAVKSMDDTEKMSMKLKELSIKHAQSFYVDRQYFKVL +AGIIADTTAPGDAGFEKLMSMICILLSSAY +> GLB1_PARCH +GGTLAIQSHGDLTLAQKKIVRKTWHQLMRNKTSFVTDLFIRIFAYDPAAQNKFPQMAGM +SASQLRSSRQMQAHAIRVSSIMSEYIEELDSDILPELLATLARTHDLNKVGPAHYDLFAK +VLMEALQAELGSDFNQKTRDSWAKAFSIVQAVLLVKHG +> GLB1_PETMA +PIVDSGSVPALTAAEKATIRTAWAPVYAKYQSTGVDILIKFFTSNPAAQAFFPKFQGLT +SADQLKKSMDVRWHAERIINAVNDAVVAMDDTEKMSLKLRELSGKHAKSFQVDPQYFKVL +AAVIVDTVLPGDAGLEKLMSMICILLRSSY +> GLB1_PHESE +DCNTLKRFKVKHQWQQVFSGEhHRTEFSLHFWKEFLHDHPDLVSLFKRVQGENIYSPEF +QAHGIRVLAGLDSVIGVLDEDDTFTVQLAHLKAQHTERGTKPEYFDLFGTQLFDILGDKL +GTHFDQAAWRDCYAVIAAGIKP +> GLB1_SCAIN +PSVYDAAAQLTADVKKDLRDSWKVIGSDKKGNGVALMTTLFADNQETIGYFKRLGNVSQ +GMANDKLRGHSITLMYALQNFIDQLDNPDDLVCVVEKFAVNHITRKISAAEFGKINGPIK +KVLASKNFGDKYANAWAKLVAVVQAAL +> GLB1_TYLHE +TDCGILQRIKVKQQWAQVYSVGESRTDFAIDVFNNFFRTNPDRSLFNRVNGDNVYSPEF +KAHMVRVFAGFDILISVLDDKPVLDQALAHYAAFHKQFGTIPFKAFGQTMFQTIAEHIHG +ADIGAWRACYAEqIVTGITA +> GLB2_ANATR +PSVQDAAAQLTADVKKDLRDSWKVLGSDKKGDGMALMTTLFNDHQETIAYFKRMGDVSQ +GMANSKLRGHSITLMYALQNFIDQLDSTDDLICVVEKFAVNHITRKISGAEFGKINGPMK +KVLASKNFGDKYANAWAKLVGVVQAAL +> GLB2_CALSO +VSQADIAAVQTSWRRCYCSWDNEDGLKFYQTLFDSNSKIRHAFESAGATNDTEMEKQAN +LFGLMMTQFIDNLDDTTALNYKISGLMATHKTRNVVDPALFAIALNELVKFIGNQQPAWK +NVTAVILSQMKIALSSN +> GLB2_CHITH +APLSADEASLVRGSWAQVKHSEVDILYYIFKANPDIMAKFPQFAGKDLETLKGTGQFAT +HAGRIVGFVSEIVALMGNSANMPAMETLIKDMAANHKARGIPKAQFNEFRASLVSYLQSK +VSWNDSLGAAWTQGLDNVFNMMFSYL +> GLB2_LUMTE +KKQCGVLEGLKVKSEWGRAYGSGhDREAFSQAIWRATFAQVPESRSLFKRVHGDDTSHP +AFIAHAERVLGGLDIAISTLDQPATLKEELDHLQVQHEGRKIPDNYFDAFKTAILHVVAA +QLGRCYDREAWDACIDHIEDGIKGHH +> GLB2_MORMR +PIVDSGSVSPLSDAEKNKIRAAWDIVYKNYEKNGVDILVKFFTGTPAAQAFFPKFKGLT +TADALKKSSDVRWHAERIINAVNDAVKSMDDTEKMSMKLQELSVKHAQSFYVDRQYFKVL +AGIIADTTAPGDAGFEKLMSMICILLSSAY +> GLB2_TYLHE +SSDHCGPLQRLKVKQQWAKAYGVGHERVELgialwksMFAQDNDARDLFKRVHGEDVHS +PAFEAHMARVFNGLDRVISSLTDEPVLNAQLEHLRQQHIKLGITGHMFNLMRTGLAYVLP +AQLGRCFDKEAWAACWDEVIYPGIKHD +> GLB3_CHITH +MKFLILALCFAAASALSADQISTVQASFDKVKGDPVGILYAVFKADPSIMAKFTQFAGK +DLESIKGTAPFEIHANRIVGFFSKIIGELPNIEADVNTFVASHKPRGVTHDQLNNFRAGF +VSYMKAHTDFAGAEAAWGATLDTFFGMIFSKM +> GLB3_CHITP +LSADQISTVQASFDKVKGDPVGILYAVFKADPSIMAKFTQFAGKDLESIKGTAPFETHA +NRIVGFFSKIIGELPNIEADVNTFVASHKPRGVTHDQLNNFRAGFVSYMKAHTDFAGAEA +AWGATLDTFFGMIFSKM +> GLB3_LAMSP +YECGPLQRLKVKRQWAEAYGSGnDREEFGHFIWTHVFKDAPSARDLFKRVRGDNIHTPA +FRAHATRVLGGLDMCIALLDDEGVLNTQLAHLASQHSSRGVSAAQYDVVEHSVMMGVEHE +IGqNVFDKDAWQACLDVITGGIQGN +> GLB3_MORMR +PIVDSGSVSPLTAADKTKILAAWDLVYKNYEKNSVDILVKFFTGTPAAQAFFPKFKGLT +TADDLKKSSDVRWHAERIINAVNDAVKSMDDTEKMSMKLKELSNKHVKNFNVDRKYFKVL +AGVIADTVAPGDASFEKLMSIICILLNSAY +> GLB3_MYXGL +PITDHGQPPTLSEGDKKAIRESWPQIYKNFEQNSLAVLLEFLKKFPKAQDSFPKFSAKK +SHLEQDPAVKLQAEVIINAVNHTIGLMDKEAAMKKYLKDLSTKHSTEFQVNPDMFKELSA +VFVSTMGGKAAYEKLFSIIATLLRSTYDA +> GLB3_PETMA +PIVDSGSVAPLSAAEKTKIRSAWAPVYSNYETTGVDILVKFFTSTPAAQEFFPKFKGLT +TADQLKKSADVRWHAERIINAVNDAVVSMDDTEKMSMKLGDLSGKHAKSFQVDPQYFKVL +AAVIADTVAAGDAGFEKLMSMICILLRSAY +> GLB3_TYLHE +DDCCSAADRHEVLDNWKGIWSAEftgRRVAIGQAIFQELFALDPNAKGVFGRVNVDKPS +EADWKAHVIRVINGLDLAVNLLEDPKALQEELKHLARQHRERSGVKAVYFDEMEKALLKV +LPQVSSHFNSGAWDRCFTRIADVIKAELP +> GLB4_CHITH +MKLLILALCFAAASALTADQISTVQSSFAGVKGDAVGILYAVFKADPSIQAKFTQFAGK +DLDSIKGSADFSAHANKIVGFFSKIIGDLPNIDGDVTTFVASHTPRGVTHDQLNNFRAGF +VSYMKAHTDFAGAEAAWGATLDAFFGMVFAKM +> GLB4_GLYDI +GLSAAQRQVVASTWKDIAGSDNGAGVGKECFTKFLSAHHDIAAVFGFSGASDPGVADLG +AKVLAQIGVAVSHLGDEGKMVAEMKAVGVRHKGYGYKHIKAEYFEPLGASLLSAMEHRIG +GKMTAAAKDAWAAAYADISGALISGLQS +> GLB4_LUMTE +ADDEDCCSYEDRREIRHIWDDVWSSSftdRRVAIVRAVFDDLFKHYPTSKALFERVKID +EPESGEFKSHLVRVANGLDLLINLLDDTLVLQSHLGHLADQHIQRKGVTKEYFRGIGEAF +ARVLPQVLSCFNVDAWNRCFHRLVARIAKDLP +> GLB4_TYLHE +DTCCSIEDRREVQALWRSIWSAEDTGRRTLigrllfEELFEIDGATKGLFKRVNVDDTH +SPEEFAHVLRVVNGLDTLIGVLGDSDTLNSLIDHLAEQHKARAGFKTVYFKEFGKALNHV +LPEVASCFNPEAWNHCFDGLVDVISHRIDG +> GLB5_PETMA +PIVDTGSVAPLSAAEKTKIRSAWAPVYSTYETSGVDILVKFFTSTPAAQEFFPKFKGLT +TADQLKKSADVRWHAERIINAVNDAVASMDDTEKMSMKLRDLSGKHAKSFQVDPQYFKVL +AAVIADTVAAGDAGFEKLMSMICILLRSAY +> GLB6_CHITH +AVLTTEQADLVKKTWSTVKFNEVDILYAVFKAYPDIMAKFPQFAGKDLDSIKDSAAFAT +HATRIVSFLSEVISLAGSDANIPAIQNLAKELATSHKPRGVSKDQFTEFRTALFTYLKAH +INFDGPTETAWTLALDTTYAMLFSAMDS +> GLB7_ARTSX +ALTALEKQSIQDIWTILKAVGLEFLqvkmfGKLFADHPEYKAHFDNFLTAIFSVAedlv +pKLRAHLHRVIDAFDLVIFALGRESLRGSLKDLGIFHTGRDIVDPVEsltgFKLMVAVIE +EGLDTFRAVPEYSKGLEGrFGNVDNINENAPFR +> GLB7_CHITH +APLSADQASLVKSTWAQVRNSEVEILAAVFTAYPDIQARFPQFAGKDVASIKDTGAFAT +HAGRIVGFVSEIIALIGNESNAPAVQTLVGQLAASHKARGISQAQFNEFRAGLVSYVSSN +VAWNAAAESAWTAGLDNIFGLLFAAL +> GLB8_CHITH +AVTPMSADQLALFKSSWNTVKHNEVDILYAVFKANPDIQAKFPQFAGKDLDSIKDSADF +AVHSGRIVGFFSEVIGLIGNPENRPALKTLIDGLASSHKARGIEKAQFEEFRASLVDYLS +HHLDWNDTMKSTWDLALNNmFFYILHALEVAQ +> GLB9_CHITH +DPVSSDEANAIRASWAGVKHNEVDILAAVFSDHPDIQARFPQFAGKDLASIKDTGAFAT +HAGRIVGFISEIVALVGNESNAPAMATLINELSTSHHNRGITKGQFNEFRSSLVSYLSSH +ASWNDATADAWTHGLDNIFGMIFAHL +> GLBA_ANATR +VADAVAKVCGSEAIKGNLRRSWGVLMSADIEATGLTYLANLFTLRPDTKTYFTRLGDVQ +KGKANSKLRGHAITLTYALDWFVDSLDDPSRLKCVVEKFAVNHINRKISGDAFGSIIPEM +KETLKARMGSYSDDVGAAWVQAILGMQNAVLSAL +> GLBA_SCAIN +VADAVAKVCGSEAIKANLRRSWGVLSADIEATGLMLMSNLFTLRPDTKTYFTRLGDVQK +GKANSKLRGHAITLTYALNNFVDSLDDPSRLKCVVEKFAVNHINRKISGDAFGAIVEPMK +ETLKARMGNYYSDDVAGAWAALVGVVQAAL +> GLBB_ANATR +STVAELANAVVSNADQKDLLRLSWGVLSVDMEGTGLMLMANLFKTSSAARTKFARLGDV +SAGKDNSKLRGHSITLMYALQNFIDALDNVDRLKCVVEKFAVNHINRQISADEFGEIVGP +LRQTLKARMGSYFDEDTVSAWAALVAVVQASL +> GLBB_SCAIN +SKVAELANAVVSNADQKDLLRMSWGVLSVDMEGTGLMLMANLFKTSPSAKGKFARLGDV +SAGKDNSKLRGHSITLMYALQNFVDALDDVERLKCVVEKFAVNHINRQISADEFGEIVGP +LRQTLKARMGNYFDEDTVSAWASLVAVVQASL +> GLBC_CAUAR +GTLAIQAQGDLTLAQKKIVRKTWHQLMRNKTSFVTDVFIRIFAYDPSAQNKFPQMAGMS +ASQLRSSRQMQAHAIRVSSIMSEYVEELDSDILPELLATLARTHDLNKVGADHYNLFAKV +LMEALQAELGSAFNEKTRDAWAKAFSVVQAVLLVKHGN +> GLBC_CHITH +MKFFAVLALCIVGaiaSPLTADEASLVQSSWKAVSHNEVDILAAVFAAYPDIQAKFPQF +AGKDLASIKDTGAFATHATRIVSFLSEVIALSGNESNASAVNSLVSKLGDDHKARGVSAA +QFGEFRTALVAYLSNHVSWGDNVAAAWNKALDNTYAIVVPRL +> GLBD_CAUAR +GQATSFQSVGDLTPAEKDLIRSTWDQLMTHRTGFVADVFIRIFHNDPWAQRKFPQMAGL +SPAELRTSRQMHAHAIRVSALMTTYIDEMDTEVLPELLATLTRTHDKNHVGKKNYDLFGK +VLMEAIKAELGVGFTKQVHDAWAKTFAIVQGVLITKHAS +> GLBD_CHITH +MKFFAVLALCIVGaiaSPLTADEASLVQSSWKAVSHNEVDILAAVFAAYPDIQAKFPQF +AGKDLASIKDTGAFATHATRIVSFLSEVIALSGNASNAAAVEGLLNKLGSDHKARGVSAA +QFGEFRTALVSYLSNHVSWGDNVAAAWNKALDNTMAVAVAHL +> GLBE_CHITH +MKFFAVLALCIVGaiaSPLTADEASLVQSSWKAVSHNEVEILAAVFAAYPDIQNKFSQF +AGKDLASIKDTGAFATHATRIVSFLSEVIALSGNTSNAAAVNSLVSKLGDDHKARGVSAA +QFGEFRTALVAYLQANVSWGDNVAAAWNKALDNTFAIVVPRL +> GLBF_CHITH +MKFFAVLALCIVGaiaSPLTADEASLVQSSWKAVSHNEVEILAAVFAAYPDIQNKFSQF +AGKDLASIKDTGAFATHATRIVSFLSEVIALSGNDSNAAAVNSLVSKLGDDHKARGVSAA +QFGEFRTALVAYLQANVSWGDNVAAAWNKALDNTFAIVVPRL +> GLBH_CHITH +MKFFAVLALCVVGaiaSPLSADEAAIVKSSWDQVKHNEVDILAAVFAAYPDIQAKFPQF +AGKDLASIKDTAAFATHATRIVSFFTEVISLSGNQANLSAVYALVSKLGVDHKARGISAA +QFGEFRTALVSYLQAHVSWGDNVAAAWNHALDNTYAVALKSLE +> GLBI_CHITP +MKFFAVLALCIVGaiaSPLTADEASLVQSSWKAVSHNEVEILAAVFAAYPDIQNKFPQF +AGKDLASIKDTGAFATHATRIVSFLSEVIALSGNESNASAVNSLVSKLGDDHKARGVSAA +QFGEFRTALVAYLQANVSWGDNVAAAWNKALDNTFAIVVPRL +> GLBM_ANATR +STFGELANEVVNNSYHKDLLRLSWGVLSDDMEGTGLMLMANLFNMSPESRLKFGRLGHL +STGRDNSKLRGHSITLMYALKNFVDALDDVDRLKCVVEKFAVNHINRQISAEEFGKIVGP +FRAVLRIRMGDYFDEEIVAAWAALIAVVQAAL +> GLBT_CHITH +VATPAMPSMTDAQVAAVKGDWEKIKGSGVEILYFFLNKFPGNFPMFKKLGNDLAAAKGT +AEFKDQADKIIAFLQGVIEKLGSDMGGAKALLNQLGTSHKAMGITKDQFDQFRQALTELL +GNLGFGGNIGAWNATVDLMFHVIFNALDGTPV +> GLBX_CHITH +DPEWHTLDAHEVEQVQATWKAVSHDEVEILYTVFKAHPDIMAKFPKFAGKDLEAIKDTA +DFAVHASRIIGFFGEYVTLLGSSGNQAAIRTLLHDLGVFHKTRGITKAQFGEFRETMTAY +LKGHNKwnADISHSWDDAFDKAFSVIFEVLES +> GLBY_CHITP +MKVLAIFALCIIGALATPcDDFKIMQEAWNTMKNEEVEILYTVFKAYPDIQAKFPQFVG +KDLETIKGTAEFAVHATRIVSFMTEVISLLGNPDNLPAIMSLLSKLGKDHKGRGITVKQF +DEFHEAFHNFLHTHSVWNDNVDAAWHCNEKEIRKVINANLE +> GLBZ_CHITH +MKFIILALCVAAASALSGDQIGLVQSTYGKVKGDSVGILYAVFKADPTIQAAFPQFVGK +DLDAIKGGAEFSTHAGRIVGFLGGVIDDLPNIGKHVDALVATHKPRGVTHAQFNNFRAAF +IAYLKGHVDYTAAVEAAWGATFDAFFGAVFAKM +> GLB_APLJU +ALSAADAGLLAQSWAPVFANSDANGASFLVALFTQFPESANFFNDFKGKSLADIQASPK +LRDVSSRIFARLNEFVSNAADAGKMGSMLQQFATEHAGFGVGSAQFQNVRSMFPGFVASL +SAPAADAAWNSLFGLIISALQSAGK +> GLB_APLKU +SLSAAEADLVGKSWAPVYANKDADGANFLLSLFEKFPNNANYFADFKGKSIADIKASPK +LRDVSSRIFTRLNEFVNNAADAGKMSAMLSQFASEHVGFGVGSAQFENVRSMFPAFVASL +SAPPADDAWNKLFGLIVAALKAAGK +> GLB_APLLI +SLSAAEADLAGKSWAPVFANKNANGADFLVALFEKFPDSANFFADFKGKSVADIKASPK +LRDVSSRIFTRLNEFVNDAANAGKMSAMLSQFAKEHVGFGVGSAQFENVRSMFPGFVASV +AAPPAGADAWTKLFGLIIDALKAAGK +> GLB_BUSCA +GLDGAQKTALKESWKVLGADGPtmmKNGSLLFGLLFKTYPDTKKHFKHFDDATFAAMDT +TGVGKAHGVAVFSGLGSMICSIDDDDCVXGLAKKLSRNHLARGVSAADFKLLEAVFKXFL +DEATQRKATDAQKDADGALLTMLIKAHV +> GLB_CERRH +SLQPASKSALASSWKTLAKDAAtiqNNGATLFSLLFKQFPDTRNYFTHFGNMSDAEMKT +TGVGKAHSMAVFAGIGSMIDSMDDADCMNGLALKLSRNHIQRKIGASRFGEMRQVFPNFL +DEALGGGASGDVKGAWDALLAYLqdnkqAQAL +> GLB_DOLAU +ALSAAEAEVVAKSWGPVFANKDANGDNFLIALFEAYPDSPNFFADFKGKSIADIRASPK +LRNVSSRIVSRLNEFVSSAADAGKMAAMLDQFSKEHAGFGVGSQQFQNVSAMFPGFVASI +AAPPAGADAAWGKLFGLIIDAMKKAGK +> GLB_LAMFL +PIVDSGSVAPLSAAEKTKIRSAWAPVYSNYETSGVDILVKFFTSTPAAQEFFPKFKGMT +SADQLKKSADVRWHAERIINAVNDAVASMDDTEKMSMKLRDLSGKHAKSFQVDPQYFKVL +AAVIADTVAAGDAGFEKLMSMICILLRSAY +> GLB_TETPY +MNKPQTIYEKLGGENAMKAAVPLFYKKVLADERVKHFFKNTDMDHQTKQQTDFLTMLLG +GPNHYKGKNMTEAHKGMNLQNLHFDAIIENLAATLKELGVTDAVINEAAKVIEHTRKDML +GK +> GLB_TUBTU +ECDALQRFKVKHQWAEAFGTShHRLDFGLKLWNSIFRDAPEIRGLFKRVDGDNAYSAEF +EAHAERVLGGLDMTISLLDDQAAFDAQLAHLKSQHAERNIKADYYGVFVNELLAVLPDYL +GTKLDFKAWSECLGVITGAIHD +> GLP1_GLYDI +MHLTADQVAALKASWPEVSAGDGGAQLGLEMFTKYFHENPQMMFIFGYSGRTEALKHSS +KLQHHGKVIIDQIGKAVAEMDNAKQMAGTLHALGVRHKGFGDIRAEFFPALGMCLLDAME +EKVPGLNRTLWAAAYREISDACIAGLQS +> GLP2_GLYDI +MPLTADQVAALKASWPEVSAGDGGGQLGLELFTKYFHENPQMMFIFGYSGRTDALKHNA +KLQNHGKVIIDQIGKAVAEMDNAKQMAGTLHALGVRHKGFGDIRADFFPALGMCLLDAME +EKVPGLNRTLWAAAYREISDALVAGLES +> GLP3_GLYDI +MHLTADQVAALKASWPEVSAGDGGAQLGLEMFTRYFDENPQMMFVFGYSGRTSALKHNS +KLQNHGKIIVHQIGQAVSELDDGSKFEATLHKLGQEHKGFGDIKGEYFPALGDALLEAMN +SKVHGLDRTLWAAGYRVISDALIAGLES +> HBA1_BOSMU +VLSAADKGNVKAAWGKVGGHAAEYGAEALERMFLSFPTTKTYFPHFDLSQGSAQVKGHG +AKVAAALTKAVEHLDDLPGALSELSDLHAHKLRVDPVNFKLLSHSLLVTLASHLPSDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA1_GALCR +VLSPTDKSIVKAAWEKVGAHAGDYGAEALERMFLSFPTTKTYFPQFDLSHGSAQVKGHG +KKVADALTNAVLHVDDMPSALSALSDLHAHKLTVDPVNFKLLSHCLLVTLACHLPAEFTP +AVHASLDKFMASVSTVLTSKYR +> HBA1_IGUIG +VLTEDDKNHIRAIWGHVDNNPEAFGVEALTRLFLAYPATKTYFAHFDLNPGSAQIKAHG +KKVVDALTQAVNNLDDIPDALAKLADLHAEKLRVDPVNFGLLGHCILVTIAAHNHGPLKA +DVALSMDKFLTKVAKTLVAHYR +> HBA1_LEMVA +VLSPADKNNVKSAWNAIGSHAGEHGAEALERMFLSFPPTKTYFPHFDLSHGSAQIKTHG +KKVADALTNAVNHIDDMPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLASHHPAEFTP +AVHASLDKFFAAVSTVLTSKYR +> HBA1_NOTCO +SLSDKDKAAVKALWSKIGKSADAIGNDALSRMIVVYPQTKTYFSHWPSVTPGHPDIKAH +GKKVMGGLAIAVSKINDLKAGLSNLSQQHAYKLRVDPANFKILNHCILVVISTMFPKNFT +PQAHVSLNKFLSGVALALAQRYR +> HBA1_PLEWA +KLTAEDKHNVKAIWDHVKGHEEAIGAEALYRMFCCMPTTRIYFPAKDLSERSSYLHSHG +KKVVGALTNAVAHIDDIDTAFSKLSDKHAEELMVDPANFPKLAHNILVVLGIHLKPHFTY +SVHRSVDKFLSTVAYVLASKYR +> HBA1_SALIR +SLTAKDKSVVKAFWGKISGKADVVGAEALGRdkMLTAYPQTKTYFSHWADLSPGSGPVK +KHGGIIMGAIGKAVGLMDDLVGGMSALSDLHAFKLRVDPGNFKILSHNILVTLAIHFPSD +FTPEVHIAVDKFLAAVSAALADKYR +> HBA1_TACAC +VLTDAEKKEVTSLWGKASGHAEEYGAEALERLFLSFPTTKTYFSHMDLSKGSAQVKAHG +KRVADALTTAAGHFNDMDSALSALSDLHAHKLRVDPVNFKLLAHCFLVVLARHHPAEFTP +SAHAAMDKFLSRVATVLTSKYR +> HBA1_TADBR +VLSPEDKNNVKAAWSKVGGQAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVGEALTTAVNHMDDLPGALSTLSDLHAYKLRVDPVNFKLLSHCLLVTLACHNPGEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA1_TORMA +VLSEGNKKAIKNLLQKIHSQTEVLGAEALARLFECHPQTKSYFPKFSGFSANDKRVKHH +GALVLKALVDTNKHLDDLPHHLNKLAEKHGKGLLVDPHNFKLFSDCIAVTLAAHLQEFSP +ETHCAVDKFLEEVTYQLSSLYR +> HBA1_TRICR +MKLSADDKHNVKAIWEHVKGHEEAIGAEALCRMFTSLPTTRTYFPTKDIKEGSSFLHSH +GKKVMGALSNAVAHIDDIDGALSKLSDKHAEELMVDPANFPKLAHNILVVLGIHLKPHLT +YSVHSSVDKFLATVGYVLASKYR +> HBA1_XENBO +LLSADDKKHIKAIMPSIAAHGDKFGGEALYRMFLVNPKTKTYFPTFDFHHNSKQISAHG +KKVVDALNEASNHLDNIAGSLSKLSDLHAYDLRVDPGNFPLLAHNILVVVAMNFPKQFDP +ATHKALDKFLATVSSVLTSKYR +> HBA1_XENLA +LLSADDKKHIKAIMPAIAAHGDKFGGEALYRMFIVNPKTKTYFPSFDFHHNSKQISAHG +KKVVDALNEASNHLDNIAGSMSKLSDLHAYDLRVDPGNFPLLAHNILVVVAMNFPKQFDP +ATHKALDKFLATVSTVLTSKYR +> HBA2_BOSMU +VLSAADKGNVKAAWGKVGGHAAEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +AKVAAALTKAVGHLDDLPGALSELSDLHAHKLRVDPVNFKLLSHSLLVTLASHLPSDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA2_GALCR +VLSPTDKSNVKAAWEKVGAHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSTQVKGHG +KKVADALTNAVLHVDDMPSALSALSDLHAHKLRVDPVNFKLLRHCLLVTLACHHPAEFTP +AVHASLDKFMASVSTVLTSKYR +> HBA2_LEMVA +VLSPADKNNVKSAWKAIGSHAGEHGAEALERMFLSFPPTKTYFPHFDLSHGSAQIKTHG +KKVADALTNAVNHIDDMPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLASHHPAEFTP +AVHASLDKFFAAVSTVLTSKYR +> HBA2_NOTCO +SLSTKDKETVKAFWSKVSGKSEDIGNDALSRMLVVYPQTKTYFSHWKELTPGSAPVRKH +GMTVMKGVGDAVSKIEDLTAGLMELSELHAFTLRVDPANFKISHNILVVFAIMFPKEFTA +EVHVSMDKFLAALARALSEKYR +> HBA2_PLEWA +NVKAVWEHVKGHEEVYGAEALYRAFLCDPQTQTYFAGKDLSENSAFLHSHGKKVMCALT +NAIAHIDDIDGCMSKLSDKHAHELMVDPGNFDILAHHILTVLAMFLSQLLTCANHRSVDK +FLSCVKNVLTSRYR +> HBA2_TACAC +VLTDAERKEVTSLWGKASGHAEDYGAEALERLFLSFPTTKTYFSHMDLSKGSAHVRAHG +KKVADALTTAVGHFNDMDGALSDLSDLHAHKLRVDPVNFKLLAHCFLVVLARHHPEEFTP +SAHAAMDKFLSRVATVLTSKYR +> HBA2_TORMA +VLSEGNKKIIKNLLQKIHSQTEVLGAEALARLFECHPQTKSYFPKFSGFSANDKRVKHH +GDLVLKALVDTNDHLDDLPHHLHKLAEKHGKDLLVDPHNFKLFSDCIAVTLAAHLQEKSP +ETHCAVDKFLEEVTYQLSSLYR +> HBA2_TRICR +VLSSQDKANVKAVWEHVKGHEEVYGAEALHRAFVCDPQTQTYFAGKDLKENSAYLHGHG +KKVMSALTNAVAHIDDIEGSMSKLSDKHAHELMVDPGNFDILAHHILTTMAMFMPQCLTS +ANHRSVDKFLSTVKHVLTSKYR +> HBA2_VAREX +VLTEDDKNHVKGLWAHVHDHIDEIAADALTRMFLAHPASKTYFAHFDLSPDNAQIKAHG +KKVANALNQAVAHLDDIKGTLSKLSELHAQQLRVDPVNFGFLRHCLEVSIAAHLHDHLKA +SVIVSLDKFLEEVCKDLVSKYR +> HBA2_XENBO +LLTADDKKHIKAILPSIAAHGDKFGGEALYRMFLINPKTKTYFPNFDFHHNSKQISAHG +KKVVDALNEAANHLDNIAGSMSKLSDLHAYDLRVDPGNFPLLAHNILVTVAMYFPQQFDP +HTHKALDKFLASVSSVLTSKYR +> HBA2_XENLA +LLSADDKKHIKAIMPSIAAHGDKFGGEASYRMFLVNPKTKTYFPSFDFHHNSKQITSHG +KKVVDALNEAANHLDNIAGSMSKLSDLHAYDLRVDPGNFPLLAHNLLVVVAMHFPKQFDP +ATHKALDKFLATVSTVLTSKYR +> HBA3_GORGO +VLSPADKTNVKAAWGKVGAHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAXVKGHG +KKVAKALTXAVXHLDDMPNALSALSXLHAHKLRVXPVXFKLLNHCLLVTLAAXFPSXFTP +AVHASVDKFLASVSTVLTSKYR +> HBA3_PANTR +VLSPADKTNVKAAWGKVGAHAGXYGAEALERMFLSFPTTKTYFPHFDLSHGSAXVKGHG +KKVAKALSXAVXHLDDMPNALSALSXLHAHKLRVXPVXFKLLNHCLLVTLAAXFPSXFTP +AVHASVDKFLASVSTVLTSKYR +> HBA3_PLEWA +MVLSAEEKALVVGLCGKISGHCDALGGEALDRLFASFGQTRTYFSHFDLSPGSADVKRH +GGKVLSAIGEAAKHIDSMDQALSKLSDLHAYNLRVDPGNFQLLSHCIQAVLAAHFPADFT +PQCQAAWDKFLAAVSAVLTSKYR +> HBA3_RANCA +SLSASEKAAVLSIVGKIGSQGSALGSEALTRLFLSFPQTKTYFPHFDLTPGSADLNTHG +GKIINALAGAANHLDDLAGNLSSLSDLHAYNLRVDPGNFPLLAHIIQVVLATHFPGDFTA +EVQAAWDKFLALVSAVLTSKYR +> HBA3_XENLA +TLTDSDKAAVVALWGKIAPQANAIGAEALERLFLSYPQTKTYFSHFDLSHGSADLANHG +GKVVNALGEAAKHIDDLDAALSTLSDLHAYNLRVDPGNFKLLSHTIQVTLAIHFHKEFDA +ATQAAWDKFLAEVATVLTSKYR +> HBA3_XENTR +TLTDSEKAAVVALWSKIAPQASAIGAEALERLFLSYPQTKTYFSHFDVSHGSADLQNHG +GKVVNALGEAAKHLNDLDAALSTLSDLHAYNLRVDPGNFKLLSHTIQVTLAVHFQKEFDA +ATQAAWDKFLSEVATVLTSKYR +> HBA4_SALIR +SLSAKDKANVKAIWGKILPKSDEIGEQALSRMLVVYPQTKAYFSHWASVAPGSAPVKKH +GITIMNQIDDCVGHMDDLFGFLTKLSELHATKLRVDPTNFKILAHNLIVVIAAYFPAEFT +PEIHLSVDKFLQQLALALAEKYR +> HBA4_XENLA +TLTDSDKAAIVALWGKIAPQASAIGAEALERLFLSYPQTKTYFSHFDVSHGSADLSNHG +GKVVNALGEAAKHIDDLDSALSTLSDLHAYNLRIDPGNFKLLSHTIQVTLAIHFHKEFDA +ATQAAWDKFLAEVATVLTSKYR +> HBA5_XENLA +TFSSAEKAAIASLWGKVSGHTDEIGAEALERLFLSYPQTKTYFSHFDLSHGSKDLRSHG +GKVVKAIGNAATHIDDIPHALSALSDLHAFKLKVDPGNFKLLSHAIQVTLAIHFPAEFNA +DAQAAWDKFLAVVSAVLVSKYR +> HBAD_ACCGE +MLTAEDKKLIQAIWDKVQGHQEDFGAEALQRMFITYPTTKTYFPHFDLSPGSDQVRSHG +KKVVNALGNAVKSMDNLSQALSELSNLHAYNLRVDPVNFKLLSQCFQVVLAVHLGKEYTP +EVHSAFDKFLSAVAAVLAEKYR +> HBAD_AEGMO +MLTADDKKLIQATWDKVQGHQEDFGAEALQRMFITYPPTKTYFPHFDLSPGSDQVRGHG +KKVVNALGNAVKSMDNLSQALSELSNLHAYNLRVDPVNFKLLSQCFQVVLAVHLGKEYTP +EVHAAFDKFLSAVAAVLAEKYR +> HBAD_ANAPL +MLTAEDKKLITQLWEKVAGHQEEFGSEALQRMFLAYPQTKTYFPHFDLHPGSEQVRGHG +KKVAAALGNAVKSLDNLSQALSELSNLHAYNLRVDPVNFKLLAQCFQVVLAAHLGKDYSP +EMHAAFDKFMSAVAAVLAEKYR +> HBAD_ANSAN +MLTADDKKLLAQLWEKVAGHQDEFGNEALQRMFVTYPQTKTYFPHFDLHPGSEQVRSHG +KKVAAALGNAVKSLDNISQALSELSNLHAYNLRVDPANFKLLSQCFQVVLAVHLGKDYTP +EMHAAFDKFLSAVAAVLAEKYR +> HBAD_ANSIN +MLSADDKKIIAQLWEKVAGHQDEFGNEALQRMFVTYPQTKTYFPHFDVHPGSEQVRSHG +KKVAAALGNAVKSLDNISQALSELSNLHAYNLRVDPANFKLLSQCFQVVLAVHLGKDYTP +EMHAAFDKFLSAVAAVLAEKYR +> HBAD_APUAP +MLTAEDKKLIQQVWDKLQGCQEEVGAETLQRMFTTYPQTKTYFPHFDLSPGSDQIRGHG +KKVVAALGTAVKSLDNLSQALSELSNLHAYNLRVDPVNFKLLAQCLQVVLATHMTKDYTP +EIHAAFDKFLSAVAAVLAEKYR +> HBAD_BRACA +MLTADDKKILAQLWEKVAGHQDEFGNEALERMFVTYPQTKTYFPHFDLHPGSEQVRSHG +KKVAAALSNAVKSIDNLSQALSELSNLHAYNLRVDPANFKLLSQCFQVVLAVHLGKDYTP +EMHAAFDKFLSAVAAVLAEKYR +> HBAD_CAIMO +MLTAEDKKLIVQVWEKVAGHQEEFGSEALQRMFLAYPQTKTYFPHFDLHPGSEQVRGHG +KKVAAALGNAVKSLDNLSQALSELSNLHAYNLRVDPVNFKLLAQCFQVVLAAHLGKDYSP +EMHAAFDKFLSAVAAVLAEKYR +> HBAD_CHICK +MLTAEDKKLIQQAWEKAASHQEEFGAEALTRMFTTYPQTKTYFPHFDLSPGSDQVRGHG +KKVLGALGNAVKNVDNLSQAMAELSNLHAYNLRVDPVNFKLLSQCIQVVLAVHMGKDYTP +EVHAAFDKFLSAVSAVLAEKYR +> HBAD_CHLME +MLTADDKKLLTQLWEKVAGHQEEFGSEALQRMFLTYPQTKTYFPHFDLHPGSEQVRGHG +KKVAAALGNAVKSLDNLSQALSELSNLHAYNLRVDPANFKLLAQCFQVVLATHLGKDYSP +EMHAAFDKFLSAVAAVLAEKYR +> HBAD_CHRPI +MLNHDEKQLIKHAWEKVLGHQEDFGAEALERMFAVYPQTKTYFPHFDLHHDSEQIRHHG +KKVVTALGDAVRHMDNLSEALSELSNLHAYNLRVDPVNFKLLSHCFQVVLAVHLADEYTP +QVHVAYDKFLAAVSAVLAEKYR +> HBAD_GYPRU +MLTADDKKLIQTTWDKVQGHQEDFGAEALQRMFITYPQTKTYFPHFDLSPGSDQVRGHG +KKVVNALGNAVKSMDNLSQALSELSNLHAYNLRVDPVNFKLLSQCFQVVLAVHLGKEYTP +EVHSAFDKFLSAVAAVLAEKYR +> HBAD_PASMO +MLTAEDKKLIQQIWGKLGGAEEEIGADALWRMFHSYPSTKTYFPHFDLSQGSDQIRGHG +KKVVAALSNAIKNLDNLSQALSELSNLHAYNLRVDPVNFKFLSQCLQVSLATRLGKEYSP +EVHSAVDKFMSAVASVLAEKYR +> HBAD_PHACA +MLGAEETALVRGVWQKVESAKDEMGEETLTRMFLVYPKTKTYFPHFDLHHGSEQIRNHG +KKVVTALGNAIQNLDNLRQTLADLSNLHAYNLRVDPVNFKLLAQCFQVVLAVHLGQEYTP +EVHVAFDKFLTAVAAVLAEKYR +> HBAD_PHACO +MLNAEDKKLIQQAWEKAASHQQEFGAEALVRMFTAYPQTKTYFPHFDLSPGSDQIRGHG +KKVLGALSNAVKNVDNLSQAMSELSNLHAYNLRVDPVNFKLLSQCIEVVLAVHMGKDYTP +EVHAAFDKFLSAVSAVLAEKYR +> HBAD_PHRHI +MLSADEKQLILHAWEKVHTHQEDFGAEALERMFTVYPQTKTYFHHFDLHHGSEQIRRHG +KKVVVALENAVHHMDNLSAALCKLSDLHAYNLRVDPVNFKLLSHCFHVVLAGHLGEEYSP +QVHVAYDKFLAAVSDVLAEKYR +> HBAD_RHEAM +MLTADDKKLISQIWTKVAEHGGEFGGEALERMFITYPQTKTYFPHFDLHVGSEQVRGHG +KKVVNALSNAVKNLDNLSQALAELSNLHAYNLRVDPVNFKLLSQCFQVVLAVHLGKEYTP +EVHAAYDKFLSAVASVLAEKYR +> HBAD_SPHPU +VLTHEDCELLQQTWEKVLGHQEDFGAEALERMFITYPQTKTYFPHFDLHHGSEQIRNHG +RKVVNALGEAVKNMDHMSTASGELSNLHAYNLRVDPVNFKLLSECFEVVLAVHLKDQYTP +DVHRAYDKFLSAVGDMLAEKYR +> HBAD_STRCA +MLTADDKKLIQQIWEKVGSHLEDFGAEALERMFITYPQTKTYFPHFDLHPGSEQIRGHG +KKVANALGNAVKSLDNLSQALSELSNLHAYNLRVDPVNFKLLSQCFQVVLAVHMGKDYTP +EVHAAYDKFLTAVAAVLAEKYR +> HBAD_STUVU +VLTAEDKKLIQQTWGKLGGAEEEIGAEALWRMFHAYPPTKTYFPHFDLSQGSDQIRGHG +KKVVAALGNAIKNLDNLSQALSELSNLHAYNLRVDPVNFKFLSQCLQVTLATRLGKEYSP +EVHSAVDKFMSAVAAVLAEKYR +> HBAD_TURME +VLTGEDKKHVQHIWGLLSGAEEDLGAEVLYRMFQSYPPTKTYFPHFDVTQGSEQIRGHG +KKFMAALGNAVKNVDNLSQALSELSNLHAYNLRVDPVNFKFLSQCLQVALAARLGKEYSP +EVHSAVDKFMAAVAAVLAEKYR +> HBAM_RANCA +GLSDSEKSAVASLWEKIAPQTNKLGAESMERLFKNHPETKSFFSRFDISPGSQDLLTHG +GKIFGALGEAIKSLDNLQKYQDLHTNKLKLSSDHMKLLSAAIIEVFTAHFGGEVNQAAWN +KFLGEVGAILTSS +> HBAT_HORSE +ALAAADRATVRALWKKMGSNVGVYATEALERMFLGFPSTTTYFLHLDLSLGSTQVKAHG +QKVADALTLAVEHLEDLPRALSALRHRHVRELRVDPASFQLLGHCLLVTPARHFPGDFSP +TLHASLVKFLSHVISALASDCR +> HBAT_HUMAN +ALSAEDRALVRALWKKLGSNVGVYTTEALERTFLAFPATKTYFSHLDLSPGSSQVRAHG +QKVADALSLAVERLDDLPHALSALSHLHACQLRVDPASFQLLGHCLLVTLARHYPGDFSP +ALQASLDKFLSHVISALVSEYR +> HBAT_PAPAN +ALSAEDRALVRALWKKLGSNVGVYATEALERTFLAFPATKTYFSHLDLSPGSAQVRAHG +QKVADALSLAVERLDDLPRALSALSHLHACQLRVDPANFPAPGPLPAGDPRPALPRRLQP +GAAGVAGQVPEPRDLCAGFRVP +> HBAT_PONPY +ALSAEDRALVRALWKKLGSNVGVYTTEALERTFLAFPATKTYFSHLDLSPGSSQVRAHG +QKVADALSLAVERLDDLPHALSALSHLHACQLRVDPASFQLLGHCLLVTLARHYPGDFSP +ALQASLDKFLSHVISALASEYR +> HBAZ_CAPHI +SLTRTERTIILSLWSKISTQADVIGTETLERLFSCYPQAKTYFPHFDLHSGSAQLRAHG +SKVVAAVGDAVKSIDNVTSALSKLSELHAYVLRVDPVNFKFLSHCLLVTLASHFPADFTA +DAHAAWDKFLSIVSGVLTEKYR +> HBAZ_HORSE +SLTKAERTMVVSIWGKISMQADAVGTEALQRLFSSYPQTKTYFPHFDLHEGSPQLRAHG +SKVAAAVGDAVKSIDNVAGALAKLSELHAYILRVDPVNFKFLSHCLLVTLASRLPADFTA +DAHAAWDKFLSIVSSVLTEKYR +> HBAZ_HUMAN +SLTKTERTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHFDLHPGSAQLRAHG +SKVVAAVGDAVKSIDDIGGALSKLSELHAYILRVDPVNFKLLSHCLLVTLAARFPADFTA +EAHAAWDKFLSVVSSVLTEKYR +> HBAZ_MOUSE +SLMKNERAIIMSMWEKMAAQAEPIGTETLERLFCSYPQTKTYFPHFDLHHGSQQLRAHG +FKIMTAVGDAVKSIDNLSSALTKLSELHAYILRVDPVNFKLLSHCLLVTMAARFPADFTP +EVHEAWDKFMSILSSILTEKYR +> HBAZ_PANTR +SLTKTEGTIIVSMWAKISTQADTIGTETLERLFLSHPQTKTYFPHFDLHPGSAQLRAHG +SKVVAAVGDAVKSIDNIGGALSKLSELHAYILRVDPVNFKLLSHCLLVTLAARFPADFTA +EAHAAWDKFLSVVSSVLTEKYR +> HBAZ_PIG +SLTKAERTIIGSMWTKISSQADTIGTETLERLFASYPQAKTYFPHFDLNPGSAQLRAHG +SKVLAAVGEAVKSIDNVSAALAKLSELHAYVLRVDPVNFKFLSHCLLVTLASHFPADLTA +EAHAAWDKFLTIVSGVLTEKYR +> HBA_ACCGE +VLSANDKTNVKNVFTKIGGHAEEYGAETLERMFTTYPPTKTYFPHFDLHHGSAQIKAHG +KKVVGALIEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSVLTP +EVHASLDKFLCAVGNVLTAKYR +> HBA_AEGMO +VLSANDKTNVKTVFTKITGHAEDYGAETLERMFITYPPTKTYFPHFDLHHGSAQIKAHG +KKVVGALIEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSVLTP +EVHASLDKFLCAVGNVLTAKYR +> HBA_AILFU +VLSPADKTNVKSTWDKLGGHAGEYGGEALERTFASFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTLAVGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_AILME +VLSPADKTNVKATWDKIGGHAGEYGGEALERTFASFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTTAVGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLASHHPAEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_ALCAA +VLSATDKSNVKAAWGKVGGNAPAYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKAHG +EKVANALTKAVGHLDDLPGTLSDLSDLHAHKLRVDPVNFKLLSHTLLVTLAAHLPSDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA_ALLMI +VLSMEDKSNVKAIWGKASGHLEEYGAEALERMFCAYPQTKIYFPHFDMSHNSAQIRAHG +KKVFSALHEAVNHIDDLPGALCRLSELHAHSLRVDPVNFKFLAHCVLVVFAIHHPSALSP +EIHASLDKFLCAVSAVLTSKYR +> HBA_AMBME +FKLSGEDKANVKAVWDHVKGHEDAFGHEALGRMFTGIEQTHTYFPDKDLNEGSFALHSH +GKKVMGALSNAVAHIDDLEATLVKLSDKHAHDLMVDPAEFPRLAEDILVVLGFHLPAKFT +YAVQCSIDKFLHVTMRLCISKYR +> HBA_ANAPE +VLSAADKTNVKGVFSKIGGHAEEYGAETLERMFIAYPQTKTYFPHFDLSHGSAQIKAHG +KKVAAALVEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPAALTP +EVHASLDKFLCAVGAVLTAKYR +> HBA_ANAPL +VLSAADKTNVKGVFSKIGGHAEEYGAETLERMFIAYPQTKTYFPHFDLSHGSAQIKAHG +KKVAAALVEAVNHVDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPAALTP +EVHASLDKFMCAVGAVLTAKYR +> HBA_ANAPP +VLSAADKTNVKGVFSKIGGHAEEYGAETLERMFIAYPQTKTYFPHFDLSHGSAQIKAHG +KKVAAALVEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPAALTP +EVHASLDKFMCAVGAVLTAKYR +> HBA_ANSAN +VLSAADKTNVKGVFSKIGGHAEEYGAETLERMFTAYPQTKTYFPHFDLQHGSAQIKAHG +KKVAAALVEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPSALTP +EVHASLDKFLCAVGTVLTAKYR +> HBA_ANSIN +VLSAADKTNVKGVFSKISGHAEEYGAETLERMFTAYPQTKTYFPHFDLQHGSAQIKAHG +KKVVAALVEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPSALTA +EVHASLDKFLCAVGTVLTAKYR +> HBA_ANSSE +VLSAADKGNVKTVFGKIGGHAEEYGAETLQRMFQTFPQTKTYFPHFDLQPGSAQIKAHG +KKVAAALVEAANHIDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVLAIHHPSLLTP +EVHASMDKFLCAVATVLTAKYR +> HBA_ANTPA +VLSPADKTNVKAAWDKVGGHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVGDALGNAVAHMDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPGDFTP +AVHASLDKFLASVSTVLVSKYR +> HBA_APTFO +VLSADDKSNVKSIFSKLHTHACEYGAEPLERMFXTYPTTKTYFPHFDLSHGSAXVKAHG +KKVAXXIGKAIAXLXXIAGALSKLSXLHAXKLRVXPVXFKLLSHGLXVAXAKXLVRXFTP +GVTASLXKIHKSVSAAHQAKYR +> HBA_APUAP +VLSAADKTNVKGVFAKIGGQAEALGGEALARMFAAYPPTKTYFPHFDLSPGSAQVKAHG +KKVASALVEAANNIDDIAGALSKLSDLHAQKLRVDPVNFKLLGHCFLVVVAIHHPSVLTP +EVHASLDKFLCAVATVLTAKYR +> HBA_AQUCH +VLSANDKTNVKNVFTKISGHAEDYGAEALERMFTTYPPTKTYFPHFDLHHGSAQIKAHG +KKVVGALIEAVNHIDDMAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSVLTP +EVHASLDKFLCAVGNVLTAKYR +> HBA_ARAAR +VLSGSDKTNVKGIFSKIGGQAEDYGAEALERMFATFPQTKTYFPHFDVSPGSAQVKAHG +KKVAAALVEAANHIDDIATALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHNPSALTP +EVHASLDKFLCAVGNVLTAKYR +> HBA_ATEGE +VLSPADKSNVKAAWGKVGGHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_BALAC +VLSPTDKSNVKATWAKIGNHGAEYGAEALERMFMNFPSTKTYFPHFDLGHDSAQVKGHG +KKVADALTKAVGHMDNLLDALSDLSDLHAHKLRVDPANFKLLSHCLLVTLALHLPAEFTP +SVHASLDKFLASVSTVLTSKYR +> HBA_BISBO +VLSAADKGNVKAAWGKVGGHAAEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +AKVAAALTKAVGHLDDLPGALSELSDLHAHKLRVDPVNFKLLSHSLLVTLASHLPNDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA_BOSGA +VLSAADKGNVKAAWGKVGDHAAEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +AKVAAALTKAVGHLDDLPGALSELSDLHAHKLRVDPVNFKLLSHSLLVTLASHLPNDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA_BOVIN +VLSAADKGNVKAAWGKVGGHAAEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +AKVAAALTKAVEHLDDLPGALSELSDLHAHKLRVDPVNFKLLSHSLLVTLASHLPSDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA_BRACA +VLSAADKTNVKGVFSKIGGHADEYGAETLERMFVAYPQTKTYFPHFDLQHGSAQIKAHG +KKVAAALVEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPSALTP +EVHASLDKFLCAVGTVLTAKYR +> HBA_BRATR +VLSAADKAHVKAFWTKIGGHAGEYGGEALERTFLSFPTTKTYFPHFDLSPGSAQVKAHG +KKVGDALTLAVGHLDDLPGALSDLSDLHAHKLRVDPVNFKLLGHCVLVTLALHHPDAFTP +AVHASLDKFITTVSTVLTSKYR +> HBA_CAICR +VLSEEDKSHVKAIWGKVAGHLEEYGAEALERMFCAYPQTKIYFPHFDMSHNSAQIRGHG +KKVFAALHDAVNHIDDLAGALCRLSDLHAHNLRVDPVNFKFLSQCILVVFGVHHPCSLTP +EVHASLDKFLCAVSAMLTSKYR +> HBA_CAIMO +VLSAADKTNVKGVFSKIGGHAEEYGAETLERMFIAYPQTKTYFPHFDLQHGSAQIKAHG +KKVAAALVEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPAALTP +EVHASLDKFMCAVGAVLTAKYR +> HBA_CALAR +VLSPADKSNVKAAWGKVGSHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_CAMDR +VLSSKDKTNVKTAFGKIGGHAAEYGAEALERMFLGFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTKAADHLDDLPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTVAAHHPGDFTP +SVHASLDKFLANVSTVLTSKYR +> HBA_CANFA +VLSPADKTNIKSTWDKIGGHAGDYGGEALDRTFQSFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTTAVAHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPTEFTP +AVHASLDKFFAAVSTVLTSKYR +> HBA_CAPHI +VLSAADKSNVKAAWGKVGGNAGAYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +EKVAAALTKAVGHLDDLPGTLSDLSDLHAHKLRVDPVNFKLLSHSLLVTLACHLPNDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA_CARAU +SLSDKDKAVVKALWAKIGSRADEIGAEALGRMLTVYPQTKTYFSHWSDLSPGSGPVKKH +GKTIMGAVGDAVSKIDDLVGALSALSELHAFKLRIDPANFKILAHNVIVVIGMLFPGDFT +PEVHMSVDKFFQNLALALSEKYR +> HBA_CATCL +SLSDKDKADVKIAWAKISPRADEIGAEALGRMLTVYPQTKTYFAHWADLSPGSGPVKHG +KKViMGAIGDAVTKFDDLLGGLASLSELHASKLRVDPSNFKILANCITVVIMFYLPGDFP +PEVHASVDKFFQNLALALGQKYR +> HBA_CAVPO +VLSAADKNNVKTTWDKIGGHAAEYVAEGLTRMFTSFPTTKTYFHHIDVSPGSGDIKAHG +KKVADALTTAVGHLDDLPTALSTLSDVHAHKLRVDPVNFKFLNHCLLVTLAAHLGADFTP +SIHASLDKFFASVSTVLTSKYR +> HBA_CEBAP +VLSPADKTNVKTAWGKVGGHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALSNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_CEBCA +VLSPADKTNVKTAWGKVGAHAGDYGADALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALSNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_CERAE +VLSPADKSNVKAAWGKVGGHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTLAVGHVDDMPHALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_CERSI +VLSPTDKTNVKTAWGHVGAQAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTQAVGHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLALHHPQDFTP +AVHASLDKFLSNVSTVLTSKYR +> HBA_CERTO +VLSPDDKKHVKAAWGKVGEHAGEYGAEALERMFLSFPTTKTYFPHFNLSHGSDQVKGHG +KKVADALTLAVGHVDDMPHALSKLSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_CHICK +VLSAADKNNVKGIFTKIAGHAEEYGAETLERMFTTYPPTKTYFPHFDLSHGSAQIKGHG +KKVVAALIEAANHIDDIAGTLSKLSDLHAHKLRVDPVNFKLLGQCFLVVVAIHHPAALTP +EVHASLDKFLCAVGTVLTAKYR +> HBA_CHLME +VLSAADKANVKGVFSKIGGHADDYGAETLERMFIAYPQTKTYFPHFDLHHGSAQIKAHG +KKVAAALVEAVNHIDDITGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPAALTP +EVHASLDKFMCAVGAVLTAKYR +> HBA_CHRPI +VLNAGDKANVKAVWNKVAAHVEEYGAETLERMFTVYPQTKTYFPHFDLHHGSAQIRTHG +KKVLTALGEAVNHIDDLASALSKLSDIHAQTLRVDPVNFKFLNHCFLVVVAIHQPSVLTP +EVHVSLDKFLSAVGTVLTSKYR +> HBA_CICCI +VLSANDKSNVRGVFGKISAHADDYGAETLERMFTVHPTQKTYFPHFDLHRGSAQIKAHG +KKVAGALLEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAVHHPSLLTP +EVHASLDKFLCTVSTVLTDKYR +> HBA_COLBA +VLSPADKTNVKTAWGKVGGHGGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTLAAAHVDDMPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_COLLI +VLSANDKSNVKAVFAKIGGQAGDLGGEALERLFITYPQTKTYFPHFDLSHGSAQIKGHG +KKVAEALVEAANHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGHCFLVVVAVHFPSLLTP +EVHASLDKFVLAVGTVLTAKYR +> HBA_COTJA +VLSAADKTNVKGIFAKIAGHAEEYGAEALDRMFTTYPQTKTYFPHFDVSHGSAQIKGHG +KKVAAALVEAANHIDDIAGTLSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPAALTP +EVHASLDKFLCAVGTVLTAKYR +> HBA_CRIGA +VLSADDKANIKATWEKIGGHGAEYGAEALERMFASFPTTKTYFPHFDVSHGSAQVKSHG +KKVADALANAAHHLDDLPGALSALSDLHAHKLRVDPVNFKLLGHCLLVTLATHLQAGLTP +AAHASLDKFLASVSTVLTSKYR +> HBA_CROCR +VLSSADKANIKATWDKIGGHGGEYGAEALERTFLCFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALALAAAHLDDLPSALSALSDLHAYKLRVDPVNFKLLSHCLLVTLAAHHPAEFTP +AVHSDLDKFLSSVSTVLTSKYR +> HBA_CRONI +VLSSDDKCNVKAVWSKVAGHLEEYGAEALERMFCAYPQTKIYFPHFDLSHGSAQIRAHG +KKVFAALHEAVNHIDDLPGALCRLSELHAHSLRVDPVNFKFLAQCVLVVVAIHHPGSLTP +EVHASLDKFLCAVSSVLTSKYR +> HBA_CTEGU +VLSAADKTNVKAAWDKIGGHGGEYGAEALERMFLSFPTTKTYFPHFDVSHGSAQVKAHG +KKVADALANAASHLDDLPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFLATVATVLTSKYR +> HBA_CYGMA +SLSDKDKAAVKALWTTISKSSDAIGNDALSRMIVVYPQTKTYFSHWPDVTPGSTHIRDH +GKKVMGGISLAVSKIDDLKTGLFELSEQHAFKLRVDPANFKILNHCILVVIATMFPKEFT +PEAHVSLDKFLSGVALALAERYR +> HBA_CYGOL +VLSAADKTNVKGVFSKIGGHADDYGAETLERMFIAYPQTKTYFPHFDLQHGSAQIKAHG +KKVAAALVEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKFLGHCFLVVVAIHHPSALTP +EVHASLDKFLCAVGAVLTAKYR +> HBA_CYNSP +VLSPADKTNVKAAWDKVGGNAGEYGAEALERMFLSFPTTKTYFPHFDLAHGSPQVKGHG +KKVGDALTNAVSHIDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLANHLPSDFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_CYPCA +SLSDKDKAAVKGLWAKISPKADDIGAEALGRMLTVYPQTKTYFAHWADLSPGSGPVKKH +GKVIMGAVGDAVSKIDDLVGGLAALSELHAFKLRVDPANFKILAHNVIVVIGMLYPGDFP +PEVHMSVDKFFQNLALALSEKYR +> HBA_DASNO +VLSAADKTHVKAFWGKVGGHAAEFGAEALERMFASFPPTKTYFSHMDLSHGSAQVKAHG +KKVADALTLAVGHLDDLPGALSTLSDLHAHKLRVDPVNFKFLSHCLLVTLACHLPDDFTP +AVHASMDKFMAGVSTVLVSKYR +> HBA_DASVI +VLSDADKTHVKAIWGKVGGHAGAYAAEALARTFLSFPTTKTYFPHFDLSPGSAQIQGHG +KKVADALSQAVAHLDDLPGTLSKLSDLHAHKLRVDPVNFKLLSHCLIVTLAAHLSKDLTP +EVHASMDKFFASVATVLTSKYR +> HBA_DIDMA +VLSANDKTNVKGAWSKVGGNSGAYMGEALYRTFLSFPTTKTYFPNYDFSAGSAQIKTQG +QKIADAVGLAVAHLDDMPTALSSLSDLHAHELKVDPVNFKFLCHNVLVTMAAHLGKDFTP +EIHASMDKFLASVSTVLTSKYR +> HBA_ECHTE +VLSAADKANVKAVWEKAGGNVGKYGGEALDRTFLSFPTTKTYFPHMDLTPGSADIMAHG +KKVADALTLAVGHMDDLPGALSKLSDLHAYKLRVDPVNFKLLSHCLLVTLACHLGGDFTP +AAHASLDKFLSSVSTVLTSKYR +> HBA_ELEEL +SLTAKSKSIVKAFWGKIGSRADDIGAEAFGRMLTVYPETKTYFASWSDLSPGSAAVKKH +GKTIMGGIAEAVGHIDDLTGGLASLSELHAFKLRVDPANFKILAHNLIVVLALFFPADFT +PEVHMAVDKFFQNVASALSEKYR +> HBA_ELEMA +VLSDKDKTNVKATWSKVGDHASDYVAEALERMFFSFPTTKTYFPHFDLSHGSGQVKGHG +KKVGEALTQAVGHLDDLPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTLSSHQPTEFTP +EVHASLDKFLSNVSTVLTSKYR +> HBA_EQUAS +VLSAADKTNVKAAWSKVGGNAGEFGAEALERMFLGFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTLAVGHLDDLPGALSNLSDLHAHKLRVDPVNFKLLSHCLLSTLAVHLPNDFTP +AVHASLDKFLSSVSTVLTSKYR +> HBA_EQUHE +VLSAADKTNVKAAWSKVGGHAGDFGAEALERMFLGFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTLAVGHLDDLPGALSNLSDLHAHKLRVDPVNFKLLSHCLLSTLAVHLPNDFTP +AVHASLDKFLSTVSTVLTSKTR +> HBA_EQUZE +VLSAADKTNVKAAWSKVGGNAGEFGAEALERMFLGFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTLAVGHLDDLPGALSNLSDLHAHKLRVDPVNFKLLSHCLLSTLAVHLPNDFTP +AVHASLDKFLSTVSTVLTSKYR +> HBA_ERIEU +VLSATDKANVKTFWGKLGGHGGEYGGEALDRMFQAHPTTKTYFPHFDLNPGSAQVKGHG +KKVADALTTAVNNLDDVPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLALHHPADFTP +AVHASLDKFLATVATVLTSKYR +> HBA_EUDCR +VLSANDKSNVKGVFSKISSHAEEYGAETLERMFTTYPQTKTYFPHFDLHHGSAQVKAHG +KKVATALMEAANHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVMAIHHPSALTP +EVHASLDKFLCAVGNVLTSKYR +> HBA_EUDSC +VLSAADKTNVKGIFAKIGGHGDDYGAETLDRMFTVYPQTKTYFPHFDVSHGSAQIKAHG +KKVVAALVEAVNHIDDIAGALSKLSDLHAHKLRVDPANFKLLGQCFLVVVGIHHASALTP +EVHASLDKFLCAVSTVLTAKYR +> HBA_FELCA +VLSAADKSNVKACWGKIGSHAGEYGAEALERTFCSFPTTKTYFPHFDLSHGSAQVKAHG +QKVADALTQAVAHMDDLPTAMSALSDLHAYKLRVDPVNFKFLSHCLLVTLACHHPAEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_FRAPO +VLSAADKNNVKGIFGKISSHAEDYGAEALERMFITYPSTKTYFPHFDLSHGSAQVKGHG +KKVVAALIEAANHIDDIAGTLSKLSDLHAHKLRVDPVNFKLLGQCFLVVVAIHHPSALTP +EVHASLDKFLCAVGNVLTAKYR +> HBA_GORGO +VLSPADKTNVKAAWGKVGAHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_GYPRU +VLSANDKTNVKNVFTKITGHAEDYGAETLERMFTTYPPTKTYFPHFDLHHGSAQIKAHG +KKVVGALIEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSVLTP +EVHASLDKFLCAVGNVLTAKYR +> HBA_HETPO +STSTSTSDYSAADRAELAALSKVLAQNAEAFGAEALARMFTVYAATKSYFKDYKDFTAA +APSIKAHGAKVVTALAKACDHLDDLKTHLHKLATFHGSELKVDPANFQYLSYCLEVALAV +HLTEFSPETHCALDKFLTNVCHELSSRYR +> HBA_HIPAM +VLSANDKSNVKAAWGKVGNHAPEYGAEALERMFLSFPTTKTYFPHFDLSHGSSQVKAHG +KKVADALTKAVGHLDDLPGALSDLSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPSDFTP +AAHASLDKFLANVSTVLTSKYR +> HBA_HORSE +VLSAADKTNVKAAWSKVGGHAGEYGAEALERMFLGFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTLAVGHLDDLPGALSNLSDLHAHKLRVDPVNFKLLSHCLLSTLAVHLPNDFTP +AVHASLDKFLSSVSTVLTSKYR +> HBA_HUMAN +VLSPADKTNVKAAWGKVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_LAMGL +VLSSKDKANIKTAFGKIGGHAADYGAEALERMFLGFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTKAADHLDDLPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTVAAHHPGDFTP +AVDASLDKFLANVSTVLTSKYR +> HBA_LAMPA +VLSSKDKANIKTAFGKIGGHAADYGAEALERMFLGFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTKAADHLDDLPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTVAAHHPGDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA_LAMVI +VLSSKDKANVKTAFGKIGGHAADYGAEALERMFLGFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTKAADHLDDLPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTVAAHHPGDFTP +AVHASLDKFLTNVSTVLTSKYR +> HBA_LARRI +VLSGSDKTNVKGVFGKIGGHAEEYGAETLERMFATYPQTKTYFPHFDLQHGSAQVKAHG +KKVAAALVEAANHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSVLTP +EVHASLDKFLCAVGNVLTAKYR +> HBA_LATCH +GLTAADKTLIKSIWGKVEKETEAIGVEALVRLFKCFPQSKVYFDHFTDLSPSSQKLHAH +AKVVLGALTKAVNHLDNITDTLHDISLVHAKKLLVDPVNFELLGHCLEVALAAHFATDFT +PEVHLAIDKFLYEVEKALFETYR +> HBA_LEMFU +VLSPADKTNVKTAWNAVGGQAGEHGAEALERMFLSFPTTKTYFPHFDLSHGSGQVKAHG +KKVADALTNAVSHLDDMPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLASHHPAEFTP +AVHASLDKFFAAVSTVLTSKYR +> HBA_LEPPA +MRFSQDDEVLIKEAWGLLHQIPNAGGEALARMFSCYPGTKSYFPHFGhDFSANNEKVKH +HGKKVVDAIGQGVQHLHDLSSCLHTLSEKHARELMVDPCNFQYLIEAIMTTIAAHYGEKF +TPEINCAAEKCLGQIVHVLISLYR +> HBA_LEPWE +VLSPADKTNVKTTWDKIGGHAGEYGGEALERTFMAFPTTKTYFPHFDLSPGSAQVKTHG +KKVADALTTAVSHIDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPADFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_LIOMI +VLTAEDRRLLQASVGKLGCRLEDIGADALNRLLITFPQSKTYFSHFNLSPGSKDIIHQG +EKVGKALDSALKHLDDIRGTLSQLSDLHAYNLRVDPVNFQLLSKCIHVSLATHLRNEYSA +SVTLAWDKFLELVADVLSEKYR +> HBA_LORTA +VLSPADKTNVKTAWEKVGGHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTTAVSHVDDMPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTLACHHPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_LOXAF +VLSDNDKTNVKATWSKVGDHASDYVAEALERMFFSFPTTKTYFPHFDLGHGSGQVKAHG +KKVGEALTQAVGHLDDLPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTLSSHQPTEFTP +EVHASLDKFLSNVSTVLTSKYR +> HBA_LUTLU +VLSPADKTNVKSTWDKIGGHAGEYGGEALERTFVSFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTNAVAHMDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_MACAS +VLSPADKTNVKAAWGKVGGHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTLAVGHVDDMPHALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_MACCA +VLSAADKGNVKAAWDKVGGQAGEYGAEALERMFLSFPTTKTYFPHFDLAHGSAQVKGHG +KKVADALTNAVGHMDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLASHHPAEFTP +AIHASLDKFFASVSTVLTSKYR +> HBA_MACFA +VLSPADKTNVKAAWGKVGGHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTLAVGHVDDMPQALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_MACGG +VLSPADKANVKAAWDKVGGQAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALSNAAGHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLASHHAAEFTP +AVHASLDKFLASVGTVLTSKYR +> HBA_MACGI +VLSAADKGHVKAIWGKVGGHAGEYAAEGLERTFHSFPTTKTYFPHFDLSHGSAQIQAHG +KKIADALGQAVEHIDDLPGTLSKLSDLHAHKLRVDPVNFKLLSHCLLVTFAAHLGDAFTP +EVHASLDKFLAAVSTVLTSKYR +> HBA_MACMU +VLSPADKSNVKAAWGKVGGHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTLAVGHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_MACNE +VLSPADKTNVKAAWGKVGGHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTLAVDHVDDMPQALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVGTVLTSKYR +> HBA_MACSI +VLSPADKTNVKDAWGKVGGHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTLAVGHVDDMPQALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_MACSP +VLSPADKTNVKAAWDKVGGHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTLAVGHVDDMPHALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_MANSP +VLSPADKKNVKAAWDKVGGHAGEYGAEALERMFLSFPTTKTYFPHFNLSHGSDQVKGHG +KKVADALTLAVGHVDDMPQALSKLSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_MARFO +VLSPADKTNVKSTWDKIGGHAGEYGGEALERTFVSFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTLAVGHLDDLAGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSTVSTVLTSKYR +> HBA_MARMA +VLSPADKTNVKAAWEKIGGHGAAYGAEALERMFLSFPTTKTYFPHFDLSHGSAQIQGHG +KKVADALANAAAHVDDLPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_MEGLY +VLSAADKANVKAAFDKVGGQAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALVNAVGHLDDLPGALSALSDLHAYKLRVDPVNFKLASNVLLVTLAVHVAAGFTP +AVHASLDKFLASVGTVLTSKYR +> HBA_MELCA +VLSPSDKANVKATWDKIGGHAGEYGGEALERTFASFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTNAVAHGDDLPMALSTLSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSTVSTVLTSKYR +> HBA_MELME +VLSPADKANIKATWDKIGGHAGEYGGEALERTFASFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTNAVAHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFLSSVSTVLTSKYR +> HBA_MESAU +VLSAKDKTNISEAWGKIGGHAGEYGAEALERMFFVYPTTKTYFPHFDVSHGSAQVKGHG +KKVADALTNAVGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLANHHPADFTP +AVHASLDKFFASVSTVLTSKYR +> HBA_MOUSE +VLSGEDKSNIKAAWGKIGGHGAEYGAEALERMFASFPTTKTYFPHFDVSHGSAQVKGHG +KKVADALASAAGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLASHHPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_MUSLU +VLSPADKTNVKSTWDKIGGHAGEYGGEALERTFASFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTNAVAHMDDLPGAMSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_MUSPF +VLSPADKTNVKSTWDKIGGHAGEYGGEALERTFASFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTNAVAHVDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_MUSPU +VLSPADKTNVKSTWDKIGGHAGEYGGEALERTFASFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTNAVAHMDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_MYOVE +VLSPADKTNIKAAWDKVGAHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVGDALGNAVAHMDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHLPGEFTP +AIHASLDKFLASVSTVLVSKYR +> HBA_NASNA +VLSPADKTNIKSTWEKIGSHASEYGGEALERTFASFPTTKTYFPHFDLSPGSAQVKAHG +KKVAEALTNAVAHLDDLPGALSTLSDLHAYKLRVDPVNFKFLSHCLLVTLASHHPAEFTP +AVHASLDKFFSSVSTVLTSKYR +> HBA_NYCCO +VLSPADKTNVKAAWEKVGSHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTNAVSHVDDMPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTLACHHPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_ODORO +VLSPADKTNVKTTWDKLGGHAGEYGGEALERTFMSFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTTAVAHIDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSTVSTVLTSKYR +> HBA_ODOVI +VLSAAXKSXVKAAWGKVGGNAAPYGAXALXRMFLSFPTTKTYFPHFXLSHGSAXVKAHG +XKVAXALTKAVGHLXXLPGTLSXLSXLHAHKLRVXPVXFKLLSHSLLVTLATHLPXXFTP +AVHASLXKFLAXVSTVLTSKYR +> HBA_ONDZI +VLSGEDKNNIKTAWGKIGGHAAEYGAEALERMFVVYPTTKTYFPHFDVSHGSGQVKAHG +KKVADALTTAVGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLANHIPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_ORNAN +MLTDAEKKEVTALWGKAAGHGEEYGAEALERLFQAFPTTKTYFSHFDLSHGSAQIKAHG +KKVADALSTAAGHFDDMDSALSALSDLHAHKLRVDPVNFKLLAHCILVVLARHCPGEFTP +SAHAAMDKFLSKVATVLTSKYR +> HBA_PAGBE +SLSDKDKAAVRALWSKIGKSADAIGNDALSRMIVVYPQTKTYFSHWPDVTPGSPHIKAH +GKKVMGGIALAVSKIDDLKTGLMELSEQHAYKLRVDPANFKILNHCILVVISTMFPKEFT +PEAHVSLDKFLSGVALALAERYR +> HBA_PAGLA +VLSSADKNNIKATWDKIGSHAGEYGAEALERTFISFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTLAVGHLEDLPNALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHSALDKFFSAVSTVLTSKYR +> HBA_PANLE +VLSSADKNNVKACWGKIGSHAGEYGAEALERTFCSFPTTKTYFPHFDLSHGSAQVQAHG +QKVADALTKAVVHINDLPNALSDLSDLHAYKLRVDPVNFKFLSHCLLVTLACHHPEEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_PANPO +VLSSADKNNVKACWGKIGSHAGEYGAEALERTFCSFPTTKTYFPHFDLSHGSAQVQAHG +QKVADALTKAVAHINDLPNALSDLSDLHAYKLRVDPVNFKFLSHCLLVTLACHHPEEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_PANPS +VLSSADKNNVKACWGKIGSHAGEYGAEALERTFCSFPTTKTYFPHFDLSHGSAQVQTHG +QKVADALTKAVAHINDLPNALSDLSDLHAYKLRVDPVNFKFLSHCLLVTLACHHPEEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_PANTS +VLSSADKNNVKACWGKIGSHAGEYGAEALERTFCSFPTTKTYFPHFDLSHGSAQVQTHG +QKVADALTKAVAHINNLPNALSDLSDLHAYKLRVDPVNFKFLSHCLLVTLACHHPEEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_PAPCY +VLSPDDKKHVKAAWGKVGEHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSDQVNKHG +KKVADALTLAVGHVDDMPQALSKLSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_PASMO +VLSPADKSNVKGVFAKIGGQAEEYGADALERMFATYPQTKTYFPHFDLGKGSAQVKGHG +KKVAAALVEAVNNIDDLAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVATGNPALLTP +EVHAPLDKFLCAVGTVLTAKYR +> HBA_PHACA +VLSASDKTNVKGVFAKVGGSAEAYGAETLERMFTAYPQTKTYFPHFDLHHGSAQIKAHG +KKVAAALVEAANHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGHCFLVVVAIHHPTLLTP +EVHASLDKFMCAVAKELTAKYR +> HBA_PHACO +VLSAADKNNVKGIFTKIAGHAEEYGAEALERMFITYPSTKTYFPHFDLSHGSAQIKGHG +KKVVAALIEAVNHIDDITGTLSKLSDLHAHKLRVDPVNFKLLGQCFLVVVAIHHPSALTP +EVHASLDKFLCAVGTVLTAKYR +> HBA_PHORU +VLSSHDKSNVKGLFGKVGGHLEEYCAETLARMFAAYPQTKTYFPHFDLQPGSAQVKAHG +KKVAGALAEAANHIDDIASALSKLSDLHQHKLRVDPVNFKLLAHCFLVVMAIHHPSLLTP +EVHASLDKFLCAVGTVLTAKYR +> HBA_PHOVI +VLSPADKTNVKATWDKIGGHAGEYGGEALERTFTAFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTTAVAHMDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLACHHPADFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_PHYCA +VLSPADKTNVKAAWAKVGNHAADFGAEALERMFMSFPSTKTYFSHFDLGHNSTQVKGHG +KKVADALTKAVGHLDTLPDALSDLSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPGDFTP +SVHASLDKFLASVSTVLTSKYR +> HBA_PIG +VLSAADKANVKAAWGKVGGQAGAHGAEALERMFLGFPTTKTYFPHFNLSHGSDQVKAHG +QKVADALTKAVGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPDDFNP +SVHASLDKFLANVSTVLTSKYR +> HBA_PONPY +VLSPADKTNVKTAWGKVGAHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKDHG +KKVADALTNAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_PREEN +VLSPADKTNVKAAWGKVGGHGGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTNAVAHVDDMPHALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_PROCR +VLSSADKANIKATWDKIGGHGGEYGAEALERTFLCFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALAVAAAHLDDLPAALSALSDLHAYKLRVDPVNFKLLSHCLLVTLAAHHPAEFTP +AVHASLDKFLSSVSTVLTSKYR +> HBA_PROHA +VLSAADKNNVKGAWEKVGTHAGEYGAEALERMFLSFPTTKTYFPHFDLTHGSAQVKAHG +QKVGAALTKAVGHLDDLPNALSDLSDLHAHKLRVDPVNFKLLSHCLLVTLSRHLPeQEFT +PAVHASLDKFFSNVSTVLTSKYR +> HBA_PROLO +VLSPADKANIKATWDKIGGHAGEYGGEALERTFASFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTLAVGHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFTSVSTVLTSKYR +> HBA_PSIKR +VLSGTDKTNVKSIFSKIGGQADDYGAEALERMFVTYPQTKTYFPHFDVSPGSAQVKAHG +KKVAGGLSEAANHIDDIATSLSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHNPSALTP +EAHASLDKFLCAVGLVLTAKYR +> HBA_PTEAL +VLSSTDKSNVKAAWDKVGGHVGEYGAEALERMFLSFPTTKTYFPHFDLAHGSSQVKAHG +KKVGDALTNAVGHIDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLASHLPSDFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_PTEBR +VLSPADKTNVKATWDKIGGHAGEYGGEALERTFASFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTNAVAHMDDLPAALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPAEFTP +AVHASLDKFFSTVSTVLTSKYR +> HBA_PTEPO +VLSSTDKSNVKAAWDKVGGNVGEYGAEALERMFLSFPTTKTYFPHFDLAHGSSQVKAHG +KKVGDALTNAVGHMDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLANHLPNDFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_RABIT +VLSPADKTNIKTAWEKIGSHGGEYGAEAVERMFLGFPTTKTYFPHFDFTHGSEQIKAHG +KKVSEALTKAVGHLDDLPGALSTLSDLHAHKLRVDPVNFKLLSHCLLVTLANHHPSEFTP +AVHASLDKFLANVSTVLTSKYR +> HBA_RANTA +VLSAADKSNVKAAWGKVGGNAPAYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKAHG +EKVANALTKAVGHLDDLPGTLSDLSDLHAHKLRVDPVNFKLLSHTLLVTLASHLPSDFTP +AVHASLDKFLANVSTVLTSKYR +> HBA_RAT +VLSADDKTNIKNCWGKIGGHGGEYGEEALQRMFAAFPTTKTYFSHIDVSPGSAQVKAHG +KKVADALAKAADHVEDLPGALSTLSDLHAHKLRVDPVNFKFLSHCLLVTLACHHPGDFTP +AMHASLDKFLASVSTVLTSKYR +> HBA_RHEAM +VLSGPDKTNVKNVFAKIGGHADAYGAETLERMFTTYPQTKTYFPHFDLHHGSAQIKTHG +KKVVSALIDAANNIDDIYGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSLLTP +EVHASLDKFLCAVGAVLTAKYR +> HBA_RHIUN +VLSPTDKTNVKTAWSHVGAHAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKAHG +KKVGDALTQAVGHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLALHNPQDFTP +AVHASLDKFLSNVSTVLTSKYR +> HBA_ROUAE +VLSSADKTNIKAAWDKVGGNAGEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVGDALTNAVGHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLANHLPSDFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_SAGFU +VLSPADKSNVKAAWGKVGGHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHG +KKVADALTVAVAHVDDMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_SALSA +SLTARDKSVVNAFWGKIKGKADVVGAEALGRMLTAYPQTKTYFSHWADLSPGSAPVKKH +GGVIMGAIGNAVGLMDDLVGGMSGLSDLHAFKLRVDPGNFKILSHNILVTLAIHFPADFT +PEVHIAVDKFLAALSAALADKYR +> HBA_SPAEH +VLSPEDKNHVRSTWDKIGGHGAEYGAEALERMFTSFPTTKTYFPHFDVSHGSAQVKAHG +KKVADALANAAGHLDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLANHHPAEFTP +GVHASLDKFLASVSTVLTSKYR +> HBA_SPECI +VLSPADKKNVKDCWEKIGGHGAEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVQGHG +KKVADALANAAAHVDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_SPEPA +VLSPADKTNVKASWEKIGGHGAAYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVQGHG +KKVADALANAAAHVDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_SPETO +VLSPADKNNVKACWEKIGGHGAAYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVQGHG +KKVADALANAAAHVDDLPSALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_SPHPU +MLSASDKANVKAIWSKVCVHAEEYGAETLERMFTVYPSTKTYFPHFDLTHGSAQVKAHG +KKVVNAMGEAVNHLDDMAGALLKLSDLHAQKLRVDPVNFKLLAQCFLVVLGVHHPAALTP +EVHASLDKFLCAVGLVLTAKYR +> HBA_SQUAC +VLSAADKTAIKHLTGSLRTNAEAWGAESLARMFATTPSTKTYFSKFTDFSANGKRVKAH +GGKVLNAVADATDHLDNVAGHLDPLAVLHGTTLCVDPHNFPLLTQCILVTLAAHLTELKP +ETHCALDKFLCEVATALGSHYR +> HBA_STRCA +VLSGTDKTNVKGIFSKISSHAEEYGAETLERMFITYPQTKTYFPHFDLHHGSAQIKAHG +KKVANALIEAVNHIDDISGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSALTP +EVHASLDKFLCAVGAVLTAKYR +> HBA_STUVU +VLSASDKANVKAVFGKIGGQAEEFGAETLERMFATYPQTKTYFPHFDLGKGSAQVKGHG +KKVAAALVEAANHVDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVASHNPALLTP +EVHASLDKFLCAVGTVLTAKYR +> HBA_SUNMU +VLSANDKANVKAAWDKVGGQAANYGAEALERTFASFPTTKTYFPHYDLSPGSAQVKAHG +KKVADALTKAVGSMDDLPGALSALSDLHAHKLRVDPVNFKLLSHCLLVTLAAHHPADFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_TALEU +VLSGTDKSNIKAAWDKVGAHAGEYGAEALERTFTSFPTTKTYFPHFDLSHGSAQVKAHG +KKVADALTNAVGHLDDLPGAMSALSDLHAHKLRVDPVNFKLLSHCLLVTLACHHPNDFTP +AVHASLDKFLATVSTVLTSKYR +> HBA_TAPTE +VLSPTDKTNVKAAWSKVGSHAGEYGAEALERMFLGFPTTKTYFPHFDLSHGSAQVQAHG +KKVGDALTQAVGHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLALHHPDDFTP +AIHASLDKFLSNVSTVLTSKYR +> HBA_TARBA +VLSPADKTNVKAAWDKVGGHAGDYGAEALERMFLSFPTTKTYFPHFDLSHGSSQVKGHG +KKVADALTTAVGHIDNMPNALSALSDLHAHKLRVDPVNFKLLSHCLLVTLACHHPADFTP +AVHASLDKFVASVSTVLTSKYR +> HBA_TARGR +MKLSAEDKHNVKTTWDHIKGHEEALGAEALFRMFTSLPATRTYFPAKDLSEGSSFLHSH +GKKVMGALSNAVAHIDDIDAALCKLSDKHAQDLMVDPANFPKLAHNILVVMGIHLKAHLT +YPVHCSVDKFLDVVGHVLTSKYR +> HBA_THEGE +VLSPDDKKHVKDAWGKVGEHAGQYGAEALERMFLSFPTTKTYFPHFDLSHGSDQVKKHG +KKVADALTLAVGHVDDMPQALSKLSDLHAHKLRVDPVNFKLLSHCLLVTLAAHLPAEFTP +AVHASLDKFLASVSTVLTSKYR +> HBA_THUTH +TTLSDKDKSTVKALWGKISKSADAIGADALGRMLAVYPQTKTYFSHWPDMSPGSGPVKA +HGKKVMGGVALAVTKIDDLTTGLGDLSELHAFKMRVDPSNFKILSHCILVVVAKMFPKEF +TPDAHVSLDKFLASVALALAERYR +> HBA_TRAST +LSAADKGHVKAAWGKVGSHAAEYGAEALERMFLSFPTTKTYFPHFDLSHGSAQVKGHGA +KVAAALTKAVDHLDDLPGALSDLSDLHAHKLRVDPVNFKLLSHSLLVTLASHLPGDFTPA +VHASLDKFLANVSTVLTSKYR +> HBA_TRIIN +VLSDEDKTNVKTFWGKIGTHTGEYGGEALERMFLSFPTTKTYFPHFDLSHGSGQIKAHG +KKVADALTRAVGHLEDLPGTLSELSDLHAHRLRVDPVNFKLLSHCLLVTLSSHLREDFTP +SVHASLDKFLSSVSTVLTSKYR +> HBA_TRIOC +VLSANDKTNVKTVFTKITGHAEDYGAETLERMFITYPPTKTYFPHFDLHHGSAQIKAHG +KKVVGALIEAVNHIDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSVLTP +EVHASLDKFLCAVGNVLSAKYR +> HBA_TUPGL +VLSPGDKSNIKAAWGKIGGQAPQYGAEALERMFLSFPTTKTYFPHFDMSHGSAQIQAHG +KKVADALSTAVGHLDDLPTALSALSDLHAHKLRVDPANFKLLSHCILVTLACHHPGDFTP +EIHASLDKFLANVSTVLTSKYR +> HBA_TURME +VLSAADKTNVKSAFSKIGGQADEYGAETLERMFATYPQTKTYFPHFDLGKGSAQVKAHG +KKVAAALVEAANAVDDIAGALSKLSDLHAQKLRVDPVNFKLLGQCFLVTVATHNPSLLTP +EVHASLDKFLCAVGTVLTAKYR +> HBA_TURTR +VLSPADKTNVKGTWSKIGNHSAEYGAEALERMFINFPSTKTYFSHFDLGHGSAQIKGHG +KKVADALTKAVGHIDNLPDALSELSDLHAHKLRVDPVNFKLLSHCLLVTLALHLPADFTP +SVHASLDKFLASVSTVLTSKYR +> HBA_URSMA +VLSPADKSNVKATWDKIGSHAGEYGGEALERTFASFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTTAAGHLDDLPGALSALSDLHAHKLRVDPVNFKFLSHCLLVTLASHHPAEFTP +AVHASLDKFFSAVSTVLTSKYR +> HBA_VIPAS +VLSEDDKNRVRTSVGKNPELPGEYGSETLTRMFAAHPTTKTYFPHFDLSSGSPNLKAHG +KKVIDALDNAVEGLDDAVATLSKLSDLHAQKLRVDPANFKILSQCLLSTLANHRNPEFGP +AVLASVDKFLCNVSEVLESKYR +> HBA_VULGR +VLSGSDKTNVKGVFAKIGGHAEDYGAETLERMFITYPQTKTYFPHFDLQHGSAQIKGHG +KKVVGALIEAANHIDDIAASLSKLSDLHAQKLRVDPVNFKLLGQCFLVVVAIHHPSVLTP +EVHASLDKFLCAVGNVLTAKYR +> HBA_VULVV +VLSPADKTNIKSTWDKIGGHAGDYGGEALDRTFQSFPTTKTYFPHFDLSPGSAQVKAHG +KKVADALTTAVAHLDDLPGALSALSDLHAYKLRVDPVNFKLLSHCLLVTLACHHPNEFTP +AVHASLDKFFTAVSTVLTSKYR +> HBA_XENTR +HLTADDKKHIKAIWPSVAAHGDKYGGEALHRMFMCAPKTKTYFPDFDFSEHSKHILAHG +KKVSDALNEACNHLDNIAGCLSKLSDLHAYDLRVDPGNFPLLAHQILVVVAIHFPKQFDP +ATHKALDKFLVSVSNVLTSKYR +> HBB0_MOUSE +VHFTAEEKAAITSIWDKVDLEKVGGETLGRLLIVYPWTQRFFDKFGNLSSAQAIMGNPR +IKAHGKKVLTSLGLAVKNMDNLKETFAHLSELHCDKLHVDPENFKLLGNMLVIVLSSYFG +KEFTAEAQAAWQKLVVGVATALSHKYH +> HBB1_CYGMA +VKWSKTELTIINDIFSHLDYDDIGPKALSRCLIVYPWTQRHFSGFGNLYNAEAIIGNAN +VAAHGIKVLHGLDRGLKNMDNIVDAYAELSTLHSEKLHVDPDNFKLLSDCITIVLAAKLG +KAFTAETQAAFQKFMAVVVSALGKQYH +> HBB1_IGUIG +VHWTAEEKQLITQVWGKIDVAQIGGETLACLLVVYPWTQRFFPDFGNLSNAAAICGNAK +VKAHGKKVLTSFGDAVKNLDNIKDTFAKLSELHCDKLHVDPVNFRLLGNVMITRLAAHFG +KDFTPACHAAFQKLTGAVAHALARRYH +> HBB1_MOUSE +VHLTDAEKAAVSCLWGKVNSDEVGGEALGRLLVVYPWTQRYFDSFGDLSSASAIMGNAK +VKAHGKKVITAFNDGLNHLDSLKGTFASLSELHCDKLHVDPENFRLLGNMIVIVLGHHLG +KDFTPAAQAAFQKVVAGVATALAHKYH +> HBB1_RAT +VHLTDAEKAAVNGLWGKVNPDDVGGEALGRLLVVYPWTQRYFDSFGDLSSASAIMGNPK +VKAHGKKVINAFNDGLKHLDNLKGTFAHLSELHCDKLHVDPENFRLLGNMIVIVLGHHLG +KEFTPCAQAAFQKVVAGVASALAHKYH +> HBB1_SALIR +VEWTDAEKSTISAVWGKVNIDEIGPLALARVLIVYPWTQRYFGSFGNVSTPAAIMGNPK +VAAHGKVVCGALDKAVKNMGNILATYKSLSETHANKLFVDPDNFRVLADVLTIVIAAKFG +ASFTPEIQATWQKFMKVVVAAMGSRYF +> HBB1_SPHPU +VHWTAEEKHLLGSLWAKVDVADIGGEALGRLLVVYPWTQRFFADFGNLSSATAICGNPR +VKAHGKKVFTMFGEALKHLDNLKETFASLSELHCDKLHVDTENFKLLGNLVIVVLAARLH +DSFTPAAQAAFHKLAYSVAHALARRYH +> HBB1_TAPTE +VELTGEEKAAVLALWDKVDEDKVGGEALGRLLVVYPWTQRFFDSFGDLSTAAAVMGNPK +VKAHGKKVLHSFGDGVHHLDDLKVTFAQLSELHCDKLHVDPENFRLLGNVLVVVLAQQFG +KAFTPELQAAYQKVVAGVANALAHKYH +> HBB1_TORMA +VSLTDEEIRLIQHIWSNVNVVEITAKALERVFYVYPWTTRLFTSFnhNFKASDKQVHDH +AVNVSNAISAAIGDLHDINKNFSALSTKHQKKLGVDTSNFMLLGQAFLVELAALEKDKFT +PQYHKAALKLFEVVTEALSCQYH +> HBB1_TRICR +TFTNDESQHIHDVCGKIPVDQVGAEALGRLILVNPWTRRYFKSFGDLSSAEAIQHNPKV +ASHGAKVMHSIAEAVKHLDDLKAYYADLSTIHCKKLYVDPANFKLFGGIVSIVTGMHLGT +DYTAQKQAAFEKFLHHVEAALATGYH +> HBB1_UROHA +VHWTAEEKALINAYWGKVDVGSVGGETLANLLVVYPWTQRFFEDFGNLSTPSAILNNPK +XXXXXXXVITSFGDALKNLDNVXXXXXKLSEYHCNKLHVDPVNFRLLGDVLITLSAANFG +KXXXXXXXXXXXXLVGVVAHALARRYH +> HBB1_VAREX +VHWTAEEKQLICSLWGKIDVGLIGGETLAGLLVIYPWTQRQFSHFGNLSSPTAIAGNPR +VKAHGKKVLTSFGDAIKNLDNIKDTFAKLSELHCDKLHVDPTNFKLLGNVLVIVLADHHG +KEFTPAHHAAYQKLVNVVSHSLARRYH +> HBB1_XENBO +GLTAHDRQLINSTWGKVCAKTIGKEALGRLLWTYPWTQRYFSSFGNLNSADAVFHNEAV +AAHGEKVVTSIGEAIKHMDDIKGYYAQLSKYHSETLHVDPCNFKRFGGCLSISLARQFHE +EYTPELHAAYEHLFDAIADALGKGYH +> HBB1_XENLA +GLTAHDRQLINSTWGKLCAKTIGQEALGRLLWTYPWTQRYFSSFGNLNSADAVFHNEAV +AAHGEKVVTSIGEAIKHMDDIKGYYAQLSKYHSETLHVDPLNFKRFGGCLSIALARHFHE +EYTPELHAAYEHLFDAIADALGKGYH +> HBB1_XENTR +VNLTAKERQLITGTWSKICAKTLGKQALGSMLYTYPWTQRYFSSFGNLSSIEAIFHNAA +VATHGEKVLTSIGEAIKHMDDIKGYYAQLSKYHSETLHVDPYNFKRFCSCTIISMAQTLQ +EDFTPELQAAFEKLFAAIADALGKGYH +> HBB2_CYGMA +VEWTNFERATIKDIFSKLEYDVVGPATLARCLVVYPWTQRYFGKFGNLYNAAAIAENAM +VSKHGTTIIHGLDQAVKNMDDIKNTYAELSVLHCDKLHVDPDNFQLLAECLTIVLAAQLG +KEFTGEVQAAFQKFMAVVVSSLGKQYH +> HBB2_MOUSE +VHLTDAEKSAVSCLWAKVNPDEVGGEALGRLLVVYPWTQRYFDSFGDLSSASAIMGNPK +VKAHGKKVITAFNEGLKNLDNLKGTFASLSELHCDKLHVDPENFRLLGNAIVIVLGHHLG +KDFTPAAQAAFQKVVAGVATALAHKYH +> HBB2_NAJNA +VHWSAEEKQLITSLWAKVDVPEVGAATLGKMMVMYPWTQRFFAHFGNLSGPSALCGNPQ +VRAHGKKVLTSFGEALKHLDNVKETFAKLSELHFDKLHVDPENFKLLGNVLIIVLAGHHG +KEFTPSTHASFQKLVNVVAHALARRYH +> HBB2_PANLE +GHLTPEEKSAVTALWSKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPPVQAAYQKVVAGVANALAHKYH +> HBB2_RAT +VHLTDAEKATVSGLWGKVNADNVGAEALGRLLVVYPWTQRYFSKFGDLSSASAIMGNPQ +VKAHGKKVINAFNDGLKHLDNLKGTFAHLSELHCDKLHVDPENFRLLGNMIVIVLGHHLG +KEFTPCAQAAFQKVVAGVASALAHKYH +> HBB2_SPHPU +VHWTAEEKQLVTSLWTKVNVDECGGEALGRLLIVYPWTQRFFSSFGNLSSSTAICGNPR +VKAHGKKVFTSFGEAVKNLDNIKATYAKLSELHCEKLHVDPQNFNLLGDIFIIVLAAHFG +KDFTPACQAAWQKLVRVVAHALAYHYH +> HBB2_TAPTE +VHLHGDEKAAVLALWDKVDEEKVGGEALGRLLVVYPWTQRFFDSFGDLSTAAAVMGNPK +VKAHGKKVLHSFGEGVHHLDDLKVTFAQLSELHCDKLHVDPENFRLLGNVLVVVLAQQFG +KAFTPELQAAYQKVVAGVASALAHKYH +> HBB2_TORMA +VSLTDEEKHLIQHIWSNVNVVEITAKALERVFYVYPWTTRLFTSFNHNFKASDKgVHDH +AVNVSKALSAAIGDLHNVNKNFSALSTKHQKKLGVDTSNFMLLGQAFLVELAAFEKDKFT +PQYHKAALKLFEVVTEALSCQYH +> HBB2_TRICR +VHLTAEDRKEIAAILGKVNVDSLGGQCLARLIVVNPWSRRYFHDFGDLSSCDAICRNPK +VLAHGAKVMRSIVEATKHLDNLREYYADLSVTHSLKFYVDPENFKLFSGIVIVCLALTLQ +TDFSCHKQLAFEKLMKGVSHALGHGY +> HBB2_XENBO +GLTAHEKQLITGSWGKINAKAIGKEALGRLLNTFPWTQRYFSSFGNLGSAEAIFHNEAV +AAHGEKVVTSVGEAIKHMDDIKGYYAELSKYHSETLHVDPNNFKRFGGCLSITLGHHFGE +EYTPELHAAYEHLFDAIADALGKGYH +> HBB2_XENLA +VHWTAEEKAAITSVWQKVNVEHDGHDALGRLLIVYPWTQRYFSNFGNLSNSAAVAGNAK +VQAHGKKVLSAVGNAISHIDSVKSSLQQLSKIHATELFVDPENFKRFGGVLVIVLGAKLG +TAFTPKVQAAWEKFIAVLVDGLSQGYN +> HBB2_XENTR +VHWTAEEKATIASVWGKVDIEQDGHDALSRLLVVYPWTQRYFSSFGNLSNVSAVSGNVK +VKAHGNKVLSAVGSAIQHLDDVKSHLKGLSKSHAEDLHVDPENFKRLADVLVIVLAAKLG +SAFTPQVQAVWEKLNATLVAALSHGYF +> HBB4_SALIR +VDWTDAERSAIVGLWGKISVDEIGPQALARLLIVSPWTQRHFSTFGNLSTPAAIMGNPA +VAKHGKTVMHGLDRAVQNLDDIKNTYATLSVMHSEKLHVDPDNFRLLADCITVCVAAKLG +pAVFSADTQEAFQKFLAVVVSALGRQYH +> HBBA_BOSJA +MLTAEEKAAVTAFWGKVHVDEVGGEALGRLLVVYPWTQRFFESFGDLSTADAVMNNPKV +KAHGKKVLDSFSDGMKHLDDLKGTFAALSELHCDKLHVDPENFKLLGNVLVVVLARNFGK +EFTPVLQADFQKVVAGVANALAHRYH +> HBBA_CAPHI +MLTAEEKAAVTGFWGKVKVDEVGAEALGRLLVVYPWTQRFFEHFGDLSSADAVMNNAKV +KAHGKKVLDSFSNGMKHLDDLKGTFAQLSELHCDKLHVDPENFKLLGNVLVVVLARHHGS +EFTPLLQAEFQKVVAGVANALAHRYH +> HBBC_CAPHI +PNKALITGFWSKVKVDEVGAEALGRLLVVYPWTQRFFEHFGDLSSADAVLGNAKVKAHG +KKVLDSFSNGVQHLDDLKGTFAELSELHCDKLHVDPENFRLLGNVLVIVLARHFGKEFTP +ELQAEFQKVVAGVASALAHRYH +> HBBC_RANCA +GGSDVSAFLAKVDKRAVGGEALARLLIVYPWTQRYFSTFGNLGSADAISHNSKVLAHGQ +RVLDSIEEGLKHPXXLKAYYAKLSERHSGELHVDPANFYRLGNVLITVMARHFHEEFTPE +LQCALHSSFCAVGEALAKGYH +> HBBC_SHEEP +PNKALITGFWSKVKVDEVGAEALGRLLVVYPWTQRFFEHFGDLSTADAVLGNAKVKAHG +KKVLDSFSNGVQHLDDLKGTFAQLSELHCDKLHVDPENFRLLGNVLVVVLARHFGKEFTP +ELQAEFQKVVAGVASALAHRYH +> HBBF_BOVIN +MLSAEEKAAVTSLFAKVKVDEVGGEALGRLLVVYPWTQRFFESFGDLSSADAILGNPKV +KAHGKKVLDSFCEGLKQLDDLKGAFASLSELHCDKLHVDPENFRLLGNVLVVVLARRFGS +EFSPELQASFQKVVTGVANALAHRYH +> HBBF_CAPHI +MLSAEEKASVLSLFAKVNVEEVGGEALGRLLVVYPWTQRFFEHFGDLSSADAILGNPKV +KAHGKKVLDTFSEGLKQLDDLKGAFASLSELHCDKLHVDPENFRLLGNVLVVVLARRFGG +EFTPELQANFQKVVTGVANALAHRYH +> HBBF_SHEEP +MLTAEEKASVISLFAKVNVEEVGGEALGRLLVVYPWTQRFFEHFGDLSSADAILGNPKV +KGHGKKVLNSFSEGLKQLDDLKGAFASLSELHCDKLHVDPENFRLLGNVLVVVLARRFGG +EFTPELQANFQKVVTGVANALAHRYH +> HBBL_RANCA +VHWTAEEKAVINSVWQKVDVEQDGHEALTRLFIVYPWTQRYFSTFGDLSSPAAIAGNPK +VHAHGKKILGAIDNAIHNLDDVKGTLHDLSEEHANELHVDPENFRRLGEVLIVVLGAKLG +KAFSPQVQHVWEKFIAVLVDALSHSYH +> HBBL_XENLA +VHLSADEKSAINAVWSKVNIENDGHDALTRLLVVFPWTQRYFSSFGNLSNVAAISGNAK +VRAHGKKVLSAVDESIHHLDDIKNFLSVLSTKHAEELHVDPENFKRLADVLVIVLAGKLG +AAFTPQVQAAWEKFSAGLVAALSHGYF +> HBBN_AMMLE +PXKALITGFWSKVKVXXVGAXALGRLLVVYPWTXRFFXHFGXLSSAXAVMXXAKVKAHG +KKVLXSFSXGLKHLXXLKGAFASLSXLHCXKLHVXPXXFRLLGXVLVVVLARHFGKXFXP +XLXAXFXKVVAGVASALAHRYH +> HBBZ_MOUSE +VHFTAEEKAAITSIWDKVDLEKVGGETLGRLLIVYPWTQRFFDKFGNLSSALAIMGNPR +IRAHGKKVLTSLGLGVKNMDNLKETFAHLSELHCDKLHVDPENFKLLGNMLVIVLSTHFA +KEFTPEVQAAWQKLVIGVANALSHKYH +> HBB_ACCGE +VQWAAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSATAVLGNPM +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIVVLAAHFG +KDFSPDCQAAWQKLVRAVAHALARKYH +> HBB_AEGMO +VHWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAIIGNPM +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFG +KDFSPDCQAAWQKLVRAVAHALARKYH +> HBB_AILFU +VHLTGEEKAAVTGLWSKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_AILME +VHLTGEEKAAVTGLWSKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSTPDAVMNNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_ALCAA +MLTAEEKAAVTAFWGKVKVDEVGGEALGRLLVVYPWTQRFFEHFGDLSTADAVMHNAKV +KEHGKRVLDAFSEGLKHLDDLKGAFAKLSELHCDKLHVDPENFRLLGNVLVVVLARHFGK +EFTPELQADYQKVVTGVANALAHRYH +> HBB_ALLMI +ASFDAHERKFIVDLWAKVDVAQCGADALSRMLIVYPWKRRYFEHFGKMCNAHDILHNSK +VQEHGKKVLASFGEAVKHLDNIKGHFANLSKLHCEKFHVDPENFKLLGDIIIIVLAAHHP +EDFSVECHAAFQKLVRQVAAALAAEYH +> HBB_ANAPL +VHWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFT +KDFTPECQAAWQKLVRVVAHALARKYH +> HBB_ANAPP +VHWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFP +KEFTPECQAAWQKLVRVVAHALARKYH +> HBB_ANSAN +VHWSAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFSSFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFA +KEFTPECQAAWQKLVRVVAHALARKYH +> HBB_ANSIN +VHWSAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFSSFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFA +KEFTPDCQAAWQKLVRVVAHALARKYH +> HBB_ANSSE +VHWSAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTERFFSSFGNLSSPTAIIGNPM +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFS +KDFTPDCQAAWQKLVRVVAHALARKYH +> HBB_ANTPA +VHLTADEKSAVTGLWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSNAGAVMGNAK +VKAHGKKVLNAFSDGLKNLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLMIVLARHFG +KEFCPPVQAAFQKVSLGVATALGHKYH +> HBB_AOTTR +VHLTGEEKAAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMNNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_APUAP +VQWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSATAVIGNPM +VRAHGKKVLTSFGEAVKNLDSIKSTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFS +KDFTPEAQQAWAKLVRAVAHALARKYH +> HBB_AQUCH +VHWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAIIGNPM +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFT +KDFSPDCQAAWQKLVRAVAHALARKYH +> HBB_ARAAR +VHWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFG +KDFTPECQAALQKLVRVVAHALARKYH +> HBB_ATEGE +VHLTGEEKAAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMSNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQLQAAYQKVVAGVANALAHKYH +> HBB_BALAC +VHLTAEEKSAVTALWAKVNVEEVGGEALGRLLVVYPWTQRFFEAFGDLSTADAVMKNPK +VKAHGKKVLASFSDGLKHLDDLKGTFATLSELHCDKLHVDPENFRLLGNVLVIVLARHFG +KEFTPELQAAYQKVVAGVANALAHKYH +> HBB_BISBO +MLTAEEKAAVTAFWGKVHVDEVGGEALGRLLVVYPWTQRFFESFGDLSSADAVMNNAKV +KAHGKKVLDSFSNGMKHLDDLKGTFAALSELHCDKLHVDPENFKLLGNVLVVVLARHFGK +EFTPVLQADFQKVVTGVANALAHRYH +> HBB_BOSGA +MLTAEEKAAVTAFWGKVHVDEVGGEALGRLLVVYPWTQRFFESFGDLSTADAVMNNPKV +KAHGKKVLDSFSNGMKHLDDLKGTFAALSELHCDKLHVDPENFKLLGNVLVVVLARHFGK +EFTPVLQADFQKVVAGVANALAHRYH +> HBB_BOSMU +MLTAEEKAAVTAFWGKVKVDEVGGEALGRLLVVYPWTQRFFESFGDLSSADAVMNNPKV +KAHGKKVLDSFSNGMKHLDDLKGTFAALSELHCDKLHVDPENFKLLGNVLVVVLARHFGK +EFTPVLQADFQKVVVGVANALAHRYH +> HBB_BOVIN +MLTAEEKAAVTAFWGKVKVDEVGGEALGRLLVVYPWTQRFFESFGDLSTADAVMNNPKV +KAHGKKVLDSFSNGMKHLDDLKGTFAALSELHCDKLHVDPENFKLLGNVLVVVLARNFGK +EFTPVLQADFQKVVAGVANALAHRYH +> HBB_BRACA +VHWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFSSFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFA +KDFTPDCQAAWQKLVRVVAHALARKYH +> HBB_BRATR +VHLADDEKAAVSALWNKVHVEEFGGEALGRLLVVYPWTSRFFESFGDLSSADAVFSNAK +VKAHGKKVLTSFGEGLKHLDDLKGTYAHLSELHCDKLHVDPENFKLLGNVLVIVLARHFG +KEFTPQLQASYQKVTTGVSTALAHKYH +> HBB_CAICR +SPFSAHEEKLIVDLWAKVDVASCGGDALSRMLIIYPWKRRYFEHFGKLSTDQDVLHNEK +IREHGKKVLASFGEAVKHLDNIKGHFAHLSKLHFEKFHVDCENFKLLGDIIIVVLGMHHP +KDFTLQTHAAFQKLVRHVAAALSAEYH +> HBB_CAIMO +VHWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFT +KDFTPDCQAAWQKLVRVVAHALARKYH +> HBB_CALAR +VHLTGEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMNNPK +VKAHGKKVLGAFSDGLTHLDNLKGTFAHLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPVVQAAYQKVVAGVANALAHKYH +> HBB_CAMDR +VHLSGDEKNAVHGLWSKVKVDEVGGEALGRLLVVYPWTRRFFESFGDLSTADAVMNNPK +VKAHGSKVLNSFGDGLNHLDNLKGTYAKLSELHCDKLHVDPENFRLLGNVLVVVLARHFG +KEFTPDLQAAYQKVVAGVANALAHRYH +> HBB_CANFA +VHLTAEEKSLVSGLWGKVNVDEVGGEALGRLLIVYPWTQRFFDSFGDLSTPDAVMSNAK +VKAHGKKVLNSFSDGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_CARAU +VEWTDAERSAIIGLWGKLNPDELGPQALARCLIVYPWTQRYFATFGNLSSPAAIMGNPK +VAAHGRTVMGGLERAIKNMDNIKATYAPLSVMHSEKLHVDPDNFRLLADCITVCAAMKFG +pSGFNADVQEAWQKFLSVVVSALCRQYH +> HBB_CAVPO +VHLTAAEKSAILDLWGKVNVGEIGAEALGRLLVVYPWTQRFFEKFGDLSSASAIMSNAH +VKSHGAKVLASFSEGLKHLQDLKGTFAKLSELHCDKLHVDPENFRLLGNMIVIALAHHHP +SEFTPCTQAAFQKVTAGVANALAHKYH +> HBB_CEBAL +VHLTAEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSTPDAVMNNPK +VKAHGKKVLGAFSDGLTHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_CEBAP +VHLTAEEKSAVTTLWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSTPDAVMNNPK +VKAHGKKVLGAFSDGLTHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_CERAE +VHLTPEEKTAVTTLWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_CERSI +VELTAEEKAAVLALWDKVKEDEVGGEALGRLLVVYPWTQRFFDSFGDLSTPAAVMGNAK +VKAHGKKVLHSFGDGVHHLDNLKGTFAALSELHCDKLHVDPENFRLLGNVLVVVLAKHFG +KQFTPELQAAYQKVVAGVANALAHKYH +> HBB_CERTO +VHLTPEEKVAVTTLWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSNPDAVMGNPK +VKAHGKKVLGAFSDGLNHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_CHICK +VHWTAEEKQLITGLWGKVNVAECGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFSQLSELHCDKLHVDPENFRLLGDILIIVLAAHFS +KDFTPECQAAWQKLVRVVAHALARKYH +> HBB_CHLME +VHWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAISGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFSQLSELHCDKLHVDPENFRLLGDILIIVLAAHFT +KDFTPDCQAAWQKLVRVVAHALARKYH +> HBB_CHRPI +VHWTADEKQLITSLWGKVNVEECGSEALARLLIVYPWTQRFFSTFGNLSNAEAILHNPH +VHAHGKKVLTSFGEAVKNLDHIKQTFATLSKLHCEKLHVDPENFKLLGNVLIIVLASHFT +KEFTPACQAAWQKLVSAVAHALALGYH +> HBB_CICCI +VHWTAEEKQLITGLWGKVNVDECGAEALARLLIVYPWTQRFFASFGNLATASAITGNAM +VHAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFKLLGDILIIVLAAHFG +KDFTPDCQAAWKKLVRVVAHALARKYH +> HBB_COLBA +VHLTPDEKNAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSTADAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_COLLI +VHWSAEEKQLITSIWGKVNVADCGAEALARLLIVYPWTQRFFSSFGNLSSATAISGNPN +VKAHGKKVLTSFGDAVKNLDNIKGTFAQLSELHCDKLHVDPENFRLLGDILVIILAAHFG +KDFTPECQAAWQKLVRVVAHALARKYH +> HBB_COLPO +VHLTPDEKAAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_CROCR +GFLTAEEKSLVNDLWSKVNVDEVGGEALGRLLVVYPWTQRFFQSFGDLSSADAIMGNSK +VKAHGKKVLNSFSDGLKHIDDLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +NEFTPPVQAAYQKVVAGVANALAHKYH +> HBB_CRONI +ASFDPHEKQLIGDLWHKVDVAHCGGEALSRMLIVYPWKRRYFENFGDISNAQAIMHNEK +VQAHGKKVLASFGEAVCHLDGIRAHFANLSKLHCEKLHVDPENFKLLGDIIIIVLAAHYP +KDFGLECHAAYQKLVRQVAAALAAEYH +> HBB_CTEGU +VHLSAEEKAAVTGLWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSSAAAVMGNPK +VKAHGKKVLTSFSEGLSHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNMIVITLAHHYG +PEFGPQTQAAFQKVVAGVANALAHKYH +> HBB_CYNSP +VHLSGEEKSAVTSLWGKVKVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSASAVMGNAK +VKAHGKKVLDSFSEGLQHLDSLKGTFAKLSELHCDKLHVDPENFRLLGNVLVVVLARHFG +KEFTPQLQAAYQKVVAGVATALAHKYH +> HBB_CYPCA +VEWTDAERSAIIALWGKLNPDELGPEALARCLIVYPWTQRFFASYGNLSSPAAIMGNPK +VAAHGRTVEGGLMRAIKDMDNIKATYAPLSVMHSEKLHVDPDNFRLLADCITVCAAMKFG +pSGFSPNVQEAWQKFLSVVVNALKRQYH +> HBB_DASNO +VNLTSDEKTAVLALWNKVXVXXHGGXALGRLLVVYPWTQRFFESFGDLSTPAAVFANAK +VKAHGKKVLTSFGEGMNHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNMLVVVMARHFG +KEFDHWMHACFQRVVAGVANALAHKYH +> HBB_DIDMA +VHLTSEEKNCITTIWSKVQVDQTGGEALGRMLVVYPWTTRFFGSFGDLSSPGAVMSNSK +VQAHGAKVLTSFGEAVKHLDNLKGTYAKLSELHCDKLHVDPENFKMLGNIIVICLAEHFG +KDFTPECQVAWQKLVAGVAHALAHKYH +> HBB_ECHTE +VHMTDAEKKLVTTMWGKLDVDAAGAETLGRVLVVYPWTQRFFGHFGDLSSACAVMDNPK +VQAHGKKVLHSLGDGLNHLDDLKHFYAALSELHCDKLHVDPENFRLLGNVLVCVMSRHFG +AEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_ELEEL +VELTEAQRGAIVNLWGHLSPDEIGPQALARLLIVYPWTQRYFASFGNISSAAAIMGNPK +VAAHGKVVVGALDKAVKNLNNIKGTYAALSTIHSEKLHVDPDNFRLLAESFTVSVAMKLG +pSGFNAETQHALAKFLAEVVSALGKQYH +> HBB_ELEMA +VNLTAAEKTQVTNLWGKVNVKELGGEALSRLLVVYPWTRRFFEHFGDLSTADAVLHNAK +VLAHGEKVLTSFGEGLKHLDNLKGTFADLSELHCDKLHVDPENFRLLGNVLVIVLARHFG +KEFTPDVQAAYEKVVAGVANALAHKYH +> HBB_EQUHE +VQLSGEEKAAVLALWDKVNEEEVGGEALGRLLVVYPWTQRFFDSFGDLSNPAAVMGNPK +VKAHGKKVLHSFGEGVHHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVVVLARHFG +KDFTPELQASYQKVVAGVANALAHKYH +> HBB_ERIEU +VHLTAEEKALVTGLWGKVKVEEFGGEALGRLLVVYPWTQRFFDSFGDLSSADAVMGNPK +VKAHGAKVLQSMGDGIKNLDNLKGTFSKLSELHCDKLHVDPENFRLLGNVLVCVLARHFG +KDFTPAAQAAFQKVVAGVANALAAKYH +> HBB_EUDCR +VHWSAEEKQLITGLWGKVNVAQCGGEALARLLIVYPWTQRFFSSFGNLSSPSAILGNPM +VRAHGKKVLTSFGDAVKNMDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFA +KDFTPECQAAWEKLVRVVAHALARKYH +> HBB_FELCA +GFLTAEEKGLVNGLWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSSADAIMSNAK +VKAHGKKVLNSFSDGLKNIDDLKGAFAKLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +HDFNPQVQAAFQKVVAGVANALAHKYH +> HBB_FRAPO +VHWTAEEKQLITGLWGKVNVAECGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFSQLSELHCDKLHVDPENFRLLGDILIIVLAAHFS +KDFTPDCQAAWQKLVRVVAHALARKYH +> HBB_GALCR +VHLTPDEKNAVCALWGKVNVEEVGGEALGRLLVVYPWTQRFFDSFGDLSSPSAVMGNPK +VKAHGKKVLSAFSDGLQHLDNLCGTFAKLSELHCDKLHVNPENFRLLGNVLVCVLAHHFG +KDFTPEVQAAYEKVVAGVATALAHKYH +> HBB_GORGO +VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPPVQAAYQKVVAGVANALAHKYH +> HBB_HETPO +VHWSEVELHEITTTWKSIDKHSLGAKALARMFIVYPWTTRYFGNLKEFTACSYGVKEHA +KKVTGALGVAVTHLGDVKSQFTDLSKKHAEELHVDVESFKLLAKCFVVELGILLKDKFAP +QTQAIWEKYFGVVVDAISKEYH +> HBB_HIPAM +VHLTAEEKDAVLGLWGKVNVQEVGGEALGRLLVVYPWTQRFFESFGDLSSADAVMNNPK +VKAHGKKVLDSFADGLKHLDNLKGTFAALSELHCDQLHVDPENFRLLGNELVVVLARTFG +KEFTPELQAAYQKVVAGVANALAHRYH +> HBB_HORSE +VQLSGEEKAAVLALWDKVNEEEVGGEALGRLLVVYPWTQRFFDSFGDLSNPGAVMGNPK +VKAHGKKVLHSFGEGVHHLDNLKGTFAALSELHCDKLHVDPENFRLLGNVLVVVLARHFG +KDFTPELQASYQKVVAGVANALAHKYH +> HBB_HUMAN +VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPPVQAAYQKVVAGVANALAHKYH +> HBB_HYLLA +VHLTPEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_LAMGL +VNLSGDEKNAVHGLWSKVKVDEVGGEALGRLLVVYPWTRRFFESFGDLSTADAVMNNPK +VKAHGSKVLNSFGDGLSHLDNLKGTYAKLSELHCDKLHVDPENFRLLGNVLVVVLARHFG +KEFTPDLQAAYQKVVAGVANALAHRYH +> HBB_LARRI +VHWSAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAINGNPM +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFA +KDFTPDSQAAWQKLVRVVAHALARKYH +> HBB_LATCH +VHWTETERATIETVYQKLHLDEVGREALTRLFIVYPWTTRYFKSFGDLSSSKAIASNPK +VTEHGLKVMNKLTEAIHNLDHIKDLFHKLSEKHFHELHVDPQNFKLLSKCLIIVLATKLG +KQLTPDVQATWEKLLSVVVAALSREYH +> HBB_LEMCA +TFLTPEENGHVTSLWGKVNVEKVGGEALGRLLVVYPWTQRFFESFGDLSSPDAIMGNPK +VKAHGKKVLSAFSEGLHHLDNLKGTFAQLSELHCVALHVDPENFKLLGNVLVIVLAHHFG +NDFSPQTQAAFQKVVTGVANALAHKYH +> HBB_LEMFU +TLLSAEENAHVTSLWGKVDVEKVGGEALGRLLVVYPWTQRFFESFGDLSSPSAVMGNPK +VKAHGKKVLSAFSEGLHHLDNLKGTFAQLSELHCDKLHVDPQNFTLLGNVLVVVLAEHFG +NAFSPAVQAAFQKVVAGVANALAHKYH +> HBB_LEMVA +TFLTPEENNHVTSLWGKVNVEKVGGEALGRLLVVYPWTQRFFESFGDLSSPDAIMGNPK +VKAHGKKVLTAFSEGLHHLDNLKGTFAQLSELHCDKLHVDPQNFKLLGNVLVIVLAHHFG +NDFSPQTQAAFQKVVTGVANALAHKYH +> HBB_LEPEU +VHLSGEEKSAVTALWGKVNVEEVGGETLGRLLVVYPWTQRFFESFGDLSTASAVMGNPK +VKAHGKKVLAAFSEGLSHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVIVLSHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_LEPPA +VHWEDAEKQYIVSVFSKIDVDHVGANTLERVLIVFPWTKRYFNSFGDLSSPGAIKHNNK +VSAHGRKVLAAIIECTRHFGNIKGHLANLSHLHSEKLHVDPHNFRVLGQCLRIELAAALG +fKEFTPERNAYFQKFMDVISHSLGREYH +> HBB_LEPWE +VHLTAEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPNAIMSNPK +VKAHGKKVLNSFSDGLKNLDNLKGTFAKLSELHCDQLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_LIOMI +VHWTAEEKSAITAIWGKVDVAAIGGEALCRLLIVYPWTQRFFTSFGNLSNAAAIQSNAQ +VKAHGKKVFTAFGDAVKNPEGVKDTFAKLSELHCDKLHVDPVNFKLLGQILITVLAAHFG +KDFTPNVQAAYQKLVSVVAHALAHQYH +> HBB_LORTA +VHLTGEEKSAVTGLWGKVNVEDVGGEALGRLLVVYPWTQRFFESFGDLSSPSAVMGNPK +VKAHGKKVLSAFSDGLNHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVVVLAHHFG +KDFTPQVQSAYQKVVAGVANALAHKYH +> HBB_LOXAF +VNLTAAEKTQVTNLWGKVNVKELGGEALSRLLVVYPWTRRFFEHFGDLSTAEAVLHNAK +VLAHGEKVLTSFGEGLKHLDNLKGTFADLSELHCDKLHVDPENFRLLGNVLVIVLARHFG +KEFTPDVQAAYEKVVAGVANALAHKYH +> HBB_LUTLU +VHLTGEEKAAVTSLWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_MACCA +VHLTGEEKSTVSALWGKVNVEEIGGEALGRLLVVYPWTQRFFDSFGDLSSPSAVFGNAK +VKSHGKKVLDSFSNGMQHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVVVLARNFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_MACFU +VHLTPEEKNAVTTLWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLNHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_MACGG +VHLTGEEKAAVTGLWGKVNVEEVGGEALGRLLVVYPWTQRFFDSFGDLSSPSAVMGNPK +VKAHGKKVLNSFSDGLKNLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLARHFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_MACGI +VHLTAEEKNAITSLWGKVAIEQTGGEALGRLLIVYPWTSRFFDHFGDLSNAKAVMANPK +VLAHGAKVLVAFGDAIKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNIIVICLAEHFG +KEFTIDTQVAWQKLVAGVANALAHKYH +> HBB_MACMU +VHLTPEEKNAVTTLWGKVNVDEVGGEALGRLLLVYPWTQRFFESFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLNHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_MACRU +VHLTAEEKNAITSLWGKVAIEQTGGEALGRLLIVYPWTSRFFDHFGDLSNAKAVMGNPK +VLAHGAKVLVAFGDAIKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNIIVICLAEHFG +KEFTIDTQVAWQKLVAGVANALAHKYH +> HBB_MANSP +VHLTPEEKTAVTTLWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLNHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_MARMA +VHLSDGEKNAISTAWGKVNAADIGAEALGRLLVVYPWTQRFFDSFGDLSSASAVMGNAK +VKAHGKKVIDSFSNGLKHLDNLKGTFASLSELHCDKLHVDPENFKLLGNMIVIVMAHHLG +KDFTPEAQAAFQKVVAGVANALAHKYH +> HBB_MEGLY +VHLTNEEKTAVIGLWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSSPSAIMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFRLLGYILLCVLARHFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_MELCA +VHLTAEEKAAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_MELME +VHLTAEEKSAVTSLWGKVNVDEVGGEALGRLLVVYPWTQRYFDSFGDLSTPDAVMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_MESAU +VHLTDAEKALVTGLWGKVNADAVGAEALGRLLVVYPWTQRFFEHFGDLSSASAVMNNPQ +VKAHGKKVIHSFADGLKHLDNLKGAFSSLSELHCDKLHVDPENFKLLGNMIIIVLSHDLG +KDFTPSAQSAFHKVVAGVANALAHKYH +> HBB_MESBR +VHLTDAEKNLVSGLWGKVNADAVGAEALGRLLVVTPWTQRFFEHFGDLSSASAVMNNPQ +VKAHGKKVIHSFADGLKHLDNLKGAFSSLSELHCDKLHVDPENFKLLGNMIIIVLSHDLG +KDFTPSAQSAFHKVVAGVANALAHKYH +> HBB_MICXA +VHLTDAEKAAISGLWGKVXAXAAGAXALGRLLVVYPWTXRFFXHFGXLSSASAVMGNAQ +VKAHGKKVIHAFADGLKHLDXLKGTFASLSXLHCXKLHVXPXXFRLLGXMIVIVLAHHLG +KDFTPSAXAAFXKVVAGVASALAHKYH +> HBB_MUSLU +VHLTAEEKAAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_MUSPF +VHLTGEEKAAVTALWGKVNVDEVGGETLGRLLVVYPWTQRFFDSFGDLSSPDAVMSNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_MYOVE +VHLTADEKAAVSGLWGKVNVDEVGGEALGRLLVVYPWTQRFFTSFGDLSNAAAVMGNSK +VKAHGKKVLNSFGEGLKNVDNLKGTFASLSELHCDKLHVDPENFRLLGNVLVIVLARHFG +KEFTPQVQGAFQKLALGVATALAHKYH +> HBB_NASNA +VHLTGEEKTAVTNLWAKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSSPDAIMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_NOTCO +VNWSDSERAIITDIFSHMDYDDIGPKALSRCLIVYPWTQRHFSGFGNLYNAEAILGNAN +VAAHGIKVLHGLDRGVKNMDKIVDAYAELSMLHSEKLHVDPDNFKLLSDCITIVVAAKMG +SAFTPEIQCAFQKFLAVVVSALGKQYH +> HBB_NYCCO +VHLTGEEKSAVTALWGKVNVDDVGGEALGRLLVVYPWTQRFFESFGDLSSPSAVMGNPK +VKAHGKKVLSAFSDGLNHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVVVLAHHFG +KDFTPQVQSAYQKVVAGVANALAHKYH +> HBB_ODORO +VHLTADEKAAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMGNPK +VKAHGKKVLNSFSDGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_ODOVI +MLTAEEKAAVTGFWGKVNVDVVGAEALGRLLVVYPWTQRFFEHFGDLSSAGAVMGNPKV +KAHGKRVLDAFSEGLKHLDDLKGAFAELSELHCNKLHVDPENFRLLGNVLVVVLARNFGG +EFTPLVQADFQKVVAGVANALAHRYH +> HBB_ONDZI +VHLTDAEKAAISGLWGKVNADGVGAEALGRLLVVYPWTQRFFEHFGDLSSSSAVMGNAK +VKSHGKKVITAFADGLKHLDNLKGTFSALSELHCDKLHVDPENFKLLGNMIVIVLSHDLG +KDFTPDAQSAFQKVVTGVATALGHKYH +> HBB_ORNAN +VHLSGGEKSAVTNLWGKVNINELGGEALGRLLVVYPWTQRFFEAFGDLSSAGAVMGNPK +VKAHGAKVLTSFGDALKNLDDLKGTFAKLSELHCDKLHVDPENFNRLGNVLIVVLARHFS +KDFSPEVQAAWQKLVSGVAHALGHKYH +> HBB_OVIMU +MLTAEEKAAVTGFWGKVKVDEVGAEALGRLLVVYPWTQRFFEHFGDLSSADAVMNNAKV +KAHGKKVLXSFSNGMKHLDDLKGTFAQLSELHCDKLHVXPXXFRXXXXXXXXXXXXHHGS +EFTPVLQAXFQKVVAGVANALAHRYH +> HBB_PAGBE +VEWTDKERSIISDIFSHMDYDDIGPKALSRCLIVYPWTQRHFSGFGNLYNAEAIIGNAN +VAAHGIKVLHGLDRGVKNMDNIAATYADLSTLHSEKLHVDPDNFKLLSDCITIVLAAKMG +HAFTAETQGAFQKFLAVVVSALGKQYH +> HBB_PAGLA +GFLTAEEKGLVNGLWGKVNVDEVGGEALGRLLVVYPWTQRFFQSFGDLSSADAIMHNSK +VKAHGKKVLNSFSDGLKHVDDLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVASALAHRYH +> HBB_PANPO +SFLSAEEKNLVSGLWGKVNVDEVGGEALGRLLVVYPWTQRFFQSFGDLSSADAIMSNAK +VKAHGKKVLNSFSDGLKNIDDLKGAFAKLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +HEFNPQVQAAFQKVVAGVASALAHRYH +> HBB_PANTS +SFLSAEEKGLVNGLWSKVNVDEVGGEALGRLLVVYPWTQRFFQSFGDLSSADAIMSNAK +VKAHGKKVLNSFSDGLKNIDDLKGAFAKLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +HEFNPQVQAAFQKVVAGVASALAHRYH +> HBB_PAPCY +VHLTPEEKNAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPAAVMGNPK +VKAHGKKVLGAFSDGLNHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_PASMO +VQWTAEEKQLITGLWGKVNVAECGGEALARLLIVYPWTQRFFASFGNLSSPTAVLGNPK +VQAHGKKVLTSFGEAVKNLDSIKNTFSQLSELHCDKLHVDPENFRLLGDILVVVLAAHFG +KDFTPDCQAAWQKLVRVVAHALARKYH +> HBB_PHACA +VHWTAEEKQLITGLWGKVNVAECGAEALARLLIVYPWTQRFFASFGNLSSATAITGNPM +VRAHGKKVLTSFGEAVKNLDNIKATFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFA +KDFTPECQAAWQKLVGAVAHALARKYH +> HBB_PHACO +VHWSAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFSQLSELHCDKLHVDPENFRLLGDILIIVLAAHFS +KDFTPECQAAWQKLVRVVAHALARKYH +> HBB_PHORU +VHWSAEEKQLITSLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFA +KDFTPECQAAWQKLVRVVAHALARKYH +> HBB_PHOVI +VHLTGEEKSAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSADAIMGNPK +VKAHGKKVLNSFSDGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_PHYCA +VHLTGEEKSGLTALWAKVNVEEIGGEALGRLLVVYPWTQRFFEHFGDLSTADAVMKNPK +VKKHGQKVLASFGEGLKHLDNLKGTFATLSELHCDKLHVDPENFRLLGNVLVVVLARHFG +KEFTPELQTAYQKVVAGVANALAHKYH +> HBB_PIG +VHLSAEEKEAVLGLWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSNADAVMGNPK +VKAHGKKVLQSFSDGLKHLDNLKGTFAKLSELHCDQLHVDPENFRLLGNVIVVVLARRLG +HDFNPDVQAAFQKVVAGVANALAHKYH +> HBB_POTTR +VHLSSEEKGLITSLWGKIDIEQTGGEALGRLLIVYPWTSRFFDHFGDLSSAKAVLGNAK +VLAHGAKVLVSFGDAIKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVICLAEHFG +KDFTIDAQVAWQKLVAGVANALAHKYH +> HBB_PREEN +VHLTPEEKAAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_PROCR +GFLTAEEKSLVNDLWSKVNVDEVGGEALGRLLVVYPWTQRFFQSFGDLSSADAIMGNGK +VKAHGKKVLNSFSDGLKHIDDLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +NEFTPPVQAAYQKVVAGVANALAHKYH +> HBB_PROHA +VHLTDAEKAAVTGLWGKVKVDEYGGEALGRLLVVYPWTQRFFEHFGDLSNADAIMHNPK +VLAHGKKVLSSFGDGLNHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVVVLARHFH +EEFTPDVQAAFQKVVTGVANALAHKYH +> HBB_PROLO +VHLTADEKTAVTTLWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSSADAIMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPPVQAAYQKVVAGVANALAHKYH +> HBB_PSIKR +VHWSAEEKQLITGLWGKVNVAECGAEALARLLIVYPWTQRFFTSFGNLSSASAVLGNPN +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAGHFG +KDFTPDCQAAWQKLVRAVAHALARKYH +> HBB_PTEAL +VHLSGEEKAAVTGLWGKVKVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSASAVMGNPK +VKAHGKKVLDSFSEGLQHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLARHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_PTEBR +VHLTGEEKAAVTALWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMGNPK +VKAHGKKVLNSFSEGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_PTEPO +VHLSGEEKAAVTGLWGKVKVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSAPAVMGNPK +VKAHGKKVLDSFSEGLQHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLARHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_RABIT +VHLSSEEKSAVTALWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSSANAVMNNPK +VKAHGKKVLAAFSEGLSHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVIVLSHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_RANES +GSDLVSGFWGKVDAHKIGGEALARLLVVYPWTQRYFTTFGNLGSADAICHNAKVLAHGE +KVLAAIGEGLKHPENLKAHYAKLSEYHSNKLHVDPANFRLLGNVFITVLARHFQHEFTPE +LQHALEAHFCAVGDALAKAYH +> HBB_RANTA +MLTSEEKAAVTGFWGKVKVDEVGAEALGRLLVVYPWTQRFFEHFGDLSSADAIMHNDKV +KAHGKRVLDAFSDGLKHLDDLKGAFAKLSELHCDKLHVDPENFRLLGNVLVVVLARHFGK +DFTPVLQADYQKVVTGVANALAHRYH +> HBB_RHEAM +VQWTAEEKQLITGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFA +KDFTPECQAAWQKLVRVVAHALARKYH +> HBB_RHIUN +VDLTAEEKAAVLALWGKVNEDEVGGEALGRLLVVYPWTQRFFDSFGDLSTPAAVLGNAK +VKAHGKKVLHSFGDGVHNLDNLKGTYAALSELHCDKLHVDPENFRLLGNVLVVVLAQHFG +QEFTPELQAAYQKVVAGVANALAHKYH +> HBB_ROUAE +VHLSGEEKAAVTALWGKVKVEEVGGEALGRLLVVYPWTQRFFDSFGDLSSASAVMSNPK +VKAHGKKVLDSFSEGLQHLDSLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLARHFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_SAGFU +VHLTGEEKSAVTTLWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCNKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_SAGMY +VHLTGEEKSAVTTLWGKVNVEEVGGEALGRLLVVYPWTQRFFDSFGDLSSPDAVMNNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_SAGNI +VHLTGEEKSAVTTLWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSSPDAVMNNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_SAISC +VHLTGDEKAAVTALWGKVNVEDVGGEALGRLLVVYPWTQRFFESFGDLSTPDAVMNNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_SHEEP +MLTAEEKAAVTGFWGKVKVDEVGAEALGRLLVVYPWTQRFFEHFGDLSNADAVMNNPKV +KAHGKKVLDSFSNGMKHLDDLKGTFAQLSELHCDKLHVDPENFRLLGNVLVVVLARHHGN +EFTPVLQADFQKVVAGVANALAHKYH +> HBB_SPAEH +VHLTDAEKAAVSGLWSKVNVDEIGGEALGRLLVVYPWTQRFFDSFGDLSSPSAVMSNPK +VKAHGKKVLNSFSEGLKHLDNLKGTFSSLSELHCDKLHVDPENFKLLGNVIVVVLAHHLG +KDFTPAAQAAFQKVVAGVATALAHKYH +> HBB_SPECI +VHLSDGEKNAISTAWGKVHAAEVGAEALGRLLVVYPWTQRFFDSFGDLSSASAVMGNAK +VKAHGKKVIDSFSNGLKHLDNLKGTFASLSELHCDKLHVDPENFKLLGNMIVIVMAHHLG +KDFTPEAQAAFQKVVAGVANALAHKYH +> HBB_SPETO +VHLTDGEKNAISTAWGKVNAAEIGAEALGRLLVVYPWTQRFFDSFGDLSSASAVMGNAK +VKAHGKKVIDSFSNGLKHLDNLKGTFASLSELHCDKLHVDPENFKLLGNMIVIVMAHHLG +KDFTPEAQAAFQKVVAGVANALSHKYH +> HBB_SQUAC +VHWTGEEKALVNAVWTKTDHQAVVAKALERLFVVYPWTKTYFVKFNGKFHASDSTVQTH +AGKVVSALTVAYNHIDDVKPHFVELSKKHYEELHVDPENFKLLANCLEVELGHALHKEFT +PEVQAAWSKFSNVVVDALSKGYH +> HBB_STRCA +VQWSAEEKQLISGLWGKVNVADCGAEALARLLIVYPWTQRFFASFGNLSSPTAILGNPM +VRAHGKKVLTSFGDAVKNLDNIKNTFAQLSELHCDKLHVDPENFRLLGDILIIVLAAHFT +KEFTPECQAAWQKLVRVVAHALARKYH +> HBB_STUVU +VQWTAEEKQLITGLWGKVNVAECGAEALARLLIVYPWTQRFFASFGNLSSPTAVLGNPK +VQAHGKKVLTSFGDAVKNLDSIKNTFSQLSELHCDKLHVDPENFRLLGDILVVVLAAHFG +KDFTPDCQAAWQKLVRVVAHALARKYH +> HBB_SUNMU +VHLSGEEKACVTGLWGKVNEDEVGAEALGRLLVVYPWTQRFFDSFGDLSSASAVMGNPK +VKAHGKKVLHSLGEGVANLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVVVLASKFG +KEFTPPVQAAFQKVVAGVANALAHKYH +> HBB_TACAC +VHLSGSEKTAVTNLWGHVNVNELGGEALGRLLVVYPWTQRFFESFGDLSSADAVMGNAK +VKAHGAKVLTSFGDALKNLDNLKGTFAKLSELHCDKLHVDPENFNRLGNVLVVVLARHFS +KEFTPEAQAAWQKLVSGVSHALAHKYH +> HBB_TADBR +VHLSGEEKGAVTALWGKVNQEEVGGEALGRLLVVYPWTQRFFDSFGDLSSASAVMGNAK +VKAHGKKVLNSFSDGLKNLDNLKGAFAKLSELHCDKLHVDPENFKLLGNVLVVVLARTFG +KEFTPPVQSAFQKVAAGVATALAHKYH +> HBB_TALEU +VHLSGEEKGLVTGMWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSASAIMGNAK +VKAHGKKVANSITDGVKNLDNLKGTYAKLSELHCDKLHVDPENFRLLGNVLVCVLARNLG +KEFTPQAQAAFQKVVLGVATALAHKYH +> HBB_TARBA +VHLTADEKAAVTALWGKVDVEDVGGEALGRLLVVYPWTQRFFDSFGDLSTPAAVMGNAK +VKAHGKKVLNAFSEGMAHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_TARSY +VHLTAEEKAAVTALWGKVDVEDVGGEALGRLLVVYPWTQRFFDSFGDLSTPAAVMSNAK +VKAHGKKVLNAFSDGMAHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVATALAHKYH +> HBB_THEGE +VHLTPEEKNAVTTLWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSPAAVMGNPK +VKAHGKKVLGAFSDGLNHLDNLKGTFAQLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_THUTH +VEWTQQERSIIAGFIANLNYEDIGPKALARCLIVYPWTQRYFGAYGDLSTPDAIKGNAK +IAAHGVKVLHGLDRAVKNMDNINEAYSELSVLHSDKLHVDPDNFRILGDCLTVVIAANLG +DAFTVETQCAFQKFLAVVVFALGRKYH +> HBB_TRAST +MLTAEEKAAVTAFWGKVKVDEVGGEALGRLLVVYPWTQRFFESFGDLSTADAVMNNPKV +KAHGKKVLDSFSNGMKHLDDLKGTFAALSELHCDKLHVDPENFKLLGNVLVVVLARHFGK +EFTPELQADYQKVVTGVANALAHRYH +> HBB_TRIIN +VHLTPEEKALVIGLWAKVNVKEYGGEALGRLLVVYPWTQRFFEHFGDLSSASAIMNNPK +VKAHGEKVFTSFGDGLKHLEDLKGAFAELSELHCDKLHVDPENFRLLGNVLVCVLARHFG +KEFSPEAQAAYQKVVAGVANALAHKYH +> HBB_TUPGL +VHLSGEEKAAVTGLWGKVDLEKVGGQSLGSLLIVYPWTQRFFDSFGDLSSPSAVMSNPK +VKAHGKKVLTSFSDGLNHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVRVLACNFG +PEFTPQVQAAFQKVVAGVANALAHKYH +> HBB_TURME +VQWTAEEKQLITGLWGKVNVAECGGEALARLLIVYPWTQRFFASFGNLSSPTAVLGNPK +VQAHGKKVLTSFGEAVKNLDSIKGTFAQLSELHCDKLHVDPENFRLLGDILVVVLAAHFG +KDFTPDCQAAWQKLVRVVAHALARKYH +> HBB_TURTR +VHLTGEEKSAVTALWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGDLSTADAVMKNPN +VKKHGQKVLASFGEGLKHLDDLKGTFAALSELHCDKLHVDPENFRLLGNVLVVVLARHFG +KEFTPELQSAYQKVVAGVATALAHKYH +> HBB_URSMA +VHLTGEEKSLVTGLWGKVNVDEVGGEALGRLLVVYPWTQRFFDSFGDLSSADAIMNNPK +VKAHGKKVLNSFSDGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBB_VULGR +VHWSAEEKQLITGLWGKVNVAECGAEALARLLIVYPWTQRFFASFGNLSSPTAIIGNPM +VRAHGKKVLTSFGEAVKNLDNIKNTFAQLSELHCEKLHVDPENFRLLGDILIIVLAAHFA +KDFTPDCQAAWQKLVRAVAHALARKYH +> HBB_VULVV +VHLTAEEKSLVTGLWGKVNVDEVGGEALGRLLIVYPWTQRFFDSFGDLSTPDAVMGNAK +VKAHGKKVLNSFSDGLKNLDNLKGTFAKLSELHCDKLHVDPENFKLLGNVLVCVLAHHFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBD_AOTTR +VHLTGDEKSAVAALWGKVNVEEVGGEALGRLLVVYPWTQRFFESFGALSSPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLARNFG +KEFTPLLQAAFQKVVAGVATALAHKYH +> HBD_ATEGE +VHLTPEEKAAVAALWGKVNVDEVGGEALGRLLVVYPWTQRFFESFGDLSTPAAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLARNFG +KEFTPQVQAAFQKVVAGVATALAHKYH +> HBD_COLPO +VHLTPEEKTVVSALWGKVNVDAVGGEALGRLLVVYPWTQRFFESFGDLSSPAAVMGNPK +VKAHGKKVLGAFSDGLAHLDSLKGTFSQLSELHCDKLHVDPENFRLLGNVLVCVLAHNFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBD_HUMAN +VHLTPEEKTAVNALWGKVNVDAVGGEALGRLLVVYPWTQRFFESFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFSQLSELHCDKLHVDPENFRLLGNVLVCVLARNFG +KEFTPQMQAAYQKVVAGVANALAHKYH +> HBD_PANTR +VHLTPEEKTAVNALWGKVNVDAVGGEALGRLLVVYPWTQRFFESFGDLSSPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFSQLSELHCDKLHVDPENFRLLGNVLVCVLARNFG +KEFTPQVQAAYQKVVAGVANALAHKYH +> HBD_SAGMY +VHLTGDEKSAVAALWSKVNVDEVGGEALGRLLVVYPWTQRFFESFGALSSPDAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLARNFG +KEFTPRVQAAFQKVVAGVATALAHKYH +> HBD_SAISC +VHLTGDEKSAVAALWSKVNVDEVGGEALGRLLVVYPWTQRFFESFGALSSADAVMGNPK +VKAHGKKVLGAFSDGLAHLDNLKGTFAQLSELHCDKLHVDPENFRLLGNVLVCVLARNFG +KEFTPQVQAAFQKVVAGVATALAHKYH +> HBD_TARSY +VHLTADEKAAVTALWSKVNVEDVGGEALGRLLVVYPWTQRFFDSFGDLSTPAAVMSNAK +VKAHGKKVLNAFSDGMAHLDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLVCVLAHHFG +KQFTPQLQAAYQKVVAGVAAALAHKYH +> HBE1_CAPHI +VHFTAEEKAAITGLWGKVNVEEAGGEALGRLLVVYPWTQRFFDSFGNLSSASAIMGNPK +VKAHGKKVLTSFGEAIKNLDNLKGAFAKLSELHCDKLHVDPENFRLLGNVIVIILATHFG +REFTPDVQAAWQKLVSGVATALAHKYH +> HBE2_BOVIN +VHFTTEENVAVASLWAKVNVEVVGGESLARLLIVCPWTQRFFDSFGNLYSESAIMGNPK +VKVYGRKVLNSFGNAIKHMDDLKGTFADLSELHCDKLHVDPENFRLLGNMILIVLATHFS +KEFTPQMQAAWQKLTNAVANALTHKYH +> HBE2_CAPHI +VHFTTEEKAAVASLWAKVNVEVVGGESLARLLIVYPWTQRFFDSFGNLCSESAIMGNPK +VKAHGRKVLNSFGNAIKHMDDLKGTFADLSELHCDKLHVDPPNFRLLGNMILIVLATHFS +KEFTPQMQAAWQKLTNAVANALAHKYH +> HBE4_BOVIN +VHFTTEEKAAVASLWAKVNVEVVGGESLARLLIVYPWTQRFFDSFGNLYSESAIMGNPK +VKAHGRKVLNSFGNAIEHMDDLKGTFADLSELHCDKLHVDPENFRLLGNMILIVLATHFS +KEFTPQMQASWQKLTNAVANALAHKYH +> HBE_CAIMO +VHWSAEEKQLITGLWGKVNVEECGAEALARLLIVYPWTQRFFSSFGNLSSPTAIIGNPK +VPPHGRKFFTSFGEPVKNLDNIKNTYAKLSELHCEKLQVEPENFRLLGDILIIVLASHFA +RDFTPACQFPWQKLVSVVAHALPRKYH +> HBE_CHICK +VHWSAEEKQLITSVWSKVNVEECGAEALARLLIVYPWTQRFFASFGNLSSPTAIMGNPR +VRAHGKKVLSSFGEAVKNLDNIKNTYAKLSELHCDKLHVDPENFRLLGDILIIVLASHFA +RDFTPACQFAWQKLVNVVAHALARKYH +> HBE_DIDMA +VHFTPEDKTNITSVWTKVDVEDVGGESLARLLVVYPWTQRFFDSFGNLSSASAVMGNPK +VKAHGKKVLTSFGEGVKNMDNLKGTFAKLSELHCDKLHVDPENFRLLGNVLIIVLASRFG +KEFTPEVQASWQKLVSGVSSALGHKYH +> HBE_GALCR +VHFTAEEKAIIMSLWGKVNIEEAGGEALGRLLVVYPWTQRFFETFGNLSSASAIMGNPK +VKAHGKKVLTSFGEAVKNMDNLKGAFAKLSELHCDKLHVDPENFKLLGNVMVIILATHFG +KEFTPDVQAAWQKLVSGVATALAHKYH +> HBE_HUMAN +VHFTAEEKAAVTSLWSKMNVEEAGGEALGRLLVVYPWTQRFFDSFGNLSSPSAILGNPK +VKAHGKKVLTSFGDAIKNMDNLKPAFAKLSELHCDKLHVDPENFKLLGNVMVIILATHFG +KEFTPEVQAAWQKLVSAVAIALAHKYH +> HBE_LEMFU +VHFTAEEKSTILSLWGKVNVEEAGGEALGRLLVVYPWTQRFFDNFGNLSSASAILGNPK +VKAHGKKVLTSFGEAVKNMDNLKGAFAKLSELHCDKLHVDPENFKLLGNVMVIILATHFG +KEFTPDVQAAWQKLVSGVATALAHKYH +> HBE_MOUSE +VNFTAEEKTLINGLWSKVNVEEVGGEALGRLLVVYPWTQRFFDSFGNLSSASAIMGNPR +VKAHGKKVLTAFGESIKNLDNLKSALAKLSELHCDKLHVDPENFKLLGNVLVIVLASHFG +NEFTAEMQAAWQKLVAGVATALSHKYH +> HBE_PIG +VHFTAEEKAVITGLWSRVNVEETGGEAVGRLLVVYPWTQRFFDSFGNMSSPSAIMGNPK +VKAHGKKVLTSFGDAVKNMDNLKGTFAKLSELHCDKLHVDPENFRLLGNMIVIILASHFG +REFTPEVQAAWQKLVAGVATALAHKYH +> HBE_PONPY +VHFTAEEKAAVTSLWSKMNVEEAGGEALGRLLVVYPWTQRFFDSFGNLSSPSAILGNPK +VKAHGKKVLTSFGDAIKNMDNLKTTFAKLSELHCDKLHVDPENFKLLGNVMVIILATHFG +KEFTPEVQAAWQKLVSAVAIALAHKYH +> HBE_RABIT +VHFTPEEKCIISKQWGQVNIDETGGEALGRLLVVYPWTQRFFDNFGNLSSSSAIMGNPK +VKAHGKKVLTSFGDAIKNMDNLKGAFAKLSELHCDKLHVDPENFKLLGNVLLIVLATHFG +KEFTPEVQAAWQKLVSGVAIALAHKYH +> HBE_TARSY +VHLTAEEKSSVTSLWGKMNVDEAGGEALGRLLVVYPWTQRFFDNFGNLSSSSAIMGNPK +VKAHGKKVLTSFGDAIKNMDNLKGAFAKLSELHCDKLHVDPENFRLLGNVLVIILVTHFG +KDFTPEVQVAWQKLVSGVATALAHKYH +> HBF1_URECA +GLTTAQIKAIQDHWFLnIKGCLQAAADSIFFKYLTAYPGDLAFFHKFSSVPLYGLRSNP +AYKAQTLTVINYLDKVVDALGGNAGALMKAKVPSHDAMGITPKHFGQLLKLVGGVFQEEF +SADPTTVAAWGDAAGVLVAAMK +> HBG1_PONPY +GHFTEEDKATITSLWGKVNVEDAGGETLGRLLVVYPWTQRFFDSFGNLSSASAIMGNPK +VKAHGKKVLTSLGDAIKNLDDLKGTFAQLSELHCDKLHVDPENFRLLGNVLVTVLAIHFG +KEFTPEVQASWQKMVTGVASALSSRYH +> HBG2_PONPY +SNFTAEDKAAITSLWGKLNVEDAGGETLGRLLLVYPWTQRFFDSFGSLSSPSAIMGNPK +VKAHGVKVLTSLGGAVKNLDDLKGTFGQLSELHCDKLHVDPENFRLLGNVLVTVLAILHG +KEFTPEVQASWQKMVAAVASALASRYH +> HBG_ATEGE +SNFTAEDKAAITSLWGKVNVEDAGGETLGRLLVVYPWTQRFFDSFGSLSSPSAIMGNPK +VKAHGVKVLTSLGEAIKNLDDLKGTFGQLSELHCDKLHVDPENFRLLGNVLVTVLAILHG +KEFTPEVQASWQKMVAGVASALASRYH +> HBG_CHEME +VHFTVEEKAVITSLWGKVNVEEAGGEALGRLLVVYPWTQRFFDNFGNLSSASAIMGNPK +VKAHGKKVLTSLGEAIKNMDDLKGTFAHLSELHCDRLHVDPENFKLLGNELVIVLAKHFG +KEFTPQVQAAWQKMVAGVAIALAHKYH +> HBG_GALCR +VHFTAEEKAIITSLWGKVNVEEDGGEALGRLLVVYPWTQRFFDTFGNLSSASAIMGNPK +VKAHGKKVLSSLGEAIKNMDDLKGTFSHLSELHCDRLHVDPENFRLLGNVLVIVLAKHFG +KEFTPQIQAASQKMVAGVATALAHKYH +> HBG_GORGO +GHFTEEDKATITSLWGKVNVEDAGGETLGRLLVVYPWTQRFFDSFGNLSSASAIMGNPK +VKAHGKKVLTSLGGAIKHLDDLKGTFAQLSELHCDKLHVDPENFRLLGNVLVTVLAIHFG +KEFTPEVQASWQKMVTAVASALSSRYH +> HBG_HUMAN +GHFTEEDKATITSLWGKVNVEDAGGETLGRLLVVYPWTQRFFDSFGNLSSASAIMGNPK +VKAHGKKVLTSLGDAIKHLDDLKGTFAQLSELHCDKLHVDPENFKLLGNVLVTVLAIHFG +KEFTPEVQASWQKMVTAVASALSSRYH +> HBG_HYLLA +GHFTEEDKATITSLWGKVNVEDAGGETLGRLLVVYPWTQRFFDSFGNLSSASAIMGNPK +VKAHGKKVLTSLGGAIKNLDDLKGTFAQLSELHCDKLHVDPENFRLLGNVLVTVLAIHFG +KEFTPEVQASWQKMVAGVASALSSRYH +> HBG_LEMFU +VHFTAEEKAVITSLWGKVNVEEAGGEALGRLLVVYPWTQRFFDNFGNLSSASAIMGNPK +VKAHGKKVLTSLGDAIKNMDDLKGTFAHLSELHCDRLHVDPENFKLLGNELVIVLAKYFG +KEFTPQVQAAWQKMVAGVAIALAHKYH +> HBG_MACMU +GHFTEEDKATITSLWGKVNVEDAGGETLGRLLVVYPWTQRFFDSFGNLSSASAIMGNPK +VKAHGKKVLTSLGDAIKNLDDLKGTFAQLSELHCDKLHVDPENFRLLGNVLVTVLAIHFG +KEFTPEVQASWQKMVAGVASALSSRYH +> HBG_MACNE +GHFTEEDKATITSLWGKVNVEDAGGETLGRLLVVYPWTQRFFDSFGNLSSASAIMGNPK +VKAHGKKVLTSLGDAIKNLDDLKGTFAQLSELHCDKLHVDPENFRLLGNVLVTVLAIRFG +KEFTPEVQASWQKMVAGVASALSSRYH +> HBG_RABIT +VHFTAEEKAAITSTWKLVDVEDAGAEALGRLLVVYPWTQRFFDSFGNLSSSSAIMGNPK +VKAHGKKVLTAFGDAVKNVDDLKNTFAHLSELHCDRLHVDPENFKLLGNVLVIVLAKYFG +KEFTPQVQSAWQKLVAGVATALAHKYH +> HBG_TARSY +VHFTAEEKAIITSLWAKVNVEETGGEALGRLLVVYPWTQRFFDNFGNLSSASAIMGNPK +VKAHGKKVLSSLGEAVTHMDDLKDAFAHLSRLHCDELHVDPENFRVTpGKRAVIVLAHHF +GREFTPQVQAAWKKLMSAVAIAMGHKYH +> HBP1_CASGL +ALTEKQEALLKQSWEVLKQNIPAHSLRLFALIIEAAPESKYVFSFLKDSNEIPENNPKL +KAHAAVIFKTICESATELRQKGHAVWDNNTLKRLGSIHLKNKITDPHFEVMKGALLGTIK +EAIKENWSDEMGQAWTEAYNQLVATIKAEMKE +> HBP2_CASGL +MSTLEGRGFTEEQEALVVKSWSAMKPNAGELGLKFFLKIFEIAPSAQKLFSFLKDSNVP +LERNPKLKSHAMSVFLMTCESAVQLRKAGKVTVRESSLKKLGASHFKHGVADEHFEVTKF +ALLETIKEAVPETWSPEMKNAWGEAYDKLVAAIKLEMKPSS +> HBPI_CAIMO +TLTQAEKAAVITIWTKVATQADAIGAESLERLFSSYPQTKTYFPHFDLSQGSTQLRGHG +SKVMNAIGEAVKNIDDIRGALAKLSELHAYILRVDPVNFKLLCHCILCSVAARYPSDFTP +EVHAAWDKFLSSVSSVLTEKYR +> HBPI_CHICK +ALTQAEKAAVTTIWAKVATQIESIGLESLERLFASYPQTKTYFPHFDVSQGSVQLRGHG +SKVLNAIGEAVKNIDDIRGALAKLSELHAYILRVDPVNFKLLSHCILCSVAARYPSDFTP +EVHAEWDKFLSSISSVLTEKYR +> HBPL_PARAD +SSSEVNKVFTEEQEALVVKAWAVMKKNSAELGLQFFLKIFEIAPSAKNLFSYLKDSPVP +LEQNPKLKPHATTVFVMTCESAVQLRKAGKATVKESDLKRIGAIHFKTGVVNEHFEVTRF +ALLETIKEAVPEMWSPEMKNAWGVAYDQLVAAIKFEMKPSST +> HBPL_TRETO +MSSSEVDKVFTEEQEALVVKSWAVMKKNSAELGLKFFLKIFEIAPSAKNLFSYLKDSPI +PLEQNPKLKPHAMTVFVMTCESAVQLRKAGKVTVRESNLKRLGAIHFKNGVVNEHFETRF +ALLETIKEAVPEMWSPEMKNAWGEAYDQLVAAIKSEMKPSST +> HBRH_CHICK +VHWSAEEKQLITSVWSKVNVEECGAEALARLLIVYPWTQRFFDNFGNLSSPTAIIGNPK +VRAHGKKVLSSFGEAVKNLDNIKNTYAKLSELHCEKLHVDPENFRLLGNILIIVLAAHFT +KDFTPTCQAVWQKLVSVVAHALAYKYH +> HBT_PIG +VHFTAEEKSVITGLWGKVNVEETGGEAVGRLLVVYPWTQRFFDSFGNMSSPSAIMGNPK +VKAHGKKVLTSFGDAVKNMDNLKGTFAKLSELHCDKLHVDPENFRLLGNMIVIILASHFG +GEFTPEVQAAWQKLVAGVATALAHKYH +> LGB1_LUPLU +GVLTDVQVALVKSSFEEFNANIPKNTHRFFTLVLEIAPGAKDLFSFLKGSSEVPQNNPD +LQAHAGKVFKLTYEAAIQLQVNGAVASDATLKSLGSVHVSKGVVDAHFPVVKEAILKTIK +EVVGDKWSEELNTAWTIAYDELAIIIKKEMKDAA +> LGB1_MEDSA +MSFTDKQEALVNSSWEAFKQNLPRYSVFFYTVVLEKAPAAKGLFSFLKNSAEVQDSPQL +QAHAEKVFGLVRDSAVQLRATGGVVLGDATLGAIHVRKGVVDPHFVVVKEALLKTIKEAA +GDKWSEELNTAWEVAYDALATAIKKAMS +> LGB1_MEDTR +MSFTDKQEALVNSSYEAFKQNLSGYSVFFYTVILEKAPAAKGLFSFLKDSAGVQDSPQL +QAHAEKVFGLVRDSASQLRATGGVVLGDAALGAIHIQKGVVDPHFVVVKEALLKTIKEAA +GDKWSEELSTAWEVAYDALATEIKKAMS +> LGB1_PEA +GFTDKQEALVNSSSEFKQNLPGYSILFYTIVLEKAPAAKGLFSFLKDTAGVEDSPKLQA +HAEQVFGLVRDSAAQLRTKGEVVLGNATLGAIHVQKGVTNPHFVVVKEALLQTIKKASGN +NWSEELNTAWEVAYDGLATAIKKAMKTA +> LGB1_SOYBN +GAFTEKQEALVSSSFEAFKANIPQYSVVFYNSILEKAPAAKDLFSFLANGVDPTNPKLT +GHAEKLFALVRDSAGQLKTNGTVVADAALVSIHAQKAVTDPQFVVVKEALLKTIKEAVGG +NWSDELSSAWEVAYDELAAAIKKA +> LGB1_VICFA +GFTEKQEALVNSSSQLFKQNPSNYSVLFYTIILQKAPTAKAMFSFLKDSAGVVDSPKLG +AHAEKVFGMVRDSAVQLRATGEVVLDGKDGSIHIQKGVLDPHFVVVKEALLKTIKEASGD +KWSEELSAAWEVAYDGLATAIKAA +> LGB2_LUPLU +GALTESQAALVKSSWEEFNANIPKHTHRFFILVLEIAPAAKDLFSFLKGTSEVPQNNPE +LQAHAGKVFKLVYEAAIQLQVTGVVVTDATLKNLGSVHVSKGVADAHFPVVKEAILKTIK +EVVGAKWSEELNSAWTIAYDELAIVIKKEMNDAA +> LGB2_MEDTR +MGFTEKQEALVNSSWELFKQNPGNSVLFYTIILEKAPAAKGMFSFLKDTAGVQDSPKLQ +SHAEKVFGMVRDSAVQLRATGGVVLGDATLGAIHIQKGVVDPHFVVVKEALLKTIKEVSG +DKWSEELSTAWEVAYDALAAAIKKAMG +> LGB2_SESRO +GFTEKQEALVNASYEAFKQNLPGNSVLFYSFILEKAPAAKGMFSFLKDSDGVPQNNPSL +QAHAEKVFGLVRDSAAQLRATGVVVLADASLGSVHVQKGVLDPHFVVVKEALLKTLKEAA +GATWSDEVSNAWEVAYDGLSAAIKKAMS +> LGB2_SOYBN +GAFTEKQEALVSSSFEAFKANIPQYSVVFYTSILEKAPAAKDLFSFLSNGVDPSNPKLT +GHAEKLFGLVRDSAGQLKANGTVVADAALGSIHAQKAITDPQFVVVKEALLKTIKEAVGD +KWSDELSSAWEVAYDELAAAIKKAF +> LGB3_MEDSA +MGFTDKQEALVNSSWESFKQNPGNSVLFYTIILEKAPAAKGMFSFLKDSAGVQDSPKLQ +SHAEKVFGMVRDSAAQLRATGGVVLGDATLGAIHIQKGVVDPHFAVVKEALLKTIKEVSG +DKWSEELNTAWEVAYDALATAIKKAMV +> LGB3_SESRO +GFTEKQEALVNASYEAFKQNLPGNSVLFYSFILEKAPAAKGMFSFLKDFDEVPQNNPSL +QAHAEKVFGLVRDSAAQLRATGVVVLADASLGSVHVQKGVLDPHFVVVKEALLKTLKEAG +GATWSDEVSNAWEVAYDELSAAIKKAMS +> LGB3_SOYBN +GAFTDKQEALVSSSFEAFKTNIPQYSVVFYTSILEKAPVAKDLFSFLANGVDPTNPKLT +GHAEKLFGLVRDSAGQLKASGTVVIDAALGSIHAQKAITDPQFVVVKEALLKTIKEAVGD +KWSDELSSAWEVAYDELAAAIKKAF +> LGB4_MEDSA +MGFTADQEALVNSSWESFKQNLPGYSVFFYTTILEKAPAAKGMFSFLKDSAGVQDSPQL +QAHAEKVFGMVRDSAVQLRATGEVVLGDATLGSIHIQKGVVDPHFVVVKEALLKTIKEAV +GDKWSEELSTSWEVAYDGLASAIKKAMS +> LGBA_PHAVU +GAFTEKQEALVNSSWEAFKGNIPQYSVVFYTSILEKAPAAKNLFSFLANGVDPTNPKLT +AHAESLFGLVRDSAAQLRANGAVVADAALGSIHSQKGVSNDQFLVVKEALLKTLKQAVGD +KWTDQLSTALELAYDELAAAIKKAYA +> LGBA_SOYBN +VAFTEKQDALVSSSFEAFKANIPQYSVVFYTSILEKAPAAKDLFSFLANGVDPTNPKLT +GHAEKLFALVRDSAGQLKASGTVVADAALGSVHAQKAVTDPQFVVVKEALLKTIKAAVGD +KWSDELSRAWEVAYDELAAAIKKA +> LGB_PSOTE +MGGFTEKQEALVNSSYEAFKANVPQYSVVFYTSILEKAPAAKDLFPFLANGVDPTNPKL +IGHAEKLFGLVHDSAAQLRAKGAVVADAALGSLHAQKGVTDPQFVVVKEALLKTVKEAVG +DKWSDELSNAWEVAYNELAAALKKAF +> MYG_ALLMI +MELSDQEWKHVLDIWTKVESKLPEHGHEVIIRLLQEHPETQERFEKFKHMKTADEMKSS +EKMKQHGNTVFTALGNILKQKGNHAEVLKPLAKSHALEHKIPVKYLEFISEIIVKVIAEK +YPADFGADSQAAMRKALELFRNDMASKYKEFGYQG +> MYG_AOTTR +GLSDGEWQLVLNVWGKVEADVPSHGQEVLISLFKGHPETLEKFDKFKHLKSEDEMKASE +ELKKHGVTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPVKYLEFISDAIVHVLQKKH +PGDFGADAQGAMKKALELFRNDMAAKYKELGFQG +> MYG_APTFO +GLNDQEWQQVLTMWGKVESDLAGHGHAVLMRLFKSHPETMDRFDKFRGLKTPDEMRGSE +DMKKHGVTVLTLGQILKKKGHHEAELKPLSQTHATKHKVPVKYLEFISEAIMKVIAQKHA +SNFGADAQEAMKKALELFRNDMASKYKEFGFQG +> MYG_BALAC +VLSDAEWHLVLNIWAKVEADVAGHGQDILIRLFKGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSRH +PAEFGADAQAAMNKALELFRKDIAAKYKELGFQG +> MYG_BALPH +VLTDAEWHLVLNIWAKVEADVAGHGQDILISLFKGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSRH +PADFGADAQAAMNKALELFRKDIAAKYKELGFQG +> MYG_BOVIN +GLSDGEWQLVLNAWGKVEADVAGHGQEVLIRLFTGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHEAEVKHLAESHANKHKIPVKYLEFISDAIIHVLHAKH +PSDFGADAQAAMSKALELFRNDMAAQYKVLGFHG +> MYG_CALJA +GLSDGEWQLVLNVWGKVEADIPSHGQEVLISLFKGHPETLEKFDKFKHLKSEDEMKASE +ELKKHGVTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPVKYLEFISDAIVHVLQKKH +PGDFGADAQGAMKKALELFRNDMAAKYKELGFQG +> MYG_CANFA +GLSDGEWQIVLNIWGKVETDLAGHGQEVLIRLFKNHPETLDKFDKFKHLKTEDEMKGSE +DLKKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPVKYLEFISDAIIQVLQSKH +SGDFHADTEAAMKKALELFRNDIAAKYKELGFQG +> MYG_CASFI +GLSDGEWQLVLHVWGKVEADLAGHGQEVLIRLFKGHPETLEKFNKFKHIKSEDEMKASE +DLKKHGVTVLTALGGVLKKKGHHEAEIKPLAQSHATKHKIPIKYLEFISEAIIHVLQSKH +PGXFGADAXGAMNKALELFRKDIAAKYKELGFQG +> MYG_CEBAP +GLSDGEWQLVLNVWGKVEADIPSHGQEVLISLFKGHPETLEKFDKFKHLKSEDEMKASE +ELKKHGATVLTALGGILKKKGQHEAELKPLAQSHATKHKIPVKYLEFISDAIVHVLQKKH +PGDFGADAQGAMKKALELFRNDMAAKYKELGFQG +> MYG_CEREL +GLSDGEWQLVLNAWGKVEADVAGHGQEVLIRLFTGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHEAEVKHLAESHANKHKIPVKYLEFISDAIIHVLHAKH +PSNFGADAQGAMSKALELFRNDMAAQYKVLGFQG +> MYG_CHEMY +GLSDDEWNHVLGIWAKVEPDLTAHGQEVIIRLFQLHPETQERFAKFKNLTTIDALKSSE +EVKKHGTTVLTALGRILKQKNNHEQELKPLAESHATKHKIPVKYLEFICEIIVKVIAEKH +PSDFGADSQAAMKKALELFRNDMASKYKEFGFLG +> MYG_CHICK +GLSDQEWQQVLTIWGKVEADIAGHGHEVLMRLFHDHPETLDRFDKFKGLKTPNEMKGSE +DLKKHGATVLTQLGKILKQKGQHESDLKPLAQTHATKHKIPVKYLEFISEVIIKVIAEKH +AADFGADSQAAMKKALELFRNDMASKYKEFGFQG +> MYG_CTEGU +GLSDGEWQLVLNAWGKVETDIGGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGTTVLTALGNILKKKGQHEAELAPLAQSHATKHKIPVKYLEFISEAIIQVLESKH +PGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +> MYG_CYPCA +HDAELVLKCWGGVEADFEGTGGEVLTRLFKQHPETQKLFPKFVGIASNELAGNAAVKAH +GATVLKKLGELLKARGDHAAILKPLATTHANTHKIALNNFRLITEVLVKVMAEKAGLDAG +GQSALRRVMDVVIGDIDTYYKEIGFAG +> MYG_DIDMA +GLSDGEWQLVLNAWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGATVLTALGNILKKKGNHEAELKPLAQSHATKHKISVQFLEFISEAIIQVIQSKH +PGDFGGDAQAAMGKALELFRNDMAAKYKELGFQG +> MYG_ELEMA +GLSDGEWELVLKTWGKVEADIPGHGEFVLVRLFTGHPETLEKFDKFKHLKTEGEMKASE +DLKKQGVTVLTALGGILKKKGHHEAEIQPLAQSHATKHKIPIKYLEFISDAIIHVLQSKH +PAEFGADAQGAMKKALELFRNDIAAKYKELGFQG +> MYG_ERIEU +GLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKDHPETLEKFDKFKHLKSEDEMKSSE +DLKKHGTTVLTALGGILKKKGQHEAQLAPLAQSHANKHKIPVKYLEFISEAIIQVLKSKH +AGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +> MYG_ESCGI +VLSDAEWQLVLNIWAKVEADVAGHGQDILIRLFKGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSRH +PGDFGADAQAAMNKALELFRKDIAAKYKELGFQG +> MYG_GALAU +ADWDKVNSVWSAMEANITAVGQNILLRLFEQYPESQSYFPKLKNKSLGELKDTADIKAQ +ADTVLKALGNIVKKKGNHSQPVKALAATHITTHKIPPHYFTKITTIAVGVLSEMYPSEMN +AQAQEAFSGAFKSICSDIEKEYKAANFQG +> MYG_GALCR +GLSDGEWQLVLKIWGKVEADLAGHGQDVLIRLFTAHPETLEKFDKFKNLKTADEMKASE +DLKKHGVTVLTALGGILKKKGQHEAEIKPLAQSHATKHKIPVKYLEFISEAIIHVLQNKH +SGDFGTDVQGAMSKALELFRNDIAAKYKELGFQG +> MYG_GALJA +AXWDKVNSVWSAVEQNITAIGQNILLRLFEQYPESEDYFPKLKNKSLGELKDTADIKAQ +ADTVLRALGNIVKKKGDHSQPVKALAATHITTHKIPPHYFTKITTIAVGVLSEMYPSEMN +AQAQAAFSGAFKNICSDIEKEYKAANFQG +> MYG_GLOME +GLSDGEWQLVLNVWGKVEADLAGHGQDILIRLFKGHPETLEKFDKFKHLKTEADMKASE +DLKKHGNTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRH +PAEFGADAQGAMNKALELFRKDIAAKYKELGFHG +> MYG_GORBE +GLSDGEWQLVLNVWGKVEADISGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISECIIQVLQSKH +PGDFGADAQGAMNKALELFRKDMASNYKELGFQG +> MYG_GRAGE +GLSDDEWHHVLGIWAKVEPDLSAHGQEVIIRLFQVHPETQERFAKFKNLKTIDELRSSE +EVKKHGTTVLTALGRILKLKNNHEPELKPLAESHATKHKIPVKYLEFICEIIVKVIAEKH +PSDFGADSQAAMRKALELFRNDMASKYKEFGFQG +> MYG_HALGR +GLSDGEWHLVLNVWGKVETDLAGHGQEVLIRLFKSHPETLEKFDKFKHLKSEDDMRRSE +DLRKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSKH +PAEFGADAQAAMKKALELFRNDIAAKYKELGFHG +> MYG_HETPO +TEWEHVNKVWAVVEPDIPAVGLAILLRLFKEHKETKDLFPKFKEIPVQQLGNNEDLRKH +GVTVLRALGNILKQKGKHSTNVKELADTHINKHKIPPKNFVLITNIAVKVLTEMYPSDMT +GPMQESFSKVFTVICSDLETLYKEANFQG +> MYG_HORSE +GLSDGEWQQVLNVWGKVEADIAGHGQEVLIRLFTGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGTVVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSKH +PGNFGADAQGAMTKALELFRNDIAAKYKELGFQG +> MYG_HUMAN +GLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISECIIQVLQSKH +PGDFGADAQGAMNKALELFRKDMASNYKELGFQG +> MYG_HYLAG +GLSDGEWQLVLNVWGKVEADIPSHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISECIIQVLQSKH +PGDFGADAQGAMNKALELFRKDMASNYKELGFQG +> MYG_INIGE +GLSDGEWQLVLNIWGKVEADLAGHGQDVLIRLFKGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRH +PGDFGADAQAAMNKALELFRKDIAAKYKELGFHG +> MYG_KOGSI +VLSEGEWQLVLHVWAKVEADIAGHGQDILIRLFKHHPETLEKFDRFKHLKSEAEMKASE +DLKKHGVTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRH +PADFGADAQGAMSKALELFRKDIAAKYKELGYQG +> MYG_LAGLA +GLSDGEWQLVLNIWGKVEADIPSHGQEVLISLFKGHPETLEKFDKFKHLKSEDEMKASE +ELKKHGVTVLTALGGILKKKGQHEAELKPLAQSHATKHKIPVKYLEFISDAIIHALQKKH +PGDFGADAQGAMKKALELFRNDMAAKYKELGFQG +> MYG_LAGMA +GLSDGEWQLVLNVWGKVEADLGGHGQEVLIRLFKGHPETLEKFDKFKHLKAEDEMRASE +DLKKHGTTVLTALGGILKKRGQHAAELAPLAQSHATKHKIPVKYLEFISEAIIQVLQSKH +PGDFGADAQAAMSKALELFRNDIAAKYKELGFQG +> MYG_LEPMU +GLSDGEWQLVLNVWGKVEADVGGHGQEVLIRLFTGHPETLEKFDKFKHLKTADEMKASE +DLKKHGTTVLTALGGILKKKGQHEAELKPLAQSHATKHKIPIKYLEFISDAIVHVLHSKH +PAEFGADAQAAMKKALELFRNDIAAKYKELGFQG +> MYG_LOXAF +GLSDGEWELVLKTWGKVEADIPGHGEFVLVRLFTGHPETLEKFDKFKHLKTEGEMKASE +DLKKQGVTVLTALGGILKKKGHHEAEIQPLAQSHATKHKIPIKYLEFISDAIIHVLQSKH +PAEFGADAQAAMKKALELFRNDIAAKYKELGFQG +> MYG_LUTLU +GLSDGEWQLVLNVWGKVEADLAGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKGSE +DLKKHGNTVLTALGGILKKKGKHEAELKPLAQSHATKHKIPIKYLEFISEAIIQVLQSKH +PGXFGADAQGAMKRALELFRNDIAAKYKELGFQG +> MYG_LYCPI +GLSDGEWQIVLNIWGKVETDLAGHGQEVLIRLFKNHPETLDKFDKFKHLKTEDEMKGSE +DLKKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPVKYLEFISDAIIQVLQNKH +SGDFHADTEAAMKKALELFRNDIAAKYKELGFQG +> MYG_MACFA +GLSDGEWQLVLNVWGKVEADIPSHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGVTVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLELISESIIQVLQSKH +PGDFGADAQGAMNKALELFRNDMAAKYKELGFQG +> MYG_MACRU +GLSDGEWQLVLNIWGKVETDEGGHGKDVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGITVLTALGNILKKKGHHEAELKPLAQSHATKHKIPVQFLEFISDAIIQVIQSKH +AGNFGADAQAAMKKALELFRHDMAAKYKEFGFQG +> MYG_MEGNO +VLSDAEWQLVLNIWAKVEADVAGHGQDILIRLFKGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSRH +PADFGADAQAAMNKALELFRKDIAAKYKELGFQG +> MYG_MELME +GLSDGEWQLVLNVWGKVEADLAGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKGSE +DLKKHGNTVLTALGGILKKKGHQEAELKPLAQSHATKHKIPVKYLEFISDAIAQVLQSKH +PGNFAAEAQGAMKKALELFRNDIAAKYKELGFQG +> MYG_MESCA +GLSEAEWQLVLHVWAKVEADLSGHGQEILIRLFKGHPETLEKFDKFKHLKSEAEMKASE +DLKKHGHTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSKH +PSDFGADAQGAMTKALELFRKDIAAKYKELGFHG +> MYG_MOUSE +GLSDGEWQLVLNVWGKVEADLAGHGQEVLIGLFKTHPETLDKFDKFKNLKSEEDMKGSE +DLKKHGCTVLTALGTILKKKGQHAAEIQPLAQSHATKHKIPVKYLEFISEIIIEVLKKRH +SGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +> MYG_MUSAN +VDWEKVNSVWSAVESDLTAIGQNILLRLFEQYPESQNHFPKFKNKSLGELKDTADIKAQ +ADTVLSALGNIVKKKGSHSQPVKALAATHITTHKIPPHYFTKITTIAVDVLSEMYPSEMN +AQVQAAFSGAFKIICSDIEKEYKAANFQG +> MYG_NYCCO +GLSDGEWQSVLNVWGKVEADLAGHGQEILIRLFTAHPETLEKFDKFKNLKTPDEMKASE +DLKKHGVTVLTALGGILKKKGQHEAEIKPLAQSHATKHKIPVKYLEFISGAIIHVLQSKH +PGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +> MYG_OCHPR +GLSDGEWQLVLNVWGKVEADLAGHGQEVLIRLFKNHPETLEKFDKFKNLKSEDEMKGSD +DLKKHGNTVLSALGGILKKKGQHEAELKPLAQSHATKHKIPVKYLEFISEAIIQVLQSKH +PGDFGADAQGAMSKALELFRNDMAAKYKELGFQG +> MYG_ORCOR +GLSDGEWQLVLNVWGKVEADLAGHGQDILIRLFKGHPETLEKFDKFKHLKTEADMKASE +DLKKHGNTVLTALGAILKKKGHHDAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRH +PAEFGADAQGAMNKALELFRKDIAAKYKELGFHG +> MYG_ORNAN +GLSDGEWQLVLKVWGKVEGDLPGHGQEVLIRLFKTHPETLEKFDKFKGLKTEDEMKASA +DLKKHGGTVLTALGNILKKKGQHEAELKPLAQSHATKHKISIKFLEYISEAIIHVLQSKH +SADFGADAQAAMGKALELFRNDMAAKYKEFGFQG +> MYG_ORYAF +GLSDAEWQLVLNVWGKVEADIPGHGQDVLIRLFKGHPETLEKFDRFKHLKTEDEMKASE +DLKKHGTTVLTALGGILKKKGQHEAEIQPLAQSHATKHKIPVKYLEFISEAIIQVIQSKH +SGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +> MYG_PANTR +GLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISECIIQVLHSKH +PGDFGADAQGAMNKALELFRKDMASNYKELGFQG +> MYG_PAPAN +GLSDGEWQLVLNVWGKVEADIPSHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLELISESIIQVLQSKH +PGDFGADAQGAMNKALELFRNDMAAKYKELGFQG +> MYG_PERPO +GLSDGEWQSVLNVWGKVEADLAGHGQEILIRLFTAHPETLEKFDKFKNLKTPDEMKASE +DLKKHGVTVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISEAIIHVLQSKH +PGDFGADAQGAMNKALELFRNDIAAKYKELGFQG +> MYG_PHOPH +GLSEGEWQLVLNVWGKVEADLAGHGQDVLIRLFKGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHDAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRH +PAEFGADAQGAMNKALELFRKDIATKYKELGFHG +> MYG_PHYCA +VLSEGEWQLVLHVWAKVEADVAGHGQDILIRLFKSHPETLEKFDRFKHLKTEAEMKASE +DLKKHGVTVLTALGAILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRH +PGDFGADAQGAMNKALELFRKDIAAKYKELGYQG +> MYG_PIG +GLSDGEWQLVLNVWGKVEADVAGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGNTVLTALGGILKKKGHHEAELTPLAQSHATKHKIPVKYLEFISEAIIQVLQSKH +PGDFGADAQGAMSKALELFRNDMAAKYKELGFQG +> MYG_PONPY +GLSDGEWQLVLNVWGKVEADIPSHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGATVLTALGGILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISESIIQVLQSKH +PGDFGADAQGAMNKALELFRKDMASNYKELGFQG +> MYG_PROGU +GLSDGEWQLVLNVWGKVEGDLSGHGQEVLIRLFKGHPETLEKFDKFKHLKAEDEMRASE +ELKKHGTTVLTALGGILKKKGQHAAELAPLAQSHATKHKIPVKYLEFISEAIIQVLQSKH +PGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +> MYG_RABIT +GLSDAEWQLVLNVWGKVEADLAGHGQEVLIRLFHTHPETLEKFDKFKHLKSEDEMKASE +DLKKHGNTVLTALGAILKKKGHHEAEIKPLAQSHATKHKIPVKYLEFISEAIIHVLHSKH +PGDFGADAQAAMSKALELFRNDIAAQYKELGFQG +> MYG_ROUAE +GLSDGEWQLVLNVWGKVEADIPGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKASE +DLKKHGATVLTALGGILKKKGQHEAQLKPLAQSHATKHKIPVKYLEFISEVIIQVLQSKH +PGDFGADAQGAMGKALELFRNDIAAKYKELGFQG +> MYG_SAISC +GLSDGEWQLVLNIWGKVEADIPSHGQEVLISLFKGHPETLEKFDKFKHLKSEDEMKASE +ELKKHGTTVLTALGGILKKKGQHEAELKPLAQSHATKHKIPVKYLELISDAIVHVLQKKH +PGDFGADAQGAMKKALELFRNDMAAKYKELGFQG +> MYG_SHEEP +GLSDGEWQLVLNAWGKVEADVAGHGQEVLIRLFTGHPETLEKFDKFKHLKTEAEMKASE +DLKKHGNTVLTALGGILKKKGHHEAEVKHLAESHANKHKIPVKYLEFISDAIIHVLHAKH +PSNFGADAQGAMSKALELFRNDMAAEYKVLGFQG +> MYG_SPAEH +GLSDGEWQLVLNVWGKVEGDLAGHGQEVLIKLFKNHPETLEKFDKFKHLKSEDEMKGSE +DLKKHGNTVLTALGGILKKKGQHAAEIQPLAQSHATKHKIPIKYLEFISEAIIQVLQSKH +PGDFGADAQGAMSKALELFRNDIAAKYKELGFQG +> MYG_TACAC +GLSDGEWQLVLKVWGKVETDITGHGQDVLIRLFKTHPETLEKFDKFKHLKTEDEMKASA +DLKKHGGVVLTALGSILKKKGQHEAELKPLAQSHATKHKISIKFLEFISEAIIHVLQSKH +SADFGADAQAAMGKALELFRNDMATKYKEFGFQG +> MYG_THUAL +ADFDAVLKCWGPVEADYTTMGGLVLTRLFKEHPETQKLFPKFAGIAQADIAGNAAISAH +GATVLKKLGELLKAKGSHAAILKPLANSHATKHKIPINNFKLISEVLVKVMHEKAGLDAG +GQTALRNVMGIIIADLEANYKELGFSG +> MYG_TUPGL +GLSDGEWQLVLNVWGKVEADVAGHGQEVLIRLFKGHPETLEKFDKFKHLKTEDEMKASE +DLKKHGNTVLSALGGILKKKGQHEAEIKPLAQSHATKHKIPVKYLEFISEAIIQVLQSKH +PGDFGADAQAAMSKALELFRNDIAAKYKELGFQG +> MYG_TURTR +GLSDGEWQLVLNVWGKVEADLAGHGQDVLIRLFKGHPETLEKFDKFKHLKTEADMKASE +DLKKHGNTVLTALGAILKKKGHHDAELKPLAQSHATKHKIPIKYLEFISEAIIHVLHSRH +PAEFGADAQGAMNKALELFRKDIAAKYKELGFHG +> MYG_VARVA +GLSDEEWKKVVDIWGKVEPDLPSHGQEVIIRMFQNHPETQDRFAKFKNLKTLDEMKNSE +DLKKHGTTVLTALGRILKQKGHHEAEIAPLAQTHANTHKIPIKYLEFICEVIVGVIAEKH +SADFGADSQEAMRKALELFRNDMASRYKELGFQG +> MYG_VULCH +GLSDGEWQLVLNIWGKVETDLAGHGQEVLIRLFKNHPETLDKFDKFKHLKTEDEMKGSE +DLKKHGNTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPVKYLEFISDAIIQVLQSKH +SGDFHADTEAAMKKALELFRNDIAAKYKELGFQG +> MYG_ZALCA +GLSDGEWQLVLNIWGKVEADLVGHGQEVLIRLFKGHPETLEKFDKFKHLKSEDEMKRSE +DLKKHGKTVLTALGGILKKKGHHDAELKPLAQSHATKHKIPIKYLEFISEAIIHVLQSKH +PGDFGADTHAAMKKALELFRNDIAAKYRELGFQG +> MYG_ZIPCA +GLSEAEWQLVLHVWAKVEADLSGHGQEILIRLFKGHPETLEKFDKFKHLKSEAEMKASE +DLKKHGHTVLTALGGILKKKGHHEAELKPLAQSHATKHKIPIKYLEFISDAIIHVLHSRH +PSDFGADAQAAMTKALELFRKDIAAKYKELGFHG diff --git a/forester/archive/RIO/others/hmmer/tutorial/nucleic.null b/forester/archive/RIO/others/hmmer/tutorial/nucleic.null new file mode 100644 index 0000000..654e5e3 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/nucleic.null @@ -0,0 +1,15 @@ +# nucleic.null +# +# Example of a null model file for DNA/RNA sequences. +# The values in this file are the HMMER 2 default +# settings. + +Nucleic + +0.25 # A +0.25 # C +0.25 # G +0.25 # T + +0.999001 # p1 + diff --git a/forester/archive/RIO/others/hmmer/tutorial/nucleic.pri b/forester/archive/RIO/others/hmmer/tutorial/nucleic.pri new file mode 100644 index 0000000..c1aec46 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/nucleic.pri @@ -0,0 +1,27 @@ +# nucleic.pri +# +# Example of a prior file for DNA/RNA models. +# The values in this file are the HMMER 2 default settings. + +Dirichlet # Strategy (mixture Dirichlet) +Nucleic # type of prior (Amino or Nucleic) + +# Transitions +1 # Single component +1.0 # with probability = 1.0 +0.7939 0.0278 0.0135 # m->m, m->i, m->d alpha's +0.1551 0.1331 # i->m, i->i alpha's +0.9002 0.5630 # d->m, d->d alpha's + +# Match emissions +# The use of 1.0 for alpha's here makes a simple Laplace "plus-one" prior. +# +1 # single component +1.0 # with probability = 1.0 +1.0 1.0 1.0 1.0 + +# Insert emissions +# +1 # Single component +1.0 # with probability 1.0 +1.0 1.0 1.0 1.0 diff --git a/forester/archive/RIO/others/hmmer/tutorial/pkinase.slx b/forester/archive/RIO/others/hmmer/tutorial/pkinase.slx new file mode 100644 index 0000000..9f9b39c --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/pkinase.slx @@ -0,0 +1,712 @@ +# ID pkinase +# AC PF00069 +# DE Eukaryotic protein kinase domain +# AU Sonnhammer ELL +# AL Clustalw +# AM hmma -qR +# SE Unknown +# DR PROSITE; PDOC00100; +# DR PROSITE; PDOC00212; +# DR PROSITE; PDOC00213; +# DR PROSITE; PDOC00629; +# GA Bic_raw 25 hmmfs 20 +# NC hmmfs 17.60 YPKA_YERPS/2-292 +# CC hmmfs breaks up some members too much, e.g. KS61_MOUSE, which +# CC hmmls does not. However, hmmls inserts too many unwelcome insertions. +# ** hmmls fails badly: NINL_DROME gets the whole myosin domain inserted. +# ** Remaking SEED from more seqs only made things worse. +# DR SCOP; 1apm; sf; +# DR URL; http://www.sdsc.edu/Kinases/pk_home.html; +# RN [1] +# RM 92065863 +# RA S.K. Hanks, A.M. Quinn; +# RL Methods Enzymol. 200: 38-62 (1991) +# RN [2] +# RM 95285959 +# RA S.K. Hanks, T. Hunter; +# RL FASEB J. 9: 576-596 (1995) +# RN [3] +# RM 97172697 +# RA T. Hunter, G.D. Plowman; +# RL Trends Biochem. Sci. 22: 18-22 (1997) +# SQ 67 +7LES_DROME/2209-2481 LKLLRFLGSGAFGEVYEGQLKTED....SEEPQRVAIKSLRKG....... +ABL1_CAEEL/296-547 IIMHNKLGGGQYGDVYEGYWKR........HDCTIAVKALK......... +ARK1_BOVIN/191-453 FSVHRIIGRGGFGEVYGCRKA........DTGKMYAMKCLD......... +AVR2_HUMAN/192-479 LQLLEVKARGRFGCVWKAQLL..........NEYVAVKIFP......... +BFR2_HUMAN/367-643 LTLGKPLGEGCFGQVVMAEAVGIDK.DKPKEAVTVAVKMLKDDAT..... +BYR1_SCHPO/66-320 LEVVRHLGEGNGGAVSLVKHR..........NIFMARKTVYVG......S +BYR2_SCHPO/394-658 WIRGALIGSGSFGQVYLGMNAS........SGELMAVKQVILD....... +CC15_YEAST/25-272 YHLKQVIGRGSYGVVYKAINK........HTDQVVAIKEVVYE......N +CC21_MEDSA/1-284 GENVEKIGEGTYGVVYKARDR........VTNETIALKKIR........L +CC5_YEAST/82-337 YHRGHFLGEGGFARCFQIKDD.........SGEIFAAKTVA......... +CDPK_SOYBN/34-292 YEVGRKLGQGQFGTTFECTRR........ASGGKFACKSIP......... +CDR1_SCHPO/12-258 WRLGKTLGTGSTSCVRLAKHA........KTGDLAAIKIIP......... +CHK1_SCHPO/10-272 YHIGREIGTGAFASVRLCYDD.........NAKIYAVKFVN........K +CLK1_MOUSE/160-476 YEIVDTLGEGAFGKVVECIDHK.......VGGRRVAVKIVKN.......V +CTK1_YEAST/183-469 YLRIMQVGEGTYGKVYKAKNTN........TEKLVALKKLRLQ....... +ERK1_CANAL/68-371 YQILEIVGEGAYGIVCSAIHK........PSQQKVAIKKIEP.......F +ERK3_HUMAN/20-312 FVDFQPLGFGVNGLVLSAVDS........RACRKVAVKKIALS......D +FUSE_DROME/4-254 YAVSSLVGQGSFGCVYKATRK........DDSKVVAIKVIS......... +HR25_YEAST/9-273 FRIGRKIGSGSFGDIYHGTNL........ISGEEVAIKLES......... +JAK1_HUMAN/571-833 LVQGEHLGRGTRTHIYSGTLMDYKD..DEGTSEEKKIKVIL......... +JAK1_HUMAN/864-1137 LKRIRDLGEGHFGKVELCRYDPED.....NTGEQVAVKSLK......... +KAB7_YEAST/1096-1354 FVSLQKMGEGAYGKVNLCIHK........KNRYIVVIKMIFK.......E +KAKT_MLVAT/171-429 FEYLKLLGKGTFGKVILVKEK........ATGRYYAMKILK......... +KC21_CHICK/39-324 YQLVRKLGRGKYSEVFEAINIT........NNEKVVVKILK......... +KCC4_MOUSE/42-296 FEVESELGRGATSIVYRCKQK........GTQKPYALKVL.......... +KCR8_YEAST/316-590 GRCQEVLGKGAFGVVRICQKKNVSSQDGNKSEKLYAVKEFKR........ +KG3A_RAT/119-403 YTDIKVIGNGSFGVVYQARLA........ETRELVAIKKVLQ........ +KGP1_DROME/457-717 LEVVSTLGIGGFGRVELVKAHH......QDRVDIFALKCLK......... +KI28_YEAST/7-290 YTKEKKVGEGTYAVVYLGCQHS........TGRKIAIKEIK......... +KI82_YEAST/324-602 FEKIRLLGQGDVGKVYLVRER........DTNQIFALKVLN......... +KIN1_SCHPO/125-395 YVLGKTIGAGSMGKVKDAHHL........KTGEQFAIKIVTRLHPDITKA +KIR1_HUMAN/208-495 ITLLECVGKGRYGEVWRGSWQ..........GENVAVKIFS......... +KKIA_HUMAN/5-288 YEKIGKIGEGSYGVVFKCRNR........DTGQIVAIKKFLE........ +KKL6_YEAST/192-508 WKKVRPIGSGNFSTVLLYELMDQS....NPKLKQVAVKRLKYPEELSNVE +KMIL_AVIMH/82-339 VLLSTRIGSGSFGTVYKGKWHG........DVAVKILKVVDP.......T +KML2_CHICK/1453-1708 YNIEERLGSGKFGQVFRLVEK........KTGKVWAGKFFK......... +KMOS_CERAE/60-338 VCLLQRLGAGGFGSVYKATYH..........GVPVAIKQVN......... +KPBH_RAT/24-291 YDPKDIIGRGVSSVVRRCVHRA......TGDEFAVKIMEVS......... +KPIM_HUMAN/38-290 YQVGPLLGSGGFGSVYSGIRV........SDNLPVAIKHVE......... +KPK2_PLAFK/111-364 YVLNKKIGKGSFSTAYIGTNI........LYGNRVVVKEVD......... +KPRO_MAIZE/534-812 RKFKVELGRGESGTVYKGVLE.........DDRHVAVKKLEN........ +KR1_HSV11/191-478 FTIHGALTPGSEGCVFDSSHP.........DYPQRVIVKA.......... +KR1_PRVKA/53-332 FEVLQPLQSGSEGRVFVARRP.........GEADTVVLKV.......... +KS61_MOUSE/407-664 YVVKETIGVGSYSVCKRCVHK........ATNMEYAVKVID......... +KYK1_DICDI/1289-1559 LEFGQTIGKGFFGEVKRGYWR..........ETDVAIKIIY......... +KYK2_DICDI/108-364 IQFIQKVGEGAFSEVWEGWWK..........GIHVAIKKLKIIG.....D +MAK_RAT/4-284 YTTMRQLGDGTYGSVLMGKSN........ESGELVAIKRMK......... +MEK1_YEAST/162-444 EITNRIVGNGTFGHVLITHNSKERDEDVCYHPENYAVKIIK......... +MET_HUMAN/1078-1337 VHFNEVIGRGHFGCVYHGTLLDND.....GKKIHCAVKSLN......... +MKK1_YEAST/221-488 IETLGILGEGAGGSVSKCKLK........NGSKIFALKVIN......... +MLK1_HUMAN/3-262 LTLEEIIGIGGFGKVYRAFWI..........GDEVAVKAARHD......P +NINL_DROME/16-282 FEIYEEIAQGVNAKVFRAKELD........NDRIVALKIQHYD......E +NPR1_YEAST/438-742 IKTGADLGAGAGGSVKLAQRIS........DNKIFAVKEFR........T +PHY_CERPU/1004-1282 IQITGSLGSGSSATVEKAVWL..........GTPVAKKTFYG........ +PKD1_DICDI/36-291 FNFYGSLGSGSFGTAKLCRHR........GSGLFFCSKTLR......... +PKN1_MYXXA/59-321 FRLVRRLGRGGMGAVYLGEHVS........IGSRVAVKVLH......... +RAN1_SCHPO/18-295 LRFVSIIGAGAYGVVYKAEDIY........DGTLYAVKALC......... +RYK_HUMAN/327-593 ITLKDVLQEGTFGRIFHGILIDEKD...PNKEKQAFVKTVKD.......Q +SGV1_YEAST/60-366 YREDEKLGQGTFGEVYKGIHL........ETQRQVAMKKIIVS......V +SPK1_YEAST/198-466 SIIDEVVGQGAFATVKKAIER........TTGKTFAVKIIS......... +ST20_YEAST/620-871 YANLVKIGQGASGGVYTAYEIG........TNVSVAIKQMNLE....... +STE7_YEAST/191-466 LVQLGKIGAGNSGTVVKALHVP........DSKIVAKKTIP........V +SYK_PIG/364-619 TLEDKELGSGNFGTVKKGYYQMK......KVVKTVAVKILKN........ +TOP_DROME/938-1194 LRKGGVLGMGAFGRVYKGVWVPEG....ENVKIPVAIKELLKSTG..... +TRKA_HUMAN/504-775 IVLKWELGEGAFGKVFLAECHNLLP...EQDKMLVAVKALK......... +TTK_HUMAN/509-775 YSILKQIGSGGSSKVFQVLNE.........KKQIYAIKYVN........L +WEE1_HUMAN/299-569 FHELEKIGSGEFGSVFKCVKR........LDGCIYAIKRS.......... + +7LES_DROME/2209-2481 ASEFAE............LLQEAQLMSNFK......HENIVRLVGICF.. +ABL1_CAEEL/296-547 EDAMPLH..........EFLAEAAIMKDLH......HKNLVRLLGVCT.. +ARK1_BOVIN/191-453 KKRIKMKQGE......TLALNERIMLSLVSTG...DCPFIVCMSYAFH.. +AVR2_HUMAN/192-479 IQDKQS..........WQNEYEVYSLPGMK......HENILQFIGAEKRG +BFR2_HUMAN/367-643 EKDLSD............LVSEMEMMKMIG.....KHKNIINLLGACTQ. +BYR1_SCHPO/66-320 DSKLQK...........QILRELGVLHHCR......SPYIVGFYGAFQ.. +BYR2_SCHPO/394-658 SVSESKDRHAKLL...DALAGEIALLQELS......HEHIVQYLGSNL.. +CC15_YEAST/25-272 DEELN............DIMAEISLLKNLN......HNNIVKYHGFIR.. +CC21_MEDSA/1-284 EQEDEG.....VP...STAIREISLLKEMQ......HRNIVRLQDVVH.. +CC5_YEAST/82-337 KASIK...SEKTR...KKLLSEIQIHKSMS......HPNIVQFIDCFE.. +CDPK_SOYBN/34-292 KRKLLCKEDYED......VWREIQIMHHLSE.....HANVVRIEGTYE.. +CDR1_SCHPO/12-258 IRYAS.............IGMEILMMRLLR......HPNILRLYDVWT.. +CHK1_SCHPO/10-272 KHATSCMNAGVWA...RRMASEIQLHKLCNG.....HKNIIHFYNTAE.. +CLK1_MOUSE/160-476 DRYCEA............AQSEIQVLEHLNTTDP..HSTFRCVQMLEWF. +CTK1_YEAST/183-469 GEREG......FP...ITSIREIKLLQSFD......HPNVSTIKEIMVE. +ERK1_CANAL/68-371 ERSMLCLR..........TLRELKLLKHFN......HENIISILAIQRPI +ERK3_HUMAN/20-312 ARSMKH............ALREIKIIRRLD......HDNIVKVYEVLGPK +FUSE_DROME/4-254 KRGRATKELKN.......LRRECDIQARLK......HPHVIEMIESFE.. +HR25_YEAST/9-273 IRSRHP...........QLDYESRVYRYLS......GGVGIPFIRWFGR. +JAK1_HUMAN/571-833 KVLDPSHRDIS.....LAFFEAASMMRQVS......HKHIVYLYGVCV.. +JAK1_HUMAN/864-1137 PESGGN........HIADLKKEIEILRNLY......HENIVKYKGICTED +KAB7_YEAST/1096-1354 RILVDTWVRDRKL...GTIPSEIQIMATLNKK...PHENILRLLDFFE.. +KAKT_MLVAT/171-429 KEVIVAKDEVAH......TLTENRVLQNSR......HPFLTALKYSFQ.. +KC21_CHICK/39-324 PVKKKK............IKREIKILENLRG.....GPNIITLADIVKDP +KCC4_MOUSE/42-296 KKTVD....KKI......VRTEIGVLLRLS......HPNIIKLKEIFE.. +KCR8_YEAST/316-590 RTSESAEKYSKR......LTSEFCISSSLH......HTNIVTTLDLFQD. +KG3A_RAT/119-403 DKRFK..............NRELQIMRKLD......HCNIVRLRYFFYSS +KGP1_DROME/457-717 KRHIVDTKQEE......HIFSERHIMLSSR......SPFICRLYRTFR.. +KI28_YEAST/7-290 TSEFKDGLDMS.......AIREVKYLQEMQ......HPNVIELIDIFM.. +KI82_YEAST/324-602 KHEMIK...RKKI...KRVLTEQEILATSD......HPFIVTLYHSFQ.. +KIN1_SCHPO/125-395 KAAASAEATKAAQ...SEKNKEIRTVREAALSTLLRHPYICEARDVYI.. +KIR1_HUMAN/208-495 SRDEKS............WFRETELYNTVMLR....HENILGFIASDMTS +KKIA_HUMAN/5-288 SEDDP.....VIK...KIALREIRMLKQLK......HPNLVNLLEVFR.. +KKL6_YEAST/192-508 QINTSLRYKETLSRLENSLTRELQVLKSLN......HPCIVKLLGINNPI +KMIL_AVIMH/82-339 PEQFQA............FRNEVAVLRKTR......HVNILLFMGYMT.. +KML2_CHICK/1453-1708 AYSAK...EKEN......IRDEISIMNCLH......HPKLVQCVDAFE.. +KMOS_CERAE/60-338 KCTKNRLASRR.......SFWAELNVARLR......HDNIVRVVAASTRT +KPBH_RAT/24-291 AERLSLEQLEEVR...DATRREMHILRQVAG.....HPHIITLIDSYE.. +KPIM_HUMAN/38-290 KDRISDWGELPNG...TRVPMEVVLLKKVSSG....FSGVIRLLDWFE.. +KPK2_PLAFK/111-364 KSKVK....ESN......VYTEIEVLRKVM......HKYIIKLISAYE.. +KPRO_MAIZE/534-812 VRQGKE...........VFQAELSVIGRIN......HMNLVRIWGFCS.. +KR1_HSV11/191-478 GWYTS.............TSHEARLLRRLD......HPAILPLLDLHV.. +KR1_PRVKA/53-332 GQKPS.............TLMEGMLLQRLS......HDNVMRMKQMLA.. +KS61_MOUSE/407-664 KSKRD.............PSEEIEILLRYGQ.....HPNIITLKDVYD.. +KYK1_DICDI/1289-1559 RDQFKT...KSSL...VMFQNEVGILSKLR......HPNVVQFLGACTAG +KYK2_DICDI/108-364 EEQFKER...........FIREVQNLKKGN......HQNIVMFIGACY.. +MAK_RAT/4-284 RKFYSWDECMN........LREVKSLKKLN......HANVIKLKEVIR.. +MEK1_YEAST/162-444 LKPNK.............FDKEARILLRLD......HPNIIKVYHTFCD. +MET_HUMAN/1078-1337 RITDIGEVS........QFLTEGIIMKDFS......HPNVLSLLGICLR. +MKK1_YEAST/221-488 TLNTDPEYQKQ.......IFRELQFNRSFQ......SEYIVRYYGMFTDD +MLK1_HUMAN/3-262 DEDISQTIEN........VRQEAKLFAMLK......HPNIIALRGVCL.. +NINL_DROME/16-282 EHQVS.............IEEEYRTLRDYCD.....HPNLPEFYGVYKLS +NPR1_YEAST/438-742 KFENES..KRDYV...KKITSEYCIGTTLN......HPNIIETIEIVY.. +PHY_CERPU/1004-1282 RNNED.............FKREVEILAELC......HPNITSMFCSPL.. +PKD1_DICDI/36-291 RETIVHEKHKEH......VNNEINIMLNIS......HPYIVKTYSTFN.. +PKN1_MYXXA/59-321 AHLTMYPELVQR......FHAEARAVNLIG......HENIVSIFDMDA.. +RAN1_SCHPO/18-295 KDGLNEKQKK.......LQARELALHARVSS.....HPYIITLHRVLE.. +RYK_HUMAN/327-593 ASEIQVT..........MMLTESCKLRGLH......HRNLLPITHVCIE. +SGV1_YEAST/60-366 EKDLFP..........ITAQREITILKRLN......HKNIIKLIEMVYDH +SPK1_YEAST/198-466 KRKVIGNMDG........VTRELEVLQKLN......HPRIVRLKGFYE.. +ST20_YEAST/620-871 KQPKKE...........LIINEILVMKGSK......HPNIVNFIDSYV.. +STE7_YEAST/191-466 EQNNS.....TII...NQLVRELSIVKNVKP.....HENIITFYGAYYN. +SYK_PIG/364-619 EANDPALKD........ELLAEANVMQQLD......NPYIVRMIGICE.. +TOP_DROME/938-1194 AESSEE............FLREAYIMASEE......HVNLLKLLAVCM.. +TRKA_HUMAN/504-775 EASESAR.........QDFQREAELLTMLQ......HQHIVRFFGVCTE. +TTK_HUMAN/509-775 EEADNQTLDS........YRNEIAYLNKLQQH....SDKIIRLYDYEI.. +WEE1_HUMAN/299-569 KKPLAGSVDEQN......ALREVYAHAVLGQ.....HSHVVRYFSAWA.. + +7LES_DROME/2209-2481 .................DTESISLIMEHMEAG......DLLSYLRAARAT +ABL1_CAEEL/296-547 .................HEAPFYIITEFMCNG......NLLEYLRRTDKS +ARK1_BOVIN/191-453 .................TPDKLSFILDLMNGG......DLHYHLSQHG.. +AVR2_HUMAN/192-479 ...............TSVDVDLWLITAFHEKG......SLSDFLKANV.. +BFR2_HUMAN/367-643 ..................DGPLYVIVEYASKG......NLREYLRARRPP +BYR1_SCHPO/66-320 .................YKNNISLCMEYMDCG......SLDAILREGG.. +BYR2_SCHPO/394-658 .................NSDHLNIFLEYVPGG......SVAGLLTMYG.. +CC15_YEAST/25-272 .................KSYELYILLEYCANG......SLRRLISRSS.. +CC21_MEDSA/1-284 .................SDKRLYLVFEYLDL.......DLKKHMDSSPE. +CC5_YEAST/82-337 .................DDSNVYILLEICPNG......SLMELLKRRK.. +CDPK_SOYBN/34-292 .................DSTAVHLVMELCEGG......ELFDRIVQKG.. +CDR1_SCHPO/12-258 .................DHQHMYLALEYVPDG......ELFHYIRKHG.. +CHK1_SCHPO/10-272 .................NPQWRWVVLEFAQGG......DLFDKIEPDVG. +CLK1_MOUSE/160-476 ................EHRGHICIVFELLGLS.......TYDFIKENS.. +CTK1_YEAST/183-469 .................SQKTVYMIFEYADN.......DLSGLLLNKEV. +ERK1_CANAL/68-371 N..............YESFNEIYLIQELMET.......DLHRVIRTQN.. +ERK3_HUMAN/20-312 G........TDLQGELFKFSVAYIVQEYMET.......DLARLLEQGT.. +FUSE_DROME/4-254 .................SKTDLFVVTEFALM.......DLHRYLSYNG.. +HR25_YEAST/9-273 .................EGEYNAMVIDLLGP.......SLEDLFNYCHR. +JAK1_HUMAN/571-833 .................RDVENIMVEEFVEGG......PLDLFMHRKSD. +JAK1_HUMAN/864-1137 .................GGNGIKLIMEFLPSG......SLKEYLPKNKN. +KAB7_YEAST/1096-1354 .................DDDYYYIETPVHGETGC...IDLFDLIEFKT.. +KAKT_MLVAT/171-429 .................THDRLCFVMEYANGG......ELFFHLSRER.. +KC21_CHICK/39-324 .................VSRTPALVFEHVNNT......DFKQLYQTLT.. +KCC4_MOUSE/42-296 .................TPTEISLVLELVTGG......ELFDRIVEKG.. +KCR8_YEAST/316-590 .................AKGEYCEVMEYCAGG......DLFTLVVAAG.. +KG3A_RAT/119-403 G.............EKKDELYLNLVLEYVPET....VYRVARHFTKAK.. +KGP1_DROME/457-717 .................DEKYVYMLLEACMGG......EIWTMLRDRG.. +KI28_YEAST/7-290 .................AYDNLNLVLEFLPT.......DLEVVIKDKS.. +KI82_YEAST/324-602 .................TKDYLYLCMEYCMGG......EFFRALQTRKS. +KIN1_SCHPO/125-395 .................TNSHYYMVFEFVDGG......QMLDYIISHG.. +KIR1_HUMAN/208-495 R...............HSSTQLWLITHYHEMG......SLYDYLQLTT.. +KKIA_HUMAN/5-288 .................RKRRLHLVFEYCDHT......VLHELDRYQR.. +KKL6_YEAST/192-508 FVTSKKPLCDLIIKTPRALPPCDMIMSYCPAG......DLLAAVMARNG. +KMIL_AVIMH/82-339 ..................KDNLAIVTQWCEGS......SLYKHLHVQET. +KML2_CHICK/1453-1708 .................EKANIVMVLEMVSGG......ELFERIIDED.. +KMOS_CERAE/60-338 PAG..............SNSLGTIIMEFGGNV......TLHQVIYGAASH +KPBH_RAT/24-291 .................SSSFMFLVFDLMRKG......ELFDYLTEKV.. +KPIM_HUMAN/38-290 .................RPDSFVLILERPEPV.....QDLFDFITERG.. +KPK2_PLAFK/111-364 .................QEGFVYLVLEYLKGG......ELFEYLNNNG.. +KPRO_MAIZE/534-812 .................EGSHRLLVSEYVENG......SLANILFSEGG. +KR1_HSV11/191-478 .................VSGVTCLVLPKYQA.......DLYTYLSRRLN. +KR1_PRVKA/53-332 .................RGPATCLVLPHFRC.......DLYSYLTMRD.. +KS61_MOUSE/407-664 .................DGKHVYLVTELMRGG......ELLDKILRQK.. +KYK1_DICDI/1289-1559 .................GEDHHCIVTEWMGGG......SLRQFLTDHFN. +KYK2_DICDI/108-364 ...................KPACIITEYMAGG......SLYNILHNPNS. +MAK_RAT/4-284 .................ENDHLYFIFEYMKEN......LYQLMKDRNK.. +MEK1_YEAST/162-444 .................RNNHLYIFQDLIPGG......DLFSYLAKGDCL +MET_HUMAN/1078-1337 .................SEGSPLVVLPYMKHG......DLRNFIRNETH. +MKK1_YEAST/221-488 .................ENSSIYIAMEYMGGRSL...DAIYKNLLERGG. +MLK1_HUMAN/3-262 .................KEPNLCLVMEFARGG......PLNRVLSGKR.. +NINL_DROME/16-282 KPN..............GPDEIWFVMEYCAGGTA...VDMVNKLLKLDR. +NPR1_YEAST/438-742 .................ENDRILQVMEYCEY.......DLFAIVMSNK.. +PHY_CERPU/1004-1282 .................YRRKCSIIMELMDG.......DLLALMQRRLDR +PKD1_DICDI/36-291 .................TPTKIHFIMEYAGKK......DLFHHLRANK.. +PKN1_MYXXA/59-321 .................TPPRPYLIMEFLDG.......APLSAWVGTP.. +RAN1_SCHPO/18-295 .................TEDAIYVVLQYCPNG......DLFTYITEKKVY +RYK_HUMAN/327-593 .................EGEKPMVILPYMNWG......NLKLFLRQCKLV +SGV1_YEAST/60-366 SPDITN......AASSNLHKSFYMILPYMVA.......DLSGVLHNPR.. +SPK1_YEAST/198-466 .................DTESYYMVMEFVSGG......DLMDFVAAHG.. +ST20_YEAST/620-871 .................LKGDLWVIMEYMEGG......SLTDVVTHCI.. +STE7_YEAST/191-466 ...............QHINNEIIILMEYSDCGSLDKILSVYKRFVQRGTV +SYK_PIG/364-619 ..................AESWMLVMEMAELG......PLNKYLQQNR.. +TOP_DROME/938-1194 ..................SSQMMLITQLMPLG......CLLDYVRNNRD. +TRKA_HUMAN/504-775 ..................GRPLLMVFEYMRHG......DLNRFLRSHGPD +TTK_HUMAN/509-775 .................TDQYIYMVMECGNI.......DLNSWLKKKK.. +WEE1_HUMAN/299-569 .................EDDHMLIQNEYCNGG......SLADAISENYRI + +7LES_DROME/2209-2481 STQEP.....QPTAGLSLSELLAMCIDVANGCSYLEDMH..........F +ABL1_CAEEL/296-547 ..............LLPPIILVQMASQIASGMSYLEARH..........F +ARK1_BOVIN/191-453 ..............VFSEADMRFYAAEIILGLEHMHNRF..........V +AVR2_HUMAN/192-479 ...............VSWNELCHIAETMARGLAYLHEDIPGLKDGHKPAI +BFR2_HUMAN/367-643 GMEYSYDINRVPEEQMTFKDLVSCTYQLARGMEYLASQK..........C +BYR1_SCHPO/66-320 ..............PIPLDILGKIINSMVKGLIYLYNVLH.........I +BYR2_SCHPO/394-658 ..............SFEETLVKNFIKQTLKGLEYLHSRG..........I +CC15_YEAST/25-272 .T............GLSENESKTYVTQTLLGLKYLHGEG..........V +CC21_MEDSA/1-284 .............FIKDPRQVKMFLYQMLCGIAYCHSHR..........V +CC5_YEAST/82-337 ..............VLTEPEVRFFTTQICGAIKYMHSRR..........V +CDPK_SOYBN/34-292 ..............HYSERQAARLIKTIVEVVEACHSLG..........V +CDR1_SCHPO/12-258 ..............PLSEREAAHYLSQILDAVAHCHRFR..........F +CHK1_SCHPO/10-272 ..............ID.EDVAQFYFAQLMEGISFMHSKG..........V +CLK1_MOUSE/160-476 ............FLPFRMDHIRKMAYQICKSVNFLHSNK..........L +CTK1_YEAST/183-469 ..............QISHSQCKHLFKQLLLGMEYLHDNK..........I +ERK1_CANAL/68-371 ...............LSDDHIQYFIYQTLRALKAMHSAN..........V +ERK3_HUMAN/20-312 ...............LAEEHAKLFMYQLLRGLKYIHSAN..........V +FUSE_DROME/4-254 ..............AMGEEPARRVTGHLVSALYYLHSNR..........I +HR25_YEAST/9-273 ..............RFSFKTVIMLALQMFCRIQYIHGRS..........F +JAK1_HUMAN/571-833 ..............VLTTPWKFKVAKQLASALSYLEDKD..........L +JAK1_HUMAN/864-1137 ..............KINLKQQLKYAVQICKGMDYLGSRQ..........Y +KAB7_YEAST/1096-1354 ..............NMTEFEAKLIFKQVVAGIKHLHDQG..........I +KAKT_MLVAT/171-429 ..............VFSEDRARFYGAEIVSALDYLHSEKN.........V +KC21_CHICK/39-324 .................DYDIRFYMYEILKALDYCHSMG..........I +KCC4_MOUSE/42-296 ..............YYSERDARDAVKQILEAVAYLHENG..........I +KCR8_YEAST/316-590 ..............KLEYMEADCFFKQLIRGVVYMHEMG..........V +KG3A_RAT/119-403 .............LIIPIIYVKVYMYQLFRSLAYIHSQG..........V +KGP1_DROME/457-717 ..............SFEDNAAQFIIGCVLQAFEYLHARG..........I +KI28_YEAST/7-290 .............ILFTPADIKAWMLMTLRGVYHCHRNF..........I +KI82_YEAST/324-602 .K............CIAEEDAKFYASEVVAALEYLHLLG..........F +KIN1_SCHPO/125-395 ..............KLKEKQARKFERQIGSALSYLHQNS..........V +KIR1_HUMAN/208-495 ...............LDTVSCLRIVLSIASGLAHLHIEIFGTQGK..PAI +KKIA_HUMAN/5-288 ..............GVPEHLVKSITWQTLQAVNFCHKHN..........C +KKL6_YEAST/192-508 ..............RLEAWLIQRIFTEVVLAVKYLHENS..........I +KMIL_AVIMH/82-339 ..............KFQMFQLIDIARQTAQGMDYLHAKN..........I +KML2_CHICK/1453-1708 .F............ELTERECIKYMRQISEGVEYIHKQG..........I +KMOS_CERAE/60-338 PEGDAGEPHCSTGGPLTLGKCLKYSLDVVNGLLFLHSQS..........I +KPBH_RAT/24-291 ..............ALSEKETRSIMRSLLEAVNFLHVNN..........I +KPIM_HUMAN/38-290 ..............ALQEELARSFFWQVLEAVRHCHNCG..........V +KPK2_PLAFK/111-364 ..............PYTEQVAKKAMKRVLIALEALHSNG..........V +KPRO_MAIZE/534-812 ............NILLDWEGRFNIALGVAKGLAYLHHECL.......EWV +KR1_HSV11/191-478 ..............PLGRPQIAAVSRQLLSAVDYIHRQG..........I +KR1_PRVKA/53-332 G.............PLDMRDAGCVIRAVLRGLAYLHGMR..........I +KS61_MOUSE/407-664 ..............FFSEREASFVLHTISKTVEYLHSQG..........V +KYK1_DICDI/1289-1559 ............LLEQNPHIRLKLALDIAKGMNYLHGWTP.......P.I +KYK2_DICDI/108-364 ..S.......TPKVKYSFPLVLKMATDMALGLLHLHSIT..........I +MAK_RAT/4-284 ..............LFPESVIRNIMYQILQGLAFIHKHG..........F +MEK1_YEAST/162-444 T.............SMSETESLLIVFQILQALNYLHDQD..........I +MET_HUMAN/1078-1337 ..............NPTVKDLIGFGLQVAKGMKYLASKK..........F +MKK1_YEAST/221-488 ..............RISEKVLGKIAEAVLRGLSYLHEKK..........V +MLK1_HUMAN/3-262 ...............IPPDILVNWAVQIARGMNYLHDEAI.......VPI +NINL_DROME/16-282 ..............RMREEHIAYIIRETCRAAIELNRNH..........V +NPR1_YEAST/438-742 ...............MSYEEICCCFKQILTGVQYLHSIG..........L +PHY_CERPU/1004-1282 NED.......HDSPPFSILEVVDIILQTSEGMNYLHEKG..........I +PKD1_DICDI/36-291 ..............CFTEQTTKLIVAEIVLAIEYLHAEN..........I +PKN1_MYXXA/59-321 ...............LAAGAVVSVLSQVCDALQAAHARG..........I +RAN1_SCHPO/18-295 ..............QGNSHLIKTVFLQLISAVEHCHSVG..........I +RYK_HUMAN/327-593 EAN........NPQAISQQDLVHMAIQIACGMSYLARRE..........V +SGV1_YEAST/60-366 .............INLEMCDIKNMMLQILEGLNYIHCAK..........F +SPK1_YEAST/198-466 ..............AVGEDAGREISRQILTAIKYIHSMG..........I +ST20_YEAST/620-871 ..............LT.EGQIGAVCRETLSGLEFLHSKG..........V +STE7_YEAST/191-466 SSK.......K..TWFNELTISKIAYGVLNGLDHLYRQYK.........I +SYK_PIG/364-619 ..............HVKDKNIIELVHQVSMGMKYLEECN..........F +TOP_DROME/938-1194 ..............KIGSKALLNWSTQIAKGMSYLEEKR..........L +TRKA_HUMAN/504-775 AKLLAGGED.VAPGPLGLGQLLAVASQVAAGMVYLAGLH..........F +TTK_HUMAN/509-775 ..............SIDPWERKSYWKNMLEAVHTIHQHG..........I +WEE1_HUMAN/299-569 MS............YFKEAELKDLLLQVGRGLRYIHSMS..........L + +7LES_DROME/2209-2481 VHRDLACRNCLVTESTGSTD............RRRTVKIGDFGLARDIYK +ABL1_CAEEL/296-547 IHRDLAARNCLVSEH...................NIVKIADFGLARFMKE +ARK1_BOVIN/191-453 VYRDLKPANILLDEH...................GHVRISDLGLACDFS. +AVR2_HUMAN/192-479 SHRDIKSKNVLLKNN...................LTACIADFGLALKFEA +BFR2_HUMAN/367-643 IHRDLAARNVLVTEN...................NVMKIADFGLARDINN +BYR1_SCHPO/66-320 IHRDLKPSNVVVNSR...................GEIKLCDFGVSGELVN +BYR2_SCHPO/394-658 VHRDIKGANILVDNK...................GKIKISDFGISKKLEL +CC15_YEAST/25-272 IHRDIKAANILLSAD...................NTVKLADFGVSTIVN. +CC21_MEDSA/1-284 LHRDLKPQNLLIDRR..................TNSLKLADFGLARAFG. +CC5_YEAST/82-337 IHRDLKLGNIFFDSN...................YNLKIGDFGLAAVLAN +CDPK_SOYBN/34-292 MHRDLKPENFLFDTID.....E...........DAKLKATDFGLSVFYK. +CDR1_SCHPO/12-258 RHRDLKLENILIKVN..................EQQIKIADFGMATVEP. +CHK1_SCHPO/10-272 AHRDLKPENILLDYN...................GNLKISDFGFASLFSY +CLK1_MOUSE/160-476 THTDLKPENILFVKSDYTEAYNPKMKRDERTIVNPDIKVVDFGSATYDD. +CTK1_YEAST/183-469 LHRDVKGSNILIDNQ...................GNLKITDFGLARKMN. +ERK1_CANAL/68-371 LHRDLKPSNLLLNSN...................CDLKICDFGLARSIAS +ERK3_HUMAN/20-312 LHRDLKPANIFISTED..................LVLKIGDFGLARIVDQ +FUSE_DROME/4-254 LHRDLKPQNVLLDKN...................MHAKLCDFGLARNMT. +HR25_YEAST/9-273 IHRDIKPDNFLMGVGRR................GSTVHVIDFGLSKKYRD +JAK1_HUMAN/571-833 VHGNVCTKNLLLAREG..................IDSECGPFIKLSDPG. +JAK1_HUMAN/864-1137 VHRDLAARNVLVESE...................HQVKIGDFGLTKAIET +KAB7_YEAST/1096-1354 VHRDIKDENVIVDSK...................GFVKIIDFGSAAYVK. +KAKT_MLVAT/171-429 VYRDLKLENLMLDKD...................GHIKITDFGLCKEGIK +KC21_CHICK/39-324 MHRDVKPHNVMIDHEH..................RKLRLIDWGLAEFYHP +KCC4_MOUSE/42-296 VHRDLKPENLLYATP.A....P...........DAPLKIADFGLSKIV.. +KCR8_YEAST/316-590 CHRDLKPENLLLTHD...................GVLKITDFGNSECFKM +KG3A_RAT/119-403 CHRDIKPQNLLVDPDT..................AVLKLCDFGSAKQLVR +KGP1_DROME/457-717 IYRDLKPENLMLDER...................GYVKIVDFGFAKQIG. +KI28_YEAST/7-290 LHRDLKPNNLLFSPD...................GQIKVADFGLARAIP. +KI82_YEAST/324-602 IYRDLKPENILLHQS...................GHVMLSDFDLSIQATG +KIN1_SCHPO/125-395 VHRDLKIENILISKT...................GDIKIIDFGLSNLYR. +KIR1_HUMAN/208-495 AHRDLKSKNILVKKN...................GQCCIADLGLAVMHSQ +KKIA_HUMAN/5-288 IHRDVKPENILITKH...................SVIKLCDFGFARLLTG +KKL6_YEAST/192-508 IHRDLKLENILLKYSFDDINSFRDSPIY...CKQNFIELADFGLCKKIE. +KMIL_AVIMH/82-339 IHRDMKSNNIFLHGG...................LTVKIGDFGLATVKSR +KML2_CHICK/1453-1708 VHLDLKPENIMCVNKTG.................TSIKLIDFGLARRLE. +KMOS_CERAE/60-338 VHLDLKPANILISEQ...................DVCKISDFGCSEKLED +KPBH_RAT/24-291 VHRDLKPENILLDDN...................MQIRLSDFGFSCHLE. +KPIM_HUMAN/38-290 LHRDIKDENILIDLN..................RGELKLIDFGSGALLK. +KPK2_PLAFK/111-364 VHRDLKMENLMLENPN.....D...........PSSLKIIDFGLASFLN. +KPRO_MAIZE/534-812 IHCDVKPENILLDQA...................FEPKITDFGLVKLLNR +KR1_HSV11/191-478 IHRDIKTENIFINTP...................EDICLGDFGAACFVQG +KR1_PRVKA/53-332 MHRDVKAENIFLEDV...................DTVCLGDLGAARCN.. +KS61_MOUSE/407-664 VHRDLKPSNILYVDESG....N...........PECLRICDFGFAKQLR. +KYK1_DICDI/1289-1559 LHRDLSSRNILLDHNIDPKNPVVSS......RQDIKCKISDFGLSRLKKE +KYK2_DICDI/108-364 VHRDLTSQNILLDEL...................GNIKISDFGLSAEKSR +MAK_RAT/4-284 FHRDMKPENLLCMGP...................ELVKIADFGLARELR. +MEK1_YEAST/162-444 VHRDLKLDNILLCTP.E....P...........CTRIVLADFGIAKDLN. +MET_HUMAN/1078-1337 VHRDLAARNCMLDEK...................FTVKVADFGLARDMYD +MKK1_YEAST/221-488 IHRDIKPQNILLNEN...................GQVKLCDFGVSGEAV. +MLK1_HUMAN/3-262 IHRDLKSSNILILQKVENGDLS...........NKILKITDFGLAREWH. +NINL_DROME/16-282 LHRDIRGDNILLTKN...................GRVKLCDFGLSRQVDS +NPR1_YEAST/438-742 AHRDLKLDNCVINEK...................GIVKLIDFGAAVVFSY +PHY_CERPU/1004-1282 IHRDLKSMNILVKSVKVTKSEIG..........YVHVKVADFGLSKTKDS +PKD1_DICDI/36-291 IYRDLKPENILIDEK...................GHIKLTDFGFSKKTVG +PKN1_MYXXA/59-321 VHRDLKPDNIFLVRRNGN...............APFVKVLDFGIAKLADA +RAN1_SCHPO/18-295 YHRDLKPENIMVGNDG..................NTVYLADFGLATTEPY +RYK_HUMAN/327-593 IHKDLAARNCVIDDT...................LQVKITDNALSRDLFP +SGV1_YEAST/60-366 MHRDIKTANILIDHN...................GVLKLADFGLARLYYG +SPK1_YEAST/198-466 SHRDLKPDNILIEQD......D...........PVLVKITDFGLAKVQG. +ST20_YEAST/620-871 LHRDIKSDNILLSME...................GDIKLTDFGFCAQIN. +STE7_YEAST/191-466 IHRDIKPSNVLINSK...................GQIKLCDFGVSKKLIN +SYK_PIG/364-619 VHRDLAARNVLLVTQ...................HYAKISDFGLSKALRA +TOP_DROME/938-1194 VHRDLAARNVLVQTP...................SLVKITDFGLAKLLSS +TRKA_HUMAN/504-775 VHRDLATRNCLVGQG...................LVVKIGDFGMSRDIYS +TTK_HUMAN/509-775 VHSDLKPANFLIVDG....................MLKLIDFGIANQMQP +WEE1_HUMAN/299-569 VHMDIKPSNIFISRTSI....P...........NAASEEGDEDDWASN.. + +7LES_DROME/2209-2481 S.................DYYRKEGEGLLPVRWMSPES............ +ABL1_CAEEL/296-547 D.................TYTAHAGAKFPIKWT.APEG............ +ARK1_BOVIN/191-453 ...................KKKPHASVGTHGYM.APEV............ +AVR2_HUMAN/192-479 G................KSAGDTHGQVGTRRYM.APEV............ +BFR2_HUMAN/367-643 .................IDYYKKTTNGRLPVKWMAPEA............ +BYR1_SCHPO/66-320 ....................SVAQTFVGTSTYM.SPER............ +BYR2_SCHPO/394-658 N............STSTKTGGARPSFQGSSFWM.APEV............ +CC15_YEAST/25-272 ....................SSALTLAGTLNWM.APEI............ +CC21_MEDSA/1-284 .................IPVRTFTHEVVTLWYR.APEIL........... +CC5_YEAST/82-337 ..................ESERKYTICGTPNYI.APEV............ +CDPK_SOYBN/34-292 ..................PGESFCDVVGSPYYV.APEV............ +CDR1_SCHPO/12-258 ..................NDSCLENYCGSLHYL.APEI............ +CHK1_SCHPO/10-272 K................GKSRLLNSPVGSPPYA.APEI............ +CLK1_MOUSE/160-476 ....................EHHSTLVSTRHYR.APEV............ +CTK1_YEAST/183-469 ..................SRADYTNRVITLWYR.PPEL............ +ERK1_CANAL/68-371 Q...............EDNYGFMTEYVATRWYR.APEI............ +ERK3_HUMAN/20-312 HYS...............HKGYLSEGLVTKWYR.SPRL............ +FUSE_DROME/4-254 .................LGTHVLTSIKGTPLYM.APEL............ +HR25_YEAST/9-273 FN...........THRHIPYRENKSLTGTARYA.SVNT............ +JAK1_HUMAN/571-833 ................IPITVLSRQECIERIPWIAPEC............ +JAK1_HUMAN/864-1137 D................KEYYTVKDDRDSPVFWYAPEC............ +KAB7_YEAST/1096-1354 ...................SGPFDVFVGTIDYA.APEV............ +KAKT_MLVAT/171-429 ..................DGATMKTFCGTPEYL.APEV............ +KC21_CHICK/39-324 ...................GQEYNVRVASRYFK.GPEL............ +KCC4_MOUSE/42-296 .................EHQVLMKTVCGTPGYC.APEI............ +KCR8_YEAST/316-590 AWEK..............NIHLSGGVCGSSPYI.APEEY........... +KG3A_RAT/119-403 ...................GEPNVSYICSRYYR.APEL............ +KGP1_DROME/457-717 ..................TSSKTWTFCGTPEYV.APEI............ +KI28_YEAST/7-290 .................APHEILTSNVVTRWYR.APEL............ +KI82_YEAST/324-602 SKKPTMKDSTYLDTKICSDGFRTNSFVGTEEYL.APEV............ +KIN1_SCHPO/125-395 ..................RQSRLRTFCGSLYFA.APEL............ +KIR1_HUMAN/208-495 STN..............QLDVGNNPRVGTKRYM.APEV............ +KKIA_HUMAN/5-288 ..................PSDYYTDYVATRWYR.SPEL............ +KKL6_YEAST/192-508 ..................NNEMCTARCGSEDYV.SPEI............ +KMIL_AVIMH/82-339 WS................GSQQVEQPTGSILWM.APEVIR.......... +KML2_CHICK/1453-1708 ..................SAGSLKVLFGTPEFV.APEV............ +KMOS_CERAE/60-338 ...............LLCFQTPLYPLGGTYTHR.APEL............ +KPBH_RAT/24-291 ..................PGEKLRELCGTPGYL.APEI............ +KPIM_HUMAN/38-290 ...................DTVYTDFDGTRVYS.PPEW............ +KPK2_PLAFK/111-364 ...................SPSMNMRCGSPGYV.APEI............ +KPRO_MAIZE/534-812 G................GSTQNVSHVRGTLGYI.APEW............ +KR1_HSV11/191-478 S................RSSPFPYGIAGTIDTN.APEV............ +KR1_PRVKA/53-332 .................VAAPNFYGLAGTIETN.APEV............ +KS61_MOUSE/407-664 .................AENGLLMTPCYTANFV.APEV............ +KYK1_DICDI/1289-1559 ..................QASQMTQSVGCIPYM.APEV............ +KYK2_DICDI/108-364 E................GSMTMTNGGICNPRWR.PPEL............ +MAK_RAT/4-284 ..................SQPPYTDYVSTRWYR.APEVL........... +MEK1_YEAST/162-444 .................SNKERMHTVVGTPEYC.APEVGFRANRKAYQSF +MET_HUMAN/1078-1337 K...............EYYSVHNKTGAKLPVKWMALES............ +MKK1_YEAST/221-488 ...................NSLATTFTGTSFYM.APER............ +MLK1_HUMAN/3-262 ...................RTTKMSAAGTYAWM.APEV............ +NINL_DROME/16-282 ..................TLGKRGTCIGSPCWM.APEVVS.......... +NPR1_YEAST/438-742 P..............FSKNLVEASGIVGSDPYL.APEVC........... +PHY_CERPU/1004-1282 S................TRYSNQTWNRGTNRWM.APEVINLG........ +PKD1_DICDI/36-291 ...................GKNTSSVCGTFDYM.APEI............ +PKN1_MYXXA/59-321 H................MPQTHAGIIVGTPEYM.APEQ............ +RAN1_SCHPO/18-295 SSDFGCG..SLFYMSPECQREVKKLSSLSDMLPVTPEP............ +RYK_HUMAN/327-593 .................MDYHCLGDNENRPVRWMALES............ +SGV1_YEAST/60-366 CPPNLKYPG......GAGSGAKYTSVVVTRWYR.APELV........... +SPK1_YEAST/198-466 ..................NGSFMKTFCGTLAYV.APEVIR.......... +ST20_YEAST/620-871 .................ELNLKRTTMVGTPYWM.APEV............ +STE7_YEAST/191-466 ....................SIADTFVGTSTYM.SPER............ +SYK_PIG/364-619 D................ENYYKAQTHGKWPVKWYAPEC............ +TOP_DROME/938-1194 D.................SNEYKAAGGKMPIKWLALEC............ +TRKA_HUMAN/504-775 .................TDYYRVGGRTMLPIRWMPPES............ +TTK_HUMAN/509-775 ................DTTSVVKDSQVGTVNYM.PPEAIKDMS....... +WEE1_HUMAN/299-569 ..................KVMFKIGDLGHVTRISSPQV............ + +7LES_DROME/2209-2481 .....LVD......GLFTTQSDVWAFGVLCWEILTLG............. +ABL1_CAEEL/296-547 .....LAF......NTFSSKSDVWAFGVLLWEIATYG............. +ARK1_BOVIN/191-453 .....LQKG.....VAYDSSADWFSLGCMLFKLLRG.............. +AVR2_HUMAN/192-479 .....LEGAIN.FQRDAFLRIDMYAMGLVLWELASRCTAADG........ +BFR2_HUMAN/367-643 .....LFD......RVYTHQSDVWSFGVLMWEIFTLG............. +BYR1_SCHPO/66-320 .....IRG......GKYTVKSDIWSLGISIIELATQ.............. +BYR2_SCHPO/394-658 .....VKQ......TMHTEKTDIWSLGCLVIEMLTS.............. +CC15_YEAST/25-272 .....LGN......RGASTLSDIWSLGATVVEMLTK.............. +CC21_MEDSA/1-284 .....LGS......RHYSTPVDVWSVGCIFAEMANRRP............ +CC5_YEAST/82-337 .....LMG....KHSGHSFEVDIWSLGVMLYALLIG.............. +CDPK_SOYBN/34-292 .....LR.......KLYGPESDVWSAGVILYILLS............... +CDR1_SCHPO/12-258 .....VSHK.....PYRGAPADVWSCGVILYSLLSN.............. +CHK1_SCHPO/10-272 ......TQ......QYDGSKVDVWSCGIILFALLLG.............. +CLK1_MOUSE/160-476 .....ILA......LGWSQPCDVWSIGCILIEYYLGFTVFPTHD...... +CTK1_YEAST/183-469 .....LLG.....TTNYGTEVDMWGCGCLLVELFNKTAIFQ......... +ERK1_CANAL/68-371 .....MLT.....FQEYTTAIDVWSVGCILAEMLSGRPLFPGRDYHNQLW +ERK3_HUMAN/20-312 .....LLSP.....NNYTKAIDMWAAGCILAEMLTG.............. +FUSE_DROME/4-254 .....LAD......EPYDHHADMWSLGCIAYESMAG.............. +HR25_YEAST/9-273 .....HLG......IEQSRRDDLESLGYVLIYFCKG.............. +JAK1_HUMAN/571-833 .....VEDS.....KNLSVAADKWSFGTTLWEICYNG............. +JAK1_HUMAN/864-1137 .....LMQ......SKFYIASDVWSFGVTLHELLTYCD............ +KAB7_YEAST/1096-1354 .....LGGN.....PYEGQPQDIWAIGILLYTVVFK.............. +KAKT_MLVAT/171-429 .....LED......NDYGRAVDWWGLGVVMYEMMCG.............. +KC21_CHICK/39-324 .....LVDY.....QMYDYSLDMWSLGCMLASMIFRKEP........... +KCC4_MOUSE/42-296 .....LRG......CAYGPEVDMWSVGIITYILL................ +KCR8_YEAST/316-590 .....IKE......EFDPRPVDIWACGVIYMAMRTG.............. +KG3A_RAT/119-403 .....IFG.....ATDYTSSIDVWSAGCVLAELLLGQPIFP......... +KGP1_DROME/457-717 .....ILN......KGHDRAVDYWALGILIHELLNG.............. +KI28_YEAST/7-290 .....LFG.....AKHYTSAIDIWSVGVIFAELMLRIPYLP......... +KI82_YEAST/324-602 .....IRG......NGHTAAVDWWTLGILIYEMLFG.............. +KIN1_SCHPO/125-395 .....LNAQ.....PYIGPEVDVWSFGIVLYVLVCG.............. +KIR1_HUMAN/208-495 .....LDETIQVDCFDSYKRVDIWAFGLVLWEVARRMVSNG......... +KKIA_HUMAN/5-288 .....LVG.....DTQYGPPVDVWAIGCVFAELLSGVPLWP......... +KKL6_YEAST/192-508 .....LMG.....VPYDGHLSDTWALGVILYSLFED.............. +KMIL_AVIMH/82-339 .....MQDS.....NPFSFQSDVYSYGIVLYELMTG.............. +KML2_CHICK/1453-1708 .....INY......EPIGYETDMWSIGVICYILVSG.............. +KMOS_CERAE/60-338 .....LKG......EGVTPKADIYSFAITLWQMTTK.............. +KPBH_RAT/24-291 .....LKCSMDETHPGYGKEVDLWACGVILFTLLAG.............. +KPIM_HUMAN/38-290 .....IRYH.....RYHGRSAAVWSLGILLYDMVCG.............. +KPK2_PLAFK/111-364 .....LKC......ASYGTKVDIFSLGVILFNIL................ +KPRO_MAIZE/534-812 .....VSS......LPITAKVDVYSYGVVLLELLTG.............. +KR1_HSV11/191-478 .....LAG......DPYTTTVDIWSAGLVIFETAVHNASLFSAPRGP... +KR1_PRVKA/53-332 .....LAR......DRYDTKVDVWGAGVVLFETLAYPKTITGG.DEP... +KS61_MOUSE/407-664 .....LKR......QGYDEGCDIWSLGILLYTMLAG.............. +KYK1_DICDI/1289-1559 .....FKG......DSNSEKSDVYSYGMVLFELLTS.............. +KYK2_DICDI/108-364 .....TKN.....LGHYSEKVDVYCFSLVVWEILTG.............. +MAK_RAT/4-284 .....LRS......SVYSSPIDVWAVGSIMAELYTFRPLFPG........ +MEK1_YEAST/162-444 SRAATLEQ......RGYDSKCDLWSLGVITHIMLTG.............. +MET_HUMAN/1078-1337 .....LQT......QKFTTKSDVWSFGVVLWELMTRG............. +MKK1_YEAST/221-488 .....IQG......QPYSVTSDVWSLGLTILEVANG.............. +MLK1_HUMAN/3-262 .....IRA......SMFSKGSDVWSYGVLLWELLTG.............. +NINL_DROME/16-282 ....AMESR....EPDITVRADVWALGITTIELADG.............. +NPR1_YEAST/438-742 .....IFA......KYDPRPVDIWSSAIIFACMILKKFPWKIPKLRDNSF +PHY_CERPU/1004-1282 YESTEGEISFDGKVPKYPLKSDVYSFGMVCYEVLTG.............. +PKD1_DICDI/36-291 .....LNSS.....NGHGKPVDWWALGVVVYELVTG.............. +PKN1_MYXXA/59-321 .....SLG......RGVDGRADLYALGVIAYQLLTG.............. +RAN1_SCHPO/18-295 .....IESQ...SSSFATAPNDVWALGIILINLCCK.............. +RYK_HUMAN/327-593 .....LVN......NEFSSASDVWAFGVTLWELMTLG............. +SGV1_YEAST/60-366 .....LGD......KQYTTAVDIWGVGCVFAEFFEKKP............ +SPK1_YEAST/198-466 GKDTSVSPDEYEERNEYSSLVDMWSMGCLVYVILTG.............. +ST20_YEAST/620-871 .....VSR......KEYGPKVDIWSLGIMIIEMIEG.............. +STE7_YEAST/191-466 .....IQG......NVYSIKGDVWSLGLMIIELVTG.............. +SYK_PIG/364-619 .....INY......YKFSSKSDVWSFGVLMWEAFSYG............. +TOP_DROME/938-1194 .....IRN......RVFTSKSDVWAFGVTIWELLTFG............. +TRKA_HUMAN/504-775 .....ILY......RKFTTESDVWSFGVVLWEIFTYG............. +TTK_HUMAN/509-775 .....SSRENGKSKSKISPKSDVWSLGCILYYMTYG.............. +WEE1_HUMAN/299-569 .....EEG......DSRFLANEVLQENYTHLPKA....DIFAL....... + +7LES_DROME/2209-2481 .....................QQPYAAR.......NNFEVLAHVKEG... +ABL1_CAEEL/296-547 .....................MAPYPG........VELSNVYGLLENG.. +ARK1_BOVIN/191-453 .....................HSPFRQ........HKTKDKHEIDRMT.. +AVR2_HUMAN/192-479 ................PVDEYMLPFEEEIGQHPSLEDMQEVVVHKKKR.. +BFR2_HUMAN/367-643 .....................GSPYPG........IPVEELFKLLKEG.. +BYR1_SCHPO/66-320 .....................ELPWSFSNI.DDSIGILDLLHCIVQE... +BYR2_SCHPO/394-658 .....................KHPYPN.......CDQMQAIFRIGEN... +CC15_YEAST/25-272 .....................NPPYHN........LTDANIYYAVEN... +CC21_MEDSA/1-284 ...LSPGDSEIDELFKIFRILGTPNED......TWPGVTSLPDFKSTFPR +CC5_YEAST/82-337 .....................KPPFQAR.......DVNTIYERIKCR... +CDPK_SOYBN/34-292 ....GVPP...........FWAESEP.........GIFRQILLGKLD... +CDR1_SCHPO/12-258 .....................KLPFGG........QNTDVIYNKIRHG.. +CHK1_SCHPO/10-272 .....................NTPWDEA......ISNTGDYLLYKKQCE. +CLK1_MOUSE/160-476 ..........SREHLAMMERILGPLPKHMIQKTRKRRYFHHDRLDWDEHS +CTK1_YEAST/183-469 ......GSNELEQIESIFKIMGTPTINSWP.TLYDMPWFFMIMPQQTTKY +ERK1_CANAL/68-371 LIMEVLGTPNMEDYYNIKSKRAREYIRSLP.FCKKIPFSELFANTNNN.. +ERK3_HUMAN/20-312 ...RMLFAGAHELEQMQLILETIPVIRE....EDKDELLRVMPSFVSSTW +FUSE_DROME/4-254 .....................QPPFCA........SSILHLVKMIKH... +HR25_YEAST/9-273 .....................SLPWQG....LKATTKKQKYDRIMEKK.. +JAK1_HUMAN/571-833 .....................EIPLKD........KTLIEKERFYES... +JAK1_HUMAN/864-1137 ...................SDSSPMALFLKMIGPTHGQMTVTRLVNTLK. +KAB7_YEAST/1096-1354 .....................ENPFY..........NIDEILEGDLK... +KAKT_MLVAT/171-429 .....................RLPFYN........QDHEKLFELILM... +KC21_CHICK/39-324 ..FFHGHDNYDQLVRIAKVLGTEDLYDYID.KYNIELDPRFNDILGRHSR +KCC4_MOUSE/42-296 ......CG.............FEPFYD........ERGDQFMFRRILNC. +KCR8_YEAST/316-590 .....................RQLWSSAE...KDDPFYMNYLKGRKEK.. +KG3A_RAT/119-403 ......GDSGVDQLVEIIKVLGTPTREQIR.EMNPNYTEFKFPQIKAHP. +KGP1_DROME/457-717 .....................TPPFSAP.......DPMQTYNLILKG... +KI28_YEAST/7-290 ......GQNDVDQMEVTFRALGTPTDRDWP.EVSSFMTYNKLQIYPPPS. +KI82_YEAST/324-602 .....................CTPFKG........DNSNETFSNILT... +KIN1_SCHPO/125-395 .....................KVPFDD........QNMSALHAKIKK... +KIR1_HUMAN/208-495 ................IVEDYKPPFYDVVPNDPSFEDMRKVVCVDQQ... +KKIA_HUMAN/5-288 ....GKSDVDQLYLIRKTLGDLIPRHQ......QVFSTNQYFSGVKIPDP +KKL6_YEAST/192-508 .....................RLPFDPP.....PNASARQRSRATSHR.. +KMIL_AVIMH/82-339 .....................ELPYSHIN...NRDQIIFMVGRGYASP.. +KML2_CHICK/1453-1708 .....................LSPFMG....DNDNETLANVTSATWD... +KMOS_CERAE/60-338 .....................QAPYSGE.....RQHILYAVVAYDLRP.. +KPBH_RAT/24-291 ......SP...............PFWHR....RQILMLRMIMEGQYQ... +KPIM_HUMAN/38-290 .....................DIPFEH..........DEEIIRGQVF... +KPK2_PLAFK/111-364 ......CG.............YPPFRG........NNVKEIFKKNMR.C. +KPRO_MAIZE/534-812 ............TRVSELVGGTDEVHSMLR.KLVRMLSAKLEGEEQSWID +KR1_HSV11/191-478 ..KRGPCDSQITRIIRQAQVHVDEFSPHPE.SRLTSRYRSRAAGNNRPP. +KR1_PRVKA/53-332 .AINGEMH..LIDLIRALGVHPEEFP..PD.TRLRSEFVRYAGTHRQP.. +KS61_MOUSE/407-664 ..YTPFAN............GPSDTP........EEILTRIGSGKFT... +KYK1_DICDI/1289-1559 .....................DEPQQD.......MKPMKMAHLAAYES.. +KYK2_DICDI/108-364 .....................EIPFSD.......LDGSQRSAQVAYAG.. +MAK_RAT/4-284 .......TSEVDEIFKICQVLGTPKKSD.....WPEGYQLASSMNFRFPQ +MEK1_YEAST/162-444 .....................ISPFYG........DGSERSIIQNAKIG. +MET_HUMAN/1078-1337 .....................APPYPD.......VNTFDITVYLLQG... +MKK1_YEAST/221-488 .....................KFPCSSEKM.AANIAPFELLMWILTFTP. +MLK1_HUMAN/3-262 .....................EVPFRG.......IDGLRVAYGVAMN... +NINL_DROME/16-282 .....................KPPFAD.......MHPTRAMFQIIRNP.. +NPR1_YEAST/438-742 KLFCSGRD.CDSLSSLVTRTPDPPSYDESH.STEKKKPESSSNNVSDPNN +PHY_CERPU/1004-1282 .....................DVPFPE.......EKNPNNVKRMVLEG.. +PKD1_DICDI/36-291 .....................KLPFS.........NSKESLLNRKAD... +PKN1_MYXXA/59-321 .....................RLPFND.......EGLAAQLVAHQLRPP. +RAN1_SCHPO/18-295 .....................RNPWKR......ACSQTDGTYRSYVHN.. +RYK_HUMAN/327-593 .....................QTPYVD.......IDPFEMAAYLKDG... +SGV1_YEAST/60-366 ...ILQGKTDIDQGHVIFKLLGTPTEEDWA.VARYLPGAELTTTNYKP.. +SPK1_YEAST/198-466 .....................HLPFSG....STQDQLYKQIGRGSYH... +ST20_YEAST/620-871 .....................EPPYLN.......ETPLRALYLIATNG.. +STE7_YEAST/191-466 .....................EFPLGG......HNDTPDGILDLLQRIVN +SYK_PIG/364-619 .....................QKPYRG........MKGSEVSAMLEKG.. +TOP_DROME/938-1194 .....................QRPHEN........IPAKDIPDLIEVG.. +TRKA_HUMAN/504-775 .....................KQPWYQ.......LSNTEAIDCITQG... +TTK_HUMAN/509-775 .....................KTPFQQ......IINQISKLHAIIDPN.. +WEE1_HUMAN/299-569 .ALTVVCA...........AGAEPLP.........RNGDQWHEIRQG... + +7LES_DROME/2209-2481 ..........GRLQQPPMCTEK....LYSLLLLCWRTDPWERP.....SF +ABL1_CAEEL/296-547 ..........FRMDGPQGCPPS....VYRLMLQCWNWSPSDRP.....RF +ARK1_BOVIN/191-453 ........LTMAVELPDSFSPE....LRSLLEGLLQRDVNRRLGCLGRGA +AVR2_HUMAN/192-479 .........PVLRDYWQKHAGMA..MLCETIEECWDHDAEARL.....SA +BFR2_HUMAN/367-643 ..........HRMDKPANCTNE....LYMMMRDCWHAVPSQRP.....TF +BYR1_SCHPO/66-320 ..........EPPRLPSSFPED....LRLFVDACLHKDPTLRAS.....P +BYR2_SCHPO/394-658 ..........ILPEFPSNISSS....AIDFLEKTFAIDCNLRP.....TA +CC15_YEAST/25-272 ..........DTYYPPSSFSEP....LKDFLSKCFVKNMYKRP.....TA +CC21_MEDSA/1-284 W......PSKDLATVVPNLEPA....GLDLLNSMLCLDPTKRI.....TA +CC5_YEAST/82-337 .........DFSFPRDKPISDE....GKILIRDILSLDPIERP.....SL +CDPK_SOYBN/34-292 ..........FHSEPWPSISDS....AKDLIRKMLDQNPKTRL.....TA +CDR1_SCHPO/12-258 ...........AYDLPSSISSA....AQDLLHRMLDVNPSTRI.....TI +CHK1_SCHPO/10-272 .........RPSYHPWNLLSPG....AYSIITGMLRSDPFKRY.....SV +CLK1_MOUSE/160-476 SAGRYVSRRCKPLKEFMLSQDAEHEFLFDLVGKILEYDPAKRI.....TL +CTK1_YEAST/183-469 V......NNFSEKFKSVLPSSK....CLQLAINLLCYDQTKRF.....SA +ERK1_CANAL/68-371 .......TSTSNTGGRTNINPL....ALDLLEKLLIFNPAKRI.....TV +ERK3_HUMAN/20-312 E......VKRPLRKLLPEVNSE....AIDFLEKILTFNPMDRL.....TA +FUSE_DROME/4-254 ..........EDVKWPSTLTCE....CRSFLQGLLEKDPGLRI.....SW +HR25_YEAST/9-273 ..........LNVSVETLCSGLP.LEFQEYMAYCKNLKFDEKP......D +JAK1_HUMAN/571-833 ..........RCRPVTPSCKE.....LADLMTRCMNYDPNQRP.....FF +JAK1_HUMAN/864-1137 ........EGKRLPCPPNCPDE....VYQLMRKCWEFQPSNRT.....SF +KAB7_YEAST/1096-1354 ............FNNAEEVSED....CIELIKSILNRCVPKRP.....TI +KAKT_MLVAT/171-429 ..........EEIRFPRTLGPE....AKSLLSGLLKKDPTQRLGGGSEDA +KC21_CHICK/39-324 KR....WERFVHSENQHLVSPE....ALDFLDKLLRYDHQSRL.....TA +KCC4_MOUSE/42-296 .......EYYFISPWWDEVSLN....AKDLVKKLIVLDPKKRL.....TT +KCR8_YEAST/316-590 .........GGYEPIESLKRAR....CRNVIYSMLDPVPYRRI.....NG +KG3A_RAT/119-403 ..........WTKVFKSRTPPE....AIALCSSLLEYTPSSRL.....SP +KGP1_DROME/457-717 .........IDMIAFPKHISRW....AVQLIKRLCRDVPSERLGYQTGGI +KI28_YEAST/7-290 ........RDELRKRFIAASEY....ALDFMCGMLTMNPQKRW.....TA +KI82_YEAST/324-602 ........KDVKFPHDKEVSKN....CKDLIKKLLNKNEAKRLGSKS.GA +KIN1_SCHPO/125-395 ..........GTVEYPSYLSSD....CKGLLSRMLVTDPLKRA.....TL +KIR1_HUMAN/208-495 ..........RPNIPNRWFSDPTLTSLAKLMKECWYQNPSARL.....TA +KKIA_HUMAN/5-288 E......DMEPLELKFPNISYP....ALGLLKGCLHMDPTERL.....TC +KKL6_YEAST/192-508 ........IARFDWRWYRLSDY....KTNVG.KQIVENTLTRKN.QRWSI +KMIL_AVIMH/82-339 ..........DLSKLYKNCPKA....MKRLVADCLKKVREERP.....LF +KML2_CHICK/1453-1708 ..........FDDEAFDEISDD....AKDFISNLLKKDMKSRL.....NC +KMOS_CERAE/60-338 ........SLSAAVFQDSLPGQ...RLGDVIRRCWRPSAAQRP.....SA +KPBH_RAT/24-291 ..........FSSPEWDDRSNT....VKDLIAKLLQVDPNARL.....TA +KPIM_HUMAN/38-290 ..............FRQRVSSE....CQHLIRWCLALRPSDRP.....TF +KPK2_PLAFK/111-364 .......HISFNTKHWINKSES....VKEIILWMCCKNPDDRC.....TA +KPRO_MAIZE/534-812 GY....LDSKLNRPVNYVQART....LIKLAVSCLEEDRSKRP.....TM +KR1_HSV11/191-478 .......YTRPAWTRYYKMDID....VEYLVCKALTFDGALRP.....SA +KR1_PRVKA/53-332 .......YTQYARVARLGLPET....GAFLIYKMLTFDPVRRP.....SA +KS61_MOUSE/407-664 ..........LSGGNWNTVSET....AKDLVSKMLHVDPHQRL.....TA +KYK1_DICDI/1289-1559 ..........YRPPIPLTTSSK....WKEILTQCWDSNPDSRP.....TF +KYK2_DICDI/108-364 ..........LRPPIPEYCDPE....LKLLLTQCWEADPNDRP.....PF +MAK_RAT/4-284 C......IPINLKTLIPNASSE....AIQLMTEMLNWDPKKRP.....TA +MEK1_YEAST/162-444 .......KLNFKLKQWDIVSDN....AKSFVKDLLQTDVVKRL.....NS +MET_HUMAN/1078-1337 ..........RRLLQPEYCPDP....LYEVMLKCWHPKAEMRP.....SF +MKK1_YEAST/221-488 .......ELKDEPESNIIWSPS....FKSFIDYCLKKDSRERP.....SP +MLK1_HUMAN/3-262 .........KLALPIPSTCPEP....FAKLMEDCWNPDPHSRP.....SF +NINL_DROME/16-282 .........PPTLMRPTNWSKQ....INDFISESLEKNAENRP.....MM +NPR1_YEAST/438-742 .......VNIGPQRLLHSLPEE....TQHIVGRMIDLAPACRG.....NI +PHY_CERPU/1004-1282 ..........VRPDLPAHCPIE....LKALITDCWNQDPLKRP......S +PKD1_DICDI/36-291 .........FQLIFQNSYLSDE....IKDFIFQLLSVDPSKRLG..TFDS +PKN1_MYXXA/59-321 .........PPPSSVYPAVSAA....LEHVILRALAKKPEDRY....ASI +RAN1_SCHPO/18-295 .........PSTLLSILPISRE....LNSLLNRIFDRNPKTRI.....TL +RYK_HUMAN/327-593 ..........YRIAQPINCPDE....LFAVMACCWALDPEERP.....KF +SGV1_YEAST/60-366 .........TLRERFGKYLSET....GLDFLGQLLALDPYKRL.....TA +SPK1_YEAST/198-466 ..........EGPLKDFRISEE....ARDFIDSLLQVDPNNRS.....TA +ST20_YEAST/620-871 .........TPKLKEPENLSSS....LKKFLDWCLCVEPEDRA.....SA +STE7_YEAST/191-466 .......EPSPRLPKDRIYSKE....MTDFVNRCCIKNERERS.....SI +SYK_PIG/364-619 ..........ERMGCPPGCPRE....MYELMTLCWTYDVENRP.....GF +TOP_DROME/938-1194 ..........LKLEQPEICSLD....IYCTLLSCWHLDAAMRP.....TF +TRKA_HUMAN/504-775 ..........RELERPRACPPE....VYAIMRGCWQREPQQRH.....SI +TTK_HUMAN/509-775 ..........HEIEFPDIPEKD....LQDVLKCCLKRDPKQRI.....SI +WEE1_HUMAN/299-569 .........RLPRIPQVLSQE.....FTELLKVMIHPDPERRP.....SA + +7LES_DROME/2209-2481 RRCYNTL... +ABL1_CAEEL/296-547 RDIHFNL... +ARK1_BOVIN/191-453 QEVKESPFF. +AVR2_HUMAN/192-479 GCVGERI... +BFR2_HUMAN/367-643 KQLVEDL... +BYR1_SCHPO/66-320 QQLCAMPYF. +BYR2_SCHPO/394-658 SELLSHPFV. +CC15_YEAST/25-272 DQLLKHVWI. +CC21_MEDSA/1-284 RSAVEHEYF. +CC5_YEAST/82-337 TEIMDYVWF. +CDPK_SOYBN/34-292 HEVLRHPWI. +CDR1_SCHPO/12-258 PEFFSHPFL. +CHK1_SCHPO/10-272 KHVVQHPWL. +CLK1_MOUSE/160-476 KEALKHPFF. +CTK1_YEAST/183-469 TEALQSDYF. +ERK1_CANAL/68-371 EDALKHPYL. +ERK3_HUMAN/20-312 EMGLQHPYM. +FUSE_DROME/4-254 TQLLCHPFV. +HR25_YEAST/9-273 YLFLARLF.. +JAK1_HUMAN/571-833 RAIMRDI... +JAK1_HUMAN/864-1137 QNLIEGF... +KAB7_YEAST/1096-1354 DDINNDKWL. +KAKT_MLVAT/171-429 KEIMQHRFF. +KC21_CHICK/39-324 REAMEHPYF. +KCC4_MOUSE/42-296 FQALQHPWV. +KCR8_YEAST/316-590 KQILNSEWG. +KG3A_RAT/119-403 LEACAHSFF. +KGP1_DROME/457-717 QDIKKHKWF. +KI28_YEAST/7-290 VQCLESDYF. +KI82_YEAST/324-602 ADIKRHPFF. +KIN1_SCHPO/125-395 EEVLNHPWM. +KIR1_HUMAN/208-495 LRIKKTL... +KKIA_HUMAN/5-288 EQLLHHPYF. +KKL6_YEAST/192-508 NEIYESPFV. +KMIL_AVIMH/82-339 PQILSSI... +KML2_CHICK/1453-1708 TQCLQHPWL. +KMOS_CERAE/60-338 RPLLVDL... +KPBH_RAT/24-291 EQALQHPFF. +KPIM_HUMAN/38-290 EEIQNHPWM. +KPK2_PLAFK/111-364 LQALGHQWF. +KPRO_MAIZE/534-812 EHAVQTL... +KR1_HSV11/191-478 AELLCLPLF. +KR1_PRVKA/53-332 DEILNFGMW. +KS61_MOUSE/407-664 KQVLQHPWI. +KYK1_DICDI/1289-1559 KQIIVHL... +KYK2_DICDI/108-364 TYIVNKL... +MAK_RAT/4-284 SQALKHPYF. +MEK1_YEAST/162-444 KQGLKHIWI. +MET_HUMAN/1078-1337 SELVSRI... +MKK1_YEAST/221-488 RQMINHPWI. +MLK1_HUMAN/3-262 TNILDQL... +NINL_DROME/16-282 VEMVEHPFL. +NPR1_YEAST/438-742 EEIMEDPWI. +PHY_CERPU/1004-1282 FAVICQKL.. +PKD1_DICDI/36-291 CSIRNHKWF. +PKN1_MYXXA/59-321 AAFRNALQVA +RAN1_SCHPO/18-295 PELSTLV... +RYK_HUMAN/327-593 QQLVQCL... +SGV1_YEAST/60-366 MSAKHHPWF. +SPK1_YEAST/198-466 AKALNHPWI. +ST20_YEAST/620-871 TELLHDEYI. +STE7_YEAST/191-466 HELLHHDLI. +SYK_PIG/364-619 VAVELRL... +TOP_DROME/938-1194 KQLTTVF... +TRKA_HUMAN/504-775 KDVHARL... +TTK_HUMAN/509-775 PELLAHPYV. +WEE1_HUMAN/299-569 MALVKHSVL. + diff --git a/forester/archive/RIO/others/hmmer/tutorial/rrm.hmm b/forester/archive/RIO/others/hmmer/tutorial/rrm.hmm new file mode 100644 index 0000000..509d6d6 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/rrm.hmm @@ -0,0 +1,237 @@ +HMMER2.0 +NAME rrm +DESC +LENG 72 +ALPH Amino +RF no +CS no +MAP yes +COM ../src/hmmbuild -F rrm.hmm rrm.slx +COM ../src/hmmcalibrate rrm.hmm +NSEQ 70 +DATE Wed Jul 8 08:13:25 1998 +CKSUM 2768 +XT -8455 -4 -1000 -1000 -8455 -4 -8455 -4 +NULT -4 -8455 +NULE 595 -1558 85 338 -294 453 -1158 197 249 902 -1085 -142 -21 -313 45 531 201 384 -1998 -644 +EVD -53.840649 0.214434 +HMM A C D E F G H I K L M N P Q R S T V W Y + m->m m->i m->d i->m i->i d->m d->d b->m m->e + -21 * -6129 + 1 -1234 -371 -8214 -7849 -5304 -8003 -7706 2384 -7769 2261 -681 -7660 -7694 -7521 -7816 -7346 -5543 1527 -6974 -6639 1 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 -21 * + 2 -3634 -3460 -5973 -5340 3521 -2129 -4036 -831 -2054 -1257 -2663 -4822 -5229 -4557 -4735 -1979 -1569 -1476 -3893 3439 2 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 * * + 3 -5570 838 -8268 -7958 -5637 -8152 -8243 2427 -7947 -461 -539 -7805 -7843 -7878 -8124 -7550 -5559 3130 -7481 -7000 3 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 * * + 4 -1146 -4797 -1564 -2630 -1480 2769 -2963 -1850 992 -4812 -3887 737 -4397 -120 793 -205 -1019 -4418 -4981 -1059 4 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 * * + 5 -5242 -7035 445 -3538 -7284 1773 -4583 -7166 -4676 -7046 -6312 3633 -1651 -1262 -849 -1278 -5287 -6650 -7228 -291 5 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12326 -894 -1115 -701 -1378 * * + 6 -6898 -6238 -9292 -8703 -410 -9176 -7772 820 -8535 3071 -753 -8917 -8033 -7171 -7955 -8614 -6722 5 -6136 -6414 6 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 278 394 45 96 359 117 -369 -294 -249 + - -33 -6025 -12326 -153 -3315 -701 -1378 * * + 7 -5 -5297 178 -2982 -5685 -2278 -528 -5452 -1615 -5394 -4488 1396 3136 -3022 -3659 780 976 -4981 -5565 -4854 8 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -11 -11284 -12327 -894 -1115 -701 -1378 * * + 8 -3329 -4799 -805 543 789 -4303 572 -4868 140 -1087 -3888 -603 1691 530 183 -162 293 -2124 2317 2037 9 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11284 -12327 -894 -1115 -701 -1378 * * + 9 -373 -4801 2182 1353 -1426 44 -407 -1928 -366 -4817 -3891 1263 -4395 -1080 -666 295 50 -1947 -4985 397 10 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 10 450 1883 -5953 -5317 -1256 -1301 -4027 1322 -1847 -283 1542 -4802 -5206 -1502 -4713 -4241 2143 1615 -3893 -3551 11 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 11 -1786 -4835 1027 -807 -5155 -1278 -2989 -4907 -410 -4850 -3924 957 -4421 -943 -250 670 3048 -4456 -5017 -4333 12 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 12 -3329 -4802 1324 2670 -5123 -4302 -2961 -4874 732 -2424 -3891 -457 -262 553 250 -694 -989 -4424 1772 -1014 13 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 13 -325 -4802 1515 2286 -5123 -2017 868 -4874 260 -2865 -1087 -2938 -4395 2006 -810 492 -1754 -4424 -4985 -4302 14 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 14 -337 -4801 2075 1854 -5121 -723 -567 -1924 73 -634 -194 -1227 -4396 1588 -3049 -212 -414 -4422 -5 -4302 15 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 15 -6843 -6192 -9252 -8675 -481 -9132 -7773 1557 -8511 2856 467 -8869 -8024 -7180 -7953 -8566 -6676 459 -6154 -6421 16 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 16 5 -4654 -1525 936 444 -4347 -3013 -1809 2193 -441 -3760 -441 -4438 -2577 1775 -91 -3285 -1104 180 -259 17 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 17 -97 -4802 2341 1548 -5123 -2042 -2961 -4874 -347 -2479 -194 -5 -726 1566 807 -1858 42 -4424 -4985 -4302 18 + - -146 -501 232 42 -381 398 105 -627 210 -463 -721 275 393 44 95 361 116 -370 -295 -242 + - -45 -5457 -12327 -1928 -440 -701 -1378 * * + 18 358 -3435 -5945 -1175 1490 -5154 1309 1157 -1944 1759 -387 -4797 -5204 -4530 -1684 -4238 -376 166 -3893 1330 23 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12327 -894 -1115 -701 -1378 * * + 19 -2191 733 -7910 -7364 4360 -7323 -5649 -1557 -7016 -750 -407 -6877 -7039 -6263 -6681 -6482 -5572 -4211 -4950 -1019 24 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -12 -11285 -12328 -894 -1115 -701 -1378 * * + 20 -83 -4801 -3176 698 -5121 1566 -2961 -1977 942 -4817 -3890 -239 -4396 582 256 1807 -874 -1745 -4984 -1334 25 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 21 -1216 -4802 -289 1083 -1452 -655 -584 -4874 1345 -4818 -3891 964 1488 2130 -3049 -310 107 -2012 -4985 -1334 26 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 22 -45 1344 -1667 -843 2933 -2146 400 582 -4479 -1948 -2709 -506 -5117 -436 -1764 -4119 -3523 -96 215 2616 27 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 23 -556 -4294 -4426 -1796 -273 3377 -4149 -4100 -4273 -2279 -3695 -562 298 -4067 -4575 -1940 -3954 -3921 -4866 -77 28 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 24 -376 -4801 -143 1004 -1426 805 279 -1771 821 -1486 -3890 -527 2002 126 45 -287 -1679 -617 -4985 -4302 29 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 25 -3608 -178 -1585 -1970 660 -5154 -4024 2773 -894 -985 -386 -4796 -1707 -4528 -4707 -609 -1823 2145 -3893 -1100 30 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 26 -673 -173 -3429 1042 -4598 -2161 -3110 535 1570 9 283 -508 -4517 -255 382 -1924 313 1407 -4706 -4127 31 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 27 -1211 -4799 1518 768 -5119 -1218 -441 -945 -1312 -2414 -587 909 -4396 -1010 534 1815 78 -487 -4983 -128 32 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 28 1271 2236 -5933 -5299 810 -2278 -651 1901 -1970 -221 -2639 -1497 -5203 -4524 -629 -638 -1577 1521 -3894 -1008 33 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12328 -894 -1115 -701 -1378 * * + 29 -1909 -4796 153 441 -1513 -4304 -599 -1894 1709 25 -3886 689 -1498 243 1438 -189 -879 380 -126 -255 34 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -13 -11286 -12329 -894 -1115 -701 -1378 * * + 30 -1277 -3441 -5893 -1776 -1155 -5147 -513 1829 -1993 1189 1888 -1484 -703 -4503 -1652 -1974 -3546 2209 -3898 -3554 35 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -11287 -12329 -894 -1115 -701 -1378 * * + 31 -1299 746 -5893 -1992 -1190 -5147 -524 1691 424 -60 2330 -4774 111 -4503 -132 248 -1571 1419 -3898 -19 36 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -11287 -12329 -894 -1115 -701 -1378 * * + 32 -3370 -4477 -3387 50 -560 -1979 -449 -51 1375 -681 233 1068 701 -1040 1343 -1845 543 -480 -10 1246 37 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -240 -11287 -2797 -894 -1115 -701 -1378 * * + 33 -3122 -4595 3395 -593 -4916 -1399 589 -1433 360 -4611 -290 780 -1313 35 -1369 -1782 -3061 -1712 -4778 -4095 38 + - -151 -504 236 42 -380 396 122 -618 211 -468 -714 274 392 45 98 355 123 -373 -299 -248 + - -841 -2976 -1709 -1966 -426 -3668 -118 * * + 34 -452 -4116 -568 -735 -4435 -1350 -2280 -1270 1458 -4131 792 -2257 1620 415 1996 479 -765 -1327 -4300 -538 48 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -10529 -11571 -894 -1115 -1180 -840 * * + 35 272 -4448 -1054 1495 -1086 -283 -2616 -726 380 -1231 -3538 1286 -4050 1395 -988 154 68 50 -4633 -876 49 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -10906 -11948 -894 -1115 -2229 -346 * * + 36 -3050 -4521 457 -2349 -4841 -1681 65 -1545 404 -2305 -3610 996 -1241 -714 -1055 -351 3167 -4143 -4705 -4022 50 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -14 -10981 -12024 -894 -1115 -2036 -403 * * + 37 -943 -4583 277 -486 -4904 2690 -181 -1421 829 -2551 -758 866 -4177 -751 11 -804 -1361 -4205 -4766 -4084 51 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11049 -12091 -894 -1115 -2632 -254 * * + 38 -1544 -4606 -1206 -627 -1238 -1111 -220 -4677 1841 -1463 -537 -311 146 1310 2236 252 -1424 -1820 -4789 -1025 52 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11074 -12116 -894 -1115 -1795 -490 * * + 39 -871 902 -3255 -2704 -1212 -2110 605 -4156 -647 -1293 101 192 1442 -2552 91 2587 -171 -3858 -4584 -3996 53 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11128 -12170 -894 -1115 -1064 -938 * * + 40 -3251 -4717 -597 -2552 -1539 -1882 45 -4784 2499 -1083 -3807 -1125 -312 -892 2672 -1497 -649 -1932 -4902 -1040 54 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11202 -12244 -894 -1115 -158 -3269 * * + 41 -4425 -5751 -1160 -3492 -6118 3496 -552 -1896 -1318 -2596 -4883 -434 -258 -3375 -548 -4283 -4348 -5409 -5833 -5262 55 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11288 -12330 -894 -1115 -701 -1378 * * + 42 -3608 -96 -1795 -5308 3204 -5154 498 -1086 -989 -1857 1406 -4797 -5204 -807 -4709 -4238 -268 -366 187 3035 56 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11288 -12330 -894 -1115 -701 -1378 * * + 43 2573 2359 -7700 -8052 -7623 2634 -6965 -7447 -7655 -7712 -6731 -6019 -5985 -7072 -7238 -2014 -4755 -2203 -7845 -7842 57 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11288 -12330 -894 -1115 -701 -1378 * * + 44 -1896 -3552 -6072 -5447 4093 -5277 -4115 -1389 -5044 -1849 -2748 -4920 -5327 -4660 -4842 -2020 -787 -772 -3948 1996 58 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -15 -11288 -12330 -894 -1115 -701 -1378 * * + 45 -2123 1258 -8228 -7927 -5768 -8106 -8270 1951 -7921 -982 -4434 -7761 -7830 -7926 -8131 -7503 -5516 3355 -7605 -7039 59 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11288 -12331 -894 -1115 -701 -1378 * * + 46 -1158 -4801 136 2359 -5122 -4302 -508 -644 437 -2559 -3890 628 -4395 -213 172 18 1464 -2067 -4985 -1086 60 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12331 -894 -1115 -701 -1378 * * + 47 -7925 -6836 -8294 -8655 4067 -8176 -4357 -6786 -8211 -6080 795 -6785 -8028 -6925 -7569 -7427 -7774 -6956 -3603 3066 61 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12331 -894 -1115 -701 -1378 * * + 48 -633 -4801 851 2019 -1639 -2148 879 -1118 1178 -2414 -3891 -481 -71 241 -1485 -232 744 -569 -4985 -4302 62 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12331 -894 -1115 -701 -1378 * * + 49 -3331 -4805 2054 434 -5126 -1882 -432 -4877 377 -4821 -3894 2009 -4398 -269 -1336 1291 1198 -1970 -4988 -4305 63 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12331 -894 -1115 -701 -1378 * * + 50 -638 -4800 -1786 1796 -5120 -1884 1628 -1952 812 -444 -621 -1191 1228 530 -672 8 -873 45 -4983 -276 64 + - -149 -500 232 43 -381 398 105 -627 210 -466 -721 277 393 45 95 359 119 -370 -295 -239 + - -38 -6076 -12331 -1893 -453 -701 -1378 * * + 51 243 -4801 1218 2315 -5122 -1551 -485 -1640 -795 -2479 -783 -420 -685 -1027 1035 415 -3268 -631 -23 -4302 69 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -16 -11289 -12332 -894 -1115 -701 -1378 * * + 52 415 694 2467 1155 -1401 -4334 -490 -1800 -2599 -4689 -637 -384 -1759 -12 -3098 1144 -834 -569 -4907 -271 70 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 53 2846 -3442 -1698 -5254 -979 -5146 -4014 -750 -4864 -773 1875 -4771 -5197 -1456 -1779 -127 -329 428 -3898 -3555 71 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 54 581 -4801 1239 1462 -5122 -1606 -432 -367 1251 -1623 -3891 335 -4395 1283 -110 -3209 753 -1920 -4985 -4302 72 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 55 686 -4798 937 304 -1378 -4303 -437 -1924 2219 -1669 -621 828 -4396 -1012 742 0 -1608 -1126 -4982 -1015 73 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 56 3420 863 -7680 -7410 -5526 -6323 -6681 -57 -7168 -2455 -4425 -6591 -6708 -6875 -7058 -2256 -4981 -4 -6573 -6193 74 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -17 -11290 -12332 -894 -1115 -701 -1378 * * + 57 -2038 -3436 -5943 -5308 -1145 -5154 -4025 2255 423 1498 1203 -4797 -1707 -478 -1267 -2117 -3548 1450 -3893 -931 75 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -18 -11291 -12333 -894 -1115 -701 -1378 * * + 58 622 -4802 1764 1486 -5123 -4302 -2961 -1060 334 -4818 -3891 -420 -4396 1293 1148 487 -3268 -1087 -4985 -429 76 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -102 -11291 -4156 -894 -1115 -701 -1378 * * + 59 1265 -231 -1498 1351 -5045 -262 -355 -4796 922 -1073 -3813 778 -4318 877 -34 53 386 -2030 289 -4225 77 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -18 -11207 -12249 -894 -1115 -160 -3250 * * + 60 -684 813 -5723 -473 532 -2124 -3981 -2958 -121 2114 2840 -1421 -5174 -4409 -926 -4196 -1685 -376 -3915 497 78 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -18 -11291 -12333 -894 -1115 -701 -1378 * * + 61 -1812 -4803 1626 -749 -515 -1133 -415 -4875 -1294 -4819 -3892 3181 -793 1470 -1377 -246 -3268 -4425 -4986 -193 79 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -18 -11291 -12333 -894 -1115 -701 -1378 * * + 62 -1812 -4808 -1465 33 -1509 2998 1583 -4879 122 -4823 -3897 972 -4400 -1078 -3055 -1613 -682 -4429 -4991 -1114 80 + - -149 -500 232 43 -378 398 105 -627 212 -466 -721 275 393 45 98 359 117 -367 -295 -250 + - -98 -4229 -12334 -49 -4901 -701 -1378 * * + 63 -676 -4701 -742 -1422 825 -589 -545 255 1702 -2571 812 -2986 -4424 796 418 -221 1302 -1179 -4912 1028 82 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -19 -11292 -12334 -894 -1115 -701 -1378 * * + 64 -3341 -4695 350 1378 -1551 -1973 -2998 477 1265 78 273 -1163 21 504 -1507 -1108 282 114 -19 473 83 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -19 -11292 -12334 -894 -1115 -701 -1378 * * + 65 -3605 -3444 -949 -2090 2356 -1177 -4010 1410 -1703 1341 -404 -1673 -747 -4487 -4679 -2139 -1048 1197 -3900 411 84 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -19 -11292 -12334 -894 -1115 -701 -1378 * * + 66 -655 -539 1179 279 -1324 1202 -2962 -1895 147 -682 1298 1427 -2056 608 756 -1119 -1893 -4419 -4982 140 85 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -19 -11292 -12335 -894 -1115 -701 -1378 * * + 67 -1814 -4814 166 -2636 -5135 2921 -568 -4885 -1333 -2415 -3903 1495 -4406 -312 -619 602 -1672 -4436 -4997 -4314 86 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -20 -11293 -12335 -894 -1115 -701 -1378 * * + 68 -3329 1217 -624 -797 -1594 -4303 1580 -4872 2069 -2414 -3890 617 -4396 283 2449 -560 -267 -2067 -4984 -1334 87 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -20 -11293 -12335 -894 -1115 -701 -1378 * * + 69 108 566 -1460 747 -1608 -4306 -2965 -30 1407 -2607 -3878 346 1033 -336 863 -1038 745 617 -4975 -4296 88 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -20 -11293 -12335 -894 -1115 -701 -1378 * * + 70 -1318 -3465 -283 -172 -3423 -2053 -3974 1957 -4721 1761 1425 -4678 -1762 -4391 -1578 -1974 -1561 1341 -3918 -3570 89 + - -149 -500 233 43 -381 399 106 -626 210 -466 -720 275 394 45 96 359 117 -369 -294 -249 + - -20 -11293 -12336 -894 -1115 -701 -1378 * * + 71 -1165 -4790 -240 -275 -5105 -4306 1035 -2009 1665 -395 707 -1334 -218 -188 1891 -1077 -383 404 110 348 90 + - -149 -500 233 43 -381 398 106 -626 210 -464 -720 275 394 45 96 359 117 -369 -294 -249 + - -43 -6001 -12336 -150 -3342 -701 -1378 * * + 72 -1929 1218 -1535 -1647 -3990 -4677 -3410 1725 207 -1481 -3117 -3608 -810 -1118 -743 -1942 428 2687 -4325 -3869 92 + - * * * * * * * * * * * * * * * * * * * * + - * * * * * * * * 0 +// diff --git a/forester/archive/RIO/others/hmmer/tutorial/rrm.slx b/forester/archive/RIO/others/hmmer/tutorial/rrm.slx new file mode 100644 index 0000000..ea84b12 --- /dev/null +++ b/forester/archive/RIO/others/hmmer/tutorial/rrm.slx @@ -0,0 +1,167 @@ +#=ID rrm +#=AC PF00076 +#=DE RNA recognition motif. (aka RRM, RBD, or RNP domain) +# AU Sean Eddy +# GA HMM_iterative_training +# GA Bic_raw 25 hmmls 10 +# CC There is no separation between signal and noise. +# AL HMM_simulated_annealing +# AM hmma -qR +# SE Published_alignment +# RN [1] +# RM 94119674 +# RA Birney E., Kumar S., Krainer A.R. +# RL NAR 21:5803-5816(1993). +# DR PROSITE; PDOC00030; +# DR SCOP; 1SXL; sf; +# CC -!- The RRM motif is probably diagnostic of an RNA binding protein. +# CC -!- RRMs are found in a variety of RNA binding proteins, including +# CC various hnRNP proteins, proteins implicated in regulation +# CC of alternative splicing, and protein components +# CC of snRNPs. The motif also appears in a few single stranded +# CC DNA binding proteins. +# CC -!- The RRM structure consists of four strands +# CC and two helices arranged in an alpha/beta sandwich. +# SQ 70 +CABA_MOUSE/77-148 MFVGGL.SWDTSKKDLKD....YFTKFGEVVDCTIKMD.........PNT +CABA_MOUSE/161-232 IFVGGL.NPEATEEKIRE....YFGQFGEIEAIELPID.........PKL +CST2_HUMAN/18-89 VFVGNI.PYEATEEQLKD....IFSEVGPVVSFRLVYD.........RET +ELAV_DROME/250-322 LYVSGL.PKTMTQQELEA....IFAPFGAIITSRILQNa........GND +ELAV_DROME/404-475 IFIYNL.APETEEAALWQ....LFGPFGAVQSVKIVKD.........PTT +EWS_HUMAN/363-442 IYVQGL.NDSVTLDDLAD....FFKQCGVVKMNKRTGQpmih.iyldKET +GBP2_YEAST/124-193 IFVRNL.TFDCTPEDLKE....LFGTVGEVVEADIIT...........SK +GBP2_YEAST/221-291 VFIINL.PYSMNWQSLKD....MFKECGHVLRADVELD..........FN +GBP2_YEAST/351-421 IYCSNL.PFSTARSDLFD....LFGPIGKINNAELKPQ..........EN +GR10_BRANA/8-79 CFVGGL.AWATGDAELER....TFSQFGEVIDSKIIND.........RET +HUD_HUMAN/48-119 LIVNYL.PQNMTQEEFRS....LFGSIGEIESCKLVRD.........KIT +IF4B_HUMAN/98-169 AFLGNL.PYDVTEESIKE....FFRGLNISAVRLPREP.........SNP +MSSP_HUMAN/31-102 LYIRGL.PPHTTDQDLVK....LCQPYGKIVSTKAILD.........KTT +NAM8_YEAST/165-237 IFVGDL.APNVTESQLFE....LFiNRYASTSHAKIVHD........QVT +NOP3_YEAST/127-190 LFVRPF.PLDVQESELNE....IFGPFGPMKEVKILN............. +NOP3_YEAST/202-270 ITMKNL.PEGCSWQDLKD....LARENSLETTFSSVN............T +NOP4_YEAST/28-98 LFVRSI.PQDVTDEQLAD....FFSNFAPIKHAVVVKD..........TN +NOP4_YEAST/292-367 VFVRNV.PYDATEESLAP....HFSKFGSVKYALPVID.........KST +NSR1_YEAST/170-241 IFVGRL.SWSIDDEWLKK....EFEHIGGVIGARVIYE.........RGT +NSR1_YEAST/269-340 LFLGNL.SFNADRDAIFE....LFAKHGEVVSVRIPTH.........PET +NUCL_CHICK/283-353 LFVKNL.TPTKDYEELRT....AIKEFFGKKNLQVSEV..........RI +NUCL_CHICK/373-440 LFVKNL.PYRVTEDEMKN....VFENALEVRLVLNKE............. +PABP_DROME/4-75 LYVGDL.PQDVNESGLFD....KFSSAGPVLSIRVCRD.........VIT +PABP_DROME/92-162 VFIKNL.DRAIDNKAIYD....TFSAFGNILSCKVATD..........EK +PABP_DROME/183-254 VYVKNF.TEDFDDEKLKE....FFEPYGKITSYKVMSK..........ED +PABP_SCHPO/249-319 VYIKNL.DTEITEQEFSD....LFGQFGEITSLSLVKD..........QN +PES4_YEAST/93-164 LFIGDL.HETVTEETLKG....IFKKYPSFVSAKVCLD.........SVT +PES4_YEAST/305-374 IFIKNL.PTITTRDDILN....FFSEVGPIKSIYLSN...........AT +PSF_HUMAN/373-443 LSVRNL.SPYVSNELLEE....AFSQFGPIERAVVIVD..........DR +PUB1_YEAST/76-146 LYVGNL.DKAITEDILKQ....YFQVGGPIANIKIMID..........KN +PUB1_YEAST/163-234 LFVGDL.NVNVDDETLRN....AFKDFPSYLSGHVMWD.........MQT +PUB1_YEAST/342-407 AYIGNI.PHFATEADLIP....LFQNFGFILDFKHYPE............ +RB97_DROME/34-105 LFIGGL.APYTTEENLKL....FYGQWGKVVDVVVMRD.........AAT +RN15_YEAST/20-91 VYLGSI.PYDQTEEQILD....LCSNVGPVINLKMMFD.........PQT +RNP1_YEAST/37-109 LYVGNL.PKNCRKQDLRD....LFEPNYGKITINMLKKk........PLK +RO28_NICSY/99-170 LFVGNL.PYDIDSEGLAQ....LFQQAGVVEIAEVIYN.........RET +RO33_NICSY/116-187 LYVGNL.PFSMTSSQLSE....IFAEAGTVANVEIVYD.........RVT +RO33_NICSY/219-290 LYVANL.SWALTSQGLRD....AFADQPGFMSAKVIYD.........RSS +ROA1_BOVIN/106-177 IFVGGI.KEDTEEHHLRD....YFEQYGKIEVIEIMTD.........RGS +ROC_HUMAN/18-82 VFIGNLnTLVVKKSDVEA....IFSKYGKIVGCSVHK............. +ROG_HUMAN/10-81 LFIGGL.NTETNEKALEA....VFGKYGRIVEVLLMKD.........RET +RT19_ARATH/33-104 LYIGGL.SPGTDEHSLKD....AFSSFNGVTEARVMTN.........KVT +RU17_DROME/104-175 LFIARI.NYDTSESKLRR....EFEFYGPIKKIVLIHD.........QES +RU1A_HUMAN/12-84 IYINNL.NEKIKKDELKkslyAIFSQFGQILDILVSRS............ +RU1A_HUMAN/210-276 LFLTNL.PEETNELMLSM....LFNQFPGFKEVRLVPG............ +RU1A_YEAST/229-293 LLIQNL.PSGTTEQLLSQ....ILGNEALVEIRLVSV............. +RU2B_HUMAN/9-81 IYINNM.NDKIKKEELKRslyaLFSQFGHVVDIVALK............T +RU2B_HUMAN/153-220 LFLNNL.PEETNEMMLSM....LFNQFPGFKEVRLVPG............ +SC35_CHICK/16-87 LKVDNL.TYRTSPDTLRR....VFEKYGRVGDVYIPRD.........RYT +SP33_HUMAN/17-85 IYVGNL.PPDIRTKDIED....VFYKYGAIRDIDLKNR............ +SP33_HUMAN/122-186 VVVSGL.PPSGSWQDLKD....HMREAGDVCYADVYRD............ +SQD_DROME/58-128 LFVGGL.SWETTEKELRD....HFGKYGEIESINVKTD.........PQT +SQD_DROME/138-208 IFVGGL.TTEISDEEIKT....YFGQFGNIVEVEMPLD.........KQK +SR55_DROME/5-68 VYVGGL.PYGVRERDLER....FFKGYGRTRDILIKN............. +SSB1_YEAST/39-114 IFIGNV.AHECTEDDLKQ....LFvEEFGDEVSVEIPIKeh.....tDGH +SSB1_YEAST/188-268 LYINNV.PFKATKEEVAE....FFGTDADSISLPMRKMrdqhtgrifTSD +SXLF_DROME/127-198 LIVNYL.PQDMTDRELYA....LFRAIGPINTCRIMRD.........YKT +SXLF_DROME/213-285 LYVTNL.PRTITDDQLDT....IFGKYGSIVQKNILRD.........KLT +TIA1_HUMAN/9-78 LYVGNL.SRDVTEALILQ....LFSQIGPCKNCKMIMD...........T +TIA1_HUMAN/97-168 VFVGDL.SPQITTEDIKA....AFAPFGRISDARVVKD.........MAT +TIA1_HUMAN/205-270 VYCGGV.TSGLTEQLMRQ....TFSPFGQIMEIRVFPD............ +TRA2_DROME/99-170 IGVFGL.NTNTSQHKVRE....LFNKYGPIERIQMVID.........AQT +U2AF_HUMAN/261-332 LFIGGL.PNYLNDDQVKE....LLTSFGPLKAFNLVKD.........SAT +U2AF_SCHPO/312-383 IYISNL.PLNLGEDQVVE....LLKPFGDLLSFQLIKN.........IAD +WHI3_YEAST/540-615 LYVGNL.PSDATEQELRQ....LFSGQEGFRRLSFRNKnt......tSNG +X16_HUMAN/12-78 VYVGNL.GNNGNKTELER....AFGYYGPLRSVWVARN............ +YHC4_YEAST/348-415 IFVGQL.DKETTREELNR....RFSTHGKIQDINLIFK............ +YHH5_YEAST/315-384 ILVKNL.PSDTTQEEVLD....YFSTIGPIKSVFISE...........KQ +YIS1_YEAST/66-136 IFVGNI.TPDVTPEQIED....HFKDCGQIKRITLLYD.........RNT +YIS5_YEAST/33-104 IYIGNL.NRELTEGDILT....VFSEYGVPVDVILSRD.........ENT + +CABA_MOUSE/77-148 GRSRGFGFILFKDS....SSVEKVLDQKEH.RLDGRVIDP.K +CABA_MOUSE/161-232 NKRRGFVFITFKEE....DPVKKVLEKKFH.TVSGSKCEI.K +CST2_HUMAN/18-89 GKPKGYGFCEYQDQ....ETALSAMRNLNG.REFSGRALR.V +ELAV_DROME/250-322 TQTKGVGFIRFDKR....EEATRAIIALNG.TTPSSCTDP.I +ELAV_DROME/404-475 NQCKGYGFVSMTNY....DEAAMAIRALNG.YTMGNRVLQ.V +EWS_HUMAN/363-442 GKPKGDATVSYEDP....PTAKAAVEWFDG.KDFQGSKLK.V +GBP2_YEAST/124-193 GHHRGMGTVEFTKN....ESVQDAISKFDG.ALFMDRKLM.V +GBP2_YEAST/221-291 GFSRGFGSVIYPTE....DEMIRAIDTFNG.MEVEGRVLE.V +GBP2_YEAST/351-421 GQPTGVAVVEYENL....VDADFCIQKLNN.YNYGGCSLQ.I +GR10_BRANA/8-79 GRSRGFGFVTFKDE....KSMKDAIDEMNG.KELDGRTIT.V +HUD_HUMAN/48-119 GQSLGYGFVNYIDP....KDAEKAINTLNG.LRLQTKTIK.V +IF4B_HUMAN/98-169 ERLKGFGYAEFEDL....DSLLSALSLNEE.SLGNRRIRV.D +MSSP_HUMAN/31-102 NKCKGYGFVDFDSP....AAAQKAVSALKA.SGVQAQKAK.Q +NAM8_YEAST/165-237 GMSKGYGFVKFTNS....DEQQLALSEMQG.VFLNGRAIK.V +NOP3_YEAST/127-190 ....GFAFVEFEEA....ESAAKAIEEVHG.KSFANQPLE.V +NOP3_YEAST/202-270 RDFDGTGALEFPSE....EILVEALERLNN.IEFRGSVIT.V +NOP4_YEAST/28-98 KRSRGFGFVSFAVE....DDTKEALAKARK.TKFNGHILR.V +NOP4_YEAST/292-367 GLAKGTAFVAFKDQytynECIKNAPAAGST.SLLIGDDVM.P +NSR1_YEAST/170-241 DRSRGYGYVDFENK....SYAEKAIQEMQG.KEIDGRPIN.C +NSR1_YEAST/269-340 EQPKGFGYVQFSNM....EDAKKALDALQG.EYIDNRPVR.L +NUCL_CHICK/283-353 GSSKRFGYVDFLSA....EDMDKALQ.LNG.KKLMGLEIKlE +NUCL_CHICK/373-440 GSSKGMAYIEFKTE....AEAEKALEEKQG.TEVDGRAMV.I +PABP_DROME/4-75 RRSLGYAYVNFQQP....ADAERALDTMNF.DLVRNKPIR.I +PABP_DROME/92-162 GNSKGYGFVHFETE....EAANTSIDKVNG.MLLNGKKVY.V +PABP_DROME/183-254 GKSKGFGFVAFETT....EAAEAAVQALNGkDMGEGKSLY.V +PABP_SCHPO/249-319 DKPRGFGFVNYANH....ECAQKAVDELND.KEYKGKKLY.V +PES4_YEAST/93-164 KKSLGHGYLNFEDK....EEAEKAMEELNY.TKVNGKEIR.I +PES4_YEAST/305-374 KVKYLWAFVTYKNS....SDSEKAIKRYNN.FYFRGKKLL.V +PSF_HUMAN/373-443 GRSTGKGIVEFASK....PAARKAFERCSE.GVFLLTTTP.R +PUB1_YEAST/76-146 NKNVNYAFVEYHQS....HDANIALQTLNG.KQIENNIVK.I +PUB1_YEAST/163-234 GSSRGYGFVSFTSQ....DDAQNAMDSMQG.QDLNGRPLR.I +PUB1_YEAST/342-407 ...KGCCFIKYDTH....EQAAVCIVALAN.FPFQGRNLR.T +RB97_DROME/34-105 KRSRGFGFITYTKS....LMVDRAQENRPH.IIDGKTVEA.K +RN15_YEAST/20-91 GRSKGYAFIEFRDL....ESSASAVRNLNG.YQLGSRFLK.C +RNP1_YEAST/37-109 KPLKRFAFIEFQEG....VNLKKVKEKMNG.KIFMNEKIV.I +RO28_NICSY/99-170 DRSRGFGFVTMSTV....EEADKAVELYSQ.YDLNGRLLT.V +RO33_NICSY/116-187 DRSRGFAFVTMGSV....EEAKEAIRLFDG.SQVGGRTVK.V +RO33_NICSY/219-290 GRSRGFGFITFSSA....EAMNSALDTMNE.VELEGRPLR.L +ROA1_BOVIN/106-177 GKKRGFAFVTFDDH....DSVDKIVIQKYH.TVNGHNCEV.R +ROC_HUMAN/18-82 ....GFAFVQYVNE....RNARAAVAGEDG.RMIAGQVLD.I +ROG_HUMAN/10-81 NKSRGFAFVTFESP....ADAKDAARDMNG.KSLDGKAIK.V +RT19_ARATH/33-104 GRSRGYGFVNFISE....DSANSAISAMNG.QELNGFNIS.V +RU17_DROME/104-175 GKPKGYAFIEYEHE....RDMHAAYKHADG.KKIDSKRVL.V +RU1A_HUMAN/12-84 LKMRGQAFVIFKEV....SSATNALRSMQG.FPFYDKPMR.I +RU1A_HUMAN/210-276 ..RHDIAFVEFDNE....VQAGAARDALQG.FKITQNNAM.K +RU1A_YEAST/229-293 ...RNLAFVEYETV....ADATKIKNQLGS.TYKLQNNDV.T +RU2B_HUMAN/9-81 MKMRGQAFVIFKEL....GSSTNALRQLQG.FPFYGKPMR.I +RU2B_HUMAN/153-220 ..RHDIAFVEFEND....GQAGAARDALQGfKITPSHAMK.I +SC35_CHICK/16-87 KESRGFAFVRFHDK....RDAEDAMDAMDG.AVLDGRELR.V +SP33_HUMAN/17-85 RGGPPFAFVEFEDP....RDAEDAVYGRDG.YDYDGYRLR.V +SP33_HUMAN/122-186 ....GTGVVEFVRK....EDMTYAVRKLDN.TKFRSHEGE.T +SQD_DROME/58-128 GRSRGFAFIVFTNT....EAIDKVSA.ADE.HIINSKKVD.P +SQD_DROME/138-208 SQRKGFCFITFDSE....QVVTDLLK.TPK.QKIAGKEVD.V +SR55_DROME/5-68 ....GYGFVEFEDY....RDADDAVYELNG.KELLGERVV.V +SSB1_YEAST/39-114 IPASKHALVKFPTK....IDFDNIKENYDT.KVVKDREIH.I +SSB1_YEAST/188-268 SANRGMAFVTFSGE....NVDIEAKAEEFK.GKVFGDREL.T +SXLF_DROME/127-198 GYSFGYAFVDFTSE....MDSQRAIKVLNG.ITVRNKRLK.V +SXLF_DROME/213-285 GRPRGVAFVRYNKR....EEAQEAISALNNvIPEGGSQPL.S +TIA1_HUMAN/9-78 AGNDPYCFVEFHEH....RHAAAALAAMNG.RKIMGKEVK.V +TIA1_HUMAN/97-168 GKSKGYGFVSFFNK....WDAENAIQQMGG.QWLGGRQIR.T +TIA1_HUMAN/205-270 ...KGYSFVRFNSH....ESAAHAIVSVNG.TTIEGHVVK.C +TRA2_DROME/99-170 QRSRGFCFIYFEKL....SDARAAKDSCSG.IEVDGRRIR.V +U2AF_HUMAN/261-332 GLSKGYAFCEYVDI....NVTDQAIAGLNG.MQLGDKKLL.V +U2AF_SCHPO/312-383 GSSKGFCFCEFKNP....SDAEVAISGLDG.KDTYGNKLH.A +WHI3_YEAST/540-615 HSHGPMCFVEFDDV....SFATRALAELYGrQLPRSTVSS.K +X16_HUMAN/12-78 ..PPGFAFVEFEDP....RDAADAVRELDG.RTLCGCRVR.V +YHC4_YEAST/348-415 .PTNIFAFIKYETE....EAAAAALESENH.AIFLNKTMH.V +YHH5_YEAST/315-384 ANTPHKAFVTYKNE....EESKKAQKCLNK.TIFKNHTIW.V +YIS1_YEAST/66-136 GTPKGYGYIEFESP....AYREKALQ.LNG.GELKGKKIA.V +YIS5_YEAST/33-104 GESQGFAYLKYEDQ....RSTILAVDNLNG.FKIGGRALK.I + diff --git a/forester/archive/RIO/others/phylip_mod/IMPORTANT_NOTICE b/forester/archive/RIO/others/phylip_mod/IMPORTANT_NOTICE new file mode 100644 index 0000000..6d2a698 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/IMPORTANT_NOTICE @@ -0,0 +1,48 @@ +RIO - Phylogenomic Protein Function Analysis +---------------------------------------------------------------- + + +RIO contains modified versions of programs written by others: + +1. TREE-PUZZLE + (Strimmer, K., and A. von Haeseler. 1996. Quartet puzzling: A quartet maximum + likelihood method for reconstructing tree topologies. Mol. Biol. Evol. 13: 964-969.) + + +2. PHYLIP + (Felsenstein, J. 1993. PHYLIP (Phylogeny Inference Package) version 3.5c. + Distributed by the author. + Department of Genetics, University of Washington, Seattle.) + + +Please note: +------------ + +1. RIO uses modifications of these programs, the original versions were + written by others: + + TREE-PUZZLE: Heiko A. Schmidt, Korbinian Strimmer, Martin Vingron, Arndt von Haeseler + + PHYLIP: Joseph Felsenstein, see also http://evolution.genetics.washington.edu/phylip/credits.html + + +2. The programs in the RIO distribution have been modified specifically + to work within RIO and cannot be used for any other purpose. + + +3. I am responsible for any accidentally introduced errors. + + +4. The original can be downloaded from the following sites: + TREE-PUZZLE: http://www.tree-puzzle.de/ + PHYLIP: http://evolution.genetics.washington.edu/phylip.html + + +RIO also contains hmmer (version 2.2g). +hmmer can be downloaded at: http://hmmer.wustl.edu/ + + + +Christian Zmasek, 07/28/2006 + + diff --git a/forester/archive/RIO/others/phylip_mod/src/CHANGES b/forester/archive/RIO/others/phylip_mod/src/CHANGES new file mode 100644 index 0000000..3c03411 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/CHANGES @@ -0,0 +1,29 @@ +Based on Phylip 3.65 + +phylip.h +-------- + +#define MAXNCH 20 -> #define MAXNCH 26 +#define nmlngth 10 -> #define nmlngth 26 + + + +seq.h +----- + +#define MAXNCH 20 -> #define MAXNCH 26 + + + +protdist.c +---------- + +#define nmlngth 10 -> #define nmlngth 26 + + + +Makefile +-------- + +Commented out instructions for programs I currently don't need. + diff --git a/forester/archive/RIO/others/phylip_mod/src/Makefile b/forester/archive/RIO/others/phylip_mod/src/Makefile new file mode 100644 index 0000000..9aed148 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/Makefile @@ -0,0 +1,451 @@ +# Modified by Christian Zmasek. Use at your own risk. +# +# Generic Linux/Unix Makefile for PHYLIP 3.6. +# +# You should not need to change anything, though if you want you could +# change the first (noncomment) statement to some directory location +# that might be more useful. +# The compressed tar archive phylip.tar.Z when uncompressed and extracted +# puts the source code into a directory ./src, and also makes two other +# directories ./exe and ./doc for the final executables and the documentation +# files. Only change the EXEDIR settings if you want something different +# from that structure. +# If it causes trouble in compiling, the CFLAGS statement below may also need +# to be changed. +# +# To use the PHYLIP v3.6 Makefile, type +# make install to compile the whole package and install +# the executables in $(EXEDIR), and then +# remove the object files to save space +# make all to compile the whole package but not install it +# or remove the object files +# make put to move the executables into $(EXEDIR) +# make clean to remove all object files and executables from the +# current directory +# make dnaml to compile and link one program, (in this example, +# DnaML) and leave the executable and object files +# in the current directory (where the source code is). +# You will have to move the executable in to the +# executables directory (e.g. "mv dnaml ../exe") +# Note that the program name should be lower case. +# +# ---------------------------------------------------------------------------- +# (Starting here is the section where you may want to change things) +# ---------------------------------------------------------------------------- +# +# these are the statements we have been talking about: +# one of the reasons for changing them would be to put the executables +# on a different file system. +# The default configuration is to have within the overall PHYLIP +# directory three subdirectories: "src" for source code, "exe" for the +# executables, and "doc" for the documentation files. +# +# the following specifies the directory where the executables will be placed +EXEDIR = ../exe +# +# ---------------------------------------------------------------------------- +# +# In the following statements (the ones that set CFLAGS, DFLAGS, LIBS +# and DLIBS, CC and DC) you should make sure each is set properly. +# Usually this will simply involve making sure that the proper statement +# has no "#" as its first character and that all other possibilities +# have "#" for their first character. +# +# ---------------------------------------------------------------------------- +# +# This is the CFLAGS statement: +# +# if these statements say "-g" and that causes trouble, remove the "-g" +# if the "-lX11" does not work (X compiling not working), you may want to +# remove that switch or fix it. +# +# Here are some possible CFLAGS statements: +# +# +#A minimal one +#CFLAGS = +# +# A basic one for debugging +#CFLAGS = -g +# +# An optimized one for gcc +CFLAGS = -O3 -fomit-frame-pointer +# +# For some serious debugging using Gnu gcc +# +#CFLAGS=-g -Wall -Wmain -Wmissing-prototypes -Wreturn-type -Wstrict-prototypes -Wunused -Werror -Wredundant-decls -Waggregate-return -Wcast-align -Wcomment +# +# For Digital Alpha systems with Compaq Tru64 Unix +# (however, be aware that this may cause floating-point problems in programs +# like Dnaml owing to not using IEEE floating point standards). +#CFLAGS = -fast +# +# ---------------------------------------------------------------------------- +# +# and here are some possible DFLAGS statements: +# +# A minimal one +#DFLAGS = -DX $(CFLAGS) +# +# A basic one for debugging +#DFLAGS = -g -DX +# +# +# For Gnu C++ for runs +#DFLAGS = -I/usr/X11R6/include -O3 -DX -fomit-frame-pointer +# +# For Digital Alpha systems with Compaq Tru64 Unix +#DFLAGS = -DX -fast +# +# for Linux with X Windows development packages installed +# or for MacOS X with X Windows installed +DFLAGS = $(CFLAGS) -DX -I/usr/X11R6/include +# +# ---------------------------------------------------------------------------- +# +# These are the libraries for the CC and DC compiles, respectively +# +LIBS = -lm +# +# if the Xlib library for the X windowing system is somewhere +# unexpected, you may have to change the path /usr/X11R6/lib in this one +# +# For gcc for Linux with X windows development packages installed +# or for MacOS X with X windows installed +DLIBS= -L/usr/X11R6/lib/ -lX11 -lXaw -lXt +# +# ---------------------------------------------------------------------------- +# +# The next two assignments are the invocations of the compiler for the +# ordinary compiles and the tree-drawing programs, CC and DC +# +# This one specifies the "cc" C compiler +CC = cc $(CFLAGS) +# +# To use GCC instead, if it is not the compiler that "cc" invokes +#CC = gcc $(CFLAGS) +# +# This one specifies the "cc" C compiler for the Draw programs +DC = cc $(DFLAGS) +# +# To use GCC instead, if it is not the compiler that "cc" invokes +#DC = gcc $(DFLAGS) +# +# ---------------------------------------------------------------------------- +# (After this point there should not be any reason to change anything) +# ---------------------------------------------------------------------------- +# +# +# the list of programs +# +#PROGS = clique consense contml contrast dnacomp dnadist \ +# dnainvar dnaml dnamlk dnamove dnapars dnapenny \ +# dolmove dollop dolpenny factor fitch gendist kitsch \ +# mix move neighbor pars penny proml promlk protdist \ +# protpars restdist restml retree seqboot treedist \ +# drawgram drawtree + +PROGS = consense fitch neighbor proml promlk protdist protpars seqboot + +# +# general commands +# + +# +# The first uses a symbol you are unlikely to type. It is the one that +# is executed if you just type "make". It tells you how to use the +# Makefile. +# +a1b2c3d4: + @echo "" + @echo " To use the PHYLIP v3.6 Makefile, type" + @echo " make all to compile the whole package but not install it" + @echo " or remove the object files" + @echo " " + +introduce: + @echo "Building PHYLIP based on version 3.6 - Modified by Christian Zmasek. Use at your own risk." + +all: introduce $(PROGS) + @echo "Finished compiling." + @echo "" + +#install: all put clean +# @echo "Done." +# @echo "" + +#put: +# @echo "Installing PHYLIP v3.6 binaries in $(EXEDIR)" +# @mkdir -p $(EXEDIR) +# @cp $(PROGS) $(EXEDIR) +# @echo "Installing font files in $(EXEDIR)" +# @cp font* $(EXEDIR) +# @echo "Finished installation." +# @echo "" + +#clean: +# @echo "Removing object files to save space" +# @rm -f *.o +# @echo "Finished removing object files. Now will remove" +# @echo "executable files from the current directory, but not from the" +# @echo "executables directory. (If some are not here, the makefile" +# @echo "will terminate with an error message but this is not a problem)" +# @echo "" +# @echo "Removing executables from this directory" +# @rm -f $(PROGS) +# @echo "Finished cleanup." +# @echo "" + +# +# compile the shared stuff +# + +phylip.o: phylip.c phylip.h + $(CC) -c phylip.c + +seq.o: seq.c phylip.h seq.h + $(CC) -c seq.c + +#disc.o: disc.c phylip.h disc.h +# $(CC) -c disc.c + +#discrete.o: discrete.c discrete.h phylip.h +# $(CC) -c discrete.c + +#dollo.o: dollo.c phylip.h dollo.h +# $(CC) -c dollo.c + +#wagner.o: wagner.c phylip.h wagner.h +# $(CC) -c wagner.c + +dist.o: dist.c phylip.h dist.h + $(CC) -c dist.c + +#cont.o: cont.c cont.h phylip.h +# $(CC) -c cont.c + +#moves.o: moves.c phylip.h moves.h +# $(CC) -c moves.c + +# +# compile the individual programs +# + +#clique.o: clique.c disc.h phylip.h +# $(CC) -c clique.c + +#clique: clique.o clique.c disc.o disc.c phylip.o phylip.c disc.h phylip.h +# $(CC) clique.o disc.o phylip.o $(LIBS) -o clique + +cons.o: cons.c cons.h phylip.h + $(CC) -c cons.c + +consense.o: consense.c cons.h phylip.h + $(CC) -c consense.c + +consense: consense.o consense.c phylip.o phylip.c cons.o cons.c cons.h phylip.h + $(CC) consense.o cons.o phylip.o $(LIBS) -o consense + +#contml.o: contml.c cont.h phylip.h +# $(CC) -c contml.c + +#contml: contml.o contml.c cont.o cont.c phylip.o phylip.c cont.h phylip.h +# $(CC) contml.o cont.o phylip.o $(LIBS) -o contml + +#contrast.o: contrast.c cont.h phylip.h +# $(CC) -c contrast.c + +#contrast: contrast.o contrast.c cont.o cont.c phylip.o phylip.c cont.h phylip.h +# $(CC) contrast.o cont.o phylip.o $(LIBS) -o contrast + +#dnacomp.o: dnacomp.c seq.h phylip.h +# $(CC) -c dnacomp.c + +#dnacomp: dnacomp.o seq.o phylip.o dnacomp.c seq.c phylip.c seq.h phylip.h +# $(CC) dnacomp.o seq.o phylip.o $(LIBS) -o dnacomp + +#dnadist.o: dnadist.c seq.h phylip.h +# $(CC) -c dnadist.c + +#dnadist: dnadist.o seq.o phylip.o dnadist.c seq.c phylip.c seq.h phylip.h +# $(CC) dnadist.o seq.o phylip.o $(LIBS) -o dnadist + +#dnainvar.o: dnainvar.c seq.h phylip.h +# $(CC) -c dnainvar.c + +#dnainvar: dnainvar.o seq.o phylip.o dnainvar.c seq.c phylip.c seq.h phylip.h +# $(CC) dnainvar.o seq.o phylip.o $(LIBS) -o dnainvar + +#dnaml.o: dnaml.c seq.h phylip.h +# $(CC) -c dnaml.c + +#dnaml: dnaml.o seq.o phylip.o dnaml.c seq.c phylip.c seq.h phylip.h +# $(CC) dnaml.o seq.o phylip.o $(LIBS) -o dnaml + +#dnamlk.o: dnamlk.c seq.h phylip.h +# $(CC) -c dnamlk.c + +#dnamlk: dnamlk.o seq.o phylip.o dnamlk.c seq.c phylip.c +# $(CC) dnamlk.o seq.o phylip.o $(LIBS) -o dnamlk + +#dnamove.o: dnamove.c seq.h moves.h phylip.h +# $(CC) -c dnamove.c + +#dnamove: dnamove.o seq.o moves.o phylip.o dnamove.c seq.c phylip.c seq.h phylip.h +# $(CC) dnamove.o seq.o moves.o phylip.o $(LIBS) -o dnamove + +#dnapenny.o: dnapenny.c seq.h phylip.h +# $(CC) -c dnapenny.c + +#dnapenny: dnapenny.o seq.o phylip.o dnapenny.c seq.c phylip.c seq.h phylip.h +# $(CC) dnapenny.o seq.o phylip.o $(LIBS) -o dnapenny + +#dnapars.o: dnapars.c seq.h phylip.h +# $(CC) -c dnapars.c + +#dnapars: dnapars.o seq.o phylip.o dnapars.c seq.c phylip.c seq.h phylip.h +# $(CC) dnapars.o seq.o phylip.o $(LIBS) -o dnapars + +#dolmove.o: dolmove.c disc.h moves.h dollo.h phylip.h +# $(CC) -c dolmove.c + +#dolmove: dolmove.o disc.o moves.o dollo.o phylip.o dolmove.c disc.c moves.c dollo.c phylip.c disc.h moves.h dollo.h phylip.h +# $(CC) dolmove.o disc.o moves.o dollo.o phylip.o $(LIBS) -o dolmove + +#dollop.o: dollop.c disc.h dollo.h phylip.h +# $(CC) -c dollop.c + +#dollop: dollop.o disc.o dollo.o phylip.o dollop.c disc.c dollo.c phylip.c disc.h dollo.h phylip.h +# $(CC) dollop.o disc.o dollo.o phylip.o $(LIBS) -o dollop + +#dolpenny.o: dolpenny.c disc.h dollo.h phylip.h +# $(CC) -c dolpenny.c + +#dolpenny: dolpenny.o disc.o dollo.o phylip.o dolpenny.c disc.c dollo.c phylip.c disc.h dollo.h phylip.h +# $(CC) dolpenny.o disc.o dollo.o phylip.o $(LIBS) -o dolpenny + +#draw.o: draw.c draw.h phylip.h +# $(DC) -c draw.c + +#draw2.o: draw2.c draw.h phylip.h +# $(DC) -c draw2.c + +#drawgram.o: drawgram.c draw.h phylip.h +# $(DC) -c drawgram.c + +#drawgram: drawgram.o draw.o draw2.o phylip.o drawgram.c draw.c draw2.c draw.h phylip.h +# $(DC) $(DLIBS) draw.o draw2.o drawgram.o phylip.o $(LIBS) -o drawgram + +#drawtree.o: drawtree.c draw.h phylip.h +# $(DC) -c drawtree.c + +#drawtree: drawtree.o draw.o draw2.o phylip.o drawtree.c draw.c draw2.c draw.h phylip.h +# $(DC) $(DLIBS) draw.o draw2.o drawtree.o phylip.o $(LIBS) -o drawtree + +#factor.o: factor.c phylip.h +# $(CC) -c factor.c + +#factor: factor.o phylip.o factor.c phylip.c phylip.h +# $(CC) factor.o phylip.o $(LIBS) -o factor + +fitch.o: fitch.c dist.h phylip.h + $(CC) -c fitch.c + +fitch: fitch.o dist.o phylip.o fitch.c dist.c phylip.c dist.h phylip.h + $(CC) fitch.o dist.o phylip.o $(LIBS) -o fitch + +#gendist.o: gendist.c phylip.h +# $(CC) -c gendist.c + +#gendist: gendist.o phylip.o gendist.c phylip.c phylip.h +# $(CC) gendist.o phylip.o $(LIBS) -o gendist + +#kitsch.o: kitsch.c dist.h phylip.h +# $(CC) -c kitsch.c + +#kitsch: kitsch.o dist.o phylip.o kitsch.c dist.c phylip.c dist.h phylip.h +# $(CC) kitsch.o dist.o phylip.o $(LIBS) -o kitsch + +#mix.o: mix.c disc.h wagner.h phylip.h +# $(CC) -c mix.c + +#mix: mix.o disc.o wagner.o phylip.o mix.c disc.c wagner.c phylip.c disc.h wagner.h phylip.h +# $(CC) mix.o disc.o wagner.o phylip.o $(LIBS) -o mix + +#move.o: move.c disc.h moves.h wagner.h phylip.h +# $(CC) -c move.c + +#move: move.o disc.o moves.o wagner.o phylip.o move.c disc.c moves.c wagner.c phylip.c disc.h moves.h wagner.h phylip.h +# $(CC) move.o disc.o moves.o wagner.o phylip.o $(LIBS) -o move + +neighbor.o: neighbor.c dist.h phylip.h + $(CC) -c neighbor.c + +neighbor: neighbor.o dist.o phylip.o neighbor.c dist.c phylip.c dist.h phylip.h + $(CC) neighbor.o dist.o phylip.o $(LIBS) -o neighbor + +#pars.o: pars.c discrete.h phylip.h +# $(CC) -c pars.c + +#pars: pars.o pars.c discrete.o discrete.c phylip.o phylip.c discrete.h phylip.h +# $(CC) pars.o discrete.o phylip.o $(LIBS) -o pars + +#penny.o: penny.c disc.h wagner.h phylip.h +# $(CC) -c penny.c + +#penny: penny.o disc.o wagner.o phylip.o penny.c disc.c wagner.c disc.h wagner.h phylip.h +# $(CC) penny.o disc.o wagner.o phylip.o $(LIBS) -o penny + +proml.o: proml.c seq.h phylip.h + $(CC) -c proml.c + +proml: proml.o seq.o phylip.o proml.c seq.c phylip.c seq.h phylip.h + $(CC) proml.o seq.o phylip.o $(LIBS) -o proml + +promlk.o: promlk.c seq.h phylip.h + $(CC) -c promlk.c + +promlk: promlk.o seq.o phylip.o promlk.c seq.c phylip.c + $(CC) promlk.o seq.o phylip.o $(LIBS) -o promlk + +protdist.o: protdist.c seq.h phylip.h + $(CC) -c protdist.c + +protdist: protdist.o seq.o phylip.o protdist.c seq.c phylip.c seq.h phylip.h + $(CC) protdist.o seq.o phylip.o $(LIBS) -o protdist + +protpars.o: protpars.c seq.h phylip.h + $(CC) -c protpars.c + +protpars: protpars.o seq.o phylip.o protpars.c seq.c phylip.c seq.h phylip.h + $(CC) protpars.o seq.o phylip.o $(LIBS) -o protpars + +#restdist.o: restdist.c seq.h phylip.h +# $(CC) -c restdist.c + +#restdist: restdist.o seq.o phylip.o restdist.c seq.c phylip.c seq.h phylip.h +# $(CC) restdist.o seq.o phylip.o $(LIBS) -o restdist + +#restml.o: restml.c seq.h phylip.h +# $(CC) -c restml.c + +#restml: restml.o seq.o phylip.o restml.c seq.c phylip.c seq.h phylip.h +# $(CC) restml.o seq.o phylip.o $(LIBS) -o restml + +#retree.o: retree.c moves.h phylip.h +# $(CC) -c retree.c + +#retree: retree.o moves.o phylip.o retree.c moves.c phylip.c moves.h phylip.h +# $(CC) retree.o moves.o phylip.o $(LIBS) -o retree + +seqboot.o: seqboot.c phylip.h + $(CC) -c seqboot.c + +seqboot: seqboot.o seq.o phylip.o seqboot.c seq.c phylip.c seq.h phylip.h + $(CC) seqboot.o seq.o phylip.o $(LIBS) -o seqboot + +#treedist.o: treedist.c cons.h phylip.h +# $(CC) -c treedist.c + +#treedist: treedist.o phylip.o cons.o +# $(CC) treedist.o cons.o phylip.o $(LIBS) -o treedist diff --git a/forester/archive/RIO/others/phylip_mod/src/cons.c b/forester/archive/RIO/others/phylip_mod/src/cons.c new file mode 100644 index 0000000..2fa7c4d --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/cons.c @@ -0,0 +1,1457 @@ +#include "phylip.h" +#include "cons.h" + +int tree_pairing; + +Char outfilename[FNMLNGTH], intreename[FNMLNGTH], intree2name[FNMLNGTH], outtreename[FNMLNGTH]; +node *root; + +long numopts, outgrno, col, setsz; +long maxgrp; /* max. no. of groups in all trees found */ + +boolean trout, firsttree, noroot, outgropt, didreroot, prntsets, + progress, treeprint, goteof, strict, mr=false, mre=false, + ml=false; /* initialized all false for Treedist */ +pointarray nodep; +pointarray treenode; +group_type **grouping, **grping2, **group2;/* to store groups found */ +double *lengths, *lengths2; +long **order, **order2, lasti; +group_type *fullset; +node *grbg; +long tipy; + +double **timesseen, **tmseen2, **times2 ; +double trweight, ntrees, mlfrac; + +/* prototypes */ +void censor(void); +boolean compatible(long, long); +void elimboth(long); +void enternohash(group_type*, long*); +void enterpartition (group_type*, long*); +void reorient(node* n); + +/* begin hash table code */ + +#define NUM_BUCKETS 100 + +typedef struct namenode { + struct namenode *next; + plotstring naym; + int hitCount; +} namenode; + +typedef namenode **hashtype; + +hashtype hashp; + +long namesGetBucket(plotstring); +void namesAdd(plotstring); +boolean namesSearch(plotstring); +void namesDelete(plotstring); +void namesClearTable(void); +void namesCheckTable(void); +void missingnameRecurs(node *p); + +/** + * namesGetBucket - return the bucket for a given name + */ +long namesGetBucket(plotstring searchname) { + long i; + long sum = 0; + + for (i = 0; (i < MAXNCH) && (searchname[i] != '\0'); i++) { + sum += searchname[i]; + } + return (sum % NUM_BUCKETS); +} + + +/** + * namesAdd - add a name to the hash table + * + * The argument is added at the head of the appropriate linked list. No + * checking is done for duplicates. The caller can call + * namesSearch to check for an existing name prior to calling + * namesAdd. + */ +void namesAdd(plotstring addname) { + long bucket = namesGetBucket(addname); + namenode *hp, *temp; + + temp = hashp[bucket]; + hashp[bucket] = (namenode *)Malloc(sizeof(namenode)); + hp = hashp[bucket]; + strcpy(hp->naym, addname); + hp->next = temp; + hp->hitCount = 0; +} + +/** + * namesSearch - search for a name in the hash table + * + * Return true if the name is found, else false. + */ +boolean namesSearch(plotstring searchname) { + long i = namesGetBucket(searchname); + namenode *p; + + p = hashp[i]; + if (p == NULL) { + return false; + } + do { + if (strcmp(searchname,p->naym) == 0) { + p->hitCount++; + return true; + } + p = p->next; + } while (p != NULL); + + return false; +} + +/** + * Go through hash table and check that the hit count on all entries is one. + * If it is zero, then a species was missed, if it is two, then there is a + * duplicate species. + */ + +void namesCheckTable(void) { + namenode *p; + long i; + + for (i=0; i< NUM_BUCKETS; i++) { + p = hashp[i]; + while (p != NULL){ + if(p->hitCount >1){ + printf("\n\nERROR in user tree: duplicate name found: "); + puts(p->naym); + printf("\n\n"); + exxit(-1); + } else if(p->hitCount == 0){ + printf("\n\nERROR in user tree: name %s not found\n\n\n", + p->naym); + exxit(-1); + } + p->hitCount = 0; + p = p->next; + } + } +} + +/** + * namesClearTable - empty names out of the table and + * return allocated memory + */ +void namesClearTable(void) { + long i; + namenode *p, *temp; + + for (i=0; i< NUM_BUCKETS; i++) { + p = hashp[i]; + if (p != NULL) { + do { + temp = p; + p = p->next; + free(temp); + } while (p != NULL); + hashp[i] = NULL; + } + } +} +/* end hash table code */ + +void initconsnode(node **p, node **grbg, node *q, long len, long nodei, + long *ntips, long *parens, initops whichinit, + pointarray treenode, pointarray nodep, Char *str, + Char *ch, FILE *intree) +{ + /* initializes a node */ + long i; + char c; + boolean minusread; + double valyew, divisor, fracchange; + + switch (whichinit) { + case bottom: + gnu(grbg, p); + (*p)->index = nodei; + (*p)->tip = false; + for (i=0; inayme[i] = '\0'; + nodep[(*p)->index - 1] = (*p); + (*p)->v = 0; + break; + case nonbottom: + gnu(grbg, p); + (*p)->index = nodei; + (*p)->v = 0; + break; + case tip: + (*ntips)++; + gnu(grbg, p); + nodep[(*ntips) - 1] = *p; + setupnode(*p, *ntips); + (*p)->tip = true; + strncpy ((*p)->nayme, str, MAXNCH); + if (firsttree && prntsets) { + fprintf(outfile, " %ld. ", *ntips); + for (i = 0; i < len; i++) + putc(str[i], outfile); + putc('\n', outfile); + if ((*ntips > 0) && (((*ntips) % 10) == 0)) + putc('\n', outfile); + } + (*p)->v = 0; + break; + case length: + processlength(&valyew, &divisor, ch, &minusread, intree, parens); + fracchange = 1.0; + (*p)->v = valyew / divisor / fracchange; + break; + case treewt: + if (!eoln(intree)) { + fscanf(intree, "%lf", &trweight); + getch(ch, parens, intree); + if (*ch != ']') { + printf("\n\nERROR: Missing right square bracket\n\n"); + exxit(-1); + } else { + getch(ch, parens, intree); + if (*ch != ';') { + printf("\n\nERROR: Missing semicolon after square brackets\n\n"); + exxit(-1); + } + } + } + break; + case unittrwt: + /* This comes not only when setting trweight but also at the end of + * any tree. The following code saves the current position in a + * file and reads to a new line. If there is a new line then we're + * at the end of tree, otherwise warn the user. This function should + * really leave the file alone, so once we're done with 'intree' + * we seek the position back so that it doesn't look like we did + * anything */ + trweight = 1.0 ; + i = ftell (intree); + c = ' '; + while (c == ' ') { + if (eoff(intree)) { + fseek(intree,i,SEEK_SET); + return; + } + c = gettc(intree); + } + fseek(intree,i,SEEK_SET); + if ( c != '\n' && c!= '\r') + printf("WARNING: Tree weight set to 1.0\n"); + if ( c == '\r' ) + if ( (c == gettc(intree)) != '\n') + ungetc(c, intree); + break; + case hsnolength: + (*p)->v = -1; /* signal value that a length is missing */ + break; + default: /* cases hslength, iter, hsnolength */ + break; /* should there be an error message here?*/ + } +} /* initconsnode */ + + +void censor(void) +{ + /* delete groups that are too rare to be in the consensus tree */ + long i; + + i = 1; + do { + if (timesseen[i-1]) + if (!(mre || (mr && (2*(*timesseen[i-1]) > ntrees)) + || (ml && ((*timesseen[i-1]) > mlfrac*ntrees)) + || (strict && ((*timesseen[i-1]) == ntrees)))) { + free(grouping[i - 1]); + free(timesseen[i - 1]); + grouping[i - 1] = NULL; + timesseen[i - 1] = NULL; + } + i++; + } while (i < maxgrp); +} /* censor */ + + +void compress(long *n) +{ + /* push all the nonempty subsets to the front end of their array */ + long i, j; + + i = 1; + j = 1; + do { + while (grouping[i - 1] != NULL) + i++; + if (j <= i) + j = i + 1; + while ((grouping[j - 1] == NULL) && (j < maxgrp)) + j++; + if (j < maxgrp) { + grouping[i - 1] = (group_type *)Malloc(setsz * sizeof(group_type)); + timesseen[i - 1] = (double *)Malloc(sizeof(double)); + memcpy(grouping[i - 1], grouping[j - 1], setsz * sizeof(group_type)); + *timesseen[i - 1] = *timesseen[j - 1]; + free(grouping[j - 1]); + free(timesseen[j - 1]); + grouping[j - 1] = NULL; + timesseen[j - 1] = NULL; + } + } while (j != maxgrp); + (*n) = i - 1; +} /* compress */ + + +void sort(long n) +{ + /* Shell sort keeping grouping, timesseen in same order */ + long gap, i, j; + group_type *stemp; + double rtemp; + + gap = n / 2; + stemp = (group_type *)Malloc(setsz * sizeof(group_type)); + while (gap > 0) { + for (i = gap + 1; i <= n; i++) { + j = i - gap; + while (j > 0) { + if (*timesseen[j - 1] < *timesseen[j + gap - 1]) { + memcpy(stemp, grouping[j - 1], setsz * sizeof(group_type)); + memcpy(grouping[j - 1], grouping[j + gap - 1], setsz * sizeof(group_type)); + memcpy(grouping[j + gap - 1], stemp, setsz * sizeof(group_type)); + rtemp = *timesseen[j - 1]; + *timesseen[j - 1] = *timesseen[j + gap - 1]; + *timesseen[j + gap - 1] = rtemp; + } + j -= gap; + } + } + gap /= 2; + } + free(stemp); +} /* sort */ + + +boolean compatible(long i, long j) +{ + /* are groups i and j compatible? */ + boolean comp; + long k; + + comp = true; + for (k = 0; k < setsz; k++) + if ((grouping[i][k] & grouping[j][k]) != 0) + comp = false; + if (!comp) { + comp = true; + for (k = 0; k < setsz; k++) + if ((grouping[i][k] & ~grouping[j][k]) != 0) + comp = false; + if (!comp) { + comp = true; + for (k = 0; k < setsz; k++) + if ((grouping[j][k] & ~grouping[i][k]) != 0) + comp = false; + if (!comp) { + comp = noroot; + if (comp) { + for (k = 0; k < setsz; k++) + if ((fullset[k] & ~grouping[i][k] & ~grouping[j][k]) != 0) + comp = false; + } + } + } + } + return comp; +} /* compatible */ + + +void eliminate(long *n, long *n2) +{ + /* eliminate groups incompatible with preceding ones */ + long i, j, k; + boolean comp; + + for (i = 2; i <= (*n); i++) { + comp = true; + for (j = 0; comp && (j <= i - 2); j++) { + if ((timesseen[j] != NULL) && *timesseen[j] > 0) { + comp = compatible(i-1,j); + if (!comp) { + (*n2)++; + times2[(*n2) - 1] = (double *)Malloc(sizeof(double)); + group2[(*n2) - 1] = (group_type *)Malloc(setsz * sizeof(group_type)); + *times2[(*n2) - 1] = *timesseen[i - 1]; + memcpy(group2[(*n2) - 1], grouping[i - 1], setsz * sizeof(group_type)); + *timesseen[i - 1] = 0.0; + for (k = 0; k < setsz; k++) + grouping[i - 1][k] = 0; + } + } + } + if (*timesseen[i - 1] == 0.0) { + free(grouping[i - 1]); + free(timesseen[i - 1]); + timesseen[i - 1] = NULL; + grouping[i - 1] = NULL; + } + } +} /* eliminate */ + + +void printset(long n) +{ + /* print out the n sets of species */ + long i, j, k, size; + boolean noneprinted; + + fprintf(outfile, "\nSet (species in order) "); + for (i = 1; i <= spp - 25; i++) + putc(' ', outfile); + fprintf(outfile, " How many times out of %7.2f\n\n", ntrees); + noneprinted = true; + for (i = 0; i < n; i++) { + if ((timesseen[i] != NULL) && (*timesseen[i] > 0)) { + size = 0; + k = 0; + for (j = 1; j <= spp; j++) { + if (j == ((k+1)*SETBITS+1)) k++; + if (((1L << (j - 1 - k*SETBITS)) & grouping[i][k]) != 0) + size++; + } + if (size != 1 && !(noroot && size >= (spp-1))) { + noneprinted = false; + k = 0; + for (j = 1; j <= spp; j++) { + if (j == ((k+1)*SETBITS+1)) k++; + if (((1L << (j - 1 - k*SETBITS)) & grouping[i][k]) != 0) + putc('*', outfile); + else + putc('.', outfile); + if (j % 10 == 0) + putc(' ', outfile); + } + for (j = 1; j <= 23 - spp; j++) + putc(' ', outfile); + fprintf(outfile, " %5.2f\n", *timesseen[i]); + } + } + } + if (noneprinted) + fprintf(outfile, " NONE\n"); +} /* printset */ + + +void bigsubset(group_type *st, long n) +{ + /* Find a maximal subset of st among the n groupings, + to be the set at the base of the tree. */ + long i, j; + group_type *su; + boolean max, same; + + su = (group_type *)Malloc(setsz * sizeof(group_type)); + for (i = 0; i < setsz; i++) + su[i] = 0; + for (i = 0; i < n; i++) { + max = true; + for (j = 0; j < setsz; j++) + if ((grouping[i][j] & ~st[j]) != 0) + max = false; + if (max) { + same = true; + for (j = 0; j < setsz; j++) + if (grouping[i][j] != st[j]) + same = false; + max = !same; + } + if (max) { + for (j = 0; j < setsz; j ++) + if ((su[j] & ~grouping[i][j]) != 0) + max = false; + if (max) { + same = true; + for (j = 0; j < setsz; j ++) + if (su[j] != grouping[i][j]) + same = false; + max = !same; + } + if (max) + memcpy(su, grouping[i], setsz * sizeof(group_type)); + } + } + memcpy(st, su, setsz * sizeof(group_type)); + free(su); +} /* bigsubset */ + + +void recontraverse(node **p, group_type *st, long n, long *nextnode) +{ + /* traverse to add next node to consensus tree */ + long i, j = 0, k = 0, l = 0; + + boolean found, same = 0, zero, zero2; + group_type *tempset, *st2; + node *q, *r; + + for (i = 1; i <= spp; i++) { /* count species in set */ + if (i == ((l+1)*SETBITS+1)) l++; + if (((1L << (i - 1 - l*SETBITS)) & st[l]) != 0) { + k++; /* k is the number of species in the set */ + j = i; /* j is set to last species in the set */ + } + } + if (k == 1) { /* if only 1, set up that tip */ + *p = nodep[j - 1]; + (*p)->tip = true; + (*p)->index = j; + return; + } + gnu(&grbg, p); /* otherwise make interior node */ + (*p)->tip = false; + (*p)->index = *nextnode; + nodep[*nextnode - 1] = *p; + (*nextnode)++; + (*p)->deltav = 0.0; + for (i = 0; i < n; i++) { /* go through all sets */ + same = true; /* to find one which is this one */ + for (j = 0; j < setsz; j++) + if (grouping[i][j] != st[j]) + same = false; + if (same) + (*p)->deltav = *timesseen[i]; + } + tempset = (group_type *)Malloc(setsz * sizeof(group_type)); + memcpy(tempset, st, setsz * sizeof(group_type)); + q = *p; + st2 = (group_type *)Malloc(setsz * sizeof(group_type)); + memcpy(st2, st, setsz * sizeof(group_type)); + zero = true; /* having made two copies of the set ... */ + for (j = 0; j < setsz; j++) /* see if they are empty */ + if (tempset[j] != 0) + zero = false; + if (!zero) + bigsubset(tempset, n); /* find biggest set within it */ + zero = zero2 = false; /* ... tempset is that subset */ + while (!zero && !zero2) { + zero = zero2 = true; + for (j = 0; j < setsz; j++) { + if (st2[j] != 0) + zero = false; + if (tempset[j] != 0) + zero2 = false; + } + if (!zero && !zero2) { + gnu(&grbg, &q->next); + q->next->index = q->index; + q = q->next; + q->tip = false; + r = *p; + recontraverse(&q->back, tempset, n, nextnode); /* put it on tree */ + *p = r; + q->back->back = q; + for (j = 0; j < setsz; j++) + st2[j] &= ~tempset[j]; /* remove that subset from the set */ + memcpy(tempset, st2, setsz * sizeof(group_type)); /* that becomes set */ + found = false; + i = 1; + while (!found && i <= n) { + if (grouping[i - 1] != 0) { + same = true; + for (j = 0; j < setsz; j++) + if (grouping[i - 1][j] != tempset[j]) + same = false; + } + if ((grouping[i - 1] != 0) && same) + found = true; + else + i++; + } + zero = true; + for (j = 0; j < setsz; j++) + if (tempset[j] != 0) + zero = false; + if (!zero && !found) + bigsubset(tempset, n); + } + } + q->next = *p; + free(tempset); + free(st2); +} /* recontraverse */ + + +void reconstruct(long n) +{ + /* reconstruct tree from the subsets */ + long nextnode; + group_type *s; + + nextnode = spp + 1; + s = (group_type *)Malloc(setsz * sizeof(group_type)); + memcpy(s, fullset, setsz * sizeof(group_type)); + recontraverse(&root, s, n, &nextnode); + free(s); +} /* reconstruct */ + + +void coordinates(node *p, long *tipy) +{ + /* establishes coordinates of nodes */ + node *q, *first, *last; + long maxx; + + if (p->tip) { + p->xcoord = 0; + p->ycoord = *tipy; + p->ymin = *tipy; + p->ymax = *tipy; + (*tipy) += down; + return; + } + q = p->next; + maxx = 0; + while (q != p) { + coordinates(q->back, tipy); + if (!q->back->tip) { + if (q->back->xcoord > maxx) + maxx = q->back->xcoord; + } + q = q->next; + } + first = p->next->back; + q = p; + while (q->next != p) + q = q->next; + last = q->back; + p->xcoord = maxx + OVER; + p->ycoord = (long)((first->ycoord + last->ycoord) / 2); + p->ymin = first->ymin; + p->ymax = last->ymax; +} /* coordinates */ + + +void drawline(long i) +{ + /* draws one row of the tree diagram by moving up tree */ + node *p, *q; + long n, j; + boolean extra, done, trif; + node *r, *first = NULL, *last = NULL; + boolean found; + + p = root; + q = root; + fprintf(outfile, " "); + extra = false; + trif = false; + do { + if (!p->tip) { + found = false; + r = p->next; + while (r != p && !found) { + if (i >= r->back->ymin && i <= r->back->ymax) { + q = r->back; + found = true; + } else + r = r->next; + } + first = p->next->back; + r = p; + while (r->next != p) + r = r->next; + last = r->back; + } + done = (p->tip || p == q); + n = p->xcoord - q->xcoord; + if (extra) { + n--; + extra = false; + } + if (q->ycoord == i && !done) { + if (trif) + putc('-', outfile); + else + putc('+', outfile); + trif = false; + if (!q->tip) { + for (j = 1; j <= n - 7; j++) + putc('-', outfile); + if (noroot && (root->next->next->next == root) && + (((root->next->back == q) && root->next->next->back->tip) + || ((root->next->next->back == q) && root->next->back->tip))) + fprintf(outfile, "------|"); + else { + if (!strict) { /* write number of times seen */ + if (q->deltav >= 100) + fprintf(outfile, "%5.1f-|", (double)q->deltav); + else if (q->deltav >= 10) + fprintf(outfile, "-%4.1f-|", (double)q->deltav); + else + fprintf(outfile, "--%3.1f-|", (double)q->deltav); + } else + fprintf(outfile, "------|"); + } + extra = true; + trif = true; + } else { + for (j = 1; j < n; j++) + putc('-', outfile); + } + } else if (!p->tip && last->ycoord > i && first->ycoord < i && + (i != p->ycoord || p == root)) { + putc('|', outfile); + for (j = 1; j < n; j++) + putc(' ', outfile); + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + if (trif) + trif = false; + } + if (q != p) + p = q; + } while (!done); + if (p->ycoord == i && p->tip) { + for (j = 0; (j < MAXNCH) && (p->nayme[j] != '\0'); j++) + putc(p->nayme[j], outfile); + } + putc('\n', outfile); +} /* drawline */ + + +void printree() +{ + /* prints out diagram of the tree */ + long i; + long tipy; + + if (treeprint) { + fprintf(outfile, "\nCONSENSUS TREE:\n"); + if (mr || mre || ml) { + if (noroot) { + fprintf(outfile, "the numbers on the branches indicate the number\n"); + fprintf(outfile, "of times the partition of the species into the two sets\n"); + fprintf(outfile, "which are separated by that branch occurred\n"); + } else { + fprintf(outfile, "the numbers forks indicate the number\n"); + fprintf(outfile, "of times the group consisting of the species\n"); + fprintf(outfile, "which are to the right of that fork occurred\n"); + } + fprintf(outfile, "among the trees, out of %6.2f trees\n", ntrees); + if (ntrees <= 1.001) + fprintf(outfile, "(trees had fractional weights)\n"); + } + tipy = 1; + coordinates(root, &tipy); + putc('\n', outfile); + for (i = 1; i <= tipy - down; i++) + drawline(i); + putc('\n', outfile); + } + if (noroot) { + fprintf(outfile, "\n remember:"); + if (didreroot) + fprintf(outfile, " (though rerooted by outgroup)"); + fprintf(outfile, " this is an unrooted tree!\n"); + } + putc('\n', outfile); +} /* printree */ + + +void enternohash(group_type *s, long *n) +{ + /* if set s is already there, enter it into groupings in the next slot + (without hash-coding). n is number of sets stored there and is updated */ + long i, j; + boolean found; + + found = false; + for (i = 0; i < (*n); i++) { /* go through looking whether it is there */ + found = true; + for (j = 0; j < setsz; j++) { /* check both parts of partition */ + found = found && (grouping[i][j] == s[j]); + found = found && (group2[i][j] == (fullset[j] & (~s[j]))); + } + if (found) + break; + } + if (!found) { /* if not, add it to the slot after the end, + which must be empty */ + grouping[i] = (group_type *)Malloc(setsz * sizeof(group_type)); + timesseen[i] = (double *)Malloc(sizeof(double)); + group2[i] = (group_type *)Malloc(setsz * sizeof(group_type)); + for (j = 0; j < setsz; j++) + grouping[i][j] = s[j]; + *timesseen[i] = 1; + (*n)++; + } +} /* enternohash */ + + +void enterpartition (group_type *s1, long *n) +{ + /* try to put this partition in list of partitions. If implied by others, + don't bother. If others implied by it, replace them. If this one + vacuous because only one element in s1, forget it */ + long i, j; + boolean found; + +/* this stuff all to be rewritten but left here so pieces can be used */ + found = false; + for (i = 0; i < (*n); i++) { /* go through looking whether it is there */ + found = true; + for (j = 0; j < setsz; j++) { /* check both parts of partition */ + found = found && (grouping[i][j] == s1[j]); + found = found && (group2[i][j] == (fullset[j] & (~s1[j]))); + } + if (found) + break; + } + if (!found) { /* if not, add it to the slot after the end, + which must be empty */ + grouping[i] = (group_type *)Malloc(setsz * sizeof(group_type)); + timesseen[i] = (double *)Malloc(sizeof(double)); + group2[i] = (group_type *)Malloc(setsz * sizeof(group_type)); + for (j = 0; j < setsz; j++) + grouping[i][j] = s1[j]; + *timesseen[i] = 1; + (*n)++; + } +} /* enterpartition */ + + +void elimboth(long n) +{ + /* for Adams case: eliminate pairs of groups incompatible with each other */ + long i, j; + boolean comp; + + for (i = 0; i < n-1; i++) { + for (j = i+1; j < n; j++) { + comp = compatible(i,j); + if (!comp) { + *timesseen[i] = 0.0; + *timesseen[j] = 0.0; + } + } + if (*timesseen[i] == 0.0) { + free(grouping[i]); + free(timesseen[i]); + timesseen[i] = NULL; + grouping[i] = NULL; + } + } + if (*timesseen[n-1] == 0.0) { + free(grouping[n-1]); + free(timesseen[n-1]); + timesseen[n-1] = NULL; + grouping[n-1] = NULL; + } +} /* elimboth */ + + +void consensus(pattern_elm ***pattern_array, long trees_in) +{ + long i, n, n2, tipy; + + group2 = (group_type **) Malloc(maxgrp*sizeof(group_type *)); + for (i = 0; i < maxgrp; i++) + group2[i] = NULL; + times2 = (double **)Malloc(maxgrp*sizeof(double *)); + for (i = 0; i < maxgrp; i++) + times2[i] = NULL; + n2 = 0; + censor(); /* drop groups that are too rare */ + compress(&n); /* push everybody to front of array */ + if (!strict) { /* drop those incompatible, if any */ + sort(n); + eliminate(&n, &n2); + compress(&n); + } + reconstruct(n); + tipy = 1; + coordinates(root, &tipy); + if (prntsets) { + fprintf(outfile, "\nSets included in the consensus tree\n"); + printset(n); + for (i = 0; i < n2; i++) { + if (!grouping[i]) { + grouping[i] = (group_type *)Malloc(setsz * sizeof(group_type)); + timesseen[i] = (double *)Malloc(sizeof(double)); + } + memcpy(grouping[i], group2[i], setsz * sizeof(group_type)); + *timesseen[i] = *times2[i]; + } + n = n2; + fprintf(outfile, "\n\nSets NOT included in consensus tree:"); + if (n2 == 0) + fprintf(outfile, " NONE\n"); + else { + putc('\n', outfile); + printset(n); + } + } + putc('\n', outfile); + if (strict) + fprintf(outfile, "\nStrict consensus tree\n"); + if (mre) + fprintf(outfile, "\nExtended majority rule consensus tree\n"); + if (ml) { + fprintf(outfile, "\nM consensus tree (l = %4.2f)\n", mlfrac); + fprintf(outfile, " l\n"); + } + if (mr) + fprintf(outfile, "\nMajority rule consensus tree\n"); + printree(); + free(nayme); + for (i = 0; i < maxgrp; i++) + free(grouping[i]); + free(grouping); + for (i = 0; i < maxgrp; i++) + free(order[i]); + free(order); + for (i = 0; i < maxgrp; i++) + if (timesseen[i] != NULL) + free(timesseen[i]); + free(timesseen); +} /* consensus */ + + +void rehash() +{ + group_type *s; + long i, j, k; + double temp, ss, smult; + boolean done; + + smult = (sqrt(5.0) - 1) / 2; + s = (group_type *)Malloc(setsz * sizeof(group_type)); + for (i = 0; i < maxgrp/2; i++) { + k = *order[i]; + memcpy(s, grouping[k], setsz * sizeof(group_type)); + ss = 0.0; + for (j = 0; j < setsz; j++) + ss += s[j] /* pow(2, SETBITS*j)*/; + temp = ss * smult; + j = (long)(maxgrp * (temp - floor(temp))); + done = false; + while (!done) { + if (!grping2[j]) { + grping2[j] = (group_type *)Malloc(setsz * sizeof(group_type)); + order2[i] = (long *)Malloc(sizeof(long)); + tmseen2[j] = (double *)Malloc(sizeof(double)); + memcpy(grping2[j], grouping[k], setsz * sizeof(group_type)); + *tmseen2[j] = *timesseen[k]; + *order2[i] = j; + grouping[k] = NULL; + timesseen[k] = NULL; + order[i] = NULL; + done = true; + } else { + j++; + if (j >= maxgrp) j -= maxgrp; + } + } + } + free(s); +} /* rehash */ + + +void enternodeset(node* r) +{ /* enter a set of species into the hash table */ + long i, j, start; + double ss, n; + boolean done, same; + double times ; + group_type *s; + + s = r->nodeset; + same = true; + for (i = 0; i < setsz; i++) + if (s[i] != fullset[i]) + same = false; + if (same) + return; + times = trweight; + ss = 0.0; /* compute the hashcode for the set */ + n = ((sqrt(5.0) - 1.0) / 2.0); /* use an irrational multiplier */ + for (i = 0; i < setsz; i++) + ss += s[i] * n; + i = (long)(maxgrp * (ss - floor(ss))) + 1; /* use fractional part of code */ + start = i; + done = false; /* go through seeing if it is there */ + while (!done) { + if (grouping[i - 1]) { /* ... i.e. if group is absent, or */ + same = false; /* (will be false if timesseen = 0) */ + if (!(timesseen[i-1] == 0)) { /* ... if timesseen = 0 */ + same = true; + for (j = 0; j < setsz; j++) { + if (s[j] != grouping[i - 1][j]) + same = false; + } + } + } + if (grouping[i - 1] && same) { /* if it is there, increment timesseen */ + *timesseen[i - 1] += times; + lengths[i - 1] = nodep[r->index - 1]->v; + done = true; + } else if (!grouping[i - 1]) { /* if not there and slot empty ... */ + grouping[i - 1] = (group_type *)Malloc(setsz * sizeof(group_type)); + lasti++; + order[lasti] = (long *)Malloc(sizeof(long)); + timesseen[i - 1] = (double *)Malloc(sizeof(double)); + memcpy(grouping[i - 1], s, setsz * sizeof(group_type)); + *timesseen[i - 1] = times; + *order[lasti] = i - 1; + done = true; + lengths[i - 1] = nodep[r->index -1]->v; + } else { /* otherwise look to put it in next slot ... */ + i++; + if (i > maxgrp) i -= maxgrp; + } + if (!done && i == start) { /* if no place to put it, expand hash table */ + maxgrp = maxgrp*2; + tmseen2 = (double **)Malloc(maxgrp*sizeof(double *)); + for (j = 0; j < maxgrp; j++) + tmseen2[j] = NULL; + grping2 = (group_type **)Malloc(maxgrp*sizeof(group_type *)); + for (j = 0; j < maxgrp; j++) + grping2[j] = NULL; + order2 = (long **)Malloc(maxgrp*sizeof(long *)); + for (j = 0; j < maxgrp; j++) + order2[j] = NULL; + lengths2 = (double *)Malloc(maxgrp*sizeof(double)); + for (j = 0; j < maxgrp; j++) + lengths2[j] = 0.0; + memcpy(lengths2,lengths,maxgrp*sizeof(double) / 2); + rehash(); + free(lengths); + free(timesseen); + free(grouping); + free(order); + timesseen = tmseen2; + grouping = grping2; + lengths = lengths2; + order = order2; + done = true; + lasti = maxgrp/2 - 1; + enternodeset(r); + } + } +} /* enternodeset */ + + +void accumulate(node *r) +{ + node *q; + long i; + + if (r->tip) { + if (!r->nodeset) + r->nodeset = (group_type *)Malloc(setsz * sizeof(group_type)); + for (i = 0; i < setsz; i++) + r->nodeset[i] = 0L; + i = (r->index-1) / (long)SETBITS; + r->nodeset[i] = 1L << (r->index - 1 - i*SETBITS); + } + else { + q = r->next; + while (q != r) { + accumulate(q->back); + q = q->next; + } + q = r->next; + if (!r->nodeset) + r->nodeset = (group_type *)Malloc(setsz * sizeof(group_type)); + for (i = 0; i < setsz; i++) + r->nodeset[i] = 0; + while (q != r) { + for (i = 0; i < setsz; i++) + r->nodeset[i] |= q->back->nodeset[i]; + q = q->next; + } + } + if ((!r->tip && (r->next->next != r)) || r->tip) + enternodeset(r); +} /* accumulate */ + + +void dupname2(Char *name, node *p, node *this) +{ + /* search for a duplicate name recursively */ + node *q; + + if (p->tip) { + if (p != this) { + if (namesSearch(p->nayme)) { + printf("\n\nERROR in user tree: duplicate name found: "); + puts(p->nayme); + printf("\n\n"); + exxit(-1); + } else { + namesAdd(p->nayme); + } + } + } else { + q = p; + while (p->next != q) { + dupname2(name, p->next->back, this); + p = p->next; + } + } +} /* dupname2 */ + + +void dupname(node *p) +{ + /* search for a duplicate name in tree */ + node *q; + + if (p->tip) { + if (namesSearch(p->nayme)) { + printf("\n\nERROR in user tree: duplicate name found: "); + puts(p->nayme); + printf("\n\n"); + exxit(-1); + } else { + namesAdd(p->nayme); + } + } else { + q = p; + while (p->next != q) { + dupname(p->next->back); + p = p->next; + } + } +} /* dupname */ + + +void missingnameRecurs(node *p) +{ + /* search for missing names in first tree */ + node *q; + + if (p->tip) { + if (!namesSearch(p->nayme)) { + printf("\n\nERROR in user tree: name %s not found in first tree\n\n\n", + p->nayme); + exxit(-1); + } + } else { + q = p; + while (p->next != q) { + missingnameRecurs(p->next->back); + p = p->next; + } + } +} /* missingnameRecurs */ + +/** + * wrapper for recursive missingname function + */ +void missingname(node *p){ + missingnameRecurs(p); + namesCheckTable(); +} /* missingname */ + +void gdispose(node *p) +{ + /* go through tree throwing away nodes */ + node *q, *r; + + if (p->tip) { + chuck(&grbg, p); + return; + } + q = p->next; + while (q != p) { + gdispose(q->back); + r = q; + q = q->next; + chuck(&grbg, r); + } + chuck(&grbg, q); +} /* gdispose */ + + +void initreenode(node *p) +{ + /* traverse tree and assign species names to tip nodes */ + node *q; + + if (p->tip) { + memcpy(nayme[p->index - 1], p->nayme, MAXNCH); + } else { + q = p->next; + while (q && q != p) { + initreenode(q->back); + q = q->next; + } + } +} /* initreenode */ + + +void reroot(node *outgroup, long *nextnode) +{ + /* reorients tree, putting outgroup in desired position. */ + long i; + boolean nroot; + node *p, *q; + double newv; + + nroot = false; + p = root->next; + while (p != root) { + if ((outgroup->back == p) && (root->next->next->next == root)) { + nroot = true; + p = root; + } else + p = p->next; + } + if (nroot && root->next->next->next == root) { + root->next->next->back->v += root->next->back->v; + root->next->back->v = 0; + } + if (nroot) return; + + p = root; + i = 0; + while (p->next != root) { + p = p->next; + i++; + } + if (i == 2) { + newv = root->next->back->v + root->next->next->back->v; + root->next->back->back = p->back; + p->back->back = root->next->back; + q = root->next; + p->back->v = newv; + q->back->v = newv; + } else { + p->next = root->next; + nodep[root->index-1] = root->next; + gnu(&grbg, &root->next); + q = root->next; + gnu(&grbg, &q->next); + p = q->next; + p->next = root; + q->tip = false; + p->tip = false; + nodep[*nextnode] = root; + (*nextnode)++; + root->index = *nextnode; + root->next->index = root->index; + root->next->next->index = root->index; + } + newv = outgroup->v; + q->back = outgroup; + p->back = outgroup->back; + outgroup->back->back = p; + outgroup->back = q; + outgroup->v = 0; + outgroup->back->v = 0; + root->v = 0; + p->v = newv; + p->back->v = newv; + reorient(root); +} /* reroot */ + + +void reorient(node* n) { + node* p; + + if ( n->tip ) return; + if ( nodep[n->index - 1] != n ) { + nodep[n->index - 1] = n; + if ( n->back ) + n->v = n->back->v; + } + + for ( p = n->next ; p != n ; p = p->next) + reorient(p->back); +} + + +void store_pattern (pattern_elm ***pattern_array, + double *timesseen_changes, int trees_in_file) +{ + /* put a tree's groups into a pattern array. + Don't forget that when not Adams, grouping[] is not compressed. . . */ + long i, total_groups=0, j=0, k; + + /* First, find out how many groups exist in the given tree. */ + for (i = 0 ; i < maxgrp ; i++) + if ((grouping[i] != NULL) && + (*timesseen[i] > timesseen_changes[i])) + /* If this is group exists and is present in the current tree, */ + total_groups++ ; + + /* Then allocate a space to store the bit patterns. . . */ + for (i = 0 ; i < setsz ; i++) { + pattern_array[i][trees_in_file] + = (pattern_elm *) Malloc(sizeof(pattern_elm)) ; + pattern_array[i][trees_in_file]->apattern = + (group_type *) Malloc (total_groups * sizeof (group_type)) ; + pattern_array[i][trees_in_file]->length = + (double *) Malloc (maxgrp * sizeof (double)) ; + for ( j = 0 ; j < maxgrp ; j++ ) { + pattern_array[i][trees_in_file]->length[j] = -1; + } + pattern_array[i][trees_in_file]->patternsize = (long *)Malloc(sizeof(long)); + } + j = 0; + /* Then go through groupings again, and copy in each element + appropriately. */ + for (i = 0 ; i < maxgrp ; i++) + if (grouping[i] != NULL) { + if (*timesseen[i] > timesseen_changes[i]) { + for (k = 0 ; k < setsz ; k++) + pattern_array[k][trees_in_file]->apattern[j] = grouping[i][k] ; + pattern_array[0][trees_in_file]->length[j] = lengths[i]; + j++ ; + timesseen_changes[i] = *timesseen[i] ; + } + } + *pattern_array[0][trees_in_file]->patternsize = total_groups; +} /* store_pattern */ + + +boolean samename(naym name1, plotstring name2) +{ + return !(strncmp(name1, name2, MAXNCH)); +} /* samename */ + + +void reordertips() +{ + /* matchs tip nodes to species names first read in */ + long i, j; + boolean done; + node *p, *q, *r; + for (i = 0; i < spp; i++) { + j = 0; + done = false; + do { + if (samename(nayme[i], nodep[j]->nayme)) { + done = true; + if (i != j) { + p = nodep[i]; + q = nodep[j]; + r = p->back; + p->back->back = q; + q->back->back = p; + p->back = q->back; + q->back = r; + memcpy(q->nayme, p->nayme, MAXNCH); + memcpy(p->nayme, nayme[i], MAXNCH); + } + } + j++; + } while (j < spp && !done); + } +} /* reordertips */ + + +void read_groups (pattern_elm ****pattern_array,double *timesseen_changes, + long trees_in_1, long total_trees, FILE *intree) +{ + /* read the trees. Accumulate sets. */ + int i, j, k; + boolean haslengths, initial; + long nextnode, trees_read = 0; + + /* set up the groupings array and the timesseen array */ + grouping = (group_type **) Malloc(maxgrp*sizeof(group_type *)); + lengths = (double *) Malloc(maxgrp*sizeof(double)); + for (i = 0; i < maxgrp; i++) + grouping[i] = NULL; + order = (long **) Malloc(maxgrp*sizeof(long *)); + for (i = 0; i < maxgrp; i++) + order[i] = NULL; + timesseen = (double **)Malloc(maxgrp*sizeof(double *)); + for (i = 0; i < maxgrp; i++) + timesseen[i] = NULL; + + firsttree = true; + grbg = NULL; + initial = true; + while (!eoff(intree)) { /* go till end of input tree file */ + for (i = 0; i < maxgrp; i++) { + lengths[i] = -1; + } + goteof = false; + nextnode = 0; + haslengths = true; + allocate_nodep(&nodep, &intree, &spp); + if (firsttree) + nayme = (naym *)Malloc(spp*sizeof(naym)); + treeread(intree, &root, treenode, &goteof, &firsttree, nodep, + &nextnode, &haslengths, &grbg, initconsnode,true,-1); + if (!initial) { + reordertips(); + missingname(root); + } else { + initial = false; + hashp = (hashtype)Malloc(sizeof(namenode) * NUM_BUCKETS); + for (i=0;i= 1); + if (!done1) { + printf("ERROR: Bad outgroup number: %ld\n", outgrno); + printf(" Must be greater than zero\n"); + } + countup(&loopcount2, 10); + } while (done1 != true); + } + break; + + case 'R': + noroot = !noroot; + break; + + case 'T': + initterminal(&ibmpc, &ansi); + break; + + case '1': + prntsets = !prntsets; + break; + + case '2': + progress = !progress; + break; + + case '3': + treeprint = !treeprint; + break; + + case '4': + trout = !trout; + break; + + } + } else + printf("Not a possible option!\n"); + } + countup(&loopcount, 100); + } while (!done); + if (ml) { + do { + printf("\nFraction (l) of times a branch must appear\n"); + scanf("%lf%*[^\n]", &mlfrac); + getchar(); + } while ((mlfrac < 0.5) || (mlfrac > 1.0)); + } +} /* getoptions */ + + +void count_siblings(node **p) +{ + node *tmp_node; + int i; + + if (!(*p)) { + /* This is a leaf, */ + return; + } else { + tmp_node = (*p)->next; + } + + for (i = 0 ; i < 1000; i++) { + if (tmp_node == (*p)) { + /* When we've gone through all the siblings, */ + break; + } else if (tmp_node) { + tmp_node = tmp_node->next; + } else { + /* Should this be executed? */ + return ; + } + } +} /* count_siblings */ + + +void treeout(node *p) +{ + /* write out file with representation of final tree */ + long i, n = 0; + Char c; + node *q; + double x; + + count_siblings (&p); + + if (p->tip) { + /* If we're at a node which is a leaf, figure out how long the + name is and print it out. */ + for (i = 1; i <= MAXNCH; i++) { + if (p->nayme[i - 1] != '\0') + n = i; + } + for (i = 0; i < n; i++) { + c = p->nayme[i]; + if (c == ' ') + c = '_'; + putc(c, outtree); + } + col += n; + } else { + /* If we're at a furcation, print out the proper formatting, loop + through all the children, calling the procedure recursively. */ + putc('(', outtree); + col++; + q = p->next; + while (q != p) { + /* This should terminate when we've gone through all the + siblings, */ + treeout(q->back); + q = q->next; + if (q == p) + break; + putc(',', outtree); + col++; + if (col > 60) { + putc('\n', outtree); + col = 0; + } + } + putc(')', outtree); + col++; + } + + if (p->tip) + x = ntrees; + else + x = (double)p->deltav; + + if (p == root) { + /* When we're all done with this tree, */ + fprintf(outtree, ";\n"); + return; + } + + /* Figure out how many characters the branch length requires: */ + else { + if (!strict) { + if (x >= 100.0) { + fprintf(outtree, ":%5.1f", x); + col += 4; + } else if (x >= 10.0) { + fprintf(outtree, ":%4.1f", x); + col += 3; + } else if (x >= 0.99) { + fprintf(outtree, ":%3.1f", x); + col += 2; + } else { + fprintf(outtree, ":%4.2f", x); + col += 3; + } + } + } +} /* treeout */ + + +int main(int argc, Char *argv[]) +{ + /* Local variables added by Dan F. */ + pattern_elm ***pattern_array; + double *timesseen_changes = NULL; + long trees_in = 0; + long i, j; + node *p, *q; + +#ifdef MAC + argc = 1; /* macsetup("Consense", ""); */ + argv[0] = "Consense"; +#endif + init(argc, argv); + openfile(&intree, INTREE, "input tree file", "r", argv[0], intreename); + openfile(&outfile, OUTFILE, "output file", "w", argv[0], outfilename); + + /* Initialize option-based variables, then ask for changes regarding + their values. */ + getoptions(); + + ntrees = 0.0; + maxgrp = 32767; /* initial size of set hash table */ + lasti = -1; + + if (trout) + openfile(&outtree, OUTTREE, "output tree file", "w", argv[0], outtreename); + if (prntsets) + fprintf(outfile, "Species in order: \n\n"); + + trees_in = countsemic(&intree); + + /* Read the tree file and put together grouping, order, and timesseen */ + read_groups (&pattern_array, timesseen_changes, trees_in, trees_in, intree); + /* Compute the consensus tree. */ + putc('\n', outfile); + nodep = (pointarray)Malloc(2*(1+spp)*sizeof(node *)); + for (i = 0; i < spp; i++) { + nodep[i] = (node *)Malloc(sizeof(node)); + for (j = 0; j < MAXNCH; j++) + nodep[i]->nayme[j] = '\0'; + strncpy(nodep[i]->nayme, nayme[i], MAXNCH); + } + for (i = spp; i < 2*(1+spp); i++) + nodep[i] = NULL; + consensus(pattern_array, trees_in); + printf("\n"); + if (trout) { + treeout(root); + if (progress) + printf("Consensus tree written to file \"%s\"\n\n", outtreename); + } + if (progress) + printf("Output written to file \"%s\"\n\n", outfilename); + for (i = 0; i < spp; i++) + free(nodep[i]); + for (i = spp; i < 2*(1 + spp); i++) { + if (nodep[i] != NULL) { + p = nodep[i]->next; + do { + q = p->next; + free(p); + p = q; + } while (p != nodep[i]); + free(p); + } + } + free(nodep); + FClose(outtree); + FClose(intree); + FClose(outfile); + +#ifdef MAC + fixmacfile(outfilename); + fixmacfile(outtreename); +#endif +printf("Done.\n\n"); + +#ifdef WIN32 + phyRestoreConsoleAttributes(); +#endif + +return 0; +} /* main */ + diff --git a/forester/archive/RIO/others/phylip_mod/src/dist.c b/forester/archive/RIO/others/phylip_mod/src/dist.c new file mode 100644 index 0000000..3500c12 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/dist.c @@ -0,0 +1,526 @@ +#include "phylip.h" +#include "dist.h" + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +void alloctree(pointptr *treenode, long nonodes) +{ + /* allocate treenode dynamically */ + /* used in fitch, kitsch & neighbor */ + long i, j; + node *p, *q; + + *treenode = (pointptr)Malloc(nonodes*sizeof(node *)); + for (i = 0; i < spp; i++) + (*treenode)[i] = (node *)Malloc(sizeof(node)); + for (i = spp; i < nonodes; i++) { + q = NULL; + for (j = 1; j <= 3; j++) { + p = (node *)Malloc(sizeof(node)); + p->next = q; + q = p; + } + p->next->next->next = p; + (*treenode)[i] = p; + } +} /* alloctree */ + + +void freetree(pointptr *treenode, long nonodes) +{ + long i, j; + node *p, *q; + + for (i = 0; i < spp; i++) + free((*treenode)[i]); + for (i = spp; i < nonodes; i++) { + p = (*treenode)[i]; + for (j = 1; j <= 3; j++) { + q = p; + p = p->next; + free(q); + } + } + free(*treenode); +} /* freetree */ + + +void allocd(long nonodes, pointptr treenode) +{ + /* used in fitch & kitsch */ + long i, j; + node *p; + + for (i = 0; i < (spp); i++) { + treenode[i]->d = (vector)Malloc(nonodes*sizeof(double)); + } + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + p->d = (vector)Malloc(nonodes*sizeof(double)); + p = p->next; + } + } +} + + +void freed(long nonodes, pointptr treenode) +{ + /* used in fitch */ + long i, j; + node *p; + + for (i = 0; i < (spp); i++) { + free(treenode[i]->d); + } + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + free(p->d); + p = p->next; + } + } +} + + +void allocw(long nonodes, pointptr treenode) +{ + /* used in fitch & kitsch */ + long i, j; + node *p; + + for (i = 0; i < (spp); i++) { + treenode[i]->w = (vector)Malloc(nonodes*sizeof(double)); + } + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + p->w = (vector)Malloc(nonodes*sizeof(double)); + p = p->next; + } + } +} + + +void freew(long nonodes, pointptr treenode) +{ + /* used in fitch */ + long i, j; + node *p; + + for (i = 0; i < (spp); i++) { + free(treenode[i]->w); + } + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + free(p->w); + p = p->next; + } + } +} + + +void setuptree(tree *a, long nonodes) +{ + /* initialize a tree */ + /* used in fitch, kitsch, & neighbor */ + long i=0; + node *p; + + for (i = 1; i <= nonodes; i++) { + a->nodep[i - 1]->back = NULL; + a->nodep[i - 1]->tip = (i <= spp); + a->nodep[i - 1]->iter = true; + a->nodep[i - 1]->index = i; + a->nodep[i - 1]->t = 0.0; + a->nodep[i - 1]->sametime = false; + a->nodep[i - 1]->v = 0.0; + if (i > spp) { + p = a->nodep[i-1]->next; + while (p != a->nodep[i-1]) { + p->back = NULL; + p->tip = false; + p->iter = true; + p->index = i; + p->t = 0.0; + p->sametime = false; + p = p->next; + } + } + } + a->likelihood = -1.0; + a->start = a->nodep[0]; + a->root = NULL; +} /* setuptree */ + + +void inputdata(boolean replicates, boolean printdata, boolean lower, + boolean upper, vector *x, intvector *reps) +{ + /* read in distance matrix */ + /* used in fitch & neighbor */ + long i=0, j=0, k=0, columns=0; + boolean skipit=false, skipother=false; + + if (replicates) + columns = 4; + else + columns = 6; + if (printdata) { + fprintf(outfile, "\nName Distances"); + if (replicates) + fprintf(outfile, " (replicates)"); + fprintf(outfile, "\n---- ---------"); + if (replicates) + fprintf(outfile, "-------------"); + fprintf(outfile, "\n\n"); + } + for (i = 0; i < spp; i++) { + x[i][i] = 0.0; + scan_eoln(infile); + initname(i); + for (j = 0; j < spp; j++) { + skipit = ((lower && j + 1 >= i + 1) || (upper && j + 1 <= i + 1)); + skipother = ((lower && i + 1 >= j + 1) || (upper && i + 1 <= j + 1)); + if (!skipit) { + if (eoln(infile)) + scan_eoln(infile); + if (fscanf(infile, "%lf", &x[i][j]) != 1) { + printf("The infile is of the wrong type\n"); + exxit(-1); + } + if (replicates) { + if (eoln(infile)) + scan_eoln(infile); + fscanf(infile, "%ld", &reps[i][j]); + } else + reps[i][j] = 1; + } + if (!skipit && skipother) { + x[j][i] = x[i][j]; + reps[j][i] = reps[i][j]; + } + if ((i == j) && (fabs(x[i][j]) > 0.000000001)) { + printf("\nERROR: diagonal element of row %ld of distance matrix ", i+1); + printf("is not zero.\n"); + printf(" Is it a distance matrix?\n\n"); + exxit(-1); + } + if ((j < i) && (fabs(x[i][j]-x[j][i]) > 0.000000001)) { + printf("ERROR: distance matrix is not symmetric:\n"); + printf(" (%ld,%ld) element and (%ld,%ld) element are unequal.\n", + i+1, j+1, j+1, i+1); + printf(" They are %10.6f and %10.6f, respectively.\n", + x[i][j], x[j][i]); + printf(" Is it a distance matrix?\n\n"); + exxit(-1); + } + } + } + scan_eoln(infile); + if (!printdata) + return; + for (i = 0; i < spp; i++) { + for (j = 0; j < nmlngth; j++) + putc(nayme[i][j], outfile); + putc(' ', outfile); + for (j = 1; j <= spp; j++) { + fprintf(outfile, "%10.5f", x[i][j - 1]); + if (replicates) + fprintf(outfile, " (%3ld)", reps[i][j - 1]); + if (j % columns == 0 && j < spp) { + putc('\n', outfile); + for (k = 1; k <= nmlngth + 1; k++) + putc(' ', outfile); + } + } + putc('\n', outfile); + } + putc('\n', outfile); +} /* inputdata */ + + +void coordinates(node *p, double lengthsum, long *tipy, double *tipmax, + node *start, boolean njoin) +{ + /* establishes coordinates of nodes */ + node *q, *first, *last; + + if (p->tip) { + p->xcoord = (long)(over * lengthsum + 0.5); + p->ycoord = *tipy; + p->ymin = *tipy; + p->ymax = *tipy; + (*tipy) += down; + if (lengthsum > *tipmax) + *tipmax = lengthsum; + return; + } + q = p->next; + do { + if (q->back) + coordinates(q->back, lengthsum + q->v, tipy,tipmax, start, njoin); + q = q->next; + } while ((p == start || p != q) && (p != start || p->next != q)); + first = p->next->back; + q = p; + while (q->next != p && q->next->back) /* is this right ? */ + q = q->next; + last = q->back; + p->xcoord = (long)(over * lengthsum + 0.5); + if (p == start && p->back) + p->ycoord = p->next->next->back->ycoord; + else + p->ycoord = (first->ycoord + last->ycoord) / 2; + p->ymin = first->ymin; + p->ymax = last->ymax; +} /* coordinates */ + + +void drawline(long i, double scale, node *start, boolean rooted) +{ + /* draws one row of the tree diagram by moving up tree */ + node *p, *q; + long n=0, j=0; + boolean extra=false, trif=false; + node *r, *first =NULL, *last =NULL; + boolean done=false; + + p = start; + q = start; + extra = false; + trif = false; + if (i == (long)p->ycoord && p == start) { /* display the root */ + if (rooted) { + if (p->index - spp >= 10) + fprintf(outfile, "-"); + else + fprintf(outfile, "--"); + } + else { + if (p->index - spp >= 10) + fprintf(outfile, " "); + else + fprintf(outfile, " "); + } + if (p->index - spp >= 10) + fprintf(outfile, "%2ld", p->index - spp); + else + fprintf(outfile, "%ld", p->index - spp); + extra = true; + trif = true; + } else + fprintf(outfile, " "); + do { + if (!p->tip) { /* internal nodes */ + r = p->next; + /* r->back here is going to the same node. */ + do { + if (!r->back) { + r = r->next; + continue; + } + if (i >= r->back->ymin && i <= r->back->ymax) { + q = r->back; + break; + } + r = r->next; + } while (!((p != start && r == p) || (p == start && r == p->next))); + first = p->next->back; + r = p; + while (r->next != p) + r = r->next; + last = r->back; + if (!rooted && (p == start)) + last = p->back; + } /* end internal node case... */ + /* draw the line: */ + done = (p->tip || p == q); + n = (long)(scale * (q->xcoord - p->xcoord) + 0.5); + if (!q->tip) { + if ((n < 3) && (q->index - spp >= 10)) + n = 3; + if ((n < 2) && (q->index - spp < 10)) + n = 2; + } + if (extra) { + n--; + extra = false; + } + if ((long)q->ycoord == i && !done) { + if (p->ycoord != q->ycoord) + putc('+', outfile); + if (trif) { + n++; + trif = false; + } + if (!q->tip) { + for (j = 1; j <= n - 2; j++) + putc('-', outfile); + if (q->index - spp >= 10) + fprintf(outfile, "%2ld", q->index - spp); + else + fprintf(outfile, "-%ld", q->index - spp); + extra = true; + } else { + for (j = 1; j < n; j++) + putc('-', outfile); + } + } else if (!p->tip) { + if ((long)last->ycoord > i && (long)first->ycoord < i + && i != (long)p->ycoord) { + putc('!', outfile); + for (j = 1; j < n; j++) + putc(' ', outfile); + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + trif = false; + } + } + if (q != p) + p = q; + } while (!done); + if ((long)p->ycoord == i && p->tip) { + for (j = 0; j < nmlngth; j++) + putc(nayme[p->index - 1][j], outfile); + } + putc('\n', outfile); +} /* drawline */ + + +void printree(node *start, boolean treeprint, + boolean njoin, boolean rooted) +{ + /* prints out diagram of the tree */ + /* used in fitch & neighbor */ + long i; + long tipy; + double scale,tipmax; + + if (!treeprint) + return; + putc('\n', outfile); + tipy = 1; + tipmax = 0.0; + coordinates(start, 0.0, &tipy, &tipmax, start, njoin); + scale = 1.0 / (long)(tipmax + 1.000); + for (i = 1; i <= (tipy - down); i++) + drawline(i, scale, start, rooted); + putc('\n', outfile); +} /* printree */ + + +void treeoutr(node *p, long *col, tree *curtree) +{ + /* write out file with representation of final tree. + * Rooted case. Used in kitsch and neighbor. */ + long i, n, w; + Char c; + double x; + + if (p->tip) { + n = 0; + for (i = 1; i <= nmlngth; i++) { + if (nayme[p->index - 1][i - 1] != ' ') + n = i; + } + for (i = 0; i < n; i++) { + c = nayme[p->index - 1][i]; + if (c == ' ') + c = '_'; + putc(c, outtree); + } + (*col) += n; + } else { + putc('(', outtree); + (*col)++; + treeoutr(p->next->back,col,curtree); + putc(',', outtree); + (*col)++; + if ((*col) > 55) { + putc('\n', outtree); + (*col) = 0; + } + treeoutr(p->next->next->back,col,curtree); + putc(')', outtree); + (*col)++; + } + x = p->v; + if (x > 0.0) + w = (long)(0.43429448222 * log(x)); + else if (x == 0.0) + w = 0; + else + w = (long)(0.43429448222 * log(-x)) + 1; + if (w < 0) + w = 0; + if (p == curtree->root) + fprintf(outtree, ";\n"); + else { + fprintf(outtree, ":%*.5f", (int)(w + 7), x); + (*col) += w + 8; + } +} /* treeoutr */ + + +void treeout(node *p, long *col, double m, boolean njoin, node *start) +{ + /* write out file with representation of final tree */ + /* used in fitch & neighbor */ + long i=0, n=0, w=0; + Char c; + double x=0.0; + + if (p->tip) { + n = 0; + for (i = 1; i <= nmlngth; i++) { + if (nayme[p->index - 1][i - 1] != ' ') + n = i; + } + for (i = 0; i < n; i++) { + c = nayme[p->index - 1][i]; + if (c == ' ') + c = '_'; + putc(c, outtree); + } + *col += n; + } else { + putc('(', outtree); + (*col)++; + treeout(p->next->back, col, m, njoin, start); + putc(',', outtree); + (*col)++; + if (*col > 55) { + putc('\n', outtree); + *col = 0; + } + treeout(p->next->next->back, col, m, njoin, start); + if (p == start && njoin) { + putc(',', outtree); + treeout(p->back, col, m, njoin, start); + } + putc(')', outtree); + (*col)++; + } + x = p->v; + if (x > 0.0) + w = (long)(m * log(x)); + else if (x == 0.0) + w = 0; + else + w = (long)(m * log(-x)) + 1; + if (w < 0) + w = 0; + if (p == start) + fprintf(outtree, ";\n"); + else { + fprintf(outtree, ":%*.5f", (int) w + 7, x); + *col += w + 8; + } +} /* treeout */ + diff --git a/forester/archive/RIO/others/phylip_mod/src/dist.h b/forester/archive/RIO/others/phylip_mod/src/dist.h new file mode 100644 index 0000000..574fd1f --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/dist.h @@ -0,0 +1,35 @@ + +/* version 3.6. (c) Copyright 1993-2000 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +/* + dist.h: included in fitch, kitsch, & neighbor +*/ + +#define over 60 + + +typedef long *intvector; + +typedef node **pointptr; + +#ifndef OLDC +/*function prototypes*/ +void alloctree(pointptr *, long); +void freetree(pointptr *, long); +void allocd(long, pointptr); +void freed(long, pointptr); +void allocw(long, pointptr); +void freew(long, pointptr); +void setuptree(tree *, long); +void inputdata(boolean, boolean, boolean, boolean, vector *, intvector *); +void coordinates(node *, double, long *, double *, node *, boolean); +void drawline(long, double, node *, boolean); +void printree(node *, boolean, boolean, boolean); +void treeoutr(node *, long *, tree *); +void treeout(node *, long *, double, boolean, node *); +/*function prototypes*/ +#endif + diff --git a/forester/archive/RIO/others/phylip_mod/src/fitch.c b/forester/archive/RIO/others/phylip_mod/src/fitch.c new file mode 100644 index 0000000..c55d050 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/fitch.c @@ -0,0 +1,1176 @@ + +#include "phylip.h" +#include "dist.h" + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +#define zsmoothings 10 /* number of zero-branch correction iterations */ +#define epsilonf 0.000001 /* a very small but not too small number */ +#define delta 0.0001 /* a not quite so small number */ +#define MAXNUMTREES 100000000 /* a number bigger than conceivable numtrees */ + + +#ifndef OLDC +/* function prototypes */ +void getoptions(void); +void allocrest(void); +void doinit(void); +void inputoptions(void); +void fitch_getinput(void); +void secondtraverse(node *, double , long *, double *); +void firsttraverse(node *, long *, double *); +double evaluate(tree *); +void nudists(node *, node *); +void makedists(node *); + +void makebigv(node *); +void correctv(node *); +void alter(node *, node *); +void nuview(node *); +void update(node *); +void smooth(node *); +void filltraverse(node *, node *, boolean); +void fillin(node *, node *, boolean); +void insert_(node *, node *, boolean); +void copynode(node *, node *); + +void copy_(tree *, tree *); +void setuptipf(long, tree *); +void buildnewtip(long , tree *, long); +void buildsimpletree(tree *, long); +void addtraverse(node *, node *, boolean, long *, boolean *); +void re_move(node **, node **); +void rearrange(node *, long *, long *, boolean *); +void describe(node *); +void summarize(long); +void nodeinit(node *); +void initrav(node *); +void treevaluate(void); +void maketree(void); +void globrearrange(long* numtrees,boolean* succeeded); +/* function prototypes */ +#endif + + + +Char infilename[FNMLNGTH], outfilename[FNMLNGTH], intreename[FNMLNGTH], outtreename[FNMLNGTH]; +long nonodes2, outgrno, nums, col, datasets, ith, njumble, jumb=0; +long inseed; +vector *x; +intvector *reps; +boolean minev, global, jumble, lengths, usertree, lower, upper, negallowed, + outgropt, replicates, trout, printdata, progress, treeprint, + mulsets, firstset; +double power; +double trweight; /* to make treeread happy */ +boolean goteof, haslengths; /* ditto ... */ +boolean first; /* ditto ... */ +node *addwhere; + +longer seed; +long *enterorder; +tree curtree, priortree, bestree, bestree2; +Char ch; +char *progname; + + + +void getoptions() +{ + /* interactively set options */ + long inseed0=0, loopcount; + Char ch; + boolean done=false; + + putchar('\n'); + minev = false; + global = false; + jumble = false; + njumble = 1; + lengths = false; + lower = false; + negallowed = false; + outgrno = 1; + outgropt = false; + power = 2.0; + replicates = false; + trout = true; + upper = false; + usertree = false; + printdata = false; + progress = true; + treeprint = true; + loopcount = 0; + do { + cleerhome(); + printf("\nFitch-Margoliash method version %s\n\n",VERSION); + printf("Settings for this run:\n"); + printf(" D Method (F-M, Minimum Evolution)? %s\n", + (minev ? "Minimum Evolution" : "Fitch-Margoliash")); + printf(" U Search for best tree? %s\n", + (usertree ? "No, use user trees in input file" : "Yes")); + if (usertree) { + printf(" N Use lengths from user trees? %s\n", + (lengths ? "Yes" : "No")); + } + printf(" P Power?%9.5f\n",power); + printf(" - Negative branch lengths allowed? %s\n", + negallowed ? "Yes" : "No"); + printf(" O Outgroup root?"); + if (outgropt) + printf(" Yes, at species number%3ld\n", outgrno); + else + printf(" No, use as outgroup species%3ld\n", outgrno); + printf(" L Lower-triangular data matrix?"); + if (lower) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" R Upper-triangular data matrix?"); + if (upper) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" S Subreplicates?"); + if (replicates) + printf(" Yes\n"); + else + printf(" No\n"); + if (!usertree) { + printf(" G Global rearrangements?"); + if (global) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" J Randomize input order of species?"); + if (jumble) + printf(" Yes (seed =%8ld,%3ld times)\n", inseed0, njumble); + else + printf(" No. Use input order\n"); + } + printf(" M Analyze multiple data sets?"); + if (mulsets) + printf(" Yes, %2ld sets\n", datasets); + else + printf(" No\n"); + printf(" 0 Terminal type (IBM PC, ANSI, none)?"); + if (ibmpc) + printf(" IBM PC\n"); + if (ansi) + printf(" ANSI\n"); + if (!(ibmpc || ansi)) + printf(" (none)\n"); + printf(" 1 Print out the data at start of run"); + if (printdata) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" 2 Print indications of progress of run"); + if (progress) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" 3 Print out tree"); + if (treeprint) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" 4 Write out trees onto tree file?"); + if (trout) + printf(" Yes\n"); + else + printf(" No\n"); + printf( + "\n Y to accept these or type the letter for one to change\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%c%*[^\n]", &ch); + getchar(); + uppercase(&ch); + done = (ch == 'Y'); + if (!done) { + if (strchr("DJOUNPG-LRSM01234",ch) != NULL) { + switch (ch) { + + case 'D': + minev = !minev; + if (minev && (!negallowed)) + negallowed = true; + break; + + case '-': + negallowed = !negallowed; + break; + + case 'G': + global = !global; + break; + + case 'J': + jumble = !jumble; + if (jumble) + initjumble(&inseed, &inseed0, seed, &njumble); + else njumble = 1; + break; + + case 'L': + lower = !lower; + break; + + case 'N': + lengths = !lengths; + break; + + case 'O': + outgropt = !outgropt; + if (outgropt) + initoutgroup(&outgrno, spp); + break; + + case 'P': + initpower(&power); + break; + + case 'R': + upper = !upper; + break; + + case 'S': + replicates = !replicates; + break; + + case 'U': + usertree = !usertree; + break; + + case 'M': + mulsets = !mulsets; + if (mulsets) + initdatasets(&datasets); + jumble = true; + if (jumble) + initseed(&inseed, &inseed0, seed); + break; + + case '0': + initterminal(&ibmpc, &ansi); + break; + + case '1': + printdata = !printdata; + break; + + case '2': + progress = !progress; + break; + + case '3': + treeprint = !treeprint; + break; + + case '4': + trout = !trout; + break; + } + } else + printf("Not a possible option!\n"); + } + countup(&loopcount, 100); + } while (!done); + if (lower && upper) { + printf("ERROR: Data matrix cannot be both uppeR and Lower triangular\n"); + exxit(-1); + } +} /* getoptions */ + + +void allocrest() +{ + long i; + + x = (vector *)Malloc(spp*sizeof(vector)); + reps = (intvector *)Malloc(spp*sizeof(intvector)); + for (i=0;i 1) { + alloctree(&bestree2.nodep, nonodes2); + allocd(nonodes2, bestree2.nodep); + allocw(nonodes2, bestree2.nodep); + } + } + allocrest(); +} /* doinit */ + + +void inputoptions() +{ + /* print options information */ + if (!firstset) + samenumsp2(ith); + fprintf(outfile, "\nFitch-Margoliash method version %s\n\n",VERSION); + if (minev) + fprintf(outfile, "Minimum evolution method option\n\n"); + fprintf(outfile, " __ __ 2\n"); + fprintf(outfile, " \\ \\ (Obs - Exp)\n"); + fprintf(outfile, "Sum of squares = /_ /_ ------------\n"); + fprintf(outfile, " "); + if (power == (long)power) + fprintf(outfile, "%2ld\n", (long)power); + else + fprintf(outfile, "%4.1f\n", power); + fprintf(outfile, " i j Obs\n\n"); + fprintf(outfile, "Negative branch lengths "); + if (!negallowed) + fprintf(outfile, "not "); + fprintf(outfile, "allowed\n\n"); + if (global) + fprintf(outfile, "global optimization\n\n"); +} /* inputoptions */ + + +void fitch_getinput() +{ + /* reads the input data */ + inputoptions(); +} /* fitch_getinput */ + + +void secondtraverse(node *q, double y, long *nx, double *sum) +{ + /* from each of those places go back to all others */ + /* nx comes from firsttraverse */ + /* sum comes from evaluate via firsttraverse */ + double z=0.0, TEMP=0.0; + + z = y + q->v; + if (q->tip) { + TEMP = q->d[(*nx) - 1] - z; + *sum += q->w[(*nx) - 1] * (TEMP * TEMP); + } else { + secondtraverse(q->next->back, z, nx, sum); + secondtraverse(q->next->next->back, z, nx,sum); + } +} /* secondtraverse */ + + +void firsttraverse(node *p, long *nx, double *sum) +{ + /* go through tree calculating branch lengths */ + if (minev && (p != curtree.start)) + *sum += p->v; + if (p->tip) { + if (!minev) { + *nx = p->index; + secondtraverse(p->back, 0.0, nx, sum); + } + } else { + firsttraverse(p->next->back, nx,sum); + firsttraverse(p->next->next->back, nx,sum); + } +} /* firsttraverse */ + + +double evaluate(tree *t) +{ + double sum=0.0; + long nx=0; + /* evaluate likelihood of a tree */ + firsttraverse(t->start->back ,&nx, &sum); + firsttraverse(t->start, &nx, &sum); + if ((!minev) && replicates && (lower || upper)) + sum /= 2; + t->likelihood = -sum; + return (-sum); +} /* evaluate */ + + +void nudists(node *x, node *y) +{ + /* compute distance between an interior node and tips */ + long nq=0, nr=0, nx=0, ny=0; + double dil=0, djl=0, wil=0, wjl=0, vi=0, vj=0; + node *qprime, *rprime; + + qprime = x->next; + rprime = qprime->next->back; + qprime = qprime->back; + ny = y->index; + dil = qprime->d[ny - 1]; + djl = rprime->d[ny - 1]; + wil = qprime->w[ny - 1]; + wjl = rprime->w[ny - 1]; + vi = qprime->v; + vj = rprime->v; + x->w[ny - 1] = wil + wjl; + if (wil + wjl <= 0.0) + x->d[ny - 1] = 0.0; + else + x->d[ny - 1] = ((dil - vi) * wil + (djl - vj) * wjl) / (wil + wjl); + nx = x->index; + nq = qprime->index; + nr = rprime->index; + dil = y->d[nq - 1]; + djl = y->d[nr - 1]; + wil = y->w[nq - 1]; + wjl = y->w[nr - 1]; + y->w[nx - 1] = wil + wjl; + if (wil + wjl <= 0.0) + y->d[nx - 1] = 0.0; + else + y->d[nx - 1] = ((dil - vi) * wil + (djl - vj) * wjl) / (wil + wjl); +} /* nudists */ + + +void makedists(node *p) +{ + /* compute distances among three neighbors of a node */ + long i=0, nr=0, ns=0; + node *q, *r, *s; + + r = p->back; + nr = r->index; + for (i = 1; i <= 3; i++) { + q = p->next; + s = q->back; + ns = s->index; + if (s->w[nr - 1] + r->w[ns - 1] <= 0.0) + p->dist = 0.0; + else + p->dist = (s->w[nr - 1] * s->d[nr - 1] + r->w[ns - 1] * r->d[ns - 1]) / + (s->w[nr - 1] + r->w[ns - 1]); + p = q; + r = s; + nr = ns; + } +} /* makedists */ + + +void makebigv(node *p) +{ + /* make new branch length */ + long i=0; + node *temp, *q, *r; + + q = p->next; + r = q->next; + for (i = 1; i <= 3; i++) { + if (p->iter) { + p->v = (p->dist + r->dist - q->dist) / 2.0; + p->back->v = p->v; + } + temp = p; + p = q; + q = r; + r = temp; + } +} /* makebigv */ + + +void correctv(node *p) +{ + /* iterate branch lengths if some are to be zero */ + node *q, *r, *temp; + long i=0, j=0, n=0, nq=0, nr=0, ntemp=0; + double wq=0.0, wr=0.0; + + q = p->next; + r = q->next; + n = p->back->index; + nq = q->back->index; + nr = r->back->index; + for (i = 1; i <= zsmoothings; i++) { + for (j = 1; j <= 3; j++) { + if (p->iter) { + wr = r->back->w[n - 1] + p->back->w[nr - 1]; + wq = q->back->w[n - 1] + p->back->w[nq - 1]; + if (wr + wq <= 0.0 && !negallowed) + p->v = 0.0; + else + p->v = ((p->dist - q->v) * wq + (r->dist - r->v) * wr) / (wr + wq); + if (p->v < 0 && !negallowed) + p->v = 0.0; + p->back->v = p->v; + } + temp = p; + p = q; + q = r; + r = temp; + ntemp = n; + n = nq; + nq = nr; + nr = ntemp; + } + } +} /* correctv */ + + +void alter(node *x, node *y) +{ + /* traverse updating these views */ + nudists(x, y); + if (!y->tip) { + alter(x, y->next->back); + alter(x, y->next->next->back); + } +} /* alter */ + + +void nuview(node *p) +{ + /* renew information about subtrees */ + long i=0; + node *q, *r, *pprime, *temp; + + q = p->next; + r = q->next; + for (i = 1; i <= 3; i++) { + temp = p; + pprime = p->back; + alter(p, pprime); + p = q; + q = r; + r = temp; + } +} /* nuview */ + + +void update(node *p) +{ + /* update branch lengths around a node */ + + if (p->tip) + return; + makedists(p); + if (p->iter || p->next->iter || p->next->next->iter) { + makebigv(p); + correctv(p); + } + nuview(p); +} /* update */ + + +void smooth(node *p) +{ + /* go through tree getting new branch lengths and views */ + if (p->tip) + return; + update(p); + smooth(p->next->back); + smooth(p->next->next->back); +} /* smooth */ + + +void filltraverse(node *pb, node *qb, boolean contin) +{ + if (qb->tip) + return; + if (contin) { + filltraverse(pb, qb->next->back,contin); + filltraverse(pb, qb->next->next->back,contin); + nudists(qb, pb); + return; + } + if (!qb->next->back->tip) + nudists(qb->next->back, pb); + if (!qb->next->next->back->tip) + nudists(qb->next->next->back, pb); +} /* filltraverse */ + + +void fillin(node *pa, node *qa, boolean contin) +{ + if (!pa->tip) { + fillin(pa->next->back, qa, contin); + fillin(pa->next->next->back, qa, contin); + } + filltraverse(pa, qa, contin); +} /* fillin */ + + +void insert_(node *p, node *q, boolean contin_) +{ + /* put p and q together and iterate info. on resulting tree */ + double x=0.0, oldlike; + hookup(p->next->next, q->back); + hookup(p->next, q); + x = q->v / 2.0; + p->v = 0.0; + p->back->v = 0.0; + p->next->v = x; + p->next->back->v = x; + p->next->next->back->v = x; + p->next->next->v = x; + fillin(p->back, p, contin_); + evaluate(&curtree); + do { + oldlike = curtree.likelihood; + smooth(p); + smooth(p->back); + evaluate(&curtree); + } while (fabs(curtree.likelihood - oldlike) > delta); +} /* insert_ */ + + +void copynode(node *c, node *d) +{ + /* make a copy of a node */ + + memcpy(d->d, c->d, nonodes2*sizeof(double)); + memcpy(d->w, c->w, nonodes2*sizeof(double)); + d->v = c->v; + d->iter = c->iter; + d->dist = c->dist; + d->xcoord = c->xcoord; + d->ycoord = c->ycoord; + d->ymin = c->ymin; + d->ymax = c->ymax; +} /* copynode */ + + +void copy_(tree *a, tree *b) +{ + /* make copy of a tree a to tree b */ + long i, j=0; + node *p, *q; + + for (i = 0; i < spp; i++) { + copynode(a->nodep[i], b->nodep[i]); + if (a->nodep[i]->back) { + if (a->nodep[i]->back == a->nodep[a->nodep[i]->back->index - 1]) + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]; + else if (a->nodep[i]->back + == a->nodep[a->nodep[i]->back->index - 1]->next) + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]->next; + else + b->nodep[i]->back + = b->nodep[a->nodep[i]->back->index - 1]->next->next; + } + else b->nodep[i]->back = NULL; + } + for (i = spp; i < nonodes2; i++) { + p = a->nodep[i]; + q = b->nodep[i]; + for (j = 1; j <= 3; j++) { + copynode(p, q); + if (p->back) { + if (p->back == a->nodep[p->back->index - 1]) + q->back = b->nodep[p->back->index - 1]; + else if (p->back == a->nodep[p->back->index - 1]->next) + q->back = b->nodep[p->back->index - 1]->next; + else + q->back = b->nodep[p->back->index - 1]->next->next; + } + else + q->back = NULL; + p = p->next; + q = q->next; + } + } + b->likelihood = a->likelihood; + b->start = a->start; +} /* copy_ */ + + +void setuptipf(long m, tree *t) +{ + /* initialize branch lengths and views in a tip */ + long i=0; + intvector n=(long *)Malloc(spp * sizeof(long)); + node *WITH; + + WITH = t->nodep[m - 1]; + memcpy(WITH->d, x[m - 1], (nonodes2 * sizeof(double))); + memcpy(n, reps[m - 1], (spp * sizeof(long))); + for (i = 0; i < spp; i++) { + if (i + 1 != m && n[i] > 0) { + if (WITH->d[i] < epsilonf) + WITH->d[i] = epsilonf; + WITH->w[i] = n[i] / exp(power * log(WITH->d[i])); + } else { + WITH->w[i] = 0.0; + WITH->d[i] = 0.0; + } + } + for (i = spp; i < nonodes2; i++) { + WITH->w[i] = 1.0; + WITH->d[i] = 0.0; + } + WITH->index = m; + if (WITH->iter) WITH->v = 0.0; + free(n); +} /* setuptipf */ + + +void buildnewtip(long m, tree *t, long nextsp) +{ + /* initialize and hook up a new tip */ + node *p; + setuptipf(m, t); + p = t->nodep[nextsp + spp - 3]; + hookup(t->nodep[m - 1], p); +} /* buildnewtip */ + + +void buildsimpletree(tree *t, long nextsp) +{ + /* make and initialize a three-species tree */ + curtree.start=curtree.nodep[enterorder[0] - 1]; + setuptipf(enterorder[0], t); + setuptipf(enterorder[1], t); + hookup(t->nodep[enterorder[0] - 1], t->nodep[enterorder[1] - 1]); + buildnewtip(enterorder[2], t, nextsp); + insert_(t->nodep[enterorder[2] - 1]->back, t->nodep[enterorder[0] - 1], + false); +} /* buildsimpletree */ + + +void addtraverse(node *p, node *q, boolean contin, long *numtrees, + boolean *succeeded) +{ + /* traverse through a tree, finding best place to add p */ + insert_(p, q, true); + (*numtrees)++; + if (evaluate(&curtree) > (bestree.likelihood + + epsilonf * fabs(bestree.likelihood))){ + copy_(&curtree, &bestree); + addwhere = q; + (*succeeded)=true; + } + copy_(&priortree, &curtree); + if (!q->tip && contin) { + addtraverse(p, q->next->back, contin,numtrees,succeeded); + addtraverse(p, q->next->next->back, contin,numtrees,succeeded); + } +} /* addtraverse */ + + +void re_move(node **p, node **q) +{ + /* re_move p and record in q where it was */ + *q = (*p)->next->back; + hookup(*q, (*p)->next->next->back); + (*p)->next->back = NULL; + (*p)->next->next->back = NULL; + update(*q); + update((*q)->back); +} /* re_move */ + + +void globrearrange(long* numtrees,boolean* succeeded) +{ + /* does global rearrangements */ + tree globtree; + tree oldtree; + int i,j,k,num_sibs,num_sibs2; + node *where,*sib_ptr,*sib_ptr2; + double oldbestyet = curtree.likelihood; + int success = false; + + alloctree(&globtree.nodep,nonodes2); + alloctree(&oldtree.nodep,nonodes2); + setuptree(&globtree,nonodes2); + setuptree(&oldtree,nonodes2); + allocd(nonodes2, globtree.nodep); + allocd(nonodes2, oldtree.nodep); + allocw(nonodes2, globtree.nodep); + allocw(nonodes2, oldtree.nodep); + copy_(&curtree,&globtree); + copy_(&curtree,&oldtree); + for ( i = spp ; i < nonodes2 ; i++ ) { + num_sibs = count_sibs(curtree.nodep[i]); + sib_ptr = curtree.nodep[i]; + if ( (i - spp) % (( nonodes2 / 72 ) + 1 ) == 0 ) + putchar('.'); + fflush(stdout); + for ( j = 0 ; j <= num_sibs ; j++ ) { + re_move(&sib_ptr,&where); + copy_(&curtree,&priortree); + + if (where->tip) { + copy_(&oldtree,&curtree); + copy_(&oldtree,&bestree); + sib_ptr=sib_ptr->next; + continue; + } + else num_sibs2 = count_sibs(where); + sib_ptr2 = where; + for ( k = 0 ; k < num_sibs2 ; k++ ) { + addwhere = NULL; + addtraverse(sib_ptr,sib_ptr2->back,true,numtrees,succeeded); + if ( addwhere && where != addwhere && where->back != addwhere + && bestree.likelihood > globtree.likelihood) { + copy_(&bestree,&globtree); + success = true; + } + sib_ptr2 = sib_ptr2->next; + } + copy_(&oldtree,&curtree); + copy_(&oldtree,&bestree); + sib_ptr = sib_ptr->next; + } + } + copy_(&globtree,&curtree); + copy_(&globtree,&bestree); + if (success && globtree.likelihood > oldbestyet) { + *succeeded = true; + } + else { + *succeeded = false; + } + freed(nonodes2, globtree.nodep); + freed(nonodes2, oldtree.nodep); + freew(nonodes2, globtree.nodep); + freew(nonodes2, oldtree.nodep); + freetree(&globtree.nodep,nonodes2); + freetree(&oldtree.nodep,nonodes2); +} + + +void rearrange(node *p, long *numtrees, long *nextsp, boolean *succeeded) +{ + node *q, *r; + if (!p->tip && !p->back->tip) { + r = p->next->next; + re_move(&r, &q); + copy_(&curtree, &priortree); + addtraverse(r, q->next->back, false, numtrees,succeeded); + addtraverse(r, q->next->next->back, false, numtrees,succeeded); + copy_(&bestree, &curtree); + if (global && ((*nextsp) == spp)) { + putchar('.'); + fflush(stdout); + } + } + if (!p->tip) { + rearrange(p->next->back, numtrees,nextsp,succeeded); + rearrange(p->next->next->back, numtrees,nextsp,succeeded); + } +} /* rearrange */ + + +void describe(node *p) +{ + /* print out information for one branch */ + long i=0; + node *q; + + q = p->back; + fprintf(outfile, "%4ld ", q->index - spp); + if (p->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[p->index - 1][i], outfile); + } else + fprintf(outfile, "%4ld ", p->index - spp); + fprintf(outfile, "%15.5f\n", q->v); + if (!p->tip) { + describe(p->next->back); + describe(p->next->next->back); + } +} /* describe */ + + +void summarize(long numtrees) +{ + /* print out branch lengths etc. */ + long i, j, totalnum; + + fprintf(outfile, "\nremember:"); + if (outgropt) + fprintf(outfile, " (although rooted by outgroup)"); + fprintf(outfile, " this is an unrooted tree!\n\n"); + if (!minev) + fprintf(outfile, "Sum of squares = %11.5f\n\n", -curtree.likelihood); + else + fprintf(outfile, "Sum of branch lengths = %11.5f\n\n", -curtree.likelihood); + if ((power == 2.0) && !minev) { + totalnum = 0; + for (i = 1; i <= nums; i++) { + for (j = 1; j <= nums; j++) { + if (i != j) + totalnum += reps[i - 1][j - 1]; + } + } + fprintf(outfile, "Average percent standard deviation = "); + fprintf(outfile, "%11.5f\n\n", + 100 * sqrt(-curtree.likelihood / (totalnum - 2))); + } + fprintf(outfile, "Between And Length\n"); + fprintf(outfile, "------- --- ------\n"); + describe(curtree.start->next->back); + describe(curtree.start->next->next->back); + describe(curtree.start->back); + fprintf(outfile, "\n\n"); + if (trout) { + col = 0; + treeout(curtree.start, &col, 0.43429445222, true, + curtree.start); + } +} /* summarize */ + + +void nodeinit(node *p) +{ + /* initialize a node */ + long i, j; + + for (i = 1; i <= 3; i++) { + for (j = 0; j < nonodes2; j++) { + p->w[j] = 1.0; + p->d[j] = 0.0; + } + p = p->next; + } + if ((!lengths) || p->iter) + p->v = 1.0; + if ((!lengths) || p->back->iter) + p->back->v = 1.0; +} /* nodeinit */ + + +void initrav(node *p) +{ + /* traverse to initialize */ + if (p->tip) + return; + nodeinit(p); + initrav(p->next->back); + initrav(p->next->next->back); +} /* initrav */ + +void treevaluate() +{ + /* evaluate user-defined tree, iterating branch lengths */ + long i; + double oldlike; + + for (i = 1; i <= spp; i++) + setuptipf(i, &curtree); + unroot(&curtree,nonodes2); + + initrav(curtree.start); + if (curtree.start->back != NULL) { + initrav(curtree.start->back); + evaluate(&curtree); + do { + oldlike = curtree.likelihood; + smooth(curtree.start); + evaluate(&curtree); + } while (fabs(curtree.likelihood - oldlike) > delta); + } + evaluate(&curtree); +} /* treevaluate */ + + +void maketree() +{ + /* contruct the tree */ + long nextsp,numtrees; + boolean succeeded=false; + long i, j, which; + + if (usertree) { + inputdata(replicates, printdata, lower, upper, x, reps); + setuptree(&curtree, nonodes2); + for (which = 1; which <= spp; which++) + setuptipf(which, &curtree); + if (eoln(infile)) + scan_eoln(infile); + openfile(&intree,INTREE,"input tree file","r",progname,intreename); + numtrees = countsemic(&intree); + if (numtrees > MAXNUMTREES) { + printf("\nERROR: number of input trees is read incorrectly from %s\n", + intreename); + exxit(-1); + } + if (treeprint) { + fprintf(outfile, "User-defined tree"); + if (numtrees > 1) + putc('s', outfile); + fprintf(outfile, ":\n\n"); + } + first = true; + which = 1; + while (which <= numtrees) { + treeread2 (intree, &curtree.start, curtree.nodep, + lengths, &trweight, &goteof, &haslengths, &spp,false,nonodes2); + nums = spp; + curtree.start = curtree.nodep[outgrno - 1]->back; + treevaluate(); + printree(curtree.start, treeprint, false, false); + summarize(numtrees); + clear_connections(&curtree,nonodes2); + which++; + } + FClose(intree); + } else { + if (jumb == 1) { + inputdata(replicates, printdata, lower, upper, x, reps); + setuptree(&curtree, nonodes2); + setuptree(&priortree, nonodes2); + setuptree(&bestree, nonodes2); + if (njumble > 1) setuptree(&bestree2, nonodes2); + } + for (i = 1; i <= spp; i++) + enterorder[i - 1] = i; + if (jumble) + randumize(seed, enterorder); + nextsp = 3; + buildsimpletree(&curtree, nextsp); + curtree.start = curtree.nodep[enterorder[0] - 1]->back; + if (jumb == 1) numtrees = 1; + nextsp = 4; + if (progress) { + printf("Adding species:\n"); + writename(0, 3, enterorder); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + while (nextsp <= spp) { + nums = nextsp; + buildnewtip(enterorder[nextsp - 1], &curtree, nextsp); + copy_(&curtree, &priortree); + bestree.likelihood = -99999.0; + curtree.start = curtree.nodep[enterorder[0] - 1]->back; + addtraverse(curtree.nodep[enterorder[nextsp - 1] - 1]->back, + curtree.start, true, &numtrees,&succeeded); + copy_(&bestree, &curtree); + if (progress) { + writename(nextsp - 1, 1, enterorder); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + if (global && nextsp == spp) { + if (progress) { + printf("Doing global rearrangements\n"); + printf(" !"); + for (j = spp; j < nonodes2; j++) + if ( (j - spp) % (( nonodes2 / 72 ) + 1 ) == 0 ) + putchar('-'); + printf("!\n"); + printf(" "); + } + } + succeeded = true; + while (succeeded) { + succeeded = false; + curtree.start = curtree.nodep[enterorder[0] - 1]->back; + if (nextsp == spp && global) + globrearrange (&numtrees,&succeeded); + else{ + rearrange(curtree.start,&numtrees,&nextsp,&succeeded); + } + if (global && ((nextsp) == spp) && progress) + printf("\n "); + } + if (global && nextsp == spp) { + putc('\n', outfile); + if (progress) + putchar('\n'); + } + if (njumble > 1) { + if (jumb == 1 && nextsp == spp) + copy_(&bestree, &bestree2); + else if (nextsp == spp) { + if (bestree2.likelihood < bestree.likelihood) + copy_(&bestree, &bestree2); + } + } + if (nextsp == spp && jumb == njumble) { + if (njumble > 1) copy_(&bestree2, &curtree); + curtree.start = curtree.nodep[outgrno - 1]->back; + printree(curtree.start, treeprint, true, false); + summarize(numtrees); + } + nextsp++; + } + } + if (jumb == njumble && progress) { + printf("\nOutput written to file \"%s\"\n\n", outfilename); + if (trout) { + printf("Tree also written onto file \"%s\"\n", outtreename); + putchar('\n'); + } + } +} /* maketree */ + + +int main(int argc, Char *argv[]) +{ + int i; +#ifdef MAC + argc = 1; /* macsetup("Fitch",""); */ + argv[0]="Fitch"; +#endif + init(argc,argv); + progname = argv[0]; + openfile(&infile,INFILE,"input file","r",argv[0],infilename); + openfile(&outfile,OUTFILE,"output file","w",argv[0],outfilename); + + ibmpc = IBMCRT; + ansi = ANSICRT; + mulsets = false; + datasets = 1; + firstset = true; + doinit(); + if (trout) + openfile(&outtree,OUTTREE,"output tree file","w",argv[0],outtreename); + for (i=0;i 1) { + fprintf(outfile, "Data set # %ld:\n\n",ith); + if (progress) + printf("\nData set # %ld:\n\n",ith); + } + fitch_getinput(); + for (jumb = 1; jumb <= njumble; jumb++) + maketree(); + firstset = false; + if (eoln(infile) && (ith < datasets)) + scan_eoln(infile); + } + if (trout) + FClose(outtree); + FClose(outfile); + FClose(infile); +#ifdef MAC + fixmacfile(outfilename); + fixmacfile(outtreename); +#endif + printf("Done.\n\n"); +#ifdef WIN32 + phyRestoreConsoleAttributes(); +#endif + return 0; +} diff --git a/forester/archive/RIO/others/phylip_mod/src/neighbor.c b/forester/archive/RIO/others/phylip_mod/src/neighbor.c new file mode 100644 index 0000000..62150ce --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/neighbor.c @@ -0,0 +1,602 @@ + +#include "phylip.h" +#include "dist.h" + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Mary Kuhner, Jon Yamato, Joseph Felsenstein, Akiko Fuseki, + Sean Lamont, and Andrew Keeffe. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + + +#ifndef OLDC +/* function prototypes */ +void getoptions(void); +void allocrest(void); +void doinit(void); +void inputoptions(void); +void getinput(void); +void describe(node *, double); +void summarize(void); +void nodelabel(boolean); +void jointree(void); +void maketree(void); +void freerest(void); +/* function prototypes */ +#endif + + +Char infilename[FNMLNGTH], outfilename[FNMLNGTH], outtreename[FNMLNGTH]; +long nonodes2, outgrno, col, datasets, ith; +long inseed; +vector *x; +intvector *reps; +boolean jumble, lower, upper, outgropt, replicates, trout, + printdata, progress, treeprint, mulsets, njoin; +tree curtree; +longer seed; +long *enterorder; +Char progname[20]; + +/* variables for maketree, propagated globally for C version: */ +node **cluster; + + +void getoptions() +{ + /* interactively set options */ + long inseed0 = 0, loopcount; + Char ch; + + fprintf(outfile, "\nNeighbor-Joining/UPGMA method version %s\n\n",VERSION); + putchar('\n'); + jumble = false; + lower = false; + outgrno = 1; + outgropt = false; + replicates = false; + trout = true; + upper = false; + printdata = false; + progress = true; + treeprint = true; + njoin = true; + loopcount = 0; + for(;;) { + cleerhome(); + printf("\nNeighbor-Joining/UPGMA method version %s\n\n",VERSION); + printf("Settings for this run:\n"); + printf(" N Neighbor-joining or UPGMA tree? %s\n", + (njoin ? "Neighbor-joining" : "UPGMA")); + if (njoin) { + printf(" O Outgroup root?"); + if (outgropt) + printf(" Yes, at species number%3ld\n", outgrno); + else + printf(" No, use as outgroup species%3ld\n", outgrno); + } + printf(" L Lower-triangular data matrix? %s\n", + (lower ? "Yes" : "No")); + printf(" R Upper-triangular data matrix? %s\n", + (upper ? "Yes" : "No")); + printf(" S Subreplicates? %s\n", + (replicates ? "Yes" : "No")); + printf(" J Randomize input order of species?"); + if (jumble) + printf(" Yes (random number seed =%8ld)\n", inseed0); + else + printf(" No. Use input order\n"); + printf(" M Analyze multiple data sets?"); + if (mulsets) + printf(" Yes, %2ld sets\n", datasets); + else + printf(" No\n"); + printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", + (ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)")); + printf(" 1 Print out the data at start of run %s\n", + (printdata ? "Yes" : "No")); + printf(" 2 Print indications of progress of run %s\n", + (progress ? "Yes" : "No")); + printf(" 3 Print out tree %s\n", + (treeprint ? "Yes" : "No")); + printf(" 4 Write out trees onto tree file? %s\n", + (trout ? "Yes" : "No")); + printf("\n\n Y to accept these or type the letter for one to change\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%c%*[^\n]", &ch); + getchar(); + if (ch == '\n') + ch = ' '; + uppercase(&ch); + if (ch == 'Y') + break; + if (strchr("NJOULRSM01234",ch) != NULL){ + switch (ch) { + + case 'J': + jumble = !jumble; + if (jumble) + initseed(&inseed, &inseed0, seed); + break; + + case 'L': + lower = !lower; + break; + + case 'O': + outgropt = !outgropt; + if (outgropt) + initoutgroup(&outgrno, spp); + else + outgrno = 1; + break; + + case 'R': + upper = !upper; + break; + + case 'S': + replicates = !replicates; + break; + + case 'N': + njoin = !njoin; + break; + + case 'M': + mulsets = !mulsets; + if (mulsets) + initdatasets(&datasets); + jumble = true; + if (jumble) + initseed(&inseed, &inseed0, seed); + break; + + case '0': + initterminal(&ibmpc, &ansi); + break; + + case '1': + printdata = !printdata; + break; + + case '2': + progress = !progress; + break; + + case '3': + treeprint = !treeprint; + break; + + case '4': + trout = !trout; + break; + } + } else + printf("Not a possible option!\n"); + countup(&loopcount, 100); + } +} /* getoptions */ + + +void allocrest() +{ + long i; + + x = (vector *)Malloc(spp*sizeof(vector)); + for (i = 0; i < spp; i++) + x[i] = (vector)Malloc(spp*sizeof(double)); + reps = (intvector *)Malloc(spp*sizeof(intvector)); + for (i = 0; i < spp; i++) + reps[i] = (intvector)Malloc(spp*sizeof(long)); + nayme = (naym *)Malloc(spp*sizeof(naym)); + enterorder = (long *)Malloc(spp*sizeof(long)); + cluster = (node **)Malloc(spp*sizeof(node *)); +} /* allocrest */ + + +void freerest() +{ + long i; + + for (i = 0; i < spp; i++) + free(x[i]); + free(x); + for (i = 0; i < spp; i++) + free(reps[i]); + free(reps); + free(nayme); + free(enterorder); + free(cluster); +} /* freerest */ + + +void doinit() +{ + /* initializes variables */ + node *p; + + inputnumbers2(&spp, &nonodes2, 2); + nonodes2 += (njoin ? 0 : 1); + getoptions(); + alloctree(&curtree.nodep, nonodes2+1); + p = curtree.nodep[nonodes2]->next->next; + curtree.nodep[nonodes2]->next = curtree.nodep[nonodes2]; + free(p); + allocrest(); + +} /* doinit */ + + +void inputoptions() +{ + /* read options information */ + + if (ith != 1) + samenumsp2(ith); + putc('\n', outfile); + if (njoin) + fprintf(outfile, " Neighbor-joining method\n"); + else + fprintf(outfile, " UPGMA method\n"); + fprintf(outfile, "\n Negative branch lengths allowed\n\n"); +} /* inputoptions */ + + +void describe(node *p, double height) +{ + /* print out information for one branch */ + long i; + node *q; + + q = p->back; + if (njoin) + fprintf(outfile, "%4ld ", q->index - spp); + else + fprintf(outfile, "%4ld ", q->index - spp); + if (p->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[p->index - 1][i], outfile); + putc(' ', outfile); + } else { + if (njoin) + fprintf(outfile, "%4ld ", p->index - spp); + else { + fprintf(outfile, "%4ld ", p->index - spp); + } + } + if (njoin) + fprintf(outfile, "%12.5f\n", q->v); + else + fprintf(outfile, "%10.5f %10.5f\n", q->v, q->v+height); + if (!p->tip) { + describe(p->next->back, height+q->v); + describe(p->next->next->back, height+q->v); + } +} /* describe */ + + +void summarize() +{ + /* print out branch lengths etc. */ + putc('\n', outfile); + if (njoin) { + fprintf(outfile, "remember:"); + if (outgropt) + fprintf(outfile, " (although rooted by outgroup)"); + fprintf(outfile, " this is an unrooted tree!\n"); + } + if (njoin) { + fprintf(outfile, "\nBetween And Length\n"); + fprintf(outfile, "------- --- ------\n"); + } else { + fprintf(outfile, "From To Length Height\n"); + fprintf(outfile, "---- -- ------ ------\n"); + } + describe(curtree.start->next->back, 0.0); + describe(curtree.start->next->next->back, 0.0); + if (njoin) + describe(curtree.start->back, 0.0); + fprintf(outfile, "\n\n"); +} /* summarize */ + + +void nodelabel(boolean isnode) +{ + if (isnode) + printf("node"); + else + printf("species"); +} /* nodelabel */ + + +void jointree() +{ + /* calculate the tree */ + long nc, nextnode, mini=0, minj=0, i, j, ia, ja, ii, jj, nude, iter; + double fotu2, total, tmin, dio, djo, bi, bj, bk, dmin=0, da; + long el[3]; + vector av; + intvector oc; + + double *R; /* added in revisions by Y. Ina */ + R = (double *)Malloc(spp * sizeof(double)); + + for (i = 0; i <= spp - 2; i++) { + for (j = i + 1; j < spp; j++) { + da = (x[i][j] + x[j][i]) / 2.0; + x[i][j] = da; + x[j][i] = da; + } + } + /* First initialization */ + fotu2 = spp - 2.0; + nextnode = spp + 1; + av = (vector)Malloc(spp*sizeof(double)); + oc = (intvector)Malloc(spp*sizeof(long)); + for (i = 0; i < spp; i++) { + av[i] = 0.0; + oc[i] = 1; + } + /* Enter the main cycle */ + if (njoin) + iter = spp - 3; + else + iter = spp - 1; + for (nc = 1; nc <= iter; nc++) { + for (j = 2; j <= spp; j++) { + for (i = 0; i <= j - 2; i++) + x[j - 1][i] = x[i][j - 1]; + } + tmin = 99999.0; + /* Compute sij and minimize */ + if (njoin) { /* many revisions by Y. Ina from here ... */ + for (i = 0; i < spp; i++) + R[i] = 0.0; + for (ja = 2; ja <= spp; ja++) { + jj = enterorder[ja - 1]; + if (cluster[jj - 1] != NULL) { + for (ia = 0; ia <= ja - 2; ia++) { + ii = enterorder[ia]; + if (cluster[ii - 1] != NULL) { + R[ii - 1] += x[ii - 1][jj - 1]; + R[jj - 1] += x[ii - 1][jj - 1]; + } + } + } + } + } /* ... to here */ + for (ja = 2; ja <= spp; ja++) { + jj = enterorder[ja - 1]; + if (cluster[jj - 1] != NULL) { + for (ia = 0; ia <= ja - 2; ia++) { + ii = enterorder[ia]; + if (cluster[ii - 1] != NULL) { + if (njoin) { + total = fotu2 * x[ii - 1][jj - 1] - R[ii - 1] - R[jj - 1]; + /* this statement part of revisions by Y. Ina */ + } else + total = x[ii - 1][jj - 1]; + if (total < tmin) { + tmin = total; + mini = ii; + minj = jj; + } + } + } + } + } + /* compute lengths and print */ + if (njoin) { + dio = 0.0; + djo = 0.0; + for (i = 0; i < spp; i++) { + dio += x[i][mini - 1]; + djo += x[i][minj - 1]; + } + dmin = x[mini - 1][minj - 1]; + dio = (dio - dmin) / fotu2; + djo = (djo - dmin) / fotu2; + bi = (dmin + dio - djo) * 0.5; + bj = dmin - bi; + bi -= av[mini - 1]; + bj -= av[minj - 1]; + } else { + bi = x[mini - 1][minj - 1] / 2.0 - av[mini - 1]; + bj = x[mini - 1][minj - 1] / 2.0 - av[minj - 1]; + av[mini - 1] += bi; + } + if (progress) { + printf("Cycle %3ld: ", iter - nc + 1); + if (njoin) + nodelabel((boolean)(av[mini - 1] > 0.0)); + else + nodelabel((boolean)(oc[mini - 1] > 1.0)); + printf(" %ld (%10.5f) joins ", mini, bi); + if (njoin) + nodelabel((boolean)(av[minj - 1] > 0.0)); + else + nodelabel((boolean)(oc[minj - 1] > 1.0)); + printf(" %ld (%10.5f)\n", minj, bj); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + hookup(curtree.nodep[nextnode - 1]->next, cluster[mini - 1]); + hookup(curtree.nodep[nextnode - 1]->next->next, cluster[minj - 1]); + cluster[mini - 1]->v = bi; + cluster[minj - 1]->v = bj; + cluster[mini - 1]->back->v = bi; + cluster[minj - 1]->back->v = bj; + cluster[mini - 1] = curtree.nodep[nextnode - 1]; + cluster[minj - 1] = NULL; + nextnode++; + if (njoin) + av[mini - 1] = dmin * 0.5; + /* re-initialization */ + fotu2 -= 1.0; + for (j = 0; j < spp; j++) { + if (cluster[j] != NULL) { + if (njoin) { + da = (x[mini - 1][j] + x[minj - 1][j]) * 0.5; + if (mini - j - 1 < 0) + x[mini - 1][j] = da; + if (mini - j - 1 > 0) + x[j][mini - 1] = da; + } else { + da = x[mini - 1][j] * oc[mini - 1] + x[minj - 1][j] * oc[minj - 1]; + da /= oc[mini - 1] + oc[minj - 1]; + x[mini - 1][j] = da; + x[j][mini - 1] = da; + } + } + } + for (j = 0; j < spp; j++) { + x[minj - 1][j] = 0.0; + x[j][minj - 1] = 0.0; + } + oc[mini - 1] += oc[minj - 1]; + } + /* the last cycle */ + nude = 1; + for (i = 1; i <= spp; i++) { + if (cluster[i - 1] != NULL) { + el[nude - 1] = i; + nude++; + } + } + if (!njoin) { + curtree.start = cluster[el[0] - 1]; + curtree.start->back = NULL; + free(av); + free(oc); + return; + } + bi = (x[el[0] - 1][el[1] - 1] + x[el[0] - 1][el[2] - 1] - x[el[1] - 1] + [el[2] - 1]) * 0.5; + bj = x[el[0] - 1][el[1] - 1] - bi; + bk = x[el[0] - 1][el[2] - 1] - bi; + bi -= av[el[0] - 1]; + bj -= av[el[1] - 1]; + bk -= av[el[2] - 1]; + if (progress) { + printf("last cycle:\n"); + putchar(' '); + nodelabel((boolean)(av[el[0] - 1] > 0.0)); + printf(" %ld (%10.5f) joins ", el[0], bi); + nodelabel((boolean)(av[el[1] - 1] > 0.0)); + printf(" %ld (%10.5f) joins ", el[1], bj); + nodelabel((boolean)(av[el[2] - 1] > 0.0)); + printf(" %ld (%10.5f)\n", el[2], bk); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + hookup(curtree.nodep[nextnode - 1], cluster[el[0] - 1]); + hookup(curtree.nodep[nextnode - 1]->next, cluster[el[1] - 1]); + hookup(curtree.nodep[nextnode - 1]->next->next, cluster[el[2] - 1]); + cluster[el[0] - 1]->v = bi; + cluster[el[1] - 1]->v = bj; + cluster[el[2] - 1]->v = bk; + cluster[el[0] - 1]->back->v = bi; + cluster[el[1] - 1]->back->v = bj; + cluster[el[2] - 1]->back->v = bk; + curtree.start = cluster[el[0] - 1]->back; + free(av); + free(oc); + free(R); +} /* jointree */ + + +void maketree() +{ + /* construct the tree */ + long i ; + + inputdata(replicates, printdata, lower, upper, x, reps); + if (njoin && (spp < 3)) { + printf("\nERROR: Neighbor-Joining runs must have at least 3 species\n\n"); + exxit(-1); + } + if (progress) + putchar('\n'); + if (ith == 1) + setuptree(&curtree, nonodes2 + 1); + for (i = 1; i <= spp; i++) + enterorder[i - 1] = i; + if (jumble) + randumize(seed, enterorder); + for (i = 0; i < spp; i++) + cluster[i] = curtree.nodep[i]; + jointree(); + if (njoin) + curtree.start = curtree.nodep[outgrno - 1]->back; + printree(curtree.start, treeprint, njoin, (boolean)(!njoin)); + if (treeprint) + summarize(); + if (trout) { + col = 0; + if (njoin) + treeout(curtree.start, &col, 0.43429448222, njoin, curtree.start); + else + curtree.root = curtree.start, + treeoutr(curtree.start,&col,&curtree); + } + if (progress) { + printf("\nOutput written on file \"%s\"\n\n", outfilename); + if (trout) + printf("Tree written on file \"%s\"\n\n", outtreename); + } +} /* maketree */ + + +int main(int argc, Char *argv[]) +{ /* main program */ +#ifdef MAC + argc = 1; /* macsetup("Neighbor",""); */ + argv[0] = "Neighbor"; +#endif + init(argc, argv); + openfile(&infile,INFILE,"input file", "r",argv[0],infilename); + openfile(&outfile,OUTFILE,"output file", "w",argv[0],outfilename); + ibmpc = IBMCRT; + ansi = ANSICRT; + mulsets = false; + datasets = 1; + doinit(); + if (trout) + openfile(&outtree,OUTTREE,"output tree file", "w",argv[0],outtreename); + ith = 1; + while (ith <= datasets) { + if (datasets > 1) { + fprintf(outfile, "Data set # %ld:\n",ith); + if (progress) + printf("Data set # %ld:\n",ith); + } + inputoptions(); + maketree(); + if (eoln(infile) && (ith < datasets)) + scan_eoln(infile); + ith++; + } + FClose(infile); + FClose(outfile); + FClose(outtree); + freerest(); +#ifdef MAC + fixmacfile(outfilename); + fixmacfile(outtreename); +#endif + printf("Done.\n\n"); +#ifdef WIN32 + phyRestoreConsoleAttributes(); +#endif + return 0; +} + + + + + diff --git a/forester/archive/RIO/others/phylip_mod/src/phylip.c b/forester/archive/RIO/others/phylip_mod/src/phylip.c new file mode 100644 index 0000000..2c87e74 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/phylip.c @@ -0,0 +1,2750 @@ + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, Andrew Keeffe, + and Dan Fineman. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +#ifdef OSX_CARBON +#include +#endif + +#include +#include +#ifdef WIN32 +#include +/* for console code (clear screen, text color settings) */ +CONSOLE_SCREEN_BUFFER_INFO savecsbi; +HANDLE hConsoleOutput; + +void phyClearScreen(); +void phySaveConsoleAttributes(); +void phySetConsoleAttributes(); +void phyRestoreConsoleAttributes(); +void phyFillScreenColor(); +#endif + +#include "phylip.h" + +#ifndef OLDC +static void crash_handler(int signum); + +#endif +#if defined(OSX_CARBON) && defined(__MWERKS__) +boolean fixedpath = false; +#endif +FILE *infile, *outfile, *intree, *intree2, *outtree, *weightfile, *catfile, *ancfile, *mixfile, *factfile; +long spp, words, bits; +boolean ibmpc, ansi, tranvsp; +naym *nayme; /* names of species */ + +static void crash_handler(int sig_num) +{ /* when we crash, lets print out something usefull */ + printf("ERROR: "); + switch(sig_num) { +#ifdef SIGSEGV + case SIGSEGV: + puts("This program has caused a Segmentation fault."); + break; +#endif /* SIGSEGV */ +#ifdef SIGFPE + case SIGFPE: + puts("This program has caused a Floating Point Exception"); + break; +#endif /* SIGFPE */ +#ifdef SIGILL + case SIGILL: + puts("This program has attempted an illegal instruction"); + break; +#endif /* SIGILL */ +#ifdef SIGPIPE + case SIGPIPE: + puts("This program tried to write to a broken pipe"); + break; +#endif /* SIGPIPE */ +#ifdef SIGBUS + case SIGBUS: + puts("This program had a bus error"); + break; +#endif /* SIGBUS */ + } + if (sig_num == SIGSEGV) { + puts( + " This may have been caused by an incorrectly formatted input file"); + puts( + " or input tree file. You should check those files carefully."); + puts(" If this seems to be a bug, please mail joe@gs.washington.edu"); + } + else { + puts(" Most likely, you have encountered a bug in the program."); + puts(" Since this seems to be a bug, please mail joe@gs.washington.edu"); + } + puts(" with the name of the program, your computer system type,"); + puts(" a full description of the problem, and with the input data file."); + puts(" (which should be in the body of the message, not as an Attachment)."); + +#ifdef WIN32 + puts ("Press Enter or Return to close program."); + puts(" You may have to press Enter or Return twice."); + getchar (); + getchar (); + phyRestoreConsoleAttributes(); +#endif + abort(); +} + + +void init(int argc, char** argv) +{ /* initialization routine for all programs + * anything done at the beginig for every program should be done here */ + + /* set up signal handler for + * segfault,floating point exception, illeagal instruction, bad pipe, bus error + * there are more signals that can cause a crash, but these are the most common + * even these aren't found on all machines. */ +#ifdef SIGSEGV + signal(SIGSEGV, crash_handler); +#endif /* SIGSEGV */ +#ifdef SIGFPE + signal(SIGFPE, crash_handler); +#endif /* SIGFPE */ +#ifdef SIGILL + signal(SIGILL, crash_handler); +#endif /* SIGILL */ +#ifdef SIGPIPE + signal(SIGPIPE, crash_handler); +#endif /* SIGPIPE */ +#ifdef SIGBUS + signal(SIGBUS, crash_handler); +#endif /* SIGBUS */ + +#ifdef WIN32 + phySetConsoleAttributes(); + phyClearScreen(); +#endif + +} + +void scan_eoln(FILE *f) +{ /* eat everything to the end of line or eof*/ + char ch; + + while (!eoff(f) && !eoln(f)) + gettc(f); + if (!eoff(f)) + ch = gettc(f); +} + + +boolean eoff(FILE *f) +{ /* check for end of file */ + int ch; + + if (feof(f)) + return true; + ch = getc(f); + if (ch == EOF) { + ungetc(ch, f); + return true; + } + ungetc(ch, f); + return false; +} /*eoff*/ + + +boolean eoln(FILE *f) +{ /* check for end of line or eof*/ + register int ch; + + ch = getc(f); + if (ch == EOF) + return true; + ungetc(ch, f); + return ((ch == '\n') || (ch == '\r')); +} /*eoln*/ + + +int filexists(char *filename) +{ /* check whether file already exists */ + FILE *fp; + fp =fopen(filename,"rb"); + if (fp) { + fclose(fp); + return 1; + } else + return 0; +} /*filexists*/ + + +const char* get_command_name (const char *vektor) +{ /* returns the name of the program from vektor without the whole path */ + char *last_slash; + + /* Point to the last slash... */ + last_slash = strrchr (vektor, DELIMITER); + + if (last_slash) + /* If there was a last slash, return the character after it */ + return last_slash + 1; + else + /* If not, return the vector */ + return vektor; + +} /*get_command_name*/ + + +void getstryng(char *fname) +{ /* read in a file name from stdin and take off newline if any */ + + fname = fgets(fname, 100, stdin); + if (strchr(fname, '\n') != NULL) + *strchr(fname, '\n') = '\0'; +} /* getstryng */ + + +void countup(long *loopcount, long maxcount) +{ /* count how many times this loop has tried to read data, bail out + if exceeds maxcount */ + + (*loopcount)++; + if ((*loopcount) >= maxcount) { + printf("\nERROR: Made %ld attempts to read input in loop. Aborting run.\n", + *loopcount); + exxit(-1); + } +} /* countup */ + + +void openfile(FILE **fp,const char *filename,const char *filedesc, + const char *mode,const char *application, char *perm) +{ /* open a file, testing whether it exists etc. */ + FILE *of; + char file[FNMLNGTH]; + char filemode[3]; + char input[FNMLNGTH]; + char ch; + const char *progname_without_path; + long loopcount, loopcount2; +#if defined(OSX_CARBON) && defined(__MWERKS__) + ProcessSerialNumber myProcess; + FSRef bundleLocation; + unsigned char bundlePath[FNMLNGTH]; + + if(!fixedpath){ + /* change path to the bundle location instead of root directory */ + GetCurrentProcess(&myProcess); + GetProcessBundleLocation(&myProcess, &bundleLocation); + FSRefMakePath(&bundleLocation, bundlePath, FNMLNGTH); + chdir((const char*)bundlePath); + chdir(".."); /* get out of the .app directory */ + + fixedpath = true; + } +#endif + + progname_without_path = get_command_name(application); + + strcpy(file,filename); + strcpy(filemode,mode); + strcat(filemode,"b"); + loopcount = 0; + while (1){ + if (filemode[0] == 'w' && filexists(file)){ + printf("\n%s: the file \"%s\" that you wanted to\n", + progname_without_path, file); + printf(" use as %s already exists.\n", filedesc); + printf(" Do you want to Replace it, Append to it,\n"); + printf(" write to a new File, or Quit?\n"); + loopcount2 = 0; + do { + printf(" (please type R, A, F, or Q) \n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + fgets(input, sizeof(input), stdin); + ch = input[0]; + uppercase(&ch); + countup(&loopcount2, 10); + } while (ch != 'A' && ch != 'R' && ch != 'F' && ch != 'Q'); + if (ch == 'Q') + exxit(-1); + if (ch == 'A') { + strcpy(filemode,"ab"); + continue; + } + else if (ch == 'F') { + file[0] = '\0'; + loopcount2 = 0; + while (file[0] =='\0') { + printf("Please enter a new file name> "); + getstryng(file); + countup(&loopcount2, 10); + } + strcpy(filemode,"wb"); + continue; + } + } + of = fopen(file,filemode); + if (of) + break; + else { + switch (filemode[0]){ + + case 'r': + printf("%s: can't find %s \"%s\"\n", progname_without_path, + filedesc, file); + file[0] = '\0'; + loopcount2 = 0; + while (file[0] =='\0'){ + printf("Please enter a new file name> "); + countup(&loopcount2, 10); + getstryng(file);} + break; + + case 'w': + case 'a': + printf("%s: can't write %s \"%s\"\n", progname_without_path, + filedesc, file); + file[0] = '\0'; + loopcount2 = 0; + while (file[0] =='\0'){ + printf("Please enter a new file name> "); + countup(&loopcount2, 10); + getstryng(file);} + continue; + default: + printf("There is some error in the call of openfile. Unknown mode.\n"); + exxit(-1); + } + } + countup(&loopcount, 20); + } + *fp = of; + if (perm != NULL) + strcpy(perm,file); +} /* openfile */ + + +void cleerhome() +{ /* home cursor and clear screen, if possible */ +#ifdef WIN32 + if(ibmpc || ansi){ + phyClearScreen(); + } else { + printf("\n\n"); + } +#else + printf("%s", ((ibmpc || ansi) ? ("\033[2J\033[H") : "\n\n")); +#endif +} /* cleerhome */ + + +double randum(longer seed) +{ /* random number generator -- slow but machine independent + This is a multiplicative congruential 32-bit generator + x(t+1) = 1664525 * x(t) mod 2^32, one that passes the + Coveyou-Macpherson and Lehmer tests, see Knuth ACP vol. 2 + We here implement it representing each integer in base-64 + notation -- i.e. as an array of 6 six-bit chunks */ + long i, j, k, sum; + longer mult, newseed; + double x; + + mult[0] = 13; /* these four statements set the multiplier */ + mult[1] = 24; /* -- they are its "digits" in a base-64 */ + mult[2] = 22; /* notation: 1664525 = 13*64^3+24*64^2 */ + mult[3] = 6; /* +22*64+6 */ + for (i = 0; i <= 5; i++) + newseed[i] = 0; + for (i = 0; i <= 5; i++) { + sum = newseed[i]; + k = i; + if (i > 3) + k = 3; + for (j = 0; j <= k; j++) + sum += mult[j] * seed[i - j]; + newseed[i] = sum; + for (j = i; j <= 4; j++) { + newseed[j + 1] += newseed[j] / 64; + newseed[j] &= 63; + } + } + memcpy(seed, newseed, sizeof(longer)); + seed[5] &= 3; + x = 0.0; + for (i = 0; i <= 5; i++) + x = x / 64.0 + seed[i]; + x /= 4.0; + return x; +} /* randum */ + + +void randumize(longer seed, long *enterorder) +{ /* randomize input order of species */ + long i, j, k; + + for (i = 0; i < spp; i++) { + j = (long)(randum(seed) * (i+1)); + k = enterorder[j]; + enterorder[j] = enterorder[i]; + enterorder[i] = k; + } +} /* randumize */ + + +double normrand(longer seed) +{/* standardized Normal random variate */ + double x; + + x = randum(seed)+randum(seed)+randum(seed)+randum(seed) + + randum(seed)+randum(seed)+randum(seed)+randum(seed) + + randum(seed)+randum(seed)+randum(seed)+randum(seed)-6.0; + return(x); +} /* normrand */ + + +long readlong(const char *prompt) +{ /* read a long */ + long res, loopcount; + char string[100]; + + loopcount = 0; + do { + printf("%s",prompt); + getstryng(string); + if (sscanf(string,"%ld",&res) == 1) + break; + countup(&loopcount, 10); + } while (1); + return res; +} /* readlong */ + + +void uppercase(Char *ch) +{ /* convert ch to upper case */ + *ch = (islower (*ch) ? toupper(*ch) : (*ch)); +} /* uppercase */ + + +void initseed(long *inseed, long *inseed0, longer seed) +{ /* input random number seed */ + long i, loopcount; + + loopcount = 0; + do { + printf("Random number seed (must be odd)?\n"); + scanf("%ld%*[^\n]", inseed); + getchar(); + countup(&loopcount, 10); + } while (((*inseed) < 0) || ((*inseed) & 1) == 0); + *inseed0 = *inseed; + for (i = 0; i <= 5; i++) + seed[i] = 0; + i = 0; + do { + seed[i] = *inseed & 63; + *inseed /= 64; + i++; + } while (*inseed != 0); +} /*initseed*/ + + +void initjumble(long *inseed, long *inseed0, longer seed, long *njumble) +{ /* input number of jumblings for jumble option */ + long loopcount; + + initseed(inseed, inseed0, seed); + loopcount = 0; + do { + printf("Number of times to jumble?\n"); + scanf("%ld%*[^\n]", njumble); + getchar(); + countup(&loopcount, 10); + } while ((*njumble) < 1); +} /*initjumble*/ + + +void initoutgroup(long *outgrno, long spp) +{ /* input outgroup number */ + long loopcount; + boolean done; + + loopcount = 0; + do { + printf("Type number of the outgroup:\n"); + scanf("%ld%*[^\n]", outgrno); + getchar(); + done = (*outgrno >= 1 && *outgrno <= spp); + if (!done) { + printf("BAD OUTGROUP NUMBER: %ld\n", *outgrno); + printf(" Must be in range 1 - %ld\n", spp); + } + countup(&loopcount, 10); + } while (done != true); +} /*initoutgroup*/ + + +void initthreshold(double *threshold) +{ /* input threshold for threshold parsimony option */ + long loopcount; + boolean done; + + loopcount = 0; + do { + printf("What will be the threshold value?\n"); + scanf("%lf%*[^\n]", threshold); + getchar(); + done = (*threshold >= 1.0); + if (!done) + printf("BAD THRESHOLD VALUE: it must be greater than 1\n"); + else + *threshold = (long)(*threshold * 10.0 + 0.5) / 10.0; + countup(&loopcount, 10); + } while (done != true); +} /*initthreshold*/ + + +void initcatn(long *categs) +{ /* initialize category number for rate categories */ + long loopcount; + + loopcount = 0; + *categs = 0; + do { + printf("Number of categories (1-%d)?\n", maxcategs); + scanf("%ld%*[^\n]", categs); + getchar(); + countup(&loopcount, 10); + } while (*categs > maxcategs || *categs < 1); +} /*initcatn*/ + + +void initcategs(long categs, double *rate) +{ /* initialize category rates for HMM rates */ + long i, loopcount, scanned; + char line[100], rest[100]; + boolean done; + + loopcount = 0; + for (;;){ + printf("Rate for each category? (use a space to separate)\n"); + getstryng(line); + done = true; + for (i = 0; i < categs; i++){ + scanned = sscanf(line,"%lf %[^\n]", &rate[i],rest); + if ((scanned < 2 && i < (categs - 1)) || + (scanned < 1 && i == (categs - 1))){ + printf("Please enter exactly %ld values.\n",categs); + done = false; + break; + } + strcpy(line,rest); + } + if (done) + break; + countup(&loopcount, 100); + } +} /*initcategs*/ + + +void initprobcat(long categs, double *probsum, double *probcat) +{ /* input probabilities of rate categores for HMM rates */ + long i, loopcount, scanned; + boolean done; + char line[100], rest[100]; + + loopcount = 0; + do { + printf("Probability for each category?"); + printf(" (use a space to separate)\n"); + getstryng(line); + done = true; + for (i = 0; i < categs; i++){ + scanned = sscanf(line,"%lf %[^\n]",&probcat[i],rest); + if ((scanned < 2 && i < (categs - 1)) || + (scanned < 1 && i == (categs - 1))){ + done = false; + printf("Please enter exactly %ld values.\n",categs); + break;} + strcpy(line,rest); + } + if (!done) + continue; + *probsum = 0.0; + for (i = 0; i < categs; i++) + *probsum += probcat[i]; + if (fabs(1.0 - (*probsum)) > 0.001) { + done = false; + printf("Probabilities must add up to"); + printf(" 1.0, plus or minus 0.001.\n"); + } + countup(&loopcount, 100); + } while (!done); +} /*initprobcat*/ + + +void lgr(long m, double b, raterootarray lgroot) +{ /* For use by initgammacat. Get roots of m-th Generalized Laguerre + polynomial, given roots of (m-1)-th, these are to be + stored in lgroot[m][] */ + long i; + double upper, lower, x, y; + boolean dwn; /* is function declining in this interval? */ + + if (m == 1) { + lgroot[1][1] = 1.0+b; + } else { + dwn = true; + for (i=1; i<=m; i++) { + if (i < m) { + if (i == 1) + lower = 0.0; + else + lower = lgroot[m-1][i-1]; + upper = lgroot[m-1][i]; + } else { /* i == m, must search above */ + lower = lgroot[m-1][i-1]; + x = lgroot[m-1][m-1]; + do { + x = 2.0*x; + y = glaguerre(m, b,x); + } while ((dwn && (y > 0.0)) || ((!dwn) && (y < 0.0))); + upper = x; + } + while (upper-lower > 0.000000001) { + x = (upper+lower)/2.0; + if (glaguerre(m, b, x) > 0.0) { + if (dwn) + lower = x; + else + upper = x; + } else { + if (dwn) + upper = x; + else + lower = x; + } + } + lgroot[m][i] = (lower+upper)/2.0; + dwn = !dwn; /* switch for next one */ + } + } +} /* lgr */ + + +double logfac (long n) +{ /* log(n!) values were calculated with Mathematica + with a precision of 30 digits */ + long i; + double x; + + switch (n) + { + case 0: + return 0.; + case 1: + return 0.; + case 2: + return 0.693147180559945309417232121458; + case 3: + return 1.791759469228055000812477358381; + case 4: + return 3.1780538303479456196469416013; + case 5: + return 4.78749174278204599424770093452; + case 6: + return 6.5792512120101009950601782929; + case 7: + return 8.52516136106541430016553103635; + case 8: + return 10.60460290274525022841722740072; + case 9: + return 12.80182748008146961120771787457; + case 10: + return 15.10441257307551529522570932925; + case 11: + return 17.50230784587388583928765290722; + case 12: + return 19.98721449566188614951736238706; + default: + x = 19.98721449566188614951736238706; + for (i = 13; i <= n; i++) + x += log(i); + return x; + } +} + + +double glaguerre(long m, double b, double x) +{ /* Generalized Laguerre polynomial computed recursively. + For use by initgammacat */ + long i; + double gln, glnm1, glnp1; /* L_n, L_(n-1), L_(n+1) */ + + if (m == 0) + return 1.0; + else { + if (m == 1) + return 1.0 + b - x; + else { + gln = 1.0+b-x; + glnm1 = 1.0; + for (i=2; i <= m; i++) { + glnp1 = ((2*(i-1)+b+1.0-x)*gln - (i-1+b)*glnm1)/i; + glnm1 = gln; + gln = glnp1; + } + return gln; + } + } +} /* glaguerre */ + + +void initlaguerrecat(long categs, double alpha, double *rate, double *probcat) +{ /* calculate rates and probabilities to approximate Gamma distribution + of rates with "categs" categories and shape parameter "alpha" using + rates and weights from Generalized Laguerre quadrature */ + long i; + raterootarray lgroot; /* roots of GLaguerre polynomials */ + double f, x, xi, y; + + alpha = alpha - 1.0; + lgroot[1][1] = 1.0+alpha; + for (i = 2; i <= categs; i++) + lgr(i, alpha, lgroot); /* get roots for L^(a)_n */ + /* here get weights */ + /* Gamma weights are (1+a)(1+a/2) ... (1+a/n)*x_i/((n+1)^2 [L_{n+1}^a(x_i)]^2) */ + f = 1; + for (i = 1; i <= categs; i++) + f *= (1.0+alpha/i); + for (i = 1; i <= categs; i++) { + xi = lgroot[categs][i]; + y = glaguerre(categs+1, alpha, xi); + x = f*xi/((categs+1)*(categs+1)*y*y); + rate[i-1] = xi/(1.0+alpha); + probcat[i-1] = x; + } +} /* initlaguerrecat */ + + +double hermite(long n, double x) +{ /* calculates hermite polynomial with degree n and parameter x */ + /* seems to be unprecise for n>13 -> root finder does not converge*/ + double h1 = 1.; + double h2 = 2. * x; + double xx = 2. * x; + long i; + + for (i = 1; i < n; i++) { + xx = 2. * x * h2 - 2. * (i) * h1; + h1 = h2; + h2 = xx; + } + return xx; +} /* hermite */ + + +void root_hermite(long n, double *hroot) +{ /* find roots of Hermite polynmials */ + long z; + long ii; + long start; + + if (n % 2 == 0) { + start = n/2; + z = 1; + } else { + start = n/2 + 1; + z=2; + hroot[start-1] = 0.0; + } + for (ii = start; ii < n; ii++) { /* search only upwards*/ + hroot[ii] = halfroot(hermite,n,hroot[ii-1]+EPSILON, 1./n); + hroot[start - z] = -hroot[ii]; + z++; + } +} /* root_hermite */ + + +double halfroot(double (*func)(long m, double x), long n, double startx, + double delta) +{ /* searches from the bound (startx) only in one direction + (by positive or negative delta, which results in + other-bound=startx+delta) + delta should be small. + (*func) is a function with two arguments */ + double xl; + double xu; + double xm; + double fu; + double fl; + double fm = 100000.; + double gradient; + boolean dwn; + + /* decide if we search above or below startx and escapes to trace back + to the starting point that most often will be + the root from the previous calculation */ + if (delta < 0) { + xu = startx; + xl = xu + delta; + } else { + xl = startx; + xu = xl + delta; + } + delta = fabs(delta); + fu = (*func)(n, xu); + fl = (*func)(n, xl); + gradient = (fl-fu)/(xl-xu); + while(fabs(fm) > EPSILON) { /* is root outside of our bracket?*/ + if ((fu<0.0 && fl<0.0) || (fu>0.0 && fl > 0.0)) { + xu += delta; + fu = (*func)(n, xu); + fl = (*func)(n, xl); + gradient = (fl-fu)/(xl-xu); + dwn = (gradient < 0.0) ? true : false; + } else { + xm = xl - fl / gradient; + fm = (*func)(n, xm); + if (dwn) { + if (fm > 0.) { + xl = xm; + fl = fm; + } else { + xu = xm; + fu = fm; + } + } else { + if (fm > 0.) { + xu = xm; + fu = fm; + } else { + xl = xm; + fl = fm; + } + } + gradient = (fl-fu)/(xl-xu); + } + } + return xm; +} /* halfroot */ + + +void hermite_weight(long n, double * hroot, double * weights) +{ + /* calculate the weights for the hermite polynomial at the roots + using formula from Abramowitz and Stegun chapter 25.4.46 p.890 */ + long i; + double hr2; + double numerator; + + numerator = exp(0.6931471805599 * ( n-1.) + logfac(n)) / (n*n); + for (i = 0; i < n; i++) { + hr2 = hermite(n-1, hroot[i]); + weights[i] = numerator / (hr2*hr2); + } +} /* hermiteweight */ + + +void inithermitcat(long categs, double alpha, double *rate, double *probcat) +{ /* calculates rates and probabilities */ + long i; + double *hroot; + double std; + + std = SQRT2 /sqrt(alpha); + hroot = (double *) Malloc((categs+1) * sizeof(double)); + root_hermite(categs, hroot); /* calculate roots */ + hermite_weight(categs, hroot, probcat); /* set weights */ + for (i=0; i= 100.0) + inithermitcat(categs, alpha, rate, probcat); + else + initlaguerrecat(categs, alpha, rate, probcat); +} /* initgammacat */ + + +void inithowmany(long *howmanny, long howoften) +{/* input how many cycles */ + long loopcount; + + loopcount = 0; + do { + printf("How many cycles of %4ld trees?\n", howoften); + scanf("%ld%*[^\n]", howmanny); + getchar(); + countup(&loopcount, 10); + } while (*howmanny <= 0); +} /*inithowmany*/ + + + +void inithowoften(long *howoften) +{ /* input how many trees per cycle */ + long loopcount; + + loopcount = 0; + do { + printf("How many trees per cycle?\n"); + scanf("%ld%*[^\n]", howoften); + getchar(); + countup(&loopcount, 10); + } while (*howoften <= 0); +} /*inithowoften*/ + + +void initlambda(double *lambda) +{ /* input patch length parameter for autocorrelated HMM rates */ + long loopcount; + + loopcount = 0; + do { + printf("Mean block length of sites having the same rate (greater than 1)?\n"); + scanf("%lf%*[^\n]", lambda); + getchar(); + countup(&loopcount, 10); + } while (*lambda <= 1.0); + *lambda = 1.0 / *lambda; +} /*initlambda*/ + + +void initfreqs(double *freqa, double *freqc, double *freqg, double *freqt) +{ /* input frequencies of the four bases */ + char input[100]; + long scanned, loopcount; + + printf("Base frequencies for A, C, G, T/U (use blanks to separate)?\n"); + loopcount = 0; + do { + getstryng(input); + scanned = sscanf(input,"%lf%lf%lf%lf%*[^\n]", freqa, freqc, freqg, freqt); + if (scanned == 4) + break; + else + printf("Please enter exactly 4 values.\n"); + countup(&loopcount, 100); + } while (1); +} /* initfreqs */ + + +void initratio(double *ttratio) +{ /* input transition/transversion ratio */ + long loopcount; + + loopcount = 0; + do { + printf("Transition/transversion ratio?\n"); + scanf("%lf%*[^\n]", ttratio); + getchar(); + countup(&loopcount, 10); + } while (*ttratio < 0.0); +} /* initratio */ + + +void initpower(double *power) +{ + printf("New power?\n"); + scanf("%lf%*[^\n]", power); + getchar(); +} /*initpower*/ + + +void initdatasets(long *datasets) +{ + /* handle multi-data set option */ + long loopcount; + boolean done; + + loopcount = 0; + do { + printf("How many data sets?\n"); + scanf("%ld%*[^\n]", datasets); + getchar(); + done = (*datasets > 1); + if (!done) + printf("Bad data sets number: it must be greater than 1\n"); + countup(&loopcount, 10); + } while (!done); +} /* initdatasets */ + + +void justweights(long *datasets) +{ + /* handle multi-data set option by weights */ + long loopcount; + boolean done; + + loopcount = 0; + do { + printf("How many sets of weights?\n"); + scanf("%ld%*[^\n]", datasets); + getchar(); + done = (*datasets >= 1); + if (!done) + printf("BAD NUMBER: it must be greater than 1\n"); + countup(&loopcount, 10); + } while (!done); +} /* justweights */ + + +void initterminal(boolean *ibmpc, boolean *ansi) +{ + /* handle terminal option */ + if (*ibmpc) { + *ibmpc = false; + *ansi = true; + } else if (*ansi) + *ansi = false; + else + *ibmpc = true; +} /*initterminal*/ + + +void initnumlines(long *screenlines) +{ + long loopcount; + + loopcount = 0; + do { + *screenlines = readlong("Number of lines on screen?\n"); + countup(&loopcount, 10); + } while (*screenlines <= 12); +} /*initnumlines*/ + + +void initbestrees(bestelm *bestrees, long maxtrees, boolean glob) +{ + /* initializes either global or local field of each array in bestrees */ + long i; + + if (glob) + for (i = 0; i < maxtrees; i++) + bestrees[i].gloreange = false; + else + for (i = 0; i < maxtrees; i++) + bestrees[i].locreange = false; +} /* initbestrees */ + + +void newline(FILE *filename, long i, long j, long k) +{ + /* go to new line if i is a multiple of j, indent k spaces */ + long m; + + if ((i - 1) % j != 0 || i <= 1) + return; + putc('\n', filename); + for (m = 1; m <= k; m++) + putc(' ', filename); +} /* newline */ + + +void inputnumbersold(long *spp, long *chars, long *nonodes, long n) +{ + /* input the numbers of species and of characters */ + + if (fscanf(infile, "%ld%ld", spp, chars) != 2 || *spp <= 0 || *chars <= 0) { + printf( + "ERROR: Unable to read the number of species or characters in data set\n"); + printf( + "The input file is incorrect (perhaps it was not saved text only).\n"); + } + *nonodes = *spp * 2 - n; +} /* inputnumbersold */ + + +void inputnumbers(long *spp, long *chars, long *nonodes, long n) +{ + /* input the numbers of species and of characters */ + + if (fscanf(infile, "%ld%ld", spp, chars) != 2 || *spp <= 0 || *chars <= 0) { + printf( + "ERROR: Unable to read the number of species or characters in data set\n"); + printf( + "The input file is incorrect (perhaps it was not saved text only).\n"); + } + *nonodes = *spp * 2 - n; +} /* inputnumbers */ + + +void inputnumbers2(long *spp, long *nonodes, long n) +{ + /* read species number */ + + if (fscanf(infile, "%ld", spp) != 1 || *spp <= 0) { + printf("ERROR: Unable to read the number of species in data set\n"); + printf( + "The input file is incorrect (perhaps it was not saved text only).\n"); + } + fprintf(outfile, "\n%4ld Populations\n", *spp); + *nonodes = *spp * 2 - n; +} /* inputnumbers2 */ + + +void inputnumbers3(long *spp, long *chars) +{ + /* input the numbers of species and of characters */ + + if (fscanf(infile, "%ld%ld", spp, chars) != 2 || *spp <= 0 || *chars <= 0) { + printf( + "ERROR: Unable to read the number of species or characters in data set\n"); + printf( + "The input file is incorrect (perhaps it was not saved text only).\n"); + exxit(-1); + } +} /* inputnumbers3 */ + + +void samenumsp(long *chars, long ith) +{ + /* check if spp is same as the first set in other data sets */ + long cursp, curchs; + + if (eoln(infile)) + scan_eoln(infile); + fscanf(infile, "%ld%ld", &cursp, &curchs); + if (cursp != spp) { + printf( + "\n\nERROR: Inconsistent number of species in data set %ld\n\n", ith); + exxit(-1); + } + *chars = curchs; +} /* samenumsp */ + + +void samenumsp2(long ith) +{ + /* check if spp is same as the first set in other data sets */ + long cursp; + + if (eoln(infile)) + scan_eoln(infile); + if (fscanf(infile, "%ld", &cursp) != 1) { + printf("\n\nERROR: Unable to read number of species in data set %ld\n", + ith); + printf( + "The input file is incorrect (perhaps it was not saved text only).\n"); + exxit(-1); + } + if (cursp != spp) { + printf( + "\n\nERROR: Inconsistent number of species in data set %ld\n\n", ith); + exxit(-1); + } +} /* samenumsp2 */ + + +void readoptions(long *extranum, const char *options) +{ /* read option characters from input file */ + Char ch; + + while (!(eoln(infile))) { + ch = gettc(infile); + uppercase(&ch); + if (strchr(options, ch) != NULL) + (* extranum)++; + else if (!(ch == ' ' || ch == '\t')) { + printf("BAD OPTION CHARACTER: %c\n", ch); + exxit(-1); + } + } + scan_eoln(infile); +} /* readoptions */ + + +void matchoptions(Char *ch, const char *options) +{ /* match option characters to those in auxiliary options line */ + + *ch = gettc(infile); + uppercase(ch); + if (strchr(options, *ch) == NULL) { + printf("ERROR: Incorrect auxiliary options line"); + printf(" which starts with %c\n", *ch); + exxit(-1); + } +} /* matchoptions */ + + +void inputweightsold(long chars, steptr weight, boolean *weights) +{ + Char ch; + int i; + + for (i = 1; i < nmlngth ; i++) + getc(infile); + + for (i = 0; i < chars; i++) { + do { + if (eoln(infile)) + scan_eoln(infile); + ch = gettc(infile); + if (ch == '\n') + ch = ' '; + } while (ch == ' '); + weight[i] = 1; + if (isdigit(ch)) + weight[i] = ch - '0'; + else if (isalpha(ch)) { + uppercase(&ch); + weight[i] = ch - 'A' + 10; + } else { + printf("\n\nERROR: Bad weight character: %c\n\n", ch); + exxit(-1); + } + } + scan_eoln(infile); + *weights = true; +} /*inputweightsold*/ + + +void inputweights(long chars, steptr weight, boolean *weights) +{ + /* input the character weights, 0-9 and A-Z for weights 0 - 35 */ + Char ch; + long i; + + for (i = 0; i < chars; i++) { + do { + if (eoln(weightfile)) + scan_eoln(weightfile); + ch = gettc(weightfile); + if (ch == '\n') + ch = ' '; + } while (ch == ' '); + weight[i] = 1; + if (isdigit(ch)) + weight[i] = ch - '0'; + else if (isalpha(ch)) { + uppercase(&ch); + weight[i] = ch - 'A' + 10; + } else { + printf("\n\nERROR: Bad weight character: %c\n\n", ch); + exxit(-1); + } + } + scan_eoln(weightfile); + *weights = true; +} /* inputweights */ + + +void inputweights2(long a, long b, long *weightsum, + steptr weight, boolean *weights, const char *prog) +{ + /* input the character weights, 0 or 1 */ + Char ch; + long i; + + *weightsum = 0; + for (i = a; i < b; i++) { + do { + if (eoln(weightfile)) + scan_eoln(weightfile); + ch = gettc(weightfile); + } while (ch == ' '); + weight[i] = 1; + if (ch == '0' || ch == '1') + weight[i] = ch - '0'; + else { + printf("\n\nERROR: Bad weight character: %c -- ", ch); + printf("weights in %s must be 0 or 1\n", prog); + exxit(-1); + } + *weightsum += weight[i]; + } + *weights = true; + scan_eoln(weightfile); +} /* inputweights2 */ + + +void printweights(FILE *filename, long inc, long chars, + steptr weight, const char *letters) +{ + /* print out the weights of sites */ + long i, j; + boolean letterweights; + + letterweights = false; + for (i = 0; i < chars; i++) + if (weight[i] > 9) + letterweights = true; + fprintf(filename, "\n %s are weighted as follows:",letters); + if (letterweights) + fprintf(filename, " (A = 10, B = 11, etc.)\n"); + else + putc('\n', filename); + for (i = 0; i < chars; i++) { + if (i % 60 == 0) { + putc('\n', filename); + for (j = 1; j <= nmlngth + 3; j++) + putc(' ', filename); + } + if (weight[i+inc] < 10) + fprintf(filename, "%ld", weight[i + inc]); + else + fprintf(filename, "%c", 'A'-10+(int)weight[i + inc]); + if ((i+1) % 5 == 0 && (i+1) % 60 != 0) + putc(' ', filename); + } + fprintf(filename, "\n\n"); +} /* printweights */ + + +void inputcategs(long a, long b, steptr category, long categs,const char *prog) +{ + /* input the categories, 1-9 */ + Char ch; + long i; + + for (i = a; i < b; i++) { + do { + if (eoln(catfile)) + scan_eoln(catfile); + ch = gettc(catfile); + } while (ch == ' '); + if ((ch >= '1') && (ch <= ('0'+categs))) + category[i] = ch - '0'; + else { + printf("\n\nERROR: Bad category character: %c", ch); + printf(" -- categories in %s are currently 1-%ld\n", prog, categs); + exxit(-1); + } + } + scan_eoln(catfile); +} /* inputcategs */ + + +void printcategs(FILE *filename, long chars, steptr category, + const char *letters) +{ + /* print out the sitewise categories */ + long i, j; + + fprintf(filename, "\n %s are:\n",letters); + for (i = 0; i < chars; i++) { + if (i % 60 == 0) { + putc('\n', filename); + for (j = 1; j <= nmlngth + 3; j++) + putc(' ', filename); + } + fprintf(filename, "%ld", category[i]); + if ((i+1) % 10 == 0 && (i+1) % 60 != 0) + putc(' ', filename); + } + fprintf(filename, "\n\n"); +} /* printcategs */ + + +void inputfactors(long chars, Char *factor, boolean *factors) +{ + /* reads the factor symbols */ + long i; + + for (i = 0; i < (chars); i++) { + if (eoln(factfile)) + scan_eoln(factfile); + factor[i] = gettc(factfile); + if (factor[i] == '\n') + factor[i] = ' '; + } + scan_eoln(factfile); + *factors = true; +} /* inputfactors */ + + +void printfactors(FILE *filename, long chars, Char *factor, const char *letters) +{ + /* print out list of factor symbols */ + long i; + + fprintf(filename, "Factors%s:\n\n", letters); + for (i = 1; i <= nmlngth - 5; i++) + putc(' ', filename); + for (i = 1; i <= (chars); i++) { + newline(filename, i, 55, nmlngth + 3); + putc(factor[i - 1], filename); + if (i % 5 == 0) + putc(' ', filename); + } + putc('\n', filename); +} /* printfactors */ + + +void headings(long chars, const char *letters1, const char *letters2) +{ + long i, j; + + putc('\n', outfile); + j = nmlngth + (chars + (chars - 1) / 10) / 2 - 5; + if (j < nmlngth - 1) + j = nmlngth - 1; + if (j > 37) + j = 37; + fprintf(outfile, "Name"); + for (i = 1; i <= j; i++) + putc(' ', outfile); + fprintf(outfile, "%s\n", letters1); + fprintf(outfile, "----"); + for (i = 1; i <= j; i++) + putc(' ', outfile); + fprintf(outfile, "%s\n\n", letters2); +} /* headings */ + + +void initname(long i) +{ + /* read in species name */ + long j; + + for (j = 0; j < nmlngth; j++) { + if (eoff(infile) | eoln(infile)){ + printf("\n\nERROR: end-of-line or end-of-file"); + printf(" in the middle of species name for species %ld\n\n", i+1); + exxit(-1); + } + nayme[i][j] = gettc(infile); + if ((nayme[i][j] == '(') || (nayme[i][j] == ')') || (nayme[i][j] == ':') + || (nayme[i][j] == ',') || (nayme[i][j] == ';') || (nayme[i][j] == '[') + || (nayme[i][j] == ']')) { + printf("\nERROR: Species name may not contain characters ( ) : ; , [ ] \n"); + printf(" In name of species number %ld there is character %c\n\n", + i+1, nayme[i][j]); + exxit(-1); + } + } +} /* initname */ + + +void findtree(boolean *found,long *pos,long nextree,long *place,bestelm *bestrees) +{ + /* finds tree given by array place in array bestrees by binary search */ + /* used by dnacomp, dnapars, dollop, mix, & protpars */ + long i, lower, upper; + boolean below, done; + + below = false; + lower = 1; + upper = nextree - 1; + (*found) = false; + while (!(*found) && lower <= upper) { + (*pos) = (lower + upper) / 2; + i = 3; + done = false; + while (!done) { + done = (i > spp); + if (!done) + done = (place[i - 1] != bestrees[(*pos) - 1].btree[i - 1]); + if (!done) + i++; + } + (*found) = (i > spp); + if (*found) + break; + below = (place[i - 1] < bestrees[(*pos )- 1].btree[i - 1]); + if (below) + upper = (*pos) - 1; + else + lower = (*pos) + 1; + } + if (!(*found) && !below) + (*pos)++; +} /* findtree */ + + +void addtree(long pos,long *nextree,boolean collapse,long *place,bestelm *bestrees) +{ + /* puts tree from array place in its proper position in array bestrees */ + /* used by dnacomp, dnapars, dollop, mix, & protpars */ + long i; + + for (i = *nextree - 1; i >= pos; i--){ + memcpy(bestrees[i].btree, bestrees[i - 1].btree, spp * sizeof(long)); + bestrees[i].gloreange = bestrees[i - 1].gloreange; + bestrees[i - 1].gloreange = false; + bestrees[i].locreange = bestrees[i - 1].locreange; + bestrees[i - 1].locreange = false; + bestrees[i].collapse = bestrees[i - 1].collapse; + } + for (i = 0; i < spp; i++) + bestrees[pos - 1].btree[i] = place[i]; + bestrees[pos - 1].collapse = collapse; + (*nextree)++; +} /* addtree */ + + +long findunrearranged(bestelm *bestrees, long nextree, boolean glob) +{ + /* finds bestree with either global or local field false */ + long i; + + if (glob) { + for (i = 0; i < nextree - 1; i++) + if (!bestrees[i].gloreange) + return i; + } else { + for (i = 0; i < nextree - 1; i++) + if (!bestrees[i].locreange) + return i; + } + return -1; +} /* findunrearranged */ + + +boolean torearrange(bestelm *bestrees, long nextree) +{ /* sees if any best tree is yet to be rearranged */ + + if (findunrearranged(bestrees, nextree, true) >= 0) + return true; + else if (findunrearranged(bestrees, nextree, false) >= 0) + return true; + else + return false; +} /* torearrange */ + + +void reducebestrees(bestelm *bestrees, long *nextree) +{ + /* finds best trees with collapsible branches and deletes them */ + long i, j; + + i = 0; + j = *nextree - 2; + do { + while (!bestrees[i].collapse && i < *nextree - 1) i++; + while (bestrees[j].collapse && j >= 0) j--; + if (i < j) { + memcpy(bestrees[i].btree, bestrees[j].btree, spp * sizeof(long)); + bestrees[i].gloreange = bestrees[j].gloreange; + bestrees[i].locreange = bestrees[j].locreange; + bestrees[i].collapse = false; + bestrees[j].collapse = true; + } + } while (i < j); + *nextree = i + 1; +} /* reducebestrees */ + + +void shellsort(double *a, long *b, long n) +{ /* Shell sort keeping a, b in same order */ + /* used by dnapenny, dolpenny, & penny */ + long gap, i, j, itemp; + double rtemp; + + gap = n / 2; + while (gap > 0) { + for (i = gap + 1; i <= n; i++) { + j = i - gap; + while (j > 0) { + if (a[j - 1] > a[j + gap - 1]) { + rtemp = a[j - 1]; + a[j - 1] = a[j + gap - 1]; + a[j + gap - 1] = rtemp; + itemp = b[j - 1]; + b[j - 1] = b[j + gap - 1]; + b[j + gap - 1] = itemp; + } + j -= gap; + } + } + gap /= 2; + } +} /* shellsort */ + + +void getch(Char *c, long *parens, FILE *treefile) +{ /* get next nonblank character */ + + do { + if (eoln(treefile)) + scan_eoln(treefile); + (*c) = gettc(treefile); + + if ((*c) == '\n' || (*c) == '\t') + (*c) = ' '; + } while ( *c == ' ' && !eoff(treefile) ); + if ((*c) == '(') + (*parens)++; + if ((*c) == ')') + (*parens)--; +} /* getch */ + + +void getch2(Char *c, long *parens) +{ /* get next nonblank character */ + do { + if (eoln(intree)) + scan_eoln(intree); + *c = gettc(intree); + if (*c == '\n' || *c == '\t') + *c = ' '; + } while (!(*c != ' ' || eoff(intree))); + if (*c == '(') + (*parens)++; + if (*c == ')') + (*parens)--; +} /* getch2 */ + + +void findch(Char c, Char *ch, long which) +{ /* scan forward until find character c */ + boolean done; + long dummy_parens; + done = false; + while (!done) { + if (c == ',') { + if (*ch == '(' || *ch == ')' || *ch == ';') { + printf( + "\n\nERROR in user tree %ld: unmatched parenthesis or missing comma\n\n", + which); + exxit(-1); + } else if (*ch == ',') + done = true; + } else if (c == ')') { + if (*ch == '(' || *ch == ',' || *ch == ';') { + printf("\n\nERROR in user tree %ld: ", which); + printf("unmatched parenthesis or non-bifurcated node\n\n"); + exxit(-1); + } else { + if (*ch == ')') + done = true; + } + } else if (c == ';') { + if (*ch != ';') { + printf("\n\nERROR in user tree %ld: ", which); + printf("unmatched parenthesis or missing semicolon\n\n"); + exxit(-1); + } else + done = true; + } + if (*ch != ')' && done) + continue; + getch(ch, &dummy_parens, intree); + } +} /* findch */ + + +void findch2(Char c, long *lparens, long *rparens, Char *ch) +{ /* skip forward in user tree until find character c */ + boolean done; + long dummy_parens; + done = false; + while (!done) { + if (c == ',') { + if (*ch == '(' || *ch == ')' || *ch == ':' || *ch == ';') { + printf("\n\nERROR in user tree: "); + printf("unmatched parenthesis, missing comma"); + printf(" or non-trifurcated base\n\n"); + exxit(-1); + } else if (*ch == ',') + done = true; + } else if (c == ')') { + if (*ch == '(' || *ch == ',' || *ch == ':' || *ch == ';') { + printf( + "\n\nERROR in user tree: unmatched parenthesis or non-bifurcated node\n\n"); + exxit(-1); + } else if (*ch == ')') { + (*rparens)++; + if ((*lparens) > 0 && (*lparens) == (*rparens)) { + if ((*lparens) == spp - 2) { + getch(ch, &dummy_parens, intree); + if (*ch != ';') { + printf( "\n\nERROR in user tree: "); + printf("unmatched parenthesis or missing semicolon\n\n"); + exxit(-1); + } + } + } + done = true; + } + } + if (*ch != ')' && done) + continue; + if (*ch == ')') + getch(ch, &dummy_parens, intree); + } +} /* findch2 */ + + +void processlength(double *valyew, double *divisor, Char *ch, + boolean *minusread, FILE *treefile, long *parens) +{ /* read a branch length from a treefile */ + long digit, ordzero; + boolean pointread; + + ordzero = '0'; + *minusread = false; + pointread = false; + *valyew = 0.0; + *divisor = 1.0; + getch(ch, parens, treefile); + digit = (long)(*ch - ordzero); + while ( ((digit <= 9) && (digit >= 0)) || *ch == '.' || *ch == '-') { + if (*ch == '.' ) + pointread = true; + else if (*ch == '-' ) + *minusread = true; + else { + *valyew = *valyew * 10.0 + digit; + if (pointread) + *divisor *= 10.0; + } + getch(ch, parens, treefile); + digit = (long)(*ch - ordzero); + } + if (*minusread) + *valyew = -(*valyew); +} /* processlength */ + + +void writename(long start, long n, long *enterorder) +{ /* write species name and number in entry order */ + long i, j; + + for (i = start; i < start+n; i++) { + printf(" %3ld. ", i+1); + for (j = 0; j < nmlngth; j++) + putchar(nayme[enterorder[i] - 1][j]); + putchar('\n'); + fflush(stdout); + } +} /* writename */ + + +void memerror() +{ + printf("Error allocating memory\n"); + exxit(-1); +} /* memerror */ + + +void odd_malloc(long x) +{ /* error message if attempt to malloc too little or too much memory */ + printf ("ERROR: a function asked for an inappropriate amount of memory:"); + printf (" %ld bytes\n", x); + printf (" This can mean one of two things:\n"); + printf (" 1. The input file is incorrect"); + printf (" (perhaps it was not saved as Text Only),\n"); + printf (" 2. There is a bug in the program.\n"); + printf (" Please check your input file carefully.\n"); + printf (" If it seems to be a bug, please mail joe@gs.washington.edu\n"); + printf (" with the name of the program, your computer system type,\n"); + printf (" a full description of the problem, and with the input data file.\n"); + printf (" (which should be in the body of the message, not as an Attachment).\n"); + + /* abort() can be used to crash */ + + exxit(-1); +} + + +MALLOCRETURN *mymalloc(long x) +{ /* wrapper for malloc, allowing error message if too little, too much */ + MALLOCRETURN *new_block; + + if ((x <= 0) || + (x > TOO_MUCH_MEMORY)) + odd_malloc(x); + + new_block = (MALLOCRETURN *)calloc(1,x); + + if (!new_block) { + memerror(); + return (MALLOCRETURN *) new_block; + } else + return (MALLOCRETURN *) new_block; +} /* mymalloc */ + + +void gnu(node **grbg, node **p) +{ /* this and the following are do-it-yourself garbage collectors. + Make a new node or pull one off the garbage list */ + + if (*grbg != NULL) { + *p = *grbg; + *grbg = (*grbg)->next; + } else + *p = (node *)Malloc(sizeof(node)); + + (*p)->back = NULL; + (*p)->next = NULL; + (*p)->tip = false; + (*p)->times_in_tree = 0.0; + (*p)->r = 0.0; + (*p)->theta = 0.0; + (*p)->x = NULL; + (*p)->protx = NULL; /* for the sake of proml */ +} /* gnu */ + + +void chuck(node **grbg, node *p) +{ /* collect garbage on p -- put it on front of garbage list */ + p->back = NULL; + p->next = *grbg; + *grbg = p; +} /* chuck */ + + +void zeronumnuc(node *p, long endsite) +{ + long i,j; + + for (i = 0; i < endsite; i++) + for (j = (long)A; j <= (long)O; j++) + p->numnuc[i][j] = 0; +} /* zeronumnuc */ + + +void zerodiscnumnuc(node *p, long endsite) +{ + long i,j; + + for (i = 0; i < endsite; i++) + for (j = (long)zero; j <= (long)seven; j++) + p->discnumnuc[i][j] = 0; +} /* zerodiscnumnuc */ + + +void allocnontip(node *p, long *zeros, long endsite) +{ /* allocate an interior node */ + /* used by dnacomp, dnapars, & dnapenny */ + + p->numsteps = (steptr)Malloc(endsite*sizeof(long)); + p->oldnumsteps = (steptr)Malloc(endsite*sizeof(long)); + p->base = (baseptr)Malloc(endsite*sizeof(long)); + p->oldbase = (baseptr)Malloc(endsite*sizeof(long)); + p->numnuc = (nucarray *)Malloc(endsite*sizeof(nucarray)); + memcpy(p->base, zeros, endsite*sizeof(long)); + memcpy(p->numsteps, zeros, endsite*sizeof(long)); + memcpy(p->oldbase, zeros, endsite*sizeof(long)); + memcpy(p->oldnumsteps, zeros, endsite*sizeof(long)); + zeronumnuc(p, endsite); +} /* allocnontip */ + + +void allocdiscnontip(node *p, long *zeros, unsigned char *zeros2, long endsite) +{ /* allocate an interior node */ + /* used by pars */ + + p->numsteps = (steptr)Malloc(endsite*sizeof(long)); + p->oldnumsteps = (steptr)Malloc(endsite*sizeof(long)); + p->discbase = (discbaseptr)Malloc(endsite*sizeof(unsigned char)); + p->olddiscbase = (discbaseptr)Malloc(endsite*sizeof(unsigned char)); + p->discnumnuc = (discnucarray *)Malloc(endsite*sizeof(discnucarray)); + memcpy(p->discbase, zeros2, endsite*sizeof(unsigned char)); + memcpy(p->numsteps, zeros, endsite*sizeof(long)); + memcpy(p->olddiscbase, zeros2, endsite*sizeof(unsigned char)); + memcpy(p->oldnumsteps, zeros, endsite*sizeof(long)); + zerodiscnumnuc(p, endsite); +} /* allocdiscnontip */ + + +void allocnode(node **anode, long *zeros, long endsite) +{ /* allocate a node */ + /* used by dnacomp, dnapars, & dnapenny */ + + *anode = (node *)Malloc(sizeof(node)); + allocnontip(*anode, zeros, endsite); +} /* allocnode */ + + +void allocdiscnode(node **anode, long *zeros, unsigned char *zeros2, + long endsite) +{ /* allocate a node */ + /* used by pars */ + + *anode = (node *)Malloc(sizeof(node)); + allocdiscnontip(*anode, zeros, zeros2, endsite); +} /* allocdiscnontip */ + + +void gnutreenode(node **grbg, node **p, long i, long endsite, long *zeros) +{ /* this and the following are do-it-yourself garbage collectors. + Make a new node or pull one off the garbage list */ + + if (*grbg != NULL) { + *p = *grbg; + *grbg = (*grbg)->next; + memcpy((*p)->numsteps, zeros, endsite*sizeof(long)); + memcpy((*p)->oldnumsteps, zeros, endsite*sizeof(long)); + memcpy((*p)->base, zeros, endsite*sizeof(long)); + memcpy((*p)->oldbase, zeros, endsite*sizeof(long)); + zeronumnuc(*p, endsite); + } else + allocnode(p, zeros, endsite); + (*p)->back = NULL; + (*p)->next = NULL; + (*p)->tip = false; + (*p)->visited = false; + (*p)->index = i; + (*p)->numdesc = 0; + (*p)->sumsteps = 0.0; +} /* gnutreenode */ + + +void gnudisctreenode(node **grbg, node **p, long i, + long endsite, long *zeros, unsigned char *zeros2) +{ /* this and the following are do-it-yourself garbage collectors. + Make a new node or pull one off the garbage list */ + + if (*grbg != NULL) { + *p = *grbg; + *grbg = (*grbg)->next; + memcpy((*p)->numsteps, zeros, endsite*sizeof(long)); + memcpy((*p)->oldnumsteps, zeros, endsite*sizeof(long)); + memcpy((*p)->discbase, zeros2, endsite*sizeof(unsigned char)); + memcpy((*p)->olddiscbase, zeros2, endsite*sizeof(unsigned char)); + zerodiscnumnuc(*p, endsite); + } else + allocdiscnode(p, zeros, zeros2, endsite); + (*p)->back = NULL; + (*p)->next = NULL; + (*p)->tip = false; + (*p)->visited = false; + (*p)->index = i; + (*p)->numdesc = 0; + (*p)->sumsteps = 0.0; +} /* gnudisctreenode */ + + +void chucktreenode(node **grbg, node *p) +{ /* collect garbage on p -- put it on front of garbage list */ + + p->back = NULL; + p->next = *grbg; + *grbg = p; +} /* chucktreenode */ + + +void setupnode(node *p, long i) +{ /* initialization of node pointers, variables */ + + p->next = NULL; + p->back = NULL; + p->times_in_tree = (double) i * 1.0; + p->index = i; + p->tip = false; +} /* setupnode */ + + +long count_sibs (node *p) +{ /* Count the number of nodes in a ring, return the total number of */ + /* nodes excluding the one passed into the function (siblings) */ + node *q; + long return_int = 0; + + if (p->tip) { + printf ("Error: the function count_sibs called on a tip. This is a bug.\n"); + exxit (-1); + } + + q = p->next; + while (q != p) { + if (q == NULL) { + printf ("Error: a loop of nodes was not closed.\n"); + exxit (-1); + } else { + return_int++; + q = q->next; + } + } + + return return_int; +} /* count_sibs */ + + +void inittrav (node *p) +{ /* traverse to set pointers uninitialized on inserting */ + long i, num_sibs; + node *sib_ptr; + + if (p == NULL) + return; + if (p->tip) + return; + num_sibs = count_sibs (p); + sib_ptr = p; + for (i=0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_ptr->initialized = false; + inittrav(sib_ptr->back); + } +} /* inittrav */ + + +void commentskipper(FILE ***intree, long *bracket) +{ /* skip over comment bracket contents in reading tree */ + char c; + + c = gettc(**intree); + + while (c != ']') { + + if(feof(**intree)) { + printf("\n\nERROR: Unmatched comment brackets\n\n"); + exxit(-1); + } + + if(c == '[') { + (*bracket)++; + commentskipper(intree, bracket); + } + c = gettc(**intree); + } + (*bracket)--; +} /* commentskipper */ + + +long countcomma(FILE **treefile, long *comma) +{ + /* Modified by Dan F. 11/10/96 */ + + /* The next line inserted so this function leaves the file pointing + to where it found it, not just re-winding it. */ + long orig_position = ftell (*treefile); + + Char c; + long lparen = 0; + long bracket = 0; + (*comma) = 0; + + + for (;;){ + c = getc(*treefile); + if (feof(*treefile)) + break; + if (c == ';') + break; + if (c == ',') + (*comma)++; + if (c == '(') + lparen++; + if (c == '[') { + bracket++; + commentskipper(&treefile, &bracket); + } + } + + /* Don't just rewind, */ + /* rewind (*treefile); */ + /* Re-set to where it pointed when the function was called */ + + fseek (*treefile, orig_position, SEEK_SET); + + return lparen + (*comma); +} /*countcomma*/ +/* countcomma rewritten so it passes back both lparen+comma to allocate nodep + and a pointer to the comma variable. This allows the tree to know how many + species exist, and the tips to be placed in the front of the nodep array */ + + +long countsemic(FILE **treefile) +{ /* Used to determine the number of user trees. Return + either a: the number of semicolons in the file outside comments + or b: the first integer in the file */ + Char c; + long return_val, semic = 0; + long bracket = 0; + + /* Eat all whitespace */ + c = gettc(*treefile); + while ((c == ' ') || + (c == '\t') || + (c == '\n')) { + c = gettc(*treefile); + } + + /* Then figure out if the first non-white character is a digit; if + so, return it */ + if (isdigit (c)) { + ungetc(c, *treefile); + fscanf((*treefile), "%ld", &return_val); + } else { + + /* Loop past all characters, count the number of semicolons + outside of comments */ + for (;;){ + c = fgetc(*treefile); + if (feof(*treefile)) + break; + if (c == ';') + semic++; + if (c == '[') { + bracket++; + commentskipper(&treefile, &bracket); + } + } + return_val = semic; + } + + rewind (*treefile); + return return_val; +} /* countsemic */ + + +void hookup(node *p, node *q) +{ /* hook together two nodes */ + + p->back = q; + q->back = p; +} /* hookup */ + + +void link_trees(long local_nextnum, long nodenum, long local_nodenum, + pointarray nodep) +{ + if(local_nextnum == 0) + hookup(nodep[nodenum],nodep[local_nodenum]); + else if(local_nextnum == 1) + hookup(nodep[nodenum], nodep[local_nodenum]->next); + else if(local_nextnum == 2) + hookup(nodep[nodenum],nodep[local_nodenum]->next->next); + else + printf("Error in Link_Trees()"); +} /* link_trees() */ + + +void allocate_nodep(pointarray *nodep, FILE **treefile, long *precalc_tips) +{ /* pre-compute space and allocate memory for nodep */ + + long numnodes; /* returns number commas & ( */ + long numcom = 0; /* returns number commas */ + + numnodes = countcomma(treefile, &numcom) + 1; + *nodep = (pointarray)Malloc(2*numnodes*sizeof(node *)); + + (*precalc_tips) = numcom + 1; /* this will be used in placing the + tip nodes in the front region of + nodep. Used for species check? */ +} /* allocate_nodep -plc */ + + +void malloc_pheno (node *p, long endsite, long rcategs) +{ /* Allocate the phenotype arrays; used by dnaml */ + long i; + + p->x = (phenotype)Malloc(endsite*sizeof(ratelike)); + p->underflows = Malloc(endsite * sizeof(double)); + for (i = 0; i < endsite; i++) + p->x[i] = (ratelike)Malloc(rcategs*sizeof(sitelike)); +} /* malloc_pheno */ + + +void malloc_ppheno (node *p,long endsite, long rcategs) +{ + /* Allocate the phenotype arrays; used by proml */ + long i; + + p->protx = (pphenotype)Malloc(endsite*sizeof(pratelike)); + p->underflows = Malloc(endsite*sizeof(double)); + + for (i = 0; i < endsite; i++) + p->protx[i] = (pratelike)Malloc(rcategs*sizeof(psitelike)); +} /* malloc_ppheno */ + + +long take_name_from_tree (Char *ch, Char *str, FILE *treefile) +{ + /* This loop takes in the name from the tree. + Return the length of the name string. */ + + long name_length = 0; + + do { + if ((*ch) == '_') + (*ch) = ' '; + str[name_length++] = (*ch); + if (eoln(treefile)) + scan_eoln(treefile); + (*ch) = gettc(treefile); + if (*ch == '\n') + *ch = ' '; + } while ((*ch) != ':' && (*ch) != ',' && (*ch) != ')' && + (*ch) != '[' && (*ch) != ';' && name_length <= MAXNCH); + return name_length; +} /* take_name_from_tree */ + + +void match_names_to_data (Char *str, pointarray treenode, node **p, long spp) +{ + /* This loop matches names taken from treefile to indexed names in + the data file */ + + boolean found; + long i, n; + + n = 1; + do { + found = true; + for (i = 0; i < nmlngth; i++) { + found = (found && ((str[i] == nayme[n - 1][i]) || + (((nayme[n - 1][i] == '_') && (str[i] == ' ')) || + ((nayme[n - 1][i] == ' ') && (str[i] == '\0'))))); + } + + if (found) + *p = treenode[n - 1]; + else + n++; + + } while (!(n > spp || found)); + + if (n > spp) { + printf("\n\nERROR: Cannot find species: "); + for (i = 0; (str[i] != '\0') && (i < MAXNCH); i++) + putchar(str[i]); + printf(" in data file\n\n"); + exxit(-1); + } +} /* match_names_to_data */ + + +void addelement(node **p, node *q, Char *ch, long *parens, FILE *treefile, + pointarray treenode, boolean *goteof, boolean *first, pointarray nodep, + long *nextnode, long *ntips, boolean *haslengths, node **grbg, + initptr initnode,boolean unifok, long maxnodes) +{ + /* Recursive procedure adds nodes to user-defined tree + This is the main (new) tree-reading procedure */ + + node *pfirst; + long i, len = 0, nodei = 0; + boolean notlast; + Char str[MAXNCH]; + node *r; + long furs = 0; + + if ((*ch) == '(') { + (*nextnode)++; /* get ready to use new interior node */ + nodei = *nextnode; /* do what needs to be done at bottom */ + if ( maxnodes != -1 && nodei > maxnodes) { + printf("ERROR in input tree file: Attempting to allocate too\n"); + printf("many nodes. This is usually caused by a unifurcation."); + printf("To use this tree with this program use Retree to read\n"); + printf("and write this tree.\n"); + exxit(-1); + } + (*initnode)(p, grbg, q, len, nodei, ntips, + parens, bottom, treenode, nodep, str, ch, treefile); + pfirst = (*p); + notlast = true; + while (notlast) { /* loop through immediate descendants */ + furs++; + (*initnode)(&(*p)->next, grbg, q, + len, nodei, ntips, parens, nonbottom, treenode, + nodep, str, ch, treefile); + /* ... doing what is done before each */ + r = (*p)->next; + getch(ch, parens, treefile); /* look for next character */ + + /* handle blank names */ + if((*ch) == ',' || (*ch) == ':'){ + ungetc((*ch), treefile); + *ch = 0; + } else if((*ch)==')'){ + ungetc((*ch), treefile); + (*parens)++; + *ch = 0; + } + + addelement(&(*p)->next->back, (*p)->next, ch, parens, treefile, + treenode, goteof, first, nodep, nextnode, ntips, + haslengths, grbg, initnode,unifok,maxnodes); + + (*initnode)(&r, grbg, q, len, nodei, ntips, + parens, hslength, treenode, nodep, str, ch, treefile); + /* do what is done after each about length */ + pfirst->numdesc++; /* increment number of descendants */ + *p = r; /* make r point back to p */ + + if ((*ch) == ')') { + notlast = false; + do { + getch(ch, parens, treefile); + } while ((*ch) != ',' && (*ch) != ')' && + (*ch) != '[' && (*ch) != ';' && (*ch) != ':'); + } + } + if ( furs <= 1 && !unifok ) { + printf("ERROR in input tree file: A Unifurcation was detetected.\n"); + printf("To use this tree with this program use retree to read and"); + printf(" write this tree\n"); + exxit(-1); + } + + (*p)->next = pfirst; + (*p) = pfirst; + + } else if ((*ch) != ')') { /* if it's a species name */ + for (i = 0; i < MAXNCH; i++) /* fill string with nulls */ + str[i] = '\0'; + + len = take_name_from_tree (ch, str, treefile); /* get the name */ + + if ((*ch) == ')') + (*parens)--; /* decrement count of open parentheses */ + (*initnode)(p, grbg, q, len, nodei, ntips, + parens, tip, treenode, nodep, str, ch, treefile); + /* do what needs to be done at a tip */ + } else + getch(ch, parens, treefile); + if (q != NULL) + hookup(q, (*p)); /* now hook up */ + (*initnode)(p, grbg, q, len, nodei, ntips, + parens, iter, treenode, nodep, str, ch, treefile); + /* do what needs to be done to variable iter */ + if ((*ch) == ':') + (*initnode)(p, grbg, q, len, nodei, ntips, + parens, length, treenode, nodep, str, ch, treefile); + /* do what needs to be done with length */ + else if ((*ch) != ';' && (*ch) != '[') + (*initnode)(p, grbg, q, len, nodei, ntips, + parens, hsnolength, treenode, nodep, str, ch, treefile); + /* ... or what needs to be done when no length */ + if ((*ch) == '[') + (*initnode)(p, grbg, q, len, nodei, ntips, + parens, treewt, treenode, nodep, str, ch, treefile); + /* ... for processing a tree weight */ + else if ((*ch) == ';') /* ... and at end of tree */ + (*initnode)(p, grbg, q, len, nodei, ntips, + parens, unittrwt, treenode, nodep, str, ch, treefile); +} /* addelement */ + + +void treeread (FILE *treefile, node **root, pointarray treenode, + boolean *goteof, boolean *first, pointarray nodep, + long *nextnode, boolean *haslengths, node **grbg, initptr initnode, + boolean unifok,long maxnodes) +{ + /* read in user-defined tree and set it up */ + char ch; + long parens = 0; + long ntips = 0; + + (*goteof) = false; + (*nextnode) = spp; + + /* eat blank lines */ + while (eoln(treefile) && !eoff(treefile)) + scan_eoln(treefile); + + if (eoff(treefile)) { + (*goteof) = true; + return; + } + + getch(&ch, &parens, treefile); + + while (ch != '(') { + /* Eat everything in the file (i.e. digits, tabs) until you + encounter an open-paren */ + getch(&ch, &parens, treefile); + } + (*haslengths) = true; + addelement(root, NULL, &ch, &parens, treefile, + treenode, goteof, first, nodep, nextnode, &ntips, + haslengths, grbg, initnode,unifok,maxnodes); + + /* Eat blank lines and end of current line*/ + do { + scan_eoln(treefile); + } + while (eoln(treefile) && !eoff(treefile)); + + (*first) = false; + if (parens != 0) { + printf("\n\nERROR in tree file: unmatched parentheses\n\n"); + exxit(-1); + } +} /* treeread */ + + +void addelement2(node *q, Char *ch, long *parens, FILE *treefile, + pointarray treenode, boolean lngths, double *trweight, boolean *goteof, + long *nextnode, long *ntips, long no_species, boolean *haslengths, + boolean unifok,long maxnodes) +{ + /* recursive procedure adds nodes to user-defined tree + -- old-style bifurcating-only version */ + node *pfirst = NULL, *p; + long i, len, current_loop_index; + boolean notlast, minusread; + Char str[MAXNCH]; + double valyew, divisor; + long furs = 0; + + if ((*ch) == '(') { + + current_loop_index = (*nextnode) + spp; + (*nextnode)++; + + if ( maxnodes != -1 && current_loop_index > maxnodes) { + printf("ERROR in intree file: Attempting to allocate too many nodes\n"); + printf("This is usually caused by a unifurcation. To use this\n"); + printf("intree with this program use retree to read and write\n"); + printf("this tree.\n"); + exxit(-1); + } + /* This is an assignment of an interior node */ + p = treenode[current_loop_index]; + pfirst = p; + notlast = true; + while (notlast) { + furs++; + /* This while loop goes through a circle (triad for + bifurcations) of nodes */ + p = p->next; + /* added to ensure that non base nodes in loops have indices */ + p->index = current_loop_index + 1; + + getch(ch, parens, treefile); + + addelement2(p, ch, parens, treefile, treenode, lngths, trweight, + goteof, nextnode, ntips, no_species, haslengths,unifok,maxnodes); + + if ((*ch) == ')') { + notlast = false; + do { + getch(ch, parens, treefile); + } while ((*ch) != ',' && (*ch) != ')' && + (*ch) != '[' && (*ch) != ';' && (*ch) != ':'); + } + } + if ( furs <= 1 && !unifok ) { + printf("ERROR in intree file: A Unifurcation was detetected.\n"); + printf("To use this intree with this program use retree to read and"); + printf(" write this tree\n"); + exxit(-1); + } + + } else if ((*ch) != ')') { + for (i = 0; i < MAXNCH; i++) + str[i] = '\0'; + len = take_name_from_tree (ch, str, treefile); + match_names_to_data (str, treenode, &p, spp); + pfirst = p; + if ((*ch) == ')') + (*parens)--; + (*ntips)++; + strncpy (p->nayme, str, len); + } else + getch(ch, parens, treefile); + + if ((*ch) == '[') { /* getting tree weight from last comment field */ + if (!eoln(treefile)) { + fscanf(treefile, "%lf", trweight); + getch(ch, parens, treefile); + if (*ch != ']') { + printf("\n\nERROR: Missing right square bracket\n\n"); + exxit(-1); + } + else { + getch(ch, parens, treefile); + if (*ch != ';') { + printf("\n\nERROR: Missing semicolon after square brackets\n\n"); + exxit(-1); + } + } + } + } + else if ((*ch) == ';') { + (*trweight) = 1.0 ; + if (!eoln(treefile)) + printf("WARNING: tree weight set to 1.0\n"); + } + else + (*haslengths) = ((*haslengths) && q == NULL); + + if (q != NULL) + hookup(q, pfirst); + + if ((*ch) == ':') { + processlength(&valyew, &divisor, ch, + &minusread, treefile, parens); + if (q != NULL) { + if (!minusread) + q->oldlen = valyew / divisor; + else + q->oldlen = 0.0; + if (lngths) { + q->v = valyew / divisor; + q->back->v = q->v; + q->iter = false; + q->back->iter = false; + q->back->iter = false; + } + } + } + +} /* addelement2 */ + + +void treeread2 (FILE *treefile, node **root, pointarray treenode, + boolean lngths, double *trweight, boolean *goteof, + boolean *haslengths, long *no_species,boolean unifok,long maxnodes) +{ + /* read in user-defined tree and set it up + -- old-style bifurcating-only version */ + char ch; + long parens = 0; + long ntips = 0; + long nextnode; + + (*goteof) = false; + nextnode = 0; + + /* Eats all blank lines at start of file */ + while (eoln(treefile) && !eoff(treefile)) + scan_eoln(treefile); + + if (eoff(treefile)) { + (*goteof) = true; + return; + } + + getch(&ch, &parens, treefile); + + while (ch != '(') { + /* Eat everything in the file (i.e. digits, tabs) until you + encounter an open-paren */ + getch(&ch, &parens, treefile); + } + + addelement2(NULL, &ch, &parens, treefile, treenode, lngths, trweight, + goteof, &nextnode, &ntips, (*no_species), haslengths,unifok,maxnodes); + (*root) = treenode[*no_species]; + + /*eat blank lines */ + while (eoln(treefile) && !eoff(treefile)) + scan_eoln(treefile); + + (*root)->oldlen = 0.0; + + if (parens != 0) { + printf("\n\nERROR in tree file: unmatched parentheses\n\n"); + exxit(-1); + } +} /* treeread2 */ + + +void exxit(int exitcode) +{ +#ifdef WIN32 + if (exitcode == 0) +#endif + exit (exitcode); +#ifdef WIN32 + else { + puts ("Hit Enter or Return to close program."); + puts(" You may have to hit Enter or Return twice."); + getchar (); + getchar (); + phyRestoreConsoleAttributes(); + exit (exitcode); + } +#endif +} /* exxit */ + + +char gettc(FILE* file) +{ /* catch eof's so that other functions not expecting an eof + * won't have to worry about it */ + int ch; + + ch=getc(file); + + if (ch == EOF ) { + puts("Unexpected End of File"); + exxit(-1); + } + + if ( ch == '\r' ) { + ch = getc(file); + if ( ch != '\n' ) + ungetc(ch,file); + ch = '\n'; + } + return ch; +} /* gettc */ + +void unroot(tree *t, long nonodes) +{ + /* used by fitch, restml and contml */ + if (t->start->back == NULL) { + if (t->start->next->back->tip) + t->start = t->start->next->next->back; + else t->start = t->start->next->back; + } + if (t->start->next->back == NULL) { + if (t->start->back->tip) + t->start = t->start->next->next->back; + else t->start = t->start->back; + } + if (t->start->next->next->back == NULL) { + if (t->start->back->tip) + t->start = t->start->next->back; + else t->start = t->start->back; + } + + + unroot_r(t->start,t->nodep,nonodes); + unroot_r(t->start->back, t->nodep, nonodes); +} + +void unroot_here(node* root, node** nodep, long nonodes) +{ + node* tmpnode; + double newl; + /* used by unroot */ + /* assumes bifurcation this is ok in the programs that use it */ + + + newl = root->next->oldlen + root->next->next->oldlen; + root->next->back->oldlen = newl; + root->next->next->back->oldlen = newl; + + newl = root->next->v + root->next->next->v; + root->next->back->v = newl; + root->next->next->back->v = newl; + + root->next->back->back=root->next->next->back; + root->next->next->back->back = root->next->back; + + while ( root->index != nonodes ) { + tmpnode = nodep[ root->index ]; + nodep[root->index] = root; + root->index++; + root->next->index++; + root->next->next->index++; + nodep[root->index - 2] = tmpnode; + tmpnode->index--; + tmpnode->next->index--; + tmpnode->next->next->index--; + } +} + +void unroot_r(node* p, node** nodep, long nonodes) +{ + /* used by unroot */ + node *q; + + if ( p->tip) return; + + q = p->next; + while ( q != p ) { + if (q->back == NULL) + unroot_here(q,nodep,nonodes); + else unroot_r(q->back,nodep,nonodes); + q = q->next; + } +} + +void clear_connections(tree *t, long nonodes) +{ + long i; + for ( i = 0 ; i < nonodes ; i++) { + if ( i > spp) { + t->nodep[i]->next->back = NULL; + t->nodep[i]->next->v = 0; + t->nodep[i]->next->next->back = NULL; + t->nodep[i]->next->next->v = 0; + } + t->nodep[i]->back = NULL; + t->nodep[i]->v = 0; + } +} + +#ifdef WIN32 +void phySaveConsoleAttributes() +{ + GetConsoleScreenBufferInfo( hConsoleOutput, &savecsbi ); +} /* PhySaveConsoleAttributes */ + + +void phySetConsoleAttributes() +{ + hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); + + phySaveConsoleAttributes(); + + SetConsoleTextAttribute(hConsoleOutput, + BACKGROUND_GREEN | BACKGROUND_BLUE | BACKGROUND_INTENSITY); +} /* phySetConsoleAttributes */ + + +void phyRestoreConsoleAttributes() +{ + COORD coordScreen = { 0, 0 }; + DWORD cCharsWritten; + DWORD dwConSize; + + dwConSize = savecsbi.dwSize.X * savecsbi.dwSize.Y; + + SetConsoleTextAttribute(hConsoleOutput, savecsbi.wAttributes); + + FillConsoleOutputAttribute( hConsoleOutput, savecsbi.wAttributes, + dwConSize, coordScreen, &cCharsWritten ); +} /* phyRestoreConsoleAttributes */ + + +void phyFillScreenColor() +{ + COORD coordScreen = { 0, 0 }; + DWORD cCharsWritten; + CONSOLE_SCREEN_BUFFER_INFO csbi; /* to get buffer info */ + DWORD dwConSize; + + GetConsoleScreenBufferInfo( hConsoleOutput, &csbi ); + dwConSize = csbi.dwSize.X * csbi.dwSize.Y; + + FillConsoleOutputAttribute( hConsoleOutput, csbi.wAttributes, + dwConSize, coordScreen, &cCharsWritten ); +} /* PhyFillScreenColor */ + + +void phyClearScreen() +{ + COORD coordScreen = { 0, 0 }; /* here's where we'll home the + cursor */ + DWORD cCharsWritten; + CONSOLE_SCREEN_BUFFER_INFO csbi; /* to get buffer info */ + DWORD dwConSize; /* number of character cells in + the current buffer */ + + /* get the number of character cells in the current buffer */ + + GetConsoleScreenBufferInfo( hConsoleOutput, &csbi ); + dwConSize = csbi.dwSize.X * csbi.dwSize.Y; + + /* fill the entire screen with blanks */ + + FillConsoleOutputCharacter( hConsoleOutput, (TCHAR) ' ', + dwConSize, coordScreen, &cCharsWritten ); + + /* get the current text attribute */ + + GetConsoleScreenBufferInfo( hConsoleOutput, &csbi ); + + /* now set the buffer's attributes accordingly */ + + FillConsoleOutputAttribute( hConsoleOutput, csbi.wAttributes, + dwConSize, coordScreen, &cCharsWritten ); + + /* put the cursor at (0, 0) */ + + SetConsoleCursorPosition( hConsoleOutput, coordScreen ); + return; +} /* PhyClearScreen */ +#endif + diff --git a/forester/archive/RIO/others/phylip_mod/src/phylip.h b/forester/archive/RIO/others/phylip_mod/src/phylip.h new file mode 100644 index 0000000..205d9de --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/phylip.h @@ -0,0 +1,607 @@ +/*Modified by Christian Zmasek. Use at your own risk.*/ + + +#ifndef _PHYLIP_H_ +#define _PHYLIP_H_ + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, Andrew Keeffe, + Mike Palczewski, Doug Buxton and Dan Fineman. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +#define VERSION "3.65" + +/* machine-specific stuff: + based on a number of factors in the library stdlib.h, we will try + to determine what kind of machine/compiler this program is being + built on. However, it doesn't always succeed. However, if you have + ANSI conforming C, it will probably work. + + We will try to figure out machine type + based on defines in stdio, and compiler-defined things as well.: */ + +#include +#include +#ifdef WIN32 +#include + +void phyClearScreen(void); +void phySaveConsoleAttributes(void); +void phySetConsoleAttributes(void); +void phyRestoreConsoleAttributes(void); +void phyFillScreenColor(void); + +#endif + +#ifdef GNUDOS +#define DJGPP +#define DOS +#endif + +#ifdef THINK_C +#define MAC +#endif +#ifdef __MWERKS__ +#ifndef WIN32 +#define MAC +#endif +#endif + +#ifdef __CMS_OPEN +#define CMS +#define EBCDIC true +#define INFILE "infile data" +#define OUTFILE "outfile data" +#define FONTFILE "fontfile data" +#define PLOTFILE "plotfile data" +#define INTREE "intree data" +#define INTREE2 "intree data 2" +#define OUTTREE "outtree data" +#define CATFILE "categories data" +#define WEIGHTFILE "weights data" +#define ANCFILE "ancestors data" +#define MIXFILE "mixture data" +#define FACTFILE "factors data" +#else +#define EBCDIC false +#define INFILE "infile" +#define OUTFILE "outfile" +#define FONTFILE "fontfile" /* on unix this might be /usr/local/lib/fontfile */ +#define PLOTFILE "plotfile" +#define INTREE "intree" +#define INTREE2 "intree2" +#define OUTTREE "outtree" +#define CATFILE "categories" +#define WEIGHTFILE "weights" +#define ANCFILE "ancestors" +#define MIXFILE "mixture" +#define FACTFILE "factors" +#endif + +#ifdef L_ctermid /* try and detect for sysV or V7. */ +#define SYSTEM_FIVE +#endif + +#ifdef sequent +#define SYSTEM_FIVE +#endif + +#ifndef SYSTEM_FIVE +#include +# if defined(_STDLIB_H_) || defined(_H_STDLIB) || defined(H_SCCSID) || defined(unix) +# define UNIX +# define MACHINE_TYPE "BSD Unix C" +# endif +#endif + + +#ifdef __STDIO_LOADED +#define VMS +#define MACHINE_TYPE "VAX/VMS C" +#endif + +#ifdef __WATCOMC__ +#define QUICKC +#define WATCOM +#define DOS +#include "graph.h" +#endif +/* watcom-c has graphics library calls that are almost identical to * + * quick-c, so the "QUICKC" symbol name stays. */ + + +#ifdef _QC +#define MACHINE_TYPE "MS-DOS / Quick C" +#define QUICKC +#include "graph.h" +#define DOS +#endif + +#ifdef _DOS_MODE +#define MACHINE_TYPE "MS-DOS /Microsoft C " +#define DOS /* DOS is always defined if on a DOS machine */ +#define MSC /* MSC is defined for microsoft C */ +#endif + +#ifdef __MSDOS__ /* TURBO c compiler, ONLY (no other DOS C compilers) */ +#define DOS +#define TURBOC +#include +#include +#endif + +#ifdef DJGPP /* DJ Delorie's original gnu C/C++ port */ +#include +#endif + +#ifndef MACHINE_TYPE +#define MACHINE_TYPE "ANSI C" +#endif + +#ifdef DOS +#define MALLOCRETURN void +#else +#define MALLOCRETURN void +#endif +#ifdef VMS +#define signed /* signed doesn't exist in VMS */ +#endif + +/* default screen types */ +/* if on a DOS but not a Windows system can use IBM PC screen controls */ +#ifdef DOS +#ifndef WIN32 +#define IBMCRT true +#define ANSICRT false +#endif +#endif +/* if on a Mac cannot use screen controls */ +#ifdef MAC +#define IBMCRT false +#define ANSICRT false +#endif +/* if on a Windows system can use IBM PC screen controls */ +#ifdef WIN32 +#define IBMCRT true +#define ANSICRT false +#endif +/* otherwise, let's assume we are on a Linux or Unix system + with ANSI terminal controls */ +#ifndef MAC +#ifndef DOS +#ifndef WIN32 +#define IBMCRT false +#define ANSICRT true +#endif +#endif +#endif + +#ifdef DJGPP +#undef MALLOCRETURN +#define MALLOCRETURN void +#endif + + +/* includes: */ +#ifdef UNIX +#include +#else +#include +#endif + +#include +#include + +#ifdef MAC +#ifdef DRAW +#include "interface.h" +#else +#include "macface.h" +#endif +#define getch gettch +#endif + +/* directory delimiters */ +#ifdef MAC +#define DELIMITER ':' +#else +#ifdef WIN32 +#define DELIMITER '\\' +#else +#define DELIMITER '/' +#endif +#endif + + +#define FClose(file) if (file) fclose(file) ; file=NULL +#define Malloc(x) mymalloc((long)x) + +typedef void *Anyptr; +#define Signed signed +#define Const const +#define Volatile volatile +#define Char char /* Characters (not bytes) */ +#define Static static /* Private global funcs and vars */ +#define Local static /* Nested functions */ + +typedef unsigned char boolean; + +#define true 1 +#define false 0 +#define SETBITS 31 + +MALLOCRETURN *mymalloc(long); + +#define FNMLNGTH 200 /* length of array to store a file name */ +#define MAXNCH 26 /*changed from to 20 to 26 by CZ 2006-07-28 */ +#define nmlngth 26 /*changed from to 10 to 26 by CZ 2006-07-28 */ /* number of characters in species name */ +#define maxcategs 9 /* maximum number of site types */ +#define maxcategs2 11 /* maximum number of site types + 2 */ +#define point "." +#define pointe '.' +#define down 2 +#define MAXSHIMOTREES 100 + +#define smoothings 4 /* number of passes through smoothing algorithm */ +#define iterations 4 /* number of iterates for each branch */ +#define epsilon 0.0001 /* small number used in makenewv */ +#define EPSILON 0.00001 /* small number used in hermite root-finding */ +#define initialv 0.1 /* starting branch length unless otherwise */ +#define over 60 /* maximum width all branches of tree on screen */ +#define SQRTPI 1.7724538509055160273 +#define SQRT2 1.4142135623730950488 + +#define NLRSAVES 5 /* number of views that need to be saved during local * + * rearrangement */ + +typedef long *steptr; +typedef long longer[6]; +typedef char naym[MAXNCH]; +typedef long *bitptr; +typedef double raterootarray[maxcategs2][maxcategs2]; + +typedef struct bestelm { + long *btree; + boolean gloreange; + boolean locreange; + boolean collapse; +} bestelm; + +extern FILE *infile, *outfile, *intree, *intree2, *outtree, + *weightfile, *catfile, *ancfile, *mixfile, *factfile; +extern long spp, words, bits; +extern boolean ibmpc, ansi, tranvsp; +extern naym *nayme; /* names of species */ + + +#define ebcdic EBCDIC + +typedef Char plotstring[MAXNCH]; + +/* Approx. 1GB, used to test for memory request errors */ +#define TOO_MUCH_MEMORY 1000000000 + + +/* The below pre-processor commands define the type used to store + group arrays. We can't use #elif for metrowerks, so we use + cascaded if statements */ +#include + +/* minimum double we feel safe with, anything less will be considered + underflow */ +#define MIN_DOUBLE 10e-100 + +/* K&R says that there should be a plus in front of the number, but no + machine we've seen actually uses one; we'll include it just in + case. */ +#define MAX_32BITS 2147483647 +#define MAX_32BITS_PLUS +2147483647 + +/* If ints are 4 bytes, use them */ +#if INT_MAX == MAX_32BITS +typedef int group_type; + +#else + #if INT_MAX == MAX_32BITS_PLUS + typedef int group_type; + + #else + /* Else, if longs are 4 bytes, use them */ + #if LONG_MAX == MAX_32BITS + typedef long group_type; + + #else + #if LONG_MAX == MAX_32BITS_PLUS + typedef long group_type; + + /* Default to longs */ + #else + typedef long group_type; + #endif + + #endif + #endif +#endif + +/* for many programs */ + +#define maxuser 1000 /* maximum number of user-defined trees */ + +typedef Char **sequence; + +typedef enum { + A, C, G, T, O +} bases; + +typedef enum { + alanine, arginine, asparagine, aspartic, cysteine, + glutamine, glutamic, glycine, histidine, isoleucine, + leucine, lysine, methionine, phenylalanine, proline, + serine, threonine, tryptophan, tyrosine, valine +} acids; + +/* for Pars */ + +typedef enum { + zero = 0, one, two, three, four, five, six, seven +} discbases; + +/* for Protpars */ + +typedef enum { + ala, arg, asn, asp, cys, gln, glu, gly, his, ileu, leu, lys, met, phe, pro, + ser1, ser2, thr, trp, tyr, val, del, stop, asx, glx, ser, unk, quest +} aas; + +typedef double sitelike[(long)T - (long)A + 1]; /* used in dnaml, dnadist */ +typedef double psitelike[(long)valine - (long)alanine + 1]; + /* used in proml */ + +typedef long *baseptr; /* baseptr used in dnapars, dnacomp & dnapenny */ +typedef long *baseptr2; /* baseptr used in dnamove */ +typedef unsigned char *discbaseptr; /* discbaseptr used in pars */ +typedef sitelike *ratelike; /* used in dnaml ... */ +typedef psitelike *pratelike; /* used in proml */ +typedef ratelike *phenotype; /* phenotype used in dnaml, dnamlk, dnadist */ +typedef pratelike *pphenotype; /* phenotype used in proml */ +typedef double *sitelike2; +typedef sitelike2 *phenotype2; /* phenotype2 used in restml */ +typedef double *phenotype3; /* for continuous char programs */ + +typedef double *vector; /* used in distance programs */ + +typedef long nucarray[(long)O - (long)A + 1]; +typedef long discnucarray[(long)seven - (long)zero + 1]; + +typedef enum { nocollap, tocollap, undefined } collapstates; + +typedef enum { bottom, nonbottom, hslength, tip, iter, length, + hsnolength, treewt, unittrwt } initops; + + +typedef double **transmatrix; +typedef transmatrix *transptr; /* transptr used in restml */ + +typedef long sitearray[3]; +typedef sitearray *seqptr; /* seqptr used in protpars */ + +typedef struct node { + struct node *next, *back; + plotstring nayme; + long naymlength, tipsabove, index; + double times_in_tree; /* Previously known as cons_index */ + double xcoord, ycoord; + long long_xcoord, long_ycoord; /* for use in cons. */ + double oldlen, length, r, theta, oldtheta, width, depth, + tipdist, lefttheta, righttheta; + group_type *nodeset; /* used by accumulate -plc */ + long ymin, ymax; /* used by printree -plc */ + boolean haslength; /* haslength used in dnamlk */ + boolean iter; /* iter used in dnaml, fitch & restml */ + boolean initialized; /* initialized used in dnamlk & restml */ + long branchnum; /* branchnum used in restml */ + phenotype x; /* x used in dnaml, dnamlk, dnadist */ + phenotype2 x2; /* x2 used in restml */ + phenotype3 view; /* contml etc */ + pphenotype protx; /* protx used in proml */ + aas *seq; /* the sequence used in protpars */ + seqptr siteset; /* temporary storage for aa's used in protpars*/ + double v, deltav, ssq; /* ssq used only in contrast */ + double bigv; /* bigv used in contml */ + double tyme, oldtyme; /* used in dnamlk */ + double t; /* time in kitsch */ + boolean sametime; /* bookkeeps scrunched nodes in kitsch */ + double weight; /* weight of node used by scrunch in kitsch */ + boolean processed; /* used by evaluate in kitsch */ + boolean deleted; /* true if node is deleted (retree) */ + boolean hasname; /* true if tip has a name (retree) */ + double beyond; /* distance beyond this node to most distant tip */ + /* (retree) */ + boolean deadend; /* true if no undeleted nodes beyond this node */ + /* (retree) */ + boolean onebranch; /* true if there is one undeleted node beyond */ + /* this node (retree) */ + struct node *onebranchnode; + /* if there is, a pointer to that node (retree)*/ + double onebranchlength; /* if there is, the distance from here to there*/ + /* (retree) */ + boolean onebranchhaslength; /* true if there is a valid combined length*/ + /* from here to there (retree) */ + collapstates collapse; /* used in dnapars & dnacomp */ + boolean tip; + boolean bottom; /* used in dnapars & dnacomp, disc char */ + boolean visited; /* used in dnapars & dnacomp disc char */ + baseptr base; /* the sequence in dnapars/comp/penny */ + discbaseptr discbase; /* the sequence in pars */ + baseptr2 base2; /* the sequence in dnamove */ + baseptr oldbase; /* record previous sequence */ + discbaseptr olddiscbase; /* record previous sequence */ + long numdesc; /* number of immediate descendants */ + nucarray *numnuc; /* bookkeeps number of nucleotides */ + discnucarray *discnumnuc; /* bookkeeps number of nucleotides */ + steptr numsteps; /* bookkeeps steps */ + steptr oldnumsteps; /* record previous steps */ + double sumsteps; /* bookkeeps sum of steps */ + nucarray cumlengths; /* bookkeeps cummulative minimum lengths */ + discnucarray disccumlengths; /* bookkeeps cummulative minimum lengths */ + nucarray numreconst; /* bookkeeps number of reconstructions */ + discnucarray discnumreconst; /* bookkeeps number of reconstructions */ + vector d, w; /* for distance matrix programs */ + double dist; /* dist used in fitch */ + bitptr stateone, statezero; /* discrete char programs */ + long maxpos; /* maxpos used in Clique */ + Char state; /* state used in Dnamove, Dolmove & Move */ + double* underflows; /* used to record underflow */ +} node; + +typedef node **pointarray; + +typedef struct tree { + pointarray nodep; + double likelihood; + transptr trans; /* restml */ + long *freetrans; /* restml */ + long transindex; /* restml */ + node *start; + node *root; +} tree; + +typedef void (*initptr)(node **, node **, node *, long, long, + long *, long *, initops, pointarray, + pointarray, Char *, Char *, FILE *); + +#ifndef OLDC +/* function prototypes */ +void scan_eoln(FILE *); +boolean eoff(FILE *); +boolean eoln(FILE *); +int filexists(char *); +const char* get_command_name (const char *); +void getstryng(char *); +void openfile(FILE **,const char *,const char *,const char *,const char *, + char *); +void cleerhome(void); +void loopcount(long *, long); +double randum(longer); +void randumize(longer, long *); +double normrand(longer); +long readlong(const char *); + +void uppercase(Char *); +void initseed(long *, long *, longer); +void initjumble(long *, long *, longer, long *); +void initoutgroup(long *, long); +void initthreshold(double *); +void initcatn(long *); +void initcategs(long, double *); +void initprobcat(long, double *, double *); +double logfac (long); +double halfroot(double (*func)(long , double), long, double, double); +double hermite(long, double); +void initlaguerrecat(long, double, double *, double *); +void root_hermite(long, double *); +void hermite_weight(long, double *, double *); +void inithermitcat(long, double, double *, double *); +void lgr(long, double, raterootarray); +double glaguerre(long, double, double); +void initgammacat(long, double, double *, double *); +void inithowmany(long *, long); +void inithowoften(long *); + +void initlambda(double *); +void initfreqs(double *, double *, double *, double *); +void initratio(double *); +void initpower(double *); +void initdatasets(long *); +void justweights(long *); +void initterminal(boolean *, boolean *); +void initnumlines(long *); +void initbestrees(bestelm *, long, boolean); +void newline(FILE *, long, long, long); + +void inputnumbers(long *, long *, long *, long); +void inputnumbersold(long *, long *, long *, long); +void inputnumbers2(long *, long *, long n); +void inputnumbers3(long *, long *); +void samenumsp(long *, long); +void samenumsp2(long); +void readoptions(long *, const char *); +void matchoptions(Char *, const char *); +void inputweights(long, steptr, boolean *); +void inputweightsold(long, steptr, boolean *); +void inputweights2(long, long, long *, steptr, boolean *, const char *); +void printweights(FILE *, long, long, steptr, const char *); + +void inputcategs(long, long, steptr, long, const char *); +void printcategs(FILE *, long, steptr, const char *); +void inputfactors(long, Char *, boolean *); +void inputfactorsnew(long, Char *, boolean *); +void printfactors(FILE *, long, Char *, const char *); +void headings(long, const char *, const char *); +void initname(long); +void findtree(boolean *,long *,long,long *,bestelm *); +void addtree(long,long *,boolean,long *,bestelm *); +long findunrearranged(bestelm *, long, boolean); +boolean torearrange(bestelm *, long); + +void reducebestrees(bestelm *, long *); +void shellsort(double *, long *, long); +void getch(Char *, long *, FILE *); +void getch2(Char *, long *); +void findch(Char, Char *, long); +void findch2(Char, long *, long *, Char *); +void findch3(Char, Char *, long, long); +void processlength(double *,double *,Char *,boolean *,FILE *,long *); +void writename(long, long, long *); +void memerror(void); + +void odd_malloc(long); + +void gnu(node **, node **); +void chuck(node **, node *); +void zeronumnuc(node *, long); +void zerodiscnumnuc(node *, long); +void allocnontip(node *, long *, long); +void allocdiscnontip(node *, long *, unsigned char *, long ); +void allocnode(node **, long *, long); +void allocdiscnode(node **, long *, unsigned char *, long ); +void gnutreenode(node **, node **, long, long, long *); +void gnudisctreenode(node **, node **, long , long, long *, + unsigned char *); + +void chucktreenode(node **, node *); +void setupnode(node *, long); +long count_sibs (node *); +void inittrav (node *); +void commentskipper(FILE ***, long *); +long countcomma(FILE **, long *); +long countsemic(FILE **); +void hookup(node *, node *); +void link_trees(long, long , long, pointarray); +void allocate_nodep(pointarray *, FILE **, long *); + +void malloc_pheno(node *, long, long); +void malloc_ppheno(node *, long, long); +long take_name_from_tree (Char *, Char *, FILE *); +void match_names_to_data (Char *, pointarray, node **, long); +void addelement(node **, node *, Char *, long *, FILE *, pointarray, + boolean *, boolean *, pointarray, long *, long *, boolean *, + node **, initptr,boolean,long); +void treeread (FILE *, node **, pointarray, boolean *, boolean *, + pointarray, long *, boolean *, node **, initptr,boolean,long); +void addelement2(node *, Char *, long *, FILE *, pointarray, boolean, + double *, boolean *, long *, long *, long, boolean *,boolean, + long); +void treeread2 (FILE *, node **, pointarray, boolean, double *, + boolean *, boolean *, long *,boolean,long); +void exxit (int); +void countup(long *loopcount, long maxcount); +char gettc(FILE* file); +void unroot_r(node* p,node ** nodep, long nonodes); +void unroot(tree* t,long nonodes); +void unroot_here(node* root, node** nodep, long nonodes); +void clear_connections(tree *t, long nonodes); +void init(int argc, char** argv); +#endif /* OLDC */ +#endif /* _PHYLIP_H_ */ diff --git a/forester/archive/RIO/others/phylip_mod/src/proml.c b/forester/archive/RIO/others/phylip_mod/src/proml.c new file mode 100644 index 0000000..0302897 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/proml.c @@ -0,0 +1,3202 @@ + +#include "phylip.h" +#include "seq.h" + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Joseph Felsenstein, Lucas Mix, Akiko Fuseki, Sean Lamont, + Andrew Keeffe, Dan Fineman, and Patrick Colacurcio. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + + +typedef long vall[maxcategs]; +typedef double contribarr[maxcategs]; + +#ifndef OLDC +/* function prototypes */ +void init_protmats(void); +void getoptions(void); +void makeprotfreqs(void); +void allocrest(void); +void doinit(void); +void inputoptions(void); +void input_protdata(long); +void makeweights(void); +void prot_makevalues(long, pointarray, long, long, sequence, steptr); +void prot_inittable(void); + +void alloc_pmatrix(long); +void getinput(void); +void inittravtree(node *); +void prot_nuview(node *); +void prot_slopecurv(node *, double, double *, double *, double *); +void makenewv(node *); +void update(node *); +void smooth(node *); +void make_pmatrix(double **, double **, double **, long, double, + double, double *, double **); +double prot_evaluate(node *, boolean); + +void treevaluate(void); +void promlcopy(tree *, tree *, long, long); +void proml_re_move(node **, node **); +void insert_(node *, node *, boolean); +void addtraverse(node *, node *, boolean); +void rearrange(node *, node *); +void proml_coordinates(node *, double, long *, double *); +void proml_printree(void); +void sigma(node *, double *, double *, double *); +void describe(node *); + +void prot_reconstr(node *, long); +void rectrav(node *, long, long); +void summarize(void); +void initpromlnode(node **, node **, node *, long, long, long *, long *, + initops, pointarray, pointarray, Char *, Char *, FILE *); +void dnaml_treeout(node *); +void buildnewtip(long, tree *); +void buildsimpletree(tree *); +void free_all_protx (long, pointarray); +void maketree(void); +void clean_up(void); +void globrearrange(void); +void proml_unroot(node* root, node** nodep, long nonodes) ; +void reallocsites(void); +void prot_freetable(void); +void free_pmatrix(long sib); +void alloclrsaves(void); +void freelrsaves(void); +void resetlrsaves(void); +/* function prototypes */ +#endif + + +long rcategs; +boolean haslengths; +long oldendsite=0; + +Char infilename[100], outfilename[100], intreename[100], outtreename[100], + catfilename[100], weightfilename[100]; +double *rate, *rrate, *probcat; +long nonodes2, sites, weightsum, categs, + datasets, ith, njumble, jumb; +long inseed, inseed0, parens; +boolean global, jumble, weights, trout, usertree, inserting = false, + ctgry, rctgry, auto_, hypstate, progress, mulsets, justwts, firstset, + improve, smoothit, polishing, lngths, gama, invar, usepmb, usepam, usejtt; +tree curtree, bestree, bestree2, priortree; +node *qwhere, *grbg, *addwhere; +double cv, alpha, lambda, invarfrac, bestyet; +long *enterorder; +steptr aliasweight; +contribarr *contribution, like, nulike, clai; +double **term, **slopeterm, **curveterm; +longer seed; +char *progname; +char aachar[26]="ARNDCQEGHILKMFPSTWYVBZX?*-"; +node **lrsaves; + +/* Local variables for maketree, propagated globally for c version: */ +long k, nextsp, numtrees, maxwhich, mx, mx0, mx1, shimotrees; +double dummy, maxlogl; +boolean succeeded, smoothed; +double **l0gf; +double *l0gl; +double **tbl; +Char ch, ch2; +long col; +vall *mp; + + +/* Variables introduced to allow for protein probability calculations */ +long max_num_sibs; /* maximum number of siblings used in a */ + /* nuview calculation. determines size */ + /* final size of pmatrices */ +double *eigmat; /* eig matrix variable */ +double **probmat; /* prob matrix variable */ +double ****dpmatrix; /* derivative of pmatrix */ +double ****ddpmatrix; /* derivative of xpmatrix */ +double *****pmatrices; /* matrix of probabilities of protien */ + /* conversion. The 5 subscripts refer */ + /* to sibs, rcategs, categs, final and */ + /* initial states, respectively. */ +double freqaa[20]; /* amino acid frequencies */ + +/* this JTT matrix decomposition thanks to Elisabeth Tillier */ +static double jtteigmat[] = +{0.0, -0.7031123, -0.6484345, -0.6086499, -0.5514432, +-0.772664, -0.8643413, -1.0620756, -0.9965552, -1.1671808, +-1.2222418,-0.4589201, -1.3103714, -1.4048038, -0.3170582, +-0.347935, -1.5311677, -1.6021194, -1.7991454, -1.8911888}; + +static double jttprobmat[20][20] = +{{0.076999996, 0.051000003, 0.043000004, 0.051999998, 0.019999996, 0.041, + 0.061999994, 0.073999997, 0.022999999, 0.052000004, 0.090999997, 0.058999988, + 0.024000007, 0.04, 0.050999992, 0.069, 0.059000006, 0.014000008, 0.032000004, + 0.066000005}, + {0.015604455, -0.068062363, 0.020106264, 0.070723273, 0.011702977, 0.009674053, + 0.074000798, -0.169750458, 0.005560808, -0.008208636, -0.012305869, + -0.063730179, -0.005674643, -0.02116828, 0.104586169, 0.016480839, 0.016765139, + 0.005936994, 0.006046367, -0.0082877}, + {-0.049778281, -0.007118197, 0.003801272, 0.070749616, 0.047506147, + 0.006447017, 0.090522425, -0.053620432, -0.008508175, 0.037170603, + 0.051805545, 0.015413608, 0.019939916, -0.008431976, -0.143511376, + -0.052486072, -0.032116542, -0.000860626, -0.02535993, 0.03843545}, + {-0.028906423, 0.092952047, -0.009615343, -0.067870117, 0.031970392, + 0.048338335, -0.054396304, -0.135916654, 0.017780083, 0.000129242, + 0.031267424, 0.116333586, 0.007499746, -0.032153596, 0.033517051, + -0.013719269, -0.00347293, -0.003291821, -0.02158326, -0.008862168}, + {0.037181176, -0.023106564, -0.004482225, -0.029899635, 0.118139633, + -0.032298569, -0.04683198, 0.05566988, -0.012622847, 0.002023096, + -0.043921088, -0.04792557, -0.003452711, -0.037744513, 0.020822974, + 0.036580187, 0.02331425, -0.004807711, -0.017504496, 0.01086673}, + {0.044754061, -0.002503471, 0.019452517, -0.015611487, -0.02152807, + -0.013131425, -0.03465365, -0.047928912, 0.020608851, 0.067843095, + -0.122130014, 0.002521499, 0.013021646, -0.082891087, -0.061590119, + 0.016270856, 0.051468938, 0.002079063, 0.081019713, 0.082927944}, + {0.058917882, 0.007320741, 0.025278141, 0.000357541, -0.002831285, + -0.032453034, -0.010177288, -0.069447924, -0.034467324, 0.011422358, + -0.128478324, 0.04309667, -0.015319944, 0.113302422, -0.035052393, + 0.046885372, 0.06185183, 0.00175743, -0.06224497, 0.020282093}, + {-0.014562092, 0.022522921, -0.007094389, 0.03480089, -0.000326144, + -0.124039037, 0.020577906, -0.005056454, -0.081841576, -0.004381786, + 0.030826152, 0.091261631, 0.008878828, -0.02829487, 0.042718836, + -0.011180886, -0.012719227, -0.000753926, 0.048062375, -0.009399129}, + {0.033789571, -0.013512235, 0.088010984, 0.017580292, -0.006608005, + -0.037836971, -0.061344686, -0.034268357, 0.018190209, -0.068484614, + 0.120024744, -0.00319321, -0.001349477, -0.03000546, -0.073063759, + 0.081912399, 0.0635245, 0.000197, -0.002481798, -0.09108114}, + {-0.113947615, 0.019230545, 0.088819683, 0.064832765, 0.001801467, + -0.063829682, -0.072001633, 0.018429333, 0.057465965, 0.043901014, + -0.048050874, -0.001705918, 0.022637173, 0.017404665, 0.043877902, + -0.017089594, -0.058489485, 0.000127498, -0.029357194, 0.025943972}, + {0.01512923, 0.023603725, 0.006681954, 0.012360216, -0.000181447, + -0.023011838, -0.008960024, -0.008533239, 0.012569835, 0.03216118, + 0.061986403, -0.001919083, -0.1400832, -0.010669741, -0.003919454, + -0.003707024, -0.026806029, -0.000611603, -0.001402648, 0.065312824}, + {-0.036405351, 0.020816769, 0.011408213, 0.019787053, 0.038897829, + 0.017641789, 0.020858533, -0.006067252, 0.028617353, -0.064259496, + -0.081676567, 0.024421823, -0.028751676, 0.07095096, -0.024199434, + -0.007513119, -0.028108766, -0.01198095, 0.111761119, -0.076198809}, + {0.060831772, 0.144097327, -0.069151377, 0.023754576, -0.003322955, + -0.071618574, 0.03353154, -0.02795295, 0.039519769, -0.023453968, + -0.000630308, -0.098024591, 0.017672997, 0.003813378, -0.009266499, + -0.011192111, 0.016013873, -0.002072968, -0.010022044, -0.012526904}, + {-0.050776604, 0.092833081, 0.044069596, 0.050523021, -0.002628417, + 0.076542572, -0.06388631, -0.00854892, -0.084725311, 0.017401063, + -0.006262541, -0.094457679, -0.002818678, -0.0044122, -0.002883973, + 0.028729685, -0.004961596, -0.001498627, 0.017994575, -0.000232779}, + {-0.01894566, -0.007760205, -0.015160993, -0.027254587, 0.009800903, + -0.013443561, -0.032896517, -0.022734138, -0.001983861, 0.00256111, + 0.024823166, -0.021256768, 0.001980052, 0.028136263, -0.012364384, + -0.013782446, -0.013061091, 0.111173981, 0.021702122, 0.00046654}, + {-0.009444193, -0.042106824, -0.02535015, -0.055125574, 0.006369612, + -0.02945416, -0.069922064, -0.067221068, -0.003004999, 0.053624311, + 0.128862984, -0.057245803, 0.025550508, 0.087741073, -0.001119043, + -0.012036202, -0.000913488, -0.034864475, 0.050124813, 0.055534723}, + {0.145782464, -0.024348311, -0.031216873, 0.106174443, 0.00202862, + 0.02653866, -0.113657267, -0.00755018, 0.000307232, -0.051241158, + 0.001310685, 0.035275877, 0.013308898, 0.002957626, -0.002925034, + -0.065362319, -0.071844582, 0.000475894, -0.000112419, 0.034097762}, + {0.079840455, 0.018769331, 0.078685899, -0.084329807, -0.00277264, + -0.010099754, 0.059700608, -0.019209715, -0.010442992, -0.042100476, + -0.006020556, -0.023061786, 0.017246106, -0.001572858, -0.006703785, + 0.056301316, -0.156787357, -0.000303638, 0.001498195, 0.051363455}, + {0.049628261, 0.016475144, 0.094141653, -0.04444633, 0.005206131, + -0.001827555, 0.02195624, 0.013066683, -0.010415582, -0.022338403, + 0.007837197, -0.023397671, -0.002507095, 0.005177694, 0.017109561, + -0.202340113, 0.069681441, 0.000120736, 0.002201146, 0.004670849}, + {0.089153689, 0.000233354, 0.010826822, -0.004273519, 0.001440618, + 0.000436077, 0.001182351, -0.002255508, -0.000700465, 0.150589876, + -0.003911914, -0.00050154, -0.004564983, 0.00012701, -0.001486973, + -0.018902754, -0.054748555, 0.000217377, -0.000319302, -0.162541651}}; + +/* this PMB matrix decomposition due to Elisabeth Tillier */ +static double pmbeigmat[20] = +{0.0000001586972220,-1.8416770496147100, -1.6025046986139100,-1.5801012515121300, +-1.4987794099715900,-1.3520794233801900,-1.3003469390479700,-1.2439503327631300, +-1.1962574080244200,-1.1383730501367500,-1.1153278910708000,-0.4934843510654760, +-0.5419014550215590,-0.9657997830826700,-0.6276075673757390,-0.6675927795018510, +-0.6932641383465870,-0.8897872681859630,-0.8382698977371710,-0.8074694642446040}; + +static double pmbprobmat[20][20] = +{{0.0771762457248147,0.0531913844998640,0.0393445076407294,0.0466756566755510, +0.0286348361997465,0.0312327748383639,0.0505410248721427,0.0767106611472993, +0.0258916271688597,0.0673140562194124,0.0965705469252199,0.0515979465932174, +0.0250628079438675,0.0503492018628350,0.0399908189418273,0.0641898881894471, +0.0517539616710987,0.0143507440546115,0.0357994592438322,0.0736218495862984}, +{0.0368263046116572,-0.0006728917107827,0.0008590805287740,-0.0002764255356960, +0.0020152937187455,0.0055743720652960,0.0003213317669367,0.0000449190281568, +-0.0004226254397134,0.1805040629634510,-0.0272246813586204,0.0005904606533477, +-0.0183743200073889,-0.0009194625608688,0.0008173657533167,-0.0262629806302238, +0.0265738757209787,0.0002176606241904,0.0021315644838566,-0.1823229927207580}, +{-0.0194800075560895,0.0012068088610652,-0.0008803318319596,-0.0016044273960017, +-0.0002938633803197,-0.0535796754602196,0.0155163896648621,-0.0015006360762140, +0.0021601372013703,0.0268513218744797,-0.1085292493742730,0.0149753083138452, +0.1346457366717310,-0.0009371698759829,0.0013501708044116,0.0346352293103622, +-0.0276963770242276,0.0003643142783940,0.0002074817333067,-0.0174108903914110}, +{0.0557839400850153,0.0023271577185437,0.0183481103396687,0.0023339480096311, +0.0002013267015151,-0.0227406863569852,0.0098644845475047,0.0064721276774396, +0.0001389408104210,-0.0473713878768274,-0.0086984445005797,0.0026913674934634, +0.0283724052562196,0.0001063665179457,0.0027442574779383,-0.1875312134708470, +0.1279864877057640,0.0005103347834563,0.0003155113168637,0.0081451082759554}, +{0.0037510125027265,0.0107095920636885,0.0147305410328404,-0.0112351252180332, +-0.0001500408626446,-0.1523450933729730,0.0611532413339872,-0.0005496748939503, +0.0048714378736644,-0.0003826320053999,0.0552010244407311,0.0482555671001955, +-0.0461664995115847,-0.0021165008617978,-0.0004574454232187,0.0233755883688949, +-0.0035484915422384,0.0009090698422851,0.0013840637687758,-0.0073895139302231}, +{-0.0111512564930024,0.1025460064723080,0.0396772456883791,-0.0298408501361294, +-0.0001656742634733,-0.0079876311843289,0.0712644184507945,-0.0010780604625230, +-0.0035880882043592,0.0021070399334252,0.0016716329894279,-0.1810123023850110, +0.0015141703608724,-0.0032700852781804,0.0035503782441679,0.0118634302028026, +0.0044561606458028,-0.0001576678495964,0.0023470722225751,-0.0027457045397157}, +{0.1474525743949170,-0.0054432538500293,0.0853848892349828,-0.0137787746207348, +-0.0008274830358513,0.0042248844582553,0.0019556229305563,-0.0164191435175148, +-0.0024501858854849,0.0120908948084233,-0.0381456105972653,0.0101271614855119, +-0.0061945941321859,0.0178841099895867,-0.0014577779202600,-0.0752120602555032, +-0.1426985695849920,0.0002862275078983,-0.0081191734261838,0.0313401149422531}, +{0.0542034611735289,-0.0078763926211829,0.0060433542506096,0.0033396210615510, +0.0013965072374079,0.0067798903832256,-0.0135291136622509,-0.0089982442731848, +-0.0056744537593887,-0.0766524225176246,0.1881210263933930,-0.0065875518675173, +0.0416627569300375,-0.0953804133524747,-0.0012559228448735,0.0101622644292547, +-0.0304742453119050,0.0011702318499737,0.0454733434783982,-0.1119239362388150}, +{0.1069409037912470,0.0805064400880297,-0.1127352030714600,0.1001181253523260, +-0.0021480427488769,-0.0332884841459003,-0.0679837575848452,-0.0043812841356657, +0.0153418716846395,-0.0079441315103188,-0.0121766182046363,-0.0381127991037620, +-0.0036338726532673,0.0195324059593791,-0.0020165963699984,-0.0061222685010268, +-0.0253761448771437,-0.0005246410999057,-0.0112205170502433,0.0052248485517237}, +{-0.0325247648326262,0.0238753651653669,0.0203684886605797,0.0295666232678825, +-0.0003946714764213,-0.0157242718469554,-0.0511737848084862,0.0084725632040180, +-0.0167068828528921,0.0686962159427527,-0.0659702890616198,-0.0014289912494271, +-0.0167000964093416,-0.1276689083678200,0.0036575057830967,-0.0205958145531018, +0.0000368919612829,0.0014413626622426,0.1064360941926030,0.0863372661517408}, +{-0.0463777468104402,0.0394712148670596,0.1118686750747160,0.0440711686389031, +-0.0026076286506751,-0.0268454015202516,-0.1464943067133240,-0.0137514051835380, +-0.0094395514284145,-0.0144124844774228,0.0249103379323744,-0.0071832157138676, +0.0035592787728526,0.0415627419826693,0.0027040097365669,0.0337523666612066, +0.0316121324137152,-0.0011350177559026,-0.0349998884574440,-0.0302651879823361}, +{0.0142360925194728,0.0413145623127025,0.0324976427846929,0.0580930922002398, +-0.0586974207121084,0.0202001168873069,0.0492204086749069,0.1126593173463060, +0.0116620013776662,-0.0780333711712066,-0.1109786767320410,0.0407775100936731, +-0.0205013161312652,-0.0653458585025237,0.0347351829703865,0.0304448983224773, +0.0068813748197884,-0.0189002309261882,-0.0334507528405279,-0.0668143558699485}, +{-0.0131548829657936,0.0044244322828034,-0.0050639951827271,-0.0038668197633889, +-0.1536822386530220,0.0026336969165336,0.0021585651200470,-0.0459233839062969, +0.0046854727140565,0.0393815434593599,0.0619554007991097,0.0027456299925622, +0.0117574347936383,0.0373018612990383,0.0024818527553328,-0.0133956606027299, +-0.0020457128424105,0.0154178819990401,0.0246524142683911,0.0275363065682921}, +{-0.1542307272455030,0.0364861558267547,-0.0090880407008181,0.0531673937889863, +0.0157585615170580,0.0029986538457297,0.0180194047699875,0.0652152443589317, +0.0266842840376180,0.0388457366405908,0.0856237634510719,0.0126955778952183, +0.0099593861698250,-0.0013941794862563,0.0294065511237513,-0.1151906949298290, +-0.0852991447389655,0.0028699120202636,-0.0332087026659522,0.0006811857297899}, +{0.0281300736924501,-0.0584072081898638,-0.0178386569847853,-0.0536470338171487, +-0.0186881656029960,-0.0240008730656106,-0.0541064820498883,0.2217137098936020, +-0.0260500001542033,0.0234505236798375,0.0311127151218573,-0.0494139126682672, +0.0057093465049849,0.0124937286655911,-0.0298322975915689,0.0006520211333102, +-0.0061018680727128,-0.0007081999479528,-0.0060523759094034,0.0215845995364623}, +{0.0295321046399105,-0.0088296411830544,-0.0065057049917325,-0.0053478115612781, +-0.0100646496794634,-0.0015473619084872,0.0008539960632865,-0.0376381933046211, +-0.0328135588935604,0.0672161874239480,0.0667626853916552,-0.0026511651464901, +0.0140451514222062,-0.0544836996133137,0.0427485157912094,0.0097455780205802, +0.0177309072915667,-0.0828759701187452,-0.0729504795471370,0.0670731961252313}, +{0.0082646581043963,-0.0319918630534466,-0.0188454445200422,-0.0374976353856606, +0.0037131290686848,-0.0132507796987883,-0.0306958830735725,-0.0044119395527308, +-0.0140786756619672,-0.0180512599925078,-0.0208243802903953,-0.0232202769398931, +-0.0063135878270273,0.0110442171178168,0.1824538048228460,-0.0006644614422758, +-0.0069909097436659,0.0255407650654681,0.0099119399501151,-0.0140911517070698}, +{0.0261344441524861,-0.0714454044548650,0.0159436926233439,0.0028462736216688, +-0.0044572637889080,-0.0089474834434532,-0.0177570282144517,-0.0153693244094452, +0.1160919467206400,0.0304911481385036,0.0047047513411774,-0.0456535116423972, +0.0004491494948617,-0.0767108879444462,-0.0012688533741441,0.0192445965934123, +0.0202321954782039,0.0281039933233607,-0.0590403018490048,0.0364080426546883}, +{0.0115826306265004,0.1340228176509380,-0.0236200652949049,-0.1284484655137340, +-0.0004742338006503,0.0127617346949511,-0.0428560878860394,0.0060030732454125, +0.0089182609926781,0.0085353834972860,0.0048464809638033,0.0709740071429510, +0.0029940462557054,-0.0483434904493132,-0.0071713680727884,-0.0036840391887209, +0.0031454003250096,0.0246243550241551,-0.0449551277644180,0.0111449232769393}, +{0.0140356721886765,-0.0196518236826680,0.0030517022326582,0.0582672093364850, +-0.0000973895685457,0.0021704767224292,0.0341806268602705,-0.0152035987563018, +-0.0903198657739177,0.0259623214586925,0.0155832497882743,-0.0040543568451651, +0.0036477631918247,-0.0532892744763217,-0.0142569373662724,0.0104500681408622, +0.0103483945857315,0.0679534422398752,-0.0768068882938636,0.0280289727046158}} +; + + +static double pameigmat[] = {0.0, -0.2350753691875762, -0.2701991863800379, + -0.2931612442853115, -0.4262492032364507, -0.5395980482561625, + -0.7141172690079523, -0.7392844756151318, -0.7781761342200766, + -0.810032066366362, -0.875299712761124, -1.048227332164386, + -1.109594097332267, -1.298616073142234, -1.342036228188581, + -1.552599145527578, -1.658762802054814, -1.74893445623765, + -1.933280832903272, -2.206353522613025}; + +static double pamprobmat[20][20] = + {{0.087683339901135, 0.04051291829598762, 0.04087846315185977, + 0.04771603459744777, 0.03247095396561266, 0.03784612688594957, + 0.0504933695604875, 0.0898249006830755, 0.03285885059543713, + 0.0357514442352119, 0.0852464099207521, 0.07910313444070642, + 0.01488243946396588, 0.04100101908956829, 0.05158026947089499, + 0.06975497205982451, 0.05832757042475474, 0.00931264523877807, + 0.03171540880870517, 0.06303972920984541}, + {0.01943453646811026, -0.004492574160484092, 0.007694891061220776, + 0.01278399096887701, 0.0106157418450234, 0.007542140341575122, + 0.01326994069032819, 0.02615565199894889, 0.003123125764490066, + 0.002204507682495444, -0.004782898215768979, 0.01204241965177619, + 0.0007847400096924341, -0.03043626073172116, 0.01221202591902536, + 0.01100527004684405, 0.01116495631339549, -0.0925364931988571, + -0.02622065387931562, 0.00843494142432107}, + {0.01855357100209072, 0.01493642835763868, 0.0127983090766285, + 0.0200533250704364, -0.1681898360107787, 0.01551657969909255, + 0.02128060163107209, 0.03100633591848964, 0.00845480845269879, + 0.000927149370785571, 0.00937207565817036, 0.03490557769673472, + 0.00300443019551563, -0.02590837220264415, 0.01329376859943192, + 0.006854110889741407, 0.01102593860528263, 0.003360844186685888, + -0.03459712356647764, 0.003351477369404443}, + {0.02690642688200102, 0.02131745801890152, 0.0143626616005213, + 0.02405101425725929, 0.05041008641436849, 0.01430925051050233, + 0.02362114036816964, 0.04688381789373886, 0.005250115453626377, + -0.02040112168595516, -0.0942720776915669, 0.03773004996758644, + -0.00822831940782616, -0.1164872809439224, 0.02286281877257392, + 0.02849551240669926, 0.01468856796295663, 0.02377110964207936, + -0.094380545436577, -0.02089068498518036}, + {0.00930172577225213, 0.01493463068441099, 0.020186920775608, + 0.02892154953912524, -0.01224593358361567, 0.01404228329986624, + 0.02671186617119041, 0.04537535161795231, 0.02229995804098249, + -0.04635704133961575, -0.1966910360247138, 0.02796648065439046, + -0.02263484732621436, 0.0440490503242072, 0.01148782948302166, + 0.01989170531824069, 0.001306805142981245, -0.005676690969116321, + 0.07680476281625202, -0.07967537039721849}, + {0.06602274245435476, -0.0966661981471856, -0.005241648783844579, + 0.00859135188171146, -0.007762129660943368, -0.02888965572526196, + 0.003592291525888222, 0.1668410669287673, -0.04082039290551406, + 0.005233775047553415, -0.01758244726137135, -0.1493955762326898, + -0.00855819137835548, 0.004211419253492328, 0.01929306335052688, + 0.03008056746359405, 0.0190444422412472, 0.005577189741419315, + 0.0000874156155112068, 0.02634091459108298}, + {0.01933897472880726, 0.05874583569377844, -0.02293534606228405, + -0.07206314017962175, -0.004580681581546643, -0.0628814337610561, + -0.0850783812795136, 0.07988417636610614, -0.0852798990133397, + 0.01649047166155952, -0.05416647263757423, 0.1089834536254064, + 0.005093403979413865, 0.02520300254161142, 0.0005951431406455604, + 0.02441251821224675, 0.02796099482240553, -0.002574933994926502, + -0.007172237553012804, 0.03002455129086954}, + {0.04041118479094272, -0.002476225672095412, -0.01494505811263243, + -0.03759443758599911, -0.00892246902492875, -0.003634714029239211, + -0.03085671837973749, -0.126176309029931, 0.005814031139083794, + 0.01313561962646063, -0.04760487162503322, -0.0490563712725484, + -0.005082243450421558, -0.01213634309383557, 0.1806666927079249, + 0.02111663336185495, 0.02963486860587087, -0.0000175020101657785, + 0.01197155383597686, 0.0357526792184636}, + {-0.01184769557720525, 0.01582776076338872, -0.006570708266564639, + -0.01471915653734024, 0.00894343616503608, 0.00562664968033149, + -0.01465878888356943, 0.05365282692645818, 0.00893509735776116, + -0.05879312944436473, 0.0806048683392995, -0.007722897986905326, + -0.001819943882718859, 0.0942535573077267, 0.07483883782251654, + 0.004354639673913651, -0.02828804845740341, -0.001318222184691827, + -0.07613149604246563, -0.1251675867732172}, + {0.00834167031558193, -0.01509357596974962, 0.007098172811092488, + 0.03127677418040319, 0.001992448468465455, 0.00915441566808454, + 0.03430175973499201, -0.0730648147535803, -0.001402707145575659, + 0.04780949194330815, -0.1115035603461273, -0.01292297197609604, + -0.005056270550868528, 0.1112053349612027, -0.03801929822379964, + -0.001191241001736563, 0.01872874622910247, 0.0005314214903865993, + -0.0882576318311789, 0.07607183599610171}, + {-0.01539460099727769, 0.04988596184297883, -0.01187240760647617, + -0.06987843637091853, -0.002490472846497859, 0.01009857892494956, + -0.07473588067847209, 0.0906009925879084, 0.1243612446505172, + 0.02152806401345371, -0.03504879644860233, -0.06680752427613573, + -0.005574485153629651, 0.001518282948127752, -0.01999168507510701, + -0.01478606199529457, -0.02203749419458996, -0.00132680708294333, + -0.01137505997867614, 0.05332658773667142}, + {-0.06104378736432388, 0.0869446603393548, -0.03298331234537257, + 0.03128515657456024, 0.003906358569208259, 0.03578694104193928, + 0.06241936133189683, 0.06182827284921748, -0.05566564263245907, + 0.02640868588189002, -0.01349751243059039, -0.05507866642582638, + -0.006671347738489326, -0.001470096466016046, 0.05185743641479938, + -0.07494697511168257, -0.1175185439057584, -0.001188074094105709, + 0.00937934805737347, 0.05024773745437657}, + {-0.07252555582124737, -0.116554459356382, 0.003605361887406413, + -0.00836518656029184, 0.004615715410745561, 0.005105376617651312, + -0.00944938657024391, 0.05602449420950007, 0.02722719610561933, + 0.01959357494748446, -0.0258655103753962, 0.1440733975689835, + 0.01446782819722976, 0.003718896062070054, 0.05825843045655135, + -0.06230154142733073, -0.07833704962300169, 0.003160836143568724, + -0.001169873777936648, 0.03471745590503304}, + {-0.03204352258752698, 0.01019272923862322, 0.04509668708733181, + 0.05756522429120813, -0.0004601149081726732, -0.0984718150777423, + -0.01107826100664925, -0.005680277810520585, 0.01962359392320817, + 0.01550006899131986, 0.05143956925922197, 0.02462476682588468, + -0.0888843861002653, -0.00171553583659411, 0.01606331750661664, + 0.001176847743518958, -0.02070972978912828, -0.000341523293579971, + -0.002654732745607882, 0.02075709428885848}, + {0.03595199666430258, -0.02800219615234468, -0.04341570015493925, + -0.0748275906176658, 0.0001051403676377422, 0.1137431321746627, + 0.005852087565974318, 0.003443037513847801, -0.02481931657706633, + -0.003651181839831423, 0.03195794176786321, 0.04135411406392523, + -0.07562030263210619, 0.001769332364699, -0.01984381173403915, + -0.005029750745010152, 0.02649253902476472, 0.000518085571702734, + 0.001062936684474851, 0.01295950668914449}, + {-0.16164552322896, -0.0006050035060464324, 0.0258380054414968, + 0.003188424740960557, -0.0002058911341821877, 0.03157555987384681, + -0.01678913462596107, 0.03096216145389774, -0.0133791110666919, + 0.1125249625204277, -0.00769017706442472, -0.02653938062180483, + -0.002555329863523985, -0.00861833362947954, 0.01775148884754278, + 0.02529310679774722, 0.0826243417011238, -0.0001036728183032624, + 0.001963562313294209, -0.0935900561309786}, + {0.1652394174588469, -0.002814245280784351, -0.0328982001821263, + -0.02000104712964131, 0.0002208121995725443, -0.02733462178511839, + 0.02648078162927627, -0.01788316626401427, 0.01630747623755998, + 0.1053849023838147, -0.005447706553811218, 0.01810876922536839, + -0.001808914710282444, -0.007687912115607397, -0.01332593672114388, + -0.02110750894891371, -0.07456116592983384, 0.000219072589592394, + 0.001270886972191055, -0.1083616930749109}, + {0.02453279389716254, -0.005820072356487439, 0.100260287284095, + 0.01277522280305745, -0.003184943445296999, 0.05814689527984152, + -0.0934012278200201, -0.03017986487349484, -0.03136625380994165, + 0.00988668352785117, -0.00358900410973142, -0.02017443675004764, + 0.000915384582922184, -0.001460963415183106, -0.01370112443251124, + 0.1130040979284457, -0.1196161771323699, -0.0005800211204222045, + -0.0006153403201024954, 0.00416806428223025}, + {-0.0778089244252535, -0.007055161182430869, -0.0349307504860869, + -0.0811915584276571, -0.004689825871599125, -0.03726108871471753, + 0.1072225647141469, -0.00917015113070944, 0.01381628985996913, + -0.00123227881492089, 0.001815954515275675, 0.005708744099349901, + -0.0001448985044877925, -0.001306578795561384, -0.006992743514185243, + 0.1744720240732789, -0.05353628497814023, -0.0007613684227234787, + -0.0003550282315997644, 0.01340106423804634}, + {-0.0159527329868513, -0.007622151568160798, -0.1389875105184963, + 0.1165051999914764, -0.002217810389087748, 0.01550003226513692, + -0.07427664222230566, -0.003371438498619264, 0.01385754771325365, + 0.004759020167383304, 0.001624078805220564, 0.02011638303109029, + -0.001717827082842178, -0.0007424036708598594, -0.003978884451898934, + 0.0866418927301209, -0.01280817739158123, -0.00023039242454603, + 0.002309205802479111, 0.0005926106991001195}}; + + +void init_protmats() +{ + long l, m; + + eigmat = (double *) Malloc (20 * sizeof(double)); + for (l = 0; l <= 19; l++) + if (usejtt) + eigmat[l] = jtteigmat[l]; + else { + if (usepmb) + eigmat[l] = pmbeigmat[l]; + else + eigmat[l] = pameigmat[l]; + } + probmat = (double **) Malloc (20 * sizeof(double *)); + for (l = 0; l <= 19; l++) + for (m= 0; m <= 19; m++) + if (usejtt) + probmat[l] = jttprobmat[l]; + else { + if (usepmb) + probmat[l] = pmbprobmat[l]; + else + probmat[l] = pamprobmat[l]; + } +} /* init_protmats */ + + +void getoptions() +{ + /* interactively set options */ + long i, loopcount, loopcount2; + Char ch; + boolean didchangecat, didchangercat; + double probsum; + + fprintf(outfile, "\nAmino acid sequence Maximum Likelihood"); + fprintf(outfile, " method, version %s\n\n",VERSION); + putchar('\n'); + ctgry = false; + didchangecat = false; + rctgry = false; + didchangercat = false; + categs = 1; + rcategs = 1; + auto_ = false; + gama = false; + global = false; + hypstate = false; + improve = false; + invar = false; + jumble = false; + njumble = 1; + lngths = false; + lambda = 1.0; + outgrno = 1; + outgropt = false; + trout = true; + usertree = false; + weights = false; + printdata = false; + progress = true; + treeprint = true; + usejtt = true; + usepmb = false; + usepam = false; + interleaved = true; + loopcount = 0; + for (;;){ + cleerhome(); + printf("Amino acid sequence Maximum Likelihood"); + printf(" method, version %s\n\n",VERSION); + printf("Settings for this run:\n"); + printf(" U Search for best tree? %s\n", + (usertree ? "No, use user trees in input file" : "Yes")); + if (usertree) { + printf(" L Use lengths from user trees? %s\n", + (lngths ? "Yes" : "No")); + } + printf(" P JTT, PMB or PAM probability model? %s\n", + usejtt ? "Jones-Taylor-Thornton" : + usepmb ? "Henikoff/Tillier PMB" : "Dayhoff PAM"); + printf(" C One category of sites?"); + if (!ctgry || categs == 1) + printf(" Yes\n"); + else + printf(" %ld categories of sites\n", categs); + printf(" R Rate variation among sites?"); + if (!rctgry) + printf(" constant rate of change\n"); + else { + if (gama) + printf(" Gamma distributed rates\n"); + else { + if (invar) + printf(" Gamma+Invariant sites\n"); + else + printf(" user-defined HMM of rates\n"); + } + printf(" A Rates at adjacent sites correlated?"); + if (!auto_) + printf(" No, they are independent\n"); + else + printf(" Yes, mean block length =%6.1f\n", 1.0 / lambda); + } + printf(" W Sites weighted? %s\n", + (weights ? "Yes" : "No")); + if (!usertree) { + printf(" S Speedier but rougher analysis? %s\n", + (improve ? "No, not rough" : "Yes")); + printf(" G Global rearrangements? %s\n", + (global ? "Yes" : "No")); + } + if (!usertree) { + printf(" J Randomize input order of sequences?"); + if (jumble) + printf(" Yes (seed =%8ld,%3ld times)\n", inseed0, njumble); + else + printf(" No. Use input order\n"); + } + printf(" O Outgroup root? %s%3ld\n", + (outgropt ? "Yes, at sequence number" : + "No, use as outgroup species"),outgrno); + printf(" M Analyze multiple data sets?"); + if (mulsets) + printf(" Yes, %2ld %s\n", datasets, + (justwts ? "sets of weights" : "data sets")); + else + printf(" No\n"); + printf(" I Input sequences interleaved? %s\n", + (interleaved ? "Yes" : "No, sequential")); + printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", + (ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)")); + printf(" 1 Print out the data at start of run %s\n", + (printdata ? "Yes" : "No")); + printf(" 2 Print indications of progress of run %s\n", + (progress ? "Yes" : "No")); + printf(" 3 Print out tree %s\n", + (treeprint ? "Yes" : "No")); + printf(" 4 Write out trees onto tree file? %s\n", + (trout ? "Yes" : "No")); + printf(" 5 Reconstruct hypothetical sequences? %s\n", + (hypstate ? "Yes" : "No")); + printf("\n Y to accept these or type the letter for one to change\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%c%*[^\n]", &ch); + getchar(); + if (ch == '\n') + ch = ' '; + uppercase(&ch); + if (ch == 'Y') + break; + if (strchr("UPLCRAWSGJOMI012345",ch) != NULL){ + switch (ch) { + + case 'C': + ctgry = !ctgry; + if (ctgry) { + printf("\nSitewise user-assigned categories:\n\n"); + initcatn(&categs); + if (rate){ + free(rate); + } + rate = (double *) Malloc(categs * sizeof(double)); + didchangecat = true; + initcategs(categs, rate); + } + break; + + case 'P': + if (usejtt) { + usejtt = false; + usepmb = true; + } else { + if (usepmb) { + usepmb = false; + usepam = true; + } else { + usepam = false; + usejtt = true; + } + } + break; + + case 'R': + if (!rctgry) { + rctgry = true; + gama = true; + } else { + if (gama) { + gama = false; + invar = true; + } else { + if (invar) + invar = false; + else + rctgry = false; + } + } + break; + + case 'A': + auto_ = !auto_; + if (auto_) + initlambda(&lambda); + break; + + case 'W': + weights = !weights; + break; + + case 'S': + improve = !improve; + break; + + case 'G': + global = !global; + break; + + case 'J': + jumble = !jumble; + if (jumble) + initjumble(&inseed, &inseed0, seed, &njumble); + else njumble = 1; + break; + + case 'L': + lngths = !lngths; + break; + + case 'O': + outgropt = !outgropt; + if (outgropt) + initoutgroup(&outgrno, spp); + break; + + case 'U': + usertree = !usertree; + break; + + case 'M': + mulsets = !mulsets; + if (mulsets) { + printf("Multiple data sets or multiple weights?"); + loopcount2 = 0; + do { + printf(" (type D or W)\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%c%*[^\n]", &ch2); + getchar(); + if (ch2 == '\n') + ch2 = ' '; + uppercase(&ch2); + countup(&loopcount2, 10); + } while ((ch2 != 'W') && (ch2 != 'D')); + justwts = (ch2 == 'W'); + if (justwts) + justweights(&datasets); + else + initdatasets(&datasets); + if (!jumble) { + jumble = true; + initjumble(&inseed, &inseed0, seed, &njumble); + } + } + break; + + case 'I': + interleaved = !interleaved; + break; + + case '0': + initterminal(&ibmpc, &ansi); + break; + + case '1': + printdata = !printdata; + break; + + case '2': + progress = !progress; + break; + + case '3': + treeprint = !treeprint; + break; + + case '4': + trout = !trout; + break; + + case '5': + hypstate = !hypstate; + break; + } + } else + printf("Not a possible option!\n"); + countup(&loopcount, 100); + } + if (gama || invar) { + loopcount = 0; + do { + printf( +"\nCoefficient of variation of substitution rate among sites (must be positive)\n"); + printf( + " In gamma distribution parameters, this is 1/(square root of alpha)\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%lf%*[^\n]", &cv); + getchar(); + countup(&loopcount, 10); + } while (cv <= 0.0); + alpha = 1.0 / (cv * cv); + } + if (!rctgry) + auto_ = false; + if (rctgry) { + printf("\nRates in HMM"); + if (invar) + printf(" (including one for invariant sites)"); + printf(":\n"); + initcatn(&rcategs); + if (probcat){ + free(probcat); + free(rrate); + } + probcat = (double *) Malloc(rcategs * sizeof(double)); + rrate = (double *) Malloc(rcategs * sizeof(double)); + didchangercat = true; + if (gama) + initgammacat(rcategs, alpha, rrate, probcat); + else { + if (invar) { + loopcount = 0; + do { + printf("Fraction of invariant sites?\n"); + scanf("%lf%*[^\n]", &invarfrac); + getchar(); + countup (&loopcount, 10); + } while ((invarfrac <= 0.0) || (invarfrac >= 1.0)); + initgammacat(rcategs-1, alpha, rrate, probcat); + for (i = 0; i < rcategs-1; i++) + probcat[i] = probcat[i]*(1.0-invarfrac); + probcat[rcategs-1] = invarfrac; + rrate[rcategs-1] = 0.0; + } else { + initcategs(rcategs, rrate); + initprobcat(rcategs, &probsum, probcat); + } + } + } + if (!didchangercat){ + rrate = (double *) Malloc(rcategs*sizeof(double)); + probcat = (double *) Malloc(rcategs*sizeof(double)); + rrate[0] = 1.0; + probcat[0] = 1.0; + } + if (!didchangecat) { + rate = (double *) Malloc(categs*sizeof(double)); + rate[0] = 1.0; + } + init_protmats(); +} /* getoptions */ + + +void makeprotfreqs() +{ + /* calculate amino acid frequencies based on eigmat */ + long i, mineig; + + mineig = 0; + for (i = 0; i <= 19; i++) + if (fabs(eigmat[i]) < fabs(eigmat[mineig])) + mineig = i; + memcpy(freqaa, probmat[mineig], 20 * sizeof(double)); + for (i = 0; i <= 19; i++) + freqaa[i] = fabs(freqaa[i]); +} /* makeprotfreqs */ + +void reallocsites() +{ + long i; + for (i = 0; i < spp; i++) + y[i] = (Char *) Malloc(sites*sizeof(Char)); + + free(category); + free(weight); + free(alias); + free(ally); + free(location); + free(aliasweight); + + category = (long *) Malloc(sites*sizeof(long)); + weight = (long *) Malloc(sites*sizeof(long)); + alias = (long *) Malloc(sites*sizeof(long)); + ally = (long *) Malloc(sites*sizeof(long)); + location = (long *) Malloc(sites*sizeof(long)); + aliasweight = (long *) Malloc(sites*sizeof(long)); + for (i = 0; i < sites; i++) + category[i] = 1; + for (i = 0; i < sites; i++) + weight[i] = 1; + makeweights(); +} + +void allocrest() +{ + long i; + + y = (Char **) Malloc(spp*sizeof(Char *)); + for (i = 0; i < spp; i++) + y[i] = (Char *) Malloc(sites*sizeof(Char)); + nayme = (naym *) Malloc(spp*sizeof(naym)); + enterorder = (long *) Malloc(spp*sizeof(long)); + category = (long *) Malloc(sites*sizeof(long)); + weight = (long *) Malloc(sites*sizeof(long)); + alias = (long *) Malloc(sites*sizeof(long)); + ally = (long *) Malloc(sites*sizeof(long)); + location = (long *) Malloc(sites*sizeof(long)); + aliasweight = (long *) Malloc(sites*sizeof(long)); +} /* allocrest */ + + +void doinit() +{ /* initializes variables */ + inputnumbers(&spp, &sites, &nonodes2, 1); + getoptions(); + if (!usertree) + nonodes2--; + makeprotfreqs(); + if (printdata) + fprintf(outfile, "%2ld species, %3ld sites\n", spp, sites); + alloctree(&curtree.nodep, nonodes2, usertree); + allocrest(); + if (usertree) + return; + alloctree(&bestree.nodep, nonodes2, 0); + alloctree(&priortree.nodep, nonodes2, 0); + if (njumble <= 1) + return; + alloctree(&bestree2.nodep, nonodes2, 0); +} /* doinit */ + + +void inputoptions() +{ + long i; + + if (!firstset) { + samenumsp(&sites, ith); + reallocsites(); + } + if (firstset) { + for (i = 0; i < sites; i++) + category[i] = 1; + for (i = 0; i < sites; i++) + weight[i] = 1; + } + if (justwts || weights) + inputweights(sites, weight, &weights); + weightsum = 0; + for (i = 0; i < sites; i++) + weightsum += weight[i]; + if ((ctgry && categs > 1) && (firstset || !justwts)) { + inputcategs(0, sites, category, categs, "ProML"); + if (printdata) + printcategs(outfile, sites, category, "Site categories"); + } + if (weights && printdata) + printweights(outfile, 0, sites, weight, "Sites"); + fprintf(outfile, "%s model of amino acid change\n\n", + (usejtt ? "Jones-Taylor-Thornton" : + usepmb ? "Henikoff/Tillier PMB" : "Dayhoff PAM")); +} /* inputoptions */ + + +void input_protdata(long chars) +{ + /* input the names and sequences for each species */ + /* used by proml */ + long i, j, k, l, basesread, basesnew; + Char charstate; + boolean allread, done; + + if (printdata) + headings(chars, "Sequences", "---------"); + basesread = 0; + basesnew = 0; + allread = false; + while (!(allread)) { + /* eat white space -- if the separator line has spaces on it*/ + do { + charstate = gettc(infile); + } while (charstate == ' ' || charstate == '\t'); + ungetc(charstate, infile); + if (eoln(infile)) + scan_eoln(infile); + i = 1; + while (i <= spp) { + if ((interleaved && basesread == 0) || !interleaved) + initname(i - 1); + j = (interleaved) ? basesread : 0; + done = false; + while (!done && !eoff(infile)) { + if (interleaved) + done = true; + while (j < chars && !(eoln(infile) || eoff(infile))) { + charstate = gettc(infile); + if (charstate == '\n' || charstate == '\t') + charstate = ' '; + if (charstate == ' ' || (charstate >= '0' && charstate <= '9')) + continue; + uppercase(&charstate); + if ((strchr("ABCDEFGHIKLMNPQRSTVWXYZ*?-", charstate)) == NULL) { + printf("ERROR: bad amino acid: %c at position %ld of species %ld\n", + charstate, j+1, i); + if (charstate == '.') { + printf(" Periods (.) may not be used as gap characters.\n"); + printf(" The correct gap character is (-)\n"); + } + exxit(-1); + } + j++; + y[i - 1][j - 1] = charstate; + } + if (interleaved) + continue; + if (j < chars) + scan_eoln(infile); + else if (j == chars) + done = true; + } + if (interleaved && i == 1) + basesnew = j; + + scan_eoln(infile); + + if ((interleaved && j != basesnew) || + (!interleaved && j != chars)) { + printf("ERROR: SEQUENCES OUT OF ALIGNMENT AT POSITION %ld.\n", j); + exxit(-1); + } + i++; + } + + if (interleaved) { + basesread = basesnew; + allread = (basesread == chars); + } else + allread = (i > spp); + } + if (!printdata) + return; + for (i = 1; i <= ((chars - 1) / 60 + 1); i++) { + for (j = 1; j <= spp; j++) { + for (k = 0; k < nmlngth; k++) + putc(nayme[j - 1][k], outfile); + fprintf(outfile, " "); + l = i * 60; + if (l > chars) + l = chars; + for (k = (i - 1) * 60 + 1; k <= l; k++) { + if (j > 1 && y[j - 1][k - 1] == y[0][k - 1]) + charstate = '.'; + else + charstate = y[j - 1][k - 1]; + putc(charstate, outfile); + if (k % 10 == 0 && k % 60 != 0) + putc(' ', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); +} /* input_protdata */ + + +void makeweights() +{ + /* make up weights vector to avoid duplicate computations */ + long i; + + for (i = 1; i <= sites; i++) { + alias[i - 1] = i; + ally[i - 1] = 0; + aliasweight[i - 1] = weight[i - 1]; + location[i - 1] = 0; + } + sitesort2 (sites, aliasweight); + sitecombine2(sites, aliasweight); + sitescrunch2(sites, 1, 2, aliasweight); + for (i = 1; i <= sites; i++) { + if (aliasweight[i - 1] > 0) + endsite = i; + } + for (i = 1; i <= endsite; i++) { + location[alias[i - 1] - 1] = i; + ally[alias[i - 1] - 1] = alias[i - 1]; + } + term = (double **) Malloc(endsite * sizeof(double *)); + for (i = 0; i < endsite; i++) + term[i] = (double *) Malloc(rcategs * sizeof(double)); + slopeterm = (double **) Malloc(endsite * sizeof(double *)); + for (i = 0; i < endsite; i++) + slopeterm[i] = (double *) Malloc(rcategs * sizeof(double)); + curveterm = (double **) Malloc(endsite * sizeof(double *)); + for (i = 0; i < endsite; i++) + curveterm[i] = (double *) Malloc(rcategs * sizeof(double)); + mp = (vall *) Malloc(sites*sizeof(vall)); + contribution = (contribarr *) Malloc(endsite*sizeof(contribarr)); +} /* makeweights */ + + +void prot_makevalues(long categs, pointarray treenode, long endsite, + long spp, sequence y, steptr alias) +{ + /* set up fractional likelihoods at tips */ + /* a version of makevalues2 found in seq.c */ + /* used by proml */ + long i, j, k, l; + long b; + + for (k = 0; k < endsite; k++) { + j = alias[k]; + for (i = 0; i < spp; i++) { + for (l = 0; l < categs; l++) { + memset(treenode[i]->protx[k][l], 0, sizeof(double)*20); + switch (y[i][j - 1]) { + + case 'A': + treenode[i]->protx[k][l][0] = 1.0; + break; + + case 'R': + treenode[i]->protx[k][l][(long)arginine - (long)alanine] = 1.0; + break; + + case 'N': + treenode[i]->protx[k][l][(long)asparagine - (long)alanine] = 1.0; + break; + + case 'D': + treenode[i]->protx[k][l][(long)aspartic - (long)alanine] = 1.0; + break; + + case 'C': + treenode[i]->protx[k][l][(long)cysteine - (long)alanine] = 1.0; + break; + + case 'Q': + treenode[i]->protx[k][l][(long)glutamine - (long)alanine] = 1.0; + break; + + case 'E': + treenode[i]->protx[k][l][(long)glutamic - (long)alanine] = 1.0; + break; + + case 'G': + treenode[i]->protx[k][l][(long)glycine - (long)alanine] = 1.0; + break; + + case 'H': + treenode[i]->protx[k][l][(long)histidine - (long)alanine] = 1.0; + break; + + case 'I': + treenode[i]->protx[k][l][(long)isoleucine - (long)alanine] = 1.0; + break; + + case 'L': + treenode[i]->protx[k][l][(long)leucine - (long)alanine] = 1.0; + break; + + case 'K': + treenode[i]->protx[k][l][(long)lysine - (long)alanine] = 1.0; + break; + + case 'M': + treenode[i]->protx[k][l][(long)methionine - (long)alanine] = 1.0; + break; + + case 'F': + treenode[i]->protx[k][l][(long)phenylalanine - (long)alanine] = 1.0; + break; + + case 'P': + treenode[i]->protx[k][l][(long)proline - (long)alanine] = 1.0; + break; + + case 'S': + treenode[i]->protx[k][l][(long)serine - (long)alanine] = 1.0; + break; + + case 'T': + treenode[i]->protx[k][l][(long)threonine - (long)alanine] = 1.0; + break; + + case 'W': + treenode[i]->protx[k][l][(long)tryptophan - (long)alanine] = 1.0; + break; + + case 'Y': + treenode[i]->protx[k][l][(long)tyrosine - (long)alanine] = 1.0; + break; + + case 'V': + treenode[i]->protx[k][l][(long)valine - (long)alanine] = 1.0; + break; + + case 'B': + treenode[i]->protx[k][l][(long)asparagine - (long)alanine] = 1.0; + treenode[i]->protx[k][l][(long)aspartic - (long)alanine] = 1.0; + break; + + case 'Z': + treenode[i]->protx[k][l][(long)glutamine - (long)alanine] = 1.0; + treenode[i]->protx[k][l][(long)glutamic - (long)alanine] = 1.0; + break; + + case 'X': /* unknown aa */ + for (b = 0; b <= 19; b++) + treenode[i]->protx[k][l][b] = 1.0; + break; + + case '?': /* unknown aa */ + for (b = 0; b <= 19; b++) + treenode[i]->protx[k][l][b] = 1.0; + break; + + case '*': /* stop codon symbol */ + for (b = 0; b <= 19; b++) + treenode[i]->protx[k][l][b] = 1.0; + break; + + case '-': /* deletion event-absent data or aa */ + for (b = 0; b <= 19; b++) + treenode[i]->protx[k][l][b] = 1.0; + break; + } + } + } + } +} /* prot_makevalues */ + + +void free_pmatrix(long sib) +{ + long j,k,l; + + for (j = 0; j < rcategs; j++) { + for (k = 0; k < categs; k++) { + for (l = 0; l < 20; l++) + free(pmatrices[sib][j][k][l]); + free(pmatrices[sib][j][k]); + } + free(pmatrices[sib][j]); + } + free(pmatrices[sib]); +} + +void alloc_pmatrix(long sib) +{ + /* Allocate memory for a new pmatrix. Called iff num_sibs>max_num_sibs */ + long j, k, l; + double ****temp_matrix; + + temp_matrix = (double ****) Malloc (rcategs * sizeof(double ***)); + for (j = 0; j < rcategs; j++) { + temp_matrix[j] = (double ***) Malloc(categs * sizeof(double **)); + for (k = 0; k < categs; k++) { + temp_matrix[j][k] = (double **) Malloc(20 * sizeof (double *)); + for (l = 0; l < 20; l++) + temp_matrix[j][k][l] = (double *) Malloc(20 * sizeof(double)); + } + } + pmatrices[sib] = temp_matrix; + max_num_sibs++; +} /* alloc_pmatrix */ + +void prot_freetable() +{ + long i,j,k,l; + for (j = 0; j < rcategs; j++) { + for (k = 0; k < categs; k++) { + for (l = 0; l < 20; l++) + free(ddpmatrix[j][k][l]); + free(ddpmatrix[j][k]); + } + free(ddpmatrix[j]); + } + free(ddpmatrix); + + for (j = 0; j < rcategs; j++) { + for (k = 0; k < categs; k++) { + for (l = 0; l < 20; l++) + free(dpmatrix[j][k][l]); + free(dpmatrix[j][k]); + } + free(dpmatrix[j]); + } + free(dpmatrix); + + + for (j = 0; j < rcategs; j++) + free(tbl[j]); + free(tbl); + + for ( i = 0 ; i < max_num_sibs ; i++ ) + free_pmatrix(i); + free(pmatrices); +} + +void prot_inittable() +{ + /* Define a lookup table. Precompute values and print them out in tables */ + /* Allocate memory for the pmatrices, dpmatices and ddpmatrices */ + long i, j, k, l; + double sumrates; + + /* Allocate memory for pmatrices, the array of pointers to pmatrices */ + + pmatrices = (double *****) Malloc ( spp * sizeof(double ****)); + + /* Allocate memory for the first 2 pmatrices, the matrix of conversion */ + /* probabilities, but only once per run (aka not on the second jumble. */ + + alloc_pmatrix(0); + alloc_pmatrix(1); + + /* Allocate memory for one dpmatrix, the first derivative matrix */ + + dpmatrix = (double ****) Malloc( rcategs * sizeof(double ***)); + for (j = 0; j < rcategs; j++) { + dpmatrix[j] = (double ***) Malloc( categs * sizeof(double **)); + for (k = 0; k < categs; k++) { + dpmatrix[j][k] = (double **) Malloc( 20 * sizeof(double *)); + for (l = 0; l < 20; l++) + dpmatrix[j][k][l] = (double *) Malloc( 20 * sizeof(double)); + } + } + + /* Allocate memory for one ddpmatrix, the second derivative matrix */ + ddpmatrix = (double ****) Malloc( rcategs * sizeof(double ***)); + for (j = 0; j < rcategs; j++) { + ddpmatrix[j] = (double ***) Malloc( categs * sizeof(double **)); + for (k = 0; k < categs; k++) { + ddpmatrix[j][k] = (double **) Malloc( 20 * sizeof(double *)); + for (l = 0; l < 20; l++) + ddpmatrix[j][k][l] = (double *) Malloc( 20 * sizeof(double)); + } + } + + /* Allocate memory and assign values to tbl, the matrix of possible rates*/ + + tbl = (double **) Malloc( rcategs * sizeof(double *)); + for (j = 0; j < rcategs; j++) + tbl[j] = (double *) Malloc( categs * sizeof(double)); + + for (j = 0; j < rcategs; j++) + for (k = 0; k < categs; k++) + tbl[j][k] = rrate[j]*rate[k]; + + sumrates = 0.0; + for (i = 0; i < endsite; i++) { + for (j = 0; j < rcategs; j++) + sumrates += aliasweight[i] * probcat[j] + * tbl[j][category[alias[i] - 1] - 1]; + } + sumrates /= (double)sites; + for (j = 0; j < rcategs; j++) + for (k = 0; k < categs; k++) { + tbl[j][k] /= sumrates; + } + + if(jumb > 1) + return; + + if (gama) { + fprintf(outfile, "\nDiscrete approximation to gamma distributed rates\n"); + fprintf(outfile, + " Coefficient of variation of rates = %f (alpha = %f)\n", + cv, alpha); + } + if (rcategs > 1) { + fprintf(outfile, "\nStates in HMM Rate of change Probability\n\n"); + for (i = 0; i < rcategs; i++) + if (probcat[i] < 0.0001) + fprintf(outfile, "%9ld%16.3f%20.6f\n", i+1, rrate[i], probcat[i]); + else if (probcat[i] < 0.001) + fprintf(outfile, "%9ld%16.3f%19.5f\n", i+1, rrate[i], probcat[i]); + else if (probcat[i] < 0.01) + fprintf(outfile, "%9ld%16.3f%18.4f\n", i+1, rrate[i], probcat[i]); + else + fprintf(outfile, "%9ld%16.3f%17.3f\n", i+1, rrate[i], probcat[i]); + putc('\n', outfile); + if (auto_) + fprintf(outfile, + "Expected length of a patch of sites having the same rate = %8.3f\n", + 1/lambda); + putc('\n', outfile); + } + if (categs > 1) { + fprintf(outfile, "\nSite category Rate of change\n\n"); + for (k = 0; k < categs; k++) + fprintf(outfile, "%9ld%16.3f\n", k+1, rate[k]); + } + if ((rcategs > 1) || (categs >> 1)) + fprintf(outfile, "\n\n"); +} /* prot_inittable */ + + +void getinput() +{ + /* reads the input data */ + if (!justwts || firstset) + inputoptions(); + if (!justwts || firstset) + input_protdata(sites); + if ( !firstset ) freelrsaves(); + makeweights(); + alloclrsaves(); + setuptree2(curtree); + if (!usertree) { + setuptree2(bestree); + setuptree2(priortree); + if (njumble > 1) + setuptree2(bestree2); + } + prot_allocx(nonodes2, rcategs, curtree.nodep, usertree); + if (!usertree) { + prot_allocx(nonodes2, rcategs, bestree.nodep, 0); + prot_allocx(nonodes2, rcategs, priortree.nodep, 0); + if (njumble > 1) + prot_allocx(nonodes2, rcategs, bestree2.nodep, 0); + } + prot_makevalues(rcategs, curtree.nodep, endsite, spp, y, alias); +} /* getinput */ + + +void inittravtree(node *p) +{ + /* traverse tree to set initialized and v to initial values */ + node* q; + + p->initialized = false; + p->back->initialized = false; + if ((!lngths) || p->iter) { + p->v = initialv; + p->back->v = initialv; + } + + if ( !p->tip ) { + q = p->next; + while ( q != p ) { + inittravtree(q->back); + q = q->next; + } + } +} /* inittravtree */ + + +void prot_nuview(node *p) +{ + long i, j, k, l, m, num_sibs, sib_index; + node *sib_ptr, *sib_back_ptr; + psitelike prot_xx, x2; + double lw, prod7; + double **pmat; + double maxx; + double correction; + + /* Figure out how many siblings the current node has */ + /* and be sure that pmatrices is large enough */ + num_sibs = count_sibs(p); + for (i = 0; i < num_sibs; i++) + if (pmatrices[i] == NULL) + alloc_pmatrix(i); + + /* Recursive calls, should be called for all children */ + sib_ptr = p; + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + + if (!sib_back_ptr->tip && + !sib_back_ptr->initialized) + prot_nuview(sib_back_ptr); + } + + /* Make pmatrices for all possible combinations of category, rcateg */ + /* and sib */ + sib_ptr = p; /* return to p */ + for (sib_index=0; sib_index < num_sibs; sib_index++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + + lw = sib_back_ptr->v; + + for (j = 0; j < rcategs; j++) + for (k = 0; k < categs; k++) + make_pmatrix(pmatrices[sib_index][j][k], NULL, NULL, 0, lw, + tbl[j][k], eigmat, probmat); + } + + for (i = 0; i < endsite; i++) { + maxx = 0; + correction = 0; + + k = category[alias[i]-1] - 1; + for (j = 0; j < rcategs; j++) { + + /* initialize to 1 all values of prot_xx */ + for (m = 0; m <= 19; m++) + prot_xx[m] = 1; + + sib_ptr = p; /* return to p */ + /* loop through all sibs and calculate likelihoods for all possible*/ + /* amino acid combinations */ + for (sib_index=0; sib_index < num_sibs; sib_index++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + + if ( j == 0) + correction += sib_back_ptr->underflows[i]; + + memcpy(x2, sib_back_ptr->protx[i][j], sizeof(psitelike)); + pmat = pmatrices[sib_index][j][k]; + for (m = 0; m <= 19; m++) { + prod7 = 0; + for (l = 0; l <= 19; l++) + prod7 += (pmat[m][l] * x2[l]); + prot_xx[m] *= prod7; + if ( prot_xx[m] > maxx && sib_index == (num_sibs - 1)) + maxx = prot_xx[m]; + } + } + /* And the final point of this whole function: */ + memcpy(p->protx[i][j], prot_xx, sizeof(psitelike)); + } + p->underflows[i] = 0; + if ( maxx < MIN_DOUBLE ) + fix_protx(p,i,maxx,rcategs); + p->underflows[i] += correction; + } + + p->initialized = true; +} /* prot_nuview */ + + +void prot_slopecurv(node *p,double y,double *like,double *slope,double *curve) +{ + /* compute log likelihood, slope and curvature at node p */ + long i, j, k, l, m, lai; + double sum, sumc, sumterm, lterm, sumcs, sumcc, sum2, slope2, curve2; + double frexm = 0; /* frexm = freqaa[m]*x1[m] */ + /* frexml = frexm*x2[l] */ + double prod4m, prod5m, prod6m; /* elements of prod4-5 for */ + /* each m */ + double **pmat, **dpmat, **ddpmat; /* local pointers to global*/ + /* matrices */ + double prod4, prod5, prod6; + contribarr thelike, nulike, nuslope, nucurve, + theslope, thecurve, clai, cslai, cclai; + node *q; + psitelike x1, x2; + + q = p->back; + sum = 0.0; + for (j = 0; j < rcategs; j++) { + for (k = 0; k < categs; k++) { + make_pmatrix(pmatrices[0][j][k], dpmatrix[j][k], ddpmatrix[j][k], + 2, y, tbl[j][k], eigmat, probmat); + } + } + for (i = 0; i < endsite; i++) { + k = category[alias[i]-1] - 1; + for (j = 0; j < rcategs; j++) { + memcpy(x1, p->protx[i][j], sizeof(psitelike)); + memcpy(x2, q->protx[i][j], sizeof(psitelike)); + pmat = pmatrices[0][j][k]; + dpmat = dpmatrix[j][k]; + ddpmat = ddpmatrix[j][k]; + prod4 = 0.0; + prod5 = 0.0; + prod6 = 0.0; + for (m = 0; m <= 19; m++) { + prod4m = 0.0; + prod5m = 0.0; + prod6m = 0.0; + frexm = x1[m] * freqaa[m]; + for (l = 0; l <= 19; l++) { + prod4m += x2[l] * pmat[m][l]; + prod5m += x2[l] * dpmat[m][l]; + prod6m += x2[l] * ddpmat[m][l]; + } + prod4 += frexm * prod4m; + prod5 += frexm * prod5m; + prod6 += frexm * prod6m; + } + term[i][j] = prod4; + slopeterm[i][j] = prod5; + curveterm[i][j] = prod6; + } + sumterm = 0.0; + for (j = 0; j < rcategs; j++) + sumterm += probcat[j] * term[i][j]; + if (sumterm <= 0.0) + sumterm = 0.000000001; /* ? shouldn't get here ?? */ + lterm = log(sumterm) + p->underflows[i] + q->underflows[i]; + for (j = 0; j < rcategs; j++) { + term[i][j] = term[i][j] / sumterm; + slopeterm[i][j] = slopeterm[i][j] / sumterm; + curveterm[i][j] = curveterm[i][j] / sumterm; + } + sum += (aliasweight[i] * lterm); + } + for (i = 0; i < rcategs; i++) { + thelike[i] = 1.0; + theslope[i] = 0.0; + thecurve[i] = 0.0; + } + for (i = 0; i < sites; i++) { + sumc = 0.0; + sumcs = 0.0; + sumcc = 0.0; + for (k = 0; k < rcategs; k++) { + sumc += probcat[k] * thelike[k]; + sumcs += probcat[k] * theslope[k]; + sumcc += probcat[k] * thecurve[k]; + } + sumc *= lambda; + sumcs *= lambda; + sumcc *= lambda; + if ((ally[i] > 0) && (location[ally[i]-1] > 0)) { + lai = location[ally[i] - 1]; + memcpy(clai, term[lai - 1], rcategs*sizeof(double)); + memcpy(cslai, slopeterm[lai - 1], rcategs*sizeof(double)); + memcpy(cclai, curveterm[lai - 1], rcategs*sizeof(double)); + if (weight[i] > 1) { + for (j = 0; j < rcategs; j++) { + if (clai[j] > 0.0) + clai[j] = exp(weight[i]*log(clai[j])); + else clai[j] = 0.0; + if (cslai[j] > 0.0) + cslai[j] = exp(weight[i]*log(cslai[j])); + else cslai[j] = 0.0; + if (cclai[j] > 0.0) + cclai[j] = exp(weight[i]*log(cclai[j])); + else cclai[j] = 0.0; + } + } + for (j = 0; j < rcategs; j++) { + nulike[j] = ((1.0 - lambda) * thelike[j] + sumc) * clai[j]; + nuslope[j] = ((1.0 - lambda) * theslope[j] + sumcs) * clai[j] + + ((1.0 - lambda) * thelike[j] + sumc) * cslai[j]; + nucurve[j] = ((1.0 - lambda) * thecurve[j] + sumcc) * clai[j] + + 2.0 * ((1.0 - lambda) * theslope[j] + sumcs) * cslai[j] + + ((1.0 - lambda) * thelike[j] + sumc) * cclai[j]; + } + } else { + for (j = 0; j < rcategs; j++) { + nulike[j] = ((1.0 - lambda) * thelike[j] + sumc); + nuslope[j] = ((1.0 - lambda) * theslope[j] + sumcs); + nucurve[j] = ((1.0 - lambda) * thecurve[j] + sumcc); + } + } + memcpy(thelike, nulike, rcategs*sizeof(double)); + memcpy(theslope, nuslope, rcategs*sizeof(double)); + memcpy(thecurve, nucurve, rcategs*sizeof(double)); + } + sum2 = 0.0; + slope2 = 0.0; + curve2 = 0.0; + for (i = 0; i < rcategs; i++) { + sum2 += probcat[i] * thelike[i]; + slope2 += probcat[i] * theslope[i]; + curve2 += probcat[i] * thecurve[i]; + } + sum += log(sum2); + (*like) = sum; + (*slope) = slope2 / sum2; + (*curve) = (curve2 - slope2 * slope2 / sum2) / sum2; +} /* prot_slopecurv */ + + +void makenewv(node *p) +{ + /* Newton-Raphson algorithm improvement of a branch length */ + long it, ite; + double y, yold=0, yorig, like, slope, curve, oldlike=0; + boolean done, firsttime, better; + node *q; + + q = p->back; + y = p->v; + yorig = y; + done = false; + firsttime = true; + it = 1; + ite = 0; + while ((it < iterations) && (ite < 20) && (!done)) { + prot_slopecurv(p, y, &like, &slope, &curve); + better = false; + if (firsttime) { + yold = y; + oldlike = like; + firsttime = false; + better = true; + } else { + if (like > oldlike) { + yold = y; + oldlike = like; + better = true; + it++; + } + } + if (better) { + y = y + slope/fabs(curve); + if (y < epsilon) + y = epsilon; + } else { + if (fabs(y - yold) < epsilon) + ite = 20; + y = (y + (7 * yold)) / 8; + } + ite++; + done = fabs(y-yold) < epsilon; + } + smoothed = (fabs(yold-yorig) < epsilon) && (yorig > 1000.0*epsilon); + p->v = yold; + q->v = yold; + curtree.likelihood = oldlike; +} /* makenewv */ + + +void update(node *p) +{ + if (!p->tip && !p->initialized) + prot_nuview(p); + if (!p->back->tip && !p->back->initialized) + prot_nuview(p->back); + if ((!usertree) || (usertree && !lngths) || p->iter) { + makenewv(p); + if ( smoothit ) { + inittrav(p); + inittrav(p->back); + } + else if ( inserting && !p->tip ) { + p->next->initialized = false; + p->next->next->initialized = false; + } + } +} /* update */ + + +void smooth(node *p) +{ + long i, num_sibs; + node *sib_ptr; + + smoothed = false; + update(p); + if (p->tip) + return; + + num_sibs = count_sibs(p); + sib_ptr = p; + + for (i=0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + + if (polishing || (smoothit && !smoothed)) { + smooth(sib_ptr->back); + p->initialized = false; + sib_ptr->initialized = false; + } + } +} /* smooth */ + + +void make_pmatrix(double **matrix, double **dmat, double **ddmat, + long derivative, double lz, double rat, + double *eigmat, double **probmat) +{ + /* Computes the R matrix such that matrix[m][l] is the joint probability */ + /* of m and l. */ + /* Computes a P matrix such that matrix[m][l] is the conditional */ + /* probability of m given l. This is accomplished by dividing all terms */ + /* in the R matrix by freqaa[m], the frequency of l. */ + + long k, l, m; /* (l) original character state */ + /* (m) final character state */ + /* (k) lambda counter */ + double p0, p1, p2, q; + double elambdat[20], delambdat[20], ddelambdat[20]; + /* exponential term for matrix */ + /* and both derivative matrices */ + for (k = 0; k <= 19; k++) { + elambdat[k] = exp(lz * rat * eigmat[k]); + if(derivative != 0) { + delambdat[k] = (elambdat[k] * rat * eigmat[k]); + ddelambdat[k] = (delambdat[k] * rat * eigmat[k]); + } + } + for (m = 0; m <= 19; m++) { + for (l = 0; l <= 19; l++) { + p0 = 0.0; + p1 = 0.0; + p2 = 0.0; + for (k = 0; k <= 19; k++) { + q = probmat[k][m] * probmat[k][l]; + p0 += (q * elambdat[k]); + if(derivative !=0) { + p1 += (q * delambdat[k]); + p2 += (q * ddelambdat[k]); + } + } + matrix[m][l] = p0 / freqaa[m]; + if(derivative != 0) { + dmat[m][l] = p1 / freqaa[m]; + ddmat[m][l] = p2 / freqaa[m]; + } + } + } +} /* make_pmatrix */ + + +double prot_evaluate(node *p, boolean saveit) +{ + contribarr tterm; + double sum, sum2, sumc, y, prod4, prodl, frexm, sumterm, lterm; + double **pmat; + long i, j, k, l, m, lai; + node *q; + psitelike x1, x2; + + sum = 0.0; + q = p->back; + y = p->v; + for (j = 0; j < rcategs; j++) + for (k = 0; k < categs; k++) + make_pmatrix(pmatrices[0][j][k],NULL,NULL,0,y,tbl[j][k],eigmat,probmat); + for (i = 0; i < endsite; i++) { + k = category[alias[i]-1] - 1; + for (j = 0; j < rcategs; j++) { + memcpy(x1, p->protx[i][j], sizeof(psitelike)); + memcpy(x2, q->protx[i][j], sizeof(psitelike)); + prod4 = 0.0; + pmat = pmatrices[0][j][k]; + for (m = 0; m <= 19; m++) { + prodl = 0.0; + for (l = 0; l <= 19; l++) + prodl += (pmat[m][l] * x2[l]); + frexm = x1[m] * freqaa[m]; + prod4 += (prodl * frexm); + } + tterm[j] = prod4; + } + sumterm = 0.0; + for (j = 0; j < rcategs; j++) + sumterm += probcat[j] * tterm[j]; + if (sumterm < 0.0) + sumterm = 0.00000001; /* ??? */ + lterm = log(sumterm) + p->underflows[i] + q->underflows[i]; + for (j = 0; j < rcategs; j++) + clai[j] = tterm[j] / sumterm; + memcpy(contribution[i], clai, rcategs*sizeof(double)); + if (saveit && !auto_ && usertree && (which <= shimotrees)) + l0gf[which - 1][i] = lterm; + sum += aliasweight[i] * lterm; + } + for (j = 0; j < rcategs; j++) + like[j] = 1.0; + for (i = 0; i < sites; i++) { + sumc = 0.0; + for (k = 0; k < rcategs; k++) + sumc += probcat[k] * like[k]; + sumc *= lambda; + if ((ally[i] > 0) && (location[ally[i]-1] > 0)) { + lai = location[ally[i] - 1]; + memcpy(clai, contribution[lai - 1], rcategs*sizeof(double)); + for (j = 0; j < rcategs; j++) + nulike[j] = ((1.0 - lambda) * like[j] + sumc) * clai[j]; + } else { + for (j = 0; j < rcategs; j++) + nulike[j] = ((1.0 - lambda) * like[j] + sumc); + } + memcpy(like, nulike, rcategs*sizeof(double)); + } + sum2 = 0.0; + for (i = 0; i < rcategs; i++) + sum2 += probcat[i] * like[i]; + sum += log(sum2); + curtree.likelihood = sum; + if (!saveit || auto_ || !usertree) + return sum; + if(which <= shimotrees) + l0gl[which - 1] = sum; + if (which == 1) { + maxwhich = 1; + maxlogl = sum; + return sum; + } + if (sum > maxlogl) { + maxwhich = which; + maxlogl = sum; + } + return sum; +} /* prot_evaluate */ + + +void treevaluate() +{ + /* evaluate a user tree */ + long i; + + inittravtree(curtree.start); + polishing = true; + smoothit = true; + for (i = 1; i <= smoothings * 4; i++) + smooth (curtree.start); + dummy = prot_evaluate(curtree.start, true); +} /* treevaluate */ + + +void promlcopy(tree *a, tree *b, long nonodes, long categs) +{ + /* copy tree a to tree b */ + long i, j=0; + node *p, *q; + + for (i = 0; i < spp; i++) { + prot_copynode(a->nodep[i], b->nodep[i], categs); + if (a->nodep[i]->back) { + if (a->nodep[i]->back == a->nodep[a->nodep[i]->back->index - 1]) + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]; + else if (a->nodep[i]->back == a->nodep[a->nodep[i]->back->index - 1]->next +) + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]->next; + else + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]->next->next; + } + else b->nodep[i]->back = NULL; + } + for (i = spp; i < nonodes; i++) { + p = a->nodep[i]; + q = b->nodep[i]; + for (j = 1; j <= 3; j++) { + prot_copynode(p, q, categs); + if (p->back) { + if (p->back == a->nodep[p->back->index - 1]) + q->back = b->nodep[p->back->index - 1]; + else if (p->back == a->nodep[p->back->index - 1]->next) + q->back = b->nodep[p->back->index - 1]->next; + else + q->back = b->nodep[p->back->index - 1]->next->next; + } + else + q->back = NULL; + p = p->next; + q = q->next; + } + } + b->likelihood = a->likelihood; + b->start = a->start; /* start used in dnaml only */ + b->root = a->root; /* root used in dnamlk only */ +} /* promlcopy */ + + +void proml_re_move(node **p, node **q) +{ + /* remove p and record in q where it was */ + long i; + + /** assumes bifurcations */ + *q = (*p)->next->back; + hookup(*q, (*p)->next->next->back); + (*p)->next->back = NULL; + (*p)->next->next->back = NULL; + (*q)->v += (*q)->back->v; + (*q)->back->v = (*q)->v; + if ( smoothit ) { + inittrav((*q)); + inittrav((*q)->back); + inittrav((*p)->back); + } + if ( smoothit ) { + for ( i = 0 ; i < smoothings ; i++ ) { + smooth(*q); + smooth((*q)->back); + } + } + else + smooth(*q); +} /* proml_re_move */ + + +void insert_(node *p, node *q, boolean dooinit) +{ + /* Insert q near p */ + long i, j, num_sibs; + node *r, *sib_ptr; + + r = p->next->next; + hookup(r, q->back); + hookup(p->next, q); + q->v = 0.5 * q->v; + q->back->v = q->v; + r->v = q->v; + r->back->v = r->v; + p->initialized = false; + if (dooinit) { + inittrav(p); + inittrav(q); + inittrav(q->back); + } + i = 1; + inserting = true; + while (i <= smoothings) { + smooth(p); + if (!p->tip) { + num_sibs = count_sibs(p); + sib_ptr = p; + for (j=0; j < num_sibs; j++) { + smooth(sib_ptr->next->back); + sib_ptr = sib_ptr->next; + } + } + i++; + } + inserting = false; +} /* insert_ */ + + +void addtraverse(node *p, node *q, boolean contin) +{ + /* try adding p at q, proceed recursively through tree */ + long i, num_sibs; + double like, vsave = 0; + node *qback = NULL, *sib_ptr; + + if (!smoothit) { + vsave = q->v; + qback = q->back; + } + insert_(p, q, false); + like = prot_evaluate(p, false); + if (like > bestyet || bestyet == UNDEFINED) { + bestyet = like; + if (smoothit) { + addwhere = q; + promlcopy(&curtree, &bestree, nonodes2, rcategs); + } + else + qwhere = q; + succeeded = true; + } + if (smoothit) + promlcopy(&priortree, &curtree, nonodes2, rcategs); + else { + hookup (q, qback); + q->v = vsave; + q->back->v = vsave; + curtree.likelihood = bestyet; + } + if (!q->tip && contin) { + num_sibs = count_sibs(q); + if (q == curtree.start) + num_sibs++; + sib_ptr = q; + for (i=0; i < num_sibs; i++) { + addtraverse(p, sib_ptr->next->back, contin); + sib_ptr = sib_ptr->next; + } + } +} /* addtraverse */ + + +void globrearrange() +{ + /* does global rearrangements */ + tree globtree; + tree oldtree; + int i,j,k,l,num_sibs,num_sibs2; + node *where,*sib_ptr,*sib_ptr2; + double oldbestyet = curtree.likelihood; + int success = false; + + alloctree(&globtree.nodep,nonodes2,0); + alloctree(&oldtree.nodep,nonodes2,0); + setuptree2(globtree); + setuptree2(oldtree); + prot_allocx(nonodes2, rcategs, globtree.nodep, 0); + prot_allocx(nonodes2, rcategs, oldtree.nodep, 0); + promlcopy(&curtree,&globtree,nonodes2,rcategs); + promlcopy(&curtree,&oldtree,nonodes2,rcategs); + bestyet = curtree.likelihood; + for ( i = spp ; i < nonodes2 ; i++ ) { + num_sibs = count_sibs(curtree.nodep[i]); + sib_ptr = curtree.nodep[i]; + if ( (i - spp) % (( nonodes2 / 72 ) + 1 ) == 0 ) + putchar('.'); + fflush(stdout); + for ( j = 0 ; j <= num_sibs ; j++ ) { + proml_re_move(&sib_ptr,&where); + promlcopy(&curtree,&priortree,nonodes2,rcategs); + qwhere = where; + + if (where->tip) { + promlcopy(&oldtree,&curtree,nonodes2,rcategs); + promlcopy(&oldtree,&bestree,nonodes2,rcategs); + sib_ptr=sib_ptr->next; + continue; + } + else num_sibs2 = count_sibs(where); + sib_ptr2 = where; + for ( k = 0 ; k < num_sibs2 ; k++ ) { + addwhere = NULL; + addtraverse(sib_ptr,sib_ptr2->back,true); + if ( !smoothit ) { + if (succeeded && qwhere != where && qwhere != where->back) { + insert_(sib_ptr,qwhere,true); + smoothit = true; + for (l = 1; l<=smoothings; l++) { + smooth (where); + smooth (where->back); + } + smoothit = false; + success = true; + promlcopy(&curtree,&globtree,nonodes2,rcategs); + promlcopy(&priortree,&curtree,nonodes2,rcategs); + } + } + else if ( addwhere && where != addwhere && where->back != addwhere + && bestyet > globtree.likelihood) { + promlcopy(&bestree,&globtree,nonodes2,rcategs); + success = true; + } + sib_ptr2 = sib_ptr2->next; + } + promlcopy(&oldtree,&curtree,nonodes2,rcategs); + promlcopy(&oldtree,&bestree,nonodes2,rcategs); + sib_ptr = sib_ptr->next; + } + } + promlcopy(&globtree,&curtree,nonodes2,rcategs); + promlcopy(&globtree,&bestree,nonodes2,rcategs); + if (success && globtree.likelihood > oldbestyet) { + succeeded = true; + } + else { + succeeded = false; + } + bestyet = globtree.likelihood; + prot_freex(nonodes2,oldtree.nodep); + prot_freex(nonodes2,globtree.nodep); + freetree2(globtree.nodep,nonodes2); + freetree2(oldtree.nodep,nonodes2); +} /* globrearrange */ + + +void freelrsaves() +{ + long i,j; + for ( i = 0 ; i < NLRSAVES ; i++ ) { + for (j = 0; j < oldendsite; j++) + free(lrsaves[i]->protx[j]); + free(lrsaves[i]->protx); + free(lrsaves[i]->underflows); + free(lrsaves[i]); + } + free(lrsaves); +} + + +void alloclrsaves() +{ + long i,j; + lrsaves = Malloc(NLRSAVES * sizeof(node*)); + oldendsite = endsite; + for ( i = 0 ; i < NLRSAVES ; i++ ) { + lrsaves[i] = Malloc(sizeof(node)); + lrsaves[i]->protx = Malloc(endsite*sizeof(ratelike)); + lrsaves[i]->underflows = Malloc(endsite * sizeof (double)); + for (j = 0; j < endsite; j++) + lrsaves[i]->protx[j] = (pratelike)Malloc(rcategs*sizeof(psitelike)); + } +} /* alloclrsaves */ + + +void rearrange(node *p, node *pp) +{ + /* rearranges the tree locally moving pp around near p */ + long i, num_sibs; + node *q, *r, *sib_ptr; + node *rnb, *rnnb; + + if (!p->tip && !p->back->tip) { + curtree.likelihood = bestyet; + if (p->back->next != pp) + r = p->back->next; + else + r = p->back->next->next; + /* assumes bifurcations? */ + if (!smoothit) { + rnb = r->next->back; + rnnb = r->next->next->back; + prot_copynode(r,lrsaves[0],categs); + prot_copynode(r->next,lrsaves[1],categs); + prot_copynode(r->next->next,lrsaves[2],categs); + prot_copynode(p->next,lrsaves[3],categs); + prot_copynode(p->next->next,lrsaves[4],categs); + } + else + promlcopy(&curtree, &bestree, nonodes2, rcategs); + proml_re_move(&r, &q); + if (smoothit) + promlcopy(&curtree, &priortree, nonodes2, rcategs); + else + qwhere = q; + num_sibs = count_sibs (p); + sib_ptr = p; + for (i=0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + addtraverse(r, sib_ptr->back, false); + } + if (smoothit) + promlcopy(&bestree, &curtree, nonodes2, rcategs); + else { + if (qwhere == q) { + hookup(rnb,r->next); + hookup(rnnb,r->next->next); + prot_copynode(lrsaves[0],r,categs); + prot_copynode(lrsaves[1],r->next,categs); + prot_copynode(lrsaves[2],r->next->next,categs); + prot_copynode(lrsaves[3],p->next,categs); + prot_copynode(lrsaves[4],p->next->next,categs); + rnb->v = r->next->v; + rnnb->v = r->next->next->v; + r->back->v = r->v; + curtree.likelihood = bestyet; + } + else { + insert_(r, qwhere, true); + smoothit = true; + for (i = 1; i<=smoothings; i++) { + smooth(r); + smooth(r->back); + } + smoothit = false; + promlcopy(&curtree, &bestree, nonodes2, rcategs); + } + } + } + if (!p->tip) { + num_sibs = count_sibs(p); + if (p == curtree.start) + num_sibs++; + sib_ptr = p; + for (i=0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + rearrange(sib_ptr->back, p); + } + } +} /* rearrange */ + + +void proml_coordinates(node *p, double lengthsum, long *tipy, + double *tipmax) +{ + /* establishes coordinates of nodes */ + node *q, *first, *last; + double xx; + + if (p->tip) { + p->xcoord = (long)(over * lengthsum + 0.5); + p->ycoord = (*tipy); + p->ymin = (*tipy); + p->ymax = (*tipy); + (*tipy) += down; + if (lengthsum > (*tipmax)) + (*tipmax) = lengthsum; + return; + } + q = p->next; + do { + xx = q->v; + if (xx > 100.0) + xx = 100.0; + proml_coordinates(q->back, lengthsum + xx, tipy,tipmax); + q = q->next; + } while ((p == curtree.start || p != q) && + (p != curtree.start || p->next != q)); + first = p->next->back; + q = p; + while (q->next != p) + q = q->next; + last = q->back; + p->xcoord = (long)(over * lengthsum + 0.5); + if (p == curtree.start) + p->ycoord = p->next->next->back->ycoord; + else + p->ycoord = (first->ycoord + last->ycoord) / 2; + p->ymin = first->ymin; + p->ymax = last->ymax; +} /* proml_coordinates */ + + +void proml_printree() +{ + /* prints out diagram of the tree2 */ + long tipy; + double scale, tipmax; + long i; + + if (!treeprint) + return; + putc('\n', outfile); + tipy = 1; + tipmax = 0.0; + proml_coordinates(curtree.start, 0.0, &tipy, &tipmax); + scale = 1.0 / (long)(tipmax + 1.000); + for (i = 1; i <= (tipy - down); i++) + drawline2(i, scale, curtree); + putc('\n', outfile); +} /* proml_printree */ + + +void sigma(node *p, double *sumlr, double *s1, double *s2) +{ + /* compute standard deviation */ + double tt, aa, like, slope, curv; + + prot_slopecurv(p, p->v, &like, &slope, &curv); + tt = p->v; + p->v = epsilon; + p->back->v = epsilon; + aa = prot_evaluate(p, false); + p->v = tt; + p->back->v = tt; + (*sumlr) = prot_evaluate(p, false) - aa; + if (curv < -epsilon) { + (*s1) = p->v + (-slope - sqrt(slope * slope - 3.841 * curv)) / curv; + (*s2) = p->v + (-slope + sqrt(slope * slope - 3.841 * curv)) / curv; + } + else { + (*s1) = -1.0; + (*s2) = -1.0; + } +} /* sigma */ + + +void describe(node *p) +{ + /* print out information for one branch */ + long i, num_sibs; + node *q, *sib_ptr; + double sumlr, sigma1, sigma2; + + if (!p->tip && !p->initialized) + prot_nuview(p); + if (!p->back->tip && !p->back->initialized) + prot_nuview(p->back); + q = p->back; + if (q->tip) { + fprintf(outfile, " "); + for (i = 0; i < nmlngth; i++) + putc(nayme[q->index-1][i], outfile); + fprintf(outfile, " "); + } else + fprintf(outfile, " %4ld ", q->index - spp); + if (p->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[p->index-1][i], outfile); + } else + fprintf(outfile, "%4ld ", p->index - spp); + fprintf(outfile, "%15.5f", q->v); + if (!usertree || (usertree && !lngths) || p->iter) { + sigma(q, &sumlr, &sigma1, &sigma2); + if (sigma1 <= sigma2) + fprintf(outfile, " ( zero, infinity)"); + else { + fprintf(outfile, " ("); + if (sigma2 <= 0.0) + fprintf(outfile, " zero"); + else + fprintf(outfile, "%9.5f", sigma2); + fprintf(outfile, ",%12.5f", sigma1); + putc(')', outfile); + } + if (sumlr > 1.9205) + fprintf(outfile, " *"); + if (sumlr > 2.995) + putc('*', outfile); + } + putc('\n', outfile); + if (!p->tip) { + num_sibs = count_sibs(p); + sib_ptr = p; + for (i=0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + describe(sib_ptr->back); + } + } +} /* describe */ + + +void prot_reconstr(node *p, long n) +{ + /* reconstruct and print out acid at site n+1 at node p */ + long i, j, k, first, num_sibs = 0; + double f, sum, xx[20]; + node *q = NULL; + + if (p->tip) + putc(y[p->index-1][n], outfile); + else { + num_sibs = count_sibs(p); + if ((ally[n] == 0) || (location[ally[n]-1] == 0)) + putc('.', outfile); + else { + j = location[ally[n]-1] - 1; + sum = 0; + for (i = 0; i <= 19; i++) { + f = p->protx[j][mx-1][i]; + if (!p->tip) { + q = p; + for (k = 0; k < num_sibs; k++) { + q = q->next; + f *= q->protx[j][mx-1][i]; + } + } + f = sqrt(f); + xx[i] = f * freqaa[i]; + sum += xx[i]; + } + for (i = 0; i <= 19; i++) + xx[i] /= sum; + first = 0; + for (i = 0; i <= 19; i++) + if (xx[i] > xx[first]) + first = i; + if (xx[first] > 0.95) + putc(aachar[first], outfile); + else + putc(tolower(aachar[first]), outfile); + if (rctgry && rcategs > 1) + mx = mp[n][mx - 1]; + else + mx = 1; + } + } +} /* prot_reconstr */ + + +void rectrav(node *p, long m, long n) +{ + /* print out segment of reconstructed sequence for one branch */ + long i; + + putc(' ', outfile); + if (p->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[p->index-1][i], outfile); + } else + fprintf(outfile, "%4ld ", p->index - spp); + fprintf(outfile, " "); + mx = mx0; + for (i = m; i <= n; i++) { + if ((i % 10 == 0) && (i != m)) + putc(' ', outfile); + prot_reconstr(p, i); + } + putc('\n', outfile); + if (!p->tip) { + rectrav(p->next->back, m, n); + rectrav(p->next->next->back, m, n); + } + mx1 = mx; +} /* rectrav */ + + +void summarize() +{ + /* print out branch length information and node numbers */ + long i, j, mm, num_sibs; + double mode, sum; + double like[maxcategs],nulike[maxcategs]; + double **marginal; + node *sib_ptr; + + if (!treeprint) + return; + fprintf(outfile, "\nremember: "); + if (outgropt) + fprintf(outfile, "(although rooted by outgroup) "); + fprintf(outfile, "this is an unrooted tree!\n\n"); + fprintf(outfile, "Ln Likelihood = %11.5f\n", curtree.likelihood); + fprintf(outfile, "\n Between And Length"); + if (!(usertree && lngths && haslengths)) + fprintf(outfile, " Approx. Confidence Limits"); + fprintf(outfile, "\n"); + fprintf(outfile, " ------- --- ------"); + if (!(usertree && lngths && haslengths)) + fprintf(outfile, " ------- ---------- ------"); + fprintf(outfile, "\n\n"); + for (i = spp; i < nonodes2; i++) { + /* So this works with arbitrary multifurcations */ + if (curtree.nodep[i]) { + num_sibs = count_sibs (curtree.nodep[i]); + sib_ptr = curtree.nodep[i]; + for (j = 0; j < num_sibs; j++) { + sib_ptr->initialized = false; + sib_ptr = sib_ptr->next; + } + } + } + + describe(curtree.start->back); + + /* So this works with arbitrary multifurcations */ + num_sibs = count_sibs(curtree.start); + sib_ptr = curtree.start; + for (i=0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + describe(sib_ptr->back); + } + + fprintf(outfile, "\n"); + if (!(usertree && lngths && haslengths)) { + fprintf(outfile, " * = significantly positive, P < 0.05\n"); + fprintf(outfile, " ** = significantly positive, P < 0.01\n\n"); + } + dummy = prot_evaluate(curtree.start, false); + if (rctgry && rcategs > 1) { + for (i = 0; i < rcategs; i++) + like[i] = 1.0; + for (i = sites - 1; i >= 0; i--) { + sum = 0.0; + for (j = 0; j < rcategs; j++) { + nulike[j] = (1.0 - lambda + lambda * probcat[j]) * like[j]; + mp[i][j] = j + 1; + for (k = 1; k <= rcategs; k++) { + if (k != j + 1) { + if (lambda * probcat[k - 1] * like[k - 1] > nulike[j]) { + nulike[j] = lambda * probcat[k - 1] * like[k - 1]; + mp[i][j] = k; + } + } + } + if ((ally[i] > 0) && (location[ally[i]-1] > 0)) + nulike[j] *= contribution[location[ally[i] - 1] - 1][j]; + sum += nulike[j]; + } + for (j = 0; j < rcategs; j++) + nulike[j] /= sum; + memcpy(like, nulike, rcategs * sizeof(double)); + } + mode = 0.0; + mx = 1; + for (i = 1; i <= rcategs; i++) { + if (probcat[i - 1] * like[i - 1] > mode) { + mx = i; + mode = probcat[i - 1] * like[i - 1]; + } + } + mx0 = mx; + fprintf(outfile, + "Combination of categories that contributes the most to the likelihood:\n\n"); + for (i = 1; i <= nmlngth + 3; i++) + putc(' ', outfile); + for (i = 1; i <= sites; i++) { + fprintf(outfile, "%ld", mx); + if (i % 10 == 0) + putc(' ', outfile); + if (i % 60 == 0 && i != sites) { + putc('\n', outfile); + for (j = 1; j <= nmlngth + 3; j++) + putc(' ', outfile); + } + mx = mp[i - 1][mx - 1]; + } + fprintf(outfile, "\n\n"); + marginal = (double **) Malloc(sites*sizeof(double *)); + for (i = 0; i < sites; i++) + marginal[i] = (double *) Malloc(rcategs*sizeof(double)); + for (i = 0; i < rcategs; i++) + like[i] = 1.0; + for (i = sites - 1; i >= 0; i--) { + sum = 0.0; + for (j = 0; j < rcategs; j++) { + nulike[j] = (1.0 - lambda + lambda * probcat[j]) * like[j]; + for (k = 1; k <= rcategs; k++) { + if (k != j + 1) + nulike[j] += lambda * probcat[k - 1] * like[k - 1]; + } + if ((ally[i] > 0) && (location[ally[i]-1] > 0)) + nulike[j] *= contribution[location[ally[i] - 1] - 1][j]; + sum += nulike[j]; + } + for (j = 0; j < rcategs; j++) { + nulike[j] /= sum; + marginal[i][j] = nulike[j]; + } + memcpy(like, nulike, rcategs * sizeof(double)); + } + for (i = 0; i < rcategs; i++) + like[i] = 1.0; + for (i = 0; i < sites; i++) { + sum = 0.0; + for (j = 0; j < rcategs; j++) { + nulike[j] = (1.0 - lambda + lambda * probcat[j]) * like[j]; + for (k = 1; k <= rcategs; k++) { + if (k != j + 1) + nulike[j] += lambda * probcat[k - 1] * like[k - 1]; + } + marginal[i][j] *= like[j] * probcat[j]; + sum += nulike[j]; + } + for (j = 0; j < rcategs; j++) + nulike[j] /= sum; + memcpy(like, nulike, rcategs * sizeof(double)); + sum = 0.0; + for (j = 0; j < rcategs; j++) + sum += marginal[i][j]; + for (j = 0; j < rcategs; j++) + marginal[i][j] /= sum; + } + fprintf(outfile, "Most probable category at each site if > 0.95"); + fprintf(outfile, " probability (\".\" otherwise)\n\n"); + for (i = 1; i <= nmlngth + 3; i++) + putc(' ', outfile); + for (i = 0; i < sites; i++) { + sum = 0.0; + for (j = 0; j < rcategs; j++) + if (marginal[i][j] > sum) { + sum = marginal[i][j]; + mm = j; + } + if (sum >= 0.95) + fprintf(outfile, "%ld", mm+1); + else + putc('.', outfile); + if ((i+1) % 60 == 0) { + if (i != 0) { + putc('\n', outfile); + for (j = 1; j <= nmlngth + 3; j++) + putc(' ', outfile); + } + } + else if ((i+1) % 10 == 0) + putc(' ', outfile); + } + putc('\n', outfile); + for (i = 0; i < sites; i++) + free(marginal[i]); + free(marginal); + } + putc('\n', outfile); + if (hypstate) { + fprintf(outfile, "Probable sequences at interior nodes:\n\n"); + fprintf(outfile, " node "); + for (i = 0; (i < 13) && (i < ((sites + (sites-1)/10 - 39) / 2)); i++) + putc(' ', outfile); + fprintf(outfile, "Reconstructed sequence (caps if > 0.95)\n\n"); + if (!rctgry || (rcategs == 1)) + mx0 = 1; + for (i = 0; i < sites; i += 60) { + k = i + 59; + if (k >= sites) + k = sites - 1; + rectrav(curtree.start, i, k); + rectrav(curtree.start->back, i, k); + putc('\n', outfile); + mx0 = mx1; + } + } +} /* summarize */ + + +void initpromlnode(node **p, node **grbg, node *q, long len, long nodei, + long *ntips, long *parens, initops whichinit, + pointarray treenode, pointarray nodep, Char *str, + Char *ch, FILE *intree) +{ + /* initializes a node */ + boolean minusread; + double valyew, divisor; + + switch (whichinit) { + case bottom: + gnu(grbg, p); + (*p)->index = nodei; + (*p)->tip = false; + malloc_ppheno((*p), endsite, rcategs); + nodep[(*p)->index - 1] = (*p); + break; + case nonbottom: + gnu(grbg, p); + malloc_ppheno(*p, endsite, rcategs); + (*p)->index = nodei; + break; + case tip: + match_names_to_data(str, nodep, p, spp); + break; + case iter: + (*p)->initialized = false; + (*p)->v = initialv; + (*p)->iter = true; + if ((*p)->back != NULL){ + (*p)->back->iter = true; + (*p)->back->v = initialv; + (*p)->back->initialized = false; + } + break; + case length: + processlength(&valyew, &divisor, ch, &minusread, intree, parens); + (*p)->v = valyew / divisor; + (*p)->iter = false; + if ((*p)->back != NULL) { + (*p)->back->v = (*p)->v; + (*p)->back->iter = false; + } + break; + case hsnolength: + haslengths = false; + break; + default: /* cases hslength, treewt, unittrwt */ + break; /* should never occur */ + } +} /* initpromlnode */ + + +void dnaml_treeout(node *p) +{ + /* write out file with representation of final tree2 */ + /* Only works for bifurcations! */ + long i, n, w; + Char c; + double x; + node *q; + boolean inloop; + + if (p->tip) { + n = 0; + for (i = 1; i <= nmlngth; i++) { + if (nayme[p->index-1][i - 1] != ' ') + n = i; + } + for (i = 0; i < n; i++) { + c = nayme[p->index-1][i]; + if (c == ' ') + c = '_'; + putc(c, outtree); + } + col += n; + } else { + putc('(', outtree); + col++; + + inloop = false; + q = p->next; + do { + if (inloop) { + putc(',', outtree); + col++; + if (col > 45) { + putc('\n', outtree); + col = 0; + } + } + inloop = true; + dnaml_treeout(q->back); + q = q->next; + } while ((p == curtree.start || p != q) && + (p != curtree.start || p->next != q)); + + putc(')', outtree); + col++; + } + x = p->v; + if (x > 0.0) + w = (long)(0.43429448222 * log(x)); + else if (x == 0.0) + w = 0; + else + w = (long)(0.43429448222 * log(-x)) + 1; + if (w < 0) + w = 0; + if (p == curtree.start) + fprintf(outtree, ";\n"); + else { + fprintf(outtree, ":%*.5f", (int)(w + 7), x); + col += w + 8; + } +} /* dnaml_treeout */ + + +void buildnewtip(long m, tree *tr) +{ + node *p; + + p = tr->nodep[nextsp + spp - 3]; + hookup(tr->nodep[m - 1], p); + p->v = initialv; + p->back->v = initialv; +} /* buildnewtip */ + + +void buildsimpletree(tree *tr) +{ + hookup(tr->nodep[enterorder[0] - 1], tr->nodep[enterorder[1] - 1]); + tr->nodep[enterorder[0] - 1]->v = 1.0; + tr->nodep[enterorder[0] - 1]->back->v = 1.0; + tr->nodep[enterorder[1] - 1]->v = 1.0; + tr->nodep[enterorder[1] - 1]->back->v = 1.0; + buildnewtip(enterorder[2], tr); + insert_(tr->nodep[enterorder[2] - 1]->back, + tr->nodep[enterorder[0] - 1], false); +} /* buildsimpletree */ + + +void free_all_protx (long nonodes, pointarray treenode) +{ + /* used in proml */ + long i, j, k; + node *p; + + /* Zero thru spp are tips, */ + for (i = 0; i < spp; i++) { + for (j = 0; j < endsite; j++) + free(treenode[i]->protx[j]); + free(treenode[i]->protx); + } + + /* The rest are rings (i.e. triads) */ + for (i = spp; i < nonodes; i++) { + if (treenode[i] != NULL) { + p = treenode[i]; + do { + for (k = 0; k < endsite; k++) + free(p->protx[k]); + free(p->protx); + p = p->next; + } while (p != treenode[i]); + } + } +} /* free_all_protx */ + +void proml_unroot(node* root, node** nodep, long nonodes) +{ + node *r,*q,*tmpnode; + double newl; + long i; + long numsibs; + + numsibs = count_sibs(root); + + if ( numsibs > 2 ) { + q = root; + r = root; + while (!(q->next == root)) + q = q->next; + q->next = root->next; + root = q; + for(i=0 ; i < endsite ; i++){ + free(r->protx[i]); + r->protx[i] = NULL; + } + free(r->protx); + r->protx = NULL; + chucktreenode(&grbg, r); + curtree.nodep[spp] = q; + } else if ( root->next->next->next == root) { + newl = root->next->oldlen + root->next->next->oldlen; + root->next->back->oldlen = newl; + root->next->next->back->oldlen = newl; + + newl = root->next->v + root->next->next->v; + root->next->back->v = newl; + root->next->next->back->v = newl; + + root->next->back->back=root->next->next->back; + root->next->next->back->back = root->next->back; + while ( root->index != nonodes ) { + tmpnode = nodep[ root->index ]; + nodep[root->index] = root; + root->index++; + root->next->index++; + root->next->next->index++; + nodep[root->index - 2] = tmpnode; + tmpnode->index--; + tmpnode->next->index--; + tmpnode->next->next->index--; + } + nodep[nonodes -1] = NULL; + for(i=0 ; i < endsite ; i++){ + free(root->protx[i]); + free(root->next->protx[i]); + free(root->next->next->protx[i]); + root->protx[i] = NULL; + root->next->protx[i] = NULL; + root->next->next->protx[i] = NULL; + } + free(root->protx); + free(root->next->protx); + free(root->next->next->protx); + + chucktreenode(&grbg,root->next->next); + chucktreenode(&grbg,root->next); + chucktreenode(&grbg,root); + + } +} + + + +void maketree() +{ + long i, j; + boolean dummy_first, goteof; + pointarray dummy_treenode=NULL; + long nextnode; + node *root; + + prot_inittable(); + + if (usertree) { + openfile(&intree,INTREE,"input tree file", "r",progname,intreename); + numtrees = countsemic(&intree); + if(numtrees > MAXSHIMOTREES) + shimotrees = MAXSHIMOTREES; + else + shimotrees = numtrees; + if (numtrees > 2) + initseed(&inseed, &inseed0, seed); + l0gl = (double *) Malloc(shimotrees * sizeof(double)); + l0gf = (double **) Malloc(shimotrees * sizeof(double *)); + for (i=0; i < shimotrees; ++i) + l0gf[i] = (double *) Malloc(endsite * sizeof(double)); + if (treeprint) { + fprintf(outfile, "User-defined tree"); + if (numtrees > 1) + putc('s', outfile); + fprintf(outfile, ":\n\n"); + } + which = 1; + + /* This taken out of tree read, used to be [spp-1], but referring + to [0] produces output identical to what the pre-modified dnaml + produced. */ + + while (which <= numtrees) { + + /* These initializations required each time through the loop + since multiple trees require re-initialization */ + haslengths = true; + nextnode = 0; + dummy_first = true; + goteof = false; + + treeread(intree, &root, dummy_treenode, &goteof, &dummy_first, + curtree.nodep, &nextnode, &haslengths, &grbg, + initpromlnode,false,nonodes2); + proml_unroot(root,curtree.nodep,nonodes2); + if (goteof && (which <= numtrees)) { + /* if we hit the end of the file prematurely */ + printf ("\n"); + printf ("ERROR: trees missing at end of file.\n"); + printf ("\tExpected number of trees:\t\t%ld\n", numtrees); + printf ("\tNumber of trees actually in file:\t%ld.\n\n", which - 1); + exxit (-1); + } + + curtree.start = curtree.nodep[0]->back; + if ( outgropt ) + curtree.start = curtree.nodep[outgrno - 1]->back; + + treevaluate(); + proml_printree(); + summarize(); + if (trout) { + col = 0; + dnaml_treeout(curtree.start); + } + if(which < numtrees){ + prot_freex_notip(nextnode, curtree.nodep); + gdispose(curtree.start, &grbg, curtree.nodep); + } else nonodes2 = nextnode; + which++; + } + FClose(intree); + putc('\n', outfile); + if (!auto_ && numtrees > 1 && weightsum > 1 ) + standev2(numtrees, maxwhich, 0, endsite-1, maxlogl, + l0gl, l0gf, aliasweight, seed); + } else { + /* If there's no input user tree, */ + for (i = 1; i <= spp; i++) + enterorder[i - 1] = i; + if (jumble) + randumize(seed, enterorder); + if (progress) { + printf("\nAdding species:\n"); + writename(0, 3, enterorder); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + nextsp = 3; + polishing = false; + buildsimpletree(&curtree); + curtree.start = curtree.nodep[enterorder[0] - 1]->back; + smoothit = improve; + nextsp = 4; + while (nextsp <= spp) { + buildnewtip(enterorder[nextsp - 1], &curtree); + bestyet = UNDEFINED; + if (smoothit) + promlcopy(&curtree, &priortree, nonodes2, rcategs); + addtraverse(curtree.nodep[enterorder[nextsp - 1] - 1]->back, + curtree.start, true); + if (smoothit) + promlcopy(&bestree, &curtree, nonodes2, rcategs); + else { + insert_(curtree.nodep[enterorder[nextsp - 1] - 1]->back, qwhere, true); + smoothit = true; + for (i = 1; i<=smoothings; i++) { + smooth(curtree.start); + smooth(curtree.start->back); + } + smoothit = false; + promlcopy(&curtree, &bestree, nonodes2, rcategs); + bestyet = curtree.likelihood; + } + if (progress) { + writename(nextsp - 1, 1, enterorder); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + if (global && nextsp == spp && progress) { + printf("Doing global rearrangements\n"); + printf(" !"); + for (j = spp ; j < nonodes2 ; j++) + if ( (j - spp) % (( nonodes2 / 72 ) + 1 ) == 0 ) + putchar('-'); + printf("!\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + succeeded = true; + while (succeeded) { + succeeded = false; + if (global && nextsp == spp && progress) { + printf(" "); + fflush(stdout); + } + if (global && nextsp == spp) + globrearrange(); + else + rearrange(curtree.start, curtree.start->back); + if (global && nextsp == spp && progress) + putchar('\n'); + } + nextsp++; + } + if (global && progress) { + putchar('\n'); + fflush(stdout); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + promlcopy(&curtree, &bestree, nonodes2, rcategs); + if (njumble > 1) { + if (jumb == 1) + promlcopy(&bestree, &bestree2, nonodes2, rcategs); + else + if (bestree2.likelihood < bestree.likelihood) + promlcopy(&bestree, &bestree2, nonodes2, rcategs); + } + if (jumb == njumble) { + if (njumble > 1) + promlcopy(&bestree2, &curtree, nonodes2, rcategs); + curtree.start = curtree.nodep[outgrno - 1]->back; + for (i = 0; i < nonodes2; i++) { + if (i < spp) + curtree.nodep[i]->initialized = false; + else { + curtree.nodep[i]->initialized = false; + curtree.nodep[i]->next->initialized = false; + curtree.nodep[i]->next->next->initialized = false; + } + } + treevaluate(); + proml_printree(); + summarize(); + if (trout) { + col = 0; + dnaml_treeout(curtree.start); + } + } + } + if (usertree) { + free(l0gl); + for (i=0; i < shimotrees; i++) + free(l0gf[i]); + free(l0gf); + } + prot_freetable(); + if (jumb < njumble) + return; + free(contribution); + free(mp); + for (i=0; i < endsite; i++) + free(term[i]); + free(term); + for (i=0; i < endsite; i++) + free(slopeterm[i]); + free(slopeterm); + for (i=0; i < endsite; i++) + free(curveterm[i]); + free(curveterm); + free_all_protx(nonodes2, curtree.nodep); + if (!usertree) { + free_all_protx(nonodes2, bestree.nodep); + free_all_protx(nonodes2, priortree.nodep); + if (njumble > 1) + free_all_protx(nonodes2, bestree2.nodep); + } + if (progress) { + printf("\n\nOutput written to file \"%s\"\n\n", outfilename); + if (trout) + printf("Tree also written onto file \"%s\"\n", outtreename); + putchar('\n'); + } +} /* maketree */ + + +void clean_up() +{ + /* Free and/or close stuff */ + long i; + + free (rrate); + free (probcat); + free (rate); + /* Seems to require freeing every time... */ + for (i = 0; i < spp; i++) { + free (y[i]); + } + free (y); + free (nayme); + free (enterorder); + free (category); + free (weight); + free (alias); + free (ally); + free (location); + free (aliasweight); + free (probmat); + free (eigmat); + + FClose(infile); + FClose(outfile); + FClose(outtree); +#ifdef MAC + fixmacfile(outfilename); + fixmacfile(outtreename); +#endif +} /* clean_up */ + + +int main(int argc, Char *argv[]) +{ /* Protein Maximum Likelihood */ +#ifdef MAC + argc = 1; /* macsetup("ProML",""); */ + argv[0] = "ProML"; +#endif + init(argc,argv); + progname = argv[0]; + openfile(&infile,INFILE,"input file","r",argv[0],infilename); + openfile(&outfile,OUTFILE,"output file","w",argv[0],outfilename); + mulsets = false; + datasets = 1; + firstset = true; + ibmpc = IBMCRT; + ansi = ANSICRT; + grbg = NULL; + doinit(); + if (ctgry) + openfile(&catfile,CATFILE,"categories file","r",argv[0],catfilename); + if (weights || justwts) + openfile(&weightfile,WEIGHTFILE,"weights file","r",argv[0],weightfilename); + if (trout) + openfile(&outtree,OUTTREE,"output tree file","w",argv[0],outtreename); + for (ith = 1; ith <= datasets; ith++) { + if (datasets > 1) { + fprintf(outfile, "Data set # %ld:\n", ith); + printf("\nData set # %ld:\n", ith); + } + getinput(); + if (ith == 1) + firstset = false; + for (jumb = 1; jumb <= njumble; jumb++) { + max_num_sibs = 0; + maketree(); + } + } + + clean_up(); + printf("Done.\n\n"); +#ifdef WIN32 + phyRestoreConsoleAttributes(); +#endif + return 0; +} /* Protein Maximum Likelihood */ + diff --git a/forester/archive/RIO/others/phylip_mod/src/promlk.c b/forester/archive/RIO/others/phylip_mod/src/promlk.c new file mode 100644 index 0000000..7717f07 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/promlk.c @@ -0,0 +1,3176 @@ + +#include "phylip.h" +#include "seq.h" + +/* version 3.6. (c) Copyright 1986-2004 by the University of Washington + and by Joseph Felsenstein. Written by Joseph Felsenstein and Lucas Mix. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +#define epsilon 0.0001 /* used in makenewv, getthree, update */ +#define over 60 + +typedef long vall[maxcategs]; +typedef double contribarr[maxcategs]; + +#ifndef OLDC +/* function prototypes */ +void init_protmats(void); +void getoptions(void); +void makeprotfreqs(void); +void allocrest(void); +void doinit(void); +void inputoptions(void); +void input_protdata(long); +void makeweights(void); +void prot_makevalues(long, pointarray, long, long, sequence, steptr); +void getinput(void); + +void prot_inittable(void); +void alloc_pmatrix(long); +void make_pmatrix(double **, double **, double **, long, double, double, + double *, double **); +void prot_nuview(node *); +void getthree(node *p, double thigh, double tlow); +void makenewv(node *); +void update(node *); +void smooth(node *); +void promlk_add(node *, node *, node *, boolean); +void promlk_re_move(node **, node **, boolean); + +double prot_evaluate(node *); +void tryadd(node *, node **, node **); +void addpreorder(node *, node *, node *, boolean, boolean); +void restoradd(node *, node *, node *, double); +void tryrearr(node *, boolean *); +void repreorder(node *, boolean *); +void rearrange(node **); +void nodeinit(node *); +void initrav(node *); +void travinit(node *); + +void travsp(node *); +void treevaluate(void); +void promlk_coordinates(node *, long *); +void promlk_drawline(long, double); +void promlk_printree(void); +void describe(node *); +void prot_reconstr(node *, long); +void rectrav(node *, long, long); +void summarize(void); +void promlk_treeout(node *); +void initpromlnode(node **, node **, node *, long, long, long *, long *, + initops, pointarray, pointarray, Char *, Char *, FILE *); +void tymetrav(node *, double *); + +void free_all_protx(long, pointarray); +void maketree(void); +void clean_up(void); +void reallocsites(void); +void prot_freetable(void); +void free_pmatrix(long sib); +/* function prototypes */ +#endif + + +double **tbl; + +Char infilename[100], outfilename[100], intreename[100], outtreename[100], + catfilename[100], weightfilename[100]; +double *rrate; +long sites, weightsum, categs, datasets, ith, njumble, jumb, numtrees, shimotrees; +/* sites = number of sites in actual sequences + numtrees = number of user-defined trees */ +long inseed, inseed0, mx, mx0, mx1; +boolean global, jumble, lngths, trout, usertree, weights, rctgry, ctgry, + auto_, progress, mulsets, firstset, hypstate, smoothit, + polishing, justwts, gama, invar, usejtt, usepmb, usepam; +tree curtree, bestree, bestree2; +node *qwhere, *grbg; +double sumrates, cv, alpha, lambda, lambda1, invarfrac; +long *enterorder; +steptr aliasweight; +double *rate; +longer seed; +double *probcat; +contribarr *contribution; +char aachar[26]="ARNDCQEGHILKMFPSTWYVBZX?*-"; +char *progname; +long rcategs, nonodes2; + + +/* Local variables for maketree, propagated globally for C version: */ +long k, maxwhich, col; +double like, bestyet, tdelta, lnlike, slope, curv, maxlogl; +boolean lastsp, smoothed, succeeded; +double *l0gl; +double x[3], lnl[3]; +double expon1i[maxcategs], expon1v[maxcategs], + expon2i[maxcategs], expon2v[maxcategs]; +node *there; +double **l0gf; +Char ch, ch2; +long **mp; + + +/* Variables introduced to allow for protein probability calculations */ +long max_num_sibs; /* maximum number of siblings used in a */ + /* nuview calculation. determines size */ + /* final size of pmatrices */ +double *eigmat; /* eig matrix variable */ +double **probmat; /* prob matrix variable */ +double ****dpmatrix; /* derivative of pmatrix */ +double ****ddpmatrix; /* derivative of xpmatrix */ +double *****pmatrices; /* matrix of probabilities of protien */ + /* conversion. The 5 subscripts refer */ + /* to sibs, rcategs, categs, final and */ + /* initial states, respectively. */ +double freqaa[20]; /* amino acid frequencies */ + +/* this jtt matrix decomposition due to Elisabeth Tillier */ +static double jtteigmat[] = +{0.0, -0.007031123, -0.006484345, -0.006086499, -0.005514432, +-0.00772664, -0.008643413, -0.010620756, -0.009965552, -0.011671808, +-0.012222418,-0.004589201, -0.013103714, -0.014048038, -0.003170582, +-0.00347935, -0.015311677, -0.016021194, -0.017991454, -0.018911888}; + +static double jttprobmat[20][20] = +{{0.076999996, 0.051000003, 0.043000004, 0.051999998, 0.019999996, 0.041, + 0.061999994, 0.073999997, 0.022999999, 0.052000004, 0.090999997, 0.058999988, + 0.024000007, 0.04, 0.050999992, 0.069, 0.059000006, 0.014000008, 0.032000004, + 0.066000005}, + {0.015604455, -0.068062363, 0.020106264, 0.070723273, 0.011702977, 0.009674053, + 0.074000798, -0.169750458, 0.005560808, -0.008208636, -0.012305869, + -0.063730179, -0.005674643, -0.02116828, 0.104586169, 0.016480839, 0.016765139, + 0.005936994, 0.006046367, -0.0082877}, + {-0.049778281, -0.007118197, 0.003801272, 0.070749616, 0.047506147, + 0.006447017, 0.090522425, -0.053620432, -0.008508175, 0.037170603, + 0.051805545, 0.015413608, 0.019939916, -0.008431976, -0.143511376, + -0.052486072, -0.032116542, -0.000860626, -0.02535993, 0.03843545}, + {-0.028906423, 0.092952047, -0.009615343, -0.067870117, 0.031970392, + 0.048338335, -0.054396304, -0.135916654, 0.017780083, 0.000129242, + 0.031267424, 0.116333586, 0.007499746, -0.032153596, 0.033517051, + -0.013719269, -0.00347293, -0.003291821, -0.02158326, -0.008862168}, + {0.037181176, -0.023106564, -0.004482225, -0.029899635, 0.118139633, + -0.032298569, -0.04683198, 0.05566988, -0.012622847, 0.002023096, + -0.043921088, -0.04792557, -0.003452711, -0.037744513, 0.020822974, + 0.036580187, 0.02331425, -0.004807711, -0.017504496, 0.01086673}, + {0.044754061, -0.002503471, 0.019452517, -0.015611487, -0.02152807, + -0.013131425, -0.03465365, -0.047928912, 0.020608851, 0.067843095, + -0.122130014, 0.002521499, 0.013021646, -0.082891087, -0.061590119, + 0.016270856, 0.051468938, 0.002079063, 0.081019713, 0.082927944}, + {0.058917882, 0.007320741, 0.025278141, 0.000357541, -0.002831285, + -0.032453034, -0.010177288, -0.069447924, -0.034467324, 0.011422358, + -0.128478324, 0.04309667, -0.015319944, 0.113302422, -0.035052393, + 0.046885372, 0.06185183, 0.00175743, -0.06224497, 0.020282093}, + {-0.014562092, 0.022522921, -0.007094389, 0.03480089, -0.000326144, + -0.124039037, 0.020577906, -0.005056454, -0.081841576, -0.004381786, + 0.030826152, 0.091261631, 0.008878828, -0.02829487, 0.042718836, + -0.011180886, -0.012719227, -0.000753926, 0.048062375, -0.009399129}, + {0.033789571, -0.013512235, 0.088010984, 0.017580292, -0.006608005, + -0.037836971, -0.061344686, -0.034268357, 0.018190209, -0.068484614, + 0.120024744, -0.00319321, -0.001349477, -0.03000546, -0.073063759, + 0.081912399, 0.0635245, 0.000197, -0.002481798, -0.09108114}, + {-0.113947615, 0.019230545, 0.088819683, 0.064832765, 0.001801467, + -0.063829682, -0.072001633, 0.018429333, 0.057465965, 0.043901014, + -0.048050874, -0.001705918, 0.022637173, 0.017404665, 0.043877902, + -0.017089594, -0.058489485, 0.000127498, -0.029357194, 0.025943972}, + {0.01512923, 0.023603725, 0.006681954, 0.012360216, -0.000181447, + -0.023011838, -0.008960024, -0.008533239, 0.012569835, 0.03216118, + 0.061986403, -0.001919083, -0.1400832, -0.010669741, -0.003919454, + -0.003707024, -0.026806029, -0.000611603, -0.001402648, 0.065312824}, + {-0.036405351, 0.020816769, 0.011408213, 0.019787053, 0.038897829, + 0.017641789, 0.020858533, -0.006067252, 0.028617353, -0.064259496, + -0.081676567, 0.024421823, -0.028751676, 0.07095096, -0.024199434, + -0.007513119, -0.028108766, -0.01198095, 0.111761119, -0.076198809}, + {0.060831772, 0.144097327, -0.069151377, 0.023754576, -0.003322955, + -0.071618574, 0.03353154, -0.02795295, 0.039519769, -0.023453968, + -0.000630308, -0.098024591, 0.017672997, 0.003813378, -0.009266499, + -0.011192111, 0.016013873, -0.002072968, -0.010022044, -0.012526904}, + {-0.050776604, 0.092833081, 0.044069596, 0.050523021, -0.002628417, + 0.076542572, -0.06388631, -0.00854892, -0.084725311, 0.017401063, + -0.006262541, -0.094457679, -0.002818678, -0.0044122, -0.002883973, + 0.028729685, -0.004961596, -0.001498627, 0.017994575, -0.000232779}, + {-0.01894566, -0.007760205, -0.015160993, -0.027254587, 0.009800903, + -0.013443561, -0.032896517, -0.022734138, -0.001983861, 0.00256111, + 0.024823166, -0.021256768, 0.001980052, 0.028136263, -0.012364384, + -0.013782446, -0.013061091, 0.111173981, 0.021702122, 0.00046654}, + {-0.009444193, -0.042106824, -0.02535015, -0.055125574, 0.006369612, + -0.02945416, -0.069922064, -0.067221068, -0.003004999, 0.053624311, + 0.128862984, -0.057245803, 0.025550508, 0.087741073, -0.001119043, + -0.012036202, -0.000913488, -0.034864475, 0.050124813, 0.055534723}, + {0.145782464, -0.024348311, -0.031216873, 0.106174443, 0.00202862, + 0.02653866, -0.113657267, -0.00755018, 0.000307232, -0.051241158, + 0.001310685, 0.035275877, 0.013308898, 0.002957626, -0.002925034, + -0.065362319, -0.071844582, 0.000475894, -0.000112419, 0.034097762}, + {0.079840455, 0.018769331, 0.078685899, -0.084329807, -0.00277264, + -0.010099754, 0.059700608, -0.019209715, -0.010442992, -0.042100476, + -0.006020556, -0.023061786, 0.017246106, -0.001572858, -0.006703785, + 0.056301316, -0.156787357, -0.000303638, 0.001498195, 0.051363455}, + {0.049628261, 0.016475144, 0.094141653, -0.04444633, 0.005206131, + -0.001827555, 0.02195624, 0.013066683, -0.010415582, -0.022338403, + 0.007837197, -0.023397671, -0.002507095, 0.005177694, 0.017109561, + -0.202340113, 0.069681441, 0.000120736, 0.002201146, 0.004670849}, + {0.089153689, 0.000233354, 0.010826822, -0.004273519, 0.001440618, + 0.000436077, 0.001182351, -0.002255508, -0.000700465, 0.150589876, + -0.003911914, -0.00050154, -0.004564983, 0.00012701, -0.001486973, + -0.018902754, -0.054748555, 0.000217377, -0.000319302, -0.162541651}}; + + +static double pameigmat[] = {0.0, -0.002350753691875762, -0.002701991863800379, + -0.002931612442853115, -0.004262492032364507, -0.005395980482561625, + -0.007141172690079523, -0.007392844756151318, -0.007781761342200766, + -0.00810032066366362, -0.00875299712761124, -0.01048227332164386, + -0.01109594097332267, -0.01298616073142234, -0.01342036228188581, + -0.01552599145527578, -0.01658762802054814, -0.0174893445623765, + -0.01933280832903272, -0.02206353522613025}; + +static double pamprobmat[20][20] = + {{0.087683339901135, 0.04051291829598762, 0.04087846315185977, + 0.04771603459744777, 0.03247095396561266, 0.03784612688594957, + 0.0504933695604875, 0.0898249006830755, 0.03285885059543713, + 0.0357514442352119, 0.0852464099207521, 0.07910313444070642, + 0.01488243946396588, 0.04100101908956829, 0.05158026947089499, + 0.06975497205982451, 0.05832757042475474, 0.00931264523877807, + 0.03171540880870517, 0.06303972920984541}, + {0.01943453646811026, -0.004492574160484092, 0.007694891061220776, + 0.01278399096887701, 0.0106157418450234, 0.007542140341575122, + 0.01326994069032819, 0.02615565199894889, 0.003123125764490066, + 0.002204507682495444, -0.004782898215768979, 0.01204241965177619, + 0.0007847400096924341, -0.03043626073172116, 0.01221202591902536, + 0.01100527004684405, 0.01116495631339549, -0.0925364931988571, + -0.02622065387931562, 0.00843494142432107}, + {0.01855357100209072, 0.01493642835763868, 0.0127983090766285, + 0.0200533250704364, -0.1681898360107787, 0.01551657969909255, + 0.02128060163107209, 0.03100633591848964, 0.00845480845269879, + 0.000927149370785571, 0.00937207565817036, 0.03490557769673472, + 0.00300443019551563, -0.02590837220264415, 0.01329376859943192, + 0.006854110889741407, 0.01102593860528263, 0.003360844186685888, + -0.03459712356647764, 0.003351477369404443}, + {0.02690642688200102, 0.02131745801890152, 0.0143626616005213, + 0.02405101425725929, 0.05041008641436849, 0.01430925051050233, + 0.02362114036816964, 0.04688381789373886, 0.005250115453626377, + -0.02040112168595516, -0.0942720776915669, 0.03773004996758644, + -0.00822831940782616, -0.1164872809439224, 0.02286281877257392, + 0.02849551240669926, 0.01468856796295663, 0.02377110964207936, + -0.094380545436577, -0.02089068498518036}, + {0.00930172577225213, 0.01493463068441099, 0.020186920775608, + 0.02892154953912524, -0.01224593358361567, 0.01404228329986624, + 0.02671186617119041, 0.04537535161795231, 0.02229995804098249, + -0.04635704133961575, -0.1966910360247138, 0.02796648065439046, + -0.02263484732621436, 0.0440490503242072, 0.01148782948302166, + 0.01989170531824069, 0.001306805142981245, -0.005676690969116321, + 0.07680476281625202, -0.07967537039721849}, + {0.06602274245435476, -0.0966661981471856, -0.005241648783844579, + 0.00859135188171146, -0.007762129660943368, -0.02888965572526196, + 0.003592291525888222, 0.1668410669287673, -0.04082039290551406, + 0.005233775047553415, -0.01758244726137135, -0.1493955762326898, + -0.00855819137835548, 0.004211419253492328, 0.01929306335052688, + 0.03008056746359405, 0.0190444422412472, 0.005577189741419315, + 0.0000874156155112068, 0.02634091459108298}, + {0.01933897472880726, 0.05874583569377844, -0.02293534606228405, + -0.07206314017962175, -0.004580681581546643, -0.0628814337610561, + -0.0850783812795136, 0.07988417636610614, -0.0852798990133397, + 0.01649047166155952, -0.05416647263757423, 0.1089834536254064, + 0.005093403979413865, 0.02520300254161142, 0.0005951431406455604, + 0.02441251821224675, 0.02796099482240553, -0.002574933994926502, + -0.007172237553012804, 0.03002455129086954}, + {0.04041118479094272, -0.002476225672095412, -0.01494505811263243, + -0.03759443758599911, -0.00892246902492875, -0.003634714029239211, + -0.03085671837973749, -0.126176309029931, 0.005814031139083794, + 0.01313561962646063, -0.04760487162503322, -0.0490563712725484, + -0.005082243450421558, -0.01213634309383557, 0.1806666927079249, + 0.02111663336185495, 0.02963486860587087, -0.0000175020101657785, + 0.01197155383597686, 0.0357526792184636}, + {-0.01184769557720525, 0.01582776076338872, -0.006570708266564639, + -0.01471915653734024, 0.00894343616503608, 0.00562664968033149, + -0.01465878888356943, 0.05365282692645818, 0.00893509735776116, + -0.05879312944436473, 0.0806048683392995, -0.007722897986905326, + -0.001819943882718859, 0.0942535573077267, 0.07483883782251654, + 0.004354639673913651, -0.02828804845740341, -0.001318222184691827, + -0.07613149604246563, -0.1251675867732172}, + {0.00834167031558193, -0.01509357596974962, 0.007098172811092488, + 0.03127677418040319, 0.001992448468465455, 0.00915441566808454, + 0.03430175973499201, -0.0730648147535803, -0.001402707145575659, + 0.04780949194330815, -0.1115035603461273, -0.01292297197609604, + -0.005056270550868528, 0.1112053349612027, -0.03801929822379964, + -0.001191241001736563, 0.01872874622910247, 0.0005314214903865993, + -0.0882576318311789, 0.07607183599610171}, + {-0.01539460099727769, 0.04988596184297883, -0.01187240760647617, + -0.06987843637091853, -0.002490472846497859, 0.01009857892494956, + -0.07473588067847209, 0.0906009925879084, 0.1243612446505172, + 0.02152806401345371, -0.03504879644860233, -0.06680752427613573, + -0.005574485153629651, 0.001518282948127752, -0.01999168507510701, + -0.01478606199529457, -0.02203749419458996, -0.00132680708294333, + -0.01137505997867614, 0.05332658773667142}, + {-0.06104378736432388, 0.0869446603393548, -0.03298331234537257, + 0.03128515657456024, 0.003906358569208259, 0.03578694104193928, + 0.06241936133189683, 0.06182827284921748, -0.05566564263245907, + 0.02640868588189002, -0.01349751243059039, -0.05507866642582638, + -0.006671347738489326, -0.001470096466016046, 0.05185743641479938, + -0.07494697511168257, -0.1175185439057584, -0.001188074094105709, + 0.00937934805737347, 0.05024773745437657}, + {-0.07252555582124737, -0.116554459356382, 0.003605361887406413, + -0.00836518656029184, 0.004615715410745561, 0.005105376617651312, + -0.00944938657024391, 0.05602449420950007, 0.02722719610561933, + 0.01959357494748446, -0.0258655103753962, 0.1440733975689835, + 0.01446782819722976, 0.003718896062070054, 0.05825843045655135, + -0.06230154142733073, -0.07833704962300169, 0.003160836143568724, + -0.001169873777936648, 0.03471745590503304}, + {-0.03204352258752698, 0.01019272923862322, 0.04509668708733181, + 0.05756522429120813, -0.0004601149081726732, -0.0984718150777423, + -0.01107826100664925, -0.005680277810520585, 0.01962359392320817, + 0.01550006899131986, 0.05143956925922197, 0.02462476682588468, + -0.0888843861002653, -0.00171553583659411, 0.01606331750661664, + 0.001176847743518958, -0.02070972978912828, -0.000341523293579971, + -0.002654732745607882, 0.02075709428885848}, + {0.03595199666430258, -0.02800219615234468, -0.04341570015493925, + -0.0748275906176658, 0.0001051403676377422, 0.1137431321746627, + 0.005852087565974318, 0.003443037513847801, -0.02481931657706633, + -0.003651181839831423, 0.03195794176786321, 0.04135411406392523, + -0.07562030263210619, 0.001769332364699, -0.01984381173403915, + -0.005029750745010152, 0.02649253902476472, 0.000518085571702734, + 0.001062936684474851, 0.01295950668914449}, + {-0.16164552322896, -0.0006050035060464324, 0.0258380054414968, + 0.003188424740960557, -0.0002058911341821877, 0.03157555987384681, + -0.01678913462596107, 0.03096216145389774, -0.0133791110666919, + 0.1125249625204277, -0.00769017706442472, -0.02653938062180483, + -0.002555329863523985, -0.00861833362947954, 0.01775148884754278, + 0.02529310679774722, 0.0826243417011238, -0.0001036728183032624, + 0.001963562313294209, -0.0935900561309786}, + {0.1652394174588469, -0.002814245280784351, -0.0328982001821263, + -0.02000104712964131, 0.0002208121995725443, -0.02733462178511839, + 0.02648078162927627, -0.01788316626401427, 0.01630747623755998, + 0.1053849023838147, -0.005447706553811218, 0.01810876922536839, + -0.001808914710282444, -0.007687912115607397, -0.01332593672114388, + -0.02110750894891371, -0.07456116592983384, 0.000219072589592394, + 0.001270886972191055, -0.1083616930749109}, + {0.02453279389716254, -0.005820072356487439, 0.100260287284095, + 0.01277522280305745, -0.003184943445296999, 0.05814689527984152, + -0.0934012278200201, -0.03017986487349484, -0.03136625380994165, + 0.00988668352785117, -0.00358900410973142, -0.02017443675004764, + 0.000915384582922184, -0.001460963415183106, -0.01370112443251124, + 0.1130040979284457, -0.1196161771323699, -0.0005800211204222045, + -0.0006153403201024954, 0.00416806428223025}, + {-0.0778089244252535, -0.007055161182430869, -0.0349307504860869, + -0.0811915584276571, -0.004689825871599125, -0.03726108871471753, + 0.1072225647141469, -0.00917015113070944, 0.01381628985996913, + -0.00123227881492089, 0.001815954515275675, 0.005708744099349901, + -0.0001448985044877925, -0.001306578795561384, -0.006992743514185243, + 0.1744720240732789, -0.05353628497814023, -0.0007613684227234787, + -0.0003550282315997644, 0.01340106423804634}, + {-0.0159527329868513, -0.007622151568160798, -0.1389875105184963, + 0.1165051999914764, -0.002217810389087748, 0.01550003226513692, + -0.07427664222230566, -0.003371438498619264, 0.01385754771325365, + 0.004759020167383304, 0.001624078805220564, 0.02011638303109029, + -0.001717827082842178, -0.0007424036708598594, -0.003978884451898934, + 0.0866418927301209, -0.01280817739158123, -0.00023039242454603, + 0.002309205802479111, 0.0005926106991001195}}; + +/* this pmb matrix decomposition due to Elisabeth Tillier */ +static double pmbeigmat[20] = +{0.0000001586972220,-1.8416770496147100, -1.6025046986139100,-1.5801012515121300, +-1.4987794099715900,-1.3520794233801900,-1.3003469390479700,-1.2439503327631300, +-1.1962574080244200,-1.1383730501367500,-1.1153278910708000,-0.4934843510654760, +-0.5419014550215590,-0.9657997830826700,-0.6276075673757390,-0.6675927795018510, +-0.6932641383465870,-0.8897872681859630,-0.8382698977371710,-0.8074694642446040}; + +static double pmbprobmat[20][20] = +{{0.0771762457248147,0.0531913844998640,0.0393445076407294,0.0466756566755510, +0.0286348361997465,0.0312327748383639,0.0505410248721427,0.0767106611472993, +0.0258916271688597,0.0673140562194124,0.0965705469252199,0.0515979465932174, +0.0250628079438675,0.0503492018628350,0.0399908189418273,0.0641898881894471, +0.0517539616710987,0.0143507440546115,0.0357994592438322,0.0736218495862984}, +{0.0368263046116572,-0.0006728917107827,0.0008590805287740,-0.0002764255356960, +0.0020152937187455,0.0055743720652960,0.0003213317669367,0.0000449190281568, +-0.0004226254397134,0.1805040629634510,-0.0272246813586204,0.0005904606533477, +-0.0183743200073889,-0.0009194625608688,0.0008173657533167,-0.0262629806302238, +0.0265738757209787,0.0002176606241904,0.0021315644838566,-0.1823229927207580}, +{-0.0194800075560895,0.0012068088610652,-0.0008803318319596,-0.0016044273960017, +-0.0002938633803197,-0.0535796754602196,0.0155163896648621,-0.0015006360762140, +0.0021601372013703,0.0268513218744797,-0.1085292493742730,0.0149753083138452, +0.1346457366717310,-0.0009371698759829,0.0013501708044116,0.0346352293103622, +-0.0276963770242276,0.0003643142783940,0.0002074817333067,-0.0174108903914110}, +{0.0557839400850153,0.0023271577185437,0.0183481103396687,0.0023339480096311, +0.0002013267015151,-0.0227406863569852,0.0098644845475047,0.0064721276774396, +0.0001389408104210,-0.0473713878768274,-0.0086984445005797,0.0026913674934634, +0.0283724052562196,0.0001063665179457,0.0027442574779383,-0.1875312134708470, +0.1279864877057640,0.0005103347834563,0.0003155113168637,0.0081451082759554}, +{0.0037510125027265,0.0107095920636885,0.0147305410328404,-0.0112351252180332, +-0.0001500408626446,-0.1523450933729730,0.0611532413339872,-0.0005496748939503, +0.0048714378736644,-0.0003826320053999,0.0552010244407311,0.0482555671001955, +-0.0461664995115847,-0.0021165008617978,-0.0004574454232187,0.0233755883688949, +-0.0035484915422384,0.0009090698422851,0.0013840637687758,-0.0073895139302231}, +{-0.0111512564930024,0.1025460064723080,0.0396772456883791,-0.0298408501361294, +-0.0001656742634733,-0.0079876311843289,0.0712644184507945,-0.0010780604625230, +-0.0035880882043592,0.0021070399334252,0.0016716329894279,-0.1810123023850110, +0.0015141703608724,-0.0032700852781804,0.0035503782441679,0.0118634302028026, +0.0044561606458028,-0.0001576678495964,0.0023470722225751,-0.0027457045397157}, +{0.1474525743949170,-0.0054432538500293,0.0853848892349828,-0.0137787746207348, +-0.0008274830358513,0.0042248844582553,0.0019556229305563,-0.0164191435175148, +-0.0024501858854849,0.0120908948084233,-0.0381456105972653,0.0101271614855119, +-0.0061945941321859,0.0178841099895867,-0.0014577779202600,-0.0752120602555032, +-0.1426985695849920,0.0002862275078983,-0.0081191734261838,0.0313401149422531}, +{0.0542034611735289,-0.0078763926211829,0.0060433542506096,0.0033396210615510, +0.0013965072374079,0.0067798903832256,-0.0135291136622509,-0.0089982442731848, +-0.0056744537593887,-0.0766524225176246,0.1881210263933930,-0.0065875518675173, +0.0416627569300375,-0.0953804133524747,-0.0012559228448735,0.0101622644292547, +-0.0304742453119050,0.0011702318499737,0.0454733434783982,-0.1119239362388150}, +{0.1069409037912470,0.0805064400880297,-0.1127352030714600,0.1001181253523260, +-0.0021480427488769,-0.0332884841459003,-0.0679837575848452,-0.0043812841356657, +0.0153418716846395,-0.0079441315103188,-0.0121766182046363,-0.0381127991037620, +-0.0036338726532673,0.0195324059593791,-0.0020165963699984,-0.0061222685010268, +-0.0253761448771437,-0.0005246410999057,-0.0112205170502433,0.0052248485517237}, +{-0.0325247648326262,0.0238753651653669,0.0203684886605797,0.0295666232678825, +-0.0003946714764213,-0.0157242718469554,-0.0511737848084862,0.0084725632040180, +-0.0167068828528921,0.0686962159427527,-0.0659702890616198,-0.0014289912494271, +-0.0167000964093416,-0.1276689083678200,0.0036575057830967,-0.0205958145531018, +0.0000368919612829,0.0014413626622426,0.1064360941926030,0.0863372661517408}, +{-0.0463777468104402,0.0394712148670596,0.1118686750747160,0.0440711686389031, +-0.0026076286506751,-0.0268454015202516,-0.1464943067133240,-0.0137514051835380, +-0.0094395514284145,-0.0144124844774228,0.0249103379323744,-0.0071832157138676, +0.0035592787728526,0.0415627419826693,0.0027040097365669,0.0337523666612066, +0.0316121324137152,-0.0011350177559026,-0.0349998884574440,-0.0302651879823361}, +{0.0142360925194728,0.0413145623127025,0.0324976427846929,0.0580930922002398, +-0.0586974207121084,0.0202001168873069,0.0492204086749069,0.1126593173463060, +0.0116620013776662,-0.0780333711712066,-0.1109786767320410,0.0407775100936731, +-0.0205013161312652,-0.0653458585025237,0.0347351829703865,0.0304448983224773, +0.0068813748197884,-0.0189002309261882,-0.0334507528405279,-0.0668143558699485}, +{-0.0131548829657936,0.0044244322828034,-0.0050639951827271,-0.0038668197633889, +-0.1536822386530220,0.0026336969165336,0.0021585651200470,-0.0459233839062969, +0.0046854727140565,0.0393815434593599,0.0619554007991097,0.0027456299925622, +0.0117574347936383,0.0373018612990383,0.0024818527553328,-0.0133956606027299, +-0.0020457128424105,0.0154178819990401,0.0246524142683911,0.0275363065682921}, +{-0.1542307272455030,0.0364861558267547,-0.0090880407008181,0.0531673937889863, +0.0157585615170580,0.0029986538457297,0.0180194047699875,0.0652152443589317, +0.0266842840376180,0.0388457366405908,0.0856237634510719,0.0126955778952183, +0.0099593861698250,-0.0013941794862563,0.0294065511237513,-0.1151906949298290, +-0.0852991447389655,0.0028699120202636,-0.0332087026659522,0.0006811857297899}, +{0.0281300736924501,-0.0584072081898638,-0.0178386569847853,-0.0536470338171487, +-0.0186881656029960,-0.0240008730656106,-0.0541064820498883,0.2217137098936020, +-0.0260500001542033,0.0234505236798375,0.0311127151218573,-0.0494139126682672, +0.0057093465049849,0.0124937286655911,-0.0298322975915689,0.0006520211333102, +-0.0061018680727128,-0.0007081999479528,-0.0060523759094034,0.0215845995364623}, +{0.0295321046399105,-0.0088296411830544,-0.0065057049917325,-0.0053478115612781, +-0.0100646496794634,-0.0015473619084872,0.0008539960632865,-0.0376381933046211, +-0.0328135588935604,0.0672161874239480,0.0667626853916552,-0.0026511651464901, +0.0140451514222062,-0.0544836996133137,0.0427485157912094,0.0097455780205802, +0.0177309072915667,-0.0828759701187452,-0.0729504795471370,0.0670731961252313}, +{0.0082646581043963,-0.0319918630534466,-0.0188454445200422,-0.0374976353856606, +0.0037131290686848,-0.0132507796987883,-0.0306958830735725,-0.0044119395527308, +-0.0140786756619672,-0.0180512599925078,-0.0208243802903953,-0.0232202769398931, +-0.0063135878270273,0.0110442171178168,0.1824538048228460,-0.0006644614422758, +-0.0069909097436659,0.0255407650654681,0.0099119399501151,-0.0140911517070698}, +{0.0261344441524861,-0.0714454044548650,0.0159436926233439,0.0028462736216688, +-0.0044572637889080,-0.0089474834434532,-0.0177570282144517,-0.0153693244094452, +0.1160919467206400,0.0304911481385036,0.0047047513411774,-0.0456535116423972, +0.0004491494948617,-0.0767108879444462,-0.0012688533741441,0.0192445965934123, +0.0202321954782039,0.0281039933233607,-0.0590403018490048,0.0364080426546883}, +{0.0115826306265004,0.1340228176509380,-0.0236200652949049,-0.1284484655137340, +-0.0004742338006503,0.0127617346949511,-0.0428560878860394,0.0060030732454125, +0.0089182609926781,0.0085353834972860,0.0048464809638033,0.0709740071429510, +0.0029940462557054,-0.0483434904493132,-0.0071713680727884,-0.0036840391887209, +0.0031454003250096,0.0246243550241551,-0.0449551277644180,0.0111449232769393}, +{0.0140356721886765,-0.0196518236826680,0.0030517022326582,0.0582672093364850, +-0.0000973895685457,0.0021704767224292,0.0341806268602705,-0.0152035987563018, +-0.0903198657739177,0.0259623214586925,0.0155832497882743,-0.0040543568451651, +0.0036477631918247,-0.0532892744763217,-0.0142569373662724,0.0104500681408622, +0.0103483945857315,0.0679534422398752,-0.0768068882938636,0.0280289727046158}} +; + + +void init_protmats() +{ + long l, m; + + eigmat = (double *) Malloc (20 * sizeof(double)); + for (l = 0; l <= 19; l++) + if (usejtt) + eigmat[l] = jtteigmat[l]*100.0; + else { + if (usepmb) + eigmat[l] = pmbeigmat[l]; + else + eigmat[l] = pameigmat[l]*100.0; + } + probmat = (double **) Malloc (20 * sizeof(double *)); + for (l = 0; l < 20; l++) + probmat[l] = (double *) Malloc (20 * sizeof(double)); + for (l = 0; l <= 19; l++) + for (m= 0; m <= 19; m++) + if (usejtt) + probmat[l][m] = jttprobmat[l][m]; + else { + if (usepmb) + probmat[l][m] = pmbprobmat[l][m]; + else + probmat[l][m] = pamprobmat[l][m]; + } +} /* init_protmats */ + + +void getoptions() +{ + /* interactively set options */ + long i, loopcount, loopcount2; + Char ch; + boolean done; + boolean didchangecat, didchangercat; + double probsum; + + fprintf(outfile, "\nAmino acid sequence\n"); + fprintf(outfile, " Maximum Likelihood method with molecular "); + fprintf(outfile, "clock, version %s\n\n", VERSION); + + putchar('\n'); + auto_ = false; + ctgry = false; + didchangecat = false; + rctgry = false; + didchangercat = false; + categs = 1; + rcategs = 1; + gama = false; + global = false; + hypstate = false; + invar = false; + jumble = false; + njumble = 1; + lambda = 1.0; + lambda1 = 0.0; + lngths = false; + trout = true; + usepam = false; + usepmb = false; + usejtt = true; + usertree = false; + weights = false; + printdata = false; + progress = true; + treeprint = true; + interleaved = true; + loopcount = 0; + do { + cleerhome(); + printf("\nAmino acid sequence\n"); + printf(" Maximum Likelihood method with molecular clock, version %s\n\n", + VERSION); + printf("Settings for this run:\n"); + printf(" U Search for best tree?"); + if (usertree) + printf(" No, use user trees in input file\n"); + else + printf(" Yes\n"); + printf(" P JTT, PMB or PAM probability model? %s\n", + usejtt ? "Jones-Taylor-Thornton" : + usepmb ? "Henikoff/Tillier PMB" : "Dayhoff PAM"); + if (usertree) { + printf(" L Use lengths from user tree?"); + if (lngths) + printf(" Yes\n"); + else + printf(" No\n"); + } + printf(" C One category of substitution rates?"); + if (!ctgry) + printf(" Yes\n"); + else + printf(" %ld categories\n", categs); + printf(" R Rate variation among sites?"); + if (!rctgry) + printf(" constant rate of change\n"); + else { + if (gama) + printf(" Gamma distributed rates\n"); + else { + if (invar) + printf(" Gamma+Invariant sites\n"); + else + printf(" user-defined HMM of rates\n"); + } + printf(" A Rates at adjacent sites correlated?"); + if (!auto_) + printf(" No, they are independent\n"); + else + printf(" Yes, mean block length =%6.1f\n", 1.0 / lambda); + } + if (!usertree) { + printf(" G Global rearrangements?"); + if (global) + printf(" Yes\n"); + else + printf(" No\n"); + } + printf(" W Sites weighted? %s\n", + (weights ? "Yes" : "No")); + if (!usertree) { + printf(" J Randomize input order of sequences?"); + if (jumble) + printf(" Yes (seed = %8ld, %3ld times)\n", inseed0, njumble); + else + printf(" No. Use input order\n"); + } + printf(" M Analyze multiple data sets?"); + if (mulsets) + printf(" Yes, %2ld %s\n", datasets, + (justwts ? "sets of weights" : "data sets")); + else + printf(" No\n"); + printf(" I Input sequences interleaved?"); + if (interleaved) + printf(" Yes\n"); + else + printf(" No, sequential\n"); + printf(" 0 Terminal type (IBM PC, ANSI, none)?"); + if (ibmpc) + printf(" IBM PC\n"); + if (ansi) + printf(" ANSI\n"); + if (!(ibmpc || ansi)) + printf(" (none)\n"); + printf(" 1 Print out the data at start of run"); + if (printdata) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" 2 Print indications of progress of run"); + if (progress) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" 3 Print out tree"); + if (treeprint) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" 4 Write out trees onto tree file?"); + if (trout) + printf(" Yes\n"); + else + printf(" No\n"); + printf(" 5 Reconstruct hypothetical sequences? %s\n", + (hypstate ? "Yes" : "No")); + printf("\nAre these settings correct? "); + printf("(type Y or the letter for one to change)\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%c%*[^\n]", &ch); + getchar(); + if (ch == '\n') + ch = ' '; + uppercase(&ch); + done = (ch == 'Y'); + if (!done) { + uppercase(&ch); + if (strchr("UPCRJAFWGLTMI012345", ch) != NULL){ + switch (ch) { + + case 'C': + ctgry = !ctgry; + if (ctgry) { + printf("\nSitewise user-assigned categories:\n\n"); + initcatn(&categs); + if (rate){ + free(rate); + } + rate = (double *) Malloc( categs * sizeof(double)); + didchangecat = true; + initcategs(categs, rate); + } + break; + + case 'P': + if (usejtt) { + usejtt = false; + usepmb = true; + } else { + if (usepmb) { + usepmb = false; + usepam = true; + } else { + usepam = false; + usejtt = true; + } + } + break; + + case 'R': + if (!rctgry) { + rctgry = true; + gama = true; + } else { + if (gama) { + gama = false; + invar = true; + } else { + if (invar) + invar = false; + else + rctgry = false; + } + } + break; + + case 'A': + auto_ = !auto_; + if (auto_) { + initlambda(&lambda); + lambda1 = 1.0 - lambda; + } + break; + + case 'G': + global = !global; + break; + + case 'W': + weights = !weights; + break; + + case 'J': + jumble = !jumble; + if (jumble) + initjumble(&inseed, &inseed0, seed, &njumble); + else njumble = 1; + break; + + case 'L': + lngths = !lngths; + break; + + case 'U': + usertree = !usertree; + break; + + case 'M': + mulsets = !mulsets; + if (mulsets) { + printf("Multiple data sets or multiple weights?"); + loopcount2 = 0; + do { + printf(" (type D or W)\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%c%*[^\n]", &ch2); + getchar(); + if (ch2 == '\n') + ch2 = ' '; + uppercase(&ch2); + countup(&loopcount2, 10); + } while ((ch2 != 'W') && (ch2 != 'D')); + justwts = (ch2 == 'W'); + if (justwts) + justweights(&datasets); + else + initdatasets(&datasets); + if (!jumble) { + jumble = true; + initjumble(&inseed, &inseed0, seed, &njumble); + } + } + break; + + case 'I': + interleaved = !interleaved; + break; + + case '0': + initterminal(&ibmpc, &ansi); + break; + + case '1': + printdata = !printdata; + break; + + case '2': + progress = !progress; + break; + + case '3': + treeprint = !treeprint; + break; + + case '4': + trout = !trout; + break; + + case '5': + hypstate = !hypstate; + break; + } + } else + printf("Not a possible option!\n"); + } + countup(&loopcount, 100); + } while (!done); + if (gama || invar) { + loopcount = 0; + do { + printf( +"\nCoefficient of variation of substitution rate among sites (must be positive)\n"); + printf( + " In gamma distribution parameters, this is 1/(square root of alpha)\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%lf%*[^\n]", &cv); + getchar(); + countup(&loopcount, 10); + } while (cv <= 0.0); + alpha = 1.0 / (cv * cv); + } + if (!rctgry) + auto_ = false; + if (rctgry) { + printf("\nRates in HMM"); + if (invar) + printf(" (including one for invariant sites)"); + printf(":\n"); + initcatn(&rcategs); + if (probcat){ + free(probcat); + free(rrate); + } + probcat = (double *) Malloc(rcategs * sizeof(double)); + rrate = (double *) Malloc(rcategs * sizeof(double)); + didchangercat = true; + if (gama) + initgammacat(rcategs, alpha, rrate, probcat); + else { + if (invar) { + loopcount = 0; + do { + printf("Fraction of invariant sites?\n"); + scanf("%lf%*[^\n]", &invarfrac); + getchar(); + countup (&loopcount, 10); + } while ((invarfrac <= 0.0) || (invarfrac >= 1.0)); + initgammacat(rcategs-1, alpha, rrate, probcat); + for (i = 0; i < rcategs-1; i++) + probcat[i] = probcat[i]*(1.0-invarfrac); + probcat[rcategs-1] = invarfrac; + rrate[rcategs-1] = 0.0; + } else { + initcategs(rcategs, rrate); + initprobcat(rcategs, &probsum, probcat); + } + } + } + if (!didchangercat){ + rrate = Malloc( rcategs*sizeof(double)); + probcat = Malloc( rcategs*sizeof(double)); + rrate[0] = 1.0; + probcat[0] = 1.0; + } + if (!didchangecat){ + rate = Malloc( categs*sizeof(double)); + rate[0] = 1.0; + } + init_protmats(); +} /* getoptions */ + + +void makeprotfreqs() +{ + /* calculate amino acid frequencies based on eigmat */ + long i, mineig; + + mineig = 0; + for (i = 0; i <= 19; i++) + if (fabs(eigmat[i]) < fabs(eigmat[mineig])) + mineig = i; + memcpy(freqaa, probmat[mineig], 20 * sizeof(double)); + for (i = 0; i <= 19; i++) + freqaa[i] = fabs(freqaa[i]); +} /* makeprotfreqs */ + +void reallocsites() +{ + long i; + for (i = 0; i < spp; i++) + y[i] = (char *)Malloc(sites * sizeof(char)); + enterorder = (long *)Malloc(spp*sizeof(long)); + weight = (long *)Malloc(sites*sizeof(long)); + category = (long *)Malloc(sites*sizeof(long)); + alias = (long *)Malloc(sites*sizeof(long)); + aliasweight = (long *)Malloc(sites*sizeof(long)); + ally = (long *)Malloc(sites*sizeof(long)); + location = (long *)Malloc(sites*sizeof(long)); + for (i = 0; i < sites; i++) + category[i] = 1; + for (i = 0; i < sites; i++) + weight[i] = 1; + makeweights(); +} + +void allocrest() +{ + long i; + + y = (Char **)Malloc(spp*sizeof(Char *)); + nayme = (naym *)Malloc(spp*sizeof(naym)); + for (i = 0; i < spp; i++) + y[i] = (char *)Malloc(sites * sizeof(char)); + enterorder = (long *)Malloc(spp*sizeof(long)); + weight = (long *)Malloc(sites*sizeof(long)); + category = (long *)Malloc(sites*sizeof(long)); + alias = (long *)Malloc(sites*sizeof(long)); + aliasweight = (long *)Malloc(sites*sizeof(long)); + ally = (long *)Malloc(sites*sizeof(long)); + location = (long *)Malloc(sites*sizeof(long)); +} /* allocrest */ + + +void doinit() +{ + /* initializes variables */ + + inputnumbers(&spp, &sites, &nonodes, 1); + getoptions(); + makeprotfreqs(); + if (printdata) + fprintf(outfile, "%2ld species, %3ld sites\n", spp, sites); + alloctree(&curtree.nodep, nonodes, usertree); + allocrest(); + if (usertree) + return; + alloctree(&bestree.nodep, nonodes, 0); + if (njumble <= 1) + return; + alloctree(&bestree2.nodep, nonodes, 0); +} /* doinit */ + + +void inputoptions() +{ + long i; + + if (!firstset) { + samenumsp(&sites, ith); + reallocsites(); + } + if (firstset) { + for (i = 0; i < sites; i++) + category[i] = 1; + for (i = 0; i < sites; i++) + weight[i] = 1; + } + if (justwts || weights) + inputweights(sites, weight, &weights); + weightsum = 0; + for (i = 0; i < sites; i++) + weightsum += weight[i]; + if ((ctgry && categs > 1) && (firstset || !justwts)) { + inputcategs(0, sites, category, categs, "ProMLK"); + if (printdata) + printcategs(outfile, sites, category, "Site categories"); + } + if (weights && printdata) + printweights(outfile, 0, sites, weight, "Sites"); + fprintf(outfile, "%s model of amino acid change\n\n", + (usejtt ? "Jones-Taylor-Thornton" : + usepmb ? "Henikoff/Tillier PMB" : "Dayhoff PAM")); +} /* inputoptions */ + + +void input_protdata(long chars) +{ + /* input the names and sequences for each species */ + /* used by proml */ + long i, j, k, l, basesread, basesnew; + Char charstate; + boolean allread, done; + + if (printdata) + headings(chars, "Sequences", "---------"); + basesread = 0; + basesnew = 0; + allread = false; + while (!(allread)) { + /* eat white space -- if the separator line has spaces on it*/ + do { + charstate = gettc(infile); + } while (charstate == ' ' || charstate == '\t'); + ungetc(charstate, infile); + if (eoln(infile)) + scan_eoln(infile); + i = 1; + while (i <= spp) { + if ((interleaved && basesread == 0) || !interleaved) + initname(i - 1); + j = (interleaved) ? basesread : 0; + done = false; + while (!done && !eoff(infile)) { + if (interleaved) + done = true; + while (j < chars && !(eoln(infile) || eoff(infile))) { + charstate = gettc(infile); + if (charstate == '\n' || charstate == '\t') + charstate = ' '; + if (charstate == ' ' || (charstate >= '0' && charstate <= '9')) + continue; + uppercase(&charstate); + if ((strchr("ABCDEFGHIKLMNPQRSTVWXYZ*?-", charstate)) == NULL){ + printf("ERROR: bad amino acid: %c at position %ld of species %ld\n", + charstate, j, i); + if (charstate == '.') { + printf(" Periods (.) may not be used as gap characters.\n"); + printf(" The correct gap character is (-)\n"); + } + exxit(-1); + } + j++; + y[i - 1][j - 1] = charstate; + } + if (interleaved) + continue; + if (j < chars) + scan_eoln(infile); + else if (j == chars) + done = true; + } + if (interleaved && i == 1) + basesnew = j; + + scan_eoln(infile); + + if ((interleaved && j != basesnew) || + (!interleaved && j != chars)) { + printf("ERROR: SEQUENCES OUT OF ALIGNMENT AT POSITION %ld.\n", j); + exxit(-1); + } + i++; + } + + if (interleaved) { + basesread = basesnew; + allread = (basesread == chars); + } else + allread = (i > spp); + } + if (!printdata) + return; + for (i = 1; i <= ((chars - 1) / 60 + 1); i++) { + for (j = 1; j <= spp; j++) { + for (k = 0; k < nmlngth; k++) + putc(nayme[j - 1][k], outfile); + fprintf(outfile, " "); + l = i * 60; + if (l > chars) + l = chars; + for (k = (i - 1) * 60 + 1; k <= l; k++) { + if (j > 1 && y[j - 1][k - 1] == y[0][k - 1]) + charstate = '.'; + else + charstate = y[j - 1][k - 1]; + putc(charstate, outfile); + if (k % 10 == 0 && k % 60 != 0) + putc(' ', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); +} /* input_protdata */ + + +void makeweights() +{ + /* make up weights vector to avoid duplicate computations */ + long i; + + for (i = 1; i <= sites; i++) { + alias[i - 1] = i; + ally[i - 1] = 0; + aliasweight[i - 1] = weight[i - 1]; + location[i - 1] = 0; + } + sitesort2(sites, aliasweight); + sitecombine2(sites, aliasweight); + sitescrunch2(sites, 1, 2, aliasweight); + for (i = 1; i <= sites; i++) { + if (aliasweight[i - 1] > 0) + endsite = i; + } + for (i = 1; i <= endsite; i++) { + ally[alias[i - 1] - 1] = alias[i - 1]; + location[alias[i - 1] - 1] = i; + } + contribution = (contribarr *) Malloc( endsite*sizeof(contribarr)); +} /* makeweights */ + + +void prot_makevalues(long categs, pointarray treenode, long endsite, + long spp, sequence y, steptr alias) +{ + /* set up fractional likelihoods at tips */ + /* a version of makevalues2 found in seq.c */ + /* used by proml */ + long i, j, k, l; + long b; + + for (k = 0; k < endsite; k++) { + j = alias[k]; + for (i = 0; i < spp; i++) { + for (l = 0; l < categs; l++) { + memset(treenode[i]->protx[k][l], 0, sizeof(double)*20); + switch (y[i][j - 1]) { + + case 'A': + treenode[i]->protx[k][l][0] = 1.0; + break; + + case 'R': + treenode[i]->protx[k][l][(long)arginine - (long)alanine] = 1.0; + break; + + case 'N': + treenode[i]->protx[k][l][(long)asparagine - (long)alanine] = 1.0; + break; + + case 'D': + treenode[i]->protx[k][l][(long)aspartic - (long)alanine] = 1.0; + break; + + case 'C': + treenode[i]->protx[k][l][(long)cysteine - (long)alanine] = 1.0; + break; + + case 'Q': + treenode[i]->protx[k][l][(long)glutamine - (long)alanine] = 1.0; + break; + + case 'E': + treenode[i]->protx[k][l][(long)glutamic - (long)alanine] = 1.0; + break; + + case 'G': + treenode[i]->protx[k][l][(long)glycine - (long)alanine] = 1.0; + break; + + case 'H': + treenode[i]->protx[k][l][(long)histidine - (long)alanine] = 1.0; + break; + + case 'I': + treenode[i]->protx[k][l][(long)isoleucine - (long)alanine] = 1.0; + break; + + case 'L': + treenode[i]->protx[k][l][(long)leucine - (long)alanine] = 1.0; + break; + + case 'K': + treenode[i]->protx[k][l][(long)lysine - (long)alanine] = 1.0; + break; + + case 'M': + treenode[i]->protx[k][l][(long)methionine - (long)alanine] = 1.0; + break; + + case 'F': + treenode[i]->protx[k][l][(long)phenylalanine - (long)alanine] = 1.0; + break; + + case 'P': + treenode[i]->protx[k][l][(long)proline - (long)alanine] = 1.0; + break; + + case 'S': + treenode[i]->protx[k][l][(long)serine - (long)alanine] = 1.0; + break; + + case 'T': + treenode[i]->protx[k][l][(long)threonine - (long)alanine] = 1.0; + break; + + case 'W': + treenode[i]->protx[k][l][(long)tryptophan - (long)alanine] = 1.0; + break; + + case 'Y': + treenode[i]->protx[k][l][(long)tyrosine - (long)alanine] = 1.0; + break; + + case 'V': + treenode[i]->protx[k][l][(long)valine - (long)alanine] = 1.0; + break; + + case 'B': + treenode[i]->protx[k][l][(long)asparagine - (long)alanine] = 1.0; + treenode[i]->protx[k][l][(long)aspartic - (long)alanine] = 1.0; + break; + + case 'Z': + treenode[i]->protx[k][l][(long)glutamine - (long)alanine] = 1.0; + treenode[i]->protx[k][l][(long)glutamic - (long)alanine] = 1.0; + break; + + case 'X': /* unknown aa */ + for (b = 0; b <= 19; b++) + treenode[i]->protx[k][l][b] = 1.0; + break; + + case '?': /* unknown aa */ + for (b = 0; b <= 19; b++) + treenode[i]->protx[k][l][b] = 1.0; + break; + + case '*': /* stop codon symbol */ + for (b = 0; b <= 19; b++) + treenode[i]->protx[k][l][b] = 1.0; + break; + + case '-': /* deletion event-absent data or aa */ + for (b = 0; b <= 19; b++) + treenode[i]->protx[k][l][b] = 1.0; + break; + } + } + } + } +} /* prot_makevalues */ + + +void getinput() +{ + long grcategs; + + /* reads the input data */ + if (!justwts || firstset) + inputoptions(); + if (!justwts || firstset) + input_protdata(sites); + makeweights(); + setuptree2(curtree); + if (!usertree) { + setuptree2(bestree); + if (njumble > 1) + setuptree2(bestree2); + } + grcategs = (categs > rcategs) ? categs : rcategs; + prot_allocx(nonodes, grcategs, curtree.nodep, usertree); + if (!usertree) { + prot_allocx(nonodes, grcategs, bestree.nodep, 0); + if (njumble > 1) + prot_allocx(nonodes, grcategs, bestree2.nodep, 0); + } + prot_makevalues(rcategs, curtree.nodep, endsite, spp, y, alias); +} /* getinput */ + +void prot_freetable(void) +{ + long i,j,k,l; + for (j = 0; j < rcategs; j++) { + for (k = 0; k < categs; k++) { + for (l = 0; l < 20; l++) + free(ddpmatrix[j][k][l]); + free(ddpmatrix[j][k]); + } + free(ddpmatrix[j]); + } + free(ddpmatrix); + + for (j = 0; j < rcategs; j++) { + for (k = 0; k < categs; k++) { + for (l = 0; l < 20; l++) + free(dpmatrix[j][k][l]); + free(dpmatrix[j][k]); + } + free(dpmatrix[j]); + } + free(dpmatrix); + + + for (j = 0; j < rcategs; j++) + free(tbl[j]); + free(tbl); + + for ( i = 0 ; i < max_num_sibs ; i++ ) + free_pmatrix(i); + free(pmatrices); +} + +void prot_inittable() +{ + /* Define a lookup table. Precompute values and print them out in tables */ + /* Allocate memory for the pmatrices, dpmatices and ddpmatrices */ + long i, j, k, l; + double sumrates; + + /* Allocate memory for pmatrices, the array of pointers to pmatrices */ + + pmatrices = (double *****) Malloc (spp * sizeof(double ****)); + + /* Allocate memory for the first 2 pmatrices, the matrix of conversion */ + /* probabilities, but only once per run (aka not on the second jumble. */ + + alloc_pmatrix(0); + alloc_pmatrix(1); + + /* Allocate memory for one dpmatrix, the first derivative matrix */ + + dpmatrix = (double ****) Malloc( rcategs * sizeof(double ***)); + for (j = 0; j < rcategs; j++) { + dpmatrix[j] = (double ***) Malloc( categs * sizeof(double **)); + for (k = 0; k < categs; k++) { + dpmatrix[j][k] = (double **) Malloc( 20 * sizeof(double *)); + for (l = 0; l < 20; l++) + dpmatrix[j][k][l] = (double *) Malloc( 20 * sizeof(double)); + } + } + + /* Allocate memory for one ddpmatrix, the second derivative matrix */ + ddpmatrix = (double ****) Malloc( rcategs * sizeof(double ***)); + for (j = 0; j < rcategs; j++) { + ddpmatrix[j] = (double ***) Malloc( categs * sizeof(double **)); + for (k = 0; k < categs; k++) { + ddpmatrix[j][k] = (double **) Malloc( 20 * sizeof(double *)); + for (l = 0; l < 20; l++) + ddpmatrix[j][k][l] = (double *) Malloc( 20 * sizeof(double)); + } + } + + /* Allocate memory and assign values to tbl, the matrix of possible rates*/ + + tbl = (double **) Malloc( rcategs * sizeof(double *)); + for (j = 0; j < rcategs; j++) + tbl[j] = (double *) Malloc( categs * sizeof(double)); + + for (j = 0; j < rcategs; j++) + for (k = 0; k < categs; k++) + tbl[j][k] = rrate[j]*rate[k]; + + sumrates = 0.0; + for (i = 0; i < endsite; i++) { + for (j = 0; j < rcategs; j++) + sumrates += aliasweight[i] * probcat[j] + * tbl[j][category[alias[i] - 1] - 1]; + } + sumrates /= (double)sites; + for (j = 0; j < rcategs; j++) + for (k = 0; k < categs; k++) { + tbl[j][k] /= sumrates; + } + + if(jumb > 1) + return; + + if (gama || invar) { + fprintf(outfile, "\nDiscrete approximation to gamma distributed rates\n"); + fprintf(outfile, + " Coefficient of variation of rates = %f (alpha = %f)\n", cv, alpha); + } + if (rcategs > 1) { + fprintf(outfile, "\nState in HMM Rate of change Probability\n\n"); + for (i = 0; i < rcategs; i++) + if (probcat[i] < 0.0001) + fprintf(outfile, "%9ld%16.3f%20.6f\n", i+1, rrate[i], probcat[i]); + else if (probcat[i] < 0.001) + fprintf(outfile, "%9ld%16.3f%19.5f\n", i+1, rrate[i], probcat[i]); + else if (probcat[i] < 0.01) + fprintf(outfile, "%9ld%16.3f%18.4f\n", i+1, rrate[i], probcat[i]); + else + fprintf(outfile, "%9ld%16.3f%17.3f\n", i+1, rrate[i], probcat[i]); + putc('\n', outfile); + if (auto_) { + fprintf(outfile, + "Expected length of a patch of sites having the same rate = %8.3f\n", + 1/lambda); + putc('\n', outfile); + } + } + if (categs > 1) { + fprintf(outfile, "\nSite category Rate of change\n\n"); + for (k = 0; k < categs; k++) + fprintf(outfile, "%9ld%16.3f\n", k+1, rate[k]); + fprintf(outfile, "\n\n"); + } +} /* prot_inittable */ + +void free_pmatrix(long sib) +{ + long j,k,l; + + for (j = 0; j < rcategs; j++) { + for (k = 0; k < categs; k++) { + for (l = 0; l < 20; l++) + free(pmatrices[sib][j][k][l]); + free(pmatrices[sib][j][k]); + } + free(pmatrices[sib][j]); + } + free(pmatrices[sib]); +} + +void alloc_pmatrix(long sib) +{ + /* Allocate memory for a new pmatrix. Called iff num_sibs>max_num_sibs */ + long j, k, l; + double ****temp_matrix; + + temp_matrix = (double ****) Malloc (rcategs * sizeof(double ***)); + for (j = 0; j < rcategs; j++) { + temp_matrix[j] = (double ***) Malloc(categs * sizeof(double **)); + for (k = 0; k < categs; k++) { + temp_matrix[j][k] = (double **) Malloc(20 * sizeof (double *)); + for (l = 0; l < 20; l++) + temp_matrix[j][k][l] = (double *) Malloc(20 * sizeof(double)); + } + } + pmatrices[sib] = temp_matrix; + max_num_sibs++; +} /* alloc_pmatrix */ + + +void make_pmatrix(double **matrix, double **dmat, double **ddmat, + long derivative, double lz, double rat, + double *eigmat, double **probmat) +{ + /* Computes the R matrix such that matrix[m][l] is the joint probability */ + /* of m and l. */ + /* Computes a P matrix such that matrix[m][l] is the conditional */ + /* probability of m given l. This is accomplished by dividing all terms */ + /* in the R matrix by freqaa[m], the frequency of l. */ + + long k, l, m; /* (l) original character state */ + /* (m) final character state */ + /* (k) lambda counter */ + double p0, p1, p2, q; + double elambdat[20], delambdat[20], ddelambdat[20]; + /* exponential term for matrix */ + /* and both derivative matrices */ + + for (k = 0; k <= 19; k++) { + elambdat[k] = exp(lz * rat * eigmat[k]); + if(derivative != 0) { + delambdat[k] = (elambdat[k] * rat * eigmat[k]); + ddelambdat[k] = (delambdat[k] * rat * eigmat[k]); + } + } + for (m = 0; m <= 19; m++) { + for (l = 0; l <= 19; l++) { + p0 = 0.0; + p1 = 0.0; + p2 = 0.0; + for (k = 0; k <= 19; k++) { + q = probmat[k][m] * probmat[k][l]; + p0 += (q * elambdat[k]); + if(derivative !=0) { + p1 += (q * delambdat[k]); + p2 += (q * ddelambdat[k]); + } + } + matrix[m][l] = p0 / freqaa[m]; + if(derivative != 0) { + dmat[m][l] = p1 / freqaa[m]; + ddmat[m][l] = p2 / freqaa[m]; + } + } + } +} /* make_pmatrix */ + + +void prot_nuview(node *p) +{ + long b, i, j, k, l, m, num_sibs, sib_index; + node *sib_ptr, *sib_back_ptr; + psitelike prot_xx, x2; + double lw, prod7; + double **pmat; + double maxx,correction; + + /* Figure out how many siblings the current node has */ + /* and be sure that pmatrices is large enough */ + num_sibs = count_sibs(p); + for (i = 0; i < num_sibs; i++) + if (pmatrices[i] == NULL) + alloc_pmatrix(i); + + /* Recursive calls, should be called for all children */ + sib_ptr = p; + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + + if (!(sib_back_ptr == NULL)) + if (!sib_back_ptr->tip && !sib_back_ptr->initialized) + prot_nuview(sib_back_ptr); + } + + /* Make pmatrices for all possible combinations of category, rcateg */ + /* and sib */ + sib_ptr = p; /* return to p */ + for (sib_index=0; sib_index < num_sibs; sib_index++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + + if (sib_back_ptr != NULL) + lw = fabs(p->tyme - sib_back_ptr->tyme); + else + lw = 0.0; + + for (j = 0; j < rcategs; j++) + for (k = 0; k < categs; k++) + make_pmatrix(pmatrices[sib_index][j][k], NULL, NULL, 0, lw, + tbl[j][k], eigmat, probmat); + } + + for (i = 0; i < endsite; i++) { + correction = 0; + maxx = 0; + k = category[alias[i]-1] - 1; + for (j = 0; j < rcategs; j++) { + + /* initialize to 1 all values of prot_xx */ + for (m = 0; m <= 19; m++) + prot_xx[m] = 1; + + sib_ptr = p; /* return to p */ + /* loop through all sibs and calculate likelihoods for all possible*/ + /* amino acid combinations */ + for (sib_index=0; sib_index < num_sibs; sib_index++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + + + if (sib_back_ptr != NULL) { + memcpy(x2, sib_back_ptr->protx[i][j], sizeof(psitelike)); + if ( j == 0 ) + correction += sib_back_ptr->underflows[i]; + } + + else + for (b = 0; b <= 19; b++) + x2[b] = 1.0; + pmat = pmatrices[sib_index][j][k]; + for (m = 0; m <= 19; m++) { + prod7 = 0; + for (l = 0; l <= 19; l++) + prod7 += (pmat[m][l] * x2[l]); + prot_xx[m] *= prod7; + if ( prot_xx[m] > maxx && sib_index == (num_sibs - 1 )) + maxx = prot_xx[m]; + } + } + /* And the final point of this whole function: */ + memcpy(p->protx[i][j], prot_xx, sizeof(psitelike)); + } + p->underflows[i] = 0; + if ( maxx < MIN_DOUBLE ) + fix_protx(p,i,maxx,rcategs); + p->underflows[i] += correction; + } + + p->initialized = true; +} /* prot_nuview */ + + +void getthree(node *p, double thigh, double tlow) +{ + /* compute likelihood at a new triple of points */ + int i; + double tt = p->tyme; + double td = fabs(tdelta); + + x[0] = tt - td; + x[1] = tt; + x[2] = tt + td; + + if ( x[0] < tlow + epsilon ) { + x[0] = tlow + epsilon; + x[1] = ( x[0] + x[2] ) / 2; + } + + if ( x[2] > thigh - epsilon ) { + x[2] = thigh - epsilon; + x[1] = ( x[0] + x[2] ) / 2; + } + + for ( i = 0 ; i < 3 ; i++ ) { + p->tyme = x[i]; + prot_nuview(p); + lnl[i] = prot_evaluate(p); + } +} /* getthree */ + +void makenewv(node *p) +{ + /* improve a node time */ + long it, imin, imax, i, num_sibs; + double tt, tfactor, tlow, thigh, oldlike, ymin, ymax, s32, s21, yold; + boolean done, already; + node *s, *sdown, *sib_ptr, *sib_back_ptr; + + s = curtree.nodep[p->index - 1]; + sdown = s->back; + if (s == curtree.root) + tlow = -10.0; + else + tlow = sdown->tyme; + + sib_ptr = s; + num_sibs = count_sibs(p); + + thigh = s->next->back->tyme; + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + if (sib_back_ptr->tyme < thigh) + thigh = sib_back_ptr->tyme; + } + done = (thigh - tlow < 4.0*epsilon); + it = 1; + if (s != curtree.root) + tdelta = (thigh - tlow) / 10.0; + else + tdelta = (thigh - s->tyme) / 5.0; + tfactor = 1.0; + if (!done) + getthree(s, thigh, tlow); + while (it < iterations && !done) { + ymax = lnl[0]; + imax = 1; + for (i = 2; i <= 3; i++) { + if (lnl[i - 1] > ymax) { + ymax = lnl[i - 1]; + imax = i; + } + } + if (imax != 2) { + ymax = x[1]; + x[1] = x[imax - 1]; + x[imax - 1] = ymax; + ymax = lnl[1]; + lnl[1] = lnl[imax - 1]; + lnl[imax - 1] = ymax; + } + tt = x[1]; + oldlike = lnl[1]; + yold = tt; + s32 = (lnl[2] - lnl[1]) / (x[2] - x[1]); + s21 = (lnl[1] - lnl[0]) / (x[1] - x[0]); + if (fabs(x[2] - x[0]) > epsilon) + curv = (s32 - s21) / ((x[2] - x[0]) / 2); + else + curv = 0.0; + slope = (s32 + s21) / 2 - curv * (x[2] - 2 * x[1] + x[0]) / 4; + if (curv >= 0.0) { + if (slope < 0) + tdelta = -fabs(tdelta); + else + tdelta = fabs(tdelta); + } else + tdelta = -(tfactor * slope / curv); + if (tt + tdelta <= tlow + epsilon) + tdelta = tlow + epsilon - tt; + if (tt + tdelta >= thigh - epsilon) + tdelta = thigh - epsilon - tt; + tt += tdelta; + done = (fabs(yold - tt) < epsilon || fabs(tdelta) < epsilon); + s->tyme = tt; + prot_nuview(s); + lnlike = prot_evaluate(s); + ymin = lnl[0]; + imin = 1; + for (i = 2; i <= 3; i++) { + if (lnl[i - 1] < ymin) { + ymin = lnl[i - 1]; + imin = i; + } + } + already = (tt == x[0]) || (tt == x[1]) || (tt == x[2]); + if (!already && ymin < lnlike) { + x[imin - 1] = tt; + lnl[imin - 1] = lnlike; + } + if (already || lnlike < oldlike) { + tt = x[1]; + tfactor /= 2; + tdelta /= 2; + curtree.likelihood = oldlike; + lnlike = oldlike; + } else + tfactor = 1.0; + + if (!done) { + sib_ptr = p; + num_sibs = count_sibs(p); + p->tyme = tt; + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_ptr->tyme = tt; + } + + sib_ptr = p; + prot_nuview(p); + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + prot_nuview(sib_ptr); + } + } + + it++; + } + sib_ptr = p; + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + inittrav (sib_ptr); + } + smoothed = smoothed && done; +} /* makenewv */ + + +void update(node *p) +{ + node *sib_ptr, *sib_back_ptr; + long i, num_sibs; + + /* improve time and recompute views at a node */ + if (p == NULL) + return; + if (p->back != NULL) { + if (!p->back->tip && !p->back->initialized) + prot_nuview(p->back); + } + + sib_ptr = p; + num_sibs = count_sibs(p); + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + if (sib_back_ptr != NULL) { + if (!sib_back_ptr->tip && !sib_back_ptr->initialized) + prot_nuview(sib_back_ptr); + } + } + + if ((!usertree) || (usertree && !lngths) || p->iter) { + makenewv(p); + return; + } + prot_nuview(p); + + sib_ptr = p; + num_sibs = count_sibs(p); + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + prot_nuview(sib_ptr); + } +} /* update */ + + +void smooth(node *p) +{ + node *sib_ptr; + long i, num_sibs; + + if (p == NULL) + return; + if (p->tip) + return; + + update(p); + + smoothed = false; + sib_ptr = p; + num_sibs = count_sibs(p); + for (i=0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + if (polishing || (smoothit && !smoothed)) { + smooth(sib_ptr->back); + p->initialized = false; + sib_ptr->initialized = false; + } + update(p); + } +} /* smooth */ + + +void promlk_add(node *below, node *newtip, node *newfork, boolean tempadd) +{ + /* inserts the nodes newfork and its descendant, newtip, into the tree. */ + long i; + boolean done; + node *p; + + below = curtree.nodep[below->index - 1]; + newfork = curtree.nodep[newfork->index-1]; + newtip = curtree.nodep[newtip->index-1]; + if (below->back != NULL) + below->back->back = newfork; + newfork->back = below->back; + below->back = newfork->next->next; + newfork->next->next->back = below; + newfork->next->back = newtip; + newtip->back = newfork->next; + if (newtip->tyme < below->tyme) + p = newtip; + else p = below; + newfork->tyme = p->tyme; + if (curtree.root == below) + curtree.root = newfork; + if (newfork->back != NULL) { + if (p->tyme > newfork->back->tyme) + newfork->tyme = (p->tyme + newfork->back->tyme) / 2.0; + else newfork->tyme = p->tyme - epsilon; + newfork->next->tyme = newfork->tyme; + newfork->next->next->tyme = newfork->tyme; + do { + p = curtree.nodep[p->back->index - 1]; + done = (p == curtree.root); + if (!done) + done = (curtree.nodep[p->back->index - 1]->tyme < p->tyme - epsilon); + if (!done) { + curtree.nodep[p->back->index - 1]->tyme = p->tyme - epsilon; + curtree.nodep[p->back->index - 1]->next->tyme = p->tyme - epsilon; + curtree.nodep[p->back->index - 1]->next->next->tyme = p->tyme - epsilon; + } + } while (!done); + } else { + newfork->tyme = newfork->tyme - 2*epsilon; + newfork->next->tyme = newfork->tyme; + newfork->next->next->tyme = newfork->tyme; + } + inittrav(newtip); + inittrav(newtip->back); + smoothed = false; + i = 1; + while (i < smoothings && !smoothed) { + smoothed = true; + smooth(newfork); + smooth(newfork->back); + i++; + } +} /* promlk_add */ + + +void promlk_re_move(node **item, node **fork, boolean tempadd) +{ + /* removes nodes item and its ancestor, fork, from the tree. + the new descendant of fork's ancestor is made to be + fork's second descendant (other than item). Also + returns pointers to the deleted nodes, item and fork */ + node *p, *q; + long i; + + if ((*item)->back == NULL) { + *fork = NULL; + return; + } + *item = curtree.nodep[(*item)->index-1]; + *fork = curtree.nodep[(*item)->back->index - 1]; + if (curtree.root == *fork) { + if (*item == (*fork)->next->back) + curtree.root = (*fork)->next->next->back; + else + curtree.root = (*fork)->next->back; + } + p = (*item)->back->next->back; + q = (*item)->back->next->next->back; + if (p != NULL) + p->back = q; + if (q != NULL) + q->back = p; + (*fork)->back = NULL; + p = (*fork)->next; + while (p != *fork) { + p->back = NULL; + p = p->next; + } + (*item)->back = NULL; + inittrav(p); + inittrav(q); + if (tempadd) + return; + i = 1; + while (i <= smoothings) { + smooth(q); + if (smoothit) + smooth(q->back); + i++; + } +} /* promlk_re_move */ + + +double prot_evaluate(node *p) +{ + contribarr tterm; + static contribarr like, nulike, clai; + double sum, sum2, sumc=0, y, prod4, prodl, frexm, sumterm, lterm; + double **pmat; + long i, j, k, l, m, lai; + node *q, *r; + psitelike x1, x2; + + sum = 0.0; + + if (p == curtree.root && (count_sibs(p) == 2)) { + r = p->next->back; + q = p->next->next->back; + y = r->tyme + q->tyme - 2 * p->tyme; + if (!r->tip && !r->initialized) prot_nuview (r); + if (!q->tip && !q->initialized) prot_nuview (q); + } else if (p == curtree.root) { + /* the next two lines copy tyme and x to p->next. Normally they are + not initialized for an internal node. */ + /* assumes bifurcation */ + p->next->tyme = p->tyme; + prot_nuview(p->next); + r = p->next; + q = p->next->back; + y = fabs(p->next->tyme - q->tyme); + } else { + r = p; + q = p->back; + if (!r->tip && !r->initialized) prot_nuview (r); + if (!q->tip && !q->initialized) prot_nuview (q); + y = fabs(r->tyme - q->tyme); + } + + for (j = 0; j < rcategs; j++) + for (k = 0; k < categs; k++) + make_pmatrix(pmatrices[0][j][k],NULL,NULL,0,y,tbl[j][k],eigmat,probmat); + for (i = 0; i < endsite; i++) { + k = category[alias[i]-1] - 1; + for (j = 0; j < rcategs; j++) { + memcpy(x1, r->protx[i][j], sizeof(psitelike)); + memcpy(x2, q->protx[i][j], sizeof(psitelike)); + prod4 = 0.0; + pmat = pmatrices[0][j][k]; + for (m = 0; m <= 19; m++) { + prodl = 0.0; + for (l = 0; l <= 19; l++) + prodl += (pmat[m][l] * x2[l]); + frexm = x1[m] * freqaa[m]; + prod4 += (prodl * frexm); + } + tterm[j] = prod4; + } + sumterm = 0.0; + for (j = 0; j < rcategs; j++) + sumterm += probcat[j] * tterm[j]; + if (sumterm < 0.0) + sumterm = 0.00000001; /* ??? */ + lterm = log(sumterm) + p->underflows[i] + q->underflows[i]; + for (j = 0; j < rcategs; j++) + clai[j] = tterm[j] / sumterm; + memcpy(contribution[i], clai, rcategs * sizeof(double)); + if (!auto_ && usertree && (which <= shimotrees)) + l0gf[which - 1][i] = lterm; + sum += aliasweight[i] * lterm; + } + if (auto_) { + for (j = 0; j < rcategs; j++) + like[j] = 1.0; + for (i = 0; i < sites; i++) { + sumc = 0.0; + for (k = 0; k < rcategs; k++) + sumc += probcat[k] * like[k]; + sumc *= lambda; + if ((ally[i] > 0) && (location[ally[i]-1] > 0)) { + lai = location[ally[i] - 1]; + memcpy(clai, contribution[lai - 1], rcategs*sizeof(double)); + for (j = 0; j < rcategs; j++) + nulike[j] = ((1.0 - lambda) * like[j] + sumc) * clai[j]; + } else { + for (j = 0; j < rcategs; j++) + nulike[j] = ((1.0 - lambda) * like[j] + sumc); + } + memcpy(like, nulike, rcategs * sizeof(double)); + } + sum2 = 0.0; + for (i = 0; i < rcategs; i++) + sum2 += probcat[i] * like[i]; + sum += log(sum2); + } + curtree.likelihood = sum; + if (auto_ || !usertree) + return sum; + if(which <= shimotrees) + l0gl[which - 1] = sum; + if (which == 1) { + maxwhich = 1; + maxlogl = sum; + return sum; + } + if (sum > maxlogl) { + maxwhich = which; + maxlogl = sum; + } + return sum; +} /* prot_evaluate */ + + +void tryadd(node *p, node **item, node **nufork) +{ /* temporarily adds one fork and one tip to the tree. + if the location where they are added yields greater + likelihood than other locations tested up to that + time, then keeps that location as there */ + + long grcategs; + grcategs = (categs > rcategs) ? categs : rcategs; + + promlk_add(p, *item, *nufork, true); + like = prot_evaluate(p); + if (lastsp) { + if (like >= bestyet || bestyet == UNDEFINED) + prot_copy_(&curtree, &bestree, nonodes, grcategs); + } + if (like > bestyet || bestyet == UNDEFINED) { + bestyet = like; + there = p; + } + promlk_re_move(item, nufork, true); +} /* tryadd */ + + +void addpreorder(node *p, node *item_, node *nufork_, boolean contin, + boolean continagain) +{ + /* traverses a binary tree, calling function tryadd + at a node before calling tryadd at its descendants */ + node *item, *nufork; + + item = item_; + nufork = nufork_; + if (p == NULL) + return; + tryadd(p, &item, &nufork); + contin = continagain; + if ((!p->tip) && contin) { + addpreorder(p->next->back, item, nufork, contin, continagain); + addpreorder(p->next->next->back, item, nufork, contin, continagain); + } +} /* addpreorder */ + + +void restoradd(node *below, node *newtip, node *newfork, double prevtyme) +{ +/* restore "new" tip and fork to place "below". restore tymes */ +/* assumes bifurcation */ + hookup(newfork, below->back); + hookup(newfork->next, below); + hookup(newtip, newfork->next->next); + curtree.nodep[newfork->index-1] = newfork; + newfork->tyme = prevtyme; +/* assumes bifurcations */ + newfork->next->tyme = prevtyme; + newfork->next->next->tyme = prevtyme; +} /* restoradd */ + + +void tryrearr(node *p, boolean *success) +{ + /* evaluates one rearrangement of the tree. + if the new tree has greater likelihood than the old + one sets success = TRUE and keeps the new tree. + otherwise, restores the old tree */ + node *frombelow, *whereto, *forknode; + double oldlike, prevtyme; + boolean wasonleft; + + if (p == curtree.root) + return; + forknode = curtree.nodep[p->back->index - 1]; + if (forknode == curtree.root) + return; + oldlike = bestyet; + prevtyme = forknode->tyme; +/* the following statement presumes bifurcating tree */ + if (forknode->next->back == p) { + frombelow = forknode->next->next->back; + wasonleft = true; + } + else { + frombelow = forknode->next->back; + wasonleft = false; + } + whereto = curtree.nodep[forknode->back->index - 1]; + promlk_re_move(&p, &forknode, true); + promlk_add(whereto, p, forknode, true); + like = prot_evaluate(p); + if (like <= oldlike && oldlike != UNDEFINED) { + promlk_re_move(&p, &forknode, true); + restoradd(frombelow, p, forknode, prevtyme); + if (wasonleft && (forknode->next->next->back == p)) { + hookup (forknode->next->back, forknode->next->next); + hookup (forknode->next, p); + } + curtree.likelihood = oldlike; + inittrav(forknode); + inittrav(forknode->next); + inittrav(forknode->next->next); + } else { + (*success) = true; + bestyet = like; + } +} /* tryrearr */ + + +void repreorder(node *p, boolean *success) +{ + /* traverses a binary tree, calling function tryrearr + at a node before calling tryrearr at its descendants */ + if (p == NULL) + return; + tryrearr(p, success); + if (p->tip) + return; + if (!(*success)) + repreorder(p->next->back, success); + if (!(*success)) + repreorder(p->next->next->back, success); +} /* repreorder */ + + +void rearrange(node **r) +{ + /* traverses the tree (preorder), finding any local + rearrangement which increases the likelihood. + if traversal succeeds in increasing the tree's + likelihood, function rearrange runs traversal again */ + boolean success; + success = true; + while (success) { + success = false; + repreorder(*r, &success); + } +} /* rearrange */ + + +void nodeinit(node *p) +{ + /* set up times at one node */ + node *sib_ptr, *sib_back_ptr; + long i, num_sibs; + double lowertyme; + + sib_ptr = p; + num_sibs = count_sibs(p); + + /* lowertyme = lowest of children's times */ + lowertyme = p->next->back->tyme; + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + if (sib_back_ptr->tyme < lowertyme) + lowertyme = sib_back_ptr->tyme; + } + + p->tyme = lowertyme - 0.1; + + sib_ptr = p; + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + + sib_ptr->tyme = p->tyme; + sib_back_ptr->v = sib_back_ptr->tyme - p->tyme; + sib_ptr->v = sib_back_ptr->v; + } +} /* nodeinit */ + + +void initrav(node *p) +{ + + long i, num_sibs; + node *sib_ptr, *sib_back_ptr; + + /* traverse to set up times throughout tree */ + if (p->tip) + return; + + sib_ptr = p; + num_sibs = count_sibs(p); + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + initrav(sib_back_ptr); + } + + nodeinit(p); +} /* initrav */ + + +void travinit(node *p) +{ + long i, num_sibs; + node *sib_ptr, *sib_back_ptr; + + /* traverse to set up initial values */ + if (p == NULL) + return; + if (p->tip) + return; + if (p->initialized) + return; + + + sib_ptr = p; + num_sibs = count_sibs(p); + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + travinit(sib_back_ptr); + } + + prot_nuview(p); + p->initialized = true; +} /* travinit */ + + +void travsp(node *p) +{ + long i, num_sibs; + node *sib_ptr, *sib_back_ptr; + + /* traverse to find tips */ + if (p == curtree.root) + travinit(p); + if (p->tip) + travinit(p->back); + else { + sib_ptr = p; + num_sibs = count_sibs(p); + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + travsp(sib_back_ptr); + } + } +} /* travsp */ + + +void treevaluate() +{ + /* evaluate likelihood of tree, after iterating branch lengths */ + long i, j, num_sibs; + node *sib_ptr; + + polishing = true; + smoothit = true; + for (i = 0; i < spp; i++) + curtree.nodep[i]->initialized = false; + for (i = spp; i < nonodes; i++) { + sib_ptr = curtree.nodep[i]; + sib_ptr->initialized = false; + num_sibs = count_sibs(sib_ptr); + for (j=0 ; j < num_sibs; j++) { + sib_ptr = sib_ptr->next; + sib_ptr->initialized = false; + } + + } + if (!lngths) + initrav(curtree.root); + travsp(curtree.root); + for (i = 1; i <= smoothings * 4; i++) + smooth(curtree.root); + prot_evaluate(curtree.root); +} /* treevaluate */ + + +void promlk_coordinates(node *p, long *tipy) +{ + /* establishes coordinates of nodes */ + node *q, *first, *last, *pp1 =NULL, *pp2 =NULL; + long num_sibs, p1, p2, i; + + if (p->tip) { + p->xcoord = 0; + p->ycoord = (*tipy); + p->ymin = (*tipy); + p->ymax = (*tipy); + (*tipy) += down; + return; + } + q = p->next; + do { + promlk_coordinates(q->back, tipy); + q = q->next; + } while (p != q); + num_sibs = count_sibs(p); + p1 = (long)((num_sibs+1)/2.0); + p2 = (long)((num_sibs+2)/2.0); + i = 1; + q = p->next; + first = q->back; + do { + if (i == p1) pp1 = q->back; + if (i == p2) pp2 = q->back; + last = q->back; + q = q->next; + i++; + } while (q != p); + p->xcoord = (long)(0.5 - over * p->tyme); + p->ycoord = (pp1->ycoord + pp2->ycoord) / 2; + p->ymin = first->ymin; + p->ymax = last->ymax; +} /* promlk_coordinates */ + + +void promlk_drawline(long i, double scale) +{ + /* draws one row of the tree diagram by moving up tree */ + node *p, *q, *r, *first =NULL, *last =NULL; + long n, j; + boolean extra, done; + + p = curtree.root; + q = curtree.root; + extra = false; + if ((long)(p->ycoord) == i) { + if (p->index - spp >= 10) + fprintf(outfile, "-%2ld", p->index - spp); + else + fprintf(outfile, "--%ld", p->index - spp); + extra = true; + } else + fprintf(outfile, " "); + do { + if (!p->tip) { + r = p->next; + done = false; + do { + if (i >= r->back->ymin && i <= r->back->ymax) { + q = r->back; + done = true; + } + r = r->next; + } while (!(done || r == p)); + first = p->next->back; + r = p->next; + while (r->next != p) + r = r->next; + last = r->back; + } + done = (p == q); + n = (long)(scale * ((long)(p->xcoord) - (long)(q->xcoord)) + 0.5); + if (n < 3 && !q->tip) + n = 3; + if (extra) { + n--; + extra = false; + } + if ((long)(q->ycoord) == i && !done) { + if (p->ycoord != q->ycoord) + putc('+', outfile); + else + putc('-', outfile); + if (!q->tip) { + for (j = 1; j <= n - 2; j++) + putc('-', outfile); + if (q->index - spp >= 10) + fprintf(outfile, "%2ld", q->index - spp); + else + fprintf(outfile, "-%ld", q->index - spp); + extra = true; + } else { + for (j = 1; j < n; j++) + putc('-', outfile); + } + } else if (!p->tip) { + if ((long)(last->ycoord) > i && (long)(first->ycoord) < i && + i != (long)(p->ycoord)) { + putc('!', outfile); + for (j = 1; j < n; j++) + putc(' ', outfile); + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + } + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + } + if (p != q) + p = q; + } while (!done); + if ((long)(p->ycoord) == i && p->tip) { + for (j = 0; j < nmlngth; j++) + putc(nayme[p->index - 1][j], outfile); + } + putc('\n', outfile); +} /* promlk_drawline */ + + +void promlk_printree() +{ + /* prints out diagram of the tree */ + long tipy; + double scale; + long i; + node *p; + + if (!treeprint) + return; + putc('\n', outfile); + tipy = 1; + promlk_coordinates(curtree.root, &tipy); + p = curtree.root; + while (!p->tip) + p = p->next->back; + scale = 1.0 / (long)(p->tyme - curtree.root->tyme + 1.000); + putc('\n', outfile); + for (i = 1; i <= tipy - down; i++) + promlk_drawline(i, scale); + putc('\n', outfile); +} /* promlk_printree */ + + +void describe(node *p) +{ + long i, num_sibs; + node *sib_ptr, *sib_back_ptr; + double v; + + if (p == curtree.root) + fprintf(outfile, " root "); + else + fprintf(outfile, "%4ld ", p->back->index - spp); + if (p->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[p->index - 1][i], outfile); + } else + fprintf(outfile, "%4ld ", p->index - spp); + if (p != curtree.root) { + fprintf(outfile, "%11.5f", (p->tyme - curtree.root->tyme)); + v = (p->tyme - curtree.nodep[p->back->index - 1]->tyme); + fprintf(outfile, "%13.5f", v); + } + putc('\n', outfile); + if (!p->tip) { + + sib_ptr = p; + num_sibs = count_sibs(p); + for (i=0 ; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + sib_back_ptr = sib_ptr->back; + describe(sib_back_ptr); + } + } +} /* describe */ + + +void prot_reconstr(node *p, long n) +{ + /* reconstruct and print out acid at site n+1 at node p */ + long i, j, k, first, num_sibs = 0; + double f, sum, xx[20]; + node *q = NULL; + + if (p->tip) + putc(y[p->index-1][n], outfile); + else { + num_sibs = count_sibs(p); + if ((ally[n] == 0) || (location[ally[n]-1] == 0)) + putc('.', outfile); + else { + j = location[ally[n]-1] - 1; + sum = 0; + for (i = 0; i <= 19; i++) { + f = p->protx[j][mx-1][i]; + if (!p->tip) { + q = p; + for (k = 0; k < num_sibs; k++) { + q = q->next; + f *= q->protx[j][mx-1][i]; + } + } + f = sqrt(f); + xx[i] = f * freqaa[i]; + sum += xx[i]; + } + for (i = 0; i <= 19; i++) + xx[i] /= sum; + first = 0; + for (i = 0; i <= 19; i++) + if (xx[i] > xx[first]) + first = i; + if (xx[first] > 0.95) + putc(aachar[first], outfile); + else + putc(tolower(aachar[first]), outfile); + if (rctgry && rcategs > 1) + mx = mp[n][mx - 1]; + else + mx = 1; + } + } +} /* prot_reconstr */ + + +void rectrav(node *p, long m, long n) +{ + /* print out segment of reconstructed sequence for one branch */ + long num_sibs, i; + node *sib_ptr; + + putc(' ', outfile); + if (p->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[p->index-1][i], outfile); + } else + fprintf(outfile, "%4ld ", p->index - spp); + fprintf(outfile, " "); + mx = mx0; + for (i = m; i <= n; i++) { + if ((i % 10 == 0) && (i != m)) + putc(' ', outfile); + prot_reconstr(p, i); + } + putc('\n', outfile); + if (!p->tip) { + num_sibs = count_sibs(p); + sib_ptr = p; + for (i = 0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + rectrav(sib_ptr->back, m, n); + } + } + mx1 = mx; +} /* rectrav */ + + +void summarize() +{ + long i, j, mm; + double mode, sum; + double like[maxcategs], nulike[maxcategs]; + double **marginal; + + mp = (long **)Malloc(sites * sizeof(long *)); + for (i = 0; i <= sites-1; ++i) + mp[i] = (long *)Malloc(sizeof(long)*rcategs); + fprintf(outfile, "\nLn Likelihood = %11.5f\n\n", curtree.likelihood); + fprintf(outfile, " Ancestor Node Node Height Length\n"); + fprintf(outfile, " -------- ---- ---- ------ ------\n"); + describe(curtree.root); + putc('\n', outfile); + if (rctgry && rcategs > 1) { + for (i = 0; i < rcategs; i++) + like[i] = 1.0; + for (i = sites - 1; i >= 0; i--) { + sum = 0.0; + for (j = 0; j < rcategs; j++) { + nulike[j] = (lambda1 + lambda * probcat[j]) * like[j]; + mp[i][j] = j + 1; + for (k = 1; k <= rcategs; k++) { + if (k != j + 1) { + if (lambda * probcat[k - 1] * like[k - 1] > nulike[j]) { + nulike[j] = lambda * probcat[k - 1] * like[k - 1]; + mp[i][j] = k; + } + } + } + if ((ally[i] > 0) && (location[ally[i]-1] > 0)) + nulike[j] *= contribution[location[ally[i] - 1] - 1][j]; + sum += nulike[j]; + } + for (j = 0; j < rcategs; j++) + nulike[j] /= sum; + memcpy(like, nulike, rcategs * sizeof(double)); + } + mode = 0.0; + mx = 1; + for (i = 1; i <= rcategs; i++) { + if (probcat[i - 1] * like[i - 1] > mode) { + mx = i; + mode = probcat[i - 1] * like[i - 1]; + } + } + mx0 = mx; + fprintf(outfile, + "Combination of categories that contributes the most to the likelihood:\n\n"); + for (i = 1; i <= nmlngth + 3; i++) + putc(' ', outfile); + for (i = 1; i <= sites; i++) { + fprintf(outfile, "%ld", mx); + if (i % 10 == 0) + putc(' ', outfile); + if (i % 60 == 0 && i != sites) { + putc('\n', outfile); + for (j = 1; j <= nmlngth + 3; j++) + putc(' ', outfile); + } + mx = mp[i - 1][mx - 1]; + } + fprintf(outfile, "\n\n"); + marginal = (double **) Malloc( sites*sizeof(double *)); + for (i = 0; i < sites; i++) + marginal[i] = (double *) Malloc( rcategs*sizeof(double)); + for (i = 0; i < rcategs; i++) + like[i] = 1.0; + for (i = sites - 1; i >= 0; i--) { + sum = 0.0; + for (j = 0; j < rcategs; j++) { + nulike[j] = (lambda1 + lambda * probcat[j]) * like[j]; + for (k = 1; k <= rcategs; k++) { + if (k != j + 1) + nulike[j] += lambda * probcat[k - 1] * like[k - 1]; + } + if ((ally[i] > 0) && (location[ally[i]-1] > 0)) + nulike[j] *= contribution[location[ally[i] - 1] - 1][j]; + sum += nulike[j]; + } + for (j = 0; j < rcategs; j++) { + nulike[j] /= sum; + marginal[i][j] = nulike[j]; + } + memcpy(like, nulike, rcategs * sizeof(double)); + } + for (i = 0; i < rcategs; i++) + like[i] = 1.0; + for (i = 0; i < sites; i++) { + sum = 0.0; + for (j = 0; j < rcategs; j++) { + nulike[j] = (lambda1 + lambda * probcat[j]) * like[j]; + for (k = 1; k <= rcategs; k++) { + if (k != j + 1) + nulike[j] += lambda * probcat[k - 1] * like[k - 1]; + } + marginal[i][j] *= like[j] * probcat[j]; + sum += nulike[j]; + } + for (j = 0; j < rcategs; j++) + nulike[j] /= sum; + memcpy(like, nulike, rcategs * sizeof(double)); + sum = 0.0; + for (j = 0; j < rcategs; j++) + sum += marginal[i][j]; + for (j = 0; j < rcategs; j++) + marginal[i][j] /= sum; + } + fprintf(outfile, "Most probable category at each site if > 0.95"); + fprintf(outfile, " probability (\".\" otherwise)\n\n"); + for (i = 1; i <= nmlngth + 3; i++) + putc(' ', outfile); + for (i = 0; i < sites; i++) { + sum = 0.0; + for (j = 0; j < rcategs; j++) + if (marginal[i][j] > sum) { + sum = marginal[i][j]; + mm = j; + } + if (sum >= 0.95) + fprintf(outfile, "%ld", mm+1); + else + putc('.', outfile); + if ((i+1) % 60 == 0) { + if (i != 0) { + putc('\n', outfile); + for (j = 1; j <= nmlngth + 3; j++) + putc(' ', outfile); + } + } + else if ((i+1) % 10 == 0) + putc(' ', outfile); + } + putc('\n', outfile); + for (i = 0; i < sites; i++) + free(marginal[i]); + free(marginal); + } + putc('\n', outfile); + putc('\n', outfile); + putc('\n', outfile); + if (hypstate) { + fprintf(outfile, "Probable sequences at interior nodes:\n\n"); + fprintf(outfile, " node "); + for (i = 0; (i < 13) && (i < ((sites + (sites-1)/10 - 39) / 2)); i++) + putc(' ', outfile); + fprintf(outfile, "Reconstructed sequence (caps if > 0.95)\n\n"); + if (!rctgry || (rcategs == 1)) + mx0 = 1; + for (i = 0; i < sites; i += 60) { + k = i + 59; + if (k >= sites) + k = sites - 1; + rectrav(curtree.root, i, k); + putc('\n', outfile); + mx0 = mx1; + } + } + for (i = 0; i <= sites-1; ++i) + free(mp[i]); + free(mp); +} /* summarize */ + + +void promlk_treeout(node *p) +{ + /* write out file with representation of final tree */ + node *sib_ptr; + long i, n, w, num_sibs; + Char c; + double x; + + if (p->tip) { + n = 0; + for (i = 1; i <= nmlngth; i++) { + if (nayme[p->index - 1][i - 1] != ' ') + n = i; + } + for (i = 0; i < n; i++) { + c = nayme[p->index - 1][i]; + if (c == ' ') + c = '_'; + putc(c, outtree); + } + col += n; + } else { + sib_ptr = p; + num_sibs = count_sibs(p); + putc('(', outtree); + col++; + + for (i=0; i < (num_sibs - 1); i++) { + sib_ptr = sib_ptr->next; + promlk_treeout(sib_ptr->back); + putc(',', outtree); + col++; + if (col > 55) { + putc('\n', outtree); + col = 0; + } + } + sib_ptr = sib_ptr->next; + promlk_treeout(sib_ptr->back); + putc(')', outtree); + col++; + } + if (p == curtree.root) { + fprintf(outtree, ";\n"); + return; + } + x = (p->tyme - curtree.nodep[p->back->index - 1]->tyme); + if (x > 0.0) + w = (long)(0.4342944822 * log(x)); + else if (x == 0.0) + w = 0; + else + w = (long)(0.4342944822 * log(-x)) + 1; + if (w < 0) + w = 0; + fprintf(outtree, ":%*.5f", (int)(w + 7), x); + col += w + 8; +} /* promlk_treeout */ + + +void initpromlnode(node **p, node **grbg, node *q, long len, long nodei, + long *ntips, long *parens, initops whichinit, + pointarray treenode, pointarray nodep, Char *str, + Char *ch, FILE *intree) +{ + /* initializes a node */ + boolean minusread; + double valyew, divisor; + + switch (whichinit) { + case bottom: + gnu(grbg, p); + (*p)->index = nodei; + (*p)->tip = false; + malloc_ppheno((*p), endsite, rcategs); + nodep[(*p)->index - 1] = (*p); + break; + case nonbottom: + gnu(grbg, p); + malloc_ppheno(*p, endsite, rcategs); + (*p)->index = nodei; + break; + case tip: + match_names_to_data(str, nodep, p, spp); + break; + case iter: + (*p)->initialized = false; + (*p)->v = initialv; + (*p)->iter = true; + if ((*p)->back != NULL) + (*p)->back->iter = true; + break; + case length: + processlength(&valyew, &divisor, ch, &minusread, intree, parens); + (*p)->v = valyew / divisor; + (*p)->iter = false; + if ((*p)->back != NULL) { + (*p)->back->v = (*p)->v; + (*p)->back->iter = false; + } + break; + case unittrwt: + curtree.nodep[spp]->iter = false; + break; + default: /* cases hslength, hsnolength, treewt */ + break; /* should never occur */ + } +} /* initpromlnode */ + + +void tymetrav(node *p, double *x) +{ + /* set up times of nodes */ + node *sib_ptr, *q; + long i, num_sibs; + double xmax; + + xmax = 0.0; + if (!p->tip) { + sib_ptr = p; + num_sibs = count_sibs(p); + for (i=0; i < num_sibs; i++) { + sib_ptr = sib_ptr->next; + tymetrav(sib_ptr->back, x); + if (xmax > (*x)) + xmax = (*x); + } + } else + (*x) = 0.0; + p->tyme = xmax; + if (!p->tip) { + q = p; + while (q->next != p) { + q = q->next; + q->tyme = p->tyme; + } + } + (*x) = p->tyme - p->v; +} /* tymetrav */ + + +void free_all_protx (long nonodes, pointarray treenode) +{ + /* used in proml */ + long i, j, k; + node *p; + + /* Zero thru spp are tips, */ + for (i = 0; i < spp; i++) { + for (j = 0; j < endsite; j++) + free(treenode[i]->protx[j]); + free(treenode[i]->protx); + } + + /* The rest are rings (i.e. triads) */ + for (i = spp; i < nonodes; i++) { + if (treenode[i] != NULL) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + for (k = 0; k < endsite; k++) + free(p->protx[k]); + free(p->protx); + p = p->next; + } + } + } +} /* free_all_protx */ + + +void maketree() +{ + /* constructs a binary tree from the pointers in curtree.nodep, + adds each node at location which yields highest likelihood + then rearranges the tree for greatest likelihood */ + + long i, j; + long numtrees = 0; + double bestlike, gotlike, x; + node *item, *nufork, *dummy, *q, *root=NULL; + boolean dummy_haslengths, dummy_first, goteof; + long nextnode; + long grcategs; + pointarray dummy_treenode=NULL; + + grcategs = (categs > rcategs) ? categs : rcategs; + + prot_inittable(); + + if (!usertree) { + for (i = 1; i <= spp; i++) + enterorder[i - 1] = i; + if (jumble) + randumize(seed, enterorder); + curtree.root = curtree.nodep[spp]; + curtree.root->back = NULL; + for (i = 0; i < spp; i++) + curtree.nodep[i]->back = NULL; + for (i = spp; i < nonodes; i++) { + q = curtree.nodep[i]; + q->back = NULL; + while ((q = q->next) != curtree.nodep[i]) + q->back = NULL; + } + polishing = false; + promlk_add(curtree.nodep[enterorder[0]-1], curtree.nodep[enterorder[1]-1], + curtree.nodep[spp], false); + if (progress) { + printf("\nAdding species:\n"); + writename(0, 2, enterorder); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + lastsp = false; + smoothit = false; + for (i = 3; i <= spp; i++) { + bestyet = UNDEFINED; + bestree.likelihood = bestyet; + there = curtree.root; + item = curtree.nodep[enterorder[i - 1] - 1]; + nufork = curtree.nodep[spp + i - 2]; + lastsp = (i == spp); + addpreorder(curtree.root, item, nufork, true, true); + promlk_add(there, item, nufork, false); + like = prot_evaluate(curtree.root); + rearrange(&curtree.root); + if (curtree.likelihood > bestree.likelihood) { + prot_copy_(&curtree, &bestree, nonodes, grcategs); + } + if (progress) { + writename(i - 1, 1, enterorder); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + if (lastsp && global) { + if (progress) { + printf("Doing global rearrangements\n"); + printf(" !"); + for (j = 1; j <= nonodes; j++) + if ( j % (( nonodes / 72 ) + 1 ) == 0 ) + putchar('-'); + printf("!\n"); + } + bestlike = bestyet; + do { + if (progress) + printf(" "); + gotlike = bestlike; + for (j = 0; j < nonodes; j++) { + bestyet = UNDEFINED; + item = curtree.nodep[j]; + if (item != curtree.root) { + nufork = curtree.nodep[curtree.nodep[j]->back->index - 1]; + promlk_re_move(&item, &nufork, false); + there = curtree.root; + addpreorder(curtree.root, item, nufork, true, true); + promlk_add(there, item, nufork, false); + } + if (progress) { + if ( j % (( nonodes / 72 ) + 1 ) == 0 ) + putchar('.'); + fflush(stdout); + } + } + if (progress) + putchar('\n'); + } while (bestlike < gotlike); + } + } + if (njumble > 1 && lastsp) { + for (i = 0; i < spp; i++ ) + promlk_re_move(&curtree.nodep[i], &dummy, false); + if (jumb == 1 || bestree2.likelihood < bestree.likelihood) + prot_copy_(&bestree, &bestree2, nonodes, grcategs); + } + if (jumb == njumble) { + if (njumble > 1) + prot_copy_(&bestree2, &curtree, nonodes, grcategs); + else + prot_copy_(&bestree, &curtree, nonodes, grcategs); + fprintf(outfile, "\n\n"); + treevaluate(); + curtree.likelihood = prot_evaluate(curtree.root); + promlk_printree(); + summarize(); + if (trout) { + col = 0; + promlk_treeout(curtree.root); + } + } + } else { + openfile(&intree, INTREE, "input tree file", "r", progname, intreename); + numtrees = countsemic(&intree); + if(numtrees > MAXSHIMOTREES) + shimotrees = MAXSHIMOTREES; + else + shimotrees = numtrees; + if (numtrees > 2) + initseed(&inseed, &inseed0, seed); + l0gl = (double *) Malloc(shimotrees * sizeof(double)); + l0gf = (double **) Malloc(shimotrees * sizeof(double *)); + for (i=0; i < shimotrees; ++i) + l0gf[i] = (double *)Malloc(endsite * sizeof(double)); + if (treeprint) { + fprintf(outfile, "User-defined tree"); + if (numtrees > 1) + putc('s', outfile); + fprintf(outfile, ":\n\n"); + } + fprintf(outfile, "\n\n"); + which = 1; + while (which <= numtrees) { + + /* These initializations required each time through the loop + since multiple trees require re-initialization */ + dummy_haslengths = true; + nextnode = 0; + dummy_first = true; + goteof = false; + + treeread(intree, &root, dummy_treenode, &goteof, &dummy_first, + curtree.nodep, &nextnode, &dummy_haslengths, &grbg, + initpromlnode,false,nonodes); + + nonodes = nextnode; + + root = curtree.nodep[root->index - 1]; + curtree.root = root; + + if (lngths) + tymetrav(curtree.root, &x); + + if (goteof && (which <= numtrees)) { + /* if we hit the end of the file prematurely */ + printf ("\n"); + printf ("ERROR: trees missing at end of file.\n"); + printf ("\tExpected number of trees:\t\t%ld\n", numtrees); + printf ("\tNumber of trees actually in file:\t%ld.\n\n", which - 1); + exxit(-1); + } + curtree.start = curtree.nodep[0]->back; + treevaluate(); + promlk_printree(); + summarize(); + if (trout) { + col = 0; + promlk_treeout(curtree.root); + } + if(which < numtrees){ + prot_freex_notip(nonodes, curtree.nodep); + gdispose(curtree.root, &grbg, curtree.nodep); + } + which++; + } + + FClose(intree); + if (!auto_ && numtrees > 1 && weightsum > 1 ) + standev2(numtrees, maxwhich, 0, endsite, maxlogl, l0gl, l0gf, + aliasweight, seed); + } + if (usertree) { + free(l0gl); + for (i=0; i < shimotrees; i++) + free(l0gf[i]); + free(l0gf); + } + prot_freetable(); + if (jumb < njumble) + return; + free(contribution); + free_all_protx(nonodes2, curtree.nodep); + if (!usertree) { + free_all_protx(nonodes2, bestree.nodep); + if (njumble > 1) + free_all_protx(nonodes2, bestree2.nodep); + } + if (progress) { + printf("\n\nOutput written to file \"%s\"\n\n", outfilename); + if (trout) + printf("Tree also written onto file \"%s\"\n", outtreename); + putchar('\n'); + } + + free(root); +} /* maketree */ + + +void clean_up() +{ + /* Free and/or close stuff */ + long i; + + free (rrate); + free (probcat); + free (rate); + /* Seems to require freeing every time... */ + for (i = 0; i < spp; i++) { + free (y[i]); + } + free (y); + free (nayme); + free (enterorder); + free (category); + free (weight); + free (alias); + free (ally); + free (location); + free (aliasweight); + free (probmat); + free (eigmat); + if (! (njumble <= 1)) + freetree2(bestree2.nodep, nonodes2); + FClose(infile); + FClose(outfile); + FClose(outtree); +#ifdef MAC + fixmacfile(outfilename); + fixmacfile(outtreename); +#endif +} /* clean_up */ + + +int main(int argc, Char *argv[]) +{ /* Protein Maximum Likelihood with molecular clock */ + +#ifdef MAC + argc = 1; /* macsetup("Promlk", ""); */ + argv[0] = "Promlk"; +#endif + init(argc,argv); + progname = argv[0]; + openfile(&infile, INFILE, "input file", "r", argv[0], infilename); + openfile(&outfile, OUTFILE, "output file", "w", argv[0], outfilename); + + ibmpc = IBMCRT; + ansi = ANSICRT; + datasets = 1; + mulsets = false; + firstset = true; + doinit(); + + if (trout) + openfile(&outtree,OUTTREE,"output tree file","w",argv[0],outtreename); + if (ctgry) + openfile(&catfile,CATFILE,"categories file","r",argv[0],catfilename); + if (weights || justwts) + openfile(&weightfile,WEIGHTFILE,"weights file","r",argv[0],weightfilename); + for (ith = 1; ith <= datasets; ith++) { + if (datasets > 1) { + fprintf(outfile, "Data set # %ld:\n\n", ith); + if (progress) + printf("\nData set # %ld:\n", ith); + } + getinput(); + + if (ith == 1) + firstset = false; + for (jumb = 1; jumb <= njumble; jumb++){ + max_num_sibs = 0; + maketree(); + } + } + + clean_up(); + printf("Done.\n\n"); +#ifdef WIN32 + phyRestoreConsoleAttributes(); +#endif + return 0; +} /* Protein Maximum Likelihood with molecular clock */ + diff --git a/forester/archive/RIO/others/phylip_mod/src/protdist.c b/forester/archive/RIO/others/phylip_mod/src/protdist.c new file mode 100644 index 0000000..b6a9428 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/protdist.c @@ -0,0 +1,1973 @@ +/*Modified by Christian Zmasek. Use at your own risk.*/ + +#include "phylip.h" +#include "seq.h" + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +#define nmlngth 26 /*changed from to 10 to 26 by CZ 2006-07-28 */ /* number of characters in species name */ +#define protepsilon .00001 +typedef long *steparray; +typedef enum { + universal, ciliate, mito, vertmito, flymito, yeastmito +} codetype; +typedef enum { + chemical, hall, george +} cattype; + +typedef double matrix[20][20]; + +#ifndef OLDC +/* function prototypes */ +void protdist_uppercase(Char *); +void protdist_inputnumbers(void); +void getoptions(void); +void transition(void); +void doinit(void); +void printcategories(void); +void inputoptions(void); +void protdist_inputdata(void); +void doinput(void); +void code(void); +void protdist_cats(void); +void maketrans(void); +void givens(matrix, long, long, long, double, double, boolean); +void coeffs(double, double, double *, double *, double); +void tridiag(matrix, long, double); +void shiftqr(matrix, long, double); +void qreigen(matrix, long); +void pmbeigen(void); +void pameigen(void); +void jtteigen(void); +void predict(long, long, long); +void makedists(void); +void reallocchars(void); +/* function prototypes */ +#endif + +long chars, datasets, ith, ctgry, categs; +/* spp = number of species + chars = number of positions in actual sequences */ +double freqa, freqc, freqg, freqt, cvi, invarfrac, ttratio, xi, xv, + ease, fracchange; +boolean weights, justwts, progress, mulsets, gama, invar, basesequal, + usepmb, usejtt, usepam, kimura, similarity, firstset; +codetype whichcode; +cattype whichcat; +steptr oldweight; +double rate[maxcategs]; +aas **gnode; +aas trans[4][4][4]; +double pie[20]; +long cat[(long)ser - (long)ala + 1], numaa[(long)ser - (long)ala + 1]; +double eig[20]; +matrix prob, eigvecs; +double **d; +char infilename[100], outfilename[100], catfilename[100], weightfilename[100]; + +/* Local variables for makedists, propagated globally for c version: */ + double tt, p, dp, d2p, q, elambdat; + + +/* this jtt matrix decomposition due to Elisabeth Tillier */ +static double jtteigs[] = +{0.0, -0.007031123, -0.006484345, -0.006086499, -0.005514432, +-0.00772664, -0.008643413, -0.010620756, -0.009965552, -0.011671808, +-0.012222418,-0.004589201, -0.013103714, -0.014048038, -0.003170582, +-0.00347935, -0.015311677, -0.016021194, -0.017991454, -0.018911888}; + +static double jttprobs[20][20] = +{{0.076999996, 0.051000003, 0.043000004, 0.051999998, 0.019999996, 0.041, + 0.061999994, 0.073999997, 0.022999999, 0.052000004, 0.090999997, 0.058999988, + 0.024000007, 0.04, 0.050999992, 0.069, 0.059000006, 0.014000008, 0.032000004, + 0.066000005}, + {0.015604455, -0.068062363, 0.020106264, 0.070723273, 0.011702977, 0.009674053, + 0.074000798, -0.169750458, 0.005560808, -0.008208636, -0.012305869, + -0.063730179, -0.005674643, -0.02116828, 0.104586169, 0.016480839, 0.016765139, + 0.005936994, 0.006046367, -0.0082877}, + {-0.049778281, -0.007118197, 0.003801272, 0.070749616, 0.047506147, + 0.006447017, 0.090522425, -0.053620432, -0.008508175, 0.037170603, + 0.051805545, 0.015413608, 0.019939916, -0.008431976, -0.143511376, + -0.052486072, -0.032116542, -0.000860626, -0.02535993, 0.03843545}, + {-0.028906423, 0.092952047, -0.009615343, -0.067870117, 0.031970392, + 0.048338335, -0.054396304, -0.135916654, 0.017780083, 0.000129242, + 0.031267424, 0.116333586, 0.007499746, -0.032153596, 0.033517051, + -0.013719269, -0.00347293, -0.003291821, -0.02158326, -0.008862168}, + {0.037181176, -0.023106564, -0.004482225, -0.029899635, 0.118139633, + -0.032298569, -0.04683198, 0.05566988, -0.012622847, 0.002023096, + -0.043921088, -0.04792557, -0.003452711, -0.037744513, 0.020822974, + 0.036580187, 0.02331425, -0.004807711, -0.017504496, 0.01086673}, + {0.044754061, -0.002503471, 0.019452517, -0.015611487, -0.02152807, + -0.013131425, -0.03465365, -0.047928912, 0.020608851, 0.067843095, + -0.122130014, 0.002521499, 0.013021646, -0.082891087, -0.061590119, + 0.016270856, 0.051468938, 0.002079063, 0.081019713, 0.082927944}, + {0.058917882, 0.007320741, 0.025278141, 0.000357541, -0.002831285, + -0.032453034, -0.010177288, -0.069447924, -0.034467324, 0.011422358, + -0.128478324, 0.04309667, -0.015319944, 0.113302422, -0.035052393, + 0.046885372, 0.06185183, 0.00175743, -0.06224497, 0.020282093}, + {-0.014562092, 0.022522921, -0.007094389, 0.03480089, -0.000326144, + -0.124039037, 0.020577906, -0.005056454, -0.081841576, -0.004381786, + 0.030826152, 0.091261631, 0.008878828, -0.02829487, 0.042718836, + -0.011180886, -0.012719227, -0.000753926, 0.048062375, -0.009399129}, + {0.033789571, -0.013512235, 0.088010984, 0.017580292, -0.006608005, + -0.037836971, -0.061344686, -0.034268357, 0.018190209, -0.068484614, + 0.120024744, -0.00319321, -0.001349477, -0.03000546, -0.073063759, + 0.081912399, 0.0635245, 0.000197, -0.002481798, -0.09108114}, + {-0.113947615, 0.019230545, 0.088819683, 0.064832765, 0.001801467, + -0.063829682, -0.072001633, 0.018429333, 0.057465965, 0.043901014, + -0.048050874, -0.001705918, 0.022637173, 0.017404665, 0.043877902, + -0.017089594, -0.058489485, 0.000127498, -0.029357194, 0.025943972}, + {0.01512923, 0.023603725, 0.006681954, 0.012360216, -0.000181447, + -0.023011838, -0.008960024, -0.008533239, 0.012569835, 0.03216118, + 0.061986403, -0.001919083, -0.1400832, -0.010669741, -0.003919454, + -0.003707024, -0.026806029, -0.000611603, -0.001402648, 0.065312824}, + {-0.036405351, 0.020816769, 0.011408213, 0.019787053, 0.038897829, + 0.017641789, 0.020858533, -0.006067252, 0.028617353, -0.064259496, + -0.081676567, 0.024421823, -0.028751676, 0.07095096, -0.024199434, + -0.007513119, -0.028108766, -0.01198095, 0.111761119, -0.076198809}, + {0.060831772, 0.144097327, -0.069151377, 0.023754576, -0.003322955, + -0.071618574, 0.03353154, -0.02795295, 0.039519769, -0.023453968, + -0.000630308, -0.098024591, 0.017672997, 0.003813378, -0.009266499, + -0.011192111, 0.016013873, -0.002072968, -0.010022044, -0.012526904}, + {-0.050776604, 0.092833081, 0.044069596, 0.050523021, -0.002628417, + 0.076542572, -0.06388631, -0.00854892, -0.084725311, 0.017401063, + -0.006262541, -0.094457679, -0.002818678, -0.0044122, -0.002883973, + 0.028729685, -0.004961596, -0.001498627, 0.017994575, -0.000232779}, + {-0.01894566, -0.007760205, -0.015160993, -0.027254587, 0.009800903, + -0.013443561, -0.032896517, -0.022734138, -0.001983861, 0.00256111, + 0.024823166, -0.021256768, 0.001980052, 0.028136263, -0.012364384, + -0.013782446, -0.013061091, 0.111173981, 0.021702122, 0.00046654}, + {-0.009444193, -0.042106824, -0.02535015, -0.055125574, 0.006369612, + -0.02945416, -0.069922064, -0.067221068, -0.003004999, 0.053624311, + 0.128862984, -0.057245803, 0.025550508, 0.087741073, -0.001119043, + -0.012036202, -0.000913488, -0.034864475, 0.050124813, 0.055534723}, + {0.145782464, -0.024348311, -0.031216873, 0.106174443, 0.00202862, + 0.02653866, -0.113657267, -0.00755018, 0.000307232, -0.051241158, + 0.001310685, 0.035275877, 0.013308898, 0.002957626, -0.002925034, + -0.065362319, -0.071844582, 0.000475894, -0.000112419, 0.034097762}, + {0.079840455, 0.018769331, 0.078685899, -0.084329807, -0.00277264, + -0.010099754, 0.059700608, -0.019209715, -0.010442992, -0.042100476, + -0.006020556, -0.023061786, 0.017246106, -0.001572858, -0.006703785, + 0.056301316, -0.156787357, -0.000303638, 0.001498195, 0.051363455}, + {0.049628261, 0.016475144, 0.094141653, -0.04444633, 0.005206131, + -0.001827555, 0.02195624, 0.013066683, -0.010415582, -0.022338403, + 0.007837197, -0.023397671, -0.002507095, 0.005177694, 0.017109561, + -0.202340113, 0.069681441, 0.000120736, 0.002201146, 0.004670849}, + {0.089153689, 0.000233354, 0.010826822, -0.004273519, 0.001440618, + 0.000436077, 0.001182351, -0.002255508, -0.000700465, 0.150589876, + -0.003911914, -0.00050154, -0.004564983, 0.00012701, -0.001486973, + -0.018902754, -0.054748555, 0.000217377, -0.000319302, -0.162541651}}; + +/* PMB matrix decomposition courtesy of Elisabeth Tillier */ +static double pmbeigs[] = +{0.0000001586972220,-1.8416770496147100, -1.6025046986139100,-1.5801012515121300, +-1.4987794099715900,-1.3520794233801900,-1.3003469390479700,-1.2439503327631300, +-1.1962574080244200,-1.1383730501367500,-1.1153278910708000,-0.4934843510654760, +-0.5419014550215590,-0.9657997830826700,-0.6276075673757390,-0.6675927795018510, +-0.6932641383465870,-0.8897872681859630,-0.8382698977371710,-0.8074694642446040}; +static double pmbprobs[20][20] = +{{0.0771762457248147,0.0531913844998640,0.0393445076407294,0.0466756566755510, +0.0286348361997465,0.0312327748383639,0.0505410248721427,0.0767106611472993, +0.0258916271688597,0.0673140562194124,0.0965705469252199,0.0515979465932174, +0.0250628079438675,0.0503492018628350,0.0399908189418273,0.0641898881894471, +0.0517539616710987,0.0143507440546115,0.0357994592438322,0.0736218495862984}, +{0.0368263046116572,-0.0006728917107827,0.0008590805287740,-0.0002764255356960, +0.0020152937187455,0.0055743720652960,0.0003213317669367,0.0000449190281568, +-0.0004226254397134,0.1805040629634510,-0.0272246813586204,0.0005904606533477, +-0.0183743200073889,-0.0009194625608688,0.0008173657533167,-0.0262629806302238, +0.0265738757209787,0.0002176606241904,0.0021315644838566,-0.1823229927207580}, +{-0.0194800075560895,0.0012068088610652,-0.0008803318319596,-0.0016044273960017, +-0.0002938633803197,-0.0535796754602196,0.0155163896648621,-0.0015006360762140, +0.0021601372013703,0.0268513218744797,-0.1085292493742730,0.0149753083138452, +0.1346457366717310,-0.0009371698759829,0.0013501708044116,0.0346352293103622, +-0.0276963770242276,0.0003643142783940,0.0002074817333067,-0.0174108903914110}, +{0.0557839400850153,0.0023271577185437,0.0183481103396687,0.0023339480096311, +0.0002013267015151,-0.0227406863569852,0.0098644845475047,0.0064721276774396, +0.0001389408104210,-0.0473713878768274,-0.0086984445005797,0.0026913674934634, +0.0283724052562196,0.0001063665179457,0.0027442574779383,-0.1875312134708470, +0.1279864877057640,0.0005103347834563,0.0003155113168637,0.0081451082759554}, +{0.0037510125027265,0.0107095920636885,0.0147305410328404,-0.0112351252180332, +-0.0001500408626446,-0.1523450933729730,0.0611532413339872,-0.0005496748939503, +0.0048714378736644,-0.0003826320053999,0.0552010244407311,0.0482555671001955, +-0.0461664995115847,-0.0021165008617978,-0.0004574454232187,0.0233755883688949, +-0.0035484915422384,0.0009090698422851,0.0013840637687758,-0.0073895139302231}, +{-0.0111512564930024,0.1025460064723080,0.0396772456883791,-0.0298408501361294, +-0.0001656742634733,-0.0079876311843289,0.0712644184507945,-0.0010780604625230, +-0.0035880882043592,0.0021070399334252,0.0016716329894279,-0.1810123023850110, +0.0015141703608724,-0.0032700852781804,0.0035503782441679,0.0118634302028026, +0.0044561606458028,-0.0001576678495964,0.0023470722225751,-0.0027457045397157}, +{0.1474525743949170,-0.0054432538500293,0.0853848892349828,-0.0137787746207348, +-0.0008274830358513,0.0042248844582553,0.0019556229305563,-0.0164191435175148, +-0.0024501858854849,0.0120908948084233,-0.0381456105972653,0.0101271614855119, +-0.0061945941321859,0.0178841099895867,-0.0014577779202600,-0.0752120602555032, +-0.1426985695849920,0.0002862275078983,-0.0081191734261838,0.0313401149422531}, +{0.0542034611735289,-0.0078763926211829,0.0060433542506096,0.0033396210615510, +0.0013965072374079,0.0067798903832256,-0.0135291136622509,-0.0089982442731848, +-0.0056744537593887,-0.0766524225176246,0.1881210263933930,-0.0065875518675173, +0.0416627569300375,-0.0953804133524747,-0.0012559228448735,0.0101622644292547, +-0.0304742453119050,0.0011702318499737,0.0454733434783982,-0.1119239362388150}, +{0.1069409037912470,0.0805064400880297,-0.1127352030714600,0.1001181253523260, +-0.0021480427488769,-0.0332884841459003,-0.0679837575848452,-0.0043812841356657, +0.0153418716846395,-0.0079441315103188,-0.0121766182046363,-0.0381127991037620, +-0.0036338726532673,0.0195324059593791,-0.0020165963699984,-0.0061222685010268, +-0.0253761448771437,-0.0005246410999057,-0.0112205170502433,0.0052248485517237}, +{-0.0325247648326262,0.0238753651653669,0.0203684886605797,0.0295666232678825, +-0.0003946714764213,-0.0157242718469554,-0.0511737848084862,0.0084725632040180, +-0.0167068828528921,0.0686962159427527,-0.0659702890616198,-0.0014289912494271, +-0.0167000964093416,-0.1276689083678200,0.0036575057830967,-0.0205958145531018, +0.0000368919612829,0.0014413626622426,0.1064360941926030,0.0863372661517408}, +{-0.0463777468104402,0.0394712148670596,0.1118686750747160,0.0440711686389031, +-0.0026076286506751,-0.0268454015202516,-0.1464943067133240,-0.0137514051835380, +-0.0094395514284145,-0.0144124844774228,0.0249103379323744,-0.0071832157138676, +0.0035592787728526,0.0415627419826693,0.0027040097365669,0.0337523666612066, +0.0316121324137152,-0.0011350177559026,-0.0349998884574440,-0.0302651879823361}, +{0.0142360925194728,0.0413145623127025,0.0324976427846929,0.0580930922002398, +-0.0586974207121084,0.0202001168873069,0.0492204086749069,0.1126593173463060, +0.0116620013776662,-0.0780333711712066,-0.1109786767320410,0.0407775100936731, +-0.0205013161312652,-0.0653458585025237,0.0347351829703865,0.0304448983224773, +0.0068813748197884,-0.0189002309261882,-0.0334507528405279,-0.0668143558699485}, +{-0.0131548829657936,0.0044244322828034,-0.0050639951827271,-0.0038668197633889, +-0.1536822386530220,0.0026336969165336,0.0021585651200470,-0.0459233839062969, +0.0046854727140565,0.0393815434593599,0.0619554007991097,0.0027456299925622, +0.0117574347936383,0.0373018612990383,0.0024818527553328,-0.0133956606027299, +-0.0020457128424105,0.0154178819990401,0.0246524142683911,0.0275363065682921}, +{-0.1542307272455030,0.0364861558267547,-0.0090880407008181,0.0531673937889863, +0.0157585615170580,0.0029986538457297,0.0180194047699875,0.0652152443589317, +0.0266842840376180,0.0388457366405908,0.0856237634510719,0.0126955778952183, +0.0099593861698250,-0.0013941794862563,0.0294065511237513,-0.1151906949298290, +-0.0852991447389655,0.0028699120202636,-0.0332087026659522,0.0006811857297899}, +{0.0281300736924501,-0.0584072081898638,-0.0178386569847853,-0.0536470338171487, +-0.0186881656029960,-0.0240008730656106,-0.0541064820498883,0.2217137098936020, +-0.0260500001542033,0.0234505236798375,0.0311127151218573,-0.0494139126682672, +0.0057093465049849,0.0124937286655911,-0.0298322975915689,0.0006520211333102, +-0.0061018680727128,-0.0007081999479528,-0.0060523759094034,0.0215845995364623}, +{0.0295321046399105,-0.0088296411830544,-0.0065057049917325,-0.0053478115612781, +-0.0100646496794634,-0.0015473619084872,0.0008539960632865,-0.0376381933046211, +-0.0328135588935604,0.0672161874239480,0.0667626853916552,-0.0026511651464901, +0.0140451514222062,-0.0544836996133137,0.0427485157912094,0.0097455780205802, +0.0177309072915667,-0.0828759701187452,-0.0729504795471370,0.0670731961252313}, +{0.0082646581043963,-0.0319918630534466,-0.0188454445200422,-0.0374976353856606, +0.0037131290686848,-0.0132507796987883,-0.0306958830735725,-0.0044119395527308, +-0.0140786756619672,-0.0180512599925078,-0.0208243802903953,-0.0232202769398931, +-0.0063135878270273,0.0110442171178168,0.1824538048228460,-0.0006644614422758, +-0.0069909097436659,0.0255407650654681,0.0099119399501151,-0.0140911517070698}, +{0.0261344441524861,-0.0714454044548650,0.0159436926233439,0.0028462736216688, +-0.0044572637889080,-0.0089474834434532,-0.0177570282144517,-0.0153693244094452, +0.1160919467206400,0.0304911481385036,0.0047047513411774,-0.0456535116423972, +0.0004491494948617,-0.0767108879444462,-0.0012688533741441,0.0192445965934123, +0.0202321954782039,0.0281039933233607,-0.0590403018490048,0.0364080426546883}, +{0.0115826306265004,0.1340228176509380,-0.0236200652949049,-0.1284484655137340, +-0.0004742338006503,0.0127617346949511,-0.0428560878860394,0.0060030732454125, +0.0089182609926781,0.0085353834972860,0.0048464809638033,0.0709740071429510, +0.0029940462557054,-0.0483434904493132,-0.0071713680727884,-0.0036840391887209, +0.0031454003250096,0.0246243550241551,-0.0449551277644180,0.0111449232769393}, +{0.0140356721886765,-0.0196518236826680,0.0030517022326582,0.0582672093364850, +-0.0000973895685457,0.0021704767224292,0.0341806268602705,-0.0152035987563018, +-0.0903198657739177,0.0259623214586925,0.0155832497882743,-0.0040543568451651, +0.0036477631918247,-0.0532892744763217,-0.0142569373662724,0.0104500681408622, +0.0103483945857315,0.0679534422398752,-0.0768068882938636,0.0280289727046158}} +; + +static double pameigs[] = {0.0, -0.002350753691875762, -0.002701991863800379, + -0.002931612442853115, -0.004262492032364507, -0.005395980482561625, + -0.007141172690079523, -0.007392844756151318, -0.007781761342200766, + -0.00810032066366362, -0.00875299712761124, -0.01048227332164386, + -0.01109594097332267, -0.01298616073142234, -0.01342036228188581, + -0.01552599145527578, -0.01658762802054814, -0.0174893445623765, + -0.01933280832903272, -0.02206353522613025}; + +static double pamprobs[20][20] = + {{0.087683339901135, 0.04051291829598762, 0.04087846315185977, + 0.04771603459744777, 0.03247095396561266, 0.03784612688594957, + 0.0504933695604875, 0.0898249006830755, 0.03285885059543713, + 0.0357514442352119, 0.0852464099207521, 0.07910313444070642, + 0.01488243946396588, 0.04100101908956829, 0.05158026947089499, + 0.06975497205982451, 0.05832757042475474, 0.00931264523877807, + 0.03171540880870517, 0.06303972920984541}, + {0.01943453646811026, -0.004492574160484092, 0.007694891061220776, + 0.01278399096887701, 0.0106157418450234, 0.007542140341575122, + 0.01326994069032819, 0.02615565199894889, 0.003123125764490066, + 0.002204507682495444, -0.004782898215768979, 0.01204241965177619, + 0.0007847400096924341, -0.03043626073172116, 0.01221202591902536, + 0.01100527004684405, 0.01116495631339549, -0.0925364931988571, + -0.02622065387931562, 0.00843494142432107}, + {0.01855357100209072, 0.01493642835763868, 0.0127983090766285, + 0.0200533250704364, -0.1681898360107787, 0.01551657969909255, + 0.02128060163107209, 0.03100633591848964, 0.00845480845269879, + 0.000927149370785571, 0.00937207565817036, 0.03490557769673472, + 0.00300443019551563, -0.02590837220264415, 0.01329376859943192, + 0.006854110889741407, 0.01102593860528263, 0.003360844186685888, + -0.03459712356647764, 0.003351477369404443}, + {0.02690642688200102, 0.02131745801890152, 0.0143626616005213, + 0.02405101425725929, 0.05041008641436849, 0.01430925051050233, + 0.02362114036816964, 0.04688381789373886, 0.005250115453626377, + -0.02040112168595516, -0.0942720776915669, 0.03773004996758644, + -0.00822831940782616, -0.1164872809439224, 0.02286281877257392, + 0.02849551240669926, 0.01468856796295663, 0.02377110964207936, + -0.094380545436577, -0.02089068498518036}, + {0.00930172577225213, 0.01493463068441099, 0.020186920775608, + 0.02892154953912524, -0.01224593358361567, 0.01404228329986624, + 0.02671186617119041, 0.04537535161795231, 0.02229995804098249, + -0.04635704133961575, -0.1966910360247138, 0.02796648065439046, + -0.02263484732621436, 0.0440490503242072, 0.01148782948302166, + 0.01989170531824069, 0.001306805142981245, -0.005676690969116321, + 0.07680476281625202, -0.07967537039721849}, + {0.06602274245435476, -0.0966661981471856, -0.005241648783844579, + 0.00859135188171146, -0.007762129660943368, -0.02888965572526196, + 0.003592291525888222, 0.1668410669287673, -0.04082039290551406, + 0.005233775047553415, -0.01758244726137135, -0.1493955762326898, + -0.00855819137835548, 0.004211419253492328, 0.01929306335052688, + 0.03008056746359405, 0.0190444422412472, 0.005577189741419315, + 0.0000874156155112068, 0.02634091459108298}, + {0.01933897472880726, 0.05874583569377844, -0.02293534606228405, + -0.07206314017962175, -0.004580681581546643, -0.0628814337610561, + -0.0850783812795136, 0.07988417636610614, -0.0852798990133397, + 0.01649047166155952, -0.05416647263757423, 0.1089834536254064, + 0.005093403979413865, 0.02520300254161142, 0.0005951431406455604, + 0.02441251821224675, 0.02796099482240553, -0.002574933994926502, + -0.007172237553012804, 0.03002455129086954}, + {0.04041118479094272, -0.002476225672095412, -0.01494505811263243, + -0.03759443758599911, -0.00892246902492875, -0.003634714029239211, + -0.03085671837973749, -0.126176309029931, 0.005814031139083794, + 0.01313561962646063, -0.04760487162503322, -0.0490563712725484, + -0.005082243450421558, -0.01213634309383557, 0.1806666927079249, + 0.02111663336185495, 0.02963486860587087, -0.0000175020101657785, + 0.01197155383597686, 0.0357526792184636}, + {-0.01184769557720525, 0.01582776076338872, -0.006570708266564639, + -0.01471915653734024, 0.00894343616503608, 0.00562664968033149, + -0.01465878888356943, 0.05365282692645818, 0.00893509735776116, + -0.05879312944436473, 0.0806048683392995, -0.007722897986905326, + -0.001819943882718859, 0.0942535573077267, 0.07483883782251654, + 0.004354639673913651, -0.02828804845740341, -0.001318222184691827, + -0.07613149604246563, -0.1251675867732172}, + {0.00834167031558193, -0.01509357596974962, 0.007098172811092488, + 0.03127677418040319, 0.001992448468465455, 0.00915441566808454, + 0.03430175973499201, -0.0730648147535803, -0.001402707145575659, + 0.04780949194330815, -0.1115035603461273, -0.01292297197609604, + -0.005056270550868528, 0.1112053349612027, -0.03801929822379964, + -0.001191241001736563, 0.01872874622910247, 0.0005314214903865993, + -0.0882576318311789, 0.07607183599610171}, + {-0.01539460099727769, 0.04988596184297883, -0.01187240760647617, + -0.06987843637091853, -0.002490472846497859, 0.01009857892494956, + -0.07473588067847209, 0.0906009925879084, 0.1243612446505172, + 0.02152806401345371, -0.03504879644860233, -0.06680752427613573, + -0.005574485153629651, 0.001518282948127752, -0.01999168507510701, + -0.01478606199529457, -0.02203749419458996, -0.00132680708294333, + -0.01137505997867614, 0.05332658773667142}, + {-0.06104378736432388, 0.0869446603393548, -0.03298331234537257, + 0.03128515657456024, 0.003906358569208259, 0.03578694104193928, + 0.06241936133189683, 0.06182827284921748, -0.05566564263245907, + 0.02640868588189002, -0.01349751243059039, -0.05507866642582638, + -0.006671347738489326, -0.001470096466016046, 0.05185743641479938, + -0.07494697511168257, -0.1175185439057584, -0.001188074094105709, + 0.00937934805737347, 0.05024773745437657}, + {-0.07252555582124737, -0.116554459356382, 0.003605361887406413, + -0.00836518656029184, 0.004615715410745561, 0.005105376617651312, + -0.00944938657024391, 0.05602449420950007, 0.02722719610561933, + 0.01959357494748446, -0.0258655103753962, 0.1440733975689835, + 0.01446782819722976, 0.003718896062070054, 0.05825843045655135, + -0.06230154142733073, -0.07833704962300169, 0.003160836143568724, + -0.001169873777936648, 0.03471745590503304}, + {-0.03204352258752698, 0.01019272923862322, 0.04509668708733181, + 0.05756522429120813, -0.0004601149081726732, -0.0984718150777423, + -0.01107826100664925, -0.005680277810520585, 0.01962359392320817, + 0.01550006899131986, 0.05143956925922197, 0.02462476682588468, + -0.0888843861002653, -0.00171553583659411, 0.01606331750661664, + 0.001176847743518958, -0.02070972978912828, -0.000341523293579971, + -0.002654732745607882, 0.02075709428885848}, + {0.03595199666430258, -0.02800219615234468, -0.04341570015493925, + -0.0748275906176658, 0.0001051403676377422, 0.1137431321746627, + 0.005852087565974318, 0.003443037513847801, -0.02481931657706633, + -0.003651181839831423, 0.03195794176786321, 0.04135411406392523, + -0.07562030263210619, 0.001769332364699, -0.01984381173403915, + -0.005029750745010152, 0.02649253902476472, 0.000518085571702734, + 0.001062936684474851, 0.01295950668914449}, + {-0.16164552322896, -0.0006050035060464324, 0.0258380054414968, + 0.003188424740960557, -0.0002058911341821877, 0.03157555987384681, + -0.01678913462596107, 0.03096216145389774, -0.0133791110666919, + 0.1125249625204277, -0.00769017706442472, -0.02653938062180483, + -0.002555329863523985, -0.00861833362947954, 0.01775148884754278, + 0.02529310679774722, 0.0826243417011238, -0.0001036728183032624, + 0.001963562313294209, -0.0935900561309786}, + {0.1652394174588469, -0.002814245280784351, -0.0328982001821263, + -0.02000104712964131, 0.0002208121995725443, -0.02733462178511839, + 0.02648078162927627, -0.01788316626401427, 0.01630747623755998, + 0.1053849023838147, -0.005447706553811218, 0.01810876922536839, + -0.001808914710282444, -0.007687912115607397, -0.01332593672114388, + -0.02110750894891371, -0.07456116592983384, 0.000219072589592394, + 0.001270886972191055, -0.1083616930749109}, + {0.02453279389716254, -0.005820072356487439, 0.100260287284095, + 0.01277522280305745, -0.003184943445296999, 0.05814689527984152, + -0.0934012278200201, -0.03017986487349484, -0.03136625380994165, + 0.00988668352785117, -0.00358900410973142, -0.02017443675004764, + 0.000915384582922184, -0.001460963415183106, -0.01370112443251124, + 0.1130040979284457, -0.1196161771323699, -0.0005800211204222045, + -0.0006153403201024954, 0.00416806428223025}, + {-0.0778089244252535, -0.007055161182430869, -0.0349307504860869, + -0.0811915584276571, -0.004689825871599125, -0.03726108871471753, + 0.1072225647141469, -0.00917015113070944, 0.01381628985996913, + -0.00123227881492089, 0.001815954515275675, 0.005708744099349901, + -0.0001448985044877925, -0.001306578795561384, -0.006992743514185243, + 0.1744720240732789, -0.05353628497814023, -0.0007613684227234787, + -0.0003550282315997644, 0.01340106423804634}, + {-0.0159527329868513, -0.007622151568160798, -0.1389875105184963, + 0.1165051999914764, -0.002217810389087748, 0.01550003226513692, + -0.07427664222230566, -0.003371438498619264, 0.01385754771325365, + 0.004759020167383304, 0.001624078805220564, 0.02011638303109029, + -0.001717827082842178, -0.0007424036708598594, -0.003978884451898934, + 0.0866418927301209, -0.01280817739158123, -0.00023039242454603, + 0.002309205802479111, 0.0005926106991001195}}; + + +void protdist_uppercase(Char *ch) +{ + (*ch) = (isupper(*ch) ? (*ch) : toupper(*ch)); +} /* protdist_uppercase */ + + +void protdist_inputnumbers() +{ + /* input the numbers of species and of characters */ + long i; + + fscanf(infile, "%ld%ld", &spp, &chars); + + if (printdata) + fprintf(outfile, "%2ld species, %3ld positions\n\n", spp, chars); + gnode = (aas **)Malloc(spp * sizeof(aas *)); + if (firstset) { + for (i = 0; i < spp; i++) + gnode[i] = (aas *)Malloc(chars * sizeof(aas )); + } + weight = (steparray)Malloc(chars*sizeof(long)); + oldweight = (steparray)Malloc(chars*sizeof(long)); + category = (steparray)Malloc(chars*sizeof(long)); + d = (double **)Malloc(spp*sizeof(double *)); + nayme = (naym *)Malloc(spp*sizeof(naym)); + + for (i = 0; i < spp; ++i) + d[i] = (double *)Malloc(spp*sizeof(double)); +} /* protdist_inputnumbers */ + + +void getoptions() +{ + /* interactively set options */ + long loopcount, loopcount2; + Char ch, ch2; + Char in[100]; + boolean done; + + if (printdata) + fprintf(outfile, "\nProtein distance algorithm, version %s\n\n",VERSION); + putchar('\n'); + weights = false; + printdata = false; + progress = true; + interleaved = true; + similarity = false; + ttratio = 2.0; + whichcode = universal; + whichcat = george; + basesequal = true; + freqa = 0.25; + freqc = 0.25; + freqg = 0.25; + freqt = 0.25; + usejtt = true; + usepmb = false; + usepam = false; + kimura = false; + gama = false; + invar = false; + invarfrac = 0.0; + ease = 0.457; + loopcount = 0; + do { + cleerhome(); + printf("\nProtein distance algorithm, version %s\n\n",VERSION); + printf("Settings for this run:\n"); + printf(" P Use JTT, PMB, PAM, Kimura, categories model? %s\n", + usejtt ? "Jones-Taylor-Thornton matrix" : + usepmb ? "Henikoff/Tillier PMB matrix" : + usepam ? "Dayhoff PAM matrix" : + kimura ? "Kimura formula" : + similarity ? "Similarity table" : "Categories model"); + if (!kimura && !similarity) { + printf(" G Gamma distribution of rates among positions?"); + if (gama) + printf(" Yes\n"); + else { + if (invar) + printf(" Gamma+Invariant\n"); + else + printf(" No\n"); + } + } + printf(" C One category of substitution rates?"); + if (!ctgry || categs == 1) + printf(" Yes\n"); + else + printf(" %ld categories\n", categs); + printf(" W Use weights for positions?"); + if (weights) + printf(" Yes\n"); + else + printf(" No\n"); + if (!(usejtt || usepmb || usepam || kimura || similarity)) { + printf(" U Use which genetic code? %s\n", + (whichcode == universal) ? "Universal" : + (whichcode == ciliate) ? "Ciliate" : + (whichcode == mito) ? "Universal mitochondrial" : + (whichcode == vertmito) ? "Vertebrate mitochondrial" : + (whichcode == flymito) ? "Fly mitochondrial" : + (whichcode == yeastmito) ? "Yeast mitochondrial" : ""); + printf(" A Which categorization of amino acids? %s\n", + (whichcat == chemical) ? "Chemical" : + (whichcat == george) ? "George/Hunt/Barker" : "Hall"); + + printf(" E Prob change category (1.0=easy):%8.4f\n",ease); + printf(" T Transition/transversion ratio:%7.3f\n",ttratio); + printf(" F Base Frequencies:"); + if (basesequal) + printf(" Equal\n"); + else + printf("%7.3f%6.3f%6.3f%6.3f\n", freqa, freqc, freqg, freqt); + } + printf(" M Analyze multiple data sets?"); + if (mulsets) + printf(" Yes, %2ld %s\n", datasets, + (justwts ? "sets of weights" : "data sets")); + else + printf(" No\n"); + printf(" I Input sequences interleaved? %s\n", + (interleaved ? "Yes" : "No, sequential")); + printf(" 0 Terminal type (IBM PC, ANSI)? %s\n", + ibmpc ? "IBM PC" : + ansi ? "ANSI" : "(none)"); + printf(" 1 Print out the data at start of run %s\n", + (printdata ? "Yes" : "No")); + printf(" 2 Print indications of progress of run %s\n", + progress ? "Yes" : "No"); + printf("\nAre these settings correct? (type Y or the letter for one to change)\n"); + in[0] = '\0'; + getstryng(in); + ch=in[0]; + if (ch == '\n') + ch = ' '; + protdist_uppercase(&ch); + done = (ch == 'Y'); + if (!done) { + if (((strchr("CPGMWI120",ch) != NULL) && (usejtt || usepmb || usepam)) || + ((strchr("CPMWI120",ch) != NULL) && (kimura || similarity)) || + ((strchr("CUAPGETFMWI120",ch) != NULL) && + (! (usejtt || usepmb || usepam || kimura || similarity)))) { + switch (ch) { + + case 'U': + printf("Which genetic code?\n"); + printf(" type for\n\n"); + printf(" U Universal\n"); + printf(" M Mitochondrial\n"); + printf(" V Vertebrate mitochondrial\n"); + printf(" F Fly mitochondrial\n"); + printf(" Y Yeast mitochondrial\n\n"); + loopcount2 = 0; + do { + printf("type U, M, V, F, or Y\n"); + scanf("%c%*[^\n]", &ch); + getchar(); + if (ch == '\n') + ch = ' '; + protdist_uppercase(&ch); + countup(&loopcount2, 10); + } while (ch != 'U' && ch != 'M' && ch != 'V' && ch != 'F' && ch != 'Y'); + switch (ch) { + + case 'U': + whichcode = universal; + break; + + case 'M': + whichcode = mito; + break; + + case 'V': + whichcode = vertmito; + break; + + case 'F': + whichcode = flymito; + break; + + case 'Y': + whichcode = yeastmito; + break; + } + break; + + case 'A': + printf( + "Which of these categorizations of amino acids do you want to use:\n\n"); + printf( + " all have groups: (Glu Gln Asp Asn), (Lys Arg His), (Phe Tyr Trp)\n"); + printf(" plus:\n"); + printf("George/Hunt/Barker:"); + printf(" (Cys), (Met Val Leu Ileu), (Gly Ala Ser Thr Pro)\n"); + printf("Chemical: "); + printf(" (Cys Met), (Val Leu Ileu Gly Ala Ser Thr), (Pro)\n"); + printf("Hall: "); + printf(" (Cys), (Met Val Leu Ileu), (Gly Ala Ser Thr), (Pro)\n\n"); + printf("Which do you want to use (type C, H, or G)\n"); + loopcount2 = 0; + do { + scanf("%c%*[^\n]", &ch); + getchar(); + if (ch == '\n') + ch = ' '; + protdist_uppercase(&ch); + countup(&loopcount2, 10); + } while (ch != 'C' && ch != 'H' && ch != 'G'); + switch (ch) { + + case 'C': + whichcat = chemical; + break; + + case 'H': + whichcat = hall; + break; + + case 'G': + whichcat = george; + break; + } + break; + + case 'C': + ctgry = !ctgry; + if (ctgry) { + initcatn(&categs); + initcategs(categs, rate); + } + break; + + case 'W': + weights = !weights; + break; + + case 'P': + if (usejtt) { + usejtt = false; + usepmb = true; + } else { + if (usepmb) { + usepmb = false; + usepam = true; + } else { + if (usepam) { + usepam = false; + kimura = true; + } else { + if (kimura) { + kimura = false; + similarity = true; + } else { + if (similarity) + similarity = false; + else + usejtt = true; + } + } + } + } + break; + + case 'G': + if (!(gama || invar)) + gama = true; + else { + if (gama) { + gama = false; + invar = true; + } else { + if (invar) + invar = false; + } + } + break; + + + case 'E': + printf("Ease of changing category of amino acid?\n"); + loopcount2 = 0; + do { + printf(" (1.0 if no difficulty of changing,\n"); + printf(" less if less easy. Can't be negative\n"); + scanf("%lf%*[^\n]", &ease); + getchar(); + countup(&loopcount2, 10); + } while (ease > 1.0 || ease < 0.0); + break; + + case 'T': + loopcount2 = 0; + do { + printf("Transition/transversion ratio?\n"); + scanf("%lf%*[^\n]", &ttratio); + getchar(); + countup(&loopcount2, 10); + } while (ttratio < 0.0); + break; + + case 'F': + loopcount2 = 0; + do { + basesequal = false; + printf("Frequencies of bases A,C,G,T ?\n"); + scanf("%lf%lf%lf%lf%*[^\n]", &freqa, &freqc, &freqg, &freqt); + getchar(); + if (fabs(freqa + freqc + freqg + freqt - 1.0) >= 1.0e-3) + printf("FREQUENCIES MUST SUM TO 1\n"); + countup(&loopcount2, 10); + } while (fabs(freqa + freqc + freqg + freqt - 1.0) >= 1.0e-3); + break; + + case 'M': + mulsets = !mulsets; + if (mulsets) { + printf("Multiple data sets or multiple weights?"); + loopcount2 = 0; + do { + printf(" (type D or W)\n"); + scanf("%c%*[^\n]", &ch2); + getchar(); + if (ch2 == '\n') + ch2 = ' '; + uppercase(&ch2); + countup(&loopcount2, 10); + } while ((ch2 != 'W') && (ch2 != 'D')); + justwts = (ch2 == 'W'); + if (justwts) + justweights(&datasets); + else + initdatasets(&datasets); + } + break; + + case 'I': + interleaved = !interleaved; + break; + + case '0': + if (ibmpc) { + ibmpc = false; + ansi = true; + } else if (ansi) + ansi = false; + else + ibmpc = true; + break; + + case '1': + printdata = !printdata; + break; + + case '2': + progress = !progress; + break; + } + } else { + if (strchr("CUAPGETFMWI120",ch) == NULL) + printf("Not a possible option!\n"); + else + printf("That option not allowed with these settings\n"); + printf("\nPress Enter or Return key to continue\n"); + getchar(); + } + } + countup(&loopcount, 100); + } while (!done); + if (gama || invar) { + loopcount = 0; + do { + printf( +"\nCoefficient of variation of substitution rate among positions (must be positive)\n"); + printf( + " In gamma distribution parameters, this is 1/(square root of alpha)\n"); + scanf("%lf%*[^\n]", &cvi); + getchar(); + countup(&loopcount, 10); + } while (cvi <= 0.0); + cvi = 1.0 / (cvi * cvi); + } + if (invar) { + loopcount = 0; + do { + printf("Fraction of invariant positions?\n"); + scanf("%lf%*[^\n]", &invarfrac); + getchar(); + countup (&loopcount, 10); + } while ((invarfrac <= 0.0) || (invarfrac >= 1.0)); + } +} /* getoptions */ + + +void transition() +{ + /* calculations related to transition-transversion ratio */ + double aa, bb, freqr, freqy, freqgr, freqty; + + freqr = freqa + freqg; + freqy = freqc + freqt; + freqgr = freqg / freqr; + freqty = freqt / freqy; + aa = ttratio * freqr * freqy - freqa * freqg - freqc * freqt; + bb = freqa * freqgr + freqc * freqty; + xi = aa / (aa + bb); + xv = 1.0 - xi; + if (xi <= 0.0 && xi >= -epsilon) + xi = 0.0; + if (xi < 0.0){ + printf("THIS TRANSITION-TRANSVERSION RATIO IS IMPOSSIBLE WITH"); + printf(" THESE BASE FREQUENCIES\n"); + exxit(-1);} +} /* transition */ + + +void doinit() +{ + /* initializes variables */ + protdist_inputnumbers(); + getoptions(); + transition(); +} /* doinit*/ + + +void printcategories() +{ /* print out list of categories of positions */ + long i, j; + + fprintf(outfile, "Rate categories\n\n"); + for (i = 1; i <= nmlngth + 3; i++) + putc(' ', outfile); + for (i = 1; i <= chars; i++) { + fprintf(outfile, "%ld", category[i - 1]); + if (i % 60 == 0) { + putc('\n', outfile); + for (j = 1; j <= nmlngth + 3; j++) + putc(' ', outfile); + } else if (i % 10 == 0) + putc(' ', outfile); + } + fprintf(outfile, "\n\n"); +} /* printcategories */ + +void reallocchars(void) +{ + int i; + + free(weight); + free(oldweight); + free(category); + for (i = 0; i < spp; i++) { + free(gnode[i]); + gnode[i] = (aas *)Malloc(chars * sizeof(aas )); + } + weight = (steparray)Malloc(chars*sizeof(long)); + oldweight = (steparray)Malloc(chars*sizeof(long)); + category = (steparray)Malloc(chars*sizeof(long)); +} + +void inputoptions() +{ /* input the information on the options */ + long i; + + if (!firstset && !justwts) { + samenumsp(&chars, ith); + reallocchars(); + } if (firstset || !justwts) { + for (i = 0; i < chars; i++) { + category[i] = 1; + oldweight[i] = 1; + weight[i] = 1; + } + } + /* if (!justwts && weights) {*/ + if (justwts || weights) + inputweights(chars, oldweight, &weights); + if (printdata) + putc('\n', outfile); + if (usejtt && printdata) + fprintf(outfile, " Jones-Taylor-Thornton model distance\n"); + if (usepmb && printdata) + fprintf(outfile, " Henikoff/Tillier PMB model distance\n"); + if (usepam && printdata) + fprintf(outfile, " Dayhoff PAM model distance\n"); + if (kimura && printdata) + fprintf(outfile, " Kimura protein distance\n"); + if (!(usejtt || usepmb || usepam || kimura || similarity) && printdata) + fprintf(outfile, " Categories model distance\n"); + if (similarity) + fprintf(outfile, " \n Table of similarity between sequences\n"); + if ((ctgry && categs > 1) && (firstset || !justwts)) { + inputcategs(0, chars, category, categs, "ProtDist"); + if (printdata) + printcategs(outfile, chars, category, "Position categories"); + } else if (printdata && (categs > 1)) { + fprintf(outfile, "\nPosition category Rate of change\n\n"); + for (i = 1; i <= categs; i++) + fprintf(outfile, "%15ld%13.3f\n", i, rate[i - 1]); + putc('\n', outfile); + printcategories(); + } + if (weights && printdata) + printweights(outfile, 0, chars, oldweight, "Positions"); +} /* inputoptions */ + + +void protdist_inputdata() +{ + /* input the names and sequences for each species */ + long i, j, k, l, aasread=0, aasnew=0; + Char charstate; + boolean allread, done; + aas aa=0; /* temporary amino acid for input */ + + if (progress) + putchar('\n'); + j = nmlngth + (chars + (chars - 1) / 10) / 2 - 5; + if (j < nmlngth - 1) + j = nmlngth - 1; + if (j > 37) + j = 37; + if (printdata) { + fprintf(outfile, "\nName"); + for (i = 1; i <= j; i++) + putc(' ', outfile); + fprintf(outfile, "Sequences\n"); + fprintf(outfile, "----"); + for (i = 1; i <= j; i++) + putc(' ', outfile); + fprintf(outfile, "---------\n\n"); + } + aasread = 0; + allread = false; + while (!(allread)) { + /* eat white space -- if the separator line has spaces on it*/ + do { + charstate = gettc(infile); + } while (charstate == ' ' || charstate == '\t'); + ungetc(charstate, infile); + if (eoln(infile)) + scan_eoln(infile); + i = 1; + while (i <= spp) { + if ((interleaved && aasread == 0) || !interleaved) + initname(i-1); + if (interleaved) + j = aasread; + else + j = 0; + done = false; + while (((!done) && (!(eoln(infile) || eoff(infile))))) { + if (interleaved) + done = true; + while (((j < chars) & (!(eoln(infile) | eoff(infile))))) { + charstate = gettc(infile); + if (charstate == '\n' || charstate == '\t') + charstate = ' '; + if (charstate == ' ' || (charstate >= '0' && charstate <= '9')) + continue; + protdist_uppercase(&charstate); + if ((!isalpha(charstate) && charstate != '.' && charstate != '?' && + charstate != '-' && charstate != '*') || charstate == 'J' || + charstate == 'O' || charstate == 'U' || charstate == '.') { + printf("ERROR -- bad amino acid: %c at position %ld of species %3ld\n", + charstate, j, i); + if (charstate == '.') { + printf(" Periods (.) may not be used as gap characters.\n"); + printf(" The correct gap character is (-)\n"); + } + exxit(-1); + } + j++; + + switch (charstate) { + + case 'A': + aa = ala; + break; + + case 'B': + aa = asx; + break; + + case 'C': + aa = cys; + break; + + case 'D': + aa = asp; + break; + + case 'E': + aa = glu; + break; + + case 'F': + aa = phe; + break; + + case 'G': + aa = gly; + break; + + case 'H': + aa = his; + break; + + case 'I': + aa = ileu; + break; + + case 'K': + aa = lys; + break; + + case 'L': + aa = leu; + break; + + case 'M': + aa = met; + break; + + case 'N': + aa = asn; + break; + + case 'P': + aa = pro; + break; + + case 'Q': + aa = gln; + break; + + case 'R': + aa = arg; + break; + + case 'S': + aa = ser; + break; + + case 'T': + aa = thr; + break; + + case 'V': + aa = val; + break; + + case 'W': + aa = trp; + break; + + case 'X': + aa = unk; + break; + + case 'Y': + aa = tyr; + break; + + case 'Z': + aa = glx; + break; + + case '*': + aa = stop; + break; + + case '?': + aa = quest; + break; + + case '-': + aa = del; + break; + } + gnode[i - 1][j - 1] = aa; + } + if (interleaved) + continue; + if (j < chars) + scan_eoln(infile); + else if (j == chars) + done = true; + } + if (interleaved && i == 1) + aasnew = j; + scan_eoln(infile); + if ((interleaved && j != aasnew) || ((!interleaved) && j != chars)){ + printf("ERROR: SEQUENCES OUT OF ALIGNMENT\n"); + exxit(-1);} + i++; + } + if (interleaved) { + aasread = aasnew; + allread = (aasread == chars); + } else + allread = (i > spp); + } + if ( printdata) { + for (i = 1; i <= ((chars - 1) / 60 + 1); i++) { + for (j = 1; j <= spp; j++) { + for (k = 0; k < nmlngth; k++) + putc(nayme[j - 1][k], outfile); + fprintf(outfile, " "); + l = i * 60; + if (l > chars) + l = chars; + for (k = (i - 1) * 60 + 1; k <= l; k++) { + if (j > 1 && gnode[j - 1][k - 1] == gnode[0][k - 1]) + charstate = '.'; + else { + switch (gnode[j - 1][k - 1]) { + + case ala: + charstate = 'A'; + break; + + case asx: + charstate = 'B'; + break; + + case cys: + charstate = 'C'; + break; + + case asp: + charstate = 'D'; + break; + + case glu: + charstate = 'E'; + break; + + case phe: + charstate = 'F'; + break; + + case gly: + charstate = 'G'; + break; + + case his: + charstate = 'H'; + break; + + case ileu: + charstate = 'I'; + break; + + case lys: + charstate = 'K'; + break; + + case leu: + charstate = 'L'; + break; + + case met: + charstate = 'M'; + break; + + case asn: + charstate = 'N'; + break; + + case pro: + charstate = 'P'; + break; + + case gln: + charstate = 'Q'; + break; + + case arg: + charstate = 'R'; + break; + + case ser: + charstate = 'S'; + break; + + case thr: + charstate = 'T'; + break; + + case val: + charstate = 'V'; + break; + + case trp: + charstate = 'W'; + break; + + case tyr: + charstate = 'Y'; + break; + + case glx: + charstate = 'Z'; + break; + + case del: + charstate = '-'; + break; + + case stop: + charstate = '*'; + break; + + case unk: + charstate = 'X'; + break; + + case quest: + charstate = '?'; + break; + + default: /*cases ser1 and ser2 cannot occur*/ + break; + } + } + putc(charstate, outfile); + if (k % 10 == 0 && k % 60 != 0) + putc(' ', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); + } + if (printdata) + putc('\n', outfile); +} /* protdist_inputdata */ + + +void doinput() +{ /* reads the input data */ + long i; + double sumrates, weightsum; + + inputoptions(); + if(!justwts || firstset) + protdist_inputdata(); + if (!ctgry) { + categs = 1; + rate[0] = 1.0; + } + weightsum = 0; + for (i = 0; i < chars; i++) + weightsum += oldweight[i]; + sumrates = 0.0; + for (i = 0; i < chars; i++) + sumrates += oldweight[i] * rate[category[i] - 1]; + for (i = 0; i < categs; i++) + rate[i] *= weightsum / sumrates; +} /* doinput */ + + +void code() +{ + /* make up table of the code 1 = u, 2 = c, 3 = a, 4 = g */ + long n; + aas b; + + trans[0][0][0] = phe; + trans[0][0][1] = phe; + trans[0][0][2] = leu; + trans[0][0][3] = leu; + trans[0][1][0] = ser; + trans[0][1][1] = ser; + trans[0][1][2] = ser; + trans[0][1][3] = ser; + trans[0][2][0] = tyr; + trans[0][2][1] = tyr; + trans[0][2][2] = stop; + trans[0][2][3] = stop; + trans[0][3][0] = cys; + trans[0][3][1] = cys; + trans[0][3][2] = stop; + trans[0][3][3] = trp; + trans[1][0][0] = leu; + trans[1][0][1] = leu; + trans[1][0][2] = leu; + trans[1][0][3] = leu; + trans[1][1][0] = pro; + trans[1][1][1] = pro; + trans[1][1][2] = pro; + trans[1][1][3] = pro; + trans[1][2][0] = his; + trans[1][2][1] = his; + trans[1][2][2] = gln; + trans[1][2][3] = gln; + trans[1][3][0] = arg; + trans[1][3][1] = arg; + trans[1][3][2] = arg; + trans[1][3][3] = arg; + trans[2][0][0] = ileu; + trans[2][0][1] = ileu; + trans[2][0][2] = ileu; + trans[2][0][3] = met; + trans[2][1][0] = thr; + trans[2][1][1] = thr; + trans[2][1][2] = thr; + trans[2][1][3] = thr; + trans[2][2][0] = asn; + trans[2][2][1] = asn; + trans[2][2][2] = lys; + trans[2][2][3] = lys; + trans[2][3][0] = ser; + trans[2][3][1] = ser; + trans[2][3][2] = arg; + trans[2][3][3] = arg; + trans[3][0][0] = val; + trans[3][0][1] = val; + trans[3][0][2] = val; + trans[3][0][3] = val; + trans[3][1][0] = ala; + trans[3][1][1] = ala; + trans[3][1][2] = ala; + trans[3][1][3] = ala; + trans[3][2][0] = asp; + trans[3][2][1] = asp; + trans[3][2][2] = glu; + trans[3][2][3] = glu; + trans[3][3][0] = gly; + trans[3][3][1] = gly; + trans[3][3][2] = gly; + trans[3][3][3] = gly; + if (whichcode == mito) + trans[0][3][2] = trp; + if (whichcode == vertmito) { + trans[0][3][2] = trp; + trans[2][3][2] = stop; + trans[2][3][3] = stop; + trans[2][0][2] = met; + } + if (whichcode == flymito) { + trans[0][3][2] = trp; + trans[2][0][2] = met; + trans[2][3][2] = ser; + } + if (whichcode == yeastmito) { + trans[0][3][2] = trp; + trans[1][0][2] = thr; + trans[2][0][2] = met; + } + n = 0; + for (b = ala; (long)b <= (long)val; b = (aas)((long)b + 1)) { + if (b != ser2) { + n++; + numaa[(long)b - (long)ala] = n; + } + } + numaa[(long)ser - (long)ala] = (long)ser1 - (long)(ala) + 1; +} /* code */ + + +void protdist_cats() +{ + /* define categories of amino acids */ + aas b; + + /* fundamental subgroups */ + cat[0] = 1; /* for alanine */ + cat[(long)cys - (long)ala] = 1; + cat[(long)met - (long)ala] = 2; + cat[(long)val - (long)ala] = 3; + cat[(long)leu - (long)ala] = 3; + cat[(long)ileu - (long)ala] = 3; + cat[(long)gly - (long)ala] = 4; + cat[0] = 4; + cat[(long)ser - (long)ala] = 4; + cat[(long)thr - (long)ala] = 4; + cat[(long)pro - (long)ala] = 5; + cat[(long)phe - (long)ala] = 6; + cat[(long)tyr - (long)ala] = 6; + cat[(long)trp - (long)ala] = 6; + cat[(long)glu - (long)ala] = 7; + cat[(long)gln - (long)ala] = 7; + cat[(long)asp - (long)ala] = 7; + cat[(long)asn - (long)ala] = 7; + cat[(long)lys - (long)ala] = 8; + cat[(long)arg - (long)ala] = 8; + cat[(long)his - (long)ala] = 8; + if (whichcat == george) { + /* George, Hunt and Barker: sulfhydryl, small hydrophobic, small hydrophilic, + aromatic, acid/acid-amide/hydrophilic, basic */ + for (b = ala; (long)b <= (long)val; b = (aas)((long)b + 1)) { + if (cat[(long)b - (long)ala] == 3) + cat[(long)b - (long)ala] = 2; + if (cat[(long)b - (long)ala] == 5) + cat[(long)b - (long)ala] = 4; + } + } + if (whichcat == chemical) { + /* Conn and Stumpf: monoamino, aliphatic, heterocyclic, + aromatic, dicarboxylic, basic */ + for (b = ala; (long)b <= (long)val; b = (aas)((long)b + 1)) { + if (cat[(long)b - (long)ala] == 2) + cat[(long)b - (long)ala] = 1; + if (cat[(long)b - (long)ala] == 4) + cat[(long)b - (long)ala] = 3; + } + } + /* Ben Hall's personal opinion */ + if (whichcat != hall) + return; + for (b = ala; (long)b <= (long)val; b = (aas)((long)b + 1)) { + if (cat[(long)b - (long)ala] == 3) + cat[(long)b - (long)ala] = 2; + } +} /* protdist_cats */ + + +void maketrans() +{ + /* Make up transition probability matrix from code and category tables */ + long i, j, k, m, n, s, nb1, nb2; + double x, sum; + long sub[3], newsub[3]; + double f[4], g[4]; + aas b1, b2; + double TEMP, TEMP1, TEMP2, TEMP3; + + for (i = 0; i <= 19; i++) { + pie[i] = 0.0; + for (j = 0; j <= 19; j++) + prob[i][j] = 0.0; + } + f[0] = freqt; + f[1] = freqc; + f[2] = freqa; + f[3] = freqg; + g[0] = freqc + freqt; + g[1] = freqc + freqt; + g[2] = freqa + freqg; + g[3] = freqa + freqg; + TEMP = f[0]; + TEMP1 = f[1]; + TEMP2 = f[2]; + TEMP3 = f[3]; + fracchange = xi * (2 * f[0] * f[1] / g[0] + 2 * f[2] * f[3] / g[2]) + + xv * (1 - TEMP * TEMP - TEMP1 * TEMP1 - TEMP2 * TEMP2 - TEMP3 * TEMP3); + sum = 0.0; + for (i = 0; i <= 3; i++) { + for (j = 0; j <= 3; j++) { + for (k = 0; k <= 3; k++) { + if (trans[i][j][k] != stop) + sum += f[i] * f[j] * f[k]; + } + } + } + for (i = 0; i <= 3; i++) { + sub[0] = i + 1; + for (j = 0; j <= 3; j++) { + sub[1] = j + 1; + for (k = 0; k <= 3; k++) { + sub[2] = k + 1; + b1 = trans[i][j][k]; + for (m = 0; m <= 2; m++) { + s = sub[m]; + for (n = 1; n <= 4; n++) { + memcpy(newsub, sub, sizeof(long) * 3L); + newsub[m] = n; + x = f[i] * f[j] * f[k] / (3.0 * sum); + if (((s == 1 || s == 2) && (n == 3 || n == 4)) || + ((n == 1 || n == 2) && (s == 3 || s == 4))) + x *= xv * f[n - 1]; + else + x *= xi * f[n - 1] / g[n - 1] + xv * f[n - 1]; + b2 = trans[newsub[0] - 1][newsub[1] - 1][newsub[2] - 1]; + if (b1 != stop) { + nb1 = numaa[(long)b1 - (long)ala]; + pie[nb1 - 1] += x; + if (b2 != stop) { + nb2 = numaa[(long)b2 - (long)ala]; + if (cat[(long)b1 - (long)ala] != cat[(long)b2 - (long)ala]) { + prob[nb1 - 1][nb2 - 1] += x * ease; + prob[nb1 - 1][nb1 - 1] += x * (1.0 - ease); + } else + prob[nb1 - 1][nb2 - 1] += x; + } else + prob[nb1 - 1][nb1 - 1] += x; + } + } + } + } + } + } + for (i = 0; i <= 19; i++) + prob[i][i] -= pie[i]; + for (i = 0; i <= 19; i++) { + for (j = 0; j <= 19; j++) + prob[i][j] /= sqrt(pie[i] * pie[j]); + } + /* computes pi^(1/2)*B*pi^(-1/2) */ +} /* maketrans */ + + +void givens(double (*a)[20], long i, long j, long n, double ctheta, + double stheta, boolean left) +{ /* Givens transform at i,j for 1..n with angle theta */ + long k; + double d; + + for (k = 0; k < n; k++) { + if (left) { + d = ctheta * a[i - 1][k] + stheta * a[j - 1][k]; + a[j - 1][k] = ctheta * a[j - 1][k] - stheta * a[i - 1][k]; + a[i - 1][k] = d; + } else { + d = ctheta * a[k][i - 1] + stheta * a[k][j - 1]; + a[k][j - 1] = ctheta * a[k][j - 1] - stheta * a[k][i - 1]; + a[k][i - 1] = d; + } + } +} /* givens */ + + +void coeffs(double x, double y, double *c, double *s, double accuracy) +{ /* compute cosine and sine of theta */ + double root; + + root = sqrt(x * x + y * y); + if (root < accuracy) { + *c = 1.0; + *s = 0.0; + } else { + *c = x / root; + *s = y / root; + } +} /* coeffs */ + + +void tridiag(double (*a)[20], long n, double accuracy) +{ /* Givens tridiagonalization */ + long i, j; + double s, c; + + for (i = 2; i < n; i++) { + for (j = i + 1; j <= n; j++) { + coeffs(a[i - 2][i - 1], a[i - 2][j - 1], &c, &s,accuracy); + givens(a, i, j, n, c, s, true); + givens(a, i, j, n, c, s, false); + givens(eigvecs, i, j, n, c, s, true); + } + } +} /* tridiag */ + + +void shiftqr(double (*a)[20], long n, double accuracy) +{ /* QR eigenvalue-finder */ + long i, j; + double approx, s, c, d, TEMP, TEMP1; + + for (i = n; i >= 2; i--) { + do { + TEMP = a[i - 2][i - 2] - a[i - 1][i - 1]; + TEMP1 = a[i - 1][i - 2]; + d = sqrt(TEMP * TEMP + TEMP1 * TEMP1); + approx = a[i - 2][i - 2] + a[i - 1][i - 1]; + if (a[i - 1][i - 1] < a[i - 2][i - 2]) + approx = (approx - d) / 2.0; + else + approx = (approx + d) / 2.0; + for (j = 0; j < i; j++) + a[j][j] -= approx; + for (j = 1; j < i; j++) { + coeffs(a[j - 1][j - 1], a[j][j - 1], &c, &s, accuracy); + givens(a, j, j + 1, i, c, s, true); + givens(a, j, j + 1, i, c, s, false); + givens(eigvecs, j, j + 1, n, c, s, true); + } + for (j = 0; j < i; j++) + a[j][j] += approx; + } while (fabs(a[i - 1][i - 2]) > accuracy); + } +} /* shiftqr */ + + +void qreigen(double (*prob)[20], long n) +{ /* QR eigenvector/eigenvalue method for symmetric matrix */ + double accuracy; + long i, j; + + accuracy = 1.0e-6; + for (i = 0; i < n; i++) { + for (j = 0; j < n; j++) + eigvecs[i][j] = 0.0; + eigvecs[i][i] = 1.0; + } + tridiag(prob, n, accuracy); + shiftqr(prob, n, accuracy); + for (i = 0; i < n; i++) + eig[i] = prob[i][i]; + for (i = 0; i <= 19; i++) { + for (j = 0; j <= 19; j++) + prob[i][j] = sqrt(pie[j]) * eigvecs[i][j]; + } + /* prob[i][j] is the value of U' times pi^(1/2) */ +} /* qreigen */ + + +void jtteigen() +{ /* eigenanalysis for JTT matrix, precomputed */ + memcpy(prob,jttprobs,sizeof(jttprobs)); + memcpy(eig,jtteigs,sizeof(jtteigs)); + fracchange = 0.01; +} /* jtteigen */ + + +void pmbeigen() +{ /* eigenanalysis for PMB matrix, precomputed */ + memcpy(prob,pmbprobs,sizeof(pmbprobs)); + memcpy(eig,pmbeigs,sizeof(pmbeigs)); + fracchange = 1.0; +} /* pmbeigen */ + + +void pameigen() +{ /* eigenanalysis for PAM matrix, precomputed */ + memcpy(prob,pamprobs,sizeof(pamprobs)); + memcpy(eig,pameigs,sizeof(pameigs)); + fracchange = 0.01; +} /* pameigen */ + + +void predict(long nb1, long nb2, long cat) +{ /* make contribution to prediction of this aa pair */ + long m; + double TEMP; + + for (m = 0; m <= 19; m++) { + if (gama || invar) + elambdat = exp(-cvi*log(1.0-rate[cat-1]*tt*(eig[m]/(1.0-invarfrac))/cvi)); + else + elambdat = exp(rate[cat-1]*tt * eig[m]); + q = prob[m][nb1 - 1] * prob[m][nb2 - 1] * elambdat; + p += q; + if (!gama && !invar) + dp += rate[cat-1]*eig[m] * q; + else + dp += (rate[cat-1]*eig[m]/(1.0-rate[cat-1]*tt*(eig[m]/(1.0-invarfrac))/cvi)) * q; + TEMP = eig[m]; + if (!gama && !invar) + d2p += TEMP * TEMP * q; + else + d2p += (rate[cat-1]*rate[cat-1]*eig[m]*eig[m]*(1.0+1.0/cvi)/ + ((1.0-rate[cat-1]*tt*eig[m]/cvi) + *(1.0-rate[cat-1]*tt*eig[m]/cvi))) * q; + } + if (nb1 == nb2) { + p *= (1.0 - invarfrac); + p += invarfrac; + } + dp *= (1.0 - invarfrac); + d2p *= (1.0 - invarfrac); +} /* predict */ + +void makedists() +{ /* compute the distances */ + long i, j, k, m, n, itterations, nb1, nb2, cat; + double delta, lnlike, slope, curv; + boolean neginfinity, inf, overlap; + aas b1, b2; + + if (!(printdata || similarity)) + fprintf(outfile, "%5ld\n", spp); + if (progress) + printf("Computing distances:\n"); + for (i = 1; i <= spp; i++) { + if (progress) + printf(" "); + if (progress) { + for (j = 0; j < nmlngth; j++) + putchar(nayme[i - 1][j]); + } + if (progress) { + printf(" "); + fflush(stdout); + } + if (similarity) + d[i-1][i-1] = 1.0; + else + d[i-1][i-1] = 0.0; + for (j = 0; j <= i - 2; j++) { + if (!(kimura || similarity)) { + if (usejtt || usepmb || usepam) + tt = 0.1/fracchange; + else + tt = 1.0; + delta = tt / 2.0; + itterations = 0; + inf = false; + do { + lnlike = 0.0; + slope = 0.0; + curv = 0.0; + neginfinity = false; + overlap = false; + for (k = 0; k < chars; k++) { + if (oldweight[k] > 0) { + cat = category[k]; + b1 = gnode[i - 1][k]; + b2 = gnode[j][k]; + if (b1 != stop && b1 != del && b1 != quest && b1 != unk && + b2 != stop && b2 != del && b2 != quest && b2 != unk) { + overlap = true; + p = 0.0; + dp = 0.0; + d2p = 0.0; + nb1 = numaa[(long)b1 - (long)ala]; + nb2 = numaa[(long)b2 - (long)ala]; + if (b1 != asx && b1 != glx && b2 != asx && b2 != glx) + predict(nb1, nb2, cat); + else { + if (b1 == asx) { + if (b2 == asx) { + predict(3L, 3L, cat); + predict(3L, 4L, cat); + predict(4L, 3L, cat); + predict(4L, 4L, cat); + } else { + if (b2 == glx) { + predict(3L, 6L, cat); + predict(3L, 7L, cat); + predict(4L, 6L, cat); + predict(4L, 7L, cat); + } else { + predict(3L, nb2, cat); + predict(4L, nb2, cat); + } + } + } else { + if (b1 == glx) { + if (b2 == asx) { + predict(6L, 3L, cat); + predict(6L, 4L, cat); + predict(7L, 3L, cat); + predict(7L, 4L, cat); + } else { + if (b2 == glx) { + predict(6L, 6L, cat); + predict(6L, 7L, cat); + predict(7L, 6L, cat); + predict(7L, 7L, cat); + } else { + predict(6L, nb2, cat); + predict(7L, nb2, cat); + } + } + } else { + if (b2 == asx) { + predict(nb1, 3L, cat); + predict(nb1, 4L, cat); + predict(nb1, 3L, cat); + predict(nb1, 4L, cat); + } else if (b2 == glx) { + predict(nb1, 6L, cat); + predict(nb1, 7L, cat); + predict(nb1, 6L, cat); + predict(nb1, 7L, cat); + } + } + } + } + if (p <= 0.0) + neginfinity = true; + else { + lnlike += oldweight[k]*log(p); + slope += oldweight[k]*dp / p; + curv += oldweight[k]*(d2p / p - dp * dp / (p * p)); + } + } + } + } + itterations++; + if (!overlap){ + printf("\nWARNING: NO OVERLAP BETWEEN SEQUENCES %ld AND %ld; -1.0 WAS WRITTEN\n", i, j+1); + tt = -1.0/fracchange; + itterations = 20; + inf = true; + } else if (!neginfinity) { + if (curv < 0.0) { + tt -= slope / curv; + if (tt > 10000.0) { + printf("\nWARNING: INFINITE DISTANCE BETWEEN SPECIES %ld AND %ld; -1.0 WAS WRITTEN\n", i, j+1); + tt = -1.0/fracchange; + inf = true; + itterations = 20; + } + } + else { + if ((slope > 0.0 && delta < 0.0) || (slope < 0.0 && delta > 0.0)) + delta /= -2; + tt += delta; + } + } else { + delta /= -2; + tt += delta; + } + if (tt < protepsilon && !inf) + tt = protepsilon; + } while (itterations != 20); + } else { + m = 0; + n = 0; + for (k = 0; k < chars; k++) { + b1 = gnode[i - 1][k]; + b2 = gnode[j][k]; + if ((((long)b1 <= (long)val) || ((long)b1 == (long)ser)) + && (((long)b2 <= (long)val) || ((long)b2 == (long)ser))) { + if (b1 == b2) + m++; + n++; + } + } + p = 1 - (double)m / n; + if (kimura) { + dp = 1.0 - p - 0.2 * p * p; + if (dp < 0.0) { + printf( +"\nDISTANCE BETWEEN SEQUENCES %3ld AND %3ld IS TOO LARGE FOR KIMURA FORMULA\n", + i, j + 1); + tt = -1.0; + } else + tt = -log(dp); + } else { /* if similarity */ + tt = 1.0 - p; + } + } + d[i - 1][j] = fracchange * tt; + d[j][i - 1] = d[i - 1][j]; + if (progress) { + putchar('.'); + fflush(stdout); + } + } + if (progress) { + putchar('\n'); + fflush(stdout); + } + } + if (!similarity) { + for (i = 0; i < spp; i++) { + for (j = 0; j < nmlngth; j++) + putc(nayme[i][j], outfile); + k = spp; + for (j = 1; j <= k; j++) { + fprintf(outfile, "%10.6f", d[i][j - 1]); + if ((j + 1) % 7 == 0 && j < k) + putc('\n', outfile); + } + putc('\n', outfile); + } + } else { + for (i = 0; i < spp; i += 6) { + if ((i+6) < spp) + n = i+6; + else + n = spp; + fprintf(outfile, " "); + for (j = i; j < n ; j++) { + for (k = 0; k < (nmlngth-2); k++) + putc(nayme[j][k], outfile); + putc(' ', outfile); + putc(' ', outfile); + } + putc('\n', outfile); + for (j = 0; j < spp; j++) { + for (k = 0; k < nmlngth; k++) + putc(nayme[j][k], outfile); + if ((i+6) < spp) + n = i+6; + else + n = spp; + for (k = i; k < n ; k++) + fprintf(outfile, "%10.6f", d[j][k]); + putc('\n', outfile); + } + putc('\n', outfile); + } + } + if (progress) + printf("\nOutput written to file \"%s\"\n\n", outfilename); +} /* makedists */ + + +int main(int argc, Char *argv[]) +{ /* ML Protein distances by PMB, JTT, PAM or categories model */ +#ifdef MAC + argc = 1; /* macsetup("Protdist",""); */ + argv[0] = "Protdist"; +#endif + init(argc, argv); + openfile(&infile,INFILE,"input file","r",argv[0],infilename); + openfile(&outfile,OUTFILE,"output file","w",argv[0],outfilename); + ibmpc = IBMCRT; + ansi = ANSICRT; + mulsets = false; + datasets = 1; + firstset = true; + doinit(); + if (!(kimura || similarity)) + code(); + if (!(usejtt || usepmb || usepam || kimura || similarity)) { + protdist_cats(); + maketrans(); + qreigen(prob, 20L); + } else { + if (kimura || similarity) + fracchange = 1.0; + else { + if (usejtt) + jtteigen(); + else { + if (usepmb) + pmbeigen(); + else + pameigen(); + } + } + } + if (ctgry) + openfile(&catfile,CATFILE,"categories file","r",argv[0],catfilename); + if (weights || justwts) + openfile(&weightfile,WEIGHTFILE,"weights file","r",argv[0],weightfilename); + for (ith = 1; ith <= datasets; ith++) { + doinput(); + if (ith == 1) + firstset = false; + if ((datasets > 1) && progress) + printf("\nData set # %ld:\n\n", ith); + makedists(); + } + FClose(outfile); + FClose(infile); +#ifdef MAC + fixmacfile(outfilename); +#endif + return 0; +} /* Protein distances */ + diff --git a/forester/archive/RIO/others/phylip_mod/src/protpars.c b/forester/archive/RIO/others/phylip_mod/src/protpars.c new file mode 100644 index 0000000..6020255 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/protpars.c @@ -0,0 +1,1925 @@ + +#include "phylip.h" +#include "seq.h" + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +#define maxtrees 100 /* maximum number of tied trees stored */ + +typedef enum { + universal, ciliate, mito, vertmito, flymito, yeastmito +} codetype; + +/* nodes will form a binary tree */ + +typedef struct gseq { + seqptr seq; + struct gseq *next; +} gseq; + +#ifndef OLDC +/* function prototypes */ +void protgnu(gseq **); +void protchuck(gseq *); +void code(void); +void setup(void); +void getoptions(void); +void protalloctree(void); +void allocrest(void); +void doinit(void); +void protinputdata(void); + +void protmakevalues(void); +void doinput(void); +void protfillin(node *, node *, node *); +void protpreorder(node *); +void protadd(node *, node *, node *); +void protre_move(node **, node **); +void evaluate(node *); +void protpostorder(node *); +void protreroot(node *); +void protsavetraverse(node *, long *, boolean *); + +void protsavetree(long *, boolean *); +void tryadd(node *, node **, node **); +void addpreorder(node *, node *, node *); +void tryrearr(node *, boolean *); +void repreorder(node *, boolean *); +void rearrange(node **); +void protgetch(Char *); +void protaddelement(node **, long *, long *, boolean *); +void prottreeread(void); +void protancestset(long *, long *, long *, long *, long *); + +void prothyprint(long , long , boolean *, node *, boolean *, boolean *); +void prothyptrav(node *, sitearray *, long, long, long *, boolean *, + sitearray); +void prothypstates(long *); +void describe(void); +void maketree(void); +void reallocnode(node* p); +void reallocchars(void); +/* function prototypes */ +#endif + + + +Char infilename[FNMLNGTH], outfilename[FNMLNGTH], intreename[FNMLNGTH], outtreename[FNMLNGTH], weightfilename[FNMLNGTH]; +node *root; +long chars, col, msets, ith, njumble, jumb; +/* chars = number of sites in actual sequences */ +long inseed, inseed0; +boolean jumble, usertree, weights, thresh, trout, progress, stepbox, + justwts, ancseq, mulsets, firstset; +codetype whichcode; +long fullset, fulldel; +pointarray treenode; /* pointers to all nodes in tree */ +double threshold; +steptr threshwt; +longer seed; +long *enterorder; +sitearray translate[(long)quest - (long)ala + 1]; +aas trans[4][4][4]; +long **fsteps; +bestelm *bestrees; +boolean dummy; +gseq *garbage; +node *temp, *temp1; +Char ch; +aas tmpa; +char *progname; + +/* Local variables for maketree, propagated globally for c version: */ +long minwhich; +double like, bestyet, bestlike, minsteps, bstlike2; +boolean lastrearr, recompute; +node *there; +double nsteps[maxuser]; +long *place; +boolean *names; + + +void protgnu(gseq **p) +{ + /* this and the following are do-it-yourself garbage collectors. + Make a new node or pull one off the garbage list */ + if (garbage != NULL) { + *p = garbage; + free((*p)->seq); + (*p)->seq = (seqptr)Malloc(chars*sizeof(sitearray)); + garbage = garbage->next; + } else { + *p = (gseq *)Malloc(sizeof(gseq)); + (*p)->seq = (seqptr)Malloc(chars*sizeof(sitearray)); + } + (*p)->next = NULL; +} /* protgnu */ + + +void protchuck(gseq *p) +{ + /* collect garbage on p -- put it on front of garbage list */ + p->next = garbage; + garbage = p; +} /* protchuck */ + + +void code() +{ + /* make up table of the code 1 = u, 2 = c, 3 = a, 4 = g */ + trans[0][0][0] = phe; + trans[0][0][1] = phe; + trans[0][0][2] = leu; + trans[0][0][3] = leu; + trans[0][1][0] = ser1; + trans[0][1][1] = ser1; + trans[0][1][2] = ser1; + trans[0][1][3] = ser1; + trans[0][2][0] = tyr; + trans[0][2][1] = tyr; + trans[0][2][2] = stop; + trans[0][2][3] = stop; + trans[0][3][0] = cys; + trans[0][3][1] = cys; + trans[0][3][2] = stop; + trans[0][3][3] = trp; + trans[1][0][0] = leu; + trans[1][0][1] = leu; + trans[1][0][2] = leu; + trans[1][0][3] = leu; + trans[1][1][0] = pro; + trans[1][1][1] = pro; + trans[1][1][2] = pro; + trans[1][1][3] = pro; + trans[1][2][0] = his; + trans[1][2][1] = his; + trans[1][2][2] = gln; + trans[1][2][3] = gln; + trans[1][3][0] = arg; + trans[1][3][1] = arg; + trans[1][3][2] = arg; + trans[1][3][3] = arg; + trans[2][0][0] = ileu; + trans[2][0][1] = ileu; + trans[2][0][2] = ileu; + trans[2][0][3] = met; + trans[2][1][0] = thr; + trans[2][1][1] = thr; + trans[2][1][2] = thr; + trans[2][1][3] = thr; + trans[2][2][0] = asn; + trans[2][2][1] = asn; + trans[2][2][2] = lys; + trans[2][2][3] = lys; + trans[2][3][0] = ser2; + trans[2][3][1] = ser2; + trans[2][3][2] = arg; + trans[2][3][3] = arg; + trans[3][0][0] = val; + trans[3][0][1] = val; + trans[3][0][2] = val; + trans[3][0][3] = val; + trans[3][1][0] = ala; + trans[3][1][1] = ala; + trans[3][1][2] = ala; + trans[3][1][3] = ala; + trans[3][2][0] = asp; + trans[3][2][1] = asp; + trans[3][2][2] = glu; + trans[3][2][3] = glu; + trans[3][3][0] = gly; + trans[3][3][1] = gly; + trans[3][3][2] = gly; + trans[3][3][3] = gly; + if (whichcode == mito) + trans[0][3][2] = trp; + if (whichcode == vertmito) { + trans[0][3][2] = trp; + trans[2][3][2] = stop; + trans[2][3][3] = stop; + trans[2][0][2] = met; + } + if (whichcode == flymito) { + trans[0][3][2] = trp; + trans[2][0][2] = met; + trans[2][3][2] = ser2; + } + if (whichcode == yeastmito) { + trans[0][3][2] = trp; + trans[1][0][2] = thr; + trans[2][0][2] = met; + } +} /* code */ + + +void setup() +{ + /* set up set table to get aasets from aas */ + aas a, b; + long i, j, k, l, s; + + for (a = ala; (long)a <= (long)stop; a = (aas)((long)a + 1)) { + translate[(long)a - (long)ala][0] = 1L << ((long)a); + translate[(long)a - (long)ala][1] = 1L << ((long)a); + } + for (i = 0; i <= 3; i++) { + for (j = 0; j <= 3; j++) { + for (k = 0; k <= 3; k++) { + for (l = 0; l <= 3; l++) { + translate[(long)trans[i][j][k]][1] |= (1L << (long)trans[l][j][k]); + translate[(long)trans[i][j][k]][1] |= (1L << (long)trans[i][l][k]); + translate[(long)trans[i][j][k]][1] |= (1L << (long)trans[i][j][l]); + } + } + } + } + translate[(long)del - (long)ala][1] = 1L << ((long)del); + fulldel = (1L << ((long)stop + 1)) - (1L << ((long)ala)); + fullset = fulldel & (~(1L << ((long)del))); + translate[(long)asx - (long)ala][0] + = (1L << ((long)asn)) | (1L << ((long)asp)); + translate[(long)glx - (long)ala][0] + = (1L << ((long)gln)) | (1L << ((long)glu)); + translate[(long)ser - (long)ala][0] + = (1L << ((long)ser1)) | (1L << ((long)ser2)); + translate[(long)unk - (long)ala][0] = fullset; + translate[(long)quest - (long)ala][0] = fulldel; + translate[(long)asx - (long)ala][1] = translate[(long)asn - (long)ala][1] + | translate[(long)asp - (long)ala][1]; + translate[(long)glx - (long)ala][1] = translate[(long)gln - (long)ala][1] + | translate[(long)glu - (long)ala][1]; + translate[(long)ser - (long)ala][1] = translate[(long)ser1 - (long)ala][1] + | translate[(long)ser2 - (long)ala][1]; + translate[(long)unk - (long)ala][1] = fullset; + translate[(long)quest - (long)ala][1] = fulldel; + for (a = ala; (long)a <= (long)quest; a = (aas)((long)a + 1)) { + s = 0; + for (b = ala; (long)b <= (long)stop; b = (aas)((long)b + 1)) { + if (((1L << ((long)b)) & translate[(long)a - (long)ala][1]) != 0) + s |= translate[(long)b - (long)ala][1]; + } + translate[(long)a - (long)ala][2] = s; + } +} /* setup */ + + +void getoptions() +{ + /* interactively set options */ + long loopcount, loopcount2; + Char ch, ch2; + + fprintf(outfile, "\nProtein parsimony algorithm, version %s\n\n",VERSION); + putchar('\n'); + jumble = false; + njumble = 1; + outgrno = 1; + outgropt = false; + thresh = false; + trout = true; + usertree = false; + weights = false; + whichcode = universal; + printdata = false; + progress = true; + treeprint = true; + stepbox = false; + ancseq = false; + dotdiff = true; + interleaved = true; + loopcount = 0; + for (;;) { + cleerhome(); + printf("\nProtein parsimony algorithm, version %s\n\n",VERSION); + printf("Setting for this run:\n"); + printf(" U Search for best tree? %s\n", + (usertree ? "No, use user trees in input file" : "Yes")); + if (!usertree) { + printf(" J Randomize input order of sequences?"); + if (jumble) + printf(" Yes (seed =%8ld,%3ld times)\n", inseed0, njumble); + else + printf(" No. Use input order\n"); + } + printf(" O Outgroup root?"); + if (outgropt) + printf(" Yes, at sequence number%3ld\n", outgrno); + else + printf(" No, use as outgroup species%3ld\n", outgrno); + printf(" T Use Threshold parsimony?"); + if (thresh) + printf(" Yes, count steps up to%4.1f per site\n", threshold); + else + printf(" No, use ordinary parsimony\n"); + printf(" C Use which genetic code? %s\n", + (whichcode == universal) ? "Universal" : + (whichcode == ciliate) ? "Ciliate" : + (whichcode == mito) ? "Universal mitochondrial" : + (whichcode == vertmito) ? "Vertebrate mitochondrial" : + (whichcode == flymito) ? "Fly mitochondrial" : + (whichcode == yeastmito) ? "Yeast mitochondrial" : ""); + printf(" W Sites weighted? %s\n", + (weights ? "Yes" : "No")); + printf(" M Analyze multiple data sets?"); + if (mulsets) + printf(" Yes, %2ld %s\n", msets, + (justwts ? "sets of weights" : "data sets")); + else + printf(" No\n"); + printf(" I Input sequences interleaved? %s\n", + (interleaved ? "Yes" : "No")); + printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", + (ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)")); + printf(" 1 Print out the data at start of run %s\n", + (printdata ? "Yes" : "No")); + printf(" 2 Print indications of progress of run %s\n", + (progress ? "Yes" : "No")); + printf(" 3 Print out tree %s\n", + (treeprint ? "Yes" : "No")); + printf(" 4 Print out steps in each site %s\n", + (stepbox ? "Yes" : "No")); + printf(" 5 Print sequences at all nodes of tree %s\n", + (ancseq ? "Yes" : "No")); + if (ancseq || printdata) + printf(" . Use dot-differencing to display them %s\n", + dotdiff ? "Yes" : "No"); + printf(" 6 Write out trees onto tree file? %s\n", + (trout ? "Yes" : "No")); + if(weights && justwts){ + printf( + "WARNING: W option and Multiple Weights options are both on. "); + printf( + "The W menu option is unnecessary and has no additional effect. \n"); + } + printf( + "\nAre these settings correct? (type Y or the letter for one to change)\n"); + scanf("%c%*[^\n]", &ch); + getchar(); + uppercase(&ch); + if (ch == 'Y') + break; + if (strchr("WCJOTUMI12345.60",ch) != NULL) { + switch (ch) { + + case 'J': + jumble = !jumble; + if (jumble) + initjumble(&inseed, &inseed0, seed, &njumble); + else njumble = 1; + break; + + case 'W': + weights = !weights; + break; + + case 'O': + outgropt = !outgropt; + if (outgropt) + initoutgroup(&outgrno, spp); + else outgrno = 1; + break; + + case 'T': + thresh = !thresh; + if (thresh) + initthreshold(&threshold); + break; + + case 'C': + printf("\nWhich genetic code?\n"); + printf(" type for\n\n"); + printf(" U Universal\n"); + printf(" M Mitochondrial\n"); + printf(" V Vertebrate mitochondrial\n"); + printf(" F Fly mitochondrial\n"); + printf(" Y Yeast mitochondrial\n\n"); + loopcount2 = 0; + do { + printf("type U, M, V, F, or Y\n"); + scanf("%c%*[^\n]", &ch); + getchar(); + if (ch == '\n') + ch = ' '; + uppercase(&ch); + countup(&loopcount2, 10); + } while (ch != 'U' && ch != 'M' && ch != 'V' + && ch != 'F' && ch != 'Y'); + switch (ch) { + + case 'U': + whichcode = universal; + break; + + case 'M': + whichcode = mito; + break; + + case 'V': + whichcode = vertmito; + break; + + case 'F': + whichcode = flymito; + break; + + case 'Y': + whichcode = yeastmito; + break; + } + break; + + case 'M': + mulsets = !mulsets; + if (mulsets){ + printf("Multiple data sets or multiple weights?"); + loopcount2 = 0; + do { + printf(" (type D or W)\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%c%*[^\n]", &ch2); + getchar(); + if (ch2 == '\n') + ch2 = ' '; + uppercase(&ch2); + countup(&loopcount2, 10); + } while ((ch2 != 'W') && (ch2 != 'D')); + justwts = (ch2 == 'W'); + if (justwts) + justweights(&msets); + else + initdatasets(&msets); + if (!jumble) { + jumble = true; + initjumble(&inseed, &inseed0, seed, &njumble); + } + } + break; + + case 'I': + interleaved = !interleaved; + break; + + case 'U': + usertree = !usertree; + break; + + case '0': + initterminal(&ibmpc, &ansi); + break; + + case '1': + printdata = !printdata; + break; + + case '2': + progress = !progress; + break; + + case '3': + treeprint = !treeprint; + break; + + case '4': + stepbox = !stepbox; + break; + + case '5': + ancseq = !ancseq; + break; + + case '.': + dotdiff = !dotdiff; + break; + + case '6': + trout = !trout; + break; + } + } else + printf("Not a possible option!\n"); + countup(&loopcount, 100); + } +} /* getoptions */ + + +void protalloctree() +{ /* allocate treenode dynamically */ + long i, j; + node *p, *q; + + treenode = (pointarray)Malloc(nonodes*sizeof(node *)); + for (i = 0; i < (spp); i++) { + treenode[i] = (node *)Malloc(sizeof(node)); + treenode[i]->numsteps = (steptr)Malloc(chars*sizeof(long)); + treenode[i]->siteset = (seqptr)Malloc(chars*sizeof(sitearray)); + treenode[i]->seq = (aas *)Malloc(chars*sizeof(aas)); + } + for (i = spp; i < (nonodes); i++) { + q = NULL; + for (j = 1; j <= 3; j++) { + p = (node *)Malloc(sizeof(node)); + p->numsteps = (steptr)Malloc(chars*sizeof(long)); + p->siteset = (seqptr)Malloc(chars*sizeof(sitearray)); + p->seq = (aas *)Malloc(chars*sizeof(aas)); + p->next = q; + q = p; + } + p->next->next->next = p; + treenode[i] = p; + } +} /* protalloctree */ + + +void reallocnode(node* p) +{ + free(p->numsteps); + free(p->siteset); + free(p->seq); + p->numsteps = (steptr)Malloc(chars*sizeof(long)); + p->siteset = (seqptr)Malloc(chars*sizeof(sitearray)); + p->seq = (aas *)Malloc(chars*sizeof(aas)); +} + + +void reallocchars(void) +{ /* reallocates variables that are dependand on the number of chars + * do we need to reallocate the garbage list too? */ + long i; + node *p; + + if (usertree) + for (i = 0; i < maxuser; i++) { + free(fsteps[i]); + fsteps[i] = (long *)Malloc(chars*sizeof(long)); + } + + for (i = 0; i < nonodes; i++) { + reallocnode(treenode[i]); + if (i >= spp) { + p=treenode[i]->next; + while (p != treenode[i]) { + reallocnode(p); + p = p->next; + } + } + } + + free(weight); + free(threshwt); + free(temp->numsteps); + free(temp->siteset); + free(temp->seq); + free(temp1->numsteps); + free(temp1->siteset); + free(temp1->seq); + + weight = (steptr)Malloc(chars*sizeof(long)); + threshwt = (steptr)Malloc(chars*sizeof(long)); + temp->numsteps = (steptr)Malloc(chars*sizeof(long)); + temp->siteset = (seqptr)Malloc(chars*sizeof(sitearray)); + temp->seq = (aas *)Malloc(chars*sizeof(aas)); + temp1->numsteps = (steptr)Malloc(chars*sizeof(long)); + temp1->siteset = (seqptr)Malloc(chars*sizeof(sitearray)); + temp1->seq = (aas *)Malloc(chars*sizeof(aas)); +} + + +void allocrest() +{ /* allocate remaining global arrays and variables dynamically */ + long i; + + if (usertree) { + fsteps = (long **)Malloc(maxuser*sizeof(long *)); + for (i = 0; i < maxuser; i++) + fsteps[i] = (long *)Malloc(chars*sizeof(long)); + } + bestrees = (bestelm *)Malloc(maxtrees*sizeof(bestelm)); + for (i = 1; i <= maxtrees; i++) + bestrees[i - 1].btree = (long *)Malloc(spp*sizeof(long)); + nayme = (naym *)Malloc(spp*sizeof(naym)); + enterorder = (long *)Malloc(spp*sizeof(long)); + place = (long *)Malloc(nonodes*sizeof(long)); + weight = (steptr)Malloc(chars*sizeof(long)); + threshwt = (steptr)Malloc(chars*sizeof(long)); + temp = (node *)Malloc(sizeof(node)); + temp->numsteps = (steptr)Malloc(chars*sizeof(long)); + temp->siteset = (seqptr)Malloc(chars*sizeof(sitearray)); + temp->seq = (aas *)Malloc(chars*sizeof(aas)); + temp1 = (node *)Malloc(sizeof(node)); + temp1->numsteps = (steptr)Malloc(chars*sizeof(long)); + temp1->siteset = (seqptr)Malloc(chars*sizeof(sitearray)); + temp1->seq = (aas *)Malloc(chars*sizeof(aas)); +} /* allocrest */ + + +void doinit() +{ + /* initializes variables */ + + inputnumbers(&spp, &chars, &nonodes, 1); + getoptions(); + if (printdata) + fprintf(outfile, "%2ld species, %3ld sites\n\n", spp, chars); + protalloctree(); + allocrest(); +} /* doinit*/ + + +void protinputdata() +{ + /* input the names and sequences for each species */ + long i, j, k, l, aasread, aasnew = 0; + Char charstate; + boolean allread, done; + aas aa; /* temporary amino acid for input */ + + if (printdata) + headings(chars, "Sequences", "---------"); + aasread = 0; + allread = false; + while (!(allread)) { + /* eat white space -- if the separator line has spaces on it*/ + do { + charstate = gettc(infile); + } while (charstate == ' ' || charstate == '\t'); + ungetc(charstate, infile); + if (eoln(infile)) { + scan_eoln(infile); + } + i = 1; + while (i <= spp) { + if ((interleaved && aasread == 0) || !interleaved) + initname(i - 1); + j = interleaved ? aasread : 0; + done = false; + while (!done && !eoff(infile)) { + if (interleaved) + done = true; + while (j < chars && !(eoln(infile) || eoff(infile))) { + charstate = gettc(infile); + if (charstate == '\n' || charstate == '\t') + charstate = ' '; + if (charstate == ' ' || (charstate >= '0' && charstate <= '9')) + continue; + uppercase(&charstate); + if ((!isalpha(charstate) && charstate != '?' && + charstate != '-' && charstate != '*') || charstate == 'J' || + charstate == 'O' || charstate == 'U') { + printf("WARNING -- BAD AMINO ACID:%c",charstate); + printf(" AT POSITION%5ld OF SPECIES %3ld\n",j,i); + exxit(-1); + } + j++; + aa = (charstate == 'A') ? ala : + (charstate == 'B') ? asx : + (charstate == 'C') ? cys : + (charstate == 'D') ? asp : + (charstate == 'E') ? glu : + (charstate == 'F') ? phe : + (charstate == 'G') ? gly : aa; + aa = (charstate == 'H') ? his : + (charstate == 'I') ? ileu : + (charstate == 'K') ? lys : + (charstate == 'L') ? leu : + (charstate == 'M') ? met : + (charstate == 'N') ? asn : + (charstate == 'P') ? pro : + (charstate == 'Q') ? gln : + (charstate == 'R') ? arg : aa; + aa = (charstate == 'S') ? ser : + (charstate == 'T') ? thr : + (charstate == 'V') ? val : + (charstate == 'W') ? trp : + (charstate == 'X') ? unk : + (charstate == 'Y') ? tyr : + (charstate == 'Z') ? glx : + (charstate == '*') ? stop : + (charstate == '?') ? quest: + (charstate == '-') ? del : aa; + + treenode[i - 1]->seq[j - 1] = aa; + memcpy(treenode[i - 1]->siteset[j - 1], + translate[(long)aa - (long)ala], sizeof(sitearray)); + } + if (interleaved) + continue; + if (j < chars) + scan_eoln(infile); + else if (j == chars) + done = true; + } + if (interleaved && i == 1) + aasnew = j; + scan_eoln(infile); + if ((interleaved && j != aasnew) || ((!interleaved) && j != chars)){ + printf("ERROR: SEQUENCES OUT OF ALIGNMENT\n"); + exxit(-1);} + i++; + } + if (interleaved) { + aasread = aasnew; + allread = (aasread == chars); + } else + allread = (i > spp); + } + if (printdata) { + for (i = 1; i <= ((chars - 1) / 60 + 1); i++) { + for (j = 1; j <= (spp); j++) { + for (k = 0; k < nmlngth; k++) + putc(nayme[j - 1][k], outfile); + fprintf(outfile, " "); + l = i * 60; + if (l > chars) + l = chars; + for (k = (i - 1) * 60 + 1; k <= l; k++) { + if (j > 1 && treenode[j - 1]->seq[k - 1] == treenode[0]->seq[k - 1]) + charstate = '.'; + else { + tmpa = treenode[j-1]->seq[k-1]; + charstate = (tmpa == ala) ? 'A' : + (tmpa == asx) ? 'B' : + (tmpa == cys) ? 'C' : + (tmpa == asp) ? 'D' : + (tmpa == glu) ? 'E' : + (tmpa == phe) ? 'F' : + (tmpa == gly) ? 'G' : + (tmpa == his) ? 'H' : + (tmpa ==ileu) ? 'I' : + (tmpa == lys) ? 'K' : + (tmpa == leu) ? 'L' : charstate; + charstate = (tmpa == met) ? 'M' : + (tmpa == asn) ? 'N' : + (tmpa == pro) ? 'P' : + (tmpa == gln) ? 'Q' : + (tmpa == arg) ? 'R' : + (tmpa == ser) ? 'S' : + (tmpa ==ser1) ? 'S' : + (tmpa ==ser2) ? 'S' : charstate; + charstate = (tmpa == thr) ? 'T' : + (tmpa == val) ? 'V' : + (tmpa == trp) ? 'W' : + (tmpa == unk) ? 'X' : + (tmpa == tyr) ? 'Y' : + (tmpa == glx) ? 'Z' : + (tmpa == del) ? '-' : + (tmpa ==stop) ? '*' : + (tmpa==quest) ? '?' : charstate; + } + putc(charstate, outfile); + if (k % 10 == 0 && k % 60 != 0) + putc(' ', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); +} /* protinputdata */ + + +void protmakevalues() +{ + /* set up fractional likelihoods at tips */ + long i, j; + node *p; + + for (i = 1; i <= nonodes; i++) { + treenode[i - 1]->back = NULL; + treenode[i - 1]->tip = (i <= spp); + treenode[i - 1]->index = i; + for (j = 0; j < (chars); j++) + treenode[i - 1]->numsteps[j] = 0; + if (i > spp) { + p = treenode[i - 1]->next; + while (p != treenode[i - 1]) { + p->back = NULL; + p->tip = false; + p->index = i; + for (j = 0; j < (chars); j++) + p->numsteps[j] = 0; + p = p->next; + } + } + } +} /* protmakevalues */ + + +void doinput() +{ + /* reads the input data */ + long i; + + if (justwts) { + if (firstset) + protinputdata(); + for (i = 0; i < chars; i++) + weight[i] = 1; + inputweights(chars, weight, &weights); + if (justwts) { + fprintf(outfile, "\n\nWeights set # %ld:\n\n", ith); + if (progress) + printf("\nWeights set # %ld:\n\n", ith); + } + if (printdata) + printweights(outfile, 0, chars, weight, "Sites"); + } else { + if (!firstset){ + samenumsp(&chars, ith); + reallocchars(); + } + for (i = 0; i < chars; i++) + weight[i] = 1; + if (weights) { + inputweights(chars, weight, &weights); + } + if (weights) + printweights(outfile, 0, chars, weight, "Sites"); + protinputdata(); + } + if(!thresh) + threshold = spp * 3.0; + for(i = 0 ; i < (chars) ; i++){ + weight[i]*=10; + threshwt[i] = (long)(threshold * weight[i] + 0.5); + } + + protmakevalues(); +} /* doinput */ + + +void protfillin(node *p, node *left, node *rt) +{ + /* sets up for each node in the tree the aa set for site m + at that point and counts the changes. The program + spends much of its time in this function */ + boolean counted, done; + aas aa; + long s = 0; + sitearray ls, rs, qs; + long i, j, m, n; + + for (m = 0; m < chars; m++) { + if (left != NULL) + memcpy(ls, left->siteset[m], sizeof(sitearray)); + if (rt != NULL) + memcpy(rs, rt->siteset[m], sizeof(sitearray)); + if (left == NULL) { + n = rt->numsteps[m]; + memcpy(qs, rs, sizeof(sitearray)); + } + else if (rt == NULL) { + n = left->numsteps[m]; + memcpy(qs, ls, sizeof(sitearray)); + } + else { + n = left->numsteps[m] + rt->numsteps[m]; + if ((ls[0] == rs[0]) && (ls[1] == rs[1]) && (ls[2] == rs[2])) { + qs[0] = ls[0]; + qs[1] = ls[1]; + qs[2] = ls[2]; + } + else { + counted = false; + for (i = 0; (!counted) && (i <= 3); i++) { + switch (i) { + + case 0: + s = ls[0] & rs[0]; + break; + + case 1: + s = (ls[0] & rs[1]) | (ls[1] & rs[0]); + break; + + case 2: + s = (ls[0] & rs[2]) | (ls[1] & rs[1]) | (ls[2] & rs[0]); + break; + + case 3: + s = ls[0] | (ls[1] & rs[2]) | (ls[2] & rs[1]) | rs[0]; + break; + + } + if (s != 0) { + qs[0] = s; + counted = true; + } else + n += weight[m]; + } + switch (i) { + case 1: + qs[1] = qs[0] | (ls[0] & rs[1]) | (ls[1] & rs[0]); + qs[2] = qs[1] | (ls[0] & rs[2]) | (ls[1] & rs[1]) | (ls[2] & rs[0]); + break; + case 2: + qs[1] = qs[0] | (ls[0] & rs[2]) | (ls[1] & rs[1]) | (ls[2] & rs[0]); + qs[2] = qs[1] | ls[0] | (ls[1] & rs[2]) | (ls[2] & rs[1]) | rs[0]; + break; + case 3: + qs[1] = qs[0] | ls[0] | (ls[1] & rs[2]) | (ls[2] & rs[1]) | rs[0]; + qs[2] = qs[1] | ls[1] | (ls[2] & rs[2]) | rs[1]; + break; + case 4: + qs[1] = qs[0] | ls[1] | (ls[2] & rs[2]) | rs[1]; + qs[2] = qs[1] | ls[2] | rs[2]; + break; + } + for (aa = ala; (long)aa <= (long)stop; aa = (aas)((long)aa + 1)) { + done = false; + for (i = 0; (!done) && (i <= 1); i++) { + if (((1L << ((long)aa)) & qs[i]) != 0) { + for (j = i+1; j <= 2; j++) + qs[j] |= translate[(long)aa - (long)ala][j-i]; + done = true; + } + } + } + } + } + p->numsteps[m] = n; + memcpy(p->siteset[m], qs, sizeof(sitearray)); + } +} /* protfillin */ + + +void protpreorder(node *p) +{ + /* recompute number of steps in preorder taking both ancestoral and + descendent steps into account */ + if (p != NULL && !p->tip) { + protfillin (p->next, p->next->next->back, p->back); + protfillin (p->next->next, p->back, p->next->back); + protpreorder (p->next->back); + protpreorder (p->next->next->back); + } +} /* protpreorder */ + + +void protadd(node *below, node *newtip, node *newfork) +{ + /* inserts the nodes newfork and its left descendant, newtip, + to the tree. below becomes newfork's right descendant */ + + if (below != treenode[below->index - 1]) + below = treenode[below->index - 1]; + if (below->back != NULL) + below->back->back = newfork; + newfork->back = below->back; + below->back = newfork->next->next; + newfork->next->next->back = below; + newfork->next->back = newtip; + newtip->back = newfork->next; + if (root == below) + root = newfork; + root->back = NULL; + + if (recompute) { + protfillin (newfork, newfork->next->back, newfork->next->next->back); + protpreorder(newfork); + if (newfork != root) + protpreorder(newfork->back); + } +} /* protadd */ + + +void protre_move(node **item, node **fork) +{ + /* removes nodes item and its ancestor, fork, from the tree. + the new descendant of fork's ancestor is made to be + fork's second descendant (other than item). Also + returns pointers to the deleted nodes, item and fork */ + node *p, *q, *other; + + if ((*item)->back == NULL) { + *fork = NULL; + return; + } + *fork = treenode[(*item)->back->index - 1]; + if ((*item) == (*fork)->next->back) + other = (*fork)->next->next->back; + else other = (*fork)->next->back; + if (root == *fork) + root = other; + p = (*item)->back->next->back; + q = (*item)->back->next->next->back; + if (p != NULL) p->back = q; + if (q != NULL) q->back = p; + (*fork)->back = NULL; + p = (*fork)->next; + do { + p->back = NULL; + p = p->next; + } while (p != (*fork)); + (*item)->back = NULL; + if (recompute) { + protpreorder(other); + if (other != root) protpreorder(other->back); + } +} /* protre_move */ + + +void evaluate(node *r) +{ + /* determines the number of steps needed for a tree. this is the + minimum number of steps needed to evolve sequences on this tree */ + long i, steps, term; + double sum; + + sum = 0.0; + for (i = 0; i < (chars); i++) { + steps = r->numsteps[i]; + if (steps <= threshwt[i]) + term = steps; + else + term = threshwt[i]; + sum += term; + if (usertree && which <= maxuser) + fsteps[which - 1][i] = term; + } + if (usertree && which <= maxuser) { + nsteps[which - 1] = sum; + if (which == 1) { + minwhich = 1; + minsteps = sum; + } else if (sum < minsteps) { + minwhich = which; + minsteps = sum; + } + } + like = -sum; +} /* evaluate */ + + +void protpostorder(node *p) +{ + /* traverses a binary tree, calling PROCEDURE fillin at a + node's descendants before calling fillin at the node */ + if (p->tip) + return; + protpostorder(p->next->back); + protpostorder(p->next->next->back); + protfillin(p, p->next->back, p->next->next->back); +} /* protpostorder */ + + +void protreroot(node *outgroup) +{ + /* reorients tree, putting outgroup in desired position. */ + node *p, *q; + + if (outgroup->back->index == root->index) + return; + p = root->next; + q = root->next->next; + p->back->back = q->back; + q->back->back = p->back; + p->back = outgroup; + q->back = outgroup->back; + outgroup->back->back = q; + outgroup->back = p; +} /* protreroot */ + + +void protsavetraverse(node *p, long *pos, boolean *found) +{ + /* sets BOOLEANs that indicate which way is down */ + p->bottom = true; + if (p->tip) + return; + p->next->bottom = false; + protsavetraverse(p->next->back, pos,found); + p->next->next->bottom = false; + protsavetraverse(p->next->next->back, pos,found); +} /* protsavetraverse */ + + +void protsavetree(long *pos, boolean *found) +{ + /* record in place where each species has to be + added to reconstruct this tree */ + long i, j; + node *p; + boolean done; + + protreroot(treenode[outgrno - 1]); + protsavetraverse(root, pos,found); + for (i = 0; i < (nonodes); i++) + place[i] = 0; + place[root->index - 1] = 1; + for (i = 1; i <= (spp); i++) { + p = treenode[i - 1]; + while (place[p->index - 1] == 0) { + place[p->index - 1] = i; + while (!p->bottom) + p = p->next; + p = p->back; + } + if (i > 1) { + place[i - 1] = place[p->index - 1]; + j = place[p->index - 1]; + done = false; + while (!done) { + place[p->index - 1] = spp + i - 1; + while (!p->bottom) + p = p->next; + p = p->back; + done = (p == NULL); + if (!done) + done = (place[p->index - 1] != j); + } + } + } +} /* protsavetree */ + + +void tryadd(node *p, node **item, node **nufork) +{ + /* temporarily adds one fork and one tip to the tree. + if the location where they are added yields greater + "likelihood" than other locations tested up to that + time, then keeps that location as there */ + long pos; + boolean found; + node *rute, *q; + + if (p == root) + protfillin(temp, *item, p); + else { + protfillin(temp1, *item, p); + protfillin(temp, temp1, p->back); + } + evaluate(temp); + if (lastrearr) { + if (like < bestlike) { + if ((*item) == (*nufork)->next->next->back) { + q = (*nufork)->next; + (*nufork)->next = (*nufork)->next->next; + (*nufork)->next->next = q; + q->next = (*nufork); + } + } + else if (like >= bstlike2) { + recompute = false; + protadd(p, (*item), (*nufork)); + rute = root->next->back; + protsavetree(&pos,&found); + protreroot(rute); + if (like > bstlike2) { + bestlike = bstlike2 = like; + pos = 1; + nextree = 1; + addtree(pos, &nextree, dummy, place, bestrees); + } else { + pos = 0; + findtree(&found, &pos, nextree, place, bestrees); + if (!found) { + if (nextree <= maxtrees) + addtree(pos, &nextree, dummy, place, bestrees); + } + } + protre_move (item, nufork); + recompute = true; + } + } + if (like >= bestyet) { + bestyet = like; + there = p; + } +} /* tryadd */ + + +void addpreorder(node *p, node *item, node *nufork) +{ + /* traverses a binary tree, calling PROCEDURE tryadd + at a node before calling tryadd at its descendants */ + + if (p == NULL) + return; + tryadd(p, &item,&nufork); + if (!p->tip) { + addpreorder(p->next->back, item, nufork); + addpreorder(p->next->next->back, item, nufork); + } +} /* addpreorder */ + + +void tryrearr(node *p, boolean *success) +{ + /* evaluates one rearrangement of the tree. + if the new tree has greater "likelihood" than the old + one sets success := TRUE and keeps the new tree. + otherwise, restores the old tree */ + node *frombelow, *whereto, *forknode, *q; + double oldlike; + + if (p->back == NULL) + return; + forknode = treenode[p->back->index - 1]; + if (forknode->back == NULL) + return; + oldlike = bestyet; + if (p->back->next->next == forknode) + frombelow = forknode->next->next->back; + else + frombelow = forknode->next->back; + whereto = treenode[forknode->back->index - 1]; + if (whereto->next->back == forknode) + q = whereto->next->next->back; + else + q = whereto->next->back; + protfillin(temp1, frombelow, q); + protfillin(temp, temp1, p); + protfillin(temp1, temp, whereto->back); + evaluate(temp1); + if (like <= oldlike) { + if (p == forknode->next->next->back) { + q = forknode->next; + forknode->next = forknode->next->next; + forknode->next->next = q; + q->next = forknode; + } + } + else { + recompute = false; + protre_move(&p, &forknode); + protfillin(whereto, whereto->next->back, whereto->next->next->back); + recompute = true; + protadd(whereto, p, forknode); + *success = true; + bestyet = like; + } +} /* tryrearr */ + + +void repreorder(node *p, boolean *success) +{ + /* traverses a binary tree, calling PROCEDURE tryrearr + at a node before calling tryrearr at its descendants */ + if (p == NULL) + return; + tryrearr(p,success); + if (!p->tip) { + repreorder(p->next->back,success); + repreorder(p->next->next->back,success); + } +} /* repreorder */ + + +void rearrange(node **r) +{ + /* traverses the tree (preorder), finding any local + rearrangement which decreases the number of steps. + if traversal succeeds in increasing the tree's + "likelihood", PROCEDURE rearrange runs traversal again */ + boolean success = true; + while (success) { + success = false; + repreorder(*r, &success); + } +} /* rearrange */ + + +void protgetch(Char *c) +{ + /* get next nonblank character */ + do { + if (eoln(intree)) + scan_eoln(intree); + *c = gettc(intree); + if (*c == '\n' || *c == '\t') + *c = ' '; + } while (!(*c != ' ' || eoff(intree))); +} /* protgetch */ + + +void protaddelement(node **p,long *nextnode,long *lparens,boolean *names) +{ + /* recursive procedure adds nodes to user-defined tree */ + node *q; + long i, n; + boolean found; + Char str[nmlngth]; + + protgetch(&ch); + + if (ch == '(' ) { + if ((*lparens) >= spp - 1) { + printf("\nERROR IN USER TREE: TOO MANY LEFT PARENTHESES\n"); + exxit(-1); + } + (*nextnode)++; + (*lparens)++; + q = treenode[(*nextnode) - 1]; + protaddelement(&q->next->back, nextnode,lparens,names); + q->next->back->back = q->next; + findch(',', &ch, which); + protaddelement(&q->next->next->back, nextnode,lparens,names); + q->next->next->back->back = q->next->next; + findch(')', &ch, which); + *p = q; + return; + } + for (i = 0; i < nmlngth; i++) + str[i] = ' '; + n = 1; + do { + if (ch == '_') + ch = ' '; + str[n - 1] = ch; + if (eoln(intree)) + scan_eoln(intree); + ch = gettc(intree); + n++; + } while (ch != ',' && ch != ')' && ch != ':' && n <= nmlngth); + n = 1; + do { + found = true; + for (i = 0; i < nmlngth; i++) + found = (found && ((str[i] == nayme[n - 1][i]) || + ((nayme[n - 1][i] == '_') && (str[i] == ' ')))); + if (found) { + if (names[n - 1] == false) { + *p = treenode[n - 1]; + names[n - 1] = true; + } else { + printf("\nERROR IN USER TREE: DUPLICATE NAME FOUND -- "); + for (i = 0; i < nmlngth; i++) + putchar(nayme[n - 1][i]); + putchar('\n'); + exxit(-1); + } + } else + n++; + } while (!(n > spp || found)); + if (n <= spp) + return; + printf("CANNOT FIND SPECIES: "); + for (i = 0; i < nmlngth; i++) + putchar(str[i]); + putchar('\n'); +} /* protaddelement */ + + +void prottreeread() +{ + /* read in user-defined tree and set it up */ + long nextnode, lparens, i; + + root = treenode[spp]; + nextnode = spp; + root->back = NULL; + names = (boolean *)Malloc(spp*sizeof(boolean)); + for (i = 0; i < (spp); i++) + names[i] = false; + lparens = 0; + protaddelement(&root, &nextnode,&lparens,names); + if (ch == '[') { + do + ch = gettc(intree); + while (ch != ']'); + ch = gettc(intree); + } + findch(';', &ch, which); + scan_eoln(intree); + free(names); +} /* prottreeread */ + + +void protancestset(long *a, long *b, long *c, long *d, long *k) +{ + /* sets up the aa set array. */ + aas aa; + long s, sa, sb; + long i, j, m, n; + boolean counted; + + counted = false; + *k = 0; + for (i = 0; i <= 5; i++) { + if (*k < 3) { + s = 0; + if (i > 3) + n = i - 3; + else + n = 0; + for (j = n; j <= (i - n); j++) { + if (j < 3) + sa = a[j]; + else + sa = fullset; + for (m = n; m <= (i - j - n); m++) { + if (m < 3) + sb = sa & b[m]; + else + sb = sa; + if (i - j - m < 3) + sb &= c[i - j - m]; + s |= sb; + } + } + if (counted || s != 0) { + d[*k] = s; + (*k)++; + counted = true; + } + } + } + for (i = 0; i <= 1; i++) { + for (aa = ala; (long)aa <= (long)stop; aa = (aas)((long)aa + 1)) { + if (((1L << ((long)aa)) & d[i]) != 0) { + for (j = i + 1; j <= 2; j++) + d[j] |= translate[(long)aa - (long)ala][j - i]; + } + } + } +} /* protancestset */ + + +void prothyprint(long b1, long b2, boolean *bottom, node *r, + boolean *nonzero, boolean *maybe) +{ + /* print out states in sites b1 through b2 at node */ + long i; + boolean dot; + Char ch = 0; + aas aa; + + if (*bottom) { + if (!outgropt) + fprintf(outfile, " "); + else + fprintf(outfile, "root "); + } else + fprintf(outfile, "%3ld ", r->back->index - spp); + if (r->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[r->index - 1][i], outfile); + } else + fprintf(outfile, "%4ld ", r->index - spp); + if (*bottom) + fprintf(outfile, " "); + else if (*nonzero) + fprintf(outfile, " yes "); + else if (*maybe) + fprintf(outfile, " maybe "); + else + fprintf(outfile, " no "); + for (i = b1 - 1; i < b2; i++) { + aa = r->seq[i]; + switch (aa) { + + case ala: + ch = 'A'; + break; + + case asx: + ch = 'B'; + break; + + case cys: + ch = 'C'; + break; + + case asp: + ch = 'D'; + break; + + case glu: + ch = 'E'; + break; + + case phe: + ch = 'F'; + break; + + case gly: + ch = 'G'; + break; + + case his: + ch = 'H'; + break; + + case ileu: + ch = 'I'; + break; + + case lys: + ch = 'K'; + break; + + case leu: + ch = 'L'; + break; + + case met: + ch = 'M'; + break; + + case asn: + ch = 'N'; + break; + + case pro: + ch = 'P'; + break; + + case gln: + ch = 'Q'; + break; + + case arg: + ch = 'R'; + break; + + case ser: + ch = 'S'; + break; + + case ser1: + ch = 'S'; + break; + + case ser2: + ch = 'S'; + break; + + case thr: + ch = 'T'; + break; + + case trp: + ch = 'W'; + break; + + case tyr: + ch = 'Y'; + break; + + case val: + ch = 'V'; + break; + + case glx: + ch = 'Z'; + break; + + case del: + ch = '-'; + break; + + case stop: + ch = '*'; + break; + + case unk: + ch = 'X'; + break; + + case quest: + ch = '?'; + break; + } + if (!(*bottom) && dotdiff) + dot = (r->siteset[i] [0] == treenode[r->back->index - 1]->siteset[i][0] + || ((r->siteset[i][0] & + (~((1L << ((long)ser1)) | (1L << ((long)ser2)) | + (1L << ((long)ser))))) == 0 && + (treenode[r->back->index - 1]->siteset[i] [0] & + (~((1L << ((long)ser1)) | (1L << ((long)ser2)) | + (1L << ((long)ser))))) == 0)); + else + dot = false; + if (dot) + putc('.', outfile); + else + putc(ch, outfile); + if ((i + 1) % 10 == 0) + putc(' ', outfile); + } + putc('\n', outfile); +} /* prothyprint */ + + +void prothyptrav(node *r, sitearray *hypset, long b1, long b2, long *k, + boolean *bottom, sitearray nothing) +{ + boolean maybe, nonzero; + long i; + aas aa; + long anc = 0, hset; + gseq *ancset, *temparray; + + protgnu(&ancset); + protgnu(&temparray); + maybe = false; + nonzero = false; + for (i = b1 - 1; i < b2; i++) { + if (!r->tip) { + protancestset(hypset[i], r->next->back->siteset[i], + r->next->next->back->siteset[i], temparray->seq[i], k); + memcpy(r->siteset[i], temparray->seq[i], sizeof(sitearray)); + } + if (!(*bottom)) + anc = treenode[r->back->index - 1]->siteset[i][0]; + if (!r->tip) { + hset = r->siteset[i][0]; + r->seq[i] = quest; + for (aa = ala; (long)aa <= (long)stop; aa = (aas)((long)aa + 1)) { + if (hset == 1L << ((long)aa)) + r->seq[i] = aa; + } + if (hset == ((1L << ((long)asn)) | (1L << ((long)asp)))) + r->seq[i] = asx; + if (hset == ((1L << ((long)gln)) | (1L << ((long)gly)))) + r->seq[i] = glx; + if (hset == ((1L << ((long)ser1)) | (1L << ((long)ser2)))) + r->seq[i] = ser; + if (hset == fullset) + r->seq[i] = unk; + } + nonzero = (nonzero || (r->siteset[i][0] & anc) == 0); + maybe = (maybe || r->siteset[i][0] != anc); + } + prothyprint(b1, b2,bottom,r,&nonzero,&maybe); + *bottom = false; + if (!r->tip) { + memcpy(temparray->seq, r->next->back->siteset, chars*sizeof(sitearray)); + for (i = b1 - 1; i < b2; i++) + protancestset(hypset[i], r->next->next->back->siteset[i], nothing, + ancset->seq[i], k); + prothyptrav(r->next->back, ancset->seq, b1, b2,k,bottom,nothing ); + for (i = b1 - 1; i < b2; i++) + protancestset(hypset[i], temparray->seq[i], nothing, ancset->seq[i],k); + prothyptrav(r->next->next->back, ancset->seq, b1, b2, k,bottom,nothing); + } + protchuck(temparray); + protchuck(ancset); +} /* prothyptrav */ + + +void prothypstates(long *k) +{ + /* fill in and describe states at interior nodes */ + boolean bottom; + sitearray nothing; + long i, n; + seqptr hypset; + + fprintf(outfile, "\nFrom To Any Steps? State at upper node\n"); + fprintf(outfile, " "); + fprintf(outfile, "( . means same as in the node below it on tree)\n\n"); + memcpy(nothing, translate[(long)quest - (long)ala], sizeof(sitearray)); + hypset = (seqptr)Malloc(chars*sizeof(sitearray)); + for (i = 0; i < (chars); i++) + memcpy(hypset[i], nothing, sizeof(sitearray)); + bottom = true; + for (i = 1; i <= ((chars - 1) / 40 + 1); i++) { + putc('\n', outfile); + n = i * 40; + if (n > chars) + n = chars; + bottom = true; + prothyptrav(root, hypset, i * 40 - 39, n, k,&bottom,nothing); + } + free(hypset); +} /* prothypstates */ + + +void describe() +{ + /* prints ancestors, steps and table of numbers of steps in + each site */ + long i,j,k; + + if (treeprint) + fprintf(outfile, "\nrequires a total of %10.3f\n", like / -10); + if (stepbox) { + putc('\n', outfile); + if (weights) + fprintf(outfile, "weighted "); + fprintf(outfile, "steps in each position:\n"); + fprintf(outfile, " "); + for (i = 0; i <= 9; i++) + fprintf(outfile, "%4ld", i); + fprintf(outfile, "\n *-----------------------------------------\n"); + for (i = 0; i <= (chars / 10); i++) { + fprintf(outfile, "%5ld", i * 10); + putc('!', outfile); + for (j = 0; j <= 9; j++) { + k = i * 10 + j; + if (k == 0 || k > chars) + fprintf(outfile, " "); + else + fprintf(outfile, "%4ld", root->numsteps[k - 1] / 10); + } + putc('\n', outfile); + } + } + if (ancseq) { + prothypstates(&k); + putc('\n', outfile); + } + putc('\n', outfile); + if (trout) { + col = 0; + treeout(root, nextree, &col, root); + } +} /* describe */ + + +void maketree() +{ + /* constructs a binary tree from the pointers in treenode. + adds each node at location which yields highest "likelihood" + then rearranges the tree for greatest "likelihood" */ + long i, j, numtrees; + double gotlike; + node *item, *nufork, *dummy; + + if (!usertree) { + for (i = 1; i <= (spp); i++) + enterorder[i - 1] = i; + if (jumble) + randumize(seed, enterorder); + root = treenode[enterorder[0] - 1]; + recompute = true; + protadd(treenode[enterorder[0] - 1], treenode[enterorder[1] - 1], + treenode[spp]); + if (progress) { + printf("\nAdding species:\n"); + writename(0, 2, enterorder); + } + lastrearr = false; + for (i = 3; i <= (spp); i++) { + bestyet = -30.0*spp*chars; + there = root; + item = treenode[enterorder[i - 1] - 1]; + nufork = treenode[spp + i - 2]; + addpreorder(root, item, nufork); + protadd(there, item, nufork); + like = bestyet; + rearrange(&root); + if (progress) + writename(i - 1, 1, enterorder); + lastrearr = (i == spp); + if (lastrearr) { + if (progress) { + printf("\nDoing global rearrangements\n"); + printf(" !"); + for (j = 1; j <= nonodes; j++) + if ( j % (( nonodes / 72 ) + 1 ) == 0 ) + putchar('-'); + printf("!\n"); + } + bestlike = bestyet; + if (jumb == 1) { + bstlike2 = bestlike = -30.0*spp*chars; + nextree = 1; + } + do { + if (progress) + printf(" "); + gotlike = bestlike; + for (j = 0; j < (nonodes); j++) { + bestyet = -30.0*spp*chars; + item = treenode[j]; + if (item != root) { + nufork = treenode[treenode[j]->back->index - 1]; + protre_move(&item, &nufork); + there = root; + addpreorder(root, item, nufork); + protadd(there, item, nufork); + } + if (progress) { + if ( j % (( nonodes / 72 ) + 1 ) == 0 ) + putchar('.'); + fflush(stdout); + } + } + if (progress) + putchar('\n'); + } while (bestlike > gotlike); + } + } + if (progress) + putchar('\n'); + for (i = spp - 1; i >= 1; i--) + protre_move(&treenode[i], &dummy); + if (jumb == njumble) { + if (treeprint) { + putc('\n', outfile); + if (nextree == 2) + fprintf(outfile, "One most parsimonious tree found:\n"); + else + fprintf(outfile, "%6ld trees in all found\n", nextree - 1); + } + if (nextree > maxtrees + 1) { + if (treeprint) + fprintf(outfile, "here are the first%4ld of them\n", (long)maxtrees); + nextree = maxtrees + 1; + } + if (treeprint) + putc('\n', outfile); + recompute = false; + for (i = 0; i <= (nextree - 2); i++) { + root = treenode[0]; + protadd(treenode[0], treenode[1], treenode[spp]); + for (j = 3; j <= (spp); j++) + protadd(treenode[bestrees[i].btree[j - 1] - 1], treenode[j - 1], + treenode[spp + j - 2]); + protreroot(treenode[outgrno - 1]); + protpostorder(root); + evaluate(root); + printree(root, 1.0); + describe(); + for (j = 1; j < (spp); j++) + protre_move(&treenode[j], &dummy); + } + } + } else { + openfile(&intree,INTREE,"input tree file", "r",progname,intreename); + numtrees = countsemic(&intree); + if (treeprint) { + fprintf(outfile, "User-defined tree"); + if (numtrees > 1) + putc('s', outfile); + fprintf(outfile, ":\n\n\n\n"); + } + which = 1; + while (which <= numtrees) { + prottreeread(); + if (outgropt) + protreroot(treenode[outgrno - 1]); + protpostorder(root); + evaluate(root); + printree(root, 1.0); + describe(); + which++; + } + printf("\n"); + FClose(intree); + putc('\n', outfile); + if (numtrees > 1 && chars > 1 ) + standev(chars, numtrees, minwhich, minsteps, nsteps, fsteps, seed); + } + if (jumb == njumble && progress) { + printf("Output written to file \"%s\"\n\n", outfilename); + if (trout) + printf("Trees also written onto file \"%s\"\n\n", outtreename); + } +} /* maketree */ + + +int main(int argc, Char *argv[]) +{ /* Protein parsimony by uphill search */ +#ifdef MAC + argc = 1; /* macsetup("Protpars",""); */ + argv[0] = "Protpars"; +#endif + init(argc,argv); + progname = argv[0]; + openfile(&infile,INFILE,"input file", "r",argv[0],infilename); + openfile(&outfile,OUTFILE,"output file", "w",argv[0],outfilename); + + ibmpc = IBMCRT; + ansi = ANSICRT; + garbage = NULL; + mulsets = false; + msets = 1; + firstset = true; + code(); + setup(); + doinit(); + if (weights || justwts) + openfile(&weightfile,WEIGHTFILE,"weights file","r",argv[0],weightfilename); + if (trout) + openfile(&outtree,OUTTREE,"output tree file", "w",argv[0],outtreename); + for (ith = 1; ith <= msets; ith++) { + doinput(); + if (ith == 1) + firstset = false; + if (msets > 1 && !justwts) { + fprintf(outfile, "Data set # %ld:\n\n",ith); + if (progress) + printf("Data set # %ld:\n\n",ith); + } + for (jumb = 1; jumb <= njumble; jumb++) + maketree(); + } + FClose(infile); + FClose(outfile); + FClose(outtree); +#ifdef MAC + fixmacfile(outfilename); + fixmacfile(outtreename); +#endif + return 0; +} /* Protein parsimony by uphill search */ diff --git a/forester/archive/RIO/others/phylip_mod/src/seq.c b/forester/archive/RIO/others/phylip_mod/src/seq.c new file mode 100644 index 0000000..ab0c7d9 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/seq.c @@ -0,0 +1,4178 @@ + +#include "phylip.h" +#include "seq.h" + +/* version 3.6. (c) Copyright 1993-2004 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +long nonodes, endsite, outgrno, nextree, which; +boolean interleaved, printdata, outgropt, treeprint, dotdiff, transvp; +steptr weight, category, alias, location, ally; +sequence y; + + +void fix_x(node* p,long site, double maxx, long rcategs) +{ /* dnaml dnamlk */ + long i,j; + p->underflows[site] += log(maxx); + + for ( i = 0 ; i < rcategs ; i++ ) { + for ( j = 0 ; j < ((long)T - (long)A + 1) ; j++) + p->x[site][i][j] /= maxx; + } +} /* fix_x */ + + +void fix_protx(node* p,long site, double maxx, long rcategs) +{ /* proml promlk */ + long i,m; + + p->underflows[site] += log(maxx); + + for ( i = 0 ; i < rcategs ; i++ ) + for (m = 0; m <= 19; m++) + p->protx[site][i][m] /= maxx; +} /* fix_protx */ + + +void alloctemp(node **temp, long *zeros, long endsite) +{ + /*used in dnacomp and dnapenny */ + *temp = (node *)Malloc(sizeof(node)); + (*temp)->numsteps = (steptr)Malloc(endsite*sizeof(long)); + (*temp)->base = (baseptr)Malloc(endsite*sizeof(long)); + (*temp)->numnuc = (nucarray *)Malloc(endsite*sizeof(nucarray)); + memcpy((*temp)->base, zeros, endsite*sizeof(long)); + memcpy((*temp)->numsteps, zeros, endsite*sizeof(long)); + zeronumnuc(*temp, endsite); +} /* alloctemp */ + + +void freetemp(node **temp) +{ + /* used in dnacomp, dnapars, & dnapenny */ + free((*temp)->numsteps); + free((*temp)->base); + free((*temp)->numnuc); + free(*temp); +} /* freetemp */ + + +void freetree2 (pointarray treenode, long nonodes) +{ + /* The natural complement to alloctree2. Free all elements of all + the rings (normally triads) in treenode */ + long i; + node *p, *q; + + /* The first spp elements are just nodes, not rings */ + for (i = 0; i < spp; i++) + free (treenode[i]); + + /* The rest are rings */ + for (i = spp; i < nonodes; i++) { + p = treenode[i]->next; + while (p != treenode[i]) { + q = p->next; + free (p); + p = q; + } + /* p should now point to treenode[i], which has yet to be freed */ + free (p); + } + free (treenode); +} /* freetree2 */ + + +void inputdata(long chars) +{ + /* input the names and sequences for each species */ + /* used by dnacomp, dnadist, dnainvar, dnaml, dnamlk, dnapars, & dnapenny */ + long i, j, k, l, basesread, basesnew=0; + Char charstate; + boolean allread, done; + + if (printdata) + headings(chars, "Sequences", "---------"); + basesread = 0; + allread = false; + while (!(allread)) { + /* eat white space -- if the separator line has spaces on it*/ + do { + charstate = gettc(infile); + } while (charstate == ' ' || charstate == '\t'); + ungetc(charstate, infile); + if (eoln(infile)) + scan_eoln(infile); + i = 1; + while (i <= spp) { + if ((interleaved && basesread == 0) || !interleaved) + initname(i-1); + j = (interleaved) ? basesread : 0; + done = false; + while (!done && !eoff(infile)) { + if (interleaved) + done = true; + while (j < chars && !(eoln(infile) || eoff(infile))) { + charstate = gettc(infile); + if (charstate == '\n' || charstate == '\t') + charstate = ' '; + if (charstate == ' ' || (charstate >= '0' && charstate <= '9')) + continue; + uppercase(&charstate); + if ((strchr("ABCDGHKMNRSTUVWXY?O-",charstate)) == NULL){ + printf("ERROR: bad base: %c at site %5ld of species %3ld\n", + charstate, j+1, i); + if (charstate == '.') { + printf(" Periods (.) may not be used as gap characters.\n"); + printf(" The correct gap character is (-)\n"); + } + exxit(-1); + } + j++; + y[i - 1][j - 1] = charstate; + } + if (interleaved) + continue; + if (j < chars) + scan_eoln(infile); + else if (j == chars) + done = true; + } + if (interleaved && i == 1) + basesnew = j; + + scan_eoln(infile); + + if ((interleaved && j != basesnew) || + (!interleaved && j != chars)) { + printf("\nERROR: sequences out of alignment at position %ld", j+1); + printf(" of species %ld\n\n", i); + exxit(-1); + } + i++; + } + + if (interleaved) { + basesread = basesnew; + allread = (basesread == chars); + } else + allread = (i > spp); + } + if (!printdata) + return; + for (i = 1; i <= ((chars - 1) / 60 + 1); i++) { + for (j = 1; j <= spp; j++) { + for (k = 0; k < nmlngth; k++) + putc(nayme[j - 1][k], outfile); + fprintf(outfile, " "); + l = i * 60; + if (l > chars) + l = chars; + for (k = (i - 1) * 60 + 1; k <= l; k++) { + if (dotdiff && (j > 1 && y[j - 1][k - 1] == y[0][k - 1])) + charstate = '.'; + else + charstate = y[j - 1][k - 1]; + putc(charstate, outfile); + if (k % 10 == 0 && k % 60 != 0) + putc(' ', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); +} /* inputdata */ + + +void alloctree(pointarray *treenode, long nonodes, boolean usertree) +{ + /* allocate treenode dynamically */ + /* used in dnapars, dnacomp, dnapenny & dnamove */ + long i, j; + node *p, *q; + + *treenode = (pointarray)Malloc(nonodes*sizeof(node *)); + for (i = 0; i < spp; i++) { + (*treenode)[i] = (node *)Malloc(sizeof(node)); + (*treenode)[i]->tip = true; + (*treenode)[i]->index = i+1; + (*treenode)[i]->iter = true; + (*treenode)[i]->branchnum = 0; + (*treenode)[i]->initialized = true; + } + if (!usertree) + for (i = spp; i < nonodes; i++) { + q = NULL; + for (j = 1; j <= 3; j++) { + p = (node *)Malloc(sizeof(node)); + p->tip = false; + p->index = i+1; + p->iter = true; + p->branchnum = 0; + p->initialized = false; + p->next = q; + q = p; + } + p->next->next->next = p; + (*treenode)[i] = p; + } +} /* alloctree */ + + +void allocx(long nonodes, long rcategs, pointarray treenode, boolean usertree) +{ + /* allocate x dynamically */ + /* used in dnaml & dnamlk */ + long i, j, k; + node *p; + + for (i = 0; i < spp; i++){ + treenode[i]->x = (phenotype)Malloc(endsite*sizeof(ratelike)); + treenode[i]->underflows = Malloc(endsite * sizeof (double)); + for (j = 0; j < endsite; j++) + treenode[i]->x[j] = (ratelike)Malloc(rcategs*sizeof(sitelike)); + } + if (!usertree) { + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + p->underflows = Malloc (endsite * sizeof (double)); + p->x = (phenotype)Malloc(endsite*sizeof(ratelike)); + for (k = 0; k < endsite; k++) + p->x[k] = (ratelike)Malloc(rcategs*sizeof(sitelike)); + p = p->next; + } + } + } +} /* allocx */ + + +void prot_allocx(long nonodes, long rcategs, pointarray treenode, + boolean usertree) +{ + /* allocate x dynamically */ + /* used in proml */ + long i, j, k; + node *p; + + for (i = 0; i < spp; i++){ + treenode[i]->protx = (pphenotype)Malloc(endsite*sizeof(pratelike)); + treenode[i]->underflows = Malloc(endsite*sizeof(double)); + for (j = 0; j < endsite; j++) + treenode[i]->protx[j] = (pratelike)Malloc(rcategs*sizeof(psitelike)); + } + if (!usertree) { + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + p->protx = (pphenotype)Malloc(endsite*sizeof(pratelike)); + p->underflows = Malloc(endsite*sizeof(double)); + for (k = 0; k < endsite; k++) + p->protx[k] = (pratelike)Malloc(rcategs*sizeof(psitelike)); + p = p->next; + } + } + } +} /* prot_allocx */ + + +void allocx2(long nonodes, long endsite, long sitelength, pointarray treenode, + boolean usertree) +{ + /* allocate x2 dynamically */ + /* used in restml */ + long i, j, k, l; + node *p; + + for (i = 0; i < spp; i++) { + treenode[i]->x2 = (phenotype2)Malloc(endsite*sizeof(sitelike2)); + for ( j = 0 ; j < endsite ; j++ ) + treenode[i]->x2[j] = Malloc((sitelength + 1) * sizeof(double)); + } + if (!usertree) { + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + p->x2 = (phenotype2)Malloc(endsite*sizeof(sitelike2)); + for (k = 0; k < endsite; k++) { + p->x2[k] = Malloc((sitelength + 1) * sizeof(double)); + for (l = 0; l < sitelength; l++) + p->x2[k][l] = 1.0; + } + p = p->next; + } + } + } +} /* allocx2 */ + + +void setuptree(pointarray treenode, long nonodes, boolean usertree) +{ + /* initialize treenodes */ + long i; + node *p; + + for (i = 1; i <= nonodes; i++) { + if (i <= spp || !usertree) { + treenode[i-1]->back = NULL; + treenode[i-1]->tip = (i <= spp); + treenode[i-1]->index = i; + treenode[i-1]->numdesc = 0; + treenode[i-1]->iter = true; + treenode[i-1]->initialized = true; + treenode[i-1]->tyme = 0.0; + } + } + if (!usertree) { + for (i = spp + 1; i <= nonodes; i++) { + p = treenode[i-1]->next; + while (p != treenode[i-1]) { + p->back = NULL; + p->tip = false; + p->index = i; + p->numdesc = 0; + p->iter = true; + p->initialized = false; + p->tyme = 0.0; + p = p->next; + } + } + } +} /* setuptree */ + + +void setuptree2(tree a) +{ + /* initialize a tree */ + /* used in dnaml, dnamlk, & restml */ + + a.likelihood = -999999.0; + a.start = a.nodep[0]->back; + a.root = NULL; +} /* setuptree2 */ + + +void alloctip(node *p, long *zeros) +{ /* allocate a tip node */ + /* used by dnacomp, dnapars, & dnapenny */ + + p->numsteps = (steptr)Malloc(endsite*sizeof(long)); + p->oldnumsteps = (steptr)Malloc(endsite*sizeof(long)); + p->base = (baseptr)Malloc(endsite*sizeof(long)); + p->oldbase = (baseptr)Malloc(endsite*sizeof(long)); + memcpy(p->base, zeros, endsite*sizeof(long)); + memcpy(p->numsteps, zeros, endsite*sizeof(long)); + memcpy(p->oldbase, zeros, endsite*sizeof(long)); + memcpy(p->oldnumsteps, zeros, endsite*sizeof(long)); +} /* alloctip */ + + +void freetrans(transptr *trans, long nonodes,long sitelength) +{ + long i ,j; + for ( i = 0 ; i < nonodes ; i++ ) { + for ( j = 0 ; j < sitelength + 1; j++) { + free ((*trans)[i][j]); + } + free ((*trans)[i]); + } + free(*trans); +} + + +void getbasefreqs(double freqa, double freqc, double freqg, double freqt, + double *freqr, double *freqy, double *freqar, double *freqcy, + double *freqgr, double *freqty, double *ttratio, double *xi, + double *xv, double *fracchange, boolean freqsfrom, + boolean printdata) +{ + /* used by dnadist, dnaml, & dnamlk */ + double aa, bb; + + if (printdata) { + putc('\n', outfile); + if (freqsfrom) + fprintf(outfile, "Empirical "); + fprintf(outfile, "Base Frequencies:\n\n"); + fprintf(outfile, " A %10.5f\n", freqa); + fprintf(outfile, " C %10.5f\n", freqc); + fprintf(outfile, " G %10.5f\n", freqg); + fprintf(outfile, " T(U) %10.5f\n", freqt); + } + *freqr = freqa + freqg; + *freqy = freqc + freqt; + *freqar = freqa / *freqr; + *freqcy = freqc / *freqy; + *freqgr = freqg / *freqr; + *freqty = freqt / *freqy; + aa = *ttratio * (*freqr) * (*freqy) - freqa * freqg - freqc * freqt; + bb = freqa * (*freqgr) + freqc * (*freqty); + *xi = aa / (aa + bb); + *xv = 1.0 - *xi; + if (*xi < 0.0) { + printf("\n WARNING: This transition/transversion ratio\n"); + printf(" is impossible with these base frequencies!\n"); + *xi = 0.0; + *xv = 1.0; + (*ttratio) = (freqa*freqg+freqc*freqt)/((*freqr)*(*freqy)); + printf(" Transition/transversion parameter reset\n"); + printf(" so transition/transversion ratio is %10.6f\n\n", (*ttratio)); + } + if (freqa <= 0.0) + freqa = 0.000001; + if (freqc <= 0.0) + freqc = 0.000001; + if (freqg <= 0.0) + freqg = 0.000001; + if (freqt <= 0.0) + freqt = 0.000001; + *fracchange = (*xi) * (2 * freqa * (*freqgr) + 2 * freqc * (*freqty)) + + (*xv) * (1.0 - freqa * freqa - freqc * freqc - freqg * freqg + - freqt * freqt); +} /* getbasefreqs */ + + +void empiricalfreqs(double *freqa, double *freqc, double *freqg, + double *freqt, steptr weight, pointarray treenode) +{ + /* Get empirical base frequencies from the data */ + /* used in dnaml & dnamlk */ + long i, j, k; + double sum, suma, sumc, sumg, sumt, w; + + *freqa = 0.25; + *freqc = 0.25; + *freqg = 0.25; + *freqt = 0.25; + for (k = 1; k <= 8; k++) { + suma = 0.0; + sumc = 0.0; + sumg = 0.0; + sumt = 0.0; + for (i = 0; i < spp; i++) { + for (j = 0; j < endsite; j++) { + w = weight[j]; + sum = (*freqa) * treenode[i]->x[j][0][0]; + sum += (*freqc) * treenode[i]->x[j][0][(long)C - (long)A]; + sum += (*freqg) * treenode[i]->x[j][0][(long)G - (long)A]; + sum += (*freqt) * treenode[i]->x[j][0][(long)T - (long)A]; + suma += w * (*freqa) * treenode[i]->x[j][0][0] / sum; + sumc += w * (*freqc) * treenode[i]->x[j][0][(long)C - (long)A] / sum; + sumg += w * (*freqg) * treenode[i]->x[j][0][(long)G - (long)A] / sum; + sumt += w * (*freqt) * treenode[i]->x[j][0][(long)T - (long)A] / sum; + } + } + sum = suma + sumc + sumg + sumt; + *freqa = suma / sum; + *freqc = sumc / sum; + *freqg = sumg / sum; + *freqt = sumt / sum; + } + if (*freqa <= 0.0) + *freqa = 0.000001; + if (*freqc <= 0.0) + *freqc = 0.000001; + if (*freqg <= 0.0) + *freqg = 0.000001; + if (*freqt <= 0.0) + *freqt = 0.000001; +} /* empiricalfreqs */ + + +void sitesort(long chars, steptr weight) +{ + /* Shell sort keeping sites, weights in same order */ + /* used in dnainvar, dnapars, dnacomp & dnapenny */ + long gap, i, j, jj, jg, k, itemp; + boolean flip, tied; + + gap = chars / 2; + while (gap > 0) { + for (i = gap + 1; i <= chars; i++) { + j = i - gap; + flip = true; + while (j > 0 && flip) { + jj = alias[j - 1]; + jg = alias[j + gap - 1]; + tied = true; + k = 1; + while (k <= spp && tied) { + flip = (y[k - 1][jj - 1] > y[k - 1][jg - 1]); + tied = (tied && y[k - 1][jj - 1] == y[k - 1][jg - 1]); + k++; + } + if (!flip) + break; + itemp = alias[j - 1]; + alias[j - 1] = alias[j + gap - 1]; + alias[j + gap - 1] = itemp; + itemp = weight[j - 1]; + weight[j - 1] = weight[j + gap - 1]; + weight[j + gap - 1] = itemp; + j -= gap; + } + } + gap /= 2; + } +} /* sitesort */ + + +void sitecombine(long chars) +{ + /* combine sites that have identical patterns */ + /* used in dnapars, dnapenny, & dnacomp */ + long i, j, k; + boolean tied; + + i = 1; + while (i < chars) { + j = i + 1; + tied = true; + while (j <= chars && tied) { + k = 1; + while (k <= spp && tied) { + tied = (tied && + y[k - 1][alias[i - 1] - 1] == y[k - 1][alias[j - 1] - 1]); + k++; + } + if (tied) { + weight[i - 1] += weight[j - 1]; + weight[j - 1] = 0; + ally[alias[j - 1] - 1] = alias[i - 1]; + } + j++; + } + i = j - 1; + } +} /* sitecombine */ + + +void sitescrunch(long chars) +{ + /* move so one representative of each pattern of + sites comes first */ + /* used in dnapars & dnacomp */ + long i, j, itemp; + boolean done, found; + + done = false; + i = 1; + j = 2; + while (!done) { + if (ally[alias[i - 1] - 1] != alias[i - 1]) { + if (j <= i) + j = i + 1; + if (j <= chars) { + do { + found = (ally[alias[j - 1] - 1] == alias[j - 1]); + j++; + } while (!(found || j > chars)); + if (found) { + j--; + itemp = alias[i - 1]; + alias[i - 1] = alias[j - 1]; + alias[j - 1] = itemp; + itemp = weight[i - 1]; + weight[i - 1] = weight[j - 1]; + weight[j - 1] = itemp; + } else + done = true; + } else + done = true; + } + i++; + done = (done || i >= chars); + } +} /* sitescrunch */ + + +void sitesort2(long sites, steptr aliasweight) +{ + /* Shell sort keeping sites, weights in same order */ + /* used in dnaml & dnamnlk */ + long gap, i, j, jj, jg, k, itemp; + boolean flip, tied, samewt; + + gap = sites / 2; + while (gap > 0) { + for (i = gap + 1; i <= sites; i++) { + j = i - gap; + flip = true; + while (j > 0 && flip) { + jj = alias[j - 1]; + jg = alias[j + gap - 1]; + samewt = ((weight[jj - 1] != 0) && (weight[jg - 1] != 0)) + || ((weight[jj - 1] == 0) && (weight[jg - 1] == 0)); + tied = samewt && (category[jj - 1] == category[jg - 1]); + flip = ((!samewt) && (weight[jj - 1] == 0)) + || (samewt && (category[jj - 1] > category[jg - 1])); + k = 1; + while (k <= spp && tied) { + flip = (y[k - 1][jj - 1] > y[k - 1][jg - 1]); + tied = (tied && y[k - 1][jj - 1] == y[k - 1][jg - 1]); + k++; + } + if (!flip) + break; + itemp = alias[j - 1]; + alias[j - 1] = alias[j + gap - 1]; + alias[j + gap - 1] = itemp; + itemp = aliasweight[j - 1]; + aliasweight[j - 1] = aliasweight[j + gap - 1]; + aliasweight[j + gap - 1] = itemp; + j -= gap; + } + } + gap /= 2; + } +} /* sitesort2 */ + + +void sitecombine2(long sites, steptr aliasweight) +{ + /* combine sites that have identical patterns */ + /* used in dnaml & dnamlk */ + long i, j, k; + boolean tied, samewt; + + i = 1; + while (i < sites) { + j = i + 1; + tied = true; + while (j <= sites && tied) { + samewt = ((aliasweight[i - 1] != 0) && (aliasweight[j - 1] != 0)) + || ((aliasweight[i - 1] == 0) && (aliasweight[j - 1] == 0)); + tied = samewt + && (category[alias[i - 1] - 1] == category[alias[j - 1] - 1]); + k = 1; + while (k <= spp && tied) { + tied = (tied && + y[k - 1][alias[i - 1] - 1] == y[k - 1][alias[j - 1] - 1]); + k++; + } + if (!tied) + break; + aliasweight[i - 1] += aliasweight[j - 1]; + aliasweight[j - 1] = 0; + ally[alias[j - 1] - 1] = alias[i - 1]; + j++; + } + i = j; + } +} /* sitecombine2 */ + + +void sitescrunch2(long sites, long i, long j, steptr aliasweight) +{ + /* move so positively weighted sites come first */ + /* used by dnainvar, dnaml, dnamlk, & restml */ + long itemp; + boolean done, found; + + done = false; + while (!done) { + if (aliasweight[i - 1] > 0) + i++; + else { + if (j <= i) + j = i + 1; + if (j <= sites) { + do { + found = (aliasweight[j - 1] > 0); + j++; + } while (!(found || j > sites)); + if (found) { + j--; + itemp = alias[i - 1]; + alias[i - 1] = alias[j - 1]; + alias[j - 1] = itemp; + itemp = aliasweight[i - 1]; + aliasweight[i - 1] = aliasweight[j - 1]; + aliasweight[j - 1] = itemp; + } else + done = true; + } else + done = true; + } + done = (done || i >= sites); + } +} /* sitescrunch2 */ + + +void makevalues(pointarray treenode, long *zeros, boolean usertree) +{ + /* set up fractional likelihoods at tips */ + /* used by dnacomp, dnapars, & dnapenny */ + long i, j; + char ns = 0; + node *p; + + setuptree(treenode, nonodes, usertree); + for (i = 0; i < spp; i++) + alloctip(treenode[i], zeros); + if (!usertree) { + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + do { + allocnontip(p, zeros, endsite); + p = p->next; + } while (p != treenode[i]); + } + } + for (j = 0; j < endsite; j++) { + for (i = 0; i < spp; i++) { + switch (y[i][alias[j] - 1]) { + + case 'A': + ns = 1 << A; + break; + + case 'C': + ns = 1 << C; + break; + + case 'G': + ns = 1 << G; + break; + + case 'U': + ns = 1 << T; + break; + + case 'T': + ns = 1 << T; + break; + + case 'M': + ns = (1 << A) | (1 << C); + break; + + case 'R': + ns = (1 << A) | (1 << G); + break; + + case 'W': + ns = (1 << A) | (1 << T); + break; + + case 'S': + ns = (1 << C) | (1 << G); + break; + + case 'Y': + ns = (1 << C) | (1 << T); + break; + + case 'K': + ns = (1 << G) | (1 << T); + break; + + case 'B': + ns = (1 << C) | (1 << G) | (1 << T); + break; + + case 'D': + ns = (1 << A) | (1 << G) | (1 << T); + break; + + case 'H': + ns = (1 << A) | (1 << C) | (1 << T); + break; + + case 'V': + ns = (1 << A) | (1 << C) | (1 << G); + break; + + case 'N': + ns = (1 << A) | (1 << C) | (1 << G) | (1 << T); + break; + + case 'X': + ns = (1 << A) | (1 << C) | (1 << G) | (1 << T); + break; + + case '?': + ns = (1 << A) | (1 << C) | (1 << G) | (1 << T) | (1 << O); + break; + + case 'O': + ns = 1 << O; + break; + + case '-': + ns = 1 << O; + break; + } + treenode[i]->base[j] = ns; + treenode[i]->numsteps[j] = 0; + } + } +} /* makevalues */ + + +void makevalues2(long categs, pointarray treenode, long endsite, + long spp, sequence y, steptr alias) +{ + /* set up fractional likelihoods at tips */ + /* used by dnaml & dnamlk */ + long i, j, k, l; + bases b; + + for (k = 0; k < endsite; k++) { + j = alias[k]; + for (i = 0; i < spp; i++) { + for (l = 0; l < categs; l++) { + for (b = A; (long)b <= (long)T; b = (bases)((long)b + 1)) + treenode[i]->x[k][l][(long)b - (long)A] = 0.0; + switch (y[i][j - 1]) { + + case 'A': + treenode[i]->x[k][l][0] = 1.0; + break; + + case 'C': + treenode[i]->x[k][l][(long)C - (long)A] = 1.0; + break; + + case 'G': + treenode[i]->x[k][l][(long)G - (long)A] = 1.0; + break; + + case 'T': + treenode[i]->x[k][l][(long)T - (long)A] = 1.0; + break; + + case 'U': + treenode[i]->x[k][l][(long)T - (long)A] = 1.0; + break; + + case 'M': + treenode[i]->x[k][l][0] = 1.0; + treenode[i]->x[k][l][(long)C - (long)A] = 1.0; + break; + + case 'R': + treenode[i]->x[k][l][0] = 1.0; + treenode[i]->x[k][l][(long)G - (long)A] = 1.0; + break; + + case 'W': + treenode[i]->x[k][l][0] = 1.0; + treenode[i]->x[k][l][(long)T - (long)A] = 1.0; + break; + + case 'S': + treenode[i]->x[k][l][(long)C - (long)A] = 1.0; + treenode[i]->x[k][l][(long)G - (long)A] = 1.0; + break; + + case 'Y': + treenode[i]->x[k][l][(long)C - (long)A] = 1.0; + treenode[i]->x[k][l][(long)T - (long)A] = 1.0; + break; + + case 'K': + treenode[i]->x[k][l][(long)G - (long)A] = 1.0; + treenode[i]->x[k][l][(long)T - (long)A] = 1.0; + break; + + case 'B': + treenode[i]->x[k][l][(long)C - (long)A] = 1.0; + treenode[i]->x[k][l][(long)G - (long)A] = 1.0; + treenode[i]->x[k][l][(long)T - (long)A] = 1.0; + break; + + case 'D': + treenode[i]->x[k][l][0] = 1.0; + treenode[i]->x[k][l][(long)G - (long)A] = 1.0; + treenode[i]->x[k][l][(long)T - (long)A] = 1.0; + break; + + case 'H': + treenode[i]->x[k][l][0] = 1.0; + treenode[i]->x[k][l][(long)C - (long)A] = 1.0; + treenode[i]->x[k][l][(long)T - (long)A] = 1.0; + break; + + case 'V': + treenode[i]->x[k][l][0] = 1.0; + treenode[i]->x[k][l][(long)C - (long)A] = 1.0; + treenode[i]->x[k][l][(long)G - (long)A] = 1.0; + break; + + case 'N': + for (b = A; (long)b <= (long)T; b = (bases)((long)b + 1)) + treenode[i]->x[k][l][(long)b - (long)A] = 1.0; + break; + + case 'X': + for (b = A; (long)b <= (long)T; b = (bases)((long)b + 1)) + treenode[i]->x[k][l][(long)b - (long)A] = 1.0; + break; + + case '?': + for (b = A; (long)b <= (long)T; b = (bases)((long)b + 1)) + treenode[i]->x[k][l][(long)b - (long)A] = 1.0; + break; + + case 'O': + for (b = A; (long)b <= (long)T; b = (bases)((long)b + 1)) + treenode[i]->x[k][l][(long)b - (long)A] = 1.0; + break; + + case '-': + for (b = A; (long)b <= (long)T; b = (bases)((long)b + 1)) + treenode[i]->x[k][l][(long)b - (long)A] = 1.0; + break; + } + } + } + } +} /* makevalues2 */ + + +void fillin(node *p, node *left, node *rt) +{ + /* sets up for each node in the tree the base sequence + at that point and counts the changes. */ + long i, j, k, n, purset, pyrset; + node *q; + + purset = (1 << (long)A) + (1 << (long)G); + pyrset = (1 << (long)C) + (1 << (long)T); + if (!left) { + memcpy(p->base, rt->base, endsite*sizeof(long)); + memcpy(p->numsteps, rt->numsteps, endsite*sizeof(long)); + q = rt; + } else if (!rt) { + memcpy(p->base, left->base, endsite*sizeof(long)); + memcpy(p->numsteps, left->numsteps, endsite*sizeof(long)); + q = left; + } else { + for (i = 0; i < endsite; i++) { + p->base[i] = left->base[i] & rt->base[i]; + p->numsteps[i] = left->numsteps[i] + rt->numsteps[i]; + if (p->base[i] == 0) { + p->base[i] = left->base[i] | rt->base[i]; + if (transvp) { + if (!((p->base[i] == purset) || (p->base[i] == pyrset))) + p->numsteps[i] += weight[i]; + } + else p->numsteps[i] += weight[i]; + } + } + q = rt; + } + if (left && rt) n = 2; + else n = 1; + for (i = 0; i < endsite; i++) + for (j = (long)A; j <= (long)O; j++) + p->numnuc[i][j] = 0; + for (k = 1; k <= n; k++) { + if (k == 2) q = left; + for (i = 0; i < endsite; i++) { + for (j = (long)A; j <= (long)O; j++) { + if (q->base[i] & (1 << j)) + p->numnuc[i][j]++; + } + } + } +} /* fillin */ + + +long getlargest(long *numnuc) +{ + /* find the largest in array numnuc */ + long i, largest; + + largest = 0; + for (i = (long)A; i <= (long)O; i++) + if (numnuc[i] > largest) + largest = numnuc[i]; + return largest; +} /* getlargest */ + + +void multifillin(node *p, node *q, long dnumdesc) +{ + /* sets up for each node in the tree the base sequence + at that point and counts the changes according to the + changes in q's base */ + long i, j, b, largest, descsteps, purset, pyrset; + + memcpy(p->oldbase, p->base, endsite*sizeof(long)); + memcpy(p->oldnumsteps, p->numsteps, endsite*sizeof(long)); + purset = (1 << (long)A) + (1 << (long)G); + pyrset = (1 << (long)C) + (1 << (long)T); + for (i = 0; i < endsite; i++) { + descsteps = 0; + for (j = (long)A; j <= (long)O; j++) { + b = 1 << j; + if ((descsteps == 0) && (p->base[i] & b)) + descsteps = p->numsteps[i] + - (p->numdesc - dnumdesc - p->numnuc[i][j]) * weight[i]; + } + if (dnumdesc == -1) + descsteps -= q->oldnumsteps[i]; + else if (dnumdesc == 0) + descsteps += (q->numsteps[i] - q->oldnumsteps[i]); + else + descsteps += q->numsteps[i]; + if (q->oldbase[i] != q->base[i]) { + for (j = (long)A; j <= (long)O; j++) { + b = 1 << j; + if (transvp) { + if (b & purset) b = purset; + if (b & pyrset) b = pyrset; + } + if ((q->oldbase[i] & b) && !(q->base[i] & b)) + p->numnuc[i][j]--; + else if (!(q->oldbase[i] & b) && (q->base[i] & b)) + p->numnuc[i][j]++; + } + } + largest = getlargest(p->numnuc[i]); + if (q->oldbase[i] != q->base[i]) { + p->base[i] = 0; + for (j = (long)A; j <= (long)O; j++) { + if (p->numnuc[i][j] == largest) + p->base[i] |= (1 << j); + } + } + p->numsteps[i] = (p->numdesc - largest) * weight[i] + descsteps; + } +} /* multifillin */ + + +void sumnsteps(node *p, node *left, node *rt, long a, long b) +{ + /* sets up for each node in the tree the base sequence + at that point and counts the changes. */ + long i; + long ns, rs, ls, purset, pyrset; + + if (!left) { + memcpy(p->numsteps, rt->numsteps, endsite*sizeof(long)); + memcpy(p->base, rt->base, endsite*sizeof(long)); + } else if (!rt) { + memcpy(p->numsteps, left->numsteps, endsite*sizeof(long)); + memcpy(p->base, left->base, endsite*sizeof(long)); + } else { + purset = (1 << (long)A) + (1 << (long)G); + pyrset = (1 << (long)C) + (1 << (long)T); + for (i = a; i < b; i++) { + ls = left->base[i]; + rs = rt->base[i]; + ns = ls & rs; + p->numsteps[i] = left->numsteps[i] + rt->numsteps[i]; + if (ns == 0) { + ns = ls | rs; + if (transvp) { + if (!((ns == purset) || (ns == pyrset))) + p->numsteps[i] += weight[i]; + } + else p->numsteps[i] += weight[i]; + } + p->base[i] = ns; + } + } +} /* sumnsteps */ + + +void sumnsteps2(node *p,node *left,node *rt,long a,long b,long *threshwt) +{ + /* counts the changes at each node. */ + long i, steps; + long ns, rs, ls, purset, pyrset; + long term; + + if (a == 0) p->sumsteps = 0.0; + if (!left) + memcpy(p->numsteps, rt->numsteps, endsite*sizeof(long)); + else if (!rt) + memcpy(p->numsteps, left->numsteps, endsite*sizeof(long)); + else { + purset = (1 << (long)A) + (1 << (long)G); + pyrset = (1 << (long)C) + (1 << (long)T); + for (i = a; i < b; i++) { + ls = left->base[i]; + rs = rt->base[i]; + ns = ls & rs; + p->numsteps[i] = left->numsteps[i] + rt->numsteps[i]; + if (ns == 0) { + ns = ls | rs; + if (transvp) { + if (!((ns == purset) || (ns == pyrset))) + p->numsteps[i] += weight[i]; + } + else p->numsteps[i] += weight[i]; + } + } + } + for (i = a; i < b; i++) { + steps = p->numsteps[i]; + if ((long)steps <= threshwt[i]) + term = steps; + else + term = threshwt[i]; + p->sumsteps += (double)term; + } +} /* sumnsteps2 */ + + +void multisumnsteps(node *p, node *q, long a, long b, long *threshwt) +{ + /* computes the number of steps between p and q */ + long i, j, steps, largest, descsteps, purset, pyrset, b1; + long term; + + if (a == 0) p->sumsteps = 0.0; + purset = (1 << (long)A) + (1 << (long)G); + pyrset = (1 << (long)C) + (1 << (long)T); + for (i = a; i < b; i++) { + descsteps = 0; + for (j = (long)A; j <= (long)O; j++) { + if ((descsteps == 0) && (p->base[i] & (1 << j))) + descsteps = p->numsteps[i] - + (p->numdesc - 1 - p->numnuc[i][j]) * weight[i]; + } + descsteps += q->numsteps[i]; + largest = 0; + for (j = (long)A; j <= (long)O; j++) { + b1 = (1 << j); + if (transvp) { + if (b1 & purset) b1 = purset; + if (b1 & pyrset) b1 = pyrset; + } + if (q->base[i] & b1) + p->numnuc[i][j]++; + if (p->numnuc[i][j] > largest) + largest = p->numnuc[i][j]; + } + steps = (p->numdesc - largest) * weight[i] + descsteps; + if ((long)steps <= threshwt[i]) + term = steps; + else + term = threshwt[i]; + p->sumsteps += (double)term; + } +} /* multisumnsteps */ + + +void multisumnsteps2(node *p) +{ + /* counts the changes at each multi-way node. Sums up + steps of all descendants */ + long i, j, largest, purset, pyrset, b1; + node *q; + baseptr b; + + purset = (1 << (long)A) + (1 << (long)G); + pyrset = (1 << (long)C) + (1 << (long)T); + for (i = 0; i < endsite; i++) { + p->numsteps[i] = 0; + q = p->next; + while (q != p) { + if (q->back) { + p->numsteps[i] += q->back->numsteps[i]; + b = q->back->base; + for (j = (long)A; j <= (long)O; j++) { + b1 = (1 << j); + if (transvp) { + if (b1 & purset) b1 = purset; + if (b1 & pyrset) b1 = pyrset; + } + if (b[i] & b1) p->numnuc[i][j]++; + } + } + q = q->next; + } + largest = getlargest(p->numnuc[i]); + p->base[i] = 0; + for (j = (long)A; j <= (long)O; j++) { + if (p->numnuc[i][j] == largest) + p->base[i] |= (1 << j); + } + p->numsteps[i] += ((p->numdesc - largest) * weight[i]); + } +} /* multisumnsteps2 */ + +boolean alltips(node *forknode, node *p) +{ + /* returns true if all descendants of forknode except p are tips; + false otherwise. */ + node *q, *r; + boolean tips; + + tips = true; + r = forknode; + q = forknode->next; + do { + if (q->back && q->back != p && !q->back->tip) + tips = false; + q = q->next; + } while (tips && q != r); + return tips; +} /* alltips */ + + +void gdispose(node *p, node **grbg, pointarray treenode) +{ + /* go through tree throwing away nodes */ + node *q, *r; + + p->back = NULL; + if (p->tip) + return; + treenode[p->index - 1] = NULL; + q = p->next; + while (q != p) { + gdispose(q->back, grbg, treenode); + q->back = NULL; + r = q; + q = q->next; + chucktreenode(grbg, r); + } + chucktreenode(grbg, q); +} /* gdispose */ + + +void preorder(node *p, node *r, node *root, node *removing, node *adding, + node *changing, long dnumdesc) +{ + /* recompute number of steps in preorder taking both ancestoral and + descendent steps into account. removing points to a node being + removed, if any */ + node *q, *p1, *p2; + + if (p && !p->tip && p != adding) { + q = p; + do { + if (p->back != r) { + if (p->numdesc > 2) { + if (changing) + multifillin (p, r, dnumdesc); + else + multifillin (p, r, 0); + } else { + p1 = p->next; + if (!removing) + while (!p1->back) + p1 = p1->next; + else + while (!p1->back || p1->back == removing) + p1 = p1->next; + p2 = p1->next; + if (!removing) + while (!p2->back) + p2 = p2->next; + else + while (!p2->back || p2->back == removing) + p2 = p2->next; + p1 = p1->back; + p2 = p2->back; + if (p->back == p1) p1 = NULL; + else if (p->back == p2) p2 = NULL; + memcpy(p->oldbase, p->base, endsite*sizeof(long)); + memcpy(p->oldnumsteps, p->numsteps, endsite*sizeof(long)); + fillin(p, p1, p2); + } + } + p = p->next; + } while (p != q); + q = p; + do { + preorder(p->next->back, p->next, root, removing, adding, NULL, 0); + p = p->next; + } while (p->next != q); + } +} /* preorder */ + + +void updatenumdesc(node *p, node *root, long n) +{ + /* set p's numdesc to n. If p is the root, numdesc of p's + descendants are set to n-1. */ + node *q; + + q = p; + if (p == root && n > 0) { + p->numdesc = n; + n--; + q = q->next; + } + do { + q->numdesc = n; + q = q->next; + } while (q != p); +} /* updatenumdesc */ + + +void add(node *below,node *newtip,node *newfork,node **root, + boolean recompute,pointarray treenode,node **grbg,long *zeros) +{ + /* inserts the nodes newfork and its left descendant, newtip, + to the tree. below becomes newfork's right descendant. + if newfork is NULL, newtip is added as below's sibling */ + /* used in dnacomp & dnapars */ + node *p; + + if (below != treenode[below->index - 1]) + below = treenode[below->index - 1]; + if (newfork) { + if (below->back != NULL) + below->back->back = newfork; + newfork->back = below->back; + below->back = newfork->next->next; + newfork->next->next->back = below; + newfork->next->back = newtip; + newtip->back = newfork->next; + if (*root == below) + *root = newfork; + updatenumdesc(newfork, *root, 2); + } else { + gnutreenode(grbg, &p, below->index, endsite, zeros); + p->back = newtip; + newtip->back = p; + p->next = below->next; + below->next = p; + updatenumdesc(below, *root, below->numdesc + 1); + } + if (!newtip->tip) + updatenumdesc(newtip, *root, newtip->numdesc); + (*root)->back = NULL; + if (!recompute) + return; + if (!newfork) { + memcpy(newtip->back->base, below->base, endsite*sizeof(long)); + memcpy(newtip->back->numsteps, below->numsteps, endsite*sizeof(long)); + memcpy(newtip->back->numnuc, below->numnuc, endsite*sizeof(nucarray)); + if (below != *root) { + memcpy(below->back->oldbase, zeros, endsite*sizeof(long)); + memcpy(below->back->oldnumsteps, zeros, endsite*sizeof(long)); + multifillin(newtip->back, below->back, 1); + } + if (!newtip->tip) { + memcpy(newtip->back->oldbase, zeros, endsite*sizeof(long)); + memcpy(newtip->back->oldnumsteps, zeros, endsite*sizeof(long)); + preorder(newtip, newtip->back, *root, NULL, NULL, below, 1); + } + memcpy(newtip->oldbase, zeros, endsite*sizeof(long)); + memcpy(newtip->oldnumsteps, zeros, endsite*sizeof(long)); + preorder(below, newtip, *root, NULL, newtip, below, 1); + if (below != *root) + preorder(below->back, below, *root, NULL, NULL, NULL, 0); + } else { + fillin(newtip->back, newtip->back->next->back, + newtip->back->next->next->back); + if (!newtip->tip) { + memcpy(newtip->back->oldbase, zeros, endsite*sizeof(long)); + memcpy(newtip->back->oldnumsteps, zeros, endsite*sizeof(long)); + preorder(newtip, newtip->back, *root, NULL, NULL, newfork, 1); + } + if (newfork != *root) { + memcpy(below->back->base, newfork->back->base, endsite*sizeof(long)); + memcpy(below->back->numsteps, newfork->back->numsteps, endsite*sizeof(long)); + preorder(newfork, newtip, *root, NULL, newtip, NULL, 0); + } else { + fillin(below->back, newtip, NULL); + fillin(newfork, newtip, below); + memcpy(below->back->oldbase, zeros, endsite*sizeof(long)); + memcpy(below->back->oldnumsteps, zeros, endsite*sizeof(long)); + preorder(below, below->back, *root, NULL, NULL, newfork, 1); + } + if (newfork != *root) { + memcpy(newfork->oldbase, below->base, endsite*sizeof(long)); + memcpy(newfork->oldnumsteps, below->numsteps, endsite*sizeof(long)); + preorder(newfork->back, newfork, *root, NULL, NULL, NULL, 0); + } + } +} /* add */ + + +void findbelow(node **below, node *item, node *fork) +{ + /* decide which of fork's binary children is below */ + + if (fork->next->back == item) + *below = fork->next->next->back; + else + *below = fork->next->back; +} /* findbelow */ + + +void re_move(node *item, node **fork, node **root, boolean recompute, + pointarray treenode, node **grbg, long *zeros) +{ + /* removes nodes item and its ancestor, fork, from the tree. + the new descendant of fork's ancestor is made to be + fork's second descendant (other than item). Also + returns pointers to the deleted nodes, item and fork. + If item belongs to a node with more than 2 descendants, + fork will not be deleted */ + /* used in dnacomp & dnapars */ + node *p, *q, *other = NULL, *otherback = NULL; + + if (item->back == NULL) { + *fork = NULL; + return; + } + *fork = treenode[item->back->index - 1]; + if ((*fork)->numdesc == 2) { + updatenumdesc(*fork, *root, 0); + findbelow(&other, item, *fork); + otherback = other->back; + if (*root == *fork) { + *root = other; + if (!other->tip) + updatenumdesc(other, *root, other->numdesc); + } + p = item->back->next->back; + q = item->back->next->next->back; + if (p != NULL) + p->back = q; + if (q != NULL) + q->back = p; + (*fork)->back = NULL; + p = (*fork)->next; + while (p != *fork) { + p->back = NULL; + p = p->next; + } + } else { + updatenumdesc(*fork, *root, (*fork)->numdesc - 1); + p = *fork; + while (p->next != item->back) + p = p->next; + p->next = item->back->next; + } + if (!item->tip) { + updatenumdesc(item, item, item->numdesc); + if (recompute) { + memcpy(item->back->oldbase, item->back->base, endsite*sizeof(long)); + memcpy(item->back->oldnumsteps, item->back->numsteps, endsite*sizeof(long)); + memcpy(item->back->base, zeros, endsite*sizeof(long)); + memcpy(item->back->numsteps, zeros, endsite*sizeof(long)); + preorder(item, item->back, *root, item->back, NULL, item, -1); + } + } + if ((*fork)->numdesc >= 2) + chucktreenode(grbg, item->back); + item->back = NULL; + if (!recompute) + return; + if ((*fork)->numdesc == 0) { + memcpy(otherback->oldbase, otherback->base, endsite*sizeof(long)); + memcpy(otherback->oldnumsteps, otherback->numsteps, endsite*sizeof(long)); + if (other == *root) { + memcpy(otherback->base, zeros, endsite*sizeof(long)); + memcpy(otherback->numsteps, zeros, endsite*sizeof(long)); + } else { + memcpy(otherback->base, other->back->base, endsite*sizeof(long)); + memcpy(otherback->numsteps, other->back->numsteps, endsite*sizeof(long)); + } + p = other->back; + other->back = otherback; + if (other == *root) + preorder(other, otherback, *root, otherback, NULL, other, -1); + else + preorder(other, otherback, *root, NULL, NULL, NULL, 0); + other->back = p; + if (other != *root) { + memcpy(other->oldbase,(*fork)->base, endsite*sizeof(long)); + memcpy(other->oldnumsteps,(*fork)->numsteps, endsite*sizeof(long)); + preorder(other->back, other, *root, NULL, NULL, NULL, 0); + } + } else { + memcpy(item->oldbase, item->base, endsite*sizeof(long)); + memcpy(item->oldnumsteps, item->numsteps, endsite*sizeof(long)); + memcpy(item->base, zeros, endsite*sizeof(long)); + memcpy(item->numsteps, zeros, endsite*sizeof(long)); + preorder(*fork, item, *root, NULL, NULL, *fork, -1); + if (*fork != *root) + preorder((*fork)->back, *fork, *root, NULL, NULL, NULL, 0); + memcpy(item->base, item->oldbase, endsite*sizeof(long)); + memcpy(item->numsteps, item->oldnumsteps, endsite*sizeof(long)); + } +} /* remove */ + + +void postorder(node *p) +{ + /* traverses an n-ary tree, suming up steps at a node's descendants */ + /* used in dnacomp, dnapars, & dnapenny */ + node *q; + + if (p->tip) + return; + q = p->next; + while (q != p) { + postorder(q->back); + q = q->next; + } + zeronumnuc(p, endsite); + if (p->numdesc > 2) + multisumnsteps2(p); + else + fillin(p, p->next->back, p->next->next->back); +} /* postorder */ + + +void getnufork(node **nufork,node **grbg,pointarray treenode,long *zeros) +{ + /* find a fork not used currently */ + long i; + + i = spp; + while (treenode[i] && treenode[i]->numdesc > 0) i++; + if (!treenode[i]) + gnutreenode(grbg, &treenode[i], i, endsite, zeros); + *nufork = treenode[i]; +} /* getnufork */ + + +void reroot(node *outgroup, node *root) +{ + /* reorients tree, putting outgroup in desired position. used if + the root is binary. */ + /* used in dnacomp & dnapars */ + node *p, *q; + + if (outgroup->back->index == root->index) + return; + p = root->next; + q = root->next->next; + p->back->back = q->back; + q->back->back = p->back; + p->back = outgroup; + q->back = outgroup->back; + outgroup->back->back = q; + outgroup->back = p; +} /* reroot */ + + +void reroot2(node *outgroup, node *root) +{ + /* reorients tree, putting outgroup in desired position. */ + /* used in dnacomp & dnapars */ + node *p; + + p = outgroup->back->next; + while (p->next != outgroup->back) + p = p->next; + root->next = outgroup->back; + p->next = root; +} /* reroot2 */ + + +void reroot3(node *outgroup, node *root, node *root2, node *lastdesc, + node **grbg) +{ + /* reorients tree, putting back outgroup in original position. */ + /* used in dnacomp & dnapars */ + node *p; + + p = root->next; + while (p->next != root) + p = p->next; + chucktreenode(grbg, root); + p->next = outgroup->back; + root2->next = lastdesc->next; + lastdesc->next = root2; +} /* reroot3 */ + + +void savetraverse(node *p) +{ + /* sets BOOLEANs that indicate which way is down */ + node *q; + + p->bottom = true; + if (p->tip) + return; + q = p->next; + while (q != p) { + q->bottom = false; + savetraverse(q->back); + q = q->next; + } +} /* savetraverse */ + + +void newindex(long i, node *p) +{ + /* assigns index i to node p */ + + while (p->index != i) { + p->index = i; + p = p->next; + } +} /* newindex */ + + +void flipindexes(long nextnode, pointarray treenode) +{ + /* flips index of nodes between nextnode and last node. */ + long last; + node *temp; + + last = nonodes; + while (treenode[last - 1]->numdesc == 0) + last--; + if (last > nextnode) { + temp = treenode[nextnode - 1]; + treenode[nextnode - 1] = treenode[last - 1]; + treenode[last - 1] = temp; + newindex(nextnode, treenode[nextnode - 1]); + newindex(last, treenode[last - 1]); + } +} /* flipindexes */ + + +boolean parentinmulti(node *anode) +{ + /* sees if anode's parent has more than 2 children */ + node *p; + + while (!anode->bottom) anode = anode->next; + p = anode->back; + while (!p->bottom) + p = p->next; + return (p->numdesc > 2); +} /* parentinmulti */ + + +long sibsvisited(node *anode, long *place) +{ + /* computes the number of nodes which are visited earlier than anode among + its siblings */ + node *p; + long nvisited; + + while (!anode->bottom) anode = anode->next; + p = anode->back->next; + nvisited = 0; + do { + if (!p->bottom && place[p->back->index - 1] != 0) + nvisited++; + p = p->next; + } while (p != anode->back); + return nvisited; +} /* sibsvisited */ + + +long smallest(node *anode, long *place) +{ + /* finds the smallest index of sibling of anode */ + node *p; + long min; + + while (!anode->bottom) anode = anode->next; + p = anode->back->next; + if (p->bottom) p = p->next; + min = nonodes; + do { + if (p->back && place[p->back->index - 1] != 0) { + if (p->back->index <= spp) { + if (p->back->index < min) + min = p->back->index; + } else { + if (place[p->back->index - 1] < min) + min = place[p->back->index - 1]; + } + } + p = p->next; + if (p->bottom) p = p->next; + } while (p != anode->back); + return min; +} /* smallest */ + + +void bintomulti(node **root, node **binroot, node **grbg, long *zeros) +{ /* attaches root's left child to its right child and makes + the right child new root */ + node *left, *right, *newnode, *temp; + + right = (*root)->next->next->back; + left = (*root)->next->back; + if (right->tip) { + (*root)->next = right->back; + (*root)->next->next = left->back; + temp = left; + left = right; + right = temp; + right->back->next = *root; + } + gnutreenode(grbg, &newnode, right->index, endsite, zeros); + newnode->next = right->next; + newnode->back = left; + left->back = newnode; + right->next = newnode; + (*root)->next->back = (*root)->next->next->back = NULL; + *binroot = *root; + (*binroot)->numdesc = 0; + *root = right; + (*root)->numdesc++; + (*root)->back = NULL; +} /* bintomulti */ + + +void backtobinary(node **root, node *binroot, node **grbg) +{ /* restores binary root */ + node *p; + + binroot->next->back = (*root)->next->back; + (*root)->next->back->back = binroot->next; + p = (*root)->next; + (*root)->next = p->next; + binroot->next->next->back = *root; + (*root)->back = binroot->next->next; + chucktreenode(grbg, p); + (*root)->numdesc--; + *root = binroot; + (*root)->numdesc = 2; +} /* backtobinary */ + + +boolean outgrin(node *root, node *outgrnode) +{ /* checks if outgroup node is a child of root */ + node *p; + + p = root->next; + while (p != root) { + if (p->back == outgrnode) + return true; + p = p->next; + } + return false; +} /* outgrin */ + + +void flipnodes(node *nodea, node *nodeb) +{ /* flip nodes */ + node *backa, *backb; + + backa = nodea->back; + backb = nodeb->back; + backa->back = nodeb; + backb->back = nodea; + nodea->back = backb; + nodeb->back = backa; +} /* flipnodes */ + + +void moveleft(node *root, node *outgrnode, node **flipback) +{ /* makes outgroup node to leftmost child of root */ + node *p; + boolean done; + + p = root->next; + done = false; + while (p != root && !done) { + if (p->back == outgrnode) { + *flipback = p; + flipnodes(root->next->back, p->back); + done = true; + } + p = p->next; + } +} /* moveleft */ + + +void savetree(node *root, long *place, pointarray treenode, + node **grbg, long *zeros) +{ /* record in place where each species has to be + added to reconstruct this tree */ + /* used by dnacomp & dnapars */ + long i, j, nextnode, nvisited; + node *p, *q, *r = NULL, *root2, *lastdesc, + *outgrnode, *binroot, *flipback; + boolean done, newfork; + + binroot = NULL; + lastdesc = NULL; + root2 = NULL; + flipback = NULL; + outgrnode = treenode[outgrno - 1]; + if (root->numdesc == 2) + bintomulti(&root, &binroot, grbg, zeros); + if (outgrin(root, outgrnode)) { + if (outgrnode != root->next->back) + moveleft(root, outgrnode, &flipback); + } else { + root2 = root; + lastdesc = root->next; + while (lastdesc->next != root) + lastdesc = lastdesc->next; + lastdesc->next = root->next; + gnutreenode(grbg, &root, outgrnode->back->index, endsite, zeros); + root->numdesc = root2->numdesc; + reroot2(outgrnode, root); + } + savetraverse(root); + nextnode = spp + 1; + for (i = nextnode; i <= nonodes; i++) + if (treenode[i - 1]->numdesc == 0) + flipindexes(i, treenode); + for (i = 0; i < nonodes; i++) + place[i] = 0; + place[root->index - 1] = 1; + for (i = 1; i <= spp; i++) { + p = treenode[i - 1]; + while (place[p->index - 1] == 0) { + place[p->index - 1] = i; + while (!p->bottom) + p = p->next; + r = p; + p = p->back; + } + if (i > 1) { + q = treenode[i - 1]; + newfork = true; + nvisited = sibsvisited(q, place); + if (nvisited == 0) { + if (parentinmulti(r)) { + nvisited = sibsvisited(r, place); + if (nvisited == 0) + place[i - 1] = place[p->index - 1]; + else if (nvisited == 1) + place[i - 1] = smallest(r, place); + else { + place[i - 1] = -smallest(r, place); + newfork = false; + } + } else + place[i - 1] = place[p->index - 1]; + } else if (nvisited == 1) { + place[i - 1] = place[p->index - 1]; + } else { + place[i - 1] = -smallest(q, place); + newfork = false; + } + if (newfork) { + j = place[p->index - 1]; + done = false; + while (!done) { + place[p->index - 1] = nextnode; + while (!p->bottom) + p = p->next; + p = p->back; + done = (p == NULL); + if (!done) + done = (place[p->index - 1] != j); + if (done) { + nextnode++; + } + } + } + } + } + if (flipback) + flipnodes(outgrnode, flipback->back); + else { + if (root2) { + reroot3(outgrnode, root, root2, lastdesc, grbg); + root = root2; + } + } + if (binroot) + backtobinary(&root, binroot, grbg); +} /* savetree */ + + +void addnsave(node *p, node *item, node *nufork, node **root, node **grbg, + boolean multf, pointarray treenode, long *place, long *zeros) +{ /* adds item to tree and save it. Then removes item. */ + node *dummy; + + if (!multf) + add(p, item, nufork, root, false, treenode, grbg, zeros); + else + add(p, item, NULL, root, false, treenode, grbg, zeros); + savetree(*root, place, treenode, grbg, zeros); + if (!multf) + re_move(item, &nufork, root, false, treenode, grbg, zeros); + else + re_move(item, &dummy, root, false, treenode, grbg, zeros); +} /* addnsave */ + + +void addbestever(long *pos, long *nextree, long maxtrees, boolean collapse, + long *place, bestelm *bestrees) +{ /* adds first best tree */ + + *pos = 1; + *nextree = 1; + initbestrees(bestrees, maxtrees, true); + initbestrees(bestrees, maxtrees, false); + addtree(*pos, nextree, collapse, place, bestrees); +} /* addbestever */ + + +void addtiedtree(long pos, long *nextree, long maxtrees, boolean collapse, + long *place, bestelm *bestrees) +{ /* add tied tree */ + + if (*nextree <= maxtrees) + addtree(pos, nextree, collapse, place, bestrees); +} /* addtiedtree */ + + +void clearcollapse(pointarray treenode) +{ + /* clears collapse status at a node */ + long i; + node *p; + + for (i = 0; i < nonodes; i++) { + treenode[i]->collapse = undefined; + if (!treenode[i]->tip) { + p = treenode[i]->next; + while (p != treenode[i]) { + p->collapse = undefined; + p = p->next; + } + } + } +} /* clearcollapse */ + + +void clearbottom(pointarray treenode) +{ + /* clears boolean bottom at a node */ + long i; + node *p; + + for (i = 0; i < nonodes; i++) { + treenode[i]->bottom = false; + if (!treenode[i]->tip) { + p = treenode[i]->next; + while (p != treenode[i]) { + p->bottom = false; + p = p->next; + } + } + } +} /* clearbottom */ + + +void collabranch(node *collapfrom, node *tempfrom, node *tempto) +{ /* collapse branch from collapfrom */ + long i, j, b, largest, descsteps; + boolean done; + + for (i = 0; i < endsite; i++) { + descsteps = 0; + for (j = (long)A; j <= (long)O; j++) { + b = 1 << j; + if ((descsteps == 0) && (collapfrom->base[i] & b)) + descsteps = tempfrom->oldnumsteps[i] + - (collapfrom->numdesc - collapfrom->numnuc[i][j]) + * weight[i]; + } + done = false; + for (j = (long)A; j <= (long)O; j++) { + b = 1 << j; + if (!done && (tempto->base[i] & b)) { + descsteps += (tempto->numsteps[i] + - (tempto->numdesc - collapfrom->numdesc + - tempto->numnuc[i][j]) * weight[i]); + done = true; + } + } + for (j = (long)A; j <= (long)O; j++) + tempto->numnuc[i][j] += collapfrom->numnuc[i][j]; + largest = getlargest(tempto->numnuc[i]); + tempto->base[i] = 0; + for (j = (long)A; j <= (long)O; j++) { + if (tempto->numnuc[i][j] == largest) + tempto->base[i] |= (1 << j); + } + tempto->numsteps[i] = (tempto->numdesc - largest) * weight[i] + descsteps; + } +} /* collabranch */ + + +boolean allcommonbases(node *a, node *b, boolean *allsame) +{ /* see if bases are common at all sites for nodes a and b */ + long i; + boolean allcommon; + + allcommon = true; + *allsame = true; + for (i = 0; i < endsite; i++) { + if ((a->base[i] & b->base[i]) == 0) + allcommon = false; + else if (a->base[i] != b->base[i]) + *allsame = false; + } + return allcommon; +} /* allcommonbases */ + + +void findbottom(node *p, node **bottom) +{ /* find a node with field bottom set at node p */ + node *q; + + if (p->bottom) + *bottom = p; + else { + q = p->next; + while(!q->bottom && q != p) + q = q->next; + *bottom = q; + } +} /* findbottom */ + + +boolean moresteps(node *a, node *b) +{ /* see if numsteps of node a exceeds those of node b */ + long i; + + for (i = 0; i < endsite; i++) + if (a->numsteps[i] > b->numsteps[i]) + return true; + return false; +} /* moresteps */ + + +boolean passdown(node *desc, node *parent, node *start, node *below, + node *item, node *added, node *total, node *tempdsc, + node *tempprt, boolean multf) +{ /* track down to node start to see if an ancestor branch can be collapsed */ + node *temp; + boolean done, allsame; + + done = (parent == start); + while (!done) { + desc = parent; + findbottom(parent->back, &parent); + if (multf && start == below && parent == below) + parent = added; + memcpy(tempdsc->base, tempprt->base, endsite*sizeof(long)); + memcpy(tempdsc->numsteps, tempprt->numsteps, endsite*sizeof(long)); + memcpy(tempdsc->oldbase, desc->base, endsite*sizeof(long)); + memcpy(tempdsc->oldnumsteps, desc->numsteps, endsite*sizeof(long)); + memcpy(tempprt->base, parent->base, endsite*sizeof(long)); + memcpy(tempprt->numsteps, parent->numsteps, endsite*sizeof(long)); + memcpy(tempprt->numnuc, parent->numnuc, endsite*sizeof(nucarray)); + tempprt->numdesc = parent->numdesc; + multifillin(tempprt, tempdsc, 0); + if (!allcommonbases(tempprt, parent, &allsame)) + return false; + else if (moresteps(tempprt, parent)) + return false; + else if (allsame) + return true; + if (parent == added) + parent = below; + done = (parent == start); + if (done && ((start == item) || (!multf && start == below))) { + memcpy(tempdsc->base, tempprt->base, endsite*sizeof(long)); + memcpy(tempdsc->numsteps, tempprt->numsteps, endsite*sizeof(long)); + memcpy(tempdsc->oldbase, start->base, endsite*sizeof(long)); + memcpy(tempdsc->oldnumsteps, start->numsteps, endsite*sizeof(long)); + multifillin(added, tempdsc, 0); + tempprt = added; + } + } + temp = tempdsc; + if (start == below || start == item) + fillin(temp, tempprt, below->back); + else + fillin(temp, tempprt, added); + return !moresteps(temp, total); +} /* passdown */ + + +boolean trycollapdesc(node *desc, node *parent, node *start, + node *below, node *item, node *added, node *total, + node *tempdsc, node *tempprt, boolean multf, long *zeros) + { /* see if branch between nodes desc and parent can be collapsed */ + boolean allsame; + + if (desc->numdesc == 1) + return true; + if (multf && start == below && parent == below) + parent = added; + memcpy(tempdsc->base, zeros, endsite*sizeof(long)); + memcpy(tempdsc->numsteps, zeros, endsite*sizeof(long)); + memcpy(tempdsc->oldbase, desc->base, endsite*sizeof(long)); + memcpy(tempdsc->oldnumsteps, desc->numsteps, endsite*sizeof(long)); + memcpy(tempprt->base, parent->base, endsite*sizeof(long)); + memcpy(tempprt->numsteps, parent->numsteps, endsite*sizeof(long)); + memcpy(tempprt->numnuc, parent->numnuc, endsite*sizeof(nucarray)); + tempprt->numdesc = parent->numdesc - 1; + multifillin(tempprt, tempdsc, -1); + tempprt->numdesc += desc->numdesc; + collabranch(desc, tempdsc, tempprt); + if (!allcommonbases(tempprt, parent, &allsame) || + moresteps(tempprt, parent)) { + if (parent != added) { + desc->collapse = nocollap; + parent->collapse = nocollap; + } + return false; + } else if (allsame) { + if (parent != added) { + desc->collapse = tocollap; + parent->collapse = tocollap; + } + return true; + } + if (parent == added) + parent = below; + if ((start == item && parent == item) || + (!multf && start == below && parent == below)) { + memcpy(tempdsc->base, tempprt->base, endsite*sizeof(long)); + memcpy(tempdsc->numsteps, tempprt->numsteps, endsite*sizeof(long)); + memcpy(tempdsc->oldbase, start->base, endsite*sizeof(long)); + memcpy(tempdsc->oldnumsteps, start->numsteps, endsite*sizeof(long)); + memcpy(tempprt->base, added->base, endsite*sizeof(long)); + memcpy(tempprt->numsteps, added->numsteps, endsite*sizeof(long)); + memcpy(tempprt->numnuc, added->numnuc, endsite*sizeof(nucarray)); + tempprt->numdesc = added->numdesc; + multifillin(tempprt, tempdsc, 0); + if (!allcommonbases(tempprt, added, &allsame)) + return false; + else if (moresteps(tempprt, added)) + return false; + else if (allsame) + return true; + } + return passdown(desc, parent, start, below, item, added, total, tempdsc, + tempprt, multf); +} /* trycollapdesc */ + + +void setbottom(node *p) +{ /* set field bottom at node p */ + node *q; + + p->bottom = true; + q = p->next; + do { + q->bottom = false; + q = q->next; + } while (q != p); +} /* setbottom */ + +boolean zeroinsubtree(node *subtree, node *start, node *below, node *item, + node *added, node *total, node *tempdsc, node *tempprt, + boolean multf, node* root, long *zeros) +{ /* sees if subtree contains a zero length branch */ + node *p; + + if (!subtree->tip) { + setbottom(subtree); + p = subtree->next; + do { + if (p->back && !p->back->tip && + !((p->back->collapse == nocollap) && (subtree->collapse == nocollap)) + && (subtree->numdesc != 1)) { + if ((p->back->collapse == tocollap) && (subtree->collapse == tocollap) + && multf && (subtree != below)) + return true; + /* when root->numdesc == 2 + * there is no mandatory step at the root, + * instead of checking at the root we check around it + * we only need to check p because the first if + * statement already gets rid of it for the subtree */ + else if ((p->back->index != root->index || root->numdesc > 2) && + trycollapdesc(p->back, subtree, start, below, item, added, total, + tempdsc, tempprt, multf, zeros)) + return true; + else if ((p->back->index == root->index && root->numdesc == 2) && + !(root->next->back->tip) && !(root->next->next->back->tip) && + trycollapdesc(root->next->back, root->next->next->back, start, + below, item,added, total, tempdsc, tempprt, multf, zeros)) + return true; + } + p = p->next; + } while (p != subtree); + p = subtree->next; + do { + if (p->back && !p->back->tip) { + if (zeroinsubtree(p->back, start, below, item, added, total, + tempdsc, tempprt, multf, root, zeros)) + return true; + } + p = p->next; + } while (p != subtree); + } + return false; +} /* zeroinsubtree */ + + +boolean collapsible(node *item, node *below, node *temp, node *temp1, + node *tempdsc, node *tempprt, node *added, node *total, + boolean multf, node *root, long *zeros, pointarray treenode) +{ + /* sees if any branch can be collapsed */ + node *belowbk; + boolean allsame; + + if (multf) { + memcpy(tempdsc->base, item->base, endsite*sizeof(long)); + memcpy(tempdsc->numsteps, item->numsteps, endsite*sizeof(long)); + memcpy(tempdsc->oldbase, zeros, endsite*sizeof(long)); + memcpy(tempdsc->oldnumsteps, zeros, endsite*sizeof(long)); + memcpy(added->base, below->base, endsite*sizeof(long)); + memcpy(added->numsteps, below->numsteps, endsite*sizeof(long)); + memcpy(added->numnuc, below->numnuc, endsite*sizeof(nucarray)); + added->numdesc = below->numdesc + 1; + multifillin(added, tempdsc, 1); + } else { + fillin(added, item, below); + added->numdesc = 2; + } + fillin(total, added, below->back); + clearbottom(treenode); + if (below->back) { + if (zeroinsubtree(below->back, below->back, below, item, added, total, + tempdsc, tempprt, multf, root, zeros)) + return true; + } + if (multf) { + if (zeroinsubtree(below, below, below, item, added, total, + tempdsc, tempprt, multf, root, zeros)) + return true; + } else if (!below->tip) { + if (zeroinsubtree(below, below, below, item, added, total, + tempdsc, tempprt, multf, root, zeros)) + return true; + } + if (!item->tip) { + if (zeroinsubtree(item, item, below, item, added, total, + tempdsc, tempprt, multf, root, zeros)) + return true; + } + if (multf && below->back && !below->back->tip) { + memcpy(tempdsc->base, zeros, endsite*sizeof(long)); + memcpy(tempdsc->numsteps, zeros, endsite*sizeof(long)); + memcpy(tempdsc->oldbase, added->base, endsite*sizeof(long)); + memcpy(tempdsc->oldnumsteps, added->numsteps, endsite*sizeof(long)); + if (below->back == treenode[below->back->index - 1]) + belowbk = below->back->next; + else + belowbk = treenode[below->back->index - 1]; + memcpy(tempprt->base, belowbk->base, endsite*sizeof(long)); + memcpy(tempprt->numsteps, belowbk->numsteps, endsite*sizeof(long)); + memcpy(tempprt->numnuc, belowbk->numnuc, endsite*sizeof(nucarray)); + tempprt->numdesc = belowbk->numdesc - 1; + multifillin(tempprt, tempdsc, -1); + tempprt->numdesc += added->numdesc; + collabranch(added, tempdsc, tempprt); + if (!allcommonbases(tempprt, belowbk, &allsame)) + return false; + else if (allsame && !moresteps(tempprt, belowbk)) + return true; + else if (belowbk->back) { + fillin(temp, tempprt, belowbk->back); + fillin(temp1, belowbk, belowbk->back); + return !moresteps(temp, temp1); + } + } + return false; +} /* collapsible */ + + +void replaceback(node **oldback, node *item, node *forknode, + node **grbg, long *zeros) +{ /* replaces back node of item with another */ + node *p; + + p = forknode; + while (p->next->back != item) + p = p->next; + *oldback = p->next; + gnutreenode(grbg, &p->next, forknode->index, endsite, zeros); + p->next->next = (*oldback)->next; + p->next->back = (*oldback)->back; + p->next->back->back = p->next; + (*oldback)->next = (*oldback)->back = NULL; +} /* replaceback */ + + +void putback(node *oldback, node *item, node *forknode, node **grbg) +{ /* restores node to back of item */ + node *p, *q; + + p = forknode; + while (p->next != item->back) + p = p->next; + q = p->next; + oldback->next = p->next->next; + p->next = oldback; + oldback->back = item; + item->back = oldback; + oldback->index = forknode->index; + chucktreenode(grbg, q); +} /* putback */ + + +void savelocrearr(node *item, node *forknode, node *below, node *tmp, + node *tmp1, node *tmp2, node *tmp3, node *tmprm, node *tmpadd, + node **root, long maxtrees, long *nextree, boolean multf, + boolean bestever, boolean *saved, long *place, + bestelm *bestrees, pointarray treenode, node **grbg, + long *zeros) +{ /* saves tied or better trees during local rearrangements by removing + item from forknode and adding to below */ + node *other, *otherback = NULL, *oldfork, *nufork, *oldback; + long pos; + boolean found, collapse; + + if (forknode->numdesc == 2) { + findbelow(&other, item, forknode); + otherback = other->back; + oldback = NULL; + } else { + other = NULL; + replaceback(&oldback, item, forknode, grbg, zeros); + } + re_move(item, &oldfork, root, false, treenode, grbg, zeros); + if (!multf) + getnufork(&nufork, grbg, treenode, zeros); + else + nufork = NULL; + addnsave(below, item, nufork, root, grbg, multf, treenode, place, zeros); + pos = 0; + findtree(&found, &pos, *nextree, place, bestrees); + if (other) { + add(other, item, oldfork, root, false, treenode, grbg, zeros); + if (otherback->back != other) + flipnodes(item, other); + } else + add(forknode, item, NULL, root, false, treenode, grbg, zeros); + *saved = false; + if (found) { + if (oldback) + putback(oldback, item, forknode, grbg); + } else { + if (oldback) + chucktreenode(grbg, oldback); + re_move(item, &oldfork, root, true, treenode, grbg, zeros); + collapse = collapsible(item, below, tmp, tmp1, tmp2, tmp3, tmprm, + tmpadd, multf, *root, zeros, treenode); + if (!collapse) { + if (bestever) + addbestever(&pos, nextree, maxtrees, collapse, place, bestrees); + else + addtiedtree(pos, nextree, maxtrees, collapse, place, bestrees); + } + if (other) + add(other, item, oldfork, root, true, treenode, grbg, zeros); + else + add(forknode, item, NULL, root, true, treenode, grbg, zeros); + *saved = !collapse; + } +} /* savelocrearr */ + + +void clearvisited(pointarray treenode) +{ + /* clears boolean visited at a node */ + long i; + node *p; + + for (i = 0; i < nonodes; i++) { + treenode[i]->visited = false; + if (!treenode[i]->tip) { + p = treenode[i]->next; + while (p != treenode[i]) { + p->visited = false; + p = p->next; + } + } + } +} /* clearvisited */ + + +void hyprint(long b1, long b2, struct LOC_hyptrav *htrav, + pointarray treenode, Char *basechar) +{ + /* print out states in sites b1 through b2 at node */ + long i, j, k, n; + boolean dot; + bases b; + + if (htrav->bottom) { + if (!outgropt) + fprintf(outfile, " "); + else + fprintf(outfile, "root "); + } else + fprintf(outfile, "%4ld ", htrav->r->back->index - spp); + if (htrav->r->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[htrav->r->index - 1][i], outfile); + } else + fprintf(outfile, "%4ld ", htrav->r->index - spp); + if (htrav->bottom) + fprintf(outfile, " "); + else if (htrav->nonzero) + fprintf(outfile, " yes "); + else if (htrav->maybe) + fprintf(outfile, " maybe "); + else + fprintf(outfile, " no "); + for (i = b1; i <= b2; i++) { + j = location[ally[i - 1] - 1]; + htrav->tempset = htrav->r->base[j - 1]; + htrav->anc = htrav->hypset[j - 1]; + if (!htrav->bottom) + htrav->anc = treenode[htrav->r->back->index - 1]->base[j - 1]; + dot = dotdiff && (htrav->tempset == htrav->anc && !htrav->bottom); + if (dot) + putc('.', outfile); + else if (htrav->tempset == (1 << A)) + putc('A', outfile); + else if (htrav->tempset == (1 << C)) + putc('C', outfile); + else if (htrav->tempset == (1 << G)) + putc('G', outfile); + else if (htrav->tempset == (1 << T)) + putc('T', outfile); + else if (htrav->tempset == (1 << O)) + putc('-', outfile); + else { + k = 1; + n = 0; + for (b = A; b <= O; b = b + 1) { + if (((1 << b) & htrav->tempset) != 0) + n += k; + k += k; + } + putc(basechar[n - 1], outfile); + } + if (i % 10 == 0) + putc(' ', outfile); + } + putc('\n', outfile); +} /* hyprint */ + + +void gnubase(gbases **p, gbases **garbage, long endsite) +{ + /* this and the following are do-it-yourself garbage collectors. + Make a new node or pull one off the garbage list */ + if (*garbage != NULL) { + *p = *garbage; + *garbage = (*garbage)->next; + } else { + *p = (gbases *)Malloc(sizeof(gbases)); + (*p)->base = (baseptr)Malloc(endsite*sizeof(long)); + } + (*p)->next = NULL; +} /* gnubase */ + + +void chuckbase(gbases *p, gbases **garbage) +{ + /* collect garbage on p -- put it on front of garbage list */ + p->next = *garbage; + *garbage = p; +} /* chuckbase */ + + +void hyptrav(node *r_, long *hypset_, long b1, long b2, boolean bottom_, + pointarray treenode, gbases **garbage, Char *basechar) +{ + /* compute, print out states at one interior node */ + struct LOC_hyptrav Vars; + long i, j, k; + long largest; + gbases *ancset; + nucarray *tempnuc; + node *p, *q; + + Vars.bottom = bottom_; + Vars.r = r_; + Vars.hypset = hypset_; + gnubase(&ancset, garbage, endsite); + tempnuc = (nucarray *)Malloc(endsite*sizeof(nucarray)); + Vars.maybe = false; + Vars.nonzero = false; + if (!Vars.r->tip) + zeronumnuc(Vars.r, endsite); + for (i = b1 - 1; i < b2; i++) { + j = location[ally[i] - 1]; + Vars.anc = Vars.hypset[j - 1]; + if (!Vars.r->tip) { + p = Vars.r->next; + for (k = (long)A; k <= (long)O; k++) + if (Vars.anc & (1 << k)) + Vars.r->numnuc[j - 1][k]++; + do { + for (k = (long)A; k <= (long)O; k++) + if (p->back->base[j - 1] & (1 << k)) + Vars.r->numnuc[j - 1][k]++; + p = p->next; + } while (p != Vars.r); + largest = getlargest(Vars.r->numnuc[j - 1]); + Vars.tempset = 0; + for (k = (long)A; k <= (long)O; k++) { + if (Vars.r->numnuc[j - 1][k] == largest) + Vars.tempset |= (1 << k); + } + Vars.r->base[j - 1] = Vars.tempset; + } + if (!Vars.bottom) + Vars.anc = treenode[Vars.r->back->index - 1]->base[j - 1]; + Vars.nonzero = (Vars.nonzero || (Vars.r->base[j - 1] & Vars.anc) == 0); + Vars.maybe = (Vars.maybe || Vars.r->base[j - 1] != Vars.anc); + } + hyprint(b1, b2, &Vars, treenode, basechar); + Vars.bottom = false; + if (!Vars.r->tip) { + memcpy(tempnuc, Vars.r->numnuc, endsite*sizeof(nucarray)); + q = Vars.r->next; + do { + memcpy(Vars.r->numnuc, tempnuc, endsite*sizeof(nucarray)); + for (i = b1 - 1; i < b2; i++) { + j = location[ally[i] - 1]; + for (k = (long)A; k <= (long)O; k++) + if (q->back->base[j - 1] & (1 << k)) + Vars.r->numnuc[j - 1][k]--; + largest = getlargest(Vars.r->numnuc[j - 1]); + ancset->base[j - 1] = 0; + for (k = (long)A; k <= (long)O; k++) + if (Vars.r->numnuc[j - 1][k] == largest) + ancset->base[j - 1] |= (1 << k); + if (!Vars.bottom) + Vars.anc = ancset->base[j - 1]; + } + hyptrav(q->back, ancset->base, b1, b2, Vars.bottom, + treenode, garbage, basechar); + q = q->next; + } while (q != Vars.r); + } + chuckbase(ancset, garbage); +} /* hyptrav */ + + +void hypstates(long chars, node *root, pointarray treenode, + gbases **garbage, Char *basechar) +{ + /* fill in and describe states at interior nodes */ + /* used in dnacomp, dnapars, & dnapenny */ + long i, n; + baseptr nothing; + + fprintf(outfile, "\nFrom To Any Steps? State at upper node\n"); + fprintf(outfile, " "); + if (dotdiff) + fprintf(outfile, " ( . means same as in the node below it on tree)\n"); + nothing = (baseptr)Malloc(endsite*sizeof(long)); + for (i = 0; i < endsite; i++) + nothing[i] = 0; + for (i = 1; i <= ((chars - 1) / 40 + 1); i++) { + putc('\n', outfile); + n = i * 40; + if (n > chars) + n = chars; + hyptrav(root, nothing, i * 40 - 39, n, true, treenode, garbage, basechar); + } + free(nothing); +} /* hypstates */ + + +void initbranchlen(node *p) +{ + node *q; + + p->v = 0.0; + if (p->back) + p->back->v = 0.0; + if (p->tip) + return; + q = p->next; + while (q != p) { + initbranchlen(q->back); + q = q->next; + } + q = p->next; + while (q != p) { + q->v = 0.0; + q = q->next; + } +} /* initbranchlen */ + + +void initmin(node *p, long sitei, boolean internal) +{ + long i; + + if (internal) { + for (i = (long)A; i <= (long)O; i++) { + p->cumlengths[i] = 0; + p->numreconst[i] = 1; + } + } else { + for (i = (long)A; i <= (long)O; i++) { + if (p->base[sitei - 1] & (1 << i)) { + p->cumlengths[i] = 0; + p->numreconst[i] = 1; + } else { + p->cumlengths[i] = -1; + p->numreconst[i] = 0; + } + } + } +} /* initmin */ + + +void initbase(node *p, long sitei) +{ + /* traverse tree to initialize base at internal nodes */ + node *q; + long i, largest; + + if (p->tip) + return; + q = p->next; + while (q != p) { + if (q->back) { + memcpy(q->numnuc, p->numnuc, endsite*sizeof(nucarray)); + for (i = (long)A; i <= (long)O; i++) { + if (q->back->base[sitei - 1] & (1 << i)) + q->numnuc[sitei - 1][i]--; + } + if (p->back) { + for (i = (long)A; i <= (long)O; i++) { + if (p->back->base[sitei - 1] & (1 << i)) + q->numnuc[sitei - 1][i]++; + } + } + largest = getlargest(q->numnuc[sitei - 1]); + q->base[sitei - 1] = 0; + for (i = (long)A; i <= (long)O; i++) { + if (q->numnuc[sitei - 1][i] == largest) + q->base[sitei - 1] |= (1 << i); + } + } + q = q->next; + } + q = p->next; + while (q != p) { + initbase(q->back, sitei); + q = q->next; + } +} /* initbase */ + + +void inittreetrav(node *p, long sitei) +{ + /* traverse tree to clear boolean initialized and set up base */ + node *q; + + if (p->tip) { + initmin(p, sitei, false); + p->initialized = true; + return; + } + q = p->next; + while (q != p) { + inittreetrav(q->back, sitei); + q = q->next; + } + initmin(p, sitei, true); + p->initialized = false; + q = p->next; + while (q != p) { + initmin(q, sitei, true); + q->initialized = false; + q = q->next; + } +} /* inittreetrav */ + + +void compmin(node *p, node *desc) +{ + /* computes minimum lengths up to p */ + long i, j, minn, cost, desclen, descrecon=0, maxx; + + maxx = 10 * spp; + for (i = (long)A; i <= (long)O; i++) { + minn = maxx; + for (j = (long)A; j <= (long)O; j++) { + if (transvp) { + if ( + ( + ((i == (long)A) || (i == (long)G)) + && ((j == (long)A) || (j == (long)G)) + ) + || ( + ((j == (long)C) || (j == (long)T)) + && ((i == (long)C) || (i == (long)T)) + ) + ) + cost = 0; + else + cost = 1; + } else { + if (i == j) + cost = 0; + else + cost = 1; + } + if (desc->cumlengths[j] == -1) { + desclen = maxx; + } else { + desclen = desc->cumlengths[j]; + } + if (minn > cost + desclen) { + minn = cost + desclen; + descrecon = 0; + } + if (minn == cost + desclen) { + descrecon += desc->numreconst[j]; + } + } + p->cumlengths[i] += minn; + p->numreconst[i] *= descrecon; + } + p->initialized = true; +} /* compmin */ + + +void minpostorder(node *p, pointarray treenode) +{ + /* traverses an n-ary tree, computing minimum steps at each node */ + node *q; + + if (p->tip) { + return; + } + q = p->next; + while (q != p) { + if (q->back) + minpostorder(q->back, treenode); + q = q->next; + } + if (!p->initialized) { + q = p->next; + while (q != p) { + if (q->back) + compmin(p, q->back); + q = q->next; + } + } +} /* minpostorder */ + + +void branchlength(node *subtr1, node *subtr2, double *brlen, + pointarray treenode) +{ + /* computes a branch length between two subtrees for a given site */ + long i, j, minn, cost, nom, denom; + node *temp; + + if (subtr1->tip) { + temp = subtr1; + subtr1 = subtr2; + subtr2 = temp; + } + if (subtr1->index == outgrno) { + temp = subtr1; + subtr1 = subtr2; + subtr2 = temp; + } + minpostorder(subtr1, treenode); + minpostorder(subtr2, treenode); + minn = 10 * spp; + nom = 0; + denom = 0; + for (i = (long)A; i <= (long)O; i++) { + for (j = (long)A; j <= (long)O; j++) { + if (transvp) { + if ( + ( + ((i == (long)A) || (i == (long)G)) + && ((j == (long)A) || (j == (long)G)) + ) + || ( + ((j == (long)C) || (j == (long)T)) + && ((i == (long)C) || (i == (long)T)) + ) + ) + cost = 0; + else + cost = 1; + } else { + if (i == j) + cost = 0; + else + cost = 1; + } + if (subtr1->cumlengths[i] != -1 && (subtr2->cumlengths[j] != -1)) { + if (subtr1->cumlengths[i] + cost + subtr2->cumlengths[j] < minn) { + minn = subtr1->cumlengths[i] + cost + subtr2->cumlengths[j]; + nom = 0; + denom = 0; + } + if (subtr1->cumlengths[i] + cost + subtr2->cumlengths[j] == minn) { + nom += subtr1->numreconst[i] * subtr2->numreconst[j] * cost; + denom += subtr1->numreconst[i] * subtr2->numreconst[j]; + } + } + } + } + *brlen = (double)nom/(double)denom; +} /* branchlength */ + + +void printbranchlengths(node *p) +{ + node *q; + long i; + + if (p->tip) + return; + q = p->next; + do { + fprintf(outfile, "%6ld ",q->index - spp); + if (q->back->tip) { + for (i = 0; i < nmlngth; i++) + putc(nayme[q->back->index - 1][i], outfile); + } else + fprintf(outfile, "%6ld ", q->back->index - spp); + fprintf(outfile, " %f\n",q->v); + if (q->back) + printbranchlengths(q->back); + q = q->next; + } while (q != p); +} /* printbranchlengths */ + + +void branchlentrav(node *p, node *root, long sitei, long chars, + double *brlen, pointarray treenode) + { + /* traverses the tree computing tree length at each branch */ + node *q; + + if (p->tip) + return; + if (p->index == outgrno) + p = p->back; + q = p->next; + do { + if (q->back) { + branchlength(q, q->back, brlen, treenode); + q->v += ((weight[sitei - 1] / 10.0) * (*brlen)/chars); + q->back->v += ((weight[sitei - 1] / 10.0) * (*brlen)/chars); + if (!q->back->tip) + branchlentrav(q->back, root, sitei, chars, brlen, treenode); + } + q = q->next; + } while (q != p); +} /* branchlentrav */ + + +void treelength(node *root, long chars, pointarray treenode) + { + /* calls branchlentrav at each site */ + long sitei; + double trlen; + + initbranchlen(root); + for (sitei = 1; sitei <= endsite; sitei++) { + trlen = 0.0; + initbase(root, sitei); + inittreetrav(root, sitei); + branchlentrav(root, root, sitei, chars, &trlen, treenode); + } +} /* treelength */ + + +void coordinates(node *p, long *tipy, double f, long *fartemp) +{ + /* establishes coordinates of nodes for display without lengths */ + node *q, *first, *last; + node *mid1 = NULL, *mid2 = NULL; + long numbranches, numb2; + + if (p->tip) { + p->xcoord = 0; + p->ycoord = *tipy; + p->ymin = *tipy; + p->ymax = *tipy; + (*tipy) += down; + return; + } + numbranches = 0; + q = p->next; + do { + coordinates(q->back, tipy, f, fartemp); + numbranches += 1; + q = q->next; + } while (p != q); + first = p->next->back; + q = p->next; + while (q->next != p) + q = q->next; + last = q->back; + numb2 = 1; + q = p->next; + while (q != p) { + if (numb2 == (long)(numbranches + 1)/2) + mid1 = q->back; + if (numb2 == (long)(numbranches/2 + 1)) + mid2 = q->back; + numb2 += 1; + q = q->next; + } + p->xcoord = (long)((double)(last->ymax - first->ymin) * f); + p->ycoord = (long)((mid1->ycoord + mid2->ycoord) / 2); + p->ymin = first->ymin; + p->ymax = last->ymax; + if (p->xcoord > *fartemp) + *fartemp = p->xcoord; +} /* coordinates */ + + +void drawline(long i, double scale, node *root) +{ + /* draws one row of the tree diagram by moving up tree */ + node *p, *q, *r, *first =NULL, *last =NULL; + long n, j; + boolean extra, done, noplus; + + p = root; + q = root; + extra = false; + noplus = false; + if (i == (long)p->ycoord && p == root) { + if (p->index - spp >= 10) + fprintf(outfile, " %2ld", p->index - spp); + else + fprintf(outfile, " %ld", p->index - spp); + extra = true; + noplus = true; + } else + fprintf(outfile, " "); + do { + if (!p->tip) { + r = p->next; + done = false; + do { + if (i >= r->back->ymin && i <= r->back->ymax) { + q = r->back; + done = true; + } + r = r->next; + } while (!(done || r == p)); + first = p->next->back; + r = p->next; + while (r->next != p) + r = r->next; + last = r->back; + } + done = (p == q); + n = (long)(scale * (p->xcoord - q->xcoord) + 0.5); + if (n < 3 && !q->tip) + n = 3; + if (extra) { + n--; + extra = false; + } + if ((long)q->ycoord == i && !done) { + if (noplus) { + putc('-', outfile); + noplus = false; + } + else + putc('+', outfile); + if (!q->tip) { + for (j = 1; j <= n - 2; j++) + putc('-', outfile); + if (q->index - spp >= 10) + fprintf(outfile, "%2ld", q->index - spp); + else + fprintf(outfile, "-%ld", q->index - spp); + extra = true; + noplus = true; + } else { + for (j = 1; j < n; j++) + putc('-', outfile); + } + } else if (!p->tip) { + if ((long)last->ycoord > i && (long)first->ycoord < i + && i != (long)p->ycoord) { + putc('!', outfile); + for (j = 1; j < n; j++) + putc(' ', outfile); + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + } + noplus = false; + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + noplus = false; + } + if (p != q) + p = q; + } while (!done); + if ((long)p->ycoord == i && p->tip) { + for (j = 0; j < nmlngth; j++) + putc(nayme[p->index - 1][j], outfile); + } + putc('\n', outfile); +} /* drawline */ + + +void printree(node *root, double f) +{ + /* prints out diagram of the tree */ + /* used in dnacomp, dnapars, & dnapenny */ + long i, tipy, dummy; + double scale; + + putc('\n', outfile); + if (!treeprint) + return; + putc('\n', outfile); + tipy = 1; + dummy = 0; + coordinates(root, &tipy, f, &dummy); + scale = 1.5; + putc('\n', outfile); + for (i = 1; i <= (tipy - down); i++) + drawline(i, scale, root); + fprintf(outfile, "\n remember:"); + if (outgropt) + fprintf(outfile, " (although rooted by outgroup)"); + fprintf(outfile, " this is an unrooted tree!\n\n"); +} /* printree */ + + +void writesteps(long chars, boolean weights, steptr oldweight, node *root) +{ + /* used in dnacomp, dnapars, & dnapenny */ + long i, j, k, l; + + putc('\n', outfile); + if (weights) + fprintf(outfile, "weighted "); + fprintf(outfile, "steps in each site:\n"); + fprintf(outfile, " "); + for (i = 0; i <= 9; i++) + fprintf(outfile, "%4ld", i); + fprintf(outfile, "\n *------------------------------------"); + fprintf(outfile, "-----\n"); + for (i = 0; i <= (chars / 10); i++) { + fprintf(outfile, "%5ld", i * 10); + putc('|', outfile); + for (j = 0; j <= 9; j++) { + k = i * 10 + j; + if (k == 0 || k > chars) + fprintf(outfile, " "); + else { + l = location[ally[k - 1] - 1]; + if (oldweight[k - 1] > 0) + fprintf(outfile, "%4ld", + oldweight[k - 1] * + (root->numsteps[l - 1] / weight[l - 1])); + else + fprintf(outfile, " 0"); + } + } + putc('\n', outfile); + } +} /* writesteps */ + + +void treeout(node *p, long nextree, long *col, node *root) +{ + /* write out file with representation of final tree */ + /* used in dnacomp, dnamove, dnapars, & dnapenny */ + node *q; + long i, n; + Char c; + + if (p->tip) { + n = 0; + for (i = 1; i <= nmlngth; i++) { + if (nayme[p->index - 1][i - 1] != ' ') + n = i; + } + for (i = 0; i < n; i++) { + c = nayme[p->index - 1][i]; + if (c == ' ') + c = '_'; + putc(c, outtree); + } + *col += n; + } else { + putc('(', outtree); + (*col)++; + q = p->next; + while (q != p) { + treeout(q->back, nextree, col, root); + q = q->next; + if (q == p) + break; + putc(',', outtree); + (*col)++; + if (*col > 60) { + putc('\n', outtree); + *col = 0; + } + } + putc(')', outtree); + (*col)++; + } + if (p != root) + return; + if (nextree > 2) + fprintf(outtree, "[%6.4f];\n", 1.0 / (nextree - 1)); + else + fprintf(outtree, ";\n"); +} /* treeout */ + + +void treeout3(node *p, long nextree, long *col, node *root) +{ + /* write out file with representation of final tree */ + /* used in dnapars -- writes branch lengths */ + node *q; + long i, n, w; + double x; + Char c; + + if (p->tip) { + n = 0; + for (i = 1; i <= nmlngth; i++) { + if (nayme[p->index - 1][i - 1] != ' ') + n = i; + } + for (i = 0; i < n; i++) { + c = nayme[p->index - 1][i]; + if (c == ' ') + c = '_'; + putc(c, outtree); + } + *col += n; + } else { + putc('(', outtree); + (*col)++; + q = p->next; + while (q != p) { + treeout3(q->back, nextree, col, root); + q = q->next; + if (q == p) + break; + putc(',', outtree); + (*col)++; + if (*col > 60) { + putc('\n', outtree); + *col = 0; + } + } + putc(')', outtree); + (*col)++; + } + x = p->v; + if (x > 0.0) + w = (long)(0.43429448222 * log(x)); + else if (x == 0.0) + w = 0; + else + w = (long)(0.43429448222 * log(-x)) + 1; + if (w < 0) + w = 0; + if (p != root) { + fprintf(outtree, ":%*.5f", (int)(w + 7), x); + *col += w + 8; + } + if (p != root) + return; + if (nextree > 2) + fprintf(outtree, "[%6.4f];\n", 1.0 / (nextree - 1)); + else + fprintf(outtree, ";\n"); +} /* treeout3 */ + + +void drawline2(long i, double scale, tree curtree) +{ + /* draws one row of the tree diagram by moving up tree */ + /* used in dnaml, proml, & restml */ + node *p, *q; + long n, j; + boolean extra; + node *r, *first =NULL, *last =NULL; + boolean done; + + p = curtree.start; + q = curtree.start; + extra = false; + if (i == (long)p->ycoord && p == curtree.start) { + if (p->index - spp >= 10) + fprintf(outfile, " %2ld", p->index - spp); + else + fprintf(outfile, " %ld", p->index - spp); + extra = true; + } else + fprintf(outfile, " "); + do { + if (!p->tip) { + r = p->next; + done = false; + do { + if (i >= r->back->ymin && i <= r->back->ymax) { + q = r->back; + done = true; + } + r = r->next; + } while (!(done || (p != curtree.start && r == p) || + (p == curtree.start && r == p->next))); + first = p->next->back; + r = p; + while (r->next != p) + r = r->next; + last = r->back; + if (p == curtree.start) + last = p->back; + } + done = (p->tip || p == q); + n = (long)(scale * (q->xcoord - p->xcoord) + 0.5); + if (n < 3 && !q->tip) + n = 3; + if (extra) { + n--; + extra = false; + } + if ((long)q->ycoord == i && !done) { + if ((long)p->ycoord != (long)q->ycoord) + putc('+', outfile); + else + putc('-', outfile); + if (!q->tip) { + for (j = 1; j <= n - 2; j++) + putc('-', outfile); + if (q->index - spp >= 10) + fprintf(outfile, "%2ld", q->index - spp); + else + fprintf(outfile, "-%ld", q->index - spp); + extra = true; + } else { + for (j = 1; j < n; j++) + putc('-', outfile); + } + } else if (!p->tip) { + if ((long)last->ycoord > i && (long)first->ycoord < i && + (i != (long)p->ycoord || p == curtree.start)) { + putc('|', outfile); + for (j = 1; j < n; j++) + putc(' ', outfile); + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + } + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + } + if (q != p) + p = q; + } while (!done); + if ((long)p->ycoord == i && p->tip) { + for (j = 0; j < nmlngth; j++) + putc(nayme[p->index-1][j], outfile); + } + putc('\n', outfile); +} /* drawline2 */ + + +void drawline3(long i, double scale, node *start) +{ + /* draws one row of the tree diagram by moving up tree */ + /* used in dnapars */ + node *p, *q; + long n, j; + boolean extra; + node *r, *first =NULL, *last =NULL; + boolean done; + + p = start; + q = start; + extra = false; + if (i == (long)p->ycoord) { + if (p->index - spp >= 10) + fprintf(outfile, " %2ld", p->index - spp); + else + fprintf(outfile, " %ld", p->index - spp); + extra = true; + } else + fprintf(outfile, " "); + do { + if (!p->tip) { + r = p->next; + done = false; + do { + if (i >= r->back->ymin && i <= r->back->ymax) { + q = r->back; + done = true; + } + r = r->next; + } while (!(done || (r == p))); + first = p->next->back; + r = p; + while (r->next != p) + r = r->next; + last = r->back; + } + done = (p->tip || p == q); + n = (long)(scale * (q->xcoord - p->xcoord) + 0.5); + if (n < 3 && !q->tip) + n = 3; + if (extra) { + n--; + extra = false; + } + if ((long)q->ycoord == i && !done) { + if ((long)p->ycoord != (long)q->ycoord) + putc('+', outfile); + else + putc('-', outfile); + if (!q->tip) { + for (j = 1; j <= n - 2; j++) + putc('-', outfile); + if (q->index - spp >= 10) + fprintf(outfile, "%2ld", q->index - spp); + else + fprintf(outfile, "-%ld", q->index - spp); + extra = true; + } else { + for (j = 1; j < n; j++) + putc('-', outfile); + } + } else if (!p->tip) { + if ((long)last->ycoord > i && (long)first->ycoord < i && + (i != (long)p->ycoord || p == start)) { + putc('|', outfile); + for (j = 1; j < n; j++) + putc(' ', outfile); + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + } + } else { + for (j = 1; j <= n; j++) + putc(' ', outfile); + } + if (q != p) + p = q; + } while (!done); + if ((long)p->ycoord == i && p->tip) { + for (j = 0; j < nmlngth; j++) + putc(nayme[p->index-1][j], outfile); + } + putc('\n', outfile); +} /* drawline3 */ + + +void copynode(node *c, node *d, long categs) +{ + long i, j; + + for (i = 0; i < endsite; i++) + for (j = 0; j < categs; j++) + memcpy(d->x[i][j], c->x[i][j], sizeof(sitelike)); + memcpy(d->underflows,c->underflows,sizeof(double) * endsite); + d->tyme = c->tyme; + d->v = c->v; + d->xcoord = c->xcoord; + d->ycoord = c->ycoord; + d->ymin = c->ymin; + d->ymax = c->ymax; + d->iter = c->iter; /* iter used in dnaml only */ + d->haslength = c->haslength; /* haslength used in dnamlk only */ + d->initialized = c->initialized; /* initialized used in dnamlk only */ +} /* copynode */ + + +void prot_copynode(node *c, node *d, long categs) +{ + /* a version of copynode for proml */ + long i, j; + + for (i = 0; i < endsite; i++) + for (j = 0; j < categs; j++) + memcpy(d->protx[i][j], c->protx[i][j], sizeof(psitelike)); + memcpy(d->underflows,c->underflows,sizeof(double) * endsite); + d->tyme = c->tyme; + d->v = c->v; + d->xcoord = c->xcoord; + d->ycoord = c->ycoord; + d->ymin = c->ymin; + d->ymax = c->ymax; + d->iter = c->iter; /* iter used in dnaml only */ + d->haslength = c->haslength; /* haslength used in dnamlk only */ + d->initialized = c->initialized; /* initialized used in dnamlk only */ +} /* prot_copynode */ + + +void copy_(tree *a, tree *b, long nonodes, long categs) +{ + /* used in dnamlk */ + long i; + node *p, *q, *r, *s, *t; + + for (i = 0; i < spp; i++) { + copynode(a->nodep[i], b->nodep[i], categs); + if (a->nodep[i]->back) { + if (a->nodep[i]->back == a->nodep[a->nodep[i]->back->index - 1]) + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]; + else if (a->nodep[i]->back == a->nodep[a->nodep[i]->back->index - 1]->next) + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]->next; + else + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]->next->next; + } + else b->nodep[i]->back = NULL; + } + for (i = spp; i < nonodes; i++) { + if (a->nodep[i]) { + p = a->nodep[i]; + q = b->nodep[i]; + r = p; + do { + copynode(p, q, categs); + if (p->back) { + s = a->nodep[p->back->index - 1]; + t = b->nodep[p->back->index - 1]; + if (s->tip) { + if(p->back == s) + q->back = t; + } else { + do { + if (p->back == s) + q->back = t; + s = s->next; + t = t->next; + } while (s != a->nodep[p->back->index - 1]); + } + } + else + q->back = NULL; + p = p->next; + q = q->next; + } while (p != r); + } + } + b->likelihood = a->likelihood; + b->start = a->start; /* start used in dnaml only */ + b->root = a->root; /* root used in dnamlk only */ +} /* copy_ */ + + +void prot_copy_(tree *a, tree *b, long nonodes, long categs) +{ + /* used in promlk */ + /* identical to copy_() except for calls to prot_copynode rather */ + /* than copynode. */ + long i; + node *p, *q, *r, *s, *t; + + for (i = 0; i < spp; i++) { + prot_copynode(a->nodep[i], b->nodep[i], categs); + if (a->nodep[i]->back) { + if (a->nodep[i]->back == a->nodep[a->nodep[i]->back->index - 1]) + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]; + else if (a->nodep[i]->back == a->nodep[a->nodep[i]->back->index - 1]->next +) + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]->next; + else + b->nodep[i]->back = b->nodep[a->nodep[i]->back->index - 1]->next->next; + } + else b->nodep[i]->back = NULL; + } + for (i = spp; i < nonodes; i++) { + if (a->nodep[i]) { + p = a->nodep[i]; + q = b->nodep[i]; + r = p; + do { + prot_copynode(p, q, categs); + if (p->back) { + s = a->nodep[p->back->index - 1]; + t = b->nodep[p->back->index - 1]; + if (s->tip) + { + if(p->back == s) + q->back = t; + } else { + do { + if (p->back == s) + q->back = t; + s = s->next; + t = t->next; + } while (s != a->nodep[p->back->index - 1]); + } + } + else + q->back = NULL; + p = p->next; + q = q->next; + } while (p != r); + } + } + b->likelihood = a->likelihood; + b->start = a->start; /* start used in dnaml only */ + b->root = a->root; /* root used in dnamlk only */ +} /* prot_copy_ */ + + +void standev(long chars, long numtrees, long minwhich, double minsteps, + double *nsteps, long **fsteps, longer seed) +{ /* do paired sites test (KHT or SH test) on user-defined trees */ + /* used in dnapars & protpars */ + long i, j, k; + double wt, sumw, sum, sum2, sd; + double temp; + double **covar, *P, *f, *r; + +#define SAMPLES 1000 + if (numtrees == 2) { + fprintf(outfile, "Kishino-Hasegawa-Templeton test\n\n"); + fprintf(outfile, "Tree Steps Diff Steps Its S.D."); + fprintf(outfile, " Significantly worse?\n\n"); + which = 1; + while (which <= numtrees) { + fprintf(outfile, "%3ld%10.1f", which, nsteps[which - 1] / 10); + if (minwhich == which) + fprintf(outfile, " <------ best\n"); + else { + sumw = 0.0; + sum = 0.0; + sum2 = 0.0; + for (i = 0; i < endsite; i++) { + if (weight[i] > 0) { + wt = weight[i] / 10.0; + sumw += wt; + temp = (fsteps[which - 1][i] - fsteps[minwhich - 1][i]) / 10.0; + sum += wt * temp; + sum2 += wt * temp * temp; + } + } + sd = sqrt(sumw / (sumw - 1.0) * (sum2 - sum * sum / sumw)); + fprintf(outfile, "%10.1f%12.4f", + (nsteps[which - 1] - minsteps) / 10, sd); + if ((sum > 0.0) && (sum > 1.95996 * sd)) + fprintf(outfile, " Yes\n"); + else + fprintf(outfile, " No\n"); + } + which++; + } + fprintf(outfile, "\n\n"); + } else { /* Shimodaira-Hasegawa test using normal approximation */ + if(numtrees > MAXSHIMOTREES){ + fprintf(outfile, "Shimodaira-Hasegawa test on first %d of %ld trees\n\n" + , MAXSHIMOTREES, numtrees); + numtrees = MAXSHIMOTREES; + } else { + fprintf(outfile, "Shimodaira-Hasegawa test\n\n"); + } + covar = (double **)Malloc(numtrees*sizeof(double *)); + sumw = 0.0; + for (i = 0; i < endsite; i++) + sumw += weight[i] / 10.0; + for (i = 0; i < numtrees; i++) + covar[i] = (double *)Malloc(numtrees*sizeof(double)); + for (i = 0; i < numtrees; i++) { /* compute covariances of trees */ + sum = nsteps[i]/(10.0*sumw); + for (j = 0; j <=i; j++) { + sum2 = nsteps[j]/(10.0*sumw); + temp = 0.0; + for (k = 0; k < endsite; k++) { + if (weight[k] > 0) { + wt = weight[k]/10.0; + temp = temp + wt*(fsteps[i][k]/10.0-sum) + *(fsteps[j][k]/10.0-sum2); + } + } + covar[i][j] = temp; + if (i != j) + covar[j][i] = temp; + } + } + for (i = 0; i < numtrees; i++) { /* in-place Cholesky decomposition + of trees x trees covariance matrix */ + sum = 0.0; + for (j = 0; j <= i-1; j++) + sum = sum + covar[i][j] * covar[i][j]; + if (covar[i][i] <= sum) + temp = 0.0; + else + temp = sqrt(covar[i][i] - sum); + covar[i][i] = temp; + for (j = i+1; j < numtrees; j++) { + sum = 0.0; + for (k = 0; k < i; k++) + sum = sum + covar[i][k] * covar[j][k]; + if (fabs(temp) < 1.0E-12) + covar[j][i] = 0.0; + else + covar[j][i] = (covar[j][i] - sum)/temp; + } + } + f = (double *)Malloc(numtrees*sizeof(double)); /* resampled sums */ + P = (double *)Malloc(numtrees*sizeof(double)); /* vector of P's of trees */ + r = (double *)Malloc(numtrees*sizeof(double)); /* store Normal variates */ + for (i = 0; i < numtrees; i++) + P[i] = 0.0; + sum2 = nsteps[0]/10.0; /* sum2 will be smallest # of steps */ + for (i = 1; i < numtrees; i++) + if (sum2 > nsteps[i]/10.0) + sum2 = nsteps[i]/10.0; + for (i = 1; i <= SAMPLES; i++) { /* loop over resampled trees */ + for (j = 0; j < numtrees; j++) /* draw Normal variates */ + r[j] = normrand(seed); + for (j = 0; j < numtrees; j++) { /* compute vectors */ + sum = 0.0; + for (k = 0; k <= j; k++) + sum += covar[j][k]*r[k]; + f[j] = sum; + } + sum = f[1]; + for (j = 1; j < numtrees; j++) /* get min of vector */ + if (f[j] < sum) + sum = f[j]; + for (j = 0; j < numtrees; j++) /* accumulate P's */ + if (nsteps[j]/10.0-sum2 <= f[j] - sum) + P[j] += 1.0/SAMPLES; + } + fprintf(outfile, "Tree Steps Diff Steps P value"); + fprintf(outfile, " Significantly worse?\n\n"); + for (i = 0; i < numtrees; i++) { + fprintf(outfile, "%3ld%10.1f", i+1, nsteps[i]/10); + if ((minwhich-1) == i) + fprintf(outfile, " <------ best\n"); + else { + fprintf(outfile, " %9.1f %10.3f", nsteps[i]/10.0-sum2, P[i]); + if (P[i] < 0.05) + fprintf(outfile, " Yes\n"); + else + fprintf(outfile, " No\n"); + } + } + fprintf(outfile, "\n"); + free(P); /* free the variables we Malloc'ed */ + free(f); + free(r); + for (i = 0; i < numtrees; i++) + free(covar[i]); + free(covar); + } +} /* standev */ + + +void standev2(long numtrees, long maxwhich, long a, long b, double maxlogl, + double *l0gl, double **l0gf, steptr aliasweight, longer seed) +{ /* do paired sites test (KHT or SH) for user-defined trees */ + /* used in dnaml, dnamlk, proml, promlk, and restml */ + double **covar, *P, *f, *r; + long i, j, k; + double wt, sumw, sum, sum2, sd; + double temp; + +#define SAMPLES 1000 + if (numtrees == 2) { + fprintf(outfile, "Kishino-Hasegawa-Templeton test\n\n"); + fprintf(outfile, "Tree logL Diff logL Its S.D."); + fprintf(outfile, " Significantly worse?\n\n"); + which = 1; + while (which <= numtrees) { + fprintf(outfile, "%3ld %9.1f", which, l0gl[which - 1]); + if (maxwhich == which) + fprintf(outfile, " <------ best\n"); + else { + sumw = 0.0; + sum = 0.0; + sum2 = 0.0; + for (i = a; i <= b; i++) { + if (aliasweight[i] > 0) { + wt = aliasweight[i]; + sumw += wt; + temp = l0gf[which - 1][i] - l0gf[maxwhich - 1][i]; + sum += temp * wt; + sum2 += wt * temp * temp; + } + } + temp = sum / sumw; + sd = sqrt(sumw / (sumw - 1.0) * (sum2 - sum * sum / sumw )); + fprintf(outfile, "%10.1f %11.4f", (l0gl[which - 1])-maxlogl, sd); + if ((sum < 0.0) && ((-sum) > 1.95996 * sd)) + fprintf(outfile, " Yes\n"); + else + fprintf(outfile, " No\n"); + } + which++; + } + fprintf(outfile, "\n\n"); + } else { /* Shimodaira-Hasegawa test using normal approximation */ + if(numtrees > MAXSHIMOTREES){ + fprintf(outfile, "Shimodaira-Hasegawa test on first %d of %ld trees\n\n" + , MAXSHIMOTREES, numtrees); + numtrees = MAXSHIMOTREES; + } else { + fprintf(outfile, "Shimodaira-Hasegawa test\n\n"); + } + covar = (double **)Malloc(numtrees*sizeof(double *)); + sumw = 0.0; + for (i = a; i <= b; i++) + sumw += aliasweight[i]; + for (i = 0; i < numtrees; i++) + covar[i] = (double *)Malloc(numtrees*sizeof(double)); + for (i = 0; i < numtrees; i++) { /* compute covariances of trees */ + sum = l0gl[i]/sumw; + for (j = 0; j <=i; j++) { + sum2 = l0gl[j]/sumw; + temp = 0.0; + for (k = a; k <= b ; k++) { + if (aliasweight[k] > 0) { + wt = aliasweight[k]; + temp = temp + wt*(l0gf[i][k]-sum) + *(l0gf[j][k]-sum2); + } + } + covar[i][j] = temp; + if (i != j) + covar[j][i] = temp; + } + } + for (i = 0; i < numtrees; i++) { /* in-place Cholesky decomposition + of trees x trees covariance matrix */ + sum = 0.0; + for (j = 0; j <= i-1; j++) + sum = sum + covar[i][j] * covar[i][j]; + if (covar[i][i] <= sum) + temp = 0.0; + else + temp = sqrt(covar[i][i] - sum); + covar[i][i] = temp; + for (j = i+1; j < numtrees; j++) { + sum = 0.0; + for (k = 0; k < i; k++) + sum = sum + covar[i][k] * covar[j][k]; + if (fabs(temp) < 1.0E-12) + covar[j][i] = 0.0; + else + covar[j][i] = (covar[j][i] - sum)/temp; + } + } + f = (double *)Malloc(numtrees*sizeof(double)); /* resampled likelihoods */ + P = (double *)Malloc(numtrees*sizeof(double)); /* vector of P's of trees */ + r = (double *)Malloc(numtrees*sizeof(double)); /* store Normal variates */ + for (i = 0; i < numtrees; i++) + P[i] = 0.0; + for (i = 1; i <= SAMPLES; i++) { /* loop over resampled trees */ + for (j = 0; j < numtrees; j++) /* draw Normal variates */ + r[j] = normrand(seed); + for (j = 0; j < numtrees; j++) { /* compute vectors */ + sum = 0.0; + for (k = 0; k <= j; k++) + sum += covar[j][k]*r[k]; + f[j] = sum; + } + sum = f[1]; + for (j = 1; j < numtrees; j++) /* get max of vector */ + if (f[j] > sum) + sum = f[j]; + for (j = 0; j < numtrees; j++) /* accumulate P's */ + if (maxlogl-l0gl[j] <= sum-f[j]) + P[j] += 1.0/SAMPLES; + } + fprintf(outfile, "Tree logL Diff logL P value"); + fprintf(outfile, " Significantly worse?\n\n"); + for (i = 0; i < numtrees; i++) { + fprintf(outfile, "%3ld%10.1f", i+1, l0gl[i]); + if ((maxwhich-1) == i) + fprintf(outfile, " <------ best\n"); + else { + fprintf(outfile, " %9.1f %10.3f", l0gl[i]-maxlogl, P[i]); + if (P[i] < 0.05) + fprintf(outfile, " Yes\n"); + else + fprintf(outfile, " No\n"); + } + } + fprintf(outfile, "\n"); + free(P); /* free the variables we Malloc'ed */ + free(f); + free(r); + for (i = 0; i < numtrees; i++) + free(covar[i]); + free(covar); + } +} /* standev */ + + +void freetip(node *anode) +{ + /* used in dnacomp, dnapars, & dnapenny */ + + free(anode->numsteps); + free(anode->oldnumsteps); + free(anode->base); + free(anode->oldbase); +} /* freetip */ + + +void freenontip(node *anode) +{ + /* used in dnacomp, dnapars, & dnapenny */ + + free(anode->numsteps); + free(anode->oldnumsteps); + free(anode->base); + free(anode->oldbase); + free(anode->numnuc); +} /* freenontip */ + + +void freenodes(long nonodes, pointarray treenode) +{ + /* used in dnacomp, dnapars, & dnapenny */ + long i; + node *p; + + for (i = 0; i < spp; i++) + freetip(treenode[i]); + for (i = spp; i < nonodes; i++) { + if (treenode[i] != NULL) { + p = treenode[i]->next; + do { + freenontip(p); + p = p->next; + } while (p != treenode[i]); + freenontip(p); + } + } +} /* freenodes */ + + +void freenode(node **anode) +{ + /* used in dnacomp, dnapars, & dnapenny */ + + freenontip(*anode); + free(*anode); +} /* freenode */ + + +void freetree(long nonodes, pointarray treenode) +{ + /* used in dnacomp, dnapars, & dnapenny */ + long i; + node *p, *q; + + for (i = 0; i < spp; i++) + free(treenode[i]); + for (i = spp; i < nonodes; i++) { + if (treenode[i] != NULL) { + p = treenode[i]->next; + do { + q = p->next; + free(p); + p = q; + } while (p != treenode[i]); + free(p); + } + } + free(treenode); +} /* freetree */ + + +void prot_freex_notip(long nonodes, pointarray treenode) +{ + /* used in proml */ + long i, j; + node *p; + + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + if ( p == NULL ) continue; + do { + for (j = 0; j < endsite; j++){ + free(p->protx[j]); + p->protx[j] = NULL; + } + free(p->protx); + p->protx = NULL; + p = p->next; + } while (p != treenode[i]); + } +} /* prot_freex_notip */ + + +void prot_freex(long nonodes, pointarray treenode) +{ + /* used in proml */ + long i, j; + node *p; + + for (i = 0; i < spp; i++) { + for (j = 0; j < endsite; j++) + free(treenode[i]->protx[j]); + free(treenode[i]->protx); + } + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + do { + for (j = 0; j < endsite; j++) + free(p->protx[j]); + free(p->protx); + p = p->next; + } while (p != treenode[i]); + } +} /* prot_freex */ + + +void freex_notip(long nonodes, pointarray treenode) +{ + /* used in dnaml & dnamlk */ + long i, j; + node *p; + + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + if ( p == NULL ) continue; + do { + for (j = 0; j < endsite; j++) + free(p->x[j]); + free(p->x); + p = p->next; + } while (p != treenode[i]); + } +} /* freex_notip */ + + +void freex(long nonodes, pointarray treenode) +{ + /* used in dnaml & dnamlk */ + long i, j; + node *p; + + for (i = 0; i < spp; i++) { + for (j = 0; j < endsite; j++) + free(treenode[i]->x[j]); + free(treenode[i]->x); + } + for (i = spp; i < nonodes; i++) { + if(treenode[i]){ + p = treenode[i]; + do { + for (j = 0; j < endsite; j++) + free(p->x[j]); + free(p->x); + p = p->next; + } while (p != treenode[i]); + } + } +} /* freex */ + + +void freex2(long nonodes, pointarray treenode) +{ + /* used in restml */ + long i, j; + node *p; + + for (i = 0; i < spp; i++) + free(treenode[i]->x2); + for (i = spp; i < nonodes; i++) { + p = treenode[i]; + for (j = 1; j <= 3; j++) { + free(p->x2); + p = p->next; + } + } +} /* freex2 */ + + +void freegarbage(gbases **garbage) +{ + /* used in dnacomp, dnapars, & dnapenny */ + gbases *p; + + while (*garbage) { + p = *garbage; + *garbage = (*garbage)->next; + free(p->base); + free(p); + } +} /*freegarbage */ + + +void freegrbg(node **grbg) +{ + /* used in dnacomp, dnapars, & dnapenny */ + node *p; + + while (*grbg) { + p = *grbg; + *grbg = (*grbg)->next; + freenontip(p); + free(p); + } +} /*freegrbg */ + + +void collapsetree(node *p, node *root, node **grbg, pointarray treenode, + long *zeros) +{ + /* Recurse through tree searching for zero length brances between */ + /* nodes (not to tips). If one exists, collapse the nodes together, */ + /* removing the branch. */ + node *q, *x1, *y1, *x2, *y2; + long i, j, index, index2, numd; + if (p->tip) + return; + q = p->next; + do { + if (!q->back->tip && q->v == 0.000000) { + /* merge the two nodes. */ + x1 = y2 = q->next; + x2 = y1 = q->back->next; + while(x1->next != q) + x1 = x1-> next; + while(y1->next != q->back) + y1 = y1-> next; + x1->next = x2; + y1->next = y2; + + index = q->index; + index2 = q->back->index; + numd = treenode[index-1]->numdesc + q->back->numdesc -1; + chucktreenode(grbg, q->back); + chucktreenode(grbg, q); + q = x2; + + /* update the indicies around the node circle */ + do{ + if(q->index != index){ + q->index = index; + } + q = q-> next; + }while(x2 != q); + updatenumdesc(treenode[index-1], root, numd); + + /* Alter treenode to point to real nodes, and update indicies */ + /* acordingly. */ + j = 0; i=0; + for(i = (index2-1); i < nonodes-1 && treenode[i+1]; i++){ + treenode[i]=treenode[i+1]; + treenode[i+1] = NULL; + x1=x2=treenode[i]; + do{ + x1->index = i+1; + x1 = x1 -> next; + } while(x1 != x2); + } + + /* Create a new empty fork in the blank spot of treenode */ + x1=NULL; + for(i=1; i <=3 ; i++){ + gnutreenode(grbg, &x2, index2, endsite, zeros); + x2->next = x1; + x1 = x2; + } + x2->next->next->next = x2; + treenode[nonodes-1]=x2; + if (q->back) + collapsetree(q->back, root, grbg, treenode, zeros); + } else { + if (q->back) + collapsetree(q->back, root, grbg, treenode, zeros); + q = q->next; + } + } while (q != p); +} /* collapsetree */ + + +void collapsebestrees(node **root, node **grbg, pointarray treenode, + bestelm *bestrees, long *place, long *zeros, + long chars, boolean recompute, boolean progress) + +{ + /* Goes through all best trees, collapsing trees where possible, and */ + /* deleting trees that are not unique. */ + long i,j, k, pos, nextnode, oldnextree; + boolean found; + node *dummy; + + oldnextree = nextree; + for(i = 0 ; i < (oldnextree - 1) ; i++){ + bestrees[i].collapse = true; + } + + if(progress) + printf("Collapsing best trees\n "); + k = 0; + for(i = 0 ; i < (oldnextree - 1) ; i++){ + if(progress){ + if(i % (((oldnextree-1) / 72) + 1) == 0) + putchar('.'); + fflush(stdout); + } + while(!bestrees[k].collapse) + k++; + /* Reconstruct tree. */ + *root = treenode[0]; + add(treenode[0], treenode[1], treenode[spp], root, recompute, + treenode, grbg, zeros); + nextnode = spp + 2; + for (j = 3; j <= spp; j++) { + if (bestrees[k].btree[j - 1] > 0) + add(treenode[bestrees[k].btree[j - 1] - 1], treenode[j - 1], + treenode[nextnode++ - 1], root, recompute, treenode, grbg, + zeros); + else + add(treenode[treenode[-bestrees[k].btree[j - 1]-1]->back->index-1], + treenode[j - 1], NULL, root, recompute, treenode, grbg, zeros); + } + reroot(treenode[outgrno - 1], *root); + + treelength(*root, chars, treenode); + collapsetree(*root, *root, grbg, treenode, zeros); + savetree(*root, place, treenode, grbg, zeros); + /* move everything down in the bestree list */ + for(j = k ; j < (nextree - 2) ; j++){ + memcpy(bestrees[j].btree, bestrees[j + 1].btree, spp * sizeof(long)); + bestrees[j].gloreange = bestrees[j + 1].gloreange; + bestrees[j + 1].gloreange = false; + bestrees[j].locreange = bestrees[j + 1].locreange; + bestrees[j + 1].locreange = false; + bestrees[j].collapse = bestrees[j + 1].collapse; + } + pos=0; + findtree(&found, &pos, nextree-1, place, bestrees); + + /* put the new tree at the end of the list if it wasn't found */ + nextree--; + if(!found) + addtree(pos, &nextree, false, place, bestrees); + + /* Deconstruct the tree */ + for (j = 1; j < spp; j++){ + re_move(treenode[j], &dummy, root, recompute, treenode, + grbg, zeros); + } + } + if (progress) { + putchar('\n'); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } +} diff --git a/forester/archive/RIO/others/phylip_mod/src/seq.h b/forester/archive/RIO/others/phylip_mod/src/seq.h new file mode 100644 index 0000000..e70a07a --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/seq.h @@ -0,0 +1,216 @@ +/*Modified by Christian Zmasek. Use at your own risk.*/ + +/* version 3.6. (c) Copyright 1993-2000 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, and Andrew Keeffe. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +/* + seq.h: included in dnacomp, dnadist, dnainvar, dnaml, dnamlk, dnamove, + dnapars, dnapenny, protdist, protpars, & restml +*/ + +/* move */ +/* All the below moved here in the Great TreeRead Migration of '96 */ + +#define ebcdic EBCDIC +#define MAXNCH 26 /*changed from to 20 to 26 by CZ 2006-07-28 */ + +/* All of this came over from cons.h -plc*/ +#define OVER 7 +#define ADJACENT_PAIRS 1 +#define CORR_IN_1_AND_2 2 +#define ALL_IN_1_AND_2 3 +#define NO_PAIRING 4 +#define ALL_IN_FIRST 5 +#define TREE1 8 +#define TREE2 9 + +#define FULL_MATRIX 11 +#define VERBOSE 22 +#define SPARSE 33 + +/* Used in proml, promlk, dnaml, dnamlk for undefined bestyet*/ +#define UNDEFINED 1.0 + + +/* Number of columns per block in a matrix output */ +#define COLUMNS_PER_BLOCK 10 + + +/*end move*/ + + +typedef struct gbases { + baseptr base; + struct gbases *next; +} gbases; + +typedef struct nuview_data { + /* A big 'ol collection of pointers used in nuview */ + double *yy, *wwzz, *vvzz, *vzsumr, *vzsumy, *sum, *sumr, *sumy; + sitelike *xx; +} nuview_data; + +struct LOC_hyptrav { + boolean bottom; + node *r; + long *hypset; + boolean maybe, nonzero; + long tempset, anc; +} ; + + +extern long nonodes, endsite, outgrno, nextree, which; + +extern boolean interleaved, printdata, outgropt, treeprint, dotdiff, transvp; +extern steptr weight, category, alias, location, ally; +extern sequence y; + +#ifndef OLDC +/* function prototypes */ +void alloctemp(node **, long *, long); +void freetemp(node **); +void freetree2 (pointarray, long); +void inputdata(long); +void alloctree(pointarray *, long, boolean); +void allocx(long, long, pointarray, boolean); + +void prot_allocx(long, long, pointarray, boolean); +void allocx2(long, long, long, pointarray, boolean); +void setuptree(pointarray, long, boolean); +void setuptree2(tree); +void alloctip(node *, long *); +void freetrans(transptr *, long ,long ); +void getbasefreqs(double, double, double, double, double *, double *, + double *, double *, double *, double *, double *, + double *xi, double *, double *, boolean, boolean); +void empiricalfreqs(double *,double *,double *,double *,steptr,pointarray); +void sitesort(long, steptr); +void sitecombine(long); + +void sitescrunch(long); +void sitesort2(long, steptr); +void sitecombine2(long, steptr); +void sitescrunch2(long, long, long, steptr); +void makevalues(pointarray, long *, boolean); +void makevalues2(long, pointarray, long, long, sequence, steptr); +void fillin(node *, node *, node *); +long getlargest(long *); +void multifillin(node *, node *, long); +void sumnsteps(node *, node *, node *, long, long); + +void sumnsteps2(node *, node *, node *, long, long, long *); +void multisumnsteps(node *, node *, long, long, long *); +void multisumnsteps2(node *); +boolean alltips(node *, node *); +void gdispose(node *, node **, pointarray); +void preorder(node *, node *, node *, node *, node *, node *, long); +void updatenumdesc(node *, node *, long); +void add(node *,node *,node *,node **,boolean,pointarray,node **,long *); +void findbelow(node **below, node *item, node *fork); + +void re_move(node *item, node **fork, node **root, boolean recompute, + pointarray, node **, long *); +void postorder(node *p); +void getnufork(node **, node **, pointarray, long *); +void reroot(node *, node *); +void reroot2(node *, node *); +void reroot3(node *, node *, node *, node *, node **); +void savetraverse(node *); +void newindex(long, node *); +void flipindexes(long, pointarray); +boolean parentinmulti(node *); + +long sibsvisited(node *, long *); +long smallest(node *, long *); +void bintomulti(node **, node **, node **, long *); +void backtobinary(node **, node *, node **); +boolean outgrin(node *, node *); +void flipnodes(node *, node *); +void moveleft(node *, node *, node **); +void savetree(node *, long *, pointarray, node **, long *); +void addnsave(node *, node *, node *, node **, node **,boolean, + pointarray, long *, long *); +void addbestever(long *, long *, long, boolean, long *, bestelm *); + +void addtiedtree(long, long *, long, boolean,long *, bestelm *); +void clearcollapse(pointarray); +void clearbottom(pointarray); +void collabranch(node *, node *, node *); +boolean allcommonbases(node *, node *, boolean *); +void findbottom(node *, node **); +boolean moresteps(node *, node *); +boolean passdown(node *, node *, node *, node *, node *, node *, + node *, node *, node *, boolean); +boolean trycollapdesc(node *, node *, node *, node *, node *, + node *, node *, node *, node *, boolean , long *); +void setbottom(node *); + +boolean zeroinsubtree(node *, node *, node *, node *, node *, + node *, node *, node *, boolean, node *, long *); +boolean collapsible(node *, node *, node *, node *, node *, + node *, node *, node *, boolean, node *, long *, pointarray); +void replaceback(node **, node *, node *, node **, long *); +void putback(node *, node *, node *, node **); +void savelocrearr(node *, node *, node *, node *, node *, node *, + node *, node *, node *, node **, long, long *, boolean, + boolean , boolean *, long *, bestelm *, pointarray , + node **, long *); +void clearvisited(pointarray); +void hyprint(long, long, struct LOC_hyptrav *,pointarray, Char *); +void gnubase(gbases **, gbases **, long); +void chuckbase(gbases *, gbases **); +void hyptrav(node *, long *, long, long, boolean,pointarray, + gbases **, Char *); + +void hypstates(long , node *, pointarray, gbases **, Char *); +void initbranchlen(node *p); +void initmin(node *, long, boolean); +void initbase(node *, long); +void inittreetrav(node *, long); +void compmin(node *, node *); +void minpostorder(node *, pointarray); +void branchlength(node *,node *,double *,pointarray); +void printbranchlengths(node *); +void branchlentrav(node *,node *,long,long,double *,pointarray); + +void treelength(node *, long, pointarray); +void coordinates(node *, long *, double, long *); +void drawline(long, double, node *); +void printree(node *, double); +void writesteps(long, boolean, steptr, node *); +void treeout(node *, long, long *, node *); +void treeout3(node *, long, long *, node *); +void drawline2(long, double, tree); +void drawline3(long, double, node *); +void copynode(node *, node *, long); + +void prot_copynode(node *, node *, long); +void copy_(tree *, tree *, long, long); +void prot_copy_(tree *, tree *, long, long); +void standev(long, long, long, double, double *, long **, longer); +void standev2(long, long, long, long, double, double *, double **, + steptr, longer); +void freetip(node *); +void freenontip(node *); +void freenodes(long, pointarray); +void freenode(node **); +void freetree(long, pointarray); + +void freex(long, pointarray); +void freex_notip(long, pointarray); +void freex2(long, pointarray); +void prot_freex_notip(long nonodes, pointarray treenode); +void prot_freex(long nonodes, pointarray treenode); +void freegarbage(gbases **); +void freegrbg(node **); + +void collapsetree(node *, node *, node **, pointarray, long *); +void collapsebestrees(node **, node **, pointarray, bestelm *, long *, + long *, long, boolean, boolean); +void fix_x(node* p,long site, double maxx, long rcategs); +void fix_protx(node* p,long site,double maxx, long rcategs); +/*function prototypes*/ +#endif + diff --git a/forester/archive/RIO/others/phylip_mod/src/seqboot.c b/forester/archive/RIO/others/phylip_mod/src/seqboot.c new file mode 100644 index 0000000..c5b9c29 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/seqboot.c @@ -0,0 +1,1419 @@ +#include "phylip.h" +#include "seq.h" + +/* version 3.6. (c) Copyright 1993-2005 by the University of Washington. + Written by Joseph Felsenstein, Akiko Fuseki, Sean Lamont, Andrew Keeffe, + and Doug Buxton. + Permission is granted to copy and use this program provided no fee is + charged for it and provided that this copyright notice is not removed. */ + +typedef enum { + seqs, morphology, restsites, genefreqs +} datatype; + +typedef enum { + dna, rna, protein +} seqtype; + + +#ifndef OLDC +/* function prototypes */ +void getoptions(void); +void seqboot_inputnumbers(void); +void seqboot_inputfactors(void); +void inputoptions(void); +void seqboot_inputdata(void); +void allocrest(void); +void allocnew(void); +void doinput(int argc, Char *argv[]); +void bootweights(void); +void sppermute(long); +void charpermute(long, long); +void writedata(void); +void writeweights(void); +void writecategories(void); +void writeauxdata(steptr, FILE*); +void writefactors(void); +void bootwrite(void); +void seqboot_inputaux(steptr, FILE*); +/* function prototypes */ +#endif + + +FILE *outcatfile, *outweightfile, *outmixfile, *outancfile, *outfactfile; +Char infilename[FNMLNGTH], outfilename[FNMLNGTH], catfilename[FNMLNGTH], outcatfilename[FNMLNGTH], + weightfilename[FNMLNGTH], outweightfilename[FNMLNGTH], mixfilename[FNMLNGTH], outmixfilename[FNMLNGTH], ancfilename[FNMLNGTH], outancfilename[FNMLNGTH], + factfilename[FNMLNGTH], outfactfilename[FNMLNGTH]; +long sites, loci, maxalleles, groups, newsites, newersites, + newgroups, newergroups, nenzymes, reps, ws, blocksize, categs, maxnewsites; +boolean bootstrap, permute, ild, lockhart, jackknife, regular, xml, nexus, + weights, categories, factors, enzymes, all, justwts, progress, mixture, + firstrep, ancvar; +double fracsample; +datatype data; +seqtype seq; +steptr oldweight, where, how_many, newwhere, newhowmany, + newerwhere, newerhowmany, factorr, newerfactor, mixdata, ancdata; +steptr *charorder; +Char *factor; +long *alleles; +Char **nodep; +double **nodef; +long **sppord; +longer seed; + + +void getoptions() +{ + /* interactively set options */ + long reps0; + long inseed, inseed0, loopcount, loopcount2; + Char ch; + boolean done1; + + data = seqs; + seq = dna; + bootstrap = true; + jackknife = false; + permute = false; + ild = false; + lockhart = false; + blocksize = 1; + regular = true; + fracsample = 1.0; + all = false; + reps = 100; + weights = false; + mixture = false; + ancvar = false; + categories = false; + justwts = false; + printdata = false; + dotdiff = true; + progress = true; + interleaved = true; + xml = false; + nexus = false; + factors = false; + loopcount = 0; + for (;;) { + cleerhome(); + printf("\nBootstrapping algorithm, version %s\n\n",VERSION); + printf("Settings for this run:\n"); + printf(" D Sequence, Morph, Rest., Gene Freqs? %s\n", + (data == seqs ) ? "Molecular sequences" : + (data == morphology ) ? "Discrete Morphology" : + (data == restsites) ? "Restriction Sites" : + (data == genefreqs) ? "Gene Frequencies" : ""); + if (data == restsites) + printf(" E Number of enzymes? %s\n", + enzymes ? "Present in input file" : + "Not present in input file"); + if (data == genefreqs) + printf(" A All alleles present at each locus? %s\n", + all ? "Yes" : "No, one absent at each locus"); + if (data == morphology) + printf(" F Use factors information? %s\n", + factors ? "Yes" : "No"); + + printf(" J Bootstrap, Jackknife, Permute, Rewrite? %s\n", + regular && jackknife ? "Delete-half jackknife" : + (!regular) && jackknife ? "Delete-fraction jackknife" : + permute ? "Permute species for each character" : + ild ? "Permute character order" : + lockhart ? "Permute within species" : + regular && bootstrap ? "Bootstrap" : + (!regular) && bootstrap ? "Partial bootstrap" : + "Rewrite data"); + if (bootstrap || jackknife) { + printf(" "); + putchar('%'); + printf(" Regular or altered sampling fraction? "); + if (regular) + printf("regular\n"); + else { + if (fabs(fracsample*100 - (int)(fracsample*100)) > 0.01) { + if (fracsample < 1) + printf("%2.1lf", 100.0*fracsample); + else + printf("%3.1lf", 100.0*fracsample); + } else { if (fracsample < 1) + printf("%2.0lf", 100.0*fracsample); + else + printf("%3.0lf", 100.0*fracsample); + } + putchar('%'); + printf(" sampled\n"); + } + } + if ((data == seqs) + && !(jackknife || permute || bootstrap || ild || lockhart)) { + printf(" P PHYLIP, NEXUS, or XML output format? %s\n", + nexus ? "NEXUS" : xml ? "XML" : "PHYLIP"); + if (xml || ((data == seqs) && nexus)) { + printf(" S Type of molecular sequences? " ); + switch (seq) { + case (dna) : printf("DNA\n"); break; + case (rna) : printf("RNA\n"); break; + case (protein) : printf("Protein\n"); break; + } + } + } + if ((data == morphology) && !(jackknife || permute || ild + || lockhart || bootstrap)) + printf(" P PHYLIP or NEXUS output format? %s\n", + nexus ? "NEXUS" : "PHYLIP"); + if (bootstrap) { + if (blocksize > 1) + printf(" B Block size for block-bootstrapping? %ld\n", blocksize); + else + printf(" B Block size for block-bootstrapping? %ld (regular bootstrap)\n", blocksize); + } + if (bootstrap || jackknife || permute || ild || lockhart) + printf(" R How many replicates? %ld\n", reps); + if (jackknife || bootstrap || permute) { + printf(" W Read weights of characters? %s\n", + (weights ? "Yes" : "No")); + if(data == morphology){ + printf(" X Read mixture file? %s\n", + (mixture ? "Yes" : "No")); + printf(" N Read ancestors file? %s\n", + (ancvar ? "Yes" : "No")); + } + if (data == seqs) + printf(" C Read categories of sites? %s\n", + (categories ? "Yes" : "No")); + if ((!permute)) { + printf(" S Write out data sets or just weights? %s\n", + (justwts ? "Just weights" : "Data sets")); + } + } + if (data == seqs || data == restsites) + printf(" I Input sequences interleaved? %s\n", + interleaved ? "Yes" : "No, sequential"); + printf(" 0 Terminal type (IBM PC, ANSI, none)? %s\n", + ibmpc ? "IBM PC" : ansi ? "ANSI" : "(none)"); + printf(" 1 Print out the data at start of run %s\n", + printdata ? "Yes" : "No"); + if (printdata) + printf(" . Use dot-differencing to display them %s\n", + dotdiff ? "Yes" : "No"); + printf(" 2 Print indications of progress of run %s\n", + progress ? "Yes" : "No"); + printf("\n Y to accept these or type the letter for one to change\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%c%*[^\n]", &ch); + getchar(); + uppercase(&ch); + if (ch == 'Y') + break; + if ( + (bootstrap && (strchr("ABCDEFSJPRWXNI%1.20",ch) != NULL)) || + (jackknife && (strchr("ACDEFSJPRWXNI%1.20",ch) != NULL)) || + ((permute || ild || lockhart) + && (strchr("ACDEFSJPRXNI%1.20",ch) != NULL)) || + ((!(bootstrap || jackknife || permute || ild || lockhart)) && + ((!xml) && (strchr("ADEFJPI1.20",ch) != NULL))) || + (((data == morphology) || (data == seqs)) + && (nexus || xml) && (strchr("ADEFJPSI1.20",ch) != NULL)) + ) { + switch (ch) { + + case 'D': + if (data == genefreqs) + data = seqs; + else + data = (datatype)((long)data + 1); + break; + + case 'A': + all = !all; + break; + + case 'E': + enzymes = !enzymes; + break; + + case 'J': + if (permute) { + permute = false; + ild = true; + } else if (ild) { + ild = false; + lockhart = true; + } else if (lockhart) + lockhart = false; + else if (jackknife) { + jackknife = false; + permute = true; + } else if (bootstrap) { + bootstrap = false; + jackknife = true; + } else + bootstrap = true; + break; + + case '%': + regular = !regular; + if (!regular) { + loopcount2 = 0; + do { + printf("Samples as percentage of"); + if ((data == seqs) || (data == restsites)) + printf(" sites?\n"); + if (data == morphology) + printf(" characters?\n"); + if (data == genefreqs) + printf(" loci?\n"); + scanf("%lf%*[^\n]", &fracsample); + getchar(); + done1 = (fracsample > 0.0); + if (!done1) { + printf("BAD NUMBER: must be positive\n"); + } + fracsample = fracsample/100.0; + countup(&loopcount2, 10); + } while (done1 != true); + } + break; + + case 'P': + if (data == seqs) { + if (!xml && !nexus) + nexus = true; + else { + if (nexus) { + nexus = false; + xml = true; + } + else xml = false; + } + } + if (data == morphology) { + nexus = !nexus; + xml = false; + } + break; + + case 'S': + if(jackknife || permute || bootstrap || ild || lockhart){ + justwts = !justwts; + } else { + switch (seq) { + case (dna): seq = rna; break; + case (rna): seq = protein; break; + case (protein): seq = dna; break; + } + } + break; + + case 'B': + loopcount2 = 0; + do { + printf("Block size?\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%ld%*[^\n]", &blocksize); + getchar(); + done1 = (blocksize > 0); + if (!done1) { + printf("BAD NUMBER: must be positive\n"); + } + countup(&loopcount2, 10); + } while (done1 != true); + break; + + case 'R': + reps0 = reps; + loopcount2 = 0; + do { + printf("Number of replicates?\n"); +#ifdef WIN32 + phyFillScreenColor(); +#endif + scanf("%ld%*[^\n]", &reps); + getchar(); + done1 = (reps > 0); + if (!done1) { + printf("BAD NUMBER: must be positive\n"); + reps = reps0; + } + countup(&loopcount2, 10); + } while (done1 != true); + break; + + case 'W': + weights = !weights; + break; + + case 'X': + mixture = !mixture; + break; + + case 'N': + ancvar = !ancvar; + break; + + case 'C': + categories = !categories; + break; + + case 'F': + factors = !factors; + break; + + case 'I': + interleaved = !interleaved; + break; + + case '0': + initterminal(&ibmpc, &ansi); + break; + + case '1': + printdata = !printdata; + break; + + case '.': + dotdiff = !dotdiff; + break; + + case '2': + progress = !progress; + break; + } + } else + printf("Not a possible option!\n"); + countup(&loopcount, 100); + } + if (bootstrap || jackknife) { + if (jackknife && regular) + fracsample = 0.5; + if (bootstrap && regular) + fracsample = 1.0; + } + if (bootstrap || jackknife || permute || ild || lockhart) + initseed(&inseed, &inseed0, seed); + xml = xml && (data == seqs); + categories = categories && (data == seqs); + mixture = mixture && (data == morphology); + ancvar = ancvar && (data == morphology); +} /* getoptions */ + + +void seqboot_inputnumbers() +{ + /* read numbers of species and of sites */ + long i; + + fscanf(infile, "%ld%ld", &spp, &sites); + loci = sites; + maxalleles = 1; + if (data == restsites && enzymes) + fscanf(infile, "%ld", &nenzymes); + if (data == genefreqs) { + alleles = (long *)Malloc(sites*sizeof(long)); + scan_eoln(infile); + sites = 0; + for (i = 0; i < (loci); i++) { + if (eoln(infile)) + scan_eoln(infile); + fscanf(infile, "%ld", &alleles[i]); + if (alleles[i] > maxalleles) + maxalleles = alleles[i]; + if (all) + sites += alleles[i]; + else + sites += alleles[i] - 1; + } + if (!all) + maxalleles--; + scan_eoln(infile); + } +} /* seqboot_inputnumbers */ + + +void seqboot_inputfactors() +{ + long i, j; + Char ch, prevch; + + prevch = ' '; + j = 0; + for (i = 0; i < (sites); i++) { + do { + if (eoln(factfile)) + scan_eoln(factfile); + ch = gettc(factfile); + } while (ch == ' '); + if (ch != prevch) + j++; + prevch = ch; + factorr[i] = j; + } + scan_eoln(factfile); +} /* seqboot_inputfactors */ + + +void inputoptions() +{ + /* input the information on the options */ + long weightsum, maxfactsize, i, j, k, l, m; + + if (data == genefreqs) { + k = 0; + l = 0; + for (i = 0; i < (loci); i++) { + if (all) + m = alleles[i]; + else + m = alleles[i] - 1; + k++; + for (j = 1; j <= m; j++) { + l++; + factorr[l - 1] = k; + } + } + } else { + for (i = 1; i <= (sites); i++) + factorr[i - 1] = i; + } + if(factors){ + seqboot_inputfactors(); + } + for (i = 0; i < (sites); i++) + oldweight[i] = 1; + if (weights) + inputweights2(0, sites, &weightsum, oldweight, &weights, "seqboot"); + if (factors && printdata) { + for(i = 0; i < sites; i++) + factor[i] = (char)('0' + (factorr[i]%10)); + printfactors(outfile, sites, factor, " (least significant digit)"); + } + if (weights && printdata) + printweights(outfile, 0, sites, oldweight, "Sites"); + for (i = 0; i < (loci); i++) + how_many[i] = 0; + for (i = 0; i < (loci); i++) + where[i] = 0; + for (i = 1; i <= (sites); i++) { + how_many[factorr[i - 1] - 1]++; + if (where[factorr[i - 1] - 1] == 0) + where[factorr[i - 1] - 1] = i; + } + groups = factorr[sites - 1]; + newgroups = 0; + newsites = 0; + maxfactsize = 0; + for(i = 0 ; i < loci ; i++){ + if(how_many[i] > maxfactsize){ + maxfactsize = how_many[i]; + } + } + maxnewsites = groups * maxfactsize; + allocnew(); + for (i = 0; i < (groups); i++) { + if (oldweight[where[i] - 1] > 0) { + newgroups++; + newsites += how_many[i]; + newwhere[newgroups - 1] = where[i]; + newhowmany[newgroups - 1] = how_many[i]; + } + } +} /* inputoptions */ + + +void seqboot_inputdata() +{ + /* input the names and sequences for each species */ + long i, j, k, l, m, n, basesread, basesnew=0; + double x; + Char charstate; + boolean allread, done; + + if (data == genefreqs) { + nodef = (double **)Malloc(spp*sizeof(double *)); + for (i = 0; i < (spp); i++) + nodef[i] = (double *)Malloc(sites*sizeof(double)); + } else { + nodep = (Char **)Malloc(spp*sizeof(Char *)); + for (i = 0; i < (spp); i++) + nodep[i] = (Char *)Malloc(sites*sizeof(Char)); + } + j = nmlngth + (sites + (sites - 1) / 10) / 2 - 5; + if (j < nmlngth - 1) + j = nmlngth - 1; + if (j > 37) + j = 37; + if (printdata) { + fprintf(outfile, "\nBootstrapping algorithm, version %s\n\n\n",VERSION); + if (bootstrap) { + if (blocksize > 1) { + if (regular) + fprintf(outfile, "Block-bootstrap with block size %ld\n\n", blocksize); + else + fprintf(outfile, "Partial (%2.0f%%) block-bootstrap with block size %ld\n\n", + 100*fracsample, blocksize); + } else { + if (regular) + fprintf(outfile, "Bootstrap\n\n"); + else + fprintf(outfile, "Partial (%2.0f%%) bootstrap\n\n", 100*fracsample); + } + } else { + if (jackknife) { + if (regular) + fprintf(outfile, "Delete-half Jackknife\n\n"); + else + fprintf(outfile, "Delete-%2.0f%% Jackknife\n\n", 100*(1.0-fracsample)); + } else { + if (permute) { + fprintf(outfile, "Species order permuted separately for each"); + if (data == genefreqs) + fprintf(outfile, " locus\n\n"); + if (data == seqs) + fprintf(outfile, " site\n\n"); + if (data == morphology) + fprintf(outfile, " character\n\n"); + if (data == restsites) + fprintf(outfile, " site\n\n"); + } + else { + if (ild) { + if (data == genefreqs) + fprintf(outfile, "Locus"); + if (data == seqs) + fprintf(outfile, "Site"); + if (data == morphology) + fprintf(outfile, "Character"); + if (data == restsites) + fprintf(outfile, "Site"); + fprintf(outfile, " order permuted\n\n"); + } else { + if (lockhart) + if (data == genefreqs) + fprintf(outfile, "Locus"); + if (data == seqs) + fprintf(outfile, "Site"); + if (data == morphology) + fprintf(outfile, "Character"); + if (data == restsites) + fprintf(outfile, "Site"); + fprintf(outfile, " order permuted separately for each species\n\n"); + } + } + } + } + if (data == genefreqs) + fprintf(outfile, "%3ld species, %3ld loci\n\n", spp, loci); + else { + fprintf(outfile, "%3ld species, ", spp); + if (data == seqs) + fprintf(outfile, "%3ld sites\n\n", sites); + else if (data == morphology) + fprintf(outfile, "%3ld characters\n\n", sites); + else if (data == restsites) + fprintf(outfile, "%3ld sites\n\n", sites); + } + fprintf(outfile, "Name"); + for (i = 1; i <= j; i++) + putc(' ', outfile); + fprintf(outfile, "Data\n"); + fprintf(outfile, "----"); + for (i = 1; i <= j; i++) + putc(' ', outfile); + fprintf(outfile, "----\n\n"); + } + interleaved = (interleaved && ((data == seqs) || (data == restsites))); + if (data == genefreqs) { + for (i = 1; i <= (spp); i++) { + initname(i - 1); + j = 1; + while (j <= sites && !eoff(infile)) { + if (eoln(infile)) + scan_eoln(infile); + fscanf(infile, "%lf", &x); + if ((unsigned)x > 1.0) { + printf("GENE FREQ OUTSIDE [0,1] in species %ld\n", i); + exxit(-1); + } else { + nodef[i - 1][j - 1] = x; + j++; + } + } + scan_eoln(infile); + } + return; + } + basesread = 0; + allread = false; + while (!allread) { + /* eat white space -- if the separator line has spaces on it*/ + do { + charstate = gettc(infile); + } while (charstate == ' ' || charstate == '\t'); + ungetc(charstate, infile); + if (eoln(infile)) + scan_eoln(infile); + i = 1; + while (i <= spp) { + if ((interleaved && basesread == 0) || !interleaved) + initname(i-1); + j = interleaved ? basesread : 0; + done = false; + while (!done && !eoff(infile)) { + if (interleaved) + done = true; + while (j < sites && !(eoln(infile) ||eoff(infile))) { + charstate = gettc(infile); + if (charstate == '\n' || charstate == '\t') + charstate = ' '; + if (charstate == ' ' || + (data == seqs && charstate >= '0' && charstate <= '9')) + continue; + uppercase(&charstate); + j++; + if (charstate == '.') + charstate = nodep[0][j-1]; + nodep[i-1][j-1] = charstate; + } + if (interleaved) + continue; + if (j < sites) + scan_eoln(infile); + else if (j == sites) + done = true; + } + if (interleaved && i == 1) + basesnew = j; + scan_eoln(infile); + if ((interleaved && j != basesnew) || ((!interleaved) && j != sites)){ + printf("\n\nERROR: sequences out of alignment at site %ld", j+1); + printf(" of species %ld\n\n", i); + exxit(-1);} + i++; + } + if (interleaved) { + basesread = basesnew; + allread = (basesread == sites); + } else + allread = (i > spp); + } + if (!printdata) + return; + if (data == genefreqs) + m = (sites - 1) / 8 + 1; + else + m = (sites - 1) / 60 + 1; + for (i = 1; i <= m; i++) { + for (j = 0; j < spp; j++) { + for (k = 0; k < nmlngth; k++) + putc(nayme[j][k], outfile); + fprintf(outfile, " "); + if (data == genefreqs) + l = i * 8; + else + l = i * 60; + if (l > sites) + l = sites; + if (data == genefreqs) + n = (i - 1) * 8; + else + n = (i - 1) * 60; + for (k = n; k < l; k++) { + if (data == genefreqs) + fprintf(outfile, "%8.5f", nodef[j][k]); + else { + if (j + 1 > 1 && nodep[j][k] == nodep[0][k]) + charstate = '.'; + else + charstate = nodep[j][k]; + putc(charstate, outfile); + if ((k + 1) % 10 == 0 && (k + 1) % 60 != 0) + putc(' ', outfile); + + } + } + putc('\n', outfile); + } + putc('\n', outfile); + } + putc('\n', outfile); +} /* seqboot_inputdata */ + + +void allocrest() +{ /* allocate memory for bookkeeping arrays */ + + oldweight = (steptr)Malloc(sites*sizeof(long)); + weight = (steptr)Malloc(sites*sizeof(long)); + if (categories) + category = (steptr)Malloc(sites*sizeof(long)); + if (mixture) + mixdata = (steptr)Malloc(sites*sizeof(long)); + if (ancvar) + ancdata = (steptr)Malloc(sites*sizeof(long)); + where = (steptr)Malloc(loci*sizeof(long)); + how_many = (steptr)Malloc(loci*sizeof(long)); + factor = (Char *)Malloc(sites*sizeof(Char)); + factorr = (steptr)Malloc(sites*sizeof(long)); + nayme = (naym *)Malloc(spp*sizeof(naym)); +} /* allocrest */ + +void allocnew(void) +{ /* allocate memory for arrays that depend on the lenght of the + output sequence*/ + long i; + + newwhere = (steptr)Malloc(loci*sizeof(long)); + newhowmany = (steptr)Malloc(loci*sizeof(long)); + newerwhere = (steptr)Malloc(loci*sizeof(long)); + newerhowmany = (steptr)Malloc(loci*sizeof(long)); + newerfactor = (steptr)Malloc(maxnewsites*maxalleles*sizeof(long)); + charorder = (steptr *)Malloc(spp*sizeof(steptr)); + for (i = 0; i < spp; i++) + charorder[i] = (steptr)Malloc(maxnewsites*sizeof(long)); +} + +void doinput(int argc, Char *argv[]) +{ /* reads the input data */ + getoptions(); + seqboot_inputnumbers(); + allocrest(); + if (weights) + openfile(&weightfile,WEIGHTFILE,"input weight file", + "r",argv[0],weightfilename); + if (mixture){ + openfile(&mixfile,MIXFILE,"mixture file", "r",argv[0],mixfilename); + openfile(&outmixfile,"outmixture","output mixtures file","w",argv[0], + outmixfilename); + seqboot_inputaux(mixdata, mixfile); + } + if (ancvar){ + openfile(&ancfile,ANCFILE,"ancestor file", "r",argv[0],ancfilename); + openfile(&outancfile,"outancestors","output ancestors file","w",argv[0], + outancfilename); + seqboot_inputaux(ancdata, ancfile); + } + if (categories) { + openfile(&catfile,CATFILE,"input category file","r",argv[0],catfilename); + openfile(&outcatfile,"outcategories","output category file","w",argv[0], + outcatfilename); + inputcategs(0, sites, category, 9, "SeqBoot"); + } + if (factors){ + openfile(&factfile,FACTFILE,"factors file","r",argv[0],factfilename); + openfile(&outfactfile,"outfactors","output factors file","w",argv[0], + outfactfilename); + } + if (justwts && !permute) + openfile(&outweightfile,"outweights","output weight file", + "w",argv[0],outweightfilename); + else { + openfile(&outfile,OUTFILE,"output data file","w",argv[0],outfilename); + } + inputoptions(); + seqboot_inputdata(); +} /* doinput */ + + +void bootweights() +{ /* sets up weights by resampling data */ + long i, j, k, blocks; + double p, q, r; + + ws = newgroups; + for (i = 0; i < (ws); i++) + weight[i] = 0; + if (jackknife) { + if (fabs(newgroups*fracsample - (long)(newgroups*fracsample+0.5)) + > 0.00001) { + if (randum(seed) + < (newgroups*fracsample - (long)(newgroups*fracsample)) + /((long)(newgroups*fracsample+1.0)-(long)(newgroups*fracsample))) + q = (long)(newgroups*fracsample)+1; + else + q = (long)(newgroups*fracsample); + } else + q = (long)(newgroups*fracsample+0.5); + r = newgroups; + p = q / r; + ws = 0; + for (i = 0; i < (newgroups); i++) { + if (randum(seed) < p) { + weight[i]++; + ws++; + q--; + } + r--; + if (i + 1 < newgroups) + p = q / r; + } + } else if (permute) { + for (i = 0; i < (newgroups); i++) + weight[i] = 1; + } else if (bootstrap) { + blocks = fracsample * newgroups / blocksize; + for (i = 1; i <= (blocks); i++) { + j = (long)(newgroups * randum(seed)) + 1; + for (k = 0; k < blocksize; k++) { + weight[j - 1]++; + j++; + if (j > newgroups) + j = 1; + } + } + } else /* case of rewriting data */ + for (i = 0; i < (newgroups); i++) + weight[i] = 1; + for (i = 0; i < (newgroups); i++) + newerwhere[i] = 0; + for (i = 0; i < (newgroups); i++) + newerhowmany[i] = 0; + newergroups = 0; + newersites = 0; + for (i = 0; i < (newgroups); i++) { + for (j = 1; j <= (weight[i]); j++) { + newergroups++; + for (k = 1; k <= (newhowmany[i]); k++) { + newersites++; + newerfactor[newersites - 1] = newergroups; + } + newerwhere[newergroups - 1] = newwhere[i]; + newerhowmany[newergroups - 1] = newhowmany[i]; + } + } +} /* bootweights */ + + +void sppermute(long n) +{ /* permute the species order as given in array sppord */ + long i, j, k; + + for (i = 1; i <= (spp - 1); i++) { + k = (long)((i+1) * randum(seed)); + j = sppord[n - 1][i]; + sppord[n - 1][i] = sppord[n - 1][k]; + sppord[n - 1][k] = j; + } +} /* sppermute */ + + +void charpermute(long m, long n) +{ /* permute the n+1 characters of species m+1 */ + long i, j, k; + + for (i = 1; i <= (n-1); i++) { + k = (long)((i+1) * randum(seed)); + j = charorder[m][i]; + charorder[m][i] = charorder[m][k]; + charorder[m][k] = j; + } +} /* charpermute */ + + +void writedata() +{ + /* write out one set of bootstrapped sequences */ + long i, j, k, l, m, n, n2; + double x; + Char charstate; + + sppord = (long **)Malloc(newergroups*sizeof(long *)); + for (i = 0; i < (newergroups); i++) + sppord[i] = (long *)Malloc(spp*sizeof(long)); + for (j = 1; j <= spp; j++) + sppord[0][j - 1] = j; + for (i = 1; i < newergroups; i++) { + for (j = 1; j <= (spp); j++) + sppord[i][j - 1] = sppord[i - 1][j - 1]; + } + if (!justwts || permute) { + if (data == restsites && enzymes) + fprintf(outfile, "%5ld %5ld% 4ld\n", spp, newergroups, nenzymes); + else if (data == genefreqs) + fprintf(outfile, "%5ld %5ld\n", spp, newergroups); + else { + if ((data == seqs) + && !(bootstrap || jackknife || permute || ild || lockhart) && xml) + fprintf(outfile, "\n"); + else + if (!(bootstrap || jackknife || permute || ild || lockhart) && nexus) { + fprintf(outfile, "#NEXUS\n"); + fprintf(outfile, "BEGIN DATA;\n"); + fprintf(outfile, " DIMENSIONS NTAX=%ld NCHAR=%ld;\n", + spp, newersites); + fprintf(outfile, " FORMAT"); + if (interleaved) + fprintf(outfile, " interleave=yes"); + else + fprintf(outfile, " interleave=no"); + fprintf(outfile, " DATATYPE="); + if (data == seqs) { + switch (seq) { + case (dna): fprintf(outfile, "DNA missing=N gap=-"); break; + case (rna): fprintf(outfile, "RNA missing=N gap=-"); break; + case (protein): + fprintf(outfile, "protein missing=? gap=-"); + break; + } + } + if (data == morphology) + fprintf(outfile, "STANDARD"); + fprintf(outfile, ";\n MATRIX\n"); + } + else fprintf(outfile, "%5ld %5ld\n", spp, newersites); + } + if (data == genefreqs) { + for (i = 0; i < (newergroups); i++) + fprintf(outfile, " %3ld", alleles[factorr[newerwhere[i] - 1] - 1]); + putc('\n', outfile); + } + } + l = 1; + if ((!(bootstrap || jackknife || permute || ild || lockhart | nexus)) + && ((data == seqs) || (data == restsites))) { + interleaved = !interleaved; + if (!(bootstrap || jackknife || permute || ild || lockhart) && xml) + interleaved = false; + } + if (interleaved) + m = 60; + else + m = newergroups; + do { + if (m > newergroups) + m = newergroups; + for (j = 0; j < spp; j++) { + n = 0; + if ((l == 1) || (interleaved && nexus)) { + if (!(bootstrap || jackknife || permute || ild || lockhart) && xml) { + fprintf(outfile, " \n"); + fprintf(outfile, " "); + } + n2 = nmlngth; + if (!(bootstrap || jackknife || permute || ild || lockhart) + && (xml || nexus)) { + while (nayme[j][n2-1] == ' ') + n2--; + } + if (nexus) + fprintf(outfile, " "); + for (k = 0; k < n2; k++) + if (nexus && (nayme[j][k] == ' ') && (k < n2)) + putc('_', outfile); + else + putc(nayme[j][k], outfile); + if (!(bootstrap || jackknife || permute || ild || lockhart) && xml) + fprintf(outfile, "\n "); + } else { + if (!(bootstrap || jackknife || permute || ild || lockhart) && xml) { + fprintf(outfile, " "); + } + else { + for (k = 1; k <= nmlngth; k++) + putc(' ', outfile); + } + } + if (!xml) { + for (k = 0; k < nmlngth-n2; k++) + fprintf(outfile, " "); + fprintf(outfile, " "); + } + for (k = l - 1; k < m; k++) { + if (permute && j + 1 == 1) + sppermute(newerfactor[n]); /* we can assume chars not permuted */ + for (n2 = -1; n2 <= (newerhowmany[k] - 2); n2++) { + n++; + if (data == genefreqs) { + if (n > 1 && (n & 7) == 1) + fprintf(outfile, "\n "); + x = nodef[sppord[newerfactor[charorder[j][n - 1]] - 1][j] - 1] + [newerwhere[charorder[j][k]] + n2]; + fprintf(outfile, "%8.5f", x); + } else { + if (!(bootstrap || jackknife || permute || ild || lockhart) && xml + && (n > 1) && (n % 60 == 1)) + fprintf(outfile, "\n "); + else if (!nexus && !interleaved && (n > 1) && (n % 60 == 1)) + fprintf(outfile, "\n "); + charstate = nodep[sppord[newerfactor[charorder[j][n - 1]] - 1] + [j] - 1][newerwhere[charorder[j][k]] + n2]; + putc(charstate, outfile); + if (n % 10 == 0 && n % 60 != 0) + putc(' ', outfile); + } + } + } + if (!(bootstrap || jackknife || permute || ild || lockhart ) && xml) { + fprintf(outfile, "\n \n"); + } + putc('\n', outfile); + } + if (interleaved) { + if ((m <= newersites) && (newersites > 60)) + putc('\n', outfile); + l += 60; + m += 60; + } + } while (interleaved && l <= newersites); + if ((data == seqs) && + (!(bootstrap || jackknife || permute || ild || lockhart) && xml)) + fprintf(outfile, "\n"); + if (!(bootstrap || jackknife || permute || ild || lockhart) && nexus) + fprintf(outfile, " ;\nEND;\n"); + for (i = 0; i < (newergroups); i++) + free(sppord[i]); + free(sppord); +} /* writedata */ + + +void writeweights() +{ /* write out one set of post-bootstrapping weights */ + long j, k, l, m, n, o; + + j = 0; + l = 1; + if (interleaved) + m = 60; + else + m = sites; + do { + if(m > sites) + m = sites; + n = 0; + for (k = l - 1; k < m; k++) { + for(o = 0 ; o < how_many[k] ; o++){ + if(oldweight[k]==0){ + fprintf(outweightfile, "0"); + j++; + } + else{ + if (weight[k-j] < 10) + fprintf(outweightfile, "%c", (char)('0'+weight[k-j])); + else + fprintf(outweightfile, "%c", (char)('A'+weight[k-j]-10)); + n++; + if (!interleaved && n > 1 && n % 60 == 1) { + fprintf(outweightfile, "\n"); + if (n % 10 == 0 && n % 60 != 0) + putc(' ', outweightfile); + } + } + } + } + putc('\n', outweightfile); + if (interleaved) { + l += 60; + m += 60; + } + } while (interleaved && l <= sites); +} /* writeweights */ + + +void writecategories() +{ + /* write out categories for the bootstrapped sequences */ + long k, l, m, n, n2; + Char charstate; + if(justwts){ + if (interleaved) + m = 60; + else + m = sites; + l=1; + do { + if(m > sites) + m = sites; + n=0; + for(k=l-1 ; k < m ; k++){ + n++; + if (!interleaved && n > 1 && n % 60 == 1) + fprintf(outcatfile, "\n "); + charstate = '0' + category[k]; + putc(charstate, outcatfile); + } + if (interleaved) { + l += 60; + m += 60; + } + }while(interleaved && l <= sites); + fprintf(outcatfile, "\n"); + return; + } + + l = 1; + if (interleaved) + m = 60; + else + m = newergroups; + do { + if (m > newergroups) + m = newergroups; + n = 0; + for (k = l - 1; k < m; k++) { + for (n2 = -1; n2 <= (newerhowmany[k] - 2); n2++) { + n++; + if (!interleaved && n > 1 && n % 60 == 1) + fprintf(outcatfile, "\n "); + charstate = '0' + category[newerwhere[k] + n2]; + putc(charstate, outcatfile); + if (n % 10 == 0 && n % 60 != 0) + putc(' ', outcatfile); + } + } + if (interleaved) { + l += 60; + m += 60; + } + } while (interleaved && l <= newersites); + fprintf(outcatfile, "\n"); +} /* writecategories */ + + +void writeauxdata(steptr auxdata, FILE *outauxfile) +{ + /* write out auxiliary option data (mixtures, ancestors, ect) to + appropriate file. Samples parralel to data, or just gives one + output entry if justwts is true */ + long k, l, m, n, n2; + Char charstate; + + /* if we just output weights (justwts), and this is first set + just output the data unsampled */ + if(justwts){ + if(firstrep){ + if (interleaved) + m = 60; + else + m = sites; + l=1; + do { + if(m > sites) + m = sites; + n = 0; + for(k=l-1 ; k < m ; k++){ + n++; + if (!interleaved && n > 1 && n % 60 == 1) + fprintf(outauxfile, "\n "); + charstate = auxdata[k]; + putc(charstate, outauxfile); + } + if (interleaved) { + l += 60; + m += 60; + } + }while(interleaved && l <= sites); + fprintf(outauxfile, "\n"); + } + return; + } + + l = 1; + if (interleaved) + m = 60; + else + m = newergroups; + do { + if (m > newergroups) + m = newergroups; + n = 0; + for (k = l - 1; k < m; k++) { + for (n2 = -1; n2 <= (newerhowmany[k] - 2); n2++) { + n++; + if (!interleaved && n > 1 && n % 60 == 1) + fprintf(outauxfile, "\n "); + charstate = auxdata[newerwhere[k] + n2]; + putc(charstate, outauxfile); + if (n % 10 == 0 && n % 60 != 0) + putc(' ', outauxfile); + } + } + if (interleaved) { + l += 60; + m += 60; + } + } while (interleaved && l <= newersites); + fprintf(outauxfile, "\n"); +} /* writeauxdata */ + +void writefactors(void) +{ + long k, l, m, n, prevfact, writesites; + char symbol; + steptr wfactor; + + if(!justwts || firstrep){ + if(justwts){ + writesites = sites; + wfactor = factorr; + } else { + writesites = newersites; + wfactor = newerfactor; + } + prevfact = wfactor[0]; + symbol = '+'; + if (interleaved) + m = 60; + else + m = writesites; + l=1; + do { + if(m > writesites) + m = writesites; + n = 0; + for(k=l-1 ; k < m ; k++){ + n++; + if (!interleaved && n > 1 && n % 60 == 1) + fprintf(outfactfile, "\n "); + if(prevfact != wfactor[k]){ + symbol = (symbol == '+') ? '-' : '+'; + prevfact = wfactor[k]; + } + putc(symbol, outfactfile); + if (n % 10 == 0 && n % 60 != 0) + putc(' ', outfactfile); + } + if (interleaved) { + l += 60; + m += 60; + } + }while(interleaved && l <= writesites); + fprintf(outfactfile, "\n"); + } +} /* writefactors */ + + +void bootwrite() +{ /* does bootstrapping and writes out data sets */ + long i, j, rr, repdiv10; + + if (!(bootstrap || jackknife || permute || ild || lockhart)) + reps = 1; + repdiv10 = reps / 10; + if (repdiv10 < 1) + repdiv10 = 1; + if (progress) + putchar('\n'); + for (rr = 1; rr <= (reps); rr++) { + for (i = 0; i < spp; i++) + for (j = 0; j < maxnewsites; j++) + charorder[i][j] = j; + if(rr==1) + firstrep = true; + else + firstrep = false; + if (ild) { + charpermute(0, maxnewsites); + for (i = 1; i < spp; i++) + for (j = 0; j < maxnewsites; j++) + charorder[i][j] = charorder[0][j]; + } + if (lockhart) + for (i = 0; i < spp; i++) + charpermute(i, maxnewsites); + bootweights(); + if (!justwts || permute || ild || lockhart) + writedata(); + if (justwts && !(permute || ild || lockhart)) + writeweights(); + if (categories) + writecategories(); + if (factors) + writefactors(); + if (mixture) + writeauxdata(mixdata, outmixfile); + if (ancvar) + writeauxdata(ancdata, outancfile); + if (progress && (bootstrap || jackknife || permute || ild || lockhart) + && ((reps < 10) || rr % repdiv10 == 0)) { + printf("completed replicate number %4ld\n", rr); +#ifdef WIN32 + phyFillScreenColor(); +#endif + } + } + if (progress) { + if (justwts) + printf("\nOutput weights written to file \"%s\"\n\n", outweightfilename); + else + printf("\nOutput written to file \"%s\"\n\n", outfilename); + } +} /* bootwrite */ + + +void seqboot_inputaux(steptr dataptr, FILE* auxfile) +{ /* input auxiliary option data (mixtures, ancestors, ect) for + new style input, assumes that data is correctly formated + in input files*/ + long i, j, k; + Char ch; + + j = 0; + k = 1; + for (i = 0; i < (sites); i++) { + do { + if (eoln(auxfile)) + scan_eoln(auxfile); + ch = gettc(auxfile); + if (ch == '\n') + ch = ' '; + } while (ch == ' '); + dataptr[i] = ch; + } + scan_eoln(auxfile); +} /* seqboot_inputaux */ + + +int main(int argc, Char *argv[]) +{ /* Read in sequences or frequencies and bootstrap or jackknife them */ +#ifdef MAC + argc = 1; /* macsetup("SeqBoot",""); */ + argv[0] = "SeqBoot"; +#endif + init(argc,argv); + openfile(&infile, INFILE, "input file", "r", argv[0], infilename); + ibmpc = IBMCRT; + ansi = ANSICRT; + doinput(argc, argv); + bootwrite(); + FClose(infile); + if (weights) + FClose(weightfile); + if (categories) { + FClose(catfile); + FClose(outcatfile); + } + if(mixture) + FClose(outmixfile); + if(ancvar) + FClose(outancfile); + if (justwts && !permute) { + FClose(outweightfile); + } + else + FClose(outfile); +#ifdef MAC + fixmacfile(outfilename); + if (justwts && !permute) + fixmacfile(outweightfilename); + if (categories) + fixmacfile(outcatfilename); + if (mixture) + fixmacfile(outmixfilename); +#endif + printf("Done.\n\n"); +#ifdef WIN32 + phyRestoreConsoleAttributes(); +#endif + return 0; +} diff --git a/forester/archive/RIO/others/phylip_mod/src/test_infile_fitch b/forester/archive/RIO/others/phylip_mod/src/test_infile_fitch new file mode 100644 index 0000000..3c129f1 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/test_infile_fitch @@ -0,0 +1,8 @@ +7 +Bovine_sequence 0.0000 1.6866 1.7198 1.6606 1.5243 1.6043 1.5905 +Mouse_sequence 1.6866 0.0000 1.5232 1.4841 1.4465 1.4389 1.4629 +Gibbon_sequence 1.7198 1.5232 0.0000 0.7115 0.5958 0.6179 0.5583 +Orang_sequence 1.6606 1.4841 0.7115 0.0000 0.4631 0.5061 0.4710 +Gorilla_sequence 1.5243 1.4465 0.5958 0.4631 0.0000 0.3484 0.3083 +Chimp_sequence 1.6043 1.4389 0.6179 0.5061 0.3484 0.0000 0.2692 +Human_sequence 1.5905 1.4629 0.5583 0.4710 0.3083 0.2692 0.0000 diff --git a/forester/archive/RIO/others/phylip_mod/src/test_infile_protdist b/forester/archive/RIO/others/phylip_mod/src/test_infile_protdist new file mode 100644 index 0000000..d263f1b --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/test_infile_protdist @@ -0,0 +1,6 @@ + 5 13 +Alpha AACGTGGCCACAT +Beta AAGGTCGCCACAC +Gamma CAGTTCGCCACAA +Delta GAGATTTCCGCCT +Epsilon GAGATCTCCGCCC diff --git a/forester/archive/RIO/others/phylip_mod/src/test_infile_protml b/forester/archive/RIO/others/phylip_mod/src/test_infile_protml new file mode 100644 index 0000000..67a49d6 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/test_infile_protml @@ -0,0 +1,6 @@ + 5 13 +Alpha_sequence AACGTGGCCAAAT +Beta_sequence AAGGTCGCCAAAC +Gamma_sequence CATTTCGTCACAA +Delta_sequence GGTATTTCGGCCT +Epsilon_sequence GGGATCTCGGCCC diff --git a/forester/archive/RIO/others/phylip_mod/src/test_infile_protmlk b/forester/archive/RIO/others/phylip_mod/src/test_infile_protmlk new file mode 100644 index 0000000..d825652 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/test_infile_protmlk @@ -0,0 +1,6 @@ + 5 13 +Alpha AACGTGGCCAAAT +Beta AAGGTCGCCAAAC +Gamma CATTTCGTCACAA +Delta GGTATTTCGGCCT +Epsilon GGGATCTCGGCCC diff --git a/forester/archive/RIO/others/phylip_mod/src/test_infile_protpars b/forester/archive/RIO/others/phylip_mod/src/test_infile_protpars new file mode 100644 index 0000000..30d58b2 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/test_infile_protpars @@ -0,0 +1,6 @@ + 5 10 +Alpha ABCDEFGHIK +Beta AB--EFGHIK +Gamma ?BCDSFG*?? +Delta CIKDEFGHIK +Epsilon DIKDEFGHIK diff --git a/forester/archive/RIO/others/phylip_mod/src/test_infile_seqbboot b/forester/archive/RIO/others/phylip_mod/src/test_infile_seqbboot new file mode 100644 index 0000000..19766b0 --- /dev/null +++ b/forester/archive/RIO/others/phylip_mod/src/test_infile_seqbboot @@ -0,0 +1,6 @@ + 5 6 +Alpha_sequence AACAAC +Beta_sequence AACCCC +Gamma_sequence ACCAAC +Delta_sequence CCACCA +Epsilon_sequence CCAAAC diff --git a/forester/archive/RIO/others/puzzle_dqo/AUTHORS b/forester/archive/RIO/others/puzzle_dqo/AUTHORS new file mode 100644 index 0000000..cbef439 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/AUTHORS @@ -0,0 +1,45 @@ +since 1999 by Heiko A. Schmidt, Korbinian Strimmer, + Martin Vingron, Arndt von Haeseler + +1995-1999 by Korbinian Strimmer and Arndt von Haeseler + + + +Heiko A. Schmidt + Theoretical Bioinformatics + Deutsches Krebsforschungszentrum (DKFZ) + Im Neuenheimer Feld 280 + D-69124 Heidelberg + Germany + + email: h.schmidt@dkfz-heidelberg.de, + http://www.dkfz-heidelberg.de/tbi/ + +Korbinian Strimmer + Department of Zoology + University of Oxford + South Parks Road + Oxford OX1 3PS, UK + + email: korbinian.strimmer@zoo.ox.ac.uk + http://www.zoo.ox.ac.uk/ + +Martin Vingron + Theoretical Bioinformatics + Deutsches Krebsforschungszentrum (DKFZ) + Im Neuenheimer Feld 280 + D-69124 Heidelberg + Germany + + email: vingron@dkfz-heidelberg.de + http://www.dkfz-heidelberg.de/tbi/ + +Arndt von Haeseler + Max-Planck-Institute for Evolutionary Anthropology + Inselstr. 22 + D-04103 Leipzig + Germany + + email: haeseler@eva.mpg.de, + http://www.eva.mpg.de/ + diff --git a/forester/archive/RIO/others/puzzle_dqo/COPYING b/forester/archive/RIO/others/puzzle_dqo/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/forester/archive/RIO/others/puzzle_dqo/ChangeLog b/forester/archive/RIO/others/puzzle_dqo/ChangeLog new file mode 100644 index 0000000..824b296 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/ChangeLog @@ -0,0 +1,347 @@ + +Version date what has been changed + +5.0 26.08.2000 - changes to manual, Makefile.in + - cpREV hidden by -DCPREV flag + - chi2test, quartio included into source code files + - generic scr/Makefile.generic + - src/makefile.com for VAX + - AUTHORS, README, ChangeLog updated + - INSTALL checked + 27.08.2000 - test code excluded + - '-randseed#' added for debugging purposes + - ./data added to autoconf/automake + - warning output if cmdline parameter unknown + 11.10.2000 - fixed output of rate categories of sites before + computing them + - check whether rate categories were computed by + 1st user tree or NJ tree fixed in the output + 12.10.2000 - invariant site model normalization fixed + + +CODE FREEZE +=========== + +5.0.a33 15.08.2000 - changes for autoconf/automake + +5.0.a32 01.08.2000 - a FPE error fixed (badq == 0) + - small error in -bestq fixed + - fflush's added at several places + +5.0.a31 01.08.2000 - comments added to tree structure sorting puzzle2.c + - changes in configure.in, Makefile.in + +5.0.a30 23.07.2000 - some debugging in checkquart + - changed to autoconf + +5.0.a29 13.07.2000 - some debugging in checkquart + +5.0.a28 13.07.2000 - use best quartet topology option (-bestq) implemented + +5.0.a27 13.07.2000 - further developement to checkquart + - ascii/binary quartet values (-wqla/-wqlb) + - typo correction + +5.0.a26 11.07.2000 - fflush at all checktimer + - further developement at checkquart + - possibility to write quartet values to file (-wqlh) + +5.0.a25 06.07.2000 - fflush at checktimer + +5.0.a24 02.07.2000 - further debugging of checkquart + +5.0.a23 02.07.2000 - further developement to checkquart + +5.0.a22 29.06.2000 - checkquart added to makefile + - bad quartet stats added after reading in *.allquarts + +5.0.a21 27.06.2000 - site pattern statistics implemented and added to + SEQUENCE ALIGNMENT section in puzzle report + +5.0.a20 26.06.2000 - cpREV45 implemented + +5.0.a19 26.06.2000 - for debugging purposes: typo "MPE" changed to "FPE" + - fflush(stdout) added in chi2test + +5.0.a18 20.06.2000 - checkquart implemented + +5.0.a17 19.06.2000 - FPRINTF(STDOUTFILE and STDOUT definition changed + and moved; fputid/fputid10 writes to STDOUT instead + of stdout + - ppuzzle checks slaves enough slave-processes + - numquarts, num2quart, quart2num moved from ppuzzle.c + to puzzle1.c + - read/writeallquart implemented (undocumented feature) + to be used by -wqf/-rqf at comandline + -wqf = write quartet file (infilename.allquart) after + quartet evaluation + -rqf = read quartet file (infilename.allquart), no + quartet evaluation, unless -wqf is used as + well, then quartets are written and read in + - '-h' option at comandline -> printusage + +5.0.a16 31.05.2000 - chi2test bug fixed + - WAG matrix added, model choice adopted + 13.06.2000 - date set to June 2000 + - author order changed to Schmidt, Strimmer, Vingron, + v.Haeseler + - CPU time output stopped, due to overflow errors + 16.06.2000 - sequence composition chi2test moved before + parameter output. + - output of chi2test and bad quartet statistics split, + to do the chi2test output earlier. + +5.0.a15 02.05.2000 - Names changed back from TREE-PUZZLE to PUZZLE + 09.05.2000 - and to TREE-PUZZLE again ;-) + +5.0.a14 13.03.2000 - Changes to the manual. + - Executable names changed to (p)treepuzzle. + (changes in the makefiles) + 15.03.2000 - Output of parameters after estimation added. + +5.0.a13 18.02.2000 - ALPHA version number removed from the code + +5.0.a12 18.02.2000 - CPU time measurement problems fixed for case where + clock_t is an unsigned type. + +5.0.a11 17.02.2000 - time measure problems (CPU/wallclock) fixed + not all features in addtimes are used at the moment. + - unnecessary and unused routines removed fron source + code. + +5.0.a10 20.01.2000 - Name changes from PUZZLE to TREE-PUZZLE + - Chi2-fit model guessing for VT model added + - little model printing bug fixed + +5.0.a9 22.12.1999 - VT Model incorporated (Mueller, Vingron (2000) + JCB, to appear). + - TODO: Chi2-fit model guessing for VT model + +5.0.a8 21.12.1999 - 'sys/times.h' and 'sys/types.h' removed from + puzzle.h. They were neither ANSI conform nor + necessary, but occured in the SUN man pages. + - Definition and call of writetimesstat eliminated + from the sequention version by compiler switched, + and not just the function body as before. + - '-O4' canged to '-O' to be more generic. + +5.0.a7 21.12.1999 - Macro constants introduced for data_optn + (NUCLEOTIDE, AMINOACID, BINARY) + - round robbing of datatype and AA model option changed + in menu to make adjustment of the model possible by a + determined sequence of letters: + 'd': Auto -> Nucleotides + -> Amino acids + -> Binary states + -> Auto + ('m' && data_optn == AMINOACID): + Auto -> Dayhoff + -> JTT + -> mtREV24 + -> BLOSUM62 + -> Auto + - manual.html adjusted + +5.0.a6 20.12.1999 - new manual.html added + +5.0.a5 07.12.1999 - output bug fixed (bestrates were written before they + were computed) + +5.0.a4 02.12.1999 - header file inclusion ajusted: + added: #include + changed from: #include "ppuzzle.h" + to: #ifdef PARALLEL + # include "ppuzzle.h" + #endif + +5.0.a3 27.11.1999 - '-h' comandline option removed, because of problems + with MPICH under LINUX + - new memory leaks of 5.0.a2 closed in PP_Finalize + +5.0.a2 27.11.1999 - Cleanup of the source code + - Measurement of CPU time added + - Parallel load statistics added (quartets, trees, time) + to puzzle report. + - Cleanup debug messages + - Comments "[...]" are removed from usertrees now. + - single quotes will only be printed arount species + names if -DUSEQUOTES is set at compiletime. + - tree likelihood is printed infront of a tree as a + comment, [ lh=-xx.xxxxx ](...); + +5.0.a1 26.11.1999 - Cleanup of the directories + - Copyright changes + - Version changes + + +VERSION CHANGE +============== + +4.1.a26 25.11.1999 - Makefile made universal for pauzzle and ppuzzle + - lines not needed removed from puzzle.h + +4.1.a25 19.11.1999 - Output file prefixes for distances, trees, and + puzzlereport changed in user trees analysis case + to user tree file name + - Temporary output of likelihood to treefile added + +4.1.a24 11.11.1999 - Output of puzzling step trees changed + ptorder: [ orderno # % ID #UniqTopos #Steps ]PHYLIP + pstep: chunk #InChunk sum ID #UniqTopos #Steps + - preliminary leap frog RNG implemented, i.e. uses + the rand4 in the usual way in the sequential case. + If run in parallel all rand4 are initialized with + the same seed and started with PP_Myid-th random + number. after that each process uses the every + PP_NumProcs-th random number to make sure that these + unique. + +4.1.a23 08.11.1999 - output of sequential and parallel version to *.pstep + made identical + +4.1.a22 05.11.1999 - two different puzzle step tree outputs intruduced + and added to the menu ("[ 1. 35 ](...);": + - ordered unique tree list -> *.ptorder + Format: "[ 1. 35 ]" (Ordernumber, Amount) + - chronological tree list -> *.pstep + Format: "[ 1. 35 ]" (Chunknumber, Amount in chunk) + (the last is a problem in parallel, because the come + in chunks, as scheduled) + - debugged the output +4.1.a21 04.11.1999 - Makefile adjustments for other Plattforms + - pstep tree output changed. unique treestructures + printed to *.pstep file with a leading comment + containing an order number and the ammount padded + with blanks (e.g. "[ 1. 356 ]('mouse'..."). + output is done right before writing the puzzle file. + - controlled MPI finish to the Quit menu option added + +4.1.a20 03.11.1999 - some garbage collection (free) added + - makefile adjusted, OFLAGS for optimization added + (ppuzzle/MPICH has problems with -O, so the + ppuzzle is created without optimization) + Some minor changes in the makefiles + - still to do: garbage collection from 'internalnode' + in master process + +4.1.a19 13.10.1999 - adding the output of standardized (i.e. sorted) + puzzling step trees. Those are printed to the + standard output at the moment. (Routines to sort + and print the trees implemented) + 14.10.1999 - routines for printing the sorted trees to a string. + needed to send them between Master and Worker, and + to have a unique key to sort and count the trees. + 21.10.1999 - counting of sorted trees implemented by doubly linked + list, sort routine, print to stdout + 25.10.1999 - change place of writing distances to file right after + distances have been computed. + - output of puzzling step trees now with true name, + not numbers + 02.11.1999 - parallel counting and sending of puzzling step trees + - some parallel sending bugs fixed + +4.1.a18 14.09.1999 - adding possibility to specify input file at + command line, this specifies also the output + filenames (puzzle output: *.puzzle; treefile: + *.tree; distances: *.dist; Triangel EPS: *.eps; + unresolved: *.qlist; puzzling step trees: *.pstep) + If an unexisting name is given, one has to reenter + the right name, but the wrong one is used as prefix. + 15.09.1999 - sending back of bad quartets from slaves added + - bug in quart2num fixed (not used before; was shifted + by 1) + - first version of a README added ;-) + +4.1.a17 03.08.1999 - Recv-Error in receiving DoPuzzleBlock fixed + - double freeing of same MPI_Datatype fixed + - changing of scheduling algorithm to smaller chunks + in gss -> sgss + 13.09.1999 - bug fixed in optimization routine in ml2.c: + boundary check added + +4.1.a16 12.07.1999 - slight changes in verbosity levels + - changed all printf to FPRINTF(STDOUTFILE to + change easily from stdout to a file. + +4.1.a15 08.07.1999 - scheduler for both parallel parts + - several small changes + +4.1.a14 25.06.1999 - computation of tree parallel, scheduler dependent, + sending all biparts in one message instead of one + by one + - several small changes since a13 in sched.c, et al. + +4.1.a13 10.06.1999 - computation of tree parallel (chunk = #trees/#slaves) + - scheduling schemes implemented for minimum chunk sizes + +4.1.a12 07.06.1999 - computation of quartets properly parallel + - scheduling implemented + - counting of quartets by slave ajusted + - TODO: sending of bad quartets (array + list) + - distinction between '1st user tree' and 'NJ tree' + in result output removed again + +4.1.a11 28.05.1999 - PP_SendDoQuartBlock, PP_RecvDoQuartBlock, + PP_SendQuartBlock, PP_RecvQuartBlock + - mallocquartets() changed from global to local + variables to be more flexible + - Quartet computation moved to slave (badquartet + handling missing: output, badquartet vector); + - distinction between '1st user tree' and 'NJ tree' + added in result output (puzzle1.c around l.1756) + +4.1.a10 20.05.1999 - num2quart, numquarts, quart2num introduced + - parallel init/finalize, quartets computed on + master and slave, compared -> equal -> all necessary + parameter exported + +4.1.a9 19.05.1999 - 'dvector forg' removed from onepamratematrix + cmdline, because it's not used in the function. + +4.1.a8 18.05.1999 - add _GAMMA_ (not necessary) to gamma.h and _PUZZLE_ + to puzzle.h to avoid dublicate includes, possible + due to ppuzzle.h + - ppuzzle added to makefile and to check + - 1st parallel version but no slave computations + only sending parameters and done signals. + +4.1.a7 18.05.1999 - export reevaluation of tree and evaluation of + usertrees to evaluatetree. + +4.1.a6 17.05.1999 - -DNEWFORLOOP added to fixed.src, because the changed + for loop structure changes the sequence of randomized + quartets during likelihood mapping + - change 'int main()' to 'int main(argc, argv)' + - export more functionalities from main: + memcleanup(), inputandinit(&argc, &argv) + - grouping if's (excluding eachother) together in + switch() + - split treereavaluation and 1st usertree, + evaluate all usertrees together (TODO: both, + treereavaluation and usertrees in one loop) + - MAKE CHECK added to ./makefile + +4.1.a5 16.05.1999 - adding ´dvector Brnlength´ to lslength cmdline to + reduce globality of Brnlength. (Later better to *Tree) + +4.1.a4 11.05.1999 - structure of for loops changed in computeallquartets + and recon_tree, so that the quarted addresses are in + one contigous sequence (for a /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: +uninstall: uninstall-recursive +all-am: Makefile +all-redirect: all-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-tags distclean-generic clean-am + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_dqo/Makefile.am b/forester/archive/RIO/others/puzzle_dqo/Makefile.am new file mode 100644 index 0000000..2a0bac6 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/Makefile.am @@ -0,0 +1,2 @@ +EXTRA_DIST = +SUBDIRS = src doc data diff --git a/forester/archive/RIO/others/puzzle_dqo/Makefile.in b/forester/archive/RIO/others/puzzle_dqo/Makefile.in new file mode 100644 index 0000000..38b4d60 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/Makefile.in @@ -0,0 +1,327 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICC0 = @MPICC0@ +MPICC1 = @MPICC1@ +MPICC2 = @MPICC2@ +MPICC3 = @MPICC3@ +MPICC4 = @MPICC4@ +MPICC5 = @MPICC5@ +MPICFLAGS = @MPICFLAGS@ +MPIDEFS = @MPIDEFS@ +MPILIBS = @MPILIBS@ +PACKAGE = @PACKAGE@ +PPUZZLE = @PPUZZLE@ +VERSION = @VERSION@ + +EXTRA_DIST = +SUBDIRS = src doc data +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ +Makefile.in NEWS aclocal.m4 configure configure.in install-sh missing \ +mkinstalldirs + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.in + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" = "." && dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: +uninstall: uninstall-recursive +all-am: Makefile +all-redirect: all-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-tags distclean-generic clean-am + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_dqo/aclocal.m4 b/forester/archive/RIO/others/puzzle_dqo/aclocal.m4 new file mode 100644 index 0000000..9f8add8 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/aclocal.m4 @@ -0,0 +1,104 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN(AM_INIT_AUTOMAKE, +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN(AM_MISSING_PROG, +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + diff --git a/forester/archive/RIO/others/puzzle_dqo/config.status b/forester/archive/RIO/others/puzzle_dqo/config.status new file mode 100755 index 0000000..da58b56 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/config.status @@ -0,0 +1,179 @@ +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host forester.wustl.edu: +# +# ./configure +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" +for ac_option +do + case "$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion" + exec ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "./config.status generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "$ac_cs_usage"; exit 0 ;; + *) echo "$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=. +ac_given_INSTALL="/usr/bin/install -c" + +trap 'rm -fr Makefile src/Makefile src/test doc/Makefile data/Makefile conftest*; exit 1' 1 2 15 + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; + s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF +/^[ ]*VPATH[ ]*=[^:]*$/d + +s%@SHELL@%/bin/sh%g +s%@CFLAGS@%-g -O2%g +s%@CPPFLAGS@%%g +s%@CXXFLAGS@%%g +s%@FFLAGS@%%g +s%@DEFS@% -DPACKAGE=\"tree-puzzle\" -DVERSION=\"5.0\" -DHAVE_LIBM=1 -DSTDC_HEADERS=1 -DHAVE_LIMITS_H=1 %g +s%@LDFLAGS@%%g +s%@LIBS@%-lm %g +s%@exec_prefix@%${prefix}%g +s%@prefix@%/usr/local%g +s%@program_transform_name@%s,x,x,%g +s%@bindir@%${exec_prefix}/bin%g +s%@sbindir@%${exec_prefix}/sbin%g +s%@libexecdir@%${exec_prefix}/libexec%g +s%@datadir@%${prefix}/share%g +s%@sysconfdir@%${prefix}/etc%g +s%@sharedstatedir@%${prefix}/com%g +s%@localstatedir@%${prefix}/var%g +s%@libdir@%${exec_prefix}/lib%g +s%@includedir@%${prefix}/include%g +s%@oldincludedir@%/usr/include%g +s%@infodir@%${prefix}/info%g +s%@mandir@%${prefix}/man%g +s%@INSTALL_PROGRAM@%${INSTALL}%g +s%@INSTALL_SCRIPT@%${INSTALL_PROGRAM}%g +s%@INSTALL_DATA@%${INSTALL} -m 644%g +s%@PACKAGE@%tree-puzzle%g +s%@VERSION@%5.0%g +s%@ACLOCAL@%aclocal%g +s%@AUTOCONF@%autoconf%g +s%@AUTOMAKE@%automake%g +s%@AUTOHEADER@%autoheader%g +s%@MAKEINFO@%makeinfo%g +s%@SET_MAKE@%%g +s%@CC@%gcc%g +s%@MPICC0@%%g +s%@MPICC1@%%g +s%@MPICC2@%%g +s%@MPICC3@%%g +s%@MPICC4@%%g +s%@MPICC5@%%g +s%@MPICC@%%g +s%@MPILIBS@%%g +s%@MPIDEFS@%%g +s%@MPICFLAGS@%%g +s%@PPUZZLE@%%g +s%@CPP@%gcc -E%g + +CEOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi + +CONFIG_FILES=${CONFIG_FILES-"Makefile src/Makefile src/test doc/Makefile data/Makefile"} +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + + + +exit 0 diff --git a/forester/archive/RIO/others/puzzle_dqo/configure b/forester/archive/RIO/others/puzzle_dqo/configure new file mode 100755 index 0000000..5d4db41 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/configure @@ -0,0 +1,2265 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=src/ml.h + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:550: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +echo "configure:603: checking whether build environment is sane" >&5 +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + + test "$2" = conftestfile + ) +then + # Ok. + : +else + { echo "configure: error: newly created file is older than distributed files! +Check your system clock" 1>&2; exit 1; } +fi +rm -f conftest* +echo "$ac_t""yes" 1>&6 +if test "$program_transform_name" = s,x,x,; then + program_transform_name= +else + # Double any \ or $. echo might interpret backslashes. + cat <<\EOF_SED > conftestsed +s,\\,\\\\,g; s,\$,$$,g +EOF_SED + program_transform_name="`echo $program_transform_name|sed -f conftestsed`" + rm -f conftestsed +fi +test "$program_prefix" != NONE && + program_transform_name="s,^,${program_prefix},; $program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" + +# sed with no file args requires a program. +test "$program_transform_name" = "" && program_transform_name="s,x,x," + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:660: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=tree-puzzle + +VERSION=5.0 + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi +cat >> confdefs.h <> confdefs.h <&6 +echo "configure:706: checking for working aclocal" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (aclocal --version) < /dev/null > /dev/null 2>&1; then + ACLOCAL=aclocal + echo "$ac_t""found" 1>&6 +else + ACLOCAL="$missing_dir/missing aclocal" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +echo "configure:719: checking for working autoconf" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoconf --version) < /dev/null > /dev/null 2>&1; then + AUTOCONF=autoconf + echo "$ac_t""found" 1>&6 +else + AUTOCONF="$missing_dir/missing autoconf" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working automake""... $ac_c" 1>&6 +echo "configure:732: checking for working automake" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + echo "$ac_t""found" 1>&6 +else + AUTOMAKE="$missing_dir/missing automake" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +echo "configure:745: checking for working autoheader" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoheader --version) < /dev/null > /dev/null 2>&1; then + AUTOHEADER=autoheader + echo "$ac_t""found" 1>&6 +else + AUTOHEADER="$missing_dir/missing autoheader" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:758: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:775: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:805: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:856: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:888: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 899 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:930: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:935: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:963: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + +if test "x$CC" != xcc; then + echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6 +echo "configure:996: checking whether $CC and cc understand -c and -o together" >&5 +else + echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6 +echo "configure:999: checking whether cc understands -c and -o together" >&5 +fi +set dummy $CC; ac_cc="`echo $2 | + sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" +if eval "test \"`echo '$''{'ac_cv_prog_cc_${ac_cc}_c_o'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'foo(){}' > conftest.c +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5' +if { (eval echo configure:1011: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && + test -f conftest.o && { (eval echo configure:1012: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1017: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + ac_try='cc -c conftest.c -o conftest.o 1>&5' + if { (eval echo configure:1019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && + test -f conftest.o && { (eval echo configure:1020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi +else + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 + cat >> confdefs.h <<\EOF +#define NO_MINUS_C_MINUS_O 1 +EOF + +fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:1058: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:1111: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + + + + +if test "$MPICC" != "" ; then + # Extract the first word of "$MPICC", so it can be a program name with args. +set dummy $MPICC; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1145: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC0'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC0" in + /*) + ac_cv_path_MPICC0="$MPICC0" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC0="$MPICC0" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC0="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC0="$ac_cv_path_MPICC0" +if test -n "$MPICC0"; then + echo "$ac_t""$MPICC0" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +fi +# Extract the first word of "mpcc", so it can be a program name with args. +set dummy mpcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1181: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC1'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC1" in + /*) + ac_cv_path_MPICC1="$MPICC1" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC1="$MPICC1" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC1="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC1="$ac_cv_path_MPICC1" +if test -n "$MPICC1"; then + echo "$ac_t""$MPICC1" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "hcc", so it can be a program name with args. +set dummy hcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1216: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC2'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC2" in + /*) + ac_cv_path_MPICC2="$MPICC2" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC2="$MPICC2" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC2="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC2="$ac_cv_path_MPICC2" +if test -n "$MPICC2"; then + echo "$ac_t""$MPICC2" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "mpicc", so it can be a program name with args. +set dummy mpicc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1251: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC3'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC3" in + /*) + ac_cv_path_MPICC3="$MPICC3" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC3="$MPICC3" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC3="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC3="$ac_cv_path_MPICC3" +if test -n "$MPICC3"; then + echo "$ac_t""$MPICC3" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "mpicc_lam", so it can be a program name with args. +set dummy mpicc_lam; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1286: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC4'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC4" in + /*) + ac_cv_path_MPICC4="$MPICC4" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC4="$MPICC4" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC4="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC4="$ac_cv_path_MPICC4" +if test -n "$MPICC4"; then + echo "$ac_t""$MPICC4" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "mpicc_mpich", so it can be a program name with args. +set dummy mpicc_mpich; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1321: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC5'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC5" in + /*) + ac_cv_path_MPICC5="$MPICC5" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC5="$MPICC5" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC5="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC5="$ac_cv_path_MPICC5" +if test -n "$MPICC5"; then + echo "$ac_t""$MPICC5" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + if test "$MPICC0" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC0 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1371: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1382: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC1" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC1 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1419: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1430: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC2" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC2 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1467: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1478: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC3" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC3 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1515: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1526: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC4" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC4 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1563: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1574: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC5" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC5 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1611: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1622: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + +ac_cv_prog_MPICC=$MPICC + + + + + + + +echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 +echo "configure:1652: checking for main in -lm" >&5 +ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lm $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo m | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1696: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:1776: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1789: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:1856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +for ac_hdr in limits.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1883: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + + + +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:1923: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } +EOF +if { (eval echo configure:1977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_const=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then + cat >> confdefs.h <<\EOF +#define const +EOF + +fi + +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:1998: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes +else + rm -rf conftest* + ac_cv_type_size_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF + +fi + + + +trap '' 1 2 15 + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "Makefile src/Makefile src/test doc/Makefile data/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@ACLOCAL@%$ACLOCAL%g +s%@AUTOCONF@%$AUTOCONF%g +s%@AUTOMAKE@%$AUTOMAKE%g +s%@AUTOHEADER@%$AUTOHEADER%g +s%@MAKEINFO@%$MAKEINFO%g +s%@SET_MAKE@%$SET_MAKE%g +s%@CC@%$CC%g +s%@MPICC0@%$MPICC0%g +s%@MPICC1@%$MPICC1%g +s%@MPICC2@%$MPICC2%g +s%@MPICC3@%$MPICC3%g +s%@MPICC4@%$MPICC4%g +s%@MPICC5@%$MPICC5%g +s%@MPICC@%$MPICC%g +s%@MPILIBS@%$MPILIBS%g +s%@MPIDEFS@%$MPIDEFS%g +s%@MPICFLAGS@%$MPICFLAGS%g +s%@PPUZZLE@%$PPUZZLE%g +s%@CPP@%$CPP%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/forester/archive/RIO/others/puzzle_dqo/configure.in b/forester/archive/RIO/others/puzzle_dqo/configure.in new file mode 100644 index 0000000..57f0e27 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/configure.in @@ -0,0 +1,117 @@ + +dnl Disable caching. +define([AC_CACHE_LOAD], )dnl +define([AC_CACHE_SAVE], )dnl + +dnl Process this file with autoconf to produce a configure script. +AC_INIT(src/ml.h) + +AM_INIT_AUTOMAKE(tree-puzzle, 5.0) + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_CC_C_O +AC_PROG_INSTALL +AC_PROG_MAKE_SET + + +AC_DEFUN(AC_TEST_MPICC,[dnl + if test "$1" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$1 +dnl if test "$MPICC" != "$CC" ; then +dnl +dnl fi + + if test "$MPICC" != "" ; then + AC_MSG_CHECKING(whether $MPICC works as MPI compiler) + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + AC_MSG_RESULT(yes) + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + AC_MSG_RESULT(no) + AC_MSG_CHECKING(whether $MPICC needs -lmpi) + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + AC_MSG_RESULT(yes) + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + AC_MSG_RESULT(no) + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi ]) + +if test "$MPICC" != "" ; then + AC_PATH_PROG(MPICC0, $MPICC) +fi +AC_PATH_PROG(MPICC1, mpcc) +AC_PATH_PROG(MPICC2, hcc) +AC_PATH_PROG(MPICC3, mpicc) +AC_PATH_PROG(MPICC4, mpicc_lam) +AC_PATH_PROG(MPICC5, mpicc_mpich) + +AC_TEST_MPICC($MPICC0) +AC_TEST_MPICC($MPICC1) +AC_TEST_MPICC($MPICC2) +AC_TEST_MPICC($MPICC3) +AC_TEST_MPICC($MPICC4) +AC_TEST_MPICC($MPICC5) + +ac_cv_prog_MPICC=$MPICC + +AC_SUBST(MPICC) +AC_SUBST(MPILIBS) +AC_SUBST(MPIDEFS) +AC_SUBST(MPICFLAGS) +AC_SUBST(PPUZZLE) + +dnl Checks for libraries. +dnl Replace `main' with a function in -lm: +AC_CHECK_LIB(m, main) +dnl AC_CHECK_LIB(mpi, main) + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(limits.h) +dnl AC_HAVE_HEADERS(mpi.h) + +dnl AC_HAVE_HEADERS(rpc/xdr.h) + + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_SIZE_T + +dnl Checks for library functions. +dnl AC_CHECK_FUNCS(xdr_u_char) +dnl AC_CHECK_FUNCS(xdr_double) +dnl AC_CHECK_FUNCS(xdrstdio_create) +dnl AC_CHECK_FUNCS(xdr_destroy) +dnl AC_CHECK_FUNCS(xdr_inline) + +AC_OUTPUT(Makefile src/Makefile src/test doc/Makefile data/Makefile) diff --git a/forester/archive/RIO/others/puzzle_dqo/data/Makefile b/forester/archive/RIO/others/puzzle_dqo/data/Makefile new file mode 100644 index 0000000..6f5f672 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/data/Makefile @@ -0,0 +1,177 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/tree-puzzle +pkglibdir = $(libdir)/tree-puzzle +pkgincludedir = $(includedir)/tree-puzzle + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = gcc +MAKEINFO = makeinfo +MPICC = +MPICC0 = +MPICC1 = +MPICC2 = +MPICC3 = +MPICC4 = +MPICC5 = +MPICFLAGS = +MPIDEFS = +MPILIBS = +PACKAGE = tree-puzzle +PPUZZLE = +VERSION = 5.0 + +EXTRA_DIST = atp6.a globin.a marswolf.n primates.b +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps data/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = data + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_dqo/data/Makefile.am b/forester/archive/RIO/others/puzzle_dqo/data/Makefile.am new file mode 100644 index 0000000..9589f1e --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/data/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = atp6.a globin.a marswolf.n primates.b diff --git a/forester/archive/RIO/others/puzzle_dqo/data/Makefile.in b/forester/archive/RIO/others/puzzle_dqo/data/Makefile.in new file mode 100644 index 0000000..f844e6e --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/data/Makefile.in @@ -0,0 +1,177 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICC0 = @MPICC0@ +MPICC1 = @MPICC1@ +MPICC2 = @MPICC2@ +MPICC3 = @MPICC3@ +MPICC4 = @MPICC4@ +MPICC5 = @MPICC5@ +MPICFLAGS = @MPICFLAGS@ +MPIDEFS = @MPIDEFS@ +MPILIBS = @MPILIBS@ +PACKAGE = @PACKAGE@ +PPUZZLE = @PPUZZLE@ +VERSION = @VERSION@ + +EXTRA_DIST = atp6.a globin.a marswolf.n primates.b +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps data/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = data + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_dqo/doc/Makefile b/forester/archive/RIO/others/puzzle_dqo/doc/Makefile new file mode 100644 index 0000000..0f281d4 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/doc/Makefile @@ -0,0 +1,177 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/tree-puzzle +pkglibdir = $(libdir)/tree-puzzle +pkgincludedir = $(includedir)/tree-puzzle + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = gcc +MAKEINFO = makeinfo +MPICC = +MPICC0 = +MPICC1 = +MPICC2 = +MPICC3 = +MPICC4 = +MPICC5 = +MPICFLAGS = +MPIDEFS = +MPILIBS = +PACKAGE = tree-puzzle +PPUZZLE = +VERSION = 5.0 + +EXTRA_DIST = manual.html ppuzzle.gif puzzle.gif +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = doc + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_dqo/doc/Makefile.am b/forester/archive/RIO/others/puzzle_dqo/doc/Makefile.am new file mode 100644 index 0000000..3cb95e6 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/doc/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = manual.html ppuzzle.gif puzzle.gif diff --git a/forester/archive/RIO/others/puzzle_dqo/doc/Makefile.in b/forester/archive/RIO/others/puzzle_dqo/doc/Makefile.in new file mode 100644 index 0000000..e48590c --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/doc/Makefile.in @@ -0,0 +1,177 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICC0 = @MPICC0@ +MPICC1 = @MPICC1@ +MPICC2 = @MPICC2@ +MPICC3 = @MPICC3@ +MPICC4 = @MPICC4@ +MPICC5 = @MPICC5@ +MPICFLAGS = @MPICFLAGS@ +MPIDEFS = @MPIDEFS@ +MPILIBS = @MPILIBS@ +PACKAGE = @PACKAGE@ +PPUZZLE = @PPUZZLE@ +VERSION = @VERSION@ + +EXTRA_DIST = manual.html ppuzzle.gif puzzle.gif +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = tar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = doc + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_dqo/install-sh b/forester/archive/RIO/others/puzzle_dqo/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/forester/archive/RIO/others/puzzle_dqo/missing b/forester/archive/RIO/others/puzzle_dqo/missing new file mode 100755 index 0000000..7789652 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/missing @@ -0,0 +1,190 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/forester/archive/RIO/others/puzzle_dqo/mkinstalldirs b/forester/archive/RIO/others/puzzle_dqo/mkinstalldirs new file mode 100755 index 0000000..bff4a66 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1.1.1 2005/03/22 08:34:59 cmzmasek Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/forester/archive/RIO/others/puzzle_dqo/src/Makefile b/forester/archive/RIO/others/puzzle_dqo/src/Makefile new file mode 100644 index 0000000..8a90eaa --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/Makefile @@ -0,0 +1,317 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/tree-puzzle +pkglibdir = $(libdir)/tree-puzzle +pkgincludedir = $(includedir)/tree-puzzle + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = gcc +MAKEINFO = makeinfo +MPICC = +MPICC0 = +MPICC1 = +MPICC2 = +MPICC3 = +MPICC4 = +MPICC5 = +MPICFLAGS = +MPIDEFS = +MPILIBS = +PACKAGE = tree-puzzle +PPUZZLE = +VERSION = 5.0 + +bin_PROGRAMS = puzzle + +puzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c util.c ml.h util.h puzzle.h gamma.h +puzzle_LDADD = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o spuzzle1.o spuzzle2.o sutil.o + +SDEFS = +SCFLAGS = +SLDFLAGS = -lm + +SCOMPILE = $(CC) $(SDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(SCFLAGS) $(CFLAGS) +SCCLD = $(CC) +SLINK = $(SCCLD) $(AM_CFLAGS) $(CFLAGS) $(SLDFLAGS) $(LDFLAGS) + +PCC = +PDEFS = -DPARALLEL +PCFLAGS = +PLDFLAGS = -lm +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = test +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = -DPACKAGE=\"tree-puzzle\" -DVERSION=\"5.0\" -DHAVE_LIBM=1 -DSTDC_HEADERS=1 -DHAVE_LIMITS_H=1 -I. -I$(srcdir) +CPPFLAGS = +LDFLAGS = +LIBS = -lm +puzzle_OBJECTS = gamma.o ml1.o ml2.o ml3.o model1.o model2.o puzzle1.o \ +puzzle2.o util.o +puzzle_DEPENDENCIES = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o \ +spuzzle1.o spuzzle2.o sutil.o +puzzle_LDFLAGS = +CFLAGS = -g -O2 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = README Makefile.am Makefile.in test.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +SOURCES = $(puzzle_SOURCES) +OBJECTS = $(puzzle_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +test: $(top_builddir)/config.status test.in + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = src + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ + mostlyclean-am + +clean: clean-am + +distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ + distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ +check-am installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +puzzle: $(puzzle_LDADD) $(puzzle_SOURCES) + $(SLINK) $(puzzle_LDADD) -o $@ + +sml1.o: ml1.c ml.h util.h + $(SCOMPILE) -c ml1.c && mv ml1.o $@ +sml2.o: ml2.c ml.h util.h + $(SCOMPILE) -c ml2.c && mv ml2.o $@ +sml3.o: ml3.c ml.h util.h gamma.h + $(SCOMPILE) -c ml3.c && mv ml3.o $@ +smodel1.o: model1.c ml.h util.h + $(SCOMPILE) -c model1.c && mv model1.o $@ +smodel2.o: model2.c ml.h util.h + $(SCOMPILE) -c model2.c && mv model2.o $@ +spuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(SCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +spuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(SCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +sutil.o: util.c util.h + $(SCOMPILE) -c util.c && mv util.o $@ +sgamma.o: gamma.c gamma.h util.h + $(SCOMPILE) -c gamma.c && mv gamma.o $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_dqo/src/Makefile.am b/forester/archive/RIO/others/puzzle_dqo/src/Makefile.am new file mode 100644 index 0000000..e28c498 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/Makefile.am @@ -0,0 +1,49 @@ +bin_PROGRAMS = puzzle + +puzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c util.c ml.h util.h puzzle.h gamma.h +puzzle_LDADD = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o spuzzle1.o spuzzle2.o sutil.o + +SDEFS = +SCFLAGS = +SLDFLAGS = @LIBS@ + +SCOMPILE = $(CC) $(SDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(SCFLAGS) $(CFLAGS) +SCCLD = $(CC) +SLINK = $(SCCLD) $(AM_CFLAGS) $(CFLAGS) $(SLDFLAGS) $(LDFLAGS) + + + +PCC = @MPICC@ +PDEFS = -DPARALLEL +PCFLAGS = +PLDFLAGS = @LIBS@ @MPILIBS@ + + + + +puzzle: $(puzzle_LDADD) $(puzzle_SOURCES) + $(SLINK) $(puzzle_LDADD) -o $@ + +sml1.o: ml1.c ml.h util.h + $(SCOMPILE) -c ml1.c && mv ml1.o $@ +sml2.o: ml2.c ml.h util.h + $(SCOMPILE) -c ml2.c && mv ml2.o $@ +sml3.o: ml3.c ml.h util.h gamma.h + $(SCOMPILE) -c ml3.c && mv ml3.o $@ +smodel1.o: model1.c ml.h util.h + $(SCOMPILE) -c model1.c && mv model1.o $@ +smodel2.o: model2.c ml.h util.h + $(SCOMPILE) -c model2.c && mv model2.o $@ +spuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(SCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +spuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(SCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +sutil.o: util.c util.h + $(SCOMPILE) -c util.c && mv util.o $@ +sgamma.o: gamma.c gamma.h util.h + $(SCOMPILE) -c gamma.c && mv gamma.o $@ + + + + + diff --git a/forester/archive/RIO/others/puzzle_dqo/src/Makefile.in b/forester/archive/RIO/others/puzzle_dqo/src/Makefile.in new file mode 100644 index 0000000..a8fb19d --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/Makefile.in @@ -0,0 +1,317 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICC0 = @MPICC0@ +MPICC1 = @MPICC1@ +MPICC2 = @MPICC2@ +MPICC3 = @MPICC3@ +MPICC4 = @MPICC4@ +MPICC5 = @MPICC5@ +MPICFLAGS = @MPICFLAGS@ +MPIDEFS = @MPIDEFS@ +MPILIBS = @MPILIBS@ +PACKAGE = @PACKAGE@ +PPUZZLE = @PPUZZLE@ +VERSION = @VERSION@ + +bin_PROGRAMS = puzzle + +puzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c util.c ml.h util.h puzzle.h gamma.h +puzzle_LDADD = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o spuzzle1.o spuzzle2.o sutil.o + +SDEFS = +SCFLAGS = +SLDFLAGS = @LIBS@ + +SCOMPILE = $(CC) $(SDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(SCFLAGS) $(CFLAGS) +SCCLD = $(CC) +SLINK = $(SCCLD) $(AM_CFLAGS) $(CFLAGS) $(SLDFLAGS) $(LDFLAGS) + +PCC = @MPICC@ +PDEFS = -DPARALLEL +PCFLAGS = +PLDFLAGS = @LIBS@ @MPILIBS@ +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = test +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +puzzle_OBJECTS = gamma.o ml1.o ml2.o ml3.o model1.o model2.o puzzle1.o \ +puzzle2.o util.o +puzzle_DEPENDENCIES = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o \ +spuzzle1.o spuzzle2.o sutil.o +puzzle_LDFLAGS = +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = README Makefile.am Makefile.in test.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +SOURCES = $(puzzle_SOURCES) +OBJECTS = $(puzzle_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +test: $(top_builddir)/config.status test.in + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = src + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ + mostlyclean-am + +clean: clean-am + +distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ + distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ +check-am installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +puzzle: $(puzzle_LDADD) $(puzzle_SOURCES) + $(SLINK) $(puzzle_LDADD) -o $@ + +sml1.o: ml1.c ml.h util.h + $(SCOMPILE) -c ml1.c && mv ml1.o $@ +sml2.o: ml2.c ml.h util.h + $(SCOMPILE) -c ml2.c && mv ml2.o $@ +sml3.o: ml3.c ml.h util.h gamma.h + $(SCOMPILE) -c ml3.c && mv ml3.o $@ +smodel1.o: model1.c ml.h util.h + $(SCOMPILE) -c model1.c && mv model1.o $@ +smodel2.o: model2.c ml.h util.h + $(SCOMPILE) -c model2.c && mv model2.o $@ +spuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(SCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +spuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(SCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +sutil.o: util.c util.h + $(SCOMPILE) -c util.c && mv util.o $@ +sgamma.o: gamma.c gamma.h util.h + $(SCOMPILE) -c gamma.c && mv gamma.o $@ + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_dqo/src/README b/forester/archive/RIO/others/puzzle_dqo/src/README new file mode 100644 index 0000000..9c89883 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/README @@ -0,0 +1 @@ +Sources of the TREE-PUZZLE package diff --git a/forester/archive/RIO/others/puzzle_dqo/src/gamma.c b/forester/archive/RIO/others/puzzle_dqo/src/gamma.c new file mode 100644 index 0000000..ee1f6df --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/gamma.c @@ -0,0 +1,346 @@ +/* + * gamma.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + +#include +#include "util.h" +#include "gamma.h" + +/* private prototypes */ +static double IncompleteGamma (double x, double alpha, double ln_gamma_alpha); +static double PointNormal (double prob); +static double PointChi2 (double prob, double v); + +/* Gamma density function */ +double densityGamma (double x, double shape) +{ + return pow (shape, shape) * pow (x, shape-1) / + exp (shape*x + LnGamma(shape)); +} + +/* Gamma cdf */ +double cdfGamma (double x, double shape) +{ + double result; + + result = IncompleteGamma (shape*x, shape, LnGamma(shape)); + + return result; +} + +/* Gamma inverse cdf */ +double icdfGamma (double y, double shape) +{ + double result; + + result = PointChi2 (y, 2.0*shape)/(2.0*shape); + + /* to avoid -1.0 */ + if (result < 0.0) + { + result = 0.0; + } + + return result; +} + +/* Gamma n-th moment */ +double momentGamma (int n, double shape) +{ + int i; + double tmp = 1.0; + + for (i = 1; i < n; i++) + { + tmp *= (shape + i)/shape; + } + + return tmp; +} + +/* The following code comes from tools.c in Yang's PAML package */ + +double LnGamma (double alpha) +{ +/* returns ln(gamma(alpha)) for alpha>0, accurate to 10 decimal places. + Stirling's formula is used for the central polynomial part of the procedure. + Pike MC & Hill ID (1966) Algorithm 291: Logarithm of the gamma function. + Communications of the Association for Computing Machinery, 9:684 +*/ + double x=alpha, f=0, z; + + if (x<7) { + f=1; z=x-1; + while (++z<7) f*=z; + x=z; f=-log(f); + } + z = 1/(x*x); + return f + (x-0.5)*log(x) - x + .918938533204673 + + (((-.000595238095238*z+.000793650793651)*z-.002777777777778)*z + +.083333333333333)/x; +} + +static double IncompleteGamma (double x, double alpha, double ln_gamma_alpha) +{ +/* returns the incomplete gamma ratio I(x,alpha) where x is the upper + limit of the integration and alpha is the shape parameter. + returns (-1) if in error + (1) series expansion if (alpha>x || x<=1) + (2) continued fraction otherwise + RATNEST FORTRAN by + Bhattacharjee GP (1970) The incomplete gamma integral. Applied Statistics, + 19: 285-287 (AS32) +*/ + int i; + double p=alpha, g=ln_gamma_alpha; + double accurate=1e-8, overflow=1e30; + double factor, gin=0, rn=0, a=0,b=0,an=0,dif=0, term=0, pn[6]; + + if (x==0) return (0); + if (x<0 || p<=0) return (-1); + + factor=exp(p*log(x)-x-g); + if (x>1 && x>=p) goto l30; + /* (1) series expansion */ + gin=1; term=1; rn=p; + l20: + rn++; + term*=x/rn; gin+=term; + + if (term > accurate) goto l20; + gin*=factor/p; + goto l50; + l30: + /* (2) continued fraction */ + a=1-p; b=a+x+1; term=0; + pn[0]=1; pn[1]=x; pn[2]=x+1; pn[3]=x*b; + gin=pn[2]/pn[3]; + l32: + a++; b+=2; term++; an=a*term; + for (i=0; i<2; i++) pn[i+4]=b*pn[i+2]-an*pn[i]; + if (pn[5] == 0) goto l35; + rn=pn[4]/pn[5]; dif=fabs(gin-rn); + if (dif>accurate) goto l34; + if (dif<=accurate*rn) goto l42; + l34: + gin=rn; + l35: + for (i=0; i<4; i++) pn[i]=pn[i+2]; + if (fabs(pn[4]) < overflow) goto l32; + for (i=0; i<4; i++) pn[i]/=overflow; + goto l32; + l42: + gin=1-factor*gin; + + l50: + return (gin); +} + + +/* functions concerning the CDF and percentage points of the gamma and + Chi2 distribution +*/ +static double PointNormal (double prob) +{ +/* returns z so that Prob{x.999998 || v<=0) return (-1); + + g = LnGamma (v/2); + xx=v/2; c=xx-1; + if (v >= -1.24*log(p)) goto l1; + + ch=pow((p*xx*exp(g+xx*aa)), 1/xx); + if (ch-e<0) return (ch); + goto l4; +l1: + if (v>.32) goto l3; + ch=0.4; a=log(1-p); +l2: + q=ch; p1=1+ch*(4.67+ch); p2=ch*(6.73+ch*(6.66+ch)); + t=-0.5+(4.67+2*ch)/p1 - (6.73+ch*(13.32+3*ch))/p2; + ch-=(1-exp(a+g+.5*ch+c*aa)*p2/p1)/t; + if (fabs(q/ch-1)-.01 <= 0) goto l4; + else goto l2; + +l3: + x=PointNormal (p); + p1=0.222222/v; ch=v*pow((x*sqrt(p1)+1-p1), 3.0); + if (ch>2.2*v+6) ch=-2*(log(1-p)-c*log(.5*ch)+g); +l4: + + do + { + q=ch; p1=.5*ch; + if ((t=IncompleteGamma (p1, xx, g))<0) { + return (-1); + } + p2=p-t; + t=p2*exp(xx*aa+g+p1-c*log(ch)); + b=t/ch; a=0.5*t-b*c; + + s1=(210+a*(140+a*(105+a*(84+a*(70+60*a))))) / 420; + s2=(420+a*(735+a*(966+a*(1141+1278*a))))/2520; + s3=(210+a*(462+a*(707+932*a)))/2520; + s4=(252+a*(672+1182*a)+c*(294+a*(889+1740*a)))/5040; + s5=(84+264*a+c*(175+606*a))/2520; + s6=(120+c*(346+127*c))/5040; + ch+=t*(1+0.5*t*s1-b*c*(s1-b*(s2-b*(s3-b*(s4-b*(s5-b*s6)))))); + } + while (fabs(q/ch-1) > e); + + return (ch); +} + + +/* Incomplete Gamma function Q(a,x) + - this is a cleanroom implementation of NRs gammq(a,x) +*/ +double IncompleteGammaQ (double a, double x) +{ + return 1.0-IncompleteGamma (x, a, LnGamma(a)); +} + + +/* probability that the observed chi-square + exceeds chi2 even if model is correct */ +double chi2prob (int deg, double chi2) +{ + return IncompleteGammaQ (0.5*deg, 0.5*chi2); +} + + + +/* chi square test + ef expected frequencies (sum up to 1 !!) + of observed frequencies (sum up to the number of samples) + numcat number of categories + returns critical significance level */ +double chi2test(double *ef, int *of, int numcat, int *chi2fail) +{ + double chi2, criticals, efn; + int i, below1, below5, reducedcat; + int samples; + + *chi2fail = FALSE; + reducedcat = numcat; + below1 = 0; + below5 = 0; + + /* compute number of samples */ + samples = 0; + for (i = 0; i < numcat; i++) + samples = samples + of[i]; + + /* compute chi square */ + chi2 = 0; + for (i = 0; i < numcat; i++) { + efn = ef[i]*((double) samples); + if (efn < 1.0) below1++; + if (efn < 5.0) below5++; + if (efn == 0.0) { + reducedcat--; + fprintf(stdout, "FPE error: samples=%d, ef[%d]=%f, of[%d]=%d, efn=%f, nc=%d, rc=%d\n", + samples, i, ef[i], i, of[i], efn, numcat, reducedcat); + fprintf(stdout, "PLEASE REPORT THIS ERROR TO DEVELOPERS !!!\n"); + fflush(stdout); + } else chi2 = chi2 + ((double) of[i]-efn)*((double) of[i]-efn)/efn; + } + + /* compute significance */ + criticals = chi2prob (numcat-1, chi2); + + /* no expected frequency category (sum up to # samples) below 1.0 */ + if (below1 > 0) *chi2fail = TRUE; + /* no more than 1/5 of the frequency categories below 5.0 */ + if (below5 > (int) floor(samples/5.0)) *chi2fail = TRUE; + + return criticals; +} + + +/* chi square test + ef expected frequencies (sum up to 1 !!) + of observed frequencies (sum up to the number of samples) + numcat number of categories + returns critical significance level */ +double altchi2test(double *ef, int *of, int numcat, int *chi2fail) +{ + double chi2, criticals, efn; + int i, below1, below5; + int samples; + + *chi2fail = FALSE; + below1 = 0; + below5 = 0; + + /* compute number of samples */ + samples = 0; + for (i = 0; i < numcat; i++) + samples = samples + of[i]; + + /* compute chi square */ + chi2 = 0; + for (i = 0; i < numcat; i++) { + efn = ef[i]*((double) samples); + if (efn < 1.0) below1++; + if (efn < 5.0) below5++; + chi2 = chi2 + ((double) of[i]-efn)*((double) of[i]-efn)/efn; + } + + /* compute significance */ + criticals = chi2prob (numcat-1, chi2); + + /* no expected frequency category (sum up to # samples) below 1.0 */ + if (below1 > 0) *chi2fail = TRUE; + /* no more than 1/5 of the frequency categories below 5.0 */ + if (below5 > (int) floor(samples/5.0)) *chi2fail = TRUE; + + return criticals; +} diff --git a/forester/archive/RIO/others/puzzle_dqo/src/gamma.h b/forester/archive/RIO/others/puzzle_dqo/src/gamma.h new file mode 100644 index 0000000..975f4ee --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/gamma.h @@ -0,0 +1,30 @@ +/* + * gamma.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + +#ifndef _GAMMA_ +#define _GAMMA_ + +double densityGamma (double, double); +double cdfGamma (double, double); +double icdfGamma (double, double); +double momentGamma (int, double); + +double LnGamma (double); +double IncompleteGammaQ (double, double); + +double chi2prob (int, double); +double chi2test (double *, int *, int , int *); + + +#endif /* _GAMMA_ */ diff --git a/forester/archive/RIO/others/puzzle_dqo/src/ml.h b/forester/archive/RIO/others/puzzle_dqo/src/ml.h new file mode 100644 index 0000000..7dfd2b0 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/ml.h @@ -0,0 +1,279 @@ +/* + * ml.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef _ML_ +#define _ML_ + +/* definitions */ + +#define MINTS 0.20 /* Ts/Tv parameter */ +#define MAXTS 30.0 +#define MINYR 0.10 /* Y/R Ts parameter */ +#define MAXYR 6.00 +#define MINFI 0.00 /* fraction invariable sites */ +#define MAXFI 0.99 /* only for input */ +#define MINGE 0.01 /* rate heterogeneity parameter */ +#define MAXGE 0.99 +#define MINCAT 4 /* discrete Gamma categories */ +#define MAXCAT 16 + +#define RMHROOT 5.0 /* upper relative bound for height of root */ +#define MAXARC 900.0 /* upper limit on branch length (PAM) = 6.0 */ +#define MINARC 0.001 /* lower limit on branch length (PAM) = 0.00001 */ +#define EPSILON 0.0001 /* error in branch length (PAM) = 0.000001 */ +#define HEPSILON 0.0001 /* error in node and root heights */ +#define MAXIT 100 /* maximum number of iterates of smoothing */ +#define MINFDIFF 0.00002 /* lower limit on base frequency differences */ +#define MINFREQ 0.0001 /* lower limit on base frequencies = 0.01% */ +#define NUMQBRNCH 5 /* number of branches in a quartet */ +#define NUMQIBRNCH 1 /* number of internal branches in a quartet */ +#define NUMQSPC 4 /* number of sequences in a quartet */ + +/* 2D minimisation */ +#define PEPS1 0.01 /* epsilon substitution process estimation */ +#define PEPS2 0.01 /* epsilon rate heterogeneity estimation */ + +/* quartet series */ +#define MINPERTAXUM 2 +#define MAXPERTAXUM 6 +#define TSDIFF 0.20 +#define YRDIFF 0.10 + +/* type definitions */ + +typedef struct node +{ + struct node *isop; + struct node *kinp; + int descen; + int number; + double length; + double lengthc; + double varlen; + double height; + double varheight; + ivector paths; + cvector eprob; + dcube partials; /* partial likelihoods */ + char *label; /* internal labels */ +} Node; + +typedef struct tree +{ + Node *rootp; + Node **ebrnchp; /* list of pointers to external branches */ + Node **ibrnchp; /* list of pointers to internal branches */ + double lklhd; /* total log-likelihood */ + double lklhdc; /* total log-likelihood clock */ + dmatrix condlkl; /* likelihoods for each pattern and non-zero rate */ + double rssleast; +} Tree; + + +/* global variables */ + +EXTERN Node *chep; /* pointer to current height node */ +EXTERN Node *rootbr; /* pointer to root branch */ +EXTERN Node **heights; /* pointer to height nodes in unrooted tree */ +EXTERN int Numhts; /* number of height nodes in unrooted tree */ +EXTERN double hroot; /* height of root */ +EXTERN double varhroot; /* variance of height of root */ +EXTERN double maxhroot; /* maximal height of root */ +EXTERN int locroot; /* location of root */ +EXTERN int numbestroot; /* number of best locations for root */ +EXTERN int clockmode; /* clocklike vs. nonclocklike computation */ +EXTERN cmatrix Identif; /* sequence names */ +EXTERN cmatrix Seqchar; /* ML sequence data */ +EXTERN cmatrix Seqpat; /* ordered site patterns */ +EXTERN ivector constpat; /* indicates constant site patterns */ +EXTERN cvector seqchi; +EXTERN cvector seqchj; +EXTERN dcube partiali; +EXTERN dcube partialj; +EXTERN dcube ltprobr; /* transition probabilites (for all non-zero rates */ +EXTERN dvector Distanmat; /* vector with maximum likelihood distances CZ 05/16/01 */ +EXTERN dmatrix Evec; /* Eigenvectors */ +EXTERN dmatrix Ievc; /* Inverse eigenvectors */ +EXTERN double TSparam; /* Ts/Tv parameter */ +EXTERN double tsmean, yrmean; +EXTERN double YRparam; /* Y/R Ts parameter */ +EXTERN double geerr; /* estimated error of rate heterogeneity */ +EXTERN double Geta; /* rate heterogeneity parameter */ +EXTERN double fracconst; /* fraction of constant sites */ +EXTERN double fracconstpat;/* fraction of constant patterns */ +EXTERN double Proportion; /* for tree drawing */ +EXTERN double tserr; /* estimated error of TSparam */ +EXTERN double yrerr; /* estimated error of YRparam */ +EXTERN double fracinv; /* fraction of invariable sites */ +EXTERN double fierr; /* estimated error of fracinv */ +EXTERN dvector Brnlength; +EXTERN dvector Distanvec; +EXTERN dvector Eval; /* Eigenvalues of 1 PAM rate matrix */ +EXTERN dvector Freqtpm; /* base frequencies */ +EXTERN dvector Rates; /* rate of each of the categories */ +EXTERN dmatrix iexp; +EXTERN imatrix Basecomp; /* base composition of each taxon */ +EXTERN ivector usedtaxa; /* list needed in the input treefile procedure */ +EXTERN int numtc; /* auxiliary variable for printing rooted tree */ +EXTERN int qcalg_optn; /* use quartet subsampling algorithm */ +EXTERN int approxp_optn; /* approximate parameter estimation */ +EXTERN int chi2fail; /* flag for chi2 test */ +EXTERN int Converg; /* flag for ML convergence (no clock) */ +EXTERN int Convergc; /* flag for ML convergence (clock) */ +EXTERN int data_optn; /* type of sequence input data */ +EXTERN int Dayhf_optn; /* Dayhoff model */ +EXTERN int HKY_optn; /* use HKY model */ +EXTERN int Jtt_optn; /* JTT model */ +EXTERN int blosum62_optn; /* BLOSUM 62 model */ +EXTERN int mtrev_optn; /* mtREV model */ +EXTERN int cprev_optn; /* cpREV model */ +EXTERN int vtmv_optn; /* VT model */ +EXTERN int wag_optn; /* WAG model */ +EXTERN int Maxsite; /* number of ML characters per taxum */ +EXTERN int Maxspc; /* number of sequences */ +EXTERN int mlmode; /* quartet ML or user defined tree ML */ +EXTERN int nuc_optn; /* nucleotide (4x4) models */ +EXTERN int Numbrnch; /* number of branches of current tree */ +EXTERN int numcats; /* number of rate categories */ +EXTERN int Numconst; /* number of constant sites */ +EXTERN int Numconstpat; /* number of constant patterns */ +EXTERN int Numibrnch; /* number of internal branches of current tree */ +EXTERN int Numitc; /* number of ML iterations assumning clock */ +EXTERN int Numit; /* number of ML iterations if there is convergence */ +EXTERN int Numptrn; /* number of site patterns */ +EXTERN int Numspc; /* number of sequences of current tree */ +EXTERN int optim_optn; /* optimize model parameters */ +EXTERN int grate_optim; /* optimize Gamma rate heterogeneity parameter */ +EXTERN int SH_optn; /* SH nucleotide (16x16) model */ +EXTERN int TN_optn; /* use TN model */ +EXTERN int tpmradix; /* number of different states */ +EXTERN int fracinv_optim; /* optimize fraction of invariable sites */ +EXTERN int typ_optn; /* type of PUZZLE analysis */ +EXTERN ivector Weight; /* weight of each site pattern */ +EXTERN Tree *Ctree; /* pointer to current tree */ +EXTERN ulivector badtaxon; /* involment of each taxon in a bad quartet */ +EXTERN int qca, qcb, qcc, qcd; /* quartet currently optimized */ +EXTERN ivector Alias; /* link site -> corresponding site pattern */ +EXTERN ivector bestrate; /* optimal assignment of rates to sequence sites */ + +EXTERN int bestratefound; + +/* function prototypes of all ml function */ + +void convfreq(dvector); +void radixsort(cmatrix, ivector, int, int, int *); +void condenceseq(cmatrix, ivector, cmatrix, ivector, int, int, int); +void countconstantsites(cmatrix, ivector, int, int, int *, int*); +void evaluateseqs(void); +void elmhes(dmatrix, ivector, int); +void eltran(dmatrix, dmatrix, ivector, int); +void mcdiv(double, double, double, double, double *, double *); +void hqr2(int, int, int, dmatrix, dmatrix, dvector, dvector); +void onepamratematrix(dmatrix); +void eigensystem(dvector, dmatrix); +void luinverse(dmatrix, dmatrix, int); +void checkevector(dmatrix, dmatrix, int); +void tranprobmat(void); +void tprobmtrx(double, dmatrix); +double comptotloglkl(dmatrix); +void allsitelkl(dmatrix, dvector); +double pairlkl(double); +double mldistance(int); +void initdistan(void); +void computedistan(void); +void productpartials(Node *); +void partialsinternal(Node *); +void partialsexternal(Node *); +void initpartials(Tree *); +double intlkl(double); +void optinternalbranch(Node *); +double extlkl(double); +void optexternalbranch(Node *); +void finishlkl(Node *); +double optlkl(Tree *); +double treelkl(Tree *); +void luequation(dmatrix, dvector, int); +void lslength(Tree *, dvector, int, int, dvector); + +void getusertree(FILE *, cvector, int); +Node *internalnode(Tree *, char **, int *); +void constructtree(Tree *, cvector); +void removebasalbif(cvector); +void makeusertree(FILE *); +Tree *new_tree(int, int, cmatrix); +Tree *new_quartet(int, cmatrix); +void free_tree(Tree *, int); +void make_quartet(int, int, int, int); +void changedistan(dmatrix, dvector, int); +double quartet_lklhd(int, int, int, int); +double quartet_alklhd(int, int, int, int); +void readusertree(FILE *); +double usertree_lklhd(void); +double usertree_alklhd(void); +void mlstart(void); +void distupdate(int, int, int, int); +void mlfinish(void); +void prbranch(Node *, int, int, int, ivector, ivector, FILE *); +void getproportion(double *, dvector, int); +void prtopology(FILE *); +void fputphylogeny(FILE *); +void resulttree(FILE *); +void njtree(FILE *); +void njdistantree(Tree *); +void findbestratecombination(void); +void printbestratecombination(FILE *); +int checkedge(int); +void fputsubstree(FILE *, Node *); +void fputrooted(FILE *, int); +void findheights(Node *); +void initclock(int); +double clock_alklhd(int); +double heightlkl(double); +void optheight(void); +double rheightlkl(double); +void optrheight(void); +double clock_lklhd(int); +int findrootedge(void); +void resultheights(FILE *); + +double homogentest(int); +void YangDiscreteGamma(double, int, double *); +void updaterates(void); +void computestat(double *, int, double *, double *); +double quartetml(int, int, int, int); +double opttsq(double); +double optyrq(double); +void optimseqevolparamsq(void); +double opttst(double); +double optyrt(double); +void optimseqevolparamst(void); +double optfi(double); +double optge(double); +void optimrateparams(void); + +int gettpmradix(void); +void rtfdata(dmatrix, double *); +int code2int(cvector); +char *int2code(int); + +void jttdata(dmatrix, double *); +void dyhfdata(dmatrix, double *); +void mtrevdata(dmatrix, double *); +void cprev45data(dmatrix, double *); +void blosum62data(dmatrix, double *); +void vtmvdata(dmatrix, double *); +void wagdata(dmatrix, double *); + +#endif diff --git a/forester/archive/RIO/others/puzzle_dqo/src/ml1.c b/forester/archive/RIO/others/puzzle_dqo/src/ml1.c new file mode 100644 index 0000000..a3a561f --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/ml1.c @@ -0,0 +1,1743 @@ +/* + * ml1.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/******************************************************************************/ +/* definitions and prototypes */ +/******************************************************************************/ + +#define EXTERN extern + +/* prototypes */ +#include +#include +#include +#include +#include "util.h" +#include "ml.h" + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, +#endif + + +/******************************************************************************/ +/* compacting sequence data information */ +/******************************************************************************/ + + +/***************************** internal functions *****************************/ + + +/* make all frequencies a little different */ +void convfreq(dvector freqemp) +{ + int i, j, maxi=0; + double freq, maxfreq, sum; + + + sum = 0.0; + maxfreq = 0.0; + for (i = 0; i < tpmradix; i++) { + freq = freqemp[i]; + if (freq < MINFREQ) freqemp[i] = MINFREQ; + if (freq > maxfreq) { + maxfreq = freq; + maxi = i; + } + sum += freqemp[i]; + } + freqemp[maxi] += 1.0 - sum; + + for (i = 0; i < tpmradix - 1; i++) { + for (j = i + 1; j < tpmradix; j++) { + if (freqemp[i] == freqemp[j]) { + freqemp[i] += MINFDIFF/2.0; + freqemp[j] -= MINFDIFF/2.0; + } + } + } +} + +/* sort site patters of original input data */ +void radixsort(cmatrix seqchar, ivector ali, int maxspc, int maxsite, + int *numptrn) +{ + int i, j, k, l, n, pass; + int *awork; + int *count; + + + awork = new_ivector(maxsite); + count = new_ivector(tpmradix+1); + for (i = 0; i < maxsite; i++) + ali[i] = i; + for (pass = maxspc - 1; pass >= 0; pass--) { + for (j = 0; j < tpmradix+1; j++) + count[j] = 0; + for (i = 0; i < maxsite; i++) + count[(int) seqchar[pass][ali[i]]]++; + for (j = 1; j < tpmradix+1; j++) + count[j] += count[j-1]; + for (i = maxsite-1; i >= 0; i--) + awork[ --count[(int) seqchar[pass][ali[i]]] ] = ali[i]; + for (i = 0; i < maxsite; i++) + ali[i] = awork[i]; + } + free_ivector(awork); + free_ivector(count); + n = 1; + for (j = 1; j < maxsite; j++) { + k = ali[j]; + l = ali[j-1]; + for (i = 0; i < maxspc; i++) { + if (seqchar[i][l] != seqchar[i][k]) { + n++; + break; + } + } + } + *numptrn = n; +} + + +void condenceseq(cmatrix seqchar, ivector ali, cmatrix seqconint, + ivector weight, int maxspc, int maxsite, int numptrn) +{ + int i, j, k, n; + int agree_flag; /* boolean */ + + + n = 0; + k = ali[n]; + for (i = 0; i < maxspc; i++) { + seqconint[i][n] = seqchar[i][k]; + } + weight[n] = 1; + Alias[k] = 0; + for (j = 1; j < maxsite; j++) { + k = ali[j]; + agree_flag = TRUE; + for (i = 0; i < maxspc; i++) { + if (seqconint[i][n] != seqchar[i][k]) { + agree_flag = FALSE; + break; + } + } + if (agree_flag == FALSE) { + n++; + for (i = 0; i < maxspc; i++) { + seqconint[i][n] = seqchar[i][k]; + } + weight[n] = 1; + Alias[k] = n; + } else { + weight[n]++; + Alias[k] = n; + } + } + n++; + if (numptrn != n) { + /* Problem in condenceseq */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR A TO DEVELOPERS\n\n\n"); + exit(1); + } +} + +void countconstantsites(cmatrix seqpat, ivector weight, int maxspc, int numptrn, + int *numconst, int *numconstpat) +{ + int character, s, i, constflag; + + *numconst = 0; + *numconstpat = 0; + for (s = 0; s < numptrn; s++) { /* check all patterns */ + constpat[s] = FALSE; + constflag = TRUE; + character = seqpat[0][s]; + for (i = 1; i < maxspc; i++) { + if (seqpat[i][s] != character) { + constflag = FALSE; + break; + } + } + if (character != tpmradix && constflag) { + (*numconst) = (*numconst) + weight[s]; + (*numconstpat)++; + constpat[s] = TRUE; + } + } +} + +/***************************** exported functions *****************************/ + + +void evaluateseqs() +{ + ivector ali; + + convfreq(Freqtpm); /* make all frequencies slightly different */ + ali = new_ivector(Maxsite); + radixsort(Seqchar, ali, Maxspc, Maxsite, &Numptrn); + Seqpat = new_cmatrix(Maxspc, Numptrn); + constpat = new_ivector(Numptrn); + Weight = new_ivector(Numptrn); + condenceseq(Seqchar, ali, Seqpat, Weight, Maxspc, Maxsite, Numptrn); + free_ivector(ali); + countconstantsites(Seqpat, Weight, Maxspc, Numptrn, &Numconst, &Numconstpat); + fracconstpat = (double) Numconstpat / (double) Numptrn; + fracconst = (double) Numconst / (double) Maxsite; +} + + +/******************************************************************************/ +/* computation of Pij(t) */ +/******************************************************************************/ + + +/***************************** internal functions *****************************/ + + +void elmhes(dmatrix a, ivector ordr, int n) +{ + int m, j, i; + double y, x; + + + for (i = 0; i < n; i++) + ordr[i] = 0; + for (m = 2; m < n; m++) { + x = 0.0; + i = m; + for (j = m; j <= n; j++) { + if (fabs(a[j - 1][m - 2]) > fabs(x)) { + x = a[j - 1][m - 2]; + i = j; + } + } + ordr[m - 1] = i; /* vector */ + if (i != m) { + for (j = m - 2; j < n; j++) { + y = a[i - 1][j]; + a[i - 1][j] = a[m - 1][j]; + a[m - 1][j] = y; + } + for (j = 0; j < n; j++) { + y = a[j][i - 1]; + a[j][i - 1] = a[j][m - 1]; + a[j][m - 1] = y; + } + } + if (x != 0.0) { + for (i = m; i < n; i++) { + y = a[i][m - 2]; + if (y != 0.0) { + y /= x; + a[i][m - 2] = y; + for (j = m - 1; j < n; j++) + a[i][j] -= y * a[m - 1][j]; + for (j = 0; j < n; j++) + a[j][m - 1] += y * a[j][i]; + } + } + } + } +} + + +void eltran(dmatrix a, dmatrix zz, ivector ordr, int n) +{ + int i, j, m; + + + for (i = 0; i < n; i++) { + for (j = i + 1; j < n; j++) { + zz[i][j] = 0.0; + zz[j][i] = 0.0; + } + zz[i][i] = 1.0; + } + if (n <= 2) + return; + for (m = n - 1; m >= 2; m--) { + for (i = m; i < n; i++) + zz[i][m - 1] = a[i][m - 2]; + i = ordr[m - 1]; + if (i != m) { + for (j = m - 1; j < n; j++) { + zz[m - 1][j] = zz[i - 1][j]; + zz[i - 1][j] = 0.0; + } + zz[i - 1][m - 1] = 1.0; + } + } +} + + +void mcdiv(double ar, double ai, double br, double bi, + double *cr, double *ci) +{ + double s, ars, ais, brs, bis; + + + s = fabs(br) + fabs(bi); + ars = ar / s; + ais = ai / s; + brs = br / s; + bis = bi / s; + s = brs * brs + bis * bis; + *cr = (ars * brs + ais * bis) / s; + *ci = (ais * brs - ars * bis) / s; +} + + +void hqr2(int n, int low, int hgh, dmatrix h, + dmatrix zz, dvector wr, dvector wi) +{ + int i, j, k, l=0, m, en, na, itn, its; + double p=0, q=0, r=0, s=0, t, w, x=0, y, ra, sa, vi, vr, z=0, norm, tst1, tst2; + int notlas; /* boolean */ + + + norm = 0.0; + k = 1; + /* store isolated roots and compute matrix norm */ + for (i = 0; i < n; i++) { + for (j = k - 1; j < n; j++) + norm += fabs(h[i][j]); + k = i + 1; + if (i + 1 < low || i + 1 > hgh) { + wr[i] = h[i][i]; + wi[i] = 0.0; + } + } + en = hgh; + t = 0.0; + itn = n * 30; + while (en >= low) { /* search for next eigenvalues */ + its = 0; + na = en - 1; + while (en >= 1) { + /* look for single small sub-diagonal element */ + for (l = en; l > low; l--) { + s = fabs(h[l - 2][l - 2]) + fabs(h[l - 1][l - 1]); + if (s == 0.0) + s = norm; + tst1 = s; + tst2 = tst1 + fabs(h[l - 1][l - 2]); + if (tst2 == tst1) + goto L100; + } + l = low; + L100: + x = h[en - 1][en - 1]; /* form shift */ + if (l == en || l == na) + break; + if (itn == 0) { + /* all eigenvalues have not converged */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR B TO DEVELOPERS\n\n\n"); + exit(1); + } + y = h[na - 1][na - 1]; + w = h[en - 1][na - 1] * h[na - 1][en - 1]; + /* form exceptional shift */ + if (its == 10 || its == 20) { + t += x; + for (i = low - 1; i < en; i++) + h[i][i] -= x; + s = fabs(h[en - 1][na - 1]) + fabs(h[na - 1][en - 3]); + x = 0.75 * s; + y = x; + w = -0.4375 * s * s; + } + its++; + itn--; + /* look for two consecutive small sub-diagonal elements */ + for (m = en - 2; m >= l; m--) { + z = h[m - 1][m - 1]; + r = x - z; + s = y - z; + p = (r * s - w) / h[m][m - 1] + h[m - 1][m]; + q = h[m][m] - z - r - s; + r = h[m + 1][m]; + s = fabs(p) + fabs(q) + fabs(r); + p /= s; + q /= s; + r /= s; + if (m == l) + break; + tst1 = fabs(p) * + (fabs(h[m - 2][m - 2]) + fabs(z) + fabs(h[m][m])); + tst2 = tst1 + fabs(h[m - 1][m - 2]) * (fabs(q) + fabs(r)); + if (tst2 == tst1) + break; + } + for (i = m + 2; i <= en; i++) { + h[i - 1][i - 3] = 0.0; + if (i != m + 2) + h[i - 1][i - 4] = 0.0; + } + for (k = m; k <= na; k++) { + notlas = (k != na); + if (k != m) { + p = h[k - 1][k - 2]; + q = h[k][k - 2]; + r = 0.0; + if (notlas) + r = h[k + 1][k - 2]; + x = fabs(p) + fabs(q) + fabs(r); + if (x != 0.0) { + p /= x; + q /= x; + r /= x; + } + } + if (x != 0.0) { + if (p < 0.0) /* sign */ + s = - sqrt(p * p + q * q + r * r); + else + s = sqrt(p * p + q * q + r * r); + if (k != m) + h[k - 1][k - 2] = -s * x; + else { + if (l != m) + h[k - 1][k - 2] = -h[k - 1][k - 2]; + } + p += s; + x = p / s; + y = q / s; + z = r / s; + q /= p; + r /= p; + if (!notlas) { + for (j = k - 1; j < n; j++) { /* row modification */ + p = h[k - 1][j] + q * h[k][j]; + h[k - 1][j] -= p * x; + h[k][j] -= p * y; + } + j = (en < (k + 3)) ? en : (k + 3); /* min */ + for (i = 0; i < j; i++) { /* column modification */ + p = x * h[i][k - 1] + y * h[i][k]; + h[i][k - 1] -= p; + h[i][k] -= p * q; + } + /* accumulate transformations */ + for (i = low - 1; i < hgh; i++) { + p = x * zz[i][k - 1] + y * zz[i][k]; + zz[i][k - 1] -= p; + zz[i][k] -= p * q; + } + } else { + for (j = k - 1; j < n; j++) { /* row modification */ + p = h[k - 1][j] + q * h[k][j] + r * h[k + 1][j]; + h[k - 1][j] -= p * x; + h[k][j] -= p * y; + h[k + 1][j] -= p * z; + } + j = (en < (k + 3)) ? en : (k + 3); /* min */ + for (i = 0; i < j; i++) { /* column modification */ + p = x * h[i][k - 1] + y * h[i][k] + z * h[i][k + 1]; + h[i][k - 1] -= p; + h[i][k] -= p * q; + h[i][k + 1] -= p * r; + } + /* accumulate transformations */ + for (i = low - 1; i < hgh; i++) { + p = x * zz[i][k - 1] + y * zz[i][k] + + z * zz[i][k + 1]; + zz[i][k - 1] -= p; + zz[i][k] -= p * q; + zz[i][k + 1] -= p * r; + } + } + } + } /* for k */ + } /* while infinite loop */ + if (l == en) { /* one root found */ + h[en - 1][en - 1] = x + t; + wr[en - 1] = h[en - 1][en - 1]; + wi[en - 1] = 0.0; + en = na; + continue; + } + y = h[na - 1][na - 1]; + w = h[en - 1][na - 1] * h[na - 1][en - 1]; + p = (y - x) / 2.0; + q = p * p + w; + z = sqrt(fabs(q)); + h[en - 1][en - 1] = x + t; + x = h[en - 1][en - 1]; + h[na - 1][na - 1] = y + t; + if (q >= 0.0) { /* real pair */ + if (p < 0.0) /* sign */ + z = p - fabs(z); + else + z = p + fabs(z); + wr[na - 1] = x + z; + wr[en - 1] = wr[na - 1]; + if (z != 0.0) + wr[en - 1] = x - w / z; + wi[na - 1] = 0.0; + wi[en - 1] = 0.0; + x = h[en - 1][na - 1]; + s = fabs(x) + fabs(z); + p = x / s; + q = z / s; + r = sqrt(p * p + q * q); + p /= r; + q /= r; + for (j = na - 1; j < n; j++) { /* row modification */ + z = h[na - 1][j]; + h[na - 1][j] = q * z + p * h[en - 1][j]; + h[en - 1][j] = q * h[en - 1][j] - p * z; + } + for (i = 0; i < en; i++) { /* column modification */ + z = h[i][na - 1]; + h[i][na - 1] = q * z + p * h[i][en - 1]; + h[i][en - 1] = q * h[i][en - 1] - p * z; + } + /* accumulate transformations */ + for (i = low - 1; i < hgh; i++) { + z = zz[i][na - 1]; + zz[i][na - 1] = q * z + p * zz[i][en - 1]; + zz[i][en - 1] = q * zz[i][en - 1] - p * z; + } + } else { /* complex pair */ + wr[na - 1] = x + p; + wr[en - 1] = x + p; + wi[na - 1] = z; + wi[en - 1] = -z; + } + en -= 2; + } /* while en >= low */ + /* backsubstitute to find vectors of upper triangular form */ + if (norm != 0.0) { + for (en = n; en >= 1; en--) { + p = wr[en - 1]; + q = wi[en - 1]; + na = en - 1; + if (q == 0.0) {/* real vector */ + m = en; + h[en - 1][en - 1] = 1.0; + if (na != 0) { + for (i = en - 2; i >= 0; i--) { + w = h[i][i] - p; + r = 0.0; + for (j = m - 1; j < en; j++) + r += h[i][j] * h[j][en - 1]; + if (wi[i] < 0.0) { + z = w; + s = r; + } else { + m = i + 1; + if (wi[i] == 0.0) { + t = w; + if (t == 0.0) { + tst1 = norm; + t = tst1; + do { + t = 0.01 * t; + tst2 = norm + t; + } while (tst2 > tst1); + } + h[i][en - 1] = -(r / t); + } else { /* solve real equations */ + x = h[i][i + 1]; + y = h[i + 1][i]; + q = (wr[i] - p) * (wr[i] - p) + wi[i] * wi[i]; + t = (x * s - z * r) / q; + h[i][en - 1] = t; + if (fabs(x) > fabs(z)) + h[i + 1][en - 1] = (-r - w * t) / x; + else + h[i + 1][en - 1] = (-s - y * t) / z; + } + /* overflow control */ + t = fabs(h[i][en - 1]); + if (t != 0.0) { + tst1 = t; + tst2 = tst1 + 1.0 / tst1; + if (tst2 <= tst1) { + for (j = i; j < en; j++) + h[j][en - 1] /= t; + } + } + } + } + } + } else if (q > 0.0) { + m = na; + if (fabs(h[en - 1][na - 1]) > fabs(h[na - 1][en - 1])) { + h[na - 1][na - 1] = q / h[en - 1][na - 1]; + h[na - 1][en - 1] = (p - h[en - 1][en - 1]) / + h[en - 1][na - 1]; + } else + mcdiv(0.0, -h[na - 1][en - 1], h[na - 1][na - 1] - p, q, + &h[na - 1][na - 1], &h[na - 1][en - 1]); + h[en - 1][na - 1] = 0.0; + h[en - 1][en - 1] = 1.0; + if (en != 2) { + for (i = en - 3; i >= 0; i--) { + w = h[i][i] - p; + ra = 0.0; + sa = 0.0; + for (j = m - 1; j < en; j++) { + ra += h[i][j] * h[j][na - 1]; + sa += h[i][j] * h[j][en - 1]; + } + if (wi[i] < 0.0) { + z = w; + r = ra; + s = sa; + } else { + m = i + 1; + if (wi[i] == 0.0) + mcdiv(-ra, -sa, w, q, &h[i][na - 1], + &h[i][en - 1]); + else { /* solve complex equations */ + x = h[i][i + 1]; + y = h[i + 1][i]; + vr = (wr[i] - p) * (wr[i] - p); + vr = vr + wi[i] * wi[i] - q * q; + vi = (wr[i] - p) * 2.0 * q; + if (vr == 0.0 && vi == 0.0) { + tst1 = norm * (fabs(w) + fabs(q) + fabs(x) + + fabs(y) + fabs(z)); + vr = tst1; + do { + vr = 0.01 * vr; + tst2 = tst1 + vr; + } while (tst2 > tst1); + } + mcdiv(x * r - z * ra + q * sa, + x * s - z * sa - q * ra, vr, vi, + &h[i][na - 1], &h[i][en - 1]); + if (fabs(x) > fabs(z) + fabs(q)) { + h[i + 1] + [na - 1] = (q * h[i][en - 1] - + w * h[i][na - 1] - ra) / x; + h[i + 1][en - 1] = (-sa - w * h[i][en - 1] - + q * h[i][na - 1]) / x; + } else + mcdiv(-r - y * h[i][na - 1], + -s - y * h[i][en - 1], z, q, + &h[i + 1][na - 1], &h[i + 1][en - 1]); + } + /* overflow control */ + t = (fabs(h[i][na - 1]) > fabs(h[i][en - 1])) ? + fabs(h[i][na - 1]) : fabs(h[i][en - 1]); + if (t != 0.0) { + tst1 = t; + tst2 = tst1 + 1.0 / tst1; + if (tst2 <= tst1) { + for (j = i; j < en; j++) { + h[j][na - 1] /= t; + h[j][en - 1] /= t; + } + } + } + } + } + } + } + } + /* end back substitution. vectors of isolated roots */ + for (i = 0; i < n; i++) { + if (i + 1 < low || i + 1 > hgh) { + for (j = i; j < n; j++) + zz[i][j] = h[i][j]; + } + } + /* multiply by transformation matrix to give vectors of + * original full matrix. */ + for (j = n - 1; j >= low - 1; j--) { + m = ((j + 1) < hgh) ? (j + 1) : hgh; /* min */ + for (i = low - 1; i < hgh; i++) { + z = 0.0; + for (k = low - 1; k < m; k++) + z += zz[i][k] * h[k][j]; + zz[i][j] = z; + } + } + } + return; +} + + +/* make rate matrix with 0.01 expected substitutions per unit time */ +void onepamratematrix(dmatrix a) +{ + int i, j; + double delta, temp, sum; + dvector m; + + for (i = 0; i < tpmradix; i++) + { + for (j = 0; j < tpmradix; j++) + { + a[i][j] = Freqtpm[j]*a[i][j]; + } + } + + m = new_dvector(tpmradix); + for (i = 0, sum = 0.0; i < tpmradix; i++) + { + for (j = 0, temp = 0.0; j < tpmradix; j++) + temp += a[i][j]; + m[i] = temp; /* row sum */ + sum += temp*Freqtpm[i]; /* exp. rate */ + } + delta = 0.01 / sum; /* 0.01 subst. per unit time */ + for (i = 0; i < tpmradix; i++) { + for (j = 0; j < tpmradix; j++) { + if (i != j) + a[i][j] = delta * a[i][j]; + else + a[i][j] = delta * (-m[i]); + } + } + free_dvector(m); +} + + +void eigensystem(dvector eval, dmatrix evec) +{ + dvector evali, forg; + dmatrix a, b; + ivector ordr; + int i, j, k, error; + double zero; + + + ordr = new_ivector(tpmradix); + evali = new_dvector(tpmradix); + forg = new_dvector(tpmradix); + a = new_dmatrix(tpmradix,tpmradix); + b = new_dmatrix(tpmradix,tpmradix); + + rtfdata(a, forg); /* get relative transition matrix and frequencies */ + + onepamratematrix(a); /* make 1 PAM rate matrix */ + + /* copy a to b */ + for (i = 0; i < tpmradix; i++) + for (j = 0; j < tpmradix; j++) + b[i][j] = a[i][j]; + + elmhes(a, ordr, tpmradix); /* compute eigenvalues and eigenvectors */ + eltran(a, evec, ordr, tpmradix); + hqr2(tpmradix, 1, tpmradix, a, evec, eval, evali); + + /* check eigenvalue equation */ + error = FALSE; + for (j = 0; j < tpmradix; j++) { + for (i = 0, zero = 0.0; i < tpmradix; i++) { + for (k = 0; k < tpmradix; k++) zero += b[i][k] * evec[k][j]; + zero -= eval[j] * evec[i][j]; + if (fabs(zero) > 1.0e-5) + error = TRUE; + } + } + if (error) + FPRINTF(STDOUTFILE "\nWARNING: Eigensystem doesn't satisfy eigenvalue equation!\n"); + + free_ivector(ordr); + free_dvector(evali); + free_dvector(forg); + free_dmatrix(a); + free_dmatrix(b); +} + + +void luinverse(dmatrix inmat, dmatrix imtrx, int size) +{ + double eps = 1.0e-20; /* ! */ + int i, j, k, l, maxi=0, idx, ix, jx; + double sum, tmp, maxb, aw; + ivector index; + double *wk; + dmatrix omtrx; + + + index = new_ivector(tpmradix); + omtrx = new_dmatrix(tpmradix,tpmradix); + + /* copy inmat to omtrx */ + for (i = 0; i < tpmradix; i++) + for (j = 0; j < tpmradix; j++) + omtrx[i][j] = inmat[i][j]; + + wk = (double *) malloc((unsigned)size * sizeof(double)); + aw = 1.0; + for (i = 0; i < size; i++) { + maxb = 0.0; + for (j = 0; j < size; j++) { + if (fabs(omtrx[i][j]) > maxb) + maxb = fabs(omtrx[i][j]); + } + if (maxb == 0.0) { + /* Singular matrix */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR C TO DEVELOPERS\n\n\n"); + exit(1); + } + wk[i] = 1.0 / maxb; + } + for (j = 0; j < size; j++) { + for (i = 0; i < j; i++) { + sum = omtrx[i][j]; + for (k = 0; k < i; k++) + sum -= omtrx[i][k] * omtrx[k][j]; + omtrx[i][j] = sum; + } + maxb = 0.0; + for (i = j; i < size; i++) { + sum = omtrx[i][j]; + for (k = 0; k < j; k++) + sum -= omtrx[i][k] * omtrx[k][j]; + omtrx[i][j] = sum; + tmp = wk[i] * fabs(sum); + if (tmp >= maxb) { + maxb = tmp; + maxi = i; + } + } + if (j != maxi) { + for (k = 0; k < size; k++) { + tmp = omtrx[maxi][k]; + omtrx[maxi][k] = omtrx[j][k]; + omtrx[j][k] = tmp; + } + aw = -aw; + wk[maxi] = wk[j]; + } + index[j] = maxi; + if (omtrx[j][j] == 0.0) + omtrx[j][j] = eps; + if (j != size - 1) { + tmp = 1.0 / omtrx[j][j]; + for (i = j + 1; i < size; i++) + omtrx[i][j] *= tmp; + } + } + for (jx = 0; jx < size; jx++) { + for (ix = 0; ix < size; ix++) + wk[ix] = 0.0; + wk[jx] = 1.0; + l = -1; + for (i = 0; i < size; i++) { + idx = index[i]; + sum = wk[idx]; + wk[idx] = wk[i]; + if (l != -1) { + for (j = l; j < i; j++) + sum -= omtrx[i][j] * wk[j]; + } else if (sum != 0.0) + l = i; + wk[i] = sum; + } + for (i = size - 1; i >= 0; i--) { + sum = wk[i]; + for (j = i + 1; j < size; j++) + sum -= omtrx[i][j] * wk[j]; + wk[i] = sum / omtrx[i][i]; + } + for (ix = 0; ix < size; ix++) + imtrx[ix][jx] = wk[ix]; + } + free((char *)wk); + wk = NULL; + free_ivector(index); + free_dmatrix(omtrx); +} + + +void checkevector(dmatrix evec, dmatrix ivec, int nn) +{ + int i, j, ia, ib, ic, error; + dmatrix matx; + double sum; + + + matx = new_dmatrix(nn, nn); + /* multiply matrix of eigenvectors and its inverse */ + for (ia = 0; ia < nn; ia++) { + for (ic = 0; ic < nn; ic++) { + sum = 0.0; + for (ib = 0; ib < nn; ib++) sum += evec[ia][ib] * ivec[ib][ic]; + matx[ia][ic] = sum; + } + } + /* check whether the unitary matrix is obtained */ + error = FALSE; + for (i = 0; i < nn; i++) { + for (j = 0; j < nn; j++) { + if (i == j) { + if (fabs(matx[i][j] - 1.0) > 1.0e-5) + error = TRUE; + } else { + if (fabs(matx[i][j]) > 1.0e-5) + error = TRUE; + } + } + } + if (error) { + FPRINTF(STDOUTFILE "\nWARNING: Inversion of eigenvector matrix not perfect!\n"); + } + free_dmatrix(matx); +} + + +/***************************** exported functions *****************************/ + + +/* compute 1 PAM rate matrix, its eigensystem, and the inverse matrix thereof */ +void tranprobmat() +{ + eigensystem(Eval, Evec); /* eigensystem of 1 PAM rate matrix */ + luinverse(Evec, Ievc, tpmradix); /* inverse eigenvectors are in Ievc */ + checkevector(Evec, Ievc, tpmradix); /* check whether inversion was OK */ +} + + +/* compute P(t) */ +void tprobmtrx(double arc, dmatrix tpr) +{ + register int i, j, k; + register double temp; + + + for (k = 0; k < tpmradix; k++) { + temp = exp(arc * Eval[k]); + for (j = 0; j < tpmradix; j++) + iexp[k][j] = Ievc[k][j] * temp; + } + for (i = 0; i < tpmradix; i++) { + for (j = 0; j < tpmradix; j++) { + temp = 0.0; + for (k = 0; k < tpmradix; k++) + temp += Evec[i][k] * iexp[k][j]; + tpr[i][j] = fabs(temp); + } + } +} + + +/******************************************************************************/ +/* estimation of maximum likelihood distances */ +/******************************************************************************/ + +/* compute total log-likelihood + input: likelihoods for each site and non-zero rate + output: total log-likelihood (incl. zero rate category) */ +double comptotloglkl(dmatrix cdl) +{ + int k, r; + double loglkl, fv, fv2, sitelkl; + + loglkl = 0.0; + fv = 1.0-fracinv; + fv2 = (1.0-fracinv)/(double) numcats; + + if (numcats == 1) { + + for (k = 0; k < Numptrn; k++) { + + /* compute likelihood for pattern k */ + sitelkl = cdl[0][k]*fv; + if (constpat[k] == TRUE) + sitelkl += fracinv*Freqtpm[(int) Seqpat[0][k]]; + + /* total log-likelihood */ + loglkl += log(sitelkl)*Weight[k]; + + } + + } else { + + for (k = 0; k < Numptrn; k++) { + + /* this general routine works always but it's better + to run it only when it's really necessary */ + + /* compute likelihood for pattern k */ + sitelkl = 0.0; + for (r = 0; r < numcats; r++) + sitelkl += cdl[r][k]; + sitelkl = fv2*sitelkl; + if (constpat[k] == TRUE) + sitelkl += fracinv*Freqtpm[(int) Seqpat[0][k]]; + + /* total log-likelihood */ + loglkl += log(sitelkl)*Weight[k]; + + } + + } + + return loglkl; +} + + +/* computes the site log-likelihoods + input: likelihoods for each site and non-zero rate + output: log-likelihood for each site */ +void allsitelkl(dmatrix cdl, dvector aslkl) +{ + int k, r; + double fv, fv2, sitelkl; + + fv = 1.0-fracinv; + fv2 = (1.0-fracinv)/(double) numcats; + + if (numcats == 1) { + + for (k = 0; k < Numptrn; k++) { + + /* compute likelihood for pattern k */ + sitelkl = cdl[0][k]*fv; + if (constpat[k] == TRUE) + sitelkl += fracinv*Freqtpm[(int) Seqpat[0][k]]; + + /* site log-likelihood */ + aslkl[k] = log(sitelkl); + } + + } else { + + for (k = 0; k < Numptrn; k++) { + + /* this general routine works always but it's better + to run it only when it's really necessary */ + + /* compute likelihood for pattern k */ + sitelkl = 0.0; + for (r = 0; r < numcats; r++) + sitelkl += cdl[r][k]; + sitelkl = fv2*sitelkl; + if (constpat[k] == TRUE) + sitelkl += fracinv*Freqtpm[(int) Seqpat[0][k]]; + + /* total log-likelihood */ + aslkl[k] = log(sitelkl); + + } + } +} + + +/***************************** internal functions *****************************/ + +/* compute negative log-likelihood of distance arc between sequences seqchi/j */ +double pairlkl(double arc) +{ + int k, r, ci, cj; + double loglkl, fv, sitelkl; + + + /* compute tpms */ + for (r = 0; r < numcats; r++) + /* compute tpm for rate category r */ + tprobmtrx(arc*Rates[r], ltprobr[r]); + + loglkl = 0.0; + fv = 1.0-fracinv; + + if (numcats == 1) { + + for (k = 0; k < Numptrn; k++) { + + /* compute likelihood for site k */ + ci = seqchi[k]; + cj = seqchj[k]; + if (ci != tpmradix && cj != tpmradix) + sitelkl = ltprobr[0][ci][cj]*fv; + else + sitelkl = fv; + if (ci == cj && ci != tpmradix) + sitelkl += fracinv*Freqtpm[ci]; + + /* total log-likelihood */ + loglkl += log(sitelkl)*Weight[k]; + + } + + } else { + + for (k = 0; k < Numptrn; k++) { + + /* this general routine works always but it's better + to run it only when it's really necessary */ + + /* compute likelihood for site k */ + ci = seqchi[k]; + cj = seqchj[k]; + if (ci != tpmradix && cj != tpmradix) { + sitelkl = 0.0; + for (r = 0; r < numcats; r++) + sitelkl += ltprobr[r][ci][cj]; + sitelkl = fv*sitelkl/(double) numcats; + } else + sitelkl = fv; + if (ci == cj && ci != tpmradix) + sitelkl += fracinv*Freqtpm[ci]; + + /* total log-likelihood */ + loglkl += log(sitelkl)*Weight[k]; + + } + + } + + /* return negative log-likelihood as we use a minimizing procedure */ + return -loglkl; +} + + +/***************************** exported functions *****************************/ + + + +/******************************************************************************/ + +/* maximum likelihood distance between sequence i and j */ +/* CZ changed 05/16/01 */ +double mldistance( int i ) { + double dist, fx, f2x; + + /* use old distance as start value */ + dist = Distanmat[ i ]; + + if ( dist == 0.0 ) { + return 0.0; + } + + seqchi = Seqpat[ Maxspc - 1 ]; + seqchj = Seqpat[ i ]; + + if (dist <= MINARC) dist = MINARC+1.0; + if (dist >= MAXARC) dist = MAXARC-1.0; + + dist = onedimenmin(MINARC, dist, MAXARC, pairlkl, EPSILON, &fx, &f2x); + + return dist; +} + + + +/* initialize distance matrix */ +/* CZ changed 05/16/01 */ +void initdistan() { + int i, k, diff, x, y; + double obs, temp; + + for (i = 0; i < Maxspc - 1 ; i++) { + + seqchi = Seqpat[i]; + seqchj = Seqpat[Maxspc - 1]; + + /* count observed differences */ + diff = 0; + for (k = 0; k < Numptrn; k++) { + x = seqchi[k]; + y = seqchj[k]; + if (x != y && + x != tpmradix && + y != tpmradix) + diff += Weight[k]; + } + if (diff == 0) + Distanmat[i] = 0.0; + else { + /* use generalized JC correction to get first estimate + (for the SH model the observed distance is used) */ + /* observed distance */ + obs = (double) diff / (double) Maxsite; + temp = 1.0 - (double) obs*tpmradix/(tpmradix-1.0); + if (temp > 0.0 && !(data_optn == 0 && SH_optn)) + /* use JC corrected distance */ + Distanmat[i] = -100.0*(tpmradix-1.0)/tpmradix * log(temp); + else + /* use observed distance */ + Distanmat[i] = obs * 100.0; + if (Distanmat[i] < MINARC) Distanmat[i] = MINARC; + if (Distanmat[i] > MAXARC) Distanmat[i] = MAXARC; + } + } + +} + + + + +/* compute distance matrix */ +/* CZ changed 05/16/01 */ +void computedistan() { + int i; + + for ( i = 0; i < Maxspc - 1; i++ ) { + Distanmat[ i ] = mldistance( i ); + } +} + + +/******************************************************************************/ + + + + + +/******************************************************************************/ +/* computation of maximum likelihood edge lengths for a given tree */ +/******************************************************************************/ + + +/***************************** internal functions *****************************/ + + +/* multiply partial likelihoods */ +void productpartials(Node *op) +{ + Node *cp; + int i, j, r; + dcube opc, cpc; + + cp = op; + opc = op->partials; + while (cp->isop->isop != op) { + cp = cp->isop; + cpc = cp->partials; + for (r = 0; r < numcats; r++) + for (i = 0; i < Numptrn; i++) + for (j = 0; j < tpmradix; j++) + opc[r][i][j] *= cpc[r][i][j]; + } +} + + +/* compute internal partial likelihoods */ +void partialsinternal(Node *op) +{ + int i, j, k, r; + double sum; + dcube oprob, cprob; + + if (clockmode == 1) { /* clocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx((op->lengthc)*Rates[r], ltprobr[r]); + } + } else { /* non-clocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx((op->length)*Rates[r], ltprobr[r]); + } + } + + oprob = op->partials; + cprob = op->kinp->isop->partials; + for (r = 0; r < numcats; r++) { + for (k = 0; k < Numptrn; k++) { + for (i = 0; i < tpmradix; i++) { + sum = 0.0; + for (j = 0; j < tpmradix; j++) + sum += ltprobr[r][i][j] * cprob[r][k][j]; + oprob[r][k][i] = sum; + } + } + } +} + + +/* compute external partial likelihoods */ +void partialsexternal(Node *op) +{ + int i, j, k, r; + dcube oprob; + cvector dseqi; + + if (clockmode == 1) { /* clocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx((op->lengthc)*Rates[r], ltprobr[r]); + } + } else { /* nonclocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx((op->length)*Rates[r], ltprobr[r]); + } + } + + oprob = op->partials; + dseqi = op->kinp->eprob; + for (r = 0; r < numcats; r++) { + for (k = 0; k < Numptrn; k++) { + if ((j = dseqi[k]) == tpmradix) { + for (i = 0; i < tpmradix; i++) + oprob[r][k][i] = 1.0; + } else { + for (i = 0; i < tpmradix; i++) + oprob[r][k][i] = ltprobr[r][i][j]; + } + } + } +} + + +/* compute all partial likelihoods */ +void initpartials(Tree *tr) +{ + Node *cp, *rp; + + cp = rp = tr->rootp; + do { + cp = cp->isop->kinp; + if (cp->isop == NULL) { /* external node */ + cp = cp->kinp; /* not descen */ + partialsexternal(cp); + } else { /* internal node */ + if (!cp->descen) { + productpartials(cp->kinp->isop); + partialsinternal(cp); + } + } + } while (cp != rp); +} + + +/* compute log-likelihood given internal branch with length arc + between partials partiali and partials partialj */ +double intlkl(double arc) +{ + double sumlk, slk; + int r, s, i, j; + dmatrix cdl; + + cdl = Ctree->condlkl; + for (r = 0; r < numcats; r++) { + tprobmtrx(arc*Rates[r], ltprobr[r]); + } + for (r = 0; r < numcats; r++) { + for (s = 0; s < Numptrn; s++) { + sumlk = 0.0; + for (i = 0; i < tpmradix; i++) { + slk = 0.0; + for (j = 0; j < tpmradix; j++) + slk += partialj[r][s][j] * ltprobr[r][i][j]; + sumlk += Freqtpm[i] * partiali[r][s][i] * slk; + } + cdl[r][s] = sumlk; + } + } + + /* compute total log-likelihood for current tree */ + Ctree->lklhd = comptotloglkl(cdl); + + return -(Ctree->lklhd); /* we use a minimizing procedure */ +} + + +/* optimize internal branch */ +void optinternalbranch(Node *op) +{ + double arc, fx, f2x; + + partiali = op->isop->partials; + partialj = op->kinp->isop->partials; + arc = op->length; /* nonclocklike branch lengths */ + if (arc <= MINARC) arc = MINARC+1.0; + if (arc >= MAXARC) arc = MAXARC-1.0; + arc = onedimenmin(MINARC, arc, MAXARC, intlkl, EPSILON, &fx, &f2x); + op->kinp->length = arc; + op->length = arc; + + /* variance of branch length */ + f2x = fabs(f2x); + if (1.0/(MAXARC*MAXARC) < f2x) + op->varlen = 1.0/f2x; + else + op->varlen = MAXARC*MAXARC; +} + + +/* compute log-likelihood given external branch with length arc + between partials partiali and sequence seqchi */ +double extlkl(double arc) +{ + double sumlk; + int r, s, i, j; + dvector opb; + dmatrix cdl; + + cdl = Ctree->condlkl; + for (r = 0; r < numcats; r++) { + tprobmtrx(arc*Rates[r], ltprobr[r]); + } + for (r = 0; r < numcats; r++) { + for (s = 0; s < Numptrn; s++) { + opb = partiali[r][s]; + sumlk = 0.0; + if ((j = seqchi[s]) != tpmradix) { + for (i = 0; i < tpmradix; i++) + sumlk += (Freqtpm[i] * (opb[i] * ltprobr[r][i][j])); + } else { + for (i = 0; i < tpmradix; i++) + sumlk += Freqtpm[i] * opb[i]; + } + cdl[r][s] = sumlk; + } + } + + /* compute total log-likelihood for current tree */ + Ctree->lklhd = comptotloglkl(cdl); + + return -(Ctree->lklhd); /* we use a minimizing procedure */ +} + +/* optimize external branch */ +void optexternalbranch(Node *op) +{ + double arc, fx, f2x; + + partiali = op->isop->partials; + seqchi = op->kinp->eprob; + arc = op->length; /* nonclocklike branch lengths */ + if (arc <= MINARC) arc = MINARC+1.0; + if (arc >= MAXARC) arc = MAXARC-1.0; + arc = onedimenmin(MINARC, arc, MAXARC, extlkl, EPSILON, &fx, &f2x); + op->kinp->length = arc; + op->length = arc; + + /* variance of branch length */ + f2x = fabs(f2x); + if (1.0/(MAXARC*MAXARC) < f2x) + op->varlen = 1.0/f2x; + else + op->varlen = MAXARC*MAXARC; +} + + +/* finish likelihoods for each rate and site */ +void finishlkl(Node *op) +{ + int r, k, i, j; + double arc, sumlk, slk; + dmatrix cdl; + + partiali = op->isop->partials; + partialj = op->kinp->isop->partials; + cdl = Ctree->condlkl; + arc = op->length; /* nonclocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx(arc*Rates[r], ltprobr[r]); + } + for (r = 0; r < numcats; r++) { + for (k = 0; k < Numptrn; k++) { + sumlk = 0.0; + for (i = 0; i < tpmradix; i++) { + slk = 0.0; + for (j = 0; j < tpmradix; j++) + slk += partialj[r][k][j] * ltprobr[r][i][j]; + sumlk += Freqtpm[i] * partiali[r][k][i] * slk; + } + cdl[r][k] = sumlk; + } + } +} + + +/***************************** exported functions *****************************/ + + +/* optimize branch lengths to get maximum likelihood (nonclocklike branchs) */ +double optlkl(Tree *tr) +{ + Node *cp, *rp; + int nconv; + double lendiff; + + clockmode = 0; /* nonclocklike branch lengths */ + nconv = 0; + Converg = FALSE; + initpartials(tr); + for (Numit = 1; (Numit <= MAXIT) && (!Converg); Numit++) { + + cp = rp = tr->rootp; + do { + cp = cp->isop->kinp; + productpartials(cp->kinp->isop); + if (cp->isop == NULL) { /* external node */ + cp = cp->kinp; /* not descen */ + + lendiff = cp->length; + optexternalbranch(cp); + lendiff = fabs(lendiff - cp->length); + if (lendiff < EPSILON) nconv++; + else nconv = 0; + + partialsexternal(cp); + } else { /* internal node */ + if (cp->descen) { + partialsinternal(cp); + } else { + + lendiff = cp->length; + optinternalbranch(cp); + lendiff = fabs(lendiff - cp->length); + if (lendiff < EPSILON) nconv++; + else nconv = 0; + + /* eventually compute likelihoods for each site */ + if ((cp->number == Numibrnch-1 && lendiff < EPSILON) || + Numit == MAXIT-1) finishlkl(cp); + + partialsinternal(cp); + } + } + if (nconv >= Numbrnch) { /* convergence */ + Converg = TRUE; + cp = rp; /* get out of here */ + } + } while (cp != rp); + } + + /* compute total log-likelihood for current tree */ + return comptotloglkl(tr->condlkl); +} + + +/* compute likelihood of tree for given branch lengths */ +double treelkl(Tree *tr) +{ + int i, k, r; + Node *cp; + dmatrix cdl; + dcube prob1, prob2; + double sumlk; + + /* compute for each site and rate log-likelihoods */ + initpartials(tr); + cp = tr->rootp; + productpartials(cp->isop); + prob1 = cp->partials; + prob2 = cp->isop->partials; + cdl = tr->condlkl; + for (r = 0; r < numcats; r++) { + for (k = 0; k < Numptrn; k++) { + sumlk = 0.0; + for (i = 0; i < tpmradix; i++) + sumlk += Freqtpm[i] * (prob1[r][k][i] * prob2[r][k][i]); + cdl[r][k] = sumlk; + } + } + + /* return total log-likelihood for current tree */ + return comptotloglkl(cdl); +} + + +/******************************************************************************/ +/* least-squares estimate of branch lengths */ +/******************************************************************************/ + + +/***************************** internal functions *****************************/ + + +void luequation(dmatrix amat, dvector yvec, int size) +{ + double eps = 1.0e-20; /* ! */ + int i, j, k, l, maxi=0, idx; + double sum, tmp, maxb, aw; + dvector wk; + ivector index; + + + wk = new_dvector(size); + index = new_ivector(size); + aw = 1.0; + for (i = 0; i < size; i++) { + maxb = 0.0; + for (j = 0; j < size; j++) { + if (fabs(amat[i][j]) > maxb) + maxb = fabs(amat[i][j]); + } + if (maxb == 0.0) { + /* Singular matrix */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR D TO DEVELOPERS\n\n\n"); + exit(1); + } + wk[i] = 1.0 / maxb; + } + for (j = 0; j < size; j++) { + for (i = 0; i < j; i++) { + sum = amat[i][j]; + for (k = 0; k < i; k++) + sum -= amat[i][k] * amat[k][j]; + amat[i][j] = sum; + } + maxb = 0.0; + for (i = j; i < size; i++) { + sum = amat[i][j]; + for (k = 0; k < j; k++) + sum -= amat[i][k] * amat[k][j]; + amat[i][j] = sum; + tmp = wk[i] * fabs(sum); + if (tmp >= maxb) { + maxb = tmp; + maxi = i; + } + } + if (j != maxi) { + for (k = 0; k < size; k++) { + tmp = amat[maxi][k]; + amat[maxi][k] = amat[j][k]; + amat[j][k] = tmp; + } + aw = -aw; + wk[maxi] = wk[j]; + } + index[j] = maxi; + if (amat[j][j] == 0.0) + amat[j][j] = eps; + if (j != size - 1) { + tmp = 1.0 / amat[j][j]; + for (i = j + 1; i < size; i++) + amat[i][j] *= tmp; + } + } + l = -1; + for (i = 0; i < size; i++) { + idx = index[i]; + sum = yvec[idx]; + yvec[idx] = yvec[i]; + if (l != -1) { + for (j = l; j < i; j++) + sum -= amat[i][j] * yvec[j]; + } else if (sum != 0.0) + l = i; + yvec[i] = sum; + } + for (i = size - 1; i >= 0; i--) { + sum = yvec[i]; + for (j = i + 1; j < size; j++) + sum -= amat[i][j] * yvec[j]; + yvec[i] = sum / amat[i][i]; + } + free_ivector(index); + free_dvector(wk); +} + + +/* least square estimation of branch lengths + used for the approximate ML and as starting point + in the calculation of the exact value of the ML */ +void lslength(Tree *tr, dvector distanvec, int numspc, int numibrnch, dvector Brnlength) +{ + int i, i1, j, j1, j2, k, numbrnch, numpair; + double sum, leng, alllen, rss; + ivector pths; + dmatrix atmt, atamt; + Node **ebp, **ibp; + + numbrnch = numspc + numibrnch; + numpair = (numspc * (numspc - 1)) / 2; + atmt = new_dmatrix(numbrnch, numpair); + atamt = new_dmatrix(numbrnch, numbrnch); + ebp = tr->ebrnchp; + ibp = tr->ibrnchp; + for (i = 0; i < numspc; i++) { + for (j1 = 1, j = 0; j1 < numspc; j1++) { + if (j1 == i) { + for (j2 = 0; j2 < j1; j2++, j++) { + atmt[i][j] = 1.0; + } + } else { + for (j2 = 0; j2 < j1; j2++, j++) { + if (j2 == i) + atmt[i][j] = 1.0; + else + atmt[i][j] = 0.0; + } + } + } + } + for (i1 = 0, i = numspc; i1 < numibrnch; i1++, i++) { + pths = ibp[i1]->paths; + for (j1 = 1, j = 0; j1 < numspc; j1++) { + for (j2 = 0; j2 < j1; j2++, j++) { + if (pths[j1] != pths[j2]) + atmt[i][j] = 1.0; + else + atmt[i][j] = 0.0; + } + } + } + for (i = 0; i < numbrnch; i++) { + for (j = 0; j <= i; j++) { + for (k = 0, sum = 0.0; k < numpair; k++) + sum += atmt[i][k] * atmt[j][k]; + atamt[i][j] = sum; + atamt[j][i] = sum; + } + } + for (i = 0; i < numbrnch; i++) { + for (k = 0, sum = 0.0; k < numpair; k++) + sum += atmt[i][k] * distanvec[k]; + Brnlength[i] = sum; + } + luequation(atamt, Brnlength, numbrnch); + for (i = 0, rss = 0.0; i < numpair; i++) { + sum = distanvec[i]; + for (j = 0; j < numbrnch; j++) { + if (atmt[j][i] == 1.0 && Brnlength[j] > 0.0) + sum -= Brnlength[j]; + } + rss += sum * sum; + } + tr->rssleast = sqrt(rss); + alllen = 0.0; + for (i = 0; i < numspc; i++) { + leng = Brnlength[i]; + alllen += leng; + if (leng < MINARC) leng = MINARC; + if (leng > MAXARC) leng = MAXARC; + if (clockmode) { /* clock */ + ebp[i]->lengthc = leng; + ebp[i]->kinp->lengthc = leng; + } else { /* no clock */ + ebp[i]->length = leng; + ebp[i]->kinp->length = leng; + } + Brnlength[i] = leng; + } + for (i = 0, j = numspc; i < numibrnch; i++, j++) { + leng = Brnlength[j]; + alllen += leng; + if (leng < MINARC) leng = MINARC; + if (leng > MAXARC) leng = MAXARC; + if (clockmode) { /* clock */ + ibp[i]->lengthc = leng; + ibp[i]->kinp->lengthc = leng; + } else { /* no clock */ + ibp[i]->length = leng; + ibp[i]->kinp->length = leng; + } + Brnlength[j] = leng; + } + free_dmatrix(atmt); + free_dmatrix(atamt); +} diff --git a/forester/archive/RIO/others/puzzle_dqo/src/ml2.c b/forester/archive/RIO/others/puzzle_dqo/src/ml2.c new file mode 100644 index 0000000..7e1b3db --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/ml2.c @@ -0,0 +1,1637 @@ +/* + * ml2.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#define EXTERN extern + +/* prototypes */ +#include +#include +#include +#include +#include +#include "util.h" +#include "ml.h" + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, +#endif + +/* prototypes for two functions of puzzle2.c */ +void fputid10(FILE *, int); +int fputid(FILE *, int); + + +/******************************************************************************/ +/* user tree input */ +/******************************************************************************/ + +/* read user tree, drop all blanks, tabs, and newlines. + Drop edgelengths (after :) but keep internal + labels. Check whether all pairs of brackets match. */ +void getusertree(FILE *itfp, cvector tr, int maxlen) +{ + int n, brac, ci; + int comment = 0; + + /* look for opening bracket */ + n = 0; + brac = 0; + do { + ci = fgetc(itfp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing start bracket in tree)\n\n\n"); + exit(1); + } + if (ci == '[') comment = 1; + if ((ci == ']') && comment) { + comment = 0; + ci = fgetc(itfp); + } + } while (comment || ((char) ci != '(')); + tr[n] = (char) ci; + brac++; + + do { + /* get next character (skip blanks, newlines, and tabs) */ + do { + ci = fgetc(itfp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no more characters in tree)\n\n\n"); + exit(1); + } + if (ci == '[') comment = 1; + if ((ci == ']') && comment) { + comment = 0; + ci = fgetc(itfp); + } + } while (comment || (char) ci == ' ' || (char) ci == '\n' || (char) ci == '\t'); + + if ((char) ci == ':') { /* skip characters until a ,) appears */ + do { + ci = fgetc(itfp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing ';' or ',' in tree)\n\n\n"); + exit(1); + } + if (ci == '[') comment = 1; + if ((ci == ']') && comment) { + comment = 0; + ci = fgetc(itfp); + } + } while (comment || ((char) ci != ',' && (char) ci != ')') ); + } + + if ((char) ci == '(') { + brac++; + } + if ((char) ci == ')') { + brac--; + } + + n++; + tr[n] = (char) ci; + + } while (((char) ci != ';') && (n != maxlen-2)); + + if (n == maxlen-2) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (tree description too long)\n\n\n"); + exit(1); + } + + if (brac != 0) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (brackets don't match in tree)\n\n\n"); + exit(1); + } + + n++; + tr[n] = '\0'; +} + + +Node *internalnode(Tree *tr, char **chpp, int *ninode) +{ + Node *xp, *np, *rp; + int i, j, dvg, ff, stop, numc; + char ident[100], idcomp[27]; /*CZ*/ + char *idp; + + (*chpp)++; + if (**chpp == '(') { /* process subgroup */ + + xp = internalnode(tr, chpp, ninode); + xp->isop = xp; + dvg = 1; + while (**chpp != ')') { + if (**chpp == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + dvg++; + /* insert edges around node */ + np = internalnode(tr, chpp, ninode); + np->isop = xp->isop; + xp->isop = np; + xp = np; + } + /* closing bracket reached */ + + (*chpp)++; + if (dvg < 2) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (only one OTU inside pair of brackets)\n\n\n"); + exit(1); + } + + if ((*ninode) >= Maxspc-3) { /* all internal nodes already used */ + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no unrooted tree)\n\n\n"); + exit(1); + } + + rp = tr->ibrnchp[*ninode]; + rp->isop = xp->isop; + xp->isop = rp; + + for (j = 0; j < Numspc; j++) + rp->paths[j] = 0; + xp = rp->isop; + while (xp != rp) { + for (j = 0; j < Numspc; j++) { + if (xp->paths[j] == 1) + rp->paths[j] = 1; + } + xp = xp->isop; + } + (*ninode)++; + + if ((**chpp) == ',' || (**chpp) == ')') return rp->kinp; + if ((**chpp) == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + + /* read internal label into rp->label (max. 20 characters) */ + rp->label = new_cvector(21); + (rp->label)[0] = **chpp; + (rp->label)[1] = '\0'; + for (numc = 1; numc < 20; numc++) { + (*chpp)++; + if ((**chpp) == ',' || (**chpp) == ')') return rp->kinp; + if ((**chpp) == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + (rp->label)[numc] = **chpp; + (rp->label)[numc+1] = '\0'; + } + do { /* skip the rest of the internal label */ + (*chpp)++; + if ((**chpp) == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + } while (((**chpp) != ',' && (**chpp) != ')')); + + return rp->kinp; + + } else { /* process species names */ + /* read species name */ + for (idp = ident; **chpp != ',' && + **chpp != ')' && **chpp != '\0'; (*chpp)++) { + *idp++ = **chpp; + } + *idp = '\0'; + /* look for internal number */ + idcomp[26] = '\0'; /*CZ*/ + + for (i = 0; i < Maxspc; i++) { + ff = 0; + stop = FALSE; + do { + idcomp[ff] = Identif[i][ff]; + ff++; + if (idcomp[ff-1] == ' ') stop = TRUE; + } while (!stop && (ff != 26)); /*CZ*/ + if (stop) idcomp[ff-1] = '\0'; + + if (!strcmp(ident, idcomp)) { + if (usedtaxa[i]) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (multiple occurence of sequence '"); + FPRINTF(STDOUTFILE "%s' in tree)\n\n\n", ident); + exit(1); + } + usedtaxa[i] = TRUE; + return tr->ebrnchp[i]->kinp; + } + } + + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unknown sequence '%s' in tree)\n\n\n", ident); + exit(1); + } + return NULL; /* never returned but without some compilers complain */ +} + +/* make tree structure, the tree description may contain internal + labels but no edge lengths */ +void constructtree(Tree *tr, cvector strtree) +{ + char *chp; + int ninode, i; + int dvg, numc; + Node *xp, *np; + + ninode = 0; + chp = strtree; + usedtaxa = new_ivector(Maxspc); + for (i = 0; i < Maxspc; i++) usedtaxa[i] = FALSE; + + xp = internalnode(tr, &chp, &ninode); + xp->isop = xp; + dvg = 1; + while (*chp != ')') { /* look for closing bracket */ + if (*chp == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + dvg++; + /* insert edges around node */ + np = internalnode(tr, &chp, &ninode); + np->isop = xp->isop; + xp->isop = np; + xp = np; + } + + for (i = 0; i < Maxspc; i++) + if (usedtaxa[i] == FALSE) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (sequences missing in tree)\n\n\n"); + exit(1); + } + + /* closing bracket reached */ + if (dvg < 3) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no unrooted tree)\n\n\n"); + exit(1); + } + tr->rootp = xp; + Numibrnch = ninode; + Numbrnch = Numspc + ninode; + + chp++; + if (*chp == ';' || *chp == '\0') { + free_ivector(usedtaxa); + return; + } + + /* copy last internal label (max. 20 characters) */ + xp->label = new_cvector(21); + (xp->label)[0] = *chp; + (xp->label)[1] = '\0'; + for (numc = 1; numc < 20; numc++) { + chp++; + if (*chp == ';' || *chp == '\0') { + free_ivector(usedtaxa); + return; + } else { + (xp->label)[numc] = *chp; + (xp->label)[numc+1] = '\0'; + } + } + free_ivector(usedtaxa); + return; +} + + +/* remove possible basal bifurcation */ +void removebasalbif(cvector strtree) +{ + int n, c, brak, cutflag, h; + + /* check how many OTUs on basal level */ + n = 0; + c = 0; + brak = 0; + do { + if (strtree[n] == '(') brak++; + if (strtree[n] == ')') brak--; + + if (strtree[n] == ',' && brak == 1) c++; /* number of commas in outer bracket */ + + n++; + } while (strtree[n] != '\0'); + + /* if only 1 OTU inside outer bracket stop now */ + if (c == 0) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (Only 1 OTU inside outer bracket in tree)\n\n\n"); + exit(1); + } + + /* if only 2 OTUs inside outer bracket delete second pair of + brackets from the right to remove basal bifurcation */ + + if (c == 1) { + + n = 0; + brak = 0; + cutflag = 0; /* not yet cutted */ + h = 0; + do { + if (strtree[n] == '(') brak++; + if (strtree[n] == ')') brak--; + + if (brak == 2 && cutflag == 0) cutflag = 1; /* cutting */ + if (brak == 1 && cutflag == 1) { + cutflag = 2; /* cutted */ + /* leave out internal label */ + do { + h++; + } while (strtree[n+h] != ')' && strtree[n+h] != ','); + + } + + if (cutflag == 1) strtree[n] = strtree[n+1]; + if (cutflag == 2) strtree[n-1] = strtree[n+h]; + + n++; + } while (strtree[n] != '\0'); + } +} + + +void makeusertree(FILE *itfp) +{ + cvector strtree; + + strtree = new_cvector(23*Maxspc); /* for treefile */ + getusertree(itfp, strtree, 23*Maxspc); + removebasalbif(strtree); + constructtree(Ctree, strtree); + free_cvector(strtree); +} + + +/******************************************************************************/ +/* memory organisation for maximum likelihood tree */ +/******************************************************************************/ + +/* initialise new tree */ +Tree *new_tree(int maxspc, int numptrn, cmatrix seqconint) +{ + int n, i, maxibrnch; + Tree *tr; + Node *dp, *up; + + maxibrnch = maxspc - 3; + heights = (Node **) malloc((unsigned)(maxspc-2) * sizeof(Node *)); + if (heights == NULL) maerror("heights in new_tree"); + tr = (Tree *) malloc(sizeof(Tree)); + if (tr == NULL) maerror("tr in new_tree"); + tr->ebrnchp = (Node **) malloc((unsigned)maxspc * sizeof(Node *)); + if (tr->ebrnchp == NULL) maerror("ebrnchp in new_tree"); + tr->ibrnchp = (Node **) malloc((unsigned)maxibrnch * sizeof(Node *)); + if (tr->ibrnchp == NULL) maerror("ibrnchp in new_tree"); + tr->condlkl = new_dmatrix(numcats, numptrn); + for (n = 0; n < maxspc; n++) { + dp = (Node *) malloc(sizeof(Node)); + if (dp == NULL) maerror("dp in new_tree"); + up = (Node *) malloc(sizeof(Node)); + if (up == NULL) maerror("up in new_tree"); + dp->isop = NULL; + up->isop = NULL; + dp->kinp = up; + up->kinp = dp; + dp->descen = TRUE; + up->descen = FALSE; + dp->number = n; + up->number = n; + dp->length = 0.0; + up->length = 0.0; + dp->lengthc = 0.0; + up->lengthc = 0.0; + dp->varlen = 0.0; + up->varlen = 0.0; + dp->paths = new_ivector(maxspc); + up->paths = dp->paths; + for (i = 0; i < maxspc; i++) dp->paths[i] = 0; + dp->paths[n] = 1; + dp->eprob = seqconint[n]; + up->eprob = NULL; + dp->partials = NULL; + up->partials = new_dcube(numcats, numptrn, tpmradix); + tr->ebrnchp[n] = dp; + up->label = NULL; + dp->label = NULL; + } + for (n = 0; n < maxibrnch; n++) { + dp = (Node *) malloc(sizeof(Node)); + if (dp == NULL) maerror("dp in new_tree"); + up = (Node *) malloc(sizeof(Node)); + if (up == NULL) maerror("up in new_tree"); + dp->isop = NULL; + up->isop = NULL; + dp->kinp = up; + up->kinp = dp; + dp->descen = TRUE; + up->descen = FALSE; + dp->number = n; + up->number = n; + dp->length = 0.0; + up->length = 0.0; + dp->lengthc = 0.0; + up->lengthc = 0.0; + dp->varlen = 0.0; + up->varlen = 0.0; + dp->paths = new_ivector(maxspc); + up->paths = dp->paths; + for (i = 0; i < maxspc; i++) dp->paths[i] = 0; + dp->eprob = NULL; + up->eprob = NULL; + dp->partials = new_dcube(numcats, numptrn, tpmradix); + up->partials = new_dcube(numcats, numptrn, tpmradix); + tr->ibrnchp[n] = dp; + up->label = NULL; + dp->label = NULL; + } + tr->rootp = NULL; + + /* + * reserve memory for lengths of the tree branches + * and for the distance matrix as a vector + * (needed for LS estimation of tree branch lengths) + */ + + Brnlength = new_dvector(2 * maxspc - 3); + Distanvec = new_dvector((maxspc * (maxspc - 1)) / 2); + + return tr; +} + + +/* initialise quartet tree */ +Tree *new_quartet(int numptrn, cmatrix seqconint) +{ + int n, i; + Tree *tr; + Node *dp, *up; + + heights = (Node **) malloc((unsigned)2 * sizeof(Node *)); + if (heights == NULL) maerror("heights in new_quartet"); + /* reserve memory for tree */ + tr = (Tree *) malloc(sizeof(Tree)); + if (tr == NULL) maerror("tr in new_quartet"); + tr->ebrnchp = (Node **) malloc((unsigned) 4 * sizeof(Node *)); + if (tr->ebrnchp == NULL) maerror("ebrnchp in new_quartet"); + tr->ibrnchp = (Node **) malloc((unsigned) sizeof(Node *)); + if (tr->ibrnchp == NULL) maerror("ibrnchp in new_quartet"); + tr->condlkl = new_dmatrix(numcats, numptrn); + /* reserve memory for nodes */ + for (n = 0; n < 4; n++) { + dp = (Node *) malloc(sizeof(Node)); + if (dp == NULL) maerror("dp in new_quartet"); + up = (Node *) malloc(sizeof(Node)); + if (up == NULL) maerror("dp in new_quartet"); + dp->isop = NULL; + dp->kinp = up; + up->kinp = dp; + dp->descen = TRUE; + up->descen = FALSE; + dp->number = n; + up->number = n; + dp->length = 0.0; + up->length = 0.0; + dp->lengthc = 0.0; + up->lengthc = 0.0; + dp->varlen = 0.0; + up->varlen = 0.0; + dp->paths = new_ivector(4); + up->paths = dp->paths; + for (i = 0; i < 4; i++) dp->paths[i] = 0; + dp->paths[n] = 1; + dp->eprob = seqconint[n]; /* make quartet (0,1)-(2,3) as default */ + up->eprob = NULL; + dp->partials = NULL; + up->partials = new_dcube(numcats, numptrn, tpmradix); + tr->ebrnchp[n] = dp; + } + + /* reserve memory for internal branch */ + dp = (Node *) malloc(sizeof(Node)); + if (dp == NULL) maerror("dp in new_quartet"); + up = (Node *) malloc(sizeof(Node)); + if (up == NULL) maerror("dp in new_quartet"); + dp->isop = tr->ebrnchp[3]->kinp; /* connect internal branch */ + up->isop = tr->ebrnchp[0]->kinp; + dp->kinp = up; + up->kinp = dp; + dp->descen = TRUE; + up->descen = FALSE; + dp->number = 0; + up->number = 0; + dp->length = 0.0; + up->length = 0.0; + dp->lengthc = 0.0; + up->lengthc = 0.0; + dp->varlen = 0.0; + up->varlen = 0.0; + dp->paths = new_ivector(4); + up->paths = dp->paths; + up->paths[0] = 0; + up->paths[1] = 0; + up->paths[2] = 1; + up->paths[3] = 1; + dp->eprob = NULL; + up->eprob = NULL; + dp->partials = new_dcube(numcats, numptrn, tpmradix); + up->partials = new_dcube(numcats, numptrn, tpmradix); + tr->ibrnchp[0] = dp; + + /* place root */ + tr->rootp = up; + + /* connect external branches */ + tr->ebrnchp[0]->kinp->isop = tr->ebrnchp[1]->kinp; + tr->ebrnchp[1]->kinp->isop = tr->rootp; + tr->ebrnchp[3]->kinp->isop = tr->ebrnchp[2]->kinp; + tr->ebrnchp[2]->kinp->isop = tr->rootp->kinp; + + /* + * reserve memory for lengths of the five branches + * of a quartet and for the six possible distances + * (needed for LS estimation of branch lengths) + */ + Brnlength = new_dvector(NUMQBRNCH); + Distanvec = new_dvector(NUMQSPC*(NUMQSPC-1)/2); + + return tr; +} + + +/* free tree memory */ +void free_tree(Tree *tr, int taxa) +{ + int n; + Node *dp, *up; + + free(heights); + free_dmatrix(tr->condlkl); + for (n = 0; n < taxa; n++) { + dp = tr->ebrnchp[n]; + up = dp->kinp; + free_ivector(dp->paths); + free_dcube(up->partials); + free(dp); + free(up); + } + free(tr->ebrnchp); + for (n = 0; n < (taxa-3); n++) { + dp = tr->ibrnchp[n]; + up = dp->kinp; + free_dcube(dp->partials); + free_dcube(up->partials); + free_ivector(dp->paths); + free(dp); + free(up); + } + free(tr->ibrnchp); + free(tr); + free_dvector(Brnlength); /* branch lengths (for LS estimation) */ + free_dvector(Distanvec); /* distances (for LS estimation) */ +} + + +/* make (a,b)-(c,d) quartet + + a ---+ +--- c + +-----+ + b ---+ +--- d + + species numbers range from 0 to Maxspc - 1 */ + +void make_quartet(int a, int b, int c, int d) +{ + /* place sequences */ + /*Ctree->ebrnchp[0]->eprob = Seqpat[a]; + Ctree->ebrnchp[1]->eprob = Seqpat[b]; + Ctree->ebrnchp[2]->eprob = Seqpat[c]; + Ctree->ebrnchp[3]->eprob = Seqpat[d]; + CZ */ + /* make distance vector */ + /*Distanvec[0] = Distanmat[b][a]; + Distanvec[1] = Distanmat[c][a]; + Distanvec[2] = Distanmat[c][b]; + Distanvec[3] = Distanmat[d][a]; + Distanvec[4] = Distanmat[d][b]; + Distanvec[5] = Distanmat[d][c]; + CZ */ +} + +/* write distance matrix as vector */ +void changedistan(dmatrix distanmat, dvector distanvec, int numspc) +{ + int i, j, k; + + for (k = 0, i = 1; i < numspc; i++) { + for (j = 0; j < i; j++, k++) + distanvec[k] = distanmat[i][j]; + } +} + + +/******************************************************************************/ +/* computation of maximum likelihood tree */ +/******************************************************************************/ + + +/* compute the likelihood for (a,b)-(c,d) quartet */ +double quartet_lklhd(int a, int b, int c, int d) +{ + /* reserve memory for quartet if necessary */ + if (mlmode != 1) { /* no quartet tree */ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + Ctree = new_quartet(Numptrn, Seqpat); + Numbrnch = NUMQBRNCH; + Numibrnch = NUMQIBRNCH; + Numspc = NUMQSPC; + mlmode = 1; + } + + /* make (a,b)-(c,d) quartet */ + make_quartet(a,b,c,d); + + clockmode = 0; /* nonclocklike branch lengths */ + + /* least square estimate for branch length */ + lslength(Ctree, Distanvec, Numspc, Numibrnch, Brnlength); + + /* compute likelihood */ + Ctree->lklhd = optlkl(Ctree); + + return Ctree->lklhd; +} + + +/* compute the approximate likelihood for (a,b)-(c,d) quartet */ +double quartet_alklhd(int a, int b, int c, int d) +{ + /* reserve memory for quartet if necessary */ + if (mlmode != 1) { /* no quartet tree */ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + Ctree = new_quartet(Numptrn, Seqpat); + Numbrnch = NUMQBRNCH; + Numibrnch = NUMQIBRNCH; + Numspc = NUMQSPC; + mlmode = 1; + } + + /* make (a,b)-(c,d) quartet */ + make_quartet(a,b,c,d); + + clockmode = 0; /* nonclocklike branch lengths */ + + /* least square estimate for branch length */ + lslength(Ctree, Distanvec, Numspc, Numibrnch, Brnlength); + + /* compute likelihood */ + Ctree->lklhd = treelkl(Ctree); + + return Ctree->lklhd; +} + + +/* read usertree from file to memory */ +void readusertree(FILE *ifp) +{ + /* reserve memory for tree if necessary */ + if (mlmode != 2) { /* no tree */ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + Ctree = new_tree(Maxspc, Numptrn, Seqpat); + Numbrnch = 2*Maxspc-3; + Numibrnch = Maxspc-3; + Numspc = Maxspc; + mlmode = 2; + } + + /* read tree */ + makeusertree(ifp); +} + + +/* compute the likelihood of a usertree */ +double usertree_lklhd() +{ + + /* CZ 05/16/01 */ + + return 6.66; +} + + +/* compute the approximate likelihood of a usertree */ +double usertree_alklhd() +{ + /* CZ 05/16/01 */ + + return 6.66; +} + + +/* preparation for ML analysis */ +void mlstart() +{ + /* number of states and code length */ + tpmradix = gettpmradix(); + + /* declare variables */ + Eval = new_dvector(tpmradix); + Evec = new_dmatrix(tpmradix,tpmradix); + Ievc = new_dmatrix(tpmradix,tpmradix); + iexp = new_dmatrix(tpmradix,tpmradix); + Alias = new_ivector(Maxsite); + + /* process sequence information */ + evaluateseqs(); + bestrate = new_ivector(Numptrn); + + /* compute transition probability matrix */ + tranprobmat(); + + /* non-zero rate categories */ + Rates = new_dvector(numcats); + updaterates(); + ltprobr = new_dcube(numcats, tpmradix,tpmradix); + + /* compute distance matrix */ + Distanmat = new_dvector( Maxspc - 1 ); + initdistan(); + + /* initialize tree pointer for quartet tree */ + /*mlmode = 1; + Ctree = new_quartet(Numptrn, Seqpat); + Numbrnch = NUMQBRNCH; + Numibrnch = NUMQIBRNCH; + Numspc = NUMQSPC; + CZ, */ + /* computing ML distances */ + computedistan(); +} + + +/* recompute ml distances for quartet only */ +void distupdate(int a, int b, int c, int d) +{ + /* update distance matrix */ + /* consider only entries relevant to quartet */ + /* + Distanmat[a][b] = mldistance(a, b); + Distanmat[b][a] = Distanmat[a][b]; + Distanmat[a][c] = mldistance(a, c); + Distanmat[c][a] = Distanmat[a][c]; + Distanmat[a][d] = mldistance(a, d); + Distanmat[d][a] = Distanmat[a][d]; + Distanmat[b][c] = mldistance(b, c); + Distanmat[c][b] = Distanmat[b][c]; + Distanmat[b][d] = mldistance(b, d); + Distanmat[d][b] = Distanmat[b][d]; + Distanmat[c][d] = mldistance(c, d); + Distanmat[d][c] = Distanmat[c][d]; + CZ */ +} + + +/* cleanup after ML analysis */ +void mlfinish() +{ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + free_ivector(bestrate); + free_ivector(Alias); + free_cmatrix(Seqpat); + free_ivector(constpat); + free_ivector(Weight); + free_dvector(Distanmat); /* CZ */ + free_dvector(Eval); + free_dmatrix(Evec); + free_dmatrix(Ievc); + free_dvector(Rates); + free_dcube(ltprobr); + free_dmatrix(iexp); +} + + +/******************************************************************************/ +/* tree output */ +/******************************************************************************/ + + +#define MAXOVER 50 +#define MAXLENG 30 +#define MAXCOLUMN 80 + + +void prbranch(Node *up, int depth, int m, int maxm, + ivector umbrella, ivector column, FILE *outfp) +{ + int i, num, n, maxn, lim; + Node *cp; + char bch; + + if ((int)((clockmode ? up->lengthc : up->length) * Proportion) >= MAXOVER) { + column[depth] = MAXLENG; + bch = '+'; + } else { + column[depth] = (int)((clockmode ? up->lengthc : up->length) * Proportion) + 3; + bch = '-'; + } + + if (up->isop == NULL) { /* external branch */ + num = up->number + 1; /* offset */ + if (m == 1) umbrella[depth - 1] = TRUE; + for (i = 0; i < depth; i++) { + if (umbrella[i]) + fprintf(outfp, "%*c", column[i], ':'); + else + fprintf(outfp, "%*c", column[i], ' '); + } + if (m == maxm) + umbrella[depth - 1] = FALSE; + for (i = 0, lim = column[depth] - 3; i < lim; i++) + fputc(bch, outfp); + fprintf(outfp, "-%d ", num); + + fputid(outfp, up->number); + + + fputc('\n', outfp); + fputc(' ', outfp); + return; + } + + num = up->number + 1 + Numspc; /* offset, internal branch */ + for (cp = up->isop, maxn = 0; cp != up; cp = cp->isop, maxn++) + ; + for (cp = up->isop, n = 1; cp != up; cp = cp->isop, n++) { + prbranch(cp->kinp, depth + 1, n, maxn, umbrella, column, outfp); + if (m == 1 && n == maxn / 2) umbrella[depth - 1] = TRUE; + if (n != maxn) { + for (i = 0; i < depth; i++) { + if (umbrella[i]) + fprintf(outfp, "%*c", column[i], ':'); + else + fprintf(outfp, "%*c", column[i], ' '); + } + if (n == maxn / 2) { /* internal branch */ + for (i = 0, lim = column[depth] - 3; i < lim; i++) + fputc(bch, outfp); + if (num < 10) + fprintf(outfp, "--%d", num); + else if (num < 100) + fprintf(outfp, "-%2d", num); + else + fprintf(outfp, "%3d", num); + } else { + if (umbrella[depth]) + fprintf(outfp, "%*c", column[depth], ':'); + else + fprintf(outfp, "%*c", column[depth], ' '); + } + fputc('\n', outfp); + fputc(' ', outfp); + } + if (m == maxm) umbrella[depth - 1] = FALSE; + } + return; +} + + +void getproportion(double *proportion, dvector distanvec, int numspc) +{ + int i, maxpair; + double maxdis; + + maxpair = (numspc*(numspc-1))/2; + + maxdis = 0.0; + for (i = 0; i < maxpair; i++) { + if (distanvec[i] > maxdis) { + maxdis = distanvec[i]; + } + } + *proportion = (double) MAXCOLUMN / (maxdis * 3.0); + if (*proportion > 1.0) *proportion = 1.0; +} + + +void prtopology(FILE *outfp) +{ + int n, maxn, depth; + ivector umbrella; + ivector column; + Node *cp, *rp; + + getproportion(&Proportion, Distanvec, Numspc); + + umbrella = new_ivector(Numspc); + column = new_ivector(Numspc); + + for (n = 0; n < Numspc; n++) { + umbrella[n] = FALSE; + column[n] = 3; + } + column[0] = 1; + + fputc(' ', outfp); + + /* original code: rp = Ctree->rootp */ + /* but we want to print the first group in the + trichotomy as outgroup at the bottom! */ + rp = Ctree->rootp->isop; + + for (maxn = 1, cp = rp->isop; cp != rp; cp = cp->isop, maxn++) + ; + depth = 1; + n = 0; + + cp = rp; + do { + cp = cp->isop; + n++; + prbranch(cp->kinp, depth, n, maxn, umbrella, column, outfp); + if (cp != rp) fprintf(outfp, "%*c\n ", column[0], ':'); + } while (cp != rp); + + free_ivector(umbrella); + free_ivector(column); +} + + +/* print unrooted tree file with branch lengths */ +void fputphylogeny(FILE *fp) +{ + Node *cp, *rp; + int n; + + cp = rp = Ctree->rootp; + putc('(', fp); + n = 1; + do { + cp = cp->isop->kinp; + if (cp->isop == NULL) { /* external node */ + if (n > 60) { + fprintf(fp, "\n"); + n = 2; + } + n += fputid(fp, cp->number); + fprintf(fp, ":%.5f", ((clockmode ? cp->lengthc : cp->length))*0.01); + n += 7; + cp = cp->kinp; + } else { /* internal node */ + if (cp->descen) { + if (n > 60) { + fprintf(fp, "\n"); + n = 1; + } + putc('(', fp); + n++; + } else { + putc(')', fp); + n++; + if (n > 60) { + fprintf(fp, "\n"); + n = 1; + } + /* internal label */ + if (cp->kinp->label != NULL) { + fprintf(fp, "%s", cp->kinp->label); + n += strlen(cp->kinp->label); + } + fprintf(fp, ":%.5f", ((clockmode ? cp->lengthc : cp->length))*0.01); + n += 7; + } + } + if (!cp->descen && !cp->isop->descen && cp != rp) { + putc(',', fp); /* not last subtree */ + n++; + } + } while (cp != rp); + fprintf(fp, ")"); + /* internal label */ + if (cp->label != NULL) + fprintf(fp, "%s", cp->label); + fprintf(fp, ";\n"); +} + + +void resulttree(FILE *outfp) +{ + int n, ne, closeflag; + Node *ep, *ip; + double blen; + + closeflag = FALSE; + + if (clockmode) { + fprintf(outfp, "\n branch length nc/c"); + fprintf(outfp, " branch length nc/c (= non-clock/clock)\n"); + } else { + fprintf(outfp, "\n branch length S.E."); + fprintf(outfp, " branch length S.E.\n"); + } + for (n = 0; n < Numspc; n++) { + ep = Ctree->ebrnchp[n]; + ne = ep->number; + fputid10(outfp, ne); + fputs(" ", outfp); + fprintf(outfp, "%3d", ne + 1); + blen = (clockmode ? ep->lengthc : ep->length); + fprintf(outfp, "%9.5f", blen*0.01); + if (blen < 5.0*MINARC || blen > 0.95*MAXARC) closeflag = TRUE; + if (clockmode) + fprintf(outfp, "%9.3f", (ep->length)/(ep->lengthc)); + else + fprintf(outfp, "%9.5f", 0.01*sqrt(ep->kinp->varlen)); + if (n < Numibrnch) { + ip = Ctree->ibrnchp[n]; + fprintf(outfp, "%8d", n + 1 + Numspc); + blen = (clockmode ? ip->lengthc : ip->length); + fprintf(outfp, "%9.5f", blen*0.01); + if (blen < 5.0*MINARC || blen > 0.95*MAXARC) closeflag = TRUE; + if (clockmode) + fprintf(outfp, "%9.3f", (ip->length)/(ip->lengthc)); + else + fprintf(outfp, "%9.5f", 0.01*sqrt(ip->kinp->varlen)); + fputc('\n', outfp); + } else { + if (n == Numspc - 3) { + fputc('\n', outfp); + } else if (n == Numspc - 2) { + if (clockmode) { + if (!Convergc) + fprintf(outfp, " No convergence after %d iterations!\n", Numitc); + else + fprintf(outfp, " %d iterations until convergence\n", Numitc); + } else { + if (!Converg) + fprintf(outfp, " No convergence after %d iterations!\n", Numit); + else + fprintf(outfp, " %d iterations until convergence\n", Numit); + } + } else if (n == Numspc - 1) { + fprintf(outfp, " log L: %.2f\n", (clockmode ? Ctree->lklhdc : Ctree->lklhd)); + } else { + fputc('\n', outfp); + } + } + } + if(closeflag) + fprintf(outfp, "\nWARNING --- at least one branch length is close to an internal boundary!\n"); +} + + +/******************************************************************************/ +/* Neighbor-joining tree */ +/******************************************************************************/ + + +/* compute NJ tree and write to file */ +void njtree(FILE *fp) +{ + /* reserve memory for tree if necessary */ + if (mlmode != 3) { /* no tree */ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + Ctree = new_tree(Maxspc, Numptrn, Seqpat); + Numbrnch = 2*Maxspc-3; + Numibrnch = Maxspc-3; + Numspc = Maxspc; + mlmode = 3; + } + + /* construct NJ tree from distance matrix */ + njdistantree(Ctree); + + fputphylogeny(fp); +} + + +/* construct NJ tree from distance matrix */ +void njdistantree(Tree *tr) +{ + /* removed, CZ, 05/16/01 */ +} + +/******************************************************************************/ +/* find best assignment of rate categories */ +/******************************************************************************/ + +/* find best assignment of rate categories */ +void findbestratecombination() +{ + int k, u; + double bestvalue, fv2; + dvector catprob; + dmatrix cdl; + + cdl = Ctree->condlkl; + catprob = new_dvector(numcats+1); + fv2 = (1.0-fracinv)/(double) numcats; + + for (k = 0; k < Numptrn; k++) { + /* zero rate */ + if (constpat[k] == TRUE) + catprob[0] = fracinv*Freqtpm[(int) Seqpat[0][k]]; + else + catprob[0] = 0.0; + /* non-zero-rates */ + for (u = 1; u < numcats+1; u++) + catprob[u] = fv2*cdl[u-1][k]; + /* find best */ + bestvalue = catprob[0]; + bestrate[k] = 0; + for (u = 1; u < numcats+1; u++) + if (catprob[u] >= bestvalue) { + bestvalue = catprob[u]; + bestrate[k] = u; + } + } + free_dvector(catprob); + bestratefound = 1; +} + +/* print best assignment of rate categories */ +void printbestratecombination(FILE *fp) +{ + int s, k; + + for (s = 0; s < Maxsite; s++) { + k = Alias[s]; + fprintf(fp, "%2d", bestrate[k]); + if ((s+1) % 30 == 0) + fprintf(fp, "\n"); + else if ((s+1) % 10 == 0) + fprintf(fp, " "); + } + if (s % 70 != 0) + fprintf(fp, "\n"); +} + + +/******************************************************************************/ +/* computation of clocklike branch lengths */ +/******************************************************************************/ + +/* checks wether e is a valid edge specification */ +int checkedge(int e) +{ + /* there are Numspc external branches: + 0 - Numspc-1 + there are Numibrnch internal branches: + Numspc - Numspc+Numibrnch-1 + */ + + if (e < 0) return FALSE; + if (e < Numspc+Numibrnch) return TRUE; + else return FALSE; +} + +/* print topology of subtree */ +void fputsubstree(FILE *fp, Node *ip) +{ + Node *cp; + + if (ip->isop == NULL) { /* terminal nodes */ + numtc += fputid(fp, ip->number); + } else { + cp = ip; + fprintf(fp, "("); + numtc += 1; + do { + cp = cp->isop->kinp; + if (cp->isop == NULL) { /* external node */ + numtc += fputid(fp, cp->number); + fprintf(fp, ":%.5f", (cp->lengthc)*0.01); + numtc += 7; + cp = cp->kinp; + } else { /* internal node */ + if (cp->height > 0.0) { + fprintf(fp, "("); + numtc += 1; + } else if (cp->height < 0.0) { + fprintf(fp, ")"); + numtc += 1; + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + /* internal label */ + if (cp->kinp->label != NULL) { + fprintf(fp, "%s", cp->kinp->label); + numtc += strlen(cp->kinp->label); + } + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + fprintf(fp, ":%.5f", (cp->lengthc)*0.01); + numtc += 6; + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + } + } + if (cp->height <= 0.0 && cp->isop->height <= 0.0 && + cp->isop != ip) { + putc(',', fp); /* not last subtree */ + numtc += 1; + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + } + } while (cp->isop != ip); + fprintf(fp, ")"); + numtc += 1; + } + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + +} + +/* print rooted tree file */ +void fputrooted(FILE *fp, int e) +{ + Node *rootbr; + + /* to be called only after clocklike branch + lengths have been computed */ + + /* pointer to root branch */ + if (e < Numspc) rootbr = Ctree->ebrnchp[e]; + else rootbr = Ctree->ibrnchp[e - Numspc]; + + fprintf(fp, "("); + numtc = 2; + fputsubstree(fp, rootbr); + /* internal label */ + if (rootbr->label != NULL) { + fprintf(fp, "%s", rootbr->label); + numtc += strlen(rootbr->label); + } + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + fprintf(fp, ":%.5f,", (hroot - rootbr->height)*0.01); + numtc += 7; + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + fputsubstree(fp, rootbr->kinp); + /* internal label */ + if (rootbr->kinp->label != NULL) { + fprintf(fp, "%s", rootbr->kinp->label); + numtc += strlen(rootbr->kinp->label); + } + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + fprintf(fp, ":%.5f);\n", (hroot - rootbr->kinp->height)*0.01); +} + +/* finds heights in subtree */ +void findheights(Node *ip) +{ + Node *cp, *rp; + + if (ip->isop != NULL) { /* forget terminal nodes */ + + cp = ip; + + /* initialise node */ + cp->height = 1.0; /* up */ + rp = cp; + while (rp->isop != cp) { + rp = rp->isop; + rp->height = -1.0; /* down */ + } + + do { + cp = cp->isop->kinp; + if (cp->isop == NULL) { /* external node */ + cp = cp->kinp; + } else { /* internal node */ + if (cp->height == 0.0) { /* node not yet visited */ + cp->height = 1.0; /* up */ + rp = cp; + while (rp->isop != cp) { + rp = rp->isop; + rp->height = -1.0; /* down */ + } + } else if (cp->kinp->height == 1.0) { + /* cp->kinp is next height pointer */ + heights[Numhts] = cp->kinp; + Numhts++; + } + } + } while (cp->isop != ip); + /* ip is last height pointer */ + heights[Numhts] = ip; + Numhts++; + } +} + + +/* initialise clocklike branch lengths (with root on edge e) */ +void initclock(int e) +{ + /* CZ */ +} + +/* approximate likelihood under the constaining assumption of + clocklike branch lengths (with root on edge e) */ +double clock_alklhd(int e) +{ + initclock(e); + Ctree->lklhdc = treelkl(Ctree); + + return Ctree->lklhdc; +} + +/* log-likelihood given height ht at node pointed to by chep */ +double heightlkl(double ht) +{ + Node *rp; + double len; + + /* adjust branch lengths */ + chep->height = ht; + /* descendent branches */ + rp = chep; + while (rp->isop != chep) { + rp = rp->isop; + len = chep->height - rp->kinp->height; + rp->kinp->lengthc = len; + rp->lengthc = len; + } + /* upward branch */ + if (chep == rootbr || chep->kinp == rootbr) { + len = (hroot - chep->height) + (hroot - chep->kinp->height); + chep->lengthc = len; + chep->kinp->lengthc = len; + } else { + rp = chep->kinp; + while (rp->isop->height <= 0.0) + rp = rp->isop; + chep->lengthc = rp->isop->height - chep->height; + chep->kinp->lengthc = rp->isop->height - chep->height; + } + + /* compute likelihood */ + Ctree->lklhdc = treelkl(Ctree); + + return -(Ctree->lklhdc); /* we use a minimizing procedure */ +} + +/* optimize current height */ +void optheight(void) +{ + double he, fx, f2x, minh, maxh, len; + Node *rp; + + /* current height */ + he = chep->height; + + /* minimum */ + minh = 0.0; + rp = chep; + while (rp->isop != chep) { + rp = rp->isop; + if (rp->kinp->height > minh) + minh = rp->kinp->height; + } + minh += MINARC; + + /* maximum */ + if (chep == rootbr || chep->kinp == rootbr) { + maxh = hroot; + } else { + rp = chep->kinp; + while (rp->isop->height <= 0.0) + rp = rp->isop; + maxh = rp->isop->height; + } + maxh -= MINARC; + + /* check borders for height */ + if (he < minh) he = minh; + if (he > maxh) he = maxh; + + /* optimization */ + if (!(he == minh && he == maxh)) + he = onedimenmin(minh, he, maxh, heightlkl, HEPSILON, &fx, &f2x); + + /* variance of height */ + f2x = fabs(f2x); + if (1.0/(maxhroot*maxhroot) < f2x) + chep->varheight = 1.0/f2x; + else + chep->varheight = maxhroot*maxhroot; + + /* adjust branch lengths */ + chep->height = he; + /* descendent branches */ + rp = chep; + while (rp->isop != chep) { + rp = rp->isop; + len = chep->height - rp->kinp->height; + rp->kinp->lengthc = len; + rp->lengthc = len; + } + /* upward branch */ + if (chep == rootbr || chep->kinp == rootbr) { + len = (hroot - chep->height) + (hroot - chep->kinp->height); + chep->lengthc = len; + chep->kinp->lengthc = len; + } else { + rp = chep->kinp; + while (rp->isop->height <= 0.0) + rp = rp->isop; + chep->lengthc = rp->isop->height - chep->height; + chep->kinp->lengthc = rp->isop->height - chep->height; + } +} + +/* log-likelihood given height ht at root */ +double rheightlkl(double ht) +{ + double len; + + /* adjust branch lengths */ + hroot = ht; + len = (hroot - rootbr->height) + (hroot - rootbr->kinp->height); + rootbr->lengthc = len; + rootbr->kinp->lengthc = len; + + /* compute likelihood */ + Ctree->lklhdc = treelkl(Ctree); + + return -(Ctree->lklhdc); /* we use a minimizing procedure */ +} + +/* optimize height of root */ +void optrheight(void) +{ + double he, fx, f2x, minh, len; + + /* current height */ + he = hroot; + + /* minimum */ + if (rootbr->height > rootbr->kinp->height) + minh = rootbr->height; + else + minh = rootbr->kinp->height; + minh += MINARC; + + /* check borders for height */ + if (he < minh) he = minh; + if (he > maxhroot) he = maxhroot; + + /* optimization */ + he = onedimenmin(minh, he, maxhroot, rheightlkl, HEPSILON, &fx, &f2x); + + /* variance of height of root */ + f2x = fabs(f2x); + if (1.0/(maxhroot*maxhroot) < f2x) + varhroot = 1.0/f2x; + else + varhroot = maxhroot*maxhroot; + + /* adjust branch lengths */ + hroot = he; + len = (hroot - rootbr->height) + (hroot - rootbr->kinp->height); + rootbr->lengthc = len; + rootbr->kinp->lengthc = len; +} + +/* exact likelihood under the constaining assumption of + clocklike branch lengths (with root on edge e) */ +double clock_lklhd(int e) +{ + int h, nconv; + double old; + + Numitc = 0; + Convergc = FALSE; + + initclock(e); + + do { + + Numitc++; + nconv = 0; + + /* optimize height of root */ + old = hroot; + optrheight(); + if (fabs(old - hroot) < HEPSILON) nconv++; + + /* optimize height of nodes */ + for (h = Numhts-1; h >= 0; h--) { + + /* pointer chep to current height node */ + chep = heights[h]; + + /* store old value */ + old = chep->height; + + /* find better height */ + optheight(); + + /* converged ? */ + if (fabs(old - chep->height) < HEPSILON) nconv++; + } + + if (nconv == Numhts+1) Convergc = TRUE; + + } while (Numitc < MAXIT && !Convergc); + + /* compute final likelihood */ + Ctree->lklhdc = treelkl(Ctree); + + return Ctree->lklhdc; +} + +/* find out the edge containing the root */ +int findrootedge() +{ + int e, ebest; + double logbest, logtest; + + /* compute the likelihood for all edges and take the edge with + best likelihood (using approximate ML) */ + + ebest = 0; + logbest = clock_alklhd(0); + numbestroot = 1; + for (e = 1; e < Numspc+Numibrnch; e++) { + logtest = clock_alklhd(e); + if (logtest > logbest) { + ebest = e; + logbest = logtest; + numbestroot = 1; + } else if (logtest == logbest) { + numbestroot++; + } + } + + return ebest; +} + +/* show heights and corresponding standard errors */ +void resultheights(FILE *fp) +{ + int h, num; + Node *cp; + + fprintf(fp, " height S.E. of node common to branches\n"); + for (h = 0; h < Numhts; h++) { + fprintf(fp, "%.5f %.5f ", (heights[h]->height)*0.01, + sqrt(heights[h]->varheight)*0.01); + cp = heights[h]; + do { + num = (cp->number) + 1; + if (cp->kinp->isop != NULL) num += Numspc; /* internal branch */ + fprintf(fp, "%d ", num); + cp = cp->isop; + } while (cp != heights[h]); + fprintf(fp, "\n"); + + } + fprintf(fp, "%.5f %.5f of root at branch %d\n", + hroot*0.01, sqrt(varhroot)*0.01, locroot+1); +} + diff --git a/forester/archive/RIO/others/puzzle_dqo/src/ml3.c b/forester/archive/RIO/others/puzzle_dqo/src/ml3.c new file mode 100644 index 0000000..a68a054 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/ml3.c @@ -0,0 +1,350 @@ +/* + * ml3.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#define EXTERN extern + + +/* prototypes */ +#include +#include +#include +#include "util.h" +#include "ml.h" +#include "gamma.h" + + + +/******************************************************************************/ +/* discrete Gamma-distribution and related stuff */ +/******************************************************************************/ + +/* compare general base frequencies with frequencies of taxon i with chi square */ +double homogentest(int taxon) +{ + return chi2test(Freqtpm, Basecomp[taxon], gettpmradix(), &chi2fail); +} + + +/* discrete Gamma according to Yang 1994 (JME 39:306-314) */ +void YangDiscreteGamma (double shape, int c, dvector x) +{ + double twoc, mu; + int i; + + twoc = 2.0*c; + mu = 0.0; + for (i = 0; i < c; i++) + { + /* corresponding rates */ + x[i] = icdfGamma ( (2.0*i+1.0)/twoc, shape); + mu += x[i]; + } + mu = mu/c; + + /* rescale for avarage rate of 1.0 */ + for (i = 0; i < c; i++) + { + x[i] /= mu; + } +} + +/* compute rates of each category when rates are Gamma-distributed */ +void updaterates() +{ + int i; + double alpha; + + if (numcats == 1) + { + Rates[0] = 1.0; + return; + } + if (Geta == 0.0) + { + for (i = 0; i < numcats; i++) + Rates[i] = 1.0; + return; + } + alpha = (1.0 - Geta)/Geta; + + YangDiscreteGamma (alpha, numcats, Rates); + + /* if invariable sites are present */ + for (i = 0; i < numcats; i++) + Rates[i] = Rates[i]/(1.0-fracinv); + + /* check for very small rates */ + for (i = 0; i < numcats; i++) + if (Rates[i] < 0.000001) Rates[i] = 0.000001; +} + + + +/******************************************************************************/ +/* parameter estimation */ +/******************************************************************************/ + +/* compute sample mean and standard deviation of sample mean */ +void computestat(double *data, int n, double *mean, double *err) +{ + int i; + double sum; + + sum = 0; + for (i = 0; i < n; i++) sum += data[i]; + (*mean) = sum/(double) n; + + sum = 0; + for (i = 0; i < n; i++) sum += (data[i] - (*mean))*(data[i] - (*mean)); + if (n != 1) + (*err) = sqrt(sum)/sqrt((double)(n-1)*n); /* unbiased estimator */ + else + (*err) = 0.0; /* if n == 1 */ +} + +/* compute ML value of quartet (a,b,c,d) */ +double quartetml(int a, int b, int c, int d) +{ + double d1, d2, d3; + + /* compute ML for all topologies */ + if (approxp_optn) { /* approximate parameter mode */ + d1 = quartet_alklhd(a,b,c,d); /* (a,b)-(c,d) */ + d2 = quartet_alklhd(a,c,b,d); /* (a,c)-(b,d) */ + d3 = quartet_alklhd(a,d,b,c); /* (a,d)-(b,c) */ + } else { + d1 = quartet_lklhd(a,b,c,d); /* (a,b)-(c,d) */ + d2 = quartet_lklhd(a,c,b,d); /* (a,c)-(b,d) */ + d3 = quartet_lklhd(a,d,b,c); /* (a,d)-(b,c) */ + } + + /* looking for max(d1, d2, d3) */ + if (d1 < d2) { /* d2 > d1 */ + if (d2 < d3) { /* d3 > d2 > d1 */ + /* d3 maximum */ + return d3; + } else { /* d2 >= d3 > d1 */ + /* d2 maximum */ + return d2; + } + } else { /* d1 >= d2 */ + if (d1 < d3) { /* d3 > d1 >= d2 */ + /* d3 maximum */ + return d3; + } else { /* d1 >= d2 && d1 >= d3 */ + /* d1 maximum */ + return d1; + } + } +} + +/* optimization function TSparam - quartets */ +double opttsq(double x) +{ + if (x < MINTS) TSparam = MINTS; + else if (x > MAXTS) TSparam = MAXTS; + else TSparam = x; + tranprobmat(); + distupdate(qca, qcb, qcc, qcd); + return (-quartetml(qca, qcb, qcc, qcd)); +} + +/* optimization function YRparam - quartets */ +double optyrq(double x) +{ + if (x < MINYR) YRparam = MINYR; + else if (x > MAXYR) YRparam = MAXYR; + else YRparam = x; + tranprobmat(); + distupdate(qca, qcb, qcc, qcd); + return (-quartetml(qca, qcb, qcc, qcd)); +} + +/* estimate substitution process parameters - random quartets */ +void optimseqevolparamsq() +{ + double tsmeanold, yrmeanold; + dvector tslist, yrlist; + int fin; + ivector taxon; + uli minqts, maxqts, n; + + + taxon = new_ivector(4); + + /* number of quartets to be investigated */ + minqts = (uli) floor(0.25 * MINPERTAXUM * Maxspc) + 1; + maxqts = (uli) floor(0.25 * MAXPERTAXUM * Maxspc) + 1; + if (Maxspc == 4) { + minqts = (uli) 1; + maxqts = (uli) 1; + } + + tslist = new_dvector(maxqts); + yrlist = new_dvector(maxqts); + + /* initialize averages */ + tsmean = TSparam; + yrmean = YRparam; + + fin = FALSE; + + /* investigate maxqts random quartets */ + for (n = 0; n < maxqts; n++) { + + /* choose random quartet */ + chooser(Maxspc, 4, taxon); + + /* + * optimize parameters on this quartet + */ + + qca = taxon[0]; + qcb = taxon[1]; + qcc = taxon[2]; + qcd = taxon[3]; + + /* initialize start values with average value */ + if ((SH_optn || nuc_optn) && optim_optn && (data_optn == 0)) TSparam = tsmean; + if ((nuc_optn && TN_optn) && optim_optn && (data_optn == 0)) YRparam = yrmean; + + /* estimation */ + twodimenmin(PEPS1, + (SH_optn || nuc_optn) && optim_optn && (data_optn == 0), + MINTS, &TSparam, MAXTS, opttsq, &tserr, + (nuc_optn && TN_optn) && optim_optn && (data_optn == 0), + MINYR, &YRparam, MAXYR, optyrq, &yrerr); + + + tsmeanold = tsmean; + yrmeanold = yrmean; + tslist[n] = TSparam; + yrlist[n] = YRparam; + computestat(tslist, n+1 , &tsmean, &tserr); + computestat(yrlist, n+1 , &yrmean, &yrerr); + + /* check whether the means are converging */ + if (n > minqts-2) { + if ((fabs(tsmean-tsmeanold) < TSDIFF) && + (fabs(yrmean-yrmeanold) < YRDIFF)) + fin = TRUE; + } + + /* investigate at least minqts quartets */ + if (n > minqts-2 && (fin || n > maxqts-2)) break; + } + + /* round estimated numbers to 2 digits after the decimal point */ + if (tserr != 0.0) tsmean = floor(100.0*tsmean+0.5)/100.0; + if (yrerr != 0.0) yrmean = floor(100.0*yrmean+0.5)/100.0; + + /* update ML engine */ + TSparam = tsmean; + YRparam = yrmean; + tranprobmat(); + + free_ivector(taxon); +} + +/* optimization function TSparam - tree */ +double opttst(double x) +{ + double result; + + if (x < MINTS) TSparam = MINTS; + else if (x > MAXTS) TSparam = MAXTS; + else TSparam = x; + tranprobmat(); + computedistan(); + if (approxp_optn) result = usertree_alklhd(); + else result = usertree_lklhd(); + + return (-result); +} + +/* optimization function YRparam - tree */ +double optyrt(double x) +{ + double result; + + if (x < MINYR) YRparam = MINYR; + else if (x > MAXYR) YRparam = MAXYR; + else YRparam = x; + tranprobmat(); + computedistan(); + if (approxp_optn) result = usertree_alklhd(); + else result = usertree_lklhd(); + + return (-result); +} + + +/* optimize substitution process parameters - tree */ +void optimseqevolparamst() +{ + twodimenmin(PEPS1, + (SH_optn || nuc_optn) && optim_optn && (data_optn == 0), + MINTS, &TSparam, MAXTS, opttst, &tserr, + (nuc_optn && TN_optn) && optim_optn && (data_optn == 0), + MINYR, &YRparam, MAXYR, optyrt, &yrerr); +} + + +/* optimization function fracinv */ +double optfi(double x) +{ + double result; + + if (x < MINFI) fracinv = MINFI; + else if (x > MAXFI) fracinv = MAXFI; + else fracinv = x; + + computedistan(); + if (approxp_optn) result = usertree_alklhd(); + else result = usertree_lklhd(); + + return (-result); +} + + +/* optimization function Geta */ +double optge(double x) +{ + double result; + + if (x < MINGE) Geta = MINGE; + else if (x > MAXGE) Geta = MAXGE; + else Geta = x; + + updaterates(); + + computedistan(); + if (approxp_optn) result = usertree_alklhd(); + else result = usertree_lklhd(); + + return (-result); +} + + +/* optimize rate heterogeneity parameters */ +void optimrateparams() +{ + twodimenmin(PEPS2, + fracinv_optim, + MINFI, &fracinv, fracconst, optfi, &fierr, + grate_optim, + MINGE, &Geta, MAXGE, optge, &geerr); + +} diff --git a/forester/archive/RIO/others/puzzle_dqo/src/model1.c b/forester/archive/RIO/others/puzzle_dqo/src/model1.c new file mode 100644 index 0000000..54fb889 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/model1.c @@ -0,0 +1,326 @@ +/* + * model1.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/* definitions */ +#define EXTERN extern + +/* prototypes */ +#include +#include "util.h" +#include "ml.h" + +/* number of states of the selected model */ +int gettpmradix() +{ + if (data_optn == 0) { /* nucleotides */ + if (nuc_optn) return 4; + if (SH_optn) return 16; + } else if (data_optn == 1) { /* amino acids */ + return 20; + } else { /* two-state model */ + return 2; + } + return 1; +} + +/* relative transition frequencies */ +void rtfdata(dmatrix q, double *f) +{ + double alp, alpy, alpr; + int i, j; + + if (data_optn == 0) + { /* nucleotides */ + + if (nuc_optn) + { /* 4x4 nucleotides */ + alp = 2.0*TSparam; + alpr = (alp * 2.0) / (YRparam + 1.0); + alpy = YRparam * alpr; + + q[0][1] = 1; q[0][2] = alpr; q[0][3] = 1; + q[1][2] = 1; q[1][3] = alpy; + q[2][3] = 1; + + f[0] = 0.25; f[1] = 0.25; f[2] = 0.25; f[3] = 0.25; + } + + if (SH_optn) + { /* 16x16 nucleotides */ + + alp = 2.0*TSparam; + + q[0][1] = 1; q[0][2] = alp; q[0][3] = 1; q[0][4] = 1; + q[0][5] = 0; q[0][6] = 0; q[0][7] = 0; q[0][8] = alp; + q[0][9] = 0; q[0][10] = 0; q[0][11] = 0; q[0][12] = 1; + q[0][13] = 0; q[0][14] = 0; q[0][15] = 0; + + q[1][2] = 1; q[1][3] = alp; q[1][4] = 0; q[1][5] = 1; + q[1][6] = 0; q[1][7] = 0; q[1][8] = 0; q[1][9] = alp; + q[1][10] = 0; q[1][11] = 0; q[1][12] = 0; q[1][13] = 1; + q[1][14] = 0; q[1][15] = 0; + + q[2][3] = 1; q[2][4] = 0; q[2][5] = 0; q[2][6] = 1; + q[2][7] = 0; q[2][8] = 0; q[2][9] = 0; q[2][10] = alp; + q[2][11] = 0; q[2][12] = 0; q[2][13] = 0; q[2][14] = 1; + q[2][15] = 0; + + q[3][4] = 0; q[3][5] = 0; q[3][6] = 0; q[3][7] = 1; + q[3][8] = 0; q[3][9] = 0; q[3][10] = 0; q[3][11] = alp; + q[3][12] = 0; q[3][13] = 0; q[3][14] = 0; q[3][15] = 1; + + q[4][5] = 1; q[4][6] = alp; q[4][7] = 1; q[4][8] = 1; + q[4][9] = 0; q[4][10] = 0; q[4][11] = 0; q[4][12] = alp; + q[4][13] = 0; q[4][14] = 0; q[4][15] = 0; + + q[5][6] = 1; q[5][7] = alp; q[5][8] = 0; q[5][9] = 1; + q[5][10] = 0; q[5][11] = 0; q[5][12] = 0; q[5][13] = alp; + q[5][14] = 0; q[5][15] = 0; + + q[6][7] = 1; q[6][8] = 0; q[6][9] = 0; q[6][10] = 1; + q[6][11] = 0; q[6][12] = 0; q[6][13] = 0; q[6][14] = alp; + q[6][15] = 0; + + q[7][8] = 0; q[7][9] = 0; q[7][10] = 0; q[7][11] = 1; + q[7][12] = 0; q[7][13] = 0; q[7][14] = 0; q[7][15] = alp; + + q[8][9] = 1; q[8][10] = alp; q[8][11] = 1; q[8][12] = 1; + q[8][13] = 0; q[8][14] = 0; q[8][15] = 0; + + q[9][10] = 1; q[9][11] = alp; q[9][12] = 0; q[9][13] = 1; + q[9][14] = 0; q[9][15] = 0; + + q[10][11] = 1; q[10][12] = 0; q[10][13] = 0; q[10][14] = 1; + q[10][15] = 0; + + q[11][12] = 0; q[11][13] = 0; q[11][14] = 0; q[11][15] = 1; + + q[12][13] = 1; q[12][14] = alp; q[12][15] = 1; + + q[13][14] = 1; q[13][15] = alp; + + q[14][15] = 1; + + + for (i = 0; i < 16; i++) f[i] = 0.0625; + } + } + else if (data_optn == 1) + { /* amino acids */ + if (Dayhf_optn) /* Dayhoff model */ + { + dyhfdata(q, f); + } + else if (Jtt_optn) /* JTT model */ + { + jttdata(q, f); + } + else if (blosum62_optn) /* BLOSUM 62 model */ + { + blosum62data(q, f); + } + else if (mtrev_optn) /* mtREV model */ + { + mtrevdata(q, f); + } + else if (cprev_optn) /* cpREV model */ + { + cprev45data(q, f); + } + else if (vtmv_optn) /* VT model */ + { + vtmvdata(q, f); + } + else /* if (wag_optn) */ /* WAG model */ + { + wagdata(q, f); + } + + } + else /* two-state model */ + { + q[0][1] = 1.0; + + f[0] = 0.5; f[1] = 0.5; + } + + /* fill matrix from upper triangle */ + for (i = 0; i < tpmradix; i++) + { + q[i][i] = 0.0; + for (j = i+1; j < tpmradix; j++) + { + q[j][i] = q[i][j]; + } + } +} + +/* transform letter codes to state numbers */ +int code2int(cvector c) +{ if (data_optn == 0) { /* nucleotides */ + if (nuc_optn) { /* 4x4 */ + switch (c[0]) { + case 'A': return 0; + case 'C': return 1; + case 'G': return 2; + case 'T': return 3; + case 'U': return 3; + default : return 4; + } + } + if (SH_optn) { /* 16x16 */ + if (c[0] == 'A') { + switch (c[1]) { + case 'A': return 0; /* AA */ + case 'C': return 1; /* AC */ + case 'G': return 2; /* AG */ + case 'T': return 3; /* AT */ + case 'U': return 3; /* AT */ + default: return 16; + } + } + if (c[0] == 'C') { + switch (c[1]) { + case 'A': return 4; /* CA */ + case 'C': return 5; /* CC */ + case 'G': return 6; /* CG */ + case 'T': return 7; /* CT */ + case 'U': return 7; /* CT */ + default: return 16; + } + } + if (c[0] == 'G') { + switch (c[1]) { + case 'A': return 8; /* GA */ + case 'C': return 9; /* GC */ + case 'G': return 10; /* GG */ + case 'T': return 11; /* GT */ + case 'U': return 11; /* GT */ + default: return 16; + } + } + if (c[0] == 'T' || c[0] == 'U') { + switch (c[1]) { + case 'A': return 12; /* TA */ + case 'C': return 13; /* TC */ + case 'G': return 14; /* TG */ + case 'T': return 15; /* TT */ + case 'U': return 15; /* TT */ + default: return 16; + } + } + return 16; + } + } else if (data_optn == 1) { /* amino acids */ + switch (c[0]) { + case 'A': return 0; + case 'C': return 4; + case 'D': return 3; + case 'E': return 6; + case 'F': return 13; + case 'G': return 7; + case 'H': return 8; + case 'I': return 9; + case 'K': return 11; + case 'L': return 10; + case 'M': return 12; + case 'N': return 2; + case 'P': return 14; + case 'Q': return 5; + case 'R': return 1; + case 'S': return 15; + case 'T': return 16; + case 'V': return 19; + case 'W': return 17; + case 'Y': return 18; + default : return 20; + } + } else { /* two-state model */ + switch (c[0]) { + case '0': return 0; + case '1': return 1; + default : return 2; + } + } + return 0; +} + +/* return letter code belonging to state number */ +char *int2code(int s) +{ + if (data_optn == 0) { /* nucleotides */ + if (nuc_optn) { /* 4x4 */ + switch (s) { + case 0: return "A"; + case 1: return "C"; + case 2: return "G"; + case 3: return "T"; + default : return "?"; + } + } + if (SH_optn) { /* 16x16 */ + switch (s) { + case 0: return "AA"; + case 1: return "AC"; + case 2: return "AG"; + case 3: return "AT"; + case 4: return "CA"; + case 5: return "CC"; + case 6: return "CG"; + case 7: return "CT"; + case 8: return "GA"; + case 9: return "GC"; + case 10: return "GG"; + case 11: return "GT"; + case 12: return "TA"; + case 13: return "TC"; + case 14: return "TG"; + case 15: return "TT"; + default : return "??"; + } + } + } else if (data_optn == 1) { /* amino acids */ + switch (s) { + case 0: return "A"; + case 1: return "R"; + case 2: return "N"; + case 3: return "D"; + case 4: return "C"; + case 5: return "Q"; + case 6: return "E"; + case 7: return "G"; + case 8: return "H"; + case 9: return "I"; + case 10: return "L"; + case 11: return "K"; + case 12: return "M"; + case 13: return "F"; + case 14: return "P"; + case 15: return "S"; + case 16: return "T"; + case 17: return "W"; + case 18: return "Y"; + case 19: return "V"; + default : return "?"; + } + } else { /* two-state model */ + switch (s) { + case 0: return "0"; + case 1: return "1"; + default : return "?"; + } + } + return "?"; +} diff --git a/forester/archive/RIO/others/puzzle_dqo/src/model2.c b/forester/archive/RIO/others/puzzle_dqo/src/model2.c new file mode 100644 index 0000000..9e2197f --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/model2.c @@ -0,0 +1,1125 @@ +/* + * model2.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/* definitions */ +#define EXTERN extern + +/* prototypes */ +#include +#include "util.h" +#include "ml.h" + + +void jttdata(dmatrix q, double *f) +{ + /* + * JTT model for amino acid evolution + * D.T. Jones, W.R. Taylor, and J.M. Thornton + * "The rapid generation of mutation data matrices from protein sequences" + * CABIOS vol. 8 no. 3 1992 pp. 275-282 + */ + + q[0][1]=3.1628651460584e+00; q[0][2]=3.2804935927860e+00; + q[0][3]=4.8477237048666e+00; q[0][4]=3.4612244897959e+00; + q[0][5]=3.3130910900946e+00; q[0][6]=6.3199473337722e+00; + q[0][7]=1.0440154440154e+01; q[0][8]=1.3061224489796e+00; + q[0][9]=2.1726844583987e+00; q[0][10]=1.8443597219107e+00; + q[0][11]=2.2137668626773e+00; q[0][12]=2.7210884353741e+00; + q[0][13]=8.3265306122449e-01; q[0][14]=1.1537414965986e+01; + q[0][15]=2.2838213546288e+01; q[0][16]=2.7007955724663e+01; + q[0][17]=5.1311953352770e-01; q[0][18]=8.3673469387755e-01; + q[0][19]=1.7474335188621e+01; + + q[1][2]=2.6598918637222e+00; q[1][3]=9.1014867485456e-01; + q[1][4]=6.1624649859944e+00; q[1][5]=1.8036482885837e+01; + q[1][6]=1.8924731182796e+00; q[1][7]=8.1810886516769e+00; + q[1][8]=1.9119717452198e+01; q[1][9]=1.4410687351864e+00; + q[1][10]=2.2211961707760e+00; q[1][11]=3.9239234676922e+01; + q[1][12]=2.5060690943044e+00; q[1][13]=3.9439775910364e-01; + q[1][14]=4.1953094963476e+00; q[1][15]=5.9016766126741e+00; + q[1][16]=3.8437069743152e+00; q[1][17]=7.6766706682673e+00; + q[1][18]=1.4173669467787e+00; q[1][19]=1.0308123249300e+00; + + q[2][3]=3.2226935854843e+01; q[2][4]=1.8710963455150e+00; + q[2][5]=4.5351268130622e+00; q[2][6]=3.3951344979102e+00; + q[2][7]=4.5987249708180e+00; q[2][8]=2.3693774375271e+01; + q[2][9]=2.9235880398671e+00; q[2][10]=8.0960899565551e-01; + q[2][11]=1.5024269384537e+01; q[2][12]=1.9003322259136e+00; + q[2][13]=4.3853820598007e-01; q[2][14]=7.1083317047749e-01; + q[2][15]=2.9456208772690e+01; q[2][16]=1.3735908553410e+01; + q[2][17]=1.6706217370669e-01; q[2][18]=4.1661129568106e+00; + q[2][19]=9.7452934662237e-01; + + q[3][4]=6.2857142857143e-01; q[3][5]=3.0662020905923e+00; + q[3][6]=4.5450549450549e+01; q[3][7]=7.5402435402435e+00; + q[3][8]=6.0544672718586e+00; q[3][9]=6.8808114961961e-01; + q[3][10]=3.6130902064968e-01; q[3][11]=1.6718197057180e+00; + q[3][12]=1.0879120879121e+00; q[3][13]=1.9340659340659e-01; + q[3][14]=7.3949579831933e-01; q[3][15]=3.4196528109572e+00; + q[3][16]=2.4749487800335e+00; q[3][17]=3.4536891679749e-01; + q[3][18]=2.6895604395604e+00; q[3][19]=1.8608058608059e+00; + + q[4][5]=5.5191637630662e-01; q[4][6]=3.2442396313364e-01; + q[4][7]=3.3297297297297e+00; q[4][8]=4.3726708074534e+00; + q[4][9]=9.1868131868132e-01; q[4][10]=9.9466248037677e-01; + q[4][11]=2.9830508474576e-01; q[4][12]=2.4095238095238e+00; + q[4][13]=4.1485714285714e+00; q[4][14]=7.3949579831933e-01; + q[4][15]=1.2862939958592e+01; q[4][16]=2.8125907990315e+00; + q[4][17]=6.8244897959184e+00; q[4][18]=1.2885714285714e+01; + q[4][19]=3.7714285714286e+00; + + q[5][6]=2.0316061593796e+01; q[5][7]=1.3922214897825e+00; + q[5][8]=3.3861536130889e+01; q[5][9]=4.7172339855267e-01; + q[5][10]=4.2320327755868e+00; q[5][11]=1.7835941652395e+01; + q[5][12]=2.6573751451800e+00; q[5][13]=2.7595818815331e-01; + q[5][14]=9.4992143198743e+00; q[5][15]=3.2350653941322e+00; + q[5][16]=3.0973838067678e+00; q[5][17]=1.0512692882031e+00; + q[5][18]=1.5331010452962e+00; q[5][19]=1.0778164924506e+00; + + q[6][7]=6.6857641051189e+00; q[6][8]=1.4458024443999e+00; + q[6][9]=6.7068415455512e-01; q[6][10]=5.7932850559579e-01; + q[6][11]=1.0365070686558e+01; q[6][12]=1.0138248847926e+00; + q[6][13]=2.6359447004608e-01; q[6][14]=1.1291226167887e+00; + q[6][15]=1.8337006611901e+00; q[6][16]=1.9520424900414e+00; + q[6][17]=6.9519420671494e-01; q[6][18]=3.8018433179723e-01; + q[6][19]=2.7772657450077e+00; + + q[7][8]=1.2113479939567e+00; q[7][9]=3.2670032670033e-01; + q[7][10]=4.1817641817642e-01; q[7][11]=1.6354950592239e+00; + q[7][12]=7.6447876447876e-01; q[7][13]=3.0579150579151e-01; + q[7][14]=1.2391551215081e+00; q[7][15]=1.1138492529797e+01; + q[7][16]=1.8888816176952e+00; q[7][17]=3.3491450634308e+00; + q[7][18]=3.1853281853282e-01; q[7][19]=2.8416988416988e+00; + + q[8][9]=1.0931677018634e+00; q[8][10]=3.2194389461470e+00; + q[8][11]=3.1498052426571e+00; q[8][12]=1.9130434782609e+00; + q[8][13]=2.7329192546584e+00; q[8][14]=6.7304834977469e+00; + q[8][15]=4.3726708074534e+00; q[8][16]=2.8162964522581e+00; + q[8][17]=7.8083407275954e-01; q[8][18]=3.5118012422360e+01; + q[8][19]=7.2877846790890e-01; + + q[9][10]=1.4069798333535e+01; q[9][11]=1.2292791953809e+00; + q[9][12]=2.8366300366300e+01; q[9][13]=4.7384615384615e+00; + q[9][14]=5.8780435251023e-01; q[9][15]=2.4105749323141e+00; + q[9][16]=1.5243062022723e+01; q[9][17]=8.2888540031397e-01; + q[9][18]=1.8434065934066e+00; q[9][19]=5.7699633699634e+01; + + q[10][11]=8.8039805231089e-01; q[10][12]=2.2425954997384e+01; + q[10][13]=1.5099529042386e+01; q[10][14]=6.2626896912611e+00; + q[10][15]=3.4917298022888e+00; q[10][16]=1.6109411169944e+00; + q[10][17]=3.2366001345593e+00; q[10][18]=1.4505494505495e+00; + q[10][19]=1.0557823129252e+01; + + q[11][12]=3.6577885391445e+00; q[11][13]=1.4915254237288e-01; + q[11][14]=1.2868062479229e+00; q[11][15]=2.8162964522581e+00; + q[11][16]=5.7494151926786e+00; q[11][17]=5.4790729851263e-01; + q[11][18]=5.3268765133172e-01; q[11][19]=7.4899112187248e-01; + + q[12][13]=2.5666666666667e+00; q[12][14]=9.4491129785247e-01; + q[12][15]=1.6397515527950e+00; q[12][16]=1.2180790960452e+01; + q[12][17]=1.1972789115646e+00; q[12][18]=1.1130952380952e+00; + q[12][19]=1.7746031746032e+01; + + q[13][14]=8.8739495798319e-01; q[13][15]=5.6298136645963e+00; + q[13][16]=8.3099273607748e-01; q[13][17]=3.3224489795918e+00; + q[13][18]=3.3392857142857e+01; q[13][19]=3.6000000000000e+00; + + q[14][15]=1.6261762676085e+01; q[14][16]=6.8852490148602e+00; + q[14][17]=4.2256902761104e-01; q[14][18]=6.7787114845938e-01; + q[14][19]=1.2549019607843e+00; + + q[15][16]=2.7891216619293e+01; q[15][17]=1.8740017746229e+00; + q[15][18]=3.7349896480331e+00; q[15][19]=2.4182194616977e+00; + + q[16][17]=4.8702870978900e-01; q[16][18]=1.1985472154964e+00; + q[16][19]=6.7925746569814e+00; + + q[17][18]=4.6020408163265e+00; q[17][19]=1.4693877551020e+00; + + q[18][19]=1.0000000000000e+00; + + + f[0] = 0.077; f[1] = 0.051; f[2] = 0.043; f[3] = 0.052; + f[4] = 0.02; f[5] = 0.041; f[6] = 0.062; f[7] = 0.074; + f[8] = 0.023; f[9] = 0.052; f[10] = 0.091; f[11] = 0.059; + f[12] = 0.024; f[13] = 0.04; f[14] = 0.051; f[15] = 0.069; + f[16] = 0.059; f[17] = 0.014; f[18] = 0.032; f[19] = 0.066; +} + +void dyhfdata(dmatrix q, double *f) +{ + /* + * Dayhoff model for amino acid evolution + * Dayhoff, M.O., Schwartz, R.M., Orcutt, B.C. (1978) + * "A model of evolutionary change in proteins." + * Dayhoff, M.O. (ed.) Atlas of Protein Sequence Structur., Vol5, Suppl. 3, + * National Biomedical Research Foundation, Washington DC, pp. 345-352. + */ + + q[0][1]=9.6472567159749e-01; q[0][2]=3.5927991886410e+00; + q[0][3]=4.3200552414656e+00; q[0][4]=1.3184584178499e+00; + q[0][5]=3.2267534963169e+00; q[0][6]=7.0141987829615e+00; + q[0][7]=8.5773867857875e+00; q[0][8]=8.1434196396611e-01; + q[0][9]=2.3518447453539e+00; q[0][10]=1.4735711728911e+00; + q[0][11]=9.3940162271805e-01; q[0][12]=2.5490196078431e+00; + q[0][13]=6.5922920892495e-01; q[0][14]=8.9189834148670e+00; + q[0][15]=1.4540712836859e+01; q[0][16]=1.3411904595370e+01; + q[0][17]=3.8517964118027e-02; q[0][18]=8.7897227856660e-01; + q[0][19]=7.4036511156187e+00; + + q[1][2]=1.1890243902439e+00; q[1][3]=5.9525626545377e-02; + q[1][4]=8.4778922655537e-01; q[1][5]=8.8348561504191e+00; + q[1][6]=5.5954088952654e-02; q[1][7]=3.1434881434075e-01; + q[1][8]=8.4753987678285e+00; q[1][9]=2.2684090115941e+00; + q[1][10]=5.5954088952654e-01; q[1][11]=1.6681312769010e+01; + q[1][12]=3.1707317073171e+00; q[1][13]=4.8959827833572e-01; + q[1][14]=3.6754156468900e+00; q[1][15]=5.4755072760812e+00; + q[1][16]=9.6472567159749e-01; q[1][17]=7.5538020086083e+00; + q[1][18]=2.7977044476327e-01; q[1][19]=8.6083213773314e-01; + + q[2][3]=3.2459324155194e+01; q[2][4]=7.3852625416383e-02; + q[2][5]=3.7732198142415e+00; q[2][6]=5.3911764705882e+00; + q[2][7]=5.0264375413087e+00; q[2][8]=1.9061418685121e+01; + q[2][9]=2.7901430842607e+00; q[2][10]=1.2482698961938e+00; + q[2][11]=1.1542279411765e+01; q[2][12]=1.9117647058824e-01; + q[2][13]=5.0183823529412e-01; q[2][14]=1.5181660899654e+00; + q[2][15]=1.7697478991597e+01; q[2][16]=8.3557302231237e+00; + q[2][17]=8.6029411764706e-01; q[2][18]=3.4411764705882e+00; + q[2][19]=5.7352941176471e-01; + + q[3][4]=2.5534152404601e-02; q[3][5]=4.8811013767209e+00; + q[3][6]=4.0561952440551e+01; q[3][7]=4.4423506911730e+00; + q[3][8]=3.0865788117500e+00; q[3][9]=8.5749078239692e-01; + q[3][10]=2.5926985518518e-02; q[3][11]=2.5930851063830e+00; + q[3][12]=1.1667143483333e-01; q[3][13]=1.2963492759259e-02; + q[3][14]=4.7853935065891e-01; q[3][15]=3.4167709637046e+00; + q[3][16]=2.3984722282163e+00; q[3][17]=3.2408731898147e-02; + q[3][18]=8.1351689612015e-02; q[3][19]=6.3829787234043e-01; + + q[4][5]=2.1864264103535e-02; q[4][6]=1.4770525083277e-02; + q[4][7]=3.9055458751427e-01; q[4][8]=1.0223340673168e+00; + q[4][9]=1.5970515970516e+00; q[4][10]=3.9098448749850e-02; + q[4][11]=8.0776309049169e-03; q[4][12]=1.4155086538140e-01; + q[4][13]=8.6898395721925e-02; q[4][14]=6.8155604487784e-01; + q[4][15]=5.8097784568373e+00; q[4][16]=5.9929928084086e-01; + q[4][17]=3.4759358288770e-01; q[4][18]=3.4759358288770e+00; + q[4][19]=1.7647058823529e+00; + + q[5][6]=2.5476780185759e+01; q[5][7]=1.0174974779977e+00; + q[5][8]=2.1573939173192e+01; q[5][9]=6.5266504894988e-01; + q[5][10]=2.6634492806410e+00; q[5][11]=5.5466331269350e+00; + q[5][12]=4.0247678018576e+00; q[5][13]=1.8038017885416e-02; + q[5][14]=5.5044618466582e+00; q[5][15]=2.0267580716497e+00; + q[5][16]=1.9256432155439e+00; q[5][17]=9.6202762055552e-02; + q[5][18]=1.0061919504644e-01; q[5][19]=1.2538699690402e+00; + + q[6][7]=2.8869795109055e+00; q[6][8]=1.5519031141869e+00; + q[6][9]=2.1701112877583e+00; q[6][10]=4.0484429065744e-01; + q[6][11]=2.9823529411765e+00; q[6][12]=1.0705882352941e+00; + q[6][13]=1.9801735189768e-02; q[6][14]=1.7993079584775e+00; + q[6][15]=2.8184873949580e+00; q[6][16]=1.2261663286004e+00; + q[6][17]=7.3114099162219e-02; q[6][18]=7.6470588235294e-01; + q[6][19]=1.3058823529412e+00; + + q[7][8]=3.7906768788150e-01; q[7][9]=2.3128004846840e-02; + q[7][10]=2.5776602775942e-01; q[7][11]=9.6662260409782e-01; + q[7][12]=6.0145406477198e-01; q[7][13]=5.4775280898876e-01; + q[7][14]=1.2382877804129e+00; q[7][15]=8.2853366065527e+00; + q[7][16]=1.1110604644803e+00; q[7][17]=1.2888301387971e-01; + q[7][18]=1.7114723586662e-02; q[7][19]=1.9233311302049e+00; + + q[8][9]=2.7354343963341e-01; q[8][10]=1.5876246692449e+00; + q[8][11]=9.6993944636678e-01; q[8][12]=1.2544085640577e-01; + q[8][13]=1.6868512110727e+00; q[8][14]=3.3075513942601e+00; + q[8][15]=1.2530894710826e+00; q[8][16]=8.1434196396611e-01; + q[8][17]=1.0121107266436e+00; q[8][18]=4.4982698961938e+00; + q[8][19]=1.5570934256055e+00; + + q[9][10]=9.2275320303002e+00; q[9][11]=1.6663354531002e+00; + q[9][12]=1.1780604133545e+01; q[9][13]=6.9753577106518e+00; + q[9][14]=4.2551201720752e-01; q[9][15]=8.8575970928912e-01; + q[9][16]=6.8951811852420e+00; q[9][17]=9.8802836705702e-02; + q[9][18]=1.3434022257552e+00; q[9][19]=3.1526232114467e+01; + + q[10][11]=6.5787197231834e-01; q[10][12]=1.8622837370242e+01; + q[10][13]=5.6340830449827e+00; q[10][14]=1.1377976796255e+00; + q[10][15]=6.1690558576372e-01; q[10][16]=1.2098794893211e+00; + q[10][17]=1.7543252595156e+00; q[10][18]=1.0346020761246e+00; + q[10][19]=6.2906574394464e+00; + + q[11][12]=8.6029411764706e+00; q[11][13]=6.6640454965565e-03; + q[11][14]=1.2089100346021e+00; q[11][15]=3.4411764705882e+00; + q[11][16]=4.9442190669371e+00; q[11][17]=3.4272233982290e-02; + q[11][18]=4.7794117647059e-01; q[11][19]=3.7500000000000e-01; + + q[12][13]=3.2500000000000e+00; q[12][14]=5.9976931949250e-01; + q[12][15]=2.1848739495798e+00; q[12][16]=3.6916835699797e+00; + q[12][17]=1.6247577591604e-01; q[12][18]=1.1508700794053e-01; + q[12][19]=9.0588235294118e+00; + + q[13][14]=3.9359861591695e-01; q[13][15]=1.6386554621849e+00; + q[13][16]=4.9442190669371e-01; q[13][17]=2.8676470588235e+00; + q[13][18]=2.4852941176471e+01; q[13][19]=4.4117647058824e-01; + + q[14][15]=8.6431043005437e+00; q[14][16]=2.8308077795013e+00; + q[14][17]=3.5840244687362e-02; q[14][18]=4.3804743506776e-02; + q[14][19]=1.7301038062284e+00; + + q[15][16]=1.9663865546218e+01; q[15][17]=2.7857142857143e+00; + q[15][18]=1.2016806722689e+00; q[15][19]=1.0840336134454e+00; + + q[16][17]=4.2019597219666e-02; q[16][18]=1.5162271805274e+00; + q[16][19]=5.6592292089249e+00; + + q[17][18]=2.2941176470588e+00; q[17][19]=1.2654363316538e-01; + + q[18][19]=1.0000000000000e+00; + + + f[0] = 0.087; f[1] = 0.041; f[2] = 0.040; f[3] = 0.047; + f[4] = 0.033; f[5] = 0.038; f[6] = 0.05; f[7] = 0.089; + f[8] = 0.034; f[9] = 0.037; f[10] = 0.085; f[11] = 0.08; + f[12] = 0.015; f[13] = 0.04; f[14] = 0.051; f[15] = 0.07; + f[16] = 0.058; f[17] = 0.01; f[18] = 0.03; f[19] = 0.065; +} + +void mtrevdata(dmatrix q, double *f) +{ + /* + * mtREV24 model of amino acid evolution + * (complete sequence data of mtDNA from 24 vertebrate species) + * Adachi, J. and Hasegawa, M. (1996) + */ + + q[0][1]=1.2199217606346e+01; q[0][2]=1.4182139942122e+01; + q[0][3]=9.2985091873208e+00; q[0][4]=3.1542792981957e+01; + q[0][5]=1.0025852846688e+00; q[0][6]=5.1418866803338e+00; + q[0][7]=6.3531246495131e+01; q[0][8]=7.3137132861715e+00; + q[0][9]=5.0782382656186e+01; q[0][10]=1.3399741808481e+01; + q[0][11]=4.4021672780560e+00; q[0][12]=7.4673480520104e+01; + q[0][13]=3.3513021631978e+00; q[0][14]=2.8582502221773e+01; + q[0][15]=2.0413623195312e+02; q[0][16]=2.5301305153906e+02; + q[0][17]=1.0000000000000e+00; q[0][18]=3.4084158197615e+00; + q[0][19]=1.0266468401249e+02; + + q[1][2]=6.9661274444534e+00; q[1][3]=1.0000000000000e+00; + q[1][4]=5.4384584796568e+01; q[1][5]=1.1631134513343e+02; + q[1][6]=1.0000000000000e+00; q[1][7]=1.2122831341194e+01; + q[1][8]=8.6961067087353e+01; q[1][9]=1.0000000000000e+00; + q[1][10]=8.1976829394538e+00; q[1][11]=7.4423215395318e+01; + q[1][12]=1.0000000000000e+00; q[1][13]=2.4659158338099e+00; + q[1][14]=1.2439947713615e+01; q[1][15]=3.1791814866372e+00; + q[1][16]=1.0935327216119e+00; q[1][17]=1.1550775790126e+01; + q[1][18]=1.0000000000000e+00; q[1][19]=4.0211417480338e+00; + + q[2][3]=4.1809325468160e+02; q[2][4]=3.1020979842967e+01; + q[2][5]=9.1349622725361e+01; q[2][6]=3.3185663516310e+01; + q[2][7]=2.8052324651124e+01; q[2][8]=2.6112087577885e+02; + q[2][9]=1.4261453863336e+01; q[2][10]=7.9775653461977e+00; + q[2][11]=3.2036829276162e+02; q[2][12]=3.4424354918739e+01; + q[2][13]=7.9996445145608e+00; q[2][14]=3.8586541461044e+01; + q[2][15]=2.6020426225852e+02; q[2][16]=1.2550758780474e+02; + q[2][17]=5.6207759736659e+00; q[2][18]=1.0071406219571e+02; + q[2][19]=1.0000000000000e+00; + + q[3][4]=1.0000000000000e+00; q[3][5]=2.9097352675564e+01; + q[3][6]=3.0713149855302e+02; q[3][7]=2.9877072751897e+01; + q[3][8]=5.9995408885817e+01; q[3][9]=2.2827096245105e+00; + q[3][10]=1.0000000000000e+00; q[3][11]=1.2183938185384e+00; + q[3][12]=1.0000000000000e+00; q[3][13]=2.6221929413096e+00; + q[3][14]=7.0708004204733e+00; q[3][15]=3.6327934317139e+01; + q[3][16]=1.4743408713748e+01; q[3][17]=1.0453246057102e+01; + q[3][18]=1.1165627147496e+01; q[3][19]=1.0000000000000e+00; + + q[4][5]=3.9599394038972e+01; q[4][6]=1.0000000000000e+00; + q[4][7]=1.6163581056674e+01; q[4][8]=7.4467985406234e+01; + q[4][9]=3.3018175376623e+01; q[4][10]=1.3500725995091e+01; + q[4][11]=1.0000000000000e+00; q[4][12]=3.2504095376923e+00; + q[4][13]=3.7264767083096e+01; q[4][14]=1.6454136037822e+01; + q[4][15]=1.4581783243113e+02; q[4][16]=9.4720031458442e+01; + q[4][17]=1.7684087896962e+01; q[4][18]=1.3409157685926e+02; + q[4][19]=1.0000000000000e+00; + + q[5][6]=1.6503249008836e+02; q[5][7]=3.5530760735494e+00; + q[5][8]=3.0652523140859e+02; q[5][9]=4.3905393139325e+00; + q[5][10]=2.0895470525345e+01; q[5][11]=2.4504076430724e+02; + q[5][12]=2.4931300477797e+01; q[5][13]=1.0059428264289e+01; + q[5][14]=7.2256314165467e+01; q[5][15]=2.8480937892158e+01; + q[5][16]=4.9962974409828e+01; q[5][17]=1.0000000000000e+00; + q[5][18]=2.0430790980529e+01; q[5][19]=9.9986289000676e+00; + + q[6][7]=1.4884496769963e+01; q[6][8]=2.5853576435567e+01; + q[6][9]=1.7418201388328e+00; q[6][10]=1.0000000000000e+00; + q[6][11]=1.6519126809071e+02; q[6][12]=1.0000000000000e+00; + q[6][13]=1.4067850525292e+00; q[6][14]=6.7547121641947e+00; + q[6][15]=2.8794794140840e+01; q[6][16]=7.8001372062558e+00; + q[6][17]=1.0000000000000e+00; q[6][18]=6.9067239183061e+00; + q[6][19]=1.1127702362585e+01; + + q[7][8]=1.0000000000000e+00; q[7][9]=3.1466649021550e+00; + q[7][10]=1.2699794194865e+00; q[7][11]=1.1962111069278e+01; + q[7][12]=1.0000000000000e+00; q[7][13]=1.0000000000000e+00; + q[7][14]=1.0000000000000e+00; q[7][15]=6.6277950574411e+01; + q[7][16]=5.8800079133028e+00; q[7][17]=5.7494182626674e+00; + q[7][18]=1.6887657206208e+00; q[7][19]=1.3320553471351e+00; + + q[8][9]=6.4536986087271e+00; q[8][10]=6.0472584534958e+00; + q[8][11]=6.7197196398961e+01; q[8][12]=6.2977633277779e+00; + q[8][13]=2.5347805183364e+01; q[8][14]=3.2089868698728e+01; + q[8][15]=4.0766987134407e+01; q[8][16]=2.3570850628539e+01; + q[8][17]=3.7286635325194e+00; q[8][18]=3.5270764890474e+02; + q[8][19]=1.0000000000000e+00; + + q[9][10]=1.7320653206333e+02; q[9][11]=1.0298655619743e+01; + q[9][12]=2.7262244199514e+02; q[9][13]=4.4561065036310e+01; + q[9][14]=1.0856482766156e+01; q[9][15]=2.5107659603898e+01; + q[9][16]=1.9391167162525e+02; q[9][17]=1.0000000000000e+00; + q[9][18]=1.3161329199391e+01; q[9][19]=6.4365086389428e+02; + + q[10][11]=7.8314019154706e+00; q[10][12]=2.8290920517725e+02; + q[10][13]=1.1371735519833e+02; q[10][14]=2.1105885757279e+01; + q[10][15]=3.8741359395934e+01; q[10][16]=6.6524559321657e+01; + q[10][17]=1.7071378554833e+01; q[10][18]=2.3234516108847e+01; + q[10][19]=4.8247261078055e+01; + + q[11][12]=4.8092094826036e+01; q[11][13]=3.3887559483420e+00; + q[11][14]=2.6368577564199e+01; q[11][15]=5.5679895711418e+01; + q[11][16]=7.1750284708933e+01; q[11][17]=1.2631893872825e+01; + q[11][18]=2.6932728996777e+01; q[11][19]=1.0000000000000e+00; + + q[12][13]=4.7798798034572e+01; q[12][14]=9.9165053447429e+00; + q[12][15]=5.8505442466161e+01; q[12][16]=2.7798190504760e+02; + q[12][17]=1.1427000119701e+01; q[12][18]=2.1029990530586e+01; + q[12][19]=2.0397078683768e+02; + + q[13][14]=9.1089574817139e+00; q[13][15]=3.3835737720574e+01; + q[13][16]=1.7815549567056e+01; q[13][17]=4.1272404968214e+00; + q[13][18]=2.4504156395152e+02; q[13][19]=3.3435675442163e+00; + + q[14][15]=8.9421193040709e+01; q[14][16]=6.7485067008375e+01; + q[14][17]=2.2161693733113e+00; q[14][18]=8.5338209390745e+00; + q[14][19]=4.3342126659660e+00; + + q[15][16]=3.1432036618746e+02; q[15][17]=2.0305343047059e+01; + q[15][18]=3.4167877957799e+01; q[15][19]=1.0000000000000e+00; + + q[16][17]=5.2559565123081e+00; q[16][18]=2.0382362288681e+01; + q[16][19]=1.0765527137500e+02; + + q[17][18]=1.3814733274637e+01; q[17][19]=2.8259139240676e+00; + + q[18][19]=1.0000000000000e+00; + + + /* amino acid frequencies */ + f[0]=0.072; f[1]=0.019; f[2]=0.039; f[3]=0.019; f[4]=0.006; + f[5]=0.025; f[6]=0.024; f[7]=0.056; f[8]=0.028; f[9]=0.088; + f[10]=0.168; f[11]=0.023; f[12]=0.054; f[13]=0.061; f[14]=0.054; + f[15]=0.072; f[16]=0.086; f[17]=0.029; f[18]=0.033; f[19]=0.043; +} + +void blosum62data(dmatrix q, double *f) +{ + /* + * BLOSUM62 model of amino acid evolution + * + * S. Henikoff and J. G. Henikoff. 1992. PNAS USA 89:10915-10919. + * + */ + + q[0][1]=7.3579038969751e-01; q[0][2]=4.8539105546575e-01; + q[0][3]=5.4316182089867e-01; q[0][4]=1.4599953104700e+00; + q[0][5]=1.1997057046020e+00; q[0][6]=1.1709490427999e+00; + q[0][7]=1.9558835749595e+00; q[0][8]=7.1624144499779e-01; + q[0][9]=6.0589900368677e-01; q[0][10]=8.0001653051838e-01; + q[0][11]=1.2952012667833e+00; q[0][12]=1.2537582666635e+00; + q[0][13]=4.9296467974759e-01; q[0][14]=1.1732759009239e+00; + q[0][15]=4.3250926870566e+00; q[0][16]=1.7291780194850e+00; + q[0][17]=4.6583936772479e-01; q[0][18]=7.1820669758623e-01; + q[0][19]=2.1877745220045e+00; + + q[1][2]=1.2974467051337e+00; q[1][3]=5.0096440855513e-01; + q[1][4]=2.2782657420895e-01; q[1][5]=3.0208336100636e+00; + q[1][6]=1.3605741904203e+00; q[1][7]=4.1876330851753e-01; + q[1][8]=1.4561411663360e+00; q[1][9]=2.3203644514174e-01; + q[1][10]=6.2271166969249e-01; q[1][11]=5.4111151414889e+00; + q[1][12]=9.8369298745695e-01; q[1][13]=3.7164469320875e-01; + q[1][14]=4.4813366171831e-01; q[1][15]=1.1227831042096e+00; + q[1][16]=9.1466595456337e-01; q[1][17]=4.2638231012175e-01; + q[1][18]=7.2051744121611e-01; q[1][19]=4.3838834377202e-01; + + q[2][3]=3.1801000482161e+00; q[2][4]=3.9735894989702e-01; + q[2][5]=1.8392161469920e+00; q[2][6]=1.2404885086396e+00; + q[2][7]=1.3558723444845e+00; q[2][8]=2.4145014342081e+00; + q[2][9]=2.8301732627800e-01; q[2][10]=2.1188815961519e-01; + q[2][11]=1.5931370434574e+00; q[2][12]=6.4844127878707e-01; + q[2][13]=3.5486124922252e-01; q[2][14]=4.9488704370192e-01; + q[2][15]=2.9041016564560e+00; q[2][16]=1.8981736345332e+00; + q[2][17]=1.9148204624678e-01; q[2][18]=5.3822251903674e-01; + q[2][19]=3.1285879799342e-01; + + q[3][4]=2.4083661480204e-01; q[3][5]=1.1909457033960e+00; + q[3][6]=3.7616252083685e+00; q[3][7]=7.9847324896839e-01; + q[3][8]=7.7814266402188e-01; q[3][9]=4.1855573246161e-01; + q[3][10]=2.1813157759360e-01; q[3][11]=1.0324479249521e+00; + q[3][12]=2.2262189795786e-01; q[3][13]=2.8173069420651e-01; + q[3][14]=7.3062827299842e-01; q[3][15]=1.5827541420653e+00; + q[3][16]=9.3418750943056e-01; q[3][17]=1.4534504627853e-01; + q[3][18]=2.6142220896504e-01; q[3][19]=2.5812928941763e-01; + + q[4][5]=3.2980150463028e-01; q[4][6]=1.4074889181440e-01; + q[4][7]=4.1820319228376e-01; q[4][8]=3.5405810983129e-01; + q[4][9]=7.7489402279418e-01; q[4][10]=8.3184264014158e-01; + q[4][11]=2.8507880090648e-01; q[4][12]=7.6768882347954e-01; + q[4][13]=4.4133747118660e-01; q[4][14]=3.5600849876863e-01; + q[4][15]=1.1971884150942e+00; q[4][16]=1.1198313585160e+00; + q[4][17]=5.2766441887169e-01; q[4][18]=4.7023773369610e-01; + q[4][19]=1.1163524786062e+00; + + q[5][6]=5.5289191779282e+00; q[5][7]=6.0984630538281e-01; + q[5][8]=2.4353411311401e+00; q[5][9]=2.3620245120365e-01; + q[5][10]=5.8073709318144e-01; q[5][11]=3.9452776745146e+00; + q[5][12]=2.4948960771127e+00; q[5][13]=1.4435695975031e-01; + q[5][14]=8.5857057567418e-01; q[5][15]=1.9348709245965e+00; + q[5][16]=1.2774802945956e+00; q[5][17]=7.5865380864172e-01; + q[5][18]=9.5898974285014e-01; q[5][19]=5.3078579012486e-01; + + q[6][7]=4.2357999217628e-01; q[6][8]=1.6268910569817e+00; + q[6][9]=1.8684804693170e-01; q[6][10]=3.7262517508685e-01; + q[6][11]=2.8024271516787e+00; q[6][12]=5.5541539747043e-01; + q[6][13]=2.9140908416530e-01; q[6][14]=9.2656393484598e-01; + q[6][15]=1.7698932389373e+00; q[6][16]=1.0710972360073e+00; + q[6][17]=4.0763564893830e-01; q[6][18]=5.9671930034577e-01; + q[6][19]=5.2425384633796e-01; + + q[7][8]=5.3985912495418e-01; q[7][9]=1.8929629237636e-01; + q[7][10]=2.1772115923623e-01; q[7][11]=7.5204244030271e-01; + q[7][12]=4.5943617357855e-01; q[7][13]=3.6816646445253e-01; + q[7][14]=5.0408659952683e-01; q[7][15]=1.5093262532236e+00; + q[7][16]=6.4143601140497e-01; q[7][17]=5.0835892463812e-01; + q[7][18]=3.0805573703500e-01; q[7][19]=2.5334079019018e-01; + + q[8][9]=2.5271844788492e-01; q[8][10]=3.4807220979697e-01; + q[8][11]=1.0225070358890e+00; q[8][12]=9.8431152535870e-01; + q[8][13]=7.1453370392764e-01; q[8][14]=5.2700733915060e-01; + q[8][15]=1.1170297629105e+00; q[8][16]=5.8540709022472e-01; + q[8][17]=3.0124860078016e-01; q[8][18]=4.2189539693890e+00; + q[8][19]=2.0155597175031e-01; + + q[9][10]=3.8909637733035e+00; q[9][11]=4.0619358664202e-01; + q[9][12]=3.3647977631042e+00; q[9][13]=1.5173593259539e+00; + q[9][14]=3.8835540920564e-01; q[9][15]=3.5754441245967e-01; + q[9][16]=1.1790911972601e+00; q[9][17]=3.4198578754023e-01; + q[9][18]=6.7461709322842e-01; q[9][19]=8.3118394054582e+00; + + q[10][11]=4.4557027426059e-01; q[10][12]=6.0305593795716e+00; + q[10][13]=2.0648397032375e+00; q[10][14]=3.7455568747097e-01; + q[10][15]=3.5296918452729e-01; q[10][16]=9.1525985769421e-01; + q[10][17]=6.9147463459998e-01; q[10][18]=8.1124585632307e-01; + q[10][19]=2.2314056889131e+00; + + q[11][12]=1.0730611843319e+00; q[11][13]=2.6692475051102e-01; + q[11][14]=1.0473834507215e+00; q[11][15]=1.7521659178195e+00; + q[11][16]=1.3038752007987e+00; q[11][17]=3.3224304063396e-01; + q[11][18]=7.1799348690032e-01; q[11][19]=4.9813847530407e-01; + + q[12][13]=1.7738551688305e+00; q[12][14]=4.5412362510273e-01; + q[12][15]=9.1872341574605e-01; q[12][16]=1.4885480537218e+00; + q[12][17]=8.8810109815193e-01; q[12][18]=9.5168216224591e-01; + q[12][19]=2.5758507553153e+00; + + q[13][14]=2.3359790962888e-01; q[13][15]=5.4002764482413e-01; + q[13][16]=4.8820611879305e-01; q[13][17]=2.0743248934965e+00; + q[13][18]=6.7472604308008e+00; q[13][19]=8.3811961017754e-01; + + q[14][15]=1.1691295777157e+00; q[14][16]=1.0054516831488e+00; + q[14][17]=2.5221483002727e-01; q[14][18]=3.6940531935451e-01; + q[14][19]=4.9690841067567e-01; + + q[15][16]=5.1515562922704e+00; q[15][17]=3.8792562209837e-01; + q[15][18]=7.9675152076106e-01; q[15][19]=5.6192545744165e-01; + + q[16][17]=5.1312812689059e-01; q[16][18]=8.0101024319939e-01; + q[16][19]=2.2530740511763e+00; + + q[17][18]=4.0544190065580e+00; q[17][19]=2.6650873142646e-01; + + q[18][19]=1.0000000000000e+00; + + + f[0]=0.074; f[1]=0.052; f[2]=0.045; f[3]=0.054; + f[4]=0.025; f[5]=0.034; f[6]=0.054; f[7]=0.074; + f[8]=0.026; f[9]=0.068; f[10]=0.099; f[11]=0.058; + f[12]=0.025; f[13]=0.047; f[14]=0.039; f[15]=0.057; + f[16]=0.051; f[17]=0.013; f[18]=0.032; f[19]=0.073; +} + + + +void vtmvdata(dmatrix q, double *f) +{ + /* + * variable time (VT) model for amino acid evolution + * Mueller, T. and Vingron, M. (1999) + * "Modeling Amino Acid Replacement" + * Journal of Comp. Biology + */ + +/* amino acid frequencies */ + +f[0]=0.078837 ; +f[1]=0.051238 ; +f[2]=0.042313 ; +f[3]=0.053066 ; +f[4]=0.015175 ; +f[5]=0.036713 ; +f[6]=0.061924 ; +f[7]=0.070852 ; +f[8]=0.023082 ; +f[9]=0.062056 ; +f[10]=0.096371 ; +f[11]=0.057324 ; +f[12]=0.023771 ; +f[13]=0.043296 ; +f[14]=0.043911 ; +f[15]=0.063403 ; +f[16]=0.055897 ; +f[17]=0.013272 ; +f[18]=0.034399 ; +f[19]=0.073101 ; + + +q[0][1] = 0.233108 ; +q[0][2] = 0.199097 ; +q[0][3] = 0.265145 ; +q[0][4] = 0.227333 ; +q[0][5] = 0.310084 ; +q[0][6] = 0.567957 ; +q[0][7] = 0.876213 ; +q[0][8] = 0.078692 ; +q[0][9] = 0.222972 ; +q[0][10] = 0.424630 ; +q[0][11] = 0.393245 ; +q[0][12] = 0.211550 ; +q[0][13] = 0.116646 ; +q[0][14] = 0.399143 ; +q[0][15] = 1.817198 ; +q[0][16] = 0.877877 ; +q[0][17] = 0.030309 ; +q[0][18] = 0.087061 ; +q[0][19] = 1.230985 ; + +q[1][2] = 0.210797 ; +q[1][3] = 0.105191 ; +q[1][4] = 0.031726 ; +q[1][5] = 0.493763 ; +q[1][6] = 0.255240 ; +q[1][7] = 0.156945 ; +q[1][8] = 0.213164 ; +q[1][9] = 0.081510 ; +q[1][10] = 0.192364 ; +q[1][11] = 1.755838 ; +q[1][12] = 0.087930 ; +q[1][13] = 0.042569 ; +q[1][14] = 0.128480 ; +q[1][15] = 0.292327 ; +q[1][16] = 0.204109 ; +q[1][17] = 0.046417 ; +q[1][18] = 0.097010 ; +q[1][19] = 0.113146 ; + +q[2][3] = 0.883422 ; +q[2][4] = 0.027495 ; +q[2][5] = 0.275700 ; +q[2][6] = 0.270417 ; +q[2][7] = 0.362028 ; +q[2][8] = 0.290006 ; +q[2][9] = 0.087225 ; +q[2][10] = 0.069245 ; +q[2][11] = 0.503060 ; +q[2][12] = 0.057420 ; +q[2][13] = 0.039769 ; +q[2][14] = 0.083956 ; +q[2][15] = 0.847049 ; +q[2][16] = 0.471268 ; +q[2][17] = 0.010459 ; +q[2][18] = 0.093268 ; +q[2][19] = 0.049824 ; + +q[3][4] = 0.010313 ; +q[3][5] = 0.205842 ; +q[3][6] = 1.599461 ; +q[3][7] = 0.311718 ; +q[3][8] = 0.134252 ; +q[3][9] = 0.011720 ; +q[3][10] = 0.060863 ; +q[3][11] = 0.261101 ; +q[3][12] = 0.012182 ; +q[3][13] = 0.016577 ; +q[3][14] = 0.160063 ; +q[3][15] = 0.461519 ; +q[3][16] = 0.178197 ; +q[3][17] = 0.011393 ; +q[3][18] = 0.051664 ; +q[3][19] = 0.048769 ; + +q[4][5] = 0.004315 ; +q[4][6] = 0.005321 ; +q[4][7] = 0.050876 ; +q[4][8] = 0.016695 ; +q[4][9] = 0.046398 ; +q[4][10] = 0.091709 ; +q[4][11] = 0.004067 ; +q[4][12] = 0.023690 ; +q[4][13] = 0.051127 ; +q[4][14] = 0.011137 ; +q[4][15] = 0.175270 ; +q[4][16] = 0.079511 ; +q[4][17] = 0.007732 ; +q[4][18] = 0.042823 ; +q[4][19] = 0.163831 ; + +q[5][6] = 0.960976 ; +q[5][7] = 0.128660 ; +q[5][8] = 0.315521 ; +q[5][9] = 0.054602 ; +q[5][10] = 0.243530 ; +q[5][11] = 0.738208 ; +q[5][12] = 0.120801 ; +q[5][13] = 0.026235 ; +q[5][14] = 0.156570 ; +q[5][15] = 0.358017 ; +q[5][16] = 0.248992 ; +q[5][17] = 0.021248 ; +q[5][18] = 0.062544 ; +q[5][19] = 0.112027 ; + +q[6][7] = 0.250447 ; +q[6][8] = 0.104458 ; +q[6][9] = 0.046589 ; +q[6][10] = 0.151924 ; +q[6][11] = 0.888630 ; +q[6][12] = 0.058643 ; +q[6][13] = 0.028168 ; +q[6][14] = 0.205134 ; +q[6][15] = 0.406035 ; +q[6][16] = 0.321028 ; +q[6][17] = 0.018844 ; +q[6][18] = 0.055200 ; +q[6][19] = 0.205868 ; + +q[7][8] = 0.058131 ; +q[7][9] = 0.051089 ; +q[7][10] = 0.087056 ; +q[7][11] = 0.193243 ; +q[7][12] = 0.046560 ; +q[7][13] = 0.050143 ; +q[7][14] = 0.124492 ; +q[7][15] = 0.612843 ; +q[7][16] = 0.136266 ; +q[7][17] = 0.023990 ; +q[7][18] = 0.037568 ; +q[7][19] = 0.082579 ; + +q[8][9] = 0.020039 ; +q[8][10] = 0.103552 ; +q[8][11] = 0.153323 ; +q[8][12] = 0.021157 ; +q[8][13] = 0.079807 ; +q[8][14] = 0.078892 ; +q[8][15] = 0.167406 ; +q[8][16] = 0.101117 ; +q[8][17] = 0.020009 ; +q[8][18] = 0.286027 ; +q[8][19] = 0.068575 ; + +q[9][10] = 2.089890 ; +q[9][11] = 0.093181 ; +q[9][12] = 0.493845 ; +q[9][13] = 0.321020 ; +q[9][14] = 0.054797 ; +q[9][15] = 0.081567 ; +q[9][16] = 0.376588 ; +q[9][17] = 0.034954 ; +q[9][18] = 0.086237 ; +q[9][19] = 3.654430 ; + +q[10][11] = 0.201204 ; +q[10][12] = 1.105667 ; +q[10][13] = 0.946499 ; +q[10][14] = 0.169784 ; +q[10][15] = 0.214977 ; +q[10][16] = 0.243227 ; +q[10][17] = 0.083439 ; +q[10][18] = 0.189842 ; +q[10][19] = 1.337571 ; + +q[11][12] = 0.096474 ; +q[11][13] = 0.038261 ; +q[11][14] = 0.212302 ; +q[11][15] = 0.400072 ; +q[11][16] = 0.446646 ; +q[11][17] = 0.023321 ; +q[11][18] = 0.068689 ; +q[11][19] = 0.144587 ; + +q[12][13] = 0.173052 ; +q[12][14] = 0.010363 ; +q[12][15] = 0.090515 ; +q[12][16] = 0.184609 ; +q[12][17] = 0.022019 ; +q[12][18] = 0.073223 ; +q[12][19] = 0.307309 ; + +q[13][14] = 0.042564 ; +q[13][15] = 0.138119 ; +q[13][16] = 0.085870 ; +q[13][17] = 0.128050 ; +q[13][18] = 0.898663 ; +q[13][19] = 0.247329 ; + +q[14][15] = 0.430431 ; +q[14][16] = 0.207143 ; +q[14][17] = 0.014584 ; +q[14][18] = 0.032043 ; +q[14][19] = 0.129315 ; + +q[15][16] = 1.767766 ; +q[15][17] = 0.035933 ; +q[15][18] = 0.121979 ; +q[15][19] = 0.127700 ; + +q[16][17] = 0.020437 ; +q[16][18] = 0.094617 ; +q[16][19] = 0.740372 ; + +q[17][18] = 0.124746 ; +q[17][19] = 0.022134 ; + +q[18][19] = 0.125733 ; + +} + + +/* + * WAG matrix: Simon Whelan and Nick Goldman + * + */ + +void wagdata(dmatrix q, double *f) +{ + /* + * WAG model of amino acid evolution + * + * S. Whelan and N. Goldman. 2000. In prep. + * + * presented at the MASAMB-X workshop in Cambridge + * + * Whelan, S., and N. Goldman. 2000. + * The WAG amino acid rate matrix. + * Manuscript in prep. + */ + + /* Q matrix */ + q[0][1] = 0.610810; q[0][2] = 0.569079; + q[0][3] = 0.821500; q[0][4] = 1.141050; + q[0][5] = 1.011980; q[0][6] = 1.756410; + q[0][7] = 1.572160; q[0][8] = 0.354813; + q[0][9] = 0.219023; q[0][10] = 0.443935; + q[0][11] = 1.005440; q[0][12] = 0.989475; + q[0][13] = 0.233492; q[0][14] = 1.594890; + q[0][15] = 3.733380; q[0][16] = 2.349220; + q[0][17] = 0.125227; q[0][18] = 0.268987; + q[0][19] = 2.221870; + + q[1][2] = 0.711690; q[1][3] = 0.165074; + q[1][4] = 0.585809; q[1][5] = 3.360330; + q[1][6] = 0.488649; q[1][7] = 0.650469; + q[1][8] = 2.362040; q[1][9] = 0.206722; + q[1][10] = 0.551450; q[1][11] = 5.925170; + q[1][12] = 0.758446; q[1][13] = 0.116821; + q[1][14] = 0.753467; q[1][15] = 1.357640; + q[1][16] = 0.613776; q[1][17] = 1.294610; + q[1][18] = 0.423612; q[1][19] = 0.280336; + + q[2][3] = 6.013660; q[2][4] = 0.296524; + q[2][5] = 1.716740; q[2][6] = 1.056790; + q[2][7] = 1.253910; q[2][8] = 4.378930; + q[2][9] = 0.615636; q[2][10] = 0.147156; + q[2][11] = 3.334390; q[2][12] = 0.224747; + q[2][13] = 0.110793; q[2][14] = 0.217538; + q[2][15] = 4.394450; q[2][16] = 2.257930; + q[2][17] = 0.078463; q[2][18] = 1.208560; + q[2][19] = 0.221176; + + q[3][4] = 0.033379; q[3][5] = 0.691268; + q[3][6] = 6.833400; q[3][7] = 0.961142; + q[3][8] = 1.032910; q[3][9] = 0.043523; + q[3][10] = 0.093930; q[3][11] = 0.533362; + q[3][12] = 0.116813; q[3][13] = 0.052004; + q[3][14] = 0.472601; q[3][15] = 1.192810; + q[3][16] = 0.417372; q[3][17] = 0.146348; + q[3][18] = 0.363243; q[3][19] = 0.169417; + + q[4][5] = 0.109261; q[4][6] = 0.023920; + q[4][7] = 0.341086; q[4][8] = 0.275403; + q[4][9] = 0.189890; q[4][10] = 0.428414; + q[4][11] = 0.083649; q[4][12] = 0.437393; + q[4][13] = 0.441300; q[4][14] = 0.122303; + q[4][15] = 1.560590; q[4][16] = 0.570186; + q[4][17] = 0.795736; q[4][18] = 0.604634; + q[4][19] = 1.114570; + + q[5][6] = 6.048790; q[5][7] = 0.366510; + q[5][8] = 4.749460; q[5][9] = 0.131046; + q[5][10] = 0.964886; q[5][11] = 4.308310; + q[5][12] = 1.705070; q[5][13] = 0.110744; + q[5][14] = 1.036370; q[5][15] = 1.141210; + q[5][16] = 0.954144; q[5][17] = 0.243615; + q[5][18] = 0.252457; q[5][19] = 0.333890; + + q[6][7] = 0.630832; q[6][8] = 0.635025; + q[6][9] = 0.141320; q[6][10] = 0.172579; + q[6][11] = 2.867580; q[6][12] = 0.353912; + q[6][13] = 0.092310; q[6][14] = 0.755791; + q[6][15] = 0.782467; q[6][16] = 0.914814; + q[6][17] = 0.172682; q[6][18] = 0.217549; + q[6][19] = 0.655045; + + q[7][8] = 0.276379; q[7][9] = 0.034151; + q[7][10] = 0.068651; q[7][11] = 0.415992; + q[7][12] = 0.194220; q[7][13] = 0.055288; + q[7][14] = 0.273149; q[7][15] = 1.486700; + q[7][16] = 0.251477; q[7][17] = 0.374321; + q[7][18] = 0.114187; q[7][19] = 0.209108; + + q[8][9] = 0.152215; q[8][10] = 0.555096; + q[8][11] = 0.992083; q[8][12] = 0.450867; + q[8][13] = 0.756080; q[8][14] = 0.771387; + q[8][15] = 0.822459; q[8][16] = 0.525511; + q[8][17] = 0.289998; q[8][18] = 4.290350; + q[8][19] = 0.131869; + + q[9][10] = 3.517820; q[9][11] = 0.360574; + q[9][12] = 4.714220; q[9][13] = 1.177640; + q[9][14] = 0.111502; q[9][15] = 0.353443; + q[9][16] = 1.615050; q[9][17] = 0.234326; + q[9][18] = 0.468951; q[9][19] = 8.659740; + + q[10][11] = 0.287583; q[10][12] = 5.375250; + q[10][13] = 2.348200; q[10][14] = 0.462018; + q[10][15] = 0.382421; q[10][16] = 0.364222; + q[10][17] = 0.740259; q[10][18] = 0.443205; + q[10][19] = 1.997370; + + q[11][12] = 1.032220; q[11][13] = 0.098843; + q[11][14] = 0.619503; q[11][15] = 1.073780; + q[11][16] = 1.537920; q[11][17] = 0.152232; + q[11][18] = 0.147411; q[11][19] = 0.342012; + + q[12][13] = 1.320870; q[12][14] = 0.194864; + q[12][15] = 0.556353; q[12][16] = 1.681970; + q[12][17] = 0.570369; q[12][18] = 0.473810; + q[12][19] = 2.282020; + + q[13][14] = 0.179896; q[13][15] = 0.606814; + q[13][16] = 0.191467; q[13][17] = 1.699780; + q[13][18] = 7.154480; q[13][19] = 0.725096; + + q[14][15] = 1.786490; q[14][16] = 0.885349; + q[14][17] = 0.156619; q[14][18] = 0.239607; + q[14][19] = 0.351250; + + q[15][16] = 4.847130; q[15][17] = 0.578784; + q[15][18] = 0.872519; q[15][19] = 0.258861; + + q[16][17] = 0.126678; q[16][18] = 0.325490; + q[16][19] = 1.547670; + + q[17][18] = 2.763540; q[17][19] = 0.409817; + + q[18][19] = 0.347826; + + /* original frequencies */ + f[ 0] = 0.0866; + f[ 1] = 0.0440; + f[ 2] = 0.0391; + f[ 3] = 0.0570; + f[ 4] = 0.0193; + f[ 5] = 0.0367; + f[ 6] = 0.0581; + f[ 7] = 0.0833; + f[ 8] = 0.0244; + f[ 9] = 0.0485; + f[10] = 0.0862; + f[11] = 0.0620; + f[12] = 0.0195; + f[13] = 0.0384; + f[14] = 0.0458; + f[15] = 0.0695; + f[16] = 0.0610; + f[17] = 0.0144; + f[18] = 0.0353; + f[19] = 0.0709; +} + +void cprev45data(dmatrix q, double *f) +{ + /* cpREV45 model of amino acid evolution + * Adachi, J., P.J. Waddell, W. Martin, and M. Hasegawa. 2000. + * J. Mol. Evol. 50:348-358 + * (reconstructed from 45 chloroplast genomes) + */ + q[0][1] = 105; q[0][2] = 227; + q[0][3] = 175; q[0][4] = 669; + q[0][5] = 157; q[0][6] = 499; + q[0][7] = 665; q[0][8] = 66; + q[0][9] = 145; q[0][10] = 197; + q[0][11] = 236; q[0][12] = 185; + q[0][13] = 68; q[0][14] = 490; + q[0][15] = 2440; q[0][16] = 1340; + q[0][17] = 14; q[0][18] = 56; + q[0][19] = 968; + + q[1][2] = 357; q[1][3] = 43; + q[1][4] = 823; q[1][5] = 1745; + q[1][6] = 152; q[1][7] = 243; + q[1][8] = 715; q[1][9] = 136; + q[1][10] = 203; q[1][11] = 4482; + q[1][12] = 125; q[1][13] = 53; + q[1][14] = 87; q[1][15] = 385; + q[1][16] = 314; q[1][17] = 230; + q[1][18] = 323; q[1][19] = 92; + + q[2][3] = 4435; q[2][4] = 538; + q[2][5] = 768; q[2][6] = 1055; + q[2][7] = 653; q[2][8] = 1405; + q[2][9] = 168; q[2][10] = 113; + q[2][11] = 2430; q[2][12] = 61; + q[2][13] = 97; q[2][14] = 173; + q[2][15] = 2085; q[2][16] = 1393; + q[2][17] = 40; q[2][18] = 754; + q[2][19] = 83; + + q[3][4] = 10; q[3][5] = 400; + q[3][6] = 3691; q[3][7] = 431; + q[3][8] = 331; q[3][9] = 10; + q[3][10] = 10; q[3][11] = 412; + q[3][12] = 47; q[3][13] = 22; + q[3][14] = 170; q[3][15] = 590; + q[3][16] = 266; q[3][17] = 18; + q[3][18] = 281; q[3][19] = 75; + + q[4][5] = 10; q[4][6] = 10; + q[4][7] = 303; q[4][8] = 441; + q[4][9] = 280; q[4][10] = 396; + q[4][11] = 48; q[4][12] = 159; + q[4][13] = 726; q[4][14] = 285; + q[4][15] = 2331; q[4][16] = 576; + q[4][17] = 435; q[4][18] = 1466; + q[4][19] = 592; + + q[5][6] = 3122; q[5][7] = 133; + q[5][8] = 1269; q[5][9] = 92; + q[5][10] = 286; q[5][11] = 3313; + q[5][12] = 202; q[5][13] = 10; + q[5][14] = 323; q[5][15] = 396; + q[5][16] = 241; q[5][17] = 53; + q[5][18] = 391; q[5][19] = 54; + + q[6][7] = 379; q[6][8] = 162; + q[6][9] = 148; q[6][10] = 82; + q[6][11] = 2629; q[6][12] = 113; + q[6][13] = 145; q[6][14] = 185; + q[6][15] = 568; q[6][16] = 369; + q[6][17] = 63; q[6][18] = 142; + q[6][19] = 200; + + q[7][8] = 19; q[7][9] = 40; + q[7][10] = 20; q[7][11] = 263; + q[7][12] = 21; q[7][13] = 25; + q[7][14] = 28; q[7][15] = 691; + q[7][16] = 92; q[7][17] = 82; + q[7][18] = 10; q[7][19] = 91; + + q[8][9] = 29; q[8][10] = 66; + q[8][11] = 305; q[8][12] = 10; + q[8][13] = 127; q[8][14] = 152; + q[8][15] = 303; q[8][16] = 32; + q[8][17] = 69; q[8][18] = 1971; + q[8][19] = 25; + + q[9][10] = 1745; q[9][11] = 345; + q[9][12] = 1772; q[9][13] = 454; + q[9][14] = 117; q[9][15] = 216; + q[9][16] = 1040; q[9][17] = 42; + q[9][18] = 89; q[9][19] = 4797; + + q[10][11] = 218; q[10][12] = 1351; + q[10][13] = 1268; q[10][14] = 219; + q[10][15] = 516; q[10][16] = 156; + q[10][17] = 159; q[10][18] = 189; + q[10][19] = 865; + + q[11][12] = 193; q[11][13] = 72; + q[11][14] = 302; q[11][15] = 868; + q[11][16] = 918; q[11][17] = 10; + q[11][18] = 247; q[11][19] = 249; + + q[12][13] = 327; q[12][14] = 100; + q[12][15] = 93; q[12][16] = 645; + q[12][17] = 86; q[12][18] = 215; + q[12][19] = 475; + + q[13][14] = 43; q[13][15] = 487; + q[13][16] = 148; q[13][17] = 468; + q[13][18] = 2370; q[13][19] = 317; + + q[14][15] = 1202; q[14][16] = 260; + q[14][17] = 49; q[14][18] = 97; + q[14][19] = 122; + + q[15][16] = 2151; q[15][17] = 73; + q[15][18] = 522; q[15][19] = 167; + + q[16][17] = 29; q[16][18] = 71; + q[16][19] = 760; + + q[17][18] = 346; q[17][19] = 10; + + q[18][19] = 119; + + f[0] = 0.076; + f[1] = 0.062; + f[2] = 0.041; + f[3] = 0.037; + f[4] = 0.009; + f[5] = 0.038; + f[6] = 0.049; + f[7] = 0.084; + f[8] = 0.025; + f[9] = 0.081; + f[10] = 0.101; + f[11] = 0.050; + f[12] = 0.022; + f[13] = 0.051; + f[14] = 0.043; + f[15] = 0.062; + f[16] = 0.054; + f[17] = 0.018; + f[18] = 0.031; + f[19] = 0.066; +} + diff --git a/forester/archive/RIO/others/puzzle_dqo/src/outdist b/forester/archive/RIO/others/puzzle_dqo/src/outdist new file mode 100644 index 0000000..f5728a1 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/outdist @@ -0,0 +1,4 @@ +RECA_NEIMU 0.01095 +O86384/1-2 8.99866 +RECA_NEIPH 0.02202 + diff --git a/forester/archive/RIO/others/puzzle_dqo/src/ppuzzle.h b/forester/archive/RIO/others/puzzle_dqo/src/ppuzzle.h new file mode 100644 index 0000000..2007467 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/ppuzzle.h @@ -0,0 +1,274 @@ +/* + * ppuzzle.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef _PPUZZLE_ +#define _PPUZZLE_ + +#include "puzzle.h" +#include "util.h" +#include "ml.h" +#include "sched.h" + +extern int PP_IamSlave; +extern int PP_IamMaster; + +#ifdef PARALLEL +# ifdef SEQUENTIAL +# undef SEQUENTIAL +# endif +# define SEQUENTIAL 0 +# undef PARALLEL +# define PARALLEL 1 +# include "mpi.h" +#else +# ifdef SEQUENTIAL +# undef SEQUENTIAL +# endif +# define SEQUENTIAL 1 +# define PARALLEL 0 +# undef PVERBOSE +# undef PVERBOSE1 +# undef PVERBOSE2 +# undef PVERBOSE3 +#endif + +/* PVERBOSE3 includes PVERBOSE2 includes PVERBOSE1 */ +/* PVERBOSE1 is default (PVERBOSE) */ + +#ifdef PVERBOSE +# undef PVERBOSE1 +# define PVERBOSE1 +#endif +#ifdef PVERBOSE3 +# undef PVERBOSE2 +# define PVERBOSE2 +#endif +#ifdef PVERBOSE2 +# undef PVERBOSE1 +# define PVERBOSE1 +#endif + +#if PARALLEL +# define PP_DONE 0 /* Finished M->S */ +# define PP_SIZES 1 /* Array sizes needed M->S */ +# define PP_DATA 2 /* Data Arrays M->S */ + +# define PP_ALLQUARTS 3 /* All Quartets M->S */ + +# define PP_DOQUART 4 /* do 4Specs M->S */ +# define PP_DOQUARTX2 5 /* do 4Specs + X^2 M->S */ +# define PP_QUART 6 /* quartet back S->M */ +# define PP_QUARTX2 7 /* quartet + X^2 back S->M */ + +# define PP_DOQUARTBLOCKSPECS 8 /* do block Specs M->S */ +# define PP_DOQUARTBLOCK 9 /* do block of Quarts M->S */ +# define PP_QUARTBLOCKSPECS 10 /* block Specs S->M */ +# define PP_QUARTBLOCK 11 /* block of Quarts S->M */ + +# define PP_DOPUZZLE 12 /* do Puzzling step M->S */ +# define PP_PUZZLE 13 /* Puzzling tree back S->M */ +# define PP_DOPUZZLEBLOCK 14 /* do Puzzling block M->S */ +# define PP_DOPUZZLEBLOCKSPECS 15 /* do Puzzling block M->S */ +# define PP_PUZZLEBLOCK 16 /* Puzzling block S->M */ +# define PP_PUZZLEBLOCKSPECS 17 /* Puzzling block S->M */ + +# define PP_STATS 18 /* Slave Statistics S->M */ + +# define PP_WAIT 18 /* waiting for work S->M */ +# define PP_TEST 100 /* testing */ + +# define PERMUTQUEUESIZE 100 +# define QUARTQUEUESIZE 100 + + extern int PP_IamMaster; + extern int PP_IamSlave; + extern int PP_Myid; + extern int PP_MyMaster; + extern int PP_NumProcs; + extern MPI_Comm PP_Comm; +#endif /* PARALLEL */ + +extern int *permutsent, + *permutrecved, + *quartsent, + *quartrecved, + *doquartsent, + *doquartrecved, + *splitsent, + *splitrecved, + *permutsentn, + *permutrecvedn, + *quartsentn, + *quartrecvedn, + *doquartsentn, + *doquartrecvedn, + *splitsentn, + *splitrecvedn; +extern double *walltimes, + *cputimes; +extern double *fullwalltimes, + *fullcputimes; +extern double *altwalltimes, + *altcputimes; + +extern int PP_permutsent, + PP_permutrecved, + PP_quartsent, + PP_quartrecved, + PP_doquartsent, + PP_doquartrecved, + PP_splitsent, + PP_splitrecved, + PP_permutsentn, + PP_permutrecvedn, + PP_quartsentn, + PP_quartrecvedn, + PP_doquartsentn, + PP_doquartrecvedn, + PP_splitsentn, + PP_splitrecvedn; + +extern double PP_starttime, + PP_stoptime, + PP_inittime, + PP_paramcomptime, + PP_paramsendtime, + PP_quartcomptime, + PP_quartsendtime, + PP_puzzletime, + PP_treetime; + +void num2quart(uli qnum, int *a, int *b, int *c, int *d); +uli numquarts(int maxspc); +uli quart2num (int a, int b, int c, int d); + +int slave_main(int argc, char *argv[]); +void PP_Init(int *argc, char **argv[]); +void PP_Finalize(); +void PP_Printerror(FILE *of, int id, int err); +void PP_do_puzzling(ivector trueID); + +void PP_RecvDoQuart(int *a, + int *b, + int *c, + int *d, + int *approx); +void PP_SendDoQuart(int dest, + int a, + int b, + int c, + int d, + int approx); +void PP_RecvQuart(int *a, + int *b, + int *c, + int *d, + double *d1, + double *d2, + double *d3, + int *approx); +void PP_SendQuart(int a, + int b, + int c, + int d, + double d1, + double d2, + double d3, + int approx); +void PP_SendSizes(int mspc, + int msite, + int ncats, + int nptrn, + int rad, + int outgr, + double frconst, + int rseed); +void PP_RecvSizes(int *mspc, + int *msite, + int *ncats, + int *nptrn, + int *rad, + int *outgr, + double *frconst, + int *rseed); +void PP_RecvData( + cmatrix Seqpat, /* cmatrix (Maxspc x Numptrn) */ + ivector Alias, /* ivector (Maxsite) */ + ivector Weight, /* ivector (Numptrn) */ + ivector constpat, + dvector Rates, /* dvector (numcats) */ + dvector Eval, /* dvector (tpmradix) */ + dvector Freqtpm, + dmatrix Evec, /* dmatrix (tpmradix x tpmradix) */ + dmatrix Ievc, + dmatrix iexp, + dmatrix Distanmat, /* dmatrix (Maxspc x Maxspc) */ + dcube ltprobr); /* dcube (numcats x tpmradix x tpmradix) */ +void PP_SendData( + cmatrix Seqpat, /* cmatrix (Maxspc x Numptrn) */ + ivector Alias, /* ivector (Maxsite) */ + ivector Weight, /* ivector (Numptrn) */ + ivector constpat, + dvector Rates, /* dvector (numcats) */ + dvector Eval, /* dvector (tpmradix) */ + dvector Freqtpm, + dmatrix Evec, /* dmatrix (tpmradix x tpmradix) */ + dmatrix Ievc, + dmatrix iexp, + dmatrix Distanmat, /* dmatrix (Maxspc x Maxspc) */ + dcube ltprobr); /* dcube (numcats x tpmradix x tpmradix) */ +void PP_SendAllQuarts(unsigned long Numquartets, + unsigned char *quartetinfo); +void PP_RecvAllQuarts(int taxa, + unsigned long *Numquartets, + unsigned char *quartetinfo); + +void PP_SendDoQuartBlock(int dest, uli firstq, uli amount, int approx); +void PP_RecvDoQuartBlock(uli *firstq, uli *amount, uli **bq, int *approx); +void PP_SendQuartBlock(uli startq, + uli numofq, + unsigned char *quartetinfo, + uli numofbq, + uli *bq, + int approx); +void PP_RecvQuartBlock(int slave, + uli *startq, + uli *numofq, + unsigned char *quartetinfo, + int *approx); + +void PP_SendPermut(int dest, + int taxa, + ivector permut); +void PP_RecvPermut(int taxa, + ivector permut); +void PP_SendDoPermutBlock(uli puzzlings); +void PP_RecvDoPermutBlock(uli *taxa); + +void PP_SendSplits(int taxa, + cmatrix biparts); +void PP_RecvSplits(int taxa, + cmatrix biparts); +void PP_SendDone(); +void PP_RecvDone(); + +int PP_emptyslave(); +void PP_putslave(int sl); +int PP_getslave(); + +void PP_cmpd(int rank, double a, double b); +void PP_cmpi(int rank, int a, int b); + +#endif /* _PPUZZLE_ */ diff --git a/forester/archive/RIO/others/puzzle_dqo/src/puzzle.h b/forester/archive/RIO/others/puzzle_dqo/src/puzzle.h new file mode 100644 index 0000000..8165b1a --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/puzzle.h @@ -0,0 +1,493 @@ +/* + * puzzle.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef _PUZZLE_ +#define _PUZZLE_ + +#ifndef PACKAGE +# define PACKAGE "tree-puzzle" +#endif +#ifndef VERSION +# define VERSION "5.0" +#endif +#define DATE "October 2000" + +/* prototypes */ +#include +#include +#include +#include +#include +#include +#include +#include +#include "util.h" +#include "ml.h" +#ifdef PARALLEL +# include "ppuzzle.h" +#endif + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, +#endif + +/* filenames */ +# define FILENAMELENTH 2048 + + +# define INFILEDEFAULT "infile" +# define OUTFILEDEFAULT "outfile" +# define TREEFILEDEFAULT "outtree" +# define INTREEDEFAULT "intree" +# define DISTANCESDEFAULT "outdist" +# define TRIANGLEDEFAULT "outlm.eps" +# define UNRESOLVEDDEFAULT "outqlist" +# define ALLQUARTDEFAULT "outallquart" +# define ALLQUARTLHDEFAULT "outallquartlh" +# define OUTPTLISTDEFAULT "outpstep" +# define OUTPTORDERDEFAULT "outptorder" + +# define INFILE infilename +# define OUTFILE outfilename +# define TREEFILE outtreename +# define INTREE intreename +# define DISTANCES outdistname +# define TRIANGLE outlmname +# define UNRESOLVED outqlistname +# define ALLQUART outallquartname +# define ALLQUARTLH outallquartlhname +# define OUTPTLIST outpstepname +# define OUTPTORDER outptordername + +EXTERN char infilename [FILENAMELENTH]; +EXTERN char outfilename [FILENAMELENTH]; +EXTERN char outtreename [FILENAMELENTH]; +EXTERN char intreename [FILENAMELENTH]; +EXTERN char outdistname [FILENAMELENTH]; +EXTERN char outlmname [FILENAMELENTH]; +EXTERN char outqlistname [FILENAMELENTH]; +EXTERN char outallquartname [FILENAMELENTH]; +EXTERN char outallquartlhname [FILENAMELENTH]; +EXTERN char outpstepname [FILENAMELENTH]; +EXTERN char outptordername [FILENAMELENTH]; + +#define OUTFILEEXT "puzzle" +#define TREEFILEEXT "tree" +#define DISTANCESEXT "dist" +#define TRIANGLEEXT "eps" +#define UNRESOLVEDEXT "qlist" +#define ALLQUARTEXT "allquart" +#define ALLQUARTLHEXT "allquartlh" +#define OUTPTLISTEXT "pstep" +#define OUTPTORDEREXT "ptorder" + +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUT stdout +# define STDOUTFILE STDOUT, +#endif + + +/* auto_aamodel/auto_datatype values (xxx) */ +#define AUTO_OFF 0 +#define AUTO_GUESS 1 +#define AUTO_DEFAULT 2 + + +/* qptlist values (xxx) */ +#define PSTOUT_NONE 0 +#define PSTOUT_ORDER 1 +#define PSTOUT_LISTORDER 2 +#define PSTOUT_LIST 3 + +/* dtat_optn values (xxx) */ +#define NUCLEOTIDE 0 +#define AMINOACID 1 +#define BINARY 2 + +/* typ_optn values (xxx) */ +#define LIKMAPING_OPTN 1 +#define TREERECON_OPTN 0 + +/* puzzlemodes (xxx) */ +#define QUARTPUZ 0 +#define USERTREE 1 +#define PAIRDIST 2 + +/* rhetmodes (xxx) Modes of rate heterogeneity */ +#define UNIFORMRATE 0 +#define GAMMARATE 1 +#define TWORATE 2 +#define MIXEDRATE 3 + +/* defines for types of quartet likelihood computation (xxx) */ +#define EXACT 0 +#define APPROX 1 + +/* tree structure */ +typedef struct oneedge { + /* pointer to other three edges */ + struct oneedge *up; + struct oneedge *downleft; + struct oneedge *downright; + int numedge; /* number of edge */ + uli edgeinfo; /* value of this edge */ + int *edgemap; /* pointer to the local edgemap */ +} ONEEDGE; + + +/* variables */ +EXTERN cmatrix biparts; /* bipartitions of tree of current puzzling step */ +EXTERN cmatrix consbiparts; /* bipartitions of majority rule consensus tree */ +EXTERN cmatrix seqchars; /* characters contained in data set */ +EXTERN cmatrix treepict; /* picture of consensus tree */ +EXTERN double minscore; /* value of edgescore on minedge */ +EXTERN double tstvf84; /* F84 transition/transversion ratio */ +EXTERN double tstvratio; /* expected transition/transversion ratio */ +EXTERN double yrtsratio; /* expected pyrimidine/purine transition ratio */ +EXTERN dvector ulkl; /* log L of user trees */ +EXTERN dmatrix allsites; /* log L per sites of user trees */ +EXTERN dvector ulklc; /* log L of user trees (clock) */ +EXTERN dmatrix allsitesc; /* log L per sites of user trees (clock) */ +EXTERN FILE *utfp; /* pointer to user tree file */ +EXTERN FILE *ofp; /* pointer to output file */ +EXTERN FILE *seqfp; /* pointer to sequence input file */ +EXTERN FILE *tfp; /* pointer to tree file */ +EXTERN FILE *dfp; /* pointer to distance file */ +EXTERN FILE *trifp; /* pointer to triangle file */ +EXTERN FILE *unresfp; /* pointer to file with unresolved quartets */ +EXTERN FILE *tmpfp; /* pointer to temporary file */ +EXTERN FILE *qptlist; /* pointer to file with puzzling step trees */ +EXTERN FILE *qptorder; /* pointer to file with unique puzzling step trees */ +EXTERN int SHcodon; /* whether SH should be applied to 1st, 2nd codon positions */ +EXTERN int utree_optn; /* use first user tree for estimation */ +EXTERN int listqptrees; /* list puzzling step trees */ +EXTERN int approxqp; /* approximate QP quartets */ +EXTERN int *edgeofleaf; /* vector with edge number of all leaves */ +EXTERN int codon_optn; /* declares what positions in a codon should be used */ +EXTERN int compclock; /* computation of clocklike branch lengths */ +EXTERN int chooseA; /* leaf variable */ +EXTERN int chooseB; /* leaf variable */ +EXTERN int clustA, clustB, clustC, clustD; /* number of members of LM clusters */ +EXTERN int column; /* used for breaking lines (writing tree to treefile) */ +EXTERN int Frequ_optn; /* use empirical base frequencies */ +EXTERN int Maxbrnch; /* 2*Maxspc - 3 */ +EXTERN int Maxseqc; /* number of sequence characters per taxum */ +EXTERN int mflag; /* flag used for correct printing of runtime messages */ +EXTERN int minedge; /* edge with minimum edgeinfo */ +EXTERN int nextedge; /* number of edges in the current tree */ +EXTERN int nextleaf; /* next leaf to add to tree */ +EXTERN int numclust; /* number of clusters in LM analysis */ +EXTERN int outgroup; /* outgroup */ +EXTERN int puzzlemode; /* computation of QP tree and/or ML distances */ +EXTERN int rootsearch; /* how location of root is found */ +EXTERN int rhetmode; /* model of rate heterogeneity */ +EXTERN int splitlength; /* length of one entry in splitpatterns */ +EXTERN int *splitsizes; /* size of all different splits of all trees */ +EXTERN int usebestq_optn; /* use only best quartet topology, no bayesian weights */ +EXTERN int show_optn; /* show unresolved quartets */ +EXTERN int savequart_optn; /* save memory block which quartets to file */ +EXTERN int savequartlh_optn; /* save quartet likelihoods to file */ +EXTERN int saveqlhbin_optn; /* save quartet likelihoods binary */ +EXTERN int readquart_optn; /* read memory block which quartets from file */ +EXTERN int sym_optn; /* symmetrize doublet frequencies */ +EXTERN int xsize; /* depth of consensus tree picture */ +EXTERN int ytaxcounter; /* counter for establishing y-coordinates of all taxa */ +EXTERN int numutrees; /* number of users trees in input tree file */ +EXTERN ivector clusterA, clusterB, clusterC, clusterD; /* clusters for LM analysis */ +EXTERN ivector consconfid; /* confidence values of majority rule consensus tree */ +EXTERN ivector conssizes; /* partition sizes of majority rule consensus tree */ +EXTERN ivector trueID; /* leaf -> taxon on this leaf */ +EXTERN ivector xcor; /* x-coordinates of consensus tree nodes */ +EXTERN ivector ycor; /* y-coordinates of consensus tree nodes */ +EXTERN ivector ycormax; /* maximal y-coordinates of consensus tree nodes */ +EXTERN ivector ycormin; /* minimal y-coordinates of consensus tree nodes */ +EXTERN ivector ycortax; /* y-coordinates of all taxa */ +EXTERN ONEEDGE *edge; /* vector with all the edges of the tree */ +EXTERN uli *splitcomp; /* bipartition storage */ +EXTERN uli *splitfreqs; /* frequencies of all different splits of all trees */ +EXTERN uli *splitpatterns; /* all different splits of all trees */ +EXTERN uli badqs; /* number of bad quartets */ +EXTERN uli consincluded; /* number of included biparts in the consensus tree */ +EXTERN uli Currtrial; /* counter for puzzling steps */ +EXTERN uli maxbiparts; /* space is reserved for that many bipartitions */ +EXTERN uli mininfo; /* value of edgeinfo on minedge */ +EXTERN uli numbiparts; /* number of different bipartitions */ +EXTERN uli Numquartets; /* number of quartets */ +EXTERN uli Numtrial; /* number of puzzling steps */ +EXTERN uli lmqts; /* quartets investigated in LM analysis (0 = ALL) */ + +EXTERN int auto_datatype; /* guess datatype ? */ +EXTERN int guessdata_optn; /* guessed datatype */ + +EXTERN int auto_aamodel; /* guess amino acid modell ? */ +EXTERN int guessauto_aamodel; /* guessed amino acid modell ? */ +EXTERN int guessDayhf_optn; /* guessed Dayhoff model option */ +EXTERN int guessJtt_optn; /* guessed JTT model option */ +EXTERN int guessblosum62_optn; /* guessed BLOSUM 62 model option */ +EXTERN int guessmtrev_optn; /* guessed mtREV model option */ +EXTERN int guesscprev_optn; /* guessed cpREV model option */ +EXTERN int guessvtmv_optn; /* guessed VT model option */ +EXTERN int guesswag_optn; /* guessed WAG model option */ + +/* counter variables needed in likelihood mapping analysis */ +EXTERN uli ar1, ar2, ar3; +EXTERN uli reg1, reg2, reg3, reg4, reg5, reg6, reg7; +EXTERN uli reg1l, reg1r, reg2u, reg2d, reg3u, reg3d, + reg4u, reg4d, reg5l, reg5r, reg6u, reg6d; +EXTERN unsigned char *quartetinfo; /* place where quartets are stored */ +EXTERN dvector qweight; /* for use in QP and LM analysis */ +EXTERN dvector sqdiff; +EXTERN ivector qworder; +EXTERN ivector sqorder; + +EXTERN int randseed; +EXTERN int psteptreestrlen; + +typedef struct treelistitemtypedummy { + struct treelistitemtypedummy *pred; + struct treelistitemtypedummy *succ; + struct treelistitemtypedummy *sortnext; + struct treelistitemtypedummy *sortlast; + char *tree; + int count; + int id; + int idx; +} treelistitemtype; + +EXTERN treelistitemtype *psteptreelist; +EXTERN treelistitemtype *psteptreesortlist; +EXTERN int psteptreenum; +EXTERN int psteptreesum; + + +/* prototypes */ +void makeF84model(void); +void compnumqts(void); +void setoptions(void); +void openfiletoread(FILE **, char[], char[]); +void openfiletowrite(FILE **, char[], char[]); +void openfiletoappend(FILE **, char[], char[]); +void closefile(FILE *); +void symdoublets(void); +void computeexpectations(void); +void putdistance(FILE *); +void findidenticals(FILE *); +double averagedist(void); +void initps(FILE *); +void plotlmpoint(FILE *, double, double); +void finishps(FILE *); +void makelmpoint(FILE *, double, double, double); +void printtreestats(FILE *); +void timestamp(FILE *); +void writeoutputfile(FILE *, int); + +/* definitions for writing output */ +#define WRITEALL 0 +#define WRITEPARAMS 1 +#define WRITEREST 2 + +void writetimesstat(FILE *ofp); +void writecutree(FILE *, int); +void starttimer(void); +void checktimer(uli); +void estimateparametersnotree(void); +void estimateparameterstree(void); +int main(int, char *[]); +int ulicmp(const void *, const void *); +int intcmp(const void *, const void *); + +void readid(FILE *, int); +char readnextcharacter(FILE *, int, int); +void skiprestofline(FILE *, int, int); +void skipcntrl(FILE *, int, int); +void getseqs(FILE *); +void initid(int); +void fputid10(FILE *, int); +int fputid(FILE *, int); +void getsizesites(FILE *); +void getdataset(FILE *); +int guessdatatype(void); +void translatedataset(void); +void estimatebasefreqs(void); +void guessmodel(void); +void inittree(void); +void addnextleaf(int); +void freetree(void); +void writeOTU(FILE *, int); +void writetree(FILE *); +int *initctree(); +void copytree(int *ctree); +void freectree(int **snodes); +void printctree(int *ctree); +char *sprintfctree(int *ctree, int strlen); +void fprintffullpstree(FILE *outf, char *treestr); +int printfsortctree(int *ctree); +int sortctree(int *ctree); +int ct_1stedge(int node); +int ct_2ndedge(int node); +int ct_3rdedge(int node); + +void printfpstrees(treelistitemtype *list); +void printfsortedpstrees(treelistitemtype *list); +void fprintfsortedpstrees(FILE *output, treelistitemtype *list, int itemnum, int itemsum, int comment, float cutoff); + +void sortbynum(treelistitemtype *list, treelistitemtype **sortlist); +treelistitemtype *addtree2list(char **tree, + int numtrees, + treelistitemtype **list, + int *numitems, + int *numsum); +void freetreelist(treelistitemtype **list, + int *numitems, + int *numsum); +void resetedgeinfo(void); +void incrementedgeinfo(int, int); +void minimumedgeinfo(void); +void initconsensus(void); +void makepart(int, int); +void computebiparts(void); +void printsplit(FILE *, uli); +void makenewsplitentries(void); +void copysplit(uli, int); +void makeconsensus(void); +void writenode(FILE *, int); +void writeconsensustree(FILE *); +void nodecoordinates(int); +void drawnode(int, int); +void plotconsensustree(FILE *); +unsigned char *mallocquartets(int); +void freequartets(void); +unsigned char readquartet(int, int, int, int); +void writequartet(int, int, int, int, unsigned char); +void sort3doubles(dvector, ivector); +void computeallquartets(void); +void checkquartet(int, int, int, int); +void num2quart(uli qnum, int *a, int *b, int *c, int *d); +uli numquarts(int maxspc); +uli quart2num (int a, int b, int c, int d); + +void writetpqfheader(int nspec, FILE *ofp, int flag); + + +/* extracted from main (xxx) */ +void compute_quartlklhds(int a, int b, int c, int d, double *d1, double *d2, double *d3, int approx); + + +/* definitions for timing */ + +#define OVERALL 0 +#define GENERAL 1 +#define OPTIONS 2 +#define PARAMEST 3 +#define QUARTETS 4 +#define PUZZLING 5 +#define TREEEVAL 6 + +typedef struct { + int currentjob; + clock_t tempcpu; + clock_t tempfullcpu; + clock_t tempcpustart; + time_t temptime; + time_t tempfulltime; + time_t temptimestart; + + clock_t maxcpu; + clock_t mincpu; + time_t maxtime; + time_t mintime; + + double maxcpublock; + double mincpublock; + double mincputick; + double mincputicktime; + double maxtimeblock; + double mintimeblock; + + double generalcpu; + double optionscpu; + double paramestcpu; + double quartcpu; + double quartblockcpu; + double quartmaxcpu; + double quartmincpu; + double puzzcpu; + double puzzblockcpu; + double puzzmaxcpu; + double puzzmincpu; + double treecpu; + double treeblockcpu; + double treemaxcpu; + double treemincpu; + double cpu; + double fullcpu; + + double generaltime; + double optionstime; + double paramesttime; + double quarttime; + double quartblocktime; + double quartmaxtime; + double quartmintime; + double puzztime; + double puzzblocktime; + double puzzmaxtime; + double puzzmintime; + double treetime; + double treeblocktime; + double treemaxtime; + double treemintime; + double time; + double fulltime; +} timearray_t; + +EXTERN double cputime, walltime; +EXTERN double fullcpu, fulltime; +EXTERN double fullcputime, fullwalltime; +EXTERN double altcputime, altwalltime; +EXTERN clock_t cputimestart, cputimestop, cputimedummy; +EXTERN time_t walltimestart, walltimestop, walltimedummy; +EXTERN clock_t Startcpu; /* start cpu time */ +EXTERN clock_t Stopcpu; /* stop cpu time */ +EXTERN time_t Starttime; /* start time */ +EXTERN time_t Stoptime; /* stop time */ +EXTERN time_t time0; /* timer variable */ +EXTERN time_t time1; /* yet another timer */ +EXTERN time_t time2; /* yet another timer */ +EXTERN timearray_t tarr; + +void resetqblocktime(timearray_t *ta); +void resetpblocktime(timearray_t *ta); +void inittimearr(timearray_t *ta); +void addtimes(int jobtype, timearray_t *ta); +#ifdef TIMEDEBUG + void printtimearr(timearray_t *ta); +#endif /* TIMEDEBUG */ + +#endif /* _PUZZLE_ */ + diff --git a/forester/archive/RIO/others/puzzle_dqo/src/puzzle1.c b/forester/archive/RIO/others/puzzle_dqo/src/puzzle1.c new file mode 100644 index 0000000..a012cb4 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/puzzle1.c @@ -0,0 +1,2864 @@ +/* + * puzzle1.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#define EXTERN + +#include "puzzle.h" +#include "gamma.h" + +void num2quart(uli qnum, int *a, int *b, int *c, int *d) +{ + double temp; + uli aa, bb, cc, dd; + uli lowval=0, highval=0; + + aa=0; bb=1; cc=2; dd=3; + + temp = (double)(24 * qnum); + temp = sqrt(temp); + temp = sqrt(temp); + /* temp = pow(temp, (double)(1/4)); */ + dd = (uli) floor(temp) + 1; + if (dd < 3) dd = 3; + lowval = (uli) dd*(dd-1)*(dd-2)*(dd-3)/24; + highval = (uli) (dd+1)*dd*(dd-1)*(dd-2)/24; + if (lowval >= qnum) + while ((lowval > qnum)) { + dd -= 1; lowval = (uli) dd*(dd-1)*(dd-2)*(dd-3)/24; + } + else { + while (highval <= qnum) { + dd += 1; highval = (uli) (dd+1)*dd*(dd-1)*(dd-2)/24; + } + lowval = (uli) dd*(dd-1)*(dd-2)*(dd-3)/24; + } + qnum -= lowval; + if (qnum > 0) { + temp = (double)(6 * qnum); + temp = pow(temp, (double)(1/3)); + cc = (uli) floor(temp); + if (cc < 2) cc= 2; + lowval = (uli) cc*(cc-1)*(cc-2)/6; + highval = (uli) (cc+1)*cc*(cc-1)/6; + if (lowval >= qnum) + while ((lowval > qnum)) { + cc -= 1; lowval = (uli) cc*(cc-1)*(cc-2)/6; + } + else { + while (highval <= qnum) { + cc += 1; highval = (uli) (cc+1)*cc*(cc-1)/6; + } + lowval = (uli) cc*(cc-1)*(cc-2)/6; + } + qnum -= lowval; + if (qnum > 0) { + temp = (double)(2 * qnum); + temp = sqrt(temp); + bb = (uli) floor(temp); + if (bb < 1) bb= 1; + lowval = (uli) bb*(bb-1)/2; + highval = (uli) (bb+1)*bb/2; + if (lowval >= qnum) + while ((lowval > qnum)) { + bb -= 1; lowval = (uli) bb*(bb-1)/2; + } + else { + while (highval <= qnum) { + bb += 1; highval = (uli) (bb+1)*bb/2; + } + lowval = (uli) bb*(bb-1)/2; + } + qnum -= lowval; + if (qnum > 0) { + aa = (uli) qnum; + if (aa < 0) aa= 0; + } + } + } + *d = (int)dd; + *c = (int)cc; + *b = (int)bb; + *a = (int)aa; +} /* num2quart */ + +/******************/ + +uli numquarts(int maxspc) +{ + uli tmp; + int a, b, c, d; + + if (maxspc < 4) + return (uli)0; + else { + maxspc--; + a = maxspc-3; + b = maxspc-2; + c = maxspc-1; + d = maxspc; + + tmp = (uli) 1 + a + + (uli) b * (b-1) / 2 + + (uli) c * (c-1) * (c-2) / 6 + + (uli) d * (d-1) * (d-2) * (d-3) / 24; + return (tmp); + } +} /* numquarts */ + +/******************/ + +uli quart2num (int a, int b, int c, int d) +{ + uli tmp; + if ((a>b) || (b>c) || (c>d)) { + fprintf(stderr, "Error PP5 not (%d <= %d <= %d <= %d) !!!\n", a, b, c, +d); + exit (1); + } + tmp = (uli) a + + (uli) b * (b-1) / 2 + + (uli) c * (c-1) * (c-2) / 6 + + (uli) d * (d-1) * (d-2) * (d-3) / 24; + return (tmp); +} /* quart2num */ + +/******************/ + + + +/* flag=0 old allquart binary */ +/* flag=1 allquart binary */ +/* flag=2 allquart ACSII */ +/* flag=3 quartlh binary */ +/* flag=4 quartlh ASCII */ + +void writetpqfheader(int nspec, + FILE *ofp, + int flag) +{ int currspec; + + if (flag == 0) { + unsigned long nquart; + unsigned long blocklen; + + nquart = numquarts(nspec); + /* compute number of bytes */ + if (nquart % 2 == 0) { /* even number */ + blocklen = (nquart)/2; + } else { /* odd number */ + blocklen = (nquart + 1)/2; + } + /* FPRINTF(STDOUTFILE "Writing quartet file: %s\n", filename); */ + fprintf(ofp, "TREE-PUZZLE\n%s\n\n", VERSION); + fprintf(ofp, "species: %d\n", nspec); + fprintf(ofp, "quartets: %lu\n", nquart); + fprintf(ofp, "bytes: %lu\n\n", blocklen); + + + /* fwrite(&(quartetinfo[0]), sizeof(char), blocklen, ofp); */ + } + + if (flag == 1) fprintf(ofp, "##TPQF-BB (TREE-PUZZLE %s)\n%d\n", VERSION, nspec); + if (flag == 2) fprintf(ofp, "##TPQF-BA (TREE-PUZZLE %s)\n%d\n", VERSION, nspec); + if (flag == 3) fprintf(ofp, "##TPQF-LB (TREE-PUZZLE %s)\n%d\n", VERSION, nspec); + if (flag == 4) fprintf(ofp, "##TPQF-LA (TREE-PUZZLE %s)\n%d\n", VERSION, nspec); + + for (currspec=0; currspec MAXTS) { + FPRINTF(STDOUTFILE "\n\n\nF84 model not possible "); + FPRINTF(STDOUTFILE "(bad Ts/Tv parameter)\n"); + tstvf84 = 0.0; + return; + } + if (yr < MINYR || yr > MAXYR) { + FPRINTF(STDOUTFILE "\n\n\nF84 model not possible "); + FPRINTF(STDOUTFILE "(bad Y/R transition parameter)\n"); + tstvf84 = 0.0; + return; + } + TSparam = ts; + YRparam = yr; + optim_optn = FALSE; +} + +/* compute number of quartets used in LM analysis */ +void compnumqts() +{ + if (lmqts == 0) { + if (numclust == 4) + Numquartets = (uli) clustA*clustB*clustC*clustD; + if (numclust == 3) + Numquartets = (uli) clustA*clustB*clustC*(clustC-1)/2; + if (numclust == 2) + Numquartets = (uli) clustA*(clustA-1)/2 * clustB*(clustB-1)/2; + if (numclust == 1) + Numquartets = (uli) Maxspc*(Maxspc-1)*(Maxspc-2)*(Maxspc-3)/24; + } else { + Numquartets = lmqts; + } +} + +/* set options interactively */ +void setoptions() +{ + int i, valid; + double sumfreq; + char ch; + + puzzlemode = PAIRDIST; /*Only do pairwise dist. CZ, 05/16/01*/ + + /* defaults */ + rhetmode = UNIFORMRATE; /* assume rate homogeneity */ + numcats = 1; + Geta = 0.05; + grate_optim = FALSE; + fracinv = 0.0; + fracinv_optim = FALSE; + + compclock = FALSE; /* compute clocklike branch lengths */ + locroot = -1; /* search for optimal place of root */ + qcalg_optn = FALSE; /* don't use sampling of quartets */ + approxp_optn = TRUE; /* approximate parameter estimates */ + listqptrees = PSTOUT_NONE; /* list puzzling step trees */ + + /* approximate QP quartets? */ + if (Maxspc <= 6) approxqp = FALSE; + else approxqp = TRUE; + + codon_optn = 0; /* use all positions in a codon */ + + /* number of puzzling steps */ + if (Maxspc <= 25) Numtrial = 1000; + else if (Maxspc <= 50) Numtrial = 10000; + else if (Maxspc <= 75) Numtrial = 25000; + else Numtrial = 50000; + + utree_optn = TRUE; /* use first user tree for estimation */ + outgroup = 0; /* use first taxon as outgroup */ + sym_optn = FALSE; /* symmetrize doublet frequencies */ + tstvf84 = 0.0; /* disable F84 model */ + show_optn = FALSE; /* show unresolved quartets */ + typ_optn = TREERECON_OPTN; /* tree reconstruction */ + numclust = 1; /* one clusters in LM analysis */ + lmqts = 0; /* all quartets in LM analysis */ + compnumqts(); + if (Numquartets > 10000) { + lmqts = 10000; /* 10000 quartets in LM analysis */ + compnumqts(); + } + + do { + FPRINTF(STDOUTFILE "\n\n\nGENERAL OPTIONS\n"); + FPRINTF(STDOUTFILE " b Type of analysis? "); + if (typ_optn == TREERECON_OPTN) FPRINTF(STDOUTFILE "Tree reconstruction\n"); + if (typ_optn == LIKMAPING_OPTN) FPRINTF(STDOUTFILE "Likelihood mapping\n"); + if (typ_optn == TREERECON_OPTN) { + FPRINTF(STDOUTFILE " k Tree search procedure? "); + if (puzzlemode == QUARTPUZ) FPRINTF(STDOUTFILE "Quartet puzzling\n"); + if (puzzlemode == USERTREE) FPRINTF(STDOUTFILE "User defined trees\n"); + if (puzzlemode == PAIRDIST) FPRINTF(STDOUTFILE "Pairwise distances only (no tree)\n"); + if (puzzlemode == QUARTPUZ) { + FPRINTF(STDOUTFILE " v Approximate quartet likelihood? %s\n", + (approxqp ? "Yes" : "No")); + FPRINTF(STDOUTFILE " u List unresolved quartets? %s\n", + (show_optn ? "Yes" : "No")); + FPRINTF(STDOUTFILE " n Number of puzzling steps? %lu\n", + Numtrial); + FPRINTF(STDOUTFILE " j List puzzling step trees? "); + switch (listqptrees) { + case PSTOUT_NONE: FPRINTF(STDOUTFILE "No\n"); break; + case PSTOUT_ORDER: FPRINTF(STDOUTFILE "Unique topologies\n"); break; + case PSTOUT_LISTORDER: FPRINTF(STDOUTFILE "Unique topologies & Chronological list\n"); break; + case PSTOUT_LIST: FPRINTF(STDOUTFILE "Chronological list only\n"); break; + } + + FPRINTF(STDOUTFILE " o Display as outgroup? "); + fputid(STDOUT, outgroup); + FPRINTF(STDOUTFILE "\n"); + } + if (puzzlemode == QUARTPUZ || puzzlemode == USERTREE) { + FPRINTF(STDOUTFILE " z Compute clocklike branch lengths? "); + if (compclock) FPRINTF(STDOUTFILE "Yes\n"); + else FPRINTF(STDOUTFILE "No\n"); + } + if (compclock) + if (puzzlemode == QUARTPUZ || puzzlemode == USERTREE) { + FPRINTF(STDOUTFILE " l Location of root? "); + if (locroot < 0) FPRINTF(STDOUTFILE "Best place (automatic search)\n"); + else if (locroot < Maxspc) { + FPRINTF(STDOUTFILE "Branch %d (", locroot + 1); + fputid(STDOUT, locroot); + FPRINTF(STDOUTFILE ")\n"); + } else FPRINTF(STDOUTFILE "Branch %d (internal branch)\n", locroot + 1); + } + } + if (typ_optn == LIKMAPING_OPTN) { + FPRINTF(STDOUTFILE " g Group sequences in clusters? "); + if (numclust == 1) FPRINTF(STDOUTFILE "No\n"); + else FPRINTF(STDOUTFILE "Yes (%d clusters as specified)\n", numclust); + FPRINTF(STDOUTFILE " n Number of quartets? "); + if (lmqts == 0) FPRINTF(STDOUTFILE "%lu (all possible)\n", Numquartets); + else FPRINTF(STDOUTFILE "%lu (random choice)\n", lmqts); + } + FPRINTF(STDOUTFILE " e Parameter estimates? "); + if (approxp_optn) FPRINTF(STDOUTFILE "Approximate (faster)\n"); + else FPRINTF(STDOUTFILE "Exact (slow)\n"); + if (!(puzzlemode == USERTREE && typ_optn == TREERECON_OPTN)) { + FPRINTF(STDOUTFILE " x Parameter estimation uses? "); + if (qcalg_optn) FPRINTF(STDOUTFILE "Quartet sampling + NJ tree\n"); + else FPRINTF(STDOUTFILE "Neighbor-joining tree\n"); + + } else { + FPRINTF(STDOUTFILE " x Parameter estimation uses? "); + if (utree_optn) + FPRINTF(STDOUTFILE "1st input tree\n"); + else if (qcalg_optn) FPRINTF(STDOUTFILE "Quartet sampling + NJ tree\n"); + else FPRINTF(STDOUTFILE "Neighbor-joining tree\n"); + } + FPRINTF(STDOUTFILE "SUBSTITUTION PROCESS\n"); + FPRINTF(STDOUTFILE " d Type of sequence input data? "); + if (auto_datatype == AUTO_GUESS) FPRINTF(STDOUTFILE "Auto: "); + if (data_optn == NUCLEOTIDE) FPRINTF(STDOUTFILE "Nucleotides\n"); + if (data_optn == AMINOACID) FPRINTF(STDOUTFILE "Amino acids\n"); + if (data_optn == BINARY) FPRINTF(STDOUTFILE "Binary states\n"); + if (data_optn == NUCLEOTIDE && (Maxseqc % 3) == 0 && !SH_optn) { + FPRINTF(STDOUTFILE " h Codon positions selected? "); + if (codon_optn == 0) FPRINTF(STDOUTFILE "Use all positions\n"); + if (codon_optn == 1) FPRINTF(STDOUTFILE "Use only 1st positions\n"); + if (codon_optn == 2) FPRINTF(STDOUTFILE "Use only 2nd positions\n"); + if (codon_optn == 3) FPRINTF(STDOUTFILE "Use only 3rd positions\n"); + if (codon_optn == 4) FPRINTF(STDOUTFILE "Use 1st and 2nd positions\n"); + } + FPRINTF(STDOUTFILE " m Model of substitution? "); + if (data_optn == NUCLEOTIDE) { /* nucleotides */ + if (nuc_optn) { + if(HKY_optn) + FPRINTF(STDOUTFILE "HKY (Hasegawa et al. 1985)\n"); + else { + FPRINTF(STDOUTFILE "TN (Tamura-Nei 1993)\n"); + FPRINTF(STDOUTFILE " p Constrain TN model to F84 model? "); + if (tstvf84 == 0.0) + FPRINTF(STDOUTFILE "No\n"); + else FPRINTF(STDOUTFILE "Yes (Ts/Tv ratio = %.2f)\n", tstvf84); + } + FPRINTF(STDOUTFILE " t Transition/transversion parameter? "); + if (optim_optn) + FPRINTF(STDOUTFILE "Estimate from data set\n"); + else + FPRINTF(STDOUTFILE "%.2f\n", TSparam); + if (TN_optn) { + FPRINTF(STDOUTFILE " r Y/R transition parameter? "); + if (optim_optn) + FPRINTF(STDOUTFILE "Estimate from data set\n"); + else + FPRINTF(STDOUTFILE "%.2f\n", YRparam); + } + } + if (SH_optn) { + FPRINTF(STDOUTFILE "SH (Schoeniger-von Haeseler 1994)\n"); + FPRINTF(STDOUTFILE " t Transition/transversion parameter? "); + if (optim_optn) + FPRINTF(STDOUTFILE "Estimate from data set\n"); + else + FPRINTF(STDOUTFILE "%.2f\n", TSparam); + } + } + if (data_optn == NUCLEOTIDE && SH_optn) { + FPRINTF(STDOUTFILE " h Doublets defined by? "); + if (SHcodon) + FPRINTF(STDOUTFILE "1st and 2nd codon positions\n"); + else + FPRINTF(STDOUTFILE "1st+2nd, 3rd+4th, etc. site\n"); + } + if (data_optn == AMINOACID) { /* amino acids */ + switch (auto_aamodel) { + case AUTO_GUESS: + FPRINTF(STDOUTFILE "Auto: "); + break; + case AUTO_DEFAULT: + FPRINTF(STDOUTFILE "Def.: "); + break; + } + if (Dayhf_optn) FPRINTF(STDOUTFILE "Dayhoff (Dayhoff et al. 1978)\n"); + if (Jtt_optn) FPRINTF(STDOUTFILE "JTT (Jones et al. 1992)\n"); + if (mtrev_optn) FPRINTF(STDOUTFILE "mtREV24 (Adachi-Hasegawa 1996)\n"); + if (cprev_optn) FPRINTF(STDOUTFILE "cpREV45 (Adachi et al. 2000)\n"); + if (blosum62_optn) FPRINTF(STDOUTFILE "BLOSUM62 (Henikoff-Henikoff 92)\n"); + if (vtmv_optn) FPRINTF(STDOUTFILE "VT (Mueller-Vingron 2000)\n"); + if (wag_optn) FPRINTF(STDOUTFILE "WAG (Whelan-Goldman 2000)\n"); + } + if (data_optn == BINARY) { /* binary states */ + FPRINTF(STDOUTFILE "Two-state model (Felsenstein 1981)\n"); + } + if (data_optn == AMINOACID) + FPRINTF(STDOUTFILE " f Amino acid frequencies? "); + else if (data_optn == NUCLEOTIDE && SH_optn) + FPRINTF(STDOUTFILE " f Doublet frequencies? "); + else if (data_optn == NUCLEOTIDE && nuc_optn) + FPRINTF(STDOUTFILE " f Nucleotide frequencies? "); + else if (data_optn == BINARY) + FPRINTF(STDOUTFILE " f Binary state frequencies? "); + FPRINTF(STDOUTFILE "%s\n", (Frequ_optn ? "Estimate from data set" : + "Use specified values")); + if (data_optn == NUCLEOTIDE && SH_optn) + FPRINTF(STDOUTFILE " s Symmetrize doublet frequencies? %s\n", + (sym_optn ? "Yes" : "No")); + + FPRINTF(STDOUTFILE "RATE HETEROGENEITY\n"); + FPRINTF(STDOUTFILE " w Model of rate heterogeneity? "); + if (rhetmode == UNIFORMRATE) FPRINTF(STDOUTFILE "Uniform rate\n"); + if (rhetmode == GAMMARATE ) FPRINTF(STDOUTFILE "Gamma distributed rates\n"); + if (rhetmode == TWORATE ) FPRINTF(STDOUTFILE "Two rates (1 invariable + 1 variable)\n"); + if (rhetmode == MIXEDRATE ) FPRINTF(STDOUTFILE "Mixed (1 invariable + %d Gamma rates)\n", numcats); + + if (rhetmode == TWORATE || rhetmode == MIXEDRATE) { + FPRINTF(STDOUTFILE " i Fraction of invariable sites? "); + if (fracinv_optim) FPRINTF(STDOUTFILE "Estimate from data set"); + else FPRINTF(STDOUTFILE "%.2f", fracinv); + if (fracinv == 0.0 && !fracinv_optim) FPRINTF(STDOUTFILE " (all sites variable)"); + FPRINTF(STDOUTFILE "\n"); + } + if (rhetmode == GAMMARATE || rhetmode == MIXEDRATE) { + FPRINTF(STDOUTFILE " a Gamma distribution parameter alpha? "); + if (grate_optim) + FPRINTF(STDOUTFILE "Estimate from data set\n"); + else if (Geta > 0.5) + FPRINTF(STDOUTFILE "%.2f (strong rate heterogeneity)\n", (1.0-Geta)/Geta); + else FPRINTF(STDOUTFILE "%.2f (weak rate heterogeneity)\n", (1.0-Geta)/Geta); + FPRINTF(STDOUTFILE " c Number of Gamma rate categories? %d\n", numcats); + } + + FPRINTF(STDOUTFILE "\nQuit [q], confirm [y], or change [menu] settings: "); + + /* read one char */ + ch = getchar(); + if (ch != '\n') { + do ; + while (getchar() != '\n'); + } + ch = (char) tolower((int) ch); + + /* letters in use: d m */ + /* letters not in use: */ + + switch (ch) { + + case '\n': break; + + + + case 'd': if (auto_datatype == AUTO_GUESS) { + auto_datatype = AUTO_OFF; + guessdata_optn = data_optn; + data_optn = 0; + } else { + data_optn = data_optn + 1; + if (data_optn == 3) { + auto_datatype = AUTO_GUESS; + data_optn = guessdata_optn; + } + } + /* translate characters into format used by ML engine */ + translatedataset(); + estimatebasefreqs(); + break; + + + + case 'm': if (data_optn == NUCLEOTIDE) { /* nucleotide data */ + if(HKY_optn && nuc_optn) { + /* HKY -> TN */ + tstvf84 = 0.0; + TSparam = 2.0; + YRparam = 0.9; + HKY_optn = FALSE; + TN_optn = TRUE; + optim_optn = TRUE; + nuc_optn = TRUE; + SH_optn = FALSE; + break; + } + if(TN_optn && nuc_optn) { + if (Maxseqc % 2 == 0 || Maxseqc % 3 == 0) { + /* number of chars needs to be a multiple 2 or 3 */ + /* TN -> SH */ + if (Maxseqc % 2 != 0 && Maxseqc % 3 == 0) + SHcodon = TRUE; + else + SHcodon = FALSE; + tstvf84 = 0.0; + TSparam = 2.0; + YRparam = 1.0; + HKY_optn = TRUE; + TN_optn = FALSE; + optim_optn = TRUE; + nuc_optn = FALSE; + SH_optn = TRUE; + /* translate characters into format */ + /* used by ML engine */ + translatedataset(); + estimatebasefreqs(); + } else { + FPRINTF(STDOUTFILE "\n\n\nSH model not "); + FPRINTF(STDOUTFILE "available for the data set!\n"); + /* TN -> HKY */ + tstvf84 = 0.0; + TSparam = 2.0; + YRparam = 1.0; + HKY_optn = TRUE; + TN_optn = FALSE; + optim_optn = TRUE; + nuc_optn = TRUE; + SH_optn = FALSE; + } + break; + } + if(SH_optn) { + /* SH -> HKY */ + tstvf84 = 0.0; + TSparam = 2.0; + YRparam = 1.0; + HKY_optn = TRUE; + TN_optn = FALSE; + optim_optn = TRUE; + nuc_optn = TRUE; + SH_optn = FALSE; + /* translate characters into format */ + /* used by ML engine */ + translatedataset(); + estimatebasefreqs(); + break; + } + break; + } + if (data_optn == AMINOACID) { /* amino acid data */ + if (auto_aamodel) { + /* AUTO -> Dayhoff */ + Dayhf_optn = TRUE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } + if (Dayhf_optn) { + /* Dayhoff -> JTT */ + Dayhf_optn = FALSE; + Jtt_optn = TRUE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } + if (Jtt_optn) { + /* JTT -> mtREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = TRUE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } +#ifdef CPREV + if (mtrev_optn) { + /* mtREV -> cpREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = TRUE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } +#else /* ! CPREV */ + if (mtrev_optn) { + /* mtREV -> BLOSUM 62 */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = TRUE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } +#endif /* ! CPREV */ + +#ifdef CPREV + if (cprev_optn) { + /* cpREV -> BLOSUM 62 */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = TRUE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } +#endif + if (blosum62_optn) { + /* BLOSUM 62 -> VT model */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = TRUE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } + if (vtmv_optn) { + /* VT model -> WAG model */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = TRUE; + auto_aamodel = AUTO_OFF; + break; + } + if (wag_optn) { + /* WAG model -> AUTO */ + Dayhf_optn = guessDayhf_optn; + Jtt_optn = guessJtt_optn; + mtrev_optn = guessmtrev_optn; + cprev_optn = guesscprev_optn; + blosum62_optn = guessblosum62_optn; + vtmv_optn = guessvtmv_optn; + wag_optn = guesswag_optn; + auto_aamodel = guessauto_aamodel; + break; + } + break; + } + if (data_optn == BINARY) { + FPRINTF(STDOUTFILE "\n\n\nNo other model available!\n"); + } + break; + + + + case 'y': break; + + default: FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + break; + } + } while (ch != 'y'); + + FPRINTF(STDOUTFILE "\n\n\n"); +} + +/* open file for reading */ +void openfiletoread(FILE **fp, char name[], char descr[]) +{ + int count = 0; + cvector str; + + if ((*fp = fopen(name, "r")) == NULL) { + FPRINTF(STDOUTFILE "\n\n\nPlease enter a file name for the %s: ", descr); + str = mygets(); + while ((*fp = fopen(str, "r")) == NULL) + { + count++; + if (count > 10) + { + FPRINTF(STDOUTFILE "\n\n\nToo many trials - quitting ...\n"); + exit(1); + } + FPRINTF(STDOUTFILE "File '%s' not found, ", str); + FPRINTF(STDOUTFILE "please enter alternative name: "); + free_cvector(str); + str = mygets(); + } + free_cvector(str); + FPRINTF(STDOUTFILE "\n"); + } +} /* openfiletoread */ + + +/* open file for writing */ +void openfiletowrite(FILE **fp, char name[], char descr[]) +{ + int count = 0; + cvector str; + + if ((*fp = fopen(name, "w")) == NULL) { + FPRINTF(STDOUTFILE "\n\n\nPlease enter a file name for the %s: ", descr); + str = mygets(); + while ((*fp = fopen(str, "w")) == NULL) + { + count++; + if (count > 10) + { + FPRINTF(STDOUTFILE "\n\n\nToo many trials - quitting ...\n"); + exit(1); + } + FPRINTF(STDOUTFILE "File '%s' not created, ", str); + FPRINTF(STDOUTFILE "please enter other name: "); + free_cvector(str); + str = mygets(); + } + free_cvector(str); + FPRINTF(STDOUTFILE "\n"); + } +} /* openfiletowrite */ + + +/* open file for appending */ +void openfiletoappend(FILE **fp, char name[], char descr[]) +{ + int count = 0; + cvector str; + + if ((*fp = fopen(name, "a")) == NULL) { + FPRINTF(STDOUTFILE "\n\n\nPlease enter a file name for the %s: ", descr); + str = mygets(); + while ((*fp = fopen(str, "a")) == NULL) + { + count++; + if (count > 10) + { + FPRINTF(STDOUTFILE "\n\n\nToo many trials - quitting ...\n"); + exit(1); + } + FPRINTF(STDOUTFILE "File '%s' not created, ", str); + FPRINTF(STDOUTFILE "please enter other name: "); + free_cvector(str); + str = mygets(); + } + free_cvector(str); + FPRINTF(STDOUTFILE "\n"); + } +} /* openfiletowrite */ + + +/* close file */ +void closefile(FILE *fp) +{ + fclose(fp); +} /* closefile */ + +/* symmetrize doublet frequencies */ +void symdoublets() +{ + int i, imean; + double mean; + + if (data_optn == NUCLEOTIDE && SH_optn && sym_optn) { + /* ML frequencies */ + mean = (Freqtpm[1] + Freqtpm[4])/2.0; /* AC CA */ + Freqtpm[1] = mean; + Freqtpm[4] = mean; + mean = (Freqtpm[2] + Freqtpm[8])/2.0; /* AG GA */ + Freqtpm[2] = mean; + Freqtpm[8] = mean; + mean = (Freqtpm[3] + Freqtpm[12])/2.0; /* AT TA */ + Freqtpm[3] = mean; + Freqtpm[12] = mean; + mean = (Freqtpm[6] + Freqtpm[9])/2.0; /* CG GC */ + Freqtpm[6] = mean; + Freqtpm[9] = mean; + mean = (Freqtpm[7] + Freqtpm[13])/2.0; /* CT TC */ + Freqtpm[7] = mean; + Freqtpm[13] = mean; + mean = (Freqtpm[11] + Freqtpm[14])/2.0; /* GT TG */ + Freqtpm[11] = mean; + Freqtpm[14] = mean; + + /* base composition of each taxon */ + for (i = 0; i < Maxspc; i++) { + imean = (Basecomp[i][1] + Basecomp[i][4])/2; /* AC CA */ + Basecomp[i][1] = imean; + Basecomp[i][4] = imean; + imean = (Basecomp[i][2] + Basecomp[i][8])/2; /* AG GA */ + Basecomp[i][2] = imean; + Basecomp[i][8] = imean; + imean = (Basecomp[i][3] + Basecomp[i][12])/2; /* AT TA */ + Basecomp[i][3] = imean; + Basecomp[i][12] = imean; + imean = (Basecomp[i][6] + Basecomp[i][9])/2; /* CG GC */ + Basecomp[i][6] = imean; + Basecomp[i][9] = imean; + imean = (Basecomp[i][7] + Basecomp[i][13])/2; /* CT TC */ + Basecomp[i][7] = imean; + Basecomp[i][13] = imean; + imean = (Basecomp[i][11] + Basecomp[i][14])/2; /* GT TG */ + Basecomp[i][11] = imean; + Basecomp[i][14] = imean; + } + } +} + +/* show Ts/Tv ratio and Ts Y/R ratio */ +void computeexpectations() +{ + /* CZ */ +} + +/* write ML distance matrix to file. Modified CZ 05/29/01 */ +void putdistance(FILE *fp) +{ + /*int i;*/ + int i, j; + + for (i = 0; i < Maxspc - 1; i++) { + /*fprintf(fp, "%.5f ", Distanmat[i]/100.0);*/ + for ( j = 0; j < 26; j++ ) { + fputc( Identif[i][j], fp ); /*CZ*/ + } + fprintf(fp, "%.5f\n", Distanmat[i]/100.0); + } + fprintf(fp, "\n"); + +} + + + + +/* first lines of EPSF likelihood mapping file */ +void initps(FILE *ofp) +{ + /* CZ */ +} + +/* plot one point of likelihood mapping analysis */ +void plotlmpoint(FILE *ofp, double w1, double w2) +{ + /* CZ */ +} + +/* last lines of EPSF likelihood mapping file */ +void finishps(FILE *ofp) +{ + /* CZ */ +} + +/* computes LM point from the three log-likelihood values, + plots the point, and does some statistics */ +void makelmpoint(FILE *fp, double b1, double b2, double b3) +{ + double w1, w2, w3, temp; + unsigned char qpbranching; + double temp1, temp2, temp3, onethird; + unsigned char discreteweight[3], treebits[3]; + + onethird = 1.0/3.0; + treebits[0] = (unsigned char) 1; + treebits[1] = (unsigned char) 2; + treebits[2] = (unsigned char) 4; + + /* sort in descending order */ + qweight[0] = b1; + qweight[1] = b2; + qweight[2] = b3; + sort3doubles(qweight, qworder); + + /* compute Bayesian weights */ + qweight[qworder[1]] = exp(qweight[qworder[1]]-qweight[qworder[0]]); + qweight[qworder[2]] = exp(qweight[qworder[2]]-qweight[qworder[0]]); + qweight[qworder[0]] = 1.0; + temp = qweight[0] + qweight[1] + qweight[2]; + qweight[0] = qweight[0]/temp; + qweight[1] = qweight[1]/temp; + qweight[2] = qweight[2]/temp; + + /* plot one point in likelihood mapping triangle */ + w1 = qweight[0]; + w2 = qweight[1]; + w3 = qweight[2]; + plotlmpoint(fp, w1, w2); + + /* check areas 1,2,3 */ + if (treebits[qworder[0]] == 1) ar1++; + else if (treebits[qworder[0]] == 2) ar2++; + else ar3++; + + /* check out regions 1,2,3,4,5,6,7 */ + + /* 100 distribution */ + temp1 = 1.0 - qweight[qworder[0]]; + sqdiff[0] = temp1*temp1 + + qweight[qworder[1]]*qweight[qworder[1]] + + qweight[qworder[2]]*qweight[qworder[2]]; + discreteweight[0] = treebits[qworder[0]]; + + /* 110 distribution */ + temp1 = 0.5 - qweight[qworder[0]]; + temp2 = 0.5 - qweight[qworder[1]]; + sqdiff[1] = temp1*temp1 + temp2*temp2 + + qweight[qworder[2]]*qweight[qworder[2]]; + discreteweight[1] = treebits[qworder[0]] + treebits[qworder[1]]; + + /* 111 distribution */ + temp1 = onethird - qweight[qworder[0]]; + temp2 = onethird - qweight[qworder[1]]; + temp3 = onethird - qweight[qworder[2]]; + sqdiff[2] = temp1 * temp1 + temp2 * temp2 + temp3 * temp3; + discreteweight[2] = (unsigned char) 7; + + /* sort in descending order */ + sort3doubles(sqdiff, sqorder); + + qpbranching = (unsigned char) discreteweight[sqorder[2]]; + + if (qpbranching == 1) { + reg1++; + if (w2 < w3) reg1l++; + else reg1r++; + } + if (qpbranching == 2) { + reg2++; + if (w1 < w3) reg2d++; + else reg2u++; + } + if (qpbranching == 4) { + reg3++; + if (w1 < w2) reg3d++; + else reg3u++; + } + if (qpbranching == 3) { + reg4++; + if (w1 < w2) reg4d++; + else reg4u++; + } + if (qpbranching == 6) { + reg5++; + if (w2 < w3) reg5l++; + else reg5r++; + } + if (qpbranching == 5) { + reg6++; + if (w1 < w3) reg6d++; + else reg6u++; + } + if (qpbranching == 7) reg7++; +} + +/* print tree statistics */ +void printtreestats(FILE *ofp) +{ + int i, j, besttree; + double bestlkl, difflkl, difflklps, temp, sum; + + /* find best tree */ + besttree = 0; + bestlkl = ulkl[0]; + for (i = 1; i < numutrees; i++) + if (ulkl[i] > bestlkl) { + besttree = i; + bestlkl = ulkl[i]; + } + + fprintf(ofp, "\n\nCOMPARISON OF USER TREES (NO CLOCK)\n\n"); + fprintf(ofp, "Tree log L difference S.E. Significantly worse\n"); + fprintf(ofp, "--------------------------------------------------------\n"); + for (i = 0; i < numutrees; i++) { + difflkl = ulkl[besttree]-ulkl[i]; + fprintf(ofp, "%2d %10.2f %8.2f ", i+1, ulkl[i], difflkl); + if (i == besttree) { + fprintf(ofp, " <----------------- best tree"); + } else { + /* compute variance of Log L differences over sites */ + difflklps = difflkl/(double)Maxsite; + sum = 0.0; + for (j = 0; j < Numptrn; j++) { + temp = allsites[besttree][j] - allsites[i][j] - difflklps; + sum += temp*temp*Weight[j]; + } + sum = sqrt(fabs(sum/(Maxsite-1.0)*Maxsite)); + fprintf(ofp, "%11.2f ", sum); + if (difflkl > 1.96*sum) + fprintf(ofp, "yes"); + else + fprintf(ofp, "no"); + } + fprintf(ofp, "\n"); + } + fprintf(ofp, "\nThis test (5%% significance) follows Kishino and Hasegawa (1989).\n"); + + if (compclock) { + + /* find best tree */ + besttree = 0; + bestlkl = ulklc[0]; + for (i = 1; i < numutrees; i++) + if (ulklc[i] > bestlkl) { + besttree = i; + bestlkl = ulklc[i]; + } + + fprintf(ofp, "\n\nCOMPARISON OF USER TREES (WITH CLOCK)\n\n"); + fprintf(ofp, "Tree log L difference S.E. Significantly worse\n"); + fprintf(ofp, "--------------------------------------------------------\n"); + for (i = 0; i < numutrees; i++) { + difflkl = ulklc[besttree]-ulklc[i]; + fprintf(ofp, "%2d %10.2f %8.2f ", i+1, ulklc[i], difflkl); + if (i == besttree) { + fprintf(ofp, " <----------------- best tree"); + } else { + /* compute variance of Log L differences over sites */ + difflklps = difflkl/(double)Maxsite; + sum = 0.0; + for (j = 0; j < Numptrn; j++) { + temp = allsitesc[besttree][j] - allsitesc[i][j] - difflklps; + sum += temp*temp*Weight[j]; + } + sum = sqrt(fabs(sum/(Maxsite-1.0)*Maxsite)); + fprintf(ofp, "%11.2f ", sum); + if (difflkl > 1.96*sum) + fprintf(ofp, "yes"); + else + fprintf(ofp, "no"); + } + fprintf(ofp, "\n"); + } + fprintf(ofp, "\nThis test (5%% significance) follows Kishino and Hasegawa (1989).\n"); + } +} + +/* time stamp */ +void timestamp(FILE* ofp) +{ + double timespan; + double cpuspan; + timespan = difftime(Stoptime, Starttime); + cpuspan = ((double) (Stopcpu - Startcpu) / CLOCKS_PER_SEC); + fprintf(ofp, "\n\nTIME STAMP\n\n"); + fprintf(ofp, "Date and time: %s", asctime(localtime(&Starttime)) ); + fprintf(ofp, "Runtime (excl. input) : %.0f seconds (= %.1f minutes = %.1f hours)\n", + timespan, timespan/60., timespan/3600.); + fprintf(ofp, "Runtime (incl. input) : %.0f seconds (= %.1f minutes = %.1f hours)\n", + fulltime, fulltime/60., fulltime/3600.); +#ifdef TIMEDEBUG + fprintf(ofp, "CPU time (incl. input): %.0f seconds (= %.1f minutes = %.1f hours)\n\n", + fullcpu, fullcpu/60., fullcpu/3600.); +#endif /* TIMEDEBUG */ + +} + +/* extern int bestrfound; */ + +/* write output file */ +void writeoutputfile(FILE *ofp, int part) +{ + /* CZ */ +} + + +/******************************************************************************/ +/* timer routines */ +/******************************************************************************/ + +/* start timer */ +void starttimer() +{ + time(&time0); + time1 = time0; +} + +/* check remaining time and print message if necessary */ +void checktimer(uli numqts) +{ + double tc2, mintogo, minutes, hours; + + time(&time2); + if ( (time2 - time1) > 900) { /* generate message every 15 minutes */ + /* every 900 seconds */ + /* percentage of completed quartets */ + if (mflag == 0) { + mflag = 1; + FPRINTF(STDOUTFILE "\n"); + } + tc2 = 100.*numqts/Numquartets; + mintogo = (100.0-tc2) * + (double) (time2-time0)/60.0/tc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%.2f%%", tc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + fflush(STDOUT); + time1 = time2; + } + +} + +/* check remaining time and print message if necessary */ +void checktimer2(uli numqts, uli all, int flag) +{ + double tc2, mintogo, minutes, hours; + + static time_t tt1; + static time_t tt2; + + if (flag == 1) { + time(&tt1); + time(&tt2); + } else { + time(&tt2); + if ( (tt2 - tt1) > 900) { /* generate message every 15 minutes */ + /* every 900 seconds */ + /* percentage of completed quartets */ + if (mflag == 0) { + mflag = 1; + FPRINTF(STDOUTFILE "\n"); + } + tc2 = 100.*numqts/Numquartets; + mintogo = (100.0-tc2) * + (double) (tt2-time0)/60.0/tc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%.2f%%", tc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + fflush(STDOUT); + tt1 = tt2; + } + } +} + +void resetqblocktime(timearray_t *ta) +{ + ta->quartcpu += ta->quartblockcpu; + ta->quartblockcpu = 0.0; + ta->quarttime += ta->quartblocktime; + ta->quartblocktime = 0.0; +} /* resetqblocktime */ + + +void resetpblocktime(timearray_t *ta) +{ + ta->puzzcpu += ta->puzzblockcpu; + ta->puzzblockcpu = 0.0; + ta->puzztime += ta->puzzblocktime; + ta->puzzblocktime = 0.0; +} /* resetpblocktime */ + + +#ifdef TIMEDEBUG +void printtimearr(timearray_t *ta) +{ +# if ! PARALLEL + int PP_Myid; + PP_Myid = -1; +# endif + printf("(%2d) MMCPU: %11ld / %11ld \n", PP_Myid, ta->maxcpu, ta->mincpu); + printf("(%2d) CTick: %11.6f [tks] / %11.6f [s] \n", PP_Myid, ta->mincputick, ta->mincputicktime); + + printf("(%2d) MMTIM: %11ld / %11ld \n", PP_Myid, ta->maxtime, ta->mintime); + + printf("(%2d) Mxblk: %11.6e / %11.6e \n", PP_Myid, ta->maxcpublock, ta->maxtimeblock); + printf("(%2d) Mnblk: %11.6e / %11.6e \n", PP_Myid, ta->mincpublock, ta->mintimeblock); + + printf("(%2d) Gnrl: %11.6e / %11.6e \n", PP_Myid, ta->generalcpu, ta->generaltime); + printf("(%2d) Optn: %11.6e / %11.6e \n", PP_Myid, ta->optionscpu, ta->optionstime); + printf("(%2d) Estm: %11.6e / %11.6e \n", PP_Myid, ta->paramestcpu, ta->paramesttime); + printf("(%2d) Qurt: %11.6e / %11.6e \n", PP_Myid, ta->quartcpu, ta->quarttime); + printf("(%2d) QBlk: %11.6e / %11.6e \n", PP_Myid, ta->quartblockcpu, ta->quartblocktime); + printf("(%2d) QMax: %11.6e / %11.6e \n", PP_Myid, ta->quartmaxcpu, ta->quartmaxtime); + printf("(%2d) QMin: %11.6e / %11.6e \n", PP_Myid, ta->quartmincpu, ta->quartmintime); + + printf("(%2d) Puzz: %11.6e / %11.6e \n", PP_Myid, ta->puzzcpu, ta->puzztime); + printf("(%2d) PBlk: %11.6e / %11.6e \n", PP_Myid, ta->puzzblockcpu, ta->puzzblocktime); + printf("(%2d) PMax: %11.6e / %11.6e \n", PP_Myid, ta->puzzmaxcpu, ta->puzzmaxtime); + printf("(%2d) PMin: %11.6e / %11.6e \n", PP_Myid, ta->puzzmincpu, ta->puzzmintime); + + printf("(%2d) Tree: %11.6e / %11.6e \n", PP_Myid, ta->treecpu, ta->treetime); + printf("(%2d) TBlk: %11.6e / %11.6e \n", PP_Myid, ta->treeblockcpu, ta->treeblocktime); + printf("(%2d) TMax: %11.6e / %11.6e \n", PP_Myid, ta->treemaxcpu, ta->treemaxtime); + printf("(%2d) TMin: %11.6e / %11.6e \n", PP_Myid, ta->treemincpu, ta->treemintime); + + printf("(%2d) C/T : %11.6e / %11.6e \n", PP_Myid, + (ta->generalcpu + ta->optionscpu + ta->paramestcpu + ta->quartblockcpu + ta->puzzblockcpu + ta->treeblockcpu), + (ta->generaltime + ta->optionstime + ta->paramesttime + ta->quartblocktime + ta->puzzblocktime + ta->treeblocktime)); + printf("(%2d) CPU: %11.6e / Time: %11.6e \n", PP_Myid, ta->cpu, ta->time); + printf("(%2d) aCPU: %11.6e / aTime: %11.6e \n", PP_Myid, ta->fullcpu, ta->fulltime); + +} /* printtimearr */ +#endif /* TIMEDEBUG */ + +char *jtype [7]; + +void inittimearr(timearray_t *ta) +{ + clock_t c0, c1, c2; + + jtype[OVERALL] = "OVERALL"; + jtype[GENERAL] = "GENERAL"; + jtype[OPTIONS] = "OPTIONS"; + jtype[PARAMEST] = "PARAMeter ESTimation"; + jtype[QUARTETS] = "QUARTETS"; + jtype[PUZZLING] = "PUZZLING steps"; + jtype[TREEEVAL] = "TREE EVALuation"; + ta->currentjob = GENERAL; + + c1 = clock(); + c2 = clock(); + while (c1 == c2) + c2 = clock(); + ta->mincputick = (double)(c2 - c1); + ta->mincputicktime = ((double)(c2 - c1))/CLOCKS_PER_SEC; + + ta->tempcpu = clock(); + ta->tempcpustart = ta->tempcpu; + ta->tempfullcpu = ta->tempcpu; + time(&(ta->temptime)); + ta->temptimestart = ta->temptime; + ta->tempfulltime = ta->temptime; + + c0=0; c1=0; c2=(clock_t)((2 * c1) + 1);; + while (c1 < c2) { + c0 = c1; + c1 = c2; + c2 = (clock_t)((2 * c1) + 1); + } + if (c1 == c2) ta->maxcpu=c0; + if (c1 > c2) ta->maxcpu=c1; + + c0=0; c1=0; c2=(clock_t)((2 * c1) - 1); + while (c1 > c2) { + c0 = c1; + c1 = c2; + c2 = (clock_t)((2 * c1) - 1); + } + if (c1 == c2) ta->mincpu=c0; + if (c1 < c2) ta->mincpu=c1; + + + + ta->maxtime = 0; + ta->mintime = 0; + + ta->maxcpublock = 0; + ta->mincpublock = DBL_MAX; + ta->maxtimeblock = 0; + ta->mintimeblock = DBL_MAX; + + ta->cpu = 0.0; + ta->time = 0.0; + + ta->fullcpu = 0.0; + ta->fulltime = 0.0; + + ta->generalcpu = 0.0; + ta->optionscpu = 0.0; + ta->paramestcpu = 0.0; + ta->quartcpu = 0.0; + ta->quartblockcpu = 0.0; + ta->quartmaxcpu = 0.0; + ta->quartmincpu = ((double) ta->maxcpu)/CLOCKS_PER_SEC; + ta->puzzcpu = 0.0; + ta->puzzblockcpu = 0.0; + ta->puzzmaxcpu = 0.0; + ta->puzzmincpu = ((double) ta->maxcpu)/CLOCKS_PER_SEC; + ta->treecpu = 0.0; + ta->treeblockcpu = 0.0; + ta->treemaxcpu = 0.0; + ta->treemincpu = ((double) ta->maxcpu)/CLOCKS_PER_SEC; + + ta->generaltime = 0.0; + ta->optionstime = 0.0; + ta->paramesttime = 0.0; + ta->quarttime = 0.0; + ta->quartblocktime = 0.0; + ta->quartmaxtime = 0.0; + ta->quartmintime = DBL_MAX; + ta->puzztime = 0.0; + ta->puzzblocktime = 0.0; + ta->puzzmaxtime = 0.0; + ta->puzzmintime = DBL_MAX; + ta->treetime = 0.0; + ta->treeblocktime = 0.0; + ta->treemaxtime = 0.0; + ta->treemintime = DBL_MAX; +} /* inittimearr */ + + +/***************/ + +void addup(int jobtype, clock_t c1, clock_t c2, time_t t1, time_t t2, timearray_t *ta) +{ + double c, + t; + + if (t2 != t1) t = difftime(t2, t1); + else t = 0.0; + + if (c2 < c1) + c = ((double)(c2 - ta->mincpu))/CLOCKS_PER_SEC + + ((double)(ta->maxcpu - c1))/CLOCKS_PER_SEC; + else + c = ((double)(c2 - c1))/CLOCKS_PER_SEC; + + if (jobtype != OVERALL) { + + if (ta->mincpublock > c) ta->mincpublock = c; + if (ta->maxcpublock < c) ta->maxcpublock = c; + if (ta->mintimeblock > t) ta->mintimeblock = t; + if (ta->maxtimeblock < t) ta->maxtimeblock = t; + + switch (jobtype) { + case GENERAL: ta->generalcpu += c; + ta->generaltime += t; + break; + case OPTIONS: ta->optionscpu += c; + ta->optionstime += t; + break; + case PARAMEST: ta->paramestcpu += c; + ta->paramesttime += t; + break; + case QUARTETS: ta->quartblockcpu += c; + ta->quartblocktime += t; + if (ta->quartmincpu > c) ta->quartmincpu = c; + if (ta->quartmaxcpu < c) ta->quartmaxcpu = c; + if (ta->quartmintime > t) ta->quartmintime = t; + if (ta->quartmaxtime < t) ta->quartmaxtime = t; + break; + case PUZZLING: ta->puzzblockcpu += c; + ta->puzzblocktime += t; + if (ta->puzzmincpu > c) ta->puzzmincpu = c; + if (ta->puzzmaxcpu < c) ta->puzzmaxcpu = c; + if (ta->puzzmintime > t) ta->puzzmintime = t; + if (ta->puzzmaxtime < t) ta->puzzmaxtime = t; + break; + case TREEEVAL: ta->treeblockcpu += c; + ta->treeblocktime += t; + if (ta->treemincpu > c) ta->treemincpu = c; + if (ta->treemaxcpu < c) ta->treemaxcpu = c; + if (ta->treemintime > t) ta->treemintime = t; + if (ta->treemaxtime < t) ta->treemaxtime = t; + break; + } + ta->cpu += c; + ta->time += t; + + } else { + ta->fullcpu += c; + ta->fulltime += t; + } + +# ifdef TIMEDEBUG + { +# if ! PARALLEL + int PP_Myid = -1; +# endif /* !PARALLEL */ + printf("(%2d) CPU: +%10.6f / Time: +%10.6f (%s)\n", PP_Myid, c, t, jtype[jobtype]); + printf("(%2d) CPU: %11.6f / Time: %11.6f (%s)\n", PP_Myid, ta->cpu, ta->time, jtype[jobtype]); + printf("(%2d) CPU: %11.6f / Time: %11.6f (%s)\n", PP_Myid, ta->fullcpu, ta->fulltime, jtype[jobtype]); + } +# endif /* TIMEDEBUG */ +} /* addup */ + + +/***************/ + + +void addtimes(int jobtype, timearray_t *ta) +{ + clock_t tempc; + time_t tempt; + + time(&tempt); + tempc = clock(); + + if ((tempc < ta->tempfullcpu) || (jobtype == OVERALL)) { /* CPU counter overflow for overall time */ + addup(OVERALL, ta->tempfullcpu, tempc, ta->tempfulltime, tempt, ta); + ta->tempfullcpu = tempc; + ta->tempfulltime = tempt; + if (jobtype == OVERALL) { + addup(ta->currentjob, ta->tempcpustart, tempc, ta->temptimestart, tempt, ta); + ta->tempcpustart = ta->tempcpu; + ta->tempcpu = tempc; + ta->temptimestart = ta->temptime; + ta->temptime = tempt; + } + } + + if((jobtype != ta->currentjob) && (jobtype != OVERALL)) { /* change of job type */ + addup(ta->currentjob, ta->tempcpustart, ta->tempcpu, ta->temptimestart, ta->temptime, ta); + ta->tempcpustart = ta->tempcpu; + ta->tempcpu = tempc; + ta->temptimestart = ta->temptime; + ta->temptime = tempt; + ta->currentjob = jobtype; + } + + if (tempc < ta->tempcpustart) { /* CPU counter overflow */ + addup(jobtype, ta->tempcpustart, tempc, ta->temptimestart, tempt, ta); + ta->tempcpustart = ta->tempcpu; + ta->tempcpu = tempc; + ta->temptimestart = ta->temptime; + ta->temptime = tempt; + } + +} /* addtimes */ + + + +/******************************************************************************/ + +/* estimate parameters of substitution process and rate heterogeneity - no tree + n-taxon tree is not needed because of quartet method or NJ tree topology */ +void estimateparametersnotree() +{ + int it, nump, change; + double TSold, YRold, FIold, GEold; + + it = 0; + nump = 0; + + /* count number of parameters */ + if (data_optn == NUCLEOTIDE && optim_optn) nump++; + if (fracinv_optim || grate_optim) nump++; + + do { /* repeat until nothing changes any more */ + it++; + change = FALSE; + + /* optimize substitution parameters */ + if (data_optn == NUCLEOTIDE && optim_optn) { + + TSold = TSparam; + YRold = YRparam; + + + /* + * optimize + */ + + FPRINTF(STDOUTFILE "Optimizing missing substitution process parameters\n"); + fflush(STDOUT); + + if (qcalg_optn) { /* quartet sampling */ + optimseqevolparamsq(); + } else { /* NJ tree */ + tmpfp = tmpfile(); + njtree(tmpfp); + rewind(tmpfp); + readusertree(tmpfp); + closefile(tmpfp); + optimseqevolparamst(); + } + + computedistan(); /* update ML distances */ + + /* same tolerance as 1D minimization */ + if ((fabs(TSparam - TSold) > 3.3*PEPS1) || + (fabs(YRparam - YRold) > 3.3*PEPS1) + ) change = TRUE; + + } + + /* optimize rate heterogeneity variables */ + if (fracinv_optim || grate_optim) { + + FIold = fracinv; + GEold = Geta; + + + /* + * optimize + */ + + FPRINTF(STDOUTFILE "Optimizing missing rate heterogeneity parameters\n"); + fflush(STDOUT); + /* compute NJ tree */ + tmpfp = tmpfile(); + njtree(tmpfp); + /* use NJ tree topology to estimate parameters */ + rewind(tmpfp); + readusertree(tmpfp); + closefile(tmpfp); + + optimrateparams(); + computedistan(); /* update ML distances */ + + + /* same tolerance as 1D minimization */ + if ((fabs(fracinv - FIold) > 3.3*PEPS2) || + (fabs(Geta - GEold) > 3.3*PEPS2) + ) change = TRUE; + + } + + if (nump == 1) return; + + } while (it != MAXITS && change); + + return; +} + + +/* estimate parameters of substitution process and rate heterogeneity - tree + same as above but here the n-taxon tree is already in memory */ +void estimateparameterstree() +{ + int it, nump, change; + double TSold, YRold, FIold, GEold; + + it = 0; + nump = 0; + + /* count number of parameters */ + if (data_optn == NUCLEOTIDE && optim_optn) nump++; + if (fracinv_optim || grate_optim) nump++; + + do { /* repeat until nothing changes any more */ + it++; + change = FALSE; + + /* optimize substitution process parameters */ + if (data_optn == NUCLEOTIDE && optim_optn) { + + TSold = TSparam; + YRold = YRparam; + + + /* + * optimize + */ + + FPRINTF(STDOUTFILE "Optimizing missing substitution process parameters\n"); + fflush(STDOUT); + optimseqevolparamst(); + computedistan(); /* update ML distances */ + + + /* same tolerance as 1D minimization */ + if ((fabs(TSparam - TSold) > 3.3*PEPS1) || + (fabs(YRparam - YRold) > 3.3*PEPS1) + ) change = TRUE; + + } + + /* optimize rate heterogeneity variables */ + if (fracinv_optim || grate_optim) { + + FIold = fracinv; + GEold = Geta; + + + /* + * optimize + */ + + FPRINTF(STDOUTFILE "Optimizing missing rate heterogeneity parameters\n"); + fflush(STDOUT); + optimrateparams(); + computedistan(); /* update ML distances */ + + + /* same tolerance as 1D minimization */ + if ((fabs(fracinv - FIold) > 3.3*PEPS2) || + (fabs(Geta - GEold) > 3.3*PEPS2) + ) change = TRUE; + + } + + if (nump == 1) return; + + } while (it != MAXITS && change); + + return; +} + + +/******************************************************************************/ +/* exported from main */ +/******************************************************************************/ + +void compute_quartlklhds(int a, int b, int c, int d, double *d1, double *d2, double *d3, int approx) +{ + if (approx == APPROX) { + + *d1 = quartet_alklhd(a,b, c,d); /* (a,b)-(c,d) */ + *d2 = quartet_alklhd(a,c, b,d); /* (a,c)-(b,d) */ + *d3 = quartet_alklhd(a,d, b,c); /* (a,d)-(b,c) */ + + } else /* approx == EXACT */ { + + *d1 = quartet_lklhd(a,b, c,d); /* (a,b)-(c,d) */ + *d2 = quartet_lklhd(a,c, b,d); /* (a,c)-(b,d) */ + *d3 = quartet_lklhd(a,d, b,c); /* (a,d)-(b,c) */ + + } +} + +/***************************************************************/ + +void recon_tree() +{ + int i; +# if ! PARALLEL + int a, b, c; + uli nq; + double tc2, mintogo, minutes, hours; +# endif + + /* allocate memory for taxon list of bad quartets */ + badtaxon = new_ulivector(Maxspc); + for (i = 0; i < Maxspc; i++) badtaxon[i] = 0; + + /* allocate variable used for randomizing input order */ + trueID = new_ivector(Maxspc); + + /* allocate memory for quartets */ + quartetinfo = mallocquartets(Maxspc); + + /* prepare for consensus tree analysis */ + initconsensus(); + + if (!(readquart_optn) || (readquart_optn && savequart_optn)) { + /* compute quartets */ + FPRINTF(STDOUTFILE "Computing quartet maximum likelihood trees\n"); + fflush(STDOUT); + computeallquartets(); + } + + if (savequart_optn) + writeallquarts(Maxspc, ALLQUART, quartetinfo); + if (readquart_optn) { + int xx1, xx2, xx3, xx4, count; + readallquarts (Maxspc, ALLQUART, quartetinfo); + if (show_optn) { /* list all unresolved quartets */ + openfiletowrite(&unresfp, UNRESOLVED, "unresolved quartet trees"); + fprintf(unresfp, "List of all completely unresolved quartets:\n\n"); + } + + /* initialize bad quartet memory */ + for (count = 0; count < Maxspc; count++) badtaxon[count] = 0; + badqs = 0; + + for (xx4 = 3; xx4 < Maxspc; xx4++) + for (xx3 = 2; xx3 < xx4; xx3++) + for (xx2 = 1; xx2 < xx3; xx2++) + for (xx1 = 0; xx1 < xx2; xx1++) { + if (readquartet(xx1, xx2, xx3, xx4) == 7) { + badqs++; + badtaxon[xx1]++; + badtaxon[xx2]++; + badtaxon[xx3]++; + badtaxon[xx4]++; + if (show_optn) { + fputid10(unresfp, xx1); + fprintf(unresfp, " "); + fputid10(unresfp, xx2); + fprintf(unresfp, " "); + fputid10(unresfp, xx3); + fprintf(unresfp, " "); + fputid (unresfp, xx4); + fprintf(unresfp, "\n"); + } + } + } /* end for xx4; for xx3; for xx2; for xx1 */ + if (show_optn) /* list all unresolved quartets */ + fclose(unresfp); + } /* readquart_optn */ + +# if PARALLEL + PP_SendAllQuarts(numquarts(Maxspc), quartetinfo); +# endif /* PARALLEL */ + + FPRINTF(STDOUTFILE "Computing quartet puzzling tree\n"); + fflush(STDOUT); + + /* start timer - percentage of completed trees */ + time(&time0); + time1 = time0; + mflag = 0; + + /* open file for chronological list of puzzling step trees */ + if((listqptrees == PSTOUT_LIST) || (listqptrees == PSTOUT_LISTORDER)) + openfiletowrite(&qptlist, OUTPTLIST, "puzzling step trees (chonological)"); + +# if PARALLEL + { + PP_SendDoPermutBlock(Numtrial); + } +# else + addtimes(GENERAL, &tarr); + for (Currtrial = 0; Currtrial < Numtrial; Currtrial++) { + + /* randomize input order */ + chooser(Maxspc, Maxspc, trueID); + + /* initialize tree */ + inittree(); + + /* adding all other leafs */ + for (i = 3; i < Maxspc; i++) { + + /* clear all edgeinfos */ + resetedgeinfo(); + + /* clear counter of quartets */ + nq = 0; + + /* + * core of quartet puzzling algorithm + */ + + for (a = 0; a < nextleaf - 2; a++) + for (b = a + 1; b < nextleaf - 1; b++) + for (c = b + 1; c < nextleaf; c++) { + + /* check which two _leaves_ out of a, b, c + are closer related to each other than + to leaf i according to a least squares + fit of the continous Baysian weights to the + seven trivial "attractive regions". We assign + a score of 1 to all edges between these two leaves + chooseA and chooseB */ + + checkquartet(a, b, c, i); + incrementedgeinfo(chooseA, chooseB); + + nq++; + + /* generate message every 15 minutes */ + + /* check timer */ + time(&time2); + if ( (time2 - time1) > 900) { + /* every 900 seconds */ + /* percentage of completed trees */ + if (mflag == 0) { + FPRINTF(STDOUTFILE "\n"); + mflag = 1; + } + tc2 = 100.0*Currtrial/Numtrial + + 100.0*nq/Numquartets/Numtrial; + mintogo = (100.0-tc2) * + (double) (time2-time0)/60.0/tc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%2.2f%%", tc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + fflush(STDOUT); + time1 = time2; + } + } + + /* find out which edge has the lowest edgeinfo */ + minimumedgeinfo(); + + /* add the next leaf on minedge */ + addnextleaf(minedge); + } + + /* compute bipartitions of current tree */ + computebiparts(); + makenewsplitentries(); + + { + int *ctree, startnode; + char *trstr; + treelistitemtype *treeitem; + ctree = initctree(); + copytree(ctree); + startnode = sortctree(ctree); + trstr=sprintfctree(ctree, psteptreestrlen); + + + treeitem = addtree2list(&trstr, 1, &psteptreelist, &psteptreenum, &psteptreesum); + + if((listqptrees == PSTOUT_LIST) + || (listqptrees == PSTOUT_LISTORDER)) { + /* print: order no/# topol per this id/tree id/sum of unique topologies/sum of trees so far */ + fprintf(qptlist, "%ld.\t1\t%d\t%d\t%d\t%d\n", + Currtrial + 1, (*treeitem).count, (*treeitem).id, psteptreenum, psteptreesum); + } + +# ifdef VERBOSE1 + printf("%s\n", trstr); + printfsortedpstrees(psteptreelist); +# endif + freectree(&ctree); + } + + + + /* free tree before building the next tree */ + freetree(); + + addtimes(PUZZLING, &tarr); + } +# endif /* PARALLEL */ + + /* close file for list of puzzling step trees */ + if((listqptrees == PSTOUT_LIST) || (listqptrees == PSTOUT_LISTORDER)) + closefile(qptlist); + + if (mflag == 1) FPRINTF(STDOUTFILE "\n"); + + /* garbage collection */ + free(splitcomp); + free_ivector(trueID); + +# if ! PARALLEL + free_cmatrix(biparts); +# endif /* PARALLEL */ + + freequartets(); + + /* compute majority rule consensus tree */ + makeconsensus(); + + /* write consensus tree to tmp file */ + tmpfp = tmpfile(); + writeconsensustree(tmpfp); +} /* recon_tree */ + +/***************************************************************/ + +void map_lklhd() +{ + int i, a, a1, a2, b, b1, b2, c, c1, c2, d; + uli nq; + double logs[3], d1, d2, d3, temp; + ivector qts, mlorder, gettwo; + /* reset variables */ + ar1 = ar2 = ar3 = 0; + reg1 = reg2 = reg3 = reg4 = reg5 = reg6 = reg7 = 0; + reg1l = reg1r = reg2u = reg2d = reg3u = reg3d = reg4u = + reg4d = reg5l = reg5r = reg6u = reg6d = 0; + + /* place for random quartet */ + qts = new_ivector(4); + + /* initialize output file */ + openfiletowrite(&trifp, TRIANGLE, "Postscript output"); + initps(trifp); + FPRINTF(STDOUTFILE "Performing likelihood mapping analysis\n"); + fflush(STDOUT); + + /* start timer */ + starttimer(); + nq = 0; + mflag = 0; + + addtimes(GENERAL, &tarr); + if (lmqts == 0) { /* all possible quartets */ + + if (numclust == 4) { /* four-cluster analysis */ + + for (a = 0; a < clustA; a++) + for (b = 0; b < clustB; b++) + for (c = 0; c < clustC; c++) + for (d = 0; d < clustD; d++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(clusterA[a],clusterB[b],clusterC[c],clusterD[d],&d1,&d2,&d3, APPROX); + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + } + + if (numclust == 3) { /* three-cluster analysis */ + + gettwo = new_ivector(2); + + for (a = 0; a < clustA; a++) + for (b = 0; b < clustB; b++) + for (c1 = 0; c1 < clustC-1; c1++) + for (c2 = c1+1; c2 < clustC; c2++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(clusterA[a],clusterB[b],clusterC[c1],clusterC[c2],&d1,&d2,&d3, APPROX); + + /* randomize order of d2 and d3 */ + if (randominteger(2) == 1) { + temp = d3; + d3 = d2; + d2 = temp; + } + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + free_ivector(gettwo); + } + + if (numclust == 2) { /* two-cluster analysis */ + + gettwo = new_ivector(2); + + for (a1 = 0; a1 < clustA-1; a1++) + for (a2 = a1+1; a2 < clustA; a2++) + for (b1 = 0; b1 < clustB-1; b1++) + for (b2 = b1+1; b2 < clustB; b2++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(clusterA[a1],clusterA[a2],clusterB[b1],clusterB[b2],&d1,&d2,&d3, APPROX); + + /* randomize order of d2 and d3 */ + if (randominteger(2) == 1) { + temp = d3; + d3 = d2; + d2 = temp; + } + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + + free_ivector(gettwo); + } + + if (numclust == 1) { /* normal likelihood mapping (one cluster) */ + + mlorder = new_ivector(3); + +#if 0 + for (i = 3; i < Maxspc; i++) + for (a = 0; a < i - 2; a++) + for (b = a + 1; b < i - 1; b++) + for (c = b + 1; c < i; c++) + for (d = 3; d < Maxspc; d++) + for (c = 2; c < d; c++) + for (b = 1; b < c; b++) + for (a = 0; a < b; a++) +#endif + + for (i = 3; i < Maxspc; i++) + for (c = 2; c < i; c++) + for (b = 1; b < c; b++) + for (a = 0; a < b; a++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(a,b,c,i,&logs[0],&logs[1],&logs[2], APPROX); + + /* randomize order */ + chooser(3,3,mlorder); + d1 = logs[mlorder[0]]; + d2 = logs[mlorder[1]]; + d3 = logs[mlorder[2]]; + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + free_ivector(mlorder); + } + + } else { /* randomly selected quartets */ + + if (numclust == 4) { /* four-cluster analysis */ + + for (lmqts = 0; lmqts < Numquartets; lmqts++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* choose random quartet */ + qts[0] = clusterA[ randominteger(clustA) ]; + qts[1] = clusterB[ randominteger(clustB) ]; + qts[2] = clusterC[ randominteger(clustC) ]; + qts[3] = clusterD[ randominteger(clustD) ]; + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(qts[0],qts[1],qts[2],qts[3],&d1,&d2,&d3, APPROX); + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + } + + if (numclust == 3) { /* three-cluster analysis */ + + gettwo = new_ivector(2); + + for (lmqts = 0; lmqts < Numquartets; lmqts++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* choose random quartet */ + qts[0] = clusterA[ randominteger(clustA) ]; + qts[1] = clusterB[ randominteger(clustB) ]; + chooser(clustC, 2, gettwo); + qts[2] = clusterC[gettwo[0]]; + qts[3] = clusterC[gettwo[1]]; + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(qts[0],qts[1],qts[2],qts[3],&d1,&d2,&d3, APPROX); + + /* order of d2 and d3 is already randomized! */ + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + + free_ivector(gettwo); + } + + if (numclust == 2) { /* two-cluster analysis */ + + gettwo = new_ivector(2); + + for (lmqts = 0; lmqts < Numquartets; lmqts++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* choose random quartet */ + chooser(clustA, 2, gettwo); + qts[0] = clusterA[gettwo[0]]; + qts[1] = clusterA[gettwo[1]]; + chooser(clustB, 2, gettwo); + qts[2] = clusterB[gettwo[0]]; + qts[3] = clusterB[gettwo[1]]; + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(qts[0],qts[1],qts[2],qts[3],&d1,&d2,&d3, APPROX); + + /* order of d2 and d3 is already randomized! */ + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + free_ivector(gettwo); + } + + if (numclust == 1) { /* normal likelihood mapping (one cluster) */ + + for (lmqts = 0; lmqts < Numquartets; lmqts++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* choose random quartet */ + chooser(Maxspc, 4, qts); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(qts[0],qts[1],qts[2],qts[3],&d1,&d2,&d3, APPROX); + + /* order of d1, d2, and d3 is already randomized! */ + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + } + } + + finishps(trifp); + closefile(trifp); + free_ivector(qts); + +} /* map_lklhd */ + +/***************************************************************/ + +void setdefaults() { + + strcpy(INFILE, INFILEDEFAULT); + strcpy(OUTFILE, OUTFILEDEFAULT); + strcpy(TREEFILE, TREEFILEDEFAULT); + strcpy(INTREE, INTREEDEFAULT); + strcpy(DISTANCES, DISTANCESDEFAULT); + strcpy(TRIANGLE, TRIANGLEDEFAULT); + strcpy(UNRESOLVED, UNRESOLVEDDEFAULT); + strcpy(ALLQUART, ALLQUARTDEFAULT); + strcpy(ALLQUARTLH, ALLQUARTLHDEFAULT); + strcpy(OUTPTLIST, OUTPTLISTDEFAULT); + strcpy(OUTPTORDER, OUTPTORDERDEFAULT); + + usebestq_optn = FALSE; + savequartlh_optn = FALSE; + savequart_optn = FALSE; + readquart_optn = FALSE; + + randseed = -1; /* to set random random seed */ + +} /* setdefaults */ + +/***************************************************************/ + +void printversion() +{ +# if ! PARALLEL + fprintf(stderr, "puzzle (%s) %s\n", PACKAGE, VERSION); +#else + fprintf(stderr, "ppuzzle (%s) %s\n", PACKAGE, VERSION); +# endif + exit (0); +} +/***************************************************************/ + +void printusage(char *fname) +{ + fprintf(stderr, "\n\nUsage: %s [-h] [ Infilename [ UserTreeFilename ] ]\n\n", fname); +# if PARALLEL + PP_SendDone(); + MPI_Finalize(); +# endif + exit (1); +} + +/***************************************************************/ + +#ifdef HHH +void printusagehhh(char *fname) +{ + fprintf(stderr, "\n\nUsage: %s [options] [ Infilename [ UserTreeFilename ] ]\n\n", fname); + fprintf(stderr, " -h - print usage\n"); + fprintf(stderr, " -wqf - write quartet file to Infilename.allquart\n"); + fprintf(stderr, " -rqf - read quartet file from Infilename.allquart\n"); + fprintf(stderr, " -wqlb - write quart lhs to Infilename.allquartlh (binary)\n"); + fprintf(stderr, " -wqla - write quart lhs to Infilename.allquartlh (ASCII)\n"); + fprintf(stderr, " -bestq - use best quart, no basian weights\n"); + fprintf(stderr, " -randseed<#> - use <#> as random number seed, for debug purposes only\n"); +# if PARALLEL + PP_SendDone(); + MPI_Finalize(); +# endif + exit (2); +} +#endif /* HHH */ + +/***************************************************************/ + + +void scancmdline(int *argc, char **argv[]) +{ + static short infileset = 0; + static short intreefileset = 0; + short flagused; + int n; + int count, dummyint; + + for (n = 1; n < *argc; n++) { +# ifdef VERBOSE1 + printf("argv[%d] = %s\n", n, (*argv)[n]); +# endif + + flagused = FALSE; + +# ifdef HHH + dummyint = 0; + count = sscanf((*argv)[n], "-wqlb%n", &dummyint); + if (dummyint == 5) { + savequartlh_optn = TRUE; + saveqlhbin_optn = TRUE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n], "-wqla%n", &dummyint); + if (dummyint == 5) { + savequartlh_optn = TRUE; + saveqlhbin_optn = FALSE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n], "-wqf%n", &dummyint); + if (dummyint == 4) { + savequart_optn = TRUE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-rqf%n", &dummyint); + if (dummyint == 4) { + readquart_optn = TRUE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-bestq%n", &dummyint); + if (dummyint == 6) { + usebestq_optn = TRUE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-hhh%n", &dummyint); + if (dummyint==4) { + printusagehhh((*argv)[0]); + flagused = TRUE; + } +# endif /* HHH */ + + dummyint = 0; + count = sscanf((*argv)[n],"-V%n", &dummyint); + if (dummyint==2) { + printversion((*argv)[0]); + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-version%n", &dummyint); + if (dummyint==8) { + printversion((*argv)[0]); + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"--version%n", &dummyint); + if (dummyint>=4) { + printversion((*argv)[0]); + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-h%n", &dummyint); + if (dummyint==2) { + printusage((*argv)[0]); + flagused = TRUE; + } + + count = sscanf((*argv)[n],"-randseed%d", &dummyint); + if (count == 1) { + randseed = dummyint; + flagused = TRUE; + } + +#if 0 + count = sscanf((*argv)[n],"-h%n", &dummyint); + if ((count == 1) && (dummyint>=2)) printusage((*argv)[0]); + + count = sscanf((*argv)[n],"-writequarts%n", &dummyint); + if (count == 1) writequartstofile = 1;; + + count = sscanf((*argv)[n],"-ws%d", &dummyint); + if (count == 1) windowsize = dummyint; +#endif + + if ((*argv)[n][0] != '-') { + if (infileset == 0) { + strcpy(INFILE, (*argv)[n]); + infileset++; + sprintf(OUTFILE ,"%s.%s", INFILE, OUTFILEEXT); + sprintf(TREEFILE ,"%s.%s", INFILE, TREEFILEEXT); + sprintf(DISTANCES ,"%s.%s", INFILE, DISTANCESEXT); + sprintf(TRIANGLE ,"%s.%s", INFILE, TRIANGLEEXT); + sprintf(UNRESOLVED ,"%s.%s", INFILE, UNRESOLVEDEXT); + sprintf(ALLQUART ,"%s.%s", INFILE, ALLQUARTEXT); + sprintf(ALLQUARTLH ,"%s.%s", INFILE, ALLQUARTLHEXT); + sprintf(OUTPTLIST ,"%s.%s", INFILE, OUTPTLISTEXT); + sprintf(OUTPTORDER ,"%s.%s", INFILE, OUTPTORDEREXT); + FPRINTF(STDOUTFILE "Input file: %s\n", INFILE); + flagused = TRUE; + } else { + if (intreefileset == 0) { + strcpy(INTREE, (*argv)[n]); + intreefileset++; + sprintf(OUTFILE ,"%s.%s", INTREE, OUTFILEEXT); + sprintf(TREEFILE ,"%s.%s", INTREE, TREEFILEEXT); + sprintf(DISTANCES ,"%s.%s", INTREE, DISTANCESEXT); + FPRINTF(STDOUTFILE "Usertree file: %s\n", INTREE); + flagused = TRUE; + } + } + } + if (flagused == FALSE) { + fprintf(stderr, "WARNING: commandline parameter %d not recognized (\"%s\")\n", n, (*argv)[n]); + } + flagused = FALSE; + } + +} /* scancmdline */ + + +/***************************************************************/ + +void inputandinit(int *argc, char **argv[]) { + + int ci; + + /* vectors used in QP and LM analysis */ + qweight = new_dvector(3); + sqdiff = new_dvector(3); + qworder = new_ivector(3); + sqorder = new_ivector(3); + + /* Initialization and parsing of Commandline */ + setdefaults(); + scancmdline(argc, argv); + + /* initialize random numbers generator */ + if (randseed >= 0) + fprintf(stderr, "WARNING: random seed set to %d for debugging!\n", randseed); + randseed = initrandom(randseed); + + psteptreelist = NULL; + psteptreesum = 0; + bestratefound = 0; + +# ifndef ALPHA + FPRINTF(STDOUTFILE "\n\n\nWELCOME TO TREE-PUZZLE %s!\n\n\n", VERSION); +# else + FPRINTF(STDOUTFILE "\n\n\nWELCOME TO TREE-PUZZLE %s%s!\n\n\n", VERSION, ALPHA); +# endif + + + /* get sequences */ + openfiletoread(&seqfp, INFILE, "sequence data"); + getsizesites(seqfp); + FPRINTF(STDOUTFILE "\nInput data set contains %d sequences of length %d\n", Maxspc, Maxseqc); + getdataset(seqfp); + closefile(seqfp); + data_optn = guessdatatype(); + + /* translate characters into format used by ML engine */ + nuc_optn = TRUE; + SH_optn = FALSE; + Seqchar = NULL; + translatedataset(); + + /* estimate base frequencies from data set */ + Freqtpm = NULL; + Basecomp = NULL; + estimatebasefreqs(); + + /* guess model of substitution */ + guessmodel(); + + /* initialize guess variables */ + auto_datatype = AUTO_GUESS; + if (data_optn == AMINOACID) auto_aamodel = AUTO_GUESS; + else auto_aamodel = AUTO_DEFAULT; + /* save guessed amino acid options */ + guessDayhf_optn = Dayhf_optn; + guessJtt_optn = Jtt_optn; + guessmtrev_optn = mtrev_optn; + guesscprev_optn = cprev_optn; + guessblosum62_optn = blosum62_optn; + guessvtmv_optn = vtmv_optn; + guesswag_optn = wag_optn; + guessauto_aamodel = auto_aamodel; + + + /* check for user specified tree */ + if ((utfp = fopen(INTREE, "r")) != NULL) { + fclose(utfp); + puzzlemode = USERTREE; + } else { + puzzlemode = QUARTPUZ; + } + + /* reserve memory for cluster LM analysis */ + clusterA = new_ivector(Maxspc); + clusterB = new_ivector(Maxspc); + clusterC = new_ivector(Maxspc); + clusterD = new_ivector(Maxspc); + + /* set options interactively */ + setoptions(); + + /* open usertree file right after start */ + if (typ_optn == TREERECON_OPTN && puzzlemode == USERTREE) { + openfiletoread(&utfp, INTREE, "user trees"); + } + + /* start main timer */ + time(&Starttime); + Startcpu=clock(); + addtimes(OPTIONS, &tarr); + + /* symmetrize doublet frequencies if specified */ + symdoublets(); + + /* initialise ML */ + mlstart(); + + /* determine how many usertrees */ + if (typ_optn == TREERECON_OPTN && puzzlemode == USERTREE) { + numutrees = 0; + do { + ci = fgetc(utfp); + if ((char) ci == ';') numutrees++; + } while (ci != EOF); + rewind(utfp); + if (numutrees < 1) { + FPRINTF(STDOUTFILE "Unable to proceed (no tree in input tree file)\n\n\n"); + exit(1); + } + } + + /* check fraction of invariable sites */ + if ((rhetmode == TWORATE || rhetmode == MIXEDRATE) && !fracinv_optim) + /* fraction of invariable site was specified manually */ + if (fracinv > MAXFI) + fracinv = MAXFI; + + addtimes(GENERAL, &tarr); + /* estimate parameters */ + if (!(typ_optn == TREERECON_OPTN && puzzlemode == USERTREE)) { + /* no tree present */ + estimateparametersnotree(); + } else { + if (utree_optn) { + /* use 1st user tree */ + readusertree(utfp); + rewind(utfp); + estimateparameterstree(); + } else { + /* don't use first user tree */ + estimateparametersnotree(); + } + } + addtimes(PARAMEST, &tarr); + + /* compute expected Ts/Tv ratio */ + if (data_optn == NUCLEOTIDE) computeexpectations(); + +} /* inputandinit */ + + + +/***************************************************************/ + +void evaluatetree(FILE *intreefp, FILE *outtreefp, int pmode, int utreenum, int maxutree, int *oldlocroot) +{ + + switch (pmode) { + case QUARTPUZ: /* read QP tree */ + readusertree(intreefp); + FPRINTF(STDOUTFILE "Computing maximum likelihood branch lengths (without clock)\n"); + fflush(STDOUT); + usertree_lklhd(); + findbestratecombination(); + break; + case USERTREE: /* read user tree */ + readusertree(intreefp); + FPRINTF(STDOUTFILE "Computing maximum likelihood branch lengths (without clock) for tree # %d\n", utreenum+1); + fflush(STDOUT); + usertree_lklhd(); + if (maxutree > 1) { + ulkl[utreenum] = Ctree->lklhd; + allsitelkl(Ctree->condlkl, allsites[utreenum]); + } + if (utreenum==0) findbestratecombination(); + break; + } + + + if (compclock) { /* clocklike branch length */ + switch (pmode) { + case QUARTPUZ: + FPRINTF(STDOUTFILE "Computing maximum likelihood branch lengths (with clock)\n"); + fflush(STDOUT); + break; + case USERTREE: + FPRINTF(STDOUTFILE "Computing maximum likelihood branch lengths (with clock) for tree # %d\n", utreenum+1); + fflush(STDOUT); + break; + } + + /* find best place for root */ + rootsearch = 0; + + if (utreenum==0) locroot = *oldlocroot; + else *oldlocroot = locroot; + + if (locroot < 0) { + locroot = findrootedge(); + rootsearch = 1; + } + /* if user-specified edge for root does not exist use displayed outgroup */ + if (!checkedge(locroot)) { + locroot = outgroup; + rootsearch = 2; + } + /* compute likelihood */ + clock_lklhd(locroot); + if (maxutree > 1) { + ulklc[utreenum] = Ctree->lklhdc; + allsitelkl(Ctree->condlkl, allsitesc[utreenum]); + } + + } + + if (clockmode == 0) + fprintf(outtreefp, "[ lh=%.6f ]", Ctree->lklhd); + else + fprintf(outtreefp, "[ lh=%.6f ]", Ctree->lklhdc); + + /* write ML branch length tree to outree file */ + clockmode = 0; /* nonclocklike branch lengths */ + fputphylogeny(outtreefp); + + /* clocklike branch lengths */ + if (compclock) { + clockmode = 1; + fputrooted(outtreefp, locroot); + } +} /* evaluatetree */ + +/***************************************************************/ + +void memcleanup() { + if (puzzlemode == QUARTPUZ && typ_optn == TREERECON_OPTN) { + free(splitfreqs); + free(splitpatterns); + free(splitsizes); + free_ivector(consconfid); + free_ivector(conssizes); + free_cmatrix(consbiparts); + free_ulivector(badtaxon); + } + free_cmatrix(Identif); + free_dvector(Freqtpm); + free_imatrix(Basecomp); + free_ivector(clusterA); + free_ivector(clusterB); + free_ivector(clusterC); + free_ivector(clusterD); + free_dvector(qweight); + free_dvector(sqdiff); + free_ivector(qworder); + free_ivector(sqorder); + freetreelist(&psteptreelist, &psteptreenum, &psteptreesum); +} /* memcleanup */ + +/***************************************************************/ + + +/******************************************************************************/ +/* main part */ +/******************************************************************************/ + +int main(int argc, char *argv[]) +{ + int i, oldlocroot=0; + + /* start main timer */ + time(&walltimestart); + cputimestart = clock(); + inittimearr(&tarr); + + + + inputandinit(&argc, &argv); + + + + /* write distance matrix */ + FPRINTF(STDOUTFILE "Writing pairwise distances to file %s\n", DISTANCES); + openfiletowrite(&dfp, DISTANCES, "pairwise distances"); + putdistance(dfp); + closefile(dfp); + + + + free_cmatrix(Seqchar); + free_cmatrix(seqchars); + + + + + /* write CPU/Wallclock times and parallel statistics */ + time(&walltimestop); + cputimestop = clock(); + addtimes(OVERALL, &tarr); + + fullcpu = tarr.fullcpu; + fulltime = tarr.fulltime; + + + + /* stop timer */ + + time(&Stoptime); + Stopcpu=clock(); + /* + timestamp(ofp); + closefile(ofp); + CZ 05/16/01*/ + + + /* printbestratecombination(stderr); */ + mlfinish(); + + FPRINTF(STDOUTFILE "\nAll results written to disk:\n"); + /*FPRINTF(STDOUTFILE " Puzzle report file: %s\n", OUTFILE);*/ + FPRINTF(STDOUTFILE " Likelihood distances: %s\n", DISTANCES); + + if (typ_optn == TREERECON_OPTN && puzzlemode != PAIRDIST) + FPRINTF(STDOUTFILE " Phylip tree file: %s\n", TREEFILE); + if (typ_optn == TREERECON_OPTN && puzzlemode == QUARTPUZ) { + if ((listqptrees == PSTOUT_ORDER) ||(listqptrees == PSTOUT_LISTORDER)) + FPRINTF(STDOUTFILE " Unique puzzling step trees: %s\n", OUTPTORDER); + if ((listqptrees == PSTOUT_LIST) ||(listqptrees == PSTOUT_LISTORDER)) + FPRINTF(STDOUTFILE " Puzzling step tree list: %s\n", OUTPTLIST); + } + if (show_optn && typ_optn == TREERECON_OPTN && puzzlemode == QUARTPUZ) + FPRINTF(STDOUTFILE " Unresolved quartets: %s\n", UNRESOLVED); + if (typ_optn == LIKMAPING_OPTN) + FPRINTF(STDOUTFILE " Likelihood mapping diagram: %s\n", TRIANGLE); + FPRINTF(STDOUTFILE "\n"); + + /* runtime message */ + FPRINTF(STDOUTFILE + "The computation took %.0f seconds (= %.1f minutes = %.1f hours)\n", + difftime(Stoptime, Starttime), difftime(Stoptime, Starttime)/60., + difftime(Stoptime, Starttime)/3600.); + FPRINTF(STDOUTFILE + " including input %.0f seconds (= %.1f minutes = %.1f hours)\n", + fulltime, fulltime/60., fulltime/3600.); + + + /* free memory */ + memcleanup(); + + + + return 0; +} + + +/* compare function for uli - sort largest numbers first */ +int ulicmp(const void *ap, const void *bp) +{ + uli a, b; + + a = *((uli *) ap); + b = *((uli *) bp); + + if (a > b) return -1; + else if (a < b) return 1; + else return 0; +} + +/* compare function for int - sort smallest numbers first */ +int intcmp(const void *ap, const void *bp) +{ + int a, b; + + a = *((int *) ap); + b = *((int *) bp); + + if (a < b) return -1; + else if (a > b) return 1; + else return 0; +} diff --git a/forester/archive/RIO/others/puzzle_dqo/src/puzzle2.c b/forester/archive/RIO/others/puzzle_dqo/src/puzzle2.c new file mode 100644 index 0000000..ea53889 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/puzzle2.c @@ -0,0 +1,2651 @@ +/* + * puzzle2.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#define EXTERN extern + +#include "puzzle.h" +#include + +#if PARALLEL +# include "sched.h" +#endif /* PARALLEL */ + + +/******************************************************************************/ +/* sequences */ +/******************************************************************************/ + +/* read ten characters of current line as identifier */ +void readid(FILE *infp, int t) +{ + int i, j, flag, ci; + + for (i = 0; i < 26; i++) { /*CZ*/ + ci = fgetc(infp); + if (ci == EOF || !isprint(ci)) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no name for sequence %d)\n\n\n", t+1); + exit(1); + } + Identif[t][i] = (char) ci; + } + /* convert leading blanks in taxon name to underscores */ + flag = FALSE; + for (i = 25; i > -1; i--) { /*CZ*/ + if (flag == FALSE) { + if (Identif[t][i] != ' ') flag = TRUE; + } else { + if (Identif[t][i] == ' ') Identif[t][i] = '_'; + } + } + /* check whether this name is already used */ + for (i = 0; i < t; i++) { /* compare with all other taxa */ + flag = TRUE; /* assume identity */ + for (j = 0; (j < 26) && (flag == TRUE); j++) /*CZ*/ + if (Identif[t][j] != Identif[i][j]) + flag = FALSE; + if (flag) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (multiple occurence of sequence name '"); + fputid(STDOUT, t); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + } +} + +/* read next allowed character */ +char readnextcharacter(FILE *ifp, int notu, int nsite) +{ + char c; + + /* ignore blanks and control characters except newline */ + do { + if (fscanf(ifp, "%c", &c) != 1) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing character at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + } while (c == ' ' || (iscntrl((int) c) && c != '\n')); + return c; +} + +/* skip rest of the line */ +void skiprestofline(FILE* ifp, int notu, int nsite) +{ + int ci; + + /* read chars until the first newline */ + do{ + ci = fgetc(ifp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "Unable to proceed (missing newline at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + } while ((char) ci != '\n'); +} + +/* skip control characters and blanks */ +void skipcntrl(FILE *ifp, int notu, int nsite) +{ + int ci; + + /* read over all control characters and blanks */ + do { + ci = fgetc(ifp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing character at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + } while (iscntrl(ci) || (char) ci == ' '); + /* go one character back */ + if (ungetc(ci, ifp) == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (positioning error at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } +} + +/* read sequences of one data set */ +void getseqs(FILE *ifp) +{ + int notu, nsite, endofline, linelength, i; + char c; + + seqchars = new_cmatrix(Maxspc, Maxseqc); + /* read all characters */ + nsite = 0; /* next site to be read */ + while (nsite < Maxseqc) { + /* read first taxon */ + notu = 0; + /* go to next true line */ + skiprestofline(ifp, notu, nsite); + skipcntrl(ifp, notu, nsite); + if (nsite == 0) readid(ifp, notu); + endofline = FALSE; + linelength = 0; + do { + c = readnextcharacter(ifp, notu, nsite + linelength); + if (c == '\n') endofline = TRUE; + else if (c == '.') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (invalid character '.' at position "); + FPRINTF(STDOUTFILE "%d in first sequence)\n\n\n", nsite + linelength + 1); + exit(1); + } else if (nsite + linelength < Maxseqc) { + /* change to upper case */ + seqchars[notu][nsite + linelength] = (char) toupper((int) c); + linelength++; + } else { + endofline = TRUE; + skiprestofline(ifp, notu, nsite + linelength); + } + } while (!endofline); + if (linelength == 0) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (line with length 0 at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + /* read other taxa */ + for (notu = 1; notu < Maxspc; notu++) { + /* go to next true line */ + if (notu != 1) skiprestofline(ifp, notu, nsite); + skipcntrl(ifp, notu, nsite); + if (nsite == 0) readid(ifp, notu); + for (i = nsite; i < nsite + linelength; i++) { + c = readnextcharacter(ifp, notu, i); + if (c == '\n') { /* too short */ + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (line to short at position %d in sequence '", i + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } else if (c == '.') { + seqchars[notu][i] = seqchars[0][i]; + } else { + /* change to upper case */ + seqchars[notu][i] = (char) toupper((int) c); + } + } + } + nsite = nsite + linelength; + } +} + +/* initialize identifer array */ +void initid(int t) +{ + int i, j; + + Identif = new_cmatrix(t, 26); /*CZ*/ + for (i = 0; i < t; i++) + for (j = 0; j < 26; j++) /*CZ*/ + Identif[i][j] = ' '; +} + +/* print identifier of specified taxon in full 10 char length */ +void fputid10(FILE *ofp, int t) +{ + int i; + + for (i = 0; i < 26; i++) fputc(Identif[t][i], ofp); /*CZ*/ +} + +/* print identifier of specified taxon up to first space */ +int fputid(FILE *ofp, int t) +{ + int i; + + i = 0; + while (Identif[t][i] != ' ' && i < 26) { /*CZ*/ + fputc(Identif[t][i], ofp); + i++; + } + return i; +} + +/* read first line of sequence data set */ +void getsizesites(FILE *ifp) +{ + if (fscanf(ifp, "%d", &Maxspc) != 1) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing number of sequences)\n\n\n"); + exit(1); + } + if (fscanf(ifp, "%d", &Maxseqc) != 1) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing number of sites)\n\n\n"); + exit(1); + } + + if (Maxspc < 4) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (less than 4 sequences)\n\n\n"); + exit(1); + } + if (Maxspc > 8000) { /*CZ*/ + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (more than 8000 sequences)\n\n\n"); + exit(1); + } + if (Maxseqc < 1) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no sequence sites)\n\n\n"); + exit(1); + } + Maxbrnch = 2*Maxspc - 3; +} + +/* read one data set - PHYLIP interleaved */ +void getdataset(FILE *ifp) +{ + initid(Maxspc); + getseqs(ifp); +} + +/* guess data type */ +int guessdatatype() +{ + uli numnucs, numchars, numbins; + int notu, nsite; + char c; + + /* count A, C, G, T, U, N */ + numnucs = 0; + numchars = 0; + numbins = 0; + for (notu = 0; notu < Maxspc; notu++) + for (nsite = 0; nsite < Maxseqc; nsite++) { + c = seqchars[notu][nsite]; + if (c == 'A' || c == 'C' || c == 'G' || + c == 'T' || c == 'U' || c == 'N') numnucs++; + if (c != '-' && c != '?') numchars++; + if (c == '0' || c == '1') numbins++; + } + if (numchars == 0) numchars = 1; + /* more than 85 % frequency means nucleotide data */ + if ((double) numnucs / (double) numchars > 0.85) return 0; + else if ((double) numbins / (double) numchars > 0.2) return 2; + else return 1; +} + +/* translate characters into format used by ML engine */ +void translatedataset() +{ + int notu, sn, co; + char c; + cvector code; + + + /* determine Maxsite - number of ML sites per taxon */ + if (data_optn == 0 && SH_optn) { + if (SHcodon) + Maxsite = Maxseqc / 3; + else + Maxsite = Maxseqc / 2; /* assume doublets */ + + } else + Maxsite = Maxseqc; + if (data_optn == 0 && (Maxsite % 3) == 0 && !SH_optn) { + if (codon_optn == 1 || codon_optn == 2 || codon_optn == 3) + Maxsite = Maxsite / 3; /* only one of the three codon positions */ + if (codon_optn == 4) + Maxsite = 2*(Maxsite / 3); /* 1st + 2nd codon positions */ + } + + /* reserve memory */ + if (Seqchar != NULL) free_cmatrix(Seqchar); + Seqchar = new_cmatrix(Maxspc, Maxsite); + + /* code length */ + if (data_optn == 0 && SH_optn) + code = new_cvector(2); + else + code = new_cvector(1); + + /* decode characters */ + if (data_optn == 0 && SH_optn) { /* SH doublets */ + + for (notu = 0; notu < Maxspc; notu++) { + for (sn = 0; sn < Maxsite; sn++) { + for (co = 0; co < 2; co++) { + if (SHcodon) + c = seqchars[notu][sn*3 + co]; + else + c = seqchars[notu][sn*2 + co]; + code[co] = c; + } + Seqchar[notu][sn] = code2int(code); + } + } + + } else if (!(data_optn == 0 && (Maxseqc % 3) == 0)) { /* use all */ + + for (notu = 0; notu < Maxspc; notu++) { + for (sn = 0; sn < Maxsite; sn++) { + code[0] = seqchars[notu][sn]; + Seqchar[notu][sn] = code2int(code); + } + } + + } else { /* codons */ + + for (notu = 0; notu < Maxspc; notu++) { + for (sn = 0; sn < Maxsite; sn++) { + if (codon_optn == 1 || codon_optn == 2 || codon_optn == 3) + code[0] = seqchars[notu][sn*3+codon_optn-1]; + else if (codon_optn == 4) { + if ((sn % 2) == 0) + code[0] = seqchars[notu][(sn/2)*3]; + else + code[0] = seqchars[notu][((sn-1)/2)*3+1]; + } else + code[0] = seqchars[notu][sn]; + Seqchar[notu][sn] = code2int(code); + } + } + + } + free_cvector(code); +} + +/* estimate mean base frequencies from translated data set */ +void estimatebasefreqs() +{ + int tpmradix, i, j; + uli all, *gene; + + tpmradix = gettpmradix(); + + if (Freqtpm != NULL) free_dvector(Freqtpm); + Freqtpm = new_dvector(tpmradix); + + if (Basecomp != NULL) free_imatrix(Basecomp); + Basecomp = new_imatrix(Maxspc, tpmradix); + + gene = (uli *) malloc((unsigned) ((tpmradix + 1) * sizeof(uli))); + if (gene == NULL) maerror("gene in estimatebasefreqs"); + + for (i = 0; i < tpmradix + 1; i++) gene[i] = 0; + for (i = 0; i < Maxspc; i++) + for (j = 0; j < tpmradix; j++) Basecomp[i][j] = 0; + for (i = 0; i < Maxspc; i++) + for (j = 0; j < Maxsite; j++) { + gene[(int) Seqchar[i][j]]++; + if (Seqchar[i][j] != tpmradix) Basecomp[i][(int) Seqchar[i][j]]++; + } + + all = Maxspc * Maxsite - gene[tpmradix]; + if (all != 0) { /* normal case */ + for (i = 0; i < tpmradix; i++) + Freqtpm[i] = (double) gene[i] / (double) all; + } else { /* pathological case with no unique character in data set */ + for (i = 0; i < tpmradix; i++) + Freqtpm[i] = 1.0 / (double) tpmradix; + } + + free(gene); + + Frequ_optn = TRUE; +} + +/* guess model of substitution */ +void guessmodel() +{ + double c1, c2, c3, c4, c5, c6; + dvector f; + dmatrix a; + int i; + + Dayhf_optn = FALSE; + Jtt_optn = TRUE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + TSparam = 2.0; + YRparam = 1.0; + optim_optn = TRUE; + HKY_optn = TRUE; + TN_optn = FALSE; + + if (data_optn == 1) { /* amino acids */ + + /* chi2 fit to amino acid frequencies */ + + f = new_dvector(20); + a = new_dmatrix(20,20); + /* chi2 distance Dayhoff */ + dyhfdata(a, f); + c1 = 0; + for (i = 0; i < 20; i++) + c1 = c1 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance JTT */ + jttdata(a, f); + c2 = 0; + for (i = 0; i < 20; i++) + c2 = c2 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance mtREV */ + mtrevdata(a, f); + c3 = 0; + for (i = 0; i < 20; i++) + c3 = c3 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance VT */ + vtmvdata(a, f); + c4 = 0; + for (i = 0; i < 20; i++) + c4 = c4 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance WAG */ + wagdata(a, f); + c5 = 0; + for (i = 0; i < 20; i++) + c5 = c5 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance cpREV */ + cprev45data(a, f); + c6 = 0; + for (i = 0; i < 20; i++) + c6 = c6 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + + free_dvector(f); + free_dmatrix(a); + +#ifndef CPREV + if ((c1 < c2) && (c1 < c3) && (c1 < c4) && (c1 < c5)) { + /* c1 -> Dayhoff */ + Dayhf_optn = TRUE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if ((c2 < c3) && (c2 < c4) && (c2 < c5)) { + /* c2 -> JTT */ + Dayhf_optn = FALSE; + Jtt_optn = TRUE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if ((c3 < c4) && (c3 < c5)) { + /* c3 -> mtREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = TRUE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on mtDNA)\n"); + } else { + if ((c4 < c5)) { + /* c4 -> VT */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = TRUE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + /* c5 -> WAG */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = TRUE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } /* if c4 else c5 */ + } /* if c3 else c4 */ + } /* if c2 */ + } /* if c1 */ + +#else /* CPREV */ + + if ((c1 < c2) && (c1 < c3) && (c1 < c4) && (c1 < c5) && (c1 < c6)) { + /* c1 -> Dayhoff */ + Dayhf_optn = TRUE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if ((c2 < c3) && (c2 < c4) && (c2 < c5) && (c2 < c6)) { + /* c2 -> JTT */ + Dayhf_optn = FALSE; + Jtt_optn = TRUE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if ((c3 < c4) && (c3 < c5) && (c3 < c6)) { + /* c3 -> mtREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = TRUE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on mtDNA)\n"); + } else { + if ((c4 < c5) && (c4 < c6)) { + /* c4 -> VT */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = TRUE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if (c5 < c6) { + /* c5 -> WAG */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = TRUE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + /* if (c6) */ + /* c6 -> cpREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = TRUE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on cpDNA)\n"); + } /* if c5 else c6 */ + } /* if c4 else c5 */ + } /* if c3 else c4 */ + } /* if c2 */ + } /* if c1 */ +#endif /* CPREV */ + + } else if (data_optn == 0) { + FPRINTF(STDOUTFILE "(consists very likely of nucleotides)\n"); + } else { + FPRINTF(STDOUTFILE "(consists very likely of binary state data)\n"); + } +} /* guessmodel */ + + +/******************************************************************************/ +/* functions for representing and building puzzling step trees */ +/******************************************************************************/ + +/* initialize tree with the following starting configuration + + 2 + 0 +------- C(=2) + A(=0) -----+ + +------- B(=1) + 1 + */ +void inittree() +{ + int i; + + /* allocate the memory for the whole tree */ + + /* allocate memory for vector with all the edges of the tree */ + edge = (ONEEDGE *) calloc(Maxbrnch, sizeof(ONEEDGE) ); + if (edge == NULL) maerror("edge in inittree"); + + /* allocate memory for vector with edge numbers of leaves */ + edgeofleaf = (int *) calloc(Maxspc, sizeof(int) ); + if (edgeofleaf == NULL) maerror("edgeofleaf in inittree"); + + /* allocate memory for all the edges the edge map */ + for (i = 0; i < Maxbrnch; i++) { + edge[i].edgemap = (int *) calloc(Maxbrnch, sizeof(int) ); + if (edge[i].edgemap == NULL) maerror("edgemap in inittree"); + } + + /* number all edges */ + for (i = 0; i < Maxbrnch; i++) edge[i].numedge = i; + + /* initialize tree */ + + nextedge = 3; + nextleaf = 3; + + /* edge maps */ + (edge[0].edgemap)[0] = 0; /* you are on the right edge */ + (edge[0].edgemap)[1] = 4; /* go down left for leaf 1 */ + (edge[0].edgemap)[2] = 5; /* go down right for leaf 2 */ + (edge[1].edgemap)[0] = 1; /* go up for leaf 0 */ + (edge[1].edgemap)[1] = 0; /* you are on the right edge */ + (edge[1].edgemap)[2] = 3; /* go up/down right for leaf 2 */ + (edge[2].edgemap)[0] = 1; /* go up for leaf 0 */ + (edge[2].edgemap)[1] = 2; /* go up/down left for leaf 1 */ + (edge[2].edgemap)[2] = 0; /* you are on the right edge */ + + /* interconnection */ + edge[0].up = NULL; + edge[0].downleft = &edge[1]; + edge[0].downright = &edge[2]; + edge[1].up = &edge[0]; + edge[1].downleft = NULL; + edge[1].downright = NULL; + edge[2].up = &edge[0]; + edge[2].downleft = NULL; + edge[2].downright = NULL; + + /* edges of leaves */ + edgeofleaf[0] = 0; + edgeofleaf[1] = 1; + edgeofleaf[2] = 2; +} /* inittree */ + +/* add next leaf on the specified edge */ +void addnextleaf(int dockedge) +{ + int i; + + if (dockedge >= nextedge) { + /* Trying to add leaf nextleaf to nonexisting edge dockedge */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR F TO DEVELOPERS\n\n\n"); + exit(1); + } + + if (nextleaf >= Maxspc) { + /* Trying to add leaf nextleaf to a tree with Maxspc leaves */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR G TO DEVELOPERS\n\n\n"); + exit(1); + } + + /* necessary change in edgeofleaf if dockedge == edgeofleaf[0] */ + if (edgeofleaf[0] == dockedge) edgeofleaf[0] = nextedge; + + /* adding nextedge to the tree */ + edge[nextedge].up = edge[dockedge].up; + edge[nextedge].downleft = &edge[dockedge]; + edge[nextedge].downright = &edge[nextedge+1]; + edge[dockedge].up = &edge[nextedge]; + + if (edge[nextedge].up != NULL) { + if ( ((edge[nextedge].up)->downleft) == &edge[dockedge] ) + (edge[nextedge].up)->downleft = &edge[nextedge]; + else + (edge[nextedge].up)->downright = &edge[nextedge]; + } + + /* adding nextedge + 1 to the tree */ + edge[nextedge+1].up = &edge[nextedge]; + edge[nextedge+1].downleft = NULL; + edge[nextedge+1].downright = NULL; + edgeofleaf[nextleaf] = nextedge+1; + + /* the two new edges get info about the old edges */ + /* nextedge */ + for (i = 0; i < nextedge; i++) { + switch ( (edge[dockedge].edgemap)[i] ) { + + /* down right changes to down left */ + case 5: (edge[nextedge].edgemap)[i] = 4; + break; + + /* null changes to down left */ + case 0: (edge[nextedge].edgemap)[i] = 4; + break; + + default: (edge[nextedge].edgemap)[i] = + (edge[dockedge].edgemap)[i]; + break; + } + } + + /* nextedge + 1 */ + for (i = 0; i < nextedge; i++) { + switch ( (edge[dockedge].edgemap)[i] ) { + + /* up/down left changes to up */ + case 2: (edge[nextedge+1].edgemap)[i] = 1; + break; + + /* up/down right changes to up */ + case 3: (edge[nextedge+1].edgemap)[i] = 1; + break; + + /* down left changes to up/down left */ + case 4: (edge[nextedge+1].edgemap)[i] = 2; + break; + + /* down right changes to up/down left */ + case 5: (edge[nextedge+1].edgemap)[i] = 2; + break; + + /* null changes to up/down left */ + case 0: (edge[nextedge+1].edgemap)[i] = 2; + break; + + /* up stays up */ + default: (edge[nextedge+1].edgemap)[i] = + (edge[dockedge].edgemap)[i]; + break; + } + } + + /* dockedge */ + for (i = 0; i < nextedge; i++) { + switch ( (edge[dockedge].edgemap)[i] ) { + + /* up/down right changes to up */ + case 3: (edge[dockedge].edgemap)[i] = 1; + break; + + /* up/down left changes to up */ + case 2: (edge[dockedge].edgemap)[i] = 1; + break; + + default: break; + } + } + + /* all edgemaps are updated for the two new edges */ + /* nextedge */ + (edge[nextedge].edgemap)[nextedge] = 0; + (edge[nextedge].edgemap)[nextedge+1] = 5; /* down right */ + + /* nextedge + 1 */ + (edge[nextedge+1].edgemap)[nextedge] = 1; /* up */ + (edge[nextedge+1].edgemap)[nextedge+1] = 0; + + /* all other edges */ + for (i = 0; i < nextedge; i++) { + (edge[i].edgemap)[nextedge] = (edge[i].edgemap)[dockedge]; + (edge[i].edgemap)[nextedge+1] = (edge[i].edgemap)[dockedge]; + } + + /* an extra for dockedge */ + (edge[dockedge].edgemap)[nextedge] = 1; /* up */ + (edge[dockedge].edgemap)[nextedge+1] = 3; /* up/down right */ + + nextleaf++; + nextedge = nextedge + 2; +} /* addnextleaf */ + + +/* free memory (to be called after inittree) */ +void freetree() +{ + int i; + + for (i = 0; i < 2 * Maxspc - 3; i++) free(edge[i].edgemap); + free(edge); + free(edgeofleaf); +} /* freetree */ + +/* writes OTU sitting on edge ed */ +void writeOTU(FILE *outfp, int ed) +{ + int i; + + /* test whether we are on a leaf */ + if (edge[ed].downright == NULL && edge[ed].downleft == NULL) { + for (i = 1; i < nextleaf; i++) { + if (edgeofleaf[i] == ed) { /* i is the leaf of ed */ + column += fputid(outfp, trueID[i]); + return; + } + } + } + + /* we are NOT on a leaf */ + fprintf(outfp, "("); + column++; + writeOTU(outfp, edge[ed].downleft->numedge); + fprintf(outfp, ","); + column++; + column++; + if (column > 55) { + column = 2; + fprintf(outfp, "\n "); + } + writeOTU(outfp, edge[ed].downright->numedge); + fprintf(outfp, ")"); + column++; +} /* writeOTU */ + +/* write tree */ +void writetree(FILE *outfp) +{ + column = 1; + fprintf(outfp, "("); + column += fputid(outfp, trueID[0]) + 3; + fprintf(outfp, ","); + writeOTU(outfp, edge[edgeofleaf[0]].downleft->numedge); + column++; + column++; + fprintf(outfp, ","); + writeOTU(outfp, edge[edgeofleaf[0]].downright->numedge); + fprintf(outfp, ");\n"); +} /* writetree */ + + +/* clear all edgeinfos */ +void resetedgeinfo() +{ + int i; + + for (i = 0; i < nextedge; i++) + edge[i].edgeinfo = 0; +} /* resetedgeinfo */ + +/* increment all edgeinfo between leaf A and B */ +void incrementedgeinfo(int A, int B) +{ + int curredge, finaledge, nextstep; + + if (A == B) return; + + finaledge = edgeofleaf[B]; + + curredge = edgeofleaf[A]; + edge[curredge].edgeinfo = edge[curredge].edgeinfo + 1; + + while (curredge != finaledge) { + nextstep = (edge[curredge].edgemap)[finaledge]; + switch (nextstep) { + + /* up */ + case 1: curredge = (edge[curredge].up)->numedge; + break; + + /* up/down left */ + case 2: curredge = ((edge[curredge].up)->downleft)->numedge; + break; + + /* up/down right */ + case 3: curredge = ((edge[curredge].up)->downright)->numedge; + break; + + /* down left */ + case 4: curredge = (edge[curredge].downleft)->numedge; + break; + + /* down right */ + case 5: curredge = (edge[curredge].downright)->numedge; + break; + + } + edge[curredge].edgeinfo = edge[curredge].edgeinfo + 1; + } +} /* incrementedgeinfo */ + +/* checks which edge has the lowest edgeinfo + if there are several edges with the same lowest edgeinfo, + one of them will be selected randomly */ +void minimumedgeinfo() +{ + int i, k, howmany, randomnum; + + howmany = 1; + minedge = 0; + mininfo = edge[0].edgeinfo; + for (i = 1; i < nextedge; i++) + if (edge[i].edgeinfo <= mininfo) { + if (edge[i].edgeinfo == mininfo) { + howmany++; + } else { + minedge = i; + mininfo = edge[i].edgeinfo; + howmany = 1; + } + } + + if (howmany > 1) { /* draw random edge */ + randomnum = randominteger(howmany) + 1; /* 1 to howmany */ + i = -1; + for (k = 0; k < randomnum; k++) { + do { + i++; + } while (edge[i].edgeinfo != mininfo); + minedge = i; + } + } +} /* minimumedgeinfo */ + + + + +/*******************************************/ +/* tree sorting */ +/*******************************************/ + +/* compute address of the 4 int (sort key) in the 4 int node */ +int ct_sortkeyaddr(int addr) +{ + int a, res; + a = addr % 4; + res = addr - a + 3; + return res; +} + + +/**********/ + +/* compute address of the next edge pointer in a 4 int node (0->1->2->0) */ +int ct_nextedgeaddr(int addr) +{ + int a, res; + a = addr % 4; + if ( a == 2 ) { res = addr - 2; } + else { res = addr + 1; } + return res; +} + + +/**********/ + +/* compute address of 1st edge of a 4 int node from node number */ +int ct_1stedge(int node) +{ + int res; + res = 4 * node; + return res; +} + + +/**********/ + +/* compute address of 2nd edge of a 4 int node from node number */ +int ct_2ndedge(int node) +{ + int res; + res = 4 * node +1; + return res; +} + + +/**********/ + +/* compute address of 3rd edge of a 4 int node from node number */ +int ct_3rdedge(int node) +{ + int res; + res = 4 * node +2; + return res; +} + + +/**********/ + +/* check whether node 'node' is a leaf (2nd/3rd edge pointer = -1) */ +int ct_isleaf(int node, int *ctree) +{ + return (ctree[ct_3rdedge(node)] < 0); +} + + +/**********/ + +/* compute node number of 4 int node from an edge addr. */ +int ct_addr2node(int addr) +{ + int a, res; + a = addr % 4; + res = (int) ((addr - a) / 4); + return res; +} + + +/**********/ + +/* print graph pointers for checking */ +void printctree(int *ctree) +{ + int n; + for (n=0; n < 2*Maxspc; n++) { + printf("n[%3d] = (%3d.%2d, %3d.%2d, %3d.%2d | %3d)\n", n, + (int) ctree[ct_1stedge(n)]/4, + (int) ctree[ct_1stedge(n)]%4, + (int) ctree[ct_2ndedge(n)]/4, + (int) ctree[ct_2ndedge(n)]%4, + (int) ctree[ct_3rdedge(n)]/4, + (int) ctree[ct_3rdedge(n)]%4, + ctree[ct_3rdedge(n)+1]); + } + printf("\n"); +} /* printctree */ + + +/**********/ + +/* allocate memory for ctree 3 ints pointer plus 1 check byte */ +int *initctree() +{ + int *snodes; + int n; + + snodes = (int *) malloc(4 * 2 * Maxspc * sizeof(int)); + if (snodes == NULL) maerror("snodes in copytree"); + + for (n=0; n<(4 * 2 * Maxspc); n++) { + snodes[n]=-1; + } + return snodes; +} + + +/**********/ + +/* free memory of a tree for sorting */ +void freectree(int **snodes) +{ + free(*snodes); + *snodes = NULL; +} + + +/**********/ + +/* copy subtree recursively */ +void copyOTU(int *ctree, /* tree array struct */ + int *ct_nextnode, /* next free node */ + int ct_curredge, /* currende edge to add subtree */ + int *ct_nextleaf, /* next free leaf (0-maxspc) */ + int ed) /* edge in puzzling step tree */ +{ + int i, nextcurredge; + + /* test whether we are on a leaf */ + if (edge[ed].downright == NULL && edge[ed].downleft == NULL) { + for (i = 1; i < nextleaf; i++) { + if (edgeofleaf[i] == ed) { /* i is the leaf of ed */ + nextcurredge = ct_1stedge(*ct_nextleaf); + ctree[ct_curredge] = nextcurredge; + ctree[nextcurredge] = ct_curredge; + ctree[ct_sortkeyaddr(nextcurredge)] = trueID[i]; + (*ct_nextleaf)++; + return; + } + } + } + + /* we are NOT on a leaf */ + nextcurredge = ct_1stedge(*ct_nextnode); + ctree[ct_curredge] = nextcurredge; + ctree[nextcurredge] = ct_curredge; + (*ct_nextnode)++; + nextcurredge = ct_nextedgeaddr(nextcurredge); + copyOTU(ctree, ct_nextnode, nextcurredge, + ct_nextleaf, edge[ed].downleft->numedge); + + nextcurredge = ct_nextedgeaddr(nextcurredge); + copyOTU(ctree, ct_nextnode, nextcurredge, + ct_nextleaf, edge[ed].downright->numedge); +} + + +/**********/ + +/* copy treestructure to sorting structure */ +void copytree(int *ctree) +{ + int ct_curredge; + int ct_nextleaf; + int ct_nextnode; + + ct_nextnode = Maxspc; + ct_curredge = ct_1stedge(ct_nextnode); + ct_nextleaf = 1; + + ctree[ct_1stedge(0)] = ct_curredge; + ctree[ct_curredge] = ct_1stedge(0); + ctree[ct_sortkeyaddr(0)] = trueID[0]; + + ct_nextnode++; + + ct_curredge = ct_nextedgeaddr(ct_curredge); + copyOTU(ctree, &ct_nextnode, ct_curredge, + &ct_nextleaf, edge[edgeofleaf[0]].downleft->numedge); + + ct_curredge = ct_nextedgeaddr(ct_curredge); + copyOTU(ctree, &ct_nextnode, ct_curredge, + &ct_nextleaf, edge[edgeofleaf[0]].downright->numedge); +} + + +/**********/ + +/* sort subtree from edge recursively by indices */ +int sortOTU(int edge, int *ctree) +{ + int key1, key2; + int edge1, edge2; + int tempedge; + + if (ctree[ct_2ndedge((int) (edge / 4))] < 0) + return ctree[ct_sortkeyaddr(edge)]; + + edge1 = ctree[ct_nextedgeaddr(edge)]; + edge2 = ctree[ct_nextedgeaddr(ct_nextedgeaddr(edge))]; + + /* printf ("visiting [%5d] -> [%5d], [%5d]\n", edge, edge1, edge2); */ + /* printf ("visiting [%2d.%2d] -> [%2d.%2d], [%2d.%2d]\n", + (int)(edge/4), edge%4, (int)(edge1/4), edge1%4, + (int)(edge2/4), edge2%4); */ + + key1 = sortOTU(edge1, ctree); + key2 = sortOTU(edge2, ctree); + + if (key2 < key1) { + tempedge = ctree[ctree[edge1]]; + ctree[ctree[edge1]] = ctree[ctree[edge2]]; + ctree[ctree[edge2]] = tempedge; + tempedge = ctree[edge1]; + ctree[edge1] = ctree[edge2]; + ctree[edge2] = tempedge; + ctree[ct_sortkeyaddr(edge)] = key2; + + } else { + ctree[ct_sortkeyaddr(edge)] = key1; + } + return ctree[ct_sortkeyaddr(edge)]; +} + + +/**********/ + +/* sort ctree recursively by indices */ +int sortctree(int *ctree) +{ + int n, startnode=-1; + for(n=0; n>>>\n"); + tmpptr = list; + *sortlist = list; + while (tmpptr != NULL) { + (*tmpptr).sortnext = (*tmpptr).succ; + (*tmpptr).sortlast = (*tmpptr).pred; + tmpptr = (*tmpptr).succ; + } + + while (xchange > 0) { + curr = *sortlist; + xchange = 0; + if (curr == NULL) fprintf(stderr, "Grrrrrrrrr>>>>\n"); + while((*curr).sortnext != NULL) { + next = (*curr).sortnext; + if ((*curr).count >= (*next).count) + curr = (*curr).sortnext; + else { + if ((*curr).sortlast != NULL) + (*((*curr).sortlast)).sortnext = next; + if (*sortlist == curr) + *sortlist = next; + (*next).sortlast = (*curr).sortlast; + + if ((*next).sortnext != NULL) + (*((*next).sortnext)).sortlast = curr; + (*curr).sortnext = (*next).sortnext; + + (*curr).sortlast = next; + (*next).sortnext = curr; + + xchange++; + } + } + } +} /* sortbynum */ + + +/**********/ + +/* print puzzling step tree stuctures for checking */ +void printfpstrees(treelistitemtype *list) +{ + char ch; + treelistitemtype *tmpptr = NULL; + tmpptr = list; + ch = '-'; + while (tmpptr != NULL) { + printf ("%c[%2d] %5d %s\n", ch, (*tmpptr).idx, (*tmpptr).count, (*tmpptr).tree); + tmpptr = (*tmpptr).succ; + ch = ' '; + } +} + +/**********/ + +/* print sorted puzzling step tree stucture with names */ +void fprintffullpstree(FILE *outf, char *treestr) +{ + int count = 0; + int idnum = 0; + int n; + for(n=0; treestr[n] != '\0'; n++){ + while(isdigit((int)treestr[n])){ + idnum = (10 * idnum) + ((int)treestr[n]-48); + n++; + count++; + } + if (count > 0){ +# ifdef USEQUOTES + fprintf(outf, "'"); +# endif + (void)fputid(outf, idnum); +# ifdef USEQUOTES + fprintf(outf, "'"); +# endif + count = 0; + idnum = 0; + } + fprintf(outf, "%c", treestr[n]); + } +} + + +/**********/ + +/* print sorted puzzling step tree stuctures with names */ +void fprintfsortedpstrees(FILE *output, + treelistitemtype *list, /* tree list */ + int itemnum, /* order number */ + int itemsum, /* number of trees */ + int comment, /* with statistics, or puzzle report ? */ + float cutoff) /* cutoff percentage */ +{ + treelistitemtype *tmpptr = NULL; + treelistitemtype *slist = NULL; + int num = 1; + float percent; + + if (list == NULL) fprintf(stderr, "Grrrrrrrrr>>>>\n"); + sortbynum(list, &slist); + + tmpptr = slist; + while (tmpptr != NULL) { + percent = (float)(100.0 * (*tmpptr).count / itemsum); + if ((cutoff == 0.0) || (cutoff <= percent)) { + if (comment) + fprintf (output, "[ %d. %d %.2f %d %d %d ]", num++, (*tmpptr).count, percent, (*tmpptr).id, itemnum, itemsum); + else { + if (num == 1){ + fprintf (output, "\n"); + fprintf (output, "The following tree(s) occured in more than %.2f%% of the %d puzzling steps.\n", cutoff, itemsum); + fprintf (output, "The trees are orderd descending by the number of occurences.\n"); + fprintf (output, "\n"); + fprintf (output, "\n occurences ID Phylip tree\n"); + } + fprintf (output, "%2d. %5d %6.2f%% %5d ", num++, (*tmpptr).count, percent, (*tmpptr).id); + } + fprintffullpstree(output, (*tmpptr).tree); + fprintf (output, "\n"); + } + tmpptr = (*tmpptr).sortnext; + } + + if (!comment) { + fprintf (output, "\n"); + switch(num) { + case 1: fprintf (output, "There were no tree topologies (out of %d) occuring with a percentage >= %.2f%% of the %d puzzling steps.\n", itemnum, cutoff, itemsum); break; + case 2: fprintf (output, "There was one tree topology (out of %d) occuring with a percentage >= %.2f%%.\n", itemnum, cutoff); break; + default: fprintf (output, "There were %d tree topologies (out of %d) occuring with a percentage >= %.2f%%.\n", num-1, itemnum, cutoff); break; + } + fprintf (output, "\n"); + fprintf (output, "\n"); + } + +} /* fprintfsortedpstrees */ + +/**********/ + +/* print sorted tree topologies for checking */ +void printfsortedpstrees(treelistitemtype *list) +{ + treelistitemtype *tmpptr = NULL; + treelistitemtype *slist = NULL; + + sortbynum(list, &slist); + + tmpptr = slist; + while (tmpptr != NULL) { + printf ("[%2d] %5d %s\n", (*tmpptr).idx, (*tmpptr).count, (*tmpptr).tree); + tmpptr = (*tmpptr).sortnext; + } +} /* printfsortedpstrees */ + + +/*******************************************/ +/* end of tree sorting */ +/*******************************************/ + + + +/******************************************************************************/ +/* functions for computing the consensus tree */ +/******************************************************************************/ + +/* prepare for consensus tree analysis */ +void initconsensus() +{ +# if ! PARALLEL + biparts = new_cmatrix(Maxspc-3, Maxspc); +# endif /* PARALLEL */ + + if (Maxspc % 32 == 0) + splitlength = Maxspc/32; + else splitlength = (Maxspc + 32 - (Maxspc % 32))/32; + numbiparts = 0; /* no pattern stored so far */ + maxbiparts = 0; /* no memory reserved so far */ + splitfreqs = NULL; + splitpatterns = NULL; + splitsizes = NULL; + splitcomp = (uli *) malloc(splitlength * sizeof(uli) ); + if (splitcomp == NULL) maerror("splitcomp in initconsensus"); +} + +/* prototype needed for recursive function */ +void makepart(int i, int curribrnch); + +/* recursive function to get bipartitions */ +void makepart(int i, int curribrnch) +{ + int j; + + if ( edge[i].downright == NULL || + edge[i].downleft == NULL) { /* if i is leaf */ + + /* check out what leaf j sits on this edge i */ + for (j = 1; j < Maxspc; j++) { + if (edgeofleaf[j] == i) { + biparts[curribrnch][trueID[j]] = '*'; + return; + } + } + } else { /* still on inner branch */ + makepart(edge[i].downleft->numedge, curribrnch); + makepart(edge[i].downright->numedge, curribrnch); + } +} + +/* compute bipartitions of tree of current puzzling step */ +void computebiparts() +{ + int i, j, curribrnch; + + curribrnch = -1; + + for (i = 0; i < Maxspc - 3; i++) + for (j = 0; j < Maxspc; j++) + biparts[i][j] = '.'; + + for (i = 0; i < Maxbrnch; i++) { + if (!( edgeofleaf[0] == i || + edge[i].downright == NULL || + edge[i].downleft == NULL) ) { /* check all inner branches */ + curribrnch++; + makepart(i, curribrnch); + + /* make sure that the root is always a '*' */ + if (biparts[curribrnch][outgroup] == '.') { + for (j = 0; j < Maxspc; j++) { + if (biparts[curribrnch][j] == '.') + biparts[curribrnch][j] = '*'; + else + biparts[curribrnch][j] = '.'; + } + } + } + } +} + +/* print out the bipartition n of all different splitpatterns */ +void printsplit(FILE *fp, uli n) +{ + int i, j, col; + uli z; + + col = 0; + for (i = 0; i < splitlength; i++) { + z = splitpatterns[n*splitlength + i]; + for (j = 0; j < 32 && col < Maxspc; j++) { + if (col % 10 == 0 && col != 0) fprintf(fp, " "); + if (z & 1) fprintf(fp, "."); + else fprintf(fp, "*"); + z = (z >> 1); + col++; + } + } +} + +/* make new entries for new different bipartitions and count frequencies */ +void makenewsplitentries() +{ + int i, j, bpc, identical, idflag, bpsize; + uli nextentry, obpc; + + /* where the next entry would be in splitpatterns */ + nextentry = numbiparts; + + for (bpc = 0; bpc < Maxspc - 3; bpc++) { /* for every new bipartition */ + /* convert bipartition into a more compact format */ + bpsize = 0; + for (i = 0; i < splitlength; i++) { + splitcomp[i] = 0; + for (j = 0; j < 32; j++) { + splitcomp[i] = splitcomp[i] >> 1; + if (i*32 + j < Maxspc) + if (biparts[bpc][i*32 + j] == '.') { + /* set highest bit */ + splitcomp[i] = (splitcomp[i] | 2147483648UL); + bpsize++; /* count the '.' */ + } + } + } + /* compare to the *old* patterns */ + identical = FALSE; + for (obpc = 0; (obpc < numbiparts) && (!identical); obpc++) { + /* compare first partition size */ + if (splitsizes[obpc] == bpsize) idflag = TRUE; + else idflag = FALSE; + /* if size is identical compare whole partition */ + for (i = 0; (i < splitlength) && idflag; i++) + if (splitcomp[i] != splitpatterns[obpc*splitlength + i]) + idflag = FALSE; + if (idflag) identical = TRUE; + } + if (identical) { /* if identical increase frequency */ + splitfreqs[2*(obpc-1)]++; + } else { /* create new entry */ + if (nextentry == maxbiparts) { /* reserve more memory */ + maxbiparts = maxbiparts + 2*Maxspc; + splitfreqs = (uli *) myrealloc(splitfreqs, + 2*maxbiparts * sizeof(uli) ); + /* 2x: splitfreqs contains also an index (sorting!) */ + if (splitfreqs == NULL) maerror("splitfreqs in makenewsplitentries"); + splitpatterns = (uli *) myrealloc(splitpatterns, + splitlength*maxbiparts * sizeof(uli) ); + if (splitpatterns == NULL) maerror("splitpatterns in makenewsplitentries"); + splitsizes = (int *) myrealloc(splitsizes, + maxbiparts * sizeof(int) ); + if (splitsizes == NULL) maerror("splitsizes in makenewsplitentries"); + } + splitfreqs[2*nextentry] = 1; /* frequency */ + splitfreqs[2*nextentry+1] = nextentry; /* index for sorting */ + for (i = 0; i < splitlength; i++) + splitpatterns[nextentry*splitlength + i] = splitcomp[i]; + splitsizes[nextentry] = bpsize; + nextentry++; + } + } + numbiparts = nextentry; +} + +/* general remarks: + + - every entry in consbiparts is one node of the consensus tree + - for each node one has to know which taxa and which other nodes + are *directly* descending from it + - for every taxon/node number there is a flag that shows + whether it descends from the node or not + - '0' means that neither a taxon nor another node with the + corresponding number decends from the node + '1' means that the corresponding taxon descends from the node + '2' means that the corresponding node descends from the node + '3' means that the corresponding taxon and node descends from the node +*/ + +/* copy bipartition n of all different splitpatterns to consbiparts[k] */ +void copysplit(uli n, int k) +{ + int i, j, col; + uli z; + + col = 0; + for (i = 0; i < splitlength; i++) { + z = splitpatterns[n*splitlength + i]; + for (j = 0; j < 32 && col < Maxspc; j++) { + if (z & 1) consbiparts[k][col] = '1'; + else consbiparts[k][col] = '0'; + z = (z >> 1); + col++; + } + } +} + +/* compute majority rule consensus tree */ +void makeconsensus() +{ + int i, j, k, size, subnode; + char chari, charj; + + /* sort bipartition frequencies */ + qsort(splitfreqs, numbiparts, 2*sizeof(uli), ulicmp); + /* how many bipartitions are included in the consensus tree */ + consincluded = 0; + for (i = 0; i < numbiparts && i == consincluded; i++) { + if (2*splitfreqs[2*i] > Numtrial) consincluded = i + 1; + } + + /* collect all info about majority rule consensus tree */ + /* the +1 is due to the edge with the root */ + consconfid = new_ivector(consincluded + 1); + conssizes = new_ivector(2*consincluded + 2); + consbiparts = new_cmatrix(consincluded + 1, Maxspc); + + for (i = 0; i < consincluded; i++) { + /* copy partition to consbiparts */ + copysplit(splitfreqs[2*i+1], i); + /* frequency in percent (rounded to integer) */ + consconfid[i] = (int) floor(100.0*splitfreqs[2*i]/Numtrial + 0.5); + /* size of partition */ + conssizes[2*i] = splitsizes[splitfreqs[2*i+1]]; + conssizes[2*i+1] = i; + } + for (i = 0; i < Maxspc; i++) consbiparts[consincluded][i] = '1'; + consbiparts[consincluded][outgroup] = '0'; + consconfid[consincluded] = 100; + conssizes[2*consincluded] = Maxspc - 1; + conssizes[2*consincluded + 1] = consincluded; + + /* sort bipartitions according to cluster size */ + qsort(conssizes, consincluded + 1, 2*sizeof(int), intcmp); + + /* reconstruct consensus tree */ + for (i = 0; i < consincluded; i++) { /* try every node */ + size = conssizes[2*i]; /* size of current node */ + for (j = i + 1; j < consincluded + 1; j++) { + + /* compare only with nodes with more descendants */ + if (size == conssizes[2*j]) continue; + + /* check whether node i is a subnode of j */ + subnode = FALSE; + for (k = 0; k < Maxspc && !subnode; k++) { + chari = consbiparts[ conssizes[2*i+1] ][k]; + if (chari != '0') { + charj = consbiparts[ conssizes[2*j+1] ][k]; + if (chari == charj || charj == '3') subnode = TRUE; + } + } + + /* if i is a subnode of j change j accordingly */ + if (subnode) { + /* remove subnode i from j */ + for (k = 0; k < Maxspc; k++) { + chari = consbiparts[ conssizes[2*i+1] ][k]; + if (chari != '0') { + charj = consbiparts[ conssizes[2*j+1] ][k]; + if (chari == charj) + consbiparts[ conssizes[2*j+1] ][k] = '0'; + else if (charj == '3') { + if (chari == '1') + consbiparts[ conssizes[2*j+1] ][k] = '2'; + else if (chari == '2') + consbiparts[ conssizes[2*j+1] ][k] = '1'; + else { + /* Consensus tree [1] */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR H TO DEVELOPERS\n\n\n"); + exit(1); + } + } else { + /* Consensus tree [2] */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR I TO DEVELOPERS\n\n\n"); + exit(1); + } + } + } + /* add link to subnode i in node j */ + charj = consbiparts[ conssizes[2*j+1] ][ conssizes[2*i+1] ]; + if (charj == '0') + consbiparts[ conssizes[2*j+1] ][ conssizes[2*i+1] ] = '2'; + else if (charj == '1') + consbiparts[ conssizes[2*j+1] ][ conssizes[2*i+1] ] = '3'; + else { + /* Consensus tree [3] */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR J TO DEVELOPERS\n\n\n"); + exit(1); + } + } + } + } +} + +/* prototype for recursion */ +void writenode(FILE *treefile, int node); + +/* write node (writeconsensustree) */ +void writenode(FILE *treefile, int node) +{ + int i, first; + + fprintf(treefile, "("); + column++; + /* write descending nodes */ + first = TRUE; + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '2' || + consbiparts[node][i] == '3') { + if (first) first = FALSE; + else { + fprintf(treefile, ","); + column++; + } + if (column > 60) { + column = 2; + fprintf(treefile, "\n"); + } + /* write node i */ + writenode(treefile, i); + + /* reliability value as internal label */ + fprintf(treefile, "%d", consconfid[i]); + + column = column + 3; + } + } + /* write descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '1' || + consbiparts[node][i] == '3') { + if (first) first = FALSE; + else { + fprintf(treefile, ","); + column++; + } + if (column > 60) { + column = 2; + fprintf(treefile, "\n"); + } + column += fputid(treefile, i); + } + } + fprintf(treefile, ")"); + column++; +} + +/* write consensus tree */ +void writeconsensustree(FILE *treefile) +{ + int i, first; + + column = 1; + fprintf(treefile, "("); + column += fputid(treefile, outgroup) + 2; + fprintf(treefile, ","); + /* write descending nodes */ + first = TRUE; + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '2' || + consbiparts[consincluded][i] == '3') { + if (first) first = FALSE; + else { + fprintf(treefile, ","); + column++; + } + if (column > 60) { + column = 2; + fprintf(treefile, "\n"); + } + /* write node i */ + writenode(treefile, i); + + /* reliability value as internal label */ + fprintf(treefile, "%d", consconfid[i]); + + column = column + 3; + } + } + /* write descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '1' || + consbiparts[consincluded][i] == '3') { + if (first) first = FALSE; + else { + fprintf(treefile, ","); + column++; + } + if (column > 60) { + column = 2; + fprintf(treefile, "\n"); + } + column += fputid(treefile, i); + } + } + fprintf(treefile, ");\n"); +} + +/* prototype for recursion */ +void nodecoordinates(int node); + +/* establish node coordinates (plotconsensustree) */ +void nodecoordinates(int node) +{ + int i, ymin, ymax, xcoordinate; + + /* first establish coordinates of descending nodes */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '2' || + consbiparts[node][i] == '3') + nodecoordinates(i); + } + + /* then establish coordinates of descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '1' || + consbiparts[node][i] == '3') { + /* y-coordinate of taxon i */ + ycortax[i] = ytaxcounter; + ytaxcounter = ytaxcounter - 2; + } + } + + /* then establish coordinates of this node */ + ymin = 2*Maxspc - 2; + ymax = 0; + xcoordinate = 0; + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '2' || + consbiparts[node][i] == '3') { + if (ycor[i] > ymax) ymax = ycor[i]; + if (ycor[i] < ymin) ymin = ycor[i]; + if (xcor[i] > xcoordinate) xcoordinate = xcor[i]; + } + } + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '1' || + consbiparts[node][i] == '3') { + if (ycortax[i] > ymax) ymax = ycortax[i]; + if (ycortax[i] < ymin) ymin = ycortax[i]; + } + } + ycormax[node] = ymax; + ycormin[node] = ymin; + ycor[node] = (int) floor(0.5*(ymax + ymin) + 0.5); + if (xcoordinate == 0) xcoordinate = 9; + xcor[node] = xcoordinate + 4; +} + +/* prototype for recursion */ +void drawnode(int node, int xold); + +/* drawnode (plotconsensustree) */ +void drawnode(int node, int xold) +{ + int i, j; + char buf[4]; + + /* first draw vertical line */ + for (i = ycormin[node] + 1; i < ycormax[node]; i++) + treepict[xcor[node]][i] = ':'; + + /* then draw descending nodes */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '2' || + consbiparts[node][i] == '3') + drawnode(i, xcor[node]); + } + + /* then draw descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '1' || + consbiparts[node][i] == '3') { + treepict[xcor[node]][ycortax[i]] = ':'; + for (j = xcor[node] + 1; j < xsize-10; j++) + treepict[j][ycortax[i]] = '-'; + for (j = 0; j < 10; j++) + treepict[xsize-10+j][ycortax[i]] = Identif[i][j]; + } + } + + /* then draw internal edge with consensus value */ + treepict[xold][ycor[node]] = ':'; + treepict[xcor[node]][ycor[node]] = ':'; + for (i = xold + 1; i < xcor[node]-3; i++) + treepict[i][ycor[node]] = '-'; + sprintf(buf, "%d", consconfid[node]); + if (consconfid[node] == 100) { + treepict[xcor[node]-3][ycor[node]] = buf[0]; + treepict[xcor[node]-2][ycor[node]] = buf[1]; + treepict[xcor[node]-1][ycor[node]] = buf[2]; + } else { + treepict[xcor[node]-3][ycor[node]] = '-'; + treepict[xcor[node]-2][ycor[node]] = buf[0]; + treepict[xcor[node]-1][ycor[node]] = buf[1]; + } +} + +/* plot consensus tree */ +void plotconsensustree(FILE *plotfp) +{ + int i, j, yroot, startree; + + /* star tree or no star tree */ + if (consincluded == 0) { + startree = TRUE; + consincluded = 1; /* avoids problems with malloc */ + } else + startree = FALSE; + + /* memory for x-y-coordinates of each bipartition */ + xcor = new_ivector(consincluded); + ycor = new_ivector(consincluded); + ycormax = new_ivector(consincluded); + ycormin = new_ivector(consincluded); + if (startree) consincluded = 0; /* avoids problems with malloc */ + + /* y-coordinates of each taxon */ + ycortax = new_ivector(Maxspc); + ycortax[outgroup] = 0; + + /* establish coordinates */ + ytaxcounter = 2*Maxspc - 2; + + /* first establish coordinates of descending nodes */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '2' || + consbiparts[consincluded][i] == '3') + nodecoordinates(i); + } + + /* then establish coordinates of descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '1' || + consbiparts[consincluded][i] == '3') { + /* y-coordinate of taxon i */ + ycortax[i] = ytaxcounter; + ytaxcounter = ytaxcounter - 2; + } + } + + /* then establish length of root edge and size of whole tree */ + yroot = 0; + xsize = 0; + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '2' || + consbiparts[consincluded][i] == '3') { + if (ycor[i] > yroot) yroot = ycor[i]; + if (xcor[i] > xsize) xsize = xcor[i]; + } + } + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '1' || + consbiparts[consincluded][i] == '3') { + if (ycortax[i] > yroot) yroot = ycortax[i]; + } + } + if (xsize == 0) xsize = 9; + /* size in x direction inclusive one blank on the left */ + xsize = xsize + 6; + + /* change all x-labels so that (0,0) is down-left */ + for (i = 0; i < consincluded; i++) + xcor[i] = xsize-1-xcor[i]; + + /* draw tree */ + treepict = new_cmatrix(xsize, 2*Maxspc-1); + for (i = 0; i < xsize; i++) + for (j = 0; j < 2*Maxspc-1; j++) + treepict[i][j] = ' '; + + /* draw root */ + for (i = 1; i < yroot; i++) + treepict[1][i] = ':'; + treepict[1][0] = ':'; + for (i = 2; i < xsize - 10; i++) + treepict[i][0] = '-'; + for (i = 0; i < 10; i++) + treepict[xsize-10+i][0] = Identif[outgroup][i]; + + /* then draw descending nodes */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '2' || + consbiparts[consincluded][i] == '3') + drawnode(i, 1); + } + + /* then draw descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '1' || + consbiparts[consincluded][i] == '3') { + treepict[1][ycortax[i]] = ':'; + for (j = 2; j < xsize-10; j++) + treepict[j][ycortax[i]] = '-'; + for (j = 0; j < 10; j++) + treepict[xsize-10+j][ycortax[i]] = Identif[i][j]; + } + } + + /* plot tree */ + for (i = 2*Maxspc-2; i > -1; i--) { + for (j = 0; j < xsize; j++) + fputc(treepict[j][i], plotfp); + fputc('\n', plotfp); + } + + free_ivector(xcor); + free_ivector(ycor); + free_ivector(ycormax); + free_ivector(ycormin); + free_ivector(ycortax); + free_cmatrix(treepict); +} + + + +/******************************************************************************/ +/* storing and evaluating quartet branching information */ +/******************************************************************************/ + +/* general remarks: + + for a quartet with the taxa a, b, c, d there are + three possible binary trees: + + 1) (a,b)-(c,d) + 2) (a,c)-(b,d) + 3) (a,d)-(b,c) + + For every quartet information about its branching structure is + stored. With the functions readquartet and writequartet + this information can be accessed. For every quartet (a,b,c,d) + with a < b < c < d (taxa) the branching information is encoded + using 4 bits: + + value 8 4 2 1 + +-------------+-------------+-------------+-------------+ + | not used | tree 3 | tree 2 | tree 1 | + +-------------+-------------+-------------+-------------+ + + If the branching structure of the taxa corresponds to one of the + three trees the corresponding bit is set. If the branching structure + is unclear because two of the three trees have the same maximum + likelihood value the corresponding two bits are set. If the branching + structure is completely unknown all the bits are set (the highest + bit is always cleared because it is not used). + +*/ + +/* allocate memory for quartets */ +unsigned char *mallocquartets(int taxa) +{ + uli nc, numch; + unsigned char *qinfo; + + /* compute number of quartets */ + Numquartets = (uli) taxa*(taxa-1)*(taxa-2)*(taxa-3)/24; + if (Numquartets % 2 == 0) { /* even number */ + numch = Numquartets/2; + } else { /* odd number */ + numch = (Numquartets + 1)/2; + } + /* allocate memory */ + qinfo = (unsigned char *) malloc(numch * sizeof(unsigned char) ); + if (qinfo == NULL) maerror("quartetinfo in mallocquartets"); + for (nc = 0; nc < numch; nc++) qinfo[nc] = 0; + return(qinfo); +} + +/* free quartet memory */ +void freequartets() +{ + free(quartetinfo); +} + +/* read quartet info - a < b < c < d */ +unsigned char readquartet(int a, int b, int c, int d) +{ + uli qnum; + + qnum = (uli) a + + (uli) b*(b-1)/2 + + (uli) c*(c-1)*(c-2)/6 + + (uli) d*(d-1)*(d-2)*(d-3)/24; + if (qnum % 2 == 0) { /* even number */ + /* bits 0 to 3 */ + return (quartetinfo[qnum/2] & (unsigned char) 15); + } else { /* odd number */ + /* bits 4 to 7 */ + return ((quartetinfo[(qnum-1)/2] & (unsigned char) 240)>>4); + } +} + +/* write quartet info - a < b < c < d, 0 <= info <= 15 */ +void writequartet(int a, int b, int c, int d, unsigned char info) +{ + uli qnum; + + qnum = (uli) a + + (uli) b*(b-1)/2 + + (uli) c*(c-1)*(c-2)/6 + + (uli) d*(d-1)*(d-2)*(d-3)/24; + if (qnum % 2 == 0) { /* even number */ + /* bits 0 to 3 */ + quartetinfo[qnum/2] = + ((quartetinfo[qnum/2] & (unsigned char) 240) | + (info & (unsigned char) 15)); + } else { /* odd number */ + /* bits 4 to 7 */ + quartetinfo[(qnum-1)/2] = + ((quartetinfo[(qnum-1)/2] & (unsigned char) 15) | + ((info & (unsigned char) 15)<<4)); + } +} + +/* prototypes */ +void openfiletowrite(FILE **, char[], char[]); +void closefile(FILE *); + +/* sorts three doubles in descending order */ +void sort3doubles(dvector num, ivector order) +{ + if (num[0] > num[1]) { + if(num[2] > num[0]) { + order[0] = 2; + order[1] = 0; + order[2] = 1; + } else if (num[2] < num[1]) { + order[0] = 0; + order[1] = 1; + order[2] = 2; + } else { + order[0] = 0; + order[1] = 2; + order[2] = 1; + } + } else { + if(num[2] > num[1]) { + order[0] = 2; + order[1] = 1; + order[2] = 0; + } else if (num[2] < num[0]) { + order[0] = 1; + order[1] = 0; + order[2] = 2; + } else { + order[0] = 1; + order[1] = 2; + order[2] = 0; + } + } +} + +/* checks out all possible quartets */ +void computeallquartets() +{ + double onethird; + uli nq; + unsigned char treebits[3]; + FILE *lhfp; +# if ! PARALLEL + int a, b, c, i; + double qc2, mintogo, minutes, hours, temp; + double temp1, temp2, temp3; + unsigned char discreteweight[3]; +# endif + + onethird = 1.0/3.0; + treebits[0] = (unsigned char) 1; + treebits[1] = (unsigned char) 2; + treebits[2] = (unsigned char) 4; + + if (show_optn) { /* list all unresolved quartets */ + openfiletowrite(&unresfp, UNRESOLVED, "unresolved quartet trees"); + fprintf(unresfp, "List of all completely unresolved quartets:\n\n"); + } + + nq = 0; + badqs = 0; + + /* start timer - percentage of completed quartets */ + time(&time0); + time1 = time0; + mflag = 0; + +# if PARALLEL + { + schedtype sched; + int flag; + MPI_Status stat; + int dest = 1; + uli qaddr =0; + uli qamount=0; + int qblocksent = 0; + int apr; + uli sq, noq; + initsched(&sched, numquarts(Maxspc), PP_NumProcs-1, 4); + qamount=sgss(&sched); + while (qamount > 0) { + if (PP_emptyslave()) { + PP_RecvQuartBlock(0, &sq, &noq, quartetinfo, &apr); + qblocksent -= noq; + } + dest = PP_getslave(); + PP_SendDoQuartBlock(dest, qaddr, qamount, (approxqp ? APPROX : EXACT)); + qblocksent += qamount; + qaddr += qamount; + qamount=sgss(&sched); + + MPI_Iprobe(MPI_ANY_SOURCE, PP_QUARTBLOCKSPECS, PP_Comm, &flag, &stat); + while (flag) { + PP_RecvQuartBlock(0, &sq, &noq, quartetinfo, &apr); + qblocksent -= noq; + MPI_Iprobe(MPI_ANY_SOURCE, PP_QUARTBLOCKSPECS, PP_Comm, &flag, &stat); + } + } + while (qblocksent > 0) { + PP_RecvQuartBlock(0, &sq, &noq, quartetinfo, &apr); + qblocksent -= noq; + } + } +# else /* PARALLEL */ + + addtimes(GENERAL, &tarr); + if (savequartlh_optn) { + openfiletowrite(&lhfp, ALLQUARTLH, "all quartet likelihoods"); + if (saveqlhbin_optn) writetpqfheader(Maxspc, lhfp, 3); + else writetpqfheader(Maxspc, lhfp, 4); + } + + for (i = 3; i < Maxspc; i++) + for (c = 2; c < i; c++) + for (b = 1; b < c; b++) + for (a = 0; a < b; a++) { + nq++; + + /* generate message every 15 minutes */ + /* check timer */ + time(&time2); + if ( (time2 - time1) > 900) { + /* every 900 seconds */ + /* percentage of completed quartets */ + if (mflag == 0) { + FPRINTF(STDOUTFILE "\n"); + mflag = 1; + } + qc2 = 100.*nq/Numquartets; + mintogo = (100.0-qc2) * + (double) (time2-time0)/60.0/qc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%.2f%%", qc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + fflush(STDOUT); + time1 = time2; + } + + /* maximum likelihood values */ + + /* exact or approximate maximum likelihood values */ + compute_quartlklhds(a,b,c,i,&qweight[0],&qweight[1],&qweight[2], (approxqp ? APPROX : EXACT)); + + if (savequartlh_optn) { + if (saveqlhbin_optn) + fwrite(qweight, sizeof(double), 3, lhfp); + else + fprintf(lhfp, "(%d,%d,%d,%d)\t%f\t%f\t%f\n", a, b, c, i, + qweight[0], qweight[1], qweight[2]); + } + + /* sort in descending order */ + sort3doubles(qweight, qworder); + + if (usebestq_optn) { + sqorder[2] = 2; + discreteweight[sqorder[2]] = treebits[qworder[0]]; + if (qweight[qworder[0]] == qweight[qworder[1]]) { + discreteweight[sqorder[2]] = discreteweight[sqorder[2]] || treebits[qworder[1]]; + if (qweight[qworder[1]] == qweight[qworder[2]]) { + discreteweight[sqorder[2]] = discreteweight[sqorder[2]] || treebits[qworder[2]]; + discreteweight[sqorder[2]] = 7; + } + } + } else { + + /* compute Bayesian weights */ + qweight[qworder[1]] = exp(qweight[qworder[1]]-qweight[qworder[0]]); + qweight[qworder[2]] = exp(qweight[qworder[2]]-qweight[qworder[0]]); + qweight[qworder[0]] = 1.0; + temp = qweight[0] + qweight[1] + qweight[2]; + qweight[0] = qweight[0]/temp; + qweight[1] = qweight[1]/temp; + qweight[2] = qweight[2]/temp; + + /* square deviations */ + temp1 = 1.0 - qweight[qworder[0]]; + sqdiff[0] = temp1 * temp1 + + qweight[qworder[1]] * qweight[qworder[1]] + + qweight[qworder[2]] * qweight[qworder[2]]; + discreteweight[0] = treebits[qworder[0]]; + + temp1 = 0.5 - qweight[qworder[0]]; + temp2 = 0.5 - qweight[qworder[1]]; + sqdiff[1] = temp1 * temp1 + temp2 * temp2 + + qweight[qworder[2]] * qweight[qworder[2]]; + discreteweight[1] = treebits[qworder[0]] + treebits[qworder[1]]; + + temp1 = onethird - qweight[qworder[0]]; + temp2 = onethird - qweight[qworder[1]]; + temp3 = onethird - qweight[qworder[2]]; + sqdiff[2] = temp1 * temp1 + temp2 * temp2 + temp3 * temp3; + discreteweight[2] = (unsigned char) 7; + + /* sort in descending order */ + sort3doubles(sqdiff, sqorder); + } + + /* determine best discrete weight */ + writequartet(a, b, c, i, discreteweight[sqorder[2]]); + + /* counting completely unresolved quartets */ + if (discreteweight[sqorder[2]] == 7) { + badqs++; + badtaxon[a]++; + badtaxon[b]++; + badtaxon[c]++; + badtaxon[i]++; + if (show_optn) { + fputid10(unresfp, a); + fprintf(unresfp, " "); + fputid10(unresfp, b); + fprintf(unresfp, " "); + fputid10(unresfp, c); + fprintf(unresfp, " "); + fputid(unresfp, i); + fprintf(unresfp, "\n"); + } + } + addtimes(QUARTETS, &tarr); + } + if (savequartlh_optn) { + closefile(lhfp); + } + if (show_optn) + closefile(unresfp); + if (mflag == 1) + FPRINTF(STDOUTFILE "\n"); +# endif /* PARALLEL */ + +} + +/* check the branching structure between the leaves (not the taxa!) + A, B, C, and I (A, B, C, I don't need to be ordered). As a result, + the two leaves that are closer related to each other than to leaf I + are found in chooseA and chooseB. If the branching structure is + not uniquely defined, ChooseA and ChooseB are chosen randomly + from the possible taxa */ +void checkquartet(int A, int B, int C, int I) +{ + int i, j, a, b, taxon[5], leaf[5], ipos; + unsigned char qresult; + int notunique = FALSE; + + /* The relationship between leaves and taxa is defined by trueID */ + taxon[1] = trueID[A]; /* taxon number */ + leaf[1] = A; /* leaf number */ + taxon[2] = trueID[B]; + leaf[2] = B; + taxon[3] = trueID[C]; + leaf[3] = C; + taxon[4] = trueID[I]; + leaf[4] = I; + + /* sort for taxa */ + /* Source: Numerical Recipes (PIKSR2.C) */ + for (j = 2; j <= 4; j++) { + a = taxon[j]; + b = leaf[j]; + i = j-1; + while (i > 0 && taxon[i] > a) { + taxon[i+1] = taxon[i]; + leaf[i+1] = leaf[i]; + i--; + } + taxon[i+1] = a; + leaf[i+1] = b; + } + + /* where is leaf I ? */ + ipos = 1; + while (leaf[ipos] != I) ipos++; + + /* look at sequence quartet */ + qresult = readquartet(taxon[1], taxon[2], taxon[3], taxon[4]); + + /* chooseA and chooseB */ + do { + switch (qresult) { + + /* one single branching structure */ + + /* 001 */ + case 1: if (ipos == 1 || ipos == 2) { + chooseA = leaf[3]; + chooseB = leaf[4]; + } else { + chooseA = leaf[1]; + chooseB = leaf[2]; + } + notunique = FALSE; + break; + + /* 010 */ + case 2: if (ipos == 1 || ipos == 3) { + chooseA = leaf[2]; + chooseB = leaf[4]; + } else { + chooseA = leaf[1]; + chooseB = leaf[3]; + } + notunique = FALSE; + break; + + /* 100 */ + case 4: if (ipos == 1 || ipos == 4) { + chooseA = leaf[2]; + chooseB = leaf[3]; + } else { + chooseA = leaf[1]; + chooseB = leaf[4]; + } + notunique = FALSE; + break; + + /* two possible branching structures */ + + /* 011 */ + case 3: if (randominteger(2)) qresult = 1; + else qresult = 2; + notunique = TRUE; + break; + + /* 101 */ + case 5: if (randominteger(2)) qresult = 1; + else qresult = 4; + notunique = TRUE; + break; + + /* 110 */ + case 6: if (randominteger(2)) qresult = 2; + else qresult = 4; + notunique = TRUE; + break; + + /* three possible branching structures */ + + /* 111 */ + case 7: qresult = (1 << randominteger(3)); /* 1, 2, or 4 */ + notunique = TRUE; + break; + + default: /* Program error [checkquartet] */ +#if PARALLEL + FPRINTF(STDOUTFILE "\n\n\n(%2d)HALT: PLEASE REPORT ERROR K-PARALLEL TO DEVELOPERS (%d,%d,%d,%d) = %ld\n\n\n", + PP_Myid, taxon[1], taxon[2], taxon[3], taxon[4], + quart2num(taxon[1], taxon[2], taxon[3], taxon[4])); +#else + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR K TO DEVELOPERS\n\n\n"); +#endif + + } + } while (notunique); + + return; +} + diff --git a/forester/archive/RIO/others/puzzle_dqo/src/sched.c b/forester/archive/RIO/others/puzzle_dqo/src/sched.c new file mode 100644 index 0000000..3f1c0f6 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/sched.c @@ -0,0 +1,423 @@ +/* + * sched.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#include +#include +#include +#include "sched.h" +/* #include "ppuzzle.h" */ + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, +#endif + +int scinit; +int ssinit; +int fscinit; +int gssinit; +int tssinit; + +int n, chunksize; +int p; + +#ifdef SCHEDTEST + schedtype testsched; +#endif + +void printsched(schedtype sch) +{ + FPRINTF(STDOUTFILE "Current scheduling status:\n"); + FPRINTF(STDOUTFILE " truetasks=%5ld - alltasks=%5ld - numtasks=%5ld - numprocs=%5d\n", + sch.truetasks, sch.alltasks, sch.numtasks, sch.numprocs); + FPRINTF(STDOUTFILE " delta =%5d - overhead=%5d - rest =%5d - inited =%5d\n", + sch.delta, sch.overhead, sch.rest, sch.inited); + FPRINTF(STDOUTFILE " nconst =%5d - fconst =%5f - lconst =%5f - kconst =%5f\n", + sch.nconst, sch.fconst, sch.lconst, sch.kconst); +} + +void initsched(schedtype *sch, uli tasks, int procs, uli minchunk) +{ + if (minchunk < 1) minchunk = 1; + (*sch).minchunk = minchunk; + (*sch).truetasks = tasks; + (*sch).rest = (int)((*sch).truetasks % (*sch).minchunk); + (*sch).alltasks = (tasks - (*sch).rest); + (*sch).numtasks = (*sch).alltasks; + (*sch).numprocs = procs; + (*sch).delta = 0; + (*sch).overhead = 0; + (*sch).nconst = 0; + (*sch).fconst = 0; + (*sch).lconst = 0; + (*sch).kconst = 0; + (*sch).inited = 0; + +# ifdef PVERBOSE1 + printsched(*sch); +# endif /* PVERBOSE1 */ +} + +/************************************** +* Static Chunking +**************************************/ +uli sc(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).overhead = (*sch).alltasks % (*sch).numprocs; + (*sch).delta = ((*sch).alltasks - (*sch).overhead) / (*sch).numprocs; + (*sch).inited ++; + } + + if (!(*sch).overhead) { + if ((*sch).numtasks >= (*sch).delta) + tmp = (uli)(*sch).delta; + else + tmp = 0; + } else { + if ((*sch).numtasks >= ((*sch).delta + 1)) { + tmp = (uli)(*sch).delta + 1; + (*sch).overhead--; + } else + tmp = 0; + } + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + return tmp; +} /* SC */ + + +/************************************** +* Self Scheduling +**************************************/ +uli ss(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).inited ++; + } + + if ((*sch).numtasks >= 1) + tmp = 1; + else + tmp = (*sch).numtasks; + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + + return tmp; +} /* SS */ + + +/************************************** +* fixed-size chunking +**************************************/ +int fsc() +{ + static int R ; + static int delta ; + static int overhead; + + int tmp; + + if (fscinit == 0) { + R = n; + overhead = n % p; + delta = (n - overhead) / p; + fscinit ++; + } + + if (!overhead) { + if (R >= delta) + tmp = delta; + else + tmp = 0; + } else { + if (R >= (delta + 1)) { + tmp = delta + 1; + overhead--; + } else + tmp = 0; + } + + R -= tmp; + return tmp; +} /* FSC */ + + +/************************************** +* Guided Self Scheduling +**************************************/ +uli gss(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).inited ++; + } + + if ((*sch).numtasks >= 1) { + tmp = (uli)ceil((*sch).numtasks / (*sch).numprocs); + if (tmp == 0) tmp = 1; + } else + tmp = 0; + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + return tmp; +} /* GSS */ + +/************************************** +* Smooth Guided Self Scheduling +**************************************/ +uli sgss(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).inited ++; + } + + if ((*sch).numtasks >= 1) { + tmp = (uli)ceil(((*sch).numtasks / (*sch).numprocs) / 2); + if (tmp == 0) tmp = 1; + } else + tmp = 0; + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + return tmp; +} /* SGSS */ + + +/************************************** +* Trapezoid Self Scheduling +**************************************/ +uli tss(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).fconst = ceil((*sch).numtasks / (2*(*sch).numprocs)); + if ((*sch).fconst == 0) (*sch).fconst = 1; + (*sch).lconst = 1; + (*sch).nconst = ceil( (2*n) / ((*sch).fconst + (*sch).lconst) ); + (*sch).ddelta = (((*sch).fconst - (*sch).lconst) / ((*sch).nconst - 1)); + (*sch).kconst = (*sch).fconst; + FPRINTF(STDOUTFILE "f = n/2p = %.2f ; l = %.2f\n", (*sch).fconst, (*sch).lconst); + FPRINTF(STDOUTFILE "N = 2n/(f+l) = %d ; delta = (f-l)/(N-1) = %.2f\n", (*sch).nconst, (*sch).ddelta); + (*sch).inited ++; + } + + if ((*sch).kconst <= (double) (*sch).numtasks) { + tmp = (uli)ceil((*sch).kconst); + (*sch).kconst -= (*sch).ddelta; + } else { + tmp = (uli)(*sch).numtasks; + (*sch).kconst = 0.0; + } + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + return tmp; + +} /* TSS */ + + +/******************/ + + +#ifdef SCHEDTEST + uli numquarts(int maxspc) + { + uli tmp; + int a, b, c, d; + + if (maxspc < 4) + return (uli)0; + else { + maxspc--; + a = maxspc-3; + b = maxspc-2; + c = maxspc-1; + d = maxspc; + + tmp = (uli) 1 + a + + (uli) b * (b-1) / 2 + + (uli) c * (c-1) * (c-2) / 6 + + (uli) d * (d-1) * (d-2) * (d-3) / 24; + return (tmp); + } + } /* numquarts */ +#endif + + + + +/************************************** +* main +**************************************/ +#ifdef SCHEDTEST +int main(int argc, char *argv[]) +{ + int tcount, + count, + lastsize, + size; + if ((argc > 4) || (argc < 3)) { + FPRINTF(STDOUTFILE "\n\n Usage: %s <# species> <# processors> []\n\n", argv[0]); + exit(1); + } + + chunksize = 1; + + switch(argc) { + case 4: + chunksize = atoi(argv[3]); + case 3: + n = numquarts(atoi(argv[1])); + p = atoi(argv[2]); + } + + FPRINTF(STDOUTFILE "proc=%6d\n", p); + FPRINTF(STDOUTFILE "task=%6d\n", n); + + initsched(&testsched, n, p, chunksize); + printsched(testsched); + + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n---------------------------\n"); + FPRINTF(STDOUTFILE "SC(sched) - Static Chunking\n"); + FPRINTF(STDOUTFILE "---------------------------\n\n"); + do { size = sc(&testsched); + if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + tcount+=size;} + else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1)); + } while (size > 0); + + + initsched(&testsched, n, p, chunksize); + printsched(testsched); + + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n---------------------------\n"); + FPRINTF(STDOUTFILE "SS(sched) - Self Scheduling\n"); + FPRINTF(STDOUTFILE "---------------------------\n\n"); + do { size = ss(&testsched); + if (size > 0) {if (count==1) FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + count++; + tcount+=size; + lastsize = size;} + else {FPRINTF(STDOUTFILE " ...\n"); + FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, lastsize , (lastsize%chunksize) ? '!' : ' '); + FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1));} + } while (size > 0); + + +/**/ + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n---------------------------\n"); + FPRINTF(STDOUTFILE "FSC() - Fixed-Size Chunking\n"); + FPRINTF(STDOUTFILE "---------------------------\n\n"); + do { size = fsc(); + if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + tcount+=size;} + else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1)); + } while (size > 0); +/**/ + + initsched(&testsched, n, p, chunksize); + printsched(testsched); + + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n-----------------------------------\n"); + FPRINTF(STDOUTFILE "GSS(sched) - Guided Self Scheduling\n"); + FPRINTF(STDOUTFILE "-----------------------------------\n\n"); + do { size = gss(&testsched); + if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + tcount+=size;} + else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1)); + } while (size > 0); + + initsched(&testsched, n, p, chunksize); + printsched(testsched); + + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n--------------------------------------\n"); + FPRINTF(STDOUTFILE "TSS(sched) - Trapezoid Self Scheduling\n"); + FPRINTF(STDOUTFILE "--------------------------------------\n\n"); + do { size = tss(&testsched); + if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + tcount+=size;} + else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1)); + } while (size > 0); + return (0); +} +#endif diff --git a/forester/archive/RIO/others/puzzle_dqo/src/sched.h b/forester/archive/RIO/others/puzzle_dqo/src/sched.h new file mode 100644 index 0000000..e75bdd2 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/sched.h @@ -0,0 +1,53 @@ +/* + * sched.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef SCHED_H +#define SCHED_H +#ifndef SCHEDTEST +# include "util.h" +#else + typedef unsigned long int uli; +#endif + + +typedef struct sched_t{ + uli truetasks; + uli alltasks; + uli numtasks; + uli minchunk; + int numprocs; + int delta; + double ddelta; + int overhead; + int rest; + int nconst; + double fconst; + double lconst; + double kconst; + int inited; +} schedtype; + +void num2quart(uli qnum, int *a, int *b, int *c, int *d); +uli numquarts(int maxspc); +uli quart2num (int a, int b, int c, int d); + +void printsched(schedtype sch); +void initsched(schedtype *sch, uli tasks, int procs, uli minchunk); +uli sc(schedtype *sch); +uli gss(schedtype *sch); +uli sgss(schedtype *sch); +uli tss(schedtype *sch); + +#endif /* SCHED_H */ diff --git a/forester/archive/RIO/others/puzzle_dqo/src/test b/forester/archive/RIO/others/puzzle_dqo/src/test new file mode 100644 index 0000000..a680df2 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/test @@ -0,0 +1,19 @@ +CC gcc +LIBS -lm +CFLAGS -g -O2 +DEFS -DPACKAGE=\"tree-puzzle\" -DVERSION=\"5.0\" -DHAVE_LIBM=1 -DSTDC_HEADERS=1 -DHAVE_LIMITS_H=1 +SET_MAKE + +HCC @HCC@ +MPICC +MPCC @MPCC@ + +MPICC +MPILIBS +MPIDEFS +MPICFLAGS + +PCC @PCC@ +PLIBS @PLIBS@ +PDEFS @PDEFS@ +PCFLAGS @PCFLAGS@ diff --git a/forester/archive/RIO/others/puzzle_dqo/src/test.in b/forester/archive/RIO/others/puzzle_dqo/src/test.in new file mode 100644 index 0000000..0dc7ddc --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/test.in @@ -0,0 +1,19 @@ +CC @CC@ +LIBS @LIBS@ +CFLAGS @CFLAGS@ +DEFS @DEFS@ +SET_MAKE @SET_MAKE@ + +HCC @HCC@ +MPICC @MPICC@ +MPCC @MPCC@ + +MPICC @MPICC@ +MPILIBS @MPILIBS@ +MPIDEFS @MPIDEFS@ +MPICFLAGS @MPICFLAGS@ + +PCC @PCC@ +PLIBS @PLIBS@ +PDEFS @PDEFS@ +PCFLAGS @PCFLAGS@ diff --git a/forester/archive/RIO/others/puzzle_dqo/src/util.c b/forester/archive/RIO/others/puzzle_dqo/src/util.c new file mode 100644 index 0000000..6a998dc --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/util.c @@ -0,0 +1,751 @@ +/* + * util.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#include "util.h" + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, + extern int PP_NumProcs; + extern int PP_Myid; + long int PP_randn; + long int PP_rand; +#endif + + +/* + * memory allocation error handler + */ + +void maerror(char *message) +{ + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (lack of memory: %s)\n\n", message); + FPRINTF(STDOUTFILE "Hint for Macintosh users:\n"); + FPRINTF(STDOUTFILE "Use the command of the Finder to increase the memory partition!\n\n"); + exit(1); +} + + +/* + * memory allocate double vectors, matrices, and cubes + */ + +dvector new_dvector(int n) +{ + dvector v; + + v = (dvector) malloc((unsigned) (n * sizeof(double))); + if (v == NULL) maerror("step 1 in new_dvector"); + + return v; +} + +dmatrix new_dmatrix(int nrow, int ncol) +{ + int i; + dmatrix m; + + m = (dmatrix) malloc((unsigned) (nrow * sizeof(dvector))); + if (m == NULL) maerror("step 1 in in new_dmatrix"); + + *m = (dvector) malloc((unsigned) (nrow * ncol * sizeof(double))); + if (*m == NULL) maerror("step 2 in in new_dmatrix"); + + for (i = 1; i < nrow; i++) m[i] = m[i-1] + ncol; + + return m; +} + + + + +dcube new_dcube(int ntri, int nrow, int ncol) +{ + int i, j; + dcube c; + + c = (dcube) malloc((unsigned) (ntri * sizeof(dmatrix))); + if (c == NULL) maerror("step 1 in in new_dcube"); + + *c = (dmatrix) malloc((unsigned) (ntri * nrow * sizeof(dvector))); + if (*c == NULL) maerror("step 2 in in new_dcube"); + + **c = (dvector) malloc((unsigned) (ntri * nrow * ncol * sizeof(double))); + if (**c == NULL) maerror("step 3 in in new_dcube"); + + for (j = 1; j < nrow; j++) c[0][j] = c[0][j-1] + ncol; + + for (i = 1; i < ntri; i++) { + c[i] = c[i-1] + nrow; + c[i][0] = c[i-1][0] + nrow * ncol; + for (j = 1; j < nrow; j++) c[i][j] = c[i][j-1] + ncol; + } + + return c; +} + +void free_dvector(dvector v) +{ + free((double *) v); +} + +void free_dmatrix(dmatrix m) +{ + free((double *) *m); + free((double *) m); +} + +void free_dcube(dcube c) +{ + free((double *) **c); + free((double *) *c); + free((double *) c); +} + + +/* + * memory allocate char vectors, matrices, and cubes + */ + +cvector new_cvector(int n) +{ + cvector v; + + v = (cvector) malloc((unsigned)n * sizeof(char)); + if (v == NULL) maerror("step1 in new_cvector"); + + return v; +} + +cmatrix new_cmatrix(int nrow, int ncol) +{ + int i; + cmatrix m; + + m = (cmatrix) malloc((unsigned) (nrow * sizeof(cvector))); + if (m == NULL) maerror("step 1 in new_cmatrix"); + + *m = (cvector) malloc((unsigned) (nrow * ncol * sizeof(char))); + if (*m == NULL) maerror("step 2 in new_cmatrix"); + + for (i = 1; i < nrow; i++) m[i] = m[i-1] + ncol; + + return m; +} + +ccube new_ccube(int ntri, int nrow, int ncol) +{ + int i, j; + ccube c; + + c = (ccube) malloc((unsigned) (ntri * sizeof(cmatrix))); + if (c == NULL) maerror("step 1 in new_ccube"); + + *c = (cmatrix) malloc((unsigned) (ntri * nrow * sizeof(cvector))); + if (*c == NULL) maerror("step 2 in new_ccube"); + + **c = (cvector) malloc((unsigned) (ntri * nrow * ncol * sizeof(char))); + if (**c == NULL) maerror("step 3 in new_ccube"); + + for (j = 1; j < nrow; j++) c[0][j] = c[0][j-1] + ncol; + + for (i = 1; i < ntri; i++) { + c[i] = c[i-1] + nrow; + c[i][0] = c[i-1][0] + nrow * ncol; + for (j = 1; j < nrow; j++) c[i][j] = c[i][j-1] + ncol; + } + + return c; +} + +void free_cvector(cvector v) +{ + free((char *) v); +} + +void free_cmatrix(cmatrix m) +{ + free((char *) *m); + free((char *) m); +} + +void free_ccube(ccube c) +{ + free((char *) **c); + free((char *) *c); + free((char *) c); +} + + +/* + * memory allocate int vectors, matrices, and cubes + */ + +ivector new_ivector(int n) +{ + ivector v; + + v = (ivector) malloc((unsigned) (n * sizeof(int))); + if (v == NULL) maerror("step 1 in new_ivector"); + + return v; +} + +imatrix new_imatrix(int nrow, int ncol) +{ + int i; + imatrix m; + + m = (imatrix) malloc((unsigned) (nrow * sizeof(ivector))); + if (m == NULL) maerror("step 1 in new_imatrix"); + + *m = (ivector) malloc((unsigned) (nrow * ncol * sizeof(int))); + if (*m == NULL) maerror("step 2 in new_imatrix"); + + for (i = 1; i < nrow; i++) m[i] = m[i-1] + ncol; + + return m; +} + +icube new_icube(int ntri, int nrow, int ncol) +{ + int i, j; + icube c; + + c = (icube) malloc((unsigned) (ntri * sizeof(imatrix))); + if (c == NULL) maerror("step 1 in new_icube"); + + *c = (imatrix) malloc((unsigned) (ntri * nrow * sizeof(ivector))); + if (*c == NULL) maerror("step 2 in new_icube"); + + **c = (ivector) malloc((unsigned) (ntri * nrow * ncol * sizeof(int))); + if (**c == NULL) maerror("step 3 in new_icube"); + + for (j = 1; j < nrow; j++) c[0][j] = c[0][j-1] + ncol; + + for (i = 1; i < ntri; i++) { + c[i] = c[i-1] + nrow; + c[i][0] = c[i-1][0] + nrow * ncol; + for (j = 1; j < nrow; j++) c[i][j] = c[i][j-1] + ncol; + } + + return c; +} + +void free_ivector(ivector v) +{ + free((int *) v); +} + +void free_imatrix(imatrix m) +{ + free((int *) *m); + free((int *) m); +} + +void free_icube(icube c) +{ + free((int *) **c); + free((int *) *c); + free((int *) c); +} + + +/* + * memory allocate uli vectors, matrices, and cubes + */ + +ulivector new_ulivector(int n) +{ + ulivector v; + + v = (ulivector) malloc((unsigned) (n * sizeof(uli))); + if (v == NULL) maerror("step 1 in new_ulivector"); + + return v; +} + +ulimatrix new_ulimatrix(int nrow, int ncol) +{ + int i; + ulimatrix m; + + m = (ulimatrix) malloc((unsigned) (nrow * sizeof(ulivector))); + if (m == NULL) maerror("step 1 in new_ulimatrix"); + + *m = (ulivector) malloc((unsigned) (nrow * ncol * sizeof(uli))); + if (*m == NULL) maerror("step 2 in new_ulimatrix"); + + for (i = 1; i < nrow; i++) m[i] = m[i-1] + ncol; + + return m; +} + +ulicube new_ulicube(int ntri, int nrow, int ncol) +{ + int i, j; + ulicube c; + + c = (ulicube) malloc((unsigned) (ntri * sizeof(ulimatrix))); + if (c == NULL) maerror("step 1 in new_ulicube"); + + *c = (ulimatrix) malloc((unsigned) (ntri * nrow * sizeof(ulivector))); + if (*c == NULL) maerror("step 2 in new_ulicube"); + + **c = (ulivector) malloc((unsigned) (ntri * nrow * ncol * sizeof(uli))); + if (**c == NULL) maerror("step 3 in new_ulicube"); + + for (j = 1; j < nrow; j++) c[0][j] = c[0][j-1] + ncol; + + for (i = 1; i < ntri; i++) { + c[i] = c[i-1] + nrow; + c[i][0] = c[i-1][0] + nrow * ncol; + for (j = 1; j < nrow; j++) c[i][j] = c[i][j-1] + ncol; + } + + return c; +} + +void free_ulivector(ulivector v) +{ + free((uli *) v); +} + +void free_ulimatrix(ulimatrix m) +{ + free((uli *) *m); + free((uli *) m); +} + +void free_ulicube(ulicube c) +{ + free((uli *) **c); + free((uli *) *c); + free((uli *) c); +} + + +/******************************************************************************/ +/* random numbers generator (Numerical recipes) */ +/******************************************************************************/ + +/* definitions */ +#define IM1 2147483563 +#define IM2 2147483399 +#define AM (1.0/IM1) +#define IMM1 (IM1-1) +#define IA1 40014 +#define IA2 40692 +#define IQ1 53668 +#define IQ2 52774 +#define IR1 12211 +#define IR2 3791 +#define NTAB 32 +#define NDIV (1+IMM1/NTAB) +#define EPS 1.2e-7 +#define RNMX (1.0-EPS) + +/* variable */ +long idum; + +double randomunitintervall() +/* Long period (> 2e18) random number generator. Returns a uniform random + deviate between 0.0 and 1.0 (exclusive of endpoint values). + + Source: + Press et al., "Numerical recipes in C", Cambridge University Press, 1992 + (chapter 7 "Random numbers", ran2 random number generator) */ +{ + int j; + long k; + static long idum2=123456789; + static long iy=0; + static long iv[NTAB]; + double temp; + + if (idum <= 0) { + if (-(idum) < 1) + idum=1; + else + idum=-(idum); + idum2=(idum); + for (j=NTAB+7;j>=0;j--) { + k=(idum)/IQ1; + idum=IA1*(idum-k*IQ1)-k*IR1; + if (idum < 0) + idum += IM1; + if (j < NTAB) + iv[j] = idum; + } + iy=iv[0]; + } + k=(idum)/IQ1; + idum=IA1*(idum-k*IQ1)-k*IR1; + if (idum < 0) + idum += IM1; + k=idum2/IQ2; + idum2=IA2*(idum2-k*IQ2)-k*IR2; + if (idum2 < 0) + idum2 += IM2; + j=iy/NDIV; + iy=iv[j]-idum2; + iv[j] = idum; + if (iy < 1) + iy += IMM1; + if ((temp=AM*iy) > RNMX) + return RNMX; + else + return temp; +} + +#undef IM1 +#undef IM2 +#undef AM +#undef IMM1 +#undef IA1 +#undef IA2 +#undef IQ1 +#undef IQ2 +#undef IR1 +#undef IR2 +#undef NTAB +#undef NDIV +#undef EPS +#undef RNMX + +int initrandom(int seed) +{ + srand((unsigned) time(NULL)); + if (seed < 0) + seed = rand(); + idum=-(long) seed; +# ifdef PARALLEL + { + int n; + for (n=0; n= 0.0 ? fabs(a) : -fabs(a)) + +/* Brents method in one dimension */ +double brent(double ax, double bx, double cx, double (*f)(double), double tol, + double *foptx, double *f2optx, double fax, double fbx, double fcx) +{ + int iter; + double a,b,d=0,etemp,fu,fv,fw,fx,p,q,r,tol1,tol2,u,v,w,x,xm; + double xw,wv,vx; + double e=0.0; + + a=(ax < cx ? ax : cx); + b=(ax > cx ? ax : cx); + x=bx; + fx=fbx; + if (fax < fcx) { + w=ax; + fw=fax; + v=cx; + fv=fcx; + } else { + w=cx; + fw=fcx; + v=ax; + fv=fax; + } + for (iter=1;iter<=ITMAX;iter++) { + xm=0.5*(a+b); + tol2=2.0*(tol1=tol*fabs(x)+ZEPS); + if (fabs(x-xm) <= (tol2-0.5*(b-a))) { + *foptx = fx; + xw = x-w; + wv = w-v; + vx = v-x; + *f2optx = 2.0*(fv*xw + fx*wv + fw*vx)/ + (v*v*xw + x*x*wv + w*w*vx); + return x; + } + if (fabs(e) > tol1) { + r=(x-w)*(fx-fv); + q=(x-v)*(fx-fw); + p=(x-v)*q-(x-w)*r; + q=2.0*(q-r); + if (q > 0.0) p = -p; + q=fabs(q); + etemp=e; + e=d; + if (fabs(p) >= fabs(0.5*q*etemp) || p <= q*(a-x) || p >= q*(b-x)) + d=CGOLD*(e=(x >= xm ? a-x : b-x)); + else { + d=p/q; + u=x+d; + if (u-a < tol2 || b-u < tol2) + d=SIGN(tol1,xm-x); + } + } else { + d=CGOLD*(e=(x >= xm ? a-x : b-x)); + } + u=(fabs(d) >= tol1 ? x+d : x+SIGN(tol1,d)); + fu=(*f)(u); + if (fu <= fx) { + if (u >= x) a=x; else b=x; + SHFT(v,w,x,u) + SHFT(fv,fw,fx,fu) + } else { + if (u < x) a=u; else b=u; + if (fu <= fw || w == x) { + v=w; + w=u; + fv=fw; + fw=fu; + } else if (fu <= fv || v == x || v == w) { + v=u; + fv=fu; + } + } + } + *foptx = fx; + xw = x-w; + wv = w-v; + vx = v-x; + *f2optx = 2.0*(fv*xw + fx*wv + fw*vx)/ + (v*v*xw + x*x*wv + w*w*vx); + return x; +} +#undef ITMAX +#undef CGOLD +#undef ZEPS +#undef SHFT +#undef SIGN +#undef GOLD +#undef GLIMIT +#undef TINY + +/* one-dimensional minimization - as input a lower and an upper limit and a trial + value for the minimum is needed: xmin < xguess < xmax + the function and a fractional tolerance has to be specified + onedimenmin returns the optimal x value and the value of the function + and its second derivative at this point + */ +double onedimenmin(double xmin, double xguess, double xmax, double (*f)(double), + double tol, double *fx, double *f2x) +{ + double eps, optx, ax, bx, cx, fa, fb, fc; + + /* first attempt to bracketize minimum */ + eps = xguess*tol*50.0; + ax = xguess - eps; + if (ax < xmin) ax = xmin; + bx = xguess; + cx = xguess + eps; + if (cx > xmax) cx = xmax; + + /* check if this works */ + fa = (*f)(ax); + fb = (*f)(bx); + fc = (*f)(cx); + + /* if it works use these borders else be conservative */ + if ((fa < fb) || (fc < fb)) { + if (ax != xmin) fa = (*f)(xmin); + if (cx != xmax) fc = (*f)(xmax); + optx = brent(xmin, xguess, xmax, f, tol, fx, f2x, fa, fb, fc); + } else + optx = brent(ax, bx, cx, f, tol, fx, f2x, fa, fb, fc); + + return optx; /* return optimal x */ +} + +/* two-dimensional minimization with borders and calculations of standard errors */ +/* we optimize along basis vectors - not very optimal but it seems to work well */ +void twodimenmin(double tol, + int active1, double min1, double *x1, double max1, double (*func1)(double), double *err1, + int active2, double min2, double *x2, double max2, double (*func2)(double), double *err2) +{ + int it, nump, change; + double x1old, x2old; + double fx, f2x; + + it = 0; + nump = 0; + + /* count number of parameters */ + if (active1) nump++; + if (active2) nump++; + + do { /* repeat until nothing changes any more */ + it++; + change = FALSE; + + /* optimize first variable */ + if (active1) { + + if ((*x1) <= min1) (*x1) = min1 + 0.2*(max1-min1); + if ((*x1) >= max1) (*x1) = max1 - 0.2*(max1-min1); + x1old = (*x1); + (*x1) = onedimenmin(min1, (*x1), max1, func1, tol, &fx, &f2x); + if ((*x1) < min1) (*x1) = min1; + if ((*x1) > max1) (*x1) = max1; + /* same tolerance as 1D minimization */ + if (fabs((*x1) - x1old) > 3.3*tol) change = TRUE; + + /* standard error */ + f2x = fabs(f2x); + if (1.0/(max1*max1) < f2x) (*err1) = sqrt(1.0/f2x); + else (*err1) = max1; + + } + + /* optimize second variable */ + if (active2) { + + if ((*x2) <= min2) (*x2) = min2 + 0.2*(max2-min2); + if ((*x2) >= max2) (*x2) = max2 - 0.2*(max2-min2); + x2old = (*x2); + (*x2) = onedimenmin(min2, (*x2), max2, func2, tol, &fx, &f2x); + if ((*x2) < min2) (*x2) = min2; + if ((*x2) > max2) (*x2) = max2; + /* same tolerance as 1D minimization */ + if (fabs((*x2) - x2old) > 3.3*tol) change = TRUE; + + /* standard error */ + f2x = fabs(f2x); + if (1.0/(max2*max2) < f2x) (*err2) = sqrt(1.0/f2x); + else (*err2) = max2; + + } + + if (nump == 1) return; + + } while (it != MAXITS && change); + + return; +} + diff --git a/forester/archive/RIO/others/puzzle_dqo/src/util.h b/forester/archive/RIO/others/puzzle_dqo/src/util.h new file mode 100644 index 0000000..20f37e5 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_dqo/src/util.h @@ -0,0 +1,96 @@ +/* + * util.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef _UTIL_ +#define _UTIL_ + +#include +#include +#include +#include + + +/* + * general definitions + */ + +#define TRUE 1 +#define FALSE 0 + +#ifdef PARALLEL + extern long int PP_randn; + extern long int PP_rand; +#endif + +/* + * type definitions + */ + +typedef unsigned long int uli; + +typedef double *dvector, **dmatrix, ***dcube; +typedef char *cvector, **cmatrix, ***ccube; +typedef int *ivector, **imatrix, ***icube; +typedef uli *ulivector, **ulimatrix, ***ulicube; + + +/* + * prototypes of functions defined in util.c + */ + +void maerror(char *message); + +dvector new_dvector(int n); +dmatrix new_dmatrix(int nrow, int ncol); +dcube new_dcube(int ntri, int nrow, int ncol); +void free_dvector(dvector v); +void free_dmatrix(dmatrix m); +void free_dcube(dcube c); + +cvector new_cvector(int n); +cmatrix new_cmatrix(int nrow, int ncol); +ccube new_ccube(int ntri, int nrow, int ncol); +void free_cvector(cvector v); +void free_cmatrix(cmatrix m); +void free_ccube(ccube c); + +ivector new_ivector(int n); +imatrix new_imatrix(int nrow, int ncol); +icube new_icube(int ntri, int nrow, int ncol); +void free_ivector(ivector v); +void free_imatrix(imatrix m); +void free_icube(icube c); + +ulivector new_ulivector(int n); +ulimatrix new_ulimatrix(int nrow, int ncol); +ulicube new_ulicube(int ntri, int nrow, int ncol); +void free_ulivector(ulivector v); +void free_ulimatrix(ulimatrix m); +void free_ulicube(ulicube c); + +double randomunitintervall(void); +int initrandom(int seed); +int randominteger(int n); +void chooser(int t, int s, ivector slist); +void *myrealloc(void *, size_t); +cvector mygets(void); + +#define MAXITS 10 /* maximum number of iterations in twoedimenmin */ +double onedimenmin(double, double, double, double (*f )(double ), double, double *, double *); +void twodimenmin(double, int, double, double *, double, double (*func1 )(double ), double *, int, double, double *, double, double (*func2 )(double ), double *); + + + +#endif diff --git a/forester/archive/RIO/others/puzzle_mod/AUTHORS b/forester/archive/RIO/others/puzzle_mod/AUTHORS new file mode 100644 index 0000000..cbef439 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/AUTHORS @@ -0,0 +1,45 @@ +since 1999 by Heiko A. Schmidt, Korbinian Strimmer, + Martin Vingron, Arndt von Haeseler + +1995-1999 by Korbinian Strimmer and Arndt von Haeseler + + + +Heiko A. Schmidt + Theoretical Bioinformatics + Deutsches Krebsforschungszentrum (DKFZ) + Im Neuenheimer Feld 280 + D-69124 Heidelberg + Germany + + email: h.schmidt@dkfz-heidelberg.de, + http://www.dkfz-heidelberg.de/tbi/ + +Korbinian Strimmer + Department of Zoology + University of Oxford + South Parks Road + Oxford OX1 3PS, UK + + email: korbinian.strimmer@zoo.ox.ac.uk + http://www.zoo.ox.ac.uk/ + +Martin Vingron + Theoretical Bioinformatics + Deutsches Krebsforschungszentrum (DKFZ) + Im Neuenheimer Feld 280 + D-69124 Heidelberg + Germany + + email: vingron@dkfz-heidelberg.de + http://www.dkfz-heidelberg.de/tbi/ + +Arndt von Haeseler + Max-Planck-Institute for Evolutionary Anthropology + Inselstr. 22 + D-04103 Leipzig + Germany + + email: haeseler@eva.mpg.de, + http://www.eva.mpg.de/ + diff --git a/forester/archive/RIO/others/puzzle_mod/COPYING b/forester/archive/RIO/others/puzzle_mod/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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 2 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, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/forester/archive/RIO/others/puzzle_mod/ChangeLog b/forester/archive/RIO/others/puzzle_mod/ChangeLog new file mode 100644 index 0000000..824b296 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/ChangeLog @@ -0,0 +1,347 @@ + +Version date what has been changed + +5.0 26.08.2000 - changes to manual, Makefile.in + - cpREV hidden by -DCPREV flag + - chi2test, quartio included into source code files + - generic scr/Makefile.generic + - src/makefile.com for VAX + - AUTHORS, README, ChangeLog updated + - INSTALL checked + 27.08.2000 - test code excluded + - '-randseed#' added for debugging purposes + - ./data added to autoconf/automake + - warning output if cmdline parameter unknown + 11.10.2000 - fixed output of rate categories of sites before + computing them + - check whether rate categories were computed by + 1st user tree or NJ tree fixed in the output + 12.10.2000 - invariant site model normalization fixed + + +CODE FREEZE +=========== + +5.0.a33 15.08.2000 - changes for autoconf/automake + +5.0.a32 01.08.2000 - a FPE error fixed (badq == 0) + - small error in -bestq fixed + - fflush's added at several places + +5.0.a31 01.08.2000 - comments added to tree structure sorting puzzle2.c + - changes in configure.in, Makefile.in + +5.0.a30 23.07.2000 - some debugging in checkquart + - changed to autoconf + +5.0.a29 13.07.2000 - some debugging in checkquart + +5.0.a28 13.07.2000 - use best quartet topology option (-bestq) implemented + +5.0.a27 13.07.2000 - further developement to checkquart + - ascii/binary quartet values (-wqla/-wqlb) + - typo correction + +5.0.a26 11.07.2000 - fflush at all checktimer + - further developement at checkquart + - possibility to write quartet values to file (-wqlh) + +5.0.a25 06.07.2000 - fflush at checktimer + +5.0.a24 02.07.2000 - further debugging of checkquart + +5.0.a23 02.07.2000 - further developement to checkquart + +5.0.a22 29.06.2000 - checkquart added to makefile + - bad quartet stats added after reading in *.allquarts + +5.0.a21 27.06.2000 - site pattern statistics implemented and added to + SEQUENCE ALIGNMENT section in puzzle report + +5.0.a20 26.06.2000 - cpREV45 implemented + +5.0.a19 26.06.2000 - for debugging purposes: typo "MPE" changed to "FPE" + - fflush(stdout) added in chi2test + +5.0.a18 20.06.2000 - checkquart implemented + +5.0.a17 19.06.2000 - FPRINTF(STDOUTFILE and STDOUT definition changed + and moved; fputid/fputid10 writes to STDOUT instead + of stdout + - ppuzzle checks slaves enough slave-processes + - numquarts, num2quart, quart2num moved from ppuzzle.c + to puzzle1.c + - read/writeallquart implemented (undocumented feature) + to be used by -wqf/-rqf at comandline + -wqf = write quartet file (infilename.allquart) after + quartet evaluation + -rqf = read quartet file (infilename.allquart), no + quartet evaluation, unless -wqf is used as + well, then quartets are written and read in + - '-h' option at comandline -> printusage + +5.0.a16 31.05.2000 - chi2test bug fixed + - WAG matrix added, model choice adopted + 13.06.2000 - date set to June 2000 + - author order changed to Schmidt, Strimmer, Vingron, + v.Haeseler + - CPU time output stopped, due to overflow errors + 16.06.2000 - sequence composition chi2test moved before + parameter output. + - output of chi2test and bad quartet statistics split, + to do the chi2test output earlier. + +5.0.a15 02.05.2000 - Names changed back from TREE-PUZZLE to PUZZLE + 09.05.2000 - and to TREE-PUZZLE again ;-) + +5.0.a14 13.03.2000 - Changes to the manual. + - Executable names changed to (p)treepuzzle. + (changes in the makefiles) + 15.03.2000 - Output of parameters after estimation added. + +5.0.a13 18.02.2000 - ALPHA version number removed from the code + +5.0.a12 18.02.2000 - CPU time measurement problems fixed for case where + clock_t is an unsigned type. + +5.0.a11 17.02.2000 - time measure problems (CPU/wallclock) fixed + not all features in addtimes are used at the moment. + - unnecessary and unused routines removed fron source + code. + +5.0.a10 20.01.2000 - Name changes from PUZZLE to TREE-PUZZLE + - Chi2-fit model guessing for VT model added + - little model printing bug fixed + +5.0.a9 22.12.1999 - VT Model incorporated (Mueller, Vingron (2000) + JCB, to appear). + - TODO: Chi2-fit model guessing for VT model + +5.0.a8 21.12.1999 - 'sys/times.h' and 'sys/types.h' removed from + puzzle.h. They were neither ANSI conform nor + necessary, but occured in the SUN man pages. + - Definition and call of writetimesstat eliminated + from the sequention version by compiler switched, + and not just the function body as before. + - '-O4' canged to '-O' to be more generic. + +5.0.a7 21.12.1999 - Macro constants introduced for data_optn + (NUCLEOTIDE, AMINOACID, BINARY) + - round robbing of datatype and AA model option changed + in menu to make adjustment of the model possible by a + determined sequence of letters: + 'd': Auto -> Nucleotides + -> Amino acids + -> Binary states + -> Auto + ('m' && data_optn == AMINOACID): + Auto -> Dayhoff + -> JTT + -> mtREV24 + -> BLOSUM62 + -> Auto + - manual.html adjusted + +5.0.a6 20.12.1999 - new manual.html added + +5.0.a5 07.12.1999 - output bug fixed (bestrates were written before they + were computed) + +5.0.a4 02.12.1999 - header file inclusion ajusted: + added: #include + changed from: #include "ppuzzle.h" + to: #ifdef PARALLEL + # include "ppuzzle.h" + #endif + +5.0.a3 27.11.1999 - '-h' comandline option removed, because of problems + with MPICH under LINUX + - new memory leaks of 5.0.a2 closed in PP_Finalize + +5.0.a2 27.11.1999 - Cleanup of the source code + - Measurement of CPU time added + - Parallel load statistics added (quartets, trees, time) + to puzzle report. + - Cleanup debug messages + - Comments "[...]" are removed from usertrees now. + - single quotes will only be printed arount species + names if -DUSEQUOTES is set at compiletime. + - tree likelihood is printed infront of a tree as a + comment, [ lh=-xx.xxxxx ](...); + +5.0.a1 26.11.1999 - Cleanup of the directories + - Copyright changes + - Version changes + + +VERSION CHANGE +============== + +4.1.a26 25.11.1999 - Makefile made universal for pauzzle and ppuzzle + - lines not needed removed from puzzle.h + +4.1.a25 19.11.1999 - Output file prefixes for distances, trees, and + puzzlereport changed in user trees analysis case + to user tree file name + - Temporary output of likelihood to treefile added + +4.1.a24 11.11.1999 - Output of puzzling step trees changed + ptorder: [ orderno # % ID #UniqTopos #Steps ]PHYLIP + pstep: chunk #InChunk sum ID #UniqTopos #Steps + - preliminary leap frog RNG implemented, i.e. uses + the rand4 in the usual way in the sequential case. + If run in parallel all rand4 are initialized with + the same seed and started with PP_Myid-th random + number. after that each process uses the every + PP_NumProcs-th random number to make sure that these + unique. + +4.1.a23 08.11.1999 - output of sequential and parallel version to *.pstep + made identical + +4.1.a22 05.11.1999 - two different puzzle step tree outputs intruduced + and added to the menu ("[ 1. 35 ](...);": + - ordered unique tree list -> *.ptorder + Format: "[ 1. 35 ]" (Ordernumber, Amount) + - chronological tree list -> *.pstep + Format: "[ 1. 35 ]" (Chunknumber, Amount in chunk) + (the last is a problem in parallel, because the come + in chunks, as scheduled) + - debugged the output +4.1.a21 04.11.1999 - Makefile adjustments for other Plattforms + - pstep tree output changed. unique treestructures + printed to *.pstep file with a leading comment + containing an order number and the ammount padded + with blanks (e.g. "[ 1. 356 ]('mouse'..."). + output is done right before writing the puzzle file. + - controlled MPI finish to the Quit menu option added + +4.1.a20 03.11.1999 - some garbage collection (free) added + - makefile adjusted, OFLAGS for optimization added + (ppuzzle/MPICH has problems with -O, so the + ppuzzle is created without optimization) + Some minor changes in the makefiles + - still to do: garbage collection from 'internalnode' + in master process + +4.1.a19 13.10.1999 - adding the output of standardized (i.e. sorted) + puzzling step trees. Those are printed to the + standard output at the moment. (Routines to sort + and print the trees implemented) + 14.10.1999 - routines for printing the sorted trees to a string. + needed to send them between Master and Worker, and + to have a unique key to sort and count the trees. + 21.10.1999 - counting of sorted trees implemented by doubly linked + list, sort routine, print to stdout + 25.10.1999 - change place of writing distances to file right after + distances have been computed. + - output of puzzling step trees now with true name, + not numbers + 02.11.1999 - parallel counting and sending of puzzling step trees + - some parallel sending bugs fixed + +4.1.a18 14.09.1999 - adding possibility to specify input file at + command line, this specifies also the output + filenames (puzzle output: *.puzzle; treefile: + *.tree; distances: *.dist; Triangel EPS: *.eps; + unresolved: *.qlist; puzzling step trees: *.pstep) + If an unexisting name is given, one has to reenter + the right name, but the wrong one is used as prefix. + 15.09.1999 - sending back of bad quartets from slaves added + - bug in quart2num fixed (not used before; was shifted + by 1) + - first version of a README added ;-) + +4.1.a17 03.08.1999 - Recv-Error in receiving DoPuzzleBlock fixed + - double freeing of same MPI_Datatype fixed + - changing of scheduling algorithm to smaller chunks + in gss -> sgss + 13.09.1999 - bug fixed in optimization routine in ml2.c: + boundary check added + +4.1.a16 12.07.1999 - slight changes in verbosity levels + - changed all printf to FPRINTF(STDOUTFILE to + change easily from stdout to a file. + +4.1.a15 08.07.1999 - scheduler for both parallel parts + - several small changes + +4.1.a14 25.06.1999 - computation of tree parallel, scheduler dependent, + sending all biparts in one message instead of one + by one + - several small changes since a13 in sched.c, et al. + +4.1.a13 10.06.1999 - computation of tree parallel (chunk = #trees/#slaves) + - scheduling schemes implemented for minimum chunk sizes + +4.1.a12 07.06.1999 - computation of quartets properly parallel + - scheduling implemented + - counting of quartets by slave ajusted + - TODO: sending of bad quartets (array + list) + - distinction between '1st user tree' and 'NJ tree' + in result output removed again + +4.1.a11 28.05.1999 - PP_SendDoQuartBlock, PP_RecvDoQuartBlock, + PP_SendQuartBlock, PP_RecvQuartBlock + - mallocquartets() changed from global to local + variables to be more flexible + - Quartet computation moved to slave (badquartet + handling missing: output, badquartet vector); + - distinction between '1st user tree' and 'NJ tree' + added in result output (puzzle1.c around l.1756) + +4.1.a10 20.05.1999 - num2quart, numquarts, quart2num introduced + - parallel init/finalize, quartets computed on + master and slave, compared -> equal -> all necessary + parameter exported + +4.1.a9 19.05.1999 - 'dvector forg' removed from onepamratematrix + cmdline, because it's not used in the function. + +4.1.a8 18.05.1999 - add _GAMMA_ (not necessary) to gamma.h and _PUZZLE_ + to puzzle.h to avoid dublicate includes, possible + due to ppuzzle.h + - ppuzzle added to makefile and to check + - 1st parallel version but no slave computations + only sending parameters and done signals. + +4.1.a7 18.05.1999 - export reevaluation of tree and evaluation of + usertrees to evaluatetree. + +4.1.a6 17.05.1999 - -DNEWFORLOOP added to fixed.src, because the changed + for loop structure changes the sequence of randomized + quartets during likelihood mapping + - change 'int main()' to 'int main(argc, argv)' + - export more functionalities from main: + memcleanup(), inputandinit(&argc, &argv) + - grouping if's (excluding eachother) together in + switch() + - split treereavaluation and 1st usertree, + evaluate all usertrees together (TODO: both, + treereavaluation and usertrees in one loop) + - MAKE CHECK added to ./makefile + +4.1.a5 16.05.1999 - adding ´dvector Brnlength´ to lslength cmdline to + reduce globality of Brnlength. (Later better to *Tree) + +4.1.a4 11.05.1999 - structure of for loops changed in computeallquartets + and recon_tree, so that the quarted addresses are in + one contigous sequence (for a /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: +uninstall: uninstall-recursive +all-am: Makefile +all-redirect: all-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-tags distclean-generic clean-am + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_mod/Makefile.am b/forester/archive/RIO/others/puzzle_mod/Makefile.am new file mode 100644 index 0000000..2a0bac6 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/Makefile.am @@ -0,0 +1,2 @@ +EXTRA_DIST = +SUBDIRS = src doc data diff --git a/forester/archive/RIO/others/puzzle_mod/Makefile.in b/forester/archive/RIO/others/puzzle_mod/Makefile.in new file mode 100644 index 0000000..06043c6 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/Makefile.in @@ -0,0 +1,327 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = . + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICC0 = @MPICC0@ +MPICC1 = @MPICC1@ +MPICC2 = @MPICC2@ +MPICC3 = @MPICC3@ +MPICC4 = @MPICC4@ +MPICC5 = @MPICC5@ +MPICFLAGS = @MPICFLAGS@ +MPIDEFS = @MPIDEFS@ +MPILIBS = @MPILIBS@ +PACKAGE = @PACKAGE@ +PPUZZLE = @PPUZZLE@ +VERSION = @VERSION@ + +EXTRA_DIST = +SUBDIRS = src doc data +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ +Makefile.in NEWS aclocal.m4 configure configure.in install-sh missing \ +mkinstalldirs + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status + +$(ACLOCAL_M4): configure.in + cd $(srcdir) && $(ACLOCAL) + +config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. + +@SET_MAKE@ + +all-recursive install-data-recursive install-exec-recursive \ +installdirs-recursive install-recursive uninstall-recursive \ +check-recursive installcheck-recursive info-recursive dvi-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $(MAKEFLAGS); amf=$$2; \ + dot_seen=no; \ + rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ + rev="$$subdir $$rev"; \ + test "$$subdir" = "." && dot_seen=yes; \ + done; \ + test "$$dot_seen" = "no" && rev=". $$rev"; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + -rm -rf $(distdir) + GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz + mkdir $(distdir)/=build + mkdir $(distdir)/=inst + dc_install_base=`cd $(distdir)/=inst && pwd`; \ + cd $(distdir)/=build \ + && ../configure --srcdir=.. --prefix=$$dc_install_base \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) dist + -rm -rf $(distdir) + @banner="$(distdir).tar.gz is ready for distribution"; \ + dashes=`echo "$$banner" | sed s/./=/g`; \ + echo "$$dashes"; \ + echo "$$banner"; \ + echo "$$dashes" +dist: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +dist-all: distdir + -chmod -R a+r $(distdir) + GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) + -rm -rf $(distdir) +distdir: $(DISTFILES) + -rm -rf $(distdir) + mkdir $(distdir) + -chmod 777 $(distdir) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done + for subdir in $(SUBDIRS); do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + chmod 777 $(distdir)/$$subdir; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(distdir) distdir=../$(distdir)/$$subdir distdir) \ + || exit 1; \ + fi; \ + done +info-am: +info: info-recursive +dvi-am: +dvi: dvi-recursive +check-am: all-am +check: check-recursive +installcheck-am: +installcheck: installcheck-recursive +install-exec-am: +install-exec: install-exec-recursive + +install-data-am: +install-data: install-data-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-recursive +uninstall-am: +uninstall: uninstall-recursive +all-am: Makefile +all-redirect: all-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: installdirs-recursive +installdirs-am: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-recursive + +clean-am: clean-tags clean-generic mostlyclean-am + +clean: clean-recursive + +distclean-am: distclean-tags distclean-generic clean-am + +distclean: distclean-recursive + -rm -f config.status + +maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ + distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-recursive + -rm -f config.status + +.PHONY: install-data-recursive uninstall-data-recursive \ +install-exec-recursive uninstall-exec-recursive installdirs-recursive \ +uninstalldirs-recursive all-recursive check-recursive \ +installcheck-recursive info-recursive dvi-recursive \ +mostlyclean-recursive distclean-recursive clean-recursive \ +maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ +distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ +dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ +install-exec install-data-am install-data install-am install \ +uninstall-am uninstall all-redirect all-am all installdirs-am \ +installdirs mostlyclean-generic distclean-generic clean-generic \ +maintainer-clean-generic clean mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_mod/aclocal.m4 b/forester/archive/RIO/others/puzzle_mod/aclocal.m4 new file mode 100644 index 0000000..9f8add8 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/aclocal.m4 @@ -0,0 +1,104 @@ +dnl aclocal.m4 generated automatically by aclocal 1.4 + +dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without +dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A +dnl PARTICULAR PURPOSE. + +# Do all the work for Automake. This macro actually does too much -- +# some checks are only needed if your package does certain things. +# But this isn't really a big deal. + +# serial 1 + +dnl Usage: +dnl AM_INIT_AUTOMAKE(package,version, [no-define]) + +AC_DEFUN(AM_INIT_AUTOMAKE, +[AC_REQUIRE([AC_PROG_INSTALL]) +PACKAGE=[$1] +AC_SUBST(PACKAGE) +VERSION=[$2] +AC_SUBST(VERSION) +dnl test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +fi +ifelse([$3],, +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])) +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) +dnl FIXME This is truly gross. +missing_dir=`cd $ac_aux_dir && pwd` +AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) +AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) +AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) +AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) +AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) +AC_REQUIRE([AC_PROG_MAKE_SET])]) + +# +# Check to make sure that the build environment is sane. +# + +AC_DEFUN(AM_SANITY_CHECK, +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "[$]*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "[$]2" = conftestfile + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +rm -f conftest* +AC_MSG_RESULT(yes)]) + +dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) +dnl The program must properly implement --version. +AC_DEFUN(AM_MISSING_PROG, +[AC_MSG_CHECKING(for working $2) +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if ($2 --version) < /dev/null > /dev/null 2>&1; then + $1=$2 + AC_MSG_RESULT(found) +else + $1="$3/missing $2" + AC_MSG_RESULT(missing) +fi +AC_SUBST($1)]) + diff --git a/forester/archive/RIO/others/puzzle_mod/config.status b/forester/archive/RIO/others/puzzle_mod/config.status new file mode 100755 index 0000000..da58b56 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/config.status @@ -0,0 +1,179 @@ +#! /bin/sh +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# This directory was configured as follows, +# on host forester.wustl.edu: +# +# ./configure +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]" +for ac_option +do + case "$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion" + exec ${CONFIG_SHELL-/bin/sh} ./configure --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "./config.status generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "$ac_cs_usage"; exit 0 ;; + *) echo "$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=. +ac_given_INSTALL="/usr/bin/install -c" + +trap 'rm -fr Makefile src/Makefile src/test doc/Makefile data/Makefile conftest*; exit 1' 1 2 15 + +# Protect against being on the right side of a sed subst in config.status. +sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g; + s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF +/^[ ]*VPATH[ ]*=[^:]*$/d + +s%@SHELL@%/bin/sh%g +s%@CFLAGS@%-g -O2%g +s%@CPPFLAGS@%%g +s%@CXXFLAGS@%%g +s%@FFLAGS@%%g +s%@DEFS@% -DPACKAGE=\"tree-puzzle\" -DVERSION=\"5.0\" -DHAVE_LIBM=1 -DSTDC_HEADERS=1 -DHAVE_LIMITS_H=1 %g +s%@LDFLAGS@%%g +s%@LIBS@%-lm %g +s%@exec_prefix@%${prefix}%g +s%@prefix@%/usr/local%g +s%@program_transform_name@%s,x,x,%g +s%@bindir@%${exec_prefix}/bin%g +s%@sbindir@%${exec_prefix}/sbin%g +s%@libexecdir@%${exec_prefix}/libexec%g +s%@datadir@%${prefix}/share%g +s%@sysconfdir@%${prefix}/etc%g +s%@sharedstatedir@%${prefix}/com%g +s%@localstatedir@%${prefix}/var%g +s%@libdir@%${exec_prefix}/lib%g +s%@includedir@%${prefix}/include%g +s%@oldincludedir@%/usr/include%g +s%@infodir@%${prefix}/info%g +s%@mandir@%${prefix}/man%g +s%@INSTALL_PROGRAM@%${INSTALL}%g +s%@INSTALL_SCRIPT@%${INSTALL_PROGRAM}%g +s%@INSTALL_DATA@%${INSTALL} -m 644%g +s%@PACKAGE@%tree-puzzle%g +s%@VERSION@%5.0%g +s%@ACLOCAL@%aclocal%g +s%@AUTOCONF@%autoconf%g +s%@AUTOMAKE@%automake%g +s%@AUTOHEADER@%autoheader%g +s%@MAKEINFO@%makeinfo%g +s%@SET_MAKE@%%g +s%@CC@%gcc%g +s%@MPICC0@%%g +s%@MPICC1@%%g +s%@MPICC2@%%g +s%@MPICC3@%%g +s%@MPICC4@%%g +s%@MPICC5@%%g +s%@MPICC@%%g +s%@MPILIBS@%%g +s%@MPIDEFS@%%g +s%@MPICFLAGS@%%g +s%@PPUZZLE@%%g +s%@CPP@%gcc -E%g + +CEOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi + +CONFIG_FILES=${CONFIG_FILES-"Makefile src/Makefile src/test doc/Makefile data/Makefile"} +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + + + +exit 0 diff --git a/forester/archive/RIO/others/puzzle_mod/configure b/forester/archive/RIO/others/puzzle_mod/configure new file mode 100755 index 0000000..5d4db41 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/configure @@ -0,0 +1,2265 @@ +#! /bin/sh + +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf version 2.13 +# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Defaults: +ac_help= +ac_default_prefix=/usr/local +# Any additions from configure.in: + +# Initialize some variables set by options. +# The variables have the same names as the options, with +# dashes changed to underlines. +build=NONE +cache_file=./config.cache +exec_prefix=NONE +host=NONE +no_create= +nonopt=NONE +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +target=NONE +verbose= +x_includes=NONE +x_libraries=NONE +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +# Initialize some other variables. +subdirs= +MFLAGS= MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} +# Maximum number of lines to put in a shell here document. +ac_max_here_lines=12 + +ac_prev= +for ac_option +do + + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + case "$ac_option" in + -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) ac_optarg= ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir="$ac_optarg" ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build="$ac_optarg" ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file="$ac_optarg" ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir="$ac_optarg" ;; + + -disable-* | --disable-*) + ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + eval "enable_${ac_feature}=no" ;; + + -enable-* | --enable-*) + ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } + fi + ac_feature=`echo $ac_feature| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "enable_${ac_feature}='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix="$ac_optarg" ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he) + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat << EOF +Usage: configure [options] [host] +Options: [defaults in brackets after descriptions] +Configuration: + --cache-file=FILE cache test results in FILE + --help print this message + --no-create do not create output files + --quiet, --silent do not print \`checking...' messages + --version print the version of autoconf that created configure +Directory and file names: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [same as prefix] + --bindir=DIR user executables in DIR [EPREFIX/bin] + --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] + --libexecdir=DIR program executables in DIR [EPREFIX/libexec] + --datadir=DIR read-only architecture-independent data in DIR + [PREFIX/share] + --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data in DIR + [PREFIX/com] + --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] + --libdir=DIR object code libraries in DIR [EPREFIX/lib] + --includedir=DIR C header files in DIR [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] + --infodir=DIR info documentation in DIR [PREFIX/info] + --mandir=DIR man documentation in DIR [PREFIX/man] + --srcdir=DIR find the sources in DIR [configure dir or ..] + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM + run sed PROGRAM on installed program names +EOF + cat << EOF +Host type: + --build=BUILD configure for building on BUILD [BUILD=HOST] + --host=HOST configure for HOST [guessed] + --target=TARGET configure for TARGET [TARGET=HOST] +Features and packages: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +EOF + if test -n "$ac_help"; then + echo "--enable and --with options recognized:$ac_help" + fi + exit 0 ;; + + -host | --host | --hos | --ho) + ac_prev=host ;; + -host=* | --host=* | --hos=* | --ho=*) + host="$ac_optarg" ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir="$ac_optarg" ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir="$ac_optarg" ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir="$ac_optarg" ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir="$ac_optarg" ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir="$ac_optarg" ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir="$ac_optarg" ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir="$ac_optarg" ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix="$ac_optarg" ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix="$ac_optarg" ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix="$ac_optarg" ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name="$ac_optarg" ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir="$ac_optarg" ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir="$ac_optarg" ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site="$ac_optarg" ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir="$ac_optarg" ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir="$ac_optarg" ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target="$ac_optarg" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers) + echo "configure generated by autoconf version 2.13" + exit 0 ;; + + -with-* | --with-*) + ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + case "$ac_option" in + *=*) ;; + *) ac_optarg=yes ;; + esac + eval "with_${ac_package}='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`echo $ac_option|sed -e 's/-*without-//'` + # Reject names that are not valid shell variable names. + if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then + { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } + fi + ac_package=`echo $ac_package| sed 's/-/_/g'` + eval "with_${ac_package}=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes="$ac_optarg" ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries="$ac_optarg" ;; + + -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } + ;; + + *) + if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then + echo "configure: warning: $ac_option: invalid host type" 1>&2 + fi + if test "x$nonopt" != xNONE; then + { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } + fi + nonopt="$ac_option" + ;; + + esac +done + +if test -n "$ac_prev"; then + { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } +fi + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +# File descriptor usage: +# 0 standard input +# 1 file creation +# 2 errors and warnings +# 3 some systems may open it to /dev/tty +# 4 used on the Kubota Titan +# 6 checking for... messages and results +# 5 compiler messages saved in config.log +if test "$silent" = yes; then + exec 6>/dev/null +else + exec 6>&1 +fi +exec 5>./config.log + +echo "\ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. +" 1>&5 + +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell metacharacters. +ac_configure_args= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) + ac_configure_args="$ac_configure_args '$ac_arg'" ;; + *) ac_configure_args="$ac_configure_args $ac_arg" ;; + esac +done + +# NLS nuisances. +# Only set these to C if already set. These must not be set unconditionally +# because not all systems understand e.g. LANG=C (notably SCO). +# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! +# Non-C LC_CTYPE values break the ctype check. +if test "${LANG+set}" = set; then LANG=C; export LANG; fi +if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi +if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi +if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +ac_unique_file=src/ml.h + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r $srcdir/$ac_unique_file; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r $srcdir/$ac_unique_file; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } + else + { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } + fi +fi +srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` + +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + echo "loading site script $ac_site_file" + . "$ac_site_file" + fi +done + + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +ac_exeext= +ac_objext=o +if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then + # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. + if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then + ac_n= ac_c=' +' ac_t=' ' + else + ac_n=-n ac_c= ac_t= + fi +else + ac_n= ac_c='\c' ac_t= +fi + + + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f $ac_dir/install.sh; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } +fi +ac_config_guess=$ac_aux_dir/config.guess +ac_config_sub=$ac_aux_dir/config.sub +ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:550: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 +echo "configure:603: checking whether build environment is sane" >&5 +# Just in case +sleep 1 +echo timestamp > conftestfile +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftestfile` + fi + if test "$*" != "X $srcdir/configure conftestfile" \ + && test "$*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { echo "configure: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" 1>&2; exit 1; } + fi + + test "$2" = conftestfile + ) +then + # Ok. + : +else + { echo "configure: error: newly created file is older than distributed files! +Check your system clock" 1>&2; exit 1; } +fi +rm -f conftest* +echo "$ac_t""yes" 1>&6 +if test "$program_transform_name" = s,x,x,; then + program_transform_name= +else + # Double any \ or $. echo might interpret backslashes. + cat <<\EOF_SED > conftestsed +s,\\,\\\\,g; s,\$,$$,g +EOF_SED + program_transform_name="`echo $program_transform_name|sed -f conftestsed`" + rm -f conftestsed +fi +test "$program_prefix" != NONE && + program_transform_name="s,^,${program_prefix},; $program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" + +# sed with no file args requires a program. +test "$program_transform_name" = "" && program_transform_name="s,x,x," + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:660: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +PACKAGE=tree-puzzle + +VERSION=5.0 + +if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then + { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } +fi +cat >> confdefs.h <> confdefs.h <&6 +echo "configure:706: checking for working aclocal" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (aclocal --version) < /dev/null > /dev/null 2>&1; then + ACLOCAL=aclocal + echo "$ac_t""found" 1>&6 +else + ACLOCAL="$missing_dir/missing aclocal" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 +echo "configure:719: checking for working autoconf" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoconf --version) < /dev/null > /dev/null 2>&1; then + AUTOCONF=autoconf + echo "$ac_t""found" 1>&6 +else + AUTOCONF="$missing_dir/missing autoconf" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working automake""... $ac_c" 1>&6 +echo "configure:732: checking for working automake" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (automake --version) < /dev/null > /dev/null 2>&1; then + AUTOMAKE=automake + echo "$ac_t""found" 1>&6 +else + AUTOMAKE="$missing_dir/missing automake" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 +echo "configure:745: checking for working autoheader" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (autoheader --version) < /dev/null > /dev/null 2>&1; then + AUTOHEADER=autoheader + echo "$ac_t""found" 1>&6 +else + AUTOHEADER="$missing_dir/missing autoheader" + echo "$ac_t""missing" 1>&6 +fi + +echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 +echo "configure:758: checking for working makeinfo" >&5 +# Run test in a subshell; some versions of sh will print an error if +# an executable is not found, even if stderr is redirected. +# Redirect stdin to placate older versions of autoconf. Sigh. +if (makeinfo --version) < /dev/null > /dev/null 2>&1; then + MAKEINFO=makeinfo + echo "$ac_t""found" 1>&6 +else + MAKEINFO="$missing_dir/missing makeinfo" + echo "$ac_t""missing" 1>&6 +fi + + + +# Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:775: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="gcc" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:805: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_prog_rejected=no + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + break + fi + done + IFS="$ac_save_ifs" +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# -gt 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" "$@" + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + if test -z "$CC"; then + case "`uname -s`" in + *win32* | *WIN32*) + # Extract the first word of "cl", so it can be a program name with args. +set dummy cl; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:856: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_prog_CC="cl" + break + fi + done + IFS="$ac_save_ifs" +fi +fi +CC="$ac_cv_prog_CC" +if test -n "$CC"; then + echo "$ac_t""$CC" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + ;; + esac + fi + test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } +fi + +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 +echo "configure:888: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 + +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +cat > conftest.$ac_ext << EOF + +#line 899 "configure" +#include "confdefs.h" + +main(){return(0);} +EOF +if { (eval echo configure:904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + ac_cv_prog_cc_works=yes + # If we can't run a trivial program, we are probably using a cross compiler. + if (./conftest; exit) 2>/dev/null; then + ac_cv_prog_cc_cross=no + else + ac_cv_prog_cc_cross=yes + fi +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_prog_cc_works=no +fi +rm -fr conftest* +ac_ext=c +# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. +ac_cpp='$CPP $CPPFLAGS' +ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' +ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' +cross_compiling=$ac_cv_prog_cc_cross + +echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 +if test $ac_cv_prog_cc_works = no; then + { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } +fi +echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 +echo "configure:930: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 +echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 +cross_compiling=$ac_cv_prog_cc_cross + +echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 +echo "configure:935: checking whether we are using GNU C" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then + ac_cv_prog_gcc=yes +else + ac_cv_prog_gcc=no +fi +fi + +echo "$ac_t""$ac_cv_prog_gcc" 1>&6 + +if test $ac_cv_prog_gcc = yes; then + GCC=yes +else + GCC= +fi + +ac_test_CFLAGS="${CFLAGS+set}" +ac_save_CFLAGS="$CFLAGS" +CFLAGS= +echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 +echo "configure:963: checking whether ${CC-cc} accepts -g" >&5 +if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'void f(){}' > conftest.c +if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then + ac_cv_prog_cc_g=yes +else + ac_cv_prog_cc_g=no +fi +rm -f conftest* + +fi + +echo "$ac_t""$ac_cv_prog_cc_g" 1>&6 +if test "$ac_test_CFLAGS" = set; then + CFLAGS="$ac_save_CFLAGS" +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi + +if test "x$CC" != xcc; then + echo $ac_n "checking whether $CC and cc understand -c and -o together""... $ac_c" 1>&6 +echo "configure:996: checking whether $CC and cc understand -c and -o together" >&5 +else + echo $ac_n "checking whether cc understands -c and -o together""... $ac_c" 1>&6 +echo "configure:999: checking whether cc understands -c and -o together" >&5 +fi +set dummy $CC; ac_cc="`echo $2 | + sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" +if eval "test \"`echo '$''{'ac_cv_prog_cc_${ac_cc}_c_o'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + echo 'foo(){}' > conftest.c +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&5' +if { (eval echo configure:1011: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && + test -f conftest.o && { (eval echo configure:1012: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.c 1>&5'; { (eval echo configure:1017: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then + ac_try='cc -c conftest.c -o conftest.o 1>&5' + if { (eval echo configure:1019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } && + test -f conftest.o && { (eval echo configure:1020: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi +else + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then + echo "$ac_t""yes" 1>&6 +else + echo "$ac_t""no" 1>&6 + cat >> confdefs.h <<\EOF +#define NO_MINUS_C_MINUS_O 1 +EOF + +fi + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# ./install, which can be erroneously created by make from ./install.sh. +echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 +echo "configure:1058: checking for a BSD compatible install" >&5 +if test -z "$INSTALL"; then +if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" + for ac_dir in $PATH; do + # Account for people who put trailing slashes in PATH elements. + case "$ac_dir/" in + /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if test -f $ac_dir/$ac_prog; then + if test $ac_prog = install && + grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + IFS="$ac_save_IFS" + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL="$ac_cv_path_install" + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL="$ac_install_sh" + fi +fi +echo "$ac_t""$INSTALL" 1>&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 +echo "configure:1111: checking whether ${MAKE-make} sets \${MAKE}" >&5 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftestmake <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftestmake +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$ac_t""yes" 1>&6 + SET_MAKE= +else + echo "$ac_t""no" 1>&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + + + + +if test "$MPICC" != "" ; then + # Extract the first word of "$MPICC", so it can be a program name with args. +set dummy $MPICC; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1145: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC0'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC0" in + /*) + ac_cv_path_MPICC0="$MPICC0" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC0="$MPICC0" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC0="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC0="$ac_cv_path_MPICC0" +if test -n "$MPICC0"; then + echo "$ac_t""$MPICC0" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +fi +# Extract the first word of "mpcc", so it can be a program name with args. +set dummy mpcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1181: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC1'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC1" in + /*) + ac_cv_path_MPICC1="$MPICC1" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC1="$MPICC1" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC1="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC1="$ac_cv_path_MPICC1" +if test -n "$MPICC1"; then + echo "$ac_t""$MPICC1" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "hcc", so it can be a program name with args. +set dummy hcc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1216: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC2'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC2" in + /*) + ac_cv_path_MPICC2="$MPICC2" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC2="$MPICC2" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC2="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC2="$ac_cv_path_MPICC2" +if test -n "$MPICC2"; then + echo "$ac_t""$MPICC2" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "mpicc", so it can be a program name with args. +set dummy mpicc; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1251: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC3'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC3" in + /*) + ac_cv_path_MPICC3="$MPICC3" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC3="$MPICC3" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC3="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC3="$ac_cv_path_MPICC3" +if test -n "$MPICC3"; then + echo "$ac_t""$MPICC3" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "mpicc_lam", so it can be a program name with args. +set dummy mpicc_lam; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1286: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC4'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC4" in + /*) + ac_cv_path_MPICC4="$MPICC4" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC4="$MPICC4" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC4="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC4="$ac_cv_path_MPICC4" +if test -n "$MPICC4"; then + echo "$ac_t""$MPICC4" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + +# Extract the first word of "mpicc_mpich", so it can be a program name with args. +set dummy mpicc_mpich; ac_word=$2 +echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 +echo "configure:1321: checking for $ac_word" >&5 +if eval "test \"`echo '$''{'ac_cv_path_MPICC5'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + case "$MPICC5" in + /*) + ac_cv_path_MPICC5="$MPICC5" # Let the user override the test with a path. + ;; + ?:/*) + ac_cv_path_MPICC5="$MPICC5" # Let the user override the test with a dos path. + ;; + *) + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="$PATH" + for ac_dir in $ac_dummy; do + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$ac_word; then + ac_cv_path_MPICC5="$ac_dir/$ac_word" + break + fi + done + IFS="$ac_save_ifs" + ;; +esac +fi +MPICC5="$ac_cv_path_MPICC5" +if test -n "$MPICC5"; then + echo "$ac_t""$MPICC5" 1>&6 +else + echo "$ac_t""no" 1>&6 +fi + + + if test "$MPICC0" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC0 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1371: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1382: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC1" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC1 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1419: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1430: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC2" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC2 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1467: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1478: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC3" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC3 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1515: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1526: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC4" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC4 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1563: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1574: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + if test "$MPICC5" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$MPICC5 + + if test "$MPICC" != "" ; then + echo $ac_n "checking whether $MPICC works as MPI compiler""... $ac_c" 1>&6 +echo "configure:1611: checking whether $MPICC works as MPI compiler" >&5 + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + echo $ac_n "checking whether $MPICC needs -lmpi""... $ac_c" 1>&6 +echo "configure:1622: checking whether $MPICC needs -lmpi" >&5 + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + echo "$ac_t""yes" 1>&6 + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + echo "$ac_t""no" 1>&6 + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi + +ac_cv_prog_MPICC=$MPICC + + + + + + + +echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 +echo "configure:1652: checking for main in -lm" >&5 +ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` +if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + ac_save_LIBS="$LIBS" +LIBS="-lm $LIBS" +cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=yes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_lib_$ac_lib_var=no" +fi +rm -f conftest* +LIBS="$ac_save_LIBS" + +fi +if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_lib=HAVE_LIB`echo m | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + cat >> confdefs.h <&6 +fi + + +echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 +echo "configure:1696: checking how to run the C preprocessor" >&5 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then +if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and "${CC-cc}" will confuse make. + CPP="${CC-cc} -E" + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -E -traditional-cpp" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP="${CC-cc} -nologo -E" + cat > conftest.$ac_ext < +Syntax Error +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + : +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +rm -f conftest* +fi +rm -f conftest* + ac_cv_prog_CPP="$CPP" +fi + CPP="$ac_cv_prog_CPP" +else + ac_cv_prog_CPP="$CPP" +fi +echo "$ac_t""$CPP" 1>&6 + +echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 +echo "configure:1776: checking for ANSI C header files" >&5 +if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#include +#include +#include +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1789: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + ac_cv_header_stdc=yes +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "memchr" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +cat > conftest.$ac_ext < +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "free" >/dev/null 2>&1; then + : +else + rm -rf conftest* + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +if test "$cross_compiling" = yes; then + : +else + cat > conftest.$ac_ext < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +if { (eval echo configure:1856: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +then + : +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -fr conftest* + ac_cv_header_stdc=no +fi +rm -fr conftest* +fi + +fi +fi + +echo "$ac_t""$ac_cv_header_stdc" 1>&6 +if test $ac_cv_header_stdc = yes; then + cat >> confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +for ac_hdr in limits.h +do +ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` +echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 +echo "configure:1883: checking for $ac_hdr" >&5 +if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +EOF +ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" +{ (eval echo configure:1893: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` +if test -z "$ac_err"; then + rm -rf conftest* + eval "ac_cv_header_$ac_safe=yes" +else + echo "$ac_err" >&5 + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_header_$ac_safe=no" +fi +rm -f conftest* +fi +if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then + echo "$ac_t""yes" 1>&6 + ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` + cat >> confdefs.h <&6 +fi +done + + + + +echo $ac_n "checking for working const""... $ac_c" 1>&6 +echo "configure:1923: checking for working const" >&5 +if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext <j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +} + +; return 0; } +EOF +if { (eval echo configure:1977: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then + rm -rf conftest* + ac_cv_c_const=yes +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + ac_cv_c_const=no +fi +rm -f conftest* +fi + +echo "$ac_t""$ac_cv_c_const" 1>&6 +if test $ac_cv_c_const = no; then + cat >> confdefs.h <<\EOF +#define const +EOF + +fi + +echo $ac_n "checking for size_t""... $ac_c" 1>&6 +echo "configure:1998: checking for size_t" >&5 +if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_size_t=yes +else + rm -rf conftest* + ac_cv_type_size_t=no +fi +rm -f conftest* + +fi +echo "$ac_t""$ac_cv_type_size_t" 1>&6 +if test $ac_cv_type_size_t = no; then + cat >> confdefs.h <<\EOF +#define size_t unsigned +EOF + +fi + + + +trap '' 1 2 15 + +trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# Any assignment to VPATH causes Sun make to only execute +# the first set of double-colon rules, so remove it if not needed. +# If there is a colon in the path, we need to keep it. +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' +fi + +trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +cat > conftest.defs <<\EOF +s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g +s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g +s%\[%\\&%g +s%\]%\\&%g +s%\$%$$%g +EOF +DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` +rm -f conftest.defs + + +# Without the "./", some shells look in PATH for config.status. +: ${CONFIG_STATUS=./config.status} + +echo creating $CONFIG_STATUS +rm -f $CONFIG_STATUS +cat > $CONFIG_STATUS </dev/null | sed 1q`: +# +# $0 $ac_configure_args +# +# Compiler output produced by configure, useful for debugging +# configure, is in ./config.log if it exists. + +ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" +for ac_option +do + case "\$ac_option" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" + exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; + -version | --version | --versio | --versi | --vers | --ver | --ve | --v) + echo "$CONFIG_STATUS generated by autoconf version 2.13" + exit 0 ;; + -help | --help | --hel | --he | --h) + echo "\$ac_cs_usage"; exit 0 ;; + *) echo "\$ac_cs_usage"; exit 1 ;; + esac +done + +ac_given_srcdir=$srcdir +ac_given_INSTALL="$INSTALL" + +trap 'rm -fr `echo "Makefile src/Makefile src/test doc/Makefile data/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 +EOF +cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF +$ac_vpsub +$extrasub +s%@SHELL@%$SHELL%g +s%@CFLAGS@%$CFLAGS%g +s%@CPPFLAGS@%$CPPFLAGS%g +s%@CXXFLAGS@%$CXXFLAGS%g +s%@FFLAGS@%$FFLAGS%g +s%@DEFS@%$DEFS%g +s%@LDFLAGS@%$LDFLAGS%g +s%@LIBS@%$LIBS%g +s%@exec_prefix@%$exec_prefix%g +s%@prefix@%$prefix%g +s%@program_transform_name@%$program_transform_name%g +s%@bindir@%$bindir%g +s%@sbindir@%$sbindir%g +s%@libexecdir@%$libexecdir%g +s%@datadir@%$datadir%g +s%@sysconfdir@%$sysconfdir%g +s%@sharedstatedir@%$sharedstatedir%g +s%@localstatedir@%$localstatedir%g +s%@libdir@%$libdir%g +s%@includedir@%$includedir%g +s%@oldincludedir@%$oldincludedir%g +s%@infodir@%$infodir%g +s%@mandir@%$mandir%g +s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g +s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g +s%@INSTALL_DATA@%$INSTALL_DATA%g +s%@PACKAGE@%$PACKAGE%g +s%@VERSION@%$VERSION%g +s%@ACLOCAL@%$ACLOCAL%g +s%@AUTOCONF@%$AUTOCONF%g +s%@AUTOMAKE@%$AUTOMAKE%g +s%@AUTOHEADER@%$AUTOHEADER%g +s%@MAKEINFO@%$MAKEINFO%g +s%@SET_MAKE@%$SET_MAKE%g +s%@CC@%$CC%g +s%@MPICC0@%$MPICC0%g +s%@MPICC1@%$MPICC1%g +s%@MPICC2@%$MPICC2%g +s%@MPICC3@%$MPICC3%g +s%@MPICC4@%$MPICC4%g +s%@MPICC5@%$MPICC5%g +s%@MPICC@%$MPICC%g +s%@MPILIBS@%$MPILIBS%g +s%@MPIDEFS@%$MPIDEFS%g +s%@MPICFLAGS@%$MPICFLAGS%g +s%@PPUZZLE@%$PPUZZLE%g +s%@CPP@%$CPP%g + +CEOF +EOF + +cat >> $CONFIG_STATUS <<\EOF + +# Split the substitutions into bite-sized pieces for seds with +# small command number limits, like on Digital OSF/1 and HP-UX. +ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. +ac_file=1 # Number of current file. +ac_beg=1 # First line for current file. +ac_end=$ac_max_sed_cmds # Line after last line for current file. +ac_more_lines=: +ac_sed_cmds="" +while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file + else + sed "${ac_end}q" conftest.subs > conftest.s$ac_file + fi + if test ! -s conftest.s$ac_file; then + ac_more_lines=false + rm -f conftest.s$ac_file + else + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f conftest.s$ac_file" + else + ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" + fi + ac_file=`expr $ac_file + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_cmds` + fi +done +if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat +fi +EOF + +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF +for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` + ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + *) ac_file_in="${ac_file}.in" ;; + esac + + # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. + + # Remove last slash and all that follows it. Not all systems have dirname. + ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + # The file is in a subdirectory. + test ! -d "$ac_dir" && mkdir "$ac_dir" + ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$ac_given_srcdir" in + .) srcdir=. + if test -z "$ac_dots"; then top_srcdir=. + else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; + /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; + *) # Relative path. + srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" + top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + case "$ac_given_INSTALL" in + [/$]*) INSTALL="$ac_given_INSTALL" ;; + *) INSTALL="$ac_dots$ac_given_INSTALL" ;; + esac + + echo creating "$ac_file" + rm -f "$ac_file" + configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." + case "$ac_file" in + *Makefile*) ac_comsub="1i\\ +# $configure_input" ;; + *) ac_comsub= ;; + esac + + ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` + sed -e "$ac_comsub +s%@configure_input@%$configure_input%g +s%@srcdir@%$srcdir%g +s%@top_srcdir@%$top_srcdir%g +s%@INSTALL@%$INSTALL%g +" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file +fi; done +rm -f conftest.s* + +EOF +cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF + +exit 0 +EOF +chmod +x $CONFIG_STATUS +rm -fr confdefs* $ac_clean_files +test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 + diff --git a/forester/archive/RIO/others/puzzle_mod/configure.in b/forester/archive/RIO/others/puzzle_mod/configure.in new file mode 100644 index 0000000..57f0e27 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/configure.in @@ -0,0 +1,117 @@ + +dnl Disable caching. +define([AC_CACHE_LOAD], )dnl +define([AC_CACHE_SAVE], )dnl + +dnl Process this file with autoconf to produce a configure script. +AC_INIT(src/ml.h) + +AM_INIT_AUTOMAKE(tree-puzzle, 5.0) + +dnl Checks for programs. +AC_PROG_CC +AC_PROG_CC_C_O +AC_PROG_INSTALL +AC_PROG_MAKE_SET + + +AC_DEFUN(AC_TEST_MPICC,[dnl + if test "$1" != "" ; then + if test "$MPICCSET" = "" ; then +cat > conftest.c < +int main (int argc, char **argv) +{ +MPI_Init(&argc,&argv); +MPI_Finalize(); +exit(0); +} +EOF + + +MPICC=$1 +dnl if test "$MPICC" != "$CC" ; then +dnl +dnl fi + + if test "$MPICC" != "" ; then + AC_MSG_CHECKING(whether $MPICC works as MPI compiler) + $MPICC conftest.c -o conftest > /dev/null 2>&1 + if test $? = 0 ; then + AC_MSG_RESULT(yes) + #MPICC=$MPICC + MPILIBS= + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + AC_MSG_RESULT(no) + AC_MSG_CHECKING(whether $MPICC needs -lmpi) + $MPICC conftest.c -o conftest -lmpi > /dev/null 2>&1 + if test $? = 0 ; then + AC_MSG_RESULT(yes) + #MPICC=$PCC + MPILIBS=-lmpi + MPICCSET=$MPICC + PPUZZLE=ppuzzle + else + AC_MSG_RESULT(no) + MPICC= + MPILIBS= + MPICCSET= + PPUZZLE= + fi + fi + fi + rm -f conftest* + fi + fi ]) + +if test "$MPICC" != "" ; then + AC_PATH_PROG(MPICC0, $MPICC) +fi +AC_PATH_PROG(MPICC1, mpcc) +AC_PATH_PROG(MPICC2, hcc) +AC_PATH_PROG(MPICC3, mpicc) +AC_PATH_PROG(MPICC4, mpicc_lam) +AC_PATH_PROG(MPICC5, mpicc_mpich) + +AC_TEST_MPICC($MPICC0) +AC_TEST_MPICC($MPICC1) +AC_TEST_MPICC($MPICC2) +AC_TEST_MPICC($MPICC3) +AC_TEST_MPICC($MPICC4) +AC_TEST_MPICC($MPICC5) + +ac_cv_prog_MPICC=$MPICC + +AC_SUBST(MPICC) +AC_SUBST(MPILIBS) +AC_SUBST(MPIDEFS) +AC_SUBST(MPICFLAGS) +AC_SUBST(PPUZZLE) + +dnl Checks for libraries. +dnl Replace `main' with a function in -lm: +AC_CHECK_LIB(m, main) +dnl AC_CHECK_LIB(mpi, main) + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(limits.h) +dnl AC_HAVE_HEADERS(mpi.h) + +dnl AC_HAVE_HEADERS(rpc/xdr.h) + + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_SIZE_T + +dnl Checks for library functions. +dnl AC_CHECK_FUNCS(xdr_u_char) +dnl AC_CHECK_FUNCS(xdr_double) +dnl AC_CHECK_FUNCS(xdrstdio_create) +dnl AC_CHECK_FUNCS(xdr_destroy) +dnl AC_CHECK_FUNCS(xdr_inline) + +AC_OUTPUT(Makefile src/Makefile src/test doc/Makefile data/Makefile) diff --git a/forester/archive/RIO/others/puzzle_mod/data/Makefile b/forester/archive/RIO/others/puzzle_mod/data/Makefile new file mode 100644 index 0000000..13d6fc1 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/data/Makefile @@ -0,0 +1,177 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/tree-puzzle +pkglibdir = $(libdir)/tree-puzzle +pkgincludedir = $(includedir)/tree-puzzle + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = gcc +MAKEINFO = makeinfo +MPICC = +MPICC0 = +MPICC1 = +MPICC2 = +MPICC3 = +MPICC4 = +MPICC5 = +MPICFLAGS = +MPIDEFS = +MPILIBS = +PACKAGE = tree-puzzle +PPUZZLE = +VERSION = 5.0 + +EXTRA_DIST = atp6.a globin.a marswolf.n primates.b +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps data/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = data + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_mod/data/Makefile.am b/forester/archive/RIO/others/puzzle_mod/data/Makefile.am new file mode 100644 index 0000000..9589f1e --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/data/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = atp6.a globin.a marswolf.n primates.b diff --git a/forester/archive/RIO/others/puzzle_mod/data/Makefile.in b/forester/archive/RIO/others/puzzle_mod/data/Makefile.in new file mode 100644 index 0000000..47fa224 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/data/Makefile.in @@ -0,0 +1,177 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICC0 = @MPICC0@ +MPICC1 = @MPICC1@ +MPICC2 = @MPICC2@ +MPICC3 = @MPICC3@ +MPICC4 = @MPICC4@ +MPICC5 = @MPICC5@ +MPICFLAGS = @MPICFLAGS@ +MPIDEFS = @MPIDEFS@ +MPILIBS = @MPILIBS@ +PACKAGE = @PACKAGE@ +PPUZZLE = @PPUZZLE@ +VERSION = @VERSION@ + +EXTRA_DIST = atp6.a globin.a marswolf.n primates.b +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps data/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = data + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_mod/doc/Makefile b/forester/archive/RIO/others/puzzle_mod/doc/Makefile new file mode 100644 index 0000000..008b529 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/doc/Makefile @@ -0,0 +1,177 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/tree-puzzle +pkglibdir = $(libdir)/tree-puzzle +pkgincludedir = $(includedir)/tree-puzzle + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = gcc +MAKEINFO = makeinfo +MPICC = +MPICC0 = +MPICC1 = +MPICC2 = +MPICC3 = +MPICC4 = +MPICC5 = +MPICFLAGS = +MPIDEFS = +MPILIBS = +PACKAGE = tree-puzzle +PPUZZLE = +VERSION = 5.0 + +EXTRA_DIST = manual.html ppuzzle.gif puzzle.gif +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = doc + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_mod/doc/Makefile.am b/forester/archive/RIO/others/puzzle_mod/doc/Makefile.am new file mode 100644 index 0000000..3cb95e6 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/doc/Makefile.am @@ -0,0 +1 @@ +EXTRA_DIST = manual.html ppuzzle.gif puzzle.gif diff --git a/forester/archive/RIO/others/puzzle_mod/doc/Makefile.in b/forester/archive/RIO/others/puzzle_mod/doc/Makefile.in new file mode 100644 index 0000000..b5588c3 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/doc/Makefile.in @@ -0,0 +1,177 @@ +# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICC0 = @MPICC0@ +MPICC1 = @MPICC1@ +MPICC2 = @MPICC2@ +MPICC3 = @MPICC3@ +MPICC4 = @MPICC4@ +MPICC5 = @MPICC5@ +MPICFLAGS = @MPICFLAGS@ +MPIDEFS = @MPIDEFS@ +MPILIBS = @MPILIBS@ +PACKAGE = @PACKAGE@ +PPUZZLE = @PPUZZLE@ +VERSION = @VERSION@ + +EXTRA_DIST = manual.html ppuzzle.gif puzzle.gif +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = +DIST_COMMON = Makefile.am Makefile.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +all: all-redirect +.SUFFIXES: +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +tags: TAGS +TAGS: + + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = doc + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: +uninstall: uninstall-am +all-am: Makefile +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-generic mostlyclean-am + +clean: clean-am + +distclean-am: distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: tags distdir info-am info dvi-am dvi check check-am \ +installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_mod/install-sh b/forester/archive/RIO/others/puzzle_mod/install-sh new file mode 100755 index 0000000..e9de238 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + true +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=mkdir + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f $src -o -d $src ] + then + true + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + true + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + true + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' +' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + true + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + true + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/forester/archive/RIO/others/puzzle_mod/missing b/forester/archive/RIO/others/puzzle_mod/missing new file mode 100755 index 0000000..7789652 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/missing @@ -0,0 +1,190 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997 Free Software Foundation, Inc. +# Franc,ois Pinard , 1996. + +# 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 2, 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, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing - GNU libit 0.0" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acinclude.m4' or \`configure.in'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`configure.in'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`acconfig.h' or \`configure.in'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + makeinfo) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequirements for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 diff --git a/forester/archive/RIO/others/puzzle_mod/mkinstalldirs b/forester/archive/RIO/others/puzzle_mod/mkinstalldirs new file mode 100755 index 0000000..1d8b882 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/mkinstalldirs @@ -0,0 +1,40 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +# $Id: mkinstalldirs,v 1.1.1.1 2005/03/22 08:35:12 cmzmasek Exp $ + +errstatus=0 + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# mkinstalldirs ends here diff --git a/forester/archive/RIO/others/puzzle_mod/src/00README b/forester/archive/RIO/others/puzzle_mod/src/00README new file mode 100644 index 0000000..a50e005 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/00README @@ -0,0 +1,97 @@ +Modifications by Christian Zmasek +--------------------------------- + + +!WARNING: Use this modified version of TREE-PUZZLE 5.0 ONLY + together with FORESTER/RIO! + +!For all other puposes download the excellent original! + + +Changes: +-------- + + +puzzle1.c: void putdistance(FILE *fp): + +remove: "/* seven in one row */ + if ((j + 1) % 7 == 0 && j+1 != Maxspc) + fprintf(fp, "\n ");" + + + + + +puzzle1.c: int main(int argc, char *argv[]): + +remove: +"FPRINTF(STDOUTFILE "Writing parameters to file %s\n", OUTFILE); + openfiletowrite(&ofp, OUTFILE, "general output"); + writeoutputfile(ofp,WRITEPARAMS); + fclose(ofp);" + +"openfiletoappend(&ofp, OUTFILE, "general output"); + writeoutputfile(ofp,WRITEREST);" + +"openfiletoappend(&ofp, OUTFILE, "general output"); + writeoutputfile(ofp,WRITEREST);" + +"openfiletoappend(&ofp, OUTFILE, "general output"); + writeoutputfile(ofp,WRITEREST);" + +"timestamp(ofp); + closefile(ofp);" + + + + +puzzle2.c: void getsizesites(FILE *ifp): + +257 -> 8000 + + + +puzzle2.c: void readid(FILE *infp, int t): + +for (i = 0; i < 10; i++) { -> for (i = 0; i < 26; i++) { + +for (i = 9; i > -1; i--) { -> for (i = 25; i > -1; i--) { + +for (j = 0; (j < 10) && (flag == TRUE); j++) -> for (j = 0; (j < 26) && (flag == TRUE); j++) + + + +puzzle2.c: void initid(int t): + +Identif = new_cmatrix(t, 10); -> Identif = new_cmatrix(t, 26); + +for (j = 0; j < 10; j++) -> for (j = 0; j < 26; j++) + + + +puzzle2.c: fputid10(FILE *ofp, int t): + +for (i = 0; i < 10; i++) -> for (i = 0; i < 26; i++) + + + +puzzle2.c: int fputid(FILE *ofp, int t): + +while (Identif[t][i] != ' ' && i < 10) { -> while (Identif[t][i] != ' ' && i < 26) { + + + + +ml2.c: Node *internalnode(Tree *tr, char **chpp, int *ninode): + +char ident[100], idcomp[11]; -> char ident[100], idcomp[27]; + +idcomp[10] = '\0'; -> idcomp[26] = '\0'; + +} while (!stop && (ff != 10)); -> } while (!stop && (ff != 26)); + + + + + + diff --git a/forester/archive/RIO/others/puzzle_mod/src/Makefile b/forester/archive/RIO/others/puzzle_mod/src/Makefile new file mode 100644 index 0000000..9c6d4c0 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/Makefile @@ -0,0 +1,356 @@ +# Generated automatically from Makefile.in by configure. +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = /bin/sh + +srcdir = . +top_srcdir = .. +prefix = /usr/local +exec_prefix = ${prefix} + +bindir = ${exec_prefix}/bin +sbindir = ${exec_prefix}/sbin +libexecdir = ${exec_prefix}/libexec +datadir = ${prefix}/share +sysconfdir = ${prefix}/etc +sharedstatedir = ${prefix}/com +localstatedir = ${prefix}/var +libdir = ${exec_prefix}/lib +infodir = ${prefix}/info +mandir = ${prefix}/man +includedir = ${prefix}/include +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/tree-puzzle +pkglibdir = $(libdir)/tree-puzzle +pkgincludedir = $(includedir)/tree-puzzle + +top_builddir = .. + +ACLOCAL = aclocal +AUTOCONF = autoconf +AUTOMAKE = automake +AUTOHEADER = autoheader + +INSTALL = /usr/bin/install -c +INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_SCRIPT = ${INSTALL_PROGRAM} +transform = s,x,x, + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = gcc +MAKEINFO = makeinfo +MPICC = +MPICC0 = +MPICC1 = +MPICC2 = +MPICC3 = +MPICC4 = +MPICC5 = +MPICFLAGS = +MPIDEFS = +MPILIBS = +PACKAGE = tree-puzzle +PPUZZLE = +VERSION = 5.0 + +bin_PROGRAMS = puzzle +EXTRA_PROGRAMS = ppuzzle + +puzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c util.c ml.h util.h puzzle.h gamma.h +puzzle_LDADD = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o spuzzle1.o spuzzle2.o sutil.o + +SDEFS = +SCFLAGS = +SLDFLAGS = -lm + +SCOMPILE = $(CC) $(SDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(SCFLAGS) $(CFLAGS) +SCCLD = $(CC) +SLINK = $(SCCLD) $(AM_CFLAGS) $(CFLAGS) $(SLDFLAGS) $(LDFLAGS) + +ppuzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c sched.c util.c ppuzzle.c ml.h util.h puzzle.h gamma.h ppuzzle.h sched.h +ppuzzle_LDADD = pgamma.o pml1.o pml2.o pml3.o pmodel1.o pmodel2.o ppuzzle1.o ppuzzle2.o psched.o putil.o ppuzzle.o + +PCC = +PDEFS = -DPARALLEL +PCFLAGS = +PLDFLAGS = -lm + +PCOMPILE = $(PCC) $(PDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(PCFLAGS) $(CFLAGS) +PCCLD = $(PCC) +PLINK = $(PCCLD) $(AM_CFLAGS) $(PCFLAGS) $(CFLAGS) $(PLDFLAGS) $(LDFLAGS) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = test +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = -DPACKAGE=\"tree-puzzle\" -DVERSION=\"5.0\" -DHAVE_LIBM=1 -DSTDC_HEADERS=1 -DHAVE_LIMITS_H=1 -I. -I$(srcdir) +CPPFLAGS = +LDFLAGS = +LIBS = -lm +ppuzzle_OBJECTS = gamma.o ml1.o ml2.o ml3.o model1.o model2.o puzzle1.o \ +puzzle2.o sched.o util.o ppuzzle.o +ppuzzle_DEPENDENCIES = pgamma.o pml1.o pml2.o pml3.o pmodel1.o \ +pmodel2.o ppuzzle1.o ppuzzle2.o psched.o putil.o ppuzzle.o +ppuzzle_LDFLAGS = +puzzle_OBJECTS = gamma.o ml1.o ml2.o ml3.o model1.o model2.o puzzle1.o \ +puzzle2.o util.o +puzzle_DEPENDENCIES = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o \ +spuzzle1.o spuzzle2.o sutil.o +puzzle_LDFLAGS = +CFLAGS = -g -O2 +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = README Makefile.am Makefile.in test.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +SOURCES = $(ppuzzle_SOURCES) $(puzzle_SOURCES) +OBJECTS = $(ppuzzle_OBJECTS) $(puzzle_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +test: $(top_builddir)/config.status test.in + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = src + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ + mostlyclean-am + +clean: clean-am + +distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ + distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ +check-am installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +puzzle: $(puzzle_LDADD) $(puzzle_SOURCES) + $(SLINK) $(puzzle_LDADD) -o $@ + +sml1.o: ml1.c ml.h util.h + $(SCOMPILE) -c ml1.c && mv ml1.o $@ +sml2.o: ml2.c ml.h util.h + $(SCOMPILE) -c ml2.c && mv ml2.o $@ +sml3.o: ml3.c ml.h util.h gamma.h + $(SCOMPILE) -c ml3.c && mv ml3.o $@ +smodel1.o: model1.c ml.h util.h + $(SCOMPILE) -c model1.c && mv model1.o $@ +smodel2.o: model2.c ml.h util.h + $(SCOMPILE) -c model2.c && mv model2.o $@ +spuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(SCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +spuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(SCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +sutil.o: util.c util.h + $(SCOMPILE) -c util.c && mv util.o $@ +sgamma.o: gamma.c gamma.h util.h + $(SCOMPILE) -c gamma.c && mv gamma.o $@ + +ppuzzle: $(ppuzzle_LDADD) $(ppuzzle_SOURCES) + $(PLINK) $(ppuzzle_LDADD) -o $@ + +pml1.o: ml1.c ml.h util.h + $(PCOMPILE) -c ml1.c && mv ml1.o $@ +pml2.o: ml2.c ml.h util.h + $(PCOMPILE) -c ml2.c && mv ml2.o $@ +pml3.o: ml3.c ml.h util.h gamma.h + $(PCOMPILE) -c ml3.c && mv ml3.o $@ +pmodel1.o: model1.c ml.h util.h + $(PCOMPILE) -c model1.c && mv model1.o $@ +pmodel2.o: model2.c ml.h util.h + $(PCOMPILE) -c model2.c && mv model2.o $@ +ppuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(PCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +ppuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(PCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +putil.o: util.c util.h + $(PCOMPILE) -c util.c && mv util.o $@ +pgamma.o: gamma.c gamma.h util.h + $(PCOMPILE) -c gamma.c && mv gamma.o $@ +psched.o: sched.c sched.h ppuzzle.h + $(PCOMPILE) -c sched.c && mv sched.o $@ +ppuzzle.o: ppuzzle.c ppuzzle.h ml.h util.h puzzle.h gamma.h sched.h + $(PCOMPILE) -c ppuzzle.c + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_mod/src/Makefile.am b/forester/archive/RIO/others/puzzle_mod/src/Makefile.am new file mode 100644 index 0000000..3b88a39 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/Makefile.am @@ -0,0 +1,77 @@ +bin_PROGRAMS = puzzle @PPUZZLE@ +EXTRA_PROGRAMS = ppuzzle + +puzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c util.c ml.h util.h puzzle.h gamma.h +puzzle_LDADD = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o spuzzle1.o spuzzle2.o sutil.o + +SDEFS = +SCFLAGS = +SLDFLAGS = @LIBS@ + +SCOMPILE = $(CC) $(SDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(SCFLAGS) $(CFLAGS) +SCCLD = $(CC) +SLINK = $(SCCLD) $(AM_CFLAGS) $(CFLAGS) $(SLDFLAGS) $(LDFLAGS) + +ppuzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c sched.c util.c ppuzzle.c ml.h util.h puzzle.h gamma.h ppuzzle.h sched.h +ppuzzle_LDADD = pgamma.o pml1.o pml2.o pml3.o pmodel1.o pmodel2.o ppuzzle1.o ppuzzle2.o psched.o putil.o ppuzzle.o + +PCC = @MPICC@ +PDEFS = -DPARALLEL +PCFLAGS = +PLDFLAGS = @LIBS@ @MPILIBS@ + +PCOMPILE = $(PCC) $(PDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(PCFLAGS) $(CFLAGS) +PCCLD = $(PCC) +PLINK = $(PCCLD) $(AM_CFLAGS) $(PCFLAGS) $(CFLAGS) $(PLDFLAGS) $(LDFLAGS) + + +puzzle: $(puzzle_LDADD) $(puzzle_SOURCES) + $(SLINK) $(puzzle_LDADD) -o $@ + +sml1.o: ml1.c ml.h util.h + $(SCOMPILE) -c ml1.c && mv ml1.o $@ +sml2.o: ml2.c ml.h util.h + $(SCOMPILE) -c ml2.c && mv ml2.o $@ +sml3.o: ml3.c ml.h util.h gamma.h + $(SCOMPILE) -c ml3.c && mv ml3.o $@ +smodel1.o: model1.c ml.h util.h + $(SCOMPILE) -c model1.c && mv model1.o $@ +smodel2.o: model2.c ml.h util.h + $(SCOMPILE) -c model2.c && mv model2.o $@ +spuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(SCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +spuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(SCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +sutil.o: util.c util.h + $(SCOMPILE) -c util.c && mv util.o $@ +sgamma.o: gamma.c gamma.h util.h + $(SCOMPILE) -c gamma.c && mv gamma.o $@ + + + +ppuzzle: $(ppuzzle_LDADD) $(ppuzzle_SOURCES) + $(PLINK) $(ppuzzle_LDADD) -o $@ + +pml1.o: ml1.c ml.h util.h + $(PCOMPILE) -c ml1.c && mv ml1.o $@ +pml2.o: ml2.c ml.h util.h + $(PCOMPILE) -c ml2.c && mv ml2.o $@ +pml3.o: ml3.c ml.h util.h gamma.h + $(PCOMPILE) -c ml3.c && mv ml3.o $@ +pmodel1.o: model1.c ml.h util.h + $(PCOMPILE) -c model1.c && mv model1.o $@ +pmodel2.o: model2.c ml.h util.h + $(PCOMPILE) -c model2.c && mv model2.o $@ +ppuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(PCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +ppuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(PCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +putil.o: util.c util.h + $(PCOMPILE) -c util.c && mv util.o $@ +pgamma.o: gamma.c gamma.h util.h + $(PCOMPILE) -c gamma.c && mv gamma.o $@ +psched.o: sched.c sched.h ppuzzle.h + $(PCOMPILE) -c sched.c && mv sched.o $@ +ppuzzle.o: ppuzzle.c ppuzzle.h ml.h util.h puzzle.h gamma.h sched.h + $(PCOMPILE) -c ppuzzle.c + diff --git a/forester/archive/RIO/others/puzzle_mod/src/Makefile.in b/forester/archive/RIO/others/puzzle_mod/src/Makefile.in new file mode 100644 index 0000000..ab15dd4 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/Makefile.in @@ -0,0 +1,356 @@ +# Makefile.in generated automatically by automake 1.4 from Makefile.am + +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. +# This Makefile.in 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. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + +SHELL = @SHELL@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ + +bindir = @bindir@ +sbindir = @sbindir@ +libexecdir = @libexecdir@ +datadir = @datadir@ +sysconfdir = @sysconfdir@ +sharedstatedir = @sharedstatedir@ +localstatedir = @localstatedir@ +libdir = @libdir@ +infodir = @infodir@ +mandir = @mandir@ +includedir = @includedir@ +oldincludedir = /usr/include + +DESTDIR = + +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ + +top_builddir = .. + +ACLOCAL = @ACLOCAL@ +AUTOCONF = @AUTOCONF@ +AUTOMAKE = @AUTOMAKE@ +AUTOHEADER = @AUTOHEADER@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +transform = @program_transform_name@ + +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +CC = @CC@ +MAKEINFO = @MAKEINFO@ +MPICC = @MPICC@ +MPICC0 = @MPICC0@ +MPICC1 = @MPICC1@ +MPICC2 = @MPICC2@ +MPICC3 = @MPICC3@ +MPICC4 = @MPICC4@ +MPICC5 = @MPICC5@ +MPICFLAGS = @MPICFLAGS@ +MPIDEFS = @MPIDEFS@ +MPILIBS = @MPILIBS@ +PACKAGE = @PACKAGE@ +PPUZZLE = @PPUZZLE@ +VERSION = @VERSION@ + +bin_PROGRAMS = puzzle @PPUZZLE@ +EXTRA_PROGRAMS = ppuzzle + +puzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c util.c ml.h util.h puzzle.h gamma.h +puzzle_LDADD = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o spuzzle1.o spuzzle2.o sutil.o + +SDEFS = +SCFLAGS = +SLDFLAGS = @LIBS@ + +SCOMPILE = $(CC) $(SDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(SCFLAGS) $(CFLAGS) +SCCLD = $(CC) +SLINK = $(SCCLD) $(AM_CFLAGS) $(CFLAGS) $(SLDFLAGS) $(LDFLAGS) + +ppuzzle_SOURCES = gamma.c ml1.c ml2.c ml3.c model1.c model2.c puzzle1.c puzzle2.c sched.c util.c ppuzzle.c ml.h util.h puzzle.h gamma.h ppuzzle.h sched.h +ppuzzle_LDADD = pgamma.o pml1.o pml2.o pml3.o pmodel1.o pmodel2.o ppuzzle1.o ppuzzle2.o psched.o putil.o ppuzzle.o + +PCC = @MPICC@ +PDEFS = -DPARALLEL +PCFLAGS = +PLDFLAGS = @LIBS@ @MPILIBS@ + +PCOMPILE = $(PCC) $(PDEFS) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(PCFLAGS) $(CFLAGS) +PCCLD = $(PCC) +PLINK = $(PCCLD) $(AM_CFLAGS) $(PCFLAGS) $(CFLAGS) $(PLDFLAGS) $(LDFLAGS) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_CLEAN_FILES = test +PROGRAMS = $(bin_PROGRAMS) + + +DEFS = @DEFS@ -I. -I$(srcdir) +CPPFLAGS = @CPPFLAGS@ +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ +ppuzzle_OBJECTS = gamma.o ml1.o ml2.o ml3.o model1.o model2.o puzzle1.o \ +puzzle2.o sched.o util.o ppuzzle.o +ppuzzle_DEPENDENCIES = pgamma.o pml1.o pml2.o pml3.o pmodel1.o \ +pmodel2.o ppuzzle1.o ppuzzle2.o psched.o putil.o ppuzzle.o +ppuzzle_LDFLAGS = +puzzle_OBJECTS = gamma.o ml1.o ml2.o ml3.o model1.o model2.o puzzle1.o \ +puzzle2.o util.o +puzzle_DEPENDENCIES = sgamma.o sml1.o sml2.o sml3.o smodel1.o smodel2.o \ +spuzzle1.o spuzzle2.o sutil.o +puzzle_LDFLAGS = +CFLAGS = @CFLAGS@ +COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ +DIST_COMMON = README Makefile.am Makefile.in test.in + + +DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) + +TAR = gtar +GZIP_ENV = --best +SOURCES = $(ppuzzle_SOURCES) $(puzzle_SOURCES) +OBJECTS = $(ppuzzle_OBJECTS) $(puzzle_OBJECTS) + +all: all-redirect +.SUFFIXES: +.SUFFIXES: .S .c .o .s +$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps src/Makefile + +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +test: $(top_builddir)/config.status test.in + cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status + +mostlyclean-binPROGRAMS: + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +distclean-binPROGRAMS: + +maintainer-clean-binPROGRAMS: + +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(bindir) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + if test -f $$p; then \ + echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \ + $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + else :; fi; \ + done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + list='$(bin_PROGRAMS)'; for p in $$list; do \ + rm -f $(DESTDIR)$(bindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \ + done + +.c.o: + $(COMPILE) -c $< + +.s.o: + $(COMPILE) -c $< + +.S.o: + $(COMPILE) -c $< + +mostlyclean-compile: + -rm -f *.o core *.core + +clean-compile: + +distclean-compile: + -rm -f *.tab.c + +maintainer-clean-compile: + +tags: TAGS + +ID: $(HEADERS) $(SOURCES) $(LISP) + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + here=`pwd` && cd $(srcdir) \ + && mkid -f$$here/ID $$unique $(LISP) + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS)'; \ + unique=`for i in $$list; do echo $$i; done | \ + awk ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ + || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) + +mostlyclean-tags: + +clean-tags: + +distclean-tags: + -rm -f TAGS ID + +maintainer-clean-tags: + +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) + +subdir = src + +distdir: $(DISTFILES) + @for file in $(DISTFILES); do \ + d=$(srcdir); \ + if test -d $$d/$$file; then \ + cp -pr $$d/$$file $(distdir)/$$file; \ + else \ + test -f $(distdir)/$$file \ + || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ + || cp -p $$d/$$file $(distdir)/$$file || :; \ + fi; \ + done +info-am: +info: info-am +dvi-am: +dvi: dvi-am +check-am: all-am +check: check-am +installcheck-am: +installcheck: installcheck-am +install-exec-am: install-binPROGRAMS +install-exec: install-exec-am + +install-data-am: +install-data: install-data-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +install: install-am +uninstall-am: uninstall-binPROGRAMS +uninstall: uninstall-am +all-am: Makefile $(PROGRAMS) +all-redirect: all-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install +installdirs: + $(mkinstalldirs) $(DESTDIR)$(bindir) + + +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(CONFIG_CLEAN_FILES) + -rm -f config.cache config.log stamp-h stamp-h[0-9]* + +maintainer-clean-generic: +mostlyclean-am: mostlyclean-binPROGRAMS mostlyclean-compile \ + mostlyclean-tags mostlyclean-generic + +mostlyclean: mostlyclean-am + +clean-am: clean-binPROGRAMS clean-compile clean-tags clean-generic \ + mostlyclean-am + +clean: clean-am + +distclean-am: distclean-binPROGRAMS distclean-compile distclean-tags \ + distclean-generic clean-am + +distclean: distclean-am + +maintainer-clean-am: maintainer-clean-binPROGRAMS \ + maintainer-clean-compile maintainer-clean-tags \ + maintainer-clean-generic distclean-am + @echo "This command is intended for maintainers to use;" + @echo "it deletes files that may require special tools to rebuild." + +maintainer-clean: maintainer-clean-am + +.PHONY: mostlyclean-binPROGRAMS distclean-binPROGRAMS clean-binPROGRAMS \ +maintainer-clean-binPROGRAMS uninstall-binPROGRAMS install-binPROGRAMS \ +mostlyclean-compile distclean-compile clean-compile \ +maintainer-clean-compile tags mostlyclean-tags distclean-tags \ +clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \ +check-am installcheck-am installcheck install-exec-am install-exec \ +install-data-am install-data install-am install uninstall-am uninstall \ +all-redirect all-am all installdirs mostlyclean-generic \ +distclean-generic clean-generic maintainer-clean-generic clean \ +mostlyclean distclean maintainer-clean + + +puzzle: $(puzzle_LDADD) $(puzzle_SOURCES) + $(SLINK) $(puzzle_LDADD) -o $@ + +sml1.o: ml1.c ml.h util.h + $(SCOMPILE) -c ml1.c && mv ml1.o $@ +sml2.o: ml2.c ml.h util.h + $(SCOMPILE) -c ml2.c && mv ml2.o $@ +sml3.o: ml3.c ml.h util.h gamma.h + $(SCOMPILE) -c ml3.c && mv ml3.o $@ +smodel1.o: model1.c ml.h util.h + $(SCOMPILE) -c model1.c && mv model1.o $@ +smodel2.o: model2.c ml.h util.h + $(SCOMPILE) -c model2.c && mv model2.o $@ +spuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(SCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +spuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(SCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +sutil.o: util.c util.h + $(SCOMPILE) -c util.c && mv util.o $@ +sgamma.o: gamma.c gamma.h util.h + $(SCOMPILE) -c gamma.c && mv gamma.o $@ + +ppuzzle: $(ppuzzle_LDADD) $(ppuzzle_SOURCES) + $(PLINK) $(ppuzzle_LDADD) -o $@ + +pml1.o: ml1.c ml.h util.h + $(PCOMPILE) -c ml1.c && mv ml1.o $@ +pml2.o: ml2.c ml.h util.h + $(PCOMPILE) -c ml2.c && mv ml2.o $@ +pml3.o: ml3.c ml.h util.h gamma.h + $(PCOMPILE) -c ml3.c && mv ml3.o $@ +pmodel1.o: model1.c ml.h util.h + $(PCOMPILE) -c model1.c && mv model1.o $@ +pmodel2.o: model2.c ml.h util.h + $(PCOMPILE) -c model2.c && mv model2.o $@ +ppuzzle1.o: puzzle1.c ml.h util.h puzzle.h gamma.h ppuzzle.h + $(PCOMPILE) -c puzzle1.c && mv puzzle1.o $@ +ppuzzle2.o: puzzle2.c ml.h util.h puzzle.h ppuzzle.h + $(PCOMPILE) -c puzzle2.c && mv puzzle2.o $@ +putil.o: util.c util.h + $(PCOMPILE) -c util.c && mv util.o $@ +pgamma.o: gamma.c gamma.h util.h + $(PCOMPILE) -c gamma.c && mv gamma.o $@ +psched.o: sched.c sched.h ppuzzle.h + $(PCOMPILE) -c sched.c && mv sched.o $@ +ppuzzle.o: ppuzzle.c ppuzzle.h ml.h util.h puzzle.h gamma.h sched.h + $(PCOMPILE) -c ppuzzle.c + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/forester/archive/RIO/others/puzzle_mod/src/README b/forester/archive/RIO/others/puzzle_mod/src/README new file mode 100644 index 0000000..9c89883 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/README @@ -0,0 +1 @@ +Sources of the TREE-PUZZLE package diff --git a/forester/archive/RIO/others/puzzle_mod/src/gamma.c b/forester/archive/RIO/others/puzzle_mod/src/gamma.c new file mode 100644 index 0000000..ee1f6df --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/gamma.c @@ -0,0 +1,346 @@ +/* + * gamma.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + +#include +#include "util.h" +#include "gamma.h" + +/* private prototypes */ +static double IncompleteGamma (double x, double alpha, double ln_gamma_alpha); +static double PointNormal (double prob); +static double PointChi2 (double prob, double v); + +/* Gamma density function */ +double densityGamma (double x, double shape) +{ + return pow (shape, shape) * pow (x, shape-1) / + exp (shape*x + LnGamma(shape)); +} + +/* Gamma cdf */ +double cdfGamma (double x, double shape) +{ + double result; + + result = IncompleteGamma (shape*x, shape, LnGamma(shape)); + + return result; +} + +/* Gamma inverse cdf */ +double icdfGamma (double y, double shape) +{ + double result; + + result = PointChi2 (y, 2.0*shape)/(2.0*shape); + + /* to avoid -1.0 */ + if (result < 0.0) + { + result = 0.0; + } + + return result; +} + +/* Gamma n-th moment */ +double momentGamma (int n, double shape) +{ + int i; + double tmp = 1.0; + + for (i = 1; i < n; i++) + { + tmp *= (shape + i)/shape; + } + + return tmp; +} + +/* The following code comes from tools.c in Yang's PAML package */ + +double LnGamma (double alpha) +{ +/* returns ln(gamma(alpha)) for alpha>0, accurate to 10 decimal places. + Stirling's formula is used for the central polynomial part of the procedure. + Pike MC & Hill ID (1966) Algorithm 291: Logarithm of the gamma function. + Communications of the Association for Computing Machinery, 9:684 +*/ + double x=alpha, f=0, z; + + if (x<7) { + f=1; z=x-1; + while (++z<7) f*=z; + x=z; f=-log(f); + } + z = 1/(x*x); + return f + (x-0.5)*log(x) - x + .918938533204673 + + (((-.000595238095238*z+.000793650793651)*z-.002777777777778)*z + +.083333333333333)/x; +} + +static double IncompleteGamma (double x, double alpha, double ln_gamma_alpha) +{ +/* returns the incomplete gamma ratio I(x,alpha) where x is the upper + limit of the integration and alpha is the shape parameter. + returns (-1) if in error + (1) series expansion if (alpha>x || x<=1) + (2) continued fraction otherwise + RATNEST FORTRAN by + Bhattacharjee GP (1970) The incomplete gamma integral. Applied Statistics, + 19: 285-287 (AS32) +*/ + int i; + double p=alpha, g=ln_gamma_alpha; + double accurate=1e-8, overflow=1e30; + double factor, gin=0, rn=0, a=0,b=0,an=0,dif=0, term=0, pn[6]; + + if (x==0) return (0); + if (x<0 || p<=0) return (-1); + + factor=exp(p*log(x)-x-g); + if (x>1 && x>=p) goto l30; + /* (1) series expansion */ + gin=1; term=1; rn=p; + l20: + rn++; + term*=x/rn; gin+=term; + + if (term > accurate) goto l20; + gin*=factor/p; + goto l50; + l30: + /* (2) continued fraction */ + a=1-p; b=a+x+1; term=0; + pn[0]=1; pn[1]=x; pn[2]=x+1; pn[3]=x*b; + gin=pn[2]/pn[3]; + l32: + a++; b+=2; term++; an=a*term; + for (i=0; i<2; i++) pn[i+4]=b*pn[i+2]-an*pn[i]; + if (pn[5] == 0) goto l35; + rn=pn[4]/pn[5]; dif=fabs(gin-rn); + if (dif>accurate) goto l34; + if (dif<=accurate*rn) goto l42; + l34: + gin=rn; + l35: + for (i=0; i<4; i++) pn[i]=pn[i+2]; + if (fabs(pn[4]) < overflow) goto l32; + for (i=0; i<4; i++) pn[i]/=overflow; + goto l32; + l42: + gin=1-factor*gin; + + l50: + return (gin); +} + + +/* functions concerning the CDF and percentage points of the gamma and + Chi2 distribution +*/ +static double PointNormal (double prob) +{ +/* returns z so that Prob{x.999998 || v<=0) return (-1); + + g = LnGamma (v/2); + xx=v/2; c=xx-1; + if (v >= -1.24*log(p)) goto l1; + + ch=pow((p*xx*exp(g+xx*aa)), 1/xx); + if (ch-e<0) return (ch); + goto l4; +l1: + if (v>.32) goto l3; + ch=0.4; a=log(1-p); +l2: + q=ch; p1=1+ch*(4.67+ch); p2=ch*(6.73+ch*(6.66+ch)); + t=-0.5+(4.67+2*ch)/p1 - (6.73+ch*(13.32+3*ch))/p2; + ch-=(1-exp(a+g+.5*ch+c*aa)*p2/p1)/t; + if (fabs(q/ch-1)-.01 <= 0) goto l4; + else goto l2; + +l3: + x=PointNormal (p); + p1=0.222222/v; ch=v*pow((x*sqrt(p1)+1-p1), 3.0); + if (ch>2.2*v+6) ch=-2*(log(1-p)-c*log(.5*ch)+g); +l4: + + do + { + q=ch; p1=.5*ch; + if ((t=IncompleteGamma (p1, xx, g))<0) { + return (-1); + } + p2=p-t; + t=p2*exp(xx*aa+g+p1-c*log(ch)); + b=t/ch; a=0.5*t-b*c; + + s1=(210+a*(140+a*(105+a*(84+a*(70+60*a))))) / 420; + s2=(420+a*(735+a*(966+a*(1141+1278*a))))/2520; + s3=(210+a*(462+a*(707+932*a)))/2520; + s4=(252+a*(672+1182*a)+c*(294+a*(889+1740*a)))/5040; + s5=(84+264*a+c*(175+606*a))/2520; + s6=(120+c*(346+127*c))/5040; + ch+=t*(1+0.5*t*s1-b*c*(s1-b*(s2-b*(s3-b*(s4-b*(s5-b*s6)))))); + } + while (fabs(q/ch-1) > e); + + return (ch); +} + + +/* Incomplete Gamma function Q(a,x) + - this is a cleanroom implementation of NRs gammq(a,x) +*/ +double IncompleteGammaQ (double a, double x) +{ + return 1.0-IncompleteGamma (x, a, LnGamma(a)); +} + + +/* probability that the observed chi-square + exceeds chi2 even if model is correct */ +double chi2prob (int deg, double chi2) +{ + return IncompleteGammaQ (0.5*deg, 0.5*chi2); +} + + + +/* chi square test + ef expected frequencies (sum up to 1 !!) + of observed frequencies (sum up to the number of samples) + numcat number of categories + returns critical significance level */ +double chi2test(double *ef, int *of, int numcat, int *chi2fail) +{ + double chi2, criticals, efn; + int i, below1, below5, reducedcat; + int samples; + + *chi2fail = FALSE; + reducedcat = numcat; + below1 = 0; + below5 = 0; + + /* compute number of samples */ + samples = 0; + for (i = 0; i < numcat; i++) + samples = samples + of[i]; + + /* compute chi square */ + chi2 = 0; + for (i = 0; i < numcat; i++) { + efn = ef[i]*((double) samples); + if (efn < 1.0) below1++; + if (efn < 5.0) below5++; + if (efn == 0.0) { + reducedcat--; + fprintf(stdout, "FPE error: samples=%d, ef[%d]=%f, of[%d]=%d, efn=%f, nc=%d, rc=%d\n", + samples, i, ef[i], i, of[i], efn, numcat, reducedcat); + fprintf(stdout, "PLEASE REPORT THIS ERROR TO DEVELOPERS !!!\n"); + fflush(stdout); + } else chi2 = chi2 + ((double) of[i]-efn)*((double) of[i]-efn)/efn; + } + + /* compute significance */ + criticals = chi2prob (numcat-1, chi2); + + /* no expected frequency category (sum up to # samples) below 1.0 */ + if (below1 > 0) *chi2fail = TRUE; + /* no more than 1/5 of the frequency categories below 5.0 */ + if (below5 > (int) floor(samples/5.0)) *chi2fail = TRUE; + + return criticals; +} + + +/* chi square test + ef expected frequencies (sum up to 1 !!) + of observed frequencies (sum up to the number of samples) + numcat number of categories + returns critical significance level */ +double altchi2test(double *ef, int *of, int numcat, int *chi2fail) +{ + double chi2, criticals, efn; + int i, below1, below5; + int samples; + + *chi2fail = FALSE; + below1 = 0; + below5 = 0; + + /* compute number of samples */ + samples = 0; + for (i = 0; i < numcat; i++) + samples = samples + of[i]; + + /* compute chi square */ + chi2 = 0; + for (i = 0; i < numcat; i++) { + efn = ef[i]*((double) samples); + if (efn < 1.0) below1++; + if (efn < 5.0) below5++; + chi2 = chi2 + ((double) of[i]-efn)*((double) of[i]-efn)/efn; + } + + /* compute significance */ + criticals = chi2prob (numcat-1, chi2); + + /* no expected frequency category (sum up to # samples) below 1.0 */ + if (below1 > 0) *chi2fail = TRUE; + /* no more than 1/5 of the frequency categories below 5.0 */ + if (below5 > (int) floor(samples/5.0)) *chi2fail = TRUE; + + return criticals; +} diff --git a/forester/archive/RIO/others/puzzle_mod/src/gamma.h b/forester/archive/RIO/others/puzzle_mod/src/gamma.h new file mode 100644 index 0000000..975f4ee --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/gamma.h @@ -0,0 +1,30 @@ +/* + * gamma.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + +#ifndef _GAMMA_ +#define _GAMMA_ + +double densityGamma (double, double); +double cdfGamma (double, double); +double icdfGamma (double, double); +double momentGamma (int, double); + +double LnGamma (double); +double IncompleteGammaQ (double, double); + +double chi2prob (int, double); +double chi2test (double *, int *, int , int *); + + +#endif /* _GAMMA_ */ diff --git a/forester/archive/RIO/others/puzzle_mod/src/ml.h b/forester/archive/RIO/others/puzzle_mod/src/ml.h new file mode 100644 index 0000000..a0aa981 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/ml.h @@ -0,0 +1,279 @@ +/* + * ml.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef _ML_ +#define _ML_ + +/* definitions */ + +#define MINTS 0.20 /* Ts/Tv parameter */ +#define MAXTS 30.0 +#define MINYR 0.10 /* Y/R Ts parameter */ +#define MAXYR 6.00 +#define MINFI 0.00 /* fraction invariable sites */ +#define MAXFI 0.99 /* only for input */ +#define MINGE 0.01 /* rate heterogeneity parameter */ +#define MAXGE 0.99 +#define MINCAT 4 /* discrete Gamma categories */ +#define MAXCAT 16 + +#define RMHROOT 5.0 /* upper relative bound for height of root */ +#define MAXARC 900.0 /* upper limit on branch length (PAM) = 6.0 */ +#define MINARC 0.001 /* lower limit on branch length (PAM) = 0.00001 */ +#define EPSILON 0.0001 /* error in branch length (PAM) = 0.000001 */ +#define HEPSILON 0.0001 /* error in node and root heights */ +#define MAXIT 100 /* maximum number of iterates of smoothing */ +#define MINFDIFF 0.00002 /* lower limit on base frequency differences */ +#define MINFREQ 0.0001 /* lower limit on base frequencies = 0.01% */ +#define NUMQBRNCH 5 /* number of branches in a quartet */ +#define NUMQIBRNCH 1 /* number of internal branches in a quartet */ +#define NUMQSPC 4 /* number of sequences in a quartet */ + +/* 2D minimisation */ +#define PEPS1 0.01 /* epsilon substitution process estimation */ +#define PEPS2 0.01 /* epsilon rate heterogeneity estimation */ + +/* quartet series */ +#define MINPERTAXUM 2 +#define MAXPERTAXUM 6 +#define TSDIFF 0.20 +#define YRDIFF 0.10 + +/* type definitions */ + +typedef struct node +{ + struct node *isop; + struct node *kinp; + int descen; + int number; + double length; + double lengthc; + double varlen; + double height; + double varheight; + ivector paths; + cvector eprob; + dcube partials; /* partial likelihoods */ + char *label; /* internal labels */ +} Node; + +typedef struct tree +{ + Node *rootp; + Node **ebrnchp; /* list of pointers to external branches */ + Node **ibrnchp; /* list of pointers to internal branches */ + double lklhd; /* total log-likelihood */ + double lklhdc; /* total log-likelihood clock */ + dmatrix condlkl; /* likelihoods for each pattern and non-zero rate */ + double rssleast; +} Tree; + + +/* global variables */ + +EXTERN Node *chep; /* pointer to current height node */ +EXTERN Node *rootbr; /* pointer to root branch */ +EXTERN Node **heights; /* pointer to height nodes in unrooted tree */ +EXTERN int Numhts; /* number of height nodes in unrooted tree */ +EXTERN double hroot; /* height of root */ +EXTERN double varhroot; /* variance of height of root */ +EXTERN double maxhroot; /* maximal height of root */ +EXTERN int locroot; /* location of root */ +EXTERN int numbestroot; /* number of best locations for root */ +EXTERN int clockmode; /* clocklike vs. nonclocklike computation */ +EXTERN cmatrix Identif; /* sequence names */ +EXTERN cmatrix Seqchar; /* ML sequence data */ +EXTERN cmatrix Seqpat; /* ordered site patterns */ +EXTERN ivector constpat; /* indicates constant site patterns */ +EXTERN cvector seqchi; +EXTERN cvector seqchj; +EXTERN dcube partiali; +EXTERN dcube partialj; +EXTERN dcube ltprobr; /* transition probabilites (for all non-zero rates */ +EXTERN dmatrix Distanmat; /* matrix with maximum likelihood distances */ +EXTERN dmatrix Evec; /* Eigenvectors */ +EXTERN dmatrix Ievc; /* Inverse eigenvectors */ +EXTERN double TSparam; /* Ts/Tv parameter */ +EXTERN double tsmean, yrmean; +EXTERN double YRparam; /* Y/R Ts parameter */ +EXTERN double geerr; /* estimated error of rate heterogeneity */ +EXTERN double Geta; /* rate heterogeneity parameter */ +EXTERN double fracconst; /* fraction of constant sites */ +EXTERN double fracconstpat;/* fraction of constant patterns */ +EXTERN double Proportion; /* for tree drawing */ +EXTERN double tserr; /* estimated error of TSparam */ +EXTERN double yrerr; /* estimated error of YRparam */ +EXTERN double fracinv; /* fraction of invariable sites */ +EXTERN double fierr; /* estimated error of fracinv */ +EXTERN dvector Brnlength; +EXTERN dvector Distanvec; +EXTERN dvector Eval; /* Eigenvalues of 1 PAM rate matrix */ +EXTERN dvector Freqtpm; /* base frequencies */ +EXTERN dvector Rates; /* rate of each of the categories */ +EXTERN dmatrix iexp; +EXTERN imatrix Basecomp; /* base composition of each taxon */ +EXTERN ivector usedtaxa; /* list needed in the input treefile procedure */ +EXTERN int numtc; /* auxiliary variable for printing rooted tree */ +EXTERN int qcalg_optn; /* use quartet subsampling algorithm */ +EXTERN int approxp_optn; /* approximate parameter estimation */ +EXTERN int chi2fail; /* flag for chi2 test */ +EXTERN int Converg; /* flag for ML convergence (no clock) */ +EXTERN int Convergc; /* flag for ML convergence (clock) */ +EXTERN int data_optn; /* type of sequence input data */ +EXTERN int Dayhf_optn; /* Dayhoff model */ +EXTERN int HKY_optn; /* use HKY model */ +EXTERN int Jtt_optn; /* JTT model */ +EXTERN int blosum62_optn; /* BLOSUM 62 model */ +EXTERN int mtrev_optn; /* mtREV model */ +EXTERN int cprev_optn; /* cpREV model */ +EXTERN int vtmv_optn; /* VT model */ +EXTERN int wag_optn; /* WAG model */ +EXTERN int Maxsite; /* number of ML characters per taxum */ +EXTERN int Maxspc; /* number of sequences */ +EXTERN int mlmode; /* quartet ML or user defined tree ML */ +EXTERN int nuc_optn; /* nucleotide (4x4) models */ +EXTERN int Numbrnch; /* number of branches of current tree */ +EXTERN int numcats; /* number of rate categories */ +EXTERN int Numconst; /* number of constant sites */ +EXTERN int Numconstpat; /* number of constant patterns */ +EXTERN int Numibrnch; /* number of internal branches of current tree */ +EXTERN int Numitc; /* number of ML iterations assumning clock */ +EXTERN int Numit; /* number of ML iterations if there is convergence */ +EXTERN int Numptrn; /* number of site patterns */ +EXTERN int Numspc; /* number of sequences of current tree */ +EXTERN int optim_optn; /* optimize model parameters */ +EXTERN int grate_optim; /* optimize Gamma rate heterogeneity parameter */ +EXTERN int SH_optn; /* SH nucleotide (16x16) model */ +EXTERN int TN_optn; /* use TN model */ +EXTERN int tpmradix; /* number of different states */ +EXTERN int fracinv_optim; /* optimize fraction of invariable sites */ +EXTERN int typ_optn; /* type of PUZZLE analysis */ +EXTERN ivector Weight; /* weight of each site pattern */ +EXTERN Tree *Ctree; /* pointer to current tree */ +EXTERN ulivector badtaxon; /* involment of each taxon in a bad quartet */ +EXTERN int qca, qcb, qcc, qcd; /* quartet currently optimized */ +EXTERN ivector Alias; /* link site -> corresponding site pattern */ +EXTERN ivector bestrate; /* optimal assignment of rates to sequence sites */ + +EXTERN int bestratefound; + +/* function prototypes of all ml function */ + +void convfreq(dvector); +void radixsort(cmatrix, ivector, int, int, int *); +void condenceseq(cmatrix, ivector, cmatrix, ivector, int, int, int); +void countconstantsites(cmatrix, ivector, int, int, int *, int*); +void evaluateseqs(void); +void elmhes(dmatrix, ivector, int); +void eltran(dmatrix, dmatrix, ivector, int); +void mcdiv(double, double, double, double, double *, double *); +void hqr2(int, int, int, dmatrix, dmatrix, dvector, dvector); +void onepamratematrix(dmatrix); +void eigensystem(dvector, dmatrix); +void luinverse(dmatrix, dmatrix, int); +void checkevector(dmatrix, dmatrix, int); +void tranprobmat(void); +void tprobmtrx(double, dmatrix); +double comptotloglkl(dmatrix); +void allsitelkl(dmatrix, dvector); +double pairlkl(double); +double mldistance(int, int); +void initdistan(void); +void computedistan(void); +void productpartials(Node *); +void partialsinternal(Node *); +void partialsexternal(Node *); +void initpartials(Tree *); +double intlkl(double); +void optinternalbranch(Node *); +double extlkl(double); +void optexternalbranch(Node *); +void finishlkl(Node *); +double optlkl(Tree *); +double treelkl(Tree *); +void luequation(dmatrix, dvector, int); +void lslength(Tree *, dvector, int, int, dvector); + +void getusertree(FILE *, cvector, int); +Node *internalnode(Tree *, char **, int *); +void constructtree(Tree *, cvector); +void removebasalbif(cvector); +void makeusertree(FILE *); +Tree *new_tree(int, int, cmatrix); +Tree *new_quartet(int, cmatrix); +void free_tree(Tree *, int); +void make_quartet(int, int, int, int); +void changedistan(dmatrix, dvector, int); +double quartet_lklhd(int, int, int, int); +double quartet_alklhd(int, int, int, int); +void readusertree(FILE *); +double usertree_lklhd(void); +double usertree_alklhd(void); +void mlstart(void); +void distupdate(int, int, int, int); +void mlfinish(void); +void prbranch(Node *, int, int, int, ivector, ivector, FILE *); +void getproportion(double *, dvector, int); +void prtopology(FILE *); +void fputphylogeny(FILE *); +void resulttree(FILE *); +void njtree(FILE *); +void njdistantree(Tree *); +void findbestratecombination(void); +void printbestratecombination(FILE *); +int checkedge(int); +void fputsubstree(FILE *, Node *); +void fputrooted(FILE *, int); +void findheights(Node *); +void initclock(int); +double clock_alklhd(int); +double heightlkl(double); +void optheight(void); +double rheightlkl(double); +void optrheight(void); +double clock_lklhd(int); +int findrootedge(void); +void resultheights(FILE *); + +double homogentest(int); +void YangDiscreteGamma(double, int, double *); +void updaterates(void); +void computestat(double *, int, double *, double *); +double quartetml(int, int, int, int); +double opttsq(double); +double optyrq(double); +void optimseqevolparamsq(void); +double opttst(double); +double optyrt(double); +void optimseqevolparamst(void); +double optfi(double); +double optge(double); +void optimrateparams(void); + +int gettpmradix(void); +void rtfdata(dmatrix, double *); +int code2int(cvector); +char *int2code(int); + +void jttdata(dmatrix, double *); +void dyhfdata(dmatrix, double *); +void mtrevdata(dmatrix, double *); +void cprev45data(dmatrix, double *); +void blosum62data(dmatrix, double *); +void vtmvdata(dmatrix, double *); +void wagdata(dmatrix, double *); + +#endif diff --git a/forester/archive/RIO/others/puzzle_mod/src/ml1.c b/forester/archive/RIO/others/puzzle_mod/src/ml1.c new file mode 100644 index 0000000..0e905ef --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/ml1.c @@ -0,0 +1,1734 @@ +/* + * ml1.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/******************************************************************************/ +/* definitions and prototypes */ +/******************************************************************************/ + +#define EXTERN extern + +/* prototypes */ +#include +#include +#include +#include +#include "util.h" +#include "ml.h" + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, +#endif + + +/******************************************************************************/ +/* compacting sequence data information */ +/******************************************************************************/ + + +/***************************** internal functions *****************************/ + + +/* make all frequencies a little different */ +void convfreq(dvector freqemp) +{ + int i, j, maxi=0; + double freq, maxfreq, sum; + + + sum = 0.0; + maxfreq = 0.0; + for (i = 0; i < tpmradix; i++) { + freq = freqemp[i]; + if (freq < MINFREQ) freqemp[i] = MINFREQ; + if (freq > maxfreq) { + maxfreq = freq; + maxi = i; + } + sum += freqemp[i]; + } + freqemp[maxi] += 1.0 - sum; + + for (i = 0; i < tpmradix - 1; i++) { + for (j = i + 1; j < tpmradix; j++) { + if (freqemp[i] == freqemp[j]) { + freqemp[i] += MINFDIFF/2.0; + freqemp[j] -= MINFDIFF/2.0; + } + } + } +} + +/* sort site patters of original input data */ +void radixsort(cmatrix seqchar, ivector ali, int maxspc, int maxsite, + int *numptrn) +{ + int i, j, k, l, n, pass; + int *awork; + int *count; + + + awork = new_ivector(maxsite); + count = new_ivector(tpmradix+1); + for (i = 0; i < maxsite; i++) + ali[i] = i; + for (pass = maxspc - 1; pass >= 0; pass--) { + for (j = 0; j < tpmradix+1; j++) + count[j] = 0; + for (i = 0; i < maxsite; i++) + count[(int) seqchar[pass][ali[i]]]++; + for (j = 1; j < tpmradix+1; j++) + count[j] += count[j-1]; + for (i = maxsite-1; i >= 0; i--) + awork[ --count[(int) seqchar[pass][ali[i]]] ] = ali[i]; + for (i = 0; i < maxsite; i++) + ali[i] = awork[i]; + } + free_ivector(awork); + free_ivector(count); + n = 1; + for (j = 1; j < maxsite; j++) { + k = ali[j]; + l = ali[j-1]; + for (i = 0; i < maxspc; i++) { + if (seqchar[i][l] != seqchar[i][k]) { + n++; + break; + } + } + } + *numptrn = n; +} + + +void condenceseq(cmatrix seqchar, ivector ali, cmatrix seqconint, + ivector weight, int maxspc, int maxsite, int numptrn) +{ + int i, j, k, n; + int agree_flag; /* boolean */ + + + n = 0; + k = ali[n]; + for (i = 0; i < maxspc; i++) { + seqconint[i][n] = seqchar[i][k]; + } + weight[n] = 1; + Alias[k] = 0; + for (j = 1; j < maxsite; j++) { + k = ali[j]; + agree_flag = TRUE; + for (i = 0; i < maxspc; i++) { + if (seqconint[i][n] != seqchar[i][k]) { + agree_flag = FALSE; + break; + } + } + if (agree_flag == FALSE) { + n++; + for (i = 0; i < maxspc; i++) { + seqconint[i][n] = seqchar[i][k]; + } + weight[n] = 1; + Alias[k] = n; + } else { + weight[n]++; + Alias[k] = n; + } + } + n++; + if (numptrn != n) { + /* Problem in condenceseq */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR A TO DEVELOPERS\n\n\n"); + exit(1); + } +} + +void countconstantsites(cmatrix seqpat, ivector weight, int maxspc, int numptrn, + int *numconst, int *numconstpat) +{ + int character, s, i, constflag; + + *numconst = 0; + *numconstpat = 0; + for (s = 0; s < numptrn; s++) { /* check all patterns */ + constpat[s] = FALSE; + constflag = TRUE; + character = seqpat[0][s]; + for (i = 1; i < maxspc; i++) { + if (seqpat[i][s] != character) { + constflag = FALSE; + break; + } + } + if (character != tpmradix && constflag) { + (*numconst) = (*numconst) + weight[s]; + (*numconstpat)++; + constpat[s] = TRUE; + } + } +} + +/***************************** exported functions *****************************/ + + +void evaluateseqs() +{ + ivector ali; + + convfreq(Freqtpm); /* make all frequencies slightly different */ + ali = new_ivector(Maxsite); + radixsort(Seqchar, ali, Maxspc, Maxsite, &Numptrn); + Seqpat = new_cmatrix(Maxspc, Numptrn); + constpat = new_ivector(Numptrn); + Weight = new_ivector(Numptrn); + condenceseq(Seqchar, ali, Seqpat, Weight, Maxspc, Maxsite, Numptrn); + free_ivector(ali); + countconstantsites(Seqpat, Weight, Maxspc, Numptrn, &Numconst, &Numconstpat); + fracconstpat = (double) Numconstpat / (double) Numptrn; + fracconst = (double) Numconst / (double) Maxsite; +} + + +/******************************************************************************/ +/* computation of Pij(t) */ +/******************************************************************************/ + + +/***************************** internal functions *****************************/ + + +void elmhes(dmatrix a, ivector ordr, int n) +{ + int m, j, i; + double y, x; + + + for (i = 0; i < n; i++) + ordr[i] = 0; + for (m = 2; m < n; m++) { + x = 0.0; + i = m; + for (j = m; j <= n; j++) { + if (fabs(a[j - 1][m - 2]) > fabs(x)) { + x = a[j - 1][m - 2]; + i = j; + } + } + ordr[m - 1] = i; /* vector */ + if (i != m) { + for (j = m - 2; j < n; j++) { + y = a[i - 1][j]; + a[i - 1][j] = a[m - 1][j]; + a[m - 1][j] = y; + } + for (j = 0; j < n; j++) { + y = a[j][i - 1]; + a[j][i - 1] = a[j][m - 1]; + a[j][m - 1] = y; + } + } + if (x != 0.0) { + for (i = m; i < n; i++) { + y = a[i][m - 2]; + if (y != 0.0) { + y /= x; + a[i][m - 2] = y; + for (j = m - 1; j < n; j++) + a[i][j] -= y * a[m - 1][j]; + for (j = 0; j < n; j++) + a[j][m - 1] += y * a[j][i]; + } + } + } + } +} + + +void eltran(dmatrix a, dmatrix zz, ivector ordr, int n) +{ + int i, j, m; + + + for (i = 0; i < n; i++) { + for (j = i + 1; j < n; j++) { + zz[i][j] = 0.0; + zz[j][i] = 0.0; + } + zz[i][i] = 1.0; + } + if (n <= 2) + return; + for (m = n - 1; m >= 2; m--) { + for (i = m; i < n; i++) + zz[i][m - 1] = a[i][m - 2]; + i = ordr[m - 1]; + if (i != m) { + for (j = m - 1; j < n; j++) { + zz[m - 1][j] = zz[i - 1][j]; + zz[i - 1][j] = 0.0; + } + zz[i - 1][m - 1] = 1.0; + } + } +} + + +void mcdiv(double ar, double ai, double br, double bi, + double *cr, double *ci) +{ + double s, ars, ais, brs, bis; + + + s = fabs(br) + fabs(bi); + ars = ar / s; + ais = ai / s; + brs = br / s; + bis = bi / s; + s = brs * brs + bis * bis; + *cr = (ars * brs + ais * bis) / s; + *ci = (ais * brs - ars * bis) / s; +} + + +void hqr2(int n, int low, int hgh, dmatrix h, + dmatrix zz, dvector wr, dvector wi) +{ + int i, j, k, l=0, m, en, na, itn, its; + double p=0, q=0, r=0, s=0, t, w, x=0, y, ra, sa, vi, vr, z=0, norm, tst1, tst2; + int notlas; /* boolean */ + + + norm = 0.0; + k = 1; + /* store isolated roots and compute matrix norm */ + for (i = 0; i < n; i++) { + for (j = k - 1; j < n; j++) + norm += fabs(h[i][j]); + k = i + 1; + if (i + 1 < low || i + 1 > hgh) { + wr[i] = h[i][i]; + wi[i] = 0.0; + } + } + en = hgh; + t = 0.0; + itn = n * 30; + while (en >= low) { /* search for next eigenvalues */ + its = 0; + na = en - 1; + while (en >= 1) { + /* look for single small sub-diagonal element */ + for (l = en; l > low; l--) { + s = fabs(h[l - 2][l - 2]) + fabs(h[l - 1][l - 1]); + if (s == 0.0) + s = norm; + tst1 = s; + tst2 = tst1 + fabs(h[l - 1][l - 2]); + if (tst2 == tst1) + goto L100; + } + l = low; + L100: + x = h[en - 1][en - 1]; /* form shift */ + if (l == en || l == na) + break; + if (itn == 0) { + /* all eigenvalues have not converged */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR B TO DEVELOPERS\n\n\n"); + exit(1); + } + y = h[na - 1][na - 1]; + w = h[en - 1][na - 1] * h[na - 1][en - 1]; + /* form exceptional shift */ + if (its == 10 || its == 20) { + t += x; + for (i = low - 1; i < en; i++) + h[i][i] -= x; + s = fabs(h[en - 1][na - 1]) + fabs(h[na - 1][en - 3]); + x = 0.75 * s; + y = x; + w = -0.4375 * s * s; + } + its++; + itn--; + /* look for two consecutive small sub-diagonal elements */ + for (m = en - 2; m >= l; m--) { + z = h[m - 1][m - 1]; + r = x - z; + s = y - z; + p = (r * s - w) / h[m][m - 1] + h[m - 1][m]; + q = h[m][m] - z - r - s; + r = h[m + 1][m]; + s = fabs(p) + fabs(q) + fabs(r); + p /= s; + q /= s; + r /= s; + if (m == l) + break; + tst1 = fabs(p) * + (fabs(h[m - 2][m - 2]) + fabs(z) + fabs(h[m][m])); + tst2 = tst1 + fabs(h[m - 1][m - 2]) * (fabs(q) + fabs(r)); + if (tst2 == tst1) + break; + } + for (i = m + 2; i <= en; i++) { + h[i - 1][i - 3] = 0.0; + if (i != m + 2) + h[i - 1][i - 4] = 0.0; + } + for (k = m; k <= na; k++) { + notlas = (k != na); + if (k != m) { + p = h[k - 1][k - 2]; + q = h[k][k - 2]; + r = 0.0; + if (notlas) + r = h[k + 1][k - 2]; + x = fabs(p) + fabs(q) + fabs(r); + if (x != 0.0) { + p /= x; + q /= x; + r /= x; + } + } + if (x != 0.0) { + if (p < 0.0) /* sign */ + s = - sqrt(p * p + q * q + r * r); + else + s = sqrt(p * p + q * q + r * r); + if (k != m) + h[k - 1][k - 2] = -s * x; + else { + if (l != m) + h[k - 1][k - 2] = -h[k - 1][k - 2]; + } + p += s; + x = p / s; + y = q / s; + z = r / s; + q /= p; + r /= p; + if (!notlas) { + for (j = k - 1; j < n; j++) { /* row modification */ + p = h[k - 1][j] + q * h[k][j]; + h[k - 1][j] -= p * x; + h[k][j] -= p * y; + } + j = (en < (k + 3)) ? en : (k + 3); /* min */ + for (i = 0; i < j; i++) { /* column modification */ + p = x * h[i][k - 1] + y * h[i][k]; + h[i][k - 1] -= p; + h[i][k] -= p * q; + } + /* accumulate transformations */ + for (i = low - 1; i < hgh; i++) { + p = x * zz[i][k - 1] + y * zz[i][k]; + zz[i][k - 1] -= p; + zz[i][k] -= p * q; + } + } else { + for (j = k - 1; j < n; j++) { /* row modification */ + p = h[k - 1][j] + q * h[k][j] + r * h[k + 1][j]; + h[k - 1][j] -= p * x; + h[k][j] -= p * y; + h[k + 1][j] -= p * z; + } + j = (en < (k + 3)) ? en : (k + 3); /* min */ + for (i = 0; i < j; i++) { /* column modification */ + p = x * h[i][k - 1] + y * h[i][k] + z * h[i][k + 1]; + h[i][k - 1] -= p; + h[i][k] -= p * q; + h[i][k + 1] -= p * r; + } + /* accumulate transformations */ + for (i = low - 1; i < hgh; i++) { + p = x * zz[i][k - 1] + y * zz[i][k] + + z * zz[i][k + 1]; + zz[i][k - 1] -= p; + zz[i][k] -= p * q; + zz[i][k + 1] -= p * r; + } + } + } + } /* for k */ + } /* while infinite loop */ + if (l == en) { /* one root found */ + h[en - 1][en - 1] = x + t; + wr[en - 1] = h[en - 1][en - 1]; + wi[en - 1] = 0.0; + en = na; + continue; + } + y = h[na - 1][na - 1]; + w = h[en - 1][na - 1] * h[na - 1][en - 1]; + p = (y - x) / 2.0; + q = p * p + w; + z = sqrt(fabs(q)); + h[en - 1][en - 1] = x + t; + x = h[en - 1][en - 1]; + h[na - 1][na - 1] = y + t; + if (q >= 0.0) { /* real pair */ + if (p < 0.0) /* sign */ + z = p - fabs(z); + else + z = p + fabs(z); + wr[na - 1] = x + z; + wr[en - 1] = wr[na - 1]; + if (z != 0.0) + wr[en - 1] = x - w / z; + wi[na - 1] = 0.0; + wi[en - 1] = 0.0; + x = h[en - 1][na - 1]; + s = fabs(x) + fabs(z); + p = x / s; + q = z / s; + r = sqrt(p * p + q * q); + p /= r; + q /= r; + for (j = na - 1; j < n; j++) { /* row modification */ + z = h[na - 1][j]; + h[na - 1][j] = q * z + p * h[en - 1][j]; + h[en - 1][j] = q * h[en - 1][j] - p * z; + } + for (i = 0; i < en; i++) { /* column modification */ + z = h[i][na - 1]; + h[i][na - 1] = q * z + p * h[i][en - 1]; + h[i][en - 1] = q * h[i][en - 1] - p * z; + } + /* accumulate transformations */ + for (i = low - 1; i < hgh; i++) { + z = zz[i][na - 1]; + zz[i][na - 1] = q * z + p * zz[i][en - 1]; + zz[i][en - 1] = q * zz[i][en - 1] - p * z; + } + } else { /* complex pair */ + wr[na - 1] = x + p; + wr[en - 1] = x + p; + wi[na - 1] = z; + wi[en - 1] = -z; + } + en -= 2; + } /* while en >= low */ + /* backsubstitute to find vectors of upper triangular form */ + if (norm != 0.0) { + for (en = n; en >= 1; en--) { + p = wr[en - 1]; + q = wi[en - 1]; + na = en - 1; + if (q == 0.0) {/* real vector */ + m = en; + h[en - 1][en - 1] = 1.0; + if (na != 0) { + for (i = en - 2; i >= 0; i--) { + w = h[i][i] - p; + r = 0.0; + for (j = m - 1; j < en; j++) + r += h[i][j] * h[j][en - 1]; + if (wi[i] < 0.0) { + z = w; + s = r; + } else { + m = i + 1; + if (wi[i] == 0.0) { + t = w; + if (t == 0.0) { + tst1 = norm; + t = tst1; + do { + t = 0.01 * t; + tst2 = norm + t; + } while (tst2 > tst1); + } + h[i][en - 1] = -(r / t); + } else { /* solve real equations */ + x = h[i][i + 1]; + y = h[i + 1][i]; + q = (wr[i] - p) * (wr[i] - p) + wi[i] * wi[i]; + t = (x * s - z * r) / q; + h[i][en - 1] = t; + if (fabs(x) > fabs(z)) + h[i + 1][en - 1] = (-r - w * t) / x; + else + h[i + 1][en - 1] = (-s - y * t) / z; + } + /* overflow control */ + t = fabs(h[i][en - 1]); + if (t != 0.0) { + tst1 = t; + tst2 = tst1 + 1.0 / tst1; + if (tst2 <= tst1) { + for (j = i; j < en; j++) + h[j][en - 1] /= t; + } + } + } + } + } + } else if (q > 0.0) { + m = na; + if (fabs(h[en - 1][na - 1]) > fabs(h[na - 1][en - 1])) { + h[na - 1][na - 1] = q / h[en - 1][na - 1]; + h[na - 1][en - 1] = (p - h[en - 1][en - 1]) / + h[en - 1][na - 1]; + } else + mcdiv(0.0, -h[na - 1][en - 1], h[na - 1][na - 1] - p, q, + &h[na - 1][na - 1], &h[na - 1][en - 1]); + h[en - 1][na - 1] = 0.0; + h[en - 1][en - 1] = 1.0; + if (en != 2) { + for (i = en - 3; i >= 0; i--) { + w = h[i][i] - p; + ra = 0.0; + sa = 0.0; + for (j = m - 1; j < en; j++) { + ra += h[i][j] * h[j][na - 1]; + sa += h[i][j] * h[j][en - 1]; + } + if (wi[i] < 0.0) { + z = w; + r = ra; + s = sa; + } else { + m = i + 1; + if (wi[i] == 0.0) + mcdiv(-ra, -sa, w, q, &h[i][na - 1], + &h[i][en - 1]); + else { /* solve complex equations */ + x = h[i][i + 1]; + y = h[i + 1][i]; + vr = (wr[i] - p) * (wr[i] - p); + vr = vr + wi[i] * wi[i] - q * q; + vi = (wr[i] - p) * 2.0 * q; + if (vr == 0.0 && vi == 0.0) { + tst1 = norm * (fabs(w) + fabs(q) + fabs(x) + + fabs(y) + fabs(z)); + vr = tst1; + do { + vr = 0.01 * vr; + tst2 = tst1 + vr; + } while (tst2 > tst1); + } + mcdiv(x * r - z * ra + q * sa, + x * s - z * sa - q * ra, vr, vi, + &h[i][na - 1], &h[i][en - 1]); + if (fabs(x) > fabs(z) + fabs(q)) { + h[i + 1] + [na - 1] = (q * h[i][en - 1] - + w * h[i][na - 1] - ra) / x; + h[i + 1][en - 1] = (-sa - w * h[i][en - 1] - + q * h[i][na - 1]) / x; + } else + mcdiv(-r - y * h[i][na - 1], + -s - y * h[i][en - 1], z, q, + &h[i + 1][na - 1], &h[i + 1][en - 1]); + } + /* overflow control */ + t = (fabs(h[i][na - 1]) > fabs(h[i][en - 1])) ? + fabs(h[i][na - 1]) : fabs(h[i][en - 1]); + if (t != 0.0) { + tst1 = t; + tst2 = tst1 + 1.0 / tst1; + if (tst2 <= tst1) { + for (j = i; j < en; j++) { + h[j][na - 1] /= t; + h[j][en - 1] /= t; + } + } + } + } + } + } + } + } + /* end back substitution. vectors of isolated roots */ + for (i = 0; i < n; i++) { + if (i + 1 < low || i + 1 > hgh) { + for (j = i; j < n; j++) + zz[i][j] = h[i][j]; + } + } + /* multiply by transformation matrix to give vectors of + * original full matrix. */ + for (j = n - 1; j >= low - 1; j--) { + m = ((j + 1) < hgh) ? (j + 1) : hgh; /* min */ + for (i = low - 1; i < hgh; i++) { + z = 0.0; + for (k = low - 1; k < m; k++) + z += zz[i][k] * h[k][j]; + zz[i][j] = z; + } + } + } + return; +} + + +/* make rate matrix with 0.01 expected substitutions per unit time */ +void onepamratematrix(dmatrix a) +{ + int i, j; + double delta, temp, sum; + dvector m; + + for (i = 0; i < tpmradix; i++) + { + for (j = 0; j < tpmradix; j++) + { + a[i][j] = Freqtpm[j]*a[i][j]; + } + } + + m = new_dvector(tpmradix); + for (i = 0, sum = 0.0; i < tpmradix; i++) + { + for (j = 0, temp = 0.0; j < tpmradix; j++) + temp += a[i][j]; + m[i] = temp; /* row sum */ + sum += temp*Freqtpm[i]; /* exp. rate */ + } + delta = 0.01 / sum; /* 0.01 subst. per unit time */ + for (i = 0; i < tpmradix; i++) { + for (j = 0; j < tpmradix; j++) { + if (i != j) + a[i][j] = delta * a[i][j]; + else + a[i][j] = delta * (-m[i]); + } + } + free_dvector(m); +} + + +void eigensystem(dvector eval, dmatrix evec) +{ + dvector evali, forg; + dmatrix a, b; + ivector ordr; + int i, j, k, error; + double zero; + + + ordr = new_ivector(tpmradix); + evali = new_dvector(tpmradix); + forg = new_dvector(tpmradix); + a = new_dmatrix(tpmradix,tpmradix); + b = new_dmatrix(tpmradix,tpmradix); + + rtfdata(a, forg); /* get relative transition matrix and frequencies */ + + onepamratematrix(a); /* make 1 PAM rate matrix */ + + /* copy a to b */ + for (i = 0; i < tpmradix; i++) + for (j = 0; j < tpmradix; j++) + b[i][j] = a[i][j]; + + elmhes(a, ordr, tpmradix); /* compute eigenvalues and eigenvectors */ + eltran(a, evec, ordr, tpmradix); + hqr2(tpmradix, 1, tpmradix, a, evec, eval, evali); + + /* check eigenvalue equation */ + error = FALSE; + for (j = 0; j < tpmradix; j++) { + for (i = 0, zero = 0.0; i < tpmradix; i++) { + for (k = 0; k < tpmradix; k++) zero += b[i][k] * evec[k][j]; + zero -= eval[j] * evec[i][j]; + if (fabs(zero) > 1.0e-5) + error = TRUE; + } + } + if (error) + FPRINTF(STDOUTFILE "\nWARNING: Eigensystem doesn't satisfy eigenvalue equation!\n"); + + free_ivector(ordr); + free_dvector(evali); + free_dvector(forg); + free_dmatrix(a); + free_dmatrix(b); +} + + +void luinverse(dmatrix inmat, dmatrix imtrx, int size) +{ + double eps = 1.0e-20; /* ! */ + int i, j, k, l, maxi=0, idx, ix, jx; + double sum, tmp, maxb, aw; + ivector index; + double *wk; + dmatrix omtrx; + + + index = new_ivector(tpmradix); + omtrx = new_dmatrix(tpmradix,tpmradix); + + /* copy inmat to omtrx */ + for (i = 0; i < tpmradix; i++) + for (j = 0; j < tpmradix; j++) + omtrx[i][j] = inmat[i][j]; + + wk = (double *) malloc((unsigned)size * sizeof(double)); + aw = 1.0; + for (i = 0; i < size; i++) { + maxb = 0.0; + for (j = 0; j < size; j++) { + if (fabs(omtrx[i][j]) > maxb) + maxb = fabs(omtrx[i][j]); + } + if (maxb == 0.0) { + /* Singular matrix */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR C TO DEVELOPERS\n\n\n"); + exit(1); + } + wk[i] = 1.0 / maxb; + } + for (j = 0; j < size; j++) { + for (i = 0; i < j; i++) { + sum = omtrx[i][j]; + for (k = 0; k < i; k++) + sum -= omtrx[i][k] * omtrx[k][j]; + omtrx[i][j] = sum; + } + maxb = 0.0; + for (i = j; i < size; i++) { + sum = omtrx[i][j]; + for (k = 0; k < j; k++) + sum -= omtrx[i][k] * omtrx[k][j]; + omtrx[i][j] = sum; + tmp = wk[i] * fabs(sum); + if (tmp >= maxb) { + maxb = tmp; + maxi = i; + } + } + if (j != maxi) { + for (k = 0; k < size; k++) { + tmp = omtrx[maxi][k]; + omtrx[maxi][k] = omtrx[j][k]; + omtrx[j][k] = tmp; + } + aw = -aw; + wk[maxi] = wk[j]; + } + index[j] = maxi; + if (omtrx[j][j] == 0.0) + omtrx[j][j] = eps; + if (j != size - 1) { + tmp = 1.0 / omtrx[j][j]; + for (i = j + 1; i < size; i++) + omtrx[i][j] *= tmp; + } + } + for (jx = 0; jx < size; jx++) { + for (ix = 0; ix < size; ix++) + wk[ix] = 0.0; + wk[jx] = 1.0; + l = -1; + for (i = 0; i < size; i++) { + idx = index[i]; + sum = wk[idx]; + wk[idx] = wk[i]; + if (l != -1) { + for (j = l; j < i; j++) + sum -= omtrx[i][j] * wk[j]; + } else if (sum != 0.0) + l = i; + wk[i] = sum; + } + for (i = size - 1; i >= 0; i--) { + sum = wk[i]; + for (j = i + 1; j < size; j++) + sum -= omtrx[i][j] * wk[j]; + wk[i] = sum / omtrx[i][i]; + } + for (ix = 0; ix < size; ix++) + imtrx[ix][jx] = wk[ix]; + } + free((char *)wk); + wk = NULL; + free_ivector(index); + free_dmatrix(omtrx); +} + + +void checkevector(dmatrix evec, dmatrix ivec, int nn) +{ + int i, j, ia, ib, ic, error; + dmatrix matx; + double sum; + + + matx = new_dmatrix(nn, nn); + /* multiply matrix of eigenvectors and its inverse */ + for (ia = 0; ia < nn; ia++) { + for (ic = 0; ic < nn; ic++) { + sum = 0.0; + for (ib = 0; ib < nn; ib++) sum += evec[ia][ib] * ivec[ib][ic]; + matx[ia][ic] = sum; + } + } + /* check whether the unitary matrix is obtained */ + error = FALSE; + for (i = 0; i < nn; i++) { + for (j = 0; j < nn; j++) { + if (i == j) { + if (fabs(matx[i][j] - 1.0) > 1.0e-5) + error = TRUE; + } else { + if (fabs(matx[i][j]) > 1.0e-5) + error = TRUE; + } + } + } + if (error) { + FPRINTF(STDOUTFILE "\nWARNING: Inversion of eigenvector matrix not perfect!\n"); + } + free_dmatrix(matx); +} + + +/***************************** exported functions *****************************/ + + +/* compute 1 PAM rate matrix, its eigensystem, and the inverse matrix thereof */ +void tranprobmat() +{ + eigensystem(Eval, Evec); /* eigensystem of 1 PAM rate matrix */ + luinverse(Evec, Ievc, tpmradix); /* inverse eigenvectors are in Ievc */ + checkevector(Evec, Ievc, tpmradix); /* check whether inversion was OK */ +} + + +/* compute P(t) */ +void tprobmtrx(double arc, dmatrix tpr) +{ + register int i, j, k; + register double temp; + + + for (k = 0; k < tpmradix; k++) { + temp = exp(arc * Eval[k]); + for (j = 0; j < tpmradix; j++) + iexp[k][j] = Ievc[k][j] * temp; + } + for (i = 0; i < tpmradix; i++) { + for (j = 0; j < tpmradix; j++) { + temp = 0.0; + for (k = 0; k < tpmradix; k++) + temp += Evec[i][k] * iexp[k][j]; + tpr[i][j] = fabs(temp); + } + } +} + + +/******************************************************************************/ +/* estimation of maximum likelihood distances */ +/******************************************************************************/ + +/* compute total log-likelihood + input: likelihoods for each site and non-zero rate + output: total log-likelihood (incl. zero rate category) */ +double comptotloglkl(dmatrix cdl) +{ + int k, r; + double loglkl, fv, fv2, sitelkl; + + loglkl = 0.0; + fv = 1.0-fracinv; + fv2 = (1.0-fracinv)/(double) numcats; + + if (numcats == 1) { + + for (k = 0; k < Numptrn; k++) { + + /* compute likelihood for pattern k */ + sitelkl = cdl[0][k]*fv; + if (constpat[k] == TRUE) + sitelkl += fracinv*Freqtpm[(int) Seqpat[0][k]]; + + /* total log-likelihood */ + loglkl += log(sitelkl)*Weight[k]; + + } + + } else { + + for (k = 0; k < Numptrn; k++) { + + /* this general routine works always but it's better + to run it only when it's really necessary */ + + /* compute likelihood for pattern k */ + sitelkl = 0.0; + for (r = 0; r < numcats; r++) + sitelkl += cdl[r][k]; + sitelkl = fv2*sitelkl; + if (constpat[k] == TRUE) + sitelkl += fracinv*Freqtpm[(int) Seqpat[0][k]]; + + /* total log-likelihood */ + loglkl += log(sitelkl)*Weight[k]; + + } + + } + + return loglkl; +} + + +/* computes the site log-likelihoods + input: likelihoods for each site and non-zero rate + output: log-likelihood for each site */ +void allsitelkl(dmatrix cdl, dvector aslkl) +{ + int k, r; + double fv, fv2, sitelkl; + + fv = 1.0-fracinv; + fv2 = (1.0-fracinv)/(double) numcats; + + if (numcats == 1) { + + for (k = 0; k < Numptrn; k++) { + + /* compute likelihood for pattern k */ + sitelkl = cdl[0][k]*fv; + if (constpat[k] == TRUE) + sitelkl += fracinv*Freqtpm[(int) Seqpat[0][k]]; + + /* site log-likelihood */ + aslkl[k] = log(sitelkl); + } + + } else { + + for (k = 0; k < Numptrn; k++) { + + /* this general routine works always but it's better + to run it only when it's really necessary */ + + /* compute likelihood for pattern k */ + sitelkl = 0.0; + for (r = 0; r < numcats; r++) + sitelkl += cdl[r][k]; + sitelkl = fv2*sitelkl; + if (constpat[k] == TRUE) + sitelkl += fracinv*Freqtpm[(int) Seqpat[0][k]]; + + /* total log-likelihood */ + aslkl[k] = log(sitelkl); + + } + } +} + + +/***************************** internal functions *****************************/ + +/* compute negative log-likelihood of distance arc between sequences seqchi/j */ +double pairlkl(double arc) +{ + int k, r, ci, cj; + double loglkl, fv, sitelkl; + + + /* compute tpms */ + for (r = 0; r < numcats; r++) + /* compute tpm for rate category r */ + tprobmtrx(arc*Rates[r], ltprobr[r]); + + loglkl = 0.0; + fv = 1.0-fracinv; + + if (numcats == 1) { + + for (k = 0; k < Numptrn; k++) { + + /* compute likelihood for site k */ + ci = seqchi[k]; + cj = seqchj[k]; + if (ci != tpmradix && cj != tpmradix) + sitelkl = ltprobr[0][ci][cj]*fv; + else + sitelkl = fv; + if (ci == cj && ci != tpmradix) + sitelkl += fracinv*Freqtpm[ci]; + + /* total log-likelihood */ + loglkl += log(sitelkl)*Weight[k]; + + } + + } else { + + for (k = 0; k < Numptrn; k++) { + + /* this general routine works always but it's better + to run it only when it's really necessary */ + + /* compute likelihood for site k */ + ci = seqchi[k]; + cj = seqchj[k]; + if (ci != tpmradix && cj != tpmradix) { + sitelkl = 0.0; + for (r = 0; r < numcats; r++) + sitelkl += ltprobr[r][ci][cj]; + sitelkl = fv*sitelkl/(double) numcats; + } else + sitelkl = fv; + if (ci == cj && ci != tpmradix) + sitelkl += fracinv*Freqtpm[ci]; + + /* total log-likelihood */ + loglkl += log(sitelkl)*Weight[k]; + + } + + } + + /* return negative log-likelihood as we use a minimizing procedure */ + return -loglkl; +} + + +/***************************** exported functions *****************************/ + + +/* maximum likelihood distance between sequence i and j */ +double mldistance(int i, int j) +{ + double dist, fx, f2x; + + if (i == j) return 0.0; + + /* use old distance as start value */ + dist = Distanmat[i][j]; + + if (dist == 0.0) return 0.0; + + seqchi = Seqpat[i]; + seqchj = Seqpat[j]; + + if (dist <= MINARC) dist = MINARC+1.0; + if (dist >= MAXARC) dist = MAXARC-1.0; + + dist = onedimenmin(MINARC, dist, MAXARC, pairlkl, EPSILON, &fx, &f2x); + + return dist; +} + + +/* initialize distance matrix */ +void initdistan() +{ + int i, j, k, diff, x, y; + double obs, temp; + + for (i = 0; i < Maxspc; i++) { + Distanmat[i][i] = 0.0; + for (j = i + 1; j < Maxspc; j++) { + seqchi = Seqpat[i]; + seqchj = Seqpat[j]; + + /* count observed differences */ + diff = 0; + for (k = 0; k < Numptrn; k++) { + x = seqchi[k]; + y = seqchj[k]; + if (x != y && + x != tpmradix && + y != tpmradix) + diff += Weight[k]; + } + if (diff == 0) + Distanmat[i][j] = 0.0; + else { + /* use generalized JC correction to get first estimate + (for the SH model the observed distance is used) */ + /* observed distance */ + obs = (double) diff / (double) Maxsite; + temp = 1.0 - (double) obs*tpmradix/(tpmradix-1.0); + if (temp > 0.0 && !(data_optn == 0 && SH_optn)) + /* use JC corrected distance */ + Distanmat[i][j] = -100.0*(tpmradix-1.0)/tpmradix * log(temp); + else + /* use observed distance */ + Distanmat[i][j] = obs * 100.0; + if (Distanmat[i][j] < MINARC) Distanmat[i][j] = MINARC; + if (Distanmat[i][j] > MAXARC) Distanmat[i][j] = MAXARC; + } + Distanmat[j][i] = Distanmat[i][j]; + } + } +} + +/* compute distance matrix */ +void computedistan() +{ + int i, j; + + for (i = 0; i < Maxspc; i++) + for (j = i; j < Maxspc; j++) { + Distanmat[i][j] = mldistance(i, j); + Distanmat[j][i] = Distanmat[i][j]; + } +} + + +/******************************************************************************/ +/* computation of maximum likelihood edge lengths for a given tree */ +/******************************************************************************/ + + +/***************************** internal functions *****************************/ + + +/* multiply partial likelihoods */ +void productpartials(Node *op) +{ + Node *cp; + int i, j, r; + dcube opc, cpc; + + cp = op; + opc = op->partials; + while (cp->isop->isop != op) { + cp = cp->isop; + cpc = cp->partials; + for (r = 0; r < numcats; r++) + for (i = 0; i < Numptrn; i++) + for (j = 0; j < tpmradix; j++) + opc[r][i][j] *= cpc[r][i][j]; + } +} + + +/* compute internal partial likelihoods */ +void partialsinternal(Node *op) +{ + int i, j, k, r; + double sum; + dcube oprob, cprob; + + if (clockmode == 1) { /* clocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx((op->lengthc)*Rates[r], ltprobr[r]); + } + } else { /* non-clocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx((op->length)*Rates[r], ltprobr[r]); + } + } + + oprob = op->partials; + cprob = op->kinp->isop->partials; + for (r = 0; r < numcats; r++) { + for (k = 0; k < Numptrn; k++) { + for (i = 0; i < tpmradix; i++) { + sum = 0.0; + for (j = 0; j < tpmradix; j++) + sum += ltprobr[r][i][j] * cprob[r][k][j]; + oprob[r][k][i] = sum; + } + } + } +} + + +/* compute external partial likelihoods */ +void partialsexternal(Node *op) +{ + int i, j, k, r; + dcube oprob; + cvector dseqi; + + if (clockmode == 1) { /* clocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx((op->lengthc)*Rates[r], ltprobr[r]); + } + } else { /* nonclocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx((op->length)*Rates[r], ltprobr[r]); + } + } + + oprob = op->partials; + dseqi = op->kinp->eprob; + for (r = 0; r < numcats; r++) { + for (k = 0; k < Numptrn; k++) { + if ((j = dseqi[k]) == tpmradix) { + for (i = 0; i < tpmradix; i++) + oprob[r][k][i] = 1.0; + } else { + for (i = 0; i < tpmradix; i++) + oprob[r][k][i] = ltprobr[r][i][j]; + } + } + } +} + + +/* compute all partial likelihoods */ +void initpartials(Tree *tr) +{ + Node *cp, *rp; + + cp = rp = tr->rootp; + do { + cp = cp->isop->kinp; + if (cp->isop == NULL) { /* external node */ + cp = cp->kinp; /* not descen */ + partialsexternal(cp); + } else { /* internal node */ + if (!cp->descen) { + productpartials(cp->kinp->isop); + partialsinternal(cp); + } + } + } while (cp != rp); +} + + +/* compute log-likelihood given internal branch with length arc + between partials partiali and partials partialj */ +double intlkl(double arc) +{ + double sumlk, slk; + int r, s, i, j; + dmatrix cdl; + + cdl = Ctree->condlkl; + for (r = 0; r < numcats; r++) { + tprobmtrx(arc*Rates[r], ltprobr[r]); + } + for (r = 0; r < numcats; r++) { + for (s = 0; s < Numptrn; s++) { + sumlk = 0.0; + for (i = 0; i < tpmradix; i++) { + slk = 0.0; + for (j = 0; j < tpmradix; j++) + slk += partialj[r][s][j] * ltprobr[r][i][j]; + sumlk += Freqtpm[i] * partiali[r][s][i] * slk; + } + cdl[r][s] = sumlk; + } + } + + /* compute total log-likelihood for current tree */ + Ctree->lklhd = comptotloglkl(cdl); + + return -(Ctree->lklhd); /* we use a minimizing procedure */ +} + + +/* optimize internal branch */ +void optinternalbranch(Node *op) +{ + double arc, fx, f2x; + + partiali = op->isop->partials; + partialj = op->kinp->isop->partials; + arc = op->length; /* nonclocklike branch lengths */ + if (arc <= MINARC) arc = MINARC+1.0; + if (arc >= MAXARC) arc = MAXARC-1.0; + arc = onedimenmin(MINARC, arc, MAXARC, intlkl, EPSILON, &fx, &f2x); + op->kinp->length = arc; + op->length = arc; + + /* variance of branch length */ + f2x = fabs(f2x); + if (1.0/(MAXARC*MAXARC) < f2x) + op->varlen = 1.0/f2x; + else + op->varlen = MAXARC*MAXARC; +} + + +/* compute log-likelihood given external branch with length arc + between partials partiali and sequence seqchi */ +double extlkl(double arc) +{ + double sumlk; + int r, s, i, j; + dvector opb; + dmatrix cdl; + + cdl = Ctree->condlkl; + for (r = 0; r < numcats; r++) { + tprobmtrx(arc*Rates[r], ltprobr[r]); + } + for (r = 0; r < numcats; r++) { + for (s = 0; s < Numptrn; s++) { + opb = partiali[r][s]; + sumlk = 0.0; + if ((j = seqchi[s]) != tpmradix) { + for (i = 0; i < tpmradix; i++) + sumlk += (Freqtpm[i] * (opb[i] * ltprobr[r][i][j])); + } else { + for (i = 0; i < tpmradix; i++) + sumlk += Freqtpm[i] * opb[i]; + } + cdl[r][s] = sumlk; + } + } + + /* compute total log-likelihood for current tree */ + Ctree->lklhd = comptotloglkl(cdl); + + return -(Ctree->lklhd); /* we use a minimizing procedure */ +} + +/* optimize external branch */ +void optexternalbranch(Node *op) +{ + double arc, fx, f2x; + + partiali = op->isop->partials; + seqchi = op->kinp->eprob; + arc = op->length; /* nonclocklike branch lengths */ + if (arc <= MINARC) arc = MINARC+1.0; + if (arc >= MAXARC) arc = MAXARC-1.0; + arc = onedimenmin(MINARC, arc, MAXARC, extlkl, EPSILON, &fx, &f2x); + op->kinp->length = arc; + op->length = arc; + + /* variance of branch length */ + f2x = fabs(f2x); + if (1.0/(MAXARC*MAXARC) < f2x) + op->varlen = 1.0/f2x; + else + op->varlen = MAXARC*MAXARC; +} + + +/* finish likelihoods for each rate and site */ +void finishlkl(Node *op) +{ + int r, k, i, j; + double arc, sumlk, slk; + dmatrix cdl; + + partiali = op->isop->partials; + partialj = op->kinp->isop->partials; + cdl = Ctree->condlkl; + arc = op->length; /* nonclocklike branch lengths */ + for (r = 0; r < numcats; r++) { + tprobmtrx(arc*Rates[r], ltprobr[r]); + } + for (r = 0; r < numcats; r++) { + for (k = 0; k < Numptrn; k++) { + sumlk = 0.0; + for (i = 0; i < tpmradix; i++) { + slk = 0.0; + for (j = 0; j < tpmradix; j++) + slk += partialj[r][k][j] * ltprobr[r][i][j]; + sumlk += Freqtpm[i] * partiali[r][k][i] * slk; + } + cdl[r][k] = sumlk; + } + } +} + + +/***************************** exported functions *****************************/ + + +/* optimize branch lengths to get maximum likelihood (nonclocklike branchs) */ +double optlkl(Tree *tr) +{ + Node *cp, *rp; + int nconv; + double lendiff; + + clockmode = 0; /* nonclocklike branch lengths */ + nconv = 0; + Converg = FALSE; + initpartials(tr); + for (Numit = 1; (Numit <= MAXIT) && (!Converg); Numit++) { + + cp = rp = tr->rootp; + do { + cp = cp->isop->kinp; + productpartials(cp->kinp->isop); + if (cp->isop == NULL) { /* external node */ + cp = cp->kinp; /* not descen */ + + lendiff = cp->length; + optexternalbranch(cp); + lendiff = fabs(lendiff - cp->length); + if (lendiff < EPSILON) nconv++; + else nconv = 0; + + partialsexternal(cp); + } else { /* internal node */ + if (cp->descen) { + partialsinternal(cp); + } else { + + lendiff = cp->length; + optinternalbranch(cp); + lendiff = fabs(lendiff - cp->length); + if (lendiff < EPSILON) nconv++; + else nconv = 0; + + /* eventually compute likelihoods for each site */ + if ((cp->number == Numibrnch-1 && lendiff < EPSILON) || + Numit == MAXIT-1) finishlkl(cp); + + partialsinternal(cp); + } + } + if (nconv >= Numbrnch) { /* convergence */ + Converg = TRUE; + cp = rp; /* get out of here */ + } + } while (cp != rp); + } + + /* compute total log-likelihood for current tree */ + return comptotloglkl(tr->condlkl); +} + + +/* compute likelihood of tree for given branch lengths */ +double treelkl(Tree *tr) +{ + int i, k, r; + Node *cp; + dmatrix cdl; + dcube prob1, prob2; + double sumlk; + + /* compute for each site and rate log-likelihoods */ + initpartials(tr); + cp = tr->rootp; + productpartials(cp->isop); + prob1 = cp->partials; + prob2 = cp->isop->partials; + cdl = tr->condlkl; + for (r = 0; r < numcats; r++) { + for (k = 0; k < Numptrn; k++) { + sumlk = 0.0; + for (i = 0; i < tpmradix; i++) + sumlk += Freqtpm[i] * (prob1[r][k][i] * prob2[r][k][i]); + cdl[r][k] = sumlk; + } + } + + /* return total log-likelihood for current tree */ + return comptotloglkl(cdl); +} + + +/******************************************************************************/ +/* least-squares estimate of branch lengths */ +/******************************************************************************/ + + +/***************************** internal functions *****************************/ + + +void luequation(dmatrix amat, dvector yvec, int size) +{ + double eps = 1.0e-20; /* ! */ + int i, j, k, l, maxi=0, idx; + double sum, tmp, maxb, aw; + dvector wk; + ivector index; + + + wk = new_dvector(size); + index = new_ivector(size); + aw = 1.0; + for (i = 0; i < size; i++) { + maxb = 0.0; + for (j = 0; j < size; j++) { + if (fabs(amat[i][j]) > maxb) + maxb = fabs(amat[i][j]); + } + if (maxb == 0.0) { + /* Singular matrix */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR D TO DEVELOPERS\n\n\n"); + exit(1); + } + wk[i] = 1.0 / maxb; + } + for (j = 0; j < size; j++) { + for (i = 0; i < j; i++) { + sum = amat[i][j]; + for (k = 0; k < i; k++) + sum -= amat[i][k] * amat[k][j]; + amat[i][j] = sum; + } + maxb = 0.0; + for (i = j; i < size; i++) { + sum = amat[i][j]; + for (k = 0; k < j; k++) + sum -= amat[i][k] * amat[k][j]; + amat[i][j] = sum; + tmp = wk[i] * fabs(sum); + if (tmp >= maxb) { + maxb = tmp; + maxi = i; + } + } + if (j != maxi) { + for (k = 0; k < size; k++) { + tmp = amat[maxi][k]; + amat[maxi][k] = amat[j][k]; + amat[j][k] = tmp; + } + aw = -aw; + wk[maxi] = wk[j]; + } + index[j] = maxi; + if (amat[j][j] == 0.0) + amat[j][j] = eps; + if (j != size - 1) { + tmp = 1.0 / amat[j][j]; + for (i = j + 1; i < size; i++) + amat[i][j] *= tmp; + } + } + l = -1; + for (i = 0; i < size; i++) { + idx = index[i]; + sum = yvec[idx]; + yvec[idx] = yvec[i]; + if (l != -1) { + for (j = l; j < i; j++) + sum -= amat[i][j] * yvec[j]; + } else if (sum != 0.0) + l = i; + yvec[i] = sum; + } + for (i = size - 1; i >= 0; i--) { + sum = yvec[i]; + for (j = i + 1; j < size; j++) + sum -= amat[i][j] * yvec[j]; + yvec[i] = sum / amat[i][i]; + } + free_ivector(index); + free_dvector(wk); +} + + +/* least square estimation of branch lengths + used for the approximate ML and as starting point + in the calculation of the exact value of the ML */ +void lslength(Tree *tr, dvector distanvec, int numspc, int numibrnch, dvector Brnlength) +{ + int i, i1, j, j1, j2, k, numbrnch, numpair; + double sum, leng, alllen, rss; + ivector pths; + dmatrix atmt, atamt; + Node **ebp, **ibp; + + numbrnch = numspc + numibrnch; + numpair = (numspc * (numspc - 1)) / 2; + atmt = new_dmatrix(numbrnch, numpair); + atamt = new_dmatrix(numbrnch, numbrnch); + ebp = tr->ebrnchp; + ibp = tr->ibrnchp; + for (i = 0; i < numspc; i++) { + for (j1 = 1, j = 0; j1 < numspc; j1++) { + if (j1 == i) { + for (j2 = 0; j2 < j1; j2++, j++) { + atmt[i][j] = 1.0; + } + } else { + for (j2 = 0; j2 < j1; j2++, j++) { + if (j2 == i) + atmt[i][j] = 1.0; + else + atmt[i][j] = 0.0; + } + } + } + } + for (i1 = 0, i = numspc; i1 < numibrnch; i1++, i++) { + pths = ibp[i1]->paths; + for (j1 = 1, j = 0; j1 < numspc; j1++) { + for (j2 = 0; j2 < j1; j2++, j++) { + if (pths[j1] != pths[j2]) + atmt[i][j] = 1.0; + else + atmt[i][j] = 0.0; + } + } + } + for (i = 0; i < numbrnch; i++) { + for (j = 0; j <= i; j++) { + for (k = 0, sum = 0.0; k < numpair; k++) + sum += atmt[i][k] * atmt[j][k]; + atamt[i][j] = sum; + atamt[j][i] = sum; + } + } + for (i = 0; i < numbrnch; i++) { + for (k = 0, sum = 0.0; k < numpair; k++) + sum += atmt[i][k] * distanvec[k]; + Brnlength[i] = sum; + } + luequation(atamt, Brnlength, numbrnch); + for (i = 0, rss = 0.0; i < numpair; i++) { + sum = distanvec[i]; + for (j = 0; j < numbrnch; j++) { + if (atmt[j][i] == 1.0 && Brnlength[j] > 0.0) + sum -= Brnlength[j]; + } + rss += sum * sum; + } + tr->rssleast = sqrt(rss); + alllen = 0.0; + for (i = 0; i < numspc; i++) { + leng = Brnlength[i]; + alllen += leng; + if (leng < MINARC) leng = MINARC; + if (leng > MAXARC) leng = MAXARC; + if (clockmode) { /* clock */ + ebp[i]->lengthc = leng; + ebp[i]->kinp->lengthc = leng; + } else { /* no clock */ + ebp[i]->length = leng; + ebp[i]->kinp->length = leng; + } + Brnlength[i] = leng; + } + for (i = 0, j = numspc; i < numibrnch; i++, j++) { + leng = Brnlength[j]; + alllen += leng; + if (leng < MINARC) leng = MINARC; + if (leng > MAXARC) leng = MAXARC; + if (clockmode) { /* clock */ + ibp[i]->lengthc = leng; + ibp[i]->kinp->lengthc = leng; + } else { /* no clock */ + ibp[i]->length = leng; + ibp[i]->kinp->length = leng; + } + Brnlength[j] = leng; + } + free_dmatrix(atmt); + free_dmatrix(atamt); +} diff --git a/forester/archive/RIO/others/puzzle_mod/src/ml2.c b/forester/archive/RIO/others/puzzle_mod/src/ml2.c new file mode 100644 index 0000000..7ad780d --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/ml2.c @@ -0,0 +1,1871 @@ +/* + * ml2.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/* Modified by Christian Zmasek to: + - Names of 26 chars. + + !WARNING: Use ONLY together with FORESTER/RIO! + !For all other puposes download the excellent original! + + last modification: 05/22/01 + + + Node *internalnode(Tree *tr, char **chpp, int *ninode): + + char ident[100], idcomp[11]; -> char ident[100], idcomp[27]; + + idcomp[10] = '\0'; -> idcomp[26] = '\0'; + + } while (!stop && (ff != 10)); -> } while (!stop && (ff != 26)); + + + +*/ + + + +#define EXTERN extern + +/* prototypes */ +#include +#include +#include +#include +#include +#include "util.h" +#include "ml.h" + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, +#endif + +/* prototypes for two functions of puzzle2.c */ +void fputid10(FILE *, int); +int fputid(FILE *, int); + + +/******************************************************************************/ +/* user tree input */ +/******************************************************************************/ + +/* read user tree, drop all blanks, tabs, and newlines. + Drop edgelengths (after :) but keep internal + labels. Check whether all pairs of brackets match. */ +void getusertree(FILE *itfp, cvector tr, int maxlen) +{ + int n, brac, ci; + int comment = 0; + + /* look for opening bracket */ + n = 0; + brac = 0; + do { + ci = fgetc(itfp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing start bracket in tree)\n\n\n"); + exit(1); + } + if (ci == '[') comment = 1; + if ((ci == ']') && comment) { + comment = 0; + ci = fgetc(itfp); + } + } while (comment || ((char) ci != '(')); + tr[n] = (char) ci; + brac++; + + do { + /* get next character (skip blanks, newlines, and tabs) */ + do { + ci = fgetc(itfp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no more characters in tree)\n\n\n"); + exit(1); + } + if (ci == '[') comment = 1; + if ((ci == ']') && comment) { + comment = 0; + ci = fgetc(itfp); + } + } while (comment || (char) ci == ' ' || (char) ci == '\n' || (char) ci == '\t'); + + if ((char) ci == ':') { /* skip characters until a ,) appears */ + do { + ci = fgetc(itfp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing ';' or ',' in tree)\n\n\n"); + exit(1); + } + if (ci == '[') comment = 1; + if ((ci == ']') && comment) { + comment = 0; + ci = fgetc(itfp); + } + } while (comment || ((char) ci != ',' && (char) ci != ')') ); + } + + if ((char) ci == '(') { + brac++; + } + if ((char) ci == ')') { + brac--; + } + + n++; + tr[n] = (char) ci; + + } while (((char) ci != ';') && (n != maxlen-2)); + + if (n == maxlen-2) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (tree description too long)\n\n\n"); + exit(1); + } + + if (brac != 0) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (brackets don't match in tree)\n\n\n"); + exit(1); + } + + n++; + tr[n] = '\0'; +} + + +Node *internalnode(Tree *tr, char **chpp, int *ninode) +{ + Node *xp, *np, *rp; + int i, j, dvg, ff, stop, numc; + char ident[100], idcomp[27]; /* CZ 05/22/01 */ + char *idp; + + (*chpp)++; + if (**chpp == '(') { /* process subgroup */ + + xp = internalnode(tr, chpp, ninode); + xp->isop = xp; + dvg = 1; + while (**chpp != ')') { + if (**chpp == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + dvg++; + /* insert edges around node */ + np = internalnode(tr, chpp, ninode); + np->isop = xp->isop; + xp->isop = np; + xp = np; + } + /* closing bracket reached */ + + (*chpp)++; + if (dvg < 2) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (only one OTU inside pair of brackets)\n\n\n"); + exit(1); + } + + if ((*ninode) >= Maxspc-3) { /* all internal nodes already used */ + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no unrooted tree)\n\n\n"); + exit(1); + } + + rp = tr->ibrnchp[*ninode]; + rp->isop = xp->isop; + xp->isop = rp; + + for (j = 0; j < Numspc; j++) + rp->paths[j] = 0; + xp = rp->isop; + while (xp != rp) { + for (j = 0; j < Numspc; j++) { + if (xp->paths[j] == 1) + rp->paths[j] = 1; + } + xp = xp->isop; + } + (*ninode)++; + + if ((**chpp) == ',' || (**chpp) == ')') return rp->kinp; + if ((**chpp) == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + + /* read internal label into rp->label (max. 20 characters) */ + rp->label = new_cvector(21); + (rp->label)[0] = **chpp; + (rp->label)[1] = '\0'; + for (numc = 1; numc < 20; numc++) { + (*chpp)++; + if ((**chpp) == ',' || (**chpp) == ')') return rp->kinp; + if ((**chpp) == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + (rp->label)[numc] = **chpp; + (rp->label)[numc+1] = '\0'; + } + do { /* skip the rest of the internal label */ + (*chpp)++; + if ((**chpp) == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + } while (((**chpp) != ',' && (**chpp) != ')')); + + return rp->kinp; + + } else { /* process species names */ + /* read species name */ + for (idp = ident; **chpp != ',' && + **chpp != ')' && **chpp != '\0'; (*chpp)++) { + *idp++ = **chpp; + } + *idp = '\0'; + /* look for internal number */ + idcomp[26] = '\0'; /* CZ 05/22/01 */ + + for (i = 0; i < Maxspc; i++) { + ff = 0; + stop = FALSE; + do { + idcomp[ff] = Identif[i][ff]; + ff++; + if (idcomp[ff-1] == ' ') stop = TRUE; + } while (!stop && (ff != 26)); /* CZ 05/22/01 */ + if (stop) idcomp[ff-1] = '\0'; + + if (!strcmp(ident, idcomp)) { + if (usedtaxa[i]) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (multiple occurence of sequence '"); + FPRINTF(STDOUTFILE "%s' in tree)\n\n\n", ident); + exit(1); + } + usedtaxa[i] = TRUE; + return tr->ebrnchp[i]->kinp; + } + } + + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unknown sequence '%s' in tree)\n\n\n", ident); + exit(1); + } + return NULL; /* never returned but without some compilers complain */ +} + +/* make tree structure, the tree description may contain internal + labels but no edge lengths */ +void constructtree(Tree *tr, cvector strtree) +{ + char *chp; + int ninode, i; + int dvg, numc; + Node *xp, *np; + + ninode = 0; + chp = strtree; + usedtaxa = new_ivector(Maxspc); + for (i = 0; i < Maxspc; i++) usedtaxa[i] = FALSE; + + xp = internalnode(tr, &chp, &ninode); + xp->isop = xp; + dvg = 1; + while (*chp != ')') { /* look for closing bracket */ + if (*chp == '\0') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (unexpected end of tree)\n\n\n"); + exit(1); + } + dvg++; + /* insert edges around node */ + np = internalnode(tr, &chp, &ninode); + np->isop = xp->isop; + xp->isop = np; + xp = np; + } + + for (i = 0; i < Maxspc; i++) + if (usedtaxa[i] == FALSE) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (sequences missing in tree)\n\n\n"); + exit(1); + } + + /* closing bracket reached */ + if (dvg < 3) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no unrooted tree)\n\n\n"); + exit(1); + } + tr->rootp = xp; + Numibrnch = ninode; + Numbrnch = Numspc + ninode; + + chp++; + if (*chp == ';' || *chp == '\0') { + free_ivector(usedtaxa); + return; + } + + /* copy last internal label (max. 20 characters) */ + xp->label = new_cvector(21); + (xp->label)[0] = *chp; + (xp->label)[1] = '\0'; + for (numc = 1; numc < 20; numc++) { + chp++; + if (*chp == ';' || *chp == '\0') { + free_ivector(usedtaxa); + return; + } else { + (xp->label)[numc] = *chp; + (xp->label)[numc+1] = '\0'; + } + } + free_ivector(usedtaxa); + return; +} + + +/* remove possible basal bifurcation */ +void removebasalbif(cvector strtree) +{ + int n, c, brak, cutflag, h; + + /* check how many OTUs on basal level */ + n = 0; + c = 0; + brak = 0; + do { + if (strtree[n] == '(') brak++; + if (strtree[n] == ')') brak--; + + if (strtree[n] == ',' && brak == 1) c++; /* number of commas in outer bracket */ + + n++; + } while (strtree[n] != '\0'); + + /* if only 1 OTU inside outer bracket stop now */ + if (c == 0) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (Only 1 OTU inside outer bracket in tree)\n\n\n"); + exit(1); + } + + /* if only 2 OTUs inside outer bracket delete second pair of + brackets from the right to remove basal bifurcation */ + + if (c == 1) { + + n = 0; + brak = 0; + cutflag = 0; /* not yet cutted */ + h = 0; + do { + if (strtree[n] == '(') brak++; + if (strtree[n] == ')') brak--; + + if (brak == 2 && cutflag == 0) cutflag = 1; /* cutting */ + if (brak == 1 && cutflag == 1) { + cutflag = 2; /* cutted */ + /* leave out internal label */ + do { + h++; + } while (strtree[n+h] != ')' && strtree[n+h] != ','); + + } + + if (cutflag == 1) strtree[n] = strtree[n+1]; + if (cutflag == 2) strtree[n-1] = strtree[n+h]; + + n++; + } while (strtree[n] != '\0'); + } +} + + +void makeusertree(FILE *itfp) +{ + cvector strtree; + + strtree = new_cvector(23*Maxspc); /* for treefile */ + getusertree(itfp, strtree, 23*Maxspc); + removebasalbif(strtree); + constructtree(Ctree, strtree); + free_cvector(strtree); +} + + +/******************************************************************************/ +/* memory organisation for maximum likelihood tree */ +/******************************************************************************/ + +/* initialise new tree */ +Tree *new_tree(int maxspc, int numptrn, cmatrix seqconint) +{ + int n, i, maxibrnch; + Tree *tr; + Node *dp, *up; + + maxibrnch = maxspc - 3; + heights = (Node **) malloc((unsigned)(maxspc-2) * sizeof(Node *)); + if (heights == NULL) maerror("heights in new_tree"); + tr = (Tree *) malloc(sizeof(Tree)); + if (tr == NULL) maerror("tr in new_tree"); + tr->ebrnchp = (Node **) malloc((unsigned)maxspc * sizeof(Node *)); + if (tr->ebrnchp == NULL) maerror("ebrnchp in new_tree"); + tr->ibrnchp = (Node **) malloc((unsigned)maxibrnch * sizeof(Node *)); + if (tr->ibrnchp == NULL) maerror("ibrnchp in new_tree"); + tr->condlkl = new_dmatrix(numcats, numptrn); + for (n = 0; n < maxspc; n++) { + dp = (Node *) malloc(sizeof(Node)); + if (dp == NULL) maerror("dp in new_tree"); + up = (Node *) malloc(sizeof(Node)); + if (up == NULL) maerror("up in new_tree"); + dp->isop = NULL; + up->isop = NULL; + dp->kinp = up; + up->kinp = dp; + dp->descen = TRUE; + up->descen = FALSE; + dp->number = n; + up->number = n; + dp->length = 0.0; + up->length = 0.0; + dp->lengthc = 0.0; + up->lengthc = 0.0; + dp->varlen = 0.0; + up->varlen = 0.0; + dp->paths = new_ivector(maxspc); + up->paths = dp->paths; + for (i = 0; i < maxspc; i++) dp->paths[i] = 0; + dp->paths[n] = 1; + dp->eprob = seqconint[n]; + up->eprob = NULL; + dp->partials = NULL; + up->partials = new_dcube(numcats, numptrn, tpmradix); + tr->ebrnchp[n] = dp; + up->label = NULL; + dp->label = NULL; + } + for (n = 0; n < maxibrnch; n++) { + dp = (Node *) malloc(sizeof(Node)); + if (dp == NULL) maerror("dp in new_tree"); + up = (Node *) malloc(sizeof(Node)); + if (up == NULL) maerror("up in new_tree"); + dp->isop = NULL; + up->isop = NULL; + dp->kinp = up; + up->kinp = dp; + dp->descen = TRUE; + up->descen = FALSE; + dp->number = n; + up->number = n; + dp->length = 0.0; + up->length = 0.0; + dp->lengthc = 0.0; + up->lengthc = 0.0; + dp->varlen = 0.0; + up->varlen = 0.0; + dp->paths = new_ivector(maxspc); + up->paths = dp->paths; + for (i = 0; i < maxspc; i++) dp->paths[i] = 0; + dp->eprob = NULL; + up->eprob = NULL; + dp->partials = new_dcube(numcats, numptrn, tpmradix); + up->partials = new_dcube(numcats, numptrn, tpmradix); + tr->ibrnchp[n] = dp; + up->label = NULL; + dp->label = NULL; + } + tr->rootp = NULL; + + /* + * reserve memory for lengths of the tree branches + * and for the distance matrix as a vector + * (needed for LS estimation of tree branch lengths) + */ + + Brnlength = new_dvector(2 * maxspc - 3); + Distanvec = new_dvector((maxspc * (maxspc - 1)) / 2); + + return tr; +} + + +/* initialise quartet tree */ +Tree *new_quartet(int numptrn, cmatrix seqconint) +{ + int n, i; + Tree *tr; + Node *dp, *up; + + heights = (Node **) malloc((unsigned)2 * sizeof(Node *)); + if (heights == NULL) maerror("heights in new_quartet"); + /* reserve memory for tree */ + tr = (Tree *) malloc(sizeof(Tree)); + if (tr == NULL) maerror("tr in new_quartet"); + tr->ebrnchp = (Node **) malloc((unsigned) 4 * sizeof(Node *)); + if (tr->ebrnchp == NULL) maerror("ebrnchp in new_quartet"); + tr->ibrnchp = (Node **) malloc((unsigned) sizeof(Node *)); + if (tr->ibrnchp == NULL) maerror("ibrnchp in new_quartet"); + tr->condlkl = new_dmatrix(numcats, numptrn); + /* reserve memory for nodes */ + for (n = 0; n < 4; n++) { + dp = (Node *) malloc(sizeof(Node)); + if (dp == NULL) maerror("dp in new_quartet"); + up = (Node *) malloc(sizeof(Node)); + if (up == NULL) maerror("dp in new_quartet"); + dp->isop = NULL; + dp->kinp = up; + up->kinp = dp; + dp->descen = TRUE; + up->descen = FALSE; + dp->number = n; + up->number = n; + dp->length = 0.0; + up->length = 0.0; + dp->lengthc = 0.0; + up->lengthc = 0.0; + dp->varlen = 0.0; + up->varlen = 0.0; + dp->paths = new_ivector(4); + up->paths = dp->paths; + for (i = 0; i < 4; i++) dp->paths[i] = 0; + dp->paths[n] = 1; + dp->eprob = seqconint[n]; /* make quartet (0,1)-(2,3) as default */ + up->eprob = NULL; + dp->partials = NULL; + up->partials = new_dcube(numcats, numptrn, tpmradix); + tr->ebrnchp[n] = dp; + } + + /* reserve memory for internal branch */ + dp = (Node *) malloc(sizeof(Node)); + if (dp == NULL) maerror("dp in new_quartet"); + up = (Node *) malloc(sizeof(Node)); + if (up == NULL) maerror("dp in new_quartet"); + dp->isop = tr->ebrnchp[3]->kinp; /* connect internal branch */ + up->isop = tr->ebrnchp[0]->kinp; + dp->kinp = up; + up->kinp = dp; + dp->descen = TRUE; + up->descen = FALSE; + dp->number = 0; + up->number = 0; + dp->length = 0.0; + up->length = 0.0; + dp->lengthc = 0.0; + up->lengthc = 0.0; + dp->varlen = 0.0; + up->varlen = 0.0; + dp->paths = new_ivector(4); + up->paths = dp->paths; + up->paths[0] = 0; + up->paths[1] = 0; + up->paths[2] = 1; + up->paths[3] = 1; + dp->eprob = NULL; + up->eprob = NULL; + dp->partials = new_dcube(numcats, numptrn, tpmradix); + up->partials = new_dcube(numcats, numptrn, tpmradix); + tr->ibrnchp[0] = dp; + + /* place root */ + tr->rootp = up; + + /* connect external branches */ + tr->ebrnchp[0]->kinp->isop = tr->ebrnchp[1]->kinp; + tr->ebrnchp[1]->kinp->isop = tr->rootp; + tr->ebrnchp[3]->kinp->isop = tr->ebrnchp[2]->kinp; + tr->ebrnchp[2]->kinp->isop = tr->rootp->kinp; + + /* + * reserve memory for lengths of the five branches + * of a quartet and for the six possible distances + * (needed for LS estimation of branch lengths) + */ + Brnlength = new_dvector(NUMQBRNCH); + Distanvec = new_dvector(NUMQSPC*(NUMQSPC-1)/2); + + return tr; +} + + +/* free tree memory */ +void free_tree(Tree *tr, int taxa) +{ + int n; + Node *dp, *up; + + free(heights); + free_dmatrix(tr->condlkl); + for (n = 0; n < taxa; n++) { + dp = tr->ebrnchp[n]; + up = dp->kinp; + free_ivector(dp->paths); + free_dcube(up->partials); + free(dp); + free(up); + } + free(tr->ebrnchp); + for (n = 0; n < (taxa-3); n++) { + dp = tr->ibrnchp[n]; + up = dp->kinp; + free_dcube(dp->partials); + free_dcube(up->partials); + free_ivector(dp->paths); + free(dp); + free(up); + } + free(tr->ibrnchp); + free(tr); + free_dvector(Brnlength); /* branch lengths (for LS estimation) */ + free_dvector(Distanvec); /* distances (for LS estimation) */ +} + + +/* make (a,b)-(c,d) quartet + + a ---+ +--- c + +-----+ + b ---+ +--- d + + species numbers range from 0 to Maxspc - 1 */ + +void make_quartet(int a, int b, int c, int d) +{ + /* place sequences */ + Ctree->ebrnchp[0]->eprob = Seqpat[a]; + Ctree->ebrnchp[1]->eprob = Seqpat[b]; + Ctree->ebrnchp[2]->eprob = Seqpat[c]; + Ctree->ebrnchp[3]->eprob = Seqpat[d]; + + /* make distance vector */ + Distanvec[0] = Distanmat[b][a]; + Distanvec[1] = Distanmat[c][a]; + Distanvec[2] = Distanmat[c][b]; + Distanvec[3] = Distanmat[d][a]; + Distanvec[4] = Distanmat[d][b]; + Distanvec[5] = Distanmat[d][c]; +} + +/* write distance matrix as vector */ +void changedistan(dmatrix distanmat, dvector distanvec, int numspc) +{ + int i, j, k; + + for (k = 0, i = 1; i < numspc; i++) { + for (j = 0; j < i; j++, k++) + distanvec[k] = distanmat[i][j]; + } +} + + +/******************************************************************************/ +/* computation of maximum likelihood tree */ +/******************************************************************************/ + + +/* compute the likelihood for (a,b)-(c,d) quartet */ +double quartet_lklhd(int a, int b, int c, int d) +{ + /* reserve memory for quartet if necessary */ + if (mlmode != 1) { /* no quartet tree */ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + Ctree = new_quartet(Numptrn, Seqpat); + Numbrnch = NUMQBRNCH; + Numibrnch = NUMQIBRNCH; + Numspc = NUMQSPC; + mlmode = 1; + } + + /* make (a,b)-(c,d) quartet */ + make_quartet(a,b,c,d); + + clockmode = 0; /* nonclocklike branch lengths */ + + /* least square estimate for branch length */ + lslength(Ctree, Distanvec, Numspc, Numibrnch, Brnlength); + + /* compute likelihood */ + Ctree->lklhd = optlkl(Ctree); + + return Ctree->lklhd; +} + + +/* compute the approximate likelihood for (a,b)-(c,d) quartet */ +double quartet_alklhd(int a, int b, int c, int d) +{ + /* reserve memory for quartet if necessary */ + if (mlmode != 1) { /* no quartet tree */ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + Ctree = new_quartet(Numptrn, Seqpat); + Numbrnch = NUMQBRNCH; + Numibrnch = NUMQIBRNCH; + Numspc = NUMQSPC; + mlmode = 1; + } + + /* make (a,b)-(c,d) quartet */ + make_quartet(a,b,c,d); + + clockmode = 0; /* nonclocklike branch lengths */ + + /* least square estimate for branch length */ + lslength(Ctree, Distanvec, Numspc, Numibrnch, Brnlength); + + /* compute likelihood */ + Ctree->lklhd = treelkl(Ctree); + + return Ctree->lklhd; +} + + +/* read usertree from file to memory */ +void readusertree(FILE *ifp) +{ + /* reserve memory for tree if necessary */ + if (mlmode != 2) { /* no tree */ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + Ctree = new_tree(Maxspc, Numptrn, Seqpat); + Numbrnch = 2*Maxspc-3; + Numibrnch = Maxspc-3; + Numspc = Maxspc; + mlmode = 2; + } + + /* read tree */ + makeusertree(ifp); +} + + +/* compute the likelihood of a usertree */ +double usertree_lklhd() +{ + /* be sure to have a usertree in memory and + to have pairwise distances computed */ + + clockmode = 0; /* nonclocklike branch lengths */ + + /* least square estimate for branch length */ + changedistan(Distanmat, Distanvec, Numspc); + lslength(Ctree, Distanvec, Numspc, Numibrnch, Brnlength); + + /* compute likelihood */ + Ctree->lklhd = optlkl(Ctree); + + return Ctree->lklhd; +} + + +/* compute the approximate likelihood of a usertree */ +double usertree_alklhd() +{ + /* be sure to have a usertree in memory and + to have pairwise distances computed */ + + clockmode = 0; /* nonclocklike branch lengths */ + + /* least square estimate for branch length */ + changedistan(Distanmat, Distanvec, Numspc); + lslength(Ctree, Distanvec, Numspc, Numibrnch, Brnlength); + + /* compute likelihood */ + Ctree->lklhd = treelkl(Ctree); + + return Ctree->lklhd; +} + + +/* preparation for ML analysis */ +void mlstart() +{ + /* number of states and code length */ + tpmradix = gettpmradix(); + + /* declare variables */ + Eval = new_dvector(tpmradix); + Evec = new_dmatrix(tpmradix,tpmradix); + Ievc = new_dmatrix(tpmradix,tpmradix); + iexp = new_dmatrix(tpmradix,tpmradix); + Alias = new_ivector(Maxsite); + + /* process sequence information */ + evaluateseqs(); + bestrate = new_ivector(Numptrn); + + /* compute transition probability matrix */ + tranprobmat(); + + /* non-zero rate categories */ + Rates = new_dvector(numcats); + updaterates(); + ltprobr = new_dcube(numcats, tpmradix,tpmradix); + + /* compute distance matrix */ + Distanmat = new_dmatrix(Maxspc, Maxspc); + initdistan(); + + /* initialize tree pointer for quartet tree */ + mlmode = 1; + Ctree = new_quartet(Numptrn, Seqpat); + Numbrnch = NUMQBRNCH; + Numibrnch = NUMQIBRNCH; + Numspc = NUMQSPC; + + /* computing ML distances */ + computedistan(); +} + + +/* recompute ml distances for quartet only */ +void distupdate(int a, int b, int c, int d) +{ + /* update distance matrix */ + /* consider only entries relevant to quartet */ + Distanmat[a][b] = mldistance(a, b); + Distanmat[b][a] = Distanmat[a][b]; + Distanmat[a][c] = mldistance(a, c); + Distanmat[c][a] = Distanmat[a][c]; + Distanmat[a][d] = mldistance(a, d); + Distanmat[d][a] = Distanmat[a][d]; + Distanmat[b][c] = mldistance(b, c); + Distanmat[c][b] = Distanmat[b][c]; + Distanmat[b][d] = mldistance(b, d); + Distanmat[d][b] = Distanmat[b][d]; + Distanmat[c][d] = mldistance(c, d); + Distanmat[d][c] = Distanmat[c][d]; +} + + +/* cleanup after ML analysis */ +void mlfinish() +{ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + free_ivector(bestrate); + free_ivector(Alias); + free_cmatrix(Seqpat); + free_ivector(constpat); + free_ivector(Weight); + free_dmatrix(Distanmat); + free_dvector(Eval); + free_dmatrix(Evec); + free_dmatrix(Ievc); + free_dvector(Rates); + free_dcube(ltprobr); + free_dmatrix(iexp); +} + + +/******************************************************************************/ +/* tree output */ +/******************************************************************************/ + + +#define MAXOVER 50 +#define MAXLENG 30 +#define MAXCOLUMN 80 + + +void prbranch(Node *up, int depth, int m, int maxm, + ivector umbrella, ivector column, FILE *outfp) +{ + int i, num, n, maxn, lim; + Node *cp; + char bch; + + if ((int)((clockmode ? up->lengthc : up->length) * Proportion) >= MAXOVER) { + column[depth] = MAXLENG; + bch = '+'; + } else { + column[depth] = (int)((clockmode ? up->lengthc : up->length) * Proportion) + 3; + bch = '-'; + } + + if (up->isop == NULL) { /* external branch */ + num = up->number + 1; /* offset */ + if (m == 1) umbrella[depth - 1] = TRUE; + for (i = 0; i < depth; i++) { + if (umbrella[i]) + fprintf(outfp, "%*c", column[i], ':'); + else + fprintf(outfp, "%*c", column[i], ' '); + } + if (m == maxm) + umbrella[depth - 1] = FALSE; + for (i = 0, lim = column[depth] - 3; i < lim; i++) + fputc(bch, outfp); + fprintf(outfp, "-%d ", num); + + fputid(outfp, up->number); + + + fputc('\n', outfp); + fputc(' ', outfp); + return; + } + + num = up->number + 1 + Numspc; /* offset, internal branch */ + for (cp = up->isop, maxn = 0; cp != up; cp = cp->isop, maxn++) + ; + for (cp = up->isop, n = 1; cp != up; cp = cp->isop, n++) { + prbranch(cp->kinp, depth + 1, n, maxn, umbrella, column, outfp); + if (m == 1 && n == maxn / 2) umbrella[depth - 1] = TRUE; + if (n != maxn) { + for (i = 0; i < depth; i++) { + if (umbrella[i]) + fprintf(outfp, "%*c", column[i], ':'); + else + fprintf(outfp, "%*c", column[i], ' '); + } + if (n == maxn / 2) { /* internal branch */ + for (i = 0, lim = column[depth] - 3; i < lim; i++) + fputc(bch, outfp); + if (num < 10) + fprintf(outfp, "--%d", num); + else if (num < 100) + fprintf(outfp, "-%2d", num); + else + fprintf(outfp, "%3d", num); + } else { + if (umbrella[depth]) + fprintf(outfp, "%*c", column[depth], ':'); + else + fprintf(outfp, "%*c", column[depth], ' '); + } + fputc('\n', outfp); + fputc(' ', outfp); + } + if (m == maxm) umbrella[depth - 1] = FALSE; + } + return; +} + + +void getproportion(double *proportion, dvector distanvec, int numspc) +{ + int i, maxpair; + double maxdis; + + maxpair = (numspc*(numspc-1))/2; + + maxdis = 0.0; + for (i = 0; i < maxpair; i++) { + if (distanvec[i] > maxdis) { + maxdis = distanvec[i]; + } + } + *proportion = (double) MAXCOLUMN / (maxdis * 3.0); + if (*proportion > 1.0) *proportion = 1.0; +} + + +void prtopology(FILE *outfp) +{ + int n, maxn, depth; + ivector umbrella; + ivector column; + Node *cp, *rp; + + getproportion(&Proportion, Distanvec, Numspc); + + umbrella = new_ivector(Numspc); + column = new_ivector(Numspc); + + for (n = 0; n < Numspc; n++) { + umbrella[n] = FALSE; + column[n] = 3; + } + column[0] = 1; + + fputc(' ', outfp); + + /* original code: rp = Ctree->rootp */ + /* but we want to print the first group in the + trichotomy as outgroup at the bottom! */ + rp = Ctree->rootp->isop; + + for (maxn = 1, cp = rp->isop; cp != rp; cp = cp->isop, maxn++) + ; + depth = 1; + n = 0; + + cp = rp; + do { + cp = cp->isop; + n++; + prbranch(cp->kinp, depth, n, maxn, umbrella, column, outfp); + if (cp != rp) fprintf(outfp, "%*c\n ", column[0], ':'); + } while (cp != rp); + + free_ivector(umbrella); + free_ivector(column); +} + + +/* print unrooted tree file with branch lengths */ +void fputphylogeny(FILE *fp) +{ + Node *cp, *rp; + int n; + + cp = rp = Ctree->rootp; + putc('(', fp); + n = 1; + do { + cp = cp->isop->kinp; + if (cp->isop == NULL) { /* external node */ + if (n > 60) { + fprintf(fp, "\n"); + n = 2; + } + n += fputid(fp, cp->number); + fprintf(fp, ":%.5f", ((clockmode ? cp->lengthc : cp->length))*0.01); + n += 7; + cp = cp->kinp; + } else { /* internal node */ + if (cp->descen) { + if (n > 60) { + fprintf(fp, "\n"); + n = 1; + } + putc('(', fp); + n++; + } else { + putc(')', fp); + n++; + if (n > 60) { + fprintf(fp, "\n"); + n = 1; + } + /* internal label */ + if (cp->kinp->label != NULL) { + fprintf(fp, "%s", cp->kinp->label); + n += strlen(cp->kinp->label); + } + fprintf(fp, ":%.5f", ((clockmode ? cp->lengthc : cp->length))*0.01); + n += 7; + } + } + if (!cp->descen && !cp->isop->descen && cp != rp) { + putc(',', fp); /* not last subtree */ + n++; + } + } while (cp != rp); + fprintf(fp, ")"); + /* internal label */ + if (cp->label != NULL) + fprintf(fp, "%s", cp->label); + fprintf(fp, ";\n"); +} + + +void resulttree(FILE *outfp) +{ + int n, ne, closeflag; + Node *ep, *ip; + double blen; + + closeflag = FALSE; + + if (clockmode) { + fprintf(outfp, "\n branch length nc/c"); + fprintf(outfp, " branch length nc/c (= non-clock/clock)\n"); + } else { + fprintf(outfp, "\n branch length S.E."); + fprintf(outfp, " branch length S.E.\n"); + } + for (n = 0; n < Numspc; n++) { + ep = Ctree->ebrnchp[n]; + ne = ep->number; + fputid10(outfp, ne); + fputs(" ", outfp); + fprintf(outfp, "%3d", ne + 1); + blen = (clockmode ? ep->lengthc : ep->length); + fprintf(outfp, "%9.5f", blen*0.01); + if (blen < 5.0*MINARC || blen > 0.95*MAXARC) closeflag = TRUE; + if (clockmode) + fprintf(outfp, "%9.3f", (ep->length)/(ep->lengthc)); + else + fprintf(outfp, "%9.5f", 0.01*sqrt(ep->kinp->varlen)); + if (n < Numibrnch) { + ip = Ctree->ibrnchp[n]; + fprintf(outfp, "%8d", n + 1 + Numspc); + blen = (clockmode ? ip->lengthc : ip->length); + fprintf(outfp, "%9.5f", blen*0.01); + if (blen < 5.0*MINARC || blen > 0.95*MAXARC) closeflag = TRUE; + if (clockmode) + fprintf(outfp, "%9.3f", (ip->length)/(ip->lengthc)); + else + fprintf(outfp, "%9.5f", 0.01*sqrt(ip->kinp->varlen)); + fputc('\n', outfp); + } else { + if (n == Numspc - 3) { + fputc('\n', outfp); + } else if (n == Numspc - 2) { + if (clockmode) { + if (!Convergc) + fprintf(outfp, " No convergence after %d iterations!\n", Numitc); + else + fprintf(outfp, " %d iterations until convergence\n", Numitc); + } else { + if (!Converg) + fprintf(outfp, " No convergence after %d iterations!\n", Numit); + else + fprintf(outfp, " %d iterations until convergence\n", Numit); + } + } else if (n == Numspc - 1) { + fprintf(outfp, " log L: %.2f\n", (clockmode ? Ctree->lklhdc : Ctree->lklhd)); + } else { + fputc('\n', outfp); + } + } + } + if(closeflag) + fprintf(outfp, "\nWARNING --- at least one branch length is close to an internal boundary!\n"); +} + + +/******************************************************************************/ +/* Neighbor-joining tree */ +/******************************************************************************/ + + +/* compute NJ tree and write to file */ +void njtree(FILE *fp) +{ + /* reserve memory for tree if necessary */ + if (mlmode != 3) { /* no tree */ + if (Ctree != NULL) + free_tree(Ctree, Numspc); + Ctree = new_tree(Maxspc, Numptrn, Seqpat); + Numbrnch = 2*Maxspc-3; + Numibrnch = Maxspc-3; + Numspc = Maxspc; + mlmode = 3; + } + + /* construct NJ tree from distance matrix */ + njdistantree(Ctree); + + fputphylogeny(fp); +} + + +/* construct NJ tree from distance matrix */ +void njdistantree(Tree *tr) +{ + int i, j, otui=0, otuj=0, otuk, nsp2, cinode, step, restsp, k; + double dij, bix, bjx, bkx, sij, smax, dnsp2; + dvector r; + dmatrix distan; + Node **psotu, *cp, *ip, *jp, *kp; + + distan = new_dmatrix(Maxspc,Maxspc); + for (i = 0; i < Maxspc; i++) + for (j = 0; j < Maxspc; j++) + distan[i][j] = Distanmat[i][j]; + + nsp2 = Maxspc - 2; + dnsp2 = 1.0 / nsp2; + + r = new_dvector(Maxspc); + + psotu = (Node **) malloc((unsigned)Maxspc * sizeof(Node *)); + if (psotu == NULL) maerror("psotu in njdistantree"); + + /* external branches are start OTUs */ + for (i = 0; i < Maxspc; i++) + psotu[i] = tr->ebrnchp[i]->kinp; + + restsp = Maxspc; + cinode = 0; /* counter for internal nodes */ + + for (step = 0; restsp > 3; step++) { /* NJ clustering steps */ + + for (i = 0; i < Maxspc; i++) { + if (psotu[i] != NULL) { + for (j = 0, r[i] = 0.0; j < Maxspc; j++) + if (psotu[j] != NULL) + r[i] += distan[i][j]; + } + } + + smax = -1.0; + for (i = 0; i < Maxspc-1; i++) { + if (psotu[i] != NULL) { + + for (j = i+1; j < Maxspc; j++) { + if (psotu[j] != NULL) + { + sij = ( r[i] + r[j] ) * dnsp2 - distan[i][j]; + + if (sij > smax) { + smax = sij; + otui = i; + otuj = j; + } + } + } + } + } + + /* new pair: otui and otuj */ + + dij = distan[otui][otuj]; + bix = (dij + r[otui]/nsp2 - r[otuj]/nsp2) * 0.5; + bjx = dij - bix; + + cp = tr->ibrnchp[cinode]; + + ip = psotu[otui]; + jp = psotu[otuj]; + cp->isop = ip; + ip->isop = jp; + jp->isop = cp; + ip->length = bix; + jp->length = bjx; + ip->kinp->length = ip->length; + jp->kinp->length = jp->length; + + cp = cp->kinp; + + for (k = 0; k < Maxspc; k++) + { + if (psotu[k] != NULL && k != otui && k != otuj) + { + dij = (distan[otui][k] + distan[otuj][k] - distan[otui][otuj]) * 0.5; + distan[otui][k] = dij; + distan[k][otui] = dij; + } + } + distan[otui][otui] = 0.0; + + psotu[otui] = cp; + psotu[otuj] = NULL; + + cinode++; + + restsp--; + nsp2--; + dnsp2 = 1.0 / nsp2; + } + + otui = otuj = otuk = -1; + for (i = 0; i < Maxspc; i++) + { + if (psotu[i] != NULL) { + if (otui == -1) otui = i; + else if (otuj == -1) otuj = i; + else otuk = i; + } + } + bix = (distan[otui][otuj] + distan[otui][otuk] - distan[otuj][otuk]) * 0.5; + bjx = distan[otui][otuj] - bix; + bkx = distan[otui][otuk] - bix; + ip = psotu[otui]; + jp = psotu[otuj]; + kp = psotu[otuk]; + ip->isop = jp; + jp->isop = kp; + kp->isop = ip; + ip->length = bix; + jp->length = bjx; + kp->length = bkx; + ip->kinp->length = ip->length; + jp->kinp->length = jp->length; + kp->kinp->length = kp->length; + + tr->rootp = kp; + + free_dvector(r); + free_dmatrix(distan); + free((Node *) psotu); +} + +/******************************************************************************/ +/* find best assignment of rate categories */ +/******************************************************************************/ + +/* find best assignment of rate categories */ +void findbestratecombination() +{ + int k, u; + double bestvalue, fv2; + dvector catprob; + dmatrix cdl; + + cdl = Ctree->condlkl; + catprob = new_dvector(numcats+1); + fv2 = (1.0-fracinv)/(double) numcats; + + for (k = 0; k < Numptrn; k++) { + /* zero rate */ + if (constpat[k] == TRUE) + catprob[0] = fracinv*Freqtpm[(int) Seqpat[0][k]]; + else + catprob[0] = 0.0; + /* non-zero-rates */ + for (u = 1; u < numcats+1; u++) + catprob[u] = fv2*cdl[u-1][k]; + /* find best */ + bestvalue = catprob[0]; + bestrate[k] = 0; + for (u = 1; u < numcats+1; u++) + if (catprob[u] >= bestvalue) { + bestvalue = catprob[u]; + bestrate[k] = u; + } + } + free_dvector(catprob); + bestratefound = 1; +} + +/* print best assignment of rate categories */ +void printbestratecombination(FILE *fp) +{ + int s, k; + + for (s = 0; s < Maxsite; s++) { + k = Alias[s]; + fprintf(fp, "%2d", bestrate[k]); + if ((s+1) % 30 == 0) + fprintf(fp, "\n"); + else if ((s+1) % 10 == 0) + fprintf(fp, " "); + } + if (s % 70 != 0) + fprintf(fp, "\n"); +} + + +/******************************************************************************/ +/* computation of clocklike branch lengths */ +/******************************************************************************/ + +/* checks wether e is a valid edge specification */ +int checkedge(int e) +{ + /* there are Numspc external branches: + 0 - Numspc-1 + there are Numibrnch internal branches: + Numspc - Numspc+Numibrnch-1 + */ + + if (e < 0) return FALSE; + if (e < Numspc+Numibrnch) return TRUE; + else return FALSE; +} + +/* print topology of subtree */ +void fputsubstree(FILE *fp, Node *ip) +{ + Node *cp; + + if (ip->isop == NULL) { /* terminal nodes */ + numtc += fputid(fp, ip->number); + } else { + cp = ip; + fprintf(fp, "("); + numtc += 1; + do { + cp = cp->isop->kinp; + if (cp->isop == NULL) { /* external node */ + numtc += fputid(fp, cp->number); + fprintf(fp, ":%.5f", (cp->lengthc)*0.01); + numtc += 7; + cp = cp->kinp; + } else { /* internal node */ + if (cp->height > 0.0) { + fprintf(fp, "("); + numtc += 1; + } else if (cp->height < 0.0) { + fprintf(fp, ")"); + numtc += 1; + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + /* internal label */ + if (cp->kinp->label != NULL) { + fprintf(fp, "%s", cp->kinp->label); + numtc += strlen(cp->kinp->label); + } + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + fprintf(fp, ":%.5f", (cp->lengthc)*0.01); + numtc += 6; + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + } + } + if (cp->height <= 0.0 && cp->isop->height <= 0.0 && + cp->isop != ip) { + putc(',', fp); /* not last subtree */ + numtc += 1; + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + } + } while (cp->isop != ip); + fprintf(fp, ")"); + numtc += 1; + } + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + +} + +/* print rooted tree file */ +void fputrooted(FILE *fp, int e) +{ + Node *rootbr; + + /* to be called only after clocklike branch + lengths have been computed */ + + /* pointer to root branch */ + if (e < Numspc) rootbr = Ctree->ebrnchp[e]; + else rootbr = Ctree->ibrnchp[e - Numspc]; + + fprintf(fp, "("); + numtc = 2; + fputsubstree(fp, rootbr); + /* internal label */ + if (rootbr->label != NULL) { + fprintf(fp, "%s", rootbr->label); + numtc += strlen(rootbr->label); + } + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + fprintf(fp, ":%.5f,", (hroot - rootbr->height)*0.01); + numtc += 7; + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + fputsubstree(fp, rootbr->kinp); + /* internal label */ + if (rootbr->kinp->label != NULL) { + fprintf(fp, "%s", rootbr->kinp->label); + numtc += strlen(rootbr->kinp->label); + } + if (numtc > 60) { + fprintf(fp, "\n"); + numtc = 1; + } + fprintf(fp, ":%.5f);\n", (hroot - rootbr->kinp->height)*0.01); +} + +/* finds heights in subtree */ +void findheights(Node *ip) +{ + Node *cp, *rp; + + if (ip->isop != NULL) { /* forget terminal nodes */ + + cp = ip; + + /* initialise node */ + cp->height = 1.0; /* up */ + rp = cp; + while (rp->isop != cp) { + rp = rp->isop; + rp->height = -1.0; /* down */ + } + + do { + cp = cp->isop->kinp; + if (cp->isop == NULL) { /* external node */ + cp = cp->kinp; + } else { /* internal node */ + if (cp->height == 0.0) { /* node not yet visited */ + cp->height = 1.0; /* up */ + rp = cp; + while (rp->isop != cp) { + rp = rp->isop; + rp->height = -1.0; /* down */ + } + } else if (cp->kinp->height == 1.0) { + /* cp->kinp is next height pointer */ + heights[Numhts] = cp->kinp; + Numhts++; + } + } + } while (cp->isop != ip); + /* ip is last height pointer */ + heights[Numhts] = ip; + Numhts++; + } +} + + +/* initialise clocklike branch lengths (with root on edge e) */ +void initclock(int e) +{ + int n, h, count; + Node *cp, *rp; + double sum, minh, aveh, len; + + /* be sure to have a Ctree in memory and + to have pairwise distances computed */ + + clockmode = 1; /* clocklike branch lengths */ + + /* least square estimate for branch length */ + changedistan(Distanmat, Distanvec, Numspc); + lslength(Ctree, Distanvec, Numspc, Numibrnch, Brnlength); + + /* pointer to root branch */ + if (e < Numspc) rootbr = Ctree->ebrnchp[e]; + else rootbr = Ctree->ibrnchp[e - Numspc]; + + /* clear all heights */ + for (n = 0; n < Numspc; n++) { + Ctree->ebrnchp[n]->height = 0.0; + Ctree->ebrnchp[n]->kinp->height = 0.0; + Ctree->ebrnchp[n]->varheight = 0.0; + Ctree->ebrnchp[n]->kinp->varheight = 0.0; + if (n < Numibrnch) { + Ctree->ibrnchp[n]->height = 0.0; + Ctree->ibrnchp[n]->kinp->height = 0.0; + Ctree->ibrnchp[n]->varheight = 0.0; + Ctree->ibrnchp[n]->kinp->varheight = 0.0; + } + } + + /* collect pointers to height nodes */ + Numhts = 0; + findheights(rootbr); /* one side */ + findheights(rootbr->kinp); /* other side */ + + /* assign preliminary approximate heights and + corresponding branch lengths */ + for (h = 0; h < Numhts; h++) { + + cp = rp = heights[h]; + sum = 0; + count = 0; + minh = 0.0; + while (rp->isop != cp) { + count++; + rp = rp->isop; + sum += rp->lengthc + rp->kinp->height; + if (rp->kinp->height > minh) minh = rp->kinp->height; + } + aveh = sum / (double) count; + if (aveh < minh + MINARC) aveh = minh + MINARC; + cp->height = aveh; + rp = cp; + while (rp->isop != cp) { + rp = rp->isop; + len = aveh - rp->kinp->height; + rp->kinp->lengthc = len; + rp->lengthc = len; + } + + } + if (rootbr->height > rootbr->kinp->height) minh = rootbr->height; + else minh = rootbr->kinp->height; + aveh = 0.5*(rootbr->lengthc + rootbr->height + rootbr->kinp->height); + if (aveh < minh + MINARC) aveh = minh + MINARC; + hroot = aveh; + maxhroot = RMHROOT*hroot; /* maximal possible hroot */ + len = (hroot - rootbr->height) + (hroot - rootbr->kinp->height); + rootbr->lengthc = len; + rootbr->kinp->lengthc = len; +} + +/* approximate likelihood under the constaining assumption of + clocklike branch lengths (with root on edge e) */ +double clock_alklhd(int e) +{ + initclock(e); + Ctree->lklhdc = treelkl(Ctree); + + return Ctree->lklhdc; +} + +/* log-likelihood given height ht at node pointed to by chep */ +double heightlkl(double ht) +{ + Node *rp; + double len; + + /* adjust branch lengths */ + chep->height = ht; + /* descendent branches */ + rp = chep; + while (rp->isop != chep) { + rp = rp->isop; + len = chep->height - rp->kinp->height; + rp->kinp->lengthc = len; + rp->lengthc = len; + } + /* upward branch */ + if (chep == rootbr || chep->kinp == rootbr) { + len = (hroot - chep->height) + (hroot - chep->kinp->height); + chep->lengthc = len; + chep->kinp->lengthc = len; + } else { + rp = chep->kinp; + while (rp->isop->height <= 0.0) + rp = rp->isop; + chep->lengthc = rp->isop->height - chep->height; + chep->kinp->lengthc = rp->isop->height - chep->height; + } + + /* compute likelihood */ + Ctree->lklhdc = treelkl(Ctree); + + return -(Ctree->lklhdc); /* we use a minimizing procedure */ +} + +/* optimize current height */ +void optheight(void) +{ + double he, fx, f2x, minh, maxh, len; + Node *rp; + + /* current height */ + he = chep->height; + + /* minimum */ + minh = 0.0; + rp = chep; + while (rp->isop != chep) { + rp = rp->isop; + if (rp->kinp->height > minh) + minh = rp->kinp->height; + } + minh += MINARC; + + /* maximum */ + if (chep == rootbr || chep->kinp == rootbr) { + maxh = hroot; + } else { + rp = chep->kinp; + while (rp->isop->height <= 0.0) + rp = rp->isop; + maxh = rp->isop->height; + } + maxh -= MINARC; + + /* check borders for height */ + if (he < minh) he = minh; + if (he > maxh) he = maxh; + + /* optimization */ + if (!(he == minh && he == maxh)) + he = onedimenmin(minh, he, maxh, heightlkl, HEPSILON, &fx, &f2x); + + /* variance of height */ + f2x = fabs(f2x); + if (1.0/(maxhroot*maxhroot) < f2x) + chep->varheight = 1.0/f2x; + else + chep->varheight = maxhroot*maxhroot; + + /* adjust branch lengths */ + chep->height = he; + /* descendent branches */ + rp = chep; + while (rp->isop != chep) { + rp = rp->isop; + len = chep->height - rp->kinp->height; + rp->kinp->lengthc = len; + rp->lengthc = len; + } + /* upward branch */ + if (chep == rootbr || chep->kinp == rootbr) { + len = (hroot - chep->height) + (hroot - chep->kinp->height); + chep->lengthc = len; + chep->kinp->lengthc = len; + } else { + rp = chep->kinp; + while (rp->isop->height <= 0.0) + rp = rp->isop; + chep->lengthc = rp->isop->height - chep->height; + chep->kinp->lengthc = rp->isop->height - chep->height; + } +} + +/* log-likelihood given height ht at root */ +double rheightlkl(double ht) +{ + double len; + + /* adjust branch lengths */ + hroot = ht; + len = (hroot - rootbr->height) + (hroot - rootbr->kinp->height); + rootbr->lengthc = len; + rootbr->kinp->lengthc = len; + + /* compute likelihood */ + Ctree->lklhdc = treelkl(Ctree); + + return -(Ctree->lklhdc); /* we use a minimizing procedure */ +} + +/* optimize height of root */ +void optrheight(void) +{ + double he, fx, f2x, minh, len; + + /* current height */ + he = hroot; + + /* minimum */ + if (rootbr->height > rootbr->kinp->height) + minh = rootbr->height; + else + minh = rootbr->kinp->height; + minh += MINARC; + + /* check borders for height */ + if (he < minh) he = minh; + if (he > maxhroot) he = maxhroot; + + /* optimization */ + he = onedimenmin(minh, he, maxhroot, rheightlkl, HEPSILON, &fx, &f2x); + + /* variance of height of root */ + f2x = fabs(f2x); + if (1.0/(maxhroot*maxhroot) < f2x) + varhroot = 1.0/f2x; + else + varhroot = maxhroot*maxhroot; + + /* adjust branch lengths */ + hroot = he; + len = (hroot - rootbr->height) + (hroot - rootbr->kinp->height); + rootbr->lengthc = len; + rootbr->kinp->lengthc = len; +} + +/* exact likelihood under the constaining assumption of + clocklike branch lengths (with root on edge e) */ +double clock_lklhd(int e) +{ + int h, nconv; + double old; + + Numitc = 0; + Convergc = FALSE; + + initclock(e); + + do { + + Numitc++; + nconv = 0; + + /* optimize height of root */ + old = hroot; + optrheight(); + if (fabs(old - hroot) < HEPSILON) nconv++; + + /* optimize height of nodes */ + for (h = Numhts-1; h >= 0; h--) { + + /* pointer chep to current height node */ + chep = heights[h]; + + /* store old value */ + old = chep->height; + + /* find better height */ + optheight(); + + /* converged ? */ + if (fabs(old - chep->height) < HEPSILON) nconv++; + } + + if (nconv == Numhts+1) Convergc = TRUE; + + } while (Numitc < MAXIT && !Convergc); + + /* compute final likelihood */ + Ctree->lklhdc = treelkl(Ctree); + + return Ctree->lklhdc; +} + +/* find out the edge containing the root */ +int findrootedge() +{ + int e, ebest; + double logbest, logtest; + + /* compute the likelihood for all edges and take the edge with + best likelihood (using approximate ML) */ + + ebest = 0; + logbest = clock_alklhd(0); + numbestroot = 1; + for (e = 1; e < Numspc+Numibrnch; e++) { + logtest = clock_alklhd(e); + if (logtest > logbest) { + ebest = e; + logbest = logtest; + numbestroot = 1; + } else if (logtest == logbest) { + numbestroot++; + } + } + + return ebest; +} + +/* show heights and corresponding standard errors */ +void resultheights(FILE *fp) +{ + int h, num; + Node *cp; + + fprintf(fp, " height S.E. of node common to branches\n"); + for (h = 0; h < Numhts; h++) { + fprintf(fp, "%.5f %.5f ", (heights[h]->height)*0.01, + sqrt(heights[h]->varheight)*0.01); + cp = heights[h]; + do { + num = (cp->number) + 1; + if (cp->kinp->isop != NULL) num += Numspc; /* internal branch */ + fprintf(fp, "%d ", num); + cp = cp->isop; + } while (cp != heights[h]); + fprintf(fp, "\n"); + + } + fprintf(fp, "%.5f %.5f of root at branch %d\n", + hroot*0.01, sqrt(varhroot)*0.01, locroot+1); +} + diff --git a/forester/archive/RIO/others/puzzle_mod/src/ml3.c b/forester/archive/RIO/others/puzzle_mod/src/ml3.c new file mode 100644 index 0000000..a68a054 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/ml3.c @@ -0,0 +1,350 @@ +/* + * ml3.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#define EXTERN extern + + +/* prototypes */ +#include +#include +#include +#include "util.h" +#include "ml.h" +#include "gamma.h" + + + +/******************************************************************************/ +/* discrete Gamma-distribution and related stuff */ +/******************************************************************************/ + +/* compare general base frequencies with frequencies of taxon i with chi square */ +double homogentest(int taxon) +{ + return chi2test(Freqtpm, Basecomp[taxon], gettpmradix(), &chi2fail); +} + + +/* discrete Gamma according to Yang 1994 (JME 39:306-314) */ +void YangDiscreteGamma (double shape, int c, dvector x) +{ + double twoc, mu; + int i; + + twoc = 2.0*c; + mu = 0.0; + for (i = 0; i < c; i++) + { + /* corresponding rates */ + x[i] = icdfGamma ( (2.0*i+1.0)/twoc, shape); + mu += x[i]; + } + mu = mu/c; + + /* rescale for avarage rate of 1.0 */ + for (i = 0; i < c; i++) + { + x[i] /= mu; + } +} + +/* compute rates of each category when rates are Gamma-distributed */ +void updaterates() +{ + int i; + double alpha; + + if (numcats == 1) + { + Rates[0] = 1.0; + return; + } + if (Geta == 0.0) + { + for (i = 0; i < numcats; i++) + Rates[i] = 1.0; + return; + } + alpha = (1.0 - Geta)/Geta; + + YangDiscreteGamma (alpha, numcats, Rates); + + /* if invariable sites are present */ + for (i = 0; i < numcats; i++) + Rates[i] = Rates[i]/(1.0-fracinv); + + /* check for very small rates */ + for (i = 0; i < numcats; i++) + if (Rates[i] < 0.000001) Rates[i] = 0.000001; +} + + + +/******************************************************************************/ +/* parameter estimation */ +/******************************************************************************/ + +/* compute sample mean and standard deviation of sample mean */ +void computestat(double *data, int n, double *mean, double *err) +{ + int i; + double sum; + + sum = 0; + for (i = 0; i < n; i++) sum += data[i]; + (*mean) = sum/(double) n; + + sum = 0; + for (i = 0; i < n; i++) sum += (data[i] - (*mean))*(data[i] - (*mean)); + if (n != 1) + (*err) = sqrt(sum)/sqrt((double)(n-1)*n); /* unbiased estimator */ + else + (*err) = 0.0; /* if n == 1 */ +} + +/* compute ML value of quartet (a,b,c,d) */ +double quartetml(int a, int b, int c, int d) +{ + double d1, d2, d3; + + /* compute ML for all topologies */ + if (approxp_optn) { /* approximate parameter mode */ + d1 = quartet_alklhd(a,b,c,d); /* (a,b)-(c,d) */ + d2 = quartet_alklhd(a,c,b,d); /* (a,c)-(b,d) */ + d3 = quartet_alklhd(a,d,b,c); /* (a,d)-(b,c) */ + } else { + d1 = quartet_lklhd(a,b,c,d); /* (a,b)-(c,d) */ + d2 = quartet_lklhd(a,c,b,d); /* (a,c)-(b,d) */ + d3 = quartet_lklhd(a,d,b,c); /* (a,d)-(b,c) */ + } + + /* looking for max(d1, d2, d3) */ + if (d1 < d2) { /* d2 > d1 */ + if (d2 < d3) { /* d3 > d2 > d1 */ + /* d3 maximum */ + return d3; + } else { /* d2 >= d3 > d1 */ + /* d2 maximum */ + return d2; + } + } else { /* d1 >= d2 */ + if (d1 < d3) { /* d3 > d1 >= d2 */ + /* d3 maximum */ + return d3; + } else { /* d1 >= d2 && d1 >= d3 */ + /* d1 maximum */ + return d1; + } + } +} + +/* optimization function TSparam - quartets */ +double opttsq(double x) +{ + if (x < MINTS) TSparam = MINTS; + else if (x > MAXTS) TSparam = MAXTS; + else TSparam = x; + tranprobmat(); + distupdate(qca, qcb, qcc, qcd); + return (-quartetml(qca, qcb, qcc, qcd)); +} + +/* optimization function YRparam - quartets */ +double optyrq(double x) +{ + if (x < MINYR) YRparam = MINYR; + else if (x > MAXYR) YRparam = MAXYR; + else YRparam = x; + tranprobmat(); + distupdate(qca, qcb, qcc, qcd); + return (-quartetml(qca, qcb, qcc, qcd)); +} + +/* estimate substitution process parameters - random quartets */ +void optimseqevolparamsq() +{ + double tsmeanold, yrmeanold; + dvector tslist, yrlist; + int fin; + ivector taxon; + uli minqts, maxqts, n; + + + taxon = new_ivector(4); + + /* number of quartets to be investigated */ + minqts = (uli) floor(0.25 * MINPERTAXUM * Maxspc) + 1; + maxqts = (uli) floor(0.25 * MAXPERTAXUM * Maxspc) + 1; + if (Maxspc == 4) { + minqts = (uli) 1; + maxqts = (uli) 1; + } + + tslist = new_dvector(maxqts); + yrlist = new_dvector(maxqts); + + /* initialize averages */ + tsmean = TSparam; + yrmean = YRparam; + + fin = FALSE; + + /* investigate maxqts random quartets */ + for (n = 0; n < maxqts; n++) { + + /* choose random quartet */ + chooser(Maxspc, 4, taxon); + + /* + * optimize parameters on this quartet + */ + + qca = taxon[0]; + qcb = taxon[1]; + qcc = taxon[2]; + qcd = taxon[3]; + + /* initialize start values with average value */ + if ((SH_optn || nuc_optn) && optim_optn && (data_optn == 0)) TSparam = tsmean; + if ((nuc_optn && TN_optn) && optim_optn && (data_optn == 0)) YRparam = yrmean; + + /* estimation */ + twodimenmin(PEPS1, + (SH_optn || nuc_optn) && optim_optn && (data_optn == 0), + MINTS, &TSparam, MAXTS, opttsq, &tserr, + (nuc_optn && TN_optn) && optim_optn && (data_optn == 0), + MINYR, &YRparam, MAXYR, optyrq, &yrerr); + + + tsmeanold = tsmean; + yrmeanold = yrmean; + tslist[n] = TSparam; + yrlist[n] = YRparam; + computestat(tslist, n+1 , &tsmean, &tserr); + computestat(yrlist, n+1 , &yrmean, &yrerr); + + /* check whether the means are converging */ + if (n > minqts-2) { + if ((fabs(tsmean-tsmeanold) < TSDIFF) && + (fabs(yrmean-yrmeanold) < YRDIFF)) + fin = TRUE; + } + + /* investigate at least minqts quartets */ + if (n > minqts-2 && (fin || n > maxqts-2)) break; + } + + /* round estimated numbers to 2 digits after the decimal point */ + if (tserr != 0.0) tsmean = floor(100.0*tsmean+0.5)/100.0; + if (yrerr != 0.0) yrmean = floor(100.0*yrmean+0.5)/100.0; + + /* update ML engine */ + TSparam = tsmean; + YRparam = yrmean; + tranprobmat(); + + free_ivector(taxon); +} + +/* optimization function TSparam - tree */ +double opttst(double x) +{ + double result; + + if (x < MINTS) TSparam = MINTS; + else if (x > MAXTS) TSparam = MAXTS; + else TSparam = x; + tranprobmat(); + computedistan(); + if (approxp_optn) result = usertree_alklhd(); + else result = usertree_lklhd(); + + return (-result); +} + +/* optimization function YRparam - tree */ +double optyrt(double x) +{ + double result; + + if (x < MINYR) YRparam = MINYR; + else if (x > MAXYR) YRparam = MAXYR; + else YRparam = x; + tranprobmat(); + computedistan(); + if (approxp_optn) result = usertree_alklhd(); + else result = usertree_lklhd(); + + return (-result); +} + + +/* optimize substitution process parameters - tree */ +void optimseqevolparamst() +{ + twodimenmin(PEPS1, + (SH_optn || nuc_optn) && optim_optn && (data_optn == 0), + MINTS, &TSparam, MAXTS, opttst, &tserr, + (nuc_optn && TN_optn) && optim_optn && (data_optn == 0), + MINYR, &YRparam, MAXYR, optyrt, &yrerr); +} + + +/* optimization function fracinv */ +double optfi(double x) +{ + double result; + + if (x < MINFI) fracinv = MINFI; + else if (x > MAXFI) fracinv = MAXFI; + else fracinv = x; + + computedistan(); + if (approxp_optn) result = usertree_alklhd(); + else result = usertree_lklhd(); + + return (-result); +} + + +/* optimization function Geta */ +double optge(double x) +{ + double result; + + if (x < MINGE) Geta = MINGE; + else if (x > MAXGE) Geta = MAXGE; + else Geta = x; + + updaterates(); + + computedistan(); + if (approxp_optn) result = usertree_alklhd(); + else result = usertree_lklhd(); + + return (-result); +} + + +/* optimize rate heterogeneity parameters */ +void optimrateparams() +{ + twodimenmin(PEPS2, + fracinv_optim, + MINFI, &fracinv, fracconst, optfi, &fierr, + grate_optim, + MINGE, &Geta, MAXGE, optge, &geerr); + +} diff --git a/forester/archive/RIO/others/puzzle_mod/src/model1.c b/forester/archive/RIO/others/puzzle_mod/src/model1.c new file mode 100644 index 0000000..54fb889 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/model1.c @@ -0,0 +1,326 @@ +/* + * model1.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/* definitions */ +#define EXTERN extern + +/* prototypes */ +#include +#include "util.h" +#include "ml.h" + +/* number of states of the selected model */ +int gettpmradix() +{ + if (data_optn == 0) { /* nucleotides */ + if (nuc_optn) return 4; + if (SH_optn) return 16; + } else if (data_optn == 1) { /* amino acids */ + return 20; + } else { /* two-state model */ + return 2; + } + return 1; +} + +/* relative transition frequencies */ +void rtfdata(dmatrix q, double *f) +{ + double alp, alpy, alpr; + int i, j; + + if (data_optn == 0) + { /* nucleotides */ + + if (nuc_optn) + { /* 4x4 nucleotides */ + alp = 2.0*TSparam; + alpr = (alp * 2.0) / (YRparam + 1.0); + alpy = YRparam * alpr; + + q[0][1] = 1; q[0][2] = alpr; q[0][3] = 1; + q[1][2] = 1; q[1][3] = alpy; + q[2][3] = 1; + + f[0] = 0.25; f[1] = 0.25; f[2] = 0.25; f[3] = 0.25; + } + + if (SH_optn) + { /* 16x16 nucleotides */ + + alp = 2.0*TSparam; + + q[0][1] = 1; q[0][2] = alp; q[0][3] = 1; q[0][4] = 1; + q[0][5] = 0; q[0][6] = 0; q[0][7] = 0; q[0][8] = alp; + q[0][9] = 0; q[0][10] = 0; q[0][11] = 0; q[0][12] = 1; + q[0][13] = 0; q[0][14] = 0; q[0][15] = 0; + + q[1][2] = 1; q[1][3] = alp; q[1][4] = 0; q[1][5] = 1; + q[1][6] = 0; q[1][7] = 0; q[1][8] = 0; q[1][9] = alp; + q[1][10] = 0; q[1][11] = 0; q[1][12] = 0; q[1][13] = 1; + q[1][14] = 0; q[1][15] = 0; + + q[2][3] = 1; q[2][4] = 0; q[2][5] = 0; q[2][6] = 1; + q[2][7] = 0; q[2][8] = 0; q[2][9] = 0; q[2][10] = alp; + q[2][11] = 0; q[2][12] = 0; q[2][13] = 0; q[2][14] = 1; + q[2][15] = 0; + + q[3][4] = 0; q[3][5] = 0; q[3][6] = 0; q[3][7] = 1; + q[3][8] = 0; q[3][9] = 0; q[3][10] = 0; q[3][11] = alp; + q[3][12] = 0; q[3][13] = 0; q[3][14] = 0; q[3][15] = 1; + + q[4][5] = 1; q[4][6] = alp; q[4][7] = 1; q[4][8] = 1; + q[4][9] = 0; q[4][10] = 0; q[4][11] = 0; q[4][12] = alp; + q[4][13] = 0; q[4][14] = 0; q[4][15] = 0; + + q[5][6] = 1; q[5][7] = alp; q[5][8] = 0; q[5][9] = 1; + q[5][10] = 0; q[5][11] = 0; q[5][12] = 0; q[5][13] = alp; + q[5][14] = 0; q[5][15] = 0; + + q[6][7] = 1; q[6][8] = 0; q[6][9] = 0; q[6][10] = 1; + q[6][11] = 0; q[6][12] = 0; q[6][13] = 0; q[6][14] = alp; + q[6][15] = 0; + + q[7][8] = 0; q[7][9] = 0; q[7][10] = 0; q[7][11] = 1; + q[7][12] = 0; q[7][13] = 0; q[7][14] = 0; q[7][15] = alp; + + q[8][9] = 1; q[8][10] = alp; q[8][11] = 1; q[8][12] = 1; + q[8][13] = 0; q[8][14] = 0; q[8][15] = 0; + + q[9][10] = 1; q[9][11] = alp; q[9][12] = 0; q[9][13] = 1; + q[9][14] = 0; q[9][15] = 0; + + q[10][11] = 1; q[10][12] = 0; q[10][13] = 0; q[10][14] = 1; + q[10][15] = 0; + + q[11][12] = 0; q[11][13] = 0; q[11][14] = 0; q[11][15] = 1; + + q[12][13] = 1; q[12][14] = alp; q[12][15] = 1; + + q[13][14] = 1; q[13][15] = alp; + + q[14][15] = 1; + + + for (i = 0; i < 16; i++) f[i] = 0.0625; + } + } + else if (data_optn == 1) + { /* amino acids */ + if (Dayhf_optn) /* Dayhoff model */ + { + dyhfdata(q, f); + } + else if (Jtt_optn) /* JTT model */ + { + jttdata(q, f); + } + else if (blosum62_optn) /* BLOSUM 62 model */ + { + blosum62data(q, f); + } + else if (mtrev_optn) /* mtREV model */ + { + mtrevdata(q, f); + } + else if (cprev_optn) /* cpREV model */ + { + cprev45data(q, f); + } + else if (vtmv_optn) /* VT model */ + { + vtmvdata(q, f); + } + else /* if (wag_optn) */ /* WAG model */ + { + wagdata(q, f); + } + + } + else /* two-state model */ + { + q[0][1] = 1.0; + + f[0] = 0.5; f[1] = 0.5; + } + + /* fill matrix from upper triangle */ + for (i = 0; i < tpmradix; i++) + { + q[i][i] = 0.0; + for (j = i+1; j < tpmradix; j++) + { + q[j][i] = q[i][j]; + } + } +} + +/* transform letter codes to state numbers */ +int code2int(cvector c) +{ if (data_optn == 0) { /* nucleotides */ + if (nuc_optn) { /* 4x4 */ + switch (c[0]) { + case 'A': return 0; + case 'C': return 1; + case 'G': return 2; + case 'T': return 3; + case 'U': return 3; + default : return 4; + } + } + if (SH_optn) { /* 16x16 */ + if (c[0] == 'A') { + switch (c[1]) { + case 'A': return 0; /* AA */ + case 'C': return 1; /* AC */ + case 'G': return 2; /* AG */ + case 'T': return 3; /* AT */ + case 'U': return 3; /* AT */ + default: return 16; + } + } + if (c[0] == 'C') { + switch (c[1]) { + case 'A': return 4; /* CA */ + case 'C': return 5; /* CC */ + case 'G': return 6; /* CG */ + case 'T': return 7; /* CT */ + case 'U': return 7; /* CT */ + default: return 16; + } + } + if (c[0] == 'G') { + switch (c[1]) { + case 'A': return 8; /* GA */ + case 'C': return 9; /* GC */ + case 'G': return 10; /* GG */ + case 'T': return 11; /* GT */ + case 'U': return 11; /* GT */ + default: return 16; + } + } + if (c[0] == 'T' || c[0] == 'U') { + switch (c[1]) { + case 'A': return 12; /* TA */ + case 'C': return 13; /* TC */ + case 'G': return 14; /* TG */ + case 'T': return 15; /* TT */ + case 'U': return 15; /* TT */ + default: return 16; + } + } + return 16; + } + } else if (data_optn == 1) { /* amino acids */ + switch (c[0]) { + case 'A': return 0; + case 'C': return 4; + case 'D': return 3; + case 'E': return 6; + case 'F': return 13; + case 'G': return 7; + case 'H': return 8; + case 'I': return 9; + case 'K': return 11; + case 'L': return 10; + case 'M': return 12; + case 'N': return 2; + case 'P': return 14; + case 'Q': return 5; + case 'R': return 1; + case 'S': return 15; + case 'T': return 16; + case 'V': return 19; + case 'W': return 17; + case 'Y': return 18; + default : return 20; + } + } else { /* two-state model */ + switch (c[0]) { + case '0': return 0; + case '1': return 1; + default : return 2; + } + } + return 0; +} + +/* return letter code belonging to state number */ +char *int2code(int s) +{ + if (data_optn == 0) { /* nucleotides */ + if (nuc_optn) { /* 4x4 */ + switch (s) { + case 0: return "A"; + case 1: return "C"; + case 2: return "G"; + case 3: return "T"; + default : return "?"; + } + } + if (SH_optn) { /* 16x16 */ + switch (s) { + case 0: return "AA"; + case 1: return "AC"; + case 2: return "AG"; + case 3: return "AT"; + case 4: return "CA"; + case 5: return "CC"; + case 6: return "CG"; + case 7: return "CT"; + case 8: return "GA"; + case 9: return "GC"; + case 10: return "GG"; + case 11: return "GT"; + case 12: return "TA"; + case 13: return "TC"; + case 14: return "TG"; + case 15: return "TT"; + default : return "??"; + } + } + } else if (data_optn == 1) { /* amino acids */ + switch (s) { + case 0: return "A"; + case 1: return "R"; + case 2: return "N"; + case 3: return "D"; + case 4: return "C"; + case 5: return "Q"; + case 6: return "E"; + case 7: return "G"; + case 8: return "H"; + case 9: return "I"; + case 10: return "L"; + case 11: return "K"; + case 12: return "M"; + case 13: return "F"; + case 14: return "P"; + case 15: return "S"; + case 16: return "T"; + case 17: return "W"; + case 18: return "Y"; + case 19: return "V"; + default : return "?"; + } + } else { /* two-state model */ + switch (s) { + case 0: return "0"; + case 1: return "1"; + default : return "?"; + } + } + return "?"; +} diff --git a/forester/archive/RIO/others/puzzle_mod/src/model2.c b/forester/archive/RIO/others/puzzle_mod/src/model2.c new file mode 100644 index 0000000..9e2197f --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/model2.c @@ -0,0 +1,1125 @@ +/* + * model2.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/* definitions */ +#define EXTERN extern + +/* prototypes */ +#include +#include "util.h" +#include "ml.h" + + +void jttdata(dmatrix q, double *f) +{ + /* + * JTT model for amino acid evolution + * D.T. Jones, W.R. Taylor, and J.M. Thornton + * "The rapid generation of mutation data matrices from protein sequences" + * CABIOS vol. 8 no. 3 1992 pp. 275-282 + */ + + q[0][1]=3.1628651460584e+00; q[0][2]=3.2804935927860e+00; + q[0][3]=4.8477237048666e+00; q[0][4]=3.4612244897959e+00; + q[0][5]=3.3130910900946e+00; q[0][6]=6.3199473337722e+00; + q[0][7]=1.0440154440154e+01; q[0][8]=1.3061224489796e+00; + q[0][9]=2.1726844583987e+00; q[0][10]=1.8443597219107e+00; + q[0][11]=2.2137668626773e+00; q[0][12]=2.7210884353741e+00; + q[0][13]=8.3265306122449e-01; q[0][14]=1.1537414965986e+01; + q[0][15]=2.2838213546288e+01; q[0][16]=2.7007955724663e+01; + q[0][17]=5.1311953352770e-01; q[0][18]=8.3673469387755e-01; + q[0][19]=1.7474335188621e+01; + + q[1][2]=2.6598918637222e+00; q[1][3]=9.1014867485456e-01; + q[1][4]=6.1624649859944e+00; q[1][5]=1.8036482885837e+01; + q[1][6]=1.8924731182796e+00; q[1][7]=8.1810886516769e+00; + q[1][8]=1.9119717452198e+01; q[1][9]=1.4410687351864e+00; + q[1][10]=2.2211961707760e+00; q[1][11]=3.9239234676922e+01; + q[1][12]=2.5060690943044e+00; q[1][13]=3.9439775910364e-01; + q[1][14]=4.1953094963476e+00; q[1][15]=5.9016766126741e+00; + q[1][16]=3.8437069743152e+00; q[1][17]=7.6766706682673e+00; + q[1][18]=1.4173669467787e+00; q[1][19]=1.0308123249300e+00; + + q[2][3]=3.2226935854843e+01; q[2][4]=1.8710963455150e+00; + q[2][5]=4.5351268130622e+00; q[2][6]=3.3951344979102e+00; + q[2][7]=4.5987249708180e+00; q[2][8]=2.3693774375271e+01; + q[2][9]=2.9235880398671e+00; q[2][10]=8.0960899565551e-01; + q[2][11]=1.5024269384537e+01; q[2][12]=1.9003322259136e+00; + q[2][13]=4.3853820598007e-01; q[2][14]=7.1083317047749e-01; + q[2][15]=2.9456208772690e+01; q[2][16]=1.3735908553410e+01; + q[2][17]=1.6706217370669e-01; q[2][18]=4.1661129568106e+00; + q[2][19]=9.7452934662237e-01; + + q[3][4]=6.2857142857143e-01; q[3][5]=3.0662020905923e+00; + q[3][6]=4.5450549450549e+01; q[3][7]=7.5402435402435e+00; + q[3][8]=6.0544672718586e+00; q[3][9]=6.8808114961961e-01; + q[3][10]=3.6130902064968e-01; q[3][11]=1.6718197057180e+00; + q[3][12]=1.0879120879121e+00; q[3][13]=1.9340659340659e-01; + q[3][14]=7.3949579831933e-01; q[3][15]=3.4196528109572e+00; + q[3][16]=2.4749487800335e+00; q[3][17]=3.4536891679749e-01; + q[3][18]=2.6895604395604e+00; q[3][19]=1.8608058608059e+00; + + q[4][5]=5.5191637630662e-01; q[4][6]=3.2442396313364e-01; + q[4][7]=3.3297297297297e+00; q[4][8]=4.3726708074534e+00; + q[4][9]=9.1868131868132e-01; q[4][10]=9.9466248037677e-01; + q[4][11]=2.9830508474576e-01; q[4][12]=2.4095238095238e+00; + q[4][13]=4.1485714285714e+00; q[4][14]=7.3949579831933e-01; + q[4][15]=1.2862939958592e+01; q[4][16]=2.8125907990315e+00; + q[4][17]=6.8244897959184e+00; q[4][18]=1.2885714285714e+01; + q[4][19]=3.7714285714286e+00; + + q[5][6]=2.0316061593796e+01; q[5][7]=1.3922214897825e+00; + q[5][8]=3.3861536130889e+01; q[5][9]=4.7172339855267e-01; + q[5][10]=4.2320327755868e+00; q[5][11]=1.7835941652395e+01; + q[5][12]=2.6573751451800e+00; q[5][13]=2.7595818815331e-01; + q[5][14]=9.4992143198743e+00; q[5][15]=3.2350653941322e+00; + q[5][16]=3.0973838067678e+00; q[5][17]=1.0512692882031e+00; + q[5][18]=1.5331010452962e+00; q[5][19]=1.0778164924506e+00; + + q[6][7]=6.6857641051189e+00; q[6][8]=1.4458024443999e+00; + q[6][9]=6.7068415455512e-01; q[6][10]=5.7932850559579e-01; + q[6][11]=1.0365070686558e+01; q[6][12]=1.0138248847926e+00; + q[6][13]=2.6359447004608e-01; q[6][14]=1.1291226167887e+00; + q[6][15]=1.8337006611901e+00; q[6][16]=1.9520424900414e+00; + q[6][17]=6.9519420671494e-01; q[6][18]=3.8018433179723e-01; + q[6][19]=2.7772657450077e+00; + + q[7][8]=1.2113479939567e+00; q[7][9]=3.2670032670033e-01; + q[7][10]=4.1817641817642e-01; q[7][11]=1.6354950592239e+00; + q[7][12]=7.6447876447876e-01; q[7][13]=3.0579150579151e-01; + q[7][14]=1.2391551215081e+00; q[7][15]=1.1138492529797e+01; + q[7][16]=1.8888816176952e+00; q[7][17]=3.3491450634308e+00; + q[7][18]=3.1853281853282e-01; q[7][19]=2.8416988416988e+00; + + q[8][9]=1.0931677018634e+00; q[8][10]=3.2194389461470e+00; + q[8][11]=3.1498052426571e+00; q[8][12]=1.9130434782609e+00; + q[8][13]=2.7329192546584e+00; q[8][14]=6.7304834977469e+00; + q[8][15]=4.3726708074534e+00; q[8][16]=2.8162964522581e+00; + q[8][17]=7.8083407275954e-01; q[8][18]=3.5118012422360e+01; + q[8][19]=7.2877846790890e-01; + + q[9][10]=1.4069798333535e+01; q[9][11]=1.2292791953809e+00; + q[9][12]=2.8366300366300e+01; q[9][13]=4.7384615384615e+00; + q[9][14]=5.8780435251023e-01; q[9][15]=2.4105749323141e+00; + q[9][16]=1.5243062022723e+01; q[9][17]=8.2888540031397e-01; + q[9][18]=1.8434065934066e+00; q[9][19]=5.7699633699634e+01; + + q[10][11]=8.8039805231089e-01; q[10][12]=2.2425954997384e+01; + q[10][13]=1.5099529042386e+01; q[10][14]=6.2626896912611e+00; + q[10][15]=3.4917298022888e+00; q[10][16]=1.6109411169944e+00; + q[10][17]=3.2366001345593e+00; q[10][18]=1.4505494505495e+00; + q[10][19]=1.0557823129252e+01; + + q[11][12]=3.6577885391445e+00; q[11][13]=1.4915254237288e-01; + q[11][14]=1.2868062479229e+00; q[11][15]=2.8162964522581e+00; + q[11][16]=5.7494151926786e+00; q[11][17]=5.4790729851263e-01; + q[11][18]=5.3268765133172e-01; q[11][19]=7.4899112187248e-01; + + q[12][13]=2.5666666666667e+00; q[12][14]=9.4491129785247e-01; + q[12][15]=1.6397515527950e+00; q[12][16]=1.2180790960452e+01; + q[12][17]=1.1972789115646e+00; q[12][18]=1.1130952380952e+00; + q[12][19]=1.7746031746032e+01; + + q[13][14]=8.8739495798319e-01; q[13][15]=5.6298136645963e+00; + q[13][16]=8.3099273607748e-01; q[13][17]=3.3224489795918e+00; + q[13][18]=3.3392857142857e+01; q[13][19]=3.6000000000000e+00; + + q[14][15]=1.6261762676085e+01; q[14][16]=6.8852490148602e+00; + q[14][17]=4.2256902761104e-01; q[14][18]=6.7787114845938e-01; + q[14][19]=1.2549019607843e+00; + + q[15][16]=2.7891216619293e+01; q[15][17]=1.8740017746229e+00; + q[15][18]=3.7349896480331e+00; q[15][19]=2.4182194616977e+00; + + q[16][17]=4.8702870978900e-01; q[16][18]=1.1985472154964e+00; + q[16][19]=6.7925746569814e+00; + + q[17][18]=4.6020408163265e+00; q[17][19]=1.4693877551020e+00; + + q[18][19]=1.0000000000000e+00; + + + f[0] = 0.077; f[1] = 0.051; f[2] = 0.043; f[3] = 0.052; + f[4] = 0.02; f[5] = 0.041; f[6] = 0.062; f[7] = 0.074; + f[8] = 0.023; f[9] = 0.052; f[10] = 0.091; f[11] = 0.059; + f[12] = 0.024; f[13] = 0.04; f[14] = 0.051; f[15] = 0.069; + f[16] = 0.059; f[17] = 0.014; f[18] = 0.032; f[19] = 0.066; +} + +void dyhfdata(dmatrix q, double *f) +{ + /* + * Dayhoff model for amino acid evolution + * Dayhoff, M.O., Schwartz, R.M., Orcutt, B.C. (1978) + * "A model of evolutionary change in proteins." + * Dayhoff, M.O. (ed.) Atlas of Protein Sequence Structur., Vol5, Suppl. 3, + * National Biomedical Research Foundation, Washington DC, pp. 345-352. + */ + + q[0][1]=9.6472567159749e-01; q[0][2]=3.5927991886410e+00; + q[0][3]=4.3200552414656e+00; q[0][4]=1.3184584178499e+00; + q[0][5]=3.2267534963169e+00; q[0][6]=7.0141987829615e+00; + q[0][7]=8.5773867857875e+00; q[0][8]=8.1434196396611e-01; + q[0][9]=2.3518447453539e+00; q[0][10]=1.4735711728911e+00; + q[0][11]=9.3940162271805e-01; q[0][12]=2.5490196078431e+00; + q[0][13]=6.5922920892495e-01; q[0][14]=8.9189834148670e+00; + q[0][15]=1.4540712836859e+01; q[0][16]=1.3411904595370e+01; + q[0][17]=3.8517964118027e-02; q[0][18]=8.7897227856660e-01; + q[0][19]=7.4036511156187e+00; + + q[1][2]=1.1890243902439e+00; q[1][3]=5.9525626545377e-02; + q[1][4]=8.4778922655537e-01; q[1][5]=8.8348561504191e+00; + q[1][6]=5.5954088952654e-02; q[1][7]=3.1434881434075e-01; + q[1][8]=8.4753987678285e+00; q[1][9]=2.2684090115941e+00; + q[1][10]=5.5954088952654e-01; q[1][11]=1.6681312769010e+01; + q[1][12]=3.1707317073171e+00; q[1][13]=4.8959827833572e-01; + q[1][14]=3.6754156468900e+00; q[1][15]=5.4755072760812e+00; + q[1][16]=9.6472567159749e-01; q[1][17]=7.5538020086083e+00; + q[1][18]=2.7977044476327e-01; q[1][19]=8.6083213773314e-01; + + q[2][3]=3.2459324155194e+01; q[2][4]=7.3852625416383e-02; + q[2][5]=3.7732198142415e+00; q[2][6]=5.3911764705882e+00; + q[2][7]=5.0264375413087e+00; q[2][8]=1.9061418685121e+01; + q[2][9]=2.7901430842607e+00; q[2][10]=1.2482698961938e+00; + q[2][11]=1.1542279411765e+01; q[2][12]=1.9117647058824e-01; + q[2][13]=5.0183823529412e-01; q[2][14]=1.5181660899654e+00; + q[2][15]=1.7697478991597e+01; q[2][16]=8.3557302231237e+00; + q[2][17]=8.6029411764706e-01; q[2][18]=3.4411764705882e+00; + q[2][19]=5.7352941176471e-01; + + q[3][4]=2.5534152404601e-02; q[3][5]=4.8811013767209e+00; + q[3][6]=4.0561952440551e+01; q[3][7]=4.4423506911730e+00; + q[3][8]=3.0865788117500e+00; q[3][9]=8.5749078239692e-01; + q[3][10]=2.5926985518518e-02; q[3][11]=2.5930851063830e+00; + q[3][12]=1.1667143483333e-01; q[3][13]=1.2963492759259e-02; + q[3][14]=4.7853935065891e-01; q[3][15]=3.4167709637046e+00; + q[3][16]=2.3984722282163e+00; q[3][17]=3.2408731898147e-02; + q[3][18]=8.1351689612015e-02; q[3][19]=6.3829787234043e-01; + + q[4][5]=2.1864264103535e-02; q[4][6]=1.4770525083277e-02; + q[4][7]=3.9055458751427e-01; q[4][8]=1.0223340673168e+00; + q[4][9]=1.5970515970516e+00; q[4][10]=3.9098448749850e-02; + q[4][11]=8.0776309049169e-03; q[4][12]=1.4155086538140e-01; + q[4][13]=8.6898395721925e-02; q[4][14]=6.8155604487784e-01; + q[4][15]=5.8097784568373e+00; q[4][16]=5.9929928084086e-01; + q[4][17]=3.4759358288770e-01; q[4][18]=3.4759358288770e+00; + q[4][19]=1.7647058823529e+00; + + q[5][6]=2.5476780185759e+01; q[5][7]=1.0174974779977e+00; + q[5][8]=2.1573939173192e+01; q[5][9]=6.5266504894988e-01; + q[5][10]=2.6634492806410e+00; q[5][11]=5.5466331269350e+00; + q[5][12]=4.0247678018576e+00; q[5][13]=1.8038017885416e-02; + q[5][14]=5.5044618466582e+00; q[5][15]=2.0267580716497e+00; + q[5][16]=1.9256432155439e+00; q[5][17]=9.6202762055552e-02; + q[5][18]=1.0061919504644e-01; q[5][19]=1.2538699690402e+00; + + q[6][7]=2.8869795109055e+00; q[6][8]=1.5519031141869e+00; + q[6][9]=2.1701112877583e+00; q[6][10]=4.0484429065744e-01; + q[6][11]=2.9823529411765e+00; q[6][12]=1.0705882352941e+00; + q[6][13]=1.9801735189768e-02; q[6][14]=1.7993079584775e+00; + q[6][15]=2.8184873949580e+00; q[6][16]=1.2261663286004e+00; + q[6][17]=7.3114099162219e-02; q[6][18]=7.6470588235294e-01; + q[6][19]=1.3058823529412e+00; + + q[7][8]=3.7906768788150e-01; q[7][9]=2.3128004846840e-02; + q[7][10]=2.5776602775942e-01; q[7][11]=9.6662260409782e-01; + q[7][12]=6.0145406477198e-01; q[7][13]=5.4775280898876e-01; + q[7][14]=1.2382877804129e+00; q[7][15]=8.2853366065527e+00; + q[7][16]=1.1110604644803e+00; q[7][17]=1.2888301387971e-01; + q[7][18]=1.7114723586662e-02; q[7][19]=1.9233311302049e+00; + + q[8][9]=2.7354343963341e-01; q[8][10]=1.5876246692449e+00; + q[8][11]=9.6993944636678e-01; q[8][12]=1.2544085640577e-01; + q[8][13]=1.6868512110727e+00; q[8][14]=3.3075513942601e+00; + q[8][15]=1.2530894710826e+00; q[8][16]=8.1434196396611e-01; + q[8][17]=1.0121107266436e+00; q[8][18]=4.4982698961938e+00; + q[8][19]=1.5570934256055e+00; + + q[9][10]=9.2275320303002e+00; q[9][11]=1.6663354531002e+00; + q[9][12]=1.1780604133545e+01; q[9][13]=6.9753577106518e+00; + q[9][14]=4.2551201720752e-01; q[9][15]=8.8575970928912e-01; + q[9][16]=6.8951811852420e+00; q[9][17]=9.8802836705702e-02; + q[9][18]=1.3434022257552e+00; q[9][19]=3.1526232114467e+01; + + q[10][11]=6.5787197231834e-01; q[10][12]=1.8622837370242e+01; + q[10][13]=5.6340830449827e+00; q[10][14]=1.1377976796255e+00; + q[10][15]=6.1690558576372e-01; q[10][16]=1.2098794893211e+00; + q[10][17]=1.7543252595156e+00; q[10][18]=1.0346020761246e+00; + q[10][19]=6.2906574394464e+00; + + q[11][12]=8.6029411764706e+00; q[11][13]=6.6640454965565e-03; + q[11][14]=1.2089100346021e+00; q[11][15]=3.4411764705882e+00; + q[11][16]=4.9442190669371e+00; q[11][17]=3.4272233982290e-02; + q[11][18]=4.7794117647059e-01; q[11][19]=3.7500000000000e-01; + + q[12][13]=3.2500000000000e+00; q[12][14]=5.9976931949250e-01; + q[12][15]=2.1848739495798e+00; q[12][16]=3.6916835699797e+00; + q[12][17]=1.6247577591604e-01; q[12][18]=1.1508700794053e-01; + q[12][19]=9.0588235294118e+00; + + q[13][14]=3.9359861591695e-01; q[13][15]=1.6386554621849e+00; + q[13][16]=4.9442190669371e-01; q[13][17]=2.8676470588235e+00; + q[13][18]=2.4852941176471e+01; q[13][19]=4.4117647058824e-01; + + q[14][15]=8.6431043005437e+00; q[14][16]=2.8308077795013e+00; + q[14][17]=3.5840244687362e-02; q[14][18]=4.3804743506776e-02; + q[14][19]=1.7301038062284e+00; + + q[15][16]=1.9663865546218e+01; q[15][17]=2.7857142857143e+00; + q[15][18]=1.2016806722689e+00; q[15][19]=1.0840336134454e+00; + + q[16][17]=4.2019597219666e-02; q[16][18]=1.5162271805274e+00; + q[16][19]=5.6592292089249e+00; + + q[17][18]=2.2941176470588e+00; q[17][19]=1.2654363316538e-01; + + q[18][19]=1.0000000000000e+00; + + + f[0] = 0.087; f[1] = 0.041; f[2] = 0.040; f[3] = 0.047; + f[4] = 0.033; f[5] = 0.038; f[6] = 0.05; f[7] = 0.089; + f[8] = 0.034; f[9] = 0.037; f[10] = 0.085; f[11] = 0.08; + f[12] = 0.015; f[13] = 0.04; f[14] = 0.051; f[15] = 0.07; + f[16] = 0.058; f[17] = 0.01; f[18] = 0.03; f[19] = 0.065; +} + +void mtrevdata(dmatrix q, double *f) +{ + /* + * mtREV24 model of amino acid evolution + * (complete sequence data of mtDNA from 24 vertebrate species) + * Adachi, J. and Hasegawa, M. (1996) + */ + + q[0][1]=1.2199217606346e+01; q[0][2]=1.4182139942122e+01; + q[0][3]=9.2985091873208e+00; q[0][4]=3.1542792981957e+01; + q[0][5]=1.0025852846688e+00; q[0][6]=5.1418866803338e+00; + q[0][7]=6.3531246495131e+01; q[0][8]=7.3137132861715e+00; + q[0][9]=5.0782382656186e+01; q[0][10]=1.3399741808481e+01; + q[0][11]=4.4021672780560e+00; q[0][12]=7.4673480520104e+01; + q[0][13]=3.3513021631978e+00; q[0][14]=2.8582502221773e+01; + q[0][15]=2.0413623195312e+02; q[0][16]=2.5301305153906e+02; + q[0][17]=1.0000000000000e+00; q[0][18]=3.4084158197615e+00; + q[0][19]=1.0266468401249e+02; + + q[1][2]=6.9661274444534e+00; q[1][3]=1.0000000000000e+00; + q[1][4]=5.4384584796568e+01; q[1][5]=1.1631134513343e+02; + q[1][6]=1.0000000000000e+00; q[1][7]=1.2122831341194e+01; + q[1][8]=8.6961067087353e+01; q[1][9]=1.0000000000000e+00; + q[1][10]=8.1976829394538e+00; q[1][11]=7.4423215395318e+01; + q[1][12]=1.0000000000000e+00; q[1][13]=2.4659158338099e+00; + q[1][14]=1.2439947713615e+01; q[1][15]=3.1791814866372e+00; + q[1][16]=1.0935327216119e+00; q[1][17]=1.1550775790126e+01; + q[1][18]=1.0000000000000e+00; q[1][19]=4.0211417480338e+00; + + q[2][3]=4.1809325468160e+02; q[2][4]=3.1020979842967e+01; + q[2][5]=9.1349622725361e+01; q[2][6]=3.3185663516310e+01; + q[2][7]=2.8052324651124e+01; q[2][8]=2.6112087577885e+02; + q[2][9]=1.4261453863336e+01; q[2][10]=7.9775653461977e+00; + q[2][11]=3.2036829276162e+02; q[2][12]=3.4424354918739e+01; + q[2][13]=7.9996445145608e+00; q[2][14]=3.8586541461044e+01; + q[2][15]=2.6020426225852e+02; q[2][16]=1.2550758780474e+02; + q[2][17]=5.6207759736659e+00; q[2][18]=1.0071406219571e+02; + q[2][19]=1.0000000000000e+00; + + q[3][4]=1.0000000000000e+00; q[3][5]=2.9097352675564e+01; + q[3][6]=3.0713149855302e+02; q[3][7]=2.9877072751897e+01; + q[3][8]=5.9995408885817e+01; q[3][9]=2.2827096245105e+00; + q[3][10]=1.0000000000000e+00; q[3][11]=1.2183938185384e+00; + q[3][12]=1.0000000000000e+00; q[3][13]=2.6221929413096e+00; + q[3][14]=7.0708004204733e+00; q[3][15]=3.6327934317139e+01; + q[3][16]=1.4743408713748e+01; q[3][17]=1.0453246057102e+01; + q[3][18]=1.1165627147496e+01; q[3][19]=1.0000000000000e+00; + + q[4][5]=3.9599394038972e+01; q[4][6]=1.0000000000000e+00; + q[4][7]=1.6163581056674e+01; q[4][8]=7.4467985406234e+01; + q[4][9]=3.3018175376623e+01; q[4][10]=1.3500725995091e+01; + q[4][11]=1.0000000000000e+00; q[4][12]=3.2504095376923e+00; + q[4][13]=3.7264767083096e+01; q[4][14]=1.6454136037822e+01; + q[4][15]=1.4581783243113e+02; q[4][16]=9.4720031458442e+01; + q[4][17]=1.7684087896962e+01; q[4][18]=1.3409157685926e+02; + q[4][19]=1.0000000000000e+00; + + q[5][6]=1.6503249008836e+02; q[5][7]=3.5530760735494e+00; + q[5][8]=3.0652523140859e+02; q[5][9]=4.3905393139325e+00; + q[5][10]=2.0895470525345e+01; q[5][11]=2.4504076430724e+02; + q[5][12]=2.4931300477797e+01; q[5][13]=1.0059428264289e+01; + q[5][14]=7.2256314165467e+01; q[5][15]=2.8480937892158e+01; + q[5][16]=4.9962974409828e+01; q[5][17]=1.0000000000000e+00; + q[5][18]=2.0430790980529e+01; q[5][19]=9.9986289000676e+00; + + q[6][7]=1.4884496769963e+01; q[6][8]=2.5853576435567e+01; + q[6][9]=1.7418201388328e+00; q[6][10]=1.0000000000000e+00; + q[6][11]=1.6519126809071e+02; q[6][12]=1.0000000000000e+00; + q[6][13]=1.4067850525292e+00; q[6][14]=6.7547121641947e+00; + q[6][15]=2.8794794140840e+01; q[6][16]=7.8001372062558e+00; + q[6][17]=1.0000000000000e+00; q[6][18]=6.9067239183061e+00; + q[6][19]=1.1127702362585e+01; + + q[7][8]=1.0000000000000e+00; q[7][9]=3.1466649021550e+00; + q[7][10]=1.2699794194865e+00; q[7][11]=1.1962111069278e+01; + q[7][12]=1.0000000000000e+00; q[7][13]=1.0000000000000e+00; + q[7][14]=1.0000000000000e+00; q[7][15]=6.6277950574411e+01; + q[7][16]=5.8800079133028e+00; q[7][17]=5.7494182626674e+00; + q[7][18]=1.6887657206208e+00; q[7][19]=1.3320553471351e+00; + + q[8][9]=6.4536986087271e+00; q[8][10]=6.0472584534958e+00; + q[8][11]=6.7197196398961e+01; q[8][12]=6.2977633277779e+00; + q[8][13]=2.5347805183364e+01; q[8][14]=3.2089868698728e+01; + q[8][15]=4.0766987134407e+01; q[8][16]=2.3570850628539e+01; + q[8][17]=3.7286635325194e+00; q[8][18]=3.5270764890474e+02; + q[8][19]=1.0000000000000e+00; + + q[9][10]=1.7320653206333e+02; q[9][11]=1.0298655619743e+01; + q[9][12]=2.7262244199514e+02; q[9][13]=4.4561065036310e+01; + q[9][14]=1.0856482766156e+01; q[9][15]=2.5107659603898e+01; + q[9][16]=1.9391167162525e+02; q[9][17]=1.0000000000000e+00; + q[9][18]=1.3161329199391e+01; q[9][19]=6.4365086389428e+02; + + q[10][11]=7.8314019154706e+00; q[10][12]=2.8290920517725e+02; + q[10][13]=1.1371735519833e+02; q[10][14]=2.1105885757279e+01; + q[10][15]=3.8741359395934e+01; q[10][16]=6.6524559321657e+01; + q[10][17]=1.7071378554833e+01; q[10][18]=2.3234516108847e+01; + q[10][19]=4.8247261078055e+01; + + q[11][12]=4.8092094826036e+01; q[11][13]=3.3887559483420e+00; + q[11][14]=2.6368577564199e+01; q[11][15]=5.5679895711418e+01; + q[11][16]=7.1750284708933e+01; q[11][17]=1.2631893872825e+01; + q[11][18]=2.6932728996777e+01; q[11][19]=1.0000000000000e+00; + + q[12][13]=4.7798798034572e+01; q[12][14]=9.9165053447429e+00; + q[12][15]=5.8505442466161e+01; q[12][16]=2.7798190504760e+02; + q[12][17]=1.1427000119701e+01; q[12][18]=2.1029990530586e+01; + q[12][19]=2.0397078683768e+02; + + q[13][14]=9.1089574817139e+00; q[13][15]=3.3835737720574e+01; + q[13][16]=1.7815549567056e+01; q[13][17]=4.1272404968214e+00; + q[13][18]=2.4504156395152e+02; q[13][19]=3.3435675442163e+00; + + q[14][15]=8.9421193040709e+01; q[14][16]=6.7485067008375e+01; + q[14][17]=2.2161693733113e+00; q[14][18]=8.5338209390745e+00; + q[14][19]=4.3342126659660e+00; + + q[15][16]=3.1432036618746e+02; q[15][17]=2.0305343047059e+01; + q[15][18]=3.4167877957799e+01; q[15][19]=1.0000000000000e+00; + + q[16][17]=5.2559565123081e+00; q[16][18]=2.0382362288681e+01; + q[16][19]=1.0765527137500e+02; + + q[17][18]=1.3814733274637e+01; q[17][19]=2.8259139240676e+00; + + q[18][19]=1.0000000000000e+00; + + + /* amino acid frequencies */ + f[0]=0.072; f[1]=0.019; f[2]=0.039; f[3]=0.019; f[4]=0.006; + f[5]=0.025; f[6]=0.024; f[7]=0.056; f[8]=0.028; f[9]=0.088; + f[10]=0.168; f[11]=0.023; f[12]=0.054; f[13]=0.061; f[14]=0.054; + f[15]=0.072; f[16]=0.086; f[17]=0.029; f[18]=0.033; f[19]=0.043; +} + +void blosum62data(dmatrix q, double *f) +{ + /* + * BLOSUM62 model of amino acid evolution + * + * S. Henikoff and J. G. Henikoff. 1992. PNAS USA 89:10915-10919. + * + */ + + q[0][1]=7.3579038969751e-01; q[0][2]=4.8539105546575e-01; + q[0][3]=5.4316182089867e-01; q[0][4]=1.4599953104700e+00; + q[0][5]=1.1997057046020e+00; q[0][6]=1.1709490427999e+00; + q[0][7]=1.9558835749595e+00; q[0][8]=7.1624144499779e-01; + q[0][9]=6.0589900368677e-01; q[0][10]=8.0001653051838e-01; + q[0][11]=1.2952012667833e+00; q[0][12]=1.2537582666635e+00; + q[0][13]=4.9296467974759e-01; q[0][14]=1.1732759009239e+00; + q[0][15]=4.3250926870566e+00; q[0][16]=1.7291780194850e+00; + q[0][17]=4.6583936772479e-01; q[0][18]=7.1820669758623e-01; + q[0][19]=2.1877745220045e+00; + + q[1][2]=1.2974467051337e+00; q[1][3]=5.0096440855513e-01; + q[1][4]=2.2782657420895e-01; q[1][5]=3.0208336100636e+00; + q[1][6]=1.3605741904203e+00; q[1][7]=4.1876330851753e-01; + q[1][8]=1.4561411663360e+00; q[1][9]=2.3203644514174e-01; + q[1][10]=6.2271166969249e-01; q[1][11]=5.4111151414889e+00; + q[1][12]=9.8369298745695e-01; q[1][13]=3.7164469320875e-01; + q[1][14]=4.4813366171831e-01; q[1][15]=1.1227831042096e+00; + q[1][16]=9.1466595456337e-01; q[1][17]=4.2638231012175e-01; + q[1][18]=7.2051744121611e-01; q[1][19]=4.3838834377202e-01; + + q[2][3]=3.1801000482161e+00; q[2][4]=3.9735894989702e-01; + q[2][5]=1.8392161469920e+00; q[2][6]=1.2404885086396e+00; + q[2][7]=1.3558723444845e+00; q[2][8]=2.4145014342081e+00; + q[2][9]=2.8301732627800e-01; q[2][10]=2.1188815961519e-01; + q[2][11]=1.5931370434574e+00; q[2][12]=6.4844127878707e-01; + q[2][13]=3.5486124922252e-01; q[2][14]=4.9488704370192e-01; + q[2][15]=2.9041016564560e+00; q[2][16]=1.8981736345332e+00; + q[2][17]=1.9148204624678e-01; q[2][18]=5.3822251903674e-01; + q[2][19]=3.1285879799342e-01; + + q[3][4]=2.4083661480204e-01; q[3][5]=1.1909457033960e+00; + q[3][6]=3.7616252083685e+00; q[3][7]=7.9847324896839e-01; + q[3][8]=7.7814266402188e-01; q[3][9]=4.1855573246161e-01; + q[3][10]=2.1813157759360e-01; q[3][11]=1.0324479249521e+00; + q[3][12]=2.2262189795786e-01; q[3][13]=2.8173069420651e-01; + q[3][14]=7.3062827299842e-01; q[3][15]=1.5827541420653e+00; + q[3][16]=9.3418750943056e-01; q[3][17]=1.4534504627853e-01; + q[3][18]=2.6142220896504e-01; q[3][19]=2.5812928941763e-01; + + q[4][5]=3.2980150463028e-01; q[4][6]=1.4074889181440e-01; + q[4][7]=4.1820319228376e-01; q[4][8]=3.5405810983129e-01; + q[4][9]=7.7489402279418e-01; q[4][10]=8.3184264014158e-01; + q[4][11]=2.8507880090648e-01; q[4][12]=7.6768882347954e-01; + q[4][13]=4.4133747118660e-01; q[4][14]=3.5600849876863e-01; + q[4][15]=1.1971884150942e+00; q[4][16]=1.1198313585160e+00; + q[4][17]=5.2766441887169e-01; q[4][18]=4.7023773369610e-01; + q[4][19]=1.1163524786062e+00; + + q[5][6]=5.5289191779282e+00; q[5][7]=6.0984630538281e-01; + q[5][8]=2.4353411311401e+00; q[5][9]=2.3620245120365e-01; + q[5][10]=5.8073709318144e-01; q[5][11]=3.9452776745146e+00; + q[5][12]=2.4948960771127e+00; q[5][13]=1.4435695975031e-01; + q[5][14]=8.5857057567418e-01; q[5][15]=1.9348709245965e+00; + q[5][16]=1.2774802945956e+00; q[5][17]=7.5865380864172e-01; + q[5][18]=9.5898974285014e-01; q[5][19]=5.3078579012486e-01; + + q[6][7]=4.2357999217628e-01; q[6][8]=1.6268910569817e+00; + q[6][9]=1.8684804693170e-01; q[6][10]=3.7262517508685e-01; + q[6][11]=2.8024271516787e+00; q[6][12]=5.5541539747043e-01; + q[6][13]=2.9140908416530e-01; q[6][14]=9.2656393484598e-01; + q[6][15]=1.7698932389373e+00; q[6][16]=1.0710972360073e+00; + q[6][17]=4.0763564893830e-01; q[6][18]=5.9671930034577e-01; + q[6][19]=5.2425384633796e-01; + + q[7][8]=5.3985912495418e-01; q[7][9]=1.8929629237636e-01; + q[7][10]=2.1772115923623e-01; q[7][11]=7.5204244030271e-01; + q[7][12]=4.5943617357855e-01; q[7][13]=3.6816646445253e-01; + q[7][14]=5.0408659952683e-01; q[7][15]=1.5093262532236e+00; + q[7][16]=6.4143601140497e-01; q[7][17]=5.0835892463812e-01; + q[7][18]=3.0805573703500e-01; q[7][19]=2.5334079019018e-01; + + q[8][9]=2.5271844788492e-01; q[8][10]=3.4807220979697e-01; + q[8][11]=1.0225070358890e+00; q[8][12]=9.8431152535870e-01; + q[8][13]=7.1453370392764e-01; q[8][14]=5.2700733915060e-01; + q[8][15]=1.1170297629105e+00; q[8][16]=5.8540709022472e-01; + q[8][17]=3.0124860078016e-01; q[8][18]=4.2189539693890e+00; + q[8][19]=2.0155597175031e-01; + + q[9][10]=3.8909637733035e+00; q[9][11]=4.0619358664202e-01; + q[9][12]=3.3647977631042e+00; q[9][13]=1.5173593259539e+00; + q[9][14]=3.8835540920564e-01; q[9][15]=3.5754441245967e-01; + q[9][16]=1.1790911972601e+00; q[9][17]=3.4198578754023e-01; + q[9][18]=6.7461709322842e-01; q[9][19]=8.3118394054582e+00; + + q[10][11]=4.4557027426059e-01; q[10][12]=6.0305593795716e+00; + q[10][13]=2.0648397032375e+00; q[10][14]=3.7455568747097e-01; + q[10][15]=3.5296918452729e-01; q[10][16]=9.1525985769421e-01; + q[10][17]=6.9147463459998e-01; q[10][18]=8.1124585632307e-01; + q[10][19]=2.2314056889131e+00; + + q[11][12]=1.0730611843319e+00; q[11][13]=2.6692475051102e-01; + q[11][14]=1.0473834507215e+00; q[11][15]=1.7521659178195e+00; + q[11][16]=1.3038752007987e+00; q[11][17]=3.3224304063396e-01; + q[11][18]=7.1799348690032e-01; q[11][19]=4.9813847530407e-01; + + q[12][13]=1.7738551688305e+00; q[12][14]=4.5412362510273e-01; + q[12][15]=9.1872341574605e-01; q[12][16]=1.4885480537218e+00; + q[12][17]=8.8810109815193e-01; q[12][18]=9.5168216224591e-01; + q[12][19]=2.5758507553153e+00; + + q[13][14]=2.3359790962888e-01; q[13][15]=5.4002764482413e-01; + q[13][16]=4.8820611879305e-01; q[13][17]=2.0743248934965e+00; + q[13][18]=6.7472604308008e+00; q[13][19]=8.3811961017754e-01; + + q[14][15]=1.1691295777157e+00; q[14][16]=1.0054516831488e+00; + q[14][17]=2.5221483002727e-01; q[14][18]=3.6940531935451e-01; + q[14][19]=4.9690841067567e-01; + + q[15][16]=5.1515562922704e+00; q[15][17]=3.8792562209837e-01; + q[15][18]=7.9675152076106e-01; q[15][19]=5.6192545744165e-01; + + q[16][17]=5.1312812689059e-01; q[16][18]=8.0101024319939e-01; + q[16][19]=2.2530740511763e+00; + + q[17][18]=4.0544190065580e+00; q[17][19]=2.6650873142646e-01; + + q[18][19]=1.0000000000000e+00; + + + f[0]=0.074; f[1]=0.052; f[2]=0.045; f[3]=0.054; + f[4]=0.025; f[5]=0.034; f[6]=0.054; f[7]=0.074; + f[8]=0.026; f[9]=0.068; f[10]=0.099; f[11]=0.058; + f[12]=0.025; f[13]=0.047; f[14]=0.039; f[15]=0.057; + f[16]=0.051; f[17]=0.013; f[18]=0.032; f[19]=0.073; +} + + + +void vtmvdata(dmatrix q, double *f) +{ + /* + * variable time (VT) model for amino acid evolution + * Mueller, T. and Vingron, M. (1999) + * "Modeling Amino Acid Replacement" + * Journal of Comp. Biology + */ + +/* amino acid frequencies */ + +f[0]=0.078837 ; +f[1]=0.051238 ; +f[2]=0.042313 ; +f[3]=0.053066 ; +f[4]=0.015175 ; +f[5]=0.036713 ; +f[6]=0.061924 ; +f[7]=0.070852 ; +f[8]=0.023082 ; +f[9]=0.062056 ; +f[10]=0.096371 ; +f[11]=0.057324 ; +f[12]=0.023771 ; +f[13]=0.043296 ; +f[14]=0.043911 ; +f[15]=0.063403 ; +f[16]=0.055897 ; +f[17]=0.013272 ; +f[18]=0.034399 ; +f[19]=0.073101 ; + + +q[0][1] = 0.233108 ; +q[0][2] = 0.199097 ; +q[0][3] = 0.265145 ; +q[0][4] = 0.227333 ; +q[0][5] = 0.310084 ; +q[0][6] = 0.567957 ; +q[0][7] = 0.876213 ; +q[0][8] = 0.078692 ; +q[0][9] = 0.222972 ; +q[0][10] = 0.424630 ; +q[0][11] = 0.393245 ; +q[0][12] = 0.211550 ; +q[0][13] = 0.116646 ; +q[0][14] = 0.399143 ; +q[0][15] = 1.817198 ; +q[0][16] = 0.877877 ; +q[0][17] = 0.030309 ; +q[0][18] = 0.087061 ; +q[0][19] = 1.230985 ; + +q[1][2] = 0.210797 ; +q[1][3] = 0.105191 ; +q[1][4] = 0.031726 ; +q[1][5] = 0.493763 ; +q[1][6] = 0.255240 ; +q[1][7] = 0.156945 ; +q[1][8] = 0.213164 ; +q[1][9] = 0.081510 ; +q[1][10] = 0.192364 ; +q[1][11] = 1.755838 ; +q[1][12] = 0.087930 ; +q[1][13] = 0.042569 ; +q[1][14] = 0.128480 ; +q[1][15] = 0.292327 ; +q[1][16] = 0.204109 ; +q[1][17] = 0.046417 ; +q[1][18] = 0.097010 ; +q[1][19] = 0.113146 ; + +q[2][3] = 0.883422 ; +q[2][4] = 0.027495 ; +q[2][5] = 0.275700 ; +q[2][6] = 0.270417 ; +q[2][7] = 0.362028 ; +q[2][8] = 0.290006 ; +q[2][9] = 0.087225 ; +q[2][10] = 0.069245 ; +q[2][11] = 0.503060 ; +q[2][12] = 0.057420 ; +q[2][13] = 0.039769 ; +q[2][14] = 0.083956 ; +q[2][15] = 0.847049 ; +q[2][16] = 0.471268 ; +q[2][17] = 0.010459 ; +q[2][18] = 0.093268 ; +q[2][19] = 0.049824 ; + +q[3][4] = 0.010313 ; +q[3][5] = 0.205842 ; +q[3][6] = 1.599461 ; +q[3][7] = 0.311718 ; +q[3][8] = 0.134252 ; +q[3][9] = 0.011720 ; +q[3][10] = 0.060863 ; +q[3][11] = 0.261101 ; +q[3][12] = 0.012182 ; +q[3][13] = 0.016577 ; +q[3][14] = 0.160063 ; +q[3][15] = 0.461519 ; +q[3][16] = 0.178197 ; +q[3][17] = 0.011393 ; +q[3][18] = 0.051664 ; +q[3][19] = 0.048769 ; + +q[4][5] = 0.004315 ; +q[4][6] = 0.005321 ; +q[4][7] = 0.050876 ; +q[4][8] = 0.016695 ; +q[4][9] = 0.046398 ; +q[4][10] = 0.091709 ; +q[4][11] = 0.004067 ; +q[4][12] = 0.023690 ; +q[4][13] = 0.051127 ; +q[4][14] = 0.011137 ; +q[4][15] = 0.175270 ; +q[4][16] = 0.079511 ; +q[4][17] = 0.007732 ; +q[4][18] = 0.042823 ; +q[4][19] = 0.163831 ; + +q[5][6] = 0.960976 ; +q[5][7] = 0.128660 ; +q[5][8] = 0.315521 ; +q[5][9] = 0.054602 ; +q[5][10] = 0.243530 ; +q[5][11] = 0.738208 ; +q[5][12] = 0.120801 ; +q[5][13] = 0.026235 ; +q[5][14] = 0.156570 ; +q[5][15] = 0.358017 ; +q[5][16] = 0.248992 ; +q[5][17] = 0.021248 ; +q[5][18] = 0.062544 ; +q[5][19] = 0.112027 ; + +q[6][7] = 0.250447 ; +q[6][8] = 0.104458 ; +q[6][9] = 0.046589 ; +q[6][10] = 0.151924 ; +q[6][11] = 0.888630 ; +q[6][12] = 0.058643 ; +q[6][13] = 0.028168 ; +q[6][14] = 0.205134 ; +q[6][15] = 0.406035 ; +q[6][16] = 0.321028 ; +q[6][17] = 0.018844 ; +q[6][18] = 0.055200 ; +q[6][19] = 0.205868 ; + +q[7][8] = 0.058131 ; +q[7][9] = 0.051089 ; +q[7][10] = 0.087056 ; +q[7][11] = 0.193243 ; +q[7][12] = 0.046560 ; +q[7][13] = 0.050143 ; +q[7][14] = 0.124492 ; +q[7][15] = 0.612843 ; +q[7][16] = 0.136266 ; +q[7][17] = 0.023990 ; +q[7][18] = 0.037568 ; +q[7][19] = 0.082579 ; + +q[8][9] = 0.020039 ; +q[8][10] = 0.103552 ; +q[8][11] = 0.153323 ; +q[8][12] = 0.021157 ; +q[8][13] = 0.079807 ; +q[8][14] = 0.078892 ; +q[8][15] = 0.167406 ; +q[8][16] = 0.101117 ; +q[8][17] = 0.020009 ; +q[8][18] = 0.286027 ; +q[8][19] = 0.068575 ; + +q[9][10] = 2.089890 ; +q[9][11] = 0.093181 ; +q[9][12] = 0.493845 ; +q[9][13] = 0.321020 ; +q[9][14] = 0.054797 ; +q[9][15] = 0.081567 ; +q[9][16] = 0.376588 ; +q[9][17] = 0.034954 ; +q[9][18] = 0.086237 ; +q[9][19] = 3.654430 ; + +q[10][11] = 0.201204 ; +q[10][12] = 1.105667 ; +q[10][13] = 0.946499 ; +q[10][14] = 0.169784 ; +q[10][15] = 0.214977 ; +q[10][16] = 0.243227 ; +q[10][17] = 0.083439 ; +q[10][18] = 0.189842 ; +q[10][19] = 1.337571 ; + +q[11][12] = 0.096474 ; +q[11][13] = 0.038261 ; +q[11][14] = 0.212302 ; +q[11][15] = 0.400072 ; +q[11][16] = 0.446646 ; +q[11][17] = 0.023321 ; +q[11][18] = 0.068689 ; +q[11][19] = 0.144587 ; + +q[12][13] = 0.173052 ; +q[12][14] = 0.010363 ; +q[12][15] = 0.090515 ; +q[12][16] = 0.184609 ; +q[12][17] = 0.022019 ; +q[12][18] = 0.073223 ; +q[12][19] = 0.307309 ; + +q[13][14] = 0.042564 ; +q[13][15] = 0.138119 ; +q[13][16] = 0.085870 ; +q[13][17] = 0.128050 ; +q[13][18] = 0.898663 ; +q[13][19] = 0.247329 ; + +q[14][15] = 0.430431 ; +q[14][16] = 0.207143 ; +q[14][17] = 0.014584 ; +q[14][18] = 0.032043 ; +q[14][19] = 0.129315 ; + +q[15][16] = 1.767766 ; +q[15][17] = 0.035933 ; +q[15][18] = 0.121979 ; +q[15][19] = 0.127700 ; + +q[16][17] = 0.020437 ; +q[16][18] = 0.094617 ; +q[16][19] = 0.740372 ; + +q[17][18] = 0.124746 ; +q[17][19] = 0.022134 ; + +q[18][19] = 0.125733 ; + +} + + +/* + * WAG matrix: Simon Whelan and Nick Goldman + * + */ + +void wagdata(dmatrix q, double *f) +{ + /* + * WAG model of amino acid evolution + * + * S. Whelan and N. Goldman. 2000. In prep. + * + * presented at the MASAMB-X workshop in Cambridge + * + * Whelan, S., and N. Goldman. 2000. + * The WAG amino acid rate matrix. + * Manuscript in prep. + */ + + /* Q matrix */ + q[0][1] = 0.610810; q[0][2] = 0.569079; + q[0][3] = 0.821500; q[0][4] = 1.141050; + q[0][5] = 1.011980; q[0][6] = 1.756410; + q[0][7] = 1.572160; q[0][8] = 0.354813; + q[0][9] = 0.219023; q[0][10] = 0.443935; + q[0][11] = 1.005440; q[0][12] = 0.989475; + q[0][13] = 0.233492; q[0][14] = 1.594890; + q[0][15] = 3.733380; q[0][16] = 2.349220; + q[0][17] = 0.125227; q[0][18] = 0.268987; + q[0][19] = 2.221870; + + q[1][2] = 0.711690; q[1][3] = 0.165074; + q[1][4] = 0.585809; q[1][5] = 3.360330; + q[1][6] = 0.488649; q[1][7] = 0.650469; + q[1][8] = 2.362040; q[1][9] = 0.206722; + q[1][10] = 0.551450; q[1][11] = 5.925170; + q[1][12] = 0.758446; q[1][13] = 0.116821; + q[1][14] = 0.753467; q[1][15] = 1.357640; + q[1][16] = 0.613776; q[1][17] = 1.294610; + q[1][18] = 0.423612; q[1][19] = 0.280336; + + q[2][3] = 6.013660; q[2][4] = 0.296524; + q[2][5] = 1.716740; q[2][6] = 1.056790; + q[2][7] = 1.253910; q[2][8] = 4.378930; + q[2][9] = 0.615636; q[2][10] = 0.147156; + q[2][11] = 3.334390; q[2][12] = 0.224747; + q[2][13] = 0.110793; q[2][14] = 0.217538; + q[2][15] = 4.394450; q[2][16] = 2.257930; + q[2][17] = 0.078463; q[2][18] = 1.208560; + q[2][19] = 0.221176; + + q[3][4] = 0.033379; q[3][5] = 0.691268; + q[3][6] = 6.833400; q[3][7] = 0.961142; + q[3][8] = 1.032910; q[3][9] = 0.043523; + q[3][10] = 0.093930; q[3][11] = 0.533362; + q[3][12] = 0.116813; q[3][13] = 0.052004; + q[3][14] = 0.472601; q[3][15] = 1.192810; + q[3][16] = 0.417372; q[3][17] = 0.146348; + q[3][18] = 0.363243; q[3][19] = 0.169417; + + q[4][5] = 0.109261; q[4][6] = 0.023920; + q[4][7] = 0.341086; q[4][8] = 0.275403; + q[4][9] = 0.189890; q[4][10] = 0.428414; + q[4][11] = 0.083649; q[4][12] = 0.437393; + q[4][13] = 0.441300; q[4][14] = 0.122303; + q[4][15] = 1.560590; q[4][16] = 0.570186; + q[4][17] = 0.795736; q[4][18] = 0.604634; + q[4][19] = 1.114570; + + q[5][6] = 6.048790; q[5][7] = 0.366510; + q[5][8] = 4.749460; q[5][9] = 0.131046; + q[5][10] = 0.964886; q[5][11] = 4.308310; + q[5][12] = 1.705070; q[5][13] = 0.110744; + q[5][14] = 1.036370; q[5][15] = 1.141210; + q[5][16] = 0.954144; q[5][17] = 0.243615; + q[5][18] = 0.252457; q[5][19] = 0.333890; + + q[6][7] = 0.630832; q[6][8] = 0.635025; + q[6][9] = 0.141320; q[6][10] = 0.172579; + q[6][11] = 2.867580; q[6][12] = 0.353912; + q[6][13] = 0.092310; q[6][14] = 0.755791; + q[6][15] = 0.782467; q[6][16] = 0.914814; + q[6][17] = 0.172682; q[6][18] = 0.217549; + q[6][19] = 0.655045; + + q[7][8] = 0.276379; q[7][9] = 0.034151; + q[7][10] = 0.068651; q[7][11] = 0.415992; + q[7][12] = 0.194220; q[7][13] = 0.055288; + q[7][14] = 0.273149; q[7][15] = 1.486700; + q[7][16] = 0.251477; q[7][17] = 0.374321; + q[7][18] = 0.114187; q[7][19] = 0.209108; + + q[8][9] = 0.152215; q[8][10] = 0.555096; + q[8][11] = 0.992083; q[8][12] = 0.450867; + q[8][13] = 0.756080; q[8][14] = 0.771387; + q[8][15] = 0.822459; q[8][16] = 0.525511; + q[8][17] = 0.289998; q[8][18] = 4.290350; + q[8][19] = 0.131869; + + q[9][10] = 3.517820; q[9][11] = 0.360574; + q[9][12] = 4.714220; q[9][13] = 1.177640; + q[9][14] = 0.111502; q[9][15] = 0.353443; + q[9][16] = 1.615050; q[9][17] = 0.234326; + q[9][18] = 0.468951; q[9][19] = 8.659740; + + q[10][11] = 0.287583; q[10][12] = 5.375250; + q[10][13] = 2.348200; q[10][14] = 0.462018; + q[10][15] = 0.382421; q[10][16] = 0.364222; + q[10][17] = 0.740259; q[10][18] = 0.443205; + q[10][19] = 1.997370; + + q[11][12] = 1.032220; q[11][13] = 0.098843; + q[11][14] = 0.619503; q[11][15] = 1.073780; + q[11][16] = 1.537920; q[11][17] = 0.152232; + q[11][18] = 0.147411; q[11][19] = 0.342012; + + q[12][13] = 1.320870; q[12][14] = 0.194864; + q[12][15] = 0.556353; q[12][16] = 1.681970; + q[12][17] = 0.570369; q[12][18] = 0.473810; + q[12][19] = 2.282020; + + q[13][14] = 0.179896; q[13][15] = 0.606814; + q[13][16] = 0.191467; q[13][17] = 1.699780; + q[13][18] = 7.154480; q[13][19] = 0.725096; + + q[14][15] = 1.786490; q[14][16] = 0.885349; + q[14][17] = 0.156619; q[14][18] = 0.239607; + q[14][19] = 0.351250; + + q[15][16] = 4.847130; q[15][17] = 0.578784; + q[15][18] = 0.872519; q[15][19] = 0.258861; + + q[16][17] = 0.126678; q[16][18] = 0.325490; + q[16][19] = 1.547670; + + q[17][18] = 2.763540; q[17][19] = 0.409817; + + q[18][19] = 0.347826; + + /* original frequencies */ + f[ 0] = 0.0866; + f[ 1] = 0.0440; + f[ 2] = 0.0391; + f[ 3] = 0.0570; + f[ 4] = 0.0193; + f[ 5] = 0.0367; + f[ 6] = 0.0581; + f[ 7] = 0.0833; + f[ 8] = 0.0244; + f[ 9] = 0.0485; + f[10] = 0.0862; + f[11] = 0.0620; + f[12] = 0.0195; + f[13] = 0.0384; + f[14] = 0.0458; + f[15] = 0.0695; + f[16] = 0.0610; + f[17] = 0.0144; + f[18] = 0.0353; + f[19] = 0.0709; +} + +void cprev45data(dmatrix q, double *f) +{ + /* cpREV45 model of amino acid evolution + * Adachi, J., P.J. Waddell, W. Martin, and M. Hasegawa. 2000. + * J. Mol. Evol. 50:348-358 + * (reconstructed from 45 chloroplast genomes) + */ + q[0][1] = 105; q[0][2] = 227; + q[0][3] = 175; q[0][4] = 669; + q[0][5] = 157; q[0][6] = 499; + q[0][7] = 665; q[0][8] = 66; + q[0][9] = 145; q[0][10] = 197; + q[0][11] = 236; q[0][12] = 185; + q[0][13] = 68; q[0][14] = 490; + q[0][15] = 2440; q[0][16] = 1340; + q[0][17] = 14; q[0][18] = 56; + q[0][19] = 968; + + q[1][2] = 357; q[1][3] = 43; + q[1][4] = 823; q[1][5] = 1745; + q[1][6] = 152; q[1][7] = 243; + q[1][8] = 715; q[1][9] = 136; + q[1][10] = 203; q[1][11] = 4482; + q[1][12] = 125; q[1][13] = 53; + q[1][14] = 87; q[1][15] = 385; + q[1][16] = 314; q[1][17] = 230; + q[1][18] = 323; q[1][19] = 92; + + q[2][3] = 4435; q[2][4] = 538; + q[2][5] = 768; q[2][6] = 1055; + q[2][7] = 653; q[2][8] = 1405; + q[2][9] = 168; q[2][10] = 113; + q[2][11] = 2430; q[2][12] = 61; + q[2][13] = 97; q[2][14] = 173; + q[2][15] = 2085; q[2][16] = 1393; + q[2][17] = 40; q[2][18] = 754; + q[2][19] = 83; + + q[3][4] = 10; q[3][5] = 400; + q[3][6] = 3691; q[3][7] = 431; + q[3][8] = 331; q[3][9] = 10; + q[3][10] = 10; q[3][11] = 412; + q[3][12] = 47; q[3][13] = 22; + q[3][14] = 170; q[3][15] = 590; + q[3][16] = 266; q[3][17] = 18; + q[3][18] = 281; q[3][19] = 75; + + q[4][5] = 10; q[4][6] = 10; + q[4][7] = 303; q[4][8] = 441; + q[4][9] = 280; q[4][10] = 396; + q[4][11] = 48; q[4][12] = 159; + q[4][13] = 726; q[4][14] = 285; + q[4][15] = 2331; q[4][16] = 576; + q[4][17] = 435; q[4][18] = 1466; + q[4][19] = 592; + + q[5][6] = 3122; q[5][7] = 133; + q[5][8] = 1269; q[5][9] = 92; + q[5][10] = 286; q[5][11] = 3313; + q[5][12] = 202; q[5][13] = 10; + q[5][14] = 323; q[5][15] = 396; + q[5][16] = 241; q[5][17] = 53; + q[5][18] = 391; q[5][19] = 54; + + q[6][7] = 379; q[6][8] = 162; + q[6][9] = 148; q[6][10] = 82; + q[6][11] = 2629; q[6][12] = 113; + q[6][13] = 145; q[6][14] = 185; + q[6][15] = 568; q[6][16] = 369; + q[6][17] = 63; q[6][18] = 142; + q[6][19] = 200; + + q[7][8] = 19; q[7][9] = 40; + q[7][10] = 20; q[7][11] = 263; + q[7][12] = 21; q[7][13] = 25; + q[7][14] = 28; q[7][15] = 691; + q[7][16] = 92; q[7][17] = 82; + q[7][18] = 10; q[7][19] = 91; + + q[8][9] = 29; q[8][10] = 66; + q[8][11] = 305; q[8][12] = 10; + q[8][13] = 127; q[8][14] = 152; + q[8][15] = 303; q[8][16] = 32; + q[8][17] = 69; q[8][18] = 1971; + q[8][19] = 25; + + q[9][10] = 1745; q[9][11] = 345; + q[9][12] = 1772; q[9][13] = 454; + q[9][14] = 117; q[9][15] = 216; + q[9][16] = 1040; q[9][17] = 42; + q[9][18] = 89; q[9][19] = 4797; + + q[10][11] = 218; q[10][12] = 1351; + q[10][13] = 1268; q[10][14] = 219; + q[10][15] = 516; q[10][16] = 156; + q[10][17] = 159; q[10][18] = 189; + q[10][19] = 865; + + q[11][12] = 193; q[11][13] = 72; + q[11][14] = 302; q[11][15] = 868; + q[11][16] = 918; q[11][17] = 10; + q[11][18] = 247; q[11][19] = 249; + + q[12][13] = 327; q[12][14] = 100; + q[12][15] = 93; q[12][16] = 645; + q[12][17] = 86; q[12][18] = 215; + q[12][19] = 475; + + q[13][14] = 43; q[13][15] = 487; + q[13][16] = 148; q[13][17] = 468; + q[13][18] = 2370; q[13][19] = 317; + + q[14][15] = 1202; q[14][16] = 260; + q[14][17] = 49; q[14][18] = 97; + q[14][19] = 122; + + q[15][16] = 2151; q[15][17] = 73; + q[15][18] = 522; q[15][19] = 167; + + q[16][17] = 29; q[16][18] = 71; + q[16][19] = 760; + + q[17][18] = 346; q[17][19] = 10; + + q[18][19] = 119; + + f[0] = 0.076; + f[1] = 0.062; + f[2] = 0.041; + f[3] = 0.037; + f[4] = 0.009; + f[5] = 0.038; + f[6] = 0.049; + f[7] = 0.084; + f[8] = 0.025; + f[9] = 0.081; + f[10] = 0.101; + f[11] = 0.050; + f[12] = 0.022; + f[13] = 0.051; + f[14] = 0.043; + f[15] = 0.062; + f[16] = 0.054; + f[17] = 0.018; + f[18] = 0.031; + f[19] = 0.066; +} + diff --git a/forester/archive/RIO/others/puzzle_mod/src/ppuzzle.c b/forester/archive/RIO/others/puzzle_mod/src/ppuzzle.c new file mode 100644 index 0000000..04a1cc2 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/ppuzzle.c @@ -0,0 +1,2418 @@ +/* + * ppuzzle.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + +#define EXTERN extern + +#include +#include +#include "ppuzzle.h" + + +int PP_IamMaster; +int PP_IamSlave; +int PP_Myid; +int PP_MyMaster; +int PP_NumProcs; +MPI_Comm PP_Comm; + +int *freeslaves; /* Queue of free slaves */ +int firstslave, /* headpointer of queue */ + lastslave; /* tailpointer of queue */ + +int *permutsent, + *permutrecved, + *quartsent, + *quartrecved, + *doquartsent, + *doquartrecved, + *splitsent, + *splitrecved, + *permutsentn, + *permutrecvedn, + *quartsentn, + *quartrecvedn, + *doquartsentn, + *doquartrecvedn, + *splitsentn, + *splitrecvedn; + +double *walltimes, + *cputimes; +double *fullwalltimes, + *fullcputimes; +double *altwalltimes, + *altcputimes; + +int PP_permutsent = 0; /* # of */ +int PP_permutrecved = 0; /* # of */ +int PP_quartsent = 0; /* # of */ +int PP_quartrecved = 0; /* # of */ +int PP_doquartsent = 0; /* # of */ +int PP_doquartrecved = 0; /* # of */ +int PP_splitsent = 0; /* # of */ +int PP_splitrecved = 0; /* # of */ +int PP_permutsentn = 0; /* # of */ +int PP_permutrecvedn = 0; /* # of */ +int PP_quartsentn = 0; /* # of */ +int PP_quartrecvedn = 0; /* # of */ +int PP_doquartsentn = 0; /* # of */ +int PP_doquartrecvedn = 0; /* # of */ +int PP_splitsentn = 0; /* # of */ +int PP_splitrecvedn = 0; /* # of */ + +double PP_starttime = 0, + PP_stoptime = 0, + PP_inittime = 0, + PP_paramcomptime = 0, + PP_paramsendtime = 0, + PP_quartcomptime = 0, + PP_quartsendtime = 0, + PP_puzzletime = 0, + PP_treetime = 0, + PP_lasttime = 0; + +int PP_MaxSlave = 0; + + +/********************************************************************* +* miscellaneous utilities * +*********************************************************************/ + +int dcmp(const void *a, const void *b) +{ + if (*(double *)a > *(double *)b) return (-1); + else if (*(double *)a < *(double *)b) return 1; + else return 0; +} + +/******************/ + +void PP_cmpd(int rank, double a, double b) +{ + if (a != b) + FPRINTF(STDOUTFILE "(%2d) *** %.3f != %.3f\n", rank, a, b); +} + +/******************/ + +void PP_cmpi(int rank, int a, int b) +{ + if (a != b) + FPRINTF(STDOUTFILE "(%2d) *** %d != %d\n", rank, a, b); +} + +/******************/ + +double PP_timer() +{ + double tmptime; + if (PP_lasttime == 0) { + PP_lasttime = MPI_Wtime(); + return(0); + } + else { + tmptime = PP_lasttime; + PP_lasttime = MPI_Wtime(); + return(PP_lasttime - tmptime); + } +} + +/******************/ + +void PP_Printerror(FILE *of, int id, int err) +{ + char errstr[MPI_MAX_ERROR_STRING]; + int errstrlen; + + if ((err > MPI_SUCCESS) && (err <= MPI_ERR_LASTCODE)) { + MPI_Error_string(err, errstr, &errstrlen); + fprintf(of, "(%2d) MPI ERROR %d : %s\n", id, err, errstr); + } + else { + if (err == MPI_SUCCESS) + fprintf(of, "(%2d) MPI ERROR %d : No error\n", id, err); + else + fprintf(of, "(%2d) MPI ERROR %d : unknown error number\n", id, err); + } +} /* PP_Printerror */ + +/******************/ + +void PP_Printbiparts(cmatrix biparts) +{ int n1, n2; + for (n1=0; n1<(Maxspc-3); n1++) { + if (n1==0) FPRINTF(STDOUTFILE "(%2d) bipartition : ", PP_Myid); + else FPRINTF(STDOUTFILE "(%2d) : ", PP_Myid); + for (n2=0; n2= qnum) + while ((lowval > qnum)) { + dd -= 1; lowval = (uli) dd*(dd-1)*(dd-2)*(dd-3)/24; + } + else { + while (highval <= qnum) { + dd += 1; highval = (uli) (dd+1)*dd*(dd-1)*(dd-2)/24; + } + lowval = (uli) dd*(dd-1)*(dd-2)*(dd-3)/24; + } + qnum -= lowval; + if (qnum > 0) { + temp = (double)(6 * qnum); + temp = pow(temp, (double)(1/3)); + cc = (uli) floor(temp); + if (cc < 2) cc= 2; + lowval = (uli) cc*(cc-1)*(cc-2)/6; + highval = (uli) (cc+1)*cc*(cc-1)/6; + if (lowval >= qnum) + while ((lowval > qnum)) { + cc -= 1; lowval = (uli) cc*(cc-1)*(cc-2)/6; + } + else { + while (highval <= qnum) { + cc += 1; highval = (uli) (cc+1)*cc*(cc-1)/6; + } + lowval = (uli) cc*(cc-1)*(cc-2)/6; + } + qnum -= lowval; + if (qnum > 0) { + temp = (double)(2 * qnum); + temp = sqrt(temp); + bb = (uli) floor(temp); + if (bb < 1) bb= 1; + lowval = (uli) bb*(bb-1)/2; + highval = (uli) (bb+1)*bb/2; + if (lowval >= qnum) + while ((lowval > qnum)) { + bb -= 1; lowval = (uli) bb*(bb-1)/2; + } + else { + while (highval <= qnum) { + bb += 1; highval = (uli) (bb+1)*bb/2; + } + lowval = (uli) bb*(bb-1)/2; + } + qnum -= lowval; + if (qnum > 0) { + aa = (uli) qnum; + if (aa < 0) aa= 0; + } + } + } + *d = (int)dd; + *c = (int)cc; + *b = (int)bb; + *a = (int)aa; +} /* num2quart */ + +/******************/ + +uli numquarts(int maxspc) +{ + uli tmp; + int a, b, c, d; + + if (maxspc < 4) + return (uli)0; + else { + maxspc--; + a = maxspc-3; + b = maxspc-2; + c = maxspc-1; + d = maxspc; + + tmp = (uli) 1 + a + + (uli) b * (b-1) / 2 + + (uli) c * (c-1) * (c-2) / 6 + + (uli) d * (d-1) * (d-2) * (d-3) / 24; + return (tmp); + } +} /* numquarts */ + +/******************/ + +uli quart2num (int a, int b, int c, int d) +{ + uli tmp; + if ((a>b) || (b>c) || (c>d)) { + fprintf(stderr, "Error PP5 not (%d <= %d <= %d <= %d) !!!\n", a, b, c, d); + exit (1); + } + tmp = (uli) a + + (uli) b * (b-1) / 2 + + (uli) c * (c-1) * (c-2) / 6 + + (uli) d * (d-1) * (d-2) * (d-3) / 24; + return (tmp); +} /* quart2num */ +#endif +/******************/ + + +/********************************************************************* +* queue for storing the ranks of slaves waiting for work * +*********************************************************************/ + +void PP_initslavequeue() +{ + int n; + freeslaves = new_ivector(PP_NumProcs); + firstslave = 0; + PP_MaxSlave = PP_NumProcs-1; + lastslave = PP_MaxSlave-1; + freeslaves[PP_MaxSlave] = PP_MaxSlave; + for (n=0; n 900) { + /* every 900 seconds */ + /* percentage of completed trees */ + if (mflag == 0) { + FPRINTF(STDOUTFILE "\n"); + mflag = 1; + } + tc2 = 100.0*Currtrial/Numtrial + + 100.0*nq/Numquartets/Numtrial; + mintogo = (100.0-tc2) * + (double) (time2-time0)/60.0/tc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%2.2f%%", tc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + time1 = time2; + } +# endif /* SEQUENTIAL */ + } + + /* find out which edge has the lowest edgeinfo */ + minimumedgeinfo(); + + /* add the next leaf on minedge */ + addnextleaf(minedge); + } + + /* compute bipartitions of current tree */ + computebiparts(); + +#if PARALLEL + if (PP_IamMaster) makenewsplitentries(); +# else + makenewsplitentries(); +# endif + + { + int *ctree, startnode; + char *trstr; + ctree = initctree(); + copytree(ctree); + startnode = sortctree(ctree); + trstr=sprintfctree(ctree, psteptreestrlen); + (void) addtree2list(&trstr, 1, &psteptreelist, &psteptreenum, &psteptreesum); +# ifdef PVERBOSE2 + /* fprintf(STDOUT, "%s\n", trstr); */ + printfpstrees(psteptreelist); +# endif + freectree(&ctree); + } + + + /* free tree before building the next tree */ + freetree(); + +} /* PP_slave_do_puzzling */ + +/******************/ + +void PP_do_puzzling(ivector trueID) +{ +int dest; + +# if PARALLEL + dest = PP_getslave(); + PP_SendPermut(dest, Maxspc, trueID); +# endif + + /* initialize tree */ + inittree(); + + PP_RecvSplits(Maxspc, biparts); + +# ifdef PVERBOSE3 + PP_Printbiparts(biparts); +# endif /* PVERBOSE3 */ + + makenewsplitentries(); + + /* free tree before building the next tree */ + freetree(); + +} /* PP_do_puzzling */ + +/******************/ + + +void PP_do_write_quart(int e, + int f, + int g, + int h, + double d1, + double d2, + double d3, + uli *numbq, + uli *bqarr) +{ + double lhs[3], + temp, + wlist[6], + plist[6]; + unsigned char qpbranching; + int badquartet; + + lhs[0] = d1; + lhs[1] = d2; + lhs[2] = d3; + + badquartet = FALSE; + + /* compute Bayesian weights */ + temp = (lhs[0] + lhs[1] + lhs[2])/3.0; + lhs[0] = exp(lhs[0] - temp); + lhs[1] = exp(lhs[1] - temp); + lhs[2] = exp(lhs[2] - temp); + temp = lhs[0] + lhs[1] + lhs[2]; + wlist[0] = lhs[0] / temp; + wlist[1] = 1.0; + wlist[2] = lhs[1] / temp; + wlist[3] = 2.0; + wlist[4] = lhs[2] / temp; + wlist[5] = 4.0; + + /* sort in descending order */ + qsort(wlist, 3, 2*sizeof(double), dcmp); + + /* check out the three possibilities */ + + /* 100 distribution */ + plist[0] = (1.0 - wlist[0])*(1.0 - wlist[0]) + + (0.0 - wlist[2])*(0.0 - wlist[2]) + + (0.0 - wlist[4])*(0.0 - wlist[4]); + plist[1] = wlist[1]; + + /* 110 distribution */ + plist[2] = (0.5 - wlist[0])*(0.5 - wlist[0]) + + (0.5 - wlist[2])*(0.5 - wlist[2]) + + (0.0 - wlist[4])*(0.0 - wlist[4]); + plist[3] = wlist[1] + wlist[3]; + + /* 111 distribution */ + temp = 1.0/3.0; + plist[4] = (temp - wlist[0])*(temp - wlist[0]) + + (temp - wlist[2])*(temp - wlist[2]) + + (temp - wlist[4])*(temp - wlist[4]); + plist[5] = wlist[1] + wlist[3] + wlist[5]; + + /* sort in descending order */ + qsort(plist, 3, 2*sizeof(double), dcmp); + + qpbranching = (unsigned char) plist[5]; + writequartet(e, f, g, h, qpbranching); + + /* a bad quartet is a quartet that shows + equal weights for all three possible topologies */ + if (qpbranching == 7) badquartet = TRUE; + + if (badquartet) { + bqarr[(*numbq)++] = quart2num(e, f, g, h); +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) bad quartet: %d %d %d %d -> %ld\n", + PP_Myid, e, f, g, h, quart2num(e, f, g, h)); +# endif /* PVERBOSE3 */ + badqs++; + badtaxon[e]++; + badtaxon[f]++; + badtaxon[g]++; + badtaxon[h]++; + } /* if badquartet */ +} /* PP_do_write_quart */ + +/********************************************************************* +* sending/receiving the important sizes and parameter (M->S) * +*********************************************************************/ + +void PP_SendSizes(int mspc, + int msite, + int ncats, + int nptrn, + int rad, + int outgr, + double frconst, + int rseed) +{ +# define NUMINT 7 +# define NUMDBL 1 + int ints[NUMINT]; + double doubles[NUMDBL]; + MPI_Datatype Dtypes[2] = {MPI_INT, MPI_DOUBLE}; + int Dtypelens[2] = {NUMINT , NUMDBL}; + MPI_Aint Dtypeaddr[2]; + MPI_Datatype PP_Sizes; + int dest; + int error; + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending: Maxspc=%d Maxsite=%d numcats=%d\n", PP_Myid, mspc, msite, ncats); + FPRINTF(STDOUTFILE "(%2d) Numprtn=%d tpmradix=%d fracconst=%.3f\n", PP_Myid, nptrn, rad, frconst); +# endif /* PVERBOSE2 */ + + ints[0] = mspc; + ints[1] = msite; + ints[2] = ncats; + ints[3] = nptrn; + ints[4] = rad; + ints[5] = outgr; + ints[6] = rseed; + doubles[0] = frconst; + + MPI_Address(ints, Dtypeaddr); + MPI_Address(doubles, (Dtypeaddr+1)); + + MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Sizes); + MPI_Type_commit(&PP_Sizes); + + for (dest=1; dest (%2d) Sent Sizes\n", PP_Myid, dest); +# endif /* PVERBOSE3 */ + + } /* for each slave */ + + MPI_Type_free(&PP_Sizes); + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent Sizes\n", PP_Myid); +# endif /* PVERBOSE3 */ + +# undef NUMINT +# undef NUMDBL +} /* PP_SendSizes */ + + +/******************/ + +void PP_RecvSizes(int *mspc, + int *msite, + int *ncats, + int *nptrn, + int *rad, + int *outgr, + double *frconst, + int *rseed) +{ +# define NUMINT 7 +# define NUMDBL 1 + int ints[NUMINT]; + double doubles[NUMDBL]; + MPI_Datatype Dtypes[2] = {MPI_INT, MPI_DOUBLE}; + int Dtypelens[2] = {NUMINT , NUMDBL}; + MPI_Aint Dtypeaddr[2]; + MPI_Datatype PP_Sizes; + MPI_Status stat; + int error; + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) Receiving Sizes ...\n", PP_Myid); +# endif /* PVERBOSE3 */ + + MPI_Address(ints, Dtypeaddr); + MPI_Address(doubles, (Dtypeaddr+1)); + + MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Sizes); + MPI_Type_commit(&PP_Sizes); + + error = MPI_Probe(PP_MyMaster, MPI_ANY_TAG, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 700+PP_Myid, error); + if (stat.MPI_TAG != PP_SIZES) { + if (stat.MPI_TAG == PP_DONE) { + PP_RecvDone(); +# ifdef PVERBOSE1 + FPRINTF(STDOUTFILE "(%2d) Finishing...\n", PP_Myid); +# endif /* PVERBOSE1 */ + MPI_Finalize(); + exit(1); + } else { + FPRINTF(STDOUTFILE "(%2d) Error: unexpected TAG received...\n", PP_Myid); + MPI_Finalize(); + exit(1); + } + } + + error = MPI_Recv(MPI_BOTTOM, 1, PP_Sizes, PP_MyMaster, MPI_ANY_TAG, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 700+PP_Myid, error); + if (stat.MPI_TAG != PP_SIZES) { + FPRINTF(STDOUTFILE "(%2d) Error: unexpected TAG received...\n", PP_Myid); + MPI_Finalize(); + exit(1); + } + + *mspc = ints[0]; + *msite = ints[1]; + *ncats = ints[2]; + *nptrn = ints[3]; + *rad = ints[4]; + *outgr = ints[5]; + *rseed = ints[6]; + *frconst = doubles[0]; + + MPI_Type_free(&PP_Sizes); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) <- (%2d) Received: Maxspec=%d Maxsite=%d numcats=%d\n", PP_Myid, PP_MyMaster, *mspc, *msite, *ncats); + FPRINTF(STDOUTFILE "(%2d) Numprtn=%d tpmradix=%d fracconst=%.3f\n", PP_Myid, *nptrn, *rad, *frconst); +# endif /* PVERBOSE2 */ + +# undef NUMINT +# undef NUMDBL +} /* PP_RecvSizes */ + + + +/********************************************************************* +* sending/receiving the data matrizes (M->S) * +*********************************************************************/ + +void PP_RecvData( + cmatrix Seqpat, /* cmatrix (Maxspc x Numptrn) */ + ivector Alias, /* ivector (Maxsite) */ + ivector Weight, /* ivector (Numptrn) */ + ivector constpat, + dvector Rates, /* dvector (numcats) */ + dvector Eval, /* dvector (tpmradix) */ + dvector Freqtpm, + dmatrix Evec, /* dmatrix (tpmradix x tpmradix) */ + dmatrix Ievc, + dmatrix iexp, + dmatrix Distanmat, /* dmatrix (Maxspc x Maxspc) */ + dcube ltprobr) /* dcube (numcats x tpmradix x tpmradix) */ +{ + MPI_Datatype Dtypes[12]; + int Dtypelens[12]; + MPI_Aint Dtypeaddr[12]; + MPI_Datatype PP_Data; + MPI_Status stat; + int error; + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) Receiving Sizes ...\n", PP_Myid); +# endif /* PVERBOSE2 */ + + Dtypes [0] = MPI_CHAR; Dtypelens [0] = Maxspc * Numptrn; + MPI_Address(&(Seqpat[0][0]), &(Dtypeaddr[0])); + Dtypes [1] = MPI_INT; Dtypelens [1] = Maxsite ; + MPI_Address(&(Alias[0]), &(Dtypeaddr[1])); + Dtypes [2] = MPI_INT; Dtypelens [2] = Numptrn ; + MPI_Address(&(Weight[0]), &(Dtypeaddr[2])); + Dtypes [3] = MPI_INT; Dtypelens [3] = Numptrn ; + MPI_Address(&(constpat[0]), &(Dtypeaddr[3])); + Dtypes [4] = MPI_DOUBLE; Dtypelens [4] = numcats ; + MPI_Address(&(Rates[0]), &(Dtypeaddr[4])); + Dtypes [5] = MPI_DOUBLE; Dtypelens [5] = tpmradix ; + MPI_Address(&(Eval[0]), &(Dtypeaddr[5])); + Dtypes [6] = MPI_DOUBLE; Dtypelens [6] = tpmradix ; + MPI_Address(&(Freqtpm[0]), &(Dtypeaddr[6])); + Dtypes [7] = MPI_DOUBLE; Dtypelens [7] = tpmradix * tpmradix ; + MPI_Address(&(Evec[0][0]), &(Dtypeaddr[7])); + Dtypes [8] = MPI_DOUBLE; Dtypelens [8] = tpmradix * tpmradix ; + MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[8])); + Dtypes [9] = MPI_DOUBLE; Dtypelens [9] = tpmradix * tpmradix ; + MPI_Address(&(iexp[0][0]), &(Dtypeaddr[9])); + Dtypes [10] = MPI_DOUBLE; Dtypelens [10] = Maxspc * Maxspc ; + MPI_Address(&(Distanmat[0][0]), &(Dtypeaddr[10])); + Dtypes [11] = MPI_DOUBLE; Dtypelens [11] = numcats * tpmradix * tpmradix ; + MPI_Address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); + + MPI_Type_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); + MPI_Type_commit(&PP_Data); + + + error = MPI_Probe(PP_MyMaster, MPI_ANY_TAG, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 700+PP_Myid, error); + if (stat.MPI_TAG != PP_DATA) { + if (stat.MPI_TAG == PP_DONE) { + PP_RecvDone(); +# ifdef PVERBOSE1 + FPRINTF(STDOUTFILE "(%2d) Finishing...\n", PP_Myid); +# endif /* PVERBOSE1 */ + MPI_Finalize(); + exit(1); + } else { + FPRINTF(STDOUTFILE "(%2d) Error: unexpected TAG received...\n", PP_Myid); + MPI_Finalize(); + exit(1); + } + } + + + error = MPI_Recv(MPI_BOTTOM, 1, PP_Data, PP_MyMaster, PP_DATA, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 900+PP_Myid, error); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) <- (%2d) Received : Alias(0)=%d - Weight(0)=%d - constpat(0)=%d\n", PP_Myid, PP_MyMaster, Alias[0], Weight[0], constpat[0]); + FPRINTF(STDOUTFILE "(%2d) Rates(0)=%.3f - Eval(0)=%.3f - Freqtpm(0)=%.3f\n", PP_Myid, Rates[0], Eval[0], Freqtpm[0]); + FPRINTF(STDOUTFILE "(%2d) Evec(0,0)=%.3f - Ievc(0,0)=%.3f - iexp(0,0)=%.3f - Distanmat(0,1)=%.3f\n", PP_Myid, Evec[0][0], Ievc[0][0], iexp[0][0], Distanmat[0][1]); + FPRINTF(STDOUTFILE "(%2d) Distanmat(0,1)=%.3f\n", PP_Myid, Distanmat[0][1]); + FPRINTF(STDOUTFILE "(%2d) ltprobr(0,0,0)=%.3f\n", PP_Myid, ltprobr[0][0][0]); +# endif /* PVERBOSE2 */ + + MPI_Type_free(&PP_Data); + +} /* PP_RecvData */ + + +/******************/ + +void PP_SendData( + cmatrix Seqpat, /* cmatrix (Maxspc x Numptrn) */ + ivector Alias, /* ivector (Maxsite) */ + ivector Weight, /* ivector (Numptrn) */ + ivector constpat, + dvector Rates, /* dvector (numcats) */ + dvector Eval, /* dvector (tpmradix) */ + dvector Freqtpm, + dmatrix Evec, /* dmatrix (tpmradix x tpmradix) */ + dmatrix Ievc, + dmatrix iexp, + dmatrix Distanmat, /* dmatrix (Maxspc x Maxspc) */ + dcube ltprobr) /* dcube (numcats x tpmradix x tpmradix) */ +{ + MPI_Datatype Dtypes[12]; + int Dtypelens[12]; + MPI_Aint Dtypeaddr[12]; + MPI_Datatype PP_Data; + int dest; + int error; + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending: Alias(0)=%d - Weight(0)=%d - constpat(0)=%d\n", PP_Myid, Alias[0], Weight[0], constpat[0]); + FPRINTF(STDOUTFILE "(%2d) Rates(0)=%.3f - Eval(0)=%.3f - Freqtpm(0)=%.3f\n", PP_Myid, Rates[0], Eval[0], Freqtpm[0]); + FPRINTF(STDOUTFILE "(%2d) Evec(0,0)=%.3f - Ievc(0,0)=%.3f - iexp(0,0)=%.3f - Distanmat(0,1)=%.3f\n", PP_Myid, Evec[0][0], Ievc[0][0], iexp[0][0], Distanmat[0][1]); + FPRINTF(STDOUTFILE "(%2d) ltprobr(0,0,0)=%.3f\n", PP_Myid, ltprobr[0][0][0]); +# endif /* PVERBOSE2 */ + + Dtypes [0] = MPI_CHAR; Dtypelens [0] = Maxspc * Numptrn; + MPI_Address(&(Seqpat[0][0]), &(Dtypeaddr[0])); + Dtypes [1] = MPI_INT; Dtypelens [1] = Maxsite ; + MPI_Address(&(Alias[0]), &(Dtypeaddr[1])); + Dtypes [2] = MPI_INT; Dtypelens [2] = Numptrn ; + MPI_Address(&(Weight[0]), &(Dtypeaddr[2])); + Dtypes [3] = MPI_INT; Dtypelens [3] = Numptrn ; + MPI_Address(&(constpat[0]), &(Dtypeaddr[3])); + Dtypes [4] = MPI_DOUBLE; Dtypelens [4] = numcats ; + MPI_Address(&(Rates[0]), &(Dtypeaddr[4])); + Dtypes [5] = MPI_DOUBLE; Dtypelens [5] = tpmradix ; + MPI_Address(&(Eval[0]), &(Dtypeaddr[5])); + Dtypes [6] = MPI_DOUBLE; Dtypelens [6] = tpmradix ; + MPI_Address(&(Freqtpm[0]), &(Dtypeaddr[6])); + Dtypes [7] = MPI_DOUBLE; Dtypelens [7] = tpmradix * tpmradix ; + MPI_Address(&(Evec[0][0]), &(Dtypeaddr[7])); + Dtypes [8] = MPI_DOUBLE; Dtypelens [8] = tpmradix * tpmradix ; + MPI_Address(&(Ievc[0][0]), &(Dtypeaddr[8])); + Dtypes [9] = MPI_DOUBLE; Dtypelens [9] = tpmradix * tpmradix ; + MPI_Address(&(iexp[0][0]), &(Dtypeaddr [9])); + Dtypes [10] = MPI_DOUBLE; Dtypelens [10] = Maxspc * Maxspc ; + MPI_Address(&(Distanmat[0][0]), &(Dtypeaddr[10])); + Dtypes [11] = MPI_DOUBLE; Dtypelens [11] = numcats * tpmradix * tpmradix ; + MPI_Address(&(ltprobr[0][0][0]), &(Dtypeaddr[11])); + + MPI_Type_struct(12, Dtypelens, Dtypeaddr, Dtypes, &PP_Data); + MPI_Type_commit(&PP_Data); + + for (dest=1; dest (%2d) Sent Data\n", PP_Myid, dest); +# endif /* PVERBOSE2 */ + + } /* for each slave */ + + MPI_Type_free(&PP_Data); + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent Data\n", PP_Myid); +# endif /* PVERBOSE2 */ + +} /* PP_SendData */ + + +/************************************************************************** +* procedures to send the request to compute a single quartet (M->S) * +**************************************************************************/ + +void PP_SendDoQuart(int dest, + int a, + int b, + int c, + int d, + int approx) +{ +# define NUMINT 5 + int ints[NUMINT]; + int error; + + ints[0] = a; + ints[1] = b; + ints[2] = c; + ints[3] = d; + ints[4] = approx; + + PP_doquartsent++; + PP_doquartsentn++; + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending -> (%2d): Quart(%d,%d,%d,%d)\n", PP_Myid, dest, a, b, c, d); +# endif /* PVERBOSE2 */ + + error = MPI_Ssend(ints, NUMINT, MPI_INT, dest, PP_DOQUART, PP_Comm); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, PP_Myid, error); + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent \n", PP_Myid); +# endif /* PVERBOSE3 */ +# undef NUMINT + +} /* PP_SendDoQuart */ + + + +/******************/ + +void PP_RecvDoQuart(int *a, + int *b, + int *c, + int *d, + int *approx) +{ +# define NUMINT 5 + int ints[NUMINT]; + int error; + MPI_Status stat; + PP_doquartrecved++; + PP_doquartrecvedn++; + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) Receiving: Quart\n", PP_Myid); +# endif /* PVERBOSE3 */ + + error = MPI_Recv(ints, NUMINT, MPI_INT, PP_MyMaster, PP_DOQUART, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 200+PP_Myid, error); + + *a = ints[0]; + *b = ints[1]; + *c = ints[2]; + *d = ints[3]; + *approx = ints[4]; + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Received: Quart(%d,%d,%d,%d,%c)\n", PP_Myid, *a, *b, *c, *d, (approx ? 'A' : 'E')); +# endif /* PVERBOSE2 */ +# undef NUMINT + +} /* PP_RecvDoQuart */ + + +/************************************************************************** +* procedures to send the result of a single quartet (S->M) * +**************************************************************************/ + +void PP_SendQuart(int a, + int b, + int c, + int d, + double d1, + double d2, + double d3, + int approx) +{ +# define NUMINT 5 +# define NUMDBL 3 + int ints[NUMINT]; + double doubles[NUMDBL]; + MPI_Datatype Dtypes[2] = {MPI_INT, MPI_DOUBLE}; + int Dtypelens[2] = {NUMINT , NUMDBL}; + MPI_Aint Dtypeaddr[2]; + MPI_Datatype PP_Quart; + int error; + + PP_quartsent++; + PP_quartsentn++; + ints[0] = a; + ints[1] = b; + ints[2] = c; + ints[3] = d; + ints[4] = approx; + doubles[0] = d1; + doubles[1] = d2; + doubles[2] = d3; + + MPI_Address(ints, Dtypeaddr); + MPI_Address(doubles, (Dtypeaddr+1)); + + MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Quart); + MPI_Type_commit(&PP_Quart); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending: Quart(%d,%d,%d,%d) = (%.3f, %.3f, %.3f)\n", PP_Myid, a, b, c, d, d1, d2, d3); +# endif /* PVERBOSE2 */ + + error = MPI_Ssend(MPI_BOTTOM, 1, PP_Quart, PP_MyMaster, PP_QUART, PP_Comm); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 400+PP_Myid, error); + + MPI_Type_free(&PP_Quart); + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent \n", PP_Myid); +# endif /* PVERBOSE3 */ +# undef NUMINT +# undef NUMDBL + +} /* PP_SendQuart */ + + + +/******************/ + +void PP_RecvQuart(int *a, + int *b, + int *c, + int *d, + double *d1, + double *d2, + double *d3, + int *approx) +{ +# define NUMINT 5 +# define NUMDBL 3 + int ints[NUMINT]; + double doubles[NUMDBL]; + MPI_Datatype Dtypes[2] = {MPI_INT, MPI_DOUBLE}; + int Dtypelens[2] = {NUMINT , NUMDBL}; + MPI_Aint Dtypeaddr[2]; + MPI_Datatype PP_Quart; + int error; + MPI_Status stat; + + PP_quartrecved++; + PP_quartrecvedn++; + MPI_Address(ints, Dtypeaddr); + MPI_Address(doubles, (Dtypeaddr+1)); + + MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_Quart); + MPI_Type_commit(&PP_Quart); + + error = MPI_Recv(MPI_BOTTOM, 1, PP_Quart, MPI_ANY_SOURCE, PP_QUART, PP_Comm, &stat); + + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 500+PP_Myid, error); + + PP_putslave(stat.MPI_SOURCE); + + *a = ints[0]; + *b = ints[1]; + *c = ints[2]; + *d = ints[3]; + *d1 = doubles[0]; + *d2 = doubles[1]; + *d3 = doubles[2]; + *approx = ints[4]; + + MPI_Type_free(&PP_Quart); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Received <- (%2d): Quart(%d,%d,%d,%d)=(%.3f, %.3f, %.3f)\n", PP_Myid, stat.MPI_SOURCE, *a, *b, *c, *d, *d1, *d2, *d3); +# endif /* PVERBOSE2 */ +# undef NUMINT +# undef NUMDBL + +} /* PP_RecvQuart */ + + + +/************************************************************************** +* procedures to send the request to compute a block of quartets (M->S) * +**************************************************************************/ + +void PP_SendDoQuartBlock(int dest, uli firstq, uli amount, int approx) +{ +# define NUMULI 3 + uli ulongs[NUMULI]; + int error; + + PP_doquartsent += amount; + PP_doquartsentn++; +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending: DOQuartBlock Signal\n", PP_Myid); +# endif /* PVERBOSE2 */ + + ulongs[0] = firstq; + ulongs[1] = amount; + ulongs[2] = (uli)approx; + + error = MPI_Ssend(ulongs, NUMULI, MPI_UNSIGNED_LONG, dest, PP_DOQUARTBLOCK, PP_Comm); + if (error != MPI_SUCCESS) PP_Printerror(STDOUT, 2100+PP_Myid, error); + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent DOQuartBlock Signal (addr:%ld, num:%ld)\n", PP_Myid, firstq, amount); +# endif /* PVERBOSE3 */ +# undef NUMULI + +} /* PP_SendDoQuartBlock */ + +/******************/ + +void PP_RecvDoQuartBlock(uli *firstq, uli *amount, uli **bq, int *approx) +{ +# define NUMULI 3 + uli ulongs[NUMULI]; + MPI_Status stat; + int error; + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Receiving: DOQuartBlock Signal\n", PP_Myid); +# endif /* PVERBOSE2 */ + + error = MPI_Recv(&ulongs, NUMULI, MPI_UNSIGNED_LONG, PP_MyMaster, PP_DOQUARTBLOCK, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 2100+PP_Myid, error); + + *firstq=ulongs[0]; + *amount=ulongs[1]; + *approx= (int)ulongs[2]; + + *bq = malloc((unsigned)*amount * sizeof(uli)); + + PP_doquartrecved += *amount; + PP_doquartrecvedn++; + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... DOQuartBlock (addr:%ld, num:%ld)\n", + PP_Myid, *firstq, *amount); +# endif /* PVERBOSE3 */ + +# undef NUMULI +} /* PP_RecvDoQuartBlock */ + +/********************************************************************* +* procedures to send the results of a block of quartets (S->M) * +*********************************************************************/ + +void PP_SendQuartBlock(uli startq, + uli numofq, + unsigned char *quartetinfo, + uli numofbq, + uli *bq, + int approx) +{ +# define NUMULI 3 +# define NUMINT 1 + unsigned char *trueaddr; + uli truenum; + int error; + int ints[NUMINT]; + uli ulis[NUMULI]; + MPI_Datatype Dtypes[2] = {MPI_UNSIGNED_LONG, MPI_INT}; + int Dtypelens[2] = {NUMULI, NUMINT}; + MPI_Aint Dtypeaddr[2]; + MPI_Datatype PP_QBlockSpecs; + MPI_Datatype DtypesRes[2] = {MPI_UNSIGNED_CHAR, MPI_UNSIGNED_LONG}; + int DtypelensRes[2]; + MPI_Aint DtypeaddrRes[2]; + MPI_Datatype PP_QBlockRes; + +/* + uli *bq; + uli numofbq; +*/ + + PP_quartsent += numofq; + PP_quartsentn++; + + truenum = (uli)((numofq+1)/2); + trueaddr = (unsigned char *)(quartetinfo + (uli)(startq/2)); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending: startq=%lud numofq=%lud\n", PP_Myid, startq, numofq); + FPRINTF(STDOUTFILE "(%2d) approx=%c\n", PP_Myid, (approx ? 'A' : 'E')); +# endif /* PVERBOSE2 */ + + ints[0] = approx; + ulis[0] = startq; + ulis[1] = numofq; + ulis[2] = numofbq; + + MPI_Address(ulis, Dtypeaddr); + MPI_Address(ints, (Dtypeaddr+1)); + + MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); + MPI_Type_commit(&PP_QBlockSpecs); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending: xxPP_QuartBlockSpecs(0,%lu)=%d,%d\n", PP_Myid, truenum-1, trueaddr[0], trueaddr[truenum-1]); +# endif /* PVERBOSE2 */ + + + error = MPI_Ssend(MPI_BOTTOM, 1, PP_QBlockSpecs, PP_MyMaster, PP_QUARTBLOCKSPECS, PP_Comm); +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent QuartBlockSpecs (%ld, %ld, %ld, %d)\n", PP_Myid, ulis[0], ulis[1], ulis[2], ints[0]); +# endif /* PVERBOSE3 */ + + MPI_Address(trueaddr, DtypeaddrRes); + DtypelensRes[0] = truenum; + + MPI_Address(bq, (DtypeaddrRes + 1)); + DtypelensRes[1] = numofbq; + MPI_Type_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); + MPI_Type_commit(&PP_QBlockRes); + + error = MPI_Ssend(MPI_BOTTOM, 1, PP_QBlockRes, PP_MyMaster, PP_QUARTBLOCK, PP_Comm); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, PP_Myid, error); + + MPI_Type_free(&PP_QBlockSpecs); + MPI_Type_free(&PP_QBlockRes); +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent xxPP_QuartBlock(0,%lu)=%d,%d\n", PP_Myid, truenum-1, trueaddr[0], trueaddr[truenum-1]); +# endif /* PVERBOSE3 */ + +# undef NUMULI +# undef NUMINT +} /* PP_SendQuartBlock */ + + + +/******************/ + +void PP_RecvQuartBlock(int slave, + uli *startq, + uli *numofq, + unsigned char *quartetinfo, + int *approx) +{ +# define NUMULI 3 +# define NUMINT 1 + unsigned char *trueaddr; + uli truenum; + int error; + int dest; + int ints[NUMINT]; + uli ulis[NUMULI]; + MPI_Datatype Dtypes[2] = {MPI_UNSIGNED_LONG, MPI_INT}; + int Dtypelens[2] = {NUMULI, NUMINT}; + MPI_Aint Dtypeaddr[2]; + MPI_Datatype PP_QBlockSpecs; + MPI_Datatype DtypesRes[2] = {MPI_UNSIGNED_CHAR, MPI_UNSIGNED_LONG}; + int DtypelensRes[2]; + MPI_Aint DtypeaddrRes[2]; + MPI_Datatype PP_QBlockRes; + MPI_Status stat; + uli count; +uli num; +uli *numofbq; +uli *bq; +numofbq=# +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) Receiving QuartBlock ...\n", PP_Myid); +# endif /* PVERBOSE3 */ + MPI_Address(ulis, Dtypeaddr); + MPI_Address(ints, (Dtypeaddr+1)); + + MPI_Type_struct(2, Dtypelens, Dtypeaddr, Dtypes, &PP_QBlockSpecs); + MPI_Type_commit(&PP_QBlockSpecs); + + MPI_Probe(MPI_ANY_SOURCE, PP_QUARTBLOCKSPECS, PP_Comm, &stat); + dest = stat.MPI_SOURCE; + error = MPI_Recv(MPI_BOTTOM, 1, PP_QBlockSpecs, dest, PP_QUARTBLOCKSPECS, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, PP_Myid, error); + + *approx = ints[0]; + *startq = ulis[0]; + *numofq = ulis[1]; + *numofbq = ulis[2]; + + PP_quartrecved += *numofq; + PP_quartrecvedn++; + truenum = (uli)((*numofq+1)/2); + trueaddr = (unsigned char *)(quartetinfo + (uli)(*startq/2)); +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Recv QuartBlockSpecs (%ld, %ld, %ld, %d)\n", PP_Myid, ulis[0], ulis[1], ulis[2], ints[0]); +# endif /* PVERBOSE3 */ + + DtypelensRes[0] = truenum; + MPI_Address(trueaddr, DtypeaddrRes); + + bq = malloc((unsigned) *numofbq * sizeof(uli)); + + DtypelensRes[1] = *numofbq; + MPI_Address(bq, (DtypeaddrRes+1)); + MPI_Type_struct(2, DtypelensRes, DtypeaddrRes, DtypesRes, &PP_QBlockRes); + MPI_Type_commit(&PP_QBlockRes); + + error = MPI_Recv(MPI_BOTTOM, 1, PP_QBlockRes, dest, PP_QUARTBLOCK, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, PP_Myid, error); +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Recv QuartBlock \n", PP_Myid); +# endif /* PVERBOSE3 */ + + PP_putslave(dest); + + for(count = 0; count < *numofbq; count++){ + int a, b, c, d; + num2quart(bq[count], &a, &b, &c, &d); +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) %ld. bad quarted (%d, %d, %d, %d) = %ld\n", PP_Myid, count, a, b, c, d, bq[count]); +# endif /* PVERBOSE2 */ + + badqs++; + badtaxon[a]++; + badtaxon[b]++; + badtaxon[c]++; + badtaxon[d]++; + if (show_optn) { + fputid10(unresfp, a); + fprintf(unresfp, " "); + fputid10(unresfp, b); + fprintf(unresfp, " "); + fputid10(unresfp, c); + fprintf(unresfp, " "); + fputid(unresfp, d); + fprintf(unresfp, "\n"); + } + } + free(bq); + MPI_Type_free(&PP_QBlockSpecs); + MPI_Type_free(&PP_QBlockRes); +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) <- (%2d) ... Recv xxPP_QuartBlock(0,%lu)=%d,%d\n", PP_Myid, dest, truenum-1, trueaddr[0], trueaddr[truenum-1]); +# endif /* PVERBOSE2 */ + +# undef NUMULI +# undef NUMINT +} /* PP_RecvQuartBlock */ + + +/********************************************************************* +* send/receive array with all quartets (M->S) * +*********************************************************************/ + +void PP_SendAllQuarts(unsigned long Numquartets, + unsigned char *quartetinfo) +{ + MPI_Datatype Dtypes[1] = {MPI_UNSIGNED_CHAR}; + int Dtypelens[1]; + MPI_Aint Dtypeaddr[1]; + MPI_Datatype PP_AllQuarts; + int dest; + int error; + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending: PP_AllQuart(0)=%d\n", PP_Myid, quartetinfo[0]); +# endif /* PVERBOSE2 */ + + /* compute number of quartets */ + if (Numquartets % 2 == 0) { /* even number */ + Dtypelens[0] = (Numquartets)/2; + } else { /* odd number */ + Dtypelens[0] = (Numquartets + 1)/2; + } + + MPI_Address(&(quartetinfo[0]), Dtypeaddr); + MPI_Type_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); + MPI_Type_commit(&PP_AllQuarts); + + for (dest=1; dest (%2d) ... Sent xxAllQuart(0,%d)=%d,%d (%luq -> %db)\n", + PP_Myid, dest, Dtypelens[0]-1, quartetinfo[0], quartetinfo[Dtypelens[0]-1], + Numquartets, Dtypelens[0]-1); +# endif /* PVERBOSE3 */ + } /* for each slave */ + + MPI_Type_free(&PP_AllQuarts); + + +} /* PP_SendAllQuarts */ + + + +/******************/ + +void PP_RecvAllQuarts(int taxa, + unsigned long *Numquartets, + unsigned char *quartetinfo) +{ + MPI_Datatype Dtypes[1] = {MPI_UNSIGNED_CHAR}; + int Dtypelens[1]; + MPI_Aint Dtypeaddr[1]; + MPI_Datatype PP_AllQuarts; + MPI_Status stat; + int error; + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) Receiving AllQuarts ...\n", PP_Myid); +# endif /* PVERBOSE3 */ + + /* compute number of quartets */ + *Numquartets = (uli) taxa*(taxa-1)*(taxa-2)*(taxa-3)/24; + if (*Numquartets % 2 == 0) { /* even number */ + Dtypelens[0] = (*Numquartets)/2; + } else { /* odd number */ + Dtypelens[0] = (*Numquartets + 1)/2; + } + + MPI_Address(&(quartetinfo[0]), Dtypeaddr); + MPI_Type_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_AllQuarts); + MPI_Type_commit(&PP_AllQuarts); + + error = MPI_Recv(MPI_BOTTOM, 1, PP_AllQuarts, PP_MyMaster, PP_ALLQUARTS, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 1300+PP_Myid, error); + + MPI_Type_free(&PP_AllQuarts); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) <- (%2d) ... Recv xxAllQuart(0,%d)=%d,%d (%luq -> %db)\n", + PP_Myid, PP_MyMaster, Dtypelens[0]-1, quartetinfo[0], quartetinfo[Dtypelens[0]-1], + *Numquartets, Dtypelens[0]-1); +# endif /* PVERBOSE2 */ + +} /* PP_RecvAllQuarts */ + + + +/********************************************************************* +* procedures to send request for a single puzzle tree * +*********************************************************************/ + +void PP_SendPermut(int dest, + int taxa, + ivector permut) +{ + MPI_Datatype Dtypes[1] = {MPI_INT}; + int Dtypelens[1]; + MPI_Aint Dtypeaddr[1]; + MPI_Datatype PP_Permut; + int error; + + PP_permutsent++; + PP_permutsentn++; + Dtypelens[0] = taxa; + + MPI_Address(&(permut[0]), Dtypeaddr); + MPI_Type_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_Permut); + MPI_Type_commit(&PP_Permut); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending -> (%2d): PP_Permut(0)=%d\n", PP_Myid, dest, permut[0]); +# endif /* PVERBOSE2 */ + + error = MPI_Ssend(MPI_BOTTOM, 1, PP_Permut, dest, PP_DOPUZZLE, PP_Comm); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 1500+PP_Myid, error); + + MPI_Type_free(&PP_Permut); + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent PP_Permut\n", PP_Myid); +# endif /* PVERBOSE3 */ + +} /* PP_SendPermut */ + +/******************/ + +void PP_RecvPermut(int taxa, + ivector permut) +{ + MPI_Datatype Dtypes[1] = {MPI_INT}; + int Dtypelens[1]; + MPI_Aint Dtypeaddr[1]; + MPI_Datatype PP_Permut; + MPI_Status stat; + int error; + + PP_permutrecved++; + PP_permutrecvedn++; +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) Receiving: PP_Permut\n", PP_Myid); +# endif /* PVERBOSE3 */ + + Dtypelens[0] = taxa; + + MPI_Address(&(permut[0]), Dtypeaddr); + MPI_Type_struct(1, Dtypelens, Dtypeaddr, Dtypes, &PP_Permut); + MPI_Type_commit(&PP_Permut); + + error = MPI_Recv(MPI_BOTTOM, 1, PP_Permut, PP_MyMaster, PP_DOPUZZLE, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 1700+PP_Myid, error); + + MPI_Type_free(&PP_Permut); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Received: PP_Permut(0)=%d\n", PP_Myid, permut[0]); +# endif /* PVERBOSE2 */ + +} /* PP_RecvPermut */ + +/********************************************************************* +* procedures to send the splits of a puzzle tree to the master * +*********************************************************************/ + +void PP_SendSplitsBlock(int taxa, + uli blocksize, + cmatrix *biparts, + int pstnum, + treelistitemtype *pstlist) +{ + MPI_Datatype *Dtypes; + int *Dtypelens; + MPI_Aint *Dtypeaddr; + MPI_Datatype PP_Biparts; + int error; + int n; + int ints[3]; + int *pstnumarr; + treelistitemtype *pstptr; + + PP_splitsent+=blocksize; + PP_splitsentn++; + + ints[0] = taxa; + ints[1] = (int) blocksize; + ints[2] = pstnum; + error = MPI_Ssend(ints, 3, MPI_INT, PP_MyMaster, PP_PUZZLEBLOCKSPECS, PP_Comm); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 1800+PP_Myid, error); + + Dtypes = malloc((blocksize + pstnum + 1) * sizeof(MPI_Datatype)); + Dtypelens = malloc((blocksize + pstnum + 1) * sizeof(int)); + Dtypeaddr = malloc((blocksize + pstnum + 1) * sizeof(MPI_Aint)); + pstnumarr = malloc(pstnum * sizeof(int)); + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Sending: PP_bipartsblock(0..%lu,0,0)8=\"%c\"\n", PP_Myid, blocksize, biparts[0][0][0]); +# endif /* PVERBOSE2 */ + + for (n=0; n<(int)blocksize; n++) { + Dtypes[n] = MPI_CHAR; + Dtypelens[n] = (taxa - 3) * taxa; + MPI_Address(&(biparts[n][0][0]), &(Dtypeaddr[n])); + } + pstptr = pstlist; + for (n=0; n%d: [%d/%d] #=%d \"%s\"\n", + PP_Myid, PP_MyMaster, n, pstnum, pstnumarr[n], (*pstptr).tree); +# endif /* PVERBOSE3 */ + pstptr = (*pstptr).succ; + } + Dtypes[((int)blocksize + pstnum)] = MPI_INT; + Dtypelens[((int)blocksize + pstnum)] = pstnum; + MPI_Address(&(pstnumarr[0]), &(Dtypeaddr[((int)blocksize + pstnum)])); + + MPI_Type_struct(((int)blocksize + pstnum + 1), Dtypelens, Dtypeaddr, Dtypes, &PP_Biparts); + MPI_Type_commit(&PP_Biparts); + + error = MPI_Ssend(MPI_BOTTOM, 1, PP_Biparts, PP_MyMaster, PP_PUZZLEBLOCK, PP_Comm); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 1800+PP_Myid, error); + + MPI_Type_free(&PP_Biparts); + free(Dtypes); + free(Dtypelens); + free(Dtypeaddr); + free(pstnumarr); + +# ifdef PVERBOSE3 + FPRINTF(STDOUTFILE "(%2d) ... Sent PP_bipartsblock\n", PP_Myid); +# endif /* PVERBOSE3 */ + +} /* PP_SendSplitsBlock */ + +/******************/ + +void PP_RecvSplitsBlock(int *taxa, + uli *blocksize, + cmatrix **bip, + treelistitemtype **pstlist, + int *pstnum, + int *pstsum) +/* bp -> (*bip) */ +{ + MPI_Datatype *Dtypes; + int *Dtypelens; + MPI_Aint *Dtypeaddr; + MPI_Datatype PP_Biparts; + MPI_Status stat; + int error; + int n; + int dest; + int ints[3]; + int pstlistnum; + int tmpnum; + int tmpsum; + int *pstnumarr; + char **pstarr; + treelistitemtype *treeitem; + + error = MPI_Recv(ints, 3, MPI_INT, MPI_ANY_SOURCE, PP_PUZZLEBLOCKSPECS, PP_Comm, &stat); + if (error != MPI_SUCCESS) + PP_Printerror(STDOUT, 1900+PP_Myid, error); + + dest = stat.MPI_SOURCE; + *taxa = ints[0]; + *blocksize = (uli) ints[1]; + pstlistnum = ints[2]; + +# ifdef PVERBOSE2 + FPRINTF(STDOUTFILE "(%2d) Received<-%d: PP_bipartsblockspec(t=%d,b=%ld,p=%d)\n", PP_Myid, dest, *taxa, *blocksize, pstlistnum); +# endif /* PVERBOSE2 */ + + PP_splitrecved += *blocksize; + PP_splitrecvedn++; + + Dtypes = malloc((*blocksize + pstlistnum + 1) * sizeof(MPI_Datatype)); + Dtypelens = malloc((*blocksize + pstlistnum + 1) * sizeof(int)); + Dtypeaddr = malloc((*blocksize + pstlistnum + 1) * sizeof(MPI_Aint)); + (*bip) = (cmatrix *) malloc(*blocksize * sizeof(void *)); + pstnumarr = (int *) malloc(pstlistnum * sizeof(int)); + pstarr = (char **) malloc(pstlistnum * sizeof(char *)); + +/* pstarr[0] = (char *) malloc(psteptreestrlen * pstlistnum * sizeof(char)); + for(n=1; n 0) { + if (PP_emptyslave()) { + PP_RecvSplitsBlock(&tx, &bs, &bp, &psteptreelist, &psteptreenum, &psteptreesum); + for (bipnum=0; bipnum 0) { + PP_RecvSplitsBlock(&tx, &bs, &bp, &psteptreelist, &psteptreenum, &psteptreesum); + for (bipnum=0; bipnum%4ld (%dx%ld)\n", PP_Myid, qstart, qend, PP_NumProcs-1, qtodo); +# endif + + addtimes(GENERAL, &tarr); + for (i = 3; i < Maxspc; i++) + for (c = 2; c < i; c++) + for (b = 1; b < c; b++) + for (a = 0; a < b; a++) { + + idx = (uli) a + + (uli) b*(b-1)/2 + + (uli) c*(c-1)*(c-2)/6 + + (uli) i*(i-1)*(i-2)*(i-3)/24; + if ((idx >= qstart) && (idx <= qend)) { +# ifdef PVERBOSE4 + FPRINTF(STDOUTFILE "(%2d) %4ld <---> (%d,%d,%d,%d)\n",PP_Myid, idx, a,b,c,i); +# endif + compute_quartlklhds(a,b,c,i,&d1,&d2,&d3,approx); + PP_do_write_quart(a,b,c,i,d1,d2,d3,&nofbq,bqarr); + addtimes(QUARTETS, &tarr); + } /* if idx */ + } /* for for for for */ + PP_SendQuartBlock(qstart, qtodo, quartetinfo, nofbq, bqarr, approx); + + free(bqarr); bqarr=NULL; + + break; + } + + case PP_DOPUZZLEBLOCK: { + if (PP_AllQuartsReceived){ + uli Numtrial, ptodo; + cmatrix *bp; + int n; + + PP_RecvDoPermutBlock(&Numtrial); + ptodo = Numtrial; + + bp = (cmatrix *) malloc(Numtrial * sizeof(void *)); + for(n=0; nS */ +# define PP_SIZES 1 /* Array sizes needed M->S */ +# define PP_DATA 2 /* Data Arrays M->S */ + +# define PP_ALLQUARTS 3 /* All Quartets M->S */ + +# define PP_DOQUART 4 /* do 4Specs M->S */ +# define PP_DOQUARTX2 5 /* do 4Specs + X^2 M->S */ +# define PP_QUART 6 /* quartet back S->M */ +# define PP_QUARTX2 7 /* quartet + X^2 back S->M */ + +# define PP_DOQUARTBLOCKSPECS 8 /* do block Specs M->S */ +# define PP_DOQUARTBLOCK 9 /* do block of Quarts M->S */ +# define PP_QUARTBLOCKSPECS 10 /* block Specs S->M */ +# define PP_QUARTBLOCK 11 /* block of Quarts S->M */ + +# define PP_DOPUZZLE 12 /* do Puzzling step M->S */ +# define PP_PUZZLE 13 /* Puzzling tree back S->M */ +# define PP_DOPUZZLEBLOCK 14 /* do Puzzling block M->S */ +# define PP_DOPUZZLEBLOCKSPECS 15 /* do Puzzling block M->S */ +# define PP_PUZZLEBLOCK 16 /* Puzzling block S->M */ +# define PP_PUZZLEBLOCKSPECS 17 /* Puzzling block S->M */ + +# define PP_STATS 18 /* Slave Statistics S->M */ + +# define PP_WAIT 18 /* waiting for work S->M */ +# define PP_TEST 100 /* testing */ + +# define PERMUTQUEUESIZE 100 +# define QUARTQUEUESIZE 100 + + extern int PP_IamMaster; + extern int PP_IamSlave; + extern int PP_Myid; + extern int PP_MyMaster; + extern int PP_NumProcs; + extern MPI_Comm PP_Comm; +#endif /* PARALLEL */ + +extern int *permutsent, + *permutrecved, + *quartsent, + *quartrecved, + *doquartsent, + *doquartrecved, + *splitsent, + *splitrecved, + *permutsentn, + *permutrecvedn, + *quartsentn, + *quartrecvedn, + *doquartsentn, + *doquartrecvedn, + *splitsentn, + *splitrecvedn; +extern double *walltimes, + *cputimes; +extern double *fullwalltimes, + *fullcputimes; +extern double *altwalltimes, + *altcputimes; + +extern int PP_permutsent, + PP_permutrecved, + PP_quartsent, + PP_quartrecved, + PP_doquartsent, + PP_doquartrecved, + PP_splitsent, + PP_splitrecved, + PP_permutsentn, + PP_permutrecvedn, + PP_quartsentn, + PP_quartrecvedn, + PP_doquartsentn, + PP_doquartrecvedn, + PP_splitsentn, + PP_splitrecvedn; + +extern double PP_starttime, + PP_stoptime, + PP_inittime, + PP_paramcomptime, + PP_paramsendtime, + PP_quartcomptime, + PP_quartsendtime, + PP_puzzletime, + PP_treetime; + +void num2quart(uli qnum, int *a, int *b, int *c, int *d); +uli numquarts(int maxspc); +uli quart2num (int a, int b, int c, int d); + +int slave_main(int argc, char *argv[]); +void PP_Init(int *argc, char **argv[]); +void PP_Finalize(); +void PP_Printerror(FILE *of, int id, int err); +void PP_do_puzzling(ivector trueID); + +void PP_RecvDoQuart(int *a, + int *b, + int *c, + int *d, + int *approx); +void PP_SendDoQuart(int dest, + int a, + int b, + int c, + int d, + int approx); +void PP_RecvQuart(int *a, + int *b, + int *c, + int *d, + double *d1, + double *d2, + double *d3, + int *approx); +void PP_SendQuart(int a, + int b, + int c, + int d, + double d1, + double d2, + double d3, + int approx); +void PP_SendSizes(int mspc, + int msite, + int ncats, + int nptrn, + int rad, + int outgr, + double frconst, + int rseed); +void PP_RecvSizes(int *mspc, + int *msite, + int *ncats, + int *nptrn, + int *rad, + int *outgr, + double *frconst, + int *rseed); +void PP_RecvData( + cmatrix Seqpat, /* cmatrix (Maxspc x Numptrn) */ + ivector Alias, /* ivector (Maxsite) */ + ivector Weight, /* ivector (Numptrn) */ + ivector constpat, + dvector Rates, /* dvector (numcats) */ + dvector Eval, /* dvector (tpmradix) */ + dvector Freqtpm, + dmatrix Evec, /* dmatrix (tpmradix x tpmradix) */ + dmatrix Ievc, + dmatrix iexp, + dmatrix Distanmat, /* dmatrix (Maxspc x Maxspc) */ + dcube ltprobr); /* dcube (numcats x tpmradix x tpmradix) */ +void PP_SendData( + cmatrix Seqpat, /* cmatrix (Maxspc x Numptrn) */ + ivector Alias, /* ivector (Maxsite) */ + ivector Weight, /* ivector (Numptrn) */ + ivector constpat, + dvector Rates, /* dvector (numcats) */ + dvector Eval, /* dvector (tpmradix) */ + dvector Freqtpm, + dmatrix Evec, /* dmatrix (tpmradix x tpmradix) */ + dmatrix Ievc, + dmatrix iexp, + dmatrix Distanmat, /* dmatrix (Maxspc x Maxspc) */ + dcube ltprobr); /* dcube (numcats x tpmradix x tpmradix) */ +void PP_SendAllQuarts(unsigned long Numquartets, + unsigned char *quartetinfo); +void PP_RecvAllQuarts(int taxa, + unsigned long *Numquartets, + unsigned char *quartetinfo); + +void PP_SendDoQuartBlock(int dest, uli firstq, uli amount, int approx); +void PP_RecvDoQuartBlock(uli *firstq, uli *amount, uli **bq, int *approx); +void PP_SendQuartBlock(uli startq, + uli numofq, + unsigned char *quartetinfo, + uli numofbq, + uli *bq, + int approx); +void PP_RecvQuartBlock(int slave, + uli *startq, + uli *numofq, + unsigned char *quartetinfo, + int *approx); + +void PP_SendPermut(int dest, + int taxa, + ivector permut); +void PP_RecvPermut(int taxa, + ivector permut); +void PP_SendDoPermutBlock(uli puzzlings); +void PP_RecvDoPermutBlock(uli *taxa); + +void PP_SendSplits(int taxa, + cmatrix biparts); +void PP_RecvSplits(int taxa, + cmatrix biparts); +void PP_SendDone(); +void PP_RecvDone(); + +int PP_emptyslave(); +void PP_putslave(int sl); +int PP_getslave(); + +void PP_cmpd(int rank, double a, double b); +void PP_cmpi(int rank, int a, int b); + +#endif /* _PPUZZLE_ */ diff --git a/forester/archive/RIO/others/puzzle_mod/src/puzzle.h b/forester/archive/RIO/others/puzzle_mod/src/puzzle.h new file mode 100644 index 0000000..8165b1a --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/puzzle.h @@ -0,0 +1,493 @@ +/* + * puzzle.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef _PUZZLE_ +#define _PUZZLE_ + +#ifndef PACKAGE +# define PACKAGE "tree-puzzle" +#endif +#ifndef VERSION +# define VERSION "5.0" +#endif +#define DATE "October 2000" + +/* prototypes */ +#include +#include +#include +#include +#include +#include +#include +#include +#include "util.h" +#include "ml.h" +#ifdef PARALLEL +# include "ppuzzle.h" +#endif + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, +#endif + +/* filenames */ +# define FILENAMELENTH 2048 + + +# define INFILEDEFAULT "infile" +# define OUTFILEDEFAULT "outfile" +# define TREEFILEDEFAULT "outtree" +# define INTREEDEFAULT "intree" +# define DISTANCESDEFAULT "outdist" +# define TRIANGLEDEFAULT "outlm.eps" +# define UNRESOLVEDDEFAULT "outqlist" +# define ALLQUARTDEFAULT "outallquart" +# define ALLQUARTLHDEFAULT "outallquartlh" +# define OUTPTLISTDEFAULT "outpstep" +# define OUTPTORDERDEFAULT "outptorder" + +# define INFILE infilename +# define OUTFILE outfilename +# define TREEFILE outtreename +# define INTREE intreename +# define DISTANCES outdistname +# define TRIANGLE outlmname +# define UNRESOLVED outqlistname +# define ALLQUART outallquartname +# define ALLQUARTLH outallquartlhname +# define OUTPTLIST outpstepname +# define OUTPTORDER outptordername + +EXTERN char infilename [FILENAMELENTH]; +EXTERN char outfilename [FILENAMELENTH]; +EXTERN char outtreename [FILENAMELENTH]; +EXTERN char intreename [FILENAMELENTH]; +EXTERN char outdistname [FILENAMELENTH]; +EXTERN char outlmname [FILENAMELENTH]; +EXTERN char outqlistname [FILENAMELENTH]; +EXTERN char outallquartname [FILENAMELENTH]; +EXTERN char outallquartlhname [FILENAMELENTH]; +EXTERN char outpstepname [FILENAMELENTH]; +EXTERN char outptordername [FILENAMELENTH]; + +#define OUTFILEEXT "puzzle" +#define TREEFILEEXT "tree" +#define DISTANCESEXT "dist" +#define TRIANGLEEXT "eps" +#define UNRESOLVEDEXT "qlist" +#define ALLQUARTEXT "allquart" +#define ALLQUARTLHEXT "allquartlh" +#define OUTPTLISTEXT "pstep" +#define OUTPTORDEREXT "ptorder" + +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUT stdout +# define STDOUTFILE STDOUT, +#endif + + +/* auto_aamodel/auto_datatype values (xxx) */ +#define AUTO_OFF 0 +#define AUTO_GUESS 1 +#define AUTO_DEFAULT 2 + + +/* qptlist values (xxx) */ +#define PSTOUT_NONE 0 +#define PSTOUT_ORDER 1 +#define PSTOUT_LISTORDER 2 +#define PSTOUT_LIST 3 + +/* dtat_optn values (xxx) */ +#define NUCLEOTIDE 0 +#define AMINOACID 1 +#define BINARY 2 + +/* typ_optn values (xxx) */ +#define LIKMAPING_OPTN 1 +#define TREERECON_OPTN 0 + +/* puzzlemodes (xxx) */ +#define QUARTPUZ 0 +#define USERTREE 1 +#define PAIRDIST 2 + +/* rhetmodes (xxx) Modes of rate heterogeneity */ +#define UNIFORMRATE 0 +#define GAMMARATE 1 +#define TWORATE 2 +#define MIXEDRATE 3 + +/* defines for types of quartet likelihood computation (xxx) */ +#define EXACT 0 +#define APPROX 1 + +/* tree structure */ +typedef struct oneedge { + /* pointer to other three edges */ + struct oneedge *up; + struct oneedge *downleft; + struct oneedge *downright; + int numedge; /* number of edge */ + uli edgeinfo; /* value of this edge */ + int *edgemap; /* pointer to the local edgemap */ +} ONEEDGE; + + +/* variables */ +EXTERN cmatrix biparts; /* bipartitions of tree of current puzzling step */ +EXTERN cmatrix consbiparts; /* bipartitions of majority rule consensus tree */ +EXTERN cmatrix seqchars; /* characters contained in data set */ +EXTERN cmatrix treepict; /* picture of consensus tree */ +EXTERN double minscore; /* value of edgescore on minedge */ +EXTERN double tstvf84; /* F84 transition/transversion ratio */ +EXTERN double tstvratio; /* expected transition/transversion ratio */ +EXTERN double yrtsratio; /* expected pyrimidine/purine transition ratio */ +EXTERN dvector ulkl; /* log L of user trees */ +EXTERN dmatrix allsites; /* log L per sites of user trees */ +EXTERN dvector ulklc; /* log L of user trees (clock) */ +EXTERN dmatrix allsitesc; /* log L per sites of user trees (clock) */ +EXTERN FILE *utfp; /* pointer to user tree file */ +EXTERN FILE *ofp; /* pointer to output file */ +EXTERN FILE *seqfp; /* pointer to sequence input file */ +EXTERN FILE *tfp; /* pointer to tree file */ +EXTERN FILE *dfp; /* pointer to distance file */ +EXTERN FILE *trifp; /* pointer to triangle file */ +EXTERN FILE *unresfp; /* pointer to file with unresolved quartets */ +EXTERN FILE *tmpfp; /* pointer to temporary file */ +EXTERN FILE *qptlist; /* pointer to file with puzzling step trees */ +EXTERN FILE *qptorder; /* pointer to file with unique puzzling step trees */ +EXTERN int SHcodon; /* whether SH should be applied to 1st, 2nd codon positions */ +EXTERN int utree_optn; /* use first user tree for estimation */ +EXTERN int listqptrees; /* list puzzling step trees */ +EXTERN int approxqp; /* approximate QP quartets */ +EXTERN int *edgeofleaf; /* vector with edge number of all leaves */ +EXTERN int codon_optn; /* declares what positions in a codon should be used */ +EXTERN int compclock; /* computation of clocklike branch lengths */ +EXTERN int chooseA; /* leaf variable */ +EXTERN int chooseB; /* leaf variable */ +EXTERN int clustA, clustB, clustC, clustD; /* number of members of LM clusters */ +EXTERN int column; /* used for breaking lines (writing tree to treefile) */ +EXTERN int Frequ_optn; /* use empirical base frequencies */ +EXTERN int Maxbrnch; /* 2*Maxspc - 3 */ +EXTERN int Maxseqc; /* number of sequence characters per taxum */ +EXTERN int mflag; /* flag used for correct printing of runtime messages */ +EXTERN int minedge; /* edge with minimum edgeinfo */ +EXTERN int nextedge; /* number of edges in the current tree */ +EXTERN int nextleaf; /* next leaf to add to tree */ +EXTERN int numclust; /* number of clusters in LM analysis */ +EXTERN int outgroup; /* outgroup */ +EXTERN int puzzlemode; /* computation of QP tree and/or ML distances */ +EXTERN int rootsearch; /* how location of root is found */ +EXTERN int rhetmode; /* model of rate heterogeneity */ +EXTERN int splitlength; /* length of one entry in splitpatterns */ +EXTERN int *splitsizes; /* size of all different splits of all trees */ +EXTERN int usebestq_optn; /* use only best quartet topology, no bayesian weights */ +EXTERN int show_optn; /* show unresolved quartets */ +EXTERN int savequart_optn; /* save memory block which quartets to file */ +EXTERN int savequartlh_optn; /* save quartet likelihoods to file */ +EXTERN int saveqlhbin_optn; /* save quartet likelihoods binary */ +EXTERN int readquart_optn; /* read memory block which quartets from file */ +EXTERN int sym_optn; /* symmetrize doublet frequencies */ +EXTERN int xsize; /* depth of consensus tree picture */ +EXTERN int ytaxcounter; /* counter for establishing y-coordinates of all taxa */ +EXTERN int numutrees; /* number of users trees in input tree file */ +EXTERN ivector clusterA, clusterB, clusterC, clusterD; /* clusters for LM analysis */ +EXTERN ivector consconfid; /* confidence values of majority rule consensus tree */ +EXTERN ivector conssizes; /* partition sizes of majority rule consensus tree */ +EXTERN ivector trueID; /* leaf -> taxon on this leaf */ +EXTERN ivector xcor; /* x-coordinates of consensus tree nodes */ +EXTERN ivector ycor; /* y-coordinates of consensus tree nodes */ +EXTERN ivector ycormax; /* maximal y-coordinates of consensus tree nodes */ +EXTERN ivector ycormin; /* minimal y-coordinates of consensus tree nodes */ +EXTERN ivector ycortax; /* y-coordinates of all taxa */ +EXTERN ONEEDGE *edge; /* vector with all the edges of the tree */ +EXTERN uli *splitcomp; /* bipartition storage */ +EXTERN uli *splitfreqs; /* frequencies of all different splits of all trees */ +EXTERN uli *splitpatterns; /* all different splits of all trees */ +EXTERN uli badqs; /* number of bad quartets */ +EXTERN uli consincluded; /* number of included biparts in the consensus tree */ +EXTERN uli Currtrial; /* counter for puzzling steps */ +EXTERN uli maxbiparts; /* space is reserved for that many bipartitions */ +EXTERN uli mininfo; /* value of edgeinfo on minedge */ +EXTERN uli numbiparts; /* number of different bipartitions */ +EXTERN uli Numquartets; /* number of quartets */ +EXTERN uli Numtrial; /* number of puzzling steps */ +EXTERN uli lmqts; /* quartets investigated in LM analysis (0 = ALL) */ + +EXTERN int auto_datatype; /* guess datatype ? */ +EXTERN int guessdata_optn; /* guessed datatype */ + +EXTERN int auto_aamodel; /* guess amino acid modell ? */ +EXTERN int guessauto_aamodel; /* guessed amino acid modell ? */ +EXTERN int guessDayhf_optn; /* guessed Dayhoff model option */ +EXTERN int guessJtt_optn; /* guessed JTT model option */ +EXTERN int guessblosum62_optn; /* guessed BLOSUM 62 model option */ +EXTERN int guessmtrev_optn; /* guessed mtREV model option */ +EXTERN int guesscprev_optn; /* guessed cpREV model option */ +EXTERN int guessvtmv_optn; /* guessed VT model option */ +EXTERN int guesswag_optn; /* guessed WAG model option */ + +/* counter variables needed in likelihood mapping analysis */ +EXTERN uli ar1, ar2, ar3; +EXTERN uli reg1, reg2, reg3, reg4, reg5, reg6, reg7; +EXTERN uli reg1l, reg1r, reg2u, reg2d, reg3u, reg3d, + reg4u, reg4d, reg5l, reg5r, reg6u, reg6d; +EXTERN unsigned char *quartetinfo; /* place where quartets are stored */ +EXTERN dvector qweight; /* for use in QP and LM analysis */ +EXTERN dvector sqdiff; +EXTERN ivector qworder; +EXTERN ivector sqorder; + +EXTERN int randseed; +EXTERN int psteptreestrlen; + +typedef struct treelistitemtypedummy { + struct treelistitemtypedummy *pred; + struct treelistitemtypedummy *succ; + struct treelistitemtypedummy *sortnext; + struct treelistitemtypedummy *sortlast; + char *tree; + int count; + int id; + int idx; +} treelistitemtype; + +EXTERN treelistitemtype *psteptreelist; +EXTERN treelistitemtype *psteptreesortlist; +EXTERN int psteptreenum; +EXTERN int psteptreesum; + + +/* prototypes */ +void makeF84model(void); +void compnumqts(void); +void setoptions(void); +void openfiletoread(FILE **, char[], char[]); +void openfiletowrite(FILE **, char[], char[]); +void openfiletoappend(FILE **, char[], char[]); +void closefile(FILE *); +void symdoublets(void); +void computeexpectations(void); +void putdistance(FILE *); +void findidenticals(FILE *); +double averagedist(void); +void initps(FILE *); +void plotlmpoint(FILE *, double, double); +void finishps(FILE *); +void makelmpoint(FILE *, double, double, double); +void printtreestats(FILE *); +void timestamp(FILE *); +void writeoutputfile(FILE *, int); + +/* definitions for writing output */ +#define WRITEALL 0 +#define WRITEPARAMS 1 +#define WRITEREST 2 + +void writetimesstat(FILE *ofp); +void writecutree(FILE *, int); +void starttimer(void); +void checktimer(uli); +void estimateparametersnotree(void); +void estimateparameterstree(void); +int main(int, char *[]); +int ulicmp(const void *, const void *); +int intcmp(const void *, const void *); + +void readid(FILE *, int); +char readnextcharacter(FILE *, int, int); +void skiprestofline(FILE *, int, int); +void skipcntrl(FILE *, int, int); +void getseqs(FILE *); +void initid(int); +void fputid10(FILE *, int); +int fputid(FILE *, int); +void getsizesites(FILE *); +void getdataset(FILE *); +int guessdatatype(void); +void translatedataset(void); +void estimatebasefreqs(void); +void guessmodel(void); +void inittree(void); +void addnextleaf(int); +void freetree(void); +void writeOTU(FILE *, int); +void writetree(FILE *); +int *initctree(); +void copytree(int *ctree); +void freectree(int **snodes); +void printctree(int *ctree); +char *sprintfctree(int *ctree, int strlen); +void fprintffullpstree(FILE *outf, char *treestr); +int printfsortctree(int *ctree); +int sortctree(int *ctree); +int ct_1stedge(int node); +int ct_2ndedge(int node); +int ct_3rdedge(int node); + +void printfpstrees(treelistitemtype *list); +void printfsortedpstrees(treelistitemtype *list); +void fprintfsortedpstrees(FILE *output, treelistitemtype *list, int itemnum, int itemsum, int comment, float cutoff); + +void sortbynum(treelistitemtype *list, treelistitemtype **sortlist); +treelistitemtype *addtree2list(char **tree, + int numtrees, + treelistitemtype **list, + int *numitems, + int *numsum); +void freetreelist(treelistitemtype **list, + int *numitems, + int *numsum); +void resetedgeinfo(void); +void incrementedgeinfo(int, int); +void minimumedgeinfo(void); +void initconsensus(void); +void makepart(int, int); +void computebiparts(void); +void printsplit(FILE *, uli); +void makenewsplitentries(void); +void copysplit(uli, int); +void makeconsensus(void); +void writenode(FILE *, int); +void writeconsensustree(FILE *); +void nodecoordinates(int); +void drawnode(int, int); +void plotconsensustree(FILE *); +unsigned char *mallocquartets(int); +void freequartets(void); +unsigned char readquartet(int, int, int, int); +void writequartet(int, int, int, int, unsigned char); +void sort3doubles(dvector, ivector); +void computeallquartets(void); +void checkquartet(int, int, int, int); +void num2quart(uli qnum, int *a, int *b, int *c, int *d); +uli numquarts(int maxspc); +uli quart2num (int a, int b, int c, int d); + +void writetpqfheader(int nspec, FILE *ofp, int flag); + + +/* extracted from main (xxx) */ +void compute_quartlklhds(int a, int b, int c, int d, double *d1, double *d2, double *d3, int approx); + + +/* definitions for timing */ + +#define OVERALL 0 +#define GENERAL 1 +#define OPTIONS 2 +#define PARAMEST 3 +#define QUARTETS 4 +#define PUZZLING 5 +#define TREEEVAL 6 + +typedef struct { + int currentjob; + clock_t tempcpu; + clock_t tempfullcpu; + clock_t tempcpustart; + time_t temptime; + time_t tempfulltime; + time_t temptimestart; + + clock_t maxcpu; + clock_t mincpu; + time_t maxtime; + time_t mintime; + + double maxcpublock; + double mincpublock; + double mincputick; + double mincputicktime; + double maxtimeblock; + double mintimeblock; + + double generalcpu; + double optionscpu; + double paramestcpu; + double quartcpu; + double quartblockcpu; + double quartmaxcpu; + double quartmincpu; + double puzzcpu; + double puzzblockcpu; + double puzzmaxcpu; + double puzzmincpu; + double treecpu; + double treeblockcpu; + double treemaxcpu; + double treemincpu; + double cpu; + double fullcpu; + + double generaltime; + double optionstime; + double paramesttime; + double quarttime; + double quartblocktime; + double quartmaxtime; + double quartmintime; + double puzztime; + double puzzblocktime; + double puzzmaxtime; + double puzzmintime; + double treetime; + double treeblocktime; + double treemaxtime; + double treemintime; + double time; + double fulltime; +} timearray_t; + +EXTERN double cputime, walltime; +EXTERN double fullcpu, fulltime; +EXTERN double fullcputime, fullwalltime; +EXTERN double altcputime, altwalltime; +EXTERN clock_t cputimestart, cputimestop, cputimedummy; +EXTERN time_t walltimestart, walltimestop, walltimedummy; +EXTERN clock_t Startcpu; /* start cpu time */ +EXTERN clock_t Stopcpu; /* stop cpu time */ +EXTERN time_t Starttime; /* start time */ +EXTERN time_t Stoptime; /* stop time */ +EXTERN time_t time0; /* timer variable */ +EXTERN time_t time1; /* yet another timer */ +EXTERN time_t time2; /* yet another timer */ +EXTERN timearray_t tarr; + +void resetqblocktime(timearray_t *ta); +void resetpblocktime(timearray_t *ta); +void inittimearr(timearray_t *ta); +void addtimes(int jobtype, timearray_t *ta); +#ifdef TIMEDEBUG + void printtimearr(timearray_t *ta); +#endif /* TIMEDEBUG */ + +#endif /* _PUZZLE_ */ + diff --git a/forester/archive/RIO/others/puzzle_mod/src/puzzle1.c b/forester/archive/RIO/others/puzzle_mod/src/puzzle1.c new file mode 100644 index 0000000..9a4d790 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/puzzle1.c @@ -0,0 +1,4527 @@ +/* + * puzzle1.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/* Modified by Christian Zmasek to: + - name and pairwise dist. output as one line per seq. + - removed some unnecessary -- for my puposes -- output. + + + !WARNING: Use ONLY together with FORESTER/RIO! + !For all other puposes download the excellent original! + + last modification: 05/19/01 + + + + void putdistance(FILE *fp): + + removed: "if ((j + 1) % 7 == 0 && j+1 != Maxspc) + fprintf(fp, "\n ");" + + + + + int main(int argc, char *argv[]): + + removed: + "FPRINTF(STDOUTFILE "Writing parameters to file %s\n", OUTFILE); + openfiletowrite(&ofp, OUTFILE, "general output"); + writeoutputfile(ofp,WRITEPARAMS); + fclose(ofp);" + + "openfiletoappend(&ofp, OUTFILE, "general output"); + writeoutputfile(ofp,WRITEREST);" + + "openfiletoappend(&ofp, OUTFILE, "general output"); + writeoutputfile(ofp,WRITEREST);" + + "openfiletoappend(&ofp, OUTFILE, "general output"); + writeoutputfile(ofp,WRITEREST);" + + "timestamp(ofp); + closefile(ofp);" + + +*/ + + + +#define EXTERN + +#include "puzzle.h" +#include "gamma.h" + +void num2quart(uli qnum, int *a, int *b, int *c, int *d) +{ + double temp; + uli aa, bb, cc, dd; + uli lowval=0, highval=0; + + aa=0; bb=1; cc=2; dd=3; + + temp = (double)(24 * qnum); + temp = sqrt(temp); + temp = sqrt(temp); + /* temp = pow(temp, (double)(1/4)); */ + dd = (uli) floor(temp) + 1; + if (dd < 3) dd = 3; + lowval = (uli) dd*(dd-1)*(dd-2)*(dd-3)/24; + highval = (uli) (dd+1)*dd*(dd-1)*(dd-2)/24; + if (lowval >= qnum) + while ((lowval > qnum)) { + dd -= 1; lowval = (uli) dd*(dd-1)*(dd-2)*(dd-3)/24; + } + else { + while (highval <= qnum) { + dd += 1; highval = (uli) (dd+1)*dd*(dd-1)*(dd-2)/24; + } + lowval = (uli) dd*(dd-1)*(dd-2)*(dd-3)/24; + } + qnum -= lowval; + if (qnum > 0) { + temp = (double)(6 * qnum); + temp = pow(temp, (double)(1/3)); + cc = (uli) floor(temp); + if (cc < 2) cc= 2; + lowval = (uli) cc*(cc-1)*(cc-2)/6; + highval = (uli) (cc+1)*cc*(cc-1)/6; + if (lowval >= qnum) + while ((lowval > qnum)) { + cc -= 1; lowval = (uli) cc*(cc-1)*(cc-2)/6; + } + else { + while (highval <= qnum) { + cc += 1; highval = (uli) (cc+1)*cc*(cc-1)/6; + } + lowval = (uli) cc*(cc-1)*(cc-2)/6; + } + qnum -= lowval; + if (qnum > 0) { + temp = (double)(2 * qnum); + temp = sqrt(temp); + bb = (uli) floor(temp); + if (bb < 1) bb= 1; + lowval = (uli) bb*(bb-1)/2; + highval = (uli) (bb+1)*bb/2; + if (lowval >= qnum) + while ((lowval > qnum)) { + bb -= 1; lowval = (uli) bb*(bb-1)/2; + } + else { + while (highval <= qnum) { + bb += 1; highval = (uli) (bb+1)*bb/2; + } + lowval = (uli) bb*(bb-1)/2; + } + qnum -= lowval; + if (qnum > 0) { + aa = (uli) qnum; + if (aa < 0) aa= 0; + } + } + } + *d = (int)dd; + *c = (int)cc; + *b = (int)bb; + *a = (int)aa; +} /* num2quart */ + +/******************/ + +uli numquarts(int maxspc) +{ + uli tmp; + int a, b, c, d; + + if (maxspc < 4) + return (uli)0; + else { + maxspc--; + a = maxspc-3; + b = maxspc-2; + c = maxspc-1; + d = maxspc; + + tmp = (uli) 1 + a + + (uli) b * (b-1) / 2 + + (uli) c * (c-1) * (c-2) / 6 + + (uli) d * (d-1) * (d-2) * (d-3) / 24; + return (tmp); + } +} /* numquarts */ + +/******************/ + +uli quart2num (int a, int b, int c, int d) +{ + uli tmp; + if ((a>b) || (b>c) || (c>d)) { + fprintf(stderr, "Error PP5 not (%d <= %d <= %d <= %d) !!!\n", a, b, c, +d); + exit (1); + } + tmp = (uli) a + + (uli) b * (b-1) / 2 + + (uli) c * (c-1) * (c-2) / 6 + + (uli) d * (d-1) * (d-2) * (d-3) / 24; + return (tmp); +} /* quart2num */ + +/******************/ + + + +/* flag=0 old allquart binary */ +/* flag=1 allquart binary */ +/* flag=2 allquart ACSII */ +/* flag=3 quartlh binary */ +/* flag=4 quartlh ASCII */ + +void writetpqfheader(int nspec, + FILE *ofp, + int flag) +{ int currspec; + + if (flag == 0) { + unsigned long nquart; + unsigned long blocklen; + + nquart = numquarts(nspec); + /* compute number of bytes */ + if (nquart % 2 == 0) { /* even number */ + blocklen = (nquart)/2; + } else { /* odd number */ + blocklen = (nquart + 1)/2; + } + /* FPRINTF(STDOUTFILE "Writing quartet file: %s\n", filename); */ + fprintf(ofp, "TREE-PUZZLE\n%s\n\n", VERSION); + fprintf(ofp, "species: %d\n", nspec); + fprintf(ofp, "quartets: %lu\n", nquart); + fprintf(ofp, "bytes: %lu\n\n", blocklen); + + + /* fwrite(&(quartetinfo[0]), sizeof(char), blocklen, ofp); */ + } + + if (flag == 1) fprintf(ofp, "##TPQF-BB (TREE-PUZZLE %s)\n%d\n", VERSION, nspec); + if (flag == 2) fprintf(ofp, "##TPQF-BA (TREE-PUZZLE %s)\n%d\n", VERSION, nspec); + if (flag == 3) fprintf(ofp, "##TPQF-LB (TREE-PUZZLE %s)\n%d\n", VERSION, nspec); + if (flag == 4) fprintf(ofp, "##TPQF-LA (TREE-PUZZLE %s)\n%d\n", VERSION, nspec); + + for (currspec=0; currspec MAXTS) { + FPRINTF(STDOUTFILE "\n\n\nF84 model not possible "); + FPRINTF(STDOUTFILE "(bad Ts/Tv parameter)\n"); + tstvf84 = 0.0; + return; + } + if (yr < MINYR || yr > MAXYR) { + FPRINTF(STDOUTFILE "\n\n\nF84 model not possible "); + FPRINTF(STDOUTFILE "(bad Y/R transition parameter)\n"); + tstvf84 = 0.0; + return; + } + TSparam = ts; + YRparam = yr; + optim_optn = FALSE; +} + +/* compute number of quartets used in LM analysis */ +void compnumqts() +{ + if (lmqts == 0) { + if (numclust == 4) + Numquartets = (uli) clustA*clustB*clustC*clustD; + if (numclust == 3) + Numquartets = (uli) clustA*clustB*clustC*(clustC-1)/2; + if (numclust == 2) + Numquartets = (uli) clustA*(clustA-1)/2 * clustB*(clustB-1)/2; + if (numclust == 1) + Numquartets = (uli) Maxspc*(Maxspc-1)*(Maxspc-2)*(Maxspc-3)/24; + } else { + Numquartets = lmqts; + } +} + +/* set options interactively */ +void setoptions() +{ + int i, valid; + double sumfreq; + char ch; + + /* defaults */ + rhetmode = UNIFORMRATE; /* assume rate homogeneity */ + numcats = 1; + Geta = 0.05; + grate_optim = FALSE; + fracinv = 0.0; + fracinv_optim = FALSE; + + compclock = FALSE; /* compute clocklike branch lengths */ + locroot = -1; /* search for optimal place of root */ + qcalg_optn = FALSE; /* don't use sampling of quartets */ + approxp_optn = TRUE; /* approximate parameter estimates */ + listqptrees = PSTOUT_NONE; /* list puzzling step trees */ + + /* approximate QP quartets? */ + if (Maxspc <= 6) approxqp = FALSE; + else approxqp = TRUE; + + codon_optn = 0; /* use all positions in a codon */ + + /* number of puzzling steps */ + if (Maxspc <= 25) Numtrial = 1000; + else if (Maxspc <= 50) Numtrial = 10000; + else if (Maxspc <= 75) Numtrial = 25000; + else Numtrial = 50000; + + utree_optn = TRUE; /* use first user tree for estimation */ + outgroup = 0; /* use first taxon as outgroup */ + sym_optn = FALSE; /* symmetrize doublet frequencies */ + tstvf84 = 0.0; /* disable F84 model */ + show_optn = FALSE; /* show unresolved quartets */ + typ_optn = TREERECON_OPTN; /* tree reconstruction */ + numclust = 1; /* one clusters in LM analysis */ + lmqts = 0; /* all quartets in LM analysis */ + compnumqts(); + if (Numquartets > 10000) { + lmqts = 10000; /* 10000 quartets in LM analysis */ + compnumqts(); + } + + do { + FPRINTF(STDOUTFILE "\n\n\nGENERAL OPTIONS\n"); + FPRINTF(STDOUTFILE " b Type of analysis? "); + if (typ_optn == TREERECON_OPTN) FPRINTF(STDOUTFILE "Tree reconstruction\n"); + if (typ_optn == LIKMAPING_OPTN) FPRINTF(STDOUTFILE "Likelihood mapping\n"); + if (typ_optn == TREERECON_OPTN) { + FPRINTF(STDOUTFILE " k Tree search procedure? "); + if (puzzlemode == QUARTPUZ) FPRINTF(STDOUTFILE "Quartet puzzling\n"); + if (puzzlemode == USERTREE) FPRINTF(STDOUTFILE "User defined trees\n"); + if (puzzlemode == PAIRDIST) FPRINTF(STDOUTFILE "Pairwise distances only (no tree)\n"); + if (puzzlemode == QUARTPUZ) { + FPRINTF(STDOUTFILE " v Approximate quartet likelihood? %s\n", + (approxqp ? "Yes" : "No")); + FPRINTF(STDOUTFILE " u List unresolved quartets? %s\n", + (show_optn ? "Yes" : "No")); + FPRINTF(STDOUTFILE " n Number of puzzling steps? %lu\n", + Numtrial); + FPRINTF(STDOUTFILE " j List puzzling step trees? "); + switch (listqptrees) { + case PSTOUT_NONE: FPRINTF(STDOUTFILE "No\n"); break; + case PSTOUT_ORDER: FPRINTF(STDOUTFILE "Unique topologies\n"); break; + case PSTOUT_LISTORDER: FPRINTF(STDOUTFILE "Unique topologies & Chronological list\n"); break; + case PSTOUT_LIST: FPRINTF(STDOUTFILE "Chronological list only\n"); break; + } + + FPRINTF(STDOUTFILE " o Display as outgroup? "); + fputid(STDOUT, outgroup); + FPRINTF(STDOUTFILE "\n"); + } + if (puzzlemode == QUARTPUZ || puzzlemode == USERTREE) { + FPRINTF(STDOUTFILE " z Compute clocklike branch lengths? "); + if (compclock) FPRINTF(STDOUTFILE "Yes\n"); + else FPRINTF(STDOUTFILE "No\n"); + } + if (compclock) + if (puzzlemode == QUARTPUZ || puzzlemode == USERTREE) { + FPRINTF(STDOUTFILE " l Location of root? "); + if (locroot < 0) FPRINTF(STDOUTFILE "Best place (automatic search)\n"); + else if (locroot < Maxspc) { + FPRINTF(STDOUTFILE "Branch %d (", locroot + 1); + fputid(STDOUT, locroot); + FPRINTF(STDOUTFILE ")\n"); + } else FPRINTF(STDOUTFILE "Branch %d (internal branch)\n", locroot + 1); + } + } + if (typ_optn == LIKMAPING_OPTN) { + FPRINTF(STDOUTFILE " g Group sequences in clusters? "); + if (numclust == 1) FPRINTF(STDOUTFILE "No\n"); + else FPRINTF(STDOUTFILE "Yes (%d clusters as specified)\n", numclust); + FPRINTF(STDOUTFILE " n Number of quartets? "); + if (lmqts == 0) FPRINTF(STDOUTFILE "%lu (all possible)\n", Numquartets); + else FPRINTF(STDOUTFILE "%lu (random choice)\n", lmqts); + } + FPRINTF(STDOUTFILE " e Parameter estimates? "); + if (approxp_optn) FPRINTF(STDOUTFILE "Approximate (faster)\n"); + else FPRINTF(STDOUTFILE "Exact (slow)\n"); + if (!(puzzlemode == USERTREE && typ_optn == TREERECON_OPTN)) { + FPRINTF(STDOUTFILE " x Parameter estimation uses? "); + if (qcalg_optn) FPRINTF(STDOUTFILE "Quartet sampling + NJ tree\n"); + else FPRINTF(STDOUTFILE "Neighbor-joining tree\n"); + + } else { + FPRINTF(STDOUTFILE " x Parameter estimation uses? "); + if (utree_optn) + FPRINTF(STDOUTFILE "1st input tree\n"); + else if (qcalg_optn) FPRINTF(STDOUTFILE "Quartet sampling + NJ tree\n"); + else FPRINTF(STDOUTFILE "Neighbor-joining tree\n"); + } + FPRINTF(STDOUTFILE "SUBSTITUTION PROCESS\n"); + FPRINTF(STDOUTFILE " d Type of sequence input data? "); + if (auto_datatype == AUTO_GUESS) FPRINTF(STDOUTFILE "Auto: "); + if (data_optn == NUCLEOTIDE) FPRINTF(STDOUTFILE "Nucleotides\n"); + if (data_optn == AMINOACID) FPRINTF(STDOUTFILE "Amino acids\n"); + if (data_optn == BINARY) FPRINTF(STDOUTFILE "Binary states\n"); + if (data_optn == NUCLEOTIDE && (Maxseqc % 3) == 0 && !SH_optn) { + FPRINTF(STDOUTFILE " h Codon positions selected? "); + if (codon_optn == 0) FPRINTF(STDOUTFILE "Use all positions\n"); + if (codon_optn == 1) FPRINTF(STDOUTFILE "Use only 1st positions\n"); + if (codon_optn == 2) FPRINTF(STDOUTFILE "Use only 2nd positions\n"); + if (codon_optn == 3) FPRINTF(STDOUTFILE "Use only 3rd positions\n"); + if (codon_optn == 4) FPRINTF(STDOUTFILE "Use 1st and 2nd positions\n"); + } + FPRINTF(STDOUTFILE " m Model of substitution? "); + if (data_optn == NUCLEOTIDE) { /* nucleotides */ + if (nuc_optn) { + if(HKY_optn) + FPRINTF(STDOUTFILE "HKY (Hasegawa et al. 1985)\n"); + else { + FPRINTF(STDOUTFILE "TN (Tamura-Nei 1993)\n"); + FPRINTF(STDOUTFILE " p Constrain TN model to F84 model? "); + if (tstvf84 == 0.0) + FPRINTF(STDOUTFILE "No\n"); + else FPRINTF(STDOUTFILE "Yes (Ts/Tv ratio = %.2f)\n", tstvf84); + } + FPRINTF(STDOUTFILE " t Transition/transversion parameter? "); + if (optim_optn) + FPRINTF(STDOUTFILE "Estimate from data set\n"); + else + FPRINTF(STDOUTFILE "%.2f\n", TSparam); + if (TN_optn) { + FPRINTF(STDOUTFILE " r Y/R transition parameter? "); + if (optim_optn) + FPRINTF(STDOUTFILE "Estimate from data set\n"); + else + FPRINTF(STDOUTFILE "%.2f\n", YRparam); + } + } + if (SH_optn) { + FPRINTF(STDOUTFILE "SH (Schoeniger-von Haeseler 1994)\n"); + FPRINTF(STDOUTFILE " t Transition/transversion parameter? "); + if (optim_optn) + FPRINTF(STDOUTFILE "Estimate from data set\n"); + else + FPRINTF(STDOUTFILE "%.2f\n", TSparam); + } + } + if (data_optn == NUCLEOTIDE && SH_optn) { + FPRINTF(STDOUTFILE " h Doublets defined by? "); + if (SHcodon) + FPRINTF(STDOUTFILE "1st and 2nd codon positions\n"); + else + FPRINTF(STDOUTFILE "1st+2nd, 3rd+4th, etc. site\n"); + } + if (data_optn == AMINOACID) { /* amino acids */ + switch (auto_aamodel) { + case AUTO_GUESS: + FPRINTF(STDOUTFILE "Auto: "); + break; + case AUTO_DEFAULT: + FPRINTF(STDOUTFILE "Def.: "); + break; + } + if (Dayhf_optn) FPRINTF(STDOUTFILE "Dayhoff (Dayhoff et al. 1978)\n"); + if (Jtt_optn) FPRINTF(STDOUTFILE "JTT (Jones et al. 1992)\n"); + if (mtrev_optn) FPRINTF(STDOUTFILE "mtREV24 (Adachi-Hasegawa 1996)\n"); + if (cprev_optn) FPRINTF(STDOUTFILE "cpREV45 (Adachi et al. 2000)\n"); + if (blosum62_optn) FPRINTF(STDOUTFILE "BLOSUM62 (Henikoff-Henikoff 92)\n"); + if (vtmv_optn) FPRINTF(STDOUTFILE "VT (Mueller-Vingron 2000)\n"); + if (wag_optn) FPRINTF(STDOUTFILE "WAG (Whelan-Goldman 2000)\n"); + } + if (data_optn == BINARY) { /* binary states */ + FPRINTF(STDOUTFILE "Two-state model (Felsenstein 1981)\n"); + } + if (data_optn == AMINOACID) + FPRINTF(STDOUTFILE " f Amino acid frequencies? "); + else if (data_optn == NUCLEOTIDE && SH_optn) + FPRINTF(STDOUTFILE " f Doublet frequencies? "); + else if (data_optn == NUCLEOTIDE && nuc_optn) + FPRINTF(STDOUTFILE " f Nucleotide frequencies? "); + else if (data_optn == BINARY) + FPRINTF(STDOUTFILE " f Binary state frequencies? "); + FPRINTF(STDOUTFILE "%s\n", (Frequ_optn ? "Estimate from data set" : + "Use specified values")); + if (data_optn == NUCLEOTIDE && SH_optn) + FPRINTF(STDOUTFILE " s Symmetrize doublet frequencies? %s\n", + (sym_optn ? "Yes" : "No")); + + FPRINTF(STDOUTFILE "RATE HETEROGENEITY\n"); + FPRINTF(STDOUTFILE " w Model of rate heterogeneity? "); + if (rhetmode == UNIFORMRATE) FPRINTF(STDOUTFILE "Uniform rate\n"); + if (rhetmode == GAMMARATE ) FPRINTF(STDOUTFILE "Gamma distributed rates\n"); + if (rhetmode == TWORATE ) FPRINTF(STDOUTFILE "Two rates (1 invariable + 1 variable)\n"); + if (rhetmode == MIXEDRATE ) FPRINTF(STDOUTFILE "Mixed (1 invariable + %d Gamma rates)\n", numcats); + + if (rhetmode == TWORATE || rhetmode == MIXEDRATE) { + FPRINTF(STDOUTFILE " i Fraction of invariable sites? "); + if (fracinv_optim) FPRINTF(STDOUTFILE "Estimate from data set"); + else FPRINTF(STDOUTFILE "%.2f", fracinv); + if (fracinv == 0.0 && !fracinv_optim) FPRINTF(STDOUTFILE " (all sites variable)"); + FPRINTF(STDOUTFILE "\n"); + } + if (rhetmode == GAMMARATE || rhetmode == MIXEDRATE) { + FPRINTF(STDOUTFILE " a Gamma distribution parameter alpha? "); + if (grate_optim) + FPRINTF(STDOUTFILE "Estimate from data set\n"); + else if (Geta > 0.5) + FPRINTF(STDOUTFILE "%.2f (strong rate heterogeneity)\n", (1.0-Geta)/Geta); + else FPRINTF(STDOUTFILE "%.2f (weak rate heterogeneity)\n", (1.0-Geta)/Geta); + FPRINTF(STDOUTFILE " c Number of Gamma rate categories? %d\n", numcats); + } + + FPRINTF(STDOUTFILE "\nQuit [q], confirm [y], or change [menu] settings: "); + + /* read one char */ + ch = getchar(); + if (ch != '\n') { + do ; + while (getchar() != '\n'); + } + ch = (char) tolower((int) ch); + + /* letters in use: a b c d e f g h i j k l m n o p q r s t u v w y x z */ + /* letters not in use: */ + + switch (ch) { + + case '\n': break; + + case 'z': if (typ_optn == TREERECON_OPTN && (puzzlemode == QUARTPUZ || puzzlemode == USERTREE)) { + compclock = compclock + 1; + if (compclock == 2) compclock = 0; + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'l': if (compclock && typ_optn == TREERECON_OPTN && (puzzlemode == QUARTPUZ || puzzlemode == USERTREE)) { + FPRINTF(STDOUTFILE "\n\n\nEnter an invalid branch number to search "); + FPRINTF(STDOUTFILE "for the best location!\n"); + FPRINTF(STDOUTFILE "\nPlace root at branch (1-%d): ", + 2*Maxspc-3); + scanf("%d", &locroot); + do ; + while (getchar() != '\n'); + if (locroot < 1 || locroot > 2*Maxspc-3) locroot = 0; + locroot = locroot - 1; + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'e': if ((rhetmode == TWORATE || rhetmode == MIXEDRATE) && fracinv_optim) { + FPRINTF(STDOUTFILE "\n\n\nInvariable sites estimation needs to be exact!\n"); + } else { + approxp_optn = approxp_optn + 1; + if (approxp_optn == 2) approxp_optn = 0; + } + break; + + case 'w': rhetmode = rhetmode + 1; + if (rhetmode == 4) rhetmode = UNIFORMRATE; + if (rhetmode == UNIFORMRATE) { /* uniform rate */ + numcats = 1; + Geta = 0.05; + grate_optim = FALSE; + fracinv = 0.0; + fracinv_optim = FALSE; + } + if (rhetmode == GAMMARATE ) { /* Gamma distributed rates */ + numcats = 8; + Geta = 0.05; + grate_optim = TRUE; + fracinv = 0.0; + fracinv_optim = FALSE; + } + if (rhetmode == TWORATE ) { /* two rates (1 invariable + 1 variable) */ + approxp_optn = FALSE; + numcats = 1; + Geta = 0.05; + grate_optim = FALSE; + fracinv = 0.0; + fracinv_optim = TRUE; + } + if (rhetmode == MIXEDRATE ) { /* mixed (1 invariable + Gamma rates) */ + approxp_optn = FALSE; + numcats = 8; + Geta = 0.05; + grate_optim = TRUE; + fracinv = 0.0; + fracinv_optim = TRUE; + } + break; + + case 'i': if (rhetmode == TWORATE || rhetmode == MIXEDRATE) { + FPRINTF(STDOUTFILE "\n\n\nEnter an invalid value for "); + FPRINTF(STDOUTFILE "estimation from data set!\n"); + FPRINTF(STDOUTFILE "\nFraction of invariable sites among all sites (%.2f-%.2f): ", + MINFI, MAXFI); + scanf("%lf", &fracinv); + do ; + while (getchar() != '\n'); + if (fracinv < MINFI || fracinv > MAXFI) { + fracinv_optim = TRUE; + fracinv = 0.0; + } else { + fracinv_optim = FALSE; + } + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'a': if (rhetmode == GAMMARATE || rhetmode == MIXEDRATE) { + FPRINTF(STDOUTFILE "\n\n\nEnter an invalid value for estimation from data set!\n"); + FPRINTF(STDOUTFILE "\nGamma distribution parameter alpha (%.2f-%.2f): ", + (1.0-MAXGE)/MAXGE, (1.0-MINGE)/MINGE); + scanf("%lf", &Geta); + do ; + while (getchar() != '\n'); + if (Geta < (1.0-MAXGE)/MAXGE || Geta > (1.0-MINGE)/MINGE) { + grate_optim = TRUE; + Geta = 0.05; + } else { + grate_optim = FALSE; + Geta = 1.0/(1.0 + Geta); + } + } else + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + break; + + case 'c': if (rhetmode == GAMMARATE || rhetmode == MIXEDRATE) { + FPRINTF(STDOUTFILE "\n\n\nNumber of Gamma rate categories (%d-%d): ", + MINCAT, MAXCAT); + scanf("%d", &numcats); + do ; + while (getchar() != '\n'); + if (numcats < MINCAT || numcats > MAXCAT) { + FPRINTF(STDOUTFILE "\n\n\nThis number of categories is not available!\n"); + numcats = 4; + } + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'h': if (data_optn == NUCLEOTIDE && (Maxseqc % 3) == 0 && !SH_optn) { + codon_optn = codon_optn + 1; + if (codon_optn == 5) codon_optn = 0; + translatedataset(); + /* reestimate nucleotide frequencies only + if user did not specify other values */ + if (Frequ_optn) estimatebasefreqs(); + + } else if (data_optn == NUCLEOTIDE && SH_optn) { + if (Maxseqc % 2 != 0 && Maxseqc % 3 == 0) { + SHcodon = TRUE; + FPRINTF(STDOUTFILE "\n\n\nThis is the only possible option for the data set!\n"); + } + if (Maxseqc % 3 != 0 && Maxseqc % 2 == 0) { + SHcodon = FALSE; + FPRINTF(STDOUTFILE "\n\n\nThis is the only possible option for the data set!\n"); + } + if (Maxseqc % 2 == 0 && Maxseqc % 3 == 0) { + if (SHcodon) + SHcodon = FALSE; + else + SHcodon = TRUE; + translatedataset(); + /* reestimate nucleotide frequencies only + if user did not specify other values */ + if (Frequ_optn) estimatebasefreqs(); + } + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'x': if (typ_optn == TREERECON_OPTN && puzzlemode == USERTREE) { + if (utree_optn) { + utree_optn = FALSE; + qcalg_optn = FALSE; + } else { + qcalg_optn = qcalg_optn + 1; + if (qcalg_optn == 2) { + qcalg_optn = 0; + utree_optn = TRUE; + } + } + } else { + qcalg_optn = qcalg_optn + 1; + if (qcalg_optn == 2) qcalg_optn = 0; + } + break; + + case 'k': if (typ_optn == TREERECON_OPTN) { + puzzlemode = (puzzlemode + 1) % 3; + /* puzzlemode = puzzlemode + 1; + if (puzzlemode == 3) puzzlemode = 0; + xxx */ + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'b': typ_optn = (typ_optn + 1) % 2; + /* typ_optn = typ_optn + 1; + if (typ_optn == 2) typ_optn = TREERECON_OPTN; + xxx */ + break; + + case 'g': if (typ_optn == LIKMAPING_OPTN) { + clustA = clustB = clustC = clustD = 0; + if (numclust != 1) { + numclust = 1; + } else { + FPRINTF(STDOUTFILE "\n\n\nNumber of clusters (2-4): "); + scanf("%d", &numclust); + do ; + while (getchar() != '\n'); + if (numclust < 2 || numclust > 4) { + numclust = 1; + FPRINTF(STDOUTFILE "\n\n\nOnly 2, 3, or 4 "); + FPRINTF(STDOUTFILE "clusters possible\n"); + } else { + FPRINTF(STDOUTFILE "\nDistribute all sequences over the "); + if (numclust == 2) { + FPRINTF(STDOUTFILE "two clusters a and b (At least two\n"); + FPRINTF(STDOUTFILE "sequences per cluster are necessary), "); + } + if (numclust == 3) { + FPRINTF(STDOUTFILE "three clusters a, b, and c\n"); + FPRINTF(STDOUTFILE "(At least one sequence in cluster a and b, and at least two\n"); + FPRINTF(STDOUTFILE "sequences in c are necessary), "); + } + if (numclust == 4) { + FPRINTF(STDOUTFILE "four clusters a, b, c, and d\n"); + FPRINTF(STDOUTFILE "(At least one sequence per cluster is necessary),\n"); + } + FPRINTF(STDOUTFILE "type x to exclude a sequence:\n\n"); + + for (i = 0; i < Maxspc; i++) { + valid = FALSE; + do { + fputid10(STDOUT, i); + FPRINTF(STDOUTFILE ": "); + /* read one char */ + ch = getchar(); + if (ch != '\n') { + do ; + while (getchar() != '\n'); + } + ch = (char) tolower((int) ch); + if (ch == 'a' || ch == 'b' || ch == 'x') + valid = TRUE; + if (numclust == 3 || numclust == 4) + if (ch == 'c') valid = TRUE; + if (numclust == 4) + if (ch == 'd') valid = TRUE; + } while (!valid); + if (ch == 'a') { + clusterA[clustA] = i; + clustA++; + } + if (ch == 'b') { + clusterB[clustB] = i; + clustB++; + } + if (ch == 'c') { + clusterC[clustC] = i; + clustC++; + } + if (ch == 'd') { + clusterD[clustD] = i; + clustD++; + } + } + /* check clusters */ + valid = TRUE; + if (numclust == 4) { + if (clustA == 0) { + valid = FALSE; + numclust = 1; + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster a\n"); + } + if (clustB == 0) { + valid = FALSE; + numclust = 1; + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster b\n"); + } + if (clustC == 0) { + valid = FALSE; + numclust = 1; + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster c\n"); + } + if (clustD == 0) { + valid = FALSE; + numclust = 1; + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster d\n"); + } + } + if (numclust == 3) { + if (clustA == 0) { + valid = FALSE; + numclust = 1; + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster a\n"); + } + if (clustB == 0) { + valid = FALSE; + numclust = 1; + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster b\n"); + } + if (clustC < 2) { + valid = FALSE; + numclust = 1; + if (clustC == 0) + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster c\n"); + else + FPRINTF(STDOUTFILE "\n\n\nOnly one sequence in cluster c\n"); + } + } + if (numclust == 2) { + if (clustA < 2) { + valid = FALSE; + numclust = 1; + if (clustA == 0) + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster a\n"); + else + FPRINTF(STDOUTFILE "\n\n\nOnly one sequence in cluster a\n"); + } + if (clustB < 2) { + valid = FALSE; + numclust = 1; + if (clustB == 0) + FPRINTF(STDOUTFILE "\n\n\nNo sequence in cluster b\n"); + else + FPRINTF(STDOUTFILE "\n\n\nOnly one sequence in cluster b\n"); + } + } + if (valid) { + FPRINTF(STDOUTFILE "\nNumber of sequences in each cluster:\n\n"); + FPRINTF(STDOUTFILE "Cluster a: %d\n", clustA); + FPRINTF(STDOUTFILE "Cluster b: %d\n", clustB); + if (numclust > 2) + FPRINTF(STDOUTFILE "Cluster c: %d\n", clustC); + if (numclust == 4) + FPRINTF(STDOUTFILE "Cluster d: %d\n", clustD); + FPRINTF(STDOUTFILE "\nExcluded sequences: "); + if (numclust == 2) FPRINTF(STDOUTFILE "%d\n", + Maxspc-clustA-clustB); + if (numclust == 3) FPRINTF(STDOUTFILE "%d\n", + Maxspc-clustA-clustB-clustC); + if (numclust == 4) FPRINTF(STDOUTFILE "%d\n", + Maxspc-clustA-clustB-clustC-clustD); + + } + } + } + /* number of resulting quartets */ + compnumqts(); + + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'd': if (auto_datatype == AUTO_GUESS) { + auto_datatype = AUTO_OFF; + guessdata_optn = data_optn; + data_optn = 0; + } else { + data_optn = data_optn + 1; + if (data_optn == 3) { + auto_datatype = AUTO_GUESS; + data_optn = guessdata_optn; + } + } + /* translate characters into format used by ML engine */ + translatedataset(); + estimatebasefreqs(); + break; + + case 'u': if (puzzlemode == QUARTPUZ && typ_optn == TREERECON_OPTN) + show_optn = 1 - show_optn; + else + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + break; + + case 'j': if (puzzlemode == QUARTPUZ && typ_optn == TREERECON_OPTN) + listqptrees = (listqptrees + 1) % 4; + else + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + break; + + case 'v': if (puzzlemode == QUARTPUZ && typ_optn == TREERECON_OPTN) + approxqp = 1 - approxqp; + else + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + break; + + case 'f': if (Frequ_optn) { + tstvf84 = 0.0; + Frequ_optn = FALSE; + sumfreq = 0.0; + if (data_optn == AMINOACID) + FPRINTF(STDOUTFILE "\n\n\nAmino acid"); + else if (data_optn == NUCLEOTIDE && SH_optn) + FPRINTF(STDOUTFILE "\n\n\nDoublet"); + else if (data_optn == NUCLEOTIDE && nuc_optn) + FPRINTF(STDOUTFILE "\n\n\nNucleotide"); + else if (data_optn == BINARY) + FPRINTF(STDOUTFILE "\n\n\nBinary state"); + FPRINTF(STDOUTFILE " frequencies (in %%):\n\n"); + for (i = 0; i < gettpmradix() - 1; i++) { + FPRINTF(STDOUTFILE "pi(%s) = ", int2code(i)); + scanf("%lf", &(Freqtpm[i])); + do ; + while (getchar() != '\n'); + Freqtpm[i] = Freqtpm[i]/100.0; + if (Freqtpm[i] < 0.0) { + FPRINTF(STDOUTFILE "\n\n\nNegative frequency not possible\n"); + estimatebasefreqs(); + break; + } + sumfreq = sumfreq + Freqtpm[i]; + if (sumfreq > 1.0) { + FPRINTF(STDOUTFILE "\n\n\nThe sum of "); + FPRINTF(STDOUTFILE "all frequencies exceeds"); + FPRINTF(STDOUTFILE " 100%%\n"); + estimatebasefreqs(); + break; + } + if (i == gettpmradix() - 2) + Freqtpm[i+1] = 1.0 - sumfreq; + } + } else estimatebasefreqs(); + break; + + case 's': if (data_optn == NUCLEOTIDE && SH_optn) { + sym_optn = 1 - sym_optn; + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'n': if (puzzlemode == QUARTPUZ && typ_optn == TREERECON_OPTN) + { + FPRINTF(STDOUTFILE "\n\n\nNumber of puzzling steps: "); + scanf("%lu", &Numtrial); + do ; + while (getchar() != '\n'); + if (Numtrial < 1) { + FPRINTF(STDOUTFILE "\n\n\nThe number of puzzling"); + FPRINTF(STDOUTFILE " steps can't be smaller than one\n"); + Numtrial = 1000; + } + } + else if (typ_optn == LIKMAPING_OPTN) + { + FPRINTF(STDOUTFILE "\n\nEnter zero to use all possible"); + FPRINTF(STDOUTFILE " quartets in the analysis!\n"); + FPRINTF(STDOUTFILE "\nNumber of random quartets: "); + scanf("%lu", &lmqts); + do ; + while (getchar() != '\n'); + + /* compute number of quartets used */ + compnumqts(); + } + else + { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'o': if (puzzlemode == QUARTPUZ && typ_optn == TREERECON_OPTN) { + FPRINTF(STDOUTFILE "\n\n\nSequence to be displayed as outgroup (1-%d): ", + Maxspc); + scanf("%d", &outgroup); + do ; + while (getchar() != '\n'); + if (outgroup < 1 || outgroup > Maxspc) { + FPRINTF(STDOUTFILE "\n\n\nSequences are numbered "); + FPRINTF(STDOUTFILE "from 1 to %d\n", + Maxspc); + outgroup = 1; + } + outgroup = outgroup - 1; + } else { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } + break; + + case 'm': if (data_optn == NUCLEOTIDE) { /* nucleotide data */ + if(HKY_optn && nuc_optn) { + /* HKY -> TN */ + tstvf84 = 0.0; + TSparam = 2.0; + YRparam = 0.9; + HKY_optn = FALSE; + TN_optn = TRUE; + optim_optn = TRUE; + nuc_optn = TRUE; + SH_optn = FALSE; + break; + } + if(TN_optn && nuc_optn) { + if (Maxseqc % 2 == 0 || Maxseqc % 3 == 0) { + /* number of chars needs to be a multiple 2 or 3 */ + /* TN -> SH */ + if (Maxseqc % 2 != 0 && Maxseqc % 3 == 0) + SHcodon = TRUE; + else + SHcodon = FALSE; + tstvf84 = 0.0; + TSparam = 2.0; + YRparam = 1.0; + HKY_optn = TRUE; + TN_optn = FALSE; + optim_optn = TRUE; + nuc_optn = FALSE; + SH_optn = TRUE; + /* translate characters into format */ + /* used by ML engine */ + translatedataset(); + estimatebasefreqs(); + } else { + FPRINTF(STDOUTFILE "\n\n\nSH model not "); + FPRINTF(STDOUTFILE "available for the data set!\n"); + /* TN -> HKY */ + tstvf84 = 0.0; + TSparam = 2.0; + YRparam = 1.0; + HKY_optn = TRUE; + TN_optn = FALSE; + optim_optn = TRUE; + nuc_optn = TRUE; + SH_optn = FALSE; + } + break; + } + if(SH_optn) { + /* SH -> HKY */ + tstvf84 = 0.0; + TSparam = 2.0; + YRparam = 1.0; + HKY_optn = TRUE; + TN_optn = FALSE; + optim_optn = TRUE; + nuc_optn = TRUE; + SH_optn = FALSE; + /* translate characters into format */ + /* used by ML engine */ + translatedataset(); + estimatebasefreqs(); + break; + } + break; + } + if (data_optn == AMINOACID) { /* amino acid data */ + if (auto_aamodel) { + /* AUTO -> Dayhoff */ + Dayhf_optn = TRUE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } + if (Dayhf_optn) { + /* Dayhoff -> JTT */ + Dayhf_optn = FALSE; + Jtt_optn = TRUE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } + if (Jtt_optn) { + /* JTT -> mtREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = TRUE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } +#ifdef CPREV + if (mtrev_optn) { + /* mtREV -> cpREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = TRUE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } +#else /* ! CPREV */ + if (mtrev_optn) { + /* mtREV -> BLOSUM 62 */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = TRUE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } +#endif /* ! CPREV */ + +#ifdef CPREV + if (cprev_optn) { + /* cpREV -> BLOSUM 62 */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = TRUE; + vtmv_optn = FALSE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } +#endif + if (blosum62_optn) { + /* BLOSUM 62 -> VT model */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = TRUE; + wag_optn = FALSE; + auto_aamodel = AUTO_OFF; + break; + } + if (vtmv_optn) { + /* VT model -> WAG model */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = TRUE; + auto_aamodel = AUTO_OFF; + break; + } + if (wag_optn) { + /* WAG model -> AUTO */ + Dayhf_optn = guessDayhf_optn; + Jtt_optn = guessJtt_optn; + mtrev_optn = guessmtrev_optn; + cprev_optn = guesscprev_optn; + blosum62_optn = guessblosum62_optn; + vtmv_optn = guessvtmv_optn; + wag_optn = guesswag_optn; + auto_aamodel = guessauto_aamodel; + break; + } + break; + } + if (data_optn == BINARY) { + FPRINTF(STDOUTFILE "\n\n\nNo other model available!\n"); + } + break; + + case 't': if (data_optn != NUCLEOTIDE) { + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } else { + tstvf84 = 0.0; + FPRINTF(STDOUTFILE "\n\n\nEnter an invalid value for "); + FPRINTF(STDOUTFILE "estimation from data set!\n"); + FPRINTF(STDOUTFILE "\nTransition/transversion parameter (%.2f-%.2f): ", + MINTS, MAXTS); + scanf("%lf", &TSparam); + do ; + while (getchar() != '\n'); + if (TSparam < MINTS || TSparam > MAXTS) { + optim_optn = TRUE; + TSparam = 2.0; + } else { + optim_optn = FALSE; + } + } + break; + + case 'q': FPRINTF(STDOUTFILE "\n\n\n"); +# if PARALLEL + PP_SendDone(); + MPI_Finalize(); +# endif /* PARALLEL */ + exit(0); + + break; + + case 'r': if (!(TN_optn && nuc_optn)){ + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } else { + tstvf84 = 0.0; + FPRINTF(STDOUTFILE "\n\n\nEnter an invalid value "); + FPRINTF(STDOUTFILE "for estimation from data set!\n"); + FPRINTF(STDOUTFILE "\nY/R transition parameter (%.2f-%.2f): ", MINYR, MAXYR); + scanf("%lf", &YRparam); + do ; + while (getchar() != '\n'); + if (YRparam < MINYR || YRparam > MAXYR) { + optim_optn = TRUE; + YRparam = 0.9; + } else if (YRparam == 1.0) { + TN_optn = FALSE; + HKY_optn = TRUE; + if (optim_optn) TSparam = 2.0; + } else { + optim_optn = FALSE; + } + } + break; + + case 'p': if (!(TN_optn && nuc_optn)){ + FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + } else { + FPRINTF(STDOUTFILE "\n\n\nThe F84 model (Felsenstein 1984) is a restricted"); + FPRINTF(STDOUTFILE " TN model, and the one\nF84 parameter uniquely"); + FPRINTF(STDOUTFILE " determines the two corresponding TN parameters!\n\n"); + FPRINTF(STDOUTFILE "F84 expected transition/transversion ratio: "); + scanf("%lf", &tstvf84); + do ; + while (getchar() != '\n'); + if (tstvf84 <= 0.0) tstvf84 = 0.0; + else makeF84model(); + } + break; + + case 'y': break; + + default: FPRINTF(STDOUTFILE "\n\n\nThis is not a possible option!\n"); + break; + } + } while (ch != 'y'); + + FPRINTF(STDOUTFILE "\n\n\n"); +} + +/* open file for reading */ +void openfiletoread(FILE **fp, char name[], char descr[]) +{ + int count = 0; + cvector str; + + if ((*fp = fopen(name, "r")) == NULL) { + FPRINTF(STDOUTFILE "\n\n\nPlease enter a file name for the %s: ", descr); + str = mygets(); + while ((*fp = fopen(str, "r")) == NULL) + { + count++; + if (count > 10) + { + FPRINTF(STDOUTFILE "\n\n\nToo many trials - quitting ...\n"); + exit(1); + } + FPRINTF(STDOUTFILE "File '%s' not found, ", str); + FPRINTF(STDOUTFILE "please enter alternative name: "); + free_cvector(str); + str = mygets(); + } + free_cvector(str); + FPRINTF(STDOUTFILE "\n"); + } +} /* openfiletoread */ + + +/* open file for writing */ +void openfiletowrite(FILE **fp, char name[], char descr[]) +{ + int count = 0; + cvector str; + + if ((*fp = fopen(name, "w")) == NULL) { + FPRINTF(STDOUTFILE "\n\n\nPlease enter a file name for the %s: ", descr); + str = mygets(); + while ((*fp = fopen(str, "w")) == NULL) + { + count++; + if (count > 10) + { + FPRINTF(STDOUTFILE "\n\n\nToo many trials - quitting ...\n"); + exit(1); + } + FPRINTF(STDOUTFILE "File '%s' not created, ", str); + FPRINTF(STDOUTFILE "please enter other name: "); + free_cvector(str); + str = mygets(); + } + free_cvector(str); + FPRINTF(STDOUTFILE "\n"); + } +} /* openfiletowrite */ + + +/* open file for appending */ +void openfiletoappend(FILE **fp, char name[], char descr[]) +{ + int count = 0; + cvector str; + + if ((*fp = fopen(name, "a")) == NULL) { + FPRINTF(STDOUTFILE "\n\n\nPlease enter a file name for the %s: ", descr); + str = mygets(); + while ((*fp = fopen(str, "a")) == NULL) + { + count++; + if (count > 10) + { + FPRINTF(STDOUTFILE "\n\n\nToo many trials - quitting ...\n"); + exit(1); + } + FPRINTF(STDOUTFILE "File '%s' not created, ", str); + FPRINTF(STDOUTFILE "please enter other name: "); + free_cvector(str); + str = mygets(); + } + free_cvector(str); + FPRINTF(STDOUTFILE "\n"); + } +} /* openfiletowrite */ + + +/* close file */ +void closefile(FILE *fp) +{ + fclose(fp); +} /* closefile */ + +/* symmetrize doublet frequencies */ +void symdoublets() +{ + int i, imean; + double mean; + + if (data_optn == NUCLEOTIDE && SH_optn && sym_optn) { + /* ML frequencies */ + mean = (Freqtpm[1] + Freqtpm[4])/2.0; /* AC CA */ + Freqtpm[1] = mean; + Freqtpm[4] = mean; + mean = (Freqtpm[2] + Freqtpm[8])/2.0; /* AG GA */ + Freqtpm[2] = mean; + Freqtpm[8] = mean; + mean = (Freqtpm[3] + Freqtpm[12])/2.0; /* AT TA */ + Freqtpm[3] = mean; + Freqtpm[12] = mean; + mean = (Freqtpm[6] + Freqtpm[9])/2.0; /* CG GC */ + Freqtpm[6] = mean; + Freqtpm[9] = mean; + mean = (Freqtpm[7] + Freqtpm[13])/2.0; /* CT TC */ + Freqtpm[7] = mean; + Freqtpm[13] = mean; + mean = (Freqtpm[11] + Freqtpm[14])/2.0; /* GT TG */ + Freqtpm[11] = mean; + Freqtpm[14] = mean; + + /* base composition of each taxon */ + for (i = 0; i < Maxspc; i++) { + imean = (Basecomp[i][1] + Basecomp[i][4])/2; /* AC CA */ + Basecomp[i][1] = imean; + Basecomp[i][4] = imean; + imean = (Basecomp[i][2] + Basecomp[i][8])/2; /* AG GA */ + Basecomp[i][2] = imean; + Basecomp[i][8] = imean; + imean = (Basecomp[i][3] + Basecomp[i][12])/2; /* AT TA */ + Basecomp[i][3] = imean; + Basecomp[i][12] = imean; + imean = (Basecomp[i][6] + Basecomp[i][9])/2; /* CG GC */ + Basecomp[i][6] = imean; + Basecomp[i][9] = imean; + imean = (Basecomp[i][7] + Basecomp[i][13])/2; /* CT TC */ + Basecomp[i][7] = imean; + Basecomp[i][13] = imean; + imean = (Basecomp[i][11] + Basecomp[i][14])/2; /* GT TG */ + Basecomp[i][11] = imean; + Basecomp[i][14] = imean; + } + } +} + +/* show Ts/Tv ratio and Ts Y/R ratio */ +void computeexpectations() +{ + double AlphaYBeta, AlphaRBeta, piR, piY, num, denom, pyr, pur; + + if (nuc_optn == TRUE) { /* 4x4 nucs */ + piR = Freqtpm[0] + Freqtpm[2]; + piY = Freqtpm[1] + Freqtpm[3]; + AlphaRBeta = 4.0*TSparam / (1 + YRparam); + AlphaYBeta = AlphaRBeta * YRparam; + tstvratio = (AlphaRBeta*Freqtpm[0]*Freqtpm[2] + + AlphaYBeta*Freqtpm[1]*Freqtpm[3])/(piR * piY); + yrtsratio = (AlphaYBeta*Freqtpm[1]*Freqtpm[3]) / + (AlphaRBeta*Freqtpm[0]*Freqtpm[2]); + } else { /* 16x16 nucs */ + pyr = Freqtpm[1]*Freqtpm[3] + Freqtpm[5]*Freqtpm[7] + + Freqtpm[9]*Freqtpm[11] + Freqtpm[4]*Freqtpm[12] + + Freqtpm[5]*Freqtpm[13] + Freqtpm[6]*Freqtpm[14] + + Freqtpm[7]*Freqtpm[15] + Freqtpm[13]*Freqtpm[15]; + pur = Freqtpm[0]*Freqtpm[2] + Freqtpm[4]*Freqtpm[6] + + Freqtpm[0]*Freqtpm[8] + Freqtpm[1]*Freqtpm[9] + + Freqtpm[2]*Freqtpm[10] + Freqtpm[8]*Freqtpm[10] + + Freqtpm[3]*Freqtpm[11] + Freqtpm[12]*Freqtpm[14]; + num = pyr + pur; + denom = Freqtpm[0]*Freqtpm[1] + Freqtpm[1]*Freqtpm[2] + + Freqtpm[0]*Freqtpm[3] + Freqtpm[2]*Freqtpm[3] + + Freqtpm[0]*Freqtpm[4] + Freqtpm[1]*Freqtpm[5] + + Freqtpm[4]*Freqtpm[5] + Freqtpm[2]*Freqtpm[6] + + Freqtpm[5]*Freqtpm[6] + Freqtpm[3]*Freqtpm[7] + + Freqtpm[4]*Freqtpm[7] + Freqtpm[6]*Freqtpm[7] + + Freqtpm[4]*Freqtpm[8] + Freqtpm[5]*Freqtpm[9] + + Freqtpm[8]*Freqtpm[9] + Freqtpm[6]*Freqtpm[10] + + Freqtpm[9]*Freqtpm[10] + Freqtpm[7]*Freqtpm[11] + + Freqtpm[8]*Freqtpm[11] + Freqtpm[10]*Freqtpm[11] + + Freqtpm[0]*Freqtpm[12] + Freqtpm[8]*Freqtpm[12] + + Freqtpm[1]*Freqtpm[13] + Freqtpm[9]*Freqtpm[13] + + Freqtpm[12]*Freqtpm[13] + Freqtpm[2]*Freqtpm[14] + + Freqtpm[10]*Freqtpm[14] + Freqtpm[13]*Freqtpm[14] + + Freqtpm[3]*Freqtpm[15] + Freqtpm[11]*Freqtpm[15] + + Freqtpm[12]*Freqtpm[15] + Freqtpm[14]*Freqtpm[15]; + tstvratio = 2.0*TSparam * num/denom; + yrtsratio = pyr/pur; + } +} + +/* write ML distance matrix to file */ +void putdistance(FILE *fp) /* mod CZ 05/19/01 */ +{ + int i, j; + + fprintf(fp, " %d\n", Maxspc); + for (i = 0; i < Maxspc; i++) { + fputid10(fp, i); + for (j = 0; j < Maxspc; j++) { + fprintf(fp, " %.5f", Distanmat[i][j]/100.0); + } + fprintf(fp, "\n"); + } +} + + +/* find identical sequences */ +void findidenticals(FILE *fp) +{ + int i, j, noids; + cvector useqs; + + useqs = new_cvector(Maxspc); + + for (i = 0; i < Maxspc; i++) + useqs[i] = 0; + + noids = TRUE; + for (i = 0; i < Maxspc && noids; i++) + for (j = i + 1; j < Maxspc && noids; j++) + if (Distanmat[i][j] == 0.0) noids = FALSE; + + if (noids) + fprintf(fp, " All sequences are unique.\n"); + else { + for (i = 0; i < Maxspc; i++) { + noids = TRUE; + for (j = i + 1; j < Maxspc && noids; j++) + if (Distanmat[i][j] == 0.0) noids = FALSE; + + if (!noids && useqs[i] == 0) { + fputid(fp, i); + useqs[i] = 1; + for (j = i + 1; j < Maxspc; j++) + if (Distanmat[i][j] == 0.0) { + fprintf(fp, ", "); + fputid(fp, j); + useqs[j] = 1; + } + fprintf(fp, ".\n"); + } + } + } + free_cvector(useqs); +} + +/* compute average distance */ +double averagedist() +{ + int i, j; + double sum; + + sum = 0.0; + for (i = 0; i < Maxspc; i++) + for (j = i + 1; j < Maxspc; j++) + sum = sum + Distanmat[i][j]; + + sum = sum / (double) Maxspc / ((double) Maxspc - 1.0) * 2.0; + + return sum; +} + +/* first lines of EPSF likelihood mapping file */ +void initps(FILE *ofp) +{ + fprintf(ofp, "%%!PS-Adobe-3.0 EPSF-3.0\n"); + fprintf(ofp, "%%%%BoundingBox: 60 210 550 650\n"); + fprintf(ofp, "%%%%Pages: 1\n"); +# ifndef ALPHA + fprintf(ofp, "%%%%Creator: %s (version %s)\n", PACKAGE, VERSION); +# else + fprintf(ofp, "%%%%Creator: %s (version %s%s)\n", PACKAGE, VERSION, ALPHA); +# endif + fprintf(ofp, "%%%%Title: Likelihood Mapping Analysis\n"); + fprintf(ofp, "%%%%CreationDate: %s", asctime(localtime(&Starttime)) ); + fprintf(ofp, "%%%%DocumentFonts: Helvetica\n"); + fprintf(ofp, "%%%%DocumentNeededFonts: Helvetica\n"); + fprintf(ofp, "%%%%EndComments\n"); + fprintf(ofp, "%% use inch as unit\n"); + fprintf(ofp, "/inch {72 mul} def\n"); + fprintf(ofp, "%% triangle side length (3 inch)\n"); + fprintf(ofp, "/tl {3 inch mul} def\n"); + fprintf(ofp, "%% plot one dot (x-y coordinates on stack)\n"); + fprintf(ofp, "/dot {\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, "0.002 tl 0 360 arc %% radius is 0.002 of the triangle length\n"); + fprintf(ofp, "closepath\n"); + fprintf(ofp, "fill\n"); + fprintf(ofp, "} def\n"); + fprintf(ofp, "%% preamble\n"); + fprintf(ofp, "/Helvetica findfont\n"); + fprintf(ofp, "12 scalefont\n"); + fprintf(ofp, "setfont\n"); + fprintf(ofp, "%% 0/0 for triangle of triangles\n"); + fprintf(ofp, "0.9 inch 3 inch translate\n"); + fprintf(ofp, "%% first triangle (the one with dots)\n"); + fprintf(ofp, "0.6 tl 1.2 tl 0.8660254038 mul translate\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.0 tl 0.0 tl moveto\n"); + fprintf(ofp, " 1.0 tl 0.0 tl lineto\n"); + fprintf(ofp, " 0.5 tl 0.8660254038 tl lineto\n"); + fprintf(ofp, "closepath\n"); + fprintf(ofp, "stroke\n"); +} + +/* plot one point of likelihood mapping analysis */ +void plotlmpoint(FILE *ofp, double w1, double w2) +{ + fprintf(ofp,"%.10f tl %.10f tl dot\n", + 0.5*w1 + w2, w1*0.8660254038); +} + +/* last lines of EPSF likelihood mapping file */ +void finishps(FILE *ofp) +{ + fprintf(ofp, "stroke\n"); + fprintf(ofp, "%% second triangle (the one with 3 basins)\n"); + fprintf(ofp, "/secondtriangle {\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.0 tl 0.0 tl moveto\n"); + fprintf(ofp, " 1.0 tl 0.0 tl lineto\n"); + fprintf(ofp, " 0.5 tl 0.8660254038 tl lineto\n"); + fprintf(ofp, "closepath\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.50 tl 0.2886751346 tl moveto\n"); + fprintf(ofp, " 0.50 tl 0.0000000000 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.50 tl 0.2886751346 tl moveto\n"); + fprintf(ofp, " 0.25 tl 0.4330127019 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.50 tl 0.2886751346 tl moveto\n"); + fprintf(ofp, " 0.75 tl 0.4330127019 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "0.44 tl 0.5 tl moveto %% up\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) ar1*100.0/Numquartets); + fprintf(ofp, "0.25 tl 0.15 tl moveto %% down left\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) ar3*100.0/Numquartets); + fprintf(ofp, "0.63 tl 0.15 tl moveto %% down right\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) ar2*100.0/Numquartets); + fprintf(ofp, "} def\n"); + fprintf(ofp, "%% third triangle (the one with 7 basins)\n"); + fprintf(ofp, "/thirdtriangle {\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.0 tl 0.0 tl moveto\n"); + fprintf(ofp, " 1.0 tl 0.0 tl lineto\n"); + fprintf(ofp, " 0.5 tl 0.8660254038 tl lineto\n"); + fprintf(ofp, "closepath\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.25 tl 0.1443375673 tl moveto\n"); + fprintf(ofp, " 0.75 tl 0.1443375673 tl lineto\n"); + fprintf(ofp, " 0.50 tl 0.5773502692 tl lineto\n"); + fprintf(ofp, "closepath\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.125 tl 0.2165063509 tl moveto\n"); + fprintf(ofp, " 0.250 tl 0.1443375673 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.375 tl 0.6495190528 tl moveto\n"); + fprintf(ofp, " 0.500 tl 0.5773502692 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.625 tl 0.6495190528 tl moveto\n"); + fprintf(ofp, " 0.500 tl 0.5773502692 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.875 tl 0.2165063509 tl moveto\n"); + fprintf(ofp, " 0.750 tl 0.1443375673 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.750 tl 0.00 tl moveto\n"); + fprintf(ofp, " 0.750 tl 0.1443375673 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "newpath\n"); + fprintf(ofp, " 0.250 tl 0.00 tl moveto\n"); + fprintf(ofp, " 0.250 tl 0.1443375673 tl lineto\n"); + fprintf(ofp, "stroke\n"); + fprintf(ofp, "0.42 tl 0.66 tl moveto %% up\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) reg1*100.0/Numquartets); + fprintf(ofp, "0.07 tl 0.05 tl moveto %% down left\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) reg3*100.0/Numquartets); + fprintf(ofp, "0.77 tl 0.05 tl moveto %% down right\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) reg2*100.0/Numquartets); + fprintf(ofp, "0.43 tl 0.05 tl moveto %% down side\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) reg5*100.0/Numquartets); + fprintf(ofp, "0.43 tl 0.28 tl moveto %% center\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) reg7*100.0/Numquartets); + fprintf(ofp, "gsave\n"); + fprintf(ofp, "-60 rotate\n"); + fprintf(ofp, "-0.07 tl 0.77 tl moveto %% right side\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) reg4*100.0/Numquartets); + fprintf(ofp, "grestore\n"); + fprintf(ofp, "gsave\n"); + fprintf(ofp, "60 rotate\n"); + fprintf(ofp, "0.4 tl -0.09 tl moveto %% left side\n"); + fprintf(ofp, "(%.1f%%) show\n", (double) reg6*100.0/Numquartets); + fprintf(ofp, "grestore\n"); + fprintf(ofp, "} def\n"); + fprintf(ofp, "%% print the other two triangles\n"); + fprintf(ofp, "-0.6 tl -1.2 tl 0.8660254038 mul translate\n"); + fprintf(ofp, "secondtriangle\n"); + fprintf(ofp, "1.2 tl 0 translate\n"); + fprintf(ofp, "thirdtriangle\n"); + if (numclust == 4) { /* four cluster analysis */ + fprintf(ofp, "%% label corners\n"); + fprintf(ofp, "0.375 tl 0.9 tl moveto\n"); + fprintf(ofp, "((a,b)-(c,d)) show %% CHANGE HERE IF NECESSARY\n"); + fprintf(ofp, "-0.16 tl -0.08 tl moveto\n"); + fprintf(ofp, "((a,d)-(b,c)) show %% CHANGE HERE IF NECESSARY\n"); + fprintf(ofp, "0.92 tl -0.08 tl moveto\n"); + fprintf(ofp, "((a,c)-(b,d)) show %% CHANGE HERE IF NECESSARY\n"); + } + if (numclust == 3) { /* three cluster analysis */ + fprintf(ofp, "%% label corners\n"); + fprintf(ofp, "0.375 tl 0.9 tl moveto\n"); + fprintf(ofp, "((a,b)-(c,c)) show %% CHANGE HERE IF NECESSARY\n"); + fprintf(ofp, "-0.16 tl -0.08 tl moveto\n"); + fprintf(ofp, "((a,c)-(b,c)) show %% CHANGE HERE IF NECESSARY\n"); + fprintf(ofp, "0.92 tl -0.08 tl moveto\n"); + fprintf(ofp, "((a,c)-(b,c)) show %% CHANGE HERE IF NECESSARY\n"); + } + if (numclust == 2) { /* two cluster analysis */ + fprintf(ofp, "%% label corners\n"); + fprintf(ofp, "0.375 tl 0.9 tl moveto\n"); + fprintf(ofp, "((a,a)-(b,b)) show %% CHANGE HERE IF NECESSARY\n"); + fprintf(ofp, "-0.16 tl -0.08 tl moveto\n"); + fprintf(ofp, "((a,b)-(a,b)) show %% CHANGE HERE IF NECESSARY\n"); + fprintf(ofp, "0.92 tl -0.08 tl moveto\n"); + fprintf(ofp, "((a,b)-(a,b)) show %% CHANGE HERE IF NECESSARY\n"); + } + fprintf(ofp, "showpage\n"); + fprintf(ofp, "%%%%EOF\n"); +} + +/* computes LM point from the three log-likelihood values, + plots the point, and does some statistics */ +void makelmpoint(FILE *fp, double b1, double b2, double b3) +{ + double w1, w2, w3, temp; + unsigned char qpbranching; + double temp1, temp2, temp3, onethird; + unsigned char discreteweight[3], treebits[3]; + + onethird = 1.0/3.0; + treebits[0] = (unsigned char) 1; + treebits[1] = (unsigned char) 2; + treebits[2] = (unsigned char) 4; + + /* sort in descending order */ + qweight[0] = b1; + qweight[1] = b2; + qweight[2] = b3; + sort3doubles(qweight, qworder); + + /* compute Bayesian weights */ + qweight[qworder[1]] = exp(qweight[qworder[1]]-qweight[qworder[0]]); + qweight[qworder[2]] = exp(qweight[qworder[2]]-qweight[qworder[0]]); + qweight[qworder[0]] = 1.0; + temp = qweight[0] + qweight[1] + qweight[2]; + qweight[0] = qweight[0]/temp; + qweight[1] = qweight[1]/temp; + qweight[2] = qweight[2]/temp; + + /* plot one point in likelihood mapping triangle */ + w1 = qweight[0]; + w2 = qweight[1]; + w3 = qweight[2]; + plotlmpoint(fp, w1, w2); + + /* check areas 1,2,3 */ + if (treebits[qworder[0]] == 1) ar1++; + else if (treebits[qworder[0]] == 2) ar2++; + else ar3++; + + /* check out regions 1,2,3,4,5,6,7 */ + + /* 100 distribution */ + temp1 = 1.0 - qweight[qworder[0]]; + sqdiff[0] = temp1*temp1 + + qweight[qworder[1]]*qweight[qworder[1]] + + qweight[qworder[2]]*qweight[qworder[2]]; + discreteweight[0] = treebits[qworder[0]]; + + /* 110 distribution */ + temp1 = 0.5 - qweight[qworder[0]]; + temp2 = 0.5 - qweight[qworder[1]]; + sqdiff[1] = temp1*temp1 + temp2*temp2 + + qweight[qworder[2]]*qweight[qworder[2]]; + discreteweight[1] = treebits[qworder[0]] + treebits[qworder[1]]; + + /* 111 distribution */ + temp1 = onethird - qweight[qworder[0]]; + temp2 = onethird - qweight[qworder[1]]; + temp3 = onethird - qweight[qworder[2]]; + sqdiff[2] = temp1 * temp1 + temp2 * temp2 + temp3 * temp3; + discreteweight[2] = (unsigned char) 7; + + /* sort in descending order */ + sort3doubles(sqdiff, sqorder); + + qpbranching = (unsigned char) discreteweight[sqorder[2]]; + + if (qpbranching == 1) { + reg1++; + if (w2 < w3) reg1l++; + else reg1r++; + } + if (qpbranching == 2) { + reg2++; + if (w1 < w3) reg2d++; + else reg2u++; + } + if (qpbranching == 4) { + reg3++; + if (w1 < w2) reg3d++; + else reg3u++; + } + if (qpbranching == 3) { + reg4++; + if (w1 < w2) reg4d++; + else reg4u++; + } + if (qpbranching == 6) { + reg5++; + if (w2 < w3) reg5l++; + else reg5r++; + } + if (qpbranching == 5) { + reg6++; + if (w1 < w3) reg6d++; + else reg6u++; + } + if (qpbranching == 7) reg7++; +} + +/* print tree statistics */ +void printtreestats(FILE *ofp) +{ + int i, j, besttree; + double bestlkl, difflkl, difflklps, temp, sum; + + /* find best tree */ + besttree = 0; + bestlkl = ulkl[0]; + for (i = 1; i < numutrees; i++) + if (ulkl[i] > bestlkl) { + besttree = i; + bestlkl = ulkl[i]; + } + + fprintf(ofp, "\n\nCOMPARISON OF USER TREES (NO CLOCK)\n\n"); + fprintf(ofp, "Tree log L difference S.E. Significantly worse\n"); + fprintf(ofp, "--------------------------------------------------------\n"); + for (i = 0; i < numutrees; i++) { + difflkl = ulkl[besttree]-ulkl[i]; + fprintf(ofp, "%2d %10.2f %8.2f ", i+1, ulkl[i], difflkl); + if (i == besttree) { + fprintf(ofp, " <----------------- best tree"); + } else { + /* compute variance of Log L differences over sites */ + difflklps = difflkl/(double)Maxsite; + sum = 0.0; + for (j = 0; j < Numptrn; j++) { + temp = allsites[besttree][j] - allsites[i][j] - difflklps; + sum += temp*temp*Weight[j]; + } + sum = sqrt(fabs(sum/(Maxsite-1.0)*Maxsite)); + fprintf(ofp, "%11.2f ", sum); + if (difflkl > 1.96*sum) + fprintf(ofp, "yes"); + else + fprintf(ofp, "no"); + } + fprintf(ofp, "\n"); + } + fprintf(ofp, "\nThis test (5%% significance) follows Kishino and Hasegawa (1989).\n"); + + if (compclock) { + + /* find best tree */ + besttree = 0; + bestlkl = ulklc[0]; + for (i = 1; i < numutrees; i++) + if (ulklc[i] > bestlkl) { + besttree = i; + bestlkl = ulklc[i]; + } + + fprintf(ofp, "\n\nCOMPARISON OF USER TREES (WITH CLOCK)\n\n"); + fprintf(ofp, "Tree log L difference S.E. Significantly worse\n"); + fprintf(ofp, "--------------------------------------------------------\n"); + for (i = 0; i < numutrees; i++) { + difflkl = ulklc[besttree]-ulklc[i]; + fprintf(ofp, "%2d %10.2f %8.2f ", i+1, ulklc[i], difflkl); + if (i == besttree) { + fprintf(ofp, " <----------------- best tree"); + } else { + /* compute variance of Log L differences over sites */ + difflklps = difflkl/(double)Maxsite; + sum = 0.0; + for (j = 0; j < Numptrn; j++) { + temp = allsitesc[besttree][j] - allsitesc[i][j] - difflklps; + sum += temp*temp*Weight[j]; + } + sum = sqrt(fabs(sum/(Maxsite-1.0)*Maxsite)); + fprintf(ofp, "%11.2f ", sum); + if (difflkl > 1.96*sum) + fprintf(ofp, "yes"); + else + fprintf(ofp, "no"); + } + fprintf(ofp, "\n"); + } + fprintf(ofp, "\nThis test (5%% significance) follows Kishino and Hasegawa (1989).\n"); + } +} + +/* time stamp */ +void timestamp(FILE* ofp) +{ + double timespan; + double cpuspan; + timespan = difftime(Stoptime, Starttime); + cpuspan = ((double) (Stopcpu - Startcpu) / CLOCKS_PER_SEC); + fprintf(ofp, "\n\nTIME STAMP\n\n"); + fprintf(ofp, "Date and time: %s", asctime(localtime(&Starttime)) ); + fprintf(ofp, "Runtime (excl. input) : %.0f seconds (= %.1f minutes = %.1f hours)\n", + timespan, timespan/60., timespan/3600.); + fprintf(ofp, "Runtime (incl. input) : %.0f seconds (= %.1f minutes = %.1f hours)\n", + fulltime, fulltime/60., fulltime/3600.); +#ifdef TIMEDEBUG + fprintf(ofp, "CPU time (incl. input): %.0f seconds (= %.1f minutes = %.1f hours)\n\n", + fullcpu, fullcpu/60., fullcpu/3600.); +#endif /* TIMEDEBUG */ + +} + +/* extern int bestrfound; */ + +/* write output file */ +void writeoutputfile(FILE *ofp, int part) +{ + int i, fail, df; + uli li; + double pval, delta; + + if ((part == WRITEPARAMS) || (part == WRITEALL)) { +# ifndef ALPHA + fprintf(ofp, "TREE-PUZZLE %s\n\n", VERSION); +# else + fprintf(ofp, "TREE-PUZZLE %s%s\n\n", VERSION, ALPHA); +# endif + + fprintf(ofp, "Input file name: %s\n",INFILE); + if (puzzlemode == USERTREE) fprintf(ofp, "User tree file name: %s\n",INTREE); + + + fprintf(ofp, "Type of analysis: "); + if (typ_optn == TREERECON_OPTN) fprintf(ofp, "tree reconstruction\n"); + if (typ_optn == LIKMAPING_OPTN) fprintf(ofp, "likelihood mapping\n"); + fprintf(ofp, "Parameter estimation: "); + if (approxp_optn) fprintf(ofp, "approximate (faster)\n"); + else fprintf(ofp, "accurate (slow)\n"); + if (!(puzzlemode == USERTREE && typ_optn == TREERECON_OPTN)) { + fprintf(ofp, "Parameter estimation uses: "); + if (qcalg_optn) + fprintf(ofp, "quartet sampling (for substitution process) + NJ tree (for rate variation)\n"); + else + fprintf(ofp, "neighbor-joining tree (for substitution process and rate variation)\n"); + } else { + fprintf(ofp, "Parameter estimation uses: "); + if (utree_optn) + fprintf(ofp, "1st user tree (for substitution process and rate variation)\n"); + else if (qcalg_optn) + fprintf(ofp, "quartet sampling (for substitution process) + NJ tree (for rate variation)\n"); + else + fprintf(ofp, "neighbor-joining tree (for substitution process and rate variation)\n"); + } + fprintf(ofp, "\nStandard errors (S.E.) are obtained by the curvature method.\n"); + fprintf(ofp, "The upper and lower bounds of an approximate 95%% confidence interval\n"); + fprintf(ofp, "for parameter or branch length x are x-1.96*S.E. and x+1.96*S.E.\n"); + fprintf(ofp, "\n\n"); + fprintf(ofp, "SEQUENCE ALIGNMENT\n\n"); + fprintf(ofp, "Input data: %d sequences with %d ", Maxspc, Maxsite); + if (data_optn == AMINOACID) + fprintf(ofp, "amino acid"); + else if (data_optn == NUCLEOTIDE && SH_optn) + fprintf(ofp, "doublet (%d nucleotide)", Maxsite*2); + else if (data_optn == NUCLEOTIDE && nuc_optn) + fprintf(ofp, "nucleotide"); + else if (data_optn == BINARY) + fprintf(ofp, "binary state"); + fprintf(ofp, " sites"); + if (data_optn == NUCLEOTIDE && (Maxseqc % 3) == 0 && !SH_optn) { + if (codon_optn == 1) fprintf(ofp, " (1st codon positions)"); + if (codon_optn == 2) fprintf(ofp, " (2nd codon positions)"); + if (codon_optn == 3) fprintf(ofp, " (3rd codon positions)"); + if (codon_optn == 4) fprintf(ofp, " (1st and 2nd codon positions)"); + } + if (data_optn == NUCLEOTIDE && SH_optn) { + if (SHcodon) + fprintf(ofp, " (1st and 2nd codon positions)"); + else + fprintf(ofp, " (1st+2nd, 3rd+4th, etc. site)"); + } + fprintf(ofp, "\n"); + fprintf(ofp, "Number of constant sites: %d (= %.1f%% of all sites)\n", + Numconst, 100.0*fracconst); + fprintf(ofp, "Number of site patterns: %d\n", + Numptrn); + fprintf(ofp, "Number of constant site patterns: %d (= %.1f%% of all site patterns)\n\n\n", + Numconstpat, 100.0*fracconstpat); + fprintf(ofp, "SUBSTITUTION PROCESS\n\n"); + fprintf(ofp, "Model of substitution: "); + if (data_optn == NUCLEOTIDE) { /* nucleotides */ + if (nuc_optn) { + if(HKY_optn) fprintf(ofp, "HKY (Hasegawa et al. 1985)\n"); + else fprintf(ofp, "TN (Tamura-Nei 1993)\n"); + fprintf(ofp, "Transition/transversion parameter"); + if (optim_optn) + fprintf(ofp, " (estimated from data set)"); + fprintf(ofp, ": %.2f", TSparam); + if (optim_optn) + fprintf(ofp, " (S.E. %.2f)", tserr); + fprintf(ofp, "\n"); + + if (optim_optn && TSparam > MAXTS - 1.0) + fprintf(ofp, "WARNING --- parameter estimate close to internal upper bound!\n"); + if (optim_optn && TSparam < MINTS + 0.1) + fprintf(ofp, "WARNING --- parameter estimate close to internal lower bound!\n"); + + if (TN_optn) { + fprintf(ofp, "Y/R transition parameter"); + if (optim_optn) + fprintf(ofp, " (estimated from data set)"); + fprintf(ofp, ": %.2f", YRparam); + if (optim_optn) + fprintf(ofp, " (S.E. %.2f)", yrerr); + fprintf(ofp, "\n"); + + if (optim_optn && YRparam > MAXYR - 0.5) + fprintf(ofp, "WARNING --- parameter estimate close to internal upper bound!\n"); + if (optim_optn && YRparam < MINYR + 0.1) + fprintf(ofp, "WARNING --- parameter estimate close to internal lower bound!\n"); + + } + } + if (SH_optn) { + fprintf(ofp, "SH (Schoeniger-von Haeseler 1994)\n"); + fprintf(ofp, "Transition/transversion parameter"); + if (optim_optn) fprintf(ofp, " (estimated from data set)"); + fprintf(ofp, ": %.2f\n", TSparam); + if (optim_optn) + fprintf(ofp, " (S.E. %.2f)", tserr); + fprintf(ofp, "\n"); + + if (optim_optn && TSparam > MAXTS - 1.0) + fprintf(ofp, "WARNING --- parameter estimate close to internal upper bound!\n"); + if (optim_optn && TSparam < MINTS + 0.1) + fprintf(ofp, "WARNING --- parameter estimate close to internal lower bound!\n"); + + } + } + if (data_optn == AMINOACID) { /* amino acids */ + if (Dayhf_optn) fprintf(ofp, "Dayhoff (Dayhoff et al. 1978)\n"); + if (Jtt_optn) fprintf(ofp, "JTT (Jones et al. 1992)\n"); + if (mtrev_optn) fprintf(ofp, "mtREV24 (Adachi-Hasegawa 1996)\n"); + if (cprev_optn) fprintf(ofp, "cpREV45 (Adachi et al. 2000)\n"); + if (blosum62_optn) fprintf(ofp, "BLOSUM 62 (Henikoff-Henikoff 1992)\n"); + if (vtmv_optn) fprintf(ofp, "VT (Mueller-Vingron 2000)\n"); + if (wag_optn) fprintf(ofp, "WAG (Whelan-Goldman 2000)\n"); + } + if (data_optn == BINARY) { /* binary states */ + fprintf(ofp, "Two-state model (Felsenstein 1981)\n"); + } + if (data_optn == AMINOACID) + fprintf(ofp, "Amino acid "); + else if (data_optn == NUCLEOTIDE && SH_optn) + fprintf(ofp, "Doublet "); + else if (data_optn == NUCLEOTIDE && nuc_optn) + fprintf(ofp, "Nucleotide "); + else if (data_optn == BINARY) + fprintf(ofp, "Binary state "); + fprintf(ofp, "frequencies ("); + if (Frequ_optn) fprintf(ofp, "estimated from data set"); + else fprintf(ofp, "user specified"); + if (data_optn == NUCLEOTIDE && SH_optn && sym_optn) + fprintf(ofp, " and symmetrized"); + fprintf(ofp, "):\n\n"); + for (i = 0; i < gettpmradix(); i++) + fprintf(ofp, " pi(%s) = %5.1f%%\n", + int2code(i), Freqtpm[i]*100); + if (data_optn == NUCLEOTIDE) { + fprintf(ofp, "\nExpected transition/transversion ratio: %.2f", + tstvratio); + if (tstvf84 == 0.0) fprintf(ofp, "\n"); + else fprintf(ofp, " (= F84 parameter)\n"); + fprintf(ofp, "Expected pyrimidine transition/purine transition"); + fprintf(ofp, " ratio: %.2f\n", yrtsratio); + if (tstvf84 != 0.0 && TN_optn) + fprintf(ofp, + "This TN model is equivalent to a F84 model (Felsenstein 1984).\n"); + } + fprintf(ofp, "\n\nRATE HETEROGENEITY\n\n"); + fprintf(ofp, "Model of rate heterogeneity: "); + if (rhetmode == UNIFORMRATE) fprintf(ofp, "uniform rate\n"); + if (rhetmode == GAMMARATE ) fprintf(ofp, "Gamma distributed rates\n"); + if (rhetmode == TWORATE ) fprintf(ofp, "two rates (1 invariable + 1 variable)\n"); + if (rhetmode == MIXEDRATE ) fprintf(ofp, "mixed (1 invariable + %d Gamma rates)\n", numcats); + if (rhetmode == TWORATE || rhetmode == MIXEDRATE) { + fprintf(ofp, "Fraction of invariable sites"); + if (fracinv_optim) fprintf(ofp, " (estimated from data set)"); + fprintf(ofp, ": %.2f", fracinv); + if (fracinv_optim) fprintf(ofp, " (S.E. %.2f)", fierr); + fprintf(ofp, "\n"); + + if (fracinv_optim && fracinv > MAXFI - 0.05) + fprintf(ofp, "WARNING --- parameter estimate close to internal upper bound!\n"); + + fprintf(ofp, "Number of invariable sites: %.0f\n", floor(fracinv*Maxsite)); + } + if (rhetmode == GAMMARATE || rhetmode == MIXEDRATE) { + fprintf(ofp, "Gamma distribution parameter alpha"); + if (grate_optim) fprintf(ofp, " (estimated from data set)"); + fprintf(ofp, ": %.2f", (1.0-Geta)/Geta); + if (grate_optim) fprintf(ofp, " (S.E. %.2f)", + geerr/(Geta*Geta)); /* first order approximation */ + fprintf(ofp, "\n"); + + if (grate_optim && Geta > MAXGE - 0.02) + fprintf(ofp, "WARNING --- parameter estimate close to internal upper bound!\n"); + if (grate_optim && Geta < MINGE + 0.01) + fprintf(ofp, "WARNING --- parameter estimate close to internal lower bound!\n"); + + fprintf(ofp, "Number of Gamma rate categories: %d\n", numcats); + } + if (rhetmode == MIXEDRATE) { + fprintf(ofp, "Total rate heterogeneity (invariable sites + Gamma model): "); + fprintf(ofp, "%.2f", fracinv + Geta - fracinv*Geta); + if (grate_optim && fracinv_optim) + fprintf(ofp, " (S.E. %.2f)", geerr + fierr); /* first order approximation */ + else if (grate_optim && !fracinv_optim) + fprintf(ofp, " (S.E. %.2f)", geerr); + else if (!grate_optim && fracinv_optim) + fprintf(ofp, " (S.E. %.2f)", fierr); + fprintf(ofp, "\n"); + } + if (rhetmode != UNIFORMRATE) { + fprintf(ofp, "\nRates and their respective probabilities used in the likelihood function:\n"); + fprintf(ofp, "\n Category Relative rate Probability\n"); + if (rhetmode == TWORATE || rhetmode == MIXEDRATE) + fprintf(ofp, " 0 0.0000 %.4f\n", fracinv); + for (i = 0; i < numcats; i++) + fprintf(ofp, " %d %.4f %.4f\n", + i+1, Rates[i], (1.0-fracinv)/(double) numcats); + } + if (rhetmode == GAMMARATE || rhetmode == MIXEDRATE) { + fprintf(ofp, "\nCategories 1-%d approximate a continous ", numcats); + fprintf(ofp, "Gamma-distribution with expectation 1\n"); + fprintf(ofp, "and variance "); + if (Geta == 1.0) fprintf(ofp, "infinity"); + else fprintf(ofp, "%.2f", Geta/(1.0-Geta)); + fprintf(ofp, ".\n"); + } + + if (typ_optn == TREERECON_OPTN && (puzzlemode == QUARTPUZ || puzzlemode == USERTREE)) + if (rhetmode != UNIFORMRATE) { + fprintf(ofp, "\nCombination of categories that contributes"); + fprintf(ofp, " the most to the likelihood\n"); + fprintf(ofp, "(computation done without clock assumption assuming "); + if (puzzlemode == QUARTPUZ) fprintf(ofp, "quartet-puzzling tree"); + if (puzzlemode == USERTREE) { + if (utree_optn) fprintf(ofp, "1st user tree"); + else fprintf(ofp, "NJ tree"); + } + fprintf(ofp, "):\n\n"); + if (bestratefound==0) findbestratecombination(); + printbestratecombination(ofp); + } + + fprintf(ofp, "\n\nSEQUENCE COMPOSITION (SEQUENCES IN INPUT ORDER)\n\n"); + fail = FALSE; + fprintf(ofp, " 5%% chi-square test p-value\n"); + for (i = 0; i < Maxspc; i++) { + fprintf(ofp, " "); + fputid10(ofp, i); + pval = homogentest(i); + if ( pval < 0.05 ) fprintf(ofp, " failed "); + else fprintf(ofp, " passed "); + if (chi2fail) fail = TRUE; + fprintf(ofp, " %6.2f%% ", pval*100.0); + fprintf(ofp, "\n"); + } + fprintf(ofp, "\n"); + fprintf(ofp, "The chi-square tests compares the "); + if (data_optn == AMINOACID) + fprintf(ofp, "amino acid"); + else if (data_optn == NUCLEOTIDE && SH_optn) + fprintf(ofp, "doublet"); + else if (data_optn == NUCLEOTIDE && nuc_optn) + fprintf(ofp, "nucleotide"); + else if (data_optn == BINARY) + fprintf(ofp, "binary state"); + fprintf(ofp," composition of each sequence\n"); + fprintf(ofp, "to the frequency distribution assumed in the maximum likelihood model.\n"); + if (fail) { + fprintf(ofp, "\nWARNING: Result of chi-square test may not be valid"); + fprintf(ofp, " because of small\nmaximum likelihood frequencies and"); + fprintf(ofp, " short sequence length!\n"); + } + fprintf(ofp, "\n\nIDENTICAL SEQUENCES\n\n"); + fprintf(ofp, "The sequences in each of the following groups are all identical. To speed\n"); + fprintf(ofp, "up computation please remove all but one of each group from the data set.\n\n"); + findidenticals(ofp); + fprintf(ofp, "\n\nMAXIMUM LIKELIHOOD DISTANCES\n\n"); + fprintf(ofp, "Maximum likelihood distances are computed using the "); + fprintf(ofp, "selected model of\nsubstitution and rate heterogeneity.\n\n"); + putdistance(ofp); + fprintf(ofp, "\nAverage distance (over all possible pairs of sequences): %.5f\n", + averagedist() / 100.0); + + + } /* if WRITEPARAMS) || WRITEALL */ + + if ((part == WRITEREST) || (part == WRITEALL)) { + + if (puzzlemode == QUARTPUZ &&typ_optn == TREERECON_OPTN) { + fprintf(ofp, "\n\nBAD QUARTET STATISTICS (SEQUENCES IN INPUT ORDER)\n\n"); + for (i = 0; i < Maxspc; i++) { + fprintf(ofp, " "); + fputid10(ofp, i); + if (badqs > 0) + fprintf(ofp, " [%lu] %6.2f%%\n", badtaxon[i], (double) (100 * badtaxon[i]) / (double) badqs); + else + fprintf(ofp, " [%lu]\n", badtaxon[i]); + } + fprintf(ofp, "\nThe number in square brackets indicates how often each sequence is\n"); + fprintf(ofp, "involved in one of the %lu completely unresolved quartets of the\n", badqs); + fprintf(ofp, "quartet puzzling tree search.\n"); + if (badqs > 0) + fprintf(ofp, "Additionally the according percentages are given.\n"); + } + + if (typ_optn == TREERECON_OPTN) { + + fprintf(ofp, "\n\nTREE SEARCH\n\n"); + if (puzzlemode == QUARTPUZ) { + fprintf(ofp, "Quartet puzzling is used to choose from the possible tree topologies\n"); + fprintf(ofp, "and to simultaneously infer support values for internal branches.\n\n"); + fprintf(ofp, "Number of puzzling steps: %lu\n", Numtrial); + fprintf(ofp, "Analysed quartets: %lu\n", Numquartets); + fprintf(ofp, "Unresolved quartets: %lu (= %.1f%%)\n", + badqs, (double) badqs / (double) Numquartets * 100); + fprintf(ofp, "\nQuartet trees are based on %s maximum likelihood values\n", + (approxqp ? "approximate" : "exact")); + fprintf(ofp, "using the selected model of substitution and rate heterogeneity.\n\n\n"); + } + if (puzzlemode == USERTREE) { + fprintf(ofp, "%d tree topologies were specified by the user.\n", numutrees); + } + if (puzzlemode == PAIRDIST) { + fprintf(ofp, "No tree search performed (maximum likelihood distances only).\n"); + } + + if (puzzlemode == QUARTPUZ) { + fprintf(ofp, "QUARTET PUZZLING TREE\n\n"); + fprintf(ofp, "Support for the internal branches of the unrooted quartet puzzling\n"); + fprintf(ofp, "tree topology is shown in percent.\n"); + if (consincluded == Maxspc - 3) + fprintf(ofp,"\nThis quartet puzzling tree is completely resolved.\n"); + else + fprintf(ofp,"\nThis quartet puzzling tree is not completely resolved!\n"); + fprintf(ofp, "\n\n"); + plotconsensustree(ofp); + fprintf(ofp, "\n\nQuartet puzzling tree (in CLUSTAL W notation):\n\n"); + writeconsensustree(ofp); + fprintf(ofp, "\n\nBIPARTITIONS\n\n"); + fprintf(ofp, "The following bipartitions occured at least once"); + fprintf(ofp, " in all intermediate\ntrees that have been generated "); + fprintf(ofp, "in the %lu puzzling steps:\n\n", Numtrial); + fprintf(ofp, "Bipartitions included in the quartet puzzling tree:\n"); + fprintf(ofp, + "(bipartition with sequences in input order : number of times seen)\n\n"); + for (li = 0; li < consincluded; li++) { + fprintf(ofp, " "); + printsplit(ofp, splitfreqs[2*li+1]); + fprintf(ofp, " : %lu\n", splitfreqs[2*li]); + } + if (consincluded == 0) fprintf(ofp, " None (no bipartition included)\n"); + fprintf(ofp, "\nBipartitions not included in the quartet puzzling tree:\n"); + fprintf(ofp, + "(bipartition with sequences in input order : number of times seen)\n\n"); + + if (consincluded == numbiparts) { + fprintf(ofp, " None (all bipartitions are included)\n"); + } else { + /* print first 20 bipartions not included */ + for (li = consincluded; (li < numbiparts) && (li < consincluded + 20UL); li++) { + fprintf(ofp, " "); + printsplit(ofp, splitfreqs[2*li+1]); + fprintf(ofp, " : %lu\n", splitfreqs[2*li]); + } + if ((li == consincluded + 20UL) && (li != numbiparts)) + fprintf(ofp, "\n(%lu other less frequent bipartitions not shown)\n", + numbiparts - consincluded - 20UL); + } + fprintfsortedpstrees(ofp, psteptreelist, psteptreenum, psteptreesum, 0, 5.0); + } + + if (puzzlemode == QUARTPUZ) { + fprintf(ofp, "\n\nMAXIMUM LIKELIHOOD BRANCH LENGTHS ON QUARTET"); + fprintf(ofp, " PUZZLING TREE (NO CLOCK)\n\nBranch lengths are computed using"); + fprintf(ofp, " the selected model of\nsubstitution and rate heterogeneity.\n\n\n"); + clockmode = 0; /* nonclocklike branch lengths */ + prtopology(ofp); + fprintf(ofp, "\n"); + resulttree(ofp); + fprintf(ofp, "\n\nQuartet puzzling tree with maximum likelihood branch lengths"); + fprintf(ofp, "\n(in CLUSTAL W notation):\n\n"); + fputphylogeny(ofp); + if (compclock) { + fprintf(ofp, "\n\nMAXIMUM LIKELIHOOD BRANCH LENGTHS OF QUARTET"); + fprintf(ofp, " PUZZLING TREE (WITH CLOCK)\n\nBranch lengths are computed using"); + fprintf(ofp, " the selected model of\nsubstitution and rate heterogeneity.\n"); + fprintf(ofp, "\nRoot located at branch: %d ", locroot+1); + if (rootsearch == 0) fprintf(ofp, "(user specified)\n\n\n"); + if (rootsearch == 1) { + fprintf(ofp, "(automatic search)"); + if (numbestroot > 1) fprintf(ofp, "- WARNING: %d best locations found! -", numbestroot); + fprintf(ofp, "\n\n"); + fprintf(ofp, "If the automatic search misplaces the root please rerun the analysis\n"); + fprintf(ofp, "(rename \"outtree\" to \"intree\") and select location of root manually!"); + fprintf(ofp, "\n\n\n"); + } + if (rootsearch == 2) fprintf(ofp, "(displayed outgroup)\n\n\n"); + clockmode = 1; /* clocklike branch lengths */ + prtopology(ofp); + fprintf(ofp, "\n"); + fprintf(ofp, "\nTree drawn as unrooted tree for better "); + fprintf(ofp, "comparison with non-clock tree!\n"); + resulttree(ofp); + fprintf(ofp, "\n"); + resultheights(ofp); + fprintf(ofp, "\n\nRooted quartet puzzling tree with clocklike"); + fprintf(ofp, " maximum likelihood branch lengths\n"); + fprintf(ofp, "(in CLUSTAL W notation):\n\n"); + fputrooted(ofp, locroot); + } + + if (compclock) { + fprintf(ofp, "\n\nMOLECULAR CLOCK LIKELIHOOD RATIO TEST\n\n"); + fprintf(ofp, "log L without clock: %.2f (independent branch parameters: %d)\n", + Ctree->lklhd, Numspc + Numibrnch); + fprintf(ofp, "log L with clock: %.2f (independent branch parameters: %d)\n\n", + Ctree->lklhdc, Numhts + 1); + delta = 2.0*((Ctree->lklhd) - (Ctree->lklhdc)); + fprintf(ofp, "Likelihood ratio test statistic delta: %.2f\n", delta); + df = Numspc + Numibrnch - Numhts - 1; + fprintf(ofp, "Degress of freedom of chi-square distribution: %d\n", df); + + pval = IncompleteGammaQ(df*0.5, delta*0.5); + + fprintf(ofp, "Critical significance level: %.2f%%\n\n", pval*100.0); + if (pval >= 0.05) { + fprintf(ofp, "The simpler (clocklike) tree can not be rejected on a significance\n"); + fprintf(ofp, "level of 5%%. The log-likelihood of the more complex (no clock) tree\n"); + fprintf(ofp, "is not significantly increased.\n"); + } else { + fprintf(ofp, "The simpler (clocklike) tree is rejected on a significance level\n"); + fprintf(ofp, "of 5%%. The log-likelihood of the more complex (no clock) tree is\n"); + fprintf(ofp, "significantly increased.\n"); + } + fprintf(ofp, "\nPlease take care that the correct root is used!\n"); + } + + } + } + + if (typ_optn == LIKMAPING_OPTN) { + + fprintf(ofp, "\n\nLIKELIHOOD MAPPING ANALYSIS\n\n"); + fprintf(ofp, "Number of quartets: %lu", Numquartets); + if (lmqts == 0) fprintf(ofp, " (all possible)\n"); + else fprintf(ofp, " (random choice)\n"); + fprintf(ofp, "\nQuartet trees are based on approximate maximum likelihood values\n"); + fprintf(ofp, "using the selected model of substitution and rate heterogeneity.\n\n\n"); + if (numclust == 1) { + fprintf(ofp, "Sequences are not grouped in clusters.\n"); + } else { + fprintf(ofp, "Sequences are grouped in %d clusters.\n", numclust); + fprintf(ofp, "\nCluster a: %d sequences\n\n", clustA); + for (i = 0; i < clustA; i++) { + fprintf(ofp, " "); + fputid(ofp, clusterA[i]); + fprintf(ofp, "\n"); + } + fprintf(ofp, "\nCluster b: %d sequences\n\n", clustB); + for (i = 0; i < clustB; i++) { + fprintf(ofp, " "); + fputid(ofp, clusterB[i]); + fprintf(ofp, "\n"); + } + if (numclust > 2) { + fprintf(ofp, "\nCluster c: %d sequences\n\n", clustC); + for (i = 0; i < clustC; i++) { + fprintf(ofp, " "); + fputid(ofp, clusterC[i]); + fprintf(ofp, "\n"); + } + } + if (numclust == 4) { + fprintf(ofp, "\nCluster d: %d sequences\n\n", clustD); + for (i = 0; i < clustD; i++) { + fprintf(ofp, " "); + fputid(ofp, clusterD[i]); + fprintf(ofp, "\n"); + } + } + fprintf(ofp, "\nQuartets of sequences used in the likelihood"); + fprintf(ofp, " mapping analysis are generated\n"); + if (numclust == 2) + fprintf(ofp, "by drawing two sequences from cluster a and two from cluster b."); + if (numclust == 3) + fprintf(ofp, "by drawing one sequence from clusters a and b and two from cluster c."); + if (numclust == 4) + fprintf(ofp, "by drawing one sequence from each of the clusters a, b, c, and d."); + } + + fprintf(ofp, "\n\nLIKELIHOOD MAPPING STATISTICS\n\n"); + fprintf(ofp, "Occupancies of the three areas 1, 2, 3:\n\n"); + if (numclust == 4) + fprintf(ofp, " (a,b)-(c,d)\n"); + if (numclust == 3) + fprintf(ofp, " (a,b)-(c,c)\n"); + if (numclust == 2) + fprintf(ofp, " (a,a)-(b,b)\n"); + fprintf(ofp, " /\\\n"); + fprintf(ofp, " / \\\n"); + fprintf(ofp, " / \\\n"); + fprintf(ofp, " / 1 \\\n"); + fprintf(ofp, " / \\ / \\\n"); + fprintf(ofp, " / \\ / \\\n"); + fprintf(ofp, " / \\/ \\\n"); + fprintf(ofp, " / 3 : 2 \\\n"); + fprintf(ofp, " / : \\\n"); + fprintf(ofp, " /__________________\\\n"); + if (numclust == 4) + fprintf(ofp, " (a,d)-(b,c) (a,c)-(b,d)\n"); + if (numclust == 3) + fprintf(ofp, " (a,c)-(b,c) (a,c)-(b,c)\n"); + if (numclust == 2) + fprintf(ofp, " (a,b)-(a,b) (a,b)-(a,b)\n"); + fprintf(ofp, "\n"); + fprintf(ofp, "Number of quartets in region 1: %lu (= %.1f%%)\n", + ar1, (double) ar1*100.0/Numquartets); + fprintf(ofp, "Number of quartets in region 2: %lu (= %.1f%%)\n", + ar2, (double) ar2*100.0/Numquartets); + fprintf(ofp, "Number of quartets in region 3: %lu (= %.1f%%)\n\n", + ar3, (double) ar3*100.0/Numquartets); + fprintf(ofp, "Occupancies of the seven areas 1, 2, 3, 4, 5, 6, 7:\n\n"); + if (numclust == 4) + fprintf(ofp, " (a,b)-(c,d)\n"); + if (numclust == 3) + fprintf(ofp, " (a,b)-(c,c)\n"); + if (numclust == 2) + fprintf(ofp, " (a,a)-(b,b)\n"); + fprintf(ofp, " /\\\n"); + fprintf(ofp, " / \\\n"); + fprintf(ofp, " / 1 \\\n"); + fprintf(ofp, " / \\ / \\\n"); + fprintf(ofp, " / /\\ \\\n"); + fprintf(ofp, " / 6 / \\ 4 \\\n"); + fprintf(ofp, " / / 7 \\ \\\n"); + fprintf(ofp, " / \\ /______\\ / \\\n"); + fprintf(ofp, " / 3 : 5 : 2 \\\n"); + fprintf(ofp, " /__________________\\\n"); + if (numclust == 4) + fprintf(ofp, " (a,d)-(b,c) (a,c)-(b,d)\n"); + if (numclust == 3) + fprintf(ofp, " (a,c)-(b,c) (a,c)-(b,c)\n"); + if (numclust == 2) + fprintf(ofp, " (a,b)-(a,b) (a,b)-(a,b)\n"); + fprintf(ofp, "\n"); + fprintf(ofp, "Number of quartets in region 1: %lu (= %.1f%%) left: %lu right: %lu\n", + reg1, (double) reg1*100.0/Numquartets, reg1l, reg1r); + fprintf(ofp, "Number of quartets in region 2: %lu (= %.1f%%) bottom: %lu top: %lu\n", + reg2, (double) reg2*100.0/Numquartets, reg2d, reg2u); + fprintf(ofp, "Number of quartets in region 3: %lu (= %.1f%%) bottom: %lu top: %lu\n", + reg3, (double) reg3*100.0/Numquartets, reg3d, reg3u); + fprintf(ofp, "Number of quartets in region 4: %lu (= %.1f%%) bottom: %lu top: %lu\n", + reg4, (double) reg4*100.0/Numquartets, reg4d, reg4u); + fprintf(ofp, "Number of quartets in region 5: %lu (= %.1f%%) left: %lu right: %lu\n", + reg5, (double) reg5*100.0/Numquartets, reg5l, reg5r); + fprintf(ofp, "Number of quartets in region 6: %lu (= %.1f%%) bottom: %lu top: %lu\n", + reg6, (double) reg6*100.0/Numquartets, reg6d, reg6u); + fprintf(ofp, "Number of quartets in region 7: %lu (= %.1f%%)\n", + reg7, (double) reg7*100.0/Numquartets); + } + + } /* if WRITEREST) || WRITEALL */ +} + + +#if PARALLEL +void writetimesstat(FILE *ofp) +{ + int n; + double cpusum = 0.0; + double wallmax = 0.0; + cputimes[0] = ((double)(cputimestop - cputimestart) / CLOCKS_PER_SEC); + walltimes[0] = difftime(walltimestop, walltimestart); + fullcpu = tarr.fullcpu; + fulltime = tarr.fulltime; + fullcputimes[0] = tarr.fullcpu; + fullwalltimes[0] = tarr.fulltime; + altcputimes[0] = tarr.cpu; + altwalltimes[0] = tarr.time; + fprintf(ofp, "\n\n\nPARALLEL LOAD STATISTICS\n\n"); + + fprintf(ofp, "The analysis was performed with %d parallel processes (1 master and \n", PP_NumProcs); + fprintf(ofp, "%d worker processes).\n\n", PP_NumProcs-1); + fprintf(ofp, "The following table the distribution of computation to the processes.\n"); + fprintf(ofp, "The first column gives the process number, where 0 is the master process.\n"); + fprintf(ofp, "The second and third column show the number of quartets computed (3 topologies \n"); + fprintf(ofp, "each) and the the number of scheduling blocks the came in. The last two columns \n"); + fprintf(ofp, "state the number of puzzling steps done by a process and number of scheduling \n"); + fprintf(ofp, "blocks.\n\n"); + fprintf(ofp, "process #quartets #chunks #puzzlings #chunks \n"); + fprintf(ofp, "-----------------------------------------------\n"); + for (n=0; n wallmax) wallmax=fullwalltimes[n]; + cpusum += fullcputimes[n]; + } /* for */ + fprintf(ofp, "----------------------------------------------------------------------------\n"); + fprintf(ofp, "Sum/Max: %11.1f %9.1f %9.1f | %11.1f %9.1f %9.1f \n", + cpusum, cpusum/60, cpusum/3600, wallmax, wallmax/60, wallmax/3600); +#else /* TIMEDEBUG */ + fprintf(ofp, "\n\nBelow the distribution of computing times (wallclock) per host is shown.\n"); + fprintf(ofp, "The times are shown in seconds, minutes, and hours. At the bottom of the table the\n"); + fprintf(ofp, "the maximum wallclock times is shown.\n\n"); + fprintf(ofp, "process wallclock[s] [min] [hours] \n"); + fprintf(ofp, "----------------------------------------------------------------------------\n"); + for (n=0; n wallmax) wallmax=fullwalltimes[n]; + cpusum += fullcputimes[n]; + } /* for */ + fprintf(ofp, "----------------------------------------------------------------------------\n"); + fprintf(ofp, "Sum/Max: %11.1f %9.1f %9.1f \n", + wallmax, wallmax/60, wallmax/3600); +#endif /* TIMEDEBUG */ + + fullcpu = cpusum; + fulltime = wallmax; + +} /* writetimesstat */ +#endif + + +/* write current user tree to file */ +void writecutree(FILE *ofp, int num) +{ + int df; + double pval, delta; + + + if (typ_optn == TREERECON_OPTN) { + + if (puzzlemode == USERTREE) { + fprintf(ofp, "\n\nMAXIMUM LIKELIHOOD BRANCH LENGTHS OF USER"); + fprintf(ofp, " DEFINED TREE # %d (NO CLOCK)\n\nBranch lengths are computed using", num); + fprintf(ofp, " the selected model of\nsubstitution and rate heterogeneity.\n\n\n"); + clockmode = 0; /* nonclocklike branch lengths */ + prtopology(ofp); + fprintf(ofp, "\n"); + resulttree(ofp); + fprintf(ofp, "\n\nUnrooted user defined tree with maximum likelihood branch lengths"); + fprintf(ofp, "\n(in CLUSTAL W notation):\n\n"); + fputphylogeny(ofp); + if (compclock) { + fprintf(ofp, "\n\nMAXIMUM LIKELIHOOD BRANCH LENGTHS OF USER"); + fprintf(ofp, " DEFINED TREE # %d (WITH CLOCK)\n\nBranch lengths are computed using", num); + fprintf(ofp, " the selected model of\nsubstitution and rate heterogeneity.\n"); + fprintf(ofp, "\nRoot located at branch: %d ", locroot+1); + if (rootsearch == 0) fprintf(ofp, "(user specified)\n\n\n"); + if (rootsearch == 1) { + fprintf(ofp, "(automatic search)"); + if (numbestroot > 1) fprintf(ofp, "- WARNING: %d best locations found! -", numbestroot); + fprintf(ofp, "\n\n"); + fprintf(ofp, "If the automatic search misplaces the root please rerun the analysis\n"); + fprintf(ofp, "and select location of root manually!"); + fprintf(ofp, "\n\n\n"); + + } + if (rootsearch == 2) fprintf(ofp, "(displayed outgroup)\n\n\n"); + clockmode = 1; /* clocklike branch lengths */ + prtopology(ofp); + fprintf(ofp, "\n"); + resulttree(ofp); + fprintf(ofp, "\n"); + resultheights(ofp); + fprintf(ofp, "\n\nRooted user defined tree with clocklike "); + fprintf(ofp, "maximum likelihood branch lengths\n"); + fprintf(ofp, "(in CLUSTAL W notation):\n\n"); + fputrooted(ofp, locroot); + } + + if (compclock) { + fprintf(ofp, "\n\nMOLECULAR CLOCK LIKELIHOOD RATIO TEST FOR USER TREE # %d\n\n", num); + fprintf(ofp, "log L without clock: %.2f (independent branch parameters: %d)\n", + Ctree->lklhd, Numspc + Numibrnch); + fprintf(ofp, "log L with clock: %.2f (independent branch parameters: %d)\n\n", + Ctree->lklhdc, Numhts + 1); + delta = 2.0*((Ctree->lklhd) - (Ctree->lklhdc)); + fprintf(ofp, "Likelihood ratio test statistic delta: %.2f\n", delta); + df = Numspc + Numibrnch - Numhts - 1; + fprintf(ofp, "Degrees of freedom of chi-square distribution: %d\n", df); + + pval = IncompleteGammaQ (df*0.5, delta*0.5); + + fprintf(ofp, "Critical significance level: %.2f%%\n\n", pval*100.0); + if (pval >= 0.05) { + fprintf(ofp, "The simpler (clocklike) tree can not be rejected on a significance\n"); + fprintf(ofp, "level of 5%%. The log-likelihood of the more complex (no clock) tree\n"); + fprintf(ofp, "is not significantly increased.\n"); + } else { + fprintf(ofp, "The simpler (clocklike) tree is rejected on a significance level\n"); + fprintf(ofp, "of 5%%. The log-likelihood of the more complex (no clock) tree is\n"); + fprintf(ofp, "significantly increased.\n"); + } + fprintf(ofp, "\nPlease take care that the correct root is used!\n"); + } + } + } +} + + +/******************************************************************************/ +/* timer routines */ +/******************************************************************************/ + +/* start timer */ +void starttimer() +{ + time(&time0); + time1 = time0; +} + +/* check remaining time and print message if necessary */ +void checktimer(uli numqts) +{ + double tc2, mintogo, minutes, hours; + + time(&time2); + if ( (time2 - time1) > 900) { /* generate message every 15 minutes */ + /* every 900 seconds */ + /* percentage of completed quartets */ + if (mflag == 0) { + mflag = 1; + FPRINTF(STDOUTFILE "\n"); + } + tc2 = 100.*numqts/Numquartets; + mintogo = (100.0-tc2) * + (double) (time2-time0)/60.0/tc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%.2f%%", tc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + fflush(STDOUT); + time1 = time2; + } + +} + +/* check remaining time and print message if necessary */ +void checktimer2(uli numqts, uli all, int flag) +{ + double tc2, mintogo, minutes, hours; + + static time_t tt1; + static time_t tt2; + + if (flag == 1) { + time(&tt1); + time(&tt2); + } else { + time(&tt2); + if ( (tt2 - tt1) > 900) { /* generate message every 15 minutes */ + /* every 900 seconds */ + /* percentage of completed quartets */ + if (mflag == 0) { + mflag = 1; + FPRINTF(STDOUTFILE "\n"); + } + tc2 = 100.*numqts/Numquartets; + mintogo = (100.0-tc2) * + (double) (tt2-time0)/60.0/tc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%.2f%%", tc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + fflush(STDOUT); + tt1 = tt2; + } + } +} + +void resetqblocktime(timearray_t *ta) +{ + ta->quartcpu += ta->quartblockcpu; + ta->quartblockcpu = 0.0; + ta->quarttime += ta->quartblocktime; + ta->quartblocktime = 0.0; +} /* resetqblocktime */ + + +void resetpblocktime(timearray_t *ta) +{ + ta->puzzcpu += ta->puzzblockcpu; + ta->puzzblockcpu = 0.0; + ta->puzztime += ta->puzzblocktime; + ta->puzzblocktime = 0.0; +} /* resetpblocktime */ + + +#ifdef TIMEDEBUG +void printtimearr(timearray_t *ta) +{ +# if ! PARALLEL + int PP_Myid; + PP_Myid = -1; +# endif + printf("(%2d) MMCPU: %11ld / %11ld \n", PP_Myid, ta->maxcpu, ta->mincpu); + printf("(%2d) CTick: %11.6f [tks] / %11.6f [s] \n", PP_Myid, ta->mincputick, ta->mincputicktime); + + printf("(%2d) MMTIM: %11ld / %11ld \n", PP_Myid, ta->maxtime, ta->mintime); + + printf("(%2d) Mxblk: %11.6e / %11.6e \n", PP_Myid, ta->maxcpublock, ta->maxtimeblock); + printf("(%2d) Mnblk: %11.6e / %11.6e \n", PP_Myid, ta->mincpublock, ta->mintimeblock); + + printf("(%2d) Gnrl: %11.6e / %11.6e \n", PP_Myid, ta->generalcpu, ta->generaltime); + printf("(%2d) Optn: %11.6e / %11.6e \n", PP_Myid, ta->optionscpu, ta->optionstime); + printf("(%2d) Estm: %11.6e / %11.6e \n", PP_Myid, ta->paramestcpu, ta->paramesttime); + printf("(%2d) Qurt: %11.6e / %11.6e \n", PP_Myid, ta->quartcpu, ta->quarttime); + printf("(%2d) QBlk: %11.6e / %11.6e \n", PP_Myid, ta->quartblockcpu, ta->quartblocktime); + printf("(%2d) QMax: %11.6e / %11.6e \n", PP_Myid, ta->quartmaxcpu, ta->quartmaxtime); + printf("(%2d) QMin: %11.6e / %11.6e \n", PP_Myid, ta->quartmincpu, ta->quartmintime); + + printf("(%2d) Puzz: %11.6e / %11.6e \n", PP_Myid, ta->puzzcpu, ta->puzztime); + printf("(%2d) PBlk: %11.6e / %11.6e \n", PP_Myid, ta->puzzblockcpu, ta->puzzblocktime); + printf("(%2d) PMax: %11.6e / %11.6e \n", PP_Myid, ta->puzzmaxcpu, ta->puzzmaxtime); + printf("(%2d) PMin: %11.6e / %11.6e \n", PP_Myid, ta->puzzmincpu, ta->puzzmintime); + + printf("(%2d) Tree: %11.6e / %11.6e \n", PP_Myid, ta->treecpu, ta->treetime); + printf("(%2d) TBlk: %11.6e / %11.6e \n", PP_Myid, ta->treeblockcpu, ta->treeblocktime); + printf("(%2d) TMax: %11.6e / %11.6e \n", PP_Myid, ta->treemaxcpu, ta->treemaxtime); + printf("(%2d) TMin: %11.6e / %11.6e \n", PP_Myid, ta->treemincpu, ta->treemintime); + + printf("(%2d) C/T : %11.6e / %11.6e \n", PP_Myid, + (ta->generalcpu + ta->optionscpu + ta->paramestcpu + ta->quartblockcpu + ta->puzzblockcpu + ta->treeblockcpu), + (ta->generaltime + ta->optionstime + ta->paramesttime + ta->quartblocktime + ta->puzzblocktime + ta->treeblocktime)); + printf("(%2d) CPU: %11.6e / Time: %11.6e \n", PP_Myid, ta->cpu, ta->time); + printf("(%2d) aCPU: %11.6e / aTime: %11.6e \n", PP_Myid, ta->fullcpu, ta->fulltime); + +} /* printtimearr */ +#endif /* TIMEDEBUG */ + +char *jtype [7]; + +void inittimearr(timearray_t *ta) +{ + clock_t c0, c1, c2; + + jtype[OVERALL] = "OVERALL"; + jtype[GENERAL] = "GENERAL"; + jtype[OPTIONS] = "OPTIONS"; + jtype[PARAMEST] = "PARAMeter ESTimation"; + jtype[QUARTETS] = "QUARTETS"; + jtype[PUZZLING] = "PUZZLING steps"; + jtype[TREEEVAL] = "TREE EVALuation"; + ta->currentjob = GENERAL; + + c1 = clock(); + c2 = clock(); + while (c1 == c2) + c2 = clock(); + ta->mincputick = (double)(c2 - c1); + ta->mincputicktime = ((double)(c2 - c1))/CLOCKS_PER_SEC; + + ta->tempcpu = clock(); + ta->tempcpustart = ta->tempcpu; + ta->tempfullcpu = ta->tempcpu; + time(&(ta->temptime)); + ta->temptimestart = ta->temptime; + ta->tempfulltime = ta->temptime; + + c0=0; c1=0; c2=(clock_t)((2 * c1) + 1);; + while (c1 < c2) { + c0 = c1; + c1 = c2; + c2 = (clock_t)((2 * c1) + 1); + } + if (c1 == c2) ta->maxcpu=c0; + if (c1 > c2) ta->maxcpu=c1; + + c0=0; c1=0; c2=(clock_t)((2 * c1) - 1); + while (c1 > c2) { + c0 = c1; + c1 = c2; + c2 = (clock_t)((2 * c1) - 1); + } + if (c1 == c2) ta->mincpu=c0; + if (c1 < c2) ta->mincpu=c1; + + + + ta->maxtime = 0; + ta->mintime = 0; + + ta->maxcpublock = 0; + ta->mincpublock = DBL_MAX; + ta->maxtimeblock = 0; + ta->mintimeblock = DBL_MAX; + + ta->cpu = 0.0; + ta->time = 0.0; + + ta->fullcpu = 0.0; + ta->fulltime = 0.0; + + ta->generalcpu = 0.0; + ta->optionscpu = 0.0; + ta->paramestcpu = 0.0; + ta->quartcpu = 0.0; + ta->quartblockcpu = 0.0; + ta->quartmaxcpu = 0.0; + ta->quartmincpu = ((double) ta->maxcpu)/CLOCKS_PER_SEC; + ta->puzzcpu = 0.0; + ta->puzzblockcpu = 0.0; + ta->puzzmaxcpu = 0.0; + ta->puzzmincpu = ((double) ta->maxcpu)/CLOCKS_PER_SEC; + ta->treecpu = 0.0; + ta->treeblockcpu = 0.0; + ta->treemaxcpu = 0.0; + ta->treemincpu = ((double) ta->maxcpu)/CLOCKS_PER_SEC; + + ta->generaltime = 0.0; + ta->optionstime = 0.0; + ta->paramesttime = 0.0; + ta->quarttime = 0.0; + ta->quartblocktime = 0.0; + ta->quartmaxtime = 0.0; + ta->quartmintime = DBL_MAX; + ta->puzztime = 0.0; + ta->puzzblocktime = 0.0; + ta->puzzmaxtime = 0.0; + ta->puzzmintime = DBL_MAX; + ta->treetime = 0.0; + ta->treeblocktime = 0.0; + ta->treemaxtime = 0.0; + ta->treemintime = DBL_MAX; +} /* inittimearr */ + + +/***************/ + +void addup(int jobtype, clock_t c1, clock_t c2, time_t t1, time_t t2, timearray_t *ta) +{ + double c, + t; + + if (t2 != t1) t = difftime(t2, t1); + else t = 0.0; + + if (c2 < c1) + c = ((double)(c2 - ta->mincpu))/CLOCKS_PER_SEC + + ((double)(ta->maxcpu - c1))/CLOCKS_PER_SEC; + else + c = ((double)(c2 - c1))/CLOCKS_PER_SEC; + + if (jobtype != OVERALL) { + + if (ta->mincpublock > c) ta->mincpublock = c; + if (ta->maxcpublock < c) ta->maxcpublock = c; + if (ta->mintimeblock > t) ta->mintimeblock = t; + if (ta->maxtimeblock < t) ta->maxtimeblock = t; + + switch (jobtype) { + case GENERAL: ta->generalcpu += c; + ta->generaltime += t; + break; + case OPTIONS: ta->optionscpu += c; + ta->optionstime += t; + break; + case PARAMEST: ta->paramestcpu += c; + ta->paramesttime += t; + break; + case QUARTETS: ta->quartblockcpu += c; + ta->quartblocktime += t; + if (ta->quartmincpu > c) ta->quartmincpu = c; + if (ta->quartmaxcpu < c) ta->quartmaxcpu = c; + if (ta->quartmintime > t) ta->quartmintime = t; + if (ta->quartmaxtime < t) ta->quartmaxtime = t; + break; + case PUZZLING: ta->puzzblockcpu += c; + ta->puzzblocktime += t; + if (ta->puzzmincpu > c) ta->puzzmincpu = c; + if (ta->puzzmaxcpu < c) ta->puzzmaxcpu = c; + if (ta->puzzmintime > t) ta->puzzmintime = t; + if (ta->puzzmaxtime < t) ta->puzzmaxtime = t; + break; + case TREEEVAL: ta->treeblockcpu += c; + ta->treeblocktime += t; + if (ta->treemincpu > c) ta->treemincpu = c; + if (ta->treemaxcpu < c) ta->treemaxcpu = c; + if (ta->treemintime > t) ta->treemintime = t; + if (ta->treemaxtime < t) ta->treemaxtime = t; + break; + } + ta->cpu += c; + ta->time += t; + + } else { + ta->fullcpu += c; + ta->fulltime += t; + } + +# ifdef TIMEDEBUG + { +# if ! PARALLEL + int PP_Myid = -1; +# endif /* !PARALLEL */ + printf("(%2d) CPU: +%10.6f / Time: +%10.6f (%s)\n", PP_Myid, c, t, jtype[jobtype]); + printf("(%2d) CPU: %11.6f / Time: %11.6f (%s)\n", PP_Myid, ta->cpu, ta->time, jtype[jobtype]); + printf("(%2d) CPU: %11.6f / Time: %11.6f (%s)\n", PP_Myid, ta->fullcpu, ta->fulltime, jtype[jobtype]); + } +# endif /* TIMEDEBUG */ +} /* addup */ + + +/***************/ + + +void addtimes(int jobtype, timearray_t *ta) +{ + clock_t tempc; + time_t tempt; + + time(&tempt); + tempc = clock(); + + if ((tempc < ta->tempfullcpu) || (jobtype == OVERALL)) { /* CPU counter overflow for overall time */ + addup(OVERALL, ta->tempfullcpu, tempc, ta->tempfulltime, tempt, ta); + ta->tempfullcpu = tempc; + ta->tempfulltime = tempt; + if (jobtype == OVERALL) { + addup(ta->currentjob, ta->tempcpustart, tempc, ta->temptimestart, tempt, ta); + ta->tempcpustart = ta->tempcpu; + ta->tempcpu = tempc; + ta->temptimestart = ta->temptime; + ta->temptime = tempt; + } + } + + if((jobtype != ta->currentjob) && (jobtype != OVERALL)) { /* change of job type */ + addup(ta->currentjob, ta->tempcpustart, ta->tempcpu, ta->temptimestart, ta->temptime, ta); + ta->tempcpustart = ta->tempcpu; + ta->tempcpu = tempc; + ta->temptimestart = ta->temptime; + ta->temptime = tempt; + ta->currentjob = jobtype; + } + + if (tempc < ta->tempcpustart) { /* CPU counter overflow */ + addup(jobtype, ta->tempcpustart, tempc, ta->temptimestart, tempt, ta); + ta->tempcpustart = ta->tempcpu; + ta->tempcpu = tempc; + ta->temptimestart = ta->temptime; + ta->temptime = tempt; + } + +} /* addtimes */ + + + +/******************************************************************************/ + +/* estimate parameters of substitution process and rate heterogeneity - no tree + n-taxon tree is not needed because of quartet method or NJ tree topology */ +void estimateparametersnotree() +{ + int it, nump, change; + double TSold, YRold, FIold, GEold; + + it = 0; + nump = 0; + + /* count number of parameters */ + if (data_optn == NUCLEOTIDE && optim_optn) nump++; + if (fracinv_optim || grate_optim) nump++; + + do { /* repeat until nothing changes any more */ + it++; + change = FALSE; + + /* optimize substitution parameters */ + if (data_optn == NUCLEOTIDE && optim_optn) { + + TSold = TSparam; + YRold = YRparam; + + + /* + * optimize + */ + + FPRINTF(STDOUTFILE "Optimizing missing substitution process parameters\n"); + fflush(STDOUT); + + if (qcalg_optn) { /* quartet sampling */ + optimseqevolparamsq(); + } else { /* NJ tree */ + tmpfp = tmpfile(); + njtree(tmpfp); + rewind(tmpfp); + readusertree(tmpfp); + closefile(tmpfp); + optimseqevolparamst(); + } + + computedistan(); /* update ML distances */ + + /* same tolerance as 1D minimization */ + if ((fabs(TSparam - TSold) > 3.3*PEPS1) || + (fabs(YRparam - YRold) > 3.3*PEPS1) + ) change = TRUE; + + } + + /* optimize rate heterogeneity variables */ + if (fracinv_optim || grate_optim) { + + FIold = fracinv; + GEold = Geta; + + + /* + * optimize + */ + + FPRINTF(STDOUTFILE "Optimizing missing rate heterogeneity parameters\n"); + fflush(STDOUT); + /* compute NJ tree */ + tmpfp = tmpfile(); + njtree(tmpfp); + /* use NJ tree topology to estimate parameters */ + rewind(tmpfp); + readusertree(tmpfp); + closefile(tmpfp); + + optimrateparams(); + computedistan(); /* update ML distances */ + + + /* same tolerance as 1D minimization */ + if ((fabs(fracinv - FIold) > 3.3*PEPS2) || + (fabs(Geta - GEold) > 3.3*PEPS2) + ) change = TRUE; + + } + + if (nump == 1) return; + + } while (it != MAXITS && change); + + return; +} + + +/* estimate parameters of substitution process and rate heterogeneity - tree + same as above but here the n-taxon tree is already in memory */ +void estimateparameterstree() +{ + int it, nump, change; + double TSold, YRold, FIold, GEold; + + it = 0; + nump = 0; + + /* count number of parameters */ + if (data_optn == NUCLEOTIDE && optim_optn) nump++; + if (fracinv_optim || grate_optim) nump++; + + do { /* repeat until nothing changes any more */ + it++; + change = FALSE; + + /* optimize substitution process parameters */ + if (data_optn == NUCLEOTIDE && optim_optn) { + + TSold = TSparam; + YRold = YRparam; + + + /* + * optimize + */ + + FPRINTF(STDOUTFILE "Optimizing missing substitution process parameters\n"); + fflush(STDOUT); + optimseqevolparamst(); + computedistan(); /* update ML distances */ + + + /* same tolerance as 1D minimization */ + if ((fabs(TSparam - TSold) > 3.3*PEPS1) || + (fabs(YRparam - YRold) > 3.3*PEPS1) + ) change = TRUE; + + } + + /* optimize rate heterogeneity variables */ + if (fracinv_optim || grate_optim) { + + FIold = fracinv; + GEold = Geta; + + + /* + * optimize + */ + + FPRINTF(STDOUTFILE "Optimizing missing rate heterogeneity parameters\n"); + fflush(STDOUT); + optimrateparams(); + computedistan(); /* update ML distances */ + + + /* same tolerance as 1D minimization */ + if ((fabs(fracinv - FIold) > 3.3*PEPS2) || + (fabs(Geta - GEold) > 3.3*PEPS2) + ) change = TRUE; + + } + + if (nump == 1) return; + + } while (it != MAXITS && change); + + return; +} + + +/******************************************************************************/ +/* exported from main */ +/******************************************************************************/ + +void compute_quartlklhds(int a, int b, int c, int d, double *d1, double *d2, double *d3, int approx) +{ + if (approx == APPROX) { + + *d1 = quartet_alklhd(a,b, c,d); /* (a,b)-(c,d) */ + *d2 = quartet_alklhd(a,c, b,d); /* (a,c)-(b,d) */ + *d3 = quartet_alklhd(a,d, b,c); /* (a,d)-(b,c) */ + + } else /* approx == EXACT */ { + + *d1 = quartet_lklhd(a,b, c,d); /* (a,b)-(c,d) */ + *d2 = quartet_lklhd(a,c, b,d); /* (a,c)-(b,d) */ + *d3 = quartet_lklhd(a,d, b,c); /* (a,d)-(b,c) */ + + } +} + +/***************************************************************/ + +void recon_tree() +{ + int i; +# if ! PARALLEL + int a, b, c; + uli nq; + double tc2, mintogo, minutes, hours; +# endif + + /* allocate memory for taxon list of bad quartets */ + badtaxon = new_ulivector(Maxspc); + for (i = 0; i < Maxspc; i++) badtaxon[i] = 0; + + /* allocate variable used for randomizing input order */ + trueID = new_ivector(Maxspc); + + /* allocate memory for quartets */ + quartetinfo = mallocquartets(Maxspc); + + /* prepare for consensus tree analysis */ + initconsensus(); + + if (!(readquart_optn) || (readquart_optn && savequart_optn)) { + /* compute quartets */ + FPRINTF(STDOUTFILE "Computing quartet maximum likelihood trees\n"); + fflush(STDOUT); + computeallquartets(); + } + + if (savequart_optn) + writeallquarts(Maxspc, ALLQUART, quartetinfo); + if (readquart_optn) { + int xx1, xx2, xx3, xx4, count; + readallquarts (Maxspc, ALLQUART, quartetinfo); + if (show_optn) { /* list all unresolved quartets */ + openfiletowrite(&unresfp, UNRESOLVED, "unresolved quartet trees"); + fprintf(unresfp, "List of all completely unresolved quartets:\n\n"); + } + + /* initialize bad quartet memory */ + for (count = 0; count < Maxspc; count++) badtaxon[count] = 0; + badqs = 0; + + for (xx4 = 3; xx4 < Maxspc; xx4++) + for (xx3 = 2; xx3 < xx4; xx3++) + for (xx2 = 1; xx2 < xx3; xx2++) + for (xx1 = 0; xx1 < xx2; xx1++) { + if (readquartet(xx1, xx2, xx3, xx4) == 7) { + badqs++; + badtaxon[xx1]++; + badtaxon[xx2]++; + badtaxon[xx3]++; + badtaxon[xx4]++; + if (show_optn) { + fputid10(unresfp, xx1); + fprintf(unresfp, " "); + fputid10(unresfp, xx2); + fprintf(unresfp, " "); + fputid10(unresfp, xx3); + fprintf(unresfp, " "); + fputid (unresfp, xx4); + fprintf(unresfp, "\n"); + } + } + } /* end for xx4; for xx3; for xx2; for xx1 */ + if (show_optn) /* list all unresolved quartets */ + fclose(unresfp); + } /* readquart_optn */ + +# if PARALLEL + PP_SendAllQuarts(numquarts(Maxspc), quartetinfo); +# endif /* PARALLEL */ + + FPRINTF(STDOUTFILE "Computing quartet puzzling tree\n"); + fflush(STDOUT); + + /* start timer - percentage of completed trees */ + time(&time0); + time1 = time0; + mflag = 0; + + /* open file for chronological list of puzzling step trees */ + if((listqptrees == PSTOUT_LIST) || (listqptrees == PSTOUT_LISTORDER)) + openfiletowrite(&qptlist, OUTPTLIST, "puzzling step trees (chonological)"); + +# if PARALLEL + { + PP_SendDoPermutBlock(Numtrial); + } +# else + addtimes(GENERAL, &tarr); + for (Currtrial = 0; Currtrial < Numtrial; Currtrial++) { + + /* randomize input order */ + chooser(Maxspc, Maxspc, trueID); + + /* initialize tree */ + inittree(); + + /* adding all other leafs */ + for (i = 3; i < Maxspc; i++) { + + /* clear all edgeinfos */ + resetedgeinfo(); + + /* clear counter of quartets */ + nq = 0; + + /* + * core of quartet puzzling algorithm + */ + + for (a = 0; a < nextleaf - 2; a++) + for (b = a + 1; b < nextleaf - 1; b++) + for (c = b + 1; c < nextleaf; c++) { + + /* check which two _leaves_ out of a, b, c + are closer related to each other than + to leaf i according to a least squares + fit of the continous Baysian weights to the + seven trivial "attractive regions". We assign + a score of 1 to all edges between these two leaves + chooseA and chooseB */ + + checkquartet(a, b, c, i); + incrementedgeinfo(chooseA, chooseB); + + nq++; + + /* generate message every 15 minutes */ + + /* check timer */ + time(&time2); + if ( (time2 - time1) > 900) { + /* every 900 seconds */ + /* percentage of completed trees */ + if (mflag == 0) { + FPRINTF(STDOUTFILE "\n"); + mflag = 1; + } + tc2 = 100.0*Currtrial/Numtrial + + 100.0*nq/Numquartets/Numtrial; + mintogo = (100.0-tc2) * + (double) (time2-time0)/60.0/tc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%2.2f%%", tc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + fflush(STDOUT); + time1 = time2; + } + } + + /* find out which edge has the lowest edgeinfo */ + minimumedgeinfo(); + + /* add the next leaf on minedge */ + addnextleaf(minedge); + } + + /* compute bipartitions of current tree */ + computebiparts(); + makenewsplitentries(); + + { + int *ctree, startnode; + char *trstr; + treelistitemtype *treeitem; + ctree = initctree(); + copytree(ctree); + startnode = sortctree(ctree); + trstr=sprintfctree(ctree, psteptreestrlen); + + + treeitem = addtree2list(&trstr, 1, &psteptreelist, &psteptreenum, &psteptreesum); + + if((listqptrees == PSTOUT_LIST) + || (listqptrees == PSTOUT_LISTORDER)) { + /* print: order no/# topol per this id/tree id/sum of unique topologies/sum of trees so far */ + fprintf(qptlist, "%ld.\t1\t%d\t%d\t%d\t%d\n", + Currtrial + 1, (*treeitem).count, (*treeitem).id, psteptreenum, psteptreesum); + } + +# ifdef VERBOSE1 + printf("%s\n", trstr); + printfsortedpstrees(psteptreelist); +# endif + freectree(&ctree); + } + + + + /* free tree before building the next tree */ + freetree(); + + addtimes(PUZZLING, &tarr); + } +# endif /* PARALLEL */ + + /* close file for list of puzzling step trees */ + if((listqptrees == PSTOUT_LIST) || (listqptrees == PSTOUT_LISTORDER)) + closefile(qptlist); + + if (mflag == 1) FPRINTF(STDOUTFILE "\n"); + + /* garbage collection */ + free(splitcomp); + free_ivector(trueID); + +# if ! PARALLEL + free_cmatrix(biparts); +# endif /* PARALLEL */ + + freequartets(); + + /* compute majority rule consensus tree */ + makeconsensus(); + + /* write consensus tree to tmp file */ + tmpfp = tmpfile(); + writeconsensustree(tmpfp); +} /* recon_tree */ + +/***************************************************************/ + +void map_lklhd() +{ + int i, a, a1, a2, b, b1, b2, c, c1, c2, d; + uli nq; + double logs[3], d1, d2, d3, temp; + ivector qts, mlorder, gettwo; + /* reset variables */ + ar1 = ar2 = ar3 = 0; + reg1 = reg2 = reg3 = reg4 = reg5 = reg6 = reg7 = 0; + reg1l = reg1r = reg2u = reg2d = reg3u = reg3d = reg4u = + reg4d = reg5l = reg5r = reg6u = reg6d = 0; + + /* place for random quartet */ + qts = new_ivector(4); + + /* initialize output file */ + openfiletowrite(&trifp, TRIANGLE, "Postscript output"); + initps(trifp); + FPRINTF(STDOUTFILE "Performing likelihood mapping analysis\n"); + fflush(STDOUT); + + /* start timer */ + starttimer(); + nq = 0; + mflag = 0; + + addtimes(GENERAL, &tarr); + if (lmqts == 0) { /* all possible quartets */ + + if (numclust == 4) { /* four-cluster analysis */ + + for (a = 0; a < clustA; a++) + for (b = 0; b < clustB; b++) + for (c = 0; c < clustC; c++) + for (d = 0; d < clustD; d++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(clusterA[a],clusterB[b],clusterC[c],clusterD[d],&d1,&d2,&d3, APPROX); + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + } + + if (numclust == 3) { /* three-cluster analysis */ + + gettwo = new_ivector(2); + + for (a = 0; a < clustA; a++) + for (b = 0; b < clustB; b++) + for (c1 = 0; c1 < clustC-1; c1++) + for (c2 = c1+1; c2 < clustC; c2++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(clusterA[a],clusterB[b],clusterC[c1],clusterC[c2],&d1,&d2,&d3, APPROX); + + /* randomize order of d2 and d3 */ + if (randominteger(2) == 1) { + temp = d3; + d3 = d2; + d2 = temp; + } + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + free_ivector(gettwo); + } + + if (numclust == 2) { /* two-cluster analysis */ + + gettwo = new_ivector(2); + + for (a1 = 0; a1 < clustA-1; a1++) + for (a2 = a1+1; a2 < clustA; a2++) + for (b1 = 0; b1 < clustB-1; b1++) + for (b2 = b1+1; b2 < clustB; b2++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(clusterA[a1],clusterA[a2],clusterB[b1],clusterB[b2],&d1,&d2,&d3, APPROX); + + /* randomize order of d2 and d3 */ + if (randominteger(2) == 1) { + temp = d3; + d3 = d2; + d2 = temp; + } + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + + free_ivector(gettwo); + } + + if (numclust == 1) { /* normal likelihood mapping (one cluster) */ + + mlorder = new_ivector(3); + +#if 0 + for (i = 3; i < Maxspc; i++) + for (a = 0; a < i - 2; a++) + for (b = a + 1; b < i - 1; b++) + for (c = b + 1; c < i; c++) + for (d = 3; d < Maxspc; d++) + for (c = 2; c < d; c++) + for (b = 1; b < c; b++) + for (a = 0; a < b; a++) +#endif + + for (i = 3; i < Maxspc; i++) + for (c = 2; c < i; c++) + for (b = 1; b < c; b++) + for (a = 0; a < b; a++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(a,b,c,i,&logs[0],&logs[1],&logs[2], APPROX); + + /* randomize order */ + chooser(3,3,mlorder); + d1 = logs[mlorder[0]]; + d2 = logs[mlorder[1]]; + d3 = logs[mlorder[2]]; + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + free_ivector(mlorder); + } + + } else { /* randomly selected quartets */ + + if (numclust == 4) { /* four-cluster analysis */ + + for (lmqts = 0; lmqts < Numquartets; lmqts++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* choose random quartet */ + qts[0] = clusterA[ randominteger(clustA) ]; + qts[1] = clusterB[ randominteger(clustB) ]; + qts[2] = clusterC[ randominteger(clustC) ]; + qts[3] = clusterD[ randominteger(clustD) ]; + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(qts[0],qts[1],qts[2],qts[3],&d1,&d2,&d3, APPROX); + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + } + + if (numclust == 3) { /* three-cluster analysis */ + + gettwo = new_ivector(2); + + for (lmqts = 0; lmqts < Numquartets; lmqts++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* choose random quartet */ + qts[0] = clusterA[ randominteger(clustA) ]; + qts[1] = clusterB[ randominteger(clustB) ]; + chooser(clustC, 2, gettwo); + qts[2] = clusterC[gettwo[0]]; + qts[3] = clusterC[gettwo[1]]; + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(qts[0],qts[1],qts[2],qts[3],&d1,&d2,&d3, APPROX); + + /* order of d2 and d3 is already randomized! */ + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + + free_ivector(gettwo); + } + + if (numclust == 2) { /* two-cluster analysis */ + + gettwo = new_ivector(2); + + for (lmqts = 0; lmqts < Numquartets; lmqts++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* choose random quartet */ + chooser(clustA, 2, gettwo); + qts[0] = clusterA[gettwo[0]]; + qts[1] = clusterA[gettwo[1]]; + chooser(clustB, 2, gettwo); + qts[2] = clusterB[gettwo[0]]; + qts[3] = clusterB[gettwo[1]]; + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(qts[0],qts[1],qts[2],qts[3],&d1,&d2,&d3, APPROX); + + /* order of d2 and d3 is already randomized! */ + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + free_ivector(gettwo); + } + + if (numclust == 1) { /* normal likelihood mapping (one cluster) */ + + for (lmqts = 0; lmqts < Numquartets; lmqts++) { + + nq++; + + /* check timer */ + checktimer(nq); + + /* choose random quartet */ + chooser(Maxspc, 4, qts); + + /* maximum likelihood values */ + /* approximate ML is sufficient */ + compute_quartlklhds(qts[0],qts[1],qts[2],qts[3],&d1,&d2,&d3, APPROX); + + /* order of d1, d2, and d3 is already randomized! */ + + /* draw point for LM analysis */ + makelmpoint(trifp, d1, d2, d3); + addtimes(QUARTETS, &tarr); + + } + } + } + + finishps(trifp); + closefile(trifp); + free_ivector(qts); + +} /* map_lklhd */ + +/***************************************************************/ + +void setdefaults() { + + strcpy(INFILE, INFILEDEFAULT); + strcpy(OUTFILE, OUTFILEDEFAULT); + strcpy(TREEFILE, TREEFILEDEFAULT); + strcpy(INTREE, INTREEDEFAULT); + strcpy(DISTANCES, DISTANCESDEFAULT); + strcpy(TRIANGLE, TRIANGLEDEFAULT); + strcpy(UNRESOLVED, UNRESOLVEDDEFAULT); + strcpy(ALLQUART, ALLQUARTDEFAULT); + strcpy(ALLQUARTLH, ALLQUARTLHDEFAULT); + strcpy(OUTPTLIST, OUTPTLISTDEFAULT); + strcpy(OUTPTORDER, OUTPTORDERDEFAULT); + + usebestq_optn = FALSE; + savequartlh_optn = FALSE; + savequart_optn = FALSE; + readquart_optn = FALSE; + + randseed = -1; /* to set random random seed */ + +} /* setdefaults */ + +/***************************************************************/ + +void printversion() +{ +# if ! PARALLEL + fprintf(stderr, "puzzle (%s) %s\n", PACKAGE, VERSION); +#else + fprintf(stderr, "ppuzzle (%s) %s\n", PACKAGE, VERSION); +# endif + exit (0); +} +/***************************************************************/ + +void printusage(char *fname) +{ + fprintf(stderr, "\n\nUsage: %s [-h] [ Infilename [ UserTreeFilename ] ]\n\n", fname); +# if PARALLEL + PP_SendDone(); + MPI_Finalize(); +# endif + exit (1); +} + +/***************************************************************/ + +#ifdef HHH +void printusagehhh(char *fname) +{ + fprintf(stderr, "\n\nUsage: %s [options] [ Infilename [ UserTreeFilename ] ]\n\n", fname); + fprintf(stderr, " -h - print usage\n"); + fprintf(stderr, " -wqf - write quartet file to Infilename.allquart\n"); + fprintf(stderr, " -rqf - read quartet file from Infilename.allquart\n"); + fprintf(stderr, " -wqlb - write quart lhs to Infilename.allquartlh (binary)\n"); + fprintf(stderr, " -wqla - write quart lhs to Infilename.allquartlh (ASCII)\n"); + fprintf(stderr, " -bestq - use best quart, no basian weights\n"); + fprintf(stderr, " -randseed<#> - use <#> as random number seed, for debug purposes only\n"); +# if PARALLEL + PP_SendDone(); + MPI_Finalize(); +# endif + exit (2); +} +#endif /* HHH */ + +/***************************************************************/ + + +void scancmdline(int *argc, char **argv[]) +{ + static short infileset = 0; + static short intreefileset = 0; + short flagused; + int n; + int count, dummyint; + + for (n = 1; n < *argc; n++) { +# ifdef VERBOSE1 + printf("argv[%d] = %s\n", n, (*argv)[n]); +# endif + + flagused = FALSE; + +# ifdef HHH + dummyint = 0; + count = sscanf((*argv)[n], "-wqlb%n", &dummyint); + if (dummyint == 5) { + savequartlh_optn = TRUE; + saveqlhbin_optn = TRUE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n], "-wqla%n", &dummyint); + if (dummyint == 5) { + savequartlh_optn = TRUE; + saveqlhbin_optn = FALSE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n], "-wqf%n", &dummyint); + if (dummyint == 4) { + savequart_optn = TRUE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-rqf%n", &dummyint); + if (dummyint == 4) { + readquart_optn = TRUE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-bestq%n", &dummyint); + if (dummyint == 6) { + usebestq_optn = TRUE; + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-hhh%n", &dummyint); + if (dummyint==4) { + printusagehhh((*argv)[0]); + flagused = TRUE; + } +# endif /* HHH */ + + dummyint = 0; + count = sscanf((*argv)[n],"-V%n", &dummyint); + if (dummyint==2) { + printversion((*argv)[0]); + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-version%n", &dummyint); + if (dummyint==8) { + printversion((*argv)[0]); + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"--version%n", &dummyint); + if (dummyint>=4) { + printversion((*argv)[0]); + flagused = TRUE; + } + + dummyint = 0; + count = sscanf((*argv)[n],"-h%n", &dummyint); + if (dummyint==2) { + printusage((*argv)[0]); + flagused = TRUE; + } + + count = sscanf((*argv)[n],"-randseed%d", &dummyint); + if (count == 1) { + randseed = dummyint; + flagused = TRUE; + } + +#if 0 + count = sscanf((*argv)[n],"-h%n", &dummyint); + if ((count == 1) && (dummyint>=2)) printusage((*argv)[0]); + + count = sscanf((*argv)[n],"-writequarts%n", &dummyint); + if (count == 1) writequartstofile = 1;; + + count = sscanf((*argv)[n],"-ws%d", &dummyint); + if (count == 1) windowsize = dummyint; +#endif + + if ((*argv)[n][0] != '-') { + if (infileset == 0) { + strcpy(INFILE, (*argv)[n]); + infileset++; + sprintf(OUTFILE ,"%s.%s", INFILE, OUTFILEEXT); + sprintf(TREEFILE ,"%s.%s", INFILE, TREEFILEEXT); + sprintf(DISTANCES ,"%s.%s", INFILE, DISTANCESEXT); + sprintf(TRIANGLE ,"%s.%s", INFILE, TRIANGLEEXT); + sprintf(UNRESOLVED ,"%s.%s", INFILE, UNRESOLVEDEXT); + sprintf(ALLQUART ,"%s.%s", INFILE, ALLQUARTEXT); + sprintf(ALLQUARTLH ,"%s.%s", INFILE, ALLQUARTLHEXT); + sprintf(OUTPTLIST ,"%s.%s", INFILE, OUTPTLISTEXT); + sprintf(OUTPTORDER ,"%s.%s", INFILE, OUTPTORDEREXT); + FPRINTF(STDOUTFILE "Input file: %s\n", INFILE); + flagused = TRUE; + } else { + if (intreefileset == 0) { + strcpy(INTREE, (*argv)[n]); + intreefileset++; + sprintf(OUTFILE ,"%s.%s", INTREE, OUTFILEEXT); + sprintf(TREEFILE ,"%s.%s", INTREE, TREEFILEEXT); + sprintf(DISTANCES ,"%s.%s", INTREE, DISTANCESEXT); + FPRINTF(STDOUTFILE "Usertree file: %s\n", INTREE); + flagused = TRUE; + } + } + } + if (flagused == FALSE) { + fprintf(stderr, "WARNING: commandline parameter %d not recognized (\"%s\")\n", n, (*argv)[n]); + } + flagused = FALSE; + } + +} /* scancmdline */ + + +/***************************************************************/ + +void inputandinit(int *argc, char **argv[]) { + + int ci; + + /* vectors used in QP and LM analysis */ + qweight = new_dvector(3); + sqdiff = new_dvector(3); + qworder = new_ivector(3); + sqorder = new_ivector(3); + + /* Initialization and parsing of Commandline */ + setdefaults(); + scancmdline(argc, argv); + + /* initialize random numbers generator */ + if (randseed >= 0) + fprintf(stderr, "WARNING: random seed set to %d for debugging!\n", randseed); + randseed = initrandom(randseed); + + psteptreelist = NULL; + psteptreesum = 0; + bestratefound = 0; + +# ifndef ALPHA + FPRINTF(STDOUTFILE "\n\n\nWELCOME TO TREE-PUZZLE %s!\n\n\n", VERSION); +# else + FPRINTF(STDOUTFILE "\n\n\nWELCOME TO TREE-PUZZLE %s%s!\n\n\n", VERSION, ALPHA); +# endif + + + /* get sequences */ + openfiletoread(&seqfp, INFILE, "sequence data"); + getsizesites(seqfp); + FPRINTF(STDOUTFILE "\nInput data set contains %d sequences of length %d\n", Maxspc, Maxseqc); + getdataset(seqfp); + closefile(seqfp); + data_optn = guessdatatype(); + + /* translate characters into format used by ML engine */ + nuc_optn = TRUE; + SH_optn = FALSE; + Seqchar = NULL; + translatedataset(); + + /* estimate base frequencies from data set */ + Freqtpm = NULL; + Basecomp = NULL; + estimatebasefreqs(); + + /* guess model of substitution */ + guessmodel(); + + /* initialize guess variables */ + auto_datatype = AUTO_GUESS; + if (data_optn == AMINOACID) auto_aamodel = AUTO_GUESS; + else auto_aamodel = AUTO_DEFAULT; + /* save guessed amino acid options */ + guessDayhf_optn = Dayhf_optn; + guessJtt_optn = Jtt_optn; + guessmtrev_optn = mtrev_optn; + guesscprev_optn = cprev_optn; + guessblosum62_optn = blosum62_optn; + guessvtmv_optn = vtmv_optn; + guesswag_optn = wag_optn; + guessauto_aamodel = auto_aamodel; + + + /* check for user specified tree */ + if ((utfp = fopen(INTREE, "r")) != NULL) { + fclose(utfp); + puzzlemode = USERTREE; + } else { + puzzlemode = QUARTPUZ; + } + + /* reserve memory for cluster LM analysis */ + clusterA = new_ivector(Maxspc); + clusterB = new_ivector(Maxspc); + clusterC = new_ivector(Maxspc); + clusterD = new_ivector(Maxspc); + + /* set options interactively */ + setoptions(); + + /* open usertree file right after start */ + if (typ_optn == TREERECON_OPTN && puzzlemode == USERTREE) { + openfiletoread(&utfp, INTREE, "user trees"); + } + + /* start main timer */ + time(&Starttime); + Startcpu=clock(); + addtimes(OPTIONS, &tarr); + + /* symmetrize doublet frequencies if specified */ + symdoublets(); + + /* initialise ML */ + mlstart(); + + /* determine how many usertrees */ + if (typ_optn == TREERECON_OPTN && puzzlemode == USERTREE) { + numutrees = 0; + do { + ci = fgetc(utfp); + if ((char) ci == ';') numutrees++; + } while (ci != EOF); + rewind(utfp); + if (numutrees < 1) { + FPRINTF(STDOUTFILE "Unable to proceed (no tree in input tree file)\n\n\n"); + exit(1); + } + } + + /* check fraction of invariable sites */ + if ((rhetmode == TWORATE || rhetmode == MIXEDRATE) && !fracinv_optim) + /* fraction of invariable site was specified manually */ + if (fracinv > MAXFI) + fracinv = MAXFI; + + addtimes(GENERAL, &tarr); + /* estimate parameters */ + if (!(typ_optn == TREERECON_OPTN && puzzlemode == USERTREE)) { + /* no tree present */ + estimateparametersnotree(); + } else { + if (utree_optn) { + /* use 1st user tree */ + readusertree(utfp); + rewind(utfp); + estimateparameterstree(); + } else { + /* don't use first user tree */ + estimateparametersnotree(); + } + } + addtimes(PARAMEST, &tarr); + + /* compute expected Ts/Tv ratio */ + if (data_optn == NUCLEOTIDE) computeexpectations(); + +} /* inputandinit */ + + + +/***************************************************************/ + +void evaluatetree(FILE *intreefp, FILE *outtreefp, int pmode, int utreenum, int maxutree, int *oldlocroot) +{ + + switch (pmode) { + case QUARTPUZ: /* read QP tree */ + readusertree(intreefp); + FPRINTF(STDOUTFILE "Computing maximum likelihood branch lengths (without clock)\n"); + fflush(STDOUT); + usertree_lklhd(); + findbestratecombination(); + break; + case USERTREE: /* read user tree */ + readusertree(intreefp); + FPRINTF(STDOUTFILE "Computing maximum likelihood branch lengths (without clock) for tree # %d\n", utreenum+1); + fflush(STDOUT); + usertree_lklhd(); + if (maxutree > 1) { + ulkl[utreenum] = Ctree->lklhd; + allsitelkl(Ctree->condlkl, allsites[utreenum]); + } + if (utreenum==0) findbestratecombination(); + break; + } + + + if (compclock) { /* clocklike branch length */ + switch (pmode) { + case QUARTPUZ: + FPRINTF(STDOUTFILE "Computing maximum likelihood branch lengths (with clock)\n"); + fflush(STDOUT); + break; + case USERTREE: + FPRINTF(STDOUTFILE "Computing maximum likelihood branch lengths (with clock) for tree # %d\n", utreenum+1); + fflush(STDOUT); + break; + } + + /* find best place for root */ + rootsearch = 0; + + if (utreenum==0) locroot = *oldlocroot; + else *oldlocroot = locroot; + + if (locroot < 0) { + locroot = findrootedge(); + rootsearch = 1; + } + /* if user-specified edge for root does not exist use displayed outgroup */ + if (!checkedge(locroot)) { + locroot = outgroup; + rootsearch = 2; + } + /* compute likelihood */ + clock_lklhd(locroot); + if (maxutree > 1) { + ulklc[utreenum] = Ctree->lklhdc; + allsitelkl(Ctree->condlkl, allsitesc[utreenum]); + } + + } + + if (clockmode == 0) + fprintf(outtreefp, "[ lh=%.6f ]", Ctree->lklhd); + else + fprintf(outtreefp, "[ lh=%.6f ]", Ctree->lklhdc); + + /* write ML branch length tree to outree file */ + clockmode = 0; /* nonclocklike branch lengths */ + fputphylogeny(outtreefp); + + /* clocklike branch lengths */ + if (compclock) { + clockmode = 1; + fputrooted(outtreefp, locroot); + } +} /* evaluatetree */ + +/***************************************************************/ + +void memcleanup() { + if (puzzlemode == QUARTPUZ && typ_optn == TREERECON_OPTN) { + free(splitfreqs); + free(splitpatterns); + free(splitsizes); + free_ivector(consconfid); + free_ivector(conssizes); + free_cmatrix(consbiparts); + free_ulivector(badtaxon); + } + free_cmatrix(Identif); + free_dvector(Freqtpm); + free_imatrix(Basecomp); + free_ivector(clusterA); + free_ivector(clusterB); + free_ivector(clusterC); + free_ivector(clusterD); + free_dvector(qweight); + free_dvector(sqdiff); + free_ivector(qworder); + free_ivector(sqorder); + freetreelist(&psteptreelist, &psteptreenum, &psteptreesum); +} /* memcleanup */ + +/***************************************************************/ + + +/******************************************************************************/ +/* main part */ +/******************************************************************************/ + +int main(int argc, char *argv[]) +{ + int i, oldlocroot=0; + + /* start main timer */ + time(&walltimestart); + cputimestart = clock(); + inittimearr(&tarr); + +# if PARALLEL + PP_Init(&argc, &argv); + if (PP_IamSlave) { + slave_main(argc, argv); + } else { +# endif /* PARALLEL */ + + inputandinit(&argc, &argv); + + /* CZ 05/19/01 */ + /* FPRINTF(STDOUTFILE "Writing parameters to file %s\n", OUTFILE); */ + /* openfiletowrite(&ofp, OUTFILE, "general output"); */ + /* writeoutputfile(ofp,WRITEPARAMS); */ + /* fclose(ofp); */ + + + /* write distance matrix */ + FPRINTF(STDOUTFILE "Writing pairwise distances to file %s\n", DISTANCES); + openfiletowrite(&dfp, DISTANCES, "pairwise distances"); + putdistance(dfp); + closefile(dfp); + +# if PARALLEL + PP_SendSizes(Maxspc, Maxsite, numcats, Numptrn, tpmradix, outgroup, fracconst, randseed); + PP_SendData(Seqpat, /* cmatrix */ + Alias, Weight, constpat, /* ivector */ + Rates, Eval, Freqtpm, /* dvector */ + Evec, Ievc, iexp, Distanmat, /* dmatrix */ + ltprobr); /* dcube */ +# endif /* PARALLEL */ + psteptreestrlen = (Maxspc * (int)(1 + log10(Maxspc))) + + (Maxspc * 3); + + switch (typ_optn) { + case TREERECON_OPTN: /* tree reconstruction */ + + if (puzzlemode == QUARTPUZ) { /* quartet puzzling */ + recon_tree(); + } /* quartet puzzling */ + break; + + case LIKMAPING_OPTN: /* likelihood mapping */ + + map_lklhd(); + break; + } /* switch typ_optn */ + + + free_cmatrix(Seqchar); + free_cmatrix(seqchars); + + /* reserve memory for tree statistics */ + if (typ_optn == TREERECON_OPTN && puzzlemode == USERTREE && numutrees > 1) { + ulkl = new_dvector(numutrees); + allsites = new_dmatrix(numutrees,Numptrn); + if (compclock) { + ulklc = new_dvector(numutrees); + allsitesc = new_dmatrix(numutrees,Numptrn); + } + } + + /* write puzzling step tree list */ + if ((listqptrees == PSTOUT_ORDER) || (listqptrees == PSTOUT_LISTORDER)) { + openfiletowrite(&qptorder, OUTPTORDER, "puzzling step trees (unique)"); + + fprintfsortedpstrees(qptorder, psteptreelist, psteptreenum, psteptreesum, 1, 0.0); + closefile(qptorder); + } + + /* compute ML branch lengths for QP tree and for 1st user tree */ + switch(typ_optn) { + case TREERECON_OPTN: + + /* open outtree file */ + openfiletowrite(&tfp, TREEFILE, "output tree(s)"); + + addtimes(GENERAL, &tarr); + + switch (puzzlemode) { + case QUARTPUZ: /* read QP tree */ + rewind(tmpfp); + openfiletowrite(&tfp, TREEFILE, "output tree(s)"); + evaluatetree(tmpfp, tfp, puzzlemode, 0, 1, &oldlocroot); + addtimes(TREEEVAL, &tarr); + closefile(tmpfp); + closefile(tfp); + + /* CZ 05/19/01 */ + /*openfiletoappend(&ofp, OUTFILE, "general output");*/ + /*writeoutputfile(ofp,WRITEREST);*/ + break; + case USERTREE: /* read user tree */ + openfiletoappend(&ofp, OUTFILE, "general output"); + + openfiletowrite(&tfp, TREEFILE, "output tree(s)"); + for (i = 0; i < numutrees; i++) { + evaluatetree(utfp, tfp, puzzlemode, i, numutrees, &oldlocroot); + if (i==0) writeoutputfile(ofp,WRITEREST); + writecutree(ofp, i+1); + addtimes(TREEEVAL, &tarr); + } + closefile(tfp); + closefile(utfp); + break; + default: + /* CZ 05/19/01 */ + /*openfiletoappend(&ofp, OUTFILE, "general output");*/ + /*writeoutputfile(ofp,WRITEREST);*/ + break; + } /* switch puzzlemode */ + break; + default: + /* CZ 05/19/01 */ + /*openfiletoappend(&ofp, OUTFILE, "general output");*/ + /*writeoutputfile(ofp,WRITEREST);*/ + break; + } /* switch typ_optn */ + + /* print tree statistics */ + if (typ_optn == TREERECON_OPTN && puzzlemode == USERTREE && numutrees > 1) + printtreestats(ofp); + + /* free memory for tree statistics */ + if (typ_optn == TREERECON_OPTN && puzzlemode == USERTREE && numutrees > 1) { + free_dvector(ulkl); + free_dmatrix(allsites); + if (compclock) { + free_dvector(ulklc); + free_dmatrix(allsitesc); + } + } + +# if PARALLEL + PP_SendDone(); +# endif /* PARALLEL */ + + /* write CPU/Wallclock times and parallel statistics */ + time(&walltimestop); + cputimestop = clock(); + addtimes(OVERALL, &tarr); +# ifdef TIMEDEBUG + printtimearr(&tarr); +# endif /* TIMEDEBUG */ + fullcpu = tarr.fullcpu; + fulltime = tarr.fulltime; + +# if PARALLEL + writetimesstat(ofp); +# endif /* PARALLEL */ + + /* stop timer */ + time(&Stoptime); + Stopcpu=clock(); + /* CZ 05/19/01 */ + /*timestamp(ofp);*/ + /*closefile(ofp);*/ + + + /* printbestratecombination(stderr); */ + mlfinish(); + + FPRINTF(STDOUTFILE "\nAll results written to disk:\n"); + FPRINTF(STDOUTFILE " Puzzle report file: %s\n", OUTFILE); + FPRINTF(STDOUTFILE " Likelihood distances: %s\n", DISTANCES); + + if (typ_optn == TREERECON_OPTN && puzzlemode != PAIRDIST) + FPRINTF(STDOUTFILE " Phylip tree file: %s\n", TREEFILE); + if (typ_optn == TREERECON_OPTN && puzzlemode == QUARTPUZ) { + if ((listqptrees == PSTOUT_ORDER) ||(listqptrees == PSTOUT_LISTORDER)) + FPRINTF(STDOUTFILE " Unique puzzling step trees: %s\n", OUTPTORDER); + if ((listqptrees == PSTOUT_LIST) ||(listqptrees == PSTOUT_LISTORDER)) + FPRINTF(STDOUTFILE " Puzzling step tree list: %s\n", OUTPTLIST); + } + if (show_optn && typ_optn == TREERECON_OPTN && puzzlemode == QUARTPUZ) + FPRINTF(STDOUTFILE " Unresolved quartets: %s\n", UNRESOLVED); + if (typ_optn == LIKMAPING_OPTN) + FPRINTF(STDOUTFILE " Likelihood mapping diagram: %s\n", TRIANGLE); + FPRINTF(STDOUTFILE "\n"); + + /* runtime message */ + FPRINTF(STDOUTFILE + "The computation took %.0f seconds (= %.1f minutes = %.1f hours)\n", + difftime(Stoptime, Starttime), difftime(Stoptime, Starttime)/60., + difftime(Stoptime, Starttime)/3600.); + FPRINTF(STDOUTFILE + " including input %.0f seconds (= %.1f minutes = %.1f hours)\n", + fulltime, fulltime/60., fulltime/3600.); +#ifdef TIMEDEBUG + FPRINTF(STDOUTFILE + "and %.0f seconds CPU time (= %.1f minutes = %.1f hours)\n\n", + fullcpu, fullcpu/60., fullcpu/3600.); +#endif /* TIMEDEBUG */ + + /* free memory */ + memcleanup(); + +# if PARALLEL + } /* !IamSlave */ + PP_Finalize(); +# endif /* PARALLEL */ + + return 0; +} + + +/* compare function for uli - sort largest numbers first */ +int ulicmp(const void *ap, const void *bp) +{ + uli a, b; + + a = *((uli *) ap); + b = *((uli *) bp); + + if (a > b) return -1; + else if (a < b) return 1; + else return 0; +} + +/* compare function for int - sort smallest numbers first */ +int intcmp(const void *ap, const void *bp) +{ + int a, b; + + a = *((int *) ap); + b = *((int *) bp); + + if (a < b) return -1; + else if (a > b) return 1; + else return 0; +} diff --git a/forester/archive/RIO/others/puzzle_mod/src/puzzle2.c b/forester/archive/RIO/others/puzzle_mod/src/puzzle2.c new file mode 100644 index 0000000..429fe46 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/puzzle2.c @@ -0,0 +1,2701 @@ +/* + * puzzle2.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +/* Modified by Christian Zmasek to: + - Allow 8000 seqs (for pairwise dist. calc.). + - Names of 26 chars. + + + !WARNING: Use ONLY together with FORESTER/RIO! + !For all other puposes download the excellent original! + + last modification: 05/19/01 + + + void getsizesites(FILE *ifp): + + 257 -> 8000 + + + + void readid(FILE *infp, int t): + + for (i = 0; i < 10; i++) { -> for (i = 0; i < 26; i++) { + + for (i = 9; i > -1; i--) { -> for (i = 25; i > -1; i--) { + + for (j = 0; (j < 10) && (flag == TRUE); j++) -> for (j = 0; (j < 26) && (flag == TRUE); j++) + + + + void initid(int t): + + Identif = new_cmatrix(t, 10); -> Identif = new_cmatrix(t, 26); + + for (j = 0; j < 10; j++) -> for (j = 0; j < 26; j++) + + + + fputid10(FILE *ofp, int t): + + for (i = 0; i < 10; i++) -> for (i = 0; i < 26; i++) + + + + int fputid(FILE *ofp, int t): + + while (Identif[t][i] != ' ' && i < 10) { -> while (Identif[t][i] != ' ' && i < 26) { + + + + +*/ + +#define EXTERN extern + +#include "puzzle.h" +#include + +#if PARALLEL +# include "sched.h" +#endif /* PARALLEL */ + + +/******************************************************************************/ +/* sequences */ +/******************************************************************************/ + +/* read ten characters of current line as identifier */ +void readid(FILE *infp, int t) +{ + int i, j, flag, ci; + + for (i = 0; i < 26; i++) { /* CZ 05/19/01 */ + ci = fgetc(infp); + if (ci == EOF || !isprint(ci)) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no name for sequence %d)\n\n\n", t+1); + exit(1); + } + Identif[t][i] = (char) ci; + } + /* convert leading blanks in taxon name to underscores */ + flag = FALSE; + for (i = 25; i > -1; i--) { /* CZ 05/19/01 */ + if (flag == FALSE) { + if (Identif[t][i] != ' ') flag = TRUE; + } else { + if (Identif[t][i] == ' ') Identif[t][i] = '_'; + } + } + /* check whether this name is already used */ + for (i = 0; i < t; i++) { /* compare with all other taxa */ + flag = TRUE; /* assume identity */ + for (j = 0; (j < 26) && (flag == TRUE); j++) /* CZ 05/19/01 */ + if (Identif[t][j] != Identif[i][j]) + flag = FALSE; + if (flag) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (multiple occurence of sequence name '"); + fputid(STDOUT, t); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + } +} + +/* read next allowed character */ +char readnextcharacter(FILE *ifp, int notu, int nsite) +{ + char c; + + /* ignore blanks and control characters except newline */ + do { + if (fscanf(ifp, "%c", &c) != 1) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing character at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + } while (c == ' ' || (iscntrl((int) c) && c != '\n')); + return c; +} + +/* skip rest of the line */ +void skiprestofline(FILE* ifp, int notu, int nsite) +{ + int ci; + + /* read chars until the first newline */ + do{ + ci = fgetc(ifp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "Unable to proceed (missing newline at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + } while ((char) ci != '\n'); +} + +/* skip control characters and blanks */ +void skipcntrl(FILE *ifp, int notu, int nsite) +{ + int ci; + + /* read over all control characters and blanks */ + do { + ci = fgetc(ifp); + if (ci == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing character at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + } while (iscntrl(ci) || (char) ci == ' '); + /* go one character back */ + if (ungetc(ci, ifp) == EOF) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (positioning error at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } +} + +/* read sequences of one data set */ +void getseqs(FILE *ifp) +{ + int notu, nsite, endofline, linelength, i; + char c; + + seqchars = new_cmatrix(Maxspc, Maxseqc); + /* read all characters */ + nsite = 0; /* next site to be read */ + while (nsite < Maxseqc) { + /* read first taxon */ + notu = 0; + /* go to next true line */ + skiprestofline(ifp, notu, nsite); + skipcntrl(ifp, notu, nsite); + if (nsite == 0) readid(ifp, notu); + endofline = FALSE; + linelength = 0; + do { + c = readnextcharacter(ifp, notu, nsite + linelength); + if (c == '\n') endofline = TRUE; + else if (c == '.') { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (invalid character '.' at position "); + FPRINTF(STDOUTFILE "%d in first sequence)\n\n\n", nsite + linelength + 1); + exit(1); + } else if (nsite + linelength < Maxseqc) { + /* change to upper case */ + seqchars[notu][nsite + linelength] = (char) toupper((int) c); + linelength++; + } else { + endofline = TRUE; + skiprestofline(ifp, notu, nsite + linelength); + } + } while (!endofline); + if (linelength == 0) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (line with length 0 at position %d in sequence '", nsite + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } + /* read other taxa */ + for (notu = 1; notu < Maxspc; notu++) { + /* go to next true line */ + if (notu != 1) skiprestofline(ifp, notu, nsite); + skipcntrl(ifp, notu, nsite); + if (nsite == 0) readid(ifp, notu); + for (i = nsite; i < nsite + linelength; i++) { + c = readnextcharacter(ifp, notu, i); + if (c == '\n') { /* too short */ + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (line to short at position %d in sequence '", i + 1); + fputid(STDOUT, notu); + FPRINTF(STDOUTFILE "')\n\n\n"); + exit(1); + } else if (c == '.') { + seqchars[notu][i] = seqchars[0][i]; + } else { + /* change to upper case */ + seqchars[notu][i] = (char) toupper((int) c); + } + } + } + nsite = nsite + linelength; + } +} + +/* initialize identifer array */ +void initid(int t) +{ + int i, j; + + Identif = new_cmatrix(t, 26); /* CZ 05/19/01 */ + for (i = 0; i < t; i++) + for (j = 0; j < 26; j++) /* CZ 05/19/01 */ + Identif[i][j] = ' '; +} + +/* print identifier of specified taxon in full 10 char length */ +void fputid10(FILE *ofp, int t) +{ + int i; + + for (i = 0; i < 26; i++) fputc(Identif[t][i], ofp); /* CZ 05/19/01 */ +} + +/* print identifier of specified taxon up to first space */ +int fputid(FILE *ofp, int t) +{ + int i; + + i = 0; + while (Identif[t][i] != ' ' && i < 26) { /* CZ 05/19/01 */ + fputc(Identif[t][i], ofp); + i++; + } + return i; +} + +/* read first line of sequence data set */ +void getsizesites(FILE *ifp) +{ + if (fscanf(ifp, "%d", &Maxspc) != 1) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing number of sequences)\n\n\n"); + exit(1); + } + if (fscanf(ifp, "%d", &Maxseqc) != 1) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (missing number of sites)\n\n\n"); + exit(1); + } + + if (Maxspc < 4) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (less than 4 sequences)\n\n\n"); + exit(1); + } + if (Maxspc > 8000) { /* CZ 05/19/01 */ + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (more than 8000 sequences)\n\n\n"); + exit(1); + } + if (Maxseqc < 1) { + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (no sequence sites)\n\n\n"); + exit(1); + } + Maxbrnch = 2*Maxspc - 3; +} + +/* read one data set - PHYLIP interleaved */ +void getdataset(FILE *ifp) +{ + initid(Maxspc); + getseqs(ifp); +} + +/* guess data type */ +int guessdatatype() +{ + uli numnucs, numchars, numbins; + int notu, nsite; + char c; + + /* count A, C, G, T, U, N */ + numnucs = 0; + numchars = 0; + numbins = 0; + for (notu = 0; notu < Maxspc; notu++) + for (nsite = 0; nsite < Maxseqc; nsite++) { + c = seqchars[notu][nsite]; + if (c == 'A' || c == 'C' || c == 'G' || + c == 'T' || c == 'U' || c == 'N') numnucs++; + if (c != '-' && c != '?') numchars++; + if (c == '0' || c == '1') numbins++; + } + if (numchars == 0) numchars = 1; + /* more than 85 % frequency means nucleotide data */ + if ((double) numnucs / (double) numchars > 0.85) return 0; + else if ((double) numbins / (double) numchars > 0.2) return 2; + else return 1; +} + +/* translate characters into format used by ML engine */ +void translatedataset() +{ + int notu, sn, co; + char c; + cvector code; + + + /* determine Maxsite - number of ML sites per taxon */ + if (data_optn == 0 && SH_optn) { + if (SHcodon) + Maxsite = Maxseqc / 3; + else + Maxsite = Maxseqc / 2; /* assume doublets */ + + } else + Maxsite = Maxseqc; + if (data_optn == 0 && (Maxsite % 3) == 0 && !SH_optn) { + if (codon_optn == 1 || codon_optn == 2 || codon_optn == 3) + Maxsite = Maxsite / 3; /* only one of the three codon positions */ + if (codon_optn == 4) + Maxsite = 2*(Maxsite / 3); /* 1st + 2nd codon positions */ + } + + /* reserve memory */ + if (Seqchar != NULL) free_cmatrix(Seqchar); + Seqchar = new_cmatrix(Maxspc, Maxsite); + + /* code length */ + if (data_optn == 0 && SH_optn) + code = new_cvector(2); + else + code = new_cvector(1); + + /* decode characters */ + if (data_optn == 0 && SH_optn) { /* SH doublets */ + + for (notu = 0; notu < Maxspc; notu++) { + for (sn = 0; sn < Maxsite; sn++) { + for (co = 0; co < 2; co++) { + if (SHcodon) + c = seqchars[notu][sn*3 + co]; + else + c = seqchars[notu][sn*2 + co]; + code[co] = c; + } + Seqchar[notu][sn] = code2int(code); + } + } + + } else if (!(data_optn == 0 && (Maxseqc % 3) == 0)) { /* use all */ + + for (notu = 0; notu < Maxspc; notu++) { + for (sn = 0; sn < Maxsite; sn++) { + code[0] = seqchars[notu][sn]; + Seqchar[notu][sn] = code2int(code); + } + } + + } else { /* codons */ + + for (notu = 0; notu < Maxspc; notu++) { + for (sn = 0; sn < Maxsite; sn++) { + if (codon_optn == 1 || codon_optn == 2 || codon_optn == 3) + code[0] = seqchars[notu][sn*3+codon_optn-1]; + else if (codon_optn == 4) { + if ((sn % 2) == 0) + code[0] = seqchars[notu][(sn/2)*3]; + else + code[0] = seqchars[notu][((sn-1)/2)*3+1]; + } else + code[0] = seqchars[notu][sn]; + Seqchar[notu][sn] = code2int(code); + } + } + + } + free_cvector(code); +} + +/* estimate mean base frequencies from translated data set */ +void estimatebasefreqs() +{ + int tpmradix, i, j; + uli all, *gene; + + tpmradix = gettpmradix(); + + if (Freqtpm != NULL) free_dvector(Freqtpm); + Freqtpm = new_dvector(tpmradix); + + if (Basecomp != NULL) free_imatrix(Basecomp); + Basecomp = new_imatrix(Maxspc, tpmradix); + + gene = (uli *) malloc((unsigned) ((tpmradix + 1) * sizeof(uli))); + if (gene == NULL) maerror("gene in estimatebasefreqs"); + + for (i = 0; i < tpmradix + 1; i++) gene[i] = 0; + for (i = 0; i < Maxspc; i++) + for (j = 0; j < tpmradix; j++) Basecomp[i][j] = 0; + for (i = 0; i < Maxspc; i++) + for (j = 0; j < Maxsite; j++) { + gene[(int) Seqchar[i][j]]++; + if (Seqchar[i][j] != tpmradix) Basecomp[i][(int) Seqchar[i][j]]++; + } + + all = Maxspc * Maxsite - gene[tpmradix]; + if (all != 0) { /* normal case */ + for (i = 0; i < tpmradix; i++) + Freqtpm[i] = (double) gene[i] / (double) all; + } else { /* pathological case with no unique character in data set */ + for (i = 0; i < tpmradix; i++) + Freqtpm[i] = 1.0 / (double) tpmradix; + } + + free(gene); + + Frequ_optn = TRUE; +} + +/* guess model of substitution */ +void guessmodel() +{ + double c1, c2, c3, c4, c5, c6; + dvector f; + dmatrix a; + int i; + + Dayhf_optn = FALSE; + Jtt_optn = TRUE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + blosum62_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + TSparam = 2.0; + YRparam = 1.0; + optim_optn = TRUE; + HKY_optn = TRUE; + TN_optn = FALSE; + + if (data_optn == 1) { /* amino acids */ + + /* chi2 fit to amino acid frequencies */ + + f = new_dvector(20); + a = new_dmatrix(20,20); + /* chi2 distance Dayhoff */ + dyhfdata(a, f); + c1 = 0; + for (i = 0; i < 20; i++) + c1 = c1 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance JTT */ + jttdata(a, f); + c2 = 0; + for (i = 0; i < 20; i++) + c2 = c2 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance mtREV */ + mtrevdata(a, f); + c3 = 0; + for (i = 0; i < 20; i++) + c3 = c3 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance VT */ + vtmvdata(a, f); + c4 = 0; + for (i = 0; i < 20; i++) + c4 = c4 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance WAG */ + wagdata(a, f); + c5 = 0; + for (i = 0; i < 20; i++) + c5 = c5 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + /* chi2 distance cpREV */ + cprev45data(a, f); + c6 = 0; + for (i = 0; i < 20; i++) + c6 = c6 + (Freqtpm[i]-f[i])*(Freqtpm[i]-f[i]); + + free_dvector(f); + free_dmatrix(a); + +#ifndef CPREV + if ((c1 < c2) && (c1 < c3) && (c1 < c4) && (c1 < c5)) { + /* c1 -> Dayhoff */ + Dayhf_optn = TRUE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if ((c2 < c3) && (c2 < c4) && (c2 < c5)) { + /* c2 -> JTT */ + Dayhf_optn = FALSE; + Jtt_optn = TRUE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if ((c3 < c4) && (c3 < c5)) { + /* c3 -> mtREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = TRUE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on mtDNA)\n"); + } else { + if ((c4 < c5)) { + /* c4 -> VT */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = TRUE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + /* c5 -> WAG */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = TRUE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } /* if c4 else c5 */ + } /* if c3 else c4 */ + } /* if c2 */ + } /* if c1 */ + +#else /* CPREV */ + + if ((c1 < c2) && (c1 < c3) && (c1 < c4) && (c1 < c5) && (c1 < c6)) { + /* c1 -> Dayhoff */ + Dayhf_optn = TRUE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if ((c2 < c3) && (c2 < c4) && (c2 < c5) && (c2 < c6)) { + /* c2 -> JTT */ + Dayhf_optn = FALSE; + Jtt_optn = TRUE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if ((c3 < c4) && (c3 < c5) && (c3 < c6)) { + /* c3 -> mtREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = TRUE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on mtDNA)\n"); + } else { + if ((c4 < c5) && (c4 < c6)) { + /* c4 -> VT */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = TRUE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + if (c5 < c6) { + /* c5 -> WAG */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = FALSE; + vtmv_optn = FALSE; + wag_optn = TRUE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on nuclear DNA)\n"); + } else { + /* if (c6) */ + /* c6 -> cpREV */ + Dayhf_optn = FALSE; + Jtt_optn = FALSE; + mtrev_optn = FALSE; + cprev_optn = TRUE; + vtmv_optn = FALSE; + wag_optn = FALSE; + FPRINTF(STDOUTFILE "(consists very likely of amino acids encoded on cpDNA)\n"); + } /* if c5 else c6 */ + } /* if c4 else c5 */ + } /* if c3 else c4 */ + } /* if c2 */ + } /* if c1 */ +#endif /* CPREV */ + + } else if (data_optn == 0) { + FPRINTF(STDOUTFILE "(consists very likely of nucleotides)\n"); + } else { + FPRINTF(STDOUTFILE "(consists very likely of binary state data)\n"); + } +} /* guessmodel */ + + +/******************************************************************************/ +/* functions for representing and building puzzling step trees */ +/******************************************************************************/ + +/* initialize tree with the following starting configuration + + 2 + 0 +------- C(=2) + A(=0) -----+ + +------- B(=1) + 1 + */ +void inittree() +{ + int i; + + /* allocate the memory for the whole tree */ + + /* allocate memory for vector with all the edges of the tree */ + edge = (ONEEDGE *) calloc(Maxbrnch, sizeof(ONEEDGE) ); + if (edge == NULL) maerror("edge in inittree"); + + /* allocate memory for vector with edge numbers of leaves */ + edgeofleaf = (int *) calloc(Maxspc, sizeof(int) ); + if (edgeofleaf == NULL) maerror("edgeofleaf in inittree"); + + /* allocate memory for all the edges the edge map */ + for (i = 0; i < Maxbrnch; i++) { + edge[i].edgemap = (int *) calloc(Maxbrnch, sizeof(int) ); + if (edge[i].edgemap == NULL) maerror("edgemap in inittree"); + } + + /* number all edges */ + for (i = 0; i < Maxbrnch; i++) edge[i].numedge = i; + + /* initialize tree */ + + nextedge = 3; + nextleaf = 3; + + /* edge maps */ + (edge[0].edgemap)[0] = 0; /* you are on the right edge */ + (edge[0].edgemap)[1] = 4; /* go down left for leaf 1 */ + (edge[0].edgemap)[2] = 5; /* go down right for leaf 2 */ + (edge[1].edgemap)[0] = 1; /* go up for leaf 0 */ + (edge[1].edgemap)[1] = 0; /* you are on the right edge */ + (edge[1].edgemap)[2] = 3; /* go up/down right for leaf 2 */ + (edge[2].edgemap)[0] = 1; /* go up for leaf 0 */ + (edge[2].edgemap)[1] = 2; /* go up/down left for leaf 1 */ + (edge[2].edgemap)[2] = 0; /* you are on the right edge */ + + /* interconnection */ + edge[0].up = NULL; + edge[0].downleft = &edge[1]; + edge[0].downright = &edge[2]; + edge[1].up = &edge[0]; + edge[1].downleft = NULL; + edge[1].downright = NULL; + edge[2].up = &edge[0]; + edge[2].downleft = NULL; + edge[2].downright = NULL; + + /* edges of leaves */ + edgeofleaf[0] = 0; + edgeofleaf[1] = 1; + edgeofleaf[2] = 2; +} /* inittree */ + +/* add next leaf on the specified edge */ +void addnextleaf(int dockedge) +{ + int i; + + if (dockedge >= nextedge) { + /* Trying to add leaf nextleaf to nonexisting edge dockedge */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR F TO DEVELOPERS\n\n\n"); + exit(1); + } + + if (nextleaf >= Maxspc) { + /* Trying to add leaf nextleaf to a tree with Maxspc leaves */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR G TO DEVELOPERS\n\n\n"); + exit(1); + } + + /* necessary change in edgeofleaf if dockedge == edgeofleaf[0] */ + if (edgeofleaf[0] == dockedge) edgeofleaf[0] = nextedge; + + /* adding nextedge to the tree */ + edge[nextedge].up = edge[dockedge].up; + edge[nextedge].downleft = &edge[dockedge]; + edge[nextedge].downright = &edge[nextedge+1]; + edge[dockedge].up = &edge[nextedge]; + + if (edge[nextedge].up != NULL) { + if ( ((edge[nextedge].up)->downleft) == &edge[dockedge] ) + (edge[nextedge].up)->downleft = &edge[nextedge]; + else + (edge[nextedge].up)->downright = &edge[nextedge]; + } + + /* adding nextedge + 1 to the tree */ + edge[nextedge+1].up = &edge[nextedge]; + edge[nextedge+1].downleft = NULL; + edge[nextedge+1].downright = NULL; + edgeofleaf[nextleaf] = nextedge+1; + + /* the two new edges get info about the old edges */ + /* nextedge */ + for (i = 0; i < nextedge; i++) { + switch ( (edge[dockedge].edgemap)[i] ) { + + /* down right changes to down left */ + case 5: (edge[nextedge].edgemap)[i] = 4; + break; + + /* null changes to down left */ + case 0: (edge[nextedge].edgemap)[i] = 4; + break; + + default: (edge[nextedge].edgemap)[i] = + (edge[dockedge].edgemap)[i]; + break; + } + } + + /* nextedge + 1 */ + for (i = 0; i < nextedge; i++) { + switch ( (edge[dockedge].edgemap)[i] ) { + + /* up/down left changes to up */ + case 2: (edge[nextedge+1].edgemap)[i] = 1; + break; + + /* up/down right changes to up */ + case 3: (edge[nextedge+1].edgemap)[i] = 1; + break; + + /* down left changes to up/down left */ + case 4: (edge[nextedge+1].edgemap)[i] = 2; + break; + + /* down right changes to up/down left */ + case 5: (edge[nextedge+1].edgemap)[i] = 2; + break; + + /* null changes to up/down left */ + case 0: (edge[nextedge+1].edgemap)[i] = 2; + break; + + /* up stays up */ + default: (edge[nextedge+1].edgemap)[i] = + (edge[dockedge].edgemap)[i]; + break; + } + } + + /* dockedge */ + for (i = 0; i < nextedge; i++) { + switch ( (edge[dockedge].edgemap)[i] ) { + + /* up/down right changes to up */ + case 3: (edge[dockedge].edgemap)[i] = 1; + break; + + /* up/down left changes to up */ + case 2: (edge[dockedge].edgemap)[i] = 1; + break; + + default: break; + } + } + + /* all edgemaps are updated for the two new edges */ + /* nextedge */ + (edge[nextedge].edgemap)[nextedge] = 0; + (edge[nextedge].edgemap)[nextedge+1] = 5; /* down right */ + + /* nextedge + 1 */ + (edge[nextedge+1].edgemap)[nextedge] = 1; /* up */ + (edge[nextedge+1].edgemap)[nextedge+1] = 0; + + /* all other edges */ + for (i = 0; i < nextedge; i++) { + (edge[i].edgemap)[nextedge] = (edge[i].edgemap)[dockedge]; + (edge[i].edgemap)[nextedge+1] = (edge[i].edgemap)[dockedge]; + } + + /* an extra for dockedge */ + (edge[dockedge].edgemap)[nextedge] = 1; /* up */ + (edge[dockedge].edgemap)[nextedge+1] = 3; /* up/down right */ + + nextleaf++; + nextedge = nextedge + 2; +} /* addnextleaf */ + + +/* free memory (to be called after inittree) */ +void freetree() +{ + int i; + + for (i = 0; i < 2 * Maxspc - 3; i++) free(edge[i].edgemap); + free(edge); + free(edgeofleaf); +} /* freetree */ + +/* writes OTU sitting on edge ed */ +void writeOTU(FILE *outfp, int ed) +{ + int i; + + /* test whether we are on a leaf */ + if (edge[ed].downright == NULL && edge[ed].downleft == NULL) { + for (i = 1; i < nextleaf; i++) { + if (edgeofleaf[i] == ed) { /* i is the leaf of ed */ + column += fputid(outfp, trueID[i]); + return; + } + } + } + + /* we are NOT on a leaf */ + fprintf(outfp, "("); + column++; + writeOTU(outfp, edge[ed].downleft->numedge); + fprintf(outfp, ","); + column++; + column++; + if (column > 55) { + column = 2; + fprintf(outfp, "\n "); + } + writeOTU(outfp, edge[ed].downright->numedge); + fprintf(outfp, ")"); + column++; +} /* writeOTU */ + +/* write tree */ +void writetree(FILE *outfp) +{ + column = 1; + fprintf(outfp, "("); + column += fputid(outfp, trueID[0]) + 3; + fprintf(outfp, ","); + writeOTU(outfp, edge[edgeofleaf[0]].downleft->numedge); + column++; + column++; + fprintf(outfp, ","); + writeOTU(outfp, edge[edgeofleaf[0]].downright->numedge); + fprintf(outfp, ");\n"); +} /* writetree */ + + +/* clear all edgeinfos */ +void resetedgeinfo() +{ + int i; + + for (i = 0; i < nextedge; i++) + edge[i].edgeinfo = 0; +} /* resetedgeinfo */ + +/* increment all edgeinfo between leaf A and B */ +void incrementedgeinfo(int A, int B) +{ + int curredge, finaledge, nextstep; + + if (A == B) return; + + finaledge = edgeofleaf[B]; + + curredge = edgeofleaf[A]; + edge[curredge].edgeinfo = edge[curredge].edgeinfo + 1; + + while (curredge != finaledge) { + nextstep = (edge[curredge].edgemap)[finaledge]; + switch (nextstep) { + + /* up */ + case 1: curredge = (edge[curredge].up)->numedge; + break; + + /* up/down left */ + case 2: curredge = ((edge[curredge].up)->downleft)->numedge; + break; + + /* up/down right */ + case 3: curredge = ((edge[curredge].up)->downright)->numedge; + break; + + /* down left */ + case 4: curredge = (edge[curredge].downleft)->numedge; + break; + + /* down right */ + case 5: curredge = (edge[curredge].downright)->numedge; + break; + + } + edge[curredge].edgeinfo = edge[curredge].edgeinfo + 1; + } +} /* incrementedgeinfo */ + +/* checks which edge has the lowest edgeinfo + if there are several edges with the same lowest edgeinfo, + one of them will be selected randomly */ +void minimumedgeinfo() +{ + int i, k, howmany, randomnum; + + howmany = 1; + minedge = 0; + mininfo = edge[0].edgeinfo; + for (i = 1; i < nextedge; i++) + if (edge[i].edgeinfo <= mininfo) { + if (edge[i].edgeinfo == mininfo) { + howmany++; + } else { + minedge = i; + mininfo = edge[i].edgeinfo; + howmany = 1; + } + } + + if (howmany > 1) { /* draw random edge */ + randomnum = randominteger(howmany) + 1; /* 1 to howmany */ + i = -1; + for (k = 0; k < randomnum; k++) { + do { + i++; + } while (edge[i].edgeinfo != mininfo); + minedge = i; + } + } +} /* minimumedgeinfo */ + + + + +/*******************************************/ +/* tree sorting */ +/*******************************************/ + +/* compute address of the 4 int (sort key) in the 4 int node */ +int ct_sortkeyaddr(int addr) +{ + int a, res; + a = addr % 4; + res = addr - a + 3; + return res; +} + + +/**********/ + +/* compute address of the next edge pointer in a 4 int node (0->1->2->0) */ +int ct_nextedgeaddr(int addr) +{ + int a, res; + a = addr % 4; + if ( a == 2 ) { res = addr - 2; } + else { res = addr + 1; } + return res; +} + + +/**********/ + +/* compute address of 1st edge of a 4 int node from node number */ +int ct_1stedge(int node) +{ + int res; + res = 4 * node; + return res; +} + + +/**********/ + +/* compute address of 2nd edge of a 4 int node from node number */ +int ct_2ndedge(int node) +{ + int res; + res = 4 * node +1; + return res; +} + + +/**********/ + +/* compute address of 3rd edge of a 4 int node from node number */ +int ct_3rdedge(int node) +{ + int res; + res = 4 * node +2; + return res; +} + + +/**********/ + +/* check whether node 'node' is a leaf (2nd/3rd edge pointer = -1) */ +int ct_isleaf(int node, int *ctree) +{ + return (ctree[ct_3rdedge(node)] < 0); +} + + +/**********/ + +/* compute node number of 4 int node from an edge addr. */ +int ct_addr2node(int addr) +{ + int a, res; + a = addr % 4; + res = (int) ((addr - a) / 4); + return res; +} + + +/**********/ + +/* print graph pointers for checking */ +void printctree(int *ctree) +{ + int n; + for (n=0; n < 2*Maxspc; n++) { + printf("n[%3d] = (%3d.%2d, %3d.%2d, %3d.%2d | %3d)\n", n, + (int) ctree[ct_1stedge(n)]/4, + (int) ctree[ct_1stedge(n)]%4, + (int) ctree[ct_2ndedge(n)]/4, + (int) ctree[ct_2ndedge(n)]%4, + (int) ctree[ct_3rdedge(n)]/4, + (int) ctree[ct_3rdedge(n)]%4, + ctree[ct_3rdedge(n)+1]); + } + printf("\n"); +} /* printctree */ + + +/**********/ + +/* allocate memory for ctree 3 ints pointer plus 1 check byte */ +int *initctree() +{ + int *snodes; + int n; + + snodes = (int *) malloc(4 * 2 * Maxspc * sizeof(int)); + if (snodes == NULL) maerror("snodes in copytree"); + + for (n=0; n<(4 * 2 * Maxspc); n++) { + snodes[n]=-1; + } + return snodes; +} + + +/**********/ + +/* free memory of a tree for sorting */ +void freectree(int **snodes) +{ + free(*snodes); + *snodes = NULL; +} + + +/**********/ + +/* copy subtree recursively */ +void copyOTU(int *ctree, /* tree array struct */ + int *ct_nextnode, /* next free node */ + int ct_curredge, /* currende edge to add subtree */ + int *ct_nextleaf, /* next free leaf (0-maxspc) */ + int ed) /* edge in puzzling step tree */ +{ + int i, nextcurredge; + + /* test whether we are on a leaf */ + if (edge[ed].downright == NULL && edge[ed].downleft == NULL) { + for (i = 1; i < nextleaf; i++) { + if (edgeofleaf[i] == ed) { /* i is the leaf of ed */ + nextcurredge = ct_1stedge(*ct_nextleaf); + ctree[ct_curredge] = nextcurredge; + ctree[nextcurredge] = ct_curredge; + ctree[ct_sortkeyaddr(nextcurredge)] = trueID[i]; + (*ct_nextleaf)++; + return; + } + } + } + + /* we are NOT on a leaf */ + nextcurredge = ct_1stedge(*ct_nextnode); + ctree[ct_curredge] = nextcurredge; + ctree[nextcurredge] = ct_curredge; + (*ct_nextnode)++; + nextcurredge = ct_nextedgeaddr(nextcurredge); + copyOTU(ctree, ct_nextnode, nextcurredge, + ct_nextleaf, edge[ed].downleft->numedge); + + nextcurredge = ct_nextedgeaddr(nextcurredge); + copyOTU(ctree, ct_nextnode, nextcurredge, + ct_nextleaf, edge[ed].downright->numedge); +} + + +/**********/ + +/* copy treestructure to sorting structure */ +void copytree(int *ctree) +{ + int ct_curredge; + int ct_nextleaf; + int ct_nextnode; + + ct_nextnode = Maxspc; + ct_curredge = ct_1stedge(ct_nextnode); + ct_nextleaf = 1; + + ctree[ct_1stedge(0)] = ct_curredge; + ctree[ct_curredge] = ct_1stedge(0); + ctree[ct_sortkeyaddr(0)] = trueID[0]; + + ct_nextnode++; + + ct_curredge = ct_nextedgeaddr(ct_curredge); + copyOTU(ctree, &ct_nextnode, ct_curredge, + &ct_nextleaf, edge[edgeofleaf[0]].downleft->numedge); + + ct_curredge = ct_nextedgeaddr(ct_curredge); + copyOTU(ctree, &ct_nextnode, ct_curredge, + &ct_nextleaf, edge[edgeofleaf[0]].downright->numedge); +} + + +/**********/ + +/* sort subtree from edge recursively by indices */ +int sortOTU(int edge, int *ctree) +{ + int key1, key2; + int edge1, edge2; + int tempedge; + + if (ctree[ct_2ndedge((int) (edge / 4))] < 0) + return ctree[ct_sortkeyaddr(edge)]; + + edge1 = ctree[ct_nextedgeaddr(edge)]; + edge2 = ctree[ct_nextedgeaddr(ct_nextedgeaddr(edge))]; + + /* printf ("visiting [%5d] -> [%5d], [%5d]\n", edge, edge1, edge2); */ + /* printf ("visiting [%2d.%2d] -> [%2d.%2d], [%2d.%2d]\n", + (int)(edge/4), edge%4, (int)(edge1/4), edge1%4, + (int)(edge2/4), edge2%4); */ + + key1 = sortOTU(edge1, ctree); + key2 = sortOTU(edge2, ctree); + + if (key2 < key1) { + tempedge = ctree[ctree[edge1]]; + ctree[ctree[edge1]] = ctree[ctree[edge2]]; + ctree[ctree[edge2]] = tempedge; + tempedge = ctree[edge1]; + ctree[edge1] = ctree[edge2]; + ctree[edge2] = tempedge; + ctree[ct_sortkeyaddr(edge)] = key2; + + } else { + ctree[ct_sortkeyaddr(edge)] = key1; + } + return ctree[ct_sortkeyaddr(edge)]; +} + + +/**********/ + +/* sort ctree recursively by indices */ +int sortctree(int *ctree) +{ + int n, startnode=-1; + for(n=0; n>>>\n"); + tmpptr = list; + *sortlist = list; + while (tmpptr != NULL) { + (*tmpptr).sortnext = (*tmpptr).succ; + (*tmpptr).sortlast = (*tmpptr).pred; + tmpptr = (*tmpptr).succ; + } + + while (xchange > 0) { + curr = *sortlist; + xchange = 0; + if (curr == NULL) fprintf(stderr, "Grrrrrrrrr>>>>\n"); + while((*curr).sortnext != NULL) { + next = (*curr).sortnext; + if ((*curr).count >= (*next).count) + curr = (*curr).sortnext; + else { + if ((*curr).sortlast != NULL) + (*((*curr).sortlast)).sortnext = next; + if (*sortlist == curr) + *sortlist = next; + (*next).sortlast = (*curr).sortlast; + + if ((*next).sortnext != NULL) + (*((*next).sortnext)).sortlast = curr; + (*curr).sortnext = (*next).sortnext; + + (*curr).sortlast = next; + (*next).sortnext = curr; + + xchange++; + } + } + } +} /* sortbynum */ + + +/**********/ + +/* print puzzling step tree stuctures for checking */ +void printfpstrees(treelistitemtype *list) +{ + char ch; + treelistitemtype *tmpptr = NULL; + tmpptr = list; + ch = '-'; + while (tmpptr != NULL) { + printf ("%c[%2d] %5d %s\n", ch, (*tmpptr).idx, (*tmpptr).count, (*tmpptr).tree); + tmpptr = (*tmpptr).succ; + ch = ' '; + } +} + +/**********/ + +/* print sorted puzzling step tree stucture with names */ +void fprintffullpstree(FILE *outf, char *treestr) +{ + int count = 0; + int idnum = 0; + int n; + for(n=0; treestr[n] != '\0'; n++){ + while(isdigit((int)treestr[n])){ + idnum = (10 * idnum) + ((int)treestr[n]-48); + n++; + count++; + } + if (count > 0){ +# ifdef USEQUOTES + fprintf(outf, "'"); +# endif + (void)fputid(outf, idnum); +# ifdef USEQUOTES + fprintf(outf, "'"); +# endif + count = 0; + idnum = 0; + } + fprintf(outf, "%c", treestr[n]); + } +} + + +/**********/ + +/* print sorted puzzling step tree stuctures with names */ +void fprintfsortedpstrees(FILE *output, + treelistitemtype *list, /* tree list */ + int itemnum, /* order number */ + int itemsum, /* number of trees */ + int comment, /* with statistics, or puzzle report ? */ + float cutoff) /* cutoff percentage */ +{ + treelistitemtype *tmpptr = NULL; + treelistitemtype *slist = NULL; + int num = 1; + float percent; + + if (list == NULL) fprintf(stderr, "Grrrrrrrrr>>>>\n"); + sortbynum(list, &slist); + + tmpptr = slist; + while (tmpptr != NULL) { + percent = (float)(100.0 * (*tmpptr).count / itemsum); + if ((cutoff == 0.0) || (cutoff <= percent)) { + if (comment) + fprintf (output, "[ %d. %d %.2f %d %d %d ]", num++, (*tmpptr).count, percent, (*tmpptr).id, itemnum, itemsum); + else { + if (num == 1){ + fprintf (output, "\n"); + fprintf (output, "The following tree(s) occured in more than %.2f%% of the %d puzzling steps.\n", cutoff, itemsum); + fprintf (output, "The trees are orderd descending by the number of occurences.\n"); + fprintf (output, "\n"); + fprintf (output, "\n occurences ID Phylip tree\n"); + } + fprintf (output, "%2d. %5d %6.2f%% %5d ", num++, (*tmpptr).count, percent, (*tmpptr).id); + } + fprintffullpstree(output, (*tmpptr).tree); + fprintf (output, "\n"); + } + tmpptr = (*tmpptr).sortnext; + } + + if (!comment) { + fprintf (output, "\n"); + switch(num) { + case 1: fprintf (output, "There were no tree topologies (out of %d) occuring with a percentage >= %.2f%% of the %d puzzling steps.\n", itemnum, cutoff, itemsum); break; + case 2: fprintf (output, "There was one tree topology (out of %d) occuring with a percentage >= %.2f%%.\n", itemnum, cutoff); break; + default: fprintf (output, "There were %d tree topologies (out of %d) occuring with a percentage >= %.2f%%.\n", num-1, itemnum, cutoff); break; + } + fprintf (output, "\n"); + fprintf (output, "\n"); + } + +} /* fprintfsortedpstrees */ + +/**********/ + +/* print sorted tree topologies for checking */ +void printfsortedpstrees(treelistitemtype *list) +{ + treelistitemtype *tmpptr = NULL; + treelistitemtype *slist = NULL; + + sortbynum(list, &slist); + + tmpptr = slist; + while (tmpptr != NULL) { + printf ("[%2d] %5d %s\n", (*tmpptr).idx, (*tmpptr).count, (*tmpptr).tree); + tmpptr = (*tmpptr).sortnext; + } +} /* printfsortedpstrees */ + + +/*******************************************/ +/* end of tree sorting */ +/*******************************************/ + + + +/******************************************************************************/ +/* functions for computing the consensus tree */ +/******************************************************************************/ + +/* prepare for consensus tree analysis */ +void initconsensus() +{ +# if ! PARALLEL + biparts = new_cmatrix(Maxspc-3, Maxspc); +# endif /* PARALLEL */ + + if (Maxspc % 32 == 0) + splitlength = Maxspc/32; + else splitlength = (Maxspc + 32 - (Maxspc % 32))/32; + numbiparts = 0; /* no pattern stored so far */ + maxbiparts = 0; /* no memory reserved so far */ + splitfreqs = NULL; + splitpatterns = NULL; + splitsizes = NULL; + splitcomp = (uli *) malloc(splitlength * sizeof(uli) ); + if (splitcomp == NULL) maerror("splitcomp in initconsensus"); +} + +/* prototype needed for recursive function */ +void makepart(int i, int curribrnch); + +/* recursive function to get bipartitions */ +void makepart(int i, int curribrnch) +{ + int j; + + if ( edge[i].downright == NULL || + edge[i].downleft == NULL) { /* if i is leaf */ + + /* check out what leaf j sits on this edge i */ + for (j = 1; j < Maxspc; j++) { + if (edgeofleaf[j] == i) { + biparts[curribrnch][trueID[j]] = '*'; + return; + } + } + } else { /* still on inner branch */ + makepart(edge[i].downleft->numedge, curribrnch); + makepart(edge[i].downright->numedge, curribrnch); + } +} + +/* compute bipartitions of tree of current puzzling step */ +void computebiparts() +{ + int i, j, curribrnch; + + curribrnch = -1; + + for (i = 0; i < Maxspc - 3; i++) + for (j = 0; j < Maxspc; j++) + biparts[i][j] = '.'; + + for (i = 0; i < Maxbrnch; i++) { + if (!( edgeofleaf[0] == i || + edge[i].downright == NULL || + edge[i].downleft == NULL) ) { /* check all inner branches */ + curribrnch++; + makepart(i, curribrnch); + + /* make sure that the root is always a '*' */ + if (biparts[curribrnch][outgroup] == '.') { + for (j = 0; j < Maxspc; j++) { + if (biparts[curribrnch][j] == '.') + biparts[curribrnch][j] = '*'; + else + biparts[curribrnch][j] = '.'; + } + } + } + } +} + +/* print out the bipartition n of all different splitpatterns */ +void printsplit(FILE *fp, uli n) +{ + int i, j, col; + uli z; + + col = 0; + for (i = 0; i < splitlength; i++) { + z = splitpatterns[n*splitlength + i]; + for (j = 0; j < 32 && col < Maxspc; j++) { + if (col % 10 == 0 && col != 0) fprintf(fp, " "); + if (z & 1) fprintf(fp, "."); + else fprintf(fp, "*"); + z = (z >> 1); + col++; + } + } +} + +/* make new entries for new different bipartitions and count frequencies */ +void makenewsplitentries() +{ + int i, j, bpc, identical, idflag, bpsize; + uli nextentry, obpc; + + /* where the next entry would be in splitpatterns */ + nextentry = numbiparts; + + for (bpc = 0; bpc < Maxspc - 3; bpc++) { /* for every new bipartition */ + /* convert bipartition into a more compact format */ + bpsize = 0; + for (i = 0; i < splitlength; i++) { + splitcomp[i] = 0; + for (j = 0; j < 32; j++) { + splitcomp[i] = splitcomp[i] >> 1; + if (i*32 + j < Maxspc) + if (biparts[bpc][i*32 + j] == '.') { + /* set highest bit */ + splitcomp[i] = (splitcomp[i] | 2147483648UL); + bpsize++; /* count the '.' */ + } + } + } + /* compare to the *old* patterns */ + identical = FALSE; + for (obpc = 0; (obpc < numbiparts) && (!identical); obpc++) { + /* compare first partition size */ + if (splitsizes[obpc] == bpsize) idflag = TRUE; + else idflag = FALSE; + /* if size is identical compare whole partition */ + for (i = 0; (i < splitlength) && idflag; i++) + if (splitcomp[i] != splitpatterns[obpc*splitlength + i]) + idflag = FALSE; + if (idflag) identical = TRUE; + } + if (identical) { /* if identical increase frequency */ + splitfreqs[2*(obpc-1)]++; + } else { /* create new entry */ + if (nextentry == maxbiparts) { /* reserve more memory */ + maxbiparts = maxbiparts + 2*Maxspc; + splitfreqs = (uli *) myrealloc(splitfreqs, + 2*maxbiparts * sizeof(uli) ); + /* 2x: splitfreqs contains also an index (sorting!) */ + if (splitfreqs == NULL) maerror("splitfreqs in makenewsplitentries"); + splitpatterns = (uli *) myrealloc(splitpatterns, + splitlength*maxbiparts * sizeof(uli) ); + if (splitpatterns == NULL) maerror("splitpatterns in makenewsplitentries"); + splitsizes = (int *) myrealloc(splitsizes, + maxbiparts * sizeof(int) ); + if (splitsizes == NULL) maerror("splitsizes in makenewsplitentries"); + } + splitfreqs[2*nextentry] = 1; /* frequency */ + splitfreqs[2*nextentry+1] = nextentry; /* index for sorting */ + for (i = 0; i < splitlength; i++) + splitpatterns[nextentry*splitlength + i] = splitcomp[i]; + splitsizes[nextentry] = bpsize; + nextentry++; + } + } + numbiparts = nextentry; +} + +/* general remarks: + + - every entry in consbiparts is one node of the consensus tree + - for each node one has to know which taxa and which other nodes + are *directly* descending from it + - for every taxon/node number there is a flag that shows + whether it descends from the node or not + - '0' means that neither a taxon nor another node with the + corresponding number decends from the node + '1' means that the corresponding taxon descends from the node + '2' means that the corresponding node descends from the node + '3' means that the corresponding taxon and node descends from the node +*/ + +/* copy bipartition n of all different splitpatterns to consbiparts[k] */ +void copysplit(uli n, int k) +{ + int i, j, col; + uli z; + + col = 0; + for (i = 0; i < splitlength; i++) { + z = splitpatterns[n*splitlength + i]; + for (j = 0; j < 32 && col < Maxspc; j++) { + if (z & 1) consbiparts[k][col] = '1'; + else consbiparts[k][col] = '0'; + z = (z >> 1); + col++; + } + } +} + +/* compute majority rule consensus tree */ +void makeconsensus() +{ + int i, j, k, size, subnode; + char chari, charj; + + /* sort bipartition frequencies */ + qsort(splitfreqs, numbiparts, 2*sizeof(uli), ulicmp); + /* how many bipartitions are included in the consensus tree */ + consincluded = 0; + for (i = 0; i < numbiparts && i == consincluded; i++) { + if (2*splitfreqs[2*i] > Numtrial) consincluded = i + 1; + } + + /* collect all info about majority rule consensus tree */ + /* the +1 is due to the edge with the root */ + consconfid = new_ivector(consincluded + 1); + conssizes = new_ivector(2*consincluded + 2); + consbiparts = new_cmatrix(consincluded + 1, Maxspc); + + for (i = 0; i < consincluded; i++) { + /* copy partition to consbiparts */ + copysplit(splitfreqs[2*i+1], i); + /* frequency in percent (rounded to integer) */ + consconfid[i] = (int) floor(100.0*splitfreqs[2*i]/Numtrial + 0.5); + /* size of partition */ + conssizes[2*i] = splitsizes[splitfreqs[2*i+1]]; + conssizes[2*i+1] = i; + } + for (i = 0; i < Maxspc; i++) consbiparts[consincluded][i] = '1'; + consbiparts[consincluded][outgroup] = '0'; + consconfid[consincluded] = 100; + conssizes[2*consincluded] = Maxspc - 1; + conssizes[2*consincluded + 1] = consincluded; + + /* sort bipartitions according to cluster size */ + qsort(conssizes, consincluded + 1, 2*sizeof(int), intcmp); + + /* reconstruct consensus tree */ + for (i = 0; i < consincluded; i++) { /* try every node */ + size = conssizes[2*i]; /* size of current node */ + for (j = i + 1; j < consincluded + 1; j++) { + + /* compare only with nodes with more descendants */ + if (size == conssizes[2*j]) continue; + + /* check whether node i is a subnode of j */ + subnode = FALSE; + for (k = 0; k < Maxspc && !subnode; k++) { + chari = consbiparts[ conssizes[2*i+1] ][k]; + if (chari != '0') { + charj = consbiparts[ conssizes[2*j+1] ][k]; + if (chari == charj || charj == '3') subnode = TRUE; + } + } + + /* if i is a subnode of j change j accordingly */ + if (subnode) { + /* remove subnode i from j */ + for (k = 0; k < Maxspc; k++) { + chari = consbiparts[ conssizes[2*i+1] ][k]; + if (chari != '0') { + charj = consbiparts[ conssizes[2*j+1] ][k]; + if (chari == charj) + consbiparts[ conssizes[2*j+1] ][k] = '0'; + else if (charj == '3') { + if (chari == '1') + consbiparts[ conssizes[2*j+1] ][k] = '2'; + else if (chari == '2') + consbiparts[ conssizes[2*j+1] ][k] = '1'; + else { + /* Consensus tree [1] */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR H TO DEVELOPERS\n\n\n"); + exit(1); + } + } else { + /* Consensus tree [2] */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR I TO DEVELOPERS\n\n\n"); + exit(1); + } + } + } + /* add link to subnode i in node j */ + charj = consbiparts[ conssizes[2*j+1] ][ conssizes[2*i+1] ]; + if (charj == '0') + consbiparts[ conssizes[2*j+1] ][ conssizes[2*i+1] ] = '2'; + else if (charj == '1') + consbiparts[ conssizes[2*j+1] ][ conssizes[2*i+1] ] = '3'; + else { + /* Consensus tree [3] */ + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR J TO DEVELOPERS\n\n\n"); + exit(1); + } + } + } + } +} + +/* prototype for recursion */ +void writenode(FILE *treefile, int node); + +/* write node (writeconsensustree) */ +void writenode(FILE *treefile, int node) +{ + int i, first; + + fprintf(treefile, "("); + column++; + /* write descending nodes */ + first = TRUE; + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '2' || + consbiparts[node][i] == '3') { + if (first) first = FALSE; + else { + fprintf(treefile, ","); + column++; + } + if (column > 60) { + column = 2; + fprintf(treefile, "\n"); + } + /* write node i */ + writenode(treefile, i); + + /* reliability value as internal label */ + fprintf(treefile, "%d", consconfid[i]); + + column = column + 3; + } + } + /* write descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '1' || + consbiparts[node][i] == '3') { + if (first) first = FALSE; + else { + fprintf(treefile, ","); + column++; + } + if (column > 60) { + column = 2; + fprintf(treefile, "\n"); + } + column += fputid(treefile, i); + } + } + fprintf(treefile, ")"); + column++; +} + +/* write consensus tree */ +void writeconsensustree(FILE *treefile) +{ + int i, first; + + column = 1; + fprintf(treefile, "("); + column += fputid(treefile, outgroup) + 2; + fprintf(treefile, ","); + /* write descending nodes */ + first = TRUE; + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '2' || + consbiparts[consincluded][i] == '3') { + if (first) first = FALSE; + else { + fprintf(treefile, ","); + column++; + } + if (column > 60) { + column = 2; + fprintf(treefile, "\n"); + } + /* write node i */ + writenode(treefile, i); + + /* reliability value as internal label */ + fprintf(treefile, "%d", consconfid[i]); + + column = column + 3; + } + } + /* write descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '1' || + consbiparts[consincluded][i] == '3') { + if (first) first = FALSE; + else { + fprintf(treefile, ","); + column++; + } + if (column > 60) { + column = 2; + fprintf(treefile, "\n"); + } + column += fputid(treefile, i); + } + } + fprintf(treefile, ");\n"); +} + +/* prototype for recursion */ +void nodecoordinates(int node); + +/* establish node coordinates (plotconsensustree) */ +void nodecoordinates(int node) +{ + int i, ymin, ymax, xcoordinate; + + /* first establish coordinates of descending nodes */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '2' || + consbiparts[node][i] == '3') + nodecoordinates(i); + } + + /* then establish coordinates of descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '1' || + consbiparts[node][i] == '3') { + /* y-coordinate of taxon i */ + ycortax[i] = ytaxcounter; + ytaxcounter = ytaxcounter - 2; + } + } + + /* then establish coordinates of this node */ + ymin = 2*Maxspc - 2; + ymax = 0; + xcoordinate = 0; + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '2' || + consbiparts[node][i] == '3') { + if (ycor[i] > ymax) ymax = ycor[i]; + if (ycor[i] < ymin) ymin = ycor[i]; + if (xcor[i] > xcoordinate) xcoordinate = xcor[i]; + } + } + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '1' || + consbiparts[node][i] == '3') { + if (ycortax[i] > ymax) ymax = ycortax[i]; + if (ycortax[i] < ymin) ymin = ycortax[i]; + } + } + ycormax[node] = ymax; + ycormin[node] = ymin; + ycor[node] = (int) floor(0.5*(ymax + ymin) + 0.5); + if (xcoordinate == 0) xcoordinate = 9; + xcor[node] = xcoordinate + 4; +} + +/* prototype for recursion */ +void drawnode(int node, int xold); + +/* drawnode (plotconsensustree) */ +void drawnode(int node, int xold) +{ + int i, j; + char buf[4]; + + /* first draw vertical line */ + for (i = ycormin[node] + 1; i < ycormax[node]; i++) + treepict[xcor[node]][i] = ':'; + + /* then draw descending nodes */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '2' || + consbiparts[node][i] == '3') + drawnode(i, xcor[node]); + } + + /* then draw descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[node][i] == '1' || + consbiparts[node][i] == '3') { + treepict[xcor[node]][ycortax[i]] = ':'; + for (j = xcor[node] + 1; j < xsize-10; j++) + treepict[j][ycortax[i]] = '-'; + for (j = 0; j < 10; j++) + treepict[xsize-10+j][ycortax[i]] = Identif[i][j]; + } + } + + /* then draw internal edge with consensus value */ + treepict[xold][ycor[node]] = ':'; + treepict[xcor[node]][ycor[node]] = ':'; + for (i = xold + 1; i < xcor[node]-3; i++) + treepict[i][ycor[node]] = '-'; + sprintf(buf, "%d", consconfid[node]); + if (consconfid[node] == 100) { + treepict[xcor[node]-3][ycor[node]] = buf[0]; + treepict[xcor[node]-2][ycor[node]] = buf[1]; + treepict[xcor[node]-1][ycor[node]] = buf[2]; + } else { + treepict[xcor[node]-3][ycor[node]] = '-'; + treepict[xcor[node]-2][ycor[node]] = buf[0]; + treepict[xcor[node]-1][ycor[node]] = buf[1]; + } +} + +/* plot consensus tree */ +void plotconsensustree(FILE *plotfp) +{ + int i, j, yroot, startree; + + /* star tree or no star tree */ + if (consincluded == 0) { + startree = TRUE; + consincluded = 1; /* avoids problems with malloc */ + } else + startree = FALSE; + + /* memory for x-y-coordinates of each bipartition */ + xcor = new_ivector(consincluded); + ycor = new_ivector(consincluded); + ycormax = new_ivector(consincluded); + ycormin = new_ivector(consincluded); + if (startree) consincluded = 0; /* avoids problems with malloc */ + + /* y-coordinates of each taxon */ + ycortax = new_ivector(Maxspc); + ycortax[outgroup] = 0; + + /* establish coordinates */ + ytaxcounter = 2*Maxspc - 2; + + /* first establish coordinates of descending nodes */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '2' || + consbiparts[consincluded][i] == '3') + nodecoordinates(i); + } + + /* then establish coordinates of descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '1' || + consbiparts[consincluded][i] == '3') { + /* y-coordinate of taxon i */ + ycortax[i] = ytaxcounter; + ytaxcounter = ytaxcounter - 2; + } + } + + /* then establish length of root edge and size of whole tree */ + yroot = 0; + xsize = 0; + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '2' || + consbiparts[consincluded][i] == '3') { + if (ycor[i] > yroot) yroot = ycor[i]; + if (xcor[i] > xsize) xsize = xcor[i]; + } + } + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '1' || + consbiparts[consincluded][i] == '3') { + if (ycortax[i] > yroot) yroot = ycortax[i]; + } + } + if (xsize == 0) xsize = 9; + /* size in x direction inclusive one blank on the left */ + xsize = xsize + 6; + + /* change all x-labels so that (0,0) is down-left */ + for (i = 0; i < consincluded; i++) + xcor[i] = xsize-1-xcor[i]; + + /* draw tree */ + treepict = new_cmatrix(xsize, 2*Maxspc-1); + for (i = 0; i < xsize; i++) + for (j = 0; j < 2*Maxspc-1; j++) + treepict[i][j] = ' '; + + /* draw root */ + for (i = 1; i < yroot; i++) + treepict[1][i] = ':'; + treepict[1][0] = ':'; + for (i = 2; i < xsize - 10; i++) + treepict[i][0] = '-'; + for (i = 0; i < 10; i++) + treepict[xsize-10+i][0] = Identif[outgroup][i]; + + /* then draw descending nodes */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '2' || + consbiparts[consincluded][i] == '3') + drawnode(i, 1); + } + + /* then draw descending taxa */ + for (i = 0; i < Maxspc; i++) { + if (consbiparts[consincluded][i] == '1' || + consbiparts[consincluded][i] == '3') { + treepict[1][ycortax[i]] = ':'; + for (j = 2; j < xsize-10; j++) + treepict[j][ycortax[i]] = '-'; + for (j = 0; j < 10; j++) + treepict[xsize-10+j][ycortax[i]] = Identif[i][j]; + } + } + + /* plot tree */ + for (i = 2*Maxspc-2; i > -1; i--) { + for (j = 0; j < xsize; j++) + fputc(treepict[j][i], plotfp); + fputc('\n', plotfp); + } + + free_ivector(xcor); + free_ivector(ycor); + free_ivector(ycormax); + free_ivector(ycormin); + free_ivector(ycortax); + free_cmatrix(treepict); +} + + + +/******************************************************************************/ +/* storing and evaluating quartet branching information */ +/******************************************************************************/ + +/* general remarks: + + for a quartet with the taxa a, b, c, d there are + three possible binary trees: + + 1) (a,b)-(c,d) + 2) (a,c)-(b,d) + 3) (a,d)-(b,c) + + For every quartet information about its branching structure is + stored. With the functions readquartet and writequartet + this information can be accessed. For every quartet (a,b,c,d) + with a < b < c < d (taxa) the branching information is encoded + using 4 bits: + + value 8 4 2 1 + +-------------+-------------+-------------+-------------+ + | not used | tree 3 | tree 2 | tree 1 | + +-------------+-------------+-------------+-------------+ + + If the branching structure of the taxa corresponds to one of the + three trees the corresponding bit is set. If the branching structure + is unclear because two of the three trees have the same maximum + likelihood value the corresponding two bits are set. If the branching + structure is completely unknown all the bits are set (the highest + bit is always cleared because it is not used). + +*/ + +/* allocate memory for quartets */ +unsigned char *mallocquartets(int taxa) +{ + uli nc, numch; + unsigned char *qinfo; + + /* compute number of quartets */ + Numquartets = (uli) taxa*(taxa-1)*(taxa-2)*(taxa-3)/24; + if (Numquartets % 2 == 0) { /* even number */ + numch = Numquartets/2; + } else { /* odd number */ + numch = (Numquartets + 1)/2; + } + /* allocate memory */ + qinfo = (unsigned char *) malloc(numch * sizeof(unsigned char) ); + if (qinfo == NULL) maerror("quartetinfo in mallocquartets"); + for (nc = 0; nc < numch; nc++) qinfo[nc] = 0; + return(qinfo); +} + +/* free quartet memory */ +void freequartets() +{ + free(quartetinfo); +} + +/* read quartet info - a < b < c < d */ +unsigned char readquartet(int a, int b, int c, int d) +{ + uli qnum; + + qnum = (uli) a + + (uli) b*(b-1)/2 + + (uli) c*(c-1)*(c-2)/6 + + (uli) d*(d-1)*(d-2)*(d-3)/24; + if (qnum % 2 == 0) { /* even number */ + /* bits 0 to 3 */ + return (quartetinfo[qnum/2] & (unsigned char) 15); + } else { /* odd number */ + /* bits 4 to 7 */ + return ((quartetinfo[(qnum-1)/2] & (unsigned char) 240)>>4); + } +} + +/* write quartet info - a < b < c < d, 0 <= info <= 15 */ +void writequartet(int a, int b, int c, int d, unsigned char info) +{ + uli qnum; + + qnum = (uli) a + + (uli) b*(b-1)/2 + + (uli) c*(c-1)*(c-2)/6 + + (uli) d*(d-1)*(d-2)*(d-3)/24; + if (qnum % 2 == 0) { /* even number */ + /* bits 0 to 3 */ + quartetinfo[qnum/2] = + ((quartetinfo[qnum/2] & (unsigned char) 240) | + (info & (unsigned char) 15)); + } else { /* odd number */ + /* bits 4 to 7 */ + quartetinfo[(qnum-1)/2] = + ((quartetinfo[(qnum-1)/2] & (unsigned char) 15) | + ((info & (unsigned char) 15)<<4)); + } +} + +/* prototypes */ +void openfiletowrite(FILE **, char[], char[]); +void closefile(FILE *); + +/* sorts three doubles in descending order */ +void sort3doubles(dvector num, ivector order) +{ + if (num[0] > num[1]) { + if(num[2] > num[0]) { + order[0] = 2; + order[1] = 0; + order[2] = 1; + } else if (num[2] < num[1]) { + order[0] = 0; + order[1] = 1; + order[2] = 2; + } else { + order[0] = 0; + order[1] = 2; + order[2] = 1; + } + } else { + if(num[2] > num[1]) { + order[0] = 2; + order[1] = 1; + order[2] = 0; + } else if (num[2] < num[0]) { + order[0] = 1; + order[1] = 0; + order[2] = 2; + } else { + order[0] = 1; + order[1] = 2; + order[2] = 0; + } + } +} + +/* checks out all possible quartets */ +void computeallquartets() +{ + double onethird; + uli nq; + unsigned char treebits[3]; + FILE *lhfp; +# if ! PARALLEL + int a, b, c, i; + double qc2, mintogo, minutes, hours, temp; + double temp1, temp2, temp3; + unsigned char discreteweight[3]; +# endif + + onethird = 1.0/3.0; + treebits[0] = (unsigned char) 1; + treebits[1] = (unsigned char) 2; + treebits[2] = (unsigned char) 4; + + if (show_optn) { /* list all unresolved quartets */ + openfiletowrite(&unresfp, UNRESOLVED, "unresolved quartet trees"); + fprintf(unresfp, "List of all completely unresolved quartets:\n\n"); + } + + nq = 0; + badqs = 0; + + /* start timer - percentage of completed quartets */ + time(&time0); + time1 = time0; + mflag = 0; + +# if PARALLEL + { + schedtype sched; + int flag; + MPI_Status stat; + int dest = 1; + uli qaddr =0; + uli qamount=0; + int qblocksent = 0; + int apr; + uli sq, noq; + initsched(&sched, numquarts(Maxspc), PP_NumProcs-1, 4); + qamount=sgss(&sched); + while (qamount > 0) { + if (PP_emptyslave()) { + PP_RecvQuartBlock(0, &sq, &noq, quartetinfo, &apr); + qblocksent -= noq; + } + dest = PP_getslave(); + PP_SendDoQuartBlock(dest, qaddr, qamount, (approxqp ? APPROX : EXACT)); + qblocksent += qamount; + qaddr += qamount; + qamount=sgss(&sched); + + MPI_Iprobe(MPI_ANY_SOURCE, PP_QUARTBLOCKSPECS, PP_Comm, &flag, &stat); + while (flag) { + PP_RecvQuartBlock(0, &sq, &noq, quartetinfo, &apr); + qblocksent -= noq; + MPI_Iprobe(MPI_ANY_SOURCE, PP_QUARTBLOCKSPECS, PP_Comm, &flag, &stat); + } + } + while (qblocksent > 0) { + PP_RecvQuartBlock(0, &sq, &noq, quartetinfo, &apr); + qblocksent -= noq; + } + } +# else /* PARALLEL */ + + addtimes(GENERAL, &tarr); + if (savequartlh_optn) { + openfiletowrite(&lhfp, ALLQUARTLH, "all quartet likelihoods"); + if (saveqlhbin_optn) writetpqfheader(Maxspc, lhfp, 3); + else writetpqfheader(Maxspc, lhfp, 4); + } + + for (i = 3; i < Maxspc; i++) + for (c = 2; c < i; c++) + for (b = 1; b < c; b++) + for (a = 0; a < b; a++) { + nq++; + + /* generate message every 15 minutes */ + /* check timer */ + time(&time2); + if ( (time2 - time1) > 900) { + /* every 900 seconds */ + /* percentage of completed quartets */ + if (mflag == 0) { + FPRINTF(STDOUTFILE "\n"); + mflag = 1; + } + qc2 = 100.*nq/Numquartets; + mintogo = (100.0-qc2) * + (double) (time2-time0)/60.0/qc2; + hours = floor(mintogo/60.0); + minutes = mintogo - 60.0*hours; + FPRINTF(STDOUTFILE "%.2f%%", qc2); + FPRINTF(STDOUTFILE " completed (remaining"); + FPRINTF(STDOUTFILE " time: %.0f", hours); + FPRINTF(STDOUTFILE " hours %.0f", minutes); + FPRINTF(STDOUTFILE " minutes)\n"); + fflush(STDOUT); + time1 = time2; + } + + /* maximum likelihood values */ + + /* exact or approximate maximum likelihood values */ + compute_quartlklhds(a,b,c,i,&qweight[0],&qweight[1],&qweight[2], (approxqp ? APPROX : EXACT)); + + if (savequartlh_optn) { + if (saveqlhbin_optn) + fwrite(qweight, sizeof(double), 3, lhfp); + else + fprintf(lhfp, "(%d,%d,%d,%d)\t%f\t%f\t%f\n", a, b, c, i, + qweight[0], qweight[1], qweight[2]); + } + + /* sort in descending order */ + sort3doubles(qweight, qworder); + + if (usebestq_optn) { + sqorder[2] = 2; + discreteweight[sqorder[2]] = treebits[qworder[0]]; + if (qweight[qworder[0]] == qweight[qworder[1]]) { + discreteweight[sqorder[2]] = discreteweight[sqorder[2]] || treebits[qworder[1]]; + if (qweight[qworder[1]] == qweight[qworder[2]]) { + discreteweight[sqorder[2]] = discreteweight[sqorder[2]] || treebits[qworder[2]]; + discreteweight[sqorder[2]] = 7; + } + } + } else { + + /* compute Bayesian weights */ + qweight[qworder[1]] = exp(qweight[qworder[1]]-qweight[qworder[0]]); + qweight[qworder[2]] = exp(qweight[qworder[2]]-qweight[qworder[0]]); + qweight[qworder[0]] = 1.0; + temp = qweight[0] + qweight[1] + qweight[2]; + qweight[0] = qweight[0]/temp; + qweight[1] = qweight[1]/temp; + qweight[2] = qweight[2]/temp; + + /* square deviations */ + temp1 = 1.0 - qweight[qworder[0]]; + sqdiff[0] = temp1 * temp1 + + qweight[qworder[1]] * qweight[qworder[1]] + + qweight[qworder[2]] * qweight[qworder[2]]; + discreteweight[0] = treebits[qworder[0]]; + + temp1 = 0.5 - qweight[qworder[0]]; + temp2 = 0.5 - qweight[qworder[1]]; + sqdiff[1] = temp1 * temp1 + temp2 * temp2 + + qweight[qworder[2]] * qweight[qworder[2]]; + discreteweight[1] = treebits[qworder[0]] + treebits[qworder[1]]; + + temp1 = onethird - qweight[qworder[0]]; + temp2 = onethird - qweight[qworder[1]]; + temp3 = onethird - qweight[qworder[2]]; + sqdiff[2] = temp1 * temp1 + temp2 * temp2 + temp3 * temp3; + discreteweight[2] = (unsigned char) 7; + + /* sort in descending order */ + sort3doubles(sqdiff, sqorder); + } + + /* determine best discrete weight */ + writequartet(a, b, c, i, discreteweight[sqorder[2]]); + + /* counting completely unresolved quartets */ + if (discreteweight[sqorder[2]] == 7) { + badqs++; + badtaxon[a]++; + badtaxon[b]++; + badtaxon[c]++; + badtaxon[i]++; + if (show_optn) { + fputid10(unresfp, a); + fprintf(unresfp, " "); + fputid10(unresfp, b); + fprintf(unresfp, " "); + fputid10(unresfp, c); + fprintf(unresfp, " "); + fputid(unresfp, i); + fprintf(unresfp, "\n"); + } + } + addtimes(QUARTETS, &tarr); + } + if (savequartlh_optn) { + closefile(lhfp); + } + if (show_optn) + closefile(unresfp); + if (mflag == 1) + FPRINTF(STDOUTFILE "\n"); +# endif /* PARALLEL */ + +} + +/* check the branching structure between the leaves (not the taxa!) + A, B, C, and I (A, B, C, I don't need to be ordered). As a result, + the two leaves that are closer related to each other than to leaf I + are found in chooseA and chooseB. If the branching structure is + not uniquely defined, ChooseA and ChooseB are chosen randomly + from the possible taxa */ +void checkquartet(int A, int B, int C, int I) +{ + int i, j, a, b, taxon[5], leaf[5], ipos; + unsigned char qresult; + int notunique = FALSE; + + /* The relationship between leaves and taxa is defined by trueID */ + taxon[1] = trueID[A]; /* taxon number */ + leaf[1] = A; /* leaf number */ + taxon[2] = trueID[B]; + leaf[2] = B; + taxon[3] = trueID[C]; + leaf[3] = C; + taxon[4] = trueID[I]; + leaf[4] = I; + + /* sort for taxa */ + /* Source: Numerical Recipes (PIKSR2.C) */ + for (j = 2; j <= 4; j++) { + a = taxon[j]; + b = leaf[j]; + i = j-1; + while (i > 0 && taxon[i] > a) { + taxon[i+1] = taxon[i]; + leaf[i+1] = leaf[i]; + i--; + } + taxon[i+1] = a; + leaf[i+1] = b; + } + + /* where is leaf I ? */ + ipos = 1; + while (leaf[ipos] != I) ipos++; + + /* look at sequence quartet */ + qresult = readquartet(taxon[1], taxon[2], taxon[3], taxon[4]); + + /* chooseA and chooseB */ + do { + switch (qresult) { + + /* one single branching structure */ + + /* 001 */ + case 1: if (ipos == 1 || ipos == 2) { + chooseA = leaf[3]; + chooseB = leaf[4]; + } else { + chooseA = leaf[1]; + chooseB = leaf[2]; + } + notunique = FALSE; + break; + + /* 010 */ + case 2: if (ipos == 1 || ipos == 3) { + chooseA = leaf[2]; + chooseB = leaf[4]; + } else { + chooseA = leaf[1]; + chooseB = leaf[3]; + } + notunique = FALSE; + break; + + /* 100 */ + case 4: if (ipos == 1 || ipos == 4) { + chooseA = leaf[2]; + chooseB = leaf[3]; + } else { + chooseA = leaf[1]; + chooseB = leaf[4]; + } + notunique = FALSE; + break; + + /* two possible branching structures */ + + /* 011 */ + case 3: if (randominteger(2)) qresult = 1; + else qresult = 2; + notunique = TRUE; + break; + + /* 101 */ + case 5: if (randominteger(2)) qresult = 1; + else qresult = 4; + notunique = TRUE; + break; + + /* 110 */ + case 6: if (randominteger(2)) qresult = 2; + else qresult = 4; + notunique = TRUE; + break; + + /* three possible branching structures */ + + /* 111 */ + case 7: qresult = (1 << randominteger(3)); /* 1, 2, or 4 */ + notunique = TRUE; + break; + + default: /* Program error [checkquartet] */ +#if PARALLEL + FPRINTF(STDOUTFILE "\n\n\n(%2d)HALT: PLEASE REPORT ERROR K-PARALLEL TO DEVELOPERS (%d,%d,%d,%d) = %ld\n\n\n", + PP_Myid, taxon[1], taxon[2], taxon[3], taxon[4], + quart2num(taxon[1], taxon[2], taxon[3], taxon[4])); +#else + FPRINTF(STDOUTFILE "\n\n\nHALT: PLEASE REPORT ERROR K TO DEVELOPERS\n\n\n"); +#endif + + } + } while (notunique); + + return; +} + diff --git a/forester/archive/RIO/others/puzzle_mod/src/sched.c b/forester/archive/RIO/others/puzzle_mod/src/sched.c new file mode 100644 index 0000000..3f1c0f6 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/sched.c @@ -0,0 +1,423 @@ +/* + * sched.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#include +#include +#include +#include "sched.h" +/* #include "ppuzzle.h" */ + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, +#endif + +int scinit; +int ssinit; +int fscinit; +int gssinit; +int tssinit; + +int n, chunksize; +int p; + +#ifdef SCHEDTEST + schedtype testsched; +#endif + +void printsched(schedtype sch) +{ + FPRINTF(STDOUTFILE "Current scheduling status:\n"); + FPRINTF(STDOUTFILE " truetasks=%5ld - alltasks=%5ld - numtasks=%5ld - numprocs=%5d\n", + sch.truetasks, sch.alltasks, sch.numtasks, sch.numprocs); + FPRINTF(STDOUTFILE " delta =%5d - overhead=%5d - rest =%5d - inited =%5d\n", + sch.delta, sch.overhead, sch.rest, sch.inited); + FPRINTF(STDOUTFILE " nconst =%5d - fconst =%5f - lconst =%5f - kconst =%5f\n", + sch.nconst, sch.fconst, sch.lconst, sch.kconst); +} + +void initsched(schedtype *sch, uli tasks, int procs, uli minchunk) +{ + if (minchunk < 1) minchunk = 1; + (*sch).minchunk = minchunk; + (*sch).truetasks = tasks; + (*sch).rest = (int)((*sch).truetasks % (*sch).minchunk); + (*sch).alltasks = (tasks - (*sch).rest); + (*sch).numtasks = (*sch).alltasks; + (*sch).numprocs = procs; + (*sch).delta = 0; + (*sch).overhead = 0; + (*sch).nconst = 0; + (*sch).fconst = 0; + (*sch).lconst = 0; + (*sch).kconst = 0; + (*sch).inited = 0; + +# ifdef PVERBOSE1 + printsched(*sch); +# endif /* PVERBOSE1 */ +} + +/************************************** +* Static Chunking +**************************************/ +uli sc(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).overhead = (*sch).alltasks % (*sch).numprocs; + (*sch).delta = ((*sch).alltasks - (*sch).overhead) / (*sch).numprocs; + (*sch).inited ++; + } + + if (!(*sch).overhead) { + if ((*sch).numtasks >= (*sch).delta) + tmp = (uli)(*sch).delta; + else + tmp = 0; + } else { + if ((*sch).numtasks >= ((*sch).delta + 1)) { + tmp = (uli)(*sch).delta + 1; + (*sch).overhead--; + } else + tmp = 0; + } + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + return tmp; +} /* SC */ + + +/************************************** +* Self Scheduling +**************************************/ +uli ss(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).inited ++; + } + + if ((*sch).numtasks >= 1) + tmp = 1; + else + tmp = (*sch).numtasks; + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + + return tmp; +} /* SS */ + + +/************************************** +* fixed-size chunking +**************************************/ +int fsc() +{ + static int R ; + static int delta ; + static int overhead; + + int tmp; + + if (fscinit == 0) { + R = n; + overhead = n % p; + delta = (n - overhead) / p; + fscinit ++; + } + + if (!overhead) { + if (R >= delta) + tmp = delta; + else + tmp = 0; + } else { + if (R >= (delta + 1)) { + tmp = delta + 1; + overhead--; + } else + tmp = 0; + } + + R -= tmp; + return tmp; +} /* FSC */ + + +/************************************** +* Guided Self Scheduling +**************************************/ +uli gss(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).inited ++; + } + + if ((*sch).numtasks >= 1) { + tmp = (uli)ceil((*sch).numtasks / (*sch).numprocs); + if (tmp == 0) tmp = 1; + } else + tmp = 0; + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + return tmp; +} /* GSS */ + +/************************************** +* Smooth Guided Self Scheduling +**************************************/ +uli sgss(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).inited ++; + } + + if ((*sch).numtasks >= 1) { + tmp = (uli)ceil(((*sch).numtasks / (*sch).numprocs) / 2); + if (tmp == 0) tmp = 1; + } else + tmp = 0; + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + return tmp; +} /* SGSS */ + + +/************************************** +* Trapezoid Self Scheduling +**************************************/ +uli tss(schedtype *sch) +{ + uli tmp; + + if ((*sch).inited == 0) { + (*sch).fconst = ceil((*sch).numtasks / (2*(*sch).numprocs)); + if ((*sch).fconst == 0) (*sch).fconst = 1; + (*sch).lconst = 1; + (*sch).nconst = ceil( (2*n) / ((*sch).fconst + (*sch).lconst) ); + (*sch).ddelta = (((*sch).fconst - (*sch).lconst) / ((*sch).nconst - 1)); + (*sch).kconst = (*sch).fconst; + FPRINTF(STDOUTFILE "f = n/2p = %.2f ; l = %.2f\n", (*sch).fconst, (*sch).lconst); + FPRINTF(STDOUTFILE "N = 2n/(f+l) = %d ; delta = (f-l)/(N-1) = %.2f\n", (*sch).nconst, (*sch).ddelta); + (*sch).inited ++; + } + + if ((*sch).kconst <= (double) (*sch).numtasks) { + tmp = (uli)ceil((*sch).kconst); + (*sch).kconst -= (*sch).ddelta; + } else { + tmp = (uli)(*sch).numtasks; + (*sch).kconst = 0.0; + } + + /* correction */ + if ((tmp % (*sch).minchunk) > 0) { + tmp += (*sch).minchunk - (tmp % (*sch).minchunk); + } + + (*sch).numtasks -= tmp; + + if ((*sch).numtasks == 0) { + tmp += (uli)(*sch).rest; + (*sch).rest = 0; + } + return tmp; + +} /* TSS */ + + +/******************/ + + +#ifdef SCHEDTEST + uli numquarts(int maxspc) + { + uli tmp; + int a, b, c, d; + + if (maxspc < 4) + return (uli)0; + else { + maxspc--; + a = maxspc-3; + b = maxspc-2; + c = maxspc-1; + d = maxspc; + + tmp = (uli) 1 + a + + (uli) b * (b-1) / 2 + + (uli) c * (c-1) * (c-2) / 6 + + (uli) d * (d-1) * (d-2) * (d-3) / 24; + return (tmp); + } + } /* numquarts */ +#endif + + + + +/************************************** +* main +**************************************/ +#ifdef SCHEDTEST +int main(int argc, char *argv[]) +{ + int tcount, + count, + lastsize, + size; + if ((argc > 4) || (argc < 3)) { + FPRINTF(STDOUTFILE "\n\n Usage: %s <# species> <# processors> []\n\n", argv[0]); + exit(1); + } + + chunksize = 1; + + switch(argc) { + case 4: + chunksize = atoi(argv[3]); + case 3: + n = numquarts(atoi(argv[1])); + p = atoi(argv[2]); + } + + FPRINTF(STDOUTFILE "proc=%6d\n", p); + FPRINTF(STDOUTFILE "task=%6d\n", n); + + initsched(&testsched, n, p, chunksize); + printsched(testsched); + + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n---------------------------\n"); + FPRINTF(STDOUTFILE "SC(sched) - Static Chunking\n"); + FPRINTF(STDOUTFILE "---------------------------\n\n"); + do { size = sc(&testsched); + if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + tcount+=size;} + else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1)); + } while (size > 0); + + + initsched(&testsched, n, p, chunksize); + printsched(testsched); + + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n---------------------------\n"); + FPRINTF(STDOUTFILE "SS(sched) - Self Scheduling\n"); + FPRINTF(STDOUTFILE "---------------------------\n\n"); + do { size = ss(&testsched); + if (size > 0) {if (count==1) FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + count++; + tcount+=size; + lastsize = size;} + else {FPRINTF(STDOUTFILE " ...\n"); + FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, lastsize , (lastsize%chunksize) ? '!' : ' '); + FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1));} + } while (size > 0); + + +/**/ + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n---------------------------\n"); + FPRINTF(STDOUTFILE "FSC() - Fixed-Size Chunking\n"); + FPRINTF(STDOUTFILE "---------------------------\n\n"); + do { size = fsc(); + if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + tcount+=size;} + else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1)); + } while (size > 0); +/**/ + + initsched(&testsched, n, p, chunksize); + printsched(testsched); + + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n-----------------------------------\n"); + FPRINTF(STDOUTFILE "GSS(sched) - Guided Self Scheduling\n"); + FPRINTF(STDOUTFILE "-----------------------------------\n\n"); + do { size = gss(&testsched); + if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + tcount+=size;} + else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1)); + } while (size > 0); + + initsched(&testsched, n, p, chunksize); + printsched(testsched); + + count=1; tcount = 0; + FPRINTF(STDOUTFILE "\n\n--------------------------------------\n"); + FPRINTF(STDOUTFILE "TSS(sched) - Trapezoid Self Scheduling\n"); + FPRINTF(STDOUTFILE "--------------------------------------\n\n"); + do { size = tss(&testsched); + if (size > 0) {FPRINTF(STDOUTFILE "%6d. chunk = %6d %c\n", count++, size , (size%chunksize) ? '!' : ' '); + tcount+=size;} + else FPRINTF(STDOUTFILE "%d tasks in %d chunks\n", tcount, (count-1)); + } while (size > 0); + return (0); +} +#endif diff --git a/forester/archive/RIO/others/puzzle_mod/src/sched.h b/forester/archive/RIO/others/puzzle_mod/src/sched.h new file mode 100644 index 0000000..e75bdd2 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/sched.h @@ -0,0 +1,53 @@ +/* + * sched.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef SCHED_H +#define SCHED_H +#ifndef SCHEDTEST +# include "util.h" +#else + typedef unsigned long int uli; +#endif + + +typedef struct sched_t{ + uli truetasks; + uli alltasks; + uli numtasks; + uli minchunk; + int numprocs; + int delta; + double ddelta; + int overhead; + int rest; + int nconst; + double fconst; + double lconst; + double kconst; + int inited; +} schedtype; + +void num2quart(uli qnum, int *a, int *b, int *c, int *d); +uli numquarts(int maxspc); +uli quart2num (int a, int b, int c, int d); + +void printsched(schedtype sch); +void initsched(schedtype *sch, uli tasks, int procs, uli minchunk); +uli sc(schedtype *sch); +uli gss(schedtype *sch); +uli sgss(schedtype *sch); +uli tss(schedtype *sch); + +#endif /* SCHED_H */ diff --git a/forester/archive/RIO/others/puzzle_mod/src/test b/forester/archive/RIO/others/puzzle_mod/src/test new file mode 100644 index 0000000..a680df2 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/test @@ -0,0 +1,19 @@ +CC gcc +LIBS -lm +CFLAGS -g -O2 +DEFS -DPACKAGE=\"tree-puzzle\" -DVERSION=\"5.0\" -DHAVE_LIBM=1 -DSTDC_HEADERS=1 -DHAVE_LIMITS_H=1 +SET_MAKE + +HCC @HCC@ +MPICC +MPCC @MPCC@ + +MPICC +MPILIBS +MPIDEFS +MPICFLAGS + +PCC @PCC@ +PLIBS @PLIBS@ +PDEFS @PDEFS@ +PCFLAGS @PCFLAGS@ diff --git a/forester/archive/RIO/others/puzzle_mod/src/test.in b/forester/archive/RIO/others/puzzle_mod/src/test.in new file mode 100644 index 0000000..0dc7ddc --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/test.in @@ -0,0 +1,19 @@ +CC @CC@ +LIBS @LIBS@ +CFLAGS @CFLAGS@ +DEFS @DEFS@ +SET_MAKE @SET_MAKE@ + +HCC @HCC@ +MPICC @MPICC@ +MPCC @MPCC@ + +MPICC @MPICC@ +MPILIBS @MPILIBS@ +MPIDEFS @MPIDEFS@ +MPICFLAGS @MPICFLAGS@ + +PCC @PCC@ +PLIBS @PLIBS@ +PDEFS @PDEFS@ +PCFLAGS @PCFLAGS@ diff --git a/forester/archive/RIO/others/puzzle_mod/src/util.c b/forester/archive/RIO/others/puzzle_mod/src/util.c new file mode 100644 index 0000000..667758b --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/util.c @@ -0,0 +1,748 @@ +/* + * util.c + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#include "util.h" + +#define STDOUT stdout +#ifndef PARALLEL /* because printf() runs significantly faster */ + /* than fprintf(stdout) on an Apple McIntosh */ + /* (HS) */ +# define FPRINTF printf +# define STDOUTFILE +#else +# define FPRINTF fprintf +# define STDOUTFILE STDOUT, + extern int PP_NumProcs; + extern int PP_Myid; + long int PP_randn; + long int PP_rand; +#endif + + +/* + * memory allocation error handler + */ + +void maerror(char *message) +{ + FPRINTF(STDOUTFILE "\n\n\nUnable to proceed (lack of memory: %s)\n\n", message); + FPRINTF(STDOUTFILE "Hint for Macintosh users:\n"); + FPRINTF(STDOUTFILE "Use the command of the Finder to increase the memory partition!\n\n"); + exit(1); +} + + +/* + * memory allocate double vectors, matrices, and cubes + */ + +dvector new_dvector(int n) +{ + dvector v; + + v = (dvector) malloc((unsigned) (n * sizeof(double))); + if (v == NULL) maerror("step 1 in new_dvector"); + + return v; +} + +dmatrix new_dmatrix(int nrow, int ncol) +{ + int i; + dmatrix m; + + m = (dmatrix) malloc((unsigned) (nrow * sizeof(dvector))); + if (m == NULL) maerror("step 1 in in new_dmatrix"); + + *m = (dvector) malloc((unsigned) (nrow * ncol * sizeof(double))); + if (*m == NULL) maerror("step 2 in in new_dmatrix"); + + for (i = 1; i < nrow; i++) m[i] = m[i-1] + ncol; + + return m; +} + +dcube new_dcube(int ntri, int nrow, int ncol) +{ + int i, j; + dcube c; + + c = (dcube) malloc((unsigned) (ntri * sizeof(dmatrix))); + if (c == NULL) maerror("step 1 in in new_dcube"); + + *c = (dmatrix) malloc((unsigned) (ntri * nrow * sizeof(dvector))); + if (*c == NULL) maerror("step 2 in in new_dcube"); + + **c = (dvector) malloc((unsigned) (ntri * nrow * ncol * sizeof(double))); + if (**c == NULL) maerror("step 3 in in new_dcube"); + + for (j = 1; j < nrow; j++) c[0][j] = c[0][j-1] + ncol; + + for (i = 1; i < ntri; i++) { + c[i] = c[i-1] + nrow; + c[i][0] = c[i-1][0] + nrow * ncol; + for (j = 1; j < nrow; j++) c[i][j] = c[i][j-1] + ncol; + } + + return c; +} + +void free_dvector(dvector v) +{ + free((double *) v); +} + +void free_dmatrix(dmatrix m) +{ + free((double *) *m); + free((double *) m); +} + +void free_dcube(dcube c) +{ + free((double *) **c); + free((double *) *c); + free((double *) c); +} + + +/* + * memory allocate char vectors, matrices, and cubes + */ + +cvector new_cvector(int n) +{ + cvector v; + + v = (cvector) malloc((unsigned)n * sizeof(char)); + if (v == NULL) maerror("step1 in new_cvector"); + + return v; +} + +cmatrix new_cmatrix(int nrow, int ncol) +{ + int i; + cmatrix m; + + m = (cmatrix) malloc((unsigned) (nrow * sizeof(cvector))); + if (m == NULL) maerror("step 1 in new_cmatrix"); + + *m = (cvector) malloc((unsigned) (nrow * ncol * sizeof(char))); + if (*m == NULL) maerror("step 2 in new_cmatrix"); + + for (i = 1; i < nrow; i++) m[i] = m[i-1] + ncol; + + return m; +} + +ccube new_ccube(int ntri, int nrow, int ncol) +{ + int i, j; + ccube c; + + c = (ccube) malloc((unsigned) (ntri * sizeof(cmatrix))); + if (c == NULL) maerror("step 1 in new_ccube"); + + *c = (cmatrix) malloc((unsigned) (ntri * nrow * sizeof(cvector))); + if (*c == NULL) maerror("step 2 in new_ccube"); + + **c = (cvector) malloc((unsigned) (ntri * nrow * ncol * sizeof(char))); + if (**c == NULL) maerror("step 3 in new_ccube"); + + for (j = 1; j < nrow; j++) c[0][j] = c[0][j-1] + ncol; + + for (i = 1; i < ntri; i++) { + c[i] = c[i-1] + nrow; + c[i][0] = c[i-1][0] + nrow * ncol; + for (j = 1; j < nrow; j++) c[i][j] = c[i][j-1] + ncol; + } + + return c; +} + +void free_cvector(cvector v) +{ + free((char *) v); +} + +void free_cmatrix(cmatrix m) +{ + free((char *) *m); + free((char *) m); +} + +void free_ccube(ccube c) +{ + free((char *) **c); + free((char *) *c); + free((char *) c); +} + + +/* + * memory allocate int vectors, matrices, and cubes + */ + +ivector new_ivector(int n) +{ + ivector v; + + v = (ivector) malloc((unsigned) (n * sizeof(int))); + if (v == NULL) maerror("step 1 in new_ivector"); + + return v; +} + +imatrix new_imatrix(int nrow, int ncol) +{ + int i; + imatrix m; + + m = (imatrix) malloc((unsigned) (nrow * sizeof(ivector))); + if (m == NULL) maerror("step 1 in new_imatrix"); + + *m = (ivector) malloc((unsigned) (nrow * ncol * sizeof(int))); + if (*m == NULL) maerror("step 2 in new_imatrix"); + + for (i = 1; i < nrow; i++) m[i] = m[i-1] + ncol; + + return m; +} + +icube new_icube(int ntri, int nrow, int ncol) +{ + int i, j; + icube c; + + c = (icube) malloc((unsigned) (ntri * sizeof(imatrix))); + if (c == NULL) maerror("step 1 in new_icube"); + + *c = (imatrix) malloc((unsigned) (ntri * nrow * sizeof(ivector))); + if (*c == NULL) maerror("step 2 in new_icube"); + + **c = (ivector) malloc((unsigned) (ntri * nrow * ncol * sizeof(int))); + if (**c == NULL) maerror("step 3 in new_icube"); + + for (j = 1; j < nrow; j++) c[0][j] = c[0][j-1] + ncol; + + for (i = 1; i < ntri; i++) { + c[i] = c[i-1] + nrow; + c[i][0] = c[i-1][0] + nrow * ncol; + for (j = 1; j < nrow; j++) c[i][j] = c[i][j-1] + ncol; + } + + return c; +} + +void free_ivector(ivector v) +{ + free((int *) v); +} + +void free_imatrix(imatrix m) +{ + free((int *) *m); + free((int *) m); +} + +void free_icube(icube c) +{ + free((int *) **c); + free((int *) *c); + free((int *) c); +} + + +/* + * memory allocate uli vectors, matrices, and cubes + */ + +ulivector new_ulivector(int n) +{ + ulivector v; + + v = (ulivector) malloc((unsigned) (n * sizeof(uli))); + if (v == NULL) maerror("step 1 in new_ulivector"); + + return v; +} + +ulimatrix new_ulimatrix(int nrow, int ncol) +{ + int i; + ulimatrix m; + + m = (ulimatrix) malloc((unsigned) (nrow * sizeof(ulivector))); + if (m == NULL) maerror("step 1 in new_ulimatrix"); + + *m = (ulivector) malloc((unsigned) (nrow * ncol * sizeof(uli))); + if (*m == NULL) maerror("step 2 in new_ulimatrix"); + + for (i = 1; i < nrow; i++) m[i] = m[i-1] + ncol; + + return m; +} + +ulicube new_ulicube(int ntri, int nrow, int ncol) +{ + int i, j; + ulicube c; + + c = (ulicube) malloc((unsigned) (ntri * sizeof(ulimatrix))); + if (c == NULL) maerror("step 1 in new_ulicube"); + + *c = (ulimatrix) malloc((unsigned) (ntri * nrow * sizeof(ulivector))); + if (*c == NULL) maerror("step 2 in new_ulicube"); + + **c = (ulivector) malloc((unsigned) (ntri * nrow * ncol * sizeof(uli))); + if (**c == NULL) maerror("step 3 in new_ulicube"); + + for (j = 1; j < nrow; j++) c[0][j] = c[0][j-1] + ncol; + + for (i = 1; i < ntri; i++) { + c[i] = c[i-1] + nrow; + c[i][0] = c[i-1][0] + nrow * ncol; + for (j = 1; j < nrow; j++) c[i][j] = c[i][j-1] + ncol; + } + + return c; +} + +void free_ulivector(ulivector v) +{ + free((uli *) v); +} + +void free_ulimatrix(ulimatrix m) +{ + free((uli *) *m); + free((uli *) m); +} + +void free_ulicube(ulicube c) +{ + free((uli *) **c); + free((uli *) *c); + free((uli *) c); +} + + +/******************************************************************************/ +/* random numbers generator (Numerical recipes) */ +/******************************************************************************/ + +/* definitions */ +#define IM1 2147483563 +#define IM2 2147483399 +#define AM (1.0/IM1) +#define IMM1 (IM1-1) +#define IA1 40014 +#define IA2 40692 +#define IQ1 53668 +#define IQ2 52774 +#define IR1 12211 +#define IR2 3791 +#define NTAB 32 +#define NDIV (1+IMM1/NTAB) +#define EPS 1.2e-7 +#define RNMX (1.0-EPS) + +/* variable */ +long idum; + +double randomunitintervall() +/* Long period (> 2e18) random number generator. Returns a uniform random + deviate between 0.0 and 1.0 (exclusive of endpoint values). + + Source: + Press et al., "Numerical recipes in C", Cambridge University Press, 1992 + (chapter 7 "Random numbers", ran2 random number generator) */ +{ + int j; + long k; + static long idum2=123456789; + static long iy=0; + static long iv[NTAB]; + double temp; + + if (idum <= 0) { + if (-(idum) < 1) + idum=1; + else + idum=-(idum); + idum2=(idum); + for (j=NTAB+7;j>=0;j--) { + k=(idum)/IQ1; + idum=IA1*(idum-k*IQ1)-k*IR1; + if (idum < 0) + idum += IM1; + if (j < NTAB) + iv[j] = idum; + } + iy=iv[0]; + } + k=(idum)/IQ1; + idum=IA1*(idum-k*IQ1)-k*IR1; + if (idum < 0) + idum += IM1; + k=idum2/IQ2; + idum2=IA2*(idum2-k*IQ2)-k*IR2; + if (idum2 < 0) + idum2 += IM2; + j=iy/NDIV; + iy=iv[j]-idum2; + iv[j] = idum; + if (iy < 1) + iy += IMM1; + if ((temp=AM*iy) > RNMX) + return RNMX; + else + return temp; +} + +#undef IM1 +#undef IM2 +#undef AM +#undef IMM1 +#undef IA1 +#undef IA2 +#undef IQ1 +#undef IQ2 +#undef IR1 +#undef IR2 +#undef NTAB +#undef NDIV +#undef EPS +#undef RNMX + +int initrandom(int seed) +{ + srand((unsigned) time(NULL)); + if (seed < 0) + seed = rand(); + idum=-(long) seed; +# ifdef PARALLEL + { + int n; + for (n=0; n= 0.0 ? fabs(a) : -fabs(a)) + +/* Brents method in one dimension */ +double brent(double ax, double bx, double cx, double (*f)(double), double tol, + double *foptx, double *f2optx, double fax, double fbx, double fcx) +{ + int iter; + double a,b,d=0,etemp,fu,fv,fw,fx,p,q,r,tol1,tol2,u,v,w,x,xm; + double xw,wv,vx; + double e=0.0; + + a=(ax < cx ? ax : cx); + b=(ax > cx ? ax : cx); + x=bx; + fx=fbx; + if (fax < fcx) { + w=ax; + fw=fax; + v=cx; + fv=fcx; + } else { + w=cx; + fw=fcx; + v=ax; + fv=fax; + } + for (iter=1;iter<=ITMAX;iter++) { + xm=0.5*(a+b); + tol2=2.0*(tol1=tol*fabs(x)+ZEPS); + if (fabs(x-xm) <= (tol2-0.5*(b-a))) { + *foptx = fx; + xw = x-w; + wv = w-v; + vx = v-x; + *f2optx = 2.0*(fv*xw + fx*wv + fw*vx)/ + (v*v*xw + x*x*wv + w*w*vx); + return x; + } + if (fabs(e) > tol1) { + r=(x-w)*(fx-fv); + q=(x-v)*(fx-fw); + p=(x-v)*q-(x-w)*r; + q=2.0*(q-r); + if (q > 0.0) p = -p; + q=fabs(q); + etemp=e; + e=d; + if (fabs(p) >= fabs(0.5*q*etemp) || p <= q*(a-x) || p >= q*(b-x)) + d=CGOLD*(e=(x >= xm ? a-x : b-x)); + else { + d=p/q; + u=x+d; + if (u-a < tol2 || b-u < tol2) + d=SIGN(tol1,xm-x); + } + } else { + d=CGOLD*(e=(x >= xm ? a-x : b-x)); + } + u=(fabs(d) >= tol1 ? x+d : x+SIGN(tol1,d)); + fu=(*f)(u); + if (fu <= fx) { + if (u >= x) a=x; else b=x; + SHFT(v,w,x,u) + SHFT(fv,fw,fx,fu) + } else { + if (u < x) a=u; else b=u; + if (fu <= fw || w == x) { + v=w; + w=u; + fv=fw; + fw=fu; + } else if (fu <= fv || v == x || v == w) { + v=u; + fv=fu; + } + } + } + *foptx = fx; + xw = x-w; + wv = w-v; + vx = v-x; + *f2optx = 2.0*(fv*xw + fx*wv + fw*vx)/ + (v*v*xw + x*x*wv + w*w*vx); + return x; +} +#undef ITMAX +#undef CGOLD +#undef ZEPS +#undef SHFT +#undef SIGN +#undef GOLD +#undef GLIMIT +#undef TINY + +/* one-dimensional minimization - as input a lower and an upper limit and a trial + value for the minimum is needed: xmin < xguess < xmax + the function and a fractional tolerance has to be specified + onedimenmin returns the optimal x value and the value of the function + and its second derivative at this point + */ +double onedimenmin(double xmin, double xguess, double xmax, double (*f)(double), + double tol, double *fx, double *f2x) +{ + double eps, optx, ax, bx, cx, fa, fb, fc; + + /* first attempt to bracketize minimum */ + eps = xguess*tol*50.0; + ax = xguess - eps; + if (ax < xmin) ax = xmin; + bx = xguess; + cx = xguess + eps; + if (cx > xmax) cx = xmax; + + /* check if this works */ + fa = (*f)(ax); + fb = (*f)(bx); + fc = (*f)(cx); + + /* if it works use these borders else be conservative */ + if ((fa < fb) || (fc < fb)) { + if (ax != xmin) fa = (*f)(xmin); + if (cx != xmax) fc = (*f)(xmax); + optx = brent(xmin, xguess, xmax, f, tol, fx, f2x, fa, fb, fc); + } else + optx = brent(ax, bx, cx, f, tol, fx, f2x, fa, fb, fc); + + return optx; /* return optimal x */ +} + +/* two-dimensional minimization with borders and calculations of standard errors */ +/* we optimize along basis vectors - not very optimal but it seems to work well */ +void twodimenmin(double tol, + int active1, double min1, double *x1, double max1, double (*func1)(double), double *err1, + int active2, double min2, double *x2, double max2, double (*func2)(double), double *err2) +{ + int it, nump, change; + double x1old, x2old; + double fx, f2x; + + it = 0; + nump = 0; + + /* count number of parameters */ + if (active1) nump++; + if (active2) nump++; + + do { /* repeat until nothing changes any more */ + it++; + change = FALSE; + + /* optimize first variable */ + if (active1) { + + if ((*x1) <= min1) (*x1) = min1 + 0.2*(max1-min1); + if ((*x1) >= max1) (*x1) = max1 - 0.2*(max1-min1); + x1old = (*x1); + (*x1) = onedimenmin(min1, (*x1), max1, func1, tol, &fx, &f2x); + if ((*x1) < min1) (*x1) = min1; + if ((*x1) > max1) (*x1) = max1; + /* same tolerance as 1D minimization */ + if (fabs((*x1) - x1old) > 3.3*tol) change = TRUE; + + /* standard error */ + f2x = fabs(f2x); + if (1.0/(max1*max1) < f2x) (*err1) = sqrt(1.0/f2x); + else (*err1) = max1; + + } + + /* optimize second variable */ + if (active2) { + + if ((*x2) <= min2) (*x2) = min2 + 0.2*(max2-min2); + if ((*x2) >= max2) (*x2) = max2 - 0.2*(max2-min2); + x2old = (*x2); + (*x2) = onedimenmin(min2, (*x2), max2, func2, tol, &fx, &f2x); + if ((*x2) < min2) (*x2) = min2; + if ((*x2) > max2) (*x2) = max2; + /* same tolerance as 1D minimization */ + if (fabs((*x2) - x2old) > 3.3*tol) change = TRUE; + + /* standard error */ + f2x = fabs(f2x); + if (1.0/(max2*max2) < f2x) (*err2) = sqrt(1.0/f2x); + else (*err2) = max2; + + } + + if (nump == 1) return; + + } while (it != MAXITS && change); + + return; +} + diff --git a/forester/archive/RIO/others/puzzle_mod/src/util.h b/forester/archive/RIO/others/puzzle_mod/src/util.h new file mode 100644 index 0000000..20f37e5 --- /dev/null +++ b/forester/archive/RIO/others/puzzle_mod/src/util.h @@ -0,0 +1,96 @@ +/* + * util.h + * + * + * Part of TREE-PUZZLE 5.0 (June 2000) + * + * (c) 1999-2000 by Heiko A. Schmidt, Korbinian Strimmer, + * M. Vingron, and Arndt von Haeseler + * (c) 1995-1999 by Korbinian Strimmer and Arndt von Haeseler + * + * All parts of the source except where indicated are distributed under + * the GNU public licence. See http://www.opensource.org for details. + */ + + +#ifndef _UTIL_ +#define _UTIL_ + +#include +#include +#include +#include + + +/* + * general definitions + */ + +#define TRUE 1 +#define FALSE 0 + +#ifdef PARALLEL + extern long int PP_randn; + extern long int PP_rand; +#endif + +/* + * type definitions + */ + +typedef unsigned long int uli; + +typedef double *dvector, **dmatrix, ***dcube; +typedef char *cvector, **cmatrix, ***ccube; +typedef int *ivector, **imatrix, ***icube; +typedef uli *ulivector, **ulimatrix, ***ulicube; + + +/* + * prototypes of functions defined in util.c + */ + +void maerror(char *message); + +dvector new_dvector(int n); +dmatrix new_dmatrix(int nrow, int ncol); +dcube new_dcube(int ntri, int nrow, int ncol); +void free_dvector(dvector v); +void free_dmatrix(dmatrix m); +void free_dcube(dcube c); + +cvector new_cvector(int n); +cmatrix new_cmatrix(int nrow, int ncol); +ccube new_ccube(int ntri, int nrow, int ncol); +void free_cvector(cvector v); +void free_cmatrix(cmatrix m); +void free_ccube(ccube c); + +ivector new_ivector(int n); +imatrix new_imatrix(int nrow, int ncol); +icube new_icube(int ntri, int nrow, int ncol); +void free_ivector(ivector v); +void free_imatrix(imatrix m); +void free_icube(icube c); + +ulivector new_ulivector(int n); +ulimatrix new_ulimatrix(int nrow, int ncol); +ulicube new_ulicube(int ntri, int nrow, int ncol); +void free_ulivector(ulivector v); +void free_ulimatrix(ulimatrix m); +void free_ulicube(ulicube c); + +double randomunitintervall(void); +int initrandom(int seed); +int randominteger(int n); +void chooser(int t, int s, ivector slist); +void *myrealloc(void *, size_t); +cvector mygets(void); + +#define MAXITS 10 /* maximum number of iterations in twoedimenmin */ +double onedimenmin(double, double, double, double (*f )(double ), double, double *, double *); +void twodimenmin(double, int, double, double *, double, double (*func1 )(double ), double *, int, double, double *, double, double (*func2 )(double ), double *); + + + +#endif diff --git a/forester/archive/perl/00README b/forester/archive/perl/00README new file mode 100755 index 0000000..2103cf4 --- /dev/null +++ b/forester/archive/perl/00README @@ -0,0 +1,48 @@ +Overview of the Perl scripts in this directory +---------------------------------------------- + +This directory contains a collection of (mostly horrible) +Perl scripts. Some of them are still maintained, such as +phylo_pl.pl. + +Some of the scripts in this directory relay heavily +on forester.pm. + + + +RIO pipeline: +- rio.pl +- makeTree.pl +- p7extract.pl +- multifetch.pl + + +Running a parallelized RIO web server: +- nph-riowebserver +- rio_slave.pl +- rio_slave_driver.pl +- queue.pm + + +To prepare data to be used by RIO: +- bootstrap_cz.pl +- pfam2slx.pl +- extractSWISS-PROT.pl +- extractTrembl.pl +- pfam2pwd.pl + + +To run multiple RIO analyses in an automated fashion: +- Xrio.pl + + +To analyze RIO results (of Xrio.pl runs): +- bootstrapCounter.pl +- bootstrapSelector.pl +- diffFinder3.pl + + +Counting of species in SWISS-PROT and TrEMBL: +- countSpeciesSPTrEMBL.pl + + diff --git a/forester/archive/perl/Xrio.pl b/forester/archive/perl/Xrio.pl new file mode 100755 index 0000000..08c3ceb --- /dev/null +++ b/forester/archive/perl/Xrio.pl @@ -0,0 +1,585 @@ +#!/usr/bin/perl -w +# +# Xrio.pl +# ------- +# Copyright (C) 1999-2001 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Created: 03/01/01 +# +# Last modified 06/22/01 + + +# Objective. Runs "rio.pl" for each Pfam assignment in "infile". +# +# Usage. rio.pl +# +# species names file: list of species to use for analysis. +# +# This version uses the CE number as identifier for output files.\n"; +# +# Format for infile: +# +# >>3R5.2 CE19648 (CAMBRIDGE) TR:Q9XWB1 protein_id:CAA21778.1 +# // +# +# >>4R79.1 CE19649 Zinc-binding metalloprotease domain (CAMBRIDGE) protein_id:CAB63429.1 +# =Astacin Astacin (Peptidase family M12A) 296.3 3.8e-85 1 +# // +# +# >>4R79.2 CE19650 Ras family (CAMBRIDGE) TR:Q9XXA4 protein_id:CAA20282.1 +# =ras Ras family 208.8 8.1e-59 1 +# =FA_desaturase Fatty acid desaturase 4.5 1.5 1 +# =UPF0117 Domain of unknown function DUF36 3.1 3.5 1 +# =arf ADP-ribosylation factor family -46.0 1.5e-05 1 +# // +# +# +# + +# Xrio.pl /nfs/wol2/people/zmasek/wormpep43_hmmpfam6.2/wormpep43_Hmmpfam_6.2 /nfs/wol2/people/zmasek/species_trees/tree_of_life_bin_1-4_species_list /nfs/wol2/people/zmasek/XrioTEST3 /nfs/wol2/people/zmasek/XrioTEST3/OUTFILE1 /nfs/wol2/people/zmasek/XrioTEST3/LOG1 + + + + + +use strict; + +use FindBin; +use lib $FindBin::Bin; +use rio_module; + + $RIO_PL = "rio.pl"; +my $VERSION = "3.000"; + +my $FASTA_DB = "/nfs/wol2/people/zmasek/DB/wormpep/wormpep43"; +my $QUERY_SPECIES = "CAEEL"; +my $SPECIES_TREE = $SPECIES_TREE_FILE_DEFAULT; + +my $RIOPL_OPTIONS = "T=B P=6 L=0 R=0 U=80 V=0 X=2 Y=2 Z=2 C E I"; + +my $TEMP_DIR = "/tmp/Xriopl"; # Where all the temp files, etc will be created. + +my %Species_names_hash = (); + +my $infile = ""; +my $outfile = ""; # Huge file of all rio outputs. +my $logfile = ""; # Lists all sequences which have been analyzed successfully. +my $output_directory = ""; +my $species_names_file = ""; + + +my $return_line = ""; +my $ID = ""; +my $pfam_name = ""; +my $E_value = 0; +my $score = 0; +my $GA = 0; +my $temp_dir = ""; +my $outname = ""; +my %outnames = (); +my $seqs = 0; +my $ii = 0; +my $time = 0; +my $successful = 0; +my $query_not_aligned = 0; +my $pwd_not_present = 0; +my $already_done = 0; +my $start_date = ""; +my $old_fh = ""; +my %AC_OS = (); # AC -> species name for TrEMBL seqs +my %AC_DE = (); # AC -> description for TrEMBL seqs + +my $description_line = ""; +my $message1 = ""; +my $message2 = ""; + +$start_date = `date`; + +if ( @ARGV != 5 ) { + &errorInCommandLine(); + exit ( -1 ); +} + +$infile = $ARGV[ 0 ]; +$species_names_file = $ARGV[ 1 ]; +$output_directory = $ARGV[ 2 ]; +$outfile = $ARGV[ 3 ]; +$logfile = $ARGV[ 4 ]; + + +if ( -e $outfile ) { + die "\n\n$0: <<$outfile>> already exists.\n\n"; +} +unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n\n$0: <<$infile>> does not exist, is empty, or is not a plain textfile.\n\n"; +} +unless ( ( -s $species_names_file ) && ( -f $species_names_file ) && ( -T $species_names_file ) ) { + die "\n\n$0: <<$species_names_file>> does not exist, is empty, or is not a plain textfile.\n\n"; +} +unless ( ( -s $TREMBL_ACDEOS_FILE ) && ( -f $TREMBL_ACDEOS_FILE ) && ( -T $TREMBL_ACDEOS_FILE ) ) { + die "\n\n$0: <<$TREMBL_ACDEOS_FILE>> does not exist, is empty, or is not a plain textfile.\n\n"; +} +unless ( ( -e $output_directory ) && ( -d $output_directory ) ) { + die "\n\n$0: <<$output_directory>> does not exist, or is not a directory.\n\n"; +} + + + +# Reads in the species file: +# -------------------------- +&readSpeciesNamesFile( $species_names_file ); + + + +# Reads in the file containing AC, DE and OS for TrEMBL seqs: +# ----------------------------------------------------------- +open( HH, "$TREMBL_ACDEOS_FILE" ) || die "\n\n$0: Unexpected error: Cannot open file <<$TREMBL_ACDEOS_FILE>>: $!\n\n"; +while ( $return_line = ) { + if ( $return_line =~ /(\S+);([^;]*);(\S+)/ ) { + $AC_OS{ $1 } = $3; + $AC_DE{ $1 } = $2; + } +} +close( HH ); + + + +# Reads in outnames in logfile, if present: +# ----------------------------------------- +if ( ( -s $logfile ) ) { + open( L, "$logfile" ) || die "\n\n$0: Unexpected error: Cannot open file <<$logfile>>: $!\n\n"; + while ( $return_line = ) { + if ( $return_line =~ /\s*(\S+)/ ) { + $outnames{ $1 } = 0; + } + } + close( L ); +} + + + +# Creates the temp directory: +# --------------------------- + +$ii = 0; + +$time = time; + +$temp_dir = $TEMP_DIR.$time.$ii; + +while ( -e $temp_dir ) { + $ii++; + $temp_dir = $TEMP_DIR.$time.$ii; +} + +mkdir( $temp_dir, 0777 ) +|| die "\n\n$0:Unexpected error: Could not create <<$temp_dir>>: $!\n\n"; + +unless ( ( -e $temp_dir ) && ( -d $temp_dir ) ) { + die "\n\n$0:Unexpected error: <<$temp_dir>> does not exist, or is not a directory: $!\n\n"; +} + + + +$message1 = "# $0\n". + "# Version : $VERSION\n". + "# Date started : $start_date". + "# Infile : $infile\n". + "# Species names file : $species_names_file\n". + "# Output directory : $output_directory\n". + "# Outfile : $outfile\n". + "# RIO PWD directory : $RIO_PWD_DIRECTORY\n". + "# RIO BSP directory : $RIO_BSP_DIRECTORY\n". + "# RIO NBD directory : $RIO_NBD_DIRECTORY\n". + "# RIO ALN directory : $RIO_ALN_DIRECTORY\n". + "# RIO HMM directory : $RIO_HMM_DIRECTORY\n". + "# Fasta db : $FASTA_DB\n". + "# Species of query : $QUERY_SPECIES\n". + "# Species tree : $SPECIES_TREE\n". + "# rio.pl options : $RIOPL_OPTIONS\n\n\n"; + +open( IN, "$infile" ) || die "\n\n$0: Cannot open file <<$infile>>: $!\n\n"; +open( LOG, ">> $logfile" ) || die "\n\n$0: Cannot open file <<$logfile>>: $!\n\n"; + + +# Turns off buffering for LOG. +$old_fh = select( LOG ); +$| = 1; +select( $old_fh ); + + +$ID = ""; + +W: while ( $return_line = ) { + + if ( $return_line =~ /^\s*>>.*(CE\d+)/ ) { + $ID = $1; + $return_line =~ /^\s*>>(.+)/; + $description_line = $1; + } + elsif ( $return_line =~ /^\s*\/\// ) { + $ID = ""; + } + elsif ( $return_line =~ /^\s*=(\S+)\s+.+\s+(\S+)\s+(\S+)\s+\S+\s*$/ + && $ID ne "" ) { + + $pfam_name = $1; + $score = $2; + $E_value = $3; + + $outname = $ID.".".$pfam_name; + + # Checks if already done. + if ( %outnames && exists( $outnames{ $outname } ) ) { + $already_done++; + next W; + } + + &executeHmmfetch( $PFAM_HMM_DB, $pfam_name, $temp_dir."/HMMFILE" ); + + $GA = &getGA1cutoff( $temp_dir."/HMMFILE" ); + unlink( $temp_dir."/HMMFILE" ); + + if ( $GA == 2000 ) { + die "\n\n$0: Unexpected error: No GA cutoff found for \"$pfam_name\".\n\n"; + } + elsif ( $score < $GA ) { + next W; + } + + if ( -s $output_directory."/".$outname ) { + unlink( $output_directory."/".$outname ); + } + + + $message1 .= "\n\n". + "# ############################################################################\n". + "# Annotation: $description_line\n". + "# HMM : $pfam_name\n". + "# score : $score\n". + "# E-value : $E_value\n"; + + + + unless ( ( -s $RIO_PWD_DIRECTORY.$pfam_name.$SUFFIX_PWD ) ) { + $pwd_not_present++; + $message1 .= "# No PWD file for this family.\n". + "# ############################################################################\n"; + next W; + } + + + unless ( ( -s $PFAM_SEED_DIRECTORY."/".$pfam_name ) && ( -f $PFAM_SEED_DIRECTORY."/".$pfam_name ) && ( -T $PFAM_SEED_DIRECTORY."/".$pfam_name ) ) { + die "\n\n$0: Error: Pfam seed alignment <<$PFAM_SEED_DIRECTORY"."/"."$pfam_name>> not present.\n\n"; + } + + + &getSequenceFromFastaFile( $FASTA_DB, + $temp_dir."/QUERY", + $ID ); + + &performRIO( $pfam_name, # A= + $temp_dir."/QUERY", # Q= + $output_directory."/".$outname, # O= + $ID."_".$QUERY_SPECIES, # N= + $SPECIES_TREE, # S= + $RIOPL_OPTIONS, # L=0 R=0 U=70 V=0 X=2 Y=2 Z=2 C E K I x + $temp_dir."/riopltempdir" ); # j= + + + + if ( -s $output_directory."/".$outname ) { + $successful++; + } + else { + $message1 .= "# Query has not been aligned (E value too low).\n". + "# ############################################################################\n"; + $query_not_aligned++; + } + + if ( unlink( $temp_dir."/QUERY" ) != 1 ) { + die "\n$0: Unexpected error: File(s) could not be deleted.\n"; + } + + + + if ( -s $output_directory."/".$outname ) { + open( OUT_MESG_ONE, ">$temp_dir/_message1_" ) || die "\n\n$0: Cannot create file \"$temp_dir/_message1_\": $!\n\n"; + print OUT_MESG_ONE ( $message1 ); + close( OUT_MESG_ONE ); + + $message1 = ""; + + open( OUT_MESG_TWO, ">$temp_dir/_message2_" ) || die "\n\n$0: Cannot create file \"$temp_dir/_message2_\": $!\n\n"; + print OUT_MESG_TWO ( "# Successful calculations : $successful\n" ); + print OUT_MESG_TWO ( "# No calculation due to absence of PWD file: $pwd_not_present\n" ); + print OUT_MESG_TWO ( "# Calculation already performed : $already_done\n" ); + print OUT_MESG_TWO ( "# ############################################################################\n" ); + close( OUT_MESG_TWO ); + + if ( -s $outfile ) { + system( "cat $outfile $temp_dir/_message1_ $output_directory/$outname $temp_dir/_message2_ > $outfile"."___" ) + && die "\n\n$0: Could not execute \"cat $outfile $temp_dir/_message1_ $output_directory/$outname $temp_dir/_message2_ > $outfile"."___\": $!\n\n"; + system( "mv", $outfile."___", $outfile ) + && die "\n\n$0: Could not execute \"mv $outfile"."___ $outfile\": $!\n\n"; + } + else { + system( "cat $temp_dir/_message1_ $output_directory/$outname $temp_dir/_message2_ > $outfile" ) + && die "\n\n$0: Could not execute \"cat $temp_dir/_message1_ $output_directory/$outname $temp_dir/_message2_ > $outfile\": $!\n\n"; + + } + + print LOG "$outname\n"; + + unlink( "$temp_dir/_message1_", "$temp_dir/_message2_" ); + + } + + + + } ## End of elsif ( $return_line =~ /^\s*=(\S+)\s+.+\s+(\S+)\s+(\S+)\s+\S+$/ && $ID ne "" ) + +} ## End of while ( $return_line = ) + +close( IN ); +close( LOG ); + + +open( OUT_MESG_TWO, ">$temp_dir/_message2_" ) || die "\n$0: Cannot create file \"$temp_dir/_message2_\": $!\n"; +print OUT_MESG_TWO ( "\n\n# Xrio.pl successfully terminated.\n" ); +print OUT_MESG_TWO ( "# Started : $start_date" ); +print OUT_MESG_TWO ( "# Terminated: ".`date`."\n" ); +print OUT_MESG_TWO ( "# Successful calculations : $successful\n" ); +print OUT_MESG_TWO ( "# No calculation due to absence of PWD file: $pwd_not_present\n" ); +print OUT_MESG_TWO ( "# Calculation already performed : $already_done\n\n" ); +close( OUT_MESG_TWO ); + +if ( -s $outfile ) { + if ( $message1 ne "" ) { + open( OUT_MESG_ONE, ">$temp_dir/_message1_" ) || die "\n$0: Cannot create file \"$temp_dir/_message1_\": $!\n"; + print OUT_MESG_ONE ( $message1 ); + close( OUT_MESG_ONE ); + system( "cat $outfile $temp_dir/_message1_ $temp_dir/_message2_ > $outfile"."___" ) + && die "$0: Could not execute \"cat $outfile $temp_dir/_message1_ $temp_dir/_message2_ > $outfile"."___\": $!"; + } + else { + system( "cat $outfile $temp_dir/_message2_ > $outfile"."___" ) + && die "$0: Could not execute \"cat $outfile $temp_dir/_message2_ > $outfile"."___\": $!"; + } + system( "mv", $outfile."___", $outfile ) + && die "$0: Could not execute \"mv $outfile"."___ $outfile\": $!"; +} +else { + open( OUT_MESG_ONE, ">$temp_dir/_message1_" ) || die "\n$0: Cannot create file \"$temp_dir/_message1_\": $!\n"; + print OUT_MESG_ONE ( $message1 ); + close( OUT_MESG_ONE ); + system( "cat $temp_dir/_message1_ $temp_dir/_message2_ > $outfile" ) + && die "$0: Could not execute \"cat $temp_dir/_message1_ $temp_dir/_message2_ > $outfile\": $!"; +} + +unlink( "$temp_dir/_message1_", "$temp_dir/_message2_" ); + +rmdir( $temp_dir ) || die "\n$0: Unexpected failure (could not remove: $temp_dir): $!\n"; + +print( "\n\nXrio.pl successfully terminated.\n" ); +print( "Successful calculations : $successful\n" ); +print( "No calculation due to absence of PWD file: $pwd_not_present\n" ); +print( "Calculation already performed : $already_done\n" ); +print( "Started : $start_date" ); +print( "Terminated: ".`date`."\n" ); +print( "\n" ); + +exit( 0 ); + + + +# Methods +# ------- + + + +# Gets the gathering cutoff per sequence from a HMM file. +# +# One argument: the HMM file name +# Returns the gathering cutoff per sequence, 2000 upon failure +# Last modified: 07/11/01 +sub getGA1cutoff { + + my $infile = $_[ 0 ]; + my $return_line = ""; + my $GA = 2000; + + &testForTextFilePresence( $infile ); + + open( H, "$infile" ) || die "\n\n$0: Unexpected error: Cannot open file <<$infile>>: $!"; + while ( $return_line = ) { + + if ( $return_line =~ /^GA\s+(\S+)/ ) { + $GA = $1; + close( H ); + return $GA; + } + + } + close( H ); + return $GA; + +} ## getGA1cutoff + + + + + +# 1. A= Name of Pfam family +# 2. Q= Query file +# 3. O= Output +# 4. N= query Name +# 5. S= Species tree file +# 6. more options, such I K m +# 7. j= Name for temporary directory +sub performRIO { + my $pfam_name = $_[ 0 ]; + my $query_file = $_[ 1 ]; + my $output_file = $_[ 2 ]; + my $name_for_query = $_[ 3 ]; + my $species_tree_file = $_[ 4 ]; + my $more_options = $_[ 5 ]; + my $tmp_file_rio = $_[ 6 ]; + + my $options_for_rio = ""; + + $options_for_rio .= ( " A=".$pfam_name ); + $options_for_rio .= ( " Q=".$query_file ); + $options_for_rio .= ( " O=".$output_file ); + $options_for_rio .= ( " N=".$name_for_query ); + $options_for_rio .= ( " S=".$species_tree_file ); + $options_for_rio .= ( " j=".$tmp_file_rio ); + $options_for_rio .= ( " ".$more_options ); + + system( "$RIO_PL 1 $options_for_rio" ) + && die "$0: performRIO: Could not execute \"$RIO_PL 1 $options_for_rio\": $!\n"; + +} ## performRIO + + + +# Reads in (SWISS-PROT) species names from a file. +# Names must be separated by newlines. +# Lines beginning with "#" are ignored. +# A possible "=" and everything after is ignored. +# One argument: species-names-file name +# Last modified: 04/24/01 +sub readSpeciesNamesFile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $species = ""; + + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + &Error( "\"$infile\" does not exist,\n is empty, or is not a plain textfile." ); + } + + open( IN_RSNF, "$infile" ) || die "\n\n$0: Unexpected error: Cannot open file <<$infile>>: $!"; + while ( $return_line = ) { + if ( $return_line !~ /^\s*#/ && $return_line =~ /(\S+)/ ) { + $species = $1; + $species =~ s/=.+//; + $Species_names_hash{ $species } = ""; + } + } + close( IN_RSNF ); + + return; +} ## readSpeciesNamesFile + + + +# Searches the > line of a multiple seq file for a +# query, saves the found entries. +# Three arguments: +# 1. multi Fasta file to search through +# 2. outputfile name +# 3. query +# Last modified: 03/05/01 +sub getSequenceFromFastaFile { + + my $inputfile = $_[ 0 ]; + my $outputfile = $_[ 1 ]; + my $query = $_[ 2 ]; + my $hits = 0; + + open( IN_GSFF, "$inputfile" ) + || die "\n$0: getSequenceFromFastaFile: Cannot open file <<$inputfile>>: $!\n"; + open( OUT_GSFF, ">$outputfile" ) + || die "\n$0: getSequenceFromFastaFile: Cannot create file <<$outputfile>>: $!\n"; + + + while ( $return_line = ) { + if ( $return_line =~ /^\s*>.*$query\s+/ ) { + $hits++; + print $return_line; + print OUT_GSFF $return_line; + $return_line = ; + while ( $return_line && $return_line =~ /^\s*[^>]/ ) { + print OUT_GSFF $return_line; + $return_line = ; + } + last; # In Wormpep there _are_ ambigous CE numbers. + } + + } + + close( IN_GSFF ); + close( OUT_GSFF ); + if ( $hits < 1 ) { + die "\n$0: getSequenceFromFastaFile: Unexpected error: <<$query>> not found.\n"; + } + if ( $hits > 1 ) { + die "\n$0: getSequenceFromFastaFile: Unexpected error: <<$query>> is ambigous.\n"; + } + +} ## getSequenceFromFastaFile + + + + +# Last modified: 03/08/01 +sub errorInCommandLine { + + print "\n"; + print " Xrio.pl $VERSION\n"; + print " -------\n"; + print "\n"; + print " Christian Zmasek (zmasek\@genetics.wustl.edu)\n"; + print "\n"; + print " Purpose. Runs \"rio.pl\" for each Pfam assignment in \"infile\".\n"; + print "\n"; + print " Usage. rio.pl \n"; + print "\n"; + print " infile: has the following format (defined per example):\n"; + print " >>4R79.1 CE19649 Zinc-binding metalloprotease domain (CAMBRIDGE) protein_id:CAB63429.1\n"; + print " =Astacin Astacin (Peptidase family M12A) 296.3 3.8e-85 1\n"; + print " //\n"; + print "\n"; + print " >>4R79.2 CE19650 Ras family (CAMBRIDGE) TR:Q9XXA4 protein_id:CAA20282.1\n"; + print " =ras Ras family 208.8 8.1e-59 1\n"; + print " =FA_desaturase Fatty acid desaturase 4.5 1.5 1\n"; + print " =UPF0117 Domain of unknown function DUF36 3.1 3.5 1\n"; + print " =arf ADP-ribosylation factor family -46.0 1.5e-05 1\n"; + print " //\n"; + print "\n"; + print " species names file: list of species to use for analysis.\n"; + print "\n"; + print " This version uses the CE number as identifier for output files.\n"; + print "\n"; + + exit( -1 ); + +} ## errorInCommandLine + + diff --git a/forester/archive/perl/bootstrapCounter.pl b/forester/archive/perl/bootstrapCounter.pl new file mode 100755 index 0000000..2aab587 --- /dev/null +++ b/forester/archive/perl/bootstrapCounter.pl @@ -0,0 +1,184 @@ +#!/usr/bin/perl -w +# +# bootstrapCounter.pl +# ------------------- +# +# Copyright (C) 2001 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Created: 04/04/01 +# +# Last modified 08/16/01 +# +# +# Objective. Determines the distribution of top orthology bootstrap values +# of a Xrio.pl output file. +# +# Usage. "bootstrapCounter.pl " +# +# Important. The result of this is meaningful ONLY if the thresholds +# for output of the RIO analysis are set to zero (L=0 R=0). +# +# Format for infile: +# ... +# +# # ############################################################################ +# # Annotation: B0511.6 CE17345 helicase (ST.LOUIS) TR:O61815 protein_id:AAC17654.1 +# # HMM : ABC_tran +# # score : -59.6 +# # E-value : 1.1 +# # Query has not been aligned (score lower than gathering cutoff). +# # ############################################################################ +# +# +# # ############################################################################ +# # Annotation: B0511.7 CE17346 (ST.LOUIS) TR:O61817 protein_id:AAC17655.1 +# # HMM : FHA +# # score : 71.6 +# # E-value : 1.7e-17 +# RIO - Resampled Inference of Orthologs +# Version: 1.000 +# ------------------------------------------------------------------------------ +# Alignment file: /tmp/Xriopl9846081980/Full-FHA +# Alignment : FHA domain +# HMM : FHA +# Query file : /tmp/Xriopl9846081980/__queryfile__ +# ============================================================================== +# +# Query : CE17346.FHA_CAEEL/45-114 +# +# Number (in %) of observed orthologies (o) and super orthologies (s) to query +# in bootstrapped trees, evolutionary distance to query: +# +# Sequence Description # o[%] s[%] distance +# -------- ----------- ---- ---- -------- +# YC67_MYCTU/308-372 - 20 14 1.577840 +# FRAH_ANASP/204-277 FRAH PROTEIN. 17 16 1.532670 +# ABA2_NICPL/557-633 ZEAXANTHIN EPOXIDASE PRECURSOR (EC 1.14.-.-). 14 11 1.885700 +# ABA2_LYCES/563-639 ZEAXANTHIN EPOXIDASE PRECURSOR (EC 1.14.-.-). 14 11 2.140000 +# +# +# +# Distance values (based on ML branch length values on consensus tree) +# -------------------------------------------------------------------- +# Given the thresholds for distance calculations: +# No sequence is considered orthologous to query. +# +# ... + + + +use strict; + +my $VERSION = 0.200; + +my $infile = ""; +my $outfile = ""; +my $return_line = ""; +my $results = 0; +my $o_bootstraps = 0; +my $s_bootstraps = 0; +my @o_bootstraps_array = (); +my @s_bootstraps_array = (); +my $total = 0; +my $i = 0; + + +if ( @ARGV != 2 ) { + &errorInCommandLine(); + exit ( -1 ); +} + +$infile = $ARGV[ 0 ]; +$outfile = $ARGV[ 1 ]; + +if ( -e $outfile ) { + die "\n$0: <<$outfile>> already exists.\n"; +} +unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: <<$infile>> does not exist, is empty, or is not a plain textfile.\n"; +} + + +open( IN, "$infile" ) || die "\n$0: Cannot open file <<$infile>>: $!\n"; + +$results = 0; +for ( $i = 0; $i <= 100; ++$i ) { + $s_bootstraps_array[ $i ] = $o_bootstraps_array[ $i ] = 0; +} + +while ( $return_line = ) { + + if ( $return_line =~ /^\s*--------\s+/ ) { + $results = 1; + } + elsif ( $return_line =~ /^\s*Distance\s+values\s+/i ) { + $results = 0; + } + elsif ( $results == 1 && $return_line =~ /^\s*!NO\s+ORTHOLOGS/ ) { + $o_bootstraps_array[ 0 ]++; + $s_bootstraps_array[ 0 ]++; + $total++; + $results = 0; + } + elsif ( $results == 1 && $return_line =~ /(\S+)\s+(\S+)\s+\S+\s*$/ ) { + $o_bootstraps = $1; + $s_bootstraps = $2; + $results = 0; + if ( $o_bootstraps > 100 || $s_bootstraps > 100 + || $o_bootstraps < 0 ) { + print "o bootstraps: $o_bootstraps\n"; + print "s bootstraps: $s_bootstraps\n"; + die "\n\n$0: Error: Boostrap value(s) out of range.\n\n"; + } + + $total++; + $o_bootstraps_array[ $o_bootstraps ]++; + $s_bootstraps_array[ $s_bootstraps ]++; + + } +} + +close( IN ); + + +open( OUT, ">$outfile" ) || die "\n$0: Cannot create file \"$outfile\": $!\n"; + +print OUT "bootstrapCounter.pl version: $VERSION\n\n"; +print OUT "Distribution of top bootstrap values\n\n"; +print OUT "Input file : $infile\n"; +print OUT "Output file: $outfile\n"; +print OUT "Date : ".`date`."\n"; +print OUT "Total: $total\n\n"; +print OUT "top-orthology-bootstraps vs. count:\n"; +for ( $i = 0; $i < @o_bootstraps_array; ++$i ) { + print OUT "$i $o_bootstraps_array[ $i ]\n"; +} +print OUT "\n\ntop-super-orthology-bootstraps vs. count:\n"; +for ( $i = 0; $i < @s_bootstraps_array; ++$i ) { + print OUT "$i $s_bootstraps_array[ $i ]\n"; +} +close( OUT ); + +print( "\nDone.\n\n" ); + +exit( 0 ); + + + +sub errorInCommandLine { + print "\n"; + print " bootstrapCounter.pl version: $VERSION\n"; + print " Usage: \"bootstrapCounter.pl \"\n"; + print " Important: The result of this is meaningful ONLY if the thresholds\n"; + print " for output of the RIO analysis are set to zero (L=0 R=0).\n"; + print "\n"; + exit( -1 ); +} + + diff --git a/forester/archive/perl/bootstrapSelector.pl b/forester/archive/perl/bootstrapSelector.pl new file mode 100755 index 0000000..ec6ce69 --- /dev/null +++ b/forester/archive/perl/bootstrapSelector.pl @@ -0,0 +1,291 @@ +#!/usr/bin/perl -w +# +# bootstrapSelector.pl +# -------------------- +# +# Copyright (C) 2001 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Created: 04/06/01 +# +# Last modified 09/24/01 +# +# +# Objective. Selection of RIO analysis results with top ortholgy +# bootstrap values greater or less than a threshold. +# +# Usage: "bootstrapSelector.pl " +# Options: "l" for "less or equal" ("grater or equal" is default) +# "c" for "all hits must meet threshold in case of +# multiple copies of the same domain in the query" +# (default: "at least one") +# Example: "bootstrapSelector.pl 95lc OUTFILE_At_1 At_1_out" +# +# Important. The result of this is meaningful ONLY if the thresholds +# for output of the RIO analysis are set to zero (L=0 R=0). +# +# +# Format for infile: +# +# ... +# +# # ############################################################################ +# # Annotation: B0511.6 CE17345 helicase (ST.LOUIS) TR:O61815 protein_id:AAC17654.1 +# # HMM : ABC_tran +# # score : -59.6 +# # E-value : 1.1 +# # Query has not been aligned (score lower than gathering cutoff). +# # ############################################################################ +# +# +# # ############################################################################ +# # Annotation: B0511.7 CE17346 (ST.LOUIS) TR:O61817 protein_id:AAC17655.1 +# # HMM : FHA +# # score : 71.6 +# # E-value : 1.7e-17 +# RIO - Resampled Inference of Orthologs +# Version: 1.000 +# ------------------------------------------------------------------------------ +# Alignment file: /tmp/Xriopl9846081980/Full-FHA +# Alignment : FHA domain +# HMM : FHA +# Query file : /tmp/Xriopl9846081980/__queryfile__ +# ============================================================================== +# +# Query : CE17346.FHA_CAEEL/45-114 +# +# Number (in %) of observed orthologies (o) and super orthologies (s) to query +# in bootstrapped trees, evolutionary distance to query: +# +# Sequence Description # o[%] s[%] distance +# -------- ----------- ---- ---- -------- +# YC67_MYCTU/308-372 - 20 14 1.577840 +# FRAH_ANASP/204-277 FRAH PROTEIN. 17 16 1.532670 +# ABA2_NICPL/557-633 ZEAXANTHIN EPOXIDASE PRECURSOR (EC 1.14.-.-). 14 11 1.885700 +# ABA2_LYCES/563-639 ZEAXANTHIN EPOXIDASE PRECURSOR (EC 1.14.-.-). 14 11 2.140000 +# +# +# +# Distance values (based on ML branch length values on consensus tree) +# -------------------------------------------------------------------- +# Given the thresholds for distance calculations: +# No sequence is considered orthologous to query. +# +# ... + + + +use strict; + +my $VERSION = 1.000; +my $threshold = 0; +my $infile = ""; +my $outfile = ""; +my $summary_outfile = ""; +my $return_line = ""; +my $identifier = ""; +my $top1 = ""; +my $analysis_performed = 0; +my $reading = 0; +my $i = 0; +my @lines = (); +my $larger = 1; +my $complete = 0; +my $total = 0; + +if ( @ARGV != 3 ) { + &errorInCommandLine(); + exit ( -1 ); +} + +$threshold = $ARGV[ 0 ]; +$infile = $ARGV[ 1 ]; +$outfile = $ARGV[ 2 ]; +$summary_outfile = $outfile.".short"; + +if ( -e $outfile ) { + die "\n$0: <<$outfile>> already exists.\n"; +} +unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: <<$infile>> does not exist, is empty, or is not a plain textfile.\n"; +} + + +if ( $threshold =~ /l/ ) { + $larger = 0; + $threshold =~ s/l//; +} +if ( $threshold =~ /c/ ) { + $complete = 1; + $threshold =~ s/c//; +} + +open( IN, "$infile" ) || die "\n$0: Cannot open file <<$infile>>: $!\n"; + +open( OUT, ">$outfile" ) || die "\n$0: Cannot create file \"$outfile\": $!\n"; +open( OUT_SUMMARY, ">$summary_outfile" ) || die "\n$0: Cannot create file \"$summary_outfile\": $!\n"; + +print OUT "bootstrapSelector.pl version: $VERSION\n\n"; +print OUT "Selection of RIO analysis results with top ortholgy\n"; +print OUT "bootstrap values greater or less than a threshold.\n\n"; +if ( $larger == 1 ) { + print OUT "Threshold : Grater than or equal to $threshold\n"; +} +else { + print OUT "Threshold : Less than or equal to $threshold\n"; +} +print OUT "In case of multiple copies of the same domain in the query:\n"; +if ( $complete == 1 ) { + print OUT "All hits must meet threshold.\n"; +} +else { + print OUT "At least one hit must meet threshold.\n"; +} +print OUT "Input file : $infile\n"; +print OUT "Output file : $outfile\n"; +print OUT "Output file short: $summary_outfile\n"; +print OUT "Date : ".`date`."\n\n\n"; + +while ( $return_line = ) { + + if ( $return_line =~ /^\s*# Annotation:\s*(.+)/ ) { + $identifier = $1; + $identifier = substr( $identifier, 0, 60); + $analysis_performed = 0; + $reading = 1; + $i = 0; + @lines = (); + } + + if ( $reading == 1 && $return_line =~ /^\s*RIO/ ) { + $analysis_performed = 1; + } + + if ( $reading == 1 + && $return_line =~ /^\s*# ####################################/ ) { + if ( $analysis_performed == 1 ) { + &analyze(); + } + $reading = 0; + } + + if ( $reading == 1 ) { + $lines[ $i++ ] = $return_line; + } +} + +close( IN ); + +print OUT "\n\nTotal: $total\n"; + +close( OUT ); +close( OUT_SUMMARY ); + +print "\nTotal: $total\n"; +print "Done.\n\n"; + +exit( 0 ); + + +sub analyze { + my $j = 0; + my $results = 0; + my $o_bootstraps = 0; + $top1 = ""; + + for ( $j = 0; $j < $i; $j++ ) { + + if ( $lines[ $j ] =~ /^\s*--------\s+/ ) { + $results = 1; + } + elsif ( $lines[ $j ] =~ /^\s*Distance\s+values\s+/i ) { + $results = 0; + } + elsif ( $results == 1 + && ( $lines[ $j ] =~ /\S+\s+\S+\s+\S+\s*$/ + || $lines[ $j ] =~ /^\s*!NO\s+ORTHOLOGS/ ) ) { + + if ( $lines[ $j ] =~ /^\s*!NO\s+ORTHOLOGS/ ) { + $o_bootstraps = 0; + } + else { + $lines[ $j ] =~ /(\S+)\s+\S+\s+\S+\s*$/; + $o_bootstraps = $1; + if ( $top1 eq "" ) { + $top1 = $lines[ $j ]; + $top1 =~ s/\n//; + $top1 =~ s/\s{2,}/ /g; + } + } + + $results = 0; + + if ( $o_bootstraps > 100 || $o_bootstraps < 0 ) { + print "o bootstraps: $o_bootstraps\n"; + die "\n\n$0: Error: Boostrap value(s) out of range.\n\n"; + } + + if ( $larger == 1 ) { + if ( $complete != 1 && $o_bootstraps >= $threshold ) { + &writeout(); + $total++; + return; + } + elsif ( $complete == 1 && $o_bootstraps < $threshold ) { + return; + } + } + else { + if ( $complete != 1 && $o_bootstraps <= $threshold ) { + &writeout(); + $total++; + return; + } + elsif ( $complete == 1 && $o_bootstraps > $threshold ) { + return; + } + } + } + } + if ( $complete == 1 ) { + &writeout(); + $total++; + } + return; +} + + + +sub writeout { + my $j = 0; + print OUT "# ############################################################################\n"; + for ( $j = 0; $j < $i; ++$j ) { + print OUT "$lines[ $j ]"; + } + print OUT "# ############################################################################\n\n\n"; + print OUT_SUMMARY "$identifier [top 1: $top1]\n\n"; +} + + + +sub errorInCommandLine { + print "\n"; + print " bootstrapCounter.pl version: $VERSION\n"; + print " Usage: \"bootstrapSelector.pl \"\n"; + print " Options: \"l\" for \"less or equal\" (\"grater or equal\" is default)\n"; + print " \"c\" for \"all hits must meet threshold in case of\n"; + print " multiple copies of the same domain in the query\"\n"; + print " (default: \"at least one\")\n"; + print " Example:\n"; + print " \"bootstrapSelector.pl 95lc OUTFILE_At_1 At_1_out\"\n\n"; + print " Important: The result of this is meaningful ONLY if the thresholds\n"; + print " for output of the RIO analysis are set to zero (L=0 R=0).\n\n"; + exit( -1 ); +} + + diff --git a/forester/archive/perl/bootstrap_cz.pl b/forester/archive/perl/bootstrap_cz.pl new file mode 100755 index 0000000..0c020a5 --- /dev/null +++ b/forester/archive/perl/bootstrap_cz.pl @@ -0,0 +1,325 @@ +#!/usr/bin/perl -w + +# bootstrap_cz.pl +# --------------- +# Copyright (C) 1999-2003 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Created: 05/17/01 +# +# Last modified 08/26/03 +# +# Purpose: +# Bootstrap resamples an alignment in PHYLIP sequential format +# times. +# Amino acid sequences must only be represented by uppercase letters (A-Z) +# and '-'. +# In mode 0 it saves the positions which it used to create the +# bootstrapped alignment into . +# Mode 1 allows to recreate exactly the same boostrapped alignment +# by reading in a . +# Sequence names are normalized to $LENGTH_OF_NAME characters. +# The output alignment is in PHYLIP's sequential or interleaved format. +# (These two are the same in this case, since all the seqs will be one +# line in length (no returns in seq).) +# +# Usage: +# bootstrap_cz.pl +# +# [random number seed (mode 0 only)] +# + +use strict; +use FindBin; +use lib $FindBin::Bin; + +use rio_module; + +my $VERSION = "2.001"; + +my $modus = -1; # 0 to create pos. file, 1 to use premade pos. file +my $bootstraps = -1; +my $infile = ""; +my $outalign_file = ""; +my $positions_file = ""; +my $seed = -1; + + +$modus = $ARGV[ 0 ]; +$bootstraps = $ARGV[ 1 ]; +$infile = $ARGV[ 2 ]; +$outalign_file = $ARGV[ 3 ]; +$positions_file = $ARGV[ 4 ]; +$seed = $ARGV[ 5 ]; + +if ( @ARGV != 5 && @ARGV != 6 ) { + &printUsage(); + exit( -1 ); +} + +if ( $modus != 0 && $modus != 1 ) { + &printUsage(); + exit( -1 ); +} + +if ( $modus == 0 && @ARGV != 6 ) { + &printUsage(); + exit( -1 ); +} + +if ( $modus == 1 && @ARGV != 5 ) { + &printUsage(); + exit( -1 ); +} + +if ( $bootstraps < 1 ) { + &printUsage(); + exit( -1 ); +} + +if ( $seed && $seed < 0 ) { + &printUsage(); + exit( -1 ); +} + + +unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n\nbootstrap_cz.pl: \"$infile\" does not exist, is empty, or is not a plain textfile.\n\n"; +} +if ( -e $outalign_file ) { + die "\n\nbootstrap_cz.pl: \"$outalign_file\" already exists.\n\n"; +} + +if ( $modus == 0 ) { + if ( -e $positions_file ) { + die "\n\nbootstrap_cz.pl: \"$positions_file\" already exists.\n\n"; + } +} +else { + unless ( ( -s $positions_file ) && ( -f $positions_file ) && ( -T $positions_file ) ) { + die "\n\nbootstrap_cz.pl: \"$positions_file\" does not exist, is empty, or is not a plain textfile.\n\n"; + } +} + +if ( $modus == 0 ) { + &bootstrap( $modus, $bootstraps, $infile, $outalign_file, $positions_file, $seed ); +} +else { + &bootstrap( $modus, $bootstraps, $infile, $outalign_file, $positions_file ); +} + + +exit( 0 ); + + + +# Methods +# ------- + + +# Five/six arguemnts: +# 1. Mode: 0 to create pos. file, 1 to use premade pos. file +# 2. bootstraps +# 3. Alignment infile name +# 4. Outfile name +# 5. file name for positions file (created if mode is 0, read if mode is 1) +# [6. If modus is 0: seed for random number generator] +# +# This method is very similar to method "pfam2phylip" "in makeTree.pl". +# +# Last modified: 05/17/01 +# +sub bootstrap { + + my $modus = $_[ 0 ]; + my $bootstraps = $_[ 1 ]; + my $infile = $_[ 2 ]; + my $outalign_file = $_[ 3 ]; + my $positions_file = $_[ 4 ]; + + my @seq_name = (); + my @seq_array = (); + my @random_numbers = (); + my $return_line = ""; + my $seq = ""; + my $x = 0; + my $y = 0; + my $seq_no = 0; + my $original_length = 0; + my $max_x = 0; + my $n = 0; + my $i = 0; + my $random = -1; + my $length = 0; + my $number_of_seqs = 0; + my $number_of_colm = 0; + + + # Checks the arguments + # -------------------- + + if ( $modus == 0 ) { + if ( !$_[ 5 ] ) { + die "\n\n$0: bootstrap: Failed to give a seed for random number generator.\n\n"; + } + srand( $_[ 5 ] ); + } + elsif( $modus == 1 ) { + if ( $_[ 5 ] ) { + die "\n\n$0: bootstrap: Must not give a seed for random number generator.\n\n"; + } + unless ( ( -s $positions_file ) && ( -f $positions_file ) && ( -T $positions_file ) ) { + die "\n\n$0: bootstrap: <<$positions_file>> does not exist, is empty, or is not a plain textfile.\n\n"; + } + } + else { + die "\n\n$0: bootstrap: modus must be either 0 or 1.\n\n"; + } + + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n\n$0: bootstrap: <<$infile>> does not exist, is empty, or is not a plain textfile.\n\n"; + } + + + + # Reads in the alignment + # ---------------------- + + open( IN, "$infile" ) || die "\n$0: bootstrap: Cannot open file <<$infile>>: $!"; + while ( $return_line = ) { + + if ( $return_line =~ /^\s*(\d+)\s+(\d+)/ ) { + $number_of_seqs = $1; + $number_of_colm = $2; + } + elsif ( $return_line =~ /^(\S+)\s+(\S+)/ ) { + $seq_name[ $seq_no ] = substr( $1, 0, $LENGTH_OF_NAME ); + $seq = $2; + if ( $original_length == 0 ) { + $original_length = length( $seq ); + } + elsif ( $original_length != length( $seq ) ) { + die "\n\n$0: Sequences do not have the same length.\n\n"; + } + for ( $x = 0; $x < $original_length; $x++ ) { + $seq_array[ $x ][ $seq_no ] = substr( $seq, $x, 1 ); + } + $seq_no++; + } + } + close( IN ); + + if ( ( $number_of_seqs != $seq_no ) + || ( $number_of_colm != $original_length ) ) { + die "\n\n$0: Number of sequences or number of columns are inconsisten with the values given in the alignment.\n\n"; + } + + # Adusts the length of the names to $LENGTH_OF_NAME + # ------------------------------------------------- + + for ( $y = 0; $y < $seq_no; $y++ ) { + $length = length( $seq_name[ $y ] ); + for ( $i = 0; $i <= ( $LENGTH_OF_NAME - $length - 1 ); $i++ ) { + $seq_name[ $y ] .= " "; + } + } + + + + # Bootstraps $bootstraps times and writes the outputfiles + # ------------------------------------------------------- + + open( OUT, ">$outalign_file" ) || die "\n\n$0: bootstrap: Cannot create file <<$outalign_file>>: $!"; + if ( $modus == 0 ) { + open( OUT_P, ">$positions_file" ) || die "\n\n$0: bootstrap: Cannot create file <<$positions_file>>: $!"; + } + else { + open( IN_P, "$positions_file" ) || die "\n\n$0: bootstrap: Cannot open file <<$positions_file>>: $!"; + } + + for ( $n = 0; $n < $bootstraps; $n++ ) { + + if ( $modus == 0 ) { + for ( $x = 0; $x < $original_length; $x++ ) { + $random = int( rand( $original_length ) ); + print OUT_P "$random "; + $random_numbers[ $x ] = $random; + } + print OUT_P "\n"; + } + else { + $return_line = ; + if ( !$return_line || $return_line !~ /\d/ ) { + die "\n\n$0: bootstrap: <<$positions_file>> seems too short or otherwise unsuitable.\n\n"; + } + $return_line =~ s/^\s+//; + $return_line =~ s/\s+$//; + @random_numbers = split( /\s+/, $return_line ); + if ( scalar( @random_numbers ) != $original_length ) { + die "\n\n$0: bootstrap: <<$positions_file>> seems not to correspond to <<$infile>>.\n\n"; + } + } + + print OUT " $seq_no $original_length\n"; + + for ( $y = 0; $y < $seq_no; $y++ ) { + print OUT "$seq_name[ $y ]"; + + for ( $x = 0; $x < $original_length; $x++ ) { + $random = $random_numbers[ $x ]; + if ( !$seq_array[ $random ][ $y ] || $seq_array[ $random ][ $y ] !~ /[A-Z]|-/ ) { + die "\n\n$0: Sequence must be represented by uppercase letters A-Z and \"-\" only.\n\n"; + } + print OUT $seq_array[ $random ][ $y ]; + } + print OUT "\n"; + } + } + + close( OUT ); + + if ( $modus == 0 ) { + print OUT_P "\n"; + close( OUT_P ); + } + else { + close( IN_P ); + } + + return; + +} ## bootstrap + + + +sub printUsage { + print "\n"; + print " bootstrap_cz.pl $VERSION\n"; + print " ---------------\n"; + print "\n"; + print " Christian Zmasek (zmasek\@genetics.wustl.edu)\n"; + print "\n"; + print " Purpose:\n"; + print " Bootstrap resamples an alignment in PHYLIP sequential format\n"; + print " times.\n"; + print " In mode 0 it saves the positions which it used to create the\n"; + print " bootstrapped alignment into .\n"; + print " Mode 1 allows to recreate exactly the same boostrapped alignment\n"; + print " by reading in a .\n"; + print " Sequence names are normalized to $LENGTH_OF_NAME characters.\n"; + print " The output alignment is in PHYLIP's sequential or interleaved format.\n"; + print " (These two are the same in this case, since all the seqs will be one\n"; + print " line in length (no returns in seq).)\n"; + print "\n"; + print " Usage:\n"; + print " bootstrap_cz.pl \n"; + print " \n"; + print " [random number seed (mode 0 only)]\n"; + print "\n"; +} ## printUsage + diff --git a/forester/archive/perl/countSpeciesSPTrEMBL.pl b/forester/archive/perl/countSpeciesSPTrEMBL.pl new file mode 100755 index 0000000..1e9a626 --- /dev/null +++ b/forester/archive/perl/countSpeciesSPTrEMBL.pl @@ -0,0 +1,150 @@ +#!/usr/bin/perl -W + +# countSpeciesSPTrEMBL.pl +# ----------------------- +# +# Copyright (C) 2003 Christian M. Zmasek +# All rights reserved +# +# Created: 02/27/03 +# Last modified: 02/27/03 +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified 05/23/02 + +# Purpose. Counts species in SWISS-PROT and TrEMBL. +# +# Usage. countSpeciesSPTrEMBL.pl +# + + +use strict; + + +my $VERSION = "1.000"; +my $infile_sp = ""; +my $infile_tr = ""; +my $outfile = ""; + +my $return_line = ""; +my $read = 0; +my $os = ""; +my %species_count = (); # full name -> count. + + +if ( @ARGV != 3 ) { + &errorInCommandLine(); +} + +$infile_tr = $ARGV[ 0 ]; +$infile_sp = $ARGV[ 1 ]; +$outfile = $ARGV[ 2 ]; + + + +if ( -e $outfile ) { + die "\n$0: <<$outfile>> already exists.\n\n"; +} +unless ( ( -s $infile_tr ) && ( -f $infile_tr ) && ( -T $infile_tr ) ) { + die "\n$0: <$infile_tr>> does not exist, is empty, or is not a plain textfile.\n\n"; +} +unless ( ( -s $infile_sp ) && ( -f $infile_sp ) && ( -T $infile_sp ) ) { + die "\n$0: <<$infile_sp>> does not exist, is empty, or is not a plain textfile.\n\n"; +} + +open( IN_TR, "$infile_tr" ) || die "\n$0: Cannot open file <<$infile_tr>>: $!\n"; +open( IN_SP, "$infile_sp" ) || die "\n$0: Cannot open file <<$infile_sp>>: $!\n"; +open( OUT, ">$outfile" ) || die "\n$0: Cannot create file <<$outfile>>: $!\n"; + + +$read = 0; + +while ( $return_line = ) { + if ( $return_line =~ /^AC\s+(\S+);/ ) { + $read = 1; + } + elsif ( $return_line =~ /^OS\s+(.+)\.\s*$/ && $read == 1 ) { + $os = $1; + $os =~ s/\(.+\)//g; + $os =~ s/^\s+//; + $os =~ s/\s+$//; + $os =~ s/\.$//; + if ( exists( $species_count{ $os } ) ) { + $species_count{ $os } = $species_count{ $os } + 1; + } + else { + $species_count{ $os } = 1; + } + print "$os\n"; + } + elsif ( $return_line =~ /^\/\// && $read == 1 ) { + $read = 0; + $os = ""; + } +} + +close( IN_TR ); + +$read = 0; +$os = ""; +$return_line = ""; + +while ( $return_line = ) { + if ( $return_line =~ /^ID\s+(\S+)/ ) { + $read = 1; + } + elsif ( $return_line =~ /^OS\s+(.+)\s*$/ && $read == 1 ) { + $os = $1; + $os =~ s/\(.+//g; + $os =~ s/^\s+//; + $os =~ s/\s+$//; + $os =~ s/\.$//; + $read = 0; + if ( exists( $species_count{ $os } ) ) { + $species_count{ $os } = $species_count{ $os } + 1; + } + else { + $species_count{ $os } = 1; + } + print "$os\n"; + } + elsif ( $return_line =~ /^\/\// && $read == 1 ) { + $read = 0; + $os = ""; + } +} + +close( IN_SP ); + + +foreach my $species ( sort { $species_count{ $b } <=> $species_count{ $a } } keys %species_count ) { + print OUT "$species: $species_count{$species}\n"; +} + + +print "\n\nDone!\n\n"; + +close( OUT ); + +exit( 0 ); + + + + + + +sub errorInCommandLine { + print "\n"; + print " countSpeciesSPTrEMBL.pl $VERSION\n"; + print " -----------------------\n"; + print "\n"; + print " Christian Zmasek (zmasek\@genetics.wustl.edu)\n"; + print "\n"; + print " Purpose. Counts species in SWISS-PROT and TrEMBL.\n"; + print "\n"; + print " Usage. countSpeciesSPTrEMBL.pl \n"; + print "\n"; + exit( -1 ); +} diff --git a/forester/archive/perl/extractSWISS-PROT.pl b/forester/archive/perl/extractSWISS-PROT.pl new file mode 100755 index 0000000..7bcfec0 --- /dev/null +++ b/forester/archive/perl/extractSWISS-PROT.pl @@ -0,0 +1,176 @@ +#!/usr/bin/perl -W + +# extractSWISS-PROT.pl +# -------------------- +# +# Copyright (C) 2001 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Created: 09/25/01 +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified 05/23/02 + +# Purpose. Extracts ID, DE, and species from a "sprot.dat" file. +# The output is used by "rio.pl". +# If a species list (format: SWISS-PROT-code=full name) is supplied: +# only sequences from species found in this list are written to +# outfile (recommended). +# +# Usage. extractSWISS-PROT.pl [species list] + +# Remark. Need to re-run this if species in species tree or species list +# are added/changed or if a new version of Pfam is used!! + + +use strict; + + +my $VERSION = "1.001"; +my $infile = ""; +my $outfile = ""; +my $speciesfile = ""; +my $return_line = ""; +my $read = 0; +my $ac = ""; +my $de = ""; +my $os = ""; +my %Species_names = (); # SWISS-PROT name -> "". +my $i = 0; + +if ( @ARGV != 2 && @ARGV != 3 ) { + &errorInCommandLine(); +} + +$infile = $ARGV[ 0 ]; +$outfile = $ARGV[ 1 ]; + +if ( @ARGV == 3 ) { + $speciesfile = $ARGV[ 2 ]; + unless ( ( -s $speciesfile ) && ( -f $speciesfile ) && ( -T $speciesfile ) ) { + die "\n$0: <<$speciesfile>> does not exist, is empty, or is not a plain textfile.\n\n"; + } + &readSpeciesNamesFile( $speciesfile ); +} + +if ( -e $outfile ) { + die "\n$0: <<$outfile>> already exists.\n\n"; +} +unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: <<$infile>> does not exist, is empty, or is not a plain textfile.\n\n"; +} + +open( IN, "$infile" ) || die "\n$0: Cannot open file <<$infile>>: $!\n"; +open( OUT, ">$outfile" ) || die "\n$0: Cannot create file <<$outfile>>: $!\n"; + +print OUT "# extractTrembl.pl version: $VERSION\n"; +print OUT "# trembl.dat file: $infile\n"; +print OUT "# output file : $outfile\n"; +print OUT "# species file : $speciesfile\n"; +print OUT "# date : ".`date`."\n\n"; + +$read = 0; + +while ( $return_line = ) { + if ( $return_line =~ /^ID\s+(\S+)/ ) { + $ac = $1; + $read = 1; + if ( $ac =~ /[A-Z0-9]+_([A-Z0-9]+)/ ) { + $os = $1; + } + else { + die "\n$0: Unexpected format: $ac.\n\n"; + } + if ( $speciesfile ne "" ) { + unless ( exists( $Species_names{ $os } ) ) { + $read = 0; + $ac = ""; + $de = ""; + $os = ""; + next; + } + } + } + elsif ( $return_line =~ /^DE\s+(.+)/ && $read == 1 ) { + if ( $de ne "" ) { + $de .= " ".$1; + } + else { + $de = $1; + } + } + elsif ( $return_line =~ /^\/\// && $read == 1 ) { + $read = 0; + print OUT "$ac;$de;$os\n"; + $ac = ""; + $de = ""; + $os = ""; + $i++; + } +} + +close( IN ); + +print OUT "\n # $i entries.\n"; + +close( OUT ); + +exit( 0 ); + + + +# Reads in species file. +# Format: SWISS-PROT=full name (e.g. "BACSU=Bacillus subtilis") +# Lines beginning with "#" are ignored. +# One argument: species file-name +# Last modified: 04/24/01 +sub readSpeciesNamesFile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $sp = ""; + my $full = ""; + + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: readSpeciesNamesFile: <<$infile>> does not exist, is empty, or is not a plain textfile.\n"; + } + + open( IN_RSNF, "$infile" ) || die "\n$0: Cannot open file <<$infile>>: $!\n"; + while ( $return_line = ) { + if ( $return_line !~ /^\s*#/ && $return_line =~ /(\S+)=(.+)/ ) { + $sp = $1; + $full = $2; + $full =~ s/^\s+//; + $full =~ s/\s+$//; + $Species_names{ $sp } = ""; + } + } + close( IN_RSNF ); + + return; +} + + + +sub errorInCommandLine { + print "\n"; + print " extractSWISS-PROT.pl $VERSION\n"; + print " --------------------\n"; + print "\n"; + print " Christian Zmasek (zmasek\@genetics.wustl.edu)\n"; + print "\n"; + print " Purpose. Extracts ID, DE, and species from a \"sprot.dat\" file.\n"; + print " The resulting output is used by \"rio.pl\".\n"; + print " If a species list (format: SWISS-PROT-code=full name) is supplied:\n"; + print " only sequences from species found in this list are written to\n"; + print " outfile (recommended).\n"; + print "\n"; + print " Usage. extractSWISS-PROT.pl [species list]\n"; + print "\n"; + print " Remark. Need to re-run this if species in species tree or species list\n"; + print " are added/changed or if a new version of Pfam is used!!\n"; + print "\n\n"; + exit( -1 ); +} diff --git a/forester/archive/perl/extractSpecies.pl b/forester/archive/perl/extractSpecies.pl new file mode 100755 index 0000000..32a40de --- /dev/null +++ b/forester/archive/perl/extractSpecies.pl @@ -0,0 +1,113 @@ +#!/usr/bin/perl -W + +# extractSpecies.pl +# ---------------- +# +# Copyright (C) 2003 Christian M. Zmasek +# All rights reserved +# +# Created: 09/03/03 +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified 03/12/04 (Added gg) + +# Purpose. Adds species information to a file describing a phylogenetic +# tree in the following format (by way of example): +# "((ceINX_CE33055:0.02883,cbINX_CB09748:0.02934):0.36899[&&NHX:B=100],..." +# ce stands for "CAEEL". The hash %SPECIES needs to be set accordingly. +# + + +use strict; + + +my %SPECIES = ( + "dm" => "DROME", + "ag" => "ANOGA", + "ce" => "CAEEL", + "cb" => "CAEBR", + "ci" => "CIOIN", + "fr" => "FUGRU", + "gg" => "CHICK", + "rn" => "RAT", + "mm" => "MOUSE", + "hs" => "HUMAN" + ); + + +my $infile = ""; +my $outfile = ""; +my $intree = ""; +my $return_line = ""; + +if ( @ARGV != 1 && @ARGV != 2 ) { + &errorInCommandLine(); +} + +$infile = $ARGV[ 0 ]; + +if ( @ARGV == 1 ) { + $outfile = $infile; + $outfile =~ s/\.nhx$//; + $outfile .= "_species.nhx"; +} + +if ( @ARGV == 2 ) { + $outfile = $ARGV[ 1 ]; +} + + + + +if ( -e $outfile ) { + die "\n$0: <<$outfile>> already exists.\n\n"; +} +unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: <<$infile>> does not exist, is empty, or is not a plain textfile.\n\n"; +} + +open( IN, "$infile" ) || die "\n$0: Cannot open file <<$infile>>: $!\n"; +open( OUT, ">$outfile" ) || die "\n$0: Cannot create file <<$outfile>>: $!\n"; + +while ( $return_line = ) { + $return_line =~ s/\s+//g; + $return_line =~ s/\+/_/g; + + $intree .= $return_line; + +} + +close( IN ); + +while ( ( my $short, my $long ) = each ( %SPECIES ) ) { + + while ( $intree =~ /[(),]($short[^\[]+?)[(),]/ ) { + + my $name_and_length = $1; + + print "$name_and_length -> $name_and_length\[\&\&NHX:S=$long\]\n"; + + $intree =~ s/$name_and_length/$name_and_length\[&&NHX:S=$long\]/; + + } + +} + +print OUT $intree; + +close( OUT ); + +print "\n\nDone!\n\n"; + +exit( 0 ); + + + +sub errorInCommandLine { + print "\n"; + print "extractSpecies.pl infile [outfile]"; + print "\n\n"; + exit( -1 ); +} diff --git a/forester/archive/perl/extractTrembl.pl b/forester/archive/perl/extractTrembl.pl new file mode 100755 index 0000000..fadf216 --- /dev/null +++ b/forester/archive/perl/extractTrembl.pl @@ -0,0 +1,199 @@ +#!/usr/bin/perl -W + +# extractTrembl.pl +# ---------------- +# +# Copyright (C) 2001 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Created: 04/24/01 +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified 05/23/02 + +# Purpose. Extracts AC, DE, and OS from a "trembl.dat" file. +# The output is used by "rio.pl". +# If a species list (format: SWISS-PROT-code=full name) is supplied: +# only sequences from species found in this list are written to +# outfile and their full species names replaced with their SWISS-PROT +# code (recommended). +# +# Usage. extractTrembl.pl [species list] + +# Remark. Need to re-run this if species in species tree or species list +# are added/changed or if a new version of Pfam is used!! + +# Some "heuristic" is required for Synechococcus, Synechocystis, Anabaena: +# see below. + +use strict; + + +my $VERSION = "1.001"; +my $infile = ""; +my $outfile = ""; +my $speciesfile = ""; +my $return_line = ""; +my $read = 0; +my $ac = ""; +my $de = ""; +my $os = ""; +my %Species_names = (); # full name -> SWISS-PROT name. +my $i = 0; + +if ( @ARGV != 2 && @ARGV != 3 ) { + &errorInCommandLine(); +} + +$infile = $ARGV[ 0 ]; +$outfile = $ARGV[ 1 ]; + +if ( @ARGV == 3 ) { + $speciesfile = $ARGV[ 2 ]; + unless ( ( -s $speciesfile ) && ( -f $speciesfile ) && ( -T $speciesfile ) ) { + die "\n$0: <<$speciesfile>> does not exist, is empty, or is not a plain textfile.\n\n"; + } + &readSpeciesNamesFile( $speciesfile ); +} + +if ( -e $outfile ) { + die "\n$0: <<$outfile>> already exists.\n\n"; +} +unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: <<$infile>> does not exist, is empty, or is not a plain textfile.\n\n"; +} + +open( IN, "$infile" ) || die "\n$0: Cannot open file <<$infile>>: $!\n"; +open( OUT, ">$outfile" ) || die "\n$0: Cannot create file <<$outfile>>: $!\n"; + +print OUT "# extractTrembl.pl version: $VERSION\n"; +print OUT "# trembl.dat file: $infile\n"; +print OUT "# output file : $outfile\n"; +print OUT "# species file : $speciesfile\n"; +print OUT "# date : ".`date`."\n\n"; + +$read = 0; + +while ( $return_line = ) { + if ( $return_line =~ /^AC\s+(\S+);/ ) { + $ac = $1; + $read = 1; + } + elsif ( $return_line =~ /^DE\s+(.+)/ && $read == 1 ) { + if ( $de ne "" ) { + $de .= " ".$1; + } + else { + $de = $1; + } + } + + elsif ( $return_line =~ /^OS\s+(.+)\.\s*$/ && $read == 1 ) { + $os = $1; + if ( $speciesfile ne "" + && ( $os =~ /Synechococcus/ + || $os =~ /Synechocystis/ + || $os =~ /Anabaena/ ) ) { + if ( $os =~ /PCC\s*(\d+)/ ) { + $os = "PCC ".$1; + } + else { + $read = 0; + $ac = ""; + $de = ""; + $os = ""; + next; + } + } + else { + $os =~ s/\(.+\)//g; + } + $os =~ s/^\s+//; + $os =~ s/\s+$//; + if ( $speciesfile ne "" ) { + unless ( exists( $Species_names{ $os } ) ) { + $read = 0; + $ac = ""; + $de = ""; + $os = ""; + next; + } + $os = $Species_names{ $os }; + } + } + elsif ( $return_line =~ /^\/\// && $read == 1 ) { + $read = 0; + print OUT "$ac;$de;$os\n"; + $ac = ""; + $de = ""; + $os = ""; + $i++; + } +} + +close( IN ); + +print OUT "\n # $i entries.\n"; + +close( OUT ); + +exit( 0 ); + + + +# Reads in species file. +# Format: SWISS-PROT=full name (e.g. "BACSU=Bacillus subtilis") +# Lines beginning with "#" are ignored. +# One argument: species file-name +# Last modified: 04/24/01 +sub readSpeciesNamesFile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $sp = ""; + my $full = ""; + + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: readSpeciesNamesFile: <<$infile>> does not exist, is empty, or is not a plain textfile.\n"; + } + + open( IN_RSNF, "$infile" ) || die "\n$0: Cannot open file <<$infile>>: $!\n"; + while ( $return_line = ) { + if ( $return_line !~ /^\s*#/ && $return_line =~ /(\S+)=(.+)/ ) { + $sp = $1; + $full = $2; + $full =~ s/^\s+//; + $full =~ s/\s+$//; + $Species_names{ $full } = $sp; + } + } + close( IN_RSNF ); + + return; +} + + + +sub errorInCommandLine { + print "\n"; + print " extractTrembl.pl $VERSION\n"; + print " ----------------\n"; + print "\n"; + print " Christian Zmasek (zmasek\@genetics.wustl.edu)\n"; + print "\n"; + print " Purpose. Extracts AC, DE, and OS from a \"trembl.dat\" file.\n"; + print " The resulting output is used by \"rio.pl\".\n"; + print " If a species list (format: SWISS-PROT-code=full name) is supplied:\n"; + print " only sequences from species found in this list are written to\n"; + print " outfile and their full species names replaced with their SWISS-PROT\n"; + print " code (recommended).\n"; + print "\n"; + print " Usage. extractTrembl.pl [species list]\n"; + print "\n"; + print " Remark. Need to re-run this if species in species tree or species list\n"; + print " are added/changed or if a new version of Pfam is used!!\n"; + print "\n\n"; + exit( -1 ); +} diff --git a/forester/archive/perl/file_proc.pl b/forester/archive/perl/file_proc.pl new file mode 100755 index 0000000..0122778 --- /dev/null +++ b/forester/archive/perl/file_proc.pl @@ -0,0 +1,52 @@ +#!/usr/bin/perl -w + +my $in = $ARGV[ 0 ]; +my $out = $ARGV[ 1 ]; + +if ( -e $out ) { + print "File $out already exists.\n"; + exit( -1 ); +} + +if ( !-e $in ) { + print "File $in does not exist.\n"; + exit( -1 ); +} + +open( IN, $in ) ; +open ( OUT, ">>$out" ) || die ( "Could not open file $out for writing!\n" ); + +while ( my $line = ) { + my $newline = &proc_line( $line ); + if ( length( $newline ) > 0 ) { + print OUT $newline; + } +} + + +close( OUT ) or die( "can't close $out: $!" ); +close( IN ) or die( "can't close $in: $!" ); + +sub proc_line { + my $line = shift; + + + if ( $line =~ /^#/ ) { + return ""; + } + if ( $line =~ /^Predicted coding sequence\(s\):/ ) { + return ""; + } + elsif ( $line =~ /^>.*_aa\s*$/ ) { + return ""; + } + elsif ( $line =~ /^>/ ) { + return $line; + } + elsif ( $line !~ /[a-z]/ ) { + return ""; + } + else { + return $line;; + } +} diff --git a/forester/archive/perl/forester.pm b/forester/archive/perl/forester.pm new file mode 100755 index 0000000..3494fd5 --- /dev/null +++ b/forester/archive/perl/forester.pm @@ -0,0 +1,1428 @@ +# $Id: forester.pm,v 1.26 2010/12/13 19:00:22 cmzmasek Exp $ +# +# FORESTER -- software libraries and applications +# for evolutionary biology research and applications. +# +# Copyright (C) 2007-2009 Christian M. Zmasek +# Copyright (C) 2007-2009 Burnham Institute for Medical Research +# All rights reserved +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +# +# Contact: phylosoft @ gmail . com +# WWW: www.phylosoft.org/forester +# +# +# + + +package forester; +use strict; +require Exporter; + +our $VERSION = 1.000; + +our @ISA = qw( Exporter ); + +our @EXPORT = qw( executeConsense + executePhyloPl + executePuzzleDQO + executePuzzleDQObootstrapped + pfam2phylipMatchOnly + startsWithSWISS_PROTname + isPfamSequenceLine + isPfamCommentLine + containsPfamNamedSequence + isRFline + executeProtpars + setModelForPuzzle + setRateHeterogeneityOptionForPuzzle + setParameterEstimatesOptionForPuzzle + executePuzzleBootstrapped + executePuzzle + executeFastme + executeNeighbor + executeFitch + executeBionj + executeWeighbor + executePhyml + executeHmmfetch + addDistsToQueryToPWDfile + testForTextFilePresence + exitWithWarning + dieWithUnexpectedError + addSlashAtEndIfNotPresent + $LENGTH_OF_NAME + $MIN_NUMBER_OF_AA + $TREMBL_ACDEOS_FILE + $SWISSPROT_ACDEOS_FILE + $SPECIES_NAMES_FILE + $SPECIES_TREE_FILE_DEFAULT + $MULTIPLE_TREES_FILE_SUFFIX + $LOG_FILE_SUFFIX + $ALIGN_FILE_SUFFIX + $TREE_FILE_SUFFIX + $ADDITION_FOR_RIO_ANNOT_TREE + $SUFFIX_PWD + $SUFFIX_BOOT_STRP_POS + $MULTIPLE_PWD_FILE_SUFFIX + $SUFFIX_PWD_NOT_BOOTS + $SUFFIX_HMM + $MATRIX_FOR_PWD + $RIO_PWD_DIRECTORY + $RIO_BSP_DIRECTORY + $RIO_NBD_DIRECTORY + $RIO_ALN_DIRECTORY + $RIO_HMM_DIRECTORY + $PFAM_FULL_DIRECTORY + $PFAM_SEED_DIRECTORY + $PRIOR_FILE_DIR + $PFAM_HMM_DB + $FORESTER_JAR + $SEQBOOT + $NEIGHBOR + $PROTPARS + $CONSENSE + $PROML + $PHYLIP_VERSION + $PUZZLE + $PUZZLE_VERSION + $FASTME + $FASTME_VERSION + $BIONJ + $BIONJ_VERSION + $WEIGHBOR + $WEIGHBOR_VERSION + $RAXML + $RAXML_VERSION + $PHYML + $PHYML_VERSION + $HMMALIGN + $HMMSEARCH + $HMMBUILD + $HMMFETCH + $SFE + $HMMCALIBRATE + $P7EXTRACT + $MULTIFETCH + $BOOTSTRAP_CZ + $BOOTSTRAP_CZ_PL + $SUPPORT_TRANSFER + $SUPPORT_STATISTICS + $NEWICK_TO_PHYLOXML + $PHYLO_PL + $RIO_PL + $DORIO + $PUZZLE_DQO + $BOOTSTRAPS + $PATH_TO_FORESTER + $JAVA + $NODE_LIST + $RIO_SLAVE_DRIVER + $RIO_SLAVE + $TEMP_DIR_DEFAULT + $EXPASY_SPROT_SEARCH_DE + $EXPASY_SPROT_SEARCH_AC + ); + + + + +# ============================================================================= +# ============================================================================= +# +# THESE VARIABLES ARE ENVIRONMENT DEPENDENT, AND NEED TO BE SET ACCORDINGLY +# BY THE USER +# ------------------------------------------------------------------------- +# + +# For using just "phylo_pl.pl", only the following variables need to be set +# $JAVA +# $FORESTER_JAR +# $TEMP_DIR_DEFAULT +# $SEQBOOT +# $CONSENSE +# $PUZZLE +# $FASTME +# $NEIGHBOR +# $FITCH +# $BIONJ +# $WEIGHBOR +# $PHYML +# $PROTPARS + +# Software directory: +# --------------------- + +our $SOFTWARE_DIR = "/home/czmasek/SOFTWARE/"; + + +# Java virtual machine: +# --------------------- +our $JAVA = $SOFTWARE_DIR."JAVA/jdk1.6.0_03/bin/java"; + + +# Where all the temporary files can be created: +# --------------------------------------------- +our $TEMP_DIR_DEFAULT = "/tmp/"; + + +# Programs from Joe Felsenstein's PHYLIP package: +# ----------------------------------------------- +our $SEQBOOT = $SOFTWARE_DIR."PHYLIP/phylip-3.68/src/seqboot"; +our $NEIGHBOR = $SOFTWARE_DIR."PHYLIP/phylip-3.68/src/neighbor"; +our $PROTPARS = $SOFTWARE_DIR."PHYLIP/phylip-3.68/src/protpars"; +our $PROML = $SOFTWARE_DIR."PHYLIP/phylip-3.68/src/proml"; +our $FITCH = $SOFTWARE_DIR."PHYLIP/phylip-3.68/src/fitch"; +our $CONSENSE = $SOFTWARE_DIR."PHYLIP/phylip-3.68/src/consense"; +our $PHYLIP_VERSION = "3.68"; + +# TREE-PUZZLE: +# ------------ +our $PUZZLE = $SOFTWARE_DIR."TREE_PUZZLE/tree-puzzle-5.2/src/puzzle"; +our $PUZZLE_VERSION = "5.2"; + +# FASTME: +# ----------------------------------------------------- +our $FASTME = $SOFTWARE_DIR."FASTME/fastme2.0/fastme"; +our $FASTME_VERSION = "2.0"; + +# BIONJ: +# ----------------------------------------------------- +our $BIONJ = $SOFTWARE_DIR."BIONJ/bionj"; +our $BIONJ_VERSION = "[1997]"; + +# WEIGHBOR: +# ----------------------------------------------------- +our $WEIGHBOR = $SOFTWARE_DIR."WEIGHBOR/Weighbor/weighbor"; +our $WEIGHBOR_VERSION = "1.2.1"; + +# PHYML: +# ----------------------------------------------------- +our $PHYML = $SOFTWARE_DIR."PHYML/phyml_v2.4.4/exe/phyml_linux"; +our $PHYML_VERSION = "2.4.4"; + +# RAXML: +# ----------------------------------------------------- +our $RAXML = $SOFTWARE_DIR."RAXML/RAxML-7.0.4/raxmlHPC"; +our $RAXML_VERSION = "7.0.4"; + + +# forester.jar. This jar file is currently available at: http://www.phylosoft.org +# ------------------------------------------------------------------------------- + +our $FORESTER_JAR = $SOFTWARE_DIR."FORESTER/DEV/forester-atv/java/forester.jar"; + + + +# End of variables which need to be set by the user for using "phylo_pl.pl". + + + + + + + + + + + + + + +# Tool from forester.jar to transfer support values: +# ------------------------------------------------- +our $SUPPORT_TRANSFER = $JAVA." -cp $FORESTER_JAR org.forester.application.support_transfer"; + + + +# Tool from forester.jar for simple statistics for support values: +# ---------------------------------------------------------------- +our $SUPPORT_STATISTICS = $JAVA." -cp $FORESTER_JAR org.forester.application.support_statistics"; + + +# Tool from forester.jar to transfer nh to phyloXML: +# ------------------------------------------------- +our $NEWICK_TO_PHYLOXML = $JAVA." -cp $FORESTER_JAR org.forester.application.phyloxml_converter"; + + + +# FORESTER itself (currently not needed for "phylo_pl.pl"): +# --------------------------------------------------------- +our $PATH_TO_FORESTER = ""; + + +# Pfam data (not needed for phylo_pl.pl): +# -------------------------------------- +our $PFAM_FULL_DIRECTORY = "/path/to/Pfam/Full/"; +our $PFAM_SEED_DIRECTORY = "/path/to/Pfam/Seed/"; +our $PFAM_HMM_DB = "/path/to/Pfam/Pfam_ls"; # Need to run "hmmindex" on this + # to produce .ssi file. + # Then, for example + # "setenv HMMERDB /home/rio/pfam-6.6/" + + +$PATH_TO_FORESTER = &addSlashAtEndIfNotPresent( $PATH_TO_FORESTER ); + + +# Description lines and species from SWISS-PROT and TrEMBL (not needed for phylo_pl.pl): +# ------------------------------------------------------------------------------------- +our $TREMBL_ACDEOS_FILE = $PATH_TO_FORESTER."data/trembl22_ACDEOS_1-6"; + +our $SWISSPROT_ACDEOS_FILE = $PATH_TO_FORESTER."data/sp40_ACDEOS_1-6"; + + + +# Names of species which can be analyzed and analyzed +# against (must also be in tree $SPECIES_TREE_FILE_DEFAULT). +# By using a list with less species, RIO analyses become faster +# but lose phylogenetic resolution. +# For many purposes, list "tree_of_life_bin_1-6_species_list" +# in "data/species/" might be sufficient: +# (not needed for phylo_pl.pl) +# -------------------------------------------------------------- +our $SPECIES_NAMES_FILE = $PATH_TO_FORESTER."data/species/tree_of_life_bin_1-6_species_list"; + + + +# A default species tree in NHX format. +# For many purposes, tree "tree_of_life_bin_1-6.nhx" +# in "data/species/" might be fine: +# (not needed for phylo_pl.pl) +# -------------------------------------------------- +our $SPECIES_TREE_FILE_DEFAULT = $PATH_TO_FORESTER."data/species/tree_of_life_bin_1-6.nhx"; + + + +# Data for using precalculated distances: +# (not needed for phylo_pl.pl) +# --------------------------------------- +our $MATRIX_FOR_PWD = 2; # The matrix which has been used for the pwd in $RIO_PWD_DIRECTORY. + # 0=JTT, 1=PAM, 2=BLOSUM 62, 3=mtREV24, 5=VT, 6=WAG. + +our $RIO_PWD_DIRECTORY = $PATH_TO_FORESTER."example_data/"; # all must end with "/" +our $RIO_BSP_DIRECTORY = $PATH_TO_FORESTER."example_data/"; +our $RIO_NBD_DIRECTORY = $PATH_TO_FORESTER."example_data/"; +our $RIO_ALN_DIRECTORY = $PATH_TO_FORESTER."example_data/"; +our $RIO_HMM_DIRECTORY = $PATH_TO_FORESTER."example_data/"; + + + +# +# End of variables which need to be set by the user. +# +# ============================================================================= +# ============================================================================= + + + + + +$TEMP_DIR_DEFAULT = &addSlashAtEndIfNotPresent( $TEMP_DIR_DEFAULT ); +$PFAM_FULL_DIRECTORY = &addSlashAtEndIfNotPresent( $PFAM_FULL_DIRECTORY ); +$PFAM_SEED_DIRECTORY = &addSlashAtEndIfNotPresent( $PFAM_SEED_DIRECTORY ); + + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# These variables should normally not be changed: +# + +our $PRIOR_FILE_DIR = $PATH_TO_FORESTER."data/priors_for_hmmbuild/"; + # Directory containing dirichlet prior + # files needed for certain aligments + # by hmmbuild (e.g. Collagen). + + + + + +# TREE-PUZZLE: +our $PUZZLE_DQO = $PATH_TO_FORESTER."puzzle_dqo/src/puzzle"; + +# HMMER: +our $HMMALIGN = $PATH_TO_FORESTER."hmmer/binaries/hmmalign"; +our $HMMSEARCH = $PATH_TO_FORESTER."hmmer/binaries/hmmsearch"; +our $HMMBUILD = $PATH_TO_FORESTER."hmmer/binaries/hmmbuild"; +our $HMMFETCH = $PATH_TO_FORESTER."hmmer/binaries/hmmfetch"; +our $SFE = $PATH_TO_FORESTER."hmmer/binaries/sfetch"; +our $HMMCALIBRATE = $PATH_TO_FORESTER."hmmer/binaries/hmmcalibrate"; + +our $P7EXTRACT = $PATH_TO_FORESTER."perl/p7extract.pl"; +our $MULTIFETCH = $PATH_TO_FORESTER."perl/multifetch.pl"; + + +# RIO/FORESTER: +our $BOOTSTRAP_CZ = $PATH_TO_FORESTER."C/bootstrap_cz"; +our $BOOTSTRAP_CZ_PL = $PATH_TO_FORESTER."perl/bootstrap_cz.pl"; +#our $SUPPORT_TRANSFER = $JAVA." -cp $PATH_TO_FORESTER"."java forester.tools.transfersBranchLenghts"; +#our $SUPPORT_TRANSFER = $JAVA." -cp /home/czmasek/SOFTWARE/FORESTER/forester3/forester.jar org.forester.tools.SupportTransfer"; + +our $PHYLO_PL = $PATH_TO_FORESTER."perl/phylo_pl.pl"; +our $RIO_PL = $PATH_TO_FORESTER."perl/rio.pl"; +our $DORIO = $JAVA." -cp $PATH_TO_FORESTER"."java forester.tools.DoRIO"; +# parallel RIO: +our $RIO_SLAVE_DRIVER = $PATH_TO_FORESTER."perl/rio_slave_driver.pl"; +our $RIO_SLAVE = $PATH_TO_FORESTER."perl/rio_slave.pl"; +our $NODE_LIST = $PATH_TO_FORESTER."data/node_list.dat"; + +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +our $BOOTSTRAPS = 100; +our $MIN_NUMBER_OF_AA = 20; # After removal of gaps, if less, gaps are not removed. +our $LENGTH_OF_NAME = 10; + + + + +our $MULTIPLE_TREES_FILE_SUFFIX = ".mlt"; +our $LOG_FILE_SUFFIX = ".log"; +our $ALIGN_FILE_SUFFIX = ".aln"; +our $TREE_FILE_SUFFIX = ".nhx"; +our $ADDITION_FOR_RIO_ANNOT_TREE = ".rio"; +our $SUFFIX_PWD = ".pwd"; +our $MULTIPLE_PWD_FILE_SUFFIX = ".mpwd"; +our $SUFFIX_BOOT_STRP_POS = ".bsp"; +our $SUFFIX_PWD_NOT_BOOTS = ".nbd"; +our $SUFFIX_HMM = ".hmm"; + +our $EXPASY_SPROT_SEARCH_DE = "http://www.expasy.org/cgi-bin/sprot-search-de?"; +our $EXPASY_SPROT_SEARCH_AC = "http://www.expasy.org/cgi-bin/sprot-search-ac?"; + + + +# One argument: input multiple trees file +# Last modified: 07/05/01 +sub executeConsense { + my $in = $_[ 0 ]; + + &testForTextFilePresence( $in ); + + system( "$CONSENSE >/dev/null 2>&1 << ! +$in +Y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$CONSENSE $in\"" ); + + return; +} + + + +# Four arguments: +# 1. options ("-" is not necessary) +# 2. alignment or pwd file +# 3. outfile +# 4. temp dir +# Last modified: 07/05/01 +sub executePhyloPl { + + my $opts = $_[ 0 ]; + my $B = $_[ 1 ]; + my $C = $_[ 2 ]; + my $D = $_[ 3 ]; + + &testForTextFilePresence( $B ); + + $opts = "-".$opts; + + system( "$PHYLO_PL $opts $B $C $D" ) + && &dieWithUnexpectedError( "Could not execute \"$PHYLO_PL $opts $B $C $D\"" ); + +} ## executePhyloPl + + + + +# Two arguments: +# 1. Name of inputfile +# 2. matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +sub executePuzzleDQO { + my $in = $_[ 0 ]; + my $matrix_option = $_[ 1 ]; + my $mat = ""; + + &testForTextFilePresence( $in ); + + $mat = setModelForPuzzle( $matrix_option ); + + system( "$PUZZLE_DQO $in >/dev/null 2>&1 << !$mat +y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$PUZZLE_DQO\"" ); + + return; + +} ## executePuzzleDQO + + + + +# Two arguments: +# 1. Name of inputfile +# 2. matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# Last modified: 01/28/02 +sub executePuzzleDQObootstrapped { + my $in = $_[ 0 ]; + my $matrix_option = $_[ 1 ]; + + + my $l = 0; + my $slen = 0; + my $counter = 0; + my $mat = ""; + my $a = ""; + my @a = (); + + &testForTextFilePresence( $in ); + + open( GRP, "<$in" ) || &dieWithUnexpectedError( "Cannot open file \"$in\"" ); + while( ) { + if ( $_ =~ /^\s*\d+\s+\d+\s*$/ ) { + $counter++; + } + } + close( GRP ); + + $l = `cat $in | wc -l`; + $slen = $l / $counter; + + system( "split -$slen $in $in.splt." ) + && &dieWithUnexpectedError( "Could not execute \"split -$slen $in $in.splt.\"" ); + + @a = <$in.splt.*>; + + $mat = setModelForPuzzle( $matrix_option ); + + foreach $a ( @a ) { + + system( "$PUZZLE_DQO $a >/dev/null 2>&1 << !$mat +y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$PUZZLE_DQO $a\"" ); + + system( "cat $a.dist >> $in.dist" ) + && &dieWithUnexpectedError( "Could not execute \"cat outdist >> $in.dist\"" ); + + unlink( $a, $a.".dist" ); + } + + return; + +} ## executePuzzleDQObootstrapped + + + +# Transfers a Pfam (SELEX) alignment to a +# PHYLIP sequential style alignment. +# It only writes "match columns" as indicated by the +# "# RF" line ('x' means match). +# +# Three arguments: +# 1. infile name +# 2. outfile name +# 3. 1 to NOT ensure that match states contain only 'A'-'Z' or '-' +# +# Returns the number of match states (=length of output alignment), +# the length of the input alignment, +# the number of seqs in the input alignment +# +# Last modified: 07/07/01 +# +sub pfam2phylipMatchOnly { + + my $infile = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $ne = $_[ 2 ]; + my @seq_name = (); + my @seq_array = (); + my $return_line = ""; + my $seq = ""; + my $x = 0; + my $y = 0; + my $i = 0; + my $x_offset = 0; + my $max_x = 0; + my $rf_y = 0; + my $number_colum = 0; + my $not_ensure = 0; + my $saw_rf_line = 0; + + if ( $ne && $ne == 1 ) { + $not_ensure = 1; + } + + &testForTextFilePresence( $infile ); + + open( INPP, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + + # This reads in the first block. It reads in the seq names. + while ( 1 ) { + if ( &isPfamSequenceLine( $return_line ) ) { + $return_line =~ /^(\S+)\s+(\S+)/; + $seq_name[ $y ] = substr( $1, 0, $LENGTH_OF_NAME ); + $seq = $2; + for ( $x = 0; $x < length( $seq ); $x++ ) { + $seq_array[ $x ][ $y ] = substr( $seq, $x, 1 ); + } + $y++; + } + elsif ( &isRFline( $return_line ) ) { + $saw_rf_line = 1; + $return_line =~ /\s+(\S+)\s*$/; + $seq = $1; + $x_offset = length( $seq ); + $rf_y = $y; + for ( $x = 0; $x < $x_offset; $x++ ) { + $seq_array[ $x ][ $rf_y ] = substr( $seq, $x, 1 ); + } + last; + } + + $return_line = ; + + if ( !$return_line ) { + &dieWithUnexpectedError( "Alignment not in expected format (no RF line)" ); + } + } + + if ( $saw_rf_line != 1 ) { + &dieWithUnexpectedError( "Alignment not in expected format (no RF line)" ); + } + + $y = 0; + $max_x = 0; + + # This reads all blocks after the 1st one. + while ( $return_line = ) { + if ( &isPfamSequenceLine( $return_line ) ) { + $return_line =~ /^\S+\s+(\S+)/; + $seq = $1; + for ( $x = 0; $x < length( $seq ); $x++ ) { + $seq_array[ $x + $x_offset ][ $y % $rf_y ] = substr( $seq, $x, 1 ); + } + $y++; + } + elsif ( &isRFline( $return_line ) ) { + if ( $y != $rf_y ) { + &dieWithUnexpectedError( "Alignment not in expected format" ); + } + + $return_line =~ /\s+(\S+)\s*$/; + $seq = $1; + $max_x = length( $seq ); + + for ( $x = 0; $x < length( $seq ); $x++ ) { + $seq_array[ $x + $x_offset ][ $rf_y ] = substr( $seq, $x, 1 ); + } + + $y = 0; + $x_offset = $x_offset + $max_x; + $max_x = 0; + } + } + + close( INPP ); + + # Counts the match states, and hence the number of aa in the alignment: + for ( $x = 0; $x < $x_offset; $x++ ) { + if ( !$seq_array[ $x ][ $rf_y ] ) { + &dieWithUnexpectedError( "Alignment not in expected format" ); + } + if ( $seq_array[ $x ][ $rf_y ] eq 'x' ) { + $number_colum++; + } + } + + # Writes the file: + + open( OUTPP, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + print OUTPP "$rf_y $number_colum\n"; + for ( $y = 0; $y < $rf_y; $y++ ) { + print OUTPP "$seq_name[ $y ]"; + for ( $i = 0; $i < ( $LENGTH_OF_NAME - length( $seq_name[ $y ] ) ); $i++ ) { + print OUTPP " "; + } + for ( $x = 0; $x < $x_offset; $x++ ) { + if ( $seq_array[ $x ][ $rf_y ] eq 'x' ) { + if ( !$seq_array[ $x ][ $y ] ) { + &dieWithUnexpectedError( "Alignment not in expected format" ); + } + if ( $not_ensure != 1 && $seq_array[ $x ][ $y ] !~ /[A-Z]|-/ ) { + &dieWithUnexpectedError( "Alignment not in expected format (match states must only contain 'A'-'Z' or '-')" ); + } + print OUTPP "$seq_array[ $x ][ $y ]"; + } + } + print OUTPP "\n"; + } + close( OUTPP ); + + return $number_colum, $x_offset, $rf_y; + +} ## pfam2phylipMatchOnly + + + +# Returns whether the argument (a String) +# starts with a SWISS-PROT name (SEQN_SPECI). +# Last modified: 06/21/01 +sub startsWithSWISS_PROTname { + return ( $_[ 0 ] =~ /^[A-Z0-9]{1,4}_[A-Z0-9]{1,5}/ ); +} + + + +# Returns whether the argument starts with XXX.. XXXXX.. and the first +# character is not a "#". +# Last modified: 06/21/01 +sub isPfamSequenceLine { + return( !&isPfamCommentLine( $_[ 0 ] ) + && &containsPfamNamedSequence( $_[ 0 ] ) ); +} + + + +# Returns whether the argument does start with a "#". +# Last modified: 06/21/01 +sub isPfamCommentLine { + return ( $_[ 0 ] =~ /^#/ ); +} + + + +# Returns whether the argument starts with XXX XXXXX. +# Last modified: 06/21/01 +sub containsPfamNamedSequence { + return ( $_[ 0 ] =~ /^\S+\s+\S+/ ); +} + + +# Returns whether the argument starts with XXX XXXXX. +# Last modified: 06/21/01 +sub isRFline { + return ( $_[ 0 ] =~ /^#.*RF/ ); +} + + + +# Three arguments: +# 1. pairwise distance file +# 2. number of bootstraps +# 3. initial tree: BME, GME or NJ +# Last modified: 2008/12/31 +sub executeFastme { + my $inpwd = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $init_opt = $_[ 2 ]; + + &testForTextFilePresence( $inpwd ); + my $command = ""; + if ( $bs > 0 ) { + $command = "$FASTME -b $init_opt -i $inpwd -n $bs -s b"; + } + else { + $command = "$FASTME -b $init_opt -i $inpwd -s b"; + } + print $command; + + system( $command ); + + +} ## executeFastme + + +# Four arguments: +# 1. pairwise distance file +# 2. number of bootstraps +# 3. seed for random number generator +# 4. lower-triangular data matrix? 1: yes; no, otherwise +sub executeNeighbor { + my $inpwd = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $s = $_[ 2 ]; + my $l = $_[ 3 ]; + my $multi = ""; + my $lower = ""; + + &testForTextFilePresence( $inpwd ); + + if ( $bs >= 2 ) { + $multi = " +M +$bs +$s"; + } + if ( $l == 1 ) { + $lower = " +L"; + } + + system( "$NEIGHBOR >/dev/null 2>&1 << ! +$inpwd$multi$lower +2 +3 +Y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$NEIGHBOR $inpwd$multi$lower\"" ); + +} ## executeNeighbor + + +# Seven arguments: +# 1. pairwise distance file +# 2. number of bootstraps +# 3. seed for random number generator +# 4. number of jumbles for input order +# 5. lower-triangular data matrix? 1: yes; no, otherwise +# 6. FM for Fitch-Margoliash, ME for ME# 6. +# 7. 1 to use globale rearragements +sub executeFitch { + my $inpwd = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $s = $_[ 2 ]; + my $j = $_[ 3 ]; + my $l = $_[ 4 ]; + my $m = $_[ 5 ]; + my $use_global_rearr = $_[ 6 ]; + my $jumble = ""; + my $multi = ""; + my $lower = ""; + my $method = ""; + + my $global = ""; + if ( $use_global_rearr == 1 ) { + $global = " +G"; + } + + &testForTextFilePresence( $inpwd ); + + if ( $m eq "FM" ) { + $method = ""; + } + elsif ( $m eq "ME" ) { + $method = " +D"; + } + else { + &dieWithUnexpectedError( "method for FITCH must be either FM or ME" ); + } + + if ( $j >= 1 ) { + $jumble = " +J +$s +$j"; + } + + if ( $bs >= 2 ) { + $multi = " +M +$bs +$s"; + } + if ( $l == 1 ) { + $lower = " +L"; + } + + # jumble must be set BEFORE multi! + system( "$FITCH 2>&1 << ! +$inpwd$method$global$jumble$multi$lower +3 +Y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$FITCH $inpwd$method$global$jumble$multi$lower\"" ); + # 3: Do NOT print out tree + +} ## executeFitch + + + +# Two arguments: +# 1. pairwise distance file +# 2. outfile +sub executeBionj { + my $inpwd = $_[ 0 ]; + my $out = $_[ 1 ]; + + &testForTextFilePresence( $inpwd ); + my $command = "$BIONJ $inpwd $out"; + + system( $command ) + && &dieWithUnexpectedError( $command ); + +} + +# Four arguments: +# 1. (effective) sequence length +# 2. (effective) number of bases +# 3. pairwise distance file +# 4. outfile +sub executeWeighbor { + my $L = $_[ 0 ]; + my $b = $_[ 1 ]; + my $i = $_[ 2 ]; + my $o = $_[ 3 ]; + + &testForTextFilePresence( $i ); + my $command = "$WEIGHBOR -L $L -b $b -i $i -o $o"; + + system( $command ) + && &dieWithUnexpectedError( $command ); + +} + +# Six arguments: +# 1. DNA or Amino-Acids sequence filename (PHYLIP format) +# 2. number of data sets to analyse (ex:3) +# 3. Model: JTT | MtREV | Dayhoff | WAG | VT | DCMut | Blosum62 (Amino-Acids) +# 4. number of relative substitution rate categories (ex:4), positive integer +# 5. starting tree filename (Newick format), your tree filename | BIONJ for a distance-based tree +# 6. 1 to estimate proportion of invariable sites, otherwise, fixed proportion "0.0" is used +# PHYML produces several results files : +# _phyml_lk.txt : likelihood value(s) +# _phyml_tree.txt : inferred tree(s) +# _phyml_stat.txt : detailed execution stats +sub executePhyml { + my $sequences = $_[ 0 ]; + my $data_sets = $_[ 1 ]; + my $model = $_[ 2 ]; + my $nb_categ = $_[ 3 ]; + my $tree = $_[ 4 ]; + my $estimate_invar_sites = $_[ 5 ]; + + if ( $data_sets < 1 ) { + $data_sets = 1 + } + + my $invar = "0.0"; # proportion of invariable sites, + # a fixed value (ex:0.0) | e to get the maximum likelihood estimate + if ( $estimate_invar_sites == 1 ) { + $invar = "e"; + } + + my $data_type = "1"; # 0 = DNA | 1 = Amino-Acids + my $format = "i"; # i = interleaved sequence format | s = sequential + my $bootstrap_sets = "0"; # number of bootstrap data sets to generate (ex:2) + # only works with one data set to analyse + + my $alpha = "e"; # gamma distribution parameter, + # a fixed value (ex:1.0) | e to get the maximum likelihood estimate + + my $opt_topology = "y"; # optimise tree topology ? y | n + my $opt_lengths = "y"; # optimise branch lengths and rate parameters ? y | n + + if ( $data_sets > 1 ) { + # No need to calc branch lengths for bootstrapped analysis + $opt_lengths = "n"; + } + + &testForTextFilePresence( $sequences ); + my $command = "$PHYML $sequences $data_type $format $data_sets $bootstrap_sets $model $invar $nb_categ $alpha $tree $opt_topology $opt_lengths"; + + print( "\n$command\n"); + + system( $command ) + && &dieWithUnexpectedError( $command ); + +} + + + + +# Four arguments: +# 1. name of alignment file (in correct format!) +# 2. number of bootstraps +# 3. jumbles: 0: do not jumble; >=1 number of jumbles +# 4. seed for random number generator +sub executeProtpars { + my $align = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $rand = $_[ 2 ]; + my $s = $_[ 3 ]; + my $jumble = ""; + my $multi = ""; + + + &testForTextFilePresence( $align ); + + if ( $bs > 1 && $rand < 1 ) { + $rand = 1; + } + + if ( $rand >= 1 ) { + $jumble = " +J +$s +$rand"; + } + + if ( $bs > 1 ) { + $multi = " +M +D +$bs"; + } + + system( "$PROTPARS 2>&1 << ! +$align$jumble$multi +Y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$PROTPARS $align$jumble$multi\"" ); + # 3: Do NOT print out tree + + + return; + +} ## executeProtpars + + + +# "Model of substitution" order for DQO TREE-PUZZLE 5.0: +# Auto +# m -> Dayhoff (Dayhoff et al. 1978) +# m -> JTT (Jones et al. 1992) +# m -> mtREV24 (Adachi-Hasegawa 1996) +# m -> BLOSUM62 (Henikoff-Henikoff 92) +# m -> VT (Mueller-Vingron 2000) +# m -> WAG (Whelan-Goldman 2000) +# m -> Auto +# One argument: +# matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# Last modified: 07/07/01 +sub setModelForPuzzle { + my $matrix_option = $_[ 0 ]; + my $matr = ""; + + if ( $matrix_option == 0 ) { # JTT + $matr = " +m +m"; + } + elsif ( $matrix_option == 2 ) { # BLOSUM 62 + $matr = " +m +m +m +m"; + } + elsif ( $matrix_option == 3 ) { # mtREV24 + $matr = " +m +m +m"; + } + elsif ( $matrix_option == 5 ) { # VT + $matr = " +m +m +m +m +m"; + } + elsif ( $matrix_option == 6 ) { # WAG + $matr = " +m +m +m +m +m +m"; + } + elsif ( $matrix_option == 7 ) { # auto + $matr = ""; + } + else { # PAM + $matr = " +m" + } + + return $matr; + +} ## setModelForPuzzle + +# One argument: +# Model of rate heterogeneity: +# 1 for "8 Gamma distributed rates" +# 2 for "Two rates (1 invariable + 1 variable)" +# 3 for "Mixed (1 invariable + 8 Gamma rates)" +# otherwise: Uniform rate +# Last modified: 09/08/03 +sub setRateHeterogeneityOptionForPuzzle { + my $rate_heterogeneity_option = $_[ 0 ]; + my $opt = ""; + + if ( $rate_heterogeneity_option == 1 ) { + $opt = " +w"; + } + elsif ( $rate_heterogeneity_option == 2 ) { + $opt = " +w +w"; + } + elsif ( $rate_heterogeneity_option == 3 ) { + $opt = " +w +w +w"; + } + else { + $opt = ""; + } + + return $opt; +} ## setRateHeterogeneityOptionForPuzzle + + +# One argument: +# Parameter estimates: 1 for "Exact (slow)"; "Approximate (faster)" otherwise +# Last modified: 09/08/03 +sub setParameterEstimatesOptionForPuzzle { + my $parameter_estimates_option = $_[ 0 ]; + my $opt = ""; + + if ( $parameter_estimates_option == 1 ) { + $opt = " +e"; + } + else { + $opt = ""; + } + + return $opt; +} ## setParameterEstimatesOptionForPuzzle + + + +# three/four/five arguments: +# 1. Name of inputfile +# 2. matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# 3. Number of sequences in alignment +# 4. Parameter estimates: 1 for "Exact (slow)"; "Approximate (faster)" otherwise +# 5. Model of rate heterogeneity: +# 1 for "8 Gamma distributed rates" +# 2 for "Two rates (1 invariable + 1 variable)" +# 3 for "Mixed (1 invariable + 8 Gamma rates)" +# otherwise: Uniform rate +sub executePuzzleBootstrapped { + my $in = $_[ 0 ]; + my $matrix_option = $_[ 1 ]; + my $number_of_seqs = $_[ 2 ]; + my $parameter_estimates_option = $_[ 3 ]; + my $rate_heterogeneity_option = $_[ 4 ]; + + my $l = 0; + my $slen = 0; + my $counter = 0; + my $mat = ""; + my $est = ""; + my $rate = ""; + my $a = ""; + my @a = (); + + &testForTextFilePresence( $in ); + + open( GRP, "<$in" ) || die "\n\n$0: Unexpected error: Cannot open file <<$in>>: $!"; + while( ) { + if ( $_ =~ /^\s*\d+\s+\d+\s*$/ ) { + $counter++; + } + } + close( GRP ); + + $l = `cat $in | wc -l`; + $slen = $l / $counter; + + system( "split --suffix-length=4 -$slen $in $in.splt." ) + && die "\n\n$0: executePuzzleDQObootstrapped: Could not execute \"split --suffix-length=4 -$slen $in $in.splt.\": $!"; + + @a = <$in.splt.*>; + + $mat = setModelForPuzzle( $matrix_option ); + if ( $parameter_estimates_option ) { + $est = &setParameterEstimatesOptionForPuzzle( $parameter_estimates_option ); + } + if ( $rate_heterogeneity_option ) { + $rate = &setRateHeterogeneityOptionForPuzzle( $rate_heterogeneity_option ); + } + + my $k=""; + if ( $number_of_seqs <= 257 ) { + $k = "k"; + } + + foreach $a ( @a ) { + print "-".$a."\n"; + system( "$PUZZLE $a << ! +$k +k +k$mat$est$rate +y +!" ) + && die "$0: Could not execute \"$PUZZLE $a\""; + + system( "cat $a.dist >> $in.dist" ) + && die "$0: Could not execute \"cat outdist >> $in.dist\""; + + unlink( $a, $a.".dist", $a.".puzzle" ); + } + + return; + +} ## executePuzzleBootstrapped + + + + + +# three/four/five arguments: +# 1. Name of inputfile +# 2. Matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# 3. Number of sequences in alignment +# 4. Parameter estimates: 1 for "Exact (slow)"; "Approximate (faster)" otherwise +# 5. Model of rate heterogeneity: +# 1 for "8 Gamma distributed rates" +# 2 for "Two rates (1 invariable + 1 variable)" +# 3 for "Mixed (1 invariable + 8 Gamma rates)" +# otherwise: Uniform rate +sub executePuzzle { + my $in = $_[ 0 ]; + my $matrix_option = $_[ 1 ]; + my $number_of_seqs = $_[ 2 ]; + my $parameter_estimates_option = $_[ 3 ]; + my $rate_heterogeneity_option = $_[ 4 ]; + my $mat = ""; + my $est = ""; + my $rate = ""; + + &testForTextFilePresence( $in ); + + $mat = &setModelForPuzzle( $matrix_option ); + if ( $parameter_estimates_option ) { + $est = &setParameterEstimatesOptionForPuzzle( $parameter_estimates_option ); + } + if ( $rate_heterogeneity_option ) { + $rate = &setRateHeterogeneityOptionForPuzzle( $rate_heterogeneity_option ); + } + + my $k=""; + if ( $number_of_seqs <= 257 ) { + $k = "k"; + } + + + system( "$PUZZLE $in << ! +$k +k +k$mat$est$rate +y +!" ) + && die "$0: Could not execute \"$PUZZLE\""; + + return; + +} ## executePuzzle + + + + +# Preparation of the pwd file +sub addDistsToQueryToPWDfile { + my $pwd_file = $_[ 0 ]; + my $disttoquery_file = $_[ 1 ]; + my $outfile = $_[ 2 ]; + my $name_of_query = $_[ 3 ]; + my $name_of_query_ = ""; + my $return_line_pwd = ""; + my $return_line_dq = ""; + my $num_of_sqs = 0; + my $block = 0; + my $name_from_pwd = "X"; + my $name_from_dq = "Y"; + my @dists_to_query = (); + my $i = 0; + + &testForTextFilePresence( $pwd_file ); + &testForTextFilePresence( $disttoquery_file ); + + $name_of_query_ = $name_of_query; + for ( my $j = 0; $j <= ( $LENGTH_OF_NAME - length( $name_of_query ) - 1 ); ++$j ) { + $name_of_query_ .= " "; + } + + open( OUT_AD, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + open( IN_PWD, "$pwd_file" ) || &dieWithUnexpectedError( "Cannot open file \"$pwd_file\"" ); + open( IN_DQ, "$disttoquery_file" ) || &dieWithUnexpectedError( "Cannot open file \"$disttoquery_file\"" ); + + W: while ( $return_line_pwd = ) { + + + if ( $return_line_pwd =~ /^\s*(\d+)\s*$/ ) { + $num_of_sqs = $1; + $num_of_sqs++; + if ( $block > 0 ) { + print OUT_AD "$name_of_query_ "; + for ( my $j = 0; $j < $i; ++$j ) { + print OUT_AD "$dists_to_query[ $j ] "; + } + print OUT_AD "0.0\n"; + } + print OUT_AD " $num_of_sqs\n"; + $block++; + @dists_to_query = (); + $i = 0; + } + + if ( $block == 1 + && $return_line_pwd =~ /^\s*(\S+)\s+\S+/ ) { + $name_from_pwd = $1; + + if ( !defined( $return_line_dq = ) ) { + &dieWithUnexpectedError( "\"$disttoquery_file\" seems too short" ); + } + + if ( $return_line_dq !~ /\S/ ) { + if ( !defined( $return_line_dq = ) ) { + &dieWithUnexpectedError( "\"$disttoquery_file\" seems too short" ); + } + } + $return_line_dq =~ /^\s*(\S+)\s+(\S+)/; + $name_from_dq = $1; + $dists_to_query[ $i++ ] = $2; + + + if ( $name_from_pwd ne $name_from_dq ) { + &dieWithUnexpectedError( "Order of sequence names in \"$pwd_file\" and \"$disttoquery_file\" is not the same" ); + } + print OUT_AD $return_line_pwd; + + } + elsif ( $block > 1 + && $return_line_pwd =~ /^\s*(\S+)\s+\S+/ ) { + $name_from_pwd = $1; + if ( !defined( $return_line_dq = ) ) { + &dieWithUnexpectedError( "\"$disttoquery_file\" seems too short" ); + } + if ( $return_line_dq !~ /\S/ ) { + if ( !defined( $return_line_dq = ) ) { + &dieWithUnexpectedError( "\"$disttoquery_file\" seems too short" ); + } + } + $return_line_dq =~ /^\s*\S+\s+(\S+)/; + $dists_to_query[ $i++ ] = $1; + print OUT_AD $return_line_pwd; + } + } + print OUT_AD "$name_of_query_ "; + for ( my $j = 0; $j < $i; ++$j ) { + print OUT_AD "$dists_to_query[ $j ] "; + } + print OUT_AD "0.0\n"; + + close( OUT_AD ); + close( IN_PWD ); + close( IN_DQ ); + return $block; + +} ## addDistsToQueryToPWDfile + + + + +# Three arguments: +# 1. HMMER model db +# 2. name of HMM +# 3. outputfile name +# Last modified: 02/27/01 +sub executeHmmfetch { + + my $db = $_[ 0 ]; + my $name = $_[ 1 ]; + my $outfile = $_[ 2 ]; + + system( "$HMMFETCH $db $name > $outfile" ) + && &dieWithUnexpectedError( "Could not execute \"$HMMFETCH $db $name > $outfile\"" ); + return; + +} ## executeHmmfetch + + + +# Checks wether a file is present, not empty and a plain textfile. +# One argument: name of file. +# Last modified: 07/07/01 +sub testForTextFilePresence { + my $file = $_[ 0 ]; + unless ( ( -s $file ) && ( -f $file ) && ( -T $file ) ) { + dieWithUnexpectedError( "File \"$file\" does not exist, is empty, or is not a plain textfile" ); + } +} ## testForTextFilePresence + + +# Last modified: 02/21/03 +sub addSlashAtEndIfNotPresent { + my $filename = $_[ 0 ]; + $filename =~ s/\s+//g; + unless ( $filename =~ /\/$/ ) { + $filename = $filename."/"; + } + return $filename; +} ## addSlashAtEndIfNotPresent + + + +# Last modified: 02/15/02 +sub exitWithWarning { + + my $text = $_[ 0 ]; + if ( defined( $_[ 1 ] ) && $_[ 1 ] == 1 ) { + print( "

    user error

    \n" ); + print( "

    \n" ); + print( "$text\n" ); + print( "

    \n" ); + print( "

     

    \n" ); + } + else { + print( "\n\n$text\n\n" ); + } + + exit( 0 ); + +} ## exit_with_warning + + + +# Last modified: 02/15/02 +sub dieWithUnexpectedError { + + my $text = $_[ 0 ]; + + die( "\n\n$0:\nUnexpected error (should not have happened):\n$text\n$!\n\n" ); + +} ## dieWithUnexpectedError + + + +1; diff --git a/forester/archive/perl/gs_aa_extract.pl b/forester/archive/perl/gs_aa_extract.pl new file mode 100755 index 0000000..d485920 --- /dev/null +++ b/forester/archive/perl/gs_aa_extract.pl @@ -0,0 +1,53 @@ +#!/usr/bin/perl -W + +# $Id: gs_aa_extract.pl,v 1.2 2008/03/09 00:11:50 cmzmasek Exp $ + +# This extracts the AA sequences from GENSCAN output files +# Copyright (C) 2008-2009 Christian M. Zmasek +# All rights reserved +# Created 2007-07-28 in Winterthur, Switzerland by CMZ + +# Usage: gs_aa_extract.pl + +use strict; + +if ( scalar( @ARGV ) != 2 ) { + print "\ngs_aa_extract.pl \n\n"; + exit( -1 ); +} + +my $infile = $ARGV[ 0 ]; +my $outfile = $ARGV[ 1 ]; + +if ( -e $outfile) { + die "\n$0: \"$outfile\" already exists.\n\n"; +} +unless( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: cannot read from \"$infile\".\n\n"; +} + +open( IN, "$infile" ) || die "\n$0: Cannot open file \"$infile\": $!\n"; +open( OUT, ">$outfile" ) || die "\n$0: Cannot create file \"$outfile\": $!\n"; + +my $line = ""; +my $desc = ""; + +while ( $line = ) { + if ( $line =~ /^>/ ) { + $desc = $line; + } + elsif ( $line =~ /^[A-Z]+$/ ) { + if ( length( $desc ) > 0 ) { + print OUT $desc; + $desc = ""; + } + print OUT $line; + } +} + +close( OUT ); + +print( "\nOK\n" ); + +exit( 0 ); + diff --git a/forester/archive/perl/makeTree.pl b/forester/archive/perl/makeTree.pl new file mode 100755 index 0000000..45c4658 --- /dev/null +++ b/forester/archive/perl/makeTree.pl @@ -0,0 +1,1211 @@ +#!/usr/bin/perl -W + +# makeTree.pl +# ----------- +# Copyright (C) 1999-2003 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified 04/06/04 +# +# +# Requirements makeTree is part of the RIO/FORESTER suite of programs. +# ------------ Many of its global variables are set via rio_module.pm. +# +# +# Note. Use xt.pl (for Pfam alignments) or mt.pl (for other alignments) +# to run makeTree.pl on whole directories of alignments files. +# +# +# +# Usage +# ----- +# +# Tree calculation based on a Pfam/Clustal W alignment +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# makeTree.pl [-options] +# [path/name for temporary directory to be created] +# +# Example: +# "% makeTree.pl -UTB1000S41NDXV /DB/PFAM/Full/IL5 IL5_tree" +# +# +# Tree calculation based on precalculated pairwise distances +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Consensus tree will have no branch length values. +# Precalculated pairwise distances are the output of "pfam2pwd.pl", +# number of bootstraps needs to match the one used for the pwds. +# +# makeTree.pl <-options, includes "F"> [path/name for temporary directory +# to be created] +# +# Example: +# "% makeTree.pl -FB100S21XV /pfam2pwd_out/IL5.pwd IL5_tree" +# +# +# Tree calculation based on precalculated pairwise distances +# and matching alignment +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# Consensus tree will have branch length values. +# Precalculated pairwise distances and the matching (processed) +# alignment are the output of "pfam2pwd.pl", number of bootstraps +# needs to match the one used for the pwds, matrix needs to match +# the one used for the pwds. +# +# makeTree.pl <-options, includes "UF"> +# [path/name for temporary directory to be created] +# +# Example: +# "% makeTree.pl -UFLB100S21XV /pfam2pwd_out/IL5.pwd /pfam2pwd_out/IL5.aln IL5_tree" +# +# +# Options +# ------- +# +# N : Suggestion to remove columns in the alignment which contain gaps. +# Gaps are not removed, if, after removal of gaps, the resulting alignment would +# be shorter than $MIN_NUMBER_OF_AA. Default is not to remove gaps. +# Bx : Number of bootstrapps. B0: do not bootstrap. Default is 100 bootstrapps. +# The number of bootstrapps should be divisible by 10. +# U : Use TREE-PUZZLE to calculate ML branchlengths for consesus tree, in case of +# bootstrapped analysis. +# J : Use JTT matrix (Jones et al. 1992) in TREE-PUZZLE, default: PAM. +# L : Use BLOSUM 62 matrix (Henikoff-Henikoff 92) in TREE-PUZZLE, default: PAM. +# M : Use mtREV24 matrix (Adachi-Hasegawa 1996) inTREE-PUZZLE, default: PAM. +# W : Use WAG matrix (Whelan-Goldman 2000) in TREE-PUZZLE, default: PAM. +# T : Use VT matrix (Mueller-Vingron 2000) in TREE-PUZZLE, default: PAM. +# P : Let TREE-PUZZLE choose which matrix to use, default: PAM. +# E : Exact parameter estimates in TREE-PUZZLE, default: Approximate. +# Model of rate heterogeneity in TREE-PUZZLE (default: Uniform rate) +# g : 8 Gamma distributed rates +# t : Two rates (1 invariable + 1 variable) +# m : Mixed (1 invariable + 8 Gamma rates) +# R : Randomize input order in PHYLIP NEIGHBOR. +# A : Use PHYLIP PROTPARS instead of NEIGHBOR (and no pairwise distance calculation). +# jx : Number of jumbles when using PHYLIP PROTPARS (random seed set with Sx). +# Sx : Seed for random number generator(s). Must be 4n+1. Default is 9. +# X : To keep multiple tree file (=trees from bootstrap resampled alignments). +# D : To keep (and create in case of bootstrap analysis) pairwise distance matrix file. +# This is created form the not resampled (original) alignment. +# C : Calculate pairwise distances only (no tree). Bootstrap is always 1. +# No other files are generated. +# F : Pairwise distance (pwd) file as input (instead of alignment). +# No -D, -C, and -N options available in this case. +# V : Verbose. +# # : Only for rio.pl: Do not calculate consensus tree ("I" option in rio.pl). +# +# +# +# History: +# ------- +# +# 09/06/03: Added "#" option (to be used only for rio.pl). +# 03/24/04: Do not replace "?" with "-" in method pfam2phylip. + + +use strict; + +use FindBin; +use lib $FindBin::Bin; +use rio_module2; + +my $VERSION = "4.210"; + +my $TEMP_DIR_DEFAULT = "/tmp/maketree"; # Where all the infiles, outfiles, etc will be created. + +my $remove_gaps = 0; # 0: do not remove gaps; 1: remove gaps +my $bootstraps = 100; # 0,1: do not bootstrap. Default: 100 +my $puzzle_consensus_tree = 0; # 0: no; 1: yes. No is default. +my $matrix = 1; # 0 = JTT + # 1 = PAM - default + # 2 = BLOSUM 62 + # 3 = mtREV24 + # 5 = VT + # 6 = WAG + # 7 = auto +my $rate_heterogeneity = 0; # 0 = Uniform rate (default) + # 1 = 8 Gamma distributed rates + # 2 = Two rates (1 invariable + 1 variable) + # 3 = Mixed (1 invariable + 8 Gamma rates) +my $randomize_input_order = 0; # 0: do not randomize input order; 1 jumble +my $seed = 9; # Seed for random number generators. Default: 9 +my $keep_multiple_trees = 0; # 0: delete multiple tree file + # 1: do not delete multiple tree file +my $keep_distance_matrix = 0; # 1: (create and) keep; 0: do not (create and) keep +my $verbose = 0; # 0: no; 1: yes +my $pairwise_dist_only = 0; # 0: no; 1: yes +my $start_with_pwd = 0; # 0: no; 1: yes +my $start_with_pwd_and_aln = 0; # 0: no; 1: yes +my $no_consenus_tree = 0; # 0: no; 1: yes +my $exact_parameter_est = 0; # 0: no; 1: yes +my $use_protpars = 0; # 0: no; 1: yes +my $protpars_jumbles = 0; + +my %seqnames = (); # number => seqname +my %numbers = (); # seqname => number +my $options = ""; +my $infile = ""; +my $pwdfile = ""; +my $outfile = ""; +my $outfilenhx = ""; +my $logfile = ""; +my $alignfile = ""; +my $multitreefile = ""; +my $distancefile = ""; +my $log = ""; +my $number_of_aa = 0; +my $orig_length = 0; +my $ii = 0; +my $temp_dir = ""; +my $current_dir = ""; +my @out = (); +my $number_of_seqs = 0; + + + +unless ( @ARGV == 2 || @ARGV == 3 || @ARGV == 4 || @ARGV == 5 ) { + &printUsage(); + exit ( -1 ); +} + + + +# Analyzes the options: +# --------------------- + +if ( $ARGV[ 0 ] =~ /^-.+/ ) { + + unless ( @ARGV > 2 ) { + &printUsage(); + exit ( -1 ); + } + $options = $ARGV[ 0 ]; + + if ( $options =~ /F/ && $options !~ /U/ ) { + if ( @ARGV != 3 && @ARGV != 4 ) { + &printUsage(); + exit ( -1 ); + + } + $start_with_pwd = 1; + $infile = ""; + $pwdfile = $ARGV[ 1 ]; + + $outfile = $ARGV[ 2 ]; + if ( @ARGV == 4 ) { + $temp_dir = $ARGV[ 3 ]; + } + + } + elsif ( $options =~ /F/ && $options =~ /U/ ) { + if ( @ARGV != 4 && @ARGV != 5 ) { + &printUsage(); + exit ( -1 ); + } + $start_with_pwd = 1; + $start_with_pwd_and_aln = 1; + $pwdfile = $ARGV[ 1 ]; + $infile = $ARGV[ 2 ]; + $outfile = $ARGV[ 3 ]; + if ( @ARGV == 5 ) { + $temp_dir = $ARGV[ 4 ]; + } + + } + else { + if ( @ARGV != 3 && @ARGV != 4 ) { + &printUsage(); + exit ( -1 ); + } + $infile = $ARGV[ 1 ]; + $outfile = $ARGV[ 2 ]; + if ( @ARGV == 4 ) { + $temp_dir = $ARGV[ 3 ]; + } + } + + if ( $options =~ /N/ && $start_with_pwd != 1 ) { + $remove_gaps = 1; # do remove gaps + } + if ( $options =~ /B(\d+)/ ) { + $bootstraps = $1; + if ( $bootstraps <= 1 ) { + $bootstraps = 0; + } + elsif ( $bootstraps <= 9 ) { + $bootstraps = 0; + print "\n\nMAKETREE: WARNING: Bootstrap number must be devisable by 10,\nno bootstrapping.\n\n"; + } + elsif ( $bootstraps % 10 != 0 ) { + $bootstraps = $bootstraps - $bootstraps % 10; # to ensure $bootstraps % 10 == 0 + print "\n\nMAKETREE: WARNING: Bootstrap number must be devisable by 10,\nhas been set to $bootstraps.\n\n"; + } + } + if ( $options =~ /A/ ) { + $use_protpars = 1 # PROTPARS + } + if ( $options =~ /j(\d+)/ ) { + $protpars_jumbles = $1; + if ( $protpars_jumbles < 0 ) { + $protpars_jumbles = 0; + } + } + if ( $options =~ /J/ ) { + $matrix = 0; # JTT + } + if ( $options =~ /L/ ) { + $matrix = 2; # Blossum + } + if ( $options =~ /M/ ) { + $matrix = 3; # mtREV24 + } + if ( $options =~ /T/ ) { + $matrix = 5; # VT + } + if ( $options =~ /W/ ) { + $matrix = 6; # WAG + } + if ( $options =~ /P/ ) { + $matrix = 7; # auto + } + if ( $options =~ /R/ ) { + $randomize_input_order = 1; + } + if ( $options =~ /S(\d+)/ ) { + $seed = $1; + } + if ( $options =~ /U/ ) { + $puzzle_consensus_tree = 1; + } + if ( $options =~ /X/ ) { + $keep_multiple_trees = 1; + } + if ( $options =~ /D/ && $start_with_pwd != 1 ) { + $keep_distance_matrix = 1; + } + if ( $options =~ /V/ ) { + $verbose = 1; + } + if ( $options =~ /C/ && $start_with_pwd != 1 ) { + $pairwise_dist_only = 1; + } + if ( $options =~ /E/ ) { + $exact_parameter_est = 1; + } + if ( $options =~ /g/ ) { + $rate_heterogeneity = 1; + } + if ( $options =~ /t/ ) { + $rate_heterogeneity = 2; + } + if ( $options =~ /m/ ) { + $rate_heterogeneity = 3; + } + if ( $options =~ /#/ ) { + $no_consenus_tree = 1; + } + if ( $protpars_jumbles > 0 && $use_protpars != 1 ) { + &printUsage(); + exit ( -1 ); + } + if ( $use_protpars == 1 ) { + if ( $randomize_input_order >= 1 + || $start_with_pwd == 1 + || $keep_distance_matrix == 1 + || $pairwise_dist_only == 1 ) { + &printUsage(); + exit ( -1 ); + } + if ( $bootstraps > 1 && $protpars_jumbles < 1 ) { + $protpars_jumbles = 1; + } + } + +} + +else { + unless ( @ARGV == 2 || @ARGV == 3 ) { + &printUsage(); + exit ( -1 ); + } + $infile = $ARGV[ 0 ]; + $outfile = $ARGV[ 1 ]; + if ( @ARGV == 3 ) { + $temp_dir = $ARGV[ 2 ]; + } +} + + + + +$current_dir = `pwd`; +$current_dir =~ s/\s//; + +if ( $outfile !~ /^\// ) { + # outfile is not absolute path. + $outfile = $current_dir."/".$outfile; +} + + + +if ( $pairwise_dist_only == 1 ) { + $bootstraps = 0; + $keep_multiple_trees = 0; + $puzzle_consensus_tree = 0; + $randomize_input_order = 0; + $start_with_pwd = 0; + $keep_distance_matrix = 1; +} + +if ( $bootstraps < 2 ) { + $no_consenus_tree = 0; +} + +# TREE-PUZZLE sets the option in this way: +# If two rates or mixed, exact parameter estimates are used. +if ( $rate_heterogeneity == 2 +|| $rate_heterogeneity == 3 ) { + $exact_parameter_est = 1 +} + +$logfile = $outfile.$LOG_FILE_SUFFIX; +$alignfile = $outfile.$ALIGN_FILE_SUFFIX; +$multitreefile = $outfile.$MULTIPLE_TREES_FILE_SUFFIX; +$distancefile = $outfile.$SUFFIX_PWD_NOT_BOOTS; + +if ( $outfile =~ /\.nhx$/i ) { + $outfilenhx = $outfile; + $logfile =~ s/\.nhx//i; + $alignfile =~ s/\.nhx//i; + $outfile =~ s/\.nhx//i; + $multitreefile =~ s/\.nhx//i; + $distancefile =~ s/\.nhx//i; +} +else { + $outfilenhx = $outfile.".nhx"; +} + +if ( -e $outfilenhx ) { + die "\n\nmakeTree: \"$outfilenhx\" already exists.\n\n"; +} +if ( $infile ne "" ) { + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n\nmakeTree: Input alignment file \"$infile\" does not exist, is empty, or is not a plain textfile.\n\n"; + } +} +if ( $start_with_pwd == 1 ) { + unless ( ( -s $pwdfile ) && ( -f $pwdfile ) && ( -T $pwdfile ) ) { + die "\n\nmakeTree: Pairwise distance file \"$pwdfile\" does not exist, is empty, or is not a plain textfile.\n\n"; + } +} + + + +# Prints out the options: +# ----------------------- + + +$log = "\n$0 logfile:\n"; +$log = $log."Version: $VERSION\n\n"; + + +if ( $start_with_pwd == 1 ) { + $log = $log."Input pairwise distance file (bootstrapped): $pwdfile\n"; +} +if ( $infile ne "" ) { + $log = $log."Input alignment : $infile\n"; +} + +if ( $no_consenus_tree != 1 ) { + $log = $log."Output tree file : $outfilenhx\n"; +} + +if ( $keep_multiple_trees == 1 && $bootstraps >= 2 ) { + $log = $log."Output multiple trees file : $multitreefile\n"; +} +if ( $keep_distance_matrix ) { + $log = $log."Output pairwise distance file : $distancefile\n"; +} + +$log = $log."Bootstraps : $bootstraps\n"; + +if ( $start_with_pwd != 1 && $use_protpars != 1 ) { + $log = $log."Prgrm to calculate pairwise dist. : TREE-PUZZLE\n"; +} + +if ( $use_protpars == 1 ) { + $log = $log."Program to calculate tree : PHYLIP PROTPARS\n"; + $log = $log."Number of jumbles in PROTPARS : $protpars_jumbles\n"; +} +else { + $log = $log."Program to calculate tree : PHYLIP NEIGHBOR (NJ)\n"; +} + +if ( $puzzle_consensus_tree == 1 ) { + $log = $log."Prgrm to calculate ML branch lenghts: TREE-PUZZLE\n"; +} +if ( $puzzle_consensus_tree == 1 || $start_with_pwd != 1 ) { + $log = $log."Model : "; + if ( $matrix == 0 ) { + $log = $log."JTT (Jones et al. 1992)\n"; + } + elsif ( $matrix == 2 ) { + $log = $log."BLOSUM 62 (Henikoff-Henikoff 92)\n"; + } + elsif ( $matrix == 3 ) { + $log = $log."mtREV24 (Adachi-Hasegawa 1996)\n"; + } + elsif ( $matrix == 5 ) { + $log = $log."VT (Mueller-Vingron 2000)\n"; + } + elsif ( $matrix == 6 ) { + $log = $log."WAG (Whelan-Goldman 2000)\n"; + } + elsif ( $matrix == 7 ) { + $log = $log."auto\n"; + } + else { + $log = $log."PAM (Dayhoff et al. 1978)\n"; + } +} +$log = $log."Model of rate heterogeneity : "; +if ( $rate_heterogeneity == 1 ) { + $log = $log."8 Gamma distributed rates\n"; +} +elsif ( $rate_heterogeneity == 2 ) { + $log = $log."Two rates (1 invariable + 1 variable)\n"; +} +elsif ( $rate_heterogeneity == 3 ) { + $log = $log."Mixed (1 invariable + 8 Gamma rates)\n"; +} +else { + $log = $log."Uniform rate\n"; +} +if ( $randomize_input_order >= 1 ) { + $log = $log."Randomize input order in NEIGHBOR : yes\n"; +} +$log = $log."Seed for random number generators : $seed\n"; +if ( $exact_parameter_est == 1 ) { + $log = $log."Exact parameter estimates in TREE-PUZZLE\n"; +} + +$log = $log."Start time/date : ".`date`; + + + + +# That's where the mischief starts.... +# ------------------------------------ + +$ii = 0; + +my $time_st = time; + +if ( $temp_dir eq "" ) { + $temp_dir = $TEMP_DIR_DEFAULT; +} + +$temp_dir = $temp_dir.$time_st.$ii; + +while ( -e $temp_dir ) { + $ii++; + $temp_dir = $temp_dir.$time_st.$ii; +} + +mkdir( $temp_dir, 0700 ) +|| die "\n\n$0: Unexpected error: Could not create <<$temp_dir>>: $!\n\n"; + +unless ( ( -e $temp_dir ) && ( -d $temp_dir ) ) { + die "\n\n$0: Unexpected error: <<$temp_dir>> does not exist, or is not a directory.\n\n"; +} + + +if ( $start_with_pwd != 1 ) { + system( "cp", $infile, $temp_dir."/INFILE" ); + unless ( chmod ( 0600, $temp_dir."/INFILE" ) ) { + warn "\n\n$0: Could not chmod. $!\n\n"; + } + $infile = "INFILE"; +} + + +chdir ( $temp_dir ) +|| die "\n\n$0: Unexpected error: Could not chdir to <<$temp_dir>>: $!\n\n"; + + +if ( $start_with_pwd != 1 ) { + + @out = &DoPfam2phylip( $infile, $alignfile, $remove_gaps ); + $number_of_aa = $out[ 0 ]; + $orig_length = $out[ 1 ]; + $number_of_seqs = $out[ 2 ]; + + system( "cp", $alignfile, "infile" ); + + if ( $use_protpars != 1 ) { + # Calculating the pairwise distances (saved in file "infile"): "puzzle" + + system( "cp", $alignfile, "align" ); + + if ( $bootstraps > 1 ) { + + &executeSeqboot( $seed, $bootstraps ); + + if ( $keep_distance_matrix ) { + system( "mv", "outfile", "outfile___" ); + system( "cp", "align", "infile" ); + &executePuzzle( "infile", + $matrix, + $exact_parameter_est, + $rate_heterogeneity ); + system( "mv", "infile.dist", $distancefile ); + system( "mv", "outfile___", "outfile" ); + } + unlink( "infile" ); # Necessary, since "infile" is puzzle's default input. + system( "mv", "outfile", "IN" ); + + &executePuzzleBootstrapped( "IN", + $matrix, + $exact_parameter_est, + $rate_heterogeneity ); + + $pwdfile = "IN.dist"; + + } + else { + + &executePuzzle( "infile", + $matrix, + $exact_parameter_est, + $rate_heterogeneity ); + + if ( $keep_distance_matrix ) { + system( "cp outdist $distancefile" ); + } + $pwdfile = "infile.dist"; + } + + unlink( "infile.tree" ); + + if ( $pairwise_dist_only == 1 ) { + unlink( "infile", "align", "INFILE", "outdist", $alignfile ); + chdir( $current_dir ) + || die "\n\n$0: Unexpected error: Could not chdir to <<$current_dir>>: $!\n\n"; + + rmdir( $temp_dir ) + || die "\n\n$0: Unexpected error: Could not remove <<$temp_dir>>: $!\n\n"; + + print "\n\n$0 finished.\n\n"; + print "Output pairwise distance file written as: $distancefile\n\n"; + print "\n\nmakeTree successfully terminated.\n\n"; + exit( 0 ); + } + + } ## if ( $use_protpars != 1 ) + +} ## if ( $start_with_pwd != 1 ) + + +# Calculating the tree (saved in file "infile"): + +if ( $use_protpars != 1 ) { + unlink( "infile" ); + &executeNeighbor( $pwdfile, $bootstraps, $randomize_input_order, $seed, 1 ); +} +else { + if ( $bootstraps > 1 ) { + &executeSeqboot( $seed, $bootstraps ); + unlink( "infile" ); + system( "mv", "outfile", "infile" ); + } + &executeProtpars( "infile", $bootstraps, $protpars_jumbles, $seed ); +} + +unlink( "outfile" ); + +if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + + system( "cp", "outtree", $multitreefile ); +} + + +system( "mv", "outtree", "intree" ); + +if ( $bootstraps > 1 ) { + if ( $no_consenus_tree != 1 ) { + + # Consense: + &executeConsense( "intree" ); + + if ( $puzzle_consensus_tree == 1 ) { + + system( "cp", "outtree", "treefile_consense" ); + system( "mv", "outtree", "intree" ); + + # Puzzle for ML branch lenghts: + # The alignment is read from infile by default. + # The tree is read from intree by default. + + if ( $start_with_pwd_and_aln == 1 ) { + &pfam2phylipMatchOnly( $infile, + "infile", + 1 ); + } + elsif ( $use_protpars != 1 ) { + system( "mv", "align", "infile" ); # align = original alignment in phylip interleaved. + } + + &executePuzzleToCalculateBranchLenghts( $matrix, + $exact_parameter_est, + $rate_heterogeneity ); + + unlink( "outfile", "outdist" ); + system( "mv", "outtree", "outree_puzzle" ); + + # Transfer + &executeTransfersBranchLenghts( "outree_puzzle", "treefile_consense", $outfilenhx ); + + } + else { + unlink( "outfile", "align" ); + system( "mv", "outtree", $outfilenhx ); + } + } + else { + unlink( "outfile", "align" ); + + } +} +else { + unlink( "align", "infile.dist" ); + if ( $start_with_pwd != 1 ) { + system( "mv intree $outfilenhx" ); + } + +} + + +unlink( "treefile_consense", "outtree", "outree_puzzle", + "infile", "intree", "align", "INFILE", "IN", "IN.dist", "outdist" ); + + +$log = $log."Finish time/date : ".`date`; + +if ( $start_with_pwd != 1 ) { + $log = $log."Removed gaps : "; + if ( $remove_gaps == 1 ) { + $log = $log."yes\n"; + } + else { + $log = $log."no\n"; + } + $log = $log."Columns in alignment used : $number_of_aa\n"; + $log = $log."Columns in original alignment : $orig_length\n"; + $log = $log."Number of sequences in alignment : $number_of_seqs\n"; +} + + +open( OUT, ">$logfile" ) || die "\n$0: Cannot create file <<$logfile>>: $!\n"; +print OUT $log; +close( OUT ); + + +chdir( $current_dir ) +|| die "\n\n$0:Unexpected error: Could not chdir to <<$current_dir>>: $!\n\n"; + + +rmdir( $temp_dir ) +|| die "\n\n$0:Unexpected error: Could not remove <<$temp_dir>>: $!\n\n"; + +if ( $verbose == 1 ) { + print "\n\n$0 finished.\n"; + if ( $no_consenus_tree != 1 ) { + print "Output tree written as : $outfilenhx\n"; + } + print "Log written as : $logfile\n"; + if ( $start_with_pwd != 1 ) { + print "Alignment written as : $alignfile\n"; + } + if ( $keep_multiple_trees == 1 && $bootstraps >= 2 ) { + print "Multiple trees written as : $multitreefile\n"; + } + if ( $keep_distance_matrix ) { + print "Distance matrix written as: $distancefile\n"; + } +} + + +exit( 0 ); + + + + + +# Methods: +# -------- + + + + +# Executes pfam2phylip. +# If resulting alignment is too short due to the removal +# of gaps, is does not remove gaps. +# Three arguments: +# 1. infile +# 2. outfile +# 3. remove gaps: 1 to remove gaps; 0: do not remove gaps +# Last modified: 06/04/01 +sub DoPfam2phylip { + my $in = $_[ 0 ]; + my $out = $_[ 1 ]; + my $option = $_[ 2 ]; + my $aa = 0; + my @output = (); + + if ( $option == 1 ) { + @output = &pfam2phylip( $in, $out, 1 ); + $aa = $output[ 0 ]; + if ( $aa < 0 ) { + die "\n\n$0: DoPfam2phylip: Unexpected error.\n\n"; + } + if ( $aa < $MIN_NUMBER_OF_AA ) { + unlink( $out ); + $option = 0; + $remove_gaps = 0; + } + } + if ( $option == 0 ) { # Must be another "if" (no elsif of else)! + @output = &pfam2phylip( $in, $out, 2 ); + # 2 is to substitute non-letters with "-" in the sequence. + $aa = $output[ 0 ]; + if ( $aa <= 0 ) { + die "\n\n$0: DoPfam2phylip: Unexpected error.\n\n"; + } + } + return @output; +} + + + +# Two arguments: +# 1. seed for random number generator +# 2. number of bootstraps +# Reads in "infile" by default. +sub executeSeqboot { + + my $s = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $verb = ""; + + &testForTextFilePresence( $infile ); + + if ( $verbose != 1 ) { + $verb = " +2"; + } + + + system( "$SEQBOOT << ! +r +$bs$verb +Y +$s +!" ) + && die "$0: Could not execute \"$SEQBOOT\""; + + return; + +} + + + + +# One/two/three argument(s): +# Reads in tree from "intree" by default. (Presence of "intree" automatically +# switches into "User defined trees" mode.) +# 1. matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# 2. Parameter estimates: 1 for "Exact (slow)"; "Approximate (faster)" otherwise +# 3. Model of rate heterogeneity: +# 1 for "8 Gamma distributed rates" +# 2 for "Two rates (1 invariable + 1 variable)" +# 3 for "Mixed (1 invariable + 8 Gamma rates)" +# otherwise: Uniform rate +# Last modified: 09/08/03 (added 2nd and 3rd parameter) +sub executePuzzleToCalculateBranchLenghts { + my $matrix_option = $_[ 0 ]; + my $parameter_estimates_option = $_[ 1 ]; + my $rate_heterogeneity_option = $_[ 2 ]; + my $i = 0; + my $mat = ""; + my $est = ""; + my $rate = ""; + + unless ( ( -s "infile" ) && ( -f "infile" ) && ( -T "infile" ) ) { + die "\n$0: executePuzzleToCalculateBranchLenghts: <> does not exist, is empty, or is not a plain textfile.\n"; + } + unless ( ( -s "intree" ) && ( -f "intree" ) && ( -T "intree" ) ) { + die "\n$0: executePuzzleToCalculateBranchLenghts: <> does not exist, is empty, or is not a plain textfile.\n"; + } + + $mat = setModelForPuzzle( $matrix_option ); + if ( $parameter_estimates_option ) { + $est = &setParameterEstimatesOptionForPuzzle( $parameter_estimates_option ); + } + if ( $rate_heterogeneity_option ) { + $rate = &setRateHeterogeneityOptionForPuzzle( $rate_heterogeneity_option ); + } + + system( "$PUZZLE << ! +$mat$est$rate +x +y +!" ) + && die "$0: Could not execute \"$PUZZLE\""; + + return; + +} + + + + + + + +# Three/four arguments: +# 1. Name of file containing tree with correct branch lengths +# 2. Name of file containing tree with correct bootstraps +# 3. Outputfilename +# 4. R to reroot both trees in the same manner (use for FITCH, +# since this changes to rooting. +sub executeTransfersBranchLenghts { + my $tree_with_bl = $_[ 0 ]; + my $tree_with_bs = $_[ 1 ]; + my $out = $_[ 2 ]; + my $reroot = $_[ 3 ]; + my $R = ""; + + if ( $reroot && $reroot eq "R" ) { + $R = "R"; + } + + &testForTextFilePresence( $tree_with_bl ); + &testForTextFilePresence( $tree_with_bs ); + + system( "$TRANSFERSBRANCHLENGHTS $tree_with_bl $tree_with_bs $out $R" ) + && die "$0: Could not execute \"$TRANSFERSBRANCHLENGHTS $tree_with_bl $tree_with_bs $out $R\""; + + + return; +} + + + +# Called by method DoPfam2phylip. +# This reads a multiple sequence alignment file in Pfam format, +# Phylip's sequential format, or ClustalW (".aln")output and saves them +# in Phylip's sequential or interleaved format. +# (Those two are the same in this case, since all the seqs will be +# one line in length (no returns)). +# It returns (1st) the number of aa (columns) in the resulting +# alignment and the (2nd) number of aa (columns) in the original +# alignment. +# +# Reads a file containing a sequence alignment in the following format +# (as used in Pfam): +# #comments <- empty lines and lines begining with # (not mandatory) +# name1 kal +# name2 kal +# <- at least one empty line between blocks +# name1 kale +# name2 k.le +# +# Saves it in the "sequential" format of phylip: +# number of OTUs length of aa seqs +# name1 kalkale +# name2 kalk-le +# +# Three arguments: +# 1. infile name +# 2. outfile name +# 3. 1 : Removes colums with a gap (non-letter character) +# 2 : Substitutes non-letter characters (except "?") in the sequence with "-". +# +# Last modified: 03/24/04 +# Changes: +# 03/24/04: Do not replace "?" with "-" +# +sub pfam2phylip { + + my $infile = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $options = $_[ 2 ]; # 1: remove gaps; 2: non-letters (except "?") -> "-" + my $return_line = ""; + my $x = 0; + my $y = 0; + my $x_offset = 0; + my $original_length = 0; + my @seq_name = (); + my @seq_array = (); + my $seq = ""; + my $max_x = 0; + my $max_y = 0; + my $m = 0; + my $n = 0; + my $i = 0; + my $move = 0; + my $saw_a_sequence_line = 0; + + if ( -e $outfile ) { + die "\n$0: pfam2phylip: <<$outfile>> already exists.\n"; + } + + &testForTextFilePresence( $infile ); + + open( INPP, "$infile" ) || die "\n$0: pfam2phylip: Cannot open file <<$infile>>: $!\n"; + + until ( $return_line !~ /^\s*\S+\s+\S+/ && $saw_a_sequence_line == 1 ) { + if ( $return_line =~ /^\s*\S+\s+\S+/ + && $return_line !~ /^\s*#/ + && $return_line !~ /^\s*\d+\s+\d+/ + && $return_line !~ /^\s*CLUSTAL/ ) { + $saw_a_sequence_line = 1; + $return_line =~ /^\s*(\S+)\s+(\S+)/; + $seq_name[ $y ] = $1; + $seq = $2; + $seq_name[ $y ] = substr( $seq_name[ $y ], 0, $LENGTH_OF_NAME ); + + for ( $x = 0; $x <= length( $seq ) - 1; $x++ ) { + $seq_array[ $x ][ $y ] = substr( $seq, $x, 1 ); + } + if ( $x_offset < length( $seq ) ) { + $x_offset = length( $seq ); + } + $y++; + } + $return_line = ; + if ( !$return_line ) { + last; + } + } + + $max_y = $y; + $y = 0; + $max_x = 0; + + while ( $return_line = ) { + if ( $return_line =~ /^\s*(\S+)\s+(\S+)/ + && $return_line !~ /^\s*#/ + && $return_line !~ /^\s*\d+\s+\d+/ ) { + $return_line =~ /^\s*\S+\s+(\S+)/; + $seq = $1; + for ( $x = 0; $x <= length( $seq ) - 1; $x++ ) { + $seq_array[ $x + $x_offset ][ $y % $max_y ] = substr( $seq, $x, 1 ); + } + if ( $max_x < length( $seq ) ) { + $max_x = length( $seq ); + } + $y++; + if ( ( $y % $max_y ) == 0 ) { + $y = 0; + $x_offset = $x_offset + $max_x; + $max_x = 0; + } + } + } + $original_length = $x_offset; + close( INPP ); + + + # Removes "gap-columns" (gaps = everything except a-z characters): + if ( $options == 1 ) { + $move = 0; + + COLUMN: for ( $x = 0; $x <= $x_offset - 1; $x++ ) { # goes through all aa positions (columns) + + for ( $y = 0; $y <= $max_y - 1; $y++ ) { # goes through all aas in a particular position + + unless ( $seq_array[ $x ][ $y ] && $seq_array[ $x ][ $y ] =~ /[a-z]/i ) { + $move++; + next COLUMN; + } + } + + # If this point is reached, column must be OK = no gaps. + if ( $move >= 1 ) { + for ( $m = 0; $m <= $max_y; $m++ ) { + for ( $n = $x; $n <= $x_offset; $n++ ) { + $seq_array[ $n - $move ][ $m ] = $seq_array[ $n ][ $m ]; + } + } + $x_offset = $x_offset - $move; + $x = $x - $move; + $move = 0; + } + } + if ( $move >= 1 ) { + for ( $m = 0; $m <= $max_y; $m++ ) { + for ( $n = $x; $n <= $x_offset; $n++ ) { + $seq_array[ $n - $move ][ $m ] = $seq_array[ $n ][ $m ]; + } + } + $x_offset = $x_offset - $move; + $x = $x - $move; + $move = 0; + } + } + + + # Writes the file: + + open( OUTPP, ">$outfile" ) || die "\n$0: pfam2phylip: Cannot create file <<$outfile>>: $!\n"; + print OUTPP "$max_y $x_offset\n"; + for ( $y = 0; $y < $max_y; $y++ ) { + print OUTPP "$seq_name[ $y ]"; + for ( $i = 0; $i <= ( $LENGTH_OF_NAME - length( $seq_name[ $y ] ) - 1 ); $i++ ) { + print OUTPP " "; + } + for ( $x = 0; $x <= $x_offset - 1; $x++ ) { + if ( $options == 2 ) { + if ( $seq_array[ $x ][ $y ] ) { + $seq_array[ $x ][ $y ] =~s /[^a-zA-Z\?]/-/; + } + else { + $seq_array[ $x ][ $y ] = "-"; + } + } + print OUTPP "$seq_array[ $x ][ $y ]"; + } + print OUTPP "\n"; + } + close( OUTPP ); + + return $x_offset, $original_length, $max_y; + +} ## pfam2phylip + + + + +sub printUsage { + + print "\n"; + print " makeTree.pl version $VERSION\n"; + print " -----------\n"; + + print < + [path/name for temporary directory to be created] + + Example: + "% makeTree.pl -UTB1000S41NDXV /DB/PFAM/Full/IL5 IL5_tree" + + + Tree calculation based on precalculated pairwise distances + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Consensus tree will have no branch length values. + Precalculated pairwise distances are the output of "pfam2pwd.pl", + number of bootstraps needs to match the one used for the pwds. + + makeTree.pl <-options, includes "F"> [path/name for temporary directory + to be created] + + Example: + "% makeTree.pl -FB100S21XV /pfam2pwd_out/IL5.pwd IL5_tree" + + + Tree calculation based on precalculated pairwise distances + and matching alignment + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Consensus tree will have branch length values. + Precalculated pairwise distances and the matching (processed) + alignment are the output of "pfam2pwd.pl", number of bootstraps + needs to match the one used for the pwds, matrix needs to match + the one used for the pwds. + + makeTree.pl <-options, includes "UF"> + [path/name for temporary directory to be created] + + Example: + "% makeTree.pl -UFLB100S21XV /pfam2pwd_out/IL5.pwd /pfam2pwd_out/IL5.aln IL5_tree" + + + Options + ------- + + N : Suggestion to remove columns in the alignment which contain gaps. + Gaps are not removed, if, after removal of gaps, the resulting alignment would + be shorter than $MIN_NUMBER_OF_AA. Default is not to remove gaps. + Bx : Number of bootstrapps. B0: do not bootstrap. Default is 100 bootstrapps. + The number of bootstrapps should be divisible by 10. + U : Use TREE-PUZZLE to calculate ML branchlengths for consesus tree, in case of + bootstrapped analysis. + J : Use JTT matrix (Jones et al. 1992) in TREE-PUZZLE, default: PAM. + L : Use BLOSUM 62 matrix (Henikoff-Henikoff 92) in TREE-PUZZLE, default: PAM. + M : Use mtREV24 matrix (Adachi-Hasegawa 1996) inTREE-PUZZLE, default: PAM. + W : Use WAG matrix (Whelan-Goldman 2000) in TREE-PUZZLE, default: PAM. + T : Use VT matrix (Mueller-Vingron 2000) in TREE-PUZZLE, default: PAM. + P : Let TREE-PUZZLE choose which matrix to use, default: PAM. + E : Exact parameter estimates in TREE-PUZZLE, default: Approximate. + Model of rate heterogeneity in TREE-PUZZLE (default: Uniform rate) + g : 8 Gamma distributed rates + t : Two rates (1 invariable + 1 variable) + m : Mixed (1 invariable + 8 Gamma rates) + R : Randomize input order in PHYLIP NEIGHBOR. + A : Use PHYLIP PROTPARS instead of NEIGHBOR (and no pairwise distance calculation). + jx : Number of jumbles when using PHYLIP PROTPARS (random seed set with Sx). + Sx : Seed for random number generator(s). Must be 4n+1. Default is 9. + X : To keep multiple tree file (=trees from bootstrap resampled alignments). + D : To keep (and create in case of bootstrap analysis) pairwise distance matrix file. + This is created form the not resampled (original) alignment. + C : Calculate pairwise distances only (no tree). Bootstrap is always 1. + No other files are generated. + F : Pairwise distance (pwd) file as input (instead of alignment). + No -D, -C, and -N options available in this case. + V : Verbose. + # : Only for rio.pl: Do not calculate consensus tree ("I" option in rio.pl). + + +END + +} ## printUsage diff --git a/forester/archive/perl/mt.pl b/forester/archive/perl/mt.pl new file mode 100755 index 0000000..dd04ca1 --- /dev/null +++ b/forester/archive/perl/mt.pl @@ -0,0 +1,261 @@ +#!/usr/bin/perl -W + +# mt.pl +# ----- +# +# Copyright (C) 2003 Christian M. Zmasek +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Version: 1.000 +# Created on: 09/05/03 +# Last modified: 09/05/03 +# +# +# +# Calculates trees based on all alignments/files in a given directory using +# makeTree.pl. +# +# + +use strict; +use FindBin; +use lib $FindBin::Bin; +use rio_module2; + + +my $PREPROCESSING_COMMAND = ""; +my $PERFORM_PREPROCESSING = 0; + +my $POSTPROCESSING_COMMAND = "/nfs/dm3/homedir1/czmasek/RIO1.24/perl/extractSpecies.pl"; +my $PERFORM_POSTPROCESSING = 1; + + +my $MY_TEMP_DIR = $TEMP_DIR_DEFAULT; # $TEMP_DIR_DEFAULT is inherited + # from rio_module.pm + + + + +my $options = ""; # Options for makeTree.pl, see makeTree.pl. + + +my $suffix = ""; +my $use_suffixes = 0; +my $input_dir = ""; +my $output_dir = ""; + +my $i = 0; +my $filename = ""; +my @filenames = (); + + + + + + +# Analyzes the options: +# --------------------- + +unless ( @ARGV == 3 || @ARGV == 4 ) { + &printUsage(); +} + +$options = $ARGV[ 0 ]; +$input_dir = $ARGV[ 1 ]; +$output_dir = $ARGV[ 2 ]; + +if ( @ARGV == 3 ) { + $use_suffixes = 0; +} +elsif ( @ARGV == 4 ) { + $use_suffixes = 1; + $suffix = $ARGV[ 3 ]; +} + + +$input_dir = &addSlashAtEndIfNotPresent( $input_dir ); +$output_dir = &addSlashAtEndIfNotPresent( $output_dir ); +$MY_TEMP_DIR = &addSlashAtEndIfNotPresent( $MY_TEMP_DIR ); + + + + +# This adds a "-" before the options for makeTree: +# ------------------------------------------------ +unless ( $options =~ /^-/ ) { + $options = "-".$options; +} + + + + + +# This creates the temp file: +# -------------------------- + +my $time = time; +my $ii = 0; + +my $temp_file = $MY_TEMP_DIR."mt".$time.$ii; + +while ( -e $temp_file ) { + $ii++; + $temp_file = $MY_TEMP_DIR."mt".$time.$ii; +} + + + +opendir( DIR, $input_dir ) || error( "Cannot open directory \"$input_dir\": $!" ); + +$i = 0; + +while( defined( $filename = readdir( DIR ) ) ) { + if ( $filename =~ /^\.\.?$/ ) { + next; + } + if ( $use_suffixes == 1 && $filename !~ /$suffix$/ ) { + next; + } + + $filenames[ $i ] = $filename; + $i++; +} + +close( DIR ); + +$i = 0; + +FOREACH: foreach $filename ( @filenames ) { + + # If the corresponding tree seems to already exists, do next one. + if ( -e "$output_dir$filename.nhx" ) { + next FOREACH; + } + + print "\n\n\n\n"; + print "MT.PL\n"; + print "working on: $filename\n"; + + print "[tree calculation $i]\n"; + print "=====================================================================\n\n\n"; + + + unlink( "$output_dir$filename.aln", + "$output_dir$filename.log", + "$output_dir$filename.nbd" ); + + print( "MT.PL: executing:\n" ); + + my $inputfile = $input_dir.$filename; + + my $outputfilename = ""; + + if ( $use_suffixes == 1 ) { + $outputfilename = $output_dir . $filename; + $outputfilename =~ s/$suffix$//; + $outputfilename =~ s/\.$//; + $outputfilename .= ".nhx"; + } + else { + $outputfilename = $output_dir . $filename . ".nhx"; + } + + + + if ( $PERFORM_PREPROCESSING == 1 ) { + my $pre_command = "$PREPROCESSING_COMMAND"; + + print( "$pre_command\n" ); + system( $pre_command ) && &error( "Could not execute \"$pre_command\"" ); + } + + $MAKETREE = "/nfs/dm3/homedir1/czmasek/RIO1.24/perl/makeTree2.pl"; # <<<<<<<<<<<<<<<<<<<<<<<-------------------~~~~~~~~~~~~~~~~~~~~~~~ + + my $command = "$MAKETREE $options $inputfile $outputfilename"; + + print( "$command\n" ); + system( $command ) && &error( "Could not execute \"$command\"" ); + + + + if ( $PERFORM_POSTPROCESSING == 1 ) { + my $post_command = "$POSTPROCESSING_COMMAND $outputfilename"; + + print( "$post_command\n" ); + system( $post_command ) && &error( "Could not execute \"$post_command\"" ); + } + + + + $i++; + +} + + + +print( "\n\n\nMT.PL: Done!\n" ); + +exit( 0 ); + + + + + + +sub error{ + + my $text = $_[ 0 ]; + + print( "\nxt.pl: ERROR:\n" ); + print( "$text\n\n" ); + + exit( -1 ); + +} + + + + +sub printUsage { + print "\n"; + print " mt.pl\n"; + print " _____\n"; + print " \n"; + print " Copyright (C) 2003 Christian M. Zmasek\n"; + print " All rights reserved\n"; + print "\n"; + print " Author: Christian M. Zmasek\n"; + print " zmasek\@genetics.wustl.edu\n"; + print " http://www.genetics.wustl.edu/eddy/forester/\n"; + print "\n"; + print "\n"; + print " Purpose\n"; + print " -------\n"; + print "\n"; + print " Tree construction using makeTree.pl on all alignments/files\n"; + print " in a given directory.\n"; + print "\n"; + print "\n"; + print " Usage\n"; + print " -----\n"; + print "\n"; + print " mt.pl [suffix for alignments to be used in input directory]\n"; + print "\n"; + print " If a suffix is given, it will be removed for the output files.\n"; + print "\n"; + print "\n"; + print " Example\n"; + print " -------\n"; + print "\n"; + print " \"mt.pl NS21UTRB100DX alignments/ trees/ .aln\"\n"; + print "\n"; + print "\n"; + print "\n"; + exit( -1 ); + +} diff --git a/forester/archive/perl/multifetch.pl b/forester/archive/perl/multifetch.pl new file mode 100755 index 0000000..82205df --- /dev/null +++ b/forester/archive/perl/multifetch.pl @@ -0,0 +1,71 @@ +#!/usr/bin/perl + +# multifetch.pl [options] +# +# Fetch all the seqs on the list. The list is a file with one line +# per sequence; the first field is the key. +# +# Options: +# -d : domain fetch - list is in GDF format +# -n : include this many extra residues upstream (-d only) +# -c : include this many extra residues downstream (-d only) +# -f : fetch in FASTA instead of native format +# -g : use getseq from , not fetch from main databases. +# This always gives FASTA output. +# -D : specify a source database, same usage as getseq: +# -Dsw SwissProt +# -Dpir PIR +# -Dem EMBL +# -Dgb GenBank +# -Dwp WormPep +# -Dowl OWL + + +use FindBin; +use lib $FindBin::Bin; +use rio_module; +require "getopts.pl"; + + +&Getopts('c:n:dfg:D:'); +if ($opt_c) { $extra_c = $opt_c; } +if ($opt_n) { $extra_n = $opt_n; } +if ($opt_d) { $domains = 1; } +if ($opt_f) { $fmtarg = "-Ffasta";} else {$fmtarg = ""; } +if ($opt_g) { $filearg = "-d$opt_g ";} else {$filearg = ""; } +if ($opt_D) { $dbarg = "-D$opt_D "; } else {$dbarg = ""; } + + +while (<>) { + if ($domains) { + if (($name, $from, $to, $source) = /^\s*(\S+)\s+(\d+)\s+(\d+)\s+(\S+)/){ + if ($from < $to) { + $from -= $opt_n; + $to += $opt_c; + } + else { + $from += $opt_n; + $to -= $opt_c; + } + + system("$SFE $filearg $dbarg $fmtarg -r \"$name\" -f $from -t $to \"$source\"") + && die "\n\n$0: Unexpected error: Could not execute \"$SFE $filearg $dbarg $fmtarg -r \"$name\" -f $from -t $to \"$source\"\": $!"; + } + } else { + if (/^\s*(\S+)/) { + $key = $1; + + system("$SFE $filearg $dbarg $fmtarg \"$key\"") + && die "\n\n$0: Unexpected error: Could not execute \"$SFE $filearg $dbarg $fmtarg \"$key\"\": $!"; + } + } +} + +# 01/30/02 +# CZ +# Added usage of rio_module.pm, $SFE for sfetch. + +# Thu Apr 10 18:27:40 1997 +# - added -D option +# - simplified from six different getseq calls to two + diff --git a/forester/archive/perl/nph-riowebserver b/forester/archive/perl/nph-riowebserver new file mode 100755 index 0000000..dee1123 --- /dev/null +++ b/forester/archive/perl/nph-riowebserver @@ -0,0 +1,939 @@ +#! /usr/bin/perl -W + +# nph-riowebserver.pl +# ------------------- +# +# Copyright (C) 2002 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Created: 02/18/02 +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified: 02/20/02 + + +use strict; +use CGI; +use queue; + + +my $RIOPL = "/home/rio/forester/perl/rio4P.pl"; +my $JAVA = "/home/rio/j2sdk1.4.0/bin/java"; +my $TEST_NHX = $JAVA." -cp /home/rio/forester/java forester.tools.testNHX"; +my $TEMPDIR = "/home/rio/rws_temp"; +my $SPECIESTREE = "/home/rio/forester/data/species/tree_of_life_bin_1-4.nhx"; +my $SPECIESLIST = "/home/rio/forester/data/species/tree_of_life_bin_1-4_species_list"; +my $hmm_search_url_A = "http://pfam.wustl.edu/cgi-bin/nph-hmmsearch?protseq="; +my $hmm_search_url_B = "&search_mode=merge&cutoff_strategy=ga"; + +my $RIO_ALN_DIRECTORY = "/data/rio/ALNs/"; +my $RIO_NBD_DIRECTORY = "/data/rio/NBDs/"; +my $ALIGN_FILE_SUFFIX = ".aln"; +my $ALIGN_NBD_FILE = ".nbd"; +my $DIR_FOR_TREES = "/var/www/html/trees/"; # Directory for NHX files to be read by ATV applet +my $URL_FOR_TREES = "http://forester.wustl.edu/trees/"; # URL base for NHX files to be read by ATV applet +my $CODE_BASE_FOR_ATV_APPLET = "http://forester.wustl.edu/applets/"; # URL for ATV applet (jar file) +my $TARGET_FILES_IN_DIR_FOR_TREES = 100; # If the number of nhx files in $DIR_FOR_TREES is lager then $MAX_FILES_IN_DIR_FOR_TREES +my $MAX_FILES_IN_DIR_FOR_TREES = 120; # the oldest files will be deleted until the number is down to $TARGET_FILES_IN_DIR_FOR_TREES. +my $O_THRESHOLD_DEFAULT = 0; +my $SN_THRESHOLD_DEFAULT = 0; +my $U_THRESHOLD_DEFAULT = 50; +my $SEED_FOR_RANDOM_DEFAULT = 41; +my $SORT_DEFAULT = 12; +my $MIN_SIZE = 5; # Minimal size (in chars) for input files +my $MAX_SIZE = 10000; # Maximal size (in chars) for input files +my $MAX_LINES = 1000; # Maximal lines for input files +my $RIO_OPTIONS = "U=60 Y=2 X=2 Z=2 I C E x +"; +my $CONTACT = "zmasek\@genetics.wustl.edu"; +my $VERSION = "0.3"; + + +my $o_threshold = 0; +my $sn_threshold = 0; +my $u_threshold = 0; +my $seed_for_random = 0; +my $sort = 0; +my $size_d = 0; +my $size_c = 0; +my $entry_time = 0; +my $njobs = 0; +my $njobs_thisuser = 0; +my $user_defined_tree = 0; + + + +my $query = ""; +my $query_seq = ""; +my $query_seq_file = ""; +my $tree_file = ""; +my $pfam_domain = ""; +my $species = ""; +my $output_tree = ""; +my $output_up = ""; +my $remote_addr = ""; +my $oneline = ""; +my $aln = ""; +my $speciestree = ""; +my $output = ""; +my $query_sequence = ""; # To be submitted to hmmsearch website, if necessary. +my $link_to_hmmsearch = ""; + +my @lines = (); +my %Species_names_hash = (); + + +$| = 1; + +$query = new CGI; + + +$query_seq = $query->param( 'query_seq' ); +$query_seq_file = $query->upload( 'query_seq_file' ); +$pfam_domain = $query->param( 'pfam_domain' ); +$species = $query->param( 'species' ); +$o_threshold = $query->param( 'o_threshold' ); +$sn_threshold = $query->param( 'sn_threshold' ); +$u_threshold = $query->param( 'u_threshold' ); +$seed_for_random = $query->param( 'seed_for_random' ); +$output_up = $query->param( 'output_up' ); +$sort = $query->param( 'sort_priority' ); +$tree_file = $query->upload( 'tree_file' ); + +$remote_addr = $ENV{ REMOTE_ADDR }; + + +# NPH header +# ---------- +print $query->header( -status=>"200 OK", + -server=>"$ENV{ SERVER_SOFTWARE }", + -nph=>1 ); + + + + +# Prints the first HTML +# --------------------- +print "\n"; +print "\n"; +print "\n"; +print "[ RIO SERVER | phylogenomic analysis of a protein sequence ]\n"; +print "\n"; +print "\n"; + +&print_ATV_JavaScript(); + +print "\n"; +print "\n"; + +&print_navbar(); + + + +# Reads in, cleans up and checks +# ------------------------------ + +if ( ( !defined( $query_seq_file ) && !defined( $query_seq ) ) +|| ( $query_seq_file !~ /\w+/ && $query_seq !~ /\w+/ ) ) { + &nph_user_error( "need to specify a sequence file or submit a sequence directly" ); +} + +if ( $query_seq_file =~ /\w+/ && $query_seq =~ /\w+/ ) { + &nph_user_error( "cannot specify a sequence file and submit a sequence directly" ); +} + + +if ( $query_seq_file =~ /\w+/ ) { + # Reading in from file + &readInFile( $query_seq_file ); +} +else { + # "cut and paste" + @lines = split( /^/, $query_seq ); +} + + +if ( $lines[ 0 ] =~ /^\s*>/ ) { # FASTA + shift( @lines ); +} + + +foreach $oneline ( @lines ) { + $size_d += length( $oneline ); + if ( $size_d > $MAX_SIZE ) { + &nph_user_error( "query sequence is too long (>$MAX_SIZE)" ); + } + $oneline =~ s/[^A-Za-z]//g; + $size_c += length( $oneline ); +} +if ( $size_c < $MIN_SIZE ) { + &nph_user_error( "query sequence is too short (<$MIN_SIZE)" ); +} + + +# Writes a temp file for the query sequence +open( PROT, ">$TEMPDIR/$$.query" ) || &nph_fatal_error( "failed to open temp query file" ); +foreach $oneline ( @lines ) { + print PROT $oneline; + $query_sequence .= $oneline; +} +close( PROT ); + +if ( !defined( $species ) || $species !~ /\w+/ || length( $species ) < 2 ) { + &nph_user_error( "need to specify the species of the query sequence" ); +} + +$link_to_hmmsearch = "
    >> click here to perform hmmsearch on query sequence << "; + +if ( !defined( $pfam_domain ) || $pfam_domain !~ /\w+/ || length( $pfam_domain ) < 1 ) { + &nph_user_error( "need to specify a name for a pfam domain of the query sequence
    $link_to_hmmsearch" ); +} + +if ( length( $species ) > 5 ) { + &nph_user_error( "invalid species name" ); +} +$species =~ s/[^A-Za-z0-9]//g; +if ( length( $species ) < 2 ) { + &nph_user_error( "invalid species name" ); +} + +if ( length( $pfam_domain ) > 40 ) { + &nph_user_error( "invalid pfam domain name
    $link_to_hmmsearch" ); +} +$pfam_domain =~ s/[\s,;\.><\|\\\/\(\)!@\#\$%&\*\^=]//g; +if ( length( $pfam_domain ) < 1 ) { + &nph_user_error( "invalid pfam domain name
    $link_to_hmmsearch" ); +} + +if ( defined( $tree_file ) && $tree_file =~ /\w+/ ) { + $user_defined_tree = 1; +} + +$species =~ tr/a-z/A-Z/; + +if ( $user_defined_tree != 1 ) { + &checkForPresenceOfSpecies( $species ); +} + +$aln = $RIO_ALN_DIRECTORY.$pfam_domain.$ALIGN_FILE_SUFFIX; + +if ( &checkForTextFilePresence( $aln ) != 1 ) { + &nph_user_error( "no pairwise distances precalculated for pfam domain \"$pfam_domain\"
    $link_to_hmmsearch" ); +} + + +if ( checkForNumberBetween0and100( $o_threshold ) != 1 ) { + $o_threshold = $O_THRESHOLD_DEFAULT; +} +if ( checkForNumberBetween0and100( $sn_threshold ) != 1 ) { + $sn_threshold = $SN_THRESHOLD_DEFAULT; +} +if ( checkForNumberBetween0and100( $u_threshold ) != 1 ) { + $u_threshold = $U_THRESHOLD_DEFAULT; +} +if ( !defined( $seed_for_random ) || $seed_for_random !~ /\d/ +|| $seed_for_random =~ /\D/ || $seed_for_random > 10000 || $seed_for_random < 0 ) { + $seed_for_random = $SEED_FOR_RANDOM_DEFAULT; +} +if ( !defined( $sort ) +|| $sort > 16 || $sort < 12 ) { + $sort = $SORT_DEFAULT; +} + +if ( defined( $output_up ) && $output_up eq "yes" ) { + $RIO_OPTIONS .= " p"; +} +else { + $u_threshold = -1; +} + + + + + + + + +# User defined species tree is dealt with here +# -------------------------------------------- + +if ( $user_defined_tree == 1 ) { + &readInFile( $tree_file ); + $size_d = 0; + $size_c = 0; + foreach $oneline ( @lines ) { + $size_d += length( $oneline ); + if ( $size_d > $MAX_SIZE ) { + &nph_user_error( "user defined species tree file is too long (>$MAX_SIZE)" ); + } + $oneline =~ s/;\|,<>\s//g; + $oneline =~ tr/a-z/A-Z/; + + $size_c += length( $oneline ); + } + if ( $size_c < $MIN_SIZE ) { + &nph_user_error( "user defined species tree file is too short (<$MIN_SIZE)" ); + } + + open( TREE, ">$TEMPDIR/$$.tree" ) || &nph_fatal_error( "failed to open temp species tree file" ); + foreach $oneline ( @lines ) { + print TREE $oneline; + } + close( TREE ); + + $speciestree = "$TEMPDIR/$$.tree"; + system( "$TEST_NHX $speciestree" ) + && nph_user_error( "user defined species tree is not in proper NHX format (or is unrooted, or contains multifurcations) $!" ); + +} +else { + $speciestree = $SPECIESTREE; +} + + + +# Join the queue, using queue.pm API +# ---------------------------------- + +$entry_time = time; + +( $njobs, $njobs_thisuser ) = &queue::CheckQueue( "rioqueue", $remote_addr, $TEMPDIR ); +if ( $njobs > 5 ) { + &nph_user_error("The server is currently swamped, with $njobs searches in the queue.
    Please come back later! Sorry."); +} +if ( $njobs_thisuser > 0 ) { + &nph_user_error( "We already have $njobs_thisuser searches in the queue from + your IP address ($remote_addr). Please wait until some or all of them + finish.
    If you think you got this message in error, wait a minute or so and + resubmit your job. You probably hit your browser's stop button after you + started a search - but that doesn't stop our compute cluster, it just breaks + your connection to us. You won't be able to start a new search until the + cluster's done." ); +} +if ( $njobs > 0 ) { + print_waiting_message( $njobs ); +} +&queue::WaitInQueue( "rioqueue", $remote_addr, $TEMPDIR, $$, 10 ); # wait with ten-second granularity. + + + + +# Prints "waiting" header +# ----------------------- + +my $number_of_seqs = &getNumberOfSeqsFromNBDfile( $RIO_NBD_DIRECTORY.$pfam_domain.$ALIGN_NBD_FILE ); +my $estimated_time = &estimateTime( $number_of_seqs ); + +print( "

    RIO: Starting search. Estimated time: $estimated_time seconds per domain (assuming all rio nodes are running). Please wait...

    \n" ); + + + + +# Runs RIO +# -------- + +&run_rio( $pfam_domain, # domain + "$TEMPDIR/$$.query", # query file name + "$TEMPDIR/$$.outfile", # output file name + "QUERY_$species", # name for query + $speciestree, # species tree + $RIO_OPTIONS, # more options + "$TEMPDIR/$$", # temp file + $o_threshold, + $sn_threshold, + $u_threshold, + $seed_for_random, + $sort ); + + + +# Done +# ---- + +&showATVlinks(); + + + +# Cleanup +unlink( "$TEMPDIR/$$.query", "$TEMPDIR/$$.tree" ); + +$output .= "

     

    \n"; + +# Leaves the queue in an orderly fashion. +&queue::RemoveFromQueue( "rioqueue", $remote_addr, $TEMPDIR, $$ ); + +print( $output ); + +&print_footer(); + +&removeFiles( $DIR_FOR_TREES, $TARGET_FILES_IN_DIR_FOR_TREES, $MAX_FILES_IN_DIR_FOR_TREES ); + +exit( 0 ); + + + + + + + + +# Methods +# ------- + + + +# Last modified: 02/19/02 +sub run_rio { + + my $pfam_name = $_[ 0 ]; + my $query_file = $_[ 1 ]; + my $output_file = $_[ 2 ]; + my $name_for_query = $_[ 3 ]; + my $species_tree_file = $_[ 4 ]; + my $more_options = $_[ 5 ]; + my $tmp_file_rio = $_[ 6 ]; + my $t_o = $_[ 7 ]; + my $t_sn = $_[ 8 ]; + my $t_u = $_[ 9 ]; + my $seed = $_[ 10 ]; + my $sort = $_[ 11 ]; + + my $start_time = time; + + my $options_for_rio = ""; + + $options_for_rio .= ( " A=".$pfam_name ); + $options_for_rio .= ( " Q=".$query_file ); + $options_for_rio .= ( " O=".$output_file ); + $options_for_rio .= ( " N=".$name_for_query ); + $options_for_rio .= ( " S=".$species_tree_file ); + $options_for_rio .= ( " j=".$tmp_file_rio ); + $options_for_rio .= ( " L=".$t_o ); + $options_for_rio .= ( " B=".$t_sn ); + if ( $t_u != -1 ) { + $options_for_rio .= ( " v=".$t_u ); + } + $options_for_rio .= ( " y=".$seed ); + $options_for_rio .= ( " P=".$sort ); + $options_for_rio .= ( " ".$more_options ); + + $output = `$RIOPL 1 $options_for_rio`; + + if ( $? != 0 ) { + nph_rio_error(); + } + my $finish_time = time; + my $wait_time = $finish_time - $entry_time; + my $cpu_time = $finish_time - $start_time; + + + + # Logs the results. + my $date = `date`; + chop( $date ); + open ( LOGFILE, ">>$TEMPDIR/log") || &nph_fatal_error( "could not open log file" ); + flock( LOGFILE, 2 ); + print LOGFILE "$date queue: $njobs wait: $wait_time true_cpu: $cpu_time pid: $$ addr: $ENV{'REMOTE_ADDR'} host: $ENV{'REMOTE_HOST'} pfam: $pfam_name\n"; + flock( LOGFILE, 8 ); + close ( LOGFILE ); + + return; + +} ## run_rio + + + + +# Reads a file into "@lines" +# Last modified: 02/19/02 +sub readInFile { + my $file = $_[ 0 ]; + my $l = 0; + my $s = 0; + @lines = (); + + $file =~ s/;\|,<>&\s//g; + + while( <$file> ) { + $s += length( $_ ); + if ( $s > $MAX_SIZE ) { + &nph_user_error( "query sequence is too long (>$MAX_SIZE)" ); + } + $l++; + if ( $l > $MAX_LINES ) { + &nph_user_error( "file has too many lines (>$MAX_LINES)" ); + } + + push( @lines, $_ ); + + } + +} ## readInFile + + + + +# Reads in (SWISS-PROT) species names from a file. +# Names must be separated by newlines. +# Lines beginning with "#" are ignored. +# A possible "=" and everything after is ignored. +# One argument: species-names-file name +# Last modified: 02/19/02 +sub readSpeciesNamesFile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $species = ""; + + open( IN_RSNF, "$infile" ) || &nph_fatal_error( "could not open species list" ); + while ( $return_line = ) { + if ( $return_line !~ /^\s*#/ && $return_line =~ /(\S+)/ ) { + $species = $1; + $species =~ s/=.+//; + $Species_names_hash{ $species } = ""; + } + } + close( IN_RSNF ); + + return; +} ## readSpeciesNamesFile + + + +# Last modified: 02/19/02 +sub checkForNumberBetween0and100 { + + my $x = $_[ 0 ]; + + if ( !defined( $x ) || $x !~ /\d/ || $x =~ /\D/ || $x > 100 || $x < 0 ) { + return 0; + } + else { + return 1; + } + +} ## checkForNumberBetween0and100 + + + +# Last modified: 02/19/02 +sub getNumberOfSeqsFromNBDfile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $number_of_seqs = 0; + + open( C, "$infile" ) || &nph_fatal_error( "could not open NBD file" ); + while ( $return_line = ) { + if ( $return_line =~ /^\s*(\d+)\s*$/ ) { + $number_of_seqs = $1; + last; + } + } + close( C ); + return $number_of_seqs; + +} ## getNumberOfSeqsFromNBDfile + + + +# Last modified: 02/19/02 +sub print_waiting_message { + + my $njobs = $_[ 0 ]; + + print( "

    \n" ); + print( "RIO: There are $njobs searches queued ahead of you on the RIO server. Please wait...\n" ); + print( "

    \n" ); + + return; + +} ## print_waiting_message + + + +# Last modified: 02/19/02 +sub checkForPresenceOfSpecies { + + my $species = $_[ 0 ]; + + &readSpeciesNamesFile( $SPECIESLIST ); + unless( exists( $Species_names_hash{ $species } ) ) { + &nph_user_error( "species \"$species\" not present in currently used species tree" ); + } + + return; +} ## checkForPresenceOfSepecies + + + +# Last modified: 02/19/02 +sub checkForTextFilePresence { + + my $file = $_[ 0 ]; + + if ( ( -s $file ) && ( -f $file ) && ( -T $file ) ) { + return 1; + } + else { + return 0; + } + +} ## checkForTextFilePresence + + + + + +# Last modified: 02/19/02 +sub print_footer { + + &print_navbar(); + &print_contact(); + print( "\n" ); + print( "\n" ); + + return; + +} ## print_footer + + + +# Last modified: 02/19/02 +sub print_navbar { + + print( "
    \n" ); + print( "

    \n" ); + print( "RIO $VERSION \n" ); + print( "phylogenomic analysis of a protein sequence | " ); + print( "help | " ); + print( "forester/rio home | " ); + print( "pfam\n" ); + print( "

    \n" ); + print( "
    \n" ); + + return; + +} ## print_navbar + + + +# Last modified: 02/19/02 +sub print_contact { + + print( "

    comments, questions, flames? email $CONTACT

    \n" ); + + return; + +} ## print_contact + + + +# Last modified: 02/19/02 +sub showATVlinks { + + my $domain_no = 0; + + if ( -s "$TEMPDIR/$$.outfile.rio.nhx" ) { + $domain_no = 1; + system( "mv", "$TEMPDIR/$$.outfile.rio.nhx", $DIR_FOR_TREES ) + && &nph_fatal_error( "could not mv $TEMPDIR/$$.outfile.rio.nhx" ); + } + elsif ( -s "$TEMPDIR/$$.outfile.rio-1.nhx" ) { + $domain_no = 1; + while ( -s "$TEMPDIR/$$.outfile.rio-$domain_no.nhx" ) { + system( "mv", "$TEMPDIR/$$.outfile.rio-$domain_no.nhx", $DIR_FOR_TREES ) + && &nph_fatal_error( "could not mv $TEMPDIR/$$.outfile.rio-$domain_no.nhx.nhx" ); + $domain_no++; + } + + } + + + if ( $domain_no == 1 ) { + $output .= "

     

    \n"; + $output .= "\n"; + $output .= "\n"; + $output .= "
    \n"; + $output .= "download NHX file describing this tree
    \n"; + } + elsif ( $domain_no > 1 ) { + $output .= "

     

    \n"; + $output .= "\n"; + $output .= "\n"; + } + $output .= "
    \n"; + $output .= "download NHX file for domain #$x
    \n"; + } + + return; + +} ## showATVlinks + + +# Removes output tree (NHX) files if more than $_[ 2 ] in $_[ 0 ] +# Removes until $_[ 1 ] are left +# Last modified: 02/19/02 +sub removeFiles { + + my $dir = $_[ 0 ]; + my $target = $_[ 1 ]; + my $max = $_[ 2 ]; + + my $files = &countFilesInDir( $dir ); + + if ( $files > $max ) { + + my $diff = $files - $target; + + for ( my $i = 0; $i < $diff; $i++ ) { + &removeOldestFile( $dir ); + } + } + + return; +} ## removeFiles + + + +# Last modified: 02/19/02 +sub countFilesInDir { + + my $dir = $_[ 0 ]; + my $file = ""; + my $c = 0; + + opendir( DIR, $dir ) || &nph_fatal_error( "could not open dir $dir" ); + while( defined ( $file = readdir( DIR ) ) ) { + unless ( $file =~ /\d/ ) { + next; + } + $c++; + } + closedir( DIR ); + + return( $c ); + +} ## countFilesInDir + + + +# Last modified: 02/19/02 +sub removeOldestFile { + my $dir = $_[ 0 ]; + my $file = ""; + my $oldest = ""; + my $smallest_time = 0; + my $time = 0; + my $first = 1; + + opendir( DIR, $dir ) || &nph_fatal_error( "could not open dir $dir" ); + while( defined ( $file = readdir( DIR ) ) ) { + unless ( $file =~ /\d/ ) { + next; + } + $file =~ /(\d+)/; + $time = $1; + if ( $first == 1 ) { + $first = 0; + $smallest_time = $time; + $oldest = $file + } + elsif ( $time < $smallest_time ) { + $smallest_time = $time; + $oldest = $file; + } + } + closedir( DIR ); + + unlink( $dir.$oldest ) || &nph_fatal_error( "could not delete $oldest" ); + + return; + +} ## removeOldestFile + + + +# Last modified: 02/19/02 +sub print_ATV_JavaScript { + +print < + + + +END + + return; + +} ## print_ATV_JavaScript + + + +# Last modified: 02/19/02 +sub estimateTime { + my $number_of_seqs = $_[ 0 ]; + my $estimated_time = 0; + if ( $number_of_seqs <= 50 ) { + $estimated_time = 15; + } + elsif ( $number_of_seqs <= 100 ) { + $estimated_time = 20; + } + elsif ( $number_of_seqs <= 150 ) { + $estimated_time = 30; + } + elsif ( $number_of_seqs <= 200 ) { + $estimated_time = 35; + } + elsif ( $number_of_seqs <= 250 ) { + $estimated_time = 40; + } + elsif ( $number_of_seqs <= 300 ) { + $estimated_time = 60; + } + elsif ( $number_of_seqs <= 400 ) { + $estimated_time = 100; + } + elsif ( $number_of_seqs <= 500 ) { + $estimated_time = 160; + } + elsif ( $number_of_seqs <= 600 ) { + $estimated_time = 390; + } + elsif ( $number_of_seqs <= 700 ) { + $estimated_time = 530; + } + elsif ( $number_of_seqs <= 800 ) { + $estimated_time = 750; + } + elsif ( $number_of_seqs <= 900 ) { + $estimated_time = 850; + } + else { + $estimated_time = $number_of_seqs; + } + return $estimated_time; +} ## estimateTime + + + +# Last modified: 02/19/02 +sub nph_rio_error { + + my $mesg = $_[ 0 ]; + + &queue::RemoveFromQueue( "rioqueue", $remote_addr, $TEMPDIR, $$ ); + + unlink( "$TEMPDIR/$$.query", "$TEMPDIR/$$.tree" ); + + + + if ( $user_defined_tree == 1 ) { + print( "

    RIO error

    \n" ); + print( "

    [the RIO analysis appearently died]

    \n" ); + print( "

    the most likely source of this error is an invalid user defined species tree

    \n" ); + } + else { + print( "

    RIO server fatal error

    \n" ); + print( "

    [the RIO analysis appearently died for unknown reasons]

    \n" ); + print( "

    This type of error should not happen

    \n" ); + print( "

    \n" ); + print( "We may have logged it automatically, but we would appreciate it if you would also notify us at\n" ); + print( "$CONTACT\n" ); + print( "

    \n" ); + } + print( "

     

    \n" ); + + &print_footer(); + system( "rm -r $TEMPDIR/$$"."0" ); + die; + +} ## nph_fatal_error + + + +# Last modified: 02/19/02 +sub nph_fatal_error { + + my $mesg = $_[ 0 ]; + + &queue::RemoveFromQueue( "rioqueue", $remote_addr, $TEMPDIR, $$ ); + + unlink( "$TEMPDIR/$$.query", "$TEMPDIR/$$.tree" ); + + print( "

    RIO server fatal error

    \n" ); + print( "

    [$mesg : $!]

    \n" ); + print( "

    This type of error should not happen

    \n" ); + print( "

    \n" ); + print( "We may have logged it automatically, but we would appreciate it if you would also notify us at\n" ); + print( "$CONTACT\n" ); + print( "

    \n" ); + print( "

     

    \n" ); + + + &print_footer(); + die; + +} ## nph_fatal_error + + + +# Last modified: 02/19/02 +sub nph_user_error { + + my $mesg = $_[ 0 ]; + + &queue::RemoveFromQueue( "rioqueue", $remote_addr, $TEMPDIR, $$ ); + + unlink( "$TEMPDIR/$$.query", "$TEMPDIR/$$.tree" ); + + print( "

    user error

    \n" ); + print( "

    \n" ); + print( "$mesg\n" ); + print( "

    \n" ); + print( "

     

    \n" ); + + + &print_footer(); + + die "nph-riowebserver handled: $mesg"; + +} ## nph_user_error + + + + diff --git a/forester/archive/perl/p7extract.pl b/forester/archive/perl/p7extract.pl new file mode 100755 index 0000000..fe6a69e --- /dev/null +++ b/forester/archive/perl/p7extract.pl @@ -0,0 +1,116 @@ +#! /usr/bin/perl + +# Usage: p7extract.pl +# +# Converts hmmsearch output to GLF or GDF. GLF is the default. +# Order is sorted by bit score +# +# Options: +# -C : extract Pfam coverage statistics (NAR paper) +# -d : extract domains in GDF format +# -t : report only hits better than evalue of +# -s : include scores in output +# -e : include evalues in output +# -l : include negative log evalues in output for easy sorting +# +# Note: p7extract.pl -sel gives the extended GLF format expected by +# the PROFMARK benchmark scripts + +require "getopts.pl"; + +$ethresh = 0; + +&Getopts('Cdt:sel'); +if ($opt_C) { $coverage_mode = 1; $gdfmode = 1;} +if ($opt_d) { $gdfmode = 1; } +if ($opt_t) { $ethresh = $opt_t; } +if ($opt_s) { $do_scores = 1; } +if ($opt_e) { $do_eval = 1; } +if ($opt_l) { $do_log = 1; } + +$status = 1; # -C only: assume we will fail, 'til proven otherwise + +while (<>) +{ + if (/^Query HMM:\s+(\S+)/) {$hmmname = $1;} + if (/^Scores for complete sequences/) {$indom = 0; $inseq = 1;} + if (/^Parsed for domains/) {$indom = 1; $inseq = 0;} + if (/^Histogram of all scores/) {$indom = 0; $inseq = 0;} + if (/^Total sequences searched/) {$status = 0;} # looks like we've seen output + + if ( $inseq && + (($id, $sc, $ev, $nd) = /(\S+).+\s(\S+)\s+(\S+)\s+(\d+)\s*$/)) + { + if (($ethresh == 0 || $ev < $ethresh) && $show_key{$id} == 0) + { + if (! $gdfmode) { + $show_key{$id} = 1; # remember this name + $show_sc{$id} = $sc; + $show_ev{$id} = $ev; + } + $numseqs++; + } + } + + if ($gdfmode && $indom && + (($id, $sqfrom, $sqto, $sc, $ev) = + /(\S+)\s+\S+\s+(\d+)\s+(\d+).+\s(\S+)\s+(\S+)\s*$/)) + { + if (($ethresh == 0 || $ev < $ethresh) && $show_key{$id} == 0) + { + $key = "$id/$sqfrom-$sqto"; + $show_key{$key} = 1; + $show_id{$key} = $id; + $show_sqfrom{$key} = $sqfrom; + $show_sqto{$key} = $sqto; + $show_sc{$key} = $sc; + $show_ev{$key} = $ev; + + $numdomains++; + + $domsize = $sqto - $sqfrom + 1; + if ($domsize < 0) { $domsize *= -1; } + $numresidues += $domsize; + } + } + +} + +if ($coverage_mode) +{ + if ($status == 0) { + printf "%-20s %6d %6d %6d\n", $hmmname, $numseqs, $numdomains, $numresidues; + exit 0; + } else { + printf "%-20s [FAILED]\n", $hmmname; + exit 1; + } + +} + + + +foreach $key (sort byscore keys(%show_key)) +{ + if ($gdfmode) + { + printf("%-24s\t%6d\t%6d\t%15s", + $key, $show_sqfrom{$key}, $show_sqto{$key}, $show_id{$key}) + } else { + printf("%-24s", $key); + } + # Optional extensions to GDF/GLF + if ($do_scores) { printf("\t%8s", $show_sc{$key}); } + if ($do_eval) { printf("\t%12s", $show_ev{$key}); } + if ($do_log) { printf("\t%12.1f", -log($show_ev{$key})); } + print "\n"; +} + +sub byscore { + $show_sc{$b} <=> $show_sc{$a}; +} + +sub byevalue { + $show_ev{$a} <=> $show_ev{$b}; +} + diff --git a/forester/archive/perl/pf_cutoff_extract.pl b/forester/archive/perl/pf_cutoff_extract.pl new file mode 100755 index 0000000..1a56d9c --- /dev/null +++ b/forester/archive/perl/pf_cutoff_extract.pl @@ -0,0 +1,73 @@ +#!/usr/bin/perl -W + +# $Id: pf_cutoff_extract.pl,v 1.4 2009/11/11 02:28:19 cmzmasek Exp $ + +# This extracts GA, TC, or NC score cutoff values from +# Pfam HMM files (GA1, TC1, NC1) +# Copyright (C) 2008-2009 Christian M. Zmasek +# All rights reserved +# Created 2007-08-01 in Winterthur, Switzerland by CMZ + +# Usage: pf_cutoff_extract.pl + +use strict; + +if ( scalar( @ARGV ) != 3 ) { + print "\npf_cutoff_extract.pl \n\n"; + exit( -1 ); +} + +my $infile = $ARGV[ 0 ]; +my $cutoff_type = uc( $ARGV[ 1 ] ); +my $outfile = $ARGV[ 2 ]; + +my $GA = "GA"; +my $TC = "TC"; +my $NC = "NC"; + +if ( -e $outfile ) { + die "\n$0: \"$outfile\" already exists.\n\n"; +} +unless( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n$0: cannot read from \"$infile\".\n\n"; +} +unless( $cutoff_type eq $GA || $cutoff_type eq $TC || $cutoff_type eq $NC ) { + die "\n$0: illegal value \"$cutoff_type\" for cutoff type.\n\n"; +} + +open( IN, "$infile" ) || die "\n$0: Cannot open file \"$infile\": $!\n"; +open( OUT, ">$outfile" ) || die "\n$0: Cannot create file \"$outfile\": $!\n"; + +my $line = ""; +my $name = ""; +my $line_number = 0; +my $n = 0; + +while ( $line = ) { + $line_number++; + if ( $line =~ /^NAME\s+(.+)/ ) { + if ( length( $name ) > 0 ) { + die "\n$0: Unexpected line $line at line $line_number: $!\n"; + } + $name = $1; + } + elsif ( $line =~ /^$cutoff_type\s+(\S+)\s+[^;]+/ ) { + if ( length( $name ) < 1 ) { + die "\n$0: Unexpected line $line at line $line_number: $!\n"; + } + $n++; + print OUT "$name $1\n"; + $name = ""; + } + elsif ( $line =~ /\/\// ) { + $name = ""; + } +} + +close( OUT ) || die "\n$0: Cannot close file \"$outfile\": $!\n";; + +print( "\nExtracted $n $cutoff_type" . "1 values to \"$outfile\"\n" ); +print( "\nOK\n" ); + +exit( 0 ); + diff --git a/forester/archive/perl/pfam2pwd.pl b/forester/archive/perl/pfam2pwd.pl new file mode 100755 index 0000000..73ac495 --- /dev/null +++ b/forester/archive/perl/pfam2pwd.pl @@ -0,0 +1,743 @@ +#!/usr/bin/perl -W + +# pfam2pwd.pl +# ----------- +# Copyright (C) 1999-2002 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Created: 05/17/01 +# +# Last modified 02/20/03 +# +# +# See RIO_INSTALL on how to use this program. +# ------------------------------------------ +# + +use strict; + +use FindBin; +use lib $FindBin::Bin; +use rio_module; + +my $VERSION = "3.002"; + + + +# ============================================================================= +# ============================================================================= +# +# THESE VARIABLES NEED TO BE SET BY THE USER +# ------------------------------------------ +# + + +# Pfam alignments to calculate pairwise distances from: +# ----------------------------------------------------- +my $MY_PFAM_FULL_DIRECTORY = "/path/to/Pfam/Full/"; # must end with "/" + + + +# This file lists all the alignments for which to calculate pairwise distances +# from. If left empty, ALL the alignments in $MY_PFAM_FULL_DIRECTORY +# will be used: +# ---------------------------------------------------------------------------- +my $ALGNS_TO_USE_LIST_FILE = ""; + + + +# This is _VERY IMPORTANT_. It determines the species whose sequences +# are being used (sequences from species not listed in $MY_SPECIES_NAMES_FILE +# are ignored). Normally, one would use the same list as RIO uses +# ($SPECIES_NAMES_FILE in "rio_module.pm") -- currently "tree_of_life_bin_1-6.nhx". +# +# For certain large families (such as protein kinases), one might use a +# species file which contains less species in order to be able to finish +# the calculations in reasonable time. +# For example, to exclude most mammals, use: +# my $MY_SPECIES_NAMES_FILE = $PATH_TO_FORESTER."data/species/tree_of_life_bin_1-6_species_list_NO_RAT_MONKEYS_APES_SHEEP_GOAT_HAMSTER" +# (to only use sequences from SWISS-PROT add this line: +# $TREMBL_ACDEOS_FILE = $PATH_TO_FORESTER."data/NO_TREMBL";) +# ---------------------------------------------------------------------------- +my $MY_SPECIES_NAMES_FILE = $SPECIES_NAMES_FILE; + + + +# This is were the output goes (must end with "/") +# ------------------------------------------------ +my $MY_RIO_PWD_DIRECTORY = "/path/to/pfam2pwd_out/pwd/"; +my $MY_RIO_BSP_DIRECTORY = "/path/to/pfam2pwd_out/bsp/"; +my $MY_RIO_NBD_DIRECTORY = "/path/to/pfam2pwd_out/nbd/"; +my $MY_RIO_ALN_DIRECTORY = "/path/to/pfam2pwd_out/aln/"; +my $MY_RIO_HMM_DIRECTORY = "/path/to/pfam2pwd_out/hmm/"; + + + +# A directory to create temporary files in: +# ----------------------------------------- +my $MY_TEMP_DIR = "/tmp/"; # must end with "/" + + + +# Alignments in which the number of sequences after pruning (determined +# by "$MY_SPECIES_NAMES_FILE") is lower than this, are ignored +# (no calculation of pwds): +# ------------------------------------------------------------------ +my $MIN_SEQS = 5; + + + +# Alignments in which the number of sequences after pruning (determined +# by "$MY_SPECIES_NAMES_FILE") is greater than this, are ignored +# (no calculation of pwds): +# ------------------------------------------------------------------ +my $MAX_SEQS = 700; + + + +# Seed for the random number generator for bootstrapping (must be 4n+1): +# --------------------------------------------------------------------- +my $MY_SEED = 85; + + + +# This is used to choose the model to be used for the (ML) +# distance calculation: +# IMPORTANT: "$MY_MATRIX_FOR_PWD" in "rio_module.pm" needs to +# have the same value, when the pwds calculated are going to +# be used for RIO! +# 0 = JTT +# 2 = BLOSUM 62 +# 3 = mtREV24 +# 5 = VT +# 6 = WAG +# PAM otherwise +# -------------------------------------------------------- +my $MY_MATRIX = 2; + + + +# +# End of variables which need to be set by the user. +# +# ============================================================================= +# ============================================================================= + + + + + + + + +my $too_small = 0; +my $too_large = 0; +my $i = 0; +my $seqs = 0; +my $filename = ""; +my $tmp_dir = ""; +my $current_dir = ""; +my $return_line = ""; +my @filenames = (); +my @too_small_names = (); +my @too_large_names = (); +my %Species_names_hash = (); +my %AC_OS = (); # AC -> species name +my %AC_DE = (); # AC -> description +my %ALGNS_TO_USE = (); # name of alignment -> "" +my $use_algns_to_use_list = 0; +my $LOGFILE = "00_pfam2pwd_LOGFILE"; + $HMMBUILD = $HMMBUILD." --amino"; + + +&createTempdir(); + + +&startLogfile(); + + +opendir( DIR, $MY_PFAM_FULL_DIRECTORY ) || die "\n\n$0: Cannot open directory $MY_PFAM_FULL_DIRECTORY: $!\n\n"; +$i = 0; +while( defined( $filename = readdir( DIR ) ) ) { + if ( $filename =~ /^\.\.?$/ ) { + next; + } + $filenames[ $i ] = $filename; + $i++; +} +close( DIR ); + + +&readSpeciesNamesFile( $MY_SPECIES_NAMES_FILE ); + +&readTrEMBL_ACDEOS_FILE(); + +if ( defined( $ALGNS_TO_USE_LIST_FILE ) && $ALGNS_TO_USE_LIST_FILE =~ /\w/ ) { + $use_algns_to_use_list = 1; + &readListFile(); +} + + +$current_dir = `pwd`; +$current_dir =~ s/\s//; +chdir ( $tmp_dir ) +|| die "\n\n$0: Unexpected error: Could not chdir to <<$tmp_dir>>: $!"; + +$i = 0; + +FOREACH_ALIGN: foreach $filename ( @filenames ) { + + # If the corresponding pwd, positions, and aln files seem to already exists, do next one. + if ( ( -e $MY_RIO_PWD_DIRECTORY.$filename.$SUFFIX_PWD ) + && ( -e $MY_RIO_BSP_DIRECTORY.$filename.$SUFFIX_BOOT_STRP_POS ) + && ( -e $MY_RIO_NBD_DIRECTORY.$filename.$SUFFIX_PWD_NOT_BOOTS ) + && ( -e $MY_RIO_ALN_DIRECTORY.$filename.$ALIGN_FILE_SUFFIX ) + && ( -e $MY_RIO_HMM_DIRECTORY.$filename.$SUFFIX_HMM ) ) { + next FOREACH_ALIGN; + } + + if ( $use_algns_to_use_list == 1 && !exists( $ALGNS_TO_USE{ $filename } ) ) { + next FOREACH_ALIGN; + } + + + $seqs = &removeSeqsFromPfamAlign( $MY_PFAM_FULL_DIRECTORY.$filename, + "REM_SEQ_OUTFILE", + 1 ); + if ( $seqs < $MIN_SEQS ) { + unlink( "REM_SEQ_OUTFILE" ); + $too_small_names[ $too_small++ ] = $filename; + next FOREACH_ALIGN; + } + elsif ( $seqs > $MAX_SEQS ) { + unlink( "REM_SEQ_OUTFILE" ); + $too_large_names [ $too_large++ ] = $filename; + next FOREACH_ALIGN; + } + + + print "\n\n\n"; + print " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + print " $i: $filename ($seqs seqs)\n"; + print " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"; + print "\n"; + + # If one of the two file exists from a previous (interrupted) run. + unlink( $MY_RIO_PWD_DIRECTORY.$filename.$SUFFIX_PWD ); + unlink( $MY_RIO_BSP_DIRECTORY.$filename.$SUFFIX_BOOT_STRP_POS ); + unlink( $MY_RIO_NBD_DIRECTORY.$filename.$SUFFIX_PWD_NOT_BOOTS ); + unlink( $MY_RIO_ALN_DIRECTORY.$filename.$ALIGN_FILE_SUFFIX ); + unlink( $MY_RIO_HMM_DIRECTORY.$filename.$SUFFIX_HMM ); + + + &executeHmmbuild( "REM_SEQ_OUTFILE", + $MY_RIO_ALN_DIRECTORY.$filename.$ALIGN_FILE_SUFFIX, + "hmm" ); + + if ( unlink( "hmm" ) != 1 ) { + die "\n\n$0: Unexpected error: Could not delete <>: $!"; + } + + if ( unlink( "REM_SEQ_OUTFILE" ) != 1 ) { + die "\n\n$0: Unexpected error: Could not delete <>: $!"; + } + + executeHmmbuildHand( $MY_RIO_ALN_DIRECTORY.$filename.$ALIGN_FILE_SUFFIX, + $MY_RIO_HMM_DIRECTORY.$filename.$SUFFIX_HMM ); + + system( $HMMCALIBRATE, $MY_RIO_HMM_DIRECTORY.$filename.$SUFFIX_HMM ) + && die "\n\n$0: Could not execute \"$HMMCALIBRATE $MY_RIO_HMM_DIRECTORY.$filename.$SUFFIX_HMM\": $!"; + + &pfam2phylipMatchOnly( $MY_RIO_ALN_DIRECTORY.$filename.$ALIGN_FILE_SUFFIX, "infile" ); + + &executePuzzle( "infile", $MY_MATRIX ); + + system( "mv", "infile.dist", $MY_RIO_NBD_DIRECTORY.$filename.$SUFFIX_PWD_NOT_BOOTS ) + && die "\n\n$0: Unexpected error: $!"; + + &executeBootstrap( "infile", + $BOOTSTRAPS, + "BOOTSTRAPPED_ALGN", + $MY_RIO_BSP_DIRECTORY.$filename.$SUFFIX_BOOT_STRP_POS, + $MY_SEED ); + + if ( unlink( "infile" ) != 1 ) { + die "\n\n$0: Unexpected error: Could not delete <>: $!"; + } + + + &executePuzzleBootstrapped( "BOOTSTRAPPED_ALGN", $MY_MATRIX ); + + ##if ( unlink( "outfile" ) != 1 ) { + ## die "\n\n$0: Unexpected error: Could not delete <>: $!"; + ##} + + + system( "mv", "BOOTSTRAPPED_ALGN".".dist", $MY_RIO_PWD_DIRECTORY.$filename.$SUFFIX_PWD ) + && die "\n\n$0: Unexpected error: $!\n\n"; + + if ( unlink( "BOOTSTRAPPED_ALGN" ) != 1 ) { + die "\n\n$0: Unexpected error: Could not delete <>: $!"; + } + + $i++; + +} ## End of FOREACH_ALIGN loop. + + +chdir( $current_dir ) +|| die "\n\n$0: Unexpected error: Could not chdir to <<$current_dir>>: $!"; + +rmdir( $tmp_dir ); + +&finishLogfile(); + +print "\n\n\n"; +print( "pfam2pwd.pl: Done.\n" ); +print( "Successfully calculated $i pairwise distance files.\n" ); +print( "Too large alignments (>$MAX_SEQS): $too_large\n" ); +print( "Too small alignments (<$MIN_SEQS): $too_small\n" ); +print( "See the logfile \"$MY_RIO_PWD_DIRECTORY".$LOGFILE."\"\n" ); +print "\n\n\n"; + +exit( 0 ); + + + + + + +# Methods +# ------- + + + +# Three arguments: +# 1. Stockholm alignment +# 2. Outalignment +# 3. Outhmm +# Returns the options used. +# Last modified: 06/26/01 +sub executeHmmbuild { + + my $full = $_[ 0 ]; + my $outalignment = $_[ 1 ]; + my $outhmm = $_[ 2 ]; + my $options = ""; + + unless ( ( -s $full ) && ( -f $full ) && ( -T $full ) ) { + die "\n\n$0: \"$full\" does not exist, is empty, or is not a plain textfile.\n\n"; + } + + $options = getHmmbuildOptionsFromPfam( $full ); + + $options =~ s/-f//; + $options =~ s/-g//; + $options =~ s/-s//; + $options =~ s/-F//; + $options =~ s/-A//; + $options =~ s/-o\s+\S+//; + $options =~ s/(\s|^)[^-]\S+/ /g; + + if ( $options =~ /--prior/ ) { + my $basename = basename( $full ); + $basename .= ".PRIOR"; + $options =~ s/--prior/--prior $PRIOR_FILE_DIR$basename/; + } + + # Remove for versions of HMMER lower than 2.2. + if ( $options =~ /--informat\s+\S+/ ) { + $options =~ s/--informat\s+\S+/-/; + } + + system( "$HMMBUILD $options -o $outalignment $outhmm $full" ) + && die "\n\n$0: Could not execute \"$HMMBUILD $options -o $outalignment $outhmm $full\".\n\n"; + + return $options; + +} ## executeHmmbuild. + + +# Two arguments: +# 1. Stockholm alignment +# 2. Outhmm +# Returns the options used. +# Last modified: 06/26/01 +sub executeHmmbuildHand { + + my $full = $_[ 0 ]; + my $outhmm = $_[ 1 ]; + my $options = ""; + + unless ( ( -s $full ) && ( -f $full ) && ( -T $full ) ) { + die "\n\n$0: \"$full\" does not exist, is empty, or is not a plain textfile.\n\n"; + } + + $options = getHmmbuildOptionsFromPfam( $full ); + + $options =~ s/-f//; + $options =~ s/-g//; + $options =~ s/-s//; + $options =~ s/-F//; + $options =~ s/-A//; + $options =~ s/-o\s+\S+//; + $options =~ s/(\s|^)[^-]\S+/ /g; + + if ( $options =~ /--prior/ ) { + my $basename = basename( $full ); + $basename .= ".PRIOR"; + $options =~ s/--prior/--prior $PRIOR_FILE_DIR$basename/; + } + + # Remove for versions of HMMER lower than 2.2. + if ( $options =~ /--informat\s+\S+/ ) { + $options =~ s/--informat\s+\S+/-/; + } + + system( "$HMMBUILD --hand $options $outhmm $full" ) + && die "\n\n$0: Could not execute \"$HMMBUILD -- hand $options $outhmm $full\".\n\n"; + + return $options; + +} ## executeHmmbuildHand. + + + +# One argument: +# Pfam align name. +# Last modified: 02/26/01 +sub getHmmbuildOptionsFromPfam { + + my $infile = $_[ 0 ]; + my $return_line = ""; + my $result = ""; + + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n\n$0: \"$infile\" does not exist, is empty, or is not a plain textfile.\n\n"; + } + + open( GHO, $infile ) || die "\n\n$0: Unexpected error: Cannot open file <<$infile>>: $!"; + while ( $return_line = ) { + if ( $return_line =~ /^\s*#.*hmmbuild\s+(.+)\s*$/ ) { + $result = $1; + close( GHO ); + return $result; + } + } + close( GHO ); + return $result; + +} ## getHmmbuildOptionsFromPfam + + + +# Similar to the method with the same name in "rio.pl". +# Removes sequences from a Pfam flat file. +# Adds species to TrEMBL seqs. +# It can remove all sequences not from species listed in a species names file. +# It can remove all sequences which do not have a SWISS-PROT name (XXXX_XXXXX) +# Three arguments: +# 1. Pfam flat file name +# 2. outfile name +# 3. 1 to remove TrEMBL seqs with "(FRAGMENT)" in their DE line. +# Returns the number of sequences in the resulting alignment. +# If a query name is given, it returns -1 if query is not found in alignment, +# -10 if the name is not unique. +# Last modified: 05/24/02 +sub removeSeqsFromPfamAlign { + my $infile = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $remove_frags = $_[ 2 ]; + my $return_line = ""; + my $saw_sequence_line = 0; + my $number_of_seqs = 0; + my $DE = ""; + my $OS = ""; + my $AC = ""; + my $i = 0; + my $length = 0; + my $seq_name = ""; + my $seq = ""; + + + open( OUT_RNSP, ">$outfile" ) || die "\n\n$0: Unexpected error: Cannot create file \"$outfile\": $!"; + open( IN_RNSP, "$infile" ) || die "\n\n$0: Unexpected error: Cannot open file <<$infile>>: $!"; + while ( $return_line = ) { + + if ( $saw_sequence_line == 1 + && !&containsPfamNamedSequence( $return_line ) + && !&isPfamCommentLine( $return_line ) ) { + # This is just for counting purposes. + $saw_sequence_line = 2; + } + if ( &isPfamSequenceLine( $return_line ) ) { + if ( $saw_sequence_line == 0 ) { + $saw_sequence_line = 1; + } + $return_line =~ /^\s*(\S+)\s+(\S+)/; + $seq_name = $1; + $seq = $2; + if ( !&startsWithSWISS_PROTname( $return_line ) ) { + $seq_name =~ /^(\S+)\//; + $AC = $1; + unless( exists( $AC_OS{ $AC } ) ) { + #ACs not present in "ACDEOS" file. + next; + } + $OS = $AC_OS{ $AC }; + if ( !$OS || $OS eq "" ) { + die "\n\n$0: Unexpected error: species for \"$AC\" not found.\n\n"; + } + unless( exists( $Species_names_hash{ $OS } ) ) { + next; + } + if ( $remove_frags == 1 ) { + $DE = $AC_DE{ $AC }; + if ( $DE && $DE =~ /\(FRAGMENT\)/ ) { + next; + } + } + $seq_name =~ s/\//_$OS\//; + } + else { + if ( $return_line =~ /_([A-Z0-9]{1,5})\// ) { + unless( exists( $Species_names_hash{ $1 } ) ) { + next; + } + } + # remove everything whose species cannot be determined. + else { + next; + } + } + $length = length( $seq_name ); + for ( $i = 0; $i <= ( $LENGTH_OF_NAME - $length - 1 ); $i++ ) { + $seq_name .= " "; + } + $return_line = $seq_name.$seq."\n"; + } + + if ( !&isPfamCommentLine( $return_line ) ) { + print OUT_RNSP $return_line; + } + + if ( $saw_sequence_line == 1 ) { + $number_of_seqs++; + } + } ## while ( $return_line = ) + close( IN_RNSP ); + close( OUT_RNSP ); + + return $number_of_seqs; + +} ## removeSeqsFromPfamAlign + + + + + + + +# Reads in (SWISS-PROT) species names from a file. +# Names must be separated by newlines. +# Lines beginning with "#" are ignored. +# A possible "=" and everything after is ignored. +# One argument: species-names-file name +# Last modified: 04/24/01 +sub readSpeciesNamesFile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $species = ""; + + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n\n$0: Error: \"$infile\" does not exist, is empty, or is not a plain textfile.\n\n"; + } + + open( IN_RSNF, "$infile" ) || die "\n\n$0: Unexpected error: Cannot open file <<$infile>>: $!\n\n"; + while ( $return_line = ) { + if ( $return_line !~ /^\s*#/ && $return_line =~ /(\S+)/ ) { + $species = $1; + $species =~ s/=.+//; + $Species_names_hash{ $species } = ""; + } + } + close( IN_RSNF ); + + return; +} ## readSpeciesNamesFile + + + +# Last modified: 02/21/03 +sub readTrEMBL_ACDEOS_FILE { + + my $return_line = ""; + + unless ( ( -s $TREMBL_ACDEOS_FILE ) && ( -f $TREMBL_ACDEOS_FILE ) && ( -T $TREMBL_ACDEOS_FILE ) ) { + die "\n\n$0: Error: \"$TREMBL_ACDEOS_FILE\" does not exist, is empty, or is not a plain textfile.\n\n"; + } + # Fill up (huge) hashs. + open( HH, "$TREMBL_ACDEOS_FILE" ) || die "\n\n$0: Unexpected error: Cannot open file <<$TREMBL_ACDEOS_FILE>>: $!\n\n"; + while ( $return_line = ) { + + if ( $return_line =~ /(\S+);([^;]*);(\S+)/ ) { + $AC_OS{ $1 } = $3; + $AC_DE{ $1 } = $2; + } + } + close( HH ); +} ## readTrEMBL_ACDEOS_FILE + + +# Last modified: 02/21/03 +sub readListFile { + + my $return_line = ""; + + unless ( ( -s $ALGNS_TO_USE_LIST_FILE ) && ( -f $ALGNS_TO_USE_LIST_FILE ) && ( -T $ALGNS_TO_USE_LIST_FILE ) ) { + die "\n\n$0: Error: \"$ALGNS_TO_USE_LIST_FILE\" does not exist, is empty, or is not a plain textfile.\n\n"; + } + # Fill up hash. + open( LF, "$ALGNS_TO_USE_LIST_FILE" ) || die "\n\n$0: Unexpected error: Cannot open file <<$ALGNS_TO_USE_LIST_FILE>>: $!\n\n"; + while ( $return_line = ) { + if ( $return_line =~ /^\s*(\S+)\s*$/ ) { # just a list + $ALGNS_TO_USE{ $1 } = ""; + } + elsif ( $return_line =~ /^\s*\S+\s+\S+\s+(\S+)/ ) { # "changes" list from Pfam + $ALGNS_TO_USE{ $1 } = ""; + } + + } + close( LF ); + +} ## readListFile + + + +# Five arguments: +# 1. Name of inputfile +# 2. Bootstraps +# 2. Name of output alignment file +# 3. Name of output positions file +# 4. Seed for random number generator +# +# Last modified: 06/23/01 +sub executeBootstrap { + my $infile = $_[ 0 ]; + my $bootstraps = $_[ 1 ]; + my $outalign = $_[ 2 ]; + my $positions = $_[ 3 ]; + my $seed = $_[ 4 ]; + + system( "$BOOTSTRAP_CZ_PL 0 $bootstraps $infile $outalign $positions $seed" ) + && die "\n\n$0: executeBootstrap:\nCould not execute \"$BOOTSTRAP_CZ_PL 0 $bootstraps $infile $outalign $positions $seed\".\n\n"; + +} ## executeBootstrap + + + + +# Last modified: 05/22/02 +sub createTempdir { + + my $ii = 0; + my $time = time; + + $tmp_dir = $MY_TEMP_DIR.$time.$ii; + + while ( -e $tmp_dir ) { + $ii++; + $tmp_dir = $MY_TEMP_DIR.$time.$ii; + } + + mkdir( $tmp_dir, 0777 ) + || die "\n\n$0: Unexpected error: Could not create <<$tmp_dir>>: $!\n\n"; + + unless ( ( -e $tmp_dir ) && ( -d $tmp_dir ) ) { + die "\n\n$0: Unexpected error: failed to create <<$tmp_dir>>.\n\n"; + } + +} ## createTempdir + + + +# Last modified: 05/17/01 +sub startLogfile { + if ( -e $MY_RIO_PWD_DIRECTORY.$LOGFILE ) { + print "\npfam2pwd.pl:\n"; + print "logfile $MY_RIO_PWD_DIRECTORY"."$LOGFILE already exists\n"; + print "rename it or place it in another directory\n"; + exit( -1 ); + } + + open( L, ">$MY_RIO_PWD_DIRECTORY".$LOGFILE ) + || die "\n\n$0: startLogfile: Cannot create logfile: $!\n\n"; + print L "Min seqs : $MIN_SEQS\n"; + print L "Max seqs : $MAX_SEQS\n"; + print L "Seed : $MY_SEED\n"; + print L "TrEMBL ACDEOS file : $TREMBL_ACDEOS_FILE\n"; + print L "Species names file : $MY_SPECIES_NAMES_FILE\n"; + print L "Pfam directory : $MY_PFAM_FULL_DIRECTORY\n"; + print L "PWD outputdirectory: $MY_RIO_PWD_DIRECTORY\n"; + print L "BSP outputdirectory: $MY_RIO_BSP_DIRECTORY\n"; + print L "NBD outputdirectory: $MY_RIO_NBD_DIRECTORY\n"; + print L "ALN outputdirectory: $MY_RIO_ALN_DIRECTORY\n"; + print L "HMM outputdirectory: $MY_RIO_HMM_DIRECTORY\n"; + print L "Start date : ".`date`; + if ( $MY_MATRIX == 0 ) { + print L "Matrix : JTT\n"; + } + elsif ( $MY_MATRIX == 2 ) { + print L "Matrix : BLOSUM 62\n"; + } + elsif ( $MY_MATRIX == 3 ) { + print L "Matrix : mtREV24\n"; + } + elsif ( $MY_MATRIX == 5 ) { + print L "Matrix : VT\n"; + } + elsif ( $MY_MATRIX == 6 ) { + print L "Matrix : WAG\n"; + } + elsif ( $MY_MATRIX == 7 ) { + print L "Matrix : auto\n"; + } + else { + print L "Matrix : PAM\n"; + } +} ## startLogfile + + + +# Last modified: 05/17/01 +sub finishLogfile { + my $j = 0; + print L "\n\n"; + print L "Successfully calculated $i pairwise distance files.\n"; + print L "Too large alignments (>$MAX_SEQS): $too_large\n"; + print L "Too small alignments (<$MIN_SEQS): $too_small\n"; + print L "Finish date : ".`date`."\n\n"; + + print L "List of the $too_large alignments which were ignored because they\n"; + print L "contained too many sequences (>$MAX_SEQS) after pruning:\n"; + for ( $j = 0; $j < $too_large; ++$j ) { + print L "$too_large_names[ $j ]\n"; + } + print L "\n\n"; + print L "List of the $too_small alignments which were ignored because they\n"; + print L "contained not enough sequences (<$MIN_SEQS) after pruning:\n"; + for ( $j = 0; $j < $too_small; ++$j ) { + print L "$too_small_names[ $j ]\n"; + } + print L "\n"; + close( L ); +} ## finishLogfile + + + + diff --git a/forester/archive/perl/pfam2slx.pl b/forester/archive/perl/pfam2slx.pl new file mode 100755 index 0000000..1d591f5 --- /dev/null +++ b/forester/archive/perl/pfam2slx.pl @@ -0,0 +1,94 @@ +#! /usr/bin/perl + +# Unpack a pfam flatfile, containing many alignments, +# into separate SELEX-format alignment files. +# +# Assumes that ID is the first line in a record, +# that SQ is the last line before the alignment starts, +# and that there is one aligned sequence per line. +# + + +################################################################ +# PFAMSERVER - The Washington University/St. Louis Pfam web server +# Copyright (C) 1995-1999 Washington University School of Medicine +# Copyright (C) 1995-1999 Sanger Centre/Genome Research Ltd. +# Copyright (C) 1998-1999 Karolinska Institutet Center for Genomics Research +# All Rights Reserved +# +# This source code is distributed under the terms of the +# GNU General Public License. See the files COPYRIGHT and LICENSE +# for details. +# +################################################################ + +$cpl = 50; # 50 sequence characters per line +$/ = "\n//"; # paragraph mode on // separators + +while (<>) { + $in_alignment = 0; + $nseq = 0; + @lines = split(/^/); + while ($line = shift(@lines)) { + if ($in_alignment) { + if ($line =~ /^\#/) { next; } + elsif ($line =~ /^(\S+)\s+(\S+)/) { + $name[$nseq] = $1; + $aseq[$nseq] = $2; + $nseq++; + } + } + elsif ($line =~ /^\#=GF ID (\S+)\s*$/) { + $root = $1; + print "working on $root\n"; + if (-e "$root") { + system ("mv $root $root.orig"); + print "$root exists -- moved to $root.orig\n"; + } + open(SELEX,">$root") || die; + print SELEX "#=ID $root\n"; + } + elsif ($line =~ /^\#=GF AC (.+)$/) { print SELEX "#=AC $1\n"; } + elsif ($line =~ /^\#=GF DE (.+)$/) { print SELEX "#=DE $1\n"; } + + elsif ($line =~ /^\#=GF GA (\S+)\s+(\S+)/) + { print SELEX "#=GA $1 $2\n"; } + + elsif ($line =~ /^\#=GF TC (\S+) (\S+)/) + { print SELEX "#=TC $1 $2\n"; } + + elsif ($line =~ /^\#=GF NC (\S+) (\S+)/) + { print SELEX "#=NC $1 $2\n"; } + + elsif ($line =~ /^\#=GF SQ \d+/) { + print SELEX "# $line"; + $in_alignment = 1; + } + elsif ($line =~ /^\/\//) { + last; + } + else { + print SELEX "# $line"; + } + } + + # figure out maximum name length + $maxnamelen = 0; + for ($idx = 0; $idx < $nseq; $idx++) { + if (length($name[$idx]) > $maxnamelen) { + $maxnamelen = length($name[$idx]); + } + } + # break the alignment across + # multiple lines + $alen = length($aseq[0]); + for ($pos = 0; $pos < $alen; $pos += $cpl) { + for ($idx = 0; $idx < $nseq; $idx++) { + printf(SELEX "%-${maxnamelen}s %s\n", + $name[$idx], substr($aseq[$idx], $pos, $cpl)); + } + print SELEX "\n"; + } + close SELEX; +} + diff --git a/forester/archive/perl/phylo_pl.pl b/forester/archive/perl/phylo_pl.pl new file mode 100755 index 0000000..b6b40bd --- /dev/null +++ b/forester/archive/perl/phylo_pl.pl @@ -0,0 +1,1735 @@ +#!/usr/bin/perl -W +# +# $Id: phylo_pl.pl,v 1.32 2010/12/13 19:00:22 cmzmasek Exp $ +# +# FORESTER -- software libraries and applications +# for evolutionary biology research and applications. +# +# Copyright (C) 2008-2009 Christian M. Zmasek +# Copyright (C) 2008-2009 Burnham Institute for Medical Research +# All rights reserved +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA +# +# Contact: phylosoft @ gmail . com +# WWW: www.phylosoft.org/forester +# +# +# +# Requirements phylo_pl is part of the FORESTER libraries. +# ------------ Many of its global variables are set via forester.pm. +# +# +# Note. Use xt.pl (for Pfam alignments) or mt.pl (for other alignments) +# to run phylo_pl.pl on whole directories of alignments files. +# +# +# +# +# ========================= +# +# METHOD ORDER (IMPORTANT!) +# 1. FastME +# 2. phylip NJ +# 3. phylip fitch FM +# 4. phylip fitch ME +# 5. BIONJ +# 6. Weighbor +# 7. Raxml +# 8. phyml +# 9. phylip proml +# 10. phylip protpars +# 11. all +#========================== + +use strict; + +use FindBin; +use lib $FindBin::Bin; +use forester; + +my $VERSION = "1.0.1"; +my $LAST_MODIFIED = "2009.10.02"; + +my $RAXML_MODEL_BASE = "PROTGAMMA"; +my $RAXML_ALGORITHM = "a"; + +my $TEMP_DIR_DEFAULT = "/tmp/phylo_pl_"; # Where all the infiles, outfiles, etc will be created. + +my $bootstraps = 100; # 0,1: do not bootstrap. Default: 100 +my $matrix = 5; # 0 = JTT + # 1 = PAM + # 2 = BLOSUM 62 + # 3 = mtREV24 + # 5 = VT - default + # 6 = WAG + # 7 = auto in puzzle + # 8 = DCMut in PHYML, VT in TREE-PUZZLE +my $rate_heterogeneity = 0; # 0 = Uniform rate (default) + # 1 = 8 Gamma distributed rates + # 2 = Two rates (1 invariable + 1 variable) + # 3 = Mixed (1 invariable + 8 Gamma rates) +my $seed = 9; # Seed for random number generators. Default: 9 +my $keep_multiple_trees = 0; # 0: delete multiple tree file + # 1: do not delete multiple tree file +my $exact_parameter_est = 0; # 0: no; 1: yes + +my $phyml_rel_substitution_rate_cat = 4; + +my $jumbles = 2; +my $use_fastme = 0; # 0: no; 1: yes +my $use_phylip_nj = 0; # 0: no; 1: yes +my $use_phylip_fitch_fm = 0; # 0: no; 1: yes +my $use_phylip_fitch_me = 0; # 0: no; 1: yes +my $use_bionj = 0; # 0: no; 1: yes +my $use_weighbor = 0; # 0: no; 1: yes +my $use_raxml = 0; # 0: no; 1: yes +my $use_phyml = 0; # 0: no; 1: yes +my $use_proml = 0; # 0: no; 1: yes +my $use_protpars = 0; # 0: no; 1: yes +my $use_global_rearr = 0; # 0: no; 1: yes +my $estimate_invar_sites = 0; # 0: no; 1: yes + +my $fastme_init_tree_opt = "NJ"; + +my %seqnames = (); # number => seqname +my %numbers = (); # seqname => number +my $options = ""; +my $infile = ""; +my $pwdfile = ""; +my $outfile = ""; +my $logfile = ""; +my $multipwdfile = ""; +my $distancefile = ""; +my $log = ""; +my $ii = 0; +my $temp_dir = ""; +my $current_dir = ""; +my @out = (); +my $number_of_seqs = 0; +my $number_of_aa = 0; + +my $use_pwd_based_methods = 0; + +print( "\n"); +print( "phylo_pl $VERSION ($LAST_MODIFIED)\n" ); +print( "__________________________________\n"); +print( "\n\n"); + + + +unless ( @ARGV == 2 || @ARGV == 3 || @ARGV == 4 || @ARGV == 5 ) { + &printUsage(); + exit ( -1 ); +} + + + +# Analyzes the options: +# --------------------- + +if ( $ARGV[ 0 ] =~ /^-.+/ ) { + + unless ( @ARGV > 2 ) { + &printUsage(); + exit ( -1 ); + } + $options = $ARGV[ 0 ]; + + if ( @ARGV != 3 && @ARGV != 4 ) { + &printUsage(); + exit ( -1 ); + } + $infile = $ARGV[ 1 ]; + $outfile = $ARGV[ 2 ]; + if ( @ARGV == 4 ) { + $temp_dir = $ARGV[ 3 ]; + } + if ( $options =~ /B(\d+)/ ) { + $bootstraps = $1; + if ( $bootstraps <= 1 ) { + $bootstraps = 0; + } + elsif ( $bootstraps <= 9 ) { + $bootstraps = 0; + print "\n\nphylo_pl: WARNING: Bootstrap number must be devisable by 10,\nno bootstrapping.\n\n"; + } + elsif ( $bootstraps % 10 != 0 ) { + $bootstraps = $bootstraps - $bootstraps % 10; # to ensure $bootstraps % 10 == 0 + print "\n\nphylo_pl: WARNING: Bootstrap number must be devisable by 10,\nset to $bootstraps.\n\n"; + } + } + if ( $options =~ /n/ ) { + $use_phylip_nj = 1; + } + if ( $options =~ /q@(\d)/ ) { + $use_fastme = 1; + my $opt = $1; + if ( $opt == 1 ) { + $fastme_init_tree_opt = "GME"; + } + elsif ( $opt == 2 ) { + $fastme_init_tree_opt = "BME"; + } + elsif ( $opt == 3 ) { + $fastme_init_tree_opt = "NJ"; + } + else { + &printUsage(); + exit ( -1 ); + } + } + if ( $options =~ /f/ ) { + $use_phylip_fitch_fm = 1; + } + if ( $options =~ /e/ ) { + $use_phylip_fitch_me = 1; + } + if ( $options =~ /b/ ) { + $use_bionj = 1; + } + if ( $options =~ /w/ ) { + $use_weighbor = 1; + } + if ( $options =~ /x/ ) { + $use_raxml = 1; + } + if ( $options =~ /y/ ) { + $use_phyml = 1; + } + if ( $options =~ /o/ ) { + $use_proml = 1; + } + if ( $options =~ /p/ ) { + $use_protpars = 1; + } + if ( $options =~ /G/ ) { + $use_global_rearr = 1; + } + if ( $options =~ /I/ ) { + $estimate_invar_sites = 1; + } + if ( $options =~ /j(\d+)/ ) { + $jumbles = $1; + if ( $jumbles < 1 ) { + $jumbles = 0; + } + } + if ( $options =~ /r(\d+)/ ) { + $phyml_rel_substitution_rate_cat = $1; + if ( $phyml_rel_substitution_rate_cat < 1 ) { + $phyml_rel_substitution_rate_cat = 1; + } + } + if ( $options =~ /J/ ) { + $matrix = 0; # JTT + } + if ( $options =~ /P/ ) { + $matrix = 1; # PAM + } + if ( $options =~ /L/ ) { + $matrix = 2; # Blosum 62 + } + if ( $options =~ /M/ ) { + $matrix = 3; # mtREV24 + } + if ( $options =~ /W/ ) { + $matrix = 6; # WAG + } + if ( $options =~ /A/ ) { + $matrix = 7; # auto + } + if ( $options =~ /D/ ) { + $matrix = 8; # DCMut in PHYML and RAXML, VT in PUZZLE + } + if ( $options =~ /S(\d+)/ ) { + $seed = $1; + } + if ( $options =~ /X/ ) { + $keep_multiple_trees = 1; + } + if ( $options =~ /E/ ) { + $exact_parameter_est = 1; + } + if ( $options =~ /g/ ) { + $rate_heterogeneity = 1; + } + if ( $options =~ /t/ ) { + $rate_heterogeneity = 2; + } + if ( $options =~ /m/ ) { + $rate_heterogeneity = 3; + } +} +else { + unless ( @ARGV == 2 || @ARGV == 3 ) { + &printUsage(); + exit ( -1 ); + } + $infile = $ARGV[ 0 ]; + $outfile = $ARGV[ 1 ]; + if ( @ARGV == 3 ) { + $temp_dir = $ARGV[ 2 ]; + } +} + +if ( $use_fastme != 1 && + $use_phylip_nj != 1 && + $use_phylip_fitch_fm != 1 && + $use_phylip_fitch_me != 1 && + $use_bionj != 1 && + $use_weighbor != 1 && + $use_raxml != 1 && + $use_phyml != 1 && + $use_proml != 1 && + $use_protpars != 1 ) { + + $use_fastme = 1; + $use_phylip_nj = 1; + $use_phylip_fitch_fm = 1; + $use_phylip_fitch_me = 1; + $use_bionj = 1; + $use_raxml = 1; + $use_weighbor = 1; + $use_phyml = 1; + $use_proml = 1; + $use_protpars = 1; +} + + +if ( $use_fastme == 1 || + $use_phylip_nj == 1 || + $use_phylip_fitch_fm == 1 || + $use_phylip_fitch_me == 1 || + $use_bionj == 1 || + $use_weighbor == 1 ) { + $use_pwd_based_methods = 1; +} +else { + $use_pwd_based_methods = 0; +} + +$current_dir = `pwd`; +$current_dir =~ s/\s//; + +if ( $outfile !~ /^\// ) { + # outfile is not absolute path. + $outfile = $current_dir."/".$outfile; +} + + + +# TREE-PUZZLE sets the option in this way: +# If two rates or mixed, exact parameter estimates are used. +if ( $rate_heterogeneity == 2 +|| $rate_heterogeneity == 3 ) { + $exact_parameter_est = 1 +} + + +if ( $outfile =~ /\.xml$/i ) { + $outfile =~ s/\.xml//i; +} +elsif ( $outfile =~ /\.aln$/i ) { + $outfile =~ s/\.aln//i; +} +elsif ( $outfile =~ /\.fasta$/i ) { + $outfile =~ s/\.fasta//i; +} +elsif ( $outfile =~ /\.fas$/i ) { + $outfile =~ s/\.fas//i; +} +elsif ( $outfile =~ /\.seqs$/i ) { + $outfile =~ s/\.seqs//i; +} + + +$logfile = $outfile.$LOG_FILE_SUFFIX; +$multipwdfile = $outfile.$MULTIPLE_PWD_FILE_SUFFIX; +$distancefile = $outfile.$SUFFIX_PWD_NOT_BOOTS; + +&dieIfFileExists( $logfile ); +&dieIfFileExists( $multipwdfile ); +&dieIfFileExists( $distancefile ); + + +my $fastme_outtree = $outfile."_fme.xml"; +my $phylip_nj_outtree = $outfile."_pnj.xml"; +my $phylip_fm_outtree = $outfile."_pfm.xml"; +my $phylip_me_outtree = $outfile."_pme.xml"; +my $bionj_outtree = $outfile."_bionj.xml"; +my $weighbor_outtree = $outfile."_weigh.xml"; +my $raxml_outtree = $outfile."_raxml.xml"; +my $phyml_outtree = $outfile."_phyml.xml"; +my $proml_outtree = $outfile."_proml.xml"; +my $protpars_outtree = $outfile."_ppp.xml"; +my $all_outtree = $outfile."_comb.xml"; + +my $multitreefile_fastme = $outfile."_fme".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_phylip_nj = $outfile."_pnj".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_phylip_fm = $outfile."_pfm".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_phylip_me = $outfile."_pme".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_bionj = $outfile."_bionj".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_weighbor = $outfile."_weigh".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_raxml = $outfile."_raxml".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_phyml = $outfile."_phyml".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_proml = $outfile."_proml".$MULTIPLE_TREES_FILE_SUFFIX; +my $multitreefile_protpars = $outfile."_ppp".$MULTIPLE_TREES_FILE_SUFFIX; + +if ( $use_fastme == 1 ) { + &dieIfFileExists( $fastme_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_fastme ); + } +} +if( $use_phylip_nj == 1 ) { + &dieIfFileExists( $phylip_nj_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_phylip_nj ); + } +} +if( $use_phylip_fitch_fm == 1 ) { + &dieIfFileExists( $phylip_fm_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_phylip_fm ); + } +} +if( $use_phylip_fitch_me == 1 ) { + &dieIfFileExists( $phylip_me_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_phylip_me ); + } +} +if( $use_bionj == 1 ) { + &dieIfFileExists( $bionj_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_bionj ); + } +} +if( $use_weighbor == 1 ) { + &dieIfFileExists( $weighbor_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_weighbor ); + } +} +if( $use_raxml == 1 ) { + &dieIfFileExists( $raxml_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_raxml ); + } +} +if( $use_phyml == 1 ) { + &dieIfFileExists( $phyml_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_phyml ); + } +} +if( $use_proml == 1 ) { + &dieIfFileExists( $proml_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_proml ); + } +} +if( $use_protpars == 1 ) { + &dieIfFileExists( $protpars_outtree ); + if ( $keep_multiple_trees == 1 && $bootstraps > 1 ) { + &dieIfFileExists( $multitreefile_protpars ); + } +} +if ( $bootstraps > 1 ) { + &dieIfFileExists( $all_outtree ); +} +if ( $infile ne "" ) { + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n\nphylo_pl: Input alignment file \"$infile\" does not exist, is empty, or is not a plain textfile.\n\n"; + } +} + + + + +# Prints out the options: +# ----------------------- + + +$log = "\n$0 logfile:\n"; +$log = $log."Version: $VERSION\n\n"; + + + +if ( $infile ne "" ) { + $log = $log."Input : $infile\n"; +} + +if ( $keep_multiple_trees == 1 && $bootstraps >= 2 ) { + $log = $log."Multiple distance matrices : $multipwdfile\n"; +} + + +$log = $log."Bootstraps : $bootstraps\n"; + +if ( $use_pwd_based_methods == 1 ) { + $log = $log."Prgrm to calculate pairwise dist. : TREE-PUZZLE (version: $PUZZLE_VERSION)\n"; +} + + +if ( $use_fastme == 1 ) { + $log = $log."Program to calculate tree : FastME (version: $FASTME_VERSION)\n"; + $log = $log."Method for intial tree in FastME : $fastme_init_tree_opt\n"; + $log = $log."Tree swapping (NNI) in FastME : balanced (default)\n"; +} +if ( $use_phylip_nj == 1 ) { + $log = $log."Program to calculate tree : PHYLIP NEIGHBOR NJ (version: $PHYLIP_VERSION)\n"; +} +if ( $use_phylip_fitch_fm == 1 ) { + $log = $log."Program to calculate tree : PHYLIP FITCH Fitch-Margoliash (version: $PHYLIP_VERSION)\n"; +} +if ( $use_phylip_fitch_me == 1 ) { + $log = $log."Program to calculate tree : PHYLIP FITCH Minimal Evolution (version: $PHYLIP_VERSION)\n"; +} +if ( $use_bionj == 1 ) { + $log = $log."Program to calculate tree : BIONJ (version: $BIONJ_VERSION)\n"; +} +if ( $use_weighbor == 1 ) { + $log = $log."Program to calculate tree : Weighbor [no invariable sites, b=14] (version: $WEIGHBOR_VERSION)\n"; +} +if ( $use_raxml == 1 ) { + $log = $log."Program to calculate tree : RAxML [$RAXML_MODEL_BASE] (uses its own bootstraps, if bootstrapped: -f $RAXML_ALGORITHM) (version: $RAXML_VERSION)\n"; +} +if ( $use_phyml == 1 ) { + $log = $log."Program to calculate tree : PHYML (MLE for gamma distr param and proportion of inv sites) (version: $PHYML_VERSION)\n"; + $log = $log."# of rel subst rate categories : $phyml_rel_substitution_rate_cat\n"; +} +if ( $use_proml == 1 ) { + $log = $log."Program to calculate tree : PHYLIP PROML (uses PAM unless JTT selected) (version: $PHYLIP_VERSION)\n"; +} +if ( $use_protpars == 1 ) { + $log = $log."Program to calculate tree : PHYLIP PROTPARS (with global rearrangements) (version: $PHYLIP_VERSION)\n"; +} +if ( $use_phylip_fitch_fm == 1 || $use_phylip_fitch_me == 1 || $use_protpars == 1 || $use_proml ) { + $log = $log."Number of jumbles (input order rand): $jumbles\n"; + +} +if ( $use_phylip_fitch_fm == 1 || $use_phylip_fitch_me == 1 || $use_proml ) { + if ( $use_global_rearr == 1 ) { + $log = $log."Global rearrangements : true\n"; + } + else { + $log = $log."Global rearrangements : false\n"; + + } +} + +if ( $bootstraps > 0 ) { + $log = $log."Prgrm to calculate ML branch lenghts: TREE-PUZZLE (version: $PUZZLE_VERSION)\n"; +} + +$log = $log."Model : "; +if ( $matrix == 0 ) { + $log = $log."JTT (Jones et al. 1992)\n"; +} +elsif ( $matrix == 1 ) { + $log = $log."PAM (Dayhoff et al. 1978)\n"; +} +elsif ( $matrix == 2 ) { + $log = $log."BLOSUM 62 (Henikoff-Henikoff 92)\n"; +} +elsif ( $matrix == 3 ) { + $log = $log."mtREV24 (Adachi-Hasegawa 1996)\n"; +} +elsif ( $matrix == 5 ) { + $log = $log."VT (Mueller-Vingron 2000)\n"; +} +elsif ( $matrix == 6 ) { + $log = $log."WAG (Whelan-Goldman 2000)\n"; +} +elsif ( $matrix == 7 ) { + $log = $log."auto in TREE-PUZZLE\n"; +} +elsif ( $matrix == 8 ) { + $log = $log."DCMut (Kosial and Goldman, 2005) in PHYML and RAxML, VT in TREE-PUZZLE\n"; +} +else { + &dieWithUnexpectedError( "Unknown model: matrix=$matrix" ); +} +if ( $use_raxml == 1 || $use_phyml == 1 ) { + if ( $estimate_invar_sites == 1 ) { + $log = $log."Estimate proportion of invariable sites in RAXML and/or PHYML: true\n"; + } + else { + $log = $log."Estimate proportion of invariable sites in RAXML and/or PHYML: false (proportion \"0.0\" is used in PHYML)\n"; + } +} + +$log = $log."Model of rate heterogeneity (PUZZLE): "; +if ( $rate_heterogeneity == 1 ) { + $log = $log."8 Gamma distributed rates\n"; +} +elsif ( $rate_heterogeneity == 2 ) { + $log = $log."Two rates (1 invariable + 1 variable)\n"; +} +elsif ( $rate_heterogeneity == 3 ) { + $log = $log."Mixed (1 invariable + 8 Gamma rates)\n"; +} +else { + $log = $log."Uniform rate\n"; +} +$log = $log."Seed for random number generators : $seed\n"; +if ( $exact_parameter_est == 1 ) { + $log = $log."Exact parameter estimates in TREE-PUZZLE\n"; +} + +$log = $log."Start time/date : ".`date`; + + + + +# That's where the mischief starts.... +# ------------------------------------ + +$ii = 0; + +srand(); +my $range = 1000000; +my $random_number = int( rand( $range ) ); + +if ( $temp_dir eq "" ) { + $temp_dir = $TEMP_DIR_DEFAULT; +} + +$temp_dir = $temp_dir.$random_number.$ii; + +while ( -e $temp_dir ) { + $ii++; + $temp_dir = $temp_dir.$random_number.$ii; +} + +mkdir( $temp_dir, 0700 ) +|| die "\n\n$0: Could not create <<$temp_dir>>: $!\n\n"; + +unless ( ( -e $temp_dir ) && ( -d $temp_dir ) ) { + die "\n\n$0: <<$temp_dir>> does not exist, or is not a directory.\n\n"; +} + + +&cp( $infile, $temp_dir."/INFILE" ); +unless ( chmod ( 0600, $temp_dir."/INFILE" ) ) { + warn "\n\n$0: Could not chmod. $!\n\n"; +} +$infile = "INFILE"; + +chdir ( $temp_dir ) +|| die "\n\n$0: Could not chdir to <<$temp_dir>>: $!\n\n"; + +&cp( $infile, "infile" ); +@out = &getNumberOfSeqsAndAas( $infile ); +$number_of_seqs = $out[ 0 ]; +$number_of_aa = $out[ 1 ]; + +my $SEQBOOT_OUTFILE = "seqboot_outfile"; + +if ( $bootstraps > 1 && ( $use_pwd_based_methods == 1 + || $use_phyml == 1 + || $use_proml == 1 + || $use_protpars == 1 ) ) { + &executeSeqboot( $seed, $bootstraps ); + &mv( "outfile", $SEQBOOT_OUTFILE ); + &rm( "infile" ); +} + +&cp( $infile, "align" ); + +if ( $use_pwd_based_methods == 1 ) { + # Calculating the pairwise distances (saved in file "infile"): "puzzle" + if ( $bootstraps > 1 ) { + &executePuzzleBootstrapped( $SEQBOOT_OUTFILE, + $matrix, + $number_of_seqs, + $exact_parameter_est, + $rate_heterogeneity ); + + $pwdfile = $SEQBOOT_OUTFILE.".dist"; + } + else { + &executePuzzle( "infile", + $matrix, + $number_of_seqs, + $exact_parameter_est, + $rate_heterogeneity ); + $pwdfile = "infile.dist"; + } +} + +&rm( "infile" ); + +# Methods based on alignment +# -------------------------- +my $OUTTREE_RAXML = "outtree_rax"; +my $OUTTREE_PHYML = "outtree_phyml"; +my $OUTTREE_PROML = "outtree_proml"; +my $OUTTREE_PROTPARS = "outtree_protpars"; + +my $CONSENSUS_RAXML = "consensus_raxml"; +my $CONSENSUS_PHYML = "consensus_phyml"; +my $CONSENSUS_PROML = "consensus_proml"; +my $CONSENSUS_PROTPARS = "consensus_protpars"; + +my $OUTTREES_ALL = "outtrees_all"; +my $all_count = 0; + +if ( $use_raxml == 1 ) { + + my $model = "---"; + if ( $matrix == 0 ) { + $model = "JTT"; + } + elsif ( $matrix == 1 ) { + $model = "DAYHOFF"; + } + elsif ( $matrix == 2 ) { + $model = "BLOSUM62"; + } + elsif ( $matrix == 3 ) { + $model = "MTREV"; + } + elsif ( $matrix == 5 ) { + $model = "VT"; + } + elsif ( $matrix == 6 ) { + $model = "WAG"; + } + elsif ( $matrix == 7 ) { + $model = "VT"; + } + elsif ( $matrix == 8 ) { + $model = "DCMUT"; + } + else { + &dieWithUnexpectedError( "Unknown model: matrix=$matrix" ); + } + + print( "\n========== RAxML begin =========\n\n" ); + # Six arguments: + # 1. DNA or Amino-Acids sequence filename (PHYLIP format) + # 2. Model, eg. PROTGAMMAIVT + # 3. Replicates (bootstrap) + # 4. Seed for bootstrap + # 5. Output suffix + # 6. Algorithm (only for bootstrap, default otherwise) + my $invar = ""; + if ( $estimate_invar_sites == 1 ) { + $invar = "I"; + } + + # NOTE. RaxML does its own bootstrapping. + &executeRaxml( "align", $RAXML_MODEL_BASE.$invar.$model."F", $bootstraps, $seed, "xxx", $RAXML_ALGORITHM ); + print( "\n========== RAxML end =========\n\n" ); + + &rm( "RAxML_log.xxx" ); + &rm( "RAxML_parsimonyTree.xxx" ); + &mv( "RAxML_info.xxx", $outfile."_raxml_info" ); + if ( $bootstraps > 1 ) { + &rm( "RAxML_bestTree.xxx" ); + &mv( "RAxML_bipartitions.xxx", $CONSENSUS_RAXML ); + &append( "RAxML_bootstrap.xxx", $OUTTREES_ALL ); + if ( $keep_multiple_trees == 1 ) { + &mv( "RAxML_bootstrap.xxx", $multitreefile_raxml ); + } + else { + &rm( "RAxML_bootstrap.xxx" ); + } + $all_count++; + } + else { + &mv( "RAxML_result.xxx", $OUTTREE_RAXML ); + } +} + + +if ( $use_phyml == 1 ) { + + my $model = "---"; + if ( $matrix == 0 ) { + $model = "JTT"; + } + elsif ( $matrix == 1 ) { + $model = "Dayhoff"; + } + elsif ( $matrix == 2 ) { + $model = "Blosum62"; + } + elsif ( $matrix == 3 ) { + $model = "MtREV"; + } + elsif ( $matrix == 5 ) { + $model = "VT"; + } + elsif ( $matrix == 6 ) { + $model = "WAG"; + } + elsif ( $matrix == 7 ) { + $model = "VT"; + } + elsif ( $matrix == 8 ) { + $model = "DCMut"; + } + else { + &dieWithUnexpectedError( "Unknown model: matrix=$matrix" ); + } + + my $input = ""; + if ( $bootstraps > 1 ) { + $input = $SEQBOOT_OUTFILE; + } + else { + $input = "align"; + } + print( "\n========== PHYML begin =========\n\n" ); + # Six arguments: + # 1. DNA or Amino-Acids sequence filename (PHYLIP format) + # 2. number of data sets to analyse (ex:3) + # 3. Model: JTT | MtREV | Dayhoff | WAG | VT | DCMut | Blosum62 (Amino-Acids) + # 4. number of relative substitution rate categories (ex:4), positive integer + # 5. starting tree filename (Newick format), your tree filename | BIONJ for a distance-based tree + # 6. 1 to estimate proportion of invariable sites, otherwise, fixed proportion "0.0" is used + # PHYML produces several results files : + # _phyml_lk.txt : likelihood value(s) + # _phyml_tree.txt : inferred tree(s) + # _phyml_stat.txt : detailed execution stats + &executePhyml( $input, $bootstraps, $model, $phyml_rel_substitution_rate_cat, "BIONJ", $estimate_invar_sites ); + print( "\n========== PHYML end =========\n\n" ); + + &rm( $input."_phyml_lk.txt" ); + &mv( $input."_phyml_tree.txt", $OUTTREE_PHYML ); + if ( -e $outfile."_phyml_stat" ) { + &rm( $outfile."_phyml_stat" ); + } + &mv( $input."_phyml_stat.txt", $outfile."_phyml_stat" ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_PHYML, $OUTTREES_ALL ); + $all_count++; + } + +} + +if ( $use_proml == 1 ) { + my $input = ""; + if ( $bootstraps > 1 ) { + $input = $SEQBOOT_OUTFILE; + } + else { + $input = "align"; + } + print( "\n========== PHYLIP PROML begin =========\n\n" ); + # Five arguments: + # 1. name of alignment file (in correct format!) + # 2. number of bootstraps + # 3. jumbles: 0: do not jumble; >=1 number of jumbles + # 4. seed for random number generator + # 5. 1 for PAM instead of JTT + my $use_pam = 1; + if ( $matrix == 0 ) { + $use_pam = 0; + } + &executeProml( $input, $bootstraps, $jumbles, $seed, $use_pam, $use_global_rearr ); + print( "\n========== PHYLIP PROML end =========\n\n" ); + &mv( "outtree", $OUTTREE_PROML ); + &rm( "outfile" ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_PROML, $OUTTREES_ALL ); + $all_count++; + } +} + + +if ( $use_protpars == 1 ) { + my $input = ""; + if ( $bootstraps > 1 ) { + $input = $SEQBOOT_OUTFILE; + } + else { + $input = "align"; + } + print( "\n========== PHYLIP PROTPARS begin =========\n\n" ); + &executeProtpars( $input, $bootstraps, $jumbles, $seed ); + print( "\n========== PHYLIP PROTPARS end =========\n\n" ); + &mv( "outtree", $OUTTREE_PROTPARS ); + &rm( $outfile."_protpars_outfile" ); + &mv( "outfile", $outfile."_protpars_outfile" ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_PROTPARS, $OUTTREES_ALL ); + $all_count++; + } +} + + + +# Methods based on PWD +# -------------------- +my $OUTTREE_FASTME = "outtree_fastme"; +my $OUTTREE_PHYLIP_NJ = "outtree_phylip_nj"; +my $OUTTREE_PHYLIP_FM = "outtree_phylip_fm"; +my $OUTTREE_PHYLIP_ME = "outtree_phylip_me"; +my $OUTTREE_BIONJ = "outtree_bionj"; +my $OUTTREE_WEIGHBOR = "outtree_weighbor"; + +my $CONSENSUS_FASTME = "consensus_fastme"; +my $CONSENSUS_PHYLIP_NJ = "consensus_phylip_nj"; +my $CONSENSUS_PHYLIP_FM = "consensus_phylip_fm"; +my $CONSENSUS_PHYLIP_ME = "consensus_phylip_me"; +my $CONSENSUS_BIONJ = "consensus_bionj"; +my $CONSENSUS_WEIGHBOR = "consensus_weighbor"; +my $CONSENSUS_ALL = "consensus_all"; + + +if ( $use_fastme == 1 ) { + print( "\n========== FASTME begin =========\n\n" ); + &executeFastme( $pwdfile, $bootstraps, $fastme_init_tree_opt ); + print( "\n========== FASTME end ===========\n\n" ); + &rm( "output.d" ); + &mv( "output.tre", $OUTTREE_FASTME ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_FASTME, $OUTTREES_ALL ); + $all_count++; + } +} +if ( $use_phylip_nj ) { + print( "\n========== PHYLIP NEIGHBOR begin =========\n\n" ); + &executeNeighbor( $pwdfile, $bootstraps, $seed, 0 ); + print( "\n========== PHYLIP NEIGHBOR end =========\n\n" ); + &mv( "outtree", $OUTTREE_PHYLIP_NJ ); + &rm( "outfile" ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_PHYLIP_NJ, $OUTTREES_ALL ); + $all_count++; + } +} +if ( $use_phylip_fitch_fm ) { + print( "\n========== PHYLIP FITCH FM begin =========\n\n" ); + &executeFitch( $pwdfile, $bootstraps, $seed, $jumbles, 0, "FM", $use_global_rearr ); + print( "\n========== PHYLIP FITCH FM end =========\n\n" ); + &mv( "outtree", $OUTTREE_PHYLIP_FM ); + &rm( "outfile" ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_PHYLIP_FM, $OUTTREES_ALL ); + $all_count++; + } +} +if ( $use_phylip_fitch_me ) { + print( "\n========== PHYLIP FITCH ME begin =========\n\n" ); + &executeFitch( $pwdfile, $bootstraps, $seed, $jumbles, 0, "ME", $use_global_rearr ); + print( "\n========== PHYLIP FITCH ME end =========\n\n" ); + &mv( "outtree", $OUTTREE_PHYLIP_ME ); + &rm( "outfile" ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_PHYLIP_ME, $OUTTREES_ALL ); + $all_count++; + } +} +if ( $use_bionj ) { + print( "\n========== BIONJ begin =========\n\n" ); + &executeBionj( $pwdfile, $OUTTREE_BIONJ ); + print( "\n========== BIONJ end =========\n\n" ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_BIONJ, $OUTTREES_ALL ); + $all_count++; + } +} +if ( $use_weighbor ) { + print( "\n========== WEIGHBOR begin =========\n\n" ); + &executeWeighbor( $number_of_aa, 14, $pwdfile, $OUTTREE_WEIGHBOR ); + print( "\n========== WEIGHBOR end =========\n\n" ); + if ( $bootstraps > 1 ) { + &append( $OUTTREE_WEIGHBOR, $OUTTREES_ALL ); + $all_count++; + } +} + + + +if ( $bootstraps > 1 ) { + # Consense: + if ( $use_fastme == 1 ) { + &consense( $OUTTREE_FASTME, $CONSENSUS_FASTME ); + } + if ( $use_phylip_nj == 1 ) { + &consense( $OUTTREE_PHYLIP_NJ, $CONSENSUS_PHYLIP_NJ ); + } + if ( $use_phylip_fitch_fm == 1 ) { + &consense( $OUTTREE_PHYLIP_FM, $CONSENSUS_PHYLIP_FM ); + } + if ( $use_phylip_fitch_me == 1 ) { + &consense( $OUTTREE_PHYLIP_ME, $CONSENSUS_PHYLIP_ME ); + } + if ( $use_bionj == 1 ) { + &consense( $OUTTREE_BIONJ, $CONSENSUS_BIONJ ); + } + if ( $use_weighbor == 1 ) { + &consense( $OUTTREE_WEIGHBOR, $CONSENSUS_WEIGHBOR ); + } + if ( $use_phyml == 1 ) { + &consense( $OUTTREE_PHYML, $CONSENSUS_PHYML ); + } + if ( $use_proml == 1 ) { + &consense( $OUTTREE_PROML, $CONSENSUS_PROML ); + } + if ( $use_protpars == 1 ) { + &consense( $OUTTREE_PROTPARS, $CONSENSUS_PROTPARS ); + } + if ( $all_count > 1 ) { + &consense( $OUTTREES_ALL, $CONSENSUS_ALL ); + } + else { + &rm( $OUTTREES_ALL ); + } + + my $INTREE_FOR_PUZZLE = "intree"; #why so serious? + &rm( $INTREE_FOR_PUZZLE ); + system( "touch", $INTREE_FOR_PUZZLE ) + && die("\n\n$0: could not \"touch $INTREE_FOR_PUZZLE\": $!\n\n"); + + if ( $use_fastme == 1 ) { + &append( $CONSENSUS_FASTME, $INTREE_FOR_PUZZLE ); + } + if ( $use_phylip_nj == 1 ) { + &append( $CONSENSUS_PHYLIP_NJ, $INTREE_FOR_PUZZLE ); + } + if ( $use_phylip_fitch_fm == 1 ) { + &append( $CONSENSUS_PHYLIP_FM, $INTREE_FOR_PUZZLE ); + } + if ( $use_phylip_fitch_me == 1 ) { + &append( $CONSENSUS_PHYLIP_ME, $INTREE_FOR_PUZZLE ); + } + if ( $use_bionj == 1 ) { + &append( $CONSENSUS_BIONJ, $INTREE_FOR_PUZZLE ); + } + if ( $use_weighbor == 1 ) { + &append( $CONSENSUS_WEIGHBOR, $INTREE_FOR_PUZZLE ); + } + if ( $use_raxml == 1 ) { + # Needed, because TREE-PUZZLE adds internal labels for all subsequent trees + # when evaluating given trees (this seems a strange behaviour). + removeSupportValues( $CONSENSUS_RAXML, $CONSENSUS_RAXML."_support_removed" ); + &append( $CONSENSUS_RAXML."_support_removed", $INTREE_FOR_PUZZLE ); + &rm( $CONSENSUS_RAXML."_support_removed" ); + } + if ( $use_phyml == 1 ) { + &append( $CONSENSUS_PHYML, $INTREE_FOR_PUZZLE ); + } + if ( $use_proml == 1 ) { + &append( $CONSENSUS_PROML, $INTREE_FOR_PUZZLE ); + } + if ( $use_protpars == 1 ) { + &append( $CONSENSUS_PROTPARS, $INTREE_FOR_PUZZLE ); + } + if ( $all_count > 1 ) { + &append( $CONSENSUS_ALL, $INTREE_FOR_PUZZLE ); + } + + + # Puzzle for ML branch lenghts: + # The alignment is read from infile by default. + # The tree is read from intree by default. + &rm( "infile" ); + &mv( "align", "infile" ); # align = original alignment in phylip interleaved. + + &executePuzzleToCalculateBranchLenghts( $matrix, + $exact_parameter_est, + $rate_heterogeneity ); + + my $OUTTREE_PUZZLE = "outtree_puzzle"; + + &rm( $outfile."_puzzle_outfile" ); + + &mv( "outfile", $outfile."_puzzle_outfile" ); + &mv( "outtree", $OUTTREE_PUZZLE ); + &rm( "outdist" ); + &rm( "intree" ); + + + # Transfer + # -------- + my $counter = 0; + if ( $use_fastme == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_FASTME, $fastme_outtree, $counter++ ); + &rm( $CONSENSUS_FASTME ); + } + if ( $use_phylip_nj == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_PHYLIP_NJ, $phylip_nj_outtree, $counter++ ); + &rm( $CONSENSUS_PHYLIP_NJ ); + } + if ( $use_phylip_fitch_fm == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_PHYLIP_FM, $phylip_fm_outtree, $counter++ ); + &rm( $CONSENSUS_PHYLIP_FM ); + } + if ( $use_phylip_fitch_me == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_PHYLIP_ME, $phylip_me_outtree, $counter++ ); + &rm( $CONSENSUS_PHYLIP_ME ); + } + if ( $use_bionj == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_BIONJ, $bionj_outtree, $counter++ ); + &rm( $CONSENSUS_BIONJ ); + } + if ( $use_weighbor == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_WEIGHBOR, $weighbor_outtree, $counter++ ); + &rm( $CONSENSUS_WEIGHBOR ); + } + if ( $use_raxml == 1 ) { + &to_phyloxml( $CONSENSUS_RAXML, $raxml_outtree, 1, 1 ); + $counter++; + } + if ( $use_phyml == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_PHYML, $phyml_outtree, $counter++ ); + &rm( $CONSENSUS_PHYML ); + } + if ( $use_proml == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_PROML, $proml_outtree, $counter++ ); + &rm( $CONSENSUS_PROML ); + } + if ( $use_protpars == 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_PROTPARS, $protpars_outtree, $counter++ ); + &rm( $CONSENSUS_PROTPARS ); + } + if ( $all_count > 1 ) { + &executeSupportTransfer( $OUTTREE_PUZZLE, $CONSENSUS_ALL, $all_outtree, $counter++ ); + &rm( $CONSENSUS_ALL ); + } + + # Clean up + # -------- + &rm( $OUTTREE_PUZZLE ); + &rm( $SEQBOOT_OUTFILE ); + if ( $keep_multiple_trees == 1 ) { + if ( $use_fastme == 1 ) { + &mv( $OUTTREE_FASTME, $multitreefile_fastme ); + } + if ( $use_phylip_nj == 1 ) { + &mv( $OUTTREE_PHYLIP_NJ, $multitreefile_phylip_nj ); + } + if ( $use_phylip_fitch_fm == 1 ) { + &mv( $OUTTREE_PHYLIP_FM, $multitreefile_phylip_fm ); + } + if ( $use_phylip_fitch_me == 1 ) { + &mv( $OUTTREE_PHYLIP_ME, $multitreefile_phylip_me ); + } + if ( $use_bionj == 1 ) { + &mv( $OUTTREE_BIONJ, $multitreefile_bionj ); + } + if ( $use_weighbor == 1 ) { + &mv( $OUTTREE_WEIGHBOR, $multitreefile_weighbor ); + } + if ( $use_phyml == 1 ) { + &mv( $OUTTREE_PHYML, $multitreefile_phyml ); + } + if ( $use_proml == 1 ) { + &mv( $OUTTREE_PROML, $multitreefile_proml ); + } + if ( $use_protpars == 1 ) { + &mv( $OUTTREE_PROTPARS, $multitreefile_protpars ); + } + &mv( $pwdfile, $multipwdfile ); + } + else { + if ( $use_fastme == 1 ) { + &rm( $OUTTREE_FASTME ); + } + if ( $use_phylip_nj == 1 ) { + &rm( $OUTTREE_PHYLIP_NJ ); + } + if ( $use_phylip_fitch_fm == 1 ) { + &rm( $OUTTREE_PHYLIP_FM ); + } + if ( $use_phylip_fitch_me == 1 ) { + &rm( $OUTTREE_PHYLIP_ME ); + } + if ( $use_bionj == 1 ) { + &rm( $OUTTREE_BIONJ ); + } + if ( $use_weighbor == 1 ) { + &rm( $OUTTREE_WEIGHBOR ); + } + if ( $use_phyml == 1 ) { + &rm( $OUTTREE_PHYML ); + } + if ( $use_proml == 1 ) { + &rm( $OUTTREE_PROML ); + } + if ( $use_protpars == 1 ) { + &rm( $OUTTREE_PROTPARS ); + } + &rm( $pwdfile ); + } + if ( $all_count > 1 ) { + &rm( $OUTTREES_ALL ); + } +} # if ( $bootstraps > 1 ) +else { + &rm( "infile.dist" ); + + &rm( "infile.puzzle" ); + if ( $use_fastme == 1 ) { + &to_phyloxml( $OUTTREE_FASTME, $fastme_outtree, 0, 1 ); + } + if ( $use_phylip_nj == 1 ) { + &to_phyloxml( $OUTTREE_PHYLIP_NJ, $phylip_nj_outtree, 0, 1); + } + if ( $use_phylip_fitch_fm == 1 ) { + &to_phyloxml( $OUTTREE_PHYLIP_FM, $phylip_fm_outtree, 0, 1 ); + } + if ( $use_phylip_fitch_me == 1 ) { + &to_phyloxml( $OUTTREE_PHYLIP_ME, $phylip_me_outtree, 0, 1 ); + } + if ( $use_bionj == 1 ) { + &to_phyloxml( $OUTTREE_BIONJ, $bionj_outtree, 0, 1 ); + } + if ( $use_weighbor == 1 ) { + &to_phyloxml( $OUTTREE_WEIGHBOR, $weighbor_outtree, 0, 1 ); + } + if ( $use_raxml == 1 ) { + &to_phyloxml( $OUTTREE_RAXML, $raxml_outtree, 0, 1 ); + } + if ( $use_phyml == 1 ) { + &to_phyloxml( $OUTTREE_PHYML, $phyml_outtree, 0, 1 ); + } + if ( $use_proml == 1 ) { + &to_phyloxml( $OUTTREE_PROML, $proml_outtree, 0, 1 ); + } + if ( $use_protpars == 1 ) { + &to_phyloxml( $OUTTREE_PROTPARS, $protpars_outtree, 0, 1 ); + } +} # if ( $bootstraps > 1 ) + +&rm( $infile ); +&rm( "infile" ); +&rm( "align" ); +&rm( "align.reduced" ); + + +$log = $log."Finish time/date : ".`date`; + +if ( $bootstraps > 1 ) { + $log = $log."Puzzle output file : ".$outfile."_puzzle_outfile\n"; +} +$log = $log."Columns in alignment : $number_of_aa\n"; +$log = $log."Number of sequences in alignment : $number_of_seqs\n"; +if ( $all_count > 1 ) { + $log = $log."Combined consensus : $all_outtree\n"; +} + + +if ( $bootstraps > 1 ) { + $log = $log."\n\n"; + $log = $log."Simple support value statistics (trees are numbered the same as for TREE PUZZLE output)\n"; + $log = $log."------------------------------- \n"; + $log = $log."\n"; +} + +open( OUT, ">$logfile" ) || die "\n$0: Cannot create file <<$logfile>>: $!\n"; +print OUT $log; +close( OUT ); + +if ( $bootstraps > 1 ) { + # Simple support statistics + # ------------------------- + my $SS_OUT = $temp_dir."/ss_out"; + my @phylos = (); + my $ounter = 0; + if ( $use_fastme == 1 ) { + $phylos[ $ounter++ ] = $fastme_outtree; + } + if ( $use_phylip_nj == 1 ) { + $phylos[ $ounter++ ] = $phylip_nj_outtree; + } + if ( $use_phylip_fitch_fm == 1 ) { + $phylos[ $ounter++ ] = $phylip_fm_outtree; + } + if ( $use_phylip_fitch_me == 1 ) { + $phylos[ $ounter++ ] = $phylip_me_outtree; + } + if ( $use_bionj == 1 ) { + $phylos[ $ounter++ ] = $bionj_outtree; + } + if ( $use_weighbor == 1 ) { + $phylos[ $ounter++ ] = $weighbor_outtree; + } + if ( $use_raxml == 1 ) { + $phylos[ $ounter++ ] = $raxml_outtree; + } + if ( $use_phyml == 1 ) { + $phylos[ $ounter++ ] = $phyml_outtree; + } + if ( $use_proml == 1 ) { + $phylos[ $ounter++ ] = $proml_outtree; + } + if ( $use_protpars == 1 ) { + $phylos[ $ounter++ ] = $protpars_outtree; + } + if ( $all_count > 1) { + $phylos[ $ounter++ ] = $all_outtree; + } + &executeSupportStatistics( $SS_OUT, @phylos ); + &append( $SS_OUT, $logfile ); + &rm( $SS_OUT ); + + # Append parts of puzzle output file + # ---------------------------------- + if ( $all_count > 1 ) { + &parsePuzzleOutfile( $outfile."_puzzle_outfile", $logfile ); + } +} + +chdir( $current_dir ) +|| die "\n\n$0: Could not chdir to <<$current_dir>>: $!\n\n"; + +rmdir( $temp_dir ) +|| print "\n\n$0: Warning: Could not remove <<$temp_dir>>: $!\n\n"; + +print "\n\n\n$0 successfully comleted.\n\n"; + +exit( 0 ); + + + +# Methods: +# -------- + + +# Six arguments: +# 1. DNA or Amino-Acids sequence filename (PHYLIP format) +# 2. Model, eg. PROTGAMMAIVT +# 3. Replicates (bootstrap) +# 4. Seed for bootstrap +# 5. Output suffix +# 6. Algorithm (only for bootstrap, default otherwise) +# NOTE. RaxML does its own bootstrapping. +sub executeRaxml { + my $msa = $_[ 0 ]; + my $model = $_[ 1 ]; + my $replicates = $_[ 2 ]; + my $seed = $_[ 3 ]; + my $outfile_suffix = $_[ 4 ]; + my $algo = $_[ 5 ]; + + &testForTextFilePresence( $msa ); + my $command = "$RAXML -m $model -s $msa -n $outfile_suffix"; + + if ( $replicates > 1 ) { + $command = $command . " -x $seed -N $replicates"; + if ( $algo ) { + $command = $command . " -f $algo"; + } + } + + print( "\n$command\n"); + + system( $command ) + && &dieWithUnexpectedError( $command ); + +} + + +sub to_phyloxml { + my $from = $_[ 0 ]; + my $to = $_[ 1 ]; + my $internal_names_are_boots = $_[ 2 ]; + my $extract_taxonomy = $_[ 3 ]; + &dieIfFileExists( $to ); + &dieIfFileNotExists( $from ); + my $command = "$NEWICK_TO_PHYLOXML -f=nn $from $to"; + if ( $internal_names_are_boots == 1 ) { + $command = $command . " -i"; + } + if ( $extract_taxonomy == 1 ) { + $command = $command . " -xt"; + } + system( $command ) + && die "$0: Could not execute \"$command \""; + &rm( $from ); +} + + +sub mv { + my $from = $_[ 0 ]; + my $to = $_[ 1 ]; + &dieIfFileExists( $to ); + &dieIfFileNotExists( $from ); + system( "mv", $from, $to ) + && die "\n\n$0: could not move \"$from\" to \"$to\": $!\n\n"; +} + +sub cp { + my $from = $_[ 0 ]; + my $to = $_[ 1 ]; + &dieIfFileExists( $to ); + &dieIfFileNotExists( $from ); + + system( "cp", $from, $to ) + && die "\n\n$0: could not copy \"$from\" to \"$to\": $!\n\n"; +} + +sub rm { + my $f = $_[ 0 ]; + unlink( $f ); +} + +sub consense { + my $multi_in = $_[ 0 ]; + my $consense_out = $_[ 1 ]; + &executeConsense( $multi_in ); + &mv( "outtree", $consense_out ); + &rm( "outfile" ); + +} + + + +# 1. file to be appended +# 2. file to append to +sub append { + my $to_be_appended = $_[ 0 ]; + my $append_to = $_[ 1 ]; + &dieIfFileNotExists( $to_be_appended ); + system( "cat $to_be_appended >> $append_to" ) + && die "\n\n$0: could not execute \"cat $to_be_appended >> $append_to\": $!\n\n"; + +} + +sub dieIfFileExists { + my $file = $_[ 0 ]; + if ( -e $file ) { + die "\n\n$0: \"$file\" already exists\n\n"; + } +} + +sub dieIfFileNotExists { + my $file = $_[ 0 ]; + unless ( ( -s $file ) && ( -f $file ) ) { + die( "\n\n$0: \"$file\" does not exist or is empty" ); + } +} + + + + +# Two arguments: +# 1. seed for random number generator +# 2. number of bootstraps +# Reads in "infile" by default. +sub executeSeqboot { + + my $s = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $verb = ""; + + &testForTextFilePresence( $infile ); + + + $verb = " +2"; + + system( "$SEQBOOT << ! +r +$bs$verb +Y +$s +!" ) + && die "$0: Could not execute \"$SEQBOOT\""; + +} + + + +# One/two/three argument(s): +# Reads in tree from "intree" by default. (Presence of "intree" automatically +# switches into "User defined trees" mode.) +# 1. matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# 2. Parameter estimates: 1 for "Exact (slow)"; "Approximate (faster)" otherwise +# 3. Model of rate heterogeneity: +# 1 for "8 Gamma distributed rates" +# 2 for "Two rates (1 invariable + 1 variable)" +# 3 for "Mixed (1 invariable + 8 Gamma rates)" +# otherwise: Uniform rate +# Last modified: 09/08/03 (added 2nd and 3rd parameter) +sub executePuzzleToCalculateBranchLenghts { + my $matrix_option = $_[ 0 ]; + my $parameter_estimates_option = $_[ 1 ]; + my $rate_heterogeneity_option = $_[ 2 ]; + my $i = 0; + my $mat = ""; + my $est = ""; + my $rate = ""; + + unless ( ( -s "infile" ) && ( -f "infile" ) && ( -T "infile" ) ) { + die "\n$0: executePuzzleToCalculateBranchLenghts: <> does not exist, is empty, or is not a plain textfile.\n"; + } + unless ( ( -s "intree" ) && ( -f "intree" ) && ( -T "intree" ) ) { + die "\n$0: executePuzzleToCalculateBranchLenghts: <> does not exist, is empty, or is not a plain textfile.\n"; + } + + $mat = setModelForPuzzle( $matrix_option ); + if ( $parameter_estimates_option ) { + $est = &setParameterEstimatesOptionForPuzzle( $parameter_estimates_option ); + } + if ( $rate_heterogeneity_option ) { + $rate = &setRateHeterogeneityOptionForPuzzle( $rate_heterogeneity_option ); + } + + + system( "$PUZZLE << ! +$mat$est$rate +x +y +!" ) + && die "$0: Could not execute \"$PUZZLE\" (mat=$mat est=$est rate=$rate)"; + +} + +# Two arguments: +# 1. puzzle outfile +# 2. file to append to +sub parsePuzzleOutfile { + my $puzzle_outfile = $_[ 0 ]; + my $file_to_append_to = $_[ 1 ]; + &testForTextFilePresence( $puzzle_outfile ); + open( OUT, ">>$file_to_append_to" ) || &dieWithUnexpectedError( "Cannot open \"$file_to_append_to\"" ); + open( IN, "$puzzle_outfile" ) || &dieWithUnexpectedError( "Cannot open file \"$puzzle_outfile\"" ); + my $return_line; + my $read = 0; + print OUT "\nTREE PUZZLE output\n"; + print OUT "------------------\n"; + while ( $return_line = ) { + if ( $return_line =~/COMPARISON OF USER TREES/ ) { + $read = 1; + } + elsif( $return_line =~/TIME STAMP/ ) { + $read = 0; + } + elsif( $read ) { + print OUT $return_line; + } + } + close( IN ); + close( OUT ); +} + +# Three/four arguments: +# 1. Name of file containing tree with correct branch lengths +# 2. Name of file containing tree with correct bootstraps +# 3. Outputfilename +# 4. Index of tree with correct branch lengths, in case more than one in file +# Last modified: 2007.11.27 +sub executeSupportTransfer { + my $tree_with_bl = $_[ 0 ]; + my $tree_with_bs = $_[ 1 ]; + my $out = $_[ 2 ]; + my $index = $_[ 3 ]; + + &testForTextFilePresence( $tree_with_bl ); + &testForTextFilePresence( $tree_with_bs ); + my $command = "$SUPPORT_TRANSFER $tree_with_bl $tree_with_bs $out $index"; + system( $command ) + && die "$0: Could not execute \"$command\""; +} + + +# Two or more arguments: +# 1. outfile +# 2. phylogeny 1 with support values +# 3. phylogeny 2 with support values +# 4. ... +sub executeSupportStatistics { + my $outfile = $_[ 0 ]; + &dieIfFileExists( $outfile ); + my $phylos = ""; + for( my $i = 1; $i < scalar(@_); ++$i ) { + &testForTextFilePresence( $_[ $i ] ); + $phylos .= $_[ $i ]." "; + } + my $command = "$SUPPORT_STATISTICS -o=$outfile $phylos"; + system( "$command" ) + && die "$0: Could not execute \"$command\""; +} + + +sub getNumberOfSeqsAndAas { + my $infile = $_[ 0 ]; + my $seqs = 0; + my $aa = 0; + open( IN, "$infile" ) || die "\n$0: Cannot open file <<$infile>>: $!\n"; + while( ) { + if ( $_ =~ /^\s*(\d+)\s+(\d+)\s*$/ ) { + $seqs = $1; + $aa = $2; + } + } + close( IN ); + + if ( $seqs == 0 || $aa == 0 ) { + die( "\n$0: Could not get number of seqs and aa from: $infile" ); + } + return $seqs, $aa; +} + + + +sub removeSupportValues { + my $infile = $_[ 0 ]; + my $outfile = $_[ 1 ]; + &testForTextFilePresence( $infile ); + open( OUT, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + open( IN, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( my $line = ) { + $line =~ s/\)\d+\.?\d*:/\):/g; + print OUT "$line"; + } + close( OUT ); + close( IN ); +} + + + + +# Six arguments: +# 1. name of alignment file (in correct format!) +# 2. number of bootstraps +# 3. jumbles: 0: do not jumble; >=1 number of jumbles +# 4. seed for random number generator +# 5. 1 for PAM instead of JTT +# 6. 1 to use globale rearragements +sub executeProml { + my $align = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $rand = $_[ 2 ]; + my $s = $_[ 3 ]; + my $use_pam = $_[ 4 ]; + my $use_global_rearr = $_[ 5 ]; + my $jumble = ""; + my $multi = ""; + my $pam = ""; + + &testForTextFilePresence( $align ); + + if ( $bs > 1 && $rand < 1 ) { + $rand = 1; + } + + if ( $rand >= 1 ) { + $jumble = " +J +$s +$rand"; + } + + if ( $bs > 1 ) { + $multi = " +M +D +$bs"; + } + + + if ( $use_pam == 1 ) { + $pam = " +P +P"; + } + + my $global = ""; + if ( $use_global_rearr == 1 ) { + $global = " +G"; + } + + system( "$PROML 2>&1 << ! +$align$jumble$multi$pam$global +3 +Y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$PROML $align$jumble$multi$pam$global\"" ); + # 3: Do NOT print out tree + + return; + +} ## executeProml + + +sub printUsage { + + print < + [path/name for temporary directory to be created] + + Example: + "% phylo_pl.pl -B100q\@1nbS9X IL5.aln IL5_tree" + + Options + ------- + + Bx : Number of bootstraps. B0: do not bootstrap. Default is 100 bootstrapps. + The number of bootstrapps should be divisible by 10. + J : Use JTT matrix (Jones et al. 1992) in TREE-PUZZLE and/or PHYML, RAXML, default: VT (Mueller-Vingron 2000). + L : Use BLOSUM 62 matrix (Henikoff-Henikoff 92) in TREE-PUZZLE and/or PHYML, RAXML, default: VT. + M : Use mtREV24 matrix (Adachi-Hasegawa 1996) in TREE-PUZZLE and/or PHYML, default: VT. + W : Use WAG matrix (Whelan-Goldman 2000) in TREE-PUZZLE and/or PHYML, RAXML, default: VT. + P : Use PAM matrix (Dayhoff et al. 1978) in TREE-PUZZLE and/or PHYML, RAXML, default: VT. + D : Use DCMut matrix (Kosial and Goldman, 2005) in PHYML, RAXML, VT in TREE-PUZZLE. + A : Let TREE-PUZZLE choose which matrix to use, default: VT + E : Exact parameter estimates in TREE-PUZZLE, default: Approximate. + Model of rate heterogeneity in TREE-PUZZLE (default: Uniform rate): + g : 8 Gamma distributed rates + t : Two rates (1 invariable + 1 variable) + m : Mixed (1 invariable + 8 Gamma rates) + q\@x: Use FastME, x: 1: GME + 2: BME + 3: NJ + n : Use PHYLIP Neighbor (NJ). + f : Use PHYLIP Fitch. + e : Use PHYLIP Minimal Evolution. + b : Use BIONJ. + w : Use Weighbor. + x : Use RAxML. + y : Use PHYML. + o : Use PHYLIP proml. + p : Use PHYLIP protpars. + rx : Number of relative substitution rate categories in PHYML (default is 4). + jx : Number of jumbles (input order randomization) for PHYLIP FM, ME, PROTPARS, and PROML (default is 2) (random seed set with Sx). + I : Estimate proportion of invariable sites in RAXML and/or PHYML (otherwise, proportion "0.0" is used in PHYML) + G : to turn on global rearrangements in PHYLIP FM, ME, and PROML + Sx : Seed for random number generator(s). Must be 4n+1. Default is 9. + X : To keep multiple tree file (=trees from bootstrap resampled alignments) and + pairwise distance matrix file (in case of bootstrap analysis). + +END + +} ## printUsage diff --git a/forester/archive/perl/queue.pm b/forester/archive/perl/queue.pm new file mode 100755 index 0000000..a7374fe --- /dev/null +++ b/forester/archive/perl/queue.pm @@ -0,0 +1,150 @@ +package queue; + +# Process queueing +# SRE, Wed Sep 2 14:37:14 1998 +# CVS $Id: queue.pm,v 1.1.1.1 2005/03/22 08:35:51 cmzmasek Exp $ +# Master copy: see src/queue (CVS controlled, separate from pfamserver) +# +# Written for Pfam web server; suited for queuing any set of commands. +# +# API: +# +# $mypid = $$; +# $delay_in_seconds = 2; +# +# $nqueued = &queue::CheckQueue("pfamqueue", "username", "/tmp"); +# print ("There are $nqueued jobs ahead of you in line\n"); +# &queue::WaitInQueue("pfamqueue", "username", "/tmp", $mypid, $delay_in_seconds); +# print ("Our turn! Working...\n"); +# (do stuff) +# &queue::RemoveFromQueue("pfamqueue", "username", "/tmp", $mypid); +# +# queuedir is a directory where the script has write permissions; +# typically a tmp directory of some sort. +# + + +################################################################ +# PFAMSERVER - The Washington University/St. Louis Pfam web server +# Copyright (C) 1995-1999 Washington University School of Medicine +# Copyright (C) 1995-1999 Sanger Centre/Genome Research Ltd. +# Copyright (C) 1998-1999 Karolinska Institutet Center for Genomics Research +# All Rights Reserved +# +# This source code is distributed under the terms of the +# GNU General Public License. See the files COPYRIGHT and LICENSE +# for details. +# +################################################################ +# RCS $Id: queue.pm,v 1.1.1.1 2005/03/22 08:35:51 cmzmasek Exp $ + + +# WaitInQueue() - add a process id to a queue, wait for turn +# +# Arguments: queue - name of queue (prefix of queue stamp) +# username - name of user (middle part of queue stamp) +# queuedir - directory to keep queue stamps in +# mypid - our process id +# delay - number of seconds between checking queue status +# +# Note: When it checks the queue, if a stamp is present that +# doesn't seem to correspond to a running process (ps -a), +# it deletes the stamp. This protects against crashed processes +# freezing all subsequent jobs. +# +# example: &WaitInQueue("pfamqueue", "/tmp", $mypid, 2); +# +# Returns 1 on success, 0 on failure. +# +# NOTE: You may have to set the ps command in WaitInQueue. +# It must return all running processes. +# +sub WaitInQueue +{ + local($queue, $username, $queuedir, $mypid, $delay) = @_; + local(@newqueue, @queuelist, %mark); + local(*STAMP, *QUEUEDIR); + local(%is_running); + local(@output, $line, $pid, $waiting); + + # get list of other guys who are working + opendir(QUEUEDIR, $queuedir); + @queuelist = grep(/$queue\.\S*\.\d+/, readdir(QUEUEDIR)); + closedir(QUEUEDIR); + # make stamp for our pid + if ($username eq "") { $username = "unknown"; } + open(STAMP, ">$queuedir/$queue.$username.$mypid") || return 0; + close(STAMP); + # wait for our turn + while (1) + { + if ($#queuelist == -1) { last; } # nobody ahead of us; our turn! + sleep($delay); + # get list of running processes + %is_running = 0; + @output = split(/^/, `ps -ax`); + foreach $line (@output) { + $line =~ /\s*(\d+)/; + $is_running{$1} = 1; + } + # verify that the guys we're waiting for + # are still running, and haven't crashed. + # if they have, reap their stamps, and their + # tmp files. + foreach $waiting (@queuelist) { + ($name, $pid) = ($waiting =~ /$queue\.(\S*)\.(\d+)/); + if (! $is_running{$pid}) { unlink "$queuedir/$queue.$name.$pid"; } + } + + # get new list of queued jobs ahead of us. + # ignore guys who came in after we grabbed our initial queue list; + # they're waiting for *us*. The crazed greps are the Perl-y + # way of computing an intersection between two arrays. + # + opendir(QUEUEDIR, $queuedir); + @newqueue = grep(/$queue\.\S*\.\d+/, readdir(QUEUEDIR)); + closedir(QUEUEDIR); + %mark = 0; + grep($mark{$_}++,@queuelist); + @queuelist = grep($mark{$_},@newqueue); + } + + 1; # time to run! +} + + +# CheckQueue() - return total number of processes working, other than us +# and the total that this particular username is running. +# +# Arguments: queue, username, queuedir +# +sub CheckQueue +{ + local($queue, $username, $queuedir) = @_; + local(*QUEUEDIR, @allqueue, $nall, $nuser); + + opendir(QUEUEDIR, $queuedir); + @allqueue = grep(/$queue\.\S*\.\d+/, readdir(QUEUEDIR)); + closedir(QUEUEDIR); + + if ($username eq "") {$username = "unknown"; } + $nall = $nuser = 0; + foreach $waiting (@allqueue) { + ($name, $pid) = ($waiting =~ /$queue\.(\S*)\.(\d+)/); + $nall++; + if ($name eq $username) { $nuser++; } + } + return ($nall, $nuser); +} + + +# RemoveFromQueue() - remove a pid from a queue +# +sub RemoveFromQueue +{ + local($queue, $username, $queuedir, $pid) = @_; + if ($username eq "") {$username = "unknown"; } + unlink "$queuedir/$queue.$username.$pid"; +} + +1; diff --git a/forester/archive/perl/rio.pl b/forester/archive/perl/rio.pl new file mode 100755 index 0000000..7594587 --- /dev/null +++ b/forester/archive/perl/rio.pl @@ -0,0 +1,3391 @@ +#!/usr/bin/perl -W + +# rio.pl +# ------ +# +# Copyright (C) 2000-2002 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Created: 11/25/00 +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified 09/06/03 +# + +# +# +# Available at: http://www.genetics.wustl.edu/eddy/forester/ +# RIO webserver: http://www.rio.wustl.edu/ +# +# Reference: +# Zmasek C.M. and Eddy S.R. (2002) +# RIO: Analyzing proteomes by automated phylogenomics using +# resampled inference of orthologs. +# BMC Bioinformatics 3:14 +# http://www.biomedcentral.com/1471-2105/3/14/ +# +# It is highly recommended that you read this paper before +# installing and/or using RIO. (Included in the RIO +# distribution as PDF: "RIO.pdf".) +# +# +# Before rio.pl can be used, some variables in rio_module.pm need to be set, +# as described in RIO_INSTALL. +# +# Usage: rio.pl +# ----- +# +# +# Examples: +# -------- +# % RIO1.1/perl/rio.pl 1 A=aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out1 p I C E +# +# % RIO1.1/perl/rio.pl 2 A=aconitase N=LEU2_LACLA/5-449 O=out2 p I C E +# +# % RIO1.1/perl/rio.pl 3 A=/path/to/my/pfam/Full/aconitase H=aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out3 p I C E +# +# % RIO1.1/perl/rio.pl 4 A=/path/to/my/pfam/Full/aconitase N=LEU2_LACLA/5-449 O=out4 p I C E +# +# % RIO1.1/perl/rio.pl 3 A=/path/to/my/pfam/Full/aconitase b=/path/to/my/pfam/Seed/aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out5 p I C E +# +# +# Modes: +# ------ +# +# 1: RIO analysis based on precalculated pairwise distances +# alignment does not contain query sequence +# +# 2: RIO analysis based on precalculated pairwise distances +# alignment does contain query sequence +# +# 3: RIO analysis based on Pfam alignments, +# alignment does not contain query sequence +# +# 4: RIO analysis based on Pfam alignments, +# alignment does contain query sequence +# +# +# +# Tagged arguments: +# ----------------- +# +# No "G=", "H=", "F=", "T=", "a=", "b=", "s", "f" in modes 1 and 2. +# +# +# A= Pfam alignment name (mandatory). This specifies the alignment +# against which the RIO analysis is to be performed. +# In modes 1 and 2: Pfam model (alignment) name +# (e.g. "A=aconitase"). +# In modes 3 and 4: Pfam alignment path/name +# (e.g. "A=/path/to/your/pfam/Full/aconitase"). +# +# Q= Path/name of file containing the query sequence +# (in FASTA format or raw sequence) (mandatory in modes 1 and 3). +# +# N= Query name (mandatory). This must include the SWISS-PROT code +# for the species of the query after a "_" (e.g. "N=QUERY_HAEIN"). +# If the query sequence is already in the alignment (modes 2 and 4) +# the complete name needs to be specified -- including "/xxx-xxx". +# +# O= Output file path/name (mandatory). +# +# T= Model for pairwaise distance calculation: +# J=JTT, B=BLOSUM 62, M=mtREV24, V=VT, W=WAG, P=PAM. +# BLOSUM 62 is default. +# (Not in modes 1 and 2; these modes use $MATRIX_FOR_PWD instead.) +# +# In modes 1 and 3, a HMM is needed to align the query sequence to +# the alignment and either one of the following options must be +# employed: +# H= HMM name: This uses hmmfetch to retrieve a HMM from +# $PFAM_HMM_DB. +# F= HMM file: This directly reads the HMM from a file. +# +# S= Species tree file path/name (in NHX format) (optional). +# If not specified, $SPECIES_TREE_FILE_DEFAULT is used. +# +# G= Species names file (optional). Only sequences associated with +# species found in this file are used. +# In the species names file, individual species names must be +# separated by newlines and lines starting with "#" are ignored. +# While only sequences associated with species found in the species +# tree ("S=") are used for the actual RIO analysis, this allows to +# remove sequences prior to tree calculation (which is the most +# time consuming step). +# +# P= Sort priority (default is 12): +# 0 : Ortholog +# 1 : Ortholog, Super ortholog +# 2 : Super ortholog, Ortholog +# 3 : Ortholog, Distance +# 4 : Distance, Ortholog +# 5 : Ortholog, Super ortholog, Distance +# 6 : Ortholog, Distance, Super ortholog +# 7 : Super ortholog, Ortholog, Distance +# 8 : Super ortholog, Distance, Ortholog +# 9 : Distance, Ortholog, Super ortholog +# 10 : Distance, Super ortholog, Ortholog +# 11 : Ortholog, Subtree neighbor, Distance +# 12 : Ortholog, Subtree neighbor, Super ortholog, Distance (default) +# 13 : Ortholog, Super ortholog, Subtree neighbor, Distance +# 14 : Subtree neighbor, Ortholog, Super ortholog, Distance +# 15 : Subtree neighbor, Distance, Ortholog, Super ortholog +# 16 : Ortholog, Distance, Subtree neighbor, Super ortholog +# 17 : Ortholog, Subtree neighbor, Distance, Super ortholog +# +# a= Bootstraps for tree construction (not in modes 1 and 2). +# Default is 100. +# +# L= Threshold for orthologies for output. Default is 0. +# v= Threshold for ultra-paralogies for output. Default is 50. +# +# U= Threshold for orthologies for distance calculation. Default is 60. +# +# X= In case of more than one putative orthologs: +# number of sd the distance query - LCA has to differ +# from the mean to generate a warning. Default is 2. +# +# Y= In case of no putative orthologs: +# number of sd the distance query - root has to differ +# from mean to generate a warning. Default is 2. +# +# Z= In case of one putative ortholog: +# threshold for factor between the two distances to their +# LCA (larger/smaller) to generate a warning. Default is 2. +# +# B= Threshold for subtree-neighborings. Default is 0. +# +# b= Build HMM from seed alignment with "hmmbuild -s" (optional). +# This is to prevent from finding multiple domains per sequence +# (i.e. prevents "cutting" the query sequence). Give path/name to +# Seed with this. +# +# j= Name for temporary directory (optional). +# +# y= Seed for random number generator. Default is 41. +# +# I Create and save a rooted, with duplication vs speciation, +# and orthology information annotated gene tree. +# If precalculated distances are used (modes 1 and 2): this gene +# tree is a NJ tree calculated based on the non-bootstrap resampled +# (original) pairwise distances. +# If precalculated distances are not used (modes 3 and 4): this gene +# is a consenus tree with ML branch length values and is also +# annotated with bootstrap values for each node. +# +# Options for output: +# p Output ultra-paralogs. +# D Description from SWISS-PROT and TrEMBL. +# C Complete description from SWISS-PROT and TrEMBL. +# E 118 character output instead of 78 character output. +# +# K Keep intermediate files (they will go into the same directory +# as the output file, their names are the same as of the output +# file, with various suffixes added). +# +# s Ignore non SWISS-PROT sequences (i.e. sequences from TrEMBL) +# in the Pfam alignment. +# +# f Try to ignore TrEMBL "fragments" (sequences with "fragment" in +# their description). +# +# + Parallel, use machines listed in file $NODE_LIST. +# +# x RIO used as web server -- HTML output. +# +# +# +# +# History +# ------- +# 09/06/03: Removal of minor bug. Only create consenus tree with ML branch length +# values if "I" option used (in modes 3 or 4) -- the problem/bug was that +# this tree was always created whether "I" was used or not. +# + + +use strict; + +use FindBin; +use lib $FindBin::Bin; +use Net::Ping; +use rio_module; + +use File::Basename; + + +my $VERSION = "5.010"; + +my $E_VALUE_THRESHOLD = 0.01; # For HMMSEARCH. +my $SORT_DEFAULT = 12; +my $THRESHOLD_ORTHOLOGS_DEFAULT = 0; +my $THRESHOLD_SN_DEFAULT = 0; +my $THRESHOLD_ORTHOLOGS_DEFAULT_DC = 60; +my $T_ULTRA_PARALOGS_DEFAULT = 50; +my $WARN_NO_ORTHOS_DEFAULT = 2; +my $WARN_MORE_THAN_ONE_ORTHO_DEFAULT = 2; +my $WARN_ONE_ORTHO_DEFAULT = 2; +my $MIN_NUMBER_OF_SEQS_IN_ALN = 4; +my $BOOSTRAPS_FOR_MAKETREE_DEFAULT = 100; +my $SEED_FOR_MAKETREE_DEFAULT = 41; +my $MATRIX_DEFAULT = 2; # 2=BLOSUM62 + +my $DO_RIO_TEMP_OUTFILE = "DoRIO_OUTFILE"; +my $TEMP_HMM_FILE = "HMMFILE"; + +my $DEFAULT_OPTIONS_FOR_MAKETREE = "XR"; + + +# I/O files, names: +my $alignment = ""; +my $hmm_file = ""; +my $hmm_name = ""; +my $seqX_file = ""; +my $species_tree_file = ""; +my $outfile = ""; +my $outfile_annot_nhx_tree = ""; +my $query_name = ""; +my $multiple_trees_file = ""; +my $distance_matrix_file = ""; +my $maketree_out_tree_file = ""; +my $seed_aln_for_hmmbuild = ""; +my $temp_dir = ""; +my $bsp_file = ""; +my $pwd_file = ""; +my $nbd_file = ""; +my $output_dir = ""; +my $species_names_file = " "; # Must be " ". +my $options_for_makeTree = ""; + + +# multiple choice options: +my $mode = 0; +my $sort = $SORT_DEFAULT; +my $matrix_n = $MATRIX_DEFAULT; # 0=JTT 1=PAM 2=BLOSUM62 3=mtREV24 5=VT 6=WAG + + + + +# yes/no options: +my $description = 0; +my $complete_description = 0; +my $long_output = 0; +my $keep = 0; +my $non_sp = 1; # 0 to remove non SP seqs. +my $safe_nhx = 0; +my $no_frags = 0; +my $output_ultraparalogs = 0; +my $parallel = 0; +my $output_HTML = 0; + + +# numerical options: +my $warn_no_orthos = $WARN_NO_ORTHOS_DEFAULT; +my $warn_more_than_one_ortho = $WARN_MORE_THAN_ONE_ORTHO_DEFAULT; +my $warn_one_ortho = $WARN_ONE_ORTHO_DEFAULT; +my $boostraps_for_makeTree = $BOOSTRAPS_FOR_MAKETREE_DEFAULT; +my $seed_for_makeTree = $SEED_FOR_MAKETREE_DEFAULT; +my $t_orthologs = $THRESHOLD_ORTHOLOGS_DEFAULT; +my $t_sn = $THRESHOLD_SN_DEFAULT; +my $t_orthologs_dc = $THRESHOLD_ORTHOLOGS_DEFAULT_DC; +my $t_ultra_paralogs = $T_ULTRA_PARALOGS_DEFAULT; + + +# internal variables: +my $print_header_for_orthologies = 0; +my $print_header_for_s_paralogs = 0; +my $length_of_alignment = 0; +my $length_of_orig_alignment = 0; +my $time = 0; +my $ii = 0; +my $j = 0; +my $jj = 0; +my $number_of_seqs_in_aln = 0; +my $f = 0; +my $saw_distance_values = 0; +my $saw_ultra_paralogs = 0; +my $bootstraps = 0; +my $ext_nodes_in_trees_analyzed = 0; +my $time_total = 0; +my $time_tree_calc = 0; +my $time_tree_calcT = 0; +my $time_rio = 0; +my $time_rioT = 0; +my $time_dqopuzzle = 0; +my $time_dqopuzzleT = 0; +my $time_addingdists = 0; +my $time_addingdistsT = 0; +my $processors = 0; +my $block_size = 0; +my $larger_blocks = 0; +my $printed_ultra_paralogs = 0; + +my $dorio_outfile = ""; +my $options_for_DoRIO = ""; +my $ortho_name = ""; +my $orthos = 0; +my $s_orthos = 0; +my $subtree_neighbors = 0; +my $dist = 0; +my $s_para_name = ""; +my $s_paras = 0; +my $sort_priority = ""; +my $return_line = ""; +my $matrix = ""; +my $command_line = ""; +my $command_line_for_hmmbuild = ""; +my $current_dir = ""; +my @complete_names = (); +my @temp_array = (); +my %Species_names_hash = (); +my %AC_DE = (); # AC => DE from "ACDEOS" TrEMBL file. +my %SP_AC_DE = (); # ID => DE from "ACIDOS" SWISS-PROT file. +my %names_in_pwd_file = (); +my @nodelist = (); + +my $start_date = `date`; + + + + +# This analyzes the options: +# -------------------------- + +$time_total = time; + +if ( @ARGV < 4 ) { + &printHelp(); +} + +$command_line = "$0 "; +for ( $j = 0; $j < @ARGV; ++$j ) { + $command_line .= "$ARGV[ $j ] "; +} + +&analyzeCommandLine( @ARGV ); + +if ( $species_tree_file eq "" ) { + $species_tree_file = $SPECIES_TREE_FILE_DEFAULT; +} + +&CheckArguments; + +$options_for_makeTree = $DEFAULT_OPTIONS_FOR_MAKETREE; +$options_for_makeTree .= "S".$seed_for_makeTree; + + +if ( $mode == 1 || $mode == 2 ) { + + if ( $mode == 1 ) { + $hmm_file = $RIO_HMM_DIRECTORY.$alignment.$SUFFIX_HMM; + $bsp_file = $RIO_BSP_DIRECTORY.$alignment.$SUFFIX_BOOT_STRP_POS; + &userErrorCheckForTextFileExistence( $hmm_file ); + &userErrorCheckForTextFileExistence( $bsp_file ); + } + + $pwd_file = $RIO_PWD_DIRECTORY.$alignment.$SUFFIX_PWD; + $nbd_file = $RIO_NBD_DIRECTORY.$alignment.$SUFFIX_PWD_NOT_BOOTS; + $alignment = $RIO_ALN_DIRECTORY.$alignment.$ALIGN_FILE_SUFFIX; + &userErrorCheckForTextFileExistence( $pwd_file ); + &userErrorCheckForTextFileExistence( $nbd_file ); + &userErrorCheckForTextFileExistence( $alignment ); + $no_frags = 0; + $non_sp = 1; + + $options_for_makeTree .= "F"; +} +elsif ( $mode == 3 || $mode == 4 ) { + if ( $safe_nhx == 1 ) { + $options_for_makeTree .= "U"; + } + else { + $options_for_makeTree .= "#"; + } + $options_for_makeTree .= "D"; # To calc. and keep pairwise distances. + $options_for_makeTree .= "B".$boostraps_for_makeTree; + +} + +if ( $output_HTML == 1 ) { + $| = 1; + $complete_description = 1; + $long_output = 1; + +} + +if ( $mode == 1 || $mode == 3 || $mode == 4 ) { + + if ( $mode == 1 ) { + $matrix_n = $MATRIX_FOR_PWD; + } + + if ( $matrix_n == 0 ) { + $options_for_makeTree .= "J"; + $matrix = "JTT (Jones et al. 1992)"; + } + elsif ( $matrix_n == 1 ) { # PAM is makeTree's default. + $matrix = "PAM (Dayhoff et al. 1978)"; + } + elsif ( $matrix_n == 2 ) { + $options_for_makeTree .= "L"; + $matrix = "BLOSUM 62 (Henikoff-Henikoff 92)"; + } + elsif ( $matrix_n == 3 ) { + $options_for_makeTree .= "M"; + $matrix = "mtREV24 (Adachi-Hasegawa 1996)"; + } + elsif ( $matrix_n == 5 ) { + $options_for_makeTree .= "T"; + $matrix = "VT (Mueller-Vingron 2000)"; + } + elsif ( $matrix_n == 6 ) { + $options_for_makeTree .= "W"; + $matrix = "WAG (Whelan-Goldman 2000)"; + } + else { + &dieWithUnexpectedError( "Failed sanity check" ); + } +} + + +# This creates the temp directory: +# -------------------------------- + +$ii = 0; + +$time = time; + +if ( $temp_dir eq "" ) { + $temp_dir = $TEMP_DIR_DEFAULT.$time.$ii; +} +else { + $temp_dir = $temp_dir.$ii; +} + +while ( -e $temp_dir ) { + $ii++; + $temp_dir = $TEMP_DIR_DEFAULT.$time.$ii; +} + +mkdir( $temp_dir, 0700 ) || &dieWithUnexpectedError( "Could not create \"$temp_dir\"" ); + +unless ( ( -e $temp_dir ) && ( -d $temp_dir ) ) { + &dieWithUnexpectedError( "\"$temp_dir\" does not exist, or is not a directory" ); +} + + + +# The analysis starts here: +# ------------------------- + +$dorio_outfile = $temp_dir."/".$DO_RIO_TEMP_OUTFILE; + +$output_dir = dirname( $outfile ); + +unless ( ( -e $output_dir ) && ( -d $output_dir ) ) { + &userError( "Outfile directory (\"$output_dir\") does not exist,\n or is not a directory." ); +} + +if ( $mode == 1 || $mode == 3 ) { + $query_name = substr( $query_name, 0, $LENGTH_OF_NAME - 10 ); +} + + + + + +if ( $mode == 1 || $mode == 3 ) { + + # Prepares the query file: + # ------------------------ + $query_name = &seqFile2CleanedUpFastaFile( $seqX_file, + "$temp_dir/QUERY_SEQ", + $query_name ); + if ( $query_name eq "" ) { + &userError( "Query file \"$seqX_file\") does not appear to contain a valid name\n and/or \"-N\" option has not been used." ); + } + + if ( $mode == 3 ) { + # Prepares the HMM: + # ----------------- + if ( $hmm_file eq "" ) { + $hmm_file = $temp_dir."/".$TEMP_HMM_FILE; + if ( $hmm_name ne "" ) { + &executeHmmfetch( $PFAM_HMM_DB, $hmm_name, $hmm_file ); + } + elsif ( $seed_aln_for_hmmbuild ne "" ) { + $command_line_for_hmmbuild = &executeHmmbuild( $seed_aln_for_hmmbuild, $hmm_file ); + } + } + + } +} + + + + +# This might remove non SWISS PROT seqs, TreMBL fragments, +# and seqs from species not in $species_names_file from the alignment: +# -------------------------------------------------------------------- +if ( $mode == 3 || $mode == 4 ) { + #if ( $do_not_removeSeqsFromPfamAlign != 1 ) { + + if ( $mode == 3 ) { + &removeSeqsFromPfamAlign( $alignment, + $temp_dir."/ALIGN2", + " ", + $species_names_file, + $non_sp, + $no_frags ); + } + else { + &removeSeqsFromPfamAlign( $alignment, + $temp_dir."/ALIGN2", + $query_name, + $species_names_file, + $non_sp, + $no_frags ); + } + +} + + + +# If necessary, this aligns the query to the pfam alignment +# using hmmsearch, p7extract.pl, multifetch.pl, and hmmalign +# from the HMMER package: +# ---------------------------------------------------------- +if ( $mode == 1 || $mode == 3 ) { + if ( $mode == 1 ) { + + $f = &alignWithHmmalign( $alignment, + $temp_dir."/QUERY_SEQ", + $hmm_file, + $temp_dir."/HMMALIGNOUT", + 1 ); # --mapali + + + } + else { + + $f = &alignWithHmmalign( $temp_dir."/ALIGN2", + $temp_dir."/QUERY_SEQ", + $hmm_file, + $temp_dir."/HMMALIGNOUT", + 0 ); # --withali + + } + if ( $f != 1 ) { + if ( $alignment =~ /.+\/(.+)/ ) { + $alignment = $1; + } + if ( $alignment =~ /(.+)\..+/ ) { + $alignment = $1; + } + &cleanUpTempDir(); + if ( $output_HTML == 1 ) { + &exitWithWarning( "query sequence does not contain sufficient similarity to the \"$alignment\" domain", 1 ); + } + else { + &exitWithWarning( "Query sequence does not contain sufficient similarity to the \"$alignment\" domain" ); + } + } + + + # In case query contains more than one of the same domain: + + @complete_names = &getCompleteName( $temp_dir."/HMMALIGNOUT", $query_name ); + + if ( @complete_names < 1 ) { + &dieWithUnexpectedError( "Could not find \"$query_name in $temp_dir"."/HMMALIGNOUT\"" ); + } +} +elsif ( $mode == 2 || $mode == 4 ) { + # Here, this is just for checking: + if ( $mode == 2 ) { + @complete_names = &getCompleteName( $alignment, $query_name ); + } + elsif ( $mode == 4 ) { + @complete_names = &getCompleteName( $temp_dir."/ALIGN2", $query_name ); + } + if ( @complete_names < 1 ) { + &dieWithUnexpectedError( "Could not find \"$query_name in $temp_dir"."/HMMALIGNOUT\"" ); + } + @complete_names = (); + $complete_names[ 0 ] = $query_name; +} + +if ( $parallel == 1 ) { + &readInNodesList(); + &pingNodes(); + $processors = scalar( @nodelist ); + if ( $processors < 2 ) { + $parallel = 0; + } + if ( $processors > $BOOTSTRAPS ) { + $processors = $BOOTSTRAPS; + } + else { + $block_size = int $BOOTSTRAPS / $processors; + $larger_blocks = $BOOTSTRAPS - ( $block_size * $processors ); # number of blocks which have a size of + # block_size + 1 + + } +} + + +# This opens the output file: +# --------------------------- +if ( $output_HTML != 1 ) { + open( OUT, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); +} + +# This starts printing to the output file: +# ---------------------------------------- +&printHeader(); + + + +# This loop goes through the different domains of the query +# which aligned to the alignment (in modes 2 and 4 this can +# obviously be only one): +# ----------------------------------------------------------- +for ( $jj = 0; $jj < @complete_names; ++$jj ) { + + if ( $mode == 1 ) { + # Moves the query to the last line(s) of the alignment. + # Removes other querie domains $complete_names[i]-- for which i != $jj + # -------------------------------------------------------------------- + + &moveToLast( $complete_names[ $jj ], + $temp_dir."/HMMALIGNOUT", + $temp_dir."/MOVETOLASTOUT", + \@complete_names ); + + } + + if ( $mode == 1 || $mode == 3 ) { + if ( $mode == 1 ) { + @temp_array = &pfam2phylipMatchOnly( $temp_dir."/MOVETOLASTOUT", + $temp_dir."/ALIGN2_PHYLIP_MO", + 0 ); + } + else { + @temp_array = &pfam2phylipMatchOnly( $temp_dir."/HMMALIGNOUT", + $temp_dir."/ALIGN2", + 1 ); + } + $length_of_alignment = $temp_array[ 0 ]; + $length_of_orig_alignment = $temp_array[ 1 ]; + $number_of_seqs_in_aln = $temp_array[ 2 ]; + } + elsif ( $mode == 2 || $mode == 4 ) { + + $query_name = $complete_names[ 0 ]; + + if ( $mode == 4 ) { + if ( !&startsWithSWISS_PROTname( $query_name ) ) { + # Query is not a SWISS-PROT sequence. + $query_name = &getCompleteNameForTrEMBLquerySeq( $temp_dir."/ALIGN2", + $query_name ); + } + + $number_of_seqs_in_aln = &countSeqsInPfamAlign( $temp_dir."/ALIGN2" ); + } + else { + if ( !&startsWithSWISS_PROTname( $query_name ) ) { + # Query is not a SWISS-PROT sequence. + $query_name = &getCompleteNameForTrEMBLquerySeq( $alignment, + $query_name ); + } + $number_of_seqs_in_aln = &countSeqsInPfamAlign( $alignment ); + } + + + + } + + if ( $number_of_seqs_in_aln < $MIN_NUMBER_OF_SEQS_IN_ALN ) { + &cleanUpTempDir(); + if ( $output_HTML == 1 ) { + &exitWithWarning( "Removal of sequences resulted in an alignment with less than $MIN_NUMBER_OF_SEQS_IN_ALN sequences ($number_of_seqs_in_aln)", 1 ); + } + else { + &exitWithWarning( "Removal of sequences resulted in an alignment with less than $MIN_NUMBER_OF_SEQS_IN_ALN sequences ($number_of_seqs_in_aln)" ); + } + } + + + if ( $mode == 1 ) { + + unlink( $temp_dir."/ALIGN2_BOOTSTRAPPED" ); + + if ( $parallel == 1 ) { + &executeBootstrap_cz( $BOOTSTRAPS, + $bsp_file, + $temp_dir."/ALIGN2_PHYLIP_MO", + $temp_dir."/ALIGN2_BOOTSTRAPPED", + $processors ); + + } + else { + + &executeBootstrap_cz( $BOOTSTRAPS, + $bsp_file, + $temp_dir."/ALIGN2_PHYLIP_MO", + $temp_dir."/ALIGN2_BOOTSTRAPPED" ); + + } + + + $current_dir = `pwd`; + $current_dir =~ s/\s//; + + chdir ( $temp_dir ) || &dieWithUnexpectedError( "Could not chdir to \"$temp_dir\"" ); + + + if ( $parallel == 1 ) { + + my $number = 0; + my $all_finished = 0; + + system( $RIO_SLAVE_DRIVER, + $block_size, + $larger_blocks, + $temp_dir."/ALIGN2_BOOTSTRAPPED", + $matrix_n, + $complete_names[ $jj ], + $pwd_file, + $temp_dir, + $seed_for_makeTree, + @nodelist ) + && &dieWithUnexpectedError( "Could not execute \"$RIO_SLAVE_DRIVER\"" ); + + while ( $all_finished != 1 ) { + for ( $number = 0; $number < $processors; $number++ ) { + unless ( -e "FINISHED_$number" ) { + $number = -1; + } + } + $all_finished = 1; + } + + sleep( 1 ); + + system( "mv", + "MAKETREEOUT".$MULTIPLE_TREES_FILE_SUFFIX."0", + "MAKETREEOUT".$MULTIPLE_TREES_FILE_SUFFIX ) + && &dieWithUnexpectedError( "$!" ); + + for ( $number = 1; $number < $processors; $number++ ) { + system( "cat MAKETREEOUT$MULTIPLE_TREES_FILE_SUFFIX$number >> MAKETREEOUT$MULTIPLE_TREES_FILE_SUFFIX" ) + && &dieWithUnexpectedError( "$!" ); + if ( unlink( "MAKETREEOUT$MULTIPLE_TREES_FILE_SUFFIX$number" ) != 1 ) { + &dieWithUnexpectedError( "Could not delete \"MAKETREEOUT$MULTIPLE_TREES_FILE_SUFFIX$number" ); + } + } + + # Sanity check: Counts ";" in "MAKETREEOUT$MULTIPLE_TREES_FILE_SUFFIX". + if ( `grep -c ';' MAKETREEOUT$MULTIPLE_TREES_FILE_SUFFIX` != $BOOTSTRAPS ) { + &dieWithUnexpectedError( "\"MAKETREEOUT$MULTIPLE_TREES_FILE_SUFFIX\" does not contain $BOOTSTRAPS \";\"" ); + } + + for ( $number = 0; $number < $processors; $number++ ) { + if ( unlink( "FINISHED_$number" ) != 1 ) { + &dieWithUnexpectedError( "Could not delete \"FINISHED_$number\"" ); + } + } + + &executeConsense( "MAKETREEOUT".$MULTIPLE_TREES_FILE_SUFFIX ); + unlink( "outfile", "intree" ); + + system( "mv", "outtree", "MAKETREEOUT.nhx" ) + && &dieWithUnexpectedError( "$!" ); + + + } + else { + $time_dqopuzzle = time; #time + &executePuzzleDQObootstrapped( "ALIGN2_BOOTSTRAPPED", $matrix_n ); + $time_dqopuzzle = time - $time_dqopuzzle; #time + $time_dqopuzzleT += $time_dqopuzzle; #time + + system( "mv", "ALIGN2_BOOTSTRAPPED.dist", "DISTs_TO_QUERY" ) + && &dieWithUnexpectedError( "$!" ); + } + + + &executePuzzleDQO( "ALIGN2_PHYLIP_MO", $matrix_n ); + + unlink( "ALIGN2_PHYLIP_MO" ); + + system( "mv", "ALIGN2_PHYLIP_MO.dist", "DIST_TO_QUERY" ) + && &dieWithUnexpectedError( "$!" ); + + if ( $parallel != 1 ) { + $time_addingdists = time; + &addDistsToQueryToPWDfile( $pwd_file, + $temp_dir."/DISTs_TO_QUERY", + $temp_dir."/PWD_INC_QUERY", + $complete_names[ $jj ] ); + + + $time_addingdists = time - $time_addingdists; + $time_addingdistsT += $time_addingdists; + } + &addDistsToQueryToPWDfile( $nbd_file, + $temp_dir."/DIST_TO_QUERY", + $temp_dir."/NBD_INC_QUERY", + $complete_names[ $jj ] ); + + } + + if ( $mode == 2 ) { + $current_dir = `pwd`; + $current_dir =~ s/\s//; + chdir ( $temp_dir ) + || &dieWithUnexpectedError( "Could not chdir to \"$temp_dir\"" ); + + } + + + if ( $parallel != 1 ) { + unlink( $temp_dir."/MAKETREEOUT".$TREE_FILE_SUFFIX ); + } + + $time_tree_calc = time; + + # This calculates the trees + # ------------------------- + + if ( $mode == 1 || $mode == 2 ) { + + if ( $mode == 1 ) { + + &executeNeighbor( $temp_dir."/NBD_INC_QUERY", + 0, + 0, + 0, + 1 ); + + unlink( "outfile" ); + system( "mv", "outtree", "NBD_NJ_TREE" ) + && &dieWithUnexpectedError( "$!" ); + if ( $parallel != 1 ) { + &executeMakeTree( $options_for_makeTree, + $temp_dir."/PWD_INC_QUERY", + $temp_dir."/MAKETREEOUT".$TREE_FILE_SUFFIX, + $temp_dir."/maketree_tempdir" ); + } + + } + else { + &executeNeighbor( $nbd_file, + 0, + 0, + 0, + 1 ); + + unlink( "outfile" ); + system( "mv", "outtree", "NBD_NJ_TREE" ) + && &dieWithUnexpectedError( "$!" ); + + &executeMakeTree( $options_for_makeTree, + $pwd_file, + $temp_dir."/MAKETREEOUT".$TREE_FILE_SUFFIX, + $temp_dir."/maketree_tempdir" ); + + } + + chdir( $current_dir ) + || &dieWithUnexpectedError( "Could not chdir to \"$current_dir\"" ); + + + } + elsif ( $mode == 3 || $mode == 4 ) { + &executeMakeTree( $options_for_makeTree, + $temp_dir."/ALIGN2", + $temp_dir."/MAKETREEOUT".$TREE_FILE_SUFFIX, + $temp_dir."/maketree_tempdir" ); + + unlink( $temp_dir."/MAKETREEOUT".$ALIGN_FILE_SUFFIX ); + } + + + $time_tree_calc = time - $time_tree_calc; + $time_tree_calcT += $time_tree_calc; + + if ( $keep == 1 ) { + + system( "cp", $temp_dir."/MAKETREEOUT".$TREE_FILE_SUFFIX, $outfile.$TREE_FILE_SUFFIX ); + system( "cp", $temp_dir."/MAKETREEOUT".$LOG_FILE_SUFFIX, $outfile.$LOG_FILE_SUFFIX ); + system( "cp", $temp_dir."/MAKETREEOUT".$MULTIPLE_TREES_FILE_SUFFIX, $outfile.$MULTIPLE_TREES_FILE_SUFFIX ); + if ( $mode == 1 || $mode == 2 ) { + system( "cp", $temp_dir."/NBD_NJ_TREE", $outfile."-NJ".$TREE_FILE_SUFFIX ); + } + + } + + unlink( $temp_dir."/ALIGN2" ); + + $multiple_trees_file = $temp_dir."/MAKETREEOUT".$MULTIPLE_TREES_FILE_SUFFIX; + $maketree_out_tree_file = $temp_dir."/MAKETREEOUT".$TREE_FILE_SUFFIX; + $distance_matrix_file = $temp_dir."/MAKETREEOUT".$SUFFIX_PWD_NOT_BOOTS; + + + if ( $mode == 1 || $mode == 3 ) { + $query_name = $complete_names[ $jj ]; + } + + $options_for_DoRIO = ""; + + # This will result in saving of the annotated consenus tree: + # ---------------------------------------------------------- + if ( $safe_nhx == 1 ) { + my $number = $jj + 1; + if ( @complete_names > 1 ) { + $outfile_annot_nhx_tree = $outfile.$ADDITION_FOR_RIO_ANNOT_TREE."-".$number.$TREE_FILE_SUFFIX; + } + else { + $outfile_annot_nhx_tree = $outfile.$ADDITION_FOR_RIO_ANNOT_TREE.$TREE_FILE_SUFFIX; + } + } + + + + if ( $sort > 2 ) { + if ( $mode == 3 || $mode == 4 ) { + $options_for_DoRIO .= " D=".$distance_matrix_file; + } + elsif ( $mode == 1 ) { + $options_for_DoRIO .= " d=".$temp_dir."/DIST_TO_QUERY"; + } + elsif ( $mode == 2 ) { + $options_for_DoRIO .= " D=".$nbd_file; + } + } + $options_for_DoRIO .= " M=".$multiple_trees_file; + $options_for_DoRIO .= " 'N=".$query_name."'"; + $options_for_DoRIO .= " S=".$species_tree_file; + $options_for_DoRIO .= " O=".$dorio_outfile; + $options_for_DoRIO .= " P=".$sort; + $options_for_DoRIO .= " L=".$t_orthologs; + $options_for_DoRIO .= " B=".$t_sn; + $options_for_DoRIO .= " U=".$t_orthologs_dc; + $options_for_DoRIO .= " X=".$warn_more_than_one_ortho; + $options_for_DoRIO .= " Y=".$warn_no_orthos; + $options_for_DoRIO .= " Z=".$warn_one_ortho; + + if ( $mode == 1 || $mode == 2 ) { + $options_for_DoRIO .= " T=".$temp_dir."/NBD_NJ_TREE"; + $options_for_DoRIO .= " t=".$maketree_out_tree_file; + } + elsif ( $mode == 3 || $mode == 4 ) { + if ( $safe_nhx == 1 ) { # Added 09/04/03. + $options_for_DoRIO .= " T=".$maketree_out_tree_file; + } + } + + if ( $safe_nhx == 1 ) { + $options_for_DoRIO .= " I"; + } + if ( $output_ultraparalogs == 1 ) { + $options_for_DoRIO .= " p"; + $options_for_DoRIO .= " v=".$t_ultra_paralogs; + } + + $time_rio = time; + + &executeDoRIO( $options_for_DoRIO ); + + $time_rio = time - $time_rio; + $time_rioT += $time_rio; + + unless ( ( -s $dorio_outfile ) && ( -f $dorio_outfile ) && ( -T $dorio_outfile ) ) { + close( OUT ); + unlink( $outfile ); + &dieWithUnexpectedError( "failure during execution of RIO (no output generated)" ); + } + + if ( $safe_nhx == 1 ) { + system( "mv", + $temp_dir."/".$DO_RIO_TEMP_OUTFILE.$ADDITION_FOR_RIO_ANNOT_TREE.$TREE_FILE_SUFFIX, + $outfile_annot_nhx_tree ) + && &dieWithUnexpectedError( "$!" ); + } + + + open( IN, "$dorio_outfile" ) + || &dieWithUnexpectedError( "Cannot open file \"$dorio_outfile\"" ); + + $saw_distance_values = 0; + $saw_ultra_paralogs = 0; + $printed_ultra_paralogs = 0; + $print_header_for_orthologies = 1; + $print_header_for_s_paralogs = 1; + + + + + # This generates the report + # ------------------------- + + W: while ( $return_line = ) { + + if ( $return_line =~ /distance values:/i ) { + $saw_distance_values = 1; + &printTitleForDistanceValues(); + } + elsif ( $return_line =~ /ultra paralogs/i ) { + $saw_ultra_paralogs = 1; + } + elsif ( $return_line =~ /^mean bootstrap/i ) { + &printMeanBootstraps(); + } + elsif ( $return_line =~ /sort priority\s*:\s*(.+)/i ) { + $sort_priority = $1; + } + elsif ( $return_line =~ /ext nodes\s*:\s*(.+)/i ) { + $ext_nodes_in_trees_analyzed = $1 - 1; # One seq is query. + } + elsif ( $return_line =~ /bootstraps\s*:\s*(\S+)/i ) { + if ( $jj == @complete_names - 1 ) { + $bootstraps = $1; + if ( $output_HTML == 1 ) { + $| = 1; + } + &printOptions(); + last W; + } + } + elsif ( $saw_distance_values != 1 + && $saw_ultra_paralogs != 1 + && $return_line =~ /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*(\S*)/ ) { + $ortho_name = $1; + $orthos = $2; + $subtree_neighbors = $3; + $s_orthos = $4; + $dist = $5; + + if ( $print_header_for_orthologies == 1 ) { + &printHeaderForOrthologies(); + $print_header_for_orthologies = 0; + } + &printOrthologies(); + } + elsif ( $saw_distance_values != 1 + && $saw_ultra_paralogs != 1 + && $return_line =~ /^\s*-\s*$/ ) { + $ortho_name = "-"; + $orthos = 0; + $s_orthos = 0; + $dist = 0; + if ( $print_header_for_orthologies == 1 ) { + &printHeaderForOrthologies(); + $print_header_for_orthologies = 0; + } + &printOrthologies(); + } + elsif ( $output_ultraparalogs == 1 + && $saw_ultra_paralogs == 1 + && $return_line =~ /(\S+)\s+(\S+)\s+(\S+)/ ) { + $s_para_name = $1; + $s_paras = $2; + $dist = $3; + if ( $print_header_for_s_paralogs == 1 ) { + &printHeaderForSparalogs(); + $print_header_for_s_paralogs = 0; + } + &printUltraParlogs(); + $printed_ultra_paralogs = 1; + } + elsif ( $output_ultraparalogs == 1 + && $saw_ultra_paralogs == 1 + && $return_line =~ /^\s*-\s*$/ ) { + &printNoUltraParalogs(); + } + elsif ( $return_line =~ /Bootstraps/ ) { + $saw_distance_values = 0; + } + elsif ( $saw_distance_values == 1 && $saw_ultra_paralogs != 1 ) { + &printDistanceValues(); + } + + } + close( IN ); + +} # End of for loop going through possible + # multiple matches to the same alignment/model. + +if ( $output_HTML != 1 ) { + close( OUT ); +} + +&cleanUpTempDir(); + +if ( $output_HTML != 1 ) { + print( "\n\nrio.pl successfully terminated.\nOutput written to: $outfile\n\n" ); +} + +exit( 0 ); + + + + + + + + + +# =========================================================== +# Methods +# ----------------------------------------------------------- + + + + +# ----------------------------------------------------------- +# Parallization related +# ----------------------------------------------------------- + + + +# Last modified: 02/02/02 +sub readInNodesList { + + &testForTextFilePresence( $NODE_LIST ); + + open( NIN, "$NODE_LIST" ) || &dieWithUnexpectedError( "Cannot open file \"$NODE_LIST\"" ); + + while ( ) { + if ( $_ =~ /(\S+)/ ) { + push( @nodelist, $1 ); + } + } + close( NIN ); + return; +} + + + +# Last modified: 02/02/02 +sub pingNodes { + my @temp_node_list = (); + my $p = Net::Ping->new( "tcp", 2 ); # or "udp" + my $n = ""; + + foreach $n ( @nodelist ) { + if ( defined( $p->ping( $n ) ) ) { + push( @temp_node_list, $n ); + } + } + @nodelist = (); + @nodelist = @temp_node_list; + return; + +} + + + + +# ----------------------------------------------------------- +# Output related +# ----------------------------------------------------------- + + +# Last modified: 03/07/01 +sub printHeader { + + if ( $output_HTML != 1 ) { + print OUT "RIO - Resampled Inference of Orthologs\n"; + print OUT "Version: $VERSION\n"; + print OUT "------------------------------------------------------------------------------\n"; + + print OUT "Pfam alignment file : $alignment\n"; + if ( $mode == 3 ) { + print OUT "Pfam alignment description : ".&getDescriptionFromPfam( $alignment )."\n"; + } + if ( $mode == 1 || $mode == 2 ) { + print OUT "Bootstrapped pairwise distances file : $pwd_file\n"; + print OUT "Not bootstrapped pairwise distances file: $nbd_file\n"; + print OUT "Bootstrap positions file : $bsp_file\n"; + } + if ( $mode == 1 || $mode == 3 ) { + if ( $seed_aln_for_hmmbuild ne "" ) { + print OUT "HMM : built based on $seed_aln_for_hmmbuild\n"; + } + elsif ( $hmm_name ne "" ) { + print OUT "HMM : $hmm_name\n"; + } + else { + print OUT "HMM : $hmm_file\n"; + } + print OUT "Query file : $seqX_file\n"; + } + print OUT "==============================================================================\n\n"; + } + +} ## printHeader + + + + +# Last modified: 03/07/01 +sub printHeaderForOrthologies { + + if ( $output_HTML != 1 ) { + if ( $jj > 0 ) { + print OUT "\n\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n"; + } + + print OUT "Query : $query_name\n\n"; + + if ( @complete_names > 1 ) { + my $size = @complete_names; + my $number = $jj + 1; + print OUT "More than one region of the query were aligned to the profile HMM.\n"; + print OUT "This is for domain #$number out of $size.\n\n"; + } + + print OUT "Number (in %) of observed orthologies (o), \"subtree-neighborings\" (n),\n"; + print OUT "and super-orthologies (s) to query in bootstrapped trees, evolutionary\n"; + print OUT "distance to query (as average number of aa replacements per residue):\n\n"; + if ( $long_output != 1 ) { + print OUT "Sequence Description o[%] n[%] s[%] distance\n"; + print OUT "-------- ----------- ---- ---- ---- --------\n"; + } + else { + print OUT "Sequence Description o[%] n[%] s[%] distance\n"; + print OUT "-------- ----------- ---- ---- ---- --------\n"; + } + } + else { + if ( $jj > 0 ) { + print "\n"; + print "

     

    \n"; + print "
    \n"; + print "

     

    \n"; + } + + if ( @complete_names > 1 ) { + my $size = @complete_names; + my $number = $jj + 1; + print "

    More than one region of the query were aligned to the profile HMM. \n"; + print "This is for domain #$number out of $size.

    \n"; + } + print "

    Query : $query_name

    \n"; + print "

    Orthologies, subtree-neighborings, super-orthologies

    \n"; + + print "

    Number (in %) of observed orthologies (o), \"subtree-neighborings\" (n), \n"; + print "and super-orthologies (s) to query in bootstrapped trees, evolutionary \n"; + print "distance to query (as average number of aa replacements per residue):

    \n"; + if ( $ortho_name ne "-" ) { + print "\n"; + + print "\n"; + } + } + +} ## printHeaderForOrthologies + + + +# Last modified: 10/15/01 +sub printHeaderForSparalogs { + + if ( $output_HTML != 1 ) { + print OUT "\nUltra-paralogs\n"; + print OUT "--------------\n"; + print OUT "Number (in %) of observed ultra-paralogies (up) to query\n"; + print OUT "in bootstrapped trees, evolutionary distance to query (as average number\n"; + print OUT "of aa replacements per residue):\n\n"; + if ( $long_output != 1 ) { + print OUT "Sequence Description up[%] distance\n"; + print OUT "-------- ----------- ----- --------\n"; + } + else { + print OUT "Sequence Description up[%] distance\n"; + print OUT "-------- ----------- ----- --------\n"; + } + } + else { + print "

    Ultra-paralogs

    \n"; + print "

    Number (in %) of observed ultra-paralogies (up) to query \n"; + print "in bootstrapped trees, evolutionary distance to query (as average number \n"; + print "of aa replacements per residue):

    \n"; + print "
    Sequence Description o[%] n[%] s[%]   distance
    \n"; + print "\n"; + + } + +} ## printHeaderForSparalogs + + + +# Last modified: 03/07/01 +sub printOrthologies { + my @cut = (); + my $i = 0; + my $descp = ""; + $orthos = &roundToInt( $orthos ); + $s_orthos = &roundToInt( $s_orthos ); + + if ( $sort > 10 ) { + $subtree_neighbors = &roundToInt( $subtree_neighbors ); + } + + if ( ( $description == 1 || $complete_description == 1 ) + && $ortho_name ne "-" ) { + + if ( $non_sp != 1 ) { + if ( &startsWithSWISS_PROTname( $ortho_name ) ) { + $descp = &getDescriptionFromSWISSPROT_ACDEOSfile( $SWISSPROT_ACDEOS_FILE, $ortho_name ); + } + else { + $descp = "-"; + } + } + else { + if ( &startsWithSWISS_PROTname( $ortho_name ) ) { + $descp = &getDescriptionFromSWISSPROT_ACDEOSfile( $SWISSPROT_ACDEOS_FILE, $ortho_name ); + } + else { + $descp = &getDescriptionFromTrEMBL_ACDEOSfile( $TREMBL_ACDEOS_FILE, $ortho_name ); + } + } + + if ( $output_HTML != 1 ) { + if ( $long_output == 1 ) { + @cut = &cutDescription( $descp, 73 ); + } + else { + @cut = &cutDescription( $descp, 33 ); + } + $descp = $cut[ 0 ]; + } + } + if ( $descp eq "" ) { + $descp = "-"; + } + + if ( $output_HTML != 1 ) { + + if ( $ortho_name eq "-" ) { + print OUT "\nNO ORTHOLOGS in alignment with the current thresholds for output\n"; + } + elsif ( $dist ne "-" ) { + if ( $long_output == 1 ) { + print OUT sprintf "%-24.24s%-74.74s%5s%5s%5s%10.6f", $ortho_name,$descp,$orthos,$subtree_neighbors,$s_orthos,$dist; + } + else { + print OUT sprintf "%-24.24s%-34.34s%5s%5s%5s%10.6f", $ortho_name,$descp,$orthos,$subtree_neighbors,$s_orthos,$dist; + } + } + else { + if ( $long_output == 1 ) { + print OUT sprintf "%-24.24s%-74.74s%5s%5s%5s%10.10s", $ortho_name,$descp,$orthos,$subtree_neighbors,$s_orthos,$dist; + } + else { + print OUT sprintf "%-24.24s%-34.34s%5s%5s%5s%10.10s", $ortho_name,$descp,$orthos,$subtree_neighbors,$s_orthos,$dist; + } + } + if ( $complete_description == 1 ) { + for ( $i = 1; $i < @cut; ++$i ) { + print OUT "\n"; + if ( $long_output == 1 ) { + print OUT sprintf " %-74.74s", $cut[ $i ]; + } + else { + print OUT sprintf " %-34.34s", $cut[ $i ]; + } + } + } + print OUT "\n"; + } + else { + if ( $ortho_name eq "-" ) { + print "

    NO ORTHOLOGS in alignment with the current thresholds for output

    \n"; + } + else { + $ortho_name = &replaceNameWithLinkToExpasy( $ortho_name ); + print "\n"; + } + } + +} ## printOrthologies + + + +sub replaceNameWithLinkToExpasy { + my $name = $_[ 0 ]; + + if ( $name =~ /(.+)_(.+)\/(.+)/ ) { + my $desc = $1; + my $spec = $2; + my $numbers = $3; + if ( length( $desc ) <= 4 ) { + $name = "".$desc."_".$spec."\/".$numbers; + } + else { + $name = "".$desc."_".$spec."\/".$numbers; + } + } + + return $name; + +} ## replaceNameWithLinkToExpasy + + + + +# Last modified: 10/15/01 +sub printUltraParlogs { + my @cut = (); + my $i = 0; + my $descp = ""; + $s_paras = &roundToInt( $s_paras ); + + if ( ( $description == 1 || $complete_description == 1 ) + && $s_para_name ne "-" ) { + + if ( $non_sp != 1 ) { + if ( &startsWithSWISS_PROTname( $s_para_name ) ) { + $descp = &getDescriptionFromSWISSPROT_ACDEOSfile( $SWISSPROT_ACDEOS_FILE, $s_para_name ); + } + else { + $descp = "-"; + } + } + else { + if ( &startsWithSWISS_PROTname( $s_para_name ) ) { + $descp = &getDescriptionFromSWISSPROT_ACDEOSfile( $SWISSPROT_ACDEOS_FILE, $s_para_name ); + } + else { + $descp = &getDescriptionFromTrEMBL_ACDEOSfile( $TREMBL_ACDEOS_FILE, $s_para_name ); + } + } + + if ( $output_HTML != 1 ) { + if ( $long_output == 1 ) { + @cut = &cutDescription( $descp, 73 ); + } + else { + @cut = &cutDescription( $descp, 33 ); + } + $descp = $cut[ 0 ]; + } + } + if ( $descp eq "" ) { + $descp = "-"; + } + + if ( $output_HTML != 1 ) { + + if ( $dist ne "-" ) { + if ( $long_output == 1 ) { + print OUT sprintf "%-24.24s%-74.74s%5s%10.6f", $s_para_name,$descp,$s_paras,$dist; + } + else { + print OUT sprintf "%-24.24s%-34.34s%5s%10.6f", $s_para_name,$descp,$s_paras,$dist; + } + } + else { + if ( $long_output == 1 ) { + print OUT sprintf "%-24.24s%-74.74s%5s%10.10s", $s_para_name,$descp,$s_paras,$dist; + } + else { + print OUT sprintf "%-24.24s%-34.34s%5s%10.10s", $s_para_name,$descp,$s_paras,$dist; + } + } + if ( $complete_description == 1 ) { + for ( $i = 1; $i < @cut; ++$i ) { + print OUT "\n"; + if ( $long_output == 1 ) { + print OUT sprintf " %-74.74s", $cut[ $i ]; + } + else { + print OUT sprintf " %-34.34s", $cut[ $i ]; + } + } + } + print OUT "\n"; + + } + else { + $s_para_name = &replaceNameWithLinkToExpasy( $s_para_name ); + print "\n"; + } + +} ## printUltraParlogs + + + +sub printNoUltraParalogs { + if ( $output_HTML != 1 ) { + print OUT "\nUltra-paralogs\n"; + print OUT "--------------\n"; + print OUT "\nNO ULTRA-PARALOGS in alignment with the current threshold of $t_ultra_paralogs%\n"; + } + else { + print "

    Ultra-paralogs

    \n"; + print "

    NO ULTRA-PARALOGS in alignment with the current threshold of $t_ultra_paralogs%

    \n"; + } +} ## printNoUltraParalogs + + + +# Called by method "printOrthologies". +# Last modified: 02/27/01 +sub cutDescription { + my $line = $_[ 0 ]; + my $size = $_[ 1 ]; + my @cut = (); + my $i = 0; + + while ( ( length( $line ) ) > $size ) { + $cut[ $i++ ] = substr( $line, 0, $size ); + $line = substr( $line, $size ); + } + $cut[ $i++ ] = $line; + return @cut; +} ## cutDescription + + + + +# Last modified: 02/27/01 +sub printTitleForDistanceValues { + if ( $output_HTML != 1 ) { + if ( $mode == 1 || $mode == 2 ) { + print OUT "\n\nDistance values (based on NJ tree of original alignment)\n"; + print OUT "--------------------------------------------------------\n"; + } + elsif ( $mode == 3 || $mode == 4 ) { + print OUT "\n\nDistance values (based on ML branch length values on consensus tree)\n"; + print OUT "--------------------------------------------------------------------\n"; + } + } + else { + print "

    Distance values (based on NJ tree of original alignment)

    \n"; + } + +} ## printTitleForDistanceValues + + + + +# Last modified: 02/27/01 +sub printDistanceValues { + if ( $output_HTML != 1 ) { + print OUT "$return_line"; + } + else { + chomp( $return_line ); + if ( $return_line =~ /WARNING/ ) { + $return_line =~ s/\+\/-/ ± /; + $return_line =~ s/\*/ × /; + print "

    $return_line

    \n"; + } + elsif ( $return_line =~ /lca\s+is/i ) { + print "

    $return_line

    \n"; + } + elsif ( $return_line =~ /orthologous/i ) { + print "

    $return_line

    \n"; + } + elsif ( $return_line =~ /distance\s+of\s+query/i ) { + print "
    Sequence Description up[%]   distance
    $ortho_name $descp $orthos $subtree_neighbors $s_orthos   $dist
    $s_para_name $descp $s_paras   $dist
    \n"; + } + if ( $return_line =~ /(.+)=(.+)/ ) { + print "\n"; + } + if ( $return_line =~ /sum\s+/i || $return_line =~ /distance\s+of\s+ortholog\s+to\s+LCA/i ) { + print "
    $1 = $2
    \n"; + } + } +} ## printDistanceValues + + + + +# Last modified: 02/27/01 +sub printMeanBootstraps { + if ( $output_HTML != 1 ) { + print OUT "\n\n$return_line"; + } + else { + chomp( $return_line ); + $return_line =~ s/\+\/-/ ± /; + print "\n"; + print "

    $return_line

    \n"; + } +} ## printMeanBootstraps + + + + +# Last modified: 02/12/02 +sub printOptions { + + if ( $output_HTML != 1 ) { + print OUT "\n\n\n==============================================================================\n"; + if ( $number_of_seqs_in_aln >= $MIN_NUMBER_OF_SEQS_IN_ALN ) { + print OUT "RIO options\n"; + print OUT "-----------\n"; + print OUT "Mode : "; + if ( $mode == 1 ) { + print OUT "precalc. pwd files with alignment not containing query (1)\n"; + } + elsif ( $mode == 2 ) { + print OUT "precalc. pwd files with alignment containing query (2)\n"; + } + elsif ( $mode == 3 ) { + print OUT "alignment not containing query (3)\n"; + } + elsif ( $mode == 4 ) { + print OUT "alignment containing query (4)\n"; + } + print OUT "Bootstraps : $bootstraps\n"; + print OUT "Species tree : $species_tree_file\n"; + if ( $safe_nhx == 1 ) { + if ( $mode == 3 || $mode == 4 ) { + if ( @complete_names > 1 ) { + $outfile_annot_nhx_tree =~ s/-\d+\.nhx/-X.nhx/; + print OUT "Saved annotated consensus trees (ML branch lengths) : $outfile_annot_nhx_tree\n"; + } + else { + print OUT "Saved annotated consensus tree (ML branch lengths) : $outfile_annot_nhx_tree\n"; + } + } + elsif ( $mode == 1 || $mode == 2 ) { + if ( @complete_names > 1 ) { + $outfile_annot_nhx_tree =~ s/-\d+\.nhx/-X.nhx/; + print OUT "Saved annotated NJ trees (based on original alignment) : $outfile_annot_nhx_tree\n"; + } + else { + print OUT "Saved annotated NJ tree (based on original alignment) : $outfile_annot_nhx_tree\n"; + } + } + } + print OUT "Threshold for output for orthologies (L=) : $t_orthologs\n"; + print OUT "Threshold for output for subtree-neighborings (B=) : $t_sn\n"; + print OUT "Threshold for distance calc for orthologies (U=) : $t_orthologs_dc\n"; + + print OUT "When to generate warnings:\n"; + print OUT "More than one ortholog: diff. in standard deviations (X=): $warn_more_than_one_ortho\n"; + print OUT "No orthologs : diff. in standard deviations (Y=): $warn_no_orthos\n"; + print OUT "One ortholog : factor (Z=): $warn_one_ortho\n"; + if ( $output_ultraparalogs == 1 ) { + print OUT "Output ultra-paralogs (p)\n"; + print OUT "Threshold for ultra-paralogies (v=) : $t_ultra_paralogs\n"; + } + print OUT "Sort priority: $sort_priority\n"; + } + + print OUT "\nOptions for the calculation of the phylgenetic trees\n"; + print OUT "----------------------------------------------------\n"; + if ( $mode == 1 ) { + print OUT "Model for pairwise distance calculations : $matrix\n"; + } + elsif ( $mode == 3 || $mode == 4 ) { + print OUT "Model for pairwise dist and ML branch length calc. : $matrix\n"; + } + if ( $mode == 1 || $mode == 3 || $mode == 4 ) { + print OUT "Columns in alignment used for tree calc : $length_of_alignment\n"; + print OUT "Columns in original alignment : $length_of_orig_alignment\n"; + } + print OUT "Sequences in alignment used for trees (incl query) : $number_of_seqs_in_aln\n"; + + if ( $mode == 3 || $mode == 4 ) { + print OUT "Removed non-SWISS-PROT sequences : "; + if ( $non_sp == 1 ) { + print OUT "no\n"; + } + else { + print OUT "yes\n"; + } + if ( $non_sp == 1 ) { + print OUT "Removed \"TrEMBL fragments\" : "; + if ( $no_frags == 1 ) { + print OUT "yes\n"; + } + else { + print OUT "no\n"; + } + } + } + if ( $mode == 1 || $mode == 2 ) { + print OUT "Prgrm to calc. branch lengths for distance values : PHYLIP NEIGHBOR (NJ)\n"; + } + elsif ( $mode == 3 || $mode == 4 ) { + print OUT "Prgrm to calc branch lengths for distance values : TREE-PUZZLE\n"; + } + if ( $seed_aln_for_hmmbuild ne "" ) { + print OUT "HMM was built with hmmbuild using options : $command_line_for_hmmbuild\n"; + } + if ( ( $mode == 3 || $mode == 4 ) && $species_names_file =~ /\S/ ) { + print OUT "File listing species used for tree calculation (G=): $species_names_file\n"; + } + print OUT "Seed for random number generator : $seed_for_makeTree\n"; + print OUT "Options for makeTree : $options_for_makeTree\n"; + + $time_total = time - $time_total; + + print OUT "\nTime and date\n"; + print OUT "-------------\n"; + if ( $mode == 1 ) { + print OUT "Time requirement dqo puzzle : $time_dqopuzzleT s\n"; + } + + print OUT "Time requirement for tree calculation: $time_tree_calcT s\n"; + print OUT "Time requirement for SDI and RIO : $time_rioT s\n"; + print OUT "Total time requirement : $time_total s\n"; + print OUT "Date started : $start_date"; + print OUT ( "Date finished : ".`date` ); + + print OUT "\nCommand line\n"; + print OUT "------------\n"; + print OUT "$command_line\n"; + if ( $parallel == 1 ) { + print OUT "\nProcessors used: @nodelist\n"; + } + } + else { + if ( $printed_ultra_paralogs == 1 ) { + print "\n"; + } + if ( $species_tree_file =~ /.+\/(.+)/ ) { + $species_tree_file = $1; + } + print "

    Options

    \n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + if ( $output_ultraparalogs == 1 ) { + print "\n"; + print "\n"; + } + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "\n"; + print "
    Bootstraps: $bootstraps
    Species tree: $species_tree_file
    Threshold for output for orthologies: $t_orthologs
    Threshold for output for subtree-neighborings: $t_sn
    Threshold for distance calc for orthologies: $t_orthologs_dc
    When to generate warnings
    More than one ortholog [diff in standard deviations]: $warn_more_than_one_ortho
    No orthologs [diff in standard deviations]: $warn_no_orthos
    One ortholog [factor]: $warn_one_ortho
    Output ultra-paralogs
    Threshold for ultra-paralogies: $t_ultra_paralogs
    Sort priority: $sort_priority
    Model for pairwise distance calculations: $matrix
    Columns in alignment used for tree calc: $length_of_alignment
    Columns in original alignment: $length_of_orig_alignment
    Sequences in alignment used for trees (incl query): $number_of_seqs_in_aln
    Seed for random number generator: $seed_for_makeTree
    \n"; + + $time_total = time - $time_total; + + print "

     

    \n"; + print "\n"; + print "\n"; + print "\n"; + print ( "\n" ); + if ( $parallel == 1 ) { + print "\n"; + } + print "
    Time requirement: $time_total s
    Date started: $start_date
    Date finished: ".`date`."
    Number of processors used: ".scalar( @nodelist )."
    \n"; + } + +} ## printOptions + + + + + + + + + + +# ----------------------------------------------------------- +# Execution of other programs +# ----------------------------------------------------------- + + + + + +# Two arguments: +# 1. seed +# 2. outfile +# Returns the options used. +# Last modified: 05/11/01 +sub executeHmmbuild { + + my $seed = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $options = ""; + + &testForTextFilePresence( $seed ); + + $options = getHmmbuildOptionsFromPfam( $seed ); + + $options =~ s/-f//; + $options =~ s/-g//; + $options =~ s/-s//; + $options =~ s/-F//; + $options =~ s/-A//; + $options =~ s/-o\s+\S+//; + $options =~ s/(\s|^)[^-]\S+/ /g; + + if ( $options =~ /--prior/ ) { + my $basename = basename( $seed ); + $basename .= ".PRIOR"; + $options =~ s/--prior/--prior $PRIOR_FILE_DIR$basename/; + } + + # Remove for versions of HMMER lower than 2.2. + if ( $options =~ /--informat\s+\S+/ ) { + $options =~ s/--informat\s+\S+/--informat SELEX/; + } + else { + $options = "--informat SELEX ".$options; + } + + system( "$HMMBUILD $options $outfile $seed" ) + && &dieWithUnexpectedError( "Could not execute \"$HMMBUILD $options $outfile $seed\"" ); + return $options; + +} ## executeHmmbuild. + + + + +# One argument: +# Pfam align name. +# Last modified: 02/26/01 +sub getHmmbuildOptionsFromPfam { + + my $infile = $_[ 0 ]; + my $return_line = ""; + my $result = ""; + + &testForTextFilePresence( $infile ); + + open( GHO, $infile ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( $return_line = ) { + if ( $return_line =~ /^\s*#.*hmmbuild\s+(.+)\s*$/ ) { + $result = $1; + close( GHO ); + return $result; + } + } + close( GHO ); + return $result; + +} ## getHmmbuildOptionsFromPfam + + + + +# Purpose. Aligns a FASTA file to a Pfam alignment using an HMM profile. +# Five arguemnts: +# 1. Pfam flat file name +# 2. Name of FASTA file to append +# 3. HMM profile file name +# 4. outputfile name +# 5. 1 use --mapali, --withali otherwise (in hmmalign) +# Returns 1 if successful, -1 if no alignment was made because +# E value of HMMSEARCH output was larger than $E_VALUE_THRESHOLD. +# Last modified: 07/11/01 +sub alignWithHmmalign { + my $alignment = $_[ 0 ]; + my $query = $_[ 1 ]; + my $hmm = $_[ 2 ]; + my $outfile = $_[ 3 ]; + my $use_mapali = $_[ 4 ]; + my $E = 2000; + my $ali = "--withali"; + + if ( $use_mapali == 1 ) { + $ali = "--mapali"; + } + + &testForTextFilePresence( $alignment ); + &testForTextFilePresence( $query ); + &testForTextFilePresence( $hmm ); + + system( "$HMMSEARCH $hmm $query > $temp_dir/HMMSEARCHOUT" ) + && &dieWithUnexpectedError( "Could not execute \"$HMMSEARCH $hmm $query > $temp_dir/HMMSEARCHOUT\"" ); + + + + $E = &getEvalue( "$temp_dir/HMMSEARCHOUT" ); + if ( $E == 2000 ) { + &dieWithUnexpectedError( "No E-value found in \"$temp_dir/HMMSEARCHOUT\"" ); + } + elsif ( $E > $E_VALUE_THRESHOLD ) { + unlink( "$temp_dir/HMMSEARCHOUT" ); + return ( -1 ); + } + + system( "$P7EXTRACT -d $temp_dir/HMMSEARCHOUT > $temp_dir/GDF" ) + && &dieWithUnexpectedError( "Could not execute \"$P7EXTRACT -d $temp_dir/HMMSEARCHOUT > $temp_dir/GDF\"" ); + + + system( "$MULTIFETCH -d -g $query $temp_dir/GDF > $temp_dir/MULTIFETCHOUT" ) + && &dieWithUnexpectedError( "Could not execute \"$MULTIFETCH -d -g $query $temp_dir/GDF > $temp_dir/MULTIFETCHOUT\"" ); + + # Checks if score was too low to have made a reasonable alignment. + unless ( -s "$temp_dir/MULTIFETCHOUT" ) { + unlink( "$temp_dir/HMMSEARCHOUT", "$temp_dir/GDF", "$temp_dir/MULTIFETCHOUT" ); + return ( -1 ); + } + + system( "$HMMALIGN -o $outfile $ali $alignment $hmm $temp_dir/MULTIFETCHOUT >/dev/null 2>&1" ) + && &dieWithUnexpectedError( "Could not execute \"$HMMALIGN -o $outfile $ali $alignment $hmm $temp_dir/MULTIFETCHOUT\"" ); + + if ( unlink( "$temp_dir/HMMSEARCHOUT", "$temp_dir/GDF","$temp_dir/MULTIFETCHOUT" ) != 3 ) { + &dieWithUnexpectedError( "Could not delete (a) file(s)" ); + } + + return 1; +} ## alignWithHmmalign + + + + +# Gets the E value for complete sequences (score includes all domains) +# from a HMMSEARCH output file. +# One argument: the HMMSEARCH output file name +# Returns the E value, 2000 if no E value found +# Last modified: 07/11/01 +sub getEvalue { + + my $infile = $_[ 0 ]; + my $return_line = ""; + my $flag = 0; + my $E = 2000; + + &testForTextFilePresence( $infile ); + + open( E, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( $return_line = ) { + + # "Sequence Description Score E-value N" + if ( $return_line =~ /Sequence.+Description.+Score.+E.+value.+N/ ) { + $flag = 1; + } + # "QUERY_HUMAN 657.4 1.3e-198 1" + elsif ( $flag == 1 && $return_line =~ /\s+(\S+)\s+\d+\s*$/ ) { + $E = $1; + close( E ); + return $E; + } + + } + close( E ); + return $E; + +} ## getEvalue + + + +# Four/Five arguments: +# 1. Number of bootstraps +# 2. bsp (bootstrap positions) file +# 3. Infile (alignment) +# 4. Outfile (bootstrapped according to bsp file) +# 5. Number of processors +# Last modified: 01/30/02 +sub executeBootstrap_cz { + my $boots = $_[ 0 ]; + my $bsp_file = $_[ 1 ]; + my $infile = $_[ 2 ]; + my $outfile = $_[ 3 ]; + my $processors = $_[ 4 ]; + + if ( defined( $processors ) && ( $processors > 1 ) ) { + system( "$BOOTSTRAP_CZ $boots $infile $bsp_file $outfile $processors" ) + && &dieWithUnexpectedError( "Could not execute \"$BOOTSTRAP_CZ $boots $infile $bsp_file $outfile $processors\"" ); + + } + else { + system( "$BOOTSTRAP_CZ $boots $infile $bsp_file $outfile" ) + && &dieWithUnexpectedError( "Could not execute \"$BOOTSTRAP_CZ $boots $infile $bsp_file $outfile\"" ); + } + +} ## executeBootstrap_cz + + + + + +# One argument: +# options for DoRIO.main. +# Last modified: 02/26/01 +sub executeDoRIO { + + my $options = $_[ 0 ]; + + system( "$DORIO $options >/dev/null 2>&1" ) + && &dieWithUnexpectedError( "Could not execute \"$DORIO $options\"" ); + + return; + +} ## executeDoRIO + + + + + + + + + + + +# ----------------------------------------------------------- +# These deal with the alignment +# ----------------------------------------------------------- + + + + +# Counts sequences from a Pfam flat file or +# in a PHYLIP interleaved aligment. +# One arguments: Pfam flat file name. +# Returns the number of sequences. +# Last modified: 07/10/01 +sub countSeqsInPfamAlign { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $saw_sequence_line = 0; + my $number_of_seqs = 0; + + &testForTextFilePresence( $infile ); + + open( C, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( $return_line = ) { + + if ( $saw_sequence_line == 1 + && !&containsPfamNamedSequence( $return_line ) + && !&isPfamCommentLine( $return_line ) ) { + last; + } + if ( &isPfamSequenceLine( $return_line ) + && $return_line !~ /^\s*\d+\s+\d+/ ) { + if ( $saw_sequence_line == 0 ) { + $saw_sequence_line = 1; + } + $number_of_seqs++; + } + } + close( C ); + return $number_of_seqs; + +} ## countSeqsInPfamAlign + + + + +# This gets the complete name(s) of a sequence from a Pfam alignment. +# I.e. it adds "/xxx-xxx". +# 2 arguments: +# 1. Infile (alignment) +# 2. Name of query +# Returns a String-array of all the complete names found. +# Last modified: 03/04/01 +sub getCompleteName { + + my $infile = $_[ 0 ]; + my $query_name = $_[ 1 ]; + my $return_line = ""; + my @complete_names = (); + my $complete_name = ""; + my $i = 0; + + &testForTextFilePresence( $infile ); + + $query_name =~ s/\/.*//; + + open( INGCN, $infile ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( $return_line = ) { + if ( $return_line =~ /^\s*$query_name(\S+)\s+.+/ ) { + $complete_name = $query_name.$1; + if ( $i > 0 && $complete_names[ 0 ] eq $complete_name ) { + # Now, we saw of all of them. + last; + } + $complete_names[ $i++ ] = $complete_name; + } + } + + close( INGCN ); + return @complete_names; +} ## getCompleteName + + + + +# Removes sequences from a Pfam flat file. +# It can remove all sequences not from species listed in a species names file. +# It can remove all sequences which do not have a SWISS-PROT name (XXXX_XXXXX) +# It can remove all sequences which are "TrEMBL" fragments. +# Six arguments: +# 1. Pfam flat file name +# 2. outfile name +# 3. Name of the query - not to be removed +# (use " " to not use this functionality) +# 4. species names file (will be ignored if " ") +# 5. 1 to NOT remove non-SWISS_PROT seqs. +# 6. 1 to remove TrEMBL seqs with "(FRAGMENT)" in their DE line. +# (Only used if non SWISS_PROT seqswill not be removed) +# Returns the number of sequences in the resulting alignment. +# If a query name is given, it returns -1 if query is not found in alignment, +# -10 if the name is not unique. +# Last modified: 05/11/01 +sub removeSeqsFromPfamAlign { + my $infile = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $query = $_[ 2 ]; + my $species_names_file = $_[ 3 ]; + my $keep_non_sp = $_[ 4 ]; + my $remove_frags = $_[ 5 ]; + my $return_line = ""; + my $name = ""; + my $seq = ""; + my $saw_sequence_line = 0; + my $number_of_seqs = 0; + my $saw_query = 0; + my $query_given = 0; + my $species_names_file_given = 0; + my $length_of_name = 0; + my %AC_OS = (); # AC -> species name (TrEMBL) + my %AC_DE = (); # AC -> description (TrEMBL) + my $AC = ""; + my $DE = ""; + my $OS = ""; + + &testForTextFilePresence( $infile ); + + if ( $query =~ /\S/ ) { + $query_given = 1; + } + if ( $species_names_file =~ /\S/ ) { + $species_names_file_given = 1; + &readSpeciesNamesFile( $species_names_file ); + } + + if ( $keep_non_sp == 1 + || ( $query_given == 1 && !&startsWithSWISS_PROTname( $query ) ) ) { + + &testForTextFilePresence( $TREMBL_ACDEOS_FILE ); + + # Fill up hash $AC_OS and $AC_DE. + open( HH, "$TREMBL_ACDEOS_FILE" ) || &dieWithUnexpectedError( "Cannot open file \"$TREMBL_ACDEOS_FILE\"" ); + while ( $return_line = ) { + if ( $return_line =~ /(\S+);([^;]*);(\S+)/ ) { + $AC_OS{ $1 } = $3; + if ( $remove_frags == 1 ) { + $AC_DE{ $1 } = $2; + } + } + } + close( HH ); + } + + open( OUT_RNSP, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + open( IN_RNSP, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( $return_line = ) { + + if ( $saw_sequence_line == 1 + && !&containsPfamNamedSequence( $return_line ) + && !&isPfamCommentLine( $return_line ) ) { + # This is just for counting purposes. + $saw_sequence_line = 2; + } + if ( &isPfamSequenceLine( $return_line ) ) { + if ( $saw_sequence_line == 0 ) { + $saw_sequence_line = 1; + } + $return_line =~ /(\S+)\s+(\S+)/; + $name = $1; + $seq = $2; + if ( $query_given == 1 && $name eq $query ) { + $saw_query++; + } + if ( ( $query_given == 1 && $name ne $query ) + || $query_given != 1 ) { + if ( !&startsWithSWISS_PROTname( $name ) ) { + if ( $keep_non_sp != 1 ) { + next; + } + else { + $name =~ /(\S+)\//; + $AC = $1; + unless( exists( $AC_OS{ $AC } ) ) { + #ACs not present in "ACDEOS" file. + next; + } + $OS = $AC_OS{ $AC }; + if ( !$OS || $OS eq "" ) { + &dieWithUnexpectedError( "species for \"$AC\" not found" ); + } + if ( $species_names_file_given == 1 ) { + unless( exists( $Species_names_hash{ $OS } ) ) { + next; + } + } + if ( $remove_frags == 1 ) { + $DE = $AC_DE{ $AC }; + if ( $DE && $DE =~ /\(FRAGMENT\)/ ) { + next; + } + } + $name =~ s/\//_$OS\//; + } + } + else { + if ( $species_names_file_given == 1 ) { + if ( $name =~ /_([A-Z0-9]{1,5})/ ) { + unless( exists( $Species_names_hash{ $1 } ) ) { + next; + } + } + # remove everything whose species cannot be determined. + else { + next; + } + } + } + } + elsif ( $query_given == 1 && $name eq $query + && !&startsWithSWISS_PROTname( $query ) ) { + # Adding species to non SWISS-PROT query + $name =~ /(\S+)\//; + $AC = $1; + unless( exists( $AC_OS{ $AC } ) ) { + #ACs not present in "ACDEOS" file. + &userError( "Could not establish species of query.\n Check file \"$TREMBL_ACDEOS_FILE\"." ); + } + $OS = $AC_OS{ $AC }; + if ( !$OS || $OS eq "" ) { + &dieWithUnexpectedError( "species for \"$AC\" not found" ); + } + $name =~ s/\//_$OS\//; + } + + $length_of_name = length( $name ); + + if ( $length_of_name > ( $LENGTH_OF_NAME - 1 ) ) { + &userError( "Name \"$name\" is too long." ); + } + + for ( my $j = 0; $j <= ( $LENGTH_OF_NAME - $length_of_name - 1 ); ++$j ) { + $name .= " "; + } + + $return_line = $name.$seq."\n"; + } + + print OUT_RNSP $return_line; + if ( $saw_sequence_line == 1 ) { + $number_of_seqs++; + } + } + close( IN_RNSP ); + close( OUT_RNSP ); + if ( $query_given == 1 ) { + if ( $saw_query < 1 ) { + return -1; + } + elsif ( $saw_query > 1 ) { + return -10; + } + } + return $number_of_seqs; + +} ## removeSeqsFromPfamAlign + + + + +# One argument: +# 1. PWD file +# "Returns" a Hash of Strings (=keys) containing all the names found in PWD file +# Last modified: 05/29/01 +sub getNamesFromPWDFile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $i = 0; + my $saw_dist_line = 0; + + &testForTextFilePresence( $infile ); + + open( GN_IN, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + + while ( $return_line = ) { + if ( $saw_dist_line == 1 && $return_line =~ /^\s*(\d+)\s*$/ ) { + if ( $1 != $i ) { + &dieWithUnexpectedError( "Failed sanity check" ); + } + last; + } + elsif ( $return_line =~ /^\s*(\S+)\s+\S+/ ) { + $names_in_pwd_file{ $1 } = 0; + $i++; + $saw_dist_line = 1; + } + } + close( GN_IN ); + return; +} ## getNamesFromPWDFile + + + + +# Moves sequences which start with query name (argument 1) +# to the last positions in pfam alignment sepecified by argument 2. +# Removes seqs present in argument 4, unless for query name. +# Four arguments: +# 1. Query name +# 2. Infile (alignment) +# 3. Outfile (=infile with query seq moved to the bottom) +# 4. Array of seq names to remove, unless for query name +# Last modified: 06/25/01 +sub moveToLast { + my $query = $_[ 0 ]; + my $infile = $_[ 1 ]; + my $outfile = $_[ 2 ]; + my @to_remove = @{ $_[ 3 ] }; # @{} tells Perl that this is a list. + my $return_line = ""; + my $query_line = ""; + my $n = ""; + + &testForTextFilePresence( $infile ); + + open( MTL_IN, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + open( MTL_OUT, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + + W: while ( $return_line = ) { + if ( &isPfamCommentLine( $return_line ) + && ( !isRFline( $return_line ) || $mode != 1 ) ) { + next W; + } + if ( @to_remove > 1 ) { + foreach $n ( @to_remove ) { + if ( $n ne $query && $return_line =~ /^\s*$n\s+/ ) { + next W; + } + } + } + if ( $return_line =~ /^\s*$query\s+/ ) { + $query_line = $return_line; + } + elsif ( $query_line ne "" + && ( $return_line !~ /\S+/ || isRFline( $return_line ) ) ) { + print MTL_OUT $query_line; + print MTL_OUT $return_line; + $query_line = ""; + } + else { + print MTL_OUT $return_line; + } + } + if ( $query_line ne "" ) { + print MTL_OUT $query_line; + } + + close( MTL_IN ); + close( MTL_OUT ); + + return; + +} ## moveToLast + + + + + + + + + + +# ----------------------------------------------------------- +# Others +# ----------------------------------------------------------- + + + + +# This gets the complete name of a TrEMBL sequence from a Pfam alignment. +# I.e. it adds the species between "_" and "/XXX-XXX". +# 2 arguments: +# 1. Infile (alignment) +# 2. Name of query +# Returns the complete name found. +# Last modified: 04/25/01 +sub getCompleteNameForTrEMBLquerySeq { + + my $infile = $_[ 0 ]; + my $query_name = $_[ 1 ]; + my $return_line = ""; + my $complete_name = ""; + my $before_slash = ""; + my $after_slash = ""; + + &testForTextFilePresence( $infile ); + + $query_name =~ /(.+)\/.+/; + $before_slash = $1; + + $query_name =~ /.+\/(.+)/; + $after_slash = $1; + + open( INGCN, $infile ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( $return_line = ) { + if ( $return_line =~ /^\s*($before_slash.+\/$after_slash)/ ) { + $complete_name = $1; + last; + } + } + close( INGCN ); + if ( $complete_name eq "" ) { + &userError( "Could not find \"$query_name\" in \"$alignment\"." ); + } + return $complete_name; +} ## getCompleteNameForTrEMBLquerySeq + + + + +# One argument: +# Pfam align name. +# Last modified: 02/26/01 +sub getDescriptionFromPfam { + + my $infile = $_[ 0 ]; + my $return_line = ""; + my $result = ""; + + &testForTextFilePresence( $infile ); + + open( INGDPF, $infile ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( $return_line = ) { + if ( $return_line =~ /^\s*#=DE\s+(.+)/ ) { + $result = $1; + close( INGDPF ); + return $result; + } + } + close( INGDPF ); + return $result; + +} ## getDescriptionFromPfam + + + +# Reads in (SWISS-PROT) species names from a file. +# Names must be separated by newlines. +# Lines beginning with "#" are ignored. +# A possible "=" and everything after is ignored. +# One argument: species-names-file name +# Last modified: 04/24/01 +sub readSpeciesNamesFile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $species = ""; + + &testForTextFilePresence( $infile ); + + open( IN_RSNF, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + while ( $return_line = ) { + if ( $return_line !~ /^\s*#/ && $return_line =~ /(\S+)/ ) { + $species = $1; + $species =~ s/=.+//; + $Species_names_hash{ $species } = ""; + } + } + close( IN_RSNF ); + + return; +} ## readSpeciesNamesFile + + + + +# This reads a raw sequence file or a FASTA sequence file +# and saves it as a "cleaned up" FASTA sequence file. +# If no > line is in the file, it creates one with new sequence name. +# If a > line is in the file, it modifes it: +# white space -> _, ";" ":" "," or "|" -> "~", deletes everything after ( or [; +# length is limited to 40 characters. +# Error if $new_seq_name is "" and no > line in the file. +# Two/three arguments: +# 1. infile name +# 2. outfile name +# 3. new sequence name for > line(will be ignored if "") +# If new sequence name is "": +# returns the contents of the ">" line after modification. +# If new sequence name is specified: +# return new sequence name. +# Last modified: 03/04/01 +sub seqFile2CleanedUpFastaFile { + my $infile = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $new_seq_name = $_[ 2 ]; + my $return_line = ""; + my $mod_desc = ""; + my $saw_desc_line = 0; + + &testForTextFilePresence( $infile ); + + open( IN_CUFF, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + open( OUT_CUFF, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + + while ( $return_line = ) { + if ( $return_line =~ /\w/ && $return_line !~ /^\s*#/ ) { + if ( $return_line =~ /^\s*>/ ) { + if ( $new_seq_name eq "" && $return_line !~ /_/ ) { + &userError( "Description line of query file appears not to\n contain any species information. Use \"N=\" option." ); + } + elsif ( $new_seq_name eq "" ) { + $return_line =~ s/^\s*>\s*(.*?)\s*/>$1/; # Removes spaces before and after >. + $return_line = substr( $return_line, 0, $LENGTH_OF_NAME - 1 ); + $return_line =~ s/[\(\[].*//; # Removes "(" or "[" and everything after. + $return_line =~ s/\s+$//; # Removes spaces at end. + $return_line =~ s/\s+/_/g; # Replaces all white spaces with "_". + $return_line =~ s/[;:,\|]/~/g; # Replaces all ";", ":", ",", or "|" with "~". + $return_line =~ />\s*(\S+)/; + $mod_desc = $1; + $return_line .= "\n"; + } + else { + $return_line = ">".$new_seq_name."\n"; + $mod_desc = $new_seq_name; + } + $saw_desc_line = 1; + } + else { + if ( $saw_desc_line != 1 ) { + if ( $new_seq_name ne "" ) { + print OUT_CUFF ( ">".$new_seq_name."\n" ); + $mod_desc = $new_seq_name; + } + else { + &userError( "Query file is not a FASTA file\n and option \"N=\" has not been used." ); + } + $saw_desc_line = 1; + } + $return_line =~ s/[^a-zA-Z\r\n\f]//g; # Removes non-letters from sequence. + } + + if ( $return_line =~ /\w/ ) { + print OUT_CUFF $return_line; + } + } + } + close( IN_CUFF ); + close( OUT_CUFF ); + + return $mod_desc; +} ## seqFile2CleanedUpFastaFile + + + + +# Purpose. Gets description for TrEMBL seqs, +# from a file which contains the AC, DE, and OS +# and which has to be generated from a TrEMBL flat file db +# using "extractTrembl.pl". +# The same file is used in method "addSpeciesToNonSPseqs". +# Two arguments: +# 1. "ACDEOS" file (AC, DE, OS from TrEMBL db) +# 2. AC ("_species/..." is removed) +# Format: AC;DE;OS\n +# Last modified: 02/14/02 +sub getDescriptionFromTrEMBL_ACDEOSfile { + my $ACDEOS = $_[ 0 ]; + my $AC = $_[ 1 ]; + my $DE = ""; + + # Fill up (huge) hash, if not already done. + unless ( %AC_DE ) { + &testForTextFilePresence( $ACDEOS ); + open( ACDEOS, "$ACDEOS" ) || &dieWithUnexpectedError( "Cannot open file \"$ACDEOS\"" ); + while ( $return_line = ) { + if ( $return_line =~ /(\S+);([^;]+);/ ) { + $AC_DE{ $1 } = $2; + } + } + close( ACDEOS ); + } + + $AC =~ s/_.+//; + + unless( exists( $AC_DE{ $AC } ) ) { + #AC not present in "ACDEOS" file. + return "-"; + } + + $DE = $AC_DE{ $AC }; + + if ( !$DE || $DE eq "" ) { + $DE = "-"; + } + + return $DE; + +} ## getDescriptionFromTrEMBL_ACDEOSfile + + + +# Purpose. Gets description for SP seqs, +# from a file which contains the AC, DE, and OS +# and which has to be generated from a sprot.dat flat file db +# using "extractSWISS-PROT.pl". +# Two arguments: +# 1. "ACDEOS" file (AC, DE, OS from SWISS-PROT db) +# 2. SWISS-PROT AC (XXXX_XXXX) +# Format: AC;DE;OS\n +# Last modified: 02/12/02 +sub getDescriptionFromSWISSPROT_ACDEOSfile { + my $SPACDEOS = $_[ 0 ]; + my $AC = $_[ 1 ]; + my $DE = ""; + + # Fill up (huge) hash, if not already done. + unless ( %SP_AC_DE ) { + &testForTextFilePresence( $SPACDEOS ); + open( ACDEOS, "$SPACDEOS" ) || &dieWithUnexpectedError( "Cannot open file \"$SPACDEOS\"" ); + while ( $return_line = ) { + if ( $return_line =~ /(\S+);([^;]+);/ ) { + $SP_AC_DE{ $1 } = $2; + } + } + close( ACDEOS ); + } + + $AC =~ s/\/.+//; + + unless( exists( $SP_AC_DE{ $AC } ) ) { + #AC not present in "ACDEOS" file. + return "-"; + } + + $DE = $SP_AC_DE{ $AC }; + + if ( !$DE || $DE eq "" ) { + $DE = "-"; + } + + return $DE; + +} ## getDescriptionFromSWISSPROT_ACDEOSfile + + + + + + + + + +# ----------------------------------------------------------- +# Helpers +# ----------------------------------------------------------- + + + +# One argument: +# Numeric value to be rounded to int. +# Last modified: 10/17/01 +sub roundToInt { + my $x = $_[ 0 ]; + unless ( $x eq "-" ) { + $x = int ( $x + 0.5 ); + } + return $x; +} ## roundToInt + + + +# Removes files. +# Last modified: 03/10/01 +sub cleanUpTempDir { + unlink( $temp_dir."/MAKETREEOUT".$TREE_FILE_SUFFIX, $temp_dir."/MAKETREEOUT".$LOG_FILE_SUFFIX, + $temp_dir."/MAKETREEOUT".$ALIGN_FILE_SUFFIX, $temp_dir."/MAKETREEOUT".$MULTIPLE_TREES_FILE_SUFFIX, + $temp_dir."/MAKETREEOUT".$SUFFIX_PWD_NOT_BOOTS, $temp_dir."/".$DO_RIO_TEMP_OUTFILE, + $temp_dir."/ALIGN1", $temp_dir."/ALIGN2", $temp_dir."/QUERY_SEQ", $temp_dir."/NBD_NJ_TREE", + $temp_dir."/ALIGN2_BOOTSTRAPPED", $temp_dir."/ALIGN2_PROCESSED", $temp_dir."/DIST_TO_QUERY", + $temp_dir."/DISTs_TO_QUERY", $temp_dir."/HMMALIGNOUT", $temp_dir."/NBD_INC_QUERY", $temp_dir."/PWD_INC_QUERY", + $temp_dir."/HMMFILE", $temp_dir."/MOVETOLASTOUT" ); + rmdir( $temp_dir ); +} ## cleanUpTempDir + + + + + + + + + + + + +# ----------------------------------------------------------- +# Command line and arguments, Errors +# ----------------------------------------------------------- + + + +# One argument: +# the command line. +# Last modified: 03/08/01 +sub analyzeCommandLine { + + my $args = ""; + my $arg = ""; + my $char = ""; + + + + $mode = shift( @_ ); + + if ( $mode != 1 && $mode != 2 && $mode != 3 && $mode != 4 ) { + &errorInCommandLine( "Mode can only be: 1, 2, 3, or 4." ); + } + + + foreach $args ( @_ ) { + + $args =~ s/\s//g; + + $char = substr( $args, 0, 1 ); + + + if ( length( $args ) > 1 ) { + $arg = substr( $args, 2 ); + } + + if ( $char =~ /A/ ) { + if ( $alignment ne "" ) { + &errorInCommandLine( "Entered same argument twice." ); + } + if ( $mode == 3 || $mode == 4 ) { + &userErrorCheckForTextFileExistence( $arg ); + } + $alignment = $arg; + } + elsif ( $char =~ /B/ ) { + if ( $t_sn != $THRESHOLD_SN_DEFAULT ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $t_sn = $arg; + } + elsif ( $char =~ /C/ ) { + if ( $description == 1 || $complete_description == 1 ) { + &errorInCommandLine( "Entered same argument twice or conflicting arguments: \"D\" and \"C\"." ); + } + $complete_description = 1; + } + elsif ( $char =~ /D/ ) { + if ( $description == 1 || $complete_description == 1 ) { + &errorInCommandLine( "Entered same argument twice or conflicting arguments: \"D\" and \"C\"." ); + } + $description = 1; + } + elsif ( $char =~ /E/ ) { + if ( $long_output != 0 ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $long_output = 1; + } + elsif ( $char =~ /F/ ) { + if ( $hmm_file ne "" || $hmm_name ne "" || $seed_aln_for_hmmbuild ne "") { + &errorInCommandLine( "Entered same argument twice or conflicting arguments: \"F=\", \"H=\" and \"b=\"." ); + } + if ( $mode == 1 || $mode == 2 ) { + &errorInCommandLine( "Can not use \"F=\" in modes 1 or 2." ); + } + &userErrorCheckForTextFileExistence( $arg ); + $hmm_file = $arg; + } + elsif ( $char =~ /G/ ) { + if ( $species_names_file ne " " ) { + &errorInCommandLine( "Entered same argument twice." ); + } + &userErrorCheckForTextFileExistence( $arg ); + $species_names_file = $arg; + } + elsif ( $char =~ /H/ ) { + if ( $hmm_name ne "" || $hmm_file ne "" || $seed_aln_for_hmmbuild ne "" ) { + &errorInCommandLine( "Entered same argument twice or conflicting arguments: \"F=\", \"H=\" and \"b=\"." ); + } + if ( $mode == 1 || $mode == 2 ) { + &errorInCommandLine( "Can not use \"H=\" in modes 1 or 2." ); + } + $hmm_name = $arg; + } + elsif ( $char =~ /I/ ) { + if ( $safe_nhx != 0 ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $safe_nhx = 1; + } + elsif ( $char =~ /K/ ) { + if ( $keep != 0 ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $keep = 1; + } + elsif ( $char =~ /L/ ) { + if ( $t_orthologs != $THRESHOLD_ORTHOLOGS_DEFAULT ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $t_orthologs = $arg; + } + elsif ( $char =~ /N/ ) { + if ( $query_name ne "" ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $query_name = $arg; + } + elsif ( $char =~ /O/ ) { + if ( $outfile ne "" ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $outfile = $arg; + } + elsif ( $char =~ /P/ ) { + if ( $sort != $SORT_DEFAULT ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $sort = $arg; + } + elsif ( $char =~ /Q/ ) { + if ( $seqX_file ne "" ) { + &errorInCommandLine( "Entered same argument twice." ); + } + &userErrorCheckForTextFileExistence( $arg ); + $seqX_file = $arg; + } + elsif ( $char =~ /S/ ) { + if ( $species_tree_file ne "" ) { + &errorInCommandLine( "Entered same argument twice." ); + } + &userErrorCheckForTextFileExistence( $arg ); + $species_tree_file = $arg; + } + elsif ( $char =~ /T/ ) { + if ( $mode == 1 || $mode == 2 ) { + &errorInCommandLine( "Matrix cannot be changed in modes 1 and 2 (is dictated by \"\$MATRIX_FOR_PWD\" for mode 1)." ); + } + if ( $arg eq "J" ) { + $matrix_n = 0; + } + elsif ( $arg eq "P" ) { + $matrix_n = 1; + } + elsif ( $arg eq "B" ) { + $matrix_n = 2; + } + elsif ( $arg eq "M" ) { + $matrix_n = 3; + } + elsif ( $arg eq "V" ) { + $matrix_n = 5; + } + elsif ( $arg eq "W" ) { + $matrix_n = 6; + } + else { + &errorInCommandLine( "Use T=J for JTT, P for PAM, B for BLOSUM62, M for mtREV24, V for VT, W for WAG." ); + } + } + elsif ( $char =~ /U/ ) { + if ( $t_orthologs_dc != $THRESHOLD_ORTHOLOGS_DEFAULT_DC ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $t_orthologs_dc = $arg; + } + elsif ( $char =~ /X/ ) { + if ( $warn_more_than_one_ortho + != $WARN_MORE_THAN_ONE_ORTHO_DEFAULT ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $warn_more_than_one_ortho = $arg; + } + elsif ( $char =~ /Y/ ) { + if ( $warn_no_orthos != $WARN_NO_ORTHOS_DEFAULT ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $warn_no_orthos = $arg; + } + elsif ( $char =~ /Z/ ) { + if ( $warn_one_ortho != $WARN_ONE_ORTHO_DEFAULT ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $warn_one_ortho = $arg; + } + elsif ( $char =~ /a/ ) { + if ( $boostraps_for_makeTree != $BOOSTRAPS_FOR_MAKETREE_DEFAULT ) { + &errorInCommandLine( "Entered same argument twice." ); + } + if ( $mode == 1 || $mode == 2 ) { + &errorInCommandLine( "Modes 1 and 2: Cannot change bootstrap value. Do not use \"a=\"." ); + } + $boostraps_for_makeTree = $arg; + if ( $boostraps_for_makeTree < 10 ) { + &errorInCommandLine( "Bootsraps cannot be smaller than 10." ); + } + } + elsif ( $char =~ /b/ ) { + if ( $hmm_name ne "" || $hmm_file ne "" || $seed_aln_for_hmmbuild ne "" ) { + &errorInCommandLine( "Entered same argument twice or conflicting arguments: \"F=\", \"H=\" and \"b=\"." ); + } + if ( $mode == 1 || $mode == 2 ) { + &errorInCommandLine( "Can not use \"b=\" in modes 1 or 2." ); + } + &userErrorCheckForTextFileExistence( $arg ); + $seed_aln_for_hmmbuild = $arg; + } + elsif ( $char =~ /f/ ) { + if ( $no_frags ne 0 ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $no_frags = 1; + } + elsif ( $char =~ /j/ ) { + if ( $temp_dir ne "" ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $temp_dir = $arg; + } + elsif ( $char =~ /p/ ) { + if ( $output_ultraparalogs != 0 ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $output_ultraparalogs = 1; + } + elsif ( $char =~ /s/ ) { + if ( $non_sp != 1 ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $non_sp = 0; + } + elsif ( $char =~ /v/ ) { + $t_ultra_paralogs = $arg; + } + elsif ( $char =~ /x/ ) { + if ( $output_HTML == 1 ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $output_HTML = 1; + } + elsif ( $char =~ /y/ ) { + if ( $seed_for_makeTree != $SEED_FOR_MAKETREE_DEFAULT ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $seed_for_makeTree = $arg; + } + elsif ( $char =~ /\+/ ) { + if ( $parallel != 0 ) { + &errorInCommandLine( "Entered same argument twice." ); + } + $parallel = 1; + } + else { + &errorInCommandLine( "Unknown option: \"$args\"." ); + } + } +} ## analyzeCommandLine + + + + +# Last modified: 03/08/01 +sub CheckArguments { + + if ( $outfile eq "" ) { + &errorInCommandLine( "Outfile not specified. Use \"O=\"." ); + } + if ( $alignment eq "" ) { + &errorInCommandLine( "Need to specify a Pfam alignment file. Use \"A=\"." ); + } + if ( -e $outfile ) { + &userError( "\"$outfile\" already exists." ); + } + + if ( $sort < 0 || $sort > 17 ) { + &errorInCommandLine( "Sort priority (\"P=\") must be between 0 and 15." ); + } + + if ( $parallel == 1 && $mode != 1 ) { + &errorInCommandLine( "Parallelization only implemented for mode 1." ); + } + + if ( $mode == 1 || $mode == 2 ) { + + if ( $species_names_file =~ /\S/ ) { + &errorInCommandLine( "Modes 1 and 2: Cannot use species names file. Do not use \"G=\"." ); + } + if ( $non_sp == 0 ) { + &errorInCommandLine( "Can not use \"s\" in modes 1 or 2." ); + } + if ( $no_frags == 1 ) { + &errorInCommandLine( "Can not use \"f\" in modes 1 or 2." ); + } + } + + if ( $mode == 1 || $mode == 3 ) { + if ( $seqX_file eq "" ) { + &errorInCommandLine( "Modes 1 and 3: Need to specify a query file. Use \"Q=\"." ); + } + } + + if ( $mode == 3 ) { + if ( $hmm_name eq "" && $hmm_file eq "" && $seed_aln_for_hmmbuild eq "" ) { + &errorInCommandLine( "Mode 3: Need to specify either a HMM name (\"H=\"), a HMM file (\"F=\") or build a HMM (\"b=\")." ); + } + } + + if ( $mode == 1 ) { + if ( $hmm_name ne "" || $hmm_file ne "" || $seed_aln_for_hmmbuild ne "" ) { + &errorInCommandLine( "Mode 1: Must not specify a HMM name (\"H=\"), a HMM file (\"F=\") or build a HMM (\"b=\")." ); + } + } + + if ( $mode == 2 || $mode == 4 ) { + if ( $seqX_file ne "" ) { + &errorInCommandLine( "Modes 2 and 4: Must not specify a query file. Do not use \"Q=\".\n" ); + } + if ( $query_name eq "" ) { + &errorInCommandLine( "Modes 2 and 4: Must specify a query name. Use \"N=\"." ); + } + if ( $hmm_name ne "" || $hmm_file ne "" || $seed_aln_for_hmmbuild ne "" ) { + &errorInCommandLine( "Modes 2 and 4: Cannot specify a HMM name (\"H=\"), a HMM file (\"F=\") or build a HMM (\"b=\")." ); + } + + } + + if ( $non_sp != 1 && $no_frags == 1 ) { + &errorInCommandLine( "\"Fragments\" are assumed to be only found in non SWISS-PROT seqs.\n Do not use \"f\" together with \"s\"." ); + } + + if ( $output_HTML == 1 ) { + if ( $mode != 1 ) { + &errorInCommandLine( "Output in HTML (for web server) only for mode 1." ); + } + } + + if ( $output_ultraparalogs == 0 && $t_ultra_paralogs != $T_ULTRA_PARALOGS_DEFAULT ) { + &errorInCommandLine( "Use \"p\" to output ultra paralogs (cannot use \"v=\" without \"p\")." ); + } + + if ( $non_sp == 1 && ( $mode == 3 || $mode == 4 ) ) { + unless ( ( -s $TREMBL_ACDEOS_FILE ) && ( -f $TREMBL_ACDEOS_FILE ) && ( -T $TREMBL_ACDEOS_FILE ) ) { + my $message = "AC, DE, and OS-file not found.\n"; + $message .= " If non SWISS-PROT sequences are not to be removed from the\n"; + $message .= " Pfam alignment (\"s\" option), variable \"\$TREMBL_ACDEOS_FILE\" needs\n"; + $message .= " to point to a file containing AC, DE, and OS from TrEMBL. Such a\n"; + $message .= " file can be generated with \"extractTrembl.pl\".\n"; + $message .= " Currently, \"TREMBL_ACDEOS_FILE\" points to:\n"; + $message .= " $TREMBL_ACDEOS_FILE"; + &userError( $message ); + } + } + + unless ( ( -s $species_tree_file ) && ( -f $species_tree_file ) && ( -T $species_tree_file ) ) { + my $message = "Species tree file not found.\n"; + $message .= " A valid species tree must be specified.\n"; + $message .= " Either, use \"S=\" option, or set variable\n"; + $message .= " \"\$SPECIES_TREE_FILE_DEFAULT\".\n"; + $message .= " Currently, this program looks for a species tree at:\n"; + $message .= " $species_tree_file"; + &userError( $message ); + } + + if ( $hmm_name ne "" ) { + unless ( ( -s $PFAM_HMM_DB ) && ( -f $PFAM_HMM_DB ) ) { + my $message = "HMMER model db file not found.\n"; + $message .= " If \"H=\" option is used, a valid HMMER model db needs\n"; + $message .= " to be specified with variable \"\$PFAM_HMM_DB\".\n"; + $message .= " Currently, \"\$PFAM_HMM_DB\" points to:\n"; + $message .= " $PFAM_HMM_DB"; + &userError( $message ); + } + } +} ## CheckArguments + + + +# Last modfied: 06/25/01 +sub userErrorCheckForTextFileExistence { + my $file = $_[ 0 ]; + unless ( ( -s $file ) && ( -f $file ) && ( -T $file ) ) { + &userError( "\"$file\" does not exist or is not a plain text file." ); + } +} ## checkForFileExistence + + + +# One argument: the error message. +# Last modified: 04/26/01 +sub errorInCommandLine { + + my $error = $_[ 0 ]; + + print " \n"; + print " rio.pl version: $VERSION\n"; + print " ------\n"; + print " \n"; + print " Error in command line:\n"; + if ( $error ne "" ) { + print " $error"; + } + print " \n\n"; + print " Type \"rio.pl\" (no arguments) for more information.\n"; + print " \n"; + exit( -1 ); +} ## errorInCommandLine + + + + +# One argument: the error message. +# Last modified: 04/26/01 +sub userError { + + my $error = $_[ 0 ]; + + print " \n"; + print " rio.pl version: $VERSION\n"; + print " ------\n"; + print " \n"; + print " Error:\n"; + if ( $error ne "" ) { + print " $error"; + } + print " \n\n"; + print " Type \"rio.pl\" (no arguments) for more information.\n"; + print " \n"; + &cleanUpTempDir(); + exit( -1 ); +} ## UserError + + + + + + +# Last modified: 04/26/01 +sub printHelp { + + print " \n"; + print " rio.pl version: $VERSION\n"; + print " ------\n\n"; + + print < + ----- + + + Examples: + --------- + + % RIO1.1/perl/rio.pl 1 A=aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out1 p I C E + + % RIO1.1/perl/rio.pl 2 A=aconitase N=LEU2_LACLA/5-449 O=out2 p I C E + + % RIO1.1/perl/rio.pl 3 A=/path/to/my/pfam/Full/aconitase H=aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out3 p I C E + + % RIO1.1/perl/rio.pl 4 A=/path/to/my/pfam/Full/aconitase N=LEU2_LACLA/5-449 O=out4 p I C E + + % RIO1.1/perl/rio.pl 3 A=/path/to/my/pfam/Full/aconitase b=/path/to/my/pfam/Seed/aconitase Q=RIO1.1/LEU2_HAEIN N=QUERY_HAEIN O=out5 p I C E + + + + Modes: + ------ + + 1: RIO analysis based on precalculated pairwise distances + alignment does not contain query sequence + + 2: RIO analysis based on precalculated pairwise distances + alignment does contain query sequence + + 3: RIO analysis based on Pfam alignments, + alignment does not contain query sequence + + 4: RIO analysis based on Pfam alignments, + alignment does contain query sequence + + + + Tagged arguments: + ----------------- + + No "G=", "H=", "F=", "T=", "a=", "b=", "s", "f" in modes 1 and 2. + + + A= Pfam alignment name (mandatory). This specifies the alignment + against which the RIO analysis is to be performed. + In modes 1 and 2: Pfam model (alignment) name + (e.g. "A=aconitase"). + In modes 3 and 4: Pfam alignment path/name + (e.g. "A=/path/to/your/pfam/Full/aconitase"). + + Q= Path/name of file containing the query sequence + (in FASTA format or raw sequence) (mandatory in modes 1 and 3). + + N= Query name (mandatory). This must include the SWISS-PROT code + for the species of the query after a "_" (e.g. "N=QUERY_HAEIN"). + If the query sequence is already in the alignment (modes 2 and 4) + the complete name needs to be specified -- including "/xxx-xxx". + + O= Output file path/name (mandatory). + + T= Model for pairwaise distance calculation: + J=JTT, B=BLOSUM 62, M=mtREV24, V=VT, W=WAG, P=PAM. + BLOSUM 62 is default. + (Not in modes 1 and 2; these modes use \$MATRIX_FOR_PWD instead.) + + In modes 1 and 3, a HMM is needed to align the query sequence to + the alignment and either one of the following options must be + employed: + H= HMM name: This uses hmmfetch to retrieve a HMM from + \$PFAM_HMM_DB. + F= HMM file: This directly reads the HMM from a file. + + S= Species tree file path/name (in NHX format) (optional). + If not specified, \$SPECIES_TREE_FILE_DEFAULT is used. + + G= Species names file (optional). Only sequences associated with + species found in this file are used. + In the species names file, individual species names must be + separated by newlines and lines starting with "#" are ignored. + While only sequences associated with species found in the species + tree ("S=") are used for the actual RIO analysis, this allows to + remove sequences prior to tree calculation (which is the most + time consuming step). + + P= Sort priority (default is 12): + 0 : Ortholog + 1 : Ortholog, Super ortholog + 2 : Super ortholog, Ortholog + 3 : Ortholog, Distance + 4 : Distance, Ortholog + 5 : Ortholog, Super ortholog, Distance + 6 : Ortholog, Distance, Super ortholog + 7 : Super ortholog, Ortholog, Distance + 8 : Super ortholog, Distance, Ortholog + 9 : Distance, Ortholog, Super ortholog + 10 : Distance, Super ortholog, Ortholog + 11 : Ortholog, Subtree neighbor, Distance + 12 : Ortholog, Subtree neighbor, Super ortholog, Distance (default) + 13 : Ortholog, Super ortholog, Subtree neighbor, Distance + 14 : Subtree neighbor, Ortholog, Super ortholog, Distance + 15 : Subtree neighbor, Distance, Ortholog, Super ortholog + 16 : Ortholog, Distance, Subtree neighbor, Super ortholog + 17 : Ortholog, Subtree neighbor, Distance, Super ortholog + + a= Bootstraps for tree construction (not in modes 1 and 2). + Default is 100. + + L= Threshold for orthologies for output. Default is 0. + v= Threshold for ultra-paralogies for output. Default is 50. + + U= Threshold for orthologies for distance calculation. Default is 60. + + X= In case of more than one putative orthologs: + number of sd the distance query - LCA has to differ + from the mean to generate a warning. Default is 2. + + Y= In case of no putative orthologs: + number of sd the distance query - root has to differ + from mean to generate a warning. Default is 2. + + Z= In case of one putative ortholog: + threshold for factor between the two distances to their + LCA (larger/smaller) to generate a warning. Default is 2. + + B= Threshold for subtree-neighborings. Default is 0. + + b= Build HMM from seed alignment with "hmmbuild -s" (optional). + This is to prevent from finding multiple domains per sequence + (i.e. prevents "cutting" the query sequence). Give path/name to + Seed with this. + + j= Name for temporary directory (optional). + + y= Seed for random number generator. Default is 41. + + I Create and save a rooted, with duplication vs speciation, + and orthology information annotated gene tree. + If precalculated distances are used (modes 1 and 2): this gene + tree is a NJ tree calculated based on the non-bootstrap resampled + (original) pairwise distances. + If precalculated distances are not used (modes 3 and 4): this gene + is a consenus tree with ML branch length values and is also + annotated with bootstrap values for each node. + + Options for output: + p Output ultra-paralogs. + D Description from SWISS-PROT and TrEMBL. + C Complete description from SWISS-PROT and TrEMBL. + E 118 character output instead of 78 character output. + + K Keep intermediate files (they will go into the same directory + as the output file, their names are the same as of the output + file, with various suffixes added). + + s Ignore non SWISS-PROT sequences (i.e. sequences from TrEMBL) + in the Pfam alignment. + + f Try to ignore TrEMBL "fragments" (sequences with "fragment" in + their description). + + + Parallel, use machines listed in file \$NODE_LIST. + + x RIO used as web server -- HTML output. + + +END + exit( 0 ); + +} ## printHelp + diff --git a/forester/archive/perl/rio_module.pm b/forester/archive/perl/rio_module.pm new file mode 100755 index 0000000..59b15e2 --- /dev/null +++ b/forester/archive/perl/rio_module.pm @@ -0,0 +1,1108 @@ +# Copyright (C) 2002-2003 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified 03/13/03 + + +package rio_module2; +use strict; +require Exporter; + +our $VERSION = 3.20; + +our @ISA = qw( Exporter ); + +our @EXPORT = qw( executeConsense + executeMakeTree + executePuzzleDQO + executePuzzleDQObootstrapped + pfam2phylipMatchOnly + startsWithSWISS_PROTname + isPfamSequenceLine + isPfamCommentLine + containsPfamNamedSequence + isRFline + executeNeighbor + executeProtpars + setModelForPuzzle + setRateHeterogeneityOptionForPuzzle + setParameterEstimatesOptionForPuzzle + executePuzzleBootstrapped + executePuzzle + executeHmmfetch + addDistsToQueryToPWDfile + testForTextFilePresence + exitWithWarning + dieWithUnexpectedError + addSlashAtEndIfNotPresent + $LENGTH_OF_NAME + $MIN_NUMBER_OF_AA + $TREMBL_ACDEOS_FILE + $SWISSPROT_ACDEOS_FILE + $SPECIES_NAMES_FILE + $SPECIES_TREE_FILE_DEFAULT + $MULTIPLE_TREES_FILE_SUFFIX + $LOG_FILE_SUFFIX + $ALIGN_FILE_SUFFIX + $TREE_FILE_SUFFIX + $ADDITION_FOR_RIO_ANNOT_TREE + $SUFFIX_PWD + $SUFFIX_BOOT_STRP_POS + $SUFFIX_PWD_NOT_BOOTS + $SUFFIX_HMM + $MATRIX_FOR_PWD + $RIO_PWD_DIRECTORY + $RIO_BSP_DIRECTORY + $RIO_NBD_DIRECTORY + $RIO_ALN_DIRECTORY + $RIO_HMM_DIRECTORY + $PFAM_FULL_DIRECTORY + $PFAM_SEED_DIRECTORY + $PRIOR_FILE_DIR + $PFAM_HMM_DB + $SEQBOOT + $NEIGHBOR + $PROTPARS + $CONSENSE + $PUZZLE + $HMMALIGN + $HMMSEARCH + $HMMBUILD + $HMMFETCH + $SFE + $HMMCALIBRATE + $P7EXTRACT + $MULTIFETCH + $BOOTSTRAP_CZ + $BOOTSTRAP_CZ_PL + $TRANSFERSBRANCHLENGHTS + $MAKETREE + $RIO_PL + $DORIO + $PUZZLE_DQO + $BOOTSTRAPS + $PATH_TO_FORESTER + $JAVA + $NODE_LIST + $RIO_SLAVE_DRIVER + $RIO_SLAVE + $TEMP_DIR_DEFAULT + $EXPASY_SPROT_SEARCH_DE + $EXPASY_SPROT_SEARCH_AC + ); + + + + +# ============================================================================= +# ============================================================================= +# +# THESE VARIABLES ARE ENVIRONMENT DEPENDENT, AND NEED TO BE SET ACCORDINGLY +# BY THE USER +# ------------------------------------------------------------------------- +# + + + +# RIO itself: +# ----------- +our $PATH_TO_FORESTER = "/nfs/dm3/homedir1/czmasek/RIO1.24/"; + + +# Java virtual machine: +# --------------------- +our $JAVA = "/usr/local/java/jdk/bin/java"; + + + +# Where all the temporary files can be created: +# --------------------------------------------- +our $TEMP_DIR_DEFAULT = "/tmp/"; + + + +# Pfam data: +# ---------- +our $PFAM_FULL_DIRECTORY = "/path/to/Pfam/Full/"; +our $PFAM_SEED_DIRECTORY = "/path/to/Pfam/Seed/"; +our $PFAM_HMM_DB = "/path/to/Pfam/Pfam_ls"; # Need to run "hmmindex" on this + # to produce .ssi file. + # Then, for example + # "setenv HMMERDB /home/rio/pfam-6.6/" + + +$PATH_TO_FORESTER = &addSlashAtEndIfNotPresent( $PATH_TO_FORESTER ); + + +# Description lines and species from SWISS-PROT and TrEMBL: +# --------------------------------------------------------- +our $TREMBL_ACDEOS_FILE = $PATH_TO_FORESTER."data/trembl22_ACDEOS_1-6"; + +our $SWISSPROT_ACDEOS_FILE = $PATH_TO_FORESTER."data/sp40_ACDEOS_1-6"; + + + +# Names of species which can be analyzed and analyzed +# against (must also be in tree $SPECIES_TREE_FILE_DEFAULT). +# By using a list with less species, RIO analyses become faster +# but lose phylogenetic resolution. +# For many purposes, list "tree_of_life_bin_1-6_species_list" +# in "data/species/" might be sufficient: +# -------------------------------------------------------------- +our $SPECIES_NAMES_FILE = $PATH_TO_FORESTER."data/species/tree_of_life_bin_1-6_species_list"; + + + +# A default species tree in NHX format. +# For many purposes, tree "tree_of_life_bin_1-6.nhx" +# in "data/species/" might be fine: +# -------------------------------------------------- +our $SPECIES_TREE_FILE_DEFAULT = $PATH_TO_FORESTER."data/species/tree_of_life_bin_1-6.nhx"; + + + +# Data for using precalculated distances: +# --------------------------------------- +our $MATRIX_FOR_PWD = 2; # The matrix which has been used for the pwd in $RIO_PWD_DIRECTORY. + # 0=JTT, 1=PAM, 2=BLOSUM 62, 3=mtREV24, 5=VT, 6=WAG. + +our $RIO_PWD_DIRECTORY = $PATH_TO_FORESTER."example_data/"; # all must end with "/" +our $RIO_BSP_DIRECTORY = $PATH_TO_FORESTER."example_data/"; +our $RIO_NBD_DIRECTORY = $PATH_TO_FORESTER."example_data/"; +our $RIO_ALN_DIRECTORY = $PATH_TO_FORESTER."example_data/"; +our $RIO_HMM_DIRECTORY = $PATH_TO_FORESTER."example_data/"; + + + +# +# End of variables which need to be set by the user. +# +# ============================================================================= +# ============================================================================= + + + + + +$TEMP_DIR_DEFAULT = &addSlashAtEndIfNotPresent( $TEMP_DIR_DEFAULT ); +$PFAM_FULL_DIRECTORY = &addSlashAtEndIfNotPresent( $PFAM_FULL_DIRECTORY ); +$PFAM_SEED_DIRECTORY = &addSlashAtEndIfNotPresent( $PFAM_SEED_DIRECTORY ); + + + +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# These variables should normally not be changed: +# + +our $PRIOR_FILE_DIR = $PATH_TO_FORESTER."data/priors_for_hmmbuild/"; + # Directory containing dirichlet prior + # files needed for certain aligments + # by hmmbuild (e.g. Collagen). + + +# PHYLIP: +our $SEQBOOT = $PATH_TO_FORESTER."phylip_mod/exe/seqboot"; +our $NEIGHBOR = $PATH_TO_FORESTER."phylip_mod/exe/neighbor"; +our $PROTPARS = $PATH_TO_FORESTER."phylip_mod/exe/protpars"; +our $CONSENSE = $PATH_TO_FORESTER."phylip_mod/exe/consense"; + +# TREE-PUZZLE: +our $PUZZLE = $PATH_TO_FORESTER."puzzle_mod/src/puzzle"; +our $PUZZLE_DQO = $PATH_TO_FORESTER."puzzle_dqo/src/puzzle"; + +# HMMER: +our $HMMALIGN = $PATH_TO_FORESTER."hmmer/binaries/hmmalign"; +our $HMMSEARCH = $PATH_TO_FORESTER."hmmer/binaries/hmmsearch"; +our $HMMBUILD = $PATH_TO_FORESTER."hmmer/binaries/hmmbuild"; +our $HMMFETCH = $PATH_TO_FORESTER."hmmer/binaries/hmmfetch"; +our $SFE = $PATH_TO_FORESTER."hmmer/binaries/sfetch"; +our $HMMCALIBRATE = $PATH_TO_FORESTER."hmmer/binaries/hmmcalibrate"; + +our $P7EXTRACT = $PATH_TO_FORESTER."perl/p7extract.pl"; +our $MULTIFETCH = $PATH_TO_FORESTER."perl/multifetch.pl"; + + +# RIO/FORESTER: +our $BOOTSTRAP_CZ = $PATH_TO_FORESTER."C/bootstrap_cz"; +our $BOOTSTRAP_CZ_PL = $PATH_TO_FORESTER."perl/bootstrap_cz.pl"; +our $TRANSFERSBRANCHLENGHTS = $JAVA." -cp $PATH_TO_FORESTER"."java forester.tools.transfersBranchLenghts"; +our $MAKETREE = $PATH_TO_FORESTER."perl/makeTree.pl"; +our $RIO_PL = $PATH_TO_FORESTER."perl/rio.pl"; +our $DORIO = $JAVA." -cp $PATH_TO_FORESTER"."java forester.tools.DoRIO"; +# parallel RIO: +our $RIO_SLAVE_DRIVER = $PATH_TO_FORESTER."perl/rio_slave_driver.pl"; +our $RIO_SLAVE = $PATH_TO_FORESTER."perl/rio_slave.pl"; +our $NODE_LIST = $PATH_TO_FORESTER."data/node_list.dat"; + +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +our $BOOTSTRAPS = 100; +our $MIN_NUMBER_OF_AA = 20; # After removal of gaps, if less, gaps are not removed. +our $LENGTH_OF_NAME = 26; + + + + +our $MULTIPLE_TREES_FILE_SUFFIX = ".mlt"; +our $LOG_FILE_SUFFIX = ".log"; +our $ALIGN_FILE_SUFFIX = ".aln"; +our $TREE_FILE_SUFFIX = ".nhx"; +our $ADDITION_FOR_RIO_ANNOT_TREE = ".rio"; +our $SUFFIX_PWD = ".pwd"; +our $SUFFIX_BOOT_STRP_POS = ".bsp"; +our $SUFFIX_PWD_NOT_BOOTS = ".nbd"; +our $SUFFIX_HMM = ".hmm"; + +our $EXPASY_SPROT_SEARCH_DE = "http://www.expasy.org/cgi-bin/sprot-search-de?"; +our $EXPASY_SPROT_SEARCH_AC = "http://www.expasy.org/cgi-bin/sprot-search-ac?"; + + + +# One argument: input multiple trees file +# Last modified: 07/05/01 +sub executeConsense { + my $in = $_[ 0 ]; + + &testForTextFilePresence( "$in" ); + + system( "$CONSENSE >/dev/null 2>&1 << ! +$in +Y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$CONSENSE \"" ); + + return; +} + + + +# Four arguments: +# 1. options ("-" is not necessary) +# 2. alignment or pwd file +# 3. outfile +# 4. temp dir +# Last modified: 07/05/01 +sub executeMakeTree { + + my $opts = $_[ 0 ]; + my $B = $_[ 1 ]; + my $C = $_[ 2 ]; + my $D = $_[ 3 ]; + + &testForTextFilePresence( $B ); + + $opts = "-".$opts; + + system( "$MAKETREE $opts $B $C $D" ) + && &dieWithUnexpectedError( "Could not execute \"$MAKETREE $opts $B $C $D\"" ); + +} ## executeMakeTree + + + + +# Two arguments: +# 1. Name of inputfile +# 2. matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +sub executePuzzleDQO { + my $in = $_[ 0 ]; + my $matrix_option = $_[ 1 ]; + my $mat = ""; + + &testForTextFilePresence( $in ); + + $mat = setModelForPuzzle( $matrix_option ); + + system( "$PUZZLE_DQO $in >/dev/null 2>&1 << !$mat +y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$PUZZLE_DQO\"" ); + + return; + +} ## executePuzzleDQO + + + + +# Two arguments: +# 1. Name of inputfile +# 2. matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# Last modified: 01/28/02 +sub executePuzzleDQObootstrapped { + my $in = $_[ 0 ]; + my $matrix_option = $_[ 1 ]; + + + my $l = 0; + my $slen = 0; + my $counter = 0; + my $mat = ""; + my $a = ""; + my @a = (); + + &testForTextFilePresence( $in ); + + open( GRP, "<$in" ) || &dieWithUnexpectedError( "Cannot open file \"$in\"" ); + while( ) { + if ( $_ =~ /^\s*\d+\s+\d+\s*$/ ) { + $counter++; + } + } + close( GRP ); + + $l = `cat $in | wc -l`; + $slen = $l / $counter; + + system( "split -$slen $in $in.splt." ) + && &dieWithUnexpectedError( "Could not execute \"split -$slen $in $in.splt.\"" ); + + @a = <$in.splt.*>; + + $mat = setModelForPuzzle( $matrix_option ); + + foreach $a ( @a ) { + + system( "$PUZZLE_DQO $a >/dev/null 2>&1 << !$mat +y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$PUZZLE_DQO $a\"" ); + + system( "cat $a.dist >> $in.dist" ) + && &dieWithUnexpectedError( "Could not execute \"cat outdist >> $in.dist\"" ); + + unlink( $a, $a.".dist" ); + } + + return; + +} ## executePuzzleDQObootstrapped + + + +# Transfers a Pfam (SELEX) alignment to a +# PHYLIP sequential style alignment. +# It only writes "match columns" as indicated by the +# "# RF" line ('x' means match). +# +# Three arguments: +# 1. infile name +# 2. outfile name +# 3. 1 to NOT ensure that match states contain only 'A'-'Z' or '-' +# +# Returns the number of match states (=length of output alignment), +# the length of the input alignment, +# the number of seqs in the input alignment +# +# Last modified: 07/07/01 +# +sub pfam2phylipMatchOnly { + + my $infile = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $ne = $_[ 2 ]; + my @seq_name = (); + my @seq_array = (); + my $return_line = ""; + my $seq = ""; + my $x = 0; + my $y = 0; + my $i = 0; + my $x_offset = 0; + my $max_x = 0; + my $rf_y = 0; + my $number_colum = 0; + my $not_ensure = 0; + my $saw_rf_line = 0; + + if ( $ne && $ne == 1 ) { + $not_ensure = 1; + } + + &testForTextFilePresence( $infile ); + + open( INPP, "$infile" ) || &dieWithUnexpectedError( "Cannot open file \"$infile\"" ); + + # This reads in the first block. It reads in the seq names. + while ( 1 ) { + if ( &isPfamSequenceLine( $return_line ) ) { + $return_line =~ /^(\S+)\s+(\S+)/; + $seq_name[ $y ] = substr( $1, 0, $LENGTH_OF_NAME ); + $seq = $2; + for ( $x = 0; $x < length( $seq ); $x++ ) { + $seq_array[ $x ][ $y ] = substr( $seq, $x, 1 ); + } + $y++; + } + elsif ( &isRFline( $return_line ) ) { + $saw_rf_line = 1; + $return_line =~ /\s+(\S+)\s*$/; + $seq = $1; + $x_offset = length( $seq ); + $rf_y = $y; + for ( $x = 0; $x < $x_offset; $x++ ) { + $seq_array[ $x ][ $rf_y ] = substr( $seq, $x, 1 ); + } + last; + } + + $return_line = ; + + if ( !$return_line ) { + &dieWithUnexpectedError( "Alignment not in expected format (no RF line)" ); + } + } + + if ( $saw_rf_line != 1 ) { + &dieWithUnexpectedError( "Alignment not in expected format (no RF line)" ); + } + + $y = 0; + $max_x = 0; + + # This reads all blocks after the 1st one. + while ( $return_line = ) { + if ( &isPfamSequenceLine( $return_line ) ) { + $return_line =~ /^\S+\s+(\S+)/; + $seq = $1; + for ( $x = 0; $x < length( $seq ); $x++ ) { + $seq_array[ $x + $x_offset ][ $y % $rf_y ] = substr( $seq, $x, 1 ); + } + $y++; + } + elsif ( &isRFline( $return_line ) ) { + if ( $y != $rf_y ) { + &dieWithUnexpectedError( "Alignment not in expected format" ); + } + + $return_line =~ /\s+(\S+)\s*$/; + $seq = $1; + $max_x = length( $seq ); + + for ( $x = 0; $x < length( $seq ); $x++ ) { + $seq_array[ $x + $x_offset ][ $rf_y ] = substr( $seq, $x, 1 ); + } + + $y = 0; + $x_offset = $x_offset + $max_x; + $max_x = 0; + } + } + + close( INPP ); + + # Counts the match states, and hence the number of aa in the alignment: + for ( $x = 0; $x < $x_offset; $x++ ) { + if ( !$seq_array[ $x ][ $rf_y ] ) { + &dieWithUnexpectedError( "Alignment not in expected format" ); + } + if ( $seq_array[ $x ][ $rf_y ] eq 'x' ) { + $number_colum++; + } + } + + # Writes the file: + + open( OUTPP, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + print OUTPP "$rf_y $number_colum\n"; + for ( $y = 0; $y < $rf_y; $y++ ) { + print OUTPP "$seq_name[ $y ]"; + for ( $i = 0; $i < ( $LENGTH_OF_NAME - length( $seq_name[ $y ] ) ); $i++ ) { + print OUTPP " "; + } + for ( $x = 0; $x < $x_offset; $x++ ) { + if ( $seq_array[ $x ][ $rf_y ] eq 'x' ) { + if ( !$seq_array[ $x ][ $y ] ) { + &dieWithUnexpectedError( "Alignment not in expected format" ); + } + if ( $not_ensure != 1 && $seq_array[ $x ][ $y ] !~ /[A-Z]|-/ ) { + &dieWithUnexpectedError( "Alignment not in expected format (match states must only contain 'A'-'Z' or '-')" ); + } + print OUTPP "$seq_array[ $x ][ $y ]"; + } + } + print OUTPP "\n"; + } + close( OUTPP ); + + return $number_colum, $x_offset, $rf_y; + +} ## pfam2phylipMatchOnly + + + +# Returns whether the argument (a String) +# starts with a SWISS-PROT name (SEQN_SPECI). +# Last modified: 06/21/01 +sub startsWithSWISS_PROTname { + return ( $_[ 0 ] =~ /^[A-Z0-9]{1,4}_[A-Z0-9]{1,5}/ ); +} + + + +# Returns whether the argument starts with XXX.. XXXXX.. and the first +# character is not a "#". +# Last modified: 06/21/01 +sub isPfamSequenceLine { + return( !&isPfamCommentLine( $_[ 0 ] ) + && &containsPfamNamedSequence( $_[ 0 ] ) ); +} + + + +# Returns whether the argument does start with a "#". +# Last modified: 06/21/01 +sub isPfamCommentLine { + return ( $_[ 0 ] =~ /^#/ ); +} + + + +# Returns whether the argument starts with XXX XXXXX. +# Last modified: 06/21/01 +sub containsPfamNamedSequence { + return ( $_[ 0 ] =~ /^\S+\s+\S+/ ); +} + + +# Returns whether the argument starts with XXX XXXXX. +# Last modified: 06/21/01 +sub isRFline { + return ( $_[ 0 ] =~ /^#.*RF/ ); +} + + + + +# Five arguments: +# 1. pairwise distance file +# 2. number of bootstraps +# 3. randomize_input_order: 0: do not randomize input order; >=1 jumble +# 4. seed for random number generator +# 5. lower-triangular data matrix? 1: yes; no, otherwise +# Last modified: 06/08/01 +sub executeNeighbor { + my $inpwd = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $rand = $_[ 2 ]; + my $s = $_[ 3 ]; + my $l = $_[ 4 ]; + my $jumble = ""; + my $multi = ""; + my $lower = ""; + + + &testForTextFilePresence( $inpwd ); + + if ( $rand >= 1 ) { + $jumble = " +J +$s"; + } + + if ( $bs >= 2 ) { + $multi = " +M +$bs +$s"; + } + if ( $l == 1 ) { + $lower = " +L"; + } + + + system( "$NEIGHBOR >/dev/null 2>&1 << ! +$inpwd$jumble$multi$lower +2 +3 +Y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$NEIGHBOR $inpwd$jumble$multi$lower\"" ); + # 3: Do NOT print out tree + + + return; + +} ## executeNeighbor + + + +# Four arguments: +# 1. name of alignment file (in correct format!) +# 2. number of bootstraps +# 3. jumbles: 0: do not jumble; >=1 number of jumbles +# 4. seed for random number generator +# Last modified: 03/13/04 +sub executeProtpars { + my $alin = $_[ 0 ]; + my $bs = $_[ 1 ]; + my $rand = $_[ 2 ]; + my $s = $_[ 3 ]; + my $jumble = ""; + my $multi = ""; + + + &testForTextFilePresence( $alin ); + + if ( $bs >= 2 && $rand < 1 ) { + $rand = 1; + } + + if ( $rand >= 1 ) { + $jumble = " +J +$s +$rand"; + } + + if ( $bs >= 2 ) { + $multi = " +M +D +$bs"; + } + + + + system( "$PROTPARS 2>&1 << ! +$alin$jumble$multi +I +3 +Y +!" ) + && &dieWithUnexpectedError( "Could not execute \"$PROTPARS $alin$jumble$multi\"" ); + # 3: Do NOT print out tree + # I: Interleaved + + return; + +} ## executeProtpars + + + +# "Model of substitution" order for DQO TREE-PUZZLE 5.0: +# Auto +# m -> Dayhoff (Dayhoff et al. 1978) +# m -> JTT (Jones et al. 1992) +# m -> mtREV24 (Adachi-Hasegawa 1996) +# m -> BLOSUM62 (Henikoff-Henikoff 92) +# m -> VT (Mueller-Vingron 2000) +# m -> WAG (Whelan-Goldman 2000) +# m -> Auto +# One argument: +# matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# Last modified: 07/07/01 +sub setModelForPuzzle { + my $matrix_option = $_[ 0 ]; + my $matr = ""; + + if ( $matrix_option == 0 ) { # JTT + $matr = " +m +m"; + } + elsif ( $matrix_option == 2 ) { # BLOSUM 62 + $matr = " +m +m +m +m"; + } + elsif ( $matrix_option == 3 ) { # mtREV24 + $matr = " +m +m +m"; + } + elsif ( $matrix_option == 5 ) { # VT + $matr = " +m +m +m +m +m"; + } + elsif ( $matrix_option == 6 ) { # WAG + $matr = " +m +m +m +m +m +m"; + } + elsif ( $matrix_option == 7 ) { # auto + $matr = ""; + } + else { # PAM + $matr = " +m" + } + + return $matr; + +} ## setModelForPuzzle + +# One argument: +# Model of rate heterogeneity: +# 1 for "8 Gamma distributed rates" +# 2 for "Two rates (1 invariable + 1 variable)" +# 3 for "Mixed (1 invariable + 8 Gamma rates)" +# otherwise: Uniform rate +# Last modified: 09/08/03 +sub setRateHeterogeneityOptionForPuzzle { + my $rate_heterogeneity_option = $_[ 0 ]; + my $opt = ""; + + if ( $rate_heterogeneity_option == 1 ) { + $opt = " +w"; + } + elsif ( $rate_heterogeneity_option == 2 ) { + $opt = " +w +w"; + } + elsif ( $rate_heterogeneity_option == 3 ) { + $opt = " +w +w +w"; + } + else { + $opt = ""; + } + + return $opt; +} ## setRateHeterogeneityOptionForPuzzle + + +# One argument: +# Parameter estimates: 1 for "Exact (slow)"; "Approximate (faster)" otherwise +# Last modified: 09/08/03 +sub setParameterEstimatesOptionForPuzzle { + my $parameter_estimates_option = $_[ 0 ]; + my $opt = ""; + + if ( $parameter_estimates_option == 1 ) { + $opt = " +e"; + } + else { + $opt = ""; + } + + return $opt; +} ## setParameterEstimatesOptionForPuzzle + + + +# Two/three/four arguments: +# 1. Name of inputfile +# 2. matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# 3. Parameter estimates: 1 for "Exact (slow)"; "Approximate (faster)" otherwise +# 4. Model of rate heterogeneity: +# 1 for "8 Gamma distributed rates" +# 2 for "Two rates (1 invariable + 1 variable)" +# 3 for "Mixed (1 invariable + 8 Gamma rates)" +# otherwise: Uniform rate +# Last modified: 09/08/03 (added 3rd and 4th parameter) +sub executePuzzleBootstrapped { + my $in = $_[ 0 ]; + my $matrix_option = $_[ 1 ]; + my $parameter_estimates_option = $_[ 2 ]; + my $rate_heterogeneity_option = $_[ 3 ]; + + my $l = 0; + my $slen = 0; + my $counter = 0; + my $mat = ""; + my $est = ""; + my $rate = ""; + my $a = ""; + my @a = (); + + &testForTextFilePresence( $in ); + + open( GRP, "<$in" ) || die "\n\n$0: Unexpected error: Cannot open file <<$in>>: $!"; + while( ) { + if ( $_ =~ /^\s*\d+\s+\d+\s*$/ ) { + $counter++; + } + } + close( GRP ); + + $l = `cat $in | wc -l`; + $slen = $l / $counter; + + system( "split -$slen $in $in.splt." ) + && die "\n\n$0: executePuzzleDQObootstrapped: Could not execute \"split -$slen $in $in.splt.\": $!"; + + @a = <$in.splt.*>; + + $mat = setModelForPuzzle( $matrix_option ); + if ( $parameter_estimates_option ) { + $est = &setParameterEstimatesOptionForPuzzle( $parameter_estimates_option ); + } + if ( $rate_heterogeneity_option ) { + $rate = &setRateHeterogeneityOptionForPuzzle( $rate_heterogeneity_option ); + } + + foreach $a ( @a ) { + print "-".$a."\n"; + system( "$PUZZLE $a << ! +k +k$mat$est$rate +y +!" ) + && die "$0: Could not execute \"$PUZZLE $a\""; + + system( "cat $a.dist >> $in.dist" ) + && die "$0: Could not execute \"cat outdist >> $in.dist\""; + + unlink( $a, $a.".dist", $a.".tree" ); + } + + return; + +} ## executePuzzleBootstrapped + + + + + +# Two/three/four arguments: +# 1. Name of inputfile +# 2. Matrix option: 0 = JTT; 2 = BLOSUM 62; 3 = mtREV24; +# 5 = VT; 6 = WAG; 7 = auto; PAM otherwise +# 3. Parameter estimates: 1 for "Exact (slow)"; "Approximate (faster)" otherwise +# 4. Model of rate heterogeneity: +# 1 for "8 Gamma distributed rates" +# 2 for "Two rates (1 invariable + 1 variable)" +# 3 for "Mixed (1 invariable + 8 Gamma rates)" +# otherwise: Uniform rate +# Last modified: 09/08/03 (added 3rd and 4th parameter) +sub executePuzzle { + my $in = $_[ 0 ]; + my $matrix_option = $_[ 1 ]; + my $parameter_estimates_option = $_[ 2 ]; + my $rate_heterogeneity_option = $_[ 3 ]; + my $mat = ""; + my $est = ""; + my $rate = ""; + + &testForTextFilePresence( $in ); + + $mat = &setModelForPuzzle( $matrix_option ); + if ( $parameter_estimates_option ) { + $est = &setParameterEstimatesOptionForPuzzle( $parameter_estimates_option ); + } + if ( $rate_heterogeneity_option ) { + $rate = &setRateHeterogeneityOptionForPuzzle( $rate_heterogeneity_option ); + } + + + system( "$PUZZLE $in << ! +k +k$mat$est$rate +y +!" ) + && die "$0: Could not execute \"$PUZZLE\""; + + return; + +} ## executePuzzle + + + + +# Preparation of the pwd file +sub addDistsToQueryToPWDfile { + my $pwd_file = $_[ 0 ]; + my $disttoquery_file = $_[ 1 ]; + my $outfile = $_[ 2 ]; + my $name_of_query = $_[ 3 ]; + my $name_of_query_ = ""; + my $return_line_pwd = ""; + my $return_line_dq = ""; + my $num_of_sqs = 0; + my $block = 0; + my $name_from_pwd = "X"; + my $name_from_dq = "Y"; + my @dists_to_query = (); + my $i = 0; + + &testForTextFilePresence( $pwd_file ); + &testForTextFilePresence( $disttoquery_file ); + + $name_of_query_ = $name_of_query; + for ( my $j = 0; $j <= ( $LENGTH_OF_NAME - length( $name_of_query ) - 1 ); ++$j ) { + $name_of_query_ .= " "; + } + + open( OUT_AD, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + open( IN_PWD, "$pwd_file" ) || &dieWithUnexpectedError( "Cannot open file \"$pwd_file\"" ); + open( IN_DQ, "$disttoquery_file" ) || &dieWithUnexpectedError( "Cannot open file \"$disttoquery_file\"" ); + + W: while ( $return_line_pwd = ) { + + + if ( $return_line_pwd =~ /^\s*(\d+)\s*$/ ) { + $num_of_sqs = $1; + $num_of_sqs++; + if ( $block > 0 ) { + print OUT_AD "$name_of_query_ "; + for ( my $j = 0; $j < $i; ++$j ) { + print OUT_AD "$dists_to_query[ $j ] "; + } + print OUT_AD "0.0\n"; + } + print OUT_AD " $num_of_sqs\n"; + $block++; + @dists_to_query = (); + $i = 0; + } + + if ( $block == 1 + && $return_line_pwd =~ /^\s*(\S+)\s+\S+/ ) { + $name_from_pwd = $1; + + if ( !defined( $return_line_dq = ) ) { + &dieWithUnexpectedError( "\"$disttoquery_file\" seems too short" ); + } + + if ( $return_line_dq !~ /\S/ ) { + if ( !defined( $return_line_dq = ) ) { + &dieWithUnexpectedError( "\"$disttoquery_file\" seems too short" ); + } + } + $return_line_dq =~ /^\s*(\S+)\s+(\S+)/; + $name_from_dq = $1; + $dists_to_query[ $i++ ] = $2; + + + if ( $name_from_pwd ne $name_from_dq ) { + &dieWithUnexpectedError( "Order of sequence names in \"$pwd_file\" and \"$disttoquery_file\" is not the same" ); + } + print OUT_AD $return_line_pwd; + + } + elsif ( $block > 1 + && $return_line_pwd =~ /^\s*(\S+)\s+\S+/ ) { + $name_from_pwd = $1; + if ( !defined( $return_line_dq = ) ) { + &dieWithUnexpectedError( "\"$disttoquery_file\" seems too short" ); + } + if ( $return_line_dq !~ /\S/ ) { + if ( !defined( $return_line_dq = ) ) { + &dieWithUnexpectedError( "\"$disttoquery_file\" seems too short" ); + } + } + $return_line_dq =~ /^\s*\S+\s+(\S+)/; + $dists_to_query[ $i++ ] = $1; + print OUT_AD $return_line_pwd; + } + } + print OUT_AD "$name_of_query_ "; + for ( my $j = 0; $j < $i; ++$j ) { + print OUT_AD "$dists_to_query[ $j ] "; + } + print OUT_AD "0.0\n"; + + close( OUT_AD ); + close( IN_PWD ); + close( IN_DQ ); + return $block; + +} ## addDistsToQueryToPWDfile + + + + +# Three arguments: +# 1. HMMER model db +# 2. name of HMM +# 3. outputfile name +# Last modified: 02/27/01 +sub executeHmmfetch { + + my $db = $_[ 0 ]; + my $name = $_[ 1 ]; + my $outfile = $_[ 2 ]; + + system( "$HMMFETCH $db $name > $outfile" ) + && &dieWithUnexpectedError( "Could not execute \"$HMMFETCH $db $name > $outfile\"" ); + return; + +} ## executeHmmfetch + + + +# Checks wether a file is present, not empty and a plain textfile. +# One argument: name of file. +# Last modified: 07/07/01 +sub testForTextFilePresence { + my $file = $_[ 0 ]; + unless ( ( -s $file ) && ( -f $file ) && ( -T $file ) ) { + dieWithUnexpectedError( "File \"$file\" does not exist, is empty, or is not a plain textfile" ); + } +} ## testForTextFilePresence + + +# Last modified: 02/21/03 +sub addSlashAtEndIfNotPresent { + my $filename = $_[ 0 ]; + $filename =~ s/\s+//g; + unless ( $filename =~ /\/$/ ) { + $filename = $filename."/"; + } + return $filename; +} ## addSlashAtEndIfNotPresent + + + +# Last modified: 02/15/02 +sub exitWithWarning { + + my $text = $_[ 0 ]; + if ( defined( $_[ 1 ] ) && $_[ 1 ] == 1 ) { + print( "

    user error

    \n" ); + print( "

    \n" ); + print( "$text\n" ); + print( "

    \n" ); + print( "

     

    \n" ); + } + else { + print( "\n\n$text\n\n" ); + } + + exit( 0 ); + +} ## exit_with_warning + + + +# Last modified: 02/15/02 +sub dieWithUnexpectedError { + + my $text = $_[ 0 ]; + + die( "\n\n$0:\nUnexpected error (should not have happened):\n$text\n$!\n\n" ); + +} ## dieWithUnexpectedError + + + +1; diff --git a/forester/archive/perl/rio_slave.pl b/forester/archive/perl/rio_slave.pl new file mode 100755 index 0000000..94a0e56 --- /dev/null +++ b/forester/archive/perl/rio_slave.pl @@ -0,0 +1,160 @@ +#!/usr/bin/perl -W + +# rio_slave.pl +# ------------ +# +# Copyright (C) 2002 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Created: 01/18/02 +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified: 02/20/02 + + +# Arguments: + +# 0: first block in multiple alignment to process +# 1: last block in multiple alignment to process +# 2: name of resampled alignment, inc. query +# 3: matrix number +# 4: name of query +# 5: PWD file +# 6: seed for random number generator for neighbor +# 7: node number +# 8: temp dir + + +use strict; + +use FindBin; +use lib $FindBin::Bin; +use rio_module; + +if ( @ARGV != 9 ) { + &dieWithUnexpectedError( "argument count is off" ); +} + +my $start = $ARGV[ 0 ]; +my $end = $ARGV[ 1 ]; +my $align = $ARGV[ 2 ]; +my $matrix_n = $ARGV[ 3 ]; +my $name = $ARGV[ 4 ]; +my $pwd_file = $ARGV[ 5 ]; +my $seed = $ARGV[ 6 ]; +my $number = $ARGV[ 7 ]; +my $temp_dir = $ARGV[ 8 ]; + +my $b = 0; +my $outfile = ""; +my $mytemp_dir = $temp_dir."/dir_".$number; + +mkdir( $mytemp_dir, 0700 ) +|| &dieWithUnexpectedError( "Could not create \"$mytemp_dir\"" ); + +unless ( ( -e $mytemp_dir ) && ( -d $mytemp_dir ) ) { + &dieWithUnexpectedError( "\"$mytemp_dir\" does not exist, or is not a directory" ); +} + + +&executePuzzleDQObootstrapped( $align, $matrix_n ); + +system( "mv", $align.".dist", $mytemp_dir."/DISTs_TO_QUERY" ) +&& &dieWithUnexpectedError( "could not mv" ); + +unlink( $align ); + +sleep( 2 ); + +÷PWDfile( $pwd_file, + $mytemp_dir."/DIVIDED", + $start, + $end ); + +&addDistsToQueryToPWDfile( $mytemp_dir."/DIVIDED", + $mytemp_dir."/DISTs_TO_QUERY", + $mytemp_dir."/PWD_INC_QUERY", + $name ); + +unlink( $mytemp_dir."/DIVIDED" ); + +$b = $end - $start + 1; + +chdir ( $mytemp_dir ) +|| &dieWithUnexpectedError( "Could not chdir to \"$mytemp_dir\"" ); + +&executeNeighbor( $mytemp_dir."/PWD_INC_QUERY", + $b, + 1, # randomize input order + $seed, + 1 ); # lower-triangular data matrix + + +unlink( "outfile", $mytemp_dir."/PWD_INC_QUERY", $mytemp_dir."/DISTs_TO_QUERY" ); + +system( "mv", "outtree", "../MAKETREEOUT".$MULTIPLE_TREES_FILE_SUFFIX.$number ) +&& &dieWithUnexpectedError( "could not mv" ); + +sleep( 1 ); + +chdir( ".." ) +|| &dieWithUnexpectedError( "Could not chdir to \"..\"" ); + +rmdir( $mytemp_dir ) || &dieWithUnexpectedError( "Could not delete \"$mytemp_dir\"" ); + +$outfile = "FINISHED_$number"; + +open( OUT, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); +close( OUT ); + +exit( 0 ); + + + + +sub dividePWDfile { + my $pwd_file = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $start = $_[ 2 ]; # e.g. 0 + my $end = $_[ 3 ]; # e.g. 9 + + my $c = 0; + my $write = 0; + my $return_line = ""; + + &testForTextFilePresence( $pwd_file ); + + open( IN_PWD, "$pwd_file" ) || &dieWithUnexpectedError( "Cannot open file \"$pwd_file\"" ); + open( OUT_PWD, ">$outfile" ) || &dieWithUnexpectedError( "Cannot create file \"$outfile\"" ); + + while ( $return_line = ) { + if ( $return_line =~ /^\s*(\d+)\s*$/ ) { + if ( $c >= $start && $c <= $end ) { + $write = 1; + } + elsif ( $c > $end ) { + last; + } + $c++; + } + if ( $write == 1 ) { + print OUT_PWD $return_line; + } + } + + close( IN_PWD ); + close( OUT_PWD ); + + return; + +} ## dividePWDfile + + + + + + + diff --git a/forester/archive/perl/rio_slave_driver.pl b/forester/archive/perl/rio_slave_driver.pl new file mode 100755 index 0000000..3e82e4e --- /dev/null +++ b/forester/archive/perl/rio_slave_driver.pl @@ -0,0 +1,108 @@ +#!/usr/bin/perl -W + +# rio_slave_driver.pl +# ------------------- +# +# Copyright (C) 2002 Washington University School of Medicine +# and Howard Hughes Medical Institute +# All rights reserved +# +# Created: 01/18/02 +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Last modified: 02/20/02 + + +# 0: block size +# 1: number of blocks which have a size of block size + 1 +# 2: name of resampled alignment, inc. query +# 3: matrix number +# 4: name of query +# 5: PWD file +# 6: temp dir +# 7: seed for random number generator for neighbor +# 8...: list of node names + + + + +use strict; + +use FindBin; +use lib $FindBin::Bin; +use rio_module; + +if ( @ARGV < 9 ) { + &dieWithUnexpectedError( "argumnet count off" ); +} + + +my $block_size = shift( @ARGV ); +my $larger_blocks = shift( @ARGV ); +my $align = shift( @ARGV ); +my $matrix_n = shift( @ARGV ); +my $name = shift( @ARGV ); +my $pwd_file = shift( @ARGV ); +my $temp_dir = shift( @ARGV ); +my $seed = shift( @ARGV ); +my @nodelist = @ARGV; +my $start = 0; +my $end = 0; +my $x = 0; +my $node = ""; + + +$start = 0; + +if ( $larger_blocks > 0 ) { + $end = $block_size; +} +else { + $end = $block_size - 1; +} + +for ( $x = 0; $x < scalar( @nodelist ); $x++ ) { + my $child_pid; + $node = $nodelist[ $x ]; + + if ( !defined( $child_pid = fork() ) ) { + &dieWithUnexpectedError( "cannot fork" ); + } + elsif ( $child_pid ) { + # I'm the parent, forking off $nodelist number of children + } + else { + exec( "ssh", + $node, + "/usr/bin/perl", + $RIO_SLAVE, + $start, + $end, + $align.$x, + $matrix_n, + $name, + $pwd_file, + $seed, + $x, + $temp_dir ) + || &dieWithUnexpectedError( "could not \"exec ssh $node /usr/bin/perl $RIO_SLAVE\"" ); + + } + $larger_blocks--; + if ( $larger_blocks > 0 ) { + $start += ( $block_size + 1 ); + $end += ( $block_size + 1 ); + } + elsif ( $larger_blocks == 0 ) { + $start += ( $block_size + 1 ); + $end += $block_size; + } + else { + $start += $block_size; + $end += $block_size; + } +} + +exit( 0 ); diff --git a/forester/archive/perl/xt.pl b/forester/archive/perl/xt.pl new file mode 100755 index 0000000..4fc5da3 --- /dev/null +++ b/forester/archive/perl/xt.pl @@ -0,0 +1,640 @@ +#!/usr/bin/perl -W + +# xt.pl +# ----- +# +# Copyright (C) 2003 Christian M. Zmasek +# All rights reserved +# +# Author: Christian M. Zmasek +# zmasek@genetics.wustl.edu +# http://www.genetics.wustl.edu/eddy/people/zmasek/ +# +# Version: 1.010 +# Last modified 03/25/03 +# +# +# +# Calculates trees based on Pfam alignments or precalculated distances using +# makeTree.pl. + + +use strict; +use FindBin; +use lib $FindBin::Bin; +use rio_module; + + +# To use _your_ species list make $MY_SPECIES_NAMES_FILE point to it. +# To use _your_ TrEMBL ACDEOS make $MY_TREMBL_ACDEOS_FILE point to it. + +my $MY_SPECIES_NAMES_FILE = $SPECIES_NAMES_FILE; # $SPECIES_NAMES_FILE is inherited + # from rio_module.pm + +my $MY_TREMBL_ACDEOS_FILE = $TREMBL_ACDEOS_FILE; # $TREMBL_ACDEOS_FILE is inherited + # from rio_module.pm + +my $MY_TEMP_DIR = $TEMP_DIR_DEFAULT; # $TEMP_DIR_DEFAULT is inherited + # from rio_module.pm + +my $LOGFILE = "00_xt_logfile"; +my $PWD_SUFFIX = ".pwd"; +my $ALN_SUFFIX = ".aln"; + +my $use_precalc_pwd = 0; # 0: input is Pfam aligments ($input_dir must point to "/Pfam/Full/"). + # 1: input is precalculated pairwise distancs ($input_dir must point to ""). +my $use_precalc_pwd_and_aln = 0;# 0: otherwise + # 1: input is precalculated pairwise distancs + # _and_ alns,$use_precalc_pwd = 1 ($input_dir must point to alns). +my $add_species = 0; # "I": 0: do nothing with species information. + # "S": 1: add species code to TrEMBL sequences and ignore sequences from + # species not in $MY_SPECIES_NAMES_FILE (only if input is Pfam aligments). +my $options = ""; # Options for makeTree.pl, see makeTree.pl. + # Do not use F [Pairwise distance (pwd) file as input (instead of alignment)] + # since this is determined with $USE_PRECALC_PWD +my $min_seqs = 0; # Minimal number of sequences (TREE-PUZZLE needs at least four seqs). + # Ignored if $USE_PRECALC_PWD = 1 +my $max_seqs = 0; # Maximal number of sequences. + # Ignored if $USE_PRECALC_PWD = 1 +my $input_dir = ""; +my $input_dir_aln = ""; # for .aln files +my $output_dir = ""; + +my $i = 0; +my $seqs = 0; +my $filename = ""; +my @filenames = (); +my %AC_OS = (); # AC -> species name +my %Species_names_hash = (); +my $too_small = 0; +my $too_large = 0; +my $already_present = 0; +my @too_small_names = (); +my @too_large_names = (); +my @already_present_names = (); + + +# Analyzes the options: +# --------------------- + +unless ( @ARGV == 3 || @ARGV == 4 || @ARGV == 6 ) { + &printUsage(); +} + +if ( @ARGV == 3 ) { + $use_precalc_pwd = 1; + $use_precalc_pwd_and_aln = 0; + $options = $ARGV[ 0 ]; + $input_dir = $ARGV[ 1 ]; + $output_dir = $ARGV[ 2 ]; + $add_species = 0; +} +elsif ( @ARGV == 4 ) { + $use_precalc_pwd = 1; + $use_precalc_pwd_and_aln = 1; + $options = $ARGV[ 0 ]; + $input_dir = $ARGV[ 1 ]; + $input_dir_aln = $ARGV[ 2 ]; + $output_dir = $ARGV[ 3 ]; + $add_species = 0; + $input_dir_aln = &addSlashAtEndIfNotPresent( $input_dir_aln ); +} +else { + $use_precalc_pwd = 0; + $use_precalc_pwd_and_aln = 0; + $add_species = $ARGV[ 0 ]; + $options = $ARGV[ 1 ]; + $min_seqs = $ARGV[ 2 ]; + $max_seqs = $ARGV[ 3 ]; + $input_dir = $ARGV[ 4 ]; + $output_dir = $ARGV[ 5 ]; + if ( $min_seqs < 4 ) { + $min_seqs = 4; + } + if ( $add_species eq "I" ) { + $add_species = 0; + } + elsif ( $add_species eq "S" ) { + $add_species = 1; + } + else { + print( "\nFirst must be either \"I\" [Ignore species] or\n\"S\" [add Species code to TrEMBL sequences and ignore sequences from species not in $MY_SPECIES_NAMES_FILE].\n\n" ); + &printUsage(); + } +} + + + +$input_dir = &addSlashAtEndIfNotPresent( $input_dir ); +$output_dir = &addSlashAtEndIfNotPresent( $output_dir ); +$MY_TEMP_DIR = &addSlashAtEndIfNotPresent( $MY_TEMP_DIR ); + + + + +# This adds a "-" before the options for makeTree: +# ------------------------------------------------ +unless ( $options =~ /^-/ ) { + $options = "-".$options; +} + + + +# If based on pwd, species are "fixed" and certain options for makeTree +# are not applicable and option "F" is mandatory: +# --------------------------------------------------------------------- +if ( $use_precalc_pwd == 1 ) { + $options =~ s/D//g; + $options =~ s/C//g; + $options =~ s/N//g; + unless ( $options =~ /F/ ) { + $options = $options."F"; + } +} +else { + $options =~ s/F//g; +} + +if ( $use_precalc_pwd_and_aln == 1 ) { + unless ( $options =~ /U/ ) { + $options = $options."U"; + } +} +if ( $use_precalc_pwd_and_aln == 0 && $use_precalc_pwd == 1 ) { + $options =~ s/U//g; +} + + + + +# If species are to be considered, speices names file and TrEMBL ACDEOS +# files need to be read in: +# --------------------------------------------------------------------- +if ( $add_species == 1 ) { + print "\nXT.PL: Reading species names file...\n"; + &readSpeciesNamesFile( $MY_SPECIES_NAMES_FILE ); + print "\nXT.PL: Reading TrEMBL ACDEOS file...\n"; + &readTrEMBL_ACDEOS_FILE( $MY_TREMBL_ACDEOS_FILE ); +} + + + +# This creates the temp file: +# -------------------------- + +my $time = time; +my $ii = 0; + +my $temp_file = $MY_TEMP_DIR."xt".$time.$ii; + +while ( -e $temp_file ) { + $ii++; + $temp_file = $MY_TEMP_DIR."xt".$time.$ii; +} + + + +&startLogfile(); + +opendir( DIR, $input_dir ) || error( "Cannot open directory \"$input_dir\": $!" ); + +$i = 0; + +while( defined( $filename = readdir( DIR ) ) ) { + if ( $filename =~ /^\.\.?$/ ) { + next; + } + if ( $use_precalc_pwd == 1 && $filename !~ /$PWD_SUFFIX$/ ) { + next + } + $filenames[ $i ] = $filename; + $i++; +} + +close( DIR ); + +$i = 0; + +FOREACH: foreach $filename ( @filenames ) { + + # If the corresponding tree seems to already exists, do next one. + my $fn = $filename; + if ( $use_precalc_pwd == 1 ) { + $fn =~ s/$PWD_SUFFIX$//; + } + if ( -e "$output_dir$fn.nhx" ) { + $already_present_names[ $already_present++ ] = $fn; + next FOREACH; + } + + if ( $use_precalc_pwd != 1 ) { + + if ( $add_species == 1 ) { + + # 1. Pfam flat file name + # 2. outfile name + # Returns the number of sequences in the resulting alignment. + $seqs = &removeSeqsFromPfamAlign( $input_dir.$filename, $temp_file ); + + } + else { + # Gets the number of seqs in the alignment. + open( F, "$input_dir"."$filename" ); + while( ) { + if ( $_ =~/^#.+SQ\s+(\d+)\s*$/ ) { + $seqs = $1; + last; + } + } + close( F ); + } + + if ( $seqs < $min_seqs ) { + $too_small_names[ $too_small++ ] = $filename; + next FOREACH; + } + if ( $seqs > $max_seqs ) { + $too_large_names [ $too_large++ ] = $filename; + next FOREACH; + } + } + + print "\n\n\n\n"; + print "XT.PL\n"; + if ( $use_precalc_pwd == 1 ) { + print "working on: $filename\n"; + } + else { + print "working on: $filename [$seqs seqs]\n"; + } + print "[tree calculation $i]\n"; + print "=====================================================================\n\n\n"; + + + unlink( "$output_dir$filename.aln", "$output_dir$filename.log" ); + + print( "XT.PL: executing:\n" ); + + my $inputfile = ""; + + if ( $add_species == 1 ) { + $inputfile = $temp_file; + } + else { + $inputfile = $input_dir.$filename; + } + + if ( $use_precalc_pwd == 1 ) { + $filename =~ s/$PWD_SUFFIX$//; + } + + if ( $use_precalc_pwd_and_aln == 1 ) { + $inputfile = $inputfile." ".$input_dir_aln.$filename.$ALN_SUFFIX; + } + + my $command = "$MAKETREE $options $inputfile $output_dir$filename.nhx"; + + print( "$command\n" ); + system( $command ) && &error( "Could not execute \"$command\"" ); + + if ( $add_species == 1 ) { + if ( unlink( $temp_file ) != 1 ) { + &error( "Unexpected: Could not delete \"$temp_file\"" ); + } + } + + $i++; + +} + +&finishLogfile(); + +print( "\n\n\nXT.PL: Done!\n" ); +print( "Wrote \"$LOGFILE\".\n\n" ); + +exit( 0 ); + + + + + + +sub error{ + + my $text = $_[ 0 ]; + + print( "\nxt.pl: ERROR:\n" ); + print( "$text\n\n" ); + + exit( -1 ); + +} ## dieWithUnexpectedError + +# Similar to the method with the same name in "rio.pl". +# Removes sequences from a Pfam flat file. +# Adds species to TrEMBL seqs. +# It can remove all sequences not from species listed in a species names file. +# Two arguments: +# 1. Pfam flat file name +# 2. outfile name +# Returns the number of sequences in the resulting alignment. +# Last modified: 02/22/03 +sub removeSeqsFromPfamAlign { + my $infile = $_[ 0 ]; + my $outfile = $_[ 1 ]; + my $return_line = ""; + my $saw_sequence_line = 0; + my $number_of_seqs = 0; + my $OS = ""; + my $AC = ""; + my $i = 0; + my $length = 0; + my $seq_name = ""; + my $seq = ""; + + + open( OUT_RNSP, ">$outfile" ) || die "\n\n$0: Unexpected error: Cannot create file \"$outfile\": $!"; + open( IN_RNSP, "$infile" ) || die "\n\n$0: Unexpected error: Cannot open file <<$infile>>: $!"; + while ( $return_line = ) { + + if ( $saw_sequence_line == 1 + && !&containsPfamNamedSequence( $return_line ) + && !&isPfamCommentLine( $return_line ) ) { + # This is just for counting purposes. + $saw_sequence_line = 2; + } + if ( &isPfamSequenceLine( $return_line ) ) { + if ( $saw_sequence_line == 0 ) { + $saw_sequence_line = 1; + } + $return_line =~ /^\s*(\S+)\s+(\S+)/; + $seq_name = $1; + $seq = $2; + if ( !&startsWithSWISS_PROTname( $return_line ) ) { + $seq_name =~ /^(\S+)\//; + $AC = $1; + unless( exists( $AC_OS{ $AC } ) ) { + #ACs not present in "ACDEOS" file. + next; + } + $OS = $AC_OS{ $AC }; + if ( !$OS || $OS eq "" ) { + die "\n\n$0: Unexpected error: species for \"$AC\" not found.\n\n"; + } + unless( exists( $Species_names_hash{ $OS } ) ) { + next; + } + $seq_name =~ s/\//_$OS\//; + } + else { + if ( $return_line =~ /_([A-Z0-9]{1,5})\// ) { + unless( exists( $Species_names_hash{ $1 } ) ) { + next; + } + } + # remove everything whose species cannot be determined. + else { + next; + } + } + $length = length( $seq_name ); + for ( $i = 0; $i <= ( $LENGTH_OF_NAME - $length - 1 ); $i++ ) { + $seq_name .= " "; + } + $return_line = $seq_name.$seq."\n"; + } + + if ( !&isPfamCommentLine( $return_line ) ) { + print OUT_RNSP $return_line; + } + + if ( $saw_sequence_line == 1 ) { + $number_of_seqs++; + } + } ## while ( $return_line = ) + close( IN_RNSP ); + close( OUT_RNSP ); + + return $number_of_seqs; + +} ## removeSeqsFromPfamAlign + + + + + + + +# Reads in (SWISS-PROT) species names from a file. +# Names must be separated by newlines. +# Lines beginning with "#" are ignored. +# A possible "=" and everything after is ignored. +# One argument: species-names-file name +# Last modified: 04/24/01 +sub readSpeciesNamesFile { + my $infile = $_[ 0 ]; + my $return_line = ""; + my $species = ""; + + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + die "\n\n$0: Error: \"$infile\" does not exist, is empty, or is not a plain textfile.\n\n"; + } + + open( IN_RSNF, "$infile" ) || die "\n\n$0: Unexpected error: Cannot open file <<$infile>>: $!\n\n"; + while ( $return_line = ) { + if ( $return_line !~ /^\s*#/ && $return_line =~ /(\S+)/ ) { + $species = $1; + $species =~ s/=.+//; + $Species_names_hash{ $species } = ""; + } + } + close( IN_RSNF ); + + return; +} ## readSpeciesNamesFile + + + +# Last modified: 05/18/01 +sub readTrEMBL_ACDEOS_FILE { + my $infile = $_[ 0 ]; + my $return_line = ""; + + unless ( ( -s $infile ) && ( -f $infile ) && ( -T $infile ) ) { + &error( "\"$infile\" does not exist, is empty, or is not a plain textfile" ); + } + # Fill up (huge) hashs. + open( HH, "$infile" ) || &error( "Unexpected error: Cannot open file \"$infile\"" ); + while ( $return_line = ) { + + if ( $return_line =~ /(\S+);[^;]*;(\S+)/ ) { + $AC_OS{ $1 } = $2; + } + } + close( HH ); +} ## readTrEMBL_ACDEOS_FILE + + + +# Last modified: 05/17/01 +sub startLogfile { + if ( -e "$LOGFILE" ) { + &error( "logfile \"$LOGFILE\" already exists, rename it or place it in another directory" ); + } + + open( L, ">$LOGFILE" ) || &error( "Cannot create logfile: $!" ); + if ( $use_precalc_pwd != 1 ) { + print L "Trees are based directly on Pfam alignments\n"; + if ( $add_species == 1 ) { + print L "Add species code to TrEMBL sequences and ignore sequences\nfrom species not in $MY_SPECIES_NAMES_FILE\n"; + } + else { + print L "Do nothing with species information\n"; + } + } + else { + print L "Trees are based on precalculated pairwise distances\n"; + } + if ( $use_precalc_pwd_and_aln == 1 ) { + print L "and the matching alignments\n"; + } + print L "Options for makeTree: $options\n"; + if ( $use_precalc_pwd != 1 ) { + print L "Min seqs : $min_seqs\n"; + print L "Max seqs : $max_seqs\n"; + } + if ( $add_species == 1 ) { + print L "TrEMBL ACDEOS file : $MY_TREMBL_ACDEOS_FILE\n"; + print L "Species names file : $MY_SPECIES_NAMES_FILE\n"; + } + print L "Input directory : $input_dir\n"; + if ( $use_precalc_pwd_and_aln == 1 ) { + print L "Input directory aln : $input_dir_aln\n"; + } + print L "Output directory : $output_dir\n"; + print L "Start date : ".`date`; + +} ## startLogfile + + + +# Last modified: 05/17/01 +sub finishLogfile { + my $j = 0; + print L "\n\n"; + print L "Successfully calculated $i trees.\n"; + if ( $use_precalc_pwd != 1 ) { + print L "Too large alignments (>$max_seqs): $too_large\n"; + print L "Too small alignments (<$min_seqs): $too_small\n"; + } + print L "Alignments for which a tree appears to already exist: $already_present\n"; + print L "Finish date : ".`date`."\n\n"; + if ( $use_precalc_pwd != 1 ) { + print L "List of the $too_large alignments which were ignored because they\n"; + print L "contained too many sequences (>$max_seqs) [after pruning]:\n"; + for ( $j = 0; $j < $too_large; ++$j ) { + print L "$too_large_names[ $j ]\n"; + } + print L "\n\n"; + print L "List of the $too_small alignments which were ignored because they\n"; + print L "contained not enough sequences (<$min_seqs) [after pruning]:\n"; + for ( $j = 0; $j < $too_small; ++$j ) { + print L "$too_small_names[ $j ]\n"; + } + } + print L "\n\n"; + print L "List of the $already_present alignments which were ignored because\n"; + print L "a tree appears to already exist:\n"; + for ( $j = 0; $j < $already_present; ++$j ) { + print L "$already_present_names[ $j ]\n"; + } + print L "\n"; + close( L ); +} ## finishLogfile + + +sub printUsage { + print "\n"; + print " xt.pl\n"; + print " _____\n"; + print " \n"; + print " Copyright (C) 2003 Christian M. Zmasek\n"; + print " All rights reserved\n"; + print "\n"; + print " Author: Christian M. Zmasek\n"; + print " zmasek\@genetics.wustl.edu\n"; + print " http://www.genetics.wustl.edu/eddy/forester/\n"; + print "\n"; + print "\n"; + print " Purpose\n"; + print " -------\n"; + print "\n"; + print " Tree construction using makeTree.pl based on directories\n"; + print " of Pfam alignments or precalculated pairwise distances.\n"; + print "\n"; + print "\n"; + print " Usage\n"; + print " -----\n"; + print "\n"; + print " Input is Pfam aligments:\n"; + print " xt.pl \n"; + print " \n"; + print "\n"; + print " Input is precalculated pairwise distancs:\n"; + print " xt.pl \n"; + print "\n"; + print " Input is precalculated pairwise distancs and corresponding alignment files:\n"; + print " xt.pl \n"; + print " \n"; + print "\n"; + print "\n"; + print " Examples\n"; + print " --------\n"; + print "\n"; + print " \"xt.pl S NS21UTRB100DX 4 200 DB/PFAM/Full/ trees/\"\n"; + print "\n"; + print " \"xt.pl FLB100R /pfam2pwd_out/ trees/\"\n"; + print "\n"; + print " \"xt.pl FULB100R /pfam2pwd_out/ /pfam2pwd_out/ trees/\"\n"; + print "\n"; + print "\n"; + print " Options\n"; + print " -------\n"; + print "\n"; + print " I: ignore species information (use all sequences)\n"; + print " S: add species codes to TrEMBL sequences and ignore sequences\n"; + print " from species not in $MY_SPECIES_NAMES_FILE,\n"; + print " species codes are extracted from $MY_TREMBL_ACDEOS_FILE\n"; + print "\n"; + print "\n"; + print " Options for makeTree\n"; + print " --------------------\n"; + print "\n"; + print " N : Suggestion to remove columns in the alignment which contain gaps.\n"; + print " Gaps are not removed, if, after removal of gaps, the resulting\n"; + print " alignment would be shorter than $MIN_NUMBER_OF_AA aa (\$MIN_NUMBER_OF_AA).\n"; + print " Default is not to remove gaps.\n"; + print " Bx : Number of bootstrapps. B0: do not bootstrap. Default: 100 bootstrapps.\n"; + print " The number of bootstrapps should be divisible by 10.\n"; + print " U : Use TREE-PUZZLE to calculate ML branchlengths for consesus tree, in case of\n"; + print " bootstrapped analysis.\n"; + print " J : Use JTT matrix (Jones et al. 1992) in TREE-PUZZLE, default: PAM.\n"; + print " L : Use BLOSUM 62 matrix (Henikoff-Henikoff 92) in TREE-PUZZLE, default: PAM.\n"; + print " M : Use mtREV24 matrix (Adachi-Hasegawa 1996) in TREE-PUZZLE, default: PAM.\n"; + print " W : Use WAG matrix (Whelan-Goldman 2000) in TREE-PUZZLE, default: PAM.\n"; + print " T : Use VT matrix (Mueller-Vingron 2000) in TREE-PUZZLE, default: PAM.\n"; + print " P : Let TREE-PUZZLE choose which matrix to use, default: PAM.\n"; + print " R : Randomize input order in PHYLIP NEIGHBOR.\n"; + print " Sx : Seed for random number generator(s). Must be 4n+1. Default is 9.\n"; + print " X : To keep multiple tree file (=trees from bootstrap resampled alignments).\n"; + print " D : To keep (and create, in case of bootstrap analysis) pairwise distance\n"; + print " matrix file. This is created form the not resampled aligment.\n"; + print " C : Calculate pairwise distances only (no tree). Bootstrap is always 1.\n"; + print " No other files are generated.\n"; + print " F : Pairwise distance (pwd) file as input (instead of alignment).\n"; + print " No -D, -C, and -N options available in this case.\n"; + print " V : Verbose\n"; + print "\n"; + exit( -1 ); + +} -- 1.7.10.2

    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

  2. %q(5k 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%0DqPV+Pgp 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

  3. #nBp?Kg?Ctkbe~dA*z*)5bZT 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