[med-svn] [trnascan-se] 01/02: Imported Upstream version 1.3.1
Afif Elghraoui
afif-guest at moszumanska.debian.org
Fri Oct 30 08:20:22 UTC 2015
This is an automated email from the git hooks/post-receive script.
afif-guest pushed a commit to branch master
in repository trnascan-se.
commit d1d7e236a7f05bf496da0f1d28d54551ddcaa577
Author: Afif Elghraoui <afif at ghraoui.name>
Date: Thu Oct 29 23:34:12 2015 -0700
Imported Upstream version 1.3.1
---
Archaea-BHB-noncan.cm | 167 ++
COPYING | 54 +
Cove/COPYING | 28 +
Cove/DEMO | 105 +
Cove/Demos/7SL-euk.cm | 4114 ++++++++++++++++++++++++++++++++++++
Cove/Demos/7SL-euk.fa | 251 +++
Cove/Demos/K11H3frag.fa | 11 +
Cove/Demos/TRNA2.cm | 1154 ++++++++++
Cove/Demos/fig5.fa | 10 +
Cove/Demos/fig5.slx | 5 +
Cove/Demos/sim100.fa | 200 ++
Cove/Demos/sim100.slx | 100 +
Cove/Demos/sim65.fa | 200 ++
Cove/Demos/sim65.slx | 100 +
Cove/Demos/test100.fa | 200 ++
Cove/Demos/test100.slx | 100 +
Cove/Demos/trna1415.slx | 1415 +++++++++++++
Cove/Demos/yeast-phe.fa | 2 +
Cove/Guide.tex | 206 ++
Demo/C28G1.fa | 549 +++++
Demo/DQ6060.fa | 3 +
Demo/F22B7.fa | 806 +++++++
Demo/F59C12.fa | 581 +++++
Demo/Sprz-sub.fa | 3039 ++++++++++++++++++++++++++
Dsignal | 8 +
ESELC.cm | 1042 +++++++++
ESELCinf-c.cm | 384 ++++
FILES | 169 ++
GNULICENSE | 339 +++
INSTALL | 50 +
MANUAL | 1147 ++++++++++
Makefile | 294 +++
Manual.ps | 5143 +++++++++++++++++++++++++++++++++++++++++++++
PSELC.cm | 1154 ++++++++++
PSELCinf-c.cm | 406 ++++
README | 102 +
Release.history | 405 ++++
TPCsignal | 15 +
TRNA2-arch.cm | 1202 +++++++++++
TRNA2-archns.cm | 1506 +++++++++++++
TRNA2-bact.cm | 1202 +++++++++++
TRNA2-bactns.cm | 1506 +++++++++++++
TRNA2-euk.cm | 1154 ++++++++++
TRNA2-eukns.cm | 1458 +++++++++++++
TRNA2.cm | 1154 ++++++++++
TRNA2ns.cm | 1458 +++++++++++++
TRNAinf-arch-3h-nc.cm | 242 +++
TRNAinf-arch-5h-nc.cm | 165 ++
TRNAinf-arch-c.cm | 415 ++++
TRNAinf-arch-ns-c.cm | 416 ++++
TRNAinf-bact-c.cm | 415 ++++
TRNAinf-bact-ns-c.cm | 416 ++++
TRNAinf-c.cm | 403 ++++
TRNAinf-euk-c.cm | 403 ++++
TRNAinf-euk-ns-c.cm | 404 ++++
TRNAinf-ns-c.cm | 404 ++++
align.c | 471 +++++
align_main.c | 243 +++
alignio.c | 431 ++++
build_main.c | 374 ++++
checkversion.pl | 13 +
dbmalloc.h | 543 +++++
dbviterbi.c | 473 +++++
debug.c | 215 ++
emit.c | 568 +++++
emit_main.c | 181 ++
eufind_const.h | 51 +
eufind_main.c | 294 +++
fast-dbviterbi.c | 485 +++++
fasta2gsi.pl | 120 ++
fastmodelmaker.c | 604 ++++++
funcs.h | 209 ++
gcode.cilnuc | 6 +
gcode.echdmito | 6 +
gcode.invmito | 7 +
gcode.othmito | 4 +
gcode.vertmito | 7 +
gcode.ystmito | 7 +
getopt.c | 219 ++
gnuregex.c | 4933 +++++++++++++++++++++++++++++++++++++++++++
gnuregex.h | 490 +++++
instman.pl | 23 +
interleaved.c | 509 +++++
iupac.c | 197 ++
konings.c | 324 +++
lengthdist.c | 200 ++
maspar.h | 10 +
maxmodelmaker.c | 1904 +++++++++++++++++
misc.c | 196 ++
model.c | 771 +++++++
modelmaking.c | 462 ++++
mp-dbviterbi.m | 784 +++++++
mpcovels_main.c | 366 ++++
mpviterbi.m | 405 ++++
msf.c | 164 ++
pavesi.c | 508 +++++
prior.c | 404 ++++
prior.h | 385 ++++
probify.c | 225 ++
reformat_main.c | 189 ++
revcomp.c | 61 +
revcomp_main.c | 90 +
save.c | 315 +++
scan_main.c | 306 +++
score_main.c | 209 ++
scorestack.c | 250 +++
selex.c | 793 +++++++
seqstat_main.c | 131 ++
shuffle_main.c | 100 +
smallviterbi.c | 786 +++++++
sqerror.c | 73 +
sqfuncs.h | 212 ++
sqio.c | 1721 +++++++++++++++
squid.h | 376 ++++
sre_ctype.c | 36 +
sre_math.c | 472 +++++
sre_string.c | 236 +++
sstofa.pl | 62 +
stack.c | 101 +
structcheck_main.c | 408 ++++
structs.c | 332 +++
structs.h | 242 +++
tRNAscan-SE.man | 504 +++++
tRNAscan-SE.src | 1031 +++++++++
tRNAscanSE/CM.pm | 2561 ++++++++++++++++++++++
tRNAscanSE/Constants.pm | 105 +
tRNAscanSE/Eufind.pm | 261 +++
tRNAscanSE/GeneticCode.pm | 291 +++
tRNAscanSE/LogFile.pm | 87 +
tRNAscanSE/Options.pm | 668 ++++++
tRNAscanSE/SS.pm | 197 ++
tRNAscanSE/ScanResult.pm | 657 ++++++
tRNAscanSE/Sequence.pm | 763 +++++++
tRNAscanSE/Stats.pm | 430 ++++
tRNAscanSE/Tscan.pm | 393 ++++
tRNAscanSE/Utils.pm | 175 ++
testrun.ref | 8 +
trace.c | 603 ++++++
train_main.c | 409 ++++
trnascan.c | 2079 ++++++++++++++++++
types.c | 113 +
version.h | 17 +
viterbi.c | 623 ++++++
143 files changed, 76648 insertions(+)
diff --git a/Archaea-BHB-noncan.cm b/Archaea-BHB-noncan.cm
new file mode 100644
index 0000000..78eebdf
--- /dev/null
+++ b/Archaea-BHB-noncan.cm
@@ -0,0 +1,167 @@
+INFERNAL-1 [1.0]
+NAME Archaea-NC-Intron
+STATES 124
+NODES 28
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 148
+EFFNSEQ 148.000
+CLEN 40
+BCOM cmbuild --rf --enone -F Archaea-BHB-noncan.cm Archaea-BHB-noncan.sto
+BDATE Wed Aug 5 18:38:10 2009
+NULL 0.000 0.000 0.000 0.000
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 6 -13.180 -13.120 -0.001 -11.896 -12.176 -12.571
+ IL 1 1 2 1 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 1 ]
+ MP 3 2 3 7 6 -13.180 -13.120 -0.001 -11.896 -12.176 -12.571 -0.553 0.180 -0.805 -1.580 0.039 -0.132 1.032 -0.961 1.087 0.350 -0.302 -3.122 -0.376 0.222 0.847 -0.473
+ ML 4 2 3 7 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 5 2 3 7 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 6 2 3 7 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 7 7 5 7 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 8 8 6 8 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 2 ]
+ MP 9 8 6 13 6 -13.180 -13.120 -0.001 -11.896 -12.176 -12.571 -0.679 0.345 -1.278 0.217 -1.335 0.610 0.158 -2.094 -0.942 1.328 0.852 -0.808 -0.468 0.384 0.241 -0.638
+ ML 10 8 6 13 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 11 8 6 13 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 12 8 6 13 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 13 13 5 13 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 14 14 6 14 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 3 ]
+ MP 15 14 6 19 6 -13.180 -13.120 -0.001 -11.896 -12.176 -12.571 -3.085 -0.094 0.388 0.575 -4.100 -1.284 0.323 -0.315 0.485 1.652 0.861 0.534 -1.310 -0.940 -0.533 -2.306
+ ML 16 14 6 19 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 17 14 6 19 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 18 14 6 19 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 19 19 5 19 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 20 20 6 20 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 4 ]
+ MP 21 20 6 25 6 -13.180 -13.120 -0.001 -11.896 -12.176 -12.571 -1.627 1.032 0.144 0.574 -0.502 0.326 0.474 -1.619 -0.731 1.846 -0.268 -0.507 -2.731 -2.115 0.115 -2.573
+ ML 22 20 6 25 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 23 20 6 25 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 24 20 6 25 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 25 25 5 25 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 26 26 6 26 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 5 ]
+ MP 27 26 6 31 4 -12.154 -6.639 -0.016 -9.853 -4.149 -2.051 0.059 -2.692 -0.481 -0.348 1.371 -0.318 -1.425 2.266 -0.515 0.197 -1.021 -0.781 -0.408 -0.402
+ ML 28 26 6 31 4 -2.408 -4.532 -1.293 -1.473 0.660 -0.612 -0.293 -0.076
+ MR 29 26 6 31 4 -4.102 -12.528 -0.390 -2.485 0.660 -0.612 -0.293 -0.076
+ D 30 26 6 31 4 -12.737 -14.007 -2.036 -0.404
+ IL 31 31 5 31 4 -2.817 -4.319 -0.613 -2.698 0.000 0.000 0.000 0.000
+ IR 32 32 6 32 3 -3.062 -0.226 -5.301 0.000 0.000 0.000 0.000
+ [ MATR 6 ]
+ MR 33 32 6 35 3 -13.564 -0.001 -11.882 -0.041 -0.728 0.409 0.133
+ D 34 32 6 35 3 -6.390 -1.568 -0.620
+ IR 35 35 3 35 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 7 ]
+ MR 36 35 3 38 3 -13.564 -0.001 -11.882 0.773 -1.034 0.652 -2.111
+ D 37 35 3 38 3 -6.390 -1.568 -0.620
+ IR 38 38 3 38 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 8 ]
+ MR 39 38 3 41 5 -12.207 -0.001 -12.022 -12.234 -13.126 1.907 -3.509 -3.041 -4.637
+ D 40 38 3 41 5 -5.352 -0.707 -2.978 -4.409 -2.404
+ IR 41 41 3 41 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 9 ]
+ MP 42 41 3 46 6 -13.180 -13.120 -0.001 -11.896 -12.176 -12.571 -4.303 -2.311 -0.025 -0.706 -4.219 -1.631 2.474 -4.243 -2.815 1.438 -4.589 1.376 0.264 -1.749 0.162 -4.067
+ ML 43 41 3 46 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 44 41 3 46 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 45 41 3 46 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 46 46 5 46 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 47 47 6 47 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 10 ]
+ MP 48 47 6 52 6 -13.180 -13.120 -0.001 -11.896 -12.176 -12.571 -6.894 -3.183 -7.771 0.944 -8.050 -7.689 2.211 -7.339 -7.035 2.653 -2.529 -1.595 0.838 -7.036 -0.516 -6.190
+ ML 49 47 6 52 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 50 47 6 52 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 51 47 6 52 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 52 52 5 52 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 53 53 6 53 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 11 ]
+ MP 54 53 6 58 6 -13.180 -13.120 -0.001 -11.896 -12.176 -12.571 -7.157 -6.147 -8.101 0.723 -8.763 -7.957 1.793 -7.599 -7.277 3.124 -6.961 -0.665 -0.023 -7.318 -1.411 -3.113
+ ML 55 53 6 58 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 56 53 6 58 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 57 53 6 58 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 58 58 5 58 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 59 59 6 59 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 12 ]
+ MP 60 59 6 64 4 -12.357 -12.564 -0.001 -10.978 -6.403 -7.081 -0.862 -0.921 -6.146 -2.492 2.202 -7.461 -1.224 2.604 -7.540 -5.329 -1.275 -6.909 1.647 -6.316
+ ML 61 59 6 64 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 62 59 6 64 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 63 59 6 64 4 -4.568 -4.250 -2.265 -0.520
+ IL 64 64 5 64 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 65 65 6 65 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 13 ]
+ ML 66 65 6 68 3 -13.269 -0.001 -11.923 0.690 -0.282 0.156 -1.154
+ D 67 65 6 68 3 -6.174 -1.687 -0.566
+ IL 68 68 3 68 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 14 ]
+ ML 69 68 3 71 3 -13.269 -0.001 -11.923 -0.439 0.123 0.805 -1.229
+ D 70 68 3 71 3 -6.174 -1.687 -0.566
+ IL 71 71 3 71 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 15 ]
+ ML 72 71 3 74 5 -12.207 -0.047 -6.886 -7.136 -5.962 1.545 -2.377 -1.607 -0.833
+ D 73 71 3 74 5 -4.959 -0.803 -4.221 -2.596 -2.508
+ IL 74 74 3 74 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 16 ]
+ MP 75 74 3 79 6 -13.136 -13.076 -0.060 -11.852 -5.374 -5.957 -11.758 -10.096 -11.268 -2.214 -8.937 -12.516 2.537 -10.139 -12.707 2.974 -11.780 -1.382 0.621 -12.752 -2.356 -8.766
+ ML 76 74 3 79 6 -7.725 -8.071 -2.786 -2.480 -7.921 -0.592 1.593 -1.856 -1.723 -1.306
+ MR 77 74 3 79 6 -8.189 -6.918 -2.827 -6.897 -0.304 -5.110 1.532 -1.693 -1.530 -1.142
+ D 78 74 3 79 6 -11.481 -10.179 -5.976 -6.659 -6.676 -0.054
+ IL 79 79 5 79 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 80 80 6 80 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 17 ]
+ MP 81 80 6 85 6 -13.078 -13.017 -0.176 -11.793 -5.650 -3.410 -6.750 -5.892 -2.749 0.736 -1.367 -7.583 1.586 -7.223 -3.149 3.082 -6.660 -1.920 0.457 -6.909 -0.988 -6.076
+ ML 82 80 6 85 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 83 80 6 85 6 -9.755 -8.484 -0.495 -8.462 -1.869 -6.675 -0.920 -1.582 0.789 0.496
+ D 84 80 6 85 6 -12.642 -11.340 -7.137 -7.819 -7.837 -0.024
+ IL 85 85 5 85 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 86 86 6 86 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 18 ]
+ MP 87 86 6 91 6 -12.944 -12.883 -0.328 -11.659 -6.872 -2.366 -3.574 -3.158 -2.975 1.051 -7.669 -7.356 2.093 -2.601 -2.084 2.718 -6.456 -0.740 0.602 -6.710 -2.354 -5.916
+ ML 88 86 6 91 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 89 86 6 91 6 -9.540 -8.269 -0.177 -8.247 -3.381 -6.460 0.375 0.213 -0.189 -0.586
+ D 90 86 6 91 6 -14.258 -12.956 -8.753 -9.436 -9.453 -0.008
+ IL 91 91 5 91 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 92 92 6 92 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 19 ]
+ MP 93 92 6 97 6 -12.670 -12.610 -0.354 -11.386 -6.521 -2.281 -6.550 -2.506 -7.481 0.718 -8.079 -7.352 2.827 -2.550 -6.675 2.376 -6.366 -0.382 -0.569 -6.707 -2.291 -5.871
+ ML 94 92 6 97 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 95 92 6 97 6 -8.230 -6.959 -2.868 -6.937 -0.295 -5.151 1.550 -1.738 -1.583 -1.187
+ D 96 92 6 97 6 -15.439 -14.137 -9.934 -10.616 -10.634 -0.003
+ IL 97 97 5 97 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 98 98 6 98 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 20 ]
+ MP 99 98 6 103 4 -11.450 -11.657 -0.895 -1.115 -5.905 -5.479 -2.092 0.063 -5.605 -6.755 2.924 -6.315 -2.962 2.213 -6.075 -0.726 0.130 -6.037 -0.914 -5.097
+ ML 100 98 6 103 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 101 98 6 103 4 -6.893 -5.922 -0.258 -2.850 0.633 -1.416 0.599 -0.836
+ D 102 98 6 103 4 -11.437 -11.119 -9.134 -0.004
+ IL 103 103 5 103 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 104 104 6 104 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 21 ]
+ ML 105 104 6 107 3 -11.550 -0.002 -10.204 -1.502 0.882 0.329 -0.868
+ D 106 104 6 107 3 -14.171 -0.004 -8.562
+ IL 107 107 3 107 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 108 107 3 110 3 -13.269 -0.011 -7.094 0.051 0.101 0.211 -0.445
+ D 109 107 3 110 3 -6.174 -1.687 -0.566
+ IL 110 110 3 110 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 111 110 3 113 3 -0.900 -2.036 -2.183 -0.109 0.249 0.323 -0.660
+ D 112 110 3 113 3 -8.015 -0.308 -2.406
+ IL 113 113 3 113 3 -0.249 -2.656 -12.425 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 114 113 3 116 3 -12.913 -0.001 -11.567 0.106 -0.048 -0.126 0.056
+ D 115 113 3 116 3 -12.510 -0.012 -6.902
+ IL 116 116 3 116 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 117 116 3 119 3 -13.269 -1.720 -0.522 0.226 -0.054 0.162 -0.417
+ D 118 116 3 119 3 -6.174 -1.687 -0.566
+ IL 119 119 3 119 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 120 119 3 122 2 * 0.000 -1.563 0.297 0.962 -1.042
+ D 121 119 3 122 2 * 0.000
+ IL 122 122 3 122 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 27 ]
+ E 123 122 3 -1 0
+//
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..b2346c9
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,54 @@
+tRNAscan-SE -- a program for finding transfer RNAs
+
+Copyright (C) 1996 Todd M.J. Lowe & Sean R. Eddy
+
+This set 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.
+
+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, in the file GNULICENSE; if not, write to the Free
+Software Foundation, Inc., 675 Mass. Ave, Cambridge, MA 02139 USA.
+
+This distribution includes source code originally derived from other
+sources. In particular, modified source code from the program
+trnascan 1.3 (Fichant & Burks, 1991) is included under the conditions
+of the following notice:
+
+ Copyright, 1991, The Regents of the University of California.
+ This software was produced by the Los Alamos National Laboratory,
+ which is operated by the University of California for the United
+ States Department of Energy under contract W-7405-ENG-36. The
+ U. S. Government is licensed to use, reproduce, and distribute
+ this software. Permission is granted to the public to copy and
+ use this software without charge, provided that this Notice and
+ any statement of authorship are reproduced on all copies.
+ Neither the Government nor the University makes any warranty,
+ express or implied, or assumes any liability or responsibility
+ for the use of this software.
+
+Also, the complete COVE package (Covariance models of RNA sequence and
+structure, Eddy & Durbin, 1994) is included 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. Please see accompanying files from the COVE package
+for more information.
+
+
+References
+
+1. Fichant, G.A. and Burks, C. (1991) "Identifying potential tRNA
+genes in genomic DNA sequences", J. Mol. Biol., 220, 659-671.
+
+2. Eddy, S.R. and Durbin, R. (1994) "RNA sequence analysis using
+covariance models", Nucl. Acids Res., 22, 2079-2088.
+
+
+
+
diff --git a/Cove/COPYING b/Cove/COPYING
new file mode 100644
index 0000000..0cc480b
--- /dev/null
+++ b/Cove/COPYING
@@ -0,0 +1,28 @@
+cove -- programs to apply covariance models to RNA sequence analysis
+
+Copyright (C) 1993,1994 Sean R. Eddy
+
+This set 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.
+
+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, in the file GNULICENSE; if not, write to the Free
+Software Foundation, Inc., 675 Mass. Ave, Cambridge, MA 02139 USA.
+
+This distribution may include source code originally derived from
+other sources. In particular, my general sequence library includes
+source code that derives from Henry Spencer (regexp() functions), and
+Don Gilbert (sequence i/o functions). Borrowed code is annotated and
+credited in the source files whenever it appears. The copying policies
+of my benefactors are compatible with the GNU Public License under
+which this package is distributed.
+
+
+
diff --git a/Cove/DEMO b/Cove/DEMO
new file mode 100644
index 0000000..7324bb5
--- /dev/null
+++ b/Cove/DEMO
@@ -0,0 +1,105 @@
+
+Demonstrations of the covariance model programs
+-----------------------------------------------
+
+As an introduction to how the software works, this file contains
+instructions on how to reproduce the results in our paper. (Note
+that this version of the code is newer, somewhat less buggy, and
+faster than the version used for our original experiments. There may
+be minor differences between the results we report in our paper and
+the results you get from these demos.)
+
+For more details, refer to S.R. Eddy and R. Durbin, "RNA Sequence
+Analysis Using Covariance Models", NAR 22:2079-2088, 1994.
+
+The directory Demos/ contains the data files:
+
+ TRNA2.cm - A very good tRNA model
+ 7SL-euk.cm - A model of 7SL signal recognition particle RNA
+ 7SL-euk.fa - 37 eukaryotic 7SL RNAs (includes some fragments)
+ trna1415.slx - Steinberg/Sprinzl trusted tRNA alignment
+ sim65.slx - alignment of 100 dissimilar tRNAs
+ sim100.slx - alignment of 100 randomly chosen tRNAs
+ test100.fa - 100 unaligned, randomly chosen independent test tRNAs
+ sim65.fa - unaligned SIM65 sequences
+ sim100.fa - unaligned SIM100 sequences
+ fig5.slx - Trusted alignment of 5 tRNAs, from our figure 5
+ fig5.fa - unaligned tRNA sequences of fig5.slx
+ yeast-phe.fa - S. cerevisiae tRNA-Phe sequence
+ K11H3frag.fa - fragment of C. elegans cosmid K11H3, which contains 2 tRNA genes
+
+## Constructing a model from trusted alignments:
+
+> covet -a sim100.slx A100.cm sim100.fa
+> covet -a sim65.slx A65.cm sim65.fa
+
+ Produces models A100 and A65. Uses trusted alignments (sim100.slx,
+ sim65.slx) to construct the initial models; then uses sim100.fa or
+ sim65.fa as training sequences.
+ Takes about fifteen minutes per model on an R4000 Indigo.
+
+## Constructing a model from unaligned sequences:
+
+> covet U100.cm sim100.fa
+> covet U65.cm sim65.fa
+
+ Produces models U100 and U65 from unaligned training sequences in sim100.fa
+ and sim65.fa.
+ Takes about an hour per model on an R4000 Indigo.
+
+## Multiple RNA sequence alignment using a trained model:
+
+> covea A100.cm fig5.fa
+> covea U100.cm fig5.fa
+
+ Produces a multiple sequence alignment of the 5 sequences in fig5.fa
+ and prints it to the screen. Compare to the trusted alignment
+ (fig5.slx) or our preprint's Figure 5.
+ Takes about ten seconds.
+
+
+## Scoring example sequences using a trained model:
+
+> coves A100.cm fig5.fa
+
+ Calculates and prints alignment scores (in bits) for the 5 sequences in
+ fig5.fa.
+ Takes about ten seconds.
+
+## Structure prediction of individual sequences using a trained model:
+
+> coves -s A100.cm yeast-phe.fa
+> coves -m A100.cm yeast-phe.fa
+
+ Aligns the model A100.cm to yeast tRNA-Phe, and prints out the alignment
+ score. The -s option to coves prints out a secondary structure representation
+ for the sequence as well. This representation uses ">" and "<" characters
+ to represent pairwise assignments. The -m option to coves produces a
+ "mountain" representation of the structure. Both of these representations
+ are described in a paper by Danielle Konings (Konings and Hogeweg,
+ J. Mol. Biol. 207:597-614, 1989). Covariance models typically
+ overpredict pairs; the predicted pairs are a superset of the
+ secondary structure pairings. [One of the major weaknesses in the package at the
+ moment is a lack of graphical secondary structure display and a lack of
+ automatic classification of predicted pairs as secondary structure vs. tertiary
+ structure or overprediction.]
+ Takes about ten seconds.
+
+## Searching a database for new tRNAs:
+
+> covels -c A100.cm K11H3frag.fa
+
+ Searches a 500 bp fragment of the C. elegans cosmid K11H3 for tRNAs,
+ on both strands (the -c option asks for both strands to be searched).
+ This fragment contains two predicted tRNA genes.
+ Takes about two minutes.
+
+> covels -c -w 150 TRNA2.cm K11H3frag.fa
+
+ Same as above, except using a model trained on 1315 different tRNA
+ sequences. This model is known to recognize all known cytoplasmic
+ eukaryotic tRNAs with scores > 20 bits. The -w option allows tRNAs
+ up to 150 nt in length. Using covels with this model is the most
+ sensitive means I know of for detecting tRNAs in genomic sequence.
+
+
diff --git a/Cove/Demos/7SL-euk.cm b/Cove/Demos/7SL-euk.cm
new file mode 100644
index 0000000..09ac558
--- /dev/null
+++ b/Cove/Demos/7SL-euk.cm
@@ -0,0 +1,4114 @@
+### cove V2
+257 nodes
+### node 0 type 6
+1 -1
+0.51220 0.00000 0.00000 0.39024 0.07317 0.02439
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.42857 0.00000 0.00000 0.14286 0.28571 0.14286
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.28571 0.28571 0.28571 0.14286 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 3
+2 -1
+0.72000 0.00000 0.00000 0.24000 0.00000 0.04000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05556 0.00000 0.00000 0.88889 0.00000 0.05556
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.05263 0.05263 0.05263 0.84211 # MATR
+### node 2 type 3
+3 -1
+0.94737 0.00000 0.00000 0.00000 0.00000 0.05263
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.95455 0.00000 0.00000 0.00000 0.00000 0.04545
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.00000 0.50000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.04167 0.08333 0.04167 0.83333 # MATR
+### node 3 type 0
+4 36
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 4 type 4
+5 -1
+0.07317 0.73171 0.02439 0.17073 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 5 type 1
+6 -1
+0.37500 0.12500 0.12500 0.12500 0.12500 0.12500
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.08333 0.16667 0.08333 0.50000 0.08333 0.08333
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.08889 # MATP
+0.02222 0.06667 0.04444 0.02222 # MATP
+0.02222 0.44444 0.02222 0.02222 # MATP
+0.02222 0.11111 0.02222 0.02222 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.10000 0.50000 0.20000 0.20000 # MATR
+### node 6 type 1
+7 -1
+0.37500 0.12500 0.12500 0.12500 0.12500 0.12500
+0.05556 0.83333 0.02778 0.02778 0.02778 0.02778
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.09091 0.09091 0.09091 0.54545 0.09091 0.09091
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.02174 0.56522 0.02174 # MATP
+0.04348 0.04348 0.02174 0.02174 # MATP
+0.06522 0.02174 0.02174 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.22222 0.11111 0.55556 0.11111 # MATR
+### node 7 type 1
+8 -1
+0.57143 0.00000 0.14286 0.00000 0.14286 0.14286
+0.12121 0.00000 0.69697 0.00000 0.15152 0.03030
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.66667 0.00000 0.11111 0.00000 0.11111 0.11111
+0.12500 0.00000 0.62500 0.00000 0.12500 0.12500
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.37500 0.25000 0.12500 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.02222 0.02222 0.64444 0.02222 # MATP
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.02222 0.02222 0.04444 0.02222 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.11111 0.11111 0.66667 0.11111 # MATR
+### node 8 type 2
+9 -1
+0.92308 0.00000 0.00000 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.96429 0.00000 0.00000 0.00000 0.03571 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03333 0.03333 0.90000 0.03333 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 9 type 0
+10 23
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 4
+11 -1
+0.17073 0.75610 0.02439 0.04878 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 1
+12 -1
+0.58333 0.08333 0.08333 0.08333 0.08333 0.08333
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.04348 0.02174 0.30435 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.36957 0.02174 0.02174 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.20000 0.20000 0.20000 0.40000 # MATR
+### node 12 type 1
+13 -1
+0.58333 0.08333 0.08333 0.08333 0.08333 0.08333
+0.02703 0.86486 0.02703 0.02703 0.02703 0.02703
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02128 0.04255 0.02128 0.06383 # MATP
+0.02128 0.02128 0.02128 0.02128 # MATP
+0.02128 0.59574 0.02128 0.04255 # MATP
+0.02128 0.02128 0.02128 0.02128 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 13 type 1
+14 -1
+0.58333 0.08333 0.08333 0.08333 0.08333 0.08333
+0.02703 0.86486 0.02703 0.02703 0.02703 0.02703
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02128 0.02128 0.04255 0.04255 # MATP
+0.02128 0.02128 0.51064 0.02128 # MATP
+0.02128 0.04255 0.02128 0.02128 # MATP
+0.06383 0.02128 0.06383 0.04255 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 14 type 1
+15 -1
+0.58333 0.08333 0.08333 0.08333 0.08333 0.08333
+0.05405 0.81081 0.02703 0.05405 0.02703 0.02703
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02128 0.02128 0.02128 0.06383 # MATP
+0.02128 0.02128 0.14894 0.02128 # MATP
+0.02128 0.10638 0.02128 0.08511 # MATP
+0.29787 0.02128 0.04255 0.06383 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 15 type 1
+16 -1
+0.63636 0.00000 0.18182 0.00000 0.09091 0.09091
+0.12121 0.00000 0.72727 0.00000 0.12121 0.03030
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.20000 0.00000 0.40000 0.00000 0.20000 0.20000
+0.14286 0.00000 0.57143 0.00000 0.14286 0.14286
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.14286 0.14286 0.14286 0.57143 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.04444 # MATP
+0.04444 0.02222 0.35556 0.02222 # MATP
+0.06667 0.02222 0.02222 0.04444 # MATP
+0.04444 0.02222 0.13333 0.08889 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.20000 0.20000 0.40000 0.20000 # MATR
+### node 16 type 2
+17 -1
+0.71429 0.07143 0.07143 0.07143 0.07143 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.87879 0.03030 0.03030 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31250 0.09375 0.28125 0.31250 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 17 type 1
+18 -1
+0.76923 0.00000 0.07692 0.00000 0.07692 0.07692
+0.03125 0.00000 0.90625 0.00000 0.03125 0.03125
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02273 0.02273 0.02273 0.04545 # MATP
+0.02273 0.02273 0.02273 0.02273 # MATP
+0.25000 0.20455 0.04545 0.18182 # MATP
+0.02273 0.02273 0.04545 0.02273 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 18 type 2
+19 -1
+0.41667 0.00000 0.50000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.00000 0.93548 0.00000 0.03226 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03125 0.21875 0.03125 0.71875 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 19 type 2
+20 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.94444 0.00000 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.56757 0.10811 0.21622 0.10811 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.88889 0.00000 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.37838 0.02703 0.56757 0.02703 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.77778 0.00000 0.11111 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11765 0.00000 0.85294 0.00000 0.02941 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02857 0.85714 0.02857 0.08571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+-1 -1
+0.90909 0.00000 0.00000 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.96667 0.00000 0.00000 0.00000 0.03333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09375 0.06250 0.78125 0.06250 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 5
+24 -1
+0.07500 0.00000 0.90000 0.00000 0.02500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+25 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02564 0.02564 0.02564 0.92308 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 2
+26 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10256 0.02564 0.82051 0.05128 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02564 0.05128 0.02564 0.89744 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 2
+28 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.82051 0.05128 0.07692 0.05128 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 2
+29 -1
+0.42857 0.14286 0.14286 0.14286 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.80000 0.02500 0.02500 0.05000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.33333 0.16667 0.16667 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.40000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.76923 0.02564 0.15385 0.05128 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 1
+30 -1
+0.54545 0.09091 0.09091 0.09091 0.09091 0.09091
+0.02632 0.86842 0.02632 0.02632 0.02632 0.02632
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02083 0.02083 0.02083 0.02083 # MATP
+0.02083 0.02083 0.45833 0.02083 # MATP
+0.02083 0.02083 0.02083 0.02083 # MATP
+0.18750 0.02083 0.08333 0.02083 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 30 type 1
+31 -1
+0.54545 0.09091 0.09091 0.09091 0.09091 0.09091
+0.02632 0.86842 0.02632 0.02632 0.02632 0.02632
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02083 0.02083 0.02083 0.02083 # MATP
+0.02083 0.02083 0.52083 0.02083 # MATP
+0.02083 0.06250 0.02083 0.02083 # MATP
+0.08333 0.02083 0.08333 0.02083 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 31 type 1
+32 -1
+0.54545 0.09091 0.09091 0.09091 0.09091 0.09091
+0.05263 0.84211 0.02632 0.02632 0.02632 0.02632
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02083 0.02083 0.02083 0.02083 # MATP
+0.02083 0.02083 0.60417 0.02083 # MATP
+0.02083 0.02083 0.02083 0.06250 # MATP
+0.02083 0.02083 0.06250 0.02083 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 32 type 1
+33 -1
+0.30000 0.00000 0.30000 0.00000 0.30000 0.10000
+0.02857 0.00000 0.62857 0.00000 0.31429 0.02857
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.04000 0.00000 0.04000 0.00000 0.40000 0.52000
+0.02941 0.00000 0.38235 0.00000 0.00000 0.58824
+0.36000 0.20000 0.36000 0.08000 # INSL
+0.02857 0.42857 0.11429 0.42857 # INSR
+0.02128 0.04255 0.02128 0.27660 # MATP
+0.02128 0.02128 0.19149 0.02128 # MATP
+0.02128 0.21277 0.02128 0.04255 # MATP
+0.02128 0.02128 0.02128 0.02128 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 33 type 2
+34 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05263 0.00000 0.92105 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.53846 0.23077 0.02564 0.20513 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 34 type 2
+35 -1
+0.50000 0.00000 0.33333 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.59459 0.00000 0.37838 0.00000 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05263 0.07895 0.57895 0.28947 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+-1 -1
+0.96000 0.00000 0.00000 0.00000 0.04000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.93750 0.00000 0.00000 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.50000 0.05556 0.16667 0.27778 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 5
+37 -1
+0.35000 0.00000 0.62500 0.00000 0.02500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.75000 0.00000 0.18750 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03704 0.00000 0.92593 0.00000 0.03704 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.82143 0.07143 0.03571 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.85714 0.00000 0.07143 0.00000 0.07143 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10345 0.00000 0.86207 0.00000 0.03448 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.03333 0.03333 0.76667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.25000 0.00000 0.68750 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03704 0.00000 0.92593 0.00000 0.03704 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.14286 0.28571 0.50000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+41 -1
+0.37500 0.25000 0.12500 0.12500 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02564 0.58974 0.33333 0.02564 0.02564 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.50000 0.02632 0.15789 0.31579 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 1
+42 -1
+0.12500 0.25000 0.12500 0.25000 0.12500 0.12500
+0.03448 0.82759 0.03448 0.03448 0.03448 0.03448
+0.05556 0.05556 0.72222 0.05556 0.05556 0.05556
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02564 0.02564 0.02564 0.30769 # MATP
+0.02564 0.02564 0.02564 0.02564 # MATP
+0.02564 0.15385 0.02564 0.12821 # MATP
+0.02564 0.02564 0.02564 0.10256 # MATP
+0.62500 0.06250 0.12500 0.18750 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 42 type 1
+43 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.03333 0.83333 0.03333 0.03333 0.03333 0.03333
+0.05556 0.11111 0.66667 0.05556 0.05556 0.05556
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02500 0.07500 0.02500 0.17500 # MATP
+0.02500 0.02500 0.02500 0.02500 # MATP
+0.02500 0.27500 0.02500 0.15000 # MATP
+0.02500 0.02500 0.02500 0.05000 # MATP
+0.56250 0.06250 0.25000 0.12500 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 43 type 1
+44 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.03226 0.83871 0.03226 0.03226 0.03226 0.03226
+0.11765 0.11765 0.58824 0.05882 0.05882 0.05882
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02439 0.02439 0.02439 0.12195 # MATP
+0.02439 0.02439 0.02439 0.02439 # MATP
+0.02439 0.26829 0.02439 0.26829 # MATP
+0.02439 0.02439 0.02439 0.04878 # MATP
+0.13333 0.26667 0.53333 0.06667 # MATL
+0.20000 0.20000 0.20000 0.40000 # MATR
+### node 44 type 1
+45 -1
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.03125 0.84375 0.03125 0.03125 0.03125 0.03125
+0.06667 0.13333 0.60000 0.06667 0.06667 0.06667
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02381 0.04762 0.02381 0.14286 # MATP
+0.04762 0.02381 0.04762 0.02381 # MATP
+0.02381 0.02381 0.04762 0.16667 # MATP
+0.28571 0.02381 0.02381 0.02381 # MATP
+0.38462 0.07692 0.23077 0.30769 # MATL
+0.40000 0.20000 0.20000 0.20000 # MATR
+### node 45 type 1
+46 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.03030 0.84848 0.03030 0.03030 0.03030 0.03030
+0.06667 0.20000 0.53333 0.06667 0.06667 0.06667
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02326 0.02326 0.04651 0.09302 # MATP
+0.02326 0.02326 0.13953 0.02326 # MATP
+0.02326 0.34884 0.02326 0.02326 # MATP
+0.09302 0.02326 0.04651 0.02326 # MATP
+0.30769 0.15385 0.15385 0.38462 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 46 type 1
+47 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.07692 0.07692 0.61538 0.07692 0.07692 0.07692
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.06667 0.02222 0.13333 # MATP
+0.02222 0.04444 0.06667 0.02222 # MATP
+0.02222 0.33333 0.02222 0.02222 # MATP
+0.04444 0.04444 0.02222 0.08889 # MATP
+0.18182 0.09091 0.54545 0.18182 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 47 type 1
+48 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.07692 0.07692 0.61538 0.07692 0.07692 0.07692
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.04444 0.02222 0.02222 # MATP
+0.04444 0.02222 0.06667 0.02222 # MATP
+0.02222 0.22222 0.02222 0.04444 # MATP
+0.35556 0.02222 0.02222 0.02222 # MATP
+0.18182 0.09091 0.54545 0.18182 # MATL
+0.40000 0.20000 0.20000 0.20000 # MATR
+### node 48 type 1
+49 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.60606 0.00000 0.03030 0.03030
+0.18182 0.00000 0.63636 0.00000 0.09091 0.09091
+0.40000 0.00000 0.20000 0.00000 0.20000 0.20000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.04444 0.02222 0.02222 0.02222 # MATP
+0.02222 0.46667 0.04444 0.02222 # MATP
+0.15556 0.02222 0.04444 0.02222 # MATP
+0.18182 0.09091 0.27273 0.45455 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 49 type 2
+50 -1
+0.13333 0.00000 0.80000 0.00000 0.06667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03571 0.00000 0.92857 0.00000 0.03571 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31034 0.27586 0.03448 0.37931 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 50 type 2
+51 -1
+0.50000 0.00000 0.25000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02564 0.00000 0.94872 0.00000 0.02564 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05000 0.07500 0.77500 0.10000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 51 type 2
+52 -1
+0.50000 0.00000 0.25000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02564 0.00000 0.94872 0.00000 0.02564 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20000 0.02500 0.65000 0.12500 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 52 type 2
+53 -1
+0.25000 0.00000 0.00000 0.50000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.23077 0.00000 0.00000 0.74359 0.02564 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.72500 0.02500 0.07500 0.17500 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 53 type 3
+54 -1
+0.72727 0.00000 0.00000 0.18182 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09375 0.00000 0.00000 0.87500 0.00000 0.03125
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.03030 0.90909 0.03030 0.03030 # MATR
+### node 54 type 3
+55 -1
+0.66667 0.00000 0.00000 0.25000 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.00000 0.00000 0.93548 0.00000 0.03226
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.90625 0.03125 0.03125 0.03125 # MATR
+### node 55 type 3
+56 -1
+0.08333 0.08333 0.66667 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05714 0.85714 0.02857 0.02857 0.00000 0.02857
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.20588 0.02941 0.67647 0.08824 # MATR
+### node 56 type 1
+57 -1
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.07692 0.07692 0.61538 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.11111 0.04444 0.13333 0.02222 # MATP
+0.02222 0.04444 0.02222 0.02222 # MATP
+0.40000 0.02222 0.04444 0.02222 # MATP
+0.18182 0.09091 0.36364 0.36364 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 57 type 1
+58 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.07692 0.07692 0.61538 0.07692 0.07692 0.07692
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.06667 0.02222 0.06667 # MATP
+0.02222 0.02222 0.13333 0.02222 # MATP
+0.02222 0.17778 0.04444 0.04444 # MATP
+0.13333 0.11111 0.06667 0.02222 # MATP
+0.18182 0.18182 0.27273 0.36364 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 58 type 1
+59 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.07692 0.07692 0.61538 0.07692 0.07692 0.07692
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.04444 0.02222 0.20000 0.02222 # MATP
+0.02222 0.15556 0.02222 0.06667 # MATP
+0.08889 0.13333 0.02222 0.11111 # MATP
+0.18182 0.18182 0.18182 0.45455 # MATL
+0.20000 0.20000 0.40000 0.20000 # MATR
+### node 59 type 1
+60 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.02857 0.77143 0.11429 0.02857 0.02857 0.02857
+0.07692 0.07692 0.61538 0.07692 0.07692 0.07692
+0.14286 0.14286 0.14286 0.28571 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04444 0.02222 0.02222 0.02222 # MATP
+0.02222 0.02222 0.17778 0.02222 # MATP
+0.04444 0.02222 0.06667 0.04444 # MATP
+0.37778 0.02222 0.02222 0.04444 # MATP
+0.09091 0.36364 0.18182 0.36364 # MATL
+0.40000 0.20000 0.20000 0.20000 # MATR
+### node 60 type 1
+61 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.13333 0.00000 0.46667 0.00000 0.03333 0.36667
+0.14286 0.00000 0.71429 0.00000 0.07143 0.07143
+0.20000 0.00000 0.20000 0.00000 0.20000 0.40000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.50000 0.00000 0.42857 0.00000 0.00000 0.07143
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.26667 0.26667 0.06667 0.40000 # INSR
+0.04762 0.02381 0.04762 0.02381 # MATP
+0.02381 0.02381 0.04762 0.02381 # MATP
+0.16667 0.07143 0.04762 0.02381 # MATP
+0.30952 0.02381 0.02381 0.07143 # MATP
+0.28571 0.07143 0.28571 0.35714 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 61 type 2
+62 -1
+0.76923 0.00000 0.15385 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06667 0.00000 0.63333 0.00000 0.30000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09091 0.00000 0.81818 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.41667 0.16667 0.25000 0.16667 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.12903 0.06452 0.22581 0.58065 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 62 type 2
+63 -1
+0.15385 0.00000 0.76923 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.86667 0.00000 0.03333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09677 0.12903 0.67742 0.09677 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 63 type 2
+64 -1
+0.33333 0.00000 0.50000 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02703 0.00000 0.94595 0.00000 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36842 0.18421 0.26316 0.18421 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 64 type 2
+65 -1
+0.50000 0.00000 0.25000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05128 0.00000 0.92308 0.00000 0.02564 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02500 0.12500 0.67500 0.17500 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 65 type 2
+66 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07895 0.00000 0.89474 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.35897 0.20513 0.07692 0.35897 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.42857 0.00000 0.42857 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.94444 0.00000 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05405 0.45946 0.16216 0.32432 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15385 0.30769 0.38462 0.15385 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30769 0.10256 0.46154 0.12821 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.34211 0.00000 0.63158 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17949 0.33333 0.25641 0.23077 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.88235 0.00000 0.05882 0.00000 0.05882 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.23077 0.00000 0.73077 0.00000 0.03846 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.22222 0.11111 0.44444 0.22222 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+72 -1
+0.90909 0.00000 0.04545 0.00000 0.04545 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.23810 0.00000 0.42857 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11111 0.00000 0.77778 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.30000 0.20000 0.30000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.50000 0.13636 0.13636 0.22727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 72 type 2
+73 -1
+0.15385 0.00000 0.80769 0.00000 0.03846 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05882 0.00000 0.88235 0.00000 0.05882 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11111 0.16667 0.66667 0.05556 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 73 type 2
+74 -1
+0.50000 0.00000 0.33333 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02703 0.00000 0.94595 0.00000 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07895 0.23684 0.18421 0.50000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 74 type 2
+75 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15385 0.25641 0.10256 0.48718 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 75 type 2
+76 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20513 0.48718 0.17949 0.12821 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 76 type 2
+77 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.10256 0.28205 0.53846 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 77 type 2
+78 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05128 0.15385 0.58974 0.20513 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 78 type 2
+79 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.10256 0.66667 0.15385 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 79 type 2
+80 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05263 0.00000 0.92105 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10256 0.07692 0.71795 0.10256 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 80 type 2
+81 -1
+0.66667 0.00000 0.16667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.18919 0.00000 0.78378 0.00000 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.13158 0.52632 0.13158 0.21053 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 81 type 2
+82 -1
+0.25000 0.00000 0.66667 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.00000 0.58065 0.00000 0.38710 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.14286 0.00000 0.78571 0.00000 0.07143 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.26667 0.20000 0.33333 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06250 0.43750 0.12500 0.37500 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 82 type 2
+83 -1
+0.66667 0.00000 0.16667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02703 0.00000 0.94595 0.00000 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02632 0.31579 0.07895 0.57895 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 83 type 2
+84 -1
+0.50000 0.00000 0.00000 0.33333 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.45946 0.00000 0.00000 0.40541 0.13514 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.38462 0.00000 0.00000 0.07692 0.53846 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.28571 0.28571 0.28571 0.14286 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05263 0.02632 0.89474 0.02632 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 84 type 3
+85 -1
+0.84000 0.00000 0.00000 0.12000 0.00000 0.04000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05556 0.00000 0.00000 0.88889 0.00000 0.05556
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.05263 0.10526 0.05263 0.78947 # MATR
+### node 85 type 3
+86 -1
+0.91304 0.00000 0.00000 0.04348 0.00000 0.04348
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.00000 0.75000 0.00000 0.05000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.04762 0.80952 0.04762 0.09524 # MATR
+### node 86 type 3
+87 -1
+0.73077 0.00000 0.00000 0.23077 0.00000 0.03846
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05882 0.00000 0.00000 0.88235 0.00000 0.05882
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.38889 0.11111 0.05556 0.44444 # MATR
+### node 87 type 3
+88 -1
+0.42857 0.00000 0.00000 0.52381 0.00000 0.04762
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04545 0.00000 0.00000 0.90909 0.00000 0.04545
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.21739 0.60870 0.08696 0.08696 # MATR
+### node 88 type 3
+89 -1
+0.72727 0.00000 0.00000 0.18182 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.00000 0.00000 0.93750 0.00000 0.03125
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.21212 0.15152 0.12121 0.51515 # MATR
+### node 89 type 3
+90 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06061 0.00000 0.00000 0.90909 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.29412 0.41176 0.11765 0.17647 # MATR
+### node 90 type 3
+91 -1
+0.81818 0.00000 0.00000 0.09091 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.37500 0.00000 0.00000 0.59375 0.00000 0.03125
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.09091 0.51515 0.03030 0.36364 # MATR
+### node 91 type 3
+92 -1
+0.90909 0.00000 0.00000 0.04545 0.00000 0.04545
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.61905 0.00000 0.04762
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.50000 0.18182 0.09091 0.22727 # MATR
+### node 92 type 3
+93 -1
+0.35714 0.00000 0.00000 0.60714 0.00000 0.03571
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.80000 0.00000 0.00000 0.13333 0.00000 0.06667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.37500 0.25000 0.12500 0.25000 # MATR
+### node 93 type 3
+94 -1
+0.91304 0.00000 0.00000 0.04348 0.00000 0.04348
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05000 0.00000 0.00000 0.90000 0.00000 0.05000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.09524 0.19048 0.57143 0.14286 # MATR
+### node 94 type 3
+95 -1
+0.34783 0.00000 0.00000 0.60870 0.00000 0.04348
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05000 0.00000 0.00000 0.90000 0.00000 0.05000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.52381 0.04762 0.33333 0.09524 # MATR
+### node 95 type 3
+96 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.11765 0.26471 0.44118 0.17647 # MATR
+### node 96 type 3
+97 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.35294 0.14706 0.26471 0.23529 # MATR
+### node 97 type 3
+98 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.24242 0.00000 0.00000 0.72727 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.20588 0.47059 0.20588 0.11765 # MATR
+### node 98 type 3
+99 -1
+0.47059 0.00000 0.00000 0.47059 0.00000 0.05882
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03846 0.00000 0.00000 0.92308 0.00000 0.03846
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.29630 0.11111 0.29630 0.29630 # MATR
+### node 99 type 3
+100 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06061 0.00000 0.00000 0.90909 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.14706 0.47059 0.08824 0.29412 # MATR
+### node 100 type 3
+101 -1
+0.72727 0.00000 0.00000 0.18182 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09375 0.00000 0.00000 0.87500 0.00000 0.03125
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.09091 0.63636 0.15152 0.12121 # MATR
+### node 101 type 3
+102 -1
+0.66667 0.00000 0.00000 0.25000 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06452 0.00000 0.00000 0.90323 0.00000 0.03226
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.06250 0.34375 0.43750 0.15625 # MATR
+### node 102 type 3
+103 -1
+0.72727 0.00000 0.00000 0.18182 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.00000 0.00000 0.93750 0.00000 0.03125
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.06061 0.18182 0.60606 0.15152 # MATR
+### node 103 type 3
+104 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.50000 0.08824 0.29412 0.11765 # MATR
+### node 104 type 3
+105 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12121 0.00000 0.00000 0.84848 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.20588 0.44118 0.08824 0.26471 # MATR
+### node 105 type 3
+106 -1
+0.53846 0.00000 0.00000 0.38462 0.00000 0.07692
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.00000 0.86667 0.00000 0.03333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.29032 0.22581 0.06452 0.41935 # MATR
+### node 106 type 3
+107 -1
+0.81818 0.00000 0.00000 0.09091 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.00000 0.00000 0.93750 0.00000 0.03125
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.18182 0.27273 0.09091 0.45455 # MATR
+### node 107 type 3
+108 -1
+0.81818 0.00000 0.00000 0.09091 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.00000 0.00000 0.93750 0.00000 0.03125
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.27273 0.45455 0.12121 0.15152 # MATR
+### node 108 type 3
+109 -1
+0.81818 0.00000 0.00000 0.09091 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.00000 0.84375 0.00000 0.03125
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.69697 0.06061 0.15152 0.09091 # MATR
+### node 109 type 3
+110 -1
+0.12500 0.25000 0.37500 0.18750 0.00000 0.06250
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.80645 0.03226 0.09677 0.00000 0.03226
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.10000 0.73333 0.10000 0.06667 # MATR
+### node 110 type 1
+111 -1
+0.28571 0.14286 0.14286 0.14286 0.14286 0.14286
+0.03030 0.84848 0.03030 0.03030 0.03030 0.03030
+0.18182 0.09091 0.45455 0.09091 0.09091 0.09091
+0.10000 0.30000 0.10000 0.30000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02326 0.04651 0.02326 0.02326 # MATP
+0.02326 0.02326 0.13953 0.02326 # MATP
+0.02326 0.34884 0.02326 0.09302 # MATP
+0.04651 0.02326 0.09302 0.02326 # MATP
+0.11111 0.33333 0.22222 0.33333 # MATL
+0.37500 0.37500 0.12500 0.12500 # MATR
+### node 111 type 1
+112 -1
+0.37500 0.12500 0.12500 0.12500 0.12500 0.12500
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.12500 0.12500 0.12500 0.37500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.06667 0.02222 0.02222 0.17778 # MATP
+0.02222 0.04444 0.02222 0.02222 # MATP
+0.04444 0.31111 0.02222 0.06667 # MATP
+0.04444 0.02222 0.06667 0.02222 # MATP
+0.37500 0.12500 0.37500 0.12500 # MATL
+0.16667 0.16667 0.33333 0.33333 # MATR
+### node 112 type 1
+113 -1
+0.37500 0.12500 0.12500 0.12500 0.12500 0.12500
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.12500 0.12500 0.12500 0.37500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.06667 0.02222 0.28889 0.02222 # MATP
+0.02222 0.17778 0.02222 0.02222 # MATP
+0.04444 0.02222 0.15556 0.04444 # MATP
+0.12500 0.50000 0.25000 0.12500 # MATL
+0.16667 0.33333 0.33333 0.16667 # MATR
+### node 113 type 1
+114 -1
+0.37500 0.12500 0.12500 0.12500 0.12500 0.12500
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.20000 0.10000 0.40000 0.10000 0.10000 0.10000
+0.12500 0.12500 0.12500 0.37500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.08889 # MATP
+0.04444 0.02222 0.15556 0.02222 # MATP
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.31111 0.02222 0.11111 0.06667 # MATP
+0.25000 0.25000 0.12500 0.37500 # MATL
+0.33333 0.16667 0.33333 0.16667 # MATR
+### node 114 type 1
+115 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.11429 0.51429 0.25714 0.05714 0.02857 0.02857
+0.11111 0.11111 0.44444 0.11111 0.11111 0.11111
+0.12500 0.12500 0.12500 0.37500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.02222 0.02222 0.28889 0.02222 # MATP
+0.04444 0.20000 0.02222 0.04444 # MATP
+0.15556 0.02222 0.04444 0.02222 # MATP
+0.28571 0.14286 0.28571 0.28571 # MATL
+0.33333 0.16667 0.16667 0.33333 # MATR
+### node 115 type 1
+116 -1
+0.40000 0.00000 0.40000 0.00000 0.10000 0.10000
+0.33333 0.00000 0.57143 0.00000 0.04762 0.04762
+0.20000 0.00000 0.66667 0.00000 0.06667 0.06667
+0.57143 0.00000 0.14286 0.00000 0.14286 0.14286
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03030 0.03030 0.03030 0.21212 # MATP
+0.03030 0.03030 0.03030 0.03030 # MATP
+0.03030 0.24242 0.03030 0.15152 # MATP
+0.03030 0.03030 0.03030 0.03030 # MATP
+0.20000 0.40000 0.33333 0.06667 # MATL
+0.14286 0.28571 0.28571 0.28571 # MATR
+### node 116 type 2
+117 -1
+0.64706 0.00000 0.29412 0.00000 0.05882 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.88462 0.00000 0.03846 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.14815 0.18519 0.48148 0.18519 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 117 type 2
+118 -1
+0.57143 0.00000 0.35714 0.00000 0.07143 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.55172 0.00000 0.41379 0.00000 0.03448 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03333 0.33333 0.16667 0.46667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 118 type 2
+119 -1
+0.28000 0.00000 0.68000 0.00000 0.04000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05556 0.00000 0.88889 0.00000 0.05556 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36842 0.05263 0.52632 0.05263 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 119 type 2
+120 -1
+0.77778 0.00000 0.11111 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02941 0.00000 0.94118 0.00000 0.02941 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02857 0.11429 0.08571 0.77143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 120 type 2
+121 -1
+0.55556 0.00000 0.00000 0.33333 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.44118 0.00000 0.00000 0.52941 0.02941 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31429 0.05714 0.42857 0.20000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 121 type 3
+122 -1
+0.38095 0.00000 0.00000 0.57143 0.00000 0.04762
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.81818 0.00000 0.00000 0.13636 0.00000 0.04545
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.17391 0.17391 0.08696 0.56522 # MATR
+### node 122 type 3
+123 -1
+0.25926 0.00000 0.00000 0.70370 0.00000 0.03704
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.00000 0.81250 0.00000 0.06250
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.17647 0.41176 0.11765 0.29412 # MATR
+### node 123 type 3
+124 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02941 0.32353 0.26471 0.38235 # MATR
+### node 124 type 3
+125 -1
+0.50000 0.08333 0.25000 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02857 0.85714 0.02857 0.05714 0.00000 0.02857
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.35294 0.29412 0.20588 0.14706 # MATR
+### node 125 type 1
+126 -1
+0.66667 0.00000 0.11111 0.00000 0.11111 0.11111
+0.09091 0.00000 0.84848 0.00000 0.03030 0.03030
+0.16667 0.00000 0.50000 0.00000 0.16667 0.16667
+0.40000 0.00000 0.20000 0.00000 0.20000 0.20000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.04444 0.08889 # MATP
+0.02222 0.04444 0.06667 0.04444 # MATP
+0.02222 0.08889 0.02222 0.02222 # MATP
+0.26667 0.02222 0.02222 0.17778 # MATP
+0.33333 0.16667 0.16667 0.33333 # MATL
+0.40000 0.20000 0.20000 0.20000 # MATR
+### node 126 type 2
+127 -1
+0.81818 0.00000 0.09091 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.00000 0.93750 0.00000 0.03125 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.06061 0.78788 0.06061 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 127 type 2
+128 -1
+0.81818 0.00000 0.09091 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.00000 0.93750 0.00000 0.03125 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15152 0.63636 0.06061 0.15152 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 128 type 2
+129 -1
+0.81818 0.00000 0.09091 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.34375 0.00000 0.62500 0.00000 0.03125 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06061 0.51515 0.06061 0.36364 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 129 type 2
+130 -1
+0.90476 0.00000 0.04762 0.00000 0.04762 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09091 0.00000 0.86364 0.00000 0.04545 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21739 0.13043 0.26087 0.39130 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 130 type 2
+131 -1
+0.90909 0.00000 0.04545 0.00000 0.04545 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09524 0.00000 0.85714 0.00000 0.04762 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.13636 0.45455 0.13636 0.27273 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 131 type 2
+132 -1
+0.78261 0.00000 0.17391 0.00000 0.04348 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05000 0.00000 0.90000 0.00000 0.05000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09524 0.04762 0.14286 0.71429 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 132 type 2
+133 -1
+0.30000 0.00000 0.65000 0.00000 0.05000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.17391 0.00000 0.78261 0.00000 0.04348 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.08333 0.37500 0.37500 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 133 type 2
+134 -1
+0.54545 0.00000 0.36364 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.00000 0.93750 0.00000 0.03125 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.18182 0.12121 0.54545 0.15152 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 134 type 2
+135 -1
+0.50000 0.00000 0.00000 0.37500 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.65714 0.00000 0.00000 0.31429 0.02857 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30556 0.52778 0.11111 0.05556 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 135 type 3
+136 -1
+0.28571 0.00000 0.00000 0.67857 0.00000 0.03571
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.00000 0.73333 0.00000 0.06667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.37500 0.12500 0.31250 0.18750 # MATR
+### node 136 type 3
+137 -1
+0.83333 0.00000 0.00000 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.00000 0.00000 0.93548 0.00000 0.03226
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.28125 0.46875 0.03125 0.21875 # MATR
+### node 137 type 3
+138 -1
+0.83333 0.00000 0.00000 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.35484 0.00000 0.00000 0.61290 0.00000 0.03226
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.12500 0.06250 0.78125 0.03125 # MATR
+### node 138 type 3
+139 -1
+0.90909 0.00000 0.00000 0.04545 0.00000 0.04545
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04762 0.00000 0.00000 0.90476 0.00000 0.04762
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.09091 0.09091 0.04545 0.77273 # MATR
+### node 139 type 3
+140 -1
+0.16667 0.54167 0.20833 0.04167 0.00000 0.04167
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04348 0.82609 0.04348 0.04348 0.00000 0.04348
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.04545 0.54545 0.36364 0.04545 # MATR
+### node 140 type 1
+141 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.02174 0.21739 0.02174 # MATP
+0.02174 0.06522 0.02174 0.02174 # MATP
+0.10870 0.02174 0.21739 0.13043 # MATP
+0.12500 0.25000 0.12500 0.50000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 141 type 1
+142 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.06522 # MATP
+0.02174 0.04348 0.10870 0.02174 # MATP
+0.02174 0.39130 0.04348 0.06522 # MATP
+0.08696 0.02174 0.02174 0.02174 # MATP
+0.12500 0.25000 0.50000 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 142 type 1
+143 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.41304 0.02174 0.19565 # MATP
+0.06522 0.02174 0.04348 0.02174 # MATP
+0.12500 0.12500 0.62500 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 143 type 1
+144 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.02174 0.04348 0.02174 # MATP
+0.02174 0.02174 0.28261 0.02174 # MATP
+0.02174 0.19565 0.04348 0.04348 # MATP
+0.06522 0.02174 0.10870 0.02174 # MATP
+0.12500 0.50000 0.25000 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 144 type 1
+145 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.83333 0.02778 0.02778 0.02778 0.05556
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.33333 0.16667 0.16667 0.00000 0.16667
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.40000 0.20000 0.20000 0.20000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.04348 0.02174 0.32609 0.02174 # MATP
+0.02174 0.15217 0.02174 0.06522 # MATP
+0.13043 0.02174 0.04348 0.02174 # MATP
+0.12500 0.37500 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 145 type 1
+146 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.02174 0.10870 0.02174 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.26087 0.02174 0.34783 0.02174 # MATP
+0.12500 0.50000 0.12500 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 146 type 1
+147 -1
+0.57143 0.00000 0.14286 0.00000 0.14286 0.14286
+0.02941 0.00000 0.91176 0.00000 0.02941 0.02941
+0.12500 0.00000 0.62500 0.00000 0.12500 0.12500
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.58696 0.02174 0.08696 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.12500 0.12500 0.62500 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 147 type 2
+148 -1
+0.66667 0.00000 0.00000 0.16667 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13514 0.00000 0.00000 0.83784 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05263 0.63158 0.02632 0.28947 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 148 type 3
+149 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.67647 0.02941 0.26471 0.02941 # MATR
+### node 149 type 3
+150 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.61765 0.26471 0.05882 0.05882 # MATR
+### node 150 type 3
+151 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02941 0.05882 0.05882 0.85294 # MATR
+### node 151 type 3
+152 -1
+0.33333 0.08333 0.41667 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02857 0.88571 0.02857 0.02857 0.00000 0.02857
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.88235 0.02941 0.05882 0.02941 # MATR
+### node 152 type 1
+153 -1
+0.57143 0.00000 0.14286 0.00000 0.14286 0.14286
+0.02941 0.00000 0.91176 0.00000 0.02941 0.02941
+0.12500 0.00000 0.62500 0.00000 0.12500 0.12500
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.02174 0.63043 0.02174 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.06522 0.02174 0.02174 0.02174 # MATP
+0.12500 0.50000 0.12500 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 153 type 2
+154 -1
+0.66667 0.00000 0.16667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05405 0.00000 0.91892 0.00000 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02632 0.89474 0.02632 0.05263 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 154 type 2
+155 -1
+0.57143 0.00000 0.00000 0.28571 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13889 0.00000 0.00000 0.83333 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.27027 0.02703 0.56757 0.13514 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 155 type 3
+156 -1
+0.33333 0.08333 0.41667 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02857 0.88571 0.02857 0.02857 0.00000 0.02857
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02941 0.02941 0.88235 0.05882 # MATR
+### node 156 type 1
+157 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.04348 0.02174 0.15217 0.02174 # MATP
+0.06522 0.04348 0.02174 0.02174 # MATP
+0.41304 0.02174 0.06522 0.02174 # MATP
+0.12500 0.25000 0.12500 0.50000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 157 type 1
+158 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.15217 # MATP
+0.02174 0.02174 0.17391 0.02174 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.32609 0.02174 0.04348 0.06522 # MATP
+0.25000 0.12500 0.12500 0.50000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 158 type 1
+159 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.02174 0.63043 0.02174 # MATP
+0.02174 0.04348 0.02174 0.02174 # MATP
+0.02174 0.04348 0.02174 0.02174 # MATP
+0.12500 0.62500 0.12500 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 159 type 1
+160 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.04348 0.02174 # MATP
+0.02174 0.02174 0.50000 0.02174 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.15217 0.02174 0.02174 0.04348 # MATP
+0.12500 0.50000 0.12500 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 160 type 1
+161 -1
+0.57143 0.00000 0.14286 0.00000 0.14286 0.14286
+0.02941 0.00000 0.91176 0.00000 0.02941 0.02941
+0.12500 0.00000 0.62500 0.00000 0.12500 0.12500
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.58696 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.06522 0.02174 0.04348 # MATP
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.62500 0.12500 0.12500 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 161 type 2
+162 -1
+0.66667 0.00000 0.16667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02703 0.00000 0.94595 0.00000 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.86842 0.05263 0.05263 0.02632 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 162 type 2
+163 -1
+0.66667 0.00000 0.00000 0.16667 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13514 0.00000 0.00000 0.83784 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.13158 0.05263 0.76316 0.05263 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 163 type 3
+164 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02941 0.02941 0.91176 0.02941 # MATR
+### node 164 type 3
+165 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.41176 0.05882 0.47059 0.05882 # MATR
+### node 165 type 3
+166 -1
+0.33333 0.08333 0.41667 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02857 0.88571 0.02857 0.02857 0.00000 0.02857
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02941 0.79412 0.02941 0.14706 # MATR
+### node 166 type 1
+167 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.02174 0.23913 0.02174 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.30435 0.04348 0.04348 0.13043 # MATP
+0.12500 0.37500 0.12500 0.37500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 167 type 1
+168 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.08696 # MATP
+0.02174 0.02174 0.13043 0.02174 # MATP
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.39130 0.02174 0.06522 0.06522 # MATP
+0.12500 0.50000 0.12500 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 168 type 1
+169 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.77778 0.02778 0.02778 0.11111 0.02778
+0.10000 0.10000 0.40000 0.10000 0.20000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.10000 0.40000 0.20000 0.10000 0.10000 0.10000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.37500 0.25000 0.12500 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.02174 0.21739 0.04348 # MATP
+0.02174 0.36957 0.02174 0.06522 # MATP
+0.04348 0.02174 0.02174 0.02174 # MATP
+0.12500 0.25000 0.50000 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 169 type 1
+170 -1
+0.57143 0.00000 0.14286 0.00000 0.14286 0.14286
+0.02941 0.00000 0.91176 0.00000 0.02941 0.02941
+0.12500 0.00000 0.62500 0.00000 0.12500 0.12500
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.08696 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.28261 0.04348 0.21739 # MATP
+0.06522 0.02174 0.08696 0.02174 # MATP
+0.25000 0.12500 0.50000 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 170 type 2
+171 -1
+0.66667 0.00000 0.00000 0.16667 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13514 0.00000 0.00000 0.83784 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05263 0.05263 0.52632 0.36842 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 171 type 3
+172 -1
+0.33333 0.08333 0.41667 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02857 0.88571 0.02857 0.02857 0.00000 0.02857
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.08824 0.41176 0.11765 0.38235 # MATR
+### node 172 type 1
+173 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.10000 0.10000 0.50000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.04348 0.02174 0.41304 # MATP
+0.02174 0.02174 0.13043 0.06522 # MATP
+0.04348 0.02174 0.02174 0.02174 # MATP
+0.02174 0.04348 0.04348 0.04348 # MATP
+0.50000 0.25000 0.12500 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 173 type 1
+174 -1
+0.57143 0.00000 0.14286 0.00000 0.14286 0.14286
+0.32353 0.00000 0.61765 0.00000 0.02941 0.02941
+0.37500 0.00000 0.37500 0.00000 0.12500 0.12500
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.15217 # MATP
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.45652 0.06522 0.02174 # MATP
+0.02174 0.04348 0.02174 0.02174 # MATP
+0.25000 0.12500 0.50000 0.12500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 174 type 2
+175 -1
+0.22222 0.00000 0.72222 0.00000 0.05556 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12000 0.00000 0.76000 0.00000 0.12000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11111 0.00000 0.33333 0.00000 0.55556 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.10000 0.30000 0.50000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03846 0.03846 0.19231 0.73077 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 175 type 2
+176 -1
+0.50000 0.00000 0.37500 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02857 0.00000 0.94286 0.00000 0.02857 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11111 0.05556 0.36111 0.47222 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 176 type 2
+177 -1
+0.66667 0.00000 0.00000 0.16667 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13514 0.00000 0.00000 0.83784 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05263 0.23684 0.52632 0.18421 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 177 type 3
+178 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06061 0.00000 0.00000 0.90909 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.08824 0.11765 0.76471 0.02941 # MATR
+### node 178 type 3
+179 -1
+0.90000 0.00000 0.00000 0.00000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.96774 0.00000 0.00000 0.00000 0.00000 0.03226
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.00000 0.50000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.06061 0.75758 0.15152 0.03030 # MATR
+### node 179 type 0
+180 210
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 180 type 4
+181 -1
+0.09756 0.82927 0.04878 0.02439 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 181 type 1
+182 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02564 0.87179 0.02564 0.02564 0.02564 0.02564
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02041 0.02041 0.02041 0.22449 # MATP
+0.02041 0.02041 0.18367 0.02041 # MATP
+0.02041 0.18367 0.04082 0.14286 # MATP
+0.02041 0.02041 0.02041 0.02041 # MATP
+0.20000 0.40000 0.20000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 182 type 1
+183 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02564 0.84615 0.05128 0.02564 0.02564 0.02564
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02041 0.02041 0.02041 0.18367 # MATP
+0.02041 0.02041 0.18367 0.02041 # MATP
+0.02041 0.14286 0.04082 0.02041 # MATP
+0.16327 0.02041 0.08163 0.02041 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 183 type 1
+184 -1
+0.57143 0.00000 0.14286 0.00000 0.14286 0.14286
+0.02778 0.00000 0.91667 0.00000 0.02778 0.02778
+0.16667 0.00000 0.50000 0.00000 0.16667 0.16667
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02083 0.02083 0.02083 0.04167 # MATP
+0.02083 0.04167 0.14583 0.02083 # MATP
+0.02083 0.14583 0.02083 0.10417 # MATP
+0.10417 0.02083 0.22917 0.02083 # MATP
+0.16667 0.33333 0.33333 0.16667 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 184 type 2
+185 -1
+0.66667 0.00000 0.16667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13514 0.00000 0.83784 0.00000 0.02703 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31579 0.23684 0.23684 0.21053 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 185 type 2
+186 -1
+0.50000 0.00000 0.40000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.66667 0.00000 0.30303 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02941 0.23529 0.26471 0.47059 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 186 type 2
+187 -1
+0.17857 0.00000 0.00000 0.78571 0.03571 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13333 0.00000 0.00000 0.80000 0.06667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.50000 0.18750 0.06250 0.25000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 187 type 3
+188 -1
+0.40000 0.20000 0.20000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02703 0.89189 0.02703 0.02703 0.00000 0.02703
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.19444 0.25000 0.38889 0.16667 # MATR
+### node 188 type 1
+189 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02564 0.87179 0.02564 0.02564 0.02564 0.02564
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02041 0.02041 0.02041 0.02041 # MATP
+0.02041 0.02041 0.02041 0.02041 # MATP
+0.20408 0.16327 0.04082 0.18367 # MATP
+0.08163 0.02041 0.04082 0.10204 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 189 type 1
+190 -1
+0.44444 0.11111 0.11111 0.11111 0.11111 0.11111
+0.02564 0.87179 0.02564 0.02564 0.02564 0.02564
+0.28571 0.14286 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02041 0.04082 0.02041 0.04082 # MATP
+0.08163 0.02041 0.02041 0.02041 # MATP
+0.02041 0.42857 0.08163 0.04082 # MATP
+0.04082 0.02041 0.08163 0.02041 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 190 type 1
+191 -1
+0.50000 0.10000 0.10000 0.10000 0.10000 0.10000
+0.02564 0.87179 0.02564 0.02564 0.02564 0.02564
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02041 0.02041 0.02041 0.12245 # MATP
+0.02041 0.02041 0.02041 0.02041 # MATP
+0.02041 0.12245 0.02041 0.16327 # MATP
+0.02041 0.24490 0.06122 0.08163 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 191 type 1
+192 -1
+0.62500 0.00000 0.12500 0.00000 0.12500 0.12500
+0.21622 0.00000 0.72973 0.00000 0.02703 0.02703
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02041 0.02041 0.10204 0.04082 # MATP
+0.06122 0.02041 0.02041 0.02041 # MATP
+0.20408 0.20408 0.04082 0.10204 # MATP
+0.06122 0.02041 0.02041 0.04082 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 192 type 2
+193 -1
+0.35714 0.00000 0.57143 0.00000 0.07143 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10345 0.00000 0.86207 0.00000 0.03448 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23333 0.03333 0.56667 0.16667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 193 type 2
+194 -1
+0.55556 0.00000 0.33333 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02941 0.00000 0.94118 0.00000 0.02941 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05714 0.71429 0.05714 0.17143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 194 type 2
+195 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.94444 0.00000 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08108 0.45946 0.10811 0.35135 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 195 type 2
+196 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.94444 0.00000 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10811 0.18919 0.08108 0.62162 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 196 type 2
+197 -1
+0.71429 0.00000 0.00000 0.14286 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.00000 0.94444 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16216 0.29730 0.29730 0.24324 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 197 type 3
+198 -1
+0.71429 0.00000 0.00000 0.14286 0.00000 0.14286
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.00000 0.88889 0.00000 0.02778
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.05405 0.45946 0.13514 0.35135 # MATR
+### node 198 type 3
+199 -1
+0.66667 0.00000 0.00000 0.22222 0.00000 0.11111
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.23529 0.00000 0.00000 0.73529 0.00000 0.02941
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02857 0.31429 0.31429 0.34286 # MATR
+### node 199 type 3
+200 -1
+0.33333 0.00000 0.00000 0.60000 0.00000 0.06667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03571 0.00000 0.00000 0.92857 0.00000 0.03571
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.24138 0.06897 0.48276 0.20690 # MATR
+### node 200 type 3
+201 -1
+0.71429 0.00000 0.00000 0.14286 0.00000 0.14286
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.00000 0.94444 0.00000 0.02778
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.05405 0.10811 0.75676 0.08108 # MATR
+### node 201 type 3
+202 -1
+0.71429 0.00000 0.00000 0.14286 0.00000 0.14286
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.00000 0.94444 0.00000 0.02778
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.10811 0.13514 0.48649 0.27027 # MATR
+### node 202 type 3
+203 -1
+0.55556 0.11111 0.11111 0.11111 0.00000 0.11111
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.84211 0.07895 0.02632 0.00000 0.02632
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02703 0.10811 0.35135 0.51351 # MATR
+### node 203 type 1
+204 -1
+0.50000 0.10000 0.10000 0.10000 0.10000 0.10000
+0.02703 0.86486 0.02703 0.02703 0.02703 0.02703
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.06383 0.02128 0.02128 0.19149 # MATP
+0.02128 0.02128 0.17021 0.02128 # MATP
+0.02128 0.14894 0.02128 0.12766 # MATP
+0.04255 0.02128 0.06383 0.02128 # MATP
+0.16667 0.16667 0.16667 0.50000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 204 type 1
+205 -1
+0.50000 0.10000 0.10000 0.10000 0.10000 0.10000
+0.02564 0.87179 0.02564 0.02564 0.02564 0.02564
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02041 0.02041 0.02041 0.04082 # MATP
+0.02041 0.02041 0.14286 0.02041 # MATP
+0.02041 0.44898 0.04082 0.06122 # MATP
+0.06122 0.02041 0.02041 0.02041 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 205 type 1
+206 -1
+0.62500 0.00000 0.12500 0.00000 0.12500 0.12500
+0.02703 0.00000 0.91892 0.00000 0.02703 0.02703
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02041 0.02041 0.02041 0.14286 # MATP
+0.02041 0.02041 0.40816 0.02041 # MATP
+0.02041 0.14286 0.02041 0.02041 # MATP
+0.06122 0.02041 0.02041 0.02041 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 206 type 2
+207 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.94444 0.00000 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02703 0.02703 0.91892 0.02703 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 207 type 2
+208 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.94444 0.00000 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.45946 0.02703 0.29730 0.21622 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 208 type 2
+209 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.94444 0.00000 0.02778 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.91892 0.02703 0.02703 0.02703 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 209 type 2
+-1 -1
+0.83333 0.00000 0.00000 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.97143 0.00000 0.00000 0.00000 0.02857 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.40541 0.02703 0.54054 0.02703 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 210 type 5
+211 -1
+0.15000 0.00000 0.82500 0.00000 0.02500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 211 type 2
+212 -1
+0.85714 0.00000 0.00000 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.76471 0.00000 0.00000 0.00000 0.23529 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.18182 0.27273 0.27273 0.27273 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30556 0.30556 0.27778 0.11111 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 212 type 0
+213 219
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 213 type 4
+214 -1
+0.14634 0.75610 0.07317 0.02439 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 214 type 1
+215 -1
+0.54545 0.09091 0.09091 0.09091 0.09091 0.09091
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.37500 0.12500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.04348 0.45652 0.04348 # MATP
+0.02174 0.04348 0.02174 0.02174 # MATP
+0.10870 0.02174 0.06522 0.04348 # MATP
+0.16667 0.50000 0.16667 0.16667 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 215 type 1
+216 -1
+0.72727 0.00000 0.09091 0.00000 0.09091 0.09091
+0.08824 0.00000 0.85294 0.00000 0.02941 0.02941
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.06522 # MATP
+0.17391 0.02174 0.17391 0.02174 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.23913 0.02174 0.10870 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 216 type 2
+217 -1
+0.66667 0.00000 0.25000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.00000 0.93548 0.00000 0.03226 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.34375 0.03125 0.03125 0.59375 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 217 type 2
+218 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.24242 0.00000 0.72727 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.61765 0.02941 0.32353 0.02941 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 218 type 2
+-1 -1
+0.93750 0.00000 0.00000 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.96000 0.00000 0.00000 0.00000 0.04000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.77778 0.07407 0.07407 0.07407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 219 type 5
+220 -1
+0.22500 0.00000 0.75000 0.00000 0.02500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 220 type 2
+221 -1
+0.61538 0.15385 0.07692 0.07692 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02941 0.88235 0.02941 0.02941 0.02941 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.24242 0.21212 0.09091 0.45455 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 221 type 1
+222 -1
+0.61538 0.07692 0.07692 0.07692 0.07692 0.07692
+0.02778 0.83333 0.05556 0.02778 0.02778 0.02778
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.06522 0.02174 0.02174 # MATP
+0.02174 0.52174 0.04348 0.04348 # MATP
+0.02174 0.02174 0.08696 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 222 type 1
+223 -1
+0.61538 0.07692 0.07692 0.07692 0.07692 0.07692
+0.02857 0.85714 0.02857 0.02857 0.02857 0.02857
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02222 0.02222 0.02222 0.06667 # MATP
+0.02222 0.02222 0.02222 0.02222 # MATP
+0.02222 0.55556 0.02222 0.02222 # MATP
+0.02222 0.04444 0.06667 0.02222 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 223 type 1
+224 -1
+0.61538 0.07692 0.07692 0.07692 0.07692 0.07692
+0.02778 0.75000 0.02778 0.02778 0.02778 0.13889
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.11111 0.55556 0.11111 0.11111 0.00000 0.11111
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.12500 0.62500 0.12500 0.12500 # INSR
+0.02174 0.02174 0.02174 0.19565 # MATP
+0.02174 0.02174 0.26087 0.02174 # MATP
+0.02174 0.06522 0.02174 0.21739 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 224 type 1
+225 -1
+0.61538 0.07692 0.07692 0.07692 0.07692 0.07692
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.30435 # MATP
+0.02174 0.02174 0.06522 0.02174 # MATP
+0.02174 0.28261 0.02174 0.06522 # MATP
+0.04348 0.02174 0.02174 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 225 type 1
+226 -1
+0.72727 0.00000 0.09091 0.00000 0.09091 0.09091
+0.02941 0.00000 0.91176 0.00000 0.02941 0.02941
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.02174 0.04348 0.02174 # MATP
+0.02174 0.45652 0.02174 0.02174 # MATP
+0.17391 0.02174 0.04348 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 226 type 2
+227 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05882 0.02941 0.88235 0.02941 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 227 type 2
+228 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.44118 0.32353 0.14706 0.08824 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 228 type 2
+229 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.85294 0.02941 0.08824 0.02941 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 229 type 2
+230 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.32353 0.41176 0.02941 0.23529 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 230 type 2
+231 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08824 0.41176 0.23529 0.26471 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 231 type 2
+232 -1
+0.70000 0.00000 0.00000 0.20000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12121 0.00000 0.00000 0.84848 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11765 0.02941 0.82353 0.02941 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 232 type 3
+233 -1
+0.58333 0.00000 0.00000 0.33333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.00000 0.00000 0.93548 0.00000 0.03226
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.84375 0.09375 0.03125 0.03125 # MATR
+### node 233 type 3
+234 -1
+0.77778 0.00000 0.00000 0.11111 0.00000 0.11111
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02941 0.00000 0.00000 0.94118 0.00000 0.02941
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.37143 0.40000 0.05714 0.17143 # MATR
+### node 234 type 3
+235 -1
+0.77778 0.00000 0.00000 0.11111 0.00000 0.11111
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02941 0.00000 0.00000 0.94118 0.00000 0.02941
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.40000 0.25714 0.05714 0.28571 # MATR
+### node 235 type 3
+236 -1
+0.63636 0.09091 0.09091 0.09091 0.00000 0.09091
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05556 0.86111 0.02778 0.02778 0.00000 0.02778
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.68571 0.25714 0.02857 0.02857 # MATR
+### node 236 type 1
+237 -1
+0.61538 0.07692 0.07692 0.07692 0.07692 0.07692
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.02174 0.50000 0.02174 # MATP
+0.02174 0.06522 0.02174 0.13043 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 237 type 1
+238 -1
+0.72727 0.00000 0.09091 0.00000 0.09091 0.09091
+0.02941 0.00000 0.91176 0.00000 0.02941 0.02941
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.04348 # MATP
+0.02174 0.02174 0.17391 0.02174 # MATP
+0.02174 0.43478 0.02174 0.02174 # MATP
+0.08696 0.02174 0.02174 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 238 type 2
+239 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02941 0.20588 0.05882 0.70588 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 239 type 2
+240 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08824 0.35294 0.47059 0.08824 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 240 type 2
+241 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.91176 0.02941 0.02941 0.02941 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 241 type 2
+242 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02941 0.02941 0.91176 0.02941 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 242 type 2
+243 -1
+0.80000 0.00000 0.00000 0.10000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02941 0.02941 0.85294 0.08824 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 243 type 3
+244 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02941 0.05882 0.88235 0.02941 # MATR
+### node 244 type 3
+245 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.88235 0.02941 0.02941 0.05882 # MATR
+### node 245 type 3
+246 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.02941 0.91176 0.02941 0.02941 # MATR
+### node 246 type 3
+247 -1
+0.80000 0.00000 0.00000 0.10000 0.00000 0.10000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.00000 0.93939 0.00000 0.03030
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.08824 0.02941 0.85294 0.02941 # MATR
+### node 247 type 3
+248 -1
+0.66667 0.08333 0.08333 0.08333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02857 0.88571 0.02857 0.02857 0.00000 0.02857
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.88235 0.02941 0.02941 0.05882 # MATR
+### node 248 type 1
+249 -1
+0.61538 0.07692 0.07692 0.07692 0.07692 0.07692
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.02174 0.47826 0.02174 # MATP
+0.02174 0.08696 0.02174 0.02174 # MATP
+0.04348 0.02174 0.13043 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 249 type 1
+250 -1
+0.61538 0.07692 0.07692 0.07692 0.07692 0.07692
+0.02778 0.86111 0.02778 0.02778 0.02778 0.02778
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.02174 0.15217 0.02174 # MATP
+0.02174 0.08696 0.02174 0.02174 # MATP
+0.47826 0.02174 0.02174 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 250 type 1
+251 -1
+0.72727 0.00000 0.09091 0.00000 0.09091 0.09091
+0.02941 0.00000 0.91176 0.00000 0.02941 0.02941
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02174 0.02174 0.02174 0.06522 # MATP
+0.02174 0.02174 0.02174 0.02174 # MATP
+0.02174 0.58696 0.02174 0.04348 # MATP
+0.04348 0.02174 0.02174 0.02174 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 251 type 2
+252 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02941 0.02941 0.88235 0.05882 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 252 type 2
+253 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03030 0.00000 0.93939 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23529 0.55882 0.02941 0.17647 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 253 type 2
+254 -1
+0.80000 0.00000 0.10000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.39394 0.00000 0.57576 0.00000 0.03030 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.35294 0.02941 0.05882 0.55882 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 254 type 2
+255 -1
+0.90909 0.00000 0.04545 0.00000 0.04545 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04762 0.00000 0.90476 0.00000 0.04762 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.04545 0.04545 0.86364 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 255 type 2
+256 -1
+0.36364 0.00000 0.59091 0.00000 0.04545 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04762 0.00000 0.90476 0.00000 0.04762 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.86364 0.04545 0.04545 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 256 type 2
+-1 -1
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.96875 0.00000 0.00000 0.00000 0.03125 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.91176 0.02941 0.02941 0.02941 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/Cove/Demos/7SL-euk.fa b/Cove/Demos/7SL-euk.fa
new file mode 100644
index 0000000..44435b6
--- /dev/null
+++ b/Cove/Demos/7SL-euk.fa
@@ -0,0 +1,251 @@
+> ZEA.M._A
+NCCgAGCUCuguagcgaGAGCUuguaaCCCGagCGGGGGCauuaAGGUGG
+UGugaaUGCUUugcGAuggcuUUCUGggcccugGGCUCGuugUgacacug
+gcCGGCUUGcCcaUCCCAagUUGGuAGuguCUGguGGGGgcucuAGCgaa
+aGCUuuggguCUCUgCAGaCcuggaGcGGCAGgaauggCGuaaggCUGgc
+uucaCAGagcagCGaucaCUGCCgaCUcCCAAcggUGGGAgGauaaCGaA
+GCCGcugcAcuuUGAGCCuaacucaggcuCAGAAccUCacuAAGCAaacC
+ACCAUCUuu
+> ZEA.M._B
+NCCgAGCUCuguagcgaGAGCUuguaaCCCGagCGGGGGCauuaAGGUGG
+cGcggaUGCUuugcGAugguuUCUGggccugGGCUCGuugUgacucuagc
+CGGCUUGcCcaUCCCAagUUGGuAGuguCUGacGGGGcucuAGCgaaaGC
+UuuggguCUCUgCAGaCcuacaGcGGCAGgaauggCGuaaggCUGgcuuc
+aCAGagcagCGaucaCUcGCCcaCUuCCAAcggUGGGAgGauaaCAAGCC
+GcugcAcuuUGAGCCcaacacagaccCAGAuccUCucuuAGCAaacCaCC
+AUCUuu
+> ZEA.M._C
+NCCgAGCUCuguagcgaGAGCUuguaaCCCGagCGGGGGCauuaAGGUGG
+UGuggaUGCUUgguaccguGUCUuugccugGGUUCAuggugUgccuuugu
+UGGCCUGcCcgUUCCAagUUGGuAGuggCCGuuGGAAgcuugGGCguagG
+CCcugggcUUCCuUGGaCcuauaGuGGCAGgaacggCGugaggCUGucuu
+caCAGagcagCGaucaCUGCCggCUaUUAAcggUGGAAgGauaaCAGGCC
+AcugcAgcaUGGGCUcgcuuaaggccUAGACuucauacuaAAGCAgacCA
+CCAUUUuu
+> ZEA.M._D
+NCCgAGCUCuguagcgaGAGCUuguaaCCCGagCGGGGGCauuaAGGUGG
+UGcggaUuCUUugcGAuggcuUUCUGggcccgGGCUCGcuaugUgccuuu
+ggcCGGCCUGcCcgUCCCAagUUGGuAGuggCUGgcGGAGgcuuuAGCgg
+aaGCUuugguCUCUcCAGaCcugaaGuGGCAGgaauggCGugaggCUGgc
+uucaCAGagcagCGaucaCUcGCCcgCUuCCAAcggUGGGAgGauaaCAG
+GCCGcugcAcuuCGAGCCcaacucaggccCAGAGccUCacuAAGcAgacC
+ACCAUCUu
+> ZEA.M._E
+NCCgAGCUCuguagcgaGAGCUuguaaCCCGagCGGGGGCauuaAGGUGG
+UGcggaUUCUUugcGAuggcuUUCUGggcccgGGCUCGcuaugUgccuuu
+ggcCGGCCUGcCcgUCCCAagUUGGuAGuggCUGgcGGAGgcuuuAGCgg
+aaGCUuugguCUCUcCAGaCcugaaGuGGCAGgaauggCGugaggCUGgc
+uucaCAGagcagCGaucaCUcGCCggCUuCCAAcggUGGGAgGauaaCGG
+GCCGcugcAcuuCGAGCCcaacucaggccCAGAGccUCacuAAGCAgacC
+ACCAUCUuu
+> ZEA.M._F
+NCCgAGCUCuguagcgaGAGCUuguaaCCUaagcGGGGGCauuaAGGUGG
+UGuggaUGUUUccuGAcggaUUCUGggccugGGCUUGuaugUgccacugg
+cCGGCCUGcCcgUUCCAagUUGGuuGuggCUGguGGGGcucgGGCgaagG
+CCugggcCUCUuUAGaCcugaaGcGGCAGgcauggCGugaggCUGgcuuc
+aCAGagcagCGaucaCUcGCCcgCuuCCAAcggUGGGAgGauaaCAGGCC
+GcugcAuugCAAGCCcaacucggucCAGAGccUCauuAAACAgacCACCA
+UCUuu
+> ZEA.M._G
+NCCgAGCUCuguagcgaGAGCUuguaaCCCGagCGGGGGCauuaAGGUGG
+UGcggaUuCUUugcGAuggcuUUCUGggcccgGGCUCGcuaugUgccuuu
+ggcCGGCCUGcCcgUCCCAagUUGGuAGuggCUGgcGGAGgcuuuAGCgg
+aaGCUuugguCUCUcCAGaCcugaaGuGGCAGgaauggCGugaggCUGgc
+uucaCAGagcagCGaucaCUGCCcgCUuCCAAcggUGGGAgGauaaCGGG
+CCGcugcAcuuCGAGCCcaacucaggccCAGAGccUCacuAAGcAgacCA
+CCAUCUuu
+> ZEA.M._H
+NCCgAGCuCuguagcgaGuGCUuguaaCCCGagCGGGGGCaauaagguag
+uguggaugucaauuguggugcaugugccugGGUCUAgugCuacaaacugU
+GGacCAcCcaUUCCAagUUGcGuaGuggGUUucGGAUgccuuGGCgaaaG
+CUuugcAUCCcAACaCUaaAGuGGCGGacauugCGugaggCUGgcuucaU
+AGagcagCGaguaCCGCCcgCcaCCAGcggUGGAAgGauaaUGagUCGcu
+auGcuaUAGGCCcaau
+> TRI.A._A
+NCCgAGCUCaguugcgaGAGCUuguaaCCCGagUGGGGGCauuaaaguGa
+UGugaacGCUGuugUAgcgCUGCGggccugGUCUGGgugUgcuacugcUG
+GCCCGcCcgUUCCAagUUGcGuAGuggACCgccUGGGgcuuauGCgaaaG
+CuggguCUCAcGGUcCAuaaUGuGGCAGgcacagCGugaggCUGgcuuca
+CAGagcagCGacaaCUGCCcgCUuCCAAcggUGGAAgGauaaUGGGCCGc
+ugcAcucCUAGGCcaauugggccuCGCAGccUAcucCAGCagacCAcC
+> TRI.A._B
+NCCgAGCUaguugcgggAGCUugucaCCCAugUGGGGGCauugAGGcGGU
+GuggaUGCUuggUGcgguuUGuuggccugGGCUUGugaugUaaccuugcU
+GGCCUGcCcgUUCCAagUUGGuAGugggCUgGGuGgcuggGGCgaaaGCU
+ucgccUuCUcAGgcCUuaAGuGGCAGgcaccaCGuuaggCUGguuucaCA
+GagcagCGacaaCUGCCgCUuCCAAcggUGGAAgGauaaCAGGCCGcugc
+AgcaUGGGCCcgcucugggccuccUAcccCGccauAGCAgacCACCaUCU
+uu
+> TRI.A._C
+ggUGGUCUGcCcgUUCCAagUUGaGuAGuggACCgcuUGGGgccuauGCg
+aaaGUugggcCUCAcGGUcCAuaaUGuGGCAGgcaccgCGugaggCUGgc
+uucaCAGagcagCGacaaCUGCCcgCUuCCAAcggUGGAAgGauaaCGGG
+CCGcugcacuccuaggccgcuugggccucguagccuacuccagcgaccac
+cauc
+> ARA.THA.
+GUCgAGCUAaguaacaaUAGCUuguaaCCCAugUGGGGACauuaAGAUGG
+UGggaCAcUGgUUcgguUccUCggaucgGUUCUGaugugGgcauguuucU
+GAGCUGcCcaGUCCAagCUGUgAGuaAUUaguGUugaguugAGCgaagGC
+UuggcucauGCaGGUucUagaGucGGAGGguaaugCGugaggCUGgcuuc
+aCAGagcagCGacuaCUUCCcgCUuACAGcagUGGACgGaucaCGGUUUA
+gcguCgcuCAGAACcacuauggccuGcuGGuccGAucucaUAUGaacCAC
+CAUUUu
+> HUM.JAP.
+GGCCUaGcaacgUGGGCCuguaaCCCAagUGGGggcauguGGGAGAUGgg
+acuuuggGUcagcccauuggaucgGGUCCAguguuAgcugcuugcUGGUC
+UGcCcaUUCCAagCCGAgAGuugGGCuguGUGaucugGGCgaagGCUggg
+gucgCACaGCUcCUaaAGaGGAGGgcaaugCGugaggCUGguuucaCAGa
+gcagCGaccaCCUCCcgCUcUCGGcagUGGAAgGauaaCGGGUCGgugcU
+acuUGGGCCaccauggucacugcaugcACucuuaaucagacCAUCUCUUu
+u
+> HUM.L._A
+GCCGGUCUuaGcaacgUGGGCCuguaaCCCAagUGGGGGCauguGGGAAA
+UGggacuuuggGUcaacCUAGuggaucgGGUCCAguguuAgcugcuuacU
+GGUCUGcCcaUUCCAagCCGGgAGuugggcugaGUGaccugGgCgaagGg
+CuggguugCGCacgucCUagAGuGGAGGgcaaugCGugaggCUGgcuuca
+CAGagcagCGacuaCCUCCcgCUcUCGGcagUGGAAgGauaaCGGGCCGg
+ugcUaccUGGGUCcaccaugcuucaCUAGgcugACucuuaauaggacCAU
+UUCUUuu
+> HUM.L._B
+GGCCUuaGcaacgUGGGCCuguaaCCCAagUGGGggcauguGGGAAAUGg
+aacauuggGUcagcCCAGuggaucgGGuCCAguguuAgcugcuuacUGGU
+CUGcCcaUUCCAagCCGGgAGuugGGCugaGUGaccugGGCgaagGCCug
+gguugCGCaGCUcCUagAGuGGAGGgcaaugCGugaggCUGguuucaCAG
+agcagCGacuaCCUCCcgCUcCCGGcagUGGAAgGauaaCGGGCCGgugc
+UacuUGGuCCaccauguucaCUGGuccugACucuuaaucggacCAUUUCC
+Uuu
+> HUM.L._C
+GGuCUuaGcaacuUGGuCCuguaaCCCAagUGGGggcauguGGGAAAUGg
+aacuuuggGUcaacCCAGugguncgGGncCAgugcuagcugcuuacCcGg
+CUGcCcaUUCCAagCCGGgAGgugGGcugaGgGaccugGGCgaagGCUnn
+nggngCgCaCUccUagAcuGGAGGgcaaugCGugaggCUGgcuucaCAGa
+gcagCGacuaCCUCCcgCUcUCGGcagUGGAAgGauaaCGGgCcGgugcg
+ccuUGagCCaacacuguucaaCUGGgcugACucuuaauaggacCAUUUCU
+Uuu
+> LYC.ESC.
+GgCgAGCUUaGuaacgUGGGCUuguaaUCCAagUGGAGaCaucaAaGUGG
+UUgaaUAUUGgGCuuuaCCAgaagguugGGCUUGgugGgcuuaguucUGG
+CCUGcCcugUCCAagCACAgAGuugGAUCucGAGGCCCAaAUgaaaAUaU
+GGGCUUCuuGAuUCCUaaAGuGGGGCggaccgCAugaggCUGgcuucaCA
+GagcagUGaacGCUCCcgCUcUGUGcagUGGAagGauaaUGGGUCGgugu
+CuuauCAAGUUcaguaacgccuaaUGGguuGCucCAAUAaacAACCACcU
+uu
+> CIN.HYB.
+ACCgGGCUugGuaacgCuAGUCuauaaCUCAagUGAGGGUaucaAAGUGG
+GUugaaCUuUgaGCuuggcUUAGcuaguugGGUCUGuagaCaccgcaccU
+GGCUUGcCcgUUCCAagUCGAgAGuggGUUCAUGUUuCCUGAGCgaagGC
+UCGGGuGAUGUGAGCuuUagaAucGGGGGgcaaugCGuuaggCUGguuuc
+aCAGagcugCGaaaaCCUCUacCUcUCGAcugUGGAAgGauuaCAAGCCG
+gaguGucuUAGGCUcauauaaccagcCUGGcuaGCccaAcAGgacACCCA
+UUU
+> PER.AME.
+GaUCcGuaacgCGAgCuuauaaCUCGagCGGGggcuauaaagguggugug
+gaacgagcugacucgaccugccggguugggccagggacugcggugcuggc
+ucgcccguuccaagucggguagugGGCCAuGuGGCUUGGGCgaagGCCUG
+GGUUuCuUGGCC
+> COL.BLU.
+CCgaaCCucAuuaccUuGGccuguuacCCCAaguUGGGGGucuuuaaggu
+uauuugaukuukggccuaugcuacckgcckggcucugguccugcuuauuc
+uggcccgcccguuccaagccgggaguugGCCcauGuGGUUUAUGCgaagG
+UAUAGGCUuCgguGGUucc
+> CRY.MOR.
+aaagugguuggacuuugucuuggancagnugguuggguncgcccgcgcag
+cacccggcccgnncauuncaagccgagaggccggnnang
+> GYN.AUR.
+ACCgGGCuugGcaacgCuuGCCuauaaCUCAagUGAGGGUaagaaaaagg
+guuggaauugaaaggg
+> BEN.HIS.
+GCCgAGCUCaGcagugUGAGCUugcaaYUCGaaCGGGGGCaucaaggugg
+uuggagguuggacagnacacagagcagggcauuucgagacaca
+> YAR.L._A
+CUUagcuguaaUGGCauuuuGUCGGAGugguaAAUCGUcuucUUGUuguG
+cgUUCgagucuUGggcucugCAcuugGCCAUUUGGUUGuCcuUuCCGaaU
+UCUGCgguugaUGGGcgUCUCgGuCUGAguaaUCGGcUuuGAGAuuUCCG
+uUCuaaGAuUAACUgggaaaCUucaguGGAgcaaUCCagcagAGauccAG
+UUGccGUGGGuAuggCGGuGgGaucgCAACCAAGUGGUauaUGuUAugGA
+AgaUauuuACGAucACGAUU
+> YAR.L._B
+agcuguaaUGGCauuuuGUCGgagugguaAaUCGccuucUUGUuguGCgU
+UCgaguucUGgacucugCAcuggGCUACUUUGUUGuCcuUuCCGaaUUCU
+GCgguugaUGGGcgUCUCgGuCUGAguaaUCGGcUuuGAGAuuUCCGuUC
+uaaGAuUAACUgggauaCUucaguGGAgcaaUCCagcagAGauccAGUUG
+ccGUGGGuAuggCGGuGgGauagCAACAAAGUGGUauaUGuUAugGAAgG
+UauuuGCAAucaCGAcUcuc
+> SCH.POM.
+cGCuguaaugGCuUGGUCgaaGUGUUUAgUACUcCCAauagUGCAUguuC
+gGUGgucucggguucgAGUCUCGcUuUCGauccCUCGAucuGCCAcgUcU
+guuCGAAGAguagUCUUCGugGcAacUGGCaGUuaaACcguGUAguaccG
+AUggaggUUGgaaaCAAugcacAUCacUACcgggucUUGGGcagugCGAu
+AgcgaUGGGAUUcaccuuCGCaGgauGUGCAUGGaAGUAUAAACACaacG
+GUCGuu
+> TET.THE.
+GCCagGGUAgcaaUACCugugucuauauguGGCauaaacAAUguaGGUUg
+UGAUAGaUAgGAUaugaGAguuugaugaGACAGUUugcuaaGAGUGUGcC
+cgCUCCAaaCAAUGAGuUGCUauGGUGguaaCCUAguaaUAGGacucCAC
+CagGGCAUUaaaGAgcUAAGgaaacgCCucaggCUGgcaaCAGaacagGG
+aaaaCUUGccgCUUGUUGuggUGGAAgGauaaCAUACUCauuAACUGUCa
+aacuaaUCgGUUcUACUAUCAaAGCCagacAUU
+> TET.ROS.
+GCCagGGUAgcaaUGCCugugaccucguguGGCauaaacAaUguaGGUUa
+GAAUAGuCAgAGUaugaGAguuugaugaGACAGUUugcuaaGAGUGUGcC
+cgUUCCAaaCAGUGAGuUGCUauGGUGgaaaCCUAguaaUAGGacuuCAC
+CagGGCAUUaaaGAgcUGAGgaaccgCCucaggCUGgcaaCAGaacagGG
+aaaaCUUGccgCUUAUUGuggUGGAAgGauaaCAUACUCauuAACUGUCa
+agcuaaUCgGUUcUGCUAUUCuGAUCagacAcU
+> TRY.BRU.
+AGCcgGAGCGcauUGCUCuguaaCCUucgGGGGCUgaucCCGCUuaGCGG
+gGACGuCUuGGacaaGCGggggUUCUGuUGCguugaCUUGGUGuUcugCu
+ugguuGCGUGucGGUGuuGAGGucGCCaCUguagAGaGGCguUCUCgCGC
+CgUUaaAGUgGGGggaacGGGucaggCCGgugaCGGagcagCCCacCUUG
+cgCACGUucccguucGagAagcaCACCGAGgaGCAucuCAGGAcuuugCG
+CcCCaAGUGUCgUCGCgaGGCGG
+> XEN.LAE.
+GCCgGGCGCuGuggcgUGUGCCuguaaUCCAgcuacuUGGAGGCuuGGGC
+UGUcggaUCGCUugaGUcCAGGaguuCUGggcugCACUGaGCUAUgucga
+uCGGGUGuCcgCACUAaguUCGGUAuCAAUauGGUGuuCCuGGGggagCC
+UcGGauCACCagGUUGcUCuaaGGaGGGGUgaaccGGCccaggUCGgaaa
+CGGagcagGUCaaaACCCCcgUGCCGAucagUAGUGgGaucgCGCCUGug
+aAUAGCCGGUGcagaaCAGCCUGaACaacacAGCGAgacACAGUUCu
+> DRO.MEL.
+GACugGAAGgUuggcaGCUUCuguaaCUCAcgcuucugUGAGGUCuGAUU
+GUGggaUGGCCugaGGcUGGGaucuaCUGcguagcggacCAGcUCAUguu
+gaCGGaACGuCcgCACUAagCUUGCCAuCAAUauGGGUgcCAUGGAggag
+UCCGUGgcAUUCagGUUGgCUaaGGaGGGAUgaaccgGGccaggGGUgaa
+aACCagcagCCaagaGUUCCcgUGGUAGGcagUAGUGgGauagCGUaCCG
+gaGUGGaCUGccguuauCAGCCCAaCCgauauGGUUGgacCACAAUCuuu
+> RAT.RAT.
+GCCgGGCGcgGuggcgCaCGCCuguagUCCCagcuacucGGGAGGCuGAG
+GacaGaggaUCGCUugaGUcCAGGaguuCUGggcugUAGUGcGCUAUgcc
+gauCGGGUGuCcgCACUAaguUCGGCAuCAAUauGGUGacCUCCCGggag
+CGGGGGacCACCagGUUGCCuaaGGaGGGGUgaaccGGCccaggUCGgaa
+aCGGagcagGUCaaaACUCCcgUGCUGAucagUAGUGgGaucgCGCCUGu
+gaAUAGCCACUGcacucCAGCCUGgGCaacauAGCGAgacCccgUCUCuu
+> MUS.M.B1
+gaGCCgGGUGUgGuggcgCACACCuuuaaUCCCagcacucGGGAGGCaGA
+GGCAGGcggaUUUCUgaGUucgaggccagccuggucuacaaagugagcuc
+caggacagccaggGCuacacAGAGAaacCCUGUCUC
+> MUS.MUS.
+GCCuguagUUCCagcuacucGGGAGGCugagacaggaggaucgcuugagu
+ccaagaguucugggcuguagugcgcuaugccgaucggguguccgcacuaa
+guucggcaaCAAUauGGUGacCUCCCGggagCGGGGGacCACCaaGUUGc
+> CAN.SPE.
+GCCgGGCGCgGuggcgCGCGCCuguagUCCCagcuacucGGGAGGCuGAG
+GCaGGaggaUCGCUugaGCcCAGGaguuCUGggcugCAGUGcGCUAUgcc
+gauCGGGUGuCcgCACUAaguUCGGCAuCAAUauGGUGacCUCCCGggag
+CGGGGGacCACCagGUUGCCuaaGGaGGGGUgaaccGGCccaggUCGgaa
+aCGGagcagGUCaaaACUCCcgUGCUGAucagUAGUGgGaucgCGCCUGu
+gaAUAGCCACUGcacucCAGCCUGuGCaacauAGCGAgacCCcGUCUCu
+> HOM.S._A
+GCCgGGCGCgGuggcgCGUGCCuguagUCCCagcuacucGGGAGGCuGAG
+GCuGGaggaUCGCUugaGUcCAGGaguuCUGggcugUAGUGcGCUAUgcc
+gauCGGGUGuCcgCACUAaguUCGGCAuCAAUauGGUGacCUCCCGggag
+CGGGGGacCACCagGUUGCCuaaGGaGGGGUgaaccGGCccaggUCGgaa
+aCGGagcagGUCaaaACUCCcgUGCUGAucagUAGUGgGaucgCGCCUGu
+gaAUAGCCACUGcacucCAGCCUGuGCaacauAGCGAgacCCcGUCUCuu
+> HOM.S._B
+GCCgGGCGCgGuggcgCGUGCCuguagUCCCagcuacucGGGAGGCuGAG
+GUGGGaggaUCGCUugaGCcCAGGaguuCUGggcugUAGUGcGCUAUgcc
+gaugGGGUGuCcgCACUAaguUCGGCAuCAAUauGGUGacCUCCCGggag
+CGGGGGacCACCagGUUGCCuaaGGaGGGGUgaaccGGCccaggUCGgaa
+aCGGagcagGUCaaaACUCCcgUGCUGAucagUAGUGgGaucgCGCCUgu
+gaAUAGCCACUGcacucCAGCCUGaGCaacauAGCGAgacCCCGUCUCu
diff --git a/Cove/Demos/K11H3frag.fa b/Cove/Demos/K11H3frag.fa
new file mode 100644
index 0000000..7e62aaa
--- /dev/null
+++ b/Cove/Demos/K11H3frag.fa
@@ -0,0 +1,11 @@
+>K11H3/930125 : fragment from 29971 to 29472 of original 33000 length, 500 bases, 9599 checksum.
+GTGCAGTCATGTCCGAGTGGTTAAGGAGATTGACTAGAAATCAATTGGGC
+TTTGCCCGCGTAGGTTCGAATCCTGCTGACTGCGAACGTTTTTGTTCTTT
+TTCTATTTTCTATCGATTATTTGTTCAAGATATAATCGAATTTTTTTGAT
+ATATAGGCTGTATTATCTTAGGTTCAAAAATGCAAGGCACAATTTTTCTT
+TTAATGGTTTTTTAAGTTAGAAAAAGTATTTCGGATTTTGTTTTCTATTT
+CTCTTCTACCCATACAGTACTTTGAACTAGATGTAGATTATCGTCAATCA
+CTGAGTCTCTAATATACTTCCATTACTGACAATTCTCTATTTTACTTTCC
+ATCTTGCAAGCAGGCACATGACCCCGCGTCCGCTTTCTCTATTCCTCTTT
+CGTCGAGTATTCGGCACGCAGTCATGTCCGAGTGGTTAAGGAGTTTGACT
+CGAAATCAAATGGGCTCTGCCCGCGTAGGTTCGAATCCTGCTGACTGCGA
diff --git a/Cove/Demos/TRNA2.cm b/Cove/Demos/TRNA2.cm
new file mode 100644
index 0000000..d2e9548
--- /dev/null
+++ b/Cove/Demos/TRNA2.cm
@@ -0,0 +1,1154 @@
+### cove V2
+72 nodes
+### node 0 type 6
+1 -1
+0.00846 0.00000 0.00000 0.80479 0.02326 0.16350
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.00000 0.50000 0.02778 0.44444
+0.00137 0.00000 0.00000 0.33789 0.00000 0.66074
+0.05556 0.02778 0.86111 0.05556 # INSL
+0.33060 0.66530 0.00137 0.00273 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 3
+2 -1
+0.06250 0.56250 0.06250 0.25000 0.00000 0.06250
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.99503 0.00071 0.00213 0.00000 0.00142
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.33333 0.16667 0.16667 0.00000 0.16667
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.20000 0.40000 0.20000 0.20000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.56676 0.06605 0.22443 0.14276 # MATR
+### node 2 type 1
+3 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00071 0.99647 0.00071 0.00071 0.00071 0.00071
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.09091 0.54545 0.09091 0.09091 0.09091 0.09091
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00281 0.00561 0.00351 0.14727 # MATP
+0.00771 0.00281 0.07433 0.00210 # MATP
+0.00070 0.57153 0.00070 0.08555 # MATP
+0.08555 0.00070 0.00210 0.00701 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.11111 0.33333 0.11111 0.44444 # MATR
+### node 3 type 1
+4 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.00070 0.00070 0.12159 # MATP
+0.00349 0.00140 0.32565 0.00280 # MATP
+0.00140 0.37596 0.00210 0.03774 # MATP
+0.11461 0.00070 0.00839 0.00210 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 4 type 1
+5 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00349 0.00210 0.00140 0.16771 # MATP
+0.00280 0.00140 0.27533 0.00210 # MATP
+0.00070 0.29979 0.00210 0.05451 # MATP
+0.16841 0.00140 0.01328 0.00349 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 5 type 1
+6 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99507 0.00070 0.00141 0.00141 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.20000 0.20000 0.20000 0.40000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00839 0.00280 0.00140 0.18728 # MATP
+0.00559 0.00489 0.20685 0.00210 # MATP
+0.00210 0.29769 0.00140 0.05031 # MATP
+0.17750 0.00070 0.04892 0.00210 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 6 type 1
+7 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00280 0.00629 0.00420 0.27832 # MATP
+0.00490 0.00490 0.23007 0.00280 # MATP
+0.00210 0.20280 0.00210 0.04895 # MATP
+0.16014 0.00140 0.04266 0.00559 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 7 type 1
+8 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99507 0.00141 0.00070 0.00141 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.20000 0.20000 0.40000 0.20000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00140 0.00140 0.00210 0.19497 # MATP
+0.00419 0.00140 0.19846 0.00349 # MATP
+0.00070 0.19427 0.00070 0.02935 # MATP
+0.28302 0.00210 0.05870 0.02376 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 8 type 1
+9 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00212 0.00000 0.99365 0.00000 0.00071 0.00353
+0.20000 0.00000 0.40000 0.00000 0.20000 0.20000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.14286 0.00000 0.71429 0.00000 0.00000 0.14286
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.12500 0.37500 0.12500 0.37500 # INSR
+0.00070 0.00280 0.00070 0.36014 # MATP
+0.00070 0.00070 0.02867 0.00070 # MATP
+0.00140 0.35245 0.00070 0.03916 # MATP
+0.20699 0.00070 0.00140 0.00210 # MATP
+0.20000 0.20000 0.20000 0.40000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 9 type 2
+10 -1
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00636 0.00000 0.98799 0.00000 0.00565 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09091 0.09091 0.63636 0.18182 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04799 0.00423 0.01764 0.93013 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 2
+11 -1
+0.90000 0.00000 0.00000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99290 0.00000 0.00000 0.00000 0.00710 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.90909 0.00000 0.00000 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.38462 0.30769 0.15385 0.15385 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.64352 0.03402 0.30191 0.02055 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 0
+12 25
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 4
+13 -1
+0.00070 0.99789 0.00070 0.00070 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 1
+14 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00140 0.00140 0.00419 0.06988 # MATP
+0.00140 0.00140 0.03494 0.00140 # MATP
+0.00210 0.72746 0.00210 0.12229 # MATP
+0.02446 0.00070 0.00280 0.00210 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 14 type 1
+15 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.00140 0.00140 0.02935 # MATP
+0.00140 0.00070 0.59399 0.00070 # MATP
+0.00070 0.05311 0.00140 0.00210 # MATP
+0.29140 0.00349 0.01677 0.00140 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 15 type 1
+16 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00419 0.00419 0.00070 0.09154 # MATP
+0.00769 0.00140 0.19147 0.00070 # MATP
+0.00210 0.16422 0.00070 0.00349 # MATP
+0.50943 0.00140 0.01607 0.00070 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 16 type 1
+17 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00352 0.00000 0.99507 0.00000 0.00070 0.00070
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.09574 0.00349 0.00769 0.03634 # MATP
+0.01048 0.00349 0.34172 0.00210 # MATP
+0.12788 0.00978 0.00489 0.02096 # MATP
+0.18169 0.00419 0.10273 0.04682 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 17 type 2
+18 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00707 0.00000 0.99222 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.94770 0.00495 0.01979 0.02756 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 18 type 2
+19 -1
+0.87500 0.00000 0.06250 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11886 0.00000 0.88043 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.35562 0.01991 0.56899 0.05548 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 19 type 2
+20 -1
+0.98901 0.00000 0.00549 0.00000 0.00549 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.55609 0.00000 0.44310 0.00000 0.00081 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10887 0.21290 0.03871 0.63952 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.06552 0.00000 0.93333 0.00000 0.00115 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00544 0.00000 0.75318 0.00000 0.24138 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00725 0.00000 0.96377 0.00000 0.02899 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09353 0.25180 0.02158 0.63309 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07790 0.23551 0.01630 0.67029 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.96721 0.00000 0.01639 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00074 0.00000 0.99853 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09111 0.03086 0.83248 0.04555 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.96721 0.00000 0.01639 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13750 0.00000 0.86176 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05217 0.03527 0.83174 0.08082 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.01215 0.00000 0.96761 0.00000 0.02024 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00341 0.00000 0.50681 0.00000 0.48978 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00789 0.00000 0.75526 0.00000 0.23684 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16689 0.16032 0.06965 0.60315 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09702 0.10298 0.04426 0.75574 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+-1 -1
+0.91667 0.00000 0.00000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99929 0.00000 0.00000 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.87722 0.01490 0.06388 0.04400 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 5
+26 -1
+0.00212 0.00000 0.99718 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.75000 0.00000 0.00000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99505 0.00000 0.00000 0.00000 0.00495 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.87500 0.00000 0.00000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.45730 0.03529 0.41637 0.09104 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 0
+28 41
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 4
+29 -1
+0.00070 0.99648 0.00211 0.00070 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 1
+30 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99436 0.00070 0.00070 0.00141 0.00211
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.14286 0.42857 0.14286 0.14286 0.00000 0.14286
+0.20000 0.20000 0.20000 0.40000 # INSL
+0.16667 0.50000 0.16667 0.16667 # INSR
+0.01190 0.00420 0.00210 0.14206 # MATP
+0.01470 0.00910 0.30861 0.01260 # MATP
+0.00560 0.06018 0.00070 0.06578 # MATP
+0.29531 0.00700 0.04759 0.01260 # MATP
+0.16667 0.33333 0.33333 0.16667 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 30 type 1
+31 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.00070 0.00070 0.16073 # MATP
+0.00070 0.00140 0.34871 0.00419 # MATP
+0.00070 0.08456 0.00070 0.02166 # MATP
+0.32984 0.00070 0.03215 0.01188 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 31 type 1
+32 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99578 0.00070 0.00141 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00210 0.00839 0.00070 0.23690 # MATP
+0.00280 0.00140 0.13697 0.00070 # MATP
+0.00070 0.35989 0.00140 0.00769 # MATP
+0.23201 0.00140 0.00349 0.00349 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 32 type 1
+33 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00140 0.00280 0.00070 0.09161 # MATP
+0.00140 0.00070 0.20909 0.00140 # MATP
+0.00070 0.59720 0.00070 0.05734 # MATP
+0.01608 0.00140 0.01049 0.00699 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.20000 0.20000 0.20000 0.40000 # MATR
+### node 33 type 1
+34 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00070 0.00000 0.99789 0.00000 0.00070 0.00070
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00210 0.00419 0.00210 0.34591 # MATP
+0.00140 0.00070 0.24948 0.00140 # MATP
+0.00140 0.19846 0.00280 0.01188 # MATP
+0.11950 0.00489 0.04333 0.01048 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99718 0.00000 0.00212 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.50000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02114 0.60395 0.00634 0.36857 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00070 0.02607 0.00070 0.97252 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05144 0.18323 0.33756 0.42777 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30444 0.19662 0.20789 0.29105 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25793 0.24172 0.20648 0.29387 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.97179 0.00000 0.02750 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.05485 0.00000 0.94374 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.31180 0.18680 0.21910 0.28230 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.78365 0.00141 0.21071 0.00423 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99929 0.00000 0.00000 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.67935 0.17970 0.02467 0.11628 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 5
+42 -1
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.14104 0.00000 0.85825 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.48273 0.13531 0.12333 0.25863 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+44 -1
+0.99502 0.00000 0.00000 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99754 0.00000 0.00000 0.00000 0.00246 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.75000 0.00000 0.00000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.50000 0.16667 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.28033 0.02787 0.52295 0.16885 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 0
+45 57
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 4
+46 -1
+0.84144 0.15081 0.00705 0.00070 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 1
+47 -1
+0.99583 0.00083 0.00083 0.00083 0.00083 0.00083
+0.00457 0.97717 0.00457 0.00457 0.00457 0.00457
+0.60000 0.06667 0.13333 0.06667 0.06667 0.06667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00437 0.00873 0.01310 0.13974 # MATP
+0.00437 0.00437 0.10044 0.00437 # MATP
+0.00437 0.54148 0.02620 0.05240 # MATP
+0.07424 0.00873 0.00873 0.00437 # MATP
+0.07692 0.15385 0.23077 0.53846 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 47 type 1
+48 -1
+0.99586 0.00083 0.00083 0.00083 0.00083 0.00083
+0.03653 0.94521 0.00457 0.00457 0.00457 0.00457
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00437 0.00873 0.00437 0.13100 # MATP
+0.01747 0.00437 0.23581 0.00437 # MATP
+0.00437 0.24454 0.00873 0.02183 # MATP
+0.27948 0.00437 0.01310 0.01310 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 48 type 1
+49 -1
+0.99588 0.00082 0.00082 0.00082 0.00082 0.00082
+0.30660 0.65566 0.00472 0.00472 0.01415 0.01415
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.14286 0.42857 0.14286 0.14286 0.00000 0.14286
+0.16667 0.33333 0.16667 0.33333 # INSL
+0.16667 0.16667 0.16667 0.50000 # INSR
+0.00901 0.00450 0.00450 0.22072 # MATP
+0.02252 0.01351 0.31982 0.00901 # MATP
+0.00450 0.14414 0.00901 0.02252 # MATP
+0.15766 0.00450 0.04505 0.00901 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 49 type 1
+50 -1
+0.99609 0.00078 0.00078 0.00078 0.00078 0.00078
+0.45946 0.51351 0.00676 0.00676 0.00676 0.00676
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01266 0.00633 0.00633 0.07595 # MATP
+0.01899 0.00633 0.34177 0.00633 # MATP
+0.00633 0.17089 0.00633 0.05063 # MATP
+0.18987 0.01899 0.06962 0.01266 # MATP
+0.20000 0.20000 0.20000 0.40000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 50 type 1
+51 -1
+0.99628 0.00074 0.00074 0.00074 0.00074 0.00074
+0.32099 0.62963 0.01235 0.01235 0.01235 0.01235
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01099 0.01099 0.01099 0.20879 # MATP
+0.03297 0.01099 0.06593 0.01099 # MATP
+0.01099 0.16484 0.01099 0.10989 # MATP
+0.23077 0.02198 0.07692 0.01099 # MATP
+0.40000 0.20000 0.20000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 51 type 1
+52 -1
+0.99635 0.00073 0.00073 0.00073 0.00073 0.00073
+0.59649 0.33333 0.01754 0.01754 0.01754 0.01754
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01493 0.01493 0.01493 0.23881 # MATP
+0.01493 0.01493 0.16418 0.01493 # MATP
+0.02985 0.11940 0.07463 0.01493 # MATP
+0.10448 0.01493 0.10448 0.04478 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 52 type 1
+53 -1
+0.85796 0.00000 0.12134 0.00000 0.00071 0.01999
+0.04545 0.00000 0.45455 0.00000 0.04545 0.45455
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.02564 0.00000 0.94872 0.00000 0.00000 0.02564
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.52500 0.07500 0.12500 0.27500 # INSR
+0.02941 0.02941 0.02941 0.02941 # MATP
+0.02941 0.02941 0.20588 0.02941 # MATP
+0.05882 0.02941 0.02941 0.05882 # MATP
+0.20588 0.02941 0.11765 0.05882 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 53 type 2
+54 -1
+0.99834 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00922 0.00000 0.98618 0.00000 0.00461 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21101 0.09174 0.24312 0.45413 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 2
+55 -1
+0.99834 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06019 0.00000 0.93519 0.00000 0.00463 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.27650 0.16590 0.05530 0.50230 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 55 type 2
+56 -1
+0.99836 0.00000 0.00082 0.00000 0.00082 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.37745 0.00000 0.60294 0.00000 0.01961 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.50000 0.00000 0.37500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.44444 0.11111 0.11111 0.33333 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.45854 0.09756 0.04878 0.39512 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 56 type 2
+-1 -1
+0.99923 0.00000 0.00000 0.00000 0.00077 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99213 0.00000 0.00000 0.00000 0.00787 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36434 0.11628 0.27132 0.24806 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 5
+58 -1
+0.04866 0.00000 0.95063 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.01408 0.00000 0.95775 0.00000 0.02817 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00148 0.00000 0.45259 0.00000 0.54593 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00133 0.00000 0.98400 0.00000 0.01467 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06525 0.07989 0.05060 0.80426 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31384 0.02147 0.53442 0.13027 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.16667 0.33333 0.16667 0.16667 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00070 0.99718 0.00070 0.00070 0.00070 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05642 0.57546 0.02186 0.34626 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 1
+61 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99296 0.00070 0.00070 0.00070 0.00422
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.10000 0.60000 0.10000 0.10000 0.00000 0.10000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.11111 0.66667 0.11111 0.11111 # INSR
+0.00699 0.00280 0.00210 0.27044 # MATP
+0.00280 0.00070 0.15164 0.00140 # MATP
+0.00070 0.36758 0.00140 0.12159 # MATP
+0.04682 0.00559 0.01398 0.00349 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 61 type 1
+62 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.00280 0.00070 0.17191 # MATP
+0.00210 0.00210 0.32075 0.00140 # MATP
+0.00070 0.14885 0.00070 0.05311 # MATP
+0.24319 0.00349 0.03354 0.01398 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 62 type 1
+63 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00493 0.98733 0.00070 0.00070 0.00493 0.00141
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.08333 0.58333 0.08333 0.08333 0.08333 0.08333
+0.16667 0.33333 0.16667 0.16667 0.00000 0.16667
+0.40000 0.10000 0.10000 0.40000 # INSL
+0.20000 0.40000 0.20000 0.20000 # INSR
+0.00070 0.00839 0.00070 0.27813 # MATP
+0.00070 0.00070 0.14116 0.00140 # MATP
+0.00140 0.36618 0.00210 0.02516 # MATP
+0.14046 0.00070 0.02236 0.00978 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 63 type 1
+64 -1
+0.58333 0.08333 0.08333 0.08333 0.08333 0.08333
+0.04382 0.95194 0.00141 0.00141 0.00071 0.00071
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.01053 0.00070 0.16561 # MATP
+0.00211 0.00140 0.01614 0.00211 # MATP
+0.00211 0.73684 0.00070 0.01193 # MATP
+0.04000 0.00140 0.00632 0.00140 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 64 type 1
+65 -1
+0.36620 0.00000 0.60563 0.00000 0.01408 0.01408
+0.02519 0.00000 0.97333 0.00000 0.00074 0.00074
+0.20000 0.00000 0.40000 0.00000 0.20000 0.20000
+0.20000 0.00000 0.40000 0.00000 0.20000 0.20000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00073 0.00954 0.00073 0.04479 # MATP
+0.00954 0.00367 0.00367 0.00220 # MATP
+0.00073 0.89574 0.00147 0.00808 # MATP
+0.01101 0.00220 0.00367 0.00220 # MATP
+0.20000 0.40000 0.20000 0.20000 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 65 type 2
+66 -1
+0.04918 0.00000 0.93443 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00147 0.00000 0.99706 0.00000 0.00147 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05878 0.03159 0.01323 0.89640 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.16667 0.00000 0.66667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99788 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03955 0.02401 0.04802 0.88842 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99788 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10085 0.80889 0.01763 0.07264 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00635 0.00000 0.98941 0.00000 0.00423 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.22222 0.44444 0.22222 0.11111 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.42666 0.02962 0.50000 0.04372 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.81818 0.00000 0.09091 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03404 0.00000 0.96525 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.91850 0.02268 0.01701 0.04181 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.93103 0.00000 0.05172 0.00000 0.01724 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06310 0.00000 0.92517 0.00000 0.01174 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05000 0.00000 0.80000 0.00000 0.15000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.42857 0.23810 0.14286 0.19048 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.46114 0.08284 0.21334 0.24267 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+-1 -1
+0.99286 0.00000 0.00000 0.00000 0.00714 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99922 0.00000 0.00000 0.00000 0.00078 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05308 0.13973 0.01015 0.79703 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/Cove/Demos/fig5.fa b/Cove/Demos/fig5.fa
new file mode 100644
index 0000000..554d4d1
--- /dev/null
+++ b/Cove/Demos/fig5.fa
@@ -0,0 +1,10 @@
+> DF6280
+GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA
+> DF6280G
+GCGGATTTAGCTCAGTTGGGAGAGCGCCAGACTGAAGAAATACTTCGGTCAAGTTATCTGGAGGTCCTGTGTTCGATCCACAGAATTCGCA
+> DD6280
+UCCGUGAUAGUUUAAUGGUCAGAAUGGGCGCUUGUCGCGUGCCAGAUCGGGGUUCAAUUCCCCGUCGCGGAGCCA
+> DX1661
+CGCGGGGUGGAGCAGCCUGGUAGCUCGUCGGGCUCAUAACCCGAAGGUCGUCGGUUCAAAUCCGGCCCCCGCAACCA
+> DS6280
+GGCAACUUGGCCGAGUGGUUAAGGCGAAAGAUUAGAAAUCUUUUGGGCUUUGCCCGCGCAGGUUCGAGUCCUGCAGUUGUCGCCA
diff --git a/Cove/Demos/fig5.slx b/Cove/Demos/fig5.slx
new file mode 100644
index 0000000..ebdc542
--- /dev/null
+++ b/Cove/Demos/fig5.slx
@@ -0,0 +1,5 @@
+DF6280 GCGGAUUUAGCUCAGUU GGG AGAGCGCCAGACUGAAG AUCUGGAG GUCCUGUGUUCGAUCCACAGAAUUCGCACCA
+DF6280G GCGGAUUUAGCUCAGUU GGG AGAGCGCCAGACUGAAGAAAUACUUCGGUCAAGUUAUCUGGAG GUCCUGUGUUCGAUCCACAGAAUUCGCA
+DD6280 UCCGUGAUAGUUUAAU GGUCAGAAUGGGCGCUUGUCG CGUGCCAG A UCGGGGUUCAAUUCCCCGUCGCGGAGCCA
+DX1661 CGCGGGGUGGAGCAGCCUGGU AGCUCGUCGGGCUCAUA ACCCGAAG GUCGUCGGUUCAAAUCCGGCCCCCGCAACCA
+DS6280 GGCAACUUGGCCGAGU GGUUAAGGCGAAAGAUUAGAA AUCUUUU GGGCUUUGCCCG CGCAGGUUCGAGUCCUGCAGUUGUCGCCA
diff --git a/Cove/Demos/sim100.fa b/Cove/Demos/sim100.fa
new file mode 100644
index 0000000..0a67b4c
--- /dev/null
+++ b/Cove/Demos/sim100.fa
@@ -0,0 +1,200 @@
+> DK0660
+GGGCCCGUAGCUUAGUCUGGUAGAGCGCCUGACUUUUAAUCAGGCGGUCGAGGGUUCGAAUCCCUUCGGGCCCG
+> DE2520
+GCCCCCAUCGUCUAGAGGCCUAGGACAUCUCCCUUUCACGGAGGCAACGGGGAUUCGAAUUCCCCUGGGGGUA
+> DT5320
+GUCUUGAUAGUAUAAACAUUACUCUGGUCUUGUAAACCUGAAAUGAAGAUCUUCUCUUCUCAAGACA
+> DR1181
+GCCCAUGUAGCUCAGUAGGAUAGAGCACGCGCCUUCUAAGCGUGAGGUCGGAAGUUCGAGCCUUCUCGUGGGCACCA
+> DC2720
+GGCGGCAUGGCCAAGUGGUAAGGCAGGGGACUGCAAAUCCUUUACCCCCAGUUCAAAUCUGGGUGCCGCCU
+> DL5720
+ACUUUUAAAGGAUAACAGCCAUCCGUUGGUCUUAGGCCCCAAAAAUUUUGGUGCAACUCCAAAUAAAAGUA
+> DC2680
+GGCGGCAUGGCCAAGCGGUAAGGCAGGGGACUGCAAAUCCUUUAUCCCCAGUUCAAAUCUGGGUGCCGCCU
+> DM3920
+ACCUGGGUAGUUUAAAGGUAAAACCUUAAUUUCAUACAUUAAAGAUGAGAAUUCGAUUUUCUCCCCAGGUN
+> DD4700
+UUAAAAGUAGUUAAUAUAUAACUUAGAAUUGUCAGUUCUAGAUUCCUUUUACUAAGGCUUUUUAU
+> DY6280
+CUCUCGGUAGCCAAGUUGGUUUAAGGCGCAAGACUGUAAAUCUUGAGAUCGGGCGUUCGACUCGCCCCCGGGAGA
+> DT5080
+GCCUUGAAAGCUCAACAACUAGAGCUUUGGUCUUGUAAACCAGGAGAGAGGGUAAACUCCCUCUCAAGGCU
+> DR4000
+GCUCUCUUAGCUUAAUGGUUAAAGCAUAAUACUUCUAAUAUUAAUAUUCCAUGUUCAAAUCAUGGAGAGAGUA
+> DL2601
+GGGGGUAUGGCGAAAUUGGUAGACGCUGCGGACUUAAAAUCCGUUGGCUUUAAAGACCGUGAGGGUUCAAGUCCCUCUACCCCCA
+> DV6161
+GGUCGGAUGGUGUAGUCGGUUAUCACGGUUGCUUUACACGCAACAGGUCUCGAGUUCGAUCCUCGGUCGGAUCA
+> DH4700
+AAAAAAGUAGUUUAAUUUAAGAACGAUAGGUUGUGGGGCUAUUAGCGGUGUUAACCCUUUUUUA
+> DK4030
+GAGAGUAUUGUUUAAUGGUAAAACAUUCUGUCUUUUAAGCAGUCUAUAGUGGUUCGAUUCCACUUAUUCUCA
+> DG2601
+GCGGGUAUAGUUUAGUGGUAAAACCUUAGCCUUCCAAGCUAACGAUGCGGGUUCGAUUCCCGCUACCCGCU
+> DE1140
+GGCCUGUUGGUGAAGCGGUUAACACACACGGUUUUCAUCCGUGGACACACGGGUUCGAACCCCGUACAGGCUACCA
+> DS3881
+GGGAAAGUUUCCAUGGGUAGGGUAAGAUAUUUGCUAAAUAUUGUGCGUUUGCACAUAGAUGUUCGAAUCAUCUCUUUCCCG
+> DY5000
+GAUUGGGUGGCAGAUAGGGAUGCACUAGAUUGUAAAUCUAGGUAGGAAGGUUCAAGUCCUUUCCUGGUCA
+> DI2580
+GGGUUAUUAGCUCAGUUGGUUAGAGCACACCCCUGAUAAGGGUGAGGUCCCUGGUUCAAAUCCAGGAUAACCCA
+> DX4880
+AAAAAGAUAAGCUAAUUAAGCUACUGGGUUCAUACCCCAUUUAUAAAGGUUAUAAUCCUUUUCUUUUUA
+> DD6280
+UCCGUGAUAGUUUAAUGGUCAGAAUGGGCGCUUGUCGCGUGCCAGAUCGGGGUUCAAUUCCCCGUCGCGGAG
+> DS2920
+GGAGAGAUGGCUGAGUGGACUAAAGCGGCGGAUUGCUAAUCCGUUGUACGAGUUAAUCGUACCGAGGGUUCGAAUCCCUCUCUUUCCG
+> DK7680
+GCCCGGCUAGCUCAGUCGGUAGAGCAUGAGACUCUUAAUCUCAGGGUCGUGGGUUCGAGCCCCACGUUGGGCG
+> DI5120
+GGAAAUGUGCCCGAAAGUAGGGAUCACUUUGAUAGAGUGAAAUAUAUGGGUUCAAACCCCAUCAUCUCCU
+> DI4080
+GAAACUAUAAUUCAAUUGGUUAGAAUAGUAUUUUGAUAAGGUACCAAUAUAGGUUCGAUUCCUGUUAGUUUCA
+> DV6280
+GGUUUCGUGGUCUAGUCGGUUAUGGCAUCUGCUUAACACGCAGAACGUCCCCAGUUCGAUCCUGGGCGAAAUCA
+> DA5040
+GUGGUUCUAGUUUAGUGAAAAACGUUUGCUUUGCAAGCAGAAAUCCUAAGUUAAAUUCUUAGGAACUACA
+> DY6742
+CCGACCUUAGCUCUGUUGGUAUAGCGGAGGACUGUAGAUCCUUAGGUCACUGGUUCGAAUUCGGUAGGUCGGA
+> DH2600
+GGCGGACGUAGCCAAGUGGAUUAAGGCAGUGGAUUGUGGAUCCUCUACGCGCGGGUUCAAUUCCCGUCGUUCGCC
+> DH5880
+GUAAAUAUAGUUUAACCAAAACAUCAGAUUGUGAAUCUGACAACAGAGGCUUACGACCCCUUAUUUACC
+> DT5220
+ACUCUAAUAGUUUAUGAAAAACAUUGGUCUUGUAAACCAAAAACUGAAGACUCCACCCUUCUUAGAGUA
+> DI2440
+GGGCUAUUAGCUCAGUUGGUUAGAGCGUUGCUUUGAUAAGGCAAAAGUCGAAAGUUCAAAUCUUUCAUAGCCCA
+> DS6241
+GGCGCGAUGGCAGAGUGGUCUAAUGCGUGAGACUUGAAAUCUCAUUUCUUCGGAAGCGUCGGUUCAAAUCCGGCUCGCGUCG
+> DM6160
+AGCUUCUUAACUCAGGGGUAGAGUGCGAGGCCCAUAACCUCGAGGUCCUAGGAUCGAAACCUAGAGAAGCUA
+> DT5360
+GUCUUUGUAGUACAUCUAAUAUACUGGUCUUGUAAACCAGAGAAGGAGAACAACUAACCUCCCUAAGACU
+> DA0380
+GGGCCCAUAGCUCAGUGGUAGAGUGCCUCCUUUGCAAGGAGGAUGCCCUGGGUUCGAAUCCCAGUGGGUCCA
+> DW4980
+AGAGAUUUAAGUUAAUAAAACUGAAAACCUUCAAAGUUUUAAAUAAGAGUGGAACUCUCUUAGUCUUUA
+> DR2700
+GCGUCCAUUGUCUAAUGGAUAGGACAGAGGUCUUCUAAACCUUUGGUAUAGGUUCAAAUCCUAUUGGACGCU
+> DH5840
+GUAAAUAUAGUUUAACCAAAACAUUAGAUUGUGAAUCUAAUAAUAGGGCCCCACAACCCCUUAUUUACC
+> DA4500
+GGGGACGUAGCUCAAUUGGUAGAGCGUAUGUUUUGCAAGCAUAAAGCUGUCGGUUCAAAUCCGAUCGUCUCCA
+> DQ9991
+GUCUCUGUGGCGCAAUCGGUUAGCGCGUUCGGCUGUUAACCGAAAGAUUGGUGGUUCGAGCCCACCCAGGGACG
+> DP1140
+CGGGAAGUGGCUCAGUUUGGUAGAGCAUUCGGUUUGGGACCGAAGGGUCGCAGGUUCAAAUCCUGUCUUCCCGACCA
+> DV0860
+GGGCCCGUCGUCUAGCCUGGUUAGGACGCUGCCCUGACGCGGCAGAAAUCCUGGGUUCAAGUCCCAGCGGGCCCA
+> DG1500
+GCGGAAGUAGUUCAGUGGUAGAACAUCACCUUGCCAUGGUGGGGGUCGCGGGUUCGAAUCCCGUCUUCCGCU
+> DG2681
+GCGGGUAUAGUUUAGUGGUAAAACCCUAGCCUUCCAAGCUAACGAUGCGGGUUCGAUUCCCGCUACCCGCU
+> DP1662
+CGGCACGUAGCGCAGCCUGGUAGCGCACCGUCAUGGGGUGUCGGGGGUCGGAGGUUCAAAUCCUCUCGUGCCGACCA
+> DF5920
+GUUAAUGUAGCUUUAAAAUUAAAGCAAGGCACUGAAAAUGCCUAGAUGAGUGCUCCAACUCCAUAAACA
+> DN5000
+UGGGUUGUAGCCUAAUGGAAAGGCAAUUGGCCGUUAACCAGGAGAUAACAAGAUCAAUACUUGUCAACUCAG
+> DG4501
+GCGGAUAUAGAUUAAAGGUAAAUUAUCUGCCUUCCAAGCAGAGGAUAUGGGUUCGAUUCCCGUUAUCCGCA
+> DC4840
+GGUCUUAUAGUCAAUAAUGAUAUCAAACUGCAAUUUUGAAGGAGUAAGUUUUACUAAGGCUU
+> DC5160
+GGCCUUGGGGUGUCAACACGUGGGGUUGCAAACCCCAAGAUGCAGUAUAAUACCUGCCGGGGCUU
+> DD1180
+GGCCCCAUAGCGAACGUUGGUUAUCGCGCCUCCCUGUCACGGAGGAGAUCACGGGUUCGAGUCCCGUUGGGGUCGCCA
+> DA2520
+GGGGGUAUAGCUCAGUUGGUAGAGCGCUGCCUUUGCAAGGCAGAUGUCAGCGGUUCGAGUCCGCUUAUCUCCA
+> DN6060
+GCUCGAUUAGCUCAGCUGGUUAGAGCAUGCGGCUGUUAACCGCAAGGUCGUAGGUUCGAUCCCUACAUCGAGCG
+> DF5970
+GUUCAUGUAGCUUAAAACCAAAGCAAGGCAUUGAAAAUGCCUAGAUGAGUAUAUUAACUCCAUAAACA
+> DD1140
+GGCCCCAUAGCGAAGUUGGUUAUCGCGCCUCCCUGUCACGGAGGAGAUCACGGGUUCGAGUCCCGUUGGGGUCGCCA
+> DF7740
+GCCGAAAUAGCUCAGUUGGGAGAGCGUUAGACUGAAGAUCUAAAGGUCCCCGGUUCAAUCCCGGGUUUCGGCA
+> DW5040
+AAGAGCUUAAGUUAAAUAAACUGAAAGCCUUCAAAGCUUUUUAUAAGAAUGGAAACUUCUUAGCUCUUG
+> DF4700
+GAUACGGUAGCUUAAUUAAAGCGUCUCAUUGAAAAUGAGGAAGAUGGUACUUUAGUACCUUGUGUCA
+> DP7560
+GGCCGAAUGGUCUAGUGGUAUGAUUCUCGCUUUGGGUGCGAGAGGUCCCGGGUUCAAUCCCCGGUUCGGCCC
+> DW3960
+AAGAGUAUAGUUUAAAGGUAAAACAGAAAGCUUCAACCUUUAAUUUCUUAGUUCGAGUCUAAGUGCUCUUG
+> DA2540
+GGGGGUAUAGCUCAGUUGGUAGAGCGCUGCCUUUGCACGGCAGAUGUCAGGGGUUCGAGUCCCCUUACCUCCA
+> DA1540
+GGGGCCUUAGCUCAGCUGGGAGAGCGCCUGCUUUGCACGCAGGAGGUCAGCGGUUCGAUCCCGCUAGGCUCCA
+> DQ4440
+UGGAGUAUAGCCAAGUGGUAAGGCAUCGGUUUUUGGUAUCGGCAUGCAAAGGUUCGAAUCCUUUUACUCCAG
+> DL5560
+ACUUUUAAAGGAUAACAGCUAUCCAUUGGCCUUAGGAGUCAAAAAUAUUGGUGCAACUCCAAAUAAAAGUA
+> DL2180
+GGGGAUGUGGUGGAAUUGGUAGACGCAACGGACUUAAAAUCCGUCGAUUGUAUAGAUCGUGAGGGUUCAAGUCCCUCCGUCCCCA
+> DX0980
+AGCGGGGUAGGCCAGCCAGGUAGGCCGCGGGGCUCAUANCCCCGAGGUCCCGGGUUCAAAUCCCGGCCCCGCUA
+> DY4480
+GGGAGAGUGGCCGAGCGGUCAAAAGCGACAGACUGUAAAUCUGUUGAAGGUUUUCUACGUAGGUUCGAAUCCUGCCUCUCCCA
+> DN1541
+UCCGCAGUAGCUCAGUGGUAGAGCUAUCGGCUGUUAACCGAUCGGUCGUAGGUUCGAAUCCUACCUGCGGAG
+> DR2602
+GCGUCCAUCGUCUAAAGGAUAGGACAGAGGUUUUCUAAACCUCCAGUAUAGGUUCGAAUCCUAUUGGACGUA
+> DX1660
+CGCGGGGUGGAGCAGCCUGGUAGCUCGUCGGGCUCAUAACCCGAAGAUCGUCGGUUCAAAUCCGGCCCCCGCAACCA
+> DS2602
+GGAAAGAUGGUUGAGUGGUUUAAGGCGUAGCAUUGGAAAUGCUAUGUAGGCUUUUGGUCUAUCGAGGGUUCGAAUCCCUCUCUUUCCG
+> DV2601
+AGGGCUAUAGCUCAGCGGUAGAGCGCCUCGUUUACACCGAGAAUGUCUACGGUUCAAAUCCGUAUAGCCCUA
+> DQ2920
+UGGGGCGUGGCCAAGUGGUAAGGCAACGGGUUUUGGUCCCGCUAUUCGGAGGUUCGAAUCCUUCCGUCCCAG
+> DS4362
+GGAGGUAUGGCUGAGUGGCUUAAGGCAUUGGUUUGCUAAAUCGACAUACAAUAAGAUUGUAUCAUGGGUUCGAAUCCCAUUUCCUCCG
+> DS1520
+GGAGAGUUGGCAGAGCGGUAAUGCAGCGGACUCGAAAUCCGCCGAGCCAAUGUUGAAUUGGGUCGCAGGUUCAAAUCCUGUACUCUCCU
+> DT3360
+GCCCUUUUAACUCAGUGGUAGAGUAACGCCAUGGUAAGGCGUAAGUCAUCGGUUCAAAUCCGAUAAGGGGCU
+> DG4080
+AUAGAUAUAAGUUAAGUGGUAAACUGAAUGUCUUCCACACAUUGAUUGUGAGUUCGAUUCUCACUAUCUAGA
+> DG4700
+GCAUAUAUAGUAAACAAUAUUAUAUUUGCCUUCCAAGCAAAAGUCCUAAUAAAAUUAGUGUAUGCU
+> DS6744
+GUGGACGUGCCGGAGUGGUUAUCGGGCAUAACUAGAAAUCAUGUGGGCUUUGCCCGCGCAGGUUCGAAUCCUGCCGUUCACG
+> DN1350
+UCCUCGGUAGCUCAAUUGGCAGAGCAGCCGGCUGUUAACCGGCAGGUUACUGGUUCGAGUCCAGUCCGGGGAG
+> DQ6050
+GGUCCUAUAGUGUAGUGGUUAUCACUUCGGACUUUGAAUCCGAAAACCCAGGUUCGAAUCCUGGUAGGACCA
+> DF5400
+GUCUACGUAGCUUAACCCCCAAAGCAAGACACUGAAAAUGCCUAGAUGGAUUCACACAUCCCAUAGACA
+> DD2600
+GGGAUUGUAGUUCAAUUGGUUAGAGUACCGCCCUGUCAAGACGGAAGUUGCGGGUUCGAGCCCCGUCAAUCCCG
+> DS1664
+GGUGAGGUGUCCGAGUGGCUGAAGGAGCACGCCUGGAAAGUGUGUAUACGGCAACGUAUCGGGGGUUCGAAUCCCCCCCUCACCGCCA
+> DS3880
+AGAGAGUUGGCUGAGUGGUAAGGCGACUAGCUUGAGUCUAGUUAAGUUAAAACUUUCAUAUGUUCGAAUCAUAUACUCUCUG
+> DP5120
+CGGGAGAGAAUUUAAAUUAGAAUGUUGGCUUUGGGGGUCAAUAGUGGAGGUUUGAGUCCUUCUUUCUCGA
+> DR4800
+AAAUAUGAAGCGAUUUAUUGCAAUUAGUUUCGACCUAAUCUUAGGUGAAAUUCACCCCAUAUUUU
+> DP5200
+CAAGGAAUAGUUUAUGUAGAAUUCCAGCUUUGGGUGUUGGUGGUGAGGUUUAAUGUCUCUUCCUUGA
+> DN5160
+UAGAAUGAAGCUCGCUGGAUAGAGUGUUUAGCUGUUAACUAAAAUAUUACGGGAUCGAGGCCCGUCAUUCUAG
+> DE2500
+GCCCCCAUCGUCUAGUGGUUCAGGACAUCUCUCUUUCAAGGAGGCAGCGGGGAUUCGACUUCCCCUGGGGGUA
+> DZ7560
+GCCCGGAUGAACCAUGGCGGUCUGUGGUGCAGACUUCAAAUCUGUAGGCGGUUAGCGCCGCAGUGGUUCGACUCCACCUUUCGGGUG
+> DG5120
+ACUUUCUUAGUAUUAACCAGUACACGUGACUUCCAAUCACAAAGUCUUAGUAGAAUCUAAGAGAAAGUA
+> DX3720
+GCAGCAAGGGUGGUCUCAACCUGGGUUCAUUCCCCAGCUAAUAAAGUUCGAUUCUUUGUAGCGGCU
+> DE4980
+AUUCCUGUAGUUGAAACAACAAUAACUUUUCAUGUUAUAGGUUUAGGUUGAACCCCUAACAGGAAUC
+> DW2720
+GCGCUCUUAGUUCAGUUUGGUAGAACGCGGGUCUCCAAAACCCGAUGUCGUAGGUUCAAAUCCUACAGAGCGUG
+> DF6280
+GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCA
+> DP8041
+GGCUCGUUGGUCUAGGGGUAUGAUUCUCGCUUCGGGUGCGAGAGGUCCCGGGUUCAAAUCCCGGACGAGCCC
diff --git a/Cove/Demos/sim100.slx b/Cove/Demos/sim100.slx
new file mode 100644
index 0000000..7b649d4
--- /dev/null
+++ b/Cove/Demos/sim100.slx
@@ -0,0 +1,100 @@
+DK0660 GGGC CC GU A GCUUAGUC UGGU AGAGCG C CUGAC UUUUAAUCAG GCG GU CGAG GGU UCG AA UCC CU U CGGGCCC G
+DE2520 GCCC CC AU C GUCUAGA GGCCU AGGACA U CUCCC UUUCACGGAG GCA A CGGG GAU UCG AA UUC CC C UGGGGGU A
+DT5320 GUCU UG AU A GUAUAA AC AUUACU C UGGUC UUGUAAACCU GAA A UGAA G A UCU UC U C UU C UCAAGAC A
+DR1181 GCCC AU GU A GCUCAGUA GGAU AGAGCA C GCGCC UUCUAAGCGU GAG GU CGGA AGU UCG AG CCU UC U CGUGGGC ACCA
+DC2720 GGCG GC AU G GCCAAGU GGU AAGGCA G GGGAC UGCAAAUCCU UUA C CCCC AGU UCA AA UCU GG G UGCCGCC U
+DL5720 ACUU UU AA A GGAUAAC AGC CAUCCG U UGGUC UUAGGCCCCA AAA A UUUU GGU GCA AC UCC AA A UAAAAGU A
+DC2680 GGCG GC AU G GCCAAGC GGU AAGGCA G GGGAC UGCAAAUCCU UUA U CCCC AGU UCA AA UCU GG G UGCCGCC U
+DM3920 ACCU GG GU A GUUUAAA GGU AAAACC U UAAUU UCAUACAUUA AAG A UGAG AAU UCG AU UUU CU C CCCAGGU N
+DD4700 UUAA AA GU A GUUAAU AU AUAACU U AGAAU UGUCAGUUCU AGA U UCCU U U UAC U A AG G CUUUUUA U
+DY6280 CUCU CG GU A GCCAAGUU GGUUU AAGGCG C AAGAC UGUAAAUCUU GAG AU CGGG CGU UCG AC UCG CC C CCGGGAG A
+DT5080 GCCU UG AA A GCUCAAC AACU AGAGCU U UGGUC UUGUAAACCA GGA G AGAG GGU AAA CU CC CU C UCAAGGC U
+DR4000 GCUC UC UU A GCUUAAU GGUU AAAGCA U AAUAC UUCUAAUAUU AAU AU UCCA UGU UCA AA UCA UG G AGAGAGU A
+DL2601 GGGG GU AU G GCGAAAUU GGUA GACGCU G CGGAC UUAAAAUCCG UU GGC UU UAA AG ACCG UGAG GGU UCA AG UCC CU C UACCCCC A
+DV6161 GGUC GG AU G GUGUAGUC GGUU AUCACG G UUGCU UUACACGCAA CAG GU CUCG AGU UCG AU CCU CG G UCGGAUC A
+DH4700 AAAA AA GU A GUUUAAUU UA AGAACG A UAGGU UGUGGGGCUA UUA G CGGU GUU A AC C CUUUUUU A
+DK4030 GAGA GU AU UGUUUAAU GGUA AAACAU U CUGUC UUUUAAGCAG UCU A UAGU GGU UCG AU UCC AC U UAUUCUC A
+DG2601 GCGG GU AU A GUUUAGU GGU AAAACC U UAGCC UUCCAAGCUA ACG A UGCG GGU UCG AU UCC CG C UACCCGC U
+DE1140 GGCC UG UU G GUGAAGC GGUU AACACA C ACGGU UUUCAUCCGU GGA CA CACG GGU UCG AA CCC CG U ACAGGCU ACCA
+DS3881 GGGA AA GU UUCCAUG GGUA GGGUAA G AUAUU UGCUAAAUAU UG UGC G UUU G C ACA UAGA UGU UCG AA UCA UC U CUUUCCC G
+DY5000 GAUU GG GU G GCAGAUA GG GAUGCA C UAGAU UGUAAAUCUA GGU A GGAA GGU UCA AG UCC UU U CCUGGUC A
+DI2580 GGGU UA UU A GCUCAGUU GGUU AGAGCA C ACCCC UGAUAAGGGU GAG GU CCCU GGU UCA AA UCC AG G AUAACCC A
+DX4880 AAAA AG AU A AGCUAA UU AAGCUA C UGGGU UCAUACCCCA UUU A UAAA GGU UAU AA UCC UU U UCUUUUU A
+DD6280 UCCG UG AU A GUUUAAU GGUC AGAAUG G GCGCU UGUCGCGUGC CAG A UCGG GGU UCA AU UCC CC G UCGCGGA G
+DS2920 GGAG AG AU G GCUGAGU GGACU AAAGCG G CGGAU UGCUAAUCCG UU GUA CGA GUU AA UCG UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DK7680 GCCC GG CU A GCUCAGUC GGU AGAGCA U GAGAC UCUUAAUCUC AGG GU CGUG GGU UCG AG CCC CA C GUUGGGC G
+DI5120 GGAA AU GU G CCCGAA AG UAGGGA U CACUU UGAUAGAGUG AAA UA UAUG GGU UCA AA CCC CA U CAUCUCC U
+DI4080 GAAA CU AU A AUUCAAUU GGUU AGAAUA G UAUUU UGAUAAGGUA CCA A UAUA GGU UCG AU UCC UG U UAGUUUC A
+DV6280 GGUU UC GU G GUCUAGUC GGUU AUGGCA U CUGCU UAACACGCAG AAC GU CCCC AGU UCG AU CCU GG G CGAAAUC A
+DA5040 GUGG UU CU A GUUUAGU GA AAAACG U UUGCU UUGCAAGCAG AAA U CCUA AGU UAA AU UCU UA G GAACUAC A
+DY6742 CCGA CC UU A GCUCUGUU GGU AUAGCG G AGGAC UGUAGAUCCU UAG GU CACU GGU UCG AA UUC GG U AGGUCGG A
+DH2600 G GCGG AC GU A GCCAAGU GGAUU AAGGCA G UGGAU UGUGGAUCCU CUA CG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH5880 GUAA AU AU A GUUUAA CC AAAACA U CAGAU UGUGAAUCUG ACA A CAGA GGC UUA CG ACC CC U UAUUUAC C
+DT5220 ACUC UA AU A GUUUAU GA AAAACA U UGGUC UUGUAAACCA AAA AC UGAA GAC UCC AC CC UU C UUAGAGU A
+DI2440 GGGC UA UU A GCUCAGUU GGUU AGAGCG U UGCUU UGAUAAGGCA AAA GU CGAA AGU UCA AA UCU UU C AUAGCCC A
+DS6241 GGCG CG AU G GCAGAGU GGUCU AAUGCG U GAGAC UUGAAAUCUC AU UUC UUC G GAAG CGUC GGU UCA AA UCC GG C UCGCGUC G
+DM6160 AGCU UC UU A ACUCAGG GGU AGAGUG C GAGGC CCAUAACCUC GAG GU CCUA GGA UCG AA ACC UA G AGAAGCU A
+DT5360 GUCU UU GU A GUACAU CU AAUAUA C UGGUC UUGUAAACCA GAG A AGGA GAA CAA CU AACC UC C CUAAGAC U
+DA0380 GGGC CC AU A GCUCAGU GGU AGAGUG C CUCCU UUGCAAGGAG GAU GC CCUG GGU UCG AA UCC CA G UGGGUCC A
+DW4980 AGAG AU UU A AGUUAA UA AAACUG A AAACC UUCAAAGUUU UAA A UAAG AGU GGA AC UCU CU U AGUCUUU A
+DR2700 GCGU CC AU U GUCUAAU GGAU AGGACA G AGGUC UUCUAAACCU UUG G UAUA GGU UCA AA UCC UA U UGGACGC U
+DH5840 GUAA AU AU A GUUUAA CC AAAACA U UAGAU UGUGAAUCUA AUA A UAGG GCC CCA CA ACC CC U UAUUUAC C
+DA4500 GGGG AC GU A GCUCAAUU GGU AGAGCG U AUGUU UUGCAAGCAU AAA GC UGUC GGU UCA AA UCC GA U CGUCUCC A
+DQ9991 GUCU CU GU G GCGCAAUC GGUU AGCGCG U UCGGC UGUUAACCGA AAG AU UGGU GGU UCG AG CCC AC C CAGGGAC G
+DP1140 CGGG AA GU G GCUCAGUU UGGU AGAGCA U UCGGU UUGGGACCGA AGG GU CGCA GGU UCA AA UCC UG U CUUCCCG ACCA
+DV0860 GGGC CC GU C GUCUAGCC UGGUU AGGACG C UGCCC UGACGCGGCA GAA AU CCUG GGU UCA AG UCC CA G CGGGCCC A
+DG1500 GCGG AA GU A GUUCAGU GGU AGAACA U CACCU UGCCAUGGUG GGG GU CGCG GGU UCG AA UCC CG U CUUCCGC U
+DG2681 GCGG GU AU A GUUUAGU GGU AAAACC C UAGCC UUCCAAGCUA ACG A UGCG GGU UCG AU UCC CG C UACCCGC U
+DP1662 CGGC AC GU A GCGCAGCC UGGU AGCGCA C CGUCA UGGGGUGUCG GGG GU CGGA GGU UCA AA UCC UC U CGUGCCG ACCA
+DF5920 GUUA AU GU A GCUUUAA AAUU AAAGCA A GGCAC UGAAAAUGCC UAG A UGAG U G CUC CA A CU C CAUAAAC A
+DN5000 UGGG UU GU A GCCUAAU GGA AAGGCA A UUGGC CGUUAACCAG GAG AU AACA AGA UCA AU ACU UG U CAACUCA G
+DG4501 GCGG AU AU A GAUUAAA GGU AAAUUA U CUGCC UUCCAAGCAG AGG A UAUG GGU UCG AU UCC CG U UAUCCGC A
+DC4840 GGUC UU AU A GUCAAUA AUGAUA U CAAAC UGCAAUUUUG AAG G AGUA A GUU U UA C UAAGGCU U
+DC5160 GGCC UU GG G GUGUC AACACG U GGGGU UGCAAACCCC AAG A UGCA GUA UAA UA CC UG C CGGGGCU U
+DD1180 GGCC CC AU A GCGAACGU UGGUU AUCGCG C CUCCC UGUCACGGAG GAG AU CACG GGU UCG AG UCC CG U UGGGGUC GCCA
+DA2520 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DN6060 GCUC GA UU A GCUCAGCU GGUU AGAGCA U GCGGC UGUUAACCGC AAG GU CGUA GGU UCG AU CCC UA C AUCGAGC G
+DF5970 GUUC AU GU A GCUUAAA ACC AAAGCA A GGCAU UGAAAAUGCC UAG A UGAG U A UAU UA A CU C CAUAAAC A
+DD1140 GGCC CC AU A GCGAAGUU GGUU AUCGCG C CUCCC UGUCACGGAG GAG AU CACG GGU UCG AG UCC CG U UGGGGUC GCCA
+DF7740 GCCG AA AU A GCUCAGUU GGG AGAGCG U UAGAC UGAAGAUCUA AAG GU CCCC GGU UCA AU CCC GG G UUUCGGC A
+DW5040 AAGA GC UU A AGUUAA AU AAACUG A AAGCC UUCAAAGCUU UUU A UAAG AAU GGA AA CUU CU U AGCUCUU G
+DF4700 GAUA CG GU A GCUUAA UU AAAGCG U CUCAU UGAAAAUGAG GAA GA UGGU AC UUU A GU AC C UUGUGUC A
+DP7560 GGCC GA AU G GUCUAGU GGU AUGAUU C UCGCU UUGGGUGCGA GAG GU CCCG GGU UCA AU CCC CG G UUCGGCC C
+DW3960 AAGA GU AU A GUUUAAA GGU AAAACA G AAAGC UUCAACCUUU AAU U UCUU AGU UCG AG UCU AA G UGCUCUU G
+DA2540 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCACGGCA GAU GU CAGG GGU UCG AG UCC CC U UACCUCC A
+DA1540 GGGG CC UU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CAGC GGU UCG AU CCC GC U AGGCUCC A
+DQ4440 UGGA GU AU A GCCAAGU GGU AAGGCA U CGGUU UUUGGUAUCG GCA UG CAAA GGU UCG AA UCC UU U UACUCCA G
+DL5560 ACUU UU AA A GGAUAAC AGC UAUCCA U UGGCC UUAGGAGUCA AAA A UAUU GGU GCA AC UCC AA A UAAAAGU A
+DL2180 GGGG AU GU G GUGGAAUU GGUA GACGCA A CGGAC UUAAAAUCCG UC GAU U GUA UA G AUCG UGAG GGU UCA AG UCC CU C CGUCCCC A
+DX0980 AGCG GG GU A GGCCAGCC AGGU AGGCCG C GGGGC UCAUANCCCC GAG GU CCCG GGU UCA AA UCC CG G CCCCGCU A
+DY4480 GGGA GA GU G GCCGAGC GGUCA AAAGCG A CAGAC UGUAAAUCUG UU GAA GGU U UUCUA CGUA GGU UCG AA UCC UG C CUCUCCC A
+DN1541 UCCG CA GU A GCUCAGU GGU AGAGCU A UCGGC UGUUAACCGA UCG GU CGUA GGU UCG AA UCC UA C CUGCGGA G
+DR2602 GCGU CC AU C GUCUAAA GGAU AGGACA G AGGUU UUCUAAACCU CCA G UAUA GGU UCG AA UCC UA U UGGACGU A
+DX1660 CGCG GG GU G GAGCAGCC UGGU AGCUCG U CGGGC UCAUAACCCG AAG AU CGUC GGU UCA AA UCC GG C CCCCGCA ACCA
+DS2602 GGAA AG AU G GUUGAGU GGUUU AAGGCG U AGCAU UGGAAAUGCU AU GUA GGCUUUU GGUC UAU CGAG GGU UCG AA UCC CU C UCUUUCC G
+DV2601 AGGG CU AU A GCUCAGC GGU AGAGCG C CUCGU UUACACCGAG AAU GU CUAC GGU UCA AA UCC GU A UAGCCCU A
+DQ2920 UGGG GC GU G GCCAAGU GGU AAGGCA A CGGGU UUUGGUCCCG CUA UU CGGA GGU UCG AA UCC UU C CGUCCCA G
+DS4362 GGAG GU AU G GCUGAGU GGCUU AAGGCA U UGGUU UGCUAAAUCG AC AUA CAAUAAG AUUG UAU CAUG GGU UCG AA UCC CA U UUCCUCC G
+DS1520 GGAG AG UU G GCAGAGC GGU AAUGCA G CGGAC UCGAAAUCCG CCG AGC CAAUGUU GAAUUG GGU CGCA GGU UCA AA UCC UG U ACUCUCC U
+DT3360 GCCC UU UU A ACUCAGU GGU AGAGUA A CGCCA UGGUAAGGCG UAA GU CAUC GGU UCA AA UCC GA U AAGGGGC U
+DG4080 AUAG AU AU A AGUUAAGU GGU AAACUG A AUGUC UUCCACACAU UGA U UGUG AGU UCG AU UCU CA C UAUCUAG A
+DG4700 GCAU AU AU A GUAAACA AU AUUAUA U UUGCC UUCCAAGCAA AAG U CCUA AU AAA AU UA G UGUAUGC U
+DS6744 GUGG AC GU G CCGGAGU GGUU AUCGGG C AUAAC UAGAAAUCAU GU GGG C UUU G CCCG CGCA GGU UCG AA UCC UG C CGUUCAC G
+DN1350 UCCU CG GU A GCUCAAUU GGC AGAGCA G CCGGC UGUUAACCGG CAG GU UACU GGU UCG AG UCC AG U CCGGGGA G
+DQ6050 GGUC CU AU A GUGUAGU GGUU AUCACU U CGGAC UUUGAAUCCG AAA A CCCA GGU UCG AA UCC UG G UAGGACC A
+DF5400 GUCU AC GU A GCUUAACC CCC AAAGCA A GACAC UGAAAAUGCC UAG A UGGA U U CAC AC A UC C CAUAGAC A
+DD2600 GGGA UU GU A GUUCAAUU GGUU AGAGUA C CGCCC UGUCAAGACG GAA GU UGCG GGU UCG AG CCC CG U CAAUCCC G
+DS1664 GGUG AG GU G UCCGAGU GGCUG AAGGAG C ACGCC UGGAAAGUGU GU AUA CG GCA A CG UAU CGGG GGU UCG AA UCC CC C CCUCACC GCCA
+DS3880 AGAG AG UU G GCUGAGU GGU AAGGCG A CUAGC UUGAGUCUAG UU AAG UU AAA AC UUU CAUA UGU UCG AA UCA UA U ACUCUCU G
+DP5120 CGGG AG AG A AUUUAAA UU AGAAUG U UGGCU UUGGGGGUCA AUA G UGGA GGU UUG AG UCC UU C UUUCUCG A
+DR4800 AAAU AU GA A GCGAUUU AUUGCA A UUAGU UUCGACCUAA UCU U AGGU G AAA UU C AC CCCAUAUUU U
+DP5200 CAAG GA AU A GUUUAU GU AGAAUU C CAGCU UUGGGUGUUG GUG G UGAG GU UUA AU GU CU C UUCCUUG A
+DN5160 UAGA AU GA A GCUCGCU GGAU AGAGUG U UUAGC UGUUAACUAA AAU AU UACG GGA UCG AG GCC CG U CAUUCUA G
+DE2500 GCCC CC AU C GUCUAGUG GUUC AGGACA U CUCUC UUUCAAGGAG GCA G CGGG GAU UCG AC UUC CC C UGGGGGU A
+DZ7560 GCCC GG AUGAACCAUGGC GGUC UGUGGU G CAGAC UUCAAAUCUG UA GGC G GUU AG C GCCG CAGU GGU UCG AC UCC ACCU UUCGGGU G
+DG5120 ACUU UC UU A GUAUUAA CC AGUACA C GUGAC UUCCAAUCAC AAA G UCUU AGU AGA AU CU AA G AGAAAGU A
+DX3720 GCAG CA AG G GUGGU CUCAAC C UGGGU UCAUUCCCCA GCU A AUAA AGU UCG AU UCU UU G UAGCGGC U
+DE4980 AUUC CU GU A GUUGAA ACAACA A UAACU UUUCAUGUUA UAG G UUUA GGU UGA AC CCC UA A CAGGAAU C
+DW2720 GCGC UC UU A GUUCAGUU UGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DF6280 GCGG AU UU A GCUCAGUU GGG AGAGCG C CAGAC UGAAGAUCUG GAG GU CCUG UGU UCG AU CCA CA G AAUUCGC A
+DP8041 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UCGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G ACGAGCC C
diff --git a/Cove/Demos/sim65.fa b/Cove/Demos/sim65.fa
new file mode 100644
index 0000000..2d124f5
--- /dev/null
+++ b/Cove/Demos/sim65.fa
@@ -0,0 +1,200 @@
+> DM4080
+ACUUGUAUAGUUUAAAUGGUUAAAACAUUUGUCUCAUAAACAAAUAAUGUAAGGUUCAAAUCCUUCUACAAGUA
+> DD5880
+AAGGUAUUAGAAAAACCAUUUCAUAACUUUGUCAAAGUUAAAUUAUAGGCUAAAUCCUAUAUAUCUUA
+> DP3880
+CAGGUUAGAGCCAGGUGGUUAGGCGUCUUGUUUGGGUCAAGAAAUUGUUAUGUUCGAAUCAUAAUAACCUGA
+> DR6160
+GGGACUAUAGUUUAGUUGGAUAUAACGACCGGCUACGAACCGGUAGGUCUCAGGUUCGACCCCUGAUGGUCUCG
+> DM0900
+AGCGGGGUGGGGUAGUCAGGAAAUCCGAUGGGCUCAUAACCCGUAGAUCGAUGGUUCAAAUCCAUCCCCCGCUA
+> DC0500
+GCCAAGGUGGCAGAGUUCGGCCCAACGCAUCCGCCUGCAGAGCGGAACCCCCGCCGGUUCAAAUCCGGCCCUUGGCUCCA
+> DP0260
+CUCCGAUUAGCUCAAUUGGCUAGAGUACACCGUUUGGGGCGGUGGGGUUGAAGGUUCGAGUCCUUCAUUGGAGACCA
+> DP5080
+CAGGAGAAAGUUUAAUAAAAAACCGCAGCUUUGGAAGUUGCAAUGUAAGGUAAGCCUUAUUCUCUUGA
+> DN4700
+GGCCAAAUAGUUUAACUUAAAACGUUGAGCUGUUAAUUCAAAAUUGCAGUAAUUUGCUUUGGCUU
+> DA4700
+AGAAUGGUACUUUAAAAAAAAGAAUUGGUUUGCAUCUAAUAUUAAGCCUGAGCUUUCAUUCUU
+> DI4000
+GAAACUAUAAUUCAAUUGGUUAGAAUAGUAUUUUGAUAAGGUACAAAUAUAGGUUCAAUCCCUGUUAGUUUCA
+> DG4080
+AUAGAUAUAAGUUAAGUGGUAAACUGAAUGUCUUCCACACAUUGAUUGUGAGUUCGAUUCUCACUAUCUAGA
+> DY5020
+GGCAGGGUGGCAGAAAGUCAAUGCGCUAAAUUGUAAAUUUAUAAAAAAAGGUUUAAUUCCUUUCUUUGCCA
+> DG2920
+GCGGGUAUAGUUUAGUGGUAAAACCCUAGCCUUCCAAGCUAACGAUGCGGGUUCGAUUCCCGCUACCCGCU
+> DZ1662
+GGAAGAUCGUCGUCUCCGGUGAGGCGGCUGGACUUCAAAUCCAGUUGGGGCCGCCAGCGGUCCCGGGCAGGUUCGACUCCUGUGAUCUUCCGCCA
+> DF5950
+GUUAAUGUAGCUUAAACUAAAGCAAGGCACUGAAAAUGCCUAGAUGGGUAUUUAACUCCAUAAACA
+> DG5080
+GCUUUAUGAAUACAACAGUAUUUUUGACUUCCAAUCAGACAGUCUUGGUGAAAAUUUAAGAUAAAGCA
+> DC4700
+UGCUUAGUAGUUAAUGUUAAUAUAACUAAGAACUGCAAAUUCUUCAUAGUCUAGUUAGACCUAAGCUU
+> DD0260
+GCGACCGGGGCUGGCUUGGUAAUGGUACUCCCCUGUCACGGGAGAGAAUGUGGGUUCAAAUCCCAUCGGUCGCGCCA
+> DG4700
+GCAUAUAUAGUAAACAAUAUUAUAUUUGCCUUCCAAGCAAAAGUCCUAAUAAAAUUAGUGUAUGCU
+> DK0740
+GGGCCCGUAGCUUAGUCUGGUAGAGCGCCUGGCUUUUAAUCAGGCGGUCGAGGGUUCGAAUCCCUUCGGGCCCG
+> DX4000
+UGCAAUAUGAUGUAAUUGGUUAACAUUUUAGGGUCAUGACCUAAUUAUAUACGUUCAAAUCGUAUUAUUGCUA
+> DA0260
+GGGCGAAUAGUGUCAGCGGGAGCACACCAGACUUGCAAUCUGGUAGGGAGGGUUCGAGUCCCUCUUUGUCCACCA
+> DN4000
+GUCCUUAUAGCUUAUCGGUUAAAGCAUCUCACUGUUAAUGAGAAUAGAUGGGUUCAAUUCCUAUUAAGGACG
+> DT4980
+CCUUAAAGCUACAAAAAGCAGACAAUCUUGUAAAUUGUAAGAUAAAAGGUUUAAGUCCUUUUUAAGGU
+> DM3881
+AAGACUAUAGCUUAAUCGGUAAAGCGAACCACUCAUGAUGGUUUGAGUAAAUGUUCAAGUCAUUUUAGUCUUA
+> DH5280
+GUAGAUAUAGUUUACAAAAAACAUUAGACUGUGAAUCUAACAACAGGAAAUCAAAUUCCUUAUUUACC
+> DT4081
+GUAGAUAUAAUUUAAUCGGUAAAAUGUAUGUUUUUAGGGUACAUAUUAUCUAAGUUCAAAUCUUAGUAUUUACA
+> DR5120
+GAGUUGUUAGUCUAAACAAGACAGUUGUUUUCGGCACAACAAAUUAUGGUUAAACCCCAUAAUAACUCU
+> DM3640
+AGACACGUAGCUUAGUGGUAAAGCACUGGUCUCAUAAGCCAGCUAUCGCAAGUUCGAAUCUCGCCGUGUCUA
+> DT4070
+GUUGCAUUAGCUCAAUUGGUAGAGCGUUUGUUUUGUAAUCAAAAGGUUUAGAGUUCAACUCUCUAAUGCANUN
+> DD4620
+UCAUUUCUAGUCUAGUUAAGGAUGUUGCUUUGUCGUGGCGGUGGGGUAUGUUUUGUACGGGAUGAG
+> DA0340
+GGGCUCGUAGCUCAGCGGGAGAGCGCCGCCUUUGCGAGGCGGAGGCCGCGGGUUCAAAUCCCGCCGAGUCCA
+> DS0260
+GGAAGGUAGGGCGUAGUGGUACGCAACUAGUCUUGAAAACUAGCCCGCUGUAGUGAUACGGUGAUGGUUCGACUCCAUUACCUUCCUCCA
+> DP4060
+CAGAUUGUCUCGUAAUUGGUUAUCGAGCCUACAUUGGGUGUAGGAUUUUGAGGGUUCAAGUCCUUCCAAUCUGA
+> DQ1341
+AUGGGCUAUGGUGUAAUUGGCAGCACGAGUGAUUCUGGUUCAUUUAGUCUAGGUUCGAGUCCUGGUAGCCCAG
+> DI1860
+GGGCCUAUAGCUCAGCUGGUUAGAGUGCACCCCUGAUAAGGGUGAGGUCACAAGUUCAAGUCUUGUUAGGCCCACCA
+> DL5221
+GCUAGCGUGGCAGAGCUCGGCAAAUGCAAAAGGCUUAAGCCCUUUAUCCAGAGGUUCAAAUCCUCUCCCUAGCU
+> DW5220
+AGAAACUUAGGAUUAACUGUCACCAAACCAAAGGCCUUCAAAGCCUUAAAUAAGAGUUAAACUCUCUUAGUUUCUG
+> DR4880
+GAAUAUGAAGCGAUUAAUUGCAGUUAGUUUCGACCUAACCUUAGGUAUUAUAUACCCUUAUUUU
+> DX4980
+GUAAAGUAAGCUAAAUGUUAAGCUUUUGGGUUCAUACCUCAAGAAUAGAAGGAUAAAAACCUCUCUUUAUC
+> DT5281
+GUCCCGAUAGUAUAAAAAUUACUCUGGUCUUGUAAGCCAAAAAUGAAGAGUCAGCUCUUCUCGGGACA
+> DD3280
+GGGAUUGUAGUUCAAUUGGUUAGAGCACCGCCCUGUCAAGGCGGAAGCUGCGGGUUCGAGCCCCGUCAGUCCCG
+> DW2680
+GCGCUCUUAGUUCAGUUCGGUAGAACGCGGGUCUCCAAAACCCGAUGUCGUAGGUUCAAAUCCUACAGAGCGUG
+> DW5360
+AGGAAUUUAGGUUAAACAGACCAAGAGCCUUCAAAGCCCUAAGCAAGUACAAUUUACUUAAUUCCUG
+> DG5280
+ACUCCCUUAGUAUAAACAAUACAACUGACUUCCAAUCAGUUAAUUCUGAAAAAACUCAGAAGAGAGUA
+> DW4620
+AGUGAUCUAGGUUAUUUUGGACUGUCUGUUUUCAAAACAGGAGGUGGCUUUGGUCGGUUGCUG
+> DG1230
+GUCGGUGUCGUAUAUGGUUAUUACAGGCCUUGCCAAGGCUUAGACGGCAGUUCGAUCCUGCUCACCGGCUCCA
+> DR1664
+GUCCUCUUAGUUAAAUGGAUAUAACGAGCCCCUCCUAAGGGCUAAUUGCAGGUUCGAUUCCUGCAGGGGACACCA
+> DW3880
+AAGAGUAUAGUUUAAUGGUAAAACUGUAAGCUUCAACCUUAUAUUUCUUAGUUCAAAUCUAAGUACUCUUG
+> DM0260
+AGUUAGUUGGCAGAGUGGUUAUGCACCUCCUUCAUACGGAGCGACUACAGUGGUUCAAAUCCACUACUAACUACCA
+> DP5000
+CAGAAAAUAGUUUAGUGAGAAUGAUAGCUUUGGGAGCUGUUGGUGUAAGUAUAAAGUCUUGCUUUUCUGA
+> DC5360
+AGCCCUGUGGUGAAUUUACACGUUGAAUUGCAAAUUCAGAGAAGCAGCUUCAAUUCUGCCGGGGCUU
+> DS4701
+AUUUGUGAUUUUCACGCCGAGAGUGUUUCUUGAGGAGGUAAUGCACUAAUGAAGGGUUACAAGGC
+> DM4701
+GGUAAAGUGGUCUAAUAUUAGGAUAUAGGGCUCAUGCCCCUAAGGCGCCACGCGUAAUGGCCUUUAUCU
+> DG5020
+UCUAUUAAUAUAACAGUAUAUUUAGUUUUCCAAAUUAAAAGGCCUGUUAGAAGUCAGGUAGUAAAA
+> DW6160
+GACUCCUUAGCAUAGUGGUUUAUUGUAAUUGUCUCCAAAGCAGUUGGUCCAGGGUUCAACUCCCUGAGGGGUCU
+> DG9160
+GCGUUGGUGGUAUAGUGGUGAGCAUAGCUGCCUUCCAAGCAGUUGACCCGGGUUCGAUUCCCGGCCAACGCA
+> DA5000
+GUGGACUUAGUUUAAAAGAUAAAACAAUUGAUUUGCAAUCAGUAACUCCAAGUUUAACUCUCGGAGUCCACA
+> DN2920
+UCCUCAGUAGCUCAGUGGUAGAGCGGUCGGCUGUUAACCGAUUGGUCGUAGGUUCGUAACCUACUUGGGGAG
+> DT3200
+GCCCUUUUAACUCAGUGGUAGAGUAACGCCAUGGUAAGGCGUAAGUCGUCGGUUCAAAUCCGAUAAAGGGCU
+> DS6240
+GUCAGCAUGGCAGAGUGGUCUAAUGCGUUAGACUUGAAAUCUAAUUCCUUCGGGAGCGUAGGUUCGAACCCUACUGCUGACG
+> DP4620
+CAGUUUAGUAGUUUAAUGAAGAAUGCUAGCUUUGGGGGUUGGGAGUCUCUGGUUUGGAGUUGGCUGG
+> DR0220
+GUCCCGCUGGUGUAAUGGAUAGCAUACGAUCCUUCUAAGUUUGCGGUCCUGGUUCGAUCCCAGGGCGGGAUACCA
+> DW4700
+AAGAAAGUAAUUUAAGUUAAAAUAUUUUGUUUCAAACAUAACUAUAGGUAGUCAUUACCUCUUUCUUG
+> DC4080
+GGAGGUGUUGUUUAAAGGUUAAGCUAUUAGAUUGCAGAUCUACUUAUUAAGAGUUCGAUUCUCUUCAUCUCUU
+> DE4700
+GCUUAAGUAGUUUAGGGAAAACAUAAGAUUUUCAUUCUUAAGUCAGAAAGCAGUUCUCUUAAGUU
+> DK5080
+CCUUAAUUAGCUUAUUUAAAGCUUUAGACUCUUAAUUUAAAGAAAUUAGCUAAUACCUAUUAUUAAGGA
+> DA5100
+AAGGUCUUAGCUUAAUUAAAGUAUUUGUUUUGCAUACAGAAGAUGUGGGGUAGUGUCCUGCAGAUCUUA
+> DQ5160
+UAAGGAGUAGUAUAAAGGAAGUACAAAGGGUUUUGAUCUCUUAAGUAUAGGUUCAAUUCCUAUCUCUUUAG
+> DV4700
+UGUAAGAUAAUAUAAACCAGUAUAAUUCAUUUACACUGAAUGUGUCAGAUAAUGUCUGUCUUACUU
+> DT5060
+GCCCUAGUAGCUCAGCGCCAGAGCGCCGGUCUUGUAAUCCGGAAGUCGGAGGUUAAAACCCUCCCUAGUGCU
+> DE4240
+GUCCCUUUCGUCCAGUGGUUAAGGACAUCGUCUUUUCAUGUCGAAGACACGGGUUCCAUUCCCGUAAGGGAUA
+> DI0260
+ACUUCGGUAGCUUAGCGAUCUAAAGCACUCGGCUGAUAACCGAGAGAUCGGGGGUUUAAAUCCCUCCCGGAGUACCA
+> DR4080
+GCUCUCUUAGCUUAAUGGUUAAAGCAUAAUACUUCUAAUAUUAAUAUUCCAUGUUCAAAUCAUGGAGAGAGUA
+> DM4700
+GGUAAAGUAGUCUAAUGAAGGACAGAAGACCUAUGAUUUUCAAGUGUUAUAAUUAACCUUUACUU
+> DG0260
+GCGGUUAAGCACACGGGUUGUGUCGCAGGCCUUCCAAGCCUCGCUGAGUAGGGUUCGAUUCCCUCUAGCCGCUCCA
+> DL4701
+CACAAGCUGGCAGACAUAAUGCAUACGAUUUAAGCUCGUCUUAUAAGAUCAUAUUCUUGUUUGUGU
+> DI2922
+GCAUCCAUGGCUGAAUGGUUAAAGCGCCCAACUCAUAAUUGGCGAAUUCGUAGGUUCAAUUCCUACUGGAUGCA
+> DR5220
+AGAAAGUUAGUCUAACUAAGACAGCUGGUUUCGACCCAGCAAAUUAUAGACCCACCUAUAACUUUCUU
+> DT0260
+GCUCCUAAAGCAUUGUUGGUGAUGCAGUUGCCUUGUAAGCAUCUGAACCGGGUUCGAUUCCUAGUGGGAGCACCA
+> DR2600
+GGGUUUGUAGCUCAGAGGAUUAGAGCACGUGGCUACGAACCACGGUGUCGGGGGUUCGAAUCCCUCCUUGCCCA
+> DC3920
+GAUUACGAUGUAAAUGGUUUACCCUUUGACUGCAAAUCUUAAGGAUUAGGUUCGAUUCCUACGUAAUCC
+> DL4840
+UCUAAUAUGGCAGAUUAGUGCAAUAGAUUUAAGCUCUAUAUAUAAAGUAUUUUACUUUUAUUAGAA
+> DV9990
+GUUUCCGUAGUGUAGUGGUUAUCACGUUCGCCUAACACGCGAAAGGUCCCCGGUUCGAAACCGGGCGGAAACA
+> DQ4070
+UGAAUUGUAGACUAAUAGGUAAGUCCCCAAAAUUUGAGUUUGGCUUUAGGUGUGUUCGAAUCACCCCAAUUCAA
+> DE5220
+GUUCCCGUAGUUGAGAACAACAAUGGCUUUUCAAGCCGUAGUCCUUGGGGUCUAACCAAGCGGGAAUA
+> DC3881
+AGGAGUUUGAGCAAAUGGUUUUGCGUUUUGAUUGCAAAUUGAAAUAUAGGGAUUCGAUUUCCCCGGACUCCUC
+> DS5080
+GGAGAAGUGGCACGAUAGGAAUGCAUGCGGCUUGAAACCGUUUGAUAGAGGUUUCUUCCUCUCUUCUCUU
+> DE4080
+GAUCUUAUCGUCUAAUGGUUACGACAUCAACUUUUCAUGUUGAAAAUGUUGGUUCAAUCCCAACUAAGAUUA
+> DE0660
+GCUCCGGUGGUGUAGUCCGGCCAAUCAUGCUGGCCUUUCGAGCCAGCGACUCGGGUUCAAAUCCCGGCCGGAGCA
+> DW4840
+AAGGCUUUAAGUUAAUAAAACUAAUAACCUUCAAAGCUAUAAAUAAAGAAAUUUCUUUAAGCCUUA
+> DI5160
+GGAAGCGUGCCUGAAAGUUAAGGACCUCCUUGAUAGGGAGGCUUAUAGGGGUUCAAACCCCCUCACUUCCU
+> DA4620
+GACGGUAUAGUUUAAGUUGAGAUGUGUGCUCUGCGAGCAUUCGGUAGAGGUUUCUUGCCGUUG
+> DH1540
+GGCGGUUGUGGCGAAGUGGUUAACGCACCAGAUUGUGGCUCUGGCACUCGUGGGUUCGAUUCCCAUCAAUCGCCCCA
+> DM4501
+GUCGGAAUAGUUUAGUAGGGUAGAACAGCGGGAUCAUAAUUCGCACACGGGGGUUCAAAUCCCUCUUCCGAUA
+> DA6281
+GGGCGUGUGGCGUAGUCGGUAGCGCGCUCCCUUAGCAUGGGAGAGGUCUCCGGUUCGAUUCCGGACUCGUCCA
+> DP4700
+CUAGAUAUAGUUUAGAGCAAAAUAUUGGCUUUGGGAGCUAAAGACACUUUUAUGAGUUUUCUAGA
+> DD4700
+UUAAAAGUAGUUAAUAUAUAACUUAGAAUUGUCAGUUCUAGAUUCCUUUUACUAAGGCUUUUUAU
+> DG4980
+CUUUAUUAGUAUAAUUAGUAUAUUUGAUUUCCAAUCAAAAGGGCUUUGUUAAGAAUCAAAGAUGGAGU
diff --git a/Cove/Demos/sim65.slx b/Cove/Demos/sim65.slx
new file mode 100644
index 0000000..144f85c
--- /dev/null
+++ b/Cove/Demos/sim65.slx
@@ -0,0 +1,100 @@
+ DM4080 ACUU GU AU A GUUUAAAU GGUU AAAACA U UUGUC UCAUAAACAA AUA AU GUAA GGU UCA AA UCC UU C UACAAGU A
+ DD5880 AAGG UA UU A GAAAAA CC AUUUCA U AACUU UGUCAAAGUU AAA U UAUA GGC UAA AU CC UA U AUAUCUU A
+ DP3880 CAGG UU AG A GCCAGGU GGU UAGGCG U CUUGU UUGGGUCAAG AAA UU GUUA UGU UCG AA UCA UA A UAACCUG A
+ DR6160 GGGA CU AU A GUUUAGUU GGAU AUAACG A CCGGC UACGAACCGG UAG GU CUCA GGU UCG AC CCC UG A UGGUCUC G
+ DM0900 AGCG GG GU G GGGUAGUC AGGA AAUCCG A UGGGC UCAUAACCCG UAG AU CGAU GGU UCA AA UCC AU C CCCCGCU A
+ DC0500 GCCA AG GU G GCAGAGUU CGGCCC AACGCA U CCGCC UGCAGAGCGG AAC CC CCGCC GGU UCA AA UCC GG C CCUUGGC UCCA
+ DP0260 CUCC GA UU A GCUCAAUU GGCU AGAGUA C ACCGU UUGGGGCGGU GGG GU UGAA GGU UCG AG UCC UU C AUUGGAG ACCA
+ DP5080 CAGG AG AA A GUUUAAU AA AAAACC G CAGCU UUGGAAGUUG CAA U GUAA GG UAA G CC UU AUUCUCUUG A
+ DN4700 GGCC AA AU A GUUUAAC UU AAAACG U UGAGC UGUUAAUUCA AAA U UGCA G U AAU U UG C UUUGGCU U
+ DA4700 AGAA UG GU A CUUUAA AA AAAAGA A UUGGU UUGCAUCUAA UAU UAAG C CUG A G CU U UCAUUCU U
+ DI4000 GAAA CU AU A AUUCAAUU GGUU AGAAUA G UAUUU UGAUAAGGUA CAA A UAUA GGU UCA AU CCC UG U UAGUUUC A
+ DG4080 AUAG AU AU A AGUUAAGU GGU AAACUG A AUGUC UUCCACACAU UGA U UGUG AGU UCG AU UCU CA C UAUCUAG A
+ DY5020 GGCA GG GU G GCAGAAA GUC AAUGCG C UAAAU UGUAAAUUUA UAA A AAAA GGU UUA AU UCC UU U CUUUGCC A
+ DG2920 GCGG GU AU A GUUUAGU GGU AAAACC C UAGCC UUCCAAGCUA ACG A UGCG GGU UCG AU UCC CG C UACCCGC U
+ DZ1662 GGAAG AU CG U CGUCUCC GGUG AGGCGG C UGGAC UUCAAAUCCA GU UGG GGCCGCCA GCGGUC CCG GGCA GGU UCG AC UCC UG U GAUCUUCCGCCA
+ DF5950 GUUA AU GU A GCUUAAA CU AAAGCA A GGCAC UGAAAAUGCC UAG A UGGG U A UUU A A CU C CAUAAAC A
+ DG5080 GCUU UA UG A AUACAAC AGUAUU U UUGAC UUCCAAUCAG ACA G UCUU GGU GAA AA UUU AA G AUAAAGC A
+ DC4700 UGCU UA GU A GUUAAUGU UAAU AUAACU A AGAAC UGCAAAUUCU UCA U AGUC U A GUU A GA C CUAAGCU U
+ DD0260 GCGA CC GG G GCUGGCUU GGUA AUGGUA C UCCCC UGUCACGGGA GAG AA UGUG GGU UCA AA UCC CA U CGGUCGC GCCA
+ DG4700 GCAU AU AU A GUAAACA AU AUUAUA U UUGCC UUCCAAGCAA AAG U CCUA AU AAA AU UA G UGUAUGC U
+ DK0740 GGGC CC GU A GCUUAGUC UGGU AGAGCG C CUGGC UUUUAAUCAG GCG GU CGAG GGU UCG AA UCC CU U CGGGCCC G
+ DX4000 UGCA AU AU G AUGUAAUU GGUU AACAUU U UAGGG UCAUGACCUA AUU A UAUA CGU UCA AA UCG UA U UAUUGCU A
+ DA0260 GGGC GA AU A GUGUCAGC GGG AGCACA C CAGAC UUGCAAUCUG GUA G GGAG GGU UCG AG UCC CU C UUUGUCC ACCA
+ DN4000 GUCC UU AU A GCUUAUC GGUU AAAGCA U CUCAC UGUUAAUGAG AAU A GAUG GGU UCA AU UCC UA U UAAGGAC G
+ DT4980 CCUU AA AG C UACAAA AAGCAG A CAAUC UUGUAAAUUG UAA GA UAAA AGG UUU AA GUC CU U UUUAAGG U
+ DM3881 AAGA CU AU A GCUUAAUC GGU AAAGCG A ACCAC UCAUGAUGGU UUG AG UAAA UGU UCA AG UCA UU U UAGUCUU A
+ DH5280 GUAG AU AU A GUUUAC AA AAAACA U UAGAC UGUGAAUCUA ACA A CAGG AAA UCA AA UU CC U UAUUUAC C
+ DT4081 GUAG AU AU A AUUUAAUC GGU AAAAUGUA UGUUU UUAGGGUACA UAU UA UCUA AGU UCA AA UCU UA G UAUUUAC A
+ DR5120 GAGU UG UU A GUCUAA AC AAGACA G UUGUU UUCGGCACAA CAA A UUAU GGU UAA AC CCC AU A AUAACUC U
+ DM3640 AGAC AC GU A GCUUAGU GGU AAAGCA C UGGUC UCAUAAGCCA GCU AU CGCA AGU UCG AA UCU CG C CGUGUCU A
+ DT4070 GUUG CA UU A GCUCAAUU GGU AGAGCG U UUGUU UUGUAAUCAA AAG GU UUAG AGU UCA AC UCU CU A AUGCANU N
+ DD4620 UCAU UU CU A GUCUAGU UA AGGAUG U UGCUU UGUCGUGGCG GUG G GGUA U GUU UU G UA C GGGAUGA G
+ DA0340 GGGC UC GU A GCUCAGC GGG AGAGCG C CGCCU UUGCGAGGCG GAG GC CGCG GGU UCA AA UCC CG C CGAGUCC A
+ DS0260 GGAA GG UA G GGCGUAGU GGU ACGCAA C UAGUC UUGAAAACUA GC CCGCUGU AGU G AUA CGG UGAU GGU UCG AC UCC AU U ACCUUCC UCCA
+ DP4060 CAGA UU GU C UCGUAAUU GGUU AUCGAG C CUACA UUGGGUGUAG GAU UU UGAG GGU UCA AG UCC UU C CAAUCUG A
+ DQ1341 A UGGG CU AU G GUGUAAUU GGC AGCACG A GUGAU UCUGGUUCAU UUA G UCUA GGU UCG AG UCC UG G UAGCCCA G
+ DI1860 GGGC CU AU A GCUCAGCU GGUU AGAGUG C ACCCC UGAUAAGGGU GAG GU CACA AGU UCA AG UCU UG U UAGGCCC ACCA
+ DL5221 GCUA GC GU G GCAGAGCU CGGCA AAUGCA A AAGGC UUAAGCCCUU UAU C CAGA GGU UCA AA UCC UC U CCCUAGC U
+ DW5220 AGAA AC UU A GGAUUAAC UGUCACCAAACCA A AGGCC UUCAAAGCCU UAA A UAAG AGU UAA AC UCU CU U AGUUUCU G
+ DR4880 GAAU AU GA A GCGAUUA AUUGCA G UUAGU UUCGACCUAA CCU U AGGU A UUA UA U AC C CUUAUUU U
+ DX4980 GUA AA GU A AGCUAAAU GUU AAGCUU U UGGGU UCAUACCUCA AGA A UAGAAGGA UAA AA ACC UC U CUUUAUC
+ DT5281 GUCC CG AU A GUAUAA AA AUUACU C UGGUC UUGUAAGCCA AAA A UGAA GAG UCA GC UC UU C UCGGGAC A
+ DD3280 GGGA UU GU A GUUCAAUU GGUU AGAGCA C CGCCC UGUCAAGGCG GAA GC UGCG GGU UCG AG CCC CG U CAGUCCC G
+ DW2680 GCGC UC UU A GUUCAGUU CGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+ DW5360 AGGA AU UU A GGUUAA AC AGACCA A GAGCC UUCAAAGCCC UAA G CAAG U A CAA UU U A CU U AAUUCCU G
+ DG5280 ACUC CC UU A GUAUAA AC AAUACA A CUGAC UUCCAAUCAG UUA A UUCU GAA AAA AC UC AG A AGAGAGU A
+ DW4620 AGUG AU CU A GGUUAUU UU GGACUG U CUGUU UUCAAAACAG GAG G UGGC UUU G GU C GGUUGCU G
+ DG1230 GUCG GU GU C GUAUAU GGU U AUUAC A GGCCU UGCCAAGGCU UAG A CGGC AGU UCG AU CCU GC U CACCGGC UCCA
+ DR1664 GUCC UC UU A GUUAAAU GGAU AUAACG A GCCCC UCCUAAGGGC UAA U UGCA GGU UCG AU UCC UG C AGGGGAC ACCA
+ DW3880 AAGA GU AU A GUUUAAU GGU AAAACU G UAAGC UUCAACCUUA UAU U UCUU AGU UCA AA UCU AA G UACUCUU G
+ DM0260 AGUU AG UU G GCAGAGU GGU UAUGCA C CUCCU UCAUACGGAG CG ACUACAGU GGU UCA AA UCC AC U ACUAACU ACCA
+ DP5000 CAGA AA AU A GUUUAG UG AGAAUG A UAGCU UUGGGAGCUG UUG G UGUA AGU AUA AA GUCU UG C UUUUCUG A
+ DC5360 AGCC CU GU G GUGAAUU UACACG U UGAAU UGCAAAUUCA GAG A AGCA GCU UCA AU UC UG C CGGGGCU U
+ DS4701 AUUU GU GA U UUUCAC GC CGAGAG U GUUUC UUGAGGAGGU AAU G CACU A AUG AA G GG U UACAAGG C
+ DM4701 GGUA AA GU G GUCUAAU AU U AGGAUA U AGGGC UCAUGCCCCU AAG G CGCC A C GCG UA A U GG C CUUUAUC U
+ DG5020 UCUA UU A A UAUAACA GUAUAU U UAGUU UUCCAAAUUA AAA G GCCU GUU A G AA GUC AG G UAGUAAA A
+ DW6160 GACU CC UU A GCAUAGU GGUUU AUUGUA A UUGUC UCCAAAGCAG UUG GU CCAG GGU UCA AC UCC CU G AGGGGUC U
+ DG9160 GCGU UG GU G GUAUAGU GGUG AGCAUA G CUGCC UUCCAAGCAG UUG A CCCG GGU UCG AU UCC CG G CCAACGC A
+ DA5000 GUGG AC UU A GUUUAAAA GAU AAAACA A UUGAU UUGCAAUCAG UAA C UCCA AGU UUA AC UCU CG G AGUCCAC A
+ DN2920 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACCGA UUG GU CGUA GGU UCG UA ACC UA C UUGGGGA G
+ DT3200 GCCC UU UU A ACUCAGU GGU AGAGUA A CGCCA UGGUAAGGCG UAA GU CGUC GGU UCA AA UCC GA U AAAGGGC U
+ DS6240 GUCA GC AU G GCAGAGU GGUCU AAUGCG U UAGAC UUGAAAUCUA AU UCC UUC G GGAG CGUA GGU UCG AA CCC UA C UGCUGAC G
+ DP4620 CAGUUUA GU A GUUUAAU GA AGAAUG C UAGCU UUGGGGGUUG GGA G UCUC UG GUU UG GA G UUGGCUG G
+ DR0220 GUCC CG CU G GUGUAAU GGAU AGCAUA C GAUCC UUCUAAGUUU GCG G UCCU GGU UCG AU CCC AG G GCGGGAU ACCA
+ DW4700 AAGA AA GU A AUUUAAG UU AAAAUA U UUUGU UUCAAACAUA ACU A UAGG UA GUC AU UA CC U CUUUCUU G
+ DC4080 GGAG GU GU U GUUUAAA GGUU AAGCUA U UAGAU UGCAGAUCUA CUU AU UAAG AGU UCG AU UCU CU U CAUCUCU U
+ DE4700 GCUU AA GU A GUUUAG GG AAAACA U AAGAU UUUCAUUCUU AAG U CAGA A A GCA G U UC U CUUAAGU U
+ DK5080 CCUU AA UU A GCUUAU UU AAAGCU U UAGAC UCUUAAUUUA AAG A AAUU AGC UAA UA CCU AU U AUUAAGG A
+ DA5100 AAGG UC UU A GCUUAA UU AAAGUA U UUGUU UUGCAUACAG AAG A UGUG GGG UAG UG UCC UG C AGAUCUU A
+ DQ5160 UAAG GA GU A GUAUAAA GGA AGUACA A AGGGU UUUGAUCUCU UAA G UAUA GGU UCA AU UCC UA U CUCUUUA G
+ DV4700 UGUA AG AU A AUAUAAA CC AGUAUA A UUCAU UUACACUGAA UGU G UCAG AU AA U GU CU G UCUUACU U
+ DT5060 GCCC UA GU A GCUCAGC GC C AGAGCG C CGGUC UUGUAAUCCG GAA GU CGGA GGU UAA AA CCC UC C CUAGUGC U
+ DE4240 GUCC CU UU C GUCCAGU GGUUA AGGACA U CGUCU UUUCAUGUCG AAG A CACG GGU UCC AU UCC CG U AAGGGAU A
+ DI0260 ACUU CG GU A GCUUAGC GAUCU AAAGCA C UCGGC UGAUAACCGA GAG AU CGGG GGU UUA AA UCC CU C CCGGAGU ACCA
+ DR4080 GCUC UC UU A GCUUAAU GGUU AAAGCA U AAUAC UUCUAAUAUU AAU AU UCCA UGU UCA AA UCA UG G AGAGAGU A
+ DM4700 GGUA AA GU A GUCUAAU GA AGGACA G AAGAC CUAUGAUUUU CAA G UGUU A UAA U U AA C CUUUACU U
+ DG0260 GCGG UU AA G CACACG GGUU GUGUCG C AGGCC UUCCAAGCCU CGC UG AGUAG GGU UCG AU UCC CU C UAGCCGC UCCA
+ DL4701 CACA AG CU G GCAGAC AU AAUGCA U ACGAU UUAAGCUCGU CUU A UAAG A U CAU AU U CU U GUUUGUG U
+ DI2922 GCAU CC AU G GCUGAAU GGUU AAAGCG C CCAAC UCAUAAUUGG CGA AU UCGUA GGU UCA AU UCC UA C UGGAUGC A
+ DR5220 AGAA AG UU A GUCUAA CU AAGACA G CUGGU UUCGACCCAG CAA A UUAU AGA CCC AC CU AU A ACUUUCU U
+ DT0260 GCUC CU AA A GCAUUGUU GGU GAUGCA G UUGCC UUGUAAGCAU CUG A ACCG GGU UCG AU UCC UA G UGGGAGC ACCA
+ DR2600 GGGU UU GU A GCUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUUGCCC A
+ DC3920 GAUU AC GA U GUAAAU GGU UUACCC U UUGAC UGCAAAUCUU AAG GA UUAG G U UCG AU U C CU A CGUAAUC C
+ DL4840 UCUA AU AU G GCAGAUU AGUGCA A UAGAU UUAAGCUCUA UAU A UAAA GU AUU UU AC UU U UAUUAGA A
+ DV9990 GUUU CC GU A GUGUAGU GGUU AUCACG U UCGCC UAACACGCGA AAG GU CCCC GGU UCG AA ACC GG G CGGAAAC A
+ DQ4070 UGAA UU GU A GACUAAUA GGU AAGUCC C CAAAA UUUGAGUUUG GCU U UA GGUG UGU UCG AA UCA CC C CAAUUCA A
+ DE5220 GUUC CC GU A GUUGAGAA CAACA A UGGCU UUUCAAGCCG UAG U CCUU GGG GUC UA ACC AA G CGGGAAU A
+ DC3881 AGGA GU UU G AGCAAAU GGUU UUGCGU U UUGAU UGCAAAUUGA AAU A UAGG GAU UCG AUU UCC CC G GACUCCU C
+ DS5080 GGAG AA GU G GCACGAUA GG AAUGCA U GCGGC UUGAAACCGU UUG A UAGA GGU UUC UU CC UC U CUUCUCU U
+ DE4080 GAUC UU AU C GUCUAAU GGUU ACGACA U CAACU UUUCAUGUUG AAA A UGUU GGU UCA AU CCC AA C UAAGAUU A
+ DE0660 GCUC CG GU G GUGUAGUC CGGCCA AUCAUG C UGGCC UUUCGAGCCA GCG A CUCG GGU UCA AA UCC CG G CCGGAGC A
+ DW4840 AAGG CU UU A AGUUAA UA AAACUA A UAACC UUCAAAGCUA UAA A UAAA G A AAU UU C UU U AAGCCUU A
+ DI5160 GGAA GC GU G CCUGAA AGU UAAGGA C CUCCU UGAUAGGGAG GCU UA UAGG GGU UCA AA CCC CC U CACUUCC U
+ DA4620 GACG GU AU A GUUUAA GUU GAGAUG U GUGCU CUGCGAGCAU UCG G UAGA G GUU UC U UGCCGUU G
+ DH1540 G GCGG UU GU G GCGAAGU GGUU AACGCA C CAGAU UGUGGCUCUG GCA CU CGUG GGU UCG AU UCC CA U CAAUCGC CCCA
+ DM4501 GUCG GA AU A GUUUAGUA GGGU AGAACA G CGGGA UCAUAAUUCG CAC A CGGG GGU UCA AA UCC CU C UUCCGAU A
+ DA6281 GGGC GU GU G GCGUAGUC GGU AGCGCG C UCCCU UAGCAUGGGA GAG GU CUCC GGU UCG AU UCC GG A CUCGUCC A
+ DP4700 CUAG AU AU A GUUUAGA GC AAAAUA U UGGCU UUGGGAGCUA AAG A CACU U UUA U G AG U UUUCUAG A
+ DD4700 UUAA AA GU A GUUAAU AU AUAACU U AGAAU UGUCAGUUCU AGA U UCCU U U UAC U A AG G CUUUUUA U
+ DG4980 CUU UA UU AGUAUAAU UA GUAUA U UUGAU UUCCAAUCAA AAG G GCUU UGU UAAGAA UCA AA G AUGGAGU
diff --git a/Cove/Demos/test100.fa b/Cove/Demos/test100.fa
new file mode 100644
index 0000000..aa0f15f
--- /dev/null
+++ b/Cove/Demos/test100.fa
@@ -0,0 +1,200 @@
+> DQ4880
+UAUAUUUUGGUGUAUGAUGCACAAAAGUUUUUGAUACUUUUAGAAAUAGUUUAAUUCUAUUAAAUAUAA
+> DX0260
+UGCGGGUUAGAUCUCUCUGGUAGAGAUCGCUAGUCUCAUAAGCUAGAAAGAGGUAGGUUCGAUUCCUGCACCCGCUUCCA
+> DT6160
+GGCUCCUUAGCAUAGUGGUAUUGCGUUUCCCUAGUAAGGAAGAGGUCAUGAGUUCGAUCCUCAUAGGAGCCU
+> DT9991
+GGCUCCAUAGCUCAGGGGUUAGAGCACUGGUCUUGUAAACCAGGGGUCGCGAGUUCAAAUCUCGCUGGGGCCU
+> DY5220
+GGUAAGAUGGCUGAGUGUUGAAGCGUUAGGCUGUAGUCCUUUUUACAGAGGUUCAAUUCCUCUUCUUAUCG
+> DE1660
+GUCCCCUUCGUCUAGAGGCCCAGGACACCGCCCUUUCACGGCGGUAACAGGGGUUCGAAUCCCCUAGGGGACGCCA
+> DI2220
+GGGCUAUUAGCUCAGUUGGUUAGAGCGCACCCCUGAUAAGGGUGAGGGCCCUGGUUCAAAUCCAGGAUGGCCCA
+> DL2522
+UCCUUCGUGGUGAAAUGGUAAACACGUGUGAUUCAAAAUCACAUGCAUAAGCUUGCCGGUUCGAGUCCGGUCGAAGGUA
+> DC5020
+GGUUUUGUAGUGUAAUUAACAUAUUAGAUUGCAAAUCUAUAGAUGCGGCCAGUUUAUCCGCCAAAACUU
+> DS2922
+GGAGAGAUGGCUGAGCGGUUGAUAGCCCCGGUCUUGAAAACCGGUAUAGUUUUAACAAAGAAUCUACGAGGGUUCGAAUCCCUCUCUCUCCU
+> DA5280
+GAGGAUUUAGCUUAAUUAAAGCAGUUGAUUUGCAUUUAACAGAUGUAAGAUAUAGUCUUACAGUCCUUA
+> DT4700
+GCUUUAAAAGCUUUGCUGAAGCAACGGCCUUGUAAGUCGUAGAAAACUAUACGUUUUAAAGCU
+> DY5040
+AAUAAGAUGGCUGAGAGAACAAGCGGUGGAUUGUAAAUCCAUACACAAAGGUUAAAUCCCUUUUCUUAUUA
+> DG7740
+GCAUCGGUGGUUCAGUGGUAGAAUGCUCGCCUGCCACGCGGGCGGCCCGGGUUCGAUUCCCGGCCGAUGCA
+> DF5220
+GCCCCCAUAGCUUAACCCACAAAGCAUGGCACUGAAGAUGCCAAGAUGGUACCUACUAUACCUGUGGGCA
+> DV3960
+AAGAAAUUAGCUCAACGGUAGAGCAACCGUUUUACACACGGAAGGCUAUGAGUUCGAAUCUCCUAUUUCUUACCA
+> DY2920
+GGGUCGAUGCCCGAGCGGUUAAUGGGGACGGACUGUAAAUUCGUUGGCAAUAUGUCUACGCUGGUUCAAAUCCAGCUCGGCCCA
+> DL1543
+GCCGGUGUGGCGGAAUUGGCAGACGCGCACGACUCAAAAUCGUGUUCCUUCUGGAGUGUCGGUUCGACCCCGACCACCGGUA
+> DX4440
+AGCGGGGUAGAGGAAUUGGUCAACUCAUCAGGCUCAUGACCUGAAGACUGCAGGUUCGAAUCCUGUCCCCGCCU
+> DH5120
+GUAGAUAUAGUUUAAUAAAACACUAGAUUGUGAUUCUAGAGUCAGAGGUUAAACCCCUCUUAUCAACC
+> DL4760
+ACUAUUUUGGCAGAUAAGUGCAAUGAAUUUAGAAUUCAUUUAUGUAGAUUUUUUUCUACAAAUAGUA
+> DA2480
+GGGAGUAUAGCUCAGUUGGUAGAGCGCUGCCUUUGCAAGGCAGAUGUCAGCGGUUCGAGUCCGCUUACUUCCACCA
+> DY4880
+GAUUAAGUGGCUGAAGUUUAGGCGAUAGAUUGUAAAUCUAUUUAUAAGAAUUAUUCUUCUUAAUCA
+> DY3280
+GGGUCGAUGCCCGAGCGGUUAAUGGGGACGGACUGUAAAUUCGUUGGCAAUAUGUCUACGCUGGUUCAAAUCCAGCUCGGCCCA
+> DY6743
+CCGACCUUAGCUCAGUUGGUAGAGCGGAGGACUGUAGAUCCUUAGGUCACUGGUUCGAAUCUGGUAGGUUUGA
+> DW5080
+AAGGACUUAAGUUAAAUAAACUGAAAGCCUUCAAAGCUUUAACAAAGAAUUGGAAACUUCUUAGUCCUUG
+> DQ3220
+UGGGGCGUGGCCAAGCGGUAAGGCAGCAGGUUUUGAUCCUGUUAUUCGGAGGUUCGAAUCCUUCCGUCCCAG
+> DX5160
+AGUAAGGUAAGCUAAAUAAGCUUUUGGGCCCAUACCCCAACAAUGUUGUUAAAAUCCUUCCUUUACUA
+> DL1200
+GCCCAAGUGGCGGAAUGGUAGACGCAUGGGAUUUAAGAUCCCACGCUAGCAAUAGCGUGCCGGUUCAAGUCCGGCUUUGGGCACCA
+> DT4880
+GUUUUAAUAGUUUAAUAAAAACAUUGGUCUUGUAAAUCAAAAAUAAGAUUAUUUCUUUUAAAACU
+> DE1230
+GGCCCGUUGGAGAAACGGUUAACUCACAUGCCUUUCACGCAUGCAUUCACGGGUUCGAAUCCCGUACGGGUCACCA
+> DT2600
+GCCCUUUUAACUCAGUGGUAGAGUAACGCCAUGGUAGGGCGUAAGUCAUCGGUUCAAAUCUGAUAAAGGGCU
+> DT7740
+GGCGCCGUGGCUUAGUUGGUUAAAGCGCCUGUCUAGUAAACAGGAGAUCGUGAGUUCGAAUCUCGCCGGGGCCU
+> DE6160
+UCCUCAUUGGUGUAGUCGGUAACACUCUAGUCUUUCACACUGGUACCUCGGGUUCGAUUCCCGAAUGGGGAG
+> DQ5080
+UAAGGAUUAGUUUAAUUGGAAAAACGAAGAGCUUUGACUUCUUCUGCUUGGGUCCAUUCCCCACUCCUUAA
+> DH1700
+GGUGGCUAUAGCUCAGUUGGUAGAGCCCUGGAUUGUGAUUCCAGUUGUCGUGGGUUCGAAUCCCAUUAGCCACCCCA
+> DL4070
+GCUAUUUUGGUGGAAUUGGUAGACACGACGCACUUAAAAUGCGUUACUAUAAAAGUAUAAAAGUUCAAGUCUUUUAAGUAGCA
+> DT1542
+GCCGGUGUAGCUCAAUUGGUAGAGCAACUGACUUGUAAUCAGUAGGUUGGGGGUUCAAGUCCUCUUGCCGGCACCA
+> DS2480
+GGAGUGAUGUCUGAGUGGCCGAAAGAGCUCGAUUGCUAAUCGAGUAUACAGCUUCCUGUACCGAGGGUUCGAAUCCCUCUCACUCCG
+> DK5320
+CACUAUGAAGCUAAGAGCGUUAACCUUUUAAGUUAAAGUUAGAGACCUUAAAAUCUCCAUAGUGA
+> DX4960
+AAAAAGAUAAGCUAACUAAGCUACUGGGUUCAUACCCCAUUUAUAAAGGUUUUAAUCCUUUUCUUUUUA
+> DL1662
+GCCGAAGUGGCGAAAUCGGUAGACGCAGUUGAUUCAAAAUCAACCGUAGAAAUACGUGCCGGUUCGAGUCCGGCCUUCGGCACCA
+> DQ6160
+GGUUUUAUAGUGUAAUUGGUUAGCACCCAGGACUUUGAAUCCUGUAAUCUGAGUUCGAGUCUCAGUAGAACCA
+> DL7920
+GUCAGGAUGGCCGAGCGGUCUAAGGCGCUGCGUUCAGGUCGCAGUCUCCCCUGGAGGCGUGGGUUCGAAUCCCACUUCUGACA
+> DH2960
+GGCGGAUGUAGCCAAGUGGAUCAAGGCAGUGGAUUGUGAAUCCACCAUGCGCGGGUUCAAUUCCCGUCGUUCGCCC
+> DD4000
+GGAUCUGUAGCUUAAUAGUAAAGUACCAUUUUGUCAUAAUGGAGGAUGUCAGUGCAAAUCUGAUUAGAUUCG
+> DL1141
+GGGGAUUGGCGGAAUUGGCAGACGCACUAGACUUAGGAUCUAGCGUCUUUGACGUAAGGGUUCAAGUCCCUUAUCCCCCACCA
+> DD2920
+GGGAUUGUAGUUCAAUUGGUCAGAGCACCGCCCUGUCAAGGCGGAAGCUGCGGGUUCGAGCCCCGUCAGUCCCG
+> DV2600
+AGGGAUAUAACUCAGCGGUAGAGUAUCACCUUGACGUGGUGGAAGUCAUCAGUUCGAACCUGAUUAUCCCUA
+> DI2400
+GGGCUAUUAGCUCAGUUGGUUAGAGCGCACCCCUGAUAAGGGUGAGGCCCCUGGUUCGAAUCCAGGAUGGCCCA
+> DS0261
+GGAAAAGCAAAUAGACUGGCGACUAAACCCGAUUGGAAAUCGGUUGAGUAAUAGCAAUAUUGCCUUAUGGGUUCAACUCCCAUCUUUUCCGCCA
+> DF9160
+GCCGAAAUAGCUCAGUUGGGAGAGCGUUAGACUGAAGAUCUAAAAGGUCCCUGGUUCGAUCCCGGGUUUCGGCA
+> DR1660
+GCGCCCGUAGCUCAGCUGGAUAGAGCGCUGCCCUCCGGAGGCAGAGGUCUCAGGUUCGAAUCCUGUCGGGCGCGCCA
+> DY0660
+CCCGCGAUAGUUCAGAUUGGUAGAACGGCGGACUGUAGAUCCGCAUGUCGCUGGUUCAAAUCCGGCUCGCGGGA
+> DV3200
+AGGGGUAUAACUCAGCGGUAGAGUGUCACCUUGACGUGGUGGAAGUCAUCAGUUCGAACCUGAUUAUCCCUA
+> DS6745
+GUGGACGUGCCGGAGUGGUUAUCGGGCAUGACUAGAAAUCAUGUGGGCUUUGCCCGCGCACGUUCGAAUCCUGCCGUUCACG
+> DR1663
+GCAUCCGUAGCUCAGCUGGAUAGAGUACUCGGCUACGAACCGAGCGGUCGGAGGUUCGAAUCCUCCCGGAUGCACCA
+> DW4360
+GCGCUCUUAGUUCAGUUCGGUAGAACGCGGGUCUCCAAAACCCGAUGUCGUAGGUUCAAAUCCUACAGAGCGUG
+> DT3880
+GCCCGGUUAGCAUAAAAGUAAUGUAUCCGUUUUGUAAUCGGAAUAAACAAGUGCGAUACUUGUACUGGGCU
+> DC0380
+GCCAAGGUGGCAGAGUUCGGCCUAACGCGGCGGCCUGCAGAGCCGCUCAUCGCCGGUUCAAAUCCGGCCCUUGGCU
+> DR6051
+GCUCCAGUGGCCUAAUGGAUAUGGCUUUGGACUUCUAAUCCAAAGGUUGCGGGUUCGAGUCCCGUCUGGAGUA
+> DL5880
+ACUUUUAAAGGAUAACAGCUAUCCAUUGGUCUUAGGCCCCAAAAAUUUUGGUGCAACUCCAAAUAAAAGUA
+> DL1231
+GCGGGUGUGGCGAAAUUGGCAGACGCACUAGACUUAGGAUCUAGCGCUUUACGGCAUGCAGGUUCAAGUCCUGUCACCCGCACCA
+> DS2520
+GGAGAAGUGUCUGAGUGGUCGAAAGAGCUCGAUUGCUAAUCGAGUGUGUCUAAUAAACACCGAGGGUUCAAAUCCCUUCUUCUCCU
+> DF5930
+GUUAAUGUAGCUUAAACUAAAGGCAAGGCACUGAAAAUGCCAAGAUGAGUGUACGCACUCCAUGAACA
+> DL3200
+GCCUUGGUGGUGAAAUGGUGGUAGACACGCGAGACUCAAAAUCUCGUGCUAAACAGCGAGGAGGUUCGAGUCCUCUUCAAGGCA
+> DV4000
+AGGAGAUUAGCUUAAUUGGUAUAGCAUUCGUUUUACACACGAAAGAUUAUAGGUUCGACCUAUAUUUCCUA
+> DD2680
+GGGAUUGUAGUUCAAUUGGUCAGAGCACCGCCCUGUCAAGGCGGAAGCUGCGGGUUCGAGCCCCGUCAGUCCCG
+> DL7740
+GUCAGGAUGGCCGAGCGGUCUAAGGCGCCAGACUCAAGUUCUGGUCCUCUCUGAGGGCGUGGGUUCGAAUCCCACUUCUGACA
+> DQ1340
+GUGGGCUAUGGUGUAAUUGGCAGCACGACUGAUUCUGGUUCAGUUAGUCUAGGUUCGAGUCCUGGUAGCCCAG
+> DL0980
+GCGGGGGUGCCCGAGCCAGGUAAAGGGGCAGGGCUCAAGACCCUGUGGCGUAGGCCUGCGUGGGUUCGAAUCCCACCCCCCGCA
+> DR3320
+GGGCCUGUAGCUCAGAGGAUUAGAGCACGUGGCUACGAACCACGGUGUCGGGGGUUCGAAUCCCUCCUCGCCCA
+> DF5900
+GUUAAUGUAGCUUAAAAUUAAAGCAAGGCACUGAAAAUGCCUAGAUGAGUAUAUUAACUCCAUAAACA
+> DG5040
+ACUCUAUGAGUACAAACGUACCUUUGACUUCCAAUCAAAUAGCUCUUAGGGAAAAUCUAAGAUAGAGUA
+> DX4320
+AGCGGGGUAGAGUAGUUGGUUAACUCGUCAGGCUCAUGACCUGAAGAUUGCAGGUUCGAAUCCUGCCCCCGCCA
+> DG2440
+GCGGAUGUAACUCAAUCGGUAGAGUGCGAUCCUUCCAAGUUCGAGGUUGUGGGUUCGAGUCCCAUCAUCCGCU
+> DF1180
+GGUCGUGUAGCUCAGUCGGUAGAGCAGCAGACUGAAGCUCUGCGUGUCGGCGGUUCAAUUCCGUCCACGACCACCA
+> DT0661
+GCCUCAGUGGCUCAGCCUGGUAGAGCGCCUGCUUGGUAAGCAGGAGGCCGCGGGUUCAAACCCCGCCUGAGGCU
+> DM4000
+GCUUGUAUAGUUUAAUUGGUUAAAACAUUUGUCUCAUAAAUAAAUAAUGUAAGGUUCAAUUCCUUCUACAAGUA
+> DN4620
+GUGCGUGUAGAUUAUAUUUGGUAAAAUCGUAAGGCUGUUAACUUUGAGAUGGUGUGUUUGCCCGCGGACG
+> DD5320
+AAGAUAUUAGUAAAAUCAAUUACAUAACUUUGUCAAAGUUAAAUUAUAGAUCAAUAAUCUAUAUAUCUUA
+> DH2880
+GGCGGAUGUAGCCAAGUGGAUCAAGGCAGUGGAUUGUGAAUCCACCAUGCGCGGGUUCAAUUCCCGUCAUUCGCCC
+> DD4080
+GGAUCCAUAGCUUAAUAGUAAAGUCCUAUUUUGUCAUAAUAGAGGAUGUCAGUGCAAAUCUGAUUGGAUUCG
+> DI2701
+GGGCUAUUAGCUCAGUGGUAGAGCGCGCCCCUGAUAAGGGCGAGGUCUCUGGUUCAAGUCCAGGAUGGCCCA
+> DK4340
+GGGUGUAUAGCUCAGUUGGUAGAGCAUUGGGCUUUUAACCUAAUGGUCGCAGGUUCAAGUCCUGCUAUACCCA
+> DK1230
+GCAUCCAUAGCUCAGUUGGUAGAGCAACAGACUCUUAAUCUGUGGGUCCACGGUUCGAGCCCGUGUGGGUGUACCA
+> DR5080
+NAAGAGUUAGUUUAAGGAGAACCUCUGAUUUCGGCUCAGAGGGUUUUGGUUCAACCCCAAAACUCUUGN
+> DA7680
+GGGGGCGUAGCUCAGAUGGUAGAGCGCUCGCUUAGCAUGCGAGAGGUACCGGGAUCGAUACCCGGCGCCUCCA
+> DG2921
+GCGGAUAUGGUCGAAUGGUAAAAUUUCUCUUUGCCAAGGAGAAGAUGCGGGUUCGAUUCCCGCUAUCCGCC
+> DP1360
+CGGGGUGUGGCGCAGCUUGGUAGCGCGCUUCGUUCGGGACGAAGAGGUCGUGGGUUCAAAUCCCGCCACCCCGA
+> DK6280
+UCCUUGUUAGCUCAGUUGGUAGAGCGUUCGGCUUUUAACCGAAAUGUCAGGGGUUCGAGCCCCCUAUGAGGAG
+> DL1750
+GCGGAAGUGGCGGAAUUGGUAGACGCACUAGAUUUAGGUUCAUGCGCCUGUAAGGUGUGAGAGUUCAAGUCUCUCCUUCCGCACCA
+> DY3770
+GAAGUAAUGGCUGAGUGGUUAAAGCGGCAGACUGUAAAUCUGUUGGUAGUACCGUCGUUGGUUCGAAUCCAACUUACUUCA
+> DG4070
+AUGAGUAUAAGUUAAUGGUUAAACUAAAUGUCUUCCACACAUUCCAUGUGAGUUCGAUUCUCACUACUCAUA
+> DL4700
+UGAAAGCUGGCAGAGUUAAUGCGCUUGAUUUAGGAUCAAUUUAUAAGUAUCCAUACUUGCUUUCAU
+> DH4360
+GGCGGAUGUAGCCAAGUGGAUCAAGGCAGUGGAUUGUGAAUCCACCACGCGCGGGUUCAAUCCCCGUCGUUCGCC
+> DD5280
+GAGAUAUUAGUAAAAUAAUUACAUAACCUUGUCAAGGUUAAGUUAUAGACUUAAAUCUAUAUAUCUUA
+> DS1230
+GGAGCGAUACUCAAGAGGCCGAAGAGGGCGCACUGCUAACGCGUUAGACGGUUAACCCCGUGCGAGGGUUCAAAUCCCUCUCGCUCCGCCA
+> DG8100
+GCGUUGGUGGUAUAGUGGUGAGCAUAGCUGCCUUCCAAGCAGUUGACCCGGGUUCGAUUCCCGGCCAACGCA
+> DP0680
+GGGGCCAUAGGGUAGCCUGGUCUAUCCUUUGGGCUUUGGGAGCCUGAGACCCCGGUUCAAAUCCGGGUGGCCCCA
diff --git a/Cove/Demos/test100.slx b/Cove/Demos/test100.slx
new file mode 100644
index 0000000..01cf40c
--- /dev/null
+++ b/Cove/Demos/test100.slx
@@ -0,0 +1,100 @@
+DQ4880 UAUA UU UU G GUGUAU GA UGCACA A AAGUU UUUGAUACUU UUA G AAAU AGU UUA AU UCU AU U AAAUAUA A
+DX0260 UGCG GG UU A GAUCUCUC UGGUAG AGAUCG C UAGUC UCAUAAGCUA GAA AGA GGUA GGU UCG AU UCC UG C ACCCGCU UCCA
+DT6160 GGCU CC UU A GCAUAGU GGU AUUGCG U UUCCC UAGUAAGGAA GAG GU CAUG AGU UCG AU CCU CA U AGGAGCC U
+DT9991 GGCU CC AU A GCUCAGG GGUU AGAGCA C UGGUC UUGUAAACCA GGG GU CGCG AGU UCA AA UCU CG C UGGGGCC U
+DY5220 GGUA AG AU G GCUGAGU GU U GAAGCG U UAGGC UGUAGUCCUU UUU A CAGA GGU UCA AU UCC UC U UCUUAUC G
+DE1660 GUCC CC UU C GUCUAGA GGCCC AGGACA C CGCCC UUUCACGGCG GUA A CAGG GGU UCG AA UCC CC U AGGGGAC GCCA
+DI2220 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GG CCCU GGU UCA AA UCC AG G AUGGCCC A
+DL2522 UCCU UC GU G GUGAAAU GGUA AACACG U GUGAU UCAAAAUCAC AU GC AUA A GCU UGCC GGU UCG AG UCC GG U CGAAGGU A
+DC5020 GGUU UU GU A GUGUAA UU AACAUA U UAGAU UGCAAAUCUA UAG A UGCG GCC AGU UU AUC CG C CAAAACU U
+DS2922 GGAG AG AU G GCUGAGC GGUUG AUAGCC C CGGUC UUGAAAACCG GUA UAG UUUUAAC AAAGAAUCUA CGAG GGU UCG AA UCC CU C UCUCUCC U
+DA5280 GAGG AU UU A GCUUAA UU AAAGCA G UUGAU UUGCAUUUAA CAG A UGUA AGA UAU AG UCU UA C AGUCCUU A
+DT4700 GCUU UA AA A GCUUUG CU GAAGCA A CGGCC UUGUAAGUCG UAG A AAAC UAU AC GU U UUAAAGC U
+DY5040 AAUA AG AU G GCUGAGA GAA CAAGCG G UGGAU UGUAAAUCCA UAC A CAAA GGU UAA AU CCC UU U UCUUAUU A
+DG7740 GCAU CG GU G GUUCAGU GGU AGAAUG C UCGCC UGCCACGCGG GCG G CCCG GGU UCG AU UCC CG G CCGAUGC A
+DF5220 GCCC CC AU A GCUUAACC CAC AAAGCA U GGCAC UGAAGAUGCC AAG A UGGU AC CUA CU AU AC C UGUGGGC A
+DV3960 AAGA AA UU A GCUCAAC GGU AGAGCA A CCGUU UUACACACGG AAG GC UAUG AGU UCG AA UCU CC U AUUUCUU ACCA
+DY2920 GGGU CG AU G CCCGAGC GGUUA AUGGGG A CGGAC UGUAAAUUCG UU GGC A AUA U GUCUA CGCU GGU UCA AA UCC AG C UCGGCCC A
+DL1543 GCCG GU GU G GCGGAAUU GGCA GACGCG C ACGAC UCAAAAUCGU GU UCC UUC U GGAG UGUC GGU UCG AC CCC GA C CACCGGU A
+DX4440 AGCG GG GU A GAGGAAUU GGUC AACUCA U CAGGC UCAUGACCUG AAG AC UGCA GGU UCG AA UCC UG U CCCCGCC U
+DH5120 GUAG AU AU A GUUUAAU AAAACA C UAGAU UGUGAUUCUA GAG U CAGA GGU UAA AC CCC UC U UAUCAAC C
+DL4760 ACUA UU UU G GCAGAUA AGUGCA A UGAAU UUAGAAUUCA UUU A UGUA GAU UUU UU UC UA C AAAUAGU A
+DA2480 GGGA GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AG UCC GC U UACUUCC ACCA
+DY4880 GAUU AA GU G GCUGAA GUU UAGGCG A UAGAU UGUAAAUCUA UUU A UAAG A AUU AU U CU U CUUAAUC A
+DY3280 GGGU CG AU G CCCGAGC GGUUA AUGGGG A CGGAC UGUAAAUUCG UU GGC A AUA U GUCUA CGCU GGU UCA AA UCC AG C UCGGCCC A
+DY6743 CCGA CC UU A GCUCAGUU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CACU GGU UCG AA UCU GG U AGGUUUG A
+DW5080 AAGG AC UU A AGUUAA AU AAACUG A AAGCC UUCAAAGCUU UAA C AAAG AAU UGG AAA CUU CU U AGUCCUU G
+DQ3220 UGGG GC GU G GCCAAGC GGU AAGGCA G CAGGU UUUGAUCCUG UUA UU CGGA GGU UCG AA UCC UU C CGUCCCA G
+DX5160 AGUA AG GU A AGCUAA AU AAGCUU U UGGGC CCAUACCCCA ACA A UGUU G U UAA AA UCC UU C CUUUACU A
+DL1200 GCCC AA GU G GCGGAAU GGUA GACGCA U GGGAU UUAAGAUCCC AC GCU A GCA A U AGCG UGCC GGU UCA AG UCC GG C UUUGGGC ACCA
+DT4880 GUUU UA AU A GUUUAA UA AAAACA U UGGUC UUGUAAAUCA AAA A UAAG A UUA UU U CU U UUAAAAC U
+DE1230 GGCC CG UU G GAGAAAC GGUU AACUCA C AUGCC UUUCACGCAU GCA UU CACG GGU UCG AA UCC CG U ACGGGUC ACCA
+DT2600 GCCC UU UU A ACUCAGU GGU AGAGUA A CGCCA UGGUAGGGCG UAA GU CAUC GGU UCA AA UCU GA U AAAGGGC U
+DT7740 GGCG CC GU G GCUUAGUU GGUU AAAGCG C CUGUC UAGUAAACAG GAG AU CGUG AGU UCG AA UCU CG C CGGGGCC U
+DE6160 UCCU CA UU G GUGUAGUC GGU AACACU C UAGUC UUUCACACUG GUA C CUCG GGU UCG AU UCC CG A AUGGGGA G
+DQ5080 UAAG GA UU A GUUUAAUU GGA AAAACG A AGAGC UUUGACUUCU UCU G CUUG GGU CCA UU CCC CA C UCCUUA A
+DH1700 G GUGG CU AU A GCUCAGUU GGU AGAGCC C UGGAU UGUGAUUCCA GUU GU CGUG GGU UCG AA UCC CA U UAGCCAC CCCA
+DL4070 GCUA UU UU G GUGGAAUU GGUA GACACG A CGCAC UUAAAAUGCG UU ACU AUA AA AGUA UAAA AGU UCA AG UCU UU U AAGUAGC A
+DT1542 GCCG GU GU A GCUCAAUU GGU AGAGCA A CUGAC UUGUAAUCAG UAG GU UGGG GGU UCA AG UCC UC U UGCCGGC ACCA
+DS2480 GGAG UG AU G UCUGAGU GGCCG AAAGAG C UCGAU UGCUAAUCGA GU AUA CAG CUU C CUG UAC CGAG GGU UCG AA UCC CU C UCACUCC G
+DK5320 CACU AU GA A GCUA AGAGCG U UAACC UUUUAAGUUA AAG UU AGAG ACC UUA AA AU CU C CAUAGUG A
+DX4960 AAAA AG AU A AGCUAA CU AAGCUA C UGGGU UCAUACCCCA UUU A UAAA GGU UUU AA UCC UU U UCUUUUU A
+DL1662 GCCG AA GU G GCGAAAUC GGUA GACGCA G UUGAU UCAAAAUCAA CC GUA GAA A UACG UGCC GGU UCG AG UCC GG C CUUCGGC ACCA
+DQ6160 GGUU UU AU A GUGUAAUU GGUU AGCACC C AGGAC UUUGAAUCCU GUA A UCUG AGU UCG AG UCU CA G UAGAACC A
+DL7920 GUCA GG AU G GCCGAGC GGUCU AAGGCG C UGCGU UCAGGUCGCA GU CUC C CCU G GAGG CGUG GGU UCG AA UCC CA C UUCUGAC A
+DH2960 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC CC
+DD4000 GGAU CU GU A GCUUAAU AGU AAAGUA C CAUUU UGUCAUAAUG GAG GA UGUC AGU GCA AA UCU GA U UAGAUUC G
+DL1141 GGG GA UU GGCGGAAU UGGCA GACGCA C UAGAC UUAGGAUCUA GC GUC UUU GACG UAAG GGU UCA AG UCC CU U AUCCCCC ACCA
+DD2920 GGGA UU GU A GUUCAAUU GGUC AGAGCA C CGCCC UGUCAAGGCG GAA GC UGCG GGU UCG AG CCC CG U CAGUCCC G
+DV2600 AGGG AU AU A ACUCAGC GGU AGAGUA U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AA CCU GA U UAUCCCU A
+DI2400 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GC CCCU GGU UCG AA UCC AG G AUGGCCC A
+DS0261 GGAA AA GC AAAUAGACU GGCG ACUAAA C CCGAU UGGAAAUCGG UU GAG UAAUAGC AAUAUUG CCU UAUG GGU UCA AC UCC CA U CUUUUCC GCCA
+DF9160 GCCG AA AU A GCUCAGUU GGG AGAGCG U UAGAC UGAAGAUCUA AAA GG UCCCU GGU UCG AU CCC GG G UUUCGGC A
+DR1660 GCGC CC GU A GCUCAGCU GGAU AGAGCG C UGCCC UCCGGAGGCA GAG GU CUCA GGU UCG AA UCC UG U CGGGCGC GCCA
+DY0660 CCCG CG AU A GUUCAGAU UGGU AGAACG G CGGAC UGUAGAUCCG CAU GU CGCU GGU UCA AA UCC GG C UCGCGGG A
+DV3200 AGGG GU AU A ACUCAGC GGU AGAGUG U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AA CCU GA U UAUCCCU A
+DS6745 GUGG AC GU G CCGGAGU GGUU AUCGGG C AUGAC UAGAAAUCAU GU GGG C UUU G CCCG CGCA CGU UCG AA UCC UG C CGUUCAC G
+DR1663 GCAU CC GU A GCUCAGCU GGAU AGAGUA C UCGGC UACGAACCGA GCG GU CGGA GGU UCG AA UCC UC C CGGAUGC ACCA
+DW4360 GCGC UC UU A GUUCAGUU CGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DT3880 GCCC GG UU A GCAUAAA AGU AAUGUA U CCGUU UUGUAAUCGG AAU A AACA AGU GCG AU ACU UG U ACUGGGC U
+DC0380 GCCA AG GU G GCAGAGUU CGGCCU AACGCG G CGGCC UGCAGAGCCG CUC AU CGCC GGU UCA AA UCC GG C CCUUGGC U
+DR6051 GCUC CA GU G GCCUAAU GGAU AUGGCU U UGGAC UUCUAAUCCA AAG GU UGCG GGU UCG AG UCC CG U CUGGAGU A
+DL5880 ACUU UU AA A GGAUAAC AGC UAUCCA U UGGUC UUAGGCCCCA AAA A UUUU GGU GCA AC UCC AA A UAAAAGU A
+DL1231 GCGG GU GU G GCGAAAUU GGCA GACGCA C UAGAC UUAGGAUCUA GC GCU UUA C GGCA UGCA GGU UCA AG UCC UG U CACCCGC ACCA
+DS2520 GGAG AA GU G UCUGAGU GGUCG AAAGAG C UCGAU UGCUAAUCGA GU GUG UCU AAU AAA CAC CGAG GGU UCA AA UCC CU U CUUCUCC U
+DF5930 GUUA AU GU A GCUUAAA CUA AAGGCA A GGCAC UGAAAAUGCC AAG A UGAG UG UAC G CA CU C CAUGAAC A
+DL3200 GCCU UG GU G GUGAAAUGGUGGUA GACACG C GAGAC UCAAAAUCUC GU GCU AAA C AGCG AGGA GGU UCG AG UCC UC U UCAAGGC A
+DV4000 AGGA GA UU A GCUUAAUU GGU AUAGCA U UCGUU UUACACACGA AAG AU UAUA GGU UCG A CC UA U AUUUCCU A
+DD2680 GGGA UU GU A GUUCAAUU GGUC AGAGCA C CGCCC UGUCAAGGCG GAA GC UGCG GGU UCG AG CCC CG U CAGUCCC G
+DL7740 GUCA GG AU G GCCGAGC GGUCU AAGGCG C CAGAC UCAAGUUCUG GU CCU C UCU G AGGG CGUG GGU UCG AA UCC CA C UUCUGAC A
+DQ1340 G UGGG CU AU G GUGUAAUU GGC AGCACG A CUGAU UCUGGUUCAG UUA G UCUA GGU UCG AG UCC UG G UAGCCCA G
+DL0980 GCGG GG GU G CCCGAGCC AGGUA AAGGGG C AGGGC UCAAGACCCU GU GGC GUA G GCCUG CGUG GGU UCG AA UCC CA C CCCCCGC A
+DR3320 GGGC CU GU A GCUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUCGCCC A
+DF5900 GUUA AU GU A GCUUAAA AUU AAAGCA A GGCAC UGAAAAUGCC UAG A UGAG U A UAU UA A CU C CAUAAAC A
+DG5040 ACUC UA UG A GUACAAA CGUACC U UUGAC UUCCAAUCAA AUA GC UCUU AGG GAA AA UCU AA G AUAGAGU A
+DX4320 AGCG GG GU A GAGUAGUU GGUU AACUCG U CAGGC UCAUGACCUG AAG AU UGCA GGU UCG AA UCC UG C CCCCGCC A
+DG2440 GCGG AU GU A ACUCAAUC GGU AGAGUG C GAUCC UUCCAAGUUC GAG GU UGUG GGU UCG AG UCC CA U CAUCCGC U
+DF1180 GGUC GU GU A GCUCAGUC GGU AGAGCA G CAGAC UGAAGCUCUG CGU GU CGGC GGU UCA AU UCC GU C CACGACC ACCA
+DT0661 GCCU CA GU G GCUCAGCC UGGU AGAGCG C CUGCU UGGUAAGCAG GAG GC CGCG GGU UCA AA CCC CG C CUGAGGC U
+DM4000 GCUU GU AU A GUUUAAUU GGUU AAAACA U UUGUC UCAUAAAUAA AUA AU GUAA GGU UCA AU UCC UU C UACAAGU A
+DN4620 GUGC GU GU A GAUUAUAUUUGGU A AAAUCG U AAGGC UGUUAACUUU GAG A UGGU G UGU U U GC C CGCGGAC G
+DD5320 AAGA UA UU A GUAAAAU CA AUUACA U AACUU UGUCAAAGUU AAA U UAUA GAU CAA UA AUC UA U AUAUCUU A
+DH2880 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CAUUCGC CC
+DD4080 GGAU CC AU A GCUUAAU AGU AAAGUC C UAUUU UGUCAUAAUA GAG GA UGUC AGU GCA AA UCU GA U UGGAUUC G
+DI2701 GGGC UA UU A GCUCAGU GGU AGAGCG C GCCCC UGAUAAGGGC GAG GU CUCU GGU UCA AG UCC AG G AUGGCCC A
+DK4340 GGGU GU AU A GCUCAGUU GGU AGAGCA U UGGGC UUUUAACCUA AUG GU CGCA GGU UCA AG UCC UG C UAUACCC A
+DK1230 GCAU CC AU A GCUCAGUU GGU AGAGCA A CAGAC UCUUAAUCUG UGG GU CCAC GGU UCG AG CCC GU G UGGGUGU ACCA
+DR5080 NAAG AG UU A GUUUAA GG AGAACC U CUGAU UUCGGCUCAG AGG G UUUU GGU UCA AC CCC AA A ACUCUUG N
+DA7680 GGGG GC GU A GCUCAGAU GGU AGAGCG C UCGCU UAGCAUGCGA GAG GU ACCG GGA UCG AU ACC CG G CGCCUCC A
+DG2921 GCGG AU AU G GUCGAAU GGU AAAAUU U CUCUU UGCCAAGGAG AAG A UGCG GGU UCG AU UCC CG C UAUCCGC C
+DP1360 CGGG GU GU G GCGCAGCU UGGU AGCGCG C UUCGU UCGGGACGAA GAG GU CGUG GGU UCA AA UCC CG C CACCCCG A
+DK6280 UCCU UG UU A GCUCAGUU GGU AGAGCG U UCGGC UUUUAACCGA AAU GU CAGG GGU UCG AG CCC CC U AUGAGGA G
+DL1750 GCGG AA GU G GCGGAAUU GGUA GACGCA C UAGAU UUAGGUUCAU GC GCC U GUA A GGUG UGAG AGU UCA AG UCU CU C CUUCCGC ACCA
+DY3770 GAAG UA AU G GCUGAGU GGUU AAAGCG G CAGAC UGUAAAUCUG UU GGU AGU ACCGU CGUU GGU UCG AA UCC AA C UUACUUC A
+DG4070 AUGA GU AU A AGUUAAU GGUU AAACUA A AUGUC UUCCACACAU UCC A UGUG AGU UCG AU UCU CA C UACUCAU A
+DL4700 UGAA AG CU G GCAGAG UU AAUGCG C UUGAU UUAGGAUCAA UUU A UAAG UA UCC A UA CU U GCUUUCA U
+DH4360 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA CG CGCG GGU UCA AU CCC CG U CGUUCGC C
+DD5280 GAGA UA UU A GUAAAA UA AUUACA U AACCU UGUCAAGGUU AAG U UAUA GAC UUA AA UC UA U AUAUCUU A
+DS1230 GGAG CG AU A CUCAAGA GGCCG AAGAGG G CGCAC UGCUAACGCG UUAGACG GU UAA C CC CGUG CGAG GGU UCA AA UCC CU C UCGCUCC GCCA
+DG8100 GCGU UG GU G GUAUAGU GGUG AGCAUA G CUGCC UUCCAAGCAG UUG A CCCG GGU UCG AU UCC CG G CCAACGC A
+DP0680 GGGG CC AU A GGGUAGCC UGGUCU AUCCUU U GGGCU UUGGGAGCCU GAG A CCCC GGU UCA AA UCC GG G UGGCCCC A
diff --git a/Cove/Demos/trna1415.slx b/Cove/Demos/trna1415.slx
new file mode 100644
index 0000000..4303bb9
--- /dev/null
+++ b/Cove/Demos/trna1415.slx
@@ -0,0 +1,1415 @@
+DA0260 GGGC GA AU A GUGUCAGC GGG AGCACA C CAGAC UUGCAAUCUG GUA G GGAG GGU UCG AG UCC CU C UUUGUCC ACCA
+DA0261 GGGC GA AU A GUGUCAGC GGG AGCACA C CAGAC UUGCAAUCUG GUA G GGAG GGU UCG AG UCC CU C UUUGUCC ACCA
+DA0340 GGGC UC GU A GCUCAGC GGG AGAGCG C CGCCU UUGCGAGGCG GAG GC CGCG GGU UCA AA UCC CG C CGAGUCC A
+DA0380 GGGC CC AU A GCUCAGU GGU AGAGUG C CUCCU UUGCAAGGAG GAU GC CCUG GGU UCG AA UCC CA G UGGGUCC A
+DA0420 GGGC CC AU A GCUCAGU GGU AGAGUG C CUCCU UUGCAAGGAG GAU GC CCUG GGU UGG AA UCC CA G UGGGUCC A
+DA0580 GGGC CC GU A GCUCAGAC UGGG AGAGCG C CGCCC UUGCAAGGCG GAG GC CCCG GGU UCA AA UCC CG G UGGGUCC A
+DA0620 GGGC CC GU A GCUCAGAC UGGG AGAGCG C CGCCC UUGCAAGGCG GAG GC CCCG GGU UCA AA UCC CG G UGGGUCC A
+DA0660 GGGC CC GU A GCUCAGUU GGG AGAGCG C UGCCC UUGCAAGGCA GAG GC CGUG GGU UCA AA UCC CG C CGGGUCC A
+DA0670 GGGC UU GU A GCUCAGCU GGU AGAGCG C CGCCU UUGCAAGGCG GAG GC CCUG GGU CCG AA UCC CA G CAAGUCC A
+DA0680 GGGC CC AU A GCUCAGCC UGGG AGAGCG C CGCCC UUGCAAGGCG GAG GC CCCG GGU UCA AA UCC CG G UGGGUCC A
+DA0780 GGGC UC GU A GCUCAGCU GGA AGAGCG C GGCGU UUGCAACGCC GAG GC CUGG GGU UCA AA UCC CC A CGGGUCC A
+DA0940 GGGC CG GU A GCUCAGCC UGGG AGAGCG U CGGCU UUGCAAGCCG AAG GC CCCG GGU UCG AA UCC CG G CCGGUCC ACCA
+DA0980 GGGC CG GU A GUCUAGC GGA AGGACG C CCGCC UUGCGCGCGG GAG AU CCCG GGU UCG AA UCC CG G CCGGUCC A
+DA0981 GGGC CG GU A GUCUAGC GGA AGGACG C CCGCC UCGCGCGCGG GAG AU CCCG GGU UCG AA UCC CG G CCGGUCC A
+DA1140 GGGC CC UU A GCUCAGCU GGG AGAGCA C CUGCC UUGCACGCAG GGG GU CGAC GGU UCG AU CCC GU U AGGGUCC ACCA
+DA1180 GGGC CC UU A GCUCAGCU GGG AGAGCA C CUGCC UUGCACGCAG GGG GU CGAC GGU UCG AU CCC GU U AGGGUCC ACCA
+DA1230 GGGG CU UU A GCUCAGCU GGG AGAGCG C CUGCC UUGCACGCAG GAG GU CAGC GGU UCG AU CC GC U AAGCUCC ACCA
+DA1260 GGGC CC GU A GCUCAGCU GGG AGAGCA C CUGCC UUGCACGCAG GGG GU CGAC GGU UCG AU CCC GU U CGGGUCC ACCA
+DA1540 GGGG CC UU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CAGC GGU UCG AU CCC GC U AGGCUCC A
+DA1541 GGGG CC UU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CAGC GGU UCG AU CCC GC U AGGCUCC ACCA
+DA1542 GGGG CC UU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CAGC GGU UCG AU CCC GC U AGGCUCC A
+DA1543 GGGG CC UU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CAGC GGU CG A CCC GC U AGGCUCC ACCA
+DA1620 GGGG CU GU A GCUCAGUU GGG AGAGCA C CUGCU UUGCAAGCAG GGG GU CAUC GGU UCG AG ACC GG U CAGCUCC ACCA
+DA1660 GGGG CU AU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CUGC GGU UCG AU CCC GC A UAGCUCC ACCA
+DA1661 GGGG CU AU A GCUCAGCU GGG AGAGCG C UUGCA UGGCAUGCAA GAG GU CAGC GGU UCG AU CCC GC U UAGCUCC ACCA
+DA1820 GGGG CC AU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CAGG AGU UCG AU CCU CC U UGGCUCC ACCA
+DA1860 GGGG CA UU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CAGC GGU UCG AU CCC GC U AUUCUCC ACCA
+DA1900 GGGG CC AU A GCUCAGUU GGU AGAGCG C CUGCU UUGCAAGCAG GUG U CGUC GGU UCG AA UCC GU C UGGCUCC ACCA
+DA2100 GGGG GU UU A GCUCAGUU GGU AGAGCG C CUGCU UUGCAAGCAG GAU GU CAGC GGU UCG AG UCC GC U AACCUCC ACCA
+DA2180 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AG UCC GC U UACCUCC A
+DA2220 GGGG GU AU A GCUCAGUU GGU AGAGCG U UGCUU UUGCAUAGCA GAC GU CAGC AGU UCG AG UCU GC U UAUCUCC A
+DA2240 GGGG CC UU A GCUCAGCU GGG AGAGCG C CUGCU UUGCACGCAG GAG GU CAGC GGU UCG AU CCC GC U AGGCUCC A
+DA2400 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AG UCC GC U UACCUCC A
+DA2410 GGGG GU AU A GCUCAGUU GGU AGAGCG U UGCUU UUGCAUAGCA GAC GU CAGC AGU UCG AG UCU GC U UAUCUCC A
+DA2440 GGGG AU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AA UCC GC U UAUCUCC A
+DA2480 GGGA GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AG UCC GC U UACUUCC ACCA
+DA2520 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DA2521 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AG UCC GC UUUAUCUCC A
+DA2540 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCACGGCA GAU GU CAGG GGU UCG AG UCC CC U UACCUCC A
+DA2570 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DA2580 GGGG GU AU A GCUUAGUU GGU AGAGCG C UGCUU UUGCAAGGCA GAU GU CAGC GGU UCG AA UCC GC U UACCUCC A
+DA2590 GGGG GU AU A GCUCAGUU GGU AGAGCG C UGCCU UUGCAAGGCA GUG GU CAGC GGU UCG AG UCC GC U UACCUCC A
+DA2600 GGGG AU AU A GCUCAGUU GGU AGAGCG C CGCCC UUGCAAGGCG GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DA2620 GGGG U AU A GCUCAGU GGU AGAGCG C CGUCC UUGCAAGGCG GAC GU CACG GGU UCA AG UCC GC U UACCUCC A
+DA2700 GGGG AU AU A GCUCAGUU GGU AGAGCU C CGCUC UUGCAAGGCG GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DA2720 GGGG AU AU A GCUCAGUU GGU AGAGCU C CGCUC UUGCAUGGCG GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DA2840 GGGG AU AU A GCUCAGUU GGU AGAGCU C CGCUC UUGCAAGGCG GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DA2920 GGGG AU AU A GCUCAGUU GGU AGAGCU C CGCUC UUGCACGGCG GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DA3280 GGGG AU AU A GCUCAGUU GGU AGAGCG C CGCUC UUGCAUGGCG GAU GU CAGC GGU UCG AG UCC GC U UAUCUCC A
+DA3880 GGGG CU AU A GUUUAACU GGU AAAACG G CGAUU UUGCAUAUCG UUA U UUCA GGA UCG AG UCC UG A UAACUCC A
+DA3920 GGGG GU AU A GUAUAAUU GGU AGUACA G CAAUC UUGCUCAUUG CUU G UCAA GGU UCA AA UCC UU G UAUCUCC A
+DA4000 GGGG UU AU A GUUAAAUU UGGU AGAACG A CUGCG UUGCAUGCAU UUA A UAUG AGU UCA AG UCU CA U UAACUCC A
+DA4001 GGGG UU AU A GUUAAAUU UGGU GAAACG A CUGCG UUGCAUGCAU UUA A UAUG AGU UCA AG UCU CA U UAACUCC A
+DA4080 GGGG UU AU A GUUAAAUU GGU AGAACA A UUGUG UUGCAUGCAA UAG A UAUG AGU UCA AU UCU CA U UAACUCC A
+DA4500 GGGG AC GU A GCUCAAUU GGU AGAGCG U AUGUU UUGCAAGCAU AAA GC UGUC GGU UCA AA UCC GA U CGUCUCC A
+DA4620 GACG GU AU A GUUUAA GUU GAGAUG U GUGCU CUGCGAGCAU UCG G UAGA G GUU UC U UGCCGUU G
+DA4700 AGAA UG GU A CUUUAA AA AAAAGA A UUGGU UUGCAUCUAA UAU UAAG C CUG A G CU U UCAUUCU U
+DA4800 AGGG UA AU A GUUAAUU AUAACA U UUAAU UUGCACUUAA AAA G UAUU GAA UUU AA UUC AA U UUACCUU A
+DA4880 AGGG UU GU A GUUAAUU AUAACA U UUGAU UUGCAUUCAA AAA G UAUU G A AU AU U C AA U CUACCUU A
+DA4980 GUGA AU UU A GUUUAAUA GAU AAAACA U UUGCU UUGCAAGCAA AAC U UGAA AGU UUA AA UCC UU C AAUCCAC A
+DA5000 GUGG AC UU A GUUUAAAA GAU AAAACA A UUGAU UUGCAAUCAG UAA C UCCA AGU UUA AC UCU CG G AGUCCAC A
+DA5020 GUGA AU UU A GUUUAAUA GAA AAAACA U UUGCU UUGCAAGCAG ACU U UGAA AGU UUA AC UCC UU C AAUACAC A
+DA5040 GUGG UU CU A GUUUAGU GA AAAACG U UUGCU UUGCAAGCAG AAA U CCUA AGU UAA AU UCU UA G GAACUAC A
+DA5080 GUGG UU UU A GUUUAAUU GA AAAACG U UUGCU UUGCAAGCAA AAG U UCUA AGU UAA AG UCU UA G AAGCUAC A
+DA5100 AAGG UC UU A GCUUAA UU AAAGUA U UUGUU UUGCAUACAG AAG A UGUG GGG UAG UG UCC UG C AGAUCUU A
+DA5120 AAGG CU UU A GCUUAA UU AAAGUG U UUUAG UUGCAUUCAA UUG A UGUU GGA UAA AA UCC UG C AAGCCUU A
+DA5160 AGGG CU UU A UCUUAAU UU AAAGGG C CUGAG UUGCAUUCAG GAG A UGUA GGU UAA UA UCC UG C AAGUCCU A
+DA5220 GAGG CC UU A GCUUAA UU AAAGCG U CUGAU UUGCAUUCAG GAG A UACA GGU UAA UG UCC UG U UGGUCUU A
+DA5280 GAGG AU UU A GCUUAA UU AAAGCA G UUGAU UUGCAUUUAA CAG A UGUA AGA UAU AG UCU UA C AGUCCUU A
+DA5320 GAGG UC UU A GCUUAA UU AAAGCA A UUGAU UUGCAUUCAA UAG A UGUA GGA UGA AG UCU UA C AGUCCUU A
+DA5360 GAGG AU UU A GCUUAA UU AAAGUG G UUGAU UUGCAUUCAA UUG A UGUA AGG UGU AG UCU UG C AAUCCUU A
+DA5880 AAGG GC UU A GCUUAA UU AAAGUG G CUGAU UUGCGUUCAG UUG A UGCA GAG UGG GG UUU UG C AGUCCUU A
+DA6160 GGGG AA GU A GCUCAGAU GGU AGAGCG C UCGCU UAGCAUGCGA GAG GU AAAG GGU UCG AU ACC CU U CUUCCUC A
+DA6280 GGGC AC AU G GCGCAGUU GGU AGCGCG C UUCCC UUGCAAGGAA GAG GU CAUC GGU UCG AU UCC GG U UGCGUCC A
+DA6281 GGGC GU GU G GCGUAGUC GGU AGCGCG C UCCCU UAGCAUGGGA GAG GU CUCC GGU UCG AU UCC GG A CUCGUCC A
+DA6320 GGGC AU GU G GUGUAGAU GGU U AUCACG C UUCCU UAGCAUGGAA GAG GU CCCA GAU UCG AG UUC UG G CUUGUCC A
+DA6740 GGGG AU GU A GCUCAUAU GGU AGAGCG C UCGCU UUGCAUGCGA GAG GC ACAG GGU UCG AU UCC CU G CAUCUCC A
+DA7680 GGGG GC GU A GCUCAGAU GGU AGAGCG C UCGCU UAGCAUGCGA GAG GU ACCG GGA UCG AU ACC CG G CGCCUCC A
+DA7681 GGGG GC GU A GCUCAGAU GGU AGAGCG C UCGCU UAGCAUGUGA GAG GU ACCG GGA UCG AU ACC CG G CGCCUCC A
+DA7740 GGGG AU GU A GCUCAGAU GGU AGAGCG C UCGCU UAGCAUGUGA GAG GU ACGG GGA UCG AU GCC CC G CAUCUCC A
+DA7920 GGGG GU GU A GCUCAGU GGU AGAGCG C AUGCU UUGCAUGUAU GAG GU CUUG GGU UCA AU CCC CA G CAUCUCC A
+DA8100 GGGG AU GU A GCUCAGU GGU AGAGCG C AUGCU UCGCAUGUAU GAG GC CCCG GGU UCG AU CCC CG G CAUCUCC A
+DC0380 GCCA AG GU G GCAGAGUU CGGCCU AACGCG G CGGCC UGCAGAGCCG CUC AU CGCC GGU UCA AA UCC GG C CCUUGGC U
+DC0500 GCCA AG GU G GCAGAGUU CGGCCC AACGCA U CCGCC UGCAGAGCGG AAC CC CCGCC GGU UCA AA UCC GG C CCUUGGC UCCA
+DC1140 GGCA AC AU G GCCAAGC GGCU AAGGCA U GGGUC UGCAACACCC UGA U CAUC GGU UCG AA UCC GA U UGUUGCC UCCA
+DC1230 GCAU CC AU A GCUCAGUU GGU AGAGCA A CAGAC UCUUAAUCUG UGG GU CCAC GGU UCG AG CCC GU G UGGGUGU ACCA
+DC1260 GGCA CU AU A GCCAAGGU GGCU AAGGCA U GGGAC UGCAACUCCC CGA U CGUC GGU UCG AA UCC GA C UAGUGCC UCCA
+DC1350 GGUG GA GU G GCCGAGA GGC GAGGCA A CGGCC UGCAAAGCCG UCU A CACG GGU UCA AA UCC CG U CUCCACC UCCA
+DC1540 GGCG GC AU A GCCAAGU GGU AAGGCA G AGGUC UGCAAAACCU UUA U CCCC GGU UCG AA UCC GG G UGUCGCC UCCA
+DC1660 GGCG CG UU A ACAAAGC GGU UAUGUA G CGGAU UGCAAAUCCG UCU A GUCC GGU UCG AC UCC GG A ACGCGCC UCCA
+DC2440 GGCG GC AU A GCCAAGC GGU AAGGCC G UGGAU UGCAAAUCCU CUA UU CCCC AGU UCA AA UCU GG G UGCCGCC U
+DC2520 GGCG GC AU G GCCAAGC GGU AAGGCA G AAGAU UGCAAAUCUU UUA UU CCCC AGU UCG AU UCU GG G UGUCGUC U
+DC2600 GGCG AC AU G GCCAAGU GGU AAGGCA G AGGAC UGCAAAUCCU UUA U CCCC AGU UCA AA UCU GG G UGUCGCU U
+DC2680 GGCG GC AU G GCCAAGC GGU AAGGCA G GGGAC UGCAAAUCCU UUA U CCCC AGU UCA AA UCU GG G UGCCGCC U
+DC2700 GGCG GC AU G GCCAAGC GGU AAGGCA G GGGAC UGCAAAUCCU UUA U CCCC AGU UCA AA UCU GG G UGCCGCC U
+DC2720 GGCG GC AU G GCCAAGU GGU AAGGCA G GGGAC UGCAAAUCCU UUA C CCCC AGU UCA AA UCU GG G UGCCGCC U
+DC2920 GGCG AC AU G GCCGAGU GGU AAGGCA G AGGAC UGCAAAUCCU UUU UU CCCC AGU UCA AA UCC GG G UGUCGCC U
+DC3280 GGCG GC AU G GCCGAGU GGU AAGGCG G AGGAC UGCAAAUCCU UGU U CCCC AGU UCA AA UCC GG G UGUCGCC U
+DC3880 AGGA GC UU G AGCAGAU GGUU UUGCGU U UUGAU UGCAAAUUGA AAU A UAGG GAU UCG AUU UCC CC G AGCUCCU C
+DC3881 AGGA GU UU G AGCAAAU GGUU UUGCGU U UUGAU UGCAAAUUGA AAU A UAGG GAU UCG AUU UCC CC G GACUCCU C
+DC3920 GAUU AC GA U GUAAAU GGU UUACCC U UUGAC UGCAAAUCUU AAG GA UUAG G U UCG AU U C CU A CGUAAUC C
+DC4000 GGAG AU GU U GUUUUAA GGU UAAACU AUUAGAU UGCAAAUCUA CUU AU UAAG AGU UCG AU UCU CU U CAUCUCU U
+DC4050 GGAA AU GU U GUUUAAA GGUU AAACUG U UAGAU UGCAAAUCUA CAC AU UUAG AGU UCG AU UCU CU U CAUUUCU U
+DC4070 AGAG AG GA G UGAAUAA GGUU GUUCAU A UAAAU UGCAAAUUUA UAN U AU UAGG GUU CGA U UC CC U CUUCUCU C
+DC4080 GGAG GU GU U GUUUAAA GGUU AAGCUA U UAGAU UGCAGAUCUA CUU AU UAAG AGU UCG AU UCU CU U CAUCUCU U
+DC4300 GGCU AG GU A ACAUAAU GGA AAUGUA U CGGAC UGCAAAUCCU GGA A UGAC GGU UCG AC CCC GU C CUUGGCC U
+DC4440 GGCG GC AU G GCCAAGC GGU AAGGCA G GGGAC UGCAAAUCCU UUA U CCCC AGU UCA AA UCU GG G UGUCGCC U
+DC4480 GGCG GC AU G GCCAAGC GGU AAGGCA G GGGAC UGCAAAUCCU UUA U CCCC AGU UCA AA UCU GG G UGUCGCC U
+DC4500 GGCU AA GU A ACAUAAG GGU AAUGUA U UGGAU UGCAAAUCCU AUA A AGAU GGU UCG AA UCC GU C CUUAGCC U
+DC4700 UGCU UA GU A GUUAAUGU UAAU AUAACU A AGAAC UGCAAAUUCU UCA U AGUC U A GUU A GA C CUAAGCU U
+DC4840 GGUC UU AU A GUCAAUA AUGAUA U CAAAC UGCAAUUUUG AAG G AGUA A GUU U UA C UAAGGCU U
+DC4880 GGUC UU AU A GUCAAUA AUGAUA U CAAAC UGCAAUUUUG AAG G AGUA A A UUU U UA C UAAGACU U
+DC4980 GGUU UU GU A GUGUAA UA AACAUA U UAGAU UGCAAAUCUA CAG A UGCG GUU AUA AU UGU CG C CAAAACU U
+DC5000 GGUU UU GU A GUGUAA UU AACAUU U UAGAU UGCAAAUCUA UAG A UGCG G G UAA UC U C CG U CAAAACU U
+DC5020 GGUU UU GU A GUGUAA UU AACAUA U UAGAU UGCAAAUCUA UAG A UGCG GCC AGU UU AUC CG C CAAAACU U
+DC5040 GGCU UU GU A GUGUAA AU AACAUU U UGGAU UGCAAAUCCU UAG A UGCA AUU AGU UC AU UG C CAAAGCU U
+DC5080 GGUU UU GU A GUGU AUCAUU U CGGAU UGCAAAUCCU AGA UGCA ACU AGG AC GU UG C CAAAGCU U
+DC5100 AGUU CU GG A GUGUU ACCACG U CAGAU UGCAAAUCUG AAG A AGCA CAC UUA CA GUU UG C CCGGACU U
+DC5120 AAGC CU GC G GUGUU GACAUG C CAGAU UGCAAAUCUC GAG A AGCA AAC GAA GG UU UG C CGGGCUU C
+DC5160 GGCC UU GG G GUGUC AACACG U GGGGU UGCAAACCCC AAG A UGCA GUA UAA UA CC UG C CGGGGCU U
+DC5220 GACU CU GU A GUGAAGU UCAUA A UGAGU UGCAAACUCG UUG A UGUA CAC UAA AG UG UG C CGGGGUC U
+DC5280 AGCC UU AA G GUGAUU AUCAUG U CGAAU UGCAAGUUCG AAG G UGUA GAG AAU CUC CUC UA C UAAGGCU U
+DC5281 AGCC UU AA G GUGAUU AUCAUG U CGAAU UGCAAAUUCG AAG G UGUA GAG AAU CUC CUC UA C UAAGGCU U
+DC5320 GGUC UU AA G GUGAUA UUCAUG U CGAAU UGCAAAUUCG AAG G UGUA GAG AAA U CUC UA C UAAGACU U
+DC5360 AGCC CU GU G GUGAAUU UACACG U UGAAU UGCAAAUUCA GAG A AGCA GCU UCA AU UC UG C CGGGGCU U
+DC5880 AGCU CC GA G GUGAUU UUCAUA U UGAAU UGCAAAUUCG AAG A AGCA GCU UCA AA CC UG C CGGGGCU U
+DC6280 GCUC GU AU G GCGCAGU GGU AGCGCA G CAGAU UGCAAAUCUG UUG GU CCUU AGU UCG AU CCU GA G UGCGAGC U
+DC8100 GGGG GU AU A GCUCAGGG GUA GAGCA U UUGAC UGCAGAUCAA GAG GU CCCU GGU UCA AA UCC AG G UGCCCCC U
+DC8101 GCGG GU AU A GCUCAGGG GUA GAAUA U UUGAC UGCAGAUCAA GAG GU CCCU UGU UCG AA UUC AG G UGCCCUC U
+DD0260 GCGA CC GG G GCUGGCUU GGUA AUGGUA C UCCCC UGUCACGGGA GAG AA UGUG GGU UCA AA UCC CA U CGGUCGC GCCA
+DD0660 GCCC UG GU G GUGUAGCU CGGCCU AUCAUA C AGGAC UGUCACUCCU GUG A CUCG GGU UCA AA UCC CG G CCAGGGC G
+DD0680 GCCC UG GU G GUGUAGU GGCU AUCAUG C GGGCC UGUCGAGCCC GCG A CUCG GGU UCA AU UCC CG G CCAGGGC G
+DD0740 GCCC UG GU G GUGUAGCU CGGCCU AUCAUA C AGGAC UGUCACUCCU GUG A CUCG GGU UCA AA UCC CG G CCAGGGC G
+DD1140 GGCC CC AU A GCGAAGUU GGUU AUCGCG C CUCCC UGUCACGGAG GAG AU CACG GGU UCG AG UCC CG U UGGGGUC GCCA
+DD1180 GGCC CC AU A GCGAACGU UGGUU AUCGCG C CUCCC UGUCACGGAG GAG AU CACG GGU UCG AG UCC CG U UGGGGUC GCCA
+DD1230 GGUC CG GU G GUGUAGG GGUU AACAUG C CUGCC UGUCACGCAG GAG AU CGCG GGU UCA AA UCC CG U CCGGACC GCCA
+DD1260 GGUC UU GU A GUGAAGUU GGUU AUCAUG C CUCUC UGUCACAGAG GAG AU CGCG GGU UCA AG UCC CG U CAAGACC GCCA
+DD1500 GGUC CA UU G GAGCAGU GGUCU AUCUCG C CUCCC UGUCACGGAG GAG AU CGCG GGU UCA AA UCC CG C AUGGACC
+DD1540 GGUC CG GU A GUUCAGUU GGUU AGAAUG C CUGCC UGUCACGCAG GAG GU CGCG GGU UCG AG UCC CG U CCGGACC G
+DD1570 GGUC CC GU A GUGUAGU GGUU AACAUG C CUGCC UGUCACGCAG GAG AU CGCG GGU UCG AU GC CG U CGGGACC GCCA
+DD1660 GGAG CG GU A GUUCAGUC GGUU AGAAUA C CUGCC UGUCACGCAG GGG GU CGCG GGU UCG AG UCC CG U CCGUUCC GCCA
+DD2440 GCCC CC AU C GUCUAGA GGCCU AGGACA C CUCCC UUUCACGGAG AAA A CGCG GAU UCG AA UUC CG C UGGGGGU A
+DD2520 GGGA UU GU A GUUUAAU GGUU AGAGCA C CGCCC UGUCACGGCG GAA GU UGCG GGU UCG AG UCC CG U CAGUCCC G
+DD2600 GGGA UU GU A GUUCAAUU GGUU AGAGUA C CGCCC UGUCAAGACG GAA GU UGCG GGU UCG AG CCC CG U CAAUCCC G
+DD2680 GGGA UU GU A GUUCAAUU GGUC AGAGCA C CGCCC UGUCAAGGCG GAA GC UGCG GGU UCG AG CCC CG U CAGUCCC G
+DD2700 GGGA UU GU A GUUCAAUU GGUC AGAGCA C CGCCC UGUCAAGGCG GAA GC UGCG GGU UCG AG CCC CG U CAGUCCC G
+DD2920 GGGA UU GU A GUUCAAUU GGUC AGAGCA C CGCCC UGUCAAGGCG GAA GC UGCG GGU UCG AG CCC CG U CAGUCCC G
+DD3200 GGGA UU GU A GUUCAAUU GGUC AGAGCA C CGCCC UGUCAAGGCG GAA GC UGCG GGU UCG AG UCC CG U CAGUCCC G
+DD3280 GGGA UU GU A GUUCAAUU GGUU AGAGCA C CGCCC UGUCAAGGCG GAA GC UGCG GGU UCG AG CCC CG U CAGUCCC G
+DD3880 GGGU UA GU A GUUUAAUA GGU AAAGCG C UUUUU UGUCAAGGAA GUU UA UGCC GGU UCA AG UCC GG C CUAACCC G
+DD3960 GAAU UA GU A ACUUAAUU GGU AGAGGG U UUCCU UGUCACGGAA GCA GA UGCC GGU UCG AU GCC GG U CUAGUUC G
+DD4000 GGAU CU GU A GCUUAAU AGU AAAGUA C CAUUU UGUCAUAAUG GAG GA UGUC AGU GCA AA UCU GA U UAGAUUC G
+DD4080 GGAU CC AU A GCUUAAU AGU AAAGUC C UAUUU UGUCAUAAUA GAG GA UGUC AGU GCA AA UCU GA U UGGAUUC G
+DD4440 GGGG AA AU A GCUCAGUU GGUU AGAGUG C UGGUC UGUCACGCCA GAA GU CGCG GGU UCG AA CCC CG U UUUCCCC G
+DD4480 GGGG AA AU A GCUCAGUU GGUU AGAGUG C UGGUC UGUCACGCCA GAA GU CGCG GGU UCG AA CCC CG U UUUCCCC G
+DD4500 GGGG AA AU A GCUUAGU GGUUU AUAGCG C UGGUC UGUCAAGCCA GAA GU CGCG GGU UCA AA UCC CG U UUUUCCC G
+DD4620 UCAU UU CU A GUCUAGU UA AGGAUG U UGCUU UGUCGUGGCG GUG G GGUA U GUU UU G UA C GGGAUGA G
+DD4700 UUAA AA GU A GUUAAU AU AUAACU U AGAAU UGUCAGUUCU AGA U UCCU U U UAC U A AG G CUUUUUA U
+DD4760 AAGG AG UU A GUUAAA AU AUAACA U UAGAA UGUCAAUCUA AAA U AACU A AAA A U AG U ACACCUU G
+DD4840 AAAA AA UU A GUUAAA AUC AUAACA U UAGUA UGUCAAACUA AAA U UAUU AA AUA A UU AA U AUUUUUU A
+DD4880 AAAA AA UU A GUUAAAU UAU AUAACA U UAGUA UGUCAAACUA AAA U UAUU AA AUU A UU AA U AUUUUUU A
+DD4980 AAGA AA UU A GUUAAAC CUA AUAACA U UGGGAUUGUCAGACCA AAG U UACU GGU AAUCAA CCC AG U AUUUCUU A
+DD5000 AAAG AG CU A GUUAAA AA AUAACC C CAGAU UGUCAGACUG GAA U UAUC UGU AACCAC CCU GA U GCUCUUU
+DD5020 AAGG AA CU A GUUAAG UU AUAACA C UGGAU UGUCAGACCG GAG U AACU GGU AAACAA CCC AG U GUUCCUU A
+DD5040 AGAG GU CU A GUUAAA AU AUAACU U UGGGU UGUCAGGCCA AAA U UGCU GGU UAA AU UCC AG C GGCUUCU G
+DD5080 AGAG GC CU A GUUAAAC UU AUAACU U UGGGU UGUCAGGCCA AAA U UGCU GGU UAA AC CC AG C GGCUUCU G
+DD5120 GAGA UG UU A GUAAAA CA AUUAGC A CGCCU UGUCAAGGCG AAA U AGCU GGU UAG AC UCC GG C ACAUCUC A
+DD5220 GAGA CG UU A GUAAAC CA AUUACA U AGACC UGUCAAGACU AAA U CACA GGU GCA AA CCC UG U ACAUCUC A
+DD5280 GAGA UA UU A GUAAAA UA AUUACA U AACCU UGUCAAGGUU AAG U UAUA GAC UUA AA UC UA U AUAUCUU A
+DD5281 GAGA UA UU A GUAAAA UA AUUACA U AACCU UGUCAAGGUU AAG U UAUA GAC CUA AG CUC UA U AUAUCUU A
+DD5320 AAGA UA UU A GUAAAAU CA AUUACA U AACUU UGUCAAAGUU AAA U UAUA GAU CAA UA AUC UA U AUAUCUU A
+DD5360 GAGG UG UU A GUAAA AC AUUAUA U AAUUU UGUCAAAGUU AAG U UACA AGU GAA AG UCC UG U ACACCUC A
+DD5880 AAGG UA UU A GAAAAA CC AUUUCA U AACUU UGUCAAAGUU AAA U UAUA GGC UAA AU CC UA U AUAUCUU A
+DD6220 UUCU CG UU A GUAUAGU GGUU AGUAUA C CCGCC UGUCACGCGG GUG A CCCG GGU UCA AU UCC CG G ACGGGAA G
+DD6280 UCCG UG AU A GUUUAAU GGUC AGAAUG G GCGCU UGUCGCGUGC CAG A UCGG GGU UCA AU UCC CC G UCGCGGA G
+DD6320 UCUC CU UU A GUAUAGG GGU AGUACA C AAGCC UGUCACGCUU GCA G CCCG GGU UCG AA UCC CG G AGGGAGA G
+DD6900 GUCG UU GU A GUAUAGU GGUA AGUAUU C CCGCC UGUCACGCGG GUG A CCCG GGU UCG AU CCC CG G CAACGGC G
+DD7560 UCCU CG GU A GUAUAGU GGUG AGUAUC C GCGUC UGUCACAUGC GAG A CCCG GGU UCA AU UCC CG G CCGGGGA G
+DD7740 UCCU CG AU A GUAUAGU GGUU AGUAUC C CCGCC UGUCACGCGG GAG A CCGG GGU UCA AU UCC CC G UCGGGGA G
+DD8100 UCCU CG UU A GUAUAGU GGUG AGUAUC C CCGCC UGUCACGCGG GAG A CCGG GGU UCG AU UCC CC G ACGGGGA G
+DD9160 UCCU CG UU A GUAUAGU GGUG AGUAUC C CCGCC UGUCACGCGG GAG A CCGG GGU UCG AU UCC CC G ACGGGGA G
+DD9161 UCCU CG UU A GUAUAGU GGUG AGUAUC C CCGCC UGUCACGCGG GAG A CCGG GGU UCG AU UCC CC G ACGGGGA C
+DE0660 GCUC CG GU G GUGUAGUC CGGCCA AUCAUG C UGGCC UUUCGAGCCA GCG A CUCG GGU UCA AA UCC CG G CCGGAGC A
+DE0680 GCUC CG GU G GUGUAGCC CGGCCA AUCAUU U CGGCC UUUCGAGCCG AAG A CUCG GGU UCA AA UCC CG A CCGGAGC A
+DE0700 GUCC CU UC GUCUAGU GGUCU AGGACA U CGCCC UCUCACGGCG GUA A CACG GGU UCG AA CCC CG U AGGGGAC GCCA
+DE1140 GGCC UG UU G GUGAAGC GGUU AACACA C ACGGU UUUCAUCCGU GGA CA CACG GGU UCG AA CCC CG U ACAGGCU ACCA
+DE1180 GGCC UG UU G GUGAAGC GGUU AACACA C ACGGU UUUCAUCCGU GGA CA CACG GGU UCG AA CCC CG U ACAGGCU ACCA
+DE1230 GGCC CG UU G GAGAAAC GGUU AACUCA C AUGCC UUUCACGCAU GCA UU CACG GGU UCG AA UCC CG U ACGGGUC ACCA
+DE1340 GCCC CC GU U GUGUAGC GGCCU AGCACG C CGCCC UCUCAAGGCG GUA G CGCC GGU UCG AA UCC GG U CGGGGGU A
+DE1500 NNCC CG UU G GUCAAGU GGUU AAGACA C CGCCC UUUCACGGCG GUA A CAUG GGU UCA AA UCC CG U ACGGGUN N
+DE1540 GGCC CG UU G GUCAAGC GGUU AAGACA C CGCCC UUUCACGGCG GUA A CACG GGU UCG AA UCC CG U ACGGGUC A
+DE1570 GGCC CUGU G GUCAAGU GGUU AAGACA C CGCCC UUUCACGGCG GUA A CACG GGU UCG AA UC CG U ACGGGUC A
+DE1660 GUCC CC UU C GUCUAGA GGCCC AGGACA C CGCCC UUUCACGGCG GUA A CAGG GGU UCG AA UCC CC U AGGGGAC GCCA
+DE2180 GCC CC AU C GUCUAGA GGCCU AGGACA C CUCCC UUUCACGGAG GCG A CGGG GAU UCG AA UUC CC C UGGGGGU A
+DE2440 GCCC CC AU C GUCUAGA GGCCU AGGACA C CUCCC UUUCACGGAG AAA A CGCG GAU UCG AA UUC CG C UGGGGGU A
+DE2500 GCCC CC AU C GUCUAGUG GUUC AGGACA U CUCUC UUUCAAGGAG GCA G CGGG GAU UCG AC UUC CC C UGGGGGU A
+DE2520 GCCC CC AU C GUCUAGA GGCCU AGGACA U CUCCC UUUCACGGAG GCA A CGGG GAU UCG AA UUC CC C UGGGGGU A
+DE2600 GCCC CC AU C GUCUAGU GGCCU AGGACA C CUCUC UUUCAAGGAG GCG A CGGG GAU UCG AA UUC CC C UGGGGGU A
+DE2680 GCCC CU AU C GUCUAGU GGUUC AGGACA U CUCUC UUUCAAGGAG GCA G CGGG GAU UCG AC UUC CC C UGGGGGU A
+DE2700 GCCC CU AU C GUCUAGU GGUUC AGGACA U CUCUC UUUCAAGGAG GCA G CGGG GAU UCG AC UUC CC C UGGGGGU A
+DE2920 GCCC CC AU C GUCUAGU GGUUU AGGACA U CUCUC UUUCAAGGAG GCA G CGGG GAU UCG AA UUC CC C UGGGGGU A
+DE3200 GCCC CC AU C GUCUAGC GGUUU AGGACA U CUCUC UUUCAAGGAG GCA A CGGG GAU UCG AC UUC CC C UGGGGGU A
+DE3280 GCCC CC AU C GUCUAGC GGUUC AGGACA U CUCUC UUUCAAGGAG ACA A CGGG GAU UCG AC UUC CC C UGGGGGU A
+DE3360 GCCC CC AU C GUCUAGC GGUUU AGGACA U CUCUC UUUCAAGGAG GCA A CGGG GAU UCG AC UUC CC C UGGGGGU A
+DE3800 ACUC UU AU C GUCUAAC GGUG AGGACA A CGGGU UUUCACCCCG UAA A UUUG GGU UCG AU UCC CA A UAAGAGU A
+DE3880 GACC CA AU G GUCAAGAU GGUU AAGACA U AACAU UUUCACUGUU AGU G CGGG AGU UCA AU CCU CC C UUGGGUU G
+DE4000 GACC UU AU C GUCUAAU GGUU ACGACA U CACCU CUUCAUGUUG AUA A UAUC GGU UCG AU UCC GA U UAAGGUU A
+DE4070 GAUC UU AU A GUUAAAU GGUU AUAACA C CAUCC CUUCACGAUG GGA G UACC AGU UCG NU UCU GG U UGAGAUU A
+DE4080 GAUC UU AU C GUCUAAU GGUU ACGACA U CAACU UUUCAUGUUG AAA A UGUU GGU UCA AU CCC AA C UAAGAUU A
+DE4240 GUCC CU UU C GUCCAGU GGUUA AGGACA U CGUCU UUUCAUGUCG AAG A CACG GGU UCC AU UCC CG U AAGGGAU A
+DE4280 GUCC CU UU C GUCCAGU GGUU AGGACA U CGUCU UUUCAUGUCG AAG A CACG GGU UCG AU UCC CG U AAGGGAU G
+DE4440 GUCC CU UU C GUCCAGA GGUU AGGACA U CGUCU UUUCAUGUCG AAG A CACG GGU UCG AU UCC CG U AAGGGAU A
+DE4480 GUCC CU UU C GUCCAGU GGUU AGGACA U CGUCU UUUCAUGUCG AAG A CACG GGU UCG AU UCC CG U AAGGGAU A
+DE4500 GUCC CU UU C GUCUAGG GGUAU AGGACA U CGUCU UUUCAUGUCG AAA A CACG GGU UCA AA UCC CG U AAGGGAU A
+DE4700 GCUU AA GU A GUUUAG GG AAAACA U AAGAU UUUCAUUCUU AAG U CAGA A A GCA G U UC U CUUAAGU U
+DE4720 AUUU AU AU A GUAUUU AAUACA A UGCAU UUUCAAUGCA UAA A UGGA U AAA U A UC C UUUAAAU A
+DE4800 AUUU AU AU A GUUUAA AU AAAACA U UACAU UUUCACUGUA AAA A UAAA AA UUU A UU UU U UAUAAAU A
+DE4880 AUUU AU AU A GUUUAAA AU AAAACC U UACAU UUUCAUUGUA AUA A UAAA AU AAU UU AU UU U UAUAAAU U
+DE4980 AUUC CU GU A GUUGAA ACAACA A UAACU UUUCAUGUUA UAG G UUUA GGU UGA AC CCC UA A CAGGAAU C
+DE5040 GCUC CU AU A GUUGAA CU ACAACA A GAGCU UUUCACGCUC UAA G UUUG AGU UAA AA UCU CA A UAGAAGC U
+DE5080 GCCC CU AU A GUUGAAA CA CAACCA A GAGCU UUUCACGCUC UUA AG UUUG AGU UAA AA UCU CA A UAGGAGC U
+DE5120 GUUC CU AU A GUUGAA UA ACAACG G UGGUU UUUCAGAUCA CAA G UUCU GGU UAG AG UCC UG G UGGGAAU U
+DE5220 GUUC CC GU A GUUGAGAA CAACA A UGGCU UUUCAAGCCG UAG U CCUU GGG GUC UA ACC AA G CGGGAAU A
+DE5280 GUUU CU AU A GUUGAA UU ACAACG A UGAUU UUUCAUGUCA UUA G UCAC AGU UAA AU GCC GU G UAGAAAU A
+DE5320 GUUU CU GU A GUUGAA UU ACAACG A UGAUU UUUCAUGUCA UUG G UCGC AGU UGA AU GCU GU G UAGAAAU A
+DE5360 GUUC UU GU A GUUGAA UG ACAACG A UGGUU UUUCAUAUCA UUA G UCAU GGU UAG AU UCC AU G UAAGAAU A
+DE5880 GUUC UU GU A GUUGAA AU ACAACG A UGGUU UUUCAUAUCA UUG G UCGU GGU UGU AG UCC GU G CGAGAAU A
+DE6160 UCCU CA UU G GUGUAGUC GGU AACACU C UAGUC UUUCACACUG GUA C CUCG GGU UCG AU UCC CG A AUGGGGA G
+DE6161 UCCU CA UU G GUGUAGUC GGU AACACU C UAGUC UUUCACACUG GUA C CUCG GGU UCG AU UCC CG A AUGGGGA G
+DE6280 UCCG AU AU A GUGUAAC GGCU AUCACA U CACGC UUUCACCGUG GAG A CCGG GGU UCG AC UCC CC G UAUCGGA G
+DE6281 UCCG AU GU A GUGUAAC GGCU AUCACA U CACGU UCUCACCGUG GAG A CCGG GGU UCG AC UCC CC G CUUCGGA G
+DE6320 UCCG UU GU G GUCCAAC GGCU AGGAUU C GUCGC UUUCACCGAC GCG G UCGG GGU UCG AC UCC CC G CAACGGA G
+DE6321 UCCG UC AU G GUCCAGU GGCU AGGAUU C AUCGC UCUCACCGAU GCG G CGGG GGU UCG AU UCC CC C UGACGGA G
+DE7680 UCCC GU AU G GUCUAGU GGUU AGGAUA C CUGGC UUUCACCCAG GAG G CUCG GGU UCG AU UCC CG G UACGGGA A
+DE7740 UCCU AU AU U GUCUAGU GGUU AGGAUA U CCGGC UCUCACCCGG AAG G CCCG GGU UCA AU UCC CG G UAUGGGA A
+DE7741 UCCC AU AU U GUCUAGU GGUU AGGAUA U CCGGC UCUCACCCGG AAG G CCCG GGU UCA AU UCC CG G UAUGGGA A
+DE7742 UCCC AU AU G GUCUAGU GGCU AGGAUA U CUGGC UUUCACCCAG AAG G CCCG GGU UCG AU UCC CG G UAUGGGA A
+DE8100 UCCC UG GU G GUCUAGU GGUU AGGAUU C GGCGC UCUCACCGCC GCG G CCCG GGU UCG AU UCU CG G UCAGGGA A
+DE9160 UCCU UG GU G GUCUAGU GGUU AGGAUU C GGCGC UCUCACCGCC GCG G CCCG GGU UCG AU UCC CG G UCAGGGA A
+DE9161 UCCC UG GU G GUCUAGU GGUU AGGAUU C GGCGC UCUCACCGCC GCG G CCCG GGU UCG AU UCC CG G UCAGGGA A
+DE9162 UCGC UG GU G GUCUAGU GGUU AGGAUU C GGCGC UCUCACCGCC GCG G CCCG GGU UCG AU UCC CG G UCAGGGA A
+DE9990 UCCC UG GU G GUCUAGU GGCU AGGAUU C GGCGC UUUCACCGCC GCG C CCCG GGU UCG AU UCC CG G CCAGGAA U
+DE9991 UCCC UG GU G GUCUAGU GGCU AGGAUU C GGCGC UUUCACCGCC GCG G CCCG GGU UCG AU UCC CG G UCAGGAA U
+DF0660 GCCA AG GU A GUUCAGCC UGGG AGAACG C UGGAC UGAAGAUCCA GUU GU CGGG UGU UCG AA UCA CC C CCUUGGC A
+DF0860 GCCG CC GU A GCUCAGCC CGGG AGAGCG C CCGGC UGAAGACCGG GUU GU CCGG GGU UCA AG UCC CC G CGGCGGC A
+DF1140 GGUC GU GU A GCUCAGUC GGU AGAGCA G CAGAC UGAAGCUCUG CGU GU CGGC GGU UCA AU UCC GU C CACGACC ACCA
+DF1180 GGUC GU GU A GCUCAGUC GGU AGAGCA G CAGAC UGAAGCUCUG CGU GU CGGC GGU UCA AU UCC GU C CACGACC ACCA
+DF1230 GGCU CU GU A GCUCAGUC GGU AGAGCA G UGGCC UGAAGAGCCU CGU C GU AGCC GGU UCG AU UCC GC U UGGAGCC ACCA
+DF1260 GGUU CA GU A GCUCAGUU GGU AGAGCA U UUGAU UGAAGCUCAA AGU GU CGGC AGU UCA AU UCU GU C CUGAACC ACCA
+DF1540 GGCU CG GU A GCUCAGUU GGU AGAGCA A CGGAC UGAAAAUCCG UGU GU CGGC GGU UCG AU UCC GU C CCGAGCC ACCA
+DF1541 GGCU CG GU A GCUCAGUU GGU AGAGCA A CGGAC UGAAAAUCCG UGU GU CGGC GGU UCG AU UCC GU C CCGAGCC A
+DF1660 GCCC GG AU A GCUCAGUC GGU AGAGCA G GGGAU UGAAAAUCCC CGU GU CCUU GGU UCG AU UCC GA G UCCGGGC ACCA
+DF2520 GCUG GG AU A GCUCAGUU GGU AGAGCG G AGGAC UGAAAAUCCU UGU GU CACC AGU UCA AA UCU GG U UCCUAGC A
+DF2600 GCCG GG AU A GCUCAGUU GGU AGAGCA G AGGAC UGAAAAUCCU CGU GU CACC AGU UCA AA UCU GG U UUCUGGC A
+DF2700 GUCA GG AU A GCUCAGUU GGU AGAGCA G AGGAC UGAAAAUCCU CGU GU CACC AGU UCA AA UCU GG U UCCUGGC A
+DF2720 GUCA GG AU A GCUCAGUU GGU AGAGCA G AGGAC UGAAAAUCCU CGU GU CACC AGU UCA AA UCU GG U UCCUGGC A
+DF2920 GCCG GG AU A GCUCAGUU GGU AGAGCA G AGGAC UGAAAAUCCU CGU GU CACC AGU UCA AA UCU GG U UCCUGGC A
+DF3360 GUCG GG AU A GCUCAGCC GGU AGAGCA A AGGAC UGAAAAUCCU UGU GU CACC AGU UCA AA UCU GG U UCCCGGC G
+DF3770 GCUU AA GU A GCUCAGU GGU AGAGCG U UAGAC UGAAAAUCUA AAG GU CGUU GGU UCA AU UCC AA U CUUGAGC A
+DF3800 GCUU AA GU A GCUCAGU GGU AGAGCG U CAGGC UGAAAACCUG AAG GU CAUU GGU CCG AU UCC AU U CUUAGGC A
+DF3880 GCUU GA GA A GCUCAAUU GGU AGAGCG G GUCAG UGAAGUUGAU UAG GU UGUA AGU UCA AG UCU UA U CUCGAGC A
+DF4000 GCUU UU AU A GCUUAGU GGU AAAGCG A UAAAU UGAAGAUUUA UUU A CAUGUAGU UCG AU UCU CA U UAAGGGC A
+DF4080 GCCU UU AU A GCUUAGU GGU AAAGCG A UAAAC UGAAGAUUUA UUU A CAUGUAGU UCG AU UCU CA U UAAGGGC A
+DF4360 GUUC AG GU A GCUCAGCU GGUU AGAGCA A AGGAC UGAAAAUCCU UGU GU CAGU GGU UCG AA UCC AC U UCUAAGC G
+DF4440 GUCA GG AU A GCUCAGUU GGU AGAGCA G AGGAU UGAAAAUCCU CGU GU CACC AGU UCA AA UCU GG U UCCUGGC A
+DF4500 GUUU AG AU A GCUCAGGU GGUU AGAGCA A AGGAC UGAAAAUCCU UGU GU CAGU GGU UCG AA UCC AC U UCUAAAC A
+DF4700 GAUA CG GU A GCUUAA UU AAAGCG U CUCAU UGAAAAUGAG GAA GA UGGU AC UUU A GU AC C UUGUGUC A
+DF4800 AUUU AA AU A GCUUAU AAUU AGAGCA U AACAU UGAAGAUGUU GGG G AAAU U AUU UU A AU U UUUAAAU A
+DF4880 AUUC AA AU A GCUUAUA UUU AGAGUA U GACAC UGAAGAUGUU AUG G AGAU U AAU U A AU C UUUGAAU A
+DF5040 GCAA AG GU A GCUUAACA GAUU AAAGCA U AGCAC UGAAAAUGCU UCA A AGAG AGU UAA AG UCC CU C CCUUAGC A
+DF5041 GCAA AG GU A GCUUAACA CAUU AAAGCA U AGCAC UGAAAAUGCU UCA A AGAG AGU UAA AG UCC CU C CCUUAGC A
+DF5060 GCUG AC GU A GCUUAA CU AAAGCA U AACAC UGAAGCUGUU AAG A CGGA CCC UAG AA AG UC C CGCUAGC A
+DF5080 GCAA AG GU A GCUUAAC GGAUU AAAGCA C AGCAC UGAAAAUGCU UCA A AGGG AGU UAA AG UCC CU C CCUUAGC A
+DF5100 GCUA UC GU A GCUUAA UU AAAGUU U AAUAC UGAAGAUAUU AGG A UGGA CCC UAG AA AG UC C CGAAAGC A
+DF5120 GCUU AC GU A GCUUAA GU AAAGCA C AGCAC UGAAGAUGCU GAG A UGAG CCC UAG AA AG CU C CGAAAGC A
+DF5121 GCUU AC GU A GCUUAA GU AAAGCA C AGCAC UGAAAAUGCU GAG A UGAG CCC UAC GA AAG CU C CGUAAGC A
+DF5160 ACUC UU AU A GCUUAAU AUU AAAGUA U AGCGC UGAAAACGCU AAG A UGAA CCC UAA AA AG UU C UAGGGGU A
+DF5200 GUUA AU GU A GCUUAAAA UUUUAU AAAGCA A GACAC UGAAAAUGUC UAG A UGGG C A UUA CC G CC C CAUCAAC A
+DF5220 GCCC CC AU A GCUUAACC CAC AAAGCA U GGCAC UGAAGAUGCC AAG A UGGU AC CUA CU AU AC C UGUGGGC A
+DF5280 GUUA AU GU A GCUUAUA AU AAAGCA A AGCAC UGAAAAUGCU UAG A UGGA U U CAA AA A UC C CAUAAAC A
+DF5320 GUUA AU GU A GCUUAAUA AC AAAGCA A AGCAC UGAAAAUGCU UAG A UGGA U A AUU GU A UC C CAUAAAC A
+DF5360 GUUG AU GU A GCUUAAC CC AAAGCA A GGCAC UGAAAAUGCC UAG A UGAG U C UCC CA A CU C CAUAAAC A
+DF5400 GUCU AC GU A GCUUAACC CCC AAAGCA A GACAC UGAAAAUGCC UAG A UGGA U U CAC AC A UC C CAUAGAC A
+DF5880 GUUU AU GU A GCUUACCU CCUC AAAGCA A UACAC UGAAAAUGUU UAG A CGGG C U CAC AU C A CC C CAUAAAC A
+DF5900 GUUA AU GU A GCUUAAA AUU AAAGCA A GGCAC UGAAAAUGCC UAG A UGAG U A UAU UA A CU C CAUAAAC A
+DF5910 GUUA AU GU A GCUUAAA GUCC AAAGCA A GGCAC UGAAAAUGCC UAG A UGAG U A CAC CA A CU C CAUAAAC
+DF5920 GUUA AU GU A GCUUUAA AAUU AAAGCA A GGCAC UGAAAAUGCC UAG A UGAG U G CUC CA A CU C CAUAAAC A
+DF5930 GUUA AU GU A GCUUAAA CUA AAGGCA A GGCAC UGAAAAUGCC AAG A UGAG UG UAC G CA CU C CAUGAAC A
+DF5940 GUUA AU GU A GCUUAA AUCC AAAGCA A GGUAC UGAAAAUGCC UAG A UGAG UU UAU U AA CU C CAUAAAC A
+DF5950 GUUA AU GU A GCUUAAA CU AAAGCA A GGCAC UGAAAAUGCC UAG A UGGG U A UUU A A CU C CAUAAAC A
+DF5960 GUUA AU GU A GCUUAAA UCU AAAGCA A GGCAC UGAAAAUGCC UAG A UGAG U G CAC UA A CU C CAUAAAC A
+DF5970 GUUC AU GU A GCUUAAA ACC AAAGCA A GGCAU UGAAAAUGCC UAG A UGAG U A UAU UA A CU C CAUAAAC A
+DF5980 GUUG AU GU A GCUUAAA ACC AAAGCA A GGCGC UGAAAAUGCC UAG A UGAG U A UAU GA A CU C CAUAAAC A
+DF6200 GCGG GU UU A GCUCAGUU GGG AGAGCG U CAGAC UGAAGAUCUG AAG GU CGUG UGU UCG AU CCA CA C AAACCGC A
+DF6280 GCGG AU UU A GCUCAGUU GGG AGAGCG C CAGAC UGAAGAUCUG GAG GU CCUG UGU UCG AU CCA CA G AAUUCGC A
+DF6281 GCGG AU UU A GCUCAGUU GGG AGAGCG C CAGAC UGAAGAUCUG GAG GU CCUG UGU UCG AU CCA CA G AGUUCGC A
+DF6320 GUCG CA AU G GUGUAGUU GGG AGCAUG A CAGAC UGAAGAUCUG UUG GU CAUC GGU UCG AU CCC GG U UUGUGAC A
+DF6740 GCGG GG AU A GCUCAGUU GGG AGAGCG U CAGAC UGAAGAUCUG AAG GU CGCG UGU UCG AU CCA CG C UCACCGC A
+DF7740 GCCG AA AU A GCUCAGUU GGG AGAGCG U UAGAC UGAAGAUCUA AAG GU CCCC GGU UCA AU CCC GG G UUUCGGC A
+DF7920 GCCG AA AU A GCUCAGUU GGG AGAGCG U UAGAC UGAAGAUCUA AAG GU CCCU GGU UCG AU CCC GG G UUUCGGC A
+DF9160 GCCG AA AU A GCUCAGUU GGG AGAGCG U UAGAC UGAAGAUCUA AAA GG UCCCU GGU UCG AU CCC GG G UUUCGGC A
+DG0220 GCGG AU AU C GUAUAAU GGU AUUACC U CAGAC UUCCAAUCUG AUG A UGUG AGU UCG AU UCU CA U UAUCCGC UCCA
+DG0260 GCGG UU AA G CACACG GGUU GUGUCG C AGGCC UUCCAAGCCU CGC UG AGUAG GGU UCG AU UCC CU C UAGCCGC UCCA
+DG0860 GCGG CC GU C GUCUAGUC UGGAUU AGGACG C UGGCC UCCCAAGCCA GCA AU CCCG GGU UCG AA UCC CG G CGGCCGC A
+DG0960 GCGG CC GU A GUCUAGCC UGGU AGGAUG G CGGCC UCCCAAGCCG CAG AA CCCG GGU UCA AA UCC CG G CGGCCGC ACCA
+DG1140 GCAG GU GU A GUUGAAU GGU AGAACU U CAGCC UUCCAAGCUG AUU G UGAG GGU UCG AU UCC CU U CACCUGC UCCA
+DG1180 GCAG GU GU A GUUUAAU GGC AGAACU U CAGCC UUCCAAGCUG AUU G UGAG GGU UCG AU UCC CU U CACCUGC UCCA
+DG1200 GCGA GU AU A GUUUAGU GGU AGAACA U CAGUC UUCCAAGCUG AUC G UGUC GGU UCG AU UCC GA U UACUCGC UCCA
+DG1230 GUCG GU GU C GUAUAU GGU U AUUAC A GGCCU UGCCAAGGCU UAG A CGGC AGU UCG AU CCU GC U CACCGGC UCCA
+DG1350 GCGG AC GU A GCUCAGUU GGU AGAGCG C AACCU UGCCAAGGUU GAG GU CGCG AGU UCG AG CCU CG U CGUCCGC U
+DG1500 GCGG AA GU A GUUCAGU GGU AGAACA U CACCU UGCCAUGGUG GGG GU CGCG GGU UCG AA UCC CG U CUUCCGC U
+DG1540 GCGG GU GU A GUUUAGU GGU AAAACC U CAGCC UUCCAAGCUG AUG U CGUG GGU UCG AU UCC CA U CACCCGC UCCA
+DG1541 GCGG AA GU A GUUCAGU GGG AGAACA C CACCU UGCCAAGGUG GGG GU CGCG GGU UCG AA UCC CG U CUUCCGC UCCA
+DG1542 GCGG AA GU A GUUCAGU GGU UGAACA C CACCU UGCCAAGGUG GGG GU CGCG GGU UCG AA UCC CG U CUUCCGC UCCA
+DG1580 GCGG GA GU A GCUCAGUC GGU AGAGCA C GACCU UGCCAAGGUC GGG GU CGCG GGU UCA AG UCC CG U CUCCCGC UCCA
+DG1581 GCGG GA GU A GCUCAGUU GGU AGAGCA U CGGCU UCCCAAGCCG AGG GU CGCG GGU UCG AG UCC CG U CUCCCGC UCCA
+DG1660 GCGG GC AU C GUAUAAU GGCU AUUACC U CAGCC UUCCAAGCUG AUG A UGCG GGU UCG AU UCC CG C UGCCCGC UCCA
+DG1661 GCGG GA AU A GCUCAGUU GGU AGAGCA C GACCU UGCCAAGGUC GGG GU CGCG AGU UCG AG UCU CG U UUCCCGC UCCA
+DG1662 GCGG GC GU A GUUCAAU GGU AGAACG A GAGCU UCCCAAGCUC UAU A CGAG GGU UCG AU UCC CU U CGCCCGC UCCA
+DG1820 GCGG GU AU A GUUCAGU GGU AGAACC U CAGCC UUCCAAGCUG AUG A UGCG GGU UCG AU UCC CG C UACCCGC UCCA
+DG2000 GCGG GA AU A GCUCAGUU GGU AGAGCA C GACCU UGCCAAGGUC GGG GU CGCG AGU UCG AG CCU CG U UUCCCGC UCCA
+DG2180 GCGG GU GU A GCUCAGCU GGU AGAGCG C AACCU UGCCAAGGUU GAU GU CGCG CGU UCG AA UCG CG U CACCCGC U
+DG2440 GCGG AU GU A ACUCAAUC GGU AGAGUG C GAUCC UUCCAAGUUC GAG GU UGUG GGU UCG AG UCC CA U CAUCCGC U
+DG2520 GCAG AU GU A GCUCAGU GGU AGAGCG C AACCU UGCCAAGGUU GAU GC CAUG GGU UCG AG UCC CA U UAUCUGC U
+DG2521 GCGG GU AU A GCUCAGUU GGU AGAGCG U GGUCC UUCCAAGUCC AAU GU UGCG UGU UCG AA UCA CG U UACCCGC U
+DG2600 GCGG GU AU A GUUUAAU GGU AAAAUU C CUCCU UGCCAAGGAG AAU A UGCG GGU UCG AU UCC CG C UACCCGC C
+DG2601 GCGG GU AU A GUUUAGU GGU AAAACC U UAGCC UUCCAAGCUA ACG A UGCG GGU UCG AU UCC CG C UACCCGC U
+DG2640 GCGA GC GU A GUUCAAU GGU AAAACA U CUCCU UGCCAAGGAG AAG A UACG GGU UCG AU UCC CG C CGCUCGC C
+DG2641 GCGG GU AU A GUUUAGU GGU AAAACC C UAGCC UUCCAAGCUA ACG A UGCG GGU UCG AU UCC CG C UACCCGC U
+DG2680 GCGA GC GU A GUUCAAU GGU AAAAUA U CUCCU UGCCAAGGAG AAG A UACG GGU UCG AU UCC CG C CGCUCGC C
+DG2681 GCGG GU AU A GUUUAGU GGU AAAACC C UAGCC UUCCAAGCUA ACG A UGCG GGU UCG AU UCC CG C UACCCGC U
+DG2700 GCGG GU AU A GUUUAGU GGU A AAAGCC C UAGCC UUCCAAGCUA ACG A UGCG GGU UCG AU UCC CG C UACCCGC U
+DG2701 GCGA GC GU A GUUCAAU GGU AAAACA U CUCCU UGCCAAGGAG AAG A UACG GGU UCG AU UCC CG C CGCUCGC C
+DG2920 GCGG GU AU A GUUUAGU GGU AAAACC C UAGCC UUCCAAGCUA ACG A UGCG GGU UCG AU UCC CG C UACCCGC U
+DG2921 GCGG AU AU G GUCGAAU GGU AAAAUU U CUCUU UGCCAAGGAG AAG A UGCG GGU UCG AU UCC CG C UAUCCGC C
+DG3200 GCGG AU AU A GUUGAAU GGU AUAAUU U CUCUU UGCCAAGGAG AAG A CGCG GGU UCA AU UCC CG C UAUCCGC C
+DG3880 ACGG CU AU A AGUUAAU GGU AGACUA C UUAGC UACCACCUAA GAU G UGUC GAU UCG AA UUC GA C UAGCCGU A
+DG3881 AUGA CU AU A AGUUAAUA GGU AGACUG U UCGUC UUCCAAACGA AGU G UGUC GAU UCG AA UUC GA C UAGUCAU A
+DG4000 AUAG AU AU A AGUUAAUU GGU AAACUG G AUGUC UUCCAAACAU UGA A UGCG AGU UCG AU UCU CG C UAUCUAU A
+DG4040 GCAG AU AU A AGUCAAUU GGC AGACCU U CUGAU UUCCACUUAG AUU A UGUU CGU UCG AA UCG GA C UAUCUGC A
+DG4070 AUGA GU AU A AGUUAAU GGUU AAACUA A AUGUC UUCCACACAU UCC A UGUG AGU UCG AU UCU CA C UACUCAU A
+DG4080 AUAG AU AU A AGUUAAGU GGU AAACUG A AUGUC UUCCACACAU UGA U UGUG AGU UCG AU UCU CA C UAUCUAG A
+DG4320 GCGG AA AU A GCUUAAU GGU AGAGCA U AGCCU UGCCAAGGCU GAG GU UGAG GGU UCA AG UCC CU C CUUCCGC U
+DG4360 GCGG AA AU A GCUUAAU GGU AGAGCG U AGCCU UGCCAAGGCU GAG GU UGAG GGU UCA AG UCC CU C CUUCCGC U
+DG4500 GCGG AA AU A GCUUAAU GGU AGAGUA U AGCCU UGCCAAGGCU AAG GU UGAG GGU UCA AG UCC CU U UUUCCGC U
+DG4501 GCGG AU AU A GAUUAAA GGU AAAUUA U CUGCC UUCCAAGCAG AGG A UAUG GGU UCG AU UCC CG U UAUCCGC A
+DG4700 GCAU AU AU A GUAAACA AU AUUAUA U UUGCC UUCCAAGCAA AAG U CCUA AU AAA AU UA G UGUAUGC U
+DG4760 AUUU UU CU A GUAUAA UU AGUACA U UUGAC UUCCAAUCAA AAG A UUG A AAU A U CA A GAAAAAU A
+DG4800 AUUU AU AU A GUAUAUA AU UGUAUA U GUGAC UUCCAAUCAC AAG G ACUA AA UAA U UU UA G UAUAAAU A
+DG4840 AUCU AU AU A GUAUAAA AGUAUA U UUGAC UUCCAAUCAU AAG G UCUA UU AAU U AA UA G UAUAGAU A
+DG4880 AUCU AU AU A GUAUAAA AGUAUA U UUGAC UUCCAAUCAU AAG G UCUA UU AAU A AA UA G UAUAGAU A
+DG4980 CUU UA UU AGUAUAAU UA GUAUA U UUGAU UUCCAAUCAA AAG G GCUU UGU UAAGAA UCA AA G AUGGAGU
+DG5000 GUUU CA UG A GUAUAGC AGUACA U UCGGC UUCCAACCGA AAG GU UUUU GUA AAC AA CCA AA A AUGAAAU A
+DG5020 UCUA UU A A UAUAACA GUAUAU U UAGUU UUCCAAAUUA AAA G GCCU GUU A G AA GUC AG G UAGUAAA A
+DG5040 ACUC UA UG A GUACAAA CGUACC U UUGAC UUCCAAUCAA AUA GC UCUU AGG GAA AA UCU AA G AUAGAGU A
+DG5080 GCUU UA UG A AUACAAC AGUAUU U UUGAC UUCCAAUCAG ACA G UCUU GGU GAA AA UUU AA G AUAAAGC A
+DG5100 UCU UU CU A GUACUAA GG AGUAUA A GUGGC UUCCAACCAC ACG G UCUU GGU UAG AG UCC AA G GAAAGAU
+DG5120 ACUU UC UU A GUAUUAA CC AGUACA C GUGAC UUCCAAUCAC AAA G UCUU AGU AGA AU CU AA G AGAAAGU A
+DG5220 GCUC UU CU A GUAUAC UC AUUACA A CUGAC UUCCAAUCUU UAA A AUCU GGU AUC AA CCC AG A GAAGAGC A
+DG5280 ACUC CC UU A GUAUAA AC AAUACA A CUGAC UUCCAAUCAG UUA A UUCU GAA AAA AC UC AG A AGAGAGU A
+DG5320 ACUC CC UU A GUAUAA UU AAUAUA A CUGAC UUCCAAUUAG UAG A UUCU GAA UAA AC CC AG A AGAGAGU A
+DG5360 AUUC UU UU A GUAUUAA CU AGUACA G CUGAC UUCCAAUCAG CUA G UUUC GGU CUA GU CC GA A AAAGAAU A
+DG5880 ACUC UU UU A GUAUAA AU AGUACC G UUAAC UUCCAAUUAA CUA G UUUU GAC AAC AU UC AA A AAAGAGU A
+DG6280 GCGC AA GU G GUUUAGU GGU AAAAUC C AACGU UGCCAUCGUU GGG C CCCC GGU UCG AU UCC GG G CUUGCGC A
+DG7140 GCAC CA GU G GUCUAGU GGU AGAAUA G UACCC UGCCACGGUA CAG A CCCG GGU UCG AU UCC CG G CUGGUGC A
+DG7180 GCAC CA GU G GUCUAGU GGU AGAAUA G UACCC UGCCACGGUA CAG A CCCG GGU UCG AU UCC CG G CUGGUGC A
+DG7680 GCAU CG GU G GUUCAGU GGU AGAAUG C UCGCC UGCCACGCGG GCG G CCCG GGU UCG AU UCC CG G CCGAUGC A
+DG7740 GCAU CG GU G GUUCAGU GGU AGAAUG C UCGCC UGCCACGCGG GCG G CCCG GGU UCG AU UCC CG G CCGAUGC A
+DG7741 GCAU CG GU G GUUCAGU GGU AGAAUG C UCGCC UGCCACGCGG GCG G CCCG GGU UCG AU UCC CG A CCGAUGC A
+DG8100 GCGU UG GU G GUAUAGU GGUG AGCAUA G CUGCC UUCCAAGCAG UUG A CCCG GGU UCG AU UCC CG G CCAACGC A
+DG9160 GCGU UG GU G GUAUAGU GGUG AGCAUA G CUGCC UUCCAAGCAG UUG A CCCG GGU UCG AU UCC CG G CCAACGC A
+DG9161 GCGU UG GU G GUAUAGU GGUG AACAUA G CUGCC UUCCAAGCAG UUG A CCCG GGU UCG AU UCC CG G CCAACGC A
+DG9990 GCAU UG GU G GUUCAGU GGU AGAAUU C UCGCC UGCCACGCGG GAG G CCCG GGU UCG AU UCC CG G CCAAUGC A
+DG9991 GCAU UG GU G GUUCAGU GGU AGAAUU C UCGCC UCCCACGCGG GAG A CCCG GGU UCA AU UCC CG G CCAAUGC A
+DH0260 GUGG CU AU A UCAUAAUU GGUU AAUGGU C CUGAU UGUGAAUCAG GCC UA UGUG GAU UCG AA UUC CA C UAGCCAC CCCA
+DH0660 G GCCG AG GU A GGGUAGU GGCU AUCCUG A AGGAC UGUGGAUCCU UCG A CCCG GGU UCA AU UCC CG G UCUCGGC CCCA
+DH0680 G GCCG GG GU G GGGUAGUU GGCC AUCCUU C GGGAC UGUGGAUCCC GCG A CUCG GGU UCA AA UCC CG G CCCUGGC CU
+DH1140 G GCGU AG GU G GUGAAGU GGUU AACACA U CAGGU UGUGGCUCUG ACA UA CGCG GGU UCG AU CCC CG U UCUACGC CCCA
+DH1230 GCGG UU GU G GCGAAGU GGUU AACGCA U CGGCU UGUGGCGCCG ACA CU CGGG GGU UCA AU UCC CC U CGGCCGC CCCA
+DH1540 G GCGG UU GU G GCGAAGU GGUU AACGCA C CAGAU UGUGGCUCUG GCA CU CGUG GGU UCG AU UCC CA U CAAUCGC CCCA
+DH1541 G GCGG UU GU G GCGAAGU GGUU AACGCA C CAGAU UGUGGCUCUG GCA UU CGUG GGU UCG AU UCC CA U CAAUCGC CCCA
+DH1660 G GUGG CU AU A GCUCAGUU GGU AGAGCC C UGGAU UGUGAUUCCA GUU GU CGUG GGU UCG AA UCC CA U UAGCCAC CCCA
+DH1700 G GUGG CU AU A GCUCAGUU GGU AGAGCC C UGGAU UGUGAUUCCA GUU GU CGUG GGU UCG AA UCC CA U UAGCCAC CCCA
+DH1740 G GUGG CU AU A GCUCAGUU GGU AGAGUC C CGGAU UGUGAUUCCG GUU GU CGCG AGU UCA AG CCU CG U UAGCCAC CCCA
+DH1780 G GUGG CU GU A GCUCAGUU GGU AGAGUC C CGGAU UGUGAUUCCG GUU GU CGUG GGU UCG AG CCC CA U CAGCCAC CCCA
+DH2520 G GUGG GU GU A GCCAAGU GGU AAGGCA A AGGAC UGUGACUCCU UCA UU CGCG GGU UCG AU CCC CG U CAUUCAC C
+DH2600 G GCGG AC GU A GCCAAGU GGAUU AAGGCA G UGGAU UGUGGAUCCU CUA CG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH2700 GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH2720 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA U GCCG GGU UCA AU UCC CG U CGUUCGC C
+DH2880 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CAUUCGC CC
+DH2920 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH2960 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC CC
+DH3020 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH3120 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC CC
+DH3200 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH3230 GCGG AC GU A GCCAAGU GGACC AAGGCA G UGGAU UGUGAAUCCA CCA CG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH3240 G GCGG AU GU A GCCAAGU GGAUU AAGGCA G UGGAU UGUGAAUUCA CCA U CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH3280 G GCGG AU GU A GCCAAGU GGAUU AAGGCA G UGGAU UGUGAAUCCA CCA UU CGCG GGU UCA AU UCC CG U CGUUCGC CC
+DH3360 GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH3800 G GUGG AU AU A GCUCAAUC GGU AGAGCG U UAGAU UGUGGAUCUA AAG GU CGCG GGU UCG AU UCC UG C UAUUUAC C
+DH3880 G GUGG GU GU A GUUCAAA GGU AGAACA G CUGUA UGUGGCAUAG UAU A UCCU AGU UCA AU UCU AG G UAUCCAC C
+DH4000 G GUGA AU AU A UUUCAAU GGU AGAAAA U ACGCU UGUGGUGCGU UAA A UCUG AGU UCG AU UCU CA G UAUUCAC C
+DH4040 G GUGA UU GU A AUUCAAU GGU AGAAUG C UUAUU UGUGGCAUAA GAA GU UCUU GGU UCG AU UCC AA G UAAUCAC C
+DH4080 G CUAA AU AU A UUUCAAU GGUUA GCAAAA U ACGCU UGUGGUGCGU UAA A UCUA AGU UCG AU UCU UA G UAUUUAC C
+DH4360 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA CG CGCG GGU UCA AU CCC CG U CGUUCGC C
+DH4480 G GCGG AU GU A GCCAAGU GGAUC AAGGCA G UGGAU UGUGAAUCCA CCA UG CGCG GGU UCA AU UCC CG U CGUUCGC C
+DH4500 G GCGG AU AU A ACUUAGG GGUU AAAGUU G CAGAU UGUGGCUCUG AAA A CACG GGU UCG AA UCC CG U UAUUCGC C
+DH4700 AAAA AA GU A GUUUAAUU UA AGAACG A UAGGU UGUGGGGCUA UUA G CGGU GUU A AC C CUUUUUU A
+DH4880 AUUU AA AU A GUUUAA AA AAAAUA C UAAUU UGUGGUGUUA GUG A UAUG AA GUU A UU CA U UUUAGAU C
+DH5000 ACCA AA GU A GUUUAA AA AAAACA U UAAUU UGUGGCAUUA GAA U UACC AGU UAA AA CCU GG U CUCUGGU C
+DH5040 ACUA AA GU A GUUUAUA AAAACA C CAGCC UGUGGAACUG GAG U AACU GGU UAA AA CCC GG U CUUAAGU C
+DH5080 GAUU AA AGUA GUUUAA GA AAAGCA U CAGCC UGUGGAGCUG AAG A CGCC AGU AAA CU CU GG C UUAAAUC C
+DH5100 GUAG AU UU A GUUUAA CC AAGACA U UAGAU UGUGAUUCUA AAA A UAGA GGU UAA AC CCC UC U AAUCCAC C
+DH5120 GUAG AU AU A GUUUAAU AAAACA C UAGAU UGUGAUUCUA GAG U CAGA GGU UAA AC CCC UC U UAUCAAC C
+DH5220 GCAA AC AU A GUUUAA CC CAAACA U UAGAU UGUGAUUCUA AAA A UAGG AGU UUA AC CCU CC U UGUUCGC C
+DH5280 GUAG AU AU A GUUUAC AA AAAACA U UAGAC UGUGAAUCUA ACA A CAGG AAA UCA AA UU CC U UAUUUAC C
+DH5320 GUGA AU AU A GUUUAC AA AAAACA U UAGAC UGUGAAUCUG ACA A CAGG AAA UAA AC CU CC U UAUUCAC C
+DH5360 GUAA AU AU A GUUUAA CA AAAACA U UAGAU UGUGAAUCUA ACA A UAGA AAC UCA UUA CCU UC U UAUUUAC C
+DH5440 GUAG AU AU A GUUUAA CU AAAACA C UAGAU UGUGAAUCUA ACC A UAGA GAC UCA CC ACU CC U UAUUUAC C
+DH5480 GUAG AU AU A GUUUAA CU AAAACA U UAGAU UGUGAAUCUA ACC A UAGA GAC UUA CC ACC UC U UAUUUAC C
+DH5520 GUAA AU AU A GUUUAA CU AAAACA U UAGAU UGUGAAUCUA ACU A UAGA GGC CUA CC ACU UC U UAUUUAC C
+DH5560 GUAA AU AU A GUUUAA UU AAAACA U UAGAC UGUGAAUCUA ACU A UAGA AGC UUA CC ACU UC U UAUUUAC C
+DH5600 GUAA UU AU A GUUUAG CU AAAACA U UAGAU UGUGAAUCUA AUA A UAGA AGA AUA UA ACU UC U UAAUUAC C
+DH5640 GUAA AU AU A GUUUAA AC AAAACA U UAGAU UGUGAGUCUA AUA A UAGA AGC CCA AA CUU UC U UAUUUAC C
+DH5680 GUAA AU AU A GUUUAAA AAAACA C UAGAU UGUGAAUCCA GAA A UAGA AGC UCA AA CCU UC U UAUUUAC C
+DH5720 GUAA AU AU A GUUUAA CC AAAACA U CAGAU UGUGAAUCUG ACA A CAGA GGC UCA CG ACC CC U UAUUUAC C
+DH5760 GUAA AC AU A GUUUAA UC AAAACA U UAGAU UGUGAAUCUA ACA A UAGA GGC UCG AA ACC UC U UGCUUAC C
+DH5800 GUAA AU AU A GUUUAA CC AAAACA U CAGAU UGUGAAUCUG AUA A CAGA GGC UCA CA ACC CC U UAUUUAC C
+DH5840 GUAA AU AU A GUUUAA CC AAAACA U UAGAU UGUGAAUCUA AUA A UAGG GCC CCA CA ACC CC U UAUUUAC C
+DH5880 GUAA AU AU A GUUUAA CC AAAACA U CAGAU UGUGAAUCUG ACA A CAGA GGC UUA CG ACC CC U UAUUUAC C
+DH6160 GCCG UG AU A GUAUAGU GGU AGUACA U CAGAU UGUGGCUCUG AUG A CCCU GGU UCG AU UCC AG G UCGCGGC A
+DH6280 GCCA UC UU A GUAUAGU GGUU AGUACA C AUCGU UGUGGCCGAU GAA A CCCU GGU UCG AU UCU AG G AGAUGGC A
+DH6320 GCUC AC AU G GUCCAGU GGUU AAGACU C AUCGU UGUGGCCGAU GCG A CCCA GGU UCG AU UCC UG G UGUGGGC A
+DH7740 GCCG UG AU C GUCUAGU GGUU AGGACC C CACGU UGUGGCCGUG GUA A CCCA GGU UCG AA UCC UG G UCACGGC A
+DH8100 GCCG UG AU C GUAUAGG GGUU AGUACU C UGCGU UGUGGCCGCA GCA A CCUC GGU UCG AA UCC GA G UCACGGC A
+DI0220 GGCC CU GU A GCUCAAU GGUUA GCAGCA G UCCCC UCAUAAGGGA AAG GU UACC AGU UCA AA UCU GG U CUGGGUC A
+DI0260 ACUU CG GU A GCUUAGC GAUCU AAAGCA C UCGGC UGAUAACCGA GAG AU CGGG GGU UUA AA UCC CU C CCGGAGU ACCA
+DI0660 GGGC UC GU A GCUCAGGC UGGUU AGAGUG C UCGGC UCAUAACCGA GUG GU CAUG GGU UCA AA UCC CA U CGGGCCC A
+DI0680 GGGC CC AU A GCUUAGCC AGGU AGAGCG C CCGGC UCAUAACCGG GCG GU CAUG GGU UCG AA UCC CA U UGGGCCC A
+DI1140 GGAC CU UU A GCUCAGUU GGUU AGAGCA U CCGGC UCAUAACCGG ACG GU CAUU GGU UCA AG UCC AA U AAGGUCC ACCA
+DI1141 CGGA AU AU A GCUCAGCU GGUU AGAGCA U UCCGC UGAUAACGGA GAG GU CGUU GGU UCA AG UCC AA U UAUUCCG ACCA
+DI1180 GGAC CU UU A GCUCAGUU GGUU AGAGCA U CCGGC UCAUAACCGG ACG GU CAUU GGU UCA AG UCC AA U AAGGUCC ACCA
+DI1230 GGAC CC GU A GCUCAGUU GGUU AGAGCU A CCGGC UCAUAACCGG UCG GU CGUU GGU UCG AG UCC AA C CGGGUCC ACCA
+DI1260 GGAC CC UU A GCUCAGUU GGUU AGAGCA U CCGGC UCAUAACCGG AUG GU CACU GGU UCA AG UCC AG U AGGGUCC ACCA
+DI1540 GGGC CU GU A GCUCAGCU GGUU AGAGCG C ACGCC UGAUAAGCGU GAG GU CGGU GGU UCG AG UCC AC U CAGGCCC ACCA
+DI1541 GGGC CU GU A GCUCAGCU GGUU AGAGCG C ACGCC UGAUAAGCGU GAG GU CGAU GGU UCG AG UCC AU U CAGGCCC ACCA
+DI1542 GGAC CU UU A GCUCAGUU GGUU AGAGCA G ACGGC UCAUAACCGU CCG GU CGUA GGU UCG AG UCC UA C AAGGUCC ACCA
+DI1620 GGGC CU AU A GCUCAGCU GGCU AGAGCA C ACGCC UGAUAAGCGU GAG GU CAGU GGU UCG AG UCC AC U UGGGCCC ACCA
+DI1660 AGGC UU GU A GCUCAGGU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GU CGGU GGU UCA AG UCC AC U CAGGCCU ACCA
+DI1661 GGCC CC UU A GCUCAGU GGUU AGAGCA G GCGAC UCAUAAUCGC UUG GU CGCU GGU UCA AG UCC AG C AGGGGCC ACCA
+DI1820 GGGU CU GU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GU CGGC AGU UCG AA UCU GC C CAGACCC ACCA
+DI1860 GGGC CU AU A GCUCAGCU GGUU AGAGUG C ACCCC UGAUAAGGGU GAG GU CACA AGU UCA AG UCU UG U UAGGCCC ACCA
+DI1900 AGGC CU GU A GCUCAGGU GGUU AGAGCG U ACGCC UGAUAAGCGU AAG GU CGGC AGU UCG AG UCU GC C UAGGCCU ACCA
+DI2100 GGGC UA UU A GCUCAGGU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GU CCCU GGU UCA AG UCC AG G AUGGCCC A
+DI2180 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GC CCCU GGU UCG AA UCC AG G AUGGCCC A
+DI2220 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GG CCCU GGU UCA AA UCC AG G AUGGCCC A
+DI2400 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GC CCCU GGU UCG AA UCC AG G AUGGCCC A
+DI2410 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GG CCCU GGU UCA AA UCC AG G AUGGCCC A
+DI2440 GGGC UA UU A GCUCAGUU GGUU AGAGCG U UGCUU UGAUAAGGCA AAA GU CGAA AGU UCA AA UCU UU C AUAGCCC A
+DI2480 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GU CGCU GAU UCG AA UUC AG C AUAGCCC A
+DI2520 GGGC UA UU A GCUCAGUU GGUU AGAGCA U ACCCU UGAUAAGGGU AAG GU CGCU AGU UCA AG UCU AG C AUGGCCC U
+DI2540 GGGC UA UU A GCUCGCU GGU UGAGCA C ACCCC UGAUAAGGGU GAG GC CUCU GGU UCAAAG UCC AG A AUAGCCC A
+DI2550 GGGC UA UU A GCUCAGU GGU AGAGCG C GCCCC UGAUAAGGGC GAG GU CUCU GGU UCA AG UCC AG G AUAGCCC A
+DI2570 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GU CCCU GGU UCA AA UCC AG G AUGGCCC A
+DI2580 GGGU UA UU A GCUCAGUU GGUU AGAGCA C ACCCC UGAUAAGGGU GAG GU CCCU GGU UCA AA UCC AG G AUAACCC A
+DI2590 GGGC UA UU A GCUCAGUU GGUU AGAGCG C ACCCC UGAUAAGGGU GAG GU CUCU GGU UCA AA UCC AG A AUGGCCC A
+DI2600 GCAU CC AU G GCUGAAU GGUU AAAGCA C CCAAC UCAUAAUUGG CGA AU UCACA GGU UCA AU UCC UG U UGGAUGC A
+DI2601 GGGC UA UU A GCUCAGU GGU AGAGCG C GCCCC UGAUAAGGGC GAG GU CUCU GGU UCA AG UCC AG G AUAGCCC A
+DI2620 GGGC UA UU A GCUCAGC GGUAG AGCGCG C GCCCC UGAUAAGGGC GAG GU CUCU GGU UCA AA UCC AG G AUAGCCC A
+DI2700 GCAU CC AU G GCUGAAU GGUU AAAGCG C CCAAC UCAUAAUUGG UAA U AU UGCG GGU UCA AU UCC UG C UGGAUGC A
+DI2701 GGGC UA UU A GCUCAGU GGU AGAGCG C GCCCC UGAUAAGGGC GAG GU CUCU GGU UCA AG UCC AG G AUGGCCC A
+DI2720 GGGC UA UU A GCUCAGU GGU AGAGCG C GCCCC UGAUAAGGGC GAG GU CUCU GGU UCA AG UCC AG G AUGGCCC A
+DI2760 GCAU CC AU G GCUGAAUG GUU AAAGCG C CCAAC UCAUAAUUGG CGA U AU CGUA GGU UCA AU UCC UA C UGGAUGC A
+DI2840 GGGC UA UU A GCUCAGU GGU AGAGCG C GCCCC UGAUAAGGGC GAG GU CUCU GGU UCA AG UCC AG G AUGGCCC ACCA
+DI2920 GGGC UA UU A GCUCAGU GGU AGAGCG C GCCCC UGAUACGGGC GAG GU CUCU GGU UCA AG UCC AG G AUGGCCC A
+DI2921 GCAU CC AU G GCUGAAU GGUU AAAGCG C CCAAC UCAUAAUUGGCGAA UU CGUA GGU UCA AU UCC UA C UGGAUGC A
+DI2922 GCAU CC AU G GCUGAAU GGUU AAAGCG C CCAAC UCAUAAUUGG CGA AU UCGUA GGU UCA AU UCC UA C UGGAUGC A
+DI3080 GCAU CC AU G GCUGAAU GGUU AAAGCG C CCAAC UCAUAAUUGG UAA AU UUGCG GGU UCA AU UCC UG C UGGAUGC A
+DI3220 GCAU CC AU G GCUGAAU GGUU AAAGCG C CCAAC UCAUAAUUGG CGA U AC CGCG GGU UCA AU UCC UG C UGGAUGC A
+DI3280 GCAU CC AU G GCUGAAU GGUU AAAGCG C CCAAC UCAUAAUUGGCGAA UU CGUA GGU UCA AU UCC UA C UGGAUGC A
+DI3281 GGGC UA UU A GCUCAGU GGU AGAGCG C GCCCC UGAUACGGGC GAG GU CUCU GGU UCA AG UCC AG G AUGGCCC A
+DI3880 GGUU CU UU A ACUUAACC GGU AAAGUG U GUUCU UGAUAAGGAU AUG U UCAG UGU UCG AG UCA CU G AAGAAUC A
+DI4000 GAAA CU AU A AUUCAAUU GGUU AGAAUA G UAUUU UGAUAAGGUA CAA A UAUA GGU UCA AU CCC UG U UAGUUUC A
+DI4080 GAAA CU AU A AUUCAAUU GGUU AGAAUA G UAUUU UGAUAAGGUA CCA A UAUA GGU UCG AU UCC UG U UAGUUUC A
+DI4320 GGGC UU AU A GUUUAAUU GGUU GAAACG U ACCGC UCAUAACGGU GAU AU UGUA GGU UCG AG CCC UA C UAAGCCU ACCA
+DI4500 GGGC UU AU A GUUUAAUU GGUU CAAACG C ACCGC UCAUAACGGU GAU AU UGUA GGU UCG AG UCC UA C UAAGCCU A
+DI4620 CCGG UA GG G CUGCGU U AGCAGG U UACUG UGAUAUAGUA AUA GU GAGA GUU U UC U UCGUCGG U
+DI4700 AGUG CC AC G UGGGGGA UG AUCCAG U UGCUU UGAUGAAGCA GAG CU CAAA AU AU G AU UU U UGGCACU U
+DI4880 AAUG AA UU G CCUGAU AA AAAGGG U UACCU UGAUAGGGUA AAU UA UGCA G UUU U C UG C AUUCAUU G
+DI4960 AAUG AA UU G CCUGAUA AAAGGG U UAUCU UGAUAGGGUA AAU UA UGUA G GAU U C UA C AUUCAUU G
+DI5040 AGAG CU UG C UCCCAAA GCU UGGGUG U CUAGC UGAUAAUUAG ACU AU CAAG GGU UAA AU UCC CU UCAAGCUCU A
+DI5080 GAGC UU GC CCCUAAA GUU AAGGUG U CUAGC UGAUAAUUAG AUU UAAG GGU UAA AU UCC CU U CAAGCUC U
+DI5120 GGAA AU GU G CCCGAA AG UAGGGA U CACUU UGAUAGAGUG AAA UA UAUG GGU UCA AA CCC CA U CAUCUCC U
+DI5160 GGAA GC GU G CCUGAA AGU UAAGGA C CUCCU UGAUAGGGAG GCU UA UAGG GGU UCA AA CCC CC U CACUUCC U
+DI5220 GGAA GC GU G CCUGAAC AA AAAGGA U CACUA UGAUAAAGUG AAC A UAGA GGU AUA ACAACCC UC U CACUUCC U
+DI5280 AGAA AU AU G UCUGACA AAAGAG U UACUU UGAUAGAGUA AAU AA UAGA GGU UUA AA UCC UC U UAUUUCU A
+DI5320 AGAA AU AU G UCUGAUA AAAGAA U UACUU UGAUAGAGUA AAU UA UAGA GGU UCA AG CCC UC U UAUUUCU A
+DI5360 AGAA AU AU G UCUGACA AAAGAG U UACUU UGAUAGAGUA AAU AA UAGA GCU UCA AA CCC UC U UAUUUCU A
+DI5880 AGAA AU AU G UCUGAUA AAAGAG U UACUU UGAUAGAGUA AAU AA UAGG AGC UUA AA CCC CC U UAUUUCU A
+DI6280 GGUC UC UU G GCCCAGUU GGUU AAGGCA C CGUGC UAAUAACGCG GGG AU CAGC GGU UCG AU CCC GC U AGAGACC A
+DI6281 GCUC GU GU A GCUCAGU GGUU AGAGCU U CGUGC UUAUAACGCG ACC GU CGUG GGU UCA AU CCC CA C CUCGAGC A
+DI6320 GGUC GC AU AUGUAGUC GGUU AUCAUG U CGAUC UAAUAAGUCG AAU GU CGCC GGU UCG AA CCC GG C UGUGACC A
+DI7740 GGCC CA UU A GCUCAGUU GGUU AGAGCG U CGUGC UAAUAACGCG AAG GU CGCG GGU UCG AU CCC CU C AUGGGCC A
+DI8100 GGCC GG UU A GCUCAGUU GGUU AGAGCG U GGUGC UAAUAACGCC AAG GU CGCG GGU UCG AU CCC CG U ACGGGCC A
+DK0260 GGGU UG CU A GCUCAACU GGUUU AGAGCA C UGGUC UUUUAAACCA UAG GU UACA GGU UCG AG UCC UG U GCAACCC ACCA
+DK0660 GGGC CC GU A GCUUAGUC UGGU AGAGCG C CUGAC UUUUAAUCAG GCG GU CGAG GGU UCG AA UCC CU U CGGGCCC G
+DK0680 GGGC CC GU A GCUCAGUC UGGU AGAGCG C UUGGC UUUUAACCAA GUA GU CGCG GGU UCA AA UCC CG U CGGGCCC G
+DK0740 GGGC CC GU A GCUUAGUC UGGU AGAGCG C CUGGC UUUUAAUCAG GCG GU CGAG GGU UCG AA UCC CU U CGGGCCC G
+DK1140 GACU CG UU A GCUCAGCC GGU AGAGCA A CUGGC UUUUAACCAG UGG GU CCGG GGU UCG AA UCC CC G ACGAGUC ACCA
+DK1141 GUCU GA UU A GCGCAACU GGC AGAGCA A CUGAC UCUUAAUCAG UGG GU UGUG GGU UCG AU UCC CA C AUCAGGC ACCA
+DK1200 GACU CA CU A GCUCAGC GGU AGAGCA U UUGAC UUUUAAUCAA AGG GU CCCG AGU UCG AU CCU CG G GUGAGUC ACCA
+DK1220 GACU CG UU A GCUCAGCC GGU AGAGCA A CUGGC UUUUAACCAG UGG GU CCGG GGU UCG AA UCC CC G ACGAGUC ACCA
+DK1230 GCAU CC AU A GCUCAGUU GGU AGAGCA A CAGAC UCUUAAUCUG UGG GU CCAC GGU UCG AG CCC GU G UGGGUGU ACCA
+DK1231 GUCC CG UU A GCUCAGGU GGU AGAGCA C UUGAC UUUUAAUCAA GGU GU CGAU GGU UCG AG UCC AU C ACGGGAC ACCA
+DK1350 GCGC CG CU A GCUCAGUU GGUU AGAGCA G CUGAC UCUUAAUCAG CGG GU CCGG GGU UCG AG UCC CU G GCGGCGC A
+DK1540 GAGC CA UU A GCUCAGUU GGU AGAGCA U CUGAC UUUUAAUCAG AGG GU CGAA GGU UCG AG UCC UU C AUGGCUC ACCA
+DK1660 GGGU CG UU A GCUCAGUU GGU AGAGCA G UUGAC UUUUAAUCAA UUG GU CGCA GGU UCG AA UCC UG C ACGACCC ACCA
+DK2000 GGGU CG UU A GCUCAGAC GGU AGAGCA G CGGAC UUUUAAUCCG UUG GU CGAA GGU UCG AA UCC UU C ACGACCC ACCA
+DK2520 GAGU UG GU A GCUCAGUU GGU AGAGCA C UCGGC UUUUAACCGA UCG GU CCUG GGU UCG AA UCC CA G CCAACUC A
+DK2580 GGGU UG CU A ACUCAAU GGU AGAGUA C UCGGC UUUUAACCGA UUA GU UCCG GGU UCG AG UCC CG G GCAACCC A
+DK2600 GGGU UG CU A ACUCAAU GGU AGAGUA C UCGGC UUUUAACCGA CGA GU UCCG GGU UCG AG CCC CG G GCAACCC A
+DK2920 GGGU UG CU A ACUCAAC GGU AGAGUA C UCGGC UUUUAACCGA CUA GU UCCG GGU UCG AA UCC CG G GCAACCC A
+DK3200 GGGU UG CU A ACUCAAU GGU AGAGUA C UCGGC UUUUAACCGA CAG U UCCG GGU UCG AG UCC CG G GCAACCC ACCA
+DK3220 GGGU UG CU A ACUCAAU GGU AGAGUA C UCGGC UUUUAACCGA CGA GC UCCG GGU UCG AG UCC CG G GCAACCC G
+DK3230 GGGU UG CU A ACUCAAU GGU AGAGUA C UCGGC UUUUAACCGA CGA GC UCCG GGU UCG AG UCC CG G GCAACCC G
+DK3240 GGGU UG CU A ACUCAAC GGU AGAGUA C UCGGC UUUUAACCGA CUA GU UCCG GGU UCG AG UCC CG G GCAACCC A
+DK3880 GAGA CU UU A GUUUAAU GGU AAAACA U AUGAC UUUUAAUCAU UCU AC UAUA GGU UCG AG UCC UA U AAGUCUU A
+DK4000 GAGA AU AU U GUUUAAU GGU AAAACA G UUGUC UUUUAAGCAA CCC A UGCUUGGU UCA AC UCC AG C UAUUCUC A
+DK4030 GAGA GU AU UGUUUAAU GGUA AAACAU U CUGUC UUUUAAGCAG UCU A UAGU GGU UCG AU UCC AC U UAUUCUC A
+DK4050 GAGA AU AU U GUUUAAU GGU AAAACA G UUGCC UUUUAAGCAU CCC AU GUUU GGU UCG AU UCC AA C UAUUCUU A
+DK4080 GAGA GU AU U GUUUAAA GGU AAAACA G UUGUC UUUUAAGCAA CCC A UGCU GGU UCG AA UCC AG C UAUUCUC A
+DK4340 GGGU GU AU A GCUCAGUU GGU AGAGCA U UGGGC UUUUAACCUA AUG GU CGCA GGU UCA AG UCC UG C UAUACCC A
+DK4440 GGGU GU AU A GCUCAGUU GGU AGAGCA U UGGGC UUUUAACCUA AUG GU CGCA GGU UCA AG UCC UG C UAUACCC A
+DK4480 GGGU GU AU A GCUCAGUU GGU AGAGCA U UGGGC UUUUAACCUA AUG GU CGCA GGU UCA AG UCC UG C UAUACCC A
+DK4500 GGGU GU AU A GCUCAGUU GGU AGAGCA A UAGGC UUUUAACUUA AAG GU CGCA GGU UCA AG UCC UG C UAUACCC A
+DK4620 CUGG GG GU A GCUUAA GAUU AAAGUU U GGAAU UCUUACUUCU AAG A UAUC UG GUU UG GA U UCUUCAG G
+DK4700 UAAG CU AA A GCUUUG AA GAAGCG U UAAAC UUUUAAUUUA AUG A ACUU GUA UAA UG CGC AA G UAGCUUU U
+DK4760 CAUC AG AU G ACUGAA AG UAAGUA A UGGUC UCUUAAACCA AAA AA UAGU AAA UUA AC GUUU AC U UCUGAUG A
+DK4840 CAUU AG AU G ACUGAA AG CAAGUA C UGGUC UCUUAAACCA UUU AA UAGU AAA UUA GC CAUU AC U UCUAAUG A
+DK4880 CAUU AG AU G ACUGAA AG CAAGUA C UGGUC UCUUAAACCA UUU UA UAGU AAA UUA GC ACUU AC U UCUAAUG A
+DK5040 CCUU AA UU A GCUUAUU AU AAAGCC C UAAAC UCUUAAUUUA AAA GA AAAU AGU UAA AA CCU AU U AUUAAGG A
+DK5080 CCUU AA UU A GCUUAU UU AAAGCU U UAGAC UCUUAAUUUA AAG A AAUU AGC UAA UA CCU AU U AUUAAGG A
+DK5100 CACU AA GA A GCUAAUAU GGGU UAAGCA C CAGCC UUUUAAGCUG GAA GC AGGU GAC UCC CA ACC AC C CUUAAUG A
+DK5120 CACU AA GA A GCUAAAU GGGCA UUAGCG A CAGCC UUUUAAGCUG UAG AU UGGU GAC UCC CA ACC AC C CUUAAUG A
+DK5220 CAUU AA GA A GCUAUG CA CCAGCA C UAGCC UUUUAAGCUA GAG AG AGGG G A CAC CC U C CC C CUUAAUG A
+DK5280 CAUU GC GA A GCUU AGAGCG U UAACC UUUUAAGUUA AAG UU AGAG A C AAC AA A U CU C CACAUUG A
+DK5281 CAUU GC GA A GCUU AGAGCG U UAACC UUUUAAGUUA AAG UU AGAG A C AAC AA A U CU C CACAAUG A
+DK5320 CACU AU GA A GCUA AGAGCG U UAACC UUUUAAGUUA AAG UU AGAG ACC UUA AA AU CU C CAUAGUG A
+DK5360 CACU AA GA A GCUAU AUAGCA C UAACC UUUUAAGUUA GAG AU UGAG AGC CAU AU ACU CU C CUUGGUG A
+DK5880 CACU GU AA A GCUAAC UUAGCA U UAACC UUUUAAGUUA AAG AU UAAG AGA ACC AACACCU CU U UACAGUG A
+DK6050 GCCC UU CU A GCUCAGUC GGU AGGGCG C ACGGC UCUUAACCGU GUG GU CGUG GGU UCG AG CC CA C GGGGGGU G
+DK6051 GCCU UC CU A GCUCAGU GGU AGAGCG C ACGGC UUUUAACCGU GUG GU CGUG GGU UCG AU CCC CA C GGAAGGC G
+DK6052 GCCC UU CU A GCUCAGUC GGU AGAGCG C ACGGC UCUUAACCGU GUG GU CGUG GGU UCG AG CCC CA C GGGGGGU G
+DK6160 GCCC AG AU A GCUCAGUC GGU AGAGCG C AAGGC UUUUAACCUU GUG GU CGGG GGU UCG AG CCC CC C UUUGGGC G
+DK6161 GCCC GG CU A GCUCAGUC GGU AGAGCG C CAGAC UCUUAAUCUG GUG GU CGGG GGU UCG AG CCC CC C GUUGGGC G
+DK6280 UCCU UG UU A GCUCAGUU GGU AGAGCG U UCGGC UUUUAACCGA AAU GU CAGG GGU UCG AG CCC CC U AUGAGGA G
+DK6281 GCCU UG UU G GCGCAAUC GGU AGCGCG U AUGAC UCUUAAUCAU AAG GU UAGG GGU UCG AG CCC CC U ACAGGGC U
+DK6320 UCCC GA GU G GCUCAAUC GGUUU AGAGCG U CUGAC UCUUAAUCAG AAG GU UGCG AGU UCG AG UCU CG C CUUGGGA G
+DK7560 GCCC GG UU A GCUCAGUC GGU AGAGCA C CAGAC UCUUAAUCUG GUU GU CGCG GGU UCG AG CCC CG C AUUGGGC U
+DK7680 GCCC GG CU A GCUCAGUC GGU AGAGCA U GAGAC UCUUAAUCUC AGG GU CGUG GGU UCG AG CCC CA C GUUGGGC G
+DK7740 GCCC GG CU A GCUCAGUC GGU AGAGCA U GAGAC UCUUAAUCUC AGG GU CGUG GGU UCG AG CCC CA C GUUGGGC G
+DK7741 GCCC GG AU A GCUCAGUC GGU AGAGCA U UGGAC UUUUAAUCCA AGG GU CCAG GGU UCA AG UCC CU G UUCGGGC G
+DK7920 GCCC GC AU A GCUCAGUC GGU AGAGCA U CAGAC UUUUAAUCUG AGG GU CCAG GGU UCA AG UCC CU G UUCGGGC G
+DK8040 GCCC GG CU A GCUCAGUU GGU AGAGCA U GAGAC UCUUAAUCUC AGG GU CGUG GGU UCG AG CCC CA C GUUGGGC G
+DK8100 GCCU GG AU A GCUCAAUU GGU AGAGCA U CAGAC UUUUAAUCUG AGG GU UCAG GGU UCA AG UCC CU G UUCAGGC G
+DK8101 GCCC GG CU A GCUCAGUC GGU AGAGCA U GAGAC UCUUAAUCUC AGG GU CGUG GGU UCG AG CCC CA C GUUGGGC G
+DK9160 GCCC GG CU A GCUCAGUC GGU AGAGCA U GAGAC UCUUAAUCUC AGG GU CGUG GGU UCG AG CCC CA C GUUGGGC G
+DK9990 GCCC GG AU A GCUCAGUC GGU AGAGCA U CAGAC UUUUAAUCUG AGG GU CCAG GGU UCA AG UCC CU G UUCGGGC G
+DK9991 GCCC GG CU A GCUCAGUC GGU AGAGCA U GAGAC UCUUAAUCUC AGG GU CGUG GGU UCG AG CCC CA C GUUGGGC G
+DL0220 GCGA GA AU G GUCAAAUU GGUA AAGGCA C AGCAC UUAAAAUGCU GC GGA A UGA U U UCCU UGUG GGU UCG AG UCC CA C UUCUCGC ACCA
+DL0260 GGGG CU AU G CUGGAACU GGUA GACAAU A CGGCC UUAGAUUCCG UA GCU UAA A UGCG UGGG AGU UCG AG UCU CC C UAGCCCC ACCA
+DL0440 GCAG GG AU A GCCAAGUU UGGCCA ACGGCG C AGCGU UCAGGGCGCU GU CCC GUA G GGGUC CGCA GGU UCA AA UCC UG C UCCCUGC A
+DL0660 GCAG GG GU U GUCGAGCC UGGCCA AAGAUG C AGGAC UUAGAAUCCU GU CCA GUA G UGGUU CCAG GGU UCA AA UCC CU G CCCCUGC A
+DL0680 GCGG GG GU G CCCGAGU GGUCA AAGGGG A CAGGC UUAGGACCUG UU GGC GUU AG GCUU CCAG GGU UCG AA UCC CU G CCCCCGC A
+DL0860 GCGG GG GU G CCCGAGCA AGGUCA AAGGGG U CGGGC UCAGGCCCCG AU GGU GUA G GCCUG CGUG GGU UCA AA UCC CA C CCCCCGC A
+DL0980 GCGG GG GU G CCCGAGCC AGGUA AAGGGG C AGGGC UCAAGACCCU GU GGC GUA G GCCUG CGUG GGU UCG AA UCC CA C CCCCCGC A
+DL0981 GCGG GG GU G CCCGAGCC AGGUA AAGGGG C AGGGU UCAGGUCCCU GU GGC GUA G GCCUG CGUG GGU UCA AA UCC CA C CCCCCGC A
+DL1140 CCCC AA GU G GCGGAAUA GGUA GACGCA U UGGAC UUAAAAUCCA AC GGG C UUA AU A UCCUG UGCC GGU UCA AG UCC GG C CUUGGGG ACCA
+DL1141 GGG GA UU GGCGGAAU UGGCA GACGCA C UAGAC UUAGGAUCUA GC GUC UUU GACG UAAG GGU UCA AG UCC CU U AUCCCCC ACCA
+DL1200 GCCC AA GU G GCGGAAU GGUA GACGCA U GGGAU UUAAGAUCCC AC GCU A GCA A U AGCG UGCC GGU UCA AG UCC GG C UUUGGGC ACCA
+DL1220 GGGG GA UU G GCGGAAUU GGCA GACGCA C UAGAC UUAGGAUCUA GC GUC UUU GACG UAAG GGU UCA AG UCC CU U AUCCCCC ACCA
+DL1230 CCCC GU GU G GCGAAAU GGUA GACGCG C UUGAC UCAAAAUCAA GU AGU GAA G ACUG UGCU GGU UCG AG UCC GG U CACGGGG ACCA
+DL1231 GCGG GU GU G GCGAAAUU GGCA GACGCA C UAGAC UUAGGAUCUA GC GCU UUA C GGCA UGCA GGU UCA AG UCC UG U CACCCGC ACCA
+DL1232 U GCCC GG GU G GUGAAAUC GGUA GACACG C AGGAC UUAAAAUCCU GU GGC A UAA A A GCCA UGUC GGU UCA AG UCC GA C CCCGGGC ACCA
+DL1310 GCCC GG AU G GUGGAA UGCA GACACG G CGAGC UUAAACCUCG CU GCC CC UUC G AG GGCG UGCC GGU UCA AG UCC GG C UCCGGGC ACCA
+DL1540 GCGG AU GU G GCGGAAUU GGCA GACGCG C UAGAA UCAGGCUCUA GU GUC U UUA C A GACG UGGG GGU UCA AG UCC CU U CAUCCGC ACCA
+DL1541 GCCG GG GU G GUGGAAUU GGCA GACACA C AGGAC UUAAAAUCCU GC GGU AG GUG A CU ACCG UGCC GGU UCA AG UCC GG C CCUCGGC A
+DL1542 GCCG GG GU G GUGGAAUU GGCA GACACA C AGGAC UUAAAAUCCU GC GGU AG GUG A CU ACCG UGCC GGU UCA AG UCC GG C CCUCGGC ACCA
+DL1543 GCCG GU GU G GCGGAAUU GGCA GACGCG C ACGAC UCAAAAUCGU GU UCC UUC U GGAG UGUC GGU UCG AC CCC GA C CACCGGU A
+DL1544 GCGG GU GU G GCGGAAUU GGCA GACGCG C UAGAC UUAGGAUCUA GU GUC UUU AU GACG UGGG GGU UCA AG UCC CU U CACCCGC A
+DL1660 GCGA AG GU G GCGGAAUU GGUA GACGCG C UAGCU UCAGGUGUUA GU GUC C UUA C G GACG UGGG GGU UCA AG UCC CC C CCCUCGC ACCA
+DL1661 GCGG GA GU G GCGAAAUU GGUA GACGCA C CAGAU UUAGGUUCUG GC GCC GCA A GGUG UGCG AGU UCA AG UCU CG C CUCCCGC ACCA
+DL1662 GCCG AA GU G GCGAAAUC GGUA GACGCA G UUGAU UCAAAAUCAA CC GUA GAA A UACG UGCC GGU UCG AG UCC GG C CUUCGGC ACCA
+DL1663 GCCG AG GU G GUGGAAUU GGUA GACACG C UACCU UGAGGUGGUA GU GCC C AAU A G GGCU UACG GGU UCA AG UCC CG U CCUCGGU ACCA
+DL1664 GCCC GG AU G GUGGAAUC GGUA GACACA A GGGAU UUAAAAUCCC UC GGC G UUC G C GCUG UGCG GGU UCA AG UCC CG C UCCGGGU ACCA
+DL1700 GCGA AG GU G GCGGAAUU GGUA GACGCG C UAGCU UCAGGUGUUA GU GUC C UUA C G GACG UGGG GGU UCA AG UCC CC C CCCUCGC ACCA
+DL1750 GCGG AA GU G GCGGAAUU GGUA GACGCA C UAGAU UUAGGUUCAU GC GCC U GUA A GGUG UGAG AGU UCA AG UCU CU C CUUCCGC ACCA
+DL1780 GCGA AG GU G GCGGAAUU GGUA GACGCG C UAGCU UCAGGUGUUA GU GCC C CCC G GGUG UGAG GGU UCG AG UCC CU C UCUUCGC ACCA
+DL1940 GCCC AG AU G GCGGAAUU GGUA GACGCG C CAGCU UCAGGUGCUG GU ACU C GAA A G GGUG UGGA GGU UCG AG UCC UC U UCUGGGC ACCA
+DL1980 GCCC AG GU G GCGGAAUU GGUA GACGCG C AUGGU UCAGGUCCAU GU GCC GCA A GGUG UGGA GGU UCG AG UCC UC U CCUGGGC ACCA
+DL2000 GCCC GA GU G GUGGAAUC GGUA GACACA A GGGAU UUAAAAUCCC UC GCC U UUC G A CGCG UGCC AGU UCA AG UCU GG C UUCGGGC ACCA
+DL2180 GGGG AU GU G GUGGAAUU GGUA GACGCA A CGGAC UUAAAAUCCG UC GAU U GUA UA G AUCG UGAG GGU UCA AG UCC CU C CGUCCCC A
+DL2520 GCAG GC AU G GCGGAAUU UGGUA GACGCG C AGGAU UUAGGUUCCU GU GUC UUU AU GAUG UGAG AGU UCG AG UCU CU C UGCCUGU A
+DL2521 GCCU UC GU G GUGAAAU GGUA GACACU C AUGAC UUAAAAUCAU GU GCU U AUA A AGCG UACC GGU UCA AC UCC GG U CGAAGGU A
+DL2522 UCCU UC GU G GUGAAAU GGUA AACACG U GUGAU UCAAAAUCAC AU GC AUA A GCU UGCC GGU UCG AG UCC GG U CGAAGGU A
+DL2600 GCCU UG AU G GUGAAAU GGUA GACACG C GAGAU UCAAAAUUUC GU GCU UAA AGCA UGGA GGU UCG AG UCC UC U UCAAGGC A
+DL2601 GGGG GU AU G GCGAAAUU GGUA GACGCU G CGGAC UUAAAAUCCG UU GGC UU UAA AG ACCG UGAG GGU UCA AG UCC CU C UACCCCC A
+DL2602 GCCG CU AU G GUGAAAUU GGUA GACACG C UGCUC UUAGGAAGCA GU GC UAA G GCU UCUC GGU UCG AA UCC GA G UAGCGGC A
+DL2700 GCCG CC AU G GUGAAAUU GGUA GACACG C UGCUC UUAGGAAGCA GU GCU CA AGCA UCUC GGU UCG AG UCC GA G UGGCGGC A
+DL2701 GGGG AU AU G GCGAAAUC GGUA GACGCU A CGGAC UUAAAAUCCG UCG ACU U UCU A AGUCG UGAG GGU UCA AG UCC CU C UAUCCCC A
+DL2702 GCCU UG AU G GUGAAAU GGU A GACACG C GAGAC UCAAAAUCUC GU GCU AAA G AGCG UGGA GGU UCG AG UCC UC U UCAAGGC A
+DL2720 GGGG AU AU G GCGAAAUC GGUA GACGCU A CGGAC UUAAAAUCCG UC GAC UU UAU AA GUCG UGAG GGU UCA AG UCC CU C UAUCCCC A
+DL2721 GCCU UG AU G GUGAAAU GGUA GACACG C GAGAC UCAAAAUCUC GU GCU AAA G AGCG UGGA GGU UCG AG UCC UC U UCAAGGC A
+DL2740 GCCG CU AU G GUGAAAUU GGUA GACACG U UGCUC UUAGGAAGCA GU GCU AU AGCA UCUU GGU UCG AG UCC GA G UGGCGGC A
+DL2800 GCCU UG GU G GUGAAAU GGUA GACACG C GAGAC UCAAAAUCUC GU GCU AAA A AGCG UGGA GGU UCG AG UCC UC U UCAAGGC A
+DL2920 GCCG CU AU G GUGAAAUU GGUA GACACG C UGCUC UUAGGAAGCA GU GC UAA U GCA UCUC GGU UCG AG UCC GA G UGGCGGC A
+DL2921 GGGG AU AU G GCGAAAUC GGUA GACGCU A CGGAC UUAAAAUCCG UC GAC UU UAA AA AUCG UGAG GGU UCA AG UCC CU C UAUCCCC A
+DL2922 GCCU UG GU G GUGAAAU GGUA GACACG C GAGAC UCAAAAUCUC GU GCU A AA U AGCG UGGA GGU UCG AG UCC UC U UCAAGGC A
+DL3200 GCCU UG GU G GUGAAAUGGUGGUA GACACG C GAGAC UCAAAAUCUC GU GCU AAA C AGCG AGGA GGU UCG AG UCC UC U UCAAGGC A
+DL3280 GCCU UG GU G GUGAAAU GGUA GACACG C GAGAC UCAAAAUCUC GU GCU AAA A AGCG UGGA GGU UCG AG UCC UC U UCAAGGC A
+DL3360 GCCU UG GU G GUGAAAU GGUA GACACG C GAGAC UCAAAAUCUC GU GCU AAA C AGCG UGGA GGU UCG AG UCC UC U UCAAGGC A
+DL3361 GGGG AU AU G GCGAAAUU GGUA GACGCU A CGGAC UUAAAAUCCG UC GAC UU UAA AA AUCG UGAG GGU UCA AG UCC CU C UAUCCCC A
+DL3400 GGGG AU AU G GCGAAAUC GGUA GACGCU A CGGAC UUAAAAUCCG UC GAC UU UAU AA GUCG UGAG GGU UCA AG UCC CU C UAUCCCC A
+DL3800 ACUU AU GU G GCGGAACA GGUA GACGCG U GGGAC UUAAAAUCUC AU UCC AUA GGAG UGCC GGU UCG AU UCC GG U CAUAAGU A
+DL3840 ACUU AU GU G GCGGAAUA GGUA GACGCG U GGGAC UUAAAAUCUC AU UCC UAC GGAG UGCC GGU UCG AC CCC GG U CAUAAGU A
+DL3880 AUCC GA GU G CUGGAAUU GGUA GACAGU C UUAGC UUAAGUUUAA GU GAC GCA A GUCG UAAA CGU UCG AA UCG UU U CUCGGAU A
+DL3881 AUGG GU AU G CUGAAAUA AGGUA AACAGG U UCCGC UUAGGACGGA AU AGU CAA ACUU UGCA AGU UCA AG UCU UG U UACCCGU A
+DL4000 GCUA UU UU G GUGGAAUU GGUA GACACG A UACUC UUAAGAUGUA UU ACU UUA C AGUA UGAA GGU UCA AG UCC UU U AAAUAGC A
+DL4020 AUGA CU AU G GCGGAAUU GGUA GACGCG A UUAGU UUAGGUCUAA UU UAU U UUU A AUAA UAUG GGU UCA AA UCC CA U UAGUCAU A
+DL4030 GCUA CU UU G GUGGAAUC GGUA GACACG A CGCAC UUAAAAUGCG UU ACU U AU A AGUA UAAA AGU UCA AG UCU UU U AAGUAGC A
+DL4040 GCCU AA AU G CUGGAAUU UGGUA GACAGA A CAAAC UUAAGAUUUG UC GCU UUC G AGCG UGUU GGU UCG AG UCC AA C UUUAGGU A
+DL4050 GCUA CU UU G GUGGAAAU GGUA GACACG A CACUC UUAAGAUGUG UU AUC GCA A GAUA UGAA GGU UCA AA UCC UU U AAGUAGU A
+DL4070 GCUA UU UU G GUGGAAUU GGUA GACACG A CGCAC UUAAAAUGCG UU ACU AUA AA AGUA UAAA AGU UCA AG UCU UU U AAGUAGC A
+DL4080 GCUA UU UU G GUGGAAUU GGUA GACACG A UACUC UUAAGAUGUA UU ACU UUA U AGUA UGAA GGU UCA AA UCC UU C AAAUAGC A
+DL4360 GGGU GU AU A GCUCAGUU GGU AGAGCA G UGGGC UUUUAACCUA CUG GU CGCA GGU UCA AG UCC UG C UAUACCC A
+DL4500 GCGC AU UU G GUGAAAAA GGUA AACACG A CGGAU UUAAAAUCCG UU CC UAU U GGU UAUU GGU UCA AG UCC AA U AAUGCGC A
+DL4501 ACUC GC UU G GUGGAAC GGCA AACACG G CAGAC UCAAAAUCUG UU UCU AAU GGAA UAUC GGU UCG AA UCC GA U AGCGAGU A
+DL4502 GCGG AU AU G AUGGAAUU GGUA GACAUG C CAGGU UUAGGUUCUG GU GAC CA UAA UG UUCG UGGG GGU UCG AG UCC CU C UAUCCGU A
+DL4700 UGAA AG CU G GCAGAG UU AAUGCG C UUGAU UUAGGAUCAA UUU A UAAG UA UCC A UA CU U GCUUUCA U
+DL4701 CACA AG CU G GCAGAC AU AAUGCA U ACGAU UUAAGCUCGU CUU A UAAG A U CAU AU U CU U GUUUGUG U
+DL4760 ACUA UU UU G GCAGAUA AGUGCA A UGAAU UUAGAAUUCA UUU A UGUA GAU UUU UU UC UA C AAAUAGU A
+DL4761 UCUA AU AU G GCAGAUU AAUGCA U UAGAU UUAAGCUCUA AAA A UAAA G U UUG AC C UU U UAUUAGA A
+DL4800 ACUA UU UU G GCAGAUU AGUGCA G UAAAU UUAGAAUUUA UUU A UAUA AUU UAA UU AAU UA U AAAUAGU A
+DL4840 UCUA AU AU G GCAGAUU AGUGCA A UAGAU UUAAGCUCUA UAU A UAAA GU AUU UU AC UU U UAUUAGA A
+DL4880 UCUA AU AU G GCAGAUU AGUGCA A UGGAU UUAAGCUCCA UAU A UAAA GU AUU UU AC UU U UAUUAGA A
+DL4921 ACUA UU UU G GCAGAUU AGUGCA A UAAAU UUAGAAUUUA UAU A UGUA AU UUU U AU UA C AAAUAGU A
+DL4980 GCUU GA GU A GCAAAGAG GGUUU AAUGCU U GAGAU UUAGGUUCUU ACA U CAAG GGU UCA AU UCC CU U CUCUAGU U
+DL4981 GUUG AA GU A GCAAAGA GGUA AAUGCG A GAAUC CUAAGAUUUC UUU AU CAAG GGU UCA AU UCC CU U CUUCAAU U
+DL5000 GCUG GG GU A GCAAAGU GGUU ACUGCA G UAGAU UUAGGAUCUA CGA U CAAG GGU UCA AA UCC UU U UCCUAGU U
+DL5001 GCUG AA AU A GCAAAGU GGU AAUGCG A GAAGC CUAAGAUUUC UUU AU CGAA GGU UCA AA UCC UU C UUUCAGU U
+DL5020 GCUU GA GU A GCAAAGC GGUU AAUGCU U GAGAU UUAGGUUCUC ACA U CAAA GGU UCA AG CCC UU U CUCUAGU U
+DL5021 GUUG CA GU A GCAAAGC GGUU AAUGCG A GAAUC CUAAAAUUUC UUU AU CAGA GGU UCA AA UCC UC U CUCCAAC U
+DL5040 GCUG AA AU A GCAAGU GGUU AAUGCA A AAGAC UUAGGAUUUU UCA U CGAA GGU UCA AC UCC UU C UUUCAGC U
+DL5041 GCUA AA AU A GCAAAGU GGUU AAUGCA G AAGGC CUAAGACCUU CCU AU CAAA GGU UCA AC UCC CU U UUUUAGC U
+DL5080 GCUG AA GU A GCAAAAGU GGU UAUGCA A AAGAC UUAGGAUCUU UUA A CGAG GGU UCA AC UCC UU C UUUCAGC U
+DL5081 CUAA AG UA GCAAAGU GGUU AAUGCA G AAGGC CUAAAACUUU CCU AU CAAG GGU UCA AC UC CU U UCUUUAG C
+DL5100 GCUC CU AA A GGAUAAU AGCU CAUCCG U UGGUC UUAGGAACCA AAA AC UCUU GGU GCA AC UCC AA G UAGCAGC U
+DL5120 GCUA GC GU G GCAGAGCC UGGCU AAUGCG A AAGAC CUAAGCUCUU UUU AU CAGG GGU UCA AA UCC CC U CGCUAAC U
+DL5121 GCUU UU AA A GGAAAAC AGUC UAUCCG C UGGUC UUAGGAACCA GAA AC UCUU GGU GCA AA UCC AA G UAAAAGC U
+DL5160 GCUU UU AA A GGAAAAG AGC CCUCCA C UGGUC UUAGGCGCCA GCA UC UCUU GGU GCA AG UCC AA G UAAAAGC U
+DL5220 ACUU UU AA A GGAUAAG AGC AAUCCG U UGGUC UUAGGAACCA CCU A UCUU GGU GCA AA UCC AA G UAAAAGU A
+DL5221 GCUA GC GU G GCAGAGCU CGGCA AAUGCA A AAGGC UUAAGCCCUU UAU C CAGA GGU UCA AA UCC UC U CCCUAGC U
+DL5280 ACUU UU AU A GGAUAGA AGU AAUCCA U UGGUC UUAGGAACCA AAA A CCUU GGU GCA AC UCC AA A UAAAAGU A
+DL5281 AUUA GG GU G GCAGAGCC AAGUA AUUGCG U AAGAC UUAAAACCUU GUU CC CAGA GGU UCA AA UCC UC U CCCUAAU A
+DL5320 ACUU UU AU A GGAUAAU AGU AAUCCA U UGGUC UUAGGAACCA AAA A CCUU GGU GCA AA UCC AA A UAAAAGU A
+DL5321 AUUA GG GU G GCAGAGCC AGGAA AUUGCG U AAGAC UUAAAACCUU GUU CC CAGA GGU UCA AA UCC UC U CCCUAAU A
+DL5360 GUUA AG GU G GCAGAGCC CGGUA AUUGCA U AAAAC UUAAACUUUU AUA UC CAGA GAU UCA AA UCC UC U CCUUAAC A
+DL5361 ACUU UU AA A GGAUAGU AGUU UAUCCG U UGGUC UUAGGAACCA AAA AAUU GGU GCA AC UCC AA A UAAAAGU A
+DL5440 ACUU UU AA A GGAUAAC AGC UAUCCA U UGACC UUAGGAGUCA AAA A CAUU GGU GCA AC UCC AA A UAAAAGU A
+DL5480 ACUU UU AA A GGAUAAC AGC UAUCCA U UGACC UUAGGAGUCA AAA A UAUU GGU GCA AC UCC AA A UAAAAGU A
+DL5520 ACUU UU AA A GGAUAAC AGC UAUCCA U UGACC UUAGGAGUCA AAA A CAUU GGU GCA AC UCC AA A UAAAAGU A
+DL5560 ACUU UU AA A GGAUAAC AGC UAUCCA U UGGCC UUAGGAGUCA AAA A UAUU GGU GCA AC UCC AA A UAAAAGU A
+DL5600 ACUU UU AA A GGAUAGU AGU UAUCCA U UGGUC UUAGGAGCCA AAA A CAUU GGU GCA AC UCC AA A UAAAAGU A
+DL5640 ACUU UU AA A GGAUAGA AGU AAUCCA U CGGUC UUAGGAACCG AAA AAUU GGU GCA AC UCC AA A UAAAAGU A
+DL5680 ACUU UU AA A GGAUAGA AGU AAUCCA U UGGCC UUAGGAGCCA AAA AAUU GGU GCA AC UCC AA A UAAAAGU A
+DL5720 ACUU UU AA A GGAUAAC AGC CAUCCG U UGGUC UUAGGCCCCA AAA A UUUU GGU GCA AC UCC AA A UAAAAGU A
+DL5760 ACUU UU AA A GGAUAAC AGC UAUCCA U UGGUC UUAGGACCCA AAA A UUUU GGU GCA AC UCC AA A UAAAAGU A
+DL5800 ACUU UU AA A GGAUAAC AGC UAUCCA U UGGUC UUAGGACCCA AAA A UUUU GGU GCA AC UCC AA A UAAAAGU A
+DL5840 GCUU UU AA A GGAUAAC AGC UAUCCC U UGGUC UUAGGAUCCA AAA A UUUU GGU GCA AC UCC AA A UAAAAGU A
+DL5880 ACUU UU AA A GGAUAAC AGC UAUCCA U UGGUC UUAGGCCCCA AAA A UUUU GGU GCA AC UCC AA A UAAAAGU A
+DL5881 ACUU UU AA A GGAUAAC AGC UAUCCA U UGGUC UUAGGCCCCA AAA A UUUU GGU GCA AC UCC AA A UAAAAGU A
+DL6160 GCAA GG GU A GGAAAGUC UGGUUA AAUCCG U GUGAC UUAAGAUCUC AU CC AUU C GGUU CGCG AGU UCG AA UCU CG C CUCUUGC A
+DL6200 GGCA AG AU G GCCGAGC GGUCU AAGGCG C CACGU UAAGGCCGUG GU CC GAA A GGG CGUG GGU UCG AA UCC CA C UCUUGUC A
+DL6280 GGUU GU UU G GCCGAGC GGUCU AAGGCG C CUGAU UCAAGCUCAG GU AUC GUA A GAUG CAAG AGU UCG AA UCU CU U AGCAACC A
+DL6281 GGAG GG UU G GCCGAGC GGUCU AAGGCG G CAGAC UUAAGAUCUG UU GGA C GGU U G UCCG CGCG AGU UCG AA CCU CG C AUCCUUC A
+DL6980 GUCA GG AU G GCCGAGU GGUCU AAGGCG C CAGAC UCAAGUUCUG GU CUU C GAG A G AGGG CGUG GGU UCA AA UCC CA C UUCUGAC A
+DL7560 GGAG AG AU G GCCGAGC GGUCU AAGGCG C UGGUU UAAGGCACCA GU CCC UUC G GGGG CGUG GGU UCG AA UCC CA C UCUCUUC A
+DL7740 GUCA GG AU G GCCGAGC GGUCU AAGGCG C CAGAC UCAAGUUCUG GU CCU C UCU G AGGG CGUG GGU UCG AA UCC CA C UUCUGAC A
+DL7741 GUCA GG AU G GCCGAGU GGUCU AAGGCG C UGCGU UCAGGUCGCA GU CUA C UCU G UAGG CGUG GGU UCG AA UCC CA C UUCUGAC A
+DL7920 GUCA GG AU G GCCGAGC GGUCU AAGGCG C UGCGU UCAGGUCGCA GU CUC C CCU G GAGG CGUG GGU UCG AA UCC CA C UUCUGAC A
+DL8100 GUCA GG AU G GCCGAGC GGUCU AAGGCG C UGCGU UCAGGUCGCA GU CUC C CCU G GAGG CGUG GGU UCG AA UCC CA C UCCUGAC A
+DL9160 GUCA GG AU G GCCGAGC GGUCU AAGGCG C UGCGU UCAGGUCGCA GU CUC CC CUA GA GAGG CGUG GGU UCG AA UCC CA C UCCUGAC A
+DL9161 GUCA GG AU G GCCGAGU GGUCU AAGGCG C UGCGU UCAGGUCGCA GU CUC C CCU G GAGG CGUG GGU UCG AA UCC CA C UCCUGAC A
+DL9162 GUCA GG AU G GCCGAGC GGUCU AAGGCG C UGCGU UCAGGUCGCA GU CUC C CCU G GAGG CGUG GGU UCG AA UCC CA C UCCUGAC A
+DL9990 GGUA GC GU G GCCGAGC GGUCU AAGGCG C UGGAU UUAGGCUCCA GU CUC UUC G GAGG CGUG GGU UCG AA UCC CA C CGCUGCC A
+DL9991 GGUA GC GU G GCCGAGC GGUCU AAGGCG C UGGAU UAAGGCUCCA GU CUC UUC G GGGG CGUG GGU UCG AA UCC CA C CGCUGCC A
+DM0260 AGUU AG UU G GCAGAGU GGU UAUGCA C CUCCU UCAUACGGAG CG ACUACAGU GGU UCA AA UCC AC U ACUAACU ACCA
+DM0680 GGGC CC AU AAGCUUAGCC AGGU AGAGCG C CCGGC UCAUAACCGG GCG GU CAUG GGU UCG AA UCC CA U UGGGCCC A
+DM0900 AGCG GG GU G GGGUAGUC AGGA AAUCCG A UGGGC UCAUAACCCG UAG AU CGAU GGU UCA AA UCC AU C CCCCGCU A
+DM0960 GCCG GG GU C GCCUAGCC UGGUCA AGGGCG C CGGAC UCAUAAUCCG GUC UU CCCG GGU UCG AA UCC CG G CCCCGGC ACCA
+DM1140 GGCG GG GU A GCUCAGUU GGUU AGAGCG U UCGGU UCAUACCCGA AAG GU CGAG AGU UCA AA UCU CU C CCCCGCU ACCA
+DM1180 GGCG GG GU A GCUCAGUU GGUU AGAGCG U UCGGU UCAUACCCGA AAG GU CGAG AGU UCA AC UCU CU C CCCCGCU ACCA
+DM1230 GGCG GU GU A GCUCAGCU GGCU AGAGCG U GCGGU UCAUACCCGC AAG GU CGAG GGU UCA AG UCC CC C CGCCGCU ACCA
+DM1231 CGCG GG AU A GAGCAGUC UGGU AGCUCG U CGGGC UCAUAACCCG AAG GU CGAU GGU UCA AA UCC AU C UCCCGCA ACCA
+DM1260 GGCG GG AU A GCUCAGCU GGUU AGAGCG C UCGGC UCAUACCCGG GAG GU CAAG AGU UCA AG UCU CU U UCUCGCU ACCA
+DM1540 GGAC CU UU A GCUCAGUU GGUU AGAGCA G ACGGC UCAUAACCGU CCG GU CGUA GGU UCG AG UCC UA C AAGGUCC ACCA
+DM1541 GGCG GU GU A GCUCAGCU GGCU AGAGCG U ACGGU UCAUACCCGU GAG GU NGGG GGU UCG AU CCC CU C CGCCGCU ACCA
+DM1660 GGCU AC GU A GCUCAGUU GGUU AGAGCA C AUCAC UCAUAAUGAU GGG GU CACA GGU UCG AA UCC CG U CGUAGCC ACCA
+DM1750 GGCU AC GU A GCUCAGUU GGUU AGAGCA C AUCAC UCAUAAUGAU GGG GU CACA GGU UCG AA UCC CG U CGUAGCC ACCA
+DM2520 GGCU CA GU A GCUCAGA GGAU AGAGCA G GGGAU UCAUAAGCCC UUG GU CACA GGU UCA AA UCU UG U CUGAGCC A
+DM2600 ACCU AC UU A ACUCAGU GGUUU AGAGUA U CGCUU UCAUACGGCG AGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM2610 ACCU AC UU A ACUCAGU GGUU AGAGUA C UGCUU UCAUACGGCG GGA GG CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM2640 GCCU AC UU A ACUCAGU GGUU AGAGUA U UGCUU UCAUACGGCG GGU GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM2680 GCCU AC UU A ACUCAGU GGUU AGAGUA U UGCUU UCAUACGGCG GGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM2700 GCCU AC UU A ACUCAGU GGUU AGAGUA U UGCUU UCAUACGGCG GGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM2701 AGCG GA GU A GAGCAGUU UGGU AGCUCA C GAGGC UCAUAACCUU GAG GU CACG GGU UCG AU UCC CG U CUCCGCA C
+DM2720 GCCU AC UU A ACUCAGU GGUU AGAGUA U UGCUU UCAUACGGCG GGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM2760 ACCU AC UU A ACUCAGU GGUU AGAGUA U UGCUU UCAUACGGCA GGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM2840 ACCU AC UU A ACUCAGU GGUU AGAGUA U UGCUU UCAUACGGCG GGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM2920 ACCU AC UU A ACUCAGU GGUU AGAGUA C UGCUU UCAUACGGCG GGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM3280 ACCU AC UU A ACUCAGC GGUU AGAGUA U UGCUU UCAUACGGCG GGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM3640 AGAC AC GU A GCUUAGU GGU AAAGCA C UGGUC UCAUAAGCCA GCU AU CGCA AGU UCG AA UCU CG C CGUGUCU A
+DM3880 GCCA AA GU A GUUUAAU GGU AGAACA A UAAUU UCAUGAAUUA AGA A UGAG AAU UCG AU UUU CU C CUUUGGC U
+DM3881 AAGA CU AU A GCUUAAUC GGU AAAGCG A ACCAC UCAUGAUGGU UUG AG UAAA UGU UCA AG UCA UU U UAGUCUU A
+DM3920 ACCU GG GU A GUUUAAA GGU AAAACC U UAAUU UCAUACAUUA AAG A UGAG AAU UCG AU UUU CU C CCCAGGU N
+DM3960 GCCC GG GU A GUUUAAA GGU AAAACC U UAAUU UCAUACGUUA AAG A UGAG AAU UCG AU UUU CU C CCCAGGU U
+DM4000 GCUU GU AU A GUUUAAUU GGUU AAAACA U UUGUC UCAUAAAUAA AUA AU GUAA GGU UCA AU UCC UU C UACAAGU A
+DM4010 AGUA AU AU G AUGUAAUU GGUU AACAUA U UAGGC UCAUGACUUA AUU A UAUA CGU UCA AA UCG UG U UAUUGCU A
+DM4020 UGCA UU AU G AUGUAAUU GGU AACAUA C AAGGC UCAUGUCCUU UUU A UAUA CGU UCA AA UCG UG U UGAUGCA U
+DM4021 AGAA UU AU A GCUUAAUC UGGU AAAGCA G UCCAC UCAUAAUGGA CCU A UCAA AGU UCA AU UCU UU G UUAUUCU A
+DM4080 ACUU GU AU A GUUUAAAU GGUU AAAACA U UUGUC UCAUAAACAA AUA AU GUAA GGU UCA AA UCC UU C UACAAGU A
+DM4240 ACCU AC UU G ACUCAGC GGUU AGAGUA U CGCUU UCAUACGGCG AGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM4280 ACCU AC UU G ACUCAGC GGUU AGAGUA U CGCUU UCAUACGGCG AGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM4480 GGGC UU AU A GUUUAAUU GGUU GAAACG U ACCGC UCAUAACGGU GAU AU UGUA GGU UCG AG CCC UA C UAAGCCC A
+DM4481 ACCU AC UU G ACUCAGC GGUU AGAGUA U CGCCU UCAUACGGCG AGA GU CAUU GGU UCA AA UCC AA U AGUAGGU A
+DM4500 CGCG GG AU A GAGUAAUU GGU AACUCG U CAGGC UCAUAAUCUG AAU GU UGUG GGU UCG AA UCC GA C UCCCGCC A
+DM4501 GUCG GA AU A GUUUAGUA GGGU AGAACA G CGGGA UCAUAAUUCG CAC A CGGG GGU UCA AA UCC CU C UUCCGAU A
+DM4700 GGUA AA GU A GUCUAAU GA AGGACA G AAGAC CUAUGAUUUU CAA G UGUU A UAA U U AA C CUUUACU U
+DM4701 GGUA AA GU G GUCUAAU AU U AGGAUA U AGGGC UCAUGCCCCU AAG G CGCC A C GCG UA A U GG C CUUUAUC U
+DM5000 AGUA AA GU A AGCUAAU AAA AAGCUU U UGGGU UCAUACCUCA AAA AU GGAA GGA UAA AU ACC UC C CUUUAUU N
+DM5220 AGUA AG GU C AGCUAA CU AAGCUA U CGGGC CCAUACCCCG AAA A UGAU GGU UUA AC CCC UU C CCCUACU A
+DM6160 AGCU UC UU A ACUCAGG GGU AGAGUG C GAGGC CCAUAACCUC GAG GU CCUA GGA UCG AA ACC UA G AGAAGCU A
+DM6280 GCUU CA GU A GCUCAGUA GGA AGAGCG U CAGUC UCAUAAUCUG AAG GU CGAG AGU UCG AA CCU CU C CUGGAGC A
+DM6900 GGGG UG GU G GCGCAGUU GGGC AGCGCG U AGGUC UCAUAAUCCU GAG GU CGAG AGU UCG AG CCU CU C UCACCCC A
+DM7740 AGCA GA GU G GCGCAGU GGA AGCGUG C UGGUC CCAUAACCCA GAG GU CCGA GGA UCG AA ACC UU G CUCUGCU A
+DN0660 GCCU CC UU A GCUCAGUA GGUA GCAGCG A UGGAC UGUUAAUCCA UAG GU CGCA GGU UCG AG CCC UG C AGGAGGC GCCA
+DN0680 GCCG CC GU A GCUCAGUA GGUA GGAGCG C UCGGC UGUUAACCGA GUG GU CGCA GGU UCG AG UCC UG C CGGCGGC G
+DN1140 GGCU UU UU A GCUCAGCA GGU AGAGCA A CCGGC UGUUAACCGG UUU GU CACA GGU UCG AG CCC UG U AAAAGCC GCCA
+DN1180 GGCU UU UU A GCUCAGCA GGU AGAGCA A CCGGC UGUUAACCGG UUU GU CACA GGU UCG AG CCC UG U AAAAGCC GCCA
+DN1230 GCCU AC UU A GCUCAGUU GGUU AGAGCA C CUGAC UGUUAAUCAG GGG GU CGCU GGU UCG AG UCC AG C AGUGGGC GCCA
+DN1350 UCCU CG GU A GCUCAAUU GGC AGAGCA G CCGGC UGUUAACCGG CAG GU UACU GGU UCG AG UCC AG U CCGGGGA G
+DN1351 UCCU CC GU A GCUCAAUU GGC AGAGCA G CCGGC UGUUAACCGG CAG GU UACU GGU UCG AG UCC AG U CGGGGGA G
+DN1500 UCCG CC UU A GCUCAGUU GGU AGAGCG C UUGAC UGUUAAUCAG GAU GU CGUC AGU UCG AG UCU GA C AGGCGGA
+DN1540 UCCA CA GU A GCUCAGU GGU AGAGCU A UCGGC UGUUAACCGA UCG GU CGCA GGU UCG AA UCC UG C CUGUGGA GCCA
+DN1541 UCCG CA GU A GCUCAGU GGU AGAGCU A UCGGC UGUUAACCGA UCG GU CGUA GGU UCG AA UCC UA C CUGCGGA G
+DN1570 UCCG CA GU A GCUCAGU GGU AGAGCA A UCGGC UGUUAACCGA UUG GU CGCA GGU UCG AA UCC UG C CUGCGGA GCCA
+DN1660 UCCU CU GU A GUUCAGUC GGU AGAACG G CGGAC UGUUAAUCCG UAU GU CACU GGU UCG AG UCC AG U CAGAGGA GCCA
+DN2520 UCCU UA AU A GCUCAGU GGU AGAGCA A UCGGC UGUUAACCGA UCG GU CGUA GGU UCG AA UCC UA C UUAAGGA G
+DN2600 UCCU UA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACCGA UUG GU CGUA GGU UCA AA UCC UA C CUGAGGA G
+DN2700 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACUGA CUG GU CGUA GGU UCG AA UCC UA C UUGGGGA
+DN2720 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACUGA CUG G CGUA GGU UCG AA UCC UA C UUGGGGA G
+DN2740 UCCU CA GU A GCUCAGU GGUA GAGUG G UCGGC UGUUAACCGA UUG GC CGUA GGU UCG AC UCC UA C UUGAGGA G
+DN2920 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACCGA UUG GU CGUA GGU UCG UA ACC UA C UUGGGGA G
+DN3200 UCCC CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACCGA UUG GU CGUA GGU UCA AA UCC UA U UUGGGGA G
+DN3320 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACUGU AUG GU CGUA GGU UCG AA UCC UA C UUGGGGA G
+DN3880 GCCU UU AU A GCUCAAC GGU AGAGCG G AAUAC UGUUAAUAUU UUG A UAGA UGU UCA AU UCA UC U UAAGGGC U
+DN3960 GCCC CU AU A GCUCAAU GGU AGAGCA U AAUAC UGUUAAUAUU AUG A UAGA UGU UCG AU UCA UC U UGGGGGC U
+DN4000 GUCC UU AU A GCUUAUC GGUU AAAGCA U CUCAC UGUUAAUGAG AAU A GAUG GGU UCA AU UCC UA U UAAGGAC G
+DN4080 GUCU UU AU G GCUUAGU GGUU AAAGCA U CUCAC UGUUAAUGAG AAU A CAUA GGU UCA AU UCC UA U UGAAGAC G
+DN4320 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACUGA CUG GU CGUA GGU UCG AA UCC UA C UUGGGGA G
+DN4400 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACUGA CUG GU CGUA GGU UCA AA UCC UA C UUGGGGA G
+DN4440 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACUGA CUG GU CGUA GGU UCG AA UCC UA C UUGGGGA G
+DN4500 UCUU UA GU A GCUCAGC GGUU AGAGCA A AUGGC UGUUAACUAU UGG GU CGUU GGU UCG AA UCC AA C CUAGAGA G
+DN4620 GUGC GU GU A GAUUAUAUUUGGU A AAAUCG U AAGGC UGUUAACUUU GAG A UGGU G UGU U U GC C CGCGGAC G
+DN4700 GGCC AA AU A GUUUAAC UU AAAACG U UGAGC UGUUAAUUCA AAA U UGCA G U AAU U UG C UUUGGCU U
+DN4800 UUAA UU GA A ACCAAA AA GAGGUA U AUCAC UGUUAAUGAU AUA AU UGAA UA UUA U UA UU C CAAUUAA G
+DN4880 UUAA UU GA A GCCAAA AA GAGGCG U AUCAC UGUUAAUGAU AUA AU UGAG U AUA A A CU C CAAUUAA G
+DN4980 UGAG UU GU A GCCUAAU GGA AAGGCG U UUGGC CGUUAACUAA AAG AG AGCA AGA UCA AU ACU UG U CGACUCA G
+DN5000 UGGG UU GU A GCCUAAU GGA AAGGCA A UUGGC CGUUAACCAG GAG AU AACA AGA UCA AU ACU UG U CAACUCA G
+DN5020 UGAG UU GU A GCCUAGU GGA AAGGCG U UUGGC CGUUAACUAA AAG AC AGCA AGA UCA AU ACU UG C CAGCUCA G
+DN5040 UGGG UU GU A GCUAAAU GUA AAGGCG C UUGGC CGUUAACCAA GAA AU AGUA GGA UAA AA ACC UA U CUUCCGA G
+DN5080 UGGG CU GU A GCUAAAU GUAA AAAGCG C UUGGC CGUUAACCAA GAA AU AAUA GGA UAA AU ACC UA U CUUCCCA G
+DN5100 UAGA UA GA U GCUCGCU GGUU UGAGUG C UUAGC UGUUAACUAA GAG UU UAAA GGA UCG AG GCC UU U CUGUCUA G
+DN5160 UAGA AU GA A GCUCGCU GGAU AGAGUG U UUAGC UGUUAACUAA AAU AU UACG GGA UCG AG GCC CG U CAUUCUA G
+DN5220 UAGG CA GA A GCCAAUU GGUG UUGGCA U UUAGC UGUUAACUAA AAU UG UAUG GGA UCG AA GCC CA U CUGUCUA G
+DN5280 UAGA UU GA A GCCAGUA AGU AGGGUA U UUAGC UGUUAACUAA AUU UU CGUA GGAAUUU GA UUCC UU C CAAUCUA G
+DN5281 UAGA UU GA A GCCAGUA AGU AGGGUA U UUAGU UGUUAACUAA AUU UU CGUA GGU UUG AA UCC UU C CAAUCUA C
+DN5282 UAGA UU GA A GCCAGUA AGU AGGGUA U UUAGC UGUUAACUAA AUU UU CGUA GGU UUG AA UCC UU C CAAUCUA G
+DN5320 UAGA UU GA A GCCAGUA AU AGGGUA U UUAGC UGUUAACUAA AUU UU CGUA GGU UUA AU UCC UG C CAAUCUA G
+DN5360 UAGA UU GA A GCCAGUU AGCU AGGGUG U UUAGC UGUUAACUAA AGU UU CGUG GGG GUG GA GCC CA C CAGUCUA G
+DN5880 UAGA UU GA A GCCAGUU GAUU AGGGUG C UUAGC UGUUAACUAA GUG UU UGUG GGU UUA AG UCC CA U UGGUCUA G
+DN6050 UCCU CC CU G GCGCAGUC GGC AGCGCG U UAGGC UGUUAACCUA CAG GU CGUU GGU UCG AA UCC AA C GGGAGGA G
+DN6051 UCCU CC CU G GCGCAGUC GGC AGCGCG U UAGGC UGUUAACCAU CAG G UGUU GGU UCG AA UCC AA C GGGAGGA G
+DN6060 GCUC GA UU A GCUCAGCU GGUU AGAGCA U GCGGC UGUUAACCGC AAG GU CGUA GGU UCG AU CCC UA C AUCGAGC G
+DN6160 GCCU GG AU G GCUAAAU GGC AGAGCG A GCGGC UGUUAACCGC UAG GU CCAU GGU UCG AU CCC AU G UCUAGGC A
+DN6280 GACU CC AU G GCCAAGUU GGUU AAGGCG U GCGAC UGUUAAUCGC AAG AU CGUG AGU UCA AC CCU CA C UGGGGUC G
+DN7100 UCCU CA GU A GCUCAGU GGU AGAGCG G UCGGC UGUUAACCGA UUG GU CGUA GGU UCG AA UCC UA C UUGGGGA G
+DN7740 GCCU CC GU G GCGCAAUU GGUU AGCGCG U UCGGC UGUUAACCGA AAG GU UGGU GGU UCG AG UCC AC C CGGGGGC G
+DN7920 GUCU CU GU G GCGCAAUC GGUU AGCGCG U UCGGC UGUUAACCGA AAG GU UGGU GGU UCG AG CCC AC C CAGGGAC G
+DN9990 GUCU CU GU G GCGCAAUG GGUU AGCGCG U UCGGC UGUUAACCGA AAG GU UGGU GGU UCG AG CCC AU C CAGGGAC G
+DN9991 GUCU CU GU G GCGCAAUC GGUU AGCGCG U UCGGC UGUUAACCGA AAG AU UGGU GGU UCG AG CCC AC C CAGGGAC G
+DP0220 CUCC GU GU A GCUCAGUU UGGU AGAGCG C CUGAU UUGGGAUCAG GAG GU CCAA GGU UCA AA UCC UU G UAUGGAG A
+DP0260 CUCC GA UU A GCUCAAUU GGCU AGAGUA C ACCGU UUGGGGCGGU GGG GU UGAA GGU UCG AG UCC UU C AUUGGAG ACCA
+DP0660 GGGC CU GU G GGGUAGCC UGGUCC AUCCUU U GGGAU UUGGGAUCCU GAG A CCCC AGU UCA AA UCU GG G CAGGCCC ACCA
+DP0680 GGGG CC AU A GGGUAGCC UGGUCU AUCCUU U GGGCU UUGGGAGCCU GAG A CCCC GGU UCA AA UCC GG G UGGCCCC A
+DP0740 GGGC CU GU G GGGUAGCC UGGUC AUCCUU U GGGAU UUGGGAUCCU GAA A CCCC AGU UCG AA UCU GG G CAGGCCC ACCA
+DP1140 CGGG AA GU G GCUCAGUU UGGU AGAGCA U UCGGU UUGGGACCGA AGG GU CGCA GGU UCA AA UCC UG U CUUCCCG ACCA
+DP1180 CGGG AA GU G GCUCAGUU UGGU AGAGCA U UCGGU UUGGGACCGA AGG GU CGCA GGU UCA AA UCC UG U CUUCCCG ACCA
+DP1260 CGGA AA GU A GCUUAGCU UGGU AGAGCA C UCGGU UUGGGACCGA GGG GU CGCA GGU UCG AA UCC UG U CUUUCCG ACCA
+DP1360 CGGG GU GU G GCGCAGCU UGGU AGCGCG C UUCGU UCGGGACGAA GAG GU CGUG GGU UCA AA UCC CG C CACCCCG A
+DP1400 CGGG GU GU G GCGCAGCU UGGU AGCGCG C UUCGU UCGGGACGAA GAG GC CGUG GGU UCA AA UCC CG C CACCCCG A
+DP1500 CGGG AA GU G GCUCAGUU UGGU AGAGCA C CUGGU UUGGGACCAG GGG GU CGCA GGU UCA AA UCC UG U CUUCCCG A
+DP1540 CGGG AA GU A GCUCAGCU UGGU AGAGCA C AUGGU UUGGGACCAU GGG GU CGCA GGU UCG AA UCC UG U CUUCCCG ACCA
+DP1560 CGGG GU AU G GCGCAGUC UGGU AGCGCG C ACCCU UGGGGUGGGU GAG GC CGUG GGU UCA AA UCC CG C UACUCCG ACCA
+DP1660 CGGC GA GU A GCGCAGCU UGGU AGCGCA A CUGGU UUGGGACCAG UGG GU CGGA GGU UCG AA UCC UC U CUCGCCG ACCA
+DP1661 CGGU GA UU G GCGCAGCC UGGU AGCGCA C UUCGU UCGGGACGAA GGG GU CGGA GGU UCG AA UCC UC U AUCACCG ACCA
+DP1662 CGGC AC GU A GCGCAGCC UGGU AGCGCA C CGUCA UGGGGUGUCG GGG GU CGGA GGU UCA AA UCC UC U CGUGCCG ACCA
+DP1700 CGGC GA GU A GCGCAGCU UGGU AGCGCA A CUGGU UUGGGACCAG UGG GU CGGA GGU UCG AA UCC UC U CUCGCCG ACCA
+DP1740 CGGU GA AU A GCGCAGUU UGGU AGCGCA U CUGGU UUGGGACCAG AGG GU CGGG GGU UCG AA UCC CU C UUCACCG ACCA
+DP1780 CGGU GA UU A GCGCAGCC CGGU AGCGCA U CUGGU UUGGGACCAG AGG GU CAAA GGU UCG AA UCC UU U AUCACCG ACCA
+DP2520 CGGG AU GU A GCGCAGUU UGGU AGCGCA U UGCAU UUGGGAUGCA AGG GU CGCA GGU UCG AA UCC UG U CAUCCCG A
+DP2600 CGGA GU AU A GUNNNNUU NGGU AGUGUA U CAUCU UGGGGUGAUG AAA GU CGUG GGU UCA AA UCC CG C UACUCAA A
+DP2601 AGGG AU GU A GCGCAGUU UGGU AGCGCG U UUGUU UUGGGUACAA AAU GU CGCA GGU UCG AA UCC UG U CAUCCCU A
+DP2680 AGGG AU GU A GCGCAGCU UGGU AGCGCG U UUGUU UUGGGUACAA AAU GU CACA GGU UCA AA UCC UG U CAUCCCU A
+DP2700 AGGG AU GU A GCGCAGCU UGGU AGCGCG U UUGUU UUGGGUACAA AAU GU CACA GGU UCA AA UCC UG U CAUCCCU A
+DP2720 AGGG AU GU A GCGCAGCU UGGU AGCGCG U UUGUU UUGGGUACAA AAU GU CACA GGU UCA AA UCC UG U CAUCCCU A
+DP2920 AGGG AU GU G GCGCAGCU UGGU AGCGCG U UUGUU UUGGGUACAA AAU GU CACA GGU UCA AA UCC UG U CAUCCCU A
+DP3000 AGGG AU GU A GCGCAGCU UGGU AGCGCG U UUGUU UUGGGUACAA AAU GU CACG GGU UCA AA UCC UG U CAUCCCU A
+DP3200 AGGG AU GU A GCGCAGCU UUGU AGCGCG U UUGUU UUGGGUACAA AAU GU CACA GGU UCA AA UCC UG U CAUCCCU A
+DP3880 CAGG UU AG A GCCAGGU GGU UAGGCG U CUUGU UUGGGUCAAG AAA UU GUUA UGU UCG AA UCA UA A UAACCUG A
+DP4000 CAGA UA GA A GCCAAAA GGU CAGGCG C UUUCU UUGGGAGAAA GAC CU AGUU AGU UCG AG UCU AU C CUAUCUG A
+DP4010 CAGA UA GA A GCCAAAA GGU CAGGCG C UUUCU UUGGGUGAAA GAU CU AGUU AGU UCG AG UCU AU C CUAUCUG A
+DP4030 CAGA UA AA A GCCAACC GGUG AGGCG C UUUCU UUGGGAGAAA GAG UU AGUU AGU UCG AU UCU AG C UUAUCUG A
+DP4040 ACGA UA GA A ACAUGUAU UGGUU CAUGUA C UUGCU UUGGGUGUGA GAG UU UGUU AGU UCG AA UCU AA C CUAUCCG A
+DP4060 CAGA UU GU C UCGUAAUU GGUU AUCGAG C CUACA UUGGGUGUAG GAU UU UGAG GGU UCA AG UCC UU C CAAUCUG A
+DP4070 CAGA UA AA A GCCAACC GGUG AAGGCA C UUUCU UUGGGAGAAA GAC UU AGUA AGU UCG AU UCU UG C UUAUCUG A
+DP4080 CAGA UA GA A GCCAAAA GGU CAGGCG C UUUCU UUGGGUGAAA GAU CU AGUU AGU UCG AG UCU AU C CUAUCUG A
+DP4440 CGAG GU GU A GCGCAGUC UGGUC AGCGCA U CUGUU UUGGGUACAG AGG GC CAUA GGU UCG AA UCC UG U CACCUUG A
+DP4480 AGGG AU GU A GCGCAGCU UGGU AGCGCG U UUGUU UUGGGUACAA AAU GU AACG GGU UCA AA UCC AG U CAUCCCU A
+DP4500 CAAG GU GU A GCGCAAUC UGGU AGCGCG U CUGCC UUGGGCGCAG AAA GU UACA GGU UCA AA UCC UG U CACCUUG A
+DP4620 CAGUUUA GU A GUUUAAU GA AGAAUG C UAGCU UUGGGGGUUG GGA G UCUC UG GUU UG GA G UUGGCUG G
+DP4700 CUAG AU AU A GUUUAGA GC AAAAUA U UGGCU UUGGGAGCUA AAG A CACU U UUA U G AG U UUUCUAG A
+DP4880 CAAG AG GU A GUUUAUUU UAU AAAAUA U UAAUU UUGGGGAUUA AUG A AAAA GA AAU U UC UU U UCUCUUG A
+DP4980 CAGG AG AU A GUUUAU UA AAAAUA G UAGCU UUGGGAGUUG UAG A UGCA AGU UUA AU UCU UG U UUUCCUG A
+DP5000 CAGA AA AU A GUUUAG UG AGAAUG A UAGCU UUGGGAGCUG UUG G UGUA AGU AUA AA GUCU UG C UUUUCUG A
+DP5040 CAAA GA AU A GUUUAA GA AAAACA A CAGCU UUGGGAGUUG UAG A CGUA AGU GAA AA CCU UA C UUCUUUG A
+DP5060 CAGA GG GU A GUUUAAU UU AGAAUC U UAGCU UUGGGAGUUA AGG G UGGG AGU UAA AA UCU CC U CUCUCUG A
+DP5080 CAGG AG AA A GUUUAAU AA AAAACC G CAGCU UUGGAAGUUG CAA U GUAA GG UAA G CC UU AUUCUCUUG A
+DP5090 CAGA GA AU A GUUUAAU GU AGAAUC U UAGCU UUGGGAGUUA AGG G UGAG AGU UGA AU UCU CU U UUCUCUG A
+DP5120 CGGG AG AG A AUUUAAA UU AGAAUG U UGGCU UUGGGGGUCA AUA G UGGA GGU UUG AG UCC UU C UUUCUCG A
+DP5160 CAGG AU AU A GUUUAG GU AGAAUG C CGGUU UUGGGGACCG GUG G UAAA GGU UAA AG UCC UU U UAUCCUG A
+DP5200 CAAG GA AU A GUUUAU GU AGAAUU C CAGCU UUGGGUGUUG GUG G UGAG GU UUA AU GU CU C UUCCUUG A
+DP5220 CAGA GA GU A GUUUAUU UG AAAAUA C CAGCU UUGGGAGCUG GAG A UGGA GGU UUG AG CCC UC C UUUUCUG A
+DP5280 CAAG AA GU A GUUUAAG UA AGAAUA U CAGCU UUGGGUGUUG GUG G UGGG GAG GUA GU UC CU U CUUCUUG A
+DP5281 CAAG AA GU A GUUUAAG UA AGAAUA U CAGCU UUGGGUGUUG AUG G UGGG GAG GUA GU UC CU U CUUCUUG A
+DP5320 CAAG AA GU A GUUUAA UU AGAAUA C CAGCU UUGGGUGCUG GUG G UGGG GA GUA GC UC CU U CUUCUUG A
+DP5360 CAGG GA AU A GUUUAA AU AGAACU U CAGCU UUGGGGGUUG AUG G UGAG AC UGC A GU UU C UUCCUUG A
+DP5880 CAGA GA AU A GUUUAAA UU AGAAUC U UAGCU UUGGGUGCUA AUG G UGGA G U UAA AG A C UU U UUCUCUG A
+DP6280 GGGC GU GU G GUCUAGU GGU AUGAUU C UCGCU UUGGGUGCGA GAG GC CCUG GGU UCA AU UCC CA G CUCGCCC C
+DP6980 GGGC AU UU G GUCUAGU GGU AUGAUU C UCGCU UUGGGUGCGA GAG GU CCCG AGU UCG AU UCU CG G AAUGCCC C
+DP6981 GGGC AU UU G GUCUAGU GGU AUGAUU C UCGCU UAGGGUGCGA GAG GU CCCG AGU UCA AU UCU CG G AAUGCCC C
+DP7560 GGCC GA AU G GUCUAGU GGU AUGAUU C UCGCU UUGGGUGCGA GAG GU CCCG GGU UCA AU CCC CG G UUCGGCC C
+DP7740 GGCU CA AU G GUCUAGG GGU AUGAUU C UCGCU UUGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G UUGAGCC C
+DP8040 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UAGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G ACGAGCC C
+DP8041 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UCGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G ACGAGCC C
+DP8100 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UCGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G ACGAGCC C
+DP8101 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UAGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G ACGAGCC C
+DP9160 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UCGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G ACGAGCC C
+DP9161 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UAGGGUGCGA GAG GU CCUG GGU UCA AA UCC CG G ACGAGCC C
+DP9990 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UAGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G ACGAGCC C
+DP9991 GGCU CG UU G GUCUAGG GGU AUGAUU C UCGCU UUGGGUGCGA GAG GU CCCG GGU UCA AA UCC CG G ACGAGCC C
+DQ0220 UGGG AA UU A GCCAAGUU GGU AAGGCA U AGCAC UUUGACUGCU AGA UG CAAA GGU UCG AG UCC UU U AUUCCCA G
+DQ0260 UGGG GA UU A GCUUAGCU UGGCCU AAAGCU U CGGCC UUUGAAGUCG AGA U CAUU GGU UCA AA UCC AA U AUCCCCU GCCA
+DQ0660 AGCC CA GU A GUGUAGU GGCCA AUCAUC U AGGUC UUUGGAACCU GGG A CCGC GGU UCG AA UCC GC G CUGGGCU A
+DQ1140 UGGG CU AU A GCCAAGC GGU AAGGCA A GGGAC UUUGACUCCC UCA UG CGCC GGU UCG AA UCC UG C UAGCCCA ACCA
+DQ1200 UGGG AU GU A GCCCAGC GGU AAGGCA A UAGAC UUUGACUCUA UCA UG CGAU GGU UCG AU CCC AU C CAUCCCA GCCA
+DQ1230 AGGC CC AU A GCCAAGC GGU AAGGCA A CGGAC UUUGACUCCG UCA CU CGUA GGU UCA AA UCC UG C UGGGCCU GCCA
+DQ1340 G UGGG CU AU G GUGUAAUU GGC AGCACG A CUGAU UCUGGUUCAG UUA G UCUA GGU UCG AG UCC UG G UAGCCCA G
+DQ1341 A UGGG CU AU G GUGUAAUU GGC AGCACG A GUGAU UCUGGUUCAU UUA G UCUA GGU UCG AG UCC UG G UAGCCCA G
+DQ1540 UGGG CU AU A GCCAAGC GGU AAGGCA A CGGAC UUUGACUCCG UCA UG CGUU GGU UCG AA UCC AG C UAGCCCA G
+DQ1660 UGGG GU AU C GCCAAGC GGU AAGGCA C CGGUU UUUGAUACCG GCA UU CCCU GGU UCG AA UCC AG G UACCCCA GCCA
+DQ1661 UGGG GU AU C GCCAAGC GGU AAGGCA C CGGAU UCUGAUUCCG GCA UU CCGA GGU UCG AA UCC UC G UACCCCA GCCA
+DQ2520 UGAG GC GU A GCCAAGU GGU AAGGCA A CGGGU UUUGGCCCUG UCA UU CGGA GGU UCG AA UCC UC C CGCCUCA G
+DQ2600 UGGG GC GU C GCCAAGU GGU AAGGCU G CAGGU UUUGGUCCUG UUA UU CGGA GGU UCG AA UCC UU C CGUCCCA G
+DQ2700 UGGG GC GU G GCCAAGU GGU AAGGCA G CGGGU UUUGGUCCCG UUA CU CGGA GGU UCG AA UCC UU C CGUCCCA G
+DQ2920 UGGG GC GU G GCCAAGU GGU AAGGCA A CGGGU UUUGGUCCCG CUA UU CGGA GGU UCG AA UCC UU C CGUCCCA G
+DQ3220 UGGG GC GU G GCCAAGC GGU AAGGCA G CAGGU UUUGAUCCUG UUA UU CGGA GGU UCG AA UCC UU C CGUCCCA G
+DQ3240 UGGG GC GU A GCCAAGC GGU AAGGCA A CGGGU UUUGGUCCCG CUA UU CGGA GGU UCG AA UCC UU C CGUCCCA G
+DQ3640 UGGG GC AU A GCCAAGU GGU AAGGCA U UGGAC UUUGACUCCA AGA UG CAUG GGU UCG AA UCC UA U UGCCCCA G
+DQ3880 UAUG UU GU C GACUAAUC GGU AAGUCA U AAAUU UUUGGUAUUU AUA U UGGG UGU UCG AG UCG CC C CAACAUA A
+DQ4000 UGAG UC GU A GACAAUA GGU AAGUUA C CAAAA UUUGAGUUUG GAG U UCUU UGU UCG AA UCA AA G CGAUUCA A
+DQ4030 UGAA UU GU A GACUAAUA GGU AGUCC C CAAAA UUUGAGUUUG GCU U UA GGUG UGU UCG AG UCA CC C CAAUUCA A
+DQ4040 UGGG UU GU U GACUAAUA GGU AAGUCC C UGAAA UUUGACUUCA GUC UA UGUA AGU UCG AA UCU UA C CAUCCCA U
+DQ4050 UGAA UC GU A GACUAAUA GGU AAGUCA C CAAAA UUUGAGUUUG GAA UU UGUU UGU UCG AA UCA AA C CGGUUCA A
+DQ4070 UGAA UU GU A GACUAAUA GGU AAGUCC C CAAAA UUUGAGUUUG GCU U UA GGUG UGU UCG AA UCA CC C CAAUUCA A
+DQ4080 UGAG UC GU A GACUAAUA GGU AAGUUA C CAAAA UUUGAGUUUG GAG U UGUU UGU UCG AA UCA AA C CGAUUCA A
+DQ4440 UGGA GU AU A GCCAAGU GGU AAGGCA U CGGUU UUUGGUAUCG GCA UG CAAA GGU UCG AA UCC UU U UACUCCA G
+DQ4441 UGGA GU AU A GCCAAGU GGU AAGGCA U CGGUU UUUGGUACCG GCA UG CAAA GGU UCG AA UCC UU U UACUCCA G
+DQ4500 UGGA GU AU A GCCAAGU GGU AAGGCA U CGGCC UUUGAUGCCG AGA AA CAAA GGU UCG AA UCC UU U UACUCCA G
+DQ4700 UAUA AA GA A GUAUUGU GGUACG U AGGAC UUUGAUCCCU AAA G AGAA AGU UAA AG CU UU U CUUUAUA A
+DQ4880 UAUA UU UU G GUGUAU GA UGCACA A AAGUU UUUGAUACUU UUA G AAAU AGU UUA AU UCU AU U AAAUAUA A
+DQ4960 UAUA UU UU G GUGUAC GA UGCACA A AAGUU UUUGAUACUU UUA G UAAU AGU UUA AU UCU AU U AAAUAUA A
+DQ4980 UAGA AA AU A GUUUAACC AGU AAAACU A AGAAA UUUGAAUUCU UUA A UACA AGU GCA AC CCU UG U UUUUCUA A
+DQ5000 UAGA AA GU A GUAUAAC GGU AAAACC A AGAAU UUUGAUUUCU UAA A UAUA AGU UCA AC UCU UA U CUUUCUA A
+DQ5040 UAAG GA GU A GUUUAAU GGA AAAACG A GGAAC UUUGACUUCC UUG U UGUG GGU UCA AU UCC CA U CUCCUUA A
+DQ5080 UAAG GA UU A GUUUAAUU GGA AAAACG A AGAGC UUUGACUUCU UCU G CUUG GGU CCA UU CCC CA C UCCUUA A
+DQ5120 UAGG AA GU G GUAUAG GGG AGUACG G AGGGU UUUGAUCUCU CAG G UGCA GGU UCA AU UCC UG U CUUUCUA A
+DQ5160 UAAG GA GU A GUAUAAA GGA AGUACA A AGGGU UUUGAUCUCU UAA G UAUA GGU UCA AU UCC UA U CUCUUUA G
+DQ5220 UAGA AA AU A AUAUAGA GGG AGUAUG A AGAGU UUUGAUCUCU UCU G UGUA GGU UCG AU UCC UA C UUUUCUA G
+DQ5280 UAGG AU AG G GUGUAUU GGU AGCACG G AAAAU UUUGAAUUCU UAG G UGUA GGU UCA AU UCC UA U UGUCCUA G
+DQ5281 UAGG AU AG G GUGUAUU GGU GGCACG G AGAAU UUUGAAUUCU UAG G UGUA GGU UCA AU UCC UA U UGUCCUA G
+DQ5320 UAGG AU AAGG UGUUUA GGU GCACGG A GAAAU UUUGAAUUCU UAA G UGUA GGU UCA AU UCC UA U UGUCCUA G
+DQ5360 UAGA AU UU G GUGUAAUU GGG AGCACG A AGAGU UUUGGAUUCU UAG G AGUA GGU UCG AU UCC UA U AGUUCUA G
+DQ5880 UAGG AU GG G GUGUGAUA GGU GGCACG G AGAAU UUUGGAUUCU CAG G GAUG GGU UCG AU UCU CA U AGUCCUA G
+DQ6050 GGUC CU AU A GUGUAGU GGUU AUCACU U CGGAC UUUGAAUCCG AAA A CCCA GGU UCG AA UCC UG G UAGGACC A
+DQ6051 GGGC GU GU A GCUCAGU GGU AGAGCG C CCUGU UUUGCAUACG GAG GC CUAG GGU UCA AA CCC CU A CUCGUCC A
+DQ6060 GGUU CC AU A GUAUAGU GGUU AGUACU G GGGAC UUUAAAUCCC UUG A CCUG GGU UCG AA UCC CA G UGGGACC U
+DQ6160 GGUU UU AU A GUGUAAUU GGUU AGCACC C AGGAC UUUGAAUCCU GUA A UCUG AGU UCG AG UCU CA G UAGAACC A
+DQ6280 GGUC CU AU A GUGUAGU GGUU AUCACU U UCGGU UUUGAUCCGG ACA A CCCC GGU UCG AA UCC GG G UAGGACC U
+DQ6281 GGUC CU AU A GUGUAGU GGUU AUCACU U UCGGU UCUGAUCCGA ACA A CCCC AGU UCG AA UCC GG G UGGGACC
+DQ9990 GGUU CC AU G GUGUAAU GGUU AGCACU C UGGAC UCUGAAUCCA GCG A UCCG AGU UCA AA UCU CG G UGGAACC U
+DQ9991 GUCU CU GU G GCGCAAUC GGUU AGCGCG U UCGGC UGUUAACCGA AAG AU UGGU GGU UCG AG CCC AC C CAGGGAC G
+DQ9992 GGUC CC AU G GUGUAAU GGUU AGCACU C UGGAC UUUGAAUCCA GCG A UCCG AGU UCA AA UCU CG G UGGGACC U
+DR0220 GUCC CG CU G GUGUAAU GGAU AGCAUA C GAUCC UUCUAAGUUU GCG G UCCU GGU UCG AU CCC AG G GCGGGAU ACCA
+DR0660 GGGC CC GU G GCCUAGUC UGGAU ACGGCA C CGGCC UUCUAAGCCG GGG AU CGGG GGU UCA AA UCC CU C CGGGUCC G
+DR1140 GCGC CC GU A GAUCAAUU GGAU AGAUCG C UUGAC UACGGAUCAA AAG GU UGGG GGU UCG AG UCC CU C CGGGCGC ACCA
+DR1141 GCCC AU GU A GCUCAGUA GGAU AGAGCA C GCGCC UUCUAAGCGU GAG GU CGGA AGU UCG AG CCU UC U CGUGGGC ACCA
+DR1180 GCGC CC GU A GAUCAAUU GGAU AGAUCG C UUGAC UACGGAUCAA AAG GU UGGG GGU UCG AG UCC CU C CGGGCGC ACCA
+DR1181 GCCC AU GU A GCUCAGUA GGAU AGAGCA C GCGCC UUCUAAGCGU GAG GU CGGA AGU UCG AG CCU UC U CGUGGGC ACCA
+DR1230 GUCC GA AU A GCUCAGCU GGAU AGAGCA A UAGCC UUCUAAGCUA UCG GU CGGG GGU UCG AA UCC CU C UUCGGAC GCCA
+DR1260 GCGC CC AU A GAUCAAUU GGAU AGAUCG U UUGAC UACGGAUCAA AAG GU UGAG GGU UCG AU UCC UU C UGGGCGC GCCA
+DR1500 GCAC CC AU A GCGCAACU GGAU AGAGUG U CUGAC UACGAAUCAG AAG GU UGUA GGU UCA AG UCC UA C UGGGUGC A
+DR1540 GCGC CC GU A GCUCAAUU GGAU AGAGCG U UUGAC UACGGAUCAA AAG GU UAGG GGU UCG AC UCC UC U CGGGCGC GCCA
+DR1660 GCGC CC GU A GCUCAGCU GGAU AGAGCG C UGCCC UCCGGAGGCA GAG GU CUCA GGU UCG AA UCC UG U CGGGCGC GCCA
+DR1661 GCGC CC UU A GCUCAGUU GGAU AGAGCA A CGACC UUCUAAGUCG UGG GC CGCA GGU UCG AA UCC UG C AGGGCGC GCCA
+DR1662 GCGC CC UU A GCUCAGUU GGAU AGAGCA A CGACC UUCUAAGUCG UGG GC CGCA GGU UCG AA UCC UG C AGGGCGC GCCA
+DR1663 GCAU CC GU A GCUCAGCU GGAU AGAGUA C UCGGC UACGAACCGA GCG GU CGGA GGU UCG AA UCC UC C CGGAUGC ACCA
+DR1664 GUCC UC UU A GUUAAAU GGAU AUAACG A GCCCC UCCUAAGGGC UAA U UGCA GGU UCG AU UCC UG C AGGGGAC ACCA
+DR1700 GCGC CC GU A GCUCAGCU GGAU AGAGCG C UGCCC UCCGGAGGCA GAG GU CUCA GGU UCG AA UCC UG U CGGGCGU ACCA
+DR1780 GCGC CC GU A GCUCAGCU GGAU AGAGCG C UGCCC UCCGGAGGCA GAG GU CACA GGU UCG AA UCC UG U CGGGCGC ACCA
+DR2440 GAGC UU GU A GCUCAGU GGACU AGAGCA C AUGGC UACGAACCAU GGG GU CGGG GGU UCG AA ACC CU C CUGGCUC G
+DR2480 GGGU GU GU A GCUCAGU GGACU AGAGCA C GUGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUCGCCC G
+DR2520 GGGC UU GU A GCUCAGU GGACU AGAGCA C GUGGC UACGAACUAC GGA GU CAGG GGU UCG AA UCC CU U CUUGCCC G
+DR2540 GGGC UC AU C GUCUAAU GGAUC AGGACA G GGACC UUCUAAGUCU CUA A UGUA GGU UCG AA UCC UA C UGAGCCU A
+DR2600 GGGU UU GU A GCUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUUGCCC A
+DR2601 GGGU UU GU A GCUCAGU GGAUU AGAGCU C AUGGU UCCGAAUCAU GAA GU CAAG GGU UCG AA UCC CU U CUAACCC U
+DR2602 GCGU CC AU C GUCUAAA GGAU AGGACA G AGGUU UUCUAAACCU CCA G UAUA GGU UCG AA UCC UA U UGGACGU A
+DR2680 GCGU CC AU U GUCUAAU GGAU AGGACA G AGGUC UUCUAAACCU UUG G UAUA GGU UCA AA UCC UA U UGGACGC A
+DR2700 GCGU CC AU U GUCUAAU GGAU AGGACA G AGGUC UUCUAAACCU UUG G UAUA GGU UCA AA UCC UA U UGGACGC U
+DR2701 GGGC CU GU A GCUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUCGCCC A
+DR2720 GGGC CU GU A GCUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUCGCCC A
+DR2740 GGGC CU GU A GAUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GGU GU CGUG GGU UCG AA UCC CU G CUCGCCC A
+DR2920 GGGC CU GU A GCUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUCGCCC A
+DR2921 GCGU CC AU U GUCUAAU GGAU AGGACA G AGGUC UUCUAAACCU UUG G UAUA GGU UCA AA UCC UA U UGGACGC A
+DR3040 GGGC CU GU A GCUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GAU GU CGGG GGU UCG AA UCC CU C CUAGCCC A
+DR3200 GGGC UC GU A GCUCAGA GGAUU AGAGCA C GCGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUCGCCC A
+DR3201 GCGU CC AU U GUCUAAU GGAU AGGACA G AGGUC UUCUAAACCU UUG G UAUA GGU UCA AA UCC UA U UGGACGC A
+DR3280 GCGU CC AU A GUCUAAU GGAU AGGACA U AGGUC UUCUAAACCU UUG G UAUA GGU UCA AA ACC UA U UGGACGC A
+DR3320 GGGC CU GU A GCUCAGA GGAUU AGAGCA C GUGGC UACGAACCAC GGU GU CGGG GGU UCG AA UCC CU C CUCGCCC A
+DR3321 GCGU CC AU U GUCUAAU GGAU AGGACA G AGGUC UUCUAAACCU UUG G UAUA GGU UCA AG UCC UA U UGGACGC A
+DR3880 UUCU UA UU A GCUCAAU GGU AGAGCA A AAUAC UUCUAAUAUU UUG A UCUA AGU UCG AG UCU UA G AUAAGAA G
+DR3920 UUCU CA UU A GCUCAAA GGA AGAGCA G GAUAC UUCUAAUAUU CCG A UUUU AGU UCG AA UCU AA A AUGAGAA U
+DR4000 GCUC UC UU A GCUUAAU GGUU AAAGCA U AAUAC UUCUAAUAUU AAU AU UCCA UGU UCA AA UCA UG G AGAGAGU A
+DR4001 AUAU CU UU A AUUUAAU GGU AAAAUA U UAGAA UACGAAUCUA AUU A UAUA GGU UCA AA UCC UA U AAGAUAU U
+DR4080 GCUC UC UU A GCUUAAU GGUU AAAGCA U AAUAC UUCUAAUAUU AAU AU UCCA UGU UCA AA UCA UG G AGAGAGU A
+DR4500 GUGC UU GU A GCUCAAUU GGAU AGAGCA C CAAAC UACGGAUUUG GGG GU UGAG AGU UCA AA UCU UU C CAAGCAU G
+DR4501 GCAU UC UU A GCUCAGUU GGAU AGAGCA A CAACC UUCGAAGUUG AUG GU CACA GGU UCA AA UCC UG U AGGAUGC G
+DR4502 GCAU UC UU A GCUCAGUU GGAU AGAGCA A CAACC UUCUAAGUUG AAG GU CACA GGU UCA AA UCC UG U AGAAUGC G
+DR4800 AAAU AU GA A GCGAUUU AUUGCA A UUAGU UUCGACCUAA UCU U AGGU G AAA UU C AC CCCAUAUUU U
+DR4880 GAAU AU GA A GCGAUUA AUUGCA G UUAGU UUCGACCUAA CCU U AGGU A UUA UA U AC C CUUAUUU U
+DR5040 UGAG AG UU A GUUUAA GA AGAACC C CUGAU UUCGGCUCAG AAG G CUUU GGU UAA AG UCC AA A ACUCUUU A
+DR5080 NAAG AG UU A GUUUAA GG AGAACC U CUGAU UUCGGCUCAG AGG G UUUU GGU UCA AC CCC AA A ACUCUUG N
+DR5100 AGGU GA UU A GUCUAA GU AAAAUA C UUGAU UUCGGCUCAA GAG U CUGU GGU UAA AG UCC AC A AUUGCCU A
+DR5120 GAGU UG UU A GUCUAA AC AAGACA G UUGUU UUCGGCACAA CAA A UUAU GGU UAA AC CCC AU A AUAACUC U
+DR5220 AGAA AG UU A GUCUAA CU AAGACA G CUGGU UUCGACCCAG CAA A UUAU AGA CCC AC CU AU A ACUUUCU U
+DR5280 UGGU AA UU A GUUUAA AU AAAAUU A AUGAU UUCGACUCAU UAG A UUAU GAU AAU AA UC AU A AUUACCA A
+DR5320 UGGU AA UU A GUUUAA AA AAAAUU A AUGAU UUCGACUCAU UAG A UUAU GAU GCU GU UC AU A AUUACCA A
+DR5360 UGGU AC UU A GUUUAA AAU AAAAUA A AUGAU UUCGACUCAU UAG A UUAU GAU UUA AU UC AU A AUUACCA A
+DR5880 UGGU AU AU A GUUUAA AC AAAACG A AUGAU UUCGACUCAU UAA A UUAU G AUA AU C AU A UUUACCA A
+DR6050 GCCC CC GU A GCCCAAU GGAU AAGGCG U UCGCU UCCUAAGCGA AAG AU UGCG GGU UCG AG UCC CG C CGGAGGU A
+DR6051 GCUC CA GU G GCCUAAU GGAU AUGGCU U UGGAC UUCUAAUCCA AAG GU UGCG GGU UCG AG UCC CG U CUGGAGU A
+DR6052 GUCC GU GU G GCUCAAU GGA AGAGCA U CUGAC UACGGAUCAG AGG GU UGCA GGU UCG AA UCC UG U CACGGAU G
+DR6160 GGGA CU AU A GUUUAGUU GGAU AUAACG A CCGGC UACGAACCGG UAG GU CUCA GGU UCG AC CCC UG A UGGUCUC G
+DR6161 GCCC GU UU A GCAAAGUU GGA AUUGCG G CAGCC UUCUAAGCUG CAG GU CGUG GGA UCG AG ACC CA C AAUGGGU G
+DR6280 UUCC UC GU G GCCCAAU GGUC ACGGCG U CUGGC UACGAACCAG AAG AU UCCA GGU UCA AG UCC UG G CGGGGAA G
+DR6281 GCUC GC GU G GCGUAAU GGC AACGCG U CUGAC UUCUAAUCAG AAG AU UAUG GGU UCG AC CCC CA U CGUGAGU G
+DR6282 GUUC CG UU G GCGUAAU GGU AACGCG U CUCCC UCCUAAGGAG AAG AC UGCG GGU UCG AG UCC CG U ACGGAAC G
+DR6320 GGUC UC GU G GCCCAAU GGUU AAGGCG C UUGAC UACGAAUCAA GAG AU UCCA GGU UCG AC UCU UG G CGGGAUC G
+DR6321 GGUC UC GU G GCCCAAU GGUU AAGGCG C UUGAC UACGGAUCAA GAG AU UCCA GGU UCG AC UCC UG G CGGGAUC G
+DR7560 GGCC GC GU G GCGCAAU GGAU AACGCG U CUGCC UACGGAGCAG AAG AU UGCA GGU UCG AA UCC UG C CGUGGUC G
+DR7740 GGUC CU GU G GCGCAAU GGAU AACGCG U CUGAC UACGGAUCAG AAG AU UCCA GGU UCG AC UCC UG G CAGGAUC G
+DR7741 GACC GU GU G GCCUAAU GGAU AAGGCG U CGGAC UUCGGAUCCG AAG AU UGCA GGU UCG AA UCC UG U CACGGUC G
+DS0220 GGAG GC GU G GCAGAGU GGUUU AAUGCA C CGGUC UUGAAAACCG GC AGU CGCUCC GGCG ACU CAUA GGU UCA AA UCC UA U CGCCUCC G
+DS0260 GGAA GG UA G GGCGUAGU GGU ACGCAA C UAGUC UUGAAAACUA GC CCGCUGU AGU G AUA CGG UGAU GGU UCG AC UCC AU U ACCUUCC UCCA
+DS0261 GGAA AA GC AAAUAGACU GGCG ACUAAA C CCGAU UGGAAAUCGG UU GAG UAAUAGC AAUAUUG CCU UAUG GGU UCA AC UCC CA U CUUUUCC GCCA
+DS0440 GUCG UG GU A GCCAAGCC UGGCCC AAGGCG C AGGGU UGCUAACUCU GU GGC GUA CA GCC U CCGG GGU UCG AA UCC CC G CCACGAC G
+DS0680 GCCG GG GU G GCCCAGCC UGGU AGGGCG U CGGCC UGCUAAGCCG AU GAU CC GUU AA GG AUCG CGCG GGU UCA AA UCC CG U CCCCGGC G
+DS0860 GCCG GG GU G CCCGAGC GGACC AAGGGG G UAGGC UCGAGACCUA CU GCC UC UCC GA GGCA CGCG GGU UCA AA UCC CG C CCCCGGC G
+DS1140 GGAA GA UU A CCCAAGUC CGGCUG AAGGGA U CGGUC UUGAAAACCG AGA GUC GG GGA AA CC GAG CGGG GGU UCG AA UCC CU C AUCUUCC GCCA
+DS1141 GGGU UA AU A CUCAAGUU GGUG AAGAGG A CACCC UGCUAAGGUG UUA GGU CGG UCU CCG GCG CGAG GGU UCG AG UCC CU C UUAACCC GCCA
+DS1180 GGAA GA UU A CCCAAGUC CGGCUG AAGGGA U CGGUC UUGAAAACCG AGA GUC GGG GAA A CCC GAG CGGG GGU UCG AA UCC CU C AUCUUCC GCCA
+DS1230 GGAG CG AU A CUCAAGA GGCCG AAGAGG G CGCAC UGCUAACGCG UUAGACG GU UAA C CC CGUG CGAG GGU UCA AA UCC CU C UCGCUCC GCCA
+DS1231 GGAG GA AU A CCCAAGA GGCUG AAGGGA U CGGUC UUGAAAACCG ACA GGG U GUA AA A GCCG CGGG GGU UCA AA UCC CU C UUCCUCC GCCA
+DS1250 GGAA GU AU A CCCAAGUCUCGGUUG AAGGGG G CGGUC UCGAAAACCG UUAGAUG GA GUA A UC CAUG CAAG AGU UCG AA UCU CU U UACUUCC GCCA
+DS1260 GGAA GA UU A CCCAAGUC UGGUUG AAGGGA U CGGUC UUGAAAAUUG ACA GGC GGU GAA A GCC GCG CGGG GGU UCG AA UCC CU C AUCUUCC GCCA
+DS1500 GGAG AG UU G GCAGAGC GGU AAUGCA G CGGAC UCGAAAUCCG CCG AAC CAAUGUU GAAUUG GUG CGCA GGU UCA AA UCC UG U ACUCUCC U
+DS1520 GGAG AG UU G GCAGAGC GGU AAUGCA G CGGAC UCGAAAUCCG CCG AGC CAAUGUU GAAUUG GGU CGCA GGU UCA AA UCC UG U ACUCUCC U
+DS1540 GGAG AG CU G UCCGAGU GGUCG AAGGAG C ACGAU UGGAAAUCGU GU AGG CGGUCAA C UCCG UCU CAAG GGU UCG AA UCC CU U GCUCUCC GCCA
+DS1541 GGAG GA AU A CCCAAGUC UGGCUG AAGGGA U CGGUC UUGAAAACCG AC AGG GUG UCA A AGC CCG CGGG GGU UCG AA UCC CU C UUCCUCC GCCA
+DS1542 GGAG AA GU A CUCAAGU GGCUG AAGAGG C GCCCC UGCUAAGGGU GUA GGU CGU GUA A GCG GCG CGAG GGU UCA AA UCC CU C CUUCUCC GCCA
+DS1570 GGAG AG CU G UCCGAGU GGUCG AAGGAG C ACGAU UGGAAAUCGU GU AGG CGU GAA UA GCG CCU CAAG GGU UCG AA UCC CU U GCUCUCC GCCA
+DS1660 GGAG AG AU G CCGGAGC GGCUG AACGGA C CGGUC UCGAAAACCG GA GUA GGG GCA A CUC UAC CGGG GGU UCA AA UCC CC C UCUCUCC GCCA
+DS1661 GGAA GU GU G GCCGAGC GGUUG AAGGCA C CGGUC UUGAAAACCG GC GAC CC GAA A GG GUU CCAG AGU UCG AA UCU CU G CGCUUCC GCCA
+DS1663 GGUG AG GU G GCCGAGA GGCUG AAGGCG C UCCCC UGCUAAGGGA GU AUG CGGUCAA AAGCUG CAU CCGG GGU UCG AA UCC CC G CCUCACC GCCA
+DS1664 GGUG AG GU G UCCGAGU GGCUG AAGGAG C ACGCC UGGAAAGUGU GU AUA CG GCA A CG UAU CGGG GGU UCG AA UCC CC C CCUCACC GCCA
+DS2180 GGAG AG AU G GCCGAGU GGUUG AAGGCG C AGCAC UGGAAAUGCU GU UUA AGG UUU UC CCU UAA CGAG GGU UCG AA UCC CU C UCUCUCC G
+DS2480 GGAG UG AU G UCUGAGU GGCCG AAAGAG C UCGAU UGCUAAUCGA GU AUA CAG CUU C CUG UAC CGAG GGU UCG AA UCC CU C UCACUCC G
+DS2520 GGAG AA GU G UCUGAGU GGUCG AAAGAG C UCGAU UGCUAAUCGA GU GUG UCU AAU AAA CAC CGAG GGU UCA AA UCC CU U CUUCUCC U
+DS2521 GGAG AG GU G UCUGAGU GGUUU AAAGUA C UGGUC UUGAAAACCA GC GUA GU UUU U GC UAC CGAG GGU UCG AA UCC CU C CUUCUCC G
+DS2600 GGAG AG AU G GCCGAGU GGUUU AUGGCG U CGGUC UUGAAAACCG AU AUA GUUUUUA AGAU UAU CGAG GGU UCA AA UCC CU C UCUCUCC U
+DS2601 GGAG AG AU G GCCGAGU GGACG AAAGCG G CGGAU UGCUAAUCCG UU GUA CAAGCUU UUUG UAC CGAG GGU UCG AA UCC CU C UCUCUCC G
+DS2602 GGAA AG AU G GUUGAGU GGUUU AAGGCG U AGCAU UGGAAAUGCU AU GUA GGCUUUU GGUC UAU CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS2640 GGAG AG AU G GCUGAGU GGUUG AUAGCU C CGGUC UUGAAAACCG GU AUA GUUCUAG GAAC UAU CGAG GGU UCG AA UCC CU C UCUCUCC U
+DS2680 GGAG AG AU G GCUGAGU GGACU AAAGCG G CGGAU UGCUAAUCCG UU GUA CAA UUU UU UUG UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS2700 GGAG AG AU G GCUGAGU GGACU AAAGCG G CGGAU UGCUAAUCCG UU GUA CAA UUU UU UUG UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS2701 GGAG AG AU G GCCGAGC GGUUC AAGGCG U AGCAU UGGAACUGCU AU GUA GAC UUU U GUU UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS2702 GGAG AG AU G GCUGAGU GGUUG AUAGCU C CGGUC UUGAAAACCG GU AUA GUUCUAG GAAC UAU CGAG GGU UCG AA UCC CU C UCUCUCC U
+DS2720 GGAG AG AU G GCUGAGU GGUUG AUAGCU C CGGUC UUGAAAACCG GU AUA GUUCUAG GAAC UAU CGAG GGU UCG AA UCC CU C UCUCUCC U
+DS2721 GGAG AG AU G GCCGAGC GGUUC AAGGCG U AGCAU UGGAACUGCU AU GUA GAC UUU U GUU UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS2722 GGAG AG AU G GCUGAGU GGACU AAAGCG G CGGAU UGCUAAUCCG UU GUA CAA UUU UU UUG UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS2920 GGAG AG AU G GCUGAGU GGACU AAAGCG G CGGAU UGCUAAUCCG UU GUA CGA GUU AA UCG UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS2921 GGAG AG AU G GCCGAGU GGUUG AAGGCG U AGCAU UGGAACUGCU AU GUA GGC UUU U GUU UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS2922 GGAG AG AU G GCUGAGC GGUUG AUAGCC C CGGUC UUGAAAACCG GUA UAG UUUUAAC AAAGAAUCUA CGAG GGU UCG AA UCC CU C UCUCUCC U
+DS3200 GGAG AG AU G GCUGAGU GGUUG AUAGCU C CGGUC UUGAAAACCG GUA UAG UUCGAAC AAAGAAUCUA CGAG GGU UCG AA UCC CU C UCUCUCC U
+DS3240 GGAG AG AU G GCUGAGU GGACU AAAGCG U UGGAU UGCUAAUCCA UU GUA CGA GUU AA UCG UAC CGAG GGU UCG AA UCC CU C UCUUUCC C
+DS3280 GGAG AG AU G GCUGAGU GGUUG AUAGCU C CGGUC UUGAAAACCG GC AUA GUUCUUUAUUCAGAAC UAU CGAG GGU UCG AA UCC CU C UCUCUCC U
+DS3281 GGAG AG AU G GCCGAGU GGUUG AAGGUG U AGCAU UGGAACUGCU AU GUA GGC UUU U GUU UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS3880 AGAG AG UU G GCUGAGU GGU AAGGCG A CUAGC UUGAGUCUAG UU AAG UU AAA AC UUU CAUA UGU UCG AA UCA UA U ACUCUCU G
+DS3881 GGGA AA GU UUCCAUG GGUA GGGUAA G AUAUU UGCUAAAUAU UG UGC G UUU G C ACA UAGA UGU UCG AA UCA UC U CUUUCCC G
+DS3960 GGAA AA GU UGCCAUA GGU A AGGUAA G AUAUU UGCUAAAUAU UG UGU U UAA G C ACC UAGG UGU UCG AG UCA CC U CUUUUCC G
+DS4000 GGAA AA UU A ACUAUA GGU AAAGUGGA UUAUU UGCUAAGUAA UU GAA UU GUA AA UUCU UAUG AGU UCG AA UCU CA U AUUUUCC G
+DS4001 GGAU GG UU G ACUGAGU GGUUU AAAGUG U GAUAU UUGAGCUAUC AU UAG UCU UUA U UGG CUA CGUA GGU UCA AA UCC UA C AUCAUCC G
+DS4030 GGAA AA UU G AUCAUC GGCA AGAUAAG UUAUU UACUUAAUAA UA GAA U AUU A U UUCU GAGG AGU UGA AA UCU CC U AUUUUCC G
+DS4080 GGAU GG UU G ACUGAGU GGUUU AAGGUG U GAUAU UUGAGCUAUC AU UAG UU UAA U AA CUA CGUA GGU UCA AA UCC UA C AUCAUCC G
+DS4081 GGAA AA UU C ACCAUA GGUA AGGUAAA UUAUU UGCUAUGUAA UU GAA U UUA UU A UUCU UAUG AGU UCG AA UCU CA U AUUUUCC G
+DS4240 GGAG GG AU G GCUGAGU GGCUU AAGGCA U UGGUU UGCUAAAUCG AC AUA CAA GAA GA UUG UAU CAUG GGU UCG AA UCC CA U UUCCUCC G
+DS4241 GGAU GG AU G UCUGAGC GGUUG AAAGAG U CGGUC UUGAAAACCG AA GUA UUU CUA G GAA UAC CGGG GGU UCG AA UCC CU C UCCAUCC G
+DS4360 GGAG AG AU G GCCGAGU GGUUU AAGGCG U AGCAU UGGAACUGCU AU GUA GGC UUU U GUU UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS4361 GGAU GG AU G UCUGAGC GGUUG AAAGAG U CGGUC UUGAAAACCG AA GUA UUG AUA A GGA UAC CGGG GGU UCG AA UCC CU C UCCAUCC G
+DS4362 GGAG GU AU G GCUGAGU GGCUU AAGGCA U UGGUU UGCUAAAUCG AC AUA CAAUAAG AUUG UAU CAUG GGU UCG AA UCC CA U UUCCUCC G
+DS4400 GGAG GU AU G GCUGAGU GGCUU AAGGCA U UGGUU UGCUAAAUCG AC AUA CAA GAA GA UUG UAU CAUG GGU UCG AA UCC CA U UUCCUCC G
+DS4440 GGAU GG AU G UCUGAGC GGUUG AAAGAG U CGGUC UUGAAAACCG AA GUA UUG AUA G GAA UAC CGGG GGU UCG AA UCC CU C UCCAUCC G
+DS4441 GGAG GU AU G GCUGAGU GGCUU AAGGCA U UGGUU UGCUAAAUCG AC AUA CAA GAA GA UUG UAU CAUG GGU UCG AA UCC CA U UUCCUCC G
+DS4442 GGAG AG AU G GCCGAGU GGUUC AAGGCG U AGCAU UGGAACUGCU AU GUA GGC UUU U GUU UAC CGAG GGU UCG AA UCC CU C UCUUUCC G
+DS4480 GGAG GU AU G GCUGAGU GGCUU AAGGCA U UGGUU UGCUAAAUCG AC AUA CAA GAA GA UUG UAU CAUG GGU UCG AA UCC CA U UUCCUCC G
+DS4481 GGAU GG AU G UCUGAGC GGUUG AAAGAG U CGGUC UUGAAAACCG AA GUA UUG AUA G GAA UAC CGGG GGU UCG AA UCC CU C UCCAUCC G
+DS4500 GGAU GG AU G UCUGAGC GGUUG AAAGAG U CGGUC UUGAAAACCG AA GUA UU GAG AA UAC CGGG GGU UCG AA UCC CU C UCCAUCC G
+DS4501 GGAG GU AU G GCUGAGU GGUUG AAAGCA U UGGUU UGCUAAAUCA AA AUA CAA CAA UA UUG UAU CAUG GGU UCA AA UCC CA U UUCCUCC G
+DS4701 AUUU GU GA U UUUCAC GC CGAGAG U GUUUC UUGAGGAGGU AAU G CACU A AUG AA G GG U UACAAGG C
+DS4760 AGUU AA UU A GCUUAA GA AAAGCA A AUGUU UUGAAAACAU AAG AA AAGA AGU UCA AU UCU UC U AUUAACU U
+DS4921 AGUU AA UG A GCUUG AA CAAGCG U AUGUU UUGAAAACAU AAG A UAGA A U UUA AU U U UC U AUUAACU U
+DS5000 GGAG AA AU G GCAGACA GG GAUGCA U UUAGC UUGAAACUAA AUA GA GGAA GGU UCG AA UCC UU U UUUCUCU U
+DS5040 GGAG AA GU G GCAGAUA GA AAUGCA U GCGGC UUGAAACCGU UGG A UAGA GGU UGA AU UCC UC U CUUCUCU U
+DS5080 GGAG AA GU G GCACGAUA GG AAUGCA U GCGGC UUGAAACCGU UUG A UAGA GGU UUC UU CC UC U CUUCUCU U
+DS5121 AAGA AA AU G GCAGAGU GGU GAUGCA A CUGAC UUGAAAUCAG AGU A GGGG GGU UCG AU UCC CU C UUUUCUC G
+DS5220 AAGA AA GA A GCAUUAAG UGGUUU GAUGCG G UUGGC UUGAAACCAA CAU G UGAG GGU UCG AU UCC UU C CUUUCUU G
+DS6060 GACA AU UU G UCCGAGU GGUU AAGGAG G AAGAC UAGAAAUCUU UU GGG U UU A CCCG CGCA GGU UCG AA UCC UG C AGUUGUC G
+DS6160 GACA UC GU A GCGAAGU GGUCU AACGCG U UUGAC UUGAAAUCAA AU CUC C UA G GAGG CGCA GGU UCG AA CCC UG C CGAUGUC G
+DS6161 GACA CC UU A GCAAAGU GGUU AAUGCG G CGCCC UGCUAAGGCG UU CUC U UC G GAGG CGCA GGU UCG AA CCC UG C AGGUGUC G
+DS6162 GACA UC GU A GCAAAGU GGUCU AAUGCG U CUGAC UAGAAAUCAG AU CCC U UC G GGGG CGCA GGU UCG AA CCC UG C CGAUGUC G
+DS6240 GUCA GC AU G GCAGAGU GGUCU AAUGCG U UAGAC UUGAAAUCUA AU UCC UUC G GGAG CGUA GGU UCG AA CCC UA C UGCUGAC G
+DS6241 GGCG CG AU G GCAGAGU GGUCU AAUGCG U GAGAC UUGAAAUCUC AU UUC UUC G GAAG CGUC GGU UCA AA UCC GG C UCGCGUC G
+DS6280 GGCA AC UU G GCCGAGU GGUU AAGGCG A AAGAU UAGAAAUCUU UU GGG C UUU G CCCG CGCA GGU UCG AG UCC UG C AGUUGUC G
+DS6281 GUCC CA GU G GCCGAGU GGUU AAGGCG A UGCCC UGCUAAGGCA UU GGG U UUU A CCUG CGCA GGU UCG AA UCC UG U CUGUGAC G
+DS6282 GGCA CU AU G GCCGAGU GGUU AAGGCG A GAGAC UCGAAAUCUC UU GGG C UCU G CCCG CGCU GGU UCA AA UCC UG C UGGUGUC G
+DS6283 GGCA CU AU G GCCGAGU GGUU AAGGCG A CAGAC UUGAAAUCUG UU GGG C UCU G CCCG CGCU GGU UCA AA UCC UG C UGGUGUC G
+DS6284 GGCU AC AU G GCCGAGU GGUU AAGGCG A GAGAC UCGAAAUCUC UG GGC UCU G CCCG CGCU GGU UCA AU CCC UG C UGUGGUC G
+DS6320 GUCA CU AU G UCCGAGU GGUU AAGGAG U UAGAC UUGAAAUCUA AU GGG C UUU G CCCG CGCA GGU UCA AA UCC UG C UGGUGAC G
+DS6321 GUCA CU AU G UCCGAGU GGUU AAGGAG U UAGAC UUGAAAUCUA AU GGG C UCU G CCCG CGCA GGU UCA AA UCC UG C UGGUGAC G
+DS6322 GUCA CU AU G UCCGAGU GGUU AAGGAG U UAGAC UCGAAAUCUA AU GGG C UCU G CCCG CGCA GGU UCA AA UCC UG C UGGUGAC G
+DS6740 GUGG AA GU G GCGGAGU GGUU AUCGGG C AUGAC UAGAAAUCAU GU GGG C UUU G CCCG CGCA GGU UCG AA UCC UG C CGUUCAC G
+DS6741 GUGG AC GU G CCGGAGU GGUU AUCGGG C AUGAC UAGAAAUCAU GU GGG U UUU G CCCG CGCA GGU UCG AA UCC UG C CGUUCAC G
+DS6742 GUGG AC GU G CCGGAGU GGUU AUCGGG A AUGAC UAGAAAUCAU GGA GGC UUU GCCCG CGCA CGU UUG AA UCU UG C CGUUUAC G
+DS6743 GUGG AC AU G CCGGAGU GGUGUUAUCGGG C AUAAC UAGAAAUCAU GU GGG C UUU G CCCG CGCA GGU UCG AA UCA UG C CGUUUAC G
+DS6744 GUGG AC GU G CCGGAGU GGUU AUCGGG C AUAAC UAGAAAUCAU GU GGG C UUU G CCCG CGCA GGU UCG AA UCC UG C CGUUCAC G
+DS6745 GUGG AC GU G CCGGAGU GGUU AUCGGG C AUGAC UAGAAAUCAU GU GGG C UUU G CCCG CGCA CGU UCG AA UCC UG C CGUUCAC G
+DS7240 GGAU GG AU G UCUGAGC GGUUG AAAGAG U CGGUC UUGAAAACCG AA GUA UUG AUA G GAA UAC CGGG GGU UCG AA UCC CU C UCCAUCC G
+DS7740 GCAG UC GU G GCCGAGC GGUU AAGGCG U CUGAC UAGAAAUCAG AU UCC C UCU G GGAG CGUA GGU UCG AA UCC UA C CGACUGC G
+DS7741 GCAG UC GU G GCCGAGU GGUU AAGGCG U CUGAC UCGAAAUCAG AU UCC C UCU G GGAG CGUA GGU UCG AA UCC UA C CGGCUGC G
+DS7800 GCAG UC GU G GCCGAGU GGUU AAGGCG U CUGAC UCGAAAUCAG AU UCC C UCU G GGAG CGUA GGU UCG AA UCC UA C CGGCUGC G
+DS9280 GCAG CG AU G GCCGAGU GGUU AAGGCG U UGGAC UUGAAAUCCA AU GGG G UCU C CCCG CGCA GGU UCG AA CCC UG C UCGCUGC G
+DS9990 GUAG UC GU G GCCGAGU GGUU AAGGCG A UGGAC UUGAAAUCCA UU GGG G UUU C CCCG CGCA GGU UCG AA UCC UG C CGACUAC G
+DS9991 GUAG UC GU G GCCGAGU GGUU AAGGCG A UGGAC UAGAAAUCCA UU GGG G UUU C CCCA CGCA GGU UCG AA UCC UG C CGACUAC G
+DS9992 GUAG UC GU G GCCGAGU GGUU AAGGCG A UGGAC UAGAAAUCCA UU GGG G UCU C CCCG CGCA GGU UCG AA UCC UG C CGACUAC G
+DS9993 GUAG UC GU G GCCGAGU GGUU AAGGCG A UGGAC UUGAAAUCCA UU GGG G UUU C CCCG CGCA GGU UCG AA UCC UG U CGGCUAC G
+DT0220 GCUG AU UU A GCUCAGUA GGU AGAGCA C CUCAC UUGUAAUGAG GAU GU CGGC GGU UCG AU UCC GU C AAUCAGC ACCA
+DT0260 GCUC CU AA A GCAUUGUU GGU GAUGCA G UUGCC UUGUAAGCAU CUG A ACCG GGU UCG AU UCC UA G UGGGAGC ACCA
+DT0660 GCCU CG GU G GCUCAGCC UGGU AGAGCG C CUGAC UUGUAAUCAG GUG GU CGGG GGU UCG AA UCC CC C CCGAGGC U
+DT0661 GCCU CA GU G GCUCAGCC UGGU AGAGCG C CUGCU UGGUAAGCAG GAG GC CGCG GGU UCA AA CCC CG C CUGAGGC U
+DT0680 GCCU CG GU A GCUCAGCU GGU AGAGCG C GAGAC UUGUAAUCUC GUG GU CGCG GGU UCA AA UCC CG C CCGAGGC U
+DT0740 GCCU CA GU G GCUCAGCC UGGU AGAGCG C CUGAC UUGUAAUCAG GUG GU CGGG GGU UCG AA UCC CC C CUGGGGC U
+DT1140 GCUG AC UU A GCUCAGUU GGU AGAGCA A UUGAC UAGUAAUCAA UAG GU CGAA GGU UCA AA UCC UU U AGUCAGC ACCA
+DT1141 GCUG AC UU A GCUCAGCA GGC AGAGCA A CUGAC UUGUAAUCAG UAG GU CGUA GGU UCG AU UCC UA U AGUCAGC ACCA
+DT1180 GCUG AC UU A GCUCAGCA GGC AGAGCA A CUGAC UUGUAAUCAG UAG GU CGUA GGU UCG AU UCC UA U AGUCAGC ACCA
+DT1230 GCCG AA AU A GCUCAAUC GGU AGAGCA A CUGAU UUGUAAUCAG UAG GU UGCG GGU UCA AU UCC UG U UUUCGGC ACCA
+DT1540 GCUU CC AU A GCUCAGCA GGU AGAGCA C UUCCA UGGUAAGGAA GAG GU CAGC GGU UCG AG CCC GC U UGGAAGC U
+DT1541 GCCG GU GU A GCUCAAUU GGU AGAGCA A CUGAC UUGUAAUCAG UAG GU UGGG GGU UCA AG UCC UC U UGCCGGC A
+DT1542 GCCG GU GU A GCUCAAUU GGU AGAGCA A CUGAC UUGUAAUCAG UAG GU UGGG GGU UCA AG UCC UC U UGCCGGC ACCA
+DT1580 GCCA CC CU A GCUCAACC GGC AGAGCA C CCGAC UUGUAAUCGG GGG GU UGGG GGU UCA AC UCC CC U GGGUGGC UCCA
+DT1581 GCUC GC GU A GCUCAGCA GGU AGAGCA C ACCCU UGGUAAGGGU GAG GU CGCC GGU UCG AG CCC GG C CGCGAGC UCCA
+DT1660 GCUG AU AU G GCUCAGUU GGU AGAGCG C ACCCU UGGUAGGGGU GGG GU CCCC AGU UCG AC UCU GG G UAUCAGC ACCA
+DT1661 GCUG AU AU A GCUCAGUU GGU AGAGCG C ACCCU UGGUAAGGGU GAG GU CGGC AGU UCG AA UCU GC C UAUCAGC ACCA
+DT1662 GCCG AC UU A GCUCAGUA GGU AGAGCA A CUGAC UUGUAAUCAG UAG GU CACC AGU UCG AU UCC GG U AUUCGGC ACCA
+DT1663 GCCG AU AU A GCUCAGUU GGU AGAGCA G CGCAU UCGUAAUGCG AAG GU CGUA GGU UCG AC UCC UA U UAUCGGC ACCA
+DT1664 GCUG AU AU G GCUCAGUU GGU AGAGCG C ACCCU UGGUAAGGGU GAG GU CCCC AGU UCG AC UCU GG G UAUCAGC ACCA
+DT1820 GCCG GA UU A GCUCAGUC GGU AGAGCA G CUCAU UCGUAAUGAG AAG GU CGGG GGU UCG AU UCC UC U AUCCGGC ACCA
+DT1821 GCUC AU GU A GCUCAGUU GGU AGAGCA C ACCCU UGGUAAGGGU GAG GU CAGC GGU UCA AA UCC GC U CAUGAGC UCCA
+DT2460 GCUU GC UU A GCUCAAUU CGGU AGAGCU U UGGUU UUGUAAACCA AAG GU UAUC GGU UCA AG UCC GA U AGCAAGC U
+DT2520 GCCU UU UU A GCUCAGU GGU AGAGCA U UGUAU UUGUAAUGCG GUG GU CGUC GGU UCG AA UCC GA C AAAAGGC U
+DT2600 GCCC UU UU A ACUCAGU GGU AGAGUA A CGCCA UGGUAGGGCG UAA GU CAUC GGU UCA AA UCU GA U AAAGGGC U
+DT2601 GCCU GU UU A GCUCAGA GGUC AGAGCG U CGCAC UUGUAAUGCG AUG GU CAUC GGU UCG AC UCC GA U AGCGGGC U
+DT2640 GCCC UU UU A ACUCAGU GGU AGAGUA A UGCCA UGGUAAGGCA UAA GU CAUC GGU UCA AA UCC GA U AAAGGGC U
+DT2680 GCCC UU UU A ACUCAGU GGU AGAGUA A UGCCA UGGUAAGGCA UAA GU CAUC GGU UCA AA UCC GA U AAAGGGC U
+DT2700 GCCC AC UU A GCUCAGA GGUU AGAGCA U CGCAU UUGUAAUGCG AGG GU CAUC GGU UCA AA UCC GA U AGUCGGC U
+DT2701 GCCC UU UU A ACUCAGU GGU AGAGUA A UGCCA UGGUAAGGCA UAA GU CAUC GGU UCA AA UCC GA U AAAGGGC U
+DT2720 GCCC AC UU A GCUCAGA GGUU AGAGCA U CGCAU UUGUAAUGGG AGG GU CAUC GGU UCA AA UCC GA U AGUCGGC U
+DT2920 GCCC GC UU A GCUCAGA GGUU AGAGCA U CGCAU UUGUAAUGCG AUG GU CAUC GGU UCG AU UCC GA U AGCCGGC U
+DT2921 GCCC UU UU A ACUCAGU GGU AGAGUA A CGCCA UGGUAAGGCG UAA GU CAUC GGU UCA AA UCC GA U AAGGGGC U
+DT3200 GCCC UU UU A ACUCAGU GGU AGAGUA A CGCCA UGGUAAGGCG UAA GU CGUC GGU UCA AA UCC GA U AAAGGGC U
+DT3280 GCCC CU UU A ACUCAGU GGU AGAGUA A CGCCA UGGUAAGGCG UAA GU CAUC GGU UCA AA UCC GA U AAGGGGC U
+DT3281 GCCC GC UU A GCUCAGA GGUU AGAGCA U CGCAU UUGUAAUGCG AUG GU CAUC GGU UCG AG UCC GA U AGCCGGC U
+DT3360 GCCC UU UU A ACUCAGU GGU AGAGUA A CGCCA UGGUAAGGCG UAA GU CAUC GGU UCA AA UCC GA U AAGGGGC U
+DT3880 GCCC GG UU A GCAUAAA AGU AAUGUA U CCGUU UUGUAAUCGG AAU A AACA AGU GCG AU ACU UG U ACUGGGC U
+DT4000 GUAA AU AU A AUUUAAU GGU AAAAUG U AUGUUUUUAGGUGCAU AUU A UCUA AGU UCA AA UCU UA G UAUUUAC A
+DT4001 GUUA UA UU A GCUUAAUU GGU AGAGCA U UCGUU UUGUAAUCGA AAG GU UUGG GGU UCA AA UCC CU A AUAUAAC A
+DT4070 GUUG CA UU A GCUCAAUU GGU AGAGCG U UUGUU UUGUAAUCAA AAG GU UUAG AGU UCA AC UCU CU A AUGCANU N
+DT4080 GUUA UA UU A GCUCAAUU GGU AGAGCA U UCGUU UUGUAAUCGA AAG GU UUGG GGU UCA AA UCC CU A AUAUAAC A
+DT4081 GUAG AU AU A AUUUAAUC GGU AAAAUGUA UGUUU UUAGGGUACA UAU UA UCUA AGU UCA AA UCU UA G UAUUUAC A
+DT4500 GCCC GC GU A GCUCAGAU GGU AGAGCA U UCCCA UGGUAAGGGA AAG GC CUCC GGU UCA AG UCC GG U CGUAGGC U
+DT4700 GCUU UA AA A GCUUUG CU GAAGCA A CGGCC UUGUAAGUCG UAG A AAAC UAU AC GU U UUAAAGC U
+DT4880 GUUU UA AU A GUUUAA UA AAAACA U UGGUC UUGUAAAUCA AAA A UAAG A UUA UU U CU U UUAAAAC U
+DT4980 CCUU AA AG C UACAAA AAGCAG A CAAUC UUGUAAAUUG UAA GA UAAA AGG UUU AA GUC CU U UUUAAGG U
+DT5040 ACCU UG AA G GCUCAAU AGUU AGAGCGCC AAGUC UUGUAAACUU GGA G AGAG GGU UAA AG UCC CU C UCAAGGC U
+DT5060 GCCC UA GU A GCUCAGC GC C AGAGCG C CGGUC UUGUAAUCCG GAA GU CGGA GGU UAA AA CCC UC C CUAGUGC U
+DT5080 GCCU UG AA A GCUCAAC AACU AGAGCU U UGGUC UUGUAAACCA GGA G AGAG GGU AAA CU CC CU C UCAAGGC U
+DT5090 GCCC UA GU A GCUUAGAC AUC AAAGCA C CGGUC UUGUAAACCG AAG AU CGAA GGU UAA AA UCC UU C CUAGCGC C
+DT5120 GUCC UG AU A GCUUAAU UU AAAGCA U CGGUC UUGUAAGCCG AAG A UUGA GGC UAA AA CCC UC C UCAAGAC U
+DT5160 GCCU UG AU A GCUUAAA CU AAAGCA C CGGUC UUGUAAGCCG GAG AC UGUA GCC UAA CC CC UA C UCAAGGC U
+DT5200 GUCU UU GU A GUAUAAC AA AAUACC C CGGUC UUGUAAACCG GAA A AGGA GAA CCC CA UUCCUC C CUAAGAC U
+DT5220 ACUC UA AU A GUUUAU GA AAAACA U UGGUC UUGUAAACCA AAA AC UGAA GAC UCC AC CC UU C UUAGAGU A
+DT5280 GUCC CG AU A GUAUAA AA AUUACU C UGGUC UUGUAAACCA AAA A UGAA GA GUC AG UC UU C UCAGGAC A
+DT5281 GUCC CG AU A GUAUAA AA AUUACU C UGGUC UUGUAAGCCA AAA A UGAA GAG UCA GC UC UU C UCGGGAC A
+DT5320 GUCU UG AU A GUAUAA AC AUUACU C UGGUC UUGUAAACCU GAA A UGAA G A UCU UC U C UU C UCAAGAC A
+DT5360 GUCU UU GU A GUACAU CU AAUAUA C UGGUC UUGUAAACCA GAG A AGGA GAA CAA CU AACC UC C CUAAGAC U
+DT5880 GUCC UU GU A GUAUAA ACU AAUACA C CAGUC UUGUAAACCG GAG A UGAA A ACC UU U UU C CAAGGAC A
+DT6050 GGCC GC UU A GCACAU GGC AGUGCA C CACUC UCGUAAAGUG GGG GU CGCG AGU UCG AU UCU CG C AGUGGCC U
+DT6160 GGCU CC UU A GCAUAGU GGU AUUGCG U UUCCC UAGUAAGGAA GAG GU CAUG AGU UCG AU CCU CA U AGGAGCC U
+DT6161 GCCA UA GU A GUCUAGU GGU AAGACA U UUCUC UCGUAAAGAA GGA U CCCG UGU UCG AU UCA CG G CUUUGGC A
+DT6280 GCUU CU AU G GCCAAGUU GGU AAGGCG C CACAC UAGUAAUGUG GAG AU CAUC GGU UCA AA UCC GA U UGGAAGC A
+DT6281 GCCC UU UU G GCCAAGU GGU AAGGCA U CGCAC UCGUAAUGCG GGG AU CGUG GGU UCA AU UCC CA C AGAGGGC A
+DT7740 GGCG CC GU G GCUUAGUU GGUU AAAGCG C CUGUC UAGUAAACAG GAG AU CGUG AGU UCG AA UCU CG C CGGGGCC U
+DT9990 GGCU CC AU A GCUCAGG GGUU AGAGCA C UGGUC UUGUAAACCA GGG GU CGCG AGU UCA AU UCU CG C UGGGGCU U
+DT9991 GGCU CC AU A GCUCAGG GGUU AGAGCA C UGGUC UUGUAAACCA GGG GU CGCG AGU UCA AA UCU CG C UGGGGCC U
+DV0260 GCUC GG UU A GUAUAAU GGG AGAACC C CGCCU UUACACGGCG GUU G UGAU AGU UCG AU UCU AU C ACCGAGU ACCA
+DV0660 GGAC UC AU G GUCUAGUU GGCU AUGACA U CGCCC UUACAAGGCG AGG GU CGCC GGU UCG AA UCC GG C UGGGUCC A
+DV0860 GGGC CC GU C GUCUAGCC UGGUU AGGACG C UGCCC UGACGCGGCA GAA AU CCUG GGU UCA AG UCC CA G CGGGCCC A
+DV1140 GGAG UG UU A GCUCAGCU GGG AGAGCU C CUGCC UUACAAGCAG GCG GU CAUA GGU UCA AG UCC UA U ACACUCC ACCA
+DV1180 GGAG UG UU A GCUCAGCU GGG AGAGCU C CUGCC UUACAAGCAG GCG GU CAUA GGU UCA AG UCC UA U ACACUCC ACCA
+DV1230 GGAG GA UU A GCUCAGUU GGG AGAGCA C CUGCC UUACAAGCAG GGG GU CGGC GGU UCA AG CCC GU C AUCCUCC ACCA
+DV1350 GGAC GA UU A GCUCAGC GGG AGAGCG C UUCCC UGACACGGAA GAG GU CACU GGU UCA AU CCC AG U AUCGUCC A
+DV1351 GCGC GA UU A GCUCAGC GGG AGAGCG C UUCCC UGACACGGAA GAG GU CACU GGU UCA AU CCC AG U AUCGCGC A
+DV1500 GGAG GA UU A GCUCAGCU GGG AGAGCA U CUGCC UUACAAGCAG AGG GU CACA GGU UCG AG CCC UG U AUCCUCC A
+DV1540 GGAG GA UU A GCUCAGCU GGG AGAGCA U CUGCC UUACAAGCAG AGG GU CGGC GGU UCG AG CCC GU C AUCCUCC ACCA
+DV1570 GGAG GA UU A GCUCAGCU GGG AGAGCA C UUGCC UUACAAGCAA GGG GU CGGC GGU UCG AU CCC GU C AUCCUCC ACCA
+DV1660 GGGU GA UU A GCUCAGCU GGG AGAGCA C CUCCC UUACAAGGAG GGG GU CGGC GGU UCG AU CCC GU C AUCACCC ACCA
+DV1661 GCGU CC GU A GCUCAGUU GGUU AGAGCA C CACCU UGACAUGGUG GGG GU CGGU GGU UCG AG UCC AC U CGGACGC ACCA
+DV1662 GCGU UC AU A GCUCAGUU GGUU AGAGCA C CACCU UGACAUGGUG GGG GU CGUU GGU UCG AG UCC AA U UGAACGC ACCA
+DV2520 GGGG GU AU A GCUCAGUU GGU AGAGCG U CUGCC UUACAAGCAG AAU GU CAGC GGU UCG AA UCC GU U UGCCCUC A
+DV2600 AGGG AU AU A ACUCAGC GGU AGAGUA U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AA CCU GA U UAUCCCU A
+DV2601 AGGG CU AU A GCUCAGC GGU AGAGCG C CUCGU UUACACCGAG AAU GU CUAC GGU UCA AA UCC GU A UAGCCCU A
+DV2640 AGGG CU AU A GCUCAGUU CGGU AGAGCA A CUCGU UUACACCGAG AAG GU CUAC GGU UCG AG UCC GU A UAGCCCU A
+DV2700 AGGG CU AU A GCUCAGUU CGGU AGAGCA A CUCGU UUACACCGAG AAG GU CUAC GGU UCG AA UCC GU A UAGCCCU A
+DV2701 AGGG AU AU A ACUCAGC GGU AGAGUG U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AG CCU GA U UAUCCCU A
+DV2720 AGGG CU AU A GCUCAGUU CGGU AGAGCA A CUCGU UUACACCGAG AAG GU CUAC GGU UCG AA UCC GU A UAGCCCU A
+DV2721 AGGG AU AU A ACUCAGC GGU AGAGUG U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AG CCU GA U UAUCCCU A
+DV2840 AGGG AU AU A ACUCAGC GGU AGAGUG U CACCU UGACGUGGUG GAA GU UAUC AGU UCG AG CCU GA U UAUCCCU A
+DV2920 AGGG AU AU A ACUCAGC GGU AGAGUG U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AG CCU GA U UAUCCCU A
+DV2921 AGGG CU AU A GCUCAGUU GGU AGAGCA A CUCGU UUACACCGAG AAG GU CUAC GGU UCG AG UCC GU A UAGCCCU A
+DV3200 AGGG GU AU A ACUCAGC GGU AGAGUG U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AA CCU GA U UAUCCCU A
+DV3240 AGGG AU AU A ACUCAGC GGU AGAGUG U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AG CCU GA U UAUCCCU A
+DV3280 AGGG GU AU A ACUCAGC GGU AGAGUG U CACCU UGACGUGGUG GAA GU CAUC AGU UCG AG CCU GA U UAUCCCU A
+DV3880 AAGA AA UU A GCUCAGUU GGU AGAGCG U UCGUU UUACACACGA AGG U CAGG UGU UCA AA UCA CC U AUUUCUU A
+DV3960 AAGA AA UU A GCUCAAC GGU AGAGCA A CCGUU UUACACACGG AAG GC UAUG AGU UCG AA UCU CC U AUUUCUU ACCA
+DV4000 AGGA GA UU A GCUUAAUU GGU AUAGCA U UCGUU UUACACACGA AAG AU UAUA GGU UCG A CC UA U AUUUCCU A
+DV4001 AGGA GA UU A GCUUAAUU GGU AUAGCA U UCGUU UUACACACGA AAG AU UAUA GGU UCG AA CCC UA U AUUUCCU A
+DV4070 GGAA AA UU G AUCAUC GGC AAGAUAAG UUAUU UACUAAAUAA UA GGAUU UAA U A ACCU GGUG AGU UCG AA UCU CA C AUUUUCC G
+DV4071 AAGG GA UU U GCUUAAUU GGU AUAGCA U UUGUU UUACACACAA AAU G UA UAUA GGU UCG AG UCC UA U AUUCCUU A
+DV4080 AGGA UA UU A GCUUAAUU GGU AUAGCA U UCGUU UUACACACGA AAG AU UAUA GGU UCG AA UCC UA U AUUUCCU A
+DV4500 GGGU AA UU A GCUCAGUU GGU AGAGUG C CUCGU UUACACCGAG AGA GU CAGC GGU UCA AG UCC GU U AUUACCC A
+DV4700 UGUA AG AU A AUAUAAA CC AGUAUA A UUCAU UUACACUGAA UGU G UCAG AU AA U GU CU G UCUUACU U
+DV4800 CAAU UU AA A GCUUAAUU AGU AAAGUA U UUCAU UUACAUUGAA AAG A AAUU UGU GCA AA UCA AU U UAAAUUG A
+DV4880 CAAU UU AA A GCUUAUUA AGU AAAGCA U UUCAU UUACAUUGAA AAG A UUUU UGU GCA AA UCA AU A UAAAUUG A
+DV4980 CCUC GC AG A GCUUGUCA AUCC UAAGCA U CUCUU UUACACAGAG AAG A AGUU UGU GAA AU UCG AA C UGCCUGG A
+DV5000 CCUG GC GG A GCUUGAU AGU UAAGCA U CUCUU UUACACAGAG CUG A UAUU UGU GCA AA UCA AA U UGCCUUG A
+DV5020 CCUC GC AG A GCUUGUCA ACC UAAGCA U CUCUU UUACACGGAG AAG A AGUU UGU GAA AU UCG AA C UGUUUGG A
+DV5040 CAAG AC AU A GCUAGUU AG UAAGUU C CUCUU UUACACGGAG GUC A CACU CGU GCA AU UCG GG U UGUCUUG A
+DV5080 CAAG GC AU A GCUAGUU AG UAAGUU U CUCCU UUACACGGAG ACC A CACU CGU GCA AU UCG AG U UGUUUUG A
+DV5120 CAAA GU AU A GCUUAACC AAAGCC U UUCGC UUACACCGAA ACA A UAUC UGU UAA AC CCG GA U UACUUUG A
+DV5220 CAAG GC GU A GCUAUAAC UUC AAAGCA U UCAGC UUACACCUGA AAG A UACC CUC AAC AG ACAA GG U CGCCUUG A
+DV5280 CACA GU GU A GCUUAAUC AC AAAGCA U CUGGC CUACACCCAG AAG A AUUC A U AAA AA U GA A CACUUUG A
+DV5320 CAUA GU GU A GCUUAAUA UU AAAGCA U CUGGC CUACACCCAG AAG A UUUC A U GAC CA A U GA A CACUCUG A
+DV5360 CAAG AU AU A GCUUAA AC AAAGCA U CCAGU UUACACCUAG AAG A CUUC A U UCA UU A U GA A UAUCUUG A
+DV5880 CAGA GU GU A GCUUAAC AC AAAGCA C CCAAC UUACACUUAG GAG A UUUC AAC UUA AC UU GA C CGCUCUG A
+DV5900 CAAG AU AU A GCUUAA AC AAAGUA U CUAGU UUACACCUAG AAG A UUUC AU ACA C AU GA A UAUCUUG A
+DV5910 CAAG AU AU A GCUUAA AC AAAGCA U CUAGU UUACACCUAG AAG A UUUC ACA UAC G AU GA A UGUCUUG A
+DV5920 CAAG AC AU A GCUUAA AU AAAGCA U CUAGU UUACACCUAG AAG A UUUC ACC CAC C AU GA A UGCCUUG A
+DV5930 CGAG AU AU A GCUUAA AC AAAGCA U CUAGU UUACACCUAG AAG A UUUC ACA CAU C AU GA A UAUCUUG A
+DV5940 CAAG AC AU A GCUUAA AC AAAGCA U CUAGU UUACACCUAG AAG A UUCC AUA CAC U AU GA A UGUCUUG A
+DV5950 CAAG AU AU A GCUUAA AU AAAGCA C CUAGU UUACACCUAG AAG A UUUC ACA CGC C AC GA A UAUCUUG A
+DV5960 CAAG AU AU A GCUUAA AC AAAGCA C CUAGU UUACACCUAG AAG A UUUC ACA CAC UA U GA A UAUCUUG A
+DV5970 CAAA AC AU A GCUUAAA CA AAAGCA U CUAGU UUACACCUAG AAG AUUC A C AUA UC A U GA A UGUUUUG A
+DV5980 CAAG AU AU A GCUUAA AC AAAGCA U CUAGU UUACACCUAG AAG A UUUC ACA CAC C AU GA A UAUCUUG A
+DV6160 GUUC GG AU G GUGUAGUC GGUU AUCACG A AUCCU UAACACGGAU UAG GU CGUG GGU UCG AU UCC CG C UCUGAAU A
+DV6161 GGUC GG AU G GUGUAGUC GGUU AUCACG G UUGCU UUACACGCAA CAG GU CUCG AGU UCG AU CCU CG G UCGGAUC A
+DV6280 GGUU UC GU G GUCUAGUC GGUU AUGGCA U CUGCU UAACACGCAG AAC GU CCCC AGU UCG AU CCU GG G CGAAAUC A
+DV6281 GGUU UC GU G GUCUAGUC GGUU AUGGCA U CUGCU UAACACGCAG AAC GU CCCC AGU UCG AU CCU GG G CGAAAUC G
+DV6320 GGUC GU GU G GUUUAGAU GGUU AUAAUU U CUGCU UAACACGCAG ACG GU CCCA AGU UCG AG UCU UG G CACGAUC A
+DV6740 GGUU UC GU G GUGUAGUU GGUU AUCACG U CAGUC UAACACACUG AAG GU CUCC GGU UCG AA CCC GG G CGAAGCC A
+DV7740 GUUU CC GU G GUGUAGU GGUU AUCACA U CCGCC UAACACGCGG AAG GC CCCC GGU UCA AU CCC GG G CGGAAAC A
+DV7741 GUUU UC GU A GUGUAGU GGUU AUCACG U GUGCU UCACACGCAC AAG GU CCCC GGU UCG AA CCC GG G CGAAAAC A
+DV7920 GUUU CU GU A GUGUAGC GGUU AUCACG U UCGCC UCACAUGCGA AAG GU CCCC GGU UCG AA ACC GG G CAGAAAC A
+DV9990 GUUU CC GU A GUGUAGU GGUU AUCACG U UCGCC UAACACGCGA AAG GU CCCC GGU UCG AA ACC GG G CGGAAAC A
+DV9991 GUUU CC GU A GUGUAGU GGUU AUCACG U UCGCC UCACACGCGA AAG GU CCCC GGU UCG AA ACC GG G CGGAAAC A
+DV9992 GUUU CC GU A GUGUAGU GGUC AUCACG U UCGCC UAACACGCGA AAG GU CCCC GGU UCG AA ACC GG G CGGAAAC A
+DV9993 GUUU CC GU A GUGUAGU GGUU AUCACG U UCGCC UAACACGCGA AAG GU CCCU GGA UCA AA ACC AG G CGGAAAC A
+DV9994 GCUU CU GU A GUGUAGU GGUU AUCACG U UCGCC UCACACGCGA AAG GU CCCC GGU UCG AA ACC GG G CAGAAGC A
+DV9995 GUUU CC GU A GUGUAGC GGUU AUCACA U UCGCC UCACACGCGA AAG GU CCCC GGU UCG AU CCC GG G CGGAAAC A
+DW0460 GGGG CU GU G GCCAAGCC CGGC AUGGCG A CUGAC UCCAGAUCAG UCG AU CGGG GGU UCA AA UCC CU C CGGCCCC A
+DW0500 GGGG CU GU G GCCAAGCC CGGC AUGGCG A CUGAC UCCAGAUCAG UCG AU CGGG GGU UCA AA UCC CU C CGGCCCC A
+DW1140 AGGG GC AU A GUUCAGUA GGU AGAACA U CGGUC UUCAAAACCG AGU GU CACG AGU UCG AG UCU UG U UGCCCCU GCCA
+DW1141 AGGA GA GU A GUUCAAU GGU AGAACG U CGGUC UCCAAAACCG AGC GU UGAG GGU UCG AU UCC UU U CUCUCCU GCCA
+DW1230 GGGG GC AU G GUGUCAAC GGU AGCACA C AGGUC UCCAAAACCU UUA G UGUG GGU UCG AA UCC UG C UGCCCUC GCCA
+DW1250 AGGG GU AU A GUUCAAUC GGU AGAACA C CGGAC UUCAAAUCCG GGU GU UGUG GGU UCA AG UCC UG C UACCCCU GCCA
+DW1251 AGGG GU GU A GUUUAAU GGU AGAACA G CGGUC UCCAACACCG UAC GU UGUG GGU UCA AG UCC UG U CACCCCU GCCA
+DW1540 AGGG GC AU A GUUUAAC GGU AGAACA G AGGUC UCCAAAACCU CCG G UGUG GGU UCG AU UCC UA C UGCCCCU GCCA
+DW1660 AGGG GC GU A GUUCAAUU GGU AGAGCA C CGGUC UCCAAAACCG GGU GU UGGG AGU UCG AG UCU CU C CGCCCCU GCCA
+DW2440 ACGU CC UU A GUUCAGUC GGU AGAACG C AGGUU UCCAAAACCU GAU GU CGUG GGU UCA AU UCC UA C AGGGCGU G
+DW2520 GCGC UU UU A GUUCAAUU GGU AGAACG U AGGUC UCCAAAACCU GAU GU AGUA GGU UCG AA UCC UA C AGAGCGC G
+DW2600 GCGC UU UU A GUUCAGUU CGGU AGAACG U AGGUC UCCAAAACCU AAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW2680 GCGC UC UU A GUUCAGUU CGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW2700 GCGC UC UU A GUUCAGUU CGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW2720 GCGC UC UU A GUUCAGUU UGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW2920 GCGC UC UU A GUUCAGUU CGGU AGAACG U GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW3000 GCGC UC UU A GUUCAGUU CGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW3200 GCGC UC UU U GUUCAGUU CGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW3640 AGAG GU GU A GCUUAGUU GGUU AAAGCG C AAGAU UCCAAAUCUU GAA AU CGAG GGU UCG AG UCC UU U CAUCUCU G
+DW3760 AGGG GA GU A GUUGAAC GGG AAAACU U UAGUC UUCAAAACUG ACA U CGUG GGU UCG AC UCC CG C CUCCCUU G
+DW3770 AGGG GA GU A GUUCAAC GGA AAAACU U UAGUC UUCAAAACUG ACA U CGUG GGU UCG AC UCC CG C CUCCCUU G
+DW3800 GGGG GA AU A GUUUAAC GGU AGAACA A CGGUC UUCAAAAUCG UUA G CGUG GGU UCG AA UCC UG C UUCCCUC G
+DW3880 AAGA GU AU A GUUUAAU GGU AAAACU G UAAGC UUCAACCUUA UAU U UCUU AGU UCA AA UCU AA G UACUCUU G
+DW3960 AAGA GU AU A GUUUAAA GGU AAAACA G AAAGC UUCAACCUUU AAU U UCUU AGU UCG AG UCU AA G UGCUCUU G
+DW4000 AAGG AU AU A GUUUAAU GGU AAAACA G UUGAU UUCAAAUCAA UCA U UAGG AGU UCG AA UCU CU U UAUCCUU G
+DW4070 AAGG GU AU A GUUUAAUU GGU AAAACA G UUGAC UUCAAAUCAA UAU AG UGAU AGU UCA AU UCU GU C UGCCCUU G
+DW4080 AAGG AU AU A GUUUAAU GGU AAAACU A UUGAU UUCAAAUCAA UCA U UAAG AGU UCG AA UCU UU U UAUCCUU G
+DW4360 GCGC UC UU A GUUCAGUU CGGU AGAACG C GGGUC UCCAAAACCC GAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW4440 GCGC UC UU A GUUCAGUU CGGU AGAACG U GUGUC UCCAAAACCC AAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW4480 GCGC UC UU A GUUCAGUU CGGU AGAACG U GGGUC UCCAAAACCC AAU GU CGUA GGU UCA AA UCC UA C AGAGCGU G
+DW4500 AGGA GA AU A GUUCCAAU GGU AGAACA A UGGUC UCCAAAACCA AAG GU UAAG GGU UCG AA UCC CU U UUCUCCU G
+DW4620 AGUG AU CU A GGUUAUU UU GGACUG U CUGUU UUCAAAACAG GAG G UGGC UUU G GU C GGUUGCU G
+DW4700 AAGA AA GU A AUUUAAG UU AAAAUA U UUUGU UUCAAACAUA ACU A UAGG UA GUC AU UA CC U CUUUCUU G
+DW4840 AAGG CU UU A AGUUAA UA AAACUA A UAACC UUCAAAGCUA UAA A UAAA G A AAU UU C UU U AAGCCUU A
+DW4880 AAGG CU UU A AGUUAA CU AAACUA A UAGCC UUCAAAGCUG UAA A UAAA GG GUA UU CC UU U AAGUCUU A
+DW4980 AGAG AU UU A AGUUAA UA AAACUG A AAACC UUCAAAGUUU UAA A UAAG AGU GGA AC UCU CU U AGUCUUU A
+DW5000 AGGG GU UU A AGUUAA UCU AAACUA A AAGCC UUCAAAGCUU UAA A UAAG AAU GGG AA UUU UU U AACCUCU G
+DW5020 AGAG AU UU A AGUUAA UAACUA A AA CC UUCAAAGUUU UCA AU AGAG AGU GAA AC CCU CU U AAUCUUU A
+DW5040 AAGA GC UU A AGUUAA AU AAACUG A AAGCC UUCAAAGCUU UUU A UAAG AAU GGA AA CUU CU U AGCUCUU G
+DW5080 AAGG AC UU A AGUUAA AU AAACUG A AAGCC UUCAAAGCUU UAA C AAAG AAU UGG AAA CUU CU U AGUCCUU G
+DW5100 AGGG GC UU A GGAUAA ACU AGACCA A GGGCC UUCAAAGCCC UCA G CGGA GGU GAA AA UCC UC C AGCCCCU G
+DW5120 AGAG AU UU A GGUUAA CA AGACUA A GAGCC UUCAAAGCCC UAA G CAGG AGU UAG AA UCU CC U AAUCUCU G
+DW5160 AGAA AC UU A GGCUAGC AC AGACCA A AGGCC UUCAAAGCCU UAA G CGGA GGU UAA AC UCC UU C AGUUUCU G
+DW5220 AGAA AC UU A GGAUUAAC UGUCACCAAACCA A AGGCC UUCAAAGCCU UAA A UAAG AGU UAA AC UCU CU U AGUUUCU G
+DW5280 AGAA GU UU A GGAUAU AC AGUCCA A GAGCC UUCAAAGCCC UUA G AAAA C A AAC AA G UU U AACUUCU G
+DW5281 AGAA GU UU A GGAUAU AC AGUUCA A GAGCC UUCAAAGCCC UUA G AAAA C A AAC AA G UU U AACUUCU G
+DW5320 AGAA GU UU A GGAUAUA CU AGUCCG C GAGCC UUCAAAGCCC UAA G AAAA C A CAC AA G UU U AACUUCU G
+DW5360 AGGA AU UU A GGUUAA AC AGACCA A GAGCC UUCAAAGCCC UAA G CAAG U A CAA UU U A CU U AAUUCCU G
+DW5880 AGAA AU UU A GGUUAAAU AC AGACCA A GAGCC UUCAAAGCCC UCA G UAAG U U GCA AU A CU U AAUUUCU G
+DW6160 GACU CC UU A GCAUAGU GGUUU AUUGUA A UUGUC UCCAAAGCAG UUG GU CCAG GGU UCA AC UCC CU G AGGGGUC U
+DW6161 GACU CC UU A GCAUAGU GGUUU AUUGUA A UUGUC UCCAAAGCAG UUG GU CCAG GGU UCA AC UCC CU G AGGGGUC U
+DW6280 GAAG CG GU G GCUCAAU GGU AGAGCU U UCGAC UCCAAAUCGA AGG GU UGCA GGU UCA AU UCC UG U CCGUUUC A
+DW6740 GGAU CC GU G GCGCAAU GGU AGCGCG U CUGAC UCCAGAUCAG AAG GU UGCG UGU UCG AU UCA CG U CGGGUUC ACCA
+DW6741 GGAU UC GU G GCGCAAU GGU AGCGCG U CUGAC UCCAGAUCAG AAG GU UGCG UGU UCG AU UCA CG U CGGGUUC ACCA
+DW7560 GACU GC UU G GCGCAAU GGU AGCGCG U UCGAC UCCAGAUCGA AAG GU UGGG CGU UCG AU CCG CU C AGUGGUC A
+DW8040 GACC UC GU G GCGCAAC GGU AGCGCG U CUGAC UCCAGAUCAG AAG GC UGCG UGU UCG AA UCA CG U CGGGGUC A
+DX0260 UGCG GG UU A GAUCUCUC UGGUAG AGAUCG C UAGUC UCAUAAGCUA GAA AGA GGUA GGU UCG AU UCC UG C ACCCGCU UCCA
+DX0860 GGGC CC GU A GCUUAGCC CGGU AGAGCG C CCGGC UCAUAACCGG GUG GU CCGG GGU UCA AG UCC CC G CGGGCCC A
+DX0980 AGCG GG GU A GGCCAGCC AGGU AGGCCG C GGGGC UCAUANCCCC GAG GU CCCG GGU UCA AA UCC CG G CCCCGCU A
+DX1140 CGCG GG GU A GAGCAGUU GGU AGCUCG C CGGGC UCAUAACCCG GAG GU CGCA GGU UCG AG UCC UG C CCCCGCA ACCA
+DX1180 CGCG GG GU A GAGCAGUU GGU AGCUCG C CGGGC UCAUAACCCG GAG GC CGCA GGU UCG AG UCC UG C CCCCGCA ACCA
+DX1260 CGUG GG GU G GAGCAGUU GGU AGCUCG U UGGGC UCAUAACCCA AAG GU CGCA GGU UCA AG UCC UG C CCCCGCA ACCA
+DX1340 CGCG GG GU G GAGCAGCU CGGU AGCUCG C UGGGC UCAUAACUCA GAG GU CGCA GGU UCA AA UCC UG U CCCCGCU A
+DX1341 CGCG GG GU G GAGCAGCU CGGU AGCUCG C UGGGC UCAUAACCCA GAG GU CGCA GGU UCA AA UUC UG U CCCCGCU A
+DX1540 CGCG GG GU G GAGCAGUU CGGU AGCUCG U CGGGC UCAUAACCCG AAG GU CGCA GGU UCA AA UCC UG C CCCCGCA ACCA
+DX1660 CGCG GG GU G GAGCAGCC UGGU AGCUCG U CGGGC UCAUAACCCG AAG AU CGUC GGU UCA AA UCC GG C CCCCGCA ACCA
+DX1661 CGCG GG GU G GAGCAGCC UGGU AGCUCG U CGGGC UCAUAACCCG AAG GU CGUC GGU UCA AA UCC GG C CCCCGCA ACCA
+DX2520 GGCG GA GU A GAGCAGUC AGGU AGCUCG C AGGGC UCAUAAUCCU GAA GU CAGA GGU UCA AA UCC UU U CUCCGCU A
+DX2600 CGCG GA GU A GAGCAGUC UGGU AGCUCG C AAGGC UCAUAACCUU GAG GU CAUA GGU UCA AA UCC UG U CUCCGCC A
+DX2640 AGCG GA GU A GAGCAGUU UGGU AGCUCA C GAGGC UCAUAACCUU GAG GU CACG GGU UCG AU UCC CG U CUCCGCA C
+DX2680 AGCG GA GU A GAGCAGUU UGGU AGCUCA C GAGGC UCAUAACCUU GAG GU CACG GGU UCG AU UCC CG U CUCCGCA C
+DX2920 CGCG GG GU A GAGCAGUU UGGU AGCUCG C AAGGC UCAUAACCUU GAG GU CACG GGU UCA AA UCC UG U CUCCGCA A
+DX3200 CGCG GA GU A GAGCAACU UGGU AGCUCG C AAGGC UCAUAACCUU GAG GU UACG GGU UCA AA UCC CG U CUCCGCA C
+DX3720 GCAG CA AG G GUGGU CUCAAC C UGGGU UCAUUCCCCA GCU A AUAA AGU UCG AU UCU UU G UAGCGGC U
+DX3800 GCUG CU UG A AUGGU UUCAGU G UGGGC UCAUUUCCCA UUA CU AUAA AGU UCG AU UCU UU A AAGCGGC C
+DX3840 GCCG CU UG G AUGGU UCCGGU G UGGGC UCAUUUCCCA UAA CU AUAA AGU UCG AU UCU UU A AAGUGGC U
+DX3880 AGCG GG UU G AUGUAAU AGU AACAUA U AUGGC UCAUGCCCAU AAU A UUUA GGU GCA AC UCC UA A AUCCGCU A
+DX4000 UGCA AU AU G AUGUAAUU GGUU AACAUU U UAGGG UCAUGACCUA AUU A UAUA CGU UCA AA UCG UA U UAUUGCU A
+DX4080 UGUA AU AU G AUGUAAUU GGUU AACAUA U UAGGU UCAUGACCUA AUU A UAUA CGU UCA AA UCG UA U UAUUGCU A
+DX4280 AGCG GG GU A GAGUAAUU GGUC AACUCA U CAGGC UCAUGACCUG AAG AU UGCA GGU UCG AA UCC UG U CCCCGCC U
+DX4320 AGCG GG GU A GAGUAGUU GGUU AACUCG U CAGGC UCAUGACCUG AAG AU UGCA GGU UCG AA UCC UG C CCCCGCC A
+DX4360 AGCG GG GU A GAGGAUUU GGUA AACUCA U CAGGC UCAUGACCUG AAG AC AGCA GGU UCG AA UCC UG U CCCCGCC U
+DX4440 AGCG GG GU A GAGGAAUU GGUC AACUCA U CAGGC UCAUGACCUG AAG AC UGCA GGU UCG AA UCC UG U CCCCGCC U
+DX4480 AGCG GG GU A GAGGAAUU GGUC GACUCA U CAGGC UCAUGACCUG AAG AC UGCA GGU UCG AA UCC UG U CCCCGCC U
+DX4880 AAAA AG AU A AGCUAA UU AAGCUA C UGGGU UCAUACCCCA UUU A UAAA GGU UAU AA UCC UU U UCUUUUU A
+DX4960 AAAA AG AU A AGCUAA CU AAGCUA C UGGGU UCAUACCCCA UUU A UAAA GGU UUU AA UCC UU U UCUUUUU A
+DX4980 GUA AA GU A AGCUAAAU GUU AAGCUU U UGGGU UCAUACCUCA AGA A UAGAAGGA UAA AA ACC UC U CUUUAUC
+DX5020 GGUA AA GU A AGCUAAAU GUU AAGCUU U UGGGU UCAUACCUCA AAA A UAGAAGGA UAA AA ACC UC U CUUUAUC
+DX5040 AGCA GA GU A AGCUAAGU GCU AAGCUU U UGGGC UCAUACCCCA AGA A UGGAAGGA UAG AA ACC UC C CUCUGCU U
+DX5080 AGUA GA GU A AGCUAAGU GCU AAGCUU U UGGGC UCAUACCCCA GGA A UGAA GGA UAA AA ACC UC C CUCUACU U
+DX5120 AGUA AA GU C AGCUAA AA AAGCUU U UGGGC CCAUACCCCA AAC A UGUU GGU UAA AC CCC UU C CUUUACU A
+DX5160 AGUA AG GU A AGCUAA AU AAGCUU U UGGGC CCAUACCCCA ACA A UGUU G U UAA AA UCC UU C CUUUACU A
+DX5280 AGUA AG GU C AGCUAA CU AAGCUA U CGGGC CCAUACCCCG AAA A UGUU GGU CUA AA CCC UU C CCGUAUG A
+DX5281 AGUA AG GU C AGCUAA CU AAGCUA U CGGGC CCAUACCCCG AAA A UGUU GGU UAA AC CC UU C CCGUACU A
+DX5320 AGUA AG GU C AGCUAA UU AAGCUA U CGGGC CCAUACCCCG AAA A CGUU GGU UUA AA UCC UU C CCGUACU A
+DX5360 AGUA AG GU C AGCUAA UU AAGCUA U CGGGC CCAUACCCCG AAA A UGUU GGU UUA UA UCC UU C CCGUACU A
+DX5880 AGUA AG GU C AGCUAA AU AAGCUA U CGGGC CCAUACCCCG AAA A UGUU GGU UAU AC CC UU C CCGUACU A
+DX6280 GGCG CC GU G GCGCAGU GGA AGCGCG C AGGGC UCAUAACCCU GAU GU CCUC GGA UGG AA ACC GA G CGGCGCU A
+DX6281 AGCG CC GU G GCGCAGU GGA AGCGCG C AGGGC UCAUAACCCU GAU GU CCUC GGA UCG AA ACC GA G CGGCGCU A
+DX6320 UGCG CG GU A GGAGAGU GGA ACUCCG A CGGGC UCAUAACCCG UAG GU CCCA GGA UCG AA ACC UG G CCGCGCA A
+DX6321 UGCG CG GU A GGAGAGU GGA ACUCCG A CGGGC UCAUAACCCG UAG GU CCCA GGA UCG AA ACC UG G CCGCGCA A
+DX6740 AUCA GA GU G GCGCAGC GGAA GCGUG G UGGGC CCAUAACCCA CAG GU CCCA GGA UCG AA ACC UG G CUCUGAU A
+DX6900 AUCA GA GU G GCGCAGC GGA AGCGUG G UGGGC CCAUAACCCA CAG GU CCCA GGA UCG AA ACC UG G CUCUGAU A
+DX7560 AGCA GC GU G GCGCAGU GGA AGCGUG C UGGGC CCAUAACCCA GAG GU CGGU GGA UCG AA ACC AC U CGCUGCU ACCA
+DX7740 AGCA GA GU G GCGCAGU GGA AGCGUG C UGGGC CCAUAACCCA GAG GU CCGA GGA UCG AA ACC UU G CUCUGCU A
+DX7920 AGCA GA GU G GCGCAGC GGA AGCGUG C UGGGC CCAUAACCCA GAG GU CGAU GGA UCG AA ACC AU U CUCUGCU A
+DX7921 AGCA GA GU G GCGCAGC GGA AGCGUG C UGGGC CCAUAACCCA GAG GU CGAU GGA UCG AA ACC AU C CUCUGCU A
+DX8100 AGCA GA GU G GCGCAGC GGA AGCGUG C UGGGC CCAUAACCCA GAG GU CGAU GGA UCG AA ACC AU C CUCUGCU A
+DX9990 AGCA GA GU G GCGCAGC GGA AGCGUG C UGGGC CCAUAACCCA GAG GU CGAU GGA UCG AA ACC AU C CUCUGCU A
+DX9991 AGCA GA GU G GCGCAGC GGA AGCGUG C UGGGC CCAUAACCCA GAG GU CGAU GGA UCU AA ACC AU C CUCUGCU A
+DY0660 CCCG CG AU A GUUCAGAU UGGU AGAACG G CGGAC UGUAGAUCCG CAU GU CGCU GGU UCA AA UCC GG C UCGCGGG A
+DY0740 CCCG CG AU A GUUCAGAC UGGU AGAACG G CGGAC UGUAGAUCCG CAU GU CGCU GGU UCA AA UCC GG C UCGCGGG A
+DY1140 GGAG GG GU A GCGAAGU GGCUA AACGCG G GUGGC UGUAACCCAC UU CC UUA C GGUU CGGG GGU UCG AA UCC CU C CCCCUCC ACCA
+DY1200 GGAC AG GU A GCGAAGU GGCUA AACGCU U CUGAC UGUAGAUCAG AC ACC UUC AU GGUUU CGGG AGU UCG AA UCU CU C CCUGUCC ACCA
+DY1540 GGAG GG GU A GCGAAGU GGCUA AACGCG G CGGAC UGUAAAUCCG CU CCC UCA GGGUU CGGC AGU UCG AA UCU GC C CCCCUCC ACCA
+DY1580 GGGC AG GU G CCCGAGC GGCCA AAGGGG A CGGUC UGUAAAACCG UU GGC GUA U GCCUU CGCU GGU UCG AA UCC AG C CCUGCCC ACCA
+DY1660 GGUG GG GU U CCCGAGC GGCCA AAGGGA G CAGAC UGUAAAUCUG CC GUC ACA GACUU CGAA GGU UCG AA UCC UU C CCCCACC ACCA
+DY1661 GGUG GG GU U CCCGAGC GGCCA AAGGGA G CAGAC UCUAAAUCUG CC GUC AUC GACUU CGAA GGU UCG AA UCC UU C CCCCACC ACCA
+DY1820 GGAG GG AU C CCUUAGU GGCC AAAGGA U CAGAC UGUAAAUCUG AC GUC AUA GACUU CGAA GGU UCG AA UCC UU C UCCCUCC ACCA
+DY2520 GAGU UG UU G CCCGAGU GGUUA AUGGGG G CGGAU UGUAAAUCCG CA GUU C AUCUUU CGCU GGU UCG AA UCC AG C ACGACUC A
+DY2600 GGGU CG AU G CUCGAGU GGUUA AUGGGG A CGGAC UGUAAAUCCG CU GGC AAU GCCUA CGCU GGU UCA AA UCC AG C UCGACCC A
+DY2680 GGGU CG AU G CCCGAGU GGUUA AUGGGG A CGGAC UGUAAAUUCG UU GAC AAU GUCUA CGCU GGU UCA AA UCC AG C UCGGCCC A
+DY2700 GGGU CG AU G CCCGAGC GGUUA AUGGGG A CGGAC UGUAAAUUCG UU GAC A AUA U GUCUA CGCU GGU UCA AA UCC AG C UCGGCCC A
+DY2920 GGGU CG AU G CCCGAGC GGUUA AUGGGG A CGGAC UGUAAAUUCG UU GGC A AUA U GUCUA CGCU GGU UCA AA UCC AG C UCGGCCC A
+DY3200 GGGU CG AU G CCCGAGC GGUUA AUGGGG A CGGAC UGUAAAUUCG UU GGC A AUA U GUCUA CGCU GGU UCA AA UCC AG C UCGGCCC A
+DY3280 GGGU CG AU G CCCGAGC GGUUA AUGGGG A CGGAC UGUAAAUUCG UU GGC A AUA U GUCUA CGCU GGU UCA AA UCC AG C UCGGCCC A
+DY3360 GGGU CG AU G CCCGAGC GGUUA AUGGGG A CGGAC UGUAAAUUCG UU GGC A AUA U GUCUA CGCU GGU UCA AA UCC AG C UCGGCCC A
+DY3720 GAAG UA AU G GCUGAGU GGUU AAAGCG G CAGAC UGUAAAUCUG UU GGU AGU ACCGU CGUU GGU UCG AA UCC AA C UUACUUC A
+DY3760 GAAG UA AU G GCUGAGU GGUU AAAGCG G CAGAC UGUAAAUCUG UU GGU AGU ACCGU CGUU GGU UCG AA UCC AA C UUACUUC A
+DY3770 GAAG UA AU G GCUGAGU GGUU AAAGCG G CAGAC UGUAAAUCUG UU GGU AGU ACCGU CGUU GGU UCG AA UCC AA C UUACUUC A
+DY3840 GAGG UG GU G GCUGAAU GGUU AAAGCG G UAGAC UGUAAAUCUA UU GGG AU UCCGU CGCC GGU UCG AU UCC GG U CCACCUC A
+DY3880 AGGA AG GG U CCGUAUGU UGGUU UACGGG U UGAGC UGUAAACUCA AU GGC U AUG A G GCCGU CGAA GGU UCG AU UCC UU U UCUUCCU A
+DY4000 GGAG GG AU U UUCAAUGU UGGUAG UUGGAG U UGAGC UGUAAACUCA AU GAC U UA G GUCUU CAUA GGU UCA AU UCC UA U UCCCUUC A
+DY4001 GGAG GG AU U UUCAAUGU UGGUAG UUGGAG U UGAGC UGUAAACUCA AU GAC U UA G GUCUU CAUA GGU UCA AU UCC UA U UCCCUUU A
+DY4080 GGAG GG AU U UCCAAUGU UGGUAA UUGGAG U UGAGC UGUAAACUCA AU GAU UAU AU AUCUU CAUA GGU UCA AU UCC UA U UCCCUUC A
+DY4240 AAGU GG UU ACGCUCAGCU GGGUU AGAGCA A AGGAC UGUAAAUCCU UGU GU CAGU GGU UCG AA UCC AC A ACCACUU C
+DY4360 GGGA GA GU G GCUGAGU GGUCA AAAGCG A CAGAC UGUAAAUCUG UU GAA GUU U UUCUA CGUA GGU UCG AA UCC UG C CUCUCCC A
+DY4400 GGGA GA GU G GCCGAGU GGUCA AAAGCG A CAGAC UGUAAAUCUG UU GAA GUU U UUCUA CGUA GGU UCG AA UCC UG C CUCUCCC A
+DY4440 GGGA GA GU G GCCGAGC GGUCA AAAGCG A CAGAC UGUAAAUCUG UU GAA GGU U UUCUA CGUA GGU UCG AA UCC UG C CUCUCCC A
+DY4480 GGGA GA GU G GCCGAGC GGUCA AAAGCG A CAGAC UGUAAAUCUG UU GAA GGU U UUCUA CGUA GGU UCG AA UCC UG C CUCUCCC A
+DY4500 GGGA GA GU G GCCGAGU GGUUA AAAGCG A CAGAC UGUAAAUCUG CU GAA GGU U UUCUA CGUA GGU UCG AA UCC UG C CUCUCCC A
+DY4700 CAUA GG AU G GCCGAGG AA UAGGUG G UGAGC UGUAAACUCA UAA A CAAG GC GUA A GC CU U UCUUAUG A
+DY4840 GAUU AA GU G GCUGAA GUU UAGGCG A UAGAU UGUAAAUCUA UAU A UAAG A UUU AU U CU U CUUAAUC A
+DY4880 GAUU AA GU G GCUGAA GUU UAGGCG A UAGAU UGUAAAUCUA UUU A UAAG A AUU AU U CU U CUUAAUC A
+DY4980 GGCA AG GU G GCAGAU GGUUU AAUGCG C UAAAU UGUAAAUUUA UUU A UAAA GGU UUA AG UCC UU U CUUUGUC A
+DY5000 GAUU GG GU G GCAGAUA GG GAUGCA C UAGAU UGUAAAUCUA GGU A GGAA GGU UCA AG UCC UU U CCUGGUC A
+DY5020 GGCA GG GU G GCAGAAA GUC AAUGCG C UAAAU UGUAAAUUUA UAA A AAAA GGU UUA AU UCC UU U CUUUGCC A
+DY5040 AAUA AG AU G GCUGAGA GAA CAAGCG G UGGAU UGUAAAUCCA UAC A CAAA GGU UAA AU CCC UU U UCUUAUU A
+DY5080 AGUA AG GU G GCUGAG GGAA UAAGCG G UGGAU UGUAAAUCCA UAU A CAAG GGU UAG AC UCC UU U UCUUACU A
+DY5100 GGUA GG AU G GCUGAG UAAGCG G UGGAU UGUAACCCCA CAU A CAGA GGU UUG AG CCC UC U UCUUGCC A
+DY5120 GGUA AG GU G GCCGAGU AA UAGGCG G CGGAU UGUAGCUCCG UGU A CAGA GGU UCA AG UCC UC U UCUUAUC A
+DY5160 GGUA AA GU G GCCGAG CAGGCG G CGAAU UGUAGCUUCG AAG A CAGA GGU UUG AG UCC CC U CUUUACC A
+DY5220 GGUA AG AU G GCUGAGU GU U GAAGCG U UAGGC UGUAGUCCUU UUU A CAGA GGU UCA AU UCC UC U UCUUAUC G
+DY5280 GGUA AA AU G GCUGAG UAAGCA U UAGAC UGUAAAUCUA AAG A CAGG GGU UGA GC CC CC U UUUUACC A
+DY5320 GGUA AA AU G GCUGAG UAAGCA U UAGAC UGUAAAUCUA AAC A CAGA GGU UUA AA UCC UC U UUUUACC A
+DY5360 GGUA AA AU G GCUGAGC AAAGCA U UAGAC UGUAAAUCUA AAG A UAGA GGU UUG AC UCC UC U UUUUACC A
+DY5880 GGUA AA AU G GCUGAGU GAAGCA U UGGAC UGUAAAUCUA AAG A CAGG GG UUA GG CC UC U UUUUACC A
+DY6050 CCUU CU GU A GCUCAAUU GGU AGAGCA U GUGAC UGUAGAGUAU GC GGG UAUCACA GGGU CGCU GGU UCG AU UCC GG C CGGAAGG
+DY6160 CCGG CU UU G GCGCAAU GGU AGCGCG A UUGAC UGUAGAUCAA UCG GU UGCU AGU UCG AA UCU GG C AAGCCGG A
+DY6280 CUCU CG GU A GCCAAGUU GGUUU AAGGCG C AAGAC UGUAAAUCUU GAG AU CGGG CGU UCG AC UCG CC C CCGGGAG A
+DY6740 CCGA CC UU A GCUCAGUU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CACU GGU UCG AA UCC GG U AGGUCGG A
+DY6741 CCGA CC UU A GCUCAGUU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CAUU GGU UCG AA UCC GC U AGGUCGG A
+DY6742 CCGA CC UU A GCUCUGUU GGU AUAGCG G AGGAC UGUAGAUCCU UAG GU CACU GGU UCG AA UUC GG U AGGUCGG A
+DY6743 CCGA CC UU A GCUCAGUU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CACU GGU UCG AA UCU GG U AGGUUUG A
+DY7060 CCGA CC UU A GCUCAGUU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CACU GGU UCG AA UCC GG U AGGUCGG A
+DY7200 CCGA CC UU A GCUCAGUU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CACU GGU UCG AA UCC GG U AGGUCGG A
+DY7740 CCUU CG AU A GCUCAGUU GGU AGAGCG G UGGAC UGUAGAUCCA UAG GU CGCU GGU UCA AA UCC GG C UCGAAGG A
+DY7920 CCUU CG AU A GCUCAGCU GGU AGAGCG G AGGAC UGUAAAUCCU UAG GU CGCU GGU UCG AU UCC GG C UCGAAGG A
+DY7921 CCUU CG AU A GCUCAGCU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CGCU GGU UCA AU UCC GG C UCGAAGG A
+DY7922 CCUU CG AU A GCUCAGCU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CGCU GGU UCG AU UCC GG C UCGAAGG A
+DY9990 CCUU CG AU A GCUCAGCU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CGCU GGU UCA AU UCC GG C UCGAAGG A
+DY9991 CCUU CG AU A GCUCAGCU GGU AGAGCG G AGGAC UGUAGAUCCU UAG GU CGCU GGU UCG AU UCC GG C UCGAAGG A
+DZ1662 GGAAG AU CG U CGUCUCC GGUG AGGCGG C UGGAC UUCAAAUCCA GU UGG GGCCGCCA GCGGUC CCG GGCA GGU UCG AC UCC UG U GAUCUUCCGCCA
+DZ7560 GCCC GG AUGAACCAUGGC GGUC UGUGGU G CAGAC UUCAAAUCUG UA GGC G GUU AG C GCCG CAGU GGU UCG AC UCC ACCU UUCGGGU G
+DZ7742 GCCC CA CUGAACUUCGGU GGUC CGGGGU G CGGAC UUCAAAUCCG UA GUC G AUU UG C GUCG AAGU GGU UCG AU UCC ACCU GGGGGGC G
+DZ7920 GCCC GG AUGACCCUCAGU GGUC UGGGGU G CAGGC UUCAAACCUG UA GCU GU CUA GC GACA GAGU GGU UCA AU UCC ACCU UUCGGGC G
+DZ8040 GCCC GG AUGACCCUCAGU GGUC UGGGGU G CAGGC UUCAAACCUG UA GCU GU CUA GC GACA GAGU GGU UCA AU UCC ACCU UUCGGGC G
+DZ9281 GCCC GG AUGAUCCUCAGU GGUC UGGGGU G CAGGC UUCAAACCUG UA GCU GU CUA GC GACA GAGU GGU UCA AU UCC ACCU UUCGGGC G
diff --git a/Cove/Demos/yeast-phe.fa b/Cove/Demos/yeast-phe.fa
new file mode 100644
index 0000000..52b1d84
--- /dev/null
+++ b/Cove/Demos/yeast-phe.fa
@@ -0,0 +1,2 @@
+> DF6280
+GCGGAUUUAGCUCAGUUGGGAGAGCGCCAGACUGAAGAUCUGGAGGUCCUGUGUUCGAUCCACAGAAUUCGCACCA
diff --git a/Cove/Guide.tex b/Cove/Guide.tex
new file mode 100644
index 0000000..abeb819
--- /dev/null
+++ b/Cove/Guide.tex
@@ -0,0 +1,206 @@
+\documentstyle[11pt]{article}
+
+\title{User's Guide for COVE -- covariance models of RNA sequence
+families }
+\author{Sean Eddy\\MRC Laboratory of Molecular Biology\\Cambridge UK\\sre at mrc-lmb.cam.ac.uk}
+\date {2 September 1993}
+
+\begin {document}
+
+\maketitle
+
+\section {Overview}
+
+Covariance models (CM's) are adaptive statistical models of the the
+secondary structure and primary sequence consensus of an RNA family.
+
+CM's are {\em adaptive} because a new model is ``learned'' from a set
+of example ``training'' sequences. CM's are {\em statistical} because
+they embody a probabilistic description of the consensus; mismatches,
+insertions, and deletions are permitted, and the penalties paid are
+learned from the training sequences that the model was constructed
+from.
+
+This is a preliminary document which only partially explains what's
+available in these programs. Much of the package is still actively
+evolving. However, between this document and the demonstration
+examples that are provided with the software, you should be able to
+learn enough about how the software works to start experimenting with
+it on your own.
+
+Using these programs, you can:
+\begin{itemize}
+\item generate new models, by training them on example sequences ({\tt
+ covet})
+\item produce multiple sequence alignments ({\tt covea})
+\item search DNA sequence databases for similar RNAs ({\tt covels})
+\item produce a consensus structure prediction for the whole family
+ ({\tt covee})
+\item produce individual structure predictions for sequences ({\tt coves -s})
+\end{itemize}
+
+However, there are two important limitations to keep in mind. First,
+the basic structure of CM's is incapable of representing or predicting
+pseudoknots. Second, these programs are slow and they are memory
+hogs; for a training set of RNA sequences of length 50-70, expect the
+alignment algorithm to chew up several megabytes of RAM, and to take a
+few seconds per sequence. The time requirement is most noticeable
+during training -- if you've got a set of 50 unaligned training
+sequences and it takes 30 iterations to converge on a new model, 30
+iterations x 50 sequences x 2 sec = about an hour. Memory and time
+requirements scale as approximately the cube of the individual
+sequence lengths; if you want to deal with 100 to 150-mers, you'll
+take an 8-fold hit in memory and time. Therefore, I don't recommend
+using these programs for RNAs longer than about 150 nucleotides
+(unless you've got a Cray at your desk). Stay tuned, I'm working hard
+on both limitations.
+
+\section {Tutorial}
+
+This section introduces the basic usage of the {\tt cove} package
+of programs by using examples. It should be sufficient to get you
+started using {\tt cove}.
+
+First, a general note about all the programs. If you type the name of
+a program with no arguments, it will print out a short information
+page on the command line arguments it requires and the available
+options. This is nice, if you forget the order that arguments come in
+or if you can't remember the switch for a particular option.
+
+Let's assume you have a set of short RNA sequences that you think
+share a common structural consensus. They are all in one file, which
+we will call {\tt seqs.fa}, for instance: the {\tt .fa} is an abbreviation
+I use to indicate a FASTA-formatted sequence file. The format looks like
+this:
+
+\begin{quotation}
+{\tt > seq1 } \\
+{\tt ACGUAGCUGACUAUG } \\
+{\tt > seq2 } \\
+{\tt ACGUAGCUGCAUGUACGCAGU } \\
+}
+\end{quotation}
+
+In practice, the {\tt cove} programs will read a number of different
+common sequence formats. These include EMBL, GenBank, Intelligenetics,
+FASTA, and GCG formats for unaligned sequences. Alignments are
+accepted as GCG MSF format or my SELEX format (see the Demos directory
+for example SELEX-formatted alignments). Alignment formats can also be
+read where unaligned formats are expected. The package will
+automatically figure out what format your sequences are in. (This
+capability is mostly thanks to Don Gilbert's {\tt Readseq} package,
+which I have borrowed and extended.)
+
+\begin{quotation}
+{\tt
+(logi)[8:57am]>> covet mymodel.cm seqs.fa\\
+(logi)[8:57am]>> covet -a seqs.msf mymodel.cm seqs.fa
+}
+\end{quotation}
+
+This command (``{\tt cove t}raining'') will run the training
+algorithm, using the sequences in {\tt seqs.fa} as examples, and when
+it's done it will save the model in {\tt mymodel.cm}. The first
+command starts from a random alignment of the training sequences. The
+second command uses the alignment in {\tt seqs.msf} as its starting
+point; this is useful if you already have some idea of what the
+alignment should be.
+
+For a real problem this may take an hour or more! At each iteration,
+information is printed about the current average score of the model.
+This number is a log-odds score, in bits (log 2); the larger it is the
+better, and positive numbers mean the model matches the sequences
+better than a simple random-sequence model.
+
+All subsequent commands use the trained model {\tt mymodel.cm}. The
+model is saved in a binary format; if you try to examine the {\tt
+mymodel.cm}, it will look like gibberish.
+
+\begin{quotation}
+{\tt
+(logi)[9:06am]>> covea mymodel.cm seqs.fa
+}
+\end{quotation}
+
+This command (``{\tt cove a}lignment'') will produce a multiple
+sequence alignment of the sequences in {\tt seqs.fa}, and print the
+alignment out.
+
+\begin{quotation}
+{\tt
+(logi)[9:07am]>> coves mymodel.cm seqs.fa
+(logi)[9:07am]>> coves -s mymodel.cm seqs.fa
+(logi)[9:07am]>> coves -m mymodel.cm seqs.fa
+}
+\end{quotation}
+
+This command (``{\tt cove s}core) computes the score of
+each whole sequence individually, and prints the scores. You might
+use it to detect sequences which, according to the model, don't belong
+to the same structural consensus; sequences which don't fit the model
+get negative scores.
+
+There are two important options available for coves. The {\tt -s}
+option prints out not just the score, but also a terse representation
+of a structure prediction. $>$ and $<$ characters are used to
+represent paired positions. The {\tt -m} option prints out a more
+verbose ``mountain'' representation of the predicted structure.
+Both of these representations are described by Danielle Konings in
+J. Mol. Biol. 207:597-614, 1989.
+
+Note that covariance models routinely overpredict structure, because
+a) they don't look for Watson-Crick complementarity and b) it is often
+statistically advantageous for the model to pair as many positions as
+possible. Sometimes, these additional pairs are real tertiary
+contacts, but often they are just noise. The predicted secondary
+structure is a subset of the total predicted pairs. We don't yet
+provide a routine for using stacking and Watson-Crick complementarity
+criteria to do this separation automatically.
+
+\begin{quotation}
+{\tt
+(logi)[9:07am]>> covels -w 50 mymodel.cm /genbank/gbrna.seq
+}
+\end{quotation}
+
+This command (``{\tt cove l}ocal {\tt s}core'') would search a database
+(here, a hypothetical GenBank structural RNA database) and print
+scores and locations of all hits with positive scores (i.e.\ , good
+matches to the model). The difference between {\tt coves} and {\tt
+covels} is that {\tt covels} is a {\em local search} program instead
+of global alignment; it will find optimal matches to subsequences
+in a long sequence. The {\tt -w 50} parameter sets the maximum length
+of match you expect to find (here, 50 bases). (The 'w' comes from
+``window''; it sets the size of the search scanning window.) This
+parameter affects the running time and the memory consumption of {\tt
+covels} significantly, so you want to set it as small as you can get
+away with.
+
+Expect scanning rates to vary between 10-100 nucleotides/second. In
+other words, if you really do search GenBank\ldots{} be prepared to
+wait days or weeks (or years). A search for iron response elements, a
+28-base motif, in 140,000,000 bases of the EMBL 35 database took me 4
+days using ten processors of an Alliant FX/2800 mini supercomputer.
+Sigh. This is the major limitation of the software, and I'm working
+hard to get around it.
+
+\begin{quotation}
+{\tt
+(logi)[3:14pm]>> covee -b -l mymodel.cm
+}
+\end{quotation}
+
+This command (``{\tt cove e}mit'') emits a consensus structure
+prediction for the family. The {\tt -b} option means ``best'', emit
+only a consensus prediction; otherwise, it emits a number of sequences
+probabilistically from the model. The {\tt -l} option means a
+``mountain landscape'', making the consensus prediction get printed as
+described by Danielle Konings (J. Mol. Biol. 207:597-614, 1989);
+otherwise, only primary sequences are printed with another line of
+output schematically indicating base pairs.
+
+Again, the program's definition of a base-pair is more general than
+Watson-Crick pairing; a dumb heuristic is used by the landscape
+program to assign pairs to Watson-Crick or not.
+
+\end{document}
diff --git a/Demo/C28G1.fa b/Demo/C28G1.fa
new file mode 100644
index 0000000..a851bd7
--- /dev/null
+++ b/Demo/C28G1.fa
@@ -0,0 +1,549 @@
+>C28G1 950922/C28G1.seq
+GATCTTAGCTTCCGTTTGACCTAAAAAACTTTCAGATTGAGGCGTGCTGG
+TGGAAGATATTCCCTAGTAAGCTACTTTTTGAGCGGATAATCATGATTGT
+CATTTCTGGTTTCCTATAGCTGTGACACGGGACATTTGACAATTTTTGAG
+AATTATTATAGGATTCTCATTACAAAATTTTCGGTAGGTTCCAACTCGTT
+TTCAATAGTTAGTTGTCCTTTAAATCACATACAAGTGTCTCATTCATGTT
+GTCAAGACTTTATTTGGATGAAAATCATAAACTGGCTGTCAAATGAATAA
+CTTATAAGAATTTAAAACAATGTTCATTTAGTAAAAAAAAAACAGTAAAG
+TTGGAAAATATCATTAATTAATTTTAGATGAATGGTTATTGAATCATATA
+AGTAGAATATCCGTTATATTTTATTTTCCAAAATTGAAAGACGCAAGGTT
+GATTGTTATGTCATCCATTTTGGTTGGTTGAGCTGAAAATCCTAAATTGT
+TATGGTTTCAGAAATTTGATGAGGTACCCGGTAGAAGTTTCCTATTTAGC
+TATTTGACACATTGCGCAATACCGTATTTTCTCTATTAATGCTGCACCCC
+AATAGTCCTTTCGAAAATTAGTGCTGCAGTTTCTATTAATGCGGCACCCA
+TTTTCCATTAAATGAGTCACCTCAATAGCTTCGACATTTGGGGGAGTGTT
+TTTGTTCATTTTTGATTATTTTTGATGGTTATTGTTAATTTACAAACATC
+ATGAAATCATTATGTCTTTATGTTACAAAAATATTCACTCCTTATGAATT
+TCTGCTTAAAAGATGAGCTTTTGTGACTAAAAGCTAGTTCGAAAATTTGC
+ACTGCCGTCTCTAATAGTGCTGCGTTCAAAAAGGGACTGAAAATAAGTGC
+TGTAGCACTAATAGAACACTAATAGAAAATATATGGCAAGAAAATATAAA
+CTCACGTGCGTTAACAACATTTGATTGCGTTGCAATTTTTGCCATTTCCA
+CAAGTTCCATGATTTGAGATTCTTTGCTGAGCAGCCCGGCTTGGTTGATA
+TTGTGAAATTCTTTCATATCAGTGAGCTTTTGTTTGAAACGTTGATGTCC
+TACGGATAGAATTTCCATTTTCTTTTTGTTGTCGTCAAGGCAGCAATCTG
+CTGCATCTTTCAATTCCACAAGAGTTTCCTTCTCCCGCTGTGCTACCATT
+TCTTTAATTTTCTTGAAGTGTTCTTCAATCTGAAAATTTGAAAATAGAAA
+ACATAGTTTGTCAAATTGAAATACCGATTTAACTTTTGCCTTGTACGTAG
+CTCCACTAGATTCAAAAGAACGTTGAGCACTGAAAAAACTTTATAAAGAT
+TATAAATTCTAAATTGCAACAAACTTTTTGTACTGTTCAATGCAAGATTG
+AATTGAGTCACAGAAGTTTTCAAGTTTAGTTTCTGAATTGTTCAGGACCG
+TTCTCATTTTAGCTGCTTCCTCTTGCAACAAGCCTCTGGTATGCCCCTTG
+TGGTTTCCGAATTCTTCACAGGTGCGGCACATTAGTTTACATTGAGATTT
+GCAGCCGCTCGTCTGAAAATGTGAATTTCTACTAGATAATGACGGCGTCG
+ATTTTTGATTAAAAAATATTATGTTTCTAATTTGCCAAACTGTGCCCATT
+TTTCATAAAACTCATTCGGAAAAGCCAATAAAATACTTACGACGCAAACG
+AACTCGGCCAGGTTGTGTGGATGGTTTTTGCACATCGGAGGGGAGTTCGA
+ATTGACAACCTAACCAAAACTACTATTTAGCAAACCTTCTGTTATGCAGC
+TTACCACAACGTCCTTCTTATTCAAACTATACCTGGCATCCTCAATAACC
+TCAATCAGGGCAAAGTTTTTGAGCAGCTTTGTAATGTCGTTATTTACAAT
+GTTTGTTACTGTTCGACAAAATGGACATTCTACAGTACTGTTATTCACCA
+TCGCTGTGATACATTTGTGACACAGAGCATGTCCACAAGCTAAAATATTG
+AATTACAATTTGCGTATAATTATTTACACGACTTACTCAGATTTCTTGGA
+ATATGTTCGCTGTCGGTATCGGAAAAGCGGTCGAAGCAAATCTTACATTT
+TGGGAACGACATTATATTCAAATTGAGCGATTATAACCTGAAAGGAAAAA
+TTGAGTCAACCATTTGCAGAAGTTTTAAGACGCTTTTTCTGACTCTTAGA
+TAAGATAGCACAGTTGACTATTGAATAAAACGAATCATCAAAAAACTAAA
+AAAGGCTTACGAAATTTTATTTCAAAACGATGTTTGTTTGTTGAAGGAAA
+TGCACAGGAAGGAAAAAAACACAATAAGGATCACTAGTTTCCAATCGAAA
+GGTAAAAAGCGCTAGGAAAATTTTAACACTTTTTTAATTTCAGATTTAAA
+ATGTAAAAAGCTTAAGTTTTTGACAAATTCTAATTTGAATTATTACGTTT
+TTGTCAAAGCTTTTTACTACCAGTGCGCAGTTCTTTCCATTTCTGCACCT
+TTTTTTTAACATGTTTTCTCTTGTTGCGAAAATGAAAAACTTACGATGTT
+CAAGTTGACACAAAAAATTTTTTAATGTTGCATTTTGGAATTCGGTCAAA
+ACACCAAATGCGTATTTTCAGGAAATTTTCCTATTTAAAATAAAGCTAAA
+ACTAATAGTGAGTATCAAGCAAGAGATGATTCATTCATTTTAGAAAAAGC
+TAAATTTGCTTTGTTTTCAACTTTTTTCAAATTTTCTTGTCGAATAACTT
+TGTAAAATGGAAAAAAATATGTTGAAAATCGATTTGCGTTGATATGAATA
+CTACCAATAAAAAAAGACAACAAACAGAGAAAAGAGAAGAATAGATACTG
+CGTGAAAAACTACACATGTTAGAACAAGTGTGTGAAAAAAGGTAAGCCAA
+AATGAGAGTAAAAATATCAGAGTATGTGTTTGAATTCAGTACTGAATTAT
+ATCATAGTGTCGAGTGGTAAACTTGCTGTGCAAACACTTATTGATAAAAC
+ATTAAAAAGTGACTAACGGGCAAAAATTTGTTCAATATCATTTTCACAAT
+ACAGTATACATCAAAACGTGGTACAGATTTTATTTCAGAAAATAAACAAG
+TTACGGAAAGACCATTTATTCTAGTGTTCAAATATATCTGAAAGTGGTAC
+ATTGAAACGTTCTGCATTTTACTCAATTCACATTATAAAAATCAGAAAAG
+TGTGTCACAGTCGTTATTTGTAACTATTCAGGAATTGCTGATTCCACTGG
+AGATCATATCCAAAATAGTAATAAAAAACCAAATACATTTAACAAAAGTT
+TTAACAAACAAAAAATATTTGAAGAAAATGAACAATACTTTTTGTATGAA
+TGAAAGCCAATAGTAAGACCAAAAATAGATAAGAAATGCGAGACGCAGAT
+AACTTTTTTTTTCGCAACACTCTGCCCCATATTTTAAACTTAGCAAGGAT
+TGTAACTTTTCAAAGATCACGTATTTTAAGAGTAGCAGGTTTACAACTTT
+TGCTCAGACAAATGTTATCATGATCTCAATCCTAAGATAACGAGGAATTT
+CAGGAAAGAAAACAACAAGTGTTTATTGAATATTGAATGTACATCGAGAA
+CCAAAACTTATTGCAGCAGGCTAGCAAAATTGAAATTTCGGCAATTCGAC
+TTTCACATTGTGAATTGATAAAGGAATTGCTGAAAAATCTTGAAATGTGT
+CGAATGTGTAAGAAATGAAATGTATTACGTGTATTTGCAGACGGATTCTG
+AACCAATGATTCTGTTGCATCTGCCATTGATTTAATATTTCCAGCTTCAT
+TAATCAAAATTGATTCATCCAAGAGACTTAGTCGTTTGATTTCAGCAAGC
+TTATCTTCAAAGTAACGATGCCCTGATTTCAGTGCTCCAACCTTATTCCT
+ATTTTCCATAAGTTGCCGCTCTGCTAATATGCCCAGCTCTTCAATTGACT
+TTTGCTCTCGAACATCAATATTCTTACGCATGCTGTCATAATGGCCTTTT
+ATCTGCAATGAATGTGTTCAACCTCAAAAGATTCAAAGCTTTTTTTAATA
+CTTCGTTTATGGTATCCATGAATGCGTTGCTGTCAGAAGAAAGTGAGTTT
+TCAGCTCTAAAAATCGATGCAATATTAATTGTACATTATAAAGGTTTTTG
+ATATACTTTTCAAAATCACGCAAACTGTTCTCAATGGTATCAATGAACTT
+GCTGAGTCTTCCTTCAGATTTTTTCAGAATAGCTTTAAGCATGTTAACTT
+CATCTCTCAACAGTCCTCGTTTGTGATCTTTGTGATCGCCAAATTCCTCA
+CAGGTTCGACACATCAACTTGCATTTCACATCACAATCGGTATTCTATAA
+ATAATTAGTTTAGTTCTTTGAAAGCATCTTCCAAGATGTTGTCATGTTAA
+AAAATGATTACTCACCACACAAATAAATTTAGCAACTTCTTGATGAGCAT
+TACACCACGTTGGCCCAGCTGTATCAATTTTCTAAAACATCAGCTTGTTG
+TTACATCATAGTGATTGCATTGCTCACCTTATTTTTCCCACTTTCTTCAA
+TTTCTCGAATAATTTTCAGCATTCCAAAATTTGTGACCAAATTATTAACA
+TCTCGGTCCTTCACCTCAATTGGCTGACGACAAGTTGGACATTTCACTTC
+GGGGTTTTCGAATAGTTTTGATGCACAAACCGGACAAATCACGTGCCCAC
+AATCTAAAAAAATGTTTAGGTTTTATGTTTGTAGAGTTGACGAACTTACT
+CAAGTTTTTAGGAATACGTGATTCACTACGGTATGATTCTTCACATATTT
+CACAAGTTGGCAAGATCATCGTATTATTCAAATTTTTTAAAGACAAGAGT
+GAGAAAAAAAGGTAACCTTGCGAAAAAGAAAAATAATACTTTTCGTTCTT
+CGATAAGACTACACTACAAAATTTCAGTTATGAATGACGGACAGTTAGAG
+AAGAATCAATACTTATTCAACTCAGTAGCTGAAAACCTCAAGTCAATATT
+ATATACATACATATATATTTTACTAGTAATAATAATAATCCCAGATTTCA
+TGCAACATCCGAAAAATTTCTTATTAGGACTGGGTCCAAATATTCTGTTT
+AATCGAAATAAAAAAAAAATCAAATAAGTTTACCAGTAACTCTTTTTTTC
+AATATTTTGTTCGTTTTTTGATTTAGGGGGCTGCACAACATTTAATTGAC
+TTTTATAGTGGCTCGTGTTAAAGGATAGGGTTTTAAAATTTTCAAAAGTT
+TAAATTTTCCTGTTTCTTTTCTTGAAACAATCCCATTCAGAGCTAATATT
+ATAGTCGCAATCATTGGCAACATAAAACCGAGAACCAAAAACATTTTCGC
+GAAGAGATGAAAAGAATTCAAAACTTTTCATACAATAAATAAATTATGCA
+ACGTTGACAATAAAATAATTCCGCATCTATTGATAATCATACCACAGTAA
+AAGGCAACATAAGTAACATTAATTTAAAAAATCACTAAATTTCCAGGAGT
+TTCAACTGACGGACAATTGTGTCGAGAAGCTTCTTGCGATCTCCTTTGGC
+GATTCCAAAGAATCCAGTGCTTTTTCGCTCGAATTCAATCATTCTGAAAG
+ACTTAAGCCATGTAAAATGCTTTTGTTATTGATGTTCTAATCTAATATAT
+AAAACTGTGTTTTGTTTAATATATATAAAACTGCGTTTTGTTTGAAATAT
+GCCCATTATACAGAGTTACCAATTGAACAAGACGGTCAGGTAAACCAATT
+TTTCTAACACATTGAAATACAATAGTTTATGGAGCTTGCCAGTGATACAT
+AAACTATCAACTGAACGGTTTTGTACTGAATCGTGCGAATCTTTATTTTA
+TTTTAATTTAGCTGTAGAGTTATCAAGAATAAACAAATCTTTCATTCATT
+ACATTTTTTCAAACACTTACTTTTCTAGAACAACAATGGCAGTCGATGCC
+TTCACTCTCAGGTATTTGGCATGATCCTTTCCGTATTCGGCATTGAACGT
+TGTCCAATCCGATGACATCACGAGGTCGAGCAGTTGTCTGAAACGTGTTA
+ATGTTTTTCCATTATTGCTTCCCGTTATAACTAGCCTCAAATCTGCAAAC
+GTCATTGACAGCGTTTGTGGATCCACTCCAGCTACCGGGCACCTCGTGGT
+GAACATCTCGCATTGCATCACATCTAGAGAAAACTGATCCAGAGCTCCTG
+TTGAAATGCACTTGGTTTCAGGAGACAACAAGAAATCTGACATTGATTGC
+GAAATGTGTTTACAAGTTTGAGTGCAAACATGCTTTGCAAGTCCTGATGG
+CAAATTGGTGAATGAAGTAAATGTGGTTTGAAGGAAATTTATAAGATCCG
+AGATGAACTCGGATGCCTGTCCGGCAGCGGCAGGCAATTCCCAGTCGTAA
+TTTGCAAGATCAATGATTTCATCAACTTTGCTTCGCATACACTCATCAAT
+CTGCTGCTCGACTTCACTTCTCACGTCGCGGAACACCTTTTCAGACAGCA
+CAACTTGATGGGAAGTAGTTCCTATTGCCTCCTCTCCGCTAGTTTTACTG
+GTGATAAATGCTCCAAGTGACTCGCAGGATTTTTCCAAATATCCCAGGTT
+AATTGTAATTTGAACGAGTTGAATCATAGAGAGCCGTTTGTGAACAAATG
+ACTTCAAAACTCCAGCCCATCGTCCAAGAAGCACGTTGGCGCAACTGAAA
+GGAGAGAGTTGTAATAAAAACTGAGGAGAAATGAGCTTACCGGCGAACAG
+TGTCATCAACAGCAGAAGTATTGAGTTGAAGATTGTCCATAAACTTGAGA
+CATCCAATCAAATAGTTTTTGGCTTGTGTATAGGCATCAGTGACAAACGG
+AGAGAACGGGAACCTCCGTGGGAACGGTTCCTGGAAATATTGTTTTTGAT
+GTTTGAGAGTTTAAAATAGTTCCAATCAATTAGATAATTTTTTGTCAGAA
+AAGTAGTTCAAAGACGCTTGTAAAAAAAAAGTAAAAAAAGTAAAACCTCA
+GGTGCTAACATTCTTCTTGTCAGCTCAAAACCCCCACTCCATAGTTTCTT
+TACCTACCTGCTCCATGCTTCTTTTATAAAATGGAAACTTTCTGATGATA
+GTTCGAAACTCTTCTTCCGAGTTGACCGTGATCGGTGTATAATTATCCTT
+TTCCAAATCCCTCTCAAACTGAGCACAATATTCTTTTACCAGAATCTCAT
+TGTACTGATCCCTGAAATGAAATTGCCATCAGGAAGTTTCATGGATCTTT
+TTACCAACCTGAAGTTTTGCAGAAGTTCATAGAGTGGTGCAACAGCGTAG
+CCGTATGATTTCATAGTAAGAATGAAGAGAAGAATTACCTTCTTCATCTT
+CAACATCATCAGCACATCTGGAGATCCTCCCTGAAGCTTTCAAAACATTG
+AAAGTTAGAAGGAGTCTTCAACTTACGAATCTTGCATCCAAATGCTGACG
+AATCTTCATGAGCGCATTATCCCACAACTTATCCTTATCCACAGTTGTCG
+ACAAATTGGATTGTGTCATCAAAATCTGATCTTCCACGACAAAGAATCCG
+ACGATCTCATCGAGATACTCCACATAATGCTTGAAGTTGTTCATTTTGTG
+AGTTGGCTCAATCACCAAGTCACACTGCTCTTTTCTCTGTTGACGGTAAT
+ACTGCTCAAACTCCTCTTTTGCACCGAGAACATTGAAAATCTGACAGCAA
+CGGTGAACTGGAGTGAAATCGATCAAGTCTTGAGCCGATACTTGTTCATC
+ATCCTGAAACATGAAAAAGGTTTTGTGGGAATTATAAGGATCTCTTATTT
+TAGACACATTTCTAGCATAAACTATCTCACCTCAACTTGCATTTTCATGT
+TTCGTTTGGGCGACATATTTTTCTTCACAATACTACCGTCAGCGGACACT
+TCAATCTCGACATTGCTCGCATTTCTGAAACAAAATTTTGTAAACGTTTA
+GTTGATAATGGAATATTCCTAGGAAATGTACATTATGGAAAAAGATGTAG
+TCTCTCACAATAACAATCTCTTTGCTCATTTCTTAGTATTTAGTACATTT
+AACTCCTTCAAACAAATCAATTTTGAAGCTTGAATCAAACAAAAATACTC
+ACTTCCTTGCTTCTTCTTGAATTTTCTTGGCTCTTTCGGCGTCGGTGACT
+CCAAAGGAATGTTGCTCAGCTGTCTGAAATAACAATTTACATTAGATTCA
+CACTCGGCAAACACCGCCAATTTTCTGCTAAATGCATTTTGGAAGATGGT
+TCTGCGCTAGAAATGAATTGGAAACTGCAAAACACTAAACTTGTATTAAT
+ACTTACATCCTTGCTCGCATGTTTTCCAATACGTCCAGCAACTTTCTTGA
+TGTTCTCTAAAAAGTCTTTGAACTCGGAGTAAGCTTTTTCCTTAATCTCC
+AAACGAACTGGCGCCATACTTTTTGCAAGCACTTGTGTGAAGCGGTACTT
+TTCCACTAGGGCAAGATGAGTGTGTTCCAACTCTTCCAGAGTTTTCAGAG
+CTTGGTAGTACTTGCGATTACTCATTTGCTCTTGAAGCTTCGCATAGTTT
+TCAAGTACCGGGAGGCAAACGGCGATTTGATCCATAGCTGTCTTCGCGTT
+TTTCATGAGCTTCCTGAAAATGTATGTTACTTTAATAATTCTTTAGCTAT
+GCTGGCTGTTCCTGAAATATAATAATTGTCAGAAAATGTAAAAGTCTCAC
+CGATATCTCACGATTTCTTGCTTCTTCTGACACAAACGTTGACTAATCTG
+CTGAATCTCGGCGTCAATTGCCACGGTCTCTTCCTTGATATCTTGACACT
+GCTCTTTAAGCTTCATAAGCTCCTGCATGGCATCCACGAAGCTTTGGTAG
+TGGAAGGAGCACACTTTTTGAATATTCTTGTCGTAATGGCTGATTCTTTG
+TTGTAAAGCCCGTGCGAATGATTGCACATCTCCGGTGTCGTAGATAGCAC
+GTAGAACAAGGCCCATACTTCCACTGTCCGTTGTCTCCAATTCGTACAGG
+AAGTACTCCTGTTCAGCACTCATTTCGACGTCTGAAAATTTAAAAAATAG
+AGCGTAAGAAATTTATTATCGATGTTTTGAAATGAAACTCCTATCTCTTG
+TATTTCTTGCATGTTAAGTTTTGTATCTACATGTGTGCATAAAATCAATA
+CATTCACTTGTTGAATTATTCTTACTCTTCTCGCCGTAAAACGAGAAACC
+CCGAAAACGGATGATAATAACGGAGTACGCTGATAAGCGTCCGAAAATTC
+AGTTCTCAACTCACAGTTGACATAGGAAGTCGATGCTGTTTCACTTCCCG
+TAGTTGCCGGTTGAGAGGTACTGGATGAGTTTGGCATTTTCTGAAAAAAT
+CGACTATATTACATAAAAACATGATAAAATCAAAAATATAGCAAAAAAGT
+TAATAAATCTAATCAAAAATTGATAATAAATTAGTTTTCGAAAAGTTTTG
+TCCAGAAAAGCTTTTAAAATCCGGAAAGTATTCAGATTTCGCCTTTTAAA
+TGCAATTCTAAACAAAAAATTGTTGACGCGGTTCGCAATAGTACTGCTGA
+CGCATTTGTCTTGTTGTGCGCATTTCCTGACATACACGATGCCCCTCCAC
+TGCAGAATGGCACCCAGCAGAGGTCACTGCTCTACTCGTCTATGTCTTGC
+TTATCGATGCTCTCCGCTCATCTCTCCTTCTTCTCTCGCCTTAACTTCTG
+CAGTATGTCTACTCAAACTAGAGATGTATGTTCATAGTCCCATGTGGTCT
+AGTGGTTAGGATTCGTGGTTTTCACCCACGCGGCCCGGGTTCGATTCCCG
+GCATGGGAAGTTTCTTTTTGCATAGTTTTTACTCAAATAATTTTATATTT
+GTTTGTCGAAGCTGATAAATATTTATCCGACATTGCCTTATTGAATGTTG
+TTTTTCTTGCTCTAGGCGGAAATTACAATTCCGAAAAGAGAGCACATATT
+TATAAAAAATTGTAAACAGCTAAGTTTCTTGCAGCCACTTCTAACTGTGA
+AAATGTCCGTCGAATTCAATATTTAATACTCAACAGAGTTTATTTTGCAC
+TAAATGATTTTTTGATTTCCAAAGTTTTATTTTATCTTCATGTTTCCTGT
+CTATGATCTCTGACTCATGACTAATAGAGATCACATTTTTCTGTTTCTCT
+TGATCTCAACAATTCACCGAGATGATAAATTGCTCAAAATGTTGTAACAT
+TTGTTGTTTTCAATTAAGTTCAAAAAAATAGAGGGATAAATGTTTAGTTG
+TGTTCTGAACTGGTACACATGAGTGCTCAAAGTCTTTCTGGTATTGAAAC
+CACTTTTGGATTAAACTTACTAAATTCAGTAGGGTGTCAGGAGTCATACG
+TGTTCTCTCCTATTTCCTGGCTATTTGTTTTTGCTCTTTTGGGCAATGAA
+AAATTTAATTCAACAGTTTTTGATAAGTATTCCGACTTGGGGTTTCTGGA
+CTCTGAGGTTAGAAGCTACTTGAAAAATGATTTAACTGACATTTCTGTCA
+GAGCTGATAGCGGCATAAACGATGTTAGAAGAAATTCTCCAAATCAGGTA
+TTATTGTCAACATATTGAACGCAAACAAAAAATGATTTCAGACTAGAATT
+TTATTTAATGCTGGATGGGAAGAGAAGCTGCATGAAAAGCGCTCATGGCT
+TTTTTATCCTTCAAAGTACAACAGCAAAGTGATTACATACTTGATAAAAG
+AGAAACATGTTCTGCTCAATGTTGACGACGCTTTTCAAGTTTGTTTTATG
+AATTTTGAAGCTTTATCATGACTAGTTTTGAAGCTTTAAGATAAATCATT
+ACTAGTCACAACTTTGAATTATTTCAGATGATATCAATCATGTATGAAAA
+CAAAAGTTTGCAATTTGTGGTCCTAGTTCCTTCAAAACCATGCGGGTTGA
+AAAAAGCCTTAAAGGTAAGTGAATTATTTTCACTCATCAAATTATAAAAC
+AACTTCCAGAAGCTCACGAAACAACGTTTTGAAAAACTTTTCCAAGAGTC
+AACGGTTCAATTAGTGCAGATCATGATACCTAAACTTGATGTTCTCCAAC
+TTCTCATCAACTCCAAAGTTCTCGGATTGCAGCCGCCGATTAAAACAAGT
+TTAAAATACAAGGTAGCCTAAAAATCTTCGATTTTTTTAATCTATACCTT
+ACAGGAGTCACCGAGAATTTCAAAAATGTTGTATCGTCCTGAAAACCGTT
+TACCTTACCATTTTCGTGCAGATCATCCTTTTGTATTTGCCGTACTGAGA
+AATGGTCATCCAGTTTATTTTGGTGTATTCTCATGAATTTGACTTTCAAA
+TCATTGTCTTCCATTGTACATTGAATACCGTTCCTTGTTTCAGAACAGTT
+TTATTTTTGCTACGAACCAAATTTTTTAGAAGGCCCCACTCTTTTTGAAC
+AAAAAACAACAATGGAAAAACTATTTCTGAAAAGCTCATAGTCCCTCGAT
+ATTCTTTTAGCCTTTCAAATAAAATTATGTGAAAATTTATTACACGCACA
+ATAATTGATTTTTTTTTTGGATAATTGAATTTTTTCCTCAAAATAAAAGT
+TTTCCAGAGTGTTCTTATCAAATCTGGAAACAAAAACGCCAACTTATTCA
+ATCAACCAACGTTTGAAGAAGATAATTTTTCATTTGTTTTGATATTTTCA
+TTATTACAATTACTGTTTGTTTTGAAGTTCTAATGGCTTTGTAACAATGA
+TATAATACTTTTCTAACAGTTCTTATTGTTATAAAGAAAAAAAAAGAAAA
+GTATATGTGATTATACTGGATACGCCATCTTTGTGAGAATGTGTGAGAAG
+TTGAAACGAATATACTGTATTTCCTATATTAGTGAGGCATGCAATACTTA
+TTTTCAAGCACCTATTTAGAAGCAATACTAATAGAGGTGCACTAATAGAG
+ACGCCTTACTTATAGTGGAAATACTGTATTAACTTCCAATTTGGAACATC
+AAAAAAGTTTCTTGCGTTCGGGGGGAATCGAACCCCCGTCGAATGCTTGG
+AAGGCATCCATGCTGACCATTACACCACGAACGCACGATGAAGCTTCTTT
+AAACTTGCAATGAAAACTCAAAATGATCGGAATCCCTCGACAGGAGGTTT
+TAATCCGGTTTCCATTTGCGCGCATTCTCGAAATTAATATATTTCCCAAT
+CGATGTACACACACACTTACTTGATAATTAATTGGTCCTTAACATTTTCA
+TAGTTTATCTTCTTGATGAATCATGTGCGTTCGTGGTGTAATGGTCAGCA
+TGGATGCCTTCCAAGCATTCGACCACAGGTGATTCGCAGTGTAAGCAAAA
+TGCTTCGACGCACACAATGCTCGTGTTTGCGAAAATGTGCGCCACAGTGG
+CAAGCATAAAGGGCACAATGCGAACGCTCGCAATGTGCGCATTTTGTTTG
+GCCGTTATTCCCATCATTAAAGTGCTCATTTCAGTTAGTTTAAAGCCATT
+TTTGTTTGAGTTCTCTGTTTATTGACTGTTTTTTTGCTGATACTAAAGTT
+TCTGAAAAACAAAACTCTCGATTTAGAAGGAACTTGTCAGATTTCGAAAA
+TCATAAGGGTCCCCCCTTATGATATAAAATTTTTGATGAAATTTTTTTGT
+TTTGAAAATTTTTTCGAAAACATGTTGAACGTGTAGAAAATGATCAGTTT
+GATATTTTATACAAGTGTGAGAGTTCACAATGAATGTTCAGCCAAGAAAT
+CATGGAAAGTCTAGAGTTGGGTCATTGAAACATAGTATGTTTGAGAGCTC
+CTAACTTCCTTGAGACGTAAAATACAAAACTTTCTTCAACTGAAAAGTTG
+TCAGAAATGAACTGAACAACGAGTTATTAGTTGGCAATATTTTTCTATCT
+TGCATGTTCAAGAAGTGGGCACAGTTGAGTAAGAGCAAAACAGCACTGAC
+TTCAACAAGCCATATTTTGGCACATTACACATATAGGAAACATTTTTTAT
+TTTTAAGACATTTTCCATAACAAGCTAAACAAATTTGTAGTTGATCGTTT
+TTTGATATCTTGTATGTCCAAGGATGCTCACAGCTTCAAAAACCTATACT
+ATTTTTTGAGCCCTTCAAGAAATAGTCATTTTCTCAGCTAAAAACTTTCT
+TTCTAACGTTTAAATTGACACAAATAGAGTAAATATCATTTACTACTGTA
+TCTGATGATCCGCTTTGAAAATCATAAGGGTCCCCCCTTATGAAATTTTT
+TTTTCGTGGAAACTTTTTTCCAAAAAAATTTTGATTATGTTTAATTTTGT
+GCAAAAACATTATTTCAGCATGTTTCACAGTTTTAACGTCTCAATAACGT
+TTTTGTGGCAAAAAATATTGAAATCTTCCTGGATTTTTCAAATAAACACC
+TTACTTGTAATACAGTTTTTCTCCGTTGGCAGCAGGAATACAAAAAAGTT
+GCCAACTTGAAAATTGTTTACAATGAAATGAATAACAAATTTTTAATTGA
+CACTTTTCTCCTATCTCGCATTGCTTCAAAGTTATAGTCCTCTCGTTTTG
+AGCCCAATATTACTGATTTTCAGTAATCATATCTAAATAATGAACAAAGA
+TAAAACGTTTATGTTTTATAATTGTGATAGATCATTTCAAGTTTAATAAT
+TAAATAATTGATCGCTTTTTGATATCTTTCTATCCTGAAAAGATGTACAT
+CTTAGACGAAATGATGTATATGGTTGAAGAGTTCAAGAAATTGAGGCTTT
+TCTCGTTGGAAACGCCTAGTTTGACGTTGAAATTTTTATAAATAATCACT
+TTTGTACTTTTCTCAATATTTCAAAGTTGTTACAACTTTTTCAAAAAAAA
+ATTTTTCGAGAATTTTTGATTTTTTTTTGTTGCAAAAATTGAAAAAAAAA
+CCAAAGGGTCCCCCCTTATGAAAATTTTCAAAAATTTTTACGAAAATTTT
+TTTTGAAAACTTTTCAAAATACGATCAGATCTTTCAGAAAAATGCGATGT
+TGGTTGTTTTTTTCAGTTTGAATATTCAGAACACGATTTCAGACGAACAC
+GTGAGGCTTAGTAGAACCTCTAAGTTCAAAAAAGGCATTCACTTCGAATG
+CTTATATCTCCGTGGAAAAAATTATTATGACAAAGTGATCAACTACAAAG
+TTGTTTATCTTAAATCAAAGTACAACTTTGTAGTTGATCGTTTTTTATCA
+AAAAATTTGGTGGTGGAGATATAAAGAGAGAAAGAGAAAGAAAATACAAG
+CATGAAGTTACGGCACTTCTCACAACTTTATCTCAACCACCAATTTTTTT
+GATAAAAAATGATCAACTTCAAAGTTGTACTTTTAATTAAGATAAACAAC
+TTTGTAGTTGATCATTTTGCCATAAAAATTTTTTCCACGACGATATAAGC
+ATCCAAAGTGAATGCGATTTTTGAACATAAGAGTTCTACTATACCTCCGG
+TTTTTGTCTCAGCTTGTGTGCTGAACATCCAAACTAAAAAAAAACAACAA
+ACATTGCAATTTTCTATAACATCTAATAAAAATTTGAGAAGTTTTCAAAA
+AAAAAATTTCGAAAAAATTTTTGAAAATTTTCATAAGGGGGGACCCTTTG
+GATTTTTTTTTCGAAAAAAGCTAAAAAAAAATTTTCCAAAAATTATCAAA
+TATGTATGAGATATTGTAGAAATATGTTTACTTTGTTGTTTCTAAGCATT
+TTCTTGCAAAATTCGGTGCTTTTCCATGAGTCAAAACGGAATTCTTTGGG
+ACACTGAACAATAAAACCTCCTGTCTTAAAAAGGATGTATCTCATTTTAG
+AGGCGAGGTATCAAAAAGTCATAGTTGTAAGCATTTTCTCACCTTTATCG
+AGAACTGAGATATAGTTGAGAACAGATCTATAATTTTTTGGTCGTCTTTC
+GGAGCTCACATCTCCGCAGTCACTGAAGATAACTAAAACGTACCAAGTAA
+CAAAATGTTTTCCATATTATTGTCAACAACTTTTTAGTTGACCACATTTT
+ATCAATTTAAACGCCAACAGAGTTATAAGTCTTTGAAAGTAAGATGTCTA
+TTTGCTCATTCAATTCTAATTTAAGTCATTGTTTAACTCAAAATGGAACA
+TAAGAGTCCAAACTTGTAAGAACTACCAAAATTGTGTTTTTTTTATAAAG
+TTGAACAGTTTTTGAAAAAAAAATTCCAAAAAAAATTGTTTTCAACCATA
+ATTTTTTTCAACCCTTATGATCAAAATCGGAAGATCGGAGAAATCAGATT
+ATAAGAGGGCCCTTATCCCTTACGAGCCTTCTGAGCTGAATATTGAGATC
+GTAAGTCAGAATAATCAGATCATAAGGATGAGCCTTATAGTATTCCAATA
+TAGTAGGACATTTCACAGCCTTTTCCCAAAAAAACATTGGTAATACATTC
+AATTGTGAGTGAATTCGAAATTCCGTTAAAAATTGCATTTAAAAAGTTGT
+GGAATATGAACACAAATTAGTTGAAAAATACATGCCGTATTACCTCTATT
+AGTAAGGCGTGCAAAACTAATTTTCGGACACCTAATTTGATGCAAAACTA
+ATAGAGGGTGCAAAACTAACTTTCGAACAGGTTTTTTCTCATGTTTGCCA
+ATAAGTTATGACATAATATCATCAATTTCAATGACAACTTATGAACCAAA
+ATGGACGAATTTTACGACTGATACGCAAACATTGTCCGAATTGTACTCAT
+ATTTTGCCAATTTTGACTTGTTATACCAAGTCTGTAAGAGTTTTCCTAAT
+TTTTAGAACGACTTTATAATGCAAATTTTGAATTCCTAAAATTAAGGAAC
+AAATAAAGGGGTGCAAAACTATTAGAGGTGCAAAACTAATAGAGGGTGCA
+AAACTAACTTTCGATTAGTGATTTTAGATGCAAAATTAATGGAGGTTCAA
+AACTAATAGAGGTGCCTAACTAATAGTGGAAATACGGTATCTAGTTGAAC
+TAGTTGAAAAAAAGTTGTCACCATTGATCCTAGCCCCACCAAGGTACACC
+CCACTTTGTCACTTTGGATACTTTGTCTCCAAAGATCTTTGCAAAGATCC
+TTTGTCACAGGCGGTTTTTGCAAAGTGGGAGAAGACTCGGCCACTAGCAT
+AGCATGAAAACGGATCATTTTCTTGAAAACCTGGTACGGTGGATCGCCTT
+GAGAACAATTTTAGATAATTTTGGGTCAGTTATCAGAATGATGGAACTAG
+ATGCGCGAGATAACTAGCAGTGAGATGCCCTAGATCACTACTTAAATCGA
+TTTGCAACTAACGAACGTGCGCGCGGGATTGGTCAACAGTAAACTTTCAG
+AACTCGAAGAAACAGGTAAGTGGTTCGACTCCGGATGGTAACAGAAAATC
+CTTTCCAAGTCTTGAGGTGGCTTAATCATGTCTTCGGGTAGTGGGGGTGG
+CTTATACAAGAACTGAAGTTATATTTTGAACTTTTTCAGCTGATATAAGT
+GAAAAAAGGAAGCATAAATTGTTTTCGCAATGCCTCCTTTATGCTCGCGT
+TCGTTCGCAAAGACGAGCATTTTTCTCCATTTTTGCTCATGTTTTCAAGT
+ACCCATTCGAAGCACGCGCGAACTTCGGATGAAGCATAAAACTCGTACTC
+GCGAATCACCTGTGCGACGGGGGTTCGATTCCCCCCGAACGCAGTAAATC
+TTTTGAGTTTAATAAATTTATATACACCGTATTTCCTCTGTTAGTATTGC
+ACGTAAAATTAGTTTTTATTCGGACCATTGGCTGCGAGACTATTTTTTGA
+ATGTTCAATAACGAGAAAAAACTCCATTATTAAAATTTATAATAAGACAA
+GAAACTTAATTGGCTTTTCATAACGAACTGTTCATTTTTTAATCTTAGAA
+ATTCTAGTTCGTTAGAATGTTTTTTTTTCAAGCATTTTGTTTTCATTGAT
+TTTTTGATTGAATTCCTACTCCTTTCAAAAAATTATGAAATAAGCTGCAT
+ATTTAATTTTTGTTCTATCAAACTTATTTTTTTAAATGAGAAATCAATAC
+TAACAATTATTCGTTGTGAAATATGTTCCTTACGTCGCGTCACAAAAAGC
+AGTGGAGAATGAGAGAAACAGAGTACAATGTTCAGTTTCAAAACTCAGCT
+AGTCAAATTTGAAAGGTTTCTTTTTTTTGCTTTTTGTACGTGTTTTTCAT
+TCATCTTTTAAAACCTAGGAATTAATTTTTTTTGAAGAATAAAAAAGTAA
+ACAACCAGTCAACATTTGTTTTGAAACAAATCGTTTTTGCGATAATTATT
+GCGAAATAACTAACTATACTTGCAATAAGATTTGGCCTAACCACTCATTT
+TTCCAAATAATTTAAGTAATTATTTTATTTTTAGGATGAAAAACTTGAAG
+CCAATAAAACGTCGGATATTTATGTATTGTTGTGAATTTAGTTCCAGATA
+GAACCTAGATTTTTTCAGAGATTAAAAATTTCGCCATAATAACGGGGTTT
+CAAACATATATTCTTGAACTACCAACTGATAGCCTCTAATAGTCTTGCTG
+TATTTCATATCAGTTCAAAATAGTCGTGCATTCCGAATTTGAGTTGTTTA
+TGTACTTTTATTGATGCTACAGTATATCTAATCTTATTTTTCTACAACTT
+CACAGGAGGGCGCAATTATGCAATATGGTCTTGCCACTCGTTGATTTTAA
+AACATTTTATTTTATTCCATGGGTGGCGCGTGGCGATACCATTTCGCATA
+AATGCACCCTCCTTTGAAGTCGTAGAGGAAAAAATACACTGTGTATAACC
+AAACAATATTTGCAGTTTATTTGCTTTTAGACACTGATAACAAACCCTTG
+AGAGTCTTTTCGGTTTACCAATAAAGAACATTTCTTGCTAATTGTAAATA
+TTTTATCGATATAACCCATCATCAACAATTATCCTAGTTACATTATTTTT
+CAATATTTCAACACATTTGTTCATCAGGCTCTTTTGCCCATTCTCTAAAT
+TTGATTTTTCAGCTAAAAATGTCTGTTGTTAATTTTCTCACTCACGGTGA
+ACGGGAAAAATTGGATCAGTTTATGGTAATCTTTTTTTTCTTTTTTTATT
+ATGTGATTCAGCAATGTTTCATATAGGAAATCGTAAACATTCATGATGAG
+GAAGTTGCAATGGTATCAATGACAAACGCCGATTGGAATCTGGAACGCGC
+AATTGGAACTCATTTAGCGTTAGGATCAGAAGGAGATATTTATGCAGGAG
+GCTCACCATTGGATCCAGTTGACAATCAACGAGGTAGCAGGGATGATTTC
+GGTAATGACGAGTACGACAACAATGGGATTGGTGGAACAGCCAACATATT
+GAATGATGAAGTTGGAGAGTCGAGTACGCTCTATCAAGTTGCAGTAAGTA
+TTTTATTGTTTCAACATATTTGTGTGCATTATAGTGAAATTATCAGACGT
+ATGGATGAATTTGAATTCTAGATAATTCTGAAGACACAACAACTTCCAGT
+TTTCACATATACACTATGTAGTTAGTTAGAATTCTTCCAGCTGTCTTTTG
+AAATGCATGAGGGTATTTGCCAATCTTTCAAAAATATTGGTTTTTTATAT
+GACATTTTGTCAAAACTGTGACTTTTGTTTTGGAAAATATAAAACTTTCC
+AGAGTTTTCATTTAAAATACTTTTTTTTTTTTTAGTTTTTTTAAAAATTA
+TTTAGAAAATGTATGACAAAATCCCCACTGACGCTATCCCATCTCTGAGA
+AAGAACATGACATACCAAAATGTTAAATATGGAGATGTTAACTTATGTTT
+TTTTTAATAAGCAAAGTCATAAACATTTTATATATACTTTTTTTCCATCC
+AAATTTCTTTTCTAGCCGCCACTCATGATGCCACACCATTCTCAGCCGAT
+TCCAGATGCATTGAAATGTTATACTGATAATTTTAACACAAGGTATCAAA
+TTGGAAGCACTGTGATGCCAAAATTCTATACGGATACTTTGCGGAATGCT
+GTGAAAGAAGCATTTGACCAAGAAAACCCGATTCTATGCCGTCCCTTGGC
+TTTCTTTATCAACAATGAAAATAGTTCAAATACAAGAAATTTTGTAACCA
+ATGTTTTGTGCAACGAGCTTGTCACCAGTTATCTTGCAACTAAGTATATT
+TTGTACCCCTGGGATGTGACCGAACCGTAAGTGTTATTAACGGACCCTAA
+AACTGATTTTTTTTTTGTGAATCTGTCTTCAATTTAATAAATTAGTATCA
+TTTTTCAATTGCCAACAAAACATTAAAAACGATGTGAAGTCGGTAACATT
+TTGTCAGTTGAAAATATTCTGCTAATTATACATAGTTTTTTTTTGGTTTG
+ATCAGATCAAGCAAATGATCAAAAACAAGTAGAATTTTAACCGACTCCAG
+AACTAACTGAAATGTGTGGTTTTTTTTTAACCTGAAACAACTTTCAGAAG
+AAACTTGGATCGATTTCTGCGAATTTTGACTGATTCAAACATGTCGTCAA
+TGCATTACAATCTCAAGAGTTTCAATGAATCTGAGTCTCATCGTTTTCCA
+TACATCGCAATTGTTTTAAGAAAAGGAAACTGGTTTGAAGTTATACGAGA
+AGTTAACGGTACCAGTGACTTGAATGAAGTTGTGAATGCTCTGTATGAAG
+GGTTCGAAGAACTTCAAGAAGAAAAACTGCGTGTTTTGAGTAAACAGGTG
+GAGCGAAAAACAAAACAAGCAAAAGTGGAAGAAGAAAGGAAACTTATAGA
+TCAGCAGAACGAGGTTTATTATAAGAACTTGAAAATTGATACTGATAATT
+TGAATAAGAAACGGATAGCAGCGAAATCAGAAATCGAAACAACAAGACCG
+GAAACTAAACCGAAAATTACCCCAATGAAAGTCATAAGCGTTACACCTCA
+GAACCTACCAGAAGAACCAAATGTTTCCGAAACAAATATTGTCACAGTGA
+AGTTCCGGTTGCCAAAAGGGATCCAGGTGATTGGCAAAATTTTTAAATAA
+CCTATTTCAAAATCTTTTATGTGTAGCAAGGGTTTCCATTTGATACCTAG
+AAATGTGATAGCGCGTGCTCTGACGAACTGATGTGTAGAAGAATTTTACT
+TTTCTAACAAGGATTTAAATTTGTAAGGATTTAAAAGGAGGCACACTTAC
+AAAAAAAGTGCAGCAACATGTTCCGCATTGTTCCGCAGTAGATCACAAAT
+TATTTTTTCAAGGAAAATGTAAAATGTAATGCGTTCGGGGGGGAATCGAA
+CCCCCGTCGAATGCTTGGAAGGCATCCATGCTGACCATTACACCACGAAC
+GCGCATGATTGACTTTTCAGTGGATAAATGAAAATCTTCCAAAACCGTTA
+AATTTGAAGAAACTTGATTTTGGGTGATTAGCATCGTCTCCATATGTAGG
+CCAGCTTTTCGGAAGATGATTAACAGAAGCCTAGTCAGATGATGTGCGTT
+CGTGGTGTAATGGTCAGCATGGATGCCTTCCAAGCATTCGACGGGGGTTC
+GATTCCCCTCGAACGCAGAACTTTTTGATGAGTTATTCTGCAAAAATACA
+TGTGATATTTTGTCCGAGAGAAAGTAGTCTGTGACAAATCTAAATTAGGC
+CTAAAATTTCCTGTCCGTATTTGATGCTAACGGAATTTTAACTAATGCTC
+TGTATTTTACTTCGTAGTTTTTTTTCTTTATCAGATACATTCCCCGTTTT
+TGCTTCCTAAATCTGAAACTCGTGACATAAGTTTCTAGCATAAATGATAA
+GAACAGGTGTGCACGACCTGTATCAAACAAAGACATTGAAATAAACTATG
+ATTGACTTGATTTTTGCGTTTCTTTGTCCCTTGTTTCGATGCAATCACAA
+CTATGTAGAATTGCGCCCTTTTTTCAAAGGTGAGATTGCGATGAGAGGCA
+ATCATTTTTTCTAATCAATTATTACCAGTCGGTCACTTTACACTTATCCT
+GTTTGAGAAACCTTTTTTCGTTACTACCATCTTTCAAGCTTATTGTAGAA
+CATGAGTACCGCTTCCAAAAGAGTTACAAACGAACTCCGTAATTATTATT
+CATGTGTCTCCTCTGTCGACACTGGAATAAGAATTAAAGTCATTGAAGGA
+AACATTATGCATTTAAAGGTTGGTTAAACTTTTTTTTTCTAGGATGTTGC
+TTTAAATTTCTCAACTGACATTAACGAATATATTACAAATAAATGAAATA
+AAGTTCCTAGAAAAAGATTCGAAAACTATTTGTTCCCGTGGACTCAATTT
+TCCCAATAACTAGTATTTTTCATGTTTTCTTTACTGTATGATTAGATCAT
+GTGGATGTTTTGATATAAAATCACTCGGTTTTGTTGAAAAAACAATATCG
+CTTCAGGGAATCATAAAAGGAGTGGAAGAAACGCCGTACGAAGGTGGTAT
+TTTTGAGCTTGACATCAAAATCGGAGAATCTTACCCATTCAAAGCTCCCA
+CTGTAACTGTAAACCTCTGTGGTATCATGTAAAAATATTTAATGTTTCAG
+GTAAAATTTATAACCAAGATATGGCATCCATCAGTGAGCCCATTCGACGG
+GACCATATGCCTTCATGATGTGGACAATGGAGTTTGGCCAGTATCTATGA
+CAATTTACAAAGTGTTAATAGTTATTCAATCCTGGATGTCAAACTTTAAT
+GAAAAGGAACCCATTGACGTGGAGATATTGGAGCAAGCCACAAATAATCG
+AGAAGTGTTCGAGGTGCCTTTAAAATATTTTGAGATAAGAAAATTATAGT
+TTAAAAAATATAGATAACTTAAACACTTTTCAAATATTTTCATAATTTCA
+ATTCTGATTAAAGAAAAACAGTTCCCGTTAGTACTTCAGAGCTACAATTA
+TAATGATTAATAGAAAAATTGACAACAAGTCTGATAACCAATTGTTAACC
+GTTAAAAAACCATTATATTGTAGAAAACAGCCGAGTTTTGGACTAAACGG
+TTTGCCGGCTCGCGAAGGAAACCGTACAACCAAGAGTGCCAGCAGAAAGT
+TCAGCTCATGTCGAGGGTCATACGAAATGAAGAACTCTCAATAATCGCAC
+TGAGCTATCACAACTGGACTCTTCCTTATGATGTTCTCGAACAAGAAAAC
+AGTTTATGAACTATTTATATTTTTATTGTATGTTAAGTTATTGTACATAT
+TATAGTTTGAGTGTTATTTTTGAAATAAGTTTGTAGTGAACACTTTAAAA
+CTGTTATATTTTTGCTATTTATTATTTCTAAATATAGCCAGGAAAAGTCT
+TCAAAATACAGTATGAAAAAAAGAAAAATTGTTGGAAGACTTAAAATTAT
+GATACAGTCCGTGCAATATTTTGATTTCAAACGCTATTTTTTTGGTTTCA
+ACAAATTTTGGCATTTATTTCGTATTTGAGAAATAATTCCTCATATAGTC
+AAAATTTCCCTGTCAAATGTTTTTCATAAAAACAATCTCTGTTTTCTTGA
+TATATTTTAAATCCAAATTGTTGGTAAATTTTAATTTTGAATTTTTTTTA
+TCGAGAATTATGAGAAAAATAAGGTACGGCCAGTAAAAGCTTGGTCAAAT
+CTAAAACATCAATTTTTAAGTCATTGTTTAGGATTAGCTGATTTTGATTT
+TTGGTACATAATATTATTTAAAATTTTGTTTTCTGAAATAATTATAATAA
+TTAGCGCAACATCTGTTGTCATCGCCATCTCGTAACTAACACGTGCTCAT
+TGTTTTTCAAGCTTTAAAAAGTTTGAGGCCAATGCAGTTAGATTAAAAAA
+CTCTATGAAAGACTGTTTTTTGATTTTTGATGGCATATTAGACACATTCA
+TTTGAAGCATAAATCGTGAAATCTAACAAAAATTAACAAAAATGAAAATA
+GGACAATTCAACATTCAATCGGCAAAAAGGGTATGACAGCAAAATTAAAA
+ACAAAAGTTGGCAACAACAGAGAATATAAAACTTTCGAGACTGTTCTAAA
+CCGTTTCAATATGTAGTACTGACAGAAATAATTGTAGAATTTTTTGGCAT
+AATACCCATGTAGAGATCAGAAATTACTTCTTTGGCTCCGGTCTCCTTTC
+GGTGGTTATTTTGCATGTGAAGCCCCATTTCGCTTGCAACATGTGTGTGA
+TATTCGCAAAATGAGCATTTTATCAGAGCCCCTCCGGATCGTTGAGCAAT
+TTTGTATGAAGTTGGCGTTTGATTTCCATTCTGGAATATAGATTTCAATT
+GACGAAATAATTTGGTTCTTATGTATTATGTGCACACACGCATTTAAAGC
+TTTTCCCAATATTTTAATATTCATTTTAGTTTTAAATTAGTGAATTTTGT
+TTAGAATAAAGTTGGGAGAAAAAAGTATTGATTTTGTTATCAGAAAGTAT
+GCCTGTTAAGTAGTACTAGGGAAGATCCACTTTTTAGAAATGCTAAAATT
+CAAGAAAAATAATTTTTGTGAAACGTGTTCAAACGTTAATTCTCATGATT
+ATGATGTATCAAAAACAGTTTTTTTGCAGATTGTGCGATGTTATAATTTT
+TAGCTTTTAAATAGTTTCTTGAAAAAAATGTGTTTTTTAAATATTTTTTT
+TCTTAAATAAAACAAACAATTGGGCTGACTCAAATTTTGGGCCTATGAAA
+AAGGATAAGATTTATCTATCGAGTTGAGTCACACTATATTTATTTTTTCT
+TGAATCAATTGCGACAACCTTTTGGTTGTGATATTAAAAATAAACGTATG
+ATTTCAAGATCTTCCAAAGAAGGTTGTTAATTGAAAAAAACCAATCAGTT
+AAATAATATTTCAAAATTTTTATACGATACACTTTTATCAATTCCAAATA
+CTTACCAAAGATGGCTGAATGAATCCGTTTCGCATATTGCAAGATATATT
+CCTAACAACGTTTGCCAGAGTCAAATGATCAATGTTGTGATGTTTGGTTT
+CGTGGAATCCCACCACTTCTTTTGTATCGTCAGAATAATCGCACAATTTG
+CATCTGTACAACTTATTCCATCCATGCCTGTCACTGTGCTCAAAAGAGTT
+GTTCACTGAAGCGCATTTGAAGTCACATTTGTCGCACCGAAACTCAACTG
+TTGAGCTGAACTGCTTGCTACGATGTGCAGCTTTGGCTTTTGAGCTCATT
+GGGAGTTTATTTTTTTCACGGACGGGCTCTTTAATCGGTCTTTTTATTGC
+CGCATTCAATCGATTGAGCAGCGCCATTCGCGCTCTTCCTTCTTCAATTT
+TCTGCTGTCGAACATGCTTTGCATATGCTTTTACGACATTATCATCTGTC
+ACATCAATATTATGGATCCTCAGATGTTGAGTCATGCAACTGGCAGAATT
+TACATTGAATGTGCATTCACTGCATTGAAAGTTTCGGTCTTCTAATTTTG
+AACTTTTATGGTAATATGTGTGCAATTGCATGGCATCGCAATCAGAAGTT
+TTAAAGCTGCATTCCAAACACCTGTAATTTCTTTCAGGAAATCCTCTTCC
+AAGCACTTTTCTCATTTGGAAATAGAGTACGTCGATATTGGAAGCGAATT
+TTTCAGTGTTTTCATTGTCCTGAGAACTGTTACTTGACGGTATAGAAGAC
+GAACCTGGTGGTTGATTCGAGACAATCTTTTCCTGGAAATAGGAAGGTTT
+TTGATTTAGCTTCTGAATCCGACTCGAATGACGCAGCGGAACACATTCTT
+GTCCCTTCTTTTCTTCAGTAACTTCTTGAGGTGGGACTGCTGATGATATT
+GGAGCAGCTGGTGTAGATTCCTTTAAAATTAAACTATGTATTAAACAGCA
+GTAAAAAATATATTGCTAACCTTCTGAGTTGTACTCATTTTGTCGTTTGT
+GCCTGTTGAGCACTGCGAATTTTCATTCTTAGTTTTTTTAACCTGCTCGT
+CTTTGACAGCAGAGTCTTCGCCGTTTTCCGAGTTGCCAAAAGAACTTTCT
+TTTCTCGACTCTTCCAATGTTTTCTCAATGGAAATTTCATGTCGGTCAGC
+AACATTGTCCTTCGGACTTGGTGATTCTTCTTTTATATCTACATCCTCTT
+TGAGCGACAAATGGAAATCTTCCATTGCCTGCATAGGAAGTTCAGCTTCA
+GCTGTGCTAGTTGAAATCTGACATGGCGGCTTGTTATCCGGACCGTTTAA
+TTCAGATTTAATCATATCATAGTTAGTCATTTCGATATCGTTAACATAAT
+CTTCTTGTTCCATTGAAAACACATCGTCAGTTACTTCCATCGTTACTTCT
+GGCTCTAATACAGTTTTGATGCTCATTTCTTCAACAATTCGTGGTACTGC
+TTCGTCGGGAAGAATGATCTGAAAATGTTATTCAGCTTTAAAAAACTAAC
+ACTTTGGGATACGAACCTTAGCAGAATCTTTTTCCCCAATAATGAAAGTC
+TCTCGTTCAAGTACTGGACACTGCTCGTCATTATCAATAGTTTCAAAAGT
+CTCTTCGGTTTCCATATCCGCAGTTTCAGAAATCCCAGACGATATCAATG
+ATTGAACATTTAGATTGTCGGTTTCTTTTGTATTTTCGTATTTCGACAAC
+AAAACAGATAGCTGGATTTTTCCTGCCAAAACAACGCTATCAGCATTTGA
+TGCTCCAAGTTTTGATGATGAAGCCGACTGATCATTTTCTGCATTCACAT
+CCTTGACTTCGAAAATGTTGTTATCTTCCGATAGTACAACTGGAGATGGC
+AATTCTGCCGGAACCATTTTATCAATCGTTGGTGCTCCGCATGTGGACGA
+TGTATTGAAAATAGATGAGACTCCACGATTTTTCAGAAATGTTCCAACGG
+GCATCTGAAATTATACCTTTCAATTAATATAATCAGTATGGATGTGACTC
+CGGTCCAAAAATCACTAATAATGGTAGTGAAACTTCGTTTTTGTTTGGAT
+GTTTTTATTTATAGTAAAACATAGCCATTACTCAATTTCGAACTATCATT
+ATTTTGGAAGCCAACAACAAAACTTTACATCTACAATTTTTATTTTTTTA
+ATTACATAGTAATTATTTGTATTCAAAAGTTGAAAGCTTCAGACCTATAG
+CAATCCTAGAGATTTTAAGTACGCATGTGTGAAAAATTTGACAAATAATC
+AATGCTTTGACTGAGAGTTTTGAAACATCAAACAACTTATAGAAATTTTT
+ATTGTGATCGACTGTCATTTGAGACTATTATGAGGGTACTTTTATAAAAC
+CCCTATTGCCGATACAGAATACTCACTTTTTCAAACTGTTGCAGATTTCT
+GGGTAACTTGTATGACGACGTTGACGGTTGCTCCGACGATGGAGAAGTAC
+ATTGTGCTTTTTTTGGGATGAGAAACTTTGCAAATCTTTCATCAAAATTT
+TGATCCATCATTAAAGTCATCCTTCTTTTCATGGCCTCAATCGTATCATC
+AACTGAATCCACTGAACTTCTCGAAATGCTATGGCAAGGCTTCGTGACAT
+AACTATGCAACGATGATGTCGGGAGACTACTCGATCCCGATGGAGTTGGA
+ATTTCCAGTAAGAGTGGTTCCATCTCAATTTGGAACTGGGAACTCTCAAG
+CTTCTTTAGTGATGGTTTGACTGTTCTATTTGACCGACGTGTACCAGTTT
+CTGTCTGATCGGATGAGGTAGAAGCCAGTGATCTAGATGAGCACGGTCTA
+GAATGGCCAAAGTCCATGTCATCGTCAATGGTTTTGTTGTATTTCCTTTT
+CAAAGCCGGCCCCTTAACTACACTACAGGTTTCCGATGACGTTGGTTGTT
+GAACTTCCAGCATTGGCGGAGGCGAAGGTGATGGCGAATTTTTATACACC
+ATAAATGGGACAACTTCTTGTGCAGTTTCCGCCAGTTTTGCTGTCGGTTT
+CCTTTGCCGATTTGACTGCCGAATCCCAAAGTCCTTTGTGTGTTCTTCCG
+AGCGTTTCGTTCCAGAAATGGATTGTTGCATCAAATATGCCTCTTGTTGC
+AAAAGCAGAGGTGGCGCATCTAAACTTAATTCCGCATCAGATTCAGTAAT
+AATATCTATACGTTTTTGTTGCTCTTTTGGAGATGTCACTTGCGGCTGCA
+CAAAAACTGCGGAACTATTAGGTTTGTTCTTCTTTTTGTAAGGACCTCGG
+ACATATACTCTTTCCGGAACTGGTTTTGGTTCCTTAATGTTGGTCTTCAC
+ATATTTTCTCTTTGGCTTAACTTCTTCTGTAACTTCTTCCTGAACTTTAG
+TCGAAATTCTTTGAGCACTGGTGAGACTTCTTTCAAAGTCATCGTCTTCT
+TCATCATCCTCTTCTTCTTCTTCATCACTCAGATCATCTTCACCTTGATT
+CTTGCCACTGGCTGCTGCAACATAATCAAATGTGAATTTTTTTCGTGCGG
+AGCGACGAATGTTGTCACATTCCAATGATACAGTGTTTGGCTGCATTCTG
+AAAAAAAAAACGTTAAATTTGCATTCATTTCCCGAAAGACATATGAAAAC
+AAAAAGACAAACTACAACGAAATTAATATCAGAATAGTAAGGAGAAGCAA
+GAAATTAGAAAATT
diff --git a/Demo/DQ6060.fa b/Demo/DQ6060.fa
new file mode 100644
index 0000000..24f01ad
--- /dev/null
+++ b/Demo/DQ6060.fa
@@ -0,0 +1,3 @@
+>DQ6060 TTA TETRAHYMENA THERM. CY SIN
+GGUUCCAUAGUAUAGUGGUUAGUACUGGGGACUUUAAAUCCCUUGACCUG
+GGUUCGAAUCCCAGUGGGACCU
diff --git a/Demo/F22B7.fa b/Demo/F22B7.fa
new file mode 100644
index 0000000..9cd7c20
--- /dev/null
+++ b/Demo/F22B7.fa
@@ -0,0 +1,806 @@
+> CELF22B7 C.aenorhabditis elegans (Bristol N2) cosmid F22B7.
+GATCCTTGTAGATTTTGAATTTGAAGTTTTTTCTCATTCCAAAACTCTGT
+GATCTGAAATAAAATGTCTCAAAAAAATAGAAGAAAACATTGCTTTATAT
+TTATCAGTTATGGTTTTCAAAATTTTCTGACATACCGTTTTGCTTCTTTT
+TTTCTCATCTTCTTCAAATATCAATTGTGATAATCTGACTCCTAACAATC
+GAATTTCTTTTCCTTTTTCTTTTTCCAACAACTCCAGTGAGAACTTTTGA
+ATATCTTCAAGTGACTTCACCACATCAGAAGGTGTCAACGATCTTGTGAG
+AACATCGAATGAAGATAATTTTAATTTTAGAGTTACAGTTTTTCCTCCGA
+CAATTCCTGATTTACGAACATCTTCTTCAAGCATTCTACAGATTTCTTGA
+TGCTCTTCTAGGAGGATGTTGAAATCCGAAGTTGGAGAAAAAGTTCTCTC
+AACTGAAATGCTTTTTCTTCGTGGATCCGATTCAGATGGACGACCTGGCA
+GTCCGAGAGCCGTTCGAAGGAAAGATTCTTGTGAGAGAGGCGTGAAACAC
+AAAGGGTATAGGTTCTTCTTCAGATTCATATCACCAACAGTTTGAATATC
+CATTGCTTTCAGTTGAGCTTCGCATACACGACCAATTCCTCCAACCTAAA
+AAATTATCTAGGTAAAACTAGAAGGTTATGCTTTAATAGTCTCACCTTAC
+GAATCGGTAAATCCTTCAAAAACTCCATAATCGCGTTTTTATCATTTTCT
+AACACATATTGACCATTTGGTTTGTTCAAATCAGAACAAATCTTAGCGAG
+CATAAAGTTAGATGCGATTCCAGCAGAACATGTTAATCCCGTGAGTTGTT
+CAACTCGAAATCGAATTTCTCGAACAGCCTCCTCTCGTCCAGTTCCGAAC
+TCCACATGGTCGTAGTAGATTTTCCGCGATTTTTCGCATTTTGGACAGAT
+CGATTCTTCGATTTTCAAGTCTTCCAAAGTATTTTCATTCTCGTCGAAAC
+GGGGTAACCAACATGGACAATCTCCGCCGAATCTGTGACGCTTGAAGGTT
+TCTAGTAAGCAAATAGTTTTTTGTTAATAATCAAATCTAAATCACTAACT
+TTTTTCTGTATTACTTGCCACATAGTCTGTCAAATCTATAAATGCCTCAT
+CCAATGACATCATTCCAACATCCGAATCGTATTCCATGAAAATTTGTGAA
+AATTGGCGACTGACTTTAGTGTATTTAGGGTAATTTCCTGGAACAATCGT
+TAGACTCGGACAAAGTTTATTTGAGATGAAGCCAGGCATTCCAGCACGGA
+CTCCAAAACGGCGAGCCAAGTAGTTGGATGTGCTCTGAAAGAATAGATTT
+AAAGCTTTTCCGAAATCGAAAATTTACTTTTCAAATTGAGTTAGGTGCTT
+ACCAGCATTGCCGATGAGCCTACGGCCATAGGAACTGTTCTCAGTGCAGG
+ATTATCTCTCATTTCAACTGCGGCAAAATAAGCATCCATATCTATACAAA
+CACAGTCTCTTGATAAATCTCTAGATGATTCCAGTTTCATCTCAAGATTC
+TCCATCTGAAAATTGGAAATTTGCTCTAAGTAAATTTATTAGCTTTTAAA
+ATACATACCAGTATCTCAGATTTTTGTCTTTCTTCTCTGGTTGCTGTTTG
+CAAACGATTTTTGATTTCTAAAACTTTCTCTTCAATTCTTGATTGTTGTT
+TTTTGGAAAACGACGAGTAGGACGCTGATGTGTTTTCTTCGATGACTTTC
+GTGATTTTCTCCTTATCCAGTCCATTCATTCCAGCTTTATTATCGTTGAA
+AGTCAGCATTTTTCACGAAAAAGAGCCGGATTTTGAAATTCGCGGAGAAA
+CTCCACTGATTGTGAGTGTGCAAATGCGCGTAATGGTGTACTTACGTACA
+TCGGCAACACATTTGACGACATATCAGAAAGCGGCGCCAAATTAGAAGTT
+GAGTGCGCGAGAAAAAACTACGCGTTAACCGCCAATTTTCACTTCCCCAC
+AGATCTGTCTCGAGATTCTCGAGTCATTTTTCAAGTTTATTTGTTTGTCA
+GCGGTTGTTTTATTGAAGATTTGTAAAATTTATAACAAAATGTGCAATAG
+TCTATTAAACCTCGTGAGATATTTGAAGAAACTTTCCCCGTTTTAAATAT
+TTCGTGTATTCGTGGAGATCGCGGGAATGTTTTGCCTGTTTCCGTAAAAT
+TCCTCTATTTCTTTTATTTTTGCTTGCAATTTTCGATTCATTTCAGAAGT
+TTCCACATTCGCAAAACGAATGGACGTCTCTTATTACGATGGTCCCAAGG
+ATGAAGTCGCCGAAGCAATGCTGAAAAGCGCGGTGACGGCCATGAGATTG
+GGACAATACGAGGATGGAAAAGGACGCTTAGAGGAGATAATGGAGTTCGG
+AACCTCAAATTTTCAACTACTTGGTACAATCTACATGTATTACGGAAGAG
+TGTGCAGGCATTTGAACCATGATGCCAAGGCCTTGGAGTTTTTCGAACAT
+GAGTTGAACATGTTCAAGTAAGTGAATCACAAAAATGAGCTGGACATTCT
+ATAACCTTAATTTTTCAGATTGATCTTCAACTACCCAGAAGCATGTGATT
+CCACACGTCGCATCGTCGAGCAGGCACTCAAAATGGGAAAGTTCCCCAAG
+GCTCGACGGTTTGCTGAGGATCTCATTGATTACACCAGCAATAAGAAGAA
+CGGAGAGAAGTATATCGGTCAAGCTCGAATTTTGTTCGCTTCCGTGTGCC
+TCGAAGGATGTGAAAGAGACGTCGAGAGTAATCAAGATGAGAAGAAGAAG
+CTTTTGTCAATATGTGCTGAACAGATTGCAGCCGTGAAATTGTTCAACGA
+GAATAATACGGAAGGAGCTGTGTCTGAGACCAAAATCATGTTACTTGAGG
+CGAAATGCTTGTCACTAGACGAAAAATACGAGGAATCGCGTCGCAAGTAT
+CAAGAATGCATCGATTTTGCCATCAAAACAGACCAGTTTGAAGCAGTTCA
+CATCGCCTATTACGACAAGGCTCTATATGCTGAGACAGATCTTCTTTTCT
+TTATTATCAGAGATCTCAGGTAATTTTTAGTTTTAACGATTAATAAAAAT
+ATCAATTCTTTATTCACAGAAGTGCTCTCTTCTACGCCACGAAATTCGGA
+AAAGAGCGAGATGTAGTCAAATATAAGTCGAAGCTATCCGAAGAGATGCT
+GAGAAATGGCGAATTCCACGAAGCATATCTCTACGGATTGGAAGCGCTTG
+TATCGATTCGGAAGCTTGGATTGAACGAATACATTGGAGATGTGTTGCTT
+ACAATCGCAAAGTGCCTCATTGCACTTGGAAAAAGACGCCAAGCTGCTTA
+TTTTATCATCTTGGGGAGTGTTCTGACCATCAACCAAAACAGTTTCAAAC
+TGTTCTACGAGCAGATCGACGTGGCGATGAATCAAGAGAGAAGCGAAACG
+GCAACTGATCAAGATGTATGCCTCGCAATTGATTCGTCTCCTGATCCGAC
+ATCCTCGAATGACATGATTAATAAGTTCGTCGTCGAACTGGAGCACGCAA
+CAAATGTGGAAACCTGGGAAATGATTGTCAACGGAATCATTGACGACCAG
+AAGAAACCAGTGGCGATCGAAAAGAAAGAGAACGAGGAACCCGTAGACAT
+GATGGATCTCATTTTCAGTATGAGCTCACGTATGGATGATCAAAGAACTG
+AACTGCCTGCTGCCAGATTCATTCCGCGTAAGAAATGTTATAAATAAGCG
+TATAAGTATGCAAATTTATATTTTTCCAGCTCGTCCAGTGTCATCGGCAT
+CGAAAAAGACTACAAAGAGTCACAGAATCCTCCCTGGACTCCGTGCCAAT
+TGGACAAAAGTGCAGTCGATGAAGTTCGATGGTCACACAATGAATAGGAT
+CCTGAAGAGGTCGAAGAAAAGCAAATCGTCATTGGATTCTACAAATTCGA
+TGCAGGGCGATGATACTCGAAGCGATGATGTGACAATGACGTCCAAATAG
+GACCATTATTTTTTCTGTCAAATAATACAATCAAACTTTCTTTATTTATT
+TTTTTTTTACTTTCTTTCAGTAAATATTATTATCATTTTAGTGGTTCTTT
+TATTTTATTTGCTGGTCAGAAAAGCTGATTTTTTCAATTAGCGAAAATCC
+ATCAAGTCATATTTCTATAGACTCTTTACTACATACGTTGATGACTTTCG
+TGATTTTCTCCTTATCCGGTTCATCCATTCCAGCTTTATTATTGTTGAAA
+GTAAATAAGCATTGTTTCCCGAAAAAGAGCCGGATTTTGAAATTCGCGGA
+GAAAAAGTTGAAAATTGAAAAATCCAAACGATGCTCCGATGTTCCGTCCG
+AAATGTGTGTTTTACCGTGACGGTGTTTGCAGACAGCTTGAAAAAACATT
+TATTTTTTTATTTTAATTTTATTAATTTATTATTTATTTTAGAATGTTCT
+ATATTTTAAAATGTGAATTTGTTTCAGGGTACTCGGAATGTTTGTCTTAA
+ACCGTTCAAGCGGGCTCATTCATCGATCTGTACCTTTATTAGCTCAAGTA
+TCCACGCCTACGACTTCCACAACAAAATTAGGTTAATAATTCTCCATTTG
+GTGATAAACCAATTCTTTTCTGCTTTTTTAAAACATTATGTTACAGCTCA
+ACTTCACACAACGCATGCACTAAGCAAAGAAGATTATTATAAGACTTTGG
+GTGTCGACAAAAAATCTGATGCAAAAGCAATCAAAAAGGCTTATTTCCAG
+GTAATATAAGTTTTTATCGAATACTTTGTAAGTATAAATACGTTATTTCA
+GCTTGCCAAGAAATACCATCCAGATGTAAACAAAACAAAAGAAGCGCAGA
+CGAAATTTCAAGAGATTTCTGAAGCATATGAGGTATTTTCAACAAACAAT
+AGAGCAGGCTCGAATCAAAAATATTAAGGTACTTTCCGATGACACAAAAC
+GTCAAGAATATGATGCATACGGAAGCGGAGGTGGCCCAGCTGGTGGAAGA
+GGTGGTGCTGGAGGTTTCCACCACCATGGAAATGTTGATGTTAACGAAAT
+TTTCAGAAGAGCATTTGGTGGAGGGGGTGGAATGGTGAGTTCTCCTTATG
+AATTCTTCTGAATATTATATTAATTATATAATTTTTATTGTAATTAATAA
+AAACTACAGTTTTATTTATTTTTTCGCTGATTCCAGGGTGGCTTTAATTT
+TGATAATTTTGCCCAAAGTGCTTTCGGACATTCTGCTGCTCAGGAAATGG
+TTATGGATATTTCGTTCGAAGAAGCTGTCCGAGGAGCCACCAAAAATGTT
+TCTGTAAACGTAGTTGAAGATTGTCTGAAATGTCACGGAACTCAAGTTGA
+ACCAGGTCACAAAAAGACGTCGTGTCCGTATTGTAACGGAACTGGAGCAG
+TTTCTCAACGTCTTCAGGGTGGTTTCTTCTATCAAACAACTTGTAATCGA
+TGCAGAGGAAGTGGACATTATAATAAGGTAGAGTTATTGATTTTTCTTTT
+ATTGTAGCTTTTAATTTTTTCTTCAGAATCCTTGTCAAGAATGTGAAGGT
+GAAGGTCAAACCGTTCAACGACGTCAAGTATCATTCAATGTGCCAGCTGG
+AACTAATAATGGAGATAGTTTGAAGTTCCAAGTGGGGAAAAATCAATTAT
+TTGTTCGTTTCAACGTTGCACCATCTTTGAAATTCCGACGTGAGAAAGAT
+GATATTCACTGTGACGTAGATATTTCTCTGGCTCAAGCTGTTCTTGGTGG
+TACTGTAAAGGTTCCTGGAATTAATGGAGATACATATGTTCATATTCCGG
+CAGGAACTGGCAGTCACACTAAAATGAGGTAATAAATCTCCAAAAATTGG
+AACTTAAATATTCATTAAACAATTTTCAGATTAACAGGAAAAGGAGTAAA
+ACGATTGCATTCTTACGGAAATGGAGATCAATATATGCATATTAAAGTAA
+CGGTTCCGAAATATTTGACAGCCGAACAGAAACAAATTATGTTGGCTTGG
+GCTGCGACGGAACAGCTGAAAGATGGAACCATCAAAGGATTGGAGAAAAA
+TCAGAAAACCGAGGAGAAGGAGACGAAGAAAAATGAGGAAAAGAAGTCTG
+AAGGTGAAAAAATATGATTTCAATTTGAAACAAAGGTTTTATCAAAAAGT
+TGTCTTTAAAAAATCGAGAAATTACCAAAAAAAATTCATTAATTTTTTTT
+TTTTAAACCGACATTATTGGTTGTAAAGATTCAAAAAGTTTGTAAAATTT
+TAAAGTTGTTTGAAAAATACCTGAAAGTCTTGTTTTTTTTTTTGCATTCT
+GATGCACTTGTAATCTCAATTTTTCCCCAAAACTGATTTTTGATTCTTTT
+CAATCCAAAATTACTAATTTATAGGTGCATCAGAATCACAAAAACGGAGA
+AGTGAGCCAGTAGCTGAGAATGCAGAAACTATTGACGAAAATCAAGAAAA
+CGAGGGATTTTTCGAAAAAATTAAACGAAAAATTTTCGGGTAAATATATA
+AATTTCTAAACAAAAATTAAATATTTTTGTTTCATTTGTATTAATTGAAA
+TTTTCCAGATAAGTCCGAGGAGAAGTCCGAGTCAAAAGAAGAGCCAAAAA
+ACGAAGAATCTAGTGAAACCCCCGAGAAAAAAGCTGCAGAATCCTAATAT
+TTGTCGCAATTTATCGATTACTGTCCCAATCTTTCCAGTTTTGTTCCCTT
+GAAATTTGTTTTGTCTCATTTGTAGTTCTATTAGAGTGATTATAGTGTCT
+TTTTTGTTACACTTGTTTTTTTTTTCTATTTTCAATTAAACCGAAACAAA
+TTTATCAAATTTTATTCAGAAAGAGATAACACAACTAGCAATGATATGAA
+GAGTTTTATGGATGAAACTGGATTTTTTTAGAAAATGGTCTGTAACTTGG
+CTGAACATGAAAATATCAAAAACCTCAAAATTGATAAAATGTGGTAAAAT
+GTTTTTCAGTTTTACTACACAACAAAGATTTTTTTATGAAATTAGATGGA
+TGTTGAGTTATGACTGGTAGAACAGAAAAGTTTTCAAAAATTTTTGTGGA
+TTTTGGTAAAATGGCTTTGACTCAATGTAACGCAACGAATAATTGGTATT
+TAAAAATGACAAAGATTTTAAAAGAAAGAAAAAACATTTCTGATCATTAT
+GTCAGTTGAACATTTGTTTCCTAGGCATTCATGTTTCAAGATACGCCAGT
+TTGAAGATACGCAGTTTAGTGAGTTTAGGAAGTTATATTCTCATTACAAG
+CACAGGTACATGAGAAAACAGCAGTCAAAGAAGGGCGGTATTTTTTAATT
+TGGAATTATATTTTGCTCCTTATAATATTGGGAACACATCTGTGCTGCTA
+AATTATTGTTTTGTTAATTTAAACCGAAACAAATTAATCAAAATTTATTG
+TAAAATAAAAATACAACTAGCAAAATATTTTATAGGACAAAATATGAAAA
+ACGGAATGTCGTGTGAAGATGGAATTGAAAAGATATGAAATCATTGTGAT
+CTGTTCAGGCAAACTTTATAAAAAGCAAGGTTTTCGGGATAGTTTGAAAG
+AGCAGATCACCTGGATGTGAAAATACGGTGACATTTTTTTGGAAAAGGGA
+AAGAAAATGAAAAAAAATCGATAATTTATAGAAATTTTAGCCCGTTTTTA
+ATTAGGGAAAGGGCGGTGAGTTAAGGATGTGAAATAATTGAAATTTCAAA
+ATGGAAAAGTGGTTTTTTTTGCACAGAATTTTTCATTTTTCATCTTGAAG
+GTTATATTAAACACGCGATGACTGTATTTAGAACCCATTAAAATAATGGA
+GAAAAATGTCTCAAAACTGAAATACTGATTTGAGAAAACCATTTTCCCTA
+TTTGAAAACTAAAAAAGATGACAAAATATAAAAATGGAAAATCTATTTGA
+ATGCACGATTGAGAGAATATCTTGAATGACAAAATCTACAACTTTGCATA
+TCAATTGCAGACGATGACGTGGAAATGGTAGCAGCATCGGCAGTTTGATC
+AATATATCGAATACATCGGATATCAGTTGGTATGAATGGTATGATGTGTT
+TGGAAACATAGAGATTCTCCACTATAAAAGCTTCTCGGGACATGTTACGA
+GCTCGCTTTTGCATTAAATTTGCGTAGAGTTCTGATACAAGGACTACCTG
+GAAATATTTCAATTTTCCGTTGATCAACATAAAAAAGCAAAAAAAAATGC
+TTTTCAAAAAAGGCAAAAGTTTTTTAAAAGTTTCAACTATATGCATATTT
+TTGACCACAAAACCAAAACAAAACAAACTCAATAATATAAGTAAAGAAAA
+CATTATGGAAATCATTTTCTCGCAAGGTCTTGTAAAACTAAATCGCACTT
+GAAACTGACTATTTATATATATGAGAAAAATGAAGGAGTCCTCCAAAAAT
+GATGCAACTCAAAAACGAAACATCAAAACGTATTTTTCAACATTTCGCAT
+TTCGCATTAGAGACATTTCGCATAGAACGGATTTATGTGGAAATTTATGG
+ACGTTTTCGTCCTTTTTAGATACATGAGCACATGTTCTCCTGTTTTATTT
+AGAGAGATGACTTGCTTTCAAAATTAAAAAAAAAAACTGCTTATACATAC
+CTTTCCTCCTACAACCGCCAATGCAGATCTAGCGTCTTGAATTTTTCTTC
+CGAAATAATGAATCTTTCGAATATACTGTACTCCTACCAAATCAATGCAC
+ATTGTAGTTATTGCAAGACCTAAAAATATTTTGAATTTTTGTTTTTTTTT
+CATTGAAAATTTACCTAAAATGATATAGAGCAATATGATATACATGTATC
+CGTCCCTTCTGGGCATCAAGTCGCCAAACCCGACCTAAAAATATTAATTT
+CAAAGAGTTCAACAAACTGGAACAAATTACAGTAGTCATTGTAATGAAGG
+ACCAGTAGAATGAAGTGAAGAAAGACCACGGCTCTAATTTTGACATTAGG
+ACACCGCCAAACGCTGTATATACTATCAGAATAGCTAATACCAGGAATGC
+AGGAATTCTGGAAAGACAAAAATTGAGATGAGTGAATTAAGTTTTGAAAG
+GTAATTTTCAAAATCCATTAAAAATGTATTAAAAATATTTTACAGTTTTC
+CAACGACCAAAAAATCTGTCGAACATATACAAAAAACCAAAGCCAGCTTA
+CAATGGAACCCCTAGTTTTTGTGATTGATCGATTGTTTCATAAATGTGTT
+TTATAACATTACGAACAAAAAACGCTTCTTGACTGGCAAAAACGTTTACC
+TTTTCTCCTCGATATTCATATCATGCCCCATTCCATGACTGTGACAGTGC
+TCACAAACGTGCTCTCTCCGTTCTTTTCGATGTCGTGACAATATGAGATA
+TTTTAATTTCAAATAGTTTCCATACAACCAAACAAGATGTTCAGATAGGA
+ATTTACCTGAAAATTATTAAAATTATAATACATTTTCTACATTTTCCCTT
+TAAAAACAAATTTTAGATGCGATTAGCTGATCGCAGTAGCTATCAGATGT
+AACTGATGTTTTTTTAAAAACTTCACGTACTACAGATTTTCTAGTAAAAG
+CATATAAGTGCCTGCCCACTTACCCAAGTCAGCGATGGTAACCAGTGTTA
+GAGGTATTCCAAGCAAGGAGAACAATATACACCATATCCGTCCAATGTTT
+GTCACTGGAACTGGATTACCGTATCCGATGGTAGTGACGACGGTTACGGC
+AAAGAAAATGGACGATGAAAATGTCCATGTCTCCGTTGCTGCGTTCTTTT
+TTACCTGAAAATAAATTAAATTATTTTTGAGGTATTTTGAGGTAGTATTA
+TTGTATTAAAAGTTTGAATAATTTTGGTTGAATTTGGAATAGGTTGAAAT
+CAAACTTTTCAAGTAAAAAACAAAGTTTCAATAGAAACAGTTTGAGAGAA
+ATGATAAATAGCTGACCGGAAATGAGTACGAAAATCTACTTTTTAAACTT
+TGAGTATGCTCTGAAATATTTTCCTGTTATTTCCTTTTTCCATATTCTGG
+CTTTCAATTATCTTTAAAAAATTTTAAAGACACATCTTGGTTAAGTGTTT
+GGTGAAACTATAAATCTAAAACTATTTTTAAAGGAAAATCCTTGTCCCTT
+TGGATTAAAAAGAACAAGAATAATTTTGAAATGTTTAATTACAGACACAG
+ACAATTGCTCAGTTAGCGCATAAAAAAATAAGCAGACAATGAACCAACAG
+AACAAAAAACTTGAAAGGGTCTCTCTATCTGACAAGTTAGAGTTTTGTCA
+TCTCCCGCGGGAACAGCTGAGCTTTCTCCACTTGTTTTTGTCTAATCTCT
+CCACATTTTTCATGATCTATTGTTGTTTCTATCTTTTGATAGTCACAAGG
+GACCTCTTGTGTTTTCCGTTTCTATTTCACACCGCCAAACAGACTCAAAG
+AATGGAAGGTTTTGTGGAAAAATAGGAAAAAGATGAATTGGTGAGGATTA
+TCAAGGATGGGGGAAAAGAGGTCGATAAGGAAATAGTTGGGTTAGAGAAG
+AACAAATAATAGTCCGGGTAGTTTGGATGGTTCAGATGTTACTTCTATAT
+TGATAAATTATAAGTTGTGTCGATGCAAAATGTTAATTTAAATAGCCGAT
+CGTAGTTTGAAGCAATCAGTTTACTGGTCAATTTCCGGCACATTTCGGCC
+AATTTTTGCCAAAATATTATATAAGTTTAGTTAGAAAGTTTTCAAAGCTG
+GAAATAAATTCGGCAAGACTTGGCCTAGATTTCCAAGTTTAGCTAAGCTT
+TGATTAAACTTCTGTCAATTTTTCATGAAAACTGTTCGTATTTTTTTATA
+GGGTCGAAATCGGGATGCCTGGAGTTGTGCCCGGATTGAGAAAAAAATTT
+GCAAATAGCCATCTCAATTACTCAATTACAAATTGCTTGCAATACATTTT
+CCGTACCTTCTGGTCGTCACATGCAATCTTTACAACAAAAAGTCCTGTCA
+AACTCACCTCGTTACTCGTCAAGAAATACTTCTCAAATGCGACAAACAGC
+TGATCGGACATATTGTGCATGTGCCGTTCGGCTAGTGACTCCCATTCGTA
+TCGTTCTGCAGACAATTGTGTTCAGGAAATTTTGTGGATTTCCATTTTTT
+GCCAGTTTGGTCGAATTATGTGTTGTAGGTATTGTCAAACAAGTTTCGTA
+AATTTGGCAATGTGCCAAAACTTTCAAAAAAAAAAAACAACGCTTTTAAA
+GTGTTTTAAAATACTTGGTCAATCTGAATTAATATAATTGCATGTAAATC
+CCCACTACTGATATTAAAAAGTTATGCCAATCTAACTTACTTGTCTCATT
+TCCAGCAGCCAAACGAATTAAGTCGTCAACAAACTCATTTTGACGAGTGT
+AGATCAGTTTAAGCTGAAAACTATTATTATTTTGAAAATTTCATATAATA
+TTTCGAAATATTCATAGAAAGAAAACAATTGTGTCCACAAAAATGCTGTT
+GTAAATATATAATTAGGTGCACTCATGTGCTGCCAGGTTGTTCTTTGTTG
+AAAAATTCGATTTCAGGATGCCATAAAGTAAATGGGAAAATATAATGGAA
+TCTAACGCGACATTGTTTAAAATACTTTGGCCGCTTGTGACGCCACACTG
+TTAAGTTTTAAAAATATATAAATTGATCCAAAAAAATTGAAACTAACTAT
+AAGCTTGACGAATAAAATCTAAGAGCCTAATATAAAAAAGAAGCTTTTTC
+TCATGCTAGGTACTAAAAAAGGCGCCCGAAAAGCACCTGGCCACCGCAGC
+CTTTTTTCCAGAAAATCGGAAGTCGTTCGCAAAGAAAATGGAAATGCTTG
+AGCCAACTGAGCCCATCTGCCACGTCAATGAAATAGGCAGATGGCTGAAT
+CGAACGGAAAAGAAGAAGGATGTGACGAGTGAATGAATGGCTTTTTGCGT
+TGAAAAAGTACCACTTTTGGTAGAATAAGATGGGCGAGTGGGAGTGAAGG
+AGTAGAAATAATAGAAATTGAAAATTGGAAACTTTTTCATAATTTTAACT
+AGATTAATTTTAGATGTCAGAGATAAATCAAAATGTGCTTCAAAATAAAA
+TAGTCTGAAATAGTCTTAATCCTTTTTATGCAAAATAAAAATTCGAACTT
+CCCCGAAATTCAAGTGGCATAATTGTTGCAATTTACACAGTAGTTTTGTG
+ATTTTTGCGCCAAAAGACAAATTATTATCAAGTGTGAAAAAAGTGTGCGC
+CTTTGAAGAGTACTGTAGTTCTAAACTCTTGTTGCTGCAGGGTTTTTCAA
+AGTTTTTGTCATTTTTTTAATGTTTATCTTTATATTTTTAATTCATACAT
+GTATTTTAAAAATATATTTTTAACAAAAACTGTGAAAAATCTAAATAGAT
+TTCGCAGCAATGAGAGTTTGCAGTTACAGTTATTATATATCTTTAAAGGC
+ACACACCTTTTTGAAATTAACAAACAATATCGAGTCGAGACCGCGTACCG
+TATTAATATCGCAAAACTTAGAGTTTTATTTGTTTTTATCTTGATGAAAG
+GCTTTTCAGGAGAACGTTTTTTTTTCAAGAAGAATTATCACCTCTCTCAC
+GAATTATCAACTCGTTCTCATTTTATTTCATTTTTAAGTGTACATACACA
+TCGCTGTTAGTTACCATCGCACGGATGGCCGAGTGGTCTAAGGCGCCAGA
+CTCAAGCGAAATGCTTGCCTCATGCTCGAGGTCGACTGGGTGTTCTGGTA
+CTCGTATGGGTGCGTGGGTTCGAATCCCACTTCGTGCAGAATTTTTTATG
+TTTTCAACCTTGACCAAAAGTCATATTCATCCAATTCGGTACCCTATTTC
+TACGTTATCTTGTTCCTCAAACGATGGCCTTATGTTTTGATCTTCAACAC
+TGCATAAGGAAATGTATACCAAAGACGAAGGTCGTTTTGATTTTTCAGTA
+ACTGGCAGCAATGATCCTTAAATCAGACTCCCACGCCCCTTCCGTTGAAA
+ATAGGGCTTCGATCGCCAAACTAATCTTATAAACACTAGAAAAGTTTTTG
+TTAAAAATCCGTATAAAAAGGGAATAATGTGATGAAAAAAGGCATCAAAT
+TTCAAATTTGAACATTTCAAGCTTAACTCGAACTTCAGCTTTCTCGCGAA
+AAAATGAGTCAAATCTTCCAAATTCTTGTGATCTTCGCCATTTTGTCAGC
+ATTGCAAGTGAATGGGTAGGTGAAGTACAGTACTTTATGGCATCAAATGA
+AATATACTCAGATTCCTCTTTCCAACTTATTCGTCAGGATATGACTACGA
+TTGTTATGGATACGGTAACAATGGTTACGGTAATGGTGGATACGGCTATG
+GAAATGGTGGCGGATACTATGGAGGATACAATGGATACTAAATAAAATAA
+ATGAATACTTTTTGACGGATTTTTCATTGAAAATTTATTTAATAAATGTT
+AAGCATTCATAAGTCTTGATGTAGCCTACCCTGAAGTATGATTTCGGACG
+GAATTATTAGGTGTAGGTCGTTTCCTACGTTTGCCTTATATGCAGGCAGG
+CACGCCTTCGCGGAGATCAGGGGTGTATTTTTGCTATCGGGCAATCAAAT
+GAAATATAGATTTGAAAAATTTTGTATTTTTTTTTTCTCTAAATGTTTTC
+AATTTTCAAGCTCAAAACATTTCAAGCCTAGAAGGAATTGTTTCAAATTT
+CTTCTCTCAAGTTGTGGAACTATTTCCAATATAATATATTTATTCCAAAT
+TACTCCCATGTGAACTATAGAACACGTATTGTCTCATCATTTCACTTTTA
+TAGTTTCTGTATTACAACACTTGAATGAATGCTTGGTGTAAACAATTTAT
+CAATGTGATAAACAATTCGATTTGACGAATTTTTCCGAATTCTCAGGATG
+ACCGAGTTTCGATGGTCAGTGGGAGTAAATGAATTGGGCAAATTGGTAAT
+GGAAATCTAGTTTTTATGGTGAGTCATGGCAAAGAAATCAAACATTTAAA
+AATTACAAGTGATAAACCATGAGTAAACTTAATCAGGCAAGCTGGCGTTA
+TCAAGTTGTTCAGTTGTTATAATAAAAATTACAAAAAAGATTTTCAAACA
+ATGTAGATTTTTTCCACTATCAATATTCGGTAACTCAAAATAAGTCTCCG
+TAGCATAGGACCTGGCAGCCTACACCTACATCTACATCTACATCTACACC
+TACCCACACTACAAGTACACCTAAATTAATGGTTCAAATGAGTCAAACTA
+ACCTGTTGTTCCTTCATCATTTGCTCGTGCGGCTGCTCAACACTATAAAA
+TATCAATGCTCCAATTACTGTATATGTACACGTTAGAAGTACAAGTGCAA
+CATGAGGTAGGACGAGTTTAGCAAACTGAAATAGGAAAATCACTTCAATT
+AAAATATTAGAATAAATACTAAGTTTTCAATTTTTAATTAATTAATTTCA
+ACGCGTTTGAATAATTTTGTTAAACTGTCGAGGAAAAAAATCTCATAGTC
+AGCGATCGAATTCTCACGAGTTCTGCCAATTTTTCCTTTTTTTTTAGATT
+CTTGTTTCCAATAGATTACCTTCCTGATTCCAGTCTCCTCTTCTTCTTCA
+TCTTCATCTTTACTTTCATCATCACTTTCATCGTCGATATCTTCATGGCC
+ACTCTGAAAAGTTGTATTAACTTTTTAAAAATTCAACCAAAAATAAAAAT
+AAACAACTGTGTGAATCAAATGAAAAACTTTTAGTTAAAATTCTATAACA
+TTGAAAATTGTATGAAACTAACAATAAAATCACACAGTTGACTATTTTCT
+TCAACGATCCATTTTTGCTAATGATTATAAAATGGTTAGCATAAAAATCC
+TTGTAAAATCAATAAAAACACACAAAATGGGTATATGGGAAAGGGGAATA
+TAAATGAAAAATTCCATGCTTCTAATTCCAAAACCTACTTAATAAACTCA
+CAATTATGGCTGAAATCAAGCTGATTTCTAGCTCAACTTCCTCATTTTCA
+ATGAAAATTTTTGCAGATTTTTTCGATTTTTTTATTTTCCGATTTGCGTA
+CGGACATTGATGAGGGTTATCTGGTGCTTCCTGTTTTACAAGAGTTTTAC
+AAAATAGGGAAAAGAGCAAAAGGCACAGTAAATCTTGTAAATTTAGAATT
+AATGAAAACAAACCTTATCACAACTGTGAATTAAATGACTATCTTCATAA
+TATTCAGCTCTTCCAAGTCCAGCTCTTGTTACTTCTTCACCGAATAAAGC
+TTCCTGAAAATAAAGGGAAAAGGGCATGCAAACGTTTTTGGAAAATCATG
+CAGTTTTTATTTTTATTTTCTAAGATGCATTTTATTGTCCACGGTGTTAA
+CACCTGGTAACTCTATCTATATATGTTTTTTTTTGAAATTTCTTATACCT
+TTAGCTCTGGTATACCTAATTTTTTTAAATATTAATTTTAAAAATTACAT
+GCATTACTAACAGAGATAATTATTCTGATCATTAAAATTTTGTGATTGCT
+CTGGTCCTTGTAGATAAAAATAGACAAAATAATTACCCTCCTCAAAACTC
+TCAACTCTTCATCTGTTGCCACGTCATCTCCGTAAATCAAGTTCTCAAAA
+ATTTTAATATTATGATCAATTGAGCCATTATTATTTTCATAATGATCTGG
+TTTTGTATAGCCACGTTTTTCATTTATAAAAAACTTTGCGATTCCAAAAA
+ATTCCATTATGAAGAATTTGGAGACCGTGCTGAAAACATCCATCAAAATT
+GAGTTAAAGAAAATCGAAATAATTAAATGAAATTGAGTTGAACGTAGGAT
+ATTTATTAATTTGTTTTAAAATCAGTTTAAAACCATTTTTGACGAATCTC
+AAAGCATTCAAAAATAAATAACAGAACATGGGAAAAATTGTATGAGTTTA
+TATAATACGTTTTCTCATGGTACTATTGATTGATCAGTGACAGAGTTTTC
+GATTCAAATTATTATGTCGCCTTGATCAATGAACTGAATTTTCTGAAATC
+GTATGTCATACTATTTACTAAAACTTCACAAGTCATAAAAATCAAAATAT
+CAAAAAAAAAGGATCTAGAGAACTTTCAATTTTTCTCCGTTTCAAAAGTG
+TTTGCCAAAAACCGAAATGGGAGTACATTTCTGAAGATTCCTTTTTTCTT
+TTTTGTTCAAAAAAAAGTTGTTAAGCTGGAAAAAAACTTTGGTTTGAAGA
+GATGGAAGTTGTCTTGGACACACTCACATTTTTGATGGACAGCCTATCAG
+CGAACCACTTTTGGATTCTTGGCGAGAAATTTTTGAATTTTCGAGTCAAT
+TTTCATGTCTAACTTGAGTATATTTATGACAGATATCACATTTTTCGAAA
+ACAACAAAACAGAAATAAAAATTTATGAAAAACAGATTTTTTTCCGGATT
+TCAAAATTGTAAACTAGAATTTAGATTTTTTCTATTAGTAATGCATACAA
+CTTTTTGGAAGGAAAAATACTAGAATTTTAGTAAAATTTGTTTTTTTTTA
+ATTTTCTAATTTCTACAATTTTCCAAAACCATGCAAGAATCCATTCAATG
+TCACCCAAAAAAGCAAAAGTCAAACAAGAAAAATCAATTAAAAAAAAGTT
+GAACCCTTTCAATTTATACACTCACCCTTCTCTGCCGTCTATGAAATCCT
+TCTGGAATTTCAGTGACTCGATCATCCATCTCATGCCGTTCAAGTTCTTC
+ATAGCTGTCATATTCAACTCCTACGTGGTGGTATGTTGAAGCTGCAACAG
+AAAAATTGAACATCAAGTTATTTCTTACAGCTTGAACCTTCAGCTCGCGC
+AGATTAAAAATTGGTAACTCCGTTGCAAAAAAGATGGAGTTGCGTTTTTG
+GGAAGTTTTCAAGATTTCTTACTAAGAAGTTTGGTACTTCGGAGTTATGT
+TGAGTATAATAGGGCAACTACCCAAGTTTATTCTACCTTTAACAATCCTA
+ACACTACTTACCGTAATCATCGTTATTACGATGAAGCAATGCTTCATGTG
+GATTATCACCTTCCTCTTCCATAAGTAGACTGCCACCATCACCACTAGAG
+TCAACTCGTTGATATCCACGAGATGATGAAGTCATCGCTGATGACGTGGC
+ATCTGAAAACTCAATTAATTGATGTTAAATTAATTGTATTATAATATTAA
+GTTCAACTTGAATTTTCTGAATGTATGGAAATTGAGCTTTTTTTTTAGCA
+AATCGCCATTTTGAAAACTCTCATTTTCAAATAGGGTCTAAAAGAGACAA
+AAAGGCAATACCTGTTCATAAGACACTGTTTGAAATTTTCAGTGAAAATT
+TTGGCAATATGCCAAAATTGCAAAAAACTACAAGTTATGATATAAGATGC
+TACGAGAAAAAATAAAAATGTAAATTTCAATCTACATCTTCTAAAAATTG
+TAAGAACATCATGCAAAACCTGCAACAAAACCTTGAAAAATTGAAAGAAA
+AAAGAAAGGTGAGGTAATCTGAGTCAAGGTGGAATGATGGAGGTTGGTGG
+GAAGAGGAAGGAAATTCAAAACCGCATAGACACCAAATATTGCAATGTTT
+GACAGAGGGCGACGAGGAGAGGAAAAAAACGAGATGAGCTCACGGGCGGA
+AAAAAGTTTTTTTGGAAGCGCTAAACTGATTAGTCAGTGGCGGTGGAGGA
+AGACCATTGGTATTGGATGGATAGCCCCCAATTTCGATGATTGACTTTTA
+CACATATACACACCAAGCTTTTGTTTAGAAAAAAGAAACAAAGAATTGTG
+TGTGTTGTAGGATGCCATTTTGAGGCGTGTGATTTGATAAATGAAGACTT
+CAACACCACTACTCCCTTGAGTCCAGATGAATTGAAGAACACGAAAAAAC
+GATTTATAAACAGATGGTTTCGTGTGGTTTCTGTGTTTTAAAAAGGCTGA
+CCAAAAAACTTCTGTTTTACAGGACGATGTGAGGGCTCTTCCAAGCTCGT
+TCTTTCCTCGCGCCTTACCGCAACTACCCATTAGTTTATCTGTGAGTTTA
+TTGAAATACAGTAACCTAGCTTCACCGTATTTCCTCTAATAGTATTTCAC
+CACACCACTTTACTTTAAAAGGTTATATCTTGGTGAACTTCAAAGATATG
+AAAAATTATAAAGTATGAATCGACTAAAAAACGAATATTCTTCCAACTTG
+AAATTTTTGAAAAGAACAAACGACAGCTGAGATATAAGTTGTTAAAGTTG
+AACAATGGGGTCCAACACTAGTAGAGGATCATATTACTCTTTGTAAAACT
+TTTTCGAATAGTGGAAAACTTAGTCGTAAATACACAAAATTAGACTCTAG
+TGACTCATAAATTTCGATCAAAATCTTTGAAATGTAGAATTTTTTGCCAG
+CAAGTTCTGTGAGCCACAACAATCAAAGAAGAAACCATGGAAAATGTTGA
+ATCGGTCAAAGGAAATCGCGGAAAAAGTAGTGGAAAAGGGGCAAAAAGTG
+AAGAAGAACTAGGCAAGATTAATGAGCCGCCTTTTTGGCTCTGAAGAGCC
+ATGTTTCCCTTGTGAGCATCATTTCTTCCGCGGCGCAAAGAATACGGAAG
+AATTGGAACAAACTTTTGATATTTGTTAAATATTTGCCCTTTTGGAAAAA
+ATCGTTGTGGTTGTGAAGGAAAAAACTACAGACAAAACATTTGTAAAAGT
+CGAAAATTGCTTGAAAATTTGCGAAATCGGTGAAACAATCAGAATTTCTG
+GCTTTGCCACCAATACCTAACGAGACCCTGCGTTTAGGGGCGGAGCATTT
+TATTAAGCCATGGAGCGCGATTACACCTTGGAGTGCTTTTCGAAAAAAAC
+CAAATTCAAATAATTTTTTAAAAAATCGAGAAATTATAAGTTTTAATTTT
+AACTTTGCTCTATTGATATGGGTTATCTAGAAGCTAGACTCTCTATAAAA
+AATCGAATAAAAACTAACGCGAATAAATCTTGAAAAGGTCGGAGTGCTCC
+CGAGAAAAGTTTTTGTGCTCTTTTCGTCGTAAGACTTCAAAAAAAGAGGC
+ATTTGGTTTGAAAAATGGCTCTGATCTCTTCGGTTTTTGCCCTCTTTTTG
+TTTAGAATATTTCATCTGGAACAATATTTGGAATCACGGAAAGAAATTTG
+CAGATGGTATTGTTTATAACTTTTATATATTTATGGAAAATCACTCTTTT
+GAATAGATTGTTCCACAAAACCTCACAAAATACTGAAAAAAGGAGAAATG
+GAAGACAGATATACAACGATATAACTTTTTTTGAATATAGGTTAATAAAA
+AATATTTGTGGGGGAATATTTGAAGATATTGGCATATTGAAAAAAAAAAA
+GAAGAAAGCGGCTACCTTTGAGTTTTATGGACAATGGAAATGGGAAAAGA
+GAAGGAATTTCATAGGTAGCTAGGAAAAGGTTCTAGTATATGGAACTACG
+TTTTGGGTATTATAGAGTTCAATAATATGAAAATCAATTTAATGATGGCA
+CAGTTTACACCCTATTCCCGGCAGTCGAACACAAACTTGTGCAAAAAATA
+GTATGTCATTTTTGTTCTAATTTTTCCGAGCAGTCATGTCCGAGTGGTTA
+AGGAGATTGACTAGAAATCAATTGGGCTCTGCCCGCGTAGGTTCGAATCC
+TGCTGACTGCGTGTACTTTTTATTTTCTTTCAATTCATAGAGTAATGCAA
+ATTCTATTAAAATCGGATACAGTATGTTATGAAAAAAAAGTGTTCTTCTC
+GAAAGTATTTGGCCTCGCTTCTTCAGGCTGCTGGTTCTAGAGCAGCAGTC
+AACTCAATTGTTTTCCACTTTTCCTTCTCATTTTCATTTTTTCATCGCTC
+CTTTTTCGTTCCTCACACTCCTCTAATTTTCCCTTTTTTACTCATTTTTG
+GAAAAAAAAAAGAAAAGGAGGTCTTATTTTGTAATCCTTCGGAAATTCGA
+AAGCTTGAAGAAAAACTAATAATGATGGAACTGTGTGGATTATTGAACGA
+GAAAAAGTTTTAAAGGTGCATACAGTAATTTGTGTGTGGTCTCGCCGCGA
+TCTATGATATACCAGCAAATACGGGATTATTACTTCAATATTGATGGAGA
+ATGTACATAGAGGGAACGGGGTTGGGTATCGCTGTCAGAAAAATACTGAA
+AAACCAAAAAAAAAATCCAAAAAAATTGTTTTTCATGATTATAACCTAAA
+CTTCATGAGTAAAAGTATCAAACTATCTCATTCTGAACAAGTTGAAAACC
+TCGGGACCACCACACCAAGAAGTGAGAAGCGCCCTCTTTTTGGCCATTGT
+TCCCGGGGGACAGTTTTGCGATTTGACATAAAAATCGCGAGAATAGTGTG
+TGAGATGAAGAAACGCAGAGTAGTAGAAGTAGGGGTATACGATGTTAGGC
+AAAGAAAAGGAGGGAGCTGGAGAAATGTGTCTGAAGAGCACTGACTGACA
+AAAATGTGCAAAATGTCGGAAGGAGGATGGGTTTTCATGTTTTCGGTGTA
+AAACTGACATAAGAAAAACATAAGAATATTGGTAGAAACTGGTAGGGGTT
+GTTAGGTTTTTCAATCTTTGAGAAATTGACGAAAAGTTGAAGTCTTCCGA
+ACTTTTTTGTGAAATTTAGGAGAAAAGATCAATTGAACGTCGGATTGAGA
+ATTTAAAACTAGATAAGTTTCAACTCAAGCGACGTTTGAAAAGATATGAA
+GTTTTAAATGAAAAATAAACGAACATTTTAAACAGGCAAACAATGCCTGC
+CTACGTGCTTACAAGAAAATTGAAACTAACAAGTAGGGCTACCAAATCAG
+ACGTACGATTTCACTGGATTCCGGACGATCCCGCCCCTTGTTTGTTTCCA
+ATTTACAAGAATATAAATGGTTAGGTTTTCTACGTGCCTACACGTCAACT
+TCATGACTGCCTGCCTACTTGCCTACTATATGGATACCGTGGCGAGGTCT
+TCTGGTTTTGCAAGCGTGCAGGCAAGCAATAGTTTTTTTTCTGTATAAAC
+ATTCTGGAAAATTTAACTGACCGTGGTTTATCAAATACTTCAATACTTCA
+AAAATACAGTTTAAAACATAATTTTTCTTTTTTTTCAACTTCTAAACTAA
+CCTGTTGTAGATTCATCAATAGCCGGAATATCTGATTCTATTGAAGGTTC
+GAACGGCTTAGACGGCGTAGAAGCTGGAACTTTTCAGTCTATTTTCAGTT
+TAAAAAACTTTAACTAACCTTTTTTGAAAAGTCGTAAATATTTTGCTCCA
+GTTCCACGTGGCATGATAGCTGGGGAGCTTTTTCAATTTTGTTTCCGATT
+TCAAAACAATTTTCAAAAAACACTGGTAAAGTGCACTTCCTGCTCAATAT
+CAGCCAGACAGAAACCAGAAGAACACAACTATTTCTGTCTATTTTTCTGA
+GAGAAAAAGAGCATTTTGAGCAATTTTGAGCCAGAGAGTCCCAAAACACA
+TTTTAATTTGAAGGATCCTTGCTCCTGAGCCCCCAGTTTTACGGGTCAAG
+TTAGGCATAATTGAATATGAGGAGGCGCAGAAAAAAAGAGAAGAAAATAA
+ATGAAAATTAATTTTATGGAGCTAATTTTTGAAAAAGAAGCAGGAACTAA
+TGTTTTAATTGTTCGTAGTTTGACTTGATGTGTGGTGAATAGTGTTTTAG
+TGTTTCACTGATCCTTCAAAGTAGATGTTGCACCATGGTCGAGGGCGCTT
+TTCAACCGCTTTGCTCTGTGGACCACAGTTATTTGAACTTTTCTAATTAT
+TTTTTTTTGTTTTTTAGTTTAAATCAAAATAGTGTCACTATTTTACTTTT
+TTTTATATGAACAAAACACTGGGAGTCGGGGTTCCAAATTTTATGAATTC
+ATATCACATCACAGCGATTTTTGTATTTTCAAAAAAAAACAAAATTTCAG
+ATCATTCTCCGGAGGTGGACAGTAAATGTTCTCAAATCAATAAAATTTAA
+TTCGATTTGTGATCCCAACCATCAATATGCATAAATATTTCCCAGATCAT
+TCGAAGAAATCATTCGAAAATGCGTCTTCTTATTCTCGCCCTCGCCTCTT
+TTTCCGTTCTTGTGAGCTCTTTCATCGTAAGTTCTTCTTTTGACTAAAAC
+TGTGTGAAAACCGTGGAAATACGTGTTTATCAGAGTTAGTGACGAAATTT
+TACCTTTTAATGGTATGATGCCTCGTAAATTTAATCAAACCTCTGTAGAA
+AACTCGTGTCATGTCAAGCGATTCGAAATCGATTTCTGAATGTGAAACGG
+AAACCCGTGTCACTTTGATGTCCAAACGCAGGAATAATTCCTTTGAAATT
+CAGATTCGTACTCATGATCTGCAAAATGCACCAAAAGCAAGAAGATTCCT
+GAAAAGTTTTGATCAACCTGAAGTAGTTGATCTTACTAAGGATCCCACTA
+CGTTCCAGGAGTTTACCAAATTCTATGTCCAACTTCTAATCGACGTAATC
+CAAAAAAAAGACACCAGAAGCCTTCATGGCACACAATAATTACCTGGATC
+TTGAAATGTTGTTCAATGAATGTAATGCTCAACATTACGAAAATTTAGGT
+TGGTTTCTGTAATAATATTTCAAAGTCTTTTTTAATAAAATTTTCAGGAA
+TGTTCTTCAAATGGCTTCAACAATTTGCTGCTCATCACGAAGATCCAAAG
+ATCACAATTAAAGATTTCAAGGGAGATAAAACATCAGGAGAAATGATTCT
+TCATGTTAATACCTTCACTTTATTCAAGTACAGACAAGAATTTGACATGA
+AAGTTAGCGCTTTGAATGTGGGTTATTGAATCAATATTTTGAAGACAAAA
+CTAATTTTTCAGGACAATGGACTTGGGTGGAAGATTTTGTTTGTTGACCG
+CAGTCTTGGGTGTAATTGATTCATTTTTTGAAACCGAATAAACTAATTTG
+TTAAATTATTAAATTAGGCAATGGGACAGTCTGGAAGTTGCTAGAATCTA
+CCGATATTTATTAGATATTTATTACTTACTTGCTACTATGTTTCACAAAA
+CAATATCAGAGAAAAAAAATCAAAACTGAGAAAAAACGAAACAACTTACC
+GAACAATAGTTAGCATTGCTTTGTACAAAAAAAACTGTGAGGCTATTGGA
+GCACTCCTCTGATTGATCCGGTCGTGAGTATTGATTTTGTTTGTCAATTT
+GTCTAGGACGCAATTGATTCATCGTTTGAAAAAAAAGCTCGTTCATTCAA
+AATCATTGATTATTTATTCCATGCAGAAAACTGTTTTATAATTCTCGATA
+AAAATGTTATATTTTAAACTGTAAATATTTATTTTTCCACATGATATGGT
+CTAACCGTGGGCGTAATATTTTCGGTTTAGAACGGCTGAATCGAATCTTT
+TGGACTGCAAAGACGGATTGGATTTTGAAACAAACTACGGTGTTTTTGTG
+ACAGTATTAGTCAACGAATGGTAATTAGGCATATGTTTTTGGAACAACTC
+ATAATTTCTTGTTGGAAAACAAAAGTGGCAAAGTATAATTATTTAAAACT
+CTGACAAATCTTTTGTCTTTTTTCTCTGGTACTCCTGTTTTTAACAGTGT
+CCTTATTATGCTCCTATTACTCTTGTGTTGTGCACGTTCTTTTGAAATCT
+ATATTGCAGAGCGGGAATGAATTTAAATAAGAATAATTCAACTTGGTCAT
+TCAAACAATAAAACGCCTACCATTAATATATCCAAAATAAGTTCTTTATT
+TTTGCAAGGTATTCAAATATATCAATAACTCGAGCCTGAAGAAATCCACC
+GCTAGAACATAAAATTAACGATAAATATTAAGGCAAAATGTTTGGGCCGA
+ACCGGGAATCGAACCCGGGACCTCTCGCACCCGAAGCGAGAATCATACCT
+CTAGACCATCCGGCCACTGCCCGGCTGGAGAAAAATGGGGGACTTTGAGC
+GTTACAACATTCTCGAGGCCCTCTCGAGTCGAGGGGGACCGAGACGGAGA
+GTGCTAGGAAAACCAAGCATATTTGGTTTTTGAGTATATAGTCGTACGAT
+TGAGAGGAAGCAAAGATAGATTTATAGCTTTTAATTTATTTTTTCTAGGA
+TTTTACGTAACATTAATTTCAATACTGATTTCGAGATTTGTCTTTTGATA
+GATTTACAACATGGTTATCATCCGGTATACTATTGTATAAAAGATGGTCC
+TAAATTCTATGAGATTATTTTATATTCTCTCTCAACGAGATGCTTCTTCC
+AAAAATTTCAATTCTTCTATATATTCTCGTCGTTCTTCAAGAAACAGCGG
+CTGTCCCGGTGCTCTTTTTCGCTCCGGAAGAGCTGTTCCGTTTGAGCGTG
+TCGTTGGACAACAGGTGAATTTTTTATTTCATTTTGAGTGAGCCATTGTA
+ACATTGGATCATAAGAGTCACGTGGAAAGTAGAACAATCTCAACCCACAA
+GTTAAAGCCTAATATTATTCCAATGCCTCTAGTAAGATTTTTATAAAAAT
+AGAAACCTCGCCATATTAGCCAGACACGAGATTTTTACGATTTCTTCGTC
+AAATATACGGTACCCAATCTCGACACGTCAATTTTTCAATAAATGCAAAA
+AGATGTGCGCCTTCAATGAGTACTGTAACTTCAAACTTTTGTTGCTGCCG
+AATCGACTTAGTTTTGTGAAAATATATGTATTCATGTTTTAAACAACTCA
+GAATTAACCCAAAAATTTTAACAAAAACTTTTTTTTAAGCTATGAAAAAT
+CAATTTGAATTCGGCAGCAACAAATGTTTTAAATTACAGTATTTTTTAAA
+AGCTTACGCCATTTTGCATTCATTGAACATTTGTCGTGTCGAGGCCGGGT
+ATATTTTTGACAGAAAAAAAACAAAATTTCAGGTTCGTTGTTTTTTGTTG
+TCAAAATTATAATGTGTTTTAATATCATATCAAAAAATTAGTCATTTGAT
+TTTCGATAGATCAAGCTTCAGTAGAGGTTTCTAATCATTCGGAAATATAC
+ACAAAATCTTGAATTTACACTTCCGATCAGTTGGAGAATATCATTGATCT
+ATCAATAATGTTAGATTTTGTAGTTGATATTTTCACAAAACTCTCAAAAC
+TTTTTAACATAAAAAGTTGGCATGGTGCGTCTTATAATTTTTGAATAACT
+TATTAAATTTCTAAAATTAATATAGAGATTGGCTCCCACATGTCGAGAAG
+TTGAATTATTTGTTCCTTGTCTATTCACTTCTAACCGTGATTGTGTTATC
+GACAAAATATGTGTTCATGAGAAACCACTTCCCCTTTCATCGATTTCTGT
+GTCAAGCCCGAGTCCAAATACAAAACGGGAAGGTCATCCCGAGTTCATGA
+GCCAAATTGCGCCGCCTAGAAGAAATGTGAGAGTTGAGCACAGCATTCAA
+CAATTTCTAATCAGCTTTCAGGACTTTTTGCGATTCGGAAGAGCCGGAAT
+GGCTTCTGGAGTTGGTGGAGGATCGGAAGGAGGACCTGATGATGTGAAGA
+ATTCGTATATTCGGGTCAATGGGGAGCCAGAGATTGTTTATCAATAAAAT
+AATATGGATTCGATGCGTCCGATTATTTTTTTTTACTTGATATTACATTC
+TCGAAACTATTGTAATGTGTGGGGAATCGTTATAAATAAAATATCTTCTT
+GTTAAACAATTATTCCATGAAATATGAAGTTATAAAGATATAATCCAGAT
+ACGAAACTTTGAGATTTTCGTCCGAAAAGTACGGTAGTGGGTCTCGACAC
+GACAAATGTTAGTTGTGCGCCTTTGAAGATTACTATCATTTAATTTTTTG
+ATTAAATCGTTTTATTCTAAATGCTTAGTATTTACACAAATATATTTCAA
+TCGGAATTTTCAAAGTATTTTCCTAGAGGAAACTACTTTGAAAATTCAAA
+AATTCAGCAACAACGAGAGTTTGTAATTACGGTAATCTTCAAAGGCGCAC
+ACCTACTCGTATTTAACAAAAATTTGTCGTGTCAAGACCGGGTTCCGCTC
+TTTTTTGCAGTAGTACAGAGAATATTCCGAAAGAAGTTTGAAATTAAATT
+AATTTATTATACCGACAAATCATCAAATGTGATGTATTTCAATGAGTACA
+ATTTTTCGAAAGAAAAACAGATTGAGGATAAAACTTGAGTGATGAGATAA
+CCGTAATATGGAGAATTATATCAGTGTCAAGAAGGCACATTGTTCAGTTT
+CATATTTACAGATGTTTGGGATTAAATGAAGATTCGGTATGCATCGACGA
+TCAGAACAATGAACGAGTGAGTTGAAAGACCTGGAATGTTTAAAATTAAT
+TTTTAAATTAAAATTCAATTTTCTGCCAACCTTTTGTTGAATGATATCAG
+TTCTTGGAGAAGACCATCTTTCAATTGCTTCAAATTCACGACGTCTTTTC
+ACCAGTTGTAAGAAGGCGGTCAACGACCCGTCAACGTTTGCGTAGTGTGT
+GCGGCAGGAGAAGAGACTGCAAAACAGAGATATTTCATGAAGACTCAAAT
+GAACAGCGGAAAATGTGCCTCGATAGCTCAGTTGGGAGAGCGTACGACTG
+AAGATCGTAAGGTCACCAGTTCGATCCTGGTTCGGGGCAATTCTTTTTCG
+ATTTTTTGAAACTTACCAAATTCCATCATACGAGAGTCCTTGGTGCAGAA
+TTTCGTGAACCAAATCAAATTCTGCTTCTTGCCGGTTTAGAAGATCTGGT
+GCCAAAATGATGTCGAATTTTTTTCCGCCAAGGAACTTCATTGCCTCTTC
+AATTGTACCACATGAAACCTTGGTCTTGATCATTGGAATATTATTTCTCT
+TAAGTGTTGGACGACAGTAAAGCTCCAAACTAGTCTTATCCATTGTGTGC
+ATTGCAATTTCTTCTGCTCCATTTTCGAAAGCATATACTGATGGGAGTCC
+AGTTACGAATCCGATTTCCAAAACAGATTTTCCATCGAAAAAGTCAGTTT
+CCATCTCAACATTGACAATATTATCAATAGTGTGGCAAATTGTGTTGACA
+CCTTCCCAGTCATCATGATGATCTGAAAATAAGACATTTTCAAAATTAAA
+TCAAAAATTAAAAAAGCAATGCCCCGAACCAGGATCGAACTGGTGACCTT
+ACGATCTTCAGTCGTACGCTCTCCCAACTGAGCTATCGAGGCATGCCGAA
+ACTGACGTTTCTGATCAAACAGGAAAAATTTGAAATTGAACCGTACCTTG
+GTGACTATTTTTTCTCATTATAGGCAATTCCTCTGCCACATGATTTTTCG
+GGTTTGAATTTCTGGTTGCCACGTACTTGATGCAACGGCCGGAATCCAAA
+CTGAGTTCACAGTTGACTGGAGCAACGGAAGCAATTGTTGGGATGGTAAG
+GACCATTTTTGTGTGATGAAAGGATATGAGAAGAACGCTGAAACCGAGCC
+GGAGCTATTATTTATTTTGAAAAAAATGACCCGAAACTAAAGAGACAGGT
+GGTTCTTTGTAGTTTTAGATAGTAAATAAAGTAATGGGTAGGGGGCAAAA
+ACAAAGAAGATAAGATACGCTTTAGGATGGAGTGAATCTTGATCGCATGA
+CGTGAATGGCAGAAAGTTGAAATTTTGAAAAAAAAGGAAGGAAAAAGTTT
+GTACCGAAAACTAGAGAATTTCCAAAGGGTTTGTTTGCATTCGACCATTC
+AGTTGCTTTTAAAGATTGTCCCGCAAAAGAGAGAGGGGCGGAGTGAATGG
+AAAAGTCACGAGGGCGGGTTGTGTGCAGAACAACGGCAGGAAAATCATAA
+ACACGAACATAGAGAGAGCTATTGTACTTGGAAGAATCAAAGAACGAACT
+GGAGTACTGGAATTGAGTGTGGAATTTGTATGTCTAGGTCAGGAAAGTGA
+GATCTAAAGCTAAAATAAAAGTGAAAGTCCATCTGAGTTGCAGGAGAATA
+ATTGAGATATTAGTCGAGCTTGTTCTTCAACTCTAAAAACTAATTGAATA
+AGTTTAAAGTAAAATGGAGCTCTTGAGAAAAAGCGAAAATGCCATGCTGC
+TTTAATACCACCCTAACCCCCTTCTATTGACTCCGCCTACTTTTTGTCTT
+CGCTAGATGAAGTAGATGAAGACGCCGGAAGCAATTGGAGATGTTAGACG
+TTTAGAGATGATAGAATCTATTCATCCAAGTGAGAGATCAAACAAGACAC
+TGAAGAAGAAAAGAAGATTGGCGGTAAAAGGGATGATCTTCAAAGAACAG
+AGAGCTCCGACACTTTTTGTTTTTCATCTCTTTTTTCACTGGTTGGTGGT
+CAGCGAAGAGGAATAAGAAGAAGAATGATGGCAAGAAAAAGAGAACAGCT
+GATCGATTCTTGTTCCTGAATAGATCAATGACGTACCATGAAAGAGTGTG
+AGTAGGTGGATAGTTGATGAAATTGATGGCAGAGGGTAGATCATTGTAGA
+AAAGAACGATCAACTTGAAGTAAACACAAAGTAATACGATAGAGATGATT
+CCTTAGCAAAAATAGTACCGGTGTCTACTGAACAGATCACGATTAATCTT
+TTTTATAGAGAACTTCTGTTGCTTAGAGACATTGTTTTTTAGAAGAAGTT
+GAAATATCAATTGAGATTCTCGTCAACTTCCTGATGAACACAAATAACTG
+GGCATTCACCAAAGGGCACCGCGATCAGTTCAGGGTTTCACCTAGACCGG
+GTTATTCAAAACTTCGAAAAATTCGGATAACCTGTAATTTGTCGATTTTC
+CGAACTGGCCGATAATCAACGTGCCGAACGATAATCACCGCTCATTCCTG
+ATTGAATACACGAGAAGCTGCAAATTAAAATACCTAAATTTCGAGGTTTC
+CAGAGTTTAGCCAACATCTAAGCTTAGACAAAAAAAAGCCTTTGCGAGTG
+TTTCTGGAATGGATTATTTTCTCTCAGCTTCAGTAAAAGATCCTTGGTTA
+CTATTTCTTGACCATCTCACGTTTAACTCCCAAAAATCATCGAACACAAC
+TAATTTCTCAACAAACCTATTTACTTTATTTCGCCTTGCTTTGTTATTTA
+TTTCACTAAAAAACGAACCTCAATGATTCACGTGTGATCGGTGACCAATG
+AGGCTGGCTGGCACGTGTACCAGGCGAAAATTTTCAGTGAGAAACACAGA
+GAACAGTGTATTCGGTAAATAAAATTAAACTTATTAAACTTTTTTTGCTG
+CTGATTCACGTGAATAATACACCAATGTTTGAGGTGAGCAGACTGATGAT
+ATCATTATTAATAGCAAGCTAATTACTAATACATTTTTAGACGTAATTCA
+ATCTAACTATTTCTATAGGAATATTTTTTCAACTTGCGAAATAGTTCCAT
+AATAATAAAACAACTAGAATTGGGCCATCAAGTAGTTACAAAAACTGTGA
+CTGCCATAAAAGGATTCAGGTAGGTAGGTGGCGCCATGCGTTTCAATTGA
+ATATTACTGAGTCAACTTCACATCTACAAAAATCACAGCATGATCATATC
+TAGTAAAGAAATCATAATAACAGCTGAGAGTGTTCAGATTTGCATAAATG
+ATGACATCAACATCTGATCTAGTCCAAACAATCACACTTTCATTTCCTTC
+ATTCTATGAATAATCTTCTCTTTAAAAAGAACCTGTTCTTCAGGACCTCC
+ATCTATATTGTCGTCTTCTCGTATGTTCCCAAATGTTATGATAATACTAT
+CTTCTATGACATCTTTTGGTGTGGGTGCATAATGACGTGGCAACCGTACT
+CAGTGTGCACCAAACTACGAAAACAACGAACAAACAAAAGTGAGTGTTAT
+CTTATTATCGCATAACGAATTCTTGTCGAATGGCATGATATGGGGACCTG
+GAAATTTAATTTGAAAATCTATCCATCAACTGAAAGAAAAAAATGAATCA
+GAGGGATTTGCGAAATTTCAAAATCAAAGAATGACCACGTGTCTTATTCA
+ATCAAATCAGTGGACGTTTCTCATAGAATGCTGCAGAGTAGTTACGAAGG
+AAATGTCTCAGTTTCTACCGCCAGCCTATCACAGGGATGGGTCTCACCAC
+AACGGGCTTCGCAAAAATGGGTCTTGCAAGGATGGGTCCCGCAACAATCG
+GTTCCGTAACAATAAGTCTCGTAAAAATGGGTCTCACAGCGAAGAACCGC
+TTAAATCGTGTAACACGAGGCCCTTGCTTCCACGCCAAAATGCGGAAAAG
+AAGTACTCGGCATTCAGAGGCAACTTCCTGCCATTTTATGGCAACTTCCT
+GCCAAACTTTTGCACATTCCTGCCAACATTTAGATGTTGCTGAGCGTTTT
+TTCCCACTTGCTGCCACTACGTGGCGACTTCCTGCCAACAACTCGGCAAC
+TTCCTGCCAGCAATTTGGCAACTTATTTTAGTGGCACTAAATAAGTTGCC
+AAAGTGTGGCAGGAAGTTGTCTCTGAATGCCGAGTTGGCAGGCACGTAGG
+CATTTAAGGGGGAAGGTGCCTGTCTGCCCTAGAAGACTTACTAAATAACT
+ATGAAAAGCATTAACATTTAGCGGCCACGCATAACACTATAAACCATTTC
+AGTTTGCTTACAGAGAATAATCAAGAAAAGCGGAACGTTATCTTGAAACT
+ATTGAACTATCTCCATGTGATGCGTTTTCTAGCACTTGACTTAATTTATC
+ATTCCGTTTCTGTCGCTTGTGATAAGAAAATTCTCAAATTTAATCGCCAA
+TTTAATTTTTTCGCAGATGGTAATCTGTTTGGACTTTCGTTCCAGTTCGG
+TTCACGTGAAACTCATGTTCAAGTTTTTATTTTTTAATTTTCAGATGAGA
+GCTACGTAATCATATTTTTGTTTTGTTTGCATTGGTATGGTTCTTGATCT
+ACTCGTATGGGGGTAAAAACGTGTGTCTAGTTGACATCAGTCGAGTGATA
+AGATGGAGATGAATAGTTTGGGAAGAAGATGGGGATCGGAAAAAAGCTCA
+AGAAATGGGTTTCAACTTTTTGAAGTTTTAATTTGGCAGCGTGAACATTT
+GCAAGGTATATGAAACTTCAAGAAGGAGAAGTGTAGGAAACAATGTGGAG
+ACGCTGTTATAAATTACGTTTTGAAAAAGTCTCCGGTTTTCCGTCAAGCA
+ACTTAGATATACATATGTATACTGCTTCACTTTGAAAAATCAATATGTCG
+CAAAATAAAATAAAAATAAGCCGCGAAGAAAAATAAAAATAAGCCGCGTA
+GGCCCGTAACCGTCTTTCTACCTTACTTATCGGAGTACGCCTAACTCGTG
+CCTACGTGCCTACTGCCAAAACAAATTTGGCACGAGACAGGCCTTTTCAC
+ATGTAGTATTTTCGTAACATGGATGCGTTATCCGATATATGGAAACTTTA
+GAGCTTTTATTCATTTAAAGTCAGTTTCTAATTCTGATCAGTATCGCCTT
+GTGCTGAACAACGAATTGTTAATTACATAACCACATCTCGTACTTCTGAT
+CTATTGATACTTCTTTTTTGTTTTGTTTCCATTTTTAAAAAGTTGCTCGT
+GTTTTTTGTACTTTTCCGTTTTCATAGTCTTTACCATCAGTTGTCATGGA
+AATTGTTTTCAAAGTTTGTGGATTTCAACCCGGAAGTCTATCAATTGTTT
+GCCACTCTGTTTTGTCAATGTATTTCTAGGTGCACCTTGCAGACATGTAC
+TCTGCGACCGAACCTGTCACCTGACAAAGTACCGTAACTTATTGTTTTCA
+CAAACACTTAAAGATGCCTGACCTGGAACGACGATCACTATCATCAAACG
+GTAATGATCGAAATTAGTTGAAAACATGATTTGACCGCAGATCGAACTGA
+TGGCGCCAGGGAAACACCGATAGAAATGTTTTTCAAAAGTCACATGTGCT
+AAAAATAACTTTTATTTGGTCTTTCTTTTTCCTTTTGTCACATCAACCAT
+TACATGGGCGGTCAATATCTGTCTTCTTATCTATTCAGTCTCACGTTAAA
+TACACGTGTCAATTTATGTAAAAGTCGGGCGGTCCTGACTTTTGATGATC
+ATGACATGTTTTCGATCAGTCGGAAACTGGGGGGAAAAAGAGAAAGACAG
+AGACGTGTTTACCACTATGCAGCTGCAATTCGGTTTTCTCTCGAACATTC
+CATGACGAGAAGAGACGCAGAACATTCAATCAAGAGGGGTCTTTGAAGAT
+CATCGTGTGCTTCTTTTATGTGTGTTTGTGTACGTGTTTGTGTGTTACTA
+AAAGTTGACTGAGGGACGGGAGACAGAGAGAGCTCAATGAGCAATGACGG
+ATGAGGGATTGGTTCTTAAAGTTGGTTATTTGTGGAACTTCAAGGTAGTT
+GTGATGTCTAAAGATTAAGGTTAAGAAACCAAATATTTTAAGTTTAAGAT
+AAATAAATAAAAACTTTTCAGGCATCGTCCGTAATTATCGGTAATTCGGA
+ATGATTTTAGATCTCAAGACCAGAAAAATTTTTGCGAAATATTCAAAATT
+TAATCGATAAAAATTTTAGGTGGAAAATTCAATTTCAATTTTTAAAAATT
+TTGGACCGGAAATTGAACTGCAAACTCTACGAAATGGCCGATTGCACCAT
+GTTGTTCGGACATTTTTAATTAAAAATTAGTATCAAAATTTTTTTCAAAT
+GAATTTAAAAAAATTACCTGATTTATTTTAAAATCCCATTAGTCTCAGCT
+AGCACGTTTTAAAAAGTACTCAGAACTGTTCTGAAAATTGTAAATTACTG
+GTAAACAAAATTCGACAATTCCATATTCTACTAGTGGCAACTTTCAAATC
+ATTTTCGAGCATTTTCTTAAATATTTCAGCTAAACAATGGGATTTTCGGA
+TTAATCAAATAATTTTCTATATTTTGACATTAATTTTCGATGAAAAATAT
+AGGAACTGCATGGTGCAGTGTGTCATTTTGCAGAATCGCCGAAAATAACT
+GTCGCACATTCTTGATTGAAACTTCATTTTTTTAATTGGCGCGAAATTCA
+AATTTTAATTTTTAAATATTTTAGGCGGAAACCTCAGACTTCAACTTTCG
+AACCATTTTGACTGAAAAATCATACTTTAATTTTCAGAAATTAATGAAAT
+CAGCATTATTGTAGATGTTTCGGCGCACACCGTTGGCCTGTGGGTTGGCC
+GGTAGGCATATAAGTGCCTATATGAGATGTTGATCTAGAAATTAAAAATA
+GACAAATTTCTAATCTAGGATATTTAACTGTTCAGTTTTGTTTGTCATAT
+TTTCTGCTTTCAAATGTTTTCAATTTCTTCTCCTCTTTTCATATTTTTCA
+TTTGCACTTCACATCAAAGTTTTATTGTCAGAGGACCTAGTAAATAAATA
+CATTTTTCATTCTCTCACATGCTGGTGTTTGATGTTCAGTTAAAAATGTT
+TTTGATTCTGCAGGAAAAAAAAGAAGAAAAAGTCAACATACAGTACCGGT
+TCATTTGATTTCATCGTTTTGGAATTACAGAAAAATACTGGAACTAAATA
+AATAAATTTAAAAACAAAATAGAAAAAAATCAGATTTTCAAAACAATATA
+ATTCCTATTAGCATTATAAACTATTTTAAATGGAGCTATTCGTGAATTGT
+CTTTTGAATTTGCAGCAAGTATCCAAAGATCACAAAGAGCTGTTCGACCA
+CTATTCTTTGGATCTTCTTCATCCCACATTCCACGATAAACACATTCTGG
+CCTGAAAAATAGGTTTTTTTTAAATGAACATTATTGTTCCGATTTTTATA
+CCTCCTCTCATCATTTGAACAATTCATAAGTTGGAAAACAAAATAATTGA
+CACCCATTTCTTTCATTATTTTGTGAACTTCCGCGATTGGTTTTTTACTA
+AACATAGAATACACTTTCAGAGTTCGTTCACTGAAACAAACAAGGTTTAA
+TACTTTCTAGAGAAAATTAACAAATTACCGTATTCCAACATGTTCATAAT
+GAGGGTGATTGACAATTGGCCTAAGAGTTGTGAGCTTCACATTTGCCATT
+ACTGGCATTGTTCCAGCGAACACAGCGTCTGAAAAAAGTTATTTTGAAGC
+TAATATGGAAGGCAGGCATGTCTTCAGATGTACGTGCCTGCCTACCACTT
+CGGTGGTAAGTTTGTATATTACCTTGTTTGGTGTTATGTTGAATCCAGTC
+AAACAACATTTCTTGATCAGGATTACTGTATTCTCCCTTGACATTCAACT
+GTTGACGGATATTTGGAATTCCTGAAGGATGAATAAATATTTAGTAATGC
+AGTGAAAGAATTCAAACCTCTATAAAATAATATTGCGATCACTCCAACAA
+GAGCAGAAACTCGTATAGTTTTTGATATTCGATCTCCCCCCAGCAGCTTG
+GAGTTTGCAAAAAGTGCAGCAACAATACATAAATGAGGTGTCATGAATAG
+TTTGAGACGCATTATCAGGAATGCCATGACAGTTGAACAGCAGAGTTGGA
+CCACATTATATAGAATCTGAAATGCCAAATTGTAACTTTTTAGTTTCAAA
+AGTTATAGTATTGAAGCTGAAAACAATAATCTTAAAATTTTAAAATTTTA
+AACAAAGCTGTATTTTATTTTTCTATTTTTTTAATAATATTTTTTAAATA
+ACCACCGATCTGCCAGATTCAAAATAGTTGTTTTAAAATTTGGAAATTAC
+CTCTCCATTTTCTCCAATTTCTTCACTATTCCTCCATAATAAATTCGTAT
+TTTTCACAAAGTTAAAAACGAAAGTGACAAGAGAAATGAGGGCAAGTGGA
+ATAAGAAGTGTTCCACACAATTTCTCAATTGTTGAATATTGAATAAAATC
+GAATTCAGCTGAACAAGTATACAGTCTCGTGTGAAAGTTGGCAAAACTTG
+TGAATTTTGAACGAAGAATATCAAAGATATGAGCCTGAAATCATTAATTG
+AAACACAATACAATAAAAACGATAACCAACATCATCTTCAATTCCAAGTC
+CTTTTGACAATCCAATTTTAAGCCCAAGAGTAATTGATGCAAAGATGATA
+GCCAGGAAAAGAACATAAGCTGGACGGAATTTAAGATTTGAGAGTAGAGG
+AGAGATGTATATGATCATCTGGAAGCTTTTTGAAATTTATTTTTATCTAG
+TTTTTTTTTTTTTGGATTTGAGTTTTTACCCGAAAATTGTATAAGAGACA
+TAAACTATTTTTAGTTTCTCTATTCAATAGAAAACTTACCCCCAATGCCA
+AAATACTTGGAAAATACAATGCAGTAATCATCATCTCGTTACCAAAAAGC
+AGCAAAAATCCAATGAGAAATGAAATGATATGAGAATGAATTACTGTTTT
+AGCAGTAGAGAATGGAATCAGATCCAGTGAAAACGCTAAGAATATTGAAC
+AAATTTGTGTGAAAAATGCAAATTGGGTGAATTGCCAGAATAAAAGAGCT
+GGAACTGCCATGGAAGTTAAAAGAAGAATCATTGAGTGACCAGACTTTTT
+ATATCTGGAAAAATGAGTTTTGAGAACATCATATGCCAAAGAAAATTAGC
+ATTGCTACGTCTCGCATTTTCGTCATTTTTTTTGTCATAACTTACTTGAT
+AACAAATGTCAAAATCGCAATATGCCCGATAATAAACGGAAAAGCAAAGC
+TCTCCCGAAGAGGAGGTGTCCATTGAACTCGAGTTGCTTCTCCGTGATTA
+AATGCAAAACATAATACTGACAAGAATCCTCCGAATATTGAATCACTGTA
+ATATATATATTTAGTTAAAAGTAATAATTTTTGTGTCGCTCACCTAACAA
+GAACACCCAAATAAAAAATGGATGAAGCTACAGTTCCAGCCACAATGAAA
+ACTCCGGTTATATAGAAATAATGAGGATTTCCAATTCCTTCACAACTTTC
+AACAGGCCGAAGTTCTCCTCGATTAACTTGCCAGCATAGTTCGATTTGCC
+AATTCGCTGATTTGGCAAATGCTCGGAATGGGCGGTACAGAAATGCAAGG
+ATTACCTAAAATAAGCTTGGAAGGATTTTAGGTATGGAGGAAATTGAGAG
+AAAATGTAATACAGGTGAATGTATTCTTGTGGTAATTAGAAGTTTGCCAA
+AGGTTTTTCCGACGGAAAACATTACAATGTGAAAACTTTGCGACTCACCT
+CTGGATATAAATTAAATCGATTTAGTGTGTTAATCTCGTGTCCATGTTCT
+GTCACAGTATCATGTGTTATCTCCTGAACACCCTCAAGAAATGATGGTGC
+ATTGATTATTGTTTTATAGTATGAATAGTAGAGACCCTGAAAAAACAAGA
+AATTTTGAATTTGTATTTTTAAAGAAAACTGTACCATTTCCGTTCGATAT
+GCCATCTCGCGTTCAAAGTCCGCCAAATGGGAGAAATGTTTGTCGTTTTC
+GAATAATGTGTAGACATGTTGGTAGTTGATGTATCCAACGAGGAGTCCTG
+AAAATAAAAAAAACTGTATTGAAATTCGTTTGAGCGTAAAATAATTTGTC
+GCAAGTTTGATAAAGATCCGAGAAGACTATTTCTGTAACTTGCATGATTG
+TCTGCCAACTAATTATTTTCTGAATTTTTCTGTCAGGTCACATGCCATAT
+CCGGGTGGAACAGGACCACTTTAGAGATTGATACGGCTCTAGTTTAATGA
+AGAGCAAAAAATCTGCAGGTAGGTCAGTAGGTAGGTGTTGTAAGCAGGCA
+GACATTTTGAACCCTACATGGACACCCCATTTCAAATAACTACTATTAAA
+ACATAGTTTTCTTAAAAAAGTATTTAATTTGTTTCCCCACCCAATTGCTC
+TTAATAATCCTCATTGGTTCTCCTAGTTTTACTCTTTTGTTCCCATTTCC
+CTTTTTTTGCAATTCAAAACACATCCAGTTTTGAGAGAGAGGTCTCTCTC
+TCTGTCCCTCTCTACCTCCCCCTCTCTCTGTAATTATCGACTTTGGGGAC
+GAAATGTCAGTTCATTTGTGGAAATAGTTTATGAATCGGAGAGACTTTAG
+ACACTTTGAACAAACCGTGTCGTCGTCAGTGACGAGACACAAACACAGGA
+AGTTTCGTTGAATATGTTGATGTTTCTGTTGACGTTTCGTTCCCTAGTTT
+TTAGAGATTGAGAGCATCTAAGGATTAAGGTTCAATGTTTCAAGATTTAA
+AGTTTTGAAACATAAGTAACAGAGTAAATGATATGATTTAGATAATTTTC
+TTATTTTTTAATCTGGCAAGCACGCTCAACTAACAAAACACGAATCCGAC
+AATCAGTCAAACATCTTAAACTTTTTAAAAAATTGTTCATTCTTTATAAG
+AGCGAATTTCAAATTTAAAAAAAACTTTAATTAAGCTTCAGGTCAAGCAA
+TTAGGCGTTATTATTAATTCTGGCAAGTTTCCGTTTTTCAGATATAATCA
+TTTCAATTTCGATTCTTTCTTCAAAGTGTCTGGAAAAAATGCTCTTTTTT
+AATAATTTCGCCGAATCTAATAGTTCTAAAATTTTATGTTGAAACGATCA
+ATTCTATAACAGTATATTCAAAAATAACCTCACTAAACTTGAATTTTTTC
+CAAAAAAAAGCATTCAAAGTGAGCAAATAGTTTTGGTAATACAGGTGGCT
+ACAAATTTTCTGTCAAAATGTTCAATACACAAAGTGTGAGCAAGAGCAGA
+ACCAGTTTTCAAACATATTGCTCTCAGTTCTCACTTTCATTTTTGTTTGT
+ATTAGAGGCTCATTGAGCAATAGCAACTTGAACTTTACTTACTGTTTGTA
+ATAGCTTAACTGTTCACATTTTTACTAAAACTTTGCAACCTATAGGTATA
+CCTAATAATTGGGTTTTTCAATTTTGTATGAGAAATCACATCCCGAAACT
+GAATGGAAACTTTCTGATTAAAATGGATATCACTTCAAACATAGTGTCTT
+TTAATATTGTCTAAGCCTGTATGACAGTGATAATTTCTAATAAAGAGGCG
+CAGAGAAATTAGATAATGACCGATAATGATGAGATGAATGAATGTAATGA
+TGTGGGAAAATAGATAATAGAATAAGAAGTGTGGGCATAATGATTTAGAT
+GATAGAAGCGTTCAGTCTAGGAATCATTTCAAGTCAATATCACTAATTAT
+CTCATTTATTTTTGTTCCTTTGATTTATTCGTTTTGGTAGGGCCGTTTCA
+TCTTAAAGCGTATATTCAAAACAATTAAAAAATCGTTTTTGAAGTCTTCC
+AAGTAAAAATAAATATCTGCTTTGTGCCTATATTGCGCACCTATCATTTA
+ATTTCTTAAATGGGGCGTAGCAATTTTGGACTTCTGCTTCAATATCTTCA
+AAATGATCCCAATAGACCGAATTTCATAATGTGACTCCTCGAAAATTTCT
+TATGAAGATACAACATTTTAACACTGTTTTCTTTCATAGTGTCCAACGCC
+TGCCTTTTTCCTACACTAGTTTTTTTTTCAATATCCTTGCAAGTGCACCT
+GCAAGAAAAGTTTAACAAAAGTTCTTAAACTTAAAAAAGTAGGTGGTAGG
+CAGGCACGTAGGTGCGCAGGTATGTAGCCAATAGATTCTCAAAATATAAT
+TATAAAAACTCTGCATTTCTTTTTATTCATCCTAAAAGCGCATTCTACTC
+AAAACCCAGTCACATGCTCTATTCACAAAAGTCAATTTTTTTTCATCTGC
+TCTCCGCATAAACTCTTGCTTCCAATTTCCAGATGCATTTAATGTCACGT
+GCGTTCACTTTTTTCCCTTCAAGCTTCCAGAACAAAAAAGTCTTGTGATG
+TTTCGCTCAGAAATTTGTTTGAATAGATGATAATTGGATTTCGGTTGAAT
+TATTTTTGCCATCGCATGTCCTTTCTTCAATTCTCAATTTCCAGTTTTCG
+TGTGATTCTCCAAAAGTTTCAAACATCATCCGAATTTTCTTGTTTTTCTA
+TTATGTCACTGATTTCCTATTTATTTTTCATATTTTTAAAGTTTTTTTTA
+AGGGAAAATGAAAACGCCTGCAATTTTATTACTCCTATTCTTATTTATGA
+TGAGTTTGGCACAAAGTGATGAGGAACAAAGTGGAAAGGAACCTCCCGAA
+AAAGATGATGTTCTAGTTATTCTGGTTGGTTTTTGCCAATGTTACCATGT
+CAGAAATGCATGCATGCCTACTTTCGGCACATCTTCGTTTTCTTTTCCCG
+TATTCTATGTTTTAATTTTCAGGCAGAAGACAATTCGACACTATTAAACA
+ATAACCAAACAATGTATGACCCTTCTTCCGAAGAAAAAGAAAGTGACAAA
+CCAAAATTCAATTTATTGGAGACATATTTACCACTTTTCATATTTGTACT
+CGATCTACCAACAGAGGATAGAGAAACTTTGAAAGCCTATGTAAAAGATA
+AAACTTATGAAAAACTGAAATATGTAATCGATTCAAAAGTTAAAATGAAT
+CGAAATGAGAAAAATGTCTTAGGAAGAATCAATGAATCCTTGGTACAATC
+AATCGATAATTTGGAACATTTTGATGAGATTACTGTAGATGTGGTGAATG
+GTTATCACGTAAGTTTGACATTTCAATGGAAAATCATCTCTCTTTAATCT
+TTAAAATGTTTTATTTTCAAAAAAAACCTTAATATGACAATACCAAATTT
+TCCTTCTATAACTAAATTTCTAGAATGCCTCCGTATACAACGCAATCCGT
+TCAGTTTGGTTGAAACAATTACGTCCATTTCTGCCGCTAATTGATCAAAT
+GGCCATTCAGCAGTATTTTGCACAAAGGTTTCAAACATCAAGCGTCTATC
+AAAAACTATGTTTATTTTCCAGAAAATCTTCTGAAACTGAGAAAATGTCA
+ATTTGGGCAAGATTATGGGAAAATCTGAGTGTTTGGATGTATGGAAAGAA
+AAAATTAAACGAATGTTATGCAATGGAGCCAAAATGTGTTCGACACGCAT
+TGGAATTGCTTAATTTTGAACAAAGGATTGATTTGGATTTAGCTGCTTAT
+GAGAACAAGTTTGACAGTGTTGATGGAATTATTAGGGAAAGAGTGAGTCA
+ATTTAGATATTTAAAAAATGTCAAAAGCCCCAAAACGAATTAATTTTCAG
+CTTGGCGAAAATCGGAAAAGCAGTGAACTCGACGAATGGTTGCACAGAAA
+TCGCCCACCAAAAGCGCTACAAGCTATTTTAGATGAGCGAAGTGACATTG
+AGGAGGAGTAAGATATTTATATTGAATAGATAAACGTTAGATTTTTAGAG
+CTCTTCAACGCCTTCGAGATAACGGAGTTCTGAGCTCACTCAAACATTAT
+TACAAAGCAGTTATAGAGTCAAGAAGTCATGAAGAGCAAGAGGTAACCAA
+TGTTTTAGATAGTTCTTGTCAATTTTCTTACGCATTTTTCGATATTCTGC
+TAATGGGTGCAAAGTTCTAAATTGTTTTTAATTGTAGCTTTCTATATTAA
+ACTTTCAGGACATTCGTCATTTCTTCGACATAATGAATGACACATTTGCT
+CGTTGCTTTGACCCACTACGAGGCCAGTATCATGATTTCTAGAAAAACCC
+TCTTTTTGACTTCTTCCTCCAT
diff --git a/Demo/F59C12.fa b/Demo/F59C12.fa
new file mode 100644
index 0000000..a91a752
--- /dev/null
+++ b/Demo/F59C12.fa
@@ -0,0 +1,581 @@
+>F59C12 951031/F59C12.seq
+TTTTTGGAACCATTAACTCGAAATTTGAAAACTGGAACCAAAAAAGTGGG
+CGGAGTTTCCAAAACGCCAGCAAAAAATCATTGGCAGCTCGTCATACTTT
+TTTCGCTTTCCTCTCTCTTTTTCTCCCCCCGGCCAGCCTTCTCCTCTCTC
+CACTGACCTGTGATGTACCTTAACAATTTCAAAACGAACGACACATTCGG
+AAACATCTAATTTCTCACCCATTTTTTATTATCAGAGAGCAACCAATTGT
+TGCGTGGGGTAGTGAAAAAGAAACACGTACATACATCTCTTTTCTAGATT
+AATCTAATCTAGAAAAGGCGAAGGCCGCATCGAAGGCTTCACTTTGATTT
+ACTTTTGTGCGTGCGTCTGCATTTTTTTTTCATTCAATTACAAATTCATC
+ATCATCATCCCAATTCAATCAACCAATTTTTCAACAATTCAACATCTAGA
+ATCATTTGCAACGACGGCGCTCACACCGCACTTCTCCACAACGAGCGTAT
+GGTCGATACGGGTGCAGTTGATCCCGACGATGGGAATCTACCATTTCAAC
+GGTGTCGCCTTGTTTCTGTTGCCGGTGCTTTGTCTGATTGGGTTGATCGG
+CAACTTTTTGGTGTGTGTGGCAATTGCGACGGATCGAAGGTTACACAATG
+TCACCAACTACTTTTTATTCTCATTGGCTCTGGCTGATCTTCTGGTTTGT
+TGTATTGTGATGCCATTGAGTATAGTGGTCGAGGTTCGGCACGGTCAGTG
+GAATATTTTTGGAATATTTTTTTAATTTAGGGCTAGAAAAGAAAATTCCT
+ATACTTCCTATACTGTTCCTATACTGGAAAATGTACATAGGATTATTGTT
+TCTACAAAAATTGAAACTGTAATAAAGAAAAGAAAAAACCTCATAAATAA
+TTTTGATCTACCTGTCCCACTGAATTATGGCTTAATTTTGGCTTAAAACT
+GAATATTTGGTGTCTACACTATATGGCCGACATTTTTTAGGTTACGCGAC
+TTTTTAAATAACCTAAGAAAGACAATTTAAAATGCATTCGGCAGAGGTGA
+ATTGTGTAGGTATAAGGTAGGCGTAGGTAACTTTAAAGCCTAATTTTTTT
+TGCTGTCATGCAAGTTATAGGGAACAGTGCAATATTTTAGGCTGATAAAA
+AAAACTTAACCCAAAATGCTTTTTTACTTAATTTTTTACCTTTTTCAATT
+TGTGAAAACGAATCAGATGATTAATAGGCTATAAACTAAACTATTGTTTG
+TTTTTTTCAACTTTATTTTTCCCTTCTCCAGGTGTGCAAATACCACCAGC
+GCTGTATTTTGTCAATTAGCTAATAATTTCGATGAATTTTTTTCAAAAGT
+ATCTAACTATAAGCATCTTTGAGCGCATTTGTTAATAAATAATTAGAGGA
+ACGAATAAAAAATGAGAATAAAAAAATCATGAAATATTGAGTGGGAAGTG
+TAAAGATTTTTGAACGAATAGAAAAAAAAAGTTAATTATATATGTAAAAT
+TATAAATTTAGTTAATTGAAGATCGAAATAATCTTCACAAAAAAAAAAAT
+TTTAAAAAGTAATTTCAGGGGTGTGGACATGGAGCGTGTCGATGTGCCTT
+TTGTACGTCTACTCGGACGTATTTCTGTGCTCGGCGAGCATTGTCCACAT
+GTCCGTCATCTCGCTGGACCGATATCTCGGTATCTCTCAACCACTTCGCA
+CCCGCAACAGATCAAAAACACTGATATTTATCAAAATTGCCATCGTGTGG
+GTTGTCACTCTACTTGTCTCCTGTCCGATTGCCGTGCTGGCGATGCATGA
+CACGGCAAACATTTTGCGAAACAATCAGTGTATGATCTTCAGCAGATATT
+ATATTATCTACGGGTCAACCATGACTTTCCTCATACCGTTGTGCATTATG
+GGGGTCACTTATGCAAAGACAACACAGTTGTTGAACAAGCAAGCTTCAAT
+ACTAAGTCAAAAGGCAGGTGATAAATTCAATGGGAATGGTCTTCGAAGAA
+CCATGCCTCATAGGAAACTGGGTTATGCTAGAACCTACTCTGCAACTGTC
+AATGGTACCATTGCAAACGGAAAAGCCATTGGAGCACATGGCAGGACTAT
+GTCGAGCATTTCCAACATTGCGAACGGAGAGACTGCTGATCGCTTGGGTA
+CAAGCCGTCCATCAATCAACACCAACGGTCACAAGCAGCTGCAAAAAGCG
+TCGACAATTAACAAGTGGAAGTCGAGGACCTCCAATTTGGTAACCAACTT
+TGCTAATAAAGTCGGTCGCCGTAGCTCTCTTCAGGTGAGATTTTGATCTT
+TTTATCTCAAATTTCGCGTGGAGCGCGTTTGAATTGCCTCTAGTTTACAA
+CATCTTTCGCTACATTTCTTTTTTGTTTTTTGAGAGAATAGAGCACTGAG
+CAAAAGTGCGTAGATAAAGGAGGAAAGAAAGAAGAATAGGGAGTAAGTAG
+AATTGGGAAAATTAATTTTGTAAAACATTGTATTTCTTTTGACAGAGATC
+ACTTTCCCAACAAAAAAAACCATGCAAAATTTTTTTTAACTCACCAATTT
+TGAGCCAACAAAGCTGACCCCAACCGTTAATAATTTAAAATTTCATATTG
+TTTCCAGACCTGTTGAATTTCTTCAAAAAAGATTTTTTGCGAATTTACGT
+TGATTTTAAAAGTGTTCAAGCTTAAGAAAATGTTTTGTAAGCTTTGTAAA
+ATTATGTAGTAATCTTTTTGGAAAATTTTTTATTATTAATTTTTTTAGAA
+AGTTTCCAAAATTTTACACTAATTTACATTGAATATTTTCAAATTAAAAA
+AAACATTCTTGAGACTTTTTGGAGTGTTTTTTTTTCATACTGGTCCAAAA
+AGTTTTAAATTTTTTTTACGAGAAAAATTAAAATTTCCAAATTGCTTCTA
+CCCTGATTTCTGAAAAATATTAATTGTATTAAAGATATCAAATTTTTTTC
+CATTAATTTAAGCTTCAATTGCTAAGGTCTACCATTTTTCAATGATCAAA
+ATTCACATTCAAATTTTTCCCTATCATGTCACATTTTGCATCGGAGTTAT
+TTTCAAACGTCATTTGATCAATGTACAATGGATTAACTTGAAATACATGA
+AACTTGATAGAGTTCACGTATTCTTTTGTTTCTTTGCAAAACAGCTGAAT
+AAAAAAGTTAAGAAAGAGTTAATAGATCAAACAATTAACTTTCAGACCGC
+AACTCAAGATCTTGCAAATGAGCACAAGGCGACCCGTGTGCTCGCAGTCG
+TGTTTGCGTGCTTTTTCATTTGCTGGACACCATTCTTCTTCATCAACTTT
+TTGATCGGATTCGGCGGTGAAAATGTGCAGATTCCTGATTGGGTTGCGTC
+GATTTTCCTTTGGCTCGGATACGTGTCGAGTACGATCAACCCGATTATCT
+ATACAGTTTTCAACAAGCGGTTCCGTCAAGCGTTCGTGAGAATTCTTCGA
+TGCCAGTGCTTCCATCCACTCCGCGACTCTCATCAAATGTATTCGCGAAA
+CTTCACGACAACAATTGTTCCGGATACGTACACTTGGTGAGCACATATGT
+CTTGAAATTTTGTCAGGAGCCACTAGAAATAATTTCCCCCTTCTTTTTCG
+CCCTTTTCAAAGAACTTTCAAATCGTTTTTCTCTTCCGTTGAATGAGCAA
+AACAATTGCTGGGATTTTGATGACTTTGACAATTTCCGGAGCCTCTGCTC
+AAGCTGACTATGACTACCGAGTTCCCATAAATAAATCAGAATATGATTTT
+CCGATTTGAATTTCTATAGGTTAAGGGGGAAACAAAAAATTTGCAAGTTT
+TAAATGTTCGTCGTGCCATAAGATTGTCAACGGAAAATGACGATAATGAG
+AATTGAACAAGTCTGATCGAGCAGCGTGCAGGTGTCATGTTTTGTAAAGT
+GTCTCTTGGAAGATCTTCTCACCTGCTCGGTTGAAAGGGACCTGAGCAAT
+TAGTTTTTAGTTTCAGGGTGTCCTATGGGAAGTATGGGGATGTTAACGTT
+GTAGGTGGTAACTCCAAGGGGACGTTCATATATAATTTTTTCCCAACGCA
+CATTTTACTTGCCAATTCTAGGAAATTGGTAAAAAATAAAAATTATAAAA
+AATGTTTACCAAAGCTATAAAAATTTTAATTATTCAGCTCGAGGTCAAAT
+CAAGAACGCACGACCTCTGTTATCACACGCGACGAGACTCGTTCAGCAAG
+AAGCAGTGAACGGCCGGAGCCCAGCAGAGCAAGATCTGAAATTTCAGAAG
+AGCCAGTCGCCAGAACCAATGGAAAATTGACTAGTGAAAAGAAGAAGGTA
+ATGAATTTTGCAATTTTTTGTAATTCAAAAAAACGTAACATATTGAAAAA
+TGAAACATTAAGGAAACTTTAGAAACAAGAAACATGATCTATTCAACTTT
+CACAAGACTCTATTGAACTCTTGACATTTAGATTTTTTGAACGTTACTAC
+TCTAAATATATTTGGGGGTCGGTTTCAAAAATGATTTTTTTTTTCTTGAA
+ACTCAATTCCATATAAAAAGTGCTCCAAACACTCGCTATGTGTGTTTTGT
+GTTTGAAATGTTTACATTATTTCGCACATTGAATATATTGTTTATCTTTG
+TGCACGAACATTAATCCTTCCTGGTCAATTGTGGAAAAATGATTCAAAAA
+AGTTTGGGAAAAGTGGGGGACGCAAAGAGCAAAATATCAAAATCTAGGAA
+AACTGCAGAATAGTTTGAAAACGTGGGGAAAAAACACGAGATCATGATTT
+GAATGATGTATTACAATATGCTATAGTTTTGTAGAAAAAAGTTTAGACTT
+CTTATAAAATTTCTGATTTTTGGTGAAAAAATGATTTGACATTTTAAATT
+CTTCCTTATAGATGAACAAAATTGAAAGCAATGTATAACCATTTGGGAGT
+TAATTTTTCCAAATTTCCATCTCGATTTTGCCAGTGCATTTGTTCAACTT
+CAAATACCTTGATACCAAAAGATACCTTGGAATTTGAATTCTTCTTTGGC
+ACGTGGTGCCCGGCTGTTCTATTACGGTTTGATCTACAAAAAATGCGGGG
+TTTTTTTTTGGCCCAAAAAATGTGGCGTCAGCATGTTCTTAACTATGCGA
+AATCCGTTGAGAACTCTGAGTCTCTTATTTCACACTTTTTGAATTCAAAT
+ATACGTAGATCAAGCCTAAATTAGACACTCTGAAAAATTATATGAAACCT
+CAAAAACAAAAATTATTTCGTCCAAAAAGTTTTCAAAAGTTTTCAAAATG
+TTTGTCTCGTTTTAGTACCCTAAAACACTCTAGACGCTTAAAAAACCAAT
+ATGGAGATATTTATCAAAGCTTACACTCAGCGAAATATTGCCCGAGTATA
+ATTTCAAATACCGATTTGAGGGGCTAAAATTTTAGCTCTCGAATTAATTG
+TTAGTAGGTATCTTTTTATGATTTTATAACTTTTTTAAAATTTAATACTT
+CAAATATTTTACTGAAGCTGCATCAGTACTGAATTCATATTCAATAACTC
+AAATTTCAGATCTCCCTCCCATCATTCCCCCGTGTGAGCTCATCCCGTGA
+TTCGCGCGCAACGACAGAGGCATCAACCACCGACGAGGAAACCAAGCCAC
+TTATCCCAAAATCAACAGTTCCGGCAACAGTGATCAACATCCCCGAACAA
+CTGATCAACCCAATCAAAAAGTCACTGACCACAATAATCAACATGCCACT
+GCTGGATGAGACAATTCCCGAGAAAGCTCAAGTCCACCATAAAAGCCAGA
+CGCTTCTCACCTCATCAACACTAAATTTCGCAACTTTTTCAACGTGCCCA
+CAGCAGCCGACAAGATCCTACTCTTGCGTGGACTGCAAAAAAGCCGAGAA
+AATGTTGTCTTCGGATGTTAGTGACATGATGACCACTTCCACGGCGAGCA
+CTGCGTCGACAGTCAACGGAGCTCCACGGAAACATCTAACTCTATTCAAT
+CACTTTGATAGTGCCATCAAGGAAACATTCTTGTAAATTCAAAAGCCATG
+TGGCTCTTCATATCGTTTCCTTCTTTTATCTCCTTGCCAAATCATTCCAT
+TTTGAAATTTGAATTTATCAATTTTAGCATGTTTTTTTTTGGAATTGTCT
+TTAATTACTTTCAGTTTTGTGCCAAAGTGTGAAATTTGAAAAAGTGTAGA
+TCATAGGGTGCGGTAAAATTTAAAATTTTATGCCATTTTACATATTATTA
+ACCTGATAAAAATCTGAAATTTAAGGTTTCGAAAACAAAGTGCAAAATAC
+AGTTCGAGGTCCTTTTTTCAGTTTTTTGAAGTAGTAGGTAAATTATCTGA
+AAGCGTTTAAAAAATGTATTACTATTTTGTAGATTTGCCGCACACCTCAC
+ACATACACATTTTCAATTTTACACCCTTCTTTCCCTTCCTTACTTCAGTA
+CAATCTTTCGGTGTTTCCTGATAAATTGTAGCCATTGAAATCTCCACCCA
+TCACGTGTACTTCCGACTCTTCTCCTCCTTCCAAGCACTGACCAAGAACT
+TCCGAAGTTGTGAATTTTTATATTTGAATAAACAATAGTCATTATCAATG
+ATCTGTCTTCTAGTGATCTTTCATACTTTCTCTCTCATCAACTCATCTTA
+AAAAAGCGTGCGAGTGAACGAAACATGATAGATGGGTATTCGTATCGAAT
+TCCACAAAATTCTCTCAATGCTGCCACCTTTTCGCGCTTCTGCTCAAAAA
+AAAAGTTAAAGTCAAAGGGAAGTTCTGAGACTCGATAAACGGAAATTTGT
+CGGAAAACATCGATTTGAAAAGGAGAAGATGAAGAAGAAGAAGAAATGAA
+GCTTTCCTGCTCTTTGACTTTTGCCAGAGAAAAGTTTAGAGGTCAATTTT
+GCGGACCCTCAACTAGATTTGGCAGCACCGCACAACACTCAATTTGCAAC
+AAAATTCAAAAAGGAAACACGTGTTTCTAGCCGCCGAATTCCTAGAACAG
+GAGTAACACGAAACACGTTGGAGATTTGCATTTGAAATCACCGAGGGACA
+GAACAGTAGTAGATTTGTGGTGTTTGAAGGTGTGCAATAACAGAACAATT
+TTTTGTTCATAGTTTGGTGACGGGGAGTTTAAATAGTTTTCAAAGTCTAC
+ATCAGTAGGTTTACTATTTTTTATGTCTTAAGTGGAGAAGTATTGCAAAT
+GTATTTACAAGGACCTAGAGGGAGCAAGTAATAAAATAAATTGCAAGGTT
+TTTCATATCATTAATGCTTTTTAGTGCCCAGTTTCCCTTTAAAATCAAAA
+TAAAATCAGGAAGTAAATTATGCCTATAACTATATTGTATCCAATATTAC
+CTAGTTAAAATGGTACATGTTTTGAGAAAGCTGATAGAATTCATGCCATC
+TAAATTATTTGTTAACCTGAATGCTGAATTTTGTACATTTGGCCAAAAAA
+AAAAATGTTGTTTATAAAACTCAATATTGGTGCAAATAAAGTAACACAAA
+AGTTCTTTTCGACTTCCTAGTTCATTGTTAACTTAGGAATACCACAAAAC
+TTTGGGAATTTGAACATGAAAATTTTGAGTGAAAAGTGCAGATATGTGTA
+GCGTTTGAATGTGTGCACTGACAACAATGTTTATCTGTAGTTGAAAAGGG
+AGTTTGAAATTTCAGAAATTTAATACTATAAAATCGCTGCATAATTTTAT
+GGATTCCAATCAAAACATCATAGAATACTCCCGTTTTTGTCAAGACACGT
+GAAACATAAAATCCAATTAGTGTATCTCAATTCTACAGTGACAATGATTG
+TAAGTTCCTACGAAATATAAAGTTATTCAGTGCTGGCCATAAAGGTGTGG
+TTTATGGAGAATATCTTTTTCCTACTCAATAATTCTGTTTTAAACATTAG
+AAGAGTATCAGAAAGTATAGGTATGATAAAAAGTTTCAGTGAAAACAAAA
+AACTGAAAAACCGTGATTTTCAGAAACACATATTTTTAAGAGTCTAAAAT
+GAACCTTTTCAAAAAAAATCTGAAATGATCAAACGTTTTATTGTGCATAT
+ATTTGAAAAAATACCATCTTGATCACAATTTGGAGCTAAGCCTGTTGCAG
+TCTGTTCTGTGTGATTTTCCAATCCGAAATTTTTTTTAATCAGTTGCACA
+ATAGCTAGAACCCTATGAACTTCATTTTTCCATTAAAAAAAATAGTATGT
+CGTTTGAATTGGTCGCTTGAGTTCTATGCGAAATAATTAATGAAATTCGG
+AGAGAATAAGGTTGAAATTCTATGAATATAAATGAAAGGTAAGGTTGGAA
+AACTCATATCAAAATATTGTTAATTTCCAGTGTGTACAGGCGGGTGCAAT
+AAACAAAAAATAAGTCTTTTATGATCTCCGACAGTTCAATTTGTAGACTT
+TTCTAATCGAGAAAAATTTCTTATGAGATTGTTGTAAAAAATAACGAAGA
+GCGATATGCATCGCCGGGTCCGTAACAAGTTTTTGTGTCATTCCGATGTT
+GCGTTCTATCATGGAACTTATTGCAAATTCACACAAAAGTTTCCAAATTG
+AACCTTTAAAATCCGTATATTTTTTATTCCAATTTTACTTCCTTCTTAGT
+CACGTGTGGGAGTACTCATCAGGCAAATGAAGAGTAAATACAACTCAGCA
+CATGCTTCATGTTTGCTTCCAGTCTTGGTGAACTTTTGCTTCCAGTCTTG
+GTGAACGAAGAGTTTCAGTGATGAGCTACCAGCTTGAATTTATTGAGATA
+AAAAAGGTAGGGACTTTGGAAAAAGGCTTTTTAAAAATAAATTTTGTTCA
+AAATGCAAATTATTTATTTTAATTTTGCAATTTTGCAATTGCACAATTCG
+ATGGATATGTATCTGAACCTGTTTTTAATAATTCATGTTACAGTAATTTA
+AGAATGGTGGTAAATGTAGTTGGCCAAATGTTTTCAGGTCACCGCTCTCA
+TGCCCGATTCTTACAGCAGGTCCTGTGGTGTAGTGGTTATCACGTCTGCT
+TCACACGCAGAAGGTCGCCGGTTCGAACCCGGCCAGGACCTAGTTTTATT
+GTTGTTTTACATTTTATAAATAAAGGAATATGTAAAAGAACTACGTTTCG
+TGAAAAAGAAACATTTTGCAAGAATCAAAGAATACTTATAACTCCAAATT
+TAAAAATTTAATTGGTAGTTGTTTTATTTACCCATTTATTCAAAACAAGA
+ATTTTTTTATTATTAAGGCATAAAAACTATCGCTTCCTATACGTACGCAT
+CAAAATAAATGTCACGTTTAAAAATCAAAAAATTGGTTTTTACAAATGTG
+GAGTCATAATTCACAAAACCAATTGAAGATATGGGCTGCCGAAGTTGGCC
+ACAACTCTTTTTTTAAAATTATCTTTAAAATTTGTTTCAATGATATACAG
+AAAAATAAGAACATGCTTCTCAATTAAACTTGACTACTTTCATTAGGAAT
+AAAAAGTATGTAGTCACAGTTTATTTTAATTATTCATTTGGCAATTGCAA
+AACTAGGTCCTGGCCGGGTTCGAACCGGCGACCTTCTGCGTGTGAAGCAG
+ACGTGATAACCACTACACCACAGGACCGCATGTCGAAGAGAGACAGAGCG
+AGTGTATTCGAGAGGAGACCAAGGTCTCTATTGAAAACCAGTTGCATTTC
+GATTATTGTGGTCAAGTGAACAATTTTTTGTACAAGATAATTTTTATAAT
+TTGCTACAATATATAGAGTTGTGTGATTTTTTTTTAAATAAAAACGAAAC
+TTCTGAATTGATTATGCTAGAATAAATATTTTAACTTTTAATATCGCTTG
+GTACTACAGTTACCAAATAAATTGTCGAAAAGTTGAAAAAAGACTGTAAT
+TTTATGTTTAAAAAACTGAAAGTTACCAGTTAAAAAAATCTTCAGTATTA
+AGAATGTGCAAGAAAGACAATATTCTCACTGACGCTATTTTACCTTTAAA
+ATTTTTGAACAATTTTCAGGATGTTTTTTTTCAATTTCAATAATGCATAG
+TATAACCACCCGCCTTTCTGTTCCCACTATCACTTGAAATTTATGACATA
+ATTATGATATTATGACATTTGAAGAAATGAATAAAACATTTTCATGATCT
+TGCAGAAAGGAAAATTTGTTCGTGAAATTCAATATTCTCTTGTATAAAAA
+AACAACGTTTTTGTACATCTCCGCGGATTCTCCGTTTTGGAATGACCTGT
+CCATTTGTGCCGTATGCCGAGCATCGCGGCAAGAATGTCCCAAACGAAGA
+GAGGTGAGAAGCCACAAATTGGACGGACGGCGCGCGCGCGCGCGCGGAAA
+ACAAGAAGAGAGGTGTCCCATTACCAATATCGGGTTGGTGGGGTTCGCGC
+ACAGAGCTGCTCCTATGTTTGTCCGCACACCGCAACTTGTCTTAGCATAG
+CATCAAAAAAGTCCACACACACACACAGTACGACATGTCAGGTTGTTGGG
+TGAAGGGCGCTCCTAATCGCGAGAAGTAGAGGCTCTCAATTAGCTATCCC
+AACGTCCTTCTGTGTTGAGCTTGTGTTTACCAACGTTACTTGCAAAATGC
+ATTTTTCACTCTCCATTTACAACGTCGAGCTTTTGTTTTCAAATGTTTTG
+TTGTTAAATCAAACAAGAGATCTTAAAACTTTTCCGTTTTGGCTTCAAAA
+GTGTTCATATGCTGATAACTAATCTTTATTTCTCACACTCCGGCATGCCA
+TGCAAAATTAAAAATGTTTCTTATTTTTAGAAGAGTGGGTTCTAGAGTAT
+ACATTATTTACGTCCAATACAATTTTTTTTGACAACAACGTTTTACATGG
+TACAAAATACATGTTTCTTGTTAAAACCTGATAGCAAAATTTTAGTCATA
+TGTAGTTTAACACAGTTTGATTTTAACTACGTTTTTTTAATTCCCAGTAT
+TTTTTTTGGAAAATGTTTGGTGCAATATATATTTCAGAATTTGCAAAATT
+ATGTTTCAGTTACCCTGAAACTCAACATTTGCAACTAAAATGTTTTAACC
+GTACTCAATATAACATTTTTAATCATATTTTAAAGAATGTTACAAATTTT
+GCTTGTGATATATTTTTGATGTTTAATGGTTTTCAATTTTGTTTCTTTTT
+AATTTCTCAATTCTACAAAAAAATACATGAAAAATATAATGCAAATAAGT
+TTTTCTTTTCCACTTTTTCATACTTTAAGAACTGATTTCCATTGAGAAAA
+AAAATCCAAATCAATAAATTTGTAAGTTGTTCAAAAACCAAACTTTTACG
+AATAAAGTTTTACTGAATTTGGCAACTTTGGGGATACTACTGAACAAATT
+TTATCTTATTTCATTATTTATTTCCAAATAGATATTTTATGACATTGGGT
+TTTAAAAAACTCTAACAGTCATTTATGATTATTGAACTTCAGAACACCAT
+ATTAGGGGTGGTCGGCATTCGGCAAATTTTTTGTCGAAAAATTCGGCAAA
+TCGGCAAATGGCCTGTTCACCAGCTTGCCGGAAATTTTAAATTTTGGCAA
+ATTGCCGATCTCCCGTTTGCGGGATATCAGATTTGCCGGGAGTGTTTAGA
+GGGCACTTAAAACTGTCTTTTTGAATTTTTTCTCGTTTCTTTAGATATGT
+TCATAGAATTTGTCAATCTTTCAAAATAGATGTAGGAACATTCATAGCAT
+GCGTAAAATTTTGCCTACTGAAATTGAAATTCTGAAATTTTCTATGAAAA
+AATGTGCAAAAAAATGTGCAAACCCACAATTTGCAGAATATTTTCGATCA
+TAGCCGTTTTTCCGGCAAAGTCGAAAAATCGAAAAATCGGCAATTTGTCG
+GTGTGGCGATTTGGCGGAAATTTTCGAAATTTTCAATTCTGGCAATTTGC
+CGATTTGCCGGTTTTGCCGAAAATTTATATTTGGGCAATTCGCAATTTCT
+GTTTCTTATTGATTTGAACTCAAAATGACCAAGATAAATGATACCCTACT
+AGAGTGAATAATTTTTTATCATTTCATTGATTTTAAAAAATTTTCTCCCT
+CGGACATTTTGCTGAAACAGATCTTAATTAAAAATTTCAGCGATTTCCTG
+CCACATTCCATATAGCAGCAATTTCCGTCTGAATTAAATTATTTGCAACA
+TATGTTTTTCCTCACTTTCCACCCAACACCACTTCAAGACACCAATAAGG
+CGACGATAATTCGAGTAGCAAACACTGTTTCACACGCAATTAATTATAGG
+TCCGCAACCTTTTCTTCCTCCTACCCACTTCCACTATGCTTTTCGCTTTC
+ATTCATTCCCGAAATTACATATAGCGGCCTTCATGGGGGTCTCGGCTTGG
+GGGGAGAGAGGTTCAAGTGTGCGGTCTCATGTGTGTTTCAAGTACAGGGC
+TTATAGCCGCTTTATTAGTATTTAAGCTTGTTGGTTTCAATTTGTTTCCC
+CTCCACGAAAGTTTTTGGGTTATGAGAATAAGAATAAGGAAATGCCCACA
+CACCACGGAAAAGTAAAAACTGGCATTCAGGATGGGTGGGCTTCGACTTC
+TTCTCACTTCCTCCTGTTTTTCATTTCCTACCGTTTGTGTGAAATTCTAT
+GTACATATAGACAGAAGAAGTGGGGATGCTGAGTTTTTTAGTGGACCTCC
+GATGTATATCGCATGAATCATTTTCAATCGGTTTTCTCTCCCCCTTTCTC
+CCCACCCGATTATGGTAGTCGTCGTGAAGGGGGGCGGCGCCTACCTCCGC
+CTTCTTCTTAGTTGTTGGCAATAACACAACAAGATGCGCAAGTCTTTGGT
+CCTAACTTTTAATCATTTTTCATGCCCAGCCATATCGCAGCGGGTAACTT
+TATCTCCTTTACCTTATTTGTTCTGTTATCCAAATACTCTCCCCCAACTC
+CTCAAACTTGCTAGCTCTCAGAGAGCTCTACCTTGTATATCCTCTTGTTG
+CTCATTATGAATTCTTACACATGCTTTTATATTATAAATTATTCAGGAGT
+AGAACTAATAATGGATTGTAGAGATGTAAAAATAACATATACCAATAGTT
+GAAATGGTTGAAGAATAATTCAGCGTTATAAATTTTTTAATAGTATTGTA
+GGAGCTCCTTTAAAAATGAATTGCGTGTTCATTTACTGATTCATTCAAGT
+TAAAGTTAGAACATTTTTGTCTCAAATTCTTATAGGACTAGGCAAATCAA
+AGCCTCCCAAGATACAACCAGTTTAATTTTGTTTTTTTCAAAAAAATTTA
+GTCTGGATAATGGCAAGCATACCAAGTCCTGATATGAATATGGTCTACCA
+GAATTTTTATTTTTCCACATTTTCAATTTTATATTTTCAAGTTACTTTTT
+TTCCTCACAAAAAATTCTAGTTTTCTCAACATGCAATTTATTACAATATC
+AATTTTTATGAATTTTGAATTTATTTGAAATATCCCGTGTCAAATGCAAA
+TACAAAAAAGTCGCGTACATCCATCGCGTGAAGTACCACGTGGGATCATG
+ATTGTTGAAAAAAATCTAGACAGTACTACATCCATCCTCTCCCACTGTCT
+TCTTGATCTAACAACACATACCGAAGAGTTGGCTCACTCTCTTGACGGGC
+GGCTCTCTGTGCTCTCGGGCTAGCTGCTTCCACCCCCCGTCCCTGTCCAC
+TCAGCTTTCCGCGTATGTTCTGGCCTCCCATTCGGACTCGAACTAAGGTT
+TTTCTTGCGCCAAAGCTCCGAACATTAGCAAATCCAGATTCTTGTGCCGA
+TGTTTCGTCATACTTCAAATTCCTCCCACACTTTTCCAATTTGCTCTTTT
+TTGTTGCTCTTACTTGGTTTTTTTCTCTTCAACCTCTAGCCTCAAAAATT
+TCACTTTTCAGCCATGATACCCTACTTGGGCCGATCCTTACTACTTCTGG
+CACTTCTAGCACAATATTCAAACACGTGTCTTCTCAAAAATGGCATGAGT
+TCCGTGTATCTCTCGGCTTTTGAAGATTTGAAACCAGGTATATTTATGGC
+TATATTTATATATATATATTTATTCCCATATAGAAATGTCACTTTCGATT
+CTTCCGATTTTCCCAATTTCAACTCGTATCATGGAAAAGTAAAGCGATAG
+TTGCCTTTCTTTCTTTTTTTCTGCAAAAAGTTCGTTCCCGAGACCCCCGG
+CCGTTATGTAACTTTACTTTCTCCAACTAGGACAATTTCCACCGTTGTGT
+TATTTATGCTCGACCGCGTTCATCTTCCCAAATTATTTTCCCCTTGTAAT
+CGGCCCGCCAAAACGATGCAGCTGATCATTAGTGACTACGCACCCTTATA
+CAATAGGCACTGGGAGGGGAGAACCTGCTAACAAGATTTAGTTGAGCCAA
+TTTGATCTACACAAAACGTGTCCTGGGTAGATTCAGACCAAAGGGAAGTA
+AATGAAGAATTGAGTAGAAAAGAGTGGGACACATGTGATGGCAAGTTTAT
+TATTAGCACCAATCGTCATGTAACTAACGACCGTGATGACGGACAGATAA
+TGGGATAATGATGGGTGCCTTGGAGATTTGTTGCGAAACCTAAATATGAC
+TAGGAAAATGAGAAAAAGAATGAGATGAATAAGGAGAGAAAGAGAGAGAG
+AGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAG
+AGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAGAAGAGATCCTTA
+GATAAATCGGATAAGTGCGATAAATCAACAATGTTTTTTTGGCTTGCAGG
+AAATGTGATCGGCACGCTGCCTTTCGAATCGCAGACCTCAAAGGAAACCG
+ATGTCGAGCTACGGGTGGTGAAGGGAAACGAGTTGGTCGATGTGAAACCT
+GGCAGCCATGATTTGATTCTGAAAAAGACGTTGGATAGGGATGAGGTAAA
+TTGAAATGGTGGTGCTGAAATGTTTTGGTATTCAAAAGTGAACTGTTTGA
+GTTGGGGGCAGAGATGGCATTTAAAATTTAAATCTTTGTAAAATTAACTT
+TTGAATTGCACGTGTTTATTGGTTTTCAATCAAAGATCAATGAAGAAAAT
+TGCTGAAAATTTTGCATTTCTACAGAAATTCCATTTGAAAAGTTTTGTCC
+ACTTTTGAACTCAATACTTTTTCAGTGCAACCATCTTTGAAAATTTTAAG
+ATGGAAAACCTTGCAGACTGCTCTGCGTTTTTAGAATCATTCAAAACCGG
+CAAAATTGCTCTTGGAGGAATTTTTAAAAATTTGGGAAAAAAGTGGTACT
+TGTGTATTACATGCCCTCATTTTTAAATTAAATTAAAAGTTCATTAATTT
+CTCCGTTTAAATTAAACGTGATATACATTTTTCATCTTTAGGCTTAGGAA
+TGGTTAATTGTTAATCCTAAAAATACGAAAATATGCAACACTTTTCAATT
+TTTATATGTTAAAAAATTGCTTGAAAAAAAAATTTGCCATTTACCAAAAT
+TTTTAAGTGAATTATTTGTAAAAATATATGCAAAACTTGACTTTCCAAAT
+GAGAAGTGTCTAAATTTTTTTAGTTCCTTATTTTTTTTAGTACCCCAAAA
+GATCTAAATTCCTGAATCCTCCCATTTTCCATGATATCACTAGCTGACCC
+CCGCCGTTGTAAACAAAAATGACAAAAGAATATCCTCCAACTAGACGCGA
+GTTTCTATTCTCGATCACAGCTAAAAGTGTTTATTCCGATTTCAAAGTTC
+ATTTGATTCGTCCATCCAACCTATTTGTTTGCACAATTCTTATCACAGTA
+TGTTCTCTCCCAGACCCATTGCCTTTTCCATCGGCTCGTGATCATGAAAT
+CTGAGGCGGCTCTTCTCCTCCTCCTATTCCTGCGAGCCAAGAGACAACCT
+TAAATATAGTTGAGCATTGCGCAGGCCTCTTTCTTGTTGACAGACCATTC
+TAAGTGGTTAGCGTGTAAAACAAAAGAGCACTCGCTCGCCGTTTCCTATT
+TGGGAGGGGTGAGGCGAAATCGCATCTCAAAAAGGTACCATGTTTAGGGG
+ACATTTGACTTGTTACATTGAATTCTGAAGGTAGTGGTGGCCTACAAGTT
+TTATGATGCGTTAGTCAATGATGAAGAGACACCGGGGCGCCTAAAGATGT
+ATACCAATTATTTGTTTCAGGGAGTCGGCAAGTTCGAAGCTGTTGTTGAA
+TGCCGTTCCTCGAATTTGGATACAGACTTCAGTCAGGTATGATTGGAAGT
+GACAGAACACGCTTTTTTTGGGAAGCTAATCTGATAACAATTGATAACAA
+TTGCAGCTGAACATATCGGTGTTTGTGACGGTCAAAGACATTAATGACAA
+TGCGCCAGTGTTCGATTCAGCCGAGTACTTTGTGGACATTAAAGAAGAAC
+TACCAACTGGTAGAAAACACTTAACAAATTAGACAAAATACGAAAAGTGA
+GATTTCAGGTACAATTGTCTTCACAGACTTCGAAGCCACTGACAACGATC
+AACCAGGGCCAAACAGTTTCGTGCAGTACACTATTGTGGCGGGACCGCAT
+TCTCATTTTCTGGAGATTCCGGACCCTTTCAAGCCAGTGATCACAATTAA
+AGATAGGATTAATTACGAAGAGATCAAGAAGTTCTCGGTGGAAATTGAGG
+CGAGAGATCAAGGAGAACCGAGTTTAGCATCAACGGTTCCGTTACATGTG
+ACAATTGTGGATGTGAACGACTTGCTGCCAAGATTCAAACATTCACATTA
+TACAGCTAAATCTCAAAAGGTAAGAGAAATAGGCAAGAGGTAAATTGTCA
+TGTACACGTTTCTAAAAATGTTCAATTTTTAAAAAATCGTAGGTATTGGG
+AAATATGTATATGTATTTGTATTTCCAAGTATTTTTCAAAATGCCACAAC
+ATTGAAATTATGACAAATTTTGTAATCTATCTTTCAGTCTATTAAAGTTA
+CCATGGCTTGTGTCAATATGTACTTTCTCACAAAATTCCACACTGTACTA
+AACTTGATTACTGTCAAACTGCTATAGCTACTGCTTTTTTCTCTCGCTCA
+CCAAAAAAGCTACTATTCAAACGTTTTCAGAATGGCGTATTGGTTTTCGA
+ACCGGAGGCTATCTCAGCACAAGATGGCGATCGTCTCAACGCTTCGCTGA
+TCTTTTCTCTGTCCGGAGGTATGTAAGGGGGGCGCCTGCATATCATTTCA
+TACCTCATGTTGCGTGCCTTATGCGCACGAATTCAAACCAAATGGGGAGA
+AGATTTGGAAGAAAACGAAACAATCGAACCAAAAAACAAAAAAAAACACA
+ATATCGACAATTTCACTAGGAGGAGAAATTTCGAGAAGGGGTGAATGTTT
+TGAGGGAGCAAATAGAATACTTTTATGAAAGTAAAACCTAGGCTATTTTA
+TATGGCGTTATGACGTTGCTCGGAATAGTTCTTCGTGACCGTCTTTTTTT
+TTGAAATACTACAAATTTTGAATAATGGGCACACGAACAATTTTTCAATT
+TCTCAATCATCATTATTTTAATAAAAGTTGTTAATTTTGAGGCAAGCTCT
+GACGTAAATTGACCATAGTTTTGCTCAAGTTGCATTTTCGGAGTTTTTTC
+CAATGTCAGATTTTCTATCATAATATGCTCATTTTACCAGCAAAAAGTGT
+TGTCAATTTCTTTTACAGTATTATCAGTTACCTTAACTCTTGTCTCCTTT
+GCAAAAAAGTCAACTTCGGACCGTTGCAGCCCGAAAAAGTGGCAGTGGAG
+ACGTCAGCTGAAATATGGTCATTTCAGCACATTTTGGGTACTCAAAAAAT
+AAAACTCGACAAAAAATAAGATACAAAATTACTTCATAATTAAACGCAGC
+GCTCTGATACCAAATTTCACTACCTTTTGACAAGCATAACTTTATTTTCA
+GAACTATCGGAACACTTTGCCATCGACAATGACGGAAGCATCCGTTCGAT
+TACCCCTAACCCACCACAACGAGCCACTTTCTTTGTGACGGTAAGTGATT
+CTCTTTCACTCCGTTGCTGTCTTGGTTCATTGAACAACTTCAAGACGATG
+ACATCTGTATTCATTGAATTCTATTCAATTCCACATTCAATTTGAGGCAA
+AGTATGCACCATTTTTCTCGGTTCTCTTTTTTCTCGTCTCTTTCACTGTC
+ACTGTTCAAATTGGAAGTAGACGAGGGGGGGGGGGGAGAAAAATAACAGC
+CGTCCTTGGTCTAATGGCGTTCGTTGCGGCAACGTCGACAAATGCACGGT
+TCTGAGATTCTAATTAGAACCGTTGCAAAACAAAAATGACGGCAGATGTA
+ATGAATAGGGTTCTAGATTTTGGTGGAAGTTGAATAATCAATTGAACTTT
+CAGGCCTCTGAACGAGAAGATACCGAGAGAAATAGCACGGCAATACTGTC
+AATCCGTCTTCAATCTTCATTAGCCTTCCAGCACAACACCTACTCTACAA
+CAGTGAGCATTTGTTTGAAGTTGGAAGTTATCAAACAAATAATATGTTTC
+AGATTTCACCAACAACACCAATTGGTTCAACTGTGATCACTGTGGTGGCC
+AACTCGGAAAATGTGAGTTTATAATATCAGGGTTCATATCAAGGTTCAAA
+AACCTAGAAGGTTCAAAAAACCTAAAGTAATGCCTGAAATTTTCCGGTTT
+TCGAAAAAGTTTTCAACAACATTTTTAGCAGTACATTTGCTAAAAGATTT
+ATTTTATCACAATCTTGTTTTACACATCATTTCGTTTTTTTTTGAATCCT
+GACAAAACTGTAGTATGAAAATCGAGTGTTCAACTGTTAGATGCTTTGTT
+TGTTAGATTTTGTTCCTTTCATACTGGTAACTTAACCGATTTTTTGACAA
+GCAAGTTCCATCAAAAGCGGCTATATCTTACAAACTTTTTTTAATTTACA
+AAGTGACACCAGATAGCTTGAATGTTTTTGTAACAGACTAGAATTTTAGT
+ATAATAATAATGATAATAATATGAAATATTTTGAGTCGTTTTTTTTCTCA
+GAATACCCCGCTCACCTACTCGCTTCTTGCCGACACGAACACTGTTTCGA
+TTGATGAAGTATCTGGAAATGTCGTGCTCCGTAAGAAACTCGAGAAGCCC
+GAAACATTGAATGTTACCGCGAGTGATGGAGAAAATGTGAGCACAGTTTG
+TTTTAAACTGATTTGCAAATCAAGTCTTACAGGTTGTCTCTACCGCTCTC
+CACTTGATGACAGCCAATTCGGAAGAATCGTGTCGATCGCCGATTAAGTT
+CGAAAAGTTCGAATATAAAATGACAATTGGGAAATTGAATGTGTTGGGAG
+TAGTGAATGCCACCTCACGGACAGGAACAAAGATCACCTACATTTTAATG
+AACATGAATAAGTAAGTACATAGTGAAACCATAGTCTTATAAGCTTGTGA
+CAACTAACTTCAGTGATTTTGAAATCGACACCAATGGAGTCGTGAAGCTT
+CTTCCCAAAGCACGTCTTCAGTGCAAAGTTTGTGAGCTGATTGTAGTGGC
+AAAATCGGGAACTCAAATGGCAATCACCAAGGTACCAAAAATCTGTTTAG
+TTCCAGAAAGTATGTTTTCTTTCATATTTCCAGATTAACGTGGATAATCC
+AGCATTTGTTCTTCACTCGACCACCGCTTTAACTTTATTGATTCTTATCA
+TTTTATGTCTGATCTTCACGATGCTTGCTATCCTCGTGTGTCGGAAGTTT
+TGTGAAAAATGGAAGACGGGCCATCGGAGATCGAGCATTTGTTGGCTCAA
+TGGGACAACTGATACTGGCATTTCTATAACTACAACAACGCCGAATACAA
+CGACTAGGTGAGTGGGGGCAGTTGTTGGAGGTTGTGTGGCGAAAATTTTT
+CAGTGTAATTAATGCTACTCACTTTTTGACTACTGCTCGTTAATTTATTC
+AAACAACAATATTCCCAGATTTTTTATGATTTCAAGAGGGTCTAAAGTAA
+CAAAGCCTTTCTGTAAGGTTTTCGGAGAGTTATAAATTTTTGGAAAAAAA
+CCTTTGTTTACCTAGATTCAACTTGACAGAGAAAAAAAAAGAATTTTTCC
+GATATTTCGAAAAATCTTCCGCGATGTTTGACTTTTACTAAGCATTTTTA
+CTAAACACAGACTTTTCCCAACATACTTAAAATTTACATATATATTTTTA
+AAACGACTTCACGGGCTTTCTATTCTGGGCATAGGCAATAAAATAGGTGA
+ATTTTTAACAAAACACTCCGAAAAATTGGAAGCATTCACAATTTTTCCAA
+CTGAAGTTTTGGCAGCTTTGGATTTTTTAGCGACATATACAATGAATTGA
+AGCATATTACTTAGAATATGTAAATTGTGGAGTAAAAAAATCAGAAACTG
+TTTGAAACTTTTTTTTTGTATTTGATTATTCCAGCACTACAGTAATGATT
+TTAAAAGTTTCACAATTCCATATCCCGATAAAAACCGTTAACAATTTATA
+GTTCAGGTATGTGGTGAACAGTGACCGCGATAGATGTTACGAGTCCAAGT
+CACCGGGTCCCAAAAGATCACAAGGTGCCCATTTGGTTCCAGTCACCGTA
+ACATCAGACGGATCAACGCCTACTGTCTATTTTTAATATGTATCCGATAA
+AAATTCTGAAATATCTGTTCATCTCCCTCAACGCCCCAATCTTACTGGTC
+ACATGCTCCTCGCTTCAATAATTTTTTTTTGCAAATTGTCATTGTAAATA
+CGCAACCTCGTCGAATTCTTTCACAGCTCTTTCACAATCATATCGGTGAC
+TTTCTTTCTCACAATATTCTATTCATTGTATCTTCAAAAGTGCTCATTCC
+TTTGTCTAACCGTTTTGCTTACAATTAACTTATGTTACCTTCGCTTTGCA
+GTTTCAAAACTACAGGGTTGATCTCATATTCACATTACTTTTTGATCAAT
+AAATATATTTATATAAATTTTGCAACTGTTAATTTCGTTTGAAGAACACA
+AGTAAAATACAGATTCAATTTTATGGAAATATTTGAGATGATATTACGGT
+AAGCATATCCAGTCCAAAAGTTTCGCGTTGTGTTTCACGGAAAATGATAA
+ATGTAAAAGTTTTTTGTCTGCCTTTTGGTTTCCAAAAAATTCCAAAATTG
+TATTTTTTTCTTTTTTTTTATTCATTCATTTTTAGTCATACATACATCAT
+TTATCATTCATCCATTTCAGCTCGCTTGTCGATCTCCAGTTGGCCTGATC
+CTCATTGACCTTCTCGGCCCAAGTTCGCCGCCGTGGTTGTTTGTGAAATG
+ATCCACGAGCTGCTCCTTCGCCTGTCAATGCCGGTGTTTCTGGCATTGAC
+AGGGTGGCTAGGGGTGTGGGGGTCGAACCATTAACCCCCCGGGTGGCCGA
+ATCAAGACCGCCGCCTTGATCCACTCGGCCATCCTCCCGCCGAAAGAACA
+ATAGAACATAGCTGATTAAGTTCACGTGATGATTTACATATTAAGAAGAG
+AAATAACTTCCAGGGGTCGAAGTTCATAACTTTTTTTGTTGTACATGGAT
+TTATTCGAAAATTTCGGAAAGTATGTTATCAACCCTGCTCTTTCACGTGA
+TGGTAGTTTCAAAATGATTTGAACAGCCAAAGTTTATCAGACTGATGTTC
+TTTCTAGTTTATTTTCAGACTTTTTAAGTTAAAGGGTAATTTTGCTTATT
+CAAAAGTATAATGTGAAAGTTCAAAAAAGAATTGGAGGAAATTGCAGCCA
+GAAAAATTGCTAAGAGTTTTTTTTTCCATCAAAAAAACATGTTTTACTTG
+TTTGATATGTCAGAAGTCTGTAAAAAACTAAAAACACTATTCCGTTTTAA
+CATGTTCTATCTTTTTTAAATTAAAACTGAACTTCCAATTAGATAACAAA
+AATTTAAGTGTCAGAATTTCGACTAATTCTGATATCTGAACATATTCAAA
+TATTTCAAATCAGTTTTGTTTTTCAATAAAATATTTTCATTACATCTTCG
+AAATCCTTCTGGATTTTTTTAAAACCGATTAGCATTGCCCTTTTCGTTCA
+CATCTGGTCATTTTTTCAGTTTCTATATAGCAAAAAGTATATCTGATAAT
+TTTTATAAGGTTAGAAAATAATTTTCATTTGAAACATTTCAATCACAATT
+ATTAAAACGATATTGCAACTAGCAAAACACATGGCCTTTTTGAATGAGCT
+TATGAAGCTGATGGAAAAAATACAAGTACATCATCTAAACTGGCTAAAAA
+TTAAAAGAACAAAACTACATACAAATTGTATTAAGAGGAATGGACTTTGG
+AAACTTGAATTGAAAAATAAATTGAATTATGCATGTAACAGAAAGTAACA
+AAGAAGGAAAGTGTGTTGTTGGTAGCGTGTTTGTAAATAATAAATAGAAT
+TTCGATGACTAGTGCATGAGGAATATTCAAGAAAATTGGTTATCCGCAAG
+TATTGACTTGTTATTGTTACTATTTTTGAACATATTGTAAGGAATTGGAG
+CAGTCGGTACAGGGTCGAATGATGATCCAGATGATGATCTGCAACTTTTT
+TTGTATAGTTTGTTACTTTTGAAGATGTTTATCGAATCGTAATAGATTCT
+GGAGCTAGTATTTTCAGCTTGACCTATGTGTGTTTCTAGAAAGTATTCAA
+CTGAAAATTTTATACTCAAAAACTAACTTAAAAAGGAACTTACAATTAGA
+GAAAAGTTCAAGATTCACTGTAGTTTTGCTTTCGTTCAGAAAACTCAAAT
+TTTGAGTACTTTTTGCAAAGTTTCCTAGGAAGAAAAAACAACGGTCTCAT
+AATTTTTTGTCTCACCTCCGATGAAGAGAATTTTGCATCAACGAGCCCGA
+TGAAGTTCTTGCATGTTCTGATAGCCTGGAATATGGGAATTAAGGAAATT
+ATATTTGATTTATTTGAGCAATTAATAAAACTGCGTCTTACCCTCCAGTC
+ACGCCCATTCGACCTTTTTTCTTCCTTTCCTGTATTTTCTGTCTAATTTC
+CTCCATTCTACTCAGTGCCTCGTCTCCGCTGTCTGGAAAAAAAGAAAAGA
+AATGAGAAAAAAAAGGAGAGAGGAAGAAGAGTGCTCTTTTCACATGCCAA
+AAGAAATGCAGTCGACGCTTCCCCCTTTGCCTTTCTTTTTTCCCGACTAG
+GGCTTCATATACTCACTTTTATCTACCATTGCTGCATATTTGTCCCGCTC
+CGACCTCAGTTCGTTGATGATCAGATCCTAAAATTTATCAATTATTCATC
+GAATATGCCCGTTGTAATTTGTGAGCTCATTTCAAAGTGTGTTTTCTGAT
+GTTCTCTATAATAGAAATAAAGCTCATTTCTAGTATATCAAATATCAGAA
+ACATTTTTATTTATTCTAGGCGCGATAATTAAATATACCAATCTAAAATT
+ACTCTCTTGAATTAAACTCCCAAAGTTATTAGGCAAAAAGATTCTCCCCG
+GCCGGGAATTGAACCCGGGTCTCGCATGTGACAGACGCGGATACTCACCA
+CTATACTACCGAGGACACGAAAGAGAGCGGTTGTTGAGGCTTTTATAAAC
+TGGGTTTATGACCGAAAATTTAGTGCTATATAGTATATGTAACAATAAAT
+TATGTTAATATGTATAAGGGGCAACTGGGAAACTTTAAACAATTTATTGA
+AAACATTTTCTGTGAGAAAACACGTAACCTTGAAAAGTAACGTCTCTATT
+TTTGAAAAGATCCCTTATAAATGTTTTCACTTGTTTTAAATTTTGTATAA
+AAAATTTAGCAGCAGTTCTTGCCTCACCTTTTCATAACTCTCCTCTTTCA
+ATTTGTCCACCTGGGTTTCAAAGTTGTCAGTTATTGTTGCAAGAGTTGAC
+TTCCGTTGCTCAGTTTTGTCACCGTGAGTTCTAAAAAAAGCTTTTTCAAT
+TCTGCTCTCCATTTCCGTTTTCGGCTCAGTTCTTCAACAAACGAAGAGAA
+TAAAAGAAGAGAGAAAGAAAAAAAAACAAACTTTCGCAAATCGTTCACCA
+TTCTTTCGAGTTGCTGAATCTTGTCGTCTTTTGATTGAATGCTCTTTCGC
+ATTCGAATAAGATCCTCTGTGCTGCCGGGAGTAGTGGTTCGCTGCAAAAT
+TGATGATTATGCAAATGAGTAGTGGTTAGTAATTCCATGAGTAATTCTAT
+AGATGTTCTGGCATGTTCTATTTCAGGGCTTATGTACTACTATGTACAAA
+GACGGCTTAGACGGCAATATCTAGGATAAGATTGTTATAGAAGATAAACT
+AATAATAATAGTTTATAATTTTAATTTCCAGTAAAAAAATTATGAGATGC
+TAGAAAAATTTTTAATTCTCCATTTTTTAATGGTATATATTAGAAAAATG
+ATGACGCTCTTTAGACCCTCTGCAAACGTTTTCAAATGTACTAACCTATA
+GGCGTCCCATCTAATTTTCAGAAAAAAAATACTGAGACCGGTGCTGATCT
+ATATCAATAAAACTTTCATTACCGGACATTTAACCCCATAATCGGGAACC
+GGTTCAAATGTTGTCGCCCCCCCCCCCCCTTTTCCTAGCACACCCCACAT
+TACTTTCATTTACTACTATTTCTCTCCCTGTTTCGAGACAAACCTTAAGA
+CTTCCAGTGAGTGATGTGTCTTTGTTCAATTGCATTCTTAGCTGAGTCTT
+CTCCATTTCCCACTGAGCCCGTTCCGACTCAACCATCTGATCCCTCCGAT
+GTTGTTCTTCCCATACTTCGTTTAGTTGCTTTCGCAGCTCATCAGCGTGT
+GCCACTACAGCGGACAATTCTTCGCATTTCTAGAAAAAGTGTTTCTTATT
+GAATTTTAATTTCAAAAAAAAGATAACGTACTATCAAGAAAACAGTTTTG
+ATTTGGGAGCTTTAAAAAATATTTTTAATGTAAGTTAAGAAAGCAAAAAA
+CATTTTTTAGAGAAGTCCGGAAGTGCAAGGTATATTGCAAAGTTAAATTA
+AAATTTGAATTTCGCAATATTTTTTGAATATGAATGCAAAAGTAATGGTA
+CATAACTATTTGAGTGCCTTTAAAATTACCTTGAAAATAGAAAAAAAATT
+GATAGACAAGTTCTGAATGTTTCTAAACACAGCACGTTTTCAATTGTTGT
+TTGTATCACATGGAAGTTTTTTTTCATTTCTTATTTTCCCACGTCAGTTT
+GCAAATTTTTTTCGCGTTTCACTTTTATTCATTATTATATCAATTGGAGT
+GTCTCATCAAAAACAAAAAAAATGAGACAACTGTTAAAAATCTATTTCAA
+GTAAAAATTGATTTCCGGCTAGTGAGACAATTTTTTATTTATTTTTGGGT
+TGTCTCGTTATGAAGTCATGTTGATCAAAATCCTTAAAAACCGAAAAAGT
+GGCCAAAGGTGACCAAACCTGGCCACCAATGGGCTCTAAATGTACCATAA
+TCAACGAAGTGAGATCATAATTCAAAAACTTCAATTTCCGACTACTGCGA
+CACGGTAAAATATTCTAAATTAGAGATTTTAGCTAACAGTCAGGAAAAAA
+AAATTTTAAATTTTTGGAGAAGTTTCATTACGAATTTCGTTCATTTGAAA
+ACATTTTTAGTCTATATGTTCAGAAATTCTCCATATTCACAAAATACCCA
+AACAACTGTTCACTTTTATCAAAAGTACACTGTTGTGGTCCTATACTTTT
+GTTCTCCCCCCATTTTCCCATAAATAAATTGGAAATGTTATCCATTCCGC
+TCAGCACATTCTCCCACAAATATTCCATACTTTTTCCCGCTTCGCCAATC
+TCTCTTGTGAATTGGCGAGTGCCTTCTCAAGCATTGCAATATGATTTCGT
+TGCTCCTCCAACGTCTGATTCTGTGCCTCAATCTCCATTTTTTGCCGCTC
+TTTGCATGCGAAGAGTTCTTGCCCTGAATCGGAAAAAAATCAATTGTATA
+AGTATTTTATTCGTTTTTTTTTTCATATTTCTCATTCTGCTTCTCTGTTT
+CCAGTTCTATTGTATCAAATTTATTTCTTTTTTTCTCCTCACTCTGCTGA
+ATTTCGTTTAACATCAGGTTCGCCACCATCGTTGGTTCAGTACTTGCTTT
+TTCCAGCCGCATTTGCAAGTCGTCTCTTTCGATGGTAAGTCTGAAACTAA
+GATTTTTAGAAGATAATGGATTTTCCTGTTGATTGGATGTTTGTTTGATA
+TATTGCCGCTTGTCAGTTTTTTTTTTGGATAAACTTTTTAAAATAAAAAT
+ATTGTAAAATTTCAGAAAAATATGCCCGTGTAAAACTTTGTATGAAATAA
+GCTTTTTTTTGCTTACTCGGCATTTGGTTCTGGCTTCTTGCCCAACTTTG
+TCCTACAAAATATCAACATGGATTGGCGCAACTTGGCCAAAAGTTAGGCA
+AGACTTCGGCAAAAATTACACCAAAGTTCAACACAAGTTTCACCCAACTC
+TCGCCAGACTTCTACCAAAGTTTGAAACGAAACAAGAAAAGTTTGGGCCA
+AAGTTTGGCAAGAGTTGGGTTTAAAGTAGGGTAAGAGTAGAGTTCGGCTT
+TGGTTAAACTCTGGTGCAGTCTCAATCCTTTTTCTCAAGTTTAGCCAACT
+TCTAAGCCAAGTTAAGATTTTTTGGGCCAAACTTGGGCAAGTTGCAAGAG
+CCAAATGCGAAGAGTATTTTGCCCAAGTTTGTTTAATCAAATCATTATTG
+TTGTGAACTTCAATGATATTAGTTGTGTTCAATGTTTGTCTAGTTTGCCC
+CAAACAACAAAAAAGTGCTGCTCGTGAATTTTGTGAAATAGTTTTCAATT
+CATTTTTAAATGGAAACTTTTTTATATTGCCTTCATTAGATATAAATATC
+AGAAAATTGTTGTCTCTTTTTACCGACAAGATTTTCAACCAACTTACTTT
+TTTACAGACTTTTCCAATTGAATAATCACGTTCAGCTCTAAATTTTCTTG
+CTTTTTTCGTTCATTTGCCAAGTATTCGTATTCTTTTTCCAGTCGAGCAT
+ATGAGTATTCAATCTGCAAGCATTTAGGTTTCCCACTATTTTGAAACTTC
+CAACAAACCTGTTGTAGTTTTGAAAGACTGCGCTTGAAAGCGTCGAGCTC
+TTTTTTCAAGTGCACATTCTCCTCGCGGAGAATTTGAATGAGCTTCTGGT
+TGCTGGATACTCCCTAAAATAATTGTTTGTTTTGCTGTTGCTTGTTGAAG
+TTCTTACTCTGTTAGTTTGGCTCAATGTGGGGACGTCAAGTGCTTGATCT
+CCAGATGCAGATGCCCTACGCTGATAGGCAGATGTGCTCATTTTTGATTC
+ATTTGGGGGAATACTGAAATTATTAATGTTTAAAAGAAGAAGGTCAAGCT
+TTTTTTTGTAAAAAAAATATCTCAGGAAAAATGTTGAGTTTGTCAAAAAA
+GTTTGTTTGTTTTTTGAAATGCAACTTGAAAGTAGGAAGTTTTAATTTTA
+GATAATCGTTTAGCTAAAAACCTGTGCGGAAGTTGTTTAAAAGTTTTTCC
+ATACGAATATAGTGATTAAATATAAAAATGAAACTCTTGTTATAATTTTT
+GAATTTTTTATTCACAAAAAAAAAAGAGAGAAATCTAGCAATTTTTCAGT
+ATTCGTCACTTACTACTTATTAAATTCACCAAAATGTTTTCTACGATTTT
+TATAATTTTATAAAATGAAAAAAAAAATGCTACAAATTTCCTTATTTAAA
+AAGTGTGGCTGAAATTAATGCATAGTGGGAAACACTGTGGATAAAGTTAT
+TGATACATTCAAAAAAAATTTTACAGTTTACCGTATAACGTTTCAAAAAC
+ATCATAAAACCAATACTTACTCTGACGATCTTGATCCACTCGCAATAAGA
+CATGGCTGAGAATGACTGATAGGTGATGCTGAAATAATATACTATTTTCA
+TCAATCCACCAAAAACAGAAAAAAAACAAAAAATGTCACACGCACGTCCT
+GCACTTCCATGTAAATCCTTCCGGCTGTTTGCTCTTTGCATGTTCATTTC
+AAGCTGATATTTTTCGAGCATCTTCTGCAACCGCTTCTCGTCGTCATCCT
+TGCTTTTTGTTTGAGCCTGGTGGTTCATCACTGAAAAATAGTTTTTCGAA
+TTGCAGGACCCCTGGTTCGATATTGCTCACCACTCGCTTTCAGACTTGGA
+TTCAACTGAGCCTCCTTTAGAAGTGAGTCTAAAATGTTCGTCTCTCCCTG
+ATACATGGGTGTCGGTGGCACTGCATGCACTCGTCGCTGATCCGATGATG
+TGCCATCCGACGAGCGCGGATCTATCACGTCCCCTCGATTCATTCACCCT
+GAGATTAGTTTCGATTAAATAGTGAATCATCAAGATTGAATGTAGAACGA
+GAAAAAAATAGGTGAGAAAAATTAGACATTTATTTGGGTGCTAATATGGC
+AATCATACCTAGAAATATTTAATCAATAACGTAATTCTCACGTGGTCATT
+TTTCAACTAAACTACATGAAGCTAATACTAACATGAATTTTAACTTCACA
+TCTTGAATGAATGAATATTTTGAATGCAAATACAAACGTGGTGTCAGGCC
+CACGGTGTCAGGCATTACGGTTTCATCTACAAAAAATGCGGGAGTTTTTC
+AATCGAAAAAAAATTGACGCCAGCGCGTTCTTAACCGTGCAAAATCAGTT
+GAGAACTCTGCGTCTGAACTCCTGCATTTTTTGTAGGTCTACGTAGATCA
+AACCAAAATGAGACACATTGACGCCACAAGAATACATGAAAAAATGATAC
+AAAATTATATGTATTCTGGAAAAAAATTAAACAAAACTAAACCATGAATA
+TTGTTGCCAGTGCAACATGTTCCCAAATTTTACGAATGATAAGAAGACAC
+TTCGTGAGCTAATACATACAATGTAGAAACATTTTCATTAGTTTAAAATT
+GAATTAAATCTAATTTGATAATATACCAATACTCTAAACTGTAAGACCAA
+ACTAAAAGTGACAATTTCTGGTATAAGTCACAAATACTCAACAACAAAAA
+ACTAACACAAACCCGTCTCGGGCGGTCAAACGCAGTTTCGATTAAACTAC
+ACTAAAAGGTTTCAAGTGACCTGACCCGAAATGCAAGTTCCTAATTATAT
+AATTACACGCGTTCGTGTGGAAGACCTTCTTTCCAAAATCGTTTAGTTTA
+GTTCTGATTATCGCGGCTTATCCGTGTTAATCTCTGACGTGGTCGAAATC
+CAAAATGAAGAAACTTATGTTTTTGCTGTTTTTTCCAG
diff --git a/Demo/Sprz-sub.fa b/Demo/Sprz-sub.fa
new file mode 100644
index 0000000..2dd8844
--- /dev/null
+++ b/Demo/Sprz-sub.fa
@@ -0,0 +1,3039 @@
+> DA1140 TGC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gggcccttagctcagctgggagagcacctgccttgcacgcagggggtcga
+cggttcgatcccgttagggtccacca
+> DA1180 TGC MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+gggcccttagctcagctgggagagcacctgccttgcacgcagggggtcga
+cggttcgatcccgttagggtccacca
+> DA1200 TGC MYCOPLASMA PNEU. EUBACT (Eubacteria)
+ggggatgtagctcaactgatagagcacctgatttgcactcaggaggttga
+gggtttgagacccttcatctccacca
+> DA1230 TGC ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggggctttagctcagctgggagagcgcctgccttgcacgcaggaggtcag
+cggttcgatccgctaagctccacca
+> DA1231 TGC ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggggccttagctcagctgggagagcgcctgccttgcacgcaggaggtcag
+cggttcgatccgctaggctccacca
+> DA1260 TGC SPIROPLASMA MELIF. EUBACT (Eubacteria)
+gggcccgtagctcagctgggagagcacctgccttgcacgcagggggtcga
+cggttcgatcccgttcgggtccacca
+> DA1280 TGC BORRELIA BURGDORF. EUBACT (Eubacteria)
+gggggtttagctcagttggctagagcatcggctttgcaagccgagggtca
+agggttcgagtcccttaacctcca
+> DA1470 TGC ENTEROCOCCUS HIRAE EUBACT (Eubacteria)
+ggggccttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctaggctcca
+> DA1480 TGC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gggggcttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctagtctccacca
+> DA1530 TGC LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+ggggccttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatccccctaggctcca
+> DA1531 TGC LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+ggggccgtagctcagctgggagagcacctgctttgcaagcagggggtcgt
+cggttcgatcccgtccggctccacca
+> DA1540 TGC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggggccttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctaggctcca
+> DA1541 TGC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggggccttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctaggctccacca
+> DA1542 TGC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggggccttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctaggctcca
+> DA1543 TGC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggggccttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggtcgacccgctaggctccacca
+> DA1600 TGC RHODOTHERMUS MAR. EUBACT (Eubacteria)
+ggggttatagctcagttggtagagcgccggctttgcaagccggaggtcgt
+cggttcgaatccgactaactccacca
+> DA1620 TGC THIOBACILLUS FERRO EUBACT (Eubacteria)
+ggggctgtagctcagttgggagagcacctgctttgcaagcagggggtcat
+cggttcgagaccggtcagctccacca
+> DA1660 TGC E.COLI EUBACT (Eubacteria)
+ggggctatagctcagctgggagagcgcctgctttgcacgcaggaggtctg
+cggttcgatcccgcatagctccacca
+> DA1661 GGC E.COLI EUBACT (Eubacteria)
+ggggctatagctcagctgggagagcgcttgcatggcatgcaagaggtcag
+cggttcgatcccgcttagctccacca
+> DA1730 TGC TRICHODESMIUM SPEC EUBACT (Eubacteria)
+gggggtatagctcagttggtagagcgctgcctttgcaaggcagaagtcag
+cggttcgantccgcttaccccca
+> DA1780 TGC AEROMONASHYDROPH. EUBACT (Eubacteria)
+ggggctatagctcagctgggagagcgcctgctttgcacgcaggaggtctg
+cggttcgatcccgcatagctccacca
+> DA1820 TGC PSEUDOMONAS AER. EUBACT (Eubacteria)
+ggggccatagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+gagttcgatcctccttggctccacca
+> DA1840 TGC PSEUDOMONAS FLUOR. EUBACT (Eubacteria)
+ggggccatagctcagctggggagagcgcctgccttgcacgcaggaggtca
+acggttcgatcccgtttggctcca
+> DA1860 TGC CAMPYLOBAC.JEJUNI EUBACT (Eubacteria)
+ggggcattagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctattctccacca
+> DA1900 TGC CAULOBACTER CRES. EUBACT (Eubacteria)
+ggggccatagctcagttggtagagcgcctgctttgcaagcaggtgtcgtc
+ggttcgaatccgtctggctccacca
+> DA2100 TGC ANACYSTIS NIDULANS EUBACT (Eubacteria)
+gggggtttagctcagttggtagagcgcctgctttgcaagcaggatgtcag
+cggttcgagtccgctaacctccacca
+> DA2180 TGC CYANOPHORA PARAD. CYANEL (Eubacteria)
+gggggtatagctcagttggtagagcgctgcctttgcaaggcagatgtcag
+cggttcgagtccgcttacctcca
+> DA2220 TGC PYLAIELLA LITTORA. CYANEL (Eubacteria)
+gggggtatagctcagttggtagagcgttgcttttgcatagcagacgtcag
+cagttcgagtctgcttatctcca
+> DA2240 TGC STREPTOCOCCUS PN. EUBACT (Eubacteria)
+ggggccttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctaggctcca
+> DA6030 TGC PLASMODIUM FALSI. CY SIN (Cytoplasmic)
+gggaatatagtttaatggtaaaatcttatttttgcataataaagatagta
+gttcaattctacttatttcca
+> DA6160 AGC DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+ggggaagtagctcagatggtagagcgctcgcttagcatgcgagaggtaaa
+gggttcgatacccttcttcctca
+> DA6280 TGC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gggcacatggcgcagttggtagcgcgcttcccttgcaaggaagaggtcat
+cggttcgattccggttgcgtcca
+> DA6281 AGC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gggcgtgtggcgtagtcggtagcgcgctcccttagcatgggagaggtctc
+cggttcgattccggactcgtcca
+> DA6320 AGC SCHIZOSACCHA.POM CY SIN (Cytoplasmic)
+gggcatgtggtgtagatggttatcacgcttccttagcatggaagaggtcc
+cagattcgagttctggcttgtcca
+> DA6740 TGC ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+ggggatgtagctcatatggtagagcgctcgctttgcatgcgagaggcaca
+gggttcgattccctgcatctcca
+> DA7680 AGC BOMBYX MORI CY ANI (Cytoplasmic)
+gggggcgtagctcagatggtagagcgctcgcttagcatgcgagaggtacc
+gggatcgatacccggcgcctcca
+> DA7681 AGC BOMBYX MORI CY ANI (Cytoplasmic)
+gggggcgtagctcagatggtagagcgctcgcttagcatgtgagaggtacc
+gggatcgatacccggcgcctcca
+> DA7740 AGC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ggggatgtagctcagatggtagagcgctcgcttagcatgtgagaggtacg
+gggatcgatgccccgcatctcca
+> DA7920 TGC XENOPUS LAEVIS CY ANI (Cytoplasmic)
+gggggtgtagctcagtggtagagcgcatgctttgcatgtatgaggtcttg
+ggttcaatccccagcatctcca
+> DA8040 TGC CHICKEN CY ANI (Cytoplasmic)
+ggggatgtagctcagtggtagtgcgcatgctttgcatgtatgaggccccg
+ggttcaatccccggcatctcca
+> DA8041 TGC CHICKEN CY ANI (Cytoplasmic)
+ggggatgtagctcagcggtagagcgcatgctttgcatgtatgaggtcccg
+ggttcaatccccggcatctcca
+> DA8100 CGC MOUSE CY ANI (Cytoplasmic)
+ggggatgtagctcagtggtagagcgcatgcttcgcatgtatgaggccccg
+ggttcgatccccggcatctcca
+> DC1140 GCA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcaacatggccaagcggctaaggcatgggtctgcaacaccctgatcatc
+ggttcgaatccgattgttgcctcca
+> DC1200 GCA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggtgccttagccaagtggattcaaggcctggagctgcaacctccatatcg
+tcagttcgaatctgacaggcacctcca
+> DC1230 CTT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gcatccatagctcagttggtagagcaacagactcttaatctgtgggtcca
+cggttcgagcccgtgtgggtgtacca
+> DC1260 GCA SPIROPLASMA MELIF. EUBACT (Eubacteria)
+ggcactatagccaaggtggctaaggcatgggactgcaactccccgatcgt
+cggttcgaatccgactagtgcctcca
+> DC1350 GCA STREPTOMYCES LIV. EUBACT (Eubacteria)
+ggtggagtggccgagaggcgaggcaacggcctgcaaagccgtctacacgg
+gttcaaatcccgtctccacctcca
+> DC1480 GCA STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggcggcatagccaagtggtaaggcagaggtctgcaaaacctttatcaccg
+gttcaaatccggttgccgcctcca
+> DC1540 GCA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggcggcatagccaagtggtaaggcagaggtctgcaaaacctttatccccg
+gttcgaatccgggtgtcgcctcca
+> DC1660 GCA E.COLI EUBACT (Eubacteria)
+ggcgcgttaacaaagcggttatgtagcggattgcaaatccgtctagtccg
+gttcgactccggaacgcgcctcca
+> DC6280 GCA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gctcgtatggcgcagtggtagcgcagcagattgcaaatctgttggtcctt
+agttcgatcctgagtgcgagct
+> DC7300 GCA SOYBEAN CY PLA (Cytoplasmic)
+gggtccatagctcagtggtagagatttgactgcagatcaagaggtcacgg
+ttcgaacccggttgggccct
+> DC7930 GCA PODOCORYNE CARNEA CY ANI (Cytoplasmic)
+ggggatatagctcagtggtagagcattcgactgcagatcgagaggtccct
+ggttcaaacccgggtgtcccct
+> DC8100 GCA MOUSE CY ANI (Cytoplasmic)
+gggggtatagctcaggggtagagcatttgactgcagatcaagaggtccct
+ggttcaaatccaggtgccccct
+> DC8101 GCA MOUSE CY ANI (Cytoplasmic)
+gcgggtatagctcaggggtagaatatttgactgcagatcaagaggtccct
+tgttcgaattcaggtgccctct
+> DD1140 GTC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggccccatagcgaagttggttatcgcgcctccctgtcacggaggagatca
+cgggttcgagtcccgttggggtcgcca
+> DD1180 GTC MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggccccatagcgaacgttggttatcgcgcctccctgtcacggaggagatc
+acgggttcgagtcccgttggggtcgcca
+> DD1200 GTC MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggttccatggtgtagtggttaacatatctccctgtcacggaggggttgcg
+ggttcgattcccgttggaaccgcca
+> DD1230 GTC ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggtccggtggtgtaggggttaacatgcctgcctgtcacgcaggagatcgc
+gggttcaaatcccgtccggaccgcca
+> DD1260 GTC SPIROPLASMA MELIF. EUBACT (Eubacteria)
+ggtcttgtagtgaagttggttatcatgcctctctgtcacagaggagatcg
+cgggttcaagtcccgtcaagaccgcca
+> DD1350 GTC STREPTOMYCES LIV. EUBACT (Eubacteria)
+ggtcctgtggagcagtttggagtgctcgccaccctgtcaaggtggaggcc
+gcgggttcaaatcccgtcaggaccg
+> DD1390 GTC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggtctcgtagtgtagcggttaacacgcctgcctgtcacgcaggagatcgc
+gggttcggttcccgtcgagaccgcca
+> DD1391 GTC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggtctcgtagtgtagcggttaacacgcctgcctgtcacgcaggagatcgc
+gggttcgattcccgtcgagaccgcca
+> DD1500 GTC LACTOBAC. BULG. EUBACT (Eubacteria)
+ggtccattggagcagtggtctatctcgcctccctgtcacggaggagatcg
+cgggttcaaatcccgcatggacc
+> DD1540 GTC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggtccggtagttcagttggttagaatgcctgcctgtcacgcaggaggtcg
+cgggttcgagtcccgtccggaccg
+> DD1570 GTC BACILLUS SP. PS3 EUBACT (Eubacteria)
+ggtcccgtagtgtagtggttaacatgcctgcctgtcacgcaggagatcgc
+gggttcgatgccgtcgggaccgcca
+> DD1660 GTC E.COLI EUBACT (Eubacteria)
+ggagcggtagttcagtcggttagaatacctgcctgtcacgcagggggtcg
+cgggttcgagtcccgtccgttccgcca
+> DD6220 GTC PHYTOPHTHORA PAR. CY SIN (Cytoplasmic)
+ttctcgttagtatagtggttagtatacccgcctgtcacgcgggtgacccg
+ggttcaattcccggacgggaag
+> DD6280 GTC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+tccgtgatagtttaatggtcagaatgggcgcttgtcgcgtgccagatcgg
+ggttcaattccccgtcgcggag
+> DD6280 GTC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+tccgtgatagtttaatggtcagaatggggcttgtcgcgtgccagatcggg
+gttcaattccccgtcgcggag
+> DD6320 GTC SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+tctcctttagtataggggtagtacacaagcctgtcacgcttgcagcccgg
+gttcgaatcccggagggagag
+> DD6900 GTC GLYCINE MAX CY PLA (Cytoplasmic)
+gtcgttgtagtatagtggtaagtattcccgcctgtcacgcgggtgacccg
+ggttcgatccccggcaacggcg
+> DD7560 GTC CAENORHABDI. ELEG. CY ANI (Cytoplasmic)
+tcctcggtagtatagtggtgagtatccgcgtctgtcacatgcgagacccg
+ggttcaattcccggccggggag
+> DD7740 GTC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+tcctcgatagtatagtggttagtatccccgcctgtcacgcgggagaccgg
+ggttcaattccccgtcggggag
+> DD8040 GTC CHICKEN CY ANI (Cytoplasmic)
+tcctcgttagtatagtggtgagtatccccgcctgtcacgcgggagaccgg
+ggttcgattccccgacggggag
+> DD8041 GTC CHICKEN CY ANI (Cytoplasmic)
+tcctcgttagtatagtggtgagtatccccgcctgtcacgcgggagaccgg
+ggttcgattccccgacggggag
+> DD8100 GTC MOUSE CY ANI (Cytoplasmic)
+tcctcgttagtatagtggtgagtatccccgcctgtcacgcgggagaccgg
+ggttcgattccccgacggggag
+> DD9160 GTC RAT CY ANI (Cytoplasmic)
+tcctcgttagtatagtggtgagtatccccgcctgtcacgcgggagaccgg
+ggttcgattccccgacggggag
+> DD9161 GTC RAT CY ANI (Cytoplasmic)
+tcctcgttagtatagtggtgagtatccccgcctgtcacgcgggagaccgg
+ggttcgattccccgacggggac
+> DE1140 TTC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcctgttggtgaagcggttaacacacacggttttcatccgtggacacac
+gggttcgaaccccgtacaggctacca
+> DE1180 TTC MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggcctgttggtgaagcggttaacacacacggttttcatccgtggacacac
+gggttcgaaccccgtacaggctacca
+> DE1200 TTC MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggcgcgttggtgaagagacttaacacacacgcctttcacgcgtgcattca
+cgggtttgaatcccgtacgcgtcacca
+> DE1201 GAA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggtcttgtagctcagtcggtagagcaacggtttgaagaaccgtgtgtcgg
+cagttcgattctgcccgagaccacca
+> DE1230 TTC ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggcccgttggagaaacggttaactcacatgcctttcacgcatgcattcac
+gggttcgaatcccgtacgggtcacca
+> DE1340 CTC STREPTOMYCES RIM. EUBACT (Eubacteria)
+gcccccgttgtgtagcggcctagcacgccgccctctcaaggcggtagcgc
+cggttcgaatccggtcgggggta
+> DE1350 CTC STREPTOMYCES LIV. EUBACT (Eubacteria)
+gcccccgttgtgtagcggcctagcacgccgccctctcaaggcggtagcgc
+cggttcgaatccggtcgggggta
+> DE1351 CTC STREPTOMYCES LIV. EUBACT (Eubacteria)
+cccccgttgtgtagcggcctagcacgccgccctctcaaggcggtagcgcc
+ggttcgaatccggtcgggggta
+> DE1352 CTC STREPTOMYCES LIV. EUBACT (Eubacteria)
+gcccccgttgtgtagcggcctagcacgccgccctctcaaggcggtagcgc
+cggttcgaatccggtcgggggta
+> DE1460 TTC PLESIOMONAS SHIGE. EUBACT (Eubacteria)
+gtccccttcgtctagaggcctaggacaccgccctttcacggcggtaacag
+gggttcgaatcccctaggggaca
+> DE1500 TTC LACTOBAC. BULG. EUBACT (Eubacteria)
+nncccgttggtcaagtggttaagacaccgccctttcacggcggtaacatg
+ggttcaaatcccgtacgggtnn
+> DE1530 TTC LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+ggtccgttggtcaaggggttaagacaccgccttttcacggcggtaacacg
+ggttcgaatcccgtacggacta
+> DE1540 TTC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggcccgttggtcaagcggttaagacaccgccctttcacggcggtaacacg
+ggttcgaatcccgtacgggtca
+> DE1570 TTC BACILLUSSP. PS3 EUBACT (Eubacteria)
+ggccctgtggtcaagtggttaagacaccgccctttcacggcggtaacacg
+ggttcgaatccgtacgggtca
+> DE1660 TTC E.COLI EUBACT (Eubacteria)
+gtccccttcgtctagaggcccaggacaccgccctttcacggcggtaacag
+gggttcgaatcccctaggggacgcca
+> DE1780 TTC AEROMONASHYDROPH. EUBACT (Eubacteria)
+gtccccttcgctagaggcctaggacaccgccctttcacggcggtaacagg
+ggttcgaatcccctaggggacgcca
+> DE2180 TTC CYANOPHORA PARAD. CYANEL (Eubacteria)
+gccccatcgtctagaggcctaggacacctccctttcacggaggcgacggg
+gattcgaattcccctgggggta
+> DE6160 TTC DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+tcctcattggtgtagtcggtaacactctagtctttcacactggtacctcg
+ggttcgattcccgaatggggag
+> DE6161 TTC DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+tcctcattggtgtagtcggtaacactctagtctttcacactggtacctcg
+ggttcgattcccgaatggggag
+> DE6280 TTC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+tccgatatagtgtaacggctatcacatcacgctttcaccgtggagaccgg
+ggttcgactccccgtatcggag
+> DE6281 CTC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+tccgatgtagtgtaacggctatcacatcacgttctcaccgtggagaccgg
+ggttcgactccccgcttcggag
+> DE6320 TTC SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+tccgttgtggtccaacggctaggattcgtcgctttcaccgacgcggtcgg
+ggttcgactccccgcaacggag
+> DE6321 CTC SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+tccgtcatggtccagtggctaggattcatcgctctcaccgatgcggcggg
+ggttcgattccccctgacggag
+> DE7680 TTC BOMBYX MORI CY ANI (Cytoplasmic)
+tcccgtatggtctagtggttaggatacctggctttcacccaggaggctcg
+ggttcgattcccggtacgggaa
+> DE7740 CTC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+tcctatattgtctagtggttaggatatccggctctcacccggaaggcccg
+ggttcaattcccggtatgggaa
+> DE7741 CTC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+tcccatattgtctagtggttaggatatccggctctcacccggaaggcccg
+ggttcaattcccggtatgggaa
+> DE7742 TTC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+tcccatatggtctagtggctaggatatctggctttcacccagaaggcccg
+ggttcgattcccggtatgggaa
+> DE8100 CTC MOUSE CY ANI (Cytoplasmic)
+tccctggtggtctagtggttaggattcggcgctctcaccgccgcggcccg
+ggttcgattctcggtcagggaa
+> DE9160 CTC RAT CY ANI (Cytoplasmic)
+tccttggtggtctagtggttaggattcggcgctctcaccgccgcggcccg
+ggttcgattcccggtcagggaa
+> DE9161 CTC RAT CY ANI (Cytoplasmic)
+tccctggtggtctagtggttaggattcggcgctctcaccgccgcggcccg
+ggttcgattcccggtcagggaa
+> DE9162 CTC RAT CY ANI (Cytoplasmic)
+tcgctggtggtctagtggttaggattcggcgctctcaccgccgcggcccg
+ggttcgattcccggtcagggaa
+> DE9163 CTG RAT CY ANI (Cytoplasmic)
+ggttccatggtgtaatggtgagcactctggactctgaatccagcgatccg
+agttcaaatctcggtgggacct
+> DE9164 CTG RAT CY ANI (Cytoplasmic)
+ggttccatggtgtaatggttagcactctggactctgaatccagcgatccg
+agttcaaatctcggtggaacct
+> DE9165 CTG RAT CY ANI (Cytoplasmic)
+ggttccatggtgtaatggttagcactctggactctgaatccagcgatctg
+agttcaaatctcagtgggacct
+> DE9166 TTG RAT CY ANI (Cytoplasmic)
+ggtcccatggtgtaatggttagcactctggactttgaatccagcgatccg
+agttcaaatctcggtgggacct
+> DE9167 TTG RAT CY ANI (Cytoplasmic)
+ggtcccatggtgtaatggttagcactctggactttgaatccagcaatctg
+agttcaaatctcggtgggacct
+> DE9168 TTG RAT CY ANI (Cytoplasmic)
+ggtctcatggtgtaatggttagcactctggactttgaatccagcgatccg
+agttcgagtctcggtgaggcct
+> DE9990 TTC HUMAN CY ANI (Cytoplasmic)
+tccctggtggtctagtggctaggattcggcgctttcaccgccgcgccccg
+ggttcgattcccggccaggaat
+> DE9991 TTC HUMAN CY ANI (Cytoplasmic)
+tccctggtggtctagtggctaggattcggcgctttcaccgccgcggcccg
+ggttcgattcccggtcaggaat
+> DF1140 GAA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggtcgtgtagctcagtcggtagagcagcagactgaagctctgcgtgtcgg
+cggttcaattccgtccacgaccacca
+> DF1180 GAA MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggtcgtgtagctcagtcggtagagcagcagactgaagctctgcgtgtcgg
+cggttcaattccgtccacgaccacca
+> DF1230 GAA ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggctctgtagctcagtcggtagagcagtggcctgaagagcctcgtcgtag
+ggttcgattccgcttggagccacca
+> DF1260 GAA SPIROPLASMA MELIF. EUBACT (Eubacteria)
+ggttcagtagctcagttggtagagcatttgattgaagctcaaagtgtcgg
+cagttcaattctgtcctgaaccacca
+> DF1480 GAA STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggttcagtagctcagttggtagagcaatggattgaagctccatgtgtcgg
+cagttcgactctgtcctgaacca
+> DF1530 GAA LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+ggctcggtagctcagttggtagagcaatggattgaagctccatgtgtcgg
+cggttcgattccgtctcgcgcca
+> DF1540 GAA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggctcggtagctcagttggtagagcaacggactgaaaatccgtgtgtcgg
+cggttcgattccgtcccgagccacca
+> DF1541 GAA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggctcggtagctcagttggtagagcaacggactgaaaatccgtgtgtcgg
+cggttcgattccgtcccgagcca
+> DF1660 GAA E.COLI EUBACT (Eubacteria)
+gcccggatagctcagtcggtagagcaggggattgaaaatccccgtgtcct
+tggttcgattccgagtccgggcacca
+> DF6200 GAA NEUROSPORA CRASSA CY SIN (Cytoplasmic)
+gcgggtttagctcagttgggagagcgtcagactgaagatctgaaggtcgt
+gtgttcgatccacacaaaccgca
+> DF6280 GAA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcggatttagctcagttgggagagcgccagactgaagatctggaggtcct
+gtgttcgatccacagaattcgca
+> DF6281 GAA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcggatttagctcagttgggagagcgccagactgaagatctggaggtcct
+gtgttcgatccacagagttcgca
+> DF6320 GAA SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+gtcgcaatggtgtagttgggagcatgacagactgaagatctgttggtcat
+cggttcgatcccggtttgtgaca
+> DF6740 GAA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+gcggggatagctcagttgggagagcgtcagactgaagatctgaaggtcgc
+gtgttcgatccacgctcaccgca
+> DF7740 GAA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+cggttcaatcccgggtttcggca
+> DF7920 GAA XENOPUS LAEVIS CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggca
+> DF7930 GAA PODOCORYNE CARNEA CY ANI (Cytoplasmic)
+gccgtgatagctcagttgggagagcgtcagactgaagatctgaaggtccc
+tggttcaatcccgggtcgcggca
+> DF8040 GAA CHICKEN CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggca
+> DF9160 GAA RAT CY ANI -GCCGA (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaagtccc
+tggttcgatcccgggtttcggca
+> DG1140 TCC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gcaggtgtagttgaatggtagaacttcagccttccaagctgattgtgagg
+gttcgattcccttcacctgctcca
+> DG1180 TCC MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+gcaggtgtagtttaatggcagaacttcagccttccaagctgattgtgagg
+gttcgattcccttcacctgctcca
+> DG1200 TCC MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gcgagtatagtttagtggtagaacatcagtcttccaagctgatcgtgtcg
+gttcgattccgattactcgctcca
+> DG1201 GCC MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gcagatatagttcaatggcagaacataaccttgccaaggttaagatgcgg
+gtttgattcccgttatctgctcca
+> DG1230 GCC ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gtcggtgtcgtatatggttattacaggccttgccaaggcttagacggcag
+ttcgatcctgctcaccggctcca
+> DG1350 GCC STREPTOMYCES LIV. EUBACT (Eubacteria)
+gcggacgtagctcagttggtagagcgcaaccttgccaaggttgaggtcgc
+gagttcgagcctcgtcgtccgct
+> DG1351 TCC STREPTOMYCES LIV. EUBACT (Eubacteria)
+gcgttggtggtccaaggaaagacgccccacttcccgtggggaaatgcagg
+tgcaaggcctgcccagcgct
+> DG1480 GCC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gcagaagtagttcagcggtagaatacaaccttgccaaggttggggtcgcg
+ggttcgaatcccgtcttctgctcca
+> DG1481 TCC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gcgggagtagttcaacttttagaacacgttccttcccggaacgaggtata
+ggtgcaaatcctatcttccgctcca
+> DG1482 TCC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gcgggagtatttcaactcttagaatacattccttcctggaatgaggtata
+ggtgtaaatcctatcttccgctcca
+> DG1483 TCC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gcgggagtagttcaacttttagaacacgttccttcccggaacgaggtata
+ggtgtaaatcctatcttccgctcca
+> DG1500 GCC LACTOBAC. BULG. EUBACT (Eubacteria)
+gcggaagtagttcagtggtagaacatcaccttgccatggtgggggtcgcg
+ggttcgaatcccgtcttccgct
+> DG1530 TCC LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+gcggatgtagtttaatggtagaaccccagccttccaagctggctacgcga
+gttcgattctcgtcatccgct
+> DG1540 TCC BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcgggtgtagtttagtggtaaaacctcagccttccaagctgatgtcgtgg
+gttcgattcccatcacccgctcca
+> DG1541 GCC BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcggaagtagttcagtggnagaacaccaccttgccaaggtgggggtcgcg
+ggttcgaatcccgtcttccgctcca
+> DG1542 GCC BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcggaagtagttcagtggttgaacaccaccttgccaaggtgggggtcgcg
+ggttcgaatcccgtcttccgctcca
+> DG1580 GCC THERMUS THERMOPHI. EUBACT (Eubacteria)
+gcgggagtagctcagtcggtagagcacgaccttgccaaggtcggggtcgc
+gggttcaagtcccgtctcccgctcca
+> DG1581 CCC THERMUS THERMOPHI. EUBACT (Eubacteria)
+gcgggagtagctcagttggtagagcatcggcttcccaagccgagggtcgc
+gggttcgagtcccgtctcccgctcca
+> DG1660 TCC E.COLI EUBACT (Eubacteria)
+gcgggcatcgtataatggctattacctcagccttccaagctgatgatgcg
+ggttcgattcccgctgcccgctcca
+> DG1661 GCC E.COLI EUBACT (Eubacteria)
+gcgggaatagctcagttggtagagcacgaccttgccaaggtcggggtcgc
+gagttcgagtctcgtttcccgctcca
+> DG1662 CCC E.COLI EUBACT (Eubacteria)
+gcgggcgtagttcaatggtagaacgagagcttcccaagctctatacgagg
+gttcgattcccttcgcccgctcca
+> DG1820 TCC PSEUDOMONAS AER. EUBACT (Eubacteria)
+gcgggtatagttcagtggtagaacctcagccttccaagctgatgatgcgg
+gttcgattcccgctacccgctcca
+> DG2000 GCC HAEMOPHILUS INFLU. EUBACT (Eubacteria)
+gcgggaatagctcagttggtagagcacgaccttgccaaggtcggggtcgc
+gagttcgagcctcgtttcccgctcca
+> DG2180 GCC CYANOPHORA PARAD. CYANEL (Eubacteria)
+gcgggtgtagctcagctggtagagcgcaaccttgccaaggttgatgtcgc
+gcgttcgaatcgcgtcacccgct
+> DG6090 TCC LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+gcaattgtggtccaacggttaagatccccgccttccaagcgggtgacccg
+ggttcgactcccggcaattgca
+> DG6280 GCC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcgcaagtggtttagtggtaaaatccaacgttgccatcgttgggcccccg
+gttcgattccgggcttgcgca
+> DG6281 GCC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcgcaagtggtttagtggtaaaatccaacgttgccatcgttgggcccccg
+gttcgattccggcgttgcgca
+> DG7140 GCC SORGHUM BICOLOR CY PLA (Cytoplasmic)
+gcaccagtggtctagtggtagaatagtaccctgccacggtacagacccgg
+gttcgattcccggctggtgca
+> DG7180 GCC ORYZA SATIVA CY PLA (Cytoplasmic)
+gcaccagtggtctagtggtagaatagtaccctgccacggtacagacccgg
+gttcgattcccggctggtgca
+> DG7680 GCC BOMBYX MORI CY ANI (Cytoplasmic)
+gcatcggtggttcagtggtagaatgctcgcctgccacgcgggcggcccgg
+gttcgattcccggccgatgca
+> DG7740 GCC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcatcggtggttcagtggtagaatgctcgcctgccacgcgggcggcccgg
+gttcgattcccggccgatgca
+> DG7741 GCC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcatcggtggttcagtggtagaatgctcgcctgccacgcgggcggcccgg
+gttcgattcccgaccgatgca
+> DG7930 GCC PODOCORYNE CARNEA CY ANI (Cytoplasmic)
+gcattgatggttcagtggtagaattctcgcctgccacgcgggagaccggg
+gttcgattccccgaatgca
+> DG8100 TCC MOUSE CY ANI (Cytoplasmic)
+gcgttggtggtatagtggtgagcatagctgccttccaagcagttgacccg
+ggttcgattcccggccaacgca
+> DG9160 TCC RAT CY ANI (Cytoplasmic)
+gcgttggtggtatagtggtgagcatagctgccttccaagcagttgacccg
+ggttcgattcccggccaacgca
+> DG9161 TCC RAT CY ANI (Cytoplasmic)
+gcgttggtggtatagtggtgaacatagctgccttccaagcagttgacccg
+ggttcgattcccggccaacgca
+> DG9990 GCC HUMAN CY ANI (Cytoplasmic)
+gcattggtggttcagtggtagaattctcgcctgccacgcgggaggcccgg
+gttcgattcccggccaatgca
+> DG9991 CCC HUMAN CY ANI (Cytoplasmic)
+gcattggtggttcagtggtagaattctcgcctcccacgcgggagacccgg
+gttcaattcccggccaatgca
+> DG9992 TCC HUMAN CY ANI (Cytoplasmic)
+gcgttggtggtatagtggttagcatagctgccttccaagcagttgacccg
+ggttcgattcccggccaacgca
+> DH1140 GTG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcgtaggtggtgaagtggttaacacatcaggttgtggctctgacatacg
+cgggttcgatccccgttctacgcccca
+> DH1200 GTG MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggcgattgtggcgaagtggttaacgcacctgattgtggatcaggcatgtc
+gtgggttcaattcccatcagtcgcccca
+> DH1230 GTG ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gcggttgtggcgaagtggttaacgcatcggcttgtggcgccgacactcgg
+gggttcaattcccctcggccgcccca
+> DH1480 GTG STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gcggctgtggtgaagtggttaacacatcggattgtggttccgacattcga
+gggttcgatccccttcagccgcc
+> DH1540 GTG BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggcggttgtggcgaagtggttaacgcaccagattgtggctctggcactcg
+tgggttcgattcccatcaatcgcccca
+> DH1541 GTG BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggcggttgtggcgaagtggttaacgcaccagattgtggctctggcattcg
+tgggttcgattcccatcaatcgcccca
+> DH1660 GTG E.COLI EUBACT (Eubacteria)
+ggtggctatagctcagttggtagagccctggattgtgattccagttgtcg
+tgggttcgaatcccattagccacccca
+> DH1700 GTG SALMONELLA TYPHI. EUBACT (Eubacteria)
+ggtggctatagctcagttggtagagccctggattgtgattccagttgtcg
+tgggttcgaatcccattagccacccca
+> DH1740 GTG PHOTOBACT. PHOSPH. EUBACT (Eubacteria)
+ggtggctatagctcagttggtagagtcccggattgtgattccggttgtcg
+cgagttcaagcctcgttagccacccca
+> DH1780 GTG AEROMONAS HYDROPH. EUBACT (Eubacteria)
+ggtggctgtagctcagttggtagagtcccggattgtgattccggttgtcg
+tgggttcgagccccatcagccacccca
+> DH6160 GTG DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gccgtgatagtatagtggtagtacatcagattgtggctctgatgaccctg
+gttcgattccaggtcgcggca
+> DH6280 GTG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gccatcttagtatagtggttagtacacatcgttgtggccgatgaaaccct
+ggttcgattctaggagatggca
+> DH6320 GTG SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+gctcacatggtccagtggttaagactcatcgttgtggccgatgcgaccca
+ggttcgattcctggtgtgggca
+> DH7740 GTG DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gccgtgatcgtctagtggttaggaccccacgttgtggccgtggtaaccca
+ggttcgaatcctggtcacggca
+> DH8100 GTG MOUSE CY ANI (Cytoplasmic)
+gccgtgatcgtataggggttagtactctgcgttgtggccgcagcaacctc
+ggttcgaatccgagtcacggca
+> DI1140 CAT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggacctttagctcagttggttagagcatccggctcataaccggacggtca
+ttggttcaagtccaataaggtccacca
+> DI1141 GAT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+cggaatatagctcagctggttagagcattccgctgataacggagaggtcg
+ttggttcaagtccaattattccgacca
+> DI1180 CAT MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggacctttagctcagttggttagagcatccggctcataaccggacggtca
+ttggttcaagtccaataaggtccacca
+> DI1200 CAT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggatctatagctcaatggttagagcccccgactcataatcggtctgttac
+aggttcgagtcctgttagatccacca
+> DI1201 GAT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggaagtatagctcagttggttagagcacacccctgataagggtgaggtcg
+atggttcaagtccatttacttccacca
+> DI1230 CAT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggacccgtagctcagttggttagagctaccggctcataaccggtcggtcg
+ttggttcgagtccaaccgggtccacca
+> DI1231 GAT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gggcctgtagctcagttggttagagcactcgcttgataagcgaggggtcg
+atggttcaagtcgttcaggcccacca
+> DI1260 CAT SPIROPLASMA MELIF. EUBACT (Eubacteria)
+ggacccttagctcagttggttagagcatccggctcataaccggatggtca
+ctggttcaagtccagtagggtccacca
+> DI1280 GAT BORRELIA BURGDORF. EUBACT (Eubacteria)
+gggatcatagctcaggtggttagagcgcaggtctgataaacctgaggtcg
+gatcttcaactcatcctggtccca
+> DI1290 GAT BARTONELLA BACIL. EUBACT (Eubacteria)
+gggcttgtagctcagttggttagagcgcgcgcttgataagcgtgaggtcg
+gaggttcaagtcctcccaggcccacca
+> DI1480 CAT STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggacctttagctcagttggttagagctaacggctcataaccgttcggtcg
+caggttcgagtcctgcaaggtcca
+> DI1530 GAT LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+gggagtttagctcagttggttagagcactgtgttgataacgcaggggtcc
+caggttcgaatcctggaattccca
+> DI1540 GAT BACILLUS SUBTILIS EUBACT (Eubacteria)
+gggcctgtagctcagctggttagagcgcacgcctgataagcgtgaggtcg
+gtggttcgagtccactcaggcccacca
+> DI1541 GAT BACILLUS SUBTILIS EUBACT (Eubacteria)
+gggcctgtagctcagctggttagagcgcacgcctgataagcgtgaggtcg
+atggttcgagtccattcaggcccacca
+> DI1542 CAT BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggacctttagctcagttggttagagcagacggctcataaccgtccggtcg
+taggttcgagtcctacaaggtccacca
+> DI1600 GAT RHODOTHERMUS MAR. EUBACT (Eubacteria)
+ggggctgtagctcaggtggttagagcgcacgcctgataagcgtgaggtcg
+gtggttcaactccacccagcccca
+> DI1620 GAT THIOBACILLUS FERRO EUBACT (Eubacteria)
+gggcctatagctcagctggctagagcacacgcctgataagcgtgaggtca
+gtggttcgagtccacttgggcccacca
+> DI1660 GAT E.COLI EUBACT (Eubacteria)
+aggcttgtagctcaggtggttagagcgcacccctgataagggtgaggtcg
+gtggttcaagtccactcaggcctacca
+> DI1661 CAT E.COLI EUBACT (Eubacteria)
+ggccccttagctcagtggttagagcaggcgactcataatcgcttggtcgc
+tggttcaagtccagcaggggccacca
+> DI1730 GAT TRICHODESMIUM SP. EUBACT (Eubacteria)
+gggctattagctcaggtggttagagcgcacccctgataagggtgaggtcc
+ctggttcaagtccaggatagccca
+> DI1780 GAT AEROMONASHYDROPH. EUBACT (Eubacteria)
+gggtctgtagctcaggtggttagagcgcacccctgataagggtgaggtcg
+gtggttcgagtccactcagacccacca
+> DI1820 GAT PSEUDOMONAS AER. EUBACT (Eubacteria)
+gggtctgtagctcagttggttagagcgcacccctgataagggtgaggtcg
+gcagttcgaatctgcccagacccacca
+> DI1840 GAT PSEUDOMONAS FLUOR. EUBACT (Eubacteria)
+gggtctgtagctcagttggttagagcgcacccctgataagggtgaggtcg
+gcagttcgaatctgcccagaccca
+> DI1860 GAT CAMPYLOBAC.JEJUNI EUBACT (Eubacteria)
+gggcctatagctcagctggttagagtgcacccctgataagggtgaggtca
+caagttcaagtcttgttaggcccacca
+> DI1900 GAT CAULOBACTER CRES. EUBACT (Eubacteria)
+aggcctgtagctcaggtggttagagcgtacgcctgataagcgtaaggtcg
+gcagttcgagtctgcctaggcctacca
+> DI1950 CAT AZOARCUS SP.BH72 EUBACT (Eubacteria)
+gggcctctagctcatgcttggttagagcagcggactcataatccgttggt
+gctgggttcgactcccagggggcccacca
+> DI2100 GAT ANACYSTIS NIDULANS EUBACT (Eubacteria)
+gggctattagctcaggtggttagagcgcacccctgataagggtgaggtcc
+ctggttcaagtccaggatggccca
+> DI2180 GAT CYANOPHORA PARAD. CYANEL (Eubacteria)
+gggctattagctcagttggttagagcgcacccctgataagggtgaggccc
+ctggttcgaatccaggatggccca
+> DI2220 GAT PYLAIELLA LITTORA. CYANEL (Eubacteria)
+gggctattagctcagttggttagagcgcacccctgataagggtgagggcc
+ctggttcaaatccaggatggccca
+> DI6030 GAT PLASMODIUM FALSI. CY ANI (Cytoplasmic)
+aggtttttagtttaatggttaaaacatactcttgataagggtaaaatttt
+agttcaattctaaaaaaaccta
+> DI6090 TAT LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+gctcccgtggtctagttggttaggacgctggtcttatgaaccggatgtcg
+cgggttcgagccccgccgggagca
+> DI6280 AAT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggtctcttggcccagttggttaaggcaccgtgctaataacgcggggatca
+gcggttcgatcccgctagagacca
+> DI6281 TAT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gctcgtgtagctcagtggttagagcttcgtgcttataacgcgaccgtcgt
+gggttcaatccccacctcgagca
+> DI6320 AAT SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+ggtcgcatatgtagtcggttatcatgtcgatctaataagtcgaatgtcgc
+cggttcgaacccggctgtgacca
+> DI7740 AAT DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ggcccattagctcagttggttagagcgtcgtgctaataacgcgaaggtcg
+cgggttcgatcccctcatgggcca
+> DI8100 AAT MOUSE CY ANI (Cytoplasmic)
+ggccggttagctcagttggttagagcgtggtgctaataacgccaaggtcg
+cgggttcgatccccgtacgggcca
+> DK1140 TTT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gactcgttagctcagccggtagagcaactggcttttaaccagtgggtccg
+gggttcgaatccccgacgagtcacca
+> DK1141 CTT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gtctgattagcgcaactggcagagcaactgactcttaatcagtgggttgt
+gggttcgattcccacatcaggcacca
+> DK1200 TTT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gactcactagctcagcggtagagcatttgacttttaatcaaagggtcccg
+agttcgatcctcgggtgagtcacca
+> DK1201 CTT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gcatctttagctcagttggtagagcaaatgactcttaatcattgggtcgg
+gggttcgagcccctcaagatgcacca
+> DK1220 TTT MYCOPLASMA PG50 EUBACT (Eubacteria)
+gactcgttagctcagccggtagagcaactggcttttaaccagtgggtccg
+gggttcgaatccccgacgagtcacca
+> DK1230 CTT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gcatccatagctcagttggtagagcaacagactcttaatctgtgggtcca
+cggttcgagcccgtgtgggtgtacca
+> DK1231 TTT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gtcccgttagctcaggtggtagagcacttgacttttaatcaaggtgtcga
+tggttcgagtccatcacgggacacca
+> DK1350 CTT STREPTOMYCES LIV. EUBACT (Eubacteria)
+gcgccgctagctcagttggttagagcagctgactcttaatcagcgggtcc
+ggggttcgagtccctggcggcgca
+> DK1480 TTT STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gagccattagctcagttggtagagcatctgacttttaatcagagggtcag
+aggttcgaatcctctatggctcacca
+> DK1540 TTT BACILLUS SUBTILIS EUBACT (Eubacteria)
+gagccattagctcagttggtagagcatctgacttttaatcagagggtcga
+aggttcgagtccttcatggctcacca
+> DK1541 TTA BACILLUS SUBTILIS EUBACT (Eubacteria)
+gagccattagctcagttggtagagcatctgactttaaatcagagggtcga
+aggttcgagtccttcatggctcacca
+> DK1660 TTT E.COLI EUBACT (Eubacteria)
+gggtcgttagctcagttggtagagcagttgacttttaatcaattggtcgc
+aggttcgaatcctgcacgacccacca
+> DK1720 TTT AZOSPIRILLUM LIPO. EUBACT (Eubacteria)
+gagccattagctcagttggtagagcatctgacttttaatcagagggtcga
+aggttcgagtccttcatggctcacca
+> DK2000 TTT HAEMOPHILUS INFLU. EUBACT (Eubacteria)
+gggtcgttagctcagacggtagagcagcggacttttaatccgttggtcga
+aggttcgaatccttcacgacccacca
+> DK6050 CTT TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+gcccttctagctcagtcggtagggcgcacggctcttaaccgtgtggtcgt
+gggttcgagcccacggggggtg
+> DK6051 TTT TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+gccttcctagctcagtggtagagcgcacggcttttaaccgtgtggtcgtg
+ggttcgatccccacggaaggcg
+> DK6052 CTT TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+gcccttctagctcagtcggtagagcgcacggctcttaaccgtgtggtcgt
+gggttcgagccccacggggggtg
+> DK6090 TTT LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+gcacttctagctcagttggtagagcgcgtggcttttaacctcgtggtcgt
+gggttcgagccccacggagtgcg
+> DK6160 TTT DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gcccagatagctcagtcggtagagcgcaaggcttttaaccttgtggtcgg
+gggttcgagcccccctttgggcg
+> DK6161 CTT DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gcccggctagctcagtcggtagagcgccagactcttaatctggtggtcgg
+gggttcgagccccccgttgggcg
+> DK6280 TTT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+tccttgttagctcagttggtagagcgttcggcttttaaccgaaatgtcag
+gggttcgagccccctatgaggag
+> DK6280 CTT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gccttgttggcgcaatcggtagcgcgtatgactcttaatcataaggttag
+gggtcgaggcccctacagggct
+> DK6281 CTT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gccttgttggcgcaatcggtagcgcgtatgactcttaatcataaggttag
+gggttcgagccccctacagggct
+> DK6320 CTT SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+tcccgagtggctcaatcggtttagagcgtctgactcttaatcagaaggtt
+gcgagttcgagtctcgccttgggag
+> DK7560 CTT CAENORHABDI.ELEG. CY ANI (Cytoplasmic)
+gcccggttagctcagtcggtagagcaccagactcttaatctggttgtcgc
+gggttcgagccccgcattgggct
+> DK7680 CTT BOMBYX MORI CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcg
+> DK7740 CTT DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcg
+> DK7741 TTT DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcccggatagctcagtcggtagagcattggacttttaatccaagggtcca
+gggttcaagtccctgttcgggcg
+> DK7850 CTT SQUID CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcacgagactcttaatctcgggtcgtg
+ggttcaagccccacgttgggcgcca
+> DK7920 TTT XENOPUS LAEVIS CY ANI (Cytoplasmic)
+gcccgcatagctcagtcggtagagcatcagacttttaatctgagggtcca
+gggttcaagtccctgttcgggcg
+> DK8040 CTT CHICKEN CY ANI (Cytoplasmic)
+gcccggctagctcagttggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcg
+> DK8100 TTT MOUSE CY ANI (Cytoplasmic)
+gcctggatagctcaattggtagagcatcagacttttaatctgagggttca
+gggttcaagtccctgttcaggcg
+> DK8101 CTT MOUSE CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcg
+> DK9160 CTT RAT CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcg
+> DK9990 TTT HUMAN CY ANI (Cytoplasmic)
+gcccggatagctcagtcggtagagcatcagacttttaatctgagggtcca
+gggttcaagtccctgttcgggcg
+> DK9991 CTT HUMAN CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcg
+> DL1140 TAA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ccccaagtggcggaataggtagacgcattggacttaaaatccaacgggct
+taatatcctgtgccggttcaagtccggccttggggacca
+> DL1141 TAG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggggattggcggaattggcagacgcactagacttaggatctagcgtcttt
+gacgtaagggttcaagtcccttatcccccacca
+> DL1200 TAA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gcccaagtggcggaatggtagacgcatgggatttaagatcccacgctagc
+aatagcgtgccggttcaagtccggctttgggcacca
+> DL1201 TAG MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gcactcgtggcggaatggtagacgcgctagacttaggatctagtttcatt
+gtggagtgggggttcaagtcccttcgagtgcacca
+> DL1220 TAG MYCOPLASMA PG50 EUBACT (Eubacteria)
+gggggattggcggaattggcagacgcactagacttaggatctagcgtctt
+tgacgtaagggttcaagtcccttatcccccacca
+> DL1230 CAA ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ccccgtgtggcgaaatggtagacgcgcttgactcaaaatcaagtagtgaa
+gactgtgctggttcgagtccggtcacggggacca
+> DL1231 TAG ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gcgggtgtggcgaaattggcagacgcactagacttaggatctagcgcttt
+acggcatgcaggttcaagtcctgtcacccgcacca
+> DL1232 TAA ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+tgcccgggtggtgaaatcggtagacacgcaggacttaaaatcctgtggca
+taaaagccatgtcggttcaagtccgaccccgggcacca
+> DL1310 TAA STREPTOMYCES COEL. EUBACT (Eubacteria)
+gcccggatggtggaatgcagacacggcgagcttaaacctcgctgcccctt
+cgagggcgtgccggttcaagtccggctccgggcacca
+> DL1480 TAG STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gcgggtgtggcggaattggcagacgcactagacttaggatctagcgcctt
+tacggcgtgggggttcgactcccttcacccgca
+> DL1481 TAA STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gccggggtggcggaactggcagacgcacaggacttaaaatcctgcggtga
+gtgatcaccgtaccggttcgattccggtcctcggcacca
+> DL1482 CAA STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gccggtgtggcggaattggcagacgcgcgggactcaaaatcccgttccac
+ttgtgtagtgtcggttcgaccccgaccaccggta
+> DL1540 CAG BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcggatgtggcggaattggcagacgcgctagaatcaggctctagtgtctt
+tacagacgtgggggttcaagtcccttcatccgcacca
+> DL1541 TAA BACILLUS SUBTILIS EUBACT (Eubacteria)
+gccggggtggtggaattggcagacacacaggacttaaaatcctgcggtag
+gtgactaccgtgccggttcaagtccggccctcggca
+> DL1542 TAA BACILLUS SUBTILIS EUBACT (Eubacteria)
+gccggggtggtggaattggcagacacacaggacttaaaatcctgcggtag
+gtgactaccgtgccggttcaagtccggccctcggcacca
+> DL1543 CAA BACILLUS SUBTILIS EUBACT (Eubacteria)
+gccggtgtggcggaattggcagacgcgcacgactcaaaatcgtgttcctt
+ctggagtgtcggttcgaccccgaccaccggta
+> DL1544 TAG BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcgggtgtggcggaattggcagacgcgctagacttaggatctagtgtctt
+tatgacgtgggggttcaagtcccttcacccgca
+> DL1545 GAG BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcggtcgtggcggaatggcagacgcgctaggttgagggcctagtgggtta
+gtggttataacccgtggaggttcaagtcctctcggccgca
+> DL1660 CAG E.COLI EUBACT (Eubacteria)
+gcgaaggtggcggaattggtagacgcgctagcttcaggtgttagtgtcct
+tacggacgtgggggttcaagtcccccccctcgcacca
+> DL1661 TAG E.COLI EUBACT (Eubacteria)
+gcgggagtggcgaaattggtagacgcaccagatttaggttctggcgccgc
+aaggtgtgcgagttcaagtctcgcctcccgcacca
+> DL1662 CAA E.COLI EUBACT (Eubacteria)
+gccgaagtggcgaaatcggtagacgcagttgattcaaaatcaaccgtaga
+aatacgtgccggttcgagtccggccttcggcacca
+> DL1663 GAG E.COLI EUBACT (Eubacteria)
+gccgaggtggtggaattggtagacacgctaccttgaggtggtagtgccca
+atagggcttacgggttcaagtcccgtcctcggtacca
+> DL1664 TAA E.COLI EUBACT (Eubacteria)
+gcccggatggtggaatcggtagacacaagggatttaaaatccctcggcgt
+tcgcgctgtgcgggttcaagtcccgctccgggtacca
+> DL1700 CAG SALMONELLA TYPHI. EUBACT (Eubacteria)
+gcgaaggtggcggaattggtagacgcgctagcttcaggtgttagtgtcct
+tacggacgtgggggttcaagtcccccccctcgcacca
+> DL1750 TAG PHOTOBAC. LEIOGNA. EUBACT (Eubacteria)
+gcggaagtggcggaattggtagacgcactagatttaggttcatgcgcctg
+taaggtgtgagagttcaagtctctccttccgcacca
+> DL1780 CAG AEROMONAS HYDROPH. EUBACT (Eubacteria)
+gcgaaggtggcggaattggtagacgcgctagcttcaggtgttagtgcccc
+ccgggtgtgagggttcgagtccctctcttcgcacca
+> DL1940 CAG RHIZOBIUM MELILOTI EUBACT (Eubacteria)
+gcccagatggcggaattggtagacgcgccagcttcaggtgctggtactcg
+aaagggtgtggaggttcgagtcctcttctgggcacca
+> DL1950 TAA AZOARCUS SP.BH72 EUBACT (Eubacteria)
+gccgggctggcggaatcggtagacacaacggatttaaaatcctgcggtag
+gtgactaccgtgccggttcaagtccggccctcggca
+> DL1980 CAG BORDETELLA PERTUS. EUBACT (Eubacteria)
+gcccaggtggcggaattggtagacgcgcatggttcaggtccatgtgccgc
+aaggtgtggaggttcgagtcctctcctgggcacca
+> DL2000 TAA HAEMOPHILUS INFLU. EUBACT (Eubacteria)
+gcccgagtggtggaatcggtagacacaagggatttaaaatccctcgcctt
+tcgacgcgtgccagttcaagtctggcttcgggcacca
+> DL2180 TAA CYANOPHORA PARAD. CYANEL (Eubacteria)
+ggggatgtggtggaattggtagacgcaacggacttaaaatccgtcgattg
+tatagatcgtgagggttcaagtccctccgtcccca
+> DL6030 TAG PLASMODIUM FALSI. CY ANI (Cytoplasmic)
+atgaatatggcgaaataggtaaacgcactaaatttagattttagttatta
+taattaagagttcaaatctctttattcata
+> DL6090 CAG LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+ggcaagatggtcgagtggtctaagacgtcacgttcaggtcgtgatctccc
+ctggaggcgtgggttcaaaccccactcttgtca
+> DL6160 TAA DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gcaagggtaggaaagtctggttaaatccgtgtgacttaagatctcatcca
+ttcggttcgcgagttcgaatctcgcctcttgca
+> DL6200 AAG NEUROSPORA CRASSA CY SIN (Cytoplasmic)
+ggcaagatggccgagcggtctaaggcgccacgttaaggccgtggtccgaa
+agggcgtgggttcgaatcccactcttgtca
+> DL6210 CAG CANDIDA ALBICANS CY SIN (Cytoplasmic)
+gatacgatggccgagtggttaaggcgaaggatgcaggttcctttgggcat
+tgcccgcgcaggttcgaaccctgctcgtgtcgcca
+> DL6280 CAA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggttgtttggccgagcggtctaaggcgcctgattcaagctcaggtatcgt
+aagatgcaagagttcgaatctcttagcaacca
+> DL6281 TAA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggagggttggccgagcggtctaaggcggcagacttaagatctgttggacg
+gttgtccgcgcgagttcgaacctcgcatccttca
+> DL6282 TAA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggagggttggccgagtggtctaaggcggcagacttaagatctgttggacg
+gttgtccgcgcgagttcgaacctcgcatccttca
+> DL6980 CAA PHASEOLUS VULGARIS CY PLA (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgccagactcaagttctggtcttcg
+agagagggcgtgggttcaaatcccacttctgaca
+> DL7120 AAG HELIANTHUS ANNUUS CY PLA (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgccagattaaggttctggtccgaa
+agggcgtgggttcaaatcccacttctaaca
+> DL7560 AAG CAENORHABDI. ELEG. CY ANI (Cytoplasmic)
+ggagagatggccgagcggtctaaggcgctggtttaaggcaccagtccctt
+cgggggcgtgggttcgaatcccactctcttca
+> DL7561 CAG COENORHABDI. ELEG. CY ANI (Cytoplasmic)
+gccgttctggccgagtggtctaaggcgctgcgttcaggtcgcagtcctct
+ccggagggcgcaggttcgaatcctgcggacggca
+> DL7740 CAA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gtcaggatggccgagcggtctaaggcgccagactcaagttctggtcctct
+ctgagggcgtgggttcgaatcccacttctgaca
+> DL7741 CAG DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgctgcgttcaggtcgcagtctact
+ctgtaggcgtgggttcgaatcccacttctgaca
+> DL7920 CAG XENOPUS LAEVIS CY ANI (Cytoplasmic)
+gtcaggatggccgagcggtctaaggcgctgcgttcaggtcgcagtctccc
+ctggaggcgtgggttcgaatcccacttctgaca
+> DL8100 CAG MOUSE CY ANI (Cytoplasmic)
+gtcaggatggccgagcggtctaaggcgctgcgttcaggtcgcagtctccc
+ctggaggcgtgggttcgaatcccactcctgaca
+> DL9160 CAG RAT CY ANI (Cytoplasmic)
+gtcaggatggccgagcggtctaaggcgctgcgttcaggtcgcagtctccc
+ctagagaggcgtgggttcgaatcccactcctgaca
+> DL9161 CAG RAT CY ANI (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgctgcgttcaggtcgcagtctccc
+ctggaggcgtgggttcgaatcccactcctgaca
+> DL9162 CAG RAT CY ANI (Cytoplasmic)
+gtcaggatggccgagcggtctaaggcgctgcgttcaggtcgcagtctccc
+ctggaggcgtgggttcgaatcccactcctgaca
+> DL9990 TAG HUMAN CY ANI (Cytoplasmic)
+ggtagcgtggccgagcggtctaaggcgctggatttaggctccagtctctt
+cggaggcgtgggttcgaatcccaccgctgcca
+> DL9991 AAG HUMAN CY ANI (Cytoplasmic)
+ggtagcgtggccgagcggtctaaggcgctggattaaggctccagtctctt
+cgggggcgtgggttcgaatcccaccgctgcca
+> DM1140 CAT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcggggtagctcagttggttagagcgttcggttcatacccgaaaggtcg
+agagttcaaatctctcccccgctacca
+> DM1180 CAT MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggcggggtagctcagttggttagagcgttcggttcatacccgaaaggtcg
+agagttcaactctctcccccgctacca
+> DM1200 CAT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggctggatacctcagttggttagaggacccggttcatacccgggttgtcg
+tgagttcgaatctcactccagccacca
+> DM1230 CAT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggcggtgtagctcagctggctagagcgtgcggttcatacccgcaaggtcg
+agggttcaagtccccccgccgctacca
+> DM1231 CAT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+cgcgggatagagcagtctggtagctcgtcgggctcataacccgaaggtcg
+atggttcaaatccatctcccgcaacca
+> DM1260 CAT SPIROPLASMA MELIF. EUBACT (Eubacteria)
+ggcgggatagctcagctggttagagcgctcggctcatacccgggaggtca
+agagttcaagtctctttctcgctacca
+> DM1480 CAT STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggcggtgtagctcagctggctagagcgtacggttcatacccgtgaggtcg
+ggggttcgatcccctccaccgcca
+> DM1540 CAT BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggacctttagctcagttggttagagcagacggctcataaccgtccggtcg
+taggttcgagtcctacaaggtccacca
+> DM1541 CAT BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggcggtgtagctcagctggctagagcgtacggttcatacccgtgaggtng
+ggggttcgatcccctccgccgctacca
+> DM1660 CAT E.COLI EUBACT (Eubacteria)
+ggctacgtagctcagttggttagagcacatcactcataatgatggggtca
+caggttcgaatcccgtcgtagccacca
+> DM1750 CAT PHOTOBAC. LEIOGNA. EUBACT (Eubacteria)
+ggctacgtagctcagttggttagagcacatcactcataatgatggggtca
+caggttcgaatcccgtcgtagccacca
+> DM6030 CAT PLASMODIUM FALSI. CY ANI (Cytoplasmic)
+agcgaaatagagcataaggaaagttcgtcggattcatgctccgaaggtaa
+tcggttcaattccgtttttcgctt
+> DM6160 CAT DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+agcttcttaactcaggggtagagtgcgaggcccataacctcgaggtccta
+ggatcgaaacctagagaagcta
+> DM6280 CAT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcttcagtagctcagtaggaagagcgtcagtctcataatctgaaggtcga
+gagttcgaacctctcctggagca
+> DM6900 CAT GLYCINE MAX CY PLA (Cytoplasmic)
+ggggtggtggcgcagttgggcagcgcgtaggtctcataatcctgaggtcg
+agagttcgagcctctctcacccca
+> DM7740 CAT DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+agcagagtggcgcagtggaagcgtgctggtcccataacccagaggtccga
+ggatcgaaaccttgctctgcta
+> DN1140 GTT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggctttttagctcagcaggtagagcaaccggctgttaaccggtttgtcac
+aggttcgagccctgtaaaagccgcca
+> DN1180 GTT MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggctttttagctcagcaggtagagcaaccggctgttaaccggtttgtcac
+aggttcgagccctgtaaaagccgcca
+> DN1200 GTT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggccacatagctcagcggtagagcaaccggctgttaaccggttggtcaca
+ggttcgatccctgttgtggccgcca
+> DN1230 GTT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gcctacttagctcagttggttagagcacctgactgttaatcagggggtcg
+ctggttcgagtccagcagtgggcgcca
+> DN1350 GTT STREPTOMYCES LIV. EUBACT (Eubacteria)
+tcctcggtagctcaattggcagagcagccggctgttaaccggcaggttac
+tggttcgagtccagtccggggag
+> DN1351 GTT STREPTOMYCES LIV. EUBACT (Eubacteria)
+tcctccgtagctcaattggcagagcagccggctgttaaccggcaggttac
+tggttcgagtccagtcgggggag
+> DN1410 GTT KLEBSIELLA AEROGE. EUBACT (Eubacteria)
+tcctctgtagttcagtcggtagaacggcggactgttaatccgtatgtcac
+tggttcgagtccagtcagaggagcca
+> DN1500 GTT LACTOBAC. BULG. EUBACT (Eubacteria)
+tccgccttagctcagttggtagagcgcttgactgttaatcaggatgtcgt
+cagttcgagtctgacaggcgga
+> DN1530 GTT LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+tgcggattagctcagttggtagtagcgcatgactgttaatcatgatgtcg
+tcagttcgagtctgacatccgcag
+> DN1540 GTT BACILLUS SUBTILIS EUBACT (Eubacteria)
+tccacagtagctcagtggtagagctatcggctgttaaccgatcggtcgca
+ggttcgaatcctgcctgtggagcca
+> DN1541 GTT BACILLUS SUBTILIS EUBACT (Eubacteria)
+tccgcagtagctcagtggtagagctatcggctgttaaccgatcggtcgta
+ggttcgaatcctacctgcggag
+> DN1570 GTT BACILLUS SP. PS3 EUBACT (Eubacteria)
+tccgcagtagctcagtggtagagcaatcggctgttaaccgattggtcgca
+ggttcgaatcctgcctgcggagcca
+> DN1660 GTT E.COLI EUBACT (Eubacteria)
+tcctctgtagttcagtcggtagaacggcggactgttaatccgtatgtcac
+tggttcgagtccagtcagaggagcca
+> DN6030 GTT PLASMODIUM FALSI. CY ANI (Cytoplasmic)
+ttcttaatagcttagtggttaaagcattcggctgttaaccgaaatacact
+agttcaattctagtttaagaag
+> DN6050 GTT TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+tcctccctggcgcagtcggcagcgcgttaggctgttaacctacaggtcgt
+tggttcgaatccaacgggaggag
+> DN6051 GTT TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+tcctccctggcgcagtcggcagcgcgttaggctgttaaccatcaggtgtt
+ggttcgaatccaacgggaggag
+> DN6060 GTT TETRAHYMENA PYRIF. CY SIN (Cytoplasmic)
+gctcgattagctcagctggttagagcatgcggctgttaaccgcaaggtcg
+taggttcgatccctacatcgagcg
+> DN6160 GTT DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gcctggatggctaaatggcagagcgagcggctgttaaccgctaggtccat
+ggttcgatcccatgtctaggca
+> DN6280 GTT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gactccatggccaagttggttaaggcgtgcgactgttaatcgcaagatcg
+tgagttcaaccctcactggggtcg
+> DN7100 GTT PETUNIA SP. CY PLA (Cytoplasmic)
+tcctcagtagctcagtggtagagcggtcggctgttaaccgattggtcgta
+ggttcgaatcctacttggggag
+> DN7740 GTT DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcctccgtggcgcaattggttagcgcgttcggctgttaaccgaaaggttg
+gtggttcgagtccacccgggggcg
+> DN7920 GTT XENOPUS LAEVIS CY ANI (Cytoplasmic)
+gtctctgtggcgcaatcggttagcgcgttcggctgttaaccgaaaggttg
+gtggttcgagcccacccagggacg
+> DN9990 GTT HUMAN CY ANI (Cytoplasmic)
+gtctctgtggcgcaatgggttagcgcgttcggctgttaaccgaaaggttg
+gtggttcgagcccatccagggacg
+> DN9991 GTT HUMAN CY ANI (Cytoplasmic)
+gtctctgtggcgcaatcggttagcgcgttcggctgttaaccgaaagattg
+gtggttcgagcccacccagggacg
+> DP1140 TGG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+cgggaagtggctcagtttggtagagcattcggtttgggaccgaagggtcg
+caggttcaaatcctgtcttcccgacca
+> DP1180 TGG MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+cgggaagtggctcagtttggtagagcattcggtttgggaccgaagggtcg
+caggttcaaatcctgtcttcccgacca
+> DP1200 TGG MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+cgggaagtagcttagtttggtagaagcacttggtttgggaccaaggggtc
+gcaggttcaaatcctgtcttcccgacca
+> DP1260 TGG SPIROPLASMA MELIF. EUBACT (Eubacteria)
+cggaaagtagcttagcttggtagagcactcggtttgggaccgaggggtcg
+caggttcgaatcctgtctttccgacca
+> DP1360 CGG STREPTOMYCES AMBO. EUBACT (Eubacteria)
+cggggtgtggcgcagcttggtagcgcgcttcgttcgggacgaagaggtcg
+tgggttcaaatcccgccaccccga
+> DP1400 CGG MYCOBACT. TUBERC. EUBACT (Eubacteria)
+cggggtgtggcgcagcttggtagcgcgcttcgttcgggacgaagaggccg
+tgggttcaaatcccgccaccccga
+> DP1480 TGG STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+cgggaagtagctcagcttggtagagcacttggtttgggaccaaggggtcg
+caggttcgaatcctgtcttcccga
+> DP1500 TGG LACTOBAC. BULG. EUBACT (Eubacteria)
+cgggaagtggctcagtttggtagagcacctggtttgggaccagggggtcg
+caggttcaaatcctgtcttcccga
+> DP1540 TGG BACILLUS SUBTILIS EUBACT (Eubacteria)
+cgggaagtagctcagcttggtagagcacatggtttgggaccatggggtcg
+caggttcgaatcctgtcttcccgacca
+> DP1560 GGG BACILLUS CIRCULANS EUBACT (Eubacteria)
+cggggtatggcgcagtctggtagcgcgcacccttggggtgggtgaggccg
+tgggttcaaatcccgctactccgacca
+> DP1660 TGG E.COLI EUBACT (Eubacteria)
+cggcgagtagcgcagcttggtagcgcaactggtttgggaccagtgggtcg
+gaggttcgaatcctctctcgccgacca
+> DP1661 CGG E.COLI EUBACT (Eubacteria)
+cggtgattggcgcagcctggtagcgcacttcgttcgggacgaaggggtcg
+gaggttcgaatcctctatcaccgacca
+> DP1662 GGG E.COLI EUBACT (Eubacteria)
+cggcacgtagcgcagcctggtagcgcaccgtcatggggtgtcgggggtcg
+gaggttcaaatcctctcgtgccgacca
+> DP1700 TGG SALMONELLA TYPHI. EUBACT (Eubacteria)
+cggcgagtagcgcagcttggtagcgcaactggtttgggaccagtgggtcg
+gaggttcgaatcctctctcgccgacca
+> DP1740 TGG PHOTOBACT. PHOSPH. EUBACT (Eubacteria)
+cggtgaatagcgcagtttggtagcgcatctggtttgggaccagagggtcg
+ggggttcgaatccctcttcaccgacca
+> DP1780 TGG AEROMONAS HYDROPH. EUBACT (Eubacteria)
+cggtgattagcgcagcccggtagcgcatctggtttgggaccagagggtca
+aaggttcgaatcctttatcaccgacca
+> DP6280 TGG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gggcgtgtggtctagtggtatgattctcgctttgggtgcgagaggccctg
+ggttcaattcccagctcgcccc
+> DP6980 TGG PHASEOLUS VULGARIS CY PLA (Cytoplasmic)
+gggcatttggtctagtggtatgattctcgctttgggtgcgagaggtcccg
+agttcgattctcggaatgcccc
+> DP6981 AGG PHASEOLUS VULGARIS CY PLA (Cytoplasmic)
+gggcatttggtctagtggtatgattctcgcttagggtgcgagaggtcccg
+agttcaattctcggaatgcccc
+> DP7560 TGG CAENORHABDI. ELEG. CY ANI (Cytoplasmic)
+ggccgaatggtctagtggtatgattctcgctttgggtgcgagaggtcccg
+ggttcaatccccggttcggccc
+> DP7740 TGG DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ggctcaatggtctaggggtatgattctcgctttgggtgcgagaggtcccg
+ggttcaaatcccggttgagccc
+> DP8040 AGG CHICKEN CY ANI (Cytoplasmic)
+ggctcgttggtctaggggtatgattctcgcttagggtgcgagaggtcccg
+ggttcaaatcccggacgagccc
+> DP8041 CGG CHICKEN CY ANI (Cytoplasmic)
+ggctcgttggtctaggggtatgattctcgcttcgggtgcgagaggtcccg
+ggttcaaatcccggacgagccc
+> DP8100 CGG MOUSE CY ANI (Cytoplasmic)
+ggctcgttggtctaggggtatgattctcgcttcgggtgcgagaggtcccg
+ggttcaaatcccggacgagccc
+> DP8101 AGG MOUSE CY ANI (Cytoplasmic)
+ggctcgttggtctaggggtatgattctcgcttagggtgcgagaggtcccg
+ggttcaaatcccggacgagccc
+> DP9160 CGG RAT CY ANI (Cytoplasmic)
+ggctcgttggtctaggggtatgattctcgcttcgggtgcgagaggtcccg
+ggttcaaatcccggacgagccc
+> DP9161 AGG RAT CY ANI (Cytoplasmic)
+ggctcgttggtctaggggtatgattctcgcttagggtgcgagaggtcctg
+ggttcaaatcccggacgagccc
+> DP9990 AGG HUMAN CY ANI (Cytoplasmic)
+ggctcgttggtctaggggtatgattctcgcttagggtgcgagaggtcccg
+ggttcaaatcccggacgagccc
+> DP9991 TGG HUMAN CY ANI (Cytoplasmic)
+ggctcgttggtctaggggtatgattctcgctttgggtgcgagaggtcccg
+ggttcaaatcccggacgagccc
+> DQ1140 TTG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+tgggctatagccaagcggtaaggcaagggactttgactccctcatgcgcc
+ggttcgaatcctgctagcccaacca
+> DQ1200 TTG MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+tgggatgtagcccagcggtaaggcaatagactttgactctatcatgcgat
+ggttcgatcccatccatcccagcca
+> DQ1230 TTG ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+aggcccatagccaagcggtaaggcaacggactttgactccgtcactcgta
+ggttcaaatcctgctgggcctgcca
+> DQ1340 CTG STREPTOMYCES RIM. EUBACT (Eubacteria)
+gtgggctatggtgtaattggcagcacgactgattctggttcagttagtct
+aggttcgagtcctggtagcccag
+> DQ1341 CTG STREPTOMYCES RIM. EUBACT (Eubacteria)
+atgggctatggtgtaattggcagcacgagtgattctggttcatttagtct
+aggttcgagtcctggtagcccag
+> DQ1350 CTG STREPTOMYCES LIV. EUBACT (Eubacteria)
+tggcctatggtgtaattggcagcacgactgattctggttcagttagtcta
+ggttcgagtcctggtaggccag
+> DQ1351 CTG STREPTOMYCES LIV. EUBACT (Eubacteria)
+tggtctatggtgtaattggcagcacgactgattctggttcagttagtcta
+ggttcgagtcctggtagaccag
+> DQ1480 TTG STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+tgggctatagccaagcggtaaggcaacggactttgactccgtcactcgtt
+ggttcgaatccagctagcccag
+> DQ1540 TTG BACILLUS SUBTILIS EUBACT (Eubacteria)
+tgggctatagccaagcggtaaggcaacggactttgactccgtcatgcgtt
+ggttcgaatccagctagcccag
+> DQ1660 TTG E.COLI EUBACT (Eubacteria)
+tggggtatcgccaagcggtaaggcaccggtttttgataccggcattccct
+ggttcgaatccaggtaccccagcca
+> DQ1661 CTG E.COLI EUBACT (Eubacteria)
+tggggtatcgccaagcggtaaggcaccggattctgattccggcattccga
+ggttcgaatcctcgtaccccagcca
+> DQ2140 TTG SYNECHOCYSTIS SP. EUBACT (Eubacteria)
+tggggtgtagccaagcggtaaggcagcgggttttggtcccgccattccta
+ggttcgaatcctagcaccccagcca
+> DQ6050 TTG TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+ggtcctatagtgtagtggttatcacttcggactttgaatccgaaaaccca
+ggttcgaatcctggtaggacca
+> DQ6051 TTG TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+gggcgtgtagctcagtggtagagcgccctgttttgcatacggaggcctag
+ggttcaaacccctactcgtcca
+> DQ6060 TTA TETRAHYMENA THERM. CY SIN (Cytoplasmic)
+ggttccatagtatagtggttagtactggggactttaaatcccttgacctg
+ggttcgaatcccagtgggacct
+> DQ6090 TTG LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+ggtcctatagtgtagtggttatcacttcggactttgaatccgaaaaccca
+ggttcgaatcctggtaggacca
+> DQ6160 TTG DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+ggttttatagtgtaattggttagcacccaggactttgaatcctgtaatct
+gagttcgagtctcagtagaacca
+> DQ6280 TTG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggtcctatagtgtagtggttatcactttcggttttgatccggacaacccc
+ggttcgaatccgggtaggacct
+> DQ6281 CTG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggtcctatagtgtagtggttatcactttcggttctgatccgaacaacccc
+agttcgaatccgggtgggacc
+> DQ9990 CTG HUMAN CY ANI (Cytoplasmic)
+ggttccatggtgtaatggttagcactctggactctgaatccagcgatccg
+agttcaaatctcggtggaacct
+> DQ9991 GTT HUMAN CY ANI (Cytoplasmic)
+gtctctgtggcgcaatcggttagcgcgttcggctgttaaccgaaagattg
+gtggttcgagcccacccagggacg
+> DQ9992 TTG HUMAN CY ANI (Cytoplasmic)
+ggtcccatggtgtaatggttagcactctggactttgaatccagcgatccg
+agttcaaatctcggtgggacct
+> DR1140 ACG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gcgcccgtagatcaattggatagatcgcttgactacggatcaaaaggttg
+ggggttcgagtccctccgggcgcacca
+> DR1141 TCT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gcccatgtagctcagtaggatagagcacgcgccttctaagcgtgaggtcg
+gaagttcgagccttctcgtgggcacca
+> DR1180 ACG MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+gcgcccgtagatcaattggatagatcgcttgactacggatcaaaaggttg
+ggggttcgagtccctccgggcgcacca
+> DR1181 TCT MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+gcccatgtagctcagtaggatagagcacgcgccttctaagcgtgaggtcg
+gaagttcgagccttctcgtgggcacca
+> DR1200 GCG MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gtcatcatagctcaataggacagagtatcagcttgcggagctgagggtta
+caggttcgattcctgttggtgacgcca
+> DR1201 TCG MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gcgcccatagctcaattggatagagtgtctggcttcggaccagaaggtta
+tgggttcaagtcctattgggcgcgcca
+> DR1202 TCT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gcgtcggtagctcagcggatagagagtacacgccttctaagtgtgttgtc
+gtgggttcgagtcccacccgatgcgcca
+> DR1230 TCT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gtccgaatagctcagctggatagagcaatagccttctaagctatcggtcg
+ggggttcgaatccctcttcggacgcca
+> DR1260 ACG SPIROPLASMA MELIF. EUBACT (Eubacteria)
+gcgcccatagatcaattggatagatcgtttgactacggatcaaaaggttg
+agggttcgattccttctgggcgcgcca
+> DR1350 ACG STREPTOMYCES LIV. EUBACT (Eubacteria)
+gcactcgtagcttaacggataaagcatctgactacggatcagaaggttgc
+aggttcgaatcctgccgagtgca
+> DR1420 CCT AGROBACTER. TUME. EUBACT (Eubacteria)
+gtccacgtagctcagcaggatagagcacaggattcctaatcctggggtcg
+gaggttcgaatcctctcgtggacacca
+> DR1480 ACG STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gcgcccgtagctcaattggatagagcgtttgactacggatcaagaggtta
+tgggttcgactcctatcgggcgcg
+> DR1500 ACG LACTOBAC. BULG. EUBACT (Eubacteria)
+gcacccatagcgcaactggatagagtgtctgactacgaatcagaaggttg
+taggttcaagtcctactgggtgca
+> DR1540 ACG BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcgcccgtagctcaattggatagagcgtttgactacggatcaaaaggtta
+ggggttcgactcctctcgggcgcgcca
+> DR1660 CCG E.COLI EUBACT (Eubacteria)
+gcgcccgtagctcagctggatagagcgctgccctccggaggcagaggtct
+caggttcgaatcctgtcgggcgcgcca
+> DR1661 TCT E.COLI EUBACT (Eubacteria)
+gcgcccttagctcagttggatagagcaacgaccttctaagtcgtgggccg
+caggttcgaatcctgcagggcgcgcca
+> DR1662 TCT E.COLI EUBACT (Eubacteria)
+gcgcccttagctcagttggatagagcaacgaccttctaagtcgtgggccg
+caggttcgaatcctgcagggcgcgcca
+> DR1663 ACG E.COLI EUBACT (Eubacteria)
+gcatccgtagctcagctggatagagtactcggctacgaaccgagcggtcg
+gaggttcgaatcctcccggatgcacca
+> DR1664 CCT E.COLI EUBACT (Eubacteria)
+gtcctcttagttaaatggatataacgagcccctcctaagggctaattgca
+ggttcgattcctgcaggggacacca
+> DR1700 CCG SALMONELLA TYPHI. EUBACT (Eubacteria)
+gcgcccgtagctcagctggatagagcgctgccctccggaggcagaggtct
+caggttcgaatcctgtcgggcgtacca
+> DR1701 ACG SALMONELLA TYPHI. EUBACT (Eubacteria)
+gcatccgtagctcagctggatcgagtactcggctacgaaccgagcggtcg
+gaggttcgaatcctcccggatgcacca
+> DR1780 CCG AEROMONAS HYDROPH. EUBACT (Eubacteria)
+gcgcccgtagctcagctggatagagcgctgccctccggaggcagaggtca
+caggttcgaatcctgtcgggcgcacca
+> DR6030 ACG PLASMODIUM FALSI. CY ANI (Cytoplasmic)
+aaacttgtaatttaatggataaaatatataaatacgaattataaaataaa
+agttcaattcttttcaagttta
+> DR6031 TCT PLASMODIUM FALSI. CY ANI (Cytoplasmic)
+aaatctataatttaatggataaaataaaaaccttctaagttttatatgta
+agttcaaatcttactagattta
+> DR6050 CCT TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+gcccccgtagcccaatggataaggcgttcgcttcctaagcgaaagattgc
+gggttcgagtcccgccggaggta
+> DR6051 TCT TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+gctccagtggcctaatggatatggctttggacttctaatccaaaggttgc
+gggttcgagtcccgtctggagta
+> DR6052 ACG TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+gtccgtgtggctcaatggaagagcatctgactacggatcagagggttgca
+ggttcgaatcctgtcacggatg
+> DR6090 ACG LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+gtccgtgtggctcaatggaagagcatctgactacggatcagagggttgca
+ggttcgaatcctgtcacggatg
+> DR6091 TCG LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+ggcctcttggcgcaatggaagcgcatcagacttcggatctgagggttgca
+gttcgatcctgcagggggtcg
+> DR6160 ACG DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gggactatagtttagttggatataacgaccggctacgaaccggtaggtct
+caggttcgacccctgatggtctcg
+> DR6161 TCT DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gcccgtttagcaaagttggaattgcggcagccttctaagctgcaggtcgt
+gggatcgagacccacaatgggtg
+> DR6200 ACG NEUROSPORA CRASSA CY SIN (Cytoplasmic)
+ggtccgctggctcaatggcagagcgtctgactacgaatcaggaggttcca
+ggttcgacccctgggtggatcg
+> DR6280 ACG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ttcctcgtggcccaatggtcacggcgtctggctacgaaccagaagattcc
+aggttcaagtcctggcggggaag
+> DR6281 TCT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gctcgcgtggcgtaatggcaacgcgtctgacttctaatcagaagattatg
+ggttcgacccccatcgtgagtg
+> DR6282 CCT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gttccgttggcgtaatggtaacgcgtctccctcctaaggagaagactgcg
+ggttcgagtcccgtacggaacg
+> DR6320 ACG SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+ggtctcgtggcccaatggttaaggcgcttgactacgaatcaagagattcc
+aggttcgactcttggcgggatcg
+> DR6321 ACG SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+ggtctcgtggcccaatggttaaggcgcttgactacggatcaagagattcc
+aggttcgactcctggcgggatcg
+> DR7560 ACG CAENORHABDI. ELEG. CY ANI (Cytoplasmic)
+ggccgcgtggcgcaatggataacgcgtctgcctacggagcagaagattgc
+aggttcgaatcctgccgtggtcg
+> DR7561 ACG COENORHABDI. ELEG. CY ANI (Cytoplasmic)
+ggccgcgtgggccaatggataacgcgtctgcctacggagcagaagattgc
+aggttcgaatcctgccgtggtcg
+> DR7740 ACG DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ggtcctgtggcgcaatggataacgcgtctgactacggatcagaagattcc
+aggttcgactcctggcaggatcg
+> DR7741 TCG DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gaccgtgtggcctaatggataaggcgtcggacttcggatccgaagattgc
+aggttcgaatcctgtcacggtcg
+> DR9990 ACG HUMAN CY ANI (Cytoplasmic)
+gggccagtggcgcaatggataacgcgtctgactacggatcagaagattcc
+aggttcgactcctggctggctcg
+> DS1140 TGA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggaagattacccaagtccggctgaagggatcggtcttgaaaaccgagagt
+cggggaaaccgagcgggggttcgaatccctcatcttccgcca
+> DS1141 GCT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gggttaatactcaagttggtgaagaggacaccctgctaaggtgttaggtc
+ggtctccggcgcgagggttcgagtccctcttaacccgcca
+> DS1180 TGA MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggaagattacccaagtccggctgaagggatcggtcttgaaaaccgagagt
+cggggaaacccgagcgggggttcgaatccctcatcttccgcca
+> DS1200 GCT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gggagcgtactcaagtggttaagaggacaccctgctaaggtgtttatcgt
+tctacggtgcgtgggttcgaatcccaccgcttccgcca
+> DS1201 CGA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggagacttacccaagtggtttaagggggcgctctcgaaaagcgtttgtgt
+ttttgcatgcgtgggttcgaatcccacagtctccgcca
+> DS1202 GGA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggatacttacccaagtggctgaaggggtaggcttggaaagcttattatgg
+gtaacaccatgcgagggttcgaatccctcagtatccgcca
+> DS1203 TGA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggagacttacccaagcggctgaaggggtcggtcttgaaaaccgagtgtgc
+tgaaaagcacgcgagggttcgaatccctcagtctccgcca
+> DS1230 GCT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggagcgatactcaagaggccgaagagggcgcactgctaacgcgtttacgg
+ttaaccccgtgcgagggttcaaatccctctcgctccgcca
+> DS1231 TGA ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggaggaatacccaagaggctgaagggatcggtcttgaaaaccgacagggt
+gtaaaagccgcgggggttcaaatccctcttcctccgcca
+> DS1250 CGA SPIROPLASMA CITRI EUBACT (Eubacteria)
+ggaagtatacccaagtctggttgaagggggcggtctcgaaaaccgtttat
+ggagtaatccatgcaagagttcgaatctctttacttccgcca
+> DS1260 TGA SPIROPLASMA MELIF. EUBACT (Eubacteria)
+ggaagattacccaagtctggttgaagggatcggtcttgaaaattgacagg
+cggtgaaagccgcgcgggggttcgaatccctcatcttccgcca
+> DS1300 TGA STREPTOMYCES GRIS. EUBACT (Eubacteria)
+ggagggttgcccgagcggcctaagggaacggtcttgaaaaccgtcgtggt
+ggcgacatcaccgtgggttcaaatcccacaccctccg
+> DS1350 GCT STREPTOMYCES LIV. EUBACT (Eubacteria)
+ggaggcgtcgcctagtccggtctatggcgccgcactgctaatgcggtttg
+ggtcttaaagcccatcgagggttcaaatccctccgcctccg
+> DS1480 TGA STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggaggaatacccaagtccggctgaagggatcggtcttgaaaaccgactgg
+gcttaacggctcgcgggggttcgaatccctcttcctccg
+> DS1481 TGA STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggaggaatacccaagtccggctgaagggatcggtcttgaaaaccgactgg
+ccttaacgggccgcgggggttcgaatccctcttcctccgcca
+> DS1500 CGA LACTOBAC. BULG. EUBACT (Eubacteria)
+ggagagttggcagagcggtaatgcagcggactcgaaatccgccgaaccaa
+tgttgaattggtgcgcaggttcaaatcctgtactctcct
+> DS1520 CGA LACTOBAC.DELBRUEC. EUBACT (Eubacteria)
+ggagagttggcagagcggtaatgcagcggactcgaaatccgccgagccaa
+tgttgaattgggtcgcaggttcaaatcctgtactctcct
+> DS1530 TGA LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+ggaggattacccaagtccggctgaagggaacggtcttgaaaaccgtcagg
+cgtgtaaaagcgtgcgtgggttcgaatcccacatcctcct
+> DS1540 GGA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggagagctgtccgagtggtcgaaggagcacgattggaaatcgtgtaggcg
+gtcaactccgtctcaagggttcgaatcccttgctctccgcca
+> DS1541 TGA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggaggaatacccaagtctggctgaagggatcggtcttgaaaaccgacagg
+gtgtcaaagcccgcgggggttcgaatccctcttcctccgcca
+> DS1542 GCT BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggagaagtactcaagtggctgaagaggcgcccctgctaagggtgtaggtc
+gtgtaagcggcgcgagggttcaaatccctccttctccgcca
+> DS1570 GGA BACILLUS SP. PS3 EUBACT (Eubacteria)
+ggagagctgtccgagtggtcgaaggagcacgattggaaatcgtgtaggcg
+tgaatagcgcctcaagggttcgaatcccttgctctccgcca
+> DS1660 CGA E.COLI EUBACT (Eubacteria)
+ggagagatgccggagcggctgaacggaccggtctcgaaaaccggagtagg
+ggcaactctaccgggggttcaaatccccctctctccgcca
+> DS1661 TGA E.COLI EUBACT (Eubacteria)
+ggaagtgtggccgagcggttgaaggcaccggtcttgaaaaccggcgaccc
+gaaagggttccagagttcgaatctctgcgcttccgcca
+> DS1663 GCT E.COLI EUBACT (Eubacteria)
+ggtgaggtggccgagaggctgaaggcgctcccctgctaagggagtatgcg
+gtcaaaagctgcatccggggttcgaatccccgcctcaccgcca
+> DS1664 GGA E.COLI EUBACT (Eubacteria)
+ggtgaggtgtccgagtggctgaaggagcacgcctggaaagtgtgtatacg
+gcaacgtatcgggggttcgaatccccccctcaccgcca
+> DS2180 GGA CYANOPHORA PARAD. CYANEL (Eubacteria)
+ggagagatggccgagtggttgaaggcgcagcactggaaatgctgtttaag
+gttttcccttaacgagggttcgaatccctctctctccg
+> DS6060 AGA TETRAHYMENA PYRIF. CY SIN (Cytoplasmic)
+gacaatttgtccgagtggttaaggaggaagactagaaatcttttgggttt
+acccgcgcaggttcgaatcctgcagttgtcg
+> DS6160 TGA DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gacatcgtagcgaagtggtctaacgcgtttgacttgaaatcaaatctcct
+aggaggcgcaggttcgaaccctgccgatgtcg
+> DS6161 GCT DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gacaccttagcaaagtggttaatgcggcgccctgctaaggcgttctcttc
+ggaggcgcaggttcgaaccctgcaggtgtcg
+> DS6162 AGA DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gacatcgtagcaaagtggtctaatgcgtctgactagaaatcagatccctt
+cgggggcgcaggttcgaaccctgccgatgtcg
+> DS6210 CAG CANDIDA ALBICANS CY SIN (Cytoplasmic)
+gatacgatggccgagtggttaaggcgaaggatgcaggttcctttgggcat
+tgcccgcgcaggttcgaaccctgctcgtgtcg
+> DS6211 CAG CANDIDA ALBICANS CY SIN (Cytoplasmic)
+gatacgatggccgagtggttaaggcgaaggatgcaggttcctttgggcat
+tgcccgcgcaggttcgaaccctgctcgtgtcg
+> DS6240 TGA PODOSPORA ANSERINA CY SIN (Cytoplasmic)
+gtcagcatggcagagtggtctaatgcgttagacttgaaatctaattcctt
+cgggagcgtaggttcgaaccctactgctgacg
+> DS6241 TGA PODOSPORA ANSERINA CY SIN (Cytoplasmic)
+ggcgcgatggcagagtggtctaatgcgtgagacttgaaatctcatttctt
+cggaagcgtcggttcaaatccggctcgcgtcg
+> DS6280 AGA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggcaacttggccgagtggttaaggcgaaagattagaaatcttttgggctt
+tgcccgcgcaggttcgagtcctgcagttgtcg
+> DS6281 GCT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gtcccagtggccgagtggttaaggcgatgccctgctaaggcattgggttt
+tacctgcgcaggttcgaatcctgtctgtgacg
+> DS6282 CGA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggcactatggccgagtggttaaggcgagagactcgaaatctcttgggctc
+tgcccgcgctggttcaaatcctgctggtgtcg
+> DS6283 TGA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggcactatggccgagtggttaaggcgacagacttgaaatctgttgggctc
+tgcccgcgctggttcaaatcctgctggtgtcg
+> DS6284 CGA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggctacatggccgagtggttaaggcgagagactcgaaatctctgggctct
+gcccgcgctggttcaatccctgctgtggtcg
+> DS6320 TGA SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+gtcactatgtccgagtggttaaggagttagacttgaaatctaatgggctt
+tgcccgcgcaggttcaaatcctgctggtgacg
+> DS6321 TGA SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+gtcactatgtccgagtggttaaggagttagacttgaaatctaatgggctc
+tgcccgcgcaggttcaaatcctgctggtgacg
+> DS6322 CGA SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+gtcactatgtccgagtggttaaggagttagactcgaaatctaatgggctc
+tgcccgcgcaggttcaaatcctgctggtgacg
+> DS6370 CAG CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+gacaccgtggcccagtggttacggcgttggacgcagaatccattgagctt
+gctcgcgcgggttcgaatcccgtcggtgtct
+> DS6740 AGA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+gtggaagtggcggagtggttatcgggcatgactagaaatcatgtgggctt
+tgcccgcgcaggttcgaatcctgccgttcacg
+> DS6741 AGA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcatgactagaaatcatgtgggttt
+tgcccgcgcaggttcgaatcctgccgttcacg
+> DS6742 AGA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggaatgactagaaatcatggaggctt
+tgcccgcgcacgtttgaatcttgccgtttacg
+> DS6743 AGA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+gtggacatgccggagtggtgtatcgggcataactagaaatcatgtgggct
+ttgcccgcgcaggttcgaatcatgccgtttacg
+> DS6744 AGA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcataactagaaatcatgtgggctt
+tgcccgcgcaggttcgaatcctgccgttcacg
+> DS6745 AGA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcatgactagaaatcatgtgggctt
+tgcccgcgcacgttcgaatcctgccgttcacg
+> DS7060 TGA NICOTIANARUSTICA CY PLA (Cytoplasmic)
+gtcgatatgtccgagtggttaaggagacagacttgaaatctgttgggctt
+cgcccgcgcaggttcgaaccctgctgtcgacg
+> DS7061 CGA NICOTIANARUSTICA CY PLA (Cytoplasmic)
+gtcgatatgtccgagtggttaaggagacagactcgaaatctgttgggctt
+tgcctgcgcaggttcgaatcctgctgtcgacg
+> DS7062 GCT NICOTIANARUSTICA CY PLA (Cytoplasmic)
+gtcgccttggccgagtggttaaggcgtgtgcctgctaagtacatggggtt
+tccccgcgagagttcgaatctctcaggcgacg
+> DS7063 GCT NICOTIANARUSTICA CY PLA (Cytoplasmic)
+gtcgctttggccgagtggttaaggcgtgtgcctgctaagtacatggggtt
+tccccgcgagagttggaatctctcaggcgacg
+> DS7064 AGA NICOTIANARUSTICA CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcatgactagaaatcatgtgggctt
+tgcccgcgcaggttcgaatcctgccgtccacg
+> DS7065 AGA NICOTIANARUSTICA CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcatgactagaaatcatgcgggctt
+tgcccgcgcaggttcgaatcctgccgtccacg
+> DS7066 AGA NICOTIANARUSTICA CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcatgactagaaatcatgtgggctc
+tgcccgcgcaggttcgaatcctgccgtccacg
+> DS7240 TGA TRITICUM VULGARE CY PLA (Cytoplasmic)
+ggatggatgtctgagcggttgaaagagtcggtcttgaaaaccgaagtatt
+gataggaataccgggggttcgaatccctctccatccg
+> DS7740 AGA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcagtcgtggccgagcggttaaggcgtctgactagaaatcagattccctc
+tgggagcgtaggttcgaatcctaccgactgcg
+> DS7741 CGA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcagtcgtggccgagtggttaaggcgtctgactcgaaatcagattccctc
+tgggagcgtaggttcgaatcctaccggctgcg
+> DS7800 CGA DROSOPHILA SIMUL. CY ANI (Cytoplasmic)
+gcagtcgtggccgagtggttaaggcgtctgactcgaaatcagattccctc
+tgggagcgtaggttcgaatcctaccggctgcg
+> DS7930 AGA PODOCORYNE CARNEA CY ANI (Cytoplasmic)
+gctgcgatggccgagtggttaaggcgtttgactagaaatcaaatgggatc
+ttcccgcgtaggttcgaatcctactcgcagcg
+> DS7931 TGA PODOCORYNE CARNEA CY ANI (Cytoplasmic)
+gctgcgatggccgactggttaaggcgttagacttgaaatctaatgggatc
+ttcccgcgtaggttcgaaccctactcgcagcg
+> DS9280 TGA BOVINE CY ANI (Cytoplasmic)
+gcagcgatggccgagtggttaaggcgttggacttgaaatccaatggggtc
+tccccgcgcaggttcgaaccctgctcgctgcg
+> DS9990 TGA HUMAN CY ANI (Cytoplasmic)
+gtagtcgtggccgagtggttaaggcgatggacttgaaatccattggggtt
+tccccgcgcaggttcgaatcctgccgactacg
+> DS9991 AGA HUMAN CY ANI (Cytoplasmic)
+gtagtcgtggccgagtggttaaggcgatggactagaaatccattggggtt
+tccccacgcaggttcgaatcctgccgactacg
+> DS9992 AGA HUMAN CY ANI (Cytoplasmic)
+gtagtcgtggccgagtggttaaggcgatggactagaaatccattggggtc
+tccccgcgcaggttcgaatcctgccgactacg
+> DS9993 TGA HUMAN CY ANI (Cytoplasmic)
+gtagtcgtggccgagtggttaaggcgatggacttgaaatccattggggtt
+tccccgcgcaggttcgaatcctgtcggctacg
+> DS9994 CGA HUMAN CY ANI (Cytoplasmic)
+ggagatatggcacaatctggtactgcaacggactcgaaatccgtcgagcc
+gcgtttcgggtgtgcgggttcaaatcccgctatctcct
+> DT1140 AGT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gctgacttagctcagttggtagagcaattgactagtaatcaataggtcga
+aggttcaaatcctttagtcagcacca
+> DT1141 TGT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gctgacttagctcagcaggcagagcaactgacttgtaatcagtaggtcgt
+aggttcgattcctatagtcagcacca
+> DT1180 TGT MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+gctgacttagctcagcaggcagagcaactgacttgtaatcagtaggtcgt
+aggttcgattcctatagtcagcacca
+> DT1200 CGT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gccgaattagctcaagggtagagcgatgcactcgtaatgcataggctaca
+ggttcaattcctgtattcggcacca
+> DT1201 GGT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gccgaattagtttaggggcaaaacagatccatggtaaggatcaggaaaca
+gttcgactctgttattcggcacca
+> DT1202 TGT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gccgacttagctcagttggtagagcaattgacttgtaatcagtaggtcgt
+aggttcgaatcctatagtcggcacca
+> DT1230 TGT ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gccgaaatagctcaatcggtagagcaactgatttgtaatcagtaggttgc
+gggttcaattcctgttttcggcacca
+> DT1450 CGT CLOSTRIDIUM ACETO. EUBACT (Eubacteria)
+gctccagtagcgcagttggtagcgcagctgattcgtaatcagttggtcgt
+aggttcaaatcctatctggagctcca
+> DT1480 TGT STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gccggcctagctcaattggtagagcaactgacttgtaatcagtaggttgg
+gggttcaagtcctctggccggcacca
+> DT1481 TGT STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gccggcctagctcaattggtagagcaactgacttgtaatcagtaggttgg
+gggttcaagtcctctggccggcacca
+> DT1540 GGT BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcttccatagctcagcaggtagagcacttccatggtaaggaagaggtcag
+cggttcgagcccgcttggaagct
+> DT1541 TGT BACILLUS SUBTILIS EUBACT (Eubacteria)
+gccggtgtagctcaattggtagagcaactgacttgtaatcagtaggttgg
+gggttcaagtcctcttgccggca
+> DT1542 TGT BACILLUS SUBTILIS EUBACT (Eubacteria)
+gccggtgtagctcaattggtagagcaactgacttgtaatcagtaggttgg
+gggttcaagtcctcttgccggcacca
+> DT1580 TGT THERMUS THERMOPHI. EUBACT (Eubacteria)
+gccaccctagctcaaccggcagagcacccgacttgtaatcggggggttgg
+gggttcaactcccctgggtggctcca
+> DT1581 GGT THERMUS THERMOPHI. EUBACT (Eubacteria)
+gctcgcgtagctcagcaggtagagcacacccttggtaagggtgaggtcgc
+cggttcgagcccggccgcgagctcca
+> DT1660 GGT E.COLI EUBACT (Eubacteria)
+gctgatatggctcagttggtagagcgcacccttggtaggggtggggtccc
+cagttcgactctgggtatcagcacca
+> DT1661 GGT E.COLI EUBACT (Eubacteria)
+gctgatatagctcagttggtagagcgcacccttggtaagggtgaggtcgg
+cagttcgaatctgcctatcagcacca
+> DT1662 TGT E.COLI EUBACT (Eubacteria)
+gccgacttagctcagtaggtagagcaactgacttgtaatcagtaggtcac
+cagttcgattccggtantcggcacca
+> DT1663 CGT E.COLI EUBACT (Eubacteria)
+gccgatatagctcagttggtagagcagcgcattcgtaatgcgaaggtcgt
+aggttcgactcctattatcggcacca
+> DT1664 GGT E.COLI EUBACT (Eubacteria)
+gctgatatggctcagttggtagagcgcacccttggtaagggtgaggtccc
+cagttcgactctgggtatcagcacca
+> DT1720 TGT AZOSPIRILLUM LIPO. EUBACT (Eubacteria)
+gccggtttagctcagcaggtagagcaactgacttgtaatcagtaggtcgt
+gggttcgattcctatagccggcacca
+> DT1820 CGT PSEUDOMONAS AER. EUBACT (Eubacteria)
+gccggattagctcagtcggtagagcagctcattcgtaatgagaaggtcgg
+gggttcgattcctctatccggcacca
+> DT1821 GGT PSEUDOMONAS AER. EUBACT (Eubacteria)
+gctcatgtagctcagttggtagagcacacccttggtaagggtgaggtcag
+cggttcaaatccgctcatgagctcca
+> DT6030 TGT PLASMODIUM FALSI. CY ANI (Cytoplasmic)
+gctaaagtagcttaattggtaaagcaactgatttgtaatcagtagattat
+gagttcaaatctcaccattagct
+> DT6050 CGT TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+ggccgcttagcacatggcagtgcaccactctcgtaaagtgggggtcgcga
+gttcgattctcgcagtggcct
+> DT6090 TGT LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+ggccgcttagcacagtggcagtgcactggtcttgtaaaccaggggtcccg
+agttcaattctcggagtggcct
+> DT6160 AGT DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+ggctccttagcatagtggtattgcgtttccctagtaaggaagaggtcatg
+agttcgatcctcataggagcct
+> DT6161 CGT DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gccatagtagtctagtggtaagacatttctctcgtaaagaaggatcccgt
+gttcgattcacggctttggca
+> DT6280 AGT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcttctatggccaagttggtaaggcgccacactagtaatgtggagatcat
+cggttcaaatccgattggaagca
+> DT6281 CGT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcccttttggccaagtggtaaggcatcgcactcgtaatgcggggatcgtg
+ggttcaattcccacagagggca
+> DT6282 TGT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcctccttagcttagtggtagagcgttgcacttgtaatgcaaaggtcgct
+agttcaattctggcaggtggca
+> DT6720 GGT CHLAMYDIATRACHOM. CY PLA (Cytoplasmic)
+gcgcccgtagctcatggtagagcacttgcatggtaagcaagtggccgtag
+gttcaattcctattctgggca
+> DT7740 AGT DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ggcgccgtggcttagttggttaaagcgcctgtctagtaaacaggagatcg
+tgagttcgaatctcgccggggcct
+> DT9990 TGT HUMAN CY ANI (Cytoplasmic)
+ggctccatagctcaggggttagagcactggtcttgtaaaccaggggtcgc
+gagttcaattctcgctggggctt
+> DT9991 TGT HUMAN CY ANI (Cytoplasmic)
+ggctccatagctcaggggttagagcactggtcttgtaaaccaggggtcgc
+gagttcaaatctcgctggggcct
+> DT9992 AGT HUMAN CY ANI (Cytoplasmic)
+ggctccgtggcttagctggttaaagcgcctgtctagtaaacaggagatcc
+tgggttcgaatcccagcggggcct
+> DV1140 TAC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggagtgttagctcagctgggagagctcctgccttacaagcaggcggtcat
+aggttcaagtcctatacactccacca
+> DV1180 TAC MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggagtgttagctcagctgggagagctcctgccttacaagcaggcggtcat
+aggttcaagtcctatacactccacca
+> DV1200 TAC MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggattgttagctcagctgggagagcatatgccttacaagcatagggtcgg
+gggttcgatcccctcacaatccacca
+> DV1230 TAC ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+ggaggattagctcagttgggagagcacctgccttacaagcagggggtcgg
+cggttcaagcccgtcatcctccacca
+> DV1350 GAC STREPTOMYCES LIV. EUBACT (Eubacteria)
+ggacgattagctcagcgggagagcgcttccctgacacggaagaggtcact
+ggttcaatcccagtatcgtcca
+> DV1351 GAC STREPTOMYCES LIV. EUBACT (Eubacteria)
+gcgcgattagctcagcgggagagcgcttccctgacacggaagaggtcact
+ggttcaatcccagtatcgcgca
+> DV1480 TAC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggagaattagctcagctgggagagcatctgccttacaagcagagggtcgg
+cggttcgaacccgtcattctccacca
+> DV1481 CAC STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+gggggcttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctagtctccacca
+> DV1500 TAC LACTOBAC. BULG. EUBACT (Eubacteria)
+ggaggattagctcagctgggagagcatctgccttacaagcagagggtcac
+aggttcgagccctgtatcctcca
+> DV1540 TAC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggaggattagctcagctgggagagcatctgccttacaagcagagggtcgg
+cggttcgagcccgtcatcctccacca
+> DV1570 TAC BACILLUS SP. PS3 EUBACT (Eubacteria)
+ggaggattagctcagctgggagagcacttgccttacaagcaaggggtcgg
+cggttcgatcccgtcatcctccacca
+> DV1660 TAC E.COLI EUBACT (Eubacteria)
+gggtgattagctcagctgggagagcacctcccttacaaggagggggtcgg
+cggttcgatcccgtcatcacccacca
+> DV1661 GAC E.COLI EUBACT (Eubacteria)
+gcgtccgtagctcagttggttagagcaccaccttgacatggtgggggtcg
+gtggttcgagtccactcggacgcacca
+> DV1662 GAC E.COLI EUBACT (Eubacteria)
+gcgttcatagctcagttggttagagcaccaccttgacatggtgggggtcg
+ttggttcgagtccaattgaacgcacca
+> DV1720 TAC AZOSPIRILLUM LIPO. EUBACT (Eubacteria)
+ggaggattagctcagctgggagagcatctgccttacaagcagagggtcgg
+cggttcgagcccgccatcctccacca
+> DV6030 TAC PLASMODIUM FALSI. CY ANI (Cytoplasmic)
+aagtaattaacttagaggtaaagtttctgctttacatacagaagaccatt
+ggttcgaatccaatattactta
+> DV6050 TAC TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+gcgtgttgatctagtggttatgatgtctgctttacacgcagaacgtcgcg
+ggttcgaaccccgcccgcgtag
+> DV6051 CAC TRYPANOSOMA BRUCEI CY ANI (Cytoplasmic)
+gcgatggtcgtctagtggttaggacattcgcctcacacgcgagagatcgc
+gggttcgatccccgcccgtcgta
+> DV6090 TAC LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+gcgtgggtgatctagtggttatgatgtctgctttacacgcagaacgtcgc
+gggttcgaaccccgccccgcgta
+> DV6160 AAC DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gttcggatggtgtagtcggttatcacgaatccttaacacggattaggtcg
+tgggttcgattcccgctctgaata
+> DV6161 TAC DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+ggtcggatggtgtagtcggttatcacggttgctttacacgcaacaggtct
+cgagttcgatcctcggtcggatca
+> DV6280 AAC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggtttcgtggtctagtcggttatggcatctgcttaacacgcagaacgtcc
+ccagttcgatcctgggcgaaatca
+> DV6281 AAC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggtttcgtggtctagtcggttatggcatctgcttaacacgcagaacgtcc
+ccagttcgatcctgggcgaaatcg
+> DV6320 AAC SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+ggtcgtgtggtttagatggttataatttctgcttaacacgcagacggtcc
+caagttcgagtcttggcacgatca
+> DV6740 AAC ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+ggtttcgtggtgtagttggttatcacgtcagtctaacacactgaaggtct
+ccggttcgaacccgggcgaagcca
+> DV7740 AAC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gtttccgtggtgtagtggttatcacatccgcctaacacgcggaaggcccc
+cggttcaatcccgggcggaaaca
+> DV7741 CAC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gttttcgtagtgtagtggttatcacgtgtgcttcacacgcacaaggtccc
+cggttcgaacccgggcgaaaaca
+> DV7920 CAC XENOPUS LAEVIS CY ANI (Cytoplasmic)
+gtttctgtagtgtagcggttatcacgttcgcctcacatgcgaaaggtccc
+cggttcgaaaccgggcagaaaca
+> DV9990 AAC HUMAN CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggttatcacgttcgcctaacacgcgaaaggtccc
+cggttcgaaaccgggcggaaaca
+> DV9991 CAC HUMAN CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggttatcacgttcgcctcacacgcgaaaggtccc
+cggttcgaaaccgggcggaaaca
+> DV9992 AAC HUMAN CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggtcatcacgttcgcctaacacgcgaaaggtccc
+cggttcgaaaccgggcggaaaca
+> DV9993 AAC HUMAN CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggttatcacgttcgcctaacacgcgaaaggtccc
+tggatcaaaaccaggcggaaaca
+> DV9994 CAC HUMAN CY ANI (Cytoplasmic)
+gcttctgtagtgtagtggttatcacgttcgcctcacacgcgaaaggtccc
+cggttcgaaaccgggcagaagca
+> DV9995 CAC HUMAN CY ANI (Cytoplasmic)
+gtttccgtagtgtagcggttatcacattcgcctcacacgcgaaaggtccc
+cggttcgatcccgggcggaaaca
+> DV9996 AAC HUMAN CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggttatcacgttcgcctaacacgcgaaaggtccc
+cggttcgaaaccgggcggaaaca
+> DW1140 TCA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+aggggcatagttcagtaggtagaacatcggtcttcaaaaccgagtgtcac
+gagttcgagtcttgttgcccctgcca
+> DW1141 CCA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+aggagagtagttcaatggtagaacgtcggtctccaaaaccgagcgttgag
+ggttcgattcctttctctcctgcca
+> DW1200 CCA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+gggggtgtagtttagtggcagaacaacagtctccaaaactgtctgtgtgg
+gttcgattccttccacccccgcca
+> DW1201 TCA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+aggggtatagttcaaaggtagaacatctgtcttcaaaatagagtgttgtg
+ggttcgagtcctgctacccctgcca
+> DW1230 CCA ACHOLEPLASMA LAID. EUBACT (Eubacteria)
+gggggcatggtgtcaacggtagcacacaggtctccaaaacctttagtgtg
+ggttcgaatcctgctgccctcgcca
+> DW1250 TCA SPIROPLASMA CITRI EUBACT (Eubacteria)
+aggggtatagttcaatcggtagaacaccggacttcaaatccgggtgttgt
+gggttcaagtcctgctacccctgcca
+> DW1251 CCA SPIROPLASMA CITRI EUBACT (Eubacteria)
+aggggtgtagtttaatggtagaacagcggtctccaacaccgtacgttgtg
+ggttcaagtcctgtcacccctgcca
+> DW1480 CCA STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+aggggcatagttcaacggtagaatagaggtctccaaaacctttggtgtgg
+gttcgattcctactgcccctgcca
+> DW1540 CCA BACILLUS SUBTILIS EUBACT (Eubacteria)
+aggggcatagtttaacggtagaacagaggtctccaaaacctccggtgtgg
+gttcgattcctactgcccctgcca
+> DW1660 CCA E.COLI EUBACT (Eubacteria)
+aggggcgtagttcaattggtagagcaccggtctccaaaaccgggtgttgg
+gagttcgagtctctccgcccctgcca
+> DW2140 CCA SYNECHOCYSTIS SP. EUBACT (Eubacteria)
+gcgtccttagttcagttggtagaacgcaggtctccaaaacctgatgtcgg
+gggttcaagtcctccagggcgcg
+> DW6090 CCA LEISHMANIA TARENT. CY ANI (Cytoplasmic)
+gggggcttagctcagtggtagagcattggattccaaatccaggggtcgta
+ggttcaatccctgcagctctca
+> DW6160 CCA DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gactccttagcatagtggtttattgtaattgtctccaaagcagttggtcc
+agggttcaactccctgaggggtct
+> DW6161 CCA DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+gactccttagcatagtggtttattgtaattgtctccaaagcagttggtcc
+agggttcaactccctgaggggtct
+> DW6280 CCA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gaagcggtggctcaatggtagagctttcgactccaaatcgaagggttgca
+ggttcaattcctgtccgtttca
+> DW6280 CCA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gaagcggtggctcaatggtagagctttcgactccaaatcgaagggttgca
+ggttcaattcctgtccgtttca
+> DW6720 CCA CHLAMYDIA TRACHOM. CY PLA (Cytoplasmic)
+gggtgtgtagcttagatggtagagcagtggcctccaaagccgccggtcgg
+gggttcgaatccctcttcaccg
+> DW6740 CCA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+ggatccgtggcgcaatggtagcgcgtctgactccagatcagaaggttgcg
+tgttcgattcacgtcgggttcacca
+> DW6741 CCA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+ggattcgtggcgcaatggtagcgcgtctgactccagatcagaaggttgcg
+tgttcgattcacgtcgggttcacca
+> DW7560 CCA CAENORHABDI.ELEG. CY ANI (Cytoplasmic)
+gactgcttggcgcaatggtagcgcgttcgactccagatcgaaaggttggg
+cgttcgatccgctcagtggtca
+> DW8040 CCA CHICKEN CY ANI (Cytoplasmic)
+gacctcgtggcgcaacggtagcgcgtctgactccagatcagaaggctgcg
+tgttcgaatcacgtcggggtca
+> DX1140 CAT MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+cgcggggtagagcagttggtagctcgccgggctcataacccggaggtcgc
+aggttcgagtcctgcccccgcaacca
+> DX1180 CAT MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+cgcggggtagagcagttggtagctcgccgggctcataacccggaggccgc
+aggttcgagtcctgcccccgcaacca
+> DX1200 CAT MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+cgcgggatagagcagtcggttagctcgtcaggctcataatctgaaggtcg
+ggggttcgaatccctctcccgcaacca
+> DX1260 CAT SPIROPLASMA MELIF. EUBACT (Eubacteria)
+cgtggggtggagcagttggtagctcgttgggctcataacccaaaggtcgc
+aggttcaagtcctgcccccgcaacca
+> DX1290 CAT BARTONELLA BACIL. EUBACT (Eubacteria)
+cgcggggtggagcagcccggtagctcgtcaggctcataacctgaaggccg
+caggttcaaatcctgcccccgcaacca
+> DX1340 CAT STREPTOMYCES RIM. EUBACT (Eubacteria)
+cgcggggtggagcagctcggtagctcgctgggctcataactcagaggtcg
+caggttcaaatcctgtccccgcta
+> DX1341 CAT STREPTOMYCES RIM. EUBACT (Eubacteria)
+cgcggggtggagcagctcggtagctcgctgggctcataacccagaggtcg
+caggttcaaattctgtccccgcta
+> DX1480 CAT STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+cgcgggatggagcagttcggtagctcgtcgggctcataacccgaaggtcg
+gtggttcaaatccgcctcccgcaa
+> DX1530 CAT LACTOCOCCUS LACTIS EUBACT (Eubacteria)
+cgcgggatggagcagctaggtagctcgtcgggctcataacccgaagtcat
+aggttcaaatcctattcccgca
+> DX1540 CAT BACILLUS SUBTILIS EUBACT (Eubacteria)
+cgcggggtggagcagttcggtagctcgtcgggctcataacccgaaggtcg
+caggttcaaatcctgcccccgcaacca
+> DX1541 CAT BACILLUS SUBTILIS EUBACT (Eubacteria)
+cgcggggtggagcagttcggtagctcgtcgggctcataacccgaaggtcg
+caggttcaaatcctgcccccgcaacca
+> DX1660 CAT E.COLI EUBACT (Eubacteria)
+cgcggggtggagcagcctggtagctcgtcgggctcataacccgaagatcg
+tcggttcaaatccggcccccgcaacca
+> DX1661 CAT E.COLI EUBACT (Eubacteria)
+cgcggggtggagcagcctggtagctcgtcgggctcataacccgaaggtcg
+tcggttcaaatccggcccccgcaacca
+> DX2140 CAT SYNECHOCYSTIS SPEC EUBACT (Eubacteria)
+cgcgggatagagcagtctggtagctcgtcgggctcataacccgaaggtcg
+gtggttcaaatccgcctcccgcca
+> DX6180 CAT PHYSARUM POLYCEPH. CY SIN (Cytoplasmic)
+ctcggggtagtgtaaaggttcgcatacagggctcataaccctatggtctt
+ggttcgattccaggccccgaca
+> DX6280 CAT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggcgccgtggcgcagtggaagcgcgcagggctcataaccctgatgtcctc
+ggatggaaaccgagcggcgcta
+> DX6281 CAT SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+agcgccgtggcgcagtggaagcgcgcagggctcataaccctgatgtcctc
+ggatcgaaaccgagcggcgcta
+> DX6320 CAT SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+tgcgcggtaggagagtggaactccgacgggctcataacccgtaggtccca
+ggatcgaaacctggccgcgcaa
+> DX6321 CAT SCHIZOSACCHA.POM. CY SIN (Cytoplasmic)
+tgcgcggtaggagagtggaactccgacgggctcataacccgtaggtccca
+ggatcgaaacctggccgcgcaa
+> DX6740 CAT ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+atcagagtggcgcagcggaagcgtggtgggcccataacccacaggtccca
+ggatcgaaacctggctctgata
+> DX6900 CAT GLYCINE MAX CY PLA (Cytoplasmic)
+atcagagtggcgcagcggaagcgtggtgggcccataacccacaggtccca
+ggatcgaaacctggctctgata
+> DX7560 CAT CAENORHABDI. ELEG. CY ANI (Cytoplasmic)
+agcagcgtggcgcagtggaagcgtgctgggcccataacccagaggtcggt
+ggatcgaaaccactcgctgctacca
+> DX7740 CAT DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+agcagagtggcgcagtggaagcgtgctgggcccataacccagaggtccga
+ggatcgaaaccttgctctgcta
+> DX7920 CAT XENOPUS LAEVIS CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccattctctgcta
+> DX7921 CAT XENOPUS LAEVIS CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgcta
+> DX8100 CAT MOUSE CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgcta
+> DX9990 CAT HUMAN CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgcta
+> DX9991 CAT HUMAN CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatctaaaccatcctctgcta
+> DY1140 GTA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggaggggtagcgaagtggctaaacgcgggtggctgtaacccacttcctta
+cggttcgggggttcgaatccctccccctccacca
+> DY1200 GTA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggacaggtagcgaagtggctaaacgcttctgactgtagatcagacacctt
+catggtttcgggagttcgaatctctccctgtccacca
+> DY1201 GTA MYCOPLASMA PNEUMO. EUBACT (Eubacteria)
+ggacaggtagcgaagtggctaaacgcttctgactgtagatcagacacctt
+catggtttcgggagttcgaatctctccctgtccacca
+> DY1350 GTA STREPTOMYCES LIV. CY SIN (Eubacteria)
+ggcggtgtgcccgagcggccaaagggagcagactgtaaatctgccggctc
+agccttcccaggttcgaatcctggcgccgcca
+> DY1480 GTA STAPHYLOCOC. AURE. EUBACT (Eubacteria)
+ggaggggtagcgaagtggctaaacgcggcggactgtaaatccgctccttc
+ggggttcggcagttcgaatctgcccccctcca
+> DY1540 GTA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggaggggtagcgaagtggctaaacgcggcggactgtaaatccgctccctc
+agggttcggcagttcgaatctgcccccctccacca
+> DY1580 GTA THERMUS THERMOPHI. EUBACT (Eubacteria)
+gggcaggtgcccgagcggccaaaggggacggtctgtaaaaccgttggcgt
+atgccttcgctggttcgaatccagccctgcccacca
+> DY1660 GTA E.COLI EUBACT (Eubacteria)
+ggtggggttcccgagcggccaaagggagcagactgtaaatctgccgtcac
+agacttcgaaggttcgaatccttcccccaccacca
+> DY1661 CTA E.COLI EUBACT (Eubacteria)
+ggtggggttcccgagcggccaaagggagcagactctaaatctgccgtcat
+cgacttcgaaggttcgaatccttcccccaccacca
+> DY1820 GTA PSEUDOMONAS AER. EUBACT (Eubacteria)
+ggagggatcccttagtggccaaaggatcagactgtaaatctgacgtcata
+gacttcgaaggttcgaatccttctccctccacca
+> DY6050 GTA TRYPANOSOMA BRUCEI CY SIN (Cytoplasmic)
+ccttctgtagctcaattggtagagcatgtgactgtagagtatgcgggtat
+cacagggtcgctggttcgattccggccggaagg
+> DY6160 GTA DICTYOSTELIUM DIS. CY SIN (Cytoplasmic)
+ccggctttggcgcaatggtagcgcgattgactgtagatcaatcggttgct
+agttcgaatctggcaagccgga
+> DY6280 GTA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ctctcggtagccaagttggtttaaggcgcaagactgtaaatcttgagatc
+gggcgttcgactcgcccccgggaga
+> DY6740 GTA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcac
+tggttcgaatccggtaggtcgga
+> DY6741 GTA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcat
+tggttcgaatccgctaggtcgga
+> DY6742 GTA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+ccgaccttagctctgttggtatagcggaggactgtagatccttaggtcac
+tggttcgaattcggtaggtcgga
+> DY6743 GTA ARABIDOPSIS THAL. CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcac
+tggttcgaatctggtaggtttga
+> DY7060 GTA NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcac
+tggttcgaatccggtaggtcgga
+> DY7061 GTA NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcgc
+tggttcgaatccggcaggtcgga
+> DY7200 GTA TRITICUM AESTIVUM CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcac
+tggttcgaatccggtaggtcgga
+> DY7740 GTA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ccttcgatagctcagttggtagagcggtggactgtagatccataggtcgc
+tggttcaaatccggctcgaagga
+> DY7920 GTA XENOPUS LAEVIS CY ANI (Cytoplasmic)
+ccttcgatagctcagctggtagagcggaggactgtaaatccttaggtcgc
+tggttcgattccggctcgaagga
+> DY7921 GTA XENOPUS LAEVIS CY ANI (Cytoplasmic)
+ccttcgatagctcagctggtagagcggaggactgtagatccttaggtcgc
+tggttcaattccggctcgaagga
+> DY7922 GTA XENOPUS LAEVIS CY ANI (Cytoplasmic)
+ccttcgatagctcagctggtagagcggaggactgtagatccttaggtcgc
+tggttcgattccggctcgaagga
+> DY9990 GTA HUMAN CY ANI (Cytoplasmic)
+ccttcgatagctcagctggtagagcggaggactgtagatccttaggtcgc
+tggttcaattccggctcgaagga
+> DY9991 GTA HUMAN CY ANI (Cytoplasmic)
+ccttcgatagctcagctggtagagcggaggactgtagatccttaggtcgc
+tggttcgattccggctcgaagga
+> DZ1430 TCA CLOSTRIDIUM THERM. EUBACT (Eubacteria)
+gggggggatcgggcctggtggcttgcctggacttcaaatccagttcgcgc
+ctaacgggcgcggtgggttcgattcccacacctcccgcca
+> DZ1440 TCA DESULFOMICR. BACU. EUBACT (Eubacteria)
+ggaatgtatcgtcaccggtgtggcgcccggtcttcaaaaccggtggaagg
+tcgagaggtcttcggtaggttcgactcctatactttccgcca
+> DZ1662 TCA E.COLI EUBACT -_AA (Eubacteria)
+taagatcgtcgtctccggtgaggcggctggacttcaaatccagttggggc
+cgctgcggtcccgggcaggttcgactcctgtgatctttgcca
+> DZ7560 TCA CAENORHABDI. ELEG. CY ANI (Cytoplasmic)
+gcccggattccatggcggtctgtggtgcagacttcaaatctgtaggcggt
+tagcgccgcagtggttcgactccattttcgggtg
+> DZ7742 TCA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gccccacttcttcggtggtccggggtgcggacttcaaatccgtagtcgat
+ttgcgtcgaagtggttcgattccattggggggcg
+> DZ7920 TCA XENOPUS LAEVIS CY ANI (Cytoplasmic)
+gcccggattcctcagtggtctggggtgcaggcttcaaacctgtagctgtc
+tagcgacagagtggttcaattccattttcgggcg
+> DZ8040 TCA CHICKEN CY ANI -GC (Cytoplasmic)
+gcccggattcctcagtggtctggggtgcaggcttcaaacctgtagctgtc
+tagcgacagagtggttcaattccattttcgggcg
+> DZ8100 TCA MOUSE CY ANI (Cytoplasmic)
+cgcccgatgatcctcagtggtctggggtgcaggcttcaaacctgtagctg
+tttagcgacagagtggttcaattccactttgggcgg
+> DZ9281 TCA BOVINE CY ANI -GCC (Cytoplasmic)
+gcccggattcctcagtggtctggggtgcaggcttcaaacctgtagctgtc
+tagcgacagagtggttcaattccattttcgggcg
+> RA1140 UGC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gggccctnagctcagctgggagagcacctgccttgcacgcagggggtcga
+cggttcgatcccgttagggtccacca
+> RA1180 UGC MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+gggcccttagctcagctgggagagcacctgccttgcacgcagggggtcga
+cggttcgatcccgttagggtccacca
+> RA1540 5GC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggagccttagctcagctgggagagcgcctgctttgcacgcaggaggtcag
+cggttcgatcccgctaggctccacca
+> RA1660 GGC E.COLI EUBACT (Eubacteria)
+ggggctanagctcagctgggagagcgcttgcatggcatgcaagaggtcag
+cggttcgatcccgcttagctccacca
+> RA1661 VGC E.COLI EUBACT -GGG (Eubacteria)
+gggggcatagctcagctgggagagcgcctgctttgcacgcaggaggtctg
+cggttcgatcccgcgcgctcccacca
+> RA1662 VGC E.COLI EUBACT (Eubacteria)
+ggggctatagctcagctgggagagcgcctgctttgcacgcaggaggtctg
+cggttcgatcccgcatagctccacca
+> RA6280 IGC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gggcgtgtggcgtagtcggtagcgcgctcccttagcatgggagaggtctc
+cggttcgattccggactcgtccacca
+> RA6360 IGC TORULOPSIS UTILIS CY SIN (Cytoplasmic)
+gggcgtgtggcgtagttggtagcgcgttcgcttagcatgcgaaaggtctc
+cggttcgactccggactcgtccacca
+> RA7680 IGC BOMBYX MORI CY ANI (Cytoplasmic)
+gggggcgtagctcagatggtagagcgctcgcttagcatgtgagaggtacc
+gggatcgatacccggcgcctccacca
+> RA7681 IGC BOMBYX MORI CY ANI (Cytoplasmic)
+gggggcgtagctcagatggtagagcgctcgcttagcatgcgagaggtacc
+gggatcgatacccggcgcctccacca
+> RA9990 IGC HUMAN CY ANI (Cytoplasmic)
+gggggattagctcaaatggtagagcgctcgcttagcatgcgagaggtagc
+gggatcgatgcccgcatcctccacca
+> RA9991 IGC HUMAN CY ANI (Cytoplasmic)
+ggggaattagctcaaatggtagagcgctcgcttagcatgcgagaggtagc
+gggatcgatgcccgcattctccacca
+> RC1140 GCA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcaacanggccaagcggctaaggcatgggtctgcaacaccctgatcatc
+ggttcgaatccgattgttgcctcca
+> RC1660 GCA E.COLI EUBACT (Eubacteria)
+ggcgcgttaacaaagcggttatgtagcggattgcaaatccgtctagtccg
+gttcgactccggaacgcgcctcca
+> RC6280 GCA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gctcgtatggcgcagtggtagcgcagcagattgcaaatctgttggtcctt
+agttcgatcctgagtgcgagctcca
+> RD1140 GUC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggccccanagcgaagttggttatcgcgcctccctgtcacggaggagatca
+cgggttcgagtcccgttggggtcgcca
+> RD1580 GUC THERMUS THERMOPHI. EUBACT (Eubacteria)
+ggccccgtggtgtagttggttaacacacccgcctgtcacgtgggagatcg
+cgggttcgagtcccgtcggggccgcca
+> RD1660 QUC E.COLI EUBACT (Eubacteria)
+ggagcggtagttcagtcggttagaatacctgcctgtcacgcagggggtcg
+cgggttcgagtcccgtccgttccgcca
+> RD6040 GUC EUGLENA GRACILIS CY SIN (Cytoplasmic)
+tcttcggtagtatagtggtaagtatgtccgcctgtcacgcggaagacacg
+ggttcaattcccggccggagagcca
+> RD6280 GUC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+tccgtgatagtttaatggtcagaatgggcgcttgtcgcgtgccagatcgg
+ggttcaattccccgtcgcggagcca
+> RD7920 8UC XENOPUS LAEVIS CY ANI (Cytoplasmic)
+tcctcgttggtatagtggtgagtatccccgcctgtcacgcgggagaccgg
+ggttcaattccccgacggggagcca
+> RD9160 GUC RAT ASCIT. HEPATOM CY ANI (Cytoplasmic)
+atcctcgttagtatagtggtgagtatccccgctcgtcacgcgggagaccg
+gggttcgattccccgacggggagcca
+> RD9161 8UC RAT LIVER CY ANI (Cytoplasmic)
+tcctcgttagtatagtggtgagtatccccgctcgtcacgcgggagaccgg
+ggttcgattccccgacggggagcca
+> RD9220 8UC RABBIT LIVER CY ANI (Cytoplasmic)
+tcccgtctagtatagtggtgagtatatccgcctgtcacgcgggaggaccg
+gggttcgaatccccggacgggagcca
+> RD9280 8UC BOVINE LIVER CY ANI (Cytoplasmic)
+ggtgccgtagcgtagtggcancgngactctctgtcaaagagtgggacntg
+agttcgatactcaacggcaccgcca
+> RE1140 !UC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcctgttggtgaagcggttaacacacacggttttcatccgtggacacac
+gggttcgaaccccgtacaggctacca
+> RE1660 SUC E.COLI EUBACT (Eubacteria)
+gtccccttcgtctagaggcccaggacaccgccctttcacggcggtaacag
+gggttcgaatcccctgggggacgcca
+> RE1661 SUC E.COLI EUBACT (Eubacteria)
+gtccccttcgtctagaggcccaggacaccgccctttcacggcggtaacag
+gggttcgaatcccctaggggacgcca
+> RE1662 SUC E.COLI EUBACT (Eubacteria)
+gtccccttcgtctagaggccaggacaccgccctttcacggcggtaacagg
+ggttcgaatcccctaggggacgcca
+> RE2140 NUC SYNECHOCYSTIS SP. EUBACT (Eubacteria)
+gcccccatcgtctagaggcctaggacacctccctntcacggaggcgacag
+ggattcgaattcccttgggggtacca
+> RE6280 3UC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+tccgatatagtgtaacggctatcacatcacgctttcaccgtggagaccgg
+ggttcgactccccgtatcggagcca
+> RE6320 3UC SCHIZOSACCHA. POM. CY SIN (Cytoplasmic)
+tccgttgtggtccaacggctaggattcgtcgctttcaccgacgggagcgg
+ggttcgactccccgcaacggagcca
+> RE6780 UPC HORDEUM VULGARE CY PLA (Cytoplasmic)
+tccgtcgtagtctaggtggttaggatactcggctttcacccgagagaccc
+gggttcaagtcccggcgacggaacca
+> RE6781 CPC HORDEUM VULGARE CY PLA (Cytoplasmic)
+tccgtcgtagtctaggtggttaggatactcggctctcacccgagagaccc
+gggttcgagtcccggcgacggaacca
+> RE6940 CUC LUPINUS LUTEUS CY PLA (Cytoplasmic)
+tccgttgtagtctagttggtcaggatattcggctctcacccgaaagaccc
+gggttcaagtcccggcgacggaacca
+> RE7740 2UC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+tcccatatggtctagtggctaggatatctggctttcacccagaaggcccg
+ggttcgattcccggtatgggaacca
+> RE8100 CUC MOUSE CY ANI (Cytoplasmic)
+tccctggtggtctagtggttaggattcggcgctctcaccgccgcggcccg
+ggttcgattcccggtcagggaacca
+> RE9160 3UC RAT LIVER CY ANI (Cytoplasmic)
+tcccacatggtctagcggttaggattcctggttttcacccaggcggcccg
+ggttcgactcccggtgtgggaacca
+> RE9990 CUC HUMAN CY ANI (Cytoplasmic)
+tccctggtggtctagtggttaggattcggcgctctcaccgccgcggcccg
+ggttcgattcccggtcagggaacca
+> RF1140 GAA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggtcgtgtagctcagtcggtagagcagcagactgaagctctgcgtgtcgg
+cggttcaattccgtccacgaccacca
+> RF1460 #AA BACILLUS STEARO. EUBACT (Eubacteria)
+ggctcggtagctcagtcggtagagcaaaggactgaaaatccttgtgtcgg
+cggttcgattccgtcccgagccacca
+> RF1540 #AA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggctcggtagctcagttggtagagcaacggactgaaaatccgtgtgtcgg
+cggttcgattccgtcccgagccacca
+> RF1580 GAA THERMUS THERMOPHI. EUBACT (Eubacteria)
+gccgaggtagctcagttggtagagcatgcgactgaaaatcgcagtgtcgg
+cggttcgattccgctcctcggcacca
+> RF1660 GAA E.COLI EUBACT (Eubacteria)
+gcccggatagctcagtcggtagagcaggggattgaaaatccccgtgtcct
+tggttcgattccgagtccgggcacca
+> RF2020 GAA RHODOSPIRIL. RUB. EUBACT (Eubacteria)
+gcccgggtagctcagctggtagagcacgtgactgaaaatcacggtgtcgg
+tggttcgactccgcccccgggcacca
+> RF2060 GAA AGMENELLUM QUADR. EUBACT (Eubacteria)
+gccaggatagcncagttggtagagcagaggactgaaaatcctcgtgtcgg
+cggttcaattccgcctcccggcacca
+> RF6040 #AA EUGLENA GRACILIS CY SIN (Cytoplasmic)
+gccgacttagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggagtcggcacca
+> RF6120 GAA SCENEDESMUS OBLIQ. CY SIN (Cytoplasmic)
+ggcttgatagctcagctgggagagcgttagactgaagatctacaggnccc
+cagttcgatcctgggtcaggccacca
+> RF6200 #AA NEUROSPORA CRASSA CY SIN (Cytoplasmic)
+gcgggtttagctcagttgggagagcgtcagactgaagatctgaaggtcgt
+gtgttcgatccacacaaaccgcacca
+> RF6280 #AA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcggatttagctcagttgggagagcgccagactgaagatctggaggtcct
+gtgttcgatccacagaattcgcacca
+> RF6281 #AA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcggacttagctcagttgggagagcgccagactgaagatctggaggtcct
+gtgttcgatccacagagttcgcacca
+> RF6320 #AA SCHIZOSACCHA. POM. CY SIN (Cytoplasmic)
+gtcgcaatggtgtagttgggagcatgacagactgaagatctgttggncat
+cggttcgatcccggtttgtgacacca
+> RF6780 #AA HORDEUM VULGARE CY PLA (Cytoplasmic)
+gcggggatagctcagttgggagagcgtcagactgaagatctgaaggtcgc
+gtgttcgatccacgctcaccgcacca
+> RF6820 #AA WHEAT GERM CY PLA (Cytoplasmic)
+gcggggatagctcagttgggagagcgtcagactgaagatctgaaggtcgc
+gtgttcgatccacgctcaccgcacca
+> RF6860 #AA BRASSICA NAPUS CY PLA (Cytoplasmic)
+gcggggatagctcagttgggagagcgtcagactgaagatctgaaggtcgc
+gtgttcgatccacgctcaccgcacca
+> RF6940 #AA LUPINUS LUTEUS CY PLA (Cytoplasmic)
+gcggggatagctcagttgggagagcgtcagactgaagatctgaaggtcac
+gtgttcgatccacgttcaccgcacca
+> RF7020 #AA PISUM SATIVUM CY PLA (Cytoplasmic)
+gcggggatagctcagttgggagagcgtcagactgaagatctgaaggtcgc
+gtgttcgatccacgctcaccgcacca
+> RF7680 #AA BOMBYX MORI CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcaatcccgggtttcggcacca
+> RF7681 #AA BOMBYX MORI CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggcacca
+> RF7740 #AA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+cggttcaatcccgggtttcggcacca
+> RF7920 #AA XENOPUS LAEVIS CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggcacca
+> RF8100 #AA MOUSE E. ASC. TUM. CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggcacca
+> RF8101 #AA MOUSE LIVER CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggcacca
+> RF8102 ;AA MOUSE NEUROBLASTOM CY ANI (Cytoplasmic)
+agccgaaatagctcagttgggagagcgttagactgaagatctaaaggtcc
+ctggttcgatcccgggtttcggcacca
+> RF9220 #AA RABBIT LIVER CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggcacca
+> RF9280 #AA BOVINE LENS CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggcacca
+> RF9281 #AA BOVINE LENS CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcaatcccgggtttcggcacca
+> RF9340 #AA CALF LIVER CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggcacca
+> RF9990 #AA HUMAN PLACENTA CY ANI (Cytoplasmic)
+gccgaaatagctcagttgggagagcgttagactgaagatctaaaggtccc
+tggttcgatcccgggtttcggcacca
+> RG1140 UCC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gcaggtgnagtttaatggtagaacttcagccttccaagctgattgtgagg
+gttcgattcccttcacctgctcca
+> RG1180 UCC MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+gcaggtgtagtttaatggcagaacttcagccttccaagctgattgtgagg
+gttcgattcccttcacctgctcca
+> RG1310 CCC STREPTOMYCES COEL. EUBACT (Eubacteria)
+gcgggtgtagttcaatggtagaacatcagcttcccaagctgagagcgcga
+gttcgattctcgtcacccgctcca
+> RG1380 UCC STAPHYLOCOC. EPID. EUBACT (Eubacteria)
+gcgggagtatttcaacttttagaatacgttccttcccggaacgagatata
+ggtgcaaatcctatcttccgctcca
+> RG1381 UCC STAPHYLOCOC. EPID. EUBACT (Eubacteria)
+gcgggagtagttcaattttagaacacattccttcccggaatgaggtatag
+gtgcaagtcctatcttccgctcca
+> RG1540 !CC BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcgggtgtagtttagtggtaaaacctcagccttccaagctgatgtcgtga
+gttcgattctcatcacccgctcca
+> RG1660 CCC E.COLI EUBACT (Eubacteria)
+gcgggcgtagttcaatggtagaacgagagcttcccaagctctatacgagg
+gttcgattcccttcgcccgctcca
+> RG1661 GCC E.COLI EUBACT (Eubacteria)
+gcgggaatagctcagttggtagagcacgaccttgccaaggtcggggtcgc
+gagttcgagtctcgtttcccgctcca
+> RG1662 NCC E.COLI EUBACT (Eubacteria)
+gcgggcatcgtataatggctattacctcagcctnccaagctgatgatgcg
+ggttcgattcccgctgcccgctcca
+> RG1700 CCC SALMONELLA TYPHI. EUBACT (Eubacteria)
+gcgggcgtagttcaatggtagaacgagagcttcccaagctctatacgagg
+gttcgattcccttcgcccgctcca
+> RG1701 NCC SALMONELLA TYPHI. EUBACT (Eubacteria)
+gcgggcatcgtataatggctattacctcagcctnccaagctgatgatgcg
+ggttcgattcccgctgcccgctcca
+> RG6280 GCC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcgcaagtggtttagtggtaaaatccaacgttgccatcgttgggccccgg
+ttcgattccgggcttgcgcacca
+> RG6281 .CC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gggcggttagtgtagtggttatcatcccaccctnccaaggtggggacacg
+ggttcgattctcgtaccgctcacca
+> RG6820 GCC WHEAT GERM CY PLA (Cytoplasmic)
+gcaccagtggtctagtggtagaatagtaccctgccacggtacagacccgg
+gttcgattcccggctggtgcacca
+> RG6940 GCC LUPINUS LUTEUS CY PLA (Cytoplasmic)
+gcaccagtggtctagtggtagaatagtaccctgccacggtacagacccgg
+gttcgattcccggctggtgcacca
+> RG7680 GCC BOMBYX MORI CY ANI (Cytoplasmic)
+gcatcggtggttcagtggtagaatgctcgcctgccacgcgggcggcccgg
+gttcgattcccggccgatgcacca
+> RG7681 ,CC BOMBYX MORI CY ANI (Cytoplasmic)
+gcgttggtggtgtaatggtcagcatagttgccttccaagcagttgatccg
+ggttcgattcccggccaacgcacca
+> RG9990 CCC HUMAN PLACENTA CY ANI (Cytoplasmic)
+gcgccgctggtgtagtggtatcatgcaagattcccattcttgcgacccgg
+gttcgattcccgggcggcgcacca
+> RG9991 GCC HUMAN PLACENTA CY ANI (Cytoplasmic)
+gcattggtggttcagtggtagaattctcgcctgccacgcgggaggcccgg
+gttcgattcccggccaatgcacca
+> RH1140 GUK MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcgtaggtggtgaagtggttaacacatcaggttgtggctctgacatacg
+cgggttcgatccccgttctacgcccca
+> RH1660 QUG E.COLI EUBACT (Eubacteria)
+ggtggctatagctcagttggtagagccctggattgtgattccagttgtcg
+tgggttcgaatcccattagccacccca
+> RH1700 QUG SALMONELLA TYPHI. EUBACT (Eubacteria)
+ggtggctatagctcagttggtagagccctggattgtgattccagttgtcg
+tgggttcgaatcccattagccacccca
+> RH6280 GUG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggccatcttagtatagtggttagtacacaacattgtggctgttgaaaccc
+tggttcgattctaggaggtggcacca
+> RH6281 GUG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggccatcttagtatagtggttagtacacatcgttgtggccgatgaaaccc
+tggttcgattctaggagatggcacca
+> RH6940 GUG LUPINUS LUTEUS CY PLA (Cytoplasmic)
+ggtggctgtagtttagtggttagaacacaacgttgtggccgttgaaacct
+gggttcgaatcccagcagccacacca
+> RH7740 GUG DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ggccgtgatcgtctagtggttaggaccccacgttgtggccgtggtaaccc
+aggttcgaatcctggtcacggcacca
+> RH9460 QUG SHEEP LIVER CY ANI (Cytoplasmic)
+ggccgtgatcgtatagtggttagtactctgcgttgtggccgcagcaacct
+cggttcgaatccgagtcacggcacca
+> RH9990 GUG HUMAN HELA CELLS CY ANI (Cytoplasmic)
+ggccgtgatcgtatagtggttagtactctgcgttgtggccgcagcaacct
+cggttcgaatccgagtcacggcacca
+> RI1140 }AU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggaccttnagctcagttggttagagcatccggctcataaccggacggtca
+ttggttcaagtccaataaggtccacca
+> RI1141 GAU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+cggaatatagctcagctggttagagcattccgctgataacggagaggtcg
+ttggttcaagtccaattattccgacca
+> RI1180 GAU MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+cggaatatagctcagctggttagagcattccgctgataacggagaggtcg
+ttggttcaagtccaattattccgacca
+> RI1580 GAU THERMUS THERMOPHI. EUBACT (Eubacteria)
+gggcgattagctcagctggttagagcgcacgcctgataagcgtgaggtcg
+gtggttcaagtccaccatcgcccacca
+> RI1660 GAU E.COLI EUBACT (Eubacteria)
+aggcttgtagctcaggtggttagagcgcacccctgataagggtgaggtcg
+gtggttcaagtccactcaggcctacca
+> RI1661 GAU E.COLI EUBACT (Eubacteria)
+aggcttgtagctcaggtggttagagcgcacccctgataagggtgaggtcg
+gtggttcaagtccactcaggcctacca
+> RI1662 }AU E.COLI EUBACT (Eubacteria)
+ggccccttagctcagtggttagagcaggcgactcataatcgcttggtcgc
+tggttcaagtccagcaggggccacca
+> RI6280 IAU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggtctcttggcccagttggttaaggcaccgtgctaataacgcggggatca
+gcggttcgatcccgctagagaccacca
+> RI6360 IAU TORULOPSIS UTILIS CY SIN (Cytoplasmic)
+ggtcccttggcccagttggttaaggcgtggtgctaataacgccaagatca
+gcagttcgatcctgctagggaccacca
+> RI6940 IAU LUPINUS LUTEUS CY PLA (Cytoplasmic)
+ggcccattagcccagttggttaaggcgtggtgctaataacgccgaagtca
+gcagttcgatcctgctatgggccacca
+> RI7680 IAU BOMBYX MORI CY ANI (Cytoplasmic)
+ggcccattagctcagttggtnagagcgtcgtgctaataacgcgaaggtcg
+cgggttcgatcccctcatgggccacca
+> RI8100 IAU MOUSE CY ANI (Cytoplasmic)
+ggccggttagctcagttggttagagcgtggtgctaataacgccaaggtcg
+cgggttcgatccccgtacgggccacca
+> RK1140 CUU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gtctgattagcgcaactggcagagcaactgactcttaatcagtgggttgt
+gggttcgattcccacatcaggcacca
+> RK1141 !UU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gactcgttagctcagccggtagagcaactggcttttaaccagtgggtccg
+gggttcgaatccccgacgagtcacca
+> RK1540 $UU BACILLUS SUBTILIS EUBACT (Eubacteria)
+gagccattagctcagttggtagagcatctgacttttaatcagagggtcga
+aggttcgagtccttcatggctcacca
+> RK1541 $UU BACILLUS SUBTILIS EUBACT (Eubacteria)
+gagccattagctcagttggtagagcatctgacttttaatcagagggtcga
+aggttcgagtccttcatggctcacca
+> RK1660 SUU E.COLI EUBACT (Eubacteria)
+gggtcgttagctcagttggtagagcagttgacttttaatcaattggtcgc
+aggttcgaatcctgcacgacccacca
+> RK6280 CUU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gccttgttggcgcaatcggtagcgcgtatgactcttaatcataaggttag
+gggttcgagccccctacagggctcca
+> RK6281 )UU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+tccttgttagctcagttggtagagcgttcggcttttaaccgaaatgtcag
+gggttcgagccccctatgaggagcca
+> RK6820 CUU WHEAT GERM CY PLA (Cytoplasmic)
+gcccgtctagctcagttggtagagcgcaaggctcttaaccttgtggtcgt
+gggttcgagccccacggttggcgcca
+> RK7740 CUU DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcgcca
+> RK7741 )UU DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcccggatagctcagtcggtagagcattggacttttaatccaagggtcca
+gggttcaagtccctgttcgggcgcca
+> RK8100 CUU MOUSE FIBROB. SV 4 CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcgcca
+> RK8101 CUN MOUSE CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgggactctnaatcccagggtcgt
+gggttcgagccccacgttgggcgcca
+> RK9160 CUN RAT LIVER CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactctnaatctcagggtcgt
+gggttcgagccccacgttgggcgcca
+> RK9161 CUN RAT LIVER CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgggactctnaatcccagggtcgt
+gggttcgagccccacgttgggcgcca
+> RK9162 3UU RAT LIVER CY ANI (Cytoplasmic)
+gcccggatagctcagtcggtagagcatcagacttttaatctgagggtcca
+gggttcaagtccctgttcgggcgcca
+> RK9220 CUU RABBIT LIVER CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgggactcttaatcccagggtcgt
+gggttcgagccccacgttgggcgcca
+> RK9221 CUU RABBIT LIVER CY ANI (Cytoplasmic)
+gcccggctagctcagtcggtagagcatgagactcttaatctcagggtcgt
+gggttcgagccccacgttgggcgcca
+> RK9222 3UU RABBIT LIVER CY ANI (Cytoplasmic)
+gcccggatagctcagtcggtagagcatcagacttttaatctgagggtcca
+gggttcaagtccctgttcgggcgcca
+> RL1140 BAA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gcctttttggcggaattggcagacgcattagactcaaaatctaacgaaga
+aattcgtatcggttcgaatccgataaagggcacca
+> RL1141 )AA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ccccaagnggcggaataggtagacgcattggacttaaaatccaacgggct
+taatatcctgtgccggttcaagtccggccttggggacca
+> RL1142 UAG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gggggatnggcggaattggcagacgcactagacttaggatctagcgtctt
+tgacgtaagggttcaagtcccttatcccccacca
+> RL1460 BAA BACILLUS STEARO. EUBACT (Eubacteria)
+gccgatgtggcggaattggcagacgcgcacgactcaaaatcgtgtgggct
+ttgcccgtgtgggttcgactcccaccatcggcacca
+> RL1540 CAG BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcgggtgtgcgggaattggtagaccggctagattcaggatctagggtctt
+tatggacctgagggttcaagtcccttcacccgcacca
+> RL1660 HAA E.COLI EUBACT (Eubacteria)
+gcccggatggtggaatcggtagacacaagggattaaaaatccctcggcgt
+tcgcgctgtgcgggttcaagtcccgctccgggtacca
+> RL1661 CAG E.COLI EUBACT (Eubacteria)
+gcgaaggtggcggaattggtagacgcgctagcttcaggtgttagtgtcct
+tacggacgtgggggttcaagtcccccccctcgcacca
+> RL1662 GAG E.COLI EUBACT (Eubacteria)
+gccgaggtggtggaattggtagacacgctaccttgaggtggtagtgccca
+atagggcttacgggttcaagtcccgtcctcggtacca
+> RL1700 CAG SALMONELLA TYPHI. EUBACT (Eubacteria)
+gcgaaggtggcggaattggtagacgcgctagcttcaggtgttagtgtcct
+tacggacgtgggggttcaagtcccccccctcgcacca
+> RL2020 CAA RHODOSPIRIL. RUB. EUBACT (Eubacteria)
+gcctttgtagcggaatggtaacgcggcagactcaaaatctgctttggtaa
+cccaggtggtagttcgactctccccaaaggcacca
+> RL2100 CAA ANACYSTIS NIDULANS EUBACT (Eubacteria)
+gggcaagtggcggaattggtagacgcagcagactcaaaatctgccgctag
+cgatagtgtgtgggttcgagtcccaccttgcccacca
+> RL2101 CAG ANACYSTIS NIDULANS EUBACT (Eubacteria)
+gcggaactggcggaattggtagacgcgctagattcaggttctagtggttt
+cacgactgtccgggttcaagtcccgggttccgcacca
+> RL6280 ?AA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggttgtttggccgagcggtctaaggcgcctgattcaagctcaggtatcgt
+aagatgcaagagttcgaatctcttagcaaccacca
+> RL6281 UAG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gggagtttggccgagtggtttaaggcgtcagatttaggctctgatatctt
+cggatgcaagggttcgaatcccttagctctcacca
+> RL6282 _AA SACCHARMOYCES CER. CY SIN (Cytoplasmic)
+ggagggttggccgagtggtctaaggcggcagacttaagatctgttggacg
+gttgtccgcgcgagttcgaacctcgcatccttcacca
+> RL6360 BAA TORULOPSIS UTILIS CY SIN (Cytoplasmic)
+ggatctttggccgagcggtttaaggcgctcgactcaagatcgagtatcgt
+aagatgcatgagttcgaatctcataggatccacca
+> RL6370 BAA CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+ggccgtttggccgagtggtctaaggcgtctgactcaagatcagatctcgt
+aagaggcgtgtgttcgaaccacacagcggtcacca
+> RL6371 IAG CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+ggttctctggccgagtggtctaaggcgcatggttaaggtccatgtctctt
+cggaggcgcgagttcgaacctcgcgggaatcacca
+> RL6372 IAG CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+ggctctctggccgagtggtctaaggcgctagggtaaggtcctagtctctt
+cggaggcgcgagttcgaacctcgcgggagtcacca
+> RL6980 .AA PHASEOLUS VULGARIS CY PLA (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgccagactnaagttctggtcttcg
+agagagggcgtgggttcaaatcccacttctgacacca
+> RL6981 .AA PHASEOLUS VULGARIS CY PLA (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgccagactnaagttctggtcttcg
+aaagagggcgtgggttcaaatcccacttctgacacca
+> RL6982 .AG PHASEOLUS VULGARIS CY PLA (Cytoplasmic)
+gatagtttggccgagtggtctaaggcgccagattnaggctctggtccgaa
+angggcgtgggttcaaatcccacagctgtcacca
+> RL6983 .AA PHASEOLUS VULGARIS CY PLA (Cytoplasmic)
+gctggtttggccgagaggttaaggcggaagactnaagatcttctgcagtc
+aactgcgcatgggttcgaaccccatagccagcacca
+> RL7070 .AA SOLANUM TUBEROSUM CY PLA (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgccagactnaagttctggtcttcg
+taagagggcgtgggttcaaatcccacttctgacacca
+> RL7080 NAA CUCUMIS SATIVUS CY PLA (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgccagactnaagttctggtcctct
+aaggagggcgtgggttcaaatcccacttctgacacca
+> RL7560 IAG CAENORHABDI. ELEG. CY ANI (Cytoplasmic)
+ggagagatggccgagcggtctaaggcgctggtttaaggcaccagtccctt
+cgggggcgtgggttcgaatcccactctcttcacca
+> RL9160 <AA RAT MORRIS HEPATOM CY ANI (Cytoplasmic)
+agtcaggatggccgagtggtctaaggcgccagactcaagttctggntccg
+aatggagcgtgggttcgaatcccacttctgacacca
+> RL9161 <AA RAT MORRIS HEPATOM CY ANI (Cytoplasmic)
+agtcaggatggccgagtggtctaaggcgccagactcaagttctggntccg
+tatggagcgtgggttcgaatcccacttctgacacca
+> RL9280 IAG BOVINE LIVER CY ANI (Cytoplasmic)
+ggtagcgtggccgagcggtctaaggcgctggattaaggctccagtctctt
+cgggggcgtgggttcgaatcccaccgctgccacca
+> RL9400 IAG COW MAMMARY GLAND CY ANI (Cytoplasmic)
+ggtagcgtggccgagcggtctaaggcgctggattaaggctccagtctctt
+cgggggcgtgggttcgaatcccaccgctgccacca
+> RL9401 CAG COW MAMMARY GLAND CY ANI (Cytoplasmic)
+gtcaggatggccgagcggttcaaggcgctgcgttcaggncgcagtctccc
+tggaggcgtgggttcgaatcccacttctgacacca
+> RL9990 .AA HUMAN HELA-CELLS CY ANI (Cytoplasmic)
+gtcaggatggccgagtggtctaaggcgccagactnaagttctggtctccg
+gatggagcgtgggttcgaatcccacttctgacacca
+> RM1140 CAU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcggggnagctcagttggttagagcgttcggttcatacccgaaaggtcg
+agagttcaaatctctcccccgctacca
+> RM1540 CAU BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggcggtgtagctcagcggctagagcgtacggttcatacccgtgaggtcgg
+gggttcgatcccctccgccgctacca
+> RM1580 CAU THERMUS THERMOPHI. EUBACT (Eubacteria)
+cgcggggtggagcagcctggtagctcgtcgggctcataacccgaaggtcg
+cgggttcaaatcccgcccccgcaacca
+> RM1660 MAU E.COLI EUBACT (Eubacteria)
+ggctacgtagctcagttggttagagcacatcactcataatgatggggtca
+caggttcgaatcccgtcgtagccacca
+> RM6280 CAU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcttcagtagctcagtaggaagagcgtcagtctcataatctgaaggtcga
+gagttcgaacctctcctggagcacca
+> RM6820 BAU WHEAT GERM CY PLA (Cytoplasmic)
+ggggtggtggcgcagttggctagcgcgtaggtctcataatcctgaggtcg
+agagttcgagcctctctcaccccacca
+> RM6940 BAU LUPINUS LUTEUS CY PLA (Cytoplasmic)
+ggggtggtggcgcagttggctagcgcgtaggtctcataatcctgaggtcg
+agagttcgagcctctctcaccccacca
+> RM8100 BAU MOUSE MYELOMA CY ANI (Cytoplasmic)
+gcctcgttagcgcagtaggtagcgcgtcagtctcataatctgaaggtcgt
+gagttcgatcctcacacggggcacca
+> RM9220 BAU RABBIT LIVER CY ANI (Cytoplasmic)
+gcctcgttagcgcagtaggtagcgcgtcagtctcataatctgaaggtcgt
+gagttcgatcctcacacggggcacca
+> RM9990 BAU HUMAN HELA-CELLS CY ANI (Cytoplasmic)
+gcctcgttagcgcagtaggtagcgcgtcagtctcataatctgaaggtcgt
+gagttcgatcctcacacggggcacca
+> RN1140 GUU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggcttttnagctcagcaggtagagcaaccggctgttaaccggtttgtcac
+aggttcgagccctgtaaaagccgcca
+> RN1660 QUU E.COLI EUBACT (Eubacteria)
+tcctctgtagttcagtcggtagaacggcggactgttaatccgtatgtcac
+tggttcgagtccagtcagaggagcca
+> RN6280 GUU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gactccatggccaagttggttaaggcgtgcgactgttaatcgcaagatcg
+tgagttcaaccctcactggggtcgcca
+> RN6940 ;UU LUPINUS LUTEUS CY PLA (Cytoplasmic)
+gcctcagtagctcagtggttagagcggtcggctgttaaccgataggtcgt
+aggttcgagccctacttggggcgcca
+> RN9160 QUU RAT LIVER CY ANI (Cytoplasmic)
+gtctctgtggcgcaatcggttagcgcgttcggctgttaaccgaaaggttg
+gtggntcgagcccacccagggacgcca
+> RN9161 GUU RAT W. 256 SARCOMA CY ANI (Cytoplasmic)
+gtctctgtggcgcaatcggttagcgcgttcggctgttaaccgaaaggttg
+gtggntcgagcccacccagggacgcca
+> RN9280 QUU BOVINE LIVER CY ANI (Cytoplasmic)
+gtctctgtggcgcaatcggttagcgcgttcggctgttaaccgaaaggttg
+gtggntcgagcccacccagggacgcca
+> RN9990 QUU HUMAN LIVER/PLAC. CY ANI (Cytoplasmic)
+gtctctgtggcgcaatcggttagcgcgttcggctgttaaccgaaaggttg
+gtggntcgagcccacccagggacgcca
+> RN9991 .UG HUMAN CY ANI (Cytoplasmic)
+ggtcccatggtgtaatggttagcactctggactntgaatccagcgatccg
+agttcaaatctcggtgggacctcca
+> RP1140 UGG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+cgggaagtggctcagtttggtagagcattcggtttgggaccgaagggncg
+caggttcaaatcctgtcttcccgacca
+> RP1180 UGG MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+cgggaagtggctcagtttggtagagcattcggtttgggaccgaagggtcg
+caggttcaaatcctgtcttcccgacca
+> RP1540 5GG BACILLUS SUBTILIS EUBACT (Eubacteria)
+cgggaagtagctcagcttggtagagcacatggtttgggaccatggggtcg
+caggttcgaatcctgtcttcccgacca
+> RP1700 CGG SALMONELLA TYPHI. EUBACT (Eubacteria)
+cggtgattggcgcagcctggtagcgcacttcgttcgggacgaaggggtcg
+gaggttcgaatcctctatcaccgacca
+> RP1701 GGG SALMONELLA TYPHI. EUBACT (Eubacteria)
+cggcacgtagcgcagcctggtagcgcaccgtcctggggttgcgggggtcg
+gaggttcaaatcctctcgtgccgacca
+> RP1702 VGG SALMONELLA TYPHI. EUBACT (Eubacteria)
+cggcgagtagcgcagcttggtagcgcaactggtttgggaccagtgggtcg
+gaggttcgaatcctctctcgccgacca
+> RP6280 NGG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gggcgtgtggtctagtggtatgattctcgcttngggtgcgagaggccctg
+ggttcaattcccagctcgcccccca
+> RP6281 NGG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gggcgtgtggtctagtggtatgattctcgcttngggtgcgagaggccctg
+ggttcaattcccagctcgcccccca
+> RP6360 &GG TORULOPSIS UTILIS CY SIN (Cytoplasmic)
+ggccgcgtggtctagtggtatgatactcgctttgggtgtgagtggtccag
+ggttcaattccctgctcggccccca
+> RP6940 IGG LUPINUS LUTEUS CY PLA (Cytoplasmic)
+gggacattggtctagtggtatgattctcgcttagggtgcgagaggtcccg
+agttcgattctcggatgtcccccca
+> RQ1140 !UG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+tgggctanagccaagcggtaaggcaagggactttgactccctcatgcgcc
+ggttcgaatcctgctagcccaacca
+> RQ1660 CUG E.COLI EUBACT (Eubacteria)
+tggggtatcgccaagcggtaaggcaccggattctgattccggcattccga
+ggttcgaatcctcgtaccccagcca
+> RQ1661 NUG E.COLI EUBACT (Eubacteria)
+tggggtatcgccaagcggtaaggcaccggtttntgataccggcattccct
+ggttcgaatccaggtaccccagcca
+> RQ6080 CUA TETRAHYMENA THERM. CY SIN (Cytoplasmic)
+ggttctatagtatagcgcttagtactggggactctaaatcccttgacctg
+ggttcgaatcccagtaggacctcca
+> RQ6081 JUA TETRAHYMENA THERM. CY SIN (Cytoplasmic)
+ggttccatagtatagtggttagtactggggactttaaatcccttgacctg
+ggttcgaatcccagtgggacctcca
+> RQ6082 JUG TETRAHYMENA THERM. CY SIN (Cytoplasmic)
+ggttgtatggtgtagcggttagcaccgaggactttgaatcctctgacctg
+ggttcgaatcccagtacgacctcca
+> RQ8100 CUG MOUSE LIVER CY ANI (Cytoplasmic)
+ggttccatggtgtaatggttagcactctggactctgaatccagcgatccg
+agttcaaatctcggtggaacctcca
+> RQ8101 JUG MOUSE LIVER CY ANI (Cytoplasmic)
+ggtcccatggtgtaatggttagcactctggactttgaatccagcgatccg
+agttcaaatctcggtgggacctcca
+> RQ9160 CUG RAT LIVER CY ANI (Cytoplasmic)
+ggttccatggtgtaatggttagcactctggactctgaatccagcgatccg
+agttcaaatctcggtggaacctcca
+> RQ9280 CUG BOVINE LIVER CY ANI (Cytoplasmic)
+ggttccatggtgtaatggttagcactctggactctgaatccagcgatccg
+agttcaaatctcggtggaacctcca
+> RQ9990 NUG HUMAN CY ANI (Cytoplasmic)
+ggccccatggtgtaatggttagcactctggactntgaatccagcgatccg
+agttcaaatctcggtgggacctcca
+> RQ9991 NUG HUMAN CY ANI (Cytoplasmic)
+ggtcccatggtgtaatggttagcactctggactntgaatccagcgatccg
+agttcaaatctcggtgggacctcca
+> RR1140 ICG MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gcgcccgnagatcaattggatagatcgcttgactacggatcaaaaggttg
+ggggttcgagtccctccgggcgcacca
+> RR1141 !CU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gcccatgtagctcagtaggatagagcacgcgccttctaagcgtgaggtcg
+gaagttcgagccttctcgtgggcacca
+> RR1540 ICG BACILLUS SUBTILIS EUBACT (Eubacteria)
+gcgcccgtagctcaatggatagagcgtttgactacggatcaaaaggttag
+gggttcgactcccctcgggcgcgcca
+> RR1660 ICG E.COLI EUBACT -GCA (Eubacteria)
+gcatccgtagctcagctggtagagtactcggctacgaaccgagcggtcgg
+aggttcgaatcctcccggatgcacca
+> RR1661 ICG E.COLI EUBACT (Eubacteria)
+gcatccgtagctcagctggatagagtactcggctacgaaccgagcggtcg
+gaggttcgaatcctcccggatgcacca
+> RR1662 {CU E.COLI EUBACT (Eubacteria)
+gtcctcttagttaaatggatataacgagccccttctaagggctaattgca
+ggttcgattcctgcaggggacacca
+> RR1663 {CU E.COLI EUBACT (Eubacteria)
+gcgcccttagctcagttggatagagcaacgaccttctaagtcgtgggccg
+caggttcgaatcctgcagggcgcgcca
+> RR1664 CCG E.COLI EUBACT (Eubacteria)
+gcgcccgtagctcagctggatagagcgctgccctccggaggcagaggtct
+caggttcgaatcctgtcgggcgcgcca
+> RR6280 ICG SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ttcctcgtggcccaatggtcacggcgtctggctacgaaccagaagattcc
+aggttcaagtcctggcggggaagcca
+> RR6281 1CU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gctcgcgtggcgtaatggcaacgcgtctgacttctaatcagaagattatg
+ggttcgacccccatcgtgagtgcca
+> RR6282 1CU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcttgcgtggcgtaatggcaacgcgtctgacttctaatcagaagattatg
+ggttcgacccccatcgtgagtccca
+> RR6820 ICG TRITICUM AEST. CY PLA (Cytoplasmic)
+gactccgtggcccaatggataaggcgctggtctacgaaaccagagattct
+gggttcgatccccagcggagtcgcca
+> RR8100 ICG MOUSE LEUKEMIA CY ANI (Cytoplasmic)
+gggccagtggcgcaatggataacgcgtctgactacggatcagaagattct
+aggttcgactcctggctggctcgcca
+> RR8101 ICG MOUSE LEUKEMIA CY ANI (Cytoplasmic)
+gggccagtggcgcaatggataacgcgtctgactacggatcagaagattcc
+aggttcgactcctggctggctcgcca
+> RR9280 CCG BOVINE LIVER CY ANI (Cytoplasmic)
+gacccagtggcctaatggataaggcatcagcctccggagctggggattgt
+gggttcgagtcccatctgggtcgcca
+> RR9281 CCU BOVINE LIVER CY ANI (Cytoplasmic)
+gccccagtggcctaatggataaggcattggcctcctaagccagggattgt
+gggttcgagtcccatctggggtccca
+> RR9282 3CP BOVINE LIVER CY ANI (Cytoplasmic)
+ggctccgtggcgcaatggatagcgcattggacttctaattcaaaggttcc
+gggttcgagtcccggcggagtcgcca
+> RS1140 GCU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gggttaanactcaagttggtgaagaggacaccctgctaaggtgttaggtc
+ggtctccggcgcgagggttcgagtccctcttaacccgcca
+> RS1141 UGA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggaagatnacccaagtccggctgaagggatcggtcttgaaaaccgagagt
+cggggaaaccgagcgggggttcgaatccctcatcttccgcca
+> RS1180 UGA MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggaagattacccaagtccggctgaagggatcggtcttgaaaaccgagagt
+cggggaaacccgagcgggggttcgaatccctcatcttccgcca
+> RS1540 5GA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggaggaatacccaagtctggctgaagggatcggtcttgaaaaccgacagg
+gtgtcaaagcccgcgggggttcgaatccctcttcctccgcca
+> RS1541 GCU BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggagaagtactcaagtggctgaagaggcgcccctgctaagggtgttgtcg
+cgtaagcggcgcgagggttcaaatccctccttctccgcca
+> RS1542 GGA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggagagctgtccgagtggtcgaaggagcacgattggaaatcgtgtaggcg
+gtcaactccgtctcaagggttcgaatcccttgctctccgcca
+> RS1660 CGA E.COLI EUBACT (Eubacteria)
+ggagagatgccggagcggctgaacggaccggtctcgaaaaccggagtagg
+ggcaactctaccgggggttcaaatccccctctctccgcca
+> RS1661 GCU E.COLI EUBACT (Eubacteria)
+ggtgaggtggccgagaggctgaaggcgctcccctgctaagggagtatgcg
+gtcaaaagctgcatccggggttcgaatccccgcctcaccgcca
+> RS1662 GGA E.COLI EUBACT (Eubacteria)
+ggtgaggtgtccgagtggctgaaggagcacgcctggaaagtgtgtatacg
+gcaacgtatcgggggttcgaatccccccctcaccgcca
+> RS1663 GGA E.COLI EUBACT (Eubacteria)
+ggtgaggtgtccgagtggttgaaggagcacgcctggaaagtgtgtatacg
+gcaacgtatcgggggttcgaatccccccctcaccgcca
+> RS1664 VGA E.COLI EUBACT (Eubacteria)
+ggaagtgtggccgagcggttgaaggcaccggtcttgaaaaccggcgaccc
+gaaagggttccagagttcgaatctctgcgcttccgcca
+> RS6280 NGA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggcactatggccgagtggttaaggcgacagactngaaatctgttgggctc
+tgcccgcgctggttcaaatcctgctggtgtcgcca
+> RS6281 IGA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggcaacttggccgagtggttaaggcgaaagattagaaatcttttgggctc
+tgcccgcgcaggttcaaatcctgcagttgtcgcca
+> RS6282 IGA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggcaacttggccgagtggttaaggcgaaagattagaaatcttttgggctt
+tgcccgcgcaggttcgagtcctgcagttgtcgcca
+> RS6370 CAG CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+gacaccgtggcccagtggttacggcgttggacgcagaatccattgagctt
+gctcgcgcgggttcgaatcccgtcggtgtctcca
+> RS6371 &GA CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+ggtgcaatggccgagtggttaaggcgacggatttgaactccgttgggatt
+ctccctcgcaggttcgaatcctgtttgcatcgcca
+> RS6372 IGA CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+ggcatcttggccgagtggttaaggcgaaagattagaaatcttttgggctc
+tgcccgcgcaggttcgagtcctgcagatgtcgcca
+> RS6373 CGA CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+ggcaacttggccgagtggttaaggcgtgacactcgaaatgtcatgggttt
+acccgcgcaggttcgaatcctgcagttgtcgcca
+> RS6374 GCU CANDIDA CYLINDRA. CY SIN (Cytoplasmic)
+gttaatgtggcccgagtggttaaggcgcttccctgctaaggaagtgggct
+ctgcccgagcaggttcgaatcctgtcattaacgcca
+> RS6940 CGA LUPINUS LUTEUS CY PLA (Cytoplasmic)
+gtcagtatggccgagtggttaaggcgacagactcgaaatctgttgagatt
+tgcctggcagcggttcgaatccgcttactgacgcca
+> RS7040 IGA SPINACIA OLERACEA CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcatgactagaaatcatgtgggctt
+tgcccgcgcaggttcgaatcctgccgtccacgcca
+> RS7060 &GA NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+gtcgatatgtccgagtggttaaggagacagacttgaaatctgttgggctt
+cgcccgcgcaggttcgaaccctgctgtcgacgcca
+> RS7061 CGA NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+gtcgatatgtccgagtggttaaggagacagactcgaaatctgttgggctt
+tgcctgcgcaggttcgaatcctgctgtcgacgcca
+> RS7062 GCU NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+gtcgccttggccgagtggttaaggcgtgtgcctgctaagtacatggggtt
+tccccgcgagagttcgaatctctcaggcgacgcca
+> RS7063 IGA NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcatgactagaaatcatgtgggctt
+tgcccgcgcaggttcgaatcctgccgtccacgcca
+> RS7064 IGA NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+gtggacgtgccggagtggttatcgggcatgactagaaatcatgtgggctc
+tgcccgcgcaggttcgaatcctgccgtccacgcca
+> RS7740 GCU DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gacgaggtggccgagtggttaaggcgttggactgctaatccaatgtgctc
+tgcacgcgtgggttcgaatcccatcctcgtcgcca
+> RS7741 IGA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcagtcgtggccgagcggttaaggcgtctgactagaaatcagattccctc
+tgggagcgtaggttcgaatcctaccgactgcgcca
+> RS7742 CGA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gcagtcgtggccgagtggttaaggcgtctgactcgaaatcagattccctc
+tgggagcgtaggttcgaatcctaccggctgcgcca
+> RS9160 IGA RAT LIVER CY ANI (Cytoplasmic)
+gtagtcgtggccgagtggttaaggcgatggactagaaatccattggggtc
+tccccgcgcaggttcgaatcctgccgactacgcca
+> RS9161 GCU RAT LIVER CY ANI (Cytoplasmic)
+gacgaggtggccgagtggttaaggcgatggactgctaatccattgtgctc
+tgcacgcgtgggttcgaatcccatcctcgtcgcca
+> RS9162 IGA RAT MORRIS HEPATOM CY ANI (Cytoplasmic)
+agtagtcgtggccgagtggttaaggcgatggactagaaatccattggggt
+ctccccgcgcaggttcgaatcctgccgactacgcca
+> RS9991 UGA HUMAN CY ANI (Cytoplasmic)
+gtagtcgtggccgagtggttaaggcgatggacttgaaatccattggggtc
+tccccgcgcaggttcgaatcctgccgactacgcca
+> RT1140 AGU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gctgactnagctcagttggtagagcaattgactagtaatcaataggtcga
+aggttcaaatcctttagtcagcacca
+> RT1141 UGU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+gctgactnagctcagcaggcagagcaactgacttgtaatcagtaggtcgt
+aggttcgattcctatagtcagcacca
+> RT1180 UGU MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+gctgacttagctcagcaggcagagcaactgacttgtaatcagtaggtcgt
+aggttcgattcctatagtcagcacca
+> RT1540 5GU BACILLUS SUBTILIS EUBACT (Eubacteria)
+gccggtgtagctcaattggtagagcaactgacttgtaatcagtaggttgg
+gggttcaagtcctcttgccggcacca
+> RT1660 GGU E.COLI EUBACT (Eubacteria)
+gctgatatagctcagttggtagagcgcacccttggtaagggtgaggtcgg
+cagttcgaatctgcctatcagcacca
+> RT1661 GGU E.COLI EUBACT (Eubacteria)
+gctgatatggctcagttggtagagcgcacccttggtaagggtgaggtccc
+agttcgactctgggtatcagcacca
+> RT6280 IGU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcttctatggccaagttggtaaggcgccacactagtaatgtggagatcat
+cggttcaaatccgattggaagcacca
+> RT6281 IGU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gcttctatggccaagttggtaaggcgccacactagtaatgtggagatcgt
+cggttcaaatccgactggaagcacca
+> RT9280 IGU BOVINE LIVER CY ANI (Cytoplasmic)
+ggccctgtggctagctggtcaaagcgcctgtctagtaaacaggagatcct
+gggttcgaatcccagcggggcctcca
+> RV1140 UAC MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggagtgttagctcagctgggagagctcctgccttacaagcaggcggtcat
+aggttcaagtcctatacactccacca
+> RV1180 UAC MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+ggagtgtnagctcagctgggagagctcctgccttacaagcaggcggtcat
+aggttcaagtcctatacactccacca
+> RV1460 GAC BACILLUS STEARO. EUBACT (Eubacteria)
+gattccgtagctcagctgggagagcgccaccttgacagggtggaggtcgc
+tggttcgagcccagtcggaatcacca
+> RV1540 5AC BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggaggattagctcagctgggagagcatctgccttacaagcagagggtcgg
+cggttcgagcccgtcatcctccacca
+> RV1660 GAC E.COLI EUBACT (Eubacteria)
+gcgtccgtagctcagttggttagagcaccaccttgacatggtgggggtcg
+gtggttcgagtccactcggacgcacca
+> RV1661 GAC E.COLI EUBACT (Eubacteria)
+gcgttcatagctcagttggttagagcaccaccttgacatggtgggggtcg
+ttggttcgagtccaattgaacgcacca
+> RV1662 VAC E.COLI EUBACT (Eubacteria)
+gggtgattagctcagctgggagagcacctcccttacaaggagggggtcgg
+cggttcgatcccgtcatcacccacca
+> RV6280 IAC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggtttcgtggtctagtcggttatggcatctgcttaacacgcagaacgtcc
+ccagttcgatcctgggcgaaatcacca
+> RV6281 CAC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gttccaatagtgtagcggctatcacgttgccttcacacggcaaaggtccc
+gagttcgatcctcggttggaacacca
+> RV6282 &AC SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ggtccaatggtccagtggttcaagacgtcgcctttacacggcgaagatcc
+cgagttcgaacctcggttggatcacca
+> RV6360 IAC TORULOPSIS UTILIS CY SIN (Cytoplasmic)
+ggtttcgtggtctagttggtcatggcatctgcttaacacgcagaacgtcc
+ccagttcgatcctgggcgaaatcacca
+> RV6940 IAC LUPINUS LUTEUS CY PLA (Cytoplasmic)
+ggtttcgtggtgtagtggttatcacgtcagtctaacacactgaaggtctc
+cggttcgagtccgggcgaagccacca
+> RV7740 IAC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gtttccgtggtgtagcggttatcacatctgcctaacacgcagaaggcccc
+cggttcgatcccgggcggaaacacca
+> RV7741 CAC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+gtttccgtagtgtagcggttatcacgtgtgcttcacacgcacaaggtccc
+cggttcgaacccgggcgggaacacca
+> RV7742 NAC DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ggttccatagtgtagcggtnatcacgtctgcttnacacgcagaaggtctc
+cggttcgatcccggatggaaccacca
+> RV8100 IAC MOUSE MYELOMA CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggttatcacgttcgcctaacacgcgaaaggtccc
+cggttcgaaaccgggcggaaacacca
+> RV9160 IAC RAT ASCIT. HEPATOM CY ANI (Cytoplasmic)
+agtttccgtagtgtagtggttatcacgttcgcctaacacgcgaaaggtcc
+ccggttcgaaaccgggcggaaacacca
+> RV9161 .AC RAT LIVER CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggttatcacgttcgcctnacacgcgaaaggtccc
+cggttcgaaaccgggcggaaacacca
+> RV9220 IAC RABBIT LIVER CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggttatcacgttcgcctaacacgcgaaaggtccc
+cggttcgaaaccgggcggaaacacca
+> RV9990 .AC HUMAN PLACENTA CY ANI (Cytoplasmic)
+gtttccgtagtgtagtggttatcacgttcgcctnacacgcgaaaggtccc
+cggttcgaaaccgggcggaaacacca
+> RW1140 BCA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+aggagagtagttcaatggtagaacgtcggtctccaaaaccgagcgttgag
+ggttcgattcctttctctcctgcca
+> RW1141 )CA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+aggggcatagttcagtaggtagaacatcggtcttcaaaaccgagtgtcac
+gagttcgagtcttgttgcccctgcca
+> RW1250 NCA SPIROPLASMA CITRI EUBACT (Eubacteria)
+aggggtatagttcaatcggtagaacaccggactncaaatccgggtgttgt
+gggttcaagtcctgctacccctgcca
+> RW1251 CCA SPIROPLASMA CITRI EUBACT (Eubacteria)
+aggggtgtagtttaatggtagaacagcggtctccaacaccgtacgttgtg
+ggttcaagtcctgtcacccctgcca
+> RW1540 CCA BACILLUS SUBTILIS EUBACT (Eubacteria)
+aggggcatagtttaacggtagaacagaggtctccaaaacctccggtgtgg
+gttcgattcctactgcccctgcca
+> RW1660 CCA E.COLI EUBACT (Eubacteria)
+aggggcgtagttcaattggtagagcaccggtctccaaaaccgggtgttgg
+gagttcgagtctctccgcccctgcca
+> RW6280 BCA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+gaagcggtggctcaatggtagagctttcgactccaaatcgaagggttgca
+ggttcaattcctgtccgtttcacca
+> RW6820 BCA WHEAT GERM CY PLA (Cytoplasmic)
+gganccgtggcgcaattggtagcgcgtctgactccagatcagaaggttgc
+gtgttcgattcacgtcgggtccacca
+> RW7070 BCA NICOTIANATABACUM CY PLA (Cytoplasmic)
+ggatccgtggcgcaatggtagcgcgtctgactccagatcagaaggtngcg
+tgttcgattcacgtcgggttcacca
+> RW8040 BCA CHICKEN CY ANI (Cytoplasmic)
+gacctcgtggcgcaacggtagcgcgtctgactccagatcagaaggctgcg
+tgttcgaatcacgtcggggtcacca
+> RW9280 BCA BOVINE LIVER CY ANI (Cytoplasmic)
+gacctcgtggcgcaatggtagcgcgtctgactccagatcagaaggttgcg
+tgttcgaatcacgtcggggtcacca
+> RX1140 CAU MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+cgcggggtagagcagttggtagctcgccgggctcataacccggaggtcgc
+aggttcgagtcctgcccccgcaacca
+> RX1180 CAU MYCOPLASMA MYCOID. EUBACT (Eubacteria)
+cgcggggtagagcagttggtagctcgccgggctcataacccggaggccgc
+aggttcgagtcctgcccccgcaacca
+> RX1300 CAU STREPTOMYCES GRIS. EUBACT (Eubacteria)
+cgcggggtggagcagctcggtagctcgctgggctcataacccagaggtcg
+caggttcaaatcctgtccccgctacca
+> RX1420 CAU MYCOBAC. SMEG. EUBACT (Eubacteria)
+cgcggggtggagcagctcggtagctcgctgggctcataacccagaggtcg
+caggttcgaatcctgtccccgctacca
+> RX1540 CAU BACILLUS SUBTILIS EUBACT (Eubacteria)
+cgcggggtggagcagttcggtagctcgtcgggctcataacccgaaggtcg
+caggttcaaatcctgcccccgcaacca
+> RX1580 CAU THERMUS THERMOPHI. EUBACT (Eubacteria)
+cgcggggtggagcagcctggtagctcgtcgggctcataacccgaaggtcg
+ccggttcaaatccggcccccgcaacca
+> RX1581 CAU THERMUS THERMOPHI. EUBACT (Eubacteria)
+cgcggggtggagcagcctggtagctcgtcgggctcataacccgaaggtcg
+cgggttcaaatcccgcccccgcaacca
+> RX1660 CAU E.COLI EUBACT (Eubacteria)
+cgcggggtggagcagcctggtagctcgtcgggctcataacccgaagatcg
+tcggttcaaatccggcccccgcaacca
+> RX1661 CAU E.COLI EUBACT (Eubacteria)
+cgcggggtggagcagcctggtagctcgtcgggctcataacccgaaggtcg
+tcggttcaaatccggcccccgcaacca
+> RX2100 CAU ANACYSTIS NIDULANS EUBACT (Eubacteria)
+cgcggggtagagcagcctggtagctcgtcgggctcataacccgaaggtca
+gaggttcaaatcctctccccgccacca
+> RX6080 CAU TETRAHYMENA THERM. CY SIN (Cytoplasmic)
+agcagggtggcgaaatggaatcgcgttgggctcataactcaaaagtcaga
+ggatcgaaacctctctctgctacca
+> RX6120 CAU SCENEDESMUS OBLIQ. CY SIN (Cytoplasmic)
+agctgagtggcgcagtggaagcgtgatgggctcataacccataggtcaca
+ggatcgaaacctgtctcagctacca
+> RX6200 CAU NEUROSPORA CRASSA CY SIN (Cytoplasmic)
+agctgcatggcgcagcggaagcgcgcngggctcataacccggaggtcact
+cgatcgaaacgagttgcagctacca
+> RX6280 CAU SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+agcgccgtggcgcagtggaagcgcgcagggctcataaccctgatgtcctc
+ggatcgaaaccgagcggcgctacca
+> RX6320 CAU SCHIZOSACCHA. POM. CY SIN (Cytoplasmic)
+tgcgcggtaggagagtggaactccgacgggctcataacccgtaggtccca
+ggatcgaaacctggccgcgcaacca
+> RX6360 CAU TORULOPSIS UTILIS CY SIN (Cytoplasmic)
+agcgtcttggcgcagtggaagcgcgcagggctcataaccctgatgtccct
+ggatcgaaaccaggagacgctacca
+> RX6820 CAU WHEAT GERM CY PLA (Cytoplasmic)
+atcagagtggcgcagcggaagcgtggtgggcccataacccacaggtccca
+ggatcgaaacctggctctgatacca
+> RX6940 CAU LUPINUS LUTEUS CY PLA (Cytoplasmic)
+atcagagtggcgcagcggaagcgcggtgggcccataacccacaggtccca
+ggatcgaaacctngctctgatacca
+> RX6980 CAU PHASEOLUS VULGARIS CY PLA (Cytoplasmic)
+atcagagtggcgcagcggaagcgtggtgggcccataacccacaggtccca
+ggatcgaaacctggctctgatacca
+> RX7620 CAU ASTERINA AMURENSIS CY ANI (Cytoplasmic)
+agcagagtggcgcagtggaagcgtgctgggcccataacccagaggtccga
+ggatcgaaacctcgctctgctacca
+> RX7740 CAU DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+agcagagtggcgcagtggaagcgtgctgggcccataacccagaggtccga
+ggatcgaaaccttgctctgctacca
+> RX7860 CAU EUPHAUSIA SPERBA CY ANI (Cytoplasmic)
+agcagagtggcgcagtggaagcgtgctgggcccataacccagaggtcggt
+agatcgaaactactctctgctacca
+> RX7920 CAU XENOPUS LAEVIS CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgctacca
+> RX7980 CAU SALMON LIVER CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgctacca
+> RX8100 CAU MOUSE MYELOMA CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgctacca
+> RX9160 CAU RABBIT LIVER CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgctacca
+> RX9460 CAU SHEEP MAMMARY GLAN CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgctacca
+> RX9990 CAU HUMAN PLACENTA CY ANI (Cytoplasmic)
+agcagagtggcgcagcggaagcgtgctgggcccataacccagaggtcgat
+ggatcgaaaccatcctctgctacca
+> RY1140 GUA MYCOPLASMA CAPRIC. EUBACT (Eubacteria)
+ggaggggtagcgaagtggctaaacgcgggtggctgtaacccacttcctta
+cggttcgggggttcgaatccctccccctccacca
+> RY1460 QUA BACILLUS STEARO. EUBACT (Eubacteria)
+ggaggggtagcgaagtggctaaacgcggcggactgtaaatccgctccctt
+tgggttcggcggttcgaatccgtccccctccacca
+> RY1540 QUA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggaggggtagcgaagtggctaaacgcggcggactgtaaatccgctccctc
+agggttcggcagttcgaatctgcccccctccacca
+> RY1541 QUA BACILLUS SUBTILIS EUBACT (Eubacteria)
+ggaggggtagcgaagtggctaaacgcggcggactgtaaatccgctccctc
+agggttcggcagttcgaatctgcccccctccacca
+> RY1660 QUA E.COLI EUBACT (Eubacteria)
+ggtggggttcccgagcggccaaagggagcagactgtaaatctgccgtcat
+cgacttcgaaggttcgaatccttcccccaccacca
+> RY1661 QUA E.COLI EUBACT (Eubacteria)
+ggtggggttcccgagcggccaaagggagcagactgtaaatctgccgtcac
+agacttcgaaggttcgaatccttcccccaccacca
+> RY6120 GPA SCENEDESMUS OBLIQ. CY SIN (Cytoplasmic)
+ccccttgtagctcagttggcagagcgggagactgtagatctctaggncac
+tggttcgaatccggtcgaggggacca
+> RY6280 GPA SACCHAROMYCES CER. CY SIN (Cytoplasmic)
+ctctcggtagccaagttggtttaaggcgcaagactgtaaatcttgagatc
+gggcgttcgactcgcccccgggagacca
+> RY6320 GPA SCHIZOSACCHA. POM. CY SIN (Cytoplasmic)
+ctcctgatggtgtagttggttatcacacccggctgtaaaccggttggtcg
+ctagttcgattctggctcaggagacca
+> RY6360 GPA TORULOPSIS UTILIS CY SIN (Cytoplasmic)
+ctctcggtggccaagttggtttaaggcgtcagactgtaaatctgaacatc
+gggcgttcgaatcgcccccgagagacca
+> RY6820 QPA WHEAT GERM CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcac
+tggttcgaatccggtaggtcggacca
+> RY6821 GPA WHEAT LEAVES CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcac
+tggttcgaatccggtaggtcggacca
+> RY6940 GPA LUPINUS LUTEUS CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcac
+tggttcgaatccggtaggtcggacca
+> RY7060 GPA NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcac
+tggttcgaatccggtaggtcggacca
+> RY7061 GPA NICOTIANA RUSTICA CY PLA (Cytoplasmic)
+ccgaccttagctcagttggtagagcggaggactgtagatccttaggtcgc
+tggttcgaatccggcaggtcggacca
+> RY7740 QPA DROSOPHILA MELANO. CY ANI (Cytoplasmic)
+ccttcgatagctcagttggtagagcggtggactgtagatccataggtcgc
+tggttcaaatccggctcgaaggacca
+> RY9280 9PA BOVINE LIVER CY ANI (Cytoplasmic)
+ccttcgatagctcagttggttagagcggaggactgtagatccttaggtcg
+ctggttcgattccggctcgaaggacca
+> RY9990 9PA HUMAN PLACENTA CY ANI (Cytoplasmic)
+ccttcgatagctcagctggtagagcggaggactgtagatccttaggtcgc
+tggttcgattccggctcgaaggacca
+> RY9991 9PA HUMAN PLACENTA CY ANI (Cytoplasmic)
+ccttcgatagctcagttggtagagcggaggactgtagatccttaggtcgc
+tggttcgattccggctcgaaggacca
+> RZ1665 UCA E.COLI EUBACT -_AA (Eubacteria)
+taagatcgtcgtctccggtgaggcggctggacttcaaatccagttggggc
+cgctgcggtcccgggcaggttcgactcctgtgatctttgcca
+> RZ8100 NCA MOUSE LIVER CY ANI (Cytoplasmic)
+gcccggattcctcagtggtctggggtgcaggctncaaacctgtagctgtt
+tagcgacagagtggttcaattccattttcgggcgcca
+> RZ9280 1CA BOVINE LIVER CY ANI (Cytoplasmic)
+gcccggattcctcagtggtctggggtgcaggcttcaaacctgtagctgtc
+tagcgacagagtggttcaattccattttcgggcgcca
+> RZ9990 NCA HUMAN HELA CELLS CY ANI (Cytoplasmic)
+gcccggattcctcagtggtctggggtgcaggctncaaacctgtagctgtc
+tagcgacagagtggttcaattccattttcgggcgcca
diff --git a/Dsignal b/Dsignal
new file mode 100644
index 0000000..c7ea146
--- /dev/null
+++ b/Dsignal
@@ -0,0 +1,8 @@
+0.0000 0.0000 0.0000 1.0000
+0.5100 0.0400 0.4200 0.0200
+0.0000 0.0000 1.0000 0.0000
+0.0400 0.6400 0.0500 0.2800
+0.0500 0.2500 0.3000 0.4000
+0.0900 0.4900 0.1300 0.2900
+1.0000 0.0000 0.0000 0.0000
+0.1800 0.0100 0.7500 0.0600
diff --git a/ESELC.cm b/ESELC.cm
new file mode 100644
index 0000000..9267b7d
--- /dev/null
+++ b/ESELC.cm
@@ -0,0 +1,1042 @@
+### cove V2
+65 nodes
+### node 0 type 6
+1 -1
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 1
+2 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.26087 0.08696 0.08696 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 2 type 1
+3 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.08696 0.30435 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 3 type 1
+4 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.34783 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 4 type 1
+5 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.34783 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 5 type 1
+6 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.08696 0.04348 # MATP
+0.04348 0.30435 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 6 type 1
+7 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.08696 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.30435 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 7 type 1
+8 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.30435 # MATP
+0.04348 0.04348 0.08696 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 8 type 1
+9 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.08696 0.30435 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 9 type 1
+10 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.09091 0.00000 0.72727 0.00000 0.09091 0.09091
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.30435 0.04348 0.08696 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 10 type 2
+11 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.72727 0.09091 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 2
+12 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.27273 0.27273 0.09091 0.36364 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 0
+13 24
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 4
+14 -1
+0.09091 0.72727 0.09091 0.09091 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 14 type 1
+15 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.34783 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 15 type 1
+16 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.30435 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.08696 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 16 type 1
+17 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.08696 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.30435 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 17 type 1
+18 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.30435 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.08696 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 18 type 1
+19 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.26087 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.08696 0.04348 0.08696 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 19 type 1
+20 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.09091 0.00000 0.72727 0.00000 0.09091 0.09091
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.34783 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 20 type 2
+21 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.18182 0.09091 0.63636 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.72727 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.72727 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.09091 0.72727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 5
+25 -1
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 0
+26 40
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 4
+27 -1
+0.09091 0.72727 0.09091 0.09091 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 1
+28 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.34783 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 28 type 1
+29 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.34783 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 29 type 1
+30 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.34783 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 30 type 1
+31 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.30435 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.08696 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 31 type 1
+32 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.34783 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 32 type 1
+33 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.09091 0.00000 0.72727 0.00000 0.09091 0.09091
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.13043 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.26087 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 33 type 2
+34 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.72727 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.09091 0.72727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.09091 0.72727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.72727 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.72727 0.09091 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.72727 0.09091 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.72727 0.09091 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 5
+41 -1
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 0
+42 53
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 4
+43 -1
+0.09091 0.72727 0.09091 0.09091 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 1
+44 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.34783 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 44 type 1
+45 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.26087 0.04348 # MATP
+0.04348 0.08696 0.04348 0.04348 # MATP
+0.08696 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 45 type 1
+46 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.13043 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.26087 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 46 type 1
+47 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.34783 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 47 type 1
+48 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.08696 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.08696 0.04348 0.04348 # MATP
+0.26087 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 48 type 1
+49 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.09091 0.00000 0.72727 0.00000 0.09091 0.09091
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.21739 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.17391 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 49 type 2
+50 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.09091 0.72727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 50 type 2
+51 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.63636 0.09091 0.09091 0.18182 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 51 type 2
+52 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.72727 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 52 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.72727 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 53 type 5
+54 -1
+0.08333 0.66667 0.08333 0.08333 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 1
+55 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.30435 0.04348 0.08696 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 55 type 1
+56 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.34783 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 56 type 1
+57 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07692 0.61538 0.07692 0.07692 0.07692 0.07692
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.34783 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 57 type 1
+58 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.09091 0.00000 0.72727 0.00000 0.09091 0.09091
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.04348 0.34783 0.04348 0.04348 # MATP
+0.04348 0.04348 0.04348 0.04348 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 58 type 2
+59 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.09091 0.72727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.09091 0.72727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 2
+61 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.72727 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 61 type 2
+62 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.54545 0.09091 0.27273 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 62 type 2
+63 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.72727 0.09091 0.09091 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 63 type 2
+64 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.18182 0.09091 0.63636 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 64 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.88889 0.00000 0.00000 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.09091 0.09091 0.72727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/ESELCinf-c.cm b/ESELCinf-c.cm
new file mode 100644
index 0000000..b2e5086
--- /dev/null
+++ b/ESELCinf-c.cm
@@ -0,0 +1,384 @@
+INFERNAL-1 [1.0]
+NAME euk-selcysteine
+STATES 277
+NODES 69
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 7
+EFFNSEQ 7.000
+CLEN 86
+BCOM cmbuild --rf --enone ESELCinf-nc.cm euk-selc.sto
+BDATE Sun Feb 8 16:47:27 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/ESELCinf.hfile --exp-sfile cmcalibrate_files/ESELCinf.sfile --exp-qqfile cmcalibrate_files/ESELCinf.qqfile --exp-ffile cmcalibrate_files/ESELCinf.ffile --fil-dfile cmcalibrate_files/ESELCinf.dfile -s 208 ESELCinf-c.cm
+CDATE Sun Feb 8 20:21:57 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.71367 -6.74489 2.01784 1500000 584916 0.001923
+E-GC 0 0.37359 -37.84370 -24.88577 1500000 47469 0.007900
+E-LI 0 0.73707 -5.86976 2.52683 1500000 548234 0.002052
+E-GI 0 0.42267 -31.24140 -19.96573 1500000 44037 0.008516
+E-LV 0 0.75319 -1.04434 5.07459 15000000 112901 0.009964
+E-GV 0 0.37368 -35.20156 -19.92893 15000000 112864 0.003323
+E-LF 0 0.80509 0.38582 6.11048 15000000 112915 0.009963
+E-GF 0 0.40055 -30.04964 -15.80224 15000000 112840 0.003323
+FT-LC 13 0.99500 10000 1500000 0
+ 69.2835 69.2835 65.7954 61.4476 58.751 51.924 50.639 43.6522 22.8838 19.0426 15.6441 0.000114893 4.18549e-06
+ 4903.14 4331.41 2637.84 1923.92 1664.37 1439.84 784.03 308.138 251.961 178.807 119.93 12.6591 11.993
+FT-LI 13 0.99500 10000 1500000 0
+ 96.4545 91.9657 87.1926 81.244 75.5557 67.9886 66.5345 41.174 29.2931 23.6721 19.7349 9.85649e-05 4.9628e-07
+ 4903.14 4331.41 2637.84 1923.92 1664.37 1439.84 784.03 308.138 251.961 178.807 119.93 12.6591 11.993
+FT-GC 1 0.99500 10000 1500000 1
+ 3.998e-05
+ 9.49083
+FT-GI 1 0.99500 10000 1500000 1
+ 7.12336e-06
+ 9.49083
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130
+ IL 1 1 2 1 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 1 ]
+ MP 3 2 3 7 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -3.964 -3.342 -4.390 0.436 -4.366 -4.513 -0.766 -4.090 -4.037 2.505 1.845 1.729 -0.634 -3.872 -1.997 -3.451
+ ML 4 2 3 7 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 5 2 3 7 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 6 2 3 7 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 7 7 5 7 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 8 8 6 8 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 2 ]
+ MP 9 8 6 13 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -4.576 -5.296 -3.942 -1.631 -3.388 0.854 3.535 -4.540 -5.393 -1.655 -4.107 -3.302 -0.001 -5.112 -1.243 -4.160
+ ML 10 8 6 13 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 11 8 6 13 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 12 8 6 13 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 13 13 5 13 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 14 14 6 14 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 3 ]
+ MP 15 14 6 19 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -6.359 -6.300 -4.476 -1.813 -4.184 -5.102 3.802 -5.124 -7.841 -1.775 -4.475 -3.436 -0.380 -6.994 -1.520 -5.197
+ ML 16 14 6 19 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 17 14 6 19 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 18 14 6 19 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 19 19 5 19 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 20 20 6 20 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 4 ]
+ MP 21 20 6 25 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -6.359 -6.300 -4.476 -1.813 -4.184 -5.102 3.802 -5.124 -7.841 -1.775 -4.475 -3.436 -0.380 -6.994 -1.520 -5.197
+ ML 22 20 6 25 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 23 20 6 25 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 24 20 6 25 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 25 25 5 25 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 26 26 6 26 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 5 ]
+ MP 27 26 6 31 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -5.758 -4.546 -6.306 0.054 -5.517 -6.066 2.223 -5.652 -5.663 3.087 -5.353 -1.610 -0.123 -5.565 -1.673 -4.538
+ ML 28 26 6 31 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 29 26 6 31 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 30 26 6 31 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 31 31 5 31 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 32 32 6 32 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 6 ]
+ MP 33 32 6 37 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -4.701 -4.843 2.369 -1.751 -4.353 -6.119 -1.897 -5.067 -4.904 -2.007 -5.328 3.185 -1.178 -4.939 -2.531 -4.264
+ ML 34 32 6 37 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 35 32 6 37 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 36 32 6 37 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 37 37 5 37 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 38 38 6 38 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 7 ]
+ MP 39 38 6 43 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -5.765 -4.918 -6.153 3.059 -5.184 -6.735 2.362 -5.431 -5.960 -0.242 -6.054 -1.953 -0.156 -6.034 -1.711 -4.542
+ ML 40 38 6 43 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 41 38 6 43 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 42 38 6 43 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 43 43 5 43 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 44 44 6 44 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 8 ]
+ MP 45 44 6 49 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -4.061 -4.669 -4.748 -1.643 -3.666 -5.764 -1.435 -4.833 -4.446 -1.988 -5.101 -2.521 -0.653 -4.506 2.375 3.117
+ ML 46 44 6 49 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 47 44 6 49 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 48 44 6 49 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 49 49 5 49 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 50 50 6 50 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 9 ]
+ MP 51 50 6 55 4 -8.235 -8.442 -0.022 -6.856 -5.905 -4.204 -6.594 -0.215 -6.822 -5.367 -1.313 -5.820 -5.297 3.357 -4.936 1.879 -1.271 -5.043 -2.815 -4.842
+ ML 52 50 6 55 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 53 50 6 55 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 54 50 6 55 4 -4.568 -4.250 -2.265 -0.520
+ IL 55 55 5 55 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 56 56 6 56 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 10 ]
+ ML 57 56 6 59 3 -9.189 -0.009 -7.843 1.922 -4.110 -3.877 -3.575
+ D 58 56 6 59 3 -6.174 -1.687 -0.566
+ IL 59 59 3 59 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 11 ]
+ ML 60 59 3 62 2 -9.738 -0.002 1.268 -0.962 -1.952 -0.287
+ D 61 59 3 62 2 -8.445 -0.004
+ IL 62 62 3 62 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ BIF 12 ]
+ B 63 62 3 64 176
+ [ BEGL 13 ]
+ S 64 63 1 65 1 0.000
+ [ BIF 14 ]
+ B 65 64 1 66 116
+ [ BEGL 15 ]
+ S 66 65 1 67 4 -0.026 -7.622 -7.029 -7.669
+ [ MATP 16 ]
+ MP 67 66 1 71 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -6.359 -6.300 -4.476 -1.813 -4.184 -5.102 3.802 -5.124 -7.841 -1.775 -4.475 -3.436 -0.380 -6.994 -1.520 -5.197
+ ML 68 66 1 71 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 69 66 1 71 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 70 66 1 71 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 71 71 5 71 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 72 72 6 72 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 17 ]
+ MP 73 72 6 77 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -5.851 -5.914 -4.906 -1.026 -4.240 -5.606 3.365 -5.301 -6.660 -0.966 -4.994 -2.631 -0.006 -6.380 1.715 -4.783
+ ML 74 72 6 77 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 75 72 6 77 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 76 72 6 77 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 77 77 5 77 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 78 78 6 78 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 18 ]
+ MP 79 78 6 83 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -6.055 -5.502 -6.444 2.167 -5.462 -7.736 -1.154 -5.867 -5.973 -1.536 -6.164 -2.488 -1.097 -6.190 3.308 -5.006
+ ML 80 78 6 83 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 81 78 6 83 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 82 78 6 83 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 83 83 5 83 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 84 84 6 84 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 19 ]
+ MP 85 84 6 89 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -5.956 -6.069 -4.637 -1.230 -4.126 -5.292 3.511 -5.174 -7.043 -1.165 -4.699 -2.899 -0.053 -6.549 1.236 -4.880
+ ML 86 84 6 89 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 87 84 6 89 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 88 84 6 89 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 89 89 5 89 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 90 90 6 90 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 20 ]
+ MP 91 90 6 95 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -4.102 -3.101 -4.998 2.220 -5.631 -4.855 -0.158 -4.487 -4.209 2.622 -3.926 1.338 -0.167 -4.232 -1.747 -3.426
+ ML 92 90 6 95 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 93 90 6 95 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 94 90 6 95 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 95 95 5 95 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 96 96 6 96 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 21 ]
+ MP 97 96 6 101 4 -8.235 -8.442 -0.022 -6.856 -8.083 -4.214 -8.636 -0.936 -8.152 -4.542 -2.226 -7.336 -5.359 3.856 -4.855 -1.889 -2.148 -4.604 -4.047 -6.190
+ ML 98 96 6 101 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 99 96 6 101 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 100 96 6 101 4 -4.568 -4.250 -2.265 -0.520
+ IL 101 101 5 101 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 102 102 6 102 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 103 102 6 105 3 -9.189 -0.009 -7.843 -1.578 -0.286 -2.393 1.408
+ D 104 102 6 105 3 -6.174 -1.687 -0.566
+ IL 105 105 3 105 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 106 105 3 108 3 -9.189 -0.009 -7.843 -2.459 -3.879 1.863 -3.162
+ D 107 105 3 108 3 -6.174 -1.687 -0.566
+ IL 108 108 3 108 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 109 108 3 111 3 -9.189 -0.009 -7.843 -2.459 -3.879 1.863 -3.162
+ D 110 108 3 111 3 -6.174 -1.687 -0.566
+ IL 111 111 3 111 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 112 111 3 114 2 * 0.000 -3.045 -2.938 -3.786 1.878
+ D 113 111 3 114 2 * 0.000
+ IL 114 114 3 114 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 26 ]
+ E 115 114 3 -1 0
+ [ BEGR 27 ]
+ S 116 65 1 117 5 -8.209 -0.018 -8.024 -8.237 -9.128
+ IL 117 117 2 117 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 28 ]
+ MP 118 117 2 122 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -5.595 -5.397 -6.100 -1.673 -5.082 -7.387 -1.510 -5.714 -5.651 -1.884 -5.981 -2.570 3.861 -5.838 -2.612 -4.809
+ ML 119 117 2 122 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 120 117 2 122 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 121 117 2 122 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 122 122 5 122 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 123 123 6 123 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 29 ]
+ MP 124 123 6 128 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -8.417 -5.833 -7.841 -2.015 -7.814 -11.206 -2.586 -6.365 -6.803 -2.265 -6.564 3.904 -2.163 -7.369 -3.383 -5.787
+ ML 125 123 6 128 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 126 123 6 128 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 127 123 6 128 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 128 128 5 128 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 129 129 6 129 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 30 ]
+ MP 130 129 6 134 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -6.359 -6.300 -4.476 -1.813 -4.184 -5.102 3.802 -5.124 -7.841 -1.775 -4.475 -3.436 -0.380 -6.994 -1.520 -5.197
+ ML 131 129 6 134 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 132 129 6 134 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 133 129 6 134 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 134 134 5 134 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 135 135 6 135 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 31 ]
+ MP 136 135 6 140 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -4.273 -3.291 -5.077 3.034 -5.553 -5.046 -0.507 -4.358 -4.477 2.374 -4.439 -1.059 -0.512 -4.539 -2.068 -3.573
+ ML 137 135 6 140 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 138 135 6 140 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 139 135 6 140 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 140 140 5 140 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 141 141 6 141 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 32 ]
+ MP 142 141 6 146 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -8.083 -4.214 -8.636 -0.936 -8.152 -4.542 -2.226 -7.336 -5.359 3.856 -4.855 -1.889 -2.148 -4.604 -4.047 -6.190
+ ML 143 141 6 146 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 144 141 6 146 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 145 141 6 146 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 146 146 5 146 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 147 147 6 147 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 33 ]
+ MP 148 147 6 152 4 -8.235 -8.442 -0.022 -6.856 -4.246 -3.278 -5.029 3.122 -5.478 -5.017 -0.567 -4.276 -4.482 2.246 -4.521 -1.112 -0.568 -4.549 -2.122 -3.553
+ ML 149 147 6 152 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 150 147 6 152 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 151 147 6 152 4 -4.568 -4.250 -2.265 -0.520
+ IL 152 152 5 152 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 153 153 6 153 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 34 ]
+ ML 154 153 6 156 3 -9.189 -0.009 -7.843 -3.271 1.892 -4.181 -2.934
+ D 155 153 6 156 3 -6.174 -1.687 -0.566
+ IL 156 156 3 156 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 157 156 3 159 3 -9.189 -0.009 -7.843 -3.045 -2.938 -3.786 1.878
+ D 158 156 3 159 3 -6.174 -1.687 -0.566
+ IL 159 159 3 159 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 160 159 3 162 3 -9.189 -0.009 -7.843 -3.045 -2.938 -3.786 1.878
+ D 161 159 3 162 3 -6.174 -1.687 -0.566
+ IL 162 162 3 162 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 37 ]
+ ML 163 162 3 165 3 -9.189 -0.009 -7.843 -3.271 1.892 -4.181 -2.934
+ D 164 162 3 165 3 -6.174 -1.687 -0.566
+ IL 165 165 3 165 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 166 165 3 168 3 -9.189 -0.009 -7.843 1.922 -4.110 -3.877 -3.575
+ D 167 165 3 168 3 -6.174 -1.687 -0.566
+ IL 168 168 3 168 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 169 168 3 171 3 -9.189 -0.009 -7.843 1.922 -4.110 -3.877 -3.575
+ D 170 168 3 171 3 -6.174 -1.687 -0.566
+ IL 171 171 3 171 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 172 171 3 174 2 * 0.000 1.922 -4.110 -3.877 -3.575
+ D 173 171 3 174 2 * 0.000
+ IL 174 174 3 174 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 41 ]
+ E 175 174 3 -1 0
+ [ BEGR 42 ]
+ S 176 63 1 177 2 -9.738 -0.002
+ IL 177 177 2 177 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ BIF 43 ]
+ B 178 177 2 179 229
+ [ BEGL 44 ]
+ S 179 178 1 180 4 -0.026 -7.622 -7.029 -7.669
+ [ MATP 45 ]
+ MP 180 179 1 184 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -6.266 -5.556 -6.636 -1.981 -5.840 -8.185 -2.431 -5.964 3.874 -2.273 -6.181 -2.675 -1.805 -6.305 -3.104 -5.196
+ ML 181 179 1 184 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 182 179 1 184 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 183 179 1 184 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 184 184 5 184 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 185 185 6 185 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 46 ]
+ MP 186 185 6 190 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -4.919 -4.800 -5.099 0.220 -3.685 -5.702 2.335 -4.946 -5.364 1.832 -5.282 -1.557 2.314 -4.999 -0.912 -3.637
+ ML 187 185 6 190 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 188 185 6 190 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 189 185 6 190 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 190 190 5 190 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 191 191 6 191 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 47 ]
+ MP 192 191 6 196 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -5.429 -5.615 -4.690 -0.721 -3.888 -5.359 3.350 -5.066 -6.204 -0.701 -4.824 -2.432 1.865 -5.809 -1.194 -4.348
+ ML 193 191 6 196 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 194 191 6 196 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 195 191 6 196 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 196 196 5 196 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 197 197 6 197 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 48 ]
+ MP 198 197 6 202 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -8.083 -4.214 -8.636 -0.936 -8.152 -4.542 -2.226 -7.336 -5.359 3.856 -4.855 -1.889 -2.148 -4.604 -4.047 -6.190
+ ML 199 197 6 202 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 200 197 6 202 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 201 197 6 202 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 202 202 5 202 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 203 203 6 203 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 49 ]
+ MP 204 203 6 208 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -4.315 -3.477 -5.052 2.229 -4.738 -5.126 0.397 -4.627 -4.499 2.312 -4.276 -0.930 1.859 -4.468 -1.429 -3.513
+ ML 205 203 6 208 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 206 203 6 208 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 207 203 6 208 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 208 208 5 208 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 209 209 6 209 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 50 ]
+ MP 210 209 6 214 4 -8.235 -8.442 -0.022 -6.856 -5.366 -5.426 -5.881 -0.978 -4.627 -7.014 1.927 -5.617 -5.650 -0.987 -6.062 -2.289 -0.311 -5.760 3.314 -4.572
+ ML 211 209 6 214 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 212 209 6 214 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 213 209 6 214 4 -4.568 -4.250 -2.265 -0.520
+ IL 214 214 5 214 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 215 215 6 215 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 51 ]
+ ML 216 215 6 218 3 -9.189 -0.009 -7.843 -3.045 -2.938 -3.786 1.878
+ D 217 215 6 218 3 -6.174 -1.687 -0.566
+ IL 218 218 3 218 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 52 ]
+ ML 219 218 3 221 3 -9.189 -0.009 -7.843 1.201 -1.803 -1.968 0.212
+ D 220 218 3 221 3 -6.174 -1.687 -0.566
+ IL 221 221 3 221 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 53 ]
+ ML 222 221 3 224 3 -9.189 -0.009 -7.843 -2.459 -3.879 1.863 -3.162
+ D 223 221 3 224 3 -6.174 -1.687 -0.566
+ IL 224 224 3 224 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 54 ]
+ ML 225 224 3 227 2 * 0.000 -3.271 1.892 -4.181 -2.934
+ D 226 224 3 227 2 * 0.000
+ IL 227 227 3 227 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 55 ]
+ E 228 227 3 -1 0
+ [ BEGR 56 ]
+ S 229 178 1 230 5 -8.209 -0.018 -8.024 -8.237 -9.128
+ IL 230 230 2 230 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 57 ]
+ MP 231 230 2 235 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -5.905 -4.204 -6.594 -0.215 -6.822 -5.367 -1.313 -5.820 -5.297 3.357 -4.936 1.879 -1.271 -5.043 -2.815 -4.842
+ ML 232 230 2 235 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 233 230 2 235 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 234 230 2 235 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 235 235 5 235 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 236 236 6 236 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 58 ]
+ MP 237 236 6 241 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -5.595 -5.397 -6.100 -1.673 -5.082 -7.387 -1.510 -5.714 -5.651 -1.884 -5.981 -2.570 3.861 -5.838 -2.612 -4.809
+ ML 238 236 6 241 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 239 236 6 241 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 240 236 6 241 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 241 241 5 241 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 242 242 6 242 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 59 ]
+ MP 243 242 6 247 6 -9.739 -9.679 -0.014 -8.455 -8.735 -9.130 -8.083 -4.214 -8.636 -0.936 -8.152 -4.542 -2.226 -7.336 -5.359 3.856 -4.855 -1.889 -2.148 -4.604 -4.047 -6.190
+ ML 244 242 6 247 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 245 242 6 247 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 246 242 6 247 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 247 247 5 247 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 248 248 6 248 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 60 ]
+ MP 249 248 6 253 4 -8.235 -8.442 -0.022 -6.856 -8.083 -4.214 -8.636 -0.936 -8.152 -4.542 -2.226 -7.336 -5.359 3.856 -4.855 -1.889 -2.148 -4.604 -4.047 -6.190
+ ML 250 248 6 253 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 251 248 6 253 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 252 248 6 253 4 -4.568 -4.250 -2.265 -0.520
+ IL 253 253 5 253 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 254 254 6 254 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 255 254 6 257 3 -9.189 -0.009 -7.843 -3.045 -2.938 -3.786 1.878
+ D 256 254 6 257 3 -6.174 -1.687 -0.566
+ IL 257 257 3 257 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 62 ]
+ ML 258 257 3 260 3 -9.189 -0.009 -7.843 -3.045 -2.938 -3.786 1.878
+ D 259 257 3 260 3 -6.174 -1.687 -0.566
+ IL 260 260 3 260 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 63 ]
+ ML 261 260 3 263 3 -9.189 -0.009 -7.843 -3.271 1.892 -4.181 -2.934
+ D 262 260 3 263 3 -6.174 -1.687 -0.566
+ IL 263 263 3 263 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 64 ]
+ ML 264 263 3 266 3 -9.189 -0.009 -7.843 -0.134 -2.839 1.449 -2.192
+ D 265 263 3 266 3 -6.174 -1.687 -0.566
+ IL 266 266 3 266 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 65 ]
+ ML 267 266 3 269 3 -9.189 -0.009 -7.843 1.922 -4.110 -3.877 -3.575
+ D 268 266 3 269 3 -6.174 -1.687 -0.566
+ IL 269 269 3 269 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 66 ]
+ ML 270 269 3 272 3 -9.189 -0.009 -7.843 -1.578 -0.286 -2.393 1.408
+ D 271 269 3 272 3 -6.174 -1.687 -0.566
+ IL 272 272 3 272 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 67 ]
+ ML 273 272 3 275 2 * 0.000 -3.045 -2.938 -3.786 1.878
+ D 274 272 3 275 2 * 0.000
+ IL 275 275 3 275 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 68 ]
+ E 276 275 3 -1 0
+//
diff --git a/FILES b/FILES
new file mode 100644
index 0000000..b6ae0ee
--- /dev/null
+++ b/FILES
@@ -0,0 +1,169 @@
+List of files in the package.
+----------------------------
+
+Manual.ps -- decription of program, run options & demo examples
+ (postscript format)
+MANUAL -- decription of program, run options & demo examples
+ (text format)
+INSTALL -- instructions for installing the programs
+COPYING -- copyright notice, and information on distribution policy
+FILES -- overview of what files are (this file)
+GNULICENSE -- Gnu Public License, version 2 (see COPYING)
+Release.history -- Log of changes/fixes/additions in various releases
+
+Makefile -- Customize local installation
+checkversion.pl -- Makes sure you are using Perl version 5.0 or greater
+ when 'make'ing tRNAscan-SE
+instman.pl -- PERL script used for man page installation
+tRNAscan-SE.man -- Manual file for tRNAscan-SE
+
+Files created after a complete 'make':
+
+tRNAscan-SE ready-to-run PERL script, user runs this program to
+ search for tRNAs
+covels-SE copy of 'covels' program from Cove package,
+ renamed with '-SE' suffix to avoid overwriting
+ previous installation of Cove package
+coves-SE copy of 'coves' program from Cove package,
+ renamed with '-SE' suffix to avoid overwriting
+ previous installation of Cove package
+trnascan-1.4 optimized, debugged version of tRNAscan 1.3 with
+ a couple new options for use with tRNAscan-SE
+eufindtRNA new implementation of tRNA-finding algorithm
+ previously described by Pavesi et al.;
+ does step-wise identification of B box, then A
+ box, then poly-T termination signal, scored with
+ newly derived log odds score matrix; new options
+ included for use with tRNAscan-SE
+
+Source / data files for tRNAscan-SE:
+
+tRNAscan-SE.src PERL script source, must be run thru a 'make' to
+ do variable substitutions and create executable
+ file 'tRNAscan-SE'
+tRNAscanSE/*.cm PERL modules required for executing tRNAscan-SE
+
+gcode.cilnuc Alternate genetic codes for Ciliates,
+ Dasycladacean, & Hexamita nuclear tRNAs
+gcode.echdmito " " " " Echinoderm mitochondrial tRNAs
+gcode.invmito " " " " Invertibrate mitochondrial tRNAs
+gcode.othmito " " " " Mold, Protozoans, & Coelenterate
+ mitochondrial tRNAs
+gcode.vertmito " " " " Vertibrate mitochondrial tRNAs
+gcode.ystmito " " " " Yeast mitochondrial tRNAs
+
+sstofa.pl PERL script utility program that converts a
+ tRNA secondary-structure file (-f option)
+ into a standard FASTA file; not required
+ for tRNAscan-SE operation, supplied as
+ an external utility to user
+
+Source / data files for tRNAscan program:
+
+trnascan.c source for tRNAscan v.1.4
+Dsignal D arm consensus matrix scoring file
+TPCsignal TPC arm consensus matrix scoring file
+
+
+Source files for eufindtRNA program:
+
+eufind_main.c main source file
+pavesi.c tRNA feature search functions
+eufind_const.h constants & data structures
+
+
+Source / data files for Cove/Infernal package:
+
+TRNA2.cm default covariance model used by Cove to detect tRNAs
+ (built from hand-edited alignment of over
+ 1415 tRNAs, introns included, by S. Eddy)
+TRNA2ns.cm primary-structure only (HMM-like) covariance model used by
+ Cove to separate primary sequence scores from
+ secondary structure scores (see Methods);
+ this model uses the same tRNA alignment as
+ TRNA2.cm, but excludes all secondary structure
+ information
+TRNA2-*.cm domain-specific covariance model used by Cove to detect tRNAs
+PSELC.cm covariance model used to detect prokaryotic
+ selenocysteine tRNAs (also gives more accurate
+ secondary structure predictions of selcys tRNAs)
+ trained on 5 known prok selcys tRNAs
+ESELC.cm covariance model used to detect eukaryotic
+ selenocysteine tRNAs (also gives more accurate
+ secondary structure predictions of selcys tRNAs)
+ trained on 7 known euk selcys tRNAs
+*inf-*.cm covariance models used by Infernal to detect tRNAs
+Archaea-BHB-noncan.cm covariance model used by Infernal to detect
+ noncanonical tRNA introns in archaea
+
+align_main.c main() for covea, multiple alignment
+build_main.c main() for coveb, model construction
+emit_main.c main() for covee, emit sequences from a model
+scan_main.c main() for covels, database searching
+score_main.c main() for coves, scoring sequences and predicting their structure
+structcheck_main.c main() for an auxiliary program that checks
+ structure-annotated alignments
+train_main.c main() for covet, model training
+
+dbviterbi.c database scanning version of the alignment algorithm
+smallviterbi.c small memory version of the alignment algorithm (EXPERIMENTAL)
+viterbi.c alignment algorithm
+
+align.c produce output alignments from tracebacks
+debug.c miscellaneous debugging output routines
+emit.c emit sequences from a model
+fastmodelmaker.c N^2 mem/N^3 time, approx. model construction from alignment
+konings.c secondary structure "strings"
+maxmodelmaker.c N^2 mem/N^4 time, max. likelihood model construction from alignment
+misc.c miscellaneous functions
+model.c alloc, init, free'ing of a CM
+prior.c default prior, i/o of prior from files
+probify.c convert counts to probabilities
+save.c i/o of models
+scorestack.c module for
+structs.c implementation of data structures: trees & stacks
+trace.c trace tree & stack data structures
+
+
+Files borrowed from Sean Eddy's sequence function library (v.1.5g & j):
+
+alignio.c i/o of aligned sequence files
+sqerror.c Die(), Choke(), Warn() error functions
+sqio.c Don Gilbert's readseq, i/o of sequences
+getopt.c More portable version of getopt()
+iupac.c values of global variables
+msf.c i/o of GCG MSF alignment format
+revcomp.c reverse complement a sequence
+selex.c i/o of my SELEX alignment format
+sre_ctype.c portability of ctype.h functions
+sre_string.c some miscellaneous extra string functions
+types.c some miscellaneous type-checking functions for user input
+gnuregex.c regular expression function library
+interleaved.c i/o of interleaved format multiple alignments
+reformat_main.c source for useful sequence format conversion program
+revcomp_main.c source for program to take the reverse complement of
+ a sequence
+seqstat_main.c source for a program displaying information about
+ a sequence file
+shuffle_main.c source for a program that shuffles input sequence
+ randomly, useful for running Monte Carlo simulations
+
+Files in /Demo for running demo examples:
+
+/Demo/C28G1.fa, C. elegans cosmids
+ F22B7.fa,
+ F59C12.fa
+
+/Demo/Sprz-sub.fa 1014 sequence subset of Sprinzl tRNA
+ (contains animal cytoplasmic + eubacterial tRNAs)
+/Demo/DQ6060.fa Sprinzl Tetrahymena thermophila Gln tRNA
+
+Files in /Cove (additional files in Cove package not needed for
+ tRNAscan-SE operation):
+
+/Cove/Guide.tex User's Guide for Cove package, in TeX format
+/Cove/DEMO Running demo's of various programs in entire
+ Cove package
+/Cove/Demos/* Files needed for running Cove package demos
+/Cove/COPYING copyright notice for Cove package, and
+ information on distribution policy
diff --git a/GNULICENSE b/GNULICENSE
new file mode 100644
index 0000000..a43ea21
--- /dev/null
+++ b/GNULICENSE
@@ -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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) 19yy <name of author>
+
+ 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.
+
+ <signature of Ty Coon>, 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/INSTALL b/INSTALL
new file mode 100644
index 0000000..01f8040
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,50 @@
+
+Installation of tRNAscan-SE: a tool for finding transfer RNAs
+-----------------------------------------------------------------
+
+1) Edit the top of the Makefile.
+ Set the paths and other make variables to suit your system.
+
+ In particular, you need to specify:
+ 1) where executables are to be installed
+ 2) where data files are to be installed
+ 3) where Perl is already installed on the system
+ 4) what the Perl binary is called (i.e. 'perl' or 'perl5')
+ 5) where temporary files will reside
+ 6) where to install man pages
+
+2) type 'make' to build the programs
+
+3) type 'make install' to install the programs and man pages.
+
+!! NOTE: If you later manually move the location of
+ binaries or data files from the directories specified in
+ the 'Makefile', you need to delete the tRNAscan-SE
+ executable, update the locations specified in the Makefile,
+ and 'make install' again.
+
+4) type 'make testrun' to run tRNAscan-SE on a sample sequence; if the
+program runs with no error messages, tRNAscan-SE has been installed
+correctly
+
+5) type 'make clean' to clean up.
+
+!! Note: A small Perl script (checkversion.pl) will run in the process of
+'make'ing tRNAscan-SE. If you have specified an invalid location or
+version of Perl (<5.0) in the Makefile PERLDIR variable, the make will
+fail. If you plan to install a correct version of Perl AFTER
+installing the tRNAscan-SE package, you may short-circut this check by
+commenting out the line in the makefile containing 'checkversion.pl'.
+
+tRNAscan-SE is known to build cleanly on a number of different UNIX
+platforms and OS's, including:
+ SGI, IRIX
+ Sun, Solaris
+ DEC Alpha, OSF/1
+ Intel x86, Linux
+
+Non-ANSI compilers may need one or more -MDEFS defined (see notes in
+Makefile if you have a compilation problem).
+
+It is currently maintained under Linux on an Intel PIII-500 using gcc.
+
diff --git a/MANUAL b/MANUAL
new file mode 100644
index 0000000..6f5ed0f
--- /dev/null
+++ b/MANUAL
@@ -0,0 +1,1147 @@
+--------------------------------------------------------------
+tRNAscan-SE: a program for improved detection of transfer RNA
+genes in genomic sequence
+
+Todd Lowe (1) & Sean Eddy (2)
+
+(1) Dept. of Genetics, Stanford University, Palo Alto, CA
+(2) Dept. of Genetics, Washington U. School of Medicine, St. Louis
+--------------------------------------------------------------
+Current release: 1.21 (October 2000)
+
+Note: An HTML version of this manual can be found on the
+web at http://genome.wustl.edu/lowe/tRNAscan-SE-Manual/Manual.html
+
+
+1. Introduction
+
+ A. Brief Description
+
+tRNAscan-SE identifies transfer RNA genes in genomic DNA or RNA
+sequences. It combines the specificity of the Cove probabilistic RNA
+prediction package (Eddy & Durbin, 1994) with the speed and
+sensitivity of tRNAscan 1.3 (Fichant & Burks, 1991) plus an
+implementation of an algorithm described by Pavesi and colleagues
+(1994) which searches for eukaryotic pol III tRNA promoters (our
+implementation referred to as EufindtRNA). tRNAscan and EufindtRNA
+are used as first-pass prefilters to identify "candidate" tRNA regions
+of the sequence. These subsequences are then passed to Cove for
+further analysis, and output if Cove confirms the initial tRNA
+prediction. In this way, tRNAscan-SE attains the best of both worlds:
+(1) a false positive rate of less than one per 15 billion nucleotides
+of random sequence, (2) the combined sensitivities of tRNAscan and
+EufindtRNA (detection of 99% of true tRNAs), and (3) a search speed
+1,000 to 3,000 times faster than Cove analysis and 30 to 90 times
+faster than the original tRNAscan 1.3 (tRNAscan-SE uses both a
+code-optimized version of tRNAscan 1.3 which gives a 650-fold increase
+in speed, and a fast C implementation of the Pavesi et al. algorithm).
+This program and results of its analysis of a number of genomes have
+been published in Nucleic Acids Research (4).
+
+
+ B. What is included in this package?
+
+This distribution includes the PERL script tRNAscan-SE, all the files
+necessary to compile and run the complete COVE package (version
+2.4.4), all the files necessary to compile and run the modified
+version of tRNAscan (version 1.4), and all the files needed to compile
+and run EufindtRNA 1.0 (the cove programs, tRNAscan 1.4, and
+EufindtRNA are included for use with the tRNAscan-SE program, but may
+also be run as stand-alone programs. Installation of the PERL
+(Practical Extraction and Report Language, Larry Wall) interpreter
+package version 5.0 or later is required to run the tRNAscan-SE PERL
+script.
+
+ C. Getting Started
+
+First, see the INSTALL file for installation instructions.
+
+Once installed, the user may wish to work through several of the
+examples included (Section 6 of this document) to get a quick feel for
+the program's operation and some of the most commonly used command
+line options. A description of the default run mode and output
+appears in Section 4, and a description of each of the program options
+is included in Section 5 of this document.
+
+ D. Intended Use
+
+tRNAscan-SE was designed to make rapid, sensitive searches of genomic
+sequence feasible using the selectivity of the Cove analysis package.
+We have optimized search sensitivity with eukaryote cytoplasmic &
+eubacterial sequences, but it may be applied more broadly with a
+slight reduction in sensitivity.
+
+ E. Web Resources
+
+For small-scale users and those who are unable to install tRNAscan-SE
+on a local UNIX platform, a web-based version of the program is
+available for on-line tRNA analysis at
+"http://genome.wustl.edu/eddy/tRNAscan-SE/". All of the most
+frequently used options are available in the web-based version. Links
+to the most recent release of the program and the tRNAscan-SE Genomic
+tRNA Database are also available from this page.
+
+2. Methods
+
+tRNAscan-SE does no tRNA detection itself, but instead combines the
+strengths of three independent tRNA prediction programs by negotiating
+the flow of information between them, performing a limited amount of
+post-processing, and outputting the results. The program works in
+three main phases. In the first stage, it runs two independent tRNA
+detection programs on the input DNA sequence. These relatively fast,
+first-pass detection programs include a modified, optimized version of
+tRNAscan 1.3 (1), and EufindtRNA, an implementation of another tRNA
+search algorithm previously described (3).
+
+tRNAscan 1.3 detects tRNAs by initially looking for short, well
+conserved intragenic promoter sequences (A & B boxes in eukaryotes)
+found in the TPC and D arm regions of prototypic tRNAs. Once a
+specific number of nucleotides in the sequence match the consensus
+promoter (defined by an arbitrary score threshold), the program then
+progressively attempts to identify the various stem-loop structures
+found in the tRNA "clover leaf". As each arm is identified by the
+presence of base-pairing in the stem, correct loop size, and several
+invariant and semi-invariant bases, a "general score" counter is
+incremented. If the final score exceeds an empirically determined
+threshold, the tRNA location, anticodon, and type are saved.
+
+EufindtRNA, on the other hand, only searches for linear sequence
+signals. A step-wise algorithm uses newly developed log-odds score
+matrices to first identify A and B box promoter elements that exceed
+an empirically determined cutoff. The scores for these A and B boxes
+are then added to a log odds score for the nucleotide distance between
+the A and B boxes to produce an intermediate score. Finally, a log
+odds score for the distance to the nearest downstream poly-T pol III
+termination signal is added to the intermediate score to obtain a
+final score. If the final score is above a final score cutoff, the
+tRNA identity and location is saved. tRNAscan-SE uses a less
+selective version of this algorithm that does not look for pol III
+termination signals, thus uses the intermediate score as a final
+cutoff. Also, the intermediate score cutoff is loosened slightly
+relative to the intermediate cutoff described in the original
+algorithm (3). These modifications increase the algorithm's
+sensitivity but greatly reduce EufindtRNA's selectivity. This does
+not reduce the final selectivity of tRNAscan-SE since a secondary
+filter (Cove) is being used to eliminate false positives. The
+sensitivity of EufindtRNA is roughly comparable to tRNAscan 1.3, but
+it appears to be complementary in that EufindtRNA tends to identify
+tRNAs missed by tRNAscan 1.3 and vice versa (3). tRNAscan-SE takes
+advantage of this fact, and saves results from both tRNAscan 1.3 and
+EufindtRNA, then merges them into one list of non-redundant
+"candidate" tRNA identifications.
+
+In the second stage, tRNAscan-SE extracts the DNA subsequences
+identified as possible tRNAs and passes only these segments to an RNA
+search program in the Cove program suite (covels) for analysis. Cove
+programs look for tRNAs in a very different way. A probabilistic
+model for tRNA has been developed by aligning known tRNAs and giving a
+base-specific probability score to every nucleotide in the tRNA model.
+Also, Cove uses a special method for capturing secondary RNA structure
+information using a type of language referred to as a stochastic
+context-free grammar (SCFG). Cove applies this probabilistic model to
+the entire windowed sequence, and produces a probability score that
+the sequence matches the tRNA model. If the score exceeds 20.0 bits,
+the tRNA is considered a true tRNA (based on empirical studies in
+ref. 2).
+
+In the final phase, tRNAscan-SE takes those tRNAs confirmed as such
+and runs another Cove program (coves) that displays RNA secondary
+structure. The tRNA type is predicted by identifying the anticodon
+within the structure output. Introns are also automatically
+identified from the structure output as runs of five or more
+consecutive non-consensus nucleotides within the anticodon loop.
+
+tRNAscan-SE uses heuristics to try to distinguish pseudogenes from
+true tRNAs, primarily on lack of tRNA-like secondary structure. A
+second tRNA covariance model was created from the original 1415-tRNA
+alignment, under the constraint that no secondary structure is
+conserved (this model is effectively just a sequence profile, or
+hidden Markov model). By subtracting a tRNA's similarity score to the
+primary structure-only model from that using the complete tRNA model,
+a secondary structure-only score is obtained. We have observed that
+tRNAs with low scores for either component of the total score were
+often pseudogenes. Thus, tRNAs are marked as likely pseudogenes if
+they have either a score of less than 10 bits for the primary sequence
+component of the total score, or a score of less than 5 bits for the
+secondary structure component of the total score. Selenocysteine
+tRNAs are not checked by these rules since they have atypical primary
+and secondary structure. Also, use of the -O option (search for
+organellar tRNAs) disables pseudogene checking since these criteria
+are geared towards detecting cytoplasmic pseudogenes (some true
+non-eukaryotic tRNA are marked as pseudogenes by this analysis).
+Final tRNA predictions are then saved in tabular, ACeDB, or secondary
+structure output format.
+
+For more details on the program algorithm & implementation, see the
+Nucleic Acids Research paper (4).
+
+
+3. Performance / Requirements
+
+Performance will obviously vary depending on the machine architecture,
+memory, and OS efficiency. The examples included in this document
+were run on a Silicon Graphics Indigo2 R4400-200 running IRIX 5.3,
+with over 32Mb of memory. tRNAscan-SE runs at approximately 20,000 to
+45,000 bp/sec in its default operation mode on this machine.
+
+
+4. Default Program Operation
+
+
+Invoking tRNAscan-SE:
+
+The program is invoked by giving it a series of optional command line
+parameters, then a list of one or more sequence files written in the
+FASTA format (see appendix A for example of FASTA format):
+
+tRNAscan-SE [-options] <FASTA file(s)>
+
+By default, the header credits and selected command-line options are
+printed to the screen via standard error, followed by the final
+results of the tRNA search written to standard output in a tabular
+format (see below). By default, tRNAscan-SE searches for eukaryotic
+cytoplasmic tRNAs. To search for prokaryotic, archaeal, or organellar
+tRNAs, use search mode options -P, -A, -O, repectively. If the
+sequences are from more than one phylogenetic domain, the general tRNA
+model (option -G) may be used with minimal loss of sensitivity and
+selectivity (the publication describing tRNAscan-SE used the general
+tRNA model exclusively, ref. 4).
+
+Sequence tRNA Bounds tRNA Anti Intron Bounds Cove
+Name tRNA # Begin End Type Codon Begin End Score
+-------- ------ ----- --- ---- ----- ----- ----- -----
+CELF22B7 1 12619 12738 Leu CAA 12657 12692 60.01
+CELF22B7 2 19480 19561 Ser AGA 0 0 80.44
+CELF22B7 3 26367 26439 Phe GAA 0 0 80.32
+CELF22B7 4 26992 26920 Phe GAA 0 0 80.32
+CELF22B7 5 23765 23694 Pro CGG 0 0 75.76
+
+Each new tRNA in a sequence is consecutively numbered in the 'tRNA #'
+column. 'tRNA Bounds' specify the starting (5') and ending (3')
+nucleotide bounds for the tRNA. tRNAs found on the reverse (lower)
+strand are indicated by having the Begin (5') bound greater than the
+End (3') bound (see tRNAs #4 & #5 in output above).
+
+The 'tRNA Type' is the predicted amino acid charged to the tRNA
+molecule based on the predicted 'Anticodon' (written 5'->3') displayed
+in the next column. tRNAs that fit criteria for potential pseudogenes
+(poor primary or secondary structure, discussed in Methods), will be
+marked with "Pseudo" in the 'tRNA Type' column. If there is a
+predicted intron in the tRNA, the next two columns indicate the
+nucleotide bounds. If there is no predicted intron, both of these
+columns contain zero. The final column is the Cove score for the tRNA
+in bits. Note that this score will vary somewhat depending on the
+particular tRNA covariance model used in the analysis (the search mode
+selects which tRNA covariance model will be used: eukaryote-specific,
+prokaryote-specific, archae-specific, or general). tRNAscan-SE counts
+any sequence that attains a score of 20.0 bits or larger as a tRNA
+(based on empirical studies conducted by Eddy & Durbin in ref #2).
+
+
+Temporary files:
+
+In the course of program execution, several temporary files are
+written to and deleted from the 'TEMPDIR' directory specified in the
+Makefile on installing the program. Alternatively, the environment
+variable 'TMPDIR' can be set to another directory which will override
+the temporary directory specified in the Makefile.
+
+For the average user, /tmp should work fine as the temp file
+directory. For sequencing centers or users scanning very large
+individual sequences (>1MBp), or many sequences at once (>4 instances
+of tRNAscan-SE at once), it might be advisable to use /usr/tmp or some
+other temporary directory that has sufficient free disk space (at
+least 10MB free).
+
+Note: If multiple FASTA files are specified on the command line,
+tRNAscan-SE creates a temporary file 'tscan<process-id-number>.mseq'
+in which all sequence files are concatenated together for ease of
+processing. Because of this, the temporary directory must have enough
+room to temporarily save a copy of all the sequence files (at once)
+that have been specified on the command line --- this may be a problem
+for ``power users'' who may conceivably scan an entire directory of
+cosmids totalling many MBp of sequence. In these cases, I would
+advise the user to either run a smaller set of sequences at once, or
+make sure the TEMPDIR can handle the large '.mseq' temporary file.
+
+
+5. Command-line Options
+
+ A. Search Mode Options
+
+By default, the eukaryotic tRNA model is used for tRNA analysis. To
+select an alternate tRNA model for sequences from other sources (other
+phylogenetic domains or mitochondria/chloroplasts), use one of the
+following options:
+
+ -B : search for bacterial tRNAs
+
+This option selects the bacterial covariace model for tRNA analysis,
+and loosens the search parameters for EufindtRNA to improve detection
+of bacterial tRNAs. Use of this mode with bacterial sequences
+will also improve bounds prediction of the 3' end (the terminal CAA
+triplet).
+
+ -A : search for archaeal tRNAs
+
+This option selects an archaeal-specific covariance model for tRNA
+analysis, as well as slightly loosening the EufindtRNA search
+cutoffs.
+
+ -O : search for organellar (mitochondrial/chloroplast) tRNAs
+
+This parameter bypasses the fast first-pass scanners that are poor at
+detecting organellar tRNAs and runs Cove analysis only. Since true
+organellar tRNAs have been found to have Cove scores between 15 and 20
+bits, the search cutoff is lowered from 20 to 15 bits. Also,
+pseudogene checking is disabled since it is only applicable to
+eukaryotic cytoplasmic tRNA pseudogenes. Since Cove-only mode is
+used, searches will be very slow (see -C option below) relative to the
+default mode.
+
+ -G : use general tRNA model
+
+This option selects the general tRNA covariance model that was trained
+on tRNAs from all three phylogenetic domains (archaea, bacteria, &
+eukarya). This mode can be used when analyzing a mixed collection of
+sequences from more than one phylogenetic domain, with only slight
+loss of sensitivity and selectivity. The original publication
+describing this program and tRNAscan-SE version 1.0 used this general
+tRNA model exclusively. If you wish to compare scores to those found
+in the paper or scans using v1.0, use this option. Use of this option
+is compatible with all other search mode options described in this
+section.
+
+ -C : search using Cove analysis only (max sensitivity, slow)
+
+Directs tRNAscan-SE to analyze sequences using Cove analysis only.
+This option allows a slightly more sensitive search than the default
+tRNAscan + EufindtRNA -> Cove mode, but is much slower (by approx. 250
+to 3,000 fold). Output format and other program defaults are
+otherwise identical to the normal analysis.
+
+ -H : show both primary \& secondary structure score components
+ to covariance model bit scores
+
+This option displays the breakdown of the two components of the
+covariance model bit score. Since tRNA pseudogenes often have one
+very low component (good secondary structure but poor primary sequence
+similarity to the tRNA model, or vice versa), this information may be
+useful in deciding whether a low-scoring tRNA is likely to be a
+pseudogene. The heuristic pseudogene detection filter uses this
+information to flag possible pseudogenes -- use this option to see why
+a hit is marked as a possible pseudogene. The user may wish to
+examine score breakdowns from known tRNAs in the organism of interest
+to get a frame of reference.
+
+ -D : disable pseudogene checking
+
+Manually disable checking tRNAs for poor primary or secondary
+structure scores often indicative of eukaryotic pseudogenes. This
+will slightly speed the program & may be necessary for non-eukaryotic
+sequences that are flagged as possible pseudogenes but are known to be
+functional tRNAs.
+
+
+ B. Output Options
+
+
+ -o <file> : save final results in <file>
+
+Specifiy this option to write results to <file> rather than
+standard output.
+
+ -f <file> : save results and Cove tRNA secondary structures to <file>
+
+This option saves results and secondary structure information (as
+predicted by the coves program) in <file>. Use '$' in place of <file>
+to send to standard output. An example of the output format for one
+tRNA appears below:
+
+CELF22B7.trna4 (26992-26920) Length: 73 bp
+Type: Phe Anticodon: GAA at 34-36 (26959-26957) Score: 73.88
+ * | * | * | * | * | * | * |
+Seq: GCCTCGATAGCTCAGTTGGGAGAGCGTACGACTGAAGATCGTAAGGtCACCAGTTCGATCCTGGTTCGGGGCA
+Str: >>>>>>>..>>>>........<<<<.>>>>>.......<<<<<.....>>>>>.......<<<<<<<<<<<<.
+
+ ^ ^ ^ ^ ^ ^ ^ ^^ ^
+ | | | | | | | || |
+ +-----+ +--------------+ +---------------+ +---------------++-----+
+ | D-stem/loop Anticodon TPC stem/loop |
+ | stem/loop |
+ | |
+ +----------------------------------------------------------------+
+ Isoacceptor stem
+
+The first line contains the sequence name, trna#, tRNA bounds (in
+parentheses), and length of the tRNA. The next line contains the
+isoacceptor tRNA Type, Anticodon (with tRNA-relative and
+sequence-absolute bounds), and the Cove Score. This is identical
+information as would be seen in the tabular output format, excluding
+the anticodon bounds. The next line contains hash marks every 5 and
+10 bp to ease position identification in the tRNA sequence that
+appears on the following line. On the sequence line, nucleotides
+matching the "consensus" tRNA model used in Cove analysis appear in
+upper case, while introns and other nucleotides in non-conserved
+positions are printed in lower-case letters. The last line contains
+predicted secondary structure folding of the tRNA, with nested '>' and
+'<' symbols representing base pairings. The various tRNA features are
+labelled in this example.
+
+ -a : output results in ACeDB output format
+
+This option allows results to be written in ACeDB format instead of
+the default tabular output format.
+
+ -m <file> : save statistics summary for run
+
+This option directs tRNAscan-SE to write a brief summary to <file>
+which contains the run options selected as well as statistics on the
+number of tRNAs detected at each phase of the search, search speed,
+and other statistics.
+
+The following is a description of each of these statistics, followed
+by an example stats summary file created from scanning the C. elegans
+cosmid F59C12:
+
+====================
+
+tRNAscan-SE run results (on host <computer name>)
+Started: <time & date tRNAscan-SE began>
+
+<Parameters used for search printed here>
+
+First-pass (tRNAscan/EufindtRNA) Stats:
+---------------------------------------
+Sequences read: <total # of FASTA sequences read>
+Seqs w/at least 1 hit: <total sequences with at least one tRNA predicted>
+Bases read: <total nucleotides in all sequences searched (both strands)>
+Bases in tRNAs: <total nucleotides in tRNAs predicted>
+tRNAs predicted: <# tRNAs predicted from first-pass search program(s)>
+Av. tRNA length:
+Script CPU time: <CPU time spent by tRNAscan-SE
+ reading seqs, setting up run & writing results>
+Scan CPU time: <CPU time spent by tRNAscan/EufindtRNA finding tRNAs>
+Scan speed: <Averaged tRNAscan+EufindtRNA search speed>
+
+First pass search(es) ended: <time & date tRNAscan/EufindtRNA searches
+ finished, Cove analysis begins>
+
+Cove Stats:
+-----------
+Candidate tRNAs read: <number of tRNAs detected by tRNAscan/EufindtRNA
+ that were passed to Cove for verification>
+Cove-confirmed tRNAs: <number of tRNAs positively confirmed by Cove>
+Bases scanned by covels: <total nucleotides in all tRNAs searched by
+ Cove (covels-SE program) analysis>
+Bases in confirmed tRNAs: <total nucleotides in confirmed tRNAs>
+Script CPU time: <CPU time spent by tRNAscan-SE
+ reading seqs, setting up runs & writing results>
+Cove CPU time: <CPU time spent by Cove analysis programs>
+Scan speed: <Average Cove search speed>
+
+Cove analysis of tRNAs ended: <time & date Cove analysis and
+ tRNAscan-SE completed>
+
+Summary
+--------
+False positive tRNAs: <percent of total candidate tRNAs passed to Cove
+ that were rejected as false positives>
+False positive bases: <total nucleotides in false positive tRNAs
+ divided by total nucleotides searched>
+Percent of total bases
+ scanned by covels: <percent of total nucleotides in input sequences
+ that were analyzed by Cove>
+Overall scan speed: <Average search speed for entire program>
+
+=================
+
+An example stats summary file using the default search options on
+cosmid F59C12 follows:
+
+=================
+
+tRNAscan-SE run results (on host wol)
+Started: Mon Mar 17 16:36:55 CDT 1996
+
+------------------------------------------------------------
+Sequence file(s) to search: F59C12.fa
+Results written to: Standard output
+Output format: Tabular
+Searching with: tRNAscan + EufindtRNA -> Cove
+tRNAscan parameters: Strict
+EufindtRNA parameters: Relaxed (Int Cutoff= -32.1)
+Search statistics saved in: F59C12.stats
+------------------------------------------------------------
+
+First-pass (tRNAscan/EufindtRNA) Stats:
+---------------
+Sequences read: 1
+Seqs w/at least 1 hit: 1
+Bases read: 57976
+Bases in tRNAs: 299
+tRNAs predicted: 4
+Av. tRNA length: 74
+Script CPU time: 0.18 s
+Scan CPU time: 0.55 s
+Scan speed: 105.4 Kbp/sec
+
+First pass search(es) ended: Mon Mar 17 16:36:56 CDT 1996
+
+Cove Stats:
+-----------
+Candidate tRNAs read: 4
+Cove-confirmed tRNAs: 3
+Bases scanned by covels: 355
+Bases in confirmed tRNAs: 218
+Script CPU time: 0.22 s
+Cove CPU time: 7.96 s
+Scan speed: 44.6 bp/sec
+
+Cove analysis of tRNAs ended: Mon Mar 17 16:37:12 CDT 1996
+
+Summary
+--------
+False positive tRNAs: 25.0 %
+False positive bases: 0.2 %
+Percent of total bases
+ scanned by covels: 0.6 %
+Overall scan speed: 6506.8 bp/sec
+
+===================
+
+ -d : display program progress messages
+
+This option directs the program to print messages indicating the
+progress of the program to standard output. If final results are also
+being sent to standard output, some of these messages will be
+suppressed so as to not interrupt display of the results.
+
+ -l <file> : save log of program progress in <file>
+
+Identical to -d option, but sends message to <file> instead of
+standard output. Note: the -d option overrides the -l option if both
+are specified on the same command line.
+
+ -q : quiet mode (credits & run option selections suppressed)
+
+This option suppresses the program credits and run option selections
+normally printed to standard error at the beginning of each run.
+
+ -b : brief output format (no column headers)
+
+This option eliminates column headers that appear by default when
+writing results in tabular output format. Useful if results are to be
+parsed or sent to another program.
+
+ -N : output corresponding codons instead of tRNA anticodons
+
+This option causes tRNAscan-SE to output a tRNA's corresponding codon
+in place of its anticodon.
+
+
+ -? # : using '#' symbol in specifying output file names
+
+The '#' symbol may be used as shorthand to specify "default" file
+names for output files. The default file names are constructed by
+using the input sequence file name, followed by an extension
+specifying the output file type <seqfile.ext> where '.ext' is
+
+extension used with option description
+--------- ---------------- -----------
+.out -o final output results (tabular or ACeDB format)
+.stats -m summary statistics file
+.log -l run progress file
+.ss -f secondary structures save file
+.fpass.out -r formatted, tabular output from first-pass runs
+.fpos -F FASTA file of tRNAs identified in
+ first-pass scans that were found to be
+ false positives by Cove analysis
+
+Note:
+
+1) if the input sequence file name has the extensions '.fa' or
+'.seq', these extensions will be removed before using the filename as
+a prefix for default file names. (example -- input file name
+'Mygene.seq' will have the output file name 'Mygene.out' if '#' is
+used with the -o option).
+
+2) if more than one sequence file is specified on the command line,
+the "default" output file prefix will be the name of the FIRST
+sequence file on the command line. Use the -p option (described next)
+to change this default name to something more appropriate when
+specifying more than one sequence file on the command line.
+
+ -p <label> : use <label> prefix for all output files
+
+This option allows the user to specify the default output file prefix
+when using the '#' file name specification (instead of using the input
+sequence file name).
+
+ -y : show origin of first-pass hits
+
+This option displays which of the first-pass scanners detected the
+tRNA being output. "Ts", "Eu", or "Bo" will appear in the last column
+of Tabular output, indicating that either tRNAscan 1.4, EufindtRNA, or
+both scanners detected the tRNA, respectively.
+
+
+ C. Specify Alternate Cutoffs / Data Files
+
+
+ -X <score> : set Cove cutoff score for reporting tRNAs (default=20)
+
+This option allows the user to specify a different Cove score
+threshold for reporting tRNAs. It is not recommended that novice
+users change this cutoff, as a lower cutoff score will increase the
+number of pseudogenes and other false positives found by tRNAscan-SE
+(especially when used with the "Cove only" scan mode). Conversely, a
+higher cutoff than 20.0 bits will likely cause true tRNAs to be missed
+by tRNAscan (numerous "real" tRNAs have been found just above the 20.0
+cutoff). Knowledgable users may wish to experiment with this
+parameter to find unusual tRNAs or pseudogenes beyond the normal range
+of detection, keeping the preceding caveats in mind.
+
+ -L <length>: set max length of tRNA intron+variable region
+ (default=116bp)
+
+The default maximum tRNA length for tRNAscan-SE is 192 bp, but this
+limit can be increased with this option to allow searches with no
+practical limit on tRNA length. In the first phase of tRNAscan-SE,
+EufindtRNA searches for A and B boxes of <length> maximum distance
+apart, and passes only the 5' and 3' tRNA ends to covariance model
+analysis for confirmation (removing the bulk of long intervening
+sequences). tRNAs containing group I and II introns have been
+detected by setting this parameter to over 800 bp. Caution: group I
+or II introns in tRNAs tend to occur in positions other than the
+canonical position of protein-spliced introns, so tRNAscan-SE
+mispredicts the intron bounds and anticodon sequence for these cases.
+tRNA bound predictions, however, have been found to be reliable in
+these same tRNAs.
+
+ -I <score> : manually set "intermediate" cutoff score
+ for EufindtRNA
+
+This score cutoff affects the sensitivity of the first-pass scanner
+EufindtRNA. This parameter should not need to be adjusted from its
+default values (variable depending on search mode), but is included
+for users who are familiar with the Pavesi et al. (1994) paper and
+wish to set it manually. See Lowe & Eddy (1997) for details on
+parameter values used by tRNAscan-SE depending on the search mode.
+
+ -z <number> : use <number> nucleotides padding for first-pass tRNA
+ predictions
+
+By default, tRNAscan-SE adds 7 nucleotides to both ends of tRNA
+predictions when first-pass tRNA predictions are passed to covariance
+model (CM) analysis. CM analysis generally trims these bounds back
+down, but on occassion, allows prediction of an otherwise truncated
+first-pass tRNA prediction.
+
+ -g <file> : use alternate genetic codes specified in <file> for
+ determining tRNA type
+
+By default, tRNAscan-SE uses a standard universal codon->amino acid
+translation table that is specified at the end of the tRNAscan-SE.src
+source file. In many mitochondrial and a number of other microbial
+organisms, there are exceptions to this universal translation code.
+This option allows the user to specify exceptions to the universal
+code. Several alternate translation code files are included in this
+package for convenience:
+
+File
+=====
+gcode.cilnuc for Ciliates, Dasycladacean, & Hexamita nuclear tRNAs
+gcode.echdmito for Echinoderm mitochondrial tRNAs
+gcode.invmito for Invertibrate mitochondrial tRNAs
+gcode.othmito for Mold, Protozoans, & Coelenterate mitochondrial tRNAs
+gcode.vertmito for Vertibrate mitochondrial tRNAs
+gcode.ystmito for Yeast mitochondrial tRNAs
+
+
+The user may also create a new alternate translation file. An
+example of an alternate translation code specification file follows:
+
+
+# Vertebrate mitochondrial translation codes
+# Format: <Codon> <3-letter AA abbreviation> <One letter AA abrev>
+
+TGA Trp W
+ATA Met M
+AGR Stp *
+
+
+
+Comments or other information will be ignored on lines preceded by a
+pound symbol '#'. Anticodon translation codes are specified by
+placing the three base codon, the three letter amino acid
+abbreviation, and the single letter amino acid abbreviation all on a
+single line (each separated by a space or tab). Degenerate symbols
+such as 'N', 'R', and 'Y' may also be used for codon specification.
+Any codon not specified in the alternate genetic code file will use
+the translation in the default 'universal' genetic code table that
+occurs at the very end of the tRNAscan-SE.src source code file.
+Changes can be made directly to the default translation table, but a
+new 'make install' must be run to install the modified PERL script.
+
+Note: this option does not have any effect when using the -T or -E
+(search using tRNAscan or EufindtRNA only) -- you must be running in
+default or Cove only analysis mode.
+
+ -c <file> : use an alternate covariance model specified in <file>
+
+For users who have developed their own tRNA covariance models using
+the Cove program "coveb" (see Cove documentation), this parameter
+allows substitution for the default tRNA covariance models. May be
+useful for extending Cove-only mode detection of particularly strange
+tRNA species such as mitochondrial tRNAs.
+
+
+ D. Miscellaneous Options
+
+
+ -h : print full list of available program options
+
+Prints this list of program options, each with a brief, one-line
+description.
+
+ -Q : do not prompt user before overwriting pre-existing files
+
+By default, if an output result file to be written to already exists,
+the user is prompted whether the file should be over-written or
+appended to. Using this options forces overwriting of pre-existing
+files without an interactive prompt. This option may be handy for
+batch-processing and running tRNAscan-SE in the background.
+
+ -n <EXPR> : search only sequences with names matching <EXPR> string
+
+This option allows analysis of selected sequences in a sequence file
+containing multiple sequences. Only those sequences with names (first
+non-white space word after ">" symbol on FASTA name/description line)
+matching <EXPR> are analyzed. <EXPR> may contain * or ? wildcard
+characters, but the user should enclose such expressions in single
+quotes (for example: -n 'HU?alpha*') to prevent the shell from
+attempting to expand wildcards into file name matches.
+
+ -s <EXPR> : start search at sequence with name matching <EXPR> string
+ and continue to end of input sequence file(s)
+
+This option directs the program to analyze the first sequence with a
+name matching <EXPR>, and every sequence thereafter. This may be
+useful for re-starting crashed/aborted runs at the point where the
+previous run stopped. (if same names for output file(s) are used,
+program will ask if files should be over-written or appended to --
+choose append and run will successfully be restarted where it left
+off).
+
+
+ E. Options for testing & special applications
+
+
+ -T : search using tRNAscan only (defaults to strict search params)
+
+Directs tRNAscan-SE to use only tRNAscan to analyze sequences. This
+mode will cause tRNAscan to default to using "strict" parameters
+(similar to tRNAscan version 1.3 operation). This mode of operation
+is faster (about 3-5 times faster than default mode analysis), but
+will result in approximately 0.2 to 0.6 false positive tRNAs per Mbp,
+decreased sensitivity, and less reliable prediction of anticodons,
+tRNA isotype, and introns.
+
+ -t <mode> : explicitly set tRNAscan params, where
+ <mode> = R or S (R=relaxed, S=strict tRNAscan
+ v1.3 params)
+
+This option allows selection of strict or relaxed search parameters
+for tRNAscan analysis. By default, "strict" parameters are used.
+Relaxed parameters may give very slightly increased search
+sensitivity, but increase search time by 20-40 fold.
+
+ -E : search using Eukaryotic tRNA finder (EufindtRNA) only
+
+This option runs EufindtRNA alone to search for tRNAs. Since Cove is
+not being used as a secondary filter to remove false positives, this
+run mode defaults to "Normal" parameters which more closely
+approximates the sensitivity and selectivity of the original algorithm
+describe by Pavesi and colleagues (see the next option, -e for a
+description of the various run modes).
+
+ -e <mode> : explicitly set EufindtRNA params, where <mode>=R, N, or S
+ (relaxed, normal, or strict)
+
+This option allows the user to explicitly set the parameters for
+EufindtRNA. The "relaxed" mode is used for EufindtRNA when using
+tRNAscan-SE in default mode. With relaxed parameters, tRNAs that lack
+pol III poly-T terminators are not penalized, increasing search
+sensitivity, but decreasing selectivity. When Cove analysis is being
+used as a secondary filter for false positives (as in tRNAscan-SE's
+default mode), overall selectivity is not decreased.
+
+Using "normal" parameters with EufindtRNA does incorporate a log odds
+score for the distance between the B box and the first poly-T
+terminator, but does not disqualify tRNAs that do not have a
+terminator signal within 60 nucleotides. This mode is used by default
+when Cove analysis is not being used as a secondary false positive
+filter.
+
+Using "strict" parameters with EufindtRNA also incorporates a log odds
+score for the distance between the B box and the first poly-T
+terminator, but _rejects_ tRNAs that do not have such a signal within
+60 nucleotides of the end of the B box. This mode most closely
+approximates the originally published search algorithm (3);
+sensitivity is reduced relative to using "relaxed" and "normal" modes,
+but selectivity is increased which is important if no secondary
+filter, such as Cove analysis, is being used to remove false
+positives. This mode will miss most prokaryotic tRNAs since the
+poly-T terminator signal is a feature specific to eukaryotic tRNAs
+genes (always use "relaxed" mode for scanning prokaryotic sequences
+for tRNAs).
+
+
+ -r <file> : save tRNAscan/EufindtRNA formatted output results in <file>
+
+Saves tabular, formatted output results from tRNAscan and/or
+EufindtRNA first pass scans in <file>. The format is similar to the
+final tabular output format, except no Cove score is available at this
+point in the search (if EufindtRNA has detected the tRNA, the negative
+log likelihood score is given). Also, the sequence ID number and
+source sequence length appear in the columns where intron bounds are
+shown in final output. This option may be useful for examining false
+positive tRNAs predicted by first-pass scans that have been filtered
+out by Cove analysis.
+
+ -u <file> : search with Cove only those sequences & regions delimited
+ in <file> (tabular results file format)
+
+This option allows the user to re-generate results from regions
+identified to have tRNAs by a previous tRNAscan-SE run. Either a
+regular tabular result file, or output saved with the -r option may be
+used as the specified <file>. This option is particularly useful for
+generating either secondary structure output (-f option) or ACeDB
+output (-a option) without having to re-scan entire sequences.
+Alternatively, if the -r option is used to generate the previous
+results file, tRNAscan-SE will pick up at the stage of
+Cove-confirmation of tRNAs and output final tRNA predicitons as with a
+normal run.
+
+Note: the -n and -s options will not work in conjunction with this
+option. Also, if consecutive sequences have identical names in the
+sequence file being scanned, only the first sequence will be scanned
+in the regions defined in the -u <file>.
+
+ -F <file> : save first-pass candidate tRNAs in <file> that were then
+ found to be false positives by Cove analysis
+
+This option saves candidate tRNAs found by either tRNAscan and/or
+EufindtRNA that were then rejected by Cove analysis as being false
+positives. tRNAs are saved in the FASTA sequence format.
+
+ -M <file> : save all sequences without at least one tRNA hit in <file>
+
+This option may be used when scanning a collection of known tRNA
+sequences to identify possible false negatives (incorreclty missed by
+tRNAscan-SE) or sequences incorrectly annotated as tRNAs (correctly
+passed over by tRNAscan-SE). Examination of primary & secondary
+structure covariance model scores (-H option), and visual inspection
+of secondary structures (use -F option) may be helpful resolving
+identification conflicts.
+
+
+
+6. Examples
+
+Several C. elegans cosmids and a subset of the Sprinzl tRNA database
+(animal cytoplasmic + eubacterial) are used in these examples to
+illustrate various features of the program; all have been included in
+the /Demo subdirectory so the user may also try out these examples.
+These files are written in the FASTA sequence format and have the file
+extension '.fa'. Run times are given for an R4000 Indigo SGI, and are
+approx. equal on a DEC Alpha 2100/400 190MHZ.
+
+
+## To get a list of run options, type the program name without any
+## parameters or input sequence files
+
+> tRNAscan-SE
+
+
+## Default run mode, one sequence & no parameters:
+
+> tRNAscan-SE F22B7.fa
+
+The following (selected) run options will be printed first:
+
+------------------------------------------------------------
+Sequence file(s) to search: F22B7.fa
+Results written to: Standard output
+Output format: Tabular
+Searching with: tRNAscan + EufindtRNA -> Cove
+tRNAscan parameters: Strict
+EufindtRNA parameters: Relaxed (Int Cutoff= -32.1)
+------------------------------------------------------------
+
+This search produces tabular output results of 5 tRNAs for the 40kbp
+cosmid F22B7. Takes about 15 seconds.
+
+
+## Saving output and run statistics files
+
+> tRNAscan-SE -o mytrnas -m mystats C28G1.fa
+
+The following (selected) run options will be printed first:
+
+------------------------------------------------------------
+Sequence file(s) to search: C28G1.fa
+Results written to: mytrnas
+Output format: Tabular
+Searching with: tRNAscan + EufindtRNA -> Cove
+tRNAscan parameters: Strict
+EufindtRNA parameters: Relaxed (Int Cutoff= -32.1)
+Search statistics saved in: mystats
+------------------------------------------------------------
+
+Default search mode, saves tabular output results for cosmid C28G1 in
+file 'mytrnas' and run statistics in file 'mystats'.
+
+
+## Using '#' as shorthand for default output file names,
+## saving output in ACeDB format
+
+> tRNAscan-SE -a -o# -m# C28G1.fa
+
+The following run options will be printed first:
+
+------------------------------------------------------------
+Sequence file(s) to search: C28G1.fa
+Results written to: C28G1.out
+Output format: ACeDB
+Searching with: tRNAscan + EufindtRNA -> Cove
+tRNAscan parameters: Strict
+EufindtRNA parameters: Relaxed (Int Cutoff= -32.1)
+Search statistics saved in: C28G1.stats
+------------------------------------------------------------
+
+This is the same search as the immediately preceding example, but
+final results are saved in the file 'C28G1.out' and the statistics
+summary is saved in 'C28G1.stats' using the '#' shorthand for default
+output file names. Also, the results written to 'C28G1.out' are in
+the ACeDB format because the -a option was used.
+
+## Saving secondary structure information
+## Changing name of default output file name prefix
+
+> tRNAscan-SE -p mycosmid -f# -m# C28G1.fa
+
+The following run options will be printed first:
+
+------------------------------------------------------------
+Sequence file(s) to search: C28G1.fa
+Results written to: Standard output
+Output format: Tabular
+Searching with: tRNAscan + EufindtRNA -> Cove
+tRNAscan parameters: Strict
+EufindtRNA parameters: Relaxed (Int Cutoff= -32.1)
+tRNA secondary structure
+ predictions saved to: mycosmid.ss
+Search statistics saved in: mycosmid.stats
+------------------------------------------------------------
+
+This search sends the tabular results to standard output since no -o
+option was used. Secondary structure information for all tRNAs was
+saved in file 'mycosmid.ss' and run stats were saved in
+'mycosmid.stats' since the default file name prefix was specified as
+'mycosmid' using the -p option.
+
+
+## Searching only sequences matching a specified name
+## Searching with Prokaryotic search parameters
+## Viewing progress of the search analysis
+
+> tRNAscan-SE -d -P -o# -n 'DE*' Sprz-sub.fa
+
+------------------------------------------------------------
+Sequence file(s) to search: Sprz-sub.fa
+Search only names matching: DE*
+Results written to: Sprz-sub.out
+Output format: Tabular
+Searching with: tRNAscan + EufindtRNA -> Cove
+tRNAscan parameters: Strict
+EufindtRNA parameters: Relaxed (Int Cutoff= -36)
+------------------------------------------------------------
+
+In this example, the program's progress is displayed (-d option) as it
+searches through the input sequence file in this example. This search
+will only analyze the 39 sequences in the file Sprz-sub.fa (1013 total
+seqs) with names matching the 'DE*' key (ie. DE1140, DE1180, DE1200,
+etc).
+
+Since many of the sequences in this search are from prokaryotes, the
+-P parameter is used to increase search sensitivity to detect
+prokaryotic tRNAs that match the consensus A and B boxes less closely
+than eukaryotic tRNAs (the EufindtRNA intermediate Cutoff is set to
+-36 instead of the default -32.1; the lower the cutoff, the more
+sensitive the search). Also, the prokaryotic tRNA model is used in
+covariance model analysis.
+
+
+## Search for tRNAs using Cove analysis only
+
+> tRNAscan-SE -C -p F22B7cov -o# -m# F22B7.fa
+
+------------------------------------------------------------
+Sequence file(s) to search: F22B7.fa
+Results written to: F22B7cov.out
+Output format: Tabular
+Searching with: Cove only
+Search statistics saved in: F22B7cov.stats
+------------------------------------------------------------
+
+For users with the computational resources to spare, sequences can be
+analyzed using Cove analysis only (tRNAscan and EufindtRNA are not
+used as a pre-filter). This option is up to 3,000 times slower than
+using the default search mode, but may detect up to 1% of the tRNAs
+missed by tRNAscan-SE in default run mode. This example searches the
+F22B7 cosmid and finds no additional tRNAs over default tRNAscan-SE
+run mode. Takes about seventy minutes.
+
+
+## Search using tRNAscan analysis only
+
+> tRNAscan-SE -T -p sprinzl.tscan -l# -m# Sprz-sub.fa
+
+------------------------------------------------------------
+Sequence file(s) to search: Sprz-sub.fa
+Results written to: Standard output
+Output format: Tabular
+Searching with: tRNAscan only
+tRNAscan parameters: Strict
+Search log saved in: sprinzl.tscan.log
+Search statistics saved in: sprinzl.tscan.stats
+------------------------------------------------------------
+
+Using the -T option approximates using tRNAscan v1.3 only (less
+sensitive and less selective). The -l option saves a log of the
+program run in 'sprinzl.tscan.log'. The search finds 962/1013 tRNAs
+in about 40 seconds, versus the same search in default mode which
+finds 1007/1013 tRNAs in about 17 minutes (search speed goes down for
+default mode as density of tRNAs in input sequence(s) goes up).
+
+
+## Using a previous result file to get secondary structure and ACeDB
+## output without re-scanning entire sequence(s)
+
+First, re-run an example from above, this time saving the tabular
+output results:
+
+> tRNAscan-SE -o# F22B7.fa
+
+Now, suppose you'd like to see the secondary structures (and/or
+produce ACeDB output) for the tRNAs in this sequence. Instead of
+re-scanning the entire sequence with a completely new run, specify
+that tRNAscan-SE should only scan those regions known to have tRNAs
+from a previous tRNAscan-SE run. In the following example, the
+pre-existing result file "F22B7.out" is specified with the -u
+parameter, producing results faster than a complete re-scan of the
+whole cosmid:
+
+> tRNAscan-SE -u F22B7.out -f# -a -o F22B7.ace F22B7.fa
+
+------------------------------------------------------------
+Sequence file(s) to search: F22B7.fa
+Results written to: F22B7.ace
+Output format: ACeDB
+Searching with: Cove only
+Using previous
+tabular output file: F22B7.out
+tRNA secondary structure
+ predictions saved to: F22B7.ss
+------------------------------------------------------------
+
+The secondary structures for these tRNAs are saved in "F22B7.ss" and
+the results are saved in ACeDB format in the file "F22B7.ace". Useful
+for re-scanning just tRNAs in large sequences or sequence sets.
+
+
+## Using an alternate genetic code file
+
+> tRNAscan-SE -g gcode.cilnuc DQ6060.fa
+
+------------------------------------------------------------
+Sequence file(s) to search: DQ6060.fa
+Results written to: Standard output
+Output format: Tabular
+Searching with: tRNAscan + EufindtRNA -> Cove
+tRNAscan parameters: Strict
+EufindtRNA parameters: Relaxed (Int Cutoff= -32.1)
+Alternate transl code used: from file gcode.cilnuc
+------------------------------------------------------------
+
+The tRNA used in this example is from Tetrahymena thermophila, a
+ciliate protozoan with an alternate translation of the codon TAA
+(normally a stop codon) to glutamine. By using the alternate
+translations specified in the included file 'gcode.cilnuc', the
+correct tRNA type is output.
+
+
+7. Support / Bug Reports / Requests for added options
+
+This is the first release of tRNAscan-SE, so there are bound to be
+minor problems that will need to be fixed (although we've made every
+attempt to catch all problems on Sun, DEC Alpha, Pentium, and SGI
+machines). The user is free to either fix the bug him/herself, or
+send me detailed information on the problem (email to Todd Lowe,
+lowe at genetics.wustl.edu), and I will make reasonable efforts to remedy
+the problem. If you do decide to fix the problem yourself, I would
+like to be notified so that I may make the change in future updates.
+Also, if you have suggestions for options that might be added to
+enhance the usefulness of the program, feel free to suggest them.
+
+8. References
+
+1. Fichant, G.A. and Burks, C. (1991) "Identifying potential tRNA
+genes in genomic DNA sequences", J. Mol. Biol., 220, 659-671.
+
+2. Eddy, S.R. and Durbin, R. (1994) "RNA sequence analysis using
+covariance models", Nucl. Acids Res., 22, 2079-2088.
+
+3. Pavesi, A., Conterio, F., Bolchi, A., Dieci, G., Ottonello, S. (1994)
+"Identification of new eukaryotic tRNA genes in genomic DNA databases
+by a multistep weight matrix analysis of transcriptional control
+regions", Nucl. Acids Res., 22, 1247-1256.
+
+4. Lowe, T.M. & Eddy, S.R. (1997) "tRNAscan-SE: A program for
+improved detection of transfer RNA genes in genomic sequence",
+Nucl. Acids Res., 25, 955-964.
+
+
+Appendix A.
+
+The FASTA sequence format consists of a sequence name and description
+on a single line starting with the greater than symbol '>', followed
+by the sequence:
+
+> SequenceName description here
+ATGTCGTTACCGTCGTCGGGACCGACCATG
+AGAGCGA
+
+More than one sequence can be included in the same file:
+
+> Randseq1 first randomly generated seq
+GGTGGTTACTAACCGTAAGAGATGATGTCGCCGTGGTCGCGTGGCGCCGCGGACCCAGAT
+TGTACTTCTCTGAGTCGTTCTAGATCGACCAGTCTTCTAGCTTGCCCGTGAGGTATGGGG
+AGCCGCATATTGCCCACAAT
+> Randseq2 second randomly generated seq
+GCGACGCGTCTCTACACCAGACGCTTCTGTTGAGGAAGAGTGCCTGAGTGCAGGTCCTCG
+AGAACCCACTGGAACTTGAAGGGCGCGTCTCACTGGTCGTGAGAAGGCTCCGTCGATACG
+AAAGTCCATGCCAAGGACAT
+> Randseq3 third randomly generated seq
+GGCGAGTCTGAACTCACAAATATTGCACGAGAGTTTAGTGTATGTTCCTCTTAGGCTGAT
+AACAATAGTTTAGTGAGCGGAAATGCAACCGCGAGGCGGTCCCCTGCGCTTGTAATGGCC
+ACCTGTTGCCCGTCGGATAT
+
+
+
+
+
+
+
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..9147eac
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,294 @@
+# Makefile for tRNAscan-SE
+# TML, Feb 11, 1996
+#
+
+COV_RELEASE = "2.4.4"
+EUFIND_RELEASE = "1.1"
+SE_RELEASE = "1.3.1"
+RELEASEDATE= "January 2012"
+RFLAGS = -DRELEASE=$(COV_RELEASE) -DRELEASEDATE=$(RELEASEDATE)
+
+## Note: if you want to use the -i option, use "make no-ambig"
+## This compiles versions of the pre-scanners that skip over N's,
+## greatly speeding scans of unfinished sequence
+
+## where Perl v.5 (or greater) is installed
+PERLDIR = /usr/bin
+
+## what you call the Perl v.5 executable on your system
+## (this could be 'perl5' or otherwise on some systems)
+PERLBIN = perl
+
+## where you want things installed
+BINDIR = $(HOME)/bin
+LIBDIR = $(HOME)/lib/tRNAscan-SE
+MANDIR = $(HOME)/man
+
+## NOTE !! If you later manually move the location of
+## binaries or data files in the BINDIR or LIBDIR directories,
+## you need to delete the tRNAscan-SE executable, update those
+## locations in this Makefile, and re-make tRNAscan-SE
+
+## where you want temporary files stored
+TEMPDIR = /tmp
+
+## your compiler
+CC = gcc # GNU cc (if available) otherwise use vendor's cc
+
+## any special compiler flags you want
+CFLAGS = -O # ok for most machines (remove -O for DEC OSF/1 cc compiler)
+
+## machine specific definitions
+# You shouldn't need any. The specific #define's in squid are historical.
+# However, if you do run into compilation trouble, you might need:
+# -DNO_STRDUP no strdup() function (lots of BSDish Unix)
+# -DNOSTR no strstr() function (rarer)
+#
+MDEFS =
+
+## how to install the man pages
+## either cp -- to copy unformatted man page
+## or a script with identical syntax to cp, to format & install formatted page
+INSTMAN = cp
+# INSTMAN = instman
+MANSUFFIX = 1
+
+#######
+## should not need to modify below this line
+#######
+
+SHELL = /bin/sh
+LIBS = -lm
+.SUFFIXES : .c .o
+
+DOCS = README MANUAL INSTALL COPYING GNULICENSE FILES Release.history
+
+MANSRC= tRNAscan-SE.man
+
+PROGS = trnascan-1.4 covels-SE coves-SE eufindtRNA
+UTILS = reformat revcomp seqstat shuffle
+SCRIPTS = fasta2gsi.pl sstofa.pl checkversion.pl instman.pl
+
+TSCAN13 = trnascan.c TPCsignal Dsignal
+
+EUFIND = eufind_const.h eufind_main.c pavesi.c
+
+SQUID-UTILS = seqstat_main.c reformat_main.c\
+ shuffle_main.c revcomp_main.c getopt.c
+
+COVE_SUITE = covea coveb covee covet covels coves structcheck
+
+
+MAIN = align_main.c build_main.c emit_main.c learnprior_main.c train_main.c \
+ scan_main.c score_main.c structcheck_main.c
+
+SQUIDSRC = alignio.c sqerror.c sqio.c iupac.c msf.c revcomp.c\
+ selex.c sre_ctype.c sre_math.c sre_string.c stack.c types.c\
+ gnuregex.c interleaved.c getopt.c
+
+SQUIDOBJ = alignio.o sqerror.o sqio.o iupac.o msf.o revcomp.o\
+ selex.o sre_ctype.o sre_math.o sre_string.o stack.o types.o\
+ gnuregex.o interleaved.o getopt.o
+
+SQUIDHDRS = squid.h sqfuncs.h gnuregex.h
+
+SRC = align.c dbviterbi.c debug.c emit.c fast-dbviterbi.c fastmodelmaker.c\
+ konings.c lengthdist.c maxmodelmaker.c\
+ misc.c model.c modelmaking.c prior.c probify.c save.c smallviterbi.c\
+ scorestack.c structs.c trace.c viterbi.c $(SQUIDSRC)
+
+MPSRC = mpviterbi.m mp-dbviterbi.m
+
+OBJ = align.o dbviterbi.o debug.o emit.o fast-dbviterbi.o fastmodelmaker.o\
+ konings.o lengthdist.o maxmodelmaker.o\
+ misc.o model.o modelmaking.o prior.o probify.o save.o smallviterbi.o\
+ scorestack.o structs.o trace.o viterbi.o $(SQUIDOBJ)
+
+MPOBJ = mpviterbi.o mp-dbviterbi.o
+
+all: $(PROGS) tRNAscan-SE setpaths
+
+covels-SE: $(OBJ) scan_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o covels-SE scan_main.o $(OBJ) $(LIBS)
+
+coves-SE: $(OBJ) score_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o coves-SE score_main.o $(OBJ) $(LIBS)
+
+eufindtRNA: $(SQUIDOBJ) pavesi.o eufind_main.o
+ $(CC) $(CFLAGS) -o eufindtRNA eufind_main.o \
+ pavesi.o $(SQUIDOBJ) $(LIBS)
+
+trnascan-1.4: trnascan.o
+ $(CC) $(CFLAGS) -DTSCANDIR=\"$(LIBDIR)\" -o trnascan-1.4 trnascan.c
+
+tRNAscan-SE:
+ $(PERLDIR)/$(PERLBIN) checkversion.pl
+ sed 's#/tmp#$(TEMPDIR)#g' tRNAscan-SE.src | \
+ sed 's#bindir = ""#bindir =\"$(BINDIR)/"#g' | \
+ sed 's#/usr/local/lib/tRNAscanSE#$(LIBDIR)#g' | \
+ sed 's#version = ""#version = $(SE_RELEASE)#' | \
+ sed 's#release_date = ""#release_date = $(RELEASEDATE)#' | \
+ sed 's#/usr/bin/perl#$(PERLDIR)/$(PERLBIN)#' > tRNAscan-SE
+ sed 's#/usr/bin/perl#$(PERLDIR)/$(PERLBIN)#' instman.pl > instman
+ sed 's#/usr/bin/perl#$(PERLDIR)/$(PERLBIN)#' sstofa.pl > sstofa
+ @chmod +x tRNAscan-SE
+ @chmod +x instman
+ @echo ""
+ @echo "tRNAscan-SE built"
+ @echo ""
+ @echo ""
+
+setpaths:
+ @echo 'setenv PATH "$$PATH"":""$(BINDIR)"' > setup.tRNAscan-SE
+ @echo 'setenv PERL5LIB "$$PERL5LIB"":""$(BINDIR)"' >> setup.tRNAscan-SE
+ @echo 'setenv MANPATH "$$MANPATH"":""$(MANDIR)"' >> setup.tRNAscan-SE
+ @echo ""
+ @echo "The file \"setup.tRNAscan-SE\" has been created."
+ @echo "If you type \"source setup.tRNAscan-SE; rehash\", the paths"
+ @echo "in your environment will be updated for this session."
+ @echo ""
+ @echo "To update your environment upon every login, you should"
+ @echo "add the line:"
+ @echo ""
+ @echo "source $(PWD)/setup.tRNAscan-SE"
+ @echo ""
+ @echo "to your \".cshrc\" file."
+ @echo ""
+ @echo "If you prefer to manually update your environment variables,"
+ @echo "be sure to make the following changes:"
+ @echo ""
+ @echo "1) Add $(BINDIR) to your PATH variable"
+ @echo "2) Add $(BINDIR) to your PERl5LIB variable"
+ @echo "3) Add $(MANDIR) to your MANPATH variable"
+ @echo ""
+
+install: $(PROGS) tRNAscanSE
+ @if test -d $(BINDIR); then echo .; else mkdir -p $(BINDIR); fi
+ @if test -d $(LIBDIR); then echo .; else mkdir -p $(LIBDIR); fi
+ @if test -d $(TEMPDIR); then echo .; else mkdir -p $(TEMPDIR); fi
+ @if test -d $(MANDIR)/man$(MANSUFFIX); then echo .; else mkdir -p $(MANDIR)/man$(MANSUFFIX); fi
+ cp $(PROGS) tRNAscan-SE $(BINDIR)/.
+ cp -R tRNAscanSE $(BINDIR)/
+ cp TPCsignal Dsignal *.cm gcode.* $(LIBDIR)/.
+ @if test -r trnascan-1.4-NA; then cp trnascan-1.4-NA $(BINDIR)/.; fi
+ @if test -r eufindtRNA-NA; then cp eufindtRNA-NA $(BINDIR)/.; fi
+ @if test -r mpcovels; then cp mpcovels $(BINDIR)/.; fi
+ $(INSTMAN) $(MANSRC) $(MANDIR)/man$(MANSUFFIX)/tRNAscan-SE.$(MANSUFFIX)
+
+testrun:
+ @echo ""
+ @echo "Running tRNAscan-SE on sample sequence F22B2.fa"
+ @echo ""
+ @rm -f testrun.out
+ @echo "tRNAscan-SE -d -y -o testrun.out Demo/F22B7.fa"
+ @if tRNAscan-SE -d -y -o testrun.out Demo/F22B7.fa; \
+ then echo ""; \
+ else echo "tRNAscan-SE did NOT complete properly."; fi
+ @if diff testrun.out testrun.ref; \
+ then echo ""; cat testrun.out; \
+ echo ""; echo ""; \
+ echo "tRNAscan-SE up and running correctly!"; echo ""; \
+ else echo "Test run result file differs from reference result file!";\
+ echo "tRNAscan-SE may not have executed correctly."; echo ""; \
+ echo "Please double check for correct compilation & installation"; \
+ echo " and try 'make testrun' again."; echo ""; fi
+
+# compiles versions of pre-scanners that do not conservatively
+# call tRNAs with ambiguous bases
+# Not really needed since Oct. 2000 modification to tRNAscan-SE (v 1.21)
+
+noambig: trnascan-1.4-NA eufindtRNA-NA
+
+trnascan-1.4-NA: trnascan.o
+ $(CC) $(CFLAGS) -DNO_AMBIG -DTSCANDIR=\"$(LIBDIR)\" -o trnascan-1.4-NA trnascan.c
+
+eufindtRNA-NA: $(SQUIDOBJ) eufind_main.o
+ $(CC) $(CFLAGS) -DNO_AMBIG -c -o pavesi-NA.o pavesi.c
+ $(CC) $(CFLAGS) -o eufindtRNA-NA eufind_main.o \
+ pavesi-NA.o $(SQUIDOBJ) $(LIBS)
+
+
+clean:
+ -rm -f *.o *~ Makefile.bak core testrun.out \
+ $(PROGS) $(UTILS) $(COVE_SUITE) mpcovels tRNAscan-SE instman
+
+uninstall:
+ (cd $(BINDIR); rm -f $(PROGS) $(UTILS))
+ (cd $(LIBDIR); rm -f TPCsignal Dsignal *.cm gcode.*)
+ rmdir -ps $(LIBDIR)
+ rm -f $(MANDIR)/man$(MANSUFFIX)/tRNAscan-SE.$(MANSUFFIX)
+ rmdir -ps $(MANDIR)
+
+.c.o:
+ $(CC) $(CFLAGS) $(MDEFS) -c $<
+
+## programs from Sean Eddy's sequence i/o function library not
+## needed for tRNAscan-SE but included for their utility
+
+utils: $(UTILS)
+
+install-utils: $(UTILS)
+ @if test -d $(BINDIR); then echo .; else mkdir -p $(BINDIR); fi
+ sed 's#/usr/bin/perl#$(PERLDIR)/$(PERLBIN)#' fasta2gsi.pl > fasta2gsi
+ cp $(UTILS) $(BINDIR)/.
+
+reformat: $(SQUIDOBJ) reformat_main.o
+ $(CC) $(CFLAGS) $(MDEFS) -o reformat $(SQUIDOBJ) reformat_main.o $(LIBS)
+
+revcomp: $(SQUIDOBJ) revcomp_main.o
+ $(CC) $(CFLAGS) $(MDEFS) -o revcomp $(SQUIDOBJ) revcomp_main.o $(LIBS)
+
+seqstat: $(SQUIDOBJ) seqstat_main.o
+ $(CC) $(CFLAGS) $(MDEFS) -o seqstat $(SQUIDOBJ) seqstat_main.o $(LIBS)
+
+shuffle: $(SQUIDOBJ) shuffle_main.o
+ $(CC) $(CFLAGS) $(MDEFS) -o shuffle $(SQUIDOBJ) shuffle_main.o $(LIBS)
+
+## other programs in Cove package (below) not needed for
+## tRNAscan-SE, but are included for users who wish to apply
+## them for other RNA prediction work
+
+all-cove: $(COVE_SUITE)
+
+install-cove: $(COVE_SUITE)
+ @if test -d $(BINDIR); then echo .; else mkdir -p $(BINDIR); fi
+ cp $(COVE_SUITE) $(BINDIR)/.
+
+covea: $(OBJ) align_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o covea align_main.o $(OBJ) $(LIBS)
+
+coveb: $(OBJ) build_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o coveb build_main.o $(OBJ) $(LIBS)
+
+covee: $(OBJ) emit_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o covee emit_main.o $(OBJ) $(LIBS)
+
+covet: $(OBJ) train_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o covet train_main.o $(OBJ) $(LIBS)
+
+covels: $(OBJ) scan_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o covels scan_main.o $(OBJ) $(LIBS)
+
+coves: $(OBJ) score_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o coves score_main.o $(OBJ) $(LIBS)
+
+structcheck: $(OBJ) structcheck_main.o
+ $(CC) $(CFLAGS) $(RFLAGS) -o structcheck structcheck_main.o $(OBJ) $(LIBS)
+
+
+## Maspar memory limits
+# do "mpctl" to see the system defaults for CMEM (ACU) and
+# PMEM (DPU) memory. The make will do an "mplimit" to reset
+# resources according to what you give for CMEM and PMEM needs.
+#
+CMEM = 480K
+PMEM = 63K
+
+## Maspar version of covels
+## need to set constants in "maspar.h" for your
+## maspar machine size (i.e. 128x128, 64x64, ...)
+
+mpcovels: $(OBJ) $(MPOBJ) mpcovels_main.o
+ mpl_cc $(RFLAGS) -o mpcovels mpcovels_main.o $(MPOBJ) $(OBJ) $(LIBS)
+ mplimit mpcovels cmem $(CMEM) pmem $(PMEM)
+
diff --git a/Manual.ps b/Manual.ps
new file mode 100644
index 0000000..6019fab
--- /dev/null
+++ b/Manual.ps
@@ -0,0 +1,5143 @@
+%!PS-Adobe-2.0
+%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
+%%Title: Manual.dvi
+%%Pages: 30
+%%PageOrder: Ascend
+%%BoundingBox: 0 0 596 842
+%%DocumentFonts: CMBX12 CMTI12 CMR17 CMR12 CMBXTI10 CMR10 CMSY10 CMTI10
+%%+ CMBX10 CMMI10 CMTT10 CMITT10 CMTT9
+%%EndComments
+%DVIPSWebPage: (www.radicaleye.com)
+%DVIPSCommandLine: dvips -o Manual.ps Manual.dvi
+%DVIPSParameters: dpi=600, compressed
+%DVIPSSource: TeX output 2008.06.04:0330
+%%BeginProcSet: texc.pro
+%!
+/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
+N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
+mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
+0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
+landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
+mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
+matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
+exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
+statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
+N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
+/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
+/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
+array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
+df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
+definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
+}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
+B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
+1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
+1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
+0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
+sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
+rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
+gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
+/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
+/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
+A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
+get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
+ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
+fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
+{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
+chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
+1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
+forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
+/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
+}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
+bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
+mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
+SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
+userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
+1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
+index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
+/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
+/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
+(LaserWriter 16/600)]{A length product length le{A length product exch 0
+exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
+end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
+grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
+imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
+exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
+fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
+delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
+B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
+p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
+rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
+
+%%EndProcSet
+%%BeginProcSet: f7b6d320.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
+% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
+% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
+% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
+%
+/TeXf7b6d320Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
+/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
+/period /slash /zero /one /two /three /four /five /six /seven /eight
+/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
+/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
+/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 74afc74c.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
+%
+/TeX74afc74cEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
+/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
+/suppress /exclam /quotedblright /numbersign /sterling /percent
+/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
+/hyphen /period /slash /zero /one /two /three /four /five /six /seven
+/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
+/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
+/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
+/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
+/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
+/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: bbad153f.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
+%
+/TeXbbad153fEncoding [
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /circlemultiply
+/circledivide /circledot /circlecopyrt /openbullet /bullet
+/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
+/greaterequal /precedesequal /followsequal /similar /approxequal
+/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
+/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
+/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
+/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
+/prime /infinity /element /owner /triangle /triangleinv /negationslash
+/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
+/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
+/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
+/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
+/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
+/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
+/backslash /wreathproduct /radical /coproduct /nabla /integral
+/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
+/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
+/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
+/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
+/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
+/lessequal /greaterequal /precedesequal /followsequal /similar
+/approxequal /propersubset /propersuperset /lessmuch /greatermuch
+/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: aae443f0.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10
+%
+/TeXaae443f0Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa
+/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi
+/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf
+/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft
+/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle
+/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle
+/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash
+/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow
+/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p
+/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector
+/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta
+/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon
+/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: 09fbbfac.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
+/TeX09fbbfacEncoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
+/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
+/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
+/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
+/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
+/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
+/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
+/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
+/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
+/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: b6a4d7c7.enc
+% Thomas Esser, Dec 2002. public domain
+%
+% Encoding for:
+% cmitt10
+%
+/TeXb6a4d7c7Encoding [
+/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
+/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi
+/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls
+/ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam /quotedbl
+/numbersign /sterling /percent /ampersand /quoteright /parenleft
+/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
+/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
+/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
+/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
+/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
+/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
+/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
+/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
+/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
+/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
+/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
+] def
+
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
+index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
+exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
+ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
+pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
+div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
+/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
+definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
+sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
+mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
+exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
+forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
+end
+
+%%EndProcSet
+%%BeginFont: CMTT9
+%!PS-AdobeFont-1.1: CMTT9 1.0
+%%CreationDate: 1991 Aug 20 16:46:24
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT9) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT9 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-6 -233 542 698}readonly def
+/UniqueID 5000831 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E
+2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279
+650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35
+F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A
+D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E
+F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1
+4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A
+438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD
+BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B
+A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641
+AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74
+D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB
+CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A
+082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980
+9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0
+4BA1EBFAFDBEC531EA13DFBD6700E53818CE04D23886B8AE75DCC36BCD3189B1
+0D55FAE27D0D126E82AEF31D7B5DF27E58C30BB0867D6D7AC1DA9EFB8A2DF095
+B5B934A68EE122DA0A83B36C952431586B957990206194E89339048AA6EE4C53
+703763505ED57C494DD907D0EEA04F6B1D4C8F3BA778F4E7AA832AAB4D75F024
+61E91C6D25FD6823CB24FC863C039F7DC5A62670829DB662947294E97098AAC1
+483CC960DB755F27C7155CC30B233EDABBA47BF46BBDAEAFA6F4A61E3A1FB57F
+4661A8C065115937B09FDCE4414FDD634F82CC287151AF817BAFB5C7F5491E2D
+5D3C700CA1121B84A1D3A9576D75A5D8B0CE7A49DEC1F55EB3F7153B09B55879
+4E2B2F7628CDE91761DC6CD2AABE37CD82A99EFF4BD8FDE30B7E034B9C7D7250
+B8686E6DB76D6D7EAE7593048D9CD43093AFB99B97DAC930A6BBAB14CE24A66A
+458199BFFAF9202CFCF5C752D977C093A50981D73D321F7970F4BF024A6BFEED
+0A888D952A43EAADC5710FC9C1BEFD7FB07660446B6BAA9B718C4D2A9EDEC3A2
+DBD2E2C29C15BC3E9A9512CEACC56C1753BB0A46A73E7CBB64A07D9AD02094BB
+15B9D4931DC5C3636768B5E0EF01C52F7E62D4616DBB91F1EB05F08F47E14DC9
+CFC8EB2495C5C21B51F190D05C0A0A2C0A00089D95AA105B7934FB9FA598957E
+8D0FC740265B27FC1C23DD2A5C48A3AB891FC46871F971FC5E0DBCB56760107A
+60649EE49A2BD2F385E984107FDA824FF8E6757951E6000C9A4CD246EDEAB49E
+4C77F79809E4A9D1D539B3EED8520A5BA7BA23D74DF56B38DB3E8F9F38726EE8
+BF802BFB0F77C2CAA94CBD76E93D7AC7790ACD4AC16A59EA5A5A449B344AB047
+B60A174375EB13E126BE5A3A65D31642BBE52D7E8E206CFC77085BD01A8AD73F
+470726AB30434BFAF255F88985A4E9D3DE005C9990074A0FAEE9C1663410E939
+F67E21A97FB44C6109C0BE1C10DEDC355CA5921580C8D2262F205B4EA14D20B0
+D6FC7C31D634FBA5977FCAF694FB44756D4A1930A1D4D938D294FFE358DD1597
+5F772371E5867006FF0001652513B3D189398A0280D14698F2274E2A6BEB1577
+8ECAF5F36A6A5C9F9FBC134DD73ECBB04C53D046D0C8CF2DE4D6EC51AECF4241
+54D1D40906118DF3B630377D659458B0878D6F3EFBD94C6CCCC97552BCD6EA0C
+D5916F4E27866ED2803BCF3884FF327B9AF9BF491F4125931E4E548C2949BFA3
+D655084472A42BCB5EAC7502DC1B6F7EDB279729E460039317BC5960036A0711
+FD504679436F7C7CE36E5373C6752668B8040C3F5F996769D6462569974AB101
+2A044BEC3EBB1E254CAE3B36D1E47789A71833C6EFF0B7EDFED0E7C388FDAF67
+DCFD292A4D337FE92CC4D3D5082DC375BF0BCFF526AD96C0858D47FD00B4EB82
+C96036C53145557553ED5BD6117324DA268B94780B6DFFC31BC6C97231F6CDE4
+ED6ABDC0C3E9B49131B87E73C9AAAAADCFE4448F053C05739185453E573E2879
+D8F6D5D8AA42A591964C6B5CBC9619EFCC52F1B6495E3C121EF66400A840F7E6
+4DD91EEF83D258135335884163918740E08B600DA078A8981073ED27CB7717EF
+C15B326E12436384F353FA30227F8746B1535F54A05C46667B931EDD440A8F54
+B856A7B93C358BF70278311519838A68AD42AFA802CC0BD3F6D9440434BF2082
+7FDE0271B93CE4C10FC8CFBC2C9C22D7114569FE3340B5EA21F1459F899B3FB1
+5397481F17D70D05A57728E07BFE0D5F25CE24F005BB737C034D9AF047CF9BEB
+1B82819CA133C08D6BBF9FF967F88ADFBDFDDCDD5BBD6E8F11D8CFCC97EBB2E8
+8D02A9A149A38A59C53C26DC1CA97E000D0C7068E2E87B69138AB201503B8015
+E072144776ADBB163A70EF97675D825123F0478FFF0929797CF06FE9AA8C0F82
+C36D97284E3A4272ACA452AFE7D3AEA3F47E1B501FB515869331BCB04CD09CD6
+4C4111C07C3A54ED60E041876C4443B37AC44E36140EB6F623B27654DFC7F43F
+CB20A207B99AE9707E0DE13D670BA7D8B0A548FAF6D4F74C2008F02503036886
+06B6571279D007CD367D338513B5DED8E2BA1502DF6A42D20C6D63EF7CBE6D0A
+25EE7DADF27D80C71C48C579B72084478B4C07F8091F958F36CA5DBD27683CC4
+5319BF25FD5B161D272D005006AA14F6D1F1BD1B1E41FB2F6F3A8FE1B365A5C4
+7F4C8CCF41C877E6CFFF610E550C63E03246C8A9A94FE576CD0D5B26DA102568
+C73A99FB541493B7F22E82A814981D658397C31004FA871DC91AE63FAE6EB98F
+57B998DC8D33E2792FC8D0594A583D2954DE21B924FE294F7E3AD8C1A0F25F35
+A8BB9ED2631878EBD9FB62722B52326B1A0AA6AB65FA3EC6C94429068055AE77
+C3474E52FB2FBFB814585EBC555971D784CB5BFCCEF9F6E1411D603225BEDB51
+C8A4D0A13E511DF2A1CF5CB4F48235EA96758D0A7FC90326FCDA091A5BBF9915
+D1ED79B6E13CAD45959915E63511233A1417BBC83B03DA048A13F17A575AC95B
+03DF21D106384DF0481EC12CDF988A2CEAAC231D7DAFD4881348626057F0E38F
+A5E6F9E33C89E9E0A46204D474B8EF255F643F709F379E0C26DC7710FC610174
+EB64AC996BAAFD81BDA50FA2847F939D94C7E090C19E23C685257C4B939833C2
+F61CCBD382F1F1C70BB9F341CEDBA19F38443863E6EFA51CF73727FF79DDB005
+2A13E79266A56B129E6CD09DCF7389DCE56422412F178755C0560ECF74564F0A
+A34FCFA2DCA510B3D1A8FFACF68DAC623CF5DDE25E1DD7340BF98D6A3E42F2A9
+F813D6FFE6E9CD2CA9678444D993E41FD9A5158EC6A3D22140D441B3B1BA9A12
+B764129FEF5B4B169889E5FD4891F55ADD03733C93D8B89BA18A2D2F844A9D18
+ECEA2EAFCA593D7D49A63127A5CB4932E0F2CB71BADE73E6EC413D628B22D7D6
+325CC18B444FD37AB48BD3F86DD3090C757C22072A501A7AC46D1A0EF7D8E479
+0E3E1659FCE16868719C9FED05A3F7FA604358C80742700B68D8E5B794CADAD2
+37F48DD232E7C75B18AA985BF5DB6E2FDA40517A7CEBC28A8006A767134A3F31
+904E15B13FA58A00DAB98F05EDF5D9C3856980BF4D7884C8033908A764D7E35B
+25E4E5F62A62C3B75665299A170E3A61618CDFC2E5D3F4A5EC18F04111969024
+3D4014D931B146CB9081CB920BA4021973C48123465321F44BCDB0C736F8772C
+AFEDB6C4BC99A8E1D2A2CEA5966D73401A6E8994B30EF41D6922DD9141FD2789
+F8EFC8DA403A428A0D3AC4991DBDBD29E4EFAACF5F6DB1CDAD08953192089C4D
+DD4C78B0E907E3E595C5275F7CC578190360AEB4756BD2DFD26B19CFE90CEC6E
+25B073A6A5B616C7FD98C682C95956C745807B7F78849E79D8BC35987EA43F1E
+6E68FBD6165D3982A2642CF6BFD03C2AFF5E636A8E4C8871DAFF98AD53CE4936
+45B8FAB9AA24452698C2918B1B0D2AFA7894B2A7AC2867EF33A65E69E5198D1C
+9C65C1AFB336C61BCCF074B3E27904FB95997A6F277F65AFF6D8D911EEF4F756
+B9396449105343F921582F82723A5B653B6A1F944FCC44EE2BA3A7EED4D8E764
+C29C5A9356F7E06D9021CE25E28F62FF29FA7E52CA1D26A51BA3698F7C4548B5
+D26BC79F5D009D7383A98FB186C45483272E1379356ED81CDEC5FE8BDD4B665F
+CEC8F01ACB5486E7262C54C3B65AD23C752413B600661D7DB0F4FF5BB10C1B23
+253BE60EF6A1DC0A8C324FBD5B3BC853839DC0FEBA2291C00EFCC123452B896D
+44673FA12BBD8883D73733A283EBD84E3162F05686BBF1FE936F52E5E35C915E
+37406A30ED8BF0EA3CED016D99D4AD1214BA4D0A17020474CFC7C73CCDA44758
+C69CBF92E46EFE87D9DB58F05E7E9E85426002A67BBDABB746DDCBF4FF7C563F
+1E1F3E69D116CB9E5B38E32CB28628565D63BD34F16CA44CDA21EBF51160EFE4
+25D787E7296DEE3AEAA8A2F4144CBB72A9E93441C202D593976314860A3E79F4
+9EE1D8EAAB801B2B2CF5A06679D83A7FEA5087FDD7E0977EDF80246A7B115A94
+149CCA7D92F82152C6D08464230AB9B3C848CD52979C96F7852C0FA43A23930E
+92DE00D16902458DA02168CAE807C677F120E9D7953BC776A54347ABC8404385
+4FB1DAA613CC7832726D77E67F52DD15DA6574EDC50321EE452D677DACC4012D
+19D646F7B0D5B68584ED5882C8A886E7327861A1621E483F32836D39847AE74A
+132CF29E89AF947E9DF6F4F3D7BDD4AFABF5624B401DBE47F5697D57FC40DA05
+87056876B7E0E1C8EE41E44DDC521F1030453384226BB3A634DB3A3C9AE40A2A
+0AF700279BB3C140F3215633FB7A1EE76FCCF0B1D510DA908EB3763C1C9557D3
+2FCA6938681E9A4D5610796FEA5760062DD186B1718C87598880C4F90C8282C4
+64EEECA246623483D262A7ABE048B1142E824E4F62674288E5ECACD2D67F6B0E
+A2723D3C44D99493B57072F26931AA3E640830127009567F1EFFAFAF1D70EEBA
+62F194DB60379DF93F15E1AD2A4E12BE6AC221B83DE5E36EDB858887912D6B3D
+DB3397FE21E678C7986F969B153F023000C59273BE6580580E8A35A82357299C
+5F2727AAEAF9D0BDAAF29CAA3929C174CCA4A2B4371BC4E7A67DB82481BBFAC5
+B1BB5DE9A9BAC68925E049C42E63EDC788EEB7C3365DBA87724103B8F44B8F6D
+C7166D5487F9ED5E1B797F00E7E8CE66BABCC467C62CD20B31EA1CA4EF832E0F
+9F7E4A01DD318CB5654E8F266C3FD0D7DFF42B5543E55033F068D1663518C5F5
+B669D0DC43C39BDAF9540C0EA905265E3CFFDD5A5321CA2A62D0C5BB0CC3ECD1
+FF7E4C108DD33B86922E318589B9CC26CFAE55A5A034C10E70848302402CF994
+A4984924DB4C800659ED6AC7D3D6B3C1CAAE2C5D009F55759C95F4B96600296F
+4DD653BB24589F96F003CAC86694D90C135064783875978605F7FCDEC9B04319
+84349C51D97E46630B8151DADCA6EAC7859B84466AE1F4F166745262FEEBD571
+4F958629EFE8F64FECEA192A9EBDD54C41FBA1EA6D33F11097B9E1B983279C86
+19BD077E0D63B88C9DA0CC7295F81F9970F930D1957C9C1A6082CE8D22E93452
+76B5E317734A98B06181D58E4B96D5FFFFF3B339AC9826A1A719D50F3CB74BDD
+478B5A25B5F095F4BBB9183630FA4EEDC49D6D2F7D25073BD52CA5CC6F596C0E
+FDB9C66BD2885045C0031AF25CCD5636B5B39E4CCFD22DEAE0163DE8F2C978AC
+4FB12AF067C628539BC44ECAA8324BCD0D85B2328E47E9AF6C357242E31B99B7
+6A4C6A75AF74035AF1014C8387D50BF64F9B9B19C91EDFEF57EF2E0258110654
+CCC994F365E64EDC8BC19988563A9904743A8FA5F62C8D41697CAD848C69AE7B
+CCB0C737447CA3CC1D29618B02E1810772B4CA77461D7627F62022620C26C1B0
+BC1DA7796AFDAB6ED3B7681F0540B63D2745EC1FAAB0BA9C28B4AAD21800E3E2
+D3DCA8AB9B17C88DC88FDDB3194AEDF70D0C62891752A4735138D7D814DDE950
+AFFAD2D06146E7F8CF39412DD3FCBA016B2735F601B32D699A57EE0C4DDE7145
+EE7092C3F9BE645D3B46B35DA7BDBAB3DC91C27279FC57CB6C7A5444D66CB7C3
+8A9B7EC4F93006ADC8DE36C08B925D24BD3F90D7921734458E1DD1422C65DAED
+D3E660241002CC3246FC6E60C61BE5E7E306BA5A94B1632B5372166C21CBC493
+8D37FFAD3D70207F056F34F74A46AAA35176C38CD5339C2AB914E9945BF27D0F
+652E268BD4119DEA4C5D766CA57187A651A968F93A87C41E775D133DCC8E8591
+0E4BD579B38FAF2C9C51C551DD5C376A94F020AABDCF91F4C07D856CEF5DEC16
+3178432F89B82EC2491B7BCEE4152FA549F4E92E86ECBE480B333AD76CBDBD89
+C09D8661A65AB21834803B9955CCCAD580D546F7FC2AA18602053F7AB8E68F6C
+DC9615EC87E090EF4429869BD98DC29CA831CBA3C6E0903F5ABACBEEDDC638B6
+0D0F60ADB674EA00FB3AAEC9BFE3D8AA501F89029F84F53D21F6ADD613BFFD79
+35A9226B88B752A21A3858C838292EAABD5980206173544B5E8FF3EB8819E2B5
+B2FA6C86BBF6C6E549B9002193E7A95165C19D8CDEDF4B5C4F660A71D63567F7
+60AFD8466ADF9D99AB5092FAEDE14656A96750E4888DDC6206314B40220A22F4
+B4823CC51C597C278EBB052FBC0C08B750C42C5F5470B54E5550456CB6314881
+BDF02E049F14A2500A1D8304D3E55F62EDF7B866F483ABDCF5C85845CA1F491C
+F3F9498788ECC173926BC88D1E2392AA9E85D783A36C39CBB0C568134A243DCC
+D73A29C03A583829FCD58D33123369A8B8D4B72AFC1E8A7F00352C155B9397E4
+64FADF4D5BBF5A6A9A00910C901959C2A14086CB0CE072D775E2305950C3A84A
+44576761CF163D1DAA070D3DC9DD462F116D41CCBA817CE55583493853708C1F
+959E4E15DC33BCA710F9C4F2F4427B211D7A6E1BADCF527AF6218E94FE850A44
+27A05828F50146083E91145703AEE94911041254718D23F7D6CC42AC6CB42BCC
+B9C22959F1E4C042B6A77AD6BF229A14108B9BC96EDABD6BB08C86945F9E26FF
+BC509097EDF467A439C64EF52F2134827798EB3E279C64B1DB5EDB90FFE8ED23
+7009EDFA84E1805BBC71C7783DD1AC400AF2199AF0F13B15DBF87447E2043F76
+156D4AD3D2EABC9A73BC063847705FFCDE7B36C1308EC2E29AEE08399A34A9B4
+993417F6B8886631162D947AEF5386504DB5C6F68F54AEEF0A1CE61A21A91884
+398406C2CBDE680974D17C5445CFC8D3080F976FDDCFCFEBF0AD4BE61C716E8C
+F03ADC1EE9C73EA259B1F84452702FE29CF7920EA1CD7DA034612EB11ACE023F
+C5267137752833AB289BFF66D2CDA38CA261CEEFFA699B89B1624282FE061E8C
+6B27F5BC6F3EA7213BF9752C3B9707E59EDAF3D3EBE34B85A8EB4E080ABF9808
+1F9467088C3AD167FBB846DB6998790B428AE089C468EDEB223DDF8DD8AEDF80
+DDFE490766776A12D187EA4AA300AC74F5A3272915BAEF56C8CAF2A0ABA66FFF
+43ACB0E6BCED57DC9D5C77F98B8DAD3032A78085D7659A24CB0B54EFC202F15A
+9ED2195FD944D26B7CF8A2B71368113B0F60CF896A6914A5E06EBFA87DD203A9
+1C849B0AC7A60FD1B390AFAA00281361C0927817F328181B18CD68DB227EF1EE
+C26A6DD9BE9E7F3FF7F903C86B119E5132996114DFAEDE551C8FD994268D3C83
+6EADDAF6CAB15326CE5A0B9F3F13C13F2AE7C19B71788792FB53A4A5C78E3C50
+0259C8460EB1E808D0B443FB323A15E8CB9B07A0D66358124136C4ACCBD72685
+85D1D5BED989CDCEBFDCB5775259D583E03124F315966F07FA7D1CEC82FEF682
+6A698527328C5BDB8C225992970D3F30B80B28B28399C0B022D1E9C78D9C5512
+F9CACD66ED0C512C9FCD44F96A29C0063B9EF718EC3996630A6B6177FEE8EB19
+F20491C99F7058D9EF0A9006CC357089C56AF92AC2A1A4ED42A76F15A16222B9
+F4AA7B7DF8968B9F162C275D447686560B099F2C6C36F9AEB4608077C12566A5
+753D8A2A4D19EDD204927A1651A1688505113A1C1F48A19C33AF3B9B768F4E2C
+66BF069FB460E88A25AA2664C5BE24ADA4DF67D11B3A816269C2EAA9193AD7FC
+823D85FF1FC7833308206B2CCF8AABC8CECA4831940B3C79E72BA1D58DC2EF1A
+6CF7143503C9BB467295067B097F1FC2CA017B7F0406C4273FBEFF794E1F20CE
+7451C581962B61DD8E33CAA5FBD3E9AB369C78259181905B75717C748E9F7417
+D806992B212B63062B8B19F61E0B563EDA295A94E7B73DE33E42E53CB1CF553C
+923648780DD640E4586C89FA4979DE94C66B4AAA87EE28DE81F5762ABBA70D52
+AB8981E321C37BE4235C983E9E474003B98853580CE23E64ED571C00636F1E6A
+36F1F950D917E0F495D1419D4E1C2B7434670ED5E24A6F289538D17CD0E90306
+E98F0C750D32F506B230C151A3B52A173F624B549C38E62266342936E3F11C73
+A0B2B56D3DE157DCC1E9F43EA5B6557C189E1F9ED5EF3255BC4E6908D24EB474
+6A38D787B335CAEC3F87ED9CD1AB839493CEABC2632B2CE252C00173659CED31
+C70D70FFE39AE1D489C0D7B62F2FC8420104C57E402D2E3AD82344C6BB6BF1FA
+5015C201461F876EAAB1440CC8AA329EBE547A31DDA7F3D57DC5080A612FF234
+69F7374B87B18A79066842FEDC3D2D812759D600B5DC6F79B9924290F3B7E998
+40CA68192F291B207711A9F129477670BFBEFF128A81C99E4022C845F5B0FE64
+AFED26F3F91E722FB690E9DE89B2F96DD14F02C89F206C48D3901AB1FC1C328F
+EAEFF8689F1979DD5DEE7A226784D305AF9A1A8102CFCC6B0BDE9FE34DDD6A90
+E2146D2EA39B11DB8DB5B002C5831553657F42019871967910B7975437A7FDA3
+3A18DE381D06FFB8DC93899328405F8C9F774AC5ED3DBFE3DAF8413CB5A16D06
+64EE9FCCA735F031BEA435CF2DE78B0AF32A5F674EBB0315B68009076808CDF3
+84B3FE1FC1318559E1A32E40BF995A5ECBE4BC41EA8DD784F568BDF40386AC04
+DD6D775695B279994C3DDA50C6F676F0F8E96AEB7B4AD88D632B65F62982B5A4
+A6A2EF9FE4C89A89328B09C15D40CBFD8C5E64B5A1910B42AA8000823E06290B
+D792E22132AAA3B2430B69FC179EA33474F9F4A1A178A6A2C2FCE1B4C3F28F7F
+96601DE78E1EAF4267FA2DF480F9FCD1BF5AB9966231178634211714B0CC78C2
+4E788E1F973B247FD346A81F01CA985D91D19EE407B94CE26A48FA3197CF3D5F
+2631BDD24640BF8DD1F80093779464965AB0C54EF1DCE22B2177AC02E53533FE
+447CEA3F42129EFA69248B202A5D9AF9B1FD752EEF246D29383CC0937F0A15E6
+9625A037FD08AE17BA63DB1014B01786D3E077B245D3A7D5E763BC6515321B53
+79176CBA5E720B264C5E4FE2E42CB8682B9E7F969F5561BD04872066DD12CF02
+88D2B50D051AC4ED33FC890E4B9ACD4C525D815E4497F27BA5D95EE92102E27F
+FC65DF98CAB43491365D30E79BEBA9708E1DBE3F63E4AA6A4E7208D21BA6B7FD
+2E11C573FE9E2468AC4273D392B0EDD6CD5976A35CF57510F19F340C6031ABAE
+23030F7B6D7F96637F6F4B8244C30807955696D10A3F193F48B80260EBC50753
+9423E54154F544C8085D5F0DC501A1FA7C48862F7A198FDF69C77A9AD1A5884F
+A7105AD5A933F912A27BA2DB56751572755AD6C52C795335F2298B6C0692B36B
+F13DAFAE2C6812247247F84F885994E13ABAE33665EB8A69551C66408E130D52
+7F9395803F2A13DA857F5A0181EE7BA18542D15298242529B2EC891DA68E3E79
+193B3C9FA31EA74C9ACC0DEC7D5952229F46C2B560DE7F7EE7C692B9EBF4DB46
+2766154DC1B5F3A1282C141E795CF08B553ECF269ED9DF1E13712D888A339D54
+951FC2D7D36FF661A3C9D7BBFD098FB0D1FBF02F2F90722EF6C4037C4E696D0D
+9AF7998B3B4EB16683C44B1AEA3E937C34F00A92BF71942040B8EEBD22EB402E
+C86E99CBC801445E4B8990DBA09770C2FE256A827D1F6BC35B268AE06ECDDBA8
+114009651EE59D97246B11BF4DCEDB2CE6265E4B298407C45D63E73CA6C0B60E
+D968F81229A56D1B3AD883BB17734583F4A7F5A68B0947B02738DFB49DF3B7ED
+6CFDA0CFE5AA3871C0CB1EF8E683F393A4907E4B18F7C769557BA81256C00B30
+1B1C5C5954DE71A9D3FA4FB0BAA05D630E2488D6370760243D139D4D040E3E70
+D14EE3C9B2A35E5AC33C688F1E8F93A4D6EB44D16780E3DB613A5CBBAA2A0A8D
+054D4551C5794D3564CE27D9EDB90C5EDD71F87DD15D0575AFDE2CF9621FB97A
+A21BD03D95686D4C0A8B888DB3A33DF4A7A488DDEAFA868BCC66B99CF49B9EEA
+2EB296F7B56BD0BB3C683E5A10DA2773308082CCD96877C5ED568542E21DB787
+439F8FB6B50C712B2E741EB995C78C9AC955108AC172A09FC65B497BE2AFD57B
+71C310B53B0D2C9D26D0837EE978B5F721C4A530B8EABEBC48A2C45CD8E14882
+A3F0C0051529201EF67BAFED36736C57C93058B9A6ADD02A5BF6CAA7FCE43BC0
+63E3FF07EED8305D7511FE1E3AE1F4EF1E68B610BBCFA6E08981A4387811A5E8
+379EA801761FDA168EA83F8F435AD8043233A40AC46170E145B408D9F22B472E
+F8038C8172382FEC67846E45A1AE1D927BD9FD5568CF62C088F43A8F85B89D61
+13298E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMITT10
+%!PS-AdobeFont-1.1: CMITT10 1.0
+%%CreationDate: 1991 Aug 18 17:48:50
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMITT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMITT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{11 -233 669 696}readonly def
+/UniqueID 5000779 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D004D606918A40B8D7BFA821B73E118040992A4
+E1BF99740F8FAA47E4349853C8149C0F8BE2F23C6F332BC0373C867D0715E8FA
+FF163A60AFD0FED665D5829739975C5DE12EB30895604D211F645D4E13330DB7
+64B6E35463C93B752F691FDDC44595B0A0E9E57C6F649809C4DBC7DB58102A60
+46349E9A5740893A1BD4536B99ECE72B147B713619037400669C07291022F84F
+4F3302F8244D2F0F1380466E81E0B5E00AF33E021A55620A7A93F3BD49C7040A
+67C096167F502EF2051B526405B9391B4340A3FFEC103E317E315A88D31661E1
+7E4104A2B925D1DDA9586861904FF6FFCE6A8E808385E4C4014F5A494874E2FB
+C3758D6989AB68C4CEF82F92B9439794FC404A29D086ED6B27997735BC3A24F0
+473FFD74BAECF5282E2EBFCB92D69B81C568D394055E2E30A7E3F448796E4EB8
+019AC2E075377F777183BD87FDD194E855ABFA35AFA73304DBB181C267431B16
+70456FD8470B525011891C1E140B8FF24A474B89F1CEAAB509F91FCAF512E16D
+8413BAC0C664FDCD31245C5996F4883305D3EDF1C8D1E6F0B1E79A06028BBDDF
+6AA5B515DF33BA8FFF2394262F3FE1DF95AD661322BFA5179E325BD1B1EECE49
+69F64789FF1BE8DE5CD7485571A07471BD6CAB4891BAB122BE4C4A1B7176F33E
+A1A434F745811B71EA8AF73407F32E9F4EAAE1C1FAA979523C18A24F754C307C
+CE056DCB71B20292D4FBCBF9AB9E9B81DADAB90E60BE926315049E5BF0F50315
+66D82E4963CB556F19461F43EF80302912AC1168884A1692AC59BFBC431B14AC
+A5FC06C4AB595F9DF66CE5EB69568038445A9EDDE20CF92BA308A2317B43BFEF
+D826D1B7E4176DFFBB96AC2B8F0D98487DCBC5AB8F9EACE83693A8C6780FCBDD
+226943C5471B6194AEDACEFFEC4A7269E77909EFCB6C2B79B410BA5B4BA2F2D6
+93E917286BCE703E098B567156A35798B47CFBDBFB3EEC5CE61B57F162A92779
+65C09101EBDDD0DB74B35630274526F0068A715A08CC57000F0CC1DF32249F0B
+52DC4402D66EAA5401E21CB257B64C57BC6BCCE42D9982E7BEB59BD4DF6D9DD9
+2F4BBF3E96B67D41BEFBCE268B23C3A93F24ADE536BB61BF49485101618626E3
+D7C0CE225F4D1C6C794F89F003D7F6538D35986E9B00321BF9CF945B9AC0DD41
+2B543C87613D62888A53C8275386FA42B7D71C5178785F7F4DE37C3B0EC04414
+D6E04518B1CFC2C9555A86D515BB209355E5D7BCD160185E7D9D580DC56A11AA
+6EB74A690B8ADF214BA44300F377599F832B86837A973114A08A60CA40B31351
+74533295817D98386516B2CBCE838B7177EC42B98ADDF47A0F3A8FF9F724E10E
+C0C9F63DB9913C070970DD845C523EC8C7A595E51F6B057A4A02FC7859AAA679
+61A61E58A740DC56056C3184AAA39D838AEF1549C80FD3680250BE1FC7B8F3AB
+1BCEFA3A44928E48BC5FECCEED5C730699F02C177E1F126565D22CF2D159974C
+5534B45A888C4E13D5A562E932B74582836CC66F4F707AF2076F561CE076138E
+C1C465B14DCD0B96DD956ED7F0D53F6627351A289B549E4E030EBF4F0A8DEFAD
+01220F233FAC4BD1DFAB7069C7DEEF0F600CD6BAE43214E6185E7C3A8262429D
+0757941F56CDC94E8B9BAD1135558A9DDD6BE6DA90FE041C2424AFE7D10BACC3
+0B0B0AA185E0E214E7D9485B34E2A4A0B012644080C1784FD316662C245F7AAE
+0173E80279D5D19FF310AC0664C6B7D1ABD3788243851604EF42962E6D5CF188
+FFF7DDB32F9FBDBEB56B7E021DA7DE0651B2A691D9DE75FDA43C6A246EAD4243
+488CDA25120F25D13D1B8D0D27ABC1576D57A82FAB11A22CF72705E6FF58E474
+742B76A65CB0DCAD5BE01AB7D680CD72607123D0E91504A56DA174F17CBDEABE
+C8EBC553E5CC0336C2FE4FF2592707480B82B2CF52E6B1F5CAE850C0B9B63845
+E286F9FD4B36776E6BCB5B50363C642CB0BC3412575AEC36641359D9AE7213FA
+2CCBD133447DBDFBF08D26FF363F0964E21338A996983FCAEA17BEA7904886B7
+EEC83462C80CF36E3277F100B9C817AF8777049E1015FF4C04FD31333804B0FE
+702124BB7B25623E1AD4544606851EDB3344613E1728B900D029ACA6648CBC2C
+5539BB413458440BCCA852819D9BF4C35F13FE9A29AC7161DD70F1DB44880026
+E9F65C5D4D54A9FAEA5C13E7A18C2007AF84D944DA724DC42A6A7280347C999B
+C1AB5DA3C2C3534EACFAEB15935CB79D6AEAE9A4321BA858B3C197F2C732EA06
+2EFDB15A3376656B9CF5663D5AA331708A2E320AE758904E3CFA528784EB8BF1
+440E7643488615BC788CB7EB8E0F7C788A67BFBE1F4DBEC9CB0E96ACD42C0227
+DC83E6A8C734474988D0E935F08CF90CA3189B3328DA6AB2C5C291A26BCB0B87
+A01CB9646283DDB58AED6B7B7AB477C0641333B62B9E98D68B0F8AD1949653B5
+3E6A0096B709B78CF6CC57DF491FD10BA5F55608E5419FF8FAE98D5DC9CC66CB
+04F779ECB0A4595A5803C6EF04C146DB5D939781AF320BC7978E4AF9A28EFAB1
+E5BABC546C5DD8902BD122213D675545DADB5A41CAECE37CE21020D14A793FEB
+776C1DD474D8139E44B0558E244B7EF7A856A32AFED6B430A54292BCA0E3D224
+7DA360E727A9B309C70EE3A48BC0A9B34C02A64D11CAA012DAF1A0C53CBB1495
+5CDFD232BE35A00F00A995B27A978212673789EB98E4F616F17817850F22CB95
+962F72DB3742777642370DC07CE689B800EB599FBF6DEE7E5FCAE91657430C40
+401BAFB7ED1DA01A96B37A090EB3E5CE1E768BB8A0A98B99AA680BF29CC333A5
+7B74DDAD6A8C564E803A76D991401C1C2B819B0E396CF890DCC468BE9223DAF5
+E261A984AAB93DAECBFA4E96FB71844C4EF456E3D9404EEECAE1A9B4EE5E1A54
+1D4EE0620D24B920095383148E4691B1EF1E162814AA711878FE331FF321E563
+A196D93BEF92F936BBA51B88E3B9E3CC1BE002ECC24E57326F24945DF980CA8F
+69840C8F2B6CA8CCC2D314A2D03CF4667B3DBD910312A909FD028913BC625EF2
+C52F334966C5319986030A8446B53FA94A1F8DE033752CDC6007C4B51CF18751
+9F3CDEC18B969B577B69730A5B3E6C52AD92E3F90457DA1BDFD4DD37FDDDD5BD
+A2CD807943F92C8C0CA2637B53A3AEF7F0667B84EE26AFEF2B609C1AE9848D84
+2A52AFF915929A418C9255178033B0CAC9C63A3D7EB8911437B3B9BA216AD8D2
+2445EB8ACB4761B37554D365ACD8FEC50D1D5E94710A6217041404EFAEB93317
+CDC2F9942AB7A04B93D64F7A9B1413D039ACE22E941005FB6F9626E681E1C2CE
+D3482B29B8E4551374CC67EF36BCB784BF78DABEB1F1CADE7CF2F90CABCE9778
+D231A44503336DDE82513F038816DBBDF13DA33F77B54A6355CEBDCB8E0CD9E2
+750F960F03BD2A0B95BD9F92DBD76639466291CC6A2CEF92DE62B1BCFEEB0D99
+F23D1CAD25939F76BF65FE96D051B359301D5EB12F31F928A1D734440D5619B7
+3A8FE9BBFBCB1F51F7D24E298738DDCA55BD893BCE6732D03E28B5BD9C323C6D
+6C9ED723688CBC26A119FDDF00DCC0328305D39EC775DA6F27EC500991761DF7
+14C17116771CBD85BF2C436ECB0F9C57CECBCC9441B3DFE4AA41081EB8E97E0B
+AF54C007774D93E90C0E0692FFC556639EC45218BBC787CD50F69B3601E192F5
+3F5C79B8D8D89899B7ACE5B50537D43F7EB0A6C1B470EDCEC6A3373BC98B69A0
+5669DBB294B7418CC85BA8FBED39A8E1ADA234779EB84E7B9FAC59B94B8802F3
+DBC4DAA0AB4BA8E149F9B9E08F841EBC290911C4A9CDDD0CD1B3C867C02ADF19
+CC8E0CBA8EFB18B4C6C6F19AB2DBF50ACCAB8CD17852B4209907BA2921E6F1EB
+083294E8167E7CD0AA4950C3755C5D06CEB24D593BB914B7D3B6A794AEAB41B8
+CB7602EA4FE60F70FABFD2EA0AF5F75C90287A95C231DF36CBE4D08B3D1C6593
+FF61BE21E3E570655CF30CFB6ABF02771E51D8F467C5437914BAE200946BBBDD
+7480E840500FDE4E68C62FA6428571E533E5CD4D5B4660453F97FCB2BB973115
+E1B0050D9AC684
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMTT10
+%!PS-AdobeFont-1.1: CMTT10 1.00B
+%%CreationDate: 1992 Apr 26 10:42:42
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTT10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch true def
+end readonly def
+/FontName /CMTT10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-4 -235 731 800}readonly def
+/UniqueID 5000832 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
+38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
+D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
+EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
+A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
+F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
+4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
+6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
+A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
+E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
+1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
+452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
+8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
+5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
+DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
+BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
+741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
+E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
+E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
+D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
+C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC
+FF798F2ABFC4F3539392985C4CB324B00072295FC160818BB0355FDC4F12E39B
+984826450553E3D271F03D8DC2D12A92A4D32034FD16DA13B876D88C8C097384
+46D8D7E41CA1A8979F9B07EC3337E70CBBE3A377235B04C79BBBDB66CE1C1A41
+89DAB7CE91F2FC0CAF6DDAD09992D56F72299068192610EE3DE5DB7CF6366B4C
+D74F414484DCCDBA449BFAADA39D0F27574E604E31CB513B18E3821A33076151
+C2BCB6E957C77A0AECA48C587ABB5E8C7624D56B32F80BBCFDC874AAD6EA5119
+C9B06886F08CC7DE5400E0F52B07483FD4BAF26C1556CA27B259F845681D61D0
+2D28B185C9F052844D9A5F91CF19210CBFB21B55CDC8C684448E9B5A1D249E15
+56632979760E2CC7075DF794E06EAC2C8E770828837AEBDFF1A5EAE67338CA7D
+F0A477DA679EAC876B6E0F0300ED4D9097E654F197198FD861ECAD138AD5B484
+A28E3CFBEB4CA387F488BDA739EBD767BA225E1E0E7CF5D75C85B4DE5437481B
+011B4B5C9590CB8309079CDE324CE4C2EBC40CD2A6B6F20AF0CA05B89586EB58
+4210AED367DCB3FC3A5845CC77126DF2DAEA475CCB4D94EA9CDFEBFAB137AB61
+D03EE9555BA9C6065EF9ADD376F6ED4971D546608D763570B9ABD3F692D505A6
+49543687AB7A8CD379693F71C6C859796B12E9C834E18DB0FC0063D502AEF1F6
+F5324EBC13AB3FEB378BBF9BA3A9CA9F2DC6C03E2D2102C5F245242F736450A3
+2BDC1E924E1C6F28DDFC3900CDEFC793B94EAFBAB1D8974A95B424C6F9D71EE6
+AB1414BEC47E836BEEAE29C8AA3A1BB09067CBABDE9701D65075D75A43BE26D2
+B0153E6EA2226BDCC9DD52FC8ACD2437BFFA60C48B558A3481CF70EB9B4810DD
+9DDC306C60835972912D1C8B91E37BFBA6D073403B7112D28DAFF0C7EC8C5AEF
+2222EBFA58B67472EBF5CE8986EE3681AB1CA8D16D9A2D6E64C3EA177A19D756
+655231063A387F1BC3EA15A1670867D9025A82421D1DAE6A674D9909398E1199
+49738C66FFDF170D54A748C8F10E22CFF8F0AB6B0C6EE870B589D3E3D9E548FE
+405D01D18D8D883151034AB0973A3E52B2394C2DB707DFBFB26BB937B4F16FEE
+5FD39DCBF8FF3B1A6258B0860829C1923ED50520680FC6AA3409F9BCC0E571A6
+9F9EE2C2838982303318BA603014762E1354039D59AA3A0D6B503AD545050663
+7BF58018253C2E99CBD1868FE34CD15C0F9ACC04AE1DCFA5B0ECFC5DF9D80D15
+4FE32B4428D2ECFEBA48E87168ACB8931F808AFAE6E23AA69E7DBF3EE03218EE
+97EE38CCC15BDCAE42BA442307F1CA795B39D45B390F965D28D61C0D74F87227
+A9BD80821776EF541F95735F3685D189F8A276F9A9D11DDD8B63D574C95E539A
+D0394FF86D51CD478866134BD6B616623888EF8BA726FB18B9D788147C5513FC
+70E3BDD453F5CF5C969B9AD0EFD63D08DFFA844ECCE12608526182CDFEFAEE04
+2BC1CB5B423CFD045325B46B869D936EA63A51D7B2948A6EE6BFC96606BFEF49
+3B39DB9EE88B8FBF0348654A7CD596EFAB99C1FB47421097F8BFACEDED57754C
+C11784BE56BF6AFAF29466CCD58F3BFD93E1E7317926DF179C25E304CB237874
+09F2D9AB5C51E590CC7F7760E20FE692BCD7909DB4B11BAB7EF8D796F2772B23
+4F50A2FCAFC7ED271D9D688443791851692A81D0E29DBE22E1AD4CA2127924F8
+D395EF943A494B7199B6FDCD446C307D5EEC73CD2BE9B8AADB6D669018584ED1
+61D5A2876FD2FCFCEB820C096826C2C8B8A71EEE301368D8339B21991DF5F2A7
+086954362C24AFF5F76BA4FA4DF0FF25F2A622EB4AB569DA6A106CD137D676E8
+C1AC756124DEFB783EE4A691EAC8BEE98FC7E026D0930F780020DC27D2D373FA
+4A554AF9F00CDC54808B4BD35C4ED86978C1B036317A31B5BC6FBB1BAAB15B8C
+7B721EF7DF444D97B91F0B9CED609E76359E34388E0C19714B2CDC2C18952603
+FCB0488E9FC802DE94BB728D7F4D7239CCECB2FC7B01133205FDEDE068F05953
+058111078CED0A9EAF4E0D72CA5462269DB816404416BCF96487D489D057D47D
+F5014FB7FE63D925F86C00BA070358D83027ABF8EED8FE452DEDDB3F7171DB0B
+47175145B2FE6070FAFCBA3AEE9653649FED0D1895B5C3A1433A8ECB4B2ED9F1
+8A7F624D538811F48A755C43F12C592E86217348660EA235D1BA47B78A795D0B
+D1BDFAFCAEA4921D787518AC3314B99159EEDB8BA080BBDA46A24ACCEFD6A6FD
+1507847DEC2D3571F291CC89F08C293003BB33AAA1F59679594403EC55094DB2
+9A3E7F8D0EDF7AEA70558C271AC27D901F5C227CFFB1EC944F7805E34F80567C
+E765134C061094FFB282B5DA914C9F65F74FA51A68AA8CC3D45D318AA0F9182C
+BB08B6DC71F171DED6239F4C5C8A568AC2E91AD12643245600771CEE0981EE20
+4F7BF6D5D115B7CE46B79079803002092ABDC9B5EA9F15AFD082488533D91312
+3562F2530C197500F5058D29594A6045A1FA22D66C89E502DC8617C491891A73
+11CAA863D7DBEB448006A4B3DC96FD218756034750074CB69C345F744881F53A
+94CA1CE26D7E31B3EFCC915999072FF10632D33C12D25753B55982DEEDA801C6
+327BC6D5A4E6C248C0DEA632CC8F9D4F8D2E927AA5BC9AA9BD7806E9B4285DC8
+E32C45946BB47E57A200B869E8F5EA0E3F8709B8A8A412BE15E97D0BA542223C
+D177EB5E3DDD36334E7A73838B2A24418CBB92BC5A47F24D1A5F3F12C1AB53AC
+F76DE532012C0D235987426B79D4BB1B5BD001D473EF7745D997948E267956BB
+58FDBDF3932C3A4EA4B105B62E5DBCA7196063B0C64A42367BDE6E494426F72F
+B2D670BA36BC7AC258593A4443A917F32483AC9D107367CB27F670C02EE60962
+707BD83E0B314882EC62A79A55D977E5EFED74EE60F2432281335B5E4EC88CF6
+DAA9D750541B2E4ACF45006E3EA2F571147045501601408332BD8B1F2C45D1AC
+465085558F62C4E6EAC092DBDA8DCEB43C00429D5ADB2B2F9B6F6D62C1FFC930
+CD3B0ACF2B6381E8897A071C19F098C2395768A069B01196925C7153E65712EE
+1E321C0DEE3D57A0C6FBB95583D8D6D16A1B53EAA9BE3D70897E01E87A06468C
+795E9A7EA6D3455E98E40E24158795EFF878D8C3168C0FD23E3CD76E1161EF3C
+3AA4D16701F748014CBD1210490FEE000E6967AE7518A923966242335243267A
+52D5E959F9FB907A3ABA7DF1A19E7D19A3AD5D33BC615962CFAC7DE588EA240A
+436597826C16A3716BA5FF64F5B709C3E0B35A07A6060ED886995C8DF6DD653E
+B3C84108F5BE11857AAF84768E6D11D2BA5759CDD06B6F76B0BB9CA39A4DC9B3
+32F787D1F5AA9F53A89376CFDFC2A3F02F4335EDF95DBC6C39CAE3DC7363E053
+010BF93A5A919D196EA30B7C418DB1DF3E6E77A4DEA9DBC5A614658C8D4DBCDB
+399D37945DAEB3B7A993BE2B8C5DC1415056966E0BB6B37B85F2A60D62613C3C
+C25043A7D096AEBC94F8E71359369123E9A6B6FB25C91926A87C939642A3FACB
+915EB261334701B4738F05AE355585AD0C8389C734390F271333657F2024921B
+0512E5EAD1ECAC7E8A953543472C60D46FFFA12C9806AA685CF41C6DA171615C
+539807DD35F7A11D3488C0274930360EF17CEE646DED1BA14C4CA9E1D49FF864
+0771C046CFE96F9FEBC7C57A80081E082D05D7D8F47A7CFF5AEDB00AC0C3C592
+C37BE62AC96A9145C6485DFD54D45FCEE24A6970485082915C60D751F1BA9457
+21BB5C1CC4BFDBC76A0C4F3E70EC7F656EAE01EDC3B019139B890500279F42B2
+87270972971F8367BFD7B37D97A6BB45F9F3B81DE18B89307CC1520270DB8CF6
+3BC4E21C9CAE6F8AA32DA60984C61B550FE10DE70713552FEBD98E12353EB037
+DF1863F50E992D230794DA92AF15A44362A17BADF992C1621021590CE733552A
+8E45A38999ECFA7EB0DF784534CB39B3E508D492DA8F7A5D0553772491A7FEA6
+73499F0A8282056A3726CD3E2AEDC789DDC1D77F2DA8629C5EBD7FDC213A9FB3
+6787694C99CA4C8F3321BCC444805AF19B1C35145CFDAC8C276802A6687BE6FD
+E83E0F144A4DF7EBAE478068255019B2D62C3DECDABF69199F16063A791CA321
+B970ABF9605CF8433B16C75944E2F932AE5466D17E20F528AA5E857A1B377A25
+1FF166BEFD2D078D32A7BC2F9CB9E5D60B9288DD3B2AC1785B7D098B8EC15E5C
+B9A600993B8760291CFA1FA6C39A4B75E0E790FDC9DBC1709A5A9E1AA88E96D5
+6E664B0547E02CA0ED129067C767E106AFC368328F7246FF832CA2FFD701774E
+62250B5D25A529D9135B408BCDC76C70CB95A5BF4CBBB6EEA8096CC038F9373A
+A2D3AE14ACA0EBD22BDA928781EA14845EACC1BF3B08B12677BBE20C07DF93C2
+3C2D3F4A27D8F462422D94DCCB5AFC0A8A73FCA8078147FEE04EF5602E08B83D
+1B6BD93BC2A7547EDEACD5953D00FB336F9272F9F559308E64A3C986FEACF6E7
+E580A4A75709D12F38CC2A5F5AA9F9A6D6A2B01C8EE7941C6FF26C991DD8737C
+F9363FB119121998B78147E0AB8B9ABA9EE8BF8EE916732D9C667E0B9A5BE37D
+8AC77590E0B68C619980D62B66AEC029D60D886DD2BE653BBB1F4DD231E8A9E1
+3D962A2FCF2DF02A1558BEF2770FC9C140B02E6B09F912E4EC7CC02A745EFB1C
+5A04A0DF200F7CA103BB67AE81E882DB7D4C02B6420F63CA767EDE40FA252816
+60F0A3FA6671B1F880E15E5B1E2FFD85DD5B032E2011122AD3AEBE51074D9F77
+B77C3FEBC3792B7FFBD0ADC7C8AA118E6E6C8E4BE29AF61B419E97C5A9D5DCB3
+7002194B0BEE60A5C5E2234B6BD5C4E5759CEAC3FABE3B727D1AB9635A780F79
+8CDFAC295D19AAC7DA9AFB6B1BAF4C23B605B678D8401BE32DE1BCEFC3CBDE6C
+C44273F49001405890C52A82A851C32D262FBD8050BFFB0F1B26EB2ED9C4FC16
+D1E580E155B097D218915057F18AA2D1DAC0251C56C8E9F8B1F7306C39FDC139
+C78DCA99BFDE0CD6169B24233042A400E061BC814C01B391FD0EE298F1007E18
+CAEDC60BCBD3546D055DE67276A37ED946FB27C8D904D8A68B262CE8AAE277AB
+DED75D97D5E13A3A7FE67B19F50559E4556DA9EE233359C50AE90E0F51A15E72
+665264EE34160E384C92D96443EDAA3273070E229BEA018756B9CC17F318122F
+C57FE7E2E63DAEFE77FB64A987AA01A18E9CAC1B405E74F4250B7D118AC5F293
+37AC269DE45A124F394E1CA16DCFC0652E0B38556993EBB38D87AB1B69F033CD
+061A2B15D4726067F869FA7D9987680C6609785854349C1EAF710B395D62B863
+C42C2DCB31EB06155CB1D7FB65C3F4A0FD773FA29B67FA686843949D0AF7AF49
+B26849A723FB471685B2E280AD166F57BDC02E6746525EB2611516C39A48DF54
+B66A6B7AE9581106A78BE26F96818362FAC2865DF3E0C12AD50F630431D722F3
+53744BACA67E750C5DA7A659C9541D0B2E3F980EA92E796E4A58DA80618D9D3B
+D9EF1A5A0CABEBB7AB56E3B513079901E8B7F2D462E1CD86C5702AF64BA164E0
+E7CE17926ACF2B1619B57998170DE283C42DE186D066923C4E6097D279FB4FD6
+7BA40403335532F4D6419A85646EC392C721F4B1F38B48EFEB0294876B25E6F4
+BDF81A0D2DE9E691F0A7EC3AFA2FD8DC0F2F1CC1667141B9E379EC26CD0D5A13
+8B9FEE4C4BD841428F48D2849751AD4B0E444684836B2363F117F9CDD211F4B6
+957470A2ADECC53D159FB62C1993C3466E302E56C218E874A1FF17E93CEBAFAE
+51EA431599C1FC4322FD600EF3D75D8B041503560A58FC8E7E800296BA913D7F
+82A6C3D4B521B14952CFF5461BDC1FF4F4993D331CB8794224AAD6182B60E856
+219AAB0897B61860792ED485A5E85888028FF8EA57630C3821D66E833F44B047
+79A75CF1AC04E661D2F1A34AB69DB138B55EA4AD1F8AFD8C25B365299174E147
+56B5D2BA005138F682787599F09335B9E68B9516AB697172866BC111987A303E
+33ABC7A68731C2ED2A35CE356DD2F9110F78679296D66882679FD2AA0A549E2A
+44386DDAEA8F9EC957023BFA86CA50086BEE97865BF6EB6A26C4C87EA2426894
+A14D68FE61B71A6753E43CD39147A5817507DE4C2236B469062B9542A8163509
+2A2B04041A26970B21DD09E0DDA4AA5791FC461086A6CF8B35C006129174F4DE
+69DCE91F1FCD1A343740692E72AAEF08ADDE91D09EC74CE29F7754E9B115AC1C
+B12DAAF384F3F8A20EE86BA2E78C1D500D5F0943371A184DA3895E7E330AE15A
+B7C8BCD3288D8281FB075FEED6D11A561ADFFC9DC1F108948CD78A3F9529E1C7
+C216EA7BD24C7BF7625E1A9CFB1383AD64E6AFA67910A506DCF7B7CFFD6D83B8
+0DDF64008F725E05EEC01434EDEDA4C0CEFDE40EC5FE386F8E92824DBFAA4A24
+163E5646B8AD61E1285B59AE10929863403AF3F41FE9FC9B6150434560A1842C
+BDB2468AA1A84D57064AF11AE7EEF3907E41FA56F97B547B9480D002E6B57CD5
+6C069107400EDC6A9210B042BBCA0130D3FF4EDC1B02524FA608EC62F42CE8E6
+2E694D29355DE50FEB8E3B6874064E043B8144AB5B91B2AA8E968580EF856030
+0784CEC138169EB38F7702ED4F671B5479EF480FEA2681325212DA1FF3446E3C
+63B740AD7F9C9428D147DB4DBD0B1500AF3869942912D5945BD9ADB9E0ACB5FE
+B2D5B8F010C7155EA94968136817D8FA21271023B847B94FFB57699A8D0B078E
+609B580DA06D71A1C859DE5BDD590DE43D1BBA7BDEF5929C5B23AA38BC1EC56B
+9D0DB9FB8BC983F0982E583C2984891264B97DCD5381BD1347269330537D2056
+ADCD1B6E3371CD95C2DC1368B73B3883D98096B5DD57811A9350E038FA7E6F3D
+9C29C1A8B7A480553A0C49E619A1D68ACE92B6D37E88B5C54BC3BF8865307E3B
+1D03CFAFA9A27470EFEC0FF156D389E72BCDA79F850BF7E295A4609229F7A5DA
+D78D125E599F6A7DFC8338A76134ECF68BCF96FE9F6F8F1A226DA2D2FACC0FF0
+6FAE3B47CA68C8BD3D206BCC6CF7804477B0CADCF2639D3469DD130248AD7BB8
+025182015F8CA829793DEA2B7762F9AC18FC3D972219398366C7479E9B02F561
+054011A6318133F38597194FC449B068673FED86D50B2903B63676001345F088
+37BC0995DFDD5507FB8C5223BD445468B231DE8114911857B9FC68DE1C1BDCDB
+AF8E9DD3F7D88D4866134C598F3E53F043AA27FFC110D71726212F950A72422D
+0249BAA49B72A8A10890616A7ED565241E9415E66317983E6F7ACF44E700E92D
+19417210AD7697DA7105A88E8FC0196CCA4AF03763A528B64165090C440762C2
+5A716BE4A65596A73BD360F845E8ADE102B296CCB46CA60B5845BF7C8BEA763F
+02F50119DD97AC8019CF05EC680A542868C59B457656010026CB85B64587E8B3
+B95DDD6FE01D26C1D343CF0CDE837066FF1F55B39B214B40728E0A67703E05DB
+FE7B61322D7A8AF6D8A59083D90A37CC0CB130AA8B97A465739986A901F486A8
+A94391AB1AEC1EEBFA3C59A8690D4D3CF426244D26F0ED2A260FB055495B4B2C
+87273AF95F4A3204A4F9556AE7830C396B685292C7991236B7FEC579A206B6CD
+7F273D7AAE73CEAE2D43825B12FEAC52DDA79E734D32A515678C1C36FDD38011
+2BF9F64ADACA3805782471A6FCF0667004BA6399375AF74F15E819C71284DA6A
+D4A74A30729104B85102C71C570415E0D763FD3B15B295376F413D8A567C62FB
+411E712E5C577235F194C5244FDDF3D980BA59B52822162966368F0F6BE6EF92
+1E5154ADF6644E835CBF01669AFDB6B4BDD8DCE8C424AAAD5BA3A11734AF5106
+FDD3E82304BD716541C301B5BCCA599DC44C7B1F02472A30D885715F1BB7ACF8
+0B898CDECA627C4C241F9C3BF954A4D009210FA5B7472E4E9A37E83A8F412D7E
+E69C3AFCCC634BD5DC8846F86C52245807890B6D6FF815605ECCDFC5C17CDD26
+38EF4B1337733A53ACDE58079A3C5BDEC5499ECCF23183169C5D1AC858B5B922
+69FBC7F343B95DB603ADFEE2A61FA995B6EBEBD94AA59041536A1DD9E94710DE
+BDEE396F4DC70B28FABD01614ABC59E190307E093F1675550069144753E0710A
+672C714863DBF5E5D6AC6FD7722674FEA6413758203B9004223E6A242FF30160
+A945AB94F1EF68B2ECCCD78472E6B60427607DF5BAAB51D5258B78AAFF934D1D
+3C6AA9EF6167B95411F5E8CEC3C73FF4D4AB9E710A5E165D8D5526C7FB8F0C4C
+77A557242C68BA3D0CFE82B7FA18DA5421D2538D67E5E4595BE1F3C203E483C9
+B4FE9EC5A2705E276CBF44F4A2F0C8018F3830BC44FBB3463770AB308ACFFF77
+9366D1720BDAF92ED385A8BDE55BF7D43034B8D2D634F4509D761035B44F3715
+0D9DE450D86D77D6120F50C1DD78405AB371B5E8A53C06E8D127075F7A680B06
+1C431B2F8898AB407E262069775A0AC76754244FE9326ACF3B0473A36E559211
+7BCFB8603A821CAAA3B5FAA1D49070A6C491BC9C411FFB33112D13D43BE4F1DB
+C4F4800DFA69486B659D1DBFE7B791E9DDE5AD04F0767BC9CE91F26A4AF6636A
+E56D64A8812F1452744FE5EB382E966356E214E105995D2F7B91229C54431AB9
+F4B5335810AA64C2DD5222B5FF6D74835EF0B95D3C13790B4DA3E291EA42D2E8
+94F9B9161BE75F812013555F828C549E190031C357DF1B21A848FF2362207118
+F7CCA7C34FBB6EAE4C0C2A930117DF3EBFDA7957E199175FE2516E3C1E4ABEF9
+E9C54C7DCA0DD72E1106EE37B9285A376D65AFA6BDF59C426F9C92F5C2EF341B
+EDCA5162513BFCA516A04B7C0358169EDC8B10714E7AE35E6668D605D073C00E
+0C8E56C51063949D3FACF7E488D5808833B4572F33F8F1F16EC9B3D39752251D
+4705A1DB8C0CC00303009E3F579975C349BC7D65F96800125492A4E403980DF3
+0F2C10635079229D3299494384E31790FB8EB20D794AD2109901F04CDE3349E8
+74F7B11AAFB9B065D5500EE065D1449E239DD1DC750A972B94619115D33C1EA8
+52F008122DFC01D817151DAA25E8DC205570ACE6D517909EBA939D6D42C2BD3E
+9660623863F1E71A1B3E35C11E052B1F48D1E3B018BF59974B6AADABF071D73C
+81EC636C7E38F42D2DE83B19C5F1FA269C87FCA0E37C9FD8EA0C65550CAC8E0A
+BA94513945FE5F41312A32B82B4DAF5EAAE8FBA4528378AFC8EC517B550659BA
+038511B03D1A79D6617B15E8DFE0B4F81BCB7441459A36D89EBD6DA56F9B9262
+B0B4924AB677180A862F679EAC026B3DD1654F683E1A0DA3C72D373A75664D90
+4D4CED7E1E864E8A7454FDDAA411FABE99DA356A087EBAD461DA5DE313601C3D
+1179ACC18943AC096001B8D275AE0E022E34B856210601CA71FCA1AB7671688F
+CBBFA2BA9F7A9F9009EE474C4FD1F46AF04CB920EEE7BF44D980A7A45AC3C48D
+4C8CFE73E71096DD6DA6B7B7BB84345E98B0D35E9C112519401B63040C843CDD
+71C0E96586C51BB322F478D5C0E1A070A604C2AD91F6744CBD484B6506064CFB
+1200CD55434AEE45A9E2BC24B04B3C5387BEFFC79C059DB11F36696627B55444
+F99C310787585BB9C6B44FC96AD2887E830C2CC6E9DCC6B0BE5A0706205ECD35
+DFB68F56302EB865744E7EF868D0AAD911C292232232C8C48E0F502219E1BE68
+43467927647F2EE75A3D7C75319A694CB05CF5669D1BABD0BCCA6657A40FE9D6
+42A39E8D98158CA844BD8147A8EA188E4C99B2CAABF202717DD0FFBF6C50DBA2
+810D37FB016A670658CBB01F472D35C2D6D26E9AC53AEB455AB291032DD3C942
+4AB932835E4F3A719192DBED1AE5456E9C3CDB489AEB5C34C38D9FDC2285C687
+4891EBFC6CB634B973D33B67A5628712F3CDA48C64684D0133C42375EF15847B
+7E66CE7D356A252494F2AA57229575413BE5B2C8C11777B9C890F782A403D624
+011A8F303C2E1523DD22020F74388B741B4B3F6637F2B87AE70CDB045042C7DC
+05F0842FD0416DE91DBDC93E41DB1F530253848F21FB9063BEA95F52B1C6245A
+9F2596EA88B2D149A4214D4D57ED7B19C1F9D2857ECE2746F787C8AA3A2F8160
+C5D031E98B7F514F69AEDD800F687924AD0F997768E31DD642C568E88B2EF953
+CEA769065D5EC23018BCB7A66909F7D1F6C6240C79D9D680779A11FAB7882B4F
+CEBB69FE1E4A4CE4F60D2EC233CD04E816C471F7EC92B8DD4D0D28E569915B28
+5B5386F91EE0D4598578209C9D2CB4AF10530B92B89A28568AC2C6B72781F451
+503D6D65DEF810CD8B391735F0206441B51E685BA168DBD9D6B67A7F70FCF6A2
+942D5F1BC2CB6948B04BF14E6541DE769DD9E1908A609070B5017849B98E9376
+ABD29965DD34E25EA11BC8FB58D22E4FCDBFB1EC136F62DA08B852529BBB70FE
+2BF34826AE45E12E225F67478AADBEAC83E4EDF9FB18B132AE91727955C8BE84
+497C5E842B3624620468949FF85758C43442C8E0E7E8A540A4D880A00FA8A671
+3374FBBFCAAE6195C602FB46CE0DF09C1FB1BFF5FEF124F71B5AB4B33F362837
+DF20B411B92BD3179A1A15759E04304ADA03F7E939DEF25232CAD34A63B209AC
+175551CB47A40D02C46BA392A1800B70DC31CEA717C749D8CD13AED86825CBC9
+B329C0DEBDFD38C52CD196A17A111C1215D2F53AA8E2539493A04E135E4C36D2
+AE9198124DC59A955C52A87B0DE79AED89DBA12FC5B690B5856590C25588D417
+2ADF8F8FAF41F4CC5F80465326869683B1A76BA4B70FE8896E8DAD1AFBC39CF5
+3634CD72161E6F32BC683247FABC73DDA8920B58768B3217326DC14D7FCF1D9C
+C2D1E21419C5C6048D5F5645CDE71CA0531017B9D13D884550C4638B7EDF4B8F
+6DCE66B6373E10D12A9E464DEA8DA027A0B4FCAB93E00D66574F274F38659421
+86FA580EFBAB5369A0B993E21ACE3CB981A0D81ED35D4C85AAA3CB3AD7AEAF15
+44D76669FD6FAEBBEB1853EA91395C987DFB698EA66942A361C3C9C85F18D977
+EF5D23494701CD3168F89304C7225E4B1DBA897C8877AEA466EFA28D432941CC
+A2EC76DF0F2BFB13872E7D74F30C54405E0D2F0CD4A2ACEEC5142CB2CD3CEC4D
+6B9BBC57A29334693DCF56AB811C2511288BF35A7D71D0F6BA8943F20E32EC97
+D3656357C236817EE9E0D79949BE6308C860A6A0A09779C9E665F6F1B8FE7E3E
+521953A392DBF1CC7842F0DC7E0B2318BC9B2A7497FD7E03113C5AA8BC57EE07
+D954A2F7769FEAAF0BECB0A8979C25E3ABC66642DC9901FCC7E042CA3160B86C
+009116E9F48E97D0E0DA4055B56F9C232E9F0A53D56640DA208DFBF120087126
+FDB8FF1CCE56D441297F75EDF72C850B94357D259B1B541AEC7195371029F11E
+05CCE7CA6F7B37DE32E3D57D7B2023AED06719A6CA86046EFBD73040257E6D2E
+84CCAB10D436E31FF5BB3BFEDA10FEFBBDC570519A40B5CC2A47B0B9125F377B
+CA6D595E53D78D473D55C401B59BEB1D2BF3320DFD86BF96FAB726F04C54814E
+95B7FC219F41E49C51D2EE729DF2EC25F17F479E4224A218707222BA1E6F1DEC
+5A88F68A0DB91D026512C03C8E2D68E15A2AFDDF14291B2B0E30A69724E591B8
+21CBCC6BEEAE606D6AF61A8548AA616C94BE4DD133B687D5D530C4ED2DC1F78A
+0D821D05780550B53CF3F60BB44AB6F55A6CB0AE724A67C304A2611B36B61887
+54D653E2A1E5971AC927C631039B6614DE619DCB988CDB2FBC4FDD342777EAEE
+3B3964843B10E04BA4EFA6011F32FED117ECDC89AA1D466C6B96E5C75EA802F0
+5F661A0401DE68EB137FBA91A0B6C7AB28B730EE6AE1799B6508F145426473CB
+27C07AAE26F88FCF4DE67DEFFEE6D572AC8738DA47CB7D85A9850A47FDBE0D59
+A6339CF283CF6DA940F7533BE0E88182DB993020B7152C691B0EDABD05BFE98D
+AB2AADC47F672119B4199617686A07D6D48AE044735AFEEA407B87858309FAF4
+EAB9826CE2C17A8C50F99354006E0631AA6088C5749BF180A18A2949608BF51C
+1EE095BEB8E1A22BACD90CA184114CDEC7DA1C5FC1AD105D964EF93B1ABE0E42
+A426E2127595F763CD6A1FAB0F467D23C6D16149E490D1EA817E1F7674980AD0
+EF2CF7F0153BBFF536C0E1343377D94AD7D2045DC3CE439ABC864E2AFB61DA5E
+7AE11402522F482765AC10FD050BA031F757969F691D256D982FE002BA38B4B7
+46DDDFD808F68C8AA006788F2BB79BDD080EC8A64E88CD550239434964E8107E
+72CBF45CAFEB538DC668B455F6A017FE471E7EFDC12A348A7F193D54B3A9A84F
+A7B9E44CB76BEAEB7FEDAF001B0C2802C0CAC32A12FB212CFAEEB60FB752E46D
+979017DED77BC42E2D86BB2B0A5BD652EFA9B34975E0AFE4AF60CE1F671459E0
+DA94C01A6888D97074DBEC3C417B769D97B9320E2C9B2C5B773271C8C6325F61
+9E1CF227C194A0B7D58B45677FD3BAF018342E7009958D2DAE28A600700A7588
+0EF66981674D173207EAD09E7EDF88149A50CCD92B85D983A865CD2A37E3FDF6
+510B48DC3A7FB92537673D2AD596142C77C7CE88DCF8610329E1911C6917452B
+8BE292384C63A614908D66A7A2F810DB0FDA4BE3DB35E35DB499C5E62EB5E569
+13AA4D661EAEBD652D1B3EE727D3D5B519E9C39FF8C6A8BB49C1CBB065FF0ABE
+7E1326995761F7510D5946F8A89565431E74B881FDD89CDE7860FFC35C0DA56C
+FCDBFEBD10FADD9FDE25392BDD66139ECF9A5F9F957FB14846F15732A08ABBA5
+824FFCD45F469D255A6BBA850DB97A1C2C57771873D179EF07DBC892C0E9D57A
+9411B6867F5216AB0C9C5967D2A0385C6FF36015603ADBC55C392A3326FD5AE9
+1918306B4048EE8CDBE2D031389D58060B25068C90A224989E496DA34E3BC0C0
+159FD3CC18864578F00B62B531404A2DB3E302D141821364ACB96B20211D0861
+A317DEB0A50EC081966F1D4CBB545C4E5BD53085144E9DC276CD145235ABF328
+924475A52852554909E8AF80B82F22D33906EDA1FCB05630036CE7B64822F32B
+8C8885B698AF4283994B86E31C065FDC6DA3121EA730698EC23092E77CE54E52
+589B2641A412C8213775385DB7E87C7455EE01479A6D637F895F9582ACC5CD04
+E332D5D850CD59D9B64FC7340660C7084529E7C43CDB08905F3558BD3D26B0B7
+F5A52D921292D8CC7E8ECDEE34E5BFE90C80E4D238B6EC6F22443B5D5AAE5F53
+18D8639F8F0857E4E3889447E4A70B547166FF5035F47B663FCBC534E171DFCD
+447507D0EEE98683A1CA1B3A12D4CAF7FD94AA6FDABE0728AD0E2D85D0017CB3
+B17BC17DBAF2D4291B3D687D1DAD9252A0D85A72BB55E726DEBB62B6E58A632D
+097362BCC762F51A12919BDCA0E332CA64169A63270EA95AC0F3499032803622
+C585E9FA20327353B62C1DCB292F87CC4678C1F19B4280A4B363F2C9CEA2646F
+3AF1D021812422D3B10CCC08447AA230CEBED1D861E96B312C4FFA4B4DE51F40
+10EB8CB178D583FC6F3B89F3F344C6A1F2B3BCE71CAD7097528159142CA8AD04
+F7B97F6AB96B2F3AC1C3931D0E5DDFA34CAE46D4165ECCC5EF2B24AF78A39979
+7CB293F1D508F5025B34029F572EE22A01B2A575D3C45508B7E562C2AEF7FDEA
+0B58797F20E5D8E2554E5DBFFAB010A82D71C9AB6D58C2A97301A43BF0B2E0D2
+E6AC020EFC2C10889C5063E4F0AEB56398AA92BD045035C6535B2BBE47D2C569
+9BC105DE17FC24FEBDB9B4E4B2B5C71AA3A08A835C9D8F757537EDD33BDEE69B
+8ADB5C14FECBDAA26FE326B38EC7A38C1612DE29F19D5256B9ED80AFB51D722F
+12971EE46C47F4B382439006C52DC0D458A3B6CD529955090BDF44D915942061
+30B91847F2BF79AE62ABB7655DE0DABF5373B4B65271B6F0C9C495054FAFD27E
+E6BCD9A061661004EDDE73749121698F90080D31E850D857EA7AD53B39EEB510
+D47A7A3524DDE138FC008D8147D4C9F5CF9F147F481AE5B801D151EBA3AECEBD
+B0D1D4E07E39634874AA9F64665F88680E9775B79F5D1EBFCB637DF765942E70
+34383CCD76D7F2E44F21882320A5ACBB4D22E52DEC5DF736317E7D449D148540
+38BF5B27253E650E0ED93E39A86F9EADA44884775FD8A86E0C832219EC0CA5E9
+B92227F8C91F173690BBF38B5165FE404E232FB06FC30AC489E51C3FA95F7CFF
+E580FA0465FEFC8C1E6AE32AE4A3B8396536AA552A4303815C5B54D2991EE9E8
+E8018A94F1732C04E570C9CFAA67AF4B650B30ACC51F33D22EDE53543C801605
+3C468B86B650EDC223082994BBD0B5DCAA8DAF3FE20E5412A49243B77E10140C
+9DCAE1AB0545AC999C84491DAC7076758211F0541FD116ECE6C883866B997555
+D979B18805AECF2649B8477AEB4CDF0BE281A87CCCAB7E42B02BA27C6AE72833
+95343994EA87C4758B1ED92E45807EA69D7528141D1C8635837F503A8166936F
+06DD9FD7DC588B83BF69959828D8CA16777EDAF19EE9A6893B03629B85510538
+EE4E4C19E0CFD823CE4E4CE5A228772E153244A8B1F146D6B61D8A23B6C6EC15
+847EBE71321D37EC4C8E6899E9B6886008F1D2E385835B76251259EE6B5A7F23
+4B0B8D01D309B181C618E73DDC3805BE5DF5DBED5BF438C0245CFDBC423B5739
+1A38144B3BE81A10538FE43A80D1198E17392DA030531A14D44EF55807DBDCF2
+3240CCBFE1B0B779C13C86E72BDEF5C5FB3E12F0BD1EDF0DFA9A57277D0C293A
+572FA52098BE23D2AC05BCDC49D6F17D33E5D36021BEA557C01FD89E1B60E38B
+269BB02F34734109536513A2336E995F084741F7BE1F692A271DD9A86F8AF349
+E1111EDB3D180AB4319F918D12DACB92ACAB5780B23BCEC7F572709514340C19
+6E8063C1D5B9ED6ACB64886AACB7DC0DF4E8E9CDBCDB747F63D4EE76E81C2E9C
+73C7DF1055BF66508E90FF17A67A9D8981818ABCB0F13456139AE3C089990656
+B6CD3ABC7C91C18D8DB5EBD176004DCB2A6E333E7C3C23BA613473042403AB9E
+CAE6DC60142209D3B1B6B4390D4F190289FD7187EFE19F177666322390F1F2AE
+935816B4AC6E8D4EEED18ED3E8602E2474E533FBFCBE6538C6DEB954925227E1
+927F70F4D04F1AB2980BAE6D2D1EB902C2CF0B94EBE608DF98A66FC23A2AD835
+1D6CF30C837B86AC1CFF082ED075569A43431B2C9F3485629415641800033F30
+B4AFC0045627FB8B02DBB5124EE034BF433562896219D08801D8BE18076AE95E
+B2F71C3D91717C6D67E482F2A75949778B7762B5969C306597D3E7DE1A2E0789
+4C2E05719FD56E7B5A00297236F7E64FC1078E6A13509E40F87C7B35D95B8E77
+44BBFA83901FB3B367D76BAC58E350189B08A9CD3B3C2CAC63EC563983BB5DA1
+12DB3D76CCB26D33AC5D6667575100A99CB34C9758FFBC6A2205FEA06113430B
+9E5D469FA4B52FF994EA44EB45EAF43C200AF3900FC544C2E87EA173F6F5306B
+276A5DDAF7077463F77AFC425A39C5468577E817F6937F2EE11F4F482DA3B5D8
+0A37D117A42DD4CA2B68905DF8E7FA3E255A1B944FB8F4EF4D9028872EF2D312
+A6DAA6330ABEC442BFDE476CF3B1BF1EC74AE785DD0E254FEB37AC0180DE1323
+C66D5DCCAE570E8CD0906FB2C30EE2A503560232E70550B287D1BDB534E5823F
+070F7B927237C12F7078E5308420515140B95A3E79B03D173E8B58EE20C13B8A
+1750DB02FA19ADA4486BF57E2AA639DD17871EFB0515FEDC0BC48F05EA63661F
+26C127DDF12168592D937549F3519242DF0090EA4C062DC032DE74EC23178994
+2A8F993B7E3BC8B818D7F1B33576A555EAB7B3EDF7C15E5C6AFE52D40D87EF92
+F8F0A187EC4D04C74A273B1B3C3669929159552CBD372DC51CEC0D003E88C491
+CD8ED174310E9A52ADEAF358C38DA297352C5F01B9F3663F8856B2492678D77D
+ED585A6DFFF14C996E12020BDC73E8EC9CB2989F0A43665F7EC189B458EDBFC4
+44FB54318E3EEE3D9914C1F8DF58F65DF9B57879C1DB3207F4C22242FE0CA876
+D8D19BFD1CEC28F5C91DB738F0588B8D9049B9D207BF061AB96986A1F071C4FF
+318B04B7B781566D9E4C51EFBAC1C686F9D4936BB28B7D95EC0C3847B1083334
+A9DF01C414AA1B465EC0B000B24C5B63C86497F3AEF237D708BCFE837B26BD39
+7C30FFABF50A06464524110C7D1F68861F460E1CEE0ADADB4608B8EFEBAB5802
+190CAA2C19483F47142B0BF3CE37C0B314E42DF72754D2F5E36981954DC5A6DA
+F823A984C802BCB03F17C1061353452F49A7B7EC4EBFE24161ED71BD85EDD6CD
+AC5D9AFDE544FD71C2169F06432F88A9781F9B5CF004BBC084BF518886395FC7
+FB58308F1F43496EA1B46B0AFB2F35354BD131F50BEABF18FB86175D1CE7A14E
+D3F18D19EAEA4BD0B4D7746B2598119455A51C1066C3C822986B6997FC76E337
+BDBC15BF95CA7BEC99F8472B68BB2E8B6FFEB59B9F6475B727B63AB628ACB47B
+C438EB30B8CD350A30371037AFEB6AA99AAB22E97EAB63A28AA67AE010103915
+32F3258CDBDF27EBB381ABD27BBBC47F98EBDB6CC91AE6A6593710A243C55A50
+C6F01396855EC30AADF5066A5CB4A6BEEAB87D85B6CAEACBF121B18C0D6773D9
+1E0A051AA4330E34FF66CAD0B636BA97E396DE3964CB8C510C096BA3D9F763C4
+F857924349C792F28E2D0854BE62C3CCFAB054965FD18F420BA29D8A7EB25787
+E7ADA9B0B5CE600FAD7DFCDFE98CF7EADBE7EEE849720BC5AEF8CE425A488EBE
+60518A16B0254C6E3C9D23BF2B813630262C7C6150E7A01B2A90B458CB4D5920
+696A0A706E53E669657AE1E0362BE66B19C34BE6B1B4546DBE2817043454BF86
+3F1650BA9AEDB4E24434662C53DDC1977DA288471CE0A760B7F4
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMMI10
+%!PS-AdobeFont-1.1: CMMI10 1.100
+%%CreationDate: 1996 Jul 23 07:53:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.100) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMMI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMMI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-32 -250 1048 750}readonly def
+/UniqueID 5087385 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
+990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
+6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
+DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
+59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
+D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
+8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
+6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
+1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
+03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
+95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
+74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
+3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
+47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+9560176676ABB71BBD0EE56B4CC492C0652750227CEC70705209555AF57651B4
+2E6F62F4E75D68A882364F7DB4B647C489B46E0677D3AFC159A2E79E4EC4F6D5
+C92F528D4B79A73A30A8322518DB097D307D25048DFFA5D2D1C60BA5FA590EDB
+6564A9C890549CC4D9459ED5BC94191E7327E0DFD8002A501C0C611093EDD0CD
+C4AE45BEDEAC39AE792433001E424DE29CBD2E3D57AB5E51F2C3CB657ED44B2D
+D66A47C06A0C219618CFF1D11F7041077A243000646DAB8528D5946E66383A21
+DD4070ADE71687BAD5F0D2EBB80C2D7F68F7FAD136F7B6B67809917243DF769C
+1BAC8C4D9E26D4935FAC978E86A1D1CF8FFFE4990C930DA1F2FB2A0988E51CD1
+281CB61FD92CC8EBCF
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBX10
+%!PS-AdobeFont-1.1: CMBX10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:06
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-301 -250 1164 946}readonly def
+/UniqueID 5000768 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
+7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
+77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
+2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
+FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
+DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
+7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
+9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
+CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
+6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
+E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
+8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
+3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
+EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
+0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
+4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6208BA8442C2FB5A
+696E7E21859EBFBFA7CD4EB0C76171CA80918BB7B7101740C0BC82DB66852575
+F0A73AFAC56EC980C4045BAFEBBA7B5939EDF6D38EB52A4B88828D97DCFDFF48
+18C925FAFD5FC8CAE4AF1980E8F35CE170D31F2B1669F9839FA2646BDCC70E86
+98B905B9CD7FE4F2F92D1127DB031F0A2F6E38A2A32415DA33C79E81684C7DDD
+6E260679732A2D20D6BDE27B65F9176558D8B65362F61FD87D9D742336A93039
+AF47F5F3FD6ED94DC2FD9C5DEB0FEC3581E275BC94ECEB7B517E88F6126B8A39
+2F963B8186EE2454E318F5CC571A951409B0E69BB7A86971A05AF4F329B3BF19
+7F1CE08A4D8635BC8BADD348D12AE567FF26A95D677617CAEE4CA4B282C8E1BC
+D4D66958AA329DDE6CAB90B3FE38E49F75EC083CE8A49285A45B4BE4AAB05AF4
+C971DE2097309D26995CDFC3B366F7A7F361F9470E8C548EDB3CA0CF7B4C1549
+5DF5B8A875950FCA3CA294A4D999A312A075FE82E60F8F5E078FD9554AD5FF1B
+3B6977E3062D3DF6FF094944AE4AA939D6C253F4D15F219219825BEA068392E9
+EC101ECFD97654CB959F9AB2CCB8752C341604BF43CC7423F36FFB6897FDFA0F
+4247CB3781BAB367BB79E69C05F415CDF75CA4EB11167F2B2504EE906FFD3EBA
+2FBCB0CBC46A06499CDE099D1C4E462A59235F808BFBF83C44EC8280292E97FA
+0126ECA430CDF257559BF52CCF2D3CC73ABA81659A155C7FA22B15E6DAC8C7C4
+6823E50E8961F05D37843BD0A3F350CC6C62B2DCB90A0EED18069A047975C48F
+31EBF2453FB7F04A266A904A25F16A0B10BCD3A82F916316CD3DFD80541C9124
+F8C7E247623F234759328063E40450C9DD46F5AF536A3AD35E6BBD1016B3D345
+EF77D08D353265AFF5CDD3E65A9ACE024764FE26323A6D87651C8D3DD74A734A
+5DA4CF6B02CF76A61B7CFFF1C1B61F429DD053FB81F7849CD7930B941246DE6F
+66F250E08C1ED841EC3C21C0E5DB81E80EBBCCDD5AEF2BEB305F66A760A98BB2
+DDFAE8FC0A3C5215B67240AECEAAFFCDA4EBDEA61FBE97AFCFBCB72020CC7DA2
+D27FA0A1283708A9EF10AAC7AC325E23A5305A9C52E80ADE6F9069385E661335
+40D93341B97E253FBBAB65757CDFDC64091CDDFFAE2B6EC1B9FB1F73450902E6
+8FFE5F9B24488D7DC6AB23216C21F7B5F9FD436FF57BD4F60CCA33F27F7D0B4F
+9373740113FC9AA64E8E8F21BFB175576CD9B6D3D529A2FD64E630C3B4BC8AE4
+F1DA6AEA8EB784E105014687E2D7B58EDB7020F18E121B6BEF1F7240CAC29B07
+E7E8B6A1A6E80133A81B9B3B9C78A4FAA1F54CB727F1CAA1AD7744F5EE03DBB3
+920D8A5B087CACA471D52DF777E549C92A0AC1506FA48FC448450D086784945F
+4C1100098203345F3BCE2AE1FB5B7C6579B91C8D96290AD99F333000A1C363DD
+19079BA315BAE6C336FC5C32D2E7F9A6981C9CFB6A1DCF2AA56106C601886015
+B2233D128313C9B6FD44FA3C677C4B985F9F1F690129EBDF41BA1779F517C0E8
+B59E5A80C4654D655852F29806C80D6A627AC2A9706D208FEF55DE1E9689FAB1
+7864E7869BBA521729FB0C4193A3CF7AB0E7B411B355341EFD92F7AC1BBD0948
+5A88DA898A01F2EC4180663C58849CE5A1CFCB7FE179B783F37D296752C53BD9
+F892AE55FE5404F83C27C9DDD55139152BFE45471EF32A5B19AE299BD4939EC8
+EB45BF4BE1D815C4B1462F0107DB0A9B9A22C8F7BAC70310FDEB98A2F7013A12
+E8C51E8B889523AB5E73FEC72252597C9159F9AA487E006D7DC8D6AA849BD47E
+2D2096BD7762B3329716E30DC7FEC2FEC110F5C54F38D8EF8CFC969E59F94018
+95B23DA928C0005BCACFF08258C9166922A3BCD7CD1105D85F513707F9028ADC
+93EF4E0F55AD1122CA97E92178AE57B62AF5E6D390AD2E14BEF59553B2FA4761
+29FB1F35E890C15D3881AD7B57115AEF76E6128CCB907E0E2BFD6D5B8235030F
+B0A1A35CB9E53586471EFECE5356C0E35A0273041105DB6FE1B45B5A61DD3EA6
+2823B8D0BD2331B8F64F350328EBC158940CE8429E0CAA8216F497A5A5430958
+C79D838EB67626BF62F1DD98965EEA0D4ECDB4BA15BFB5ED7F568410647938DB
+2B020FB30BA29333747EDCC6483469FBFD006F3CEA06B8E0E72B9263064CB5DD
+E42862F71EB87FC3AC5C433E3D05B06FC23B4A009F822A497591F8BD64C38A8C
+4CCD9B9D879523CF268259FDC13D62B48EAF12C8DE913FDE1B0321F2894AA0C2
+F0A248CBC17D7F6F075CAA012563D8C1C9BA623D360693BA2D1665F2B532BBBF
+51037DD7465E3B65E14A1F29B5A337EDBC1EEE2B957DD27F0BEA22C24B6DFA9B
+138FEED201FF4F40960BA8EDEDF5CBFCB0EB6886716ABD62ABB49F0834F45CF6
+11DD293FAB52BF02ED89197A7BD2D419BB1EDE1757A03F8388875AE484C1A075
+C72F40F5083A9B090C404036A3228FE6A397D2EBF6B2D01A99DF80A010A58EE2
+0CBD8DE33F94FBA4BC06D573C5F2BFF9045A803B1F8B2204F7F72F8A8BACF0A7
+A20CC6A3B888430782242DA75E7B868A94E5455C969C9CBA1C5F2AAE03A7199C
+84E71C606201AC873329F3EBF434FF4979CECF37F4A9D3E9B9AEF45F07ED1CDC
+73CD36A4A1153583314922C1066DDD5CE617B89ABD77E66A2718FAA7D625E27D
+F2BACE408AA579C8D4630FFAED670BD8BF9F31E8E2B102201F5A270FB3C86AA9
+F42F3E5DCB8F7708116B11610B6E7A898A0928D5FFECA4ABA5F87494EEC2FB4F
+AD93C0482B81A151BDF17C324C7EDC9268126AAD4E0B75B626FF0CE8FE8103ED
+E6AB1C9C5976D2C308ABD0FE5AF4290F893F3532C2F2D6F8AF7D885958590318
+07E7A7EFB79115CDA7AC1A3BBEF151135BFE012872D75C1AD3B738FD8377E2FF
+25C610D463F46630F9288F1A4A224638C110D73302CA98D973011F561BCC8900
+87BA0AAC381AB725ECBF902B3F109318F854D56E8E40EE825B828259981FAC09
+80027D7A874B6B2D77BA4A21BADB443AADA891C5EAC059DCF0D6276CC7C23D1C
+E0104F1FBD10CD49C73AC3721DDF358EA83D599CED87B42BB55F83623B78E1A2
+A15FF089BA5500773A0AA2A36D020F8272EEFE118BE67EC135107EB89FE8ED17
+C27B8C8EAE93D496A1187D5D59507DB228CF7E723A21B36130EF8CF41C289206
+AB7B3418E5751CC7DD4B20D0B9EEA3BB37EA52622AE47B9D6D2B8999178AE01D
+C21CF1410B3D460352659D5FEDE07B07461D71B0172E31D31E386CC73501A817
+409A8A2417EBF6CEEEF26A9A9E261990AACA42378302E471C83746724FF16749
+583DD4E0864717C7DEDEEEF1A7051D9D2DC642EB952C2E8A2DAE2FCB0D40CC86
+C58DD69A26AE12DF2E3F6E3E806F356C4837B9EE0E947AA2BE87056147E59980
+1290612C4BFFA4019EE6F7B5FC7E40E940BD865AE44C4154CCAEDD68C2C15AE9
+D87586E3F2ED54B2E5ED33237F7654A27F2F22FC6A7F701199A74F854120FD54
+7D63267425B4996CA56350CD8F5C00F91501D2C30E80C7C334EFB8453AA33252
+5EE39755AE56679E77FEE464612E8FB8B1DF87FB53EF61494CEDAD35B20E60C8
+59A3DFB19ACDEC79241D26F3B0BE939F7D726C2341888482D97E3EC677DE9521
+4D041B236FD16ECE3C46BB81BD3D5C3CB3FB272E06ADA1B04191C76440DD8449
+BD66A398F3F13933B2E7F3E578F01AA9AF1C9C500A2C8CC6EF720C819680B002
+EB6F71883A439D9556552C1E7DB39B31C1FED35EB112D76FA46B444F94C75002
+55CE4284198DDCA9C686693700B8EB63D33F1890C48E2720DE36076AC192F7E9
+704B593FF8949CA4806982FF6021CF4464792138D584FCF21AA38BF3F451DC2F
+EB998B1C50BC6236B3B63B1B8B1EBECB33882B79B8D1158814575C0A7DB7CC6B
+31D8FCD67DF257F0FF8A86485640E16255C4B008AAC06188B0ACB0F5E0672D34
+AB769B9622B5B592B2E697138020133D67887973CF668022F0D90046A88BC7ED
+CF19A3C6310CC20A5A48A08045F6ED9A9123558F913096A4FC86309F07C15A2B
+815AD926F9EA051BB546974136E7053042FDAB0A350E53E9C0808870FF9F4536
+53CC49600A0D645420CEA59C3CEE49341D8C4E82900B19B32568B09FEB665728
+E8D1C3E786A9E8574BBBFAC82F83A8C966CDD51C843DD6B1834D6C0BADC04AF6
+B587DEA65C6640D4D15985B84FED4C855BF4B6E61BCA9E61B138E9BAD58AF2C8
+3E6533D312A99610E9E1A81C6089E8F5825776C0DA810086CD0902637910C1C7
+F8124ED3EBDCEF5F209D3D803393508F7531ED748AD059155581EC7066C09F1E
+2DA8428C4F49A9016CAD752C1D6A0DBBCFAC369F9F98DE7D53507520E71B907D
+17A8E20784B6E6817CB2C3B8535715791B9FE4BD189F7636A691AB086F20B2F5
+53D48F5A1BEA8DD004721F4A1AB27C74E2CB861E82D02099BCA90DC49C3874E4
+87EC21DDC89C84FC6674523DF59D88CAD4787B0E043CD16CB327CC849149FF72
+B568ABDE19B8E8117E7A0008ECFD5D80F05E726A602CCE7FEAA50D497ACD5B5A
+F49A8B30AC5F8A157D14DA89487E7BE9F37E27629E2755017AC7077357BDBE91
+8D6D3FAB8C7E518B171DAF01D9595D81C912443B101F0593669B0D4A21C75C1A
+CCA6AB74E9B3FC6C1DBF5279F2D9028CAF6F74F46632147FD49EB86D9339C314
+D1104C40F259D12FA66BDF52EF10AAF7FFA991AF60DE7778B1CBDB851D0F86F1
+5CD31DE3082E623A37EE40B7A6A6B95D1E63F68C64E3661F87D1139ED66B0F23
+1A373B8D9E907B6EA9124FF5BDC9FD521CE9C9F0C78DEA70149362E4AC399322
+AA46473E2AB0E24128EA3FC3F6926E1B2BA0846FC2408856C80E8A1301B00720
+8E9594F1730127FA150CC8F0BC78FF4E377B83F850D1551D669A0188AD06B92A
+28F032E5E87E928C832E328A922E2F4FEF23C1DDC69586FB52E125D4E2ABBC1F
+AFF0278BD8CD1DAA3BCB119C51ED1D28AE2DACD56D59727BCED1BBE8206546D3
+CEA92798648F1DED2CD3129A3D22F312D1094F851EE3786AA948A0698E66C03A
+9A3355DA6FA41C1C163F5D132A9DB283E79AB6B936124BF4A2BDCA1A52DD4602
+A229F09268A4BFC2E4CCDA8B35697CEC90B783EE370622B897BAC15EE5B04F38
+F6426F60C469904E86E8290BCFE14A2CFA6CD1D9A622621227177BD30BB23150
+11EE73307A3A8C36FAC3B65116140916226A8E49FCE55FA3C0402C44FE179350
+DF27C76A0B7E69C53EBE6816A72148D72CC4EE4A94ABF65CED5F1C42B15CA603
+E0B3EBD83490BC384A8275AAE98FF267DA28627BB0D2BD57146F070BC183F476
+C5792D8A62FD6BF5928D6C3B283C73F9EEC0BB14C7AC5CDF6CB9136F3516A351
+7CEF58BC7D3423009F71F04355D787A1C6B1484322F717AF1EED59E2A56DF794
+42674F81794A621F2886638955C5865B623E26FD09053DF23CB322FF8F4DFDFF
+06B22954817620FB63FD3FFE15A5637F3CCB8240AAD956D23727AA2CA0623C6D
+E26ED1AEC0C0B434ED6765C1E47A15760B00E1A1CFE082C84FD90AEE53697D3F
+6B9AA1C64CD710B2D9B9971D8056C7D0276D4130102074085DE905E29994D5BA
+1B6FC69AADA9EF48F236AF56A4E152E350BC22D77E046070E3F3B6C0BAF14CDE
+74B55FD32E4CC9937EA9DFFF2699E6334E906FE5985AE36BC996240C9FB6F7F5
+FFA0B17E220FEE729D8CD42EB970795805E800B88027877960BAADA01694DFF4
+EE491A61B80D3F6A43BEF8B00D51F6E95E0B67010AA0BEE8E446311C79FF25CD
+8D6E592A095AEFD211F62BFCD969E0FB06E5F21C74B838F8CFD28D8E76158DD5
+6D073A64ED69A0D1D88F4E7A518565E04105C153D03A0427BD4BFE6695D27BB5
+FBE6842BA3D7D75C264F22ECAFABF8C1841367A2C6A5381A1707443164606B0A
+83C2CE8466173FD84FE0D51486BAF8AF925342C3DD48C39C1E011083C239533A
+EA33B44B9A16BABEBBC5074CA05FEAF48962332DE705AB47E6B66F03DBAC4934
+360E6520AB076959F3CEC83119115332F452B8B5B3B5711CC436E8832C3CBC27
+A0B788A9555B67AE2145DC547FF53A17E0969B03BE29173D2BB3617EC2167EE6
+C934B5660947B86260C814E44CAB0B641D0F939043C0C63F3D588372C664A7A7
+6169CECE33D3E29FC9F70E3048AF47DE5DC6EA5DDAC874660BD82CC68D2F9479
+E9540B2AAA1CC9A84AA8E666F422F2ED85B5F166789C1485736B3E584790FED5
+1B97CCB53BE427D99B7640C3823E6659BCD770D4D3E7E770FA80615CB7F7B384
+B809C4E9FACDB32FF844B9FFA00A6B29DF306AE6E9A4D2BC3F5B39FBD031C43F
+F756CE43170D6C404E24E6170239792652C6D7952118CC2491953EA5B7F98CBF
+D3E03A71D1A9ABAED114C7E09CE46D132A1A0919C8F42A81DCFE91D3
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMTI10
+%!PS-AdobeFont-1.1: CMTI10 1.00B
+%%CreationDate: 1992 Feb 19 19:56:16
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-163 -250 1146 969}readonly def
+/UniqueID 5000828 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
+9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
+21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
+06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
+55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
+B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
+0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
+1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
+7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
+7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
+356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
+19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
+C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
+244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
+AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
+5C4C0A4F4995AB9FC821B1B553C7B589F0893BBC85EFC15FD2A1360E4BB3D051
+ADC2061B72302B58EDB8556D03FBEE3576F35486D2DEBDBAB0ADA7E680FE420C
+7368C5E731CD3B35D44599254A45B76119B19847881361091F0E4F77DB626B83
+0A357F0336017A1423F82AFFB57F9804830497C2C6C83A85A340D5D2472AE0E7
+425166E9591254AE4F45B4060F080C4EC92A953711D45B6F82B5A3EA5231FC9E
+4794896CAB73A2F2ACED52AF9D066794BEAF0EB7F3E3C576E45B9145C6614172
+A38A90C448FDC45A93697A4F8FC0033CE4D66EB5099DF3242E363DDA93BEB695
+CDFB109F708BB748E78BC3EDFD4E8F036B7A8E0B933723216C053851A681C77D
+AE71C9C8EDA1C1E01FED1A686EAFE3CB12F1E2FF149B02463596BD26783DEDD1
+D735DAC9E466646FBBFFAADEEC1277F9FBFCBF4B160F12C32FAE78D098507DFB
+F409AC799968DF1151F83AC0A94C4A033E8C93692F172514CC3AD0C5EA2C6E64
+928210BE563D4FCCF53E003CCD154066643C8190F4BE6266EA71688D6DB16248
+8763FDB07939C1D43487287D266EF1582F93C08CD4D91985F1C734DF16F2A740
+86075CB42E09F62FF768EFD891834C0DBC02BB592941848B4DFABDB690A615B3
+F17940D8ED5125118300715EA2CD3F36885AD45509FC3CF5D3E4F82442A03259
+E1F4F64E449892AEDEF424873D9F0A05E5499620D0698F4D12C25F19D6A4D06F
+29289F3B6BB2511DC1F0BC53732AE59F785CD851D30AFC3E6E6DC7BA850C1B52
+71D10F7BEB2652ED50E83830D9CBBA2A39A813FC25337A00F9E0CD6EC5FF55AD
+9E836D7CA369B2F3AAF8AFF7714589DDF03556DB9F7AF2094EF5AD0CD8C23DF8
+1D6ACA2AFC59CE3B18247D936F889486DBBB59B8D4F04E0C3EF87B7835892AC4
+8BA21AB58795BAAACFA1860A24C6CA59081F15148D64FABEFE8B1962CBB7CA8E
+0CFD713ECB9F3E2177D5F08D04A8C33534C20915E6CB2811ECDB90D4B2ED84FB
+24BEB3804931DA40F7B62F00F970D67333B0AF9E39F460B2690F89486DCB76F4
+7E46DC785BFD19300D416A809AAADC86CD415700D8ABF62C8D4BE6EA0990B1FE
+947FCCC4FA63F8ED2333857BDA3CDF21ACB7CB813B2ED9C4949CD0AFD9C8740A
+A193B2F0CC8368031C6F934ABF14715C8732BCF31B0B8BE3715EDC3DD9F3E2FB
+78FEB21823176987D0D80F4A8D211FEB625B1FD473B73B8CDAF123CC51265649
+65F7999CDA2C3EC073A0452D9BC1BE9908DF1BEBA2A7E78DD29F1C04F9C299D5
+DF651C65108EF858E15E3BD2C49BD67E41D267C178654E8B8E5DC714963B31E0
+DA12E138D0E3CC4FED89798296C41379BDE85C371FCD3DD7FBE07D1CFE0EF4F1
+7EE98006B3DDD027CCFAB270A3778E2723EA6E1D21F36155EA8F3A6408293CB8
+628975E21294B59B8EAFF496D5B5F2908A3E841AC519F3493D6B276AB9EAB52D
+08617E12E0ADCACFD1BAA267EE7FF31964D587517F11E3BB69006325666070D1
+4CB9E480A38044B3C6FF5988845114882D44C75A9FCA833213E2604EEF2788BC
+0EE9DBAF0657B12C2209BE192FD178184576D92B6EAD099A3AE94E06CEE9E3C5
+AA1D63D2BC485AE7EE9F04A7CC7AB93AEF119EB3BD8D6027B20C8F1EECF2544D
+8991A7514F3B291825434238ABC50E8655DCDD20284185AED9E43112721395BD
+FBB0C9DDA5291A595B396229481257988320D0EC9E017D89840C936C8519AC75
+A3A5198F782AC0C7647D49F7FC03940F5D9C0D1081985C5EBB8A0D161FF1F622
+6EABD40B1F68DB99154B4B608CC847BFD33B403CC105136CD5B8817A0C4F26D2
+FA75D956B99F5CD373D4FA9BD1074207F189E107C304D905C64A5419AB18F7C8
+7AB37D96ED5CDD2C2492AD2F30EE8F706C8325FF7DA066C30325C8E5C71AC446
+5D0964905AFEDACB2B008B016FEA4F58E5F410E1B4D4689A9731812352837CF4
+44818965AA6D52BC4160DB323B352220EEF930955B9E08AB7D0A9B95AEF5F6FC
+3B663D0B20A40C53503B118E180139949893063395FA111FEEEB0C8E3C0BD69F
+BEECF0FEE8049082FAAADDCCC2A1C3518A19378638A5352192398CC67695D84E
+4894BFACE7402AC5F4685E9C90C6409B1C9B948FBD412F1EB4F4AFF0ECB6B209
+D82D199A5B0824B20C280641BD6EF0EEEED3AF287EB69897D524D7C67F1E7F65
+A91F7F4BF3EE8540BEFE50E0E892FE82B64B3C5F2304F3E2EB92DEE1F404B939
+B06720D70D7EE51E23D3A29406342B11140852B96B1322F2A99CAC73BCF9D2F4
+CB677599565FD4DE689B109F6E260C6A9D34DB6A07E47EF1E8A7AEF05DB0A36D
+7134C682871A5934D10575FA74778E6D97D3F3FFFBF3855A9F8DF910C97E6C17
+94A38E2481D7E1527A2A618D58FF11E70490FC03F549764C04D8F24AEFDD8D8E
+CA0C15E2A2E0679EF66F425A3C55197B4D096FD5FE9F1AAC9CC16620017418C9
+56BD7532AB113187EB583745B16F2AC6A75602BB9E138E9D29347982F3A22C62
+DCB8A71D540A6D0C3ADD8F186E95E99C2F8F0125A2A78D974E88E2D946E39A36
+E5616610E46B5160183917EE976009B8AA4AB05C40EA7B44C6F6CC2A5FDBBE3C
+3F581D6B4A458277B3506B727CE042BCFBE6BC16FFFAE457BA0D22133A61721B
+7917348B53AF384FD0163307D795177D15F2B03990DE9F29D0FF34C6EC132390
+E9F47FD927B044AFA15DC3B12D812F8DEE162F3E32A5ADD161A25F0EC7795262
+682C615CFD421DB33AA2F8FDAEA78DD6F33AE00AB220A366F35186D563365344
+836A22485724796F80910D7824C8253CFE239067A265A5790AB009DD5EE2CAED
+ACEEF27CA9858AEFA6C39DF96222C8D0A6BA3CFC8DB96FA28426457DA226C3A0
+7D3F0C0333C391A0B08829DDE01E246F796B6CAACF13BBDD6D949E0632043D6D
+98143B278E9F8CF1CD12548C136306A9A13595F56319E122A143CCFF3D5C6D99
+0B7672D3A69F43D2683EE941C1ADBE767326194948E6BC402DECC0BC92BA7B79
+16B1F9F28A992DE608361F39B6A74EE9F5E461647C6C51BE369150951B8F9028
+685BE8342AB67165C3E833FF0D7106AE9B2F983C12EEFD9035CA4AFF96493DAC
+FD0422217AB24FE8D611D3CF58058BBFFEF504D3574416506051066423F83A98
+958E4667864BD2EF6FFCC27149AA27F472C713D302A6F65EA2F2EEA413EAB110
+13504B8B8A22493C1A2D9ABE2814200415C2DFC6CE767F6CE5443C74AA9DF000
+15A5BADC9F0B01A935ACD0FB49D431D01116292CC465AFDB4D870DEED42E99EA
+49E8A6E78C9B034858DE2DBC1EB6A6CD723CB504AFFE6C4F6AAC494D362B0CF1
+F5AA2476D98725B92EF876916351F4B0ACE36EA9F87D81AD5D9B78CC67739AB4
+65F17CC24005A4D2DD7DABCD0C12CDCF65462C3AB6BF3E4F7FDF3DD56743E6A1
+31B8EC4AC2CB9B07A6A324C6CF8299C67E77036A7FDAA1EB0EB85927E33A056C
+CFFF269E780DC56E27C924A2ADCAD680932768BA26E99E7BE7D703FA964E7425
+1D3436440B41DF08638628D072D02F357D41AE5B34499CAF433C89F70EA06061
+2749D560B5278A04424BAD2A18EFF876018160585D8EAFC157C9AA36AB2FC360
+7BE8ACBE3040E15749CD34C2930702CAF3404CD484A61222860FBF5B4BFB093C
+6111FA1CAE07528270E52CCCA742FB6419A590B55A429354B340064455FB8F8F
+F47C365932DCDC6560EA96EA7F540640988BCF07A6FF2574EDBC5D250A885C5C
+20EEAAB7384112516EEB9722FF2620B64C7A46723C2116F096B634806C145A04
+DA10D2B332943EEC74B7322AFD7B0893CDA309D5AC6FFC0D775BFEE136480A12
+B5AF10E2C32CDB9C5A85B04C9D2546499DF87CD3AF638740BD879401C2C3C923
+5F45ACA10B0B2C036773078248A9A8E49290E19DAA463A44D944EDDB0EE0F694
+8BC19A918A2A6405A2C08127E78586D54E8ACACDAA0738BA6C0616EA90FFCE18
+5383470FBBC1FB8F7A9448C85BF00F7A07CE543853CBC7164FF89B9FEBDDB845
+0893B0A1EFB863FB3A2141E49A7BA949E80D9ABB76183BB37D5F08A93636F4A6
+40EBA0D805B9FF1E379FB44A01E1FA09B37F3406B9FED491A17411B047D062A9
+2CB49E52AC6D92DCDB458A9D1A15E284A55DBBEB1D33DDC8C2E9B16A1288F308
+CCF623C29EE123396D4BE8E927FC12D8E9188C41CA66CFFC8033E018E7A81B46
+9C2A2B0949A6B1E63EB3943A6D3A0D3C8E4268CFD5C550203A23209ECCA92D95
+4E71738B1A7BB068F584281B0C8EC5AB56003E38B6AFB30B1BC78E353351AF01
+0E144B3CCEBAE4ED2407C9A6E7B950F5EA34EFABCE84F3F0668A5D6F5B9EEDFD
+9FEECC32E9941A3E9E4CA76FCA765468462B908F13AA619CAA22F446C28188FA
+A304795B0EB13877C467BF5E06FD41094EC880A894128E82A14046C92DADF82A
+25F36E490315FCEC7ED0A13DE0B89EDB37391E812C7E18D223D56FAD1C53B87D
+E222380D0CAA20627E9A36AB04ACB147982192BDCECBB31AEC669A97CCD768C6
+F15FB020CD8255B7195D6F3E86892EC1D46B905F3CBA8173959738C73506F39C
+63AD92781FCA814D780104C1A9C9E618F9A84D683F052084BD2FA802E52CC99A
+3C209A64D1CB310677C4BED3E4223767EA7A1F5D1FB0B58DF4E7D1BC2610F9A0
+1889C1717DDE6D328029AB71A4A53A4DC62948E49158BC5D257EA6793DD5D92B
+3838A081B871E748FF7299388D9B56499662F59B846B7AB5E5FE33FBC7856789
+811C42A3FC4258358DA8E7275DD14A0EDFFFDCB011CCC679981EF1AC0B4DE50D
+CF6D7A599C4846EF52895B0E6E68542B9E49AFB0FEFDDD1A0E91D762648CAFEB
+F385191667DA5B90DD8082B030E6BB6A632C1F675D708DCCBD49E412602B2981
+31EAD7295A7A5776A97AA84F259A004A69D142F753CDAED19C11F7C53C91334B
+40FE0493D92CBBBAC195DBEEDA84EF292DE931B85AFAADA0FB658FAD05BD653B
+1351039E091E7193BB0D26C2386469B91B81339C36A6072BC6602CC23DAB3D58
+2944C0FDD50679177AABBD7614C52040F88704845C9923FCD255213E289A8E64
+AC4CB6B33B5684C2DE016A4EABAFCD9F1ECF0308DDE955E1475347CB455403C1
+E35053BDD0EF9AE42DB5A0F392941A10F3D97A121D2EFD1FD55A743694E68BA8
+3D9C8FCEAAF587953253D27C573B5BCE097A83A95660E3730A32713A3C669F67
+D21EC9EE98BD9EE92921B06CF6302537BF7A1818A9F39F5F44755539B6819730
+C4B626BDC83B46AB5DA1FC08D8AE85FCECA41893507FDF0975A15E88480867FE
+280EEFE6E8CFA2B67606EEF3A1DEBF46D332225A8B4F6B9DA46F6F114A352DC3
+F5B641D507F8661EB6253CC6B878DC285894673DA773A347627EE6C518A87BA7
+B62236FCFEED7C9444AC10CE48246101DC31A16380DC2F596ADE6B8412A95A62
+DDDB82AF32425174A14361E7916E6B5569BA05A3989414A6A01313F4FEE2D9CC
+A9BAF58A8E119243048DE38C9F0124E019DFD807FD180D22B4E8FCD19191CAE8
+0FBFFCF537D5C338B0ACBBFFE1ED4B0419CB13E441DCCAEF103402A8DAA7B74E
+1521D44459B572CB30EBE5FD86F09AC629AF4A4ACF046841EFE0D374EA437660
+B4375A75FDE67F195EB3C0CF4FE187FA449D35B23D2A0F446C5D8F36C565AF43
+A8B87FFE67B88A4A91A731D90513FF5DBDEE3AF6E8044D53C123A89CA7532131
+390B0D0A1456506264F48273FDA0FF332955A24376BC89F783129B52A4EB413F
+126AF88AC78E11B05DE2FB0DA7F2D0966A6A4B7FFCCE7A2556C983C4726D5771
+75B1ED7549F915E803BDDD32A7290DE5FCD5E0E45F5711A859585A2AC680A1D2
+8AE81E137EFBF80AF4698EFBDFCD4113DF5894980ECA986067479A900B885A95
+CA13C1C81E1D2258870A3F0A1E9A63ACAD329AFAF75A350DBEC675CEE16E174F
+1EDFE7EE9A09F2279B357530DD0CB809F57017782FDB574E027F4CC90F676FF3
+D3B0E22F8BF3B41AFF87ACC36A3FFBCD5F27985BCBCE9E52D4643AAB62D27278
+5E6639D60D75B444E5E48505146CB8B922500F30F7912F69C345CF0C4FE77832
+5E4C3B2120DF56B59434F02C95744BF8F1C8546DACCEC0FC2722FF19AF5D4543
+B8D2983EF45EB4FA6E89BC53BA5468FB12E85AEC0769751A00D33BD632D67E1E
+E5981174B6DE0F1B90E348CD3E0CF43080F0EF0C1C95BDB77973FAA0DD3CFC42
+9D1DD2E8EFEBD82092EF53E64B30B013348012A73CFB1FB395AAE75418764AD3
+3180D18FDCEBE6412ED9183DADB8615164ABBA778292822568EB55881B656545
+994E3CED205BFC65ADF2F5125CC6B604A047D99D78DAF9B6C6BAEEADAFFBF781
+0F591465F91E518CDD090F46CF1A08225E037F3AF2927DB353D03538373B5019
+3686D6D15355BD6CBC4E6F6226DA916C68490CACE9CAD81391ECAE600FC30812
+8C5EC591C7C0DC89FF8169FD5F8C65A36445D6485ED9291C65A1097B75249CA9
+7F21C8FE6589AAF1D43C27065E6E046B5CDB1FFE9B9EEA7B3B646730664D893C
+A15D2778880C139F44C98D14D603D41D6634A25C66D5E71419CDD1E4A904DAD7
+72EDF04C4F0D64F02C0A9F85C11B98024D5ECFD3FA978DFED9DFE8D5E2478A10
+DC9E9C0ED0F3D496EEA6D10DD49175697D12EF3AC0A96FA2262E382205A4A431
+CB7D837092099002893F807A34210835436139CE964D40B10F59CA5082E4B2BC
+9FC175217100328AE0A151C1C56AA45FABF625928EB83B46C53BDEB84A2206EF
+3E0ED256188316573880A68E409CADBC6EC91E06180E351B39ED8D6415887759
+3931B7BBA2C3BED9BD44285EF1BF523BBA7400DDE533DFB956E7434DDEB285E4
+B9CB22489D0177A280A8C433AB10C9033EB2533B53B09FF656B99261A62BF14D
+9489ADCF055DF2B681E74F092ADCE1004172445D889A3D0056F3C3D30559889D
+AF0018CC4EA375D674A529624F800415A81CC690D105D3838316F20B54B1E56D
+3FA94F7FED61A4F2A03C4DF024075EB84476D9889DE7ED043366AA866D2E2019
+C12A04F3E51F55A6EEB2CCBCCE2927C5E60818E9A05C779DEE5FCAAF191021B0
+D347C274C4D3774F0764647D0DE883DF7E08D72A6A2D3266024F65E7FBDE953D
+2073047675152A43C4FEA0E1C39ABCFED70218F8B9385A251AB3C43A597B5923
+45C6CCA4EE4984CC8E38EC5D11492970094886CA7C7EA5C05844A29B77AF39AA
+43C3599BB657B5E8A614EA151CC51E7D9BE06E482C04267D9CAF309E7F297E77
+B663915461CD7C4B6FBC913528492CF1BF03E99A2B43A8FF5CDAE2A5B8589CE3
+D4F0B9D3138BA58AB26C259175A7350B132F22416B6ABC10DBD2EEC95BDC2CF0
+1DBFB922EDCA13B5CCDD23E609934E97CE3A1B4BC832EAC65D6F5DCB42125120
+20457C364C4FFC5F439F541DEC2F8CA2950AB6A3F1903E43598DD1C3EBD2F99A
+9D792EB757B358FCF79C5D80383DA7B5304A4132E0BDFAD03A55A4051E6157F3
+279EA61501DF712B03B00C3D9C4498C12DFC5A4F61E6063CFCEDF25F8B22499E
+FCDFDE3D92C06670AC379255520AFDCE29BE53BBE1F505A80FC61F11CB5F33E4
+1166CA91BCA91B15C4744FBF48376CA381CBFA6C6467E0E0DF040A9CEEAB0F0B
+C935F514B60F7BB867B5EDFEF41215FB12B4FCAC78A7CCEB61CE173F685C2648
+2FB126132664EB678BF5F8C282F7DF0482116626E471B1376097489026E41E6C
+BDF614C079B5EA66F2BE9CBC803DC3FC95EC396B03422B30E2C39874B2FA7C24
+C48C18202E625F7CF2696C141F6140DDF9F629C01C450474E4484145254D24F4
+491C48A9FB5339279D4D6E3C9EED830B3FB1A3859D32CB4A3F24B042C06A7960
+C10834F00E530E3C440A2DAAA43FDF06F50047CAE0200D5D5DD85DDFC9CC0796
+E7E8BE7A24819AD34A61C3FEB5391DE24F302F45C91BF854C0EC0A9735B6A378
+A62AA95BD987081DEB232015BDB19566974D2BF42A325F3299E501F900D2EC23
+909F69CC9BD0F8079EFC029901B5458CACE8BF0E4475761E0E361ED0D5CA52DA
+388540B808DB9F3E641BCDF88EC56864317AECB1FF36F9666839E1758147A280
+721679D77789D80EDEE8292833FF8A86E035E47645010E4BAF476E76BEFBD240
+33B6D82D16848FDC6653A6D26EC2FE877166D654C25A4B09504AC36E944EE977
+DEEDD102C02780FFF011A1D17FE525AC68F607747E35026F2832989742424A65
+7D22E686EC94041335AD68B4003A3C255970AE16A1A96EDEFF036987640BA70D
+9CF29C586D00A93C7B1947998574FCA4BA512534934379E0EC25A9887AB39DA8
+CBB29E1D2A101317FFDDAB4FC0B21714A32957618B591786D9E93FDCA2C78A6A
+E41D31BAA6899B3D3A11FE452425F1017549B6BE22CE747DA4BE61F5B66E3449
+0C90A70790FA71AD63EA9B71BC284066B66C20F5BDA515AE93F422002D8A9556
+6982A571CA79241A9F86656C1A820C264A5D308658298B21ABA5CFDCC53344DC
+9F2FE72BC75A8D532450390298A7E7B683E2D44B6691943028CF237C81760BE5
+707AD4BED5A2B8B505F2C3766A932A1DF82CA0EE04E84310F00B76D9750486A1
+DFAA13C163EA547FAC050081B696A5B366243994F63111D3F2C0FED77B898763
+9FCEF253FDA00AFE9BAB8F01B02AFA733A12AD2F990A7218A1F77D7D3A92E418
+7187CC12F57DD06F54188ABF32A0477A989C658D6542876FAF0895A8044F789A
+B0E42A56DE677034CD7899ADEF20DC4EB63098629AD751AA30FEBCE559C47D5C
+5C9C41E065A75E27149D31DD9B7FAF4650279FE6E5FAE408EF361474E197629E
+01D70B1E8132C0485003684641ADB319F946FA85E9C5800CDBC40860186C00A5
+2D3EFAF6FD501B965A593FEFD2DB330EA364160A5A975A54C123656E49762647
+275599C1D130C2B2969F0E0A3AB1683F494EE514BB4DE902AA813D6B10B707CD
+F803AB9692D7EE7960ECCE3B47FE26E12596F97D29FA54DBEC67D8081B25B5B1
+4A7D01A164C0F1D25E333B6002F4F660B98C6308756CC899E96EF38AB08B768A
+7CEF31034D69F88841202BBC65B4BED85F0354A1603DF6B9645D8995370F6CB1
+986730F33CD0476A43EB26CAE0A8BCB69AC2044431B301AD09F4EB3B512927C5
+1C9D67EC43345F53475F4ED22E0C10C56FCC8D4226D405C9BC3BA9F47BA4C4AE
+896B6F20CCDACC05C6747BD5D058B32B6ED775CF9E101320962AA0211211CB5B
+F938DC2E1A2A87072C8DA03CB38AE4DA550F2D7763D0D5268B4F2D1C44542903
+6C0C9E3BC53F0D405D9D8533F979527A04D8BC48578B
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMSY10
+%!PS-AdobeFont-1.1: CMSY10 1.0
+%%CreationDate: 1991 Aug 15 07:20:57
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMSY10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.035 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMSY10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -960 1116 775}readonly def
+/UniqueID 5000820 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
+7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
+A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
+E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
+221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
+27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
+5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
+0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
+DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
+71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
+4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
+515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78
+253AB321023D15FF7F55A3CE81514C1E7E76240C1FB36CD4874DDB761CC325F5
+D588700B294849D690F93526EF438A42B9B5B0508584EA3766D35F5B8D51C458
+ECB9FBD23A4CE296F74B412F8A26BAF8B05A6D5794D1CBBF299B230BE3F3BB0D
+50677C16791F11388BF9F950E8EE6282CAA0700CD3F2512498C5983531AAF4A7
+485932BD20EDC6E9D1B3609EE68EDA5742FB36F14A41849A913C91635D6ED840
+6557FE3337935F695F2CDE42F77E7B9E5CE75F7F1D9951599838E8542BA940BA
+4ECC75755B7FCE85E791335E156B1FED30E9154E4D42DDCEA2565989524446CE
+08FB6FF3479B0F71A903627289E723355331FA1E9433F49D042D2BFD574787C1
+31F3E647835B5CD2D91B42954A87EA0E76E84212ED57D29EBB8C8FABB6E6FE3E
+854F65AF2BCA9745B08164593448B2833A8A718938784CD0B8B8816534F01F09
+05EE76EDDDAE60FDB3F7FDC2DFDB13E721EBB175BD3856449151FA373AA6659F
+063DF183583F8520615B06D64C8062AFE46C526E75431704580175E0157A927F
+A56CE030611F734F95B64E01E6DF328D983418510E8701E7FD80D21F0A0165F6
+0633185D5EAF29B76A28A21C1A778289EE852F4C19469E9730A770CA41DDF38C
+826E947FE06FC827B2BDEBF03C8DF4360D6C57614F086753B072612F41277FB9
+F97C48FE673F7E803779341BDA9D5618071BF7E42DC8DD86462E6EFD08A8D526
+21B106E73887FB4191E4497C4A5D96AFFA1E1C84ADBB5742EFC0771E4B5CC79C
+ED9844E2C14E7CAA5817C7457EDD3ACBCC424D25A1EE960C84993A7CC8245238
+6CEC121F967CDA4D6105AF5CD455F9AC220A28C175F7A7D5D8E4C59DCC304673
+3F46B6A13E926B2451F721176477274BD4502135B1A6E3772D0E918644CF6AD9
+232887B51CE5ACE6236B5303EC719EFBACA3257A975A56
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBX12
+%!PS-AdobeFont-1.1: CMBX12 1.0
+%%CreationDate: 1991 Aug 20 16:34:54
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBX12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBX12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-53 -251 1139 750}readonly def
+/UniqueID 5000769 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
+B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
+AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
+7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
+20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
+B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
+68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
+D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
+26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
+F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
+77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
+BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
+C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
+30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
+148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
+E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
+E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
+337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
+0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
+472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
+A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
+331A1063F97A958B9066B51C7EEE1181DAAD54742F78829FDE853223CAB88C9F
+FBFA181337A0EFB401E8EB72B3FBC58F821837E84C8D4A0199F286247AF2977C
+70EA6C3BAA2193FEEE3A2E0C3FE8185B9F4AB5B43B1F39A89D5F18D9237799A6
+1F674AE3FFFE83AC2D4CCF6B3CD1F6C1E1B07801D0D22228AC68CA23B020F8CB
+BD91451E8EDEEC2CA2BB7C9F73E19553E8A62BE6B57D7A99A8EB5B60F0DC8D1A
+D679B2282A69CBE85A5B8D87D425C47C18D5629BB738756C8E398DC830EF585E
+DB8A5EB6BFE24A2DAF614E47D08B103035E80F7E3EBA9EF4E006F0D50AB21D1C
+E6CFA8A2C3EA7A7124C3EA0250656F2F6484CDEEB6C6A6988AD702E7B8F0E980
+FE005DE94E75E8208163CB14B66B5D67D296CC8218C69D104861B3C1CD032A15
+5CB2D5798FAE08C7C96633C406E920E0C6104491E00F747ACAF78A8A0C43EC1B
+6E65A3EC4FF68414B22200A545C54E677218C736398D5426CE88E8F4AB7819EB
+22356A8B3B73A44785FFB7E70EC2BEB756BB6116381D74607E88B141C68DB0CD
+61719569C425AA332B27128BDA04286F82D64BAF92BC4FD599AD306EF5810645
+DE9047F9A47F11312666AD67B7431FFD47D91A08DDA9ECEC72278076D7B657B6
+F07BFDB728AA7F0EAB5E6D5035D51740773EC711C22BB4D5CB673D1CB35DD36C
+0601C519A8969BBFD9A1B424E8C8CBC5D2236AF48B857AA00B87D5078D3AB832
+314CE61DF2B0CBAA10E2AB178658ABBA96C74494CEFC46DEED0A5D7E72872667
+3784D8F85A489ACF23DDDE57941431EA0FD000DECF0DDCE23D125E5506ABD99B
+80C828A2D7378FA01649E195E0DE1CC98E8A397D0FA2751EC6A0319F571D9C5E
+32CF2DC7A455471AB9BF07AAC16BDCEB731A52AB9A523EFD62B63F945196C5BD
+AE9ABF5351566FE4C97C23AB9228826BA1F89FB53E37C08C2008E4F519ED795D
+EFEC720EA1BDEA982628B3A564B5EF016B2E8BB5124B0B8911386EC7A4A28334
+FC23946574B6B81AAFE90C62140F444D0562000339E16A19063F884DD1992BD7
+41C7C1FF9C41EC1F7141ED9DE04E243C187FEA413F07ECC0A2C85A27166AB011
+B9C116964D2CF791DA77260380EB7D3ABEEA2843ED9B9B85321EFAD3E3FB4909
+E0D0B168188049A46E4150E9268B8DDC6EF8D817FB65DE740CC56914D7D944EE
+E19F4720A94880FD5C59A5479623B878BA04C2876D5BEE7700B637FAE7C4ADC4
+C3C1100A4BA2D8EA4385DE10D57AA7CCFFBBF4BA9CC9302A5B18DCD969AF3784
+90E24EF5CEF5A5237B6A61C90BB1164F5C139A2B7A765F535B7699A36B90BF9F
+BA5BF62F4C5E4233D0B4531E0E2013A34650A524C754C4C071AD79E413A09EF1
+45791CB8B5ADFF6A86822A3A50200012B721F8E0CD99AD00B2CC43AB2F86B204
+E46B4E1C126B6FDC2FD62338A55BAE29718D743D7EE37CE09BE4267039602502
+9703408D7AF99C78846A54491CBC79678845351F21E36F933EC3FE06CA6EF544
+92155727E94F641A98BACBF656EE90C3AC11CC0A4271856073102E0FDD7ED9BD
+8263214DD0CBD7A290A35B5F908E54127793C7E502A05CA9223048F409976B3A
+DADFC90300D7B6DFBB74D6D9FAAA2C231E01C5B9DF825A2F18E0130A9115236D
+96F05721497AB38820E9EFB5CE6AE243BD5BC0BB344800EC4DEF1249942A508C
+F1A04AAFA1E0011FD46CDCAD35E406D9D64BE7893AB34C7EB497BFF934DFB4B6
+699358E26068DC19A571F70A8C2E1E9F39C9AA4896222764860F2D20F34ECEEB
+89F70253F828AAFE6FDA6FDBBF87B7BB19AEF31CA89DB1CB8FD04E2DD0E59B03
+6FD7A9CDD7179C9278A88820A63508F6EBF2DE10589F18928B83945A8698319C
+44EE8CAF5D10B2C7044A19EB075EE54606E002B4A1FA0366C62F99DC2D67C9B0
+5385D055B8FEDC2BD5EBB18D48491C1FA27F5604AA9F9427812E31DA8DBEC903
+F3E7845B63C32986D46B108858730E688BE5F1520D1332FCED90B52DCA1FEC48
+6C6C1216C877A95315B177B9575E9167F0DF64D5D295120B98F1488019078960
+88E9DE4CDEF3541C789F6E1579ADC90763C645FBD03BC3E186FD7F85A20DDFBF
+7761CBF03CD948B260E556DF5FA1497434C14EF4FE2988F43210E1F280CC1ACE
+1693CB31A50EE0BB5FA7D24966076E6A1C978E8F4E3106992D2F3B64974C5489
+B47863C60F9831157EBBE9BF87E175217E583041F30599E0D51C85D2E46CD91B
+71E2469E5174A9740B744F9C92C3499DC253D82453DB027F94D5D61BF24310DD
+8089D6B6A6D43BCFDF7B1D11E6AE43F06F0A91D53FE4A957D708D9A7D2C57A95
+DAECAB73B1159C9F75AD48606AB5B4EC5DB9FFE35A770EB6B574624CB11DC27B
+FA3BC198083A86359FBC276BDA1A56BBE446825F7313FA6396464E7DBA100F3C
+043178CDAA6419CBD84AAF4A11B5B03591D691D7ACA729B6A7793D98A6CAF73F
+3663397D0D8A2D78F8E273A3C5560D096EB95B59BFEE2170A4F28B4672BC79D2
+71BFC813DEC91BEFF15FCDE057209D4F244E07B7F2996C665E6EBCB2247698AA
+D98AB87B828B7B4EEB9B0972C812CCD87C5DCC0ED89AE9DA771253E706DC2B29
+9AAAD51421CDAFE13BB83E2DB900CD828DB75CC7197C50BDA4988989464C4F4B
+2D704D023A86E47906F2AE76A214B4607792ECE9743087C246BAB3779625E816
+27A45BB6E6A5EE239E182819E4D23E7FF69ECCA8785C44B62C0633D2E2174DD7
+26FFEE4D36017CEF09D91451598680F6F4B5B9705BEF28A584BC5C99FD65FA0B
+360BE5854011FDF97ED134549B3DADE77B469681214E3DB35B453A4827CE8C2F
+3F5E8B7C1031A37CCE4F1C5C528AB81F95DFF24BB42964B6C30EBE405533AE52
+25DFF95E9785850EF9434C5BC604BC7F7581C9A52E0BBD9AC7D3E5420A8F43D9
+49D76503FC289789BA3ADF019CAC07976AC7C3A0830CC50D8386AB3287B0786D
+E34E0F392C5CBD600E2B4E872624D7F1462F925616D55FC0FD320FD9473A760A
+01F36FB744AFF1941DC192BFE8D2526B179905195DCDEC241DA73A5137A9EC6E
+96E1B07D90503ED8563B9C7D5F297A43D3409F26CA5118A049C09869139B40A5
+FAB64315FDFC6E8B18707DD6E74D4245ACAE6EF843766140841791297AD4682F
+2EA18B4B608E73699FF60060CE6B8EAC9190EC17C03013009B9E8E2E85279449
+991A1FEF7F8412874D8D9947AF8E3F8CC79BD3DD031D8F25FAB060F6CBE46779
+0141A55E8CF8C6900031327FEFDADED5FDB95F3F7848FB9127FF3E615C73D06C
+D6B8A2A61154D620B28A362604FDBE2B5A14647A1DBC90D98242CA188B612E17
+B016238A21557BE81C9E500A6BF36737B031555D5BAA0486C15178EA807C8DD2
+600846D65DFFECC9FBD91B8E884E5A0E2E61FE224D0E5D2B765D7F692C024FB7
+360E388FFF9F161AE88F3C472D64C48F4C34FA1AA463E2B23685EA6ED10B5154
+6E1D2CF408BEE83F081ABD6F4A8C866530028B8155946EEB3D48ACF1176FFC8A
+5D6CF0F41C6E7809130DB7392433619D9BE8D7E3AC72D4B8C9B3F44A40E1B4B5
+4AE3693638EC96D12D12391CA12CF19C86D96F605DC52E3DFC1E924438354CA3
+C0C42950D02C36E59E937C569B09407F113A422FC5E0D0FD83D9D0FE833A53FF
+CBBB59B5E18133A5D29F1B9DB064100FF0D27975BB5834E235089042FD12D7F2
+276395C0E1268E60C82205D0C3FD179E4708042291BA2906C9D1C5E1F1446640
+4CD28D6733A3875BD15104A0EE173462B533F1D08FC53C3347CB97EBA04861D4
+D6F33A06572B93C2F02F08D64BDFAFDAC5289B4EF3DA65FE1B5BC433D84B9415
+06427D3BF6C22200C246A2126EFF7C9A5E46264B0F0C659226E4813B2604BF4F
+7F8165903182E633090CF92B27D7FF9EBE439D43A6606D69A60D13FB1F32E5F4
+3C5C0540BDE6EBBBAC82087E2F68BF02D4779A24F49283668E6DF318405F81B9
+A487E92F7BE686EF5B3A30168E64963787A7F6846A1F14A92B71AF81BF77B33C
+3574F3071A97B281D287B702C2B377826880C493560BC8ACE688A05857311890
+14F5435C687911FDF8B0DEEA0CC9F980CED768CD02BEF96EAEBB5409696E387E
+8A201FD3612B89DC41FF177DCAA767AE304C861157A2E6591438973EE0578703
+F0F65133F65D4EE9EC42B7C9572CD685096EAFEF7A1BF3A9EFABF196BBF0E808
+A23F556B738FF876C1C3AB7A90C1F5E3B32C249A4F65CAE22E5A91E5FF1A3BDE
+784F4BCDA0799F3B6EB40F31C0CC87ED719C6A789FB98B8704EA369C65DDB429
+00083B43C4163FF1F7DE81417B74470884B31793E28310D5F78CE2FD3F15C15C
+7545F3FBA3177B3C93EB89851E44628E8E99E44AB8528D929A597C55626E37FC
+6C334DF51C7CAB52E014653C6F4EB7783A3EA98F5ADA3A249C637C3739689959
+EC06825CF0B8CE072AD4DC042B641B2DA05DC6AE98E5BDBC50670810B2140635
+376004C3E77A6FE67B4D884B2A429FDC1D18FB2C1A1AE1FBE5BB99C980B17A52
+967D6687ABFC30B4210A20424AEE1F562CDA3FF2491056E05F248CA7A6D1BE4D
+3E2BB64A20CDA7602ECF7066413071DE2DF45932E79727C9EC1243EFD2677D41
+705F75CBB823690D5E621FCC197970EE9D72E278ED1A74B7443DC3C5AF70EA4F
+713EC71A0CF22FC53F864D47EAB177FF044A16E54FA7685AC4AC4F65B295A02B
+2809DF99FE095F301E0C4726AAF4E5FDEE9BE6E3E3A5C8640C973AE2544F82CC
+D4D72219EA775CF7D548F69E36D9497616BC21E9F72C911C163A9187B4AB452E
+E94B1D4D429F23C78FC2EE8BE0F34DE7F5141CB2C8262748FE09D41B2892861C
+210D30361868E0630C288983B94E2F0452FCB928CE06749B67BF8B28CC34EFA8
+2C4FC77182A883F7DD14F5DFE07BD854CBA01D21DBB312A06F6AE8ADBF60731A
+C48B007B2414CF63264F99CE373A4001DFAEC18D2C95398DD7BCE5026A843D2E
+9ECE39EA050E8A77D26715BBD5B71F268BEC0C0826D660B2E979703D39359803
+9AC438C337B3DBDEE1427BDD850133AA6131C57C9743B9FBF67997E4A27489CA
+470ABEDECD83BBD5B0844B82C81EBEAB85D466F58955B62451289D85C14CA400
+A9448412995C76CC1DC418544A46A81CD311729BEDFA8709B5B11A82108FA681
+7DC7E474FF3C4DA9BFDC29972FF574B5D69628628CADFA4874DE04CD5833F8B1
+9E38F885856D24A44FB71874EE20FA82E2FB0643626D0163A39686838458AAFC
+425BC6A35CCCEA45A98202C8F3484D260E83A542F7094B4EA5E12B20F5C9FEEF
+7FD54797B3D7224C3B6DD888A591F4D25BEF3BCB07E06DCB7DF3E9CE61EC8667
+680B4DFC82C21361601ACD0B3F10C25307713C4E70EC927CF824F2285C505614
+820FA875A678173A5E92D84A0AA9E6174F03AFE4473267095F885DD16482175B
+2719B266B58E5A00F5ACDBF3F7C00E562BF048D5D026C0D70203C2B81ADFDBEB
+62D16CCD31BAC120D953EAF902209D39891B7702E98C0998910C43D7CAE6A142
+20A7F3BDF8F86CE43F2549E583C589493DEEE2D289361A195112217E280BE501
+8CEEC7E9448F383985F6F0A76F2995A5C7706AC66DA94C0282C76764B42DB674
+95C457311748686445A8C27A8D5609ADBEA16790D21BDBEB12B57C2E2CF97115
+4FB4924401FEC1E130A91D226B19E6A57794BDFFDA97624265770E5B1B100774
+92F9674C51799FB0DBD3F6DD040A853D145F814A928B0A78041D7CB5990EB08A
+6EC91384396FE2847DCC3FE40BD3C56EFA379B2C2DB0A0C51B9CA407EFBB1BBB
+8598D05474ABFE2A33F0A32C2F11D8F84599D4457D68A45D728376591D77296B
+B41C30AFDC76A8794E644A8D88450FE818210F10A765CD32B3BC997C34DF25AA
+22EDE66DD3DAC44E1185B12F818C7EFB73C084E67DB1ECB944E02D092B1DED6F
+55279C191FBA6DBF883DC5373E51F37C0F3F9A8F6B24A9E20F01D92763FE59B0
+6232B8C4CDF0A9A887B7793D777A72D5EB5BD741D122265BB895F786E2E0160A
+B28884F974EFA275EBE68EDB4D52767626E54B3FF27065CDAEBB90FA10913745
+A64D41570731ADE508A87BEA9B3E3A7A16A34D99EBCD0A476B1BF8D8D44C9944
+5C0D2F5E597240B17CAC0A444A82E8F0E68F6981CB5B1B5E8E0420E9F7366E4D
+68B925436647A058DD16D3683F71709AE61E31F9AA5D0D9D3CF4BAE2C7B3F63E
+DD663F51D53C537B284E01C1184447ADDEBBBB87AA1BA7F9FB149EFA3315F8BE
+E12D46399CE5E058B18DA851FCADAB654F373B5A50D8DDE823EE400DBE9ED05A
+ABAAEF3F6C7EFDFCB3F80FAD6B80C439D81B5D5D8F2AC45C5A1AA5E609A10999
+E754FAE4B37CD7CBA9D9BDBEE3E2368A0EC9C7C1065542146DC76E03994FB5C1
+3B6E2E463752662F2AB9AA9F3FABD7F52A5A6CC57E1AE4A57717469A87081FD7
+F72D8D7D131B331F3098BD00614481AE9623EDCEFA71E001A45BB530CE5AA548
+C00878E87C635C38A83CF77BC4C63547360DD7CE9990B91B1B02C63A3F09C472
+A4786FDBEF0E5F07F1CB321F726CBCB5FEEB8B4DEB9B1F556B14E0405D104FEA
+D33C12D1ABB78B99377E9A04F1768725C16625BA8BB49C7A283F8DA97F5E4320
+93C7BA54D6A9CBEA38500A0C54B37386EF3AB14CDAB4E13CB3F158114DD69560
+4BEF05617AA05319E2686829D7E8DB54EF6F685B02D2C4961E90B7D903AFD4B7
+AF51E04B0B0B2893382C7AE22C614D3BF5CB793423E686BBABA8B7E184856578
+E5B48A1ED0F186C41B61AF7907241F42D796B723F0797036DD0000DA48B906A3
+B8CCA59C7847CCC8B5B1E64A778466461189247A0D54089786F418F58EF91182
+568A17BD52B227E77E35666102A5C2643375CAB6DA36FD5EED6043AE799ED7B7
+17213A4808F3F30002D8889C8C98423B8DB1AEC3B318BBC0F01F35A8B3BD37D5
+F04C6D274F95A35B78B4504242F2FAD79C867E74D932C8C9F18358C904C6B309
+D9BCFCF80943815C0E635AFB7F3998A9D15371C4947902DDFC8ADE619AA666E1
+9982BC2082586ACFFEA05C17EA413A3A1424CB5E0908ECDC1BE12CC2E37D411E
+90C7FB1E392A9DC3CFFEDC17C7ED70DF3EB9E907EA92478ACCDA872AA01C4B9F
+EA9213B018D496B6A87C0462AF5CA5FF0A12CEBB754F22D3BE95FCFED1844F58
+A675417AF5988BC780C4E33665A7908A2F062F34A9793960940B78C485531D9C
+34141D3285D129BEE220F2C6DDDA69AC4FF05FA439EA219E32460195296CDBBC
+6D3B17D556C2AA394DFE1E491203D38306FBA94ADDDEE9673232D1F5683F90B9
+81076CEF68A63E1D6BB56B108BE93A5A62A51DE8B95B6A27AA6E8B6E7269E0E4
+9BC0A65FAD86D7180F117ED1EDCE603234AC6044AD457AC8D7D8FC3EC15955AB
+2FD80832E6B46D4B08C77E86877A2C3E8F950BE74B06561DCE61EE2D7C38EEE4
+5C7AB94E4C789ED32DE4E590A036EDE7C324018DAD9FDC1F7D83703133789883
+83305C8175B0F5C5B1955EB8CAD1DE33A5D1D65A5260BD73C1BC2203FAA62433
+8A0263C614AF5663354413D685438AFC21C81FA39F4DD1AE2703935F2B7AC2FA
+A048E63367D8C3D0C2B7D2514221A4120DAE6A8796284373D50C8CFF630D6A69
+ED3C5A5285B1D2C61DD69265B05B32DCCA3E0254F51957A4A8F0F082E9B9163D
+57DA28BA87A3F63C884DA530285C9B14D4FB4CA1ED5E3ADDA636C2BBF9A565C5
+02C6260BE9D4B2BFE07672605AFD54ED586EB28274245AF125B665EB049D092B
+B54251E99684BFFAA54A912F23A28F12E4B40628A83DF4B4862B5D6201476DFA
+C8450CAA9CF9A6499C833CE2B2C31001DFA9C1AD2BD18BA9043E5837A49FB0F4
+23D011636E66AC548C855EC0E539CA61CCCFCFC146DD47272AA55AD2950854BB
+CD2D5A5E380E6F5F3BC80C37DF3D86865A11CB8BB132B7E3CBB323407BE36783
+41E28DE21BFA2DE4EEE4EC276C945B498D4CFF080FFF451C6791E38851D46058
+D78186E0EEBAE8C16F60AB0356810440E1A490ADAC47E2C35E3402F254BC1B69
+08D087BE6EDD66F256A2B7D557C437EB36F45D5D77AD96EC35D4B311A3334C88
+60392FCA38A27F7625C8C020EDE8FD75FE2D77E2C883C701DA7AECFEC61FB3ED
+7BBDEEE6A66772BE34A7041A2EA6F086589DC089D997E1779271929FCFB9D1D5
+F17CC3B65840956F1AF807DAFCB67873CE07C3649054DA4EF64D3BACA4DAEDD4
+ADF38D111B74478F06D8142A86D977F08594BA4BE307AD84A786BC3735061AF4
+E2D4D822163522D05509FE6F689FE139B2B20DB0B07118BB1C33149AA9F7D13D
+E21A72692E568C9C21677D2E62A7FA7F94787C5FF472833238C6EC08AF232812
+716018F023D097D533B0540A1FD5D67CCBD5A3292A7D3BE31602B7A9530EE8F8
+2E31101DE6CBF86C766498A3E5C944BADCE189506CDF553FEB7FC7C2159F7C90
+37A235688AFFB7C2B84743F7137C8B6ACA1C352AD6C4D0C7E7C4B52AC60B4815
+CFC25C0BFA9C8800F5FA9816A7F879A42DBE76A2B981E3A93BB735160093908D
+EF3F1863BCB3DA32195DDD2B586109691F5A51929E2065E50795425D4E919148
+6A8C869B8AE52B3C5AB3F492F644AFB8A1ED971DD134AE07304CDD6CC4E99DC8
+1DC4D92C55EF642AF08AC9BAB6F482191F56BC06A75A7FB3957CA0E56A516DA0
+E077EC297169AA0E320D85409291FD351D5B1A62B9FB68445EDD1385B0CBA71A
+DDDA1D6AEB35B8470306BCEE9372B384C4E06D5B8810D8D33EBBA51199295C45
+35F6D5E9CE600625C73221C070A3A09E1DEAFE58FB49DBB6BEE24B1C4F168F8C
+9C672AA7C0305F44DE4246EE42735DF5CC2CF0496228E3FAF748734AD18A1B40
+29C2B25DA066D6EBCCE4AB6C9E893DFD620E905680C223B3F62EF696E6E86F51
+45FD79E487229C249660CC5E9FB915A2985946D8FD4902BDB000C71B39400EE1
+52DC6A7AFA2A00373DA45FDB8A766E83E19509E48364A808C4A0650515EB3C88
+1090914F725F568474C678544ABB0225C062647CC012767108CBA402C3DE52F0
+CCCECB4BD0E79BA02BC5D004CCDB2D70C51F481385950AB622C74EAE8BE103E4
+2EA0791FFF631C8F3792F4E4DFA9C461404F98344003795F13BA72CCA32D437E
+4B65E5D9502E398FB5273BBAA759D12CDAEB141CCE4BB6D978A7C8B3076D9A92
+E7B7C1190599CD910314B1F1C2C865B3C1C17B61170088AE14D1F9F3610465FD
+A1A68136789A9DAA18309F3786C4EBCF4915380D92F24470CFB4D5C7CAC50356
+1106B7168234D759C205BD2E3ABC094651C979C460304527931E7F7FC24F25FF
+17CA737F3BE1EBCF933ACD1755AA111D3EE451139087BECAEE411E72C4A63654
+4DEA53050757404994602FB7D0484BFD0A7F935F4E95E4FBF229265CF820C7BB
+F8CE3DDB6085DBAEDCAEB5DF68017881313D509385AC63AEBB059353BFB4A90F
+841C538373C7FA954942D9163FC1A16431E43579829673B8E9B1022922C00BEB
+E87AB325A40E0722DBF94EB43F76CA73D64FDFEDFAD9A1B579793BE0389AF4D8
+9BA0FFB300BF70674CF26027FA7F5D0465654B58FE2970EC65202542301642F4
+A61F204753AD540C94FB56D27B70CF843B65591C58E043AA2AA6424CDB3ADB35
+29641208F4EC66475B992A753CED220371ABB5E8FD55C64178A9ABC081686277
+E85A7AFD1091FDAC70B9D94D502EE982C681719A9B7D8C12A68E7766275E7F10
+139A6B10DE04D2F04E5B1DBD6F9191CF59D0FCDFBC56042F473E72932AC296B9
+67C91BA1C5039C968A76D2D2D22B3FD0C2C9883B408EBF3454635058347D2F0B
+D8090648946C85C2A417D1522EBD4EE60F36604F729026CE8B6E2DAEE852A9EA
+68E0B2A83DFB2FA263E7B0ED3A8405E8E4E9E501D4982A51C1242BF1617CD7D0
+00D6FDEC0E74A0D5290B98DE16588E42CFD18ADCC3B65DEE84795606E6AA4174
+6C36CA05C35F8F44B9719C87097C762F2725D094EF06ACF2846D98C4722D526A
+47C1942FBEC2BE6F4771ED305CB9DF394A4FED1EFAF72250B021CF9BC9DECB09
+A36A38AB99BABAB7B6B82018C9AB022B0C134ACD91F36CA6F6D94841CD09B745
+ECB80830B4E0F44FD4405EBC79BE5DFD0F4262F978F6B78A0B142F0C463BD1F8
+DA92F97210197BD3265ACF6E77A23E486C0B40B25AEEEB766712969E9FA86E53
+FAC0ABE8F25D261EB60E407D4E6430732286C11B9F152D8DB70C53041C01E46E
+D9420503818C363B79F56911B17B3B07339FFE9D7D5849744EC7CAD65E8E9DF0
+079E424BA448667CD1DF83D560E13649124E5FB07FB0A0B31CF5D5D8513DF324
+DC7A8290922FAA3D69BC0671FE5C0A7F6317D377F4AA8F8EEBAD492410087BE6
+2DAEAD04DE412827704EF0879614FD2C367B8CC8ECF8D4EDB123532AC45A57B4
+8998A554E64AEBAEA4EEBFB3694303C9AA0E3D2861792DB7DA7A5F511C694625
+D6B40B40AF28A3AC0EFC81123CAFA871EA1BC77B88B8F6B6CE329C73F1D2FB34
+5DA1BBABDAAC754B9B53A214694896B4F70328C494A0214730EE9409784ADB5E
+88226C5436E6F50422A5BF21649A044902379868D305A3CDA2AB20957ED5E263
+8F870CA034E7EAB94A555FEF8BBB0C21CE95E6DCA8020FBFBFF9303CA43AF552
+32A8165F74C1C84BF614FD5E6A0DD27830DDC409810C9AFD48373797CCB14146
+ACE1B3C4EB7E4B4A6CE328173DC6F8600ED3CCC1E178CBCB544488E69E70E160
+87C2E12B7CDDAE07E88926F82FB6A9066A843713736F64F56D530F1A8BD6D266
+F230430CAACCEEA92D72879BDEBD1AA82801FC0B11E51E2BFF1DB56BB87F0FB2
+BB39066B7A857E4C35F5D7ECC436C5E41E45110E11C97817A63B98FE9547D590
+8D2A86810A65C4DB80FF931972A0E366B6DB0FE986A63DB38FD80180F311DF41
+FD175E989E454580A03C764C5D9E400591D59B5344886CCA663EC611B184D123
+2F0BB6C27C224E031A1DFF3F5D2DC60B515701B01700C5F60A0DB7FBD9B27BC9
+388AA04C5B17ABEF7E68030CA33CF1F8F132D816C0EA4F651A0AB1871774ABD2
+9EE017BEF02712A6FDD5AF0C10EFF4F3CC26D9F641F1EFB080A165AEA4B9646E
+EB62A0EA5BAC6DAB7C36190E4A2925A1C8AC36FD486FB6F192D909971EF24A33
+64A2DC4B789ED6C9A3A18DD3B53941FF5F2613904846DCA2762D613E5DE1773C
+6BCF2BABF39249BD707650B613FA311B474E1C7836A18B2A441177AF540B557D
+CDC6CD76341D7536CDBF223CD33EBF2166E43268D55535DE4C44D69F05DE46DC
+ADD6051906C1352E8496FCF72824A0DAD307727232FE61E9032E2EFD300E48C1
+966A09A5605B89B82E3CE1EF9135608681F58DAAF8047D0B58844989EDE335CA
+BC2885B78750EBC173CB21CDB25852F14F65ABF1FB454EA6662BE2FADCADC080
+5D55D70BD8247030CE08B7F4840BAA2F005B8D8F09FAC4F27449316827B7AF7D
+55DA3D2DC898BC3CEBD51CCDD16F27A820CD52869CA4D613ED71AD53E73ED7A4
+100390DD969C58C6D3757540EA6F04BAA88154A0CE267B782D92CA57FD90435F
+84A4274A8A1918F5595170C2216DB27AEE4D95E573D17B6C14E5724F7C757A6F
+4A9BEC452A5FECB9E50F8282B683B3EA914BDD165D0C97CA0F38EB94D8F7E4C8
+723B7E8E20D3639FE271D390E6AF7718ED298E8130AF5C60C112DB290D6E8FD8
+AEE9AACACABF33705E351C867B2537CA474FEFE1A87572ABC0816CC69B58115B
+858324D44A62AE480DC72C373524D60E00B8EE22C5EDA8E025EC90ABD27C80C7
+1EB96590A5F0D11512A776A3BDE5694A988FDCFCB1B8EBBF9751CAEB42A3B037
+D2E2017D27CDEDB6D6EB2CDF5A25634A97909B617C9BA48F4950B469BA653672
+404030D1DB3B83C2F9931214D1015A8F5627C7A85DE1EAC3695E850701E9B5F0
+E02450E894CE895311F5F16C36DC4E1481EF70F4B42E7B9FB5026E65041778B0
+EBD9936D29BEAE55E700D0BDF3CA2E7BCD24C0343A830BC61FA142C6F05CAB4A
+5C03CA0E981D4B49DDBECFD6FD15A7D89D240975525B816261ED7EB3D35624F3
+3B535FA86AB073A1DEEC455844A18767AED9F676652C9DE5348659276B50DC53
+C8F13AFB252F035A3476B75DF637442F96DBB44B56D66CF9F368791AD9890B98
+BD17304C69A1DAF5A48F6965F59EC1F2E42BCBD834E480FB161CE0190CED7EE6
+E6B43F4326201CFB9C38B467BCBA1D43BD4375825E0A0137E2B56C2169C89DF2
+E53EF4FDBA7D32E8805770F852ABA4AB2B490C0AB233
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR10
+%!PS-AdobeFont-1.1: CMR10 1.00B
+%%CreationDate: 1992 Feb 19 19:54:52
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.00B) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-251 -250 1009 969}readonly def
+/UniqueID 5000793 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
+87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
+D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
+92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
+295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
+409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
+4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
+2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
+0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
+B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
+24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
+43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
+D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
+5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
+96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
+7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
+0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
+B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
+AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
+97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
+FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
+20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
+0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
+F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
+3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122
+A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379
+5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA77428025D4059BA
+2988AC2E3D7246BAAAFB89745F0E38580546045527C8779A254DB08DCC6FB9B9
+0E172209FBE3857AF495A7F2B34BC895A39A30F903DC6E3202D29AC110D868F4
+7184CB78407B8B9D42F6375F67FD4B828592E4A977B9E71854D143CD1A9EDCD1
+767CC2929E071FBA4C3D17500E28A23F697B5D5CC68D5F56EAD14BD504E07182
+3FDC12F5404E74EC1C02AF00C1A6A17F958770ED4A024F5B3644DEFB61F2578E
+56013D0B4E7CA3AD255E23DD63369A921D427EEE0E098E8148B16E8A5613A8F8
+A5F1099E15AD16EC554B644DF306F0CF3571055A81F1B464529DB49E919F88E7
+581066BEC4765E31BBE28C245BBF0B74610DBA30C63A71A4F3B60593A6B41C6C
+636C980828CFE9A3362FBC02F1967F0F770A4790F90DEF9D56E0A76B0703FC58
+2841E6E8D984FB476D4FEB960FFB6B386EC6CBB9EB83704B0AF63F38C77090A8
+DAA165E6C6BC86601B14F8E9F504A9D578AF05128D8C1BCEA9D21057958D5DCF
+653026524A2D101334AA3DF02A3CFA410836E6001561C00FB34AB04FF97302F0
+7CCD024F8C61577E82FF229A45F7FE22ACEDD95AE8052044A41EDF46B8F84346
+7275F5423171DF88188EE93BCFE0A84AE5C999E9C774A32B7A2826CEA8A8560B
+2F61A42F967BCBE2081DCA5547D9EC53467ACF8A6AADFC54CEDB7305DD661ECC
+3FE33D8C93D2425ED57BA83F360A384F6B94023EF8938DC136ED1F66CDB618EA
+F40377CDEE0F17653E011F5CDE11C81A3FA5F7168681C02167B275AC0F73EF89
+521A152823FCFC811C71E5D05D99094EB69E5724B34217D101BAA302B5BFDDF1
+4DE66F7887BFD458C2A97A835C72E7A6EC2500577B0B057BA1B4773094EA1954
+589FE5B1D1B4520FFBEFB6ECD015B606A244E605E78D39EDC316D97D99862CCE
+898341583D28F141A02877B76050B07694737E9F107F153E5A5C7393CD479A09
+114F07D12DE0185B971BD526301914EBAE20A38DC804C2319EFF3C8C4186630D
+C91141528F408EEB02C718A0A3E0D39D1C9853F71113AC07DD209828B4873031
+3E7A4E45D95025D9C558CC0C313BA3333EFCEB2D95B7BDA88C062E5243DFBD99
+744C678DF4AE3478C68B4F7BF5C52DFD8A81DA0BD2C95229BA43D15986717CB8
+A925638049C2A15A6913B9819B3642F68A07C4FDB2552C97D29211FAE2F16E40
+076342D4C5A72E0D5185CE8EFB7A8D87D7F345E776512E8B41609794052B9A08
+87EE0DECF203189379B9DEFB8DEC9585DEF2B44C7F64B4DEE827C74B975BD1F0
+82D7E511A5A0FEBD52702F7E68157B509F303378B191BAFFB4229495AE65C558
+D72D9AC8286E61633B29CF90917E4A01030D6B82CBF263751BCA8AB219284B04
+80A8F4B34D0592EEAB82D64F9A5EB6A08A6CC5A7F3D3EE2B61710DB386AEA658
+7A059E9633123EFEC39FADEA37C4205112063F7BD3D2F8319A30DA796E55BA23
+00DE2B3C15511F87044ABDD9DDA9247B5E785A01A05B39F1A395E36AEA4D3D4E
+ACACCB99E99DDB1AD1329069714FF050311B274E495FFE43D33DB3BE958098AC
+61150EBC4F9DB7BFC8F6C81047DF0BABBBE67970D14524C82334B693724A0818
+0007E4E848CE4AC8F07E72F02D74CC5C06DE0A67A63156F950A7AA1E0A110C6E
+D2B909B5509D583DF2F64F313FC8E07CA35A25885AF09F210395DD420BB71BD8
+478E6432F1CE528B757170D0BBD9BB349259BB70625DC1848D86B5E8793BADF4
+6330F6A01861ED57B25945C642502A733B4560D1811C7B2B5A3F90B15146A58F
+14913A4918A5468A18AE63C12490E15E3FE40A5AD3E95464663CD370B5EB55D6
+0BA607CD19597DC75F39DD2E8AD0F509A8CB2D15ACBEDA7600B91F35BADD4A8C
+C9FBB94DD16DFE073CE89510D2D6B7EBC43488ABAFC2C2CAEC13125ECAE922B2
+C4667C6A599151ADBBA22B97BE44E0F3A615C7A6A22A398903A81ECF77A9F01D
+7B6BBC17DD8EB3BBE7AFFD6803B38840E061A79C6C7A93E285CC8C506F14AF71
+FCF1FCF22828A3AA6C500797EBA483A70ED2B941651651358BD9C93626BE76D1
+AAE251F4D1F376C4AF4D48F0D581AC6D523060B855B31A7645D20E8308658241
+DEF960F89B54381E238DE2B104BEE74F7FF2C6DD9B925FF42A66DC9E275A782B
+16876E1619D6C2B1490C6585349BBCDD6262A945CF42E6C35E7DDEFD0233B798
+BF433F90021F67D54CD1B4EFD6968A1C5B29CEED2829BFA23C42EF2D747C57EF
+1CAF94CDFE1FFDBD6F88C0D2E8531A51F1BBAD8E57461C9310D6B9BAD7CEA09C
+8C2FA8D0B43FAD7C13D8AA1711BBEBD3B89BC9D91274F78610F6D067A1700AEF
+1E123CC81561E56259BD244840B2594A24AFE21F214222F44F6A59FC0F84174E
+7EE48F916AB39BE68281BFF1463A355A56CC7BE092EAF6CA0CB3C1E06C928E1A
+0D3D4CE85CCDF7F6B62D0E08E2E46FB7ADED0C490AFF4B6640097A4DD41940F4
+E2510D07CE29DD3A6CEEFCA73DB8D86A0014B744CE46CAEB24BE8B31213C46B3
+83017C1CC091DE57648036F060652DC324855451CE2959CF7F982CAF21C30ABA
+E45A1014AFC690443439574DFB464CB1CA8C6F350735678FD1A5EF82D20F1D45
+EE23C99F25351D350334B10E360BCA91127E8E2B8B30FAB941194FC08B1C8DB5
+2A4C35614F176AE7B0178DC1ED39D4F624B2FC74A89293CA795478DC0CAAA1CC
+83964CAFE4ED3222CB1A2572A8AE65FA335DB5677FC8C3ACCDBF4D7E86329E75
+A4D19EEDECD1A502B1B7937E02A5C49D2505ED4D8C80A48D116541A6FC97587A
+57AAD15D62ADB4B192335A76AA4D0205BFE668C646637F699A2C5495DCA10C3F
+3F3AEAF0406796289C5B652A96A44D1238571B7E419AEC85CB155AF0B099897B
+D2975906CC6C116BAD26E0DD183F4C831207E990DE542CC96540AD79D323D766
+F2AAA0580178942340464F2DF5FDA64D9938CAB032CBD48101C3D7E28F61445C
+7FAF809C359D9E0A2369F106D552B26668C6AE318E6FCB92DCC8939C3706D6B6
+CBA4F5424DCDFDB813A1E90657FD4F8AADA1F2FB211609B65E270E3E36C60B69
+CD42E6C576B7C35C2A45BD74421A82D5B0001934448F44DAC3BAB076C32B5FD5
+950D770597239FA277363D4784642ECC2229655E8DBF4F62D0020511F032EB3D
+84C5ADF9496487177CD0155E9118B029E6EF1EB55FA6E7A93EBDC5750FFFDB67
+9925AC018F637E6B632A9CD63D508A30124358A5499CCD789B0AD5460BE5EA9C
+AD047E6DF2BED2FB9B6769C40097B6A6B914DEBCCFACE48512E0F4FDA854E4C5
+C9F59CF101F530FE67973A97179FBFC82EEE205B3C1B0A77E4254C7F9BCF2069
+6B8EAF29D2A97DD2730B11A57B9A151B64ADEB26F94B22916D0B67103C8AF85F
+3CF7582F82E094E71C3BD8856C9A288A765E2E2C03314B0B0B6551015DA0BA55
+58A3DA441A972603867976B51561AE9BE1313CFA6A2CC048CC8CBAD5BDD3BDE7
+08A64C9DBE148774817259097257CBA0E410A2F42B2DA41F73E4A11EE0597813
+8A9D83F90AF1343034CBCFE195A2885D5B277297FE2AC6D1BD51B180963CFF87
+28386A938F7C716EE79E49CF02F581A44CA7514175932C37C0F09D0DF191DD60
+61B631EA311E619F2C0DAE744595C80C58B868B3419DCD8886426B69F9091F8C
+7BFA5F66BD9B9991731157408CC6442F4AE48B6CFED7F998698FE52C480B5760
+E692A67C1C3BAE839AD0B0F425CAF6CE1D3626F178C2307ACBEA6DA6FDC43307
+2FB2EEC0C5EF69A4F9D259218A3AC07B21C672B94E295115645C967FF5F70490
+1AAD989B37587903DDC9690DE2053E9D2B1C4C21FC913388DE4A64E87B2A7CCA
+6AA1E548C6AD28A7A2A5EEE835FC483D50C2DD749E423DB7BD1676CD28307B6F
+176EF792D46BA6EACC8A2F67388A41B794FE2E414ABC965EF46D4BFD32FCEA3C
+D0342D9F7F89874C2511295B6E4751DB7C846D6A4D555A1BC503C8624B155863
+0907597B0DAFA9E27A4ABBF92C1D37F263A49FEB3053E22FADE9DB15ADF12E28
+8EA9FF9A9FAA1F7AC3B8A75C9E9A4B3498C2EF4F789BE0DE2ED7A7D9C9549A6D
+06CC506A3883809C07A7C2734F4BFD85695FDA21D3D7846A5FEFCB422E101F13
+F8539892D34F493CCB83624624F0C82B5F4D738447701B11B9E57B8FD9E6D08E
+A00603E80B941151DAAE8C72B87133EEC4F9BB8991DFED684A0B85FAA93E8E80
+78B439D12A47E73AAC60CA0497CDE8D1A0A6ACF3CFF7693D63A3568CDF0F95FB
+551875358E679A9F9EB410F32E6EEA6BB1E05F3721D366CFD1B5764CA7896C35
+8BB41743B548B5418F258668895F70940EB5E645D8DC0433306C2BE78AF6180F
+3D39F0577445712C0F52622F7F1762678A322B80DF694BD4BF54E6B1A52196A1
+BD5DCFEC0D41CC0759750F46EE947B79169FD3A6A32DDB82E26954BB259DBC1F
+A249BB2785C43764CA96055B50C53FE069B5A1FCF1FDE5A89BB5BFF03AA9D256
+545DEC8DBF5438A3A1FDA3D5F07D90E0E65954557595C32D792D2D18B229651F
+2E9C6032A375454EB216C5C2644046630762AA1E3F74BF12D7F88821681B86DA
+2765DD48B4E40188130FA7ADBB0F0CAA2E60777B97C5DA64D3C4D41883E024D0
+8AA1AA29798A0B78B4133EA26629FE3993AA65A758F0CB39F9CE7DBAF531C854
+5EF520920182D6263CA7A7C27157933982B36F26970CEAF5CA3A18B40CAFB936
+86104D425DC9E7366EEC75064E4413C42850C450FEB972510BA51E38A2BB0F66
+3AEF123FB4FA52DD25B16A1842238B91C6D61771BF8A5B6E579845E5EAC41E4B
+65383D9FAAC7DAA6A778F98222DF76C87E1DCE93CCE1ED30D66039855FFF340E
+A786CF168C9F76A2B7D2E30FF6A775825D4775C0A788ACC76F1E605419BB8C37
+60DC30887F651C209623FC086CDDB12916B8E42D0F300519069A51E79EA429A3
+379879D4869EDD39144BC4EAC8143FCDB104C566B29C2E68ACD955FF118CD319
+36D435DEED4B9FB7993213504233B3972775F30AB3BD2E6BA8851A652A432793
+4A04FB1F16D98DF1020D570B2AB48403A1A829923E18364E08FABA34F8EBFE1F
+7409E5C6CFC15B8FA5B1C386C90D7B92518C68D9E7C2DAB02901B90B41113819
+05C0B288DC97385532C4F5F224E7246F4DF74623BDFA2092A58ACCF5272E2AAE
+B57A76EE743DF332473314499B2B498AE9E5433029A415DAA824300CA20F34A4
+AAC9C027290826224F0D116EF5FBFFDE0CBE00F5E6B43D3DD3BD9F6177C2DC66
+0B833711A9224AE675355AAFFE0F9243A733244D9623AF4684D6A0E18FC5E242
+00ACCC439FD53AAFE0A54FF74020CA655AB02666C959EF3BD4CFAF7A63D331D4
+B3B254C76BA8320833346F2A3FA53CE494471136E638268D0897A2F1B046499F
+7BD77605D91B2C5EDE63A276F359CF98BC59D135F033BEFA21D06D99987E2B21
+E5B5CD843817F78AE03FB9B1D78935D50E61F365261330F900055717A13E25B5
+C48C46C6A93B366B13EABDCB1A2AB703B4DDB5F5C6A1A4475E6509AE6294E611
+6E499ADE2DAF4832B233A6FA2570AA6CAC83AE35E2EB446F1A5FABA85B6E4DD8
+E080375DC95FCE7373BC02139DD7DB91963346413744B9AAA4CA95308F82FC26
+5320703FCA9459D6DF121640DAD72EBE2D7541945AC985973B1A0FEA51396856
+9446CB06D1A7086ED517A491FEB1B7A24232799E39BEE5FCCE01289DE30C25CF
+7490D0F4EED802203D250DAC213B6403DC9DEFC27410BDC861B95ECAA70DEF2F
+8DB5E37009DB23F6FCA2B3F32835EDA942BA4EC082C8243682B3CE6EB3CC9796
+D2C6B5D472D7739E70437606095E579069555A64D142945BDD7BCF857599E195
+A9B7FA7052FFFE674298FADD48EF982496E86FC5B0855D83BA9B345B0FDE1C84
+FF2C02A0C9F7F19965F4F1CDD7F20D85A11EEC663E2F5C61B86D6B51A763E7F5
+E23000FD61B509D366D8B2FFDC52BD6836CEF9FE4253B314184D5A5D4C19ADCD
+373D64A51818212962EE6CF52162EABEC88DB7DEE30E02AD28DA7331E2E11BE2
+9C93675EC49A01C3253ADC9625867D4C0A519788C4104854C4761F1FF9136AE8
+21DE74ADF1B0452AE45F9139C4C04E6F67C401267C04E57C5D312D7020BC5321
+00F6816368AC2222FD6E416B6B286066FFB1225FEBD82564247CC1F828D85C21
+45D7195CDCCD5E6BE96932AE5DBA1554E202433E4F49624762D1ADC676ED1E55
+0DF47E57F256F8986949B9F4A9CF83E7598DB82B3866B0BD0240C1D56CEE95F1
+D45FD1701BB321A1AC9FC04CC262DE5FE4C3A13EFF01CDB9B8326CBAA2816DCB
+ADBAB291B2BDE29678E08F94DEC952440945AE6EEC52BCECE39223318CCA50F2
+F02B898463A821EF22C7062F461C837E90AF5940AC24A6B9971EFF44085BBA01
+DAB3832A3383281E6298DB85FEA9208916A3D2AEC043448237FDE6E0984B73E7
+2F36C5CBC7D394FA47B3FBEB92B748B994F4746978746DB2B6096AC93BD0CFCC
+FFB50A50E8345B170C8B7FEC2A9CCE368FBAE683018C628B2493DE27AFE29213
+D4E9EBF87FD27D6A16182F032F75C82A793BC1012428ECA15A81FC9A6976E798
+7E6176F166B7CE3B8E32CED0A65AE3A7B5B806F0DF15EFBEDF3284177E42BC32
+07E06A79CA85B0C055DF516DE0510ED07B1AF407CF26415CBA73133F8C275475
+6AB88C244027FBA8DF3F34563D87DE9185513237264BB6624514AF991B56B846
+C574627224738E86880ECE97E11CB0FDEF6F51F0A3DF4EF202E4B5DCA01C6707
+0F0E593AC5FA1647CA2C91F7CB645E090D764AA3F9ABE16A6C4B5A9DB8CE9BFE
+4D9AC4406BA09607FD336D00B5776BB18AE866B06B937356BFD596645D75B3BB
+C158B097D8BA3FB86488BBFCF5CA81DE2448D5ABA852DBAAF911AAB69FBE1A66
+A439FDEA0740637930A0283B6A45301A8FF676256C6113522C3B29F13379B884
+A99BCB8F5C320D40D12BE0CE3AE038BBFB4E4145C93155F78FC101F92ADED739
+AF3FE2546E393ADD3E848FEB150C11C1F0C6981E0D451243B0043C0C6727B557
+59E7EA413B6D47EA3943B841011887692B330AFE5F67F588A53ABBF7424CC138
+8F6EB83B48E14D8A8E2AE488B19890683B858A4941B15B4DCDA2CF40CD97D9C1
+EA9ABFE5260C2C99FE59D94B79355CFB7761D372C6C62F102D748F139C696A69
+C2821989D33304981FB9BCFF1B25C325C1433FFAE03A3997042BFCC861699546
+83FA90F0EB2E9CC24BBBD089B1EEFD21C2309772D2C89A3D95C45F4ADF727E60
+B99C6B2BF508395A878F824591227359E159AE2D75882CAB0A18285FE0DE3D3A
+81016B46507D7B59FE2985FE7C23FA5C1E5298F0AF8C41E72FEF13B0951FC6D3
+3DD4A366EC1E8259862C3273F9A737392807F0A62443211AF8E033F656BB8B6E
+4DDEEC9C41562809441B4D7FA33AD336DECCB1E52BA8A8D1BC10286FE8114BDA
+286C50C8563503A0F8D537F1AD6B1E9CBB44A87BB9BCEF1E4AB228EE3EE2DE67
+0B89E7F50D001E2B45FEDD1EAB0018FDF7FCABBC2B1F9BEA12930E2C42DF0423
+2741C98026262C19DFAA20D1FB2868003E7F5DB0539BA3A86ACFB10151F807C7
+CE758CD3A78FE2E76BB8008EF031AB5DB5193CB153113CC4106CBB49388C9101
+7D5A45B9A61013989AE0573B354236E98BF873CBC30727C8584D96F12FEA2372
+2EFCEA69845BD7C18BB2B5A278FE40316CE63B4C0DF6CDEC1ADE00DEF4498893
+E272639ADA6008A22543166F39025511D0710D21E7149FABB53A333FDF68573B
+F88FD43E9BF1674D32FAD1356849C2AE5856AE30B694858485F331E04FA5A5B5
+DBECB8F8143D688884FC89897737070B39F145297C1538DE6E8B4712DF198489
+D894FA25205DCEB0B81C8BD4ADA1945E3F8D34D7EA26966383B00DF790945ED1
+AC15AC33D6DC2D53BDAA692589F1AB55632067E149E282865ABA9C52B9A7207F
+2ED97579A16AE18A47EA7F24D095D000CD0F9786E2D136D78F55F3352BFE327B
+9AF9B31B72E0BE5B6D19BDE38C2E47A668B6426A305E4B246EB89831D65A818F
+CBCBCA8513B682104E8A8E95CBFF674B6E6CFAACE48754FC14A3F754FCF499BE
+24B3A2E981BC36694DBB69589C8E98652C7005BDDDD9C20F49B9C0DD26AB6C82
+2AADEEF6CFBA8F014E08DB4E9DAD5C95499E1AB96656819361DDE9050987981F
+9205FFEDC58C7B835288278B530EC8114F01D1373D0D0C037B822FD390EF8D75
+416A657C4E5935BCAB318A7762FCFB1BAC97E4B2C091705D4EA88CA38387271F
+E112A2EBBBBFD49D662107F5749D798D7F9D5AB851140A03B88960ED03524EA9
+82B544A5FDF4FB816D2069759D12F9C314A9764A869D093682AF91CD859D042C
+6A5333D38122F116C3DED8DDE7D0C606E811341E60D769BE3DFCA0AD4B876783
+1D250619A16675BAE9B51F3555B8622C40AA35085E6116878FF7BF32AB91C524
+4E275BB651C67AE7C4ECBF2DC5C071046F8982BDF694101CCD30DE01C4BE9B13
+7BF2CE9D94F20021547AD258C05821836ECD90CD9407D5067FCEB84B3DF9A9EA
+6F92CB7695EC0EB932443FE9C56DD99B70E83FD2D0ED79F580A8C4C0595F35BE
+007A389D854F797D37AA34609F64D13B25B6B135D1233C9DB8B68097C8D1C530
+C938D860431323B7268A665A46B5C72CAB46C5098EA1B97CAB1BF164A2A09AE4
+F5509ACA4A84DECC415D3C84E7D4CAE801DBA6D5925D51112BFFE753BD26ACEC
+EA498CB406CD5115D0B55221C881156F10A102DA4D4FEA3C3B9C2B79A6359439
+1E39C1D4D93431DF030B6CFCE095FB7FB4964BD7864DB6235DBB47AFA4ADFA45
+13B1E110287E295908FD7A3499B3451D22FD17C1F6C0C7D08FE52CF90536B0AD
+397FA2CCCB29F20AB0785C129608BE24A00DB26163EE47E1DC9D3A5DE9C1FC89
+15A7BC9E586A50BFD9168C6BF2029587E51999E284EC49343D1B1AE906602170
+4797567C7424E1900D034AB024C822D30FFD93A27FCBF22DFD51F134FD616305
+AD95674047F8777A5C46D3ABC17D25D13044739865110C9250B28A882D1CDED1
+D72B2DB691E015DDC7E050D9D9610789AD74071F7EC40206C0F8F732C3E453F8
+FDCC30AA3BD1B57B8BEE9699E49E36BF8B1A8616565373E36369000F7AB53370
+1431238A05EC3EA87066D8C40BBC266CAA23D15370B438B803DB6A75ABC79E5C
+EA85A2F8FFC437B2E52A214605CA05BF42EAE0A5A1840B8158EBA0F675430C88
+3888099F3690B0E260F79D8F08D1DA58151957A707FA9D187AE811E3242428C0
+84C557C1C321F436E9CC1E5773566D83E8866823B6B86C7AD37C665423A02508
+85AC9FFAD228733AA729ED572B88B2D39032BDF84FEAD1687E0062E9DFA35C71
+403CF0ADB903F147606C33442F62A8484A01F4438C4906B864F1466ED1C2636C
+0FF4AEA4929E63C9577198F1304BBD9B5B8E05236AD4E066F58CDE649981CD7F
+4B78E4868D4869267F580D485986CED47F55DF9C5C81147B42AC26E2C154538A
+1114DD0F3EB1005F5414C351E7DDEA96E8D6333F06573C6E0521818D483EE6A8
+54ED2A8BEE7BB8A068DE874996A237F3A7C6B0636279B68F1394A54C4ABEB472
+8CD2217D02A772638A58F8E6D74F0754049F1ECB99EDEA043F1FC05064BF4C45
+E9D6721B3642E1D53141E35874BD35D06223B124A13193F481C589C3668302D4
+D678B6DF9669934E1FC83CC069D1772104109554AB3A554E716B500BABC72FBE
+B84FE40A2F6F772B70E2AC66CFE692C6B3768E6FFF8F63E163ABE4157DF2A635
+87A2555ED0F56584F79EA5B47D7FA6675F9D4C700BF6B92487A03C6B0941DF9E
+EE4CD5831779C1C6979E5E2FA3B1D1FA0317A0E3FE1FE9A53F0859A5C689C345
+A337C220979C85F37AD34F2A7D7255DAF35A011A0FFFB559035FB8CD0B90AB59
+2CC2FE17A917ABDC165FC3D1A753A501D449893206C749C1039BAAA11BB33863
+8C405FC93FACE87FCFFBD20861AB205C9F8F5AB6740444D7EBC7DC07C5B8F501
+9DA9663E2B8D29BF70484EA3EC2155A0A6EABE996F33D74D7EF095787BE6DE32
+F51A4A219F0CD9F0860948C5B262126B9B2585C9F30CD46DB4F99DAAD0BEC16F
+63FEEAF9161A2EEBD8927EB7646A9039B6A1E9C8C14BE9709B66A2386A32E024
+3CF0B1BBBB68BCB6ECAFFBBD742B9366B10E5BE2AC66FF40AB07B82FD3BF238B
+219194BBD20164DE983E34234FE2C8EC10BEC4196FFBEDC0468808CA36AA8992
+BB44CFDDB8F94F5D5A494881CBED95908F03A5AD3AF3A94D8C44C7CBAE2E52FD
+7A7F996A187ABA9B3E96118DD3EEDDB2DCF4F140F48085A6AFEF163CDDE0E497
+BF007072F1192AACF9A26FC1821E8E3CD880FA217C0598D9A634EAE88ACE1B7C
+A98295A451A6EC4866F9BA137B662E2E5F62254BF6724E05B0F15148F539C70D
+B6FCADED14BB9ACF54EC2A8000B3C08AFBDCDA70270D8F4021418D2889CCF5D0
+14E3AD0DF281DDD5E4D9F519002DB6FDAE5C0CD87929DC96395859988C679EEE
+058528F3BE744BE524A14003F12CA045F230524140494AF22BE9FF9C727CA184
+D5CDB28C13074D19DD6011D1040EE07317114A8486482CED4A3EC5AC49890093
+C71942DA2A63D91125BAC0BF3FC3659566AF60E01ED3ACF76436BE0B74505670
+FBEE6D3C38FD924699F33A50F51F416850C62142803068C186498FCE4879D620
+63BB5498D83CD023C5ED222E510797A4C8941796792C4B3DCC2B4538759A21FA
+C7E067054C2D3AC313DB7EAA1B4EAD985665A93145E1FEC13598F768FC818E94
+007B4D7C2EE920BD97ED83E2685D0BFE89DFBB52B6409385F4022C712F7B60B6
+39C4E884045FD639FFB89C5FF227C1822788881EA9B50C582AC3F333B15A9A31
+C5F81E1B3041DDF4D5ADDF5C94A7C221D103CE3FD6A85C2D22D36051A7C564C2
+6AF27628E45CC8852317DD70D695F26CB9B42480884D8CA671E7F4C27268481D
+6FD294C05D1731AE5FDA2DEA873626E633E55E82C35F8B27E4C1FB51D0CC038B
+ACB247249E2720FA407BDB55440030A6B0ADFA401D596B98FC1864FAF30DF9FA
+E08D42E2C146E9924372B766423BC77AE5DAB79C5DB2D45FEFFEBABAB2FF4D21
+FC1529F0DAEFEC67E70111ECD8566F21BC36E7972D6BC145FA268DA962A9B82F
+59A0DDA12E80AB03F9D50B572E4553EB8091EF2A4128CF65A12675665809AC3A
+1FC030AE675ECDF7A468FBB231BA6CCCC33CB45EDABDBF350D9F9387FC4F5184
+A9CBA0A592025C347ED1996A0635DCA677F988B58EBB056B77C44DF9C5ED39B5
+D14368D82CDD94F356D3973758EA1E5C62E53A8D0EC8B25FE43B22F2F23B4DF6
+C06DB63F1953171F545D634D4D595812FA8768B2E2C402E26650F365258C1570
+09F07DDD2497CC71D932CB12F57452B09717FC7FD70EA4463424325DF60FADCE
+9609C4287F2DA93300EC4CC8FDB4FC942B18A58DE47AFA62182BDED1072A2549
+B949E975AACAD15388C3B98A68AF9303F21B0617053707DF043D72E182250EC7
+78B7F11801CC27D5658FA3B130AC7460BC630C8FF8EFED814057507F8AD713F1
+F92325071ACCD8BE7D9E76E90F61292203DB7640B3D7922A11D0F2A6F09D0435
+2D56F2A48D787D4E6FD34517068117C42687897A240C26AA700379536464B08D
+069537FC4C42D61F9E172AB1DD42FA57DD80944241434FE5FA00E4F14B839D5D
+8D16EDCADF2A594747823CA87E0826F2289D0566B80653B7B39844B09FECA756
+C558EF67A131FB0B71D471BDD13D3C783CBDE67A3F8D3ADBE0DCC8A39E6A8BC6
+552AB3C0F5F712ECB52F0BC74D1D10D4FD2135199382F3D56515235C33E0B651
+3350D21CB488B6BBB6C9D3B7473169C7BD7EDA4DC569FB0546C7A639AC88AB5E
+ED2EF7EFAC177400DFFFE5470F3CF606322D49BCF40E47846873A606FF9985D9
+8E20C953D31A489A367697DA1474BD2A79B4DD90968DDDA07BA0FE6C9EE3B943
+8B184F498C718E765D3576728876C87C50515D288D2FB6A64D816E8E51E22A9E
+87B6B73D00B0660C2C3DF7D932F673874058AA24B1183DD282EA672A1C4B27C8
+709E88F120A4FE23654091A7E8BF438665B2CC2DA694DE1B18BA2C5332F7B02F
+E3D7B7DCC0E3FF2D83BCE7618B9F572360A1D581C1324C5919C7029095953848
+791AA10DDD56C3BD12406313DC9E64572A66EEF8694659103AE357173EFB5466
+ED232EB0E51FF656283C78113B81150FC04DFCBF030004B7C55A9D656B0D77CF
+7700185466B8FFF1AB6F5536502478DBAFA66C3B215953D7A9E96478E812891D
+D7C5C151D1A949C4D7453AEF07FE6E01BBC933990043A9678D138963E1F02F18
+0005B9E27EF25FFEECE19E07100A970BCB3603908562763819DC35F45A70340A
+7C1F57C0BB00C76AEF0EB12E8DF0266F202CBD3D1B6FD45AAEBEE978D313AD0E
+E4C1526036FB4250887C14DC3228334A15C8885683695CD359421B408EA8C6F9
+8BC622554E2A3A2E7A2CCCE09F2F8B725CC322C3134E0791CB5E9A174ECEEF25
+9B0F0BF136AACA162CE9E4204ECE3C9059250ECD5AD2B19905F21071389F5034
+0E34053479EBED41024FF64304AA549DF3BF21F41A56994AF12D80029670503D
+9DDD2212FBAB31FA0870F72FA48A82E2F3B3CCCC052DA7ACCE81C3759E00E960
+41BC84CEA604FD6FFECED11C49930FAE98DD0437214EC8E73A0421871526418D
+2B1B122092C6C3A83E506985BC5BC19759378BDE912A8D300D75F3768734D39E
+59593D5240E8472DC7844BDE3AF38F9FDA920485B2A882A10419D356631F0BA9
+3C5A3BF39B77F63473B18505CD4E248A2A95370E5D83BABF1D393C75E7E3E5D7
+C8B8D3D3CFEB7EB5C53B9FD5095766FE77909E81AB41533838C396BB78C20737
+75868076301DD5F7ACEE7A20D59F096868229EF39B03BF3F46D2D2FE27CDBC77
+2072C43766DB51DD4625307A10C363E0B7FEE1B1F7B9C38B2518753038323256
+E01CA10049B0B602EBDEEB3F542D813C58097FC87A5C570CBCA2113C0245C79F
+747CB5A447B3A40E0D5774BC8D68BEF2EA495CDF36D18F469566A9B9C8DD5AD4
+EAACEB9081861EF8723A5ED5E02C893325DAF85D549A21784FEC9BD63D9C8B32
+8505669B526F0D97FA7CB55698563D7B01DFF5CDE8EE53D1317D3D410D1ECA88
+AAE1F4CAAFEF86E77F379390E0CD14809017F3ED952F491A23A25298F9722E40
+5B385F4AA2B474210A0CA967B51A45B8D17CB7224A5A2615612EB0AFBD3AF404
+AED70B564A18648A35DF9F0E36CCFFF88FA4718A21001E2B5B4000DBA142F262
+861D45EBA054CE3DA3761B05B3C3FE29D59D3E81D2CC5CAD6D529EAFC6810D7B
+8DB7CF9467FC50252B6D7142C958100AA968C93C123A3707DD4008BEE6D39F7F
+4CD28BB2A1D67C1876C641BAAD8BB9BBBCED59B171B83213D72C1845D58CF692
+C6C3C80E924EBF9B7FB26152F19F519B054E8AE01E5FDD0FF0C7701149408375
+2E76402704034944C103235654F0DBA31FE0042472CF06113A4C2584BF947099
+EF3A768BA9E14E7F69CBFA9978F9DDD7016C697D973AF60DB6F3C2063B80577F
+AD99F40F8EC7F31AA12A67C2622F315E644A8B808F38C877FAEF3D01F0CCD87D
+852ACC6AB36CBF42FEE11A02C17A60CB388C69B690FC81F03357522FC670B376
+A3C491ACEAFDD709481AA37E230C691078848B9A819B73953545767E2A215B64
+DFF1B915CE5F0E009CCAB4D0C4B3B2EDD07975FDE4B9ADB7F5006891122AEE66
+16EC697DB4B69E3FE885A55459A51365E0B2D72E54DC4DEA04B33A3D009888DA
+DAEBD4B1181572C4BC218175A08F5F50BB6269C3CCD49D0B0D22CC72316EDB42
+8A3CDED2111BF5B403C1A4E6AC579CF6C63CD6279FAF9FF142B170B5378CA8EF
+A3654A458BD2F3C7FD957B210238FE1AFF4B18B65DAD7BFBB8F62611EF0099D5
+C8A630E73806F4219FDD072C1DABD0A341CCB37E9B604378C67C87E0ECB712D3
+FC7930339568353B76F567226D72AB9159952570A08FCC0B2B87E800A8D124F3
+85B2A6C0214D533F26E002D92597B97F55EF410B6B54087C8FB109F7B76BE860
+0FF110E0E655A8C3B49BBE0E2F582BCF3C91B8B5A9ECC5FC8375F4EEB4484CF2
+C3BDD4B9164069615F31879D68B2E74F00570A2160AB3854A5E8EA26E17366DE
+23EB2550F88B018C15AFD92656862894C4B2D4D1512A8DC0D64F944793964870
+E2E48907A37E788655CEC0B2528F2A73847B088EFC550886C8987B47BEF988E8
+3DCBC40A1BDFFF75F1AAAF2D497BC6A993FEF661B9C3A5CFD771389CC7B6D4EC
+9FB4B15EF86EF187E3867B196514F3D8FD6B7F7EC36B9FF53EF20AEA17442B06
+C6F60A8CDEEB7BBA94A5CB0FDE96417292722E548226003D4AC0A8BA29656740
+7B1396804886988E2C2BF43C7CE57EE2719B6D8A68DE6866173A5C77B4E25390
+B48A94B3CF392A937B638EAB1E2FB60BDAF954871087D56783DE09A1406665C5
+2E3DFF84E408DCB34B0C0928ED19B26DCECDF7DB4D5DBE35AEF9035C80015DDA
+71E1DEFC885117E1EA3DB2DD83B5EE01B2B81587A0DC48724199130FA468D263
+1D01330037604C1A14127C27D66BAEA888AD7E65140FA9BCEFC5D2D1DB061317
+4EAE5115C548D5A08298FF71959F62FAEA04F3FA85C4CADE97D24C7CBB2BF2A5
+BACE9CEABB91447FE1444D839CFABDB8ED3DB3D0028D0175253DBC9442E13D5C
+C23F52460735A4FDE1CB7CBAA3D6D6BC40416A61634065C58CCBA73B60C5368B
+0A3910C08E94D3807F151628F0412B85FEFB55C550CF0E0B5C6890D031F24AC8
+D26391DF7CD87CE7F72AD3F0DEC57A5B198280733FCD49031E8EDF921085B442
+4CD72CAEF01EB686A3322CB3BE234944E6E84CF8873503950BD5FE9D7504AFFE
+7319BA34F89CD21AADFB51BABF79B45FB1702142EA84A4AAADA0786585042F4D
+1E1167B62455C585BFFA057AB5E5C2B91DB5B453EED7A2E29857397E26E4E33B
+C7BDC5C4C1E113FDE07C899AF092C50D6AB9B3EB3F778C0C13FCC166808B1ECE
+C427295EDA2FC8308572598AF2E2499A50B82EBB2E95A3408C68C9CBF67F096E
+C8EE214071FBE2753382B4C09B428A90273A4D287BABA5A786477BC46B952B7C
+C1C7E080D6E4FD6619FA1B6FA90BF42F007B2993A33849BDC37399B8587B47D7
+C0E65FC34EC11BA84CFDEA661D2993AD8AC58A359B5DE8686AF3F1383F39BAB1
+52F7890C9BFA80FB61C8B5DCB6590763D395676660A35DB878D423532A45B7FC
+330D384863BEC39DDC9A66D47E9C5A078B3374D1F28E70253FC7A92CC85A2DF8
+A2D393C71378EAF96754DA1329CA884E9648F3B1A478C329D4C7298B74E7DD6A
+245BC15C4BCC2FFAFCEA6C61A01F197E0E626DFE323C29EEB9A6C632677B790A
+3B826DC6BBADCAEE0219209F9F2A5D240EBE1423B7BCFC9F07C4465597D8B3AB
+5A3593A0C3449A2E6D48F304D758518867AB6ED7A77F8E976F4EDA54E97EE92E
+FE6D9EEA77BC2F247980E6B2C6AC7B3E5330C43A27EAD1ECECB37945660332B0
+3FA9F704F6CD8A58B6297F8805876EA0D3C41ADADB6E5F03D27588486574A4F2
+10C1396B2BF91542DC8FA0FA5273ED7CF5A49E95840CC2F9FCDAE3EC0D3F8AA6
+240895C08BF9096B45714F15AB4995634F1DCA71EDEBC257339ECF489A2B5A39
+46040FBEF5918E64952A4F253C8807F4B25AE4BFB7641B245F0CD870C537FE83
+F361239B6FF4038DEB4C059B7CC31683815B9D65C1A4782D11FF428CFB7A2AF9
+9CF4D04F7395CCD2C32CE265B28EE9D61B0EA62AA442DCF5688985927D8C121F
+06DC7D1EE69AD86B71A271541279788DE1EEDC3F6E32FD483A42518C2DBC18EF
+67143AEC4FC1B22FCF3B8147A1A7214B590CF918591A96ACD63E139ECFF4ED2D
+7CBD468EBCE8333FDCB29457E81B6C2EBFB05871DEEF406C84854009F12BF369
+541A605173F9841131FA62D94E63077DBFA91D8520979C31367F2A44C7011488
+4C8DC3C15738F654125A3F47013B9759B3DDC9B28E24D7037BC94DF2B0AB09DC
+EA1AB143B25CC14859F7A2145629AF7DB4A332E092E7F8CDAC809F140FAE3EB9
+4D68E5AB9B3DBBDAE065AFCCFC31E9C937BFE4B42F28C4C6A12D430BEBC857C0
+67525B939D69267DCB9186798449A337DF3FA711EF06AB3CEFE6A97F3796A892
+BE12AD74ADE3F0FAAB57F0F0AD4B3F5DC43B1487929F9BE52FF1CBE5F63E2F9F
+A5DED3C4F035D54ACA398982633CDF607821E3D96AA9C339A67560A60BEED856
+9BC338DE78BBD16D8DBABFAB1AFD33CB08C5E14ADEEEF4B6C2D38E76865975BC
+5476A14D4AF8C0A8337C8D3A4AE809FE98C2AA4F41A38341D0128583470FD611
+D6CCDFFC57F64DF97A274313521A1C30D01C5CFC7D11E09CA50551072F54EFFA
+36A3E0943EA8723D6970BF76C051FE9FD4B73E161A1CB1FC69003B7C9716D1FE
+10A98EB2AF52256BE0474D42B0408B6680BBF268945644B09AE11347AB57B0CE
+E2B7047594387218A977B323520E38FA53FC572074967B270F69BD6F680B3E57
+69E022C9B6149512C5E89D1A37C7B8F3BD7EE595CDF76EFED653AA856133A6D2
+16E43D551A2BA3B3C7EEDEE3E07F8FEE715F8C016A3A8E2C8B7260102FFD39CE
+56DF7525657B9D90D0211A788F3728B894C0145C4400F784EFDD78E92E127CDD
+C6BA4DF9C6616729390009CA9FF343009BC9521D96AD6F9CE221DF061012F952
+E7773E5A26D7115F2A4472B4C0CA7B161BD32097569232718CC7DC070C047155
+2FC0ADCED5200FA5F02B94B0F8665E992573BEDE1B2B03C807AD4E35F8477321
+48FBDE8559ABB1FE205EFEF3755939A8DF1214E99A9C614A667234CB6F142DD9
+D7F5920171EC57F6C8117F5D2BB15C7FDFADC09CCEC1A10AFDEDE72E80A52AB5
+2CDD21447AA80F5079B1A759780CC43B5FC0D43275EA14E397C4FE4B4AA67246
+5F7E5AB85DCA5990628C5F7D955766FD8B04D9D669802CF94AFE57C4E59F77EB
+CD0597766607DCC7D4E6F91F57FE82E9F4F6DC71FAAAB891C4EB8FCF06FC9879
+9EEDB45EEA7D53C5716DBB6456084227CACF9ABA421AEDB3FA92D605CC083DB3
+F27E6336514A9B623118A54E51DE93F883211FB1B1A8D9BE8C35E1640D89EDF0
+DDC822138FEB852F92F4B4F8A96CC2C92D64F1DB3514B7AA5E04CFB1F58C6635
+70A30E6E1B5E44CB6F720214B5E395D2E7587EFB9F8B6133BF23B06CC69F4C5C
+CA15F6BFCF4AB67AC296AD10D0936FC92806CAC0EADC1220496EFCFF92ECA9E9
+339364E087BE72685D0265D1D2B95D4D68FCB447D2644AC1B0519D234358CF5D
+FBF1698BC26A727C97599BAD9247277A92998E3709A1021C93286349B1AE8E0E
+580F7F3C7692E55A3ECF2937AF09B1D782F90AA060E7200DFDFCF7869931E2CE
+30A6B5C582BD0E8E822BDC16E77B79F0335A4D413B3802186208162E06B5D791
+0561EC0D31D10E6970D9C28628657F68DAB76D6F406C104F160597AF104D4281
+6294DB0BF54A3A32553EBEABCA63B1C7E35459CEBAC533E1E037ED126B34529A
+286A918360B5BD1B367538594F005F4B34C345F2C6FC38983735E62A994C7CEA
+9666A2A5FC801271EE6490E0E5E3A4EBC5E38CCF6FF7ECA9A9914C5B66DC4F19
+975D86A284408E9BE33203A5BA782F7D39078BF626C427B546D8BBD4E393F6AB
+B561CA71850FA7B5E956BDCB8F775C39312874BE76101B0034540A3CBB5AB3C8
+89CF2BB95F43D0066EC5C8C7C0EEE42CEE53765C423A4E06A1A2FA1FDD18145C
+C1052CAFD53A84B62361066477C57D9BC7696D966861FE3EA79B753A49195C5B
+8E61B077ACEB6B4F8643366762ADCDD2D2CDD7744422BA22D778B9F7F391B5E9
+3D4C1431B772C5A9347B192CDA7CFCBE2AB0E94D22235AF74F8C3D0EED8560B1
+9510E2240F1E3D8AF8629D342B55C2FEB8CE118F8F9497295328AF0CB92F809E
+34E7E48BE95EC49653101EB35B7399E2C824E3420630399057F9B64AD2F3DFE0
+7E780EB7D7A22CBC732DF00512EC090AEBDEE13C29D66D8DB4AF2DCE7FB3CB53
+DD7959BD0FDE48B51AE054BE163786D2320EA7905B9FD0FBA31A558E3627495A
+A967AA4B19982B2D55C8417697374A602E8E05C84DAB00838EF855E82E049632
+B43D83E41E0055424F6DBC3CD104FF7A0C957B210DCD12B8BE3053ED3F7E2267
+01F2AE7136B406E5F1AC1A49473BDF8EAEF2EE3BA2B12029A3FEDEAEC99E8AC7
+AACB7C44642F4CFB24E7656AE620D3AF67E46547DA444A0428E5840CD91C54FE
+8BC58A7AE5DD00182AFC6B4ECDE7155C355BAB29CF11666EE405A7FD57888731
+266E7C857E8E4F84656D7663BACD051F24FDF9EE47770243F219656A2E6A0B1A
+17FF66661126B89AB2E23C4756EF639F5C482E85D098C0A90B03F6D5412D45BE
+4C2BCC48D310E937D80E5DD3E4743F356D8C2FD272B9599EEE2D27DD0BFDEE33
+54FC447A49DE6874C9F0F5A087AAD05464743EE1BEEFEE3683AF9A3ACF065362
+13BCAD10CE9CAD288EA642BE6789BC37F82C4D38F073D5CB33FCF2BB35937582
+9034BEE61F20E6A73A835CF9C0FD8481225B966BD79DADCDADE832C6BA2B3C10
+AB022100D029DEA9355973D7F7AC0140B361825535D189F04361AD41538CBF4D
+E44EA227E4965D398889D08AC292B00F48E3859D7ED4E17075864D286C13C5DE
+5F733B45DF549FD1D775436E4A2A5C98AF842FB7740F7BB58D0DBF2292AFCF89
+1319FD1B0764E7822234BA793A2D1FAD7208A574EED749AA08987435CD2CE663
+729109643992DF4A3C411FA46BA050B938BCD243135A4FB09A42F39B3B67F503
+0962612D243388AE25263A63638D8EF29FA9B7FF5C8D532C28211398CBADF978
+2D82630B86ADE6674FE7FA2D583B86DF883EDFDD9F640729A4425E8B348A518E
+1CA16E051147608AC08F9686351A67220E4741EB49F77E4C5568EDF5EDEAC713
+8B6DC7D31E5C398E9839D312FF3509E39CD6B4A5A81175AE67704D1E8A064848
+C59086A907B5951CDFCF925450F22985402530253D4C7E6359028605B306EB6D
+4A863DAD14B581DD2A7855F0436978308CA5704F8B93362F292A470570C7AE88
+2227C2F98E104D7A2472F3EE5E882764A3940D13E70DC3A70D0C77DCEB02D3D2
+B26FCC5626CD5086182658293DC5D1F02566CC84859040E2CEC9641C6F6D9F64
+FA12877DE33C6D1089CC7AFBF5D8AC4259B2CC12A7C3E7B69D00466F8AB0032F
+5E4C63594606A2EDD9DF34E6236B0AA10CC8C1EF05CE26E8419195AA1FBFE846
+5B287A23003744AC2C1071A860FB24B20E2EE413A94BC1591C32CCACAE0DA042
+675B4A4C612908E64EE78859EA44DD210ECBD01851352EDD2EB4C3F46EDB7236
+D7E0C297CED16A6A0EE23A188FC7D871CC8F2E40411CE8A70B218F00B6C300E3
+224621342EFBA30F6A3C964D6265810E941C0809854053AFC64543BD70D4F6B6
+95A46DAE926A017203EFF93BCDBC4F599B11AB847DDAF39624EA124A54B92844
+1164E8E87E99024EB0FCEC2A424F3F0BA397A1D3FDE5DF122B1D0CA76DF09C35
+BFC0289BC870F9DE010B0127DABBB7B49A37A1B550B18ECFDF97FF716B4EA9D0
+391C3D13C84221AA4B92049C7184D10DB406DB26C542008DCCDE7333EB1786EF
+A0CA1CB28566F1D7C3A973B761406ED9587E077033431F993F6C97BA93D9AE19
+304CB65A2A795A47674FDE0E53F86E7E983B5F47EC22D223C0E49AF1913F36EC
+76EABB1F3B1938554AC6DA19C882D7E2BCB9856735FEEBBAAF34185C68C1A478
+3093AF94A583A9F4FB60E26A808715CB777B74692CFC3071D3EB7C23F633ED07
+1B802D5EC257E19DB39192E073A9E84988EC8B54CDD9031ED5F296FAF42A126F
+7F1597CE1B8A203B192659A10DF6D51AD11FAFCA5EA20548ABD83DD7079AF3A7
+20D4685DD3439B41BEEC87B7A30675D7DA58A7994EE502F0AB165E5438AAD985
+B65F3032B2211A96421ACBD545263E51C7064E21E1D874739FA9284B9756F817
+F94AC94BA348AC6917E18ED90470B4DF20AA4E9E61A93D5D8226CBBCB25DFDEF
+D23B6AEB6853FAFF5441BC3A250F434BC1DA4201C002402A541EE8767F6B1C0E
+CE735074BE32512B0CEE38DDDA12C3AE00A80E9490C6D26003AF9FD671B12DF2
+037FD879A02678A692FD76FA97FFBECD577BF7907B5E16BF5ACE659A05022FA5
+242AF68A61623AA86F7179DD241728E6CBDDEC1E697D33758F8CD88415EA1983
+5C053D5AF02871C30E3969751006002ECCEEE8062C9DC97BC0305190C3386E16
+A31C3902B0B7E2CA22A2B7D492D5827109958823640FEA0B607F19C4CEAE11A1
+DBFAAFC4C42F4898546851621549A4F769B93A78DC0DF5F474C05FD991939A0C
+1639E8FE65B12DD11A7AD3DB911CE3DF79A8BCAA2E179E3BC58B5C0AA4CF6990
+76F90F8C7EC09A1CFFA875C63265C5F6A16F96A8053DDE0B8AABEA1926B1AC32
+9308E8428A1BBA407241DB09F8D834479AC2206BB2F5B5E62643A9304F186AA3
+CA03F9453C9606E22D04E1F5B9CD4F8300FD6740D6B02028F8F42DD171BBC42B
+3AE480477F1B753E7D76D3C72D3858BEE970B29DD3341CC373EA7BD004344632
+4E0808D5DC55C58190635238A8AFACFAA9EAEE4358FE65E17DC99A886CA06860
+906C4DA9BF158601F28138CA4252718CEC2231658E6502DB1F8E396F949A75FF
+FE4DBF1F2B49F8767CC3836EFD6F8F7C438ED86A8124F72D2EA3B86735CFE7FF
+D9BA0A6934705F7D338DB7C002C823BD668F333F17B2B980B2730AFDE0533733
+7E84843A2A6068D52F17A4BCDE265C6BD34828F1091CB0349723A555CE04C6F2
+DD6DDA70BC2D4B7D5E0E3A848E843298E4CCB3DB4F587569CCC43E38110362F2
+56EFE686DD0A25DA693E9089008913D5F7589DEF4B1B10DDF8535221D4B0CF15
+C05AFC299F60AACAF580779FCFFFD3C10C3F5D0B4EA3DD8C1B43DF311B207FBB
+1DCB2530A8FFA6A3836E4759A31DAF02B8E7340857ADEE3D827C43C414957B66
+AA41FFB0B9583A9B06EB4BCA97199C856B4C01B5897AE8F80AD2C9F49329FC90
+B58ABB1D76933ACCC3DF2236906A949F6FBADE69B20B36764A67C71812D1C91E
+48B9CB53E7F39295C0BB878368D170F9567BA2CC4E18BB2A475339611FBCA781
+DB1C4DB195D572FF48D72E3FB14C7F4924478F1F22C4234B38453E9AA7007AFC
+7E007F718C97C600CB9E4E7F75975857634CD939A5DF163EDA88459D1F7C308B
+0A9A03B901A34F81A8DD568A8EF7068AA45C2B71117B447CCB62B9D9477F2F47
+40D08E069066528991FEBB24AF15E3D0333E2D7D588D938EA828259E4E4BD0B8
+9697E6F24FB4AB37AA265577CCF342FEED3868FE1B1926A4016F0E1427344FF5
+15681D2363BF2F06255D4C7ED5B3BD836601FD004031C458E138C887FA5CF22B
+FA89BE4D74C58A3DE7BC0294D95714F1E8DB51178EA4575B30EAF0ABA4D5B082
+847F58210802CFE349C19363F032EB59CD39EB7EF8BEB52F811C9C0D9395BF85
+EBB88879D6CC1F1F70F4710A8B321339996FF8D125BD9B57CF4ECE9CAB813B42
+CC2D4072791CF9E13FFDF1CC52CE483CD3F2DFA0FE1B0473A414B317B8747E3F
+232E287B9B4C80E8CDB964A0F059FF01DDEBA695219DA6CE95E1F4D2BBBC4F8F
+F25F98E9E575CFCE6F66924FA6D5F5DB74DD1D221D77A76EC78E9D765651B7D8
+72FD48F3B74EE865D69BB2B6575E43B2B2B856952CECD9E2AFE4517801B1A2B9
+7F93FD3C69F1DB1F7A15ECA9CFC17FD40DA89C3FF8B5A2174D03F562556127B4
+6BAD807611CDB4819A17D32757C424F749F60D707A2FC4BD8835BB38E9F6B67B
+441C5D70D905A44663FB9AE787C3218785F276428DF8D1A3F568AEC0B3CC5664
+8857BC031F92980BFCCE300E3A6BCA03DA18BE9EDA0903F83D0BDC3CE786694E
+92C402366BDA3F07A339E229B3E915FF70FEC6C6F36E848502282524F9D31FCA
+8CF0AAB13B1C6D85A430A37340B654F34A030A922E79E88DD8FB877A3E4B9005
+B192D8AB438B2336CE4BD478FE17E78F8B50EF4BE1E3F35C760FF2F13D1AB0E9
+18213B933C60468A487D3100C6DD6A1EDC02CB61F33DC916EF33BF31C2C6A98D
+F417DB88BA308CE720D51B2738244585B5927885685AA9638445E5996E2B1783
+B40F0D46A144B2E02084E16E9353BFEDEB3F8A30422DE27CDEC4E65FF33C62EC
+77D4F535FCF6D0AF395ADDABE4104AAC6AEAFADA2F6EC6C0BDE25D2AC77B024C
+6377978004EC7E8F3CDFD4170E8D09AE76B8530038F4A8C91B4D6C87E7642B0D
+5EAD474C640AA652BC599AFD2770753960F5B99BCCFFC8DC49CFCDF8EF473023
+6664405C744B5F8575CDC27177478FE2A64F4F308971664F7AE7617A8E2AE311
+8DEEFA12FFDBC11F8FFD5A6FD2CD4BC0A4DD2FB8DE6A0B73A163CF1E31F62C41
+EA4262A77FE87FA34999BDAAD75BA2C6FDA7185546EFB1FD2597FBA5694FF7D0
+5E150741DA9E3FC1C8ACC79DFADA1561058240E037798E8FDE5F2D3334F2B17F
+14FF95E3E8DD747868FBDBF6E3A4BC4077CB45D71E183061B0F3866B779E5D3A
+6B903829C776114CF670247FCC89589B842BA2A5A74A1A1358F6F7CB0381529A
+CA76B6A36D6363F65E2088D04DAD9C4FDFDC99FE33D9328F1BD6CE2C9C5F3711
+6C9263B9E0E83F21817E100232681E1506561F358EE9B4F739C15B0DFF016BCD
+C9A88D36F967244C8CCFFB5D4F272F16A57BF56F19B947350C28983BE08B4912
+8EC28F93546831EEBC8A65160BB369EE0C56B1BBBFB9F8A9EBA76389549BEDD0
+32E4B1E2DA2635AD7D63B5BC5F445F07957D85B0EB9E157BBD66CCA4F0743B45
+087B68851A2BA50EF6A8974983F690685EB2BFCEF3AC590BFCC66167296C35AE
+DF975567D8B6A0F4633E4AFC9E91B8EFD406F83CF305AAF970FF54B5858D68A1
+813D70B86D7FC9134F448B74A118626AF9640AA94492259FC1EF62EABE93E54D
+4DD9DE2E1189B180A907CA5E7B8A50C764A5207E973B30BC276D1F344A147735
+500897FD4F8A9D8B10B6A8346D21F36D41F3AA36A129F1433E5ED9B3A8CDEC7B
+95C67D38479802C29E8720212A5B49136D3CBEE47102F7DB8A5F789522AC8FBB
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMBXTI10
+%!PS-AdobeFont-1.1: CMBXTI10 1.0
+%%CreationDate: 1991 Aug 18 17:46:30
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMBXTI10) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMBXTI10 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-29 -250 1274 754}readonly def
+/UniqueID 5000771 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D004B836D34E88C20EEB527CE1124209388A2DF
+E27A8DF298A2693A9D529916AA0B2176E6ED237F69D84A8FEEB36861D1847207
+BE2BD61C6A412FFFEDFF13AFEC32AC7735BCCE5965F5966418A62ECB99112AB3
+3BC938EC590FF6922659125EB67E260BF02885E49BA6019E696D33F0B53606A2
+F515E0C45F323311613A94B838491BAB9FE230C5CC79D22925E3D882799F2707
+C32975A494F0F9513E4D8332E7E54470D9721FBD345CDBB48286F2F19CC6D66E
+BB631DD6476A509167A49CA525A72CA50E82C1D08C2B372DB54C5949C753B632
+2009B761EB90492ACD3CBE6A35CE1B66F3BC4D8DC36827CE4261A703328451D1
+879438479917C1647772999171DCCF1491A1C9086E0C6393506768F8757BD81D
+141C46EB9BF507EEC29962A0072B6C5D8C8588F3D68886CD2606DD3BD2FECCEF
+63245494E93EEA12AAFB06110E54ADC444C7E7619627A48A464394E5DE06EB46
+4C76A2FF010318BBE48B3776C826A265C66515717F7F2E943C60EBAB23D96B5B
+FD514A1C4E79BB3D3D2DEB936F90CD3FABF7B09FF7F564AB5CF4AF6A40E869FD
+395885A88F4A138B3CA6943A2D430BBE43D91F7F17621CAF52FB7161DA3B2003
+82244FB6EE792DCA1722C03392C296C029A2DCC5BAAB3EA03F8DEB039DC83AE1
+763AAB84776A2CCFFAE9EAF0BFDAE417E8BE682D237FFEDAF224AC09C9665019
+165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E
+57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED
+E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5
+178DAA785D1D07ABA0CF10D5EAA01DEC75A8E2AB7078739AE6DB72059E81BB9F
+60B94477802ABA2170AB402D5068CB77D51AD70E99C0A06796C02E2F660C7210
+5E3BE6B1869BD21F449A067DE5B036A728EF55A2F8215593A04CBAE7E8F7C81A
+2ECCCC0FAEDCE2AD4BF7898C099E0A939C64ECEA03C699152B39C68BAD25DBAA
+AE48EF05B3D86667ED1C3734442A0F88085DDD6C1ADEAB6B0793BDC63BE6126E
+9E3EDB6AD3C831C74A3357E1CD9CF408881049E4C8984F4F43E40AADCCBEB69D
+97EFFC17ECD13FB6A3D35D003F874FCBB5B6ECE7FF5D82C8AFB0AA48E9C9FAD9
+77763EA6C4814406F2FD97EFB57510AD3B80F2111FB74CF7391C988DF02810AC
+340065D6CC89F97D30464371387361D6991F62AF874E81BA0D4FD9C4F2D631F3
+38BABD1359B1FB10242B169FF038482F253CB78F5CCA92E3A9F45310CFAD35F8
+79DE5987993078CC0A6441246116236C05DA0AEE454EB7E200A9FE825A21D096
+A0B329E092A1708248F9B9B602A9940B436107E24CCB97418A10A31B036BEE22
+8DA12B890840CA7F79C7B7E241EF4439F61EFA325A7611389AE1CEC499DDDEAF
+A7F81431E0FA8BE4BC2F40AC2711D926E00C75C0AE4F719954A9F60CB60EBAAD
+65163AC3FF882C977A260717B43AB0E31786474798F19472CF45CBD317BA9EDE
+4BA94EACD41AF7E0EDBA83864250B7BF28FF5A281A8D6A265D3F173048BA0383
+532E48F0A97E07B6D4654BF589E5156DA03C8EC6B39993EEED4F9E7C43B10E94
+3AF7D96037A08D0758759637ABDF06CED464F16021E17B16DC2D901DB27271EA
+DD9AF56FE559561CB46E3CE5DDCEA083205D5DB399529CAB033E38AA57E405DB
+9E236FF2539FE590E8D026B14108167876575E099125279536D1BA8362EB6DA1
+21311C1277B4E73BF031A741D36EEDADF4951600159B47DC6B274B68C62CE169
+3B61D2C4EFC44B48E398BF9FC468D70F37466B70E3604F035FDDA8D04F9C8863
+4B81B996E61C6C990EE66801C8820060E6202550CA231E23F044BBC2A20EB3E7
+118928FBDDBEE30BB397FE4F600F87CF1389DA868A1EC5D39AD90025EA5EDC0A
+E45F1EF4E7C3BDEC340436AC8030916B8AE853DBD6BD84A50739D3F9DD20AA70
+868E887827D3E238D013DD47D9DE9A7B39A7E985B8FA87612F327F7252878E8C
+2ECD29AFA5E5C57FCD5E63AA2536F3CF6DB829EB776C50C619AD0090A1B39E4B
+4BE3DD622B28C20C8EB482492BD38226718FA7B7BF945744FE1356C2EDCA3CDC
+EDA26048FA3648835AD714D18D71
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR12
+%!PS-AdobeFont-1.1: CMR12 1.0
+%%CreationDate: 1991 Aug 20 16:38:05
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-34 -251 988 750}readonly def
+/UniqueID 5000794 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
+68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
+3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E
+59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28
+51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23
+DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A
+AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F
+45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31
+821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE
+96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D
+9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379
+26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4
+140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213
+1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498
+1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB
+377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A
+0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03
+5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4
+ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15
+FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CCD991F6B9B6
+D3F6484333FC2FA96352A9D0212970BFA7C3546692557505A152618882518E4B
+E1500DD43F54F31204F2419907235575FEE2B9E7E49A2427D48C8330B4C08A23
+D34ABB2F4C28B59600E1CCAD217606B6B4760E2265F3987B5DCA69E5635A3C09
+7AB729ABA2100A75D47E36A3E9E03FEA5F0653C24F6E45496C14A86B344DBD2A
+3A310D9510B8DB2244594F5ADFE2133351778D79E548C04A16E224FD1614F1F1
+F047F15A3C02E03C718E8DBBD00D9B4A6F569D346634D9F1CBF6C86A1EA2FA8E
+8D9DBFF70C1A6E1F20FA33F990FF420734ED9CB4F2373A6B21BB79FD3976278D
+D319C2B1B869D6EA7D03592ADC090EEA46AD3F2FB9895FB5D91A655AEEE7B809
+E1E8552FB67BAEBADA61EF209C41179DDCCB9E14F54EB7A61C68E1E2870FFD8C
+04B27C336EB4ABD8E29B92263EBF7A0D90B34BC0386AA3D828703674FAA97D83
+9B49CAA29A4A63BF5C490C4FC890F221089985C26A5BD01445FE8E30C7676DC3
+8576FE008B841493A1C6754F64E2F1C17E958C88DF2A946D28C40DBEDE02F939
+8673D5559D6F4C52759596CF2AD58222554CB3A646DC37CDB3FA01DCE39C6F05
+B409B96B82683F906EC6CA306654EFDD951948291B05563E8B823B025F0BCB42
+E186B990259DC9097CDE73DF1081FE359FFA337BC0089F9E4BB51CB901744438
+04FCAA4E6B75BEA0347988835BDC9557016C9EDF62AD0AF81B2DDE6E96FE0F9A
+5F493404930437C98CA7B6E5AC9F4B9607DAEDF169C0C9F092DCBC516C0C8191
+0209C3876B69B61E1EA8562EECD2F8F33C128FF8817D2D87F900A9E30328B07C
+C26CBB8548E0F210F621312E8302746EE2631B4049CF8ADEDD938B1BB4C37546
+81B98B1F894E0C46280292067A66615D5CAB13B5D1F360680CEDE0D1B452A428
+8AAB2B1562623C9D2FF605F61AE07DD7C122EA5E6946374D27C32ED7B242E32D
+4332CE71DB0C71708149FDC2971A1C3B77403E0A027759D41DCCA3D99B25A9F1
+4CA0B81A128F9818E028FA719DBB8AC3DD7AD199D986F30F0F3A0E7B614C2C1E
+F53BB1E1EDC3C7A405B9123924E89208505CEAB0788B5F8D479AC0FAB9DA0B0D
+55703E8EF6A7572373913D64DFD8B083B9A0827B0BD14FBAF34E42BDB3D5FA99
+AEBFB4FF8B8EE02224737E4CD40569C4DB3E35B64CD671F7F9E830E155CAA0A2
+68FE0DB3069CEBA81E4A7A1841DC0A4FD96C92B059253120CBCF24266F3C442D
+C6CEFC7D4EDE76A4923198F3C6D54E6B8786C69B2CB12A4CA7528FD81043D053
+80BF4254424CFAA573AA0D1AB79E22C3AC5B1D3F5831E90439E55C57337F6B1C
+5B66D059BC12947F03FE9955DC38BD01ABFF85790F71F5ABE32870B0D81B87BE
+69840BF8119839CE085854B5AF2B3F92AE74C0ADC0EBD24CFC1AC6FD7734788E
+DBEB17AFD0AFD817659F5B7454A18EC8CCA8B761EDF22FA69F4B76C817608B06
+1629150A467142EC53DD7E7C9918DC7A51ECA22290B3B06344DE2DEF4C72EEDC
+05C7F29B1258DD18C54177EBD671B2D1034C84514EADEE051BB8EAA4A06D0EBD
+D4D4A7EA0A0F56B254EDCD5C736F23BCBFFBFDBAAEE079EA76A2010D46E0F6EF
+9EB5F2A481374AE885011AB72F99609557C144E666BF75C0CD55BA5157DD3FFA
+C68A20722852F1F4A2506B19C08EDB8FAD96374746FB8BD39A133C41534A3BF2
+52C68975821BC5A719EBB7B5A0B595DC409A3FF247B3B4ABED5F3C8C18385938
+5B18583A3FCBAA7C04741799A4764C87BDDC6A2071AE98203FFCC6BDFE03F28C
+99173292F3755DE5A4FE8EA53FCEC8E99F5962286016F4C39344D3491B12B8DE
+94AEC84AEEC44FD274C680C73C2B82E37A24443590E19B9C89FA3B042CF3AA9D
+B6618C2DEB9A340A68A6D4C9F457A082B0DED6CF4FDD2DCA0A1A845E82BB6318
+D036084C29DC98104F060363F55D12B4D22DD50D736B0AA2F8C4631787FEF388
+60F491D1E27DDB23DD2CB26A926DC66761D860BD97E4F649A09277450BCC0637
+461C33C46618A35B1DCDDE6686FCF3DADF6FEEDDCA41A38C8CC6BC35277505C3
+5A5E20E9A0D194647C295573E2A67F50400254B8FE01DB8D48A145D761815BE2
+3870D9B47B46A70CE3653892DB110510A986CDB53676D15C8FBB97F17C89F7A7
+5E3354FF8BB480647CA5B7FF8A478C40B7323446591654147E3CC82EFC92A164
+3478A587D10E2EFBB93C08A4CFE75BD86C7E902DACAAC0B6C535AC6F134A19ED
+4111F3C3D22A53EC9C5E1A9ED852CE100C19716C8E97530E4A8044664397FC4F
+3241879A06C8B7576AB010445584280D0F94ED930FBEA8784BD675C7AE58ADEB
+DD47166B69D4E0A58E7AFB614DBC0CCD430CFE90BCC0C4E753A0DC3DD4DC5D73
+05507F0B1FB4B61F74E6D77BBFF74FE192967CE65C87A5207238B38941C81FBD
+A60FE78B400A8B4F2E74371B5A4A0DC2A90938834617FDC34293760FBE172B1E
+61D1629D65AA9B4B3FEED37B089C221C3698D04D1BEF6D517920954159135C02
+D5A5310DDA47103062C0A986C375E95C70FAA5BD376A8E6E723ADB29F7582B07
+4B5C3D9C55E38A3530958F62C8C2FCBED0B3CA32E635D387994072393623447C
+768DB95318C943C7E43753980F0C839094B2E6968D16BA1DF5BA27C3736FF69A
+9BAE60B821DC09FD29D7F3FC84CDC688C8AF2807E83903BCE5E8B982B63C4D58
+F2FC243C2758AED4E717804FD6E52C1A96FAED8542F1E63A73FC303492906291
+05AD13495EFB787CC759E51ABD76716E06B403846D0D1C8C0B0EDB3E6E638AAD
+260F49B98A1AB12788C0D25ABB175D28FBD994A35F864F08FDCC476805E316D0
+A4F593FBB461AF38C9239B69954110352691DDB1C912D4227C734727DC8C78E3
+F5E24FDC28CFCC23EE3803354C5AAD2FA161FE9CEF5815B865A9046B06F98737
+256D34EC59FEC22C3F18553BDA515EE2DA7DC248F40C329B0A9C7C8597E9C24E
+F07A4DE00FAE0CA876FA9D1255C11D041B7634EE1B363CE54BD73E55B6A8E8A7
+AC379F420A8B1BF9EA968991B4E46E134383ED9F5396EA7AB90932A82A436EAE
+757F43B992B6BC6DA5B3D0126BE0E746B8FF16104751CADD782556384FD98269
+81D518A77FAB94AA3DF4385237B729BA4D4EED8B7505191D89B557F0CC681EE5
+37A5D182972BF05F30235367381492BE19BD53B4EAE76ED47E8DBD746BCEFDE5
+F87882AB30094F254129BA06C64F0E67A6BFA78404F54DC7C371BF4AD8E83A16
+6255026E5CB4778854364939CAB6952599E7219BB422E258D4074D3D68397FC5
+00C94A650081C6CF1D91F7CE9A3B10D82207577CD2B142943D8FBC19E4F1E0A5
+BEDAB90541E356CD8695CE08A4C0CAC97BE2664320EE4AE27143E8B86BA37D22
+F48B2CC14B0AEF1EE4DD2B9504A536E658CC70319A7C58AF5177987714A9F3D4
+27526B23725449EE533AA243AE8EE752118C799C14DF2AA31ED34A8E0FFEB286
+177401FF3882AE0C9279F632DF8087CEEDAC5A4A0355E7EB5935C821B7A3F07A
+454B834356D5324D5A8577A2789DF5AB2F098112A7C628CFA0163124E5CB4F7D
+783F56CE008759ABDFBDAA65E1972974B875FA64D1B3A51F96F027966EDE0892
+59A638A1337EF689A941ADE41CA961C81F82EF35C4EFAE92E2102965EA6CDCFB
+B9352F556945C4519E2694E6D2E065E1EBEC9180D9E7324668D451D507BDEA3D
+B0A25997C0664EC2A1233D0F0B4ABD3E3826B31B99A6CF3B99D8A17B428C09D3
+C7E00E47C6906A0A1C32E6AAD37EF765DC6E5C9800353BD35C8777478B5E94E6
+CEA55F19CEFEAE9CE72DD6C2F03F3EB5D9BC510E57F7DB39971DC4FC526B5294
+3DDDFFE22269BE96C8015A1225ED92B2BA9D2A963765E24FEA57788F012162A9
+12F4B32F1A0813B3EFC3EAF410548E2CFC734F72EFA62972F3A50676E392DE77
+AE295CA752C01CC6FB4F297B86C6925CA6C4834EA891649954057F5CFC20DBAC
+3330E66A54DD51C54A2F5829045C78B12E77A04BB0AA757DE7247EF031308A3B
+89923AAF0E39B5397FBBF07AB307818E19DFDFD98B4C7DD514CCC9D2D4A02567
+A61A0E3BE992621A6538119D5D1917907ABA411BBDC9E15667662A926B97BD04
+AB3628FB09AB5F8821BFD64FAF647C14143FF471DF66187884A1B6F2FDC07598
+BA75F609811C5233A00DB44420575804BA4DDAADCD4C530673D72195FC625E31
+60BB9967A3DFECB8FCF594E02849BD0D8305A35312E3AE8725877045A0A52438
+2353FED3AEB7FE3585DF9FFDEA45F6AF55A4119325612EDE3671F474F0A23304
+27622F47303ED208732F7A036A9BAB5C2E58608AF6868D3BA5E988FC071987A3
+22ABDE30B48F1B9F4B59DD44C3C746F3FE82C47CB656B2A411E4F64D0FD02B40
+232EA4870C87890EDA3768B390FF378F406E40A7EFF8CC027D0C75806B0576CA
+B809D354D4B800193482AEA49C742A319CBE4EDDC9B955F4BE17572E014289F6
+B37E0E0EC1F0D10594B3681E3691AA5B5E6D0BCCF305AB5004AB926D1E10ED18
+995C7D5CEEC0F51C9453F0826DE15758E89870D71DEF53F5FFDB080055D6386B
+017F85CA295FFF920F7DF982C34D6C6DEFC2A6AB344E9C8272A4B58B8F9EF364
+77ECBF8EBD88A8570B9FFF76F75E1F2A7D8CA5B4AA9AFC6240EBD08E06095431
+BA7610E2C23DC7942F80E7569AC8D66DD78E5238E61BFDEAEE84D3AC2D96FB06
+79016A4F8C13DC8E881BC6CD8F2807C17FE2211C726E22A30A11C1F379F0D012
+0FB0F63F948FDF4F2E7A640A35EDBF0F95D1B8BCDB8BF6292A00149BA48C410D
+295DD79E06C1470371A38974D264E60B689B12F33F5914DA775094A1E056D255
+9797B51FA48503694297DCCAF624AB08FF9C2379AB3514997173389DD3902C95
+D83B928CA322B98A223A9D7E1A68F6E2D512641D0CECFAA3449FF01F99866BA5
+BC0CF58B8DDF554E6818B58908C8014DED8C7673738C5F9DED9763C748234DE5
+48DDC8E5836B0A0E6F3DCFB4BF19BDF37EFEA6EF02A82CB3D5F3948EEBCC3C87
+72C4899808AA085E9E82C46F0988860FD08E6163DE03243862FDEED651A3DAEF
+4D057BA566110368887B7339AFBBC1794D42C0F05627F540715DF5E55B7CE637
+52112772E37F35480A1839B600096D342E27558DB296BDBA1E81D8DE6BB40A01
+65164571D3B04BCC3B3F127DFAC9D7717E5B236A1D66AEF39E0295F6BEDFF138
+CAE95B90C00F2B2519C88102FDD67CBA3F8D0F60D17A8433EF52D8C8FFCD37E2
+0B878DA9988DBE2FF5276938E5A40CD9BDD27D7E06BF89CEF3A33361A638DB7E
+E522B43988D5C887F91B7D4E7716920A536CC2A2E114BAAD53A3ABCAEE36CFEE
+690174BD078D25E6E3196B6BDE570CC0BB81521776F306745C7E3BC194690D22
+A60482CFC7B268DF063F8B9A8CD6B9D622799BF2488B0F0FCA2A1BD2DB9CEA29
+92D7A46BFAA2DCAF3D49A822AB8881E852E2D921D375609E7B455955930DABC6
+71C4E6BDBE4347279EFAEE48AD012BF0E245F8420C18A0BBB783EE5AEEF94268
+F69DC7F0B887B69D060AC34BE088C34B2339E4D6ECBA206A2E5513DA5AB84360
+34EC7A213F2C73477A17349C14480D7E5217EDC14BC4A19F90BA865A79E608F7
+609EC6DB6CCE91BC646C031572D02E822835BBC5BD1CF283CF77557FDF99C482
+4142024DA7E64355A36863B43937D4E3493B6058FE9E9CF35A84D90246EDF0EF
+C422144A4EA9C418828845540BEBA1AF2049F154254D9D2678238913250A788A
+6FB855A291D07BE8D05BA2775161AB2C2D6C177B874AAE398627B6F731E9B16B
+D9DC7ADF895A85AAA4D6C8AF88D5FAA8611E81944C079FA5271C7667FD2B7915
+F0957DBBB87D694DA97EDDE9182D31406E714E1746C2DDA7262528753F7ADEF5
+D1AFFDD0276A96B72ABF3B31F1B027DD2605CC29C9EAF39124FD85F0FEA861B5
+4DD12FCB704A26E9B6EE5FFA102CFCA31BA68CB8F5286DE8977BC2FCA464CCE2
+355DEE90D69056F69810074ED654AD1D164A1058A076A4117243167BC2048C27
+E0642BFB8937447B830C2BB893A9D8F0706D545CABC8EC7A3F93D405415BE785
+BD931A7BD94D763963768980421F25F7E26BCED9174E2B156EC63B1EB142774C
+14F51327AC59D7B64AB11016E209FEB5E10B08B7BBB722CA492C65FB1FAE786C
+3ACDE45D5517D6DE8D3448A8681FA94875C51B701F743249BD351736C1FD6166
+60D994EA893A2FCAFC49BE2D8276CA4ADC19EE134EA91126AB47F1C3D9BF3CCC
+AE9738CD23E7B73F98B73A5040E94F34841C114AC58FBF9E8BF6E0CF3185E664
+CFCF9075C4B76F255F215525696EFB65D9854235D2A332A54B0C04ED4703FD57
+77184D86686F52EB10AE3BE6FEC3466FBCC7D761C7720FA8551B2DCD3421FD00
+D9BEB0630C0F340D743C149447B3BDF3BC6AD8AAE58BADFB52EA60EBD37B40A6
+FB7B8C87A305E742F1EF14747EABD3BED3BF18A2DD5FE0EE1D9661E4B1FD5DA3
+F978B8A4E3E881A61F9ACC74678C04107015FCE889AC23E303551AB262A5D73B
+0194B4062C306B75B37F91899FB9D0D5EB6199273000E401042DAF4AFADF623F
+EB7D8076B47AC26208E4418E051EE6A690C3B25012D640BAA099D128034E3E76
+8C26AEFD341B2FAC6B6DECA62643E83FC9CBA2C36311F767838792E523010FD6
+0C50255EED8D45A0068A62E2CC91E3D9525340ADD3251C21F2391F0D292AF6CD
+5C829FA558F05A032F77B2EC4318AA6EFA7B9E4F6D119869F7F080224F00C5D0
+574CADBF82EA169DF9A03E3E6A3F4774E31E788881F3100ECDA8AADC83EE8F96
+299BE73717BD80D5957374B63D7CFED26CA144B8E94882BF9AD6B0EB14EFA96A
+EA84149EECEDF255017567E73BD999B2B2EC0E474B56B78147494220E52E5BE4
+93D5C931B2D8F82C15EFBE85EA88ED235D4E20CAD8987E87B4F6614971A5DD57
+D84EE627B166EC59D3D6DEB8C63450B3D423F316D99D2D11F95D47BD074A7447
+2CB663BDA770834F62D486226B65271D71116BE3C5F016278858E3C3B9FCFEE2
+A654B5C42CDC653231CE3F2D99C4DBF6056D2EEE46F2E3772B88C3EBAFD0A722
+0D447C9F2A801D6711C580B836A08217417683684D9B6AFDF16D97EC3B510041
+B4079092F393151CEE397F5AE90E1561F3C608DC3E7594074750356E4B968526
+3B4480D0684A7466F4B23972F424E256AD1F197FEE36BEA6594624A23753C4E4
+70A26091CBE9C386414E42E68EAD84975B9C3996DCE033BE38F0E277C502F6D8
+3E5C0CF4F242CD09F405281736AFBB24246D779423959A56AAB8F07DA2CF5F9B
+7E37BE81222F0BB9077F339BF4400DDAF92D48428E00783255488C8F703534F1
+A948F13D994E84AD4B4A676627A319A71CB974DA124912D15DB9EE85E44E7475
+75C1543FC8F7448AA46DFD49C639BCF2B047B30FA99C230AF1351BD2CD5E6BB6
+F4394503272E5FC9D109F07C8737285C51B8BB33B0337D03C565EDD84FEF1B4F
+87BC178FE9B8B886E46898E20602BCD952E062EEFF9DCABE57A6FB90601BE22D
+9873635DCD84A9841687FCE87B215F2853AEE5C89ADC684D3B7C0A504F06137B
+523300B7F87E3513257C6E
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMR17
+%!PS-AdobeFont-1.1: CMR17 1.0
+%%CreationDate: 1991 Aug 20 16:38:24
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMR17) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMR17 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-33 -250 945 749}readonly def
+/UniqueID 5000795 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
+016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
+9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
+D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
+469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
+2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95
+A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801
+BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96
+96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC
+9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7
+E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A
+497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46
+4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD
+3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF
+B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8
+C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216
+9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F
+83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25
+A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B
+246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A
+7736A960F72AC01F733A11023832CD68FB6288A5977743F6F3F23E0C1657CF5D
+E8374835BDBD2DED3690C84A1EBB8E2383A5E49E610B6F5F0F5F5EC43CFD16FF
+24FEEFB92425CCB577E17FDE4EA6C50E1448DC5726A21888E25B6D6B52DA3D3C
+E4C4C6A73C176DFEB60B6B6191B336AC4F5BAA123E1B3B6FAE4B3FA9DC8F7E39
+335277EF2294315BE95F64EBDB1F393B293FD0FDB9DEE6C89082232013130D28
+9234FF12DF47D454558A1EE8603B2832772E5CA07D18B34A4763D5B890F7173F
+B8FD35055DA892F1421B41A253363DAF6A8CA629D7418A5F24472C93DE80FEB8
+D265AE6D1C4D9A0C793E179E0DF43615F51F43BE3C995CF86CA6D51453E19EFA
+90947D9BEC02D8F1F07EC746890AFB0DB83F95709CBB957844D61BF49D80436E
+CA48730FB82EAA840F71ED5DCC27299921B6C16297230CBE452C966FC7B465D2
+D778616A2579ED8CA19600061C7C39A844FF2AA4FDA48F9563DA4CB4EE36C062
+579F8C81CFE8D6A897B6B0AC6AB68415A74F858119855B6DC559924017D62D41
+1ED8B0ED3D0E888AB6A3EC599377F1E56E2ED468E10F046601FDBF4FED0B09DB
+10DCF85ABF1F06D3AE67B7B8C55B6BB151C3A3760B4BF76B8D183CD32B9CC916
+472AED90B888FA78C0326D618ED4A900B0759352189ACBF311D5DE01E11570C0
+1014FA1D30FB24143DA316628DED1AA13E38FB77FD5FB78655A7281C07AB7304
+67172C82D3E79E585934B8FFFD04A8B754D21D72137A6DD203C2D438DF9FD760
+E8326A889395821E63BFD2649D1E6658210FAEE1D2643FCAAD2229185B0E5778
+0F942A657B03ECAB26E6CD4CB64A23F4B3985018C5E0472C97F8AE89372D6D6A
+799742A1CF5721D8AF1F2AE2D0FC39F29B8D8A04D51D02E47D011EE90C7C0E2A
+53489B7D760F21DD60858060513F75D004D4DA6F7D0BB78CCC8EF298786874B4
+A2A7C6616AFDEAA1BB2046EDEA6C06D4AF7744F5991C6C2D9075EA776119F742
+35059DF78FC559B141F9581B1B99020743944605C330A07AAE6CD61129BDD10E
+1E08D2CF0D5659409362B8ED1A4F4B99DB5FB231670033E8553A248DD109064C
+14969D69E89EFEE0EBB1C3B53DA521C2C9253383C12F40B7E8A98D58B7B634B9
+9C47ED2285BE5716252164937ACD39A8B8E836FA55C6AB942CFE0574BA76B46D
+F9FFFC8ACA91A7BA13634A26EF7C9AFC7AF9B845EB5464DD04B95E7607A2B9D5
+640A759BAEDFFF92ECD900B00DCAE4D56F1F3AF2F72FF88B7839B3187CECB669
+8EA626838DEC3860EADBAAB5E68C99E9E784409BDA8259D38CFB227C8723A85E
+C29B6B578D6CD6DDDB06C79B260EEF38CE7F8B4891037E914D68F6970056A083
+151F4D14C9AB29069FBE8DB496FA1629399FE778F48F9A6734C90AA106A8911C
+01009F26F799BDE2FA3FC42FB98B07E6143AB49782D161E2F932657487771976
+CD63733222A4429C8EB1B75C26CBE3B7428CF4E1E85531D36C69F750A11B3C58
+0B0F6FB1930D49A6BEF83BE815198DAD424606B62E61317122F4E6966A23C64E
+0F8A3E638324883B6F2936C05F1AED20FF1548AB2BD80963FE1AC088F09F3DAB
+CFA8173C37DD82E6B8A9BB5D2CFD225EA3BEF584B245A45FD30ABADABB9E8119
+1D3F43D155761EFC4858D30DC066A5065266AF4468155EA9CFCC8E7A4D9791FC
+811815A955394FA3D3C80C3D6AF628A379D970983EEE01B15231767F12B6E462
+CA7DD5BBE72AA0C61DADA5057FF54C17871770BA3C5D8D1D1FBB345D12B4BF33
+43973F18F8E5595D1A4624DC208682C70478C952F6DF4796BB33C2681A7A9191
+89805387753569B1DEA1953E8069C9A1D30F0405D3D8626EE369E61C6D7EF5CF
+FE31C4001034226DE6072B424EE87F104BD7CD6774B1F92DA7A7738BD250290C
+E8F238691E0DC9D0D040B744DA22D35F2224C682F9566ADAA200995E63AB3B30
+BAA119B92EEAF05B65A49BAC65816B83E58A375E113430B783CF41C7603B9E03
+856730E3C0AD420E68BC68E3D8413B30D58EC378F34D76CA11AC00A621C9206B
+3D72ADA80F445121C0F57F460254EB6BEA290DD5DCCCB3A1A3D806404C7E4684
+9ED8E2A5A0979161E0A34F2BFAEE6E1F56CE138286EDA7F3832B419F4D46E56E
+849CE0134C4153D32DB9E8DA19EBCD7641244DE90BC54E4BA1F26F2659E10654
+DF6499B67164084D04C7AC61C08E56FB32A738D5A8AE37E33748D52130B9C051
+68521D1F7E3B429B669643041BAE84165B626F3D23FE80AFE3C1C319CF69B110
+B7B8A0101AC39A8060161BEA05B1F9209EFFBA8EE50F6AFE55F9F982B97A0205
+3A528A7B6735FEF7E5EA2DADA54DCBCD02E4DD4B7257DB2E30A9F1BFB174BB71
+E4A0CF1E32D373C028488E1FD8E6A1354EC9E2D27ECB44BA3B79893EC357367D
+3F79586BB591EDBE4E3DFB7CCDCC17303277EBE533F81A08D95F0D8E0364AC94
+7D679A257594436D79396D2F0BABA2863075C629274BA962ED0413B3CE58422C
+A4CFF46B6318116AC1191C63D861130EC1E774BD373D8348563D452AE0186BE8
+851FA4C772127C83629B59705CD4AF9311066BFA64BC3E1DFC7A178C4AD1D3D6
+E30F9920605E0A4382D085F839DE09CFD856B1BD9654FCC0716EFBA10F135A80
+9DC1FC7102C57BBD96F5319B21171A068F68FB043B6565F92A17A72768D8EF73
+1B98A87D4F247E3CACEDD25D8DFB1C2E318B758CAF0D567F74D629D392475010
+DAE02422D85EEC8862E3169B9483E4E567E26A0903E357C8BB19DC1CF0B676D7
+6E70E7E0B86204690F8C5565AC704692776AD5776C77BF3063D9AB9ABA12D778
+717F32C9A1B05205AA650BC8BB076A18424791E8D73E86DB3E932E63D6578C98
+6C9B5F505563E829E9304A7987C419EAEAA8A05F65EC14102AD63B9C8820F777
+A0CD4539EA0595DC66017E13AC2CF77E074518D7277ACE3F5FEE1A1AF1DE4773
+EC2D12B184C529CF05A84D12F69723F6925AECB8E71B893981C957CA86F3FA7F
+107C93B2A29E7E9BBB757E79BDDE1B1E14BA1277F6E5501C981701D0C6A0CAC5
+0F7F5115AEA55B26DAE3ADB632A04933EABF98D50685A5CE0474912D73B37F92
+94B3BEA72BABEF72605A3134B42EF73C732D7735A9C3429D2835085BF0391B07
+063A8346A999C542B5BD16FAAC9C78903E6108517D1668967F0CDE9182EAF7AD
+67076CB13CCCD666B513797FF7B69C1B158AF07763F235911B766953025A6CA9
+9224C1E2328F0D3BA75D167D819094ED21956EFC7A3A4D89ECA70D9B23F5B7EE
+5A0F43328D033DDC80C3B1471D7C4F7E1E2136298F61CFDA7E369513F70A5C3D
+F9F2CD7E2386DD4ED63A31F3F7E89D5F0EB9CBAC1D01CEB6E99409B5A61863FE
+86A7869F73A8C9FCF38AFA090193B862E22EC4C95F13723B69097FAC2A2C601E
+F92B2F6E280DC30071EC0A40D9332E574834F311ECE6438279C8038E1B3AEC9E
+E2AA6D6B4A8178B94301797DA673A9EB56DCEF30BBFBEAE388810AFD5A683AFC
+97DE1D2A272C035A306F45C5896F83215A860CC6B85E7F56C1E1DE9017EAF837
+B0F4B2BA28023A3C9A3972A005735278AADBB3D3407C247B36E5953F6354C2E4
+2E898319488FC8FD9F3C3C803B86B323E9581F6849F1E89899006430E4EFA845
+4D2228B8F4298A3A839AB2BA87BD6A19140043603C6D9FC853C945ABB50257C3
+374692908AAD8D3038F1D3AD92F73F65F821A2860D28A583BCBF3A1DA7002D64
+569AD206D4668D511F9258AADD542B918E601C856BEE1C2A3C8A9243BE79A254
+B803B32BAB7CA843A58CB3AC45FE5AD6486A16E1B93BA72691BDC8A9403349D6
+DAB725C5D2BC6667385D5D911F68CEF3709159D13D9EBB033B75DBD276DABCE2
+E38D9C8F7C21579FBB5641A2CD13EA270407180D7C521558F9661828E5257954
+9AF96036916229AE97E64FBCEA2F7970B3A2EFA974A6E1B6F70A63C9A87D06DD
+B8FA54DAFB3982C21F0FFEB66CBB1F6CA625AB655F093C8E547B9F38B10733C0
+09B3740F4D35B1D9A8B3960670709D165CC96E2CBEE6D178ED30A85AB54AA123
+74B86C4CDBDAC1880F5EF1502CD883E5D1A1AD911A0BFD2B9B76A0086A58F071
+E62136784234FED9069AF0E761A8FA57607C218F901A0B3625F844B6CBF3CE94
+97985A9B0F1408E9036BFD3E6475CF66E3ACF415711177F1D09E1581077C48F8
+09EE84587077B1016491DD6D0B5AABE6B7932ADF8EFE816089F5F2563F8A1CD8
+6F5642F959A7632102FC9DA1F3565A71FCF0A6AAC5AA13EECF159F0FEA3B1667
+7C27A89FFD84A2BAACBA48722539CC71EBC6F216932EB58805CA450CFC4DA996
+198738CDF88188F15BCCE2F61673620615E42E31E29886FE160BF10D7D5CFB36
+5EF8D205C9202195EAF699E00047A1317FE973F6F60687589FB0B16E92628B9C
+561763BCE3F687E36A01813CAC93F2DC55D35A8972E2D16CCB871800F526E4C5
+3C8FC02E0D41220FB6C1DEBFCB58B356135410BAEBC034C366DCAA4850F5C106
+788CBFF29527FE9D82B581A88297B539AA8655BAFBD87A026A8469B3F7BA114E
+111C3F8945F243DFB0D08D4EE3716A05B5A695FF9DA26619F232E795DB891043
+56C37043531CC0944F917EE8E6BCF4008A9BEE3DBE7BA8C8581C321EF4159971
+F8478C1605A76725CAA2D6D04BD6C3985A4185B5019C926D9B0397DF6F02083A
+6485D33C9CB4A87496A188FFA8375578DC931E99B1002A646F0888CCEBBD7D97
+8E7335A778BC43F8923E842A37A0D8A3AA71ECBF76DFA7205E8377ACB00A6703
+06E274BE699C1DEB31E9D01F167132FD4636A1E773A32AB58F22F0DC4B323DC3
+03B0C139B8FF9A49751A6076DC721E0041D211B50F64DF6C514FFEA55050FEC6
+0E38603ECF3D4196E1ECE7B318609ABB04658A4BF8CC1A422BA1EB0D1CEC8326
+F16864B59486FCEAC6915564E6142C733B3F768E864D3248D2BD4794511E92D0
+3B0686A9B37039503469C694E506B8FCE3A33F4B472797FDBF01342D694493AF
+F5141E506363205F37981C205092E9C9D73D6D0E79AF6FF78FCE01103330AC33
+AD6CDA0A3C4DF7CEAE7933CE9B8CC665A17DE8D31C79AB2D5F896A122247F6D5
+61989D8F1825A629AA2B33826A53FD24FFBEF235CB4D6635317253BD363D089A
+2E28A56F16285A7A760C89EE8C010A234E9245907412C4696D644768D412C253
+AA36C2F01325D8991818B886F3487D69913ADC6D47A815A5FC85CB5163F3B8B9
+8E7FF88D483CB1B60FCA132B42AED1A22639F0901A6E5A920A6879F800F2A49B
+60EFBB6C6184FA3A462BABE2742EC701B687F0A143650F7D51D6B3B8DBA57B09
+FA1E5AE4FE57BCAFDE11A5A984D4E5478C04891EB0AD8BD49BCF4382F77FAAD3
+6989C81A54158885ACD6E1542DC7462E7F680A824F81F5437D2164FDC55B4DA7
+B887DA5B74ADF3B99885E0C1AD50FC0DA1B80253C7B8773D7298916BE9FF8C96
+2116A08241EFC9DE7887B66EA3074CC1E1235845FA8B6DF5A95D0FFBC0B59BC7
+D5BC76DC75A99D21C2903528731B27830E720EE5D901864D061954E6247B8F99
+2E8F28D9CF79ADF6BD9CCC25006988755A781EDB1E4FB6D8C864C6D4FEDB5EAE
+F50931EC0F3EF6F3ECDEF9019A06FD8C9A1F9BBF2D83689343844C888FC97764
+E78FD317CA4BD0293695BF4652C688B6327E3986D1AB8D4DBAC8F091EC4723E4
+C2484D0EDAF51907FC7F52EF7FFC3498C36F3385675A36FB4A8EBC25AFA2CA01
+E0111C1AD1F2B694DBBA3B6A73C149178C39B08EC700FDC2318EBE2191B56442
+798D4E2F86BFEEFC0039F4A311C54106659AC5292FAE89B1CDC058F85FD0B6C9
+6F3DA1C43174732BDCD6943A2F843A6D556615DA259E272EC3187397B1247AF5
+E291E2F9A6FA3E18C73FB4E547750A5C71BCB0EB2B79AF1782AE74B341E3AF19
+D5D5FF2F43DE7445F5D4BEB0CF32C5C5EF219EDE458B8FB1756082A5D23B0B4A
+BA39C590FB55EB1299DE37D24946DC7CE94F6713C170CA7BC6A2CCDAD94FA6FB
+5A7FD38ED092395A93A895340B67D340A1B8A74FDF7E4E86A43EA972F0848D0A
+7258D30F3E3CF5D145021D99BF1CF69070DAAE9B38E554C31536E4653003A3E8
+47E8F64343E2E14A353138A8208A726FFDABFC06447AE2C8C065291B475D0C59
+DA002D7599D811616712757D15AE5F74C74A553C1FC968A2E97E638C09C9F426
+9BDFAE3796B7EA134D2B724AB2E34B48AF3FD4416A984BEF17C5B84BFC146B8D
+088FB822414D3E09AE311F2A5B829682D1234A7EBE32610CEB275E318EEB2566
+43D4659D42A7A9F5613D0845F9DE20C86A619A5974BC2A18C85409EE49E46A41
+4A8F437A67753C300F528901259057D226325A6469C07180D698DBADACEAB2DE
+601CCCEB40A0C6A9B5B8C480AF615B452E951D7FD4FF9BAA40DD1670821AE675
+B328427E80E8C8E714A1D9101046B0ECB1EF099060236BC2B927CABD46ABE707
+D2D5FFBDD1B5D80C2F77F4FABC29DF2756779AC475B08A91CE6683209F9F938A
+
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+%%BeginFont: CMTI12
+%!PS-AdobeFont-1.1: CMTI12 1.0
+%%CreationDate: 1991 Aug 18 21:06:53
+% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
+11 dict begin
+/FontInfo 7 dict dup begin
+/version (1.0) readonly def
+/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
+/FullName (CMTI12) readonly def
+/FamilyName (Computer Modern) readonly def
+/Weight (Medium) readonly def
+/ItalicAngle -14.04 def
+/isFixedPitch false def
+end readonly def
+/FontName /CMTI12 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 0 /.notdef put
+readonly def
+/FontBBox{-36 -251 1103 750}readonly def
+/UniqueID 5000829 def
+currentdict end
+currentfile eexec
+D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
+3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
+532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
+B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
+986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
+D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
+525003F3DBE5BF07B2E83E66B7F97DDD7CE0EEB75A78BD9227BF359D002B6ADB
+8AC57A33FED4EF021A7085B1E2B933DE602F0FF71467ECD501744AE338AF29A0
+26F7D368AC6F25CCB882DB7B7343566192BD687E1349225982823027D3B66703
+3B0DB7A7E680A682B98023D39C7FAE81A5D5B867A0A66C8AA0DBC83B1596A84F
+0436AC6A7900B767BDCCE0060A4811003C79FDCC71D73F7F2D0A6675E93AD21A
+56B4CD8EF75EED3DE8C0A18BEBF7B9D1BE72504872D56EDB272F1E97FC726CB6
+68C85C713059DA19F6C2E0F3E12710A59B6FC4699AE883DE8C8615B7292AC25C
+D5714B6CFB14EF0EF11EB13009BEBA4F345A5D3D6D9926ABC2BAD7DB1328651E
+437BFB3C46DA7B62219660FC368CF3D3704DAD3AB461C28F711665BF484BF61C
+052093D231CA65618EA463D63E406ECE858D180A6C0589B2FEDC321371C28E77
+DE974D655DF5FF7D41ED01FE717D928A885F6FA6CFE4D2C0807F8E7F937916E0
+96EDD1A3BA67802B1F4A49100E75613BA0356D9DCBBAD4DAB3C59E70A47058F5
+2163D1730F0EE4D1F87C3A4AE723A23CFD7986FC4FBD399347E9F5946354E013
+D860FC446AFF0B0744F5DA27CC777C96ADB388D1E835DDCBE123FB517679B9B7
+EE5A3DDDCD392415AF58CE22EA55B7F47031138C6F27798B40F7E18FDD315912
+BE99F33ADE0FDD538A8A3E5DE58AF68A54732AE69F188F3F7E0458D848205648
+CBE820C287ADC2394520F03BBB97DB893F6A12154B1B7F8626D35CE6B70F8524
+CB128DE87821A0E32F1E825F6C50AE8B4BE37FAA3183BA4D678E896CC7E61CC9
+D0226FC38B9CAE0939D19149D987979B96A86EB69A105807AB426639292FF5FB
+EFF0817FCFD5E512819929280E672C29204632974124DE52409264C8D3C85548
+60D4436A0AB8B3963BC3586F11A74E7419EEEC2D70F37C0139225A21E8ACC1B6
+A2254B8DF63A245F2C8D203A2B4034D6C0495B1CDD11021DB9067033FD8479E5
+097CE08EDFFFD99149359D40735AA5E370D09E8817B7D86D2E30AACBE734B9E5
+5BA5288637323D936C4DDAED48016D407DE5507BA7CAB09B703CE0448F8E0E86
+3A2AF9C78C5D2A3C7CF75199CA01AC9D7E1A137902F5C0726DF19BDC45F646B8
+E417AB49512F98F6211EFB7B94C326569DFBA996E2B46D1870059DC33B919FAD
+C382DDFD8E63320511D93980F23CD158A4DA4A861426BDEB19A31DB7F00C8ABA
+877B41981152C38E119A056D5DAD931D1610749CA5580FADE2E6B62B7D836C1D
+78ACEF7CE51B441A5F03B6DCE0E50FC05B47FC8741C1CA916FC3E061B21D968A
+0D12B83DE627B8A2E61E1657C5B720DFF88A537E6A42D862A27BB651C3721D35
+117B02FD89E971B4EB156D244FC31DC2ED629F8A3BFA884D4452ACB5B3F3103E
+7EADE6DD1671E6CF573AF2758F4A4DF03EFF9021B61C3149FF3EF44875EA6403
+B313CCD9239DB9AEDFF50F2105B9869A4159F6B2582E74C1BF95CACA2C4943FE
+9566571CFEC92E21D70114A73DD6B3855E41DB683B1C4EC53EB944DA9B518FB6
+0A0B55C672AA7EE3BAC1BC4A328FA23078949A94B1D377E4F6B03744034E5097
+A51E5D8326E344EE36169548AD091918273DC035A9EFA2AA298F16FC7EEC66CB
+8AE934E74D9A559F66B3AEA4F7D5A1F875C46172FF3BAC59BDA2B0BFC4F8414A
+05F6C13F5B0119498532E1B9860B81B5AA87039CD5685E020C1F0DFB7B60924F
+F40C525373D8E1C3411C26DDEBD42A6E538F0D3EA7B6D2AB75742BDDFB77E83B
+1D600C270B1498B50A7CC12ACBF6FF116E2C490B9183C67C4CB614760BDBE228
+F890E4FB9948261AD5BC97380DE2477304922A8252C1AB3E8ACACA8DFD8119C5
+CB671BAB6CB95C13E963F7DC5F1E64D33244CE6BF92FCC7EAFB0D6F8FC264688
+BDE3F539204B41A8E234D7EAA884D1CEA4D9E0EF43CBCCB48323053D060DC2BB
+4BADE13B1BD5BFCFD40CC5419D02DF0C67A702B6B14FDA0E7F97BE5414AE4058
+7EB4859EB2AAC275B1E6413738B525931EF948D3866432A6442D0F6603EDF3B2
+E8E171EF4A4A4A19329747A04AD92037EAB7587DF039936E4EA9065F5F78DCEF
+1F970AB651FC86630821C8511546B70CE1835EF5E0B2203413C0FA7D7E773201
+5ACDF8317223A84F4D416ADFDCFF97883F241EE5B319665748ABCFFB4B59EEFA
+0E3B919F7959FA86B287A34A1B186D84319221E220DDD4E725A6912621D31A64
+009CC51BD707865BBC25E9DF7865086FE501E957F3F56C2718B6FEF8CEF452DC
+5DE515DD186E508D18408073C714FE575989EEF88264A5C87CF22140648E1239
+0B8CF9EDEB6D4AEB98EFA2D1E0B589BB6149B752EBC8533F9B10C202C74511FC
+7191CA9C3ED358A0113EC0B6527A6E5C65B20DAADE204A38DCDE2C89DE3A6393
+45CD3E1912D8768339D95CF669E16B1993D2D89336B1F4E46EABE5F4E28B3122
+76D1891E1CBD825E3ED1DB1E773B2C2A9DCFEE49DB6FF56133A4536A570046DF
+50F3570C95499DA101ECF31A3478B30C726D1666638FB8CD7BA68B5452EE093D
+1EAD3B82FF47FF954147DE22DD0F52B42D5185DC1F43B26AAB573D538523B06A
+EC0C3393D67A45407F5ACE1C9E1A6F4A36529F60166CCAA4B2745B1AFC81F310
+D08E55DB942791AC737B8C642526DC7F0A81F99AB46C1D211F642CA7130C339B
+639E52CCBF1F495ED7D2BC217E5F0E55C4484AE458FAB9C28E99128C22CACD71
+77F3A6A68A9EF36E2852307F3504B13E59364EE085A893009B50AFF9DE53891A
+9D4E3348B468F9D8F83B078AE8D6CC7C3ECB87B253205C514CF9B1294B31E53D
+4360F50B19428677CF0297B18FD349BFBD8CB7297B81290A33E40E2F711C3981
+A346FE1358E2328817641EDE7B0DD9DC27E4BD5E0D2FC7C0EE7399357857ABBA
+67B80A10320631AC2247842FAC6209C28A3406899497359534EA20C468D3C51E
+10594440CC51AD3091F09D7CCD15E61CD0CB8281DDD3E7FA9FB9DDCA9EC89CCB
+136B5488DED4F93285BD6B74D837BE87CAFCC7D573D215D80A4E8C12E1FA45D1
+FE8014169DB78CD4CFF1DFDBDFB36BA2BE55E17E7E25559884BF9FAB6FD5B0E1
+FC8193AA94E70EA53859F539260E3A3E072C7E235FFBBC218457208CFE8EAC3A
+BAB84A96AFDE9B51EC723BC57743290FF62C4891BE6EACFCF8A5F3FF0E660F36
+D0E7DC4D1D6AD8B48778A6F7C5D257BAE12678E6374C7EF3741A7376A25B15E4
+C9BCC724D22C3829E1C2A2EACE5384C382C23585787E3D0ED4AC029B7932D879
+BEAB8E4838D3B28770019DAEB95FCC990118095CCDA7506FF31734A0124BF03B
+A73637A67507ABD476098471BB409C5F56980E2A0B6CBB2E57FC23E774AE9DEC
+02023016FF0E86E6912083AB4C4C9A0B5CBB92FCD7DDD663DF7FF4138F697D4E
+9376E5FFC806BCB265CE2E80AF8F941A4105F0552B563723C8123B5230A037AA
+8E8569BF10E769B1B24D60011911707ECADEAE65EBD42597D2CAA524B6FBFDFD
+23A8BBF0FF676496262E2C96C726E0C8835448A6F48AE42E25DD3420E671D550
+BF39E571B0D1AFBBB43CE7D0D5B8B7C3A9EEE846218E487924356B642FC2A71C
+6B403136E738CF9A763EE3233729C9AE3127EA73D13CF92A3B82461BA6F3E220
+DA733CAE69361EE3E400C2AF32876504C3651EDC6E11AFB8ED665A6E025B5138
+B165727F3292DB7247122BFBA14F99FD98493268223DC9BA560793EA134A727D
+C6E1E402F5FA58725873AF6BD9F94CBC5C36D7398F030267C12A4105F76491B6
+E3EEF7DACBAD36D027BF8BE38B5840CCA6C92817CAA070DB3611D3B618A7F35A
+E645938DE75A3CA5CD85A91D83C1D5F9AC6A425E4997FD71E8C39A536B025DA4
+7B1E21DEFE08AEC2A01E1101418C5554D94D40AA96780F9E24400657E032328E
+FDC4D603AA6EB76EA44AFF18E50B02C7A4DC50535AEEEE62FF9C8ACF872A6868
+F6EA9E0833166DB521FD08A173E9D1BABF0B3B6D3C3BEC9AA5F018BB9169D4C4
+B1EEF1DA37F8603EB5D9D0F67633582D3ADF56896F14D034D3EC941E46282457
+31D45DB30E5149562DD4E53BF08DB10F521A0F9092317C68658967245A092D51
+4B7C27092ACCA2E5DEA381E725C9568D6213F3DA191FBFE29805FDCE33B43EFC
+CF5A9D7ACCFAAC57D7C35F518C290A57939F2A613B3EC7D1D41BC0C6B1A3E4EF
+8A9023D0349564624FD5D19BEC671D47B83EED16927CD9EEDD6A712A7EDFA4E8
+53252A494055E541B480340E88
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%EndFont
+TeXDict begin 39158280 55380996 1000 600 600 (Manual.dvi)
+ at start /Fa 131[39 2[39 4[39 39 39 39 39 39 39 39 39 2[39
+39 39 1[39 39 39 39 39 12[39 39 2[39 3[39 2[39 1[39 39
+39 39 39 39 39 2[39 1[39 1[39 39 39 39 39 39 39 39 39
+1[39 39 39 39 1[39 39 39 39 40[{ TeX09fbbfacEncoding ReEncodeFont }50
+74.7198 /CMTT9 rf /Fb 138[48 1[48 48 1[48 48 48 48 3[48
+3[48 48 48 48 52[48 45[{ TeXb6a4d7c7Encoding ReEncodeFont }13
+90.9091 /CMITT10 rf /Fc 133[44 44 44 44 44 44 44 44 44
+44 44 44 44 44 44 2[44 44 44 44 44 44 44 44 44 7[44 1[44
+44 44 44 44 44 1[44 44 44 44 44 44 1[44 44 44 44 44 44
+44 44 44 2[44 44 44 1[44 44 44 44 44 44 44 44 44 44 44
+44 44 44 44 44 44 44 44 1[44 44 1[44 35[{
+ TeX09fbbfacEncoding ReEncodeFont }71 83.022 /CMTT10
+rf /Fd 133[48 48 48 48 48 48 48 48 48 48 48 48 48 48
+48 2[48 48 48 48 48 48 48 48 48 3[48 1[48 5[48 48 48
+48 48 48 48 48 4[48 1[48 48 48 48 48 48 48 2[48 48 48
+1[48 1[48 48 48 2[48 48 48 48 1[48 48 1[48 48 48 48 48
+3[48 35[{ TeX09fbbfacEncoding ReEncodeFont }61 90.9091
+/CMTT10 rf /Fe 195[71 60[{ TeXaae443f0Encoding ReEncodeFont }1
+90.9091 /CMMI10 rf /Ff 132[52 33[79 1[108 1[80 73 58
+78 1[71 79 82 99 63 2[40 1[82 66 69 80 76 74 79 11[52
+2[52 1[52 3[29 44[{ TeXf7b6d320Encoding ReEncodeFont }24
+90.9091 /CMBX10 rf /Fg 135[42 2[49 30 37 38 42 46 46
+51 74 23 1[28 28 46 42 28 42 46 42 42 46 14[66 3[68 82
+2[48 7[64 68 6[28 11[28 33[51 12[{ TeX74afc74cEncoding ReEncodeFont }30
+90.9091 /CMTI10 rf /Fh 214[91 7[91 11[71 5[45 15[{
+ TeXbbad153fEncoding ReEncodeFont }4 90.9091 /CMSY10
+rf /Fi 134[59 2[59 62 44 44 46 1[62 56 62 93 31 59 1[31
+62 56 34 51 62 50 62 54 9[116 1[86 78 62 84 2[84 88 106
+3[42 1[88 70 74 86 81 80 85 1[53 9[56 56 56 56 56 1[56
+31 37 6[87 25[62 65 11[{ TeXf7b6d320Encoding ReEncodeFont }49
+99.6264 /CMBX12 rf /Fj 131[91 45 40 48 48 66 48 51 35
+36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51
+45 25 3[45 1[56 68 68 93 68 68 66 51 67 71 62 71 68 83
+57 71 47 33 68 71 59 62 69 66 64 68 71 43 43 71 25 25
+25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 71 45 35
+35 25 71 76 45 76 45 19[76 51 51 53 11[{
+ TeXf7b6d320Encoding ReEncodeFont }91 90.9091 /CMR10
+rf /Fk 139[35 4[54 9[48 22[81 19[32 58[{
+ TeX74afc74cEncoding ReEncodeFont }5 90.9091 /CMBXTI10
+rf /Fl 134[71 71 2[75 52 53 55 71 75 67 75 112 37 2[37
+75 67 41 61 75 60 75 65 12[94 75 100 1[92 101 1[128 3[50
+2[85 88 103 97 96 102 8[67 67 67 67 67 67 67 67 1[67
+1[45 45[{ TeXf7b6d320Encoding ReEncodeFont }44 119.552
+/CMBX12 rf /Fm 133[43 51 1[70 51 54 38 38 38 2[49 54
+1[27 2[27 54 49 30 43 54 43 54 49 11[73 70 54 3[76 2[61
+6[66 1[70 1[73 76 13[49 49 49 1[27 1[27 44[{
+ TeXf7b6d320Encoding ReEncodeFont }34 99.6264 /CMR12
+rf /Fn 137[70 73 51 52 51 70 73 66 73 111 36 2[36 1[66
+40 58 73 58 1[66 14[98 3[99 12[99 6[36 6[66 66 66 2[36
+4[51 51 40[{ TeXf7b6d320Encoding ReEncodeFont }28 143.462
+/CMR17 rf /Fo 139[47 57 4[79 10[65 1[72 13[79 102 3[104
+8[95 3[104 6[43 12[50 45[{ TeX74afc74cEncoding ReEncodeFont }12
+143.462 /CMTI12 rf /Fp 138[90 1[64 66 3[90 1[45 6[74
+3[78 11[124 7[153 77[{ TeXf7b6d320Encoding ReEncodeFont }9
+143.462 /CMBX12 rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 600dpi
+TeXDict begin
+%%PaperSize: A4
+ end
+%%EndSetup
+%%Page: 1 1
+TeXDict begin 1 0 bop 1487 637 a Fp(User)53 b(Man)l(ual)789
+1009 y Fo(tRNAsc)-7 b(an-SE:)52 b Fn(a)43 b(program)f(for)h(impro)l(v)l
+(ed)664 1192 y(transfer)g(RNA)g(detection)h(in)g(genomic)f(sequence)
+1539 1374 y(\(release:)58 b(1.23\))1706 1676 y Fm(T)-8
+b(o)s(dd)33 b(Lo)m(w)m(e)1480 1793 y(Sc)m(ho)s(ol)g(of)f(Engineering)
+1443 1909 y(Univ)m(ersit)m(y)j(of)d(California)1601 2025
+y(San)m(ta)h(Cruz,)h(CA)1553 2141 y(lo)m(w)m(e at so)s(e.ucsc.edu)1657
+2345 y(Octob)s(er)e(2001)148 2688 y Fl(1)135 b(In)l(tro)t(duction)148
+2891 y Fk(Note:)48 b Fj(An)30 b(HTML)g(v)m(ersion)h(of)f(this)h(man)m
+(ual)f(can)h(b)s(e)f(found)f(on)h(the)h(w)m(eb)f(at)148
+3004 y(\\h)m(ttp://genome.wustl.edu/lo)m(w)m(e/tRNAsca)q(n-SE-Man)m
+(ual/)q(Man)m(ual)q(.h)m(tml")q(.)148 3242 y Fi(1.1)113
+b(Brief)37 b(Description)148 3413 y Fj(tRNAscan-SE)c(iden)m(ti\014es)g
+(transfer)f(RNA)h(genes)g(in)g(genomic)g(DNA)h(or)e(RNA)h(sequences.)48
+b(It)32 b(com-)148 3526 y(bines)37 b(the)h(sp)s(eci\014cit)m(y)g(of)g
+(the)g(Co)m(v)m(e)g(probabilistic)g(RNA)g(prediction)g(pac)m(k)-5
+b(age)39 b(\(Eddy)e(&)g(Durbin,)148 3639 y(1994\))42
+b(with)d(the)h(sp)s(eed)f(and)g(sensitivit)m(y)i(of)f(tRNAscan)g(1.3)h
+(\(Fic)m(han)m(t)h(&)d(Burks,)j(1991\))f(plus)e(an)148
+3752 y(implemen)m(tation)34 b(of)f(an)f(algorithm)h(describ)s(ed)e(b)m
+(y)i(P)m(a)m(v)m(esi)h(and)e(colleagues)i(\(1994\))h(whic)m(h)d(searc)m
+(hes)148 3865 y(for)k(euk)-5 b(ary)m(otic)37 b(p)s(ol)e(I)s(I)s(I)f
+(tRNA)i(promoters)g(\(our)f(implemen)m(tation)i(referred)e(to)h(as)g
+(Eu\014ndtRNA\).)148 3978 y(tRNAscan)d(and)e(Eu\014ndtRNA)f(are)j(used)
+e(as)h(\014rst-pass)f(pre\014lters)g(to)i(iden)m(tify)f(\\candidate")h
+(tRNA)148 4091 y(regions)g(of)g(the)f(sequence.)47 b(These)32
+b(subsequences)g(are)g(then)g(passed)g(to)h(Co)m(v)m(e)h(for)e(further)
+f(analysis,)148 4204 y(and)25 b(output)g(if)g(Co)m(v)m(e)i(con\014rms)d
+(the)i(initial)g(tRNA)g(prediction.)39 b(In)25 b(this)g(w)m(a)m(y)-8
+b(,)28 b(tRNAscan-SE)e(attains)148 4317 y(the)31 b(b)s(est)f(of)g(b)s
+(oth)g(w)m(orlds:)285 4474 y Fh(\017)46 b Fj(a)30 b(false)h(p)s(ositiv)
+m(e)h(rate)f(of)f(less)h(than)f(one)h(p)s(er)e(15)i(billion)g(n)m
+(ucleotides)h(of)e(random)g(sequence)285 4649 y Fh(\017)46
+b Fj(the)36 b(com)m(bined)g(sensitivities)h(of)f(tRNAscan)h(and)e
+(Eu\014ndtRNA)f(\(detection)k(of)e(99\045)g(of)g(true)376
+4762 y(tRNAs\))285 4938 y Fh(\017)46 b Fj(searc)m(h)29
+b(sp)s(eed)g(1,000)i(to)f(3,000)h(times)f(faster)g(than)f(Co)m(v)m(e)h
+(analysis)g(and)f(30)h(to)g(90)g(times)g(faster)376 5051
+y(than)c(the)i(original)g(tRNAscan)g(1.3)g(\(tRNAscan-SE)g(uses)e(b)s
+(oth)h(a)g(co)s(de-optimized)h(v)m(ersion)g(of)376 5163
+y(tRNAscan)j(1.3)g(whic)m(h)g(giv)m(es)g(a)g(650-fold)h(increase)g(in)e
+(sp)s(eed,)g(and)g(a)h(fast)f(C)g(implemen)m(tation)376
+5276 y(of)g(the)h(P)m(a)m(v)m(esi)h Fg(et)h(al.)41 b
+Fj(algorithm\).)1920 5525 y(1)p eop end
+%%Page: 2 2
+TeXDict begin 2 1 bop 289 273 a Fj(This)34 b(program)g(and)g(results)g
+(of)h(its)f(analysis)h(of)g(a)g(n)m(um)m(b)s(er)e(of)h(genomes)i(ha)m
+(v)m(e)f(b)s(een)f(published)148 386 y(in)c(Lo)m(w)m(e)i(&)e(Eddy)-8
+b(,)30 b Fg(Nucleic)h(A)-5 b(cids)33 b(R)-5 b(ese)g(ar)g(ch)40
+b Ff(25)p Fj(:)h(955-964)33 b(\(1997\).)148 629 y Fi(1.2)113
+b(What)37 b(is)h(included)g(in)g(this)g(pac)m(k)-6 b(age?)148
+801 y Fj(This)26 b(distribution)h(includes)f(the)h(PERL)f(script)h
+(tRNAscan-SE,)h(all)f(the)g(\014les)g(necessary)g(to)h(compile)148
+914 y(and)h(run)g(the)h(complete)h(CO)m(VE)e(pac)m(k)-5
+b(age)32 b(\(v)m(ersion)f(2.4.4\),)h(all)f(the)f(\014les)f(necessary)h
+(to)h(compile)g(and)148 1027 y(run)26 b(the)i(mo)s(di\014ed)e(v)m
+(ersion)h(of)h(tRNAscan)g(\(v)m(ersion)g(1.4\),)h(and)e(all)h(the)f
+(\014les)h(needed)e(to)i(compile)h(and)148 1140 y(run)e(Eu\014ndtRNA)g
+(1.0)j(\(the)f(co)m(v)m(e)i(programs,)e(tRNAscan)g(1.4,)h(and)e
+(Eu\014ndtRNA)f(are)i(included)f(for)148 1252 y(use)d(with)g(the)g
+(tRNAscan-SE)g(program,)i(but)d(ma)m(y)h(also)h(b)s(e)f(run)e(as)j
+(stand-alone)g(programs\).)39 b(Instal-)148 1365 y(lation)g(of)e(the)h
+(PERL)e(\(Practical)k(Extraction)f(and)d(Rep)s(ort)h(Language,)k(Larry)
+36 b(W)-8 b(all\))40 b(in)m(terpreter)148 1478 y(pac)m(k)-5
+b(age)33 b(v)m(ersion)e(5.0)g(or)f(later)i(is)e(required)g(to)h(run)e
+(the)h(tRNAscan-SE)h(PERL)f(script.)148 1722 y Fi(1.3)113
+b(Getting)37 b(Started)148 1893 y Fj(The)29 b(follo)m(wing)i
+(instructions)e(for)g(installing)h(the)g(tRNAscan-SE)g(pac)m(k)-5
+b(age)31 b(also)f(app)s(ear)f(in)g(the)g(\\IN-)148 2006
+y(ST)-8 b(ALL")30 b(text)i(\014le:)259 2194 y(1.)47 b(Edit)37
+b(the)i(top)f(of)g(the)g(Mak)m(e\014le.)65 b(Set)38 b(the)g(paths)g
+(and)f(other)h(mak)m(e)h(v)-5 b(ariables)39 b(to)f(suit)g(y)m(our)376
+2307 y(system.)376 2457 y(In)29 b(particular,)i(y)m(ou)g(need)f(to)h
+(sp)s(ecify:)485 2645 y Fh(\017)46 b Fj(where)29 b(executables)j(are)f
+(to)g(b)s(e)f(installed)485 2791 y Fh(\017)46 b Fj(where)29
+b(data)j(\014les)e(are)h(to)g(b)s(e)e(installed)485 2937
+y Fh(\017)46 b Fj(where)29 b(P)m(erl)i(is)g(already)g(installed)g(on)f
+(the)h(system)485 3083 y Fh(\017)46 b Fj(what)30 b(the)g(P)m(erl)h
+(executable)h(is)f(called)g(\(i.e.)42 b(\\p)s(erl")31
+b(or)f(\\p)s(erl5"\))485 3229 y Fh(\017)46 b Fj(where)29
+b(temp)s(orary)h(\014les)h(will)f(reside)485 3375 y Fh(\017)46
+b Fj(where)29 b(to)j(install)f(man)f(pages)259 3563 y(2.)47
+b(t)m(yp)s(e)30 b('mak)m(e')i(to)f(build)e(the)i(programs)259
+3751 y(3.)47 b(t)m(yp)s(e)30 b('mak)m(e)i(install')f(to)g(install)h
+(the)e(programs)g(and)g(man)g(pages)376 3901 y Fk(Note:)70
+b Fj(If)42 b(y)m(ou)g(later)h(man)m(ually)f(mo)m(v)m(e)i(the)e(lo)s
+(cation)h(of)f(binaries)g(or)g(data)h(\014les)e(from)h(the)376
+4014 y(directories)23 b(sp)s(eci\014ed)f(in)g(the)h('Mak)m(e\014le',)j
+(y)m(ou)d(need)g(to)g(delete)h(the)e(tRNAscan-SE)h(executable,)376
+4127 y(up)s(date)29 b(the)i(lo)s(cations)h(sp)s(eci\014ed)d(in)h(the)h
+(Mak)m(e\014le,)h(and)e('mak)m(e)i(install')f(again.)259
+4314 y(4.)47 b(t)m(yp)s(e)31 b('mak)m(e)h(testrun')f(to)h(run)d
+(tRNAscan-SE)j(on)f(a)g(sample)g(sequence;)i(if)e(the)g(program)g(runs)
+376 4427 y(with)f(no)g(error)g(messages,)i(tRNAscan-SE)e(has)g(b)s(een)
+g(installed)h(correctly)259 4615 y(5.)47 b(t)m(yp)s(e)30
+b('mak)m(e)i(clean')f(to)g(clean)h(up.)289 4802 y(tRNAscan-SE)h(is)f
+(kno)m(wn)f(to)h(build)f(cleanly)i(on)f(a)g(n)m(um)m(b)s(er)f(of)h
+(di\013eren)m(t)g(UNIX)g(platforms)g(and)148 4915 y(OS's,)e(including)g
+(SGI)g(\(IRIX\),)h(Sun)e(\(Solaris\),)j(DEC)e(Alpha)g(\(OSF/1\),)i(and)
+e(In)m(tel)h(x86)g(\(Lin)m(ux\).)289 5141 y Fk(Note:)43
+b Fj(A)20 b(small)h(P)m(erl)g(script)f(\(c)m(hec)m(kv)m(ersion.pl\))j
+(will)e(run)d(in)i(the)h(pro)s(cess)f(of)g('mak)m(e'ing)i(tRNAscan-)148
+5254 y(SE.)45 b(If)g(y)m(ou)g(ha)m(v)m(e)h(sp)s(eci\014ed)f(an)g(in)m
+(v)-5 b(alid)45 b(lo)s(cation)i(or)e(v)m(ersion)h(of)f(P)m(erl)h(\()p
+Fe(<)p Fj(5.0\))g(in)f(the)g(Mak)m(e\014le)1920 5525
+y(2)p eop end
+%%Page: 3 3
+TeXDict begin 3 2 bop 148 273 a Fj(PERLDIR)31 b(v)-5
+b(ariable,)31 b(the)g(mak)m(e)h(will)f(fail.)42 b(If)30
+b(y)m(ou)h(plan)f(to)h(install)h(a)f(correct)g(v)m(ersion)h(of)e(P)m
+(erl)h Fg(after)148 386 y Fj(installing)k(the)f(tRNAscan-SE)g(pac)m(k)
+-5 b(age,)37 b(y)m(ou)d(ma)m(y)h(short-circut)f(this)g(c)m(hec)m(k)h(b)
+m(y)f(commen)m(ting)h(out)148 499 y(the)c(line)g(in)f(the)g(mak)m
+(e\014le)i(con)m(taining)g('c)m(hec)m(kv)m(ersion.pl'.)289
+724 y(Once)39 b(installed,)j(the)d(user)f(ma)m(y)h(wish)f(to)i(w)m(ork)
+f(through)f(sev)m(eral)i(of)f(the)f(examples)i(included)148
+837 y(\(Section)d(6)e(of)g(this)g(do)s(cumen)m(t\))h(to)g(get)g(a)f
+(quic)m(k)h(feel)g(for)f(the)g(program's)g(op)s(eration)h(and)e(some)i
+(of)148 950 y(the)26 b(most)g(commonly)g(used)f(command)h(line)g
+(options.)39 b(A)26 b(description)g(of)f(the)h(default)g(run)e(mo)s(de)
+i(and)148 1063 y(output)33 b(app)s(ears)f(in)g(Section)h(4,)h(and)e(a)h
+(description)g(of)g(eac)m(h)h(of)f(the)g(program)f(options)h(is)g
+(included)148 1176 y(in)d(Section)i(5)e(of)h(this)f(do)s(cumen)m(t.)148
+1420 y Fi(1.4)113 b(In)m(tended)38 b(Use)148 1591 y Fj(tRNAscan-SE)32
+b(w)m(as)f(designed)g(to)h(mak)m(e)g(rapid,)f(sensitiv)m(e)h(searc)m
+(hes)g(of)f(genomic)i(sequence)e(feasible)148 1704 y(using)38
+b(the)f(selectivit)m(y)k(of)d(the)g(Co)m(v)m(e)h(analysis)f(pac)m(k)-5
+b(age.)65 b(W)-8 b(e)39 b(ha)m(v)m(e)g(optimized)f(searc)m(h)h
+(sensitivit)m(y)148 1817 y(with)34 b(euk)-5 b(ary)m(ote)35
+b(cytoplasmic)h(&)d(eubacterial)j(sequences,)f(but)e(it)i(ma)m(y)f(b)s
+(e)g(applied)f(more)h(broadly)148 1930 y(with)c(a)h(sligh)m(t)h
+(reduction)e(in)g(sensitivit)m(y)-8 b(.)148 2173 y Fi(1.5)113
+b(W)-9 b(eb)37 b(Resources)148 2345 y Fj(F)-8 b(or)36
+b(small-scale)i(users)c(and)h(those)h(who)e(are)i(unable)f(to)h
+(install)g(tRNAscan-SE)f(on)h(a)f(lo)s(cal)i(UNIX)148
+2458 y(platform,)45 b(a)e(w)m(eb-based)e(v)m(ersion)i(of)f(the)g
+(program)f(is)h(a)m(v)-5 b(ailable)44 b(for)e(on-line)h(tRNA)f
+(analysis)g(at)148 2571 y(\\h)m
+(ttp://genome.wustl.edu/eddy/tRNAscan-SE/".)48 b(All)31
+b(of)h(the)f(most)h(frequen)m(tly)f(used)g(options)148
+2684 y(are)c(a)m(v)-5 b(ailable)29 b(in)e(the)g(w)m(eb-based)f(v)m
+(ersion.)40 b(Links)26 b(to)i(the)f(most)g(recen)m(t)g(release)h(of)f
+(the)g(program)g(and)148 2797 y(the)k(tRNAscan-SE)g(Genomic)g(tRNA)g
+(Database)h(are)f(also)g(a)m(v)-5 b(ailable)33 b(from)d(this)g(page.)
+148 3083 y Fl(2)135 b(Metho)t(ds)148 3286 y Fj(tRNAscan-SE)34
+b(do)s(es)f(no)g(tRNA)h(detection)h(itself,)g(but)d(instead)i(com)m
+(bines)g(the)f(strengths)g(of)h(three)148 3399 y(indep)s(enden)m(t)41
+b(tRNA)h(prediction)f(programs)g(b)m(y)h(negotiating)i(the)d(\015o)m(w)
+h(of)g(information)f(b)s(et)m(w)m(een)148 3512 y(them,)h(p)s(erforming)
+37 b(a)j(limited)f(amoun)m(t)h(of)f(p)s(ost-pro)s(cessing,)i(and)d
+(outputting)h(the)g(results.)67 b(The)148 3625 y(program)39
+b(w)m(orks)g(in)g(three)g(main)g(phases.)66 b(In)39 b(the)g(\014rst)f
+(stage,)43 b(it)d(runs)d(t)m(w)m(o)k(indep)s(enden)m(t)c(tRNA)148
+3738 y(detection)c(programs)e(on)g(the)h(input)e(DNA)i(sequence.)44
+b(These)31 b(relativ)m(ely)j(fast,)e(\014rst-pass)e(detection)148
+3851 y(programs)f(include)f(a)h(mo)s(di\014ed,)g(optimized)g(v)m
+(ersion)h(of)f(tRNAscan)g(1.3)h(\(1\),)g(and)f(Eu\014ndtRNA,)e(an)148
+3963 y(implemen)m(tation)32 b(of)f(another)f(tRNA)h(searc)m(h)g
+(algorithm)h(previously)e(describ)s(ed)f(\(3\).)289 4076
+y(tRNAscan)39 b(1.3)f(detects)g(tRNAs)g(b)m(y)f(initially)i(lo)s(oking)
+f(for)f(short,)i(w)m(ell)g(conserv)m(ed)e(in)m(tragenic)148
+4189 y(promoter)32 b(sequences)h(\(A)f(&)g(B)g(b)s(o)m(xes)g(in)g(euk)
+-5 b(ary)m(otes\))33 b(found)e(in)h(the)g(TPC)f(and)g(D)i(arm)e
+(regions)i(of)148 4302 y(protot)m(ypic)i(tRNAs.)50 b(Once)33
+b(a)h(sp)s(eci\014c)f(n)m(um)m(b)s(er)f(of)i(n)m(ucleotides)g(in)f(the)
+h(sequence)g(matc)m(h)g(the)f(con-)148 4415 y(sensus)d(promoter)g
+(\(de\014ned)g(b)m(y)g(an)h(arbitrary)f(score)h(threshold\),)g(the)g
+(program)f(then)g(progressiv)m(ely)148 4528 y(attempts)i(to)e(iden)m
+(tify)h(the)g(v)-5 b(arious)30 b(stem-lo)s(op)h(structures)e(found)g
+(in)h(the)h(tRNA)f(\\clo)m(v)m(er)j(leaf)7 b(".)42 b(As)148
+4641 y(eac)m(h)c(arm)e(is)h(iden)m(ti\014ed)f(b)m(y)h(the)g(presence)f
+(of)h(base-pairing)g(in)f(the)h(stem,)h(correct)g(lo)s(op)f(size,)i
+(and)148 4754 y(sev)m(eral)31 b(in)m(v)-5 b(arian)m(t)30
+b(and)f(semi-in)m(v)-5 b(arian)m(t)31 b(bases,)f(a)g(\\general)g
+(score")h(coun)m(ter)f(is)f(incremen)m(ted.)41 b(If)29
+b(the)148 4867 y(\014nal)d(score)g(exceeds)h(an)e(empirically)i
+(determined)e(threshold,)h(the)g(tRNA)h(lo)s(cation,)h(an)m(tico)s
+(don,)g(and)148 4980 y(t)m(yp)s(e)j(are)g(sa)m(v)m(ed.)289
+5093 y(Eu\014ndtRNA,)42 b(on)g(the)h(other)g(hand,)i(only)e(searc)m
+(hes)h(for)e(linear)h(sequence)h(signals.)78 b(A)43 b(step-)148
+5205 y(wise)31 b(algorithm)h(uses)e(newly)h(dev)m(elop)s(ed)g(log-o)s
+(dds)g(score)g(matrices)h(to)f(\014rst)f(iden)m(tify)h(A)g(and)f(B)h(b)
+s(o)m(x)1920 5525 y(3)p eop end
+%%Page: 4 4
+TeXDict begin 4 3 bop 148 273 a Fj(promoter)37 b(elemen)m(ts)h(that)f
+(exceed)g(an)g(empirically)g(determined)f(cuto\013.)60
+b(The)36 b(scores)h(for)f(these)h(A)148 386 y(and)30
+b(B)i(b)s(o)m(xes)e(are)i(then)e(added)g(to)i(a)f(log)h(o)s(dds)d
+(score)j(for)e(the)h(n)m(ucleotide)h(distance)g(b)s(et)m(w)m(een)f(the)
+g(A)148 499 y(and)d(B)h(b)s(o)m(xes)f(to)h(pro)s(duce)e(an)i(in)m
+(termediate)g(score.)41 b(Finally)-8 b(,)31 b(a)d(log)i(o)s(dds)d
+(score)i(for)f(the)g(distance)h(to)148 612 y(the)c(nearest)f(do)m
+(wnstream)g(p)s(oly-T)g(p)s(ol)g(I)s(I)s(I)e(termination)j(signal)g(is)
+f(added)g(to)g(the)h(in)m(termediate)g(score)148 724
+y(to)37 b(obtain)g(a)f(\014nal)g(score.)58 b(If)36 b(the)g(\014nal)g
+(score)h(is)f(ab)s(o)m(v)m(e)h(a)g(\014nal)e(score)i(cuto\013,)i(the)d
+(tRNA)h(iden)m(tit)m(y)148 837 y(and)j(lo)s(cation)h(is)f(sa)m(v)m(ed.)
+71 b(tRNAscan-SE)40 b(uses)g(a)g(less)g(selectiv)m(e)j(v)m(ersion)d(of)
+h(this)e(algorithm)i(that)148 950 y(do)s(es)d(not)h(lo)s(ok)f(for)g(p)s
+(ol)g(I)s(I)s(I)f(termination)i(signals,)i(th)m(us)d(uses)f(the)i(in)m
+(termediate)h(score)e(as)h(a)f(\014nal)148 1063 y(cuto\013.)49
+b(Also,)34 b(the)f(in)m(termediate)i(score)e(cuto\013)h(is)f(lo)s
+(osened)g(sligh)m(tly)h(relativ)m(e)h(to)e(the)g(in)m(termediate)148
+1176 y(cuto\013)c(describ)s(ed)e(in)h(the)g(original)h(algorithm)h
+(\(3\).)41 b(These)27 b(mo)s(di\014cations)i(increase)g(the)f
+(algorithm's)148 1289 y(sensitivit)m(y)44 b(but)e(greatly)i(reduce)e
+(Eu\014ndtRNA's)f(selectivit)m(y)-8 b(.)80 b(This)41
+b(do)s(es)h(not)h(reduce)f(the)g(\014nal)148 1402 y(selectivit)m(y)35
+b(of)d(tRNAscan-SE)g(since)g(a)g(secondary)g(\014lter)f(\(Co)m(v)m(e\))
+j(is)e(b)s(eing)f(used)g(to)h(eliminate)h(false)148 1515
+y(p)s(ositiv)m(es.)77 b(The)42 b(sensitivit)m(y)i(of)e(Eu\014ndtRNA)f
+(is)h(roughly)g(comparable)h(to)g(tRNAscan)g(1.3,)k(but)148
+1628 y(it)37 b(app)s(ears)e(to)i(b)s(e)f(complemen)m(tary)h(in)f(that)g
+(Eu\014ndtRNA)f(tends)h(to)g(iden)m(tify)h(tRNAs)f(missed)g(b)m(y)148
+1741 y(tRNAscan)j(1.3)g(and)f(vice)h(v)m(ersa)f(\(3\).)65
+b(tRNAscan-SE)39 b(tak)m(es)g(adv)-5 b(an)m(tage)40 b(of)e(this)g
+(fact,)j(and)d(sa)m(v)m(es)148 1854 y(results)32 b(from)f(b)s(oth)h
+(tRNAscan)g(1.3)h(and)e(Eu\014ndtRNA,)g(then)h(merges)g(them)g(in)m(to)
+h(one)f(list)g(of)g(non-)148 1967 y(redundan)m(t)d(\\candidate")j(tRNA)
+f(iden)m(ti\014cations.)289 2079 y(In)24 b(the)g(second)h(stage,)i
+(tRNAscan-SE)d(extracts)i(the)e(DNA)h(subsequences)f(iden)m(ti\014ed)g
+(as)g(p)s(ossible)148 2192 y(tRNAs)e(and)f(passes)g(only)g(these)h
+(segmen)m(ts)g(to)g(an)f(RNA)h(searc)m(h)g(program)f(in)g(the)g(Co)m(v)
+m(e)i(program)e(suite)148 2305 y(\(co)m(v)m(els\))28
+b(for)d(analysis.)40 b(Co)m(v)m(e)26 b(programs)f(lo)s(ok)h(for)f
+(tRNAs)g(in)g(a)h(v)m(ery)f(di\013eren)m(t)h(w)m(a)m(y)-8
+b(.)40 b(A)25 b(probabilistic)148 2418 y(mo)s(del)33
+b(for)h(tRNA)f(has)h(b)s(een)e(dev)m(elop)s(ed)i(b)m(y)f(aligning)h
+(kno)m(wn)f(tRNAs)h(and)f(giving)h(a)g(base-sp)s(eci\014c)148
+2531 y(probabilit)m(y)28 b(score)f(to)h(ev)m(ery)g(n)m(ucleotide)g(in)f
+(the)g(tRNA)h(mo)s(del.)39 b(Also,)29 b(Co)m(v)m(e)f(uses)f(a)g(sp)s
+(ecial)h(metho)s(d)148 2644 y(for)37 b(capturing)h(secondary)f(RNA)h
+(structure)f(information)g(using)g(a)h(t)m(yp)s(e)f(of)h(language)h
+(referred)d(to)148 2757 y(as)30 b(a)g(sto)s(c)m(hastic)h(con)m
+(text-free)h(grammar)e(\(SCF)m(G\).)g(Co)m(v)m(e)h(applies)f(this)f
+(probabilistic)h(mo)s(del)g(to)g(the)148 2870 y(en)m(tire)g(windo)m(w)m
+(ed)e(sequence,)h(and)f(pro)s(duces)f(a)i(probabilit)m(y)g(score)g
+(that)g(the)g(sequence)f(matc)m(hes)i(the)148 2983 y(tRNA)35
+b(mo)s(del.)51 b(If)33 b(the)i(score)f(exceeds)h(20.0)g(bits,)g(the)f
+(tRNA)h(is)f(considered)g(a)g(true)g(tRNA)g(\(based)148
+3096 y(on)d(empirical)g(studies)f(in)g(ref.)40 b(2\).)289
+3209 y(In)24 b(the)g(\014nal)g(phase,)h(tRNAscan-SE)f(tak)m(es)i(those)
+e(tRNAs)h(con\014rmed)e(as)h(suc)m(h)g(and)f(runs)g(another)148
+3321 y(Co)m(v)m(e)28 b(program)d(\(co)m(v)m(es\))k(that)e(displa)m(ys)f
+(RNA)g(secondary)g(structure.)39 b(The)25 b(tRNA)i(t)m(yp)s(e)f(is)g
+(predicted)148 3434 y(b)m(y)37 b(iden)m(tifying)g(the)g(an)m(tico)s
+(don)g(within)f(the)h(structure)f(output.)59 b(In)m(trons)37
+b(are)g(also)g(automatically)148 3547 y(iden)m(ti\014ed)45
+b(from)f(the)g(structure)g(output)g(as)g(runs)f(of)h(\014v)m(e)h(or)f
+(more)h(consecutiv)m(e)h(non-consensus)148 3660 y(n)m(ucleotides)32
+b(within)e(the)g(an)m(tico)s(don)i(lo)s(op.)289 3773
+y(tRNAscan-SE)j(uses)e(heuristics)h(to)g(try)g(to)h(distinguish)e
+(pseudogenes)g(from)h(true)f(tRNAs,)i(pri-)148 3886 y(marily)i(on)g
+(lac)m(k)h(of)f(tRNA-lik)m(e)i(secondary)d(structure.)60
+b(A)36 b(second)h(tRNA)g(co)m(v)-5 b(ariance)39 b(mo)s(del)e(w)m(as)148
+3999 y(created)i(from)f(the)g(original)h(1415-tRNA)i(alignmen)m(t,)g
+(under)36 b(the)j(constrain)m(t)g(that)f(no)g(secondary)148
+4112 y(structure)c(is)g(conserv)m(ed)g(\(this)h(mo)s(del)f(is)g
+(e\013ectiv)m(ely)j(just)c(a)h(sequence)h(pro\014le,)g(or)f(hidden)e
+(Mark)m(o)m(v)148 4225 y(mo)s(del\).)39 b(By)24 b(subtracting)h(a)f
+(tRNA's)h(similarit)m(y)g(score)g(to)f(the)h(primary)e(structure-only)h
+(mo)s(del)g(from)148 4338 y(that)39 b(using)e(the)h(complete)i(tRNA)e
+(mo)s(del,)i(a)e(secondary)g(structure-only)g(score)g(is)g(obtained.)64
+b(W)-8 b(e)148 4451 y(ha)m(v)m(e)41 b(observ)m(ed)e(that)g(tRNAs)h
+(with)f(lo)m(w)g(scores)h(for)f(either)g(comp)s(onen)m(t)h(of)f(the)g
+(total)i(score)f(w)m(ere)148 4563 y(often)e(pseudogenes.)61
+b(Th)m(us,)38 b(tRNAs)f(are)h(mark)m(ed)f(as)h(lik)m(ely)g(pseudogenes)
+f(if)g(they)h(ha)m(v)m(e)g(either)g(a)148 4676 y(score)30
+b(of)f(less)h(than)f(10)h(bits)f(for)g(the)g(primary)g(sequence)g(comp)
+s(onen)m(t)h(of)f(the)g(total)i(score,)g(or)e(a)g(score)148
+4789 y(of)f(less)h(than)e(5)i(bits)f(for)f(the)i(secondary)f(structure)
+f(comp)s(onen)m(t)h(of)g(the)h(total)g(score.)41 b(Seleno)s(cysteine)
+148 4902 y(tRNAs)24 b(are)g(not)g(c)m(hec)m(k)m(ed)i(b)m(y)e(these)g
+(rules)f(since)h(they)g(ha)m(v)m(e)h(at)m(ypical)g(primary)e(and)g
+(secondary)h(struc-)148 5015 y(ture.)39 b(Also,)26 b(use)f(of)f(the)h
+(-O)f(option)h(\(searc)m(h)h(for)e(organellar)i(tRNAs\))f(disables)g
+(pseudogene)f(c)m(hec)m(king)148 5128 y(since)31 b(these)g(criteria)h
+(are)e(geared)i(to)m(w)m(ards)f(detecting)h(cytoplasmic)g(pseudogenes)e
+(\(some)h(true)f(non-)148 5241 y(euk)-5 b(ary)m(otic)30
+b(tRNA)e(are)h(mark)m(ed)f(as)g(pseudogenes)f(b)m(y)h(this)g
+(analysis\).)41 b(Final)28 b(tRNA)h(predictions)f(are)1920
+5525 y(4)p eop end
+%%Page: 5 5
+TeXDict begin 5 4 bop 148 273 a Fj(then)30 b(sa)m(v)m(ed)i(in)e
+(tabular,)h(A)m(CeDB,)h(or)e(secondary)h(structure)e(output)h(format.)
+289 386 y(F)-8 b(or)39 b(more)e(details)i(on)e(the)h(program)f
+(algorithm)i(&)e(implemen)m(tation,)k(see)d(the)g(Nucleic)h(Acids)148
+499 y(Researc)m(h)32 b(pap)s(er)d(\(Lo)m(w)m(e)j(&)e(Eddy)-8
+b(,)30 b(1997\).)148 785 y Fl(3)135 b(P)l(erformance)46
+b(/)f(Requiremen)l(ts)148 988 y Fj(P)m(erformance)33
+b(will)f(ob)m(viously)g(v)-5 b(ary)31 b(dep)s(ending)g(on)g(the)h(mac)m
+(hine)g(arc)m(hitecture,)i(memory)-8 b(,)33 b(and)e(OS)148
+1101 y(e\016ciency)-8 b(.)73 b(The)40 b(examples)i(included)e(in)g
+(this)g(do)s(cumen)m(t)h(w)m(ere)g(run)e(on)i(a)g(Silicon)g(Graphics)f
+(In-)148 1214 y(digo2)i(R4400-200)j(running)39 b(IRIX)i(5.3,)k(with)c
+(o)m(v)m(er)h(32Mb)g(of)f(memory)-8 b(.)73 b(tRNAscan-SE)42
+b(runs)d(at)148 1327 y(appro)m(ximately)32 b(20,000)h(to)e(45,000)i
+(bp/sec)d(in)g(its)h(default)g(op)s(eration)f(mo)s(de)g(on)h(this)f
+(mac)m(hine.)148 1613 y Fl(4)135 b(Default)46 b(Program)g(Op)t(eration)
+148 1819 y Fi(4.1)113 b(In)m(v)m(oking)38 b(tRNAscan-SE)148
+1991 y Fj(The)31 b(program)h(is)f(in)m(v)m(ok)m(ed)i(b)m(y)e(giving)i
+(it)f(a)g(series)g(of)f(optional)i(command)e(line)h(parameters,)g(then)
+g(a)148 2104 y(list)27 b(of)f(one)g(or)g(more)g(sequence)g(\014les)g
+(written)g(in)f(the)h(F)-10 b(AST)i(A)26 b(format)h(\(see)f(app)s
+(endix)f(A)h(for)f(example)148 2217 y(of)31 b(F)-10 b(AST)i(A)30
+b(format\):)337 2443 y Fd(tRNAscan-SE)45 b([-options])g(FASTA)p
+1681 2443 29 4 v 33 w(file\(s\))289 2669 y Fj(By)40 b(default,)h(the)e
+(header)g(credits)h(and)e(selected)i(command-line)g(options)f(are)h
+(prin)m(ted)e(to)i(the)148 2781 y(screen)45 b(via)h(standard)e(error,)
+49 b(follo)m(w)m(ed)e(b)m(y)e(the)g(\014nal)g(results)f(of)i(the)f
+(tRNA)g(searc)m(h)h(written)f(to)148 2894 y(standard)36
+b(output)g(in)g(a)h(tabular)f(format)h(\(see)h(b)s(elo)m(w\).)59
+b(By)37 b(default,)h(tRNAscan-SE)f(searc)m(hes)g(for)148
+3007 y(euk)-5 b(ary)m(otic)36 b(cytoplasmic)f(tRNAs.)52
+b(T)-8 b(o)35 b(searc)m(h)f(for)g(prok)-5 b(ary)m(otic,)36
+b(arc)m(haeal,)h(or)d(organellar)h(tRNAs,)148 3120 y(use)e(searc)m(h)h
+(mo)s(de)f(options)h(-P)-8 b(,)34 b(-A,)g(-O,)g(rep)s(ectiv)m(ely)-8
+b(.)51 b(If)33 b(the)h(sequences)f(are)h(from)f(more)h(than)f(one)148
+3233 y(ph)m(ylogenetic)f(domain,)e(the)f(general)i(tRNA)f(mo)s(del)f
+(\(option)i(-G\))f(ma)m(y)g(b)s(e)f(used)g(with)g(minimal)h(loss)148
+3346 y(of)43 b(sensitivit)m(y)h(and)e(selectivit)m(y)j(\(the)e
+(publication)g(describing)f(tRNAscan-SE)h(used)e(the)i(general)148
+3459 y(tRNA)31 b(mo)s(del)f(exclusiv)m(ely)-8 b(,)33
+b(ref.)41 b(4\).)148 3658 y Fc(Sequence)694 b(tRNA)42
+b(Bounds)216 b(tRNA)172 b(Anti)h(Intron)41 b(Bounds)129
+b(Cove)148 3758 y(Name)522 b(tRNA)42 b(#)86 b(Begin)129
+b(End)217 b(Type)172 b(Codon)129 b(Begin)g(End)217 b(Score)148
+3857 y(--------)346 b(------)84 b(-----)129 b(---)217
+b(----)172 b(-----)129 b(-----)g(-----)g(-----)148 3957
+y(CELF22B7)346 b(1)304 b(12619)129 b(12738)g(Leu)216
+b(CAA)h(12657)129 b(12692)g(60.01)148 4057 y(CELF22B7)346
+b(2)304 b(19480)129 b(19561)g(Ser)216 b(AGA)h(0)305 b(0)g(80.44)148
+4156 y(CELF22B7)346 b(3)304 b(26367)129 b(26439)g(Phe)216
+b(GAA)h(0)305 b(0)g(80.32)148 4256 y(CELF22B7)346 b(4)304
+b(26992)129 b(26920)g(Phe)216 b(GAA)h(0)305 b(0)g(80.32)148
+4356 y(CELF22B7)346 b(5)304 b(23765)129 b(23694)g(Pro)216
+b(CGG)h(0)305 b(0)g(75.76)289 4568 y Fj(Eac)m(h)42 b(new)f(tRNA)g(in)g
+(a)h(sequence)f(is)g(consecutiv)m(ely)i(n)m(um)m(b)s(ered)d(in)h(the)g
+('tRNA)h(#')f(column.)148 4681 y('tRNA)33 b(Bounds')f(sp)s(ecify)g(the)
+g(starting)h(\(5'\))h(and)e(ending)f(\(3'\))j(n)m(ucleotide)g(b)s
+(ounds)c(for)i(the)g(tRNA.)148 4794 y(tRNAs)j(found)d(on)i(the)g(rev)m
+(erse)h(\(lo)m(w)m(er\))h(strand)d(are)i(indicated)f(b)m(y)g(ha)m(ving)
+h(the)f(Begin)h(\(5'\))g(b)s(ound)148 4907 y(greater)d(than)e(the)h
+(End)e(\(3'\))i(b)s(ound)e(\(see)i(tRNAs)g(#4)f(&)g(#5)h(in)f(output)g
+(ab)s(o)m(v)m(e\).)289 5020 y(The)40 b('tRNA)h(T)m(yp)s(e')f(is)g(the)g
+(predicted)g(amino)g(acid)h(c)m(harged)f(to)h(the)f(tRNA)h(molecule)g
+(based)148 5133 y(on)k(the)f(predicted)g('An)m(tico)s(don')i(\(written)
+f(5')g Fh(!)f Fj(3'\))h(displa)m(y)m(ed)g(in)f(the)h(next)f(column.)83
+b(tRNAs)148 5246 y(that)33 b(\014t)e(criteria)i(for)e(p)s(oten)m(tial)j
+(pseudogenes)d(\(p)s(o)s(or)g(primary)g(or)g(secondary)h(structure,)g
+(discussed)1920 5525 y(5)p eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop 148 273 a Fj(in)41 b(Metho)s(ds\),)j(will)e(b)s
+(e)e(mark)m(ed)i(with)e(\\Pseudo")i(in)f(the)g('tRNA)h(T)m(yp)s(e')f
+(column.)73 b(If)40 b(there)i(is)f(a)148 386 y(predicted)e(in)m(tron)h
+(in)e(the)i(tRNA,)g(the)f(next)g(t)m(w)m(o)i(columns)e(indicate)h(the)f
+(n)m(ucleotide)i(b)s(ounds.)65 b(If)148 499 y(there)45
+b(is)f(no)g(predicted)f(in)m(tron,)48 b(b)s(oth)c(of)g(these)g(columns)
+g(con)m(tain)h(zero.)83 b(The)43 b(\014nal)h(column)g(is)148
+612 y(the)35 b(Co)m(v)m(e)h(score)f(for)f(the)h(tRNA)g(in)f(bits.)52
+b(Note)36 b(that)f(this)g(score)g(will)f(v)-5 b(ary)35
+b(somewhat)g(dep)s(ending)148 724 y(on)41 b(the)f(particular)h(tRNA)f
+(co)m(v)-5 b(ariance)43 b(mo)s(del)d(used)g(in)g(the)g(analysis)h
+(\(the)g(searc)m(h)g(mo)s(de)f(selects)148 837 y(whic)m(h)28
+b(tRNA)g(co)m(v)-5 b(ariance)30 b(mo)s(del)e(will)g(b)s(e)f(used:)38
+b(euk)-5 b(ary)m(ote-sp)s(eci\014c,)31 b(prok)-5 b(ary)m(ote-sp)s
+(eci\014c,)30 b(arc)m(hae-)148 950 y(sp)s(eci\014c,)g(or)f(general\).)
+42 b(tRNAscan-SE)30 b(coun)m(ts)f(an)m(y)h(sequence)g(that)g(attains)g
+(a)g(score)g(of)f Fh(\025)g Fj(20.0)i(bits)148 1063 y(as)g(a)g(tRNA)g
+(\(based)f(on)g(empirical)h(studies)g(conducted)f(b)m(y)g(Eddy)f(&)h
+(Durbin)f(in)h(ref)h(#2\).)148 1307 y Fi(4.2)113 b(T)-9
+b(emp)s(orary)38 b(\014les)148 1478 y Fj(In)27 b(the)h(course)f(of)h
+(program)f(execution,)i(sev)m(eral)g(temp)s(orary)e(\014les)g(are)h
+(written)f(to)i(and)d(deleted)j(from)148 1591 y(the)23
+b(`TEMPDIR')g(directory)f(sp)s(eci\014ed)g(in)g(the)h(Mak)m(e\014le)h
+(on)e(installing)i(the)e(program.)38 b(Alternativ)m(ely)-8
+b(,)148 1704 y(the)26 b(en)m(vironmen)m(t)g(v)-5 b(ariable)27
+b(`TMPDIR')f(can)g(b)s(e)f(set)h(to)h(another)f(directory)g(whic)m(h)f
+(will)h(o)m(v)m(erride)h(the)148 1817 y(temp)s(orary)j(directory)h(sp)s
+(eci\014ed)f(in)g(the)g(Mak)m(e\014le.)289 1930 y(F)-8
+b(or)32 b(the)g(a)m(v)m(erage)h(user,)e(/tmp)g(should)f(w)m(ork)i
+(\014ne)e(as)i(the)f(temp)g(\014le)g(directory)-8 b(.)44
+b(F)-8 b(or)32 b(sequencing)148 2043 y(cen)m(ters)e(or)f(users)g
+(scanning)g(v)m(ery)g(large)h(individual)f(sequences)g(\()p
+Fh(\025)g Fj(1MBp\),)i(or)e(man)m(y)g(sequences)g(at)148
+2156 y(once)37 b(\()p Fh(\025)f Fj(4)h(instances)f(of)h(tRNAscan-SE)f
+(at)h(once\),)i(it)e(migh)m(t)g(b)s(e)e(advisable)i(to)g(use)e
+(/usr/tmp)h(or)148 2269 y(some)31 b(other)g(temp)s(orary)f(directory)h
+(that)g(has)f(su\016cien)m(t)g(free)h(disk)f(space)h(\(at)g(least)h
+(10MB)g(free\).)289 2382 y Fg(Note:)42 b Fj(If)20 b(m)m(ultiple)i(F)-10
+b(AST)i(A)22 b(\014les)f(are)h(sp)s(eci\014ed)f(on)g(the)g(command)g
+(line,)j(tRNAscan-SE)e(creates)h(a)148 2494 y(temp)s(orary)i(\014le)h
+Fd(tscan)p Fb(process-id-number)p Fd(.)o(mseq)19 b Fj(in)25
+b(whic)m(h)g(all)h(sequence)g(\014les)f(are)h(concatenated)148
+2607 y(together)j(for)e(ease)h(of)g(pro)s(cessing.)39
+b(Because)29 b(of)e(this,)h(the)f(temp)s(orary)g(directory)h(m)m(ust)f
+(ha)m(v)m(e)h(enough)148 2720 y(ro)s(om)h(to)g(temp)s(orarily)g(sa)m(v)
+m(e)h(a)f(cop)m(y)g(of)g(all)h(the)f(sequence)g(\014les)f(\(at)i
+(once\))g(that)f(ha)m(v)m(e)h(b)s(een)e(sp)s(eci\014ed)148
+2833 y(on)38 b(the)f(command)g(line)h(|)f(this)g(ma)m(y)h(b)s(e)f(a)g
+(problem)g(for)g(\\p)s(o)m(w)m(er)h(users")f(who)g(ma)m(y)h(conceiv)-5
+b(ably)148 2946 y(scan)25 b(an)g(en)m(tire)h(directory)f(of)g(cosmids)g
+(totalling)i(man)m(y)e(MBp)g(of)g(sequence.)39 b(In)24
+b(these)i(cases,)h(I)d(w)m(ould)148 3059 y(advise)h(the)f(user)g(to)h
+(either)g(run)d(a)j(smaller)g(set)f(of)h(sequences)f(at)h(once,)i(or)d
+(mak)m(e)h(sure)f(the)g(TEMPDIR)148 3172 y(can)31 b(handle)f(the)g
+(large)i('.mseq')f(temp)s(orary)f(\014le.)1920 5525 y(6)p
+eop end
+%%Page: 7 7
+TeXDict begin 7 6 bop 148 273 a Fl(5)135 b(Command-line)46
+b(Options)148 479 y Fi(5.1)113 b(Searc)m(h)38 b(Mo)s(de)g(Options)148
+651 y Fj(By)33 b(default,)h(the)f(euk)-5 b(ary)m(otic)34
+b(tRNA)f(mo)s(del)g(is)f(used)g(for)g(tRNA)i(analysis.)48
+b(T)-8 b(o)33 b(select)h(an)e(alternate)148 764 y(tRNA)37
+b(mo)s(del)f(for)g(sequences)g(from)g(other)g(sources)g(\(other)h(ph)m
+(ylogenetic)h(domains)e(or)g(mito)s(c)m(hon-)148 877
+y(dria/c)m(hloroplasts\),)d(use)d(one)h(of)f(the)h(follo)m(wing)h
+(options:)235 1083 y(-B)47 b(:)40 b(searc)m(h)31 b(for)f(bacterial)i
+(tRNAs)376 1232 y(This)e(option)h(selects)i(the)e(bacterial)h(co)m(v)-5
+b(ariace)34 b(mo)s(del)d(for)g(tRNA)g(analysis,)h(and)f(lo)s(osens)g
+(the)376 1345 y(searc)m(h)i(parameters)f(for)g(Eu\014ndtRNA)f(to)i
+(impro)m(v)m(e)h(detection)f(of)g(bacterial)h(tRNAs.)47
+b(Use)33 b(of)376 1458 y(this)d(mo)s(de)f(with)h(bacterial)i(sequences)
+e(will)h(also)g(impro)m(v)m(e)g(b)s(ounds)d(prediction)i(of)h(the)f(3')
+h(end)376 1571 y(\(the)g(terminal)f(CAA)h(triplet\).)232
+1756 y(-A)46 b(:)40 b(searc)m(h)31 b(for)f(arc)m(haeal)j(tRNAs)376
+1905 y(This)g(option)h(selects)h(an)f(arc)m(haeal-sp)s(eci\014c)h(co)m
+(v)-5 b(ariance)36 b(mo)s(del)e(for)f(tRNA)i(analysis,)g(as)f(w)m(ell)
+376 2018 y(as)c(sligh)m(tly)i(lo)s(osening)f(the)f(Eu\014ndtRNA)f
+(searc)m(h)i(cuto\013s.)229 2204 y(-O)46 b(:)40 b(searc)m(h)31
+b(for)f(organellar)i(\(mito)s(c)m(hondrial/c)m(hloroplast\))i(tRNAs)376
+2353 y(This)j(parameter)h(b)m(ypasses)g(the)g(fast)g(\014rst-pass)f
+(scanners)g(that)i(are)f(p)s(o)s(or)f(at)h(detecting)i(or-)376
+2466 y(ganellar)30 b(tRNAs)g(and)e(runs)g(Co)m(v)m(e)i(analysis)g(only)
+-8 b(.)41 b(Since)29 b(true)g(organellar)i(tRNAs)e(ha)m(v)m(e)i(b)s
+(een)376 2579 y(found)g(to)i(ha)m(v)m(e)h(Co)m(v)m(e)g(scores)f(b)s(et)
+m(w)m(een)g(15)g(and)f(20)h(bits,)g(the)g(searc)m(h)g(cuto\013)g(is)g
+(lo)m(w)m(ered)h(from)376 2692 y(20)41 b(to)f(15)h(bits.)70
+b(Also,)44 b(pseudogene)c(c)m(hec)m(king)i(is)e(disabled)g(since)g(it)h
+(is)f(only)g(applicable)h(to)376 2804 y(euk)-5 b(ary)m(otic)36
+b(cytoplasmic)h(tRNA)f(pseudogenes.)55 b(Since)35 b(Co)m(v)m(e-only)i
+(mo)s(de)d(is)h(used,)h(searc)m(hes)376 2917 y(will)30
+b(b)s(e)g(v)m(ery)h(slo)m(w)g(\(see)g(-C)f(option)h(b)s(elo)m(w\))g
+(relativ)m(e)i(to)e(the)f(default)h(mo)s(de.)228 3103
+y(-G)47 b(:)40 b(use)30 b(general)i(tRNA)f(mo)s(del)376
+3252 y(This)h(option)i(selects)h(the)f(original)h(tRNA)f(co)m(v)-5
+b(ariance)35 b(mo)s(del)f(that)g(w)m(as)g(trained)f(on)h(tRNAs)376
+3365 y(from)22 b(all)i(three)f(ph)m(ylogenetic)h(domains)f(\(arc)m
+(haea,)j(bacteria,)g(&)d(euk)-5 b(ary)m(a\).)39 b(This)22
+b(mo)s(de)h(can)g(b)s(e)376 3478 y(used)g(when)g(analyzing)j(a)f(mixed)
+f(collection)j(of)d(sequences)h(from)f(more)g(than)h(one)f(ph)m
+(ylogenetic)376 3591 y(domain,)36 b(with)e(only)h(sligh)m(t)h(loss)g
+(of)f(sensitivit)m(y)h(and)e(selectivit)m(y)-8 b(.)58
+b(The)35 b(original)h(publication)376 3704 y(describing)27
+b(this)g(program)g(and)g(tRNAscan-SE)h(v)m(ersion)g(1.0)g(used)f(this)g
+(general)h(tRNA)g(mo)s(del)376 3817 y(exclusiv)m(ely)-8
+b(.)42 b(If)29 b(y)m(ou)h(wish)f(to)i(compare)f(scores)g(to)h(those)f
+(found)e(in)i(the)g(pap)s(er)e(or)i(scans)g(using)376
+3930 y(v1.0,)42 b(use)c(this)g(option.)66 b(Use)39 b(of)g(this)f
+(option)h(is)g(compatible)h(with)e(all)h(other)g(searc)m(h)g(mo)s(de)
+376 4042 y(options)30 b(describ)s(ed)g(in)g(this)g(section.)234
+4228 y(-C)46 b(:)40 b(searc)m(h)31 b(using)f(Co)m(v)m(e)i(analysis)f
+(only)376 4377 y(Directs)42 b(tRNAscan-SE)f(to)g(analyze)h(sequences)f
+(using)f(Co)m(v)m(e)i(analysis)g(only)-8 b(.)72 b(This)40
+b(option)376 4490 y(allo)m(ws)30 b(a)g(sligh)m(tly)h(more)e(sensitiv)m
+(e)i(searc)m(h)f(than)f(the)h(default)f(tRNAscan)h(+)f(Eu\014ndtRNA)f
+Fh(\))376 4603 y Fj(Co)m(v)m(e)35 b(mo)s(de,)f(but)f(is)h(m)m(uc)m(h)g
+(slo)m(w)m(er)h(\(b)m(y)f(appro)m(x.)50 b(250)36 b(to)e(3,000)i
+(fold\).)51 b(Output)33 b(format)h(and)376 4716 y(other)c(program)g
+(defaults)h(are)g(otherwise)f(iden)m(tical)j(to)e(the)f(normal)h
+(analysis.)232 4901 y(-H)46 b(:)53 b(sho)m(w)37 b(b)s(oth)f(primary)g
+(&)g(secondary)h(structure)f(score)i(comp)s(onen)m(ts)f(to)g(co)m(v)-5
+b(ariance)39 b(mo)s(del)376 5014 y(bit)30 b(scores)376
+5163 y(This)21 b(option)i(displa)m(ys)g(the)f(breakdo)m(wn)g(of)h(the)f
+(t)m(w)m(o)i(comp)s(onen)m(ts)f(of)f(the)h(co)m(v)-5
+b(ariance)25 b(mo)s(del)d(bit)376 5276 y(score.)41 b(Since)29
+b(tRNA)h(pseudogenes)g(often)g(ha)m(v)m(e)g(one)g(v)m(ery)g(lo)m(w)g
+(comp)s(onen)m(t)g(\(go)s(o)s(d)g(secondary)1920 5525
+y(7)p eop end
+%%Page: 8 8
+TeXDict begin 8 7 bop 376 273 a Fj(structure)35 b(but)h(p)s(o)s(or)g
+(primary)f(sequence)i(similarit)m(y)h(to)f(the)f(tRNA)h(mo)s(del,)h(or)
+e(vice)i(v)m(ersa\),)376 386 y(this)d(information)h(ma)m(y)g(b)s(e)f
+(useful)g(in)g(deciding)h(whether)f(a)g(lo)m(w-scoring)j(tRNA)e(is)f
+(lik)m(ely)i(to)376 499 y(b)s(e)d(a)h(pseudogene.)53
+b(The)34 b(heuristic)h(pseudogene)f(detection)i(\014lter)f(uses)f(this)
+g(information)h(to)376 612 y(\015ag)f(p)s(ossible)f(pseudogenes)h({)h
+(use)e(this)h(option)h(to)f(see)h(wh)m(y)e(a)i(hit)f(is)g(mark)m(ed)g
+(as)g(a)g(p)s(ossible)376 724 y(pseudogene.)51 b(It)35
+b(ma)m(y)f(b)s(e)g(helpful)f(to)i(examine)f(score)h(breakdo)m(wns)f
+(from)f(kno)m(wn)h(tRNAs)g(in)376 837 y(the)c(organism)h(of)f(in)m
+(terest)i(to)f(get)g(a)g(frame)g(of)f(reference.)230
+1025 y(-D)47 b(:)40 b(disable)31 b(pseudogene)f(c)m(hec)m(king)376
+1175 y(Man)m(ually)22 b(disable)g(c)m(hec)m(king)h(tRNAs)e(for)g(p)s(o)
+s(or)g(primary)f(or)i(secondary)f(structure)g(scores)h(often)376
+1288 y(indicativ)m(e)31 b(of)f(euk)-5 b(ary)m(otic)32
+b(pseudogenes.)40 b(This)29 b(will)i(sligh)m(tly)g(sp)s(eed)e(the)h
+(program)g(&)f(ma)m(y)i(b)s(e)376 1401 y(necessary)i(for)h(non-euk)-5
+b(ary)m(otic)34 b(sequences)g(that)g(are)g(\015agged)g(as)g(p)s
+(ossible)f(pseudogenes)g(but)376 1514 y(are)d(kno)m(wn)g(to)h(b)s(e)f
+(functional)h(tRNAs.)148 1757 y Fi(5.2)113 b(Output)37
+b(Options)101 1929 y Fj(-o)31 b Fg(\014le)53 b Fj(:)40
+b(sa)m(v)m(e)32 b(\014nal)e(results)g(in)g Fg(\014le)376
+2079 y Fj(Sp)s(eci\014y)f(this)h(option)h(to)g(write)g(results)f(to)h
+Fg(\014le)37 b Fj(rather)31 b(than)f(standard)f(output.)119
+2267 y(-f)h Fg(\014le)53 b Fj(:)40 b(sa)m(v)m(e)32 b(results)e(and)g
+(Co)m(v)m(e)i(tRNA)f(secondary)f(structures)g(to)h Fg(\014le)376
+2396 y Fj(This)36 b(option)h(sa)m(v)m(es)h(results)f(and)f(secondary)h
+(structure)f(information)h(\(as)h(predicted)e(b)m(y)h(the)376
+2487 y(co)m(v)m(es)24 b(program\))f(in)f Fg(\014le)p
+Fj(.)38 b(Use)23 b(\\$")h(in)e(place)h(of)g Fg(\014le)30
+b Fj(to)23 b(send)f(to)h(standard)f(output.)37 b(An)22
+b(example)376 2578 y(of)30 b(the)h(output)f(format)g(for)h(one)f(tRNA)h
+(app)s(ears)f(b)s(elo)m(w:)376 2782 y Fa(CELF22B7.trna4)42
+b(\(26992-26920\))160 b(Length:)41 b(73)e(bp)376 2873
+y(Type:)h(Phe)275 b(Anticodon:)42 b(GAA)e(at)f(34-36)i(\(26959-26957\))
+120 b(Score:)41 b(73.88)729 2964 y(*)157 b(|)g(*)g(|)g(*)g(|)g(*)h(|)f
+(*)g(|)g(*)g(|)g(*)g(|)376 3056 y(Seq:)40 b
+(GCCTCGATAGCTCAGTTGGGAGAGCGTACG)q(ACTGA)q(AGAT)q(CGTA)q(AGGtC)q(ACCA)q
+(GTTCG)q(ATCC)q(TGGT)q(TCGGG)q(GCA)376 3147 y(Str:)g
+(>>>>>>>..>>>>........<<<<.>>>>)q(>....)q(...<)q(<<<<)q(.....)q(>>>>)q
+(>....)q(...<)q(<<<<)q(<<<<<)q(<<.)572 3330 y(|)196 b(|)79
+b(|)549 b(|)40 b(|)588 b(|)197 b(|)588 b(||)197 b(|)572
+3421 y(+-----+)80 b(+--------------+)43 b(+---------------+)200
+b(+---------------++-----+)689 3512 y(|)314 b(D-stem/loop)278
+b(Anticodon)472 b(TPC)40 b(stem/loop)159 b(|)689 3604
+y(|)1060 b(stem/loop)1100 b(|)689 3695 y(+--------------------------)q
+(-----)q(----)q(----)q(-----)q(----)q(-----)q(----)q(----)q(---+)1631
+3786 y(Isoacceptor)42 b(stem)376 4103 y Fj(The)24 b(\014rst)g(line)h
+(con)m(tains)h(the)f(sequence)h(name,)g(trna#,)g(tRNA)f(b)s(ounds)e
+(\(in)i(paren)m(theses\),)i(and)376 4216 y(length)34
+b(of)g(the)g(tRNA.)g(The)g(next)g(line)g(con)m(tains)h(the)f
+(isoacceptor)i(tRNA)e(T)m(yp)s(e,)g(An)m(tico)s(don)376
+4328 y(\(with)41 b(tRNA-relativ)m(e)j(and)d(sequence-absolute)h(b)s
+(ounds\),)h(and)d(the)i(Co)m(v)m(e)g(Score.)74 b(This)40
+b(is)376 4441 y(iden)m(tical)e(information)e(as)h(w)m(ould)f(b)s(e)f
+(seen)i(in)f(the)g(tabular)g(output)g(format,)i(excluding)f(the)376
+4554 y(an)m(tico)s(don)k(b)s(ounds.)71 b(The)40 b(next)h(line)g(con)m
+(tains)i(hash)d(marks)g(ev)m(ery)i(5)f(and)g(10)g(bp)f(to)i(ease)376
+4667 y(p)s(osition)32 b(iden)m(ti\014cation)i(in)f(the)f(tRNA)h
+(sequence)g(that)g(app)s(ears)f(on)h(the)f(follo)m(wing)i(line.)48
+b(On)376 4780 y(the)35 b(sequence)h(line,)h(n)m(ucleotides)g(matc)m
+(hing)g(the)e(\\consensus")h(tRNA)g(mo)s(del)f(used)g(in)g(Co)m(v)m(e)
+376 4893 y(analysis)f(app)s(ear)g(in)f(upp)s(er)f(case,)37
+b(while)d(in)m(trons)g(and)f(other)i(n)m(ucleotides)g(in)f(non-conserv)
+m(ed)376 5006 y(p)s(ositions)28 b(are)h(prin)m(ted)g(in)f(lo)m(w)m
+(er-case)j(letters.)42 b(The)28 b(last)h(line)g(con)m(tains)h
+(predicted)f(secondary)376 5119 y(structure)43 b(folding)h(of)f(the)h
+(tRNA,)h(with)e(nested)h(')p Fd(>)p Fj(')g(and)f(')p
+Fd(<)p Fj(')h(sym)m(b)s(ols)f(represen)m(ting)h(base)376
+5232 y(pairings.)c(The)30 b(v)-5 b(arious)30 b(tRNA)h(features)g(are)g
+(lab)s(elled)g(in)f(this)g(example.)1920 5525 y(8)p eop
+end
+%%Page: 9 9
+TeXDict begin 9 8 bop 254 273 a Fj(-a)47 b(:)40 b(output)30
+b(results)g(in)g(A)m(CeDB)i(output)e(format)376 423 y(This)42
+b(option)i(allo)m(ws)h(results)f(to)g(b)s(e)f(written)g(in)h(A)m(CeDB)h
+(format)f(instead)f(of)h(the)g(default)376 536 y(tabular)30
+b(output)g(format.)71 724 y(-m)g Fg(\014le)53 b Fj(:)40
+b(sa)m(v)m(e)32 b(statistics)h(summary)c(for)h(run)376
+874 y(This)c(option)i(directs)f(tRNAscan-SE)h(to)g(write)g(a)f(brief)g
+(summary)f(to)i Fg(\014le)34 b Fj(whic)m(h)27 b(con)m(tains)i(the)376
+987 y(run)34 b(options)i(selected)i(as)e(w)m(ell)h(as)f(statistics)i
+(on)e(the)g(n)m(um)m(b)s(er)f(of)h(tRNAs)g(detected)h(at)g(eac)m(h)376
+1100 y(phase)28 b(of)i(the)f(searc)m(h,)h(searc)m(h)g(sp)s(eed,)f(and)f
+(other)h(statistics)i(\(examples)f(on)f(follo)m(wing)i(pages\).)1920
+5525 y(9)p eop end
+%%Page: 10 10
+TeXDict begin 10 9 bop 376 273 a Fj(F)-8 b(ollo)m(wing)42
+b(is)d(a)i(description)e(of)h(eac)m(h)h(of)f(these)g(statistics,)k
+(follo)m(w)m(ed)e(b)m(y)d(an)h(example)g(stats)376 372
+y(summary)29 b(\014le)h(created)i(from)e(scanning)g(the)g(C.)h(elegans)
+g(cosmid)g(F59C12:)376 584 y Fc(tRNAscan-SE)39 b(run)j(results)f(\(on)h
+(host)g(<computer)e(name>\))376 684 y(Started:)g(<time)h(&)j(date)d
+(tRNAscan-SE)f(began>)376 883 y(<Parameters)f(used)j(for)g(search)f
+(printed)g(here>)376 1082 y(First-pass)e(\(tRNAscan/Eufind)o(tRN)o(A\))
+e(Stats:)376 1182 y(---------------)o(---)o(--)o(--)o(---)o(--)o(---)o
+(--)o(---)o(--)o(--)376 1282 y(Sequences)i(read:)391
+b(<total)41 b(#)i(of)g(FASTA)e(sequences)f(read>)376
+1381 y(Seqs)i(w/at)f(least)h(1)h(hit:)86 b(<total)41
+b(sequences)f(with)i(at)g(least)g(one)g(tRNA)g(predicted>)376
+1481 y(Bases)f(read:)565 b(<total)41 b(nucleotides)e(in)k(all)f
+(sequences)e(searched)g(\(both)i(strands\)>)376 1580
+y(Bases)f(in)i(tRNAs:)390 b(<total)41 b(nucleotides)e(in)k(tRNAs)e
+(predicted>)376 1680 y(tRNAs)g(predicted:)345 b(<#)42
+b(tRNAs)g(predicted)e(from)i(first-pass)d(search)i(program\(s\)>)376
+1780 y(Av.)h(tRNA)g(length:)346 b(<average)40 b(tRNA)i(length>)376
+1879 y(Script)f(CPU)h(time:)347 b(<CPU)42 b(time)g(spent)f(by)i
+(tRNAscan-SE)1465 1979 y(reading)e(seqs,)g(setting)g(up)i(run)f(&)h
+(writing)e(results>)376 2079 y(Scan)h(CPU)g(time:)434
+b(<CPU)42 b(time)g(spent)f(by)i(tRNAscan/Eufindt)o(RN)o(A)38
+b(finding)i(tRNAs>)376 2178 y(Scan)i(speed:)564 b(<Averaged)40
+b(tRNAscan+Eufind)o(tR)o(NA)d(search)k(speed>)376 2377
+y(First)g(pass)h(search\(es\))d(ended:)j(<time)f(&)i(date)f
+(tRNAscan/EufindtR)o(NA)37 b(searches)1683 2477 y(finished,)j(Cove)i
+(analysis)e(begins>)376 2676 y(Cove)i(Stats:)376 2776
+y(-----------)376 2876 y(Candidate)d(tRNAs)j(read:)172
+b(<number)41 b(of)i(tRNAs)e(detected)f(by)j(tRNAscan/EufindtR)o(NA)1509
+2975 y(that)f(were)g(passed)f(to)i(Cove)e(for)i(verification>)376
+3075 y(Cove-confirmed)37 b(tRNAs:)172 b(<number)41 b(of)i(tRNAs)e
+(positively)f(confirmed)g(by)i(Cove>)376 3174 y(Bases)f(scanned)g(by)i
+(covels:)d(<total)h(nucleotides)e(in)k(all)f(tRNAs)g(searched)e(by)1509
+3274 y(Cove)i(\(covels-SE)d(program\))h(analysis>)376
+3374 y(\045)j(seq)f(scanned)f(by)i(covels:)d(<percent)h(of)h(total)g
+(nucleotides)d(in)k(input)1509 3473 y(sequences)d(that)i(were)g
+(analyzed)e(by)j(Cove>)376 3573 y(Script)e(CPU)h(time:)390
+b(<CPU)42 b(time)g(spent)g(by)g(tRNAscan-SE)d(reading)1509
+3673 y(seqs,)i(setting)g(up)i(runs)f(&)h(writing)e(results>)376
+3772 y(Cove)h(CPU)g(time:)477 b(<CPU)42 b(time)g(spent)g(by)g(Cove)g
+(analysis)f(programs>)376 3872 y(Scan)h(speed:)607 b(<Average)41
+b(Cove)g(search)h(speed>)376 4071 y(Cove)g(analysis)e(of)j(tRNAs)e
+(ended:)g(<time)h(&)h(date)f(Cove)g(analysis)1727 4171
+y(and)g(tRNAscan-SE)d(completed>)376 4270 y(Summary)376
+4370 y(--------)376 4470 y(Confirmed)g(tRNAs:)216 b(<total)41
+b(tRNAs)h(predicted)d(by)k(tRNAscan-SE>)376 4569 y(Overall)d(scan)i
+(speed:)85 b(<Average)40 b(search)h(speed)h(for)g(tRNAscan-SE>)1897
+5525 y Fj(10)p eop end
+%%Page: 11 11
+TeXDict begin 11 10 bop 376 273 a Fj(An)35 b(example)h(stats)h(summary)
+d(\014le)i(using)f(the)h(default)g(searc)m(h)g(options)g(on)f(cosmid)h
+(F59C12)376 372 y(follo)m(ws:)376 684 y Fc(tRNAscan-SE)j(run)j(results)
+f(\(on)h(host)g(wol\))376 783 y(Started:)e(Wed)i(Feb)86
+b(5)43 b(15:02:30)e(CST)h(1997)376 983 y(---------------)o(---)o(--)o
+(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o
+(---)o(--)o(---)o(-)376 1082 y(Sequence)e(file\(s\))h(to)h(search:)85
+b(F59C12.fa)376 1182 y(Results)40 b(written)h(to:)435
+b(Standard)40 b(output)376 1282 y(Output)h(format:)651
+b(Tabular)376 1381 y(Searching)39 b(with:)609 b(tRNAscan)40
+b(+)j(EufindtRNA)c(->)k(Cove)376 1481 y(tRNAscan)d(parameters:)388
+b(Strict)376 1580 y(EufindtRNA)39 b(parameters:)301 b(Relaxed)40
+b(\(Int)i(Cutoff=)f(-32.1\))376 1680 y(Search)g(statistics)e(saved)j
+(in:)86 b(F59C12.stats)376 1780 y(---------------)o(---)o(--)o(--)o
+(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o
+(--)o(---)o(-)376 1979 y(First-pass)39 b(\(tRNAscan/Eufind)o(tRN)o(A\))
+e(Stats:)376 2079 y(---------------)376 2178 y(Sequences)i(read:)391
+b(1)376 2278 y(Seqs)42 b(w/at)f(least)h(1)h(hit:)86 b(1)376
+2377 y(Bases)41 b(read:)565 b(57976)41 b(\(both)h(strands\))376
+2477 y(Bases)f(in)i(tRNAs:)390 b(299)376 2577 y(tRNAs)41
+b(predicted:)345 b(4)376 2676 y(Av.)42 b(tRNA)g(length:)346
+b(74)376 2776 y(Script)41 b(CPU)h(time:)347 b(0.19)42
+b(s)376 2876 y(Scan)g(CPU)g(time:)434 b(0.55)42 b(s)376
+2975 y(Scan)g(speed:)564 b(105.4)41 b(Kbp/sec)376 3174
+y(First)g(pass)h(search\(es\))d(ended:)j(Wed)g(Feb)86
+b(5)43 b(15:02:31)d(CST)j(1997)376 3374 y(Cove)f(Stats:)376
+3473 y(-----------)376 3573 y(Candidate)d(tRNAs)j(read:)216
+b(4)376 3673 y(Cove-confirmed)37 b(tRNAs:)216 b(3)376
+3772 y(Bases)41 b(scanned)g(by)i(covels:)84 b(355)376
+3872 y(\045)43 b(seq)f(scanned)f(by)i(covels:)84 b(0.6)42
+b(\045)376 3971 y(Script)f(CPU)h(time:)434 b(0.24)42
+b(s)376 4071 y(Cove)g(CPU)g(time:)521 b(8.08)42 b(s)376
+4171 y(Scan)g(speed:)651 b(43.9)42 b(bp/sec)376 4370
+y(Cove)g(analysis)e(of)j(tRNAs)e(ended:)g(Wed)i(Feb)85
+b(5)44 b(15:02:43)c(CST)i(1997)376 4569 y(Summary)376
+4669 y(--------)376 4768 y(Confirmed)d(tRNAs:)172 b(3)376
+4868 y(Overall)40 b(scan)i(speed:)f(6399.1)g(bp/sec)1897
+5525 y Fj(11)p eop end
+%%Page: 12 12
+TeXDict begin 12 11 bop 249 273 a Fj(-d)46 b(:)40 b(displa)m(y)31
+b(program)f(progress)g(messages)376 423 y(This)43 b(option)i(directs)g
+(the)g(program)f(to)h(prin)m(t)f(messages)i(indicating)f(the)g
+(progress)f(of)h(the)376 536 y(program)32 b(to)i(standard)e(output.)48
+b(If)33 b(\014nal)f(results)h(are)g(also)h(b)s(eing)f(sen)m(t)g(to)h
+(standard)e(output,)376 649 y(some)25 b(of)h(these)g(messages)g(will)g
+(b)s(e)e(suppressed)g(so)h(as)h(to)g(not)g(in)m(terrupt)e(displa)m(y)i
+(of)f(the)h(results.)121 837 y(-l)31 b Fg(\014le)53 b
+Fj(:)40 b(sa)m(v)m(e)32 b(log)g(of)e(program)g(progress)g(in)g
+Fg(\014le)376 987 y Fj(Iden)m(tical)h(to)g(-d)g(option,)g(but)e(sends)h
+(message)h(to)g Fg(\014le)38 b Fj(instead)30 b(of)h(standard)e(output.)
+376 1100 y Fg(Note:)43 b Fj(the)26 b(-d)f(option)i(o)m(v)m(errides)f
+(the)g(-l)g(option)h(if)e(b)s(oth)g(are)h(sp)s(eci\014ed)g(on)f(the)h
+(same)g(command)376 1213 y(line.)252 1400 y(-q)46 b(:)40
+b(quiet)31 b(mo)s(de)f(\(credits)h(&)f(run)f(option)i(selections)h
+(suppressed\))376 1551 y(This)22 b(option)h(suppresses)e(the)i(program)
+f(credits)h(and)g(run)e(option)i(selections)i(normally)e(prin)m(ted)376
+1663 y(to)31 b(standard)e(error)h(at)h(the)g(b)s(eginning)f(of)g(eac)m
+(h)i(run.)249 1851 y(-b)46 b(:)40 b(brief)30 b(output)g(format)h(\(no)f
+(column)h(headers\))376 2001 y(This)25 b(option)h(eliminates)i(column)e
+(headers)g(that)g(app)s(ear)g(b)m(y)g(default)g(when)f(writing)h
+(results)g(in)376 2114 y(tabular)j(output)f(format.)41
+b(Useful)29 b(if)g(results)g(are)h(to)f(b)s(e)g(parsed)f(or)h(sen)m(t)h
+(to)g(another)f(program.)232 2302 y(-N)46 b(:)40 b(output)30
+b(corresp)s(onding)g(co)s(dons)g(instead)g(of)h(tRNA)g(an)m(tico)s
+(dons)376 2452 y(This)h(option)j(causes)f(tRNAscan-SE)g(to)g(output)f
+(a)h(tRNA's)h(corresp)s(onding)d(co)s(don)i(in)f(place)376
+2565 y(of)d(its)h(an)m(tico)s(don.)141 2753 y(-?)40 b(#)46
+b(:)40 b(use)30 b(of)h('#')f(sym)m(b)s(ol)h(in)f(sp)s(ecifying)g
+(output)g(\014le)g(names)376 2903 y(The)f('#')i(sym)m(b)s(ol)e(ma)m(y)i
+(b)s(e)f(used)f(as)h(shorthand)f(to)i(sp)s(ecify)f(\\default")h(\014le)
+f(names)h(for)e(output)376 3016 y(\014les.)52 b(The)34
+b(default)h(\014le)f(names)h(are)f(constructed)h(b)m(y)f(using)g(the)h
+(input)e(sequence)i(\014le)g(name,)376 3129 y(follo)m(w)m(ed)d(b)m(y)e
+(an)g(extension)h(sp)s(ecifying)f(the)h(output)f(\014le)g(t)m(yp)s(e)h
+Fg(se)-5 b(q\014le.ext)39 b Fj(where)30 b Fg(.ext)39
+b Fj(is:)425 3461 y(Extension)100 b(Pro)s(duced)29 b(b)m(y)i(Option)99
+b(Description)p 376 3518 3641 4 v 425 3597 a(.out)705
+b(-o)469 b(\014nal)30 b(output)g(results)g(\(tabular)h(or)f(A)m(CeDB)i
+(format\))425 3710 y(.stats)634 b(-m)453 b(summary)29
+b(statistics)j(\014le)425 3823 y(.log)731 b(-l)479 b(run)29
+b(progress)h(\014le)425 3935 y(.ss)773 b(-f)477 b(secondary)30
+b(structures)g(sa)m(v)m(e)i(\014le)425 4048 y(.fpass.out)489
+b(-r)473 b(formatted,)31 b(tabular)g(output)f(from)g(\014rst-pass)f
+(runs)425 4161 y(.fp)s(os)666 b(-F)462 b(F)-10 b(AST)i(A)30
+b(\014le)h(of)f(tRNAs)h(iden)m(ti\014ed)g(in)f(\014rst-pass)f(scans)
+1830 4274 y(that)i(w)m(ere)g(found)e(to)i(b)s(e)f(false)h(p)s(ositiv)m
+(es)g(b)m(y)f(Co)m(v)m(e)i(analysis)376 4534 y Fg(Note:)478
+4722 y Ff({)46 b Fj(if)28 b(the)g(input)f(sequence)h(\014le)h(name)f
+(has)f(the)i(extensions)f('.fa')h(or)f('.seq',)i(these)f(extensions)576
+4834 y(will)g(b)s(e)f(remo)m(v)m(ed)h(b)s(efore)g(using)f(the)h
+(\014lename)f(as)h(a)g(pre\014x)f(for)g(default)h(\014le)g(names.)40
+b(\(ex-)576 4947 y(ample:)e(input)25 b(\014le)g(name)h('Mygene.seq')h
+(will)f(ha)m(v)m(e)h(the)f(output)f(\014le)g(name)h('Mygene.out')576
+5060 y(if)k('#')g(is)h(used)e(with)i(the)f(-o)h(option\).)1897
+5525 y(12)p eop end
+%%Page: 13 13
+TeXDict begin 13 12 bop 478 273 a Ff({)46 b Fj(if)36
+b(more)g(than)f(one)i(sequence)f(\014le)g(is)g(sp)s(eci\014ed)f(on)h
+(the)g(command)g(line,)i(the)e(\\default")576 386 y(output)30
+b(\014le)i(pre\014x)e(will)h(b)s(e)g(the)g(name)h(of)f(the)g(FIRST)g
+(sequence)g(\014le)h(on)f(the)g(command)576 499 y(line.)38
+b(Use)23 b(the)f(-p)g(option)g(\(describ)s(ed)g(next\))h(to)g(c)m
+(hange)g(this)f(default)g(name)h(to)g(something)576 612
+y(more)29 b(appropriate)g(when)g(sp)s(ecifying)g(more)g(than)g(one)h
+(sequence)f(\014le)h(on)f(the)g(command)576 724 y(line.)38
+912 y(-p)h Fg(lab)-5 b(el)56 b Fj(:)40 b(use)30 b Fg(lab)-5
+b(el)41 b Fj(pre\014x)29 b(for)h(all)i(output)e(\014les)376
+1062 y(This)35 b(option)h(allo)m(ws)h(the)f(user)f(to)h(sp)s(ecify)g
+(the)g(default)g(output)f(\014le)h(pre\014x)f(when)g(using)g(the)376
+1175 y('#')30 b(\014le)h(name)f(sp)s(eci\014cation)h(\(instead)g(of)g
+(using)f(the)g(input)g(sequence)g(\014le)h(name\).)252
+1363 y(-y)46 b(:)40 b(sho)m(w)31 b(origin)f(of)h(\014rst-pass)e(hits)
+376 1513 y(This)23 b(option)i(displa)m(ys)g(whic)m(h)f(of)g(the)h
+(\014rst-pass)f(scanners)g(detected)h(the)g(tRNA)g(b)s(eing)f(output.)
+376 1626 y(\\Ts",)i(\\Eu",)h(or)e(\\Bo")h(will)g(app)s(ear)e(in)h(the)g
+(last)h(column)f(of)g(T)-8 b(abular)25 b(output,)h(indicating)f(that)
+376 1739 y(either)g(tRNAscan)g(1.4,)i(Eu\014ndtRNA,)d(or)g(b)s(oth)g
+(scanners)h(detected)h(the)f(tRNA,)g(resp)s(ectiv)m(ely)-8
+b(.)148 1982 y Fi(5.3)113 b(Sp)s(ecify)38 b(Alternate)f(Cuto\013s)h(/)f
+(Data)h(Files)-2 2154 y Fj(-X)31 b Fg(sc)-5 b(or)g(e)54
+b Fj(:)40 b(set)31 b(Co)m(v)m(e)h(cuto\013)f(score)g(for)f(rep)s
+(orting)g(tRNAs)h(\(default=20\))376 2304 y(This)i(option)h(allo)m(ws)h
+(the)f(user)g(to)g(sp)s(ecify)g(a)g(di\013eren)m(t)h(Co)m(v)m(e)g
+(score)f(threshold)g(for)f(rep)s(orting)376 2417 y(tRNAs.)40
+b(It)29 b(is)h(not)f(recommended)g(that)g(no)m(vice)i(users)d(c)m
+(hange)i(this)f(cuto\013,)h(as)g(a)f(lo)m(w)m(er)h(cuto\013)376
+2530 y(score)45 b(will)f(increase)h(the)g(n)m(um)m(b)s(er)e(of)h
+(pseudogenes)h(and)e(other)i(false)g(p)s(ositiv)m(es)g(found)e(b)m(y)
+376 2643 y(tRNAscan-SE)34 b(\(esp)s(ecially)i(when)d(used)g(with)g(the)
+i(\\Co)m(v)m(e)g(only")g(scan)f(mo)s(de\).)51 b(Con)m(v)m(ersely)-8
+b(,)376 2756 y(a)36 b(higher)f(cuto\013)h(than)g(20.0)h(bits)e(will)h
+(lik)m(ely)h(cause)g(true)e(tRNAs)h(to)g(b)s(e)f(missed)h(\(n)m
+(umerous)376 2869 y(\\real")c(tRNAs)g(ha)m(v)m(e)h(b)s(een)d(found)g
+(just)h(ab)s(o)m(v)m(e)h(the)g(20.0)g(cuto\013)7 b(\).)45
+b(Kno)m(wledgable)32 b(users)e(ma)m(y)376 2982 y(wish)21
+b(to)i(exp)s(erimen)m(t)g(with)f(this)g(parameter)h(to)g(\014nd)e(un)m
+(usual)g(tRNAs)i(or)g(pseudogenes)f(b)s(ey)m(ond)376
+3095 y(the)30 b(normal)g(range)h(of)g(detection,)h(k)m(eeping)f(the)g
+(preceding)f(ca)m(v)m(eats)j(in)d(mind.)-29 3282 y(-L)h
+Fg(length)53 b Fj(:)40 b(set)31 b(max)g(length)f(of)h(tRNA)g(in)m
+(tron+v)-5 b(ariable)31 b(region)g(\(default=116bp\))376
+3433 y(The)25 b(default)h(maxim)m(um)g(tRNA)h(length)f(for)g
+(tRNAscan-SE)g(is)g(192)h(bp,)f(but)g(this)g(limit)g(can)h(b)s(e)376
+3546 y(increased)22 b(with)f(this)h(option)g(to)h(allo)m(w)g(searc)m
+(hes)f(with)g(no)g(practical)h(limit)g(on)e(tRNA)i(length.)38
+b(In)376 3658 y(the)29 b(\014rst)g(phase)g(of)h(tRNAscan-SE,)g
+(Eu\014ndtRNA)e(searc)m(hes)i(for)f(A)h(and)f(B)g(b)s(o)m(xes)h(of)f
+(<length>)376 3771 y(maxim)m(um)20 b(distance)h(apart,)i(and)d(passes)g
+(only)g(the)h(5')g(and)f(3')h(tRNA)g(ends)e(to)j(co)m(v)-5
+b(ariance)22 b(mo)s(del)376 3884 y(analysis)33 b(for)f(con\014rmation)h
+(\(remo)m(ving)h(the)f(bulk)f(of)h(long)g(in)m(terv)m(ening)h
+(sequences\).)49 b(tRNAs)376 3997 y(con)m(taining)40
+b(group)e(I)h(and)g(I)s(I)f(in)m(trons)g(ha)m(v)m(e)j(b)s(een)d
+(detected)i(b)m(y)f(setting)h(this)f(parameter)g(to)376
+4110 y(o)m(v)m(er)27 b(800)h(bp.)39 b(Caution:)f(group)26
+b(I)h(or)f(I)s(I)g(in)m(trons)g(in)g(tRNAs)h(tend)g(to)g(o)s(ccur)f(in)
+g(p)s(ositions)h(other)376 4223 y(than)36 b(the)g(canonical)i(p)s
+(osition)e(of)h(protein-spliced)f(in)m(trons,)i(so)f(tRNAscan-SE)f
+(mispredicts)376 4336 y(the)30 b(in)m(tron)h(b)s(ounds)d(and)i(an)m
+(tico)s(don)h(sequence)g(for)f(these)h(cases.)41 b(tRNA)31
+b(b)s(ound)e(predictions,)376 4449 y(ho)m(w)m(ev)m(er,)j(ha)m(v)m(e)f
+(b)s(een)f(found)f(to)i(b)s(e)f(reliable)h(in)f(these)h(same)g(tRNAs.)
+34 4636 y(-I)f Fg(sc)-5 b(or)g(e)54 b Fj(:)40 b(man)m(ually)31
+b(set)g(\\in)m(termediate")i(cuto\013)e(score)g(for)f(Eu\014ndtRNA)376
+4787 y(This)37 b(score)j(cuto\013)f(a\013ects)h(the)f(sensitivit)m(y)h
+(of)f(the)f(\014rst-pass)g(scanner)h(Eu\014ndtRNA.)e(This)376
+4900 y(parameter)27 b(should)f(not)i(need)f(to)h(b)s(e)e(adjusted)h
+(from)g(its)g(default)h(v)-5 b(alues)27 b(\(v)-5 b(ariable)29
+b(dep)s(ending)376 5013 y(on)39 b(searc)m(h)h(mo)s(de\),)i(but)d(is)h
+(included)e(for)i(users)f(who)g(are)h(familiar)g(with)f(the)h(P)m(a)m
+(v)m(esi)i Fg(et)f(al.)376 5125 y Fj(\(1994\))f(pap)s(er)d(and)g(wish)h
+(to)g(set)h(it)f(man)m(ually)-8 b(.)65 b(See)38 b(Lo)m(w)m(e)h(&)f
+(Eddy)f(\(1997\))j(for)e(details)h(on)376 5238 y(parameter)30
+b(v)-5 b(alues)31 b(used)f(b)m(y)g(tRNAscan-SE)h(dep)s(ending)e(on)h
+(the)h(searc)m(h)g(mo)s(de.)1897 5525 y(13)p eop end
+%%Page: 14 14
+TeXDict begin 14 13 bop -72 273 a Fj(-z)31 b Fg(numb)-5
+b(er)56 b Fj(:)40 b(use)30 b Fg(numb)-5 b(er)41 b Fj(n)m(ucleotides)32
+b(padding)d(for)h(\014rst-pass)g(tRNA)h(predictions)376
+423 y(By)d(default,)g(tRNAscan-SE)h(adds)e(7)h(n)m(ucleotides)h(to)g(b)
+s(oth)e(ends)g(of)h(tRNA)g(predictions)g(when)376 536
+y(\014rst-pass)f(tRNA)i(predictions)f(are)g(passed)g(to)h(co)m(v)-5
+b(ariance)30 b(mo)s(del)e(\(CM\))h(analysis.)40 b(CM)28
+b(anal-)376 649 y(ysis)34 b(generally)h(trims)f(these)g(b)s(ounds)e
+(bac)m(k)j(do)m(wn,)g(but)e(on)h(o)s(ccassion,)i(allo)m(ws)g
+(prediction)e(of)376 762 y(an)c(otherwise)h(truncated)f(\014rst-pass)g
+(tRNA)h(prediction.)101 949 y(-g)g Fg(\014le)53 b Fj(:)40
+b(use)30 b(alternate)i(genetic)g(co)s(des)f(sp)s(eci\014ed)f(in)g
+Fg(\014le)37 b Fj(for)30 b(determining)g(tRNA)h(t)m(yp)s(e)376
+1100 y(By)e(default,)h(tRNAscan-SE)g(uses)f(a)h(standard)f(univ)m
+(ersal)h(co)s(don)f Fh(!)g Fj(amino)h(acid)g(translation)376
+1213 y(table)37 b(that)h(is)f(sp)s(eci\014ed)f(at)i(the)f(end)g(of)g
+(the)g(tRNAscan-SE.src)h(source)f(\014le.)60 b(In)37
+b(man)m(y)g(mi-)376 1326 y(to)s(c)m(hondrial)32 b(and)g(a)h(n)m(um)m(b)
+s(er)d(of)j(other)f(microbial)h(organisms,)g(there)f(are)h(exceptions)g
+(to)g(this)376 1438 y(univ)m(ersal)i(translation)h(co)s(de.)56
+b(This)35 b(option)h(allo)m(ws)g(the)g(user)e(to)i(sp)s(ecify)f
+(exceptions)i(to)f(the)376 1551 y(univ)m(ersal)g(co)s(de.)58
+b(Sev)m(eral)38 b(alternate)f(translation)h(co)s(de)e(\014les)g(are)h
+(included)e(in)h(this)g(pac)m(k)-5 b(age)376 1664 y(for)30
+b(con)m(v)m(enience:)376 1901 y Fc(gcode.cilnuc)38 b(for)43
+b(Ciliates,)c(Dasycladacean,)f(&)43 b(Hexamita)e(nuclear)f(tRNAs)376
+2001 y(gcode.echdmito)d(for)43 b(Echinoderm)c(mitochondrial)f(tRNAs)376
+2100 y(gcode.invmito)g(for)k(Invertibrate)d(mitochondrial)f(tRNAs)376
+2200 y(gcode.othmito)g(for)k(Mold,)g(Protozoans,)d(&)k(Coelenterate)38
+b(mitochondrial)h(tRNAs)376 2299 y(gcode.vertmito)e(for)43
+b(Vertibrate)c(mitochondrial)f(tRNAs)376 2399 y(gcode.ystmito)81
+b(for)43 b(Yeast)e(mitochondrial)d(tRNAs)376 2649 y Fj(The)26
+b(user)h(ma)m(y)g(also)i(create)f(a)g(new)f(alternate)h(translation)h
+(\014le.)39 b(An)27 b(example)h(of)f(an)g(alternate)376
+2762 y(translation)k(co)s(de)g(sp)s(eci\014cation)g(\014le)f(follo)m
+(ws:)376 2998 y Fc(#)43 b(Vertebrate)c(mitochondrial)f(translation)h
+(codes)376 3098 y(#)k(Format:)84 b(<Codon>)41 b(<3-letter)f(AA)i
+(abbreviation>)d(<One)i(letter)h(AA)g(abrev>)376 3297
+y(TGA)216 b(Trp)43 b(W)376 3397 y(ATA)216 b(Met)43 b(M)376
+3497 y(AGR)216 b(Stp)43 b(*)376 3746 y Fj(Commen)m(ts)28
+b(or)g(other)h(information)f(will)h(b)s(e)e(ignored)i(on)f(lines)g
+(preceded)g(b)m(y)g(a)h(p)s(ound)d(sym)m(b)s(ol)376 3859
+y('#'.)52 b(An)m(tico)s(don)35 b(translation)g(co)s(des)g(are)f(sp)s
+(eci\014ed)g(b)m(y)g(placing)h(the)g(three)f(base)h(co)s(don,)g(the)376
+3972 y(three)i(letter)i(amino)e(acid)h(abbreviation,)i(and)c(the)i
+(single)g(letter)g(amino)g(acid)f(abbreviation)376 4085
+y(all)e(on)f(a)g(single)h(line)f(\(eac)m(h)i(separated)e(b)m(y)g(a)h
+(space)f(or)g(tab\).)53 b(Degenerate)36 b(sym)m(b)s(ols)e(suc)m(h)g(as)
+376 4198 y('N',)h('R',)g(and)e('Y')i(ma)m(y)g(also)g(b)s(e)f(used)f
+(for)h(co)s(don)h(sp)s(eci\014cation.)53 b(An)m(y)34
+b(co)s(don)g(not)h(sp)s(eci\014ed)376 4311 y(in)40 b(the)h(alternate)h
+(genetic)g(co)s(de)f(\014le)f(will)h(use)f(the)h(translation)h(in)e
+(the)h(default)f('univ)m(ersal')376 4424 y(genetic)c(co)s(de)g(table)g
+(that)f(o)s(ccurs)g(at)h(the)f(v)m(ery)g(end)g(of)g(the)g
+(tRNAscan-SE.src)h(source)f(co)s(de)376 4537 y(\014le.)41
+b(Changes)31 b(can)f(b)s(e)g(made)h(directly)g(to)h(the)f(default)f
+(translation)i(table,)g(but)e(a)h(new)f('mak)m(e)376
+4650 y(install')h(m)m(ust)f(b)s(e)g(run)f(to)i(install)g(the)g(mo)s
+(di\014ed)e(PERL)h(script.)376 4763 y Fg(Note:)57 b Fj(this)37
+b(option)g(do)s(es)f(not)h(ha)m(v)m(e)h(an)m(y)e(e\013ect)i(when)e
+(using)g(the)h(-T)f(or)g(-E)h(option)g(\(searc)m(h)376
+4876 y(using)h(tRNAscan)h(or)f(Eu\014ndtRNA)f(only\))i(|)g(y)m(ou)f(m)m
+(ust)h(b)s(e)f(running)e(in)j(default)f(or)h(Co)m(v)m(e)376
+4989 y(only)30 b(analysis)h(mo)s(de.)106 5176 y(-c)g
+Fg(\014le)53 b Fj(:)40 b(use)30 b(an)h(alternate)h(co)m(v)-5
+b(ariance)32 b(mo)s(del)f(sp)s(eci\014ed)e(in)h Fg(\014le)1897
+5525 y Fj(14)p eop end
+%%Page: 15 15
+TeXDict begin 15 14 bop 376 273 a Fj(F)-8 b(or)42 b(users)f(who)g(ha)m
+(v)m(e)i(dev)m(elop)s(ed)f(their)g(o)m(wn)g(tRNA)g(co)m(v)-5
+b(ariance)44 b(mo)s(dels)e(using)f(the)h(Co)m(v)m(e)376
+386 y(program)37 b(\\co)m(v)m(eb")k(\(see)e(Co)m(v)m(e)g(do)s(cumen)m
+(tation\),)i(this)d(parameter)g(allo)m(ws)i(substitution)d(for)376
+499 y(the)e(default)h(tRNA)g(co)m(v)-5 b(ariance)38 b(mo)s(dels.)55
+b(Ma)m(y)37 b(b)s(e)e(useful)f(for)h(extending)h(Co)m(v)m(e-only)h(mo)s
+(de)376 612 y(detection)32 b(of)e(particularly)h(strange)g(tRNA)g(sp)s
+(ecies)f(suc)m(h)g(as)h(mito)s(c)m(hondrial)g(tRNAs.)148
+855 y Fi(5.4)113 b(Miscellaneous)39 b(Options)249 1027
+y Fj(-h)46 b(:)40 b(prin)m(t)30 b(full)g(list)h(of)g(a)m(v)-5
+b(ailable)33 b(program)d(options)376 1177 y(Prin)m(ts)g(this)g(list)h
+(of)g(program)f(options,)h(eac)m(h)g(with)f(a)h(brief,)f(one-line)i
+(description.)229 1365 y(-Q)46 b(:)40 b(do)31 b(not)f(prompt)g(user)f
+(b)s(efore)h(o)m(v)m(erwriting)i(pre-existing)f(\014les)376
+1515 y(By)23 b(default,)j(if)d(an)h(output)f(result)h(\014le)f(to)i(b)s
+(e)e(written)g(to)i(already)f(exists,)i(the)d(user)g(is)h(prompted)376
+1628 y(whether)39 b(the)i(\014le)f(should)f(b)s(e)h(o)m(v)m(er-written)
+i(or)e(app)s(ended)e(to.)72 b(Using)40 b(this)g(options)h(forces)376
+1741 y(o)m(v)m(erwriting)35 b(of)g(pre-existing)g(\014les)g(without)f
+(an)h(in)m(teractiv)m(e)i(prompt.)52 b(This)34 b(option)h(ma)m(y)g(b)s
+(e)376 1854 y(handy)29 b(for)h(batc)m(h-pro)s(cessing)h(and)f(running)f
+(tRNAscan-SE)h(in)g(the)h(bac)m(kground.)40 2041 y(-n)g
+Fg(expr)56 b Fj(:)40 b(searc)m(h)31 b(only)g(sequences)f(with)g(names)h
+(matc)m(hing)g Fg(expr)41 b Fj(string)376 2191 y(This)23
+b(option)i(allo)m(ws)h(analysis)g(of)e(selected)i(sequences)f(in)g(a)g
+(sequence)g(\014le)f(con)m(taining)i(m)m(ultiple)376
+2304 y(sequences.)60 b(Only)36 b(those)i(sequences)f(with)f(names)h
+(\(\014rst)f(non-white)h(space)h(w)m(ord)e(after)h(\\)p
+Fd(>)p Fj(")376 2417 y(sym)m(b)s(ol)j(on)h(F)-10 b(AST)i(A)41
+b(name/description)g(line\))h(matc)m(hing)g Fg(expr)51
+b Fj(are)41 b(analyzed.)73 b Fg(expr)51 b Fj(ma)m(y)376
+2530 y(con)m(tain)36 b(*)g(or)f(?)56 b(wildcard)34 b(c)m(haracters,)39
+b(but)34 b(the)i(user)e(should)h(enclose)h(suc)m(h)f(expressions)g(in)
+376 2643 y(single)d(quotes)h(\(for)f(example:)44 b(-n)32
+b('HU?alpha*'\))i(to)f(prev)m(en)m(t)f(the)g(shell)g(from)g(attempting)
+h(to)376 2756 y(expand)c(wildcards)h(in)m(to)h(\014le)g(name)f(matc)m
+(hes.)55 2944 y(-s)h Fg(expr)56 b Fj(:)e(start)38 b(searc)m(h)g(at)g
+(sequence)g(with)f(name)g(matc)m(hing)i Fg(expr)48 b
+Fj(string)37 b(and)g(con)m(tin)m(ue)h(to)g(end)f(of)376
+3057 y(input)29 b(sequence)i(\014le\(s\))376 3207 y(This)f(option)h
+(directs)g(the)h(program)e(to)i(analyze)g(the)f(\014rst)g(sequence)g
+(with)g(a)g(name)g(matc)m(hing)376 3320 y Fg(expr)p Fj(,)23
+b(and)d(ev)m(ery)h(sequence)f(thereafter.)38 b(This)20
+b(ma)m(y)h(b)s(e)e(useful)h(for)g(re-starting)h(crashed/ab)s(orted)376
+3433 y(runs)31 b(at)j(the)f(p)s(oin)m(t)g(where)g(the)g(previous)g(run)
+f(stopp)s(ed.)48 b(\(if)33 b(same)h(names)f(for)g(output)f(\014le\(s\))
+376 3546 y(are)k(used,)g(program)g(will)g(ask)g(if)g(\014les)g(should)e
+(b)s(e)i(o)m(v)m(er-written)h(or)f(app)s(ended)e(to)i(|)g(c)m(ho)s(ose)
+376 3658 y(app)s(end)28 b(and)i(run)f(will)i(successfully)f(b)s(e)g
+(restarted)h(where)f(it)g(left)i(o\013)7 b(\).)148 3902
+y Fi(5.5)113 b(Options)38 b(for)f(testing)g(&)h(sp)s(ecial)h
+(applications)234 4074 y Fj(-T)46 b(:)40 b(searc)m(h)31
+b(using)f(tRNAscan)h(only)g(\(defaults)g(to)g(strict)g(searc)m(h)g
+(params\))376 4224 y(Directs)37 b(tRNAscan-SE)g(to)g(use)f(only)h
+(tRNAscan)g(to)g(analyze)g(sequences.)59 b(This)36 b(mo)s(de)g(will)376
+4337 y(cause)26 b(tRNAscan)g(to)g(default)g(to)g(using)f(\\strict")j
+(parameters)e(\(similar)g(to)g(tRNAscan)h(v)m(ersion)376
+4450 y(1.3)46 b(op)s(eration\).)85 b(This)44 b(mo)s(de)g(of)h(op)s
+(eration)h(is)f(sligh)m(tly)h(faster)f(\(ab)s(out)g(3-5)h(times)g
+(faster)376 4563 y(than)29 b(default)g(mo)s(de)g(analysis\),)h(but)f
+(will)g(result)g(in)g(appro)m(ximately)i(0.2)f(to)g(0.6)g(false)g(p)s
+(ositiv)m(e)376 4675 y(tRNAs)45 b(p)s(er)f(Mbp,)j(decreased)f
+(sensitivit)m(y)-8 b(,)50 b(and)44 b(less)h(reliable)h(prediction)f(of)
+g(an)m(tico)s(dons,)376 4788 y(tRNA)31 b(isot)m(yp)s(e,)g(and)f(in)m
+(trons.)-7 4976 y(-t)h Fg(mo)-5 b(de)84 b Fj(:)50 b(explicitly)37
+b(set)f(tRNAscan)h(params,)f(where)f Fg(mo)-5 b(de)44
+b Fj(=)35 b(R)g(or)h(S)f(\(R=relaxed,)i(S=strict)f(tR-)376
+5089 y(NAscan)30 b(v1.3)i(params\))1897 5525 y(15)p eop
+end
+%%Page: 16 16
+TeXDict begin 16 15 bop 376 273 a Fj(This)44 b(option)i(allo)m(ws)h
+(selection)g(of)f(strict)g(or)f(relaxed)h(searc)m(h)g(parameters)g(for)
+f(tRNAscan)376 386 y(analysis.)71 b(By)41 b(default,)j(\\strict")e
+(parameters)f(are)g(used.)70 b(Relaxed)42 b(parameters)e(ma)m(y)i(giv)m
+(e)376 499 y(v)m(ery)30 b(sligh)m(tly)i(increased)f(searc)m(h)g
+(sensitivit)m(y)-8 b(,)32 b(but)e(increase)h(searc)m(h)g(time)g(b)m(y)f
+(20-40)j(fold.)238 686 y(-E)46 b(:)40 b(searc)m(h)31
+b(using)f(Euk)-5 b(ary)m(otic)32 b(tRNA)f(\014nder)d(\(Eu\014ndtRNA\))i
+(only)376 837 y(This)21 b(option)i(runs)e(Eu\014ndtRNA)g(alone)i(to)h
+(searc)m(h)f(for)f(tRNAs.)38 b(Since)23 b(Co)m(v)m(e)h(is)e(not)h(b)s
+(eing)f(used)376 949 y(as)38 b(a)g(secondary)g(\014lter)g(to)g(remo)m
+(v)m(e)i(false)e(p)s(ositiv)m(es,)j(this)d(run)e(mo)s(de)i(defaults)g
+(to)g(\\normal")376 1062 y(parameters)43 b(whic)m(h)g(more)g(closely)i
+(appro)m(ximates)f(the)f(sensitivit)m(y)i(and)e(selectivit)m(y)j(of)d
+(the)376 1175 y(original)d(algorithm)h(describ)s(e)e(b)m(y)g(P)m(a)m(v)
+m(esi)j(and)d(colleagues)j(\(see)f(the)f(next)f(option,)k(-e)d(for)g(a)
+376 1288 y(description)30 b(of)h(the)f(v)-5 b(arious)30
+b(run)f(mo)s(des\).)-12 1476 y(-e)i Fg(mo)-5 b(de)84
+b Fj(:)46 b(explicitly)35 b(set)f(Eu\014ndtRNA)e(params,)i(where)f
+Fg(mo)-5 b(de)42 b Fj(=)33 b(R,)g(N,)h(or)f(S)g(\(relaxed,)j(normal,)e
+(or)376 1589 y(strict\))376 1739 y(This)39 b(option)j(allo)m(ws)f(the)g
+(user)f(to)i(explicitly)g(set)f(the)g(parameters)g(for)f(Eu\014ndtRNA.)
+g(The)376 1852 y(\\relaxed")34 b(mo)s(de)e(is)h(used)g(for)f
+(Eu\014ndtRNA)g(when)g(using)g(tRNAscan-SE)h(in)g(default)g(mo)s(de.)
+376 1965 y(With)40 b(relaxed)g(parameters,)i(tRNAs)e(that)g(lac)m(k)h
+(p)s(ol)e(I)s(I)s(I)f(p)s(oly-T)i(terminators)g(are)g(not)f(p)s(e-)376
+2078 y(nalized,)32 b(increasing)h(searc)m(h)f(sensitivit)m(y)-8
+b(,)34 b(but)c(decreasing)j(selectivit)m(y)-8 b(.)47
+b(When)32 b(Co)m(v)m(e)g(analysis)376 2191 y(is)38 b(b)s(eing)f(used)h
+(as)g(a)h(secondary)f(\014lter)g(for)g(false)h(p)s(ositiv)m(es)g(\(as)f
+(in)g(tRNAscan-SE's)h(default)376 2304 y(mo)s(de\),)30
+b(o)m(v)m(erall)j(selectivit)m(y)g(is)d(not)h(decreased.)376
+2567 y(Using)i(\\normal")i(parameters)e(with)h(Eu\014ndtRNA)d(do)s(es)j
+(incorp)s(orate)g(a)f(log)i(o)s(dds)d(score)i(for)376
+2680 y(the)j(distance)h(b)s(et)m(w)m(een)g(the)g(B)g(b)s(o)m(x)f(and)g
+(the)g(\014rst)g(p)s(oly-T)g(terminator,)j(but)d(do)s(es)g(not)g(dis-)
+376 2793 y(qualify)26 b(tRNAs)g(that)g(do)g(not)g(ha)m(v)m(e)h(a)f
+(terminator)h(signal)f(within)f(60)i(n)m(ucleotides.)40
+b(This)25 b(mo)s(de)376 2905 y(is)30 b(used)g(b)m(y)g(default)g(when)g
+(Co)m(v)m(e)i(analysis)f(is)f(not)h(b)s(eing)f(used)f(as)i(a)g
+(secondary)f(false)h(p)s(ositiv)m(e)376 3018 y(\014lter.)376
+3282 y(Using)25 b(\\strict")h(parameters)g(with)e(Eu\014ndtRNA)f(also)j
+(incorp)s(orates)g(a)f(log)h(o)s(dds)e(score)h(for)g(the)376
+3394 y(distance)31 b(b)s(et)m(w)m(een)h(the)f(B)g(b)s(o)m(x)f(and)h
+(the)g(\014rst)f(p)s(oly-T)g(terminator,)i(but)e Fg(r)-5
+b(eje)g(cts)39 b Fj(tRNAs)31 b(that)376 3507 y(do)h(not)g(ha)m(v)m(e)i
+(suc)m(h)d(a)i(signal)g(within)f(60)h(n)m(ucleotides)g(of)g(the)f(end)g
+(of)g(the)g(B)h(b)s(o)m(x.)46 b(This)31 b(mo)s(de)376
+3620 y(most)26 b(closely)i(appro)m(ximates)g(the)f(originally)h
+(published)c(searc)m(h)j(algorithm)h(\(3\);)h(sensitivit)m(y)f(is)376
+3733 y(reduced)i(relativ)m(e)k(to)e(using)f(\\relaxed")i(and)e
+(\\normal")h(mo)s(des,)f(but)g(selectivit)m(y)j(is)e(increased)376
+3846 y(whic)m(h)42 b(is)g(imp)s(ortan)m(t)g(if)h(no)f(secondary)g
+(\014lter,)k(suc)m(h)c(as)g(Co)m(v)m(e)i(analysis,)i(is)c(b)s(eing)g
+(used)f(to)376 3959 y(remo)m(v)m(e)28 b(false)f(p)s(ositiv)m(es.)41
+b(This)25 b(mo)s(de)i(will)g(miss)f(most)h(prok)-5 b(ary)m(otic)28
+b(tRNAs)f(since)h(the)e(p)s(oly-T)376 4072 y(terminator)d(signal)g(is)f
+(a)h(feature)f(sp)s(eci\014c)h(to)g(euk)-5 b(ary)m(otic)24
+b(tRNAs)e(genes)h(\(alw)m(a)m(ys)i(use)d(\\relaxed")376
+4185 y(mo)s(de)30 b(for)g(scanning)g(prok)-5 b(ary)m(otic)32
+b(sequences)e(for)g(tRNAs\).)111 4372 y(-r)g Fg(\014le)53
+b Fj(:)40 b(sa)m(v)m(e)32 b(tRNAscan/Eu\014ndtRNA)e(formatted)h(output)
+f(results)g(in)g Fg(\014le)376 4523 y Fj(Sa)m(v)m(es)43
+b(tabular,)j(formatted)e(output)e(results)g(from)h(tRNAscan)g(and/or)g
+(Eu\014ndtRNA)e(\014rst)376 4636 y(pass)28 b(scans)h(in)f
+Fg(\014le)p Fj(.)40 b(The)28 b(format)h(is)g(similar)g(to)h(the)e
+(\014nal)h(tabular)g(output)f(format,)h(except)h(no)376
+4749 y(Co)m(v)m(e)37 b(score)f(is)g(a)m(v)-5 b(ailable)38
+b(at)f(this)e(p)s(oin)m(t)h(in)g(the)g(searc)m(h)g(\(if)g(Eu\014ndtRNA)
+e(has)i(detected)h(the)376 4861 y(tRNA,)30 b(the)g(negativ)m(e)i(log)e
+(lik)m(eliho)s(o)s(d)h(score)f(is)f(giv)m(en\).)42 b(Also,)31
+b(the)f(sequence)g(ID)f(n)m(um)m(b)s(er)g(and)376 4974
+y(source)e(sequence)g(length)h(app)s(ear)e(in)h(the)g(columns)g(where)f
+(in)m(tron)h(b)s(ounds)e(are)i(sho)m(wn)g(in)f(\014nal)376
+5087 y(output.)48 b(This)33 b(option)g(ma)m(y)h(b)s(e)f(useful)f(for)h
+(examining)h(false)f(p)s(ositiv)m(e)i(tRNAs)e(predicted)g(b)m(y)376
+5200 y(\014rst-pass)c(scans)i(that)g(ha)m(v)m(e)g(b)s(een)f(\014ltered)
+g(out)h(b)m(y)f(Co)m(v)m(e)i(analysis.)1897 5525 y(16)p
+eop end
+%%Page: 17 17
+TeXDict begin 17 16 bop 96 273 a Fj(-u)30 b Fg(\014le)53
+b Fj(:)48 b(searc)m(h)36 b(with)e(Co)m(v)m(e)i(only)e(those)h
+(sequences)g(&)f(regions)h(delimited)g(in)f Fg(\014le)41
+b Fj(\(tabular)35 b(results)376 386 y(\014le)30 b(format\))376
+536 y(This)g(option)h(allo)m(ws)h(the)f(user)g(to)g(re-generate)i
+(results)e(from)f(regions)i(iden)m(ti\014ed)f(to)g(ha)m(v)m(e)i(tR-)376
+649 y(NAs)f(b)m(y)f(a)i(previous)e(tRNAscan-SE)h(run.)44
+b(Either)32 b(a)g(regular)g(tabular)g(result)g(\014le,)h(or)e(output)
+376 762 y(sa)m(v)m(ed)f(with)f(the)g(-r)g(option)h(ma)m(y)g(b)s(e)f
+(used)f(as)i(the)f(sp)s(eci\014ed)g Fg(\014le)p Fj(.)40
+b(This)28 b(option)i(is)f(particularly)376 875 y(useful)f(for)i
+(generating)h(either)f(secondary)g(structure)f(output)g(\(-f)h
+(option\))h(or)e(A)m(CeDB)i(output)376 988 y(\(-a)f(option\))g(without)
+g(ha)m(ving)g(to)g(re-scan)g(en)m(tire)h(sequences.)40
+b(Alternativ)m(ely)-8 b(,)33 b(if)d(the)f(-r)h(option)376
+1101 y(is)d(used)g(to)h(generate)h(the)e(previous)g(results)g(\014le,)i
+(tRNAscan-SE)e(will)h(pic)m(k)g(up)e(at)i(the)g(stage)h(of)376
+1213 y(Co)m(v)m(e-con\014rmation)c(of)f(tRNAs)h(and)e(output)h(\014nal)
+f(tRNA)i(predicitons)e(as)i(with)e(a)h(normal)g(run.)376
+1477 y Fg(Note:)56 b Fj(the)37 b(-n)e(and)h(-s)g(options)g(will)g(not)h
+(w)m(ork)f(in)f(conjunction)h(with)g(this)g(option.)58
+b(Also,)38 b(if)376 1590 y(consecutiv)m(e)e(sequences)f(ha)m(v)m(e)g
+(iden)m(tical)h(names)f(in)f(the)g(sequence)h(\014le)g(b)s(eing)f
+(scanned,)h(only)376 1702 y(the)30 b(\014rst)g(sequence)h(will)f(b)s(e)
+g(scanned)g(in)g(the)h(regions)f(de\014ned)g(in)g(the)g(-u)g
+Fg(\014le)p Fj(.)87 1890 y(-F)h Fg(\014le)53 b Fj(:)39
+b(sa)m(v)m(e)29 b(\014rst-pass)e(candidate)h(tRNAs)g(in)g
+Fg(\014le)34 b Fj(that)28 b(w)m(ere)g(then)g(found)e(to)i(b)s(e)f
+(false)i(p)s(ositiv)m(es)f(b)m(y)376 2003 y(Co)m(v)m(e)j(analysis)376
+2153 y(This)i(option)h(sa)m(v)m(es)h(candidate)g(tRNAs)f(found)f(b)m(y)
+h(either)g(tRNAscan)h(and/or)f(Eu\014ndtRNA)376 2266
+y(that)28 b(w)m(ere)g(then)g(rejected)h(b)m(y)e(Co)m(v)m(e)j(analysis)e
+(as)g(b)s(eing)g(false)g(p)s(ositiv)m(es.)41 b(tRNAs)28
+b(are)g(sa)m(v)m(ed)h(in)376 2379 y(the)h(F)-10 b(AST)i(A)31
+b(sequence)f(format.)63 2567 y(-M)h Fg(\014le)53 b Fj(:)40
+b(sa)m(v)m(e)32 b(all)f(sequences)g(without)f(at)i(least)f(one)g(tRNA)g
+(hit)f(in)g Fg(\014le)376 2717 y Fj(This)37 b(option)h(ma)m(y)g(b)s(e)g
+(used)f(when)g(scanning)g(a)i(collection)h(of)e(kno)m(wn)g(tRNA)g
+(sequences)g(to)376 2830 y(iden)m(tify)g(p)s(ossible)g(false)h(negativ)
+m(es)h(\(incorreclt)m(y)h(missed)c(b)m(y)h(tRNAscan-SE\))i(or)e
+(sequences)376 2943 y(incorrectly)43 b(annotated)h(as)f(tRNAs)g
+(\(correctly)h(passed)e(o)m(v)m(er)i(b)m(y)f(tRNAscan-SE\).)g(Exami-)
+376 3056 y(nation)38 b(of)h(primary)e(&)h(secondary)g(structure)f(co)m
+(v)-5 b(ariance)41 b(mo)s(del)d(scores)h(\(-H)f(option\),)k(and)376
+3169 y(visual)e(insp)s(ection)h(of)g(secondary)g(structures)f(\(use)h
+(-F)g(option\))g(ma)m(y)h(b)s(e)e(helpful)f(resolving)376
+3282 y(iden)m(ti\014cation)32 b(con\015icts.)1897 5525
+y(17)p eop end
+%%Page: 18 18
+TeXDict begin 18 17 bop 148 273 a Fl(6)135 b(Examples)148
+476 y Fj(Sev)m(eral)28 b(C.)f(elegans)h(cosmids)e(and)g(a)h(subset)g
+(of)f(the)h(Sprinzl)f(tRNA)h(database)h(\(animal)f(cytoplasmic)148
+589 y(+)k(eubacterial\))h(are)f(used)f(in)g(these)h(examples)g(to)h
+(illustrate)f(v)-5 b(arious)31 b(features)g(of)g(the)f(program;)h(all)
+148 702 y(ha)m(v)m(e)d(b)s(een)d(included)g(in)h(the)g(/Demo)h(sub)s
+(directory)e(so)i(the)f(user)f(ma)m(y)i(also)g(try)f(out)g(these)g
+(examples.)148 815 y(These)41 b(\014les)g(are)g(written)g(in)g(the)g(F)
+-10 b(AST)i(A)41 b(sequence)g(format)h(and)e(ha)m(v)m(e)i(the)f(\014le)
+g(extension)h('.fa'.)148 927 y(Run)28 b(times)i(are)f(giv)m(en)i(for)d
+(an)h(R4400-200)k(Indigo)c(SGI,)g(and)f(are)i(appro)m(x.)40
+b(equal)30 b(on)f(a)g(DEC)g(Alpha)148 1040 y(2100/400)34
+b(190MHZ.)239 1251 y Fh(\))46 b Fj(T)-8 b(o)28 b(get)h(a)f(list)g(of)g
+(run)f(options,)i(t)m(yp)s(e)f(the)g(program)f(name)h(without)g(an)m(y)
+g(parameters)g(or)g(input)376 1364 y(sequence)i(\014les)423
+1626 y Fd(>)48 b(tRNAscan-SE)239 1946 y Fh(\))e Fj(Default)31
+b(run)e(mo)s(de,)h(one)h(sequence)g(&)f(no)g(parameters:)423
+2209 y Fd(>)48 b(tRNAscan-SE)c(F22B7.fa)376 2472 y Fj(The)29
+b(follo)m(wing)j(\(selected\))h(run)c(options)i(will)f(b)s(e)g(prin)m
+(ted)g(\014rst:)376 2719 y Fd(-----------------------)o(---)o(----)o
+(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+2832 y(Sequence)45 b(file\(s\))h(to)h(search:)94 b(F22B7.fa)376
+2945 y(Results)45 b(written)h(to:)477 b(Standard)45 b(output)376
+3058 y(Output)h(format:)714 b(Tabular)376 3171 y(Searching)45
+b(with:)667 b(tRNAscan)45 b(+)j(EufindtRNA)d(->)i(Cove)376
+3284 y(tRNAscan)e(parameters:)427 b(Strict)376 3396 y(EufindtRNA)45
+b(parameters:)331 b(Relaxed)45 b(\(Int)i(Cutoff=)f(-32.1\))376
+3509 y(-----------------------)o(---)o(----)o(----)o(---)o(----)o(----)
+o(---)o(----)o(----)o(---)o(-)376 3757 y Fj(This)25 b(searc)m(h)j(pro)s
+(duces)d(tabular)i(output)f(results)g(of)h(5)g(tRNAs)g(for)g(the)f
+(40kbp)h(cosmid)g(F22B7.)376 3870 y(T)-8 b(ak)m(es)31
+b(ab)s(out)f(15)h(seconds.)239 4076 y Fh(\))46 b Fj(Sa)m(ving)31
+b(output)f(and)f(run)g(statistics)j(\014les)423 4339
+y Fd(>)48 b(tRNAscan-SE)c(-o)k(mytrnas)d(-m)j(mystats)d(C28G1.fa)376
+4602 y Fj(The)29 b(follo)m(wing)j(\(selected\))h(run)c(options)i(will)f
+(b)s(e)g(prin)m(ted)g(\014rst:)376 4825 y Fd(-----------------------)o
+(---)o(----)o(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)
+376 4938 y(Sequence)45 b(file\(s\))h(to)h(search:)94
+b(C28G1.fa)376 5051 y(Results)45 b(written)h(to:)477
+b(mytrnas)376 5163 y(Output)46 b(format:)714 b(Tabular)376
+5276 y(Searching)45 b(with:)667 b(tRNAscan)45 b(+)j(EufindtRNA)d(->)i
+(Cove)1897 5525 y Fj(18)p eop end
+%%Page: 19 19
+TeXDict begin 19 18 bop 376 273 a Fd(tRNAscan)45 b(parameters:)427
+b(Strict)376 386 y(EufindtRNA)45 b(parameters:)331 b(Relaxed)45
+b(\(Int)i(Cutoff=)f(-32.1\))376 499 y(Search)g(statistics)f(saved)h
+(in:)95 b(mystats)376 612 y(-----------------------)o(---)o(----)o
+(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+818 y Fj(Default)29 b(searc)m(h)h(mo)s(de,)f(sa)m(v)m(es)h(tabular)f
+(output)f(results)h(for)f(cosmid)h(C28G1)h(in)f(\014le)g('m)m(ytrnas')
+376 931 y(and)g(run)g(statistics)k(in)d(\014le)g('m)m(ystats'.)239
+1132 y Fh(\))46 b Fj(Using)25 b('#')g(as)g(shorthand)f(for)h(default)g
+(output)g(\014le)g(names,)h(sa)m(ving)g(output)e(in)h(A)m(CeDB)i
+(format)423 1392 y Fd(>)48 b(tRNAscan-SE)c(-a)k(-o#)f(-m#)f(C28G1.fa)
+376 1599 y(-----------------------)o(---)o(----)o(----)o(---)o(----)o
+(----)o(---)o(----)o(----)o(---)o(-)376 1712 y(Sequence)f(file\(s\))h
+(to)h(search:)94 b(C28G1.fa)376 1825 y(Results)45 b(written)h(to:)477
+b(C28G1.out)376 1937 y(Output)46 b(format:)714 b(ACeDB)376
+2050 y(Searching)45 b(with:)667 b(tRNAscan)45 b(+)j(EufindtRNA)d(->)i
+(Cove)376 2163 y(tRNAscan)e(parameters:)427 b(Strict)376
+2276 y(EufindtRNA)45 b(parameters:)331 b(Relaxed)45 b(\(Int)i(Cutoff=)f
+(-32.1\))376 2389 y(Search)g(statistics)f(saved)h(in:)95
+b(C28G1.stats)376 2502 y(-----------------------)o(---)o(----)o(----)o
+(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+2708 y Fj(This)33 b(is)h(the)g(same)g(searc)m(h)g(as)h(the)f
+(immediately)h(preceding)f(example,)h(but)e(\014nal)h(results)g(are)376
+2821 y(sa)m(v)m(ed)40 b(in)f(the)g(\014le)g('C28G1.out')j(and)c(the)i
+(statistics)h(summary)d(is)h(sa)m(v)m(ed)h(in)f('C28G1.stats')376
+2934 y(using)d(the)h('#')h(shorthand)e(for)g(default)i(output)e(\014le)
+i(names.)60 b(Also,)40 b(the)d(results)g(written)g(to)376
+3047 y('C28G1.out')32 b(are)f(in)f(the)h(A)m(CeDB)h(format)e(b)s
+(ecause)h(the)f(-a)h(option)g(w)m(as)g(used.)239 3248
+y Fh(\))46 b Fj(Sa)m(ving)31 b(secondary)f(structure)g(information)376
+3361 y(Changing)g(name)g(of)h(default)f(output)g(\014le)h(name)f
+(pre\014x)423 3621 y Fd(>)48 b(tRNAscan-SE)c(-p)k(mycosmid)d(-f#)i(-m#)
+g(C28G1.fa)376 3828 y(-----------------------)o(---)o(----)o(----)o
+(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+3941 y(Sequence)e(file\(s\))h(to)h(search:)94 b(C28G1.fa)376
+4054 y(Results)45 b(written)h(to:)477 b(Standard)45 b(output)376
+4167 y(Output)h(format:)714 b(Tabular)376 4279 y(Searching)45
+b(with:)667 b(tRNAscan)45 b(+)j(EufindtRNA)d(->)i(Cove)376
+4392 y(tRNAscan)e(parameters:)427 b(Strict)376 4505 y(EufindtRNA)45
+b(parameters:)331 b(Relaxed)45 b(\(Int)i(Cutoff=)f(-32.1\))376
+4618 y(tRNA)g(secondary)f(structure)566 4731 y(predictions)g(saved)i
+(to:)190 b(mycosmid.ss)376 4844 y(Search)46 b(statistics)f(saved)h(in:)
+95 b(mycosmid.stats)376 4957 y(-----------------------)o(---)o(----)o
+(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+5163 y Fj(This)27 b(searc)m(h)h(sends)f(the)i(tabular)f(results)f(to)i
+(standard)e(output)h(since)g(no)g(-o)h(option)f(w)m(as)h(used.)376
+5276 y(Secondary)22 b(structure)h(information)h(for)f(all)h(tRNAs)f(w)m
+(as)h(sa)m(v)m(ed)g(in)f(\014le)g('m)m(ycosmid.ss')h(and)e(run)1897
+5525 y(19)p eop end
+%%Page: 20 20
+TeXDict begin 20 19 bop 376 273 a Fj(stats)35 b(w)m(ere)h(sa)m(v)m(ed)f
+(in)g('m)m(ycosmid.stats')i(since)e(the)g(default)g(\014le)g(name)g
+(pre\014x)f(w)m(as)h(sp)s(eci\014ed)376 386 y(as)30 b('m)m(ycosmid')h
+(using)f(the)h(-p)f(option.)239 593 y Fh(\))46 b Fj(Searc)m(hing)30
+b(only)h(sequences)g(matc)m(hing)g(a)g(sp)s(eci\014ed)e(name)376
+706 y(Searc)m(hing)h(with)h(Prok)-5 b(ary)m(otic)32 b(searc)m(h)f
+(parameters)376 819 y(Viewing)g(progress)f(of)g(the)h(searc)m(h)g
+(analysis)423 1082 y Fd(>)48 b(tRNAscan-SE)c(-d)k(-P)f(-o#)g(-n)g
+('DE*')f(Sprz-sub.fa)376 1307 y(-----------------------)o(---)o(----)o
+(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+1420 y(Sequence)f(file\(s\))h(to)h(search:)94 b(Sprz-sub.fa)376
+1533 y(Search)46 b(only)g(names)h(matching:)93 b(DE*)376
+1646 y(Results)45 b(written)h(to:)477 b(Sprz-sub.out)376
+1759 y(Output)46 b(format:)714 b(Tabular)376 1872 y(Searching)45
+b(with:)667 b(tRNAscan)45 b(+)j(EufindtRNA)d(->)i(Cove)376
+1984 y(tRNAscan)e(parameters:)427 b(Strict)376 2097 y(EufindtRNA)45
+b(parameters:)331 b(Relaxed)45 b(\(Int)i(Cutoff=)f(-36\))376
+2210 y(-----------------------)o(---)o(----)o(----)o(---)o(----)o(----)
+o(---)o(----)o(----)o(---)o(-)376 2435 y Fj(In)24 b(this)h(example,)i
+(the)e(program's)g(progress)g(is)g(displa)m(y)m(ed)g(\(-d)g(option\))h
+(as)f(it)h(searc)m(hes)g(through)376 2548 y(the)43 b(input)f(sequence)h
+(\014le)g(in)f(this)h(example.)79 b(This)42 b(searc)m(h)h(will)h(only)f
+(analyze)h(the)f(39)h(se-)376 2661 y(quences)32 b(in)g(the)g(\014le)g
+(Sprz-sub.fa)f(\(1013)j(total)g(seqs\))f(with)e(names)h(matc)m(hing)i
+(the)e('DE*')h(k)m(ey)376 2774 y(\(ie.)41 b(DE1140,)33
+b(DE1180,)g(DE1200,)f(etc\).)376 3037 y(Since)k(man)m(y)h(of)f(the)h
+(sequences)g(in)f(this)g(searc)m(h)h(are)g(from)f(prok)-5
+b(ary)m(otes,)39 b(the)e(-P)g(parameter)376 3150 y(is)k(used)g(to)h
+(increase)g(searc)m(h)h(sensitivit)m(y)f(to)h(detect)g(prok)-5
+b(ary)m(otic)42 b(tRNAs)g(that)g(matc)m(h)h(the)376 3263
+y(consensus)27 b(A)h(and)g(B)g(b)s(o)m(xes)h(less)f(closely)i(than)d
+(euk)-5 b(ary)m(otic)30 b(tRNAs)f(\(the)g(Eu\014ndtRNA)d(in)m(ter-)376
+3376 y(mediate)h(Cuto\013)e(is)h(set)h(to)f(-36)h(instead)f(of)g(the)g
+(default)g(-32.1;)k(the)c(lo)m(w)m(er)h(the)f(cuto\013,)i(the)e(more)
+376 3489 y(sensitiv)m(e)32 b(the)f(searc)m(h\).)42 b(Also,)32
+b(the)f(prok)-5 b(ary)m(otic)32 b(tRNA)f(mo)s(del)g(is)g(used)f(in)g
+(co)m(v)-5 b(ariance)33 b(mo)s(del)376 3602 y(analysis.)239
+3922 y Fh(\))46 b Fj(Searc)m(h)30 b(for)g(tRNAs)h(using)f(Co)m(v)m(e)i
+(analysis)f(only)423 4185 y Fd(>)48 b(tRNAscan-SE)c(-C)k(-p)f(F22B7cov)
+e(-o#)i(-m#)g(F22B7.fa)376 4410 y(-----------------------)o(---)o(----)
+o(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+4523 y(Sequence)e(file\(s\))h(to)h(search:)94 b(F22B7.fa)376
+4636 y(Results)45 b(written)h(to:)477 b(F22B7cov.out)376
+4749 y(Output)46 b(format:)714 b(Tabular)376 4862 y(Searching)45
+b(with:)667 b(Cove)46 b(only)376 4975 y(Search)g(statistics)f(saved)h
+(in:)95 b(F22B7cov.stats)376 5087 y(-----------------------)o(---)o
+(----)o(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)1897
+5525 y Fj(20)p eop end
+%%Page: 21 21
+TeXDict begin 21 20 bop 376 273 a Fj(F)-8 b(or)27 b(users)e(with)h(the)
+h(computational)h(resources)f(to)g(spare,)g(sequences)g(can)f(b)s(e)g
+(analyzed)i(using)376 386 y(Co)m(v)m(e)37 b(analysis)g(only)f
+(\(tRNAscan)h(and)e(Eu\014ndtRNA)g(are)h(not)g(used)f(as)i(a)f
+(pre-\014lter\).)58 b(This)376 499 y(option)25 b(is)h(up)e(to)i(3,000)i
+(times)e(slo)m(w)m(er)g(than)g(using)e(the)i(default)g(searc)m(h)g(mo)s
+(de,)g(but)f(ma)m(y)h(detect)376 612 y(up)j(to)j(1\045)f(of)g(the)g
+(tRNAs)g(missed)f(b)m(y)h(tRNAscan-SE)g(in)g(default)g(run)e(mo)s(de.)
+41 b(This)30 b(example)376 724 y(searc)m(hes)c(the)g(F22B7)i(cosmid)e
+(and)f(\014nds)g(no)g(additional)i(tRNAs)f(o)m(v)m(er)i(default)e
+(tRNAscan-SE)376 837 y(run)j(mo)s(de.)40 b(T)-8 b(ak)m(es)31
+b(ab)s(out)f(sev)m(en)m(t)m(y)j(min)m(utes.)239 1045
+y Fh(\))46 b Fj(Searc)m(h)30 b(using)g(tRNAscan)h(analysis)g(only)423
+1308 y Fd(>)48 b(tRNAscan-SE)c(-T)k(-p)f(sprinzl.tscan)d(-l#)j(-m#)g
+(Sprz-sub.fa)376 1533 y(-----------------------)o(---)o(----)o(----)o
+(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+1646 y(Sequence)e(file\(s\))h(to)h(search:)94 b(Sprz-sub.fa)376
+1759 y(Results)45 b(written)h(to:)477 b(Standard)45 b(output)376
+1872 y(Output)h(format:)714 b(Tabular)376 1984 y(Searching)45
+b(with:)667 b(tRNAscan)45 b(only)376 2097 y(tRNAscan)g(parameters:)427
+b(Strict)376 2210 y(Search)46 b(log)h(saved)f(in:)429
+b(sprinzl.tscan.log)376 2323 y(Search)46 b(statistics)f(saved)h(in:)95
+b(sprinzl.tscan.stats)376 2436 y(-----------------------)o(---)o(----)o
+(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+2661 y Fj(Using)32 b(the)h(-T)f(option)h(appro)m(ximates)g(using)f
+(tRNAscan)h(v1.3)h(only)e(\(less)h(sensitiv)m(e)h(and)e(less)376
+2774 y(selectiv)m(e\).)64 b(The)36 b(-l)i(option)g(sa)m(v)m(es)g(a)g
+(log)g(of)f(the)h(program)f(run)f(in)g('sprinzl.tscan.log'.)64
+b(The)376 2887 y(searc)m(h)31 b(\014nds)f(962/1013)35
+b(tRNAs)c(in)g(ab)s(out)g(40)h(seconds,)g(v)m(ersus)f(the)g(same)h
+(searc)m(h)g(in)f(default)376 3000 y(mo)s(de)26 b(whic)m(h)h(\014nds)e
+(1007/1013)31 b(tRNAs)c(in)g(ab)s(out)g(17)g(min)m(utes)g(\(searc)m(h)h
+(sp)s(eed)e(go)s(es)i(do)m(wn)e(for)376 3113 y(default)k(mo)s(de)g(as)h
+(densit)m(y)f(of)h(tRNAs)g(in)f(input)f(sequence\(s\))j(go)s(es)f
+(up\).)239 3320 y Fh(\))46 b Fj(Using)36 b(a)h(previous)g(result)f
+(\014le)h(to)g(get)h(secondary)f(structure)f(and)g(A)m(CeDB)i(output)e
+(without)376 3433 y(re-scanning)30 b(en)m(tire)h(sequence\(s\))376
+3583 y(First,)g(re-run)e(an)h(example)h(from)f(ab)s(o)m(v)m(e,)i(this)e
+(time)h(sa)m(ving)g(the)g(tabular)f(output)g(results:)423
+3846 y Fd(>)48 b(tRNAscan-SE)c(-o#)j(F22B7.fa)376 4109
+y Fj(No)m(w,)d(supp)s(ose)c(y)m(ou'd)h(lik)m(e)h(to)g(see)g(the)f
+(secondary)g(structures)f(\(and/or)i(pro)s(duce)e(A)m(CeDB)376
+4222 y(output\))35 b(for)g(the)g(tRNAs)h(in)f(this)g(sequence.)56
+b(Instead)35 b(of)h(re-scanning)f(the)g(en)m(tire)i(sequence)376
+4335 y(with)26 b(a)h(completely)h(new)e(run,)g(sp)s(ecify)g(that)h
+(tRNAscan-SE)g(should)e(only)i(scan)g(those)g(regions)376
+4448 y(kno)m(wn)j(to)h(ha)m(v)m(e)h(tRNAs)f(from)f(a)i(previous)e
+(tRNAscan-SE)h(run.)40 b(In)30 b(the)h(follo)m(wing)h(example,)376
+4561 y(the)d(pre-existing)g(result)g(\014le)g(\\F22B7.out")k(is)c(sp)s
+(eci\014ed)f(with)h(the)g(-u)f(parameter,)i(pro)s(ducing)376
+4674 y(results)g(faster)g(than)h(a)f(complete)i(re-scan)f(of)g(the)f
+(whole)h(cosmid:)1897 5525 y(21)p eop end
+%%Page: 22 22
+TeXDict begin 22 21 bop 423 273 a Fd(>)48 b(tRNAscan-SE)c(-u)k
+(F22B7.out)d(-f#)i(-a)g(-o)g(F22B7.ace)e(F22B7.fa)376
+498 y(-----------------------)o(---)o(----)o(----)o(---)o(----)o(----)o
+(---)o(----)o(----)o(---)o(-)376 611 y(Sequence)g(file\(s\))h(to)h
+(search:)94 b(F22B7.fa)376 724 y(Results)45 b(written)h(to:)477
+b(F22B7.ace)376 837 y(Output)46 b(format:)714 b(ACeDB)376
+949 y(Searching)45 b(with:)667 b(Cove)46 b(only)376 1062
+y(Using)g(previous)376 1175 y(tabular)f(output)h(file:)429
+b(F22B7.out)376 1288 y(tRNA)46 b(secondary)f(structure)566
+1401 y(predictions)g(saved)i(to:)190 b(F22B7.ss)376 1514
+y(-----------------------)o(---)o(----)o(----)o(---)o(----)o(----)o
+(---)o(----)o(----)o(---)o(-)376 1739 y Fj(The)24 b(secondary)g
+(structures)g(for)g(these)h(tRNAs)g(are)g(sa)m(v)m(ed)h(in)e
+(\\F22B7.ss")k(and)c(the)g(results)h(are)376 1852 y(sa)m(v)m(ed)35
+b(in)e(A)m(CeDB)i(format)g(in)e(the)h(\014le)g(\\F22B7.ace".)56
+b(Useful)34 b(for)f(re-scanning)h(just)g(tRNAs)376 1965
+y(in)c(large)h(sequences)g(or)f(sequence)h(sets.)239
+2172 y Fh(\))46 b Fj(Using)30 b(an)g(alternate)j(genetic)f(co)s(de)e
+(\014le)423 2435 y Fd(>)48 b(tRNAscan-SE)c(-g)k(gcode.cilnuc)c
+(DQ6060.fa)376 2660 y(-----------------------)o(---)o(----)o(----)o
+(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+2773 y(Sequence)h(file\(s\))h(to)h(search:)94 b(DQ6060.fa)376
+2886 y(Results)45 b(written)h(to:)477 b(Standard)45 b(output)376
+2999 y(Output)h(format:)714 b(Tabular)376 3112 y(Searching)45
+b(with:)667 b(tRNAscan)45 b(+)j(EufindtRNA)d(->)i(Cove)376
+3225 y(tRNAscan)e(parameters:)427 b(Strict)376 3338 y(EufindtRNA)45
+b(parameters:)331 b(Relaxed)45 b(\(Int)i(Cutoff=)f(-32.1\))376
+3451 y(Alternate)f(transl)h(code)h(used:)94 b(from)46
+b(file)h(gcode.cilnuc)376 3563 y(-----------------------)o(---)o(----)o
+(----)o(---)o(----)o(----)o(---)o(----)o(----)o(---)o(-)376
+3788 y Fj(The)23 b(tRNA)i(used)e(in)h(this)g(example)h(is)f(from)f(T)-8
+b(etrah)m(ymena)25 b(thermophila,)h(a)f(ciliate)h(protozoan)376
+3901 y(with)d(an)h(alternate)h(translation)g(of)e(the)h(co)s(don)g(T)-8
+b(AA)24 b(\(normally)g(a)g(stop)g(co)s(don\))g(to)g(glutamine.)376
+4014 y(By)35 b(using)f(the)i(alternate)g(translations)g(sp)s(eci\014ed)
+f(in)f(the)h(included)g(\014le)g(\\gco)s(de.ciln)m(uc",)k(the)376
+4127 y(correct)31 b(tRNA)g(t)m(yp)s(e)g(is)f(output.)1897
+5525 y(22)p eop end
+%%Page: 23 23
+TeXDict begin 23 22 bop 148 273 a Fl(7)135 b(Supp)t(ort)44
+b(/)h(Bug)f(Rep)t(orts)i(/)f(Requests)h(for)f(added)g(options)148
+476 y Fj(This)26 b(is)g(the)h(\014rst)f(release)i(of)e(tRNAscan-SE,)h
+(so)g(there)g(are)g(b)s(ound)d(to)j(b)s(e)f(minor)g(problems)g(that)h
+(will)148 589 y(need)34 b(to)g(b)s(e)g(\014xed)f(\(although)h(w)m(e'v)m
+(e)i(made)e(ev)m(ery)g(attempt)h(to)g(catc)m(h)g(all)g(problems)e(on)h
+(SGI,)f(Sun,)148 702 y(DEC)27 b(Alpha,)g(and)f(In)m(tel)h(mac)m
+(hines\).)40 b(The)26 b(user)g(is)g(free)h(to)g(either)g(\014x)f(the)g
+(bug)g(him/herself,)h(or)g(send)148 815 y(me)37 b(detailed)h
+(information)e(on)h(the)g(problem)f(\(email)i(to)f(T)-8
+b(o)s(dd)35 b(Lo)m(w)m(e,)40 b(lo)m(w)m(e at genetics.wustl.edu\),)148
+927 y(and)21 b(I)g(will)h(mak)m(e)h(reasonable)f(e\013orts)g(to)g
+(remedy)f(the)h(problem.)37 b(If)21 b(y)m(ou)h(do)f(decide)h(to)g
+(\014x)f(the)h(problem)148 1040 y(y)m(ourself,)29 b(I)e(w)m(ould)g(lik)
+m(e)i(to)f(b)s(e)f(noti\014ed)g(so)h(that)g(I)f(ma)m(y)h(mak)m(e)h(the)
+e(c)m(hange)i(in)e(future)f(up)s(dates.)39 b(Also,)148
+1153 y(if)c(y)m(ou)h(ha)m(v)m(e)g(suggestions)h(for)d(options)i(that)g
+(migh)m(t)g(b)s(e)e(added)h(to)h(enhance)f(the)g(usefulness)f(of)i(the)
+148 1266 y(program,)31 b(feel)g(free)f(to)h(suggest)h(them.)148
+1553 y Fl(8)135 b(References)259 1756 y Fj(1.)47 b(Fic)m(han)m(t,)41
+b(G.A.)e(and)e(Burks,)h(C.)g(\(1991\))i(\\Iden)m(tifying)e(p)s(oten)m
+(tial)h(tRNA)f(genes)h(in)e(genomic)376 1868 y(DNA)31
+b(sequences",)g Fg(J.)h(Mol.)42 b(Biol.)p Fj(,)31 b Ff(220)p
+Fj(,)g(659-671.)259 2056 y(2.)47 b(Eddy)-8 b(,)27 b(S.R.)f(and)h
+(Durbin,)f(R.)h(\(1994\))j(\\RNA)d(sequence)h(analysis)f(using)f(co)m
+(v)-5 b(ariance)30 b(mo)s(dels",)376 2169 y Fg(Nucl.)41
+b(A)-5 b(cids)32 b(R)-5 b(es.)p Fj(,)32 b Ff(22)p Fj(,)f(2079-2088.)259
+2357 y(3.)47 b(P)m(a)m(v)m(esi,)34 b(A.,)e(Con)m(terio,)h(F.,)g(Bolc)m
+(hi,)h(A.,)e(Dieci,)i(G.,)f(Ottonello,)g(S.)f(\(1994\))i(\\Iden)m
+(ti\014cation)f(of)376 2470 y(new)26 b(euk)-5 b(ary)m(otic)28
+b(tRNA)g(genes)f(in)g(genomic)h(DNA)f(databases)h(b)m(y)f(a)g(m)m
+(ultistep)g(w)m(eigh)m(t)i(matrix)376 2582 y(analysis)i(of)f
+(transcriptional)h(con)m(trol)h(regions",)g Fg(Nucl.)41
+b(A)-5 b(cids)32 b(R)-5 b(es.)p Fj(,)32 b Ff(22)p Fj(,)f(1247-1256.)259
+2770 y(4.)47 b(Lo)m(w)m(e,)36 b(T.M.)e(&)f(Eddy)-8 b(,)34
+b(S.R.)f(\(1997\))k(\\tRNAscan-SE:)d(a)h(program)e(for)g(impro)m(v)m
+(ed)h(detection)376 2883 y(of)c(transfer)g(RNA)h(genes)g(in)f(genomic)h
+(sequence",)h Fg(Nucl.)41 b(A)-5 b(cids)32 b(R)-5 b(es.)p
+Fj(,)32 b Ff(25)p Fj(,)f(955-964.)1897 5525 y(23)p eop
+end
+%%Page: 24 24
+TeXDict begin 24 23 bop 148 273 a Fl(A)134 b(F)-15 b(AST)k(A)43
+b(Sequence)i(F)-11 b(ormat)148 476 y Fj(The)33 b(F)-10
+b(AST)i(A)32 b(sequence)i(format)f(consists)g(of)g(a)g(sequence)g(name)
+g(and)f(description)h(on)f(a)h(single)h(line)148 589
+y(starting)d(with)g(the)f(greater)i(than)e(sym)m(b)s(ol)g(')p
+Fd(>)p Fj(',)h(follo)m(w)m(ed)h(b)m(y)e(the)h(sequence:)148
+914 y Fd(>)48 b(SequenceName)c(description)h(here)148
+1027 y(ATGTCGTTACCGTCGTCGGGACCGA)o(CCAT)o(G)148 1140
+y(AGAGCGA)289 1465 y Fj(More)32 b(than)e(one)g(sequence)h(can)g(b)s(e)f
+(included)f(in)h(the)h(same)g(\014le:)148 1791 y Fd(>)48
+b(Randseq1)d(first)i(randomly)e(generated)g(seq)148 1904
+y(GGTGGTTACTAACCGTAAGAGATGA)o(TGTC)o(GCCG)o(TGG)o(TCGC)o(GTGG)o(CGC)o
+(CGCG)o(GACC)o(CAG)o(AT)148 2017 y(TGTACTTCTCTGAGTCGTTCTAGAT)o(CGAC)o
+(CAGT)o(CTT)o(CTAG)o(CTTG)o(CCC)o(GTGA)o(GGTA)o(TGG)o(GG)148
+2130 y(AGCCGCATATTGCCCACAAT)148 2242 y(>)j(Randseq2)d(second)h
+(randomly)g(generated)f(seq)148 2355 y(GCGACGCGTCTCTACACCAGACGCT)o
+(TCTG)o(TTGA)o(GGA)o(AGAG)o(TGCC)o(TGA)o(GTGC)o(AGGT)o(CCT)o(CG)148
+2468 y(AGAACCCACTGGAACTTGAAGGGCG)o(CGTC)o(TCAC)o(TGG)o(TCGT)o(GAGA)o
+(AGG)o(CTCC)o(GTCG)o(ATA)o(CG)148 2581 y(AAAGTCCATGCCAAGGACAT)148
+2694 y(>)j(Randseq3)d(third)i(randomly)e(generated)g(seq)148
+2807 y(GGCGAGTCTGAACTCACAAATATTG)o(CACG)o(AGAG)o(TTT)o(AGTG)o(TATG)o
+(TTC)o(CTCT)o(TAGG)o(CTG)o(AT)148 2920 y(AACAATAGTTTAGTGAGCGGAAATG)o
+(CAAC)o(CGCG)o(AGG)o(CGGT)o(CCCC)o(TGC)o(GCTT)o(GTAA)o(TGG)o(CC)148
+3033 y(ACCTGTTGCCCGTCGGATAT)1897 5525 y Fj(24)p eop end
+%%Page: 25 25
+TeXDict begin 25 24 bop 148 273 a Fl(B)134 b(Distribution)46
+b(and)f(cop)l(ying)g(terms)1078 476 y Ff(GNU)35 b(GENERAL)f(PUBLIC)i
+(LICENSE)1530 589 y Fj(V)-8 b(ersion)31 b(2,)g(June)f(1991)808
+773 y(Cop)m(yrigh)m(t)i(\(C\))e(1989,)j(1991)f(F)-8 b(ree)31
+b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)1070 886
+y(675)g(Mass)g(Av)m(e,)h(Cam)m(bridge,)e(MA)h(02139,)i(USA)720
+998 y(Ev)m(ery)m(one)e(is)g(p)s(ermitted)f(to)h(cop)m(y)g(and)f
+(distribute)g(v)m(erbatim)h(copies)831 1111 y(of)f(this)h(license)g(do)
+s(cumen)m(t,)f(but)g(c)m(hanging)h(it)g(is)g(not)f(allo)m(w)m(ed.)1756
+1295 y(Pream)m(ble)289 1479 y(The)38 b(licenses)i(for)e(most)h(soft)m
+(w)m(are)g(are)g(designed)f(to)h(tak)m(e)h(a)m(w)m(a)m(y)h(y)m(our)d
+(freedom)g(to)h(share)g(and)148 1592 y(c)m(hange)i(it.)68
+b(By)40 b(con)m(trast,)j(the)c(GNU)h(General)h(Public)e(License)h(is)f
+(in)m(tended)g(to)h(guaran)m(tee)h(y)m(our)148 1705 y(freedom)26
+b(to)h(share)f(and)g(c)m(hange)h(free)g(soft)m(w)m(are{to)i(mak)m(e)e
+(sure)e(the)i(soft)m(w)m(are)g(is)g(free)f(for)g(all)h(its)g(users.)148
+1818 y(This)38 b(General)i(Public)f(License)g(applies)g(to)h(most)f(of)
+g(the)g(F)-8 b(ree)40 b(Soft)m(w)m(are)g(F)-8 b(oundation's)40
+b(soft)m(w)m(are)148 1931 y(and)35 b(to)g(an)m(y)g(other)g(program)g
+(whose)g(authors)f(commit)i(to)g(using)e(it.)55 b(\(Some)35
+b(other)g(F)-8 b(ree)36 b(Soft)m(w)m(are)148 2044 y(F)-8
+b(oundation)31 b(soft)m(w)m(are)h(is)f(co)m(v)m(ered)h(b)m(y)e(the)h
+(GNU)g(Library)f(General)h(Public)f(License)h(instead.\))42
+b(Y)-8 b(ou)148 2157 y(can)31 b(apply)f(it)h(to)g(y)m(our)f(programs,)h
+(to)s(o.)289 2270 y(When)36 b(w)m(e)g(sp)s(eak)f(of)h(free)f(soft)m(w)m
+(are,)k(w)m(e)d(are)g(referring)f(to)h(freedom,)h(not)f(price.)56
+b(Our)34 b(General)148 2383 y(Public)f(Licenses)h(are)g(designed)f(to)h
+(mak)m(e)h(sure)d(that)i(y)m(ou)g(ha)m(v)m(e)g(the)g(freedom)f(to)h
+(distribute)f(copies)148 2495 y(of)j(free)g(soft)m(w)m(are)h(\(and)e(c)
+m(harge)i(for)e(this)h(service)g(if)g(y)m(ou)f(wish\),)i(that)f(y)m(ou)
+g(receiv)m(e)i(source)d(co)s(de)h(or)148 2608 y(can)f(get)g(it)f(if)g
+(y)m(ou)h(w)m(an)m(t)g(it,)g(that)g(y)m(ou)f(can)h(c)m(hange)g(the)f
+(soft)m(w)m(are)h(or)f(use)g(pieces)h(of)f(it)h(in)e(new)h(free)148
+2721 y(programs;)d(and)e(that)i(y)m(ou)g(kno)m(w)f(y)m(ou)h(can)g(do)f
+(these)h(things.)289 2834 y(T)-8 b(o)39 b(protect)g(y)m(our)f(righ)m
+(ts,)j(w)m(e)d(need)g(to)g(mak)m(e)h(restrictions)g(that)g(forbid)e(an)
+m(y)m(one)i(to)g(den)m(y)f(y)m(ou)148 2947 y(these)e(righ)m(ts)g(or)g
+(to)g(ask)g(y)m(ou)g(to)h(surrender)c(the)j(righ)m(ts.)57
+b(These)35 b(restrictions)i(translate)g(to)f(certain)148
+3060 y(resp)s(onsibilities)31 b(for)f(y)m(ou)h(if)f(y)m(ou)h
+(distribute)f(copies)h(of)f(the)h(soft)m(w)m(are,)h(or)e(if)h(y)m(ou)f
+(mo)s(dify)g(it.)289 3173 y(F)-8 b(or)29 b(example,)g(if)f(y)m(ou)f
+(distribute)h(copies)g(of)g(suc)m(h)f(a)h(program,)g(whether)f(gratis)i
+(or)e(for)h(a)g(fee,)h(y)m(ou)148 3286 y(m)m(ust)k(giv)m(e)h(the)f
+(recipien)m(ts)h(all)g(the)f(righ)m(ts)g(that)h(y)m(ou)f(ha)m(v)m(e.)49
+b(Y)-8 b(ou)34 b(m)m(ust)e(mak)m(e)i(sure)e(that)i(they)-8
+b(,)34 b(to)s(o,)148 3399 y(receiv)m(e)39 b(or)e(can)g(get)h(the)f
+(source)g(co)s(de.)61 b(And)36 b(y)m(ou)h(m)m(ust)g(sho)m(w)g(them)g
+(these)g(terms)g(so)g(they)g(kno)m(w)148 3512 y(their)31
+b(righ)m(ts.)289 3625 y(W)-8 b(e)28 b(protect)f(y)m(our)f(righ)m(ts)g
+(with)g(t)m(w)m(o)i(steps:)38 b(\(1\))27 b(cop)m(yrigh)m(t)h(the)e
+(soft)m(w)m(are,)j(and)c(\(2\))i(o\013er)g(y)m(ou)f(this)148
+3737 y(license)32 b(whic)m(h)e(giv)m(es)i(y)m(ou)e(legal)i(p)s
+(ermission)e(to)h(cop)m(y)-8 b(,)32 b(distribute)d(and/or)i(mo)s(dify)e
+(the)i(soft)m(w)m(are.)289 3850 y(Also,)44 b(for)d(eac)m(h)g(author's)g
+(protection)g(and)f(ours,)j(w)m(e)e(w)m(an)m(t)g(to)g(mak)m(e)h
+(certain)f(that)g(ev)m(ery)m(one)148 3963 y(understands)29
+b(that)i(there)f(is)h(no)f(w)m(arran)m(t)m(y)h(for)f(this)h(free)f
+(soft)m(w)m(are.)42 b(If)30 b(the)h(soft)m(w)m(are)h(is)e(mo)s
+(di\014ed)f(b)m(y)148 4076 y(someone)h(else)g(and)f(passed)f(on,)i(w)m
+(e)f(w)m(an)m(t)h(its)g(recipien)m(ts)g(to)g(kno)m(w)f(that)h(what)f
+(they)g(ha)m(v)m(e)h(is)f(not)h(the)148 4189 y(original,)g(so)f(that)f
+(an)m(y)h(problems)e(in)m(tro)s(duced)h(b)m(y)g(others)g(will)g(not)h
+(re\015ect)g(on)f(the)g(original)h(authors')148 4302
+y(reputations.)289 4415 y(Finally)-8 b(,)26 b(an)m(y)c(free)h(program)e
+(is)i(threatened)f(constan)m(tly)i(b)m(y)e(soft)m(w)m(are)h(paten)m
+(ts.)39 b(W)-8 b(e)23 b(wish)f(to)h(a)m(v)m(oid)148 4528
+y(the)30 b(danger)f(that)h(redistributors)e(of)i(a)f(free)h(program)f
+(will)h(individually)f(obtain)g(paten)m(t)i(licenses,)f(in)148
+4641 y(e\013ect)39 b(making)e(the)g(program)g(proprietary)-8
+b(.)60 b(T)-8 b(o)38 b(prev)m(en)m(t)f(this,)i(w)m(e)f(ha)m(v)m(e)g
+(made)f(it)g(clear)h(that)g(an)m(y)148 4754 y(paten)m(t)32
+b(m)m(ust)e(b)s(e)g(licensed)h(for)f(ev)m(ery)m(one's)i(free)e(use)g
+(or)h(not)f(licensed)h(at)g(all.)289 4867 y(The)f(precise)h(terms)f
+(and)g(conditions)h(for)f(cop)m(ying,)i(distribution)d(and)h(mo)s
+(di\014cation)h(follo)m(w.)1078 5051 y Ff(GNU)k(GENERAL)f(PUBLIC)i
+(LICENSE)289 5163 y(TERMS)f(AND)g(CONDITIONS)d(F)m(OR)j(COPYING,)f
+(DISTRIBUTION)g(AND)1532 5276 y(MODIFICA)-9 b(TION)1897
+5525 y Fj(25)p eop end
+%%Page: 26 26
+TeXDict begin 26 25 bop 259 273 a Fj(0.)47 b(This)37
+b(License)h(applies)h(to)f(an)m(y)h(program)e(or)i(other)f(w)m(ork)g
+(whic)m(h)g(con)m(tains)h(a)f(notice)i(placed)376 386
+y(b)m(y)29 b(the)g(cop)m(yrigh)m(t)i(holder)e(sa)m(ying)i(it)e(ma)m(y)h
+(b)s(e)f(distributed)g(under)e(the)j(terms)f(of)h(this)f(General)376
+499 y(Public)40 b(License.)74 b(The)40 b(\\Program",)45
+b(b)s(elo)m(w,)f(refers)d(to)h(an)m(y)f(suc)m(h)g(program)g(or)g(w)m
+(ork,)j(and)376 612 y(a)38 b(\\w)m(ork)h(based)f(on)g(the)g(Program")h
+(means)f(either)g(the)g(Program)h(or)f(an)m(y)g(deriv)-5
+b(ativ)m(e)40 b(w)m(ork)376 724 y(under)33 b(cop)m(yrigh)m(t)j(la)m(w:)
+51 b(that)36 b(is)f(to)g(sa)m(y)-8 b(,)38 b(a)d(w)m(ork)g(con)m
+(taining)i(the)e(Program)g(or)g(a)g(p)s(ortion)g(of)376
+837 y(it,)43 b(either)e(v)m(erbatim)g(or)f(with)g(mo)s(di\014cations)h
+(and/or)f(translated)h(in)m(to)g(another)f(language.)376
+950 y(\(Hereinafter,)35 b(translation)g(is)e(included)g(without)h
+(limitation)h(in)e(the)h(term)f(\\mo)s(di\014cation".\))376
+1063 y(Eac)m(h)e(licensee)g(is)g(addressed)e(as)i(\\y)m(ou".)376
+1213 y(Activities)k(other)f(than)f(cop)m(ying,)j(distribution)d(and)g
+(mo)s(di\014cation)h(are)g(not)g(co)m(v)m(ered)h(b)m(y)e(this)376
+1326 y(License;)c(they)g(are)g(outside)f(its)h(scop)s(e.)40
+b(The)28 b(act)h(of)g(running)d(the)j(Program)f(is)h(not)f(restricted,)
+376 1439 y(and)37 b(the)h(output)f(from)h(the)g(Program)g(is)g(co)m(v)m
+(ered)h(only)f(if)g(its)g(con)m(ten)m(ts)i(constitute)f(a)f(w)m(ork)376
+1552 y(based)31 b(on)h(the)g(Program)g(\(indep)s(enden)m(t)f(of)h(ha)m
+(ving)h(b)s(een)e(made)h(b)m(y)g(running)e(the)i(Program\).)376
+1665 y(Whether)e(that)h(is)f(true)h(dep)s(ends)d(on)i(what)h(the)f
+(Program)h(do)s(es.)259 1852 y(1.)47 b(Y)-8 b(ou)37 b(ma)m(y)g(cop)m(y)
+h(and)e(distribute)g(v)m(erbatim)i(copies)g(of)f(the)g(Program's)g
+(source)g(co)s(de)g(as)g(y)m(ou)376 1965 y(receiv)m(e)27
+b(it,)g(in)f(an)m(y)g(medium,)g(pro)m(vided)f(that)h(y)m(ou)g
+(conspicuously)g(and)f(appropriately)h(publish)376 2078
+y(on)i(eac)m(h)h(cop)m(y)g(an)f(appropriate)h(cop)m(yrigh)m(t)g(notice)
+h(and)e(disclaimer)h(of)f(w)m(arran)m(t)m(y;)i(k)m(eep)f(in)m(tact)376
+2191 y(all)g(the)f(notices)h(that)g(refer)e(to)i(this)f(License)h(and)e
+(to)i(the)f(absence)h(of)f(an)m(y)g(w)m(arran)m(t)m(y;)i(and)e(giv)m(e)
+376 2304 y(an)m(y)i(other)h(recipien)m(ts)g(of)g(the)f(Program)h(a)g
+(cop)m(y)g(of)f(this)h(License)g(along)g(with)f(the)h(Program.)376
+2454 y(Y)-8 b(ou)27 b(ma)m(y)h(c)m(harge)g(a)g(fee)f(for)g(the)g(ph)m
+(ysical)h(act)g(of)g(transferring)e(a)h(cop)m(y)-8 b(,)30
+b(and)c(y)m(ou)i(ma)m(y)f(at)h(y)m(our)376 2567 y(option)i(o\013er)h(w)
+m(arran)m(t)m(y)h(protection)f(in)f(exc)m(hange)i(for)e(a)h(fee.)259
+2754 y(2.)47 b(Y)-8 b(ou)25 b(ma)m(y)g(mo)s(dify)f(y)m(our)g(cop)m(y)h
+(or)g(copies)g(of)g(the)g(Program)f(or)h(an)m(y)g(p)s(ortion)f(of)h
+(it,)h(th)m(us)e(forming)376 2867 y(a)36 b(w)m(ork)h(based)f(on)g(the)g
+(Program,)j(and)c(cop)m(y)i(and)f(distribute)g(suc)m(h)g(mo)s
+(di\014cations)h(or)f(w)m(ork)376 2980 y(under)20 b(the)i(terms)g(of)g
+(Section)g(1)h(ab)s(o)m(v)m(e,)i(pro)m(vided)c(that)i(y)m(ou)f(also)h
+(meet)f(all)h(of)f(these)g(conditions:)414 3192 y(\(a\))47
+b(Y)-8 b(ou)36 b(m)m(ust)g(cause)g(the)h(mo)s(di\014ed)d(\014les)i(to)h
+(carry)f(prominen)m(t)g(notices)h(stating)g(that)g(y)m(ou)576
+3305 y(c)m(hanged)31 b(the)f(\014les)g(and)g(the)h(date)g(of)f(an)m(y)h
+(c)m(hange.)409 3451 y(\(b\))46 b(Y)-8 b(ou)26 b(m)m(ust)f(cause)h(an)m
+(y)g(w)m(ork)g(that)g(y)m(ou)g(distribute)f(or)g(publish,)g(that)h(in)g
+(whole)f(or)h(in)f(part)576 3564 y(con)m(tains)31 b(or)f(is)g(deriv)m
+(ed)g(from)f(the)i(Program)f(or)g(an)m(y)g(part)g(thereof,)h(to)g(b)s
+(e)e(licensed)h(as)h(a)576 3677 y(whole)f(at)h(no)g(c)m(harge)g(to)g
+(all)h(third)d(parties)i(under)e(the)h(terms)g(of)h(this)f(License.)419
+3822 y(\(c\))47 b(If)31 b(the)h(mo)s(di\014ed)f(program)h(normally)h
+(reads)e(commands)h(in)m(teractiv)m(ely)j(when)c(run,)h(y)m(ou)576
+3935 y(m)m(ust)24 b(cause)h(it,)h(when)d(started)i(running)d(for)j(suc)
+m(h)f(in)m(teractiv)m(e)j(use)d(in)g(the)g(most)h(ordinary)576
+4048 y(w)m(a)m(y)-8 b(,)43 b(to)d(prin)m(t)f(or)g(displa)m(y)h(an)f
+(announcemen)m(t)g(including)g(an)g(appropriate)h(cop)m(yrigh)m(t)576
+4161 y(notice)30 b(and)f(a)g(notice)i(that)e(there)h(is)f(no)g(w)m
+(arran)m(t)m(y)h(\(or)g(else,)g(sa)m(ying)g(that)g(y)m(ou)f(pro)m(vide)
+h(a)576 4274 y(w)m(arran)m(t)m(y\))i(and)f(that)h(users)f(ma)m(y)h
+(redistribute)f(the)g(program)h(under)d(these)j(conditions,)576
+4387 y(and)42 b(telling)i(the)g(user)e(ho)m(w)h(to)h(view)f(a)h(cop)m
+(y)f(of)h(this)e(License.)80 b(\(Exception:)67 b(if)43
+b(the)576 4500 y(Program)26 b(itself)i(is)e(in)m(teractiv)m(e)j(but)d
+(do)s(es)g(not)h(normally)g(prin)m(t)f(suc)m(h)g(an)h(announcemen)m(t,)
+576 4613 y(y)m(our)j(w)m(ork)g(based)g(on)h(the)f(Program)h(is)f(not)h
+(required)e(to)i(prin)m(t)f(an)h(announcemen)m(t.\))376
+4825 y(These)37 b(requiremen)m(ts)g(apply)g(to)h(the)g(mo)s(di\014ed)e
+(w)m(ork)i(as)f(a)h(whole.)62 b(If)37 b(iden)m(ti\014able)h(sections)
+376 4938 y(of)g(that)g(w)m(ork)g(are)g(not)h(deriv)m(ed)f(from)f(the)h
+(Program,)i(and)d(can)i(b)s(e)e(reasonably)h(considered)376
+5051 y(indep)s(enden)m(t)33 b(and)i(separate)g(w)m(orks)g(in)g
+(themselv)m(es,)i(then)e(this)g(License,)h(and)f(its)g(terms,)h(do)376
+5163 y(not)e(apply)f(to)i(those)f(sections)h(when)e(y)m(ou)h
+(distribute)g(them)g(as)g(separate)h(w)m(orks.)51 b(But)34
+b(when)376 5276 y(y)m(ou)40 b(distribute)f(the)h(same)g(sections)h(as)f
+(part)f(of)h(a)h(whole)f(whic)m(h)f(is)h(a)g(w)m(ork)g(based)f(on)h
+(the)1897 5525 y(26)p eop end
+%%Page: 27 27
+TeXDict begin 27 26 bop 376 273 a Fj(Program,)34 b(the)f(distribution)g
+(of)g(the)h(whole)f(m)m(ust)g(b)s(e)g(on)g(the)h(terms)f(of)g(this)g
+(License,)i(whose)376 386 y(p)s(ermissions)25 b(for)i(other)g
+(licensees)h(extend)f(to)g(the)g(en)m(tire)h(whole,)g(and)e(th)m(us)h
+(to)g(eac)m(h)h(and)e(ev)m(ery)376 499 y(part)k(regardless)h(of)f(who)g
+(wrote)h(it.)376 649 y(Th)m(us,)43 b(it)f(is)g(not)g(the)g(in)m(ten)m
+(t)h(of)e(this)h(section)h(to)f(claim)h(righ)m(ts)f(or)f(con)m(test)j
+(y)m(our)d(righ)m(ts)h(to)376 762 y(w)m(ork)30 b(written)f(en)m(tirely)
+i(b)m(y)f(y)m(ou;)h(rather,)f(the)g(in)m(ten)m(t)h(is)f(to)g(exercise)i
+(the)e(righ)m(t)g(to)h(con)m(trol)g(the)376 875 y(distribution)e(of)i
+(deriv)-5 b(ativ)m(e)32 b(or)e(collectiv)m(e)k(w)m(orks)c(based)g(on)h
+(the)f(Program.)376 1025 y(In)21 b(addition,)j(mere)e(aggregation)i(of)
+e(another)g(w)m(ork)g(not)g(based)g(on)f(the)h(Program)g(with)g(the)g
+(Pro-)376 1138 y(gram)27 b(\(or)g(with)g(a)g(w)m(ork)g(based)g(on)f
+(the)i(Program\))f(on)g(a)g(v)m(olume)h(of)f(a)g(storage)i(or)e
+(distribution)376 1251 y(medium)i(do)s(es)h(not)h(bring)e(the)i(other)g
+(w)m(ork)f(under)f(the)h(scop)s(e)h(of)f(this)h(License.)259
+1438 y(3.)47 b(Y)-8 b(ou)33 b(ma)m(y)h(cop)m(y)g(and)f(distribute)g
+(the)g(Program)h(\(or)f(a)h(w)m(ork)f(based)g(on)h(it,)g(under)e
+(Section)i(2\))376 1551 y(in)26 b(ob)5 b(ject)27 b(co)s(de)g(or)g
+(executable)h(form)e(under)f(the)i(terms)f(of)h(Sections)g(1)g(and)f(2)
+h(ab)s(o)m(v)m(e)g(pro)m(vided)376 1664 y(that)k(y)m(ou)f(also)i(do)e
+(one)h(of)f(the)h(follo)m(wing:)414 1877 y(\(a\))47 b(Accompan)m(y)36
+b(it)h(with)e(the)h(complete)h(corresp)s(onding)e(mac)m(hine-readable)j
+(source)e(co)s(de,)576 1990 y(whic)m(h)20 b(m)m(ust)h(b)s(e)f
+(distributed)g(under)f(the)i(terms)f(of)h(Sections)h(1)f(and)f(2)h(ab)s
+(o)m(v)m(e)h(on)f(a)g(medium)576 2103 y(customarily)31
+b(used)e(for)h(soft)m(w)m(are)i(in)m(terc)m(hange;)h(or,)409
+2249 y(\(b\))46 b(Accompan)m(y)25 b(it)f(with)g(a)g(written)g(o\013er,)
+i(v)-5 b(alid)24 b(for)g(at)h(least)g(three)f(y)m(ears,)i(to)f(giv)m(e)
+h(an)m(y)e(third)576 2362 y(part)m(y)-8 b(,)34 b(for)e(a)h(c)m(harge)h
+(no)e(more)h(than)f(y)m(our)h(cost)g(of)g(ph)m(ysically)g(p)s
+(erforming)e(source)i(dis-)576 2475 y(tribution,)h(a)h(complete)g(mac)m
+(hine-readable)h(cop)m(y)e(of)g(the)h(corresp)s(onding)d(source)j(co)s
+(de,)576 2588 y(to)f(b)s(e)e(distributed)g(under)g(the)h(terms)h(of)f
+(Sections)h(1)f(and)g(2)h(ab)s(o)m(v)m(e)g(on)f(a)h(medium)e(cus-)576
+2700 y(tomarily)f(used)f(for)g(soft)m(w)m(are)i(in)m(terc)m(hange;)g
+(or,)419 2847 y(\(c\))47 b(Accompan)m(y)41 b(it)g(with)f(the)h
+(information)g(y)m(ou)g(receiv)m(ed)h(as)e(to)i(the)e(o\013er)h(to)h
+(distribute)576 2959 y(corresp)s(onding)30 b(source)h(co)s(de.)42
+b(\(This)31 b(alternativ)m(e)i(is)e(allo)m(w)m(ed)i(only)e(for)g
+(noncommercial)576 3072 y(distribution)i(and)h(only)g(if)g(y)m(ou)h
+(receiv)m(ed)g(the)g(program)f(in)g(ob)5 b(ject)35 b(co)s(de)f(or)g
+(executable)576 3185 y(form)29 b(with)i(suc)m(h)f(an)g(o\013er,)h(in)f
+(accord)h(with)f(Subsection)g(b)g(ab)s(o)m(v)m(e.\))376
+3398 y(The)k(source)h(co)s(de)g(for)f(a)h(w)m(ork)g(means)g(the)g
+(preferred)e(form)h(of)h(the)g(w)m(ork)g(for)g(making)g(mo)s(d-)376
+3511 y(i\014cations)h(to)g(it.)56 b(F)-8 b(or)36 b(an)f(executable)i(w)
+m(ork,)g(complete)f(source)g(co)s(de)f(means)g(all)h(the)g(source)376
+3624 y(co)s(de)k(for)f(all)i(mo)s(dules)e(it)h(con)m(tains,)k(plus)39
+b(an)m(y)h(asso)s(ciated)h(in)m(terface)g(de\014nition)f(\014les,)i
+(plus)376 3737 y(the)33 b(scripts)h(used)e(to)i(con)m(trol)h
+(compilation)g(and)e(installation)j(of)d(the)h(executable.)52
+b(Ho)m(w)m(ev)m(er,)376 3849 y(as)31 b(a)h(sp)s(ecial)g(exception,)h
+(the)e(source)h(co)s(de)f(distributed)g(need)g(not)g(include)g(an)m
+(ything)h(that)g(is)376 3962 y(normally)38 b(distributed)g(\(in)h
+(either)g(source)f(or)h(binary)f(form\))g(with)h(the)f(ma)5
+b(jor)39 b(comp)s(onen)m(ts)376 4075 y(\(compiler,)34
+b(k)m(ernel,)g(and)f(so)g(on\))g(of)g(the)g(op)s(erating)g(system)g(on)
+f(whic)m(h)h(the)g(executable)h(runs,)376 4188 y(unless)29
+b(that)i(comp)s(onen)m(t)g(itself)g(accompanies)h(the)e(executable.)376
+4338 y(If)k(distribution)h(of)g(executable)h(or)f(ob)5
+b(ject)36 b(co)s(de)g(is)f(made)g(b)m(y)g(o\013ering)h(access)g(to)g
+(cop)m(y)g(from)376 4451 y(a)d(designated)h(place,)h(then)d(o\013ering)
+i(equiv)-5 b(alen)m(t)35 b(access)f(to)g(cop)m(y)g(the)f(source)g(co)s
+(de)g(from)g(the)376 4564 y(same)j(place)h(coun)m(ts)f(as)g
+(distribution)f(of)h(the)g(source)g(co)s(de,)i(ev)m(en)e(though)g
+(third)e(parties)j(are)376 4677 y(not)30 b(comp)s(elled)h(to)g(cop)m(y)
+g(the)g(source)f(along)i(with)e(the)g(ob)5 b(ject)32
+b(co)s(de.)259 4865 y(4.)47 b(Y)-8 b(ou)30 b(ma)m(y)h(not)f(cop)m(y)-8
+b(,)32 b(mo)s(dify)-8 b(,)30 b(sublicense,)g(or)g(distribute)g(the)g
+(Program)h(except)g(as)f(expressly)376 4978 y(pro)m(vided)35
+b(under)g(this)h(License.)59 b(An)m(y)36 b(attempt)i(otherwise)e(to)h
+(cop)m(y)-8 b(,)39 b(mo)s(dify)-8 b(,)38 b(sublicense)e(or)376
+5091 y(distribute)g(the)h(Program)g(is)g(v)m(oid,)j(and)c(will)h
+(automatically)j(terminate)e(y)m(our)f(righ)m(ts)h(under)376
+5204 y(this)e(License.)59 b(Ho)m(w)m(ev)m(er,)40 b(parties)d(who)f(ha)m
+(v)m(e)h(receiv)m(ed)h(copies,)h(or)d(righ)m(ts,)j(from)d(y)m(ou)h
+(under)1897 5525 y(27)p eop end
+%%Page: 28 28
+TeXDict begin 28 27 bop 376 273 a Fj(this)31 b(License)g(will)h(not)g
+(ha)m(v)m(e)g(their)f(licenses)h(terminated)g(so)f(long)h(as)g(suc)m(h)
+f(parties)g(remain)g(in)376 386 y(full)f(compliance.)259
+567 y(5.)47 b(Y)-8 b(ou)34 b(are)g(not)g(required)f(to)i(accept)g(this)
+f(License,)i(since)e(y)m(ou)g(ha)m(v)m(e)h(not)f(signed)g(it.)52
+b(Ho)m(w)m(ev)m(er,)376 680 y(nothing)28 b(else)h(gran)m(ts)g(y)m(ou)f
+(p)s(ermission)f(to)i(mo)s(dify)e(or)i(distribute)e(the)i(Program)f(or)
+g(its)h(deriv)-5 b(a-)376 793 y(tiv)m(e)39 b(w)m(orks.)63
+b(These)38 b(actions)h(are)f(prohibited)f(b)m(y)h(la)m(w)g(if)g(y)m(ou)
+g(do)g(not)g(accept)h(this)f(License.)376 905 y(Therefore,)29
+b(b)m(y)g(mo)s(difying)f(or)h(distributing)f(the)h(Program)h(\(or)f(an)
+m(y)g(w)m(ork)g(based)g(on)g(the)g(Pro-)376 1018 y(gram\),)37
+b(y)m(ou)f(indicate)h(y)m(our)f(acceptance)i(of)d(this)h(License)g(to)g
+(do)g(so,)h(and)f(all)g(its)g(terms)g(and)376 1131 y(conditions)30
+b(for)h(cop)m(ying,)g(distributing)f(or)g(mo)s(difying)g(the)h(Program)
+f(or)g(w)m(orks)h(based)f(on)g(it.)259 1312 y(6.)47 b(Eac)m(h)38
+b(time)g(y)m(ou)g(redistribute)f(the)h(Program)f(\(or)h(an)m(y)g(w)m
+(ork)g(based)f(on)g(the)h(Program\),)i(the)376 1425 y(recipien)m(t)28
+b(automatically)i(receiv)m(es)e(a)g(license)g(from)e(the)i(original)g
+(licensor)g(to)f(cop)m(y)-8 b(,)30 b(distribute)376 1538
+y(or)i(mo)s(dify)g(the)g(Program)h(sub)5 b(ject)32 b(to)h(these)g
+(terms)f(and)g(conditions.)48 b(Y)-8 b(ou)33 b(ma)m(y)g(not)f(imp)s
+(ose)376 1651 y(an)m(y)i(further)e(restrictions)j(on)f(the)g(recipien)m
+(ts')h(exercise)g(of)f(the)g(righ)m(ts)g(gran)m(ted)h(herein.)51
+b(Y)-8 b(ou)376 1764 y(are)30 b(not)h(resp)s(onsible)e(for)i(enforcing)
+f(compliance)i(b)m(y)e(third)g(parties)g(to)i(this)e(License.)259
+1945 y(7.)47 b(If,)24 b(as)f(a)g(consequence)g(of)g(a)g(court)g
+(judgmen)m(t)g(or)f(allegation)k(of)d(paten)m(t)h(infringemen)m(t)e(or)
+h(for)g(an)m(y)376 2058 y(other)33 b(reason)g(\(not)g(limited)g(to)h
+(paten)m(t)g(issues\),)f(conditions)g(are)h(imp)s(osed)e(on)g(y)m(ou)h
+(\(whether)376 2171 y(b)m(y)24 b(court)h(order,)g(agreemen)m(t)h(or)f
+(otherwise\))g(that)g(con)m(tradict)h(the)e(conditions)h(of)g(this)f
+(License,)376 2284 y(they)32 b(do)f(not)h(excuse)h(y)m(ou)f(from)f(the)
+i(conditions)f(of)g(this)g(License.)45 b(If)32 b(y)m(ou)g(cannot)h
+(distribute)376 2396 y(so)43 b(as)f(to)i(satisfy)f(sim)m(ultaneously)h
+(y)m(our)e(obligations)j(under)c(this)h(License)i(and)e(an)m(y)h(other)
+376 2509 y(p)s(ertinen)m(t)31 b(obligations,)j(then)e(as)f(a)i
+(consequence)f(y)m(ou)g(ma)m(y)g(not)g(distribute)g(the)f(Program)h(at)
+376 2622 y(all.)57 b(F)-8 b(or)36 b(example,)i(if)e(a)g(paten)m(t)g
+(license)h(w)m(ould)f(not)f(p)s(ermit)g(ro)m(y)m(alt)m(y-free)k
+(redistribution)c(of)376 2735 y(the)c(Program)h(b)m(y)f(all)h(those)g
+(who)f(receiv)m(e)j(copies)e(directly)g(or)f(indirectly)h(through)f(y)m
+(ou,)h(then)376 2848 y(the)i(only)g(w)m(a)m(y)h(y)m(ou)f(could)g
+(satisfy)h(b)s(oth)e(it)i(and)e(this)h(License)g(w)m(ould)g(b)s(e)g(to)
+g(refrain)g(en)m(tirely)376 2961 y(from)29 b(distribution)h(of)h(the)f
+(Program.)376 3108 y(If)38 b(an)m(y)h(p)s(ortion)f(of)h(this)g(section)
+h(is)e(held)h(in)m(v)-5 b(alid)39 b(or)g(unenforceable)f(under)g(an)m
+(y)h(particular)376 3221 y(circumstance,)j(the)d(balance)h(of)f(the)h
+(section)g(is)f(in)m(tended)g(to)h(apply)e(and)h(the)g(section)h(as)g
+(a)376 3334 y(whole)30 b(is)h(in)m(tended)f(to)h(apply)f(in)g(other)h
+(circumstances.)376 3481 y(It)37 b(is)f(not)h(the)g(purp)s(ose)f(of)g
+(this)h(section)h(to)g(induce)e(y)m(ou)h(to)h(infringe)e(an)m(y)h
+(paten)m(ts)h(or)f(other)376 3594 y(prop)s(ert)m(y)e(righ)m(t)h(claims)
+h(or)f(to)g(con)m(test)i(v)-5 b(alidit)m(y)37 b(of)f(an)m(y)g(suc)m(h)g
+(claims;)k(this)35 b(section)i(has)f(the)376 3706 y(sole)26
+b(purp)s(ose)d(of)i(protecting)i(the)e(in)m(tegrit)m(y)i(of)e(the)h
+(free)f(soft)m(w)m(are)h(distribution)f(system,)h(whic)m(h)376
+3819 y(is)k(implemen)m(ted)h(b)m(y)g(public)f(license)h(practices.)43
+b(Man)m(y)31 b(p)s(eople)g(ha)m(v)m(e)g(made)g(generous)g(con)m(tri-)
+376 3932 y(butions)f(to)h(the)h(wide)e(range)h(of)g(soft)m(w)m(are)i
+(distributed)d(through)g(that)h(system)g(in)g(reliance)h(on)376
+4045 y(consisten)m(t)h(application)g(of)e(that)i(system;)f(it)h(is)e
+(up)g(to)h(the)g(author/donor)f(to)i(decide)f(if)g(he)f(or)376
+4158 y(she)h(is)h(willing)h(to)f(distribute)g(soft)m(w)m(are)h(through)
+f(an)m(y)g(other)g(system)g(and)g(a)g(licensee)h(cannot)376
+4271 y(imp)s(ose)c(that)h(c)m(hoice.)376 4418 y(This)22
+b(section)i(is)f(in)m(tended)g(to)g(mak)m(e)h(thoroughly)f(clear)h
+(what)f(is)g(b)s(eliev)m(ed)h(to)g(b)s(e)e(a)h(consequence)376
+4531 y(of)30 b(the)h(rest)f(of)h(this)f(License.)259
+4712 y(8.)47 b(If)30 b(the)g(distribution)g(and/or)h(use)f(of)h(the)f
+(Program)h(is)f(restricted)i(in)e(certain)h(coun)m(tries)h(either)376
+4825 y(b)m(y)e(paten)m(ts)h(or)g(b)m(y)f(cop)m(yrigh)m(ted)i(in)m
+(terfaces,)h(the)d(original)i(cop)m(yrigh)m(t)g(holder)e(who)g(places)i
+(the)376 4938 y(Program)e(under)f(this)h(License)h(ma)m(y)g(add)f(an)g
+(explicit)i(geographical)g(distribution)e(limitation)376
+5051 y(excluding)23 b(those)i(coun)m(tries,)h(so)d(that)i(distribution)
+e(is)g(p)s(ermitted)g(only)h(in)f(or)h(among)g(coun)m(tries)376
+5163 y(not)k(th)m(us)g(excluded.)40 b(In)28 b(suc)m(h)g(case,)j(this)d
+(License)h(incorp)s(orates)g(the)f(limitation)j(as)e(if)f(written)376
+5276 y(in)i(the)g(b)s(o)s(dy)f(of)i(this)f(License.)1897
+5525 y(28)p eop end
+%%Page: 29 29
+TeXDict begin 29 28 bop 259 273 a Fj(9.)47 b(The)21 b(F)-8
+b(ree)23 b(Soft)m(w)m(are)g(F)-8 b(oundation)22 b(ma)m(y)h(publish)d
+(revised)i(and/or)g(new)f(v)m(ersions)h(of)g(the)g(General)376
+386 y(Public)33 b(License)h(from)f(time)i(to)f(time.)51
+b(Suc)m(h)33 b(new)g(v)m(ersions)h(will)g(b)s(e)f(similar)h(in)f
+(spirit)h(to)g(the)376 499 y(presen)m(t)c(v)m(ersion,)h(but)f(ma)m(y)h
+(di\013er)f(in)g(detail)h(to)h(address)d(new)h(problems)g(or)g
+(concerns.)376 649 y(Eac)m(h)41 b(v)m(ersion)g(is)g(giv)m(en)h(a)f
+(distinguishing)f(v)m(ersion)h(n)m(um)m(b)s(er.)70 b(If)41
+b(the)f(Program)h(sp)s(eci\014es)g(a)376 762 y(v)m(ersion)32
+b(n)m(um)m(b)s(er)e(of)i(this)f(License)i(whic)m(h)e(applies)h(to)g(it)
+g(and)g(\\an)m(y)g(later)h(v)m(ersion",)g(y)m(ou)f(ha)m(v)m(e)376
+875 y(the)d(option)g(of)g(follo)m(wing)h(the)f(terms)g(and)f
+(conditions)i(either)f(of)g(that)h(v)m(ersion)f(or)g(of)g(an)m(y)g
+(later)376 988 y(v)m(ersion)i(published)f(b)m(y)h(the)h(F)-8
+b(ree)32 b(Soft)m(w)m(are)h(F)-8 b(oundation.)44 b(If)31
+b(the)g(Program)h(do)s(es)f(not)g(sp)s(ecify)376 1101
+y(a)h(v)m(ersion)h(n)m(um)m(b)s(er)e(of)i(this)f(License,)i(y)m(ou)e
+(ma)m(y)h(c)m(ho)s(ose)g(an)m(y)g(v)m(ersion)g(ev)m(er)g(published)e(b)
+m(y)h(the)376 1213 y(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
+b(oundation.)214 1401 y(10.)47 b(If)d(y)m(ou)i(wish)f(to)h(incorp)s
+(orate)f(parts)h(of)f(the)h(Program)f(in)m(to)h(other)g(free)f
+(programs)g(whose)376 1514 y(distribution)34 b(conditions)i(are)g
+(di\013eren)m(t,)h(write)f(to)g(the)f(author)g(to)h(ask)g(for)f(p)s
+(ermission.)54 b(F)-8 b(or)376 1627 y(soft)m(w)m(are)42
+b(whic)m(h)f(is)g(cop)m(yrigh)m(ted)i(b)m(y)e(the)h(F)-8
+b(ree)42 b(Soft)m(w)m(are)g(F)-8 b(oundation,)45 b(write)d(to)g(the)f
+(F)-8 b(ree)376 1740 y(Soft)m(w)m(are)37 b(F)-8 b(oundation;)41
+b(w)m(e)36 b(sometimes)i(mak)m(e)f(exceptions)h(for)e(this.)59
+b(Our)35 b(decision)i(will)g(b)s(e)376 1853 y(guided)j(b)m(y)g(the)h(t)
+m(w)m(o)h(goals)g(of)f(preserving)f(the)g(free)h(status)g(of)g(all)g
+(deriv)-5 b(ativ)m(es)42 b(of)f(our)f(free)376 1966 y(soft)m(w)m(are)31
+b(and)f(of)h(promoting)f(the)h(sharing)f(and)g(reuse)g(of)g(soft)m(w)m
+(are)i(generally)-8 b(.)1897 5525 y(29)p eop end
+%%Page: 30 30
+TeXDict begin 30 29 bop 1636 273 a Ff(NO)34 b(W)-12 b(ARRANTY)214
+523 y Fj(11.)47 b(BECA)m(USE)34 b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g
+(FREE)h(OF)g(CHAR)m(GE,)h(THERE)e(IS)g(NO)376 636 y(W)-10
+b(ARRANTY)35 b(F)m(OR)h(THE)f(PR)m(OGRAM,)i(TO)d(THE)h(EXTENT)g
+(PERMITTED)g(BY)h(AP-)376 749 y(PLICABLE)k(LA)-10 b(W.)42
+b(EX)m(CEPT)f(WHEN)h(OTHER)-10 b(WISE)40 b(ST)-8 b(A)g(TED)41
+b(IN)g(WRITING)g(THE)376 861 y(COPYRIGHT)19 b(HOLDERS)h(AND/OR)h(OTHER)
+e(P)-8 b(AR)g(TIES)20 b(PR)m(O)m(VIDE)h(THE)f(PR)m(OGRAM)376
+974 y(\\AS)25 b(IS")g(WITHOUT)g(W)-10 b(ARRANTY)26 b(OF)f(ANY)h(KIND,)g
+(EITHER)e(EXPRESSED)h(OR)g(IM-)376 1087 y(PLIED,)37 b(INCLUDING,)h(BUT)
+g(NOT)f(LIMITED)h(TO,)f(THE)g(IMPLIED)h(W)-10 b(ARRANTIES)376
+1200 y(OF)22 b(MER)m(CHANT)-8 b(ABILITY)23 b(AND)g(FITNESS)e(F)m(OR)i
+(A)g(P)-8 b(AR)g(TICULAR)22 b(PURPOSE.)f(THE)376 1313
+y(ENTIRE)40 b(RISK)g(AS)h(TO)f(THE)h(QUALITY)g(AND)h(PERF)m(ORMANCE)f
+(OF)g(THE)g(PR)m(O-)376 1426 y(GRAM)c(IS)e(WITH)i(YOU.)f(SHOULD)g(THE)g
+(PR)m(OGRAM)h(PR)m(O)m(VE)g(DEFECTIVE,)f(YOU)376 1539
+y(ASSUME)23 b(THE)h(COST)e(OF)i(ALL)f(NECESSAR)-8 b(Y)24
+b(SER)-10 b(VICING,)23 b(REP)-8 b(AIR)24 b(OR)f(CORREC-)376
+1652 y(TION.)214 1839 y(12.)47 b(IN)20 b(NO)h(EVENT)g(UNLESS)f
+(REQUIRED)g(BY)i(APPLICABLE)e(LA)-10 b(W)21 b(OR)g(A)m(GREED)h(TO)e(IN)
+376 1952 y(WRITING)30 b(WILL)g(ANY)h(COPYRIGHT)e(HOLDER,)i(OR)f(ANY)g
+(OTHER)g(P)-8 b(AR)g(TY)31 b(WHO)376 2065 y(MA)-8 b(Y)43
+b(MODIFY)h(AND/OR)g(REDISTRIBUTE)d(THE)i(PR)m(OGRAM)g(AS)g(PERMITTED)
+376 2178 y(ABO)m(VE,)33 b(BE)f(LIABLE)g(TO)g(YOU)g(F)m(OR)g(D)m(AMA)m
+(GES,)i(INCLUDING)f(ANY)g(GENERAL,)376 2291 y(SPECIAL,)c(INCIDENT)-8
+b(AL)31 b(OR)g(CONSEQUENTIAL)e(D)m(AMA)m(GES)k(ARISING)e(OUT)f(OF)376
+2404 y(THE)38 b(USE)g(OR)h(INABILITY)f(TO)g(USE)g(THE)h(PR)m(OGRAM)g
+(\(INCLUDING)h(BUT)f(NOT)376 2517 y(LIMITED)23 b(TO)g(LOSS)f(OF)h(D)m
+(A)-8 b(T)g(A)25 b(OR)f(D)m(A)-8 b(T)g(A)25 b(BEING)f(RENDERED)g(INA)m
+(CCURA)-8 b(TE)23 b(OR)376 2630 y(LOSSES)32 b(SUST)-8
+b(AINED)35 b(BY)h(YOU)f(OR)f(THIRD)h(P)-8 b(AR)g(TIES)35
+b(OR)f(A)h(F)-10 b(AILURE)35 b(OF)g(THE)376 2743 y(PR)m(OGRAM)d(TO)g
+(OPERA)-8 b(TE)31 b(WITH)h(ANY)h(OTHER)e(PR)m(OGRAMS\),)i(EVEN)f(IF)h
+(SUCH)376 2856 y(HOLDER)27 b(OR)h(OTHER)f(P)-8 b(AR)g(TY)28
+b(HAS)f(BEEN)h(AD)m(VISED)h(OF)f(THE)f(POSSIBILITY)f(OF)376
+2969 y(SUCH)j(D)m(AMA)m(GES.)1153 3181 y(END)i(OF)f(TERMS)g(AND)h
+(CONDITIONS)1897 5525 y(30)p eop end
+%%Trailer
+
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/PSELC.cm b/PSELC.cm
new file mode 100644
index 0000000..fa1f402
--- /dev/null
+++ b/PSELC.cm
@@ -0,0 +1,1154 @@
+### cove V2
+72 nodes
+### node 0 type 6
+1 -1
+0.06250 0.56250 0.06250 0.18750 0.06250 0.06250
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 1
+2 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07143 0.64286 0.07143 0.07143 0.07143 0.07143
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04167 0.04167 0.04167 0.04167 # MATP
+0.04167 0.04167 0.04167 0.04167 # MATP
+0.04167 0.37500 0.04167 0.04167 # MATP
+0.04167 0.04167 0.04167 0.04167 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.16667 0.50000 0.16667 0.16667 # MATR
+### node 2 type 1
+3 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.42308 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 3 type 1
+4 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.34615 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.11538 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 4 type 1
+5 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.26923 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.11538 0.03846 0.11538 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 5 type 1
+6 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.42308 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 6 type 1
+7 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.19231 # MATP
+0.03846 0.03846 0.11538 0.03846 # MATP
+0.03846 0.19231 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 7 type 1
+8 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.56250 0.18750 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.11538 0.19231 0.03846 0.03846 # MATP
+0.19231 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 8 type 1
+9 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.08333 0.00000 0.75000 0.00000 0.08333 0.08333
+0.16667 0.00000 0.50000 0.00000 0.16667 0.16667
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04167 0.04167 0.04167 0.04167 # MATP
+0.04167 0.04167 0.20833 0.12500 # MATP
+0.04167 0.04167 0.04167 0.04167 # MATP
+0.12500 0.04167 0.04167 0.04167 # MATP
+0.16667 0.16667 0.50000 0.16667 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 9 type 2
+10 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.50000 0.07143 0.35714 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 2
+11 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.91667 0.00000 0.00000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.07143 0.78571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 0
+12 23
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 4
+13 -1
+0.07143 0.78571 0.07143 0.07143 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 1
+14 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.42308 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 14 type 1
+15 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.11538 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.26923 0.03846 0.11538 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 15 type 1
+16 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.11538 # MATP
+0.03846 0.03846 0.34615 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 16 type 1
+17 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.34615 0.03846 # MATP
+0.03846 0.11538 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 17 type 1
+18 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.11538 # MATP
+0.03846 0.03846 0.19231 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.19231 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 18 type 1
+19 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.07143 0.00000 0.78571 0.00000 0.07143 0.07143
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.42308 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 19 type 2
+20 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.64286 0.07143 0.21429 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.78571 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.78571 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.91667 0.00000 0.00000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.07143 0.78571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 5
+24 -1
+0.38462 0.00000 0.53846 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+25 -1
+0.83333 0.00000 0.00000 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.87500 0.00000 0.00000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10000 0.70000 0.10000 0.10000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 0
+26 40
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 4
+27 -1
+0.35714 0.35714 0.07143 0.21429 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 1
+28 -1
+0.10000 0.50000 0.10000 0.10000 0.10000 0.10000
+0.10000 0.50000 0.10000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.05000 0.05000 0.05000 0.05000 # MATP
+0.05000 0.05000 0.05000 0.05000 # MATP
+0.05000 0.05000 0.05000 0.25000 # MATP
+0.05000 0.05000 0.05000 0.05000 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.16667 0.16667 0.16667 0.50000 # MATR
+### node 28 type 1
+29 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.42308 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 29 type 1
+30 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.11538 # MATP
+0.03846 0.03846 0.11538 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.26923 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 30 type 1
+31 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.42308 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 31 type 1
+32 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.42308 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 32 type 1
+33 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.07143 0.00000 0.78571 0.00000 0.07143 0.07143
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.34615 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.11538 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 33 type 2
+34 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.64286 0.07143 0.21429 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.07143 0.78571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.07143 0.78571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.78571 0.07143 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.78571 0.07143 0.07143 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.78571 0.07143 0.07143 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.91667 0.00000 0.00000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.78571 0.07143 0.07143 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 5
+41 -1
+0.69231 0.00000 0.23077 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 2
+42 -1
+0.63636 0.00000 0.27273 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.50000 0.16667 0.16667 0.16667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.87500 0.00000 0.00000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.83333 0.00000 0.00000 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.12500 0.12500 0.12500 0.62500 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 0
+44 57
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 4
+45 -1
+0.07143 0.50000 0.35714 0.07143 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 1
+46 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.08333 0.58333 0.08333 0.08333 0.08333 0.08333
+0.10000 0.50000 0.10000 0.10000 0.10000 0.10000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04545 0.04545 0.04545 0.04545 # MATP
+0.04545 0.04545 0.04545 0.04545 # MATP
+0.04545 0.04545 0.13636 0.04545 # MATP
+0.04545 0.04545 0.22727 0.04545 # MATP
+0.12500 0.12500 0.37500 0.37500 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 46 type 1
+47 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.11538 0.03846 # MATP
+0.03846 0.19231 0.03846 0.19231 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 47 type 1
+48 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.19231 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.19231 0.03846 0.11538 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 48 type 1
+49 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.11538 # MATP
+0.03846 0.03846 0.11538 0.03846 # MATP
+0.03846 0.26923 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 49 type 1
+50 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.11538 0.03846 0.03846 # MATP
+0.03846 0.19231 0.03846 0.19231 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 50 type 1
+51 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.11538 # MATP
+0.03846 0.03846 0.19231 0.11538 # MATP
+0.03846 0.03846 0.03846 0.11538 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 51 type 1
+52 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.26923 0.03846 # MATP
+0.03846 0.03846 0.11538 0.03846 # MATP
+0.03846 0.03846 0.11538 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 52 type 1
+53 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.07143 0.00000 0.78571 0.00000 0.07143 0.07143
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.19231 0.03846 # MATP
+0.03846 0.19231 0.03846 0.03846 # MATP
+0.03846 0.03846 0.11538 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 53 type 2
+54 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21429 0.50000 0.21429 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 2
+55 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.50000 0.35714 0.07143 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 55 type 2
+56 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.23077 0.00000 0.69231 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.35714 0.21429 0.35714 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 56 type 2
+-1 -1
+0.75000 0.00000 0.00000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.90000 0.00000 0.00000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25000 0.25000 0.41667 0.08333 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 5
+58 -1
+0.69231 0.00000 0.23077 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.27273 0.00000 0.63636 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.16667 0.50000 0.16667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.11111 0.33333 0.11111 0.33333 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09091 0.63636 0.09091 0.09091 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10000 0.10000 0.70000 0.10000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 1
+61 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.07143 0.64286 0.07143 0.07143 0.07143 0.07143
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04167 0.04167 0.04167 0.04167 # MATP
+0.04167 0.04167 0.04167 0.04167 # MATP
+0.04167 0.12500 0.04167 0.29167 # MATP
+0.04167 0.04167 0.04167 0.04167 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.16667 0.16667 0.16667 0.50000 # MATR
+### node 61 type 1
+62 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.19231 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.26923 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 62 type 1
+63 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.26923 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.19231 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 63 type 1
+64 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.06250 0.68750 0.06250 0.06250 0.06250 0.06250
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.42308 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 64 type 1
+65 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.07143 0.00000 0.78571 0.00000 0.07143 0.07143
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.03846 0.42308 0.03846 0.03846 # MATP
+0.03846 0.03846 0.03846 0.03846 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 65 type 2
+66 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.07143 0.78571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.07143 0.78571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.78571 0.07143 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21429 0.07143 0.64286 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.78571 0.07143 0.07143 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.64286 0.07143 0.21429 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.91667 0.00000 0.00000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.07143 0.07143 0.78571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/PSELCinf-c.cm b/PSELCinf-c.cm
new file mode 100644
index 0000000..fe77b5f
--- /dev/null
+++ b/PSELCinf-c.cm
@@ -0,0 +1,406 @@
+INFERNAL-1 [1.0]
+NAME prok-selcysteine-tRNA
+STATES 295
+NODES 73
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 8
+EFFNSEQ 8.000
+CLEN 92
+BCOM cmbuild --rf --enone PSELCinf-nc.cm prok-selc.sto
+BDATE Sun Feb 8 16:47:12 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/PSELCinf.hfile --exp-sfile cmcalibrate_files/PSELCinf.sfile --exp-qqfile cmcalibrate_files/PSELCinf.qqfile --exp-ffile cmcalibrate_files/PSELCinf.ffile --fil-dfile cmcalibrate_files/PSELCinf.dfile -s 208 PSELCinf-c.cm
+CDATE Sun Feb 8 20:35:21 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.83067 -5.33369 2.13858 1500000 558251 0.002015
+E-GC 0 0.37779 -32.13896 -19.42138 1500000 45775 0.008192
+E-LI 0 0.69607 -6.28673 2.49866 1500000 509317 0.002209
+E-GI 0 0.41203 -25.24054 -13.68825 1500000 43773 0.008567
+E-LV 0 0.91490 -0.71814 4.25595 15000000 106548 0.010559
+E-GV 0 0.35889 -26.83591 -11.09940 15000000 106358 0.003526
+E-LF 0 0.99295 1.07082 5.65406 15000000 106560 0.010557
+E-GF 0 0.38395 -20.69631 -5.98375 15000000 106494 0.003521
+FT-LC 20 0.99500 10000 1500000 0
+ 7.08987 5.68736 4.14569 3.2086 3.13248 2.97336 2.478 2.42514 2.11587 2.11384 1.45721 1.45721 1.45721 1.45721 1.44241 1.44241 1.44241 1.43435 3.19316e-07 1.80078e-07
+ 4799.95 4078.63 3175.73 2755.35 2393 1923.41 1662.19 1478.41 1295.51 1125.14 951.323 537.489 465.878 366.365 307.622 222.112 148.715 111.668 11.7174 11.1668
+FT-LI 19 0.99500 10000 1500000 0
+ 22.8434 19.6436 13.2041 12.6502 10.4378 8.76801 8.56663 8.20153 7.69122 7.50921 5.49652 5.49652 5.49652 5.49652 5.4496 5.4496 5.4496 5.41432 2.00107e-06
+ 4799.95 4078.63 3175.73 2755.35 2393 1923.41 1662.19 1478.41 1295.51 1125.14 951.323 537.489 465.878 366.365 307.622 222.112 151.999 111.668 11.1668
+FT-GC 2 0.99500 10000 1500000 1
+ 0.000557072 0.000148877
+ 88.2441 8.82441
+FT-GI 2 0.99500 10000 1500000 1
+ 0.000165821 0.000132357
+ 88.2441 8.82441
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 6 -9.837 -9.776 -0.203 -8.553 -3.001 -9.227
+ IL 1 1 2 1 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 1 ]
+ MP 3 2 3 7 6 -9.648 -9.587 -0.100 -8.364 -4.067 -9.038 -5.993 -4.008 -6.722 -0.176 -6.518 -4.764 -1.083 -6.026 -5.097 3.659 -4.707 -1.561 -1.136 -4.630 -0.115 -4.946
+ ML 4 2 3 7 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 5 2 3 7 6 -8.732 -7.461 -0.325 -7.439 -2.573 -5.653 -1.176 1.514 -2.003 -1.146
+ D 6 2 3 7 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 7 7 5 7 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 8 8 6 8 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 2 ]
+ MP 9 8 6 13 6 -9.763 -9.702 -0.013 -8.478 -8.758 -9.153 -8.148 -4.230 -8.694 -0.961 -8.193 -4.552 -2.256 -7.376 -5.375 3.859 -4.870 -1.907 -2.177 -4.616 -4.083 -6.226
+ ML 10 8 6 13 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 11 8 6 13 6 -7.959 -6.688 -0.610 -6.666 -1.800 -4.879 -0.169 -0.887 -0.964 1.041
+ D 12 8 6 13 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 13 13 5 13 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 14 14 6 14 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 3 ]
+ MP 15 14 6 19 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.208 -3.290 -4.919 3.427 -5.303 -4.962 -0.984 -4.045 -4.572 1.662 -4.997 -1.433 -0.953 -4.655 -2.496 -3.546
+ ML 16 14 6 19 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 17 14 6 19 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 18 14 6 19 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 19 19 5 19 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 20 20 6 20 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 4 ]
+ MP 21 20 6 25 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.114 -3.170 -4.915 2.993 -5.404 -4.882 -0.506 -4.201 -4.364 1.922 -4.379 1.040 -0.507 -4.416 -2.076 -3.456
+ ML 22 20 6 25 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 23 20 6 25 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 24 20 6 25 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 25 25 5 25 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 26 26 6 26 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 5 ]
+ MP 27 26 6 31 6 -9.837 -9.776 -0.103 -8.553 -8.832 -4.017 -6.268 -4.085 -7.039 -0.433 -6.932 -4.709 -1.718 -6.355 -5.165 3.727 -4.762 -1.729 -1.637 -4.627 -3.361 -0.408
+ ML 28 26 6 31 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 29 26 6 31 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 30 26 6 31 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 31 31 5 31 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 32 32 6 32 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 6 ]
+ MP 33 32 6 37 6 -9.747 -9.687 -0.014 -8.463 -8.743 -9.138 -4.193 -3.189 -5.088 2.308 -5.528 -4.939 0.892 -4.570 -4.312 2.754 -4.025 -0.729 -0.034 -4.331 -1.629 -3.480
+ ML 34 32 6 37 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 35 32 6 37 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 36 32 6 37 6 -10.475 -9.173 -0.600 -5.652 -5.670 -1.745
+ IL 37 37 5 37 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 38 38 6 38 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 7 ]
+ MP 39 38 6 43 6 -9.837 -9.776 -0.203 -2.995 -8.832 -9.227 -3.342 -3.462 -3.984 0.204 -3.207 -4.487 -0.363 -4.007 1.240 2.538 -4.000 -1.439 2.156 -3.615 -1.538 -3.055
+ ML 40 38 6 43 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 41 38 6 43 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 42 38 6 43 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 43 43 5 43 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 44 44 6 44 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 8 ]
+ MP 45 44 6 49 4 -8.079 -8.286 -0.024 -6.701 -3.629 -4.174 -3.852 -0.204 -2.817 -4.529 2.826 0.753 -4.135 -0.305 -4.188 -1.838 2.013 -3.909 -0.887 -3.063
+ ML 46 44 6 49 4 -5.350 -5.533 -0.149 -4.262 -1.250 -2.301 1.615 -1.672
+ MR 47 44 6 49 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 48 44 6 49 4 -4.568 -4.250 -2.265 -0.520
+ IL 49 49 5 49 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 50 50 6 50 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 9 ]
+ ML 51 50 6 53 3 -9.343 -0.008 -7.997 1.224 -2.297 0.216 -1.742
+ D 52 50 6 53 3 -6.174 -1.687 -0.566
+ IL 53 53 3 53 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 10 ]
+ ML 54 53 3 56 2 -9.904 -0.002 -3.221 -3.065 -3.956 1.891
+ D 55 53 3 56 2 -8.445 -0.004
+ IL 56 56 3 56 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ BIF 11 ]
+ B 57 56 3 58 173
+ [ BEGL 12 ]
+ S 58 57 1 59 1 0.000
+ [ BIF 13 ]
+ B 59 58 1 60 110
+ [ BEGL 14 ]
+ S 60 59 1 61 4 -0.024 -7.737 -7.144 -7.784
+ [ MATP 15 ]
+ MP 61 60 1 65 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -6.448 -6.388 -4.535 -1.927 -4.254 -5.159 3.815 -5.190 -7.971 -1.890 -4.532 -3.550 -0.469 -7.090 -1.599 -5.287
+ ML 62 60 1 65 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 63 60 1 65 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 64 60 1 65 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 65 65 5 65 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 66 66 6 66 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 16 ]
+ MP 67 66 6 71 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.453 -3.293 -5.378 1.644 -6.067 -4.804 -0.455 -4.862 -4.410 3.117 -4.078 1.008 -0.453 -4.325 -2.059 -3.753
+ ML 68 66 6 71 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 69 66 6 71 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 70 66 6 71 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 71 71 5 71 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 72 72 6 72 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 17 ]
+ MP 73 72 6 77 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -6.793 -5.809 -7.039 -2.012 -6.268 -8.657 -2.144 -6.229 -6.397 -2.222 -6.473 1.841 -1.833 -6.715 3.502 -5.483
+ ML 74 72 6 77 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 75 72 6 77 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 76 72 6 77 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 77 77 5 77 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 78 78 6 78 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 18 ]
+ MP 79 78 6 83 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -6.650 -6.159 -5.257 -1.010 -4.633 -5.927 3.498 -5.587 -7.521 1.362 -5.260 -2.637 -0.115 -7.102 -1.496 -5.104
+ ML 80 78 6 83 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 81 78 6 83 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 82 78 6 83 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 83 83 5 83 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 84 84 6 84 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 19 ]
+ MP 85 84 6 89 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.768 -4.861 -4.928 1.536 -3.498 -5.576 2.479 -4.862 -5.246 0.084 -5.220 -1.665 2.380 -4.845 -0.945 -3.534
+ ML 86 84 6 89 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 87 84 6 89 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 88 84 6 89 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 89 89 5 89 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 90 90 6 90 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 20 ]
+ MP 91 90 6 95 4 -8.394 -8.601 -0.019 -7.015 -6.448 -6.388 -4.535 -1.927 -4.254 -5.159 3.815 -5.190 -7.971 -1.890 -4.532 -3.550 -0.469 -7.090 -1.599 -5.287
+ ML 92 90 6 95 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 93 90 6 95 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 94 90 6 95 4 -4.568 -4.250 -2.265 -0.520
+ IL 95 95 5 95 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 96 96 6 96 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 21 ]
+ ML 97 96 6 99 3 -9.343 -0.008 -7.997 -2.133 1.571 -3.010 -0.565
+ D 98 96 6 99 3 -6.174 -1.687 -0.566
+ IL 99 99 3 99 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 100 99 3 102 3 -9.343 -0.008 -7.997 -2.576 -4.009 1.875 -3.290
+ D 101 99 3 102 3 -6.174 -1.687 -0.566
+ IL 102 102 3 102 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 103 102 3 105 3 -9.343 -0.008 -7.997 -2.576 -4.009 1.875 -3.290
+ D 104 102 3 105 3 -6.174 -1.687 -0.566
+ IL 105 105 3 105 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 106 105 3 108 2 * 0.000 -3.221 -3.065 -3.956 1.891
+ D 107 105 3 108 2 * 0.000
+ IL 108 108 3 108 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 25 ]
+ E 109 108 3 -1 0
+ [ BEGR 26 ]
+ S 110 59 1 111 3 -9.343 -0.539 -1.688
+ IL 111 111 2 111 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 27 ]
+ ML 112 111 2 114 5 -7.860 -1.684 -7.675 -1.953 -1.247 -2.830 1.854 -3.714 -2.565
+ D 113 111 2 114 5 -7.324 -0.125 -6.585 -4.960 -4.872
+ IL 114 114 3 114 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 28 ]
+ MP 115 114 3 119 6 -9.269 -9.208 -0.019 -7.985 -8.265 -8.660 -6.091 -4.562 -6.091 -0.710 -5.655 -7.603 -1.043 -5.061 -5.359 -0.806 -5.259 3.729 -0.768 -5.693 -2.057 -4.410
+ ML 116 114 3 119 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 117 114 3 119 6 -8.732 -7.461 -0.325 -7.439 -2.573 -5.653 -1.039 -1.496 -1.821 1.524
+ D 118 114 3 119 6 -11.790 -10.488 -0.212 -6.967 -6.985 -3.060
+ IL 119 119 5 119 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 120 120 6 120 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 29 ]
+ MP 121 120 6 125 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -6.448 -6.388 -4.535 -1.927 -4.254 -5.159 3.815 -5.190 -7.971 -1.890 -4.532 -3.550 -0.469 -7.090 -1.599 -5.287
+ ML 122 120 6 125 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 123 120 6 125 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 124 120 6 125 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 125 125 5 125 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 126 126 6 126 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 30 ]
+ MP 127 126 6 131 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.686 -4.844 -4.921 1.370 -3.485 -5.595 2.059 -4.858 -5.163 0.044 -5.240 -1.685 2.801 -4.803 -0.967 -3.528
+ ML 128 126 6 131 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 129 126 6 131 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 130 126 6 131 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 131 131 5 131 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 132 132 6 132 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 31 ]
+ MP 133 132 6 137 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -8.337 -4.279 -8.862 -1.034 -8.309 -4.586 -2.345 -7.492 -5.425 3.866 -4.916 -1.961 -2.261 -4.656 -4.188 -6.333
+ ML 134 132 6 137 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 135 132 6 137 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 136 132 6 137 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 137 137 5 137 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 138 138 6 138 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 32 ]
+ MP 139 138 6 143 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -8.337 -4.279 -8.862 -1.034 -8.309 -4.586 -2.345 -7.492 -5.425 3.866 -4.916 -1.961 -2.261 -4.656 -4.188 -6.333
+ ML 140 138 6 143 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 141 138 6 143 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 142 138 6 143 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 143 143 5 143 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 144 144 6 144 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 33 ]
+ MP 145 144 6 149 4 -8.394 -8.601 -0.019 -7.015 -5.018 -4.289 -5.616 3.470 -5.244 -6.010 -1.008 -4.851 -5.312 -0.630 -5.807 -2.122 1.620 -5.433 -2.489 -4.259
+ ML 146 144 6 149 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 147 144 6 149 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 148 144 6 149 4 -4.568 -4.250 -2.265 -0.520
+ IL 149 149 5 149 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 150 150 6 150 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 34 ]
+ ML 151 150 6 153 3 -9.343 -0.008 -7.997 -2.420 1.672 -3.322 -0.925
+ D 152 150 6 153 3 -6.174 -1.687 -0.566
+ IL 153 153 3 153 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 154 153 3 156 3 -9.343 -0.008 -7.997 -3.221 -3.065 -3.956 1.891
+ D 155 153 3 156 3 -6.174 -1.687 -0.566
+ IL 156 156 3 156 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 157 156 3 159 3 -9.343 -0.008 -7.997 -3.221 -3.065 -3.956 1.891
+ D 158 156 3 159 3 -6.174 -1.687 -0.566
+ IL 159 159 3 159 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 37 ]
+ ML 160 159 3 162 3 -9.343 -0.008 -7.997 -3.417 1.902 -4.334 -3.061
+ D 161 159 3 162 3 -6.174 -1.687 -0.566
+ IL 162 162 3 162 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 163 162 3 165 3 -9.343 -0.008 -7.997 1.931 -4.287 -4.033 -3.748
+ D 164 162 3 165 3 -6.174 -1.687 -0.566
+ IL 165 165 3 165 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 166 165 3 168 3 -9.343 -0.008 -7.997 1.931 -4.287 -4.033 -3.748
+ D 167 165 3 168 3 -6.174 -1.687 -0.566
+ IL 168 168 3 168 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 169 168 3 171 2 * 0.000 1.931 -4.287 -4.033 -3.748
+ D 170 168 3 171 2 * 0.000
+ IL 171 171 3 171 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 41 ]
+ E 172 171 3 -1 0
+ [ BEGR 42 ]
+ S 173 57 1 174 2 -1.570 -0.592
+ IL 174 174 2 174 2 -1.796 -0.490 0.000 0.000 0.000 0.000
+ [ BIF 43 ]
+ B 175 174 2 176 238
+ [ BEGL 44 ]
+ S 176 175 1 177 4 -0.428 -2.028 -7.144 -7.784
+ [ MATP 45 ]
+ MP 177 176 1 181 6 -9.506 -9.445 -0.016 -8.221 -8.501 -8.896 -3.378 -3.853 -3.949 -1.085 -3.040 -4.739 -0.947 -3.991 -3.724 -1.326 2.242 -1.938 -0.186 -3.687 3.004 -3.147
+ ML 178 176 1 181 6 -8.715 -9.061 -0.165 -3.470 -8.911 -6.440 -0.601 -1.220 0.224 0.802
+ MR 179 176 1 181 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 180 176 1 181 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 181 181 5 181 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 182 182 6 182 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 46 ]
+ MP 183 182 6 187 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -5.006 -4.027 -5.698 0.474 -5.411 -5.718 1.714 -5.166 -5.098 2.620 -4.831 1.848 -0.103 -5.083 -1.654 -4.100
+ ML 184 182 6 187 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 185 182 6 187 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 186 182 6 187 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 187 187 5 187 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 188 188 6 188 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 47 ]
+ MP 189 188 6 193 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.129 -3.118 -5.049 2.401 -5.767 -4.881 -0.248 -4.521 -4.243 2.714 -3.965 0.707 -0.244 -4.272 -1.831 -3.461
+ ML 190 188 6 193 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 191 188 6 193 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 192 188 6 193 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 193 193 5 193 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 194 194 6 194 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 48 ]
+ MP 195 194 6 199 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.459 -3.437 -5.332 1.870 -5.553 -5.158 1.466 -4.823 -4.559 2.866 -4.248 -0.902 -0.041 -4.558 -1.641 -3.691
+ ML 196 194 6 199 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 197 194 6 199 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 198 194 6 199 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 199 199 5 199 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 200 200 6 200 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 49 ]
+ MP 201 200 6 205 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.047 -3.129 -4.573 0.668 -4.627 -0.223 -0.692 -4.289 -3.960 3.175 -3.781 1.273 -0.630 -3.664 -2.133 -3.546
+ ML 202 200 6 205 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 203 200 6 205 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 204 200 6 205 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 205 205 5 205 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 206 206 6 206 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 50 ]
+ MP 207 206 6 211 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -3.385 -3.309 -3.584 1.433 -3.005 -3.924 2.424 0.476 -3.626 0.394 -3.728 1.200 0.673 -3.304 -1.080 -2.864
+ ML 208 206 6 211 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 209 206 6 211 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 210 206 6 211 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 211 211 5 211 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 212 212 6 212 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 51 ]
+ MP 213 212 6 217 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -5.355 -5.860 -4.133 -1.809 -3.729 -4.753 3.568 -4.795 -6.453 -1.787 -0.323 -3.587 -0.163 -5.916 0.563 -4.677
+ ML 214 212 6 217 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 215 212 6 217 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 216 212 6 217 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 217 217 5 217 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 218 218 6 218 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 52 ]
+ MP 219 218 6 223 4 -8.394 -8.601 -0.019 -7.015 -5.969 -5.343 -6.148 -0.121 -4.780 -6.742 2.509 -5.715 -6.345 2.277 -6.103 -1.840 0.373 -6.196 1.467 -4.534
+ ML 220 218 6 223 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 221 218 6 223 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 222 218 6 223 4 -4.568 -4.250 -2.265 -0.520
+ IL 223 223 5 223 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 224 224 6 224 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 53 ]
+ ML 225 224 6 227 3 -9.343 -0.125 -3.614 0.068 0.720 -0.274 -1.066
+ D 226 224 6 227 3 -6.174 -1.687 -0.566
+ IL 227 227 3 227 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 54 ]
+ ML 228 227 3 230 3 -9.226 -0.009 -7.880 1.361 -0.244 -2.138 -1.472
+ D 229 227 3 230 3 -7.695 -0.396 -2.087
+ IL 230 230 3 230 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 55 ]
+ ML 231 230 3 233 3 -9.343 -0.314 -2.364 0.230 -0.194 0.317 -0.499
+ D 232 230 3 233 3 -6.174 -1.687 -0.566
+ IL 233 233 3 233 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 56 ]
+ ML 234 233 3 236 2 * 0.000 0.201 -0.454 0.707 -1.034
+ D 235 233 3 236 2 * 0.000
+ IL 236 236 3 236 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 57 ]
+ E 237 236 3 -1 0
+ [ BEGR 58 ]
+ S 238 175 1 239 3 -2.411 -0.695 -2.364
+ IL 239 239 2 239 3 -2.530 -1.886 -0.846 0.000 0.000 0.000 0.000
+ [ MATL 59 ]
+ ML 240 239 2 242 5 -7.718 -0.025 -7.533 -7.746 -8.637 -2.059 -3.381 1.811 -2.687
+ D 241 239 2 242 5 -7.568 -0.954 -6.829 -1.182 -5.117
+ IL 242 242 3 242 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 60 ]
+ MP 243 242 3 247 6 -9.652 -9.591 -0.014 -8.368 -8.648 -9.043 -6.485 -5.009 -6.736 -0.900 -6.567 -7.484 -1.404 -5.770 -5.968 2.262 -5.756 3.258 -1.318 -6.198 -2.674 -5.020
+ ML 244 242 3 247 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 245 242 3 247 6 -8.711 -7.440 -0.330 -7.418 -2.552 -5.632 -1.012 -1.476 -1.795 1.514
+ D 246 242 3 247 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 247 247 5 247 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 248 248 6 248 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 61 ]
+ MP 249 248 6 253 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.858 -5.138 -5.212 -0.346 -3.831 -6.027 2.410 -5.162 -5.329 -0.370 -5.568 -1.988 3.019 -5.141 -1.244 -3.912
+ ML 250 248 6 253 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 251 248 6 253 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 252 248 6 253 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 253 253 5 253 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 254 254 6 254 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 62 ]
+ MP 255 254 6 259 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -4.440 -3.425 -5.282 2.894 -5.833 -5.214 -0.557 -4.619 -4.584 2.597 -4.428 -1.090 -0.557 -4.642 -2.114 -3.724
+ ML 256 254 6 259 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 257 254 6 259 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 258 254 6 259 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 259 259 5 259 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 260 260 6 260 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 63 ]
+ MP 261 260 6 265 6 -9.837 -9.776 -0.013 -8.553 -8.832 -9.227 -8.337 -4.279 -8.862 -1.034 -8.309 -4.586 -2.345 -7.492 -5.425 3.866 -4.916 -1.961 -2.261 -4.656 -4.188 -6.333
+ ML 262 260 6 265 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 263 260 6 265 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 264 260 6 265 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 265 265 5 265 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 266 266 6 266 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 64 ]
+ MP 267 266 6 271 4 -8.394 -8.601 -0.019 -7.015 -8.337 -4.279 -8.862 -1.034 -8.309 -4.586 -2.345 -7.492 -5.425 3.866 -4.916 -1.961 -2.261 -4.656 -4.188 -6.333
+ ML 268 266 6 271 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 269 266 6 271 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 270 266 6 271 4 -4.568 -4.250 -2.265 -0.520
+ IL 271 271 5 271 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 272 272 6 272 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 65 ]
+ ML 273 272 6 275 3 -9.343 -0.008 -7.997 -3.221 -3.065 -3.956 1.891
+ D 274 272 6 275 3 -6.174 -1.687 -0.566
+ IL 275 275 3 275 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 66 ]
+ ML 276 275 3 278 3 -9.343 -0.008 -7.997 -3.221 -3.065 -3.956 1.891
+ D 277 275 3 278 3 -6.174 -1.687 -0.566
+ IL 278 278 3 278 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 67 ]
+ ML 279 278 3 281 3 -9.343 -0.008 -7.997 -3.417 1.902 -4.334 -3.061
+ D 280 278 3 281 3 -6.174 -1.687 -0.566
+ IL 281 281 3 281 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 68 ]
+ ML 282 281 3 284 3 -9.343 -0.008 -7.997 -0.885 -3.485 1.688 -2.763
+ D 283 281 3 284 3 -6.174 -1.687 -0.566
+ IL 284 284 3 284 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 69 ]
+ ML 285 284 3 287 3 -9.343 -0.008 -7.997 1.931 -4.287 -4.033 -3.748
+ D 286 284 3 287 3 -6.174 -1.687 -0.566
+ IL 287 287 3 287 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 70 ]
+ ML 288 287 3 290 3 -9.343 -0.008 -7.997 -2.133 1.571 -3.010 -0.565
+ D 289 287 3 290 3 -6.174 -1.687 -0.566
+ IL 290 290 3 290 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 291 290 3 293 2 * 0.000 -3.221 -3.065 -3.956 1.891
+ D 292 290 3 293 2 * 0.000
+ IL 293 293 3 293 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 72 ]
+ E 294 293 3 -1 0
+//
diff --git a/README b/README
new file mode 100644
index 0000000..866d28b
--- /dev/null
+++ b/README
@@ -0,0 +1,102 @@
+-------------------------------------------------------------
+tRNAscan-SE: An improved tool for transfer RNA detection
+
+Patricia Chan and Todd Lowe
+
+School of Engineering, University of California, Santa Cruz, CA
+--------------------------------------------------------------
+Current release: 1.3.1 (January 2012)
+
+tRNAscan-SE was written in the PERL (version 5.0) script language.
+Input consists of DNA or RNA sequences in FASTA format. tRNA
+predictions are output in standard tabular or ACeDB format.
+tRNAscan-SE does no tRNA detection itself, but instead combines the
+strengths of three independent tRNA prediction programs by negotiating
+the flow of information between them, performing a limited amount of
+post-processing, and outputting the results in one of several
+formats.
+
+tRNAscan-SE combines the specificity of the Cove/Infernal probabilistic
+RNA prediction package (1-2) with the speed and sensitivity of tRNAscan 1.3
+(3) plus an implementation of an algorithm described by Pavesi and
+colleagues (4), which searches for eukaryotic pol III tRNA promoters
+(our implementation referred to as EufindtRNA). tRNAscan and
+EufindtRNA are used as first-pass prefilters to identify "candidate"
+tRNA regions of the sequence. These subsequences are then passed to
+Cove for further analysis, and output if Cove confirms the initial
+tRNA prediction. In this way, tRNAscan-SE attains the best of both
+worlds: (1) a false positive rate equally low to using Cove analysis,
+(2) the combined sensitivities of tRNAscan and EufindtRNA (detection
+of 98-99% of true tRNAs), and (3) search speed 1,000 to 3,000 times
+faster than Cove analysis and 30 to 90 times faster than the original
+tRNAscan 1.3 (tRNAscan-SE uses both a code-optimized version of
+tRNAscan 1.3 which gives a 300-fold increase in speed, and a fast C
+implementation of the Pavesi et al. algorithm).
+
+This distribution includes the PERL script tRNAscan-SE, all the files
+necessary to compile and run the complete COVE package (version
+2.4.4), all the files necessary to compile and run the modified
+version of tRNAscan (version 1.4), and all the files needed to compile
+and run eufindtRNA 1.0 (the cove programs, tRNAscan 1.4, and
+eufindtRNA are included for use with the tRNAscan-SE program, but may
+also be run as stand-alone programs). Installation of the PERL
+(Practical Extraction and Report Language, Larry Wall) interpreter
+package version 5.0 or later is required to run the tRNAscan-SE PERL
+script. An newer implementation of covariance model searches, Infernal, may
+be used in place of Cove which allows for faster searches and new, specialized
+search options. To use Infernal as the second-pass scanner or to include
+prediction of noncanonical introns and split fragments in archaeal tRNA
+genes, Infernal 1.0 must be pre-installed. Previous versions of Infernal
+will not work with the covariance models provided with tRNAscan-SE.
+The Infernal source package can be downloaded at http://infernal.janelia.org/.
+
+For more detailed information, please read the following files:
+
+ MANUAL -- decription of program, run options & demo examples
+ (text)
+ Manual.ps -- decription of program, run options & demo examples
+ (postscript format)
+ INSTALL -- instructions for installing the programs
+ COPYING -- copyright notice, and information on distribution policy
+ FILES -- overview of what the source files are
+ GNULICENSE -- Gnu Public License, version 2 (see COPYING)
+
+
+You can obtain a copy of this software from
+http://lowelab.ucsc.edu/software/tRNAscan-SE.tar.gz
+or
+ftp://selab.janelia.org/pub/software/tRNAscan-SE.tar.Z
+
+If you use this software, please cite the Nucleic Acids Research paper
+describing the program & its analysis of several genomes (4).
+
+If you have any questions, bug reports, or suggestions, please e-mail
+
+ Todd Lowe
+ lowe at soe.ucsc.edu
+
+ Department of Biomolecular Engineering
+ University of California
+ 1156 High Street
+ Santa Cruz, ZA 95064
+
+
+References
+
+1. Eddy, S.R. and Durbin, R. (1994) "RNA sequence analysis using
+ covariance models", Nucl. Acids Res., 22, 2079-2088.
+
+2. Nawrocki, E.P., Kolbe, D.L. & Eddy, S.R. (2010) "Infernal 1.0:
+ Inference of RNA Alignments", Bioinformatics, 25, 1335-1337.
+
+3. Fichant, G.A. and Burks, C. (1991) "Identifying potential tRNA
+ genes in genomic DNA sequences", J. Mol. Biol., 220, 659-671.
+
+4. Pavesi, A., Conterio, F., Bolchi, A., Dieci, G., Ottonello,
+ S. (1994) "Identification of new eukaryotic tRNA genes in genomic DNA
+ databases by a multistep weight matrix analysis of transcriptional
+ control regions", Nucl. Acids Res., 22, 1247-1256.
+
+5. Lowe, T.M. & Eddy, S.R. (1997) "tRNAscan-SE: A program
+ for improved detection of transfer RNA genes in genomic
+ sequence", Nucl. Acids Res., 25, 955-964.
diff --git a/Release.history b/Release.history
new file mode 100644
index 0000000..9131825
--- /dev/null
+++ b/Release.history
@@ -0,0 +1,405 @@
+
+tRNAscan-SE - Release history
+=============================
+
+Version 0.90 (March 6, 1996)
+------------
+Initial beta release
+
+
+Version 0.91 (March 12, 1996)
+------------
+-MAJOR BUG: covels & coves executables not called correctly from
+program, will result in detection of NO tRNAs in default mode!
+-added better checking for all required executables before starting
+analysis
+-added "#include <stdlib.h>" to trnascan.c, DEC Alpha's were
+complaining with use of unprototyped 'calloc' call
+-added 'make testrun' option to Makefile to allow user
+to check to see if tRNAscan-SE is running properly
+
+
+Version 0.91a (March 13, 1996)
+-------------
+-two minor updates of Sean's old sqio library for SunOS 4.1
+compatibility:
+ - fflush(NULL) fails in SunOS; replace with fflush(stderr)
+ - SEEK_SET is in unistd.h in SunOS
+
+
+Version 0.92 (March 14, 1996)
+------------
+-updated all sqio source files to squid-1.5g to avoid any other
+problems already fixed by Sean in current sqio release
+-updated Cove source files to work with updated verison of squid, new
+version of Cove is "2.4.2a"
+-added $PERLBIN variable in Makefile to allow installation on systems
+that don't call perl v.5 binary 'perl' (i.e. 'perl5' instead)
+-included source for 'reformat' and 'getseq' programs from Sean's sqio
+function library; not built automatically, but available for users who
+want to compile and use them
+-with new sqio version, don't need to specify any MDEFS in Makefile
+(ie. -DNORANDOM or -DGETOPTH) unless problems with compilation
+
+Version 0.92a (March 18, 1996)
+-------------
+-fixed SEEK_SET problem in interleaved.c by adding #include <unistd.h>
+(interleaved.c was a recent addition to squid library), needed for
+SunOS 4.x compilation
+
+Version 0.92b (April 4, 1996)
+-------------
+-added -X option to allow specification of Cove cutoff score for
+reporting tRNAs
+-fixed -u (use previous results file) option to allow using a regular
+tabular output file; this allows easy generation of ACeDB or secondary
+structure output files without having to re-run on entire sequence(s)
+-changed the default name for the secondary structure file from
+".allstruct" to ".ss" for simplicity
+
+Version 0.92c (April 10, 1996)
+-------------
+-at Christoph's suggestion, added more info to structure output file
+(-f option) to display relative & absolute location of anticodon
+-also, slightly changed rest of output format, the following is an
+example of the new format:
+
+CELF22B7.trna3 (26367-26439) Length: 73 bp
+Type: Phe Anticodon: GAA at 34-36 (26400-26402) Score: 73.88
+ * | * | * | * | * | * | * |
+Seq: GCCTCGATAGCTCAGTTGGGAGAGCGTACGACTGAAGATCGTAAGGtCACCAGTTCGATCCTGGTTCGGGGCA
+Str: >>>>>>>..>>>>........<<<<.>>>>>.......<<<<<.....>>>>>.......<<<<<<<<<<<<.
+
+Version 0.93 (April 22, 1996)
+-------------
+-not released
+-Major changes, added my own C implementation of an algorithm that uses
+multistep weight matrix analysis detailed by Pavesi et al. (NAR 22:
+1247-1256, 1994), dubbed eufindtRNA since it searches for eukaryotic
+transcription signals
+
+-new "default" run mode for tRNAscan-SE uses tRNAscan 1.3 "strict"
+params, with eufindtRNA in "relaxed" mode
+-results in a 40-80 fold speed increase with BETTER sensitivity and
+equal selectivity as the previous default mode
+
+-many internal labels changed to reflect that two programs (eufindtRNA
+and tRNAscan) are being used as fast first-pass scanners
+
+Minor changes:
+-removed -r option (save raw tRNAscan output) since I've never used it
+and it was cluttering code
+-added -y option (show source of first-pass hit, "Eu" = eufindtRNA,
+"Ts" = tRNAscan, "Bo" = both) - prints after "Score" column in tabular
+output
+-added -F option to save false-positives produced by first-pass
+scanners that were later negg'ed by Cove; only for use in studying
+behavior of program, not of use to general users
+-added message "No tRNAs found." that prints to standard error if no
+tRNAs are found in sequence(s)
+-restructured -T, -C options to work with new option -E (use
+eufindtRNA)
+
+Version 0.93a (May 31, 1996)
+-------------
+-released to Kym at GSC
+-changed ACeDB output format, an example follows:
+
+Sequence F02D10
+Subsequence F02D10.t3 188 70
+
+Sequence F02D10.t3
+Source F02D10
+Source_Exons 1 38
+Source_Exons 74 119
+Brief_identification tRNA-Leu
+Transcript tRNA "CAA Leu L"
+Score tRNAscan-SE-0.93 57.23
+
+-new Ace format adopted by Cambridge and GSC
+
+-extended max length of tRNA to 200bp (roughly 125bp max intron
+length)
+-restructured available options printout
+
+-alterted EufindtRNA to find a prokaryotic selcys (already finds
+eukaryotic selcys tRNAs) based on a consensus sequence
+
+-added PSELC.cm and ESELC.cm covariance models (prokaryotic &
+eukaryotic selcys, respect.) to help Cove detect selenocysteine tRNAs
+and give correct secondary structures
+
+-changed -t option (save firstpass results) to -r option
+-new -t option used to set tRNAscan parameters (R=relaxed, S=strict)
+
+-added -P option, prokaryotic scan mode (loosens EufindtRNA params for
+finding prokaryotic tRNAs)
+
+-by default, now adds 7bp to both 5' and 3' ends of tRNA hits from
+firstpass scan -- gives Cove a better chance to define entire tRNA in
+case first-pass scanners slightly truncate
+-added -B option, allows adjusting # bp to pad first-pass hits; can
+use a value of zero to turn off bounds padding
+
+
+Version 0.94 (June 8, 1996)
+------------
+-tightened up error checking for correct exiting of called programs
+-now handles sequence sets with duplicate names correctly
+
+Version 0.95 (June 27, 1996)
+------------
+-announced to Sanger, GSC, LBL (Nomi), Christoph
+-updated all documentation reflecting incorporation of EufindtRNA
+into tRNAscan-SE
+
+
+Version 0.96 (September 1996)
+------------
+-fixed minor bug causing incorrect intron bounds printed when using
+tRNAscan alone (-T option)
+-fixed minor bug causing infinite loop if identical sequence names are
+used several times in the same input FASTA file
+-fixed intron prediction so only non-cannonical nucleotides appearing
+_within_ anticodon loop are predicted as an intron (before, anything
+including anticodon loop _and_ after was being called as an intron
+
+-put in filter to detect tRNA-derived repetitive element pseudogenes
+(rat ID seqs, rodent B2 elements, type II mammalian ALU seqs) from
+real tRNAs
+-new filter: for tRNAs with <40 bit scores, if
+ 1) contribution to score from secondary structure < 5 bits, or
+ 2) contribution to score from primary (HMM-type) pattern < 10 bits
+
+-this filter effectively eliminates all but one Genbank seq (a rat ID
+seq, RATRSIDH) and three putative rat ID seqs found in dbEST
+(R46943,R47014,R82886)
+
+-added option requested by GSC, -N outputs codons instead of
+anticodons with all tRNA identification output
+
+-slightly modified -F (save false positives) option to output entire
+false positive sequence, not just subsequence with score between 0 &
+20 bits
+
+Version 0.96a (October 10, 1996)
+--------------------------------
+-added option (-Z) to run in Cove-only mode on Maspar; uses special
+routine that runs covels on entire sequence set, then parses out tRNA
+info
+
+Version 1.0 (December 6, 1996)
+-------------------------------
+-first general release, all features as described in paper just
+submitted to Nucleic Acids Research (11/27/96)
+
+-updated to Cove source code to 2.4.4 (from 2.4.2a)
+
+-changed the way eufindtRNA handles ambiguous bases,
+now is consistent
+-used to randomly choose a base among ambig choices, but not
+giving consistent results (no surprise) for Sprinzl search
+-so, all non-ACGT bases now are counted as a single type
+of ambiguous base, and that base always has the best value of
+any of the four ACGT values for that position in the A box
+and B box score matrices
+-may slightly increase false positive rate, but not a concern for
+use with tRNAscan-SE
+
+-added option (-L) allows checking for very long tRNAs (>192bp)
+that contain group I, group II, or other long intervening seqs
+
+-modified pseudogene filter, changed requirement that pseudogene must
+have a total score "less than 40 bits" TO "less than 55 bits"
+(catches more potential pseudogenes)
+
+
+Version 1.01 (February 5, 1997)
+-------------------------------
+-updated reference to paper (just accepted to Nucl. Acids Research)
+-slightly simplified stats file output to make less confusing
+-no functional changes to program
+
+Version 1.02 (February 18, 1997)
+-------------------------------
+-added -G option, search for orGanellar tRNAs (mito/chloro)
+-updated program manual & man page documentation
+
+Version 1.1 (June 9, 1997) - not released
+--------------------------
+-option -G (organellar tRNA search mode) changed to option -O
+(easier mnemonic)
+
+-split original tRNA covariance model (CM) into three different
+models, one for each domain ("TRNA2-euk.cm" for eukyarotes,
+"TRNA2-prok.cm" for prokaryotes, "TRNA2-arch.cm" for archaea)
+
+
+-now, by default, eukaryotic-specific CM used
+ -P uses prokaryotic specific covariance model
+ -A uses archaeal model
+ -G uses original TRNA2.cm general model (tRNAs from all domains)
+
+
+-re-organized options in help message (-h option) & updated user
+manual
+
+-updated credits to reflect publication of tRNAscan-SE paper
+in Nucleic Acids Research 25: 955-964 (1997)
+
+
+Version 1.11 (November 5, 1997)
+-------------------------------
+
+-fixed minor bug that causes division by zero crash when -n or -s
+options are used and no sequences are found matching these patterns
+
+Version 1.12 (February 19, 1999)
+--------------------------------
+-minor fix: when -O (organellar search mode) selected, "Eukaryotic" was
+displayed -- changed so it now says "Organellar"
+
+-minor fix: when both -H (show HMM/2'struct score breakdown) and -D
+(disable pseudogene checking) options selected, it _was_ enabling
+pseudogene checking; now both work together as expected
+
+Version 1.13 (May 16, 2000)
+---------------------------
+-minor option added: -i will use versions of pre-scanners (tRNAscan-1.4
+and EufindtRNA) that have been compiled to not optimisitically call
+ambiguous nucleotides. For unfinished sequeneces with many 'N's, this
+greatly speeds scanning since many fewer false positives are passed on to
+Cove. Must run "make noambig" to produce these binaries
+
+Version 1.20 (September 14, 2000)
+---------------------------------
+
+-MAJOR upgrade feature: The program no longer attempts to read in an
+entire sequence into memory at a time. When scanning the human genome
+full chromosome sequences, it was taking >1GB of memory. Now, the
+program only reads sequences in 1 Mbp chunks, and processes them
+identically otherwise. The maximum memory now required to search
+sequences of any length should be < 15 MB.
+
+-Fixed minor bug in eufindtRNA (new version 1.1) that caused second of
+two consecutive tRNAs (within 40bp) to be missed if the second tRNA
+scored lower than the first. Very few tRNAs are detected by
+eufindtRNA and not tRNAscan 1.4, so this bug probably affected only a
+couple tRNA detections for all completed genomes
+
+-The default Max tRNA length has been upped from 200 to 500 bp when
+using prescanners, and from 150 to 250 when using Cove only. Also,
+the default max intron length for eufindtRNA was upped from 116 to
+200. These increases will slow the program by about 30%, but will
+help identify archaeal and bacterial tRNAs with introns of length 200
+or less that were just barely being missed by the previous defaults.
+Scan time is very short for tRNAscan-SE, so a slight increase was
+deemed acceptable. To reverse these changes in the defaults, use
+the parameter setting "-L=116".
+
+-Fixed a minor bug when using the -L parameter that caused loss of
+tRNA detection when both pre-scanners were in use, and identified
+the same tRNA with differing A and B boxes.
+
+-Eliminated old code for running on Maspar machines (unused for
+development since 1997)
+
+-Added more complete summary statistics to .stats files. They now
+give breakdowns by isotype & anticodon, with counts for
+intron-containing tRNAs, pseudogenes, selenocysteine, and other
+non-standard tRNAs.
+
+-Slightly reformated output file (*.out) columns so that for
+large sequences, tab columns do not go out of alignment. This
+slightly changes the white spaceing among column headers.
+
+
+Version 1.21 (October 5, 2000)
+------------------------------
+-Added automatic option that removes runs of 10 N's or
+more from consideraton by pre-scanners; better solution
+thann -i option which disqualifies tRNAs with any N's
+at all. Also better since this can be default behavior,
+users don't "need to know" about using the -i option,
+whether they have many N's or not.
+
+-Removed -i option (see above change)
+
+-fixed bug in use of "-O" (organellar scan mode) option
+Should work correctly now. (Fixed bug: thought -O should
+take a parameter, so the next parameter on the line was
+sucked up, causing unintended run specifications)
+
+-Changed "Prokaryotic mode" to "Bacterial Mode", which is
+more accurate (archaeal sequences were _not_ used to train
+the old prokaryotic model). No functional changes to any
+of the models or run parameters.
+
+-Added "-B" option for Bacterial scan mode. Same as old
+"-P" option, but better named now. "-P" still works
+same as before to prevent breaking of programs that
+use tRNAscan-SE (i.e. -B equals -P)
+
+-Switched old "-B" option (nucleotides of padding from
+pre-scanner hits to Cove scans) to "-z". Same function.
+I doubt if more than 1 other person in the world uses
+this option for tweaking the program, so I'm not worried
+about breaking other people's pipeline analysis scripts.
+
+-When using the general tRNA covariance model (-G option),
+it now says: "General".
+
+Version 1.22 (Not released)
+---------------------------
+-minor: Added tRNAscan-SE version number to .stats file output
+
+Version 1.23 (Fixed April 24, 2001, not released until April 2002)
+------------
+-minor: Was not handling 'X' characters gracefully in input
+sequences. Even though not IUPAC, the program now replaces
+X's with N's so it doesn't throw errors.
+
+
+Version 1.3 (March 2011)
+------------
+-Removed option "P" (prokaryotic scan mode) which was already depricated;
+Use -B (bacterial) or -A (archaeal) scan modes instead
+
+-Added long option names for all supported options
+
+-Added "--newscan" option for using Infernal 1.0 instead of
+COVE as second-pass scanner
+
+-Added "-i" or "--infernal" option for using Infernal 1.0 only search mode
+
+-Added "--ncintron" option to search for noncanonical introns. This option
+is only available for Archaeal scan mode.
+
+-Added "--frag <file>" option to search for tRNA gene fragments that may
+form split tRNAs. Results are saved as tab-delimited output file
+specified with option. This option is only available for Archaeal scan mode.
+
+-Added output support of multiple introns in an archaeal tRNA gene. Start and
+end positions of the introns are delimited by comma in the corresponding fields
+in the output file. Start and end positions of all the introns are also listed
+in the tRNA secondary structure output file.
+
+-Added "PRE" output line in tRNA secondary structure output file for those
+archaeal tRNA genes that are predicted to have noncanonical introns. Regions
+enclosed in [] are predicted intron sequences.
+
+-Added an extra column at the end of output file for Archaeal scan mode to
+display the number of predicted canonical (CI) and noncanonical (NCI) introns
+for each predicted tRNA gene.
+
+-Methods in this version of tRNAscan-SE have been rearranged into multiple
+Perl modules under package tRNAscanSE. The file path has to be added in
+PERL5LIB environment variable for execution. Corresponding changes in the
+Makefile have been included.
+
+Version 1.3.1 (January 2012)
+------------
+-Change getline() to GetLine() in sqio.c to eliminate error when compiling
+with gcc v4.2 or above
+
+-Fix most of the warnings when compiling in 64-bit environment
diff --git a/TPCsignal b/TPCsignal
new file mode 100644
index 0000000..4a28d41
--- /dev/null
+++ b/TPCsignal
@@ -0,0 +1,15 @@
+0.0124 0.8100 0.0083 0.1694
+0.1618 0.3320 0.4772 0.0290
+0.0992 0.4008 0.2934 0.2066
+0.1818 0.1818 0.5083 0.1281
+0.1612 0.0289 0.7768 0.0331
+0.0000 0.0000 1.0000 0.0000
+0.0581 0.0000 0.0000 0.9419
+0.0000 0.0000 0.0000 1.0000
+0.0000 1.0000 0.0000 0.0000
+0.1818 0.0000 0.8182 0.0000
+0.9876 0.0000 0.0083 0.0041
+0.4959 0.0620 0.1694 0.2727
+0.0620 0.1859 0.0083 0.7438
+0.0000 1.0000 0.0000 0.0000
+0.0289 0.7686 0.0330 0.1694
diff --git a/TRNA2-arch.cm b/TRNA2-arch.cm
new file mode 100644
index 0000000..bcb366a
--- /dev/null
+++ b/TRNA2-arch.cm
@@ -0,0 +1,1202 @@
+### cove V2
+75 nodes
+### node 0 type 6
+1 -1
+0.80303 0.00000 0.00000 0.13636 0.04545 0.01515
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.16667 0.16667
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.16667 0.16667 0.50000 0.16667 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 3
+2 -1
+0.96429 0.00000 0.00000 0.01786 0.00000 0.01786
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.00000 0.83333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.76923 0.07692 0.07692 0.07692 # MATR
+### node 2 type 3
+3 -1
+0.94643 0.00000 0.00000 0.03571 0.00000 0.01786
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.00000 0.83333 0.00000 0.08333
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.07692 0.76923 0.07692 0.07692 # MATR
+### node 3 type 3
+4 -1
+0.01818 0.00000 0.00000 0.96364 0.00000 0.01818
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.07692 0.00000 0.00000 0.84615 0.00000 0.07692
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.07143 0.71429 0.07143 0.14286 # MATR
+### node 4 type 3
+5 -1
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01493 0.94030 0.01493 0.01493 0.00000 0.01493
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.63636 0.04545 0.21212 0.10606 # MATR
+### node 5 type 1
+6 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.05128 # MATP
+0.01282 0.01282 0.03846 0.01282 # MATP
+0.01282 0.74359 0.01282 0.01282 # MATP
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 6 type 1
+7 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.01282 0.01282 0.39744 0.01282 # MATP
+0.01282 0.39744 0.01282 0.01282 # MATP
+0.03846 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 7 type 1
+8 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.05128 # MATP
+0.01282 0.01282 0.33333 0.01282 # MATP
+0.01282 0.25641 0.01282 0.17949 # MATP
+0.03846 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 8 type 1
+9 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.05128 # MATP
+0.01282 0.01282 0.41026 0.01282 # MATP
+0.01282 0.29487 0.01282 0.02564 # MATP
+0.06410 0.01282 0.02564 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 9 type 1
+10 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.06410 # MATP
+0.01282 0.01282 0.48718 0.01282 # MATP
+0.01282 0.16667 0.01282 0.01282 # MATP
+0.08974 0.01282 0.05128 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 10 type 1
+11 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.05128 # MATP
+0.01282 0.01282 0.32051 0.01282 # MATP
+0.01282 0.38462 0.01282 0.01282 # MATP
+0.05128 0.01282 0.05128 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 11 type 1
+12 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.01515 0.00000 0.95455 0.00000 0.01515 0.01515
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.14103 # MATP
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.01282 0.61538 0.01282 0.05128 # MATP
+0.03846 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 12 type 2
+13 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03077 0.00000 0.95385 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.03030 0.01515 0.93939 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 2
+14 -1
+0.66667 0.00000 0.00000 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.96825 0.00000 0.00000 0.00000 0.03175 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.66667 0.00000 0.00000 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.52308 0.06154 0.38462 0.03077 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 14 type 0
+15 28
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 15 type 4
+16 -1
+0.01515 0.95455 0.01515 0.01515 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 16 type 1
+17 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.01282 0.01282 0.07692 0.01282 # MATP
+0.01282 0.53846 0.01282 0.21795 # MATP
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 17 type 1
+18 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.01282 0.01282 0.50000 0.01282 # MATP
+0.01282 0.10256 0.01282 0.01282 # MATP
+0.23077 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 18 type 1
+19 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.03846 0.01282 0.01282 # MATP
+0.01282 0.01282 0.28205 0.01282 # MATP
+0.01282 0.15385 0.01282 0.02564 # MATP
+0.35897 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 19 type 1
+20 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.01515 0.00000 0.95455 0.00000 0.01515 0.01515
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02564 0.02564 0.01282 0.03846 # MATP
+0.01282 0.02564 0.30769 0.01282 # MATP
+0.11538 0.01282 0.01282 0.01282 # MATP
+0.02564 0.02564 0.16667 0.16667 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 20 type 2
+21 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.95455 0.01515 0.01515 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.95455 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.18462 0.00000 0.80000 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07576 0.54545 0.03030 0.34848 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.07143 0.00000 0.85714 0.00000 0.07143 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01852 0.00000 0.16667 0.00000 0.81481 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02174 0.00000 0.95652 0.00000 0.02174 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.17021 0.23404 0.02128 0.57447 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07273 0.67273 0.01818 0.23636 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+25 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.95455 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 2
+26 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.95455 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.50769 0.00000 0.47692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01961 0.00000 0.60784 0.00000 0.37255 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.46154 0.01923 0.26923 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.12121 0.25758 0.13636 0.48485 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.98438 0.00000 0.00000 0.00000 0.01562 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.92424 0.01515 0.04545 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 5
+29 -1
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 2
+30 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.98438 0.00000 0.00000 0.00000 0.01562 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10606 0.03030 0.77273 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 30 type 0
+31 44
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 31 type 4
+32 -1
+0.01515 0.95455 0.01515 0.01515 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 32 type 1
+33 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.08974 # MATP
+0.01282 0.01282 0.52564 0.01282 # MATP
+0.01282 0.07692 0.01282 0.01282 # MATP
+0.08974 0.01282 0.07692 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 33 type 1
+34 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.12821 # MATP
+0.01282 0.01282 0.44872 0.01282 # MATP
+0.01282 0.07692 0.01282 0.05128 # MATP
+0.14103 0.01282 0.02564 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 34 type 1
+35 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.05128 # MATP
+0.01282 0.01282 0.12821 0.01282 # MATP
+0.01282 0.52564 0.01282 0.01282 # MATP
+0.14103 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 35 type 1
+36 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.01282 0.01282 0.17949 0.01282 # MATP
+0.01282 0.62821 0.01282 0.02564 # MATP
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 36 type 1
+37 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.01515 0.00000 0.95455 0.00000 0.01515 0.01515
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.24359 # MATP
+0.01282 0.01282 0.33333 0.01282 # MATP
+0.01282 0.23077 0.01282 0.02564 # MATP
+0.02564 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.75758 0.01515 0.21212 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.01515 0.95455 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.28788 0.27273 0.42424 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+41 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.27273 0.15152 0.31818 0.25758 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 2
+42 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.34848 0.18182 0.30303 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.87692 0.00000 0.10769 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00877 0.00000 0.06140 0.00000 0.92982 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.26957 0.19130 0.29565 0.24348 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.54545 0.01515 0.42424 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.98438 0.00000 0.00000 0.00000 0.01562 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.80303 0.13636 0.03030 0.03030 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 5
+45 -1
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 2
+46 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.15385 0.00000 0.83077 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.39394 0.18182 0.06061 0.36364 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 2
+47 -1
+0.90909 0.00000 0.00000 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.98182 0.00000 0.00000 0.00000 0.01818 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10526 0.07018 0.70175 0.12281 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 47 type 0
+48 60
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 48 type 4
+49 -1
+0.81818 0.15152 0.01515 0.01515 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 49 type 1
+50 -1
+0.91525 0.01695 0.01695 0.01695 0.01695 0.01695
+0.06667 0.66667 0.06667 0.06667 0.06667 0.06667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04000 0.04000 0.04000 0.04000 # MATP
+0.04000 0.04000 0.12000 0.04000 # MATP
+0.04000 0.28000 0.04000 0.08000 # MATP
+0.04000 0.04000 0.04000 0.04000 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 50 type 1
+51 -1
+0.91525 0.01695 0.01695 0.01695 0.01695 0.01695
+0.06667 0.66667 0.06667 0.06667 0.06667 0.06667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04000 0.04000 0.04000 0.08000 # MATP
+0.04000 0.04000 0.16000 0.04000 # MATP
+0.04000 0.24000 0.04000 0.04000 # MATP
+0.04000 0.04000 0.04000 0.04000 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 51 type 1
+52 -1
+0.91525 0.01695 0.01695 0.01695 0.01695 0.01695
+0.53333 0.20000 0.06667 0.06667 0.06667 0.06667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04000 0.04000 0.04000 0.08000 # MATP
+0.04000 0.04000 0.28000 0.04000 # MATP
+0.04000 0.04000 0.04000 0.04000 # MATP
+0.08000 0.04000 0.08000 0.04000 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 52 type 1
+53 -1
+0.92424 0.01515 0.01515 0.01515 0.01515 0.01515
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.05556 0.05556 0.05556 0.05556 # MATP
+0.05556 0.05556 0.11111 0.05556 # MATP
+0.05556 0.05556 0.05556 0.05556 # MATP
+0.11111 0.05556 0.05556 0.05556 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 53 type 1
+54 -1
+0.92424 0.01515 0.01515 0.01515 0.01515 0.01515
+0.37500 0.12500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.05556 0.05556 0.05556 0.05556 # MATP
+0.05556 0.05556 0.16667 0.05556 # MATP
+0.05556 0.05556 0.05556 0.05556 # MATP
+0.05556 0.05556 0.05556 0.05556 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 54 type 1
+55 -1
+0.92647 0.01471 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.06250 0.06250 0.06250 0.06250 # MATP
+0.06250 0.06250 0.06250 0.06250 # MATP
+0.06250 0.06250 0.06250 0.06250 # MATP
+0.06250 0.06250 0.06250 0.06250 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 55 type 1
+56 -1
+0.81818 0.00000 0.10606 0.00000 0.01515 0.06061
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.16667 0.00000 0.66667 0.00000 0.00000 0.16667
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.42857 0.14286 0.28571 0.14286 # INSR
+0.06250 0.06250 0.06250 0.06250 # MATP
+0.06250 0.06250 0.06250 0.06250 # MATP
+0.06250 0.06250 0.06250 0.06250 # MATP
+0.06250 0.06250 0.06250 0.06250 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 56 type 2
+57 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.07692 0.69231 0.15385 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 2
+58 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.15385 0.07692 0.69231 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.00000 0.75000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.53846 0.15385 0.07692 0.23077 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+-1 -1
+0.98214 0.00000 0.00000 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.90000 0.00000 0.00000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25000 0.16667 0.50000 0.08333 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 5
+61 -1
+0.03077 0.00000 0.95385 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 61 type 2
+62 -1
+0.25000 0.00000 0.25000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01562 0.00000 0.25000 0.00000 0.73438 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01961 0.00000 0.94118 0.00000 0.03922 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03846 0.28846 0.07692 0.59615 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36923 0.03077 0.47692 0.12308 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 62 type 2
+63 -1
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01493 0.94030 0.01493 0.01493 0.01493 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.95455 0.01515 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 63 type 1
+64 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.06410 # MATP
+0.01282 0.01282 0.32051 0.01282 # MATP
+0.01282 0.30769 0.01282 0.06410 # MATP
+0.03846 0.01282 0.07692 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 64 type 1
+65 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.07692 # MATP
+0.01282 0.01282 0.46154 0.01282 # MATP
+0.01282 0.11538 0.01282 0.05128 # MATP
+0.14103 0.01282 0.02564 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 65 type 1
+66 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.05128 # MATP
+0.01282 0.01282 0.10256 0.01282 # MATP
+0.01282 0.64103 0.01282 0.01282 # MATP
+0.02564 0.01282 0.03846 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 66 type 1
+67 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.01471 0.92647 0.01471 0.01471 0.01471 0.01471
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.03846 # MATP
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.01282 0.76923 0.01282 0.01282 # MATP
+0.02564 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 67 type 1
+68 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.01515 0.00000 0.95455 0.00000 0.01515 0.01515
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.01282 0.80769 0.01282 0.01282 # MATP
+0.01282 0.01282 0.01282 0.01282 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 68 type 2
+69 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.01515 0.95455 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.03030 0.01515 0.93939 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.93939 0.03030 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+72 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.59091 0.01515 0.37879 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 72 type 2
+73 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.95455 0.01515 0.01515 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 73 type 2
+74 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.84848 0.01515 0.09091 0.04545 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 74 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.98438 0.00000 0.00000 0.00000 0.01562 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.06061 0.01515 0.90909 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/TRNA2-archns.cm b/TRNA2-archns.cm
new file mode 100644
index 0000000..6e0c8cb
--- /dev/null
+++ b/TRNA2-archns.cm
@@ -0,0 +1,1506 @@
+### cove V2
+94 nodes
+### node 0 type 6
+1 -1
+0.01515 0.00000 0.92424 0.00000 0.04545 0.01515
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.00000 0.50000 0.00000 0.16667 0.16667
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.16667 0.16667 0.50000 0.16667 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 2
+2 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06061 0.04545 0.87879 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 2 type 2
+3 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.46970 0.46970 0.04545 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 3 type 2
+4 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06061 0.39394 0.50000 0.04545 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 4 type 2
+5 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06061 0.48485 0.36364 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 5 type 2
+6 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07576 0.57576 0.19697 0.15152 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 6 type 2
+7 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06061 0.37879 0.45455 0.10606 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 7 type 2
+8 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.01515 0.77273 0.04545 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 8 type 2
+9 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03077 0.00000 0.95385 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.03030 0.01515 0.93939 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 9 type 2
+10 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01562 0.00000 0.95312 0.00000 0.03125 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.52308 0.06154 0.38462 0.03077 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 2
+11 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.09091 0.87879 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 2
+12 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.59091 0.12121 0.27273 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 2
+13 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.33333 0.19697 0.42424 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 2
+14 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07576 0.37879 0.13636 0.40909 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 14 type 2
+15 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.95455 0.01515 0.01515 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 15 type 2
+16 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.95455 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 16 type 2
+17 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.18462 0.00000 0.80000 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07576 0.54545 0.03030 0.34848 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 17 type 2
+18 -1
+0.07143 0.00000 0.85714 0.00000 0.07143 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01852 0.00000 0.16667 0.00000 0.81481 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02174 0.00000 0.95652 0.00000 0.02174 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.17021 0.23404 0.02128 0.57447 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07273 0.67273 0.01818 0.23636 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 18 type 2
+19 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.95455 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 19 type 2
+20 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.95455 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.50769 0.00000 0.47692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01961 0.00000 0.60784 0.00000 0.37255 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.46154 0.01923 0.26923 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.12121 0.25758 0.13636 0.48485 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.92424 0.01515 0.04545 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.06061 0.54545 0.22727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.42424 0.21212 0.33333 0.03030 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+25 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.27273 0.12121 0.59091 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 2
+26 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.63636 0.09091 0.25758 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10606 0.03030 0.77273 0.09091 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 2
+28 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10606 0.62121 0.09091 0.18182 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 2
+29 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15152 0.53030 0.13636 0.18182 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 2
+30 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06061 0.15152 0.62121 0.16667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 30 type 2
+31 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.21212 0.75758 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 31 type 2
+32 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.28788 0.39394 0.28788 0.03030 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 32 type 2
+33 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.75758 0.01515 0.21212 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 33 type 2
+34 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.01515 0.95455 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.28788 0.27273 0.42424 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.27273 0.15152 0.31818 0.25758 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.34848 0.18182 0.30303 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.87692 0.00000 0.10769 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00877 0.00000 0.06140 0.00000 0.92982 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.26957 0.19130 0.29565 0.24348 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.54545 0.01515 0.42424 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.80303 0.13636 0.03030 0.03030 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03030 0.27273 0.39394 0.30303 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+41 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.74242 0.21212 0.03030 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 2
+42 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.62121 0.15152 0.06061 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.09091 0.54545 0.19697 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+44 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10606 0.09091 0.69697 0.10606 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 2
+45 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.15385 0.00000 0.83077 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.39394 0.18182 0.06061 0.36364 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 2
+46 -1
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10526 0.07018 0.70175 0.12281 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 2
+47 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.23077 0.61538 0.07692 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 47 type 2
+48 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15385 0.30769 0.46154 0.07692 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 48 type 2
+49 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.66667 0.00000 0.25000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15385 0.53846 0.07692 0.23077 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 49 type 2
+50 -1
+0.96825 0.00000 0.01587 0.00000 0.01587 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.33333 0.16667 0.33333 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 50 type 2
+51 -1
+0.96825 0.00000 0.01587 0.00000 0.01587 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.50000 0.16667 0.16667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 51 type 2
+52 -1
+0.96923 0.00000 0.01538 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 52 type 2
+53 -1
+0.83077 0.00000 0.15385 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 53 type 2
+54 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.07692 0.69231 0.15385 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 2
+55 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.15385 0.07692 0.69231 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 55 type 2
+56 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.00000 0.75000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.53846 0.15385 0.07692 0.23077 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 56 type 2
+57 -1
+0.96491 0.00000 0.01754 0.00000 0.01754 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.54545 0.00000 0.09091 0.00000 0.36364 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.66667 0.00000 0.16667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.42857 0.14286 0.28571 0.14286 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25000 0.16667 0.50000 0.08333 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 2
+58 -1
+0.96923 0.00000 0.01538 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.93846 0.00000 0.04615 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.96825 0.00000 0.01587 0.00000 0.01587 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.16667 0.50000 0.16667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 2
+61 -1
+0.85714 0.00000 0.12698 0.00000 0.01587 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.33333 0.16667 0.33333 0.16667 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 61 type 2
+62 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15385 0.07692 0.61538 0.15385 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 62 type 2
+63 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.46154 0.30769 0.15385 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 63 type 2
+64 -1
+0.01786 0.00000 0.96429 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.00000 0.75000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.53846 0.23077 0.15385 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 64 type 2
+65 -1
+0.25000 0.00000 0.25000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01562 0.00000 0.25000 0.00000 0.73438 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01961 0.00000 0.94118 0.00000 0.03922 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03846 0.28846 0.07692 0.59615 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36923 0.03077 0.47692 0.12308 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 65 type 2
+66 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.95455 0.01515 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07576 0.37879 0.42424 0.12121 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.54545 0.18182 0.18182 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06061 0.12121 0.75758 0.06061 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.01515 0.90909 0.03030 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.95455 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+72 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.01515 0.01515 0.95455 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 72 type 2
+73 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.03030 0.01515 0.93939 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 73 type 2
+74 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.93939 0.03030 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 74 type 2
+75 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.59091 0.01515 0.37879 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 75 type 2
+76 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.95455 0.01515 0.01515 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 76 type 2
+77 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.84848 0.01515 0.09091 0.04545 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 77 type 2
+78 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.06061 0.01515 0.90909 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 78 type 2
+79 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.95455 0.01515 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 79 type 2
+80 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03030 0.90909 0.01515 0.04545 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 80 type 2
+81 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03030 0.75758 0.15152 0.06061 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 81 type 2
+82 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.13636 0.56061 0.13636 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 82 type 2
+83 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.36364 0.45455 0.13636 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 83 type 2
+84 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.72727 0.01515 0.21212 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 84 type 2
+85 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06061 0.45455 0.42424 0.06061 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 85 type 2
+86 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10606 0.19697 0.62121 0.07576 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 86 type 2
+87 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07576 0.34848 0.50000 0.07576 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 87 type 2
+88 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.30303 0.39394 0.25758 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 88 type 2
+89 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.46970 0.46970 0.01515 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 89 type 2
+90 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01538 0.00000 0.96923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01515 0.87879 0.04545 0.06061 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 90 type 2
+91 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.81538 0.00000 0.16923 0.00000 0.01538 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.63636 0.04545 0.21212 0.10606 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 91 type 2
+92 -1
+0.96364 0.00000 0.01818 0.00000 0.01818 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.15385 0.00000 0.76923 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07143 0.71429 0.07143 0.14286 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 92 type 2
+93 -1
+0.96429 0.00000 0.01786 0.00000 0.01786 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.76923 0.07692 0.07692 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 93 type 2
+-1 -1
+0.98182 0.00000 0.00000 0.00000 0.01818 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.90909 0.00000 0.00000 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.76923 0.07692 0.07692 0.07692 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/TRNA2-bact.cm b/TRNA2-bact.cm
new file mode 100644
index 0000000..cbe1f71
--- /dev/null
+++ b/TRNA2-bact.cm
@@ -0,0 +1,1202 @@
+### cove V2
+75 nodes
+### node 0 type 6
+1 -1
+0.17391 0.00000 0.00000 0.77470 0.04743 0.00395
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.00000 0.66667 0.06667 0.06667
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.13333 0.06667 0.66667 0.13333 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 3
+2 -1
+0.95833 0.00000 0.00000 0.02083 0.00000 0.02083
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00483 0.00000 0.00000 0.99034 0.00000 0.00483
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.98558 0.00481 0.00481 0.00481 # MATR
+### node 2 type 3
+3 -1
+0.95833 0.00000 0.00000 0.02083 0.00000 0.02083
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00483 0.00000 0.00000 0.99034 0.00000 0.00483
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00481 0.98558 0.00481 0.00481 # MATR
+### node 3 type 3
+4 -1
+0.06250 0.00000 0.00000 0.91667 0.00000 0.02083
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00483 0.00000 0.00000 0.99034 0.00000 0.00483
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.00000 0.33333 0.00000 0.33333
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00481 0.98558 0.00481 0.00481 # MATR
+### node 4 type 3
+5 -1
+0.14286 0.42857 0.14286 0.14286 0.00000 0.14286
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.97222 0.00397 0.01190 0.00000 0.00794
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.33333 0.16667 0.16667 0.00000 0.16667
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.20000 0.40000 0.20000 0.20000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.62550 0.03984 0.21912 0.11554 # MATR
+### node 5 type 1
+6 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00395 0.98024 0.00395 0.00395 0.00395 0.00395
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00380 0.00380 0.00380 0.03802 # MATP
+0.03042 0.00380 0.06844 0.01141 # MATP
+0.00380 0.69962 0.00380 0.06084 # MATP
+0.05703 0.00380 0.00380 0.00380 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.16667 0.33333 0.16667 0.33333 # MATR
+### node 6 type 1
+7 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.02264 # MATP
+0.00377 0.00377 0.33208 0.00377 # MATP
+0.00377 0.52830 0.00755 0.03019 # MATP
+0.03396 0.00377 0.01132 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 7 type 1
+8 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.15472 # MATP
+0.00377 0.00377 0.29057 0.00377 # MATP
+0.00377 0.35094 0.00377 0.07170 # MATP
+0.08679 0.00377 0.00755 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 8 type 1
+9 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.06415 # MATP
+0.00377 0.00377 0.28302 0.00377 # MATP
+0.00377 0.47170 0.00377 0.01887 # MATP
+0.10189 0.00377 0.02264 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 9 type 1
+10 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.01132 0.00377 0.19623 # MATP
+0.00377 0.00377 0.33585 0.00755 # MATP
+0.00377 0.32453 0.00377 0.02264 # MATP
+0.04528 0.00377 0.02642 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 10 type 1
+11 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.97647 0.00392 0.00392 0.00784 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.20000 0.20000 0.40000 0.20000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.21509 # MATP
+0.00377 0.00377 0.21887 0.00755 # MATP
+0.00377 0.23396 0.00377 0.00377 # MATP
+0.23774 0.00755 0.04528 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 11 type 1
+12 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00791 0.00000 0.98419 0.00000 0.00395 0.00395
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.23774 # MATP
+0.00377 0.00377 0.02642 0.00377 # MATP
+0.00377 0.41132 0.00377 0.03396 # MATP
+0.24906 0.00377 0.00377 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 12 type 2
+13 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00797 0.00000 0.98805 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00397 0.00397 0.00794 0.98413 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 2
+14 -1
+0.66667 0.00000 0.00000 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99600 0.00000 0.00000 0.00000 0.00400 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.68254 0.03175 0.26587 0.01984 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 14 type 0
+15 28
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 15 type 4
+16 -1
+0.00395 0.98814 0.00395 0.00395 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 16 type 1
+17 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.00755 # MATP
+0.00377 0.00377 0.06038 0.00377 # MATP
+0.00377 0.83396 0.00377 0.04151 # MATP
+0.01509 0.00377 0.00377 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 17 type 1
+18 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.05660 # MATP
+0.00377 0.00377 0.70566 0.00377 # MATP
+0.00377 0.00755 0.00755 0.00377 # MATP
+0.17358 0.00377 0.01132 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 18 type 1
+19 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.02264 # MATP
+0.00377 0.00755 0.12830 0.00377 # MATP
+0.01132 0.24151 0.00377 0.00377 # MATP
+0.54717 0.00377 0.00755 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 19 type 1
+20 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00395 0.00000 0.98814 0.00000 0.00395 0.00395
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.13962 0.00377 0.00377 0.01887 # MATP
+0.00755 0.00377 0.59245 0.00755 # MATP
+0.12830 0.00377 0.00755 0.00377 # MATP
+0.01887 0.00377 0.04528 0.01132 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 20 type 2
+21 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.97628 0.00791 0.00791 0.00791 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01190 0.00000 0.98413 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20553 0.01186 0.77470 0.00791 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.28000 0.00000 0.71600 0.00000 0.00400 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03984 0.33068 0.03187 0.59761 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.01351 0.00000 0.97297 0.00000 0.01351 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00552 0.00000 0.83978 0.00000 0.15470 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.00000 0.90323 0.00000 0.06452 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.25000 0.03125 0.68750 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06593 0.17582 0.00549 0.75275 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+25 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.00395 0.98419 0.00791 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 2
+26 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.00395 0.98814 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.52381 0.00000 0.47222 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00685 0.00000 0.81507 0.00000 0.17808 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.21769 0.08844 0.12245 0.57143 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06324 0.17787 0.09881 0.66008 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99602 0.00000 0.00000 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.87747 0.00395 0.10672 0.01186 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 5
+29 -1
+0.00794 0.00000 0.98810 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 2
+30 -1
+0.66667 0.00000 0.00000 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99600 0.00000 0.00000 0.00000 0.00400 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.55159 0.03175 0.38095 0.03571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 30 type 0
+31 44
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 31 type 4
+32 -1
+0.00395 0.98814 0.00395 0.00395 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 32 type 1
+33 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.15472 # MATP
+0.01132 0.00377 0.48302 0.00755 # MATP
+0.01132 0.06792 0.00377 0.04151 # MATP
+0.16981 0.00755 0.01887 0.00755 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 33 type 1
+34 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.15094 # MATP
+0.00377 0.00377 0.50566 0.00377 # MATP
+0.00377 0.06038 0.00377 0.02264 # MATP
+0.20377 0.00377 0.01132 0.01132 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 34 type 1
+35 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00755 0.00377 0.00377 0.15849 # MATP
+0.00377 0.00377 0.20000 0.00377 # MATP
+0.00377 0.29057 0.00377 0.00755 # MATP
+0.29811 0.00377 0.00377 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 35 type 1
+36 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.01509 # MATP
+0.00377 0.00377 0.21887 0.00377 # MATP
+0.00377 0.69057 0.00377 0.02642 # MATP
+0.00377 0.00377 0.00377 0.00755 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 36 type 1
+37 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00395 0.00000 0.98814 0.00000 0.00395 0.00395
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00755 0.00377 0.30943 # MATP
+0.00377 0.00377 0.36981 0.00377 # MATP
+0.00377 0.18491 0.00377 0.00755 # MATP
+0.07925 0.00377 0.00755 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01976 0.64822 0.00395 0.32806 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.00395 0.00395 0.98814 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03162 0.24506 0.34387 0.37945 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+41 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30830 0.19763 0.24901 0.24506 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 2
+42 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21344 0.25296 0.20949 0.32411 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.80632 0.00395 0.18577 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99602 0.00000 0.00000 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.68775 0.20158 0.00791 0.10277 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 5
+45 -1
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 2
+46 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.00000 0.82937 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.33992 0.19763 0.25296 0.20949 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 2
+47 -1
+0.97674 0.00000 0.00000 0.00000 0.02326 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.98571 0.00000 0.00000 0.00000 0.01429 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.75000 0.00000 0.00000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.50000 0.16667 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16038 0.02358 0.68396 0.13208 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 47 type 0
+48 60
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 48 type 4
+49 -1
+0.78261 0.20553 0.00791 0.00395 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 49 type 1
+50 -1
+0.97537 0.00493 0.00493 0.00493 0.00493 0.00493
+0.01754 0.91228 0.01754 0.01754 0.01754 0.01754
+0.28571 0.14286 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01493 0.01493 0.04478 0.16418 # MATP
+0.01493 0.01493 0.04478 0.01493 # MATP
+0.01493 0.35821 0.08955 0.10448 # MATP
+0.04478 0.01493 0.02985 0.01493 # MATP
+0.20000 0.40000 0.20000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 50 type 1
+51 -1
+0.97549 0.00490 0.00490 0.00490 0.00490 0.00490
+0.03509 0.89474 0.01754 0.01754 0.01754 0.01754
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01493 0.01493 0.01493 0.05970 # MATP
+0.01493 0.01493 0.23881 0.01493 # MATP
+0.01493 0.23881 0.02985 0.01493 # MATP
+0.26866 0.01493 0.01493 0.01493 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 51 type 1
+52 -1
+0.97561 0.00488 0.00488 0.00488 0.00488 0.00488
+0.28571 0.64286 0.01786 0.01786 0.01786 0.01786
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01515 0.01515 0.01515 0.07576 # MATP
+0.01515 0.03030 0.42424 0.01515 # MATP
+0.01515 0.10606 0.03030 0.04545 # MATP
+0.09091 0.01515 0.07576 0.01515 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 52 type 1
+53 -1
+0.97727 0.00455 0.00455 0.00455 0.00455 0.00455
+0.36585 0.53659 0.02439 0.02439 0.02439 0.02439
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03922 0.01961 0.01961 0.09804 # MATP
+0.03922 0.01961 0.31373 0.01961 # MATP
+0.01961 0.19608 0.01961 0.01961 # MATP
+0.09804 0.01961 0.03922 0.01961 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 53 type 1
+54 -1
+0.97863 0.00427 0.00427 0.00427 0.00427 0.00427
+0.33333 0.51852 0.03704 0.03704 0.03704 0.03704
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.02703 0.02703 0.02703 0.10811 # MATP
+0.05405 0.02703 0.05405 0.02703 # MATP
+0.02703 0.32432 0.02703 0.10811 # MATP
+0.02703 0.05405 0.05405 0.02703 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 54 type 1
+55 -1
+0.97934 0.00413 0.00413 0.00413 0.00413 0.00413
+0.47368 0.31579 0.05263 0.05263 0.05263 0.05263
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03448 0.03448 0.03448 0.10345 # MATP
+0.03448 0.03448 0.06897 0.03448 # MATP
+0.06897 0.24138 0.03448 0.03448 # MATP
+0.03448 0.03448 0.13793 0.03448 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 55 type 1
+56 -1
+0.80242 0.00000 0.15726 0.00000 0.00403 0.03629
+0.11111 0.00000 0.22222 0.00000 0.11111 0.55556
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.06667 0.00000 0.86667 0.00000 0.00000 0.06667
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.50000 0.18750 0.06250 0.25000 # INSR
+0.04762 0.04762 0.04762 0.04762 # MATP
+0.04762 0.04762 0.09524 0.04762 # MATP
+0.04762 0.04762 0.04762 0.04762 # MATP
+0.14286 0.04762 0.09524 0.09524 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 56 type 2
+57 -1
+0.99005 0.00000 0.00498 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01852 0.00000 0.96296 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.07273 0.45455 0.38182 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 2
+58 -1
+0.99005 0.00000 0.00498 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01852 0.00000 0.96296 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23636 0.21818 0.03636 0.50909 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.99005 0.00000 0.00498 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.18519 0.00000 0.77778 0.00000 0.03704 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.61818 0.16364 0.05455 0.16364 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+-1 -1
+0.99522 0.00000 0.00000 0.00000 0.00478 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.97727 0.00000 0.00000 0.00000 0.02273 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.52174 0.17391 0.17391 0.13043 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 5
+61 -1
+0.06746 0.00000 0.92857 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 61 type 2
+62 -1
+0.05263 0.00000 0.89474 0.00000 0.05263 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00424 0.00000 0.22458 0.00000 0.77119 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00543 0.00000 0.98913 0.00000 0.00543 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02162 0.03784 0.03243 0.90811 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08861 0.02532 0.78481 0.10127 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 62 type 2
+63 -1
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00394 0.98425 0.00394 0.00394 0.00394 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00791 0.77075 0.01186 0.20949 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 63 type 1
+64 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.21132 # MATP
+0.00377 0.00377 0.07547 0.00377 # MATP
+0.00377 0.37736 0.00377 0.27547 # MATP
+0.01132 0.00377 0.00377 0.01132 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 64 type 1
+65 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00755 0.00377 0.14340 # MATP
+0.00377 0.00755 0.35094 0.00377 # MATP
+0.00377 0.18868 0.00377 0.09811 # MATP
+0.11321 0.00377 0.05660 0.00755 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 65 type 1
+66 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.01132 0.00377 0.21887 # MATP
+0.00377 0.00377 0.22264 0.00755 # MATP
+0.00377 0.34340 0.00377 0.04906 # MATP
+0.10566 0.00377 0.01132 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 66 type 1
+67 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00392 0.98039 0.00392 0.00392 0.00392 0.00392
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00755 0.00377 0.11698 # MATP
+0.00377 0.00377 0.00755 0.00377 # MATP
+0.00377 0.82264 0.00377 0.00377 # MATP
+0.00377 0.00377 0.00377 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 67 type 1
+68 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00395 0.00000 0.98814 0.00000 0.00395 0.00395
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00377 0.00377 0.00377 0.00755 # MATP
+0.00377 0.00377 0.00377 0.00377 # MATP
+0.00377 0.92830 0.00755 0.01132 # MATP
+0.00377 0.00377 0.00377 0.00377 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 68 type 2
+69 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00794 0.00000 0.98810 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.00395 0.00395 0.98814 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00398 0.00000 0.99203 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00397 0.00397 0.00397 0.98810 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.98814 0.00395 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+72 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31225 0.00395 0.67984 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 72 type 2
+73 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00794 0.00000 0.98810 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.98814 0.00395 0.00395 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 73 type 2
+74 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01594 0.00000 0.98008 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.38095 0.03968 0.38095 0.19841 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 74 type 2
+-1 -1
+0.80000 0.00000 0.00000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99597 0.00000 0.00000 0.00000 0.00403 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00800 0.16000 0.00400 0.82800 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/TRNA2-bactns.cm b/TRNA2-bactns.cm
new file mode 100644
index 0000000..f15655a
--- /dev/null
+++ b/TRNA2-bactns.cm
@@ -0,0 +1,1506 @@
+### cove V2
+94 nodes
+### node 0 type 6
+1 -1
+0.01186 0.00000 0.93676 0.00000 0.04743 0.00395
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06667 0.00000 0.80000 0.00000 0.06667 0.06667
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.13333 0.06667 0.66667 0.13333 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 2
+2 -1
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00400 0.00000 0.99200 0.00000 0.00400 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03984 0.11155 0.78884 0.05976 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 2 type 2
+3 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02372 0.34783 0.58498 0.04348 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 3 type 2
+4 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16206 0.30435 0.43874 0.09486 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 4 type 2
+5 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06719 0.29644 0.50988 0.12648 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 5 type 2
+6 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21344 0.35573 0.35968 0.07115 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 6 type 2
+7 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.98810 0.00000 0.00794 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.40000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.22530 0.23320 0.24506 0.29644 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 7 type 2
+8 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00794 0.00000 0.98810 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.24901 0.02767 0.46245 0.26087 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 8 type 2
+9 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00797 0.00000 0.98805 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00397 0.00397 0.00794 0.98413 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 9 type 2
+10 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00398 0.00000 0.99203 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.68254 0.03175 0.26587 0.01984 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 2
+11 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00791 0.06324 0.91304 0.01581 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 2
+12 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05929 0.73913 0.01186 0.18972 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 2
+13 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02372 0.13834 0.26087 0.57708 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 2
+14 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16206 0.62846 0.13834 0.07115 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 14 type 2
+15 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.97628 0.00791 0.00791 0.00791 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 15 type 2
+16 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01190 0.00000 0.98413 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20553 0.01186 0.77470 0.00791 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 16 type 2
+17 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.28000 0.00000 0.71600 0.00000 0.00400 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03984 0.33068 0.03187 0.59761 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 17 type 2
+18 -1
+0.01351 0.00000 0.97297 0.00000 0.01351 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00552 0.00000 0.83978 0.00000 0.15470 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03226 0.00000 0.90323 0.00000 0.06452 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03125 0.25000 0.03125 0.68750 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06593 0.17582 0.00549 0.75275 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 18 type 2
+19 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.00395 0.98419 0.00791 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 19 type 2
+20 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.00395 0.98814 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.52381 0.00000 0.47222 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00685 0.00000 0.81507 0.00000 0.17808 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.21769 0.08844 0.12245 0.57143 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.06324 0.17787 0.09881 0.66008 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.87747 0.00395 0.10672 0.01186 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.29644 0.00395 0.66798 0.03162 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.58103 0.25692 0.13834 0.02372 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+25 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.18182 0.00791 0.75099 0.05929 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 2
+26 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00794 0.00000 0.98810 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01581 0.87352 0.06324 0.04743 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00398 0.00000 0.99203 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.55159 0.03175 0.38095 0.03571 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 2
+28 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16206 0.51779 0.11858 0.20158 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 2
+29 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15810 0.52964 0.08300 0.22925 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 2
+30 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16996 0.20949 0.30830 0.31225 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 30 type 2
+31 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01581 0.22925 0.74704 0.00791 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 31 type 2
+32 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.32806 0.38735 0.19763 0.08696 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 32 type 2
+33 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01976 0.64822 0.00395 0.32806 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 33 type 2
+34 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.00395 0.00395 0.98814 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03162 0.24506 0.34387 0.37945 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30830 0.19763 0.24901 0.24506 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21344 0.25296 0.20949 0.32411 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.80632 0.00395 0.18577 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.68775 0.20158 0.00791 0.10277 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08300 0.19763 0.39130 0.32806 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+41 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.72332 0.22925 0.04348 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 2
+42 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31621 0.30435 0.20949 0.16996 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21344 0.06324 0.53755 0.18577 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+44 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.19368 0.07510 0.52174 0.20949 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 2
+45 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.00000 0.82937 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.33992 0.19763 0.25296 0.20949 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 2
+46 -1
+0.02273 0.00000 0.95455 0.00000 0.02273 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.93839 0.00000 0.04739 0.00000 0.01422 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.50000 0.16667 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16038 0.02358 0.68396 0.13208 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 2
+47 -1
+0.99000 0.00000 0.00500 0.00000 0.00500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03636 0.00000 0.94545 0.00000 0.01818 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23214 0.07143 0.62500 0.07143 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 47 type 2
+48 -1
+0.99005 0.00000 0.00498 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03704 0.00000 0.94444 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07273 0.29091 0.30909 0.32727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 48 type 2
+49 -1
+0.99010 0.00000 0.00495 0.00000 0.00495 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.30189 0.00000 0.67925 0.00000 0.01887 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09259 0.53704 0.18519 0.18519 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 49 type 2
+50 -1
+0.99078 0.00000 0.00461 0.00000 0.00461 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.39474 0.00000 0.57895 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15385 0.43590 0.25641 0.15385 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 50 type 2
+51 -1
+0.99134 0.00000 0.00433 0.00000 0.00433 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.37500 0.00000 0.58333 0.00000 0.04167 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16000 0.12000 0.60000 0.12000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 51 type 2
+52 -1
+0.99163 0.00000 0.00418 0.00000 0.00418 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.56250 0.00000 0.37500 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17647 0.11765 0.47059 0.23529 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 52 type 2
+53 -1
+0.80567 0.00000 0.19028 0.00000 0.00405 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11111 0.22222 0.11111 0.55556 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 53 type 2
+54 -1
+0.99005 0.00000 0.00498 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01852 0.00000 0.96296 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.07273 0.45455 0.38182 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 2
+55 -1
+0.99005 0.00000 0.00498 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01852 0.00000 0.96296 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23636 0.21818 0.03636 0.50909 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 55 type 2
+56 -1
+0.99005 0.00000 0.00498 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.18519 0.00000 0.77778 0.00000 0.03704 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.61818 0.16364 0.05455 0.16364 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 56 type 2
+57 -1
+0.99048 0.00000 0.00476 0.00000 0.00476 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.66667 0.00000 0.04444 0.00000 0.28889 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.60000 0.00000 0.33333 0.00000 0.06667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.18750 0.06250 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.52174 0.17391 0.17391 0.13043 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 2
+58 -1
+0.95951 0.00000 0.03644 0.00000 0.00405 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.33333 0.11111 0.33333 0.22222 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.95816 0.00000 0.03766 0.00000 0.00418 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06250 0.00000 0.87500 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11765 0.41176 0.29412 0.17647 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.93074 0.00000 0.06494 0.00000 0.00433 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04167 0.00000 0.91667 0.00000 0.04167 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08000 0.52000 0.12000 0.28000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 2
+61 -1
+0.92166 0.00000 0.07373 0.00000 0.00461 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02632 0.00000 0.94737 0.00000 0.02632 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17949 0.25641 0.43590 0.12821 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 61 type 2
+62 -1
+0.98515 0.00000 0.00990 0.00000 0.00495 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01887 0.00000 0.96226 0.00000 0.01887 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11111 0.14815 0.61111 0.12963 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 62 type 2
+63 -1
+0.99005 0.00000 0.00498 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01852 0.00000 0.96296 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.32727 0.29091 0.30909 0.07273 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 63 type 2
+64 -1
+0.00498 0.00000 0.99005 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.31481 0.00000 0.66667 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05455 0.43636 0.20000 0.30909 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 64 type 2
+65 -1
+0.05263 0.00000 0.89474 0.00000 0.05263 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00424 0.00000 0.22458 0.00000 0.77119 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00543 0.00000 0.98913 0.00000 0.00543 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02162 0.03784 0.03243 0.90811 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08861 0.02532 0.78481 0.10127 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 65 type 2
+66 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00791 0.77075 0.01186 0.20949 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.22134 0.07905 0.67984 0.01976 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15415 0.37154 0.29644 0.17787 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23715 0.23715 0.40711 0.11858 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.12648 0.00791 0.86166 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00791 0.00395 0.98419 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+72 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00794 0.00000 0.98810 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.00395 0.00395 0.98814 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 72 type 2
+73 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00398 0.00000 0.99203 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00397 0.00397 0.00397 0.98810 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 73 type 2
+74 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.98814 0.00395 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 74 type 2
+75 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31225 0.00395 0.67984 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 75 type 2
+76 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00794 0.00000 0.98810 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.98814 0.00395 0.00395 0.00395 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 76 type 2
+77 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01594 0.00000 0.98008 0.00000 0.00398 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.38095 0.03968 0.38095 0.19841 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 77 type 2
+78 -1
+0.16667 0.00000 0.66667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00402 0.00000 0.99197 0.00000 0.00402 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00800 0.16000 0.00400 0.82800 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 78 type 2
+79 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.97233 0.00791 0.01581 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 79 type 2
+80 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00395 0.86561 0.00791 0.12253 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 80 type 2
+81 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11067 0.36759 0.24111 0.28063 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 81 type 2
+82 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11858 0.20553 0.42292 0.25296 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 82 type 2
+83 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01186 0.39526 0.07905 0.51383 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 83 type 2
+84 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.26087 0.43083 0.02767 0.28063 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 84 type 2
+85 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.24901 0.24901 0.27273 0.22925 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 85 type 2
+86 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04743 0.34783 0.37549 0.22925 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 86 type 2
+87 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10672 0.49407 0.31621 0.08300 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 87 type 2
+88 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09091 0.36759 0.30830 0.23320 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 88 type 2
+89 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00397 0.00000 0.99206 0.00000 0.00397 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03557 0.55336 0.35968 0.05138 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 89 type 2
+90 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01190 0.00000 0.98016 0.00000 0.00794 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.40000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08696 0.73123 0.07115 0.11067 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 90 type 2
+91 -1
+0.60000 0.00000 0.20000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.17600 0.00000 0.82000 0.00000 0.00400 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.62550 0.03586 0.22311 0.11554 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 91 type 2
+92 -1
+0.95833 0.00000 0.02083 0.00000 0.02083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00483 0.00000 0.99034 0.00000 0.00483 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00481 0.98558 0.00481 0.00481 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 92 type 2
+93 -1
+0.95833 0.00000 0.02083 0.00000 0.02083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00483 0.00000 0.99034 0.00000 0.00483 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00481 0.98558 0.00481 0.00481 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 93 type 2
+-1 -1
+0.97872 0.00000 0.00000 0.00000 0.02128 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99515 0.00000 0.00000 0.00000 0.00485 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.98558 0.00481 0.00481 0.00481 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/TRNA2-euk.cm b/TRNA2-euk.cm
new file mode 100644
index 0000000..7e17697
--- /dev/null
+++ b/TRNA2-euk.cm
@@ -0,0 +1,1154 @@
+### cove V2
+72 nodes
+### node 0 type 6
+1 -1
+0.01220 0.00000 0.00000 0.96748 0.00407 0.01626
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.00000 0.25000 0.25000 0.25000
+0.08333 0.00000 0.00000 0.33333 0.00000 0.58333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.30769 0.53846 0.07692 0.07692 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 3
+2 -1
+0.14286 0.42857 0.14286 0.14286 0.00000 0.14286
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.98367 0.00408 0.00408 0.00000 0.00408
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.50000 0.06148 0.36066 0.07787 # MATR
+### node 2 type 1
+3 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.05039 # MATP
+0.00388 0.00388 0.06202 0.00388 # MATP
+0.00388 0.67054 0.00388 0.04651 # MATP
+0.12791 0.00388 0.00388 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 3 type 1
+4 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.04651 # MATP
+0.01163 0.00388 0.40310 0.01163 # MATP
+0.00388 0.23256 0.00388 0.08140 # MATP
+0.17442 0.00388 0.00775 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 4 type 1
+5 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.08915 # MATP
+0.00388 0.00388 0.51938 0.00388 # MATP
+0.00388 0.10465 0.00775 0.05426 # MATP
+0.17054 0.00388 0.01938 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 5 type 1
+6 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.16667 # MATP
+0.00775 0.00388 0.27132 0.00775 # MATP
+0.00388 0.15891 0.00775 0.04264 # MATP
+0.19380 0.00388 0.11628 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 6 type 1
+7 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00775 0.00388 0.12403 # MATP
+0.00388 0.00388 0.36047 0.00388 # MATP
+0.01163 0.18992 0.01163 0.07364 # MATP
+0.13178 0.00388 0.05814 0.00775 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 7 type 1
+8 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.01163 0.11628 # MATP
+0.00388 0.00388 0.28682 0.00775 # MATP
+0.00388 0.23256 0.00388 0.09302 # MATP
+0.12016 0.00388 0.07752 0.02713 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 8 type 1
+9 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00407 0.00000 0.98780 0.00000 0.00407 0.00407
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00775 0.00388 0.29070 # MATP
+0.00388 0.00388 0.05426 0.00388 # MATP
+0.00388 0.38372 0.00388 0.03101 # MATP
+0.19380 0.00388 0.00388 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 9 type 2
+10 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00816 0.00000 0.96735 0.00000 0.02449 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11111 0.11111 0.66667 0.11111 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.00407 0.00407 0.98780 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 2
+11 -1
+0.66667 0.00000 0.00000 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.97531 0.00000 0.00000 0.00000 0.02469 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.85714 0.00000 0.00000 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.33333 0.11111 0.22222 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.42041 0.01224 0.55510 0.01224 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 0
+12 25
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 4
+13 -1
+0.00407 0.98780 0.00407 0.00407 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 1
+14 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.01163 # MATP
+0.00388 0.00388 0.04264 0.00388 # MATP
+0.00388 0.64341 0.00775 0.23256 # MATP
+0.02326 0.00388 0.00388 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 14 type 1
+15 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.00388 # MATP
+0.00775 0.00388 0.60853 0.00388 # MATP
+0.00388 0.01550 0.00388 0.00388 # MATP
+0.31008 0.00388 0.01550 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 15 type 1
+16 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.01550 0.00388 0.10078 # MATP
+0.01163 0.00388 0.28295 0.00388 # MATP
+0.00388 0.25581 0.00388 0.00388 # MATP
+0.27519 0.00388 0.02326 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 16 type 1
+17 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00407 0.00000 0.98780 0.00000 0.00407 0.00407
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.03488 0.00388 0.00775 0.00775 # MATP
+0.03101 0.00775 0.38372 0.00775 # MATP
+0.13566 0.01163 0.00388 0.02713 # MATP
+0.03876 0.00388 0.13566 0.15891 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 17 type 2
+18 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.97561 0.00407 0.01220 0.00813 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 18 type 2
+19 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00816 0.00000 0.98776 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.14228 0.00407 0.84146 0.01220 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 19 type 2
+20 -1
+0.50000 0.00000 0.25000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.66803 0.00000 0.32787 0.00000 0.00410 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03265 0.13878 0.06939 0.75918 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.00602 0.00000 0.98795 0.00000 0.00602 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01220 0.00000 0.96341 0.00000 0.02439 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.40000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02410 0.36145 0.04819 0.56627 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.00407 0.98780 0.00407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.00407 0.97967 0.01220 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01224 0.00000 0.44898 0.00000 0.53878 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01250 0.00000 0.81875 0.00000 0.16875 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02484 0.17391 0.06211 0.73913 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10569 0.05285 0.04065 0.80081 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+-1 -1
+0.80000 0.00000 0.00000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99585 0.00000 0.00000 0.00000 0.00415 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.96708 0.00823 0.00412 0.02058 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 5
+26 -1
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99590 0.00000 0.00000 0.00000 0.00410 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.18293 0.03659 0.60163 0.17886 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 0
+28 41
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 4
+29 -1
+0.00407 0.98374 0.00813 0.00407 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 1
+30 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00405 0.97976 0.00405 0.00405 0.00405 0.00405
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00389 0.00389 0.00778 0.07393 # MATP
+0.00389 0.00389 0.39689 0.00389 # MATP
+0.00389 0.03113 0.00389 0.10506 # MATP
+0.30350 0.01167 0.03891 0.00389 # MATP
+0.20000 0.40000 0.20000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 30 type 1
+31 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.14729 # MATP
+0.00388 0.00388 0.29845 0.00388 # MATP
+0.00388 0.10465 0.00388 0.00775 # MATP
+0.35659 0.00388 0.04264 0.00775 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 31 type 1
+32 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00775 0.00388 0.00388 0.22481 # MATP
+0.00388 0.00775 0.24031 0.00388 # MATP
+0.00388 0.26744 0.00388 0.00388 # MATP
+0.20930 0.00388 0.00388 0.00775 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 32 type 1
+33 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.01163 0.00388 0.00775 # MATP
+0.00388 0.00388 0.14341 0.00388 # MATP
+0.00388 0.74419 0.00388 0.03101 # MATP
+0.00775 0.00388 0.01938 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 33 type 1
+34 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00407 0.00000 0.98780 0.00000 0.00407 0.00407
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00775 0.37209 # MATP
+0.00388 0.00388 0.24419 0.00388 # MATP
+0.00388 0.25969 0.00388 0.00775 # MATP
+0.04651 0.00775 0.01550 0.01163 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.77236 0.00407 0.21951 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.04878 0.00407 0.94309 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20325 0.30894 0.24797 0.23984 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.24797 0.17073 0.23984 0.34146 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.29268 0.25203 0.17886 0.27642 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.86122 0.00000 0.13469 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00167 0.00000 0.05500 0.00000 0.94333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.31947 0.18636 0.20466 0.28952 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.71545 0.00813 0.27236 0.00407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99590 0.00000 0.00000 0.00000 0.00410 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.62195 0.23171 0.00407 0.14228 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 5
+42 -1
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.79592 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.55691 0.09350 0.09350 0.25610 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+44 -1
+0.98000 0.00000 0.00000 0.00000 0.02000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99490 0.00000 0.00000 0.00000 0.00510 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07071 0.02020 0.87374 0.03535 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 0
+45 57
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 4
+46 -1
+0.78455 0.20325 0.00813 0.00407 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 1
+47 -1
+0.97475 0.00505 0.00505 0.00505 0.00505 0.00505
+0.01818 0.90909 0.01818 0.01818 0.01818 0.01818
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01538 0.01538 0.01538 0.03077 # MATP
+0.01538 0.01538 0.26154 0.01538 # MATP
+0.01538 0.41538 0.01538 0.03077 # MATP
+0.09231 0.01538 0.01538 0.01538 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 47 type 1
+48 -1
+0.97475 0.00505 0.00505 0.00505 0.00505 0.00505
+0.05455 0.87273 0.01818 0.01818 0.01818 0.01818
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01538 0.01538 0.01538 0.01538 # MATP
+0.06154 0.01538 0.15385 0.01538 # MATP
+0.01538 0.35385 0.01538 0.01538 # MATP
+0.20000 0.01538 0.04615 0.03077 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 48 type 1
+49 -1
+0.97500 0.00500 0.00500 0.00500 0.00500 0.00500
+0.16981 0.75472 0.01887 0.01887 0.01887 0.01887
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01587 0.01587 0.01587 0.06349 # MATP
+0.01587 0.03175 0.33333 0.01587 # MATP
+0.01587 0.30159 0.01587 0.01587 # MATP
+0.04762 0.01587 0.06349 0.01587 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 49 type 1
+50 -1
+0.97596 0.00481 0.00481 0.00481 0.00481 0.00481
+0.77778 0.13333 0.02222 0.02222 0.02222 0.02222
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01818 0.01818 0.01818 0.01818 # MATP
+0.03636 0.01818 0.41818 0.01818 # MATP
+0.01818 0.20000 0.01818 0.01818 # MATP
+0.07273 0.01818 0.07273 0.01818 # MATP
+0.20000 0.20000 0.20000 0.40000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 50 type 1
+51 -1
+0.97934 0.00413 0.00413 0.00413 0.00413 0.00413
+0.45455 0.18182 0.09091 0.09091 0.09091 0.09091
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.04762 0.04762 0.04762 0.04762 # MATP
+0.04762 0.04762 0.09524 0.04762 # MATP
+0.04762 0.04762 0.04762 0.04762 # MATP
+0.09524 0.04762 0.19048 0.04762 # MATP
+0.40000 0.20000 0.20000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 51 type 1
+52 -1
+0.97967 0.00407 0.00407 0.00407 0.00407 0.00407
+0.25000 0.25000 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.05556 0.05556 0.05556 0.05556 # MATP
+0.05556 0.05556 0.05556 0.05556 # MATP
+0.05556 0.05556 0.11111 0.05556 # MATP
+0.05556 0.05556 0.05556 0.11111 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 52 type 1
+53 -1
+0.78776 0.00000 0.19592 0.00000 0.00408 0.01224
+0.20000 0.00000 0.20000 0.00000 0.20000 0.40000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.16667 0.00000 0.66667 0.00000 0.00000 0.16667
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.14286 0.14286 0.57143 0.14286 # INSR
+0.05882 0.05882 0.05882 0.05882 # MATP
+0.05882 0.05882 0.11765 0.05882 # MATP
+0.05882 0.05882 0.05882 0.05882 # MATP
+0.05882 0.05882 0.05882 0.05882 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 53 type 2
+54 -1
+0.98974 0.00000 0.00513 0.00000 0.00513 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01887 0.00000 0.96226 0.00000 0.01887 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09259 0.16667 0.11111 0.62963 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 2
+55 -1
+0.98974 0.00000 0.00513 0.00000 0.00513 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09434 0.00000 0.88679 0.00000 0.01887 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07407 0.37037 0.03704 0.51852 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 55 type 2
+56 -1
+0.98995 0.00000 0.00503 0.00000 0.00503 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.65306 0.00000 0.32653 0.00000 0.02041 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.18000 0.12000 0.04000 0.66000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 56 type 2
+-1 -1
+0.99563 0.00000 0.00000 0.00000 0.00437 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.94118 0.00000 0.00000 0.00000 0.05882 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.26316 0.10526 0.47368 0.15789 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 5
+58 -1
+0.01224 0.00000 0.98367 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00412 0.00000 0.39918 0.00000 0.59671 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00676 0.00000 0.97973 0.00000 0.01351 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00671 0.05369 0.02013 0.91946 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20492 0.02459 0.75820 0.01230 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00405 0.98381 0.00405 0.00405 0.00405 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02846 0.82520 0.01626 0.13008 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 1
+61 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.95968 0.00403 0.00403 0.00403 0.02419
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.10000 0.60000 0.10000 0.10000 0.00000 0.10000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.11111 0.66667 0.11111 0.11111 # INSR
+0.00388 0.00388 0.00388 0.08527 # MATP
+0.00775 0.00388 0.40310 0.00388 # MATP
+0.00388 0.37209 0.00388 0.05426 # MATP
+0.02326 0.00388 0.01938 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 61 type 1
+62 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.07364 # MATP
+0.00388 0.00388 0.53488 0.00775 # MATP
+0.00388 0.10465 0.00388 0.02326 # MATP
+0.18992 0.00775 0.02713 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 62 type 1
+63 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.18605 # MATP
+0.00388 0.00388 0.10078 0.00388 # MATP
+0.00388 0.49225 0.00388 0.00388 # MATP
+0.09690 0.00388 0.06977 0.01550 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 63 type 1
+64 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00403 0.97984 0.00403 0.00403 0.00403 0.00403
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00775 0.00388 0.09302 # MATP
+0.00388 0.00775 0.01163 0.00775 # MATP
+0.00775 0.77907 0.00388 0.01938 # MATP
+0.03488 0.00775 0.00388 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 64 type 1
+65 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00407 0.00000 0.98780 0.00000 0.00407 0.00407
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00388 0.00388 0.00388 0.00775 # MATP
+0.00388 0.00388 0.00388 0.00388 # MATP
+0.00388 0.93023 0.00388 0.01163 # MATP
+0.00388 0.00388 0.00388 0.00388 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 65 type 2
+66 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08537 0.00407 0.00407 0.90650 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.00407 0.00407 0.98780 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.97967 0.00813 0.00813 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.22764 0.00407 0.76016 0.00813 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.98780 0.00407 0.00407 0.00407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00816 0.00000 0.98776 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.43496 0.05691 0.13821 0.36992 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+-1 -1
+0.66667 0.00000 0.00000 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99588 0.00000 0.00000 0.00000 0.00412 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10612 0.24490 0.00816 0.64082 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/TRNA2-eukns.cm b/TRNA2-eukns.cm
new file mode 100644
index 0000000..fa3d6ec
--- /dev/null
+++ b/TRNA2-eukns.cm
@@ -0,0 +1,1458 @@
+### cove V2
+91 nodes
+### node 0 type 6
+1 -1
+0.00407 0.00000 0.97561 0.00000 0.00407 0.01626
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.08333 0.00000 0.33333 0.00000 0.00000 0.58333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.30769 0.53846 0.07692 0.07692 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 2
+2 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05285 0.06504 0.74797 0.13415 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 2 type 2
+3 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04878 0.43902 0.32520 0.18699 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 3 type 2
+4 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09350 0.54472 0.16667 0.19512 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 4 type 2
+5 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17480 0.29268 0.21138 0.32114 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 5 type 2
+6 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.13415 0.37805 0.28862 0.19919 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 6 type 2
+7 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.13008 0.30488 0.33740 0.22764 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 7 type 2
+8 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30894 0.05691 0.43089 0.20325 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 8 type 2
+9 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00816 0.00000 0.96735 0.00000 0.02449 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11111 0.11111 0.66667 0.11111 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.00407 0.00407 0.98780 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 9 type 2
+10 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00410 0.00000 0.97131 0.00000 0.02459 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.33333 0.11111 0.22222 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.42041 0.01224 0.55510 0.01224 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 2
+11 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01220 0.04472 0.91870 0.02439 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 2
+12 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.64228 0.01626 0.33740 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 2
+13 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11789 0.30488 0.26829 0.30894 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 2
+14 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04472 0.43902 0.17480 0.34146 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 14 type 2
+15 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.97561 0.00407 0.01220 0.00813 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 15 type 2
+16 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00816 0.00000 0.98776 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.14228 0.00407 0.84146 0.01220 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 16 type 2
+17 -1
+0.50000 0.00000 0.25000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.66803 0.00000 0.32787 0.00000 0.00410 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03265 0.13878 0.06939 0.75918 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 17 type 2
+18 -1
+0.00602 0.00000 0.98795 0.00000 0.00602 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01220 0.00000 0.96341 0.00000 0.02439 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.40000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02410 0.36145 0.04819 0.56627 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 18 type 2
+19 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.00407 0.98780 0.00407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 19 type 2
+20 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.00407 0.97967 0.01220 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01224 0.00000 0.44898 0.00000 0.53878 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01250 0.00000 0.81875 0.00000 0.16875 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02484 0.17391 0.06211 0.73913 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10569 0.05285 0.04065 0.80081 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.16667 0.00000 0.66667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00413 0.00000 0.99174 0.00000 0.00413 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.96708 0.00823 0.00412 0.02058 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23984 0.01626 0.54472 0.19919 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.29675 0.28049 0.31707 0.10569 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+25 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.32927 0.01626 0.65041 0.00407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 2
+26 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02439 0.67480 0.04878 0.25203 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.18293 0.03659 0.60163 0.17886 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 2
+28 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08130 0.41870 0.13821 0.36179 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 2
+29 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15447 0.31301 0.11382 0.41870 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 2
+30 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23984 0.25610 0.28049 0.22358 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 30 type 2
+31 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01626 0.15041 0.80894 0.02439 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 31 type 2
+32 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.39431 0.25610 0.27642 0.07317 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 32 type 2
+33 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.77236 0.00407 0.21951 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 33 type 2
+34 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.04878 0.00407 0.94309 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20325 0.30894 0.24797 0.23984 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.24797 0.17073 0.23984 0.34146 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.29268 0.25203 0.17886 0.27642 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.86122 0.00000 0.13469 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00167 0.00000 0.05500 0.00000 0.94333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.31947 0.18636 0.20466 0.28952 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.71545 0.00813 0.27236 0.00407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.62195 0.23171 0.00407 0.14228 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04878 0.27642 0.27236 0.40244 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+41 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00813 0.78862 0.16667 0.03659 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 2
+42 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.22358 0.28455 0.25203 0.23984 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00816 0.00000 0.98776 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.37398 0.10976 0.35366 0.16260 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+44 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00410 0.00000 0.99180 0.00000 0.00410 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31837 0.04082 0.45714 0.18367 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 2
+45 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.79592 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.55691 0.09350 0.09350 0.25610 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 2
+46 -1
+0.01961 0.00000 0.96078 0.00000 0.01961 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.97970 0.00000 0.01523 0.00000 0.00508 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07071 0.02020 0.87374 0.03535 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 2
+47 -1
+0.98974 0.00000 0.00513 0.00000 0.00513 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01887 0.00000 0.96226 0.00000 0.01887 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03704 0.31481 0.53704 0.11111 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 47 type 2
+48 -1
+0.98974 0.00000 0.00513 0.00000 0.00513 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05660 0.00000 0.92453 0.00000 0.01887 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01852 0.24074 0.44444 0.29630 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 48 type 2
+49 -1
+0.98985 0.00000 0.00508 0.00000 0.00508 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.17647 0.00000 0.80392 0.00000 0.01961 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07692 0.42308 0.38462 0.11538 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 49 type 2
+50 -1
+0.99024 0.00000 0.00488 0.00000 0.00488 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.81395 0.00000 0.16279 0.00000 0.02326 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02273 0.54545 0.25000 0.18182 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 50 type 2
+51 -1
+0.99163 0.00000 0.00418 0.00000 0.00418 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.55556 0.00000 0.33333 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20000 0.20000 0.10000 0.50000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 51 type 2
+52 -1
+0.99177 0.00000 0.00412 0.00000 0.00412 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.00000 0.40000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.16667 0.33333 0.33333 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 52 type 2
+53 -1
+0.79098 0.00000 0.20492 0.00000 0.00410 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20000 0.40000 0.20000 0.20000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 53 type 2
+54 -1
+0.98974 0.00000 0.00513 0.00000 0.00513 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01887 0.00000 0.96226 0.00000 0.01887 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09259 0.16667 0.11111 0.62963 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 2
+55 -1
+0.98974 0.00000 0.00513 0.00000 0.00513 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09434 0.00000 0.88679 0.00000 0.01887 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07407 0.37037 0.03704 0.51852 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 55 type 2
+56 -1
+0.98995 0.00000 0.00503 0.00000 0.00503 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.65306 0.00000 0.32653 0.00000 0.02041 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.18000 0.12000 0.04000 0.66000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 56 type 2
+57 -1
+0.99130 0.00000 0.00435 0.00000 0.00435 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.72222 0.00000 0.05556 0.00000 0.22222 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.33333 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.14286 0.14286 0.57143 0.14286 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.26316 0.10526 0.47368 0.15789 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 2
+58 -1
+0.98770 0.00000 0.00820 0.00000 0.00410 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.97531 0.00000 0.02058 0.00000 0.00412 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.00000 0.40000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16667 0.16667 0.33333 0.33333 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.85000 0.00000 0.14583 0.00000 0.00417 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.22222 0.11111 0.55556 0.11111 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 2
+61 -1
+0.95146 0.00000 0.04369 0.00000 0.00485 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02381 0.00000 0.95238 0.00000 0.02381 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11628 0.25581 0.60465 0.02326 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 61 type 2
+62 -1
+0.97980 0.00000 0.01515 0.00000 0.00505 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02000 0.00000 0.96000 0.00000 0.02000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05882 0.39216 0.47059 0.07843 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 62 type 2
+63 -1
+0.98980 0.00000 0.00510 0.00000 0.00510 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01923 0.00000 0.96154 0.00000 0.01923 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30189 0.43396 0.22642 0.03774 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 63 type 2
+64 -1
+0.01020 0.00000 0.98469 0.00000 0.00510 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03846 0.00000 0.94231 0.00000 0.01923 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11321 0.50943 0.32075 0.05660 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 64 type 2
+65 -1
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00412 0.00000 0.39918 0.00000 0.59671 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00676 0.00000 0.97973 0.00000 0.01351 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00671 0.05369 0.02013 0.91946 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20492 0.02459 0.75820 0.01230 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 65 type 2
+66 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02846 0.82520 0.01626 0.13008 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08943 0.42683 0.44309 0.04065 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07724 0.56504 0.13008 0.22764 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.19512 0.10569 0.51626 0.18293 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10163 0.02033 0.83740 0.04065 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00813 0.00407 0.98374 0.00407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+72 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08537 0.00407 0.00407 0.90650 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 72 type 2
+73 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.00407 0.00407 0.98780 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 73 type 2
+74 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.97967 0.00813 0.00813 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 74 type 2
+75 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.22764 0.00407 0.76016 0.00813 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 75 type 2
+76 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.98780 0.00407 0.00407 0.00407 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 76 type 2
+77 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00816 0.00000 0.98776 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.43496 0.05691 0.13821 0.36992 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 77 type 2
+78 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00410 0.00000 0.99180 0.00000 0.00410 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10612 0.24490 0.00816 0.64082 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 78 type 2
+79 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00407 0.97561 0.00407 0.01626 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 79 type 2
+80 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04065 0.82927 0.01220 0.11789 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 80 type 2
+81 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10163 0.51626 0.17480 0.20732 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 81 type 2
+82 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.97143 0.00000 0.02449 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11111 0.66667 0.11111 0.11111 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.19919 0.11382 0.58537 0.10163 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 82 type 2
+83 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02846 0.39024 0.43902 0.14228 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 83 type 2
+84 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20325 0.40650 0.05691 0.33333 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 84 type 2
+85 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.12602 0.24390 0.38618 0.24390 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 85 type 2
+86 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.14634 0.20325 0.44309 0.20732 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 86 type 2
+87 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20732 0.16667 0.40650 0.21951 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 87 type 2
+88 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17886 0.10976 0.56504 0.14634 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 88 type 2
+89 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00408 0.00000 0.99184 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.19106 0.24390 0.42683 0.13821 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 89 type 2
+90 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01224 0.00000 0.98367 0.00000 0.00408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.13415 0.70325 0.06504 0.09756 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 90 type 2
+-1 -1
+0.75000 0.00000 0.00000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99587 0.00000 0.00000 0.00000 0.00413 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.50000 0.06148 0.36066 0.07787 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/TRNA2.cm b/TRNA2.cm
new file mode 100644
index 0000000..d2e9548
--- /dev/null
+++ b/TRNA2.cm
@@ -0,0 +1,1154 @@
+### cove V2
+72 nodes
+### node 0 type 6
+1 -1
+0.00846 0.00000 0.00000 0.80479 0.02326 0.16350
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.00000 0.50000 0.02778 0.44444
+0.00137 0.00000 0.00000 0.33789 0.00000 0.66074
+0.05556 0.02778 0.86111 0.05556 # INSL
+0.33060 0.66530 0.00137 0.00273 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 3
+2 -1
+0.06250 0.56250 0.06250 0.25000 0.00000 0.06250
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.99503 0.00071 0.00213 0.00000 0.00142
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.33333 0.16667 0.16667 0.00000 0.16667
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.20000 0.40000 0.20000 0.20000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.56676 0.06605 0.22443 0.14276 # MATR
+### node 2 type 1
+3 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00071 0.99647 0.00071 0.00071 0.00071 0.00071
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.09091 0.54545 0.09091 0.09091 0.09091 0.09091
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00281 0.00561 0.00351 0.14727 # MATP
+0.00771 0.00281 0.07433 0.00210 # MATP
+0.00070 0.57153 0.00070 0.08555 # MATP
+0.08555 0.00070 0.00210 0.00701 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.11111 0.33333 0.11111 0.44444 # MATR
+### node 3 type 1
+4 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.00070 0.00070 0.12159 # MATP
+0.00349 0.00140 0.32565 0.00280 # MATP
+0.00140 0.37596 0.00210 0.03774 # MATP
+0.11461 0.00070 0.00839 0.00210 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 4 type 1
+5 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00349 0.00210 0.00140 0.16771 # MATP
+0.00280 0.00140 0.27533 0.00210 # MATP
+0.00070 0.29979 0.00210 0.05451 # MATP
+0.16841 0.00140 0.01328 0.00349 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 5 type 1
+6 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99507 0.00070 0.00141 0.00141 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.20000 0.20000 0.20000 0.40000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00839 0.00280 0.00140 0.18728 # MATP
+0.00559 0.00489 0.20685 0.00210 # MATP
+0.00210 0.29769 0.00140 0.05031 # MATP
+0.17750 0.00070 0.04892 0.00210 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 6 type 1
+7 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00280 0.00629 0.00420 0.27832 # MATP
+0.00490 0.00490 0.23007 0.00280 # MATP
+0.00210 0.20280 0.00210 0.04895 # MATP
+0.16014 0.00140 0.04266 0.00559 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 7 type 1
+8 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99507 0.00141 0.00070 0.00141 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.20000 0.20000 0.40000 0.20000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00140 0.00140 0.00210 0.19497 # MATP
+0.00419 0.00140 0.19846 0.00349 # MATP
+0.00070 0.19427 0.00070 0.02935 # MATP
+0.28302 0.00210 0.05870 0.02376 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 8 type 1
+9 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00212 0.00000 0.99365 0.00000 0.00071 0.00353
+0.20000 0.00000 0.40000 0.00000 0.20000 0.20000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.14286 0.00000 0.71429 0.00000 0.00000 0.14286
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.12500 0.37500 0.12500 0.37500 # INSR
+0.00070 0.00280 0.00070 0.36014 # MATP
+0.00070 0.00070 0.02867 0.00070 # MATP
+0.00140 0.35245 0.00070 0.03916 # MATP
+0.20699 0.00070 0.00140 0.00210 # MATP
+0.20000 0.20000 0.20000 0.40000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 9 type 2
+10 -1
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00636 0.00000 0.98799 0.00000 0.00565 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09091 0.09091 0.63636 0.18182 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04799 0.00423 0.01764 0.93013 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 2
+11 -1
+0.90000 0.00000 0.00000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99290 0.00000 0.00000 0.00000 0.00710 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.90909 0.00000 0.00000 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.38462 0.30769 0.15385 0.15385 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.64352 0.03402 0.30191 0.02055 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 0
+12 25
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 4
+13 -1
+0.00070 0.99789 0.00070 0.00070 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 1
+14 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00140 0.00140 0.00419 0.06988 # MATP
+0.00140 0.00140 0.03494 0.00140 # MATP
+0.00210 0.72746 0.00210 0.12229 # MATP
+0.02446 0.00070 0.00280 0.00210 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 14 type 1
+15 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.00140 0.00140 0.02935 # MATP
+0.00140 0.00070 0.59399 0.00070 # MATP
+0.00070 0.05311 0.00140 0.00210 # MATP
+0.29140 0.00349 0.01677 0.00140 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 15 type 1
+16 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00419 0.00419 0.00070 0.09154 # MATP
+0.00769 0.00140 0.19147 0.00070 # MATP
+0.00210 0.16422 0.00070 0.00349 # MATP
+0.50943 0.00140 0.01607 0.00070 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 16 type 1
+17 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00352 0.00000 0.99507 0.00000 0.00070 0.00070
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.09574 0.00349 0.00769 0.03634 # MATP
+0.01048 0.00349 0.34172 0.00210 # MATP
+0.12788 0.00978 0.00489 0.02096 # MATP
+0.18169 0.00419 0.10273 0.04682 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 17 type 2
+18 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00707 0.00000 0.99222 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.94770 0.00495 0.01979 0.02756 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 18 type 2
+19 -1
+0.87500 0.00000 0.06250 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11886 0.00000 0.88043 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.35562 0.01991 0.56899 0.05548 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 19 type 2
+20 -1
+0.98901 0.00000 0.00549 0.00000 0.00549 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.55609 0.00000 0.44310 0.00000 0.00081 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10887 0.21290 0.03871 0.63952 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.06552 0.00000 0.93333 0.00000 0.00115 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00544 0.00000 0.75318 0.00000 0.24138 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00725 0.00000 0.96377 0.00000 0.02899 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09353 0.25180 0.02158 0.63309 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07790 0.23551 0.01630 0.67029 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.96721 0.00000 0.01639 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00074 0.00000 0.99853 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09111 0.03086 0.83248 0.04555 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.96721 0.00000 0.01639 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13750 0.00000 0.86176 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05217 0.03527 0.83174 0.08082 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.01215 0.00000 0.96761 0.00000 0.02024 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00341 0.00000 0.50681 0.00000 0.48978 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00789 0.00000 0.75526 0.00000 0.23684 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16689 0.16032 0.06965 0.60315 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09702 0.10298 0.04426 0.75574 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+-1 -1
+0.91667 0.00000 0.00000 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99929 0.00000 0.00000 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.87722 0.01490 0.06388 0.04400 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 5
+26 -1
+0.00212 0.00000 0.99718 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.75000 0.00000 0.00000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99505 0.00000 0.00000 0.00000 0.00495 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.87500 0.00000 0.00000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.45730 0.03529 0.41637 0.09104 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 0
+28 41
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 4
+29 -1
+0.00070 0.99648 0.00211 0.00070 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 1
+30 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99436 0.00070 0.00070 0.00141 0.00211
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.14286 0.42857 0.14286 0.14286 0.00000 0.14286
+0.20000 0.20000 0.20000 0.40000 # INSL
+0.16667 0.50000 0.16667 0.16667 # INSR
+0.01190 0.00420 0.00210 0.14206 # MATP
+0.01470 0.00910 0.30861 0.01260 # MATP
+0.00560 0.06018 0.00070 0.06578 # MATP
+0.29531 0.00700 0.04759 0.01260 # MATP
+0.16667 0.33333 0.33333 0.16667 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 30 type 1
+31 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.00070 0.00070 0.16073 # MATP
+0.00070 0.00140 0.34871 0.00419 # MATP
+0.00070 0.08456 0.00070 0.02166 # MATP
+0.32984 0.00070 0.03215 0.01188 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 31 type 1
+32 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99578 0.00070 0.00141 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00210 0.00839 0.00070 0.23690 # MATP
+0.00280 0.00140 0.13697 0.00070 # MATP
+0.00070 0.35989 0.00140 0.00769 # MATP
+0.23201 0.00140 0.00349 0.00349 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 32 type 1
+33 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00140 0.00280 0.00070 0.09161 # MATP
+0.00140 0.00070 0.20909 0.00140 # MATP
+0.00070 0.59720 0.00070 0.05734 # MATP
+0.01608 0.00140 0.01049 0.00699 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.20000 0.20000 0.20000 0.40000 # MATR
+### node 33 type 1
+34 -1
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.00070 0.00000 0.99789 0.00000 0.00070 0.00070
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00210 0.00419 0.00210 0.34591 # MATP
+0.00140 0.00070 0.24948 0.00140 # MATP
+0.00140 0.19846 0.00280 0.01188 # MATP
+0.11950 0.00489 0.04333 0.01048 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99718 0.00000 0.00212 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.50000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02114 0.60395 0.00634 0.36857 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00070 0.02607 0.00070 0.97252 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05144 0.18323 0.33756 0.42777 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30444 0.19662 0.20789 0.29105 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25793 0.24172 0.20648 0.29387 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.97179 0.00000 0.02750 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.05485 0.00000 0.94374 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.31180 0.18680 0.21910 0.28230 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.78365 0.00141 0.21071 0.00423 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+-1 -1
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99929 0.00000 0.00000 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.67935 0.17970 0.02467 0.11628 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 5
+42 -1
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.14104 0.00000 0.85825 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.48273 0.13531 0.12333 0.25863 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+44 -1
+0.99502 0.00000 0.00000 0.00000 0.00498 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99754 0.00000 0.00000 0.00000 0.00246 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.75000 0.00000 0.00000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.50000 0.16667 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.28033 0.02787 0.52295 0.16885 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 0
+45 57
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 4
+46 -1
+0.84144 0.15081 0.00705 0.00070 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 1
+47 -1
+0.99583 0.00083 0.00083 0.00083 0.00083 0.00083
+0.00457 0.97717 0.00457 0.00457 0.00457 0.00457
+0.60000 0.06667 0.13333 0.06667 0.06667 0.06667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00437 0.00873 0.01310 0.13974 # MATP
+0.00437 0.00437 0.10044 0.00437 # MATP
+0.00437 0.54148 0.02620 0.05240 # MATP
+0.07424 0.00873 0.00873 0.00437 # MATP
+0.07692 0.15385 0.23077 0.53846 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 47 type 1
+48 -1
+0.99586 0.00083 0.00083 0.00083 0.00083 0.00083
+0.03653 0.94521 0.00457 0.00457 0.00457 0.00457
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00437 0.00873 0.00437 0.13100 # MATP
+0.01747 0.00437 0.23581 0.00437 # MATP
+0.00437 0.24454 0.00873 0.02183 # MATP
+0.27948 0.00437 0.01310 0.01310 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 48 type 1
+49 -1
+0.99588 0.00082 0.00082 0.00082 0.00082 0.00082
+0.30660 0.65566 0.00472 0.00472 0.01415 0.01415
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.12500 0.37500 0.12500 0.12500 0.12500 0.12500
+0.14286 0.42857 0.14286 0.14286 0.00000 0.14286
+0.16667 0.33333 0.16667 0.33333 # INSL
+0.16667 0.16667 0.16667 0.50000 # INSR
+0.00901 0.00450 0.00450 0.22072 # MATP
+0.02252 0.01351 0.31982 0.00901 # MATP
+0.00450 0.14414 0.00901 0.02252 # MATP
+0.15766 0.00450 0.04505 0.00901 # MATP
+0.20000 0.20000 0.40000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 49 type 1
+50 -1
+0.99609 0.00078 0.00078 0.00078 0.00078 0.00078
+0.45946 0.51351 0.00676 0.00676 0.00676 0.00676
+0.14286 0.14286 0.28571 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01266 0.00633 0.00633 0.07595 # MATP
+0.01899 0.00633 0.34177 0.00633 # MATP
+0.00633 0.17089 0.00633 0.05063 # MATP
+0.18987 0.01899 0.06962 0.01266 # MATP
+0.20000 0.20000 0.20000 0.40000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 50 type 1
+51 -1
+0.99628 0.00074 0.00074 0.00074 0.00074 0.00074
+0.32099 0.62963 0.01235 0.01235 0.01235 0.01235
+0.14286 0.28571 0.14286 0.14286 0.14286 0.14286
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01099 0.01099 0.01099 0.20879 # MATP
+0.03297 0.01099 0.06593 0.01099 # MATP
+0.01099 0.16484 0.01099 0.10989 # MATP
+0.23077 0.02198 0.07692 0.01099 # MATP
+0.40000 0.20000 0.20000 0.20000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 51 type 1
+52 -1
+0.99635 0.00073 0.00073 0.00073 0.00073 0.00073
+0.59649 0.33333 0.01754 0.01754 0.01754 0.01754
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.01493 0.01493 0.01493 0.23881 # MATP
+0.01493 0.01493 0.16418 0.01493 # MATP
+0.02985 0.11940 0.07463 0.01493 # MATP
+0.10448 0.01493 0.10448 0.04478 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 52 type 1
+53 -1
+0.85796 0.00000 0.12134 0.00000 0.00071 0.01999
+0.04545 0.00000 0.45455 0.00000 0.04545 0.45455
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.02564 0.00000 0.94872 0.00000 0.00000 0.02564
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.52500 0.07500 0.12500 0.27500 # INSR
+0.02941 0.02941 0.02941 0.02941 # MATP
+0.02941 0.02941 0.20588 0.02941 # MATP
+0.05882 0.02941 0.02941 0.05882 # MATP
+0.20588 0.02941 0.11765 0.05882 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 53 type 2
+54 -1
+0.99834 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00922 0.00000 0.98618 0.00000 0.00461 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21101 0.09174 0.24312 0.45413 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 2
+55 -1
+0.99834 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06019 0.00000 0.93519 0.00000 0.00463 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.27650 0.16590 0.05530 0.50230 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 55 type 2
+56 -1
+0.99836 0.00000 0.00082 0.00000 0.00082 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.37745 0.00000 0.60294 0.00000 0.01961 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.50000 0.00000 0.37500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.44444 0.11111 0.11111 0.33333 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.45854 0.09756 0.04878 0.39512 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 56 type 2
+-1 -1
+0.99923 0.00000 0.00000 0.00000 0.00077 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99213 0.00000 0.00000 0.00000 0.00787 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36434 0.11628 0.27132 0.24806 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 5
+58 -1
+0.04866 0.00000 0.95063 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.01408 0.00000 0.95775 0.00000 0.02817 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00148 0.00000 0.45259 0.00000 0.54593 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00133 0.00000 0.98400 0.00000 0.01467 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06525 0.07989 0.05060 0.80426 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31384 0.02147 0.53442 0.13027 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.16667 0.33333 0.16667 0.16667 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00070 0.99718 0.00070 0.00070 0.00070 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.20000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05642 0.57546 0.02186 0.34626 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 1
+61 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99296 0.00070 0.00070 0.00070 0.00422
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.10000 0.60000 0.10000 0.10000 0.00000 0.10000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.11111 0.66667 0.11111 0.11111 # INSR
+0.00699 0.00280 0.00210 0.27044 # MATP
+0.00280 0.00070 0.15164 0.00140 # MATP
+0.00070 0.36758 0.00140 0.12159 # MATP
+0.04682 0.00559 0.01398 0.00349 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 61 type 1
+62 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00070 0.99648 0.00070 0.00070 0.00070 0.00070
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.00280 0.00070 0.17191 # MATP
+0.00210 0.00210 0.32075 0.00140 # MATP
+0.00070 0.14885 0.00070 0.05311 # MATP
+0.24319 0.00349 0.03354 0.01398 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 62 type 1
+63 -1
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.00493 0.98733 0.00070 0.00070 0.00493 0.00141
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.08333 0.58333 0.08333 0.08333 0.08333 0.08333
+0.16667 0.33333 0.16667 0.16667 0.00000 0.16667
+0.40000 0.10000 0.10000 0.40000 # INSL
+0.20000 0.40000 0.20000 0.20000 # INSR
+0.00070 0.00839 0.00070 0.27813 # MATP
+0.00070 0.00070 0.14116 0.00140 # MATP
+0.00140 0.36618 0.00210 0.02516 # MATP
+0.14046 0.00070 0.02236 0.00978 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 63 type 1
+64 -1
+0.58333 0.08333 0.08333 0.08333 0.08333 0.08333
+0.04382 0.95194 0.00141 0.00141 0.00071 0.00071
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.16667 0.16667 0.16667 0.16667 0.16667 0.16667
+0.20000 0.20000 0.20000 0.20000 0.00000 0.20000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00070 0.01053 0.00070 0.16561 # MATP
+0.00211 0.00140 0.01614 0.00211 # MATP
+0.00211 0.73684 0.00070 0.01193 # MATP
+0.04000 0.00140 0.00632 0.00140 # MATP
+0.25000 0.25000 0.25000 0.25000 # MATL
+0.25000 0.25000 0.25000 0.25000 # MATR
+### node 64 type 1
+65 -1
+0.36620 0.00000 0.60563 0.00000 0.01408 0.01408
+0.02519 0.00000 0.97333 0.00000 0.00074 0.00074
+0.20000 0.00000 0.40000 0.00000 0.20000 0.20000
+0.20000 0.00000 0.40000 0.00000 0.20000 0.20000
+0.25000 0.00000 0.25000 0.00000 0.25000 0.25000
+0.33333 0.00000 0.33333 0.00000 0.00000 0.33333
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.25000 0.25000 0.25000 0.25000 # INSR
+0.00073 0.00954 0.00073 0.04479 # MATP
+0.00954 0.00367 0.00367 0.00220 # MATP
+0.00073 0.89574 0.00147 0.00808 # MATP
+0.01101 0.00220 0.00367 0.00220 # MATP
+0.20000 0.40000 0.20000 0.20000 # MATL
+0.20000 0.40000 0.20000 0.20000 # MATR
+### node 65 type 2
+66 -1
+0.04918 0.00000 0.93443 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00147 0.00000 0.99706 0.00000 0.00147 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05878 0.03159 0.01323 0.89640 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.16667 0.00000 0.66667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99788 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03955 0.02401 0.04802 0.88842 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99788 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10085 0.80889 0.01763 0.07264 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00635 0.00000 0.98941 0.00000 0.00423 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.22222 0.44444 0.22222 0.11111 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.42666 0.02962 0.50000 0.04372 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.81818 0.00000 0.09091 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03404 0.00000 0.96525 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.91850 0.02268 0.01701 0.04181 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.93103 0.00000 0.05172 0.00000 0.01724 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06310 0.00000 0.92517 0.00000 0.01174 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05000 0.00000 0.80000 0.00000 0.15000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.42857 0.23810 0.14286 0.19048 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.46114 0.08284 0.21334 0.24267 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+-1 -1
+0.99286 0.00000 0.00000 0.00000 0.00714 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99922 0.00000 0.00000 0.00000 0.00078 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05308 0.13973 0.01015 0.79703 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/TRNA2ns.cm b/TRNA2ns.cm
new file mode 100644
index 0000000..9e0f95b
--- /dev/null
+++ b/TRNA2ns.cm
@@ -0,0 +1,1458 @@
+### cove V2
+91 nodes
+### node 0 type 6
+1 -1
+0.00352 0.00000 0.80973 0.00000 0.02326 0.16350
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02778 0.00000 0.50000 0.00000 0.02778 0.44444
+0.00274 0.00000 0.33653 0.00000 0.00000 0.66074
+0.05556 0.02778 0.86111 0.05556 # INSL
+0.33060 0.66530 0.00137 0.00273 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 1 type 2
+2 -1
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99858 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15842 0.08557 0.66266 0.09335 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 2 type 2
+3 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.12262 0.33404 0.41860 0.12474 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 3 type 2
+4 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17407 0.28189 0.35800 0.18605 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 4 type 2
+5 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99718 0.00000 0.00141 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.40000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.19944 0.21917 0.35236 0.22903 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 5 type 2
+6 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.29196 0.24260 0.25599 0.20945 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 6 type 2
+7 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99788 0.00000 0.00141 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.40000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.19944 0.20719 0.22481 0.36857 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 7 type 2
+8 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00212 0.00000 0.99718 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36505 0.02889 0.39464 0.21142 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 8 type 2
+9 -1
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00636 0.00000 0.98799 0.00000 0.00565 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.10000 0.00000 0.80000 0.00000 0.10000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09091 0.09091 0.63636 0.18182 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04799 0.00423 0.01764 0.93013 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 9 type 2
+10 -1
+0.09091 0.00000 0.81818 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99220 0.00000 0.00709 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.08333 0.00000 0.83333 0.00000 0.08333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.38462 0.30769 0.15385 0.15385 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.64352 0.03402 0.30191 0.02055 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 10 type 2
+11 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07541 0.03735 0.85906 0.02819 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 11 type 2
+12 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03101 0.59972 0.05567 0.31360 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 12 type 2
+13 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09937 0.20085 0.16984 0.52995 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 13 type 2
+14 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00353 0.00000 0.99577 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.14235 0.35870 0.16279 0.33615 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 14 type 2
+15 -1
+0.71429 0.00000 0.14286 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00707 0.00000 0.99222 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.94770 0.00495 0.01979 0.02756 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 15 type 2
+16 -1
+0.87500 0.00000 0.06250 0.00000 0.06250 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11886 0.00000 0.88043 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.35562 0.01991 0.56899 0.05548 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 16 type 2
+17 -1
+0.98901 0.00000 0.00549 0.00000 0.00549 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.55609 0.00000 0.44310 0.00000 0.00081 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10887 0.21290 0.03871 0.63952 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 17 type 2
+18 -1
+0.06552 0.00000 0.93333 0.00000 0.00115 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00544 0.00000 0.75318 0.00000 0.24138 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00725 0.00000 0.96377 0.00000 0.02899 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.09353 0.25180 0.02158 0.63309 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07790 0.23551 0.01630 0.67029 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 18 type 2
+19 -1
+0.96721 0.00000 0.01639 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00074 0.00000 0.99853 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09111 0.03086 0.83248 0.04555 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 19 type 2
+20 -1
+0.96721 0.00000 0.01639 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.13750 0.00000 0.86176 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05217 0.03527 0.83174 0.08082 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 20 type 2
+21 -1
+0.01215 0.00000 0.96761 0.00000 0.02024 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00341 0.00000 0.50681 0.00000 0.48978 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00789 0.00000 0.75526 0.00000 0.23684 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16689 0.16032 0.06965 0.60315 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09702 0.10298 0.04426 0.75574 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 21 type 2
+22 -1
+0.07692 0.00000 0.84615 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99858 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.87722 0.01490 0.06388 0.04400 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 22 type 2
+23 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.41720 0.01903 0.45877 0.10500 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 23 type 2
+24 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.52572 0.17054 0.20860 0.09514 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 24 type 2
+25 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.29457 0.05708 0.61663 0.03171 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 25 type 2
+26 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00212 0.00000 0.99718 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02748 0.73502 0.04228 0.19521 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 26 type 2
+27 -1
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99435 0.00000 0.00494 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11111 0.00000 0.77778 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.45730 0.03529 0.41637 0.09104 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 27 type 2
+28 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99788 0.00000 0.00141 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.20000 0.20000 0.40000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15927 0.34602 0.13178 0.36293 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 28 type 2
+29 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16209 0.35588 0.10641 0.37562 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 29 type 2
+30 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99788 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.24806 0.14094 0.37068 0.24031 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 30 type 2
+31 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09520 0.21227 0.65938 0.03315 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 31 type 2
+32 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.35518 0.25300 0.21424 0.17759 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 32 type 2
+33 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99718 0.00000 0.00212 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.50000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.02114 0.60395 0.00634 0.36857 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 33 type 2
+34 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00070 0.02607 0.00070 0.97252 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 34 type 2
+35 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05144 0.18323 0.33756 0.42777 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 35 type 2
+36 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30444 0.19662 0.20789 0.29105 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 36 type 2
+37 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25793 0.24172 0.20648 0.29387 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 37 type 2
+38 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.97179 0.00000 0.02750 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.05485 0.00000 0.94374 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.31180 0.18680 0.21910 0.28230 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.78365 0.00141 0.21071 0.00423 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 38 type 2
+39 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.67935 0.17970 0.02467 0.11628 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 39 type 2
+40 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.12333 0.20789 0.29810 0.37068 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 40 type 2
+41 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01762 0.60465 0.22058 0.15715 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 41 type 2
+42 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23749 0.37209 0.14165 0.24877 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 42 type 2
+43 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00212 0.00000 0.99577 0.00000 0.00212 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.50000 0.16667 0.16667 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.33263 0.08598 0.38337 0.19803 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 43 type 2
+44 -1
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.32816 0.07904 0.35992 0.23289 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 44 type 2
+45 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.14104 0.00000 0.85825 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.48273 0.13531 0.12333 0.25863 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 45 type 2
+46 -1
+0.00990 0.00000 0.98515 0.00000 0.00495 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.97867 0.00000 0.01887 0.00000 0.00246 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.50000 0.16667 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.28033 0.02787 0.52295 0.16885 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 46 type 2
+47 -1
+0.99833 0.00000 0.00084 0.00000 0.00084 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04000 0.00000 0.95556 0.00000 0.00444 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.15487 0.10619 0.62832 0.11062 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 47 type 2
+48 -1
+0.99834 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03687 0.00000 0.95853 0.00000 0.00461 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.14220 0.26147 0.28440 0.31193 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 48 type 2
+49 -1
+0.99835 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.30952 0.00000 0.67619 0.00000 0.01429 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.33333 0.16667 0.33333 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.23697 0.36967 0.18009 0.21327 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 49 type 2
+50 -1
+0.99843 0.00000 0.00078 0.00000 0.00078 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.46575 0.00000 0.52740 0.00000 0.00685 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.08844 0.38095 0.23129 0.29932 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 50 type 2
+51 -1
+0.99851 0.00000 0.00075 0.00000 0.00075 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.32911 0.00000 0.65823 0.00000 0.01266 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.25000 0.10000 0.30000 0.35000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 51 type 2
+52 -1
+0.99854 0.00000 0.00073 0.00000 0.00073 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.62963 0.00000 0.35185 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.29091 0.20000 0.23636 0.27273 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 52 type 2
+53 -1
+0.85857 0.00000 0.14071 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04762 0.00000 0.90476 0.00000 0.04762 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04545 0.31818 0.13636 0.50000 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 53 type 2
+54 -1
+0.99834 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00922 0.00000 0.98618 0.00000 0.00461 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.21101 0.09174 0.24312 0.45413 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 54 type 2
+55 -1
+0.99834 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06019 0.00000 0.93519 0.00000 0.00463 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.27650 0.16590 0.05530 0.50230 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 55 type 2
+56 -1
+0.99836 0.00000 0.00082 0.00000 0.00082 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.37745 0.00000 0.60294 0.00000 0.01961 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.50000 0.00000 0.37500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.44444 0.11111 0.11111 0.33333 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.45854 0.09756 0.04878 0.39512 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 56 type 2
+57 -1
+0.99227 0.00000 0.00696 0.00000 0.00077 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.69531 0.00000 0.01562 0.00000 0.28906 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.71795 0.00000 0.25641 0.00000 0.02564 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.52500 0.07500 0.12500 0.27500 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36434 0.11628 0.27132 0.24806 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 57 type 2
+58 -1
+0.97500 0.00000 0.02429 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04762 0.00000 0.90476 0.00000 0.04762 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.36364 0.04545 0.45455 0.13636 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 58 type 2
+59 -1
+0.98025 0.00000 0.01902 0.00000 0.00073 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03704 0.00000 0.94444 0.00000 0.01852 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.14545 0.14545 0.38182 0.32727 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 59 type 2
+60 -1
+0.94862 0.00000 0.05063 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01282 0.00000 0.97436 0.00000 0.01282 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.29114 0.20253 0.15190 0.35443 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 60 type 2
+61 -1
+0.94828 0.00000 0.05094 0.00000 0.00078 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00690 0.00000 0.97241 0.00000 0.02069 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.00000 0.60000 0.00000 0.20000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.16667 0.16667 0.16667 0.50000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.22603 0.19863 0.43836 0.13699 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 61 type 2
+62 -1
+0.99257 0.00000 0.00660 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00478 0.00000 0.99043 0.00000 0.00478 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.19048 0.16190 0.38571 0.26190 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 62 type 2
+63 -1
+0.99834 0.00000 0.00083 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00463 0.00000 0.99074 0.00000 0.00463 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.30876 0.26267 0.26267 0.16590 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 63 type 2
+64 -1
+0.00747 0.00000 0.99170 0.00000 0.00083 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.28241 0.00000 0.71296 0.00000 0.00463 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.07834 0.58065 0.14286 0.19816 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 64 type 2
+65 -1
+0.01408 0.00000 0.95775 0.00000 0.02817 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00148 0.00000 0.45259 0.00000 0.54593 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00133 0.00000 0.98400 0.00000 0.01467 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06525 0.07989 0.05060 0.80426 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.31384 0.02147 0.53442 0.13027 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 65 type 2
+66 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05642 0.57546 0.02186 0.34626 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 66 type 2
+67 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.28259 0.15574 0.49331 0.06836 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 67 type 2
+68 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17548 0.32699 0.20296 0.29457 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 68 type 2
+69 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00494 0.00000 0.99013 0.00000 0.00494 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11111 0.00000 0.77778 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.10000 0.10000 0.40000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.28823 0.14306 0.39605 0.17266 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 69 type 2
+70 -1
+0.77778 0.00000 0.11111 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.04462 0.00000 0.95467 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17693 0.01982 0.75584 0.04742 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 70 type 2
+71 -1
+0.36620 0.00000 0.61972 0.00000 0.01408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.02519 0.00000 0.97407 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05403 0.01776 0.91118 0.01702 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 71 type 2
+72 -1
+0.04918 0.00000 0.93443 0.00000 0.01639 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00147 0.00000 0.99706 0.00000 0.00147 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.40000 0.20000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05878 0.03159 0.01323 0.89640 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 72 type 2
+73 -1
+0.16667 0.00000 0.66667 0.00000 0.16667 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99788 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.03955 0.02401 0.04802 0.88842 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 73 type 2
+74 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99788 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.10085 0.80889 0.01763 0.07264 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 74 type 2
+75 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00635 0.00000 0.98941 0.00000 0.00423 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.22222 0.44444 0.22222 0.11111 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.42666 0.02962 0.50000 0.04372 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 75 type 2
+76 -1
+0.81818 0.00000 0.09091 0.00000 0.09091 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.03404 0.00000 0.96525 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.91850 0.02268 0.01701 0.04181 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 76 type 2
+77 -1
+0.93103 0.00000 0.05172 0.00000 0.01724 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.06310 0.00000 0.92517 0.00000 0.01174 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.05000 0.00000 0.80000 0.00000 0.15000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.42857 0.23810 0.14286 0.19048 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.46114 0.08284 0.21334 0.24267 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 77 type 2
+78 -1
+0.37589 0.00000 0.61702 0.00000 0.00709 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.01328 0.00000 0.98594 0.00000 0.00078 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05308 0.13973 0.01015 0.79703 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 78 type 2
+79 -1
+0.09859 0.00000 0.88732 0.00000 0.01408 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00074 0.00000 0.99852 0.00000 0.00074 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.01999 0.91710 0.00740 0.05551 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 79 type 2
+80 -1
+0.11111 0.00000 0.77778 0.00000 0.11111 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99788 0.00000 0.00142 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.40000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.04317 0.75442 0.02194 0.18047 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 80 type 2
+81 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.14235 0.37703 0.16561 0.31501 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 81 type 2
+82 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99506 0.00000 0.00423 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.00000 0.75000 0.00000 0.12500 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.11111 0.66667 0.11111 0.11111 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.24665 0.15645 0.35659 0.24031 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 82 type 2
+83 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00141 0.00000 0.99506 0.00000 0.00353 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.14286 0.00000 0.71429 0.00000 0.14286 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.12500 0.37500 0.12500 0.37500 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.05567 0.37773 0.16843 0.39817 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 83 type 2
+84 -1
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.20945 0.35755 0.02962 0.40339 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 84 type 2
+85 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.28964 0.19873 0.26004 0.25159 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 85 type 2
+86 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.16913 0.21564 0.27907 0.33615 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 86 type 2
+87 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.19309 0.30655 0.25863 0.24172 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 87 type 2
+88 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.17477 0.30514 0.29246 0.22763 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 88 type 2
+89 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00071 0.00000 0.99859 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.11910 0.37984 0.33686 0.16420 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 89 type 2
+90 -1
+0.33333 0.00000 0.33333 0.00000 0.33333 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.00846 0.00000 0.99013 0.00000 0.00141 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.00000 0.50000 0.00000 0.25000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.20000 0.40000 0.20000 0.20000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.09514 0.58280 0.07893 0.24313 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
+### node 90 type 2
+-1 -1
+0.92308 0.00000 0.00000 0.00000 0.07692 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.99929 0.00000 0.00000 0.00000 0.00071 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.50000 0.00000 0.00000 0.00000 0.50000 0.00000
+0.00000 0.00000 0.00000 0.00000 0.00000 0.00000
+0.25000 0.25000 0.25000 0.25000 # INSL
+0.00000 0.00000 0.00000 0.00000 # INSR
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.00000 0.00000 0.00000 0.00000 # MATP
+0.56676 0.06605 0.22443 0.14276 # MATL
+0.00000 0.00000 0.00000 0.00000 # MATR
diff --git a/TRNAinf-arch-3h-nc.cm b/TRNAinf-arch-3h-nc.cm
new file mode 100644
index 0000000..17d29b2
--- /dev/null
+++ b/TRNAinf-arch-3h-nc.cm
@@ -0,0 +1,242 @@
+INFERNAL-1 [1.0.2]
+NAME tRNA1415G-arch-3h
+STATES 177
+NODES 50
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 62
+EFFNSEQ 62.000
+CLEN 56
+BCOM cmbuild -F --rf --enone TRNAinf-arch-3h-nc.cm trna1415G-arch-3h.sto
+BDATE Thu Mar 24 01:55:40 2011
+NULL 0.000 0.000 0.000 0.000
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -11.123 -11.330 -0.003 -9.744
+ IL 1 1 2 1 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 1 ]
+ ML 3 2 3 5 3 -12.038 -0.001 -10.692 1.733 -1.353 -2.605 -3.067
+ D 4 2 3 5 3 -6.174 -1.687 -0.566
+ IL 5 5 3 5 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 2 ]
+ ML 6 5 3 8 3 -12.038 -0.001 -10.692 -2.347 0.289 0.562 0.144
+ D 7 5 3 8 3 -6.174 -1.687 -0.566
+ IL 8 8 3 8 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 3 ]
+ ML 9 8 3 11 3 -12.038 -0.001 -10.692 -4.964 1.656 -0.548 -2.921
+ D 10 8 3 11 3 -6.174 -1.687 -0.566
+ IL 11 11 3 11 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 4 ]
+ ML 12 11 3 14 3 -12.038 -0.001 -10.692 -0.930 1.410 -1.065 -1.555
+ D 13 11 3 14 3 -6.174 -1.687 -0.566
+ IL 14 14 3 14 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 5 ]
+ ML 15 14 3 17 3 -12.038 -0.001 -10.692 -0.276 -1.411 0.943 -0.193
+ D 16 14 3 17 3 -6.174 -1.687 -0.566
+ IL 17 17 3 17 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 6 ]
+ ML 18 17 3 20 3 -12.038 -0.001 -10.692 -1.105 -1.526 1.453 -1.152
+ D 19 17 3 20 3 -6.174 -1.687 -0.566
+ IL 20 20 3 20 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 7 ]
+ ML 21 20 3 23 3 -12.038 -0.301 -2.409 0.500 -0.822 -1.702 0.776
+ D 22 20 3 23 3 -6.174 -1.687 -0.566
+ IL 23 23 3 23 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 8 ]
+ ML 24 23 3 26 3 -12.039 -1.980 -0.422 -0.855 -1.776 1.446 -1.219
+ D 25 23 3 26 3 -9.851 -4.965 -0.049
+ IL 26 26 3 26 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 9 ]
+ MR 27 26 3 29 3 -10.064 -0.006 -8.382 1.949 -4.726 -4.423 -4.171
+ D 28 26 3 29 3 -13.110 -8.288 -0.005
+ IR 29 29 3 29 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 10 ]
+ MR 30 29 3 32 3 -10.064 -0.006 -8.382 -3.748 1.922 -4.677 -3.364
+ D 31 29 3 32 3 -13.110 -5.564 -0.031
+ IR 32 32 3 32 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 11 ]
+ MR 33 32 3 35 3 -10.161 -0.005 -8.479 -3.418 1.846 -4.418 -1.918
+ D 34 32 3 35 3 -13.084 -0.009 -7.314
+ IR 35 35 3 35 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 12 ]
+ MR 36 35 3 38 3 -12.337 -0.001 -10.655 1.298 -2.392 -0.132 -1.189
+ D 37 35 3 38 3 -6.390 -1.568 -0.620
+ IR 38 38 3 38 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 13 ]
+ MR 39 38 3 41 3 -12.337 -0.001 -10.655 -4.995 1.846 -3.353 -1.857
+ D 40 38 3 41 3 -6.390 -1.568 -0.620
+ IR 41 41 3 41 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 14 ]
+ MR 42 41 3 44 3 -12.337 -0.001 -10.655 -1.818 0.629 1.086 -4.408
+ D 43 41 3 44 3 -6.390 -1.568 -0.620
+ IR 44 44 3 44 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 15 ]
+ MR 45 44 3 47 3 -12.337 -0.001 -10.655 -2.285 0.091 0.884 -0.177
+ D 46 44 3 47 3 -6.390 -1.568 -0.620
+ IR 47 47 3 47 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 16 ]
+ MR 48 47 3 50 3 -12.337 -0.001 -10.655 -1.472 0.682 0.722 -1.372
+ D 49 47 3 50 3 -6.390 -1.568 -0.620
+ IR 50 50 3 50 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 17 ]
+ MR 51 50 3 53 3 -12.337 -0.001 -10.655 -1.320 -0.069 1.170 -1.337
+ D 52 50 3 53 3 -6.390 -1.568 -0.620
+ IR 53 53 3 53 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 18 ]
+ MR 54 53 3 56 3 -12.337 -0.001 -10.655 -1.932 0.953 0.576 -1.685
+ D 55 53 3 56 3 -6.390 -1.568 -0.620
+ IR 56 56 3 56 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 19 ]
+ MR 57 56 3 59 2 -12.680 -0.000 -2.173 1.662 -5.647 -0.750
+ D 58 56 3 59 2 -4.432 -0.068
+ IR 59 59 3 59 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ BIF 20 ]
+ B 60 59 3 61 117
+ [ BEGL 21 ]
+ S 61 60 1 62 4 -1.996 -10.099 -9.506 -0.421
+ [ MATP 22 ]
+ MP 62 61 1 66 6 -10.171 -10.110 -0.010 -8.886 -9.166 -9.561 -5.649 -4.417 -6.425 0.020 -6.225 -5.932 1.824 -5.803 -5.561 3.127 -5.225 0.697 -0.657 -5.465 -2.206 -4.680
+ ML 63 61 1 66 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 64 61 1 66 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 65 61 1 66 6 -15.585 -14.283 -10.080 -10.762 -10.779 -0.003
+ IL 66 66 5 66 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 67 67 6 67 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 23 ]
+ MP 68 67 6 72 6 -10.171 -10.110 -0.010 -8.886 -9.166 -9.561 -5.621 -4.588 -6.330 1.280 -5.771 -6.400 2.432 -5.734 -5.766 2.704 -5.441 -1.709 -0.246 -5.783 -1.811 -4.560
+ ML 69 67 6 72 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 70 67 6 72 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 71 67 6 72 6 -15.585 -14.283 -10.080 -10.762 -10.779 -0.003
+ IL 72 72 5 72 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 73 73 6 73 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 24 ]
+ MP 74 73 6 78 6 -10.171 -10.110 -0.900 -8.886 -9.166 -1.125 -6.129 -6.250 -4.854 0.389 -4.229 -5.478 3.449 -5.370 -7.275 -1.127 -4.944 -2.977 0.979 -6.582 -0.046 -4.894
+ ML 75 73 6 78 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 76 73 6 78 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 77 73 6 78 6 -15.585 -14.283 -10.080 -10.762 -10.779 -0.003
+ IL 78 78 5 78 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 79 79 6 79 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 25 ]
+ MP 80 79 6 84 6 -9.289 -9.228 -0.019 -8.005 -8.284 -8.679 -4.214 -4.442 -4.294 0.299 -3.107 -4.987 2.767 -4.373 -4.726 0.306 -4.554 -1.405 2.351 -4.451 -0.576 -3.249
+ ML 81 79 6 84 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 82 79 6 84 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 83 79 6 84 6 -15.816 -14.515 -10.312 -10.994 -11.011 -0.003
+ IL 84 84 5 84 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 85 85 6 85 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 26 ]
+ MP 86 85 6 90 6 -9.289 -9.228 -0.546 -8.005 -8.284 -1.713 -5.691 -5.607 -4.274 -0.974 -3.824 -4.920 3.681 -4.789 -6.659 -0.927 -4.290 -2.571 0.204 -6.169 -1.090 -4.545
+ ML 87 85 6 90 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 88 85 6 90 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 89 85 6 90 6 -15.816 -14.515 -10.312 -10.994 -11.011 -0.003
+ IL 90 90 5 90 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 91 91 6 91 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 27 ]
+ MP 92 91 6 96 6 -8.769 -8.708 -0.027 -7.485 -7.765 -8.160 -3.305 -2.766 -3.576 1.411 -2.869 -4.048 1.948 -3.248 -3.354 2.027 -3.320 -0.140 1.330 -3.299 -0.204 -2.459
+ ML 93 91 6 96 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 94 91 6 96 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 95 91 6 96 6 -15.891 -14.590 -10.387 -11.069 -11.086 -0.002
+ IL 96 96 5 96 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 97 97 6 97 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 28 ]
+ MP 98 97 6 102 4 -5.802 -6.009 -0.120 -4.423 -3.305 -2.766 -3.576 1.411 -2.869 -4.048 1.948 -3.248 -3.354 2.027 -3.320 -0.140 1.330 -3.299 -0.204 -2.459
+ ML 99 97 6 102 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 100 97 6 102 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 101 97 6 102 4 -11.314 -3.715 -3.087 -0.312
+ IL 102 102 5 102 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 103 103 6 103 3 -3.405 -0.166 -6.105 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 104 103 6 106 3 -9.832 -0.006 -8.487 -2.477 -3.877 1.746 -1.329
+ D 105 103 6 106 3 -13.116 -8.629 -0.004
+ IL 106 106 3 106 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 30 ]
+ ML 107 106 3 109 3 -9.832 -0.006 -8.487 -3.083 -1.352 -3.863 1.775
+ D 108 106 3 109 3 -13.116 -8.629 -0.004
+ IL 109 109 3 109 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 31 ]
+ ML 110 109 3 112 3 -9.832 -0.190 -3.034 1.163 -0.793 -2.299 -0.028
+ D 111 109 3 112 3 -13.116 -8.629 -0.004
+ IL 112 112 3 112 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 32 ]
+ ML 113 112 3 115 2 * 0.000 0.101 -0.716 0.992 -1.599
+ D 114 112 3 115 2 * 0.000
+ IL 115 115 3 115 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 33 ]
+ E 116 115 3 -1 0
+ [ BEGR 34 ]
+ S 117 60 1 118 3 -12.038 -0.040 -5.210
+ IL 118 118 2 118 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 119 118 2 121 3 -0.533 -1.698 -10.653 0.645 -2.848 0.755 -0.714
+ D 120 118 2 121 3 -0.309 -4.041 -2.920
+ IL 121 121 3 121 3 -4.728 -0.058 -9.003 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 122 121 3 124 5 -10.983 -0.003 -10.799 -11.011 -11.902 -6.177 1.986 -6.986 -5.896
+ D 123 121 3 124 5 -4.959 -0.803 -4.221 -2.596 -2.508
+ IL 124 124 3 124 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 37 ]
+ MP 125 124 3 129 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -8.144 -7.028 -8.755 0.269 -7.720 -8.935 2.569 -8.033 -8.364 2.622 -7.984 0.004 -0.514 -8.397 -0.060 -6.794
+ ML 126 124 3 129 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 127 124 3 129 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 128 124 3 129 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 129 129 5 129 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 130 130 6 130 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 38 ]
+ MP 131 130 6 135 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -8.111 -7.809 -8.067 0.611 -6.468 -8.756 3.158 -7.793 -8.648 1.258 -8.359 -0.729 1.162 -8.204 -1.926 -6.451
+ ML 132 130 6 135 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 133 130 6 135 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 134 130 6 135 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 135 135 5 135 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 136 136 6 136 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 39 ]
+ MP 137 136 6 141 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -7.678 -6.283 -8.440 0.411 -7.868 -7.575 1.114 -7.776 -7.500 3.502 -7.111 -3.486 -0.775 -7.280 -1.185 -6.568
+ ML 138 136 6 141 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 139 136 6 141 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 140 136 6 141 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 141 141 5 141 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 142 142 6 142 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 40 ]
+ MP 143 142 6 147 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -10.070 -5.376 -10.897 -0.970 -9.838 -5.571 -3.691 -9.349 -6.533 3.890 -6.002 -3.136 -1.502 -5.685 -5.851 -7.907
+ ML 144 142 6 147 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 145 142 6 147 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 146 142 6 147 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 147 147 5 147 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 148 148 6 148 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 41 ]
+ MP 149 148 6 153 4 -11.123 -11.330 -0.003 -9.744 -11.170 -6.905 -11.033 -3.627 -10.757 -7.380 -4.824 -9.431 -8.041 3.977 -7.551 -4.453 -4.613 -7.379 -6.287 -8.552
+ ML 150 148 6 153 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 151 148 6 153 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 152 148 6 153 4 -4.568 -4.250 -2.265 -0.520
+ IL 153 153 5 153 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 154 154 6 154 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 42 ]
+ ML 155 154 6 157 3 -12.038 -0.001 -10.692 -5.986 -5.748 -6.637 1.984
+ D 156 154 6 157 3 -6.174 -1.687 -0.566
+ IL 157 157 3 157 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 43 ]
+ ML 158 157 3 160 3 -12.038 -0.001 -10.692 -5.160 -3.461 -5.910 1.950
+ D 159 157 3 160 3 -6.174 -1.687 -0.566
+ IL 160 160 3 160 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 161 160 3 163 3 -12.038 -0.001 -10.692 -5.515 1.965 -4.489 -5.093
+ D 162 160 3 163 3 -6.174 -1.687 -0.566
+ IL 163 163 3 163 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 45 ]
+ ML 164 163 3 166 3 -12.038 -0.001 -10.692 1.276 -7.518 0.646 -7.132
+ D 165 163 3 166 3 -6.174 -1.687 -0.566
+ IL 166 166 3 166 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 46 ]
+ ML 167 166 3 169 3 -12.038 -0.001 -10.692 1.985 -6.571 -6.091 -5.965
+ D 168 166 3 169 3 -6.174 -1.687 -0.566
+ IL 169 169 3 169 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 47 ]
+ ML 170 169 3 172 3 -12.038 -0.001 -10.692 1.773 -4.394 -1.489 -2.478
+ D 171 169 3 172 3 -6.174 -1.687 -0.566
+ IL 172 172 3 172 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 48 ]
+ ML 173 172 3 175 2 * 0.000 -5.125 -1.809 -5.879 1.875
+ D 174 172 3 175 2 * 0.000
+ IL 175 175 3 175 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 49 ]
+ E 176 175 3 -1 0
+//
diff --git a/TRNAinf-arch-5h-nc.cm b/TRNAinf-arch-5h-nc.cm
new file mode 100644
index 0000000..6feb6e1
--- /dev/null
+++ b/TRNAinf-arch-5h-nc.cm
@@ -0,0 +1,165 @@
+INFERNAL-1 [1.0.2]
+NAME tRNA1415G-arch-5h
+STATES 115
+NODES 35
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 62
+EFFNSEQ 62.000
+CLEN 37
+BCOM cmbuild -F --rf --enone TRNAinf-arch-5h-nc.cm trna1415G-arch-5h.sto
+BDATE Thu Mar 24 00:53:49 2011
+NULL 0.000 0.000 0.000 0.000
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -4.683 -3.095 -0.247 -9.744
+ IL 1 1 2 1 4 -3.700 -4.384 -0.207 -6.869 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -0.088 -4.096 -10.593 0.000 0.000 0.000 0.000
+ [ MATL 1 ]
+ ML 3 2 3 5 3 -12.038 -0.001 -10.692 -1.586 -3.140 1.814 -4.771
+ D 4 2 3 5 3 -6.174 -1.687 -0.566
+ IL 5 5 3 5 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 2 ]
+ ML 6 5 3 8 3 -12.038 -0.001 -10.692 -3.948 1.018 0.698 -1.793
+ D 7 5 3 8 3 -6.174 -1.687 -0.566
+ IL 8 8 3 8 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 3 ]
+ ML 9 8 3 11 3 -12.038 -0.001 -10.692 -1.229 0.886 0.598 -2.239
+ D 10 8 3 11 3 -6.174 -1.687 -0.566
+ IL 11 11 3 11 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 4 ]
+ ML 12 11 3 14 3 -12.038 -0.001 -10.692 -1.575 0.642 0.813 -1.530
+ D 13 11 3 14 3 -6.174 -1.687 -0.566
+ IL 14 14 3 14 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 5 ]
+ ML 15 14 3 17 3 -12.038 -0.001 -10.692 -1.287 0.987 -0.049 -0.642
+ D 16 14 3 17 3 -6.174 -1.687 -0.566
+ IL 17 17 3 17 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 6 ]
+ ML 18 17 3 20 3 -12.038 -0.001 -10.692 -1.864 0.364 0.992 -1.153
+ D 19 17 3 20 3 -6.174 -1.687 -0.566
+ IL 20 20 3 20 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 7 ]
+ ML 21 20 3 23 3 -12.038 -0.001 -10.692 -0.880 -5.508 1.688 -2.233
+ D 22 20 3 23 3 -6.174 -1.687 -0.566
+ IL 23 23 3 23 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 8 ]
+ ML 24 23 3 26 3 -12.038 -0.046 -4.993 -5.135 -2.836 -5.888 1.932
+ D 25 23 3 26 3 -6.174 -1.687 -0.566
+ IL 26 26 3 26 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 9 ]
+ ML 27 26 3 29 3 -7.402 -0.009 -10.610 0.964 -1.828 0.640 -2.262
+ D 28 26 3 29 3 -7.590 -0.155 -3.373
+ IL 29 29 3 29 3 -2.288 -0.412 -4.526 0.000 0.000 0.000 0.000
+ [ MATR 10 ]
+ MR 30 29 3 32 3 -12.337 -0.001 -10.655 1.068 -7.542 0.919 -7.099
+ D 31 29 3 32 3 -6.390 -1.568 -0.620
+ IR 32 32 3 32 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 11 ]
+ MR 33 32 3 35 3 -12.337 -0.001 -10.655 -0.357 0.237 -0.267 0.274
+ D 34 32 3 35 3 -6.390 -1.568 -0.620
+ IR 35 35 3 35 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 12 ]
+ MR 36 35 3 38 3 -12.337 -0.001 -10.655 0.375 -0.433 -0.156 0.091
+ D 37 35 3 38 3 -6.390 -1.568 -0.620
+ IR 38 38 3 38 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 13 ]
+ MR 39 38 3 41 3 -12.337 -0.001 -10.655 -3.411 0.312 0.286 0.531
+ D 40 38 3 41 3 -6.390 -1.568 -0.620
+ IR 41 41 3 41 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 14 ]
+ MR 42 41 3 44 3 -12.337 -0.001 -10.655 -5.986 -5.748 -6.637 1.984
+ D 43 41 3 44 3 -6.390 -1.568 -0.620
+ IR 44 44 3 44 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 15 ]
+ MR 45 44 3 47 3 -12.337 -0.001 -10.655 -5.164 1.722 -6.170 -0.600
+ D 46 44 3 47 3 -6.390 -1.568 -0.620
+ IR 47 47 3 47 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 16 ]
+ MR 48 47 3 50 3 -12.337 -0.001 -10.655 0.149 0.596 0.239 -2.327
+ D 49 47 3 50 3 -6.390 -1.568 -0.620
+ IR 50 50 3 50 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 17 ]
+ MR 51 50 3 53 3 -12.337 -0.001 -10.655 -5.285 -0.484 1.698 -6.018
+ D 52 50 3 53 3 -6.390 -1.568 -0.620
+ IR 53 53 3 53 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 18 ]
+ MR 54 53 3 56 3 -12.337 -0.001 -10.655 -1.923 -1.069 1.510 -1.278
+ D 55 53 3 56 3 -6.390 -1.568 -0.620
+ IR 56 56 3 56 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 19 ]
+ MR 57 56 3 59 3 -12.337 -0.001 -10.655 -0.425 0.857 -0.820 -0.189
+ D 58 56 3 59 3 -6.390 -1.568 -0.620
+ IR 59 59 3 59 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 20 ]
+ MR 60 59 3 62 3 -12.337 -0.001 -10.655 -0.917 1.124 -1.360 -0.151
+ D 61 59 3 62 3 -6.390 -1.568 -0.620
+ IR 62 62 3 62 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 21 ]
+ MR 63 62 3 65 5 -10.983 -0.003 -10.799 -11.011 -11.902 -1.026 -3.111 1.626 -1.710
+ D 64 62 3 65 5 -5.352 -0.707 -2.978 -4.409 -2.404
+ IR 65 65 3 65 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 22 ]
+ MP 66 65 3 70 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -11.605 -8.575 -10.956 -4.707 -10.828 -10.953 0.337 -9.413 -9.651 3.395 -9.309 2.042 -4.901 -9.835 -6.207 -8.779
+ ML 67 65 3 70 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 68 65 3 70 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 69 65 3 70 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 70 70 5 70 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 71 71 6 71 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 23 ]
+ MP 72 71 6 76 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -9.991 -8.855 -9.655 -2.931 -7.749 -10.815 3.083 -8.867 -10.500 1.162 -9.938 -4.575 2.329 -10.539 -3.775 -7.618
+ ML 73 71 6 76 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 74 71 6 76 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 75 71 6 76 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 76 76 5 76 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 77 77 6 77 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 24 ]
+ MP 78 77 6 82 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -7.211 -0.735 -7.408 -2.193 -5.911 -8.103 2.742 -7.289 -7.702 1.482 -7.745 -1.111 2.337 -7.331 -3.200 -5.943
+ ML 79 77 6 82 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 80 77 6 82 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 81 77 6 82 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 82 82 5 82 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 83 83 6 83 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 25 ]
+ MP 84 83 6 88 4 -11.123 -11.330 -0.003 -9.744 -1.088 -1.107 -4.104 -0.621 -3.755 -1.503 2.196 -4.047 1.129 -2.407 -4.389 -3.050 -0.595 -1.174 1.350 1.626
+ ML 85 83 6 88 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 86 83 6 88 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 87 83 6 88 4 -4.568 -4.250 -2.265 -0.520
+ IL 88 88 5 88 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 89 89 6 89 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 90 89 6 92 3 -12.038 -0.001 -10.692 1.985 -6.571 -6.091 -5.965
+ D 91 89 6 92 3 -6.174 -1.687 -0.566
+ IL 92 92 3 92 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 27 ]
+ ML 93 92 3 95 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 94 92 3 95 3 -6.174 -1.687 -0.566
+ IL 95 95 3 95 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 28 ]
+ ML 96 95 3 98 3 -12.038 -0.290 -2.460 -2.109 1.017 -3.044 0.699
+ D 97 95 3 98 3 -6.174 -1.687 -0.566
+ IL 98 98 3 98 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 99 98 3 101 3 -0.333 -2.285 -10.404 -1.646 1.439 -4.503 -0.113
+ D 100 98 3 101 3 -11.042 -0.034 -5.434
+ IL 101 101 3 101 3 -6.165 -0.023 -8.865 0.000 0.000 0.000 0.000
+ [ MATL 30 ]
+ ML 102 101 3 104 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 103 101 3 104 3 -6.174 -1.687 -0.566
+ IL 104 104 3 104 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 31 ]
+ ML 105 104 3 107 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 106 104 3 107 3 -6.174 -1.687 -0.566
+ IL 107 107 3 107 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 32 ]
+ ML 108 107 3 110 3 -0.799 -1.236 -10.692 -0.779 0.341 -1.257 0.793
+ D 109 107 3 110 3 -6.174 -1.687 -0.566
+ IL 110 110 3 110 3 -1.405 -0.687 -9.355 0.000 0.000 0.000 0.000
+ [ MATL 33 ]
+ ML 111 110 3 113 2 * 0.000 1.943 -5.670 -3.237 -5.048
+ D 112 110 3 113 2 * 0.000
+ IL 113 113 3 113 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 34 ]
+ E 114 113 3 -1 0
+//
diff --git a/TRNAinf-arch-c.cm b/TRNAinf-arch-c.cm
new file mode 100644
index 0000000..6cc41fc
--- /dev/null
+++ b/TRNAinf-arch-c.cm
@@ -0,0 +1,415 @@
+INFERNAL-1 [1.0]
+NAME tRNA1415G-arch
+STATES 298
+NODES 79
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 62
+EFFNSEQ 62.000
+CLEN 93
+BCOM cmbuild --rf --enone TRNAinf-arch-nc.cm trna1415G-arch.sto
+BDATE Sun Feb 8 16:46:36 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/TRNAinf-arch.hfile --exp-sfile cmcalibrate_files/TRNAinf-arch.sfile --exp-qqfile cmcalibrate_files/TRNAinf-arch.qqfile --exp-ffile cmcalibrate_files/TRNAinf-arch.ffile --fil-dfile cmcalibrate_files/TRNAinf-arch.dfile -s 208 TRNAinf-arch-c.cm
+CDATE Sun Feb 8 19:56:48 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.79080 -6.05377 1.74701 1500000 537353 0.002094
+E-GC 0 0.34092 -36.60830 -23.07041 1500000 37885 0.009898
+E-LI 0 0.68252 -7.04406 1.91352 1500000 508509 0.002212
+E-GI 0 0.35486 -32.60887 -19.71497 1500000 36405 0.010301
+E-LV 0 0.74538 -0.99223 3.70630 48670000 121144 0.030131
+E-GV 0 0.32837 -22.22404 -8.21495 48670000 121066 0.010050
+E-LF 0 0.66040 -0.10168 5.20152 48670000 121149 0.030130
+E-GF 0 0.35058 -18.76218 -5.63802 48670000 121181 0.010041
+FT-LC 27 0.99500 10000 1500000 0
+ 27.834 27.834 26.7192 26.2711 25.3709 7.0174 4.96286 3.46051 2.95227 2.75284 1.2807 1.15246 0.960678 0.684234 0.486205 0.320843 0.225312 0.14124 0.107615 0.1057 0.0808781 0.0808781 0.0808781 0.0806581 0.07573 0.0546174 8.30129e-17
+ 1343.66 1171.2 948.726 815.033 694.195 572.823 472.048 423.594 258.645 217.838 174.143 153.304 134.958 111.289 93.36 77.2409 62.5272 49.1992 43.5986 30.5208 22.6144 18.4644 16.591 14.0104 11.7766 9.60599 0.960599
+FT-LI 27 0.99500 10000 1500000 0
+ 51.723 49.9161 47.7457 46.4376 40.6566 14.531 9.99927 7.44873 7.12282 3.92067 3.62885 3.10429 2.00265 1.79171 1.38061 0.819573 0.541235 0.509414 0.334516 0.334516 0.334516 0.292453 0.239123 0.238371 0.205372 0.149049 2.89719e-14
+ 1343.66 1171.2 948.726 815.033 694.195 572.823 472.048 423.594 258.645 217.838 174.143 153.304 134.958 111.289 93.36 77.2409 62.5272 49.1992 43.5986 30.5208 22.6144 18.4644 16.591 14.0104 11.7766 9.60599 0.960599
+FT-GC 4 0.99500 10000 1500000 1
+ 1.54861e-05 1.06157e-05 9.83182e-06 3.29077e-07
+ 2.89211 1.22643 0.904344 0.754031
+FT-GI 4 0.99500 10000 1500000 1
+ 1.43094e-05 1.163e-05 2.50222e-06 4.25207e-07
+ 2.89211 1.22643 0.904344 0.754031
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -4.693 -12.169 -2.552 -0.339
+ IL 1 1 2 1 4 -4.509 -6.011 -0.869 -1.348 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 1 ]
+ MR 3 2 3 5 3 -9.983 -0.006 -8.301 1.945 -4.637 -4.343 -4.086
+ D 4 2 3 5 3 -13.130 -8.308 -0.005
+ IR 5 5 3 5 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 2 ]
+ MR 6 5 3 8 3 -9.983 -0.006 -8.301 -3.682 1.918 -4.609 -3.302
+ D 7 5 3 8 3 -13.130 -5.234 -0.039
+ IR 8 8 3 8 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 3 ]
+ MR 9 8 3 11 3 -10.117 -0.005 -8.435 -3.307 1.818 -4.292 -1.633
+ D 10 8 3 11 3 -13.096 -0.009 -7.326
+ IR 11 11 3 11 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 4 ]
+ MR 12 11 3 14 5 -10.983 -0.003 -10.799 -11.011 -11.902 1.338 -2.349 -0.204 -1.296
+ D 13 11 3 14 5 -5.352 -0.707 -2.978 -4.409 -2.404
+ IR 14 14 3 14 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 5 ]
+ MP 15 14 3 19 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -10.015 -5.364 -10.853 0.082 -9.814 -5.560 -1.394 -9.328 -6.521 3.833 -5.990 -3.123 -3.626 -5.674 -5.827 -7.885
+ ML 16 14 3 19 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 17 14 3 19 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 18 14 3 19 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 19 19 5 19 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 20 20 6 20 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 6 ]
+ MP 21 20 6 25 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -10.632 -8.947 -10.202 -3.165 -8.192 -11.711 3.044 -9.086 -10.671 2.689 -10.196 -4.740 0.111 -10.978 -4.045 -7.887
+ ML 22 20 6 25 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 23 20 6 25 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 24 20 6 25 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 25 25 5 25 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 26 26 6 26 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 7 ]
+ MP 27 26 6 31 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -9.177 -7.906 -9.453 0.514 -7.789 -9.963 2.919 -8.555 -9.513 2.009 -9.037 1.142 -0.585 -9.556 -3.603 -7.260
+ ML 28 26 6 31 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 29 26 6 31 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 30 26 6 31 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 31 31 5 31 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 32 32 6 32 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 8 ]
+ MP 33 32 6 37 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -8.554 -7.403 -9.035 0.230 -7.707 -9.342 2.679 -8.257 -8.824 2.735 -8.416 -1.500 0.206 -8.847 -2.137 -6.989
+ ML 34 32 6 37 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 35 32 6 37 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 36 32 6 37 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 37 37 5 37 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 38 38 6 38 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 9 ]
+ MP 39 38 6 43 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -9.759 -8.672 -9.457 0.501 -7.457 -10.407 3.004 -8.692 -10.488 1.962 -9.841 -4.353 0.655 -10.227 0.030 -7.343
+ ML 40 38 6 43 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 41 38 6 43 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 42 38 6 43 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 43 43 5 43 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 44 44 6 44 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 10 ]
+ MP 45 44 6 49 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -9.659 -8.313 -9.712 -0.053 -7.765 -10.458 2.430 -8.738 -10.144 2.976 -9.596 -4.281 -0.316 -10.185 -0.145 -7.409
+ ML 46 44 6 49 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 47 44 6 49 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 48 44 6 49 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 49 49 5 49 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 50 50 6 50 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 11 ]
+ MP 51 50 6 55 4 -11.123 -11.330 -0.003 -9.744 -8.521 -5.291 -9.442 0.877 -9.342 -5.635 -3.351 -8.517 -6.443 3.684 -5.942 -1.265 -0.596 -5.697 -5.329 -7.219
+ ML 52 50 6 55 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 53 50 6 55 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 54 50 6 55 4 -4.568 -4.250 -2.265 -0.520
+ IL 55 55 5 55 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 56 56 6 56 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 12 ]
+ ML 57 56 6 59 3 -12.038 -0.045 -5.039 -5.136 -2.870 -5.889 1.933
+ D 58 56 6 59 3 -6.174 -1.687 -0.566
+ IL 59 59 3 59 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 13 ]
+ ML 60 59 3 62 2 -7.097 -0.011 0.978 -1.766 0.622 -2.341
+ D 61 59 3 62 2 -8.802 -0.003
+ IL 62 62 3 62 2 -2.377 -0.309 0.000 0.000 0.000 0.000
+ [ BIF 14 ]
+ B 63 62 3 64 173
+ [ BEGL 15 ]
+ S 64 63 1 65 1 0.000
+ [ BIF 16 ]
+ B 65 64 1 66 116
+ [ BEGL 17 ]
+ S 66 65 1 67 4 -0.005 -10.099 -9.506 -10.146
+ [ MATP 18 ]
+ MP 67 66 1 71 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -11.570 -8.496 -10.949 -4.651 -10.793 -10.605 0.413 -9.410 -9.578 3.414 -9.225 1.967 -4.868 -9.682 -6.186 -8.764
+ ML 68 66 1 71 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 69 66 1 71 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 70 66 1 71 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 71 71 5 71 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 72 72 6 72 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 19 ]
+ MP 73 72 6 77 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -9.985 -8.856 -9.567 -2.938 -7.732 -10.684 3.126 -8.843 -10.515 1.108 -9.827 -4.582 2.278 -10.545 -3.773 -7.621
+ ML 74 72 6 77 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 75 72 6 77 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 76 72 6 77 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 77 77 5 77 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 78 78 6 78 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 20 ]
+ MP 79 78 6 83 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -7.146 -0.744 -7.345 -2.165 -5.854 -8.035 2.715 -7.237 -7.636 1.424 -7.681 -1.198 2.408 -7.261 -3.177 -5.890
+ ML 80 78 6 83 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 81 78 6 83 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 82 78 6 83 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 83 83 5 83 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 84 84 6 84 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 21 ]
+ MP 85 84 6 89 4 -11.123 -11.330 -0.003 -9.744 -1.059 -1.207 -4.350 -0.986 -3.920 -1.588 2.273 -4.321 1.158 -2.680 -4.660 -3.308 -0.663 -1.273 1.421 1.585
+ ML 86 84 6 89 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 87 84 6 89 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 88 84 6 89 4 -4.568 -4.250 -2.265 -0.520
+ IL 89 89 5 89 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 90 90 6 90 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 91 90 6 93 3 -12.038 -0.001 -10.692 1.985 -6.571 -6.091 -5.965
+ D 92 90 6 93 3 -6.174 -1.687 -0.566
+ IL 93 93 3 93 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 94 93 3 96 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 95 93 3 96 3 -6.174 -1.687 -0.566
+ IL 96 96 3 96 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 97 96 3 99 3 -12.038 -0.296 -2.433 -2.146 1.034 -3.180 0.692
+ D 98 96 3 99 3 -6.174 -1.687 -0.566
+ IL 99 99 3 99 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 100 99 3 102 3 -0.346 -2.234 -10.398 -1.682 1.432 -4.485 -0.080
+ D 101 99 3 102 3 -11.068 -0.034 -5.460
+ IL 102 102 3 102 3 -6.146 -0.024 -8.847 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 103 102 3 105 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 104 102 3 105 3 -6.174 -1.687 -0.566
+ IL 105 105 3 105 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 27 ]
+ ML 106 105 3 108 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 107 105 3 108 3 -6.174 -1.687 -0.566
+ IL 108 108 3 108 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 28 ]
+ ML 109 108 3 111 3 -0.829 -1.196 -10.692 -0.760 0.255 -1.274 0.850
+ D 110 108 3 111 3 -6.174 -1.687 -0.566
+ IL 111 111 3 111 3 -1.387 -0.699 -9.337 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 112 111 3 114 2 * 0.000 1.946 -5.710 -3.349 -5.078
+ D 113 111 3 114 2 * 0.000
+ IL 114 114 3 114 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 30 ]
+ E 115 114 3 -1 0
+ [ BEGR 31 ]
+ S 116 65 1 117 3 -12.038 -0.001 -10.692
+ IL 117 117 2 117 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 32 ]
+ ML 118 117 2 120 5 -10.983 -0.003 -10.799 -11.011 -11.902 -1.084 -3.136 1.640 -1.751
+ D 119 117 2 120 5 -4.959 -0.803 -4.221 -2.596 -2.508
+ IL 120 120 3 120 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 33 ]
+ MP 121 120 3 125 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -9.079 -8.455 -8.492 0.844 -6.990 -9.259 3.175 -8.246 -9.864 0.619 -8.762 -4.331 0.991 -9.411 0.647 -7.059
+ ML 122 120 3 125 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 123 120 3 125 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 124 120 3 125 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 125 125 5 125 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 126 126 6 126 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 34 ]
+ MP 127 126 6 131 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -6.404 -6.495 -6.524 1.364 -5.076 -7.122 2.869 -6.476 -6.870 0.667 -6.804 -0.571 1.686 -6.386 -0.999 -5.105
+ ML 128 126 6 131 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 129 126 6 131 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 130 126 6 131 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 131 131 5 131 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 132 132 6 132 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 35 ]
+ MP 133 132 6 137 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -8.148 -6.758 -8.804 0.185 -7.901 -8.135 1.101 -8.076 -8.017 3.430 -7.624 -3.768 0.806 -7.825 -3.760 -6.856
+ ML 134 132 6 137 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 135 132 6 137 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 136 132 6 137 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 137 137 5 137 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 138 138 6 138 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 36 ]
+ MP 139 138 6 143 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -11.083 -7.134 -10.902 -3.666 -10.264 -7.695 1.527 -9.382 -8.277 3.641 -7.797 -1.096 -4.303 -7.664 -5.886 -8.492
+ ML 140 138 6 143 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 141 138 6 143 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 142 138 6 143 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 143 143 5 143 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 144 144 6 144 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 37 ]
+ MP 145 144 6 149 4 -11.123 -11.330 -0.003 -9.744 -7.595 -6.513 -8.344 2.053 -7.762 -8.392 2.582 -7.691 -7.765 2.292 -7.411 -2.340 -0.674 -7.807 -3.597 -6.492
+ ML 146 144 6 149 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 147 144 6 149 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 148 144 6 149 4 -4.568 -4.250 -2.265 -0.520
+ IL 149 149 5 149 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 150 150 6 150 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 151 150 6 153 3 -12.038 -0.001 -10.692 -5.181 1.706 -6.181 -0.522
+ D 152 150 6 153 3 -6.174 -1.687 -0.566
+ IL 153 153 3 153 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 154 153 3 156 3 -12.038 -0.001 -10.692 -5.986 -5.748 -6.637 1.984
+ D 155 153 3 156 3 -6.174 -1.687 -0.566
+ IL 156 156 3 156 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 157 156 3 159 3 -12.038 -0.001 -10.692 -3.411 0.262 0.295 0.566
+ D 158 156 3 159 3 -6.174 -1.687 -0.566
+ IL 159 159 3 159 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 41 ]
+ ML 160 159 3 162 3 -12.038 -0.001 -10.692 0.373 -0.476 -0.090 0.066
+ D 161 159 3 162 3 -6.174 -1.687 -0.566
+ IL 162 162 3 162 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 42 ]
+ ML 163 162 3 165 3 -12.038 -0.001 -10.692 -0.414 0.235 -0.281 0.321
+ D 164 162 3 165 3 -6.174 -1.687 -0.566
+ IL 165 165 3 165 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 43 ]
+ ML 166 165 3 168 3 -3.068 -0.184 -10.692 1.104 -7.571 0.879 -7.144
+ D 167 165 3 168 3 -6.174 -1.687 -0.566
+ IL 168 168 3 168 3 -0.088 -4.101 -10.629 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 169 168 3 171 2 * 0.000 1.737 -1.357 -2.681 -3.044
+ D 170 168 3 171 2 * 0.000
+ IL 171 171 3 171 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 45 ]
+ E 172 171 3 -1 0
+ [ BEGR 46 ]
+ S 173 63 1 174 3 -12.038 -0.001 -10.692
+ IL 174 174 2 174 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 47 ]
+ ML 175 174 2 177 3 -12.038 -0.289 -2.463 0.488 -0.754 -1.483 0.720
+ D 176 174 2 177 3 -6.174 -1.687 -0.566
+ IL 177 177 3 177 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 48 ]
+ ML 178 177 3 180 2 -12.389 -0.000 -1.059 -1.734 1.473 -1.172
+ D 179 177 3 180 2 -9.877 -0.002
+ IL 180 180 3 180 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ BIF 49 ]
+ B 181 180 3 182 238
+ [ BEGL 50 ]
+ S 182 181 1 183 4 -2.034 -10.099 -9.506 -0.408
+ [ MATP 51 ]
+ MP 183 182 1 187 6 -10.137 -10.077 -0.010 -8.853 -9.133 -9.528 -5.612 -4.384 -6.384 0.059 -6.159 -5.891 1.866 -5.766 -5.528 3.126 -5.192 0.545 -0.600 -5.428 -2.152 -4.640
+ ML 184 182 1 187 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 185 182 1 187 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 186 182 1 187 6 -15.597 -14.295 -10.092 -10.774 -10.792 -0.003
+ IL 187 187 5 187 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 188 188 6 188 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 52 ]
+ MP 189 188 6 193 6 -10.137 -10.077 -0.010 -8.853 -9.133 -9.528 -5.672 -4.642 -6.349 1.199 -5.704 -6.447 2.476 -5.751 -5.823 2.690 -5.497 -1.722 -0.197 -5.834 -1.765 -4.574
+ ML 190 188 6 193 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 191 188 6 193 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 192 188 6 193 6 -15.597 -14.295 -10.092 -10.774 -10.792 -0.003
+ IL 193 193 5 193 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 194 194 6 194 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 53 ]
+ MP 195 194 6 199 6 -10.137 -10.077 -0.901 -8.853 -9.133 -1.125 -6.048 -6.135 -4.941 0.687 -4.221 -5.572 3.391 -5.389 -7.061 -0.965 -5.049 -2.799 1.000 -6.442 -0.000 -4.781
+ ML 196 194 6 199 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 197 194 6 199 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 198 194 6 199 6 -15.597 -14.295 -10.092 -10.774 -10.792 -0.003
+ IL 199 199 5 199 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 200 200 6 200 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 54 ]
+ MP 201 200 6 205 6 -9.256 -9.195 -0.019 -7.972 -8.251 -8.646 -4.124 -4.353 -4.244 0.359 -3.051 -4.935 2.710 -4.310 -4.625 0.371 -4.507 -1.343 2.376 -4.360 -0.534 -3.181
+ ML 202 200 6 205 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 203 200 6 205 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 204 200 6 205 6 -15.822 -14.520 -10.317 -11.000 -11.017 -0.003
+ IL 205 205 5 205 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 206 206 6 206 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 55 ]
+ MP 207 206 6 211 6 -9.256 -9.195 -0.514 -7.972 -8.251 -1.791 -5.601 -5.515 -4.260 -0.876 -3.785 -4.908 3.662 -4.752 -6.510 -0.827 -4.279 -2.472 0.271 -6.055 -1.047 -4.463
+ ML 208 206 6 211 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 209 206 6 211 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 210 206 6 211 6 -15.822 -14.520 -10.317 -11.000 -11.017 -0.003
+ IL 211 211 5 211 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 212 212 6 212 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 56 ]
+ MP 213 212 6 217 6 -8.769 -8.708 -0.027 -7.485 -7.765 -8.160 -3.305 -2.766 -3.576 1.411 -2.869 -4.048 1.948 -3.248 -3.354 2.027 -3.320 -0.140 1.330 -3.299 -0.204 -2.459
+ ML 214 212 6 217 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 215 212 6 217 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 216 212 6 217 6 -15.891 -14.590 -10.387 -11.069 -11.086 -0.002
+ IL 217 217 5 217 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 218 218 6 218 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 57 ]
+ MP 219 218 6 223 4 -5.802 -6.009 -0.120 -4.423 -3.305 -2.766 -3.576 1.411 -2.869 -4.048 1.948 -3.248 -3.354 2.027 -3.320 -0.140 1.330 -3.299 -0.204 -2.459
+ ML 220 218 6 223 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 221 218 6 223 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 222 218 6 223 4 -11.314 -3.805 -3.116 -0.299
+ IL 223 223 5 223 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 224 224 6 224 3 -3.338 -0.175 -6.038 0.000 0.000 0.000 0.000
+ [ MATL 58 ]
+ ML 225 224 6 227 3 -9.786 -0.006 -8.440 -2.444 -3.838 1.744 -1.334
+ D 226 224 6 227 3 -13.129 -8.642 -0.004
+ IL 227 227 3 227 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 59 ]
+ ML 228 227 3 230 3 -9.786 -0.006 -8.440 -3.029 -1.352 -3.811 1.772
+ D 229 227 3 230 3 -13.129 -8.642 -0.004
+ IL 230 230 3 230 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 60 ]
+ ML 231 230 3 233 3 -9.786 -0.189 -3.037 1.230 -0.834 -2.296 -0.169
+ D 232 230 3 233 3 -13.129 -8.642 -0.004
+ IL 233 233 3 233 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 234 233 3 236 2 * 0.000 -0.014 -0.636 1.024 -1.587
+ D 235 233 3 236 2 * 0.000
+ IL 236 236 3 236 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 62 ]
+ E 237 236 3 -1 0
+ [ BEGR 63 ]
+ S 238 181 1 239 3 -12.038 -0.042 -5.118
+ IL 239 239 2 239 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 64 ]
+ ML 240 239 2 242 3 -0.515 -1.740 -10.651 0.696 -2.789 0.714 -0.749
+ D 241 239 2 242 3 -0.292 -4.117 -2.996
+ IL 242 242 3 242 3 -4.682 -0.060 -9.023 0.000 0.000 0.000 0.000
+ [ MATL 65 ]
+ ML 243 242 3 245 5 -10.983 -0.003 -10.799 -11.011 -11.902 -6.177 1.986 -6.986 -5.896
+ D 244 242 3 245 5 -4.959 -0.803 -4.221 -2.596 -2.508
+ IL 245 245 3 245 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 66 ]
+ MP 246 245 3 250 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -8.425 -7.280 -8.956 0.151 -7.726 -9.214 2.599 -8.192 -8.674 2.629 -8.275 -0.285 -0.503 -8.706 0.108 -6.934
+ ML 247 245 3 250 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 248 245 3 250 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 249 245 3 250 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 250 250 5 250 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 251 251 6 251 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 67 ]
+ MP 252 251 6 256 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -8.347 -7.950 -8.279 0.577 -6.642 -8.987 3.159 -7.948 -8.896 1.290 -8.568 -0.379 1.041 -8.469 -1.935 -6.608
+ ML 253 251 6 256 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 254 251 6 256 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 255 251 6 256 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 256 256 5 256 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 257 257 6 257 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 68 ]
+ MP 258 257 6 262 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -7.857 -6.453 -8.580 0.294 -7.858 -7.755 1.193 -7.892 -7.689 3.497 -7.295 -3.582 -0.772 -7.467 -1.082 -6.674
+ ML 259 257 6 262 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 260 257 6 262 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 261 257 6 262 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 262 262 5 262 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 263 263 6 263 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 69 ]
+ MP 264 263 6 268 6 -12.016 -11.955 -0.003 -10.732 -11.012 -11.407 -10.077 -5.384 -10.899 -1.124 -9.844 -5.579 -3.698 -9.350 -6.540 3.897 -6.010 -3.142 -1.577 -5.693 -5.855 -7.912
+ ML 265 263 6 268 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 266 263 6 268 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 267 263 6 268 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 268 268 5 268 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 269 269 6 269 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 70 ]
+ MP 270 269 6 274 4 -11.123 -11.330 -0.003 -9.744 -11.170 -6.905 -11.033 -3.627 -10.757 -7.380 -4.824 -9.431 -8.041 3.977 -7.551 -4.453 -4.613 -7.379 -6.287 -8.552
+ ML 271 269 6 274 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 272 269 6 274 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 273 269 6 274 4 -4.568 -4.250 -2.265 -0.520
+ IL 274 274 5 274 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 275 275 6 275 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 276 275 6 278 3 -12.038 -0.001 -10.692 -5.986 -5.748 -6.637 1.984
+ D 277 275 6 278 3 -6.174 -1.687 -0.566
+ IL 278 278 3 278 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 72 ]
+ ML 279 278 3 281 3 -12.038 -0.001 -10.692 -5.165 -3.547 -5.915 1.952
+ D 280 278 3 281 3 -6.174 -1.687 -0.566
+ IL 281 281 3 281 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 73 ]
+ ML 282 281 3 284 3 -12.038 -0.001 -10.692 -5.531 1.967 -4.665 -5.111
+ D 283 281 3 284 3 -6.174 -1.687 -0.566
+ IL 284 284 3 284 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 74 ]
+ ML 285 284 3 287 3 -12.038 -0.001 -10.692 1.305 -7.468 0.600 -7.082
+ D 286 284 3 287 3 -6.174 -1.687 -0.566
+ IL 287 287 3 287 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 75 ]
+ ML 288 287 3 290 3 -12.038 -0.001 -10.692 1.985 -6.571 -6.091 -5.965
+ D 289 287 3 290 3 -6.174 -1.687 -0.566
+ IL 290 290 3 290 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 76 ]
+ ML 291 290 3 293 3 -12.038 -0.001 -10.692 1.773 -4.394 -1.488 -2.493
+ D 292 290 3 293 3 -6.174 -1.687 -0.566
+ IL 293 293 3 293 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 77 ]
+ ML 294 293 3 296 2 * 0.000 -5.125 -1.961 -5.878 1.887
+ D 295 293 3 296 2 * 0.000
+ IL 296 296 3 296 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 78 ]
+ E 297 296 3 -1 0
+//
diff --git a/TRNAinf-arch-ns-c.cm b/TRNAinf-arch-ns-c.cm
new file mode 100644
index 0000000..d29bd74
--- /dev/null
+++ b/TRNAinf-arch-ns-c.cm
@@ -0,0 +1,416 @@
+INFERNAL-1 [1.0]
+NAME tRNA1415G-arch-nostruct
+STATES 283
+NODES 95
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 62
+EFFNSEQ 62.000
+CLEN 93
+BCOM cmbuild --rf --enone -F TRNAinf-arch-ns-nc.cm trna1415G-arch-ns.sto
+BDATE Sun Feb 8 18:06:51 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/TRNAinf-arch-ns.hfile --exp-sfile cmcalibrate_files/TRNAinf-arch-ns.sfile --exp-qqfile cmcalibrate_files/TRNAinf-arch-ns.qqfile --exp-ffile cmcalibrate_files/TRNAinf-arch-ns.ffile --fil-dfile cmcalibrate_files/TRNAinf-arch-ns.dfile -s 208 TRNAinf-arch-ns-c.cm
+CDATE Sun Feb 8 19:59:12 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.64507 -11.44395 -1.14500 1500000 863822 0.001302
+E-GC 0 0.31911 -29.20560 -15.01859 1500000 34690 0.010810
+E-LI 0 0.61785 -10.83534 -0.36287 1500000 726504 0.001549
+E-GI 0 0.33011 -26.13627 -12.48049 1500000 34024 0.011022
+E-LV 0 0.62174 -3.67264 1.98411 32320000 81652 0.029687
+E-GV 0 0.34755 -21.38243 -8.12223 32320000 81081 0.009965
+E-LF 0 0.59976 -0.34575 5.52007 32320000 81736 0.029656
+E-GF 0 0.35374 -18.68940 -5.65897 32320000 81139 0.009958
+FT-LC 33 0.99500 10000 1500000 0
+ 11584.1 9356.94 8252.27 8082.38 7305.08 6353.93 6181.85 6017.01 4476.31 4060.85 2788.51 2609.26 2112.21 1710.08 1124.22 850.929 786.338 738.047 638.516 376.609 344.361 277.173 213.638 182.922 159.18 149.247 143.777 2.51917 1.17731 1.0678 0.558037 0.449367 0.191891
+ 1366.05 1211.63 914.554 744.952 629.035 556.261 436.826 357.1 314.463 280.932 249.625 196.971 152.286 129.208 106.389 91.2465 74.7721 61.6037 49.196 43.5044 36.1883 32.1555 28.6751 24.4614 18.0369 16.1717 13.9251 9.4714 7.98804 3.7994 2.65591 1.74326 1.39251
+FT-LI 39 0.99500 10000 1500000 0
+ 10929.9 9229.94 7856.85 7484.38 7045.88 6436.48 6238.52 6173.58 4755.93 3421.44 3112.79 2990.89 2116.37 1807.63 1283.87 825.629 757.018 678.06 562.971 455.91 343.751 251.027 242.145 224.865 195.339 173.879 173.422 3.57002 2.96432 2.62038 2.15274 1.9965 1.56256 1.45489 1.01519 0.746638 0.568454 0.501147 0.356016
+ 1366.05 1211.63 914.554 744.952 629.035 556.261 436.826 357.1 314.463 280.932 249.625 196.971 152.286 129.208 106.389 91.2465 74.7721 61.6037 49.196 43.5044 36.1883 32.1555 28.6751 24.4614 18.0369 16.1717 13.9251 11.5236 10.1599 8.17708 7.1706 6.26164 5.62424 4.16704 3.31978 2.20795 1.89937 1.58946 1.39251
+FT-GC 1 0.99500 10000 1500000 1
+ 0.841728
+ 1.12142
+FT-GI 1 0.99500 10000 1500000 1
+ 1.14672
+ 1.12142
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -4.688 -11.330 -0.059 -9.744
+ IL 1 1 2 1 4 -3.697 -4.380 -0.207 -6.865 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 1 ]
+ ML 3 2 3 5 3 -12.038 -0.001 -10.692 -1.647 -3.136 1.820 -4.772
+ D 4 2 3 5 3 -6.174 -1.687 -0.566
+ IL 5 5 3 5 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 2 ]
+ ML 6 5 3 8 3 -12.038 -0.001 -10.692 -3.952 1.030 0.684 -1.797
+ D 7 5 3 8 3 -6.174 -1.687 -0.566
+ IL 8 8 3 8 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 3 ]
+ ML 9 8 3 11 3 -12.038 -0.001 -10.692 -1.302 0.894 0.615 -2.289
+ D 10 8 3 11 3 -6.174 -1.687 -0.566
+ IL 11 11 3 11 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 4 ]
+ ML 12 11 3 14 3 -12.038 -0.001 -10.692 -1.572 0.658 0.788 -1.475
+ D 13 11 3 14 3 -6.174 -1.687 -0.566
+ IL 14 14 3 14 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 5 ]
+ ML 15 14 3 17 3 -12.038 -0.001 -10.692 -1.286 0.971 -0.037 -0.610
+ D 16 14 3 17 3 -6.174 -1.687 -0.566
+ IL 17 17 3 17 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 6 ]
+ ML 18 17 3 20 3 -12.038 -0.001 -10.692 -1.777 0.382 0.979 -1.202
+ D 19 17 3 20 3 -6.174 -1.687 -0.566
+ IL 20 20 3 20 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 7 ]
+ ML 21 20 3 23 3 -12.038 -0.001 -10.692 -0.913 -5.512 1.697 -2.282
+ D 22 20 3 23 3 -6.174 -1.687 -0.566
+ IL 23 23 3 23 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 8 ]
+ ML 24 23 3 26 3 -12.038 -0.045 -5.039 -5.136 -2.870 -5.889 1.933
+ D 25 23 3 26 3 -6.174 -1.687 -0.566
+ IL 26 26 3 26 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 9 ]
+ ML 27 26 3 29 3 -7.094 -0.012 -10.648 0.978 -1.766 0.622 -2.341
+ D 28 26 3 29 3 -8.671 -0.188 -3.062
+ IL 29 29 3 29 3 -1.785 -0.588 -4.485 0.000 0.000 0.000 0.000
+ [ MATL 10 ]
+ ML 30 29 3 32 3 -12.038 -0.001 -10.692 -4.697 -1.690 1.859 -5.433
+ D 31 29 3 32 3 -6.174 -1.687 -0.566
+ IL 32 32 3 32 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 11 ]
+ ML 33 32 3 35 3 -12.038 -0.001 -10.692 -3.513 1.104 -0.886 0.288
+ D 34 32 3 35 3 -6.174 -1.687 -0.566
+ IL 35 35 3 35 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 12 ]
+ ML 36 35 3 38 3 -12.038 -0.001 -10.692 -1.991 0.699 -0.355 0.426
+ D 37 35 3 38 3 -6.174 -1.687 -0.566
+ IL 38 38 3 38 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 13 ]
+ ML 39 38 3 41 3 -12.038 -0.001 -10.692 -1.345 0.404 -0.715 0.743
+ D 40 38 3 41 3 -6.174 -1.687 -0.566
+ IL 41 41 3 41 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 14 ]
+ ML 42 41 3 44 3 -12.038 -0.001 -10.692 1.985 -6.571 -6.091 -5.965
+ D 43 41 3 44 3 -6.174 -1.687 -0.566
+ IL 44 44 3 44 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 15 ]
+ ML 45 44 3 47 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 46 44 3 47 3 -6.174 -1.687 -0.566
+ IL 47 47 3 47 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 16 ]
+ ML 48 47 3 50 3 -12.038 -0.296 -2.433 -2.146 1.034 -3.180 0.692
+ D 49 47 3 50 3 -6.174 -1.687 -0.566
+ IL 50 50 3 50 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 17 ]
+ ML 51 50 3 53 3 -0.346 -2.234 -10.398 -1.682 1.432 -4.485 -0.080
+ D 52 50 3 53 3 -11.068 -0.034 -5.460
+ IL 53 53 3 53 3 -6.146 -0.024 -8.847 0.000 0.000 0.000 0.000
+ [ MATL 18 ]
+ ML 54 53 3 56 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 55 53 3 56 3 -6.174 -1.687 -0.566
+ IL 56 56 3 56 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 19 ]
+ ML 57 56 3 59 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 58 56 3 59 3 -6.174 -1.687 -0.566
+ IL 59 59 3 59 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 20 ]
+ ML 60 59 3 62 3 -0.829 -1.196 -10.692 -0.760 0.255 -1.274 0.850
+ D 61 59 3 62 3 -6.174 -1.687 -0.566
+ IL 62 62 3 62 3 -1.387 -0.699 -9.337 0.000 0.000 0.000 0.000
+ [ MATL 21 ]
+ ML 63 62 3 65 3 -12.038 -0.001 -10.692 1.946 -5.710 -3.349 -5.078
+ D 64 62 3 65 3 -6.174 -1.687 -0.566
+ IL 65 65 3 65 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 66 65 3 68 3 -12.038 -0.001 -10.692 -0.234 -1.621 0.925 -0.110
+ D 67 65 3 68 3 -6.174 -1.687 -0.566
+ IL 68 68 3 68 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 69 68 3 71 3 -12.038 -0.001 -10.692 0.423 -0.242 0.697 -2.379
+ D 70 68 3 71 3 -6.174 -1.687 -0.566
+ IL 71 71 3 71 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 72 71 3 74 3 -12.038 -0.001 -10.692 0.212 -0.972 1.185 -4.086
+ D 73 71 3 74 3 -6.174 -1.687 -0.566
+ IL 74 74 3 74 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 75 74 3 77 3 -12.038 -0.001 -10.692 -3.992 1.422 -1.624 -0.099
+ D 76 74 3 77 3 -6.174 -1.687 -0.566
+ IL 77 77 3 77 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 78 77 3 80 3 -12.038 -0.001 -10.692 -1.084 -3.136 1.640 -1.751
+ D 79 77 3 80 3 -6.174 -1.687 -0.566
+ IL 80 80 3 80 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 27 ]
+ ML 81 80 3 83 3 -12.038 -0.001 -10.692 -0.977 1.139 -1.334 -0.162
+ D 82 80 3 83 3 -6.174 -1.687 -0.566
+ IL 83 83 3 83 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 28 ]
+ ML 84 83 3 86 3 -12.038 -0.001 -10.692 -0.492 0.894 -0.835 -0.200
+ D 85 83 3 86 3 -6.174 -1.687 -0.566
+ IL 86 86 3 86 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 87 86 3 89 3 -12.038 -0.001 -10.692 -1.803 -1.059 1.492 -1.245
+ D 88 86 3 89 3 -6.174 -1.687 -0.566
+ IL 89 89 3 89 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 30 ]
+ ML 90 89 3 92 3 -12.038 -0.001 -10.692 -5.317 -0.451 1.691 -6.050
+ D 91 89 3 92 3 -6.174 -1.687 -0.566
+ IL 92 92 3 92 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 31 ]
+ ML 93 92 3 95 3 -12.038 -0.001 -10.692 0.105 0.592 0.285 -2.338
+ D 94 92 3 95 3 -6.174 -1.687 -0.566
+ IL 95 95 3 95 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 32 ]
+ ML 96 95 3 98 3 -12.038 -0.001 -10.692 -5.181 1.706 -6.181 -0.522
+ D 97 95 3 98 3 -6.174 -1.687 -0.566
+ IL 98 98 3 98 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 33 ]
+ ML 99 98 3 101 3 -12.038 -0.001 -10.692 -5.986 -5.748 -6.637 1.984
+ D 100 98 3 101 3 -6.174 -1.687 -0.566
+ IL 101 101 3 101 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 34 ]
+ ML 102 101 3 104 3 -12.038 -0.001 -10.692 -3.411 0.262 0.295 0.566
+ D 103 101 3 104 3 -6.174 -1.687 -0.566
+ IL 104 104 3 104 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 105 104 3 107 3 -12.038 -0.001 -10.692 0.373 -0.476 -0.090 0.066
+ D 106 104 3 107 3 -6.174 -1.687 -0.566
+ IL 107 107 3 107 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 108 107 3 110 3 -12.038 -0.001 -10.692 -0.414 0.235 -0.281 0.321
+ D 109 107 3 110 3 -6.174 -1.687 -0.566
+ IL 110 110 3 110 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 37 ]
+ ML 111 110 3 113 3 -3.068 -0.184 -10.692 1.104 -7.571 0.879 -7.144
+ D 112 110 3 113 3 -6.174 -1.687 -0.566
+ IL 113 113 3 113 3 -0.088 -4.101 -10.629 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 114 113 3 116 3 -12.038 -0.001 -10.692 1.737 -1.357 -2.681 -3.044
+ D 115 113 3 116 3 -6.174 -1.687 -0.566
+ IL 116 116 3 116 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 117 116 3 119 3 -12.038 -0.001 -10.692 -2.330 0.262 0.584 0.141
+ D 118 116 3 119 3 -6.174 -1.687 -0.566
+ IL 119 119 3 119 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 120 119 3 122 3 -12.038 -0.001 -10.692 -4.955 1.666 -0.609 -2.856
+ D 121 119 3 122 3 -6.174 -1.687 -0.566
+ IL 122 122 3 122 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 41 ]
+ ML 123 122 3 125 3 -12.038 -0.001 -10.692 -1.090 1.435 -0.960 -1.682
+ D 124 122 3 125 3 -6.174 -1.687 -0.566
+ IL 125 125 3 125 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 42 ]
+ ML 126 125 3 128 3 -12.038 -0.001 -10.692 -0.373 -1.289 0.969 -0.216
+ D 127 125 3 128 3 -6.174 -1.687 -0.566
+ IL 128 128 3 128 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 43 ]
+ ML 129 128 3 131 3 -12.038 -0.001 -10.692 -1.063 -1.470 1.440 -1.160
+ D 130 128 3 131 3 -6.174 -1.687 -0.566
+ IL 131 131 3 131 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 132 131 3 134 3 -12.038 -0.289 -2.463 0.488 -0.754 -1.483 0.720
+ D 133 131 3 134 3 -6.174 -1.687 -0.566
+ IL 134 134 3 134 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 45 ]
+ ML 135 134 3 137 3 -11.750 -4.854 -0.051 -1.059 -1.734 1.473 -1.172
+ D 136 134 3 137 3 -11.039 -0.035 -5.431
+ IL 137 137 3 137 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 46 ]
+ ML 138 137 3 140 3 -9.786 -0.006 -8.440 -2.458 -0.333 1.531 -2.891
+ D 139 137 3 140 3 -13.129 -8.642 -0.004
+ IL 140 140 3 140 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 47 ]
+ ML 141 140 3 143 3 -9.786 -0.006 -8.440 -0.581 0.448 0.696 -1.522
+ D 142 140 3 143 3 -13.129 -8.642 -0.004
+ IL 143 143 3 143 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 48 ]
+ ML 144 143 3 146 3 -9.786 -1.500 -0.632 -0.560 1.216 -2.457 -0.292
+ D 145 143 3 146 3 -13.129 -8.642 -0.004
+ IL 146 146 3 146 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 49 ]
+ ML 147 146 3 149 3 -8.302 -0.016 -6.956 -0.588 0.266 -1.422 0.815
+ D 148 146 3 149 3 -13.354 -8.867 -0.003
+ IL 149 149 3 149 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 50 ]
+ ML 150 149 3 152 3 -8.302 -1.405 -0.691 -1.938 1.726 -2.780 -1.813
+ D 151 149 3 152 3 -13.354 -8.867 -0.003
+ IL 152 152 3 152 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 51 ]
+ ML 153 152 3 155 3 -6.939 -0.042 -5.593 0.660 -0.612 -0.293 -0.076
+ D 154 152 3 155 3 -13.424 -8.937 -0.003
+ IL 155 155 3 155 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 52 ]
+ ML 156 155 3 158 3 -6.939 -0.042 -5.593 0.660 -0.612 -0.293 -0.076
+ D 157 155 3 158 3 -13.424 -2.419 -0.299
+ IL 158 158 3 158 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 53 ]
+ ML 159 158 3 161 3 -9.786 -0.006 -8.440 -2.444 -3.838 1.744 -1.334
+ D 160 158 3 161 3 -13.129 -8.642 -0.004
+ IL 161 161 3 161 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 54 ]
+ ML 162 161 3 164 3 -9.786 -0.006 -8.440 -3.029 -1.352 -3.811 1.772
+ D 163 161 3 164 3 -13.129 -8.642 -0.004
+ IL 164 164 3 164 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 55 ]
+ ML 165 164 3 167 3 -9.786 -0.189 -3.037 1.230 -0.834 -2.296 -0.169
+ D 166 164 3 167 3 -13.129 -8.642 -0.004
+ IL 167 167 3 167 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 56 ]
+ ML 168 167 3 170 3 -1.405 -2.707 -1.092 -0.014 -0.636 1.024 -1.587
+ D 169 167 3 170 3 -13.173 -8.686 -0.004
+ IL 170 170 3 170 3 -3.338 -2.694 -0.422 0.000 0.000 0.000 0.000
+ [ MATL 57 ]
+ ML 171 170 3 173 3 -6.939 -0.042 -5.593 0.660 -0.612 -0.293 -0.076
+ D 172 170 3 173 3 -13.424 -8.937 -0.003
+ IL 173 173 3 173 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 58 ]
+ ML 174 173 3 176 3 -6.939 -0.042 -5.593 0.660 -0.612 -0.293 -0.076
+ D 175 173 3 176 3 -13.424 -4.352 -0.073
+ IL 176 176 3 176 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 59 ]
+ ML 177 176 3 179 3 -8.302 -0.016 -6.956 -1.724 -2.917 1.746 -2.253
+ D 178 176 3 179 3 -13.354 -8.867 -0.003
+ IL 179 179 3 179 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 60 ]
+ ML 180 179 3 182 3 -8.302 -0.016 -6.956 0.828 -1.516 0.438 -0.943
+ D 181 179 3 182 3 -13.354 -2.766 -0.229
+ IL 182 182 3 182 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 183 182 3 185 3 -9.786 -0.006 -8.440 -1.144 -3.350 1.588 -1.175
+ D 184 182 3 185 3 -13.129 -8.642 -0.004
+ IL 185 185 3 185 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 62 ]
+ ML 186 185 3 188 3 -9.786 -0.006 -8.440 -1.403 0.610 0.498 -0.550
+ D 187 185 3 188 3 -13.129 -8.642 -0.004
+ IL 188 188 3 188 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 63 ]
+ ML 189 188 3 191 3 -9.786 -0.215 -2.866 -1.485 1.025 -0.069 -0.610
+ D 190 188 3 191 3 -13.129 -0.008 -7.520
+ IL 191 191 3 191 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 64 ]
+ ML 192 191 3 194 3 -0.515 -1.740 -10.651 0.696 -2.789 0.714 -0.749
+ D 193 191 3 194 3 -0.292 -4.117 -2.996
+ IL 194 194 3 194 3 -4.682 -0.060 -9.023 0.000 0.000 0.000 0.000
+ [ MATL 65 ]
+ ML 195 194 3 197 3 -12.038 -0.001 -10.692 -6.177 1.986 -6.986 -5.896
+ D 196 194 3 197 3 -6.174 -1.687 -0.566
+ IL 197 197 3 197 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 66 ]
+ ML 198 197 3 200 3 -12.038 -0.001 -10.692 -1.646 0.581 0.785 -1.116
+ D 199 197 3 200 3 -6.174 -1.687 -0.566
+ IL 200 200 3 200 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 67 ]
+ ML 201 200 3 203 3 -12.038 -0.001 -10.692 -1.232 1.141 -0.325 -0.810
+ D 202 200 3 203 3 -6.174 -1.687 -0.566
+ IL 203 203 3 203 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 68 ]
+ ML 204 203 3 206 3 -12.038 -0.001 -10.692 -1.774 -0.990 1.574 -2.137
+ D 205 203 3 206 3 -6.174 -1.687 -0.566
+ IL 206 206 3 206 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 69 ]
+ ML 207 206 3 209 3 -12.038 -0.001 -10.692 -2.875 -5.554 1.899 -3.131
+ D 208 206 3 209 3 -6.174 -1.687 -0.566
+ IL 209 209 3 209 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 70 ]
+ ML 210 209 3 212 3 -12.038 -0.001 -10.692 -6.252 -7.554 1.991 -7.009
+ D 211 209 3 212 3 -6.174 -1.687 -0.566
+ IL 212 212 3 212 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 213 212 3 215 3 -12.038 -0.001 -10.692 -5.986 -5.748 -6.637 1.984
+ D 214 212 3 215 3 -6.174 -1.687 -0.566
+ IL 215 215 3 215 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 72 ]
+ ML 216 215 3 218 3 -12.038 -0.001 -10.692 -5.165 -3.547 -5.915 1.952
+ D 217 215 3 218 3 -6.174 -1.687 -0.566
+ IL 218 218 3 218 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 73 ]
+ ML 219 218 3 221 3 -12.038 -0.001 -10.692 -5.531 1.967 -4.665 -5.111
+ D 220 218 3 221 3 -6.174 -1.687 -0.566
+ IL 221 221 3 221 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 74 ]
+ ML 222 221 3 224 3 -12.038 -0.001 -10.692 1.305 -7.468 0.600 -7.082
+ D 223 221 3 224 3 -6.174 -1.687 -0.566
+ IL 224 224 3 224 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 75 ]
+ ML 225 224 3 227 3 -12.038 -0.001 -10.692 1.985 -6.571 -6.091 -5.965
+ D 226 224 3 227 3 -6.174 -1.687 -0.566
+ IL 227 227 3 227 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 76 ]
+ ML 228 227 3 230 3 -12.038 -0.001 -10.692 1.773 -4.394 -1.488 -2.493
+ D 229 227 3 230 3 -6.174 -1.687 -0.566
+ IL 230 230 3 230 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 77 ]
+ ML 231 230 3 233 3 -12.038 -0.001 -10.692 -5.125 -1.961 -5.878 1.887
+ D 232 230 3 233 3 -6.174 -1.687 -0.566
+ IL 233 233 3 233 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 78 ]
+ ML 234 233 3 236 3 -12.038 -0.001 -10.692 -6.177 1.986 -6.986 -5.896
+ D 235 233 3 236 3 -6.174 -1.687 -0.566
+ IL 236 236 3 236 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 79 ]
+ ML 237 236 3 239 3 -12.038 -0.001 -10.692 -3.239 1.912 -6.045 -3.102
+ D 238 236 3 239 3 -6.174 -1.687 -0.566
+ IL 239 239 3 239 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 80 ]
+ ML 240 239 3 242 3 -12.038 -0.001 -10.692 -2.720 1.554 -0.706 -1.745
+ D 241 239 3 242 3 -6.174 -1.687 -0.566
+ IL 242 242 3 242 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 81 ]
+ ML 243 242 3 245 3 -12.038 -0.001 -10.692 -0.953 -0.709 1.194 -0.776
+ D 244 242 3 245 3 -6.174 -1.687 -0.566
+ IL 245 245 3 245 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 82 ]
+ ML 246 245 3 248 3 -12.038 -0.001 -10.692 -2.218 0.616 0.805 -0.985
+ D 247 245 3 248 3 -6.174 -1.687 -0.566
+ IL 248 248 3 248 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 83 ]
+ ML 249 248 3 251 3 -12.038 -0.001 -10.692 -2.301 1.670 -5.694 -0.748
+ D 250 248 3 251 3 -6.174 -1.687 -0.566
+ IL 251 251 3 251 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 84 ]
+ ML 252 251 3 254 3 -12.038 -0.001 -10.692 -2.069 0.970 0.594 -1.773
+ D 253 251 3 254 3 -6.174 -1.687 -0.566
+ IL 254 254 3 254 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 85 ]
+ ML 255 254 3 257 3 -12.038 -0.001 -10.692 -1.278 -0.060 1.161 -1.352
+ D 256 254 3 257 3 -6.174 -1.687 -0.566
+ IL 257 257 3 257 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 86 ]
+ ML 258 257 3 260 3 -12.038 -0.001 -10.692 -1.614 0.725 0.689 -1.293
+ D 259 257 3 260 3 -6.174 -1.687 -0.566
+ IL 260 260 3 260 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 87 ]
+ ML 261 260 3 263 3 -12.038 -0.001 -10.692 -2.280 0.002 0.895 -0.100
+ D 262 260 3 263 3 -6.174 -1.687 -0.566
+ IL 263 263 3 263 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 88 ]
+ ML 264 263 3 266 3 -12.038 -0.001 -10.692 -1.864 0.648 1.078 -4.431
+ D 265 263 3 266 3 -6.174 -1.687 -0.566
+ IL 266 266 3 266 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 89 ]
+ ML 267 266 3 269 3 -12.038 -0.001 -10.692 -4.991 1.836 -3.259 -1.770
+ D 268 266 3 269 3 -6.174 -1.687 -0.566
+ IL 269 269 3 269 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 90 ]
+ ML 270 269 3 272 3 -12.038 -2.248 -0.342 1.338 -2.349 -0.204 -1.296
+ D 271 269 3 272 3 -6.174 -1.687 -0.566
+ IL 272 272 3 272 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 91 ]
+ ML 273 272 3 275 3 -9.796 -0.143 -3.424 -3.307 1.818 -4.292 -1.633
+ D 274 272 3 275 3 -13.126 -8.639 -0.004
+ IL 275 275 3 275 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 92 ]
+ ML 276 275 3 278 3 -9.660 -0.006 -8.314 -3.682 1.918 -4.609 -3.302
+ D 277 275 3 278 3 -13.160 -8.673 -0.004
+ IL 278 278 3 278 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 93 ]
+ ML 279 278 3 281 2 * 0.000 1.945 -4.637 -4.343 -4.086
+ D 280 278 3 281 2 * 0.000
+ IL 281 281 3 281 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 94 ]
+ E 282 281 3 -1 0
+//
diff --git a/TRNAinf-bact-c.cm b/TRNAinf-bact-c.cm
new file mode 100644
index 0000000..09b02b9
--- /dev/null
+++ b/TRNAinf-bact-c.cm
@@ -0,0 +1,415 @@
+INFERNAL-1 [1.0]
+NAME tRNA1415G-eub
+STATES 298
+NODES 79
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 249
+EFFNSEQ 249.000
+CLEN 93
+BCOM cmbuild --rf --enone TRNAinf-bact-nc.cm trna1415G-bact.sto
+BDATE Sun Feb 8 16:45:45 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/TRNAinf-bact.hfile --exp-sfile cmcalibrate_files/TRNAinf-bact.sfile --exp-qqfile cmcalibrate_files/TRNAinf-bact.qqfile --exp-ffile cmcalibrate_files/TRNAinf-bact.ffile --fil-dfile cmcalibrate_files/TRNAinf-bact.dfile -s 208 TRNAinf-bact-c.cm
+CDATE Sun Feb 8 20:07:08 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.67174 -7.74784 1.35716 1500000 509766 0.002207
+E-GC 0 0.35637 -41.39324 -28.49011 1500000 37244 0.010069
+E-LI 0 0.61266 -8.31345 1.57664 1500000 481577 0.002336
+E-GI 0 0.36329 -38.02444 -25.47379 1500000 35827 0.010467
+E-LV 0 0.87314 -1.12092 4.12302 15000000 109563 0.010268
+E-GV 0 0.34365 -27.90220 -11.38503 15000000 109430 0.003427
+E-LF 0 0.79464 -0.33504 5.42687 15000000 109554 0.010269
+E-GF 0 0.36226 -24.54848 -8.87863 15000000 109476 0.003425
+FT-LC 20 0.99500 10000 1500000 0
+ 32.7319 26.005 17.0953 12.7323 11.3108 7.05091 6.41222 6.21019 6.01368 5.84247 5.84247 5.71223 4.23466 3.67566 2.9638 2.91846 1.93825 1.79231 1.79231 5.73661e-06
+ 5409.32 4680.94 3822.35 2792.63 2510.55 2231.99 1962.39 1437.16 902.851 761.664 676.616 415.381 313.779 275.658 227.977 186.902 163.285 133.229 123.171 12.3171
+FT-LI 21 0.99500 10000 1500000 0
+ 51.2091 36.9391 24.8352 20.0348 18.027 11.3314 10.9201 10.8943 10.8943 10.6111 10.6111 9.15061 7.29256 5.70272 5.70184 5.12687 3.87866 3.61164 3.61164 7.80008e-05 7.82384e-06
+ 5409.32 4680.94 3822.35 2792.63 2510.55 2231.99 1962.39 1437.16 902.851 761.664 676.616 415.381 313.779 275.658 227.977 186.902 163.285 133.229 123.171 53.1262 12.3171
+FT-GC 2 0.99500 10000 1500000 1
+ 4.6166e-06 3.08769e-07
+ 87.4853 9.71507
+FT-GI 2 0.99500 10000 1500000 1
+ 8.55844e-06 6.08794e-07
+ 87.4853 9.71507
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -4.212 -14.142 -0.360 -2.582
+ IL 1 1 2 1 4 -6.557 -8.059 -0.372 -2.231 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 1 ]
+ MR 3 2 3 5 3 -14.024 -0.000 -12.341 1.996 -8.236 -7.705 -8.011
+ D 4 2 3 5 3 -12.926 -8.103 -0.005
+ IR 5 5 3 5 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 2 ]
+ MR 6 5 3 8 3 -14.024 -0.000 -12.341 -8.745 1.998 -9.265 -8.847
+ D 7 5 3 8 3 -12.926 -8.103 -0.005
+ IR 8 8 3 8 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 3 ]
+ MR 9 8 3 11 3 -14.024 -0.000 -12.341 -8.745 1.998 -9.265 -8.847
+ D 10 8 3 11 3 -12.926 -0.122 -3.626
+ IR 11 11 3 11 3 -1.925 -0.554 -4.164 0.000 0.000 0.000 0.000
+ [ MATR 4 ]
+ MR 12 11 3 14 5 -6.336 -0.034 -12.744 -6.561 -13.848 1.183 -2.858 0.062 -0.868
+ D 13 11 3 14 5 -7.629 -0.120 -5.256 -6.686 -4.681
+ IR 14 14 3 14 5 -3.975 -0.149 -7.486 -5.654 -6.760 0.000 0.000 0.000 0.000
+ [ MATP 5 ]
+ MP 15 14 3 19 6 -13.888 -13.828 -0.001 -12.604 -12.884 -13.279 -7.177 -6.400 -7.823 -0.211 -2.016 -7.733 0.101 -3.727 -7.269 3.544 -7.051 -0.067 0.057 -7.294 -5.262 -6.681
+ ML 16 14 3 19 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 17 14 3 19 6 -9.075 -7.804 -0.250 -7.782 -2.916 -5.996 -0.624 -0.170 -1.457 1.069
+ D 18 14 3 19 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 19 19 5 19 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 20 20 6 20 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 6 ]
+ MP 21 20 6 25 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -7.707 -6.730 -8.656 -0.676 -9.309 -8.526 2.459 -6.587 -7.835 3.054 -3.164 -1.200 -0.572 -7.876 -1.764 -6.110
+ ML 22 20 6 25 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 23 20 6 25 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 24 20 6 25 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 25 25 5 25 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 26 26 6 26 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 7 ]
+ MP 27 26 6 31 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -9.405 -8.330 -10.166 1.466 -9.625 -10.198 2.431 -9.525 -9.576 2.496 -9.222 -0.655 0.578 -9.614 -4.061 -8.325
+ ML 28 26 6 31 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 29 26 6 31 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 30 26 6 31 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 31 31 5 31 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 32 32 6 32 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 8 ]
+ MP 33 32 6 37 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -10.770 -9.556 -11.165 0.222 -9.670 -11.548 2.247 -10.324 -11.071 2.940 -10.626 -2.006 0.893 -11.102 -1.755 -9.040
+ ML 34 32 6 37 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 35 32 6 37 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 36 32 6 37 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 37 37 5 37 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 38 38 6 38 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 9 ]
+ MP 39 38 6 43 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -7.643 -3.651 -8.602 1.918 -9.439 -8.444 2.316 -5.189 -7.760 2.497 -7.445 -1.414 -0.536 -7.801 -1.359 -6.988
+ ML 40 38 6 43 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 41 38 6 43 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 42 38 6 43 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 43 43 5 43 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 44 44 6 44 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 10 ]
+ MP 45 44 6 49 6 -8.229 -13.842 -0.005 -12.619 -12.899 -13.294 -7.105 -7.196 -7.296 1.716 -5.947 -7.838 1.864 -3.826 -7.537 1.967 -7.482 -4.430 2.052 -4.132 -0.368 -5.943
+ ML 46 44 6 49 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 47 44 6 49 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 48 44 6 49 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 49 49 5 49 6 -3.498 -3.761 -0.352 -5.416 -6.192 -5.853 0.000 0.000 0.000 0.000
+ IR 50 50 6 50 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 11 ]
+ MP 51 50 6 55 4 -13.101 -13.308 -0.006 -8.103 -7.894 -6.882 -8.838 2.191 -9.502 -8.695 -0.588 -8.333 -8.014 2.763 -7.697 -0.800 1.741 -8.056 -5.405 -7.203
+ ML 52 50 6 55 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 53 50 6 55 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 54 50 6 55 4 -4.568 -4.250 -2.265 -0.520
+ IL 55 55 5 55 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 56 56 6 56 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 12 ]
+ ML 57 56 6 59 3 -14.007 -0.005 -8.118 -7.763 -7.499 -4.305 1.978
+ D 58 56 6 59 3 -7.779 -0.371 -2.171
+ IL 59 59 3 59 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 13 ]
+ ML 60 59 3 62 2 -14.659 -0.000 1.348 -2.468 0.202 -3.024
+ D 61 59 3 62 2 -8.617 -0.004
+ IL 62 62 3 62 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ BIF 14 ]
+ B 63 62 3 64 173
+ [ BEGL 15 ]
+ S 64 63 1 65 1 0.000
+ [ BIF 16 ]
+ B 65 64 1 66 116
+ [ BEGL 17 ]
+ S 66 65 1 67 4 -0.001 -12.021 -11.428 -12.068
+ [ MATP 18 ]
+ MP 67 66 1 71 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -11.606 -6.912 -12.457 -2.375 -11.305 -7.102 0.280 -10.922 -8.071 3.771 -7.538 -0.565 -2.126 -7.218 -7.324 -9.448
+ ML 68 66 1 71 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 69 66 1 71 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 70 66 1 71 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 71 71 5 71 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 72 72 6 72 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 19 ]
+ MP 73 72 6 77 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -9.240 -9.577 -7.207 -0.703 -6.953 -7.803 3.525 -7.976 -11.664 -2.259 -4.137 -7.040 1.735 -10.062 -2.061 -8.224
+ ML 74 72 6 77 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 75 72 6 77 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 76 72 6 77 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 77 77 5 77 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 78 78 6 78 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 20 ]
+ MP 79 78 6 83 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -7.115 -7.535 -7.452 -0.649 -6.118 -4.162 1.464 -7.553 -2.412 2.100 -7.790 -4.927 2.952 -7.255 -2.078 -6.220
+ ML 80 78 6 83 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 81 78 6 83 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 82 78 6 83 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 83 83 5 83 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 84 84 6 84 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 21 ]
+ MP 85 84 6 89 4 -13.101 -13.308 -0.001 -11.722 1.474 -8.224 -7.865 -1.561 -3.150 -8.836 3.078 -3.335 1.394 -6.594 -4.545 -6.996 -1.665 -7.647 -0.097 -1.864
+ ML 86 84 6 89 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 87 84 6 89 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 88 84 6 89 4 -4.568 -4.250 -2.265 -0.520
+ IL 89 89 5 89 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 90 90 6 90 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 91 90 6 93 3 -14.012 -0.000 -12.666 1.969 -5.517 -5.623 -4.509
+ D 92 90 6 93 3 -6.174 -1.687 -0.566
+ IL 93 93 3 93 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 94 93 3 96 3 -14.012 -0.028 -5.681 -0.099 -3.932 1.558 -4.175
+ D 95 93 3 96 3 -6.174 -1.687 -0.566
+ IL 96 96 3 96 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 97 96 3 99 3 -13.984 -0.616 -1.525 -2.120 0.318 -3.020 1.263
+ D 98 96 3 99 3 -9.856 -5.369 -0.037
+ IL 99 99 3 99 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 100 99 3 102 3 -2.893 -0.209 -12.022 -1.849 -0.318 -6.368 1.540
+ D 101 99 3 102 3 -13.963 -0.005 -8.354
+ IL 102 102 3 102 3 -3.488 -0.141 -8.069 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 103 102 3 105 3 -14.012 -0.000 -12.666 -7.659 -9.041 1.985 -4.890
+ D 104 102 3 105 3 -6.174 -1.687 -0.566
+ IL 105 105 3 105 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 27 ]
+ ML 106 105 3 108 3 -14.012 -0.000 -12.666 -9.488 -10.488 1.999 -10.286
+ D 107 105 3 108 3 -6.174 -1.687 -0.566
+ IL 108 108 3 108 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 28 ]
+ ML 109 108 3 111 3 -0.920 -1.085 -12.666 -1.932 -0.228 -2.234 1.418
+ D 110 108 3 111 3 -6.174 -1.687 -0.566
+ IL 111 111 3 111 3 -2.288 -0.332 -10.826 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 112 111 3 114 2 * 0.000 1.778 -6.312 -0.996 -4.154
+ D 113 111 3 114 2 * 0.000
+ IL 114 114 3 114 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 30 ]
+ E 115 114 3 -1 0
+ [ BEGR 31 ]
+ S 116 65 1 117 3 -14.012 -0.017 -6.409
+ IL 117 117 2 117 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 32 ]
+ ML 118 117 2 120 5 -12.931 -0.001 -12.746 -12.959 -13.850 1.154 -3.089 0.613 -2.969
+ D 119 117 2 120 5 -7.281 -0.129 -6.542 -4.917 -4.829
+ IL 120 120 3 120 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 33 ]
+ MP 121 120 3 125 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -7.037 -7.238 -7.181 1.483 -3.802 -7.756 2.890 -3.509 -2.786 0.308 -7.454 -0.163 1.498 -3.576 -1.631 -3.419
+ ML 122 120 3 125 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 123 120 3 125 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 124 120 3 125 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 125 125 5 125 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 126 126 6 126 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 34 ]
+ MP 127 126 6 131 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -7.562 -7.728 -7.698 1.296 -6.285 -8.282 2.986 -7.700 -8.021 0.253 -7.975 -0.964 1.796 -7.531 -2.098 -2.634
+ ML 128 126 6 131 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 129 126 6 131 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 130 126 6 131 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 131 131 5 131 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 132 132 6 132 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 35 ]
+ MP 133 132 6 137 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -3.770 -7.034 -8.756 1.366 -8.689 -8.741 1.613 -8.338 -8.095 2.514 -7.814 -3.330 2.142 -8.082 -5.249 -7.171
+ ML 134 132 6 137 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 135 132 6 137 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 136 132 6 137 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 137 137 5 137 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 138 138 6 138 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 36 ]
+ MP 139 138 6 143 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -12.633 -9.383 -12.525 -2.043 -11.426 -10.132 1.965 -11.177 -10.560 3.509 -10.096 -1.569 -5.642 -10.042 -7.160 -3.277
+ ML 140 138 6 143 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 141 138 6 143 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 142 138 6 143 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 143 143 5 143 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 144 144 6 144 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 37 ]
+ MP 145 144 6 149 4 -13.101 -13.308 -0.001 -11.722 -9.123 -2.953 -9.846 2.544 -9.260 -9.919 2.508 -9.301 -9.311 1.305 -8.992 -3.043 0.719 -9.306 -3.360 -8.095
+ ML 146 144 6 149 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 147 144 6 149 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 148 144 6 149 4 -4.568 -4.250 -2.265 -0.520
+ IL 149 149 5 149 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 150 150 6 150 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 151 150 6 153 3 -14.012 -0.000 -12.666 -3.533 1.448 -7.551 0.238
+ D 152 150 6 153 3 -6.174 -1.687 -0.566
+ IL 153 153 3 153 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 154 153 3 156 3 -14.012 -0.000 -12.666 -8.939 -9.084 -9.393 1.998
+ D 155 153 3 156 3 -6.174 -1.687 -0.566
+ IL 156 156 3 156 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 157 156 3 159 3 -14.012 -0.000 -12.666 -2.883 -0.034 0.578 0.481
+ D 158 156 3 159 3 -6.174 -1.687 -0.566
+ IL 159 159 3 159 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 41 ]
+ ML 160 159 3 162 3 -14.012 -0.000 -12.666 0.183 -0.085 -0.221 0.089
+ D 161 159 3 162 3 -6.174 -1.687 -0.566
+ IL 162 162 3 162 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 42 ]
+ ML 163 162 3 165 3 -14.012 -0.000 -12.666 0.178 -0.228 -0.328 0.285
+ D 164 162 3 165 3 -6.174 -1.687 -0.566
+ IL 165 165 3 165 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 43 ]
+ ML 166 165 3 168 3 -14.012 -0.000 -12.666 1.722 -9.712 -0.516 -9.399
+ D 167 165 3 168 3 -6.174 -1.687 -0.566
+ IL 168 168 3 168 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 169 168 3 171 2 * 0.000 1.516 -0.515 -5.325 -1.267
+ D 170 168 3 171 2 * 0.000
+ IL 171 171 3 171 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 45 ]
+ E 172 171 3 -1 0
+ [ BEGR 46 ]
+ S 173 63 1 174 3 -14.012 -0.000 -12.666
+ IL 174 174 2 174 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 47 ]
+ ML 175 174 2 177 3 -14.012 -0.347 -2.226 0.255 -0.169 -0.179 0.048
+ D 176 174 2 177 3 -6.174 -1.687 -0.566
+ IL 177 177 3 177 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 48 ]
+ ML 178 177 3 180 2 -5.757 -0.027 -0.282 -3.163 1.294 -0.705
+ D 179 177 3 180 2 -11.596 -0.000
+ IL 180 180 3 180 2 -4.108 -0.086 0.000 0.000 0.000 0.000
+ [ BIF 49 ]
+ B 181 180 3 182 238
+ [ BEGL 50 ]
+ S 182 181 1 183 4 -1.839 -7.503 -11.428 -0.485
+ [ MATP 51 ]
+ MP 183 182 1 187 6 -12.101 -12.040 -0.003 -10.817 -11.097 -11.492 -5.896 -4.895 -1.135 1.822 -7.689 -6.694 -0.351 -6.364 -6.013 2.709 0.199 0.771 0.011 -6.051 -0.531 -5.246
+ ML 184 182 1 187 6 -7.801 -8.147 -2.861 -2.556 -7.997 -0.556 -0.705 1.288 -1.533 -0.738
+ MR 185 182 1 187 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 186 182 1 187 6 -17.432 -16.131 -11.928 -12.610 -12.627 -0.001
+ IL 187 187 5 187 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 188 188 6 188 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 52 ]
+ MP 189 188 6 193 6 -12.101 -12.040 -0.030 -10.817 -11.097 -5.733 -6.042 -5.966 -6.292 0.490 -4.985 -6.803 2.313 -6.238 -6.447 2.197 -2.045 -3.144 2.130 -6.059 -2.718 -4.898
+ ML 190 188 6 193 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 191 188 6 193 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 192 188 6 193 6 -17.443 -16.141 -11.938 -12.620 -12.638 -0.001
+ IL 193 193 5 193 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 194 194 6 194 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 53 ]
+ MP 195 194 6 199 6 -12.074 -12.013 -0.441 -10.790 -11.070 -1.934 -5.425 -5.569 -5.574 0.769 -4.218 -2.004 2.789 -5.599 -5.868 1.249 -2.214 -0.790 1.274 -5.392 0.395 -4.246
+ ML 196 194 6 199 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 197 194 6 199 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 198 194 6 199 6 -17.454 -16.152 -11.949 -12.631 -12.648 -0.001
+ IL 199 199 5 199 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 200 200 6 200 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 54 ]
+ MP 201 200 6 205 6 -11.637 -11.576 -0.549 -10.353 -10.633 -1.669 -1.416 -5.275 -5.261 0.796 -1.392 -5.837 2.611 -5.293 -5.525 1.880 -5.519 -2.505 1.348 -5.069 -0.390 -3.937
+ ML 202 200 6 205 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 203 200 6 205 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 204 200 6 205 6 -17.594 -16.292 -12.089 -12.771 -12.789 -0.001
+ IL 205 205 5 205 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 206 206 6 206 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 55 ]
+ MP 207 206 6 211 6 -11.094 -11.033 -0.509 -9.809 -10.089 -1.763 -4.464 -3.752 -5.033 1.425 -0.401 -5.071 0.164 -4.728 -4.595 2.715 -4.442 1.415 -1.117 -0.314 -0.807 -3.966
+ ML 208 206 6 211 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 209 206 6 211 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 210 206 6 211 6 -17.708 -16.406 -12.203 -12.885 -12.903 -0.001
+ IL 211 211 5 211 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 212 212 6 212 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 56 ]
+ MP 213 212 6 217 6 -10.592 -10.531 -0.786 -9.307 -9.587 -1.266 -4.520 -3.607 -5.395 1.492 -5.866 -5.313 1.117 -4.970 -0.766 2.781 -4.391 -1.218 -0.687 -4.663 1.092 -3.899
+ ML 214 212 6 217 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 215 212 6 217 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 216 212 6 217 6 -17.776 -16.475 -12.272 -12.954 -12.971 -0.001
+ IL 217 217 5 217 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 218 218 6 218 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 57 ]
+ MP 219 218 6 223 4 -8.365 -0.471 -1.902 -6.986 -3.687 -4.181 -4.019 0.126 -2.770 -4.697 2.468 -4.147 -4.181 -0.010 -4.393 -1.619 2.199 -3.893 0.852 0.077
+ ML 220 218 6 223 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 221 218 6 223 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 222 218 6 223 4 -13.264 -4.552 -2.325 -0.400
+ IL 223 223 5 223 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 224 224 6 224 3 -4.956 -0.055 -7.657 0.000 0.000 0.000 0.000
+ [ MATL 58 ]
+ ML 225 224 6 227 3 -12.130 -0.001 -10.784 -1.552 -1.933 0.893 0.623
+ D 226 224 6 227 3 -14.977 -10.490 -0.001
+ IL 227 227 3 227 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 59 ]
+ ML 228 227 3 230 3 -12.130 -0.001 -10.784 -0.009 -0.075 -3.569 0.980
+ D 229 227 3 230 3 -14.977 -10.490 -0.001
+ IL 230 230 3 230 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 60 ]
+ ML 231 230 3 233 3 -4.478 -0.309 -2.759 1.306 -0.395 -2.943 -0.652
+ D 232 230 3 233 3 -14.977 -10.490 -0.001
+ IL 233 233 3 233 3 -2.958 -0.232 -5.659 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 234 233 3 236 2 * 0.000 0.963 -0.810 -0.300 -0.582
+ D 235 233 3 236 2 * 0.000
+ IL 236 236 3 236 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 62 ]
+ E 237 236 3 -1 0
+ [ BEGR 63 ]
+ S 238 181 1 239 3 -14.012 -0.134 -3.491
+ IL 239 239 2 239 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 64 ]
+ ML 240 239 2 242 3 -0.527 -1.710 -12.532 -1.166 -3.477 1.564 -0.980
+ D 241 239 2 242 3 -11.963 -0.018 -6.355
+ IL 242 242 3 242 3 -8.059 -0.006 -10.759 0.000 0.000 0.000 0.000
+ [ MATL 65 ]
+ ML 243 242 3 245 5 -12.948 -0.001 -12.763 -12.975 -13.867 -4.810 1.566 -3.513 -0.127
+ D 244 242 3 245 5 -4.959 -0.803 -4.221 -2.596 -2.508
+ IL 245 245 3 245 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 66 ]
+ MP 246 245 3 250 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -7.688 -6.681 -8.645 1.666 -9.459 -8.489 0.368 -8.152 -7.805 2.786 -7.490 2.090 -2.079 -7.846 -5.378 -3.561
+ ML 247 245 3 250 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 248 245 3 250 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 249 245 3 250 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 250 250 5 250 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 251 251 6 251 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 67 ]
+ MP 252 251 6 256 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -7.164 -3.930 -7.425 1.355 -6.165 -3.575 2.544 -7.386 -7.552 1.564 -7.449 0.499 1.030 -7.159 -0.127 -3.582
+ ML 253 251 6 256 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 254 251 6 256 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 255 251 6 256 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 256 256 5 256 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 257 257 6 257 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 68 ]
+ MP 258 257 6 262 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -7.629 -3.082 -8.585 1.776 -9.406 -8.429 1.804 -4.067 -7.746 2.629 -7.432 -0.249 0.686 -7.786 -2.088 -6.973
+ ML 259 257 6 262 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 260 257 6 262 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 261 257 6 262 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 262 262 5 262 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 263 263 6 263 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 69 ]
+ MP 264 263 6 268 6 -13.903 -13.842 -0.001 -12.619 -12.899 -13.294 -11.641 -3.835 -12.487 1.001 -11.420 -7.137 -3.552 -10.940 -8.101 3.781 -7.570 -4.706 -5.223 -7.252 -7.438 -9.487
+ ML 265 263 6 268 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 266 263 6 268 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 267 263 6 268 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 268 268 5 268 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 269 269 6 269 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 70 ]
+ MP 270 269 6 274 4 -13.101 -13.308 -0.001 -11.722 -11.596 -6.880 -12.474 -2.533 -11.371 -7.068 -5.211 -10.924 -8.038 3.960 -4.139 -3.060 -5.172 -7.185 -7.405 -9.447
+ ML 271 269 6 274 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 272 269 6 274 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 273 269 6 274 4 -4.568 -4.250 -2.265 -0.520
+ IL 274 274 5 274 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 275 275 6 275 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 276 275 6 278 3 -14.012 -0.002 -9.561 -8.939 -9.084 -9.393 1.998
+ D 277 275 6 278 3 -6.174 -1.687 -0.566
+ IL 278 278 3 278 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 72 ]
+ ML 279 278 3 281 3 -14.010 -0.000 -12.664 -8.937 -9.081 -9.390 1.998
+ D 280 278 3 281 3 -6.953 -0.742 -1.344
+ IL 281 281 3 281 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 73 ]
+ ML 282 281 3 284 3 -14.012 -0.000 -12.666 -9.158 1.998 -9.627 -9.349
+ D 283 281 3 284 3 -6.174 -1.687 -0.566
+ IL 284 284 3 284 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 74 ]
+ ML 285 284 3 287 3 -14.012 -0.000 -12.666 0.321 -8.969 1.457 -8.325
+ D 286 284 3 287 3 -6.174 -1.687 -0.566
+ IL 287 287 3 287 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 75 ]
+ ML 288 287 3 290 3 -14.012 -0.002 -9.561 1.997 -8.633 -8.089 -8.568
+ D 289 287 3 290 3 -6.174 -1.687 -0.566
+ IL 290 290 3 290 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 76 ]
+ ML 291 290 3 293 3 -14.010 -0.013 -6.815 0.625 -2.188 0.582 -0.432
+ D 292 290 3 293 3 -6.953 -0.742 -1.344
+ IL 293 293 3 293 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 77 ]
+ ML 294 293 3 296 2 * 0.000 -5.368 -0.963 -7.616 1.790
+ D 295 293 3 296 2 * 0.000
+ IL 296 296 3 296 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 78 ]
+ E 297 296 3 -1 0
+//
diff --git a/TRNAinf-bact-ns-c.cm b/TRNAinf-bact-ns-c.cm
new file mode 100644
index 0000000..415ea5f
--- /dev/null
+++ b/TRNAinf-bact-ns-c.cm
@@ -0,0 +1,416 @@
+INFERNAL-1 [1.0]
+NAME tRNA1415G-bact-nostruct
+STATES 283
+NODES 95
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 249
+EFFNSEQ 249.000
+CLEN 93
+BCOM cmbuild --rf --enone -F TRNAinf-bact-ns-nc.cm trna1415G-bact-ns.sto
+BDATE Sun Feb 8 19:01:31 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/TRNAinf-bact-ns.hfile --exp-sfile cmcalibrate_files/TRNAinf-bact-ns.sfile --exp-qqfile cmcalibrate_files/TRNAinf-bact-ns.qqfile --exp-ffile cmcalibrate_files/TRNAinf-bact-ns.ffile --fil-dfile cmcalibrate_files/TRNAinf-bact-ns.dfile -s 208 TRNAinf-bact-ns-c.cm
+CDATE Sun Feb 8 20:09:03 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.70264 -10.82259 -1.38740 1500000 851757 0.001321
+E-GC 0 0.28941 -34.21287 -19.62910 1500000 25529 0.014689
+E-LI 0 0.67728 -10.43186 -0.86376 1500000 733642 0.001533
+E-GI 0 0.29780 -31.78663 -17.63305 1500000 25383 0.014774
+E-LV 0 0.73241 -3.92074 2.34835 15000000 110978 0.010137
+E-GV 0 0.33174 -29.02309 -11.88229 15000000 110546 0.003392
+E-LF 0 0.69034 -1.32503 5.32787 15000000 111111 0.010125
+E-GF 0 0.36826 -24.79156 -9.35237 15000000 110472 0.003395
+FT-LC 35 0.99500 10000 1500000 0
+ 6755.17 6755.17 6589.94 6243.09 5097.19 5097.19 4121.57 4034.91 3448.66 2502.68 2486.75 2348.89 2318.76 2123.49 1842.51 1728.92 1523.79 1407.62 1221.04 1108.92 998.952 899.061 808.255 786.504 786.504 785.304 16.4974 15.8164 7.60229 6.67111 4.89523 4.3201 2.60093 2.07945 1.74401
+ 5628.99 4954.11 4027.38 3613.71 3045.09 2574.82 2273.95 2046.02 1789.56 1395.78 1223.35 1087.14 947.594 784.286 454.282 405.935 363.987 315.519 283.697 250.72 223.883 199.504 173.536 154.214 131.029 130.366 75.478 67.3522 55.5144 42.7049 35.4429 25.3934 17.9935 16.1119 13.0366
+FT-LI 37 0.99500 10000 1500000 0
+ 8453.39 6879.88 5537.3 5373.85 4651.59 4430.14 3979 3940.88 3379 2957.99 2659.64 2485.79 2426.45 1870.07 1581.5 1505.05 1435.57 1342.59 1281.56 1173.99 1145.21 1135.67 748.061 721.295 657.544 653.259 24.8213 17.4623 15.6529 9.27504 8.26042 6.04424 5.52297 4.43905 3.59112 2.76614 2.34579
+ 5628.99 4954.11 4027.38 3613.71 3045.09 2574.82 2273.95 2046.02 1789.56 1395.78 1223.35 1087.14 947.594 784.286 454.282 405.935 363.987 315.519 283.697 250.72 223.883 199.504 173.536 154.214 131.029 130.366 115.002 85.4056 72.3656 47.8901 38.3449 28.8327 25.3934 18.459 15.5223 13.5767 13.0366
+FT-GC 1 0.99500 10000 1500000 1
+ 0.0401648
+ 10.6271
+FT-GI 1 0.99500 10000 1500000 1
+ 0.0373644
+ 10.6271
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -4.210 -13.308 -0.097 -6.552
+ IL 1 1 2 1 4 -5.839 -6.522 -0.044 -9.007 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 1 ]
+ ML 3 2 3 5 3 -13.997 -0.000 -12.651 -2.433 -1.567 1.688 -1.970
+ D 4 2 3 5 3 -9.048 -0.143 -3.439
+ IL 5 5 3 5 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 2 ]
+ ML 6 5 3 8 3 -14.012 -0.000 -12.666 -2.883 0.487 1.147 -2.015
+ D 7 5 3 8 3 -6.174 -1.687 -0.566
+ IL 8 8 3 8 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 3 ]
+ ML 9 8 3 11 3 -14.012 -0.000 -12.666 -0.516 0.434 0.637 -1.343
+ D 10 8 3 11 3 -6.174 -1.687 -0.566
+ IL 11 11 3 11 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 4 ]
+ ML 12 11 3 14 3 -14.012 -0.000 -12.666 -1.720 0.238 0.982 -0.885
+ D 13 11 3 14 3 -6.174 -1.687 -0.566
+ IL 14 14 3 14 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 5 ]
+ ML 15 14 3 17 3 -14.012 -0.000 -12.666 -0.052 0.365 0.554 -1.840
+ D 16 14 3 17 3 -6.174 -1.687 -0.566
+ IL 17 17 3 17 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 6 ]
+ ML 18 17 3 20 3 -8.201 -0.005 -12.666 -0.230 -0.137 0.012 0.298
+ D 19 17 3 20 3 -6.174 -1.687 -0.566
+ IL 20 20 3 20 3 -2.039 -0.476 -4.739 0.000 0.000 0.000 0.000
+ [ MATL 7 ]
+ ML 21 20 3 23 3 -14.012 -0.005 -8.162 0.201 -2.565 0.863 -0.212
+ D 22 20 3 23 3 -6.174 -1.687 -0.566
+ IL 23 23 3 23 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 8 ]
+ ML 24 23 3 26 3 -14.007 -0.005 -8.118 -7.763 -7.499 -4.305 1.978
+ D 25 23 3 26 3 -7.779 -0.371 -2.171
+ IL 26 26 3 26 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 9 ]
+ ML 27 26 3 29 3 -14.007 -0.000 -12.661 1.348 -2.468 0.202 -3.024
+ D 28 26 3 29 3 -7.807 -0.363 -2.198
+ IL 29 29 3 29 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 10 ]
+ ML 30 29 3 32 3 -14.012 -0.000 -12.666 -4.334 -1.630 1.833 -3.960
+ D 31 29 3 32 3 -6.174 -1.687 -0.566
+ IL 32 32 3 32 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 11 ]
+ ML 33 32 3 35 3 -14.012 -0.000 -12.666 -2.529 1.501 -3.830 -0.112
+ D 34 32 3 35 3 -6.174 -1.687 -0.566
+ IL 35 35 3 35 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 12 ]
+ ML 36 35 3 38 3 -14.012 -0.000 -12.666 -2.627 -0.551 0.197 1.007
+ D 37 35 3 38 3 -6.174 -1.687 -0.566
+ IL 38 38 3 38 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 13 ]
+ ML 39 38 3 41 3 -14.012 -0.000 -12.666 -0.336 1.105 -0.569 -1.387
+ D 40 38 3 41 3 -6.174 -1.687 -0.566
+ IL 41 41 3 41 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 14 ]
+ ML 42 41 3 44 3 -14.012 -0.000 -12.666 1.969 -5.517 -5.623 -4.509
+ D 43 41 3 44 3 -6.174 -1.687 -0.566
+ IL 44 44 3 44 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 15 ]
+ ML 45 44 3 47 3 -14.012 -0.028 -5.681 -0.099 -3.932 1.558 -4.175
+ D 46 44 3 47 3 -6.174 -1.687 -0.566
+ IL 47 47 3 47 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 16 ]
+ ML 48 47 3 50 3 -13.984 -0.616 -1.525 -2.120 0.318 -3.020 1.263
+ D 49 47 3 50 3 -9.856 -5.369 -0.037
+ IL 50 50 3 50 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 17 ]
+ ML 51 50 3 53 3 -2.893 -0.209 -12.022 -1.849 -0.318 -6.368 1.540
+ D 52 50 3 53 3 -13.963 -0.005 -8.354
+ IL 53 53 3 53 3 -3.488 -0.141 -8.069 0.000 0.000 0.000 0.000
+ [ MATL 18 ]
+ ML 54 53 3 56 3 -14.012 -0.000 -12.666 -7.659 -9.041 1.985 -4.890
+ D 55 53 3 56 3 -6.174 -1.687 -0.566
+ IL 56 56 3 56 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 19 ]
+ ML 57 56 3 59 3 -14.012 -0.000 -12.666 -9.488 -10.488 1.999 -10.286
+ D 58 56 3 59 3 -6.174 -1.687 -0.566
+ IL 59 59 3 59 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 20 ]
+ ML 60 59 3 62 3 -0.920 -1.085 -12.666 -1.932 -0.228 -2.234 1.418
+ D 61 59 3 62 3 -6.174 -1.687 -0.566
+ IL 62 62 3 62 3 -2.288 -0.332 -10.826 0.000 0.000 0.000 0.000
+ [ MATL 21 ]
+ ML 63 62 3 65 3 -14.012 -0.000 -12.666 1.778 -6.312 -0.996 -4.154
+ D 64 62 3 65 3 -6.174 -1.687 -0.566
+ IL 65 65 3 65 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 66 65 3 68 3 -14.012 -0.000 -12.666 0.495 -7.283 1.268 -2.501
+ D 67 65 3 68 3 -6.174 -1.687 -0.566
+ IL 68 68 3 68 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 69 68 3 71 3 -14.012 -0.000 -12.666 1.008 0.156 -0.487 -2.631
+ D 70 68 3 71 3 -6.174 -1.687 -0.566
+ IL 71 71 3 71 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 72 71 3 74 3 -14.012 -0.000 -12.666 -0.212 -4.233 1.545 -2.604
+ D 73 71 3 74 3 -6.174 -1.687 -0.566
+ IL 74 74 3 74 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 75 74 3 77 3 -14.012 -0.017 -6.409 -3.990 1.768 -1.650 -2.228
+ D 76 74 3 77 3 -6.174 -1.687 -0.566
+ IL 77 77 3 77 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 78 77 3 80 3 -13.995 -0.000 -12.649 1.154 -3.089 0.613 -2.969
+ D 79 77 3 80 3 -9.193 -0.128 -3.584
+ IL 80 80 3 80 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 27 ]
+ ML 81 80 3 83 3 -14.012 -0.000 -12.666 -0.462 0.948 -0.818 -0.362
+ D 82 80 3 83 3 -6.174 -1.687 -0.566
+ IL 83 83 3 83 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 28 ]
+ ML 84 83 3 86 3 -14.012 -0.000 -12.666 -0.660 1.007 -1.254 -0.091
+ D 85 83 3 86 3 -6.174 -1.687 -0.566
+ IL 86 86 3 86 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 87 86 3 89 3 -14.012 -0.000 -12.666 -0.595 -0.363 0.514 0.180
+ D 88 86 3 89 3 -6.174 -1.687 -0.566
+ IL 89 89 3 89 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 30 ]
+ ML 90 89 3 92 3 -14.012 -0.000 -12.666 -3.824 -0.081 1.560 -4.819
+ D 91 89 3 92 3 -6.174 -1.687 -0.566
+ IL 92 92 3 92 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 31 ]
+ ML 93 92 3 95 3 -14.012 -0.000 -12.666 0.588 0.514 -0.671 -1.181
+ D 94 92 3 95 3 -6.174 -1.687 -0.566
+ IL 95 95 3 95 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 32 ]
+ ML 96 95 3 98 3 -14.012 -0.000 -12.666 -3.533 1.448 -7.551 0.238
+ D 97 95 3 98 3 -6.174 -1.687 -0.566
+ IL 98 98 3 98 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 33 ]
+ ML 99 98 3 101 3 -14.012 -0.000 -12.666 -8.939 -9.084 -9.393 1.998
+ D 100 98 3 101 3 -6.174 -1.687 -0.566
+ IL 101 101 3 101 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 34 ]
+ ML 102 101 3 104 3 -14.012 -0.000 -12.666 -2.883 -0.034 0.578 0.481
+ D 103 101 3 104 3 -6.174 -1.687 -0.566
+ IL 104 104 3 104 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 105 104 3 107 3 -14.012 -0.000 -12.666 0.183 -0.085 -0.221 0.089
+ D 106 104 3 107 3 -6.174 -1.687 -0.566
+ IL 107 107 3 107 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 108 107 3 110 3 -14.012 -0.000 -12.666 0.178 -0.228 -0.328 0.285
+ D 109 107 3 110 3 -6.174 -1.687 -0.566
+ IL 110 110 3 110 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 37 ]
+ ML 111 110 3 113 3 -14.012 -0.000 -12.666 1.722 -9.712 -0.516 -9.399
+ D 112 110 3 113 3 -6.174 -1.687 -0.566
+ IL 113 113 3 113 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 114 113 3 116 3 -14.012 -0.000 -12.666 1.516 -0.515 -5.325 -1.267
+ D 115 113 3 116 3 -6.174 -1.687 -0.566
+ IL 116 116 3 116 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 117 116 3 119 3 -14.012 -0.000 -12.666 -1.242 -0.648 0.530 0.581
+ D 118 116 3 119 3 -6.174 -1.687 -0.566
+ IL 119 119 3 119 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 120 119 3 122 3 -14.012 -0.000 -12.666 -7.294 1.520 -0.061 -2.575
+ D 121 119 3 122 3 -6.174 -1.687 -0.566
+ IL 122 122 3 122 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 41 ]
+ ML 123 122 3 125 3 -14.012 -0.000 -12.666 0.203 0.502 -0.368 -0.603
+ D 124 122 3 125 3 -6.174 -1.687 -0.566
+ IL 125 125 3 125 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 42 ]
+ ML 126 125 3 128 3 -14.012 -0.000 -12.666 -0.230 -1.753 1.041 -0.333
+ D 127 125 3 128 3 -6.174 -1.687 -0.566
+ IL 128 128 3 128 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 43 ]
+ ML 129 128 3 131 3 -14.012 -0.000 -12.666 -0.471 -1.613 0.970 -0.011
+ D 130 128 3 131 3 -6.174 -1.687 -0.566
+ IL 131 131 3 131 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 132 131 3 134 3 -14.012 -0.347 -2.226 0.255 -0.169 -0.179 0.048
+ D 133 131 3 134 3 -6.174 -1.687 -0.566
+ IL 134 134 3 134 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 45 ]
+ ML 135 134 3 137 3 -5.759 -4.024 -0.120 -0.282 -3.163 1.294 -0.705
+ D 136 134 3 137 3 -13.215 -0.008 -7.607
+ IL 137 137 3 137 3 -3.129 -0.204 -5.829 0.000 0.000 0.000 0.000
+ [ MATL 46 ]
+ ML 138 137 3 140 3 -12.158 -0.029 -5.654 -0.068 -1.916 1.228 -1.187
+ D 139 137 3 140 3 -14.967 -10.480 -0.001
+ IL 140 140 3 140 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 47 ]
+ ML 141 140 3 143 3 -12.130 -0.030 -5.608 -1.425 0.318 0.352 0.144
+ D 142 140 3 143 3 -14.977 -10.490 -0.001
+ IL 143 143 3 143 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 48 ]
+ ML 144 143 3 146 3 -12.101 -0.481 -1.820 -1.125 0.931 -0.271 -0.312
+ D 145 143 3 146 3 -14.988 -10.501 -0.001
+ IL 146 146 3 146 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 49 ]
+ ML 147 146 3 149 3 -11.622 -0.623 -1.513 -0.750 0.772 0.093 -0.664
+ D 148 146 3 149 3 -15.128 -10.641 -0.001
+ IL 149 149 3 149 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 50 ]
+ ML 150 149 3 152 3 -11.001 -0.615 -1.529 -0.778 -1.016 1.291 -1.072
+ D 151 149 3 152 3 -15.242 -10.755 -0.001
+ IL 152 152 3 152 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 51 ]
+ ML 153 152 3 155 3 -10.390 -1.083 -0.923 -0.617 -0.560 0.837 -0.179
+ D 154 152 3 155 3 -15.311 -10.824 -0.001
+ IL 155 155 3 155 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 52 ]
+ ML 156 155 3 158 3 -9.315 -0.008 -7.969 -1.416 0.193 -2.236 1.183
+ D 157 155 3 158 3 -15.376 -2.046 -0.400
+ IL 158 158 3 158 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 53 ]
+ ML 159 158 3 161 3 -12.130 -0.001 -10.784 -1.552 -1.933 0.893 0.623
+ D 160 158 3 161 3 -14.977 -10.490 -0.001
+ IL 161 161 3 161 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 54 ]
+ ML 162 161 3 164 3 -12.130 -0.001 -10.784 -0.009 -0.075 -3.569 0.980
+ D 163 161 3 164 3 -14.977 -10.490 -0.001
+ IL 164 164 3 164 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 55 ]
+ ML 165 164 3 167 3 -4.478 -0.309 -2.759 1.306 -0.395 -2.943 -0.652
+ D 166 164 3 167 3 -14.977 -10.490 -0.001
+ IL 167 167 3 167 3 -2.958 -0.232 -5.659 0.000 0.000 0.000 0.000
+ [ MATL 56 ]
+ ML 168 167 3 170 3 -1.768 -4.343 -0.606 0.963 -0.810 -0.300 -0.582
+ D 169 167 3 170 3 -15.054 -10.567 -0.001
+ IL 170 170 3 170 3 -4.956 -1.278 -0.848 0.000 0.000 0.000 0.000
+ [ MATL 57 ]
+ ML 171 170 3 173 3 -9.315 -0.008 -7.969 0.011 -2.096 1.092 -0.676
+ D 172 170 3 173 3 -15.376 -4.479 -0.066
+ IL 173 173 3 173 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 58 ]
+ ML 174 173 3 176 3 -10.390 -0.004 -9.044 -1.125 0.661 0.378 -0.598
+ D 175 173 3 176 3 -15.311 -4.409 -0.070
+ IL 176 176 3 176 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 59 ]
+ ML 177 176 3 179 3 -11.001 -0.002 -9.655 -1.259 0.839 -1.192 0.438
+ D 178 176 3 179 3 -15.242 -3.707 -0.115
+ IL 179 179 3 179 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 60 ]
+ ML 180 179 3 182 3 -11.622 -0.002 -10.276 -0.552 0.104 0.819 -1.061
+ D 181 179 3 182 3 -15.128 -3.421 -0.141
+ IL 182 182 3 182 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 183 182 3 185 3 -12.101 -0.001 -10.755 -1.133 -0.519 1.185 -0.806
+ D 184 182 3 185 3 -14.988 -6.958 -0.012
+ IL 185 185 3 185 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 62 ]
+ ML 186 185 3 188 3 -12.130 -0.001 -10.784 0.145 0.288 0.381 -1.430
+ D 187 185 3 188 3 -14.977 -10.490 -0.001
+ IL 188 188 3 188 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 63 ]
+ ML 189 188 3 191 3 -12.130 -0.573 -1.609 -1.703 0.654 -0.301 0.387
+ D 190 188 3 191 3 -14.977 -0.002 -9.369
+ IL 191 191 3 191 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 64 ]
+ ML 192 191 3 194 3 -0.527 -1.710 -12.532 -1.166 -3.477 1.564 -0.980
+ D 193 191 3 194 3 -11.963 -0.018 -6.355
+ IL 194 194 3 194 3 -8.059 -0.006 -10.759 0.000 0.000 0.000 0.000
+ [ MATL 65 ]
+ ML 195 194 3 197 3 -14.012 -0.000 -12.666 -4.810 1.566 -3.513 -0.127
+ D 196 194 3 197 3 -6.174 -1.687 -0.566
+ IL 197 197 3 197 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 66 ]
+ ML 198 197 3 200 3 -14.012 -0.000 -12.666 -0.392 -1.681 1.513 -3.788
+ D 199 197 3 200 3 -6.174 -1.687 -0.566
+ IL 200 200 3 200 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 67 ]
+ ML 201 200 3 203 3 -14.012 -0.000 -12.666 -0.577 0.585 0.144 -0.465
+ D 202 200 3 203 3 -6.174 -1.687 -0.566
+ IL 203 203 3 203 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 68 ]
+ ML 204 203 3 206 3 -14.012 -0.000 -12.666 -0.179 -0.131 0.789 -1.071
+ D 205 203 3 206 3 -6.174 -1.687 -0.566
+ IL 206 206 3 206 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 69 ]
+ ML 207 206 3 209 3 -14.012 -0.000 -12.666 -0.865 -5.525 1.774 -6.634
+ D 208 206 3 209 3 -6.174 -1.687 -0.566
+ IL 209 209 3 209 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 70 ]
+ ML 210 209 3 212 3 -14.012 -0.000 -12.666 -4.940 -9.009 1.986 -8.371
+ D 211 209 3 212 3 -6.174 -1.687 -0.566
+ IL 212 212 3 212 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 213 212 3 215 3 -14.012 -0.002 -9.561 -8.939 -9.084 -9.393 1.998
+ D 214 212 3 215 3 -6.174 -1.687 -0.566
+ IL 215 215 3 215 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 72 ]
+ ML 216 215 3 218 3 -14.010 -0.000 -12.664 -8.937 -9.081 -9.390 1.998
+ D 217 215 3 218 3 -6.953 -0.742 -1.344
+ IL 218 218 3 218 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 73 ]
+ ML 219 218 3 221 3 -14.012 -0.000 -12.666 -9.158 1.998 -9.627 -9.349
+ D 220 218 3 221 3 -6.174 -1.687 -0.566
+ IL 221 221 3 221 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 74 ]
+ ML 222 221 3 224 3 -14.012 -0.000 -12.666 0.321 -8.969 1.457 -8.325
+ D 223 221 3 224 3 -6.174 -1.687 -0.566
+ IL 224 224 3 224 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 75 ]
+ ML 225 224 3 227 3 -14.012 -0.002 -9.561 1.997 -8.633 -8.089 -8.568
+ D 226 224 3 227 3 -6.174 -1.687 -0.566
+ IL 227 227 3 227 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 76 ]
+ ML 228 227 3 230 3 -14.010 -0.013 -6.815 0.625 -2.188 0.582 -0.432
+ D 229 227 3 230 3 -6.953 -0.742 -1.344
+ IL 230 230 3 230 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 77 ]
+ ML 231 230 3 233 3 -13.999 -0.000 -12.653 -5.368 -0.963 -7.616 1.790
+ D 232 230 3 233 3 -8.837 -0.166 -3.228
+ IL 233 233 3 233 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 78 ]
+ ML 234 233 3 236 3 -14.012 -0.000 -12.666 -6.839 1.969 -5.804 -4.065
+ D 235 233 3 236 3 -6.174 -1.687 -0.566
+ IL 236 236 3 236 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 79 ]
+ ML 237 236 3 239 3 -14.012 -0.000 -12.666 -6.827 1.786 -5.646 -0.936
+ D 238 236 3 239 3 -6.174 -1.687 -0.566
+ IL 239 239 3 239 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 80 ]
+ ML 240 239 3 242 3 -14.012 -0.000 -12.666 -1.244 0.637 -0.073 0.101
+ D 241 239 3 242 3 -6.174 -1.687 -0.566
+ IL 242 242 3 242 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 81 ]
+ ML 243 242 3 245 3 -14.012 -0.000 -12.666 -1.057 -0.352 0.768 0.047
+ D 244 242 3 245 3 -6.174 -1.687 -0.566
+ IL 245 245 3 245 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 82 ]
+ ML 246 245 3 248 3 -14.012 -0.000 -12.666 -3.868 0.774 -1.607 0.921
+ D 247 245 3 248 3 -6.174 -1.687 -0.566
+ IL 248 248 3 248 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 83 ]
+ ML 249 248 3 251 3 -14.012 -0.000 -12.666 -0.210 0.752 -2.586 0.362
+ D 250 248 3 251 3 -6.174 -1.687 -0.566
+ IL 251 251 3 251 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 84 ]
+ ML 252 251 3 254 3 -14.012 -0.000 -12.666 0.041 0.034 0.108 -0.202
+ D 253 251 3 254 3 -6.174 -1.687 -0.566
+ IL 254 254 3 254 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 85 ]
+ ML 255 254 3 257 3 -14.012 -0.000 -12.666 -2.431 0.491 0.458 0.050
+ D 256 254 3 257 3 -6.174 -1.687 -0.566
+ IL 257 257 3 257 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 86 ]
+ ML 258 257 3 260 3 -14.012 -0.000 -12.666 -1.076 0.939 0.318 -1.466
+ D 259 257 3 260 3 -6.174 -1.687 -0.566
+ IL 260 260 3 260 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 87 ]
+ ML 261 260 3 263 3 -14.012 -0.000 -12.666 -1.376 0.490 0.441 -0.230
+ D 262 260 3 263 3 -6.174 -1.687 -0.566
+ IL 263 263 3 263 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 88 ]
+ ML 264 263 3 266 3 -14.012 -0.000 -12.666 -2.471 1.051 0.590 -2.043
+ D 265 263 3 266 3 -6.174 -1.687 -0.566
+ IL 266 266 3 266 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 89 ]
+ ML 267 266 3 269 3 -6.360 -0.037 -6.213 -1.614 1.560 -1.917 -1.121
+ D 268 266 3 269 3 -6.174 -1.687 -0.566
+ IL 269 269 3 269 3 -2.958 -0.232 -5.659 0.000 0.000 0.000 0.000
+ [ MATL 90 ]
+ ML 270 269 3 272 3 -13.993 -0.264 -2.580 1.183 -2.858 0.062 -0.868
+ D 271 269 3 272 3 -9.368 -4.881 -0.052
+ IL 272 272 3 272 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 91 ]
+ ML 273 272 3 275 3 -13.729 -0.000 -12.383 -8.745 1.998 -9.265 -8.847
+ D 274 272 3 275 3 -12.955 -8.468 -0.004
+ IL 275 275 3 275 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 92 ]
+ ML 276 275 3 278 3 -13.729 -0.000 -12.383 -8.745 1.998 -9.265 -8.847
+ D 277 275 3 278 3 -12.955 -8.468 -0.004
+ IL 278 278 3 278 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 93 ]
+ ML 279 278 3 281 2 * 0.000 1.996 -8.236 -7.705 -8.011
+ D 280 278 3 281 2 * 0.000
+ IL 281 281 3 281 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 94 ]
+ E 282 281 3 -1 0
+//
diff --git a/TRNAinf-c.cm b/TRNAinf-c.cm
new file mode 100644
index 0000000..650a664
--- /dev/null
+++ b/TRNAinf-c.cm
@@ -0,0 +1,403 @@
+INFERNAL-1 [1.0]
+NAME tRNA1415G
+STATES 289
+NODES 76
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 1415
+EFFNSEQ 1415.000
+CLEN 90
+BCOM cmbuild --rf --enone TRNAinf.cm trna1415G.sto
+BDATE Sun Feb 8 16:42:04 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/TRNAinf.hfile --exp-sfile cmcalibrate_files/TRNAinf.sfile --exp-qqfile cmcalibrate_files/TRNAinf.qqfile --exp-ffile cmcalibrate_files/TRNAinf.ffile --fil-dfile cmcalibrate_files/TRNAinf.dfile -s 208 TRNAinf-c.cm
+CDATE Sun Feb 8 20:33:25 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.81122 -5.88321 1.22345 1500000 358822 0.003135
+E-GC 0 0.33246 -23.80877 -11.44044 1500000 22900 0.016376
+E-LI 0 0.70671 -5.92548 2.03289 1500000 311704 0.003609
+E-GI 0 0.33394 -22.04403 -9.70721 1500000 23079 0.016249
+E-LV 0 0.48454 -2.90587 4.34254 49520000 124497 0.029832
+E-GV 0 0.46613 -4.01423 5.85082 49520000 122964 0.010068
+E-LF 0 0.56706 1.45970 7.65260 49520000 124445 0.029845
+E-GF 0 0.47996 -1.92556 7.65678 49520000 123054 0.010061
+FT-LC 44 0.99500 10000 1500000 0
+ 5.57553e-07 2.16687e-07 9.52295e-08 6.87971e-08 5.62574e-08 3.03739e-08 1.62142e-08 8.43269e-09 4.94182e-09 2.50475e-09 1.79964e-09 1.42675e-09 9.96612e-10 6.81506e-10 3.97576e-10 3.22726e-10 2.59854e-10 1.68466e-10 7.88383e-11 6.46629e-11 4.16314e-11 2.70369e-11 2.35029e-11 1.63449e-11 1.52098e-11 1.12244e-11 7.31163e-12 7.08743e-12 5.09621e-12 3.35466e-12 2.82909e-12 2.16847e-12 1.73177e-12 1.73143e-12 1.40412e-12 1.2231e-12 1.07635e-12 6.44585e-13 5.14461e-13 4.07215e-13 2.46 [...]
+ 1295.06 1146.42 1029.32 880.198 729.98 652.453 581.179 523.002 453.874 400.641 359.72 320.788 287.696 254.674 215.934 190.5 169.786 151.84 136.64 122.129 109.406 97.953 85.9756 77.1065 68.5667 61.2846 52.8836 47.2671 42.0798 34.8192 30.718 26.9313 23.935 21.1517 18.4395 15.8128 14.0694 12.6467 11.2652 10.1486 7.40874 4.12192 1.53321 1.01486
+FT-LI 46 0.99500 10000 1500000 0
+ 6.89922e-06 3.06551e-06 1.57661e-06 1.49394e-06 6.04001e-07 4.45103e-07 3.26106e-07 2.32644e-07 1.27765e-07 7.47124e-08 5.71024e-08 5.43605e-08 3.49974e-08 2.45767e-08 1.51903e-08 9.20428e-09 8.18388e-09 7.08352e-09 4.38e-09 3.50359e-09 2.08868e-09 1.80038e-09 1.66966e-09 1.08623e-09 9.40417e-10 6.827e-10 5.77718e-10 5.19002e-10 3.53504e-10 2.6564e-10 2.31906e-10 2.0578e-10 1.64723e-10 1.63555e-10 1.49853e-10 1.33499e-10 1.02591e-10 7.52308e-11 5.35186e-11 4.66752e-11 8.5792e [...]
+ 1295.06 1146.42 1029.32 880.198 729.98 652.453 581.179 523.002 453.874 400.641 359.72 320.788 287.696 254.674 215.934 190.5 169.786 151.84 136.64 122.129 109.406 97.953 85.9756 77.1065 68.5667 61.2846 52.8836 47.2671 42.0798 34.8192 30.718 27.3779 24.4148 21.1517 18.4395 15.8038 14.0694 12.6467 11.2652 10.1486 7.40874 4.12192 1.53321 1.35109 [...]
+FT-GC 43 0.99500 10000 1500000 0
+ 0.00212796 0.00142322 0.000817938 0.000580356 0.00051241 0.000356634 0.000276589 0.000228027 0.00016251 0.000141133 0.000135338 0.000126419 0.000112685 0.000100657 8.43962e-05 7.21917e-05 6.68068e-05 6.34907e-05 5.27774e-05 3.64472e-05 3.35322e-05 2.05204e-05 1.86393e-05 1.79424e-05 1.61423e-05 1.42128e-05 1.06091e-05 9.80572e-06 9.07388e-06 7.43298e-06 7.25012e-06 6.6924e-06 5.9947e-06 5.67473e-06 5.34725e-06 5.01684e-06 4.21121e-06 3.78684e-06 3.61696e-06 3.12791e-06 6.29451e- [...]
+ 1343.7 1191.19 1052.96 928.984 832.29 744.231 628.242 540.351 470.14 397.822 344.97 300.579 269.422 239.073 214.292 187.885 167.845 147.374 129.337 111.35 99.9514 79.6135 70.1724 62.8986 55.4929 49.1711 42.6181 37.6363 33.8649 29.3658 25.1124 22.0708 19.5283 17.5546 15.5547 13.5271 11.8545 10.2895 8.91819 7.84071 2.7162 1.41003 0.784071
+FT-GI 43 0.99500 10000 1500000 0
+ 0.00252739 0.00166999 0.00117539 0.000705901 0.000608685 0.0004661 0.000396784 0.000266913 0.000232868 0.000213123 0.00020136 0.000176415 0.000154849 0.000124641 0.000113922 9.76335e-05 8.7818e-05 8.03046e-05 5.66026e-05 5.31501e-05 4.0909e-05 2.82436e-05 2.59482e-05 2.34735e-05 2.21661e-05 1.80153e-05 1.44263e-05 1.3675e-05 1.23961e-05 1.06437e-05 9.5988e-06 9.20984e-06 8.33912e-06 8.05843e-06 7.57917e-06 6.70309e-06 5.78847e-06 5.21944e-06 4.93228e-06 4.56416e-06 7.25273e-08 [...]
+ 1343.7 1191.19 1052.96 928.984 832.29 744.231 628.242 540.351 470.14 397.822 344.97 300.579 269.422 239.073 214.292 187.885 167.845 147.374 129.337 111.35 99.9514 79.6135 70.1724 62.8986 55.4929 49.1711 42.6181 37.6363 33.8649 29.3658 25.1124 22.0708 19.5283 17.5546 15.5547 13.5271 11.657 10.2895 8.91819 7.84071 2.7162 1.41003 0.784071
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -5.648 -2.579 -0.319 -6.501
+ IL 1 1 2 1 4 -7.563 -1.162 -0.883 -7.444 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -0.590 -1.575 -13.397 0.000 0.000 0.000 0.000
+ [ MATR 1 ]
+ MR 3 2 3 5 5 -8.975 -0.004 -15.243 -10.019 -16.346 1.100 -2.060 -0.143 -0.494
+ D 4 2 3 5 5 -9.586 -0.666 -7.212 -1.507 -6.638
+ IR 5 5 3 5 5 -3.882 -0.160 -7.394 -5.561 -6.667 0.000 0.000 0.000 0.000
+ [ MATP 2 ]
+ MP 6 5 3 10 6 -16.368 -16.308 -0.000 -15.084 -15.364 -15.759 -6.525 -3.792 -3.521 1.443 -3.625 -4.783 0.563 -6.319 -9.800 3.068 -7.050 0.583 0.501 -9.830 -6.513 -2.432
+ ML 7 5 3 10 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 8 5 3 10 6 -10.281 -9.010 -0.103 -8.988 -4.122 -7.202 -1.923 -0.767 -2.731 1.584
+ D 9 5 3 10 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 10 10 5 10 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 11 11 6 11 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 3 ]
+ MP 12 11 6 16 6 -16.375 -16.315 -0.000 -15.091 -15.371 -15.766 -9.524 -9.538 -9.735 1.448 -4.029 -5.545 2.274 -4.561 -5.315 2.386 -5.710 -0.523 1.085 -7.201 -2.529 -4.652
+ ML 13 11 6 16 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 14 11 6 16 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 15 11 6 16 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 16 16 5 16 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 17 17 6 17 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 4 ]
+ MP 18 17 6 22 6 -16.375 -16.315 -0.000 -15.091 -15.371 -15.766 -4.541 -5.056 -5.214 1.547 -4.251 -5.755 2.045 -4.937 -9.891 2.122 -4.743 -0.609 1.740 -6.039 -1.771 -4.282
+ ML 19 17 6 22 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 20 17 6 22 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 21 17 6 22 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 22 22 5 22 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 23 23 6 23 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 5 ]
+ MP 24 23 6 28 6 -9.206 -16.315 -0.003 -15.091 -10.765 -15.766 -3.151 -4.461 -6.395 1.752 -3.365 -4.465 1.711 -5.161 -6.037 2.234 -5.802 -0.546 1.499 -9.381 -0.431 -5.277
+ ML 25 23 6 28 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 26 23 6 28 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 27 23 6 28 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 28 28 5 28 6 -4.405 -4.668 -0.177 -6.323 -7.099 -6.759 0.000 0.000 0.000 0.000
+ IR 29 29 6 29 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 6 ]
+ MP 30 29 6 34 6 -16.375 -16.314 -0.000 -15.090 -15.370 -15.765 -4.149 -3.448 -5.046 2.230 -3.502 -5.433 1.788 -4.536 -5.589 1.709 -5.018 -0.348 1.398 -7.202 -0.564 -3.383
+ ML 31 29 6 34 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 32 29 6 34 6 -7.974 -6.703 -0.602 -6.681 -1.815 -4.895 -0.178 0.869 -1.029 -0.324
+ D 33 29 6 34 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 34 34 5 34 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 35 35 6 35 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 7 ]
+ MP 36 35 6 40 6 -10.854 -16.315 -0.003 -9.744 -15.371 -15.766 -5.207 -4.740 -5.197 1.814 -3.776 -5.987 1.514 -4.949 -9.895 1.580 -9.857 -1.028 2.158 -4.964 0.081 -1.393
+ ML 37 35 6 40 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 38 35 6 40 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 39 35 6 40 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 40 40 5 40 6 -3.427 -3.690 -0.373 -5.345 -6.121 -5.782 0.000 0.000 0.000 0.000
+ IR 41 41 6 41 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 8 ]
+ MP 42 41 6 46 4 -15.599 -7.747 -0.011 -8.592 -10.069 -5.487 -11.029 2.479 -11.887 -10.869 -0.898 -10.539 -6.032 2.548 -9.870 -0.551 1.705 -10.226 -5.615 -4.833
+ ML 43 41 6 46 4 -5.210 -5.393 -0.165 -4.122 -0.855 -1.359 -1.638 1.452
+ MR 44 41 6 46 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 45 41 6 46 4 -4.568 -4.250 -2.265 -0.520
+ IL 46 46 5 46 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 47 47 6 47 3 -3.769 -0.128 -6.469 0.000 0.000 0.000 0.000
+ [ MATL 9 ]
+ ML 48 47 6 50 3 -7.229 -0.022 -6.842 -2.035 -4.901 -2.973 1.846
+ D 49 47 6 50 3 -9.461 -0.106 -3.853
+ IL 50 50 3 50 3 -4.199 -0.094 -6.899 0.000 0.000 0.000 0.000
+ [ MATL 10 ]
+ ML 51 50 3 53 2 -6.781 -0.013 1.370 -2.907 0.244 -3.366
+ D 52 50 3 53 2 -9.934 -0.001
+ IL 53 53 3 53 2 -5.693 -0.028 0.000 0.000 0.000 0.000
+ [ BIF 11 ]
+ B 54 53 3 55 164
+ [ BEGL 12 ]
+ S 55 54 1 56 1 0.000
+ [ BIF 13 ]
+ B 56 55 1 57 107
+ [ BEGL 14 ]
+ S 57 56 1 58 4 -0.000 -14.504 -13.911 -14.551
+ [ MATP 15 ]
+ MP 58 57 1 62 6 -16.375 -16.315 -0.000 -15.091 -15.371 -15.766 -4.982 -5.279 -3.473 0.151 -5.638 -4.923 -0.527 -5.338 -4.119 3.473 -5.094 1.108 -0.938 -10.116 -4.101 -4.610
+ ML 59 57 1 62 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 60 57 1 62 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 61 57 1 62 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 62 62 5 62 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 63 63 6 63 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 16 ]
+ MP 64 63 6 68 6 -16.375 -16.315 -0.000 -15.091 -15.371 -15.766 -9.445 -4.818 -7.218 -1.008 -5.649 -10.166 3.101 -9.620 -9.900 -0.074 -6.604 -4.832 2.450 -3.763 -1.743 -5.491
+ ML 65 63 6 68 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 66 63 6 68 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 67 63 6 68 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 68 68 5 68 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 69 69 6 69 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 17 ]
+ MP 70 69 6 74 6 -16.375 -16.315 -0.000 -15.091 -15.371 -15.766 -3.216 -4.370 -9.589 0.965 -3.416 -6.636 1.533 -6.131 -4.906 1.423 -9.862 -3.559 2.957 -7.218 -1.772 -5.940
+ ML 71 69 6 74 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 72 69 6 74 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 73 69 6 74 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 74 74 5 74 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 75 75 6 75 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 18 ]
+ MP 76 75 6 80 4 -15.600 -15.807 -0.004 -8.390 0.578 -3.706 -2.865 -0.125 -2.517 -3.878 2.050 -5.093 1.038 -2.011 -3.551 -1.815 1.845 -3.332 0.894 -0.433
+ ML 77 75 6 80 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 78 75 6 80 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 79 75 6 80 4 -4.568 -4.250 -2.265 -0.520
+ IL 80 80 5 80 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 81 81 6 81 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 19 ]
+ ML 82 81 6 84 3 -16.505 -0.017 -6.438 1.873 -5.019 -3.121 -2.389
+ D 83 81 6 84 3 -9.649 -5.162 -0.043
+ IL 84 84 3 84 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 20 ]
+ ML 85 84 3 87 3 -16.489 -0.260 -2.602 0.760 -2.963 0.888 -1.611
+ D 86 84 3 87 3 -11.840 -7.353 -0.009
+ IL 87 87 3 87 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 21 ]
+ ML 88 87 3 90 3 -16.229 -1.139 -0.873 -0.871 -0.362 -2.505 1.321
+ D 89 87 3 90 3 -15.430 -10.943 -0.001
+ IL 90 90 3 90 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 91 90 3 93 3 -2.064 -0.410 -6.932 -1.344 0.043 -3.899 1.327
+ D 92 90 3 93 3 -17.254 -0.140 -3.439
+ IL 93 93 3 93 3 -4.644 -0.060 -10.489 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 94 93 3 96 3 -16.419 -0.000 -15.073 -1.181 -2.707 1.649 -1.886
+ D 95 93 3 96 3 -13.891 -9.404 -0.002
+ IL 96 96 3 96 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 97 96 3 99 3 -16.419 -0.319 -2.335 -1.565 -2.573 1.615 -1.218
+ D 98 96 3 99 3 -13.891 -9.404 -0.002
+ IL 99 99 3 99 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 100 99 3 102 3 -0.979 -1.031 -8.141 -1.478 -1.029 -2.625 1.580
+ D 101 99 3 102 3 -5.311 -0.057 -6.216
+ IL 102 102 3 102 3 -2.215 -0.364 -7.102 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 103 102 3 105 2 * 0.000 1.761 -3.648 -1.627 -2.270
+ D 104 102 3 105 2 * 0.000
+ IL 105 105 3 105 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 27 ]
+ E 106 105 3 -1 0
+ [ BEGR 28 ]
+ S 107 56 1 108 3 -16.510 -0.006 -7.945
+ IL 108 108 2 108 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 109 108 2 111 5 -7.291 -0.010 -10.711 -15.465 -16.356 0.871 -2.591 0.703 -1.403
+ D 110 108 2 111 5 -8.103 -0.071 -7.364 -5.739 -5.652
+ IL 111 111 3 111 5 -5.174 -0.316 -2.622 -8.685 -7.958 0.000 0.000 0.000 0.000
+ [ MATP 30 ]
+ MP 112 111 3 116 6 -10.027 -10.988 -0.002 -15.089 -15.369 -15.764 -2.275 -4.519 -5.191 1.364 -2.449 -3.128 2.152 -2.093 -3.346 -0.037 -9.507 -0.054 2.317 -2.913 -0.382 -1.999
+ ML 113 111 3 116 6 -8.418 -8.764 -0.206 -3.173 -8.614 -6.144 -0.633 -0.349 0.997 -0.800
+ MR 114 111 3 116 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 115 111 3 116 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 116 116 5 116 6 -3.860 -4.123 -0.266 -5.778 -6.555 -6.215 0.000 0.000 0.000 0.000
+ IR 117 117 6 117 5 -2.935 -0.326 -6.446 -4.614 -5.719 0.000 0.000 0.000 0.000
+ [ MATP 31 ]
+ MP 118 117 6 122 6 -16.375 -16.315 -0.000 -15.091 -15.371 -15.766 -9.444 -9.644 -9.587 1.469 -8.195 -5.438 2.423 -3.814 -9.898 0.212 -9.860 -1.084 2.434 -9.404 -0.984 -2.166
+ ML 119 117 6 122 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 120 117 6 122 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 121 117 6 122 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 122 122 5 122 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 123 123 6 123 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 32 ]
+ MP 124 123 6 128 6 -16.375 -16.315 -0.001 -15.091 -10.136 -15.766 -5.455 -2.800 -10.463 2.102 -4.795 -5.771 0.873 -10.218 -10.099 2.373 -7.377 -3.302 2.056 -7.863 -3.353 -3.249
+ ML 125 123 6 128 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 126 123 6 128 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 127 123 6 128 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 128 128 5 128 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 129 129 6 129 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 33 ]
+ MP 130 129 6 134 6 -16.374 -16.313 -0.000 -15.090 -15.370 -15.765 -5.626 -5.061 -11.029 1.022 -6.809 -10.870 1.567 -5.910 -10.185 3.199 -9.871 0.030 -1.500 -5.947 -2.003 -3.280
+ ML 131 129 6 134 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 132 129 6 134 6 -8.333 -7.062 -0.446 -7.040 -2.174 -5.253 -0.561 -1.145 -1.345 1.308
+ D 133 129 6 134 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 134 134 5 134 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 135 135 6 135 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 34 ]
+ MP 136 135 6 140 4 -15.600 -15.807 -0.000 -14.221 -4.643 -3.598 -4.445 2.520 -5.324 -10.061 1.891 -5.575 -5.849 1.582 -4.152 -1.774 1.115 -5.848 -0.751 -2.312
+ ML 137 135 6 140 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 138 135 6 140 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 139 135 6 140 4 -4.568 -4.250 -2.265 -0.520
+ IL 140 140 5 140 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 141 141 6 141 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 142 141 6 144 3 -8.892 -0.003 -15.164 -3.426 1.205 -4.796 0.646
+ D 143 141 6 144 3 -6.174 -1.687 -0.566
+ IL 144 144 3 144 3 -2.936 -0.236 -5.636 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 145 144 3 147 3 -16.510 -0.000 -15.164 -9.794 -3.318 -10.511 1.963
+ D 146 144 3 147 3 -6.174 -1.687 -0.566
+ IL 147 147 3 147 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 37 ]
+ ML 148 147 3 150 3 -16.510 -0.000 -15.164 -2.395 -0.665 0.411 0.887
+ D 149 147 3 150 3 -6.174 -1.687 -0.566
+ IL 150 150 3 150 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 151 150 3 153 3 -16.510 -0.000 -15.164 0.200 -0.175 -0.316 0.217
+ D 152 150 3 153 3 -6.174 -1.687 -0.566
+ IL 153 153 3 153 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 154 153 3 156 3 -16.510 -0.000 -15.164 0.119 -0.102 -0.270 0.205
+ D 155 153 3 156 3 -6.174 -1.687 -0.566
+ IL 156 156 3 156 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 157 156 3 159 3 -5.040 -0.045 -15.164 1.609 -7.196 -0.129 -5.136
+ D 158 156 3 159 3 -6.174 -1.687 -0.566
+ IL 159 159 3 159 3 -0.077 -4.263 -13.157 0.000 0.000 0.000 0.000
+ [ MATL 41 ]
+ ML 160 159 3 162 2 * 0.000 1.421 -0.510 -2.807 -1.067
+ D 161 159 3 162 2 * 0.000
+ IL 162 162 3 162 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 42 ]
+ E 163 162 3 -1 0
+ [ BEGR 43 ]
+ S 164 54 1 165 3 -16.510 -0.000 -15.164
+ IL 165 165 2 165 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 166 165 2 168 3 -16.510 -0.213 -2.864 0.945 -0.909 -1.101 0.105
+ D 167 165 2 168 3 -6.174 -1.687 -0.566
+ IL 168 168 3 168 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 45 ]
+ ML 169 168 3 171 2 -8.437 -0.004 0.209 -2.944 1.009 -0.511
+ D 170 168 3 171 2 -13.333 -0.000
+ IL 171 171 3 171 2 -4.072 -0.088 0.000 0.000 0.000 0.000
+ [ BIF 46 ]
+ B 172 171 3 173 229
+ [ BEGL 47 ]
+ S 173 172 1 174 4 -2.739 -7.052 -13.911 -0.247
+ [ MATP 48 ]
+ MP 174 173 1 178 6 -13.651 -13.590 -0.001 -12.367 -12.646 -13.042 -7.378 -3.262 -2.664 1.401 -9.191 -8.178 0.916 -7.848 -7.494 2.950 -1.326 0.241 0.599 -2.960 -2.133 -6.726
+ ML 175 173 1 178 6 -10.279 -10.625 -5.340 -2.063 -10.475 -0.447 -1.323 -0.765 0.179 0.911
+ MR 176 173 1 178 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 177 173 1 178 6 -20.150 -18.848 -14.645 -15.327 -15.345 -0.000
+ IL 178 178 5 178 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 179 179 6 179 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 49 ]
+ MP 180 179 6 184 6 -13.651 -13.590 -0.066 -12.367 -12.646 -4.502 -6.818 -2.333 -6.978 1.203 -2.760 -7.540 2.220 -6.998 -7.263 2.149 -3.605 -3.587 1.847 -6.783 -2.348 -1.991
+ ML 181 179 6 184 6 -8.391 -8.737 -3.451 -0.174 -8.587 -6.116 -1.508 -2.625 1.693 -1.979
+ MR 182 179 6 184 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 183 179 6 184 6 -20.160 -18.858 -14.655 -15.337 -15.355 -0.000
+ IL 184 184 5 184 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 185 185 6 185 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 50 ]
+ MP 186 185 6 190 6 -5.550 -7.140 -0.646 -12.302 -12.582 -1.590 -2.978 -6.926 -6.872 1.351 -1.939 -2.601 2.503 -2.814 -7.180 1.357 -3.580 -1.004 1.542 -6.687 -0.240 -2.743
+ ML 187 185 6 190 6 -8.391 -8.737 -3.451 -0.174 -8.587 -6.116 -1.508 -2.625 1.693 -1.979
+ MR 188 185 6 190 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 189 185 6 190 6 -20.171 -18.869 -14.666 -15.348 -15.366 -0.000
+ IL 190 190 5 190 6 -5.078 -5.341 -0.109 -6.996 -7.772 -7.433 0.000 0.000 0.000 0.000
+ IR 191 191 6 191 5 -3.357 -0.236 -6.868 -5.036 -6.142 0.000 0.000 0.000 0.000
+ [ MATP 51 ]
+ MP 192 191 6 196 6 -13.004 -12.943 -0.862 -11.720 -12.000 -1.155 -2.675 -6.404 -6.348 0.030 -2.186 -6.923 2.431 -6.376 -6.658 1.555 -6.621 -1.547 1.902 -1.179 0.569 -2.313
+ ML 193 191 6 196 6 -8.391 -8.737 -3.451 -0.174 -8.587 -6.116 -1.356 -1.735 -2.137 1.624
+ MR 194 191 6 196 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 195 191 6 196 6 -20.250 -18.948 -14.745 -15.427 -15.445 -0.000
+ IL 196 196 5 196 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 197 197 6 197 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 52 ]
+ MP 198 197 6 202 6 -12.145 -12.084 -0.644 -10.860 -11.140 -1.480 -5.488 -5.309 -5.782 1.654 -0.421 -6.196 1.066 -5.713 -5.833 1.703 -5.746 1.008 1.654 -1.415 0.063 -4.481
+ ML 199 197 6 202 6 -8.391 -8.737 -0.210 -3.146 -8.587 -6.116 1.778 -2.623 -2.546 -2.083
+ MR 200 197 6 202 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 201 197 6 202 6 -20.318 -19.016 -14.813 -15.495 -15.513 -0.000
+ IL 202 202 5 202 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 203 203 6 203 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 53 ]
+ MP 204 203 6 208 6 -11.574 -11.513 -0.890 -10.289 -10.569 -1.126 -4.895 -4.674 -5.193 1.765 -4.209 -5.561 1.609 -5.102 -1.734 1.630 -1.867 -2.226 1.414 -4.868 0.796 0.041
+ ML 205 203 6 208 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 206 203 6 208 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 207 203 6 208 6 -20.346 -19.045 -14.842 -15.524 -15.541 -0.000
+ IL 208 208 5 208 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 209 209 6 209 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 54 ]
+ MP 210 209 6 214 4 -9.587 -0.703 -1.392 -8.209 -4.042 -4.606 -4.454 -0.413 -3.162 -5.149 2.248 -4.598 -1.338 -0.611 -4.856 -0.859 2.459 -4.254 1.259 -0.760
+ ML 211 209 6 214 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 212 209 6 214 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 213 209 6 214 4 -15.793 -5.734 -3.090 -0.211
+ IL 214 214 5 214 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 215 215 6 215 3 -6.101 -0.024 -8.801 0.000 0.000 0.000 0.000
+ [ MATL 55 ]
+ ML 216 215 6 218 3 -13.770 -0.010 -7.152 -0.289 -1.583 0.139 0.804
+ D 217 215 6 218 3 -17.695 -13.208 -0.000
+ IL 218 218 3 218 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 56 ]
+ ML 219 218 3 221 3 -13.760 -0.088 -4.086 0.094 -0.451 -1.987 0.963
+ D 220 218 3 221 3 -17.697 -13.210 -0.000
+ IL 221 221 3 221 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 57 ]
+ ML 222 221 3 224 3 -5.013 -0.584 -1.729 0.935 -0.852 -2.754 0.471
+ D 223 221 3 224 3 -17.711 -13.224 -0.000
+ IL 224 224 3 224 3 -2.268 -0.355 -6.610 0.000 0.000 0.000 0.000
+ [ MATL 58 ]
+ ML 225 224 3 227 2 * 0.000 0.723 -1.172 0.113 -0.280
+ D 226 224 3 227 2 * 0.000
+ IL 227 227 3 227 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 59 ]
+ E 228 227 3 -1 0
+ [ BEGR 60 ]
+ S 229 172 1 230 3 -16.510 -0.070 -4.391
+ IL 230 230 2 230 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 231 230 2 233 3 -1.100 -0.910 -9.578 0.539 -3.489 0.896 -0.742
+ D 232 230 2 233 3 -5.057 -0.050 -7.937
+ IL 233 233 3 233 3 -5.401 -0.035 -12.774 0.000 0.000 0.000 0.000
+ [ MATL 62 ]
+ ML 234 233 3 236 5 -15.441 -0.000 -15.257 -15.469 -16.360 -1.725 0.910 -2.834 0.747
+ D 235 233 3 236 5 -6.712 -0.196 -5.973 -4.348 -4.260
+ IL 236 236 3 236 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 63 ]
+ MP 237 236 3 241 6 -16.375 -8.028 -0.006 -15.091 -15.371 -15.766 -4.363 -5.904 -4.951 2.195 -5.887 -10.865 1.261 -7.646 -10.183 2.553 -7.261 0.855 -0.188 -2.969 -2.582 -4.438
+ ML 238 236 3 241 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 239 236 3 241 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 240 236 3 241 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 241 241 5 241 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 242 242 6 242 5 -4.580 -0.096 -8.091 -6.259 -7.365 0.000 0.000 0.000 0.000
+ [ MATP 64 ]
+ MP 243 242 6 247 6 -16.375 -16.315 -0.000 -15.091 -15.371 -15.766 -9.443 -4.760 -9.587 1.719 -4.752 -5.369 2.210 -6.231 -9.897 1.303 -9.860 -0.406 1.985 -4.679 -0.783 -2.597
+ ML 244 242 6 247 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 245 242 6 247 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 246 242 6 247 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 247 247 5 247 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 248 248 6 248 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 65 ]
+ MP 249 248 6 253 6 -8.053 -9.845 -0.025 -15.091 -15.371 -6.379 -10.069 -2.783 -11.026 2.249 -11.860 -10.869 1.059 -6.596 -7.201 2.500 -5.368 -1.059 1.201 -10.226 -1.256 -3.093
+ ML 250 248 6 253 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 251 248 6 253 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 252 248 6 253 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 253 253 5 253 6 -5.319 -5.582 -0.091 -7.237 -8.013 -7.674 0.000 0.000 0.000 0.000
+ IR 254 254 6 254 5 -3.399 -0.228 -6.910 -5.078 -6.184 0.000 0.000 0.000 0.000
+ [ MATP 66 ]
+ MP 255 254 6 259 6 -16.358 -16.297 -0.099 -11.314 -10.478 -3.945 -10.053 -2.531 -11.013 1.762 -4.682 -7.764 -1.490 -4.833 -4.809 3.412 -9.855 -2.099 -0.242 -5.823 -2.336 -5.371
+ ML 256 254 6 259 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 257 254 6 259 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 258 254 6 259 6 -14.063 -12.761 -8.558 -9.240 -9.258 -0.009
+ IL 259 259 5 259 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 260 260 6 260 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 67 ]
+ MP 261 260 6 265 4 -15.484 -15.691 -0.061 -4.602 -13.326 -2.480 -14.240 -0.224 -2.730 -4.165 -3.425 -4.997 -10.239 3.806 -6.447 -2.361 -2.185 -4.262 -3.341 -3.952
+ ML 262 260 6 265 4 -4.389 -4.572 -0.306 -3.301 0.095 0.542 -0.787 -0.158
+ MR 263 260 6 265 4 -6.056 -5.085 -0.499 -2.013 -0.341 1.024 -1.181 -0.443
+ D 264 260 6 265 4 -12.113 -11.794 -0.905 -1.103
+ IL 265 265 5 265 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 266 266 6 266 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 68 ]
+ ML 267 266 6 269 3 -10.928 -0.001 -12.013 -1.929 -2.701 -3.856 1.813
+ D 268 266 6 269 3 -14.166 -0.088 -4.081
+ IL 269 269 3 269 3 -1.931 -0.520 -4.631 0.000 0.000 0.000 0.000
+ [ MATL 69 ]
+ ML 270 269 3 272 3 -16.503 -0.003 -8.936 -2.119 -3.122 -1.967 1.765
+ D 271 269 3 272 3 -10.178 -0.063 -4.570
+ IL 272 272 3 272 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 70 ]
+ ML 273 272 3 275 3 -16.507 -0.002 -9.836 -0.819 1.547 -3.433 -1.258
+ D 274 272 3 275 3 -9.161 -0.131 -3.553
+ IL 275 275 3 275 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 276 275 3 278 3 -7.363 -0.027 -6.334 0.774 -2.691 0.903 -1.915
+ D 277 275 3 278 3 -8.400 -0.230 -2.791
+ IL 278 278 3 278 3 -4.087 -0.101 -6.787 0.000 0.000 0.000 0.000
+ [ MATL 72 ]
+ ML 279 278 3 281 3 -16.492 -0.081 -4.192 1.833 -3.456 -3.499 -1.953
+ D 280 278 3 281 3 -11.623 -7.136 -0.011
+ IL 281 281 3 281 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 73 ]
+ ML 282 281 3 284 3 -6.078 -0.150 -3.576 0.776 -1.355 -0.284 0.105
+ D 283 281 3 284 3 -14.021 -5.762 -0.027
+ IL 284 284 3 284 3 -2.594 -0.268 -8.060 0.000 0.000 0.000 0.000
+ [ MATL 74 ]
+ ML 285 284 3 287 2 * 0.000 -2.332 -0.701 -3.752 1.638
+ D 286 284 3 287 2 * 0.000
+ IL 287 287 3 287 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 75 ]
+ E 288 287 3 -1 0
+//
diff --git a/TRNAinf-euk-c.cm b/TRNAinf-euk-c.cm
new file mode 100644
index 0000000..7773d53
--- /dev/null
+++ b/TRNAinf-euk-c.cm
@@ -0,0 +1,403 @@
+INFERNAL-1 [1.0]
+NAME tRNA1415G-euk
+STATES 289
+NODES 76
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 242
+EFFNSEQ 242.000
+CLEN 90
+BCOM cmbuild --rf --enone TRNAinf-euk-nc.cm trna1415G-euk.sto
+BDATE Sun Feb 8 16:45:07 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/TRNAinf-euk.hfile --exp-sfile cmcalibrate_files/TRNAinf-euk.sfile --exp-qqfile cmcalibrate_files/TRNAinf-euk.qqfile --exp-ffile cmcalibrate_files/TRNAinf-euk.ffile --fil-dfile cmcalibrate_files/TRNAinf-euk.dfile -s 208 TRNAinf-euk-c.cm
+CDATE Sun Feb 8 20:17:13 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.76843 -6.06830 1.50607 1500000 379229 0.002967
+E-GC 0 0.31017 -37.23547 -23.26641 1500000 28559 0.013131
+E-LI 0 0.75566 -5.52100 2.04710 1500000 342653 0.003283
+E-GI 0 0.34662 -32.61214 -20.13224 1500000 28360 0.013223
+E-LV 0 0.61855 -3.23047 2.28875 52460000 119544 0.032913
+E-GV 0 0.32711 -20.34928 -6.58891 52460000 118201 0.011096
+E-LF 0 0.54692 -1.88983 4.35276 52460000 119583 0.032902
+E-GF 0 0.34336 -17.51106 -4.39714 52460000 118391 0.011078
+FT-LC 32 0.99500 10000 1500000 0
+ 57.7841 27.6065 13.7544 11.7235 8.38107 6.9866 4.4655 1.96541 1.59935 1.47049 1.26106 0.695894 0.459069 0.39849 0.291953 0.286399 0.275243 0.208035 0.189464 0.0913739 0.0703285 0.0668557 0.0511794 0.0415699 0.030963 0.0305614 0.0265798 0.0195762 0.0140099 2.0808e-14 8.3107e-15 8.23131e-16
+ 1204.97 1040.69 891.455 774.984 597.025 513.095 408.683 349.315 276.562 212.474 177.97 156.248 121.96 99.3445 86.4121 74.2236 59.9991 48.9536 39.8543 29.0049 24.7237 21.993 19.2454 17.073 15.2455 12.27 10.3225 9.06261 8.18283 3.95299 0.932945 0.818283
+FT-LI 32 0.99500 10000 1500000 0
+ 85.0841 69.0915 22.821 16.6573 13.6159 11.0926 7.3314 4.34707 2.68071 2.46422 1.86831 1.17931 1.13206 0.742786 0.682715 0.501591 0.475347 0.420293 0.339539 0.223038 0.137836 0.116618 0.11013 0.0737188 0.0596709 0.0554012 0.0477154 0.0428326 0.0236209 4.73377e-14 1.11282e-14 2.4015e-15
+ 1204.97 1040.69 891.455 774.984 597.025 513.095 408.683 349.315 276.562 212.474 177.97 156.248 121.96 99.3445 86.4121 74.2236 59.9991 48.9536 39.8543 29.0049 24.7237 21.993 19.2454 17.073 15.2455 12.27 10.3225 9.06261 8.18283 3.95299 0.932945 0.818283
+FT-GC 6 0.99500 10000 1500000 1
+ 0.000442832 1.53871e-05 5.87019e-06 5.60247e-07 4.47987e-07 1.78587e-07
+ 6.31656 1.87784 1.68418 1.0066 0.78128 0.631656
+FT-GI 5 0.99500 10000 1500000 1
+ 0.000164001 2.82835e-06 8.61323e-07 1.17306e-07 3.65116e-08
+ 6.31656 1.87784 1.68418 0.78128 0.631656
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -12.856 -6.848 -0.033 -6.208
+ IL 1 1 2 1 4 -2.817 -4.319 -0.613 -2.698 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -0.736 -1.357 -6.767 0.000 0.000 0.000 0.000
+ [ MATR 1 ]
+ MR 3 2 3 5 5 -12.888 -0.001 -12.704 -12.916 -13.808 1.039 -3.030 0.513 -1.334
+ D 4 2 3 5 5 -7.557 -0.127 -5.184 -6.615 -4.609
+ IR 5 5 3 5 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 2 ]
+ MP 6 5 3 10 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -10.456 -7.706 -11.141 -0.956 -10.214 -8.190 -0.166 -10.242 -8.899 3.541 -8.406 -0.049 0.965 -8.222 -6.081 -8.961
+ ML 7 5 3 10 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 8 5 3 10 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 9 5 3 10 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 10 10 5 10 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 11 11 6 11 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 3 ]
+ MP 12 11 6 16 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -7.453 -7.583 -7.613 0.108 -3.582 -8.183 2.743 -2.968 -7.901 1.951 -7.855 0.608 1.278 -7.430 -2.706 -6.246
+ ML 13 11 6 16 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 14 11 6 16 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 15 11 6 16 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 16 16 5 16 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 17 17 6 17 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 4 ]
+ MP 18 17 6 22 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -7.221 -7.406 -7.358 0.542 -5.962 -7.936 2.993 -7.379 -7.677 0.738 -5.039 -0.095 1.817 -7.185 -1.512 -6.009
+ ML 19 17 6 22 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 20 17 6 22 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 21 17 6 22 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 22 22 5 22 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 23 23 6 23 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 5 ]
+ MP 24 23 6 28 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -7.002 -7.198 -7.147 1.211 -3.082 -7.721 2.354 -3.330 -7.455 1.520 -3.212 -0.725 1.554 -6.963 0.833 -5.803
+ ML 25 23 6 28 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 26 23 6 28 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 27 23 6 28 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 28 28 5 28 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 29 29 6 29 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 6 ]
+ MP 30 29 6 34 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -7.073 -3.328 -7.284 1.022 -5.966 -7.799 2.484 -7.274 -3.001 1.639 -2.504 0.339 1.291 -7.052 -0.103 -2.567
+ ML 31 29 6 34 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 32 29 6 34 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 33 29 6 34 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 34 34 5 34 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 35 35 6 35 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 7 ]
+ MP 36 35 6 40 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -7.032 -7.157 -2.626 1.002 -5.838 -7.755 2.272 -4.949 -7.471 1.711 -7.418 0.311 1.174 -7.001 0.645 -0.780
+ ML 37 35 6 40 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 38 35 6 40 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 39 35 6 40 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 40 40 5 40 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 41 41 6 41 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 8 ]
+ MP 42 41 6 46 4 -13.060 -13.267 -0.001 -11.681 -7.604 -3.932 -8.563 2.423 -9.408 -8.404 -0.790 -8.072 -7.720 2.630 -7.405 -1.208 1.724 -7.761 -5.329 -6.949
+ ML 43 41 6 46 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 44 41 6 46 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 45 41 6 46 4 -4.568 -4.250 -2.265 -0.520
+ IL 46 46 5 46 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 47 47 6 47 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 9 ]
+ ML 48 47 6 50 3 -5.350 -0.049 -6.847 -8.878 -9.011 -9.336 1.998
+ D 49 47 6 50 3 -6.174 -1.687 -0.566
+ IL 50 50 3 50 3 -3.659 -0.138 -6.359 0.000 0.000 0.000 0.000
+ [ MATL 10 ]
+ ML 51 50 3 53 2 -5.335 -0.036 0.772 -4.220 1.142 -4.951
+ D 52 50 3 53 2 -8.830 -0.003
+ IL 53 53 3 53 2 -4.704 -0.056 0.000 0.000 0.000 0.000
+ [ BIF 11 ]
+ B 54 53 3 55 164
+ [ BEGL 12 ]
+ S 55 54 1 56 1 0.000
+ [ BIF 13 ]
+ B 56 55 1 57 107
+ [ BEGL 14 ]
+ S 57 56 1 58 4 -0.001 -11.981 -11.388 -12.028
+ [ MATP 15 ]
+ MP 58 57 1 62 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -11.276 -6.820 -12.174 -1.662 -11.241 -7.022 -0.830 -10.765 -7.977 3.616 -4.835 1.272 -1.425 -7.134 -7.284 -9.308
+ ML 59 57 1 62 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 60 57 1 62 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 61 57 1 62 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 62 62 5 62 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 63 63 6 63 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 16 ]
+ MP 64 63 6 68 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -9.302 -9.674 -7.661 -4.939 -3.433 -8.281 3.404 -8.359 -10.938 -1.588 -7.721 -6.781 2.218 -10.063 -1.859 -8.346
+ ML 65 63 6 68 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 66 63 6 68 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 67 63 6 68 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 68 68 5 68 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 69 69 6 69 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 17 ]
+ MP 70 69 6 74 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -7.143 -3.244 -7.294 1.163 -3.118 -7.869 2.120 -7.316 -7.596 2.021 -7.559 -4.493 2.227 -7.111 -1.514 -5.945
+ ML 71 69 6 74 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 72 69 6 74 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 73 69 6 74 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 74 74 5 74 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 75 75 6 75 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 18 ]
+ MP 76 75 6 80 4 -13.060 -13.267 -0.001 -11.681 -0.076 -5.815 -2.786 -2.455 -0.706 -3.164 2.524 -4.060 1.063 -2.375 -6.172 -1.880 -0.013 -5.584 1.123 1.271
+ ML 77 75 6 80 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 78 75 6 80 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 79 75 6 80 4 -4.568 -4.250 -2.265 -0.520
+ IL 80 80 5 80 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 81 81 6 81 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 19 ]
+ ML 82 81 6 84 3 -13.971 -0.000 -12.625 1.971 -6.823 -4.307 -5.535
+ D 83 81 6 84 3 -6.174 -1.687 -0.566
+ IL 84 84 3 84 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 20 ]
+ ML 85 84 3 87 3 -13.971 -0.011 -7.073 -0.530 -7.321 1.699 -4.177
+ D 86 84 3 87 3 -6.174 -1.687 -0.566
+ IL 87 87 3 87 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 21 ]
+ ML 88 87 3 90 3 -13.961 -1.486 -0.637 -2.904 -1.035 -2.328 1.669
+ D 89 87 3 90 3 -8.586 -4.099 -0.091
+ IL 90 90 3 90 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 91 90 3 93 3 -5.000 -0.046 -11.130 -2.808 0.243 -2.405 1.313
+ D 92 90 3 93 3 -14.762 -0.003 -9.153
+ IL 93 93 3 93 3 -2.845 -0.253 -5.545 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 94 93 3 96 3 -13.971 -0.000 -12.625 -9.436 -10.439 1.999 -10.233
+ D 95 93 3 96 3 -6.174 -1.687 -0.566
+ IL 96 96 3 96 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 97 96 3 99 3 -13.971 -0.000 -12.625 -7.395 -8.802 1.979 -4.347
+ D 98 96 3 99 3 -6.174 -1.687 -0.566
+ IL 99 99 3 99 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 100 99 3 102 3 -0.831 -1.230 -6.424 -1.226 -2.011 -2.555 1.657
+ D 101 99 3 102 3 -6.174 -1.687 -0.566
+ IL 102 102 3 102 3 -2.392 -0.313 -7.869 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 103 102 3 105 2 * 0.000 1.965 -5.091 -6.325 -4.210
+ D 104 102 3 105 2 * 0.000
+ IL 105 105 3 105 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 27 ]
+ E 106 105 3 -1 0
+ [ BEGR 28 ]
+ S 107 56 1 108 3 -13.971 -0.000 -12.625
+ IL 108 108 2 108 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 109 108 2 111 5 -12.907 -0.006 -8.059 -12.935 -13.826 -0.433 -2.838 1.309 -0.640
+ D 110 108 2 111 5 -4.959 -0.803 -4.221 -2.596 -2.508
+ IL 111 111 3 111 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 30 ]
+ MP 112 111 3 116 6 -13.858 -13.797 -0.001 -12.574 -12.854 -13.249 -6.996 -7.198 -3.715 0.557 -5.748 -7.717 2.511 -7.170 -7.451 -0.581 -7.414 0.645 2.396 -3.033 0.085 -5.798
+ ML 113 111 3 116 6 -7.432 -7.778 -0.440 -2.187 -7.628 -5.157 -0.273 0.962 -1.117 -0.391
+ MR 114 111 3 116 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 115 111 3 116 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 116 116 5 116 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 117 117 6 117 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 31 ]
+ MP 118 117 6 122 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -7.170 -7.360 -7.312 1.274 -5.913 -7.889 2.605 -7.333 -7.626 0.764 -7.586 -2.487 2.306 -7.133 -0.892 -3.768
+ ML 119 117 6 122 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 120 117 6 122 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 121 117 6 122 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 122 122 5 122 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 123 123 6 123 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 32 ]
+ MP 124 123 6 128 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -3.952 -6.902 -7.728 2.010 -6.709 -2.859 1.716 -7.609 -7.586 1.974 -7.456 -4.347 2.083 -7.342 -4.430 -2.484
+ ML 125 123 6 128 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 126 123 6 128 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 127 123 6 128 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 128 128 5 128 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 129 129 6 129 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 33 ]
+ MP 130 129 6 134 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -10.836 -3.585 -11.559 -2.332 -10.474 -7.539 1.408 -10.495 -8.417 3.580 -7.903 -0.846 -2.547 -7.627 -1.473 -9.127
+ ML 131 129 6 134 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 132 129 6 134 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 133 129 6 134 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 134 134 5 134 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 135 135 6 135 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 34 ]
+ MP 136 135 6 140 4 -13.060 -13.267 -0.001 -11.681 -7.574 -6.590 -2.830 2.646 -9.172 -8.376 1.798 -8.040 -7.698 2.065 -7.392 -2.387 0.156 -4.778 -1.765 -1.900
+ ML 137 135 6 140 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 138 135 6 140 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 139 135 6 140 4 -4.568 -4.250 -2.265 -0.520
+ IL 140 140 5 140 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 141 141 6 141 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 142 141 6 144 3 -13.971 -0.000 -12.625 -7.441 1.640 -8.378 -0.194
+ D 143 141 6 144 3 -6.174 -1.687 -0.566
+ IL 144 144 3 144 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 145 144 3 147 3 -13.971 -0.000 -12.625 -6.969 -3.213 -7.715 1.956
+ D 146 144 3 147 3 -6.174 -1.687 -0.566
+ IL 147 147 3 147 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 37 ]
+ ML 148 147 3 150 3 -13.971 -0.000 -12.625 -0.259 0.036 0.052 0.141
+ D 149 147 3 150 3 -6.174 -1.687 -0.566
+ IL 150 150 3 150 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 151 150 3 153 3 -13.971 -0.000 -12.625 -0.015 -0.285 -0.172 0.381
+ D 152 150 3 153 3 -6.174 -1.687 -0.566
+ IL 153 153 3 153 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 154 153 3 156 3 -13.971 -0.000 -12.625 0.299 -0.166 -0.594 0.282
+ D 155 153 3 156 3 -6.174 -1.687 -0.566
+ IL 156 156 3 156 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 157 156 3 159 3 -2.692 -0.243 -12.625 1.556 -4.613 0.015 -6.898
+ D 158 156 3 159 3 -6.174 -1.687 -0.566
+ IL 159 159 3 159 3 -0.077 -4.265 -12.972 0.000 0.000 0.000 0.000
+ [ MATL 41 ]
+ ML 160 159 3 162 2 * 0.000 1.436 -0.207 -6.051 -1.277
+ D 161 159 3 162 2 * 0.000
+ IL 162 162 3 162 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 42 ]
+ E 163 162 3 -1 0
+ [ BEGR 43 ]
+ S 164 54 1 165 3 -13.971 -0.000 -12.625
+ IL 165 165 2 165 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 166 165 2 168 3 -13.971 -0.323 -2.318 1.147 -1.400 -1.431 0.051
+ D 167 165 2 168 3 -6.174 -1.687 -0.566
+ IL 168 168 3 168 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 45 ]
+ ML 169 168 3 171 2 -14.300 -0.000 -1.461 -3.767 1.768 -2.661
+ D 170 168 3 171 2 -11.479 -0.001
+ IL 171 171 3 171 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ BIF 46 ]
+ B 172 171 3 173 229
+ [ BEGL 47 ]
+ S 173 172 1 174 4 -2.207 -6.770 -11.388 -0.370
+ [ MATP 48 ]
+ MP 174 173 1 178 6 -11.709 -11.648 -0.003 -10.424 -10.704 -11.099 -7.768 -6.678 -8.379 -0.061 -7.362 -8.562 2.319 -7.681 -7.986 2.912 -7.619 -0.894 0.870 -8.010 -3.261 -6.444
+ ML 175 173 1 178 6 -8.311 -8.657 -3.371 -0.185 -8.507 -6.036 -1.429 -2.524 1.671 -1.884
+ MR 176 173 1 178 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 177 173 1 178 6 -17.507 -16.205 -12.002 -12.684 -12.702 -0.001
+ IL 178 178 5 178 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 179 179 6 179 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 49 ]
+ MP 180 179 6 184 6 -11.709 -11.648 -0.120 -10.424 -10.704 -3.684 -5.406 -5.916 -5.801 -1.489 -0.765 -6.510 1.962 -5.912 -5.908 2.451 -6.200 -3.259 2.067 -5.622 -0.600 -0.740
+ ML 181 179 6 184 6 -8.311 -8.657 -3.371 -0.185 -8.507 -6.036 -1.429 -2.524 1.671 -1.884
+ MR 182 179 6 184 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 183 179 6 184 6 -17.507 -16.205 -12.002 -12.684 -12.702 -0.001
+ IL 184 184 5 184 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 185 185 6 185 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 50 ]
+ MP 186 185 6 190 6 -11.592 -11.532 -0.330 -10.308 -10.588 -2.305 -5.936 -5.324 -6.425 1.144 -5.617 -1.650 2.767 -6.209 -6.214 2.159 -5.947 -2.664 0.200 -6.063 -0.460 -5.003
+ ML 187 185 6 190 6 -8.311 -8.657 -3.371 -0.185 -8.507 -6.036 -1.429 -2.524 1.671 -1.884
+ MR 188 185 6 190 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 189 185 6 190 6 -17.539 -16.237 -12.034 -12.717 -12.734 -0.001
+ IL 190 190 5 190 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 191 191 6 191 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 51 ]
+ MP 192 191 6 196 6 -11.267 -11.206 -1.730 -9.983 -10.263 -0.523 -6.318 -6.496 -6.420 -1.439 -1.942 -7.112 2.840 -6.413 -6.857 1.932 -6.749 -3.203 1.457 -6.491 0.514 -5.133
+ ML 193 191 6 196 6 -8.311 -8.657 -3.371 -0.185 -8.507 -6.036 -1.253 -1.658 -2.035 1.594
+ MR 194 191 6 196 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 195 191 6 196 6 -17.614 -16.312 -12.109 -12.791 -12.809 -0.001
+ IL 196 196 5 196 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 197 197 6 197 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 52 ]
+ MP 198 197 6 202 6 -9.553 -9.492 -0.354 -8.269 -8.549 -2.259 -3.828 -4.414 -4.360 0.011 -3.061 -5.189 1.627 -4.443 -4.341 -0.008 -4.844 -1.613 2.641 -4.221 1.904 -3.235
+ ML 199 197 6 202 6 -8.311 -8.657 -0.223 -3.066 -8.507 -6.036 1.762 -2.527 -2.451 -1.986
+ MR 200 197 6 202 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 201 197 6 202 6 -17.801 -16.500 -12.297 -12.979 -12.996 -0.001
+ IL 202 202 5 202 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 203 203 6 203 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 53 ]
+ MP 204 203 6 208 6 -9.507 -9.446 -0.378 -8.222 -8.502 -2.176 -2.910 -3.433 -3.452 -0.971 -2.602 -4.146 -0.826 -3.528 -3.276 -1.206 2.699 -1.800 0.043 -3.185 -1.335 2.446
+ ML 205 203 6 208 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 206 203 6 208 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 207 203 6 208 6 -17.817 -16.516 -12.313 -12.995 -13.012 -0.001
+ IL 208 208 5 208 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 209 209 6 209 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 54 ]
+ MP 210 209 6 214 4 -7.055 -0.769 -1.373 -5.677 -5.237 -5.143 -4.203 -0.508 -3.630 -4.854 3.578 -4.599 -5.956 -0.443 -4.232 -2.107 0.518 -5.604 -0.885 -4.143
+ ML 211 209 6 214 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 212 209 6 214 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 213 209 6 214 4 -13.256 -5.912 -2.422 -0.328
+ IL 214 214 5 214 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 215 215 6 215 3 -3.697 -0.134 -6.397 0.000 0.000 0.000 0.000
+ [ MATL 55 ]
+ ML 216 215 6 218 3 -11.762 -0.001 -10.417 -0.319 -1.578 -0.510 1.112
+ D 217 215 6 218 3 -15.041 -10.554 -0.001
+ IL 218 218 3 218 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 56 ]
+ ML 219 218 3 221 3 -11.762 -0.145 -3.387 -1.361 0.234 -2.172 1.146
+ D 220 218 3 221 3 -15.041 -10.554 -0.001
+ IL 221 221 3 221 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 57 ]
+ ML 222 221 3 224 3 -11.619 -0.798 -1.236 0.011 -0.849 -2.726 1.193
+ D 223 221 3 224 3 -15.078 -10.591 -0.001
+ IL 224 224 3 224 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 58 ]
+ ML 225 224 3 227 2 * 0.000 0.107 -1.045 0.753 -0.409
+ D 226 224 3 227 2 * 0.000
+ IL 227 227 3 227 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 59 ]
+ E 228 227 3 -1 0
+ [ BEGR 60 ]
+ S 229 172 1 230 3 -13.971 -0.029 -5.635
+ IL 230 230 2 230 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 231 230 2 233 3 -0.713 -1.360 -12.596 -0.131 -3.260 1.530 -3.396
+ D 232 230 2 233 3 -9.860 -0.079 -4.252
+ IL 233 233 3 233 3 -6.751 -0.014 -10.646 0.000 0.000 0.000 0.000
+ [ MATL 62 ]
+ ML 234 233 3 236 5 -12.907 -0.001 -12.723 -12.935 -13.826 -3.231 1.707 -4.784 -0.754
+ D 235 233 3 236 5 -4.959 -0.803 -4.221 -2.596 -2.508
+ IL 236 236 3 236 5 -2.408 -0.496 -4.087 -5.920 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 63 ]
+ MP 237 236 3 241 6 -13.863 -5.381 -0.036 -12.579 -12.859 -13.254 -9.585 -8.508 -10.303 0.862 -4.812 -10.387 2.580 -9.640 -9.774 2.639 -9.420 -0.032 -0.745 -9.813 -1.521 -8.428
+ ML 238 236 3 241 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 239 236 3 241 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 240 236 3 241 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 241 241 5 241 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 242 242 6 242 5 -4.686 -0.089 -8.197 -6.365 -7.471 0.000 0.000 0.000 0.000
+ [ MATP 64 ]
+ MP 243 242 6 247 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -7.007 -7.207 -7.150 0.363 -5.758 -7.726 3.046 -3.761 -7.461 0.875 -7.422 -1.290 1.773 -4.756 -0.718 -5.807
+ ML 244 242 6 247 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 245 242 6 247 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 246 242 6 247 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 247 247 5 247 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 248 248 6 248 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 65 ]
+ MP 249 248 6 253 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -8.223 -7.211 -9.135 1.737 -9.463 -9.029 0.920 -8.611 -8.355 3.029 -8.038 -4.659 0.497 -8.396 -0.039 -2.657
+ ML 250 248 6 253 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 251 248 6 253 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 252 248 6 253 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 253 253 5 253 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 254 254 6 254 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 66 ]
+ MP 255 254 6 259 6 -13.863 -13.802 -0.001 -12.579 -12.859 -13.254 -9.197 -3.944 -10.148 1.192 -10.482 -5.072 -1.950 -3.859 -4.145 3.625 -7.418 -2.043 -0.876 -3.478 -6.453 -8.213
+ ML 256 254 6 259 6 -6.250 -6.596 -1.310 -1.005 -6.446 -3.975 0.660 -0.612 -0.293 -0.076
+ MR 257 254 6 259 6 -6.988 -5.717 -1.625 -5.695 -0.829 -3.908 0.660 -0.612 -0.293 -0.076
+ D 258 254 6 259 6 -9.049 -7.747 -3.544 -4.226 -4.244 -0.319
+ IL 259 259 5 259 6 -2.579 -2.842 -0.760 -4.497 -5.274 -4.934 0.000 0.000 0.000 0.000
+ IR 260 260 6 260 5 -2.408 -0.496 -5.920 -4.087 -5.193 0.000 0.000 0.000 0.000
+ [ MATP 67 ]
+ MP 261 260 6 265 4 -13.060 -13.267 -0.001 -11.681 -11.930 -7.279 -12.582 -2.660 -11.672 -7.500 -5.551 -11.017 -8.434 3.964 -7.907 -2.684 -5.482 -7.604 -7.598 -9.691
+ ML 262 260 6 265 4 -3.758 -3.940 -0.507 -2.670 0.660 -0.612 -0.293 -0.076
+ MR 263 260 6 265 4 -4.809 -3.838 -1.706 -0.766 0.660 -0.612 -0.293 -0.076
+ D 264 260 6 265 4 -4.568 -4.250 -2.265 -0.520
+ IL 265 265 5 265 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 266 266 6 266 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 68 ]
+ ML 267 266 6 269 3 -13.971 -0.000 -12.625 -2.040 -6.999 -8.040 1.905
+ D 268 266 6 269 3 -6.174 -1.687 -0.566
+ IL 269 269 3 269 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 69 ]
+ ML 270 269 3 272 3 -13.971 -0.000 -12.625 -8.878 -9.011 -9.336 1.998
+ D 271 269 3 272 3 -6.174 -1.687 -0.566
+ IL 272 272 3 272 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 70 ]
+ ML 273 272 3 275 3 -13.971 -0.000 -12.625 -6.878 1.979 -5.714 -5.080
+ D 274 272 3 275 3 -6.174 -1.687 -0.566
+ IL 275 275 3 275 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 276 275 3 278 3 -13.971 -0.000 -12.625 -0.336 -7.439 1.672 -6.007
+ D 277 275 3 278 3 -6.174 -1.687 -0.566
+ IL 278 278 3 278 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 72 ]
+ ML 279 278 3 281 3 -13.971 -0.000 -12.625 1.997 -8.574 -8.032 -8.484
+ D 280 278 3 281 3 -6.174 -1.687 -0.566
+ IL 281 281 3 281 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 73 ]
+ ML 282 281 3 284 3 -13.971 -0.004 -8.670 0.685 -1.627 -0.894 0.614
+ D 283 281 3 284 3 -6.174 -1.687 -0.566
+ IL 284 284 3 284 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 74 ]
+ ML 285 284 3 287 2 * 0.000 -1.742 0.204 -5.128 1.334
+ D 286 284 3 287 2 * 0.000
+ IL 287 287 3 287 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 75 ]
+ E 288 287 3 -1 0
+//
diff --git a/TRNAinf-euk-ns-c.cm b/TRNAinf-euk-ns-c.cm
new file mode 100644
index 0000000..95f4f93
--- /dev/null
+++ b/TRNAinf-euk-ns-c.cm
@@ -0,0 +1,404 @@
+INFERNAL-1 [1.0]
+NAME tRNA1415G-euk-nostruct
+STATES 274
+NODES 92
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 242
+EFFNSEQ 242.000
+CLEN 90
+BCOM cmbuild --rf --enone -F TRNAinf-euk-ns-nc.cm trna1415G-euk-ns.sto
+BDATE Sun Feb 8 18:17:36 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/TRNAinf-euk-ns.hfile --exp-sfile cmcalibrate_files/TRNAinf-euk-ns.sfile --exp-qqfile cmcalibrate_files/TRNAinf-euk-ns.qqfile --exp-ffile cmcalibrate_files/TRNAinf-euk-ns.ffile --fil-dfile cmcalibrate_files/TRNAinf-euk-ns.dfile -s 208 TRNAinf-euk-ns-c.cm
+CDATE Sun Feb 8 20:15:06 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.70749 -10.10603 -1.17107 1500000 625883 0.001797
+E-GC 0 0.30291 -28.62205 -14.69779 1500000 25455 0.014732
+E-LI 0 0.72725 -8.91211 -0.48093 1500000 517684 0.002173
+E-GI 0 0.31349 -26.12174 -12.69584 1500000 25229 0.014864
+E-LV 0 0.69978 -2.81485 2.07065 36610000 83834 0.032752
+E-GV 0 0.32667 -20.69246 -6.90066 36610000 82826 0.011050
+E-LF 0 0.68282 0.30845 5.31514 36610000 83825 0.032756
+E-GF 0 0.33805 -18.23904 -4.90963 36610000 82888 0.011042
+FT-LC 39 0.99500 10000 1500000 0
+ 5681 5280.41 4644.93 4570.26 3355.48 2994.2 2261.39 2186.97 1692.58 1617.63 1120.82 696.014 507.426 486.68 434.051 366.268 365.75 272.777 233.883 193.729 158.017 137.078 128.997 104.092 92.0756 85.7562 68.0235 51.6656 46.5404 35.139 31.294 24.4254 2.00098 1.25647 1.09382 0.479996 0.435428 0.179204 0.159217
+ 1195.64 953.773 788.331 685.825 566.862 484.475 420.33 350.756 310.614 275.065 237.184 197.925 164.939 147.063 120.974 101.711 77.0851 65.1659 57.3935 50.6518 43.9754 38.9426 34.4387 30.539 27.0624 23.7048 20.2319 17.892 15.7688 13.6997 11.8291 11.3102 10.0343 6.03747 4.19848 1.91847 1.58244 1.31962 1.13102
+FT-LI 46 0.99500 10000 1500000 0
+ 6307.44 5344.87 4260.65 4020.78 3665.28 3442.32 2935.6 2510.92 1677.93 1557.44 937.972 653.107 521.362 394.051 366.59 339.314 337.424 274.474 264.939 200.634 183.478 135.063 129.628 88.6751 82.387 69.2743 60.1612 53.4605 46.3512 38.1965 27.4666 25.0516 2.12149 1.29888 1.226 1.216 0.710586 0.68173 0.519123 0.41151 0.354207 0.306908 0.261336 0.190096 [...]
+ 1195.64 953.773 788.331 685.825 566.862 484.475 420.33 350.756 310.614 275.065 237.184 197.925 164.939 147.063 120.974 101.711 77.0851 65.1659 57.3935 50.6518 43.9754 38.9426 34.4387 30.539 27.0624 23.7048 20.2319 17.892 15.7688 13.6997 11.8291 11.3102 10.0343 8.65236 7.68833 5.98003 4.85575 4.09654 3.36521 2.92763 2.34979 1.91847 1.72344 1.38517 [...]
+FT-GC 2 0.99500 10000 1500000 1
+ 1.08732 0.621571
+ 1.1002 0.905077
+FT-GI 2 0.99500 10000 1500000 1
+ 1.25441 0.559613
+ 1.1002 0.905077
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -13.060 -6.839 -0.013 -11.681
+ IL 1 1 2 1 4 -1.686 -2.369 -1.117 -4.855 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -0.724 -1.384 -6.424 0.000 0.000 0.000 0.000
+ [ MATL 1 ]
+ ML 3 2 3 5 3 -13.971 -0.000 -12.625 -2.928 -2.199 1.659 -1.020
+ D 4 2 3 5 3 -6.174 -1.687 -0.566
+ IL 5 5 3 5 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 2 ]
+ ML 6 5 3 8 3 -13.971 -0.000 -12.625 -1.873 0.800 0.466 -0.726
+ D 7 5 3 8 3 -6.174 -1.687 -0.566
+ IL 8 8 3 8 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 3 ]
+ ML 9 8 3 11 3 -13.971 -0.000 -12.625 -1.430 1.022 -0.595 -0.095
+ D 10 8 3 11 3 -6.174 -1.687 -0.566
+ IL 11 11 3 11 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 4 ]
+ ML 12 11 3 14 3 -13.971 -0.000 -12.625 -0.741 0.413 -0.128 0.208
+ D 13 11 3 14 3 -6.174 -1.687 -0.566
+ IL 14 14 3 14 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 5 ]
+ ML 15 14 3 17 3 -13.971 -0.000 -12.625 -0.880 0.499 0.255 -0.235
+ D 16 14 3 17 3 -6.174 -1.687 -0.566
+ IL 17 17 3 17 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 6 ]
+ ML 18 17 3 20 3 -13.971 -0.000 -12.625 -0.849 0.280 0.215 0.098
+ D 19 17 3 20 3 -6.174 -1.687 -0.566
+ IL 20 20 3 20 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 7 ]
+ ML 21 20 3 23 3 -13.971 -0.000 -12.625 0.454 -2.756 0.699 -0.219
+ D 22 20 3 23 3 -6.174 -1.687 -0.566
+ IL 23 23 3 23 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 8 ]
+ ML 24 23 3 26 3 -5.350 -0.049 -6.847 -8.878 -9.011 -9.336 1.998
+ D 25 23 3 26 3 -6.174 -1.687 -0.566
+ IL 26 26 3 26 3 -3.659 -0.138 -6.359 0.000 0.000 0.000 0.000
+ [ MATL 9 ]
+ ML 27 26 3 29 3 -5.338 -0.036 -12.613 0.772 -4.220 1.142 -4.951
+ D 28 26 3 29 3 -8.776 -0.174 -3.167
+ IL 29 29 3 29 3 -3.659 -0.138 -6.359 0.000 0.000 0.000 0.000
+ [ MATL 10 ]
+ ML 30 29 3 32 3 -13.971 -0.000 -12.625 -3.610 -2.739 1.874 -3.279
+ D 31 29 3 32 3 -6.174 -1.687 -0.566
+ IL 32 32 3 32 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 11 ]
+ ML 33 32 3 35 3 -13.971 -0.000 -12.625 -6.965 1.409 -3.614 0.328
+ D 34 32 3 35 3 -6.174 -1.687 -0.566
+ IL 35 35 3 35 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 12 ]
+ ML 36 35 3 38 3 -13.971 -0.000 -12.625 -0.727 0.141 0.073 0.312
+ D 37 35 3 38 3 -6.174 -1.687 -0.566
+ IL 38 38 3 38 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 13 ]
+ ML 39 38 3 41 3 -13.971 -0.000 -12.625 -1.612 0.713 -0.660 0.486
+ D 40 38 3 41 3 -6.174 -1.687 -0.566
+ IL 41 41 3 41 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 14 ]
+ ML 42 41 3 44 3 -13.971 -0.000 -12.625 1.971 -6.823 -4.307 -5.535
+ D 43 41 3 44 3 -6.174 -1.687 -0.566
+ IL 44 44 3 44 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 15 ]
+ ML 45 44 3 47 3 -13.971 -0.011 -7.073 -0.530 -7.321 1.699 -4.177
+ D 46 44 3 47 3 -6.174 -1.687 -0.566
+ IL 47 47 3 47 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 16 ]
+ ML 48 47 3 50 3 -13.961 -1.486 -0.637 -2.904 -1.035 -2.328 1.669
+ D 49 47 3 50 3 -8.586 -4.099 -0.091
+ IL 50 50 3 50 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 17 ]
+ ML 51 50 3 53 3 -5.000 -0.046 -11.130 -2.808 0.243 -2.405 1.313
+ D 52 50 3 53 3 -14.762 -0.003 -9.153
+ IL 53 53 3 53 3 -2.845 -0.253 -5.545 0.000 0.000 0.000 0.000
+ [ MATL 18 ]
+ ML 54 53 3 56 3 -13.971 -0.000 -12.625 -9.436 -10.439 1.999 -10.233
+ D 55 53 3 56 3 -6.174 -1.687 -0.566
+ IL 56 56 3 56 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 19 ]
+ ML 57 56 3 59 3 -13.971 -0.000 -12.625 -7.395 -8.802 1.979 -4.347
+ D 58 56 3 59 3 -6.174 -1.687 -0.566
+ IL 59 59 3 59 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 20 ]
+ ML 60 59 3 62 3 -0.831 -1.230 -6.424 -1.226 -2.011 -2.555 1.657
+ D 61 59 3 62 3 -6.174 -1.687 -0.566
+ IL 62 62 3 62 3 -2.392 -0.313 -7.869 0.000 0.000 0.000 0.000
+ [ MATL 21 ]
+ ML 63 62 3 65 3 -13.951 -0.000 -12.605 1.965 -5.091 -6.325 -4.210
+ D 64 62 3 65 3 -9.404 -0.110 -3.796
+ IL 65 65 3 65 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 66 65 3 68 3 -13.971 -0.000 -12.625 0.214 -3.713 1.024 -0.455
+ D 67 65 3 68 3 -6.174 -1.687 -0.566
+ IL 68 68 3 68 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 69 68 3 71 3 -13.971 -0.000 -12.625 0.255 0.112 0.199 -0.792
+ D 70 68 3 71 3 -6.174 -1.687 -0.566
+ IL 71 71 3 71 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 72 71 3 74 3 -13.971 -0.000 -12.625 0.274 -3.607 1.433 -6.726
+ D 73 71 3 74 3 -6.174 -1.687 -0.566
+ IL 74 74 3 74 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 75 74 3 77 3 -13.971 -0.000 -12.625 -3.213 1.590 -2.644 -0.471
+ D 76 74 3 77 3 -6.174 -1.687 -0.566
+ IL 77 77 3 77 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 78 77 3 80 3 -13.971 -0.000 -12.625 -0.433 -2.838 1.309 -0.640
+ D 79 77 3 80 3 -6.174 -1.687 -0.566
+ IL 80 80 3 80 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 27 ]
+ ML 81 80 3 83 3 -13.971 -0.000 -12.625 -1.356 0.532 -0.849 0.686
+ D 82 80 3 83 3 -6.174 -1.687 -0.566
+ IL 83 83 3 83 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 28 ]
+ ML 84 83 3 86 3 -13.971 -0.000 -12.625 -0.677 0.618 -1.111 0.461
+ D 85 83 3 86 3 -6.174 -1.687 -0.566
+ IL 86 86 3 86 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 87 86 3 89 3 -13.971 -0.000 -12.625 0.065 -0.223 -0.030 0.160
+ D 88 86 3 89 3 -6.174 -1.687 -0.566
+ IL 89 89 3 89 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 30 ]
+ ML 90 89 3 92 3 -13.971 -0.000 -12.625 -3.817 -0.548 1.636 -2.878
+ D 91 89 3 92 3 -6.174 -1.687 -0.566
+ IL 92 92 3 92 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 31 ]
+ ML 93 92 3 95 3 -13.971 -0.000 -12.625 0.699 -0.160 0.061 -1.189
+ D 94 92 3 95 3 -6.174 -1.687 -0.566
+ IL 95 95 3 95 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 32 ]
+ ML 96 95 3 98 3 -13.971 -0.000 -12.625 -7.441 1.640 -8.378 -0.194
+ D 97 95 3 98 3 -6.174 -1.687 -0.566
+ IL 98 98 3 98 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 33 ]
+ ML 99 98 3 101 3 -13.971 -0.000 -12.625 -6.969 -3.213 -7.715 1.956
+ D 100 98 3 101 3 -6.174 -1.687 -0.566
+ IL 101 101 3 101 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 34 ]
+ ML 102 101 3 104 3 -13.971 -0.000 -12.625 -0.259 0.036 0.052 0.141
+ D 103 101 3 104 3 -6.174 -1.687 -0.566
+ IL 104 104 3 104 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 105 104 3 107 3 -13.971 -0.000 -12.625 -0.015 -0.285 -0.172 0.381
+ D 106 104 3 107 3 -6.174 -1.687 -0.566
+ IL 107 107 3 107 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 108 107 3 110 3 -13.971 -0.000 -12.625 0.299 -0.166 -0.594 0.282
+ D 109 107 3 110 3 -6.174 -1.687 -0.566
+ IL 110 110 3 110 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 37 ]
+ ML 111 110 3 113 3 -2.692 -0.243 -12.625 1.556 -4.613 0.015 -6.898
+ D 112 110 3 113 3 -6.174 -1.687 -0.566
+ IL 113 113 3 113 3 -0.077 -4.265 -12.972 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 114 113 3 116 3 -13.971 -0.000 -12.625 1.436 -0.207 -6.051 -1.277
+ D 115 113 3 116 3 -6.174 -1.687 -0.566
+ IL 116 116 3 116 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 117 116 3 119 3 -13.971 -0.000 -12.625 -1.765 0.028 -0.004 0.756
+ D 118 116 3 119 3 -6.174 -1.687 -0.566
+ IL 119 119 3 119 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 120 119 3 122 3 -13.971 -0.000 -12.625 -4.436 1.584 -0.374 -2.449
+ D 121 119 3 122 3 -6.174 -1.687 -0.566
+ IL 122 122 3 122 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 41 ]
+ ML 123 122 3 125 3 -13.971 -0.000 -12.625 0.124 0.025 -0.288 0.103
+ D 124 122 3 125 3 -6.174 -1.687 -0.566
+ IL 125 125 3 125 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 42 ]
+ ML 126 125 3 128 3 -13.971 -0.006 -8.052 0.307 -1.218 0.729 -0.565
+ D 127 125 3 128 3 -6.174 -1.687 -0.566
+ IL 128 128 3 128 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 43 ]
+ ML 129 128 3 131 3 -13.966 -0.000 -12.620 0.401 -2.431 0.780 -0.363
+ D 130 128 3 131 3 -7.828 -0.357 -2.220
+ IL 131 131 3 131 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 132 131 3 134 3 -13.971 -0.323 -2.318 1.147 -1.400 -1.431 0.051
+ D 133 131 3 134 3 -6.174 -1.687 -0.566
+ IL 134 134 3 134 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 45 ]
+ ML 135 134 3 137 3 -13.648 -5.671 -0.029 -1.461 -3.767 1.768 -2.661
+ D 136 134 3 137 3 -13.083 -0.008 -7.475
+ IL 137 137 3 137 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 46 ]
+ ML 138 137 3 140 3 -11.762 -0.001 -10.417 -1.903 0.220 1.068 -1.084
+ D 139 137 3 140 3 -15.041 -10.554 -0.001
+ IL 140 140 3 140 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 47 ]
+ ML 141 140 3 143 3 -11.762 -0.125 -3.594 -3.146 0.057 0.660 0.342
+ D 142 140 3 143 3 -15.041 -10.554 -0.001
+ IL 143 143 3 143 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 48 ]
+ ML 144 143 3 146 3 -11.639 -0.352 -2.210 -0.832 0.836 0.282 -1.194
+ D 145 143 3 146 3 -15.074 -10.587 -0.001
+ IL 146 146 3 146 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 49 ]
+ ML 147 146 3 149 3 -11.289 -2.034 -0.405 -2.676 0.772 -0.064 0.238
+ D 148 146 3 149 3 -15.148 -10.661 -0.001
+ IL 149 149 3 149 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 50 ]
+ ML 150 149 3 152 3 -9.264 -0.483 -1.822 0.193 -0.999 -1.893 1.062
+ D 151 149 3 152 3 -15.336 -10.849 -0.001
+ IL 152 152 3 152 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 51 ]
+ ML 153 152 3 155 3 -8.792 -0.747 -1.315 -0.985 -1.661 0.875 0.427
+ D 154 152 3 155 3 -15.352 -10.865 -0.001
+ IL 155 155 3 155 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 52 ]
+ ML 156 155 3 158 3 -8.064 -0.019 -6.718 -1.435 1.602 -2.265 -1.374
+ D 157 155 3 158 3 -15.368 -2.299 -0.328
+ IL 158 158 3 158 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 53 ]
+ ML 159 158 3 161 3 -11.762 -0.001 -10.417 -0.319 -1.578 -0.510 1.112
+ D 160 158 3 161 3 -15.041 -10.554 -0.001
+ IL 161 161 3 161 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 54 ]
+ ML 162 161 3 164 3 -11.762 -0.145 -3.387 -1.361 0.234 -2.172 1.146
+ D 163 161 3 164 3 -15.041 -10.554 -0.001
+ IL 164 164 3 164 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 55 ]
+ ML 165 164 3 167 3 -11.619 -0.798 -1.236 0.011 -0.849 -2.726 1.193
+ D 166 164 3 167 3 -15.078 -10.591 -0.001
+ IL 167 167 3 167 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 56 ]
+ ML 168 167 3 170 3 -2.155 -3.927 -0.495 0.107 -1.045 0.753 -0.409
+ D 169 167 3 170 3 -15.220 -10.733 -0.001
+ IL 170 170 3 170 3 -3.697 -1.311 -0.944 0.000 0.000 0.000 0.000
+ [ MATL 57 ]
+ ML 171 170 3 173 3 -8.064 -0.019 -6.718 -1.429 -2.524 1.671 -1.884
+ D 172 170 3 173 3 -15.368 -6.425 -0.017
+ IL 173 173 3 173 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 58 ]
+ ML 174 173 3 176 3 -8.792 -0.589 -1.588 -0.985 -1.661 0.875 0.427
+ D 175 173 3 176 3 -15.352 -6.444 -0.017
+ IL 176 176 3 176 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 59 ]
+ ML 177 176 3 179 3 -8.875 -0.011 -7.529 0.708 -1.955 0.785 -1.374
+ D 178 176 3 179 3 -15.350 -3.042 -0.187
+ IL 179 179 3 179 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 60 ]
+ ML 180 179 3 182 3 -11.203 -0.002 -9.857 -0.543 -0.093 1.178 -3.128
+ D 181 179 3 182 3 -15.164 -4.304 -0.075
+ IL 182 182 3 182 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 183 182 3 185 3 -11.572 -0.002 -10.226 -1.777 0.235 0.968 -0.799
+ D 184 182 3 185 3 -15.090 -5.473 -0.033
+ IL 185 185 3 185 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 62 ]
+ ML 186 185 3 188 3 -11.701 -0.002 -10.355 0.247 0.569 0.076 -1.861
+ D 187 185 3 188 3 -15.058 -10.571 -0.001
+ IL 188 188 3 188 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 63 ]
+ ML 189 188 3 191 3 -11.701 -0.080 -4.223 -0.977 0.902 0.292 -1.328
+ D 190 188 3 191 3 -15.058 -0.019 -6.288
+ IL 191 191 3 191 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 64 ]
+ ML 192 191 3 194 3 -0.713 -1.360 -12.596 -0.131 -3.260 1.530 -3.396
+ D 193 191 3 194 3 -9.860 -0.079 -4.252
+ IL 194 194 3 194 3 -6.751 -0.014 -10.646 0.000 0.000 0.000 0.000
+ [ MATL 65 ]
+ ML 195 194 3 197 3 -13.971 -0.000 -12.625 -3.231 1.707 -4.784 -0.754
+ D 196 194 3 197 3 -6.174 -1.687 -0.566
+ IL 197 197 3 197 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 66 ]
+ ML 198 197 3 200 3 -13.971 -0.000 -12.625 -1.111 0.589 0.841 -2.051
+ D 199 197 3 200 3 -6.174 -1.687 -0.566
+ IL 200 200 3 200 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 67 ]
+ ML 201 200 3 203 3 -13.971 -0.000 -12.625 -1.625 1.096 -0.837 -0.032
+ D 202 200 3 203 3 -6.174 -1.687 -0.566
+ IL 203 203 3 203 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 68 ]
+ ML 204 203 3 206 3 -13.971 -0.000 -12.625 -0.258 -1.063 1.027 -0.628
+ D 205 203 3 206 3 -6.174 -1.687 -0.566
+ IL 206 206 3 206 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 69 ]
+ ML 207 206 3 209 3 -13.971 -0.000 -12.625 -0.725 -3.505 1.651 -2.591
+ D 208 206 3 209 3 -6.174 -1.687 -0.566
+ IL 209 209 3 209 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 70 ]
+ ML 210 209 3 212 3 -13.971 -0.000 -12.625 -4.940 -8.954 1.986 -8.313
+ D 211 209 3 212 3 -6.174 -1.687 -0.566
+ IL 212 212 3 212 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 213 212 3 215 3 -13.971 -0.000 -12.625 -2.040 -6.999 -8.040 1.905
+ D 214 212 3 215 3 -6.174 -1.687 -0.566
+ IL 215 215 3 215 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 72 ]
+ ML 216 215 3 218 3 -13.971 -0.000 -12.625 -8.878 -9.011 -9.336 1.998
+ D 217 215 3 218 3 -6.174 -1.687 -0.566
+ IL 218 218 3 218 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 73 ]
+ ML 219 218 3 221 3 -13.971 -0.000 -12.625 -6.878 1.979 -5.714 -5.080
+ D 220 218 3 221 3 -6.174 -1.687 -0.566
+ IL 221 221 3 221 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 74 ]
+ ML 222 221 3 224 3 -13.971 -0.000 -12.625 -0.336 -7.439 1.672 -6.007
+ D 223 221 3 224 3 -6.174 -1.687 -0.566
+ IL 224 224 3 224 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 75 ]
+ ML 225 224 3 227 3 -13.971 -0.000 -12.625 1.997 -8.574 -8.032 -8.484
+ D 226 224 3 227 3 -6.174 -1.687 -0.566
+ IL 227 227 3 227 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 76 ]
+ ML 228 227 3 230 3 -13.971 -0.004 -8.670 0.685 -1.627 -0.894 0.614
+ D 229 227 3 230 3 -6.174 -1.687 -0.566
+ IL 230 230 3 230 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 77 ]
+ ML 231 230 3 233 3 -13.968 -0.000 -12.622 -1.742 0.204 -5.128 1.334
+ D 232 230 3 233 3 -7.417 -0.497 -1.808
+ IL 233 233 3 233 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 78 ]
+ ML 234 233 3 236 3 -13.971 -0.000 -12.625 -7.003 1.970 -8.011 -3.850
+ D 235 233 3 236 3 -6.174 -1.687 -0.566
+ IL 236 236 3 236 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 79 ]
+ ML 237 236 3 239 3 -13.971 -0.000 -12.625 -2.652 1.642 -3.965 -0.609
+ D 238 236 3 239 3 -6.174 -1.687 -0.566
+ IL 239 239 3 239 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 80 ]
+ ML 240 239 3 242 3 -13.971 -0.000 -12.625 -1.440 1.027 -0.477 -0.191
+ D 241 239 3 242 3 -6.174 -1.687 -0.566
+ IL 242 242 3 242 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 81 ]
+ ML 243 242 3 245 3 -5.350 -0.036 -12.625 -0.280 -1.088 1.184 -1.204
+ D 244 242 3 245 3 -6.174 -1.687 -0.566
+ IL 245 245 3 245 3 -3.659 -0.138 -6.359 0.000 0.000 0.000 0.000
+ [ MATL 82 ]
+ ML 246 245 3 248 3 -13.971 -0.000 -12.625 -2.565 0.635 0.656 -0.509
+ D 247 245 3 248 3 -6.174 -1.687 -0.566
+ IL 248 248 3 248 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 83 ]
+ ML 249 248 3 251 3 -13.971 -0.000 -12.625 -0.218 0.625 -2.782 0.539
+ D 250 248 3 251 3 -6.174 -1.687 -0.566
+ IL 251 251 3 251 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 84 ]
+ ML 252 251 3 254 3 -13.971 -0.000 -12.625 -0.936 -0.241 0.717 -0.017
+ D 253 251 3 254 3 -6.174 -1.687 -0.566
+ IL 254 254 3 254 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 85 ]
+ ML 255 254 3 257 3 -13.971 -0.000 -12.625 -0.709 -0.284 0.753 -0.182
+ D 256 254 3 257 3 -6.174 -1.687 -0.566
+ IL 257 257 3 257 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 86 ]
+ ML 258 257 3 260 3 -13.971 -0.000 -12.625 -0.462 -0.431 0.816 -0.375
+ D 259 257 3 260 3 -6.174 -1.687 -0.566
+ IL 260 260 3 260 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 87 ]
+ ML 261 260 3 263 3 -13.971 -0.000 -12.625 -0.219 -1.250 1.081 -0.725
+ D 262 260 3 263 3 -6.174 -1.687 -0.566
+ IL 263 263 3 263 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 88 ]
+ ML 264 263 3 266 3 -13.971 -0.000 -12.625 -0.741 -0.007 0.777 -0.529
+ D 265 263 3 266 3 -6.174 -1.687 -0.566
+ IL 266 266 3 266 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 89 ]
+ ML 267 266 3 269 3 -13.971 -0.019 -6.263 -0.962 1.526 -2.136 -1.395
+ D 268 266 3 269 3 -6.174 -1.687 -0.566
+ IL 269 269 3 269 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 90 ]
+ ML 270 269 3 272 2 * 0.000 1.039 -3.030 0.513 -1.334
+ D 271 269 3 272 2 * 0.000
+ IL 272 272 3 272 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 91 ]
+ E 273 272 3 -1 0
+//
diff --git a/TRNAinf-ns-c.cm b/TRNAinf-ns-c.cm
new file mode 100644
index 0000000..eb16491
--- /dev/null
+++ b/TRNAinf-ns-c.cm
@@ -0,0 +1,404 @@
+INFERNAL-1 [1.0]
+NAME tRNA1415G-nostruct
+STATES 274
+NODES 92
+ALPHABET 1
+ELSELF -0.08926734
+WBETA 1e-07
+NSEQ 1415
+EFFNSEQ 1415.000
+CLEN 90
+BCOM cmbuild --rf --enone -F TRNAinf-ns-nc.cm trna1415G-ns.sto
+BDATE Sun Feb 8 19:08:54 2009
+CCOM cmcalibrate --exp-hfile cmcalibrate_files/TRNAinf-ns.hfile --exp-sfile cmcalibrate_files/TRNAinf-ns.sfile --exp-qqfile cmcalibrate_files/TRNAinf-ns.qqfile --exp-ffile cmcalibrate_files/TRNAinf-ns.ffile --fil-dfile cmcalibrate_files/TRNAinf-ns.dfile -s 208 TRNAinf-ns-c.cm
+CDATE Sun Feb 8 20:30:24 2009
+NULL 0.000 0.000 0.000 0.000
+PART 1 0 100
+E-LC 0 0.49078 -12.62611 -0.78469 1500000 375887 0.002993
+E-GC 0 0.41765 -8.89028 0.64848 1500000 20146 0.018614
+E-LI 0 0.46559 -11.51012 0.52782 1500000 305685 0.003680
+E-GI 0 0.43790 -6.91908 2.16532 1500000 20030 0.018722
+E-LV 0 0.47172 -3.63429 3.80760 34250000 85962 0.029882
+E-GV 0 0.47808 -3.61099 6.00724 34250000 85034 0.010070
+E-LF 0 0.60665 1.70442 7.49428 34250000 86129 0.029824
+E-GF 0 0.49333 -1.70892 7.61160 34250000 85019 0.010071
+FT-LC 55 0.99500 10000 1500000 0
+ 828.381 683.676 648.382 551.638 487.051 455.646 393.644 368.084 319.178 299.612 266.63 234.85 210.456 175.114 142.585 128.545 119.702 109.886 103.41 93.4411 81.2389 69.3969 62.3148 53.2386 50.7446 48.7088 44.4731 35.0529 31.6602 28.1016 24.3376 21.7681 20.263 19.1913 16.3107 15.1207 14.2761 12.3998 11.2004 10.4279 9.3165 3.68449 3.1511 2.56439 [...]
+ 1349.3 1214.13 1082.61 968.851 869.154 763.798 659.508 586.996 511.479 458.847 397.881 353.92 316.731 284.656 255.21 228.67 205.14 182.032 162.411 145.964 131.342 115.772 103.921 93.3974 83.9902 74.9372 67.1852 58.9696 51.853 46.6585 41.8826 37.4136 33.5026 30.0551 26.9787 24.1293 21.6069 19.1847 17.2523 15.524 14.1942 11.6445 9.89123 7.85 [...]
+FT-LI 61 0.99500 10000 1500000 0
+ 730.145 613.363 562.316 505.485 419.848 384.085 367.112 302.531 274.924 258.871 232.226 216.791 202.343 173.81 145.612 124.401 113.257 104.091 94.413 84.2348 72.0347 63.5166 60.6035 55.4635 51.8264 45.7608 37.8112 33.3336 31.7039 28.6252 25.7946 24.8692 22.6587 20.7227 18.5871 16.2985 15.5712 14.0906 13.4352 11.8505 11.3369 8.0177 7.31461 6.7513 [...]
+ 1343.58 1190.79 1065.67 943.905 849.347 763.798 659.508 586.996 514.904 458.847 397.881 357.806 320.403 284.656 246.386 210.689 187.752 168.943 151.65 136.459 122.491 109.554 97.39 86.9453 76.8244 69.0445 62.0525 54.8958 49.0978 44.0188 39.1552 34.956 31.416 28.2346 25.4061 22.7641 20.4589 18.1873 16.2467 14.6103 14.1942 12.5315 11.2488 9.90323 [...]
+FT-GC 55 0.99500 10000 1500000 1
+ 20146 5173.43 3379.23 2245.93 1487.74 1332.51 1074.51 778.898 664.417 550.594 451.233 404.656 365.616 329.337 273.841 215.146 175.661 132.26 119.913 106.551 96.5188 89.6996 74.8323 68.7454 63.5878 57.5931 52.2781 45.2188 40.1294 33.7606 31.0973 27.6475 23.8326 22.0934 20.1651 17.9638 16.9852 7.90368 7.15213 6.14099 5.59548 5.00384 4.72121 3.89203 [...]
+ 704.051 609.297 547.711 486.795 434.364 381.699 339.414 304.956 273.726 245.332 216.012 188.607 167.3 149.945 134.523 119.503 106.948 95.3348 84.3563 74.4582 66.6356 59.8412 53.2907 47.6214 42.7869 38.481 34.6085 30.1881 27.1636 24.2021 21.7129 19.3934 17.3902 15.6016 14.0039 12.5636 11.3648 10.1672 9.00082 7.85893 6.74445 6.04183 5.4365 4.72111 [...]
+FT-GI 59 0.99500 10000 1500000 1
+ 20030 3891.23 2110.86 1733.64 1071.72 989.149 901.971 710.174 627.136 469.001 441.797 372.657 325.842 280.263 232.646 194.586 166.599 130.733 114.122 103.102 92.9519 84.2965 74.585 67.1302 61.4245 57.9251 52.6792 45.8903 39.493 31.5045 29.5164 26.4122 24.0082 21.536 19.3965 16.6055 15.0612 10.9822 9.86983 8.94291 8.15398 7.3736 6.72621 6.06834 [...]
+ 704.051 609.297 547.711 486.795 434.364 381.699 339.414 304.956 273.726 245.332 216.012 188.607 167.3 149.945 134.523 119.503 106.948 95.3348 84.3563 74.4582 66.6356 59.8412 53.2907 47.6214 42.7869 38.481 34.6256 30.1881 27.1636 24.2021 21.7129 19.3934 17.3902 15.6016 14.0039 12.545 11.3648 10.2074 9.13052 8.13908 7.31279 6.58012 5.89753 5.30666 [...]
+MODEL:
+ [ ROOT 0 ]
+ S 0 -1 0 1 4 -5.647 -2.578 -0.307 -7.818
+ IL 1 1 2 1 4 -6.859 -1.137 -0.900 -10.028 0.000 0.000 0.000 0.000
+ IR 2 2 3 2 3 -0.590 -1.580 -9.669 0.000 0.000 0.000 0.000
+ [ MATL 1 ]
+ ML 3 2 3 5 3 -16.502 -0.000 -15.157 -0.476 -1.314 1.308 -1.310
+ D 4 2 3 5 3 -10.356 -0.056 -4.747
+ IL 5 5 3 5 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 2 ]
+ ML 6 5 3 8 3 -16.510 -0.000 -15.164 -0.544 0.310 0.585 -0.801
+ D 7 5 3 8 3 -6.174 -1.687 -0.566
+ IL 8 8 3 8 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 3 ]
+ ML 9 8 3 11 3 -16.510 -0.000 -15.164 -0.396 0.076 0.344 -0.126
+ D 10 8 3 11 3 -6.174 -1.687 -0.566
+ IL 11 11 3 11 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 4 ]
+ ML 12 11 3 14 3 -9.201 -0.003 -10.751 -0.168 -0.225 0.447 -0.167
+ D 13 11 3 14 3 -6.174 -1.687 -0.566
+ IL 14 14 3 14 3 -2.743 -0.273 -5.443 0.000 0.000 0.000 0.000
+ [ MATL 5 ]
+ ML 15 14 3 17 3 -16.509 -0.000 -15.163 0.295 -0.157 0.044 -0.243
+ D 16 14 3 17 3 -7.715 -0.390 -2.107
+ IL 17 17 3 17 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 6 ]
+ ML 18 17 3 20 3 -10.851 -0.001 -15.164 -0.139 -0.441 -0.195 0.567
+ D 19 17 3 20 3 -6.174 -1.687 -0.566
+ IL 20 20 3 20 3 -1.988 -0.496 -4.688 0.000 0.000 0.000 0.000
+ [ MATL 7 ]
+ ML 21 20 3 23 3 -16.510 -0.004 -8.608 0.486 -2.894 0.703 -0.257
+ D 22 20 3 23 3 -6.174 -1.687 -0.566
+ IL 23 23 3 23 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 8 ]
+ ML 24 23 3 26 3 -7.229 -0.022 -6.842 -2.035 -4.901 -2.973 1.846
+ D 25 23 3 26 3 -9.461 -0.106 -3.853
+ IL 26 26 3 26 3 -4.199 -0.094 -6.899 0.000 0.000 0.000 0.000
+ [ MATL 9 ]
+ ML 27 26 3 29 3 -6.782 -0.013 -15.151 1.370 -2.907 0.244 -3.366
+ D 28 26 3 29 3 -11.126 -0.033 -5.517
+ IL 29 29 3 29 3 -4.581 -0.071 -7.281 0.000 0.000 0.000 0.000
+ [ MATL 10 ]
+ ML 30 29 3 32 3 -16.510 -0.000 -15.164 -1.702 -2.393 1.744 -2.714
+ D 31 29 3 32 3 -6.174 -1.687 -0.566
+ IL 32 32 3 32 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 11 ]
+ ML 33 32 3 35 3 -16.510 -0.000 -15.164 -2.916 1.111 -2.031 0.548
+ D 34 32 3 35 3 -6.174 -1.687 -0.566
+ IL 35 35 3 35 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 12 ]
+ ML 36 35 3 38 3 -16.510 -0.000 -15.164 -0.921 -0.424 -0.513 1.019
+ D 37 35 3 38 3 -6.174 -1.687 -0.566
+ IL 38 38 3 38 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 13 ]
+ ML 39 38 3 41 3 -16.510 -0.004 -8.402 -0.611 0.144 -0.593 0.657
+ D 40 38 3 41 3 -6.174 -1.687 -0.566
+ IL 41 41 3 41 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 14 ]
+ ML 42 41 3 44 3 -16.505 -0.017 -6.438 1.873 -5.019 -3.121 -2.389
+ D 43 41 3 44 3 -9.649 -5.162 -0.043
+ IL 44 44 3 44 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 15 ]
+ ML 45 44 3 47 3 -16.489 -0.260 -2.602 0.760 -2.963 0.888 -1.611
+ D 46 44 3 47 3 -11.840 -7.353 -0.009
+ IL 47 47 3 47 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 16 ]
+ ML 48 47 3 50 3 -16.229 -1.139 -0.873 -0.871 -0.362 -2.505 1.321
+ D 49 47 3 50 3 -15.430 -10.943 -0.001
+ IL 50 50 3 50 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 17 ]
+ ML 51 50 3 53 3 -2.064 -0.410 -6.932 -1.344 0.043 -3.899 1.327
+ D 52 50 3 53 3 -17.254 -0.140 -3.439
+ IL 53 53 3 53 3 -4.644 -0.060 -10.489 0.000 0.000 0.000 0.000
+ [ MATL 18 ]
+ ML 54 53 3 56 3 -16.419 -0.000 -15.073 -1.181 -2.707 1.649 -1.886
+ D 55 53 3 56 3 -13.891 -9.404 -0.002
+ IL 56 56 3 56 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 19 ]
+ ML 57 56 3 59 3 -16.419 -0.319 -2.335 -1.565 -2.573 1.615 -1.218
+ D 58 56 3 59 3 -13.891 -9.404 -0.002
+ IL 59 59 3 59 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 20 ]
+ ML 60 59 3 62 3 -0.979 -1.031 -8.141 -1.478 -1.029 -2.625 1.580
+ D 61 59 3 62 3 -5.311 -0.057 -6.216
+ IL 62 62 3 62 3 -2.215 -0.364 -7.102 0.000 0.000 0.000 0.000
+ [ MATL 21 ]
+ ML 63 62 3 65 3 -16.496 -0.000 -15.150 1.761 -3.648 -1.627 -2.270
+ D 64 62 3 65 3 -11.226 -0.030 -5.618
+ IL 65 65 3 65 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 22 ]
+ ML 66 65 3 68 3 -16.510 -0.000 -15.164 0.879 -3.096 0.636 -1.028
+ D 67 65 3 68 3 -6.174 -1.687 -0.566
+ IL 68 68 3 68 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 23 ]
+ ML 69 68 3 71 3 -16.510 -0.000 -15.164 1.008 -0.533 -0.343 -0.972
+ D 70 68 3 71 3 -6.174 -1.687 -0.566
+ IL 71 71 3 71 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 24 ]
+ ML 72 71 3 74 3 -16.510 -0.000 -15.164 0.453 -1.932 1.161 -2.913
+ D 73 71 3 74 3 -6.174 -1.687 -0.566
+ IL 74 74 3 74 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 25 ]
+ ML 75 74 3 77 3 -16.510 -0.006 -7.945 -2.659 1.485 -2.211 -0.274
+ D 76 74 3 77 3 -6.174 -1.687 -0.566
+ IL 77 77 3 77 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 26 ]
+ ML 78 77 3 80 3 -7.293 -0.009 -15.158 0.871 -2.591 0.703 -1.403
+ D 79 77 3 80 3 -10.074 -0.068 -4.466
+ IL 80 80 3 80 3 -4.142 -0.097 -6.842 0.000 0.000 0.000 0.000
+ [ MATL 27 ]
+ ML 81 80 3 83 3 -10.025 -0.001 -15.164 -0.483 0.314 -0.967 0.613
+ D 82 80 3 83 3 -6.174 -1.687 -0.566
+ IL 83 83 3 83 3 -2.308 -0.383 -5.008 0.000 0.000 0.000 0.000
+ [ MATL 28 ]
+ ML 84 83 3 86 3 -16.510 -0.000 -15.164 -0.521 0.449 -1.302 0.616
+ D 85 83 3 86 3 -6.174 -1.687 -0.566
+ IL 86 86 3 86 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 29 ]
+ ML 87 86 3 89 3 -16.510 -0.001 -10.125 0.160 -1.089 0.399 0.129
+ D 88 86 3 89 3 -6.174 -1.687 -0.566
+ IL 89 89 3 89 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 30 ]
+ ML 90 89 3 92 3 -16.508 -0.000 -15.162 -0.957 -0.419 1.355 -2.480
+ D 91 89 3 92 3 -8.174 -0.273 -2.566
+ IL 92 92 3 92 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 31 ]
+ ML 93 92 3 95 3 -16.510 -0.000 -15.164 0.574 -0.099 -0.248 -0.445
+ D 94 92 3 95 3 -6.174 -1.687 -0.566
+ IL 95 95 3 95 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 32 ]
+ ML 96 95 3 98 3 -8.892 -0.003 -15.164 -3.426 1.205 -4.796 0.646
+ D 97 95 3 98 3 -6.174 -1.687 -0.566
+ IL 98 98 3 98 3 -2.936 -0.236 -5.636 0.000 0.000 0.000 0.000
+ [ MATL 33 ]
+ ML 99 98 3 101 3 -16.510 -0.000 -15.164 -9.794 -3.318 -10.511 1.963
+ D 100 98 3 101 3 -6.174 -1.687 -0.566
+ IL 101 101 3 101 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 34 ]
+ ML 102 101 3 104 3 -16.510 -0.000 -15.164 -2.395 -0.665 0.411 0.887
+ D 103 101 3 104 3 -6.174 -1.687 -0.566
+ IL 104 104 3 104 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 35 ]
+ ML 105 104 3 107 3 -16.510 -0.000 -15.164 0.200 -0.175 -0.316 0.217
+ D 106 104 3 107 3 -6.174 -1.687 -0.566
+ IL 107 107 3 107 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 36 ]
+ ML 108 107 3 110 3 -16.510 -0.000 -15.164 0.119 -0.102 -0.270 0.205
+ D 109 107 3 110 3 -6.174 -1.687 -0.566
+ IL 110 110 3 110 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 37 ]
+ ML 111 110 3 113 3 -5.040 -0.045 -15.164 1.609 -7.196 -0.129 -5.136
+ D 112 110 3 113 3 -6.174 -1.687 -0.566
+ IL 113 113 3 113 3 -0.077 -4.263 -13.157 0.000 0.000 0.000 0.000
+ [ MATL 38 ]
+ ML 114 113 3 116 3 -16.510 -0.000 -15.164 1.421 -0.510 -2.807 -1.067
+ D 115 113 3 116 3 -6.174 -1.687 -0.566
+ IL 116 116 3 116 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 39 ]
+ ML 117 116 3 119 3 -16.510 -0.000 -15.164 -0.854 -0.363 0.131 0.655
+ D 118 116 3 119 3 -6.174 -1.687 -0.566
+ IL 119 119 3 119 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 40 ]
+ ML 120 119 3 122 3 -16.510 -0.000 -15.164 -3.364 1.205 -0.313 -0.337
+ D 121 119 3 122 3 -6.174 -1.687 -0.566
+ IL 122 122 3 122 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 41 ]
+ ML 123 122 3 125 3 -16.510 -0.000 -15.164 0.081 0.418 -1.057 0.171
+ D 124 122 3 125 3 -6.174 -1.687 -0.566
+ IL 125 125 3 125 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 42 ]
+ ML 126 125 3 128 3 -10.989 -0.003 -9.167 0.436 -1.764 0.552 -0.173
+ D 127 125 3 128 3 -6.174 -1.687 -0.566
+ IL 128 128 3 128 3 -1.945 -0.514 -4.645 0.000 0.000 0.000 0.000
+ [ MATL 43 ]
+ ML 129 128 3 131 3 -16.507 -0.000 -15.161 0.452 -1.668 0.386 0.015
+ D 130 128 3 131 3 -8.964 -0.152 -3.355
+ IL 131 131 3 131 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 44 ]
+ ML 132 131 3 134 3 -16.510 -0.213 -2.864 0.945 -0.909 -1.101 0.105
+ D 133 131 3 134 3 -6.174 -1.687 -0.566
+ IL 134 134 3 134 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 45 ]
+ ML 135 134 3 137 3 -8.436 -5.633 -0.034 0.209 -2.944 1.009 -0.511
+ D 136 134 3 137 3 -15.067 -0.019 -6.226
+ IL 137 137 3 137 3 -3.098 -0.209 -5.798 0.000 0.000 0.000 0.000
+ [ MATL 46 ]
+ ML 138 137 3 140 3 -13.825 -0.056 -4.729 -0.561 -1.046 1.188 -0.839
+ D 139 137 3 140 3 -17.685 -13.198 -0.000
+ IL 140 140 3 140 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 47 ]
+ ML 141 140 3 143 3 -13.770 -0.066 -4.479 -0.640 0.240 0.287 -0.063
+ D 142 140 3 143 3 -17.695 -13.208 -0.000
+ IL 143 143 3 143 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 48 ]
+ ML 144 143 3 146 3 -5.529 -0.641 -1.569 -0.534 0.638 -0.254 -0.129
+ D 145 143 3 146 3 -17.706 -13.219 -0.000
+ IL 146 146 3 146 3 -3.321 -0.177 -6.021 0.000 0.000 0.000 0.000
+ [ MATL 49 ]
+ ML 147 146 3 149 3 -13.111 -0.888 -1.122 -1.800 0.474 -0.259 0.574
+ D 148 146 3 149 3 -17.785 -13.298 -0.000
+ IL 149 149 3 149 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 50 ]
+ ML 150 149 3 152 3 -12.225 -0.676 -1.420 -0.064 -0.675 0.413 0.119
+ D 151 149 3 152 3 -17.853 -13.366 -0.000
+ IL 152 152 3 152 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 51 ]
+ ML 153 152 3 155 3 -11.551 -1.040 -0.962 -0.051 -0.478 -0.112 0.477
+ D 154 152 3 155 3 -17.882 -13.395 -0.000
+ IL 155 155 3 155 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 52 ]
+ ML 156 155 3 158 3 -10.514 -0.003 -9.168 -2.182 0.138 -1.596 1.232
+ D 157 155 3 158 3 -17.906 -2.876 -0.211
+ IL 158 158 3 158 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 53 ]
+ ML 159 158 3 161 3 -13.770 -0.010 -7.152 -0.289 -1.583 0.139 0.804
+ D 160 158 3 161 3 -17.695 -13.208 -0.000
+ IL 161 161 3 161 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 54 ]
+ ML 162 161 3 164 3 -13.760 -0.088 -4.086 0.094 -0.451 -1.987 0.963
+ D 163 161 3 164 3 -17.697 -13.210 -0.000
+ IL 164 164 3 164 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 55 ]
+ ML 165 164 3 167 3 -5.013 -0.584 -1.729 0.935 -0.852 -2.754 0.471
+ D 166 164 3 167 3 -17.711 -13.224 -0.000
+ IL 167 167 3 167 3 -2.268 -0.355 -6.610 0.000 0.000 0.000 0.000
+ [ MATL 56 ]
+ ML 168 167 3 170 3 -1.805 -5.623 -0.528 0.723 -1.172 0.113 -0.280
+ D 169 167 3 170 3 -17.780 -7.730 -0.007
+ IL 170 170 3 170 3 -6.101 -1.520 -0.651 0.000 0.000 0.000 0.000
+ [ MATL 57 ]
+ ML 171 170 3 173 3 -10.514 -0.003 -9.168 0.482 -2.966 1.029 -1.203
+ D 172 170 3 173 3 -17.906 -5.893 -0.024
+ IL 173 173 3 173 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 58 ]
+ ML 174 173 3 176 3 -11.551 -0.079 -4.243 -0.509 -0.366 0.327 0.341
+ D 175 173 3 176 3 -17.882 -5.653 -0.029
+ IL 176 176 3 176 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 59 ]
+ ML 177 176 3 179 3 -12.177 -0.001 -10.831 -0.046 -0.091 -0.544 0.492
+ D 178 176 3 179 3 -17.855 -4.446 -0.068
+ IL 179 179 3 179 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 60 ]
+ ML 180 179 3 182 3 -6.502 -0.016 -11.740 -0.017 -0.149 0.797 -1.429
+ D 181 179 3 182 3 -17.788 -4.232 -0.079
+ IL 182 182 3 182 3 -2.354 -0.369 -5.054 0.000 0.000 0.000 0.000
+ [ MATL 61 ]
+ ML 183 182 3 185 3 -13.687 -0.000 -12.341 -0.355 -0.499 0.726 -0.224
+ D 184 182 3 185 3 -17.709 -6.986 -0.011
+ IL 185 185 3 185 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 62 ]
+ ML 186 185 3 188 3 -13.754 -0.000 -12.408 -0.137 0.282 0.272 -0.585
+ D 187 185 3 188 3 -17.698 -13.211 -0.000
+ IL 188 188 3 188 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 63 ]
+ ML 189 188 3 191 3 -13.754 -0.449 -1.902 -1.315 0.984 -0.560 -0.087
+ D 190 188 3 191 3 -17.698 -0.014 -6.691
+ IL 191 191 3 191 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 64 ]
+ ML 192 191 3 194 3 -1.100 -0.910 -9.578 0.539 -3.489 0.896 -0.742
+ D 193 191 3 194 3 -5.057 -0.050 -7.937
+ IL 194 194 3 194 3 -5.401 -0.035 -12.774 0.000 0.000 0.000 0.000
+ [ MATL 65 ]
+ ML 195 194 3 197 3 -16.508 -0.000 -15.162 -1.725 0.910 -2.834 0.747
+ D 196 194 3 197 3 -8.555 -0.205 -2.947
+ IL 197 197 3 197 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 66 ]
+ ML 198 197 3 200 3 -16.510 -0.000 -15.164 0.226 -0.719 0.939 -1.709
+ D 199 197 3 200 3 -6.174 -1.687 -0.566
+ IL 200 200 3 200 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 67 ]
+ ML 201 200 3 203 3 -16.510 -0.000 -15.164 -0.254 0.230 -0.307 0.239
+ D 202 200 3 203 3 -6.174 -1.687 -0.566
+ IL 203 203 3 203 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 68 ]
+ ML 204 203 3 206 3 -8.047 -0.023 -6.372 0.295 -0.927 0.618 -0.489
+ D 205 203 3 206 3 -6.174 -1.687 -0.566
+ IL 206 206 3 206 3 -3.536 -0.151 -6.236 0.000 0.000 0.000 0.000
+ [ MATL 69 ]
+ ML 207 206 3 209 3 -16.492 -0.098 -3.925 -0.175 -3.230 1.453 -1.894
+ D 208 206 3 209 3 -11.587 -7.100 -0.011
+ IL 209 209 3 209 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 70 ]
+ ML 210 209 3 212 3 -16.394 -0.061 -4.604 -1.936 -3.562 1.825 -3.183
+ D 211 209 3 212 3 -14.236 -0.892 -1.117
+ IL 212 212 3 212 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 71 ]
+ ML 213 212 3 215 3 -10.928 -0.001 -12.013 -1.929 -2.701 -3.856 1.813
+ D 214 212 3 215 3 -14.166 -0.088 -4.081
+ IL 215 215 3 215 3 -1.931 -0.520 -4.631 0.000 0.000 0.000 0.000
+ [ MATL 72 ]
+ ML 216 215 3 218 3 -16.503 -0.003 -8.936 -2.119 -3.122 -1.967 1.765
+ D 217 215 3 218 3 -10.178 -0.063 -4.570
+ IL 218 218 3 218 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 73 ]
+ ML 219 218 3 221 3 -16.507 -0.002 -9.836 -0.819 1.547 -3.433 -1.258
+ D 220 218 3 221 3 -9.161 -0.131 -3.553
+ IL 221 221 3 221 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 74 ]
+ ML 222 221 3 224 3 -7.363 -0.027 -6.334 0.774 -2.691 0.903 -1.915
+ D 223 221 3 224 3 -8.400 -0.230 -2.791
+ IL 224 224 3 224 3 -4.087 -0.101 -6.787 0.000 0.000 0.000 0.000
+ [ MATL 75 ]
+ ML 225 224 3 227 3 -16.492 -0.081 -4.192 1.833 -3.456 -3.499 -1.953
+ D 226 224 3 227 3 -11.623 -7.136 -0.011
+ IL 227 227 3 227 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 76 ]
+ ML 228 227 3 230 3 -6.078 -0.150 -3.576 0.776 -1.355 -0.284 0.105
+ D 229 227 3 230 3 -14.021 -5.762 -0.027
+ IL 230 230 3 230 3 -2.594 -0.268 -8.060 0.000 0.000 0.000 0.000
+ [ MATL 77 ]
+ ML 231 230 3 233 3 -16.286 -0.029 -5.633 -2.332 -0.701 -3.752 1.638
+ D 232 230 3 233 3 -15.130 -0.775 -1.267
+ IL 233 233 3 233 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 78 ]
+ ML 234 233 3 236 3 -16.394 -0.000 -15.048 -3.411 1.836 -4.318 -1.806
+ D 235 233 3 236 3 -14.230 -0.250 -2.654
+ IL 236 236 3 236 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 79 ]
+ ML 237 236 3 239 3 -9.824 -0.002 -15.146 -2.110 1.441 -2.868 -0.125
+ D 238 236 3 239 3 -11.587 -0.024 -5.979
+ IL 239 239 3 239 3 -2.395 -0.357 -5.095 0.000 0.000 0.000 0.000
+ [ MATL 80 ]
+ ML 240 239 3 242 3 -16.510 -0.000 -15.164 -0.784 0.532 -0.660 0.422
+ D 241 239 3 242 3 -6.174 -1.687 -0.566
+ IL 242 242 3 242 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 81 ]
+ ML 243 242 3 245 3 -8.023 -0.006 -15.164 -0.007 -0.634 0.377 0.087
+ D 244 242 3 245 3 -6.174 -1.687 -0.566
+ IL 245 245 3 245 3 -3.555 -0.149 -6.255 0.000 0.000 0.000 0.000
+ [ MATL 82 ]
+ ML 246 245 3 248 3 -7.751 -0.008 -9.740 -2.070 0.584 -0.617 0.688
+ D 247 245 3 248 3 -6.174 -1.687 -0.566
+ IL 248 248 3 248 3 -3.769 -0.128 -6.469 0.000 0.000 0.000 0.000
+ [ MATL 83 ]
+ ML 249 248 3 251 3 -16.508 -0.000 -15.162 -0.278 0.549 -2.855 0.655
+ D 250 248 3 251 3 -8.480 -0.217 -2.872
+ IL 251 251 3 251 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 84 ]
+ ML 252 251 3 254 3 -16.510 -0.000 -15.164 0.187 -0.372 -0.033 0.152
+ D 253 251 3 254 3 -6.174 -1.687 -0.566
+ IL 254 254 3 254 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 85 ]
+ ML 255 254 3 257 3 -16.510 -0.000 -15.164 -0.530 -0.228 0.058 0.498
+ D 256 254 3 257 3 -6.174 -1.687 -0.566
+ IL 257 257 3 257 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 86 ]
+ ML 258 257 3 260 3 -16.510 -0.000 -15.164 -0.403 0.272 0.007 0.045
+ D 259 257 3 260 3 -6.174 -1.687 -0.566
+ IL 260 260 3 260 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 87 ]
+ ML 261 260 3 263 3 -16.510 -0.000 -15.164 -0.229 0.154 0.157 -0.121
+ D 262 260 3 263 3 -6.174 -1.687 -0.566
+ IL 263 263 3 263 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 88 ]
+ ML 264 263 3 266 3 -16.510 -0.000 -15.164 -0.877 0.403 0.326 -0.185
+ D 265 263 3 266 3 -6.174 -1.687 -0.566
+ IL 266 266 3 266 3 -1.442 -0.798 -4.142 0.000 0.000 0.000 0.000
+ [ MATL 89 ]
+ ML 267 266 3 269 3 -8.999 -0.019 -6.512 -1.402 1.082 -1.350 0.154
+ D 268 266 3 269 3 -6.174 -1.687 -0.566
+ IL 269 269 3 269 3 -2.867 -0.248 -5.568 0.000 0.000 0.000 0.000
+ [ MATL 90 ]
+ ML 270 269 3 272 2 * 0.000 1.100 -2.060 -0.143 -0.494
+ D 271 269 3 272 2 * 0.000
+ IL 272 272 3 272 2 -1.823 -0.479 0.000 0.000 0.000 0.000
+ [ END 91 ]
+ E 273 272 3 -1 0
+//
diff --git a/align.c b/align.c
new file mode 100644
index 0000000..875e0b8
--- /dev/null
+++ b/align.c
@@ -0,0 +1,471 @@
+/* align.c
+ * SRE, Tue Jun 29 14:05:48 1993
+ * 2.0: Thu Sep 30 14:43:05 1993
+ *
+ * Code for producing a multiple sequence alignment from tracebacks.
+ *
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+
+/* Function: create_master()
+ *
+ * Purpose: Produce a "master copy" of the linear order in
+ * which a model's states produce a sequence. Used
+ * for reference during alignment construction.
+ *
+ * This linked list is created with Init_align()
+ * and must be free'd by Free_align(). Each structure
+ * in the list represents a possible emission from
+ * a match state, and contains the index of the responsible
+ * state. The sym field is used as an internal flag
+ * (temporary dummy structures are used for bifurc's, and
+ * flagged in the sym field for later removal). The
+ * pos and substate fields are not used or meaningful. ret_len
+ * is the maximum number of symbols that can be
+ * emitted by non-insert states.
+ */
+static int
+create_master(struct cm_s *cm,
+ struct align_s **ret_master,
+ int *ret_len)
+{
+ struct m2ali_s *stack; /* stack used to traverse the model cv */
+ struct align_s *master; /* RETURN: maximal match emission alignment */
+ struct align_s *curr;
+ int oldidx;
+ int oldtype;
+ struct align_s *oldafter;
+ int newidx;
+ int newtype;
+ struct align_s *newafter;
+ int len;
+
+ /* Initialize the linked list of state order, master
+ */
+ master = Init_align();
+
+ /* Initialize pushdown stack for traversing the model.
+ */
+ stack = Init_m2ali();
+ newidx = (cm->nodes > 1) ? 1 : -1;
+ newtype = uMATP_ST; /* assume 'worst' case, all nodes generate pairs */
+ Push_m2ali(stack, newidx, newtype, master);
+
+ /* While there are still active nodes on the stack, pop one off
+ * and deal with it.
+ */
+ len = 0;
+ while (Pop_m2ali(stack, &oldidx, &oldtype, &oldafter))
+ {
+ if (oldidx == -1) continue; /* END */
+
+ if (cm->nd[oldidx].type == BIFURC_NODE)
+ {
+ /* deal with right branch.
+ * Gotta insert a dummy temporarily */
+ newafter = Insafter_align(-1, '-', ' ', oldidx, uBIFURC_ST, oldafter);
+ Push_m2ali(stack, cm->nd[oldidx].nxt2, uBEGIN_ST, newafter);
+ len++;
+ /* deal with left branch */
+ Push_m2ali(stack, cm->nd[oldidx].nxt, uBEGIN_ST, oldafter);
+ }
+
+ else if (cm->nd[oldidx].type == BEGINL_NODE ||
+ cm->nd[oldidx].type == BEGINL_NODE ||
+ cm->nd[oldidx].type == ROOT_NODE)
+ { /* BEGIN's aren't reponsible for any MAT states */
+ Push_m2ali(stack, cm->nd[oldidx].nxt, uBEGIN_ST, oldafter);
+ }
+
+ else
+ {
+ (void) Insafter_align(-1, '.', ' ', oldidx, uMATP_ST, oldafter);
+ newafter = Insafter_align(-1, '.', ' ', oldidx, uMATP_ST, oldafter);
+ len += 2;
+ Push_m2ali(stack, cm->nd[oldidx].nxt, uBEGIN_ST, newafter);
+ }
+ }
+
+ /* Remove the temporary dummies used to BIFURC
+ */
+ for (curr = master->nxt; curr->nxt != NULL; curr = curr->nxt)
+ if (curr->nxt->sym == '-')
+ {
+ Delafter_align(curr);
+ len--;
+ }
+
+ Free_m2ali(stack);
+ *ret_len = len;
+ *ret_master = master;
+#ifdef DEBUG
+/* print_align(master); */
+#endif
+
+ return 1;
+}
+
+
+/* Function: Trace2ali()
+ *
+ * Purpose: Given a traceback (tree-structure alignment of a model
+ * to a sequence), construct a linear linked list representation
+ * (align_s) of the sequence alignment to the model.
+ *
+ * Args: seq - 0..len-1 sequence to align
+ * tr - traceback containing tree-wise alignment
+ * watsoncrick - if TRUE, only canonical pairs get structure annotation
+ * ret_ali - RETURN: linear list alignment
+ */
+int
+Trace2ali(char *seq, struct trace_s *tr, int watsoncrick, struct align_s **ret_ali)
+{
+ struct align_s *ali; /* RETURN: linear list of alignment */
+ struct t2ali_s *stack; /* stack used to traverse the traceback tr */
+ struct trace_s *currtr;
+ struct align_s *newafter;
+ struct align_s *oldafter;
+ struct align_s *curr;
+ char ssl, ssr;/* symbols <.> for secondary structure rep. */
+
+ /* Initialize the linked list for the alignment of sequence to model
+ */
+ ali = Init_align();
+
+ /* Initialize the pushdown stack for traversal of the traceback
+ */
+ stack = Init_t2ali();
+ Push_t2ali(stack, tr, ali);
+
+ while (Pop_t2ali(stack, &currtr, &oldafter))
+ {
+ switch (currtr->type) {
+ case END_ST:
+ break; /* ignore END states */
+
+ case uBIFURC_ST:
+ /* deal with right branch; insert a dummy */
+ newafter = Insafter_align(-1, '*', ' ', currtr->nodeidx, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtr, newafter);
+ /* deal with left branch */
+ Push_t2ali(stack, currtr->nxtl, oldafter);
+ break;
+
+ case uBEGIN_ST:
+ Push_t2ali(stack, currtr->nxtl, oldafter);
+ break;
+
+ case uDEL_ST:
+ Insafter_align(-1, '-', '.', currtr->nodeidx, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtl, oldafter);
+ break;
+
+ case uMATP_ST:
+ if (! watsoncrick ||
+ IsRNAComplement(seq[currtr->emitr], seq[currtr->emitl], TRUE))
+ { ssr = '<'; ssl = '>'; }
+ else
+ { ssr = '.'; ssl = '.'; }
+
+ (void) Insafter_align(currtr->emitr, seq[currtr->emitr], ssr,
+ currtr->nodeidx, currtr->type, oldafter);
+ newafter = Insafter_align(currtr->emitl, seq[currtr->emitl], ssl,
+ currtr->nodeidx, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtl, newafter);
+ break;
+
+ case uINSL_ST:
+ case uMATL_ST:
+ newafter = Insafter_align(currtr->emitl, seq[currtr->emitl], '.',
+ currtr->nodeidx, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtl, newafter);
+ break;
+
+ case uINSR_ST:
+ case uMATR_ST:
+ (void) Insafter_align(currtr->emitr, seq[currtr->emitr], '.',
+ currtr->nodeidx, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtl, oldafter);
+ break;
+ }
+ }
+
+ /* Remove the temporary dummies used to BIFURC
+ */
+ for (curr = ali->nxt; curr->nxt != NULL; curr = curr->nxt)
+ if (curr->nxt->sym == '*')
+ Delafter_align(curr);
+
+ Free_t2ali(stack);
+ *ret_ali = ali;
+
+#ifdef DEBUG
+/* print_align(ali); */
+#endif
+ return 1;
+}
+
+
+/* Function: Traces2Alignment()
+ *
+ * Purpose: Given a set of tracebacks for alignments of multiple sequences to
+ * a model, construct a multiple sequence alignment.
+ *
+ * The tricky bit, which involves some precalculations, is allowing
+ * the proper amount of space for insertions.
+ */
+int
+Traces2Alignment(char **rseqs,
+ SQINFO *sqinfo,
+ struct trace_s **tr,
+ int nseq,
+ struct cm_s *cm,
+ int watsoncrick, /* TRUE to annotate only canonical pairs */
+ char ***ret_aseqs,
+ AINFO *ainfo)
+{
+ struct align_s *master; /* representation of how MAT columns map onto the model */
+ struct align_s **ali; /* array of align_s alignments of the sequences to model */
+ int *matuse; /* 0 if MAT column is never used, 1 otherwise, 1..len */
+ int *insuse; /* per sequence, count use of inserts between MAT columns; 0..len */
+ int *max_insuse; /* overall maxima, keep track of ins use between columns */
+ int *matpos; /* array of MAT column positions in the alignment, 1..len */
+ int len; /* length of master - maximum number of MAT columns */
+ int idx; /* counter for sequences */
+ struct align_s *currmaster;
+ struct align_s *currali;
+ int aseqlen; /* length of multiple sequence alignment */
+ char **aseqs; /* RETURN: multiple sequence alignment */
+ char **ss; /* secondary structures */
+ int apos; /* position in absolute alignment columns */
+ int matcol; /* position in MAT column coord arrays (matuse, matpos) */
+
+ /* First we use the model to calculate "master", which will define
+ * the columns of the multiple sequence alignment (MAT-produced) and
+ * represents how they map onto the model states. Only the stateidx field of
+ * the align_s structures is meaningful.
+ */
+ if (! create_master(cm, &master, &len)) return 0;
+
+ /* Next we "invert" each traceback (from seq->model tree alignments
+ * to model->seq linear alignments) and create an array "ali" of individual
+ * alignments of the model to the sequences.
+ */
+ if ((ali = (struct align_s **) malloc (nseq * sizeof(struct align_s *))) == NULL)
+ { Die("Memory failure, line %d of %s", __LINE__, __FILE__); return 0; }
+ for (idx = 0; idx < nseq; idx++)
+ if (! Trace2ali(rseqs[idx], tr[idx], watsoncrick, &ali[idx])) return 0;
+
+ /* Now we're ready to start counting MAT and INS use.
+ *
+ * For MAT use, all we're doing is determining whether a given
+ * column in the master alignment is used or not (matuse[1..len] is
+ * 1 if yes, 0 if no)
+ *
+ * For INS use, we are counting the maximum number of occurrences
+ * of insert emissions between each MAT column of the master. max_insuse[0..len]
+ * keeps these numbers. max_insuse[5] is the maximum number of inserted
+ * symbols between columns 5 and 6, for example. Because there is
+ * some redundancy in the model -- different INS states may emit in
+ * the same place -- we have to first increment a counter array, insuse,
+ * for each individual sequence.
+ */
+ if (((matuse = (int *) calloc (len+1, sizeof(int))) == NULL) ||
+ ((insuse = (int *) calloc (len+1, sizeof(int))) == NULL) ||
+ ((max_insuse = (int *) calloc (len+1, sizeof(int))) == NULL) )
+ { Die("Memory failure, line %d of %s", __LINE__, __FILE__); return 0; }
+
+ for (idx = 0; idx < nseq; idx++)
+ {
+ for (matcol = 0; matcol <= len; matcol++)
+ insuse[matcol] = 0;
+
+ matcol = 0;
+ currmaster = master->nxt;
+ for (currali = ali[idx]->nxt; currali != NULL; currali = currali->nxt)
+ {
+ switch (currali->type) {
+ case uMATP_ST:
+ case uMATR_ST:
+ case uMATL_ST:
+ case uDEL_ST:
+ matcol++;
+ while (currmaster->nodeidx != currali->nodeidx)
+ { currmaster = currmaster->nxt; matcol++; }
+ matuse[matcol] = 1;
+ currmaster = currmaster->nxt;
+ break;
+
+ case uINSR_ST:
+ case uINSL_ST:
+ insuse[matcol]++;
+ break;
+ }
+ }
+ /* update max_insuse with new maxima, if any*/
+ for (matcol = 0; matcol <= len; matcol++)
+ if (insuse[matcol] > max_insuse[matcol])
+ max_insuse[matcol] = insuse[matcol];
+ }
+
+ /* calculate length of mult seq alignment, and alloc */
+ aseqlen = 0;
+ for (matcol = 0; matcol <= len; matcol++)
+ {
+ if (matuse[matcol] == 1) aseqlen++;
+ aseqlen += max_insuse[matcol];
+ }
+ if ((aseqs = (char **) malloc (nseq * sizeof(char *))) == NULL ||
+ (ss = (char **) malloc (nseq * sizeof(char *))) == NULL)
+ { Die("Memory failure, line %d of %s", __LINE__, __FILE__); return 0; }
+ for (idx = 0; idx < nseq; idx++)
+ if ((aseqs[idx] = (char *) malloc ((aseqlen+1) * sizeof(char))) == NULL ||
+ (ss[idx] = (char *) malloc ((aseqlen+1) * sizeof(char))) == NULL)
+ { Die("Memory failure, line %d of %s", __LINE__, __FILE__); return 0; }
+
+
+ /* Now we use matuse and max_insuse to calculate an array for the
+ * coordinates of the MAT columns in the multiple alignment.
+ */
+ if ((matpos = (int *) calloc (len+1 , sizeof(int))) == NULL)
+ { Die("Memory failure, line %d of %s", __LINE__, __FILE__); return 0; }
+ for (matcol = 1; matcol <= len; matcol++)
+ matpos[matcol] = matpos[matcol-1] + max_insuse[matcol-1] + matuse[matcol-1];
+
+ /* And finally, we're ready to actually construct the multiple sequence
+ * alignment. The resulting alignment is flushed-right with gaps.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ matcol = 0;
+ apos = 0;
+ currmaster = master;
+ for (currali = ali[idx]->nxt; currali != NULL; currali = currali->nxt)
+ {
+ switch (currali->type) {
+ case uMATP_ST:
+ case uMATR_ST:
+ case uMATL_ST:
+ /* goes in a MAT column */
+ while (currmaster->nodeidx != currali->nodeidx)
+ { currmaster = currmaster->nxt; matcol++; }
+ for (; apos < matpos[matcol]; apos++)
+ {
+ aseqs[idx][apos] = '.';
+ ss[idx][apos] = ' ';
+ }
+
+ aseqs[idx][apos] = toupper((int)currali->sym);
+ ss[idx][apos] = currali->ss;
+
+ apos++;
+ currmaster = currmaster->nxt;
+ matcol++;
+ break;
+
+ case uINSR_ST:
+ case uINSL_ST:
+ aseqs[idx][apos] = tolower((int)currali->sym);
+ ss[idx][apos] = currali->ss;
+ apos++;
+ break;
+
+ case uDEL_ST:
+ aseqs[idx][apos] = '.';
+ ss[idx][apos] = ' ';
+ apos++;
+ currmaster = currmaster->nxt;
+ matcol++;
+ break;
+ }
+ }
+ /* flush right */
+ for (; apos < aseqlen; apos++)
+ {
+ aseqs[idx][apos] = '.';
+ ss[idx][apos] = ' ';
+ }
+ aseqs[idx][apos] = '\0';
+ ss[idx][apos] = '\0';
+ }
+
+ for (idx = 0; idx < nseq; idx++)
+ Free_align(ali[idx]);
+ Free_align(master);
+ free(matpos);
+ free(max_insuse);
+ free(insuse);
+ free(matuse);
+ free(ali);
+
+ if (ainfo != NULL)
+ {
+ int leftcount;
+ int rightcount;
+
+ ainfo->flags = 0;
+
+ strcpy(ainfo->au, "CM RNA automatic alignment");
+ ainfo->flags |= AINFO_AUTH;
+
+ ainfo->alen = aseqlen;
+ ainfo->flags |= AINFO_ALEN;
+
+ /* copy sqinfo structure array */
+ if ((ainfo->sqinfo = (SQINFO *) malloc (sizeof(SQINFO) * nseq)) == NULL)
+ Die("malloc failed");
+ for (idx = 0; idx < nseq; idx++)
+ SeqinfoCopy(&(ainfo->sqinfo[idx]), &(sqinfo[idx]));
+
+ /* Construct a consensus structure string.
+ * Secondary structure strings, ss, are currently aligned to
+ * the aseqs. Calculate an aligned consensus structure from
+ * them.
+ */
+ if ((ainfo->cs = (char *) malloc (sizeof(char) * (aseqlen+1))) == NULL)
+ Die("malloc failed");
+ for (apos = 0; apos < aseqlen; apos ++)
+ {
+ leftcount = rightcount = 0;
+ for (idx = 0; idx < nseq; idx++)
+ if (ss[idx][apos] == '<') rightcount++;
+ else if (ss[idx][apos] == '>') leftcount++;
+
+ if (rightcount > nseq / 2) ainfo->cs[apos] = '<';
+ else if (leftcount > nseq / 2) ainfo->cs[apos] = '>';
+ else ainfo->cs[apos] = '.';
+ }
+ ainfo->cs[aseqlen] = '\0';
+ ainfo->flags |= AINFO_CS;
+
+ /* Construct individual secondary structure strings by de-aligning
+ * the individuals.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ MakeDealignedString(aseqs[idx], aseqlen, ss[idx], &(ainfo->sqinfo[idx].ss));
+ ainfo->sqinfo[idx].flags |= SQINFO_SS;
+ }
+ }
+
+ Free2DArray(ss, nseq);
+ *ret_aseqs = aseqs;
+ return 1;
+}
+
+
diff --git a/align_main.c b/align_main.c
new file mode 100644
index 0000000..7372d57
--- /dev/null
+++ b/align_main.c
@@ -0,0 +1,243 @@
+/* align_main.c
+ * SRE, Wed Jun 30 09:56:15 1993
+ * 2.0 Thu Sep 30 14:23:57 1993
+ *
+ * main() for covea
+ * Multiple sequence alignment to a covariance HMM model.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <math.h>
+
+#ifdef NEED_GETOPTH
+#include <getopt.h>
+#endif
+
+#include "structs.h"
+#include "funcs.h"
+#include "squid.h"
+#include "version.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define OPTIONS "aho:s:S"
+
+static char usage[] = "\
+Usage: covea [-options] <cm file> <seqfile>\n\
+where supported options are:\n\
+ -a : annotate all base pairs, not just canonical ones\n\
+ -h : print short help and version info\n\
+ -o <outfile> : write alignment to <outfile> in SELEX format\n\
+ -s <scorefile> : save individual alignment scores to <scorefile>\n\
+\n\
+Experimental options:\n\
+ -S : use small-memory variant of alignment algorithm\n";
+
+static char banner[] = "covea: multiple sequence alignment to a covariance model";
+
+int
+main(int argc, char **argv)
+{
+ char **rseqs; /* raw sequences to align */
+ char **aseqs; /* multiple sequence alignment */
+ SQINFO *sqinfo; /* array of info structures */
+ int nseq; /* number of seqs */
+ char *seqfile; /* sequence file */
+ int format; /* format of sequence file */
+ char *cmfile; /* cvhmm save file to read */
+ struct cm_s *cm; /* model */
+ struct trace_s **tr; /* array of tracebacks for seqs */
+ int idx; /* counter for sequences */
+ double score; /* score of indiv. alignment */
+ double tot_score; /* sum of scores */
+ AINFO ainfo; /* optional alignment info (sec structure) */
+ struct istate_s *icm; /* model, integer log odds form */
+ int statenum; /* # of states in icm */
+ double rfreq[ALPHASIZE]; /* expected background symbol frequencies */
+
+ char *outfile; /* file to write alignment to */
+ char *scorefile; /* file to save scores to */
+ FILE *ofp; /* opened outfile */
+ FILE *sfp; /* opened scorefile */
+ int do_smallmemory; /* use small-memory viterbi variant */
+ int watsoncrick; /* annotate only canonical pairs */
+
+ int optc;
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+#ifdef MEMDEBUG
+ unsigned long histid1, histid2, orig_size, current_size;
+#endif
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ outfile = NULL;
+ scorefile = NULL;
+ do_smallmemory = FALSE;
+ watsoncrick = TRUE;
+
+ while ((optc = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optc) {
+
+ case 'a': watsoncrick = FALSE; break;
+ case 'o': outfile = optarg; break;
+ case 's': scorefile = optarg; break;
+
+ case 'S': do_smallmemory = TRUE; break;
+
+ case 'h':
+ printf("%s\n version %s (%s)\n%s\n", banner, RELEASE, RELEASEDATE, usage);
+ exit(0);
+ default:
+ Die("unrecognized option %c\n", optc);
+ }
+
+ if (argc - optind != 2)
+ Die("%s\n", usage);
+
+ cmfile = argv[argc-2];
+ seqfile = argv[argc-1];
+
+#ifdef MEMDEBUG
+ orig_size = malloc_size(&histid1);
+#endif
+
+
+ /***********************************************
+ * Get sequence data and model; open output ptrs
+ ***********************************************/
+
+ if (! SeqfileFormat(seqfile, &format, NULL))
+ Die("Failed to determine format of file %s\n", seqfile);
+
+ if (! ReadMultipleRseqs(seqfile, format, &rseqs, &sqinfo, &nseq))
+ Die("Failed to read sequences from file %s", seqfile);
+
+ if (! ReadCM(cmfile, &cm))
+ Die("Failed to read model from file %s", cmfile);
+
+ rfreq[0] = rfreq[1] = rfreq[2] = rfreq[3] = 0.25;
+ if (! RearrangeCM(cm, rfreq, &icm, &statenum))
+ Die("Failed to convert CM to integer log odds");
+
+ if (outfile != NULL)
+ if ((ofp = fopen(outfile, "w")) == NULL)
+ Die("Open failed for alignment output file %s", outfile);
+
+ if (scorefile != NULL)
+ if ((sfp = fopen(scorefile, "w")) == NULL)
+ Die("Open failed for score output file %s", scorefile);
+
+ /***********************************************
+ * Print banner
+ ***********************************************/
+
+ puts(banner);
+ printf(" release %s, %s\n\n", RELEASE, RELEASEDATE);
+ printf("---------------------------------------------------\n");
+ printf("Sequence data: %s (%d sequences)\n", seqfile, nseq);
+ printf("Covariance model: %s (%d nodes)\n", cmfile, cm->nodes);
+ if (outfile != NULL)
+ printf("Alignment saved to: %s\n", outfile);
+ if (scorefile != NULL)
+ printf("Indiv. scores saved to: %s\n", scorefile);
+ printf("---------------------------------------------------\n");
+ puts("");
+
+ /***********************************************
+ * Do the alignment
+ ***********************************************/
+
+ if ((tr = (struct trace_s **) malloc (nseq * sizeof(struct trace_s *))) == NULL)
+ Die("Memory failure, line %d of %s", __LINE__, __FILE__);
+
+ tot_score = 0.0;
+ for (idx = 0; idx < nseq; idx++)
+ {
+ char *prepseq;
+ prepseq = Strdup(rseqs[idx]);
+ PrepareSequence(prepseq);
+
+ if (do_smallmemory)
+ {
+ if (! SmallViterbiAlign(icm, statenum, prepseq, &score, &tr[idx]))
+ Die("SmallViterbiAlign() failed on sequence %d", idx);
+ }
+ else if (! ViterbiAlign(icm, statenum, prepseq, &score, &tr[idx]))
+ Die("ViterbiAlign() failed on sequence %d", idx);
+
+ tot_score += score;
+ if (scorefile != NULL)
+ fprintf(sfp, "%-8.3f : %s\n", score, sqinfo[idx].name);
+
+ free(prepseq);
+ }
+
+ if (do_smallmemory)
+ {
+ printf("aborting... no traceback/alignment code yet for small memory variant\n");
+ Free2DArray(rseqs, nseq);
+ FreeCM(cm);
+ exit(0);
+ }
+
+ if (! Traces2Alignment(rseqs, sqinfo, tr, nseq, cm, watsoncrick, &aseqs, &ainfo))
+ Die("Traces2Alignment() failed");
+
+ /***********************************************
+ * Print the alignment
+ ***********************************************/
+
+ if (outfile != NULL)
+ {
+ if (! WriteSELEX(ofp, aseqs, nseq, &ainfo, 60))
+ Die("Write failed: can't save alignment to %s", outfile);
+ fclose(ofp);
+ printf("Alignment written to %s\n", outfile);
+ }
+ else
+ {
+ if (! WriteSELEX(stdout, aseqs, nseq, &ainfo, 60))
+ Die("Write failed: can't print alignment");
+ }
+
+ if (scorefile != NULL) fclose(sfp);
+
+ printf("Overall alignment score: %.2f\n", tot_score / (double) nseq);
+
+ /***********************************************
+ * Garbage collect and exit
+ ***********************************************/
+
+ for (idx = 0; idx < nseq; idx++)
+ {
+ FreeTrace(tr[idx], NULL);
+ FreeSequence(rseqs[idx],&(sqinfo[idx]));
+ }
+ free(tr);
+ free(sqinfo);
+ FreeAlignment(aseqs, nseq, &ainfo);
+ FreeCM(cm);
+ free(icm);
+
+#ifdef MEMDEBUG
+ current_size = malloc_size(&histid2);
+
+ if (current_size != orig_size)
+ malloc_list(2, histid1, histid2);
+ else
+ fprintf(stderr, "No memory leaks, sir.\n");
+
+#endif
+
+
+ return 0;
+}
diff --git a/alignio.c b/alignio.c
new file mode 100644
index 0000000..578d5de
--- /dev/null
+++ b/alignio.c
@@ -0,0 +1,431 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* alignio.c
+ * SRE, Mon Jul 12 11:57:37 1993
+ *
+ * Input/output of sequence alignments.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+/* Function: FreeAlignment()
+ *
+ * Purpose: Free the space allocated to alignment, names, and optional
+ * information.
+ *
+ * Args: aseqs - sequence alignment
+ * nseq - number of sequences
+ * ainfo - optional extra data. May be NULL.
+ */
+void
+FreeAlignment(char **aseqs, int nseq, struct aliinfo_s *ainfo)
+{
+ int i;
+
+ for (i = 0; i < 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->flags & AINFO_CS) free(ainfo->cs);
+ if (ainfo->flags & AINFO_RF) free(ainfo->rf);
+ free(ainfo->sqinfo);
+ Free2DArray(aseqs, nseq);
+}
+
+/* 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;
+
+ if ((new = (char *) malloc ((alen+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ 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;
+
+ if ((new = (char *) malloc ((alen+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ 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: 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, int num, struct aliinfo_s *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 < num; idx++)
+ if (! isgap(aseqs[idx][apos]))
+ break;
+ if (idx == num) continue;
+
+ /* shift alignment and ainfo */
+ if (mpos != apos)
+ {
+ for (idx = 0; idx < num; idx++)
+ aseqs[idx][mpos] = aseqs[idx][apos];
+
+ if (ainfo->flags & AINFO_CS) ainfo->cs[mpos] = ainfo->cs[apos];
+ if (ainfo->flags & AINFO_RF) ainfo->rf[mpos] = ainfo->rf[apos];
+ }
+ mpos++;
+ }
+ /* null terminate everything */
+ for (idx = 0; idx < num; idx++)
+ aseqs[idx][mpos] = '\0';
+ ainfo->alen = mpos; /* set new length */
+ if (ainfo->flags & AINFO_CS) ainfo->cs[mpos] = '\0';
+ if (ainfo->flags & AINFO_RF) 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<pop<1)
+ * pex - probability to extend insertion (0<pex<1)
+ * ret_aseqs - RETURN: alignment (flushed)
+ * ainfo - fill in: alignment info
+ *
+ * Return: 1 on success, 0 on failure. Sets squid_errno to indicate cause
+ * of failure.
+ */
+int
+RandomAlignment(char **rseqs, SQINFO *sqinfo, int nseq, float pop, float pex,
+ char ***ret_aseqs, AINFO *ainfo)
+{
+ char **aseqs; /* RETURN: alignment */
+ int alen; /* length of alignment */
+ int *rlen; /* lengths of each raw sequence */
+ int M; /* length of "model" */
+ int **ins; /* insertion counts, 0..nseq-1 by 0..M */
+ int *master_ins; /* max insertion counts, 0..M */
+ int apos, rpos, idx;
+ int statepos;
+ int count;
+ int minlen;
+
+ /* calculate expected length of model, M
+ */
+ if ((rlen = (int *) malloc (sizeof(int) * nseq)) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ M = 0;
+ minlen = 9999999;
+ for (idx = 0; idx < nseq; idx++)
+ {
+ rlen[idx] = strlen(rseqs[idx]);
+ M += rlen[idx];
+ minlen = (rlen[idx] < minlen) ? rlen[idx] : minlen;
+ }
+ M = (int) ((float) M / (1.0 + pop * (1.0 + 1.0 / (1.0 - pex))));
+ M /= nseq;
+ if (M > minlen) M = minlen;
+
+ /* make arrays that count insertions in M+1 possible insert states
+ */
+ if ((ins = (int **) malloc (sizeof(int *) * nseq)) == NULL ||
+ (master_ins = (int *) malloc (sizeof(int) * (M+1))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ for (idx = 0; idx < nseq; idx++)
+ {
+ if ((ins[idx] = (int *) malloc (sizeof(int) * (M+1))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ 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
+ */
+ if ((aseqs = (char **) malloc (sizeof (char *) * nseq)) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ for (idx = 0; idx < nseq; idx++)
+ if ((aseqs[idx] = (char *) malloc (sizeof(char) * (alen+1))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+
+ 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->flags |= AINFO_ALEN;
+
+ if ((ainfo->sqinfo = (SQINFO *) malloc (sizeof(SQINFO) * nseq)) == NULL)
+ Die("malloc failed");
+ for (idx = 0; idx < nseq; idx++)
+ SeqinfoCopy(&(ainfo->sqinfo[idx]), &(sqinfo[idx]));
+
+ free(rlen);
+ free(master_ins);
+ Free2DArray(ins, nseq);
+ *ret_aseqs = aseqs;
+ return 1;
+}
diff --git a/build_main.c b/build_main.c
new file mode 100644
index 0000000..a3cd67d
--- /dev/null
+++ b/build_main.c
@@ -0,0 +1,374 @@
+/* build_main.c
+ * SRE, Mon Sep 6 09:18:35 1993
+ *
+ * coveb - construct a covariance model from aligned sequences
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <math.h>
+
+#ifdef NEED_GETOPTH
+#include <getopt.h>
+#endif
+
+#include "structs.h"
+#include "funcs.h"
+#include "squid.h"
+#include "version.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define OPTIONS "ap:g:ho:P:"
+static void mtr2rf(struct trace_s *mtr, int alen, char **ret_rf);
+
+static char usage[] = "\
+Usage: coveb [-options] <cmfile output> <seqfile in>\n\
+where options are:\n\
+ -a : annotate all pairs, not just canonical Watson-Crick\n\
+ -g <gapthresh> : -P1 or -P2 only - columns above this fractional gap \n\
+ occurrence are assigned to INS (default 0.7)\n\
+ -h : print out short help info\n\
+ -o <file> : save structure-annotated alignment to <file>\n\
+ -p <priorfile> : use prior probability info from <priorfile>\n\
+ Construction plans:\n\
+ (default) : Maximum likelihood (slow)\n\
+ -P1 : fast heuristic (MIXY based)\n\
+ -P2 : use specified consensus structure (CS line)\n\
+ -P3 : use both specified consensus and reference info\n";
+
+static char banner[] = "coveb: construct covariance model from aligned sequences";
+
+int
+main(int argc, char **argv)
+{
+ char **aseqs; /* training sequences */
+ AINFO ainfo; /* misc. associated alignment info */
+ int nseq; /* number of seqs */
+ char *seqfile; /* sequence file */
+ int format; /* format of sequence file */
+ char *cmfile; /* OUTPUT: saved cm */
+ FILE *cmfp; /* OUTPUT: fp to cmfile */
+ struct cm_s *cm; /* model */
+ struct prior_s *prior; /* prior prob. distributions */
+ int idx; /* index for sequences */
+ double secinfo; /* secondary structure info content */
+ struct trace_s *mtr; /* master traceback for alignment */
+ struct trace_s *tr; /* a traceback for indiv seq */
+ struct trmem_s *pool; /* memory pool for traceback */
+ char **ss; /* secondary structures */
+ double worstscore;
+ double bestscore;
+ double sqsum;
+ double tot_score;
+ double score;
+ int leftcount, rightcount;
+ int apos;
+
+ enum plan_e { PLAN_ML, PLAN_MIXY, PLAN_CS, PLAN_CSRF } plan;
+ char *prifile; /* file to get prior from */
+ FILE *prifp; /* open priorfile */
+ char *structfile; /* file to save structure-annotation to */
+ FILE *structfp; /* open structfile */
+ double gapthresh; /* heuristic INS assignment parameter */
+ int watsoncrick; /* TRUE to annotate canonical pairs only */
+
+ int optc; /* for getopt() */
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+
+#ifdef MEMDEBUG /* for Cahill's dbmalloc */
+ unsigned long histid1, histid2, orig_size, current_size;
+#endif
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ prifile = NULL; /* forces use of default prior in prior.h */
+ gapthresh = .70;
+ structfile = NULL;
+ watsoncrick = TRUE;
+ plan = PLAN_ML;
+
+ while ((optc = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optc) {
+
+ case 'a': watsoncrick = FALSE; break;
+ case 'g': gapthresh = atof(optarg); break;
+ case 'o': structfile = optarg; break;
+ case 'p': prifile = optarg; break;
+
+ case 'P':
+ switch (*optarg) {
+ case '1': plan = PLAN_MIXY; break;
+ case '2': plan = PLAN_CS; break;
+ case '3': plan = PLAN_CSRF; break;
+ default: Die("No such construction plan.\n%s", usage);
+ }
+ break;
+
+ case 'h':
+ printf("%s\n version %s (%s)\n%s", banner, RELEASE, RELEASEDATE, usage);
+ exit(0);
+
+ default:
+ Die("Error: unrecognized option %c\n", optc);
+ }
+
+ if (argc - optind != 2)
+ Die("Wrong number of command line arguments.\n%s\n", usage);
+
+ cmfile = argv[argc-2];
+ seqfile = argv[argc-1];
+
+#ifdef MEMDEBUG
+ orig_size = malloc_size(&histid1);
+#endif
+
+
+ /***********************************************
+ * Get sequence data and prior
+ ***********************************************/
+
+ if (! SeqfileFormat(seqfile, &format, NULL))
+ Die("Can't determine format of file %s", seqfile);
+
+ /* read the training seqs from file */
+ if (! ReadAlignment(seqfile, format, &aseqs, &nseq, &ainfo))
+ Die("Failed to read aligned sequence file %s", seqfile);
+
+ /* convert seq to all upper case */
+ for (idx = 0; idx < nseq; idx++)
+ s2upper(aseqs[idx]);
+
+ if (prifile == NULL)
+ {
+ if (! DefaultPrior(&prior))
+ Die("Failed to copy prior probability distribution information");
+ }
+ else
+ {
+ if ((prifp = fopen(prifile, "r")) == NULL)
+ Die("Failed to open prior probability info file %s", prifile);
+ if (! ReadPrior(prifp, &prior))
+ Die("Failed to read prior probability info file %s", prifile);
+ fclose(prifp);
+ }
+
+ /***********************************************
+ * Print banner
+ ***********************************************/
+
+ puts(banner);
+ printf(" release %s, %s\n\n", RELEASE, RELEASEDATE);
+ printf("---------------------------------------------------\n");
+ printf("Training alignment: %s (%d sequences)\n", seqfile, nseq);
+ printf("Prior distributions: ");
+ if (prifile == NULL)
+ printf("default (plus-one, Laplace)\n");
+ else
+ printf("from file %s\n", prifile);
+
+ printf("Construction plan: ");
+ switch (plan) {
+ case PLAN_ML: printf("maximum likelihood\n"); break;
+ case PLAN_MIXY: printf("fast (MIXY-based) heuristic\n"); break;
+ case PLAN_CS: printf("specified consensus structure\n"); break;
+ case PLAN_CSRF: printf("specified structure and match columns\n"); break;
+ }
+
+ if (plan == PLAN_MIXY || plan == PLAN_CS)
+ printf("INS if gap freq >: %.2f\n", gapthresh);
+
+ printf("---------------------------------------------------\n");
+
+
+ /***********************************************
+ * Create the starting model
+ ***********************************************/
+
+#ifdef MEMDEBUG
+ printf("Checking malloc chain ");
+ malloc_chain_check(0);
+ printf("... done.\n");
+#endif
+
+ switch (plan) {
+ case PLAN_ML:
+ if (! Maxmodelmaker(aseqs, &ainfo, nseq, -1, prior, &secinfo, &cm, &mtr))
+ Die("Maxmodelmaker failed to create starting model from alignment");
+ break;
+
+ case PLAN_MIXY:
+ if (! Fastmodelmaker(aseqs, &ainfo, nseq, prior, gapthresh, &secinfo, &cm, &mtr))
+ Die("Fastmodelmaker failed to create starting model from alignment");
+ break;
+
+ case PLAN_CS:
+ EasyModelmaker(aseqs, &ainfo, nseq, prior, gapthresh, FALSE, &cm, &mtr);
+ break;
+
+ case PLAN_CSRF:
+ EasyModelmaker(aseqs, &ainfo, nseq, prior, gapthresh, TRUE, &cm, &mtr);
+ break;
+
+ default: Die("That must be a secret plan, pal, because I've never heard of it.");
+ }
+
+ if (! VerifyCM(cm))
+ Die("Bad covariance model. Bad, bad covariance model...\n");
+
+
+ /* Use master traceback to reconstruct individual traces.
+ * Use individual traces to a) find individual secondary structures
+ * b) calculate avg, high, low scores
+ * Some duplication of effort here, because the modelmakers
+ * already had to construct tracebacks and threw them away.
+ */
+ if ((ss = (char **) malloc (sizeof(char *) * nseq)) == NULL)
+ Die("malloc failed");
+ worstscore = HUGE_VAL;
+ bestscore = -HUGE_VAL;
+ tot_score = sqsum = 0.0;
+ for (idx = 0; idx < nseq; idx++)
+ {
+ Transmogrify(mtr, aseqs[idx], &tr, &pool);
+
+ score = TraceScore(cm, aseqs[idx], tr);
+ tot_score += score;
+ sqsum += score * score;
+ if (score > bestscore) bestscore = score;
+ if (score < worstscore) worstscore = score;
+
+ if (ainfo.sqinfo[idx].flags & SQINFO_SS) free(ainfo.sqinfo[idx].ss);
+ Trace2KHS(tr, aseqs[idx], ainfo.alen, watsoncrick, &(ss[idx]));
+ MakeDealignedString(aseqs[idx], ainfo.alen, ss[idx], &(ainfo.sqinfo[idx].ss));
+ ainfo.sqinfo[idx].flags |= SQINFO_SS;
+
+ FreeTrace(tr, pool);
+ }
+
+ /* Construct a consensus structure string and reference
+ * line as annotation.
+ * Secondary structure strings, ss, are currently aligned to
+ * the aseqs. Calculate an aligned consensus structure from
+ * them.
+ */
+ if (plan == PLAN_MIXY || plan == PLAN_ML)
+ {
+ if (ainfo.flags & AINFO_CS) free(ainfo.cs);
+ if ((ainfo.cs = (char *) malloc (sizeof(char) * (ainfo.alen+1))) == NULL)
+ Die("malloc failed");
+ for (apos = 0; apos < ainfo.alen; apos++)
+ {
+ leftcount = rightcount = 0;
+ for (idx = 0; idx < nseq; idx++)
+ if (ss[idx][apos] == '<') rightcount++;
+ else if (ss[idx][apos] == '>') leftcount++;
+
+ if (rightcount >= nseq / 2) ainfo.cs[apos] = '<';
+ else if (leftcount >= nseq / 2) ainfo.cs[apos] = '>';
+ else ainfo.cs[apos] = '.';
+ }
+ ainfo.cs[ainfo.alen] = '\0';
+ ainfo.flags |= AINFO_CS;
+ }
+
+ /* Construct a reference line to indicate which columns were assigned
+ * as match states.
+ */
+ if (plan != PLAN_CSRF)
+ {
+ if (ainfo.flags & AINFO_RF) free(ainfo.rf);
+ mtr2rf(mtr, ainfo.alen, &(ainfo.rf));
+ ainfo.flags |= AINFO_RF;
+ }
+
+ if ((cmfp = fopen(cmfile, "w")) == NULL)
+ Die("Failed to open %s for writing", cmfile);
+ if (! WriteCM(cmfp, cm))
+ Die("Failed to save the model to %s", cmfile);
+ fclose(cmfp);
+
+ if (structfile != NULL)
+ {
+ if ((structfp = fopen(structfile, "w")) == NULL)
+ Die("Failed to open structure annotation alignment file %s", structfile);
+ if (! WriteSELEX(structfp, aseqs, nseq, &ainfo, 60))
+ Die("Failed to write annotated alignment to %s", structfile);
+ fclose(structfp);
+ printf("Structure annotated alignment file written to %s\n", structfile);
+ }
+
+ printf("Constructed a covariance model (%d nodes)\n", cm->nodes);
+ printf("Average score: %10.2f bits\n",
+ tot_score / (double) nseq);
+ printf("Minimum score: %10.2f bits\n", worstscore);
+ printf("Maximum score: %10.2f bits\n", bestscore);
+ printf("Std. deviation: %10.2f bits\n",
+ sqrt((sqsum - (tot_score * tot_score / (double) nseq))
+ / ((double) nseq - 1.0)));
+
+ printf("\nCM written to file %s\n", cmfile);
+
+ FreeCM(cm);
+ FreeTrace(mtr, NULL);
+ free(prior);
+ FreeAlignment(aseqs, nseq, &ainfo);
+ Free2DArray(ss, nseq);
+
+#ifdef MEMDEBUG
+ current_size = malloc_size(&histid2);
+
+ if (current_size != orig_size)
+ malloc_list(2, histid1, histid2);
+ else
+ fprintf(stderr, "No memory leaks, sir.\n");
+#endif
+
+ return 0;
+}
+
+
+/* Function: mtr2rf()
+ *
+ * Purpose: Make an #=RF line from a master traceback, to indicate
+ * which columns were used as match columns in building
+ * a model. Keep in mind that master traces use node type
+ * indices, rather than state type indices like traces
+ * are supposed to.
+ */
+static void
+mtr2rf(struct trace_s *mtr, int alen, char **ret_rf)
+{
+ struct tracestack_s *dolist;
+ struct trace_s *curr;
+ char *rf;
+
+ rf = (char *) MallocOrDie(sizeof(char) * (alen+1));
+ memset(rf, ' ', alen);
+ rf[alen] = '\0';
+
+ dolist = InitTracestack();
+ PushTracestack(dolist, mtr->nxtl);
+ while ((curr = PopTracestack(dolist)) != NULL)
+ {
+ if ( curr->type == MATP_NODE )
+ rf[curr->emitl] = rf[curr->emitr] = '.';
+ else if ( curr->type == MATL_NODE )
+ rf[curr->emitl] = '.';
+ else if ( curr->type == MATR_NODE )
+ rf[curr->emitr] = '.';
+
+ if (curr->nxtr) PushTracestack(dolist, curr->nxtr);
+ if (curr->nxtl) PushTracestack(dolist, curr->nxtl);
+ }
+ FreeTracestack(dolist);
+ *ret_rf = rf;
+}
diff --git a/checkversion.pl b/checkversion.pl
new file mode 100644
index 0000000..e533f19
--- /dev/null
+++ b/checkversion.pl
@@ -0,0 +1,13 @@
+
+# Check for correct PERL version (>5.0)
+
+if ($] < 5.0) {
+ print STDERR "\nFATAL: You have specified Perl version ",
+ $]+0.00," in the Makefile,\n you must use version 5.0 or greater.\n\n",
+ "Install Perl 5.0 or greater and/or reset the \$PERLDIR variable in\n",
+ "'Makefile' to the directory in which Perl 5.0 or greater is installed.\n\n";
+ exit (1);
+}
+
+exit (0);
+
diff --git a/dbmalloc.h b/dbmalloc.h
new file mode 100644
index 0000000..e9525cd
--- /dev/null
+++ b/dbmalloc.h
@@ -0,0 +1,543 @@
+/*
+ * (c) Copyright 1990, 1991, 1992 Conor P. Cahill (uunet!virtech!cpcahil).
+ * You may copy, distribute, and use this software as long as this
+ * copyright statement is not removed.
+ */
+/*
+ * $Id: malloc.h.org,v 1.31 1992/06/22 23:40:10 cpcahil Exp $
+ */
+
+#ifndef _DEBUG_MALLOC_INC
+#define _DEBUG_MALLOC_INC 1
+
+#ifdef force_cproto_to_use_defines
+
+/*
+ * these are just here because cproto used the c-preprocessor to generate
+ * the prototypes and if they were left as #defines the prototypes.h file
+ * would have the contents of the define, not the define itself
+ */
+
+typedef char DATATYPE;
+typedef int SIZETYPE;
+typedef void VOIDTYPE;
+typedef char MEMDATA;
+typedef int MEMSIZE;
+typedef int STRSIZE;
+
+#ifdef WRTSIZE
+#undef WRTSIZE
+#endif
+typedef unsigned int WRTSIZE;
+
+/*
+ * for now, define CONST as const. A sed script in the makefile will change
+ * this back to CONST in the prototypes.h file.
+ */
+#define CONST const
+
+#else /* force_cproto_to_use_defines */
+
+/*
+ * The following entries are automatically added by the Configure script.
+ * If they are not correct for your system, then Configure is not handling
+ * your system correctly. Please report this to the author along with
+ * a description of your system and the correct values
+ */
+
+
+
+#if __GNUC__ && __STDC__ && __cplusplus
+
+#define VOIDTYPE void
+#define CONST const
+#define DATATYPE void
+#define SIZETYPE size_t
+#define MEMDATA void
+#define MEMSIZE size_t
+#define MEMCMPTYPE unsigned char
+#define STRSIZE size_t
+#define STRCMPTYPE unsigned char
+
+#else /* __GNUC__ && __STDC__ && __cplusplus */
+
+#define VOIDTYPE void
+#define CONST const
+#define DATATYPE void
+#define SIZETYPE size_t
+#define MEMDATA void
+#define MEMSIZE int
+#define MEMCMPTYPE unsigned char
+#define STRSIZE size_t
+#define STRCMPTYPE unsigned char
+
+#endif /* __GNUC__ && __STDC__ && __cplusplus */
+
+/*
+ * END of automatic configuration stuff.
+ */
+
+/*
+ * if DATATYPE is not defined, then the configure script must have had a
+ * problem, or was used with a different compiler. So we have to stop
+ * here and get the user to fix the problem.
+ */
+#ifndef DATATYPE
+ /*
+ * the following string should cause a comilation error and get the
+ * user to look at this stuff to find out what is wrong.
+ */
+ "This file is not configured correctly for this system. Run configure
+ and check its results"
+ char * malloc(); /* DON'T REMOVE THIS LINE if you get a compiler error
+ here it is because the malloc.h file is not
+ configured correctly See the readme/problems
+ files for more info */
+
+#endif /* DATATYPE */
+
+#endif /* force_cproto_to_use_defines */
+
+#define VOIDCAST (VOIDTYPE)
+
+/*
+ * since we redefine much of the stuff that is #defined in string.h and
+ * memory.h, we should do what we can to make sure that they don't get
+ * included after us. This is typically accomplished by a special symbol
+ * (similar to _DEBUG_MALLOC_INC defined above) that is #defined when the
+ * file is included. Since we don't want the file to be included we will
+ * #define the symbol ourselves. These will typically have to change from
+ * one system to another. I have put in several standard mechanisms used to
+ * support this mechanism, so hopefully you won't have to modify this file.
+ */
+#ifndef _H_STRING
+#define _H_STRING 1
+#endif
+#ifndef __STRING_H
+#define __STRING_H 1
+#endif
+#ifndef _STRING_H_
+#define _STRING_H_ 1
+#endif
+#ifndef _STRING_H
+#define _STRING_H 1
+#endif
+#ifndef _STRING_INCLUDED
+#define _STRING_INCLUDED 1
+#endif
+#ifndef __string_h
+#define __string_h 1
+#endif
+#ifndef _string_h
+#define _string_h 1
+#endif
+#ifndef _strings_h
+#define _strings_h 1
+#endif
+#ifndef __strings_h
+#define __strings_h 1
+#endif
+#ifndef _H_MEMORY
+#define _H_MEMORY 1
+#endif
+#ifndef __MEMORY_H
+#define __MEMORY_H 1
+#endif
+#ifndef _MEMORY_H_
+#define _MEMORY_H_ 1
+#endif
+#ifndef _MEMORY_H
+#define _MEMORY_H 1
+#endif
+#ifndef _MEMORY_INCLUDED
+#define _MEMORY_INCLUDED 1
+#endif
+#ifndef __memory_h
+#define __memory_h 1
+#endif
+#ifndef _memory_h
+#define _memory_h 1
+#endif
+
+/*
+ * Malloc warning/fatal error handler defines...
+ */
+#define M_HANDLE_DUMP 0x80 /* 128 */
+#define M_HANDLE_IGNORE 0
+#define M_HANDLE_ABORT 1
+#define M_HANDLE_EXIT 2
+#define M_HANDLE_CORE 3
+
+/*
+ * Mallopt commands and defaults
+ *
+ * the first four settings are ignored by the debugging mallopt, but are
+ * here to maintain compatibility with the system malloc.h.
+ */
+#define M_MXFAST 1 /* ignored by mallopt */
+#define M_NLBLKS 2 /* ignored by mallopt */
+#define M_GRAIN 3 /* ignored by mallopt */
+#define M_KEEP 4 /* ignored by mallopt */
+#define MALLOC_WARN 100 /* set malloc warning handling */
+#define MALLOC_FATAL 101 /* set malloc fatal handling */
+#define MALLOC_ERRFILE 102 /* specify malloc error file */
+#define MALLOC_CKCHAIN 103 /* turn on chain checking */
+#define MALLOC_FILLAREA 104 /* turn off area filling */
+#define MALLOC_LOWFRAG 105 /* use best fit allocation mech */
+#define MALLOC_CKDATA 106 /* turn off/on data checking */
+#define MALLOC_REUSE 107 /* turn off/on freed seg reuse */
+#define MALLOC_SHOWLINKS 108 /* turn off/on adjacent link disp */
+
+union malloptarg
+{
+ int i;
+ char * str;
+};
+
+/*
+ * Malloc warning/fatal error codes
+ */
+
+#define M_CODE_CHAIN_BROKE 1 /* malloc chain is broken */
+#define M_CODE_NO_END 2 /* chain end != endptr */
+#define M_CODE_BAD_PTR 3 /* pointer not in malloc area */
+#define M_CODE_BAD_MAGIC 4 /* bad magic number in header */
+#define M_CODE_BAD_CONNECT 5 /* chain poingers corrupt */
+#define M_CODE_OVERRUN 6 /* data overrun in malloc seg */
+#define M_CODE_REUSE 7 /* reuse of freed area */
+#define M_CODE_NOT_INUSE 8 /* pointer is not in use */
+#define M_CODE_NOMORE_MEM 9 /* no more memory available */
+#define M_CODE_OUTOF_BOUNDS 10 /* gone beyound bounds */
+#define M_CODE_FREELIST_BAD 11 /* inuse segment on freelist */
+#define M_CODE_NOBOUND 12 /* can't calculate boundry */
+#define M_CODE_STK_NOCUR 13 /* no current element on stack */
+#define M_CODE_STK_BADFUNC 14 /* current func doesn't match */
+#define M_CODE_UNDERRUN 15 /* data underrun in malloc seg */
+
+#ifndef __STDCARGS
+#if __STDC__ || __cplusplus
+#define __STDCARGS(a) a
+#else
+#define __STDCARGS(a) ()
+#endif
+#endif
+
+#if __cplusplus
+extern "C" {
+#endif
+
+VOIDTYPE malloc_dump __STDCARGS((int));
+VOIDTYPE malloc_list __STDCARGS((int,unsigned long, unsigned long));
+int mallopt __STDCARGS((int, union malloptarg));
+DATATYPE * debug_calloc __STDCARGS((CONST char *,int,SIZETYPE,SIZETYPE));
+VOIDTYPE debug_cfree __STDCARGS((CONST char *, int, DATATYPE *));
+VOIDTYPE debug_free __STDCARGS((CONST char *, int, DATATYPE *));
+DATATYPE * debug_malloc __STDCARGS((CONST char *,int, SIZETYPE));
+DATATYPE * debug_realloc __STDCARGS((CONST char *,int,
+ DATATYPE *,SIZETYPE));
+unsigned long DBmalloc_size __STDCARGS((CONST char *,int,unsigned long *));
+int DBmalloc_chain_check __STDCARGS((CONST char *,int,int));
+
+void StackEnter __STDCARGS((CONST char *, CONST char *, int));
+void StackLeave __STDCARGS((CONST char *, CONST char *, int));
+
+/*
+ * X allocation related prototypes
+ */
+char * debug_XtMalloc __STDCARGS((CONST char *, int, unsigned int));
+char * debug_XtRealloc __STDCARGS((CONST char *, int,
+ char *, unsigned int));
+char * debug_XtCalloc __STDCARGS((CONST char *, int,
+ unsigned int, unsigned int));
+void debug_XtFree __STDCARGS((CONST char *, int, char *));
+void * debug_XtBCopy __STDCARGS((CONST char *, int, char *,
+ char *, int));
+extern void (*XtAllocErrorHandler) __STDCARGS((CONST char *));
+
+/*
+ * memory(3) related prototypes
+ */
+MEMDATA * DBmemccpy __STDCARGS((CONST char *file, int line,
+ MEMDATA *ptr1, CONST MEMDATA *ptr2,
+ int ch, MEMSIZE len));
+MEMDATA * DBmemchr __STDCARGS((CONST char *file, int line,
+ CONST MEMDATA *ptr1, int ch,
+ MEMSIZE len));
+MEMDATA * DBmemmove __STDCARGS((CONST char *file, int line,
+ MEMDATA *ptr1, CONST MEMDATA *ptr2,
+ MEMSIZE len));
+MEMDATA * DBmemcpy __STDCARGS((CONST char *file, int line,
+ MEMDATA *ptr1, CONST MEMDATA *ptr2,
+ MEMSIZE len));
+int DBmemcmp __STDCARGS((CONST char *file, int line,
+ CONST MEMDATA *ptr1,
+ CONST MEMDATA *ptr2, MEMSIZE len));
+MEMDATA * DBmemset __STDCARGS((CONST char *file, int line,
+ MEMDATA *ptr1, int ch, MEMSIZE len));
+MEMDATA * DBbcopy __STDCARGS((CONST char *file, int line,
+ CONST MEMDATA *ptr2, MEMDATA *ptr1,
+ MEMSIZE len));
+MEMDATA * DBbzero __STDCARGS((CONST char *file, int line,
+ MEMDATA *ptr1, MEMSIZE len));
+int DBbcmp __STDCARGS((CONST char *file, int line,
+ CONST MEMDATA *ptr2,
+ CONST MEMDATA *ptr1, MEMSIZE len));
+
+/*
+ * string(3) related prototypes
+ */
+char * DBstrcat __STDCARGS((CONST char *file,int line, char *str1,
+ CONST char *str2));
+char * DBstrdup __STDCARGS((CONST char *file, int line,
+ CONST char *str1));
+char * DBstrncat __STDCARGS((CONST char *file, int line, char *str1,
+ CONST char *str2, STRSIZE len));
+int DBstrcmp __STDCARGS((CONST char *file, int line,
+ CONST char *str1, CONST char *str2));
+int DBstrncmp __STDCARGS((CONST char *file, int line,
+ CONST char *str1, CONST char *str2,
+ STRSIZE len));
+int DBstricmp __STDCARGS((CONST char *file, int line,
+ CONST char *str1, CONST char *str2));
+int DBstrincmp __STDCARGS((CONST char *file, int line,
+ CONST char *str1, CONST char *str2,
+ STRSIZE len));
+char * DBstrcpy __STDCARGS((CONST char *file, int line, char *str1,
+ CONST char *str2));
+char * DBstrncpy __STDCARGS((CONST char *file, int line, char *str1,
+ CONST char *str2, STRSIZE len));
+STRSIZE DBstrlen __STDCARGS((CONST char *file, int line,
+ CONST char *str1));
+char * DBstrchr __STDCARGS((CONST char *file, int line,
+ CONST char *str1, int c));
+char * DBstrrchr __STDCARGS((CONST char *file, int line,
+ CONST char *str1, int c));
+char * DBindex __STDCARGS((CONST char *file, int line,
+ CONST char *str1, int c));
+char * DBrindex __STDCARGS((CONST char *file, int line,
+ CONST char *str1, int c));
+char * DBstrpbrk __STDCARGS((CONST char *file, int line,
+ CONST char *str1, CONST char *str2));
+STRSIZE DBstrspn __STDCARGS((CONST char *file, int line,
+ CONST char *str1, CONST char *str2));
+STRSIZE DBstrcspn __STDCARGS((CONST char *file, int line,
+ CONST char *str1, CONST char *str2));
+char * DBstrstr __STDCARGS((CONST char *file, int line,
+ CONST char *str1, CONST char *str2));
+char * DBstrtok __STDCARGS((CONST char *file, int line, char *str1,
+ CONST char *str2));
+
+#if __cplusplus
+};
+#endif
+
+/*
+ * Macro which enables logging of the file and line number for each allocation
+ * so that it is easier to determine where the offending malloc comes from.
+ *
+ * NOTE that only code re-compiled with this include file will have this
+ * additional info. Calls from libraries that have not been recompiled will
+ * just have a null string for this info.
+ */
+#ifndef IN_MALLOC_CODE
+
+/*
+ * allocation functions
+ */
+#define malloc(len) debug_malloc( __FILE__,__LINE__, (len))
+#define realloc(ptr,len) debug_realloc(__FILE__,__LINE__, (ptr), (len))
+#define calloc(numelem,size) debug_calloc(__FILE__,__LINE__,(numelem),(size))
+#define cfree(ptr) debug_cfree(__FILE__,__LINE__,(ptr))
+#define free(ptr) debug_free(__FILE__,__LINE__,(ptr))
+#define malloc_size(histptr) DBmalloc_size(__FILE__,__LINE__,(histptr))
+#define malloc_chain_check(todo) DBmalloc_chain_check(__FILE__,__LINE__,(todo))
+
+/*
+ * X allocation routines
+ */
+#define XtCalloc(_num,_size) debug_XtCalloc(__FILE__,__LINE__,_num,_size)
+#define XtMalloc(_size) debug_XtMalloc(__FILE__,__LINE__,_size)
+#define XtRealloc(_ptr,_size) debug_XtRealloc(__FILE__,__LINE__,_ptr,_size)
+#define XtFree(_ptr) debug_XtFree(__FILE__,__LINE__,_ptr)
+#define _XtBCopy(ptr1,ptr2,len) debug_XtBcopy(__FILE__,__LINE__,ptr1,ptr2,len)
+
+/*
+ * Other allocation functions
+ */
+#define _malloc(_size) debug_malloc(__FILE__,__LINE__,_size)
+#define _realloc(_ptr,_size) debug_realloc(__FILE__,__LINE__,_ptr,_size)
+#define _calloc(_num,_size) debug_calloc(__FILE__,__LINE__,_num,_size)
+#define _free(_ptr) debug_free(__FILE__,__LINE__,_ptr)
+
+/*
+ * memory(3) related functions
+ */
+#ifdef bcopy
+#undef bcopy
+#endif
+#ifdef bzero
+#undef bzero
+#endif
+#ifdef bcmp
+#undef bcmp
+#endif
+#define memccpy(ptr1,ptr2,ch,len) DBmemccpy(__FILE__,__LINE__,ptr1,ptr2,ch,len)
+#define memchr(ptr1,ch,len) DBmemchr(__FILE__,__LINE__,ptr1,ch,len)
+#define memmove(ptr1,ptr2,len) DBmemmove(__FILE__,__LINE__,ptr1, ptr2, len)
+#define memcpy(ptr1,ptr2,len) DBmemcpy(__FILE__, __LINE__, ptr1, ptr2, len)
+#define memcmp(ptr1,ptr2,len) DBmemcmp(__FILE__,__LINE__,ptr1, ptr2, len)
+#define memset(ptr1,ch,len) DBmemset(__FILE__,__LINE__,ptr1, ch, len)
+#define bcopy(ptr2,ptr1,len) DBbcopy(__FILE__,__LINE__,ptr2,ptr1,len)
+#define bzero(ptr1,len) DBbzero(__FILE__,__LINE__,ptr1,len)
+#define bcmp(ptr2,ptr1,len) DBbcmp(__FILE__, __LINE__, ptr2, ptr1, len)
+
+#define _bcopy(ptr2,ptr1,len) DBbcopy(__FILE__,__LINE__,ptr2,ptr1,len)
+#define _bzero(ptr1,len) DBbzero(__FILE__,__LINE__,ptr1,len)
+#define _bcmp(ptr2,ptr1,len) DBbcmp(__FILE__,__LINE__,ptr2,ptr1,len)
+#define __dg_bcopy(ptr2,ptr1,len) DBbcopy(__FILE__,__LINE__,ptr2,ptr1,len)
+#define __dg_bzero(ptr1,len) DBbzero(__FILE__,__LINE__,ptr1,len)
+#define __dg_bcmp(ptr2,ptr1,len) DBbcmp(__FILE__,__LINE__,ptr2,ptr1,len)
+
+/*
+ * string(3) related functions
+ */
+#ifdef index
+#undef index
+#endif
+#ifdef rindex
+#undef rindex
+#endif
+#ifdef strcpy
+#undef strcpy
+#endif
+#ifdef strcpy
+#undef strcmp
+#endif
+#define index(str1,c) DBindex(__FILE__, __LINE__, str1, c)
+#define rindex(str1,c) DBrindex(__FILE__, __LINE__, str1, c)
+#define strcat(str1,str2) DBstrcat(__FILE__,__LINE__,str1,str2)
+#define strchr(str1,c) DBstrchr(__FILE__, __LINE__, str1,c)
+#define strcmp(str1,str2) DBstrcmp(__FILE__, __LINE__, str1, str2)
+#define strcpy(str1,str2) DBstrcpy(__FILE__, __LINE__, str1, str2)
+#define strcspn(str1,str2) DBstrcspn(__FILE__, __LINE__, str1,str2)
+#define strdup(str1) DBstrdup(__FILE__, __LINE__, str1)
+#define stricmp(str1,str2) DBstricmp(__FILE__, __LINE__, str1, str2)
+#define strincmp(str1,str2,len) DBstrincmp(__FILE__, __LINE__, str1,str2,len)
+#define strlen(str1) DBstrlen(__FILE__, __LINE__, str1)
+#define strncat(str1,str2,len) DBstrncat(__FILE__, __LINE__, str1,str2,len)
+#define strncpy(str1,str2,len) DBstrncpy(__FILE__,__LINE__,str1,str2,len)
+#define strncmp(str1,str2,len) DBstrncmp(__FILE__, __LINE__, str1,str2,len)
+#define strpbrk(str1,str2) DBstrpbrk(__FILE__, __LINE__, str1,str2)
+#define strrchr(str1,c) DBstrrchr(__FILE__,__LINE__,str1,c)
+#define strspn(str1,str2) DBstrspn(__FILE__, __LINE__, str1,str2)
+#define strstr(str1,str2) DBstrstr(__FILE__, __LINE__, str1, str2)
+#define strtok(str1,str2) DBstrtok(__FILE__, __LINE__, str1, str2)
+
+/*
+ * malloc stack related functions
+ */
+#define malloc_enter(func) StackEnter(func,__FILE__,__LINE__)
+#define malloc_leave(func) StackLeave(func,__FILE__,__LINE__)
+
+#endif /* IN_MALLOC_CODE */
+
+#endif /* _DEBUG_MALLOC_INC */
+
+/*
+ * $Log: malloc.h.org,v $
+ * Revision 1.31 1992/06/22 23:40:10 cpcahil
+ * many fixes for working on small int systems
+ *
+ * Revision 1.30 1992/05/06 04:53:29 cpcahil
+ * performance enhancments
+ *
+ * Revision 1.29 1992/04/22 18:17:32 cpcahil
+ * added support for Xt Alloc functions, linted code
+ *
+ * Revision 1.28 1992/04/13 19:08:18 cpcahil
+ * fixed case insensitive stuff
+ *
+ * Revision 1.27 1992/04/13 18:41:18 cpcahil
+ * added case insensitive string comparison routines
+ *
+ * Revision 1.26 1992/04/13 17:26:25 cpcahil
+ * minor portability changes
+ *
+ * Revision 1.25 1992/04/13 14:13:18 cpcahil
+ * cleanup of log message.
+ *
+ * Revision 1.24 1992/04/13 03:09:14 cpcahil
+ * lots of changes.
+ *
+ * Revision 1.23 1992/03/01 12:42:38 cpcahil
+ * added support for managing freed areas and fixed doublword bndr problems
+ *
+ * Revision 1.22 1992/02/07 15:51:07 cpcahil
+ * mods for sun4
+ *
+ * Revision 1.21 1992/01/29 01:35:32 cpcahil
+ * added sgi definition.
+ *
+ * Revision 1.20 1992/01/28 21:42:25 cpcahil
+ * changes for the ibmRS6000
+ *
+ * Revision 1.19 1992/01/28 18:05:37 cpcahil
+ * misc fixes for patch 7
+ *
+ * Revision 1.18 1992/01/22 16:21:35 cpcahil
+ * added code to prevent inclusions of string.h and memory.h after malloc.h
+ * was included.
+ *
+ * Revision 1.17 1992/01/10 17:26:46 cpcahil
+ * fixed prototypes use of void.
+ *
+ * Revision 1.16 1992/01/10 16:53:39 cpcahil
+ * added more info on sizetype and datatype. added support for overriding
+ * use of void type.
+ *
+ * Revision 1.15 1992/01/09 17:19:11 cpcahil
+ * put the close brace in the correct position.
+ *
+ * Revision 1.14 1992/01/09 17:12:36 cpcahil
+ * added code to support inclusion in C++ modules
+ *
+ * Revision 1.13 1991/12/31 21:31:26 cpcahil
+ * changes for patch 6. See CHANGES file for more info
+ *
+ * Revision 1.12 1991/12/26 22:31:29 cpcahil
+ * added check to make sure file is not included twice.
+ *
+ * Revision 1.11 1991/12/06 17:58:46 cpcahil
+ * added cfree() for compatibility with some wierd systems
+ *
+ * Revision 1.10 91/12/06 08:54:18 cpcahil
+ * cleanup of __STDC__ usage and addition of CHANGES file
+ *
+ * Revision 1.9 91/12/04 09:23:40 cpcahil
+ * several performance enhancements including addition of free list
+ *
+ * Revision 1.8 91/12/02 19:10:11 cpcahil
+ * changes for patch release 5
+ *
+ * Revision 1.7 91/11/25 14:42:00 cpcahil
+ * Final changes in preparation for patch 4 release
+ *
+ * Revision 1.6 91/11/24 00:49:28 cpcahil
+ * first cut at patch 4
+ *
+ * Revision 1.5 91/11/20 11:54:10 cpcahil
+ * interim checkin
+ *
+ * Revision 1.4 90/08/29 22:23:38 cpcahil
+ * fixed mallopt to use a union as an argument.
+ *
+ * Revision 1.3 90/05/11 11:04:10 cpcahil
+ * took out some extraneous lines
+ *
+ * Revision 1.2 90/05/11 00:13:09 cpcahil
+ * added copyright statment
+ *
+ * Revision 1.1 90/02/23 07:09:03 cpcahil
+ * Initial revision
+ *
+ */
diff --git a/dbviterbi.c b/dbviterbi.c
new file mode 100644
index 0000000..3d07872
--- /dev/null
+++ b/dbviterbi.c
@@ -0,0 +1,473 @@
+/* dbviterbi.c
+ * Mon Jan 31 10:06:14 1994
+ *
+ * Search variant of the alignment algorithm. Derived from viterbi.c
+ *
+ * To optimize memory access patterns, the score storage is implemented
+ * as a two-matrix version. amx is the
+ * main storage. bmx is a smaller auxiliary matrix with a different
+ * access pattern, holding scores of BEGIN state alignments; it
+ * is used when calculating BIFURC scores.
+ *
+ * amx is [j = 0..1] [diff = 0..j] [y = 0..statenum]
+ * diff == 0 is for off-diagonal boundary conditions (this is why diff is shifted +1)
+ * diff == 1 is for the diagonal, i==j
+ * We only need to keep two j rows in memory (current and previous).
+ *
+ * bmx is [y = 0..statenum] [j = 0..N] [ diff = 0..j]
+ * a j,diff matrix exists only where y is a BEGIN state
+ *
+ * The 2.0 implementation allows variable storage per node rather
+ * than storing and calculating a fixed max number of states per node,
+ * which should save up to 2x in both time and space.
+ *
+ * An optimization is made which requires END states to be explicitly
+ * added, so statenum (the number of states in the integer model)
+ * is *inclusive* of ENDs.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+static int allocate_mx(struct istate_s *icm, int statenum, int window,
+ int ****ret_amx, int ****ret_bmx);
+static int init_mx (struct istate_s *icm, int statenum, int N,
+ int ***amx, int ***bmx);
+static int recurse_mx (struct istate_s *icm, int statenum, char *seq, int seqlen,
+ int window, int ***amx, int ***bmx, int ithresh,
+ int (*gotone_f)(int, int, double));
+static void free_mx (int ***amx, int ***bmx, int statenum, int window);
+
+
+/* Function: ViterbiScan()
+ *
+ * Purpose: Scanning version of the Viterbi alignment algorithm,
+ * for finding matches in a long sequence.
+ *
+ * Args: cm - the model to align sequence to
+ * seq - sequence to align model to
+ * window - scanning window size (nucleotides)
+ * thresh - scores above this are reported through gotone_f()
+ * gotone_f - function which gets told about a match
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+ViterbiScan(struct istate_s *icm, int statenum, char *seq, int window,
+ double thresh, int (*gotone_f)(int, int, double))
+{
+ int ***amx; /* the main score matrix */
+ int ***bmx; /* the BEGIN score matrix */
+ int N; /* length of sequence */
+ int ithresh; /* thresh, converted and scaled to int */
+
+ N = strlen(seq);
+ seq--; /* convert to 1..N. Ugh! */
+ ithresh = (int) (thresh * INTPRECISION);
+
+ if (! allocate_mx(icm, statenum, window, &amx, &bmx)) return 0;
+#ifdef DEBUG
+ printf("allocated matrices\n");
+#endif
+
+ if (! init_mx(icm, statenum, window, amx, bmx)) return 0;
+#ifdef DEBUG
+ printf("matrices initialized\n");
+#endif
+
+ if (! recurse_mx(icm, statenum, seq, N, window, amx, bmx, ithresh, gotone_f)) return 0;
+#ifdef DEBUG
+ printf("recursion finished\n");
+#endif
+ /* terminate scanning hit reporting */
+ ReportScanHit(-1,-1, 0.0, gotone_f);
+ free_mx(amx, bmx, statenum, window);
+ return 1;
+}
+
+
+
+/* Function: allocate_mx()
+ *
+ * Purpose: Malloc space for the score matrices.
+ * amx and atr are indexed as j, i, y.
+ * bmx and btr are indexed as k, j, i.
+ * In the two sequence dimensions j, i they are
+ * diagonal (+1 off diagonal) matrices with
+ * rows j = 0..N, i = 1..j+1.
+ * In the node dimension k bmx and btr are k = 0..M.
+ * In the state dimension y amx and atr are y = 0..numstates.
+ *
+ * Args: icm - the int, log-odds, state-based model
+ * statenum - number of states in model
+ * window - length of scanning window
+ * ret_amx - RETURN: main score matrix
+ * ret_bmx - RETURN: BEGIN score matrix
+ *
+ * Return: Ptr to allocated scoring matrix, or
+ * dies and exits.
+ */
+static int
+allocate_mx(struct istate_s *icm,
+ int statenum,
+ int window,
+ int ****ret_amx,
+ int ****ret_bmx)
+
+{
+ int ***amx;
+ int ***bmx;
+ int diag, j, y;
+
+ /* Main matrix, amx: fastest varying index is y (j,i,y)
+ * we only keep two rows for j, 0 and 1.
+ */
+ /* malloc for j = 0..1 rows */
+ if ((amx = (int ***) malloc (2 * sizeof(int **))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ for (j = 0; j <= 1; j++) /* loop over rows j = 0..1 */
+ {
+ /* malloc for diag = 0..window cols */
+ if ((amx[j] = (int **) malloc ((window + 1) * sizeof(int *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ /* loop over cols diag = 0..window */
+ for (diag = 0; diag <= window; diag++)
+ /* malloc for y = 0..statenum-1 decks */
+ if ((amx[j][diag] = (int *) malloc ((statenum) * sizeof (int ))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+
+
+ /* B auxiliary matrix: fastest varying index is diag (y,j,diag)
+ * bmx keeps score decks for BEGIN states
+ */
+ /* 0..statenum-1 decks */
+ if ((bmx = (int ***) malloc (statenum * sizeof(int **))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ for (y = 0; y < statenum; y++)
+ {
+ bmx[y] = NULL;
+ /* we keep score info for BEGIN states */
+ if (icm[y].statetype == uBEGIN_ST)
+ {
+ /* j= 0..window-1 rows */
+ if ((bmx[y] = (int **) malloc ((window) * sizeof(int *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ /* diff = 0..window columns */
+ for (j = 0; j < window; j++)
+ if ((bmx[y][j] = (int *) malloc ((window+1) * sizeof(int ))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+ }
+ *ret_amx = amx;
+ *ret_bmx = bmx;
+ return 1;
+}
+
+
+
+/* Function: free_mx()
+ *
+ * Purpose: Free the space allocated to the scoring and traceback matrices.
+ * Precisely mirrors the allocations above in allocate_cvmx().
+ *
+ * Return: (void)
+ */
+static void
+free_mx(int ***amx,
+ int ***bmx,
+ int statenum,
+ int window)
+{
+ int diag, j, y;
+
+ /* Free the main matrix, amx:
+ * amx[j][i][y] = [0..1] [0..window] [0..statenum-1]
+ */
+ for (j = 0; j <= 1; j++)
+ {
+ for (diag = 0; diag <= window; diag++)
+ free(amx[j][diag]);
+ free(amx[j]);
+ }
+ free(amx);
+
+ /* Free the auxiliary matrix, bmx
+ * bmx[y][j][i] = [0..statenum-1] [0..window] [0..window]
+ */
+ for (y = 0; y < statenum; y++)
+ {
+ if (bmx[y] != NULL)
+ {
+ for (j = 0; j < window; j++)
+ free(bmx[y][j]);
+ free(bmx[y]);
+ }
+ }
+ free(bmx);
+}
+
+
+
+/* Function: init_mx()
+ *
+ * Purpose: Initialization of the scoring matrices. We initialize the off-diagonal,
+ * the diagonal, and the "floor" (end states) of the cube.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+static int
+init_mx(struct istate_s *icm, /* integer model */
+ int statenum, /* number of states in icm */
+ int window, /* size of scanning window on sequence */
+ int ***amx,
+ int ***bmx)
+{
+ int diag, j, y; /* counters for indices over the cvmx */
+ int ynext; /* index of next state k+1 */
+ int *beam; /* z-axis vector of numbers in amx */
+
+ /* Init the whole amx to -Infinity. We do this with memcpy, trying
+ * to be fast. We fill in j=0,diag=0 by hand, then memcpy() the other
+ * columns.
+ */
+ for (y = 0; y < statenum; y++)
+ amx[0][0][y] = amx[1][0][y] = NEGINFINITY;
+ for (diag = 1; diag <= window; diag++)
+ {
+ memcpy(amx[0][diag], amx[0][0], statenum * sizeof(int));
+ memcpy(amx[1][diag], amx[0][0], statenum * sizeof(int));
+ }
+
+ /* Init the whole bmx to -Inf. We know state 0 is a begin (it's ROOT), so we
+ * start there, and memcpy rows as needed.
+ */
+ for (diag = 0; diag <= window; diag++)
+ bmx[0][0][diag] = NEGINFINITY;
+ for (j = 1; j < window; j++)
+ memcpy(bmx[0][j], bmx[0][0], (window+1) * sizeof(int));
+
+ for (y = 1; y < statenum; y++)
+ if (bmx[y] != NULL)
+ for (j = 0; j < window; j++)
+ memcpy(bmx[y][j], bmx[0][0], (window+1) * sizeof(int));
+
+ /* Init the off-diagonal (j = 0..window-1; diag == 0) with -log P scores.
+ * End state = 0;
+ * del, bifurc states are calc'ed
+ * begin states same as del's
+ * THIS IS WASTEFUL AND SHOULD BE CHANGED.
+ */
+ for (j = 0; j < window; j++)
+ for (y = statenum-1; y >= 0; y--)
+ {
+ /* Set the alignment of END states to the off-diagonal (diag = 0)
+ * to be zero, and never touch them again.
+ */
+ if (icm[y].statetype == uEND_ST)
+ amx[j%2][0][y] = 0;
+
+ else if (icm[y].statetype == uBIFURC_ST)
+ amx[j%2][0][y] = bmx[icm[y].tmx[0]][j][0] + bmx[icm[y].tmx[1]][j][0];
+
+ else if (icm[y].statetype == uDEL_ST || icm[y].statetype == uBEGIN_ST)
+ {
+ /* only calc DEL-DEL and BEGIN-DEL transitions. Since
+ * we optimized the state transition tables, removing
+ * the unused ones, we don't know where the number
+ * for "to DEL" is! But we can find it, because it'll
+ * be the connection to a non-infinite score */
+ beam = amx[j%2][0] + y + icm[y].offset;
+ for (ynext = 0; ynext < icm[y].connectnum; ynext++)
+ {
+ if (*beam != NEGINFINITY)
+ amx[j%2][0][y] = *beam + icm[y].tmx[ynext];
+ beam++;
+ }
+ }
+ /* make a copy into bmx if y is a BEGIN */
+ if (icm[y].statetype == uBEGIN_ST)
+ bmx[y][j][0] = amx[j%2][0][y];
+ }
+
+ return 1;
+}
+
+
+
+/* Function: recurse_mx()
+ *
+ * Purpose: Carry out the fill stage of the dynamic programming
+ * algorithm. After each j row is filled in, check the score
+ * of best full alignment ending at this row; if greater
+ * than threshold (ithresh), report it.
+ *
+ * Returns: 1 on success, 0 on failure.
+ */
+static int
+recurse_mx(struct istate_s *icm, /* integer, state-form model */
+ int statenum, /* number of states in icm */
+ char *seq, /* sequence, 1..seqlen */
+ int seqlen, /* length of seq */
+ int window, /* length of scanning window on seq */
+ int ***amx, /* main scoring matrix */
+ int ***bmx, /* bifurc scoring matrix */
+ int ithresh, /* reporting threshold */
+ int (*gotone_f)(int, int, double))
+{
+ int i, j, y; /* indices for 3 dimensions */
+ int aj; /* 0 or 1, index for j in A matrix */
+ int bj; /* 0..window-1, index for j in B matrix */
+ int diff; /* loop counter for difference: diff = j-i + 1 */
+ int symi, symj; /* symbol indices for seq[i], seq[j] */
+ int sc; /* tmp for a score */
+ int ynext; /* index of next state y */
+ int bestdiff, bestscore;
+
+ int *beam; /* ptr to a beam (z-axis vector) */
+ int leftdiff; /* diff coord of BEGIN_L of a bifurc */
+ int leftj; /* j coord of BEGIN_L of a bifurc */
+ int **left_p; /* pointer into whole 2D deck of BEGINL's of a bifurc */
+ int *right_p; /* ptr into row of BEGIN_R's of a bifurc */
+ int *scp; /* score pointer: ptr into beam of scores being calc'ed */
+ struct istate_s *st; /* state pointer: ptr at current state in icm */
+ int *tmx;
+ int emitsc;
+
+ for (j = 1; j <= seqlen; j++)
+ {
+ aj = j % 2; /* 0 or 1 index in amx */
+ bj = j % window; /* 0..window-1 index in bmx */
+ symj = SymbolIndex(seq[j]);
+
+ for (diff = 1; diff <= window && diff <= j; diff++)
+ {
+ i = j - diff + 1;
+ symi = SymbolIndex(seq[i]);
+
+ scp = &amx[aj][diff][statenum-1];
+ st = &icm[statenum-1];
+ for (y = statenum-1; y >= 0; y--, scp--, st--)
+ { /* loop over states */
+
+ if (st->statetype != uBIFURC_ST) /* a normal (non-BIFURC) state */
+ {
+ /* Connect the "beam" pointer to the appropriate
+ * starting place in the ynext scores we're connecting
+ * y to
+ */
+ switch (st->statetype) {
+ case uBEGIN_ST:
+ case uDEL_ST:
+ beam = amx[aj][diff];
+ emitsc = 0;
+ break;
+ case uMATP_ST: /* !aj toggles from 0 to 1 and vice versa */
+ if (diff == 1) continue;
+ beam = amx[!aj][diff-2];
+ emitsc = st->emit[symi * ALPHASIZE + symj];
+ break;
+ case uMATR_ST:
+ case uINSR_ST:
+ beam = amx[!aj][diff-1];
+ emitsc = st->emit[symj];
+ break;
+ case uMATL_ST:
+ case uINSL_ST:
+ beam = amx[aj][diff-1];
+ emitsc = st->emit[symi];
+ break;
+ case uEND_ST:
+ continue;
+ default: Die("no such state type %d", st->statetype);
+ }
+ beam += y + st->offset;
+ tmx = st->tmx;
+
+
+ /* Init for ynext == 0 case
+ */
+ *scp = *beam + *tmx;
+
+ /* Calculate remaining cases
+ */
+ for (ynext = 1; ynext < st->connectnum; ynext++)
+ {
+ beam++;
+ tmx++;
+ if (*beam > *scp)
+ {
+ sc = *beam + *tmx;
+ if (sc > *scp)
+ *scp = sc;
+ }
+ }
+
+ /* Add emission scores now
+ */
+ *scp += emitsc;
+
+ /* Make a copy into bmx, btr if necessary
+ */
+ if (st->statetype == uBEGIN_ST)
+ bmx[y][bj][diff] = *scp;
+ } /* end block of normal state stuff */
+
+ else /* a BIFURC state */
+ {
+ leftdiff = diff;
+ leftj = bj;
+ right_p = bmx[st->tmx[1]][leftj];
+ left_p = bmx[st->tmx[0]];
+
+ /* init w/ case that left branch emits it all */
+ *scp = left_p[leftj][leftdiff] + *right_p;
+ while (leftdiff > 0)
+ {
+ leftdiff--;
+ leftj = leftj ? leftj-1 : window-1; /* scan window wraparound */
+ right_p++;
+
+ sc = left_p[leftj][leftdiff] + *right_p;
+ if (sc > *scp)
+ *scp = sc;
+ }
+ }
+
+ } /* end loop over states */
+ } /* end loop over diff */
+
+ /* We've completed a row. Now we can examine the scores in diff,
+ * aj, ROOT_ST to decide whether to report this row. If we do,
+ * we report the 1..seqlen i, j coords of the matching subsequence
+ * in seq, as well as the score converted to double-precision bits.
+ */
+ bestdiff = 1;
+ bestscore = bmx[0][bj][1];
+ for (diff = 2; diff <= window; diff++)
+ if (bmx[0][bj][diff] > bestscore)
+ {
+ bestscore = bmx[0][bj][diff];
+ bestdiff = diff;
+ }
+ if (bestscore > ithresh)
+ if (! ReportScanHit(j - bestdiff + 1, j, (double)(bestscore / INTPRECISION), gotone_f))
+ Warn("caller ignored report of a match!");
+ } /* end loop over j */
+
+ return 1;
+}
+
diff --git a/debug.c b/debug.c
new file mode 100644
index 0000000..3782fcd
--- /dev/null
+++ b/debug.c
@@ -0,0 +1,215 @@
+/* debug.c
+ * Fri Jan 28 14:10:59 1994
+ *
+ * Code specifically for debugging the package.
+ */
+
+
+#include <stdio.h>
+
+#include "structs.h"
+#include "funcs.h"
+
+/* Function: UstatetypeName()
+ *
+ * Purpose: "Ustatetypes" -- unique state types -- are used in the
+ * integer-style models of the alignment algorithms.
+ * Given such a flag, return a string representation of
+ * the unique statetype.
+ */
+char *
+UstatetypeName(int ustatetype)
+{
+ switch (ustatetype) {
+ case uDEL_ST: return "uDEL_ST";
+ case uMATP_ST: return "uMATP_ST";
+ case uMATL_ST: return "uMATL_ST";
+ case uMATR_ST: return "uMATR_ST";
+ case uINSL_ST: return "uINSL_ST";
+ case uINSR_ST: return "uINSR_ST";
+ case uBEGIN_ST: return "uBEGIN_ST";
+ case uEND_ST: return "uEND_ST";
+ case uBIFURC_ST: return "uBIFURC_ST";
+ default: return "Unknown state type";
+ }
+}
+
+
+/* Function: StatetypeName()
+ *
+ * Purpose: Given a statetype integer, return a string representation
+ * for that statetype.
+ */
+char *
+StatetypeName(int statetype)
+{
+ switch (statetype) {
+ case DEL_ST: return "DEL/BEG/BIF/END";
+ case MATP_ST: return "MATP_ST";
+ case MATL_ST: return "MATL_ST";
+ case MATR_ST: return "MATR_ST";
+ case INSL_ST: return "INSL_ST";
+ case INSR_ST: return "INSR_ST";
+ default: return "Unknown State";
+ }
+}
+
+
+/* Function: NodetypeName()
+ *
+ * Purpose: Given a node type integer, return a printable name
+ * for the node type.
+ */
+char *
+NodetypeName(int nodetype)
+{
+ switch (nodetype) {
+ case BIFURC_NODE: return "BIF/END NODE";
+ case MATP_NODE: return "MATP_NODE";
+ case MATL_NODE: return "MATL_NODE";
+ case MATR_NODE: return "MATR_NODE";
+ case BEGINL_NODE: return "BEGINL_NODE";
+ case BEGINR_NODE: return "BEGINR_NODE";
+ case ROOT_NODE: return "ROOT_NODE";
+ default: return "Unknown Node";
+ }
+}
+
+
+/* Function: PrintViterbiAMX()
+ *
+ * Purpose: Print out a normal main matrix from the original
+ * Viterbi alignment algorithm.
+ *
+ */
+void
+PrintViterbiAMX(FILE *fp, /* usually stderr/stdout */
+ struct istate_s *icm, /* integer model */
+ int statenum, /* length of model in states */
+ char *seq, /* sequence, 1..N */
+ int N, /* length of seq */
+ int ***amx) /* 'A' matrix */
+{
+ int diff, j, y; /* indices for three dimensions */
+
+ for (y = 0; y < statenum; y++)
+ {
+ fprintf(fp, "### A Matrix for state %d, type %d (%s), from node %d\n",
+ y, icm[y].statetype, UstatetypeName(icm[y].statetype), icm[y].nodeidx);
+ fprintf(fp, " ");
+ for (diff = 0; diff <= N; diff++)
+ fprintf(fp, "%6d ", diff);
+ fprintf(fp, "\n");
+
+ for (j = 0; j <= N; j++)
+ {
+ fprintf(fp, "%c %3d ", ((j > 0) ? seq[j] : '*'), j);
+ for (diff = 0; diff <= j; diff++)
+ fprintf(fp, "%6d ", amx[j][diff][y]);
+ fprintf(fp, "\n");
+ }
+ fprintf(fp, "\n\n");
+ }
+}
+
+
+
+/* Function: PrintTrace()
+ *
+ * Purpose: Debugging tool. Print a traceback tree.
+ */
+void
+PrintTrace(FILE *fp, struct trace_s *tr)
+{
+ struct tracestack_s *stack;
+ struct trace_s *currtr;
+
+ stack = InitTracestack();
+ PushTracestack(stack, tr->nxtl);
+
+ fprintf(fp, " address emitl emitr nodeidx type nxtl nxtr prv\n");
+
+ while ((currtr = PopTracestack(stack)) != NULL)
+ {
+ fprintf(fp, "(%p) %3d %3d %3d %3d %p %p %p %s\n",
+ currtr,
+ currtr->emitl, currtr->emitr,
+ currtr->nodeidx, currtr->type,
+ currtr->nxtl, currtr->nxtr, currtr->prv,
+ UstatetypeName(currtr->type));
+ if (currtr->nxtr != NULL)
+ PushTracestack(stack, currtr->nxtr);
+ if (currtr->nxtl != NULL)
+ PushTracestack(stack, currtr->nxtl);
+ }
+ FreeTracestack(stack);
+}
+
+
+/* Function: PrintAli()
+ *
+ * Purpose: Debugging tool. Print out an align_s structure
+ */
+void
+PrintAli(FILE *fp, struct align_s *ali)
+{
+ struct align_s *curr;
+
+ for (curr = ali; curr != NULL; curr = curr->nxt)
+ fprintf(fp, "%4d %c %c %4d %s\n",
+ curr->pos, curr->sym, curr->ss, curr->nodeidx,
+ UstatetypeName(curr->type));
+}
+
+
+
+/* Function: PrintICM()
+ *
+ * Purpose: Print an integer-version CM, as used by the alignment
+ * algorithms.
+ */
+void
+PrintICM(FILE *fp, struct cm_s *cm, struct istate_s *icm, int nstates)
+{
+ int y;
+ int x;
+
+ for (y = 0; y < nstates; y++)
+ {
+ fprintf(fp, "node %d (%s) state %d (%s)\n",
+ icm[y].nodeidx, NodetypeName(cm->nd[icm[y].nodeidx].type),
+ y, UstatetypeName(icm[y].statetype));
+ fprintf(fp, " connectnum %d offset %d (connections start at %d)\n",
+ icm[y].connectnum, icm[y].offset, y + icm[y].offset);
+ fprintf(fp, " Transitions: ");
+ for (x = 0; x < icm[y].connectnum; x++)
+ fprintf(fp, "%d ", icm[y].tmx[x]);
+ fputs("\n", fp);
+
+ fprintf(fp, " Emissions: ");
+ switch (icm[y].statetype)
+ {
+ case uMATP_ST:
+ for (x = 0; x < ALPHASIZE * ALPHASIZE; x++)
+ fprintf(fp, "%d ", icm[y].emit[x]);
+ fputs("\n", fp);
+ break;
+
+ case uMATR_ST:
+ case uMATL_ST:
+ case uINSR_ST:
+ case uINSL_ST:
+ for (x = 0; x < ALPHASIZE; x++)
+ fprintf(fp, "%d ", icm[y].emit[x]);
+ fputs("\n", fp);
+ break;
+
+ default:
+ fputs("NONE\n", fp);
+ break;
+ }
+ }
+}
+
+
+
diff --git a/emit.c b/emit.c
new file mode 100644
index 0000000..65de66c
--- /dev/null
+++ b/emit.c
@@ -0,0 +1,568 @@
+/* emit.c
+ * 1.0: Fri Jun 11 12:59:33 1993
+ * 2.0: SRE, Thu Sep 9 13:44:18 1993
+ *
+ * generate sequences randomly from a model.
+ *
+ * The growing sequence is kept as a linked list (align_s).
+ * The model tree is traversed by pushing nodes onto a stack
+ * (m2ali_s). The information kept for each active node
+ * is nodeidx, state type, and a pointer into the growing linked
+ * list where the next emissions should go.
+ *
+ * The recursion is to pop an active node off;
+ * then, switch (statetype)
+ * MATP: pick symbol pair. insert right symbol. insert
+ * left symbol. new insertion pointer on left symbol.
+ * INSL, MATL: pick symbol. insert symbol. new insertion pointer
+ * on new symbol.
+ * INSR, MATR: pick symbol. insert symbol. new insertion pointer
+ * stays where it was.
+ * BIFURC: insert dummy symbol. one new insertion pointer
+ * stays where it was (BIFL), other points to the
+ * new dummy (BIFR).
+ * DELETE: no symbol. new insertion pointer stays where it
+ * was.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "squid.h"
+
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+static void pick_transit(struct cm_s *cm, int oldidx, int oldtype,
+ int *ret_newidx, int *ret_newtype);
+static void pick_double_emit(struct cm_s *cm, int nodeidx, char *ret_syml, char *ret_symr);
+static void pick_single_emit(struct cm_s *cm, int nodeidx, int type, char *ret_sym);
+
+static void pick_best_transit(struct cm_s *cm, int oldidx, int oldtype,
+ int *ret_newidx, int *ret_newtype);
+static void pick_best_double(struct cm_s *cm, int nodeidx, char *ret_syml, char *ret_symr);
+static void pick_best_single(struct cm_s *cm, int nodeidx, int type, char *ret_sym);
+
+
+/* Function: EmitSequence()
+ *
+ * Purpose: Generate a sequence probabilistically from a model.
+ * The returned sequence contains upper case letters
+ * for MATCH-generated positions, lower case letters
+ * for INSERT-generated positions.
+ *
+ * Caller is reponsible for free'ing memory allocated
+ * to the sequence.
+ *
+ */
+int
+EmitSequence(struct cm_s *cm, /* model */
+ int watsoncrick,/* if TRUE, annotate only canonical pairs */
+ struct align_s **ret_ali, /* RETURN: generated "alignment" */
+ char **ret_khseq, /* RETURN: generated structure */
+ char **ret_seq) /* RETURN: generated sequence */
+{
+ struct m2ali_s *emstack;
+ struct align_s *emlist;
+ int oldidx;
+ int oldtype;
+ struct align_s *oldafter;
+ int newidx;
+ int newtype;
+ struct align_s *newafter;
+ char syml;
+ char symr;
+ int pos;
+ char *seq;
+ char *khseq;
+ char ssl, ssr; /* secondary structure annotation */
+
+ /* Initialize the linked list of emitted sequence, emlist.
+ */
+ emlist = Init_align();
+
+ /* Initialize the pushdown stack for traversing the model,
+ * emstack.
+ */
+ emstack = Init_m2ali();
+ pick_transit(cm, 0, uBEGIN_ST, &newidx, &newtype);
+ Push_m2ali(emstack, newidx, newtype, emlist);
+
+
+ /* While there's still active model nodes in the stack,
+ * pop one off and deal with it.
+ */
+ while (Pop_m2ali(emstack, &oldidx, &oldtype, &oldafter))
+ {
+ /* look out for end */
+ if (oldidx == -1) continue;
+
+ /* check for BIFURC, which makes automatic transits to BEGIN states
+ * of next two segments.
+ */
+ if (cm->nd[oldidx].type == BIFURC_NODE)
+ {
+ /* deal with right branch */
+ newafter = Insafter_align(0, '-', ' ', oldidx, uBIFURC_ST, oldafter); /* insert a dummy */
+ Push_m2ali(emstack, cm->nd[oldidx].nxt2, uBEGIN_ST, newafter);
+ /* deal with left branch */
+ Push_m2ali(emstack, cm->nd[oldidx].nxt, uBEGIN_ST, oldafter);
+ }
+
+ else
+ {
+ switch (oldtype) {
+ case uDEL_ST:
+ pick_transit(cm, oldidx, oldtype, &newidx, &newtype);
+ Push_m2ali(emstack, newidx, newtype, oldafter);
+ break;
+
+ case uMATP_ST:
+ pick_double_emit(cm, oldidx, &syml, &symr);
+ if (! watsoncrick ||
+ IsRNAComplement(syml, symr, TRUE))
+ { ssl = '>'; ssr = '<'; }
+ else
+ { ssl = ssr = '.'; }
+ (void) Insafter_align(0, symr, ssr, oldidx, oldtype, oldafter);
+ newafter = Insafter_align(0, syml, ssl, oldidx, oldtype, oldafter);
+
+ pick_transit(cm, oldidx, oldtype, &newidx, &newtype);
+ Push_m2ali(emstack, newidx, newtype, newafter);
+ break;
+
+ case uINSL_ST:
+ case uMATL_ST:
+ pick_single_emit(cm, oldidx, oldtype, &syml);
+ newafter = Insafter_align(0, syml, '.', oldidx, oldtype, oldafter);
+
+ pick_transit(cm, oldidx, oldtype, &newidx, &newtype);
+ Push_m2ali(emstack, newidx, newtype, newafter);
+ break;
+
+ case uINSR_ST:
+ case uMATR_ST:
+ pick_single_emit(cm, oldidx, oldtype, &symr);
+ (void) Insafter_align(0, symr, '.', oldidx, oldtype, oldafter);
+
+ pick_transit(cm, oldidx, oldtype, &newidx, &newtype);
+ Push_m2ali(emstack, newidx, newtype, oldafter);
+ break;
+
+ default:
+ Die("Unrecognized state type %d in model.", oldtype);
+ }
+ }
+ }
+ Free_m2ali(emstack);
+
+ /* Now go through and write the correct 'pos' fields in *emlist,
+ * because the caller might expect them for some reason.
+ */
+ pos = 0;
+ for (newafter = emlist->nxt; newafter->nxt != NULL; newafter = newafter->nxt)
+ {
+ if (newafter->type == uDEL_ST)
+ newafter->pos = -1;
+ else
+ {
+ newafter->pos = pos;
+ pos++;
+ }
+ }
+
+ /* Now we extract the sequence from the linked list.
+ * For now, we leave the dummy characters in.
+ */
+ if (! Align2kh(emlist, &seq, &khseq))
+ Warn("Align2kh() failed");
+
+ *ret_ali = emlist;
+ *ret_khseq = khseq;
+ *ret_seq = seq;
+ return 1;
+}
+
+
+
+/* Function: EmitBestSequence()
+ *
+ * Purpose: Generate the most probable sequence from a model by picking
+ * the most probable transitions and emissions.
+ * Very similar to EmitSequence(), above.
+ *
+ */
+int
+EmitBestSequence(struct cm_s *cm, /* model */
+ int watsoncrick, /* if TRUE, annotate only canonical pairs */
+ struct align_s **ret_ali, /* RETURN: generated "alignment" */
+ char **ret_khseq, /* RETURN: generated structure */
+ char **ret_seq) /* RETURN: generated sequence */
+{
+ struct align_s *ali; /* generated "alignment" linked list */
+ struct align_s *curr; /* ptr to current insertion pt in ali */
+ struct align_s *new; /* ptr to newly inserted pt in ali */
+ struct m2ali_s *stack; /* pushdown stack for traversing model */
+ int oldidx; /* stateidx of current insertion pt in ali */
+ int oldtype; /* subtype of current insertion pt in ali */
+ int newidx; /* stateidx of newly inserted pt in ali */
+ int newtype; /* subtype of newly inserted pt in ali */
+ char syml; /* emitted symbol to the left */
+ char symr; /* emitted symbol to the right */
+ int pos; /* position in seq */
+ char *seq; /* RETURN: generated most probable sequence*/
+ char *khseq; /* RETURN: structure rep. of seq */
+ char ssl, ssr; /* secondary structure annotation */
+
+ /* Initialize the linked list of emitted sequence, ali
+ */
+ ali = Init_align();
+
+ /* Initialize the pushdown stack for traversing the model
+ */
+ stack = Init_m2ali();
+ pick_best_transit(cm, 0, uBEGIN_ST, &newidx, &newtype);
+ Push_m2ali(stack, newidx, newtype, ali);
+
+
+ /* While there's still active model nodes in the stack,
+ * pop one off and deal with it.
+ */
+ while (Pop_m2ali(stack, &oldidx, &oldtype, &curr))
+ {
+ /* look out for end */
+ if (oldidx == -1) continue;
+
+ /* check for BIFURC, which makes automatic transits to BEGIN states
+ * of next two segments.
+ */
+ if (cm->nd[oldidx].type == BIFURC_NODE)
+ {
+ /* deal with right branch */
+ new = Insafter_align(0, '-', ' ', oldidx, uBIFURC_ST, curr); /* insert a dummy */
+ Push_m2ali(stack, cm->nd[oldidx].nxt2, uBEGIN_ST, new);
+ /* deal with left branch */
+ Push_m2ali(stack, cm->nd[oldidx].nxt, uBEGIN_ST, curr);
+ }
+
+ else
+ {
+ switch (oldtype) {
+ case uDEL_ST:
+ pick_best_transit(cm, oldidx, oldtype, &newidx, &newtype);
+ Push_m2ali(stack, newidx, newtype, curr);
+ break;
+
+ case uMATP_ST:
+ pick_best_double(cm, oldidx, &syml, &symr);
+ if (! watsoncrick ||
+ IsRNAComplement(syml, symr, TRUE))
+ { ssl = '>'; ssr = '<'; }
+ else
+ { ssl = '.'; ssr = '.'; }
+
+ (void) Insafter_align(0, symr, ssr, oldidx, oldtype, curr);
+ new = Insafter_align(0, syml, ssl, oldidx, oldtype, curr);
+
+ pick_best_transit(cm, oldidx, oldtype, &newidx, &newtype);
+ Push_m2ali(stack, newidx, newtype, new);
+ break;
+
+ case uINSL_ST:
+ case uMATL_ST:
+ pick_best_single(cm, oldidx, oldtype, &syml);
+ new = Insafter_align(0, syml, '.', oldidx, oldtype, curr);
+
+ pick_best_transit(cm, oldidx, oldtype, &newidx, &newtype);
+ Push_m2ali(stack, newidx, newtype, new);
+ break;
+
+ case uINSR_ST:
+ case uMATR_ST:
+ pick_best_single(cm, oldidx, oldtype, &symr);
+ (void) Insafter_align(0, symr, '.', oldidx, oldtype, curr);
+
+ pick_best_transit(cm, oldidx, oldtype, &newidx, &newtype);
+ Push_m2ali(stack, newidx, newtype, curr);
+ break;
+
+ default:
+ Die("Unrecognized state type %d in model.", oldtype);
+ }
+ }
+ }
+ Free_m2ali(stack);
+
+ /* Now go through and write the correct 'pos' fields in *ali,
+ * because the caller might expect them for some reason.
+ */
+ pos = 0;
+ for (curr = ali->nxt; curr->nxt != NULL; curr = curr->nxt)
+ {
+ if (curr->type == uDEL_ST)
+ curr->pos = -1;
+ else
+ {
+ curr->pos = pos;
+ pos++;
+ }
+ }
+
+ /* Now we extract the sequence from the linked list.
+ * For now, we leave the dummy characters in.
+ */
+ if (! Align2kh(ali, &seq, &khseq))
+ Warn("Align2kh() failed");
+
+ *ret_ali = ali;
+ *ret_khseq = khseq;
+ *ret_seq = seq;
+ return 1;
+}
+
+
+
+
+/* Function: pick_transit()
+ *
+ * Purpose: Pick a random state transition, given a current state
+ * (specified by a stateidx and a subtype). Pass back
+ * the new state (newidx, newtype).
+ */
+static void
+pick_transit(struct cm_s *cm,
+ int oldidx,
+ int oldtype,
+ int *ret_newidx,
+ int *ret_newtype)
+{
+ int newidx;
+ int newtype;
+ double sum;
+ double roll;
+
+ /* Picking a new subtype involves rolling a random
+ * fraction and examining the appropriate row of the
+ * 7x7 state transition matrix.
+ */
+ sum = 0.0;
+ roll = sre_random();
+ for (newtype = 0; newtype < STATETYPES; newtype++)
+ {
+ sum += cm->nd[oldidx].tmx[oldtype][newtype];
+ if (roll <= sum) break;
+ }
+ if (newtype == STATETYPES)
+ Die("Failed to transit from stateidx %d subtype %d, roll %.2f",
+ oldidx, oldtype, roll);
+
+ /* Picking a new nodeidx is a function of the current
+ * state type. This function should never be called for BIFURCs.
+ */
+ if (newtype == INSL_ST || newtype == INSR_ST)
+ newidx = oldidx;
+ else
+ newidx = cm->nd[oldidx].nxt;
+
+ *ret_newidx = newidx;
+ *ret_newtype = UniqueStatetype(cm->nd[newidx].type, newtype);
+}
+
+
+
+/* Function: pick_double_emit()
+ *
+ * Purpose: Given a model and a current state (stateidx, subtype),
+ * which must be an INSC or MATC, pick a pairwise emission
+ * (syml, symr) according to the probabilities in the
+ * appropriate emission matrix.
+ */
+static void
+pick_double_emit(struct cm_s *cm,
+ int nodeidx,
+ char *ret_syml,
+ char *ret_symr)
+{
+ double sum;
+ double roll;
+ int i, j;
+
+ sum = 0.0;
+ roll = sre_random();
+ for (i = 0; i < ALPHASIZE; i++)
+ for (j = 0; j < ALPHASIZE; j++)
+ {
+ sum += cm->nd[nodeidx].mp_emit[i][j];
+ if (roll <= sum) goto breakout;
+ }
+ breakout:
+ *ret_syml = ALPHABET[i];
+ *ret_symr = ALPHABET[j];
+}
+
+
+
+
+/* Function: pick_single_emit()
+ *
+ * Purpose: Given a model and a current state (nodeidx, type),
+ * which must be an INS(L/R) or MAT(L/R), pick an emission
+ * (sym) according to the probabilities in the
+ * appropriate emission vector.
+ */
+static void
+pick_single_emit(struct cm_s *cm,
+ int nodeidx,
+ int type,
+ char *ret_sym)
+{
+ double sum;
+ double roll;
+ int i;
+ double *emit;
+
+ /* find correct emission vector */
+ switch (type) {
+ case uINSL_ST: emit = cm->nd[nodeidx].il_emit; break;
+ case uINSR_ST: emit = cm->nd[nodeidx].ir_emit; break;
+ case uMATL_ST: emit = cm->nd[nodeidx].ml_emit; break;
+ case uMATR_ST: emit = cm->nd[nodeidx].mr_emit; break;
+ default:
+ Die("can't single emit from state type %d", type);
+ }
+
+ sum = 0.0;
+ roll = sre_random();
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ sum += emit[i];
+ if (roll <= sum) break;
+ }
+ *ret_sym = ALPHABET[i];
+}
+
+
+
+
+/* Function: pick_best_transit()
+ *
+ * Purpose: Pick most probable state transition, given a current state
+ * (specified by a nodeidx and a type). Pass back
+ * the new state (newidx, newtype).
+ */
+static void
+pick_best_transit(struct cm_s *cm,
+ int oldidx,
+ int oldtype,
+ int *ret_newidx,
+ int *ret_newtype)
+{
+ int y;
+ int newidx;
+ int newtype;
+ double best;
+
+ /* find maximum probability */
+ best = 0.0;
+ for (y = 0; y < STATETYPES; y++)
+ if (cm->nd[oldidx].tmx[oldtype][y] > best)
+ {
+ best = cm->nd[oldidx].tmx[oldtype][y];
+ newtype = y;
+ }
+
+ /* Picking a new nodeidx is a function of the current
+ * type. This function should never be called for BIFURCs.
+ */
+ if (newtype == INSL_ST || newtype == INSR_ST)
+ newidx = oldidx;
+ else
+ newidx = cm->nd[oldidx].nxt;
+
+ *ret_newidx = newidx;
+ *ret_newtype = UniqueStatetype(cm->nd[newidx].type, newtype);
+}
+
+
+
+/* Function: pick_best_double()
+ *
+ * Purpose: Given a model and a current state (nodeidx, type),
+ * (which must a MATP), pick most probable pairwise emission
+ * (syml, symr) according to the probabilities in the
+ * appropriate emission matrix.
+ *
+ */
+static void
+pick_best_double(struct cm_s *cm,
+ int nodeidx,
+ char *ret_syml,
+ char *ret_symr)
+{
+ double best;
+ int i, j;
+ int besti, bestj;
+
+ best = 0.0;
+ for (i = 0; i < ALPHASIZE; i++)
+ for (j = 0; j < ALPHASIZE; j++)
+ if (cm->nd[nodeidx].mp_emit[i][j] > best)
+ {
+ best = cm->nd[nodeidx].mp_emit[i][j];
+ besti = i;
+ bestj = j;
+ }
+ *ret_syml = ALPHABET[besti];
+ *ret_symr = ALPHABET[bestj];
+}
+
+
+
+
+/* Function: pick_best_single()
+ *
+ * Purpose: Given a model and a current state (nodeidx, type),
+ * which must be an INS(L/R) or MAT(L/R), pick most probable emission
+ * (sym) according to the probabilities in the
+ * appropriate emission vector.
+ */
+static void
+pick_best_single(struct cm_s *cm,
+ int nodeidx,
+ int type,
+ char *ret_sym)
+{
+ double best;
+ int besti;
+ int i;
+ double *emit;
+
+ /* find correct emission vector */
+ switch (type) {
+ case uINSL_ST: emit = cm->nd[nodeidx].il_emit; break;
+ case uINSR_ST: emit = cm->nd[nodeidx].ir_emit; break;
+ case uMATL_ST: emit = cm->nd[nodeidx].ml_emit; break;
+ case uMATR_ST: emit = cm->nd[nodeidx].mr_emit; break;
+ default: Die("can't single emit from type %d", type);
+ }
+
+ best = 0.0;
+ for (i = 0; i < ALPHASIZE; i++)
+ if (emit[i] > best)
+ {
+ best = emit[i];
+ besti = i;
+ }
+ *ret_sym = ALPHABET[besti];
+}
+
+
+
+
+
+
+
+
diff --git a/emit_main.c b/emit_main.c
new file mode 100644
index 0000000..1a3d554
--- /dev/null
+++ b/emit_main.c
@@ -0,0 +1,181 @@
+/* emit_main.c
+ * main() for emitting sequences from a stored model
+ * written as a debugging aid
+ *
+ * 1.0: SRE, Tue Jun 15 09:32:43 1993
+ * 2.0: SRE, Fri Sep 10 08:06:37 1993
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+
+#ifdef NEED_GETOPTH
+#include <getopt.h>
+#endif
+
+#include "structs.h"
+#include "funcs.h"
+#include "version.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define OPTIONS "abls:L"
+
+static char usage[] = "\
+Usage: covee [-options] <cmfile>\n\
+where options are:\n\
+ -a : annotate all pairs, not just canonical ones\n\
+ -b : emit single most probable sequence\n\
+ -l : print as mountain landscape\n\
+ -s <seed> : set seed for random()\n\
+ EXPERIMENTAL OPTIONS:\n\
+ -L : calculate expected length distributions for states\n";
+
+
+static char banner[] = "covee: emit sequences from a covariance model";
+
+int
+main(int argc, char **argv)
+{
+ char *cmfile; /* file to read model from */
+ struct cm_s *cm; /* model */
+ int i; /* counter for sequences */
+ char *seq; /* generated sequence */
+ char *khseq; /* generated structure */
+ struct align_s *ali; /* generated "alignment" */
+
+ int emitnum; /* number of sequences to emit */
+ int seed; /* seed for random number generator */
+ int do_best; /* TRUE if generating only best seq */
+ int do_landscape; /* TRUE if printing as landscape */
+ int watsoncrick; /* TRUE to annotate only canonical pairs */
+ int do_lengths; /* TRUE to do length distributions */
+
+ int optc;
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ emitnum = 20;
+ seed = (int) time (0);
+ do_best = FALSE;
+ do_landscape = FALSE;
+ watsoncrick = TRUE;
+ do_lengths = FALSE;
+
+ while ((optc = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optc) {
+
+ case 'a': watsoncrick = FALSE; break;
+ case 'b': do_best = TRUE; break;
+ case 'l': do_landscape = TRUE; break;
+ case 's': seed = atoi(optarg); break;
+ case 'L': do_lengths = TRUE; break;
+
+ default:
+ Die("Error: unrecognized option %c\n", optc);
+ }
+
+ if (argc - optind != 1)
+ Die("Wrong number of arguments.\n%s", usage);
+
+ cmfile = argv[optind];
+ sre_srandom((unsigned) seed);
+
+ /***********************************************
+ * Read in the model
+ ***********************************************/
+
+ if (! ReadCM(cmfile, &cm))
+ Die("Failed to read model from file %s\n", cmfile);
+
+ /***********************************************
+ * Generate sequences from model and print them.
+ ***********************************************/
+
+ puts(banner);
+ printf(" version %s, %s\n\n", RELEASE, RELEASEDATE);
+
+ if (do_lengths)
+ {
+ struct pstate_s *pcm;
+ int statenum;
+ double **lmx;
+ int *min, *max;
+ int y;
+
+ MakePCM(cm, &pcm, &statenum);
+ NormalizePCM(pcm, statenum);
+ LengthDistribution(pcm, statenum, 200, &lmx);
+ LengthBounds(lmx, statenum, 200, 1.0e-6, &min, &max);
+
+ for (y = 0; y < statenum; y++)
+ printf("%4d %4d %4d (%4d) %8.8f %s\n",
+ y, min[y], max[y], max[y]-min[y]+1,
+ (float) (max[y]-min[y]+1) / 200.0,
+ UstatetypeName(pcm[y].statetype));
+
+ Free2DArray(lmx, statenum);
+ free(min);
+ free(max);
+ free(pcm);
+ }
+
+ else if (do_best)
+ {
+ if (! EmitBestSequence(cm, watsoncrick, &ali, &khseq, &seq)) Die("EmitBestSequence() failed");
+
+ if (do_landscape)
+ {
+ if (! PrintAliLandscape(stdout, cm, ali))
+ Warn("PrintAliLandscape failed\n");
+ }
+ else
+ {
+ printf("%s\n", seq);
+ printf("%s\n", khseq);
+ puts("");
+ }
+
+ free(ali);
+ free(khseq);
+ free(seq);
+ }
+
+ else
+ {
+ for (i = 0; i < emitnum; i++)
+ {
+ if (! EmitSequence(cm, watsoncrick, &ali, &khseq, &seq))
+ Die("failed to generate a sequence from the model.");
+
+ if (do_landscape)
+ PrintAliLandscape(stdout, cm, ali);
+ else
+ {
+ printf("seq %2d: %s\n", i, seq);
+ printf(" %s\n", khseq);
+ puts("");
+ }
+
+ free(ali);
+ free(khseq);
+ free(seq);
+ }
+ }
+
+ /***********************************************
+ * Cleanup and exit
+ ***********************************************/
+
+ FreeCM(cm);
+ return 0;
+}
+
diff --git a/eufind_const.h b/eufind_const.h
new file mode 100644
index 0000000..d445441
--- /dev/null
+++ b/eufind_const.h
@@ -0,0 +1,51 @@
+
+/* tRNA scanning cutoffs */
+
+#define BBOX_CUTOFF -14.14
+#define BBOX_START_IDX 45
+
+#define SEC_LOBOUND -4.9 /* orig: -3.6 euk: -3.8 prok (hflu) -4.9 */
+#define SEC_HIBOUND -2.1 /* -2.2 */
+#define MAX_PENALTY -5.442 /* log(1/231) */
+
+
+#define INT_SCORE_THRESH -31.25
+#define TOT_SCORE_THRESH -31.8 /* -31.8 */
+
+#define MAX_AB_BOX_DIST 140 /* not used anymore, instead
+ /* AB_BOX_DIST_RANGE used */
+#define MIN_AB_BOX_DIST 24
+#define AB_BOX_DIST_RANGE 116 /* check this far over MIN_AB_BOX
+ /* distance for A-B box pairs */
+
+#define SEC_AB_BOX_DIST 26
+#define SEC_BBOX_DIST_CORR 12
+
+#define MIN_BTERM_DIST 11
+#define MAX_TERM_SEARCH 133 /* Max distance to search for termination
+ signal (was 59, changed to 133 (as in
+ Pavesi paper) on 11/96
+ since was missing 4 yeast tRNAs */
+#define ABOX_LEN 21
+#define BBOX_LEN 11
+
+#define MAX_OVLAP 10 /* max #bp tRNA hits are allowed to
+ overlap */
+
+struct trna_info_s {
+ char iso_type[5];
+ char acodon[4];
+ int start, end,
+ Abox_st, Abox_end, Abox_gap,
+ Bbox_st, Bbox_end,
+ Term_st,
+ acodon_idx, intron, idno;
+ float totSc, AboxSc, BboxSc, ABdistSc, TermSc;
+};
+
+typedef struct trna_info_s TRNA_TYPE;
+
+
+
+
+
diff --git a/eufind_main.c b/eufind_main.c
new file mode 100644
index 0000000..609f460
--- /dev/null
+++ b/eufind_main.c
@@ -0,0 +1,294 @@
+
+/* eufindtRNA - Eukaryotic tRNA finder
+ *
+ * C implementation of algorithm described by Pavesi, Conterio,
+ * Bolchi, Dieci, & Ottonello in NAR 22:1247-56 (94)
+ * "Identification of new eukaryotic tRNA genes in genomic DNA
+ * databases by a multistep weight matix analysis of transcriptional
+ * control regions"
+ *
+ * To be used in tRNAscan-SE package to increase sensitivity by
+ * complementing tRNAscan 1.3 first-pass scan
+ *
+ * by Todd MJ Lowe 4/8/96
+ *
+ * Uses Sean Eddy's function library for biological sequence analysis
+ * (Squid v1.5g)
+ *
+ * v1.1: Small bug fixed 8/2000 that caused second of two consecutive tRNAs
+ * (within 40bp) to be missed if the second tRNA scored lower than the first
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "squid.h"
+#include "sqfuncs.h"
+#include "eufind_const.h"
+
+char eufind_version[] = "1.1";
+char eufind_date[] = "Aug 2000";
+
+
+#define OPTIONS "ho:l:X:I:rsDFi:"
+char usage[] = "\n\
+Usage: eufindtRNA [-options] <sequence file>\n\
+Find tRNAs in eukaryotic sequences\n\n\
+Available options:\n\
+-h : help - print version and usage info\n\
+-o <outfile> : save tRNAs in <outfile>\n\
+-r : relaxed mode (no terminators searched for)\n\
+-s : strict mode (discard tRNAs with missing terminators)\n\
+-l <length> : set max intron+variable loop length (default=140)\n\
+-X <Score> : manually set final score cutoff to <Score> (def=-31.8)\n\
+-I <Score> : set cutoff for intermediate score (def=-31.25)\n\
+-D : save tRNA score components (for Debugging)\n\
+-F : don't check for uppercase or DNA alphabet\n\
+-i <integer> : start nucleotide numbering at <integer> (def=1)\n\n";
+
+int
+main (int argc, char **argv)
+{
+ char *seqfile; /* file containing aligned seqs */
+ char *outfile; /* destination file for tRNAs */
+ int fmt; /* format of seqfile */
+ FILE *outfp; /* open outfile */
+ SQFILE *seqfp;
+ SQINFO sqinfo;
+ int i, errno,
+ ShowScores, /* flag for type of info output when
+ saving tRNAs */
+ RelaxedMode, /* flag for relaxed scanning mode, do
+ not look for poly T terminator
+ signal */
+ StrictMode, /* require poly T terminator */
+ NoReformat; /* flag to prevent extra work of
+ /* changing seqs to DNA & upper case */
+ /* alphabet */
+
+ float NoTermPenalty; /* penalty val for tRNAs with no */
+ /* poly T terminator */
+
+ long int sqoffset; /* nucleotide numbering offset (set with -i param) */
+ char *seq, *revseq, /* sequence */
+ *iseq, *reviseq; /* encoded seq & encoded reverse comp */
+ int strand, /* 1 for orig seq, -1 for rev comp */
+ seqidx; /* current position in seq */
+ float FirstScore, /* initial (Bbox) logodds score */
+ IntScore, TotScore, /* cum tRNA logodds scores */
+ IntScoreCutoff,
+ TotScoreCutoff; /* cutoff for reporting tRNAs */
+ TRNA_TYPE *tRNA, *prev_tRNA,
+ *swap_tRNA; /* current & previous tRNA info */
+ int Max_AB_dist; /* max nuc. distance searched upstream */
+ /* of candidate B boxes for A boxes */
+ int tRNA_ct;
+
+ int optchar;
+ extern char *optarg;
+ extern int optind;
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ outfile = NULL;
+ TotScoreCutoff = TOT_SCORE_THRESH;
+ IntScoreCutoff = INT_SCORE_THRESH;
+ Max_AB_dist = MIN_AB_BOX_DIST + AB_BOX_DIST_RANGE;
+ sqoffset = 0;
+ ShowScores = 0;
+ NoTermPenalty = MAX_PENALTY;
+ RelaxedMode = 0;
+ StrictMode = 0;
+ NoReformat = 0;
+
+ while ((optchar = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optchar) {
+
+ case 'o': outfile = optarg; break;
+ case 'h':
+ printf("eufindtRNA %s, %s\n%s\n", eufind_version, eufind_date, usage);
+ exit(EXIT_SUCCESS);
+ case 'r': RelaxedMode = 1; break;
+ case 's': NoTermPenalty = 10*MAX_PENALTY; StrictMode = 1; break;
+ case 'X': TotScoreCutoff = atof(optarg); break;
+ case 'D': ShowScores = 1; break;
+ case 'F': NoReformat = 1; break;
+ case 'l': Max_AB_dist = MIN_AB_BOX_DIST + atof(optarg); break;
+ case 'I': IntScoreCutoff = atof(optarg); break;
+ case 'i': sqoffset = atof(optarg)-1; break;
+ default:
+ Die("%s\n", usage);
+ }
+
+ if (argc -optind != 1)
+ Die("Wrong number of arguments specified on command line\n%s\n", usage);
+
+ seqfile = argv[optind];
+
+ if (outfile == NULL)
+ outfp = stdout;
+ else if ((outfp = fopen(outfile, "w")) == NULL)
+ Die("Failed to open tRNA output file %s", outfile);
+
+
+ if ((tRNA = (TRNA_TYPE *) malloc (sizeof(TRNA_TYPE))) == NULL)
+ Die("Memory failure, couldn't allocate tRNA memory\n");
+ if ((prev_tRNA = (TRNA_TYPE *) malloc (sizeof(TRNA_TYPE))) == NULL)
+ Die("Memory failure, couldn't allocate tRNA memory\n");
+
+
+ /***********************************************
+ * Determine seq format & open for reading *
+ ***********************************************/
+
+ if (! SeqfileFormat(seqfile, &fmt, NULL))
+ Die("Can't determine format of file %s\n", seqfile);
+ if ((seqfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL)
+ Die("Failed to open sequence file %s for reading", seqfile);
+
+ while (ReadSeq(seqfp, fmt, &seq, &sqinfo)) {
+
+ if (ShowScores)
+ printf ("Seq: %s\n",sqinfo.name);
+
+ tRNA_ct = 0;
+
+ if (!NoReformat) {
+ ToDNA(seq);
+ s2upper(seq);
+ }
+
+ /* allocate mem for integer-encoded seq (A=0,C=1,G=2,T=3) */
+ if ((iseq = calloc (sqinfo.len+2, sizeof(char))) == NULL)
+ Die("Memory failure, couldn't allocate sequence\n");
+
+ /* integer-encode sequence */
+ if (errno = IntEncodeSeq(iseq,seq,sqinfo.len))
+ Die("Unable to encode sequence %s at base %d\n",
+ sqinfo.name,errno);
+
+ /* Search both strands (0=top strand, -1=bottom strand) */
+ for (strand=0; strand >= -1; strand--) {
+
+ Init_tRNA(prev_tRNA); /* clear previous tRNA */
+
+ /* take reverse complement of encoded seq if searching bottom strand */
+ if (strand == -1) {
+ if ((revseq = calloc (sqinfo.len+2, sizeof(char))) == NULL)
+ Die("Memory failure, couldn't allocate reverse sequence\n");
+ revcomp(revseq, seq);
+ free(seq);
+ seq = revseq;
+ if (IntEncodeSeq(iseq,seq,sqinfo.len))
+ Die("Unable to encode sequence\n");
+ }
+
+
+ /***********************************************
+ * Find transcriptional promotor elements *
+ ***********************************************/
+
+ seqidx=BBOX_START_IDX-2;
+ while (GetBbox(&FirstScore,&seqidx,iseq,sqinfo.len,strand,
+ ShowScores)) {
+
+ Init_tRNA(tRNA);
+ tRNA->Bbox_st = seqidx;
+ tRNA->Bbox_end = seqidx + BBOX_LEN-1;
+ tRNA->BboxSc = FirstScore;
+
+ if (((FirstScore >= SEC_LOBOUND) &&
+ (FirstScore <= SEC_HIBOUND))
+ && (GetSecABox(tRNA,seq))){
+
+ if (!GetBestTrxTerm(tRNA,seq,sqinfo.len,NoTermPenalty) &&
+ StrictMode)
+ continue; /* look for next B box */
+
+ strcpy(tRNA->acodon,"TCA");
+ /* tRNA->Bbox_end++; */
+ tRNA->totSc = FirstScore;
+ }
+
+ else { /* Searching for non-SelCys tRNA */
+
+
+ GetBestABox(tRNA,seq,iseq,sqinfo.len,strand,ShowScores,
+ Max_AB_dist,prev_tRNA->Abox_st);
+ IntScore = tRNA->AboxSc + tRNA->BboxSc + tRNA->ABdistSc;
+ if (IntScore < IntScoreCutoff)
+ continue; /* look for next B box */
+
+ if (!RelaxedMode) {
+ if (!GetBestTrxTerm(tRNA,seq,sqinfo.len,NoTermPenalty) &&
+ StrictMode)
+ continue;
+ TotScore = IntScore + tRNA->TermSc;
+ if (TotScore < TotScoreCutoff)
+ continue; /* look for next B box */
+
+ tRNA->totSc = TotScore;
+ }
+ else
+ tRNA->totSc = IntScore;
+
+ }
+
+ Get_tRNA_stats(tRNA,seq,sqinfo.len,strand);
+
+ if (tRNAOverlap(tRNA,prev_tRNA,strand)) {
+
+ if (tRNA->totSc < prev_tRNA->totSc) {
+ Init_tRNA(tRNA); /* skip repeat tRNA */
+ }
+ else { /* swap, but don't save yet */
+
+ swap_tRNA = prev_tRNA;
+ prev_tRNA = tRNA;
+ Init_tRNA(swap_tRNA);
+ tRNA = swap_tRNA;
+ }
+ }
+ else { /* no overlap, save & then swap */
+
+ if (prev_tRNA->start > 0) {
+ prev_tRNA->idno = ++tRNA_ct;
+ Save_tRNA(prev_tRNA,&sqinfo,seq,strand,ShowScores,sqoffset);
+ }
+ swap_tRNA = prev_tRNA;
+ prev_tRNA = tRNA;
+ Init_tRNA(swap_tRNA);
+ tRNA = swap_tRNA;
+ }
+
+ } /* find B box */
+
+ /* save last buffered tRNA before going to other strand */
+
+ if (prev_tRNA->start > 0) {
+ prev_tRNA->idno = ++tRNA_ct;
+ Save_tRNA(prev_tRNA,&sqinfo,seq,strand,ShowScores,sqoffset);
+ }
+
+ } /* search both strands */
+
+ FreeSequence(seq, &sqinfo);
+ free(iseq);
+ }
+
+ SeqfileClose(seqfp);
+ fclose(outfp);
+ return 0;
+}
+
+
+
+
+
+
+
+
+
+
diff --git a/fast-dbviterbi.c b/fast-dbviterbi.c
new file mode 100644
index 0000000..2f71a10
--- /dev/null
+++ b/fast-dbviterbi.c
@@ -0,0 +1,485 @@
+/* fast-dbviterbi.c
+ * SRE, Fri Sep 30 15:09:06 1994
+ *
+ * Search with a covariance model
+ * Fast "banded search" version of dbviterbi.c; subsequence
+ * lengths are bounded by probabilistically determined bounds.
+ *
+ **********
+ *
+ * To optimize memory access patterns, the score storage is implemented
+ * as a two-matrix version. amx is the
+ * main storage. bmx is a smaller auxiliary matrix with a different
+ * access pattern, holding scores of BEGIN state alignments; it
+ * is used when calculating BIFURC scores.
+ *
+ * amx is [j = 0..1] [y = 0..statenum] [diff = 0..j]
+ * diff == 0 is for off-diagonal boundary conditions (this is why diff is shifted +1)
+ * diff == 1 is for the diagonal, i==j
+ * We only need to keep two j rows in memory (current and previous).
+ * Note that this is yet *another* memory access pattern and it's different
+ * from dbviterbi.c!!!
+ *
+ * bmx is [y = 0..statenum] [j = 0..N] [ diff = 0..j]
+ * a j,diff matrix exists only where y is a BEGIN state
+ *
+ * The 2.0 implementation allows variable storage per node rather
+ * than storing and calculating a fixed max number of states per node,
+ * which should save up to 2x in both time and space.
+ *
+ * An optimization is made which requires END states to be explicitly
+ * added, so statenum (the number of states in the integer model)
+ * is *inclusive* of ENDs.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+static int allocate_mx(struct istate_s *icm, int statenum, int window,
+ int ****ret_amx, int ****ret_bmx);
+static int init_mx (struct istate_s *icm, int statenum, int N,
+ int ***amx, int ***bmx);
+static int recurse_mx (struct istate_s *icm, int statenum, int *minb, int *maxb,
+ char *seq, int seqlen,
+ int window, int ***amx, int ***bmx, int ithresh,
+ int (*gotone_f)(int, int, double));
+static void free_mx (int ***amx, int ***bmx, int statenum, int window);
+
+
+/* Function: FastViterbiScan()
+ *
+ * Purpose: Scanning version of the Viterbi alignment algorithm,
+ * for finding matches in a long sequence.
+ *
+ * Args: icm - the model to align sequence to (int log-odds)
+ * statenum - length of model in states (inclusive of END)
+ * minb - minimum length bounds for states
+ * maxb - maximum length bounds for states
+ * seq - sequence to align model to
+ * window - scanning window size (nucleotides)
+ * thresh - scores above this are reported through gotone_f()
+ * gotone_f - function which gets told about a match
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+FastViterbiScan(struct istate_s *icm, int statenum, int *minb, int *maxb,
+ char *seq, int window, double thresh,
+ int (*gotone_f)(int, int, double))
+{
+ int ***amx; /* the main score matrix */
+ int ***bmx; /* the BEGIN score matrix */
+ int N; /* length of sequence */
+ int ithresh; /* thresh, converted and scaled to int */
+
+ N = strlen(seq);
+ seq--; /* convert to 1..N. Ugh! */
+ ithresh = (int) (thresh * INTPRECISION);
+
+ if (! allocate_mx(icm, statenum, window, &amx, &bmx)) return 0;
+#ifdef DEBUG
+ printf("allocated matrices\n");
+#endif
+
+ if (! init_mx(icm, statenum, window, amx, bmx)) return 0;
+#ifdef DEBUG
+ printf("matrices initialized\n");
+#endif
+
+ if (! recurse_mx(icm, statenum, minb, maxb, seq, N, window, amx, bmx, ithresh, gotone_f))
+ return 0;
+#ifdef DEBUG
+ printf("recursion finished\n");
+#endif
+ /* terminate scanning hit reporting */
+ ReportScanHit(-1,-1, 0.0, gotone_f);
+ free_mx(amx, bmx, statenum, window);
+ return 1;
+}
+
+
+
+/* Function: allocate_mx()
+ *
+ * Purpose: Malloc space for the score matrices.
+ * amx and atr are indexed as j, i, y.
+ * bmx and btr are indexed as k, j, i.
+ * In the two sequence dimensions j, i they are
+ * diagonal (+1 off diagonal) matrices with
+ * rows j = 0..N, i = 1..j+1.
+ * In the node dimension k bmx and btr are k = 0..M.
+ * In the state dimension y amx and atr are y = 0..numstates.
+ *
+ * Args: icm - the int, log-odds, state-based model
+ * statenum - number of states in model
+ * window - length of scanning window
+ * ret_amx - RETURN: main score matrix
+ * ret_bmx - RETURN: BEGIN score matrix
+ *
+ * Return: Ptr to allocated scoring matrix, or
+ * dies and exits.
+ */
+static int
+allocate_mx(struct istate_s *icm,
+ int statenum,
+ int window,
+ int ****ret_amx,
+ int ****ret_bmx)
+
+{
+ int ***amx;
+ int ***bmx;
+ int diag, j, y;
+
+ /* Main matrix, amx: fastest varying index is y (j,i,y)
+ * we only keep two rows for j, 0 and 1.
+ */
+ /* malloc for j = 0..1 rows */
+ if ((amx = (int ***) malloc (2 * sizeof(int **))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ for (j = 0; j <= 1; j++) /* loop over rows j = 0..1 */
+ {
+ /* malloc for diag = 0..window cols */
+ if ((amx[j] = (int **) malloc ((window + 1) * sizeof(int *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ /* loop over cols diag = 0..window */
+ for (diag = 0; diag <= window; diag++)
+ /* malloc for y = 0..statenum-1 decks */
+ if ((amx[j][diag] = (int *) malloc ((statenum) * sizeof (int ))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+
+
+ /* B auxiliary matrix: fastest varying index is diag (y,j,diag)
+ * bmx keeps score decks for BEGIN states
+ */
+ /* 0..statenum-1 decks */
+ if ((bmx = (int ***) malloc (statenum * sizeof(int **))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ for (y = 0; y < statenum; y++)
+ {
+ bmx[y] = NULL;
+ /* we keep score info for BEGIN states */
+ if (icm[y].statetype == uBEGIN_ST)
+ {
+ /* j= 0..window-1 rows */
+ if ((bmx[y] = (int **) malloc ((window) * sizeof(int *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ /* diff = 0..window columns */
+ for (j = 0; j < window; j++)
+ if ((bmx[y][j] = (int *) malloc ((window+1) * sizeof(int ))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+ }
+ *ret_amx = amx;
+ *ret_bmx = bmx;
+ return 1;
+}
+
+
+
+/* Function: free_mx()
+ *
+ * Purpose: Free the space allocated to the scoring and traceback matrices.
+ * Precisely mirrors the allocations above in allocate_cvmx().
+ *
+ * Return: (void)
+ */
+static void
+free_mx(int ***amx,
+ int ***bmx,
+ int statenum,
+ int window)
+{
+ int diag, j, y;
+
+ /* Free the main matrix, amx:
+ * amx[j][i][y] = [0..1] [0..window] [0..statenum-1]
+ */
+ for (j = 0; j <= 1; j++)
+ {
+ for (diag = 0; diag <= window; diag++)
+ free(amx[j][diag]);
+ free(amx[j]);
+ }
+ free(amx);
+
+ /* Free the auxiliary matrix, bmx
+ * bmx[y][j][i] = [0..statenum-1] [0..window] [0..window]
+ */
+ for (y = 0; y < statenum; y++)
+ {
+ if (bmx[y] != NULL)
+ {
+ for (j = 0; j < window; j++)
+ free(bmx[y][j]);
+ free(bmx[y]);
+ }
+ }
+ free(bmx);
+}
+
+
+
+/* Function: init_mx()
+ *
+ * Purpose: Initialization of the scoring matrices. We initialize the off-diagonal,
+ * the diagonal, and the "floor" (end states) of the cube.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+static int
+init_mx(struct istate_s *icm, /* integer model */
+ int statenum, /* number of states in icm */
+ int window, /* size of scanning window on sequence */
+ int ***amx,
+ int ***bmx)
+{
+ int diag, j, y; /* counters for indices over the cvmx */
+ int ynext; /* index of next state k+1 */
+ int *beam; /* z-axis vector of numbers in amx */
+
+ /* Init the whole amx to -Infinity. We do this with memcpy, trying
+ * to be fast. We fill in j=0,diag=0 by hand, then memcpy() the other
+ * columns.
+ */
+ for (y = 0; y < statenum; y++)
+ amx[0][0][y] = amx[1][0][y] = NEGINFINITY;
+ for (diag = 1; diag <= window; diag++)
+ {
+ memcpy(amx[0][diag], amx[0][0], statenum * sizeof(int));
+ memcpy(amx[1][diag], amx[0][0], statenum * sizeof(int));
+ }
+
+ /* Init the whole bmx to -Inf. We know state 0 is a begin (it's ROOT), so we
+ * start there, and memcpy rows as needed.
+ */
+ for (diag = 0; diag <= window; diag++)
+ bmx[0][0][diag] = NEGINFINITY;
+ for (j = 1; j < window; j++)
+ memcpy(bmx[0][j], bmx[0][0], (window+1) * sizeof(int));
+
+ for (y = 1; y < statenum; y++)
+ if (bmx[y] != NULL)
+ for (j = 0; j < window; j++)
+ memcpy(bmx[y][j], bmx[0][0], (window+1) * sizeof(int));
+
+ /* Init the off-diagonal (j = 0..window-1; diag == 0) with -log P scores.
+ * End state = 0;
+ * del, bifurc states are calc'ed
+ * begin states same as del's
+ * THIS IS WASTEFUL AND SHOULD BE CHANGED.
+ */
+ for (j = 0; j < window; j++)
+ for (y = statenum-1; y >= 0; y--)
+ {
+ /* Set the alignment of END states to the off-diagonal (diag = 0)
+ * to be zero, and never touch them again.
+ */
+ if (icm[y].statetype == uEND_ST)
+ amx[j%2][0][y] = 0;
+
+ else if (icm[y].statetype == uBIFURC_ST)
+ amx[j%2][0][y] = bmx[icm[y].tmx[0]][j][0] + bmx[icm[y].tmx[1]][j][0];
+
+ else if (icm[y].statetype == uDEL_ST || icm[y].statetype == uBEGIN_ST)
+ {
+ /* only calc DEL-DEL and BEGIN-DEL transitions. Since
+ * we optimized the state transition tables, removing
+ * the unused ones, we don't know where the number
+ * for "to DEL" is! But we can find it, because it'll
+ * be the connection to a non-infinite score */
+ beam = amx[j%2][0] + y + icm[y].offset;
+ for (ynext = 0; ynext < icm[y].connectnum; ynext++)
+ {
+ if (*beam != NEGINFINITY)
+ amx[j%2][0][y] = *beam + icm[y].tmx[ynext];
+ beam++;
+ }
+ }
+ /* make a copy into bmx if y is a BEGIN */
+ if (icm[y].statetype == uBEGIN_ST)
+ bmx[y][j][0] = amx[j%2][0][y];
+ }
+
+ return 1;
+}
+
+
+
+/* Function: recurse_mx()
+ *
+ * Purpose: Carry out the fill stage of the dynamic programming
+ * algorithm. After each j row is filled in, check the score
+ * of best full alignment ending at this row; if greater
+ * than threshold (ithresh), report it.
+ *
+ * Returns: 1 on success, 0 on failure.
+ */
+static int
+recurse_mx(struct istate_s *icm, /* integer, state-form model */
+ int statenum, /* number of states in icm */
+ int *minb,
+ int *maxb,
+ char *seq, /* sequence, 1..seqlen */
+ int seqlen, /* length of seq */
+ int window, /* length of scanning window on seq */
+ int ***amx, /* main scoring matrix */
+ int ***bmx, /* bifurc scoring matrix */
+ int ithresh, /* reporting threshold */
+ int (*gotone_f)(int, int, double))
+{
+ int i, j, y; /* indices for 3 dimensions */
+ int aj; /* 0 or 1, index for j in A matrix */
+ int bj; /* 0..window-1, index for j in B matrix */
+ int diff; /* loop counter for difference: diff = j-i + 1 */
+ int symi, symj; /* symbol indices for seq[i], seq[j] */
+ int sc; /* tmp for a score */
+ int ynext; /* index of next state y */
+ int bestdiff, bestscore;
+
+ int *beam; /* ptr to a beam (z-axis vector) */
+ int leftdiff; /* diff coord of BEGIN_L of a bifurc */
+ int leftj; /* j coord of BEGIN_L of a bifurc */
+ int **left_p; /* pointer into whole 2D deck of BEGINL's of a bifurc */
+ int *right_p; /* ptr into row of BEGIN_R's of a bifurc */
+ int *scp; /* score pointer: ptr into beam of scores being calc'ed */
+ struct istate_s *st; /* state pointer: ptr at current state in icm */
+ int *tmx;
+ int emitsc;
+
+ for (j = 1; j <= seqlen; j++)
+ {
+ aj = j % 2; /* 0 or 1 index in amx */
+ bj = j % window; /* 0..window-1 index in bmx */
+ symj = SymbolIndex(seq[j]);
+
+ for (y = statenum-1; y >= 0; y--)
+ {
+ st = &icm[y];
+ for (diff = minb[y]; diff <= maxb[y] && diff <= j; diff++)
+ {
+ i = j - diff + 1;
+ symi = SymbolIndex(seq[i]);
+ scp = &amx[aj][diff][y];
+
+ if (st->statetype != uBIFURC_ST) /* a normal (non-BIFURC) state */
+ {
+ /* Connect the "beam" pointer to the appropriate
+ * starting place in the ynext scores we're connecting
+ * y to
+ */
+ switch (st->statetype) {
+ case uBEGIN_ST:
+ case uDEL_ST:
+ beam = amx[aj][diff];
+ emitsc = 0;
+ break;
+ case uMATP_ST: /* !aj toggles from 0 to 1 and vice versa */
+ if (diff == 1) continue;
+ beam = amx[!aj][diff-2];
+ emitsc = st->emit[symi * ALPHASIZE + symj];
+ break;
+ case uMATR_ST:
+ case uINSR_ST:
+ beam = amx[!aj][diff-1];
+ emitsc = st->emit[symj];
+ break;
+ case uMATL_ST:
+ case uINSL_ST:
+ beam = amx[aj][diff-1];
+ emitsc = st->emit[symi];
+ break;
+ case uEND_ST:
+ continue;
+ default: Die("no such state type %d", st->statetype);
+ }
+ beam += y + st->offset;
+ tmx = st->tmx;
+
+ /* Init for ynext == 0 case
+ */
+ *scp = *beam + *tmx;
+
+ /* Calculate remaining cases
+ */
+ for (ynext = 1; ynext < st->connectnum; ynext++)
+ {
+ beam++;
+ tmx++;
+ if (*beam > *scp)
+ {
+ sc = *beam + *tmx;
+ if (sc > *scp)
+ *scp = sc;
+ }
+ }
+
+ /* Add emission scores now
+ */
+ *scp += emitsc;
+
+ /* Make a copy into bmx, btr if necessary
+ */
+ if (st->statetype == uBEGIN_ST)
+ bmx[y][bj][diff] = *scp;
+ } /* end block of normal state stuff */
+
+ else /* a BIFURC state */
+ {
+ leftdiff = diff;
+ leftj = bj;
+ right_p = bmx[st->tmx[1]][leftj];
+ left_p = bmx[st->tmx[0]];
+
+ /* init w/ case that left branch emits it all */
+ *scp = left_p[leftj][leftdiff] + *right_p;
+ while (leftdiff > 0)
+ {
+ leftdiff--;
+ leftj = leftj ? leftj-1 : window-1; /* scan window wraparound */
+ right_p++;
+
+ sc = left_p[leftj][leftdiff] + *right_p;
+ if (sc > *scp)
+ *scp = sc;
+ }
+ }
+
+ } /* end loop over states */
+ } /* end loop over diff */
+
+ /* We've completed a row. Now we can examine the scores in diff,
+ * aj, ROOT_ST to decide whether to report this row. If we do,
+ * we report the 1..seqlen i, j coords of the matching subsequence
+ * in seq, as well as the score converted to double-precision bits.
+ */
+ bestdiff = 1;
+ bestscore = bmx[0][bj][1];
+ for (diff = 2; diff <= window; diff++)
+ if (bmx[0][bj][diff] > bestscore)
+ {
+ bestscore = bmx[0][bj][diff];
+ bestdiff = diff;
+ }
+ if (bestscore > ithresh)
+ if (! ReportScanHit(j - bestdiff + 1, j, (double)(bestscore / INTPRECISION), gotone_f))
+ Warn("caller ignored report of a match!");
+ } /* end loop over j */
+
+ return 1;
+}
+
diff --git a/fasta2gsi.pl b/fasta2gsi.pl
new file mode 100644
index 0000000..48f906c
--- /dev/null
+++ b/fasta2gsi.pl
@@ -0,0 +1,120 @@
+#! /usr/bin/perl
+
+# Usage: fasta2gsi.perl <seqfile>
+# Creates seqfile.gsi
+#
+# Create a .gsi sequence database index file.
+#
+# GSI allows multiple files per index, but fasta2gsi.pl
+# creates a GSI index for a single FASTA file.
+#
+# Part of the SQUID sequence analysis library.
+# Copyright (C) 1992-1996 Sean R. Eddy
+
+
+$seqfile = shift;
+$gsifile = $seqfile.".gsi";
+$tmpfile = $seqfile.".tmpgsi";
+
+# Library of Perl functions for creating GSI index files.
+#
+# GSI definition:
+# 1 + <nfiles> + <nkeys> total records.
+# Each record = 38 bytes.
+#
+# one header record : <"GSI" (32)> <nfiles (2)> <nkeys (4)>
+# <nfiles> file records : <filename (32)> <fileno (2)> <fmt (4)>
+# <nkeys> key records : <key (32)> <fileno (2)> <offset(4)>
+#
+# Part of the SQUID sequence analysis library.
+# Copyright (C) 1992-1996 Sean R. Eddy
+
+
+# The following numbers MUST match their counterparts in squid.h
+#
+$sqd_fmt_genbank = 2;
+$sqd_fmt_embl = 4;
+$sqd_fmt_fasta = 7;
+$sqd_fmt_pir = 12;
+
+# Function: GSI_WriteHeader(GSIFILE, $filenum, $keynum)
+#
+# Write the header of an open GSI file.
+#
+sub GSI_WriteHeader {
+ local(*GSIFILE, $filenum, $keynum) = @_;
+ local($header);
+ $header = pack("a32 n N", "GSI", $filenum, $keynum);
+ print GSIFILE $header;
+ 1;
+}
+
+# Function: GSI_WriteFileRecord(GSIFILE, $filename, $idx, $fmt)
+#
+# Write a file record to an open GSI file.
+#
+sub GSI_WriteFileRecord {
+ local(*GSIFILE, $filename, $idx, $fmt) = @_;
+ local($record);
+ $record = pack("a32 n N", $filename, $idx, $fmt);
+ print GSIFILE $record;
+ 1;
+}
+
+# Function: GSI_WriteKeyRecord(GSIFILE, $key, $filenum, $offset)
+#
+# Write a key record to an open GSI file.
+#
+sub GSI_WriteKeyRecord {
+ local(*GSIFILE, $key, $filenum, $offset) = @_;
+ local($record);
+ $record = pack("a32 n N", $key, $filenum, $offset);
+ print GSIFILE $record;
+ 1;
+}
+
+
+
+
+# First pass. Create an unsorted flat text file.
+#
+$curr_offset = 0;
+$recnum = 0;
+print "Calculating offsets for $seqfile...\n";
+open(TMPFILE,">$tmpfile");
+open(SEQFILE,$seqfile);
+while (<SEQFILE>)
+{
+ if (($key) = /^>\s*(\S+)/)
+ {
+ print TMPFILE "$key 1 $curr_offset\n";
+ $recnum++;
+ }
+ $curr_offset = tell;
+}
+close(SEQFILE);
+close(TMPFILE);
+
+# Sort the temporary file alphabetically on the key.
+print "Sorting the intermediate index file...\n";
+system("sort -o $tmpfile $tmpfile");
+
+# Second pass. Convert flat text file to binary GSI.
+#
+print "Writing the final binary GSI file...\n";
+open(GSIFILE,">$gsifile");
+&GSI_WriteHeader(GSIFILE, 1, $recnum);
+&GSI_WriteFileRecord(GSIFILE, $seqfile, 1, $sqd_fmt_fasta);
+
+open(TMPFILE,$tmpfile);
+while (<TMPFILE>)
+{
+ ($key, $filenum, $offset) = split;
+ &GSI_WriteKeyRecord(GSIFILE, $key, $filenum, $offset);
+}
+close(TMPFILE);
+close(GSIFILE);
+unlink $tmpfile;
+
+print "Complete.\n";
+print "$gsifile indexes $recnum sequence names.\n";
diff --git a/fastmodelmaker.c b/fastmodelmaker.c
new file mode 100644
index 0000000..fbf8de2
--- /dev/null
+++ b/fastmodelmaker.c
@@ -0,0 +1,604 @@
+/* fastmodelmaker.c
+ *
+ * Construct a covariance model from an alignment, using an approximate
+ * but fast algorithm. Complexity is N^2 in memory, N^3 in time. Get
+ * back a covariance model, and information contents in bits for
+ * both primary and secondary structure.
+ *
+ * - use Stormo/Gutell MIXY algorithm to calculate pairwise covariances
+ * for all aligned column pairs i,j. This produces the matrix **mxy;
+ * it is indexed 0..alen-1 by 0..alen-1, as a flipped diagonal matrix
+ * mxy[j][i], j > i. The diagonal (i == j) is unused (and unallocated
+ * for).
+ *
+ * - use a quick and dirty Zuker-like algorithm to reduce this N^2
+ * matrix to the optimal model of non-overlapping chords. This
+ * produces the matrix **zmat. zmat is a flipped diagonal matrix,
+ * zmat[j][i], j >= i. The diagonal (i==j) is initialized to zero.
+ * All other cells take on positive values, summing covariances.
+ *
+ * - traceback thru the zmat matrix and construct a dynamic binary
+ * tree *ztr, excluding inserted columns. *ztr
+ * is constructed much the same as a normal traceback tree is constructed.
+ * emitl and emitr store the 0..alen-1 indices of the column this node is
+ * responsible for, even for BEGIN and BIFURC nodes. type is
+ * a node type (MATP_NODE), not a state type.
+ * Note that these are exceptions to the indexing scheme used
+ * by traceback structures everywhere else!
+ *
+ * - Then, for each *individual* sequence, construct a fake traceback based
+ * on *ztr. Use these tracebacks to collect statistics from the alignment
+ * and initialize probabilities in a new model.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "version.h"
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+static void mixy(char **aseq, int nseq, int alen, int ***ret_mixy);
+static void free_mixy(int **mxy, int acol);
+static void zfill(int **mxy, int acol, int ***ret_zmat, double *ret_sum);
+static void free_zmat(int **zmat, int acol);
+static void ztrace(int **zmat, double *gapfq, double gapthresh, int **mxy,
+ int acol, struct trace_s **ret_ztr);
+
+#ifdef DEBUG
+static void dump_mixy(int **mxy, int alen);
+static void dump_zmat(int **zmat, int alen);
+static void dump_ztr(struct trace_s *ztr);
+#endif /* DEBUG */
+
+/* Function: Fastmodelmaker()
+ *
+ * Purpose: Given a sequence alignment, construct a reasonable
+ * starting model. Returns the model, as well as numbers
+ * for the primary and secondary structure information
+ * content of the alignment.
+ *
+ * Args: aseqs - sequence alignment.
+ * ainfo - info about the alignment
+ * nseq - number of sequences
+ * prior - prior distributions for CM construction
+ * gapthresh - over this fraction of gaps, assign to INS
+ * ret_secinfo - RETURN: sec structure info content (bits) (maybe NULL)
+ * ret_cm - RETURN: new model (maybe NULL)
+ * ret_mtr - RETURN: master traceback for aseqs (maybe NULL)
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+Fastmodelmaker(char **aseqs, AINFO *ainfo, int nseq, struct prior_s *prior,
+ double gapthresh, double *ret_secinfo,
+ struct cm_s **ret_cm, struct trace_s **ret_mtr)
+{
+ struct cm_s *cm;
+ int **mxy;
+ int **zmat;
+ int M;
+ double secinfo;
+ double *gapfq; /* frequencies of gap occurrence per column */
+ struct trace_s *ztr;
+ struct trace_s *tr; /* individual traceback */
+ struct trmem_s *pool; /* memory pool for traceback */
+ int idx;
+ int gaps;
+ int apos;
+
+ /* Precalculate gap frequencies seen in each column of alignment
+ */
+ if ((gapfq = (double *) malloc (sizeof(double) * ainfo->alen)) == NULL)
+ Die("malloc failed, line %d file %s", __LINE__, __FILE__);
+ for (apos = 0; apos < ainfo->alen; apos++)
+ {
+ gaps = 0;
+ for (idx = 0; idx < nseq; idx++)
+ if (isgap(aseqs[idx][apos])) gaps++;
+ gapfq[apos] = (double) gaps / (double) nseq;
+ }
+
+ /* build Mxy matrix */
+ mixy(aseqs, nseq, ainfo->alen, &mxy);
+ /* dynamic programming fill of zmat, using mxy */
+ zfill(mxy, ainfo->alen, &zmat, &secinfo);
+ /* traceback of zmat to make ztr tree */
+ ztrace(zmat, gapfq, gapthresh, mxy, ainfo->alen, &ztr);
+/* PrintTrace(stdout, ztr); */
+
+ NumberMasterTrace(ztr, &M);
+ /* allocate for a model */
+ if ((cm = AllocCM(M)) == NULL) Die("AllocCM() failed");
+ TopofyNewCM(cm, ztr);
+
+ /* For each sequence: convert consensus tree ztr to individual fake traceback.
+ * Count traceback into new model.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ Transmogrify(ztr, aseqs[idx], &tr, &pool);
+
+ if (! TraceCount(cm, aseqs[idx],
+ (ainfo->sqinfo[idx].flags & SQINFO_WGT) ?
+ ainfo->sqinfo[idx].weight : 1.0,
+ tr))
+ Die("TraceCount() failed");
+
+ FreeTrace(tr, pool);
+ }
+
+ if (! VerifyCM(cm))
+ Die("Bad cm after trace counts.");
+
+ /* convert CM to probabilities */
+ ProbifyCM(cm, prior);
+ /* garbage collect & return */
+ free_mixy(mxy, ainfo->alen);
+ free_zmat(zmat, ainfo->alen);
+ free(gapfq);
+
+ if (ret_mtr != NULL) *ret_mtr = ztr; else FreeTrace(ztr, NULL);
+ if (ret_cm != NULL) *ret_cm = cm; else FreeCM(cm);
+ if (ret_secinfo != NULL) *ret_secinfo = secinfo / (double) nseq;
+ return 1;
+}
+
+
+
+
+/* Function: mixy()
+ *
+ * Purpose: given a set of N aligned sequences aseq, calculate
+ * pairwise covariances (mutual information). ret_mixy
+ * is allocated, filled, and returned, as a diagonal 2D
+ * (NxN) matrix of values. It must be freed by
+ * the caller. It is a lower diagonal matrix mxy[j][i],
+ * j > i, 0..alen-1 by 0..j-1.
+ *
+ * The values in mxy are integers. They are the average
+ * secondary structure information content (i.e. weighted for
+ * the number of pairs actually occurring in columns i,j)
+ * in bits, to two decimal places (i.e. info*100).
+ *
+ * Returns: mxy, which must be free'd by caller with free_mixy().
+ */
+static void
+mixy(char **aseq, /* array of aligned sequences, flushed right */
+ int nseq, /* number of aligned sequences */
+ int alen, /* length of each sequence (all the same) */
+ int ***ret_mxy) /* RETURN: mxy array */
+{
+ int **mxy; /* RETURN: diagonal covariance matrix */
+ float fx[ALPHASIZE]; /* singlet frequency vector */
+ float fy[ALPHASIZE]; /* another singlet frequency vector */
+ float fxy[ALPHASIZE][ALPHASIZE]; /* pairwise frequency 2D array */
+ int idx; /* counter for sequences */
+ int i, j; /* counters for columns x,y */
+ int symi, symj; /* counters for symbols */
+ int pairs; /* counter for pairs in which there are no gaps */
+ long test;
+
+ /* Allocate for mxy
+ */
+ if ((mxy = (int **) malloc (alen * sizeof(int *))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ for (j = 1; j < alen; j++)
+ if ((mxy[j] = (int *) malloc (j * sizeof(int))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+
+ test = (long) mxy[20];
+
+ /* calculate mxy
+ */
+ for (j = 1; j < alen; j++)
+ for (i = 0; i < j; i++)
+ {
+ /* zero counter array */
+ for (symj = 0; symj < ALPHASIZE; symj++)
+ {
+ fx[symj] = fy[symj] = 0.0;
+ for (symi = 0; symi < ALPHASIZE; symi++)
+ fxy[symj][symi] = 0.0;
+ }
+ /* count symbols in a column */
+ pairs = 0;
+ for (idx = 0; idx < nseq; idx++)
+ {
+ if (isgap(aseq[idx][i]) || isgap(aseq[idx][j]))
+ continue;
+
+ symi = SymbolIndex(aseq[idx][i]);
+ symj = SymbolIndex(aseq[idx][j]);
+
+ fx[symi] += 1.0;
+ fy[symj] += 1.0;
+ fxy[symi][symj] += 1.0;
+ pairs++;
+ }
+
+ /* convert to frequencies */
+ if (pairs > 0)
+ for (symi = 0; symi < ALPHASIZE; symi++)
+ {
+ fx[symi] /= (float) pairs;
+ fy[symi] /= (float) pairs;
+ for (symj = 0; symj < ALPHASIZE; symj++)
+ fxy[symi][symj] /= (float) pairs;
+ }
+
+ /* calculate mxy. 144.269504 is a conversion of ln's into
+ * bits * 100: i.e. 100 * (1/log(2))
+ */
+ mxy[j][i] = 0;
+ for (symi = 0; symi < ALPHASIZE; symi++)
+ for (symj = 0; symj < ALPHASIZE; symj++)
+ {
+ if (fxy[symi][symj] > 0.0)
+ mxy[j][i] += (int) (144.269504 * fxy[symi][symj] *
+ log((fxy[symi][symj] / (fx[symi] * fy[symj]))));
+ }
+
+ /* Sat Jul 17 22:17:17 1993: We weight by pairs to get an expected score
+ * over all the sequences. Fixes a problem that columns with few symbols
+ * could dominate the calculation just because of noise.
+ */
+ mxy[j][i] = (mxy[j][i] * pairs) / nseq;
+ }
+
+ /* dump debugging info
+ */
+
+#ifdef DEBUG
+ dump_mixy(mxy, alen);
+#endif
+ *ret_mxy = mxy;
+}
+
+
+
+/* Function: free_mixy()
+ *
+ * Purpose: free the space allocated for a flipped diagonal
+ * covariance matrix. To do this we also need to
+ * know alen, the number of columns in the starting
+ * sequence alignment.
+ *
+ * Returns: (void)
+ */
+static void
+free_mixy(int **mxy,
+ int alen)
+{
+ int j;
+
+ for (j = 1; j < alen; j++)
+ free(mxy[j]);
+ free(mxy);
+}
+
+
+
+
+/* Function: zfill()
+ *
+ * Purpose: Calculate the optimal structure for a covariance matrix
+ * produced by mixy(). Uses a way-simplified form of the
+ * Zuker/Nussinov dynamic programming RNA folding algorithm
+ * to find the structure which a) the emitted pairs sum
+ * to a maximum number of bits of covariance and b)
+ * has no overlapping chords (no pseudoknots). The dynamic
+ * programming matrix is allocated, filled, and returned.
+ *
+ * Returns: ret_zmat is returned thru a passed pointer; it must be
+ * free'd by the caller using free_zmat().
+ */
+static void
+zfill(int **mxy, /* diagonal covariance matrix from mixy() */
+ int acol, /* size of mxy; number of aligned columns */
+ int ***ret_zmat, /* RETURN: filled dynamic programming matrix */
+ double *ret_sum) /* RETURN: total sum of Mxy for tree (bits) */
+{
+ int **zmat;
+ int i, j;
+ int diff;
+ int mid;
+
+ /* Allocations.
+ * zmat is a flipped diagonal matrix, inclusive of the diagonal;
+ * positions on both axes are numbered 0..acol-1.
+ */
+ if ((zmat = (int **) malloc (acol * sizeof (int *))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ for (j = 0; j < acol; j++)
+ if ((zmat[j] = (int *) malloc ((j+1) * sizeof(int))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+
+ /* Initialization.
+ * We initialize the diagonal to 0.
+ */
+ for (j = 0; j < acol; j++)
+ zmat[j][j] = 0;
+
+ /* Dynamic programming stage.
+ * Our recursion is:
+ * Sij = max { Si+1,j (emit left, no covariance)
+ * Si,j-1 (emit right, no covariance)
+ * Si+1,j-1 + mxy[j][i].
+ * max over mid: Si,mid + Smid+1,j (bifurcation)
+ * }
+ */
+ for (diff = 1; diff < acol; diff++)
+ for (i = 0; (j = i+diff) < acol; i++)
+ {
+ if (j-1 >= i+1)
+ zmat[j][i] = zmat[j-1][i+1] + mxy[j][i];
+ else
+ zmat[j][i] = mxy[j][i];
+ if (zmat[j][i+1] > zmat[j][i])
+ zmat[j][i] = zmat[j][i+1];
+ if (zmat[j-1][i] > zmat[j][i])
+ zmat[j][i] = zmat[j-1][i];
+ for (mid = i+1; mid < j-1; mid++)
+ if (zmat[mid][i] + zmat[j][mid+1] > zmat[j][i])
+ zmat[j][i] = zmat[mid][i] + zmat[j][mid+1];
+ }
+
+ /* Return
+ */
+#ifdef DEBUG
+ dump_zmat(zmat, acol);
+#endif
+
+ *ret_sum = (double) zmat[acol-1][0] / 100.0;
+ *ret_zmat = zmat;
+}
+
+
+static void
+free_zmat(int **zmat,
+ int acol)
+{
+ int j;
+
+ for (j = 0; j < acol; j++)
+ free(zmat[j]);
+ free(zmat);
+}
+
+
+
+/* Function: ztrace()
+ *
+ * Purpose: Traceback through the dynamic programming matrix constructed
+ * by zfill(). Constructs a dynamic binary tree (ztr) of ztrace_s
+ * structures, which keep track of both topology and the
+ * order in which various aligned columns are emitted.
+ *
+ * ztr ends up being the "shell" or template upon which the
+ * final model is built. ztr captures the branching structure
+ * of the model tree.
+ *
+ * Inserts are dealt with at this point. Columns with a gap frequency
+ * exceeding gapthresh are excluded from ztr. The final tree ztr contains
+ * MATR, MATL, MATP nodes only (with BEGIN and BIFURC of course).
+ *
+ * Data: ztr: a traceback tree.
+ * emitl = index of column emitted left (0..acol-1)
+ * or -1
+ * emitr = index of column emitted right (0..acol-1)
+ * or -1
+ * nodeidx = index of node in new model
+ * type = type of node (MATP_NODE, etc.)
+ *
+ * Return: ret_ztr is allocated here and must be free'd by the caller.
+ */
+static void
+ztrace(int **zmat, /* dynamic programming matrix from zfill() */
+ double *gapfq, /* frequencies of gaps in columns 0..acol-1 */
+ double gapthresh, /* above this, column is INS-generated */
+ int **mxy, /* the covariance matrix from mixy() */
+ int acol, /* number of aligned columns (size of zmat) */
+ struct trace_s **ret_ztr)/* RETURN: binary tree of best structure */
+{
+ struct trace_s *ztr; /* binary tree of best structure */
+ struct trace_s *curr_ztr; /* ptr to node of ztr we're working on */
+ struct tracestack_s *dolist; /* pushdown stack of active ztr nodes */
+ int i,j; /* coords in zmat (0..acol-1) */
+ int mid; /* midpoint of a bifurcation */
+
+ /* Initialize.
+ * Start at i = 0, j = acol-1 and work towards diagonal.
+ */
+ InitTrace(&ztr, NULL); /* start a trace tree */
+ dolist = InitTracestack(); /* start a stack for traversing the trace tree */
+ /* start with root aligned to 0..acol-1 */
+ curr_ztr = AttachTrace(ztr, NULL, 0, acol-1, -1, ROOT_NODE);
+ curr_ztr = AttachTrace(curr_ztr, NULL, 0, acol-1, -1, -1);
+ PushTracestack(dolist, curr_ztr);
+
+ while ((curr_ztr = PopTracestack(dolist)) != NULL)
+ {
+ /* where we are now in the traceback. */
+ i = curr_ztr->emitl;
+ j = curr_ztr->emitr;
+
+ /* dummy END state on trace tree leaves. */
+ if (i > j) curr_ztr->type = uEND_ST; /* never executes. */
+
+ /* watch out for diagonal, where j-1,i+1 is nonsense */
+ else if (i == j) /* default to push-left; i is explained */
+ {
+ curr_ztr->type = MATL_NODE;
+ curr_ztr->nxtl->emitl = i+1;
+ curr_ztr->nxtl->emitr = j;
+ }
+
+ else if (j-1 == i && zmat[j][i] == mxy[j][i])
+ {
+ curr_ztr->type = MATP_NODE;
+ curr_ztr->nxtl->emitl = i+1;
+ curr_ztr->nxtl->emitr = j-1;
+ }
+
+ else if (zmat[j][i] == zmat[j-1][i+1] + mxy[j][i])
+ {
+ curr_ztr->type = MATP_NODE;
+ if (j-1 >= i+1)
+ PushTracestack(dolist, AttachTrace(curr_ztr, NULL, i+1, j-1, -1,-1));
+ else
+ {
+ curr_ztr->nxtl->emitl = i+1;
+ curr_ztr->nxtl->emitr = j-1;
+ }
+ }
+ else if (zmat[j][i] == zmat[j][i+1])
+ {
+ curr_ztr->type = MATL_NODE;
+ if ( j >= i+1)
+ PushTracestack(dolist, AttachTrace(curr_ztr, NULL, i+1, j, -1,-1));
+ else
+ {
+ curr_ztr->nxtl->emitl = i+1;
+ curr_ztr->nxtl->emitr = j;
+ }
+ }
+
+ else if (zmat[j][i] == zmat[j-1][i])
+ {
+ curr_ztr->type = MATR_NODE;
+ if ( j-1 >= i)
+ PushTracestack(dolist, AttachTrace(curr_ztr, NULL, i, j-1, -1,-1));
+ else
+ {
+ curr_ztr->nxtl->emitl = i;
+ curr_ztr->nxtl->emitr = j-1;
+ }
+ }
+
+ else
+ {
+ for (mid = i+1; mid < j-1; mid++)
+ if (zmat[j][i] == zmat[mid][i] + zmat[j][mid+1])
+ {
+ struct trace_s *branch;
+
+ /* the current node is a bifurc node */
+ curr_ztr->type = BIFURC_NODE;
+
+ /* it will connect to BEGIN-SEGMENT
+ * nodes on either side, which are followed
+ * by normal segments again */
+ /* right branch */
+ branch = AttachTrace(curr_ztr, NULL, mid+1, j, -1, BEGINR_NODE);
+ if (mid+1 <= j)
+ PushTracestack(dolist, AttachTrace(branch, NULL, mid+1, j, -1,-1));
+ else
+ { branch->nxtl->emitl = mid+1; branch->nxtl->emitr = j; }
+ /* left branch */
+ branch = AttachTrace(curr_ztr, NULL, i, mid, -1, BEGINL_NODE);
+ if (i <= mid)
+ PushTracestack(dolist, AttachTrace(branch, NULL, i, mid, -1,-1));
+ else
+ { branch->nxtl->emitl = i; branch->nxtl->emitr = mid; }
+ break;
+ }
+ }
+
+ /* clean up current node: deal with insertions */
+ if (curr_ztr->type == MATP_NODE)
+ {
+ if (gapfq[i] > gapthresh && gapfq[j] > gapthresh)
+ DeleteTracenode(curr_ztr, NULL);
+
+ else if (gapfq[i] > gapthresh)
+ curr_ztr->type = MATR_NODE;
+
+ else if (gapfq[j] > gapthresh)
+ curr_ztr->type = MATL_NODE;
+ }
+ else if ( (curr_ztr->type == MATR_NODE && gapfq[j] > gapthresh) ||
+ (curr_ztr->type == MATL_NODE && gapfq[i] > gapthresh))
+ DeleteTracenode(curr_ztr, NULL);
+ }
+
+ FreeTracestack(dolist);
+
+ *ret_ztr = ztr;
+}
+
+
+
+
+#ifdef DEBUG
+static void
+dump_mixy(int **mxy,
+ int alen)
+{
+ int i, j;
+
+ for (j = 1; j < alen; j++)
+ {
+ for (i = 0; i < j; i++)
+ printf("%6d", mxy[j][i]);
+ puts("\n");
+ }
+}
+
+static void
+dump_zmat(int **zmat,
+ int alen)
+{
+ int i, j;
+
+ for (j = 0; j < alen; j++)
+ {
+ for (i = 0; i <= j; i++)
+ printf("%6d", zmat[j][i]);
+ puts("\n");
+ }
+}
+
+static void
+dump_ztr(struct trace_s *ztr)
+{
+ struct tracestack_s *dolist;
+ struct trace_s *curr;
+
+ dolist = InitTracestack();
+ PushTracestack(dolist, ztr->nxtl);
+
+ while ((curr = PopTracestack(dolist)) != NULL)
+ {
+ printf("## ZTR STATE %#x\n", curr);
+ printf("emitl : %d\n", curr->emitl);
+ printf("emitr : %d\n", curr->emitr);
+ printf("nodeidx : %d\n", curr->nodeidx);
+ printf("type : %d\n", curr->type);
+ if (curr->nxtl != NULL)
+ printf("nxtl : %#x\n", curr->nxtl);
+ else
+ printf("nxtl : NULL\n");
+ if (curr->nxtr != NULL)
+ printf("nxtr : %#x\n", curr->nxtr);
+ else
+ printf("nxtr : NULL\n");
+
+ if (curr->nxtr != NULL)
+ PushTracestack(dolist, curr->nxtr);
+ if (curr->nxtl != NULL)
+ PushTracestack(dolist, curr->nxtl);
+ }
+ FreeTracestack(dolist);
+}
+#endif
+
+
diff --git a/funcs.h b/funcs.h
new file mode 100644
index 0000000..88eabc2
--- /dev/null
+++ b/funcs.h
@@ -0,0 +1,209 @@
+/* funcs.h
+ * Declarations and prototypes of functions
+ * SRE, Fri Sep 3 09:19:50 1993
+ *
+ */
+
+#include <stdio.h>
+#include "structs.h"
+
+/*
+ * from align.c
+ */
+extern int Trace2ali(char *seq, struct trace_s *tr, int watsoncrick, struct align_s **ret_ali);
+extern int Traces2Alignment(char **rseqs, SQINFO *sqinfo, struct trace_s **tr, int nseq,
+ struct cm_s *cm, int watsoncrick, char ***ret_aseqs,
+ AINFO *ainfo);
+
+
+/* from dbviterbi.c
+ */
+extern int ViterbiScan(struct istate_s *icm, int statenum, char *seq, int window,
+ double thresh, int (*gotone_f)(int, int, double));
+
+
+/* from debug.c
+ */
+extern char *UstatetypeName(int ustatetype);
+extern char *StatetypeName(int statetype);
+extern char *NodetypeName(int nodetype);
+extern void PrintViterbiAMX(FILE *fp, struct istate_s *icm, int statenum,
+ char *seq, int N, int ***amx);
+extern void PrintTrace(FILE *fp, struct trace_s *tr);
+extern void PrintAli(FILE *fp, struct align_s *ali);
+extern void PrintICM(FILE *fp, struct cm_s *cm, struct istate_s *icm, int nstates);
+
+
+
+/*
+ * from emit.c
+ *
+ * Generate sequences from a CVHMM
+ */
+extern int EmitSequence(struct cm_s *cm, int watsoncrick, struct align_s **ret_ali,
+ char **ret_khseq, char **ret_seq);
+extern int EmitBestSequence(struct cm_s *cm, int watsoncrick, struct align_s **ret_ali,
+ char **ret_khseq, char **ret_seq);
+
+/*
+ * from fastmodelmaker.c
+ */
+extern int Fastmodelmaker(char **aseqs, AINFO *ainfo, int nseq, struct prior_s *prior,
+ double gapthresh, double *ret_secinfo,
+ struct cm_s **ret_cm, struct trace_s **ret_mtr);
+
+
+/* from fast-dbviterbi.c
+ */
+extern int FastViterbiScan(struct istate_s *icm, int statenum, int *minb, int *maxb,
+ char *seq, int window, double thresh,
+ int (*gotone_f)(int, int, double));
+
+
+/*
+ * from konings.c
+ *
+ * ASCII representation of structures and structural alignments
+ */
+extern int Align2kh(struct align_s *ali, char **ret_aseq, char **ret_khseq);
+extern int PrintAliLandscape(FILE *fp, struct cm_s *cm, struct align_s *ali);
+extern void Trace2KHS(struct trace_s *tr, char *seq, int rlen, int watsoncrick,
+ char **ret_ss);
+extern int KHS2ct(char *ss, int len, int allow_pknots, int **ret_ct);
+extern int IsRNAComplement(char sym1, char sym2, int allow_gu);
+
+/*
+ * from lengthdist.c
+ */
+extern void LengthDistribution(struct pstate_s *pcm, int statenum, int N, double ***ret_lmx);
+extern void LengthBounds(double **lmx, int statenum, int N, double epsilon,
+ int **ret_min, int **ret_max);
+
+
+/*
+ * from maxmodelmaker.c
+ */
+extern int Maxmodelmaker(char **aseqs, AINFO *ainfo, int nseq, double gapthresh,
+ struct prior_s *prior, double *ret_ssinfo,
+ struct cm_s **ret_cm, struct trace_s **ret_mtr);
+
+/*
+ * from misc.c
+ */
+extern int SymbolIndex(char sym);
+extern int PrepareSequence(char *seq);
+
+/*
+ * from model.c
+ */
+extern struct cm_s *AllocCM(int nodes);
+extern void FreeCM(struct cm_s *cm);
+extern void NormalizeCM(struct cm_s *cm);
+extern int VerifyCM(struct cm_s *cm);
+extern int RearrangeCM(struct cm_s *cm, double *rfreq, struct istate_s **ret_icm, int *ret_statenum);
+extern int MakePCM(struct cm_s *cm, struct pstate_s **ret_pcm, int *ret_statenum);
+extern void NormalizePCM(struct pstate_s *pcm, int M);
+
+/* from modelmaking.c
+ */
+extern void NumberMasterTrace(struct trace_s *mtr, int *ret_nodes);
+extern void TopofyNewCM(struct cm_s *cm, struct trace_s *mtr);
+extern void Transmogrify(struct trace_s *mtr, char *aseq, struct trace_s **ret_tr, struct trmem_s **ret_pool);
+extern void EasyModelmaker(char **aseq, AINFO *ainfo, int nseq, struct prior_s *prior,
+ double gapthresh, int use_rf,
+ struct cm_s **ret_cm, struct trace_s **ret_mtr);
+
+/*
+ * from prior.c
+ */
+extern int DefaultPrior(struct prior_s **ret_prior);
+extern int WritePrior(FILE *fp, struct prior_s *prior);
+extern int ReadPrior(FILE *fp, struct prior_s **ret_prior);
+extern void NormalizePrior(struct prior_s *prior);
+
+/*
+ * from probify.c
+ */
+extern void ProbifyCM(struct cm_s *cm, struct prior_s *prior);
+extern void ProbifyTransitionMatrix(double tmx[STATETYPES][STATETYPES],int from_node,
+ int to_node, struct prior_s *prior);
+extern void ProbifySingletEmission(double emvec[ALPHASIZE], int statetype, struct prior_s *prior);
+extern void ProbifyPairEmission(double emx[ALPHASIZE][ALPHASIZE], struct prior_s *prior);
+
+/*
+ * from save.c
+ */
+extern int WriteCM(FILE *fp, struct cm_s *cm);
+extern int WriteBinaryCM(FILE *fp, struct cm_s *cm);
+extern int ReadCM(char *filename, struct cm_s **ret_cm);
+
+/* from scorestack.c
+ */
+extern int ReportScanHit(int left, int right, double score, int (*print_hit)(int,int,double));
+
+/* from smallviterbi.c
+ */
+extern int SmallViterbiAlign(struct istate_s *icm, int statenum, char *seq,
+ double *ret_score, struct trace_s **ret_trace);
+
+/*
+ * from structs.c
+ *
+ * Implementation of data structures: trees, stacks, and linked lists
+ */
+extern int StatetypeIndex(int type);
+extern int UniqueStatetype(int nodetype, int stidx);
+extern struct m2ali_s *Init_m2ali(void);
+extern void Push_m2ali(struct m2ali_s *stack, int nodeidx, int type, struct align_s *after);
+extern int Pop_m2ali(struct m2ali_s *stack, int *ret_nodeidx, int *ret_type,
+ struct align_s **ret_after);
+extern void Free_m2ali( struct m2ali_s *stack );
+
+extern struct t2ali_s *Init_t2ali(void);
+extern void Push_t2ali(struct t2ali_s *stack, struct trace_s *tracenode, struct align_s *after);
+extern int Pop_t2ali(struct t2ali_s *stack, struct trace_s **ret_tracenode,
+ struct align_s **ret_after);
+extern void Free_t2ali( struct t2ali_s *stack );
+
+extern struct align_s *Init_align(void);
+extern struct align_s *Insafter_align(int pos, char sym, char ss, int nodeidx, int type,
+ struct align_s *after);
+extern void Delafter_align(struct align_s *after);
+extern void Free_align(struct align_s *head);
+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 int FreeIntStack( struct intstack_s *stack );
+
+
+/*
+ * from trace.c
+ */
+extern void InitTrace(struct trace_s **ret_new, struct trmem_s **ret_pool);
+extern struct trace_s *AttachTrace(struct trace_s *parent, struct trmem_s *pool,
+ int emitl, int emitr,
+ int nodeidx, int type);
+extern void FreeTrace(struct trace_s *tr, struct trmem_s *pool);
+extern void DeleteTracenode(struct trace_s *oldtr, struct trmem_s *pool);
+extern void InitTracepool(struct trmem_s **ret_pool);
+extern struct trace_s *PopTracepool(struct trmem_s *pool);
+extern void FreeTracepool(struct trmem_s *pool);
+extern struct tracestack_s *InitTracestack(void);
+extern void PushTracestack(struct tracestack_s *stack, struct trace_s *node);
+extern struct trace_s *PopTracestack(struct tracestack_s *stack);
+extern void FreeTracestack(struct tracestack_s *stack);
+extern int TraceCount(struct cm_s *cm, char *seq, double weight, struct trace_s *tr);
+extern int TraceCountPrior(struct cm_s *cm, struct prior_s *prior, char *seq,
+ double weight, struct trace_s *tr);
+
+extern double TraceScore(struct cm_s *cm, char *seq, struct trace_s *tr);
+
+/*
+ * from viterbi.c
+ */
+extern int ViterbiAlign(struct istate_s *cm, int statenum, char *seq,
+ double *ret_score, struct trace_s **ret_trace);
+
+
+
+
diff --git a/gcode.cilnuc b/gcode.cilnuc
new file mode 100644
index 0000000..fe61605
--- /dev/null
+++ b/gcode.cilnuc
@@ -0,0 +1,6 @@
+# Ciliate, Dasycladacean, & Hexamita Nuclear translation codes
+# Format: <Codon> <3-letter AA abreviation> <One letter AA abrev>
+
+TAR Gln Q
+
+
diff --git a/gcode.echdmito b/gcode.echdmito
new file mode 100644
index 0000000..65649f3
--- /dev/null
+++ b/gcode.echdmito
@@ -0,0 +1,6 @@
+# Echinoderm mitochondrial translation codes
+# Format: <Codon> <3-letter AA abreviation> <One letter AA abrev>
+
+TGA Trp W
+AGR Ser S
+AAA Asn N
diff --git a/gcode.invmito b/gcode.invmito
new file mode 100644
index 0000000..dc14fec
--- /dev/null
+++ b/gcode.invmito
@@ -0,0 +1,7 @@
+# Invertebrate mitochondrial translation codes
+# Format: <Codon> <3-letter AA abreviation> <One letter AA abrev>
+
+TGA Trp W
+ATA Met M
+AGR Ser S
+
diff --git a/gcode.othmito b/gcode.othmito
new file mode 100644
index 0000000..6358f8a
--- /dev/null
+++ b/gcode.othmito
@@ -0,0 +1,4 @@
+# Mold, Protozoan, & Coelenterate mitochondrial translation codes
+# Format: <Codon> <3-letter AA abreviation> <One letter AA abrev>
+
+TGA Trp W
diff --git a/gcode.vertmito b/gcode.vertmito
new file mode 100644
index 0000000..061b0c8
--- /dev/null
+++ b/gcode.vertmito
@@ -0,0 +1,7 @@
+# Vertebrate mitochondrial translation codes
+# Format: <Codon> <3-letter AA abreviation> <One letter AA abrev>
+
+TGA Trp W
+ATA Met M
+AGR Stp *
+
diff --git a/gcode.ystmito b/gcode.ystmito
new file mode 100644
index 0000000..57a063e
--- /dev/null
+++ b/gcode.ystmito
@@ -0,0 +1,7 @@
+# Yeast mitochondrial translation codes
+# Format: <Codon> <3-letter AA abreviation> <One letter AA abrev>
+
+TGA Trp W
+ATA Met M
+CTN Thr T
+
diff --git a/getopt.c b/getopt.c
new file mode 100644
index 0000000..67dd96d
--- /dev/null
+++ b/getopt.c
@@ -0,0 +1,219 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#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;
+
+ /* Check to see if we've run out of options.
+ */
+ if (optind >= argc || 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.
+ */
+ 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.
+ */
+ /* full option */
+ if (optptr == NULL && strncmp(argv[optind], "--", 2) == 0)
+ {
+ optptr = NULL; /* full options can't concantenate */
+ 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 (nmatch > 1)
+ 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 != ARG_NONE)
+ {
+ if (optind+1 >= argc)
+ Die("Option %s requires an argument\n%s", opt[opti].name, usage);
+ *ret_optarg = argv[optind+1];
+ optind+=2;
+ }
+ else /* ARG_NONE */
+ {
+ *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 != ARG_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 /* ARG_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 != ARG_NONE)
+ {
+ if (opt[opti].argtype == ARG_INT && ! IsInt(*ret_optarg))
+ Die("Option %s requires an integer argument\n%s",
+ opt[opti].name, usage);
+ else if (opt[opti].argtype == ARG_FLOAT && ! IsReal(*ret_optarg))
+ Die("Option %s requires a numerical argument\n%s",
+ opt[opti].name, usage);
+ else if (opt[opti].argtype == ARG_CHAR && strlen(*ret_optarg) != 1)
+ Die("Option %s requires a single-character argument\n%s",
+ opt[opti].name, usage);
+ /* ARG_STRING is always ok, no type check necessary */
+ }
+
+ *ret_optind = optind;
+ return 1;
+}
+
+
+
+#ifdef GETOPT_TESTDRIVER
+
+struct opt_s OPTIONS[] = {
+ { "--test1", FALSE, ARG_INT },
+ { "--test2", FALSE, ARG_FLOAT },
+ { "--test3", FALSE, ARG_STRING },
+ { "--test4", FALSE, ARG_CHAR },
+ { "-a", TRUE, ARG_NONE },
+ { "-b", TRUE, ARG_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("index: %d name: %s argument: %s\n",
+ optind, optname, optarg);
+ }
+}
+
+#endif /*GETOPT_TESTDRIVER*/
diff --git a/gnuregex.c b/gnuregex.c
new file mode 100644
index 0000000..4cc9a63
--- /dev/null
+++ b/gnuregex.c
@@ -0,0 +1,4933 @@
+#ifndef lint /* SRE: lint *hates* this code! */
+/* This is the GNU regular expression library.
+ * I've modified it for portability and clarity (!).
+ * "SRE" comments flag the changes I've made.
+ * Thanks to the GNU folks for providing this code!
+ * SRE, Sun Jan 7 09:48:26 1996
+ */
+
+/* Extended regular expression matching and search library,
+ version 0.12.
+ (Implements POSIX draft P10003.2/D11.2, except for
+ internationalization features.)
+
+ Copyright (C) 1993 Free Software Foundation, Inc.
+
+ 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+/* AIX requires this to be the first thing in the file. */
+#if defined (_AIX) && !defined (REGEX_MALLOC)
+ #pragma alloca
+#endif
+
+#define _GNU_SOURCE
+
+/* We need this for `regex.h', and perhaps for the Emacs include files. */
+#include <sys/types.h>
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* SRE: removed ifdef emacs; removed if HAVE_STRING_H; removed STDC_HEADERS */
+#include <string.h>
+#include <stdlib.h>
+
+#ifndef bcmp
+#define bcmp(s1, s2, n) memcmp ((s1), (s2), (n))
+#endif
+#ifndef bcopy
+#define bcopy(s, d, n) memcpy ((d), (s), (n))
+#endif
+#ifndef bzero
+#define bzero(s, n) memset ((s), 0, (n))
+#endif
+
+
+/* Define the syntax stuff for \<, \>, etc. */
+
+/* This must be nonzero for the wordchar and notwordchar pattern
+ commands in re_match_2. */
+#ifndef Sword
+#define Sword 1
+#endif
+
+#ifdef SYNTAX_TABLE
+
+extern char *re_syntax_table;
+
+#else /* not SYNTAX_TABLE */
+
+/* How many characters in the character set. */
+#define CHAR_SET_SIZE 256
+
+static char re_syntax_table[CHAR_SET_SIZE];
+
+static void
+init_syntax_once ()
+{
+ register int c;
+ static int done = 0;
+
+ if (done)
+ return;
+
+ bzero (re_syntax_table, sizeof re_syntax_table);
+
+ for (c = 'a'; c <= 'z'; c++)
+ re_syntax_table[c] = Sword;
+
+ for (c = 'A'; c <= 'Z'; c++)
+ re_syntax_table[c] = Sword;
+
+ for (c = '0'; c <= '9'; c++)
+ re_syntax_table[c] = Sword;
+
+ re_syntax_table['_'] = Sword;
+
+ done = 1;
+}
+
+#endif /* not SYNTAX_TABLE */
+
+#define SYNTAX(c) re_syntax_table[c]
+
+
+
+/* Get the interface, including the syntax bits. */
+#include "gnuregex.h"
+
+/* isalpha etc. are used for the character classes. */
+#include <ctype.h>
+
+#ifndef isascii
+#define isascii(c) 1
+#endif
+
+#ifdef isblank
+#define ISBLANK(c) (isascii (c) && isblank (c))
+#else
+#define ISBLANK(c) ((c) == ' ' || (c) == '\t')
+#endif
+#ifdef isgraph
+#define ISGRAPH(c) (isascii (c) && isgraph (c))
+#else
+#define ISGRAPH(c) (isascii (c) && isprint (c) && !isspace (c))
+#endif
+
+#define ISPRINT(c) (isascii (c) && isprint (c))
+#define ISDIGIT(c) (isascii (c) && isdigit (c))
+#define ISALNUM(c) (isascii (c) && isalnum (c))
+#define ISALPHA(c) (isascii (c) && isalpha (c))
+#define ISCNTRL(c) (isascii (c) && iscntrl (c))
+#define ISLOWER(c) (isascii (c) && islower (c))
+#define ISPUNCT(c) (isascii (c) && ispunct (c))
+#define ISSPACE(c) (isascii (c) && isspace (c))
+#define ISUPPER(c) (isascii (c) && isupper (c))
+#define ISXDIGIT(c) (isascii (c) && isxdigit (c))
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+/* We remove any previous definition of `SIGN_EXTEND_CHAR',
+ since ours (we hope) works properly with all combinations of
+ machines, compilers, `char' and `unsigned char' argument types.
+ (Per Bothner suggested the basic approach.) */
+#undef SIGN_EXTEND_CHAR
+#if __STDC__
+#define SIGN_EXTEND_CHAR(c) ((signed char) (c))
+#else /* not __STDC__ */
+/* As in Harbison and Steele. */
+#define SIGN_EXTEND_CHAR(c) ((((unsigned char) (c)) ^ 128) - 128)
+#endif
+
+/* Should we use malloc or alloca? If REGEX_MALLOC is not defined, we
+ use `alloca' instead of `malloc'. This is because using malloc in
+ re_search* or re_match* could cause memory leaks when C-g is used in
+ Emacs; also, malloc is slower and causes storage fragmentation. On
+ the other hand, malloc is more portable, and easier to debug.
+
+ Because we sometimes use alloca, some routines have to be macros,
+ not functions -- `alloca'-allocated space disappears at the end of the
+ function it is called in. */
+
+#define REGEX_MALLOC /* SRE -- alloca not portable? */
+
+#ifdef REGEX_MALLOC
+
+#define REGEX_ALLOCATE malloc
+#define REGEX_REALLOCATE(source, osize, nsize) realloc (source, nsize)
+
+#else /* not REGEX_MALLOC */
+
+/* Emacs already defines alloca, sometimes. */
+#ifndef alloca
+
+/* Make alloca work the best possible way. */
+#ifdef __GNUC__
+#define alloca __builtin_alloca
+#else /* not __GNUC__ */
+#if HAVE_ALLOCA_H
+#include <alloca.h>
+#else /* not __GNUC__ or HAVE_ALLOCA_H */
+#ifndef _AIX /* Already did AIX, up at the top. */
+char *alloca ();
+#endif /* not _AIX */
+#endif /* not HAVE_ALLOCA_H */
+#endif /* not __GNUC__ */
+
+#endif /* not alloca */
+
+#define REGEX_ALLOCATE alloca
+
+/* Assumes a `char *destination' variable. */
+#define REGEX_REALLOCATE(source, osize, nsize) \
+ (destination = (char *) alloca (nsize), \
+ bcopy (source, destination, osize), \
+ destination)
+
+#endif /* not REGEX_MALLOC */
+
+
+/* True if `size1' is non-NULL and PTR is pointing anywhere inside
+ `string1' or just past its end. This works if PTR is NULL, which is
+ a good thing. */
+#define FIRST_STRING_P(ptr) \
+ (size1 && string1 <= (ptr) && (ptr) <= string1 + size1)
+
+/* (Re)Allocate N items of type T using malloc, or fail. */
+#define TALLOC(n, t) ((t *) malloc ((n) * sizeof (t)))
+#define RETALLOC(addr, n, t) ((addr) = (t *) realloc (addr, (n) * sizeof (t)))
+#define REGEX_TALLOC(n, t) ((t *) REGEX_ALLOCATE ((n) * sizeof (t)))
+
+#define BYTEWIDTH 8 /* In bits. */
+
+#define STREQ(s1, s2) ((strcmp (s1, s2) == 0))
+
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+
+typedef char boolean;
+#define false 0
+#define true 1
+
+/* These are the command codes that appear in compiled regular
+ expressions. Some opcodes are followed by argument bytes. A
+ command code can specify any interpretation whatsoever for its
+ arguments. Zero bytes may appear in the compiled regular expression.
+
+ The value of `exactn' is needed in search.c (search_buffer) in Emacs.
+ So regex.h defines a symbol `RE_EXACTN_VALUE' to be 1; the value of
+ `exactn' we use here must also be 1. */
+
+typedef enum
+{
+ no_op = 0,
+
+ /* Followed by one byte giving n, then by n literal bytes. */
+ exactn = 1,
+
+ /* Matches any (more or less) character. */
+ anychar,
+
+ /* Matches any one char belonging to specified set. First
+ following byte is number of bitmap bytes. Then come bytes
+ for a bitmap saying which chars are in. Bits in each byte
+ are ordered low-bit-first. A character is in the set if its
+ bit is 1. A character too large to have a bit in the map is
+ automatically not in the set. */
+ charset,
+
+ /* Same parameters as charset, but match any character that is
+ not one of those specified. */
+ charset_not,
+
+ /* Start remembering the text that is matched, for storing in a
+ register. Followed by one byte with the register number, in
+ the range 0 to one less than the pattern buffer's re_nsub
+ field. Then followed by one byte with the number of groups
+ inner to this one. (This last has to be part of the
+ start_memory only because we need it in the on_failure_jump
+ of re_match_2.) */
+ start_memory,
+
+ /* Stop remembering the text that is matched and store it in a
+ memory register. Followed by one byte with the register
+ number, in the range 0 to one less than `re_nsub' in the
+ pattern buffer, and one byte with the number of inner groups,
+ just like `start_memory'. (We need the number of inner
+ groups here because we don't have any easy way of finding the
+ corresponding start_memory when we're at a stop_memory.) */
+ stop_memory,
+
+ /* Match a duplicate of something remembered. Followed by one
+ byte containing the register number. */
+ duplicate,
+
+ /* Fail unless at beginning of line. */
+ begline,
+
+ /* Fail unless at end of line. */
+ endline,
+
+ /* Succeeds if at beginning of buffer (if emacs) or at beginning
+ of string to be matched (if not). */
+ begbuf,
+
+ /* Analogously, for end of buffer/string. */
+ endbuf,
+
+ /* Followed by two byte relative address to which to jump. */
+ jump,
+
+ /* Same as jump, but marks the end of an alternative. */
+ jump_past_alt,
+
+ /* Followed by two-byte relative address of place to resume at
+ in case of failure. */
+ on_failure_jump,
+
+ /* Like on_failure_jump, but pushes a placeholder instead of the
+ current string position when executed. */
+ on_failure_keep_string_jump,
+
+ /* Throw away latest failure point and then jump to following
+ two-byte relative address. */
+ pop_failure_jump,
+
+ /* Change to pop_failure_jump if know won't have to backtrack to
+ match; otherwise change to jump. This is used to jump
+ back to the beginning of a repeat. If what follows this jump
+ clearly won't match what the repeat does, such that we can be
+ sure that there is no use backtracking out of repetitions
+ already matched, then we change it to a pop_failure_jump.
+ Followed by two-byte address. */
+ maybe_pop_jump,
+
+ /* Jump to following two-byte address, and push a dummy failure
+ point. This failure point will be thrown away if an attempt
+ is made to use it for a failure. A `+' construct makes this
+ before the first repeat. Also used as an intermediary kind
+ of jump when compiling an alternative. */
+ dummy_failure_jump,
+
+ /* Push a dummy failure point and continue. Used at the end of
+ alternatives. */
+ push_dummy_failure,
+
+ /* Followed by two-byte relative address and two-byte number n.
+ After matching N times, jump to the address upon failure. */
+ succeed_n,
+
+ /* Followed by two-byte relative address, and two-byte number n.
+ Jump to the address N times, then fail. */
+ jump_n,
+
+ /* Set the following two-byte relative address to the
+ subsequent two-byte number. The address *includes* the two
+ bytes of number. */
+ set_number_at,
+
+ wordchar, /* Matches any word-constituent character. */
+ notwordchar, /* Matches any char that is not a word-constituent. */
+
+ wordbeg, /* Succeeds if at word beginning. */
+ wordend, /* Succeeds if at word end. */
+
+ wordbound, /* Succeeds if at a word boundary. */
+ notwordbound /* Succeeds if not at a word boundary. */
+
+#ifdef emacs
+ ,before_dot, /* Succeeds if before point. */
+ at_dot, /* Succeeds if at point. */
+ after_dot, /* Succeeds if after point. */
+
+ /* Matches any character whose syntax is specified. Followed by
+ a byte which contains a syntax code, e.g., Sword. */
+ syntaxspec,
+
+ /* Matches any character whose syntax is not that specified. */
+ notsyntaxspec
+#endif /* emacs */
+} re_opcode_t;
+
+/* Common operations on the compiled pattern. */
+
+/* Store NUMBER in two contiguous bytes starting at DESTINATION. */
+
+#define STORE_NUMBER(destination, number) \
+ do { \
+ (destination)[0] = (number) & 0377; \
+ (destination)[1] = (number) >> 8; \
+ } while (0)
+
+/* Same as STORE_NUMBER, except increment DESTINATION to
+ the byte after where the number is stored. Therefore, DESTINATION
+ must be an lvalue. */
+
+#define STORE_NUMBER_AND_INCR(destination, number) \
+ do { \
+ STORE_NUMBER (destination, number); \
+ (destination) += 2; \
+ } while (0)
+
+/* Put into DESTINATION a number stored in two contiguous bytes starting
+ at SOURCE. */
+
+#define EXTRACT_NUMBER(destination, source) \
+ do { \
+ (destination) = *(source) & 0377; \
+ (destination) += SIGN_EXTEND_CHAR (*((source) + 1)) << 8; \
+ } while (0)
+
+#ifdef DEBUG
+static void
+extract_number (dest, source)
+ int *dest;
+ unsigned char *source;
+{
+ int temp = SIGN_EXTEND_CHAR (*(source + 1));
+ *dest = *source & 0377;
+ *dest += temp << 8;
+}
+
+#ifndef EXTRACT_MACROS /* To debug the macros. */
+#undef EXTRACT_NUMBER
+#define EXTRACT_NUMBER(dest, src) extract_number (&dest, src)
+#endif /* not EXTRACT_MACROS */
+
+#endif /* DEBUG */
+
+/* Same as EXTRACT_NUMBER, except increment SOURCE to after the number.
+ SOURCE must be an lvalue. */
+
+#define EXTRACT_NUMBER_AND_INCR(destination, source) \
+ do { \
+ EXTRACT_NUMBER (destination, source); \
+ (source) += 2; \
+ } while (0)
+
+#ifdef DEBUG
+static void
+extract_number_and_incr (destination, source)
+ int *destination;
+ unsigned char **source;
+{
+ extract_number (destination, *source);
+ *source += 2;
+}
+
+#ifndef EXTRACT_MACROS
+#undef EXTRACT_NUMBER_AND_INCR
+#define EXTRACT_NUMBER_AND_INCR(dest, src) \
+ extract_number_and_incr (&dest, &src)
+#endif /* not EXTRACT_MACROS */
+
+#endif /* DEBUG */
+
+/* If DEBUG is defined, Regex prints many voluminous messages about what
+ it is doing (if the variable `debug' is nonzero). If linked with the
+ main program in `iregex.c', you can enter patterns and strings
+ interactively. And if linked with the main program in `main.c' and
+ the other test files, you can run the already-written tests. */
+
+#ifdef DEBUG
+
+/* We use standard I/O for debugging. */
+#include <stdio.h>
+
+/* It is useful to test things that ``must'' be true when debugging. */
+#include <assert.h>
+
+static int debug = 0;
+
+#define DEBUG_STATEMENT(e) e
+#define DEBUG_PRINT1(x) if (debug) printf (x)
+#define DEBUG_PRINT2(x1, x2) if (debug) printf (x1, x2)
+#define DEBUG_PRINT3(x1, x2, x3) if (debug) printf (x1, x2, x3)
+#define DEBUG_PRINT4(x1, x2, x3, x4) if (debug) printf (x1, x2, x3, x4)
+#define DEBUG_PRINT_COMPILED_PATTERN(p, s, e) \
+ if (debug) print_partial_compiled_pattern (s, e)
+#define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2) \
+ if (debug) print_double_string (w, s1, sz1, s2, sz2)
+
+
+extern void printchar ();
+
+/* Print the fastmap in human-readable form. */
+
+void
+print_fastmap (fastmap)
+ char *fastmap;
+{
+ unsigned was_a_range = 0;
+ unsigned i = 0;
+
+ while (i < (1 << BYTEWIDTH))
+ {
+ if (fastmap[i++])
+ {
+ was_a_range = 0;
+ printchar (i - 1);
+ while (i < (1 << BYTEWIDTH) && fastmap[i])
+ {
+ was_a_range = 1;
+ i++;
+ }
+ if (was_a_range)
+ {
+ printf ("-");
+ printchar (i - 1);
+ }
+ }
+ }
+ putchar ('\n');
+}
+
+
+/* Print a compiled pattern string in human-readable form, starting at
+ the START pointer into it and ending just before the pointer END. */
+
+void
+print_partial_compiled_pattern (start, end)
+ unsigned char *start;
+ unsigned char *end;
+{
+ int mcnt, mcnt2;
+ unsigned char *p = start;
+ unsigned char *pend = end;
+
+ if (start == NULL)
+ {
+ printf ("(null)\n");
+ return;
+ }
+
+ /* Loop over pattern commands. */
+ while (p < pend)
+ {
+ switch ((re_opcode_t) *p++)
+ {
+ case no_op:
+ printf ("/no_op");
+ break;
+
+ case exactn:
+ mcnt = *p++;
+ printf ("/exactn/%d", mcnt);
+ do
+ {
+ putchar ('/');
+ printchar (*p++);
+ }
+ while (--mcnt);
+ break;
+
+ case start_memory:
+ mcnt = *p++;
+ printf ("/start_memory/%d/%d", mcnt, *p++);
+ break;
+
+ case stop_memory:
+ mcnt = *p++;
+ printf ("/stop_memory/%d/%d", mcnt, *p++);
+ break;
+
+ case duplicate:
+ printf ("/duplicate/%d", *p++);
+ break;
+
+ case anychar:
+ printf ("/anychar");
+ break;
+
+ case charset:
+ case charset_not:
+ {
+ register int c;
+
+ printf ("/charset%s",
+ (re_opcode_t) *(p - 1) == charset_not ? "_not" : "");
+
+ assert (p + *p < pend);
+
+ for (c = 0; c < *p; c++)
+ {
+ unsigned bit;
+ unsigned char map_byte = p[1 + c];
+
+ putchar ('/');
+
+ for (bit = 0; bit < BYTEWIDTH; bit++)
+ if (map_byte & (1 << bit))
+ printchar (c * BYTEWIDTH + bit);
+ }
+ p += 1 + *p;
+ break;
+ }
+
+ case begline:
+ printf ("/begline");
+ break;
+
+ case endline:
+ printf ("/endline");
+ break;
+
+ case on_failure_jump:
+ extract_number_and_incr (&mcnt, &p);
+ printf ("/on_failure_jump/0/%d", mcnt);
+ break;
+
+ case on_failure_keep_string_jump:
+ extract_number_and_incr (&mcnt, &p);
+ printf ("/on_failure_keep_string_jump/0/%d", mcnt);
+ break;
+
+ case dummy_failure_jump:
+ extract_number_and_incr (&mcnt, &p);
+ printf ("/dummy_failure_jump/0/%d", mcnt);
+ break;
+
+ case push_dummy_failure:
+ printf ("/push_dummy_failure");
+ break;
+
+ case maybe_pop_jump:
+ extract_number_and_incr (&mcnt, &p);
+ printf ("/maybe_pop_jump/0/%d", mcnt);
+ break;
+
+ case pop_failure_jump:
+ extract_number_and_incr (&mcnt, &p);
+ printf ("/pop_failure_jump/0/%d", mcnt);
+ break;
+
+ case jump_past_alt:
+ extract_number_and_incr (&mcnt, &p);
+ printf ("/jump_past_alt/0/%d", mcnt);
+ break;
+
+ case jump:
+ extract_number_and_incr (&mcnt, &p);
+ printf ("/jump/0/%d", mcnt);
+ break;
+
+ case succeed_n:
+ extract_number_and_incr (&mcnt, &p);
+ extract_number_and_incr (&mcnt2, &p);
+ printf ("/succeed_n/0/%d/0/%d", mcnt, mcnt2);
+ break;
+
+ case jump_n:
+ extract_number_and_incr (&mcnt, &p);
+ extract_number_and_incr (&mcnt2, &p);
+ printf ("/jump_n/0/%d/0/%d", mcnt, mcnt2);
+ break;
+
+ case set_number_at:
+ extract_number_and_incr (&mcnt, &p);
+ extract_number_and_incr (&mcnt2, &p);
+ printf ("/set_number_at/0/%d/0/%d", mcnt, mcnt2);
+ break;
+
+ case wordbound:
+ printf ("/wordbound");
+ break;
+
+ case notwordbound:
+ printf ("/notwordbound");
+ break;
+
+ case wordbeg:
+ printf ("/wordbeg");
+ break;
+
+ case wordend:
+ printf ("/wordend");
+
+#ifdef emacs
+ case before_dot:
+ printf ("/before_dot");
+ break;
+
+ case at_dot:
+ printf ("/at_dot");
+ break;
+
+ case after_dot:
+ printf ("/after_dot");
+ break;
+
+ case syntaxspec:
+ printf ("/syntaxspec");
+ mcnt = *p++;
+ printf ("/%d", mcnt);
+ break;
+
+ case notsyntaxspec:
+ printf ("/notsyntaxspec");
+ mcnt = *p++;
+ printf ("/%d", mcnt);
+ break;
+#endif /* emacs */
+
+ case wordchar:
+ printf ("/wordchar");
+ break;
+
+ case notwordchar:
+ printf ("/notwordchar");
+ break;
+
+ case begbuf:
+ printf ("/begbuf");
+ break;
+
+ case endbuf:
+ printf ("/endbuf");
+ break;
+
+ default:
+ printf ("?%d", *(p-1));
+ }
+ }
+ printf ("/\n");
+}
+
+
+void
+print_compiled_pattern (bufp)
+ struct re_pattern_buffer *bufp;
+{
+ unsigned char *buffer = bufp->buffer;
+
+ print_partial_compiled_pattern (buffer, buffer + bufp->used);
+ printf ("%d bytes used/%d bytes allocated.\n", bufp->used, bufp->allocated);
+
+ if (bufp->fastmap_accurate && bufp->fastmap)
+ {
+ printf ("fastmap: ");
+ print_fastmap (bufp->fastmap);
+ }
+
+ printf ("re_nsub: %d\t", bufp->re_nsub);
+ printf ("regs_alloc: %d\t", bufp->regs_allocated);
+ printf ("can_be_null: %d\t", bufp->can_be_null);
+ printf ("newline_anchor: %d\n", bufp->newline_anchor);
+ printf ("no_sub: %d\t", bufp->no_sub);
+ printf ("not_bol: %d\t", bufp->not_bol);
+ printf ("not_eol: %d\t", bufp->not_eol);
+ printf ("syntax: %d\n", bufp->syntax);
+ /* Perhaps we should print the translate table? */
+}
+
+
+void
+print_double_string (where, string1, size1, string2, size2)
+ char *where;
+ char *string1;
+ char *string2;
+ int size1;
+ int size2;
+{
+ unsigned this_char;
+
+ if (where == NULL)
+ printf ("(null)");
+ else
+ {
+ if (FIRST_STRING_P (where))
+ {
+ for (this_char = where - string1; this_char < size1; this_char++)
+ printchar (string1[this_char]);
+
+ where = string2;
+ }
+
+ for (this_char = where - string2; this_char < size2; this_char++)
+ printchar (string2[this_char]);
+ }
+}
+
+#else /* not DEBUG */
+
+#undef assert
+#define assert(e)
+
+#define DEBUG_STATEMENT(e)
+#define DEBUG_PRINT1(x)
+#define DEBUG_PRINT2(x1, x2)
+#define DEBUG_PRINT3(x1, x2, x3)
+#define DEBUG_PRINT4(x1, x2, x3, x4)
+#define DEBUG_PRINT_COMPILED_PATTERN(p, s, e)
+#define DEBUG_PRINT_DOUBLE_STRING(w, s1, sz1, s2, sz2)
+
+#endif /* not DEBUG */
+
+/* Set by `re_set_syntax' to the current regexp syntax to recognize. Can
+ also be assigned to arbitrarily: each pattern buffer stores its own
+ syntax, so it can be changed between regex compilations. */
+reg_syntax_t re_syntax_options = RE_SYNTAX_EMACS;
+
+
+/* Specify the precise syntax of regexps for compilation. This provides
+ for compatibility for various utilities which historically have
+ different, incompatible syntaxes.
+
+ The argument SYNTAX is a bit mask comprised of the various bits
+ defined in regex.h. We return the old syntax. */
+
+reg_syntax_t
+re_set_syntax (syntax)
+ reg_syntax_t syntax;
+{
+ reg_syntax_t ret = re_syntax_options;
+
+ re_syntax_options = syntax;
+ return ret;
+}
+
+/* This table gives an error message for each of the error codes listed
+ in regex.h. Obviously the order here has to be same as there. */
+
+static char *re_error_msg[] =
+ { NULL, /* REG_NOERROR */
+ "No match", /* REG_NOMATCH */
+ "Invalid regular expression", /* REG_BADPAT */
+ "Invalid collation character", /* REG_ECOLLATE */
+ "Invalid character class name", /* REG_ECTYPE */
+ "Trailing backslash", /* REG_EESCAPE */
+ "Invalid back reference", /* REG_ESUBREG */
+ "Unmatched [ or [^", /* REG_EBRACK */
+ "Unmatched ( or \\(", /* REG_EPAREN */
+ "Unmatched \\{", /* REG_EBRACE */
+ "Invalid content of \\{\\}", /* REG_BADBR */
+ "Invalid range end", /* REG_ERANGE */
+ "Memory exhausted", /* REG_ESPACE */
+ "Invalid preceding regular expression", /* REG_BADRPT */
+ "Premature end of regular expression", /* REG_EEND */
+ "Regular expression too big", /* REG_ESIZE */
+ "Unmatched ) or \\)", /* REG_ERPAREN */
+ };
+
+/* Subroutine declarations and macros for regex_compile. */
+
+static void store_op1 (), store_op2 ();
+static void insert_op1 (), insert_op2 ();
+static boolean at_begline_loc_p (), at_endline_loc_p ();
+static boolean group_in_compile_stack ();
+static reg_errcode_t compile_range ();
+
+/* Fetch the next character in the uncompiled pattern---translating it
+ if necessary. Also cast from a signed character in the constant
+ string passed to us by the user to an unsigned char that we can use
+ as an array index (in, e.g., `translate'). */
+#define PATFETCH(c) \
+ do {if (p == pend) return REG_EEND; \
+ c = (unsigned char) *p++; \
+ if (translate) c = translate[c]; \
+ } while (0)
+
+/* Fetch the next character in the uncompiled pattern, with no
+ translation. */
+#define PATFETCH_RAW(c) \
+ do {if (p == pend) return REG_EEND; \
+ c = (unsigned char) *p++; \
+ } while (0)
+
+/* Go backwards one character in the pattern. */
+#define PATUNFETCH p--
+
+
+/* If `translate' is non-null, return translate[D], else just D. We
+ cast the subscript to translate because some data is declared as
+ `char *', to avoid warnings when a string constant is passed. But
+ when we use a character as a subscript we must make it unsigned. */
+#define TRANSLATE(d) (translate ? translate[(unsigned char) (d)] : (d))
+
+
+/* Macros for outputting the compiled pattern into `buffer'. */
+
+/* If the buffer isn't allocated when it comes in, use this. */
+#define INIT_BUF_SIZE 32
+
+/* Make sure we have at least N more bytes of space in buffer. */
+#define GET_BUFFER_SPACE(n) \
+ while (b - bufp->buffer + (n) > bufp->allocated) \
+ EXTEND_BUFFER ()
+
+/* Make sure we have one more byte of buffer space and then add C to it. */
+#define BUF_PUSH(c) \
+ do { \
+ GET_BUFFER_SPACE (1); \
+ *b++ = (unsigned char) (c); \
+ } while (0)
+
+
+/* Ensure we have two more bytes of buffer space and then append C1 and C2. */
+#define BUF_PUSH_2(c1, c2) \
+ do { \
+ GET_BUFFER_SPACE (2); \
+ *b++ = (unsigned char) (c1); \
+ *b++ = (unsigned char) (c2); \
+ } while (0)
+
+
+/* As with BUF_PUSH_2, except for three bytes. */
+#define BUF_PUSH_3(c1, c2, c3) \
+ do { \
+ GET_BUFFER_SPACE (3); \
+ *b++ = (unsigned char) (c1); \
+ *b++ = (unsigned char) (c2); \
+ *b++ = (unsigned char) (c3); \
+ } while (0)
+
+
+/* Store a jump with opcode OP at LOC to location TO. We store a
+ relative address offset by the three bytes the jump itself occupies. */
+#define STORE_JUMP(op, loc, to) \
+ store_op1 (op, loc, (to) - (loc) - 3)
+
+/* Likewise, for a two-argument jump. */
+#define STORE_JUMP2(op, loc, to, arg) \
+ store_op2 (op, loc, (to) - (loc) - 3, arg)
+
+/* Like `STORE_JUMP', but for inserting. Assume `b' is the buffer end. */
+#define INSERT_JUMP(op, loc, to) \
+ insert_op1 (op, loc, (to) - (loc) - 3, b)
+
+/* Like `STORE_JUMP2', but for inserting. Assume `b' is the buffer end. */
+#define INSERT_JUMP2(op, loc, to, arg) \
+ insert_op2 (op, loc, (to) - (loc) - 3, arg, b)
+
+
+/* This is not an arbitrary limit: the arguments which represent offsets
+ into the pattern are two bytes long. So if 2^16 bytes turns out to
+ be too small, many things would have to change. */
+#define MAX_BUF_SIZE (1L << 16)
+
+
+/* Extend the buffer by twice its current size via realloc and
+ reset the pointers that pointed into the old block to point to the
+ correct places in the new one. If extending the buffer results in it
+ being larger than MAX_BUF_SIZE, then flag memory exhausted. */
+#define EXTEND_BUFFER() \
+ do { \
+ unsigned char *old_buffer = bufp->buffer; \
+ if (bufp->allocated == MAX_BUF_SIZE) \
+ return REG_ESIZE; \
+ bufp->allocated <<= 1; \
+ if (bufp->allocated > MAX_BUF_SIZE) \
+ bufp->allocated = MAX_BUF_SIZE; \
+ bufp->buffer = (unsigned char *) realloc (bufp->buffer, bufp->allocated);\
+ if (bufp->buffer == NULL) \
+ return REG_ESPACE; \
+ /* If the buffer moved, move all the pointers into it. */ \
+ if (old_buffer != bufp->buffer) \
+ { \
+ b = (b - old_buffer) + bufp->buffer; \
+ begalt = (begalt - old_buffer) + bufp->buffer; \
+ if (fixup_alt_jump) \
+ fixup_alt_jump = (fixup_alt_jump - old_buffer) + bufp->buffer;\
+ if (laststart) \
+ laststart = (laststart - old_buffer) + bufp->buffer; \
+ if (pending_exact) \
+ pending_exact = (pending_exact - old_buffer) + bufp->buffer; \
+ } \
+ } while (0)
+
+
+/* Since we have one byte reserved for the register number argument to
+ {start,stop}_memory, the maximum number of groups we can report
+ things about is what fits in that byte. */
+#define MAX_REGNUM 255
+
+/* But patterns can have more than `MAX_REGNUM' registers. We just
+ ignore the excess. */
+typedef unsigned regnum_t;
+
+
+/* Macros for the compile stack. */
+
+/* Since offsets can go either forwards or backwards, this type needs to
+ be able to hold values from -(MAX_BUF_SIZE - 1) to MAX_BUF_SIZE - 1. */
+typedef int pattern_offset_t;
+
+typedef struct
+{
+ pattern_offset_t begalt_offset;
+ pattern_offset_t fixup_alt_jump;
+ pattern_offset_t inner_group_offset;
+ pattern_offset_t laststart_offset;
+ regnum_t regnum;
+} compile_stack_elt_t;
+
+
+typedef struct
+{
+ compile_stack_elt_t *stack;
+ unsigned size;
+ unsigned avail; /* Offset of next open position. */
+} compile_stack_type;
+
+
+#define INIT_COMPILE_STACK_SIZE 32
+
+#define COMPILE_STACK_EMPTY (compile_stack.avail == 0)
+#define COMPILE_STACK_FULL (compile_stack.avail == compile_stack.size)
+
+/* The next available element. */
+#define COMPILE_STACK_TOP (compile_stack.stack[compile_stack.avail])
+
+
+/* Set the bit for character C in a list. */
+#define SET_LIST_BIT(c) \
+ (b[((unsigned char) (c)) / BYTEWIDTH] \
+ |= 1 << (((unsigned char) c) % BYTEWIDTH))
+
+
+/* Get the next unsigned number in the uncompiled pattern. */
+#define GET_UNSIGNED_NUMBER(num) \
+ { if (p != pend) \
+ { \
+ PATFETCH (c); \
+ while (ISDIGIT (c)) \
+ { \
+ if (num < 0) \
+ num = 0; \
+ num = num * 10 + c - '0'; \
+ if (p == pend) \
+ break; \
+ PATFETCH (c); \
+ } \
+ } \
+ }
+
+#define CHAR_CLASS_MAX_LENGTH 6 /* Namely, `xdigit'. */
+
+#define IS_CHAR_CLASS(string) \
+ (STREQ (string, "alpha") || STREQ (string, "upper") \
+ || STREQ (string, "lower") || STREQ (string, "digit") \
+ || STREQ (string, "alnum") || STREQ (string, "xdigit") \
+ || STREQ (string, "space") || STREQ (string, "print") \
+ || STREQ (string, "punct") || STREQ (string, "graph") \
+ || STREQ (string, "cntrl") || STREQ (string, "blank"))
+
+/* `regex_compile' compiles PATTERN (of length SIZE) according to SYNTAX.
+ Returns one of error codes defined in `regex.h', or zero for success.
+
+ Assumes the `allocated' (and perhaps `buffer') and `translate'
+ fields are set in BUFP on entry.
+
+ If it succeeds, results are put in BUFP (if it returns an error, the
+ contents of BUFP are undefined):
+ `buffer' is the compiled pattern;
+ `syntax' is set to SYNTAX;
+ `used' is set to the length of the compiled pattern;
+ `fastmap_accurate' is zero;
+ `re_nsub' is the number of subexpressions in PATTERN;
+ `not_bol' and `not_eol' are zero;
+
+ The `fastmap' and `newline_anchor' fields are neither
+ examined nor set. */
+
+static reg_errcode_t
+regex_compile (pattern, size, syntax, bufp)
+ char *pattern;
+ int size;
+ reg_syntax_t syntax;
+ struct re_pattern_buffer *bufp;
+{
+ /* We fetch characters from PATTERN here. Even though PATTERN is
+ `char *' (i.e., signed), we declare these variables as unsigned, so
+ they can be reliably used as array indices. */
+ register unsigned char c, c1;
+
+ /* A random tempory spot in PATTERN. */
+ char *p1;
+
+ /* Points to the end of the buffer, where we should append. */
+ register unsigned char *b;
+
+ /* Keeps track of unclosed groups. */
+ compile_stack_type compile_stack;
+
+ /* Points to the current (ending) position in the pattern. */
+ char *p = pattern;
+ char *pend = pattern + size;
+
+ /* How to translate the characters in the pattern. */
+ char *translate = bufp->translate;
+
+ /* Address of the count-byte of the most recently inserted `exactn'
+ command. This makes it possible to tell if a new exact-match
+ character can be added to that command or if the character requires
+ a new `exactn' command. */
+ unsigned char *pending_exact = 0;
+
+ /* Address of start of the most recently finished expression.
+ This tells, e.g., postfix * where to find the start of its
+ operand. Reset at the beginning of groups and alternatives. */
+ unsigned char *laststart = 0;
+
+ /* Address of beginning of regexp, or inside of last group. */
+ unsigned char *begalt;
+
+ /* Place in the uncompiled pattern (i.e., the {) to
+ which to go back if the interval is invalid. */
+ char *beg_interval;
+
+ /* Address of the place where a forward jump should go to the end of
+ the containing expression. Each alternative of an `or' -- except the
+ last -- ends with a forward jump of this sort. */
+ unsigned char *fixup_alt_jump = 0;
+
+ /* Counts open-groups as they are encountered. Remembered for the
+ matching close-group on the compile stack, so the same register
+ number is put in the stop_memory as the start_memory. */
+ regnum_t regnum = 0;
+
+#ifdef DEBUG
+ DEBUG_PRINT1 ("\nCompiling pattern: ");
+ if (debug)
+ {
+ unsigned debug_count;
+
+ for (debug_count = 0; debug_count < size; debug_count++)
+ printchar (pattern[debug_count]);
+ putchar ('\n');
+ }
+#endif /* DEBUG */
+
+ /* Initialize the compile stack. */
+ compile_stack.stack = TALLOC (INIT_COMPILE_STACK_SIZE, compile_stack_elt_t);
+ if (compile_stack.stack == NULL)
+ return REG_ESPACE;
+
+ compile_stack.size = INIT_COMPILE_STACK_SIZE;
+ compile_stack.avail = 0;
+
+ /* Initialize the pattern buffer. */
+ bufp->syntax = syntax;
+ bufp->fastmap_accurate = 0;
+ bufp->not_bol = bufp->not_eol = 0;
+
+ /* Set `used' to zero, so that if we return an error, the pattern
+ printer (for debugging) will think there's no pattern. We reset it
+ at the end. */
+ bufp->used = 0;
+
+ /* Always count groups, whether or not bufp->no_sub is set. */
+ bufp->re_nsub = 0;
+
+#if !defined (emacs) && !defined (SYNTAX_TABLE)
+ /* Initialize the syntax table. */
+ init_syntax_once ();
+#endif
+
+ if (bufp->allocated == 0)
+ {
+ if (bufp->buffer)
+ { /* If zero allocated, but buffer is non-null, try to realloc
+ enough space. This loses if buffer's address is bogus, but
+ that is the user's responsibility. */
+ RETALLOC (bufp->buffer, INIT_BUF_SIZE, unsigned char);
+ }
+ else
+ { /* Caller did not allocate a buffer. Do it for them. */
+ bufp->buffer = TALLOC (INIT_BUF_SIZE, unsigned char);
+ }
+ if (!bufp->buffer) return REG_ESPACE;
+
+ bufp->allocated = INIT_BUF_SIZE;
+ }
+
+ begalt = b = bufp->buffer;
+
+ /* Loop through the uncompiled pattern until we're at the end. */
+ while (p != pend)
+ {
+ PATFETCH (c);
+
+ switch (c)
+ {
+ case '^':
+ {
+ if ( /* If at start of pattern, it's an operator. */
+ p == pattern + 1
+ /* If context independent, it's an operator. */
+ || syntax & RE_CONTEXT_INDEP_ANCHORS
+ /* Otherwise, depends on what's come before. */
+ || at_begline_loc_p (pattern, p, syntax))
+ BUF_PUSH (begline);
+ else
+ goto normal_char;
+ }
+ break;
+
+
+ case '$':
+ {
+ if ( /* If at end of pattern, it's an operator. */
+ p == pend
+ /* If context independent, it's an operator. */
+ || syntax & RE_CONTEXT_INDEP_ANCHORS
+ /* Otherwise, depends on what's next. */
+ || at_endline_loc_p (p, pend, syntax))
+ BUF_PUSH (endline);
+ else
+ goto normal_char;
+ }
+ break;
+
+
+ case '+':
+ case '?':
+ if ((syntax & RE_BK_PLUS_QM)
+ || (syntax & RE_LIMITED_OPS))
+ goto normal_char;
+ handle_plus:
+ case '*':
+ /* If there is no previous pattern... */
+ if (!laststart)
+ {
+ if (syntax & RE_CONTEXT_INVALID_OPS)
+ return REG_BADRPT;
+ else if (!(syntax & RE_CONTEXT_INDEP_OPS))
+ goto normal_char;
+ }
+
+ {
+ /* Are we optimizing this jump? */
+ boolean keep_string_p = false;
+
+ /* 1 means zero (many) matches is allowed. */
+ char zero_times_ok = 0, many_times_ok = 0;
+
+ /* If there is a sequence of repetition chars, collapse it
+ down to just one (the right one). We can't combine
+ interval operators with these because of, e.g., `a{2}*',
+ which should only match an even number of `a's. */
+
+ for (;;)
+ {
+ zero_times_ok |= c != '+';
+ many_times_ok |= c != '?';
+
+ if (p == pend)
+ break;
+
+ PATFETCH (c);
+
+ if (c == '*'
+ || (!(syntax & RE_BK_PLUS_QM) && (c == '+' || c == '?')))
+ ;
+
+ else if (syntax & RE_BK_PLUS_QM && c == '\\')
+ {
+ if (p == pend) return REG_EESCAPE;
+
+ PATFETCH (c1);
+ if (!(c1 == '+' || c1 == '?'))
+ {
+ PATUNFETCH;
+ PATUNFETCH;
+ break;
+ }
+
+ c = c1;
+ }
+ else
+ {
+ PATUNFETCH;
+ break;
+ }
+
+ /* If we get here, we found another repeat character. */
+ }
+
+ /* Star, etc. applied to an empty pattern is equivalent
+ to an empty pattern. */
+ if (!laststart)
+ break;
+
+ /* Now we know whether or not zero matches is allowed
+ and also whether or not two or more matches is allowed. */
+ if (many_times_ok)
+ { /* More than one repetition is allowed, so put in at the
+ end a backward relative jump from `b' to before the next
+ jump we're going to put in below (which jumps from
+ laststart to after this jump).
+
+ But if we are at the `*' in the exact sequence `.*\n',
+ insert an unconditional jump backwards to the .,
+ instead of the beginning of the loop. This way we only
+ push a failure point once, instead of every time
+ through the loop. */
+ assert (p - 1 > pattern);
+
+ /* Allocate the space for the jump. */
+ GET_BUFFER_SPACE (3);
+
+ /* We know we are not at the first character of the pattern,
+ because laststart was nonzero. And we've already
+ incremented `p', by the way, to be the character after
+ the `*'. Do we have to do something analogous here
+ for null bytes, because of RE_DOT_NOT_NULL? */
+ if (TRANSLATE (*(p - 2)) == TRANSLATE ('.')
+ && zero_times_ok
+ && p < pend && TRANSLATE (*p) == TRANSLATE ('\n')
+ && !(syntax & RE_DOT_NEWLINE))
+ { /* We have .*\n. */
+ STORE_JUMP (jump, b, laststart);
+ keep_string_p = true;
+ }
+ else
+ /* Anything else. */
+ STORE_JUMP (maybe_pop_jump, b, laststart - 3);
+
+ /* We've added more stuff to the buffer. */
+ b += 3;
+ }
+
+ /* On failure, jump from laststart to b + 3, which will be the
+ end of the buffer after this jump is inserted. */
+ GET_BUFFER_SPACE (3);
+ INSERT_JUMP (keep_string_p ? on_failure_keep_string_jump
+ : on_failure_jump,
+ laststart, b + 3);
+ pending_exact = 0;
+ b += 3;
+
+ if (!zero_times_ok)
+ {
+ /* At least one repetition is required, so insert a
+ `dummy_failure_jump' before the initial
+ `on_failure_jump' instruction of the loop. This
+ effects a skip over that instruction the first time
+ we hit that loop. */
+ GET_BUFFER_SPACE (3);
+ INSERT_JUMP (dummy_failure_jump, laststart, laststart + 6);
+ b += 3;
+ }
+ }
+ break;
+
+
+ case '.':
+ laststart = b;
+ BUF_PUSH (anychar);
+ break;
+
+
+ case '[':
+ {
+ boolean had_char_class = false;
+
+ if (p == pend) return REG_EBRACK;
+
+ /* Ensure that we have enough space to push a charset: the
+ opcode, the length count, and the bitset; 34 bytes in all. */
+ GET_BUFFER_SPACE (34);
+
+ laststart = b;
+
+ /* We test `*p == '^' twice, instead of using an if
+ statement, so we only need one BUF_PUSH. */
+ BUF_PUSH (*p == '^' ? charset_not : charset);
+ if (*p == '^')
+ p++;
+
+ /* Remember the first position in the bracket expression. */
+ p1 = p;
+
+ /* Push the number of bytes in the bitmap. */
+ BUF_PUSH ((1 << BYTEWIDTH) / BYTEWIDTH);
+
+ /* Clear the whole map. */
+ bzero (b, (1 << BYTEWIDTH) / BYTEWIDTH);
+
+ /* charset_not matches newline according to a syntax bit. */
+ if ((re_opcode_t) b[-2] == charset_not
+ && (syntax & RE_HAT_LISTS_NOT_NEWLINE))
+ SET_LIST_BIT ('\n');
+
+ /* Read in characters and ranges, setting map bits. */
+ for (;;)
+ {
+ if (p == pend) return REG_EBRACK;
+
+ PATFETCH (c);
+
+ /* \ might escape characters inside [...] and [^...]. */
+ if ((syntax & RE_BACKSLASH_ESCAPE_IN_LISTS) && c == '\\')
+ {
+ if (p == pend) return REG_EESCAPE;
+
+ PATFETCH (c1);
+ SET_LIST_BIT (c1);
+ continue;
+ }
+
+ /* Could be the end of the bracket expression. If it's
+ not (i.e., when the bracket expression is `[]' so
+ far), the ']' character bit gets set way below. */
+ if (c == ']' && p != p1 + 1)
+ break;
+
+ /* Look ahead to see if it's a range when the last thing
+ was a character class. */
+ if (had_char_class && c == '-' && *p != ']')
+ return REG_ERANGE;
+
+ /* Look ahead to see if it's a range when the last thing
+ was a character: if this is a hyphen not at the
+ beginning or the end of a list, then it's the range
+ operator. */
+ if (c == '-'
+ && !(p - 2 >= pattern && p[-2] == '[')
+ && !(p - 3 >= pattern && p[-3] == '[' && p[-2] == '^')
+ && *p != ']')
+ {
+ reg_errcode_t ret
+ = compile_range (&p, pend, translate, syntax, b);
+ if (ret != REG_NOERROR) return ret;
+ }
+
+ else if (p[0] == '-' && p[1] != ']')
+ { /* This handles ranges made up of characters only. */
+ reg_errcode_t ret;
+
+ /* Move past the `-'. */
+ PATFETCH (c1);
+
+ ret = compile_range (&p, pend, translate, syntax, b);
+ if (ret != REG_NOERROR) return ret;
+ }
+
+ /* See if we're at the beginning of a possible character
+ class. */
+
+ else if (syntax & RE_CHAR_CLASSES && c == '[' && *p == ':')
+ { /* Leave room for the null. */
+ char str[CHAR_CLASS_MAX_LENGTH + 1];
+
+ PATFETCH (c);
+ c1 = 0;
+
+ /* If pattern is `[[:'. */
+ if (p == pend) return REG_EBRACK;
+
+ for (;;)
+ {
+ PATFETCH (c);
+ if (c == ':' || c == ']' || p == pend
+ || c1 == CHAR_CLASS_MAX_LENGTH)
+ break;
+ str[c1++] = c;
+ }
+ str[c1] = '\0';
+
+ /* If isn't a word bracketed by `[:' and:`]':
+ undo the ending character, the letters, and leave
+ the leading `:' and `[' (but set bits for them). */
+ if (c == ':' && *p == ']')
+ {
+ int ch;
+ boolean is_alnum = STREQ (str, "alnum");
+ boolean is_alpha = STREQ (str, "alpha");
+ boolean is_blank = STREQ (str, "blank");
+ boolean is_cntrl = STREQ (str, "cntrl");
+ boolean is_digit = STREQ (str, "digit");
+ boolean is_graph = STREQ (str, "graph");
+ boolean is_lower = STREQ (str, "lower");
+ boolean is_print = STREQ (str, "print");
+ boolean is_punct = STREQ (str, "punct");
+ boolean is_space = STREQ (str, "space");
+ boolean is_upper = STREQ (str, "upper");
+ boolean is_xdigit = STREQ (str, "xdigit");
+
+ if (!IS_CHAR_CLASS (str)) return REG_ECTYPE;
+
+ /* Throw away the ] at the end of the character
+ class. */
+ PATFETCH (c);
+
+ if (p == pend) return REG_EBRACK;
+
+ for (ch = 0; ch < 1 << BYTEWIDTH; ch++)
+ {
+ if ( (is_alnum && ISALNUM (ch))
+ || (is_alpha && ISALPHA (ch))
+ || (is_blank && ISBLANK (ch))
+ || (is_cntrl && ISCNTRL (ch))
+ || (is_digit && ISDIGIT (ch))
+ || (is_graph && ISGRAPH (ch))
+ || (is_lower && ISLOWER (ch))
+ || (is_print && ISPRINT (ch))
+ || (is_punct && ISPUNCT (ch))
+ || (is_space && ISSPACE (ch))
+ || (is_upper && ISUPPER (ch))
+ || (is_xdigit && ISXDIGIT (ch)))
+ SET_LIST_BIT (ch);
+ }
+ had_char_class = true;
+ }
+ else
+ {
+ c1++;
+ while (c1--)
+ PATUNFETCH;
+ SET_LIST_BIT ('[');
+ SET_LIST_BIT (':');
+ had_char_class = false;
+ }
+ }
+ else
+ {
+ had_char_class = false;
+ SET_LIST_BIT (c);
+ }
+ }
+
+ /* Discard any (non)matching list bytes that are all 0 at the
+ end of the map. Decrease the map-length byte too. */
+ while ((int) b[-1] > 0 && b[b[-1] - 1] == 0)
+ b[-1]--;
+ b += b[-1];
+ }
+ break;
+
+
+ case '(':
+ if (syntax & RE_NO_BK_PARENS)
+ goto handle_open;
+ else
+ goto normal_char;
+
+
+ case ')':
+ if (syntax & RE_NO_BK_PARENS)
+ goto handle_close;
+ else
+ goto normal_char;
+
+
+ case '\n':
+ if (syntax & RE_NEWLINE_ALT)
+ goto handle_alt;
+ else
+ goto normal_char;
+
+
+ case '|':
+ if (syntax & RE_NO_BK_VBAR)
+ goto handle_alt;
+ else
+ goto normal_char;
+
+
+ case '{':
+ if (syntax & RE_INTERVALS && syntax & RE_NO_BK_BRACES)
+ goto handle_interval;
+ else
+ goto normal_char;
+
+
+ case '\\':
+ if (p == pend) return REG_EESCAPE;
+
+ /* Do not translate the character after the \, so that we can
+ distinguish, e.g., \B from \b, even if we normally would
+ translate, e.g., B to b. */
+ PATFETCH_RAW (c);
+
+ switch (c)
+ {
+ case '(':
+ if (syntax & RE_NO_BK_PARENS)
+ goto normal_backslash;
+
+ handle_open:
+ bufp->re_nsub++;
+ regnum++;
+
+ if (COMPILE_STACK_FULL)
+ {
+ RETALLOC (compile_stack.stack, compile_stack.size << 1,
+ compile_stack_elt_t);
+ if (compile_stack.stack == NULL) return REG_ESPACE;
+
+ compile_stack.size <<= 1;
+ }
+
+ /* These are the values to restore when we hit end of this
+ group. They are all relative offsets, so that if the
+ whole pattern moves because of realloc, they will still
+ be valid. */
+ COMPILE_STACK_TOP.begalt_offset = begalt - bufp->buffer;
+ COMPILE_STACK_TOP.fixup_alt_jump
+ = fixup_alt_jump ? fixup_alt_jump - bufp->buffer + 1 : 0;
+ COMPILE_STACK_TOP.laststart_offset = b - bufp->buffer;
+ COMPILE_STACK_TOP.regnum = regnum;
+
+ /* We will eventually replace the 0 with the number of
+ groups inner to this one. But do not push a
+ start_memory for groups beyond the last one we can
+ represent in the compiled pattern. */
+ if (regnum <= MAX_REGNUM)
+ {
+ COMPILE_STACK_TOP.inner_group_offset = b - bufp->buffer + 2;
+ BUF_PUSH_3 (start_memory, regnum, 0);
+ }
+
+ compile_stack.avail++;
+
+ fixup_alt_jump = 0;
+ laststart = 0;
+ begalt = b;
+ /* If we've reached MAX_REGNUM groups, then this open
+ won't actually generate any code, so we'll have to
+ clear pending_exact explicitly. */
+ pending_exact = 0;
+ break;
+
+
+ case ')':
+ if (syntax & RE_NO_BK_PARENS) goto normal_backslash;
+
+ if (COMPILE_STACK_EMPTY)
+ if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD)
+ goto normal_backslash;
+ else
+ return REG_ERPAREN;
+
+ handle_close:
+ if (fixup_alt_jump)
+ { /* Push a dummy failure point at the end of the
+ alternative for a possible future
+ `pop_failure_jump' to pop. See comments at
+ `push_dummy_failure' in `re_match_2'. */
+ BUF_PUSH (push_dummy_failure);
+
+ /* We allocated space for this jump when we assigned
+ to `fixup_alt_jump', in the `handle_alt' case below. */
+ STORE_JUMP (jump_past_alt, fixup_alt_jump, b - 1);
+ }
+
+ /* See similar code for backslashed left paren above. */
+ if (COMPILE_STACK_EMPTY)
+ if (syntax & RE_UNMATCHED_RIGHT_PAREN_ORD)
+ goto normal_char;
+ else
+ return REG_ERPAREN;
+
+ /* Since we just checked for an empty stack above, this
+ ``can't happen''. */
+ assert (compile_stack.avail != 0);
+ {
+ /* We don't just want to restore into `regnum', because
+ later groups should continue to be numbered higher,
+ as in `(ab)c(de)' -- the second group is #2. */
+ regnum_t this_group_regnum;
+
+ compile_stack.avail--;
+ begalt = bufp->buffer + COMPILE_STACK_TOP.begalt_offset;
+ fixup_alt_jump
+ = COMPILE_STACK_TOP.fixup_alt_jump
+ ? bufp->buffer + COMPILE_STACK_TOP.fixup_alt_jump - 1
+ : 0;
+ laststart = bufp->buffer + COMPILE_STACK_TOP.laststart_offset;
+ this_group_regnum = COMPILE_STACK_TOP.regnum;
+ /* If we've reached MAX_REGNUM groups, then this open
+ won't actually generate any code, so we'll have to
+ clear pending_exact explicitly. */
+ pending_exact = 0;
+
+ /* We're at the end of the group, so now we know how many
+ groups were inside this one. */
+ if (this_group_regnum <= MAX_REGNUM)
+ {
+ unsigned char *inner_group_loc
+ = bufp->buffer + COMPILE_STACK_TOP.inner_group_offset;
+
+ *inner_group_loc = regnum - this_group_regnum;
+ BUF_PUSH_3 (stop_memory, this_group_regnum,
+ regnum - this_group_regnum);
+ }
+ }
+ break;
+
+
+ case '|': /* `\|'. */
+ if (syntax & RE_LIMITED_OPS || syntax & RE_NO_BK_VBAR)
+ goto normal_backslash;
+ handle_alt:
+ if (syntax & RE_LIMITED_OPS)
+ goto normal_char;
+
+ /* Insert before the previous alternative a jump which
+ jumps to this alternative if the former fails. */
+ GET_BUFFER_SPACE (3);
+ INSERT_JUMP (on_failure_jump, begalt, b + 6);
+ pending_exact = 0;
+ b += 3;
+
+ /* The alternative before this one has a jump after it
+ which gets executed if it gets matched. Adjust that
+ jump so it will jump to this alternative's analogous
+ jump (put in below, which in turn will jump to the next
+ (if any) alternative's such jump, etc.). The last such
+ jump jumps to the correct final destination. A picture:
+ _____ _____
+ | | | |
+ | v | v
+ a | b | c
+
+ If we are at `b', then fixup_alt_jump right now points to a
+ three-byte space after `a'. We'll put in the jump, set
+ fixup_alt_jump to right after `b', and leave behind three
+ bytes which we'll fill in when we get to after `c'. */
+
+ if (fixup_alt_jump)
+ STORE_JUMP (jump_past_alt, fixup_alt_jump, b);
+
+ /* Mark and leave space for a jump after this alternative,
+ to be filled in later either by next alternative or
+ when know we're at the end of a series of alternatives. */
+ fixup_alt_jump = b;
+ GET_BUFFER_SPACE (3);
+ b += 3;
+
+ laststart = 0;
+ begalt = b;
+ break;
+
+
+ case '{':
+ /* If \{ is a literal. */
+ if (!(syntax & RE_INTERVALS)
+ /* If we're at `\{' and it's not the open-interval
+ operator. */
+ || ((syntax & RE_INTERVALS) && (syntax & RE_NO_BK_BRACES))
+ || (p - 2 == pattern && p == pend))
+ goto normal_backslash;
+
+ handle_interval:
+ {
+ /* If got here, then the syntax allows intervals. */
+
+ /* At least (most) this many matches must be made. */
+ int lower_bound = -1, upper_bound = -1;
+
+ beg_interval = p - 1;
+
+ if (p == pend)
+ {
+ if (syntax & RE_NO_BK_BRACES)
+ goto unfetch_interval;
+ else
+ return REG_EBRACE;
+ }
+
+ GET_UNSIGNED_NUMBER (lower_bound);
+
+ if (c == ',')
+ {
+ GET_UNSIGNED_NUMBER (upper_bound);
+ if (upper_bound < 0) upper_bound = RE_DUP_MAX;
+ }
+ else
+ /* Interval such as `{1}' => match exactly once. */
+ upper_bound = lower_bound;
+
+ if (lower_bound < 0 || upper_bound > RE_DUP_MAX
+ || lower_bound > upper_bound)
+ {
+ if (syntax & RE_NO_BK_BRACES)
+ goto unfetch_interval;
+ else
+ return REG_BADBR;
+ }
+
+ if (!(syntax & RE_NO_BK_BRACES))
+ {
+ if (c != '\\') return REG_EBRACE;
+
+ PATFETCH (c);
+ }
+
+ if (c != '}')
+ {
+ if (syntax & RE_NO_BK_BRACES)
+ goto unfetch_interval;
+ else
+ return REG_BADBR;
+ }
+
+ /* We just parsed a valid interval. */
+
+ /* If it's invalid to have no preceding re. */
+ if (!laststart)
+ {
+ if (syntax & RE_CONTEXT_INVALID_OPS)
+ return REG_BADRPT;
+ else if (syntax & RE_CONTEXT_INDEP_OPS)
+ laststart = b;
+ else
+ goto unfetch_interval;
+ }
+
+ /* If the upper bound is zero, don't want to succeed at
+ all; jump from `laststart' to `b + 3', which will be
+ the end of the buffer after we insert the jump. */
+ if (upper_bound == 0)
+ {
+ GET_BUFFER_SPACE (3);
+ INSERT_JUMP (jump, laststart, b + 3);
+ b += 3;
+ }
+
+ /* Otherwise, we have a nontrivial interval. When
+ we're all done, the pattern will look like:
+ set_number_at <jump count> <upper bound>
+ set_number_at <succeed_n count> <lower bound>
+ succeed_n <after jump addr> <succed_n count>
+ <body of loop>
+ jump_n <succeed_n addr> <jump count>
+ (The upper bound and `jump_n' are omitted if
+ `upper_bound' is 1, though.) */
+ else
+ { /* If the upper bound is > 1, we need to insert
+ more at the end of the loop. */
+ unsigned nbytes = 10 + (upper_bound > 1) * 10;
+
+ GET_BUFFER_SPACE (nbytes);
+
+ /* Initialize lower bound of the `succeed_n', even
+ though it will be set during matching by its
+ attendant `set_number_at' (inserted next),
+ because `re_compile_fastmap' needs to know.
+ Jump to the `jump_n' we might insert below. */
+ INSERT_JUMP2 (succeed_n, laststart,
+ b + 5 + (upper_bound > 1) * 5,
+ lower_bound);
+ b += 5;
+
+ /* Code to initialize the lower bound. Insert
+ before the `succeed_n'. The `5' is the last two
+ bytes of this `set_number_at', plus 3 bytes of
+ the following `succeed_n'. */
+ insert_op2 (set_number_at, laststart, 5, lower_bound, b);
+ b += 5;
+
+ if (upper_bound > 1)
+ { /* More than one repetition is allowed, so
+ append a backward jump to the `succeed_n'
+ that starts this interval.
+
+ When we've reached this during matching,
+ we'll have matched the interval once, so
+ jump back only `upper_bound - 1' times. */
+ STORE_JUMP2 (jump_n, b, laststart + 5,
+ upper_bound - 1);
+ b += 5;
+
+ /* The location we want to set is the second
+ parameter of the `jump_n'; that is `b-2' as
+ an absolute address. `laststart' will be
+ the `set_number_at' we're about to insert;
+ `laststart+3' the number to set, the source
+ for the relative address. But we are
+ inserting into the middle of the pattern --
+ so everything is getting moved up by 5.
+ Conclusion: (b - 2) - (laststart + 3) + 5,
+ i.e., b - laststart.
+
+ We insert this at the beginning of the loop
+ so that if we fail during matching, we'll
+ reinitialize the bounds. */
+ insert_op2 (set_number_at, laststart, b - laststart,
+ upper_bound - 1, b);
+ b += 5;
+ }
+ }
+ pending_exact = 0;
+ beg_interval = NULL;
+ }
+ break;
+
+ unfetch_interval:
+ /* If an invalid interval, match the characters as literals. */
+ assert (beg_interval);
+ p = beg_interval;
+ beg_interval = NULL;
+
+ /* normal_char and normal_backslash need `c'. */
+ PATFETCH (c);
+
+ if (!(syntax & RE_NO_BK_BRACES))
+ {
+ if (p > pattern && p[-1] == '\\')
+ goto normal_backslash;
+ }
+ goto normal_char;
+
+#ifdef emacs
+ /* There is no way to specify the before_dot and after_dot
+ operators. rms says this is ok. --karl */
+ case '=':
+ BUF_PUSH (at_dot);
+ break;
+
+ case 's':
+ laststart = b;
+ PATFETCH (c);
+ BUF_PUSH_2 (syntaxspec, syntax_spec_code[c]);
+ break;
+
+ case 'S':
+ laststart = b;
+ PATFETCH (c);
+ BUF_PUSH_2 (notsyntaxspec, syntax_spec_code[c]);
+ break;
+#endif /* emacs */
+
+
+ case 'w':
+ laststart = b;
+ BUF_PUSH (wordchar);
+ break;
+
+
+ case 'W':
+ laststart = b;
+ BUF_PUSH (notwordchar);
+ break;
+
+
+ case '<':
+ BUF_PUSH (wordbeg);
+ break;
+
+ case '>':
+ BUF_PUSH (wordend);
+ break;
+
+ case 'b':
+ BUF_PUSH (wordbound);
+ break;
+
+ case 'B':
+ BUF_PUSH (notwordbound);
+ break;
+
+ case '`':
+ BUF_PUSH (begbuf);
+ break;
+
+ case '\'':
+ BUF_PUSH (endbuf);
+ break;
+
+ case '1': case '2': case '3': case '4': case '5':
+ case '6': case '7': case '8': case '9':
+ if (syntax & RE_NO_BK_REFS)
+ goto normal_char;
+
+ c1 = c - '0';
+
+ if (c1 > regnum)
+ return REG_ESUBREG;
+
+ /* Can't back reference to a subexpression if inside of it. */
+ if (group_in_compile_stack (compile_stack, c1))
+ goto normal_char;
+
+ laststart = b;
+ BUF_PUSH_2 (duplicate, c1);
+ break;
+
+
+ case '+':
+ case '?':
+ if (syntax & RE_BK_PLUS_QM)
+ goto handle_plus;
+ else
+ goto normal_backslash;
+
+ default:
+ normal_backslash:
+ /* You might think it would be useful for \ to mean
+ not to translate; but if we don't translate it
+ it will never match anything. */
+ c = TRANSLATE (c);
+ goto normal_char;
+ }
+ break;
+
+
+ default:
+ /* Expects the character in `c'. */
+ normal_char:
+ /* If no exactn currently being built. */
+ if (!pending_exact
+
+ /* If last exactn not at current position. */
+ || pending_exact + *pending_exact + 1 != b
+
+ /* We have only one byte following the exactn for the count. */
+ || *pending_exact == (1 << BYTEWIDTH) - 1
+
+ /* If followed by a repetition operator. */
+ || *p == '*' || *p == '^'
+ || ((syntax & RE_BK_PLUS_QM)
+ ? *p == '\\' && (p[1] == '+' || p[1] == '?')
+ : (*p == '+' || *p == '?'))
+ || ((syntax & RE_INTERVALS)
+ && ((syntax & RE_NO_BK_BRACES)
+ ? *p == '{'
+ : (p[0] == '\\' && p[1] == '{'))))
+ {
+ /* Start building a new exactn. */
+
+ laststart = b;
+
+ BUF_PUSH_2 (exactn, 0);
+ pending_exact = b - 1;
+ }
+
+ BUF_PUSH (c);
+ (*pending_exact)++;
+ break;
+ } /* switch (c) */
+ } /* while p != pend */
+
+
+ /* Through the pattern now. */
+
+ if (fixup_alt_jump)
+ STORE_JUMP (jump_past_alt, fixup_alt_jump, b);
+
+ if (!COMPILE_STACK_EMPTY)
+ return REG_EPAREN;
+
+ free (compile_stack.stack);
+
+ /* We have succeeded; set the length of the buffer. */
+ bufp->used = b - bufp->buffer;
+
+#ifdef DEBUG
+ if (debug)
+ {
+ DEBUG_PRINT1 ("\nCompiled pattern: ");
+ print_compiled_pattern (bufp);
+ }
+#endif /* DEBUG */
+
+ return REG_NOERROR;
+} /* regex_compile */
+
+/* Subroutines for `regex_compile'. */
+
+/* Store OP at LOC followed by two-byte integer parameter ARG. */
+
+static void
+store_op1 (op, loc, arg)
+ re_opcode_t op;
+ unsigned char *loc;
+ int arg;
+{
+ *loc = (unsigned char) op;
+ STORE_NUMBER (loc + 1, arg);
+}
+
+
+/* Like `store_op1', but for two two-byte parameters ARG1 and ARG2. */
+
+static void
+store_op2 (op, loc, arg1, arg2)
+ re_opcode_t op;
+ unsigned char *loc;
+ int arg1, arg2;
+{
+ *loc = (unsigned char) op;
+ STORE_NUMBER (loc + 1, arg1);
+ STORE_NUMBER (loc + 3, arg2);
+}
+
+
+/* Copy the bytes from LOC to END to open up three bytes of space at LOC
+ for OP followed by two-byte integer parameter ARG. */
+
+static void
+insert_op1 (op, loc, arg, end)
+ re_opcode_t op;
+ unsigned char *loc;
+ int arg;
+ unsigned char *end;
+{
+ register unsigned char *pfrom = end;
+ register unsigned char *pto = end + 3;
+
+ while (pfrom != loc)
+ *--pto = *--pfrom;
+
+ store_op1 (op, loc, arg);
+}
+
+
+/* Like `insert_op1', but for two two-byte parameters ARG1 and ARG2. */
+
+static void
+insert_op2 (op, loc, arg1, arg2, end)
+ re_opcode_t op;
+ unsigned char *loc;
+ int arg1, arg2;
+ unsigned char *end;
+{
+ register unsigned char *pfrom = end;
+ register unsigned char *pto = end + 5;
+
+ while (pfrom != loc)
+ *--pto = *--pfrom;
+
+ store_op2 (op, loc, arg1, arg2);
+}
+
+
+/* P points to just after a ^ in PATTERN. Return true if that ^ comes
+ after an alternative or a begin-subexpression. We assume there is at
+ least one character before the ^. */
+
+static boolean
+at_begline_loc_p (pattern, p, syntax)
+ char *pattern, *p;
+ reg_syntax_t syntax;
+{
+ char *prev = p - 2;
+ boolean prev_prev_backslash = prev > pattern && prev[-1] == '\\';
+
+ return
+ /* After a subexpression? */
+ (*prev == '(' && (syntax & RE_NO_BK_PARENS || prev_prev_backslash))
+ /* After an alternative? */
+ || (*prev == '|' && (syntax & RE_NO_BK_VBAR || prev_prev_backslash));
+}
+
+
+/* The dual of at_begline_loc_p. This one is for $. We assume there is
+ at least one character after the $, i.e., `P < PEND'. */
+
+static boolean
+at_endline_loc_p (p, pend, syntax)
+ char *p, *pend;
+ int syntax;
+{
+ char *next = p;
+ boolean next_backslash = *next == '\\';
+ char *next_next = p + 1 < pend ? p + 1 : NULL;
+
+ return
+ /* Before a subexpression? */
+ (syntax & RE_NO_BK_PARENS ? *next == ')'
+ : next_backslash && next_next && *next_next == ')')
+ /* Before an alternative? */
+ || (syntax & RE_NO_BK_VBAR ? *next == '|'
+ : next_backslash && next_next && *next_next == '|');
+}
+
+
+/* Returns true if REGNUM is in one of COMPILE_STACK's elements and
+ false if it's not. */
+
+static boolean
+group_in_compile_stack (compile_stack, regnum)
+ compile_stack_type compile_stack;
+ regnum_t regnum;
+{
+ int this_element;
+
+ for (this_element = compile_stack.avail - 1;
+ this_element >= 0;
+ this_element--)
+ if (compile_stack.stack[this_element].regnum == regnum)
+ return true;
+
+ return false;
+}
+
+
+/* Read the ending character of a range (in a bracket expression) from the
+ uncompiled pattern *P_PTR (which ends at PEND). We assume the
+ starting character is in `P[-2]'. (`P[-1]' is the character `-'.)
+ Then we set the translation of all bits between the starting and
+ ending characters (inclusive) in the compiled pattern B.
+
+ Return an error code.
+
+ We use these short variable names so we can use the same macros as
+ `regex_compile' itself. */
+
+static reg_errcode_t
+compile_range (p_ptr, pend, translate, syntax, b)
+ char **p_ptr, *pend;
+ char *translate;
+ reg_syntax_t syntax;
+ unsigned char *b;
+{
+ unsigned this_char;
+
+ char *p = *p_ptr;
+ int range_start, range_end;
+
+ if (p == pend)
+ return REG_ERANGE;
+
+ /* Even though the pattern is a signed `char *', we need to fetch
+ with unsigned char *'s; if the high bit of the pattern character
+ is set, the range endpoints will be negative if we fetch using a
+ signed char *.
+
+ We also want to fetch the endpoints without translating them; the
+ appropriate translation is done in the bit-setting loop below. */
+ range_start = ((unsigned char *) p)[-2];
+ range_end = ((unsigned char *) p)[0];
+
+ /* Have to increment the pointer into the pattern string, so the
+ caller isn't still at the ending character. */
+ (*p_ptr)++;
+
+ /* If the start is after the end, the range is empty. */
+ if (range_start > range_end)
+ return syntax & RE_NO_EMPTY_RANGES ? REG_ERANGE : REG_NOERROR;
+
+ /* Here we see why `this_char' has to be larger than an `unsigned
+ char' -- the range is inclusive, so if `range_end' == 0xff
+ (assuming 8-bit characters), we would otherwise go into an infinite
+ loop, since all characters <= 0xff. */
+ for (this_char = range_start; this_char <= range_end; this_char++)
+ {
+ SET_LIST_BIT (TRANSLATE (this_char));
+ }
+
+ return REG_NOERROR;
+}
+
+/* Failure stack declarations and macros; both re_compile_fastmap and
+ re_match_2 use a failure stack. These have to be macros because of
+ REGEX_ALLOCATE. */
+
+
+/* Number of failure points for which to initially allocate space
+ when matching. If this number is exceeded, we allocate more
+ space, so it is not a hard limit. */
+#ifndef INIT_FAILURE_ALLOC
+#define INIT_FAILURE_ALLOC 5
+#endif
+
+/* Roughly the maximum number of failure points on the stack. Would be
+ exactly that if always used MAX_FAILURE_SPACE each time we failed.
+ This is a variable only so users of regex can assign to it; we never
+ change it ourselves. */
+int re_max_failures = 2000;
+
+typedef unsigned char *fail_stack_elt_t;
+
+typedef struct
+{
+ fail_stack_elt_t *stack;
+ unsigned size;
+ unsigned avail; /* Offset of next open position. */
+} fail_stack_type;
+
+#define FAIL_STACK_EMPTY() (fail_stack.avail == 0)
+#define FAIL_STACK_PTR_EMPTY() (fail_stack_ptr->avail == 0)
+#define FAIL_STACK_FULL() (fail_stack.avail == fail_stack.size)
+#define FAIL_STACK_TOP() (fail_stack.stack[fail_stack.avail])
+
+
+/* Initialize `fail_stack'. Do `return -2' if the alloc fails. */
+
+#define INIT_FAIL_STACK() \
+ do { \
+ fail_stack.stack = (fail_stack_elt_t *) \
+ REGEX_ALLOCATE (INIT_FAILURE_ALLOC * sizeof (fail_stack_elt_t)); \
+ \
+ if (fail_stack.stack == NULL) \
+ return -2; \
+ \
+ fail_stack.size = INIT_FAILURE_ALLOC; \
+ fail_stack.avail = 0; \
+ } while (0)
+
+
+/* Double the size of FAIL_STACK, up to approximately `re_max_failures' items.
+
+ Return 1 if succeeds, and 0 if either ran out of memory
+ allocating space for it or it was already too large.
+
+ REGEX_REALLOCATE requires `destination' be declared. */
+
+#define DOUBLE_FAIL_STACK(fail_stack) \
+ ((fail_stack).size > re_max_failures * MAX_FAILURE_ITEMS \
+ ? 0 \
+ : ((fail_stack).stack = (fail_stack_elt_t *) \
+ REGEX_REALLOCATE ((fail_stack).stack, \
+ (fail_stack).size * sizeof (fail_stack_elt_t), \
+ ((fail_stack).size << 1) * sizeof (fail_stack_elt_t)), \
+ \
+ (fail_stack).stack == NULL \
+ ? 0 \
+ : ((fail_stack).size <<= 1, \
+ 1)))
+
+
+/* Push PATTERN_OP on FAIL_STACK.
+
+ Return 1 if was able to do so and 0 if ran out of memory allocating
+ space to do so. */
+#define PUSH_PATTERN_OP(pattern_op, fail_stack) \
+ ((FAIL_STACK_FULL () \
+ && !DOUBLE_FAIL_STACK (fail_stack)) \
+ ? 0 \
+ : ((fail_stack).stack[(fail_stack).avail++] = pattern_op, \
+ 1))
+
+/* This pushes an item onto the failure stack. Must be a four-byte
+ value. Assumes the variable `fail_stack'. Probably should only
+ be called from within `PUSH_FAILURE_POINT'. */
+#define PUSH_FAILURE_ITEM(item) \
+ fail_stack.stack[fail_stack.avail++] = (fail_stack_elt_t) item
+
+/* The complement operation. Assumes `fail_stack' is nonempty. */
+#define POP_FAILURE_ITEM() fail_stack.stack[--fail_stack.avail]
+
+/* Used to omit pushing failure point id's when we're not debugging. */
+#ifdef DEBUG
+#define DEBUG_PUSH PUSH_FAILURE_ITEM
+#define DEBUG_POP(item_addr) *(item_addr) = POP_FAILURE_ITEM ()
+#else
+#define DEBUG_PUSH(item)
+#define DEBUG_POP(item_addr)
+#endif
+
+
+/* Push the information about the state we will need
+ if we ever fail back to it.
+
+ Requires variables fail_stack, regstart, regend, reg_info, and
+ num_regs be declared. DOUBLE_FAIL_STACK requires `destination' be
+ declared.
+
+ Does `return FAILURE_CODE' if runs out of memory. */
+
+#define PUSH_FAILURE_POINT(pattern_place, string_place, failure_code) \
+ do { \
+ char *destination; \
+ /* Must be int, so when we don't save any registers, the arithmetic \
+ of 0 + -1 isn't done as unsigned. */ \
+ int this_reg; \
+ \
+ DEBUG_STATEMENT (failure_id++); \
+ DEBUG_STATEMENT (nfailure_points_pushed++); \
+ DEBUG_PRINT2 ("\nPUSH_FAILURE_POINT #%u:\n", failure_id); \
+ DEBUG_PRINT2 (" Before push, next avail: %d\n", (fail_stack).avail);\
+ DEBUG_PRINT2 (" size: %d\n", (fail_stack).size);\
+ \
+ DEBUG_PRINT2 (" slots needed: %d\n", NUM_FAILURE_ITEMS); \
+ DEBUG_PRINT2 (" available: %d\n", REMAINING_AVAIL_SLOTS); \
+ \
+ /* Ensure we have enough space allocated for what we will push. */ \
+ while (REMAINING_AVAIL_SLOTS < NUM_FAILURE_ITEMS) \
+ { \
+ if (!DOUBLE_FAIL_STACK (fail_stack)) \
+ return failure_code; \
+ \
+ DEBUG_PRINT2 ("\n Doubled stack; size now: %d\n", \
+ (fail_stack).size); \
+ DEBUG_PRINT2 (" slots available: %d\n", REMAINING_AVAIL_SLOTS);\
+ } \
+ \
+ /* Push the info, starting with the registers. */ \
+ DEBUG_PRINT1 ("\n"); \
+ \
+ for (this_reg = lowest_active_reg; this_reg <= highest_active_reg; \
+ this_reg++) \
+ { \
+ DEBUG_PRINT2 (" Pushing reg: %d\n", this_reg); \
+ DEBUG_STATEMENT (num_regs_pushed++); \
+ \
+ DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \
+ PUSH_FAILURE_ITEM (regstart[this_reg]); \
+ \
+ DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \
+ PUSH_FAILURE_ITEM (regend[this_reg]); \
+ \
+ DEBUG_PRINT2 (" info: 0x%x\n ", reg_info[this_reg]); \
+ DEBUG_PRINT2 (" match_null=%d", \
+ REG_MATCH_NULL_STRING_P (reg_info[this_reg])); \
+ DEBUG_PRINT2 (" active=%d", IS_ACTIVE (reg_info[this_reg])); \
+ DEBUG_PRINT2 (" matched_something=%d", \
+ MATCHED_SOMETHING (reg_info[this_reg])); \
+ DEBUG_PRINT2 (" ever_matched=%d", \
+ EVER_MATCHED_SOMETHING (reg_info[this_reg])); \
+ DEBUG_PRINT1 ("\n"); \
+ PUSH_FAILURE_ITEM (reg_info[this_reg].word); \
+ } \
+ \
+ DEBUG_PRINT2 (" Pushing low active reg: %d\n", lowest_active_reg);\
+ PUSH_FAILURE_ITEM (lowest_active_reg); \
+ \
+ DEBUG_PRINT2 (" Pushing high active reg: %d\n", highest_active_reg);\
+ PUSH_FAILURE_ITEM (highest_active_reg); \
+ \
+ DEBUG_PRINT2 (" Pushing pattern 0x%x: ", pattern_place); \
+ DEBUG_PRINT_COMPILED_PATTERN (bufp, pattern_place, pend); \
+ PUSH_FAILURE_ITEM (pattern_place); \
+ \
+ DEBUG_PRINT2 (" Pushing string 0x%x: `", string_place); \
+ DEBUG_PRINT_DOUBLE_STRING (string_place, string1, size1, string2, \
+ size2); \
+ DEBUG_PRINT1 ("'\n"); \
+ PUSH_FAILURE_ITEM (string_place); \
+ \
+ DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \
+ DEBUG_PUSH (failure_id); \
+ } while (0)
+
+/* This is the number of items that are pushed and popped on the stack
+ for each register. */
+#define NUM_REG_ITEMS 3
+
+/* Individual items aside from the registers. */
+#ifdef DEBUG
+#define NUM_NONREG_ITEMS 5 /* Includes failure point id. */
+#else
+#define NUM_NONREG_ITEMS 4
+#endif
+
+/* We push at most this many items on the stack. */
+#define MAX_FAILURE_ITEMS ((num_regs - 1) * NUM_REG_ITEMS + NUM_NONREG_ITEMS)
+
+/* We actually push this many items. */
+#define NUM_FAILURE_ITEMS \
+ ((highest_active_reg - lowest_active_reg + 1) * NUM_REG_ITEMS \
+ + NUM_NONREG_ITEMS)
+
+/* How many items can still be added to the stack without overflowing it. */
+#define REMAINING_AVAIL_SLOTS ((fail_stack).size - (fail_stack).avail)
+
+
+/* Pops what PUSH_FAIL_STACK pushes.
+
+ We restore into the parameters, all of which should be lvalues:
+ STR -- the saved data position.
+ PAT -- the saved pattern position.
+ LOW_REG, HIGH_REG -- the highest and lowest active registers.
+ REGSTART, REGEND -- arrays of string positions.
+ REG_INFO -- array of information about each subexpression.
+
+ Also assumes the variables `fail_stack' and (if debugging), `bufp',
+ `pend', `string1', `size1', `string2', and `size2'. */
+
+#define POP_FAILURE_POINT(str, pat, low_reg, high_reg, regstart, regend, reg_info)\
+{ \
+ DEBUG_STATEMENT (fail_stack_elt_t failure_id;) \
+ int this_reg; \
+ unsigned char *string_temp; \
+ \
+ assert (!FAIL_STACK_EMPTY ()); \
+ \
+ /* Remove failure points and point to how many regs pushed. */ \
+ DEBUG_PRINT1 ("POP_FAILURE_POINT:\n"); \
+ DEBUG_PRINT2 (" Before pop, next avail: %d\n", fail_stack.avail); \
+ DEBUG_PRINT2 (" size: %d\n", fail_stack.size); \
+ \
+ assert (fail_stack.avail >= NUM_NONREG_ITEMS); \
+ \
+ DEBUG_POP (&failure_id); \
+ DEBUG_PRINT2 (" Popping failure id: %u\n", failure_id); \
+ \
+ /* If the saved string location is NULL, it came from an \
+ on_failure_keep_string_jump opcode, and we want to throw away the \
+ saved NULL, thus retaining our current position in the string. */ \
+ string_temp = POP_FAILURE_ITEM (); \
+ if (string_temp != NULL) \
+ str = (char *) string_temp; \
+ \
+ DEBUG_PRINT2 (" Popping string 0x%x: `", str); \
+ DEBUG_PRINT_DOUBLE_STRING (str, string1, size1, string2, size2); \
+ DEBUG_PRINT1 ("'\n"); \
+ \
+ pat = (unsigned char *) POP_FAILURE_ITEM (); \
+ DEBUG_PRINT2 (" Popping pattern 0x%x: ", pat); \
+ DEBUG_PRINT_COMPILED_PATTERN (bufp, pat, pend); \
+ \
+ /* Restore register info. */ \
+ high_reg = (unsigned) POP_FAILURE_ITEM (); \
+ DEBUG_PRINT2 (" Popping high active reg: %d\n", high_reg); \
+ \
+ low_reg = (unsigned) POP_FAILURE_ITEM (); \
+ DEBUG_PRINT2 (" Popping low active reg: %d\n", low_reg); \
+ \
+ for (this_reg = high_reg; this_reg >= low_reg; this_reg--) \
+ { \
+ DEBUG_PRINT2 (" Popping reg: %d\n", this_reg); \
+ \
+ reg_info[this_reg].word = POP_FAILURE_ITEM (); \
+ DEBUG_PRINT2 (" info: 0x%x\n", reg_info[this_reg]); \
+ \
+ regend[this_reg] = (char *) POP_FAILURE_ITEM (); \
+ DEBUG_PRINT2 (" end: 0x%x\n", regend[this_reg]); \
+ \
+ regstart[this_reg] = (char *) POP_FAILURE_ITEM (); \
+ DEBUG_PRINT2 (" start: 0x%x\n", regstart[this_reg]); \
+ } \
+ \
+ DEBUG_STATEMENT (nfailure_points_popped++); \
+} /* POP_FAILURE_POINT */
+
+/* re_compile_fastmap computes a ``fastmap'' for the compiled pattern in
+ BUFP. A fastmap records which of the (1 << BYTEWIDTH) possible
+ characters can start a string that matches the pattern. This fastmap
+ is used by re_search to skip quickly over impossible starting points.
+
+ The caller must supply the address of a (1 << BYTEWIDTH)-byte data
+ area as BUFP->fastmap.
+
+ We set the `fastmap', `fastmap_accurate', and `can_be_null' fields in
+ the pattern buffer.
+
+ Returns 0 if we succeed, -2 if an internal error. */
+
+int
+re_compile_fastmap (bufp)
+ struct re_pattern_buffer *bufp;
+{
+ int j, k;
+ fail_stack_type fail_stack;
+#ifndef REGEX_MALLOC
+ char *destination;
+#endif
+ /* We don't push any register information onto the failure stack. */
+ unsigned num_regs = 0;
+
+ register char *fastmap = bufp->fastmap;
+ unsigned char *pattern = bufp->buffer;
+ unsigned long size = bufp->used;
+ unsigned char *p = pattern;
+ register unsigned char *pend = pattern + size;
+
+ /* Assume that each path through the pattern can be null until
+ proven otherwise. We set this false at the bottom of switch
+ statement, to which we get only if a particular path doesn't
+ match the empty string. */
+ boolean path_can_be_null = true;
+
+ /* We aren't doing a `succeed_n' to begin with. */
+ boolean succeed_n_p = false;
+
+ assert (fastmap != NULL && p != NULL);
+
+ INIT_FAIL_STACK ();
+ bzero (fastmap, 1 << BYTEWIDTH); /* Assume nothing's valid. */
+ bufp->fastmap_accurate = 1; /* It will be when we're done. */
+ bufp->can_be_null = 0;
+
+ while (p != pend || !FAIL_STACK_EMPTY ())
+ {
+ if (p == pend)
+ {
+ bufp->can_be_null |= path_can_be_null;
+
+ /* Reset for next path. */
+ path_can_be_null = true;
+
+ p = fail_stack.stack[--fail_stack.avail];
+ }
+
+ /* We should never be about to go beyond the end of the pattern. */
+ assert (p < pend);
+
+#ifdef SWITCH_ENUM_BUG
+ switch ((int) ((re_opcode_t) *p++))
+#else
+ switch ((re_opcode_t) *p++)
+#endif
+ {
+
+ /* I guess the idea here is to simply not bother with a fastmap
+ if a backreference is used, since it's too hard to figure out
+ the fastmap for the corresponding group. Setting
+ `can_be_null' stops `re_search_2' from using the fastmap, so
+ that is all we do. */
+ case duplicate:
+ bufp->can_be_null = 1;
+ return 0;
+
+
+ /* Following are the cases which match a character. These end
+ with `break'. */
+
+ case exactn:
+ fastmap[p[1]] = 1;
+ break;
+
+
+ case charset:
+ for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)
+ if (p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH)))
+ fastmap[j] = 1;
+ break;
+
+
+ case charset_not:
+ /* Chars beyond end of map must be allowed. */
+ for (j = *p * BYTEWIDTH; j < (1 << BYTEWIDTH); j++)
+ fastmap[j] = 1;
+
+ for (j = *p++ * BYTEWIDTH - 1; j >= 0; j--)
+ if (!(p[j / BYTEWIDTH] & (1 << (j % BYTEWIDTH))))
+ fastmap[j] = 1;
+ break;
+
+
+ case wordchar:
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (SYNTAX (j) == Sword)
+ fastmap[j] = 1;
+ break;
+
+
+ case notwordchar:
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (SYNTAX (j) != Sword)
+ fastmap[j] = 1;
+ break;
+
+
+ case anychar:
+ /* `.' matches anything ... */
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ fastmap[j] = 1;
+
+ /* ... except perhaps newline. */
+ if (!(bufp->syntax & RE_DOT_NEWLINE))
+ fastmap['\n'] = 0;
+
+ /* Return if we have already set `can_be_null'; if we have,
+ then the fastmap is irrelevant. Something's wrong here. */
+ else if (bufp->can_be_null)
+ return 0;
+
+ /* Otherwise, have to check alternative paths. */
+ break;
+
+
+#ifdef emacs
+ case syntaxspec:
+ k = *p++;
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (SYNTAX (j) == (enum syntaxcode) k)
+ fastmap[j] = 1;
+ break;
+
+
+ case notsyntaxspec:
+ k = *p++;
+ for (j = 0; j < (1 << BYTEWIDTH); j++)
+ if (SYNTAX (j) != (enum syntaxcode) k)
+ fastmap[j] = 1;
+ break;
+
+
+ /* All cases after this match the empty string. These end with
+ `continue'. */
+
+
+ case before_dot:
+ case at_dot:
+ case after_dot:
+ continue;
+#endif /* not emacs */
+
+
+ case no_op:
+ case begline:
+ case endline:
+ case begbuf:
+ case endbuf:
+ case wordbound:
+ case notwordbound:
+ case wordbeg:
+ case wordend:
+ case push_dummy_failure:
+ continue;
+
+
+ case jump_n:
+ case pop_failure_jump:
+ case maybe_pop_jump:
+ case jump:
+ case jump_past_alt:
+ case dummy_failure_jump:
+ EXTRACT_NUMBER_AND_INCR (j, p);
+ p += j;
+ if (j > 0)
+ continue;
+
+ /* Jump backward implies we just went through the body of a
+ loop and matched nothing. Opcode jumped to should be
+ `on_failure_jump' or `succeed_n'. Just treat it like an
+ ordinary jump. For a * loop, it has pushed its failure
+ point already; if so, discard that as redundant. */
+ if ((re_opcode_t) *p != on_failure_jump
+ && (re_opcode_t) *p != succeed_n)
+ continue;
+
+ p++;
+ EXTRACT_NUMBER_AND_INCR (j, p);
+ p += j;
+
+ /* If what's on the stack is where we are now, pop it. */
+ if (!FAIL_STACK_EMPTY ()
+ && fail_stack.stack[fail_stack.avail - 1] == p)
+ fail_stack.avail--;
+
+ continue;
+
+
+ case on_failure_jump:
+ case on_failure_keep_string_jump:
+ handle_on_failure_jump:
+ EXTRACT_NUMBER_AND_INCR (j, p);
+
+ /* For some patterns, e.g., `(a?)?', `p+j' here points to the
+ end of the pattern. We don't want to push such a point,
+ since when we restore it above, entering the switch will
+ increment `p' past the end of the pattern. We don't need
+ to push such a point since we obviously won't find any more
+ fastmap entries beyond `pend'. Such a pattern can match
+ the null string, though. */
+ if (p + j < pend)
+ {
+ if (!PUSH_PATTERN_OP (p + j, fail_stack))
+ return -2;
+ }
+ else
+ bufp->can_be_null = 1;
+
+ if (succeed_n_p)
+ {
+ EXTRACT_NUMBER_AND_INCR (k, p); /* Skip the n. */
+ succeed_n_p = false;
+ }
+
+ continue;
+
+
+ case succeed_n:
+ /* Get to the number of times to succeed. */
+ p += 2;
+
+ /* Increment p past the n for when k != 0. */
+ EXTRACT_NUMBER_AND_INCR (k, p);
+ if (k == 0)
+ {
+ p -= 4;
+ succeed_n_p = true; /* Spaghetti code alert. */
+ goto handle_on_failure_jump;
+ }
+ continue;
+
+
+ case set_number_at:
+ p += 4;
+ continue;
+
+
+ case start_memory:
+ case stop_memory:
+ p += 2;
+ continue;
+
+
+ default:
+ abort (); /* We have listed all the cases. */
+ } /* switch *p++ */
+
+ /* Getting here means we have found the possible starting
+ characters for one path of the pattern -- and that the empty
+ string does not match. We need not follow this path further.
+ Instead, look at the next alternative (remembered on the
+ stack), or quit if no more. The test at the top of the loop
+ does these things. */
+ path_can_be_null = false;
+ p = pend;
+ } /* while p */
+
+ /* Set `can_be_null' for the last path (also the first path, if the
+ pattern is empty). */
+ bufp->can_be_null |= path_can_be_null;
+ return 0;
+} /* re_compile_fastmap */
+
+/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
+ ENDS. Subsequent matches using PATTERN_BUFFER and REGS will use
+ this memory for recording register information. STARTS and ENDS
+ must be allocated using the malloc library routine, and must each
+ be at least NUM_REGS * sizeof (regoff_t) bytes long.
+
+ If NUM_REGS == 0, then subsequent matches should allocate their own
+ register data.
+
+ Unless this function is called, the first search or match using
+ PATTERN_BUFFER will allocate its own register data, without
+ freeing the old data. */
+
+void
+re_set_registers (bufp, regs, num_regs, starts, ends)
+ struct re_pattern_buffer *bufp;
+ struct re_registers *regs;
+ unsigned num_regs;
+ regoff_t *starts, *ends;
+{
+ if (num_regs)
+ {
+ bufp->regs_allocated = REGS_REALLOCATE;
+ regs->num_regs = num_regs;
+ regs->start = starts;
+ regs->end = ends;
+ }
+ else
+ {
+ bufp->regs_allocated = REGS_UNALLOCATED;
+ regs->num_regs = 0;
+ regs->start = regs->end = (regoff_t) 0;
+ }
+}
+
+/* Searching routines. */
+
+/* Like re_search_2, below, but only one string is specified, and
+ doesn't let you say where to stop matching. */
+
+int
+re_search (bufp, string, size, startpos, range, regs)
+ struct re_pattern_buffer *bufp;
+ char *string;
+ int size, startpos, range;
+ struct re_registers *regs;
+{
+ return re_search_2 (bufp, NULL, 0, string, size, startpos, range,
+ regs, size);
+}
+
+
+/* Using the compiled pattern in BUFP->buffer, first tries to match the
+ virtual concatenation of STRING1 and STRING2, starting first at index
+ STARTPOS, then at STARTPOS + 1, and so on.
+
+ STRING1 and STRING2 have length SIZE1 and SIZE2, respectively.
+
+ RANGE is how far to scan while trying to match. RANGE = 0 means try
+ only at STARTPOS; in general, the last start tried is STARTPOS +
+ RANGE.
+
+ In REGS, return the indices of the virtual concatenation of STRING1
+ and STRING2 that matched the entire BUFP->buffer and its contained
+ subexpressions.
+
+ Do not consider matching one past the index STOP in the virtual
+ concatenation of STRING1 and STRING2.
+
+ We return either the position in the strings at which the match was
+ found, -1 if no match, or -2 if error (such as failure
+ stack overflow). */
+
+int
+re_search_2 (bufp, string1, size1, string2, size2, startpos, range, regs, stop)
+ struct re_pattern_buffer *bufp;
+ char *string1, *string2;
+ int size1, size2;
+ int startpos;
+ int range;
+ struct re_registers *regs;
+ int stop;
+{
+ int val;
+ register char *fastmap = bufp->fastmap;
+ register char *translate = bufp->translate;
+ int total_size = size1 + size2;
+ int endpos = startpos + range;
+
+ /* Check for out-of-range STARTPOS. */
+ if (startpos < 0 || startpos > total_size)
+ return -1;
+
+ /* Fix up RANGE if it might eventually take us outside
+ the virtual concatenation of STRING1 and STRING2. */
+ if (endpos < -1)
+ range = -1 - startpos;
+ else if (endpos > total_size)
+ range = total_size - startpos;
+
+ /* If the search isn't to be a backwards one, don't waste time in a
+ search for a pattern that must be anchored. */
+ if (bufp->used > 0 && (re_opcode_t) bufp->buffer[0] == begbuf && range > 0)
+ {
+ if (startpos > 0)
+ return -1;
+ else
+ range = 1;
+ }
+
+ /* Update the fastmap now if not correct already. */
+ if (fastmap && !bufp->fastmap_accurate)
+ if (re_compile_fastmap (bufp) == -2)
+ return -2;
+
+ /* Loop through the string, looking for a place to start matching. */
+ for (;;)
+ {
+ /* If a fastmap is supplied, skip quickly over characters that
+ cannot be the start of a match. If the pattern can match the
+ null string, however, we don't need to skip characters; we want
+ the first null string. */
+ if (fastmap && startpos < total_size && !bufp->can_be_null)
+ {
+ if (range > 0) /* Searching forwards. */
+ {
+ register char *d;
+ register int lim = 0;
+ int irange = range;
+
+ if (startpos < size1 && startpos + range >= size1)
+ lim = range - (size1 - startpos);
+
+ d = (startpos >= size1 ? string2 - size1 : string1) + startpos;
+
+ /* Written out as an if-else to avoid testing `translate'
+ inside the loop. */
+ if (translate)
+ while (range > lim
+ && !fastmap[(unsigned char)
+ translate[(unsigned char) *d++]])
+ range--;
+ else
+ while (range > lim && !fastmap[(unsigned char) *d++])
+ range--;
+
+ startpos += irange - range;
+ }
+ else /* Searching backwards. */
+ {
+ register char c = (size1 == 0 || startpos >= size1
+ ? string2[startpos - size1]
+ : string1[startpos]);
+
+ if (!fastmap[(unsigned char) TRANSLATE (c)])
+ goto advance;
+ }
+ }
+
+ /* If can't match the null string, and that's all we have left, fail. */
+ if (range >= 0 && startpos == total_size && fastmap
+ && !bufp->can_be_null)
+ return -1;
+
+ val = re_match_2 (bufp, string1, size1, string2, size2,
+ startpos, regs, stop);
+ if (val >= 0)
+ return startpos;
+
+ if (val == -2)
+ return -2;
+
+ advance:
+ if (!range)
+ break;
+ else if (range > 0)
+ {
+ range--;
+ startpos++;
+ }
+ else
+ {
+ range++;
+ startpos--;
+ }
+ }
+ return -1;
+} /* re_search_2 */
+
+/* Declarations and macros for re_match_2. */
+
+static int bcmp_translate ();
+static boolean alt_match_null_string_p (),
+ common_op_match_null_string_p (),
+ group_match_null_string_p ();
+
+/* Structure for per-register (a.k.a. per-group) information.
+ This must not be longer than one word, because we push this value
+ onto the failure stack. Other register information, such as the
+ starting and ending positions (which are addresses), and the list of
+ inner groups (which is a bits list) are maintained in separate
+ variables.
+
+ We are making a (strictly speaking) nonportable assumption here: that
+ the compiler will pack our bit fields into something that fits into
+ the type of `word', i.e., is something that fits into one item on the
+ failure stack. */
+typedef union
+{
+ fail_stack_elt_t word;
+ struct
+ {
+ /* This field is one if this group can match the empty string,
+ zero if not. If not yet determined, `MATCH_NULL_UNSET_VALUE'. */
+#define MATCH_NULL_UNSET_VALUE 3
+ unsigned match_null_string_p : 2;
+ unsigned is_active : 1;
+ unsigned matched_something : 1;
+ unsigned ever_matched_something : 1;
+ } bits;
+} register_info_type;
+
+#define REG_MATCH_NULL_STRING_P(R) ((R).bits.match_null_string_p)
+#define IS_ACTIVE(R) ((R).bits.is_active)
+#define MATCHED_SOMETHING(R) ((R).bits.matched_something)
+#define EVER_MATCHED_SOMETHING(R) ((R).bits.ever_matched_something)
+
+
+/* Call this when have matched a real character; it sets `matched' flags
+ for the subexpressions which we are currently inside. Also records
+ that those subexprs have matched. */
+#define SET_REGS_MATCHED() \
+ do \
+ { \
+ unsigned r; \
+ for (r = lowest_active_reg; r <= highest_active_reg; r++) \
+ { \
+ MATCHED_SOMETHING (reg_info[r]) \
+ = EVER_MATCHED_SOMETHING (reg_info[r]) \
+ = 1; \
+ } \
+ } \
+ while (0)
+
+
+/* This converts PTR, a pointer into one of the search strings `string1'
+ and `string2' into an offset from the beginning of that string. */
+#define POINTER_TO_OFFSET(ptr) \
+ (FIRST_STRING_P (ptr) ? (ptr) - string1 : (ptr) - string2 + size1)
+
+/* Registers are set to a sentinel when they haven't yet matched. */
+#define REG_UNSET_VALUE ((char *) -1)
+#define REG_UNSET(e) ((e) == REG_UNSET_VALUE)
+
+
+/* Macros for dealing with the split strings in re_match_2. */
+
+#define MATCHING_IN_FIRST_STRING (dend == end_match_1)
+
+/* Call before fetching a character with *d. This switches over to
+ string2 if necessary. */
+#define PREFETCH() \
+ while (d == dend) \
+ { \
+ /* End of string2 => fail. */ \
+ if (dend == end_match_2) \
+ goto fail; \
+ /* End of string1 => advance to string2. */ \
+ d = string2; \
+ dend = end_match_2; \
+ }
+
+
+/* Test if at very beginning or at very end of the virtual concatenation
+ of `string1' and `string2'. If only one string, it's `string2'. */
+#define AT_STRINGS_BEG(d) ((d) == (size1 ? string1 : string2) || !size2)
+#define AT_STRINGS_END(d) ((d) == end2)
+
+
+/* Test if D points to a character which is word-constituent. We have
+ two special cases to check for: if past the end of string1, look at
+ the first character in string2; and if before the beginning of
+ string2, look at the last character in string1. */
+#define WORDCHAR_P(d) \
+ (SYNTAX ((d) == end1 ? *string2 \
+ : (d) == string2 - 1 ? *(end1 - 1) : *(d)) \
+ == Sword)
+
+/* Test if the character before D and the one at D differ with respect
+ to being word-constituent. */
+#define AT_WORD_BOUNDARY(d) \
+ (AT_STRINGS_BEG (d) || AT_STRINGS_END (d) \
+ || WORDCHAR_P (d - 1) != WORDCHAR_P (d))
+
+
+/* Free everything we malloc. */
+#ifdef REGEX_MALLOC
+#define FREE_VAR(var) if (var) free (var); var = NULL
+#define FREE_VARIABLES() \
+ do { \
+ FREE_VAR (fail_stack.stack); \
+ FREE_VAR (regstart); \
+ FREE_VAR (regend); \
+ FREE_VAR (old_regstart); \
+ FREE_VAR (old_regend); \
+ FREE_VAR (best_regstart); \
+ FREE_VAR (best_regend); \
+ FREE_VAR (reg_info); \
+ FREE_VAR (reg_dummy); \
+ FREE_VAR (reg_info_dummy); \
+ } while (0)
+#else /* not REGEX_MALLOC */
+/* Some MIPS systems (at least) want this to free alloca'd storage. */
+#define FREE_VARIABLES() alloca (0)
+#endif /* not REGEX_MALLOC */
+
+
+/* These values must meet several constraints. They must not be valid
+ register values; since we have a limit of 255 registers (because
+ we use only one byte in the pattern for the register number), we can
+ use numbers larger than 255. They must differ by 1, because of
+ NUM_FAILURE_ITEMS above. And the value for the lowest register must
+ be larger than the value for the highest register, so we do not try
+ to actually save any registers when none are active. */
+#define NO_HIGHEST_ACTIVE_REG (1 << BYTEWIDTH)
+#define NO_LOWEST_ACTIVE_REG (NO_HIGHEST_ACTIVE_REG + 1)
+
+/* Matching routines. */
+
+#ifndef emacs /* Emacs never uses this. */
+/* re_match is like re_match_2 except it takes only a single string. */
+
+int
+re_match (bufp, string, size, pos, regs)
+ struct re_pattern_buffer *bufp;
+ char *string;
+ int size, pos;
+ struct re_registers *regs;
+ {
+ return re_match_2 (bufp, NULL, 0, string, size, pos, regs, size);
+}
+#endif /* not emacs */
+
+
+/* re_match_2 matches the compiled pattern in BUFP against the
+ the (virtual) concatenation of STRING1 and STRING2 (of length SIZE1
+ and SIZE2, respectively). We start matching at POS, and stop
+ matching at STOP.
+
+ If REGS is non-null and the `no_sub' field of BUFP is nonzero, we
+ store offsets for the substring each group matched in REGS. See the
+ documentation for exactly how many groups we fill.
+
+ We return -1 if no match, -2 if an internal error (such as the
+ failure stack overflowing). Otherwise, we return the length of the
+ matched substring. */
+
+int
+re_match_2 (bufp, string1, size1, string2, size2, pos, regs, stop)
+ struct re_pattern_buffer *bufp;
+ char *string1, *string2;
+ int size1, size2;
+ int pos;
+ struct re_registers *regs;
+ int stop;
+{
+ /* General temporaries. */
+ int mcnt;
+ unsigned char *p1;
+
+ /* Just past the end of the corresponding string. */
+ char *end1, *end2;
+
+ /* Pointers into string1 and string2, just past the last characters in
+ each to consider matching. */
+ char *end_match_1, *end_match_2;
+
+ /* Where we are in the data, and the end of the current string. */
+ char *d, *dend;
+
+ /* Where we are in the pattern, and the end of the pattern. */
+ unsigned char *p = bufp->buffer;
+ register unsigned char *pend = p + bufp->used;
+
+ /* We use this to map every character in the string. */
+ char *translate = bufp->translate;
+
+ /* Failure point stack. Each place that can handle a failure further
+ down the line pushes a failure point on this stack. It consists of
+ restart, regend, and reg_info for all registers corresponding to
+ the subexpressions we're currently inside, plus the number of such
+ registers, and, finally, two char *'s. The first char * is where
+ to resume scanning the pattern; the second one is where to resume
+ scanning the strings. If the latter is zero, the failure point is
+ a ``dummy''; if a failure happens and the failure point is a dummy,
+ it gets discarded and the next next one is tried. */
+ fail_stack_type fail_stack;
+#ifdef DEBUG
+ static unsigned failure_id = 0;
+ unsigned nfailure_points_pushed = 0, nfailure_points_popped = 0;
+#endif
+
+ /* We fill all the registers internally, independent of what we
+ return, for use in backreferences. The number here includes
+ an element for register zero. */
+ unsigned num_regs = bufp->re_nsub + 1;
+
+ /* The currently active registers. */
+ unsigned lowest_active_reg = NO_LOWEST_ACTIVE_REG;
+ unsigned highest_active_reg = NO_HIGHEST_ACTIVE_REG;
+
+ /* Information on the contents of registers. These are pointers into
+ the input strings; they record just what was matched (on this
+ attempt) by a subexpression part of the pattern, that is, the
+ regnum-th regstart pointer points to where in the pattern we began
+ matching and the regnum-th regend points to right after where we
+ stopped matching the regnum-th subexpression. (The zeroth register
+ keeps track of what the whole pattern matches.) */
+ char **regstart, **regend;
+
+ /* If a group that's operated upon by a repetition operator fails to
+ match anything, then the register for its start will need to be
+ restored because it will have been set to wherever in the string we
+ are when we last see its open-group operator. Similarly for a
+ register's end. */
+ char **old_regstart, **old_regend;
+
+ /* The is_active field of reg_info helps us keep track of which (possibly
+ nested) subexpressions we are currently in. The matched_something
+ field of reg_info[reg_num] helps us tell whether or not we have
+ matched any of the pattern so far this time through the reg_num-th
+ subexpression. These two fields get reset each time through any
+ loop their register is in. */
+ register_info_type *reg_info;
+
+ /* The following record the register info as found in the above
+ variables when we find a match better than any we've seen before.
+ This happens as we backtrack through the failure points, which in
+ turn happens only if we have not yet matched the entire string. */
+ unsigned best_regs_set = false;
+ char **best_regstart, **best_regend;
+
+ /* Logically, this is `best_regend[0]'. But we don't want to have to
+ allocate space for that if we're not allocating space for anything
+ else (see below). Also, we never need info about register 0 for
+ any of the other register vectors, and it seems rather a kludge to
+ treat `best_regend' differently than the rest. So we keep track of
+ the end of the best match so far in a separate variable. We
+ initialize this to NULL so that when we backtrack the first time
+ and need to test it, it's not garbage. */
+ char *match_end = NULL;
+
+ /* Used when we pop values we don't care about. */
+ char **reg_dummy;
+ register_info_type *reg_info_dummy;
+
+#ifdef DEBUG
+ /* Counts the total number of registers pushed. */
+ unsigned num_regs_pushed = 0;
+#endif
+
+ DEBUG_PRINT1 ("\n\nEntering re_match_2.\n");
+
+ INIT_FAIL_STACK ();
+
+ /* Do not bother to initialize all the register variables if there are
+ no groups in the pattern, as it takes a fair amount of time. If
+ there are groups, we include space for register 0 (the whole
+ pattern), even though we never use it, since it simplifies the
+ array indexing. We should fix this. */
+ if (bufp->re_nsub)
+ {
+ regstart = REGEX_TALLOC (num_regs, char *);
+ regend = REGEX_TALLOC (num_regs, char *);
+ old_regstart = REGEX_TALLOC (num_regs, char *);
+ old_regend = REGEX_TALLOC (num_regs, char *);
+ best_regstart = REGEX_TALLOC (num_regs, char *);
+ best_regend = REGEX_TALLOC (num_regs, char *);
+ reg_info = REGEX_TALLOC (num_regs, register_info_type);
+ reg_dummy = REGEX_TALLOC (num_regs, char *);
+ reg_info_dummy = REGEX_TALLOC (num_regs, register_info_type);
+
+ if (!(regstart && regend && old_regstart && old_regend && reg_info
+ && best_regstart && best_regend && reg_dummy && reg_info_dummy))
+ {
+ FREE_VARIABLES ();
+ return -2;
+ }
+ }
+#ifdef REGEX_MALLOC
+ else
+ {
+ /* We must initialize all our variables to NULL, so that
+ `FREE_VARIABLES' doesn't try to free them. */
+ regstart = regend = old_regstart = old_regend = best_regstart
+ = best_regend = reg_dummy = NULL;
+ reg_info = reg_info_dummy = (register_info_type *) NULL;
+ }
+#endif /* REGEX_MALLOC */
+
+ /* The starting position is bogus. */
+ if (pos < 0 || pos > size1 + size2)
+ {
+ FREE_VARIABLES ();
+ return -1;
+ }
+
+ /* Initialize subexpression text positions to -1 to mark ones that no
+ start_memory/stop_memory has been seen for. Also initialize the
+ register information struct. */
+ for (mcnt = 1; mcnt < num_regs; mcnt++)
+ {
+ regstart[mcnt] = regend[mcnt]
+ = old_regstart[mcnt] = old_regend[mcnt] = REG_UNSET_VALUE;
+
+ REG_MATCH_NULL_STRING_P (reg_info[mcnt]) = MATCH_NULL_UNSET_VALUE;
+ IS_ACTIVE (reg_info[mcnt]) = 0;
+ MATCHED_SOMETHING (reg_info[mcnt]) = 0;
+ EVER_MATCHED_SOMETHING (reg_info[mcnt]) = 0;
+ }
+
+ /* We move `string1' into `string2' if the latter's empty -- but not if
+ `string1' is null. */
+ if (size2 == 0 && string1 != NULL)
+ {
+ string2 = string1;
+ size2 = size1;
+ string1 = 0;
+ size1 = 0;
+ }
+ end1 = string1 + size1;
+ end2 = string2 + size2;
+
+ /* Compute where to stop matching, within the two strings. */
+ if (stop <= size1)
+ {
+ end_match_1 = string1 + stop;
+ end_match_2 = string2;
+ }
+ else
+ {
+ end_match_1 = end1;
+ end_match_2 = string2 + stop - size1;
+ }
+
+ /* `p' scans through the pattern as `d' scans through the data.
+ `dend' is the end of the input string that `d' points within. `d'
+ is advanced into the following input string whenever necessary, but
+ this happens before fetching; therefore, at the beginning of the
+ loop, `d' can be pointing at the end of a string, but it cannot
+ equal `string2'. */
+ if (size1 > 0 && pos <= size1)
+ {
+ d = string1 + pos;
+ dend = end_match_1;
+ }
+ else
+ {
+ d = string2 + pos - size1;
+ dend = end_match_2;
+ }
+
+ DEBUG_PRINT1 ("The compiled pattern is: ");
+ DEBUG_PRINT_COMPILED_PATTERN (bufp, p, pend);
+ DEBUG_PRINT1 ("The string to match is: `");
+ DEBUG_PRINT_DOUBLE_STRING (d, string1, size1, string2, size2);
+ DEBUG_PRINT1 ("'\n");
+
+ /* This loops over pattern commands. It exits by returning from the
+ function if the match is complete, or it drops through if the match
+ fails at this starting point in the input data. */
+ for (;;)
+ {
+ DEBUG_PRINT2 ("\n0x%x: ", p);
+
+ if (p == pend)
+ { /* End of pattern means we might have succeeded. */
+ DEBUG_PRINT1 ("end of pattern ... ");
+
+ /* If we haven't matched the entire string, and we want the
+ longest match, try backtracking. */
+ if (d != end_match_2)
+ {
+ DEBUG_PRINT1 ("backtracking.\n");
+
+ if (!FAIL_STACK_EMPTY ())
+ { /* More failure points to try. */
+ boolean same_str_p = (FIRST_STRING_P (match_end)
+ == MATCHING_IN_FIRST_STRING);
+
+ /* If exceeds best match so far, save it. */
+ if (!best_regs_set
+ || (same_str_p && d > match_end)
+ || (!same_str_p && !MATCHING_IN_FIRST_STRING))
+ {
+ best_regs_set = true;
+ match_end = d;
+
+ DEBUG_PRINT1 ("\nSAVING match as best so far.\n");
+
+ for (mcnt = 1; mcnt < num_regs; mcnt++)
+ {
+ best_regstart[mcnt] = regstart[mcnt];
+ best_regend[mcnt] = regend[mcnt];
+ }
+ }
+ goto fail;
+ }
+
+ /* If no failure points, don't restore garbage. */
+ else if (best_regs_set)
+ {
+ restore_best_regs:
+ /* Restore best match. It may happen that `dend ==
+ end_match_1' while the restored d is in string2.
+ For example, the pattern `x.*y.*z' against the
+ strings `x-' and `y-z-', if the two strings are
+ not consecutive in memory. */
+ DEBUG_PRINT1 ("Restoring best registers.\n");
+
+ d = match_end;
+ dend = ((d >= string1 && d <= end1)
+ ? end_match_1 : end_match_2);
+
+ for (mcnt = 1; mcnt < num_regs; mcnt++)
+ {
+ regstart[mcnt] = best_regstart[mcnt];
+ regend[mcnt] = best_regend[mcnt];
+ }
+ }
+ } /* d != end_match_2 */
+
+ DEBUG_PRINT1 ("Accepting match.\n");
+
+ /* If caller wants register contents data back, do it. */
+ if (regs && !bufp->no_sub)
+ {
+ /* Have the register data arrays been allocated? */
+ if (bufp->regs_allocated == REGS_UNALLOCATED)
+ { /* No. So allocate them with malloc. We need one
+ extra element beyond `num_regs' for the `-1' marker
+ GNU code uses. */
+ regs->num_regs = MAX (RE_NREGS, num_regs + 1);
+ regs->start = TALLOC (regs->num_regs, regoff_t);
+ regs->end = TALLOC (regs->num_regs, regoff_t);
+ if (regs->start == NULL || regs->end == NULL)
+ return -2;
+ bufp->regs_allocated = REGS_REALLOCATE;
+ }
+ else if (bufp->regs_allocated == REGS_REALLOCATE)
+ { /* Yes. If we need more elements than were already
+ allocated, reallocate them. If we need fewer, just
+ leave it alone. */
+ if (regs->num_regs < num_regs + 1)
+ {
+ regs->num_regs = num_regs + 1;
+ RETALLOC (regs->start, regs->num_regs, regoff_t);
+ RETALLOC (regs->end, regs->num_regs, regoff_t);
+ if (regs->start == NULL || regs->end == NULL)
+ return -2;
+ }
+ }
+ else
+ assert (bufp->regs_allocated == REGS_FIXED);
+
+ /* Convert the pointer data in `regstart' and `regend' to
+ indices. Register zero has to be set differently,
+ since we haven't kept track of any info for it. */
+ if (regs->num_regs > 0)
+ {
+ regs->start[0] = pos;
+ regs->end[0] = (MATCHING_IN_FIRST_STRING ? d - string1
+ : d - string2 + size1);
+ }
+
+ /* Go through the first `min (num_regs, regs->num_regs)'
+ registers, since that is all we initialized. */
+ for (mcnt = 1; mcnt < MIN (num_regs, regs->num_regs); mcnt++)
+ {
+ if (REG_UNSET (regstart[mcnt]) || REG_UNSET (regend[mcnt]))
+ regs->start[mcnt] = regs->end[mcnt] = -1;
+ else
+ {
+ regs->start[mcnt] = POINTER_TO_OFFSET (regstart[mcnt]);
+ regs->end[mcnt] = POINTER_TO_OFFSET (regend[mcnt]);
+ }
+ }
+
+ /* If the regs structure we return has more elements than
+ were in the pattern, set the extra elements to -1. If
+ we (re)allocated the registers, this is the case,
+ because we always allocate enough to have at least one
+ -1 at the end. */
+ for (mcnt = num_regs; mcnt < regs->num_regs; mcnt++)
+ regs->start[mcnt] = regs->end[mcnt] = -1;
+ } /* regs && !bufp->no_sub */
+
+ FREE_VARIABLES ();
+ DEBUG_PRINT4 ("%u failure points pushed, %u popped (%u remain).\n",
+ nfailure_points_pushed, nfailure_points_popped,
+ nfailure_points_pushed - nfailure_points_popped);
+ DEBUG_PRINT2 ("%u registers pushed.\n", num_regs_pushed);
+
+ mcnt = d - pos - (MATCHING_IN_FIRST_STRING
+ ? string1
+ : string2 - size1);
+
+ DEBUG_PRINT2 ("Returning %d from re_match_2.\n", mcnt);
+
+ return mcnt;
+ }
+
+ /* Otherwise match next pattern command. */
+#ifdef SWITCH_ENUM_BUG
+ switch ((int) ((re_opcode_t) *p++))
+#else
+ switch ((re_opcode_t) *p++)
+#endif
+ {
+ /* Ignore these. Used to ignore the n of succeed_n's which
+ currently have n == 0. */
+ case no_op:
+ DEBUG_PRINT1 ("EXECUTING no_op.\n");
+ break;
+
+
+ /* Match the next n pattern characters exactly. The following
+ byte in the pattern defines n, and the n bytes after that
+ are the characters to match. */
+ case exactn:
+ mcnt = *p++;
+ DEBUG_PRINT2 ("EXECUTING exactn %d.\n", mcnt);
+
+ /* This is written out as an if-else so we don't waste time
+ testing `translate' inside the loop. */
+ if (translate)
+ {
+ do
+ {
+ PREFETCH ();
+ if (translate[(unsigned char) *d++] != (char) *p++)
+ goto fail;
+ }
+ while (--mcnt);
+ }
+ else
+ {
+ do
+ {
+ PREFETCH ();
+ if (*d++ != (char) *p++) goto fail;
+ }
+ while (--mcnt);
+ }
+ SET_REGS_MATCHED ();
+ break;
+
+
+ /* Match any character except possibly a newline or a null. */
+ case anychar:
+ DEBUG_PRINT1 ("EXECUTING anychar.\n");
+
+ PREFETCH ();
+
+ if ((!(bufp->syntax & RE_DOT_NEWLINE) && TRANSLATE (*d) == '\n')
+ || (bufp->syntax & RE_DOT_NOT_NULL && TRANSLATE (*d) == '\000'))
+ goto fail;
+
+ SET_REGS_MATCHED ();
+ DEBUG_PRINT2 (" Matched `%d'.\n", *d);
+ d++;
+ break;
+
+
+ case charset:
+ case charset_not:
+ {
+ register unsigned char c;
+ boolean not = (re_opcode_t) *(p - 1) == charset_not;
+
+ DEBUG_PRINT2 ("EXECUTING charset%s.\n", not ? "_not" : "");
+
+ PREFETCH ();
+ c = TRANSLATE (*d); /* The character to match. */
+
+ /* Cast to `unsigned' instead of `unsigned char' in case the
+ bit list is a full 32 bytes long. */
+ if (c < (unsigned) (*p * BYTEWIDTH)
+ && p[1 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
+ not = !not;
+
+ p += 1 + *p;
+
+ if (!not) goto fail;
+
+ SET_REGS_MATCHED ();
+ d++;
+ break;
+ }
+
+
+ /* The beginning of a group is represented by start_memory.
+ The arguments are the register number in the next byte, and the
+ number of groups inner to this one in the next. The text
+ matched within the group is recorded (in the internal
+ registers data structure) under the register number. */
+ case start_memory:
+ DEBUG_PRINT3 ("EXECUTING start_memory %d (%d):\n", *p, p[1]);
+
+ /* Find out if this group can match the empty string. */
+ p1 = p; /* To send to group_match_null_string_p. */
+
+ if (REG_MATCH_NULL_STRING_P (reg_info[*p]) == MATCH_NULL_UNSET_VALUE)
+ REG_MATCH_NULL_STRING_P (reg_info[*p])
+ = group_match_null_string_p (&p1, pend, reg_info);
+
+ /* Save the position in the string where we were the last time
+ we were at this open-group operator in case the group is
+ operated upon by a repetition operator, e.g., with `(a*)*b'
+ against `ab'; then we want to ignore where we are now in
+ the string in case this attempt to match fails. */
+ old_regstart[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p])
+ ? REG_UNSET (regstart[*p]) ? d : regstart[*p]
+ : regstart[*p];
+ DEBUG_PRINT2 (" old_regstart: %d\n",
+ POINTER_TO_OFFSET (old_regstart[*p]));
+
+ regstart[*p] = d;
+ DEBUG_PRINT2 (" regstart: %d\n", POINTER_TO_OFFSET (regstart[*p]));
+
+ IS_ACTIVE (reg_info[*p]) = 1;
+ MATCHED_SOMETHING (reg_info[*p]) = 0;
+
+ /* This is the new highest active register. */
+ highest_active_reg = *p;
+
+ /* If nothing was active before, this is the new lowest active
+ register. */
+ if (lowest_active_reg == NO_LOWEST_ACTIVE_REG)
+ lowest_active_reg = *p;
+
+ /* Move past the register number and inner group count. */
+ p += 2;
+ break;
+
+
+ /* The stop_memory opcode represents the end of a group. Its
+ arguments are the same as start_memory's: the register
+ number, and the number of inner groups. */
+ case stop_memory:
+ DEBUG_PRINT3 ("EXECUTING stop_memory %d (%d):\n", *p, p[1]);
+
+ /* We need to save the string position the last time we were at
+ this close-group operator in case the group is operated
+ upon by a repetition operator, e.g., with `((a*)*(b*)*)*'
+ against `aba'; then we want to ignore where we are now in
+ the string in case this attempt to match fails. */
+ old_regend[*p] = REG_MATCH_NULL_STRING_P (reg_info[*p])
+ ? REG_UNSET (regend[*p]) ? d : regend[*p]
+ : regend[*p];
+ DEBUG_PRINT2 (" old_regend: %d\n",
+ POINTER_TO_OFFSET (old_regend[*p]));
+
+ regend[*p] = d;
+ DEBUG_PRINT2 (" regend: %d\n", POINTER_TO_OFFSET (regend[*p]));
+
+ /* This register isn't active anymore. */
+ IS_ACTIVE (reg_info[*p]) = 0;
+
+ /* If this was the only register active, nothing is active
+ anymore. */
+ if (lowest_active_reg == highest_active_reg)
+ {
+ lowest_active_reg = NO_LOWEST_ACTIVE_REG;
+ highest_active_reg = NO_HIGHEST_ACTIVE_REG;
+ }
+ else
+ { /* We must scan for the new highest active register, since
+ it isn't necessarily one less than now: consider
+ (a(b)c(d(e)f)g). When group 3 ends, after the f), the
+ new highest active register is 1. */
+ unsigned char r = *p - 1;
+ while (r > 0 && !IS_ACTIVE (reg_info[r]))
+ r--;
+
+ /* If we end up at register zero, that means that we saved
+ the registers as the result of an `on_failure_jump', not
+ a `start_memory', and we jumped to past the innermost
+ `stop_memory'. For example, in ((.)*) we save
+ registers 1 and 2 as a result of the *, but when we pop
+ back to the second ), we are at the stop_memory 1.
+ Thus, nothing is active. */
+ if (r == 0)
+ {
+ lowest_active_reg = NO_LOWEST_ACTIVE_REG;
+ highest_active_reg = NO_HIGHEST_ACTIVE_REG;
+ }
+ else
+ highest_active_reg = r;
+ }
+
+ /* If just failed to match something this time around with a
+ group that's operated on by a repetition operator, try to
+ force exit from the ``loop'', and restore the register
+ information for this group that we had before trying this
+ last match. */
+ if ((!MATCHED_SOMETHING (reg_info[*p])
+ || (re_opcode_t) p[-3] == start_memory)
+ && (p + 2) < pend)
+ {
+ boolean is_a_jump_n = false;
+
+ p1 = p + 2;
+ mcnt = 0;
+ switch ((re_opcode_t) *p1++)
+ {
+ case jump_n:
+ is_a_jump_n = true;
+ case pop_failure_jump:
+ case maybe_pop_jump:
+ case jump:
+ case dummy_failure_jump:
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+ if (is_a_jump_n)
+ p1 += 2;
+ break;
+
+ default:
+ /* do nothing */ ;
+ }
+ p1 += mcnt;
+
+ /* If the next operation is a jump backwards in the pattern
+ to an on_failure_jump right before the start_memory
+ corresponding to this stop_memory, exit from the loop
+ by forcing a failure after pushing on the stack the
+ on_failure_jump's jump in the pattern, and d. */
+ if (mcnt < 0 && (re_opcode_t) *p1 == on_failure_jump
+ && (re_opcode_t) p1[3] == start_memory && p1[4] == *p)
+ {
+ /* If this group ever matched anything, then restore
+ what its registers were before trying this last
+ failed match, e.g., with `(a*)*b' against `ab' for
+ regstart[1], and, e.g., with `((a*)*(b*)*)*'
+ against `aba' for regend[3].
+
+ Also restore the registers for inner groups for,
+ e.g., `((a*)(b*))*' against `aba' (register 3 would
+ otherwise get trashed). */
+
+ if (EVER_MATCHED_SOMETHING (reg_info[*p]))
+ {
+ unsigned r;
+
+ EVER_MATCHED_SOMETHING (reg_info[*p]) = 0;
+
+ /* Restore this and inner groups' (if any) registers. */
+ for (r = *p; r < *p + *(p + 1); r++)
+ {
+ regstart[r] = old_regstart[r];
+
+ /* xx why this test? */
+ if ((long) old_regend[r] >= (long) regstart[r])
+ regend[r] = old_regend[r];
+ }
+ }
+ p1++;
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+ PUSH_FAILURE_POINT (p1 + mcnt, d, -2);
+
+ goto fail;
+ }
+ }
+
+ /* Move past the register number and the inner group count. */
+ p += 2;
+ break;
+
+
+ /* \<digit> has been turned into a `duplicate' command which is
+ followed by the numeric value of <digit> as the register number. */
+ case duplicate:
+ {
+ register char *d2, *dend2;
+ int regno = *p++; /* Get which register to match against. */
+ DEBUG_PRINT2 ("EXECUTING duplicate %d.\n", regno);
+
+ /* Can't back reference a group which we've never matched. */
+ if (REG_UNSET (regstart[regno]) || REG_UNSET (regend[regno]))
+ goto fail;
+
+ /* Where in input to try to start matching. */
+ d2 = regstart[regno];
+
+ /* Where to stop matching; if both the place to start and
+ the place to stop matching are in the same string, then
+ set to the place to stop, otherwise, for now have to use
+ the end of the first string. */
+
+ dend2 = ((FIRST_STRING_P (regstart[regno])
+ == FIRST_STRING_P (regend[regno]))
+ ? regend[regno] : end_match_1);
+ for (;;)
+ {
+ /* If necessary, advance to next segment in register
+ contents. */
+ while (d2 == dend2)
+ {
+ if (dend2 == end_match_2) break;
+ if (dend2 == regend[regno]) break;
+
+ /* End of string1 => advance to string2. */
+ d2 = string2;
+ dend2 = regend[regno];
+ }
+ /* At end of register contents => success */
+ if (d2 == dend2) break;
+
+ /* If necessary, advance to next segment in data. */
+ PREFETCH ();
+
+ /* How many characters left in this segment to match. */
+ mcnt = dend - d;
+
+ /* Want how many consecutive characters we can match in
+ one shot, so, if necessary, adjust the count. */
+ if (mcnt > dend2 - d2)
+ mcnt = dend2 - d2;
+
+ /* Compare that many; failure if mismatch, else move
+ past them. */
+ if (translate
+ ? bcmp_translate (d, d2, mcnt, translate)
+ : bcmp (d, d2, mcnt))
+ goto fail;
+ d += mcnt, d2 += mcnt;
+ }
+ }
+ break;
+
+
+ /* begline matches the empty string at the beginning of the string
+ (unless `not_bol' is set in `bufp'), and, if
+ `newline_anchor' is set, after newlines. */
+ case begline:
+ DEBUG_PRINT1 ("EXECUTING begline.\n");
+
+ if (AT_STRINGS_BEG (d))
+ {
+ if (!bufp->not_bol) break;
+ }
+ else if (d[-1] == '\n' && bufp->newline_anchor)
+ {
+ break;
+ }
+ /* In all other cases, we fail. */
+ goto fail;
+
+
+ /* endline is the dual of begline. */
+ case endline:
+ DEBUG_PRINT1 ("EXECUTING endline.\n");
+
+ if (AT_STRINGS_END (d))
+ {
+ if (!bufp->not_eol) break;
+ }
+
+ /* We have to ``prefetch'' the next character. */
+ else if ((d == end1 ? *string2 : *d) == '\n'
+ && bufp->newline_anchor)
+ {
+ break;
+ }
+ goto fail;
+
+
+ /* Match at the very beginning of the data. */
+ case begbuf:
+ DEBUG_PRINT1 ("EXECUTING begbuf.\n");
+ if (AT_STRINGS_BEG (d))
+ break;
+ goto fail;
+
+
+ /* Match at the very end of the data. */
+ case endbuf:
+ DEBUG_PRINT1 ("EXECUTING endbuf.\n");
+ if (AT_STRINGS_END (d))
+ break;
+ goto fail;
+
+
+ /* on_failure_keep_string_jump is used to optimize `.*\n'. It
+ pushes NULL as the value for the string on the stack. Then
+ `pop_failure_point' will keep the current value for the
+ string, instead of restoring it. To see why, consider
+ matching `foo\nbar' against `.*\n'. The .* matches the foo;
+ then the . fails against the \n. But the next thing we want
+ to do is match the \n against the \n; if we restored the
+ string value, we would be back at the foo.
+
+ Because this is used only in specific cases, we don't need to
+ check all the things that `on_failure_jump' does, to make
+ sure the right things get saved on the stack. Hence we don't
+ share its code. The only reason to push anything on the
+ stack at all is that otherwise we would have to change
+ `anychar's code to do something besides goto fail in this
+ case; that seems worse than this. */
+ case on_failure_keep_string_jump:
+ DEBUG_PRINT1 ("EXECUTING on_failure_keep_string_jump");
+
+ EXTRACT_NUMBER_AND_INCR (mcnt, p);
+ DEBUG_PRINT3 (" %d (to 0x%x):\n", mcnt, p + mcnt);
+
+ PUSH_FAILURE_POINT (p + mcnt, NULL, -2);
+ break;
+
+
+ /* Uses of on_failure_jump:
+
+ Each alternative starts with an on_failure_jump that points
+ to the beginning of the next alternative. Each alternative
+ except the last ends with a jump that in effect jumps past
+ the rest of the alternatives. (They really jump to the
+ ending jump of the following alternative, because tensioning
+ these jumps is a hassle.)
+
+ Repeats start with an on_failure_jump that points past both
+ the repetition text and either the following jump or
+ pop_failure_jump back to this on_failure_jump. */
+ case on_failure_jump:
+ on_failure:
+ DEBUG_PRINT1 ("EXECUTING on_failure_jump");
+
+ EXTRACT_NUMBER_AND_INCR (mcnt, p);
+ DEBUG_PRINT3 (" %d (to 0x%x)", mcnt, p + mcnt);
+
+ /* If this on_failure_jump comes right before a group (i.e.,
+ the original * applied to a group), save the information
+ for that group and all inner ones, so that if we fail back
+ to this point, the group's information will be correct.
+ For example, in \(a*\)*\1, we need the preceding group,
+ and in \(\(a*\)b*\)\2, we need the inner group. */
+
+ /* We can't use `p' to check ahead because we push
+ a failure point to `p + mcnt' after we do this. */
+ p1 = p;
+
+ /* We need to skip no_op's before we look for the
+ start_memory in case this on_failure_jump is happening as
+ the result of a completed succeed_n, as in \(a\)\{1,3\}b\1
+ against aba. */
+ while (p1 < pend && (re_opcode_t) *p1 == no_op)
+ p1++;
+
+ if (p1 < pend && (re_opcode_t) *p1 == start_memory)
+ {
+ /* We have a new highest active register now. This will
+ get reset at the start_memory we are about to get to,
+ but we will have saved all the registers relevant to
+ this repetition op, as described above. */
+ highest_active_reg = *(p1 + 1) + *(p1 + 2);
+ if (lowest_active_reg == NO_LOWEST_ACTIVE_REG)
+ lowest_active_reg = *(p1 + 1);
+ }
+
+ DEBUG_PRINT1 (":\n");
+ PUSH_FAILURE_POINT (p + mcnt, d, -2);
+ break;
+
+
+ /* A smart repeat ends with `maybe_pop_jump'.
+ We change it to either `pop_failure_jump' or `jump'. */
+ case maybe_pop_jump:
+ EXTRACT_NUMBER_AND_INCR (mcnt, p);
+ DEBUG_PRINT2 ("EXECUTING maybe_pop_jump %d.\n", mcnt);
+ {
+ register unsigned char *p2 = p;
+
+ /* Compare the beginning of the repeat with what in the
+ pattern follows its end. If we can establish that there
+ is nothing that they would both match, i.e., that we
+ would have to backtrack because of (as in, e.g., `a*a')
+ then we can change to pop_failure_jump, because we'll
+ never have to backtrack.
+
+ This is not true in the case of alternatives: in
+ `(a|ab)*' we do need to backtrack to the `ab' alternative
+ (e.g., if the string was `ab'). But instead of trying to
+ detect that here, the alternative has put on a dummy
+ failure point which is what we will end up popping. */
+
+ /* Skip over open/close-group commands. */
+ while (p2 + 2 < pend
+ && ((re_opcode_t) *p2 == stop_memory
+ || (re_opcode_t) *p2 == start_memory))
+ p2 += 3; /* Skip over args, too. */
+
+ /* If we're at the end of the pattern, we can change. */
+ if (p2 == pend)
+ {
+ /* Consider what happens when matching ":\(.*\)"
+ against ":/". I don't really understand this code
+ yet. */
+ p[-3] = (unsigned char) pop_failure_jump;
+ DEBUG_PRINT1
+ (" End of pattern: change to `pop_failure_jump'.\n");
+ }
+
+ else if ((re_opcode_t) *p2 == exactn
+ || (bufp->newline_anchor && (re_opcode_t) *p2 == endline))
+ {
+ register unsigned char c
+ = *p2 == (unsigned char) endline ? '\n' : p2[2];
+ p1 = p + mcnt;
+
+ /* p1[0] ... p1[2] are the `on_failure_jump' corresponding
+ to the `maybe_finalize_jump' of this case. Examine what
+ follows. */
+ if ((re_opcode_t) p1[3] == exactn && p1[5] != c)
+ {
+ p[-3] = (unsigned char) pop_failure_jump;
+ DEBUG_PRINT3 (" %c != %c => pop_failure_jump.\n",
+ c, p1[5]);
+ }
+
+ else if ((re_opcode_t) p1[3] == charset
+ || (re_opcode_t) p1[3] == charset_not)
+ {
+ int not = (re_opcode_t) p1[3] == charset_not;
+
+ if (c < (unsigned char) (p1[4] * BYTEWIDTH)
+ && p1[5 + c / BYTEWIDTH] & (1 << (c % BYTEWIDTH)))
+ not = !not;
+
+ /* `not' is equal to 1 if c would match, which means
+ that we can't change to pop_failure_jump. */
+ if (!not)
+ {
+ p[-3] = (unsigned char) pop_failure_jump;
+ DEBUG_PRINT1 (" No match => pop_failure_jump.\n");
+ }
+ }
+ }
+ }
+ p -= 2; /* Point at relative address again. */
+ if ((re_opcode_t) p[-1] != pop_failure_jump)
+ {
+ p[-1] = (unsigned char) jump;
+ DEBUG_PRINT1 (" Match => jump.\n");
+ goto unconditional_jump;
+ }
+ /* Note fall through. */
+
+
+ /* The end of a simple repeat has a pop_failure_jump back to
+ its matching on_failure_jump, where the latter will push a
+ failure point. The pop_failure_jump takes off failure
+ points put on by this pop_failure_jump's matching
+ on_failure_jump; we got through the pattern to here from the
+ matching on_failure_jump, so didn't fail. */
+ case pop_failure_jump:
+ {
+ /* We need to pass separate storage for the lowest and
+ highest registers, even though we don't care about the
+ actual values. Otherwise, we will restore only one
+ register from the stack, since lowest will == highest in
+ `pop_failure_point'. */
+ unsigned dummy_low_reg, dummy_high_reg;
+ unsigned char *pdummy;
+ char *sdummy;
+
+ DEBUG_PRINT1 ("EXECUTING pop_failure_jump.\n");
+ POP_FAILURE_POINT (sdummy, pdummy,
+ dummy_low_reg, dummy_high_reg,
+ reg_dummy, reg_dummy, reg_info_dummy);
+ }
+ /* Note fall through. */
+
+
+ /* Unconditionally jump (without popping any failure points). */
+ case jump:
+ unconditional_jump:
+ EXTRACT_NUMBER_AND_INCR (mcnt, p); /* Get the amount to jump. */
+ DEBUG_PRINT2 ("EXECUTING jump %d ", mcnt);
+ p += mcnt; /* Do the jump. */
+ DEBUG_PRINT2 ("(to 0x%x).\n", p);
+ break;
+
+
+ /* We need this opcode so we can detect where alternatives end
+ in `group_match_null_string_p' et al. */
+ case jump_past_alt:
+ DEBUG_PRINT1 ("EXECUTING jump_past_alt.\n");
+ goto unconditional_jump;
+
+
+ /* Normally, the on_failure_jump pushes a failure point, which
+ then gets popped at pop_failure_jump. We will end up at
+ pop_failure_jump, also, and with a pattern of, say, `a+', we
+ are skipping over the on_failure_jump, so we have to push
+ something meaningless for pop_failure_jump to pop. */
+ case dummy_failure_jump:
+ DEBUG_PRINT1 ("EXECUTING dummy_failure_jump.\n");
+ /* It doesn't matter what we push for the string here. What
+ the code at `fail' tests is the value for the pattern. */
+ PUSH_FAILURE_POINT (0, 0, -2);
+ goto unconditional_jump;
+
+
+ /* At the end of an alternative, we need to push a dummy failure
+ point in case we are followed by a `pop_failure_jump', because
+ we don't want the failure point for the alternative to be
+ popped. For example, matching `(a|ab)*' against `aab'
+ requires that we match the `ab' alternative. */
+ case push_dummy_failure:
+ DEBUG_PRINT1 ("EXECUTING push_dummy_failure.\n");
+ /* See comments just above at `dummy_failure_jump' about the
+ two zeroes. */
+ PUSH_FAILURE_POINT (0, 0, -2);
+ break;
+
+ /* Have to succeed matching what follows at least n times.
+ After that, handle like `on_failure_jump'. */
+ case succeed_n:
+ EXTRACT_NUMBER (mcnt, p + 2);
+ DEBUG_PRINT2 ("EXECUTING succeed_n %d.\n", mcnt);
+
+ assert (mcnt >= 0);
+ /* Originally, this is how many times we HAVE to succeed. */
+ if (mcnt > 0)
+ {
+ mcnt--;
+ p += 2;
+ STORE_NUMBER_AND_INCR (p, mcnt);
+ DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p, mcnt);
+ }
+ else if (mcnt == 0)
+ {
+ DEBUG_PRINT2 (" Setting two bytes from 0x%x to no_op.\n", p+2);
+ p[2] = (unsigned char) no_op;
+ p[3] = (unsigned char) no_op;
+ goto on_failure;
+ }
+ break;
+
+ case jump_n:
+ EXTRACT_NUMBER (mcnt, p + 2);
+ DEBUG_PRINT2 ("EXECUTING jump_n %d.\n", mcnt);
+
+ /* Originally, this is how many times we CAN jump. */
+ if (mcnt)
+ {
+ mcnt--;
+ STORE_NUMBER (p + 2, mcnt);
+ goto unconditional_jump;
+ }
+ /* If don't have to jump any more, skip over the rest of command. */
+ else
+ p += 4;
+ break;
+
+ case set_number_at:
+ {
+ DEBUG_PRINT1 ("EXECUTING set_number_at.\n");
+
+ EXTRACT_NUMBER_AND_INCR (mcnt, p);
+ p1 = p + mcnt;
+ EXTRACT_NUMBER_AND_INCR (mcnt, p);
+ DEBUG_PRINT3 (" Setting 0x%x to %d.\n", p1, mcnt);
+ STORE_NUMBER (p1, mcnt);
+ break;
+ }
+
+ case wordbound:
+ DEBUG_PRINT1 ("EXECUTING wordbound.\n");
+ if (AT_WORD_BOUNDARY (d))
+ break;
+ goto fail;
+
+ case notwordbound:
+ DEBUG_PRINT1 ("EXECUTING notwordbound.\n");
+ if (AT_WORD_BOUNDARY (d))
+ goto fail;
+ break;
+
+ case wordbeg:
+ DEBUG_PRINT1 ("EXECUTING wordbeg.\n");
+ if (WORDCHAR_P (d) && (AT_STRINGS_BEG (d) || !WORDCHAR_P (d - 1)))
+ break;
+ goto fail;
+
+ case wordend:
+ DEBUG_PRINT1 ("EXECUTING wordend.\n");
+ if (!AT_STRINGS_BEG (d) && WORDCHAR_P (d - 1)
+ && (!WORDCHAR_P (d) || AT_STRINGS_END (d)))
+ break;
+ goto fail;
+
+#ifdef emacs
+#ifdef emacs19
+ case before_dot:
+ DEBUG_PRINT1 ("EXECUTING before_dot.\n");
+ if (PTR_CHAR_POS ((unsigned char *) d) >= point)
+ goto fail;
+ break;
+
+ case at_dot:
+ DEBUG_PRINT1 ("EXECUTING at_dot.\n");
+ if (PTR_CHAR_POS ((unsigned char *) d) != point)
+ goto fail;
+ break;
+
+ case after_dot:
+ DEBUG_PRINT1 ("EXECUTING after_dot.\n");
+ if (PTR_CHAR_POS ((unsigned char *) d) <= point)
+ goto fail;
+ break;
+#else /* not emacs19 */
+ case at_dot:
+ DEBUG_PRINT1 ("EXECUTING at_dot.\n");
+ if (PTR_CHAR_POS ((unsigned char *) d) + 1 != point)
+ goto fail;
+ break;
+#endif /* not emacs19 */
+
+ case syntaxspec:
+ DEBUG_PRINT2 ("EXECUTING syntaxspec %d.\n", mcnt);
+ mcnt = *p++;
+ goto matchsyntax;
+
+ case wordchar:
+ DEBUG_PRINT1 ("EXECUTING Emacs wordchar.\n");
+ mcnt = (int) Sword;
+ matchsyntax:
+ PREFETCH ();
+ if (SYNTAX (*d++) != (enum syntaxcode) mcnt)
+ goto fail;
+ SET_REGS_MATCHED ();
+ break;
+
+ case notsyntaxspec:
+ DEBUG_PRINT2 ("EXECUTING notsyntaxspec %d.\n", mcnt);
+ mcnt = *p++;
+ goto matchnotsyntax;
+
+ case notwordchar:
+ DEBUG_PRINT1 ("EXECUTING Emacs notwordchar.\n");
+ mcnt = (int) Sword;
+ matchnotsyntax:
+ PREFETCH ();
+ if (SYNTAX (*d++) == (enum syntaxcode) mcnt)
+ goto fail;
+ SET_REGS_MATCHED ();
+ break;
+
+#else /* not emacs */
+ case wordchar:
+ DEBUG_PRINT1 ("EXECUTING non-Emacs wordchar.\n");
+ PREFETCH ();
+ if (!WORDCHAR_P (d))
+ goto fail;
+ SET_REGS_MATCHED ();
+ d++;
+ break;
+
+ case notwordchar:
+ DEBUG_PRINT1 ("EXECUTING non-Emacs notwordchar.\n");
+ PREFETCH ();
+ if (WORDCHAR_P (d))
+ goto fail;
+ SET_REGS_MATCHED ();
+ d++;
+ break;
+#endif /* not emacs */
+
+ default:
+ abort ();
+ }
+ continue; /* Successfully executed one pattern command; keep going. */
+
+
+ /* We goto here if a matching operation fails. */
+ fail:
+ if (!FAIL_STACK_EMPTY ())
+ { /* A restart point is known. Restore to that state. */
+ DEBUG_PRINT1 ("\nFAIL:\n");
+ POP_FAILURE_POINT (d, p,
+ lowest_active_reg, highest_active_reg,
+ regstart, regend, reg_info);
+
+ /* If this failure point is a dummy, try the next one. */
+ if (!p)
+ goto fail;
+
+ /* If we failed to the end of the pattern, don't examine *p. */
+ assert (p <= pend);
+ if (p < pend)
+ {
+ boolean is_a_jump_n = false;
+
+ /* If failed to a backwards jump that's part of a repetition
+ loop, need to pop this failure point and use the next one. */
+ switch ((re_opcode_t) *p)
+ {
+ case jump_n:
+ is_a_jump_n = true;
+ case maybe_pop_jump:
+ case pop_failure_jump:
+ case jump:
+ p1 = p + 1;
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+ p1 += mcnt;
+
+ if ((is_a_jump_n && (re_opcode_t) *p1 == succeed_n)
+ || (!is_a_jump_n
+ && (re_opcode_t) *p1 == on_failure_jump))
+ goto fail;
+ break;
+ default:
+ /* do nothing */ ;
+ }
+ }
+
+ if (d >= string1 && d <= end1)
+ dend = end_match_1;
+ }
+ else
+ break; /* Matching at this starting point really fails. */
+ } /* for (;;) */
+
+ if (best_regs_set)
+ goto restore_best_regs;
+
+ FREE_VARIABLES ();
+
+ return -1; /* Failure to match. */
+} /* re_match_2 */
+
+/* Subroutine definitions for re_match_2. */
+
+
+/* We are passed P pointing to a register number after a start_memory.
+
+ Return true if the pattern up to the corresponding stop_memory can
+ match the empty string, and false otherwise.
+
+ If we find the matching stop_memory, sets P to point to one past its number.
+ Otherwise, sets P to an undefined byte less than or equal to END.
+
+ We don't handle duplicates properly (yet). */
+
+static boolean
+group_match_null_string_p (p, end, reg_info)
+ unsigned char **p, *end;
+ register_info_type *reg_info;
+{
+ int mcnt;
+ /* Point to after the args to the start_memory. */
+ unsigned char *p1 = *p + 2;
+
+ while (p1 < end)
+ {
+ /* Skip over opcodes that can match nothing, and return true or
+ false, as appropriate, when we get to one that can't, or to the
+ matching stop_memory. */
+
+ switch ((re_opcode_t) *p1)
+ {
+ /* Could be either a loop or a series of alternatives. */
+ case on_failure_jump:
+ p1++;
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+
+ /* If the next operation is not a jump backwards in the
+ pattern. */
+
+ if (mcnt >= 0)
+ {
+ /* Go through the on_failure_jumps of the alternatives,
+ seeing if any of the alternatives cannot match nothing.
+ The last alternative starts with only a jump,
+ whereas the rest start with on_failure_jump and end
+ with a jump, e.g., here is the pattern for `a|b|c':
+
+ /on_failure_jump/0/6/exactn/1/a/jump_past_alt/0/6
+ /on_failure_jump/0/6/exactn/1/b/jump_past_alt/0/3
+ /exactn/1/c
+
+ So, we have to first go through the first (n-1)
+ alternatives and then deal with the last one separately. */
+
+
+ /* Deal with the first (n-1) alternatives, which start
+ with an on_failure_jump (see above) that jumps to right
+ past a jump_past_alt. */
+
+ while ((re_opcode_t) p1[mcnt-3] == jump_past_alt)
+ {
+ /* `mcnt' holds how many bytes long the alternative
+ is, including the ending `jump_past_alt' and
+ its number. */
+
+ if (!alt_match_null_string_p (p1, p1 + mcnt - 3,
+ reg_info))
+ return false;
+
+ /* Move to right after this alternative, including the
+ jump_past_alt. */
+ p1 += mcnt;
+
+ /* Break if it's the beginning of an n-th alternative
+ that doesn't begin with an on_failure_jump. */
+ if ((re_opcode_t) *p1 != on_failure_jump)
+ break;
+
+ /* Still have to check that it's not an n-th
+ alternative that starts with an on_failure_jump. */
+ p1++;
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+ if ((re_opcode_t) p1[mcnt-3] != jump_past_alt)
+ {
+ /* Get to the beginning of the n-th alternative. */
+ p1 -= 3;
+ break;
+ }
+ }
+
+ /* Deal with the last alternative: go back and get number
+ of the `jump_past_alt' just before it. `mcnt' contains
+ the length of the alternative. */
+ EXTRACT_NUMBER (mcnt, p1 - 2);
+
+ if (!alt_match_null_string_p (p1, p1 + mcnt, reg_info))
+ return false;
+
+ p1 += mcnt; /* Get past the n-th alternative. */
+ } /* if mcnt > 0 */
+ break;
+
+
+ case stop_memory:
+ assert (p1[1] == **p);
+ *p = p1 + 2;
+ return true;
+
+
+ default:
+ if (!common_op_match_null_string_p (&p1, end, reg_info))
+ return false;
+ }
+ } /* while p1 < end */
+
+ return false;
+} /* group_match_null_string_p */
+
+
+/* Similar to group_match_null_string_p, but doesn't deal with alternatives:
+ It expects P to be the first byte of a single alternative and END one
+ byte past the last. The alternative can contain groups. */
+
+static boolean
+alt_match_null_string_p (p, end, reg_info)
+ unsigned char *p, *end;
+ register_info_type *reg_info;
+{
+ int mcnt;
+ unsigned char *p1 = p;
+
+ while (p1 < end)
+ {
+ /* Skip over opcodes that can match nothing, and break when we get
+ to one that can't. */
+
+ switch ((re_opcode_t) *p1)
+ {
+ /* It's a loop. */
+ case on_failure_jump:
+ p1++;
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+ p1 += mcnt;
+ break;
+
+ default:
+ if (!common_op_match_null_string_p (&p1, end, reg_info))
+ return false;
+ }
+ } /* while p1 < end */
+
+ return true;
+} /* alt_match_null_string_p */
+
+
+/* Deals with the ops common to group_match_null_string_p and
+ alt_match_null_string_p.
+
+ Sets P to one after the op and its arguments, if any. */
+
+static boolean
+common_op_match_null_string_p (p, end, reg_info)
+ unsigned char **p, *end;
+ register_info_type *reg_info;
+{
+ int mcnt;
+ boolean ret;
+ int reg_no;
+ unsigned char *p1 = *p;
+
+ switch ((re_opcode_t) *p1++)
+ {
+ case no_op:
+ case begline:
+ case endline:
+ case begbuf:
+ case endbuf:
+ case wordbeg:
+ case wordend:
+ case wordbound:
+ case notwordbound:
+#ifdef emacs
+ case before_dot:
+ case at_dot:
+ case after_dot:
+#endif
+ break;
+
+ case start_memory:
+ reg_no = *p1;
+ assert (reg_no > 0 && reg_no <= MAX_REGNUM);
+ ret = group_match_null_string_p (&p1, end, reg_info);
+
+ /* Have to set this here in case we're checking a group which
+ contains a group and a back reference to it. */
+
+ if (REG_MATCH_NULL_STRING_P (reg_info[reg_no]) == MATCH_NULL_UNSET_VALUE)
+ REG_MATCH_NULL_STRING_P (reg_info[reg_no]) = ret;
+
+ if (!ret)
+ return false;
+ break;
+
+ /* If this is an optimized succeed_n for zero times, make the jump. */
+ case jump:
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+ if (mcnt >= 0)
+ p1 += mcnt;
+ else
+ return false;
+ break;
+
+ case succeed_n:
+ /* Get to the number of times to succeed. */
+ p1 += 2;
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+
+ if (mcnt == 0)
+ {
+ p1 -= 4;
+ EXTRACT_NUMBER_AND_INCR (mcnt, p1);
+ p1 += mcnt;
+ }
+ else
+ return false;
+ break;
+
+ case duplicate:
+ if (!REG_MATCH_NULL_STRING_P (reg_info[*p1]))
+ return false;
+ break;
+
+ case set_number_at:
+ p1 += 4;
+
+ default:
+ /* All other opcodes mean we cannot match the empty string. */
+ return false;
+ }
+
+ *p = p1;
+ return true;
+} /* common_op_match_null_string_p */
+
+
+/* Return zero if TRANSLATE[S1] and TRANSLATE[S2] are identical for LEN
+ bytes; nonzero otherwise. */
+
+static int
+bcmp_translate (s1, s2, len, translate)
+ unsigned char *s1, *s2;
+ register int len;
+ char *translate;
+{
+ register unsigned char *p1 = s1, *p2 = s2;
+ while (len)
+ {
+ if (translate[*p1++] != translate[*p2++]) return 1;
+ len--;
+ }
+ return 0;
+}
+
+/* Entry points for GNU code. */
+
+/* re_compile_pattern is the GNU regular expression compiler: it
+ compiles PATTERN (of length SIZE) and puts the result in BUFP.
+ Returns 0 if the pattern was valid, otherwise an error string.
+
+ Assumes the `allocated' (and perhaps `buffer') and `translate' fields
+ are set in BUFP on entry.
+
+ We call regex_compile to do the actual compilation. */
+
+char *
+re_compile_pattern (char *pattern, int length, struct re_pattern_buffer *bufp)
+{
+ reg_errcode_t ret;
+
+ /* GNU code is written to assume at least RE_NREGS registers will be set
+ (and at least one extra will be -1). */
+ bufp->regs_allocated = REGS_UNALLOCATED;
+
+ /* And GNU code determines whether or not to get register information
+ by passing null for the REGS argument to re_match, etc., not by
+ setting no_sub. */
+ bufp->no_sub = 0;
+
+ /* Match anchors at newline. */
+ bufp->newline_anchor = 1;
+
+ ret = regex_compile (pattern, length, re_syntax_options, bufp);
+
+ return re_error_msg[(int) ret];
+}
+
+/* Entry points compatible with 4.2 BSD regex library. We don't define
+ them if this is an Emacs or POSIX compilation. */
+
+#if !defined (emacs) && !defined (_POSIX_SOURCE)
+
+/* BSD has one and only one pattern buffer. */
+static struct re_pattern_buffer re_comp_buf;
+
+char *
+re_comp (s)
+ char *s;
+{
+ reg_errcode_t ret;
+
+ if (!s)
+ {
+ if (!re_comp_buf.buffer)
+ return "No previous regular expression";
+ return 0;
+ }
+
+ if (!re_comp_buf.buffer)
+ {
+ re_comp_buf.buffer = (unsigned char *) malloc (200);
+ if (re_comp_buf.buffer == NULL)
+ return "Memory exhausted";
+ re_comp_buf.allocated = 200;
+
+ re_comp_buf.fastmap = (char *) malloc (1 << BYTEWIDTH);
+ if (re_comp_buf.fastmap == NULL)
+ return "Memory exhausted";
+ }
+
+ /* Since `re_exec' always passes NULL for the `regs' argument, we
+ don't need to initialize the pattern buffer fields which affect it. */
+
+ /* Match anchors at newlines. */
+ re_comp_buf.newline_anchor = 1;
+
+ ret = regex_compile (s, strlen (s), re_syntax_options, &re_comp_buf);
+
+ /* Yes, we're discarding `const' here. */
+ return (char *) re_error_msg[(int) ret];
+}
+
+
+int
+re_exec (s)
+ char *s;
+{
+ int len = strlen (s);
+ return
+ 0 <= re_search (&re_comp_buf, s, len, 0, len, (struct re_registers *) 0);
+}
+#endif /* not emacs and not _POSIX_SOURCE */
+
+/* POSIX.2 functions. Don't define these for Emacs. */
+
+#ifndef emacs
+
+/* regcomp takes a regular expression as a string and compiles it.
+
+ PREG is a regex_t *. We do not expect any fields to be initialized,
+ since POSIX says we shouldn't. Thus, we set
+
+ `buffer' to the compiled pattern;
+ `used' to the length of the compiled pattern;
+ `syntax' to RE_SYNTAX_POSIX_EXTENDED if the
+ REG_EXTENDED bit in CFLAGS is set; otherwise, to
+ RE_SYNTAX_POSIX_BASIC;
+ `newline_anchor' to REG_NEWLINE being set in CFLAGS;
+ `fastmap' and `fastmap_accurate' to zero;
+ `re_nsub' to the number of subexpressions in PATTERN.
+
+ PATTERN is the address of the pattern string.
+
+ CFLAGS is a series of bits which affect compilation.
+
+ If REG_EXTENDED is set, we use POSIX extended syntax; otherwise, we
+ use POSIX basic syntax.
+
+ If REG_NEWLINE is set, then . and [^...] don't match newline.
+ Also, regexec will try a match beginning after every newline.
+
+ If REG_ICASE is set, then we considers upper- and lowercase
+ versions of letters to be equivalent when matching.
+
+ If REG_NOSUB is set, then when PREG is passed to regexec, that
+ routine will report only success or failure, and nothing about the
+ registers.
+
+ It returns 0 if it succeeds, nonzero if it doesn't. (See regex.h for
+ the return codes and their meanings.) */
+
+int
+regcomp (preg, pattern, cflags)
+ regex_t *preg;
+ char *pattern;
+ int cflags;
+{
+ reg_errcode_t ret;
+ unsigned syntax
+ = (cflags & REG_EXTENDED) ?
+ RE_SYNTAX_POSIX_EXTENDED : RE_SYNTAX_POSIX_BASIC;
+
+ /* regex_compile will allocate the space for the compiled pattern. */
+ preg->buffer = 0;
+ preg->allocated = 0;
+
+ /* Don't bother to use a fastmap when searching. This simplifies the
+ REG_NEWLINE case: if we used a fastmap, we'd have to put all the
+ characters after newlines into the fastmap. This way, we just try
+ every character. */
+ preg->fastmap = 0;
+
+ if (cflags & REG_ICASE)
+ {
+ unsigned i;
+
+ preg->translate = (char *) malloc (CHAR_SET_SIZE);
+ if (preg->translate == NULL)
+ return (int) REG_ESPACE;
+
+ /* Map uppercase characters to corresponding lowercase ones. */
+ for (i = 0; i < CHAR_SET_SIZE; i++)
+ preg->translate[i] = ISUPPER (i) ? tolower (i) : i;
+ }
+ else
+ preg->translate = NULL;
+
+ /* If REG_NEWLINE is set, newlines are treated differently. */
+ if (cflags & REG_NEWLINE)
+ { /* REG_NEWLINE implies neither . nor [^...] match newline. */
+ syntax &= ~RE_DOT_NEWLINE;
+ syntax |= RE_HAT_LISTS_NOT_NEWLINE;
+ /* It also changes the matching behavior. */
+ preg->newline_anchor = 1;
+ }
+ else
+ preg->newline_anchor = 0;
+
+ preg->no_sub = !!(cflags & REG_NOSUB);
+
+ /* POSIX says a null character in the pattern terminates it, so we
+ can use strlen here in compiling the pattern. */
+ ret = regex_compile (pattern, strlen (pattern), syntax, preg);
+
+ /* POSIX doesn't distinguish between an unmatched open-group and an
+ unmatched close-group: both are REG_EPAREN. */
+ if (ret == REG_ERPAREN) ret = REG_EPAREN;
+
+ return (int) ret;
+}
+
+
+/* regexec searches for a given pattern, specified by PREG, in the
+ string STRING.
+
+ If NMATCH is zero or REG_NOSUB was set in the cflags argument to
+ `regcomp', we ignore PMATCH. Otherwise, we assume PMATCH has at
+ least NMATCH elements, and we set them to the offsets of the
+ corresponding matched substrings.
+
+ EFLAGS specifies `execution flags' which affect matching: if
+ REG_NOTBOL is set, then ^ does not match at the beginning of the
+ string; if REG_NOTEOL is set, then $ does not match at the end.
+
+ We return 0 if we find a match and REG_NOMATCH if not. */
+
+int
+regexec (preg, string, nmatch, pmatch, eflags)
+ regex_t *preg;
+ char *string;
+ size_t nmatch;
+ regmatch_t pmatch[];
+ int eflags;
+{
+ int ret;
+ struct re_registers regs;
+ regex_t private_preg;
+ int len = strlen (string);
+ boolean want_reg_info = !preg->no_sub && nmatch > 0;
+
+ private_preg = *preg;
+
+ private_preg.not_bol = !!(eflags & REG_NOTBOL);
+ private_preg.not_eol = !!(eflags & REG_NOTEOL);
+
+ /* The user has told us exactly how many registers to return
+ information about, via `nmatch'. We have to pass that on to the
+ matching routines. */
+ private_preg.regs_allocated = REGS_FIXED;
+
+ if (want_reg_info)
+ {
+ regs.num_regs = nmatch;
+ regs.start = TALLOC (nmatch, regoff_t);
+ regs.end = TALLOC (nmatch, regoff_t);
+ if (regs.start == NULL || regs.end == NULL)
+ return (int) REG_NOMATCH;
+ }
+
+ /* Perform the searching operation. */
+ ret = re_search (&private_preg, string, len,
+ /* start: */ 0, /* range: */ len,
+ want_reg_info ? ®s : (struct re_registers *) 0);
+
+ /* Copy the register information to the POSIX structure. */
+ if (want_reg_info)
+ {
+ if (ret >= 0)
+ {
+ unsigned r;
+
+ for (r = 0; r < nmatch; r++)
+ {
+ pmatch[r].rm_so = regs.start[r];
+ pmatch[r].rm_eo = regs.end[r];
+ }
+ }
+
+ /* If we needed the temporary register info, free the space now. */
+ free (regs.start);
+ free (regs.end);
+ }
+
+ /* We want zero return to mean success, unlike `re_search'. */
+ return ret >= 0 ? (int) REG_NOERROR : (int) REG_NOMATCH;
+}
+
+
+/* Returns a message corresponding to an error code, ERRCODE, returned
+ from either regcomp or regexec. We don't use PREG here. */
+
+size_t
+regerror (errcode, preg, errbuf, errbuf_size)
+ int errcode;
+ regex_t *preg;
+ char *errbuf;
+ size_t errbuf_size;
+{
+ char *msg;
+ size_t msg_size;
+
+ if (errcode < 0
+ || errcode >= (sizeof (re_error_msg) / sizeof (re_error_msg[0])))
+ /* Only error codes returned by the rest of the code should be passed
+ to this routine. If we are given anything else, or if other regex
+ code generates an invalid error code, then the program has a bug.
+ Dump core so we can fix it. */
+ abort ();
+
+ msg = re_error_msg[errcode];
+
+ /* POSIX doesn't require that we do anything in this case, but why
+ not be nice. */
+ if (! msg)
+ msg = "Success";
+
+ msg_size = strlen (msg) + 1; /* Includes the null. */
+
+ if (errbuf_size != 0)
+ {
+ if (msg_size > errbuf_size)
+ {
+ strncpy (errbuf, msg, errbuf_size - 1);
+ errbuf[errbuf_size - 1] = 0;
+ }
+ else
+ strcpy (errbuf, msg);
+ }
+
+ return msg_size;
+}
+
+
+/* Free dynamically allocated space used by PREG. */
+
+void
+regfree (preg)
+ regex_t *preg;
+{
+ if (preg->buffer != NULL)
+ free (preg->buffer);
+ preg->buffer = NULL;
+
+ preg->allocated = 0;
+ preg->used = 0;
+
+ if (preg->fastmap != NULL)
+ free (preg->fastmap);
+ preg->fastmap = NULL;
+ preg->fastmap_accurate = 0;
+
+ if (preg->translate != NULL)
+ free (preg->translate);
+ preg->translate = NULL;
+}
+
+#endif /* not emacs */
+
+/*
+Local variables:
+make-backup-files: t
+version-control: t
+trim-versions-without-asking: nil
+End:
+*/
+#endif /* not lint */
diff --git a/gnuregex.h b/gnuregex.h
new file mode 100644
index 0000000..48f759f
--- /dev/null
+++ b/gnuregex.h
@@ -0,0 +1,490 @@
+/* Definitions for data structures and routines for the regular
+ expression library, version 0.12.
+
+ Copyright (C) 1985,1989,1990,1991,1992,1993 Free Software Foundation, Inc.
+
+ 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+#ifndef __REGEXP_LIBRARY_H__
+#define __REGEXP_LIBRARY_H__
+
+/* POSIX says that <sys/types.h> must be included (by the caller) before
+ <regex.h>. */
+
+#ifdef VMS
+/* VMS doesn't have `size_t' in <sys/types.h>, even though POSIX says it
+ should be there. */
+#include <stddef.h>
+#endif
+
+
+/* The following bits are used to determine the regexp syntax we
+ recognize. The set/not-set meanings are chosen so that Emacs syntax
+ remains the value 0. The bits are given in alphabetical order, and
+ the definitions shifted by one from the previous bit; thus, when we
+ add or remove a bit, only one other definition need change. */
+typedef unsigned reg_syntax_t;
+
+/* If this bit is not set, then \ inside a bracket expression is literal.
+ If set, then such a \ quotes the following character. */
+#define RE_BACKSLASH_ESCAPE_IN_LISTS (1)
+
+/* If this bit is not set, then + and ? are operators, and \+ and \? are
+ literals.
+ If set, then \+ and \? are operators and + and ? are literals. */
+#define RE_BK_PLUS_QM (RE_BACKSLASH_ESCAPE_IN_LISTS << 1)
+
+/* If this bit is set, then character classes are supported. They are:
+ [:alpha:], [:upper:], [:lower:], [:digit:], [:alnum:], [:xdigit:],
+ [:space:], [:print:], [:punct:], [:graph:], and [:cntrl:].
+ If not set, then character classes are not supported. */
+#define RE_CHAR_CLASSES (RE_BK_PLUS_QM << 1)
+
+/* If this bit is set, then ^ and $ are always anchors (outside bracket
+ expressions, of course).
+ If this bit is not set, then it depends:
+ ^ is an anchor if it is at the beginning of a regular
+ expression or after an open-group or an alternation operator;
+ $ is an anchor if it is at the end of a regular expression, or
+ before a close-group or an alternation operator.
+
+ This bit could be (re)combined with RE_CONTEXT_INDEP_OPS, because
+ POSIX draft 11.2 says that * etc. in leading positions is undefined.
+ We already implemented a previous draft which made those constructs
+ invalid, though, so we haven't changed the code back. */
+#define RE_CONTEXT_INDEP_ANCHORS (RE_CHAR_CLASSES << 1)
+
+/* If this bit is set, then special characters are always special
+ regardless of where they are in the pattern.
+ If this bit is not set, then special characters are special only in
+ some contexts; otherwise they are ordinary. Specifically,
+ * + ? and intervals are only special when not after the beginning,
+ open-group, or alternation operator. */
+#define RE_CONTEXT_INDEP_OPS (RE_CONTEXT_INDEP_ANCHORS << 1)
+
+/* If this bit is set, then *, +, ?, and { cannot be first in an re or
+ immediately after an alternation or begin-group operator. */
+#define RE_CONTEXT_INVALID_OPS (RE_CONTEXT_INDEP_OPS << 1)
+
+/* If this bit is set, then . matches newline.
+ If not set, then it doesn't. */
+#define RE_DOT_NEWLINE (RE_CONTEXT_INVALID_OPS << 1)
+
+/* If this bit is set, then . doesn't match NUL.
+ If not set, then it does. */
+#define RE_DOT_NOT_NULL (RE_DOT_NEWLINE << 1)
+
+/* If this bit is set, nonmatching lists [^...] do not match newline.
+ If not set, they do. */
+#define RE_HAT_LISTS_NOT_NEWLINE (RE_DOT_NOT_NULL << 1)
+
+/* If this bit is set, either \{...\} or {...} defines an
+ interval, depending on RE_NO_BK_BRACES.
+ If not set, \{, \}, {, and } are literals. */
+#define RE_INTERVALS (RE_HAT_LISTS_NOT_NEWLINE << 1)
+
+/* If this bit is set, +, ? and | aren't recognized as operators.
+ If not set, they are. */
+#define RE_LIMITED_OPS (RE_INTERVALS << 1)
+
+/* If this bit is set, newline is an alternation operator.
+ If not set, newline is literal. */
+#define RE_NEWLINE_ALT (RE_LIMITED_OPS << 1)
+
+/* If this bit is set, then `{...}' defines an interval, and \{ and \}
+ are literals.
+ If not set, then `\{...\}' defines an interval. */
+#define RE_NO_BK_BRACES (RE_NEWLINE_ALT << 1)
+
+/* If this bit is set, (...) defines a group, and \( and \) are literals.
+ If not set, \(...\) defines a group, and ( and ) are literals. */
+#define RE_NO_BK_PARENS (RE_NO_BK_BRACES << 1)
+
+/* If this bit is set, then \<digit> matches <digit>.
+ If not set, then \<digit> is a back-reference. */
+#define RE_NO_BK_REFS (RE_NO_BK_PARENS << 1)
+
+/* If this bit is set, then | is an alternation operator, and \| is literal.
+ If not set, then \| is an alternation operator, and | is literal. */
+#define RE_NO_BK_VBAR (RE_NO_BK_REFS << 1)
+
+/* If this bit is set, then an ending range point collating higher
+ than the starting range point, as in [z-a], is invalid.
+ If not set, then when ending range point collates higher than the
+ starting range point, the range is ignored. */
+#define RE_NO_EMPTY_RANGES (RE_NO_BK_VBAR << 1)
+
+/* If this bit is set, then an unmatched ) is ordinary.
+ If not set, then an unmatched ) is invalid. */
+#define RE_UNMATCHED_RIGHT_PAREN_ORD (RE_NO_EMPTY_RANGES << 1)
+
+/* This global variable defines the particular regexp syntax to use (for
+ some interfaces). When a regexp is compiled, the syntax used is
+ stored in the pattern buffer, so changing this does not affect
+ already-compiled regexps. */
+extern reg_syntax_t re_syntax_options;
+
+/* Define combinations of the above bits for the standard possibilities.
+ (The [[[ comments delimit what gets put into the Texinfo file, so
+ don't delete them!) */
+/* [[[begin syntaxes]]] */
+#define RE_SYNTAX_EMACS 0
+
+#define RE_SYNTAX_AWK \
+ (RE_BACKSLASH_ESCAPE_IN_LISTS | RE_DOT_NOT_NULL \
+ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
+ | RE_NO_BK_VBAR | RE_NO_EMPTY_RANGES \
+ | RE_UNMATCHED_RIGHT_PAREN_ORD)
+
+#define RE_SYNTAX_POSIX_AWK \
+ (RE_SYNTAX_POSIX_EXTENDED | RE_BACKSLASH_ESCAPE_IN_LISTS)
+
+#define RE_SYNTAX_GREP \
+ (RE_BK_PLUS_QM | RE_CHAR_CLASSES \
+ | RE_HAT_LISTS_NOT_NEWLINE | RE_INTERVALS \
+ | RE_NEWLINE_ALT)
+
+#define RE_SYNTAX_EGREP \
+ (RE_CHAR_CLASSES | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INDEP_OPS | RE_HAT_LISTS_NOT_NEWLINE \
+ | RE_NEWLINE_ALT | RE_NO_BK_PARENS \
+ | RE_NO_BK_VBAR)
+
+#define RE_SYNTAX_POSIX_EGREP \
+ (RE_SYNTAX_EGREP | RE_INTERVALS | RE_NO_BK_BRACES)
+
+/* P1003.2/D11.2, section 4.20.7.1, lines 5078ff. */
+#define RE_SYNTAX_ED RE_SYNTAX_POSIX_BASIC
+
+#define RE_SYNTAX_SED RE_SYNTAX_POSIX_BASIC
+
+/* Syntax bits common to both basic and extended POSIX regex syntax. */
+#define _RE_SYNTAX_POSIX_COMMON \
+ (RE_CHAR_CLASSES | RE_DOT_NEWLINE | RE_DOT_NOT_NULL \
+ | RE_INTERVALS | RE_NO_EMPTY_RANGES)
+
+#define RE_SYNTAX_POSIX_BASIC \
+ (_RE_SYNTAX_POSIX_COMMON | RE_BK_PLUS_QM)
+
+/* Differs from ..._POSIX_BASIC only in that RE_BK_PLUS_QM becomes
+ RE_LIMITED_OPS, i.e., \? \+ \| are not recognized. Actually, this
+ isn't minimal, since other operators, such as \`, aren't disabled. */
+#define RE_SYNTAX_POSIX_MINIMAL_BASIC \
+ (_RE_SYNTAX_POSIX_COMMON | RE_LIMITED_OPS)
+
+#define RE_SYNTAX_POSIX_EXTENDED \
+ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INDEP_OPS | RE_NO_BK_BRACES \
+ | RE_NO_BK_PARENS | RE_NO_BK_VBAR \
+ | RE_UNMATCHED_RIGHT_PAREN_ORD)
+
+/* Differs from ..._POSIX_EXTENDED in that RE_CONTEXT_INVALID_OPS
+ replaces RE_CONTEXT_INDEP_OPS and RE_NO_BK_REFS is added. */
+#define RE_SYNTAX_POSIX_MINIMAL_EXTENDED \
+ (_RE_SYNTAX_POSIX_COMMON | RE_CONTEXT_INDEP_ANCHORS \
+ | RE_CONTEXT_INVALID_OPS | RE_NO_BK_BRACES \
+ | RE_NO_BK_PARENS | RE_NO_BK_REFS \
+ | RE_NO_BK_VBAR | RE_UNMATCHED_RIGHT_PAREN_ORD)
+/* [[[end syntaxes]]] */
+
+/* Maximum number of duplicates an interval can allow. Some systems
+ (erroneously) define this in other header files, but we want our
+ value, so remove any previous define. */
+#ifdef RE_DUP_MAX
+#undef RE_DUP_MAX
+#endif
+#define RE_DUP_MAX ((1 << 15) - 1)
+
+
+/* POSIX `cflags' bits (i.e., information for `regcomp'). */
+
+/* If this bit is set, then use extended regular expression syntax.
+ If not set, then use basic regular expression syntax. */
+#define REG_EXTENDED 1
+
+/* If this bit is set, then ignore case when matching.
+ If not set, then case is significant. */
+#define REG_ICASE (REG_EXTENDED << 1)
+
+/* If this bit is set, then anchors do not match at newline
+ characters in the string.
+ If not set, then anchors do match at newlines. */
+#define REG_NEWLINE (REG_ICASE << 1)
+
+/* If this bit is set, then report only success or fail in regexec.
+ If not set, then returns differ between not matching and errors. */
+#define REG_NOSUB (REG_NEWLINE << 1)
+
+
+/* POSIX `eflags' bits (i.e., information for regexec). */
+
+/* If this bit is set, then the beginning-of-line operator doesn't match
+ the beginning of the string (presumably because it's not the
+ beginning of a line).
+ If not set, then the beginning-of-line operator does match the
+ beginning of the string. */
+#define REG_NOTBOL 1
+
+/* Like REG_NOTBOL, except for the end-of-line. */
+#define REG_NOTEOL (1 << 1)
+
+
+/* If any error codes are removed, changed, or added, update the
+ `re_error_msg' table in regex.c. */
+typedef enum
+{
+ REG_NOERROR = 0, /* Success. */
+ REG_NOMATCH, /* Didn't find a match (for regexec). */
+
+ /* POSIX regcomp return error codes. (In the order listed in the
+ standard.) */
+ REG_BADPAT, /* Invalid pattern. */
+ REG_ECOLLATE, /* Not implemented. */
+ REG_ECTYPE, /* Invalid character class name. */
+ REG_EESCAPE, /* Trailing backslash. */
+ REG_ESUBREG, /* Invalid back reference. */
+ REG_EBRACK, /* Unmatched left bracket. */
+ REG_EPAREN, /* Parenthesis imbalance. */
+ REG_EBRACE, /* Unmatched \{. */
+ REG_BADBR, /* Invalid contents of \{\}. */
+ REG_ERANGE, /* Invalid range end. */
+ REG_ESPACE, /* Ran out of memory. */
+ REG_BADRPT, /* No preceding re for repetition op. */
+
+ /* Error codes we've added. */
+ REG_EEND, /* Premature end. */
+ REG_ESIZE, /* Compiled pattern bigger than 2^16 bytes. */
+ REG_ERPAREN /* Unmatched ) or \); not returned from regcomp. */
+} reg_errcode_t;
+
+/* This data structure represents a compiled pattern. Before calling
+ the pattern compiler, the fields `buffer', `allocated', `fastmap',
+ `translate', and `no_sub' can be set. After the pattern has been
+ compiled, the `re_nsub' field is available. All other fields are
+ private to the regex routines. */
+
+struct re_pattern_buffer
+{
+/* [[[begin pattern_buffer]]] */
+ /* Space that holds the compiled pattern. It is declared as
+ `unsigned char *' because its elements are
+ sometimes used as array indexes. */
+ unsigned char *buffer;
+
+ /* Number of bytes to which `buffer' points. */
+ unsigned long allocated;
+
+ /* Number of bytes actually used in `buffer'. */
+ unsigned long used;
+
+ /* Syntax setting with which the pattern was compiled. */
+ reg_syntax_t syntax;
+
+ /* Pointer to a fastmap, if any, otherwise zero. re_search uses
+ the fastmap, if there is one, to skip over impossible
+ starting points for matches. */
+ char *fastmap;
+
+ /* Either a translate table to apply to all characters before
+ comparing them, or zero for no translation. The translation
+ is applied to a pattern when it is compiled and to a string
+ when it is matched. */
+ char *translate;
+
+ /* Number of subexpressions found by the compiler. */
+ size_t re_nsub;
+
+ /* Zero if this pattern cannot match the empty string, one else.
+ Well, in truth it's used only in `re_search_2', to see
+ whether or not we should use the fastmap, so we don't set
+ this absolutely perfectly; see `re_compile_fastmap' (the
+ `duplicate' case). */
+ unsigned can_be_null : 1;
+
+ /* If REGS_UNALLOCATED, allocate space in the `regs' structure
+ for `max (RE_NREGS, re_nsub + 1)' groups.
+ If REGS_REALLOCATE, reallocate space if necessary.
+ If REGS_FIXED, use what's there. */
+#define REGS_UNALLOCATED 0
+#define REGS_REALLOCATE 1
+#define REGS_FIXED 2
+ unsigned regs_allocated : 2;
+
+ /* Set to zero when `regex_compile' compiles a pattern; set to one
+ by `re_compile_fastmap' if it updates the fastmap. */
+ unsigned fastmap_accurate : 1;
+
+ /* If set, `re_match_2' does not return information about
+ subexpressions. */
+ unsigned no_sub : 1;
+
+ /* If set, a beginning-of-line anchor doesn't match at the
+ beginning of the string. */
+ unsigned not_bol : 1;
+
+ /* Similarly for an end-of-line anchor. */
+ unsigned not_eol : 1;
+
+ /* If true, an anchor at a newline matches. */
+ unsigned newline_anchor : 1;
+
+/* [[[end pattern_buffer]]] */
+};
+
+typedef struct re_pattern_buffer regex_t;
+
+
+/* search.c (search_buffer) in Emacs needs this one opcode value. It is
+ defined both in `regex.c' and here. */
+#define RE_EXACTN_VALUE 1
+
+/* Type for byte offsets within the string. POSIX mandates this. */
+typedef int regoff_t;
+
+
+/* This is the structure we store register match data in. See
+ regex.texinfo for a full description of what registers match. */
+struct re_registers
+{
+ unsigned num_regs;
+ regoff_t *start;
+ regoff_t *end;
+};
+
+
+/* If `regs_allocated' is REGS_UNALLOCATED in the pattern buffer,
+ `re_match_2' returns information about at least this many registers
+ the first time a `regs' structure is passed. */
+#ifndef RE_NREGS
+#define RE_NREGS 30
+#endif
+
+
+/* POSIX specification for registers. Aside from the different names than
+ `re_registers', POSIX uses an array of structures, instead of a
+ structure of arrays. */
+typedef struct
+{
+ regoff_t rm_so; /* Byte offset from string's start to substring's start. */
+ regoff_t rm_eo; /* Byte offset from string's start to substring's end. */
+} regmatch_t;
+
+/* Declarations for routines. */
+
+/* To avoid duplicating every routine declaration -- once with a
+ prototype (if we are ANSI), and once without (if we aren't) -- we
+ use the following macro to declare argument types. This
+ unfortunately clutters up the declarations a bit, but I think it's
+ worth it. */
+
+#if __STDC__
+
+#define _RE_ARGS(args) args
+
+#else /* not __STDC__ */
+
+#define _RE_ARGS(args) ()
+
+#endif /* not __STDC__ */
+
+/* Sets the current default syntax to SYNTAX, and return the old syntax.
+ You can also simply assign to the `re_syntax_options' variable. */
+extern reg_syntax_t re_set_syntax _RE_ARGS ((reg_syntax_t syntax));
+
+/* Compile the regular expression PATTERN, with length LENGTH
+ and syntax given by the global `re_syntax_options', into the buffer
+ BUFFER. Return NULL if successful, and an error string if not. */
+extern char *re_compile_pattern
+ _RE_ARGS ((char *pattern, int length,
+ struct re_pattern_buffer *buffer));
+
+
+/* Compile a fastmap for the compiled pattern in BUFFER; used to
+ accelerate searches. Return 0 if successful and -2 if was an
+ internal error. */
+extern int re_compile_fastmap _RE_ARGS ((struct re_pattern_buffer *buffer));
+
+
+/* Search in the string STRING (with length LENGTH) for the pattern
+ compiled into BUFFER. Start searching at position START, for RANGE
+ characters. Return the starting position of the match, -1 for no
+ match, or -2 for an internal error. Also return register
+ information in REGS (if REGS and BUFFER->no_sub are nonzero). */
+extern int re_search
+ _RE_ARGS ((struct re_pattern_buffer *buffer, char *string,
+ int length, int start, int range, struct re_registers *regs));
+
+
+/* Like `re_search', but search in the concatenation of STRING1 and
+ STRING2. Also, stop searching at index START + STOP. */
+extern int re_search_2
+ _RE_ARGS ((struct re_pattern_buffer *buffer, char *string1,
+ int length1, char *string2, int length2,
+ int start, int range, struct re_registers *regs, int stop));
+
+
+/* Like `re_search', but return how many characters in STRING the regexp
+ in BUFFER matched, starting at position START. */
+extern int re_match
+ _RE_ARGS ((struct re_pattern_buffer *buffer, char *string,
+ int length, int start, struct re_registers *regs));
+
+
+/* Relates to `re_match' as `re_search_2' relates to `re_search'. */
+extern int re_match_2
+ _RE_ARGS ((struct re_pattern_buffer *buffer, char *string1,
+ int length1, char *string2, int length2,
+ int start, struct re_registers *regs, int stop));
+
+
+/* Set REGS to hold NUM_REGS registers, storing them in STARTS and
+ ENDS. Subsequent matches using BUFFER and REGS will use this memory
+ for recording register information. STARTS and ENDS must be
+ allocated with malloc, and must each be at least `NUM_REGS * sizeof
+ (regoff_t)' bytes long.
+
+ If NUM_REGS == 0, then subsequent matches should allocate their own
+ register data.
+
+ Unless this function is called, the first search or match using
+ PATTERN_BUFFER will allocate its own register data, without
+ freeing the old data. */
+extern void re_set_registers
+ _RE_ARGS ((struct re_pattern_buffer *buffer, struct re_registers *regs,
+ unsigned num_regs, regoff_t *starts, regoff_t *ends));
+
+/* 4.2 bsd compatibility. */
+extern char *re_comp _RE_ARGS ((char *));
+extern int re_exec _RE_ARGS ((char *));
+
+/* POSIX compatibility. */
+extern int regcomp _RE_ARGS ((regex_t *preg, char *pattern, int cflags));
+extern int regexec
+ _RE_ARGS ((regex_t *preg, char *string, size_t nmatch,
+ regmatch_t pmatch[], int eflags));
+extern size_t regerror
+ _RE_ARGS ((int errcode, regex_t *preg, char *errbuf,
+ size_t errbuf_size));
+extern void regfree _RE_ARGS ((regex_t *preg));
+
+#endif /* not __REGEXP_LIBRARY_H__ */
+
+/*
+Local variables:
+make-backup-files: t
+version-control: t
+trim-versions-without-asking: nil
+End:
+*/
diff --git a/instman.pl b/instman.pl
new file mode 100644
index 0000000..0239705
--- /dev/null
+++ b/instman.pl
@@ -0,0 +1,23 @@
+#! /usr/bin/perl
+
+# Sean Eddy, Wed Jul 29 15:24:43 1992
+
+# instman - "cp" replacement for formatting and installing man pages
+# Requires that GNU groff is installed: geqn, gtbl, groff.
+#
+# Usage: instman <man-formatted file> <destination for formatted file>
+#
+
+
+$usage = "Usage: instman <infile> <outfile>\n where <infile> is a man-formatted input file,\n and <outfile> is the name to store the formatted file under\n (such as /usr/catman/local/cat1/foo)\n";
+
+if ($#ARGV != 1) { die "Incorrect argument number.\n$usage"; }
+$man = shift(@ARGV);
+$dest = shift(@ARGV);
+print "Reading $man, installing as $dest\n";
+
+die "Error: can't read $man.\n$usage" unless -r $man;
+die "Error: can't write $dest.\n$usage" unless -w $man;
+die "Error: $dest is a directory, not a file name\n$usage" if -d $dest;
+
+system "geqn $man | gtbl | groff -man -Tascii > $dest";
diff --git a/interleaved.c b/interleaved.c
new file mode 100644
index 0000000..d0640f5
--- /dev/null
+++ b/interleaved.c
@@ -0,0 +1,509 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* interleaved.c
+ * I/O of interleaved format multiple alignments.
+ * Modified from selex.c
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * SRE, Mon Jan 30 14:41:49 1995:
+ * #=SA side chain % surface accessibility annotation supported
+ *
+ * SRE, Mon Sep 11 09:20:08 1995
+ * selex.c generalized and simplified to make interleaved.c
+ *
+ * SELEX format is documented in Docs/formats.tex.
+ ****************************************************************************
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <memory.h>
+#include <unistd.h> /* SunOS 4.x isn't fully ANSI-compliant. */
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+static void homogenize_gapsym(char *s, char gapsym);
+static int copy_alignment_line(char *aseq, int apos, int name_rcol,
+ char *buffer, int lcol, int rcol);
+static char commentsyms[] = "#%";
+
+
+
+/* Function: homogenize_gapsym()
+ *
+ * Purpose: Make gap symbols homogeneous.
+ */
+static void
+homogenize_gapsym(char *s, char gapsym)
+{
+ for (; *s != '\0'; s++)
+ if (isgap(*s)) *s = gapsym;
+}
+
+
+/* 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 *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) *s1 = '.'; /* name intrusion: pad left w/ gaps */
+ else if (*s2 == '\0' || *s2 == '\n') *s1 = '.'; /* short buffer: pad right w/ gaps */
+ else *s1 = *s2; /* normal: copy buffer into aseq */
+
+ s1++;
+ if (*s2) s2++;
+ }
+ return 1;
+}
+
+
+
+/* Function: is_blankline()
+ *
+ * Return TRUE if line is all whitespace.
+ */
+static int
+is_blankline(char *buffer)
+{
+ for (; *buffer != '\0'; buffer++) if (! isspace(*buffer)) return 0;
+ return 1;
+}
+
+
+/* CLUSTALV and CLUSTALW support
+ *
+ * parse_header() and is_dataline() functions for ClustalV and ClustalW
+ * interleaved multiple alignment format
+ */
+/*ARGSUSED*/
+static int
+parse_clustal(FILE *fp, AINFO *ainfo, int *got_sqinfo)
+{
+ char buffer[LINEBUFLEN];
+
+ do {
+ if (fgets(buffer, LINEBUFLEN, fp) == NULL) { squid_errno = SQERR_FORMAT; return 0; }
+ } while (strncmp(buffer, "CLUSTAL ", 8) != 0 ||
+ strstr(buffer, "multiple sequence alignment") == NULL);
+
+ *got_sqinfo = FALSE;
+ return 1;
+}
+static int
+dataline_clustal(char *buf, char *expected_name)
+{
+ while (*buf && isspace(*buf)) buf++;
+ if (*buf == '\0' || strchr(commentsyms, *buf) != NULL)
+ return 0; /* blank or comment */
+ if (expected_name != NULL && strncmp(buf, expected_name, strlen(expected_name) == 0))
+ return 1; /* matches expected seq name */
+ for (; *buf != '\0'; buf++)
+ { /* Clustal has no coord lines to worry about */
+ if (*buf == '*' || *buf == '.') continue; /* possible consensus line */
+ if (isalnum(*buf)) return 1; /* name or seq character */
+ if (*buf != ' ' && isgap(*buf)) return 1; /* possible all-gap line */
+ }
+ return 0;
+}
+
+
+/* GCG MSF support
+ *
+ * parse_header() and is_dataline() routines for GCG MSF alignments
+ */
+static int
+parse_MSF(FILE *fp, AINFO *ainfo, int *got_sqinfo)
+{
+ char buffer[LINEBUFLEN];
+ char *sptr;
+ int nseq;
+
+ /* Get first dividing line. MSF format specifies ints after MSF: and Check:
+ * but we don't make sure of this
+ */
+ do {
+ if (fgets(buffer, LINEBUFLEN, fp) == NULL) { squid_errno = SQERR_FORMAT; return 0; }
+ } while (strstr(buffer, " MSF: ") == NULL ||
+ strstr(buffer, " Check: ") == NULL ||
+ strstr(buffer, " ..") == NULL);
+
+ /* Get names, weight from header
+ */
+ nseq = 0;
+ /*CONSTCOND*/
+ while (1)
+ {
+ if (fgets(buffer, LINEBUFLEN, fp) == NULL) { squid_errno = SQERR_FORMAT; return 0; }
+ if (is_blankline(buffer)) continue;
+ if (strncmp(buffer, "//", 2) == 0) break;
+
+ sptr = strtok(buffer, WHITESPACE);
+ if (sptr == NULL || strcmp(sptr, "Name:") != 0 || strstr(sptr+5, "Weight:") != 0)
+ { squid_errno = SQERR_FORMAT; return 0; }
+
+ if (nseq == 0) ainfo->sqinfo = (SQINFO *) malloc (sizeof(SQINFO));
+ else ainfo->sqinfo = (SQINFO *) realloc (ainfo->sqinfo, (nseq + 1) * sizeof(SQINFO));
+ if (ainfo->sqinfo == NULL) { squid_errno = SQERR_MEM; return 0; }
+ ainfo->sqinfo[nseq].flags = 0;
+
+ if ((sptr = strtok(NULL, WHITESPACE)) == NULL) {squid_errno=SQERR_FORMAT; return 0; }
+ SetSeqinfoString(&(ainfo->sqinfo[nseq]), sptr, SQINFO_NAME);
+
+ while (sptr != NULL && strcmp(sptr, "Weight:") != 0) sptr = strtok(NULL, WHITESPACE);
+ if ((sptr = strtok(NULL, WHITESPACE)) == NULL) {squid_errno=SQERR_FORMAT; return 0; }
+ SetSeqinfoString(&(ainfo->sqinfo[nseq]), sptr, SQINFO_WGT);
+
+ nseq++;
+ }
+
+ *got_sqinfo = TRUE;
+ return 1;
+}
+static int
+dataline_MSF(char *buf, char *expected_name)
+{
+ while (*buf && isspace(*buf)) buf++;
+ if (*buf == '\0' || strchr(commentsyms, *buf) != NULL)
+ return 0; /* blank or comment */
+ if (expected_name != NULL && strncmp(buf, expected_name, strlen(expected_name) == 0))
+ return 1; /* matches expected seq name */
+ for (; *buf != '\0'; buf++)
+ { /* MSF has coordinate lines to worry about */
+ if (isspace(*buf)) continue; /* no info from spaces */
+ if (isalpha(*buf)||isgap(*buf)) return 1; /* has data on it */
+ }
+ return 0;
+}
+
+
+
+/* Function: ReadInterleaved()
+ *
+ * Purpose: Read multiple aligned sequences from the file seqfile.
+ * Store aligned sequences in aseqs, names in names, and
+ * the number of sequences in num.
+ *
+ * Memory is allocated for aseqs and names, and they must be
+ * free'd by the caller.
+ *
+ * If optional information is desired, a non-NULL ainfo
+ * pointer is passed.
+ *
+ * Args: seqfile: name of alignment file to read.
+ * parse_header(): routine to parse the header of the file
+ * is_dataline(): routine to determine if a line contains data
+ * ret_aseqs: RETURN: 2D array of aligned sequences
+ * ret_anum: RETURN: number of aligned sequences
+ * ainfo: RETURN: optional alignment information
+ *
+ * Returns 1 on success. Returns 0 on failure and sets
+ * squid_errno to indicate the cause of the failure.
+ */
+int
+ReadInterleaved(char *seqfile,
+ int (*parse_header)(FILE *, AINFO *, int *),
+ int (*is_dataline)(char *, char *),
+ char ***ret_aseqs, int *ret_num, AINFO *ainfo)
+{
+ FILE *fp; /* ptr to opened seqfile */
+ char **aseqs; /* aligned seqs */
+ int nseq; /* number of seqs read */
+ char buffer[LINEBUFLEN]; /* input buffer for lines */
+ char bufcpy[LINEBUFLEN]; /* copy of buffer for strtok */
+ struct block_struc { /** alignment data for a block: */
+ int lcol; /* furthest left aligned sym */
+ int rcol; /* furthest right aligned sym */
+ } *blocks;
+ int blocknum; /* number of blocks in file */
+ char *sptr; /* ptr into line during parsing */
+ int currblock; /* index for blocks */
+ int seqidx; /* counter for seqs */
+ int alen; /* length of alignment */
+ int warn_names; /* becomes TRUE if names don't match between blocks */
+ int currlen;
+ int count;
+ int inblock; /* TRUE if in a block of data */
+ long offset; /* used for skipping header */
+ int got_sqinfo; /* TRUE if header gave us sqinfo */
+
+ /***************************************************
+ * Parse the header of the file, according to caller-supplied function.
+ * The parser is responsible for making sure there are
+ * no non-comment lines before the first block. Comment
+ * or blank lines are OK. The parser may also fill fields
+ * into ainfo.
+ ***************************************************/
+ /* open the file for reading */
+ fp = fopen(seqfile, "r");
+ if (fp == NULL) { squid_errno = SQERR_NOFILE; return 0; }
+
+ if (! (*parse_header) (fp, ainfo, &got_sqinfo)) return 0;
+ offset = ftell(fp); /* where are we in the file? */
+
+ /***************************************************
+ * First pass across file.
+ * Count seqs, get names, determine column info
+ ***************************************************/
+ ainfo->flags = 0;
+
+ blocknum = 0;
+ nseq = 0;
+ inblock = FALSE;
+ blocks = NULL;
+ warn_names = FALSE;
+ while (!feof(fp))
+ {
+ /* allocate for info about this block. */
+ if (blocknum == 0)
+ blocks = (struct block_struc *) malloc (sizeof(struct block_struc));
+ else
+ blocks = (struct block_struc *) realloc (blocks, (blocknum+1) * sizeof(struct block_struc));
+ if (blocks == NULL) { squid_errno = SQERR_MEM; return 0; }
+ blocks[blocknum].lcol = LINEBUFLEN+1;
+ blocks[blocknum].rcol = -1;
+
+ seqidx = 0;
+ /*CONSTCOND*/
+ while (1) /* breaks out when blank line or EOF is hit, see below */
+ {
+ /* get a data line */
+ do
+ {
+ if (fgets(buffer, LINEBUFLEN, fp) == NULL) goto BREAKOUT;
+ if (inblock && is_blankline(buffer)) goto BREAKOUT;
+ } while (! (*is_dataline)(buffer,
+ (got_sqinfo || (seqidx < nseq && blocknum > 0)) ?
+ ainfo->sqinfo[seqidx].name : NULL));
+
+ /* copy line for strtok'ing. set sptr to first word */
+ inblock = TRUE;
+ strcpy(bufcpy, buffer);
+ sptr = strtok(bufcpy, WHITESPACE);
+
+ /* First block only: save names */
+ if (blocknum == 0 && !got_sqinfo)
+ {
+ if (seqidx == 0) ainfo->sqinfo = (SQINFO *) malloc (sizeof(SQINFO));
+ else ainfo->sqinfo = (SQINFO *) realloc (ainfo->sqinfo, (seqidx + 1) * sizeof(SQINFO));
+ if (ainfo->sqinfo == NULL) { squid_errno = SQERR_MEM; return 0; }
+
+ ainfo->sqinfo[seqidx].flags = 0;
+ SetSeqinfoString(&(ainfo->sqinfo[seqidx]), sptr, SQINFO_NAME);
+ }
+ else /* in each additional block: check names */
+ {
+ if (strcmp(ainfo->sqinfo[seqidx].name, sptr) != 0)
+ warn_names = TRUE;
+ }
+ seqidx++; /* bump sequence counter */
+
+
+ /* 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; isspace(*sptr); sptr --)
+ /* do nothing */ ;
+ if (sptr - buffer > blocks[blocknum].rcol)
+ blocks[blocknum].rcol = sptr - buffer;
+ }
+ }
+
+ /* check that number of sequences matches expected */
+ BREAKOUT:
+ if (inblock) {
+ if (blocknum != 0 && seqidx != nseq)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ nseq = seqidx;
+ blocknum++;
+ inblock = FALSE;
+ }
+ }
+
+
+ /***************************************************
+ * 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;
+
+ fseek(fp, offset, SEEK_SET); /* rewind to first data block */
+
+ /* allocations
+ */
+ if ((aseqs = (char **) malloc (nseq * sizeof(char *))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ for (seqidx = 0; seqidx < nseq; seqidx++)
+ if ((aseqs[seqidx] = (char *) malloc ((alen+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ ainfo->alen = alen;
+ ainfo->flags |= AINFO_ALEN;
+
+ /***************************************************
+ * Second pass across file. Parse alignment
+ ***************************************************/
+ /* 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.
+ */
+
+ currlen = 0;
+ for (currblock = 0 ; currblock < blocknum; currblock++)
+ {
+ for (seqidx = 0; seqidx < nseq; seqidx++)
+ {
+ /* get next line */
+ do {
+ if (fgets(buffer, LINEBUFLEN, fp) == NULL)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ } while (! (*is_dataline)(buffer, ainfo->sqinfo[seqidx].name));
+
+ /* find right boundary of name */
+ sptr = buffer;
+ while (*sptr && isspace(*sptr)) sptr++;
+ while (*sptr && !isspace(*sptr)) sptr++;
+
+ /* parse line */
+ if (! copy_alignment_line(aseqs[seqidx], currlen, sptr - buffer,
+ buffer, blocks[currblock].lcol,
+ blocks[currblock].rcol))
+ { squid_errno = SQERR_FORMAT; return 0; }
+ }
+ currlen += blocks[currblock].rcol - blocks[currblock].lcol + 1;
+ }
+
+ /* NULL-terminate all the strings */
+ for (seqidx = 0; seqidx < nseq; seqidx++)
+ {
+ aseqs[seqidx][alen] = '\0';
+ homogenize_gapsym(aseqs[seqidx], (char) '.');
+ }
+
+ /* find raw sequence lengths for sqinfo */
+ for (seqidx = 0; seqidx < nseq; 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;
+ }
+
+ /* tidy up the alignment */
+ MingapAlignment(aseqs, nseq, ainfo);
+
+ /***************************************************
+ * Garbage collection and return
+ ***************************************************/
+ fclose(fp);
+ free(blocks);
+
+ if (warn_names)
+ Warn("sequences may be in different orders in blocks of %s?", seqfile);
+
+ *ret_num = nseq;
+ *ret_aseqs = aseqs;
+ return 1;
+}
+
+
+
+/* Function: ReadAlignment()
+ *
+ * Purpose: Given a seqfile name and format, hand it off to appropriate
+ * parser.
+ *
+ * Currently, squid can parse alignments from the following
+ * multiple sequence alignment formats:
+ * MSF (U. of Wisconsin GCG package MSF format)
+ * SELEX (NeXagen/CU Boulder SELEX format)
+ * CLUSTAL (Des Higgins' CLUSTALV and CLUSTALW programs)
+ *
+ * Return: 1 on success; 0 on failure.
+ * Returned data should be freed by caller with FreeAlignment()
+ */
+int
+ReadAlignment(char *seqfile,
+ int format,
+ char ***ret_aseqs,
+ int *ret_num,
+ struct aliinfo_s *ret_ainfo)
+{
+ switch (format) {
+ case kMSF:
+ if (! ReadInterleaved(seqfile, parse_MSF, dataline_MSF, ret_aseqs, ret_num, ret_ainfo))
+ return 0;
+ break;
+ case kSelex:
+ if (! ReadSELEX(seqfile, ret_aseqs, ret_num, ret_ainfo))
+ return 0;
+ break;
+ case kClustal:
+ if (! ReadInterleaved(seqfile, parse_clustal, dataline_clustal,
+ ret_aseqs, ret_num, ret_ainfo))
+ return 0;
+ break;
+ default: squid_errno = SQERR_FORMAT; return 0;
+ }
+ return 1;
+}
diff --git a/iupac.c b/iupac.c
new file mode 100644
index 0000000..acde7ce
--- /dev/null
+++ b/iupac.c
@@ -0,0 +1,197 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* iupac.c
+ *
+ * Globally defines the IUPAC symbols for nucleic acid sequence
+ * Slowly evolving into a repository of globals. Tue Apr 20 1993
+ */
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+char squid_version[] = "1.5g";
+char squid_date[] = "March 1996";
+
+/* Dayhoff f(i) amino acid occurrence frequencies. From BLAST 1.0.5, NCBI.
+ * In alphabetic order by single-letter code.
+ */
+float aafq[20] = {
+ .08713, .03347, .04687, .04953, .03977, .08861, .03362, .03689, .08048, .08536,
+ .01475, .04043, .05068, .03826, .04090, .06958, .05854, .06472, .01049, .02992
+};
+
+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/konings.c b/konings.c
new file mode 100644
index 0000000..e46deec
--- /dev/null
+++ b/konings.c
@@ -0,0 +1,324 @@
+/* konings.c
+ * 1.0: SRE, Wed Jul 7 08:53:37 1993
+ * adapted for 2.0: SRE, Thu Sep 9 13:38:13 1993
+ *
+ * Representation of secondary structure and secondary structural
+ * alignments using Danielle Konings' string notation, and Hogeweg's
+ * mountain notation.
+ *
+ * See: Konings and Hogeweg, J. Mol. Biol. 207:597-614 1989
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+/* Function: Align2kh()
+ *
+ * Purpose: Convert an alignment (align_s linked list) into
+ * a secondary structure string. The symbols used
+ * are > and < for the two sides of a MATP; '.'
+ * for other symbols.
+ *
+ * Also may return the "aligned" sequence; this
+ * sequence is only aligned in the sense that deleted
+ * consensus positions are represented as '.'
+ * and insert positions are lower case.
+ *
+ * Either ret_aseq or ret_khseq may be passed as NULL
+ * if you don't want one of them.
+ */
+int
+Align2kh(struct align_s *ali,
+ char **ret_aseq,
+ char **ret_khseq)
+{
+ struct align_s *curr; /* ptr into alignment list */
+ char *aseq; /* RETURN: aligned seq */
+ char *khseq; /* RETURN: structure string */
+ int len; /* length of alignment, khseq */
+ int pos; /* position in khseq */
+
+
+ /* Count the length of the list and malloc for khseq.
+ */
+ len = 0;
+ for (curr = ali->nxt; curr->nxt != NULL; curr = curr->nxt)
+ len++;
+ if ((khseq = (char *) malloc ((len+1) * sizeof(char))) == NULL ||
+ (aseq = (char *) malloc ((len+1) * sizeof(char))) == NULL)
+ Die("Memory allocation failed, line %d of %s", __LINE__, __FILE__);
+
+ /* This used to be harder. Now align_s already has a field for
+ * secondary structure annotation, and we just have to copy it.
+ */
+ pos = 0;
+ for (curr = ali->nxt; curr->nxt != NULL; curr = curr->nxt)
+ {
+ switch (curr->type)
+ {
+ case uBEGIN_ST:
+ case uBIFURC_ST:
+ break; /* neither should appear in an align_s! */
+
+ case uDEL_ST:
+ khseq[pos] = ' ';
+ aseq[pos] = '-';
+ break;
+
+ case uINSL_ST:
+ case uINSR_ST:
+ khseq[pos] = curr->ss;
+ aseq[pos] = sre_tolower(curr->sym);
+ break;
+
+ case uMATL_ST:
+ case uMATR_ST:
+ case uMATP_ST:
+ khseq[pos] = curr->ss;
+ aseq[pos] = sre_toupper(curr->sym);
+ break;
+
+ default:
+ Die("unrecognized state type %d in Align2kh()", curr->type);
+ }
+ pos++;
+ }
+
+ khseq[pos] = '\0';
+ aseq[pos] = '\0';
+
+ if (ret_khseq == NULL) free(khseq); else *ret_khseq = khseq;
+ if (ret_aseq == NULL) free(aseq); else *ret_aseq = aseq;
+ return 1;
+}
+
+
+
+
+/* Function: PrintAliLandscape()
+ *
+ * Purpose: Print an alignment of sequence to model in the form
+ * of a Konings/Hogeweg "mountain".
+ */
+int
+PrintAliLandscape(FILE *fp,
+ struct cm_s *cm,
+ struct align_s *ali)
+{
+ int altitude; /* current height on the mountain */
+ struct align_s *curr; /* ptr to current ali element */
+ struct align_s *prev; /* ptr to previous ali element */
+ int i;
+
+ altitude = 0;
+ prev = NULL;
+ for (curr = ali->nxt; curr->nxt != NULL; curr = curr->nxt)
+ {
+ if (curr->pos >= 0)
+ fprintf(fp, "%4d %c ", curr->pos+1, curr->sym);
+ else
+ fprintf(fp, " %c ", curr->sym);
+
+ for (i = 0; i < altitude; i++)
+ fputc(' ', fp);
+
+ switch (curr->type)
+ {
+ case uBEGIN_ST:
+ case uBIFURC_ST: break;
+ case uDEL_ST: fputs(" DEL ", fp); break;
+ case uINSL_ST: fputs("` INSL", fp); break;
+ case uINSR_ST: fputs("\' INSR", fp); break;
+ case uMATL_ST: fputs("\\ MATL", fp); break;
+ case uMATR_ST: fputs("/ MATR", fp); break;
+
+ case uMATP_ST:
+ if (prev == NULL || curr->nodeidx > prev->nodeidx)
+ {
+ fputs(" v MATP", fp);
+ altitude++;
+ }
+ else
+ {
+ fputs("^ MATP", fp);
+ altitude--;
+ }
+ break;
+
+
+ default:
+ Die("unrecognized state type %d in PrintAliLandscape()", curr->type);
+ }
+
+ printf(" %d\n", curr->nodeidx);
+ prev = curr;
+ }
+
+ return 1;
+}
+
+
+
+/* Function: Trace2KHS()
+ *
+ * Purpose: From a traceback tree of seq, produce a
+ * secondary structure string. ">" and "<" are
+ * used for pairwise emissions; "." for single-stranded stuff.
+ * Note that structure is defined by pairwise emissions,
+ * not by Watson-Crick-isms and stacking rules.
+ *
+ * Args: tr - traceback structure
+ * seq - sequence, 0..rlen-1
+ * rlen - length of seq and returned ss string
+ * watsoncrick - TRUE to annotate canonical pairs only
+ * ret_ss - RETURN: alloc'ed secondary structure string
+ *
+ * Return: ret_ss contains a string 0..rlen-1 containing the
+ * secondary structure. Must be free'd by caller.
+ */
+void
+Trace2KHS(struct trace_s *tr, char *seq, int rlen, int watsoncrick,
+ char **ret_ss)
+{
+ struct tracestack_s *dolist;
+ struct trace_s *curr;
+ char *ss;
+
+ if ((ss = (char *) malloc (sizeof(char) * rlen+1)) == NULL)
+ Die("malloc failed");
+ memset(ss, '.', rlen);
+ ss[rlen] = '\0';
+
+ dolist = InitTracestack();
+ PushTracestack(dolist, tr->nxtl);
+
+ while ((curr = PopTracestack(dolist)) != NULL)
+ {
+ if ( curr->type == uMATP_ST )
+ {
+ if (! watsoncrick ||
+ IsRNAComplement(seq[curr->emitl], seq[curr->emitr], TRUE))
+ {
+ ss[curr->emitl] = '>';
+ ss[curr->emitr] = '<';
+ }
+ }
+
+ if (curr->nxtr) PushTracestack(dolist, curr->nxtr);
+ if (curr->nxtl) PushTracestack(dolist, curr->nxtl);
+ }
+ FreeTracestack(dolist);
+ *ret_ss = ss;
+}
+
+/* Function: IsRNAComplement()
+ *
+ * Purpose: Returns TRUE if sym1, sym2 are Watson-Crick complementary.
+ * If allow_gu is TRUE, GU pairs also return TRUE.
+ */
+int
+IsRNAComplement(char sym1, char sym2, int allow_gu)
+{
+ sym1 = toupper(sym1);
+ sym2 = toupper(sym2);
+ if (sym1 == 'T') sym1 = 'U';
+ if (sym2 == 'T') sym2 = 'U';
+
+ if ((sym1 == 'A' && sym2 == 'U') ||
+ (sym1 == 'C' && sym2 == 'G') ||
+ (sym1 == 'G' && sym2 == 'C') ||
+ (sym1 == 'U' && sym2 == 'A') ||
+ (allow_gu && sym1 == 'G' && sym2 == 'U') ||
+ (allow_gu && sym1 == 'U' && sym2 == 'G'))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+
+/* 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. If allow_pseudoknots is FALSE,
+ * the pseudoknot symbols will be ignored and these positions
+ * will be treated as single stranded.
+ *
+ * Return: ret_ct is allocated here and must be free'd by caller.
+ * Returns 1 on success, 0 if ss is somehow inconsistent.
+ */
+int
+KHS2ct(char *ss, int len, int allow_pseudoknots, int **ret_ct)
+{
+ struct intstack_s *dolist[27];
+ int *ct;
+ int i;
+ int pos, pair;
+ int status = 1; /* success or failure return status */
+
+ for (i = 0; i < 27; i++)
+ dolist[i] = InitIntStack();
+
+ 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] > 127) status = 0; /* bulletproof against SGI buggy ctype.h */
+
+ else 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 (allow_pseudoknots && isupper((int) ss[pos]))
+ PushIntStack(dolist[ss[pos] - 'A' + 1], pos);
+ else if (allow_pseudoknots && islower((int) ss[pos]))
+ {
+ if (! PopIntStack(dolist[ss[pos] - 'a' + 1], &pair))
+ { status = 0; }
+ else
+ {
+ ct[pos] = pair;
+ ct[pair] = pos;
+ }
+ }
+ else if (allow_pseudoknots && !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;
+}
+
+
diff --git a/lengthdist.c b/lengthdist.c
new file mode 100644
index 0000000..cbc56d5
--- /dev/null
+++ b/lengthdist.c
@@ -0,0 +1,200 @@
+/* lengthdist.c
+ * SRE, Fri Sep 30 09:51:14 1994
+ *
+ * Calculate length distributions expected at each state.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+#ifdef DEBUG
+#include <assert.h>
+#endif
+
+
+/* Function: LengthDistribution()
+ *
+ * Purpose: Given a covariance model, calculate the
+ * length distribution that we expect each state
+ * to be aligned to. Uses a full forward
+ * (summed probabilities) calculation.
+ *
+ * Args: cm - covariance model (probability form)
+ * N - maximum length to look at.
+ * ret_lmx - RETURN: (0..M-1) by (0..N) matrix of probabilities
+ * for states 0..M-1 emitting lengths of (0..N).
+ *
+ * Return: (void)
+ * ret_lmx is alloc'ed here. Free2DArray(*ret_lmx, M)
+ */
+void
+LengthDistribution(struct pstate_s *pcm, int statenum, int N, double ***ret_lmx)
+{
+ double **lmx;
+ int y, len;
+ int ynext;
+ int mid;
+
+ /* Allocate the matrix for storing probability
+ * distributions.
+ */
+ lmx = (double **) MallocOrDie(statenum * sizeof(double *));
+ for (y = 0; y < statenum; y++)
+ lmx[y] = (double *) MallocOrDie ( (N+1) * sizeof(double));
+
+ /* Set whole thing to zero.
+ */
+ for (y = 0; y < statenum; y++)
+ for (len = 0; len <= N; len++)
+ lmx[y][len] = 0.0;
+
+ /* Initialize at length = 0.
+ */
+ for (y = statenum-1; y >= 0; y--)
+ switch (pcm[y].statetype) {
+ case uEND_ST:
+ lmx[y][0] = 1.0;
+ break;
+
+ case uBIFURC_ST:
+ lmx[y][0] = lmx[y+1][0] * lmx[pcm[y].bifr][0];
+ break;
+
+ case uDEL_ST:
+ case uBEGIN_ST:
+ for (ynext = 0; ynext < pcm[y].connectnum; ynext++)
+ lmx[y][0] += pcm[y].tmx[ynext] * lmx[y + pcm[y].offset + ynext][0];
+ break;
+ }
+
+
+ /* Recurse for lengths 1..N.
+ */
+ for (len = 1; len <= N; len++)
+ for (y = statenum-1; y >= 0; y--)
+ switch (pcm[y].statetype) {
+ case uEND_ST:
+ break;
+
+ case uBIFURC_ST:
+ for (mid = 0; mid <= len; mid++)
+ lmx[y][len] += lmx[y+1][mid] * lmx[pcm[y].bifr][len-mid];
+ break;
+
+ case uDEL_ST:
+ case uBEGIN_ST:
+ for (ynext = 0; ynext < pcm[y].connectnum; ynext++)
+ lmx[y][len] += pcm[y].tmx[ynext] * lmx[y + pcm[y].offset + ynext][len];
+ break;
+
+ case uMATP_ST:
+ if (len > 1)
+ for (ynext = 0; ynext < pcm[y].connectnum; ynext++)
+ lmx[y][len] += pcm[y].tmx[ynext] * lmx[y + pcm[y].offset + ynext][len-2];
+ break;
+
+ case uMATR_ST:
+ case uMATL_ST:
+ case uINSL_ST:
+ case uINSR_ST:
+ for (ynext = 0; ynext < pcm[y].connectnum; ynext++)
+ lmx[y][len] += pcm[y].tmx[ynext] * lmx[y + pcm[y].offset + ynext][len-1];
+ break;
+
+ default: Die("unrecognized state type %d", pcm[y].statetype);
+ }
+
+ *ret_lmx = lmx;
+ return;
+}
+
+
+
+/* Function: LengthBounds()
+ *
+ * Purpose: Takes the probability distributions produced by
+ * LengthDistribution() and produces a set of
+ * minimum and maximum length bounds, within which
+ * lies a specified amount of the probability.
+ *
+ * The algorithm is simple. Find the peak of the
+ * probability distribution and include it. Then
+ * look left and right; choose whichever one is
+ * higher P, and include it. Continue until the
+ * included probability exceeds the target.
+ *
+ * Args: lmx: probability distributions from LengthDistribution()
+ * statenum: # of rows in lmx
+ * N: max length (lmx is [0..statenum-1[0..N])
+ * epsilon: target probability is 1.0 - epsilon.
+ * ret_min: RETURN: [0..statenum-1] array of minimum
+ * lengths for each state
+ * ret_max: RETURN: [0..statenum-1] array of maximum
+ * lengths for each state
+ *
+ * Return: (void)
+ * ret_min, ret_max alloced here. free().
+ */
+void
+LengthBounds(double **lmx, int statenum, int N, double epsilon,
+ int **ret_min, int **ret_max)
+{
+ int *min, *max;
+ int y, len;
+ int cmin, cmax; /* current min and max */
+ double best;
+ double p_remain;
+
+ min = (int *) MallocOrDie (sizeof(int) * statenum);
+ max = (int *) MallocOrDie (sizeof(int) * statenum);
+
+ for (y = 0; y < statenum; y++)
+ {
+ /* danger! assuming that N was large enough! */
+ DNorm(lmx[y], (N+1));
+
+ /* step 1. find peak */
+ best = lmx[y][0];
+ cmin = 0;
+ for (len = 1; len <= N; len++)
+ if (lmx[y][len] > best) { best = lmx[y][len]; cmin = len; }
+
+ /* that's where we start */
+ cmax = cmin;
+ p_remain = 1.0 - lmx[y][cmin];
+
+ /* extend to find bounds */
+ while (p_remain > epsilon)
+ {
+ if (cmin == 0 && cmax == N)
+ break;
+/*
+ Die("state %d distribution not within set bound of %d; %f remains\n",
+ y, N, p_remain);
+*/
+ else if (cmin == 0) /* must look right */
+ p_remain -= lmx[y][++cmax];
+ else if (cmax == N) /* must look left */
+ p_remain -= lmx[y][--cmin];
+ else /* look left and right */
+ {
+ if (lmx[y][cmin-1] > lmx[y][cmax+1])
+ p_remain -= lmx[y][--cmin];
+ else
+ p_remain -= lmx[y][++cmax];
+ }
+ }
+ min[y] = cmin;
+ max[y] = cmax;
+ }
+ *ret_min = min;
+ *ret_max = max;
+}
diff --git a/maspar.h b/maspar.h
new file mode 100644
index 0000000..fef4017
--- /dev/null
+++ b/maspar.h
@@ -0,0 +1,10 @@
+/* Header file specifically for MasPar parallelized version
+ */
+
+/* These define's affect mpcovels.
+ */
+#define NYPROC 64 /* how many rows of processors (nyproc) */
+#define BLOCKSIZE 128 /* size of sequence blocks sent to DPU */
+#define VPENUM 3 /* # of virtual PE's per PE. N = NYPROC * VPENUM -1 */
+
+
diff --git a/maxmodelmaker.c b/maxmodelmaker.c
new file mode 100644
index 0000000..a6ace72
--- /dev/null
+++ b/maxmodelmaker.c
@@ -0,0 +1,1904 @@
+/* maxmodelmaker.c - maximum likelihood construction of a covariance model
+ * Tue Aug 31 14:54:35 1993
+ *
+ * Given a multiple sequence alignment, construct the model
+ * which generates that alignment with maximal likelihood.
+ * Uses a dynamic programming algorithm to assign a score
+ * to the optimal subtree with a "root" node MATP, MATR, MATL,
+ * BEGINL, BEGINR, or BIFURC aligned to matrix cell i,j,
+ * where i and j are column and row positions in a multiple
+ * sequence alignment. The alignment of ROOT to i=0,j=N-1 is
+ * the score of the best model; a traceback from this point
+ * creates the optimal tree structure. The tree structure is
+ * explicitly aligned to the multiple sequence alignment,
+ * so it is trivial to estimate the parameters of the model.
+ *
+ *
+ *
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <math.h>
+#include "version.h"
+#include "structs.h"
+#include "funcs.h"
+
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define MAXINSERT 6 /* maximum INSL or INSR path length between MATP nodes */
+
+
+/* Structure maxmx_s
+ *
+ * One per cell of the 2D diagonal matrix of the alignment
+ * against itself.
+ */
+struct maxmx_s {
+ int sc[NODETYPES-1]; /* scores of assigning each possible node type */
+
+ /*** Traceback info: */
+ short matp_i2; /* matp assignment connects to node ftype at i2,j2 */
+ short matp_j2;
+ char matp_ftype;
+ short matl_i2; /* matl assignment connects to node ftype at i2,j */
+ char matl_ftype;
+ short matr_j2; /* matr assignment connects to node ftype at i,j2 */
+ char matr_ftype;
+ char begl_ftype; /* begl assignment connects to node ftype at i,j */
+ short begr_i2; /* begr assignment connects to node ftype at i2, j */
+ char begr_ftype;
+ short bifurc_mid; /* best bifurcation is into i,mid, mid+1,j */
+};
+
+static struct maxmx_s **alloc_maxmx(int alen);
+static void init_maxmx(struct maxmx_s **mmx, int nseq, int alen,
+ struct prior_s *prior, int *mscore, double *gapcount);
+static void recurse_maxmx(int **aseqsT, float *weights, int alen, int nseq,
+ struct prior_s *prior, int *mscore, double *gapcount,
+ double gapthresh, struct maxmx_s **mmx);
+static void trace_maxmx(struct maxmx_s **mmx, int alen, struct trace_s **ret_mtr);
+static void transpose_alignment(char **aseqs, int alen, int nseq, int ***ret_aseqsT);
+static void singlet_emissions(int **aseqsT, float *weights, int alen,int nseq,
+ struct prior_s *prior, int **ret_mscore, double **ret_gapcount);
+static int pair_emissioncost(int *coli, int *colj,float *weights, int nseq, struct prior_s *prior);
+static void frommatp_transtable(int **aseqsT, float *weights, int nseq,
+ int i, int j, int i2, int j2, int *accum_insl,
+ int *accum_insr,
+ double trans[STATETYPES][STATETYPES]);
+static void frommatl_transtable(int **aseqsT, float *weights, int nseq,
+ int i, int j, int i2, int *accum_insl,
+ double trans[STATETYPES][STATETYPES]);
+static void frommatr_transtable(int **aseqsT, float *weights, int nseq, int i,
+ int j, int j2, int *accum_insr,
+ double trans[STATETYPES][STATETYPES]);
+static void frombeginr_transtable(int **aseqsT, float *weights, int nseq,
+ int j, int i2, int *accum_insl,
+ double trans[STATETYPES][STATETYPES]);
+static void frombeginl_transtable(int **aseqsT, float *weights, int nseq,
+ int i, int j, double trans[STATETYPES][STATETYPES]);
+static void fromroot_transtable(int **aseqsT, float *weights, int nseq, int i2,int j2,
+ int *accum_insl, int *accum_insr,
+ double trans[STATETYPES][STATETYPES]);
+static int assign_cell(int i, int j, int symi, int symj);
+static void to_matp_transtable(double master_table[STATETYPES][STATETYPES],
+ double trans[STATETYPES][STATETYPES]);
+static void to_matr_transtable(double master_table[STATETYPES][STATETYPES],
+ double trans[STATETYPES][STATETYPES]);
+static void to_matl_transtable(double master_table[STATETYPES][STATETYPES],
+ double trans[STATETYPES][STATETYPES]);
+static void to_bifurc_transtable(double master_table[STATETYPES][STATETYPES],
+ double trans[STATETYPES][STATETYPES]);
+static int dot_score(double *cvec, double *pvec, int veclen);
+
+#ifdef DEBUG
+static void print_mmx(struct maxmx_s **mmx, int alen);
+static void print_assignments(struct trace_s *mtr, int nseq, int alen, double *gapcount);
+#endif
+
+/* MACROS: copy_transtable()
+ * copy_singlet()
+ * copy_pairwise()
+ *
+ * For speed, we use memcpy() to do the operations, relying
+ * on the fact that C stores 2D arrays in 1D.
+ */
+#define copy_transtable(tomx, frommx) memcpy((void *) tomx, (void *) frommx, sizeof(double) * STATETYPES * STATETYPES)
+#define copy_singlet(tovec, fromvec) memcpy((void *) tovec, (void *) fromvec, sizeof(double) * ALPHASIZE)
+#define copy_pairwise(tomx, frommx) memcpy((void *) tomx, (void *) frommx, sizeof(double) * ALPHASIZE * ALPHASIZE)
+
+/* MACROS: zero_transtable()
+ * zero_singlet()
+ * zero_pairwise()
+ *
+ * For speed, we use memset() to initialize, relying
+ * on the fact that C stores 2D arrays in 1D. Are doubles
+ * really eight 0 bytes when they're == 0.0?
+ */
+#define zero_transtable(mx) memset(mx, (char) 0, sizeof(double) * STATETYPES * STATETYPES)
+#define zero_singlet(vec) memset(vec, (char) 0, sizeof(double) * ALPHASIZE)
+#define zero_pairwise(mx) memset(mx, (char) 0, sizeof(double) * ALPHASIZE * ALPHASIZE)
+
+/* Function: Maxmodelmaker()
+ *
+ * Purpose: Create a maximally likely model structure from a multiple
+ * sequence alignment.
+ *
+ * Args: aseqs - flushed sequence alignment; each seq is 0..alen-1
+ * ainfo - information about the alignment
+ * nseq - number of sequences
+ * gapthresh - heuristic: fractional occupancy <= a column must be a MAT of some kind
+ * prior - prior probability distributions, and alphabet info
+ * ret_ssinfo - RETURN: total info content of the alignment (may pass NULL)
+ * ret_cm - RETURN: the new covariance model (may pass NULL)
+ * ret_mtr - RETURN: master traceback for aseqs (may pass NULL)
+ *
+ * Return: 1 on success, 0 on failure.
+ * ret_cm is alloc'ed here and must be free'd by the caller.
+ */
+int
+Maxmodelmaker(char **aseqs, AINFO *ainfo, int nseq, double gapthresh, struct prior_s *prior,
+ double *ret_ssinfo, struct cm_s **ret_cm, struct trace_s **ret_mtr)
+{
+ int **aseqsT; /* transpose of alignment, [1..alen+1][0..nseq-1] */
+ int *mscore; /* emission scores of single columns as MATR or MATL */
+ double *gapcount; /* weighted count of gap occurrence in each column */
+ struct maxmx_s **mmx; /* saved score and traceback pointer matrix */
+ struct cm_s *cm; /* RETURN: new model */
+ int nodes; /* size of new model in nodes */
+ struct trace_s *mtr; /* consensus master traceback */
+ struct trace_s *tr; /* individual "fake" traceback */
+ struct trmem_s *pool; /* memory pool for traceback */
+ int idx; /* counter for sequences */
+ float *wt; /* array of 0..nseq-1 weights */
+ double ssinfo; /* information content */
+
+ /* Set up an array of sequence weights
+ */
+ if ((wt = (float *) malloc (sizeof(float) * nseq)) == NULL)
+ Die("malloc failed");
+ for (idx = 0; idx < nseq; idx++)
+ wt[idx] = (ainfo->sqinfo[idx].flags & SQINFO_WGT) ?
+ ainfo->sqinfo[idx].weight : 1.0;
+
+ /* Transpose (and shift by 1 column index) aseqs[0..nseq-1][0..alen-1] to
+ * aseqsT[1..alen+1][0..nseq-1].
+ */
+ transpose_alignment(aseqs, ainfo->alen, nseq, &aseqsT);
+
+ /* Pre-calculate expected singlet emission scores for each column;
+ * also, pick up a weighted count of gap occurrences in each column.
+ */
+ singlet_emissions(aseqsT, wt, ainfo->alen, nseq, prior, &mscore, &gapcount);
+
+
+ /* Allocate the scoring matrix. It is j=0..alen rows by i=1..j+1 columns;
+ * i.e., a lower left diagonal matrix for 1..alen, with an extra off-diagonal
+ * (j+1,j) for boundary conditions.
+ */
+ mmx = alloc_maxmx(ainfo->alen);
+
+ /* Initialize the off-diagonal (j+1,j) and the diagonal (j,j), to
+ * set our boundary conditions.
+ */
+ init_maxmx(mmx, nseq, ainfo->alen, prior, mscore, gapcount);
+
+ /* The heart of the calculation: recursively calculate scores for all
+ * subsequences i..j, and save traceback pointers.
+ */
+ recurse_maxmx(aseqsT, wt, ainfo->alen, nseq, prior, mscore, gapcount, gapthresh, mmx);
+#ifdef DEBUG
+ print_mmx(mmx,ainfo->alen);
+#endif
+
+ /* Now we know the info content
+ */
+ ssinfo = (double) (mmx[ainfo->alen][0].sc[MATP_NODE] / INTPRECISION);
+
+ /* Traceback, constructing a consensus tree.
+ */
+ trace_maxmx(mmx, ainfo->alen, &mtr);
+/* PrintTrace(stdout, mtr); */
+
+ /* Count nodes in the consensus tree and number them
+ */
+ NumberMasterTrace(mtr, &nodes);
+
+ /* Create a new model
+ */
+ if ((cm = AllocCM(nodes)) == NULL)
+ Die("failed to allocate for new model of %d nodes\n", nodes);
+ TopofyNewCM(cm, mtr);
+
+ /* For each sequence, construct an individual "fake" traceback
+ * using the master, and count it into the new model.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ Transmogrify(mtr, aseqs[idx], &tr, &pool);
+
+ if (! TraceCount(cm, aseqs[idx], wt[idx], tr))
+ Die("TraceCount() failed");
+
+ FreeTrace(tr, pool);
+ }
+#ifdef DEBUG
+ printf("Checking model after trace counts\n");
+ if (! VerifyCM(cm))
+ Die("Verification fails -- baaaad model\n");
+#endif
+
+ /* And, finally, convert the new model to probabilities.
+ * There. Wasn't that simple?
+ */
+ ProbifyCM(cm, prior);
+
+#ifdef DEBUG
+ printf("Checking model after probify\n");
+ if (! VerifyCM(cm))
+ Die("Verification fails -- baaaad model\n");
+#endif
+
+
+ free(mscore);
+ free(gapcount);
+ Free2DArray(mmx, ainfo->alen+1);
+ Free2DArray(aseqsT, ainfo->alen+2);
+ free(wt);
+
+ if (ret_mtr != NULL) *ret_mtr = mtr; else FreeTrace(mtr, NULL);
+ if (ret_ssinfo != NULL) *ret_ssinfo = ssinfo;
+ if (ret_cm != NULL) *ret_cm = cm; else FreeCM(cm);
+ return 1;
+}
+
+
+
+
+/* Function: alloc_maxmx()
+ *
+ * Purpose: allocate the storage matrix. It is a lower left diagonal
+ * matrix with inverted indexing, mmx[j][i], i <= j+1.
+ *
+ * Args: alen - width of alignment
+ *
+ * Return: mmx: allocated storage matrix. Can be free'd by Free2DArray(mmx, alen+1).
+ */
+static struct maxmx_s **
+alloc_maxmx(int alen)
+{
+ struct maxmx_s **mmx;
+ int i, j, y;
+
+ if ((mmx = (struct maxmx_s **) malloc ((alen+1) * sizeof(struct maxmx_s))) == NULL)
+ Die("malloc failed");
+ for (j = 0; j <= alen; j++)
+ if ((mmx[j] = (struct maxmx_s *) malloc ((j+2) * sizeof(struct maxmx_s))) == NULL)
+ Die("malloc failed");
+
+ /* Set the whole matrix so that scores are NEGINFINITY and
+ * each cell's traceback pointers point at itself.
+ */
+ for (j = 0; j <= alen; j++)
+ for (i = 0; i <= j+1; i++)
+ {
+ for (y = 0; y < NODETYPES-1; y++)
+ mmx[j][i].sc[y] = NEGINFINITY;
+
+ mmx[j][i].matp_i2 = (short) i;
+ mmx[j][i].matp_j2 = (short) j;
+ mmx[j][i].matp_ftype = (char) MATP_NODE;
+ mmx[j][i].matl_i2 = (short) i;
+ mmx[j][i].matl_ftype = (char) MATL_NODE;
+ mmx[j][i].matr_j2 = (short) j;
+ mmx[j][i].matr_ftype = (char) MATR_NODE;
+ mmx[j][i].begl_ftype = (char) BEGINL_NODE;
+ mmx[j][i].begr_i2 = (short) i;
+ mmx[j][i].begr_ftype = (char) BEGINR_NODE;
+ mmx[j][i].bifurc_mid = (short) i;
+ }
+ return mmx;
+}
+
+
+/* Function: init_maxmx()
+ *
+ * Purpose: Initialize the scoring matrix. The offdiagonal j+1,j and the
+ * diagonal j,j are initialized.
+ *
+ * In the offdiagonal, we use BIFURC to represent END, and set
+ * its score to zero.
+ *
+ * In the diagonal, it doesn't matter whether we use MATL or
+ * MATR to generate single symbols; we use MATL for an implementation-
+ * specific reason (if we use MATR, we need an extra row for i=0,j=-1)
+ * MATL's get calculated scores and traceback pointers to
+ * (j+1,j,END). BEGINL, BEGINR are also calculated here.
+ * MATR, MATP, BIFURC are left at NEGINFINITY.
+ *
+ * Args: mmx: saved score/traceback pointer matrix
+ * nseq: number of sequences in alignment
+ * alen: number of columns in alignment
+ * prior: prior probability distributions
+ * mscore: singlet emission costs for each column
+ * gapcount: weighted counts of gaps in each column
+ *
+ * Return: (void). maxmx() is initialized.
+ */
+static void
+init_maxmx(struct maxmx_s **mmx,
+ int nseq,
+ int alen,
+ struct prior_s *prior,
+ int *mscore,
+ double *gapcount)
+{
+ int j;
+ int fromstate, tostate;
+ double trans[STATETYPES][STATETYPES]; /* state transition matrix */
+
+ /* Do the offdiagonal (j+1,j).
+ * set BIFURC/END alignment costs to zero.
+ * Everything else is left at -oo.
+ */
+ for (j = 0; j <= alen; j++)
+ mmx[j][j+1].sc[END_NODE] = 0;
+
+ /* Do the diagonal (j,j).
+ * MATL is calculated; MATR is the same; then BEGINL, BEGINR are calculated.
+ */
+ for (j = 1; j <= alen; j++)
+ {
+ /* Make a transition matrix for MATL -> END for this (j,j)
+ */
+ for (fromstate = 0; fromstate < STATETYPES; fromstate++)
+ for (tostate = 0; tostate < STATETYPES; tostate++)
+ trans[fromstate][tostate] = 0.0;
+ trans[MATL_ST][END_ST] = (double) nseq - gapcount[j];
+ trans[DEL_ST][END_ST] = gapcount[j];
+ ProbifyTransitionMatrix(trans, MATL_NODE, END_NODE, prior);
+
+ /* Score = sum P(j | MATL) + sum T(END | j,j,(DEL|MATL))
+ * Set traceback pointers.
+ */
+ mmx[j][j].sc[MATL_NODE] = mscore[j] +
+ (int) (INTPRECISION *
+ ((log(trans[MATL_ST][END_ST]) * ((double) nseq - gapcount[j])) +
+ (log(trans[DEL_ST][END_ST]) * gapcount[j]))
+ );
+ mmx[j][j].matl_i2 = j+1;
+ mmx[j][j].matl_ftype = END_NODE;
+
+ /* MATR_NODE scores are exactly the same as MATL_NODE on
+ * the diagonal
+ */
+ mmx[j][j].sc[MATR_NODE] = mmx[j][j].sc[MATL_NODE];
+ mmx[j][j].matr_j2 = j-1;
+ mmx[j][j].matr_ftype = END_NODE;
+
+ /* Calculate BEGINL -> MATL;
+ * set traceback pointer.
+ */
+ for (fromstate = 0; fromstate < STATETYPES; fromstate++)
+ for (tostate = 0; tostate < STATETYPES; tostate++)
+ trans[fromstate][tostate] = 0.0;
+ trans[BEGIN_ST][MATL_ST] = (double) nseq - gapcount[j];
+ trans[BEGIN_ST][DEL_ST] = gapcount[j];
+ ProbifyTransitionMatrix(trans, BEGINL_NODE, MATL_NODE, prior);
+ mmx[j][j].sc[BEGINL_NODE] = mmx[j][j].sc[MATL_NODE]
+ + (int) (INTPRECISION *
+ ((log(trans[BEGIN_ST][MATL_ST]) * ((double) nseq - gapcount[j])) +
+ (log(trans[BEGIN_ST][DEL_ST]) * gapcount[j]))
+ );
+ mmx[j][j].begl_ftype = MATL_NODE;
+
+ /* Make a transition matrix for BEGINR -> MATL for this (j,j)
+ */
+ for (fromstate = 0; fromstate < STATETYPES; fromstate++)
+ for (tostate = 0; tostate < STATETYPES; tostate++)
+ trans[fromstate][tostate] = 0.0;
+ trans[BEGIN_ST][DEL_ST] = gapcount[j];
+ trans[BEGIN_ST][MATL_ST] = (double) nseq - gapcount[j];
+ ProbifyTransitionMatrix(trans, BEGINR_NODE, MATL_NODE, prior);
+
+ /* Score for (j,j,BEGINR_NODE), and set traceback pointers
+ */
+ mmx[j][j].sc[BEGINR_NODE] = mmx[j][j].sc[MATL_NODE] +
+ (int) (INTPRECISION *
+ ((log(trans[BEGIN_ST][MATL_ST]) * ((double) nseq - gapcount[j])) +
+ (log(trans[BEGIN_ST][DEL_ST]) * gapcount[j]))
+ );
+ mmx[j][j].begr_i2 = j;
+ mmx[j][j].begr_ftype = MATL_NODE;
+ }
+}
+
+
+/* Function: recurse_maxmx()
+ *
+ * Purpose: Recursion calculations of the maximum likelihood CM construction
+ * algorithm.
+ *
+ * Args: aseqsT - transposed alignment; [1..alen+1][0..nseq-1]
+ * weights - weights assigned to each sequence, usually 1.0
+ * alen - number of columns in alignment
+ * nseq - number of aseqs
+ * prior - structure containing prior probability distributions
+ * mscore - singlet match emission costs
+ * mmx - scoring matrix we fill in; mmx[j][i], lower diagonal
+ *
+ * Return: (void). mmx is filled with scores and traceback pointers.
+ */
+static void
+recurse_maxmx(int **aseqsT,
+ float *weights,
+ int alen,
+ int nseq,
+ struct prior_s *prior,
+ int *mscore,
+ double *gapcount,
+ double gapthresh,
+ struct maxmx_s **mmx)
+{
+ int **insl_accum; /* accumulated INSL counts for all starting positions, all seqs */
+ int **insr_accum; /* accumulated INSR counts for all starting positions, all seqs */
+ double tmaster[STATETYPES][STATETYPES]; /* master copy of state transition table, counts */
+ double tcounts[STATETYPES][STATETYPES]; /* state transition table, counts */
+ double tmx[STATETYPES][STATETYPES]; /* state transition probabilities post-regularization */
+ int tonode; /* node type to connect to */
+ int i,j; /* current cell column, row */
+ int i2, j2; /* i', j': cell to connect to */
+ int idx; /* counter for sequences */
+ int sc; /* temp variable holding a score */
+ int mid; /* midpoint for a bifurcation */
+
+ if ((insr_accum = (int **) malloc ((alen+1) * sizeof(int *))) == NULL ||
+ (insl_accum = (int **) malloc ((alen+2) * sizeof(int *))) == NULL)
+ Die("malloc failed");
+ for (i = 0; i <= alen; i++)
+ if ((insr_accum[i] = (int *) malloc (nseq * sizeof(int))) == NULL)
+ Die("malloc failed");
+ for (i = 0; i <= alen+1; i++)
+ if ((insl_accum[i] = (int *) malloc (nseq * sizeof(int))) == NULL)
+ Die("malloc failed");
+
+ gapthresh *= (double) nseq; /* scale gapthresh to be comparable to counts in gapcount array */
+
+ /* Initialize insr_accum. (Vertical, j insertion accumulator)
+ * insr_accum contains, for each sequence, a count of how many symbols
+ * must be inserted to get from any row fromj to the current row (exclusive
+ * of fromj and the current column).
+ * insr_accum is therefore [0..alen-1][0..nseq-1]
+ */
+ for (j2 = 1; j2 <= alen; j2++)
+ for (idx = 0; idx < nseq; idx++)
+ insr_accum[j2][idx] = 0;
+ for (idx = 0; idx < nseq; idx++)
+ if (aseqsT[1][idx] >= 0)
+ insr_accum[0][idx] = 1;
+
+ for (j = 2; j <= alen; j++)
+ {
+ /* Initialize insl_accum (horizontal, i insertion) array each time we start
+ * a new row. insl_accum contains, for each sequence, how many symbols
+ * must be inserted to get from any column i2 to the current column,
+ * exclusive. insl_accum is therefore [1..alen+1][0..nseq]
+ */
+ for (i2 = 1; i2 <= j+1; i2++)
+ for (idx = 0; idx < nseq; idx++)
+ insl_accum[i2][idx] = 0;
+ for (idx = 0; idx < nseq; idx++)
+ if (aseqsT[j][idx] >= 0)
+ insl_accum[j+1][idx]++;
+
+ for (i = j-1; i > 0; i--)
+ {
+
+ /* BIFURC: explain i,j as sum of i,mid,BEGINL + mid+1,j,BEGINR
+ * i <= mid <= j
+ */
+ for (mid = i; mid <= j; mid++)
+ {
+ sc = mmx[mid][i].sc[BEGINL_NODE] + mmx[j][mid+1].sc[BEGINR_NODE];
+ if (sc > mmx[j][i].sc[BIFURC_NODE])
+ {
+ mmx[j][i].sc[BIFURC_NODE] = sc;
+ mmx[j][i].bifurc_mid = mid;
+ }
+ }
+
+ /* MATP: Score subsequence i,j, given that i,j are emitted by MATP
+ * Look at all possible connections i'j': i < i' < j, i < j' < j,
+ * i' <= j'+1
+ * Could be i < i' <= j' < j: the extra i' <= j'+1 condition
+ * allows for checking all the ways of generating i'..j'
+ * as entirely insertion, and we may just as well define a
+ * default...
+ */
+ for (j2 = j-1; j2 >= i && j - j2 - 1 <= MAXINSERT ; j2--)
+/* for (j2 = j-1; j2 >= i; j2--) */
+ {
+ for (i2 = i+1; i2 <= j2+1 && i2 - i - 1 <= MAXINSERT; i2++)
+/* for (i2 = i+1; i2 <= j2+1; i2++) */
+ {
+ if (mmx[j2][i2].sc[MATP_NODE] < mmx[j][i].sc[MATP_NODE] &&
+ mmx[j2][i2].sc[MATL_NODE] < mmx[j][i].sc[MATP_NODE] &&
+ mmx[j2][i2].sc[MATR_NODE] < mmx[j][i].sc[MATP_NODE] &&
+ mmx[j2][i2].sc[BIFURC_NODE] < mmx[j][i].sc[MATP_NODE])
+ continue;
+
+ frommatp_transtable(aseqsT, weights, nseq, i,j, i2, j2, insl_accum[i2],
+ insr_accum[j2], tmaster);
+
+ for (tonode = 0; tonode < 4; tonode++)
+ {
+ if (i2 > j2 && tonode != BIFURC_NODE) continue;
+ if (i2 == j2 && tonode == MATP_NODE) continue;
+
+ if (mmx[j2][i2].sc[tonode] < mmx[j][i].sc[MATP_NODE]) continue;
+
+ switch (tonode) {
+ case MATP_NODE: to_matp_transtable(tmaster, tcounts); break;
+ case MATL_NODE: to_matl_transtable(tmaster, tcounts); break;
+ case MATR_NODE: to_matr_transtable(tmaster, tcounts); break;
+ case BIFURC_NODE: to_bifurc_transtable(tmaster, tcounts); break;
+ default: Die("Gotcha. MATP, MATL, MATR, BIFURC nodes must be numbered 0..3");
+ }
+
+ copy_transtable(tmx, tcounts);
+ ProbifyTransitionMatrix(tmx, MATP_NODE, tonode, prior);
+
+ sc = dot_score((double *) tcounts, (double *) tmx, STATETYPES*STATETYPES)
+ + mmx[j2][i2].sc[tonode];
+
+ if (sc > mmx[j][i].sc[MATP_NODE])
+ {
+ mmx[j][i].sc[MATP_NODE] = sc;
+ mmx[j][i].matp_i2 = i2;
+ mmx[j][i].matp_j2 = j2;
+ mmx[j][i].matp_ftype = tonode;
+ }
+ }
+ if (gapcount[i2] <= gapthresh) break;
+ }
+ if (gapcount[j2] <= gapthresh) break;
+ }
+ mmx[j][i].sc[MATP_NODE] += pair_emissioncost(aseqsT[i], aseqsT[j], weights, nseq, prior);
+
+ /* MATR: i,j is accounted for by emitting j and connecting
+ * to some i,j2.
+ */
+ for (j2 = j-1; j2 >= i-1; j2--)
+ {
+ if (mmx[j2][i].sc[MATP_NODE] < mmx[j][i].sc[MATR_NODE] &&
+ mmx[j2][i].sc[MATL_NODE] < mmx[j][i].sc[MATR_NODE] &&
+ mmx[j2][i].sc[MATR_NODE] < mmx[j][i].sc[MATR_NODE] &&
+ mmx[j2][i].sc[BIFURC_NODE] < mmx[j][i].sc[MATR_NODE])
+ continue;
+ frommatr_transtable(aseqsT, weights, nseq, i, j, j2, insr_accum[j2], tmaster);
+
+ for (tonode = 0; tonode < 4; tonode++)
+ {
+ if (i > j2 && tonode != BIFURC_NODE) continue;
+ if (i == j2 && tonode == MATP_NODE) continue;
+
+ if (mmx[j2][i].sc[tonode] < mmx[j][i].sc[MATR_NODE]) continue;
+
+ switch (tonode) {
+ case MATP_NODE: to_matp_transtable(tmaster, tcounts); break;
+ case MATL_NODE: to_matl_transtable(tmaster, tcounts); break;
+ case MATR_NODE: to_matr_transtable(tmaster, tcounts); break;
+ case BIFURC_NODE: to_bifurc_transtable(tmaster, tcounts); break;
+ default: Die("Gotcha. MATP, MATL, MATR, BIFURC nodes must be numbered 0..3");
+ }
+
+ copy_transtable(tmx, tcounts);
+ ProbifyTransitionMatrix(tmx, MATR_NODE, tonode, prior);
+
+ sc = dot_score((double *) tcounts, (double *) tmx, STATETYPES*STATETYPES)
+ + mmx[j2][i].sc[tonode];
+ if (sc > mmx[j][i].sc[MATR_NODE])
+ {
+ mmx[j][i].sc[MATR_NODE] = sc;
+ mmx[j][i].matr_j2 = j2;
+ mmx[j][i].matr_ftype = tonode;
+ }
+ }
+ if (gapcount[j2] <= gapthresh) break;
+ }
+ mmx[j][i].sc[MATR_NODE] += mscore[j];
+
+
+ /* MATL: account for i,j by emitting i and connecting to some (i2,j)
+ */
+ for (i2 = i+1; i2 <= j+1; i2++)
+ {
+ if (mmx[j][i2].sc[MATP_NODE] < mmx[j][i].sc[MATL_NODE] &&
+ mmx[j][i2].sc[MATL_NODE] < mmx[j][i].sc[MATL_NODE] &&
+ mmx[j][i2].sc[MATR_NODE] < mmx[j][i].sc[MATL_NODE] &&
+ mmx[j][i2].sc[BIFURC_NODE] < mmx[j][i].sc[MATL_NODE])
+ continue;
+
+ frommatl_transtable(aseqsT, weights, nseq, i, j, i2, insl_accum[i2], tmaster);
+
+ for (tonode = 0; tonode < 4; tonode++)
+ {
+ if (i2 > j && tonode != BIFURC_NODE) continue;
+ if (i2 == j && tonode == MATP_NODE) continue;
+
+ if (mmx[j][i2].sc[tonode] < mmx[j][i].sc[MATL_NODE]) continue;
+
+ switch (tonode) {
+ case MATP_NODE: to_matp_transtable(tmaster, tcounts); break;
+ case MATL_NODE: to_matl_transtable(tmaster, tcounts); break;
+ case MATR_NODE: to_matr_transtable(tmaster, tcounts); break;
+ case BIFURC_NODE: to_bifurc_transtable(tmaster, tcounts); break;
+ default: Die("Gotcha. MATP, MATL, MATR, BIFURC nodes must be numbered 0..3");
+ }
+
+ copy_transtable(tmx, tcounts);
+ ProbifyTransitionMatrix(tmx, MATL_NODE, tonode, prior);
+
+ sc = dot_score((double *) tcounts, (double *) tmx, STATETYPES*STATETYPES) +
+ mmx[j][i2].sc[tonode];
+
+ if (sc > mmx[j][i].sc[MATL_NODE])
+ {
+ mmx[j][i].sc[MATL_NODE] = sc;
+ mmx[j][i].matl_i2 = i2;
+ mmx[j][i].matl_ftype = tonode;
+ }
+ }
+ if (gapcount[i2] <= gapthresh) break;
+ }
+ mmx[j][i].sc[MATL_NODE] += mscore[i];
+
+
+ /* bump insl_accum: add column i to horizontal accumulator as insertion.
+ */
+ for (i2 = i+1; i2 <= j+1; i2++)
+ for (idx = 0; idx < nseq; idx++)
+ if (aseqsT[i][idx] >= 0)
+ insl_accum[i2][idx]++;
+
+
+ /* BEGINR: has an INSL state, so it can connect to any
+ * (i2,j) *inclusive* of (i,j) -- that's why we just bumped
+ * the insl_accum insert counters
+ */
+ for (i2 = i; i2 <= j+1; i2++)
+ {
+ if (mmx[j][i2].sc[MATP_NODE] < mmx[j][i].sc[BEGINR_NODE] &&
+ mmx[j][i2].sc[MATL_NODE] < mmx[j][i].sc[BEGINR_NODE] &&
+ mmx[j][i2].sc[MATR_NODE] < mmx[j][i].sc[BEGINR_NODE] &&
+ mmx[j][i2].sc[BIFURC_NODE] < mmx[j][i].sc[BEGINR_NODE])
+ continue;
+
+ frombeginr_transtable(aseqsT, weights, nseq, j, i2, insl_accum[i2], tmaster);
+
+ for (tonode = 0; tonode < 4; tonode++)
+ {
+ if (i2 > j && tonode != BIFURC_NODE) continue;
+ if (i2 == j && tonode == MATP_NODE) continue;
+
+ if (mmx[j][i2].sc[tonode] < mmx[j][i].sc[BEGINR_NODE]) continue;
+
+ switch (tonode) {
+ case MATP_NODE: to_matp_transtable(tmaster, tcounts); break;
+ case MATL_NODE: to_matl_transtable(tmaster, tcounts); break;
+ case MATR_NODE: to_matr_transtable(tmaster, tcounts); break;
+ case BIFURC_NODE: to_bifurc_transtable(tmaster, tcounts); break;
+ default: Die("Gotcha. MATP, MATL, MATR, BIFURC nodes must be numbered 0..3");
+ }
+
+ copy_transtable(tmx, tcounts);
+ ProbifyTransitionMatrix(tmx, BEGINR_NODE, tonode, prior);
+
+ sc = dot_score((double *) tcounts, (double *) tmx, STATETYPES*STATETYPES)
+ + mmx[j][i2].sc[tonode];
+
+ if (sc > mmx[j][i].sc[BEGINR_NODE])
+ {
+ mmx[j][i].sc[BEGINR_NODE] = sc;
+ mmx[j][i].begr_i2 = i2;
+ mmx[j][i].begr_ftype = tonode;
+ }
+ }
+ if (gapcount[i2] <= gapthresh) break;
+ }
+
+
+ /* BEGINL: has no inserts, so must connect to (i,j)
+ */
+ frombeginl_transtable(aseqsT, weights, nseq, i, j, tmaster);
+ for (tonode = 0; tonode < 4; tonode++)
+ {
+ if (mmx[j][i].sc[MATP_NODE] < mmx[j][i].sc[BEGINL_NODE] &&
+ mmx[j][i].sc[MATL_NODE] < mmx[j][i].sc[BEGINL_NODE] &&
+ mmx[j][i].sc[MATR_NODE] < mmx[j][i].sc[BEGINL_NODE] &&
+ mmx[j][i].sc[BIFURC_NODE] < mmx[j][i].sc[BEGINL_NODE])
+ continue;
+
+ switch (tonode) {
+ case MATP_NODE: to_matp_transtable(tmaster, tcounts); break;
+ case MATL_NODE: to_matl_transtable(tmaster, tcounts); break;
+ case MATR_NODE: to_matr_transtable(tmaster, tcounts); break;
+ case BIFURC_NODE: to_bifurc_transtable(tmaster, tcounts); break;
+ default: Die("Gotcha. MATP, MATL, MATR, BIFURC nodes must be numbered 0..3");
+ }
+
+ copy_transtable(tmx, tcounts);
+ ProbifyTransitionMatrix(tmx, BEGINL_NODE, tonode, prior);
+
+ sc = dot_score((double *) tcounts, (double *) tmx, STATETYPES*STATETYPES)
+ + mmx[j][i].sc[tonode];
+
+ if (sc > mmx[j][i].sc[BEGINL_NODE])
+ {
+ mmx[j][i].sc[BEGINL_NODE] = sc;
+ mmx[j][i].begl_ftype = tonode;
+ }
+ }
+
+
+ } /* end loop over columns i */
+
+ /* bump insr_accum: add row j to vertical accumulator as insertion.
+ */
+ for (j2 = 0; j2 < j; j2++)
+ for (idx = 0; idx < nseq; idx++)
+ if (aseqsT[j][idx] >= 0)
+ insr_accum[j2][idx]++;
+
+ } /* end loop over rows j */
+
+
+ /* Termination. ROOT can connect anywhere.
+ * We hack here: ROOT alignment info is stored in the cell mmx[alen][0]
+ * (otherwise, the i==0 column is unused), and score/traceback info is kept as if
+ * for MATP_NODE (because ROOT and MATP have similar traceback requirements,
+ * since they permit inserts on both sides.)
+ *
+ */
+ for (j2 = alen; j2 >= 0; j2--)
+ {
+ for (i2 = 1; i2 <= j2+1; i2++)
+ {
+ if (mmx[j2][i2].sc[MATP_NODE] < mmx[alen][0].sc[MATP_NODE] &&
+ mmx[j2][i2].sc[MATL_NODE] < mmx[alen][0].sc[MATP_NODE] &&
+ mmx[j2][i2].sc[MATR_NODE] < mmx[alen][0].sc[MATP_NODE] &&
+ mmx[j2][i2].sc[BIFURC_NODE] < mmx[alen][0].sc[MATP_NODE])
+ continue;
+
+ fromroot_transtable(aseqsT, weights, nseq, i2, j2, insl_accum[i2],
+ insr_accum[j2], tmaster);
+
+ for (tonode = 0; tonode < 4; tonode++)
+ {
+ if (i2 > j2 && tonode != BIFURC_NODE) continue;
+ if (i2 == j2 && tonode == MATP_NODE) continue;
+ if (mmx[j2][i2].sc[tonode] < mmx[alen][0].sc[MATP_NODE]) continue;
+
+ switch (tonode) {
+ case MATP_NODE: to_matp_transtable(tmaster, tcounts); break;
+ case MATL_NODE: to_matl_transtable(tmaster, tcounts); break;
+ case MATR_NODE: to_matr_transtable(tmaster, tcounts); break;
+ case BIFURC_NODE: to_bifurc_transtable(tmaster, tcounts); break;
+ default: Die("Gotcha. MATP, MATL, MATR, BIFURC nodes must be numbered 0..3");
+ }
+
+ copy_transtable(tmx, tcounts);
+ ProbifyTransitionMatrix(tmx, ROOT_NODE, tonode, prior);
+
+ sc = dot_score((double *) tcounts, (double *) tmx, STATETYPES*STATETYPES)
+ + mmx[j2][i2].sc[tonode];
+ if (sc > mmx[alen][0].sc[MATP_NODE])
+ {
+ mmx[alen][0].sc[MATP_NODE] = sc;
+ mmx[alen][0].matp_i2 = i2;
+ mmx[alen][0].matp_j2 = j2;
+ mmx[alen][0].matp_ftype = tonode;
+ }
+ }
+ if (gapcount[i2] <= gapthresh) break;
+ }
+ if (gapcount[j2] <= gapthresh) break;
+ }
+
+ Free2DArray(insr_accum, alen+1);
+ Free2DArray(insl_accum, alen+2);
+}
+
+
+
+/* Function: trace_maxmx()
+ *
+ * Purpose: Traceback of the filled matrix. Constructs a consensus
+ * tree structure. The trace_s structures are only partially
+ * used: emitl and emitr hold 0..alen-1 column coords of emitted
+ * columns (even if not responsible for the emission); nodeidx
+ * is unused; type holds a *node* type, not a state type.
+ *
+ * Note that the alignment of ROOT_NODE has been stored in
+ * mmx[alen][0] like a MATP_NODE, due to some convenient
+ * hacking by the recursion routine.
+ *
+ * The mmx[] scoring matrix traceback pointers are 1..alen coords.
+ * They have to be converted to 0..alen-1 for the traceback tree.
+ *
+ * Args: mmx - filled scoring matrix: mmx[j][i], lower diagonal
+ * alen - width of alignment
+ * ret_mtr - RETURN: master (consensus) traceback
+ *
+ * Return: (void). ret_mtr must be free'd by the caller.
+ */
+static void
+trace_maxmx(struct maxmx_s **mmx,
+ int alen,
+ struct trace_s **ret_mtr)
+{
+ struct trace_s *mtr; /* master (consensus) traceback */
+ struct trace_s *curr_mtr; /* current node on traceback tree */
+ struct tracestack_s *dolist; /* pushdown stack for traversing mtr */
+ int i,j; /* coords to connect to, next trace ssegment */
+ int nxti, nxtj;
+
+ InitTrace(&mtr, NULL);
+ dolist = InitTracestack();
+
+ /* Initialization. First attach a root node. Then, trace first segment,
+ * attach it, and start the tracestack to-do list with it.
+ */
+ curr_mtr = AttachTrace(mtr, NULL, 0, alen-1, 0, ROOT_NODE);
+ PushTracestack(dolist, AttachTrace(curr_mtr, NULL, mmx[alen][0].matp_i2 -1,
+ mmx[alen][0].matp_j2 -1,
+ 0, mmx[alen][0].matp_ftype));
+
+
+ while ((curr_mtr = PopTracestack(dolist)) != NULL)
+ {
+ i = curr_mtr->emitl + 1; /* i,j are 1..alen */
+ j = curr_mtr->emitr + 1;
+
+ /* avoid dummy END node on trace tree leaves, and
+ * avoid tracing back from off-diagonal */
+ if (curr_mtr->nxtl == NULL || i > j)
+ continue;
+
+ switch (curr_mtr->type) {
+ case MATP_NODE:
+ nxti = mmx[j][i].matp_i2 - 1;
+ nxtj = mmx[j][i].matp_j2 - 1;
+ if (nxti <= nxtj)
+ PushTracestack(dolist, AttachTrace(curr_mtr, NULL, nxti, nxtj, 0, mmx[j][i].matp_ftype));
+ else
+ { curr_mtr->nxtl->emitl = nxti; curr_mtr->nxtl->emitr = nxtj; }
+ break;
+
+ case MATL_NODE:
+ nxti = mmx[j][i].matl_i2 - 1;
+ nxtj = j-1;
+ if (nxti <= nxtj)
+ PushTracestack(dolist, AttachTrace(curr_mtr, NULL, nxti, nxtj, 0, mmx[j][i].matl_ftype));
+ else
+ { curr_mtr->nxtl->emitl = nxti; curr_mtr->nxtl->emitr = nxtj; }
+ break;
+
+ case MATR_NODE:
+ nxti = i-1;
+ nxtj = mmx[j][i].matr_j2 -1;
+ if (nxti <= nxtj)
+ PushTracestack(dolist, AttachTrace(curr_mtr, NULL, nxti, nxtj, 0, mmx[j][i].matr_ftype));
+ else
+ { curr_mtr->nxtl->emitl = nxti; curr_mtr->nxtl->emitr = nxtj; }
+ break;
+
+ case BIFURC_NODE: /* BIFURC must attach right side first */
+ PushTracestack(dolist, AttachTrace(curr_mtr, NULL, mmx[j][i].bifurc_mid, j -1,
+ 0, BEGINR_NODE));
+ PushTracestack(dolist, AttachTrace(curr_mtr, NULL, i -1, mmx[j][i].bifurc_mid -1,
+ 0, BEGINL_NODE));
+ break;
+
+ case BEGINL_NODE:
+ nxti = i-1;
+ nxtj = j-1;
+ if (nxti <= nxtj)
+ PushTracestack(dolist, AttachTrace(curr_mtr, NULL, nxti, nxtj, 0, mmx[j][i].begl_ftype));
+ else
+ { curr_mtr->nxtl->emitl = nxti; curr_mtr->nxtl->emitr = nxtj; }
+ break;
+
+ case BEGINR_NODE:
+ nxti = mmx[j][i].begr_i2 - 1;
+ nxtj = j-1;
+ if (nxti <= nxtj)
+ PushTracestack(dolist, AttachTrace(curr_mtr, NULL, nxti, nxtj, 0, mmx[j][i].begr_ftype));
+ else
+ { curr_mtr->nxtl->emitl = nxti; curr_mtr->nxtl->emitr = nxtj; }
+ break;
+
+ default: Die("Invalid node type %d", curr_mtr->type);
+ }
+ }
+
+ FreeTracestack(dolist);
+ *ret_mtr = mtr;
+}
+
+
+/* Function: transpose_alignment()
+ *
+ * Purpose: Alignments are indexed [seqidx][position]; it turns out to
+ * be more convenient here to index them as [position][seqidx],
+ * because of memory access patterns. This transpose also
+ * lets us switch to a 1..alen indexing scheme for the alignment
+ * columns, from 0..alen-1; this is important for implementing
+ * boundary conditions properly in the scoring matrix. And
+ * finally, we store the symbols as indices to save time in
+ * further lookups: -1 for gaps, 0..3 for ACGU (or 0..19 for aminos)
+ *
+ * Args: aseqs - flushed sequence alignment, each seq indexed 0..alen-1
+ * alen - number of columns in alignment
+ * nseq - number of sequences
+ * prior - contains alphabet info
+ * ret_aseqsT - RETURN: transposed alignment, [1..alen][0..nseq-1]
+ *
+ * Return: (void). ret_aseqsT is malloc'ed here and must be free'd
+ * by caller.
+ */
+static void
+transpose_alignment(char **aseqs,
+ int alen,
+ int nseq,
+ int ***ret_aseqsT)
+{
+ int **aseqsT;
+ int acol;
+ int seqidx;
+
+ if ((aseqsT = (int **) malloc ((alen+2) * sizeof(int *))) == NULL)
+ Die("malloc failed");
+ for (acol = 0; acol <= alen+1; acol++)
+ if ((aseqsT[acol] = (int *) malloc (nseq * sizeof(int))) == NULL)
+ Die("malloc failed");
+
+ /* "guard" columns 0 and alen+1 */
+ for (seqidx = 0; seqidx < nseq; seqidx++)
+ {
+ aseqsT[0][seqidx] = -1;
+ aseqsT[alen+1][seqidx] = -1;
+ }
+
+ /* gaps are assigned value -1 in aseqsT */
+ for (seqidx = 0; seqidx < nseq; seqidx++)
+ for (acol = 0; acol < alen; acol++)
+ aseqsT[acol+1][seqidx] = isgap(aseqs[seqidx][acol]) ?
+ -1 : SymbolIndex(aseqs[seqidx][acol]);
+
+ *ret_aseqsT = aseqsT;
+}
+
+
+
+
+
+/* Function: singlet_emissions()
+ *
+ * Purpose: Count emission statistics for all the columns of
+ * a multiple alignment; calculate and return an
+ * array of emission scores for each column emitted
+ * by MATL. (The caller can assume that MATR is scored
+ * the same way.)
+ *
+ * Args: aseqsT - [1..alen][0..nseqs-1] transpose of sequence alignment
+ * weights - weights on sequences (usually just 1.0 for each)
+ * alen - number of columns in alignment
+ * nseq - number of sequences
+ * prior - prior probability distributions, and alphabet info
+ * ret_mscore - RETURN: array of singlet emission costs
+ * ret_gapcount - RETURN: weighted counts of gaps in each column
+ *
+ * Return: (void). ret_mscore is passed back; it is malloc'ed here
+ * and must be free'd by the caller.
+ */
+static void
+singlet_emissions(int **aseqsT,
+ float *weights,
+ int alen,
+ int nseq,
+ struct prior_s *prior,
+ int **ret_mscore,
+ double **ret_gapcount)
+{
+ double **emcounts;
+ double *gapcount;
+ int *mscore;
+ double emvec[ALPHASIZE];
+ int i;
+ int idx;
+ int sym;
+
+ /* Allocations
+ */
+ if ((emcounts = (double **) malloc ((alen+1) * sizeof(double *))) == NULL ||
+ (mscore = (int *) malloc ((alen+1) * sizeof(int))) == NULL ||
+ (gapcount = (double *) malloc ((alen+2) * sizeof(double))) == NULL)
+ Die("malloc failed");
+ for (i = 0; i <= alen; i++)
+ if ((emcounts[i] = (double *) malloc (ALPHASIZE * sizeof(double))) == NULL)
+ Die("malloc failed");
+
+ /* Count symbol occurrences in each column
+ */
+ for (i = 1; i <= alen; i++)
+ {
+ gapcount[i] = 0.0;
+ for (sym = 0; sym < ALPHASIZE; sym++)
+ emcounts[i][sym] = 0.0;
+
+ for (idx = 0; idx < nseq; idx++)
+ {
+ if (aseqsT[i][idx] >= 0)
+ emcounts[i][aseqsT[i][idx]] += weights[idx];
+ else
+ gapcount[i] += weights[idx];
+ }
+ }
+ gapcount[0] = 0.0;
+ gapcount[alen+1] = 0.0;
+
+ /* For each column, create an emission probability vector,
+ * and calculate score using emcounts.
+ */
+ for (i = 1; i <= alen; i++)
+ {
+ for (sym = 0; sym < ALPHASIZE; sym++)
+ emvec[sym] = emcounts[i][sym];
+
+ ProbifySingletEmission(emvec, uMATL_ST, prior);
+
+ mscore[i] = dot_score(emcounts[i], emvec, ALPHASIZE);
+ mscore[i] += (nseq - gapcount[i]) * (int) (INTPRECISION * log((float) ALPHASIZE));
+ }
+
+ Free2DArray(emcounts, alen+1);
+ *ret_gapcount = gapcount;
+ *ret_mscore = mscore;
+}
+
+
+
+
+/* Function: pair_emissioncost()
+ *
+ * Purpose: Count emission statistics for a given MATP_NODE-assigned
+ * i,j, and assign a cost.
+ *
+ * Args: coli - ptr to column i from aseqsT transposed alignment, [0..nseq-1]
+ * colj - ptr to column j from aseqsT transposed alignment, [0..nseq-1]
+ * weights - weights on sequences (usually just 1.0 for each)
+ * nseq - number of sequences
+ * prior - prior probability distributions
+ *
+ * Return: The cost of emitting the (i,j) column pair (integer).
+ */
+static int
+pair_emissioncost(int *coli,
+ int *colj,
+ float *weights,
+ int nseq,
+ struct prior_s *prior)
+{
+ double matp_count[ALPHASIZE][ALPHASIZE];
+ double matl_count[ALPHASIZE];
+ double matr_count[ALPHASIZE];
+ double matp_emit[ALPHASIZE][ALPHASIZE];
+ double matl_emit[ALPHASIZE];
+ double matr_emit[ALPHASIZE];
+ int sc;
+ int symi, symj;
+ int idx;
+
+ /* Zero the counter arrays
+ */
+ for (symi = 0; symi < ALPHASIZE; symi++)
+ {
+ matr_count[symi] = 0.0;
+ matl_count[symi] = 0.0;
+ for (symj = 0; symj < ALPHASIZE; symj++)
+ matp_count[symi][symj] = 0.0;
+ }
+
+ /* Count pairs, singlets
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ if (coli[idx] == -1)
+ {
+ if (colj[idx] == -1) continue;
+ else matl_count[colj[idx]] += weights[idx];
+ }
+ else if (colj[idx] == -1) matr_count[coli[idx]] += weights[idx];
+ else matp_count[coli[idx]][colj[idx]] += weights[idx];
+ }
+
+ /* Create probability matrices
+ */
+ copy_singlet(matl_emit, matl_count);
+ copy_singlet(matr_emit, matr_count);
+ copy_pairwise(matp_emit, matp_count);
+ ProbifySingletEmission(matl_emit, uMATL_ST, prior);
+ ProbifySingletEmission(matr_emit, uMATR_ST, prior);
+ ProbifyPairEmission(matp_emit, prior);
+
+ /* convert probs to log odds
+ */
+ for (symi = 0; symi < ALPHASIZE; symi++)
+ {
+ matl_emit[symi] *= (double) ALPHASIZE;
+ matr_emit[symi] *= (double) ALPHASIZE;
+ for (symj = 0; symj < ALPHASIZE; symj ++)
+ matp_emit[symi][symj] *= (double) (ALPHASIZE*ALPHASIZE);
+ }
+
+ /* Score is the sum of dot products of counts and probability matrices
+ */
+ sc = dot_score((double *) matl_count, (double *) matl_emit, ALPHASIZE) +
+ dot_score((double *) matr_count, (double *) matr_emit, ALPHASIZE) +
+ dot_score((double *) matp_count, (double *) matp_emit, ALPHASIZE*ALPHASIZE);
+ return sc;
+}
+
+
+
+
+
+/* Function: frommatp_transtable()
+ *
+ * Purpose: Given an starting cell i,j and an ending cell
+ * i',j' (i < i' < j' < j), calculate the
+ * 6x6 transition table between these pairs,
+ * assuming both (i,j) and (i',j') are assigned
+ * to MATP. Transitions to other types of nodes
+ * at i',j' (MATR, MATL, BIFURC) are easily derived from this one.
+ *
+ * Args: aseqsT - transpose of alignment, [1..alen][0..nseq-1]
+ * weights - weights on sequences (usually just 1.0 for each)
+ * nseq - number of sequences
+ * i,j - i,j
+ * i2,j2 - i',j'
+ * accum_insl - (0..nseq-1) array of number of inserted symbols
+ * between i,i' for each sequence
+ * accum_insr - (0..nseq-1) array of number of inserted symbols
+ * between j',j for each sequence
+ * trans[][] - filled in: state transition matrix (counts)
+ *
+ * Return: (void)
+ * trans[][] is filled in.
+ */
+static void
+frommatp_transtable(int **aseqsT,
+ float *weights,
+ int nseq,
+ int i,
+ int j,
+ int i2,
+ int j2,
+ int *accum_insl,
+ int *accum_insr,
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy, ty; /* from state index, to state index */
+ int idx; /* counter for sequences */
+
+ /* Zero the counter array
+ */
+ for (fy = 0; fy < STATETYPES; fy++)
+ for (ty = 0; ty < STATETYPES; ty++)
+ trans[fy][ty] = 0.0;
+
+ /* For each sequence:
+ * assign fy, based on symbols vs. gaps at i,j
+ * assign ty, based on symbols vs. gaps at i',j'
+ * use accum_insr and accum_insl and bump counters appropriately.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ fy = assign_cell(i,j,aseqsT[i][idx], aseqsT[j][idx]);
+ ty = assign_cell(i2,j2,aseqsT[i2][idx], aseqsT[j2][idx]);
+
+ if (accum_insl[idx] == 0 && accum_insr[idx] == 0)
+ {
+ trans[fy][ty] += weights[idx];
+ }
+ else if (accum_insl[idx] > 0)
+ {
+ trans[fy][INSL_ST] += weights[idx];
+ trans[INSL_ST][INSL_ST] += (accum_insl[idx]-1) * weights[idx];
+ if (accum_insr[idx] > 0)
+ {
+ trans[INSL_ST][INSR_ST] += weights[idx];
+ trans[INSR_ST][INSR_ST] += (accum_insr[idx]-1) * weights[idx];
+ trans[INSR_ST][ty] += weights[idx];
+ }
+ else
+ {
+ trans[INSL_ST][ty] += weights[idx];
+ }
+ }
+ else if (accum_insr[idx] > 0)
+ {
+ trans[fy][INSR_ST] += weights[idx];
+ trans[INSR_ST][INSR_ST] += (accum_insr[idx]-1) * weights[idx];
+ trans[INSR_ST][ty] += weights[idx];
+ }
+ } /* end loop over all sequences */
+}
+
+
+
+
+/* Function: frommatl_transtable()
+ *
+ * Purpose: Given an starting cell i,j assigned to MATL_NODE
+ * and an ending cell i',j (i < i' < j), calculate the
+ * 6x6 transition table between these pairs,
+ * assuming (i',j) is assigned to MATP.
+ * Transitions to other types of nodes
+ * at i',j (MATR, MATL, BIFURC) are easily derived from this one.
+ *
+ * Args: aseqsT - transpose of alignment, [1..alen][0..nseq-1]
+ * weights - weights on sequences (usually just 1.0 for each)
+ * nseq - number of sequences
+ * i,j - i,j
+ * i2 - i'
+ * accum_insl - (0..nseq-1) array of number of inserted symbols
+ * between i,i' for each sequence
+ * trans[][] - filled in: state transition matrix (counts)
+ *
+ * Return: (void)
+ * trans[][] is filled in.
+ */
+static void
+frommatl_transtable(int **aseqsT,
+ float *weights,
+ int nseq,
+ int i,
+ int j,
+ int i2,
+ int *accum_insl,
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy, ty; /* from state index, to state index */
+ int idx; /* counter for sequences */
+
+ /* Zero the counter array
+ */
+ for (fy = 0; fy < STATETYPES; fy++)
+ for (ty = 0; ty < STATETYPES; ty++)
+ trans[fy][ty] = 0.0;
+
+
+ /* For each sequence:
+ * assign fy, based on symbols vs. gaps at i
+ * assign ty, based on symbols vs. gaps at i',j
+ * use accum_insl and bump counters appropriately.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ fy = (aseqsT[i][idx] == -1) ? DEL_ST : MATL_ST;
+ ty = assign_cell(i2, j, aseqsT[i2][idx], aseqsT[j][idx]);
+
+ if (accum_insl[idx] == 0)
+ {
+ trans[fy][ty] += weights[idx];
+ }
+ else
+ {
+ trans[fy][INSL_ST] += weights[idx];
+ trans[INSL_ST][INSL_ST] += (accum_insl[idx]-1) * weights[idx];
+ trans[INSL_ST][ty] += weights[idx];
+ }
+ } /* end loop over all sequences */
+}
+
+
+
+
+/* Function: frommatr_transtable()
+ *
+ * Purpose: Given an starting cell i,j assigned to MATR_NODE
+ * and an ending cell i,j' (i < j' < j), calculate the
+ * 6x6 transition table between these pairs,
+ * assuming (i,j') is assigned to MATP.
+ * Transitions to other types of nodes
+ * at i,j' (MATR, MATL, BIFURC) are easily derived from this one.
+ *
+ * Args: aseqsT - transpose of alignment, [1..alen][0..nseq-1]
+ * weights - weights on sequences (usually just 1.0 for each)
+ * nseq - number of sequences
+ * i,j - i,j
+ * j2 - j'
+ * accum_insr - (0..nseq-1) array of number of inserted symbols
+ * between j',j for each sequence
+ * trans[][] - filled in: state transition matrix (counts)
+ *
+ * Return: (void)
+ * trans[][] is filled in.
+ */
+static void
+frommatr_transtable(int **aseqsT,
+ float *weights,
+ int nseq,
+ int i,
+ int j,
+ int j2,
+ int *accum_insr,
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy, ty; /* from state index, to state index */
+ int idx; /* counter for sequences */
+
+ /* Zero the counter array
+ */
+ for (fy = 0; fy < STATETYPES; fy++)
+ for (ty = 0; ty < STATETYPES; ty++)
+ trans[fy][ty] = 0.0;
+
+ /* For each sequence:
+ * assign fy, based on symbols vs. gaps at j
+ * assign ty, based on symbols vs. gaps at i,j'
+ * use accum_insr and bump counters appropriately.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ fy = (aseqsT[j][idx] == -1) ? DEL_ST : MATR_ST;
+ ty = assign_cell(i, j2, aseqsT[i][idx], aseqsT[j2][idx]);
+
+ if (accum_insr[idx] == 0)
+ {
+ trans[fy][ty] += weights[idx];
+ }
+ else
+ {
+ trans[fy][INSR_ST] += weights[idx];
+ trans[INSR_ST][INSR_ST] += (accum_insr[idx]-1) * weights[idx];
+ trans[INSR_ST][ty] += weights[idx];
+ }
+ } /* end loop over all sequences */
+}
+
+
+
+
+/* Function: frombeginr_transtable()
+ *
+ * Purpose: Given an starting cell i,j assigned to BEGINR_NODE
+ * and an ending cell i',j (i < i' < j), calculate the
+ * 6x6 transition table between these pairs,
+ * assuming (i',j) is assigned to MATP.
+ * Transitions to other types of nodes
+ * at i',j (MATR, MATL, BIFURC) are easily derived from this one.
+ *
+ * Args: aseqsT - transpose of alignment, [1..alen][0..nseq-1]
+ * weights - weights on sequences (usually just 1.0 for each)
+ * nseq - number of sequences
+ * i,j - i,j
+ * i2 - i'
+ * accum_insl - (0..nseq-1) array of number of inserted symbols
+ * between j',j for each sequence
+ * trans[][] - filled in: state transition matrix (counts)
+ *
+ * Return: (void)
+ * trans[][] is filled in.
+ */
+static void
+frombeginr_transtable(int **aseqsT,
+ float *weights,
+ int nseq,
+ int j,
+ int i2,
+ int *accum_insl,
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy, ty; /* from state index, to state index */
+ int idx; /* counter for sequences */
+
+ /* Zero the counter array
+ */
+ for (fy = 0; fy < STATETYPES; fy++)
+ for (ty = 0; ty < STATETYPES; ty++)
+ trans[fy][ty] = 0.0;
+
+ /* For each sequence:
+ * assign ty, based on symbols vs. gaps at i',j
+ * use accum_insr and bump counters appropriately.
+ */
+ fy = BEGIN_ST;
+ for (idx = 0; idx < nseq; idx++)
+ {
+ ty = assign_cell(i2, j, aseqsT[i2][idx], aseqsT[j][idx]);
+
+ if (accum_insl[idx] == 0)
+ {
+ trans[fy][ty] += weights[idx];
+ }
+ else
+ {
+ trans[fy][INSL_ST] += weights[idx];
+ trans[INSL_ST][INSL_ST] += (accum_insl[idx]-1) * weights[idx];
+ trans[INSL_ST][ty] += weights[idx];
+ }
+ } /* end loop over all sequences */
+}
+
+
+/* Function: frombeginl_transtable()
+ *
+ * Purpose: Given an starting cell i,j assigned to BEGINR_NODE (which must
+ * connect to i,j itself),
+ * calculate the 6x6 transition table between the BEGINR
+ * and the other states in the cell, assuming i,j is
+ * assigned to MATP.
+ * Transitions to other types of nodes
+ * at i,j (MATR, MATL, BIFURC) are easily derived from this one.
+ *
+ * Args: aseqsT - transpose of alignment, [1..alen][0..nseq-1]
+ * weights - weights on sequences (usually just 1.0 for each)
+ * nseq - number of sequences
+ * i,j - i,j
+ * trans[][] - filled in: state transition matrix (counts)
+ *
+ * Return: (void)
+ * trans[][] is filled in.
+ */
+static void
+frombeginl_transtable(int **aseqsT,
+ float *weights,
+ int nseq,
+ int i,
+ int j,
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy, ty; /* from state index, to state index */
+ int idx; /* counter for sequences */
+
+ /* Zero the counter array
+ */
+ for (fy = 0; fy < STATETYPES; fy++)
+ for (ty = 0; ty < STATETYPES; ty++)
+ trans[fy][ty] = 0.0;
+
+ /* For each sequence:
+ * assign ty, based on symbols vs. gaps at i',j
+ * use accum_insr and bump counters appropriately.
+ */
+ fy = BEGIN_ST;
+ for (idx = 0; idx < nseq; idx++)
+ {
+ ty = assign_cell(i, j, aseqsT[i][idx], aseqsT[j][idx]);
+ trans[fy][ty] += weights[idx];
+ }
+}
+
+
+
+/* Function: fromroot_transtable()
+ *
+ * Purpose: Given an ending cell i2,j2, calculate the
+ * 6x6 transition table between 1,alen,ROOT and this pair,
+ * assuming (i',j') is assigned
+ * to MATP. Transitions to other types of nodes
+ * at i',j' (MATR, MATL, BIFURC) are easily derived from this one.
+ *
+ * Args: aseqsT - transpose of alignment, [1..alen][0..nseq-1]
+ * weights - weights on sequences (usually just 1.0 for each)
+ * nseq - number of sequences
+ * i2,j2 - i',j'
+ * accum_insl - (0..nseq-1) array of number of inserted symbols
+ * between i,i' for each sequence
+ * accum_insr - (0..nseq-1) array of number of inserted symbols
+ * between j',j for each sequence
+ * trans[][] - filled in: state transition matrix (counts)
+ *
+ * Return: (void)
+ * trans[][] is filled in.
+ */
+static void
+fromroot_transtable(int **aseqsT,
+ float *weights,
+ int nseq,
+ int i2,
+ int j2,
+ int *accum_insl,
+ int *accum_insr,
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy, ty; /* from state index, to state index */
+ int idx; /* counter for sequences */
+
+ /* Zero the counter array
+ */
+ for (fy = 0; fy < STATETYPES; fy++)
+ for (ty = 0; ty < STATETYPES; ty++)
+ trans[fy][ty] = 0.0;
+
+ /* For each sequence:
+ * assign ty, based on symbols vs. gaps at i',j'
+ * use accum_insr and accum_insl and bump counters appropriately.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ {
+ ty = assign_cell(i2,j2,aseqsT[i2][idx], aseqsT[j2][idx]);
+
+ if (accum_insl[idx] == 0 && accum_insr[idx] == 0)
+ {
+ trans[BEGIN_ST][ty] += weights[idx];
+ }
+ else if (accum_insl[idx] > 0)
+ {
+ trans[BEGIN_ST][INSL_ST] += weights[idx];
+ trans[INSL_ST][INSL_ST] += (accum_insl[idx]-1) * weights[idx];
+ if (accum_insr[idx] > 0)
+ {
+ trans[INSL_ST][INSR_ST] += weights[idx];
+ trans[INSR_ST][INSR_ST] += (accum_insr[idx]-1) * weights[idx];
+ trans[INSR_ST][ty] += weights[idx];
+ }
+ else
+ {
+ trans[INSL_ST][ty] += weights[idx];
+ }
+ }
+ else if (accum_insr[idx] > 0)
+ {
+ trans[BEGIN_ST][INSR_ST] += weights[idx];
+ trans[INSR_ST][INSR_ST] += (accum_insr[idx]-1) * weights[idx];
+ trans[INSR_ST][ty] += weights[idx];
+ }
+ } /* end loop over all sequences */
+}
+
+
+
+/* Function: assign_cell()
+ *
+ * Purpose: Given that we assign a cell i,j to MATP for the
+ * whole alignment, return the actual assignment
+ * for the given sequence seq. This will be MATP
+ * if seq has symbols in both columns i,j;
+ * MATL if j is a gap; MATR if i is a gap;
+ * DEL if both i,j are gaps.
+ *
+ * If i == j, assign_cell returns MATP or DEL even though
+ * MATP is not a valid assignment; the to_matr or to_matl functions
+ * straighten this out later.
+ *
+ * Args: i,j : coordinates (columns in alignment)
+ * symi: symbol in position i
+ * symj: symbol in position j
+ *
+ * Return: DEL_ST, MATP_ST, MATR_ST, or MATL_ST
+ */
+static int
+assign_cell(int i, int j, int symi, int symj)
+{
+ if (i > j) return END_ST;
+ else if (symi >= 0)
+ {
+ if (symj >= 0) return MATP_ST;
+ else return MATL_ST;
+ }
+ else if (symj >= 0) return MATR_ST;
+ else return DEL_ST;
+}
+
+
+
+
+/* Function: to_matp_transtable()
+ *
+ * Purpose: Given a master state transition tables containing
+ * counts, create a table specific for transitions
+ * to an (i',j') assigned to MATP_NODE.
+ *
+ * Args: master_table[][] - the master table containing counts
+ * trans[][] - the new table, returned containing counts
+ *
+ * Return: (void)
+ * trans[][] is filled.
+ */
+static void
+to_matp_transtable(double master_table[STATETYPES][STATETYPES],
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy,ty; /* indices for from state, to state */
+
+ /* Just copy the table.
+ */
+ for (fy = 0; fy < STATETYPES; fy++)
+ for (ty = 0; ty < STATETYPES; ty++)
+ trans[fy][ty] = master_table[fy][ty];
+}
+
+
+/* Function: to_matr_transtable()
+ *
+ * Purpose: Given a master state transition tables containing
+ * counts, create a table specific for transitions
+ * to an (i',j') assigned to MATR_NODE.
+ *
+ * Args: master_table[][] - the master table containing counts
+ * trans[][] - the new table, returned containing counts
+ *
+ * Return: (void)
+ * trans[][] is filled.
+ */
+static void
+to_matr_transtable(double master_table[STATETYPES][STATETYPES],
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy; /* indices for from state, to state */
+
+ for (fy = 0; fy < STATETYPES; fy++)
+ {
+ trans[fy][DEL_ST] = master_table[fy][DEL_ST] + master_table[fy][MATL_ST];
+ trans[fy][MATP_ST] = 0.0;
+ trans[fy][MATL_ST] = 0.0;
+ trans[fy][MATR_ST] = master_table[fy][MATR_ST] + master_table[fy][MATP_ST];
+ trans[fy][INSL_ST] = master_table[fy][INSL_ST];
+ trans[fy][INSR_ST] = master_table[fy][INSR_ST];
+ }
+}
+
+
+/* Function: to_matl_transtable()
+ *
+ * Purpose: Given a master state transition tables containing
+ * counts, create a table specific for transitions
+ * to an (i',j') assigned to MATL_NODE.
+ *
+ * Args: master_table[][] - the master table containing counts
+ * trans[][] - the new table, returned containing counts
+ *
+ * Return: (void)
+ * trans[][] is filled.
+ */
+static void
+to_matl_transtable(double master_table[STATETYPES][STATETYPES],
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy; /* indices for from state, to state */
+
+ for (fy = 0; fy < STATETYPES; fy++)
+ {
+ trans[fy][DEL_ST] = master_table[fy][DEL_ST] + master_table[fy][MATR_ST];
+ trans[fy][MATP_ST] = 0.0;
+ trans[fy][MATL_ST] = master_table[fy][MATL_ST] + master_table[fy][MATP_ST];
+ trans[fy][MATR_ST] = 0.0;
+ trans[fy][INSL_ST] = master_table[fy][INSL_ST];
+ trans[fy][INSR_ST] = master_table[fy][INSR_ST];
+ }
+}
+
+
+/* Function: to_bifurc_transtable()
+ *
+ * Purpose: Given a master state transition tables containing
+ * counts, create a table specific for transitions
+ * to an (i',j') assigned to BIFURC_NODE.
+ *
+ * Args: master_table[][] - the master table containing counts
+ * trans[][] - the new table, returned containing counts
+ *
+ * Return: (void)
+ * trans[][] is filled.
+ */
+static void
+to_bifurc_transtable(double master_table[STATETYPES][STATETYPES],
+ double trans[STATETYPES][STATETYPES])
+{
+ int fy; /* indices for from state, to state */
+
+ for (fy = 0; fy < STATETYPES; fy++)
+ {
+ trans[fy][BIFURC_ST] = master_table[fy][DEL_ST] + master_table[fy][MATR_ST] +
+ master_table[fy][MATL_ST] + master_table[fy][MATP_ST];
+ trans[fy][MATP_ST] = 0.0;
+ trans[fy][MATL_ST] = 0.0;
+ trans[fy][MATR_ST] = 0.0;
+ trans[fy][INSL_ST] = master_table[fy][INSL_ST];
+ trans[fy][INSR_ST] = master_table[fy][INSR_ST];
+ }
+}
+
+
+
+
+
+/* Function: dot_score()
+ *
+ * Purpose: Calculate the dot product of counts by probabilities
+ * for s set of state transitions: i.e. a total score
+ *
+ * Args: cmx: count vector
+ * pmx: probability vector
+ *
+ * Return: score, the dot product, as an integer
+ */
+static int
+dot_score(double *cvec,
+ double *pvec,
+ int veclen)
+{
+ int i;
+ double score = 0.0;
+
+ for (i = 0; i < veclen; i++, cvec++, pvec++)
+ if (*pvec > 0.0) score += *cvec * log(*pvec);
+ return ((int) INTPRECISION * score);
+}
+
+
+
+
+#ifdef DEBUG
+
+static void
+print_mmx(struct maxmx_s **mmx, int alen)
+{
+ int i,j,y;
+
+ for (j = 0; j <= alen; j++)
+ {
+ for (y = 0; y < NODETYPES-1; y++)
+ {
+ for (i = 0; i <= j+1; i++)
+ printf("%5d ", mmx[j][i].sc[y] * 10 / (int) INTPRECISION);
+ printf("\n");
+ }
+ puts("");
+ }
+}
+
+/* Function: print_assignments()
+ *
+ * Purpose: Using a master max likelihood tree constructed from an
+ * alignment, print a line for each column of the alignment:
+ * (column) (fractional occupancy) (assignment)
+ *
+ * The master tree, mtr, is a traceback tree with some of
+ * the fields misused. emitl, emitr contain 0..alen-1 column
+ * coordinates (even if only one of them is emitted by
+ * this tree node). nodeidx is unused. type contains
+ * a node type, not a state type.
+ *
+ * Code partly borrowed from Trace2ali().
+ */
+static void
+print_assignments(struct trace_s *mtr, int nseq, int alen, double *gapcount)
+{
+ struct align_s *ali; /* linear list of alignment */
+ struct t2ali_s *stack; /* stack used to traverse the traceback tr */
+ struct trace_s *currtr;
+ struct align_s *currali;
+ struct align_s *newafter;
+ struct align_s *oldafter;
+ int currpos;
+
+ /* First, we generate a linear linked align_s list from the tree.
+ * The align_s structure fields are used as follows:
+ * pos = 0..alen-1 position in alignment
+ * sym = unused
+ * nodeidx = unused
+ * type = node type (e.g. MATP_NODE)
+ */
+
+ /* Initialize the linked list for the alignment of sequence to model
+ */
+ ali = Init_align();
+
+ /* Initialize the pushdown stack for traversal of the traceback
+ */
+ stack = Init_t2ali();
+ Push_t2ali(stack, mtr->nxtl, ali);
+
+ while (Pop_t2ali(stack, &currtr, &oldafter))
+ {
+ if (currtr->nxtl == NULL) continue; /* ignore END nodes */
+
+ if (currtr->nxtr != NULL) /* BIFURC node */
+ {
+ /* deal with right branch; insert a dummy */
+ newafter = Insafter_align(-1, '-', ' ', 0, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtr, newafter);
+ /* deal with left branch */
+ Push_t2ali(stack, currtr->nxtl, oldafter);
+ }
+ else{
+ switch (currtr->type) {
+ case BEGINL_NODE:
+ case BEGINR_NODE:
+ case ROOT_NODE:
+ Push_t2ali(stack, currtr->nxtl, oldafter);
+ break;
+
+ case MATP_NODE:
+ (void) Insafter_align(currtr->emitr, ' ', ' ', 0, currtr->type, oldafter);
+ newafter = Insafter_align(currtr->emitl, ' ', ' ', 0, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtl, newafter);
+ break;
+
+ case MATL_NODE:
+ newafter = Insafter_align(currtr->emitl, ' ', ' ', 0, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtl, newafter);
+ break;
+
+ case MATR_NODE:
+ (void) Insafter_align(currtr->emitr, ' ', ' ', 0, currtr->type, oldafter);
+ Push_t2ali(stack, currtr->nxtl, oldafter);
+ break;
+
+ case END_NODE:
+ break;
+
+ default:
+ Die("no such node type %d", currtr->type);
+ }
+ }
+ }
+ Free_t2ali(stack);
+
+ currpos = 0;
+ for (currali = ali->nxt; currali != NULL; currali = currali->nxt)
+ {
+ currpos++;
+ while (currpos < currali->pos)
+ {
+ printf("%4d %.3f INS\n",
+ currpos,
+ ((double) nseq - gapcount[currpos]) / (double) nseq);
+ currpos++;
+ }
+
+
+ switch (currali->type) {
+ case BEGINL_NODE:
+ case BEGINR_NODE:
+ case ROOT_NODE:
+ break;
+
+ case MATL_NODE:
+ case MATR_NODE:
+ printf("%4d %.3f MAT singlet\n",
+ currali->pos,
+ ((double) nseq - gapcount[currali->pos]) / (double) nseq);
+ break;
+
+ case MATP_NODE:
+ printf("%4d %.3f MAT pairwise\n",
+ currali->pos,
+ ((double) nseq - gapcount[currali->pos]) / (double) nseq);
+ break;
+ }
+ }
+
+ while (currpos <= alen)
+ {
+ printf("%4d %.3f INS\n",
+ currpos,
+ ((double) nseq - gapcount[currpos]) / (double) nseq);
+ currpos++;
+ }
+
+ Free_align(ali);
+}
+
+#endif /* DEBUG */
+
+
+
diff --git a/misc.c b/misc.c
new file mode 100644
index 0000000..61fbe96
--- /dev/null
+++ b/misc.c
@@ -0,0 +1,196 @@
+/* misc.c
+ * Stuff with no obvious other place to go;
+ * mostly alphabet-related functions.
+ * SRE, Mon Sep 6 10:50:46 1993
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+char *ALPHABET = RNA_ALPHABET;
+
+
+/* Function: SymbolIndex()
+ *
+ * Purpose: Given a sequence symbol, return an array index.
+ * Used for retrieving emission statistics from the
+ * model. This would be trivial, except that we must
+ * expect to see degenerate codes for both RNA and
+ * protein sequence. The rule we follow for degenerate
+ * codes is like BLAST -- we choose one possibility
+ * at random. Note that this is unlike the HMM package,
+ * which goes to the trouble of calculating a weighted
+ * average of the possibilities.
+ *
+ * If the symbol is not recognized, print a warning but
+ * treat it as a fully ambiguous position (N or X).
+ *
+ * Return: the index, usually 0..3 or 0..19.
+ */
+int
+SymbolIndex(char sym)
+{
+ char *sptr;
+ /* trivial case: sym is in alphabet */
+ if ((sptr = strchr(ALPHABET, sym)) != NULL)
+ return (sptr - ALPHABET);
+
+ /* non-trivial case: possible degenerate symbol */
+ if (ALPHATYPE == kAmino)
+ {
+ switch (sym) {
+ case 'B': return (strchr(ALPHABET, "ND"[CHOOSE(2)]) - ALPHABET);
+ case 'Z': return (strchr(ALPHABET, "QE"[CHOOSE(2)]) - ALPHABET);
+ default:
+ Warn("Warning: unrecognized character %c in sequence\n", sym);
+ /* break thru to case 'X' */
+ case 'X':
+ return(CHOOSE(20));
+ }
+ }
+
+ else if (ALPHATYPE == kDNA)
+ {
+ switch (sym) {
+ case 'B': return (strchr(ALPHABET, "CGT"[CHOOSE(3)]) - ALPHABET);
+ case 'D': return (strchr(ALPHABET, "AGT"[CHOOSE(3)]) - ALPHABET);
+ case 'H': return (strchr(ALPHABET, "ACT"[CHOOSE(3)]) - ALPHABET);
+ case 'K': return (strchr(ALPHABET, "GT" [CHOOSE(2)]) - ALPHABET);
+ case 'M': return (strchr(ALPHABET, "AC" [CHOOSE(2)]) - ALPHABET);
+ case 'R': return (strchr(ALPHABET, "AG" [CHOOSE(2)]) - ALPHABET);
+ case 'S': return (strchr(ALPHABET, "CG" [CHOOSE(2)]) - ALPHABET);
+ case 'U': return (strchr(ALPHABET, 'T') - ALPHABET);
+ case 'V': return (strchr(ALPHABET, "ACG"[CHOOSE(3)]) - ALPHABET);
+ case 'W': return (strchr(ALPHABET, "AT" [CHOOSE(2)]) - ALPHABET);
+ case 'Y': return (strchr(ALPHABET, "CT" [CHOOSE(2)]) - ALPHABET);
+
+ case 'N': return (CHOOSE(4));
+ case 'X': return (CHOOSE(4)); /* X is not IUPAC, but that doesn't stop
+ biologists from using it. */
+ default:
+ Warn("Warning: unrecognized character %c in sequence\n", sym);
+ return (CHOOSE(4));
+ }
+ }
+
+ else if (ALPHATYPE == kRNA)
+ {
+ switch (sym) {
+ case 'B': return (strchr(ALPHABET, "CGU"[CHOOSE(3)]) - ALPHABET);
+ case 'D': return (strchr(ALPHABET, "AGU"[CHOOSE(3)]) - ALPHABET);
+ case 'H': return (strchr(ALPHABET, "ACU"[CHOOSE(3)]) - ALPHABET);
+ case 'K': return (strchr(ALPHABET, "GU" [CHOOSE(2)]) - ALPHABET);
+ case 'M': return (strchr(ALPHABET, "AC" [CHOOSE(2)]) - ALPHABET);
+ case 'R': return (strchr(ALPHABET, "AG" [CHOOSE(2)]) - ALPHABET);
+ case 'S': return (strchr(ALPHABET, "CG" [CHOOSE(2)]) - ALPHABET);
+ case 'T': return (strchr(ALPHABET, 'U') - ALPHABET);
+ case 'V': return (strchr(ALPHABET, "ACG"[CHOOSE(3)]) - ALPHABET);
+ case 'W': return (strchr(ALPHABET, "AU" [CHOOSE(2)]) - ALPHABET);
+ case 'Y': return (strchr(ALPHABET, "CU" [CHOOSE(2)]) - ALPHABET);
+
+ case 'N': return (CHOOSE(4));
+ case 'X': return (CHOOSE(4)); /* X is not IUPAC, but that doesn't stop
+ biologists from using it. */
+ default:
+ Warn("Warning: unrecognized character %c in sequence\n", sym);
+ return (CHOOSE(4));
+ }
+ }
+ return 0; /* not reached */
+}
+
+
+/* Function: PrepareSequence()
+ *
+ * Purpose: Ran into a severe bug caused by degenerate symbols. Original
+ * strategy was to randomly assign a single symbol as we do
+ * Viterbi calculations, but since we don't keep traceback pointers
+ * when the trace tries to recalculate, it doesn't know the
+ * random choices made by VitFill().
+ *
+ * This is a fix, and it's a bit more extreme. Go through a
+ * sequence and *replace* degenerate symbols once
+ * and for all with single randomly chosen ones. Also,
+ * we convert to upper case ALPHATYPE alphabet.
+ *
+ * Args: seq - sequence to prepare.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+PrepareSequence(char *seq)
+{
+ char *sym;
+
+ for (sym = seq; *sym != '\0'; sym++)
+ {
+ *sym = toupper((int)*sym);
+ /* sym is in alphabet, or a gap? ok, go to next one */
+ if (strchr(ALPHABET, *sym) != NULL ||
+ isgap(*sym))
+ continue;
+
+ /* then it's a degenerate symbol.
+ * According to alphabet, choose a single symbol to represent it.
+ * watch out for too-clever scheme for random choice: "ABC"[random() % 3]
+ */
+ if (ALPHATYPE == kRNA)
+ {
+ switch (*sym) {
+ case 'B': *sym = "CGU"[CHOOSE(3)]; break;
+ case 'D': *sym = "AGU"[CHOOSE(3)]; break;
+ case 'H': *sym = "ACU"[CHOOSE(3)]; break;
+ case 'K': *sym = "GU" [CHOOSE(2)]; break;
+ case 'M': *sym = "AC" [CHOOSE(2)]; break;
+ case 'R': *sym = "AG" [CHOOSE(2)]; break;
+ case 'S': *sym = "CG" [CHOOSE(2)]; break;
+ case 'T': *sym = 'U'; break;
+ case 'V': *sym = "ACG"[CHOOSE(3)]; break;
+ case 'W': *sym = "AU" [CHOOSE(2)]; break;
+ case 'Y': *sym = "CU" [CHOOSE(2)]; break;
+ default: Warn("Warning: unrecognized character %c in sequence\n", *sym);
+ /* break through to case 'N' */
+ case 'N': *sym = ALPHABET[CHOOSE(4)]; break;
+ }
+ }
+ else if (ALPHATYPE == kDNA)
+ {
+ switch (*sym) {
+ case 'B': *sym = "CGT"[CHOOSE(3)]; break;
+ case 'D': *sym = "AGT"[CHOOSE(3)]; break;
+ case 'H': *sym = "ACT"[CHOOSE(3)]; break;
+ case 'K': *sym = "GT" [CHOOSE(2)]; break;
+ case 'M': *sym = "AC" [CHOOSE(2)]; break;
+ case 'R': *sym = "AG" [CHOOSE(2)]; break;
+ case 'S': *sym = "CG" [CHOOSE(2)]; break;
+ case 'U': *sym = 'T'; break;
+ case 'V': *sym = "ACG"[CHOOSE(3)]; break;
+ case 'W': *sym = "AT" [CHOOSE(2)]; break;
+ case 'Y': *sym = "CT" [CHOOSE(3)]; break;
+ default: Warn("Warning: unrecognized character %c in sequence\n", *sym);
+ /* break through to case 'N' */
+ case 'N': *sym = ALPHABET[CHOOSE(4)]; break;
+ }
+ }
+ else
+ {
+ Warn("Warning: non-nucleic acid alphabet, unrecognized character %c in sequence\n", *sym);
+ *sym = ALPHABET[CHOOSE(ALPHASIZE)];
+ }
+ }
+ return 1;
+}
+
+
+
diff --git a/model.c b/model.c
new file mode 100644
index 0000000..5517788
--- /dev/null
+++ b/model.c
@@ -0,0 +1,771 @@
+/* model.c
+ * Allocation, initialization, free'ing of models.
+ *
+ * Includes code supporting both original node-based CM structure, as well
+ * as the modified, state-based CM structure used by the newer alignment
+ * implementations.
+ *
+ * SRE, Tue Sep 7 09:22:03 1993
+ *
+ */
+
+
+#include <stdlib.h>
+#include <string.h>
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+static void fill_state(struct istate_s *st, int nodeidx, int statetype, int offset);
+static void copy_singlet_emissions(struct istate_s *st, double *emvec, double *rfreq);
+static void copy_pairwise_emissions(struct istate_s *st, double *em, double *rfreq);
+static void copy_state_transitions(struct istate_s *st, double *tvec, int tflags);
+static void copy_pstate_transitions(struct pstate_s *st, double *tvec, int tflags);
+static void fill_pstate(struct pstate_s *st, int nodeidx, int statetype, int offset);
+
+/* Function: AllocCM()
+ *
+ * Purpose: Allocate for a model containing some number of nodes,
+ * inclusive of root but exclusive of ENDs. Blank the model.
+ *
+ * Args: nodes - number of nodes to allocate for
+ *
+ * Return: pointer to the new model. Caller must free, with FreeCM()
+ */
+struct cm_s *
+AllocCM(int nodes)
+{
+ struct cm_s *cm;
+ int k;
+
+ if ((cm = (struct cm_s *) malloc (sizeof(struct cm_s))) == NULL)
+ Die("malloc failed");
+
+ cm->nodes = nodes;
+
+ if ((cm->nd = (struct node_s *) malloc (nodes * sizeof(struct node_s))) == NULL)
+ Die("malloc failed");
+
+ /* fast way to wipe everything to zero */
+ memset(cm->nd, 0, (nodes * sizeof(struct node_s)));
+
+ /* set all the topology connections to -1 */
+ for (k = 0; k < nodes; k++)
+ cm->nd[k].nxt = cm->nd[k].nxt2 = -1;
+
+ return cm;
+}
+
+
+/* Function: FreeCM()
+ *
+ * Purpose: Free memory allocated to a covariance model.
+ *
+ * Return: (void)
+ */
+void
+FreeCM(struct cm_s *cm)
+{
+ free(cm->nd);
+ free(cm);
+}
+
+
+
+/* Function: NormalizeCM()
+ *
+ * Purpose: Normalize all the probability distributions in a model.
+ * Only normalizes the meaningful ones: i.e., matr_emit
+ * emission statistics are ignored for MATL_NODEs, etc.
+ *
+ * Return: (void)
+ */
+void
+NormalizeCM(struct cm_s *cm)
+{
+ int k; /* counter over nodes */
+ int fy; /* from statetype, to statetype */
+
+
+ for (k = 0; k < cm->nodes; k++)
+ {
+ for (fy = 0; fy < STATETYPES; fy++)
+ DNorm(cm->nd[k].tmx[fy], STATETYPES); /* state transitions */
+
+ DNorm((double *) cm->nd[k].mp_emit, ALPHASIZE * ALPHASIZE); /* MATP emissions */
+ DNorm(cm->nd[k].ml_emit, ALPHASIZE); /* MATL emissions */
+ DNorm(cm->nd[k].mr_emit, ALPHASIZE); /* MATR emissions */
+ DNorm(cm->nd[k].il_emit, ALPHASIZE); /* INSL emissions */
+ DNorm(cm->nd[k].ir_emit, ALPHASIZE); /* INSR emissions */
+ }
+}
+
+
+
+/* Function: VerifyCM()
+ *
+ * Purpose: Have a look at a CM and make sure nothing stupid
+ * is wrong with it. Returns 0 if something's wrong
+ * and writes diagnostics to stderr. Returns 1 if
+ * everything looks OK.
+ */
+int
+VerifyCM(struct cm_s *cm)
+{
+ int status = 1;
+ int k; /* counter over nodes */
+
+ for (k = 0; k < cm->nodes; k++)
+ {
+ if (cm->nd[k].type < 0 || cm->nd[k].type >= NODETYPES)
+ {
+ status = 0;
+ fprintf(stderr, "Node %d has invalid type %d\n", k, cm->nd[k].type);
+ }
+
+ if ((cm->nd[k].nxt <= k && cm->nd[k].nxt != -1) ||
+ (cm->nd[k].nxt >= cm->nodes))
+ {
+ status = 0;
+ fprintf(stderr, "Node %d points to invalid left child %d\n", k, cm->nd[k].nxt);
+ }
+
+ if ((cm->nd[k].nxt2 <= k && cm->nd[k].nxt2 != -1) ||
+ (cm->nd[k].nxt2 >= cm->nodes))
+ {
+ status = 0;
+ fprintf(stderr, "Node %d points to invalid right child %d\n", k, cm->nd[k].nxt2);
+ }
+ }
+ return status;
+}
+
+
+/* Function: RearrangeCM()
+ *
+ * Purpose: Convert a cm into an "integer cm", a specialized structure
+ * used only in the alignment algorithms.
+ *
+ * The integer CM is an array of istate_s structures; i.e., rather
+ * than a node-oriented form, a state-oriented form. Rearrange
+ * transition tables to optimize the recursion in recurse_mx().
+ *
+ * The node is expanded into states in proper order (uDEL_ST,
+ * uMATP_ST, uMATL_ST, uMATR_ST, uINSL_ST, uINSR_ST). However, the
+ * state transition vectors are rearranged such that INSL, INSR
+ * are the first elements.
+ *
+ * Insert states are explicitly assumed to have a zero emission
+ * score!
+ *
+ * Args: cm - a covariance model, probability form
+ * rfreq - frequencies to use as a random model (expected background)
+ * ret_icm - RETURN: array of istate_s structures for states
+ * in model. Contains a state 0 for the root;
+ * does not contain anything for the end
+ * ret_statenum - number of states in ret_icm, 0..statenum-1
+ *
+ * Return: 1 on success, 0 on failure.
+ * ret_icm is malloc'ed here and must be free'ed by caller;
+ * use free(*ret_icm).
+ */
+int
+RearrangeCM(struct cm_s *cm,
+ double *rfreq,
+ struct istate_s **ret_icm,
+ int *ret_statenum)
+{
+ struct istate_s *icm; /* new int-lod states-based model */
+ struct istate_s *smallicm; /* streamlined (realloc'ed) icm */
+ struct m2ali_s *bifstack; /* pda for deferring bifurc connection assignment */
+ int bifidx; /* state index of a BEGINR's parent bifurc */
+ int k; /* counter for nodes */
+ int y; /* counter for states */
+ int tflags; /* flags for which to state transitions are used */
+ int fflags; /* flags for which from state transitions are used */
+ int offset; /* offset to next connected state */
+
+ /* We know we can fit the new model into cm->nodes * STATETYPES
+ * states. We'll give back the excess memory later.
+ */
+ if ((icm = (struct istate_s *) calloc ((cm->nodes * STATETYPES), sizeof(struct istate_s))) == NULL)
+ return 0;
+
+ bifstack = Init_m2ali();
+
+ y = 0;
+ for (k = 0; k < cm->nodes; k++)
+ {
+ /* figure out what we're connected to */
+ if (cm->nd[k].nxt == -1)
+ tflags = uEND_ST;
+ else
+ {
+ switch (cm->nd[cm->nd[k].nxt].type) {
+ case BIFURC_NODE:
+ tflags = uBIFURC_ST;
+ break;
+
+ case MATP_NODE:
+ tflags = uDEL_ST | uMATP_ST | uMATR_ST | uMATL_ST;
+ break;
+
+ case MATL_NODE:
+ tflags = uDEL_ST | uMATL_ST;
+ break;
+
+ case MATR_NODE:
+ tflags = uDEL_ST | uMATR_ST;
+ break;
+
+ case BEGINL_NODE:
+ case BEGINR_NODE:
+ tflags = uBEGIN_ST;
+ break;
+
+ default: Die("no such node type %d", cm->nd[cm->nd[k].nxt].type);
+ }
+ }
+
+ /* figure out what we're coming from */
+ switch (cm->nd[k].type) {
+ case BIFURC_NODE:
+ fflags = uBIFURC_ST;
+ offset = 1;
+ break;
+
+ case MATP_NODE:
+ fflags = uDEL_ST | uMATP_ST | uMATL_ST | uMATR_ST | uINSL_ST | uINSR_ST;
+ tflags |= uINSL_ST | uINSR_ST;
+ offset = 4;
+ break;
+
+ case MATL_NODE:
+ fflags = uDEL_ST | uMATL_ST | uINSL_ST;
+ tflags |= uINSL_ST;
+ offset = 2;
+ break;
+
+ case MATR_NODE:
+ fflags = uDEL_ST | uMATR_ST | uINSR_ST;
+ tflags |= uINSR_ST;
+ offset = 2;
+ break;
+
+ case BEGINL_NODE:
+ fflags = uBEGIN_ST;
+ offset = 1;
+ break;
+
+ case BEGINR_NODE:
+ fflags = uBEGIN_ST | uINSL_ST;
+ offset = 1;
+ tflags |= uINSL_ST;
+ break;
+
+ case ROOT_NODE:
+ fflags = uBEGIN_ST | uINSL_ST | uINSR_ST;
+ offset = 1;
+ tflags |= uINSL_ST | uINSR_ST;
+ break;
+
+ default: Die("No such node type %d\n", cm->nd[k].type);
+
+ }
+
+ if (fflags & uDEL_ST)
+ {
+ fill_state(&icm[y], k, uDEL_ST, offset);
+ copy_state_transitions(&icm[y], cm->nd[k].tmx[DEL_ST], tflags);
+ offset--;
+ y++;
+ }
+ else if (fflags & uBIFURC_ST)
+ {
+ fill_state(&icm[y], k, uBIFURC_ST, offset);
+ /* A hack. tmx[0] gets the state index of the left connected BEGIN
+ * child; tmx[1] gets the right connected BEGIN child. The left
+ * child is guaranteed to be the next state, but the assignment
+ * of the right state must be deferred: we push the bifurc state index
+ * into a pda
+ */
+ icm[y].tmx[0] = y+1;
+ Push_m2ali(bifstack, y, 0, NULL);
+ y++;
+ }
+ else if (fflags & uBEGIN_ST)
+ {
+ fill_state(&icm[y], k, uBEGIN_ST, offset);
+ copy_state_transitions(&icm[y], cm->nd[k].tmx[DEL_ST], tflags);
+
+ /* continuation of the above commentary. If we're a right BEGIN_ST,
+ * then we pop the state index of our parent bifurc off the pda
+ */
+ if (cm->nd[k].type == BEGINR_NODE)
+ {
+ Pop_m2ali(bifstack, &bifidx, (int *) NULL, (struct align_s **) NULL);
+ icm[bifidx].tmx[1] = y;
+ }
+
+ offset--;
+ y++;
+ }
+
+ if (fflags & uMATP_ST)
+ {
+ fill_state(&icm[y], k, uMATP_ST, offset);
+ copy_pairwise_emissions(&icm[y], (double *) cm->nd[k].mp_emit, rfreq);
+ copy_state_transitions(&icm[y], cm->nd[k].tmx[MATP_ST], tflags);
+ offset--;
+ y++;
+ }
+
+ if (fflags & uMATL_ST)
+ {
+ fill_state(&icm[y], k, uMATL_ST, offset);
+ copy_singlet_emissions(&icm[y], cm->nd[k].ml_emit, rfreq);
+ copy_state_transitions(&icm[y], cm->nd[k].tmx[MATL_ST], tflags);
+ offset--;
+ y++;
+ }
+
+ if (fflags & uMATR_ST)
+ {
+ fill_state(&icm[y], k, uMATR_ST, offset);
+ copy_singlet_emissions(&icm[y], cm->nd[k].mr_emit, rfreq);
+ copy_state_transitions(&icm[y], cm->nd[k].tmx[MATR_ST], tflags);
+ offset--;
+ y++;
+ }
+
+ if (fflags & uINSL_ST)
+ {
+ fill_state(&icm[y], k, uINSL_ST, 0);
+ copy_singlet_emissions(&icm[y], cm->nd[k].il_emit, rfreq);
+ copy_state_transitions(&icm[y], cm->nd[k].tmx[INSL_ST], tflags);
+ y++;
+ }
+
+ if (fflags & uINSR_ST)
+ {
+ /* beware an asymmetry: INSR->INSL transits are disallowed */
+ fill_state(&icm[y], k, uINSR_ST, 0);
+ copy_singlet_emissions(&icm[y], cm->nd[k].ir_emit, rfreq);
+ copy_state_transitions(&icm[y], cm->nd[k].tmx[INSR_ST], tflags & ~uINSL_ST);
+ y++;
+ }
+
+
+ /* End states must be added
+ */
+ if (cm->nd[k].nxt == -1)
+ {
+ fill_state(&icm[y], -1, uEND_ST, 0);
+ y++;
+ }
+ } /* end loop over nodes */
+
+
+ Free_m2ali(bifstack);
+
+ /* Return some of the alloc'ed memory
+ */
+ smallicm = (struct istate_s *) realloc (icm, y * sizeof(struct istate_s));
+ *ret_icm = (smallicm != NULL) ? smallicm : icm;
+ *ret_statenum = y;
+ return 1;
+}
+
+
+
+/* Function: fill_state()
+ *
+ * Purpose: fill in values in a state: node index, state type unique
+ * identifier, offset to first of the next states, and number
+ * of ynext connections.
+ *
+ * transition and emission probabilities are dealt with
+ * elsewhere.
+ *
+ */
+static void
+fill_state(struct istate_s *st,
+ int nodeidx,
+ int statetype,
+ int offset)
+{
+ st->nodeidx = nodeidx;
+ st->statetype = statetype;
+ st->offset = offset;
+}
+
+
+
+/* Function: copy_singlet_emissions()
+ *
+ * Purpose: Copy a singlet emission vector into a state structure,
+ * converting the probabilities into integer log odds.
+ */
+static void
+copy_singlet_emissions(struct istate_s *st, double *emvec, double *rfreq)
+{
+ int x;
+
+ for (x = 0; x < ALPHASIZE; x++)
+ st->emit[x] = ILOG2(emvec[x] / rfreq[x]);
+}
+
+
+
+
+/* Function: copy_pairwise_emissions()
+ *
+ * Purpose: Copy a pairwise emission table into a state structure,
+ * converting the probabilities into integer log odds.
+ * Beware the funny business with the pairwise emission
+ * array; it was mp_emit[4][4], now cast to a pointer,
+ * and accessed like a vector.
+ */
+static void
+copy_pairwise_emissions(struct istate_s *st, double *em, double *rfreq)
+{
+ int x;
+
+ for (x = 0; x < ALPHASIZE * ALPHASIZE; x++)
+ st->emit[x] = ILOG2(em[x] / (rfreq[x % ALPHASIZE] * rfreq[x / ALPHASIZE]));
+}
+
+
+
+
+/* Function: copy_state_transitions()
+ *
+ * Purpose: Copy a state transition vector from a CM into a state
+ * structure, copying only the used state transitions
+ * as given by tflags. The state transition vector is
+ * rearranged for an optimization: transits to INSL, INSR
+ * are placed first.
+ */
+static void
+copy_state_transitions(struct istate_s *st,
+ double *tvec,
+ int tflags)
+{
+ int stx; /* counter for state vector */
+
+ stx = 0;
+ if (tflags & uINSL_ST)
+ { st->tmx[stx] = ILOG2(tvec[INSL_ST]); stx++; }
+
+ if (tflags & uINSR_ST)
+ { st->tmx[stx] = ILOG2(tvec[INSR_ST]); stx++; }
+
+ if (tflags & uDEL_ST || tflags & uBIFURC_ST ||
+ tflags & uBEGIN_ST || tflags & uEND_ST)
+ { st->tmx[stx] = ILOG2(tvec[DEL_ST]); stx++; }
+
+ if (tflags & uMATP_ST)
+ { st->tmx[stx] = ILOG2(tvec[MATP_ST]); stx++; }
+
+ if (tflags & uMATL_ST)
+ { st->tmx[stx] = ILOG2(tvec[MATL_ST]); stx++; }
+
+ if (tflags & uMATR_ST)
+ { st->tmx[stx] = ILOG2(tvec[MATR_ST]); stx++; }
+
+ st->connectnum = stx;
+}
+
+
+/* Function: MakePCM()
+ *
+ * Purpose: Like RearrangeCM(), but leaving the model
+ * in floating-point probabilities in struct pstate_s
+ * structures.
+ *
+ * Args: cm - a covariance model, probability form
+ * ret_pcm - RETURN: array of pstate_s structures for states
+ * in model. Contains a state 0 for the root.
+ * end states are explicit.
+ * ret_statenum - number of states in ret_pcm, 0..statenum-1
+ *
+ * Return: 1 on success, 0 on failure.
+ * ret_pcm is malloc'ed here and must be free'ed by caller;
+ * use free(*ret_pcm).
+ */
+int
+MakePCM(struct cm_s *cm,
+ struct pstate_s **ret_pcm,
+ int *ret_statenum)
+{
+ struct pstate_s *pcm; /* new states-based model */
+ struct pstate_s *smallpcm; /* streamlined (realloc'ed) pcm */
+ struct intstack_s *bifstack; /* pda for deferring bifurc connection assignment */
+ int bifidx; /* state index of a BEGINR's parent bifurc */
+ int k; /* counter for nodes */
+ int y; /* counter for states */
+ int tflags; /* flags for which to state transitions are used */
+ int fflags; /* flags for which from state transitions are used */
+ int offset; /* offset to next connected state */
+
+ /* We know we can fit the new model into cm->nodes * STATETYPES
+ * states. We'll give back the excess memory later.
+ */
+ if ((pcm = (struct pstate_s *) calloc ((cm->nodes * STATETYPES), sizeof(struct pstate_s))) == NULL)
+ return 0;
+
+ bifstack = InitIntStack();
+
+ y = 0;
+ for (k = 0; k < cm->nodes; k++)
+ {
+ /* figure out what we're connected to */
+ if (cm->nd[k].nxt == -1)
+ tflags = uEND_ST;
+ else
+ {
+ switch (cm->nd[cm->nd[k].nxt].type) {
+ case BIFURC_NODE: tflags = uBIFURC_ST; break;
+ case MATP_NODE: tflags = uDEL_ST | uMATP_ST | uMATR_ST | uMATL_ST; break;
+ case MATL_NODE: tflags = uDEL_ST | uMATL_ST; break;
+ case MATR_NODE: tflags = uDEL_ST | uMATR_ST; break;
+ case BEGINL_NODE: tflags = uBEGIN_ST; break;
+ case BEGINR_NODE: tflags = uBEGIN_ST; break;
+ default: Die("no such node type %d", cm->nd[cm->nd[k].nxt].type);
+ }
+ }
+
+ /* figure out what we're coming from */
+ switch (cm->nd[k].type) {
+ case BIFURC_NODE:
+ fflags = uBIFURC_ST;
+ offset = 1;
+ break;
+
+ case MATP_NODE:
+ fflags = uDEL_ST | uMATP_ST | uMATL_ST | uMATR_ST | uINSL_ST | uINSR_ST;
+ tflags |= uINSL_ST | uINSR_ST;
+ offset = 4;
+ break;
+
+ case MATL_NODE:
+ fflags = uDEL_ST | uMATL_ST | uINSL_ST;
+ tflags |= uINSL_ST;
+ offset = 2;
+ break;
+
+ case MATR_NODE:
+ fflags = uDEL_ST | uMATR_ST | uINSR_ST;
+ tflags |= uINSR_ST;
+ offset = 2;
+ break;
+
+ case BEGINL_NODE:
+ fflags = uBEGIN_ST;
+ offset = 1;
+ break;
+
+ case BEGINR_NODE:
+ fflags = uBEGIN_ST | uINSL_ST;
+ offset = 1;
+ tflags |= uINSL_ST;
+ break;
+
+ case ROOT_NODE:
+ fflags = uBEGIN_ST | uINSL_ST | uINSR_ST;
+ offset = 1;
+ tflags |= uINSL_ST | uINSR_ST;
+ break;
+
+ default: Die("No such node type %d\n", cm->nd[k].type);
+
+ }
+
+ if (fflags & uDEL_ST)
+ {
+ fill_pstate(&pcm[y], k, uDEL_ST, offset);
+ copy_pstate_transitions(&pcm[y], cm->nd[k].tmx[DEL_ST], tflags);
+ offset--;
+ y++;
+ }
+ else if (fflags & uBIFURC_ST)
+ {
+ fill_pstate(&pcm[y], k, uBIFURC_ST, offset);
+ /* We defer the assignment of bifr */
+ PushIntStack(bifstack, y);
+ y++;
+ }
+ else if (fflags & uBEGIN_ST)
+ {
+ fill_pstate(&pcm[y], k, uBEGIN_ST, offset);
+ copy_pstate_transitions(&pcm[y], cm->nd[k].tmx[DEL_ST], tflags);
+
+ /* continuation of the above commentary. If we're a right BEGIN_ST,
+ * then we pop the state index of our parent bifurc off the pda
+ */
+ if (cm->nd[k].type == BEGINR_NODE)
+ {
+ PopIntStack(bifstack, &bifidx);
+ pcm[bifidx].bifr = y;
+ }
+ offset--;
+ y++;
+ }
+
+ if (fflags & uMATP_ST)
+ {
+ fill_pstate(&pcm[y], k, uMATP_ST, offset);
+ memcpy(pcm[y].emit, cm->nd[k].mp_emit, sizeof(double) * ALPHASIZE * ALPHASIZE);
+ copy_pstate_transitions(&pcm[y], cm->nd[k].tmx[MATP_ST], tflags);
+ offset--;
+ y++;
+ }
+
+ if (fflags & uMATL_ST)
+ {
+ fill_pstate(&pcm[y], k, uMATL_ST, offset);
+ memcpy(pcm[y].emit, cm->nd[k].ml_emit, sizeof(double) * ALPHASIZE);
+ copy_pstate_transitions(&pcm[y], cm->nd[k].tmx[MATL_ST], tflags);
+ offset--;
+ y++;
+ }
+
+ if (fflags & uMATR_ST)
+ {
+ fill_pstate(&pcm[y], k, uMATR_ST, offset);
+ memcpy(pcm[y].emit, cm->nd[k].mr_emit, sizeof(double) * ALPHASIZE);
+ copy_pstate_transitions(&pcm[y], cm->nd[k].tmx[MATR_ST], tflags);
+ offset--;
+ y++;
+ }
+
+ if (fflags & uINSL_ST)
+ {
+ fill_pstate(&pcm[y], k, uINSL_ST, 0);
+ memcpy(pcm[y].emit, cm->nd[k].il_emit, sizeof(double) * ALPHASIZE);
+ copy_pstate_transitions(&pcm[y], cm->nd[k].tmx[INSL_ST], tflags);
+ y++;
+ }
+
+ if (fflags & uINSR_ST)
+ {
+ /* beware an asymmetry: INSR->INSL transits are disallowed */
+ fill_pstate(&pcm[y], k, uINSR_ST, 0);
+ memcpy(pcm[y].emit, cm->nd[k].ir_emit, sizeof(double) * ALPHASIZE);
+ copy_pstate_transitions(&pcm[y], cm->nd[k].tmx[INSR_ST], tflags & ~uINSL_ST);
+ y++;
+ }
+
+
+ /* End states must be added
+ */
+ if (cm->nd[k].nxt == -1)
+ {
+ fill_pstate(&pcm[y], -1, uEND_ST, 0);
+ y++;
+ }
+ } /* end loop over nodes */
+
+
+ FreeIntStack(bifstack);
+
+ /* Return some of the alloc'ed memory
+ */
+ smallpcm = (struct pstate_s *) realloc (pcm, y * sizeof(struct pstate_s));
+ *ret_pcm = (smallpcm != NULL) ? smallpcm : pcm;
+ *ret_statenum = y;
+ return 1;
+}
+
+
+
+
+/* Function: copy_pstate_transitions()
+ *
+ * Purpose: Copy a state transition vector from a CM into a state
+ * structure, copying only the used state transitions
+ * as given by tflags. The state transition vector is
+ * rearranged for an optimization: transits to INSL, INSR
+ * are placed first.
+ */
+static void
+copy_pstate_transitions(struct pstate_s *st,
+ double *tvec,
+ int tflags)
+{
+ int stx; /* counter for state vector */
+
+ stx = 0;
+ if (tflags & uINSL_ST)
+ { st->tmx[stx] = tvec[INSL_ST]; stx++; }
+
+ if (tflags & uINSR_ST)
+ { st->tmx[stx] = tvec[INSR_ST]; stx++; }
+
+ if (tflags & uDEL_ST || tflags & uBIFURC_ST ||
+ tflags & uBEGIN_ST || tflags & uEND_ST)
+ { st->tmx[stx] = tvec[DEL_ST]; stx++; }
+
+ if (tflags & uMATP_ST)
+ { st->tmx[stx] = tvec[MATP_ST]; stx++; }
+
+ if (tflags & uMATL_ST)
+ { st->tmx[stx] = tvec[MATL_ST]; stx++; }
+
+ if (tflags & uMATR_ST)
+ { st->tmx[stx] = tvec[MATR_ST]; stx++; }
+
+ st->connectnum = stx;
+}
+
+
+/* Function: fill_pstate()
+ *
+ * Purpose: fill in values in a state: node index, state type unique
+ * identifier, offset to first of the next states.
+ *
+ * transition and emission probabilities are dealt with
+ * elsewhere.
+ *
+ */
+static void
+fill_pstate(struct pstate_s *st,
+ int nodeidx,
+ int statetype,
+ int offset)
+{
+ st->nodeidx = nodeidx;
+ st->statetype = statetype;
+ st->offset = offset;
+}
+
+
+/* Function: NormalizePCM()
+ *
+ * Purpose: Make damn sure a probability-form, states-based CM is
+ * properly normalized. Workaround for a bug!
+ */
+void
+NormalizePCM(struct pstate_s *pcm, int M)
+{
+ int y;
+
+ for (y = 0; y < M; y++)
+ {
+ /* emission distributions */
+ switch (pcm[y].statetype) {
+ case uMATP_ST: DNorm(pcm[y].emit, ALPHASIZE * ALPHASIZE); break;
+ case uMATL_ST:
+ case uMATR_ST:
+ case uINSL_ST:
+ case uINSR_ST: DNorm(pcm[y].emit, ALPHASIZE); break;
+ }
+
+ /* transition distributions */
+ if (pcm[y].statetype != uBIFURC_ST)
+ DNorm(pcm[y].tmx, pcm[y].connectnum);
+ }
+}
diff --git a/modelmaking.c b/modelmaking.c
new file mode 100644
index 0000000..71c5968
--- /dev/null
+++ b/modelmaking.c
@@ -0,0 +1,462 @@
+/* modelmaking.c
+ * Tue Oct 4 15:33:21 1994
+ *
+ * Bring together common elements of the model construction process.
+ * Also, provides EasyModelmaker() for making a model given a structure.
+ *
+ * All model makers have in common that they construct a "master" traceback
+ * for the alignment, specifying which columns are match vs. insert and
+ * how the model tree branches. This traceback is assigned a numbering
+ * system by NumberMasterTrace(), which returns the number of nodes;
+ * the caller then allocates a new CM. This new model is numbered (assigned
+ * a branching structure) by TopofyNewCM(). Then individual tracebacks
+ * are constructed from individual aligned sequences by Transmogrify().
+ * The individual tracebacks are counted into a new model with TraceCount()
+ * and the counts converted to probabilities with ProbifyCM().
+ *
+ * The master tree is a (slightly misused) trace_s structure with the following
+ * properties:
+ * insert columns are not represented at all. Transmogrify() must deal.
+ *
+ * emitl, emitr == 0..alen-1 coords of assigned columns. Set and valid for all
+ * nodes, even non-emitters. END values will be
+ * on the off-diagonal, emitl = emitr+1. (If this is
+ * not true, Transmogrify() breaks.) The trace
+ * construction function is responsible for this.
+ *
+ * nodeidx == this is numbered by preorder traversal by NumberMasterTrace(),
+ * which also numbers a model. ENDs are not explicitly
+ * represented in a CM, so they get nodeidx = -1.
+ *
+ * type == a number 0..6 for *node* type. (Usually this is a unique
+ * state type identifier.) ENDs are -1. The trace construction
+ * function is reponsible for this.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "version.h"
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+/* Function: NumberMasterTrace()
+ *
+ * Purpose: Given a master trace for an alignment, number the trace tree
+ * (in the nodeidx field) in preorder traversal. END nodes
+ * will not be represented explicitly in the final CM. They
+ * get numbered -1.
+ */
+void
+NumberMasterTrace(struct trace_s *mtr, int *ret_nodes)
+{
+ struct trace_s *curr;
+ struct tracestack_s *dolist;
+ int nodes = 0;
+
+ dolist = InitTracestack();
+ PushTracestack(dolist, mtr->nxtl); /* push root onto stack */
+
+ while ((curr = PopTracestack(dolist)) != NULL)
+ {
+ if (curr->nxtl == NULL) /* END node */
+ curr->nodeidx = -1;
+ else /* other nodes */
+ curr->nodeidx = nodes++;
+
+ if (curr->nxtr != NULL) PushTracestack(dolist, curr->nxtr);
+ if (curr->nxtl != NULL) PushTracestack(dolist, curr->nxtl);
+ }
+
+ FreeTracestack(dolist);
+ *ret_nodes = nodes;
+}
+
+
+/* Function: TopofyNewCM()
+ *
+ * Purpose: Given the mtr master traceback tree, which defines the
+ * topology of the model, write the nxt and nxt2 connections
+ * into the model. For the most part, these are already
+ * contained in mtr thanks to NumberMasterTrace(); the
+ * only tricky bit is converting END states from multiple
+ * real states (in mtr) to -1 nxt flags in the cm.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+void
+TopofyNewCM(struct cm_s *cm, struct trace_s *mtr)
+{
+ struct tracestack_s *dolist;
+ struct trace_s *curr;
+
+ dolist = InitTracestack();
+ PushTracestack(dolist, mtr->nxtl); /* push ROOT onto stack */
+
+ while ((curr = PopTracestack(dolist)) != NULL)
+ {
+ if (curr->nxtl == NULL) continue; /* ignore ENDs */
+ if (curr->nxtr != NULL) /* deal with BIFURC states */
+ {
+ cm->nd[curr->nodeidx].nxt2 = curr->nxtr->nodeidx;
+ PushTracestack(dolist, curr->nxtr);
+ }
+ else
+ cm->nd[curr->nodeidx].nxt2 = -1;
+
+ /* watch out for curr pointing to END states. */
+ cm->nd[curr->nodeidx].type = curr->type;
+ cm->nd[curr->nodeidx].nxt = (curr->nxtl->nxtl == NULL) ? -1 : curr->nxtl->nodeidx;
+ PushTracestack(dolist, curr->nxtl);
+ }
+ FreeTracestack(dolist);
+}
+
+
+/* Function: Transmogrify()
+ *
+ * Purpose: Given a master consensus traceback, create an individual
+ * "fake" traceback. The fake traceback contains inserts
+ * and converts the type field of mtr (which contains NODE
+ * type indices) into _ST type indices, including proper
+ * classification of nodes into DEL_ST or the various match
+ * states depending on what aseq[idx] looks like.
+ *
+ * Args: mtr - master consensus traceback tree
+ * aseq - 0..alen-1 aligned sequence.
+ * ret_tr - RETURN: individual traceback
+ * ret_pool - RETURN: memory pool for traceback
+ *
+ * Return: (void). *ret_tr must be free'd by the caller
+ */
+void
+Transmogrify(struct trace_s *mtr, char *aseq, struct trace_s **ret_tr, struct trmem_s **ret_pool)
+{
+ struct trace_s *tr;
+ struct trmem_s *pool;
+ struct tracestack_s *mtr_stack;
+ struct tracestack_s *tr_stack;
+ struct trace_s *curr_mtr;
+ struct trace_s *curr_tr;
+ int i2,j2;
+
+ mtr_stack = InitTracestack();
+ tr_stack = InitTracestack();
+ InitTrace(&tr, &pool);
+
+ /* Push ROOT onto both stacks
+ */
+ PushTracestack(mtr_stack, mtr->nxtl);
+ PushTracestack(tr_stack, AttachTrace(tr, pool, -1, -1, 0, uBEGIN_ST));
+
+ while ((curr_mtr = PopTracestack(mtr_stack)) != NULL)
+ {
+ curr_tr = PopTracestack(tr_stack);
+
+ switch (curr_mtr->type) {
+ case uEND_ST:
+ DeleteTracenode(curr_tr, pool);
+ break;
+
+ case MATP_NODE:
+ if (isgap(aseq[curr_mtr->emitl]))
+ {
+ if (isgap(aseq[curr_mtr->emitr])) curr_tr->type = uDEL_ST;
+ else curr_tr->type = uMATR_ST;
+ }
+ else
+ {
+ if (isgap(aseq[curr_mtr->emitr])) curr_tr->type = uMATL_ST;
+ else curr_tr->type = uMATP_ST;
+ }
+
+ /* May have to deal with INSL and INSR; INSL precedes INSR
+ */
+ for (i2 = curr_mtr->emitl+1; i2 < curr_mtr->nxtl->emitl; i2++)
+ if (!isgap(aseq[i2]))
+ curr_tr = AttachTrace(curr_tr, pool, i2, curr_mtr->emitr, curr_mtr->nodeidx, uINSL_ST);
+
+ /* May have to deal with INSR
+ */
+ for (j2 = curr_mtr->emitr-1; j2 > curr_mtr->nxtl->emitr; j2--)
+ if (! isgap(aseq[j2]))
+ curr_tr = AttachTrace(curr_tr, pool, curr_mtr->nxtl->emitl, j2, curr_mtr->nodeidx, uINSR_ST);
+ break;
+
+ case MATL_NODE:
+ if (isgap(aseq[curr_mtr->emitl])) curr_tr->type = uDEL_ST;
+ else curr_tr->type = uMATL_ST;
+
+ /* May have to deal with INSL
+ */
+ for (i2 = curr_mtr->emitl+1; i2 < curr_mtr->nxtl->emitl; i2++)
+ if (!isgap(aseq[i2]))
+ curr_tr = AttachTrace(curr_tr, pool, i2, curr_mtr->emitr, curr_mtr->nodeidx, uINSL_ST);
+ break;
+
+ case MATR_NODE:
+ if (isgap(aseq[curr_mtr->emitr])) curr_tr->type = uDEL_ST;
+ else curr_tr->type = uMATR_ST;
+
+ /* May have to deal with INSR */
+ for (j2 = curr_mtr->emitr-1; j2 > curr_mtr->nxtl->emitr; j2--)
+ if (! isgap(aseq[j2]))
+ curr_tr = AttachTrace(curr_tr, pool, curr_mtr->nxtl->emitl, j2, curr_mtr->nodeidx, uINSR_ST);
+ break;
+
+ case BIFURC_NODE: curr_tr->type = uBIFURC_ST; break;
+ case BEGINL_NODE: curr_tr->type = uBEGIN_ST; break;
+
+ case BEGINR_NODE:
+ curr_tr->type = uBEGIN_ST;
+
+ /* May have to deal with INSL.
+ * Inserts from BEGINR are *inclusive* of i
+ */
+ for (i2 = curr_mtr->emitl; i2 < curr_mtr->nxtl->emitl; i2++)
+ if (!isgap(aseq[i2]))
+ curr_tr = AttachTrace(curr_tr, pool, i2, curr_mtr->emitr, curr_mtr->nodeidx, uINSL_ST);
+
+ break;
+
+ case ROOT_NODE:
+ curr_tr->type = uBEGIN_ST;
+
+ /* May have to deal with INSL and INSR; note INSL precedes INSR
+ * inserts from root are inclusive of i
+ */
+ for (i2 = curr_mtr->emitl; i2 < curr_mtr->nxtl->emitl; i2++)
+ if (!isgap(aseq[i2]))
+ curr_tr = AttachTrace(curr_tr, pool, i2, curr_mtr->emitr, curr_mtr->nodeidx, uINSL_ST);
+
+ /* May have to deal with INSR
+ */
+ for (j2 = curr_mtr->emitr; j2 > curr_mtr->nxtl->emitr; j2--)
+ if (! isgap(aseq[j2]))
+ curr_tr = AttachTrace(curr_tr, pool, curr_mtr->nxtl->emitl, j2, curr_mtr->nodeidx, uINSR_ST);
+ break;
+
+ default: Die("Invalid node type %d", curr_mtr->type);
+ }
+
+ /* Push the children onto stacks, if they're not END nodes
+ */
+ if (curr_mtr->nxtr != NULL)
+ {
+ PushTracestack(mtr_stack, curr_mtr->nxtr);
+ PushTracestack(tr_stack, AttachTrace(curr_tr, pool, curr_mtr->nxtr->emitl, curr_mtr->nxtr->emitr,
+ curr_mtr->nxtr->nodeidx, curr_mtr->nxtr->type));
+ }
+ if (curr_mtr->nxtl != NULL)
+ {
+ PushTracestack(mtr_stack, curr_mtr->nxtl);
+ PushTracestack(tr_stack, AttachTrace(curr_tr, pool, curr_mtr->nxtl->emitl, curr_mtr->nxtl->emitr,
+ curr_mtr->nxtl->nodeidx, curr_mtr->nxtl->type));
+ }
+ }
+ FreeTracestack(mtr_stack);
+ FreeTracestack(tr_stack);
+ *ret_pool = pool;
+ *ret_tr = tr;
+}
+
+
+
+/* Function: EasyModelmaker()
+ *
+ * Purpose: The customer always knows best.
+ *
+ * Construct a model given a stated structure. The structure
+ * is provided via a "cs" (consensus sequence) line, as would
+ * occur in an annotated SELEX file. Only > and < characters
+ * in this line are interpreted (as base pairs).
+ *
+ * Match vs. insert can be determined one of two ways. By default,
+ * the assignment is made by "gapthresh"; for columns with
+ * fractional occurence of gaps greater than this, the column
+ * is assigned to insert. If "use_rf" is TRUE, the rf (reference)
+ * line is interpreted as the assignment -- columns with non-space
+ * characters in the rf line are assigned to MATCH.
+ *
+ * Both rf and cs are provided in the ainfo structure.
+ *
+ * Args: aseq - aligned sequences. [0..nseq-1] by [0..alen-1]
+ * ainfo - info about the alignment, including alen, cs,
+ * and rf
+ * nseq - number of seqs in aseq
+ * prior - prior distributions for CM construction
+ * gapthresh - over this fraction of gaps, assign column as INS
+ * use_rf - if TRUE, use rf field of ainfo for MAT/INS assignment
+ * ret_cm - RETURN: new model (maybe NULL)
+ * ret_mtr - RETURN: master traceback for alignment (maybe NULL)
+ *
+ * Return: void
+ * cm is allocated here. FreeCM(*ret_cm).
+ * tr is allocated here. FreeTrace() on each one, then free(*ret_tr).
+ */
+void
+EasyModelmaker(char **aseq, AINFO *ainfo, int nseq, struct prior_s *prior,
+ double gapthresh, int use_rf, struct cm_s **ret_cm, struct trace_s **ret_mtr)
+{
+ struct cm_s *cm; /* new covariance model */
+ struct trace_s *mtr; /* master traceback tree for alignment */
+ struct trace_s *tr; /* individual sequence traceback tree */
+ struct trmem_s *pool; /* memory pool for traceback tree */
+ struct tracestack_s *dolist;
+ struct trace_s *cur;
+ int *matassign;
+ int nodes;
+ int idx, apos;
+ int *ct;
+ int i,j, nxti, nxtj;
+
+ if (! (ainfo->flags & AINFO_CS)) Die("No cs (consensus structure) line available for that alignment.");
+
+ /* Determine match/insert assignments
+ * matassign is 0..alen-1. Values are 1 if MAT, 0 if INS.
+ */
+ matassign = (int *) MallocOrDie(sizeof(int) * ainfo->alen);
+ if (use_rf)
+ {
+ if (! (ainfo->flags & AINFO_RF)) Die("No rf (reference coord) line available for that alignment.");
+ for (apos = 0; apos < ainfo->alen; apos++)
+ matassign[apos] = (ainfo->rf[apos] == ' ') ? 0 : 1;
+ }
+ else
+ {
+ int gaps;
+ for (apos = 0; apos < ainfo->alen; apos++)
+ {
+ for (gaps = 0, idx = 0; idx < nseq; idx++)
+ if (isgap(aseq[idx][apos])) gaps++;
+ matassign[apos] = ((double) gaps / (double) nseq > gapthresh) ? 0 : 1;
+ }
+ }
+
+ /* Determine a "ct" array, base-pairing partners for each position
+ */
+ if (! KHS2ct(ainfo->cs, ainfo->alen, FALSE, &ct)) Die("Consensus structure string is inconsistent");
+
+ /* Make sure the consensus structure "ct" is consistent with the match assignments.
+ * Wipe out all structure under INS; including the base-paired
+ * partner of INS-assigned positions
+ */
+ for (apos = 0; apos < ainfo->alen; apos++)
+ if (! matassign[apos])
+ {
+ if (ct[apos] != -1) ct[ct[apos]] = -1;
+ ct[apos] = -1;
+ }
+
+ /* Construct a master traceback tree.
+ * This code is borrowed from yarn's KHS2Trace().
+ * mtr's emitl, emitr, and type are properly set by this section.
+ */
+ InitTrace(&mtr, NULL);
+ dolist = InitTracestack();
+ cur = AttachTrace(mtr, NULL, 0, ainfo->alen-1, -1, ROOT_NODE); /* attach the root */
+ PushTracestack(dolist, cur);
+
+ while ((cur = PopTracestack(dolist)) != NULL)
+ {
+ i = cur->emitl;
+ j = cur->emitr;
+
+ /* This node accounts for i..j, but we don't know how yet.
+ * Six possibilities:
+ * i > j; this is an END state; do nothing.
+ * this is already assigned as a BEGIN; push i,j
+ * i is unpaired; this is a MATL state; push i+1, j
+ * j is unpaired; this is a MATR state; push i,j-1
+ * i,j pair to each other; this is a MATP state; push i+1,j-1
+ * i,j pair but not to each other; this is a BIFURC state;
+ * pick mid ip <= mid < jp; push BEGIN i,mid and working i,mid,
+ * and push BEGIN mid+1,j and working mid+1,j
+ */
+ if (i > j) cur->type = uEND_ST;
+
+ else if (cur->type == ROOT_NODE)
+ { /* try to push i,j; but deal with INSL and INSR */
+ for (nxti = i; nxti <= j; nxti++) if (matassign[nxti]) break;
+ for (nxtj = j; nxtj >= nxti; nxtj--) if (matassign[nxtj]) break;
+ if (nxti <= nxtj) PushTracestack(dolist, AttachTrace(cur, NULL, nxti, nxtj, -1, uEND_ST));
+ else { cur->nxtl->emitl = nxti; cur->nxtl->emitr = nxtj; } /* deal with END_ST */
+ }
+
+ else if (cur->type == BEGINL_NODE) /* no inserts */
+ {
+ if (i <= j)
+ PushTracestack(dolist, AttachTrace(cur, NULL, i, j, -1, uEND_ST));
+ else
+ { cur->nxtl->emitl = nxti; cur->nxtl->emitr = j; }
+ }
+
+ else if (cur->type == BEGINR_NODE) /* INSL */
+ {
+ for (nxti = i; nxti <= j; nxti++) if (matassign[nxti]) break;
+ if (nxti <= j) PushTracestack(dolist, AttachTrace(cur, NULL, nxti, j, -1, uEND_ST));
+ else { cur->nxtl->emitl = nxti; cur->nxtl->emitr = j; } /* deal with END_ST */
+ }
+
+ else if (ct[i] == -1) /* i unpaired. This is a MATL node; allow INSL */
+ {
+ cur->type = MATL_NODE;
+ for (nxti = i+1; nxti <= j; nxti++) if (matassign[nxti]) break;
+ if (nxti <= j) PushTracestack(dolist, AttachTrace(cur, NULL, nxti, j, -1, uEND_ST));
+ else { cur->nxtl->emitl = nxti; cur->nxtl->emitr = j; } /* deal with END_ST */
+ }
+
+ else if (ct[j] == -1) /* j unpaired. MATR node. Deal with INSR */
+ {
+ cur->type = MATR_NODE;
+ for (nxtj = j-1; nxtj >= i; nxtj--) if (matassign[nxtj]) break;
+ if (i <= nxtj) PushTracestack(dolist, AttachTrace(cur, NULL, i, nxtj, -1, uEND_ST));
+ else { cur->nxtl->emitl = i; cur->nxtl->emitr = nxtj; } /* deal with END_ST */
+ }
+
+ else if (ct[i] == j) /* i,j paired to each other. MATP. deal with INSL, INSR */
+ {
+ cur->type = MATP_NODE;
+ for (nxti = i+1; nxti <= j; nxti++) if (matassign[nxti]) break;
+ for (nxtj = j-1; nxtj >= nxti; nxtj--) if (matassign[nxtj]) break;
+ if (nxti <= nxtj) PushTracestack(dolist, AttachTrace(cur, NULL, nxti, nxtj, -1, uEND_ST));
+ else { cur->nxtl->emitl = nxti; cur->nxtl->emitr = nxtj; } /* deal with END_ST */
+ }
+
+ else /* i,j paired but not to each other. BIFURC. no INS. */
+ { /* by convention, right side of bifurc deals with insert in middle */
+ cur->type = BIFURC_NODE;
+ PushTracestack(dolist, AttachTrace(cur, NULL, ct[i]+1, j, -1, BEGINR_NODE));
+ PushTracestack(dolist, AttachTrace(cur, NULL, i, ct[i], -1, BEGINL_NODE));
+ }
+ } /* while something's on dolist stack */
+ FreeTracestack(dolist);
+ free(ct);
+
+ /* Now, do the drill for constructing a model using this master trace.
+ */
+ NumberMasterTrace(mtr, &nodes);
+ if ((cm = AllocCM(nodes)) == NULL)
+ Die("failed to allocate for new model of %d nodes\n", nodes);
+ TopofyNewCM(cm, mtr);
+
+ for (idx = 0; idx < nseq; idx++)
+ {
+ Transmogrify(mtr, aseq[idx], &tr, &pool);
+ if (! TraceCount(cm, aseq[idx],
+ (ainfo->sqinfo[idx].flags & SQINFO_WGT) ? (double) ainfo->sqinfo[idx].weight : 1.0,
+ tr))
+ Die("TraceCount() failed");
+ FreeTrace(tr, pool);
+ }
+ ProbifyCM(cm, prior);
+
+ free(matassign);
+ if (ret_cm != NULL) *ret_cm = cm; else FreeCM(cm);
+ if (ret_mtr != NULL) *ret_mtr = mtr; else FreeTrace(mtr, NULL);
+}
diff --git a/mp-dbviterbi.m b/mp-dbviterbi.m
new file mode 100644
index 0000000..aa2083c
--- /dev/null
+++ b/mp-dbviterbi.m
@@ -0,0 +1,784 @@
+/* mp-dbviterbi.m
+ * MasPar MPL code for parallelized covariance model alignment algorithm
+ * Database scanning version
+ * Prototype started Fri Aug 19 08:44:43 1994
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <mpl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <ppeio.h> /* parallel i/o */
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+#include "maspar.h"
+
+#define PROHIBIT -99999999 /* "negative infinity" */
+#define MAXDEBUGWIDTH 10
+
+/* mpcovels_main.c:
+ * functions that the DPU calls back to
+ */
+visible extern int DPUReportsHit(int *dpu_i, int *dpu_j, int *dpu_score);
+visible extern int NextSequenceBlock(void);
+
+/* Debugging functions.
+ */
+static void mp_print_icm(FILE *fp, struct istate_s *icm, int nstates);
+static char *mp_UstatetypeName(int ustatetype);
+static char *mp_StatetypeName(int statetype);
+static char *mp_NodetypeName(int nodetype);
+static void mp_print_mx(plural int *curr[VPENUM],
+ struct istate_s *icm, int statenum,
+ plural char symi[VPENUM], plural char symj);
+static char NucSymbol(int symidx);
+
+/* Function: MPViterbiScan()
+ *
+ * Purpose: MasPar MPL parallelized version of ViterbiScan().
+ *
+ * Scan a database of sequences with a covariance model.
+ * See Notes, dbviterbi-parallel, for more detailed
+ * commentary.
+ *
+ * Args: fe_icm: ptr to the model (on front end)
+ * fe_statenum: ptr to length of model (on front end)
+ * fe_threshold: report scores above this (scaled integer)
+ * fe_buffer: where we'll fetch sequence from on FE
+ *
+ * Return: nothing (I think this is proper for an MPL subroutine)
+ */
+visible int
+MPViterbiScan(struct istate_s *fe_icm, int *fe_statenum,
+ int *fe_threshold, char *fe_buffer)
+{
+ struct istate_s *icm; /* covariance model, integer log odds form */
+ int statenum; /* length of icm */
+ int N; /* maximum match size */
+ int vpe; /* index of VPE: 0..VPENUM-1 */
+ int y; /* index of state: 0..statenum-1 */
+ int j; /* index of database position */
+ int bpos; /* index in bif arm: 0..N */
+ int sbuff_idx; /* index in sequence buffers */
+ int xdist; /* how far we're xnetting */
+ int vpeconn; /* index of VPE to connect to */
+ int yl, yr; /* connected state indices for a bifurc */
+ int threshold; /* hit reporting threshold */
+ int done; /* flag for if there's any database left */
+ int yidx, ynext; /* indices for states */
+ int extend; /* gap-extend cost for an insert state */
+ double dtime;
+ int v;
+ int sbifx;
+
+ plural int *atmp; /* temporary storage while shoving bif over */
+ plural int *btmp;
+ plural int temp[VPENUM];
+ plural int *prev[VPENUM]; /* beam of scores for previous row */
+ plural int *curr[VPENUM]; /* beam of scores for current row */
+ plural int *tmp[VPENUM]; /* tmp pointers used for swapping prev, curr */
+ plural int ***bif; /* bifurcation "arms", remembering BEGINL diagonals */
+ plural char seqbuffer[BLOCKSIZE]; /* a block of sequence characters */
+ plural char symi[VPENUM]; /* index of symbol i, 0..3 for ACGU */
+ plural char symj; /* index of symbol j, 0..3 for ACGU */
+ plural int score; /* score */
+ plural int d; /* d -- virtual column position, ixproc * VPENUM + vpe */
+ plural int bestconn; /* best insert-left score to connect to on row */
+ plural int bifx; /* plural circularly permuted bifurc arm position */
+ plural int lasti; /* i position of last hit */
+ plural int lastj; /* j position of last hit */
+ plural int lastscore; /* score of last hit */
+ plural int myj; /* what sequence position this row is working on */
+ plural char tmpi; /* temporary storage while shoving symi over */
+ plural int seeme; /* TRUE if we're reporting a hit in this row */
+
+ dpuTimerStart();
+
+ /* Transfer model and threshold from the front end to the ACU
+ * fe_buffer address will be used for blockIn() calls later.
+ */
+ copyIn(fe_statenum, &statenum, sizeof(int));
+ copyIn(fe_threshold, &threshold, sizeof(int));
+
+ if ((icm = (struct istate_s *) malloc (statenum * sizeof(struct istate_s))) == NULL)
+ { fprintf(stderr, "ACU malloc failed"); exit(1); }
+ copyIn(fe_icm, icm, statenum * sizeof(struct istate_s));
+
+
+ /* Allocation of the scoring matrix
+ * Each PE keeps a number of virtual PE's, #defined as VPENUM
+ * each VPE keeps two scoring beams, prev and curr, and one
+ * BEGINL diagonal, bif.
+ */
+ N = nxproc * VPENUM - 1;
+
+ if ((atmp = (plural int *) p_malloc ((N+1) * sizeof(int))) == NULL)
+ { fprintf(stderr, "PE malloc failed, atmp\n"); exit(1); }
+
+ if ((bif = (plural int ***) malloc (VPENUM * sizeof(int **))) == NULL)
+ { fprintf(stderr, "PE malloc failed, bifurc arm, level 1\n"); exit(1); }
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ {
+ if ((prev[vpe] = (plural int *) p_malloc (statenum * sizeof(int))) == NULL ||
+ (curr[vpe] = (plural int *) p_malloc (statenum * sizeof(int))) == NULL)
+ { fprintf(stderr, "PE malloc failed, score beam; vpe %d\n", vpe); exit(1); }
+ if ((bif[vpe] = (plural int **) malloc (statenum * sizeof(int *))) == NULL)
+ { fprintf(stderr, "PE malloc failed, bifurc arm, level 2; vpe %d\n", vpe); exit(1); }
+
+ /* we don't have BEGINL states labeled directly, but we can
+ * find BEGINL indices via their parent BIFURC state
+ */
+ for (y = statenum-1; y >= 0; y--)
+ {
+ bif[vpe][y] = NULL;
+ if (icm[y].statetype == uBIFURC_ST)
+ {
+ yl = icm[y].tmx[0]; /* yl guaranteed > y */
+ if ((bif[vpe][yl] = (plural int *) p_malloc ((N+1) * sizeof(int))) == NULL)
+ { fprintf(stderr, "PE malloc failed, bifurc arm, level 3; vpe %d state %d\n", vpe, yl);
+ exit(1); }
+ }
+ }
+ }
+
+
+ /* Initialize the scoring matrix.
+ * 1) set the whole thing to -Infinity
+ * 2) set the off-diagonal (d = 0): end state gets set to zero,
+ * begin, delete and bifurc's are calculated
+ * the d=0 column (VPE0 in ixproc 0) will not be modified ever again.
+ */
+ /* everything to negative infinity */
+ for (y = 0; y < statenum; y++)
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ curr[vpe][y] = prev[vpe][y] = PROHIBIT;
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ for (y = statenum-1; y >= 0; y--)
+ if (icm[y].statetype == uBIFURC_ST)
+ {
+ yl = icm[y].tmx[0];
+ for (bpos = 0; bpos < N+1; bpos++)
+ bif[vpe][yl][bpos] = PROHIBIT;
+ }
+ /* d=0 column initialized in both prev and curr */
+ for (y = statenum-1; y >= 0; y--)
+ if (ixproc == 0)
+ {
+ switch (icm[y].statetype) {
+ case uEND_ST:
+ curr[0][y] = prev[0][y] = 0;
+ break;
+
+ case uBIFURC_ST:
+ curr[0][y] = prev[0][y] = curr[0][icm[y].tmx[0]] + curr[0][icm[y].tmx[1]];
+ break;
+
+ case uDEL_ST:
+ case uBEGIN_ST:
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ if (curr[0][ynext] != PROHIBIT)
+ curr[0][y] = prev[0][y] = curr[0][ynext] + icm[y].tmx[yidx];
+
+ if (bif[0][y] != NULL) /* is this a BEGINL state? */
+ bif[0][y][0] = curr[0][y];
+ break;
+
+ case uMATP_ST:
+ case uMATL_ST:
+ case uMATR_ST:
+ case uINSL_ST:
+ case uINSR_ST:
+ break;
+
+ default:
+ fprintf(stderr, "init stage: unrecognized state type %d (%s), state %d\n",
+ icm[y].statetype, mp_UstatetypeName(icm[y].statetype), y);
+ exit(1);
+ }
+ }
+
+ /* Initialize coords for each of [nyproc] target sequences
+ */
+ myj = 0;
+
+ /* Initialize scoring
+ */
+ if (ixproc == 0)
+ lastj = -1;
+
+ /* Ready to sweep across the database.
+ * j treats the database as (nyproc) streams of continuous sequence
+ * rather than individual sequences.
+ */
+ for (j = 1, done = FALSE; !done; j++)
+ {
+ seeme = FALSE; /* init: no rows reporting hits yet for this j */
+
+ /* Check if we need to load new blocks of sequence from the
+ * database. If we do, we read a new block into the first
+ * PE of each row. If the read fails, we're done.
+ */
+ if ((sbuff_idx = (j-1) % BLOCKSIZE) == 0)
+ {
+ if (callRequest(NextSequenceBlock, 0))
+ blockIn(fe_buffer, seqbuffer, 0, 0, 1, NYPROC, BLOCKSIZE);
+ else
+ break; /* no more sequence. search terminates */
+ }
+
+
+ /* set up symbol indices symi, symj
+ * - shift symi one to the right
+ * (don't worry about wraparound, we'll overwrite the start)
+ * - xnet copy the new symj all the way thru
+ * - set symi = symj in d = 1 (vpe 1, ixproc 0)
+ */
+ xnetE[1].tmpi = symi[VPENUM-1]; /* inter-PE shift to temp storage */
+ for (vpe = VPENUM-1; vpe > 0; vpe--) /* intra-PE shifts */
+ symi[vpe] = symi[vpe-1];
+ symi[0] = tmpi; /* get vpe=0 from temp storage */
+ if (ixproc == 0) /* take special care with ixproc=0 */
+ {
+ xnetcE[N].symj = seqbuffer[sbuff_idx];
+ symi[1] = symj;
+ }
+
+ /* Swap curr, prev scoring rows
+ * and shove the bif arrays eastwards by one.
+ */
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ { tmp[vpe] = prev[vpe]; prev[vpe] = curr[vpe]; curr[vpe] = tmp[vpe]; }
+
+ for (y = 0; y < statenum; y++)
+ if (icm[y].statetype == uBIFURC_ST)
+ {
+ yl = icm[y].tmx[0];
+
+ if (ixproc != nxproc-1)
+ for (sbifx = 0; sbifx <= N; sbifx++)
+ xnetE[1].atmp[sbifx] = bif[VPENUM-1][yl][sbifx];
+
+ btmp = bif[VPENUM-1][yl];
+ for (vpe = VPENUM-1; vpe > 0; vpe--) /* intra-PE shifts */
+ bif[vpe][yl] = bif[vpe-1][yl];
+ bif[0][yl] = btmp;
+
+ if (ixproc != 0) {
+ btmp = bif[0][yl];
+ bif[0][yl] = atmp; /* get vpe=0 from temp storage */
+ atmp = btmp;
+ }
+ }
+
+ /* Reinitialize the current row -- blank it out to negative infinity.
+ */
+ if (ixproc > 0) /* don't reinit vpe 0 in PE's ixproc == 0 */
+ for (y = 0; y < statenum; y++)
+ curr[0][y] = PROHIBIT;
+ for (y = 0; y < statenum; y++)
+ for (vpe = 1; vpe < VPENUM; vpe++)
+ curr[vpe][y] = PROHIBIT;
+
+
+ /* Check if we need to completely re-initialize a row (new sequence coming)
+ * Reinitialization might go faster by recursive doubling with memcpy's.
+ * This may not be terrific -- anyone who's asking for reinitialization forces
+ * the other processors to idle.
+ */
+ if (symj == 4) /* 4 is special flag, saying 'end of sequence' */
+ {
+ /* do we have a score to report? */
+ if (lastj != -1 && ixproc == 0)
+ {
+ seeme = TRUE; /* sets seeme TRUE for all valid rows */
+ callRequest(DPUReportsHit, 16, &seeme, &lasti, &lastj, &lastscore);
+ lastj = -1;
+ }
+
+ if (ixproc > 0)
+ { /* don't reinit vpe 0 in PE's ixproc == 0 */
+ for (y = 0; y < statenum; y++)
+ curr[0][y] = prev[0][y] = PROHIBIT;
+ for (y = statenum-1; y >= 0; y--)
+ if (icm[y].statetype == uBIFURC_ST)
+ {
+ yl = icm[y].tmx[0];
+ for (bpos = 0; bpos < N+1; bpos++)
+ bif[0][yl][bpos] = PROHIBIT;
+ }
+ }
+
+ for (y = 0; y < statenum; y++)
+ for (vpe = 1; vpe < VPENUM; vpe++)
+ curr[vpe][y] = prev[vpe][y] = PROHIBIT;
+ for (vpe = 1; vpe < VPENUM; vpe++)
+ for (y = statenum-1; y >= 0; y--)
+ if (icm[y].statetype == uBIFURC_ST)
+ {
+ yl = icm[y].tmx[0];
+ for (bpos = 0; bpos < N+1; bpos++)
+ bif[vpe][yl][bpos] = PROHIBIT;
+ }
+ /* reset individual sequence coord counters */
+ myj = 0;
+ }
+
+
+ /* Otherwise, go on to do the main recursion, stepping
+ * through the states from end to root.
+ */
+ else
+ {
+ for (y = statenum-1; y >= 0; y--)
+ switch (icm[y].statetype) {
+
+ case uBEGIN_ST:
+ case uDEL_ST:
+ /* OK to do VPE0 ixproc 0 init row */
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ {
+ if (ixproc * VPENUM + vpe <= myj+1) /* inactivate off-diag PE's */
+ {
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum;
+ ynext++, yidx++)
+ {
+ score = curr[vpe][ynext] + icm[y].tmx[yidx];
+ if (score > curr[vpe][y]) curr[vpe][y] = score;
+ }
+
+ if (bif[vpe][y] != NULL) /* is this a BEGINL state? save score if it is */
+ bif[vpe][y][j % (N+1)] = curr[vpe][y];
+ }
+ }
+ break;
+
+ case uMATP_ST:
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ {
+ if (ixproc * VPENUM + vpe <= myj+1) /* inactivate off-diag PE's */
+ {
+ d = ixproc * VPENUM + vpe;
+ if (VPENUM == 1 && vpe == 0) { xdist = 2; vpeconn = 0; }
+ else if (VPENUM > 1 && vpe < 2) { xdist = 1; vpeconn = vpe + VPENUM - 2; }
+ else { xdist = 0; vpeconn = vpe-2; }
+
+ if (d > 1)
+ {
+ if (xdist > 0)
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum;
+ ynext++, yidx++)
+ {
+ score = xnetW[xdist].prev[vpeconn][ynext] + icm[y].tmx[yidx];
+ if (score > curr[vpe][y]) curr[vpe][y] = score;
+ }
+ else /* else intra PE communication */
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum;
+ ynext++, yidx++)
+ {
+ score = prev[vpeconn][ynext] + icm[y].tmx[yidx];
+ if (score > curr[vpe][y]) curr[vpe][y] = score;
+ }
+ curr[vpe][y] += icm[y].emit[symi[vpe] * ALPHASIZE + symj];
+ }
+ }
+ }
+ break;
+
+
+ case uMATR_ST:
+ case uINSR_ST:
+ /* VPE 0 case is interprocessor communication */
+ if (ixproc > 0 && ixproc * VPENUM <= myj+1) /* inactivate off-diag PE's */
+ {
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = xnetW[1].prev[VPENUM-1][ynext] + icm[y].tmx[yidx];
+ if (score > curr[0][y]) curr[0][y] = score;
+ }
+ curr[0][y] += icm[y].emit[symj];
+ }
+
+ for (vpe = 1; vpe < VPENUM; vpe++) /* others are intraprocessor */
+ {
+ if (ixproc * VPENUM + vpe <= myj+1) /* inactivate off-diag PE's */
+ {
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = prev[vpe-1][ynext] + icm[y].tmx[yidx];
+ if (score > curr[vpe][y]) curr[vpe][y] = score;
+ }
+ curr[vpe][y] += icm[y].emit[symj];
+ }
+ }
+ break;
+
+
+ case uMATL_ST:
+ /* VPE 0 case is interprocessor communication */
+ if (ixproc > 0 && ixproc * VPENUM <= myj+1)
+ {
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = xnetW[1].curr[VPENUM-1][ynext] + icm[y].tmx[yidx];
+ if (score > curr[0][y]) curr[0][y] = score;
+ }
+ curr[0][y] += icm[y].emit[symi[0]];
+ }
+
+ for (vpe = 1; vpe < VPENUM; vpe++) /* others are intraprocessor */
+ {
+ if (ixproc * VPENUM + vpe <= myj+1) /* inactivate off-diag PE's */
+ {
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = curr[vpe-1][ynext] + icm[y].tmx[yidx];
+ if (score > curr[vpe][y]) curr[vpe][y] = score;
+ }
+ curr[vpe][y] += icm[y].emit[symi[vpe]];
+ }
+ }
+ break;
+
+
+ case uINSL_ST:
+ /* INSL states are tricky because the recursion isn't
+ * valid for y == ynext. We calculate for the connections
+ * that are valid first (yidx = 1..connectnum-1;
+ * then we do the y->y connections using a recursive doubling
+ * trick.
+ */
+ /* VPE 0 is interprocessor */
+ if (ixproc > 0 && ixproc * VPENUM <= myj+1)
+ {
+ for (ynext = y + 1, yidx = 1; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = xnetW[1].curr[VPENUM-1][ynext] + icm[y].tmx[yidx];
+ if (score > curr[0][y]) curr[0][y] = score;
+ }
+ curr[0][y] += icm[y].emit[symi[0]];
+ }
+ /* remaining VPEs intraprocessor */
+ for (vpe = 1; vpe < VPENUM; vpe++) /* others are intraprocessor */
+ {
+ if (ixproc * VPENUM + vpe <= myj+1) /* inactivate off-diag PE's */
+ {
+ for (ynext = y + 1, yidx = 1; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = curr[vpe-1][ynext] + icm[y].tmx[yidx];
+ if (score > curr[vpe][y]) curr[vpe][y] = score;
+ }
+ curr[vpe][y] += icm[y].emit[symi[vpe]];
+ }
+ }
+
+ /* Now the recursive doubling trick:
+ */
+ /* step 1. scan VPE's to get best score in a PE */
+ extend = icm[y].tmx[0];
+ for (vpe = 1; vpe < VPENUM; vpe++)
+ if ((score = curr[vpe-1][y] + extend) > curr[vpe][y])
+ curr[vpe][y] = score;
+
+ /* step 2. recursive double to find best connect */
+ bestconn = PROHIBIT;
+ for (xdist = 1; xdist < nxproc; xdist += xdist)
+ if (ixproc > xdist) /* active PEs */
+ if ((score = xnetW[xdist].curr[VPENUM-1][y] + extend * VPENUM * (xdist-1)) > bestconn)
+ bestconn = score;
+
+ /* step 3. scan bestconn back onto vpe's */
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ if (ixproc * VPENUM + vpe <= myj+1 &&
+ (score = bestconn + extend * (vpe+1)) > curr[vpe][y])
+ curr[vpe][y] = score;
+
+ break;
+
+ case uBIFURC_ST:
+ yl = icm[y].tmx[0]; /* deconvolute the hack to get connected indices */
+ yr = icm[y].tmx[1];
+
+#ifdef SRE_REMOVED /* debug */
+ if (myj == 5)
+ printf("bifurc connects to states %d and %d\n", yl, yr);
+#endif
+
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ {
+ for (v = 0; v < VPENUM; v++) temp[v]=curr[v][yr];
+ if (ixproc * VPENUM + vpe <= myj+1) /* inactivate off-diag PE's */
+ {
+ vpeconn = vpe;
+ xdist = 0;
+ bifx = (j - (ixproc * VPENUM + vpe)) % (N+1);
+ while (xdist <= nxproc)
+ {
+ if (xdist == 0)
+ {
+ if ((score = bif[vpe][yl][bifx] + curr[vpeconn][yr]) > curr[vpe][y])
+ curr[vpe][y] = score;
+ }
+ else if (xdist <= ixproc)
+ {
+ all temp[vpeconn]=xnetW[1].temp[vpeconn];
+ score = bif[vpe][yl][bifx] + temp[vpeconn];
+ if (score > curr[vpe][y]) curr[vpe][y] = score;
+ }
+ vpeconn--;
+ if (vpeconn < 0)
+ { vpeconn = VPENUM-1;
+ xdist++;
+ }
+ bifx++;
+ if (bifx > N) bifx = 0;
+ }
+ }
+ }
+ break;
+
+ case uEND_ST:
+ break;
+
+ default:
+ fprintf(stderr, "Bogus statetype %d\n", icm[y].statetype);
+ exit(1);
+
+ } /* end switch over states */
+
+
+
+
+ /* Now we've finished a row j.
+ * Collect best score, and report it if it's over the threshold
+ * Might be faster to check if there is such a score first?
+ */
+ /* step 1. scan vpe's to get best score in a PE */
+ bestconn = curr[0][0];
+ d = ixproc * VPENUM;
+ for (vpe = 1; vpe < VPENUM; vpe++)
+ if (curr[vpe][0] > bestconn)
+ {
+ bestconn = curr[vpe][0];
+ d = ixproc * VPENUM + vpe;
+ }
+ /* step 2. recursive doubling to get best score */
+ for (xdist = 1; xdist < nxproc; xdist += xdist)
+ {
+ if (ixproc + xdist <= nxproc)
+ if (xnetW[xdist].bestconn < bestconn)
+ {
+ xnetW[xdist].bestconn = bestconn;
+ xnetW[xdist].d = d;
+ }
+ }
+
+ /* step 3. best scores now in ixproc 0.
+ check value, report if necessary */
+ if (ixproc == 0 && bestconn > threshold)
+ {
+ /* check for overlap with last hit: */
+ if ((myj - d + 1) > lastj)
+ { /* no overlap. Report old, store new. */
+ if (lastj != -1)
+ {
+ seeme = TRUE;
+ callRequest(DPUReportsHit, 16, &seeme, &lasti, &lastj, &lastscore);
+ }
+ lasti = myj - d + 1;
+ lastj = myj;
+ lastscore = bestconn;
+ }
+ else if (bestconn > lastscore)
+ { /* overlap. compare 'em. keep new if it's better */
+ lasti = myj - d + 1;
+ lastj = myj;
+ lastscore = bestconn;
+ }
+ }
+
+
+#ifdef SRE_REMOVED
+ mp_print_mx(curr, icm, statenum, symi, symj); /* debugging */
+ printf("myj on row 0 is %d (%c)\n\n", proc[0][0].myj, NucSymbol(proc[0][0].symj));
+#endif
+
+
+ myj++; /* bump the individual sequence coord counters */
+
+ } /* end "else we're not reinitializing, do main recursion stuff" */
+ } /* end loop over database position j */
+
+
+/* mp_print_icm(stderr, icm, statenum); */ /* debugging */
+
+ /* Cleanup and return
+ */
+ for (vpe = 0; vpe < VPENUM; vpe++)
+ {
+ p_free(prev[vpe]);
+ p_free(curr[vpe]);
+ for (y = statenum-1; y >= 0; y--)
+ if (icm[y].statetype == uBIFURC_ST)
+ p_free(bif[vpe][y]);
+ p_free(bif[vpe]);
+ }
+ free(icm);
+ dtime=dpuTimerElapsed();
+ printf("time for MPViterbiScan on DPU is %g \n",dtime);
+ return 1;
+}
+
+
+
+/* Function: mp_print_icm()
+ *
+ * Purpose: Print an integer-version CM, as used by the alignment
+ * algorithms. MPL version of a function in debug.c.
+ */
+static void
+mp_print_icm(FILE *fp, struct istate_s *icm, int nstates)
+{
+ int y;
+ int x;
+
+ for (y = 0; y < nstates; y++)
+ {
+ fprintf(fp, "node %d state %d (%s)\n", icm[y].nodeidx,
+ y, mp_UstatetypeName(icm[y].statetype));
+ fprintf(fp, " connectnum %d offset %d (connections start at %d)\n",
+ icm[y].connectnum, icm[y].offset, y + icm[y].offset);
+ fprintf(fp, " Transitions: ");
+ for (x = 0; x < icm[y].connectnum; x++)
+ fprintf(fp, "%d ", icm[y].tmx[x]);
+ fputs("\n", fp);
+
+ fprintf(fp, " Emissions: ");
+ switch (icm[y].statetype)
+ {
+ case uMATP_ST:
+ for (x = 0; x < ALPHASIZE * ALPHASIZE; x++)
+ fprintf(fp, "%d ", icm[y].emit[x]);
+ fputs("\n", fp);
+ break;
+
+ case uMATR_ST:
+ case uMATL_ST:
+ case uINSR_ST:
+ case uINSL_ST:
+ for (x = 0; x < ALPHASIZE; x++)
+ fprintf(fp, "%d ", icm[y].emit[x]);
+ fputs("\n", fp);
+ break;
+
+ default:
+ fputs("NONE\n", fp);
+ break;
+ }
+ }
+}
+
+static char *
+mp_UstatetypeName(int ustatetype)
+{
+ switch (ustatetype) {
+ case uDEL_ST: return "uDEL_ST";
+ case uMATP_ST: return "uMATP_ST";
+ case uMATL_ST: return "uMATL_ST";
+ case uMATR_ST: return "uMATR_ST";
+ case uINSL_ST: return "uINSL_ST";
+ case uINSR_ST: return "uINSR_ST";
+ case uBEGIN_ST: return "uBEGIN_ST";
+ case uEND_ST: return "uEND_ST";
+ case uBIFURC_ST: return "uBIFURC_ST";
+ default: return "Unknown state type";
+ }
+}
+
+static char *
+mp_StatetypeName(int statetype)
+{
+ switch (statetype) {
+ case DEL_ST: return "DEL/BEG/BIF/END";
+ case MATP_ST: return "MATP_ST";
+ case MATL_ST: return "MATL_ST";
+ case MATR_ST: return "MATR_ST";
+ case INSL_ST: return "INSL_ST";
+ case INSR_ST: return "INSR_ST";
+ default: return "Unknown State";
+ }
+}
+
+static char *
+mp_NodetypeName(int nodetype)
+{
+ switch (nodetype) {
+ case BIFURC_NODE: return "BIF/END NODE";
+ case MATP_NODE: return "MATP_NODE";
+ case MATL_NODE: return "MATL_NODE";
+ case MATR_NODE: return "MATR_NODE";
+ case BEGINL_NODE: return "BEGINL_NODE";
+ case BEGINR_NODE: return "BEGINR_NODE";
+ case ROOT_NODE: return "ROOT_NODE";
+ default: return "Unknown Node";
+ }
+}
+
+
+static char
+NucSymbol(int symidx)
+{
+ switch (symidx) {
+ case 0: return 'A';
+ case 1: return 'C';
+ case 2: return 'G';
+ case 3: return 'U';
+ case 4: return '*';
+ default: return '?';
+ }
+}
+
+static void
+mp_print_mx(plural int *curr[VPENUM],
+ struct istate_s *icm, int statenum,
+ plural char symi[VPENUM], plural char symj)
+{
+ int d, vpe, xpr, y;
+
+ /* Print out header
+ */
+ printf("%13s ", "");
+ for (d = 0; d < MAXDEBUGWIDTH; d++)
+ printf(" %2d ", d);
+ printf("\n%13s ", "");
+ for (d = 0; d < MAXDEBUGWIDTH; d++)
+ {
+ xpr = d / VPENUM;
+ vpe = d % VPENUM;
+ printf(" %c ", NucSymbol(proc[0][xpr].symi[vpe]));
+ }
+ printf("\n");
+
+ /* Print out curr for all states
+ */
+ printf("\n");
+ for (y = 0; y < statenum; y++)
+ {
+ printf("%2d %10s ", y, mp_UstatetypeName(icm[y].statetype));
+ for (d = 0; d < MAXDEBUGWIDTH; d++)
+ {
+ xpr = d / VPENUM;
+ vpe = d % VPENUM;
+ printf("%10d ", proc[0][xpr].curr[vpe][y]);
+ }
+ printf("\n");
+ }
+
+}
+
+
diff --git a/mpcovels_main.c b/mpcovels_main.c
new file mode 100644
index 0000000..c6b1602
--- /dev/null
+++ b/mpcovels_main.c
@@ -0,0 +1,366 @@
+/* mpcovels_main.c
+ * Sun Aug 21 12:25:52 1994
+ *
+ * main() for MasPar version of covels
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <math.h>
+
+#ifdef NEED_GETOPTH
+#include <getopt.h>
+#endif
+
+#include "structs.h"
+#include "funcs.h"
+#include "squid.h"
+#include "version.h"
+#include "maspar.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define OPTIONS "cg:ho:t:A:D:"
+
+static char usage[] = "\
+Usage: mpcovels [-options] <CM file> <seqfile>\n\
+where options are:\n\
+ -c : do complementary strand too\n\
+ -g <fracGC> : set background expected GC content (0.5 default)\n\
+ -h : print short help and version info\n\
+ -o <file> : save hits in <file>\n\
+ -t <thresh> : set score reporting threshold\n\
+ CRASH PROTECTION OPTIONS:\n\
+ -A <filename> : maintain file of names of active seqs\n\
+ -D <filename> : save names of finished seqs here\n";
+
+static char banner[] = "mpcovels - scan sequences for matches to an RNA covariance model";
+
+
+extern int MPViterbiScan(struct istate_s *fe_icm, int *fe_statenum,
+ int *fe_threshold, char *fe_buffer);
+
+/* Because we do some back-and-forth communication between the
+ * DPU and the front end, I need to make the following variables
+ * available externally to the functions that the DPU calls back to.
+ */
+static SQFILE *fp; /* open sequence file */
+static int format; /* format of sequence file */
+static char **seq; /* array of NYPROC sequences */
+static SQINFO *sqinfo; /* array of NYPROC sequence info structures */
+static char **sptr; /* ptrs into NYPROC active sequences */
+static char *buffer; /* NYPROC blocks of processed seq to go to PE's */
+static int moreseqs; /* TRUE if there's still more seqs in the file */
+static int morebases; /* TRUE if there's still more bases in **seq */
+static int ithresh; /* scaled integer score threshold */
+static FILE *ofp; /* output file for scores */
+static int do_revcomp; /* TRUE to do reverse complements too */
+static int inrev[NYPROC]; /* TRUE if we're doing a revcomp in this row now */
+static char *activefile; /* name of active seq file to save to, or NULL */
+static FILE *donefp; /* open finished seq name file, or NULL */
+
+
+int
+main(int argc, char **argv)
+{
+ char *seqfile; /* sequence file */
+ char *cmfile; /* file containing covariance model */
+ struct cm_s *cm; /* model */
+ struct istate_s *icm; /* integer log-odds model */
+ int statenum; /* number of states in icm */
+ int y; /* counter for rows */
+ double rfreq[ALPHASIZE]; /* expected background symbol frequencies */
+
+ char *outfile; /* save file for scores */
+ char *donefile; /* save file for finished seq names */
+ float thresh; /* threshold score for reporting a match */
+ double gcfrac; /* fraction GC expected background */
+
+ int optc;
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+#ifdef MEMDEBUG
+ unsigned long histid1, histid2, orig_size, curr_size;
+#endif
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ thresh = 0.0;
+ do_revcomp = FALSE;
+ outfile = NULL;
+ activefile = NULL;
+ donefile = NULL;
+ gcfrac = 0.5;
+
+ while ((optc = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optc) {
+
+ case 'c': do_revcomp = TRUE; break;
+ case 'g': gcfrac = (double) atof(optarg);break;
+ case 'o': outfile = optarg; break;
+ case 't': thresh = (float) atof(optarg); break;
+
+ case 'A': activefile = optarg; break;
+ case 'D': donefile = optarg; break;
+
+ case 'h':
+ printf("%s\n version %s (%s)\n%s\n",
+ banner, RELEASE, RELEASEDATE, usage);
+ exit(0);
+
+ default: Die("unrecognized option %c\n", optc);
+ }
+
+ if (argc - optind != 2)
+ Die("%s\n", usage);
+
+ cmfile = argv[optind]; optind++;
+ seqfile = argv[optind];
+
+ /* The random model probabilities
+ */
+ rfreq[1] = rfreq[2] = gcfrac / 2.0;
+ rfreq[0] = rfreq[3] = (1.0 - gcfrac) / 2.0;
+
+ ofp = stdout;
+ if (outfile != NULL && (ofp = fopen(outfile, "w")) == NULL)
+ Die("Failed to open output file %s", outfile);
+
+ donefp = NULL;
+ if (donefile != NULL && (donefp = fopen(donefile, "w")) == NULL)
+ Die("Failed to open finished sequence names file %s", donefile);
+
+ /***********************************************
+ * Print banner
+ ***********************************************/
+
+ puts(banner);
+ printf(" version %s, %s\n\n", RELEASE, RELEASEDATE);
+
+ printf("---------------------------------------------------\n");
+ printf("Database to search/score: %s\n", seqfile);
+ printf("Model: %s\n", cmfile);
+ printf("Reporting threshold: %.2f\n", thresh);
+ if (outfile != NULL)
+ printf("Scores saved to file: %s\n", outfile);
+ printf("Reverse complement too? %s\n", do_revcomp ? "yes" : "no");
+ printf("---------------------------------------------------\n");
+ puts("");
+
+ /***********************************************
+ * Get the model, open the sequence database
+ ***********************************************/
+
+ if (! ReadCM(cmfile, &cm))
+ Die("Failed to read model from file %s", cmfile);
+
+ if (! RearrangeCM(cm, rfreq, &icm, &statenum))
+ Die("Failed to convert CM to integer log-odds form\n");
+
+ if (! SeqfileFormat(seqfile, &format, NULL))
+ switch (squid_errno) {
+ case SQERR_NOFILE: Die("Sequence file %s could not be opened for reading", seqfile);
+ case SQERR_FORMAT:
+ default: Die("Failed to determine format of sequence file %s", seqfile);
+ }
+
+ if ((fp = SeqfileOpen(seqfile, format, NULL)) == NULL)
+ Die("Failed to open sequence file %s for reading", seqfile);
+
+ ithresh = (int) (thresh * INTPRECISION);
+
+ /* Load the first set of sequences
+ */
+ if ((seq = (char **) malloc (sizeof(char *) * NYPROC)) == NULL ||
+ (sqinfo= (SQINFO *) malloc (sizeof(SQINFO) * NYPROC)) == NULL ||
+ (sptr = (char **) malloc (sizeof(char *) * NYPROC)) == NULL ||
+ (buffer= (char *) malloc (sizeof(char) * (NYPROC * BLOCKSIZE))) == NULL)
+ Die("malloc failed");
+
+ moreseqs = TRUE;
+ morebases = TRUE;
+ for (y = 0; y < NYPROC; y++)
+ {
+ if (! moreseqs || ! ReadSeq(fp, format, &seq[y], &(sqinfo[y])))
+ { moreseqs = FALSE; seq[y] = NULL; }
+ if (seq[y] != NULL) s2upper(seq[y]);
+ sptr[y] = seq[y];
+ inrev[y] = FALSE;
+ }
+
+ /* Call the parallel scanning function.
+ * It will load the model up, then immediately call us
+ * back and ask us to prepare the first block of sequence data.
+ * We tell it where the sequence data is by passing the address of buffer.
+ */
+ callRequest(MPViterbiScan, 16, icm, &statenum, &ithresh, buffer);
+
+ /* Cleanup and exit
+ */
+ free(seq);
+ free(sqinfo);
+ free(sptr);
+ free(buffer);
+ SeqfileClose(fp);
+ fclose(ofp);
+ if (donefp != NULL) fclose(donefp);
+
+ return 0;
+}
+
+
+
+/* Function: NextSequenceBlock()
+ *
+ * Purpose: Prepare a sequence buffer for the DPU.
+ * The buffer consists of NYPROC blocks of size BLOCKSIZE.
+ * The values are 0,1,2,3 for A,C,G,U, or 4 for no seq.
+ * If we return 1, the DPU blockIn()'s this buffer.
+ * If we return 0, the DPU concludes that the search is complete.
+ *
+ * Note:
+ * There's some intricacy below, so be careful what you muck with.
+ * These next two functions are written carefully to make sure that
+ * sqinfo[y] is still valid for the hits that are reported to
+ * DPUReportsHit(). This has the following consequences:
+ * 1) NextSequenceBlock() must make sure that there's only one
+ * sequence in a BLOCKSIZE. It must wait for the next block
+ * to start sending a new sequence.
+ * 2) Moreover, it's got to make sure that the terminating '\0'
+ * was part of the block -- so the DPU can clean up and report
+ * the final hit on that sequence *before* we free it and its
+ * info. Hence, the delayed FreeSequence() call here.
+ *
+ * This results in some inefficiency, since we can't start new sequences
+ * until the next block.
+ */
+int
+NextSequenceBlock(void)
+{
+ int changed; /* TRUE if active sequence list changed */
+ int y, pos;
+ char *rev;
+
+ /* Load new sequences if we have to.
+ */
+ morebases = FALSE;
+ changed = FALSE;
+ for (y = 0; y < NYPROC; y++)
+ {
+ /* where we have a seq, but now we're
+ * done with it...
+ * free the old seq, load a new one */
+ if (seq[y] != NULL && sptr[y] == NULL)
+ {
+ if (do_revcomp && !inrev[y])
+ {
+ if ((rev = (char *) malloc (sizeof(char) * (sqinfo[y].len + 1))) == NULL)
+ Die("malloc failed");
+ if (revcomp(rev, seq[y]) == NULL)
+ Die("revcomp failed");
+ free(seq[y]);
+ seq[y] = sptr[y] = rev;
+ inrev[y] = TRUE;
+ changed = TRUE;
+ }
+ else
+ {
+ if (donefp != NULL) /* save name to finished seq file */
+ { fprintf(donefp, "%s\n", sqinfo[y].name); fflush(donefp); }
+ FreeSequence(seq[y], &sqinfo[y]);
+ if (! moreseqs || ! ReadSeq(fp, format, &seq[y], &sqinfo[y]))
+ { moreseqs = FALSE; seq[y] = NULL; }
+ if (seq[y] != NULL) s2upper(seq[y]);
+ sptr[y] = seq[y];
+ inrev[y] = FALSE;
+ changed = TRUE;
+ }
+ }
+ if (seq[y] != NULL) morebases = TRUE;
+ }
+ if (morebases == FALSE) return 0;
+
+ /* Construct a new block of sequence data for the DPU to blockIn().
+ */
+ for (y = 0; y < NYPROC; y++)
+ {
+ for (pos = 0; pos < BLOCKSIZE; pos++)
+ {
+ if (seq[y] == NULL || sptr[y] == NULL)
+ buffer[y * BLOCKSIZE + pos] = 4;
+ else if (*(sptr[y]) == '\0')
+ {
+ buffer[y * BLOCKSIZE + pos] = 4;
+ sptr[y] = NULL; /* signal that we're done w/ this seq */
+ }
+ else
+ {
+ buffer[y * BLOCKSIZE + pos] = SymbolIndex(*(sptr[y]));
+ sptr[y] ++;
+ }
+ }
+ }
+ /* crash protection: maintain list of active names */
+ if (changed == TRUE && activefile != NULL)
+ {
+ FILE *actfp;
+
+ if ((actfp = fopen(activefile, "w")) == NULL)
+ Die("failed to open active sequence name list file %s", activefile);
+ for (y = 0; y < NYPROC; y++)
+ fprintf(actfp, "%s\n", sqinfo[y].name);
+ fclose(actfp);
+ }
+
+ return 1;
+}
+
+
+/* Function: DPUReportsHit()
+ *
+ * Purpose: The DPU is reporting one or more hits (up to NYPROC).
+ * The easiest thing to do is to blockIn() from *all*
+ * NYPROC rows, and find what rows actually have real
+ * hits here.
+ */
+int
+DPUReportsHit(int *dpu_seeme, int *dpu_i, int *dpu_j, int *dpu_score)
+{
+ int seeme[NYPROC]; /* TRUE if we're reporting in this row */
+ int start[NYPROC];
+ int end[NYPROC];
+ int score[NYPROC];
+ int y;
+
+ blockIn(dpu_seeme, seeme, 0, 0, 1, NYPROC, sizeof(int));
+ blockIn(dpu_i, start, 0, 0, 1, NYPROC, sizeof(int));
+ blockIn(dpu_j, end, 0, 0, 1, NYPROC, sizeof(int));
+ blockIn(dpu_score, score, 0, 0, 1, NYPROC, sizeof(int));
+
+ for (y = 0; y < NYPROC; y++)
+ if (seeme[y])
+ {
+ if (inrev[y])
+ fprintf(ofp, "%6.2f %5d %5d : %s %s\n",
+ (float) score[y] / INTPRECISION,
+ sqinfo[y].len - start[y], sqinfo[y].len - end[y],
+ sqinfo[y].name,
+ (sqinfo[y].flags & SQINFO_DESC) ? sqinfo[y].desc : "");
+ else
+ fprintf(ofp, "%6.2f %5d %5d : %s %s\n",
+ (float) score[y] / INTPRECISION,
+ start[y] + 1, end[y] + 1,
+ sqinfo[y].name,
+ (sqinfo[y].flags & SQINFO_DESC) ? sqinfo[y].desc : "");
+ fflush(ofp);
+ }
+ return 1;
+}
diff --git a/mpviterbi.m b/mpviterbi.m
new file mode 100644
index 0000000..5e413da
--- /dev/null
+++ b/mpviterbi.m
@@ -0,0 +1,405 @@
+/* mpviterbi.m
+ * MasPar MPL code for parallelized covariance model alignment algorithm
+ * Prototype started Thu Jul 7 12:04:04 1994, SRE
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <mpl.h>
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+/* Debugging functions.
+ */
+static void mp_print_icm(FILE *fp, struct istate_s *icm, int nstates);
+static void mp_print_mx(FILE *fp, struct istate_s *icm, int statenum,
+ char *seq, int N, plural int *mx);
+static char *mp_UstatetypeName(int ustatetype);
+static char *mp_StatetypeName(int statetype);
+static char *mp_NodetypeName(int nodetype);
+
+
+/* Function: MPViterbiAlign()
+ *
+ * Purpose: MasPar MPL parallelized version of ViterbiAlign().
+ *
+ * Align a covariance model to a sequence. Return the alignment
+ * score and a traceback.
+ *
+ * Args: fe_icm: ptr to the model (on front end)
+ * fe_statenum: ptr to length of model (on front end)
+ * fe_seq: ptr to sequence (on front end)
+ * fe_N: ptr to length of sequence (on front end)
+ * fe_score: RETURN: ptr to score of alignment
+ * fe_trace: RETURN: ptr to traceback
+ *
+ * Return: nothing (I think this is proper for an MPL subroutine)
+ */
+visible int
+MPViterbiAlign(struct istate_s *fe_icm, int *fe_statenum, char *fe_seq,
+ int *fe_N, double *fe_score, struct trace_s *fe_trace)
+{
+ struct istate_s *icm; /* covariance model, integer log odds form */
+ int statenum; /* length of icm */
+ char *seq; /* sequence to align to */
+ int N; /* length of seq, 1..N */
+ plural int score; /* temp variable for holding calc'ed scores */
+ plural int *mx; /* 3D scoring matrix, distributed across PE's */
+ plural int *bscores; /* tmp array used for bifurc calculations, 0..N */
+ plural int i,j; /* each PE has its own base pair i,j */
+ plural int symi, symj; /* each PE keeps an index for the base symbol at i,j */
+ int y, ynext, yidx; /* indices for states */
+ int yl, yr; /* state indices for bifurc children */
+ int hdist, vdist; /* distances from i,j for bifurc calculation */
+ int extend; /* length of insert extension */
+
+ double alignscore; /* calculated alignment score */
+
+ /* Transfer data from the front end to the ACU
+ */
+ copyIn(fe_statenum, &statenum, sizeof(int));
+ copyIn(fe_N, &N, sizeof(int));
+ if ((icm = (struct istate_s *) malloc (statenum * sizeof(struct istate_s))) == NULL ||
+ (seq = (char *) malloc ((N+2) * sizeof(char))) == NULL)
+ { fprintf(stderr, "malloc failed"); exit(1); }
+ copyIn(fe_icm, icm, statenum * sizeof(struct istate_s));
+ copyIn(fe_seq, seq, (N+2) * sizeof(char)); /* (N+1) picks up the trailing '\0' */
+
+ /* Allocation of the scoring matrix
+ * Each PE keeps a "beam" of 0..statenum-1 scores.
+ */
+ i = ixproc;
+ j = iyproc;
+ if (i <= N+1 && j <= N)
+ {
+ mx = (plural int *) p_malloc (statenum * sizeof(int));
+ bscores = (plural int *) p_malloc ((N+1) * sizeof(int));
+ }
+
+ /* Set up the sequence in the PE's
+ */
+ if (i > 0 && j > 0 && i <= N+1 && j <= N)
+ {
+ switch (seq[i]) {
+ case 'A': symi = 0; break;
+ case 'C': symi = 1; break;
+ case 'G': symi = 2; break;
+ case 'T': symi = 3; break;
+ case 'U': symi = 3; break;
+ default: symi = 0; break; /* sloppy garbage! */
+ }
+ switch (seq[j]) {
+ case 'A': symj = 0; break;
+ case 'C': symj = 1; break;
+ case 'G': symj = 2; break;
+ case 'T': symj = 3; break;
+ case 'U': symj = 3; break;
+ default: symj = 0; break; /* sloppy garbage! */
+ }
+ }
+
+ /* Initialize the scoring matrix.
+ * 1) set the whole thing to -Infinity
+ * 2) set the off-diagonal (i=j+1): end state gets set to zero,
+ * begin, delete and bifurc's are calculated
+ */
+ if (i <= N+1 && j <= N)
+ for (y = 0; y < statenum; y++)
+ mx[y] = -99999999;
+
+ for (y = statenum-1; y >= 0; y--)
+ if (i == j+1)
+ {
+ switch (icm[y].statetype) {
+ case uEND_ST:
+ mx[y] = 0;
+ break;
+
+ case uBIFURC_ST:
+ mx[y] = mx[icm[y].tmx[0]] + mx[icm[y].tmx[1]];
+ break;
+
+ case uDEL_ST:
+ case uBEGIN_ST:
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ if (mx[ynext] != -99999999)
+ mx[y] = mx[ynext] + icm[y].tmx[yidx];
+ break;
+
+ case uMATP_ST:
+ case uMATL_ST:
+ case uMATR_ST:
+ case uINSL_ST:
+ case uINSR_ST:
+ break;
+
+ default:
+ fprintf(stderr, "init stage: unrecognized state type %d\n", icm[y].statetype);
+ exit(1);
+ }
+ }
+
+ /* Recursion
+ */
+ if (j > 0 && j <= N && i <= j)
+ for (y = statenum-1; y >= 0; y--)
+ {
+ switch (icm[y].statetype) {
+ case uBEGIN_ST:
+ case uDEL_ST:
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = mx[ynext] + icm[y].tmx[yidx];
+ if (score > mx[y]) mx[y] = score;
+ }
+ break;
+
+ case uMATP_ST:
+ if (j > i)
+ {
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = xnetNE[1].mx[ynext] + icm[y].tmx[yidx];
+ if (score > mx[y]) mx[y] = score;
+ }
+ mx[y] += icm[y].emit[symi * ALPHASIZE + symj];
+ }
+ break;
+
+ case uMATR_ST:
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = xnetN[1].mx[ynext] + icm[y].tmx[yidx];
+ if (score > mx[y]) mx[y] = score;
+ }
+ mx[y] += icm[y].emit[symj];
+ break;
+
+ case uMATL_ST:
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = xnetE[1].mx[ynext] + icm[y].tmx[yidx];
+ if (score > mx[y]) mx[y] = score;
+ }
+ mx[y] += icm[y].emit[symi];
+ break;
+
+ case uINSR_ST:
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = xnetN[1].mx[ynext] + icm[y].tmx[yidx];
+ if (score > mx[y]) mx[y] = score;
+ }
+ /* that only gave us insert-opens. Now check all
+ lengths of insert-extend */
+ for (extend = 1; extend < N; extend++)
+
+/* if (j - extend > 0) This is probably a bug. Thu Aug 4 09:52:15 1994 */
+ if (i + extend <= j) /* This is probably the right fix. */
+ {
+ score = xnetN[extend].mx[y] + extend * icm[y].tmx[0];
+ if (score > mx[y]) mx[y] = score;
+ }
+ mx[y] += icm[y].emit[symi];
+
+
+ break;
+
+ case uINSL_ST:
+ for (ynext = y + icm[y].offset, yidx = 0; yidx < icm[y].connectnum; ynext++, yidx++)
+ {
+ score = xnetE[1].mx[ynext] + icm[y].tmx[yidx];
+ if (score > mx[y]) mx[y] = score;
+ }
+ /* that only gave us insert-opens. Now check all
+ lengths of insert-extend */
+ for (extend = 1; extend < N; extend++)
+ if (i + extend <= j)
+ {
+ score = xnetE[extend].mx[y] + extend * icm[y].tmx[0];
+ if (score > mx[y]) mx[y] = score;
+ }
+ mx[y] += icm[y].emit[symi];
+ break;
+
+ case uBIFURC_ST:
+ yl = icm[y].tmx[0];
+ yr = icm[y].tmx[1];
+ /* First: suck in the horizontal row */
+ for (hdist = 0; hdist <= N; hdist++)
+ if (i + hdist <= j+1) /* choose active PE's */
+ bscores[hdist] = xnetE[hdist].mx[yr];
+
+ /* Second: suck in vertical row, backwards;
+ indices are more convoluted */
+ for (vdist = N; vdist >= 0; vdist--)
+ if (j-vdist >= i-1) /* choose active PE's */
+ {
+ score = bscores[j - vdist - i + 1] + xnetN[vdist].mx[yl];
+ if (score > mx[y]) mx[y] = score;
+ }
+ break;
+
+ case uEND_ST:
+ break;
+
+ default:
+ fprintf(stderr, "Bogus statetype %d\n", icm[y].statetype);
+ exit(1);
+ }
+ }
+
+ /* Uncomment these next two lines to get debugging output.
+ */
+/* mp_print_icm(stderr, icm, statenum); */
+/* mp_print_mx(stderr, icm, statenum, seq, N, mx); */
+
+
+ /* Cleanup and return
+ */
+ alignscore = (double) proc[N][1].mx[0] / INTPRECISION;
+ copyOut(&alignscore, fe_score, sizeof(double));
+ p_free(mx);
+ p_free(bscores);
+ free(icm);
+ free(seq);
+ return 1;
+}
+
+
+
+/* Function: mp_print_icm()
+ *
+ * Purpose: Print an integer-version CM, as used by the alignment
+ * algorithms. MPL version of a function in debug.c.
+ */
+static void
+mp_print_icm(FILE *fp, struct istate_s *icm, int nstates)
+{
+ int y;
+ int x;
+
+ for (y = 0; y < nstates; y++)
+ {
+ fprintf(fp, "node %d state %d (%s)\n", icm[y].nodeidx,
+ y, mp_UstatetypeName(icm[y].statetype));
+ fprintf(fp, " connectnum %d offset %d (connections start at %d)\n",
+ icm[y].connectnum, icm[y].offset, y + icm[y].offset);
+ fprintf(fp, " Transitions: ");
+ for (x = 0; x < icm[y].connectnum; x++)
+ fprintf(fp, "%d ", icm[y].tmx[x]);
+ fputs("\n", fp);
+
+ fprintf(fp, " Emissions: ");
+ switch (icm[y].statetype)
+ {
+ case uMATP_ST:
+ for (x = 0; x < ALPHASIZE * ALPHASIZE; x++)
+ fprintf(fp, "%d ", icm[y].emit[x]);
+ fputs("\n", fp);
+ break;
+
+ case uMATR_ST:
+ case uMATL_ST:
+ case uINSR_ST:
+ case uINSL_ST:
+ for (x = 0; x < ALPHASIZE; x++)
+ fprintf(fp, "%d ", icm[y].emit[x]);
+ fputs("\n", fp);
+ break;
+
+ default:
+ fputs("NONE\n", fp);
+ break;
+ }
+ }
+}
+
+/* Function: mp_print_mx()
+ *
+ * Purpose: Debugging: print out a (small) 3D scoring matrix.
+ *
+ * Args: fp - usually stdout or stderr
+ * seq - 1..N sequence
+ * mx - scoring matrix on the PE's
+ */
+static void
+mp_print_mx(FILE *fp, struct istate_s *icm, int statenum,
+ char *seq, int N, plural int *mx)
+{
+
+ int i, j, y; /* indices for three dimensions */
+
+ for (y = 0; y < statenum; y++)
+ {
+ fprintf(fp, "### Matrix for state %d, type %d (%s), from node %d\n",
+ y, icm[y].statetype, mp_UstatetypeName(icm[y].statetype), icm[y].nodeidx);
+ fprintf(fp, " ");
+ for (i = 1; i <= N+1; i++)
+ fprintf(fp, "%6d ", i);
+ fprintf(fp, "\n");
+
+ for (j = 0; j <= N; j++)
+ {
+ fprintf(fp, "%c %3d ", (j > 0) ? seq[j] : '*', j);
+ for (i = 1; i <= j+1; i++)
+ {
+ if (proc[j][i].mx[y] == -99999999)
+ fprintf(fp, "%6s ", "-INF");
+ else
+ fprintf(fp, "%6d ", proc[j][i].mx[y]);
+ }
+ fprintf(fp, "\n");
+ }
+ fprintf(fp, "\n\n");
+ }
+}
+
+static char *
+mp_UstatetypeName(int ustatetype)
+{
+ switch (ustatetype) {
+ case uDEL_ST: return "uDEL_ST";
+ case uMATP_ST: return "uMATP_ST";
+ case uMATL_ST: return "uMATL_ST";
+ case uMATR_ST: return "uMATR_ST";
+ case uINSL_ST: return "uINSL_ST";
+ case uINSR_ST: return "uINSR_ST";
+ case uBEGIN_ST: return "uBEGIN_ST";
+ case uEND_ST: return "uEND_ST";
+ case uBIFURC_ST: return "uBIFURC_ST";
+ default: return "Unknown state type";
+ }
+}
+
+static char *
+mp_StatetypeName(int statetype)
+{
+ switch (statetype) {
+ case DEL_ST: return "DEL/BEG/BIF/END";
+ case MATP_ST: return "MATP_ST";
+ case MATL_ST: return "MATL_ST";
+ case MATR_ST: return "MATR_ST";
+ case INSL_ST: return "INSL_ST";
+ case INSR_ST: return "INSR_ST";
+ default: return "Unknown State";
+ }
+}
+
+static char *
+mp_NodetypeName(int nodetype)
+{
+ switch (nodetype) {
+ case BIFURC_NODE: return "BIF/END NODE";
+ case MATP_NODE: return "MATP_NODE";
+ case MATL_NODE: return "MATL_NODE";
+ case MATR_NODE: return "MATR_NODE";
+ case BEGINL_NODE: return "BEGINL_NODE";
+ case BEGINR_NODE: return "BEGINR_NODE";
+ case ROOT_NODE: return "ROOT_NODE";
+ default: return "Unknown Node";
+ }
+}
diff --git a/msf.c b/msf.c
new file mode 100644
index 0000000..4727c24
--- /dev/null
+++ b/msf.c
@@ -0,0 +1,164 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* msf.c
+ * SRE, Sun Jul 11 16:17:32 1993
+ *
+ * Export of GCG MSF multiple sequence alignment
+ * formatted files.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+/* Function: WriteMSF()
+ *
+ * Purpose: Write aseqs, names, weights to an open fp,
+ * in GCG MSF format. The alignment must
+ * be flushed (all aseqs the same length, padded
+ * with gaps)
+ *
+ * Returns 1 on success. Returns 0 on failure, and sets
+ * squid_errno to indicate the cause.
+ */
+int
+WriteMSF(FILE *fp, /* open fp for writing */
+ char **aseqs, /* aligned sequences */
+ int num,
+ struct aliinfo_s *ainfo)
+{
+ int still_going; /* True if writing another block */
+ int idx; /* counter for sequences */
+ int pos; /* position counter */
+ int namelen; /* maximum name length used */
+ int len; /* tmp variable for name lengths */
+ char buffer[51]; /* buffer for writing seq */
+ char **sqptr; /* ptrs into each sequence */
+ int charcount; /* num. symbols we're writing */
+ float weight;
+
+ /* allocate seq pointers that we'll
+ move across each sequence */
+ if ((sqptr = (char **) malloc (num * sizeof(char *))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+
+ /* set sqptrs to start of each seq */
+ for (idx = 0; idx < num; idx++)
+ sqptr[idx] = aseqs[idx];
+ /* calculate max namelen used */
+ namelen = 0;
+ for (idx = 0; idx < num; idx++)
+ if ((len = strlen(ainfo->sqinfo[idx].name)) > namelen)
+ namelen = len;
+
+ /*****************************************************
+ * Write the title line
+ *****************************************************/
+ fprintf(fp, "\n");
+ /* ack! we're writing bullshit here */
+ fprintf(fp, " MSF: 000 Type: X Check: 0000 ..\n");
+ fprintf(fp, "\n");
+
+ /*****************************************************
+ * Write the names
+ *****************************************************/
+
+ for (idx = 0; idx < num; idx++)
+ {
+ weight = 1.0;
+ if (ainfo->sqinfo[idx].flags & SQINFO_WGT)
+ weight = ainfo->sqinfo[idx].weight;
+ fprintf(fp, " Name: %-*.*s Len: %5d Check: %5d Weight: %.4f\n",
+ namelen, namelen,
+ ainfo->sqinfo[idx].name,
+ ainfo->alen,
+ GCGchecksum(aseqs[idx], ainfo->alen),
+ weight);
+ }
+ fprintf(fp, "\n");
+ fprintf(fp, "//\n");
+ fprintf(fp, "\n");
+
+ /*****************************************************
+ * Write the sequences
+ *****************************************************/
+
+ still_going = 1;
+ while (still_going)
+ {
+ still_going = 0;
+ for (idx = 0; idx < num; idx++)
+ {
+ fprintf(fp, "%-*.*s ", namelen, namelen,
+ ainfo->sqinfo[idx].name);
+
+ /* get next line's worth of 50 from seq */
+ strncpy(buffer, sqptr[idx], 50);
+ buffer[50] = '\0';
+ charcount = strlen(buffer);
+
+ /* is there still more to go? */
+ if (charcount == 50 && sqptr[idx][50] != '\0')
+ still_going = 1;
+
+ /* shift the seq ptr by a line */
+ sqptr[idx] += charcount;
+
+ /* draw the sequence line */
+ pos = 0;
+ while (pos < charcount)
+ {
+ if (isgap(buffer[pos])) fputc('.', fp);
+ else fputc(buffer[pos], fp);
+ pos++;
+ if (!(pos % 10)) fputc(' ', fp);
+ }
+ fputc('\n', fp);
+ }
+ /* put blank line between blocks */
+ fputc('\n', fp);
+ }
+
+ free(sqptr);
+ return 1;
+}
+
+
+
+void
+FlushAlignment(char **aseqs, int num, int *ret_alen)
+{
+ int len, alen;
+ int idx;
+ int apos;
+
+ alen = strlen(aseqs[0]);
+ for (idx = 1; idx < num; idx++)
+ if ((len = strlen(aseqs[idx])) > alen)
+ alen = len;
+
+ for (idx = 0; idx < num; idx++)
+ {
+ if ((aseqs[idx] = (char *) realloc (aseqs[idx], sizeof(char) * (alen+1))) == NULL)
+ Die("realloc failed");
+ for (apos = strlen(aseqs[idx]); apos < alen; apos++)
+ aseqs[idx][apos] = '.';
+ aseqs[idx][apos] = '\0';
+ }
+ *ret_alen = alen;
+}
diff --git a/pavesi.c b/pavesi.c
new file mode 100644
index 0000000..1e9884a
--- /dev/null
+++ b/pavesi.c
@@ -0,0 +1,508 @@
+/* eufindtRNA - Eukaryotic tRNA finder
+ *
+ * pavesi.c - functions for finding transcriptional control regions
+ *
+ * C implementation of algorithm described by Pavesi, Conterio,
+ * Bolchi, Dieci, & Ottonello in NAR 22:1247-56 (94)
+ * "Identification of new eukaryotic tRNA genes in genomic DNA
+ * databases by a multistep weight matix analysis of transcriptional
+ * control regions"
+ *
+ * To be used in tRNAscan-SE package to increase sensitivity by
+ * complementing tRNAscan 1.3 first-pass scan
+ *
+ * by Todd MJ Lowe 4/8/96
+ *
+ * Uses Sean Eddy's function library for biological sequence analysis
+ * (Squid v1.5g)
+ *
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "squid.h"
+#include "eufind_const.h"
+
+/* #define NO_AMBIG -use this option to eliminate conservative
+ * calling of 'N's as best possible matches
+ * in tRNAs -- useful for unfinished seqs with many N's
+ */
+
+
+/* log scores for each position in A Box */
+/* six rows are for 1) A, 2) C, 3) G, 4) T, 5) (gap), 6) ambiguous base
+ the ambiguous base value is the MIN (best score) of the ACGT rows */
+
+/* position 17a eliminated since always an empty pos (gap) */
+
+float Abox_Mat[6][ABOX_LEN] = {
+ {-1.268,-3.651,-0.899,-4.749,-5.442,-2.351,-3.363,-0.009,-1.977,-3.497,-5.442,
+ -5.442,-5.442,-2.498,-4.749,-5.442,-0.031,-1.417,-1.180,-1.048,-4.344},
+
+ {-3.651,-5.442,-4.056,-2.958,-0.480,-1.073,-0.857,-5.442,-5.442,-1.887,-2.498,
+ -5.442,-5.442,-2.958,-2.224,-5.442,-5.442,-3.363,-1.417,-3.651,-0.393},
+
+ {-0.779,-5.442,-0.598,-0.076,-3.651,-1.435,-1.614,-4.749,-0.154,-2.803,-5.442,
+ 0.000,0.000,-3.363,-3.651,-5.442,-3.497,-0.672,-1.012,-0.473,-3.651},
+
+ {-1.453,-0.026,-3.651,-4.344,-1.036,-1.125,-1.073,-5.442,-5.442,-0.278,-1.399,
+ -5.442,-5.442,-0.185,-0.827,-2.041,-5.442,-1.551,-2.447,-5.442,-1.253},
+
+ {-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-0.412,
+ -5.442,-5.442,-5.442,-0.868,-0.144,-5.442,-5.442,-5.442,-5.442,-5.442},
+#ifdef NO_AMBIG
+ {-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,
+ -3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245}
+#else
+ {-0.779,-0.026,-0.598,-0.076,-0.480,-1.073,-0.857,-0.009,-0.154,-0.278,-1.399,
+ 0.000,0.000,-0.185,-0.827,-2.041,-0.031,-0.672,-1.012,-0.473,-0.393}
+#endif
+};
+
+#define GAP_ROW 4 /* row in ABox mat with Gap weight */
+
+float Bbox_Mat[6][BBOX_LEN] = {
+ {-2.351,-5.442,-2.670,-5.442,-5.442,-1.472,0.000,-0.798,-2.498,-5.442,-3.497},
+ {-3.245,-5.442,-5.442,-5.442,-0.004,-5.442,-5.442,-2.498,-1.435,-0.009,-0.190},
+ {-0.175,-0.004,-5.442,-5.442,-5.442,-0.272,-5.442,-2.147,-5.442,-5.442,-3.651},
+ {-3.651,-5.442,-0.072,0.000,-5.442,-4.749,-5.442,-1.048,-0.393,-5.442,-2.147},
+ {-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442,-5.442},
+#ifdef NO_AMBIG
+ {-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245,-3.245}
+#else
+ {-0.175,-0.004,-0.072,0.000,-0.004,-0.272,0.000,-0.798,-0.393,-0.009,-0.190}
+#endif
+};
+
+#define ABDIST_MAT_SIZE 7
+int ABDistIdx_Mat[ABDIST_MAT_SIZE] = {30,36,42,48,54,60,66};
+float ABDistSc_Mat[ABDIST_MAT_SIZE] = {-0.46,-1.83,-2.35,-3.24,
+ -4.06,-3.83,-4.75};
+
+#define BTERM_MAT_SIZE 9
+int BTermDistIdx_Mat[BTERM_MAT_SIZE] = {17,23,29,35,41,47,53,59,100};
+
+float BTermDistSc_Mat[BTERM_MAT_SIZE] = {-0.54,-1.40,-2.80,-3.36,
+ -3.24,-5.44,-5.44,-4.06,-5.44};
+
+
+int
+Init_tRNA(TRNA_TYPE *tRNA) {
+
+ strcpy(tRNA->iso_type,"???");
+ strcpy(tRNA->acodon,"???");
+ tRNA->start = tRNA->end = 0;
+ tRNA->Abox_st = tRNA->Abox_end = tRNA->Abox_gap = 0;
+ tRNA->Bbox_st = tRNA->Bbox_end = tRNA->Term_st = tRNA->acodon_idx= 0;
+ tRNA->intron = tRNA->idno = 0;
+ tRNA->totSc = tRNA->AboxSc = tRNA->BboxSc = -1000;
+ tRNA->ABdistSc = tRNA->TermSc = -100;
+}
+
+int
+IntEncodeSeq (char *intseq, char *seq, int seqlen)
+{
+ int i;
+
+ for (i=0; i<seqlen; i++) {
+ switch (seq[i]) {
+ case 'A': intseq[i]=0; break;
+ case 'C': intseq[i]=1; break;
+ case 'G': intseq[i]=2; break;
+ case 'T': intseq[i]=3; break;
+ default: /* if not ACGT, assume ambiguous base */
+ intseq[i]= 5; /* ambig base will give score equal to best base
+ at that position in scoring matrix */
+ }
+ }
+ return 0;
+}
+
+
+int
+GetBbox (float *score, int *seqidx, char *iseq, int seqlen,
+ int strand, int verbose)
+{
+ int i,j, endidx;
+
+ (*seqidx)++;
+ endidx = seqlen - BBOX_LEN;
+ for (i=*seqidx; i<endidx; i++) {
+ *score = 0;
+ for (j=0; j< BBOX_LEN; j++) {
+ *score += Bbox_Mat[(int)(iseq[i+j])][j];
+ }
+ if (*score > BBOX_CUTOFF) {
+ if (verbose)
+ if (strand == 0) {
+ printf("Bbox at %i (End=%d), Sc= %.2f\n",i,i+BBOX_LEN+11,
+ *score);
+ }
+ else {
+ printf("Bbox at %i (End=%d), Sc= %.2f\n",seqlen-i+1,
+ seqlen-(i+BBOX_LEN+11)+1,*score);
+ }
+ *seqidx = i;
+ return 1;
+ }
+ }
+ return 0;
+}
+
+float
+Get_ABdist_weight(int ABdist)
+{
+ int ct;
+
+ if (ABdist < MIN_AB_BOX_DIST)
+ return MAX_PENALTY;
+ for (ct=0; ct < ABDIST_MAT_SIZE; ct++) {
+ if (ABdist <= ABDistIdx_Mat[ct])
+ return ABDistSc_Mat[ct];
+ }
+ return MAX_PENALTY;
+}
+
+
+int
+GetSecABox(TRNA_TYPE *tRNA, char *seq)
+{
+ char *seqp;
+ int i, startidx;
+
+ /* Search for eukaryotic SelCys motif */
+
+ startidx = tRNA->Bbox_st - ABOX_LEN - SEC_AB_BOX_DIST - 1;
+
+ seqp = seq + MAX(0,startidx);
+ for (i=0; i<5; i++, seqp++) {
+ if ((!strncmp(seqp,"GGTC",4) &&
+ (seqp[4] == 'T' || seqp[4] == 'C') &&
+ (seqp[5] == 'G') &&
+ (seqp[6] == 'T' || seqp[6] == 'G') &&
+ (seqp[7] == 'G') &&
+ (seqp[8] == 'G') &&
+ (seqp[9] == 'T'))) {
+
+ tRNA->Abox_st = MAX(0,startidx+i-SEC_BBOX_DIST_CORR);
+ strcpy(tRNA->iso_type,"SeCe");
+ return 1;
+ }
+ }
+
+ /* Search for Prokaryotic SelCys */
+
+ startidx = tRNA->Bbox_st - 46 - 1;
+
+ seqp = seq + MAX(0,startidx);
+ for (i=0; i<16; i++, seqp++) {
+ if ((!strncmp(seqp,"GG",2) &&
+ (seqp[2] == 'A' || seqp[2] == 'T') &&
+ (seqp[3] == 'C' || seqp[3] == 'T') &&
+ (seqp[4] == 'T') &&
+ (seqp[5] == 'T') &&
+ (seqp[6] == 'C') &&
+ (seqp[7] == 'A') &&
+ (seqp[8] == 'A') &&
+ (seqp[9] == 'A') &&
+ (seqp[10] == 'A' || seqp[10] == 'T') &&
+ (seqp[11] == 'C') &&
+ (seqp[12] == 'C'))) {
+
+ tRNA->Abox_st = MAX(0,startidx+i-23);
+ strcpy(tRNA->iso_type,"SeCp");
+ return 1;
+ }
+ }
+ return 0;
+
+}
+
+
+int
+GetBestABox (TRNA_TYPE *tRNA, char *seq, char *iseq, int seqlen,
+ int strand, int verbose, int Max_AB_dist, int prev_Abox_st)
+{
+ int i, /* sequence position index */
+ startidx, endidx,
+ abox_end;
+ int j, /* matrix position index */
+ offset1, offset2, /* offset counters to keep track of gaps */
+ gapct, /* keeps track of 4 types of 2bp gaps in
+ positions 20a & 20b */
+ best_gap, /* gapct & offset1 vals for best score so far */
+ best_offset1;
+
+ float sc1, sc2, sc3, /* components of total score */
+ bestsc, /* best score so far */
+ abdistSc;
+
+
+ startidx = MAX(MAX(0,(tRNA->Bbox_st - Max_AB_dist - ABOX_LEN)), prev_Abox_st+2);
+ endidx = MAX(0,(tRNA->Bbox_st - MIN_AB_BOX_DIST - ABOX_LEN +4));
+
+ for (i=startidx; i < endidx; i++) {
+
+ sc1=sc2=sc3=0;
+
+ /* scoring Abox with weight matrix at tRNA pos 7-16 */
+ for (j=0; j<=9; j++) {
+ sc1 += Abox_Mat[(int)(iseq[i+j])][j];
+ }
+
+ j=10;
+
+ /* score gap at pos 17 by looking for conserved 'GG' at pos 18 &
+ 19 */
+
+ if ((seq[i+j] == 'G')) { /* && (seq[i+j+1] == 'G')) { */
+ sc2 = Abox_Mat[GAP_ROW][j];
+ offset1 = 1;
+ }
+ else {
+ sc2 = 0;
+ offset1 = 0;
+ }
+
+ /* scoring Abox with weight matrix at tRNA pos 18-20 */
+ for (j=10; (j+offset1) < 14; j++) {
+ sc2 += Abox_Mat[(int)(iseq[i+j])][j+offset1];
+ }
+
+ /* score potential gap at 20a & 20b, plus rest of matrix up to
+ position; gapct, enumerates all possible 2bp gaps */
+
+ for (gapct=0; gapct<4; gapct++) {
+ j=14-offset1;
+ offset2=0;
+ switch (gapct) {
+ case 0:
+ sc3 = Abox_Mat[(int)(iseq[i+j])][j+offset1+offset2];
+ j++;
+ sc3 += Abox_Mat[(int)(iseq[i+j])][j+offset1+offset2];
+ j++;
+ break;
+ case 1:
+ sc3 = Abox_Mat[GAP_ROW][j+offset1+offset2];
+ offset2++;
+ sc3 += Abox_Mat[(int)(iseq[i+j])][j+offset1+offset2];
+ j++;
+ break;
+ case 2:
+ sc3 = Abox_Mat[(int)(iseq[i+j])][j+offset1+offset2];
+ j++;
+ sc3 += Abox_Mat[GAP_ROW][j+offset1+offset2];
+ offset2++;
+ break;
+ case 3:
+ sc3 = Abox_Mat[GAP_ROW][j+offset1+offset2];
+ offset2++;
+ sc3 += Abox_Mat[GAP_ROW][j+offset1+offset2];
+ offset2++;
+ break;
+ }
+ for (; (j+offset1+offset2) < ABOX_LEN; j++) {
+ sc3+= Abox_Mat[(int)(iseq[i+j])][j+offset1+offset2];
+ }
+
+ abox_end = i+ABOX_LEN-offset1-offset2-1;
+ abdistSc = Get_ABdist_weight(tRNA->Bbox_st-abox_end-1);
+
+ if ((sc1 + sc2 + sc3 + abdistSc) > (tRNA->AboxSc + tRNA->ABdistSc)) {
+ tRNA->Abox_st = i;
+ tRNA->Abox_end = abox_end;
+ tRNA->ABdistSc = abdistSc;
+ tRNA->AboxSc = sc1+sc2+sc3;
+ best_offset1= offset1;
+ best_gap = gapct;
+ if (verbose)
+ if (strand == 0) {
+ printf("Abox at %d (St=%d) A:%.2f AB(%d):%.2f I:%.2f\n",
+ i,i-5,tRNA->AboxSc, tRNA->Bbox_st-abox_end-1,tRNA->ABdistSc,
+ tRNA->AboxSc+tRNA->BboxSc+tRNA->ABdistSc);
+ }
+ else {
+ printf("Abox at %d (St=%d) A:%.2f AB(%d):%.2f I:%.2f\n",
+ seqlen-i+1,seqlen-(i-5)+1,tRNA->AboxSc,
+ tRNA->Bbox_st-abox_end-1,tRNA->ABdistSc,
+ tRNA->AboxSc+tRNA->BboxSc+tRNA->ABdistSc);
+ }
+
+ }
+ } /* for gapct, enumerating all possible gaps */
+ } /* for i, starting pos for A box */
+}
+
+
+int
+GetBestTrxTerm (TRNA_TYPE *tRNA, char *seq, int seqlen,
+ float TermPenalty)
+{
+ int i, /* current seq position */
+ startidx, endidx; /* start & end points for term search */
+ int ct, BTermdist;
+
+ float score; /* current score */
+
+ startidx = tRNA->Bbox_end+MIN_BTERM_DIST-1;
+ endidx = MIN(startidx+MAX_TERM_SEARCH,(seqlen-4));
+
+ for (i=startidx; i<endidx; i++) {
+
+ if ((seq[i] == 'T') && (seq[i+1] == 'T') &&
+ (seq[i+2] == 'T') && (seq[i+3] == 'T')) {
+
+ BTermdist = i-tRNA->Bbox_end-1;
+ for (ct=0; BTermDistIdx_Mat[ct] < BTermdist; ct++) {
+ }
+ tRNA->TermSc = BTermDistSc_Mat[ct];
+ tRNA->Term_st = i;
+ return 1;
+ }
+ }
+
+ tRNA->Term_st = -1;
+
+ if (endidx == (seqlen-4)) {
+ tRNA->TermSc = TOT_SCORE_THRESH - (INT_SCORE_THRESH);
+ return 1;
+ }
+ else {
+ tRNA->TermSc = MAX_PENALTY;
+ return 0;
+ }
+}
+
+
+/* Uses tranlation scheme & AA lookup table from Squid library */
+
+void
+Get_IsoType (TRNA_TYPE *tRNA)
+{
+ int i, codon;
+ char codon_seq[4];
+
+ revcomp(codon_seq,tRNA->acodon);
+
+ codon = 0;
+ for (i = 0; i < 3; i++)
+ {
+ codon *= 4;
+ switch (codon_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(tRNA->iso_type,stdcode3[codon]);
+}
+
+void
+Get_anticodon (TRNA_TYPE *tRNA, char *seq)
+{
+ char *acodonp;
+ int startidx, i, besti, score, bestsc;
+
+ startidx = tRNA->Abox_end + 7;
+ acodonp = seq + startidx;
+ bestsc = besti = 0;
+ for (i=0; i<7; i++) {
+ score = 0;
+ if ((acodonp[i-2] == 'C') || (acodonp[i-2] == 'T'))
+ score++;
+ if (acodonp[i-1] == 'T')
+ score++;
+ if ((acodonp[i+3] == 'A') || (acodonp[i+3] == 'G'))
+ score++;
+ if (score > bestsc) {
+ bestsc = score;
+ besti = i;
+ }
+ }
+ strncpy(tRNA->acodon,acodonp+besti,3);
+ /* tRNA->acodon[3]='\0'; */
+ tRNA->acodon_idx = startidx + besti;
+}
+
+
+void
+Get_tRNA_stats (TRNA_TYPE *tRNA, char *seq, int seqlen, int strand)
+{
+
+ tRNA->start = MAX(1,(tRNA->Abox_st - 5));
+ tRNA->end = MIN((tRNA->Bbox_end + 12),seqlen);
+
+ if (strand == -1) {
+ tRNA->start = seqlen - tRNA->start + 1;
+ tRNA->end = seqlen - tRNA->end + 1;
+ }
+
+ if (!strncmp("SeC",tRNA->iso_type,3)) {
+ strcpy(tRNA->acodon,"TCA");
+ tRNA->Bbox_end++;
+ }
+ else {
+ Get_anticodon(tRNA,seq);
+ Get_IsoType(tRNA);
+ }
+}
+
+void
+Save_tRNA (TRNA_TYPE *tRNA, SQINFO *sqinfo, char *seq, int strand,
+ int ShowScores, long int sqoffset)
+{
+
+ if (ShowScores)
+ printf("%s.%d\t%ld\t%ld\t%s\t%d\tA:%.2f B:%.2f AB:%.2f T:%.2f Tot:%.2f\n",
+ sqinfo->name,tRNA->idno,tRNA->start+sqoffset,tRNA->end+sqoffset,
+ tRNA->acodon,strand, tRNA->AboxSc,tRNA->BboxSc,tRNA->ABdistSc,
+ tRNA->TermSc,tRNA->totSc);
+
+ else
+ printf("%-10s\t%d\t%ld\t%ld\t%s\t%s\t0\t0\t%.2f\n",
+ sqinfo->name,tRNA->idno,tRNA->start+sqoffset,tRNA->end+sqoffset,
+ tRNA->iso_type,tRNA->acodon,tRNA->totSc);
+
+}
+
+int
+tRNAOverlap (TRNA_TYPE *tRNA1, TRNA_TYPE *tRNA2, int strand)
+{
+ if (strand == 0) {
+ if ((((tRNA1->start >= tRNA2->start) &&
+ (tRNA1->start < tRNA2->end-MAX_OVLAP)) ||
+ ((tRNA1->end > tRNA2->start+MAX_OVLAP) &&
+ (tRNA1->end <= tRNA2->end))) ||
+
+ (((tRNA2->start >= tRNA1->start) &&
+ (tRNA2->start < tRNA1->end-MAX_OVLAP)) ||
+ ((tRNA2->end > tRNA1->start+MAX_OVLAP) &&
+ (tRNA2->end <= tRNA1->end))))
+ return 1;
+ else
+ return 0;
+ }
+ else {
+ if ((((tRNA1->start <= tRNA2->start) &&
+ (tRNA1->start > tRNA2->end+MAX_OVLAP)) ||
+ ((tRNA1->end < tRNA2->start-MAX_OVLAP) &&
+ (tRNA1->end >= tRNA2->end))) ||
+
+ (((tRNA2->start <= tRNA1->start) &&
+ (tRNA2->start > tRNA1->end+MAX_OVLAP)) ||
+ ((tRNA2->end < tRNA1->start-MAX_OVLAP) &&
+ (tRNA2->end >= tRNA1->end))))
+ return 1;
+ else
+ return 0;
+ }
+}
+
+
+
diff --git a/prior.c b/prior.c
new file mode 100644
index 0000000..584c53f
--- /dev/null
+++ b/prior.c
@@ -0,0 +1,404 @@
+/* prior.c
+ * Configure prior probability distributions
+ * Mon Sep 6 09:42:16 1993
+ *
+ * Designed to make it fairly easy to replace the prior with
+ * different numbers, or ever completely different structures,
+ * but for now we just copy a default prior out of prior.h
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "structs.h"
+#include "prior.h"
+
+static int get_real(FILE *fp, double *ret_real);
+
+
+
+/* Function: DefaultPrior()
+ *
+ * Purpose: Copy the default prior from prior.h into a structure.
+ *
+ * Args: ret_prior: RETURN: new struct containing prior prob. distributions
+ *
+ * Return: 1 on success, 0 on failure. ret_prior is malloc'ed here and
+ * must be free'd by caller by a free(*ret_prior).
+ */
+int
+DefaultPrior(struct prior_s **ret_prior)
+{
+ struct prior_s *prior;
+ int i,j,fy,ty; /* counters */
+
+ if ((prior = (struct prior_s *) malloc (sizeof(struct prior_s))) == NULL)
+ Die("malloc failed");
+
+ for (i = 0; i < 7; i++)
+ for (j = 0; j < 4; j++)
+ for (fy = 0; fy < STATETYPES; fy++)
+ for (ty = 0; ty < STATETYPES; ty++)
+ prior->tprior[i][j][fy][ty] = def_tprior[i][j][fy][ty];
+
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ prior->rfreq[i] = def_rfreq[i];
+ prior->matl_prior[i] = def_matl_prior[i];
+ prior->matr_prior[i] = def_matr_prior[i];
+ prior->insl_prior[i] = def_insl_prior[i];
+ prior->insr_prior[i] = def_insr_prior[i];
+ for (j = 0; j < ALPHASIZE; j++)
+ prior->matp_prior[i][j] = def_matp_prior[i][j];
+ }
+
+ for (ty = 0; ty < STATETYPES; ty++)
+ {
+ prior->talpha[ty] = def_talpha[ty];
+ prior->emalpha[ty] = def_emalpha[ty];
+ }
+
+ *ret_prior = prior;
+ return 1;
+}
+
+
+
+/* Function: ReadPrior()
+ *
+ * Purpose: Get a prior from a file.
+ *
+ * Return: 1 on success, 0 on failure.
+ * ret_prior is alloced here, must be free'd by caller
+ */
+int
+ReadPrior(FILE *fp, struct prior_s **ret_prior)
+{
+ struct prior_s *prior;
+ double param;
+ int fnode,tnode,fs,ts; /* counters */
+ int i,j;
+
+ if ((prior = (struct prior_s *) malloc (sizeof(struct prior_s))) == NULL)
+ Die("malloc failed");
+
+ /* Read rfreq's: expected symbol emission probability distribution for
+ * unrelated background sequence (the "random model")
+ */
+ if (!get_real(fp, ¶m)) return 0;
+ prior->rfreq[0] = param;
+ for (i = 1; i < ALPHASIZE; i++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->rfreq[i] = param;
+ }
+
+ /* Read talpha's: weights attached to state transition priors.
+ * Often all 1.0
+ */
+ for (i = 0; i < STATETYPES; i++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->talpha[i] = param;
+ }
+
+ /* Read emalpha's: weights attached to symbol emission priors.
+ * Often all 1.0. INSR_ST, INSL_ST sometimes set very high to
+ * fix insert states as unlearnable
+ */
+ for (i = 0; i < STATETYPES; i++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->emalpha[i] = param;
+ }
+
+ /* Read matp_prior: symbol emission priors for matp
+ */
+ for (i = 0; i < ALPHASIZE; i++)
+ for (j = 0; j < ALPHASIZE; j++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->matp_prior[i][j] = param;
+ }
+
+ /* Read singlet emission priors, in order MATL, MATR, INSL, INSR
+ */
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->matl_prior[i] = param;
+ }
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->matr_prior[i] = param;
+ }
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->insl_prior[i] = param;
+ }
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->insr_prior[i] = param;
+ }
+
+ /* Read tprior: state transition priors.
+ * In order [7 from nodes][4 to nodes][from state][to state]
+ */
+ for (fnode = 0; fnode < 7; fnode++)
+ for (tnode = 0; tnode < 4; tnode++)
+ for (fs = 0; fs < STATETYPES; fs++)
+ for (ts = 0; ts < STATETYPES; ts++)
+ {
+ if (!get_real(NULL, ¶m)) return 0;
+ prior->tprior[fnode][tnode][fs][ts] = param;
+ }
+
+ *ret_prior = prior;
+ return 1;
+}
+
+
+
+/* Function: WritePrior()
+ *
+ * Purpose: Write a prior to an open file pointer.
+ * The file is usable as a prior.h header file.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+WritePrior(FILE *fp, struct prior_s *prior)
+{
+ int fnode,tnode,fs,ts; /* counters */
+ int i,j;
+
+ if (fp == NULL) return 0;
+
+
+ fprintf(fp, "#ifdef PRIORH_INCLUDED\n\n");
+ fprintf(fp, "#include \"structs.h\"\n\n");
+
+ /* Write rfreq
+ */
+ fprintf(fp, "static double def_rfreq[ALPHASIZE] = { ");
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%f%s", prior->rfreq[i],
+ (i == ALPHASIZE-1) ? " };\n\n" : ", ");
+
+ /* Write talpha
+ */
+ fprintf(fp, "static double def_talpha[STATETYPES] =\n{ ");
+ for (i = 0; i < STATETYPES; i++)
+ fprintf(fp, "%f%s", prior->talpha[i],
+ (i == STATETYPES-1) ? " };\n\n" : ", ");
+
+ /* Write emalpha
+ */
+ fprintf(fp, "static double def_emalpha[STATETYPES] =\n{ ");
+ for (i = 0; i < STATETYPES; i++)
+ fprintf(fp, "%f%s", prior->emalpha[i],
+ (i == STATETYPES-1) ? " };\n\n" : ", ");
+
+ /* Write matp_prior
+ */
+ fprintf(fp, "static double def_matp_prior[ALPHASIZE][ALPHASIZE] =\n{\n");
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ fprintf(fp, " { ");
+ for (j = 0; j < ALPHASIZE; j++)
+ fprintf(fp, "%f%s", prior->matp_prior[i][j],
+ (j == ALPHASIZE-1) ? " },\n" : ", ");
+ }
+ fprintf(fp, "};\n\n");
+
+ /* Write the singlet emission priors, in order MATL, MATR, INSL, INSR
+ */
+ fprintf(fp, "static double def_matl_prior[ALPHASIZE] = { ");
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%f%s", prior->matl_prior[i],
+ (i == ALPHASIZE-1) ? " };\n\n" : ", ");
+ fprintf(fp, "static double def_matr_prior[ALPHASIZE] = { ");
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%f%s", prior->matr_prior[i],
+ (i == ALPHASIZE-1) ? " };\n\n" : ", ");
+ fprintf(fp, "static double def_insl_prior[ALPHASIZE] = { ");
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%f%s", prior->insl_prior[i],
+ (i == ALPHASIZE-1) ? " };\n\n" : ", ");
+ fprintf(fp, "static double def_insr_prior[ALPHASIZE] = { ");
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%f%s", prior->insr_prior[i],
+ (i == ALPHASIZE-1) ? " };\n\n" : ", ");
+
+ /* Write the state transition priors
+ */
+ fprintf(fp, "static double def_tprior[7][4][STATETYPES][STATETYPES] =\n{\n");
+ for (fnode = 0; fnode < 7; fnode++)
+ {
+ fprintf(fp, " {\n"); /* open block of 4 tonodes */
+ for (tnode = 0; tnode < 4; tnode++)
+ {
+ fprintf(fp, " { "); /* open block of 6 from states */
+ for (fs = 0; fs < STATETYPES; fs++)
+ {
+ fprintf(fp, "%s", fs == 0? " { " : " { ");
+ for (ts = 0; ts < STATETYPES; ts++)
+ fprintf(fp, "%f%s", prior->tprior[fnode][tnode][fs][ts],
+ (ts == STATETYPES-1) ? " },\n" : ", ");
+ }
+ fprintf(fp, " },\n\n"); /* end block of 6 from states */
+ }
+ fprintf(fp, " },\n\n"); /* end block of 4 tonodes */
+ }
+ fprintf(fp, "};\n");
+ fprintf(fp, "#endif /* PRIORH_INCLUDED */\n");
+ return 1;
+}
+
+
+
+/* Function: NormalizePrior()
+ *
+ * Purpose: convert a prior containing counts to one suitable for saving;
+ * the sum of each vector is the number of possibilities.
+ * i.e., an emission vector sums to ALPHASIZE, a state transition
+ * vector sums to the number of downstream states, and the MATP
+ * emission table sums to ALPHASIZE*ALPHASIZE.
+ */
+void
+NormalizePrior(struct prior_s *prior)
+{
+ int fnode, tnode, fs, ts; /* counters */
+ double sum;
+ double conn; /* count of downstream connected states */
+
+
+ /* Normalize the vectors
+ */
+ DNorm(prior->rfreq, ALPHASIZE); /* rfreq, random model */
+ DNorm((double *) prior->matp_prior, ALPHASIZE * ALPHASIZE); /* MATP emission prior */
+ DNorm(prior->matl_prior, ALPHASIZE); /* MATL emission prior */
+ DNorm(prior->matr_prior, ALPHASIZE); /* MATR emission prior */
+ DNorm(prior->insl_prior, ALPHASIZE); /* INSL emission prior */
+ DNorm(prior->insr_prior, ALPHASIZE); /* INSR emission prior */
+
+ /* Scale them to ALPHASIZE or ALPHASIZE*ALPHASIZE
+ */
+ DScale(prior->rfreq, ALPHASIZE, (double) ALPHASIZE); /* rfreq, random model */
+ DScale((double *) prior->matp_prior, ALPHASIZE*ALPHASIZE, (double)(ALPHASIZE * ALPHASIZE)); /* MATP */
+ DScale(prior->matl_prior, ALPHASIZE, (double) ALPHASIZE); /* MATL emission prior */
+ DScale(prior->matr_prior, ALPHASIZE, (double) ALPHASIZE); /* MATR emission prior */
+ DScale(prior->insl_prior, ALPHASIZE, (double) ALPHASIZE); /* INSL emission prior */
+ DScale(prior->insr_prior, ALPHASIZE, (double) ALPHASIZE); /* INSR emission prior */
+
+ /* state transition priors
+ * deal with specially
+ */
+ for (fnode = 0; fnode < 7; fnode++)
+ for (tnode = 0; tnode < 4; tnode++)
+ for (fs = 0; fs < STATETYPES; fs++)
+ {
+ sum = conn = 0.0;
+ for (ts = 0; ts < STATETYPES; ts++)
+ if (prior->tprior[fnode][tnode][fs][ts] > 0.0)
+ {
+ conn += 1.0;
+ sum += prior->tprior[fnode][tnode][fs][ts];
+ }
+
+ if (sum > 0.0)
+ for (ts = 0; ts < STATETYPES; ts++)
+ prior->tprior[fnode][tnode][fs][ts] = prior->tprior[fnode][tnode][fs][ts] * conn / sum;
+ }
+}
+
+
+/* Function: get_real()
+ *
+ * Purpose: Read next parameter from fp.
+ * This is a very general reading function for reading
+ * parameters from files with C-style comments.
+ * As long as the caller
+ * knows the order of what he's reading, he can format
+ * the file any way he wants.
+ *
+ * Works somewhat like strtok. Call it with fp
+ * on first invocation; call with NULL on subsequent
+ * invocations. Can't work on multiple files
+ * simultaneously, and can't do anything else
+ * to them (lest we lose track of begin/end comments)
+ *
+ * Also note that we use strtok internally, so
+ * the caller can't call strtok() between get_real calls
+ * on the same file.
+ *
+ * Return: 1 on success; 0 on failure (such as end of file)
+ */
+static int
+get_real(FILE *fp, double *ret_real)
+{
+ static int in_comment = 0;
+ static FILE *internalfp = NULL;
+ static char *lineptr = NULL;
+ static char stripbuffer[512]; /* buffer with comments removed */
+ char buffer[512];
+ char *sptr;
+ char *stripptr;
+
+ if (fp != NULL) { internalfp = fp; lineptr = NULL; }
+
+ while (1)
+ {
+ if (lineptr == NULL)
+ {
+ /* Get next line.
+ */
+ if (fgets(buffer, 512, internalfp) == NULL) return 0;
+
+ /* Preprocess the line, stripping out comments.
+ * The stripped copy goes into stripbuffer.
+ */
+ stripptr = stripbuffer;
+ for (sptr = buffer; *sptr; sptr++)
+ {
+ /* If we're in a comment, we're ignoring stuff
+ * until we see end-comment. Else, we're saving
+ * stuff until we see start-comment.
+ */
+ if (in_comment)
+ {
+ if (*sptr == '*' && *(sptr+1) == '/')
+ { in_comment = 0; sptr++; }
+ }
+ else
+ {
+ if (*sptr == '/' && *(sptr+1) == '*')
+ { in_comment = 1; sptr++; }
+ else
+ { *stripptr = *sptr; stripptr++; }
+ }
+ }
+ *stripptr = '\0';
+ lineptr = strtok(stripbuffer, WHITESPACE);
+ }
+
+ /* Now, get the first real and return it
+ */
+ while (lineptr != NULL)
+ {
+ if (IsReal(lineptr))
+ {
+ *ret_real = atof(lineptr);
+ lineptr = strtok(NULL, WHITESPACE);
+ return 1;
+ }
+ else
+ lineptr = strtok(NULL, WHITESPACE);
+ }
+ }
+
+ /*NOTREACHED*/
+ return 0;
+}
diff --git a/prior.h b/prior.h
new file mode 100644
index 0000000..3bde99c
--- /dev/null
+++ b/prior.h
@@ -0,0 +1,385 @@
+#ifndef PRIORH_INCLUDED
+#define PRIORH_INCLUDED
+/* prior.h -- prior probability distributions, for regularization
+ * SRE, Wed Sep 1 15:47:42 1993
+ *
+ * There are 24 different node-node transitions; 6 kinds of node
+ * we can come from (BIFURC_NODES are the exception, always with p=1.0
+ * transitions), and four kinds of node we can go to (MATP, MATL,
+ * MATR, BIFURC; END is treated the same as BIFURC).
+ *
+ * There are 256 different kinds of state transitions, total.
+ * For ease of indexing, we keep them in a [7][4][6][6] sparse
+ * array, indexed [from node][to node][from statetype][to statetype].
+ * Thus there are 1008 numbers, 752 are 0's. Any given row
+ * tprior[fn][tn][fs] sums to 1.0 * the number of possible
+ * transitions.
+ *
+ * The tables are currently set up to do Laplace corrections; i.e.,
+ * a "plus-one" prior.
+ *
+ * Christ. This really _is_ the best way to do it, I think.
+ */
+
+/* DO NOT CHANGE THE ORDER OF THE DEFINITIONS IN THIS FILE.
+ * The prior.h header files are sometimes parsed at run-time,
+ * and they're expected to be in this format.
+ */
+
+#include "structs.h"
+
+ /* A C G T */
+static double def_rfreq[ALPHASIZE] = { 0.25, 0.25, 0.25, 0.25 };
+
+static double def_talpha[STATETYPES] =
+/* DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+{ 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 };
+
+static double def_emalpha[STATETYPES] =
+/* DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+{ 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 };
+
+static double def_matp_prior[ALPHASIZE][ALPHASIZE] =
+{
+ { 1.00, 1.00, 1.00, 1.00 },
+ { 1.00, 1.00, 1.00, 1.00 },
+ { 1.00, 1.00, 1.00, 1.00 },
+ { 1.00, 1.00, 1.00, 1.00 },
+};
+ /* A C G T */
+static double def_matl_prior[ALPHASIZE] = { 1.00, 1.00, 1.00, 1.00 };
+static double def_matr_prior[ALPHASIZE] = { 1.00, 1.00, 1.00, 1.00 };
+static double def_insl_prior[ALPHASIZE] = { 1.00, 1.00, 1.00, 1.00 };
+static double def_insr_prior[ALPHASIZE] = { 1.00, 1.00, 1.00, 1.00 };
+
+static double def_tprior[7][4][STATETYPES][STATETYPES] =
+{
+ {
+ /* BIFURC_NODE --> BIFURC_NODE or END: never happens
+ */
+/* fs: */ /* ts: BIFURC_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BIFURC_NODE --> MATP_NODE: never happens.
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BIFURC_NODE --> MATL_NODE: never happens.
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BIFURC_NODE --> MATR_NODE: never happens
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+ },
+
+
+ {
+ /* MATP_NODE --> BIFURC_NODE or END
+ */
+/* fs: */ /* ts: BIFURC_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 0.00, 0.00, 1.00, 1.00 },
+/* MATP_ST */ { 1.00, 0.00, 0.00, 0.00, 1.00, 1.00 },
+/* MATL_ST */ { 1.00, 0.00, 0.00, 0.00, 1.00, 1.00 },
+/* MATR_ST */ { 1.00, 0.00, 0.00, 0.00, 1.00, 1.00 },
+/* INSL_ST */ { 1.00, 0.00, 0.00, 0.00, 1.00, 1.00 },
+/* INSR_ST */ { 1.00, 0.00, 0.00, 0.00, 0.00, 1.00 },
+ },
+
+ /* MATP_NODE --> MATP_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 },
+/* MATP_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 },
+/* MATL_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 },
+/* MATR_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 },
+/* INSL_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 },
+/* INSR_ST */ { 1.00, 1.00, 1.00, 1.00, 0.00, 1.00 },
+ },
+
+ /* MATP_NODE --> MATL_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 1.00, 0.00, 1.00, 1.00 },
+/* MATP_ST */ { 1.00, 0.00, 1.00, 0.00, 1.00, 1.00 },
+/* MATL_ST */ { 1.00, 0.00, 1.00, 0.00, 1.00, 1.00 },
+/* MATR_ST */ { 1.00, 0.00, 1.00, 0.00, 1.00, 1.00 },
+/* INSL_ST */ { 1.00, 0.00, 1.00, 0.00, 1.00, 1.00 },
+/* INSR_ST */ { 1.00, 0.00, 1.00, 0.00, 0.00, 1.00 },
+ },
+
+ /* MATP_NODE --> MATR_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 0.00, 1.00, 1.00, 1.00 },
+/* MATP_ST */ { 1.00, 0.00, 0.00, 1.00, 1.00, 1.00 },
+/* MATL_ST */ { 1.00, 0.00, 0.00, 1.00, 1.00, 1.00 },
+/* MATR_ST */ { 1.00, 0.00, 0.00, 1.00, 1.00, 1.00 },
+/* INSL_ST */ { 1.00, 0.00, 0.00, 1.00, 1.00, 1.00 },
+/* INSR_ST */ { 1.00, 0.00, 0.00, 1.00, 0.00, 1.00 },
+ },
+ },
+
+ {
+ /* MATL_NODE --> BIFURC_NODE or END
+ */
+/* fs: */ /* ts: BIFURC_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 0.00, 0.00, 1.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 1.00, 0.00, 0.00, 0.00, 1.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 0.00, 0.00, 0.00, 1.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* MATL_NODE --> MATP_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 1.00, 1.00, 1.00, 1.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* MATL_NODE --> MATL_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 1.00, 0.00, 1.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 1.00, 0.00, 1.00, 0.00, 1.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 0.00, 1.00, 0.00, 1.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* MATL_NODE --> MATR_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 0.00, 1.00, 1.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 1.00, 0.00, 0.00, 1.00, 1.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 0.00, 0.00, 1.00, 1.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+ },
+
+
+ {
+ /* MATR_NODE --> BIFURC_NODE or END
+ */
+/* fs: */ /* ts: BIFURC_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 0.00, 0.00, 0.00, 1.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 1.00, 0.00, 0.00, 0.00, 0.00, 1.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 1.00, 0.00, 0.00, 0.00, 0.00, 1.00 },
+ },
+
+ /* MATR_NODE --> MATP_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 1.00, 1.00, 1.00, 0.00, 1.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 1.00, 1.00, 1.00, 1.00, 0.00, 1.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 1.00, 1.00, 1.00, 1.00, 0.00, 1.00 },
+ },
+
+ /* MATR_NODE --> MATL_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 1.00, 0.00, 0.00, 1.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 1.00, 0.00, 1.00, 0.00, 0.00, 1.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 1.00, 0.00, 1.00, 0.00, 0.00, 1.00 },
+ },
+
+ /* MATR_NODE --> MATR_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 0.00, 1.00, 0.00, 1.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 1.00, 0.00, 0.00, 1.00, 0.00, 1.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 1.00, 0.00, 0.00, 1.00, 0.00, 1.00 },
+ },
+ },
+
+
+ {
+ /* BEGINL_NODE --> BIFURC_NODE or END
+ */
+/* fs: */ /* ts: BIFURC_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* BEGIN */ { { 1.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BEGINL_NODE --> MATP_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* BEGIN */ { { 1.00, 1.00, 1.00, 1.00, 0.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BEGINL_NODE --> MATL_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* BEGIN */ { { 1.00, 0.00, 1.00, 0.00, 0.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BEGINL_NODE --> MATR_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* BEGIN */ { { 1.00, 0.00, 0.00, 1.00, 0.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+ },
+
+ {
+ /* BEGINR_NODE --> BIFURC_NODE or END
+ */
+/* fs: */ /* ts: BIFURC_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 0.00, 0.00, 1.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 0.00, 0.00, 0.00, 1.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BEGINR_NODE --> MATP_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 1.00, 1.00, 1.00, 1.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BEGINR_NODE --> MATL_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 1.00, 0.00, 1.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+
+ /* BEGINR_NODE --> MATR_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* DEL_ST */ { { 1.00, 0.00, 0.00, 1.00, 1.00, 0.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 0.00, 0.00, 1.00, 1.00, 0.00 },
+/* INSR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+ },
+ },
+
+
+ {
+ /* ROOT_NODE --> BIFURC_NODE or END
+ */
+/* fs: */ /* ts: BIFURC_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* BEGIN */ { { 1.00, 0.00, 0.00, 0.00, 1.00, 1.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 0.00, 0.00, 0.00, 1.00, 1.00 },
+/* INSR_ST */ { 1.00, 0.00, 0.00, 0.00, 0.00, 1.00 },
+ },
+
+ /* ROOT_NODE --> MATP_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* BEGIN */ { { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 1.00, 1.00, 1.00, 1.00, 1.00 },
+/* INSR_ST */ { 1.00, 1.00, 1.00, 1.00, 0.00, 1.00 },
+ },
+
+ /* ROOT_NODE --> MATL_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* BEGIN */ { { 1.00, 0.00, 1.00, 0.00, 1.00, 1.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 0.00, 1.00, 0.00, 1.00, 1.00 },
+/* INSR_ST */ { 1.00, 0.00, 1.00, 0.00, 0.00, 1.00 },
+ },
+
+ /* ROOT_NODE --> MATR_NODE
+ */
+/* fs: */ /* ts: DEL_ST MATP_ST MATL_ST MATR_ST INSL_ST INSR_ST */
+/* BEGIN */ { { 1.00, 0.00, 0.00, 1.00, 1.00, 1.00 },
+/* MATP_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATL_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* MATR_ST */ { 0.00, 0.00, 0.00, 0.00, 0.00, 0.00 },
+/* INSL_ST */ { 1.00, 0.00, 0.00, 1.00, 1.00, 1.00 },
+/* INSR_ST */ { 1.00, 0.00, 0.00, 1.00, 0.00, 1.00 },
+ },
+ },
+};
+
+
+#endif /* PRIORH_INCLUDED */
diff --git a/probify.c b/probify.c
new file mode 100644
index 0000000..6f9aa1b
--- /dev/null
+++ b/probify.c
@@ -0,0 +1,225 @@
+/* probify.c
+ * Convert counts to probabilities, using regularization.
+ * SRE, Fri Sep 3 08:02:49 1993
+ *
+ * Because our training sequence set is finite (and often small)
+ * and our number of free parameters is large, we have a small
+ * sample statistics problem in estimating each parameter.
+ *
+ * The simplest way to deal with this problem is to use the
+ * so-called Laplace law of succession. If I have N sequences
+ * with a base symbol assigned to some state, and see n A's,
+ * I calculate the emission probability of A as (n+1)/(N+4),
+ * i.e., adding 1 to the numerator and the number of possible
+ * outcomes (4) to the denominator. A summary of the proof of
+ * this appears in Berg & von Hippel (J Mol Biol 193:723-750, 1987).
+ * It is referred to as the "plus-one prior" by David Haussler
+ * and by us.
+ *
+ * The plus-one prior implies that we have no knowledge at all about
+ * the prior probabilities; in absence of any data, the probabilities
+ * default to 1/4. What if we do have prior information? (For instance,
+ * for state transitions, we know that deletes and inserts are
+ * relatively rare.) We use a generalization of the Laplace law
+ * of succession:
+ * n(x) + alpha * R(x)
+ * P(x) = -------------------
+ * ---
+ * \ n(i) + alpha * R(i)
+ * /__
+ * i
+ *
+ * Here, R(x) is a "regularizer" and alpha is a weight applied
+ * to the regularizer. Both were 1.0 in the plus-one prior.
+ * Now, we can bias R(x) to reflect our prior expectations
+ * about the probability distribution P(x). (In practice,
+ * we calculate R(x) by specifying a prior probability distribution
+ * and multiplying each term by the number of possible outcomes.)
+ * alpha is a "confidence" term; the higher alpha is, the more
+ * data it takes to outweigh the prior. We usually set alpha to
+ * 1.0, but sometimes -- such as for insert state emissions,
+ * where we may assert that the emission probabilities are
+ * the same as random regardless of the data -- we might use
+ * arbitrarily high alpha's to freeze certain probability distributions
+ * at their priors.
+ *
+ * All this follows the description in Krogh et. al's HMM paper
+ * (in press, JMB, 1993).
+ *
+ */
+
+
+#include "structs.h"
+#include "funcs.h"
+
+
+/* Function: ProbifyCM()
+ *
+ * Purpose: Convert all the state transitions and symbol emissions in
+ * a covariance model from counts to probabilities.
+ *
+ * Args: cm - the model to convert
+ *
+ * Return: (void). Counts in cm become probabilities.
+ */
+void
+ProbifyCM(struct cm_s *cm, struct prior_s *prior)
+{
+ int k;
+
+ for (k = 0; k < cm->nodes; k++)
+ {
+ if (cm->nd[k].type != BIFURC_NODE)
+ {
+ if (cm->nd[k].nxt == -1)
+ ProbifyTransitionMatrix(cm->nd[k].tmx, cm->nd[k].type, END_NODE, prior);
+ else
+ ProbifyTransitionMatrix(cm->nd[k].tmx, cm->nd[k].type, cm->nd[k+1].type, prior);
+ }
+
+ switch (cm->nd[k].type) {
+ case MATP_NODE:
+ ProbifySingletEmission(cm->nd[k].il_emit, uINSL_ST, prior);
+ ProbifySingletEmission(cm->nd[k].ir_emit, uINSR_ST, prior);
+ ProbifySingletEmission(cm->nd[k].ml_emit, uMATL_ST, prior);
+ ProbifySingletEmission(cm->nd[k].mr_emit, uMATR_ST, prior);
+ ProbifyPairEmission(cm->nd[k].mp_emit, prior);
+ break;
+
+ case MATL_NODE:
+ ProbifySingletEmission(cm->nd[k].il_emit, uINSL_ST, prior);
+ ProbifySingletEmission(cm->nd[k].ml_emit, uMATL_ST, prior);
+ break;
+
+ case MATR_NODE:
+ ProbifySingletEmission(cm->nd[k].ir_emit, uINSR_ST, prior);
+ ProbifySingletEmission(cm->nd[k].mr_emit, uMATR_ST, prior);
+ break;
+
+ case BEGINR_NODE:
+ ProbifySingletEmission(cm->nd[k].il_emit, uINSL_ST, prior);
+ break;
+
+ case ROOT_NODE:
+ ProbifySingletEmission(cm->nd[k].il_emit, uINSL_ST, prior);
+ ProbifySingletEmission(cm->nd[k].ir_emit, uINSR_ST, prior);
+ break;
+
+ case BIFURC_NODE: break;
+ case BEGINL_NODE: break;
+ default: Die("Unrecognized node type %d at node %d", cm->nd[k].type, k);
+ }
+ }
+}
+
+
+
+/* Function: ProbifyTransitionMatrix()
+ *
+ * Purpose: Convert the state transition matrix between two nodes
+ * from counts to probabilities.
+ *
+ * Args: tmx: 6x6 state transition matrix of counts
+ * from_node: e.g. MATP_NODE, type of node we transit from
+ * to_node: type of node we transit to
+ * prior: prior probability distributions
+ *
+ * Return: (void). Values in tmx become probabilities.
+ */
+void
+ProbifyTransitionMatrix(double tmx[STATETYPES][STATETYPES],
+ int from_node,
+ int to_node,
+ struct prior_s *prior)
+{
+ int i,j;
+ double denom;
+
+ for (i = 0; i < STATETYPES; i++)
+ {
+ /* if no transitions to DEL in prior, this must be an unused vector */
+ if (prior->tprior[from_node][to_node][i][0] > 0.0)
+ {
+ denom = 0.0;
+ for (j = 0; j < STATETYPES; j++)
+ {
+ tmx[i][j] = tmx[i][j] + prior->talpha[i] * prior->tprior[from_node][to_node][i][j];
+ denom += tmx[i][j];
+ }
+ for (j = 0; j < STATETYPES; j++)
+ tmx[i][j] /= denom;
+ }
+ }
+}
+
+
+
+/* Function: ProbifySingletEmission()
+ *
+ * Purpose: Convert a singlet emission vector from counts to probabilities.
+ *
+ * Args: emvec: the emission vector
+ * statetype: type of state: uMATL_ST, uMATR_ST, uINSL_ST, uINSR_ST
+ * prior: prior probability distributions
+ *
+ * Return: (void). Values in emvec become probabilities.
+ */
+void
+ProbifySingletEmission(double emvec[ALPHASIZE],
+ int statetype,
+ struct prior_s *prior)
+{
+ int x;
+ double denom;
+ double *em_prior;
+
+ /* Choose the correct prior probability distribution to use.
+ */
+ switch (statetype) {
+ case uMATL_ST: em_prior = prior->matl_prior; break;
+ case uMATR_ST: em_prior = prior->matr_prior; break;
+ case uINSL_ST: em_prior = prior->insl_prior; break;
+ case uINSR_ST: em_prior = prior->insr_prior; break;
+ default: Die("statetype %d is not a singlet emitting state\n", statetype);
+ }
+
+ denom = 0.0;
+ for (x = 0; x < ALPHASIZE; x++)
+ {
+ emvec[x] = emvec[x] + prior->emalpha[StatetypeIndex(statetype)] * em_prior[x];
+ denom += emvec[x];
+ }
+ if (denom > 0.0)
+ for (x = 0; x < ALPHASIZE; x++)
+ emvec[x] /= denom;
+}
+
+
+/* Function: ProbifyPairEmission()
+ *
+ * Purpose: Convert a MATP pairwise emission matrix from counts to probabilities.
+ *
+ * Args: emx: the emission matrix
+ * prior: prior probability distributions
+ *
+ * Return: (void). Values in emx become probabilities.
+ */
+void
+ProbifyPairEmission(double emx[ALPHASIZE][ALPHASIZE],
+ struct prior_s *prior)
+{
+ int x,y;
+ double denom;
+
+ denom = 0.0;
+ for (x = 0; x < ALPHASIZE; x++)
+ for (y = 0; y < ALPHASIZE; y++)
+ {
+ emx[x][y] = emx[x][y] + prior->emalpha[MATP_ST] * prior->matp_prior[x][y];
+ denom += emx[x][y];
+ }
+ if (denom > 0.0)
+ for (x = 0; x < ALPHASIZE; x++)
+ for (y = 0; y < ALPHASIZE; y++)
+ emx[x][y] /= denom;
+}
diff --git a/reformat_main.c b/reformat_main.c
new file mode 100644
index 0000000..e10328e
--- /dev/null
+++ b/reformat_main.c
@@ -0,0 +1,189 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* reformat_main.c
+ * Mon Sep 13 13:06:51 1993
+ *
+ * reformat - reformat sequence files.
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include "squid.h"
+
+#define OPTIONS "dhlru"
+
+char usage[] = "Usage: reformat [-options] <format> <seqfile>\n\
+ Convert between sequence file formats.\n\
+ Available formats are:\n\
+ embl\n\
+ fasta\n\
+ xfasta\n\
+ genbank\n\
+ gcg\n\
+ gcgdata\n\
+ msf\n\
+ strider\n\
+ zuker\n\
+ ig\n\
+ nbrf\n\
+ pir\n\
+ selex\n\
+ squid\n\
+ raw\n\n\
+ Available options are:\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\
+ -h : print short help and usage info\n";
+
+struct seqfmt_s { char *formatname; int fmt; } seqfmt[] =
+{
+ { "embl", kEMBL },
+ { "fasta", kPearson },
+ { "xfasta", kXPearson},
+ { "genbank", kGenBank },
+ { "gcg", kGCG },
+ { "gcgdata", kGCGdata },
+ { "msf", kMSF },
+ { "strider", kStrider },
+ { "zuker", kZuker },
+ { "ig", kIG },
+ { "nbrf", kNBRF },
+ { "pir", kPIR },
+ { "selex", kSelex },
+ { "squid", kSquid },
+ { "raw", kRaw },
+};
+#define NUMFORMATS (sizeof(seqfmt) / sizeof(struct seqfmt_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 optchar; /* option character, command line */
+ extern int optind;
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ force_rna = FALSE;
+ force_dna = FALSE;
+ force_upper = FALSE;
+ force_lower = FALSE;
+
+ while ((optchar = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optchar) {
+
+ case 'd': force_dna = TRUE; break;
+ case 'l': force_lower = TRUE; break;
+ case 'r': force_rna = TRUE; break;
+ case 'u': force_upper = TRUE; break;
+
+ case 'h':
+ printf("reformat %s, %s\n%s\n", squid_version, squid_date, usage);
+ exit(EXIT_SUCCESS);
+ default:
+ Die("%s\n", usage);
+ }
+
+ 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
+ ***********************************************/
+
+ outfmt = kUnknown;
+ for (i = 0; i < NUMFORMATS; i++)
+ if (strcasecmp(format, seqfmt[i].formatname) == 0)
+ outfmt = seqfmt[i].fmt;
+
+ if (outfmt == kUnknown)
+ Die("Unknown output format %s\n%s", format, usage);
+
+ /***********************************************
+ * Reformat the file, printing to stdout.
+ ***********************************************/
+
+ if (! SeqfileFormat(seqfile, &fmt, NULL))
+ Die("Can't determine format of file %s\n", seqfile);
+
+ if ((fmt == kMSF || fmt == kSelex || fmt == kClustal) &&
+ (outfmt == kMSF || outfmt == kSelex))
+ {
+ char **aseqs;
+ int num;
+ AINFO ainfo;
+
+ ReadAlignment(seqfile, fmt, &aseqs, &num, &ainfo);
+
+ for (i = 0; i < num; i++)
+ {
+ if (force_dna) ToDNA(aseqs[i]);
+ if (force_rna) ToRNA(aseqs[i]);
+ if (force_lower) s2lower(aseqs[i]);
+ if (force_upper) s2upper(aseqs[i]);
+ }
+
+ switch (outfmt) {
+ case kMSF: WriteMSF(stdout, aseqs, num, &ainfo); break;
+ case kSelex: WriteSELEX(stdout, aseqs, num, &ainfo, 50); break;
+ }
+ FreeAlignment(aseqs, num, &ainfo);
+ }
+ else if (outfmt == kMSF || outfmt == kSelex)
+ {
+ Die("Sorry, you can't make alignment files from unaligned files");
+ }
+ 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 (force_lower) s2lower(seq);
+ if (force_upper) s2upper(seq);
+
+ WriteSeq(stdout, outfmt, seq, &sqinfo);
+ FreeSequence(seq, &sqinfo);
+ }
+ SeqfileClose(dbfp);
+ }
+ return 0;
+}
diff --git a/revcomp.c b/revcomp.c
new file mode 100644
index 0000000..1363099
--- /dev/null
+++ b/revcomp.c
@@ -0,0 +1,61 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* revcomp.c
+ *
+ * Reverse complement of a IUPAC character string
+ *
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <ctype.h>
+#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 = sre_tolower((int) *fwdp);
+ fwdp++;
+ bckp--;
+ }
+ *fwdp = '\0';
+ return comp;
+}
+
diff --git a/revcomp_main.c b/revcomp_main.c
new file mode 100644
index 0000000..83d7bc2
--- /dev/null
+++ b/revcomp_main.c
@@ -0,0 +1,90 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* main for revcomp
+ *
+ * revcomp - generate reverse complement of sequences
+ * SRE, Thu Aug 5 17:36:57 1993
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "squid.h"
+
+#define OPTIONS "h"
+
+char usage[] = "Usage: revcomp [-options] <seqfile>\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
+ ***********************************************/
+
+ while ((optchar = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optchar) {
+ case 'h':
+ printf("revcomp %s, %s\n%s\n", squid_version, squid_date, usage);
+ exit(EXIT_SUCCESS);
+ default:
+ Die("%s\n", usage);
+ }
+
+ if (argc - optind != 1) Die("%s\n", usage);
+ seqfile = argv[optind];
+
+ if (! SeqfileFormat(seqfile, &fmt, NULL))
+ Die("Failed to determine format of file %s", seqfile);
+ if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL)
+ Die("Failed to open sequence file %s for reading", seqfile);
+
+ while (ReadSeq(dbfp, fmt, &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, kPearson, rev, &sqinfo);
+
+ free(rev);
+ FreeSequence(seq, &sqinfo);
+ }
+
+ SeqfileClose(dbfp);
+ return 0;
+}
diff --git a/save.c b/save.c
new file mode 100644
index 0000000..6a37015
--- /dev/null
+++ b/save.c
@@ -0,0 +1,315 @@
+/* save.c
+ * Saving models to disk, and reading them back in
+ * SRE, Wed Sep 8 17:14:43 1993
+ *
+ * Both binary and flat text save formats are supported.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "funcs.h"
+#include "structs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+/* The magic number for our binary file is "cm20" + 0x80808080 */
+static int v20magic = 0xe3edb2b0;
+
+static int read_cm20 (FILE *fp, struct cm_s **ret_cm);
+static int read_bincm20(FILE *fp, struct cm_s **ret_cm);
+
+/* Function: WriteCM()
+ *
+ * Purpose: Print a flat text copy of the data from a model
+ * to a file handle.
+ *
+ * Returns: 1 on success, 0 on failure.
+ */
+int
+WriteCM(FILE *fp, struct cm_s *cm)
+{
+ int i, j, k;
+
+ /* header info */
+ fprintf(fp, "### cove V2\n");
+ fprintf(fp, "%d \tnodes\n", cm->nodes);
+
+ /* over all nodes, 0..cm->nodes-1 */
+ for (k = 0; k < cm->nodes; k++)
+ {
+ fprintf(fp, "### node %d type %d\n", k, cm->nd[k].type);
+ fprintf(fp, "%d %d\n", cm->nd[k].nxt, cm->nd[k].nxt2);
+
+ /* transitions */
+ for (i = 0; i < STATETYPES; i++)
+ {
+ for (j = 0; j < STATETYPES; j++)
+ fprintf(fp, "%.5f ", cm->nd[k].tmx[i][j]);
+ putc('\n', fp);
+ }
+ /* INSL emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%.5f ", cm->nd[k].il_emit[i]);
+ fputs("# INSL\n", fp);
+ /* INSR emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%.5f ", cm->nd[k].ir_emit[i]);
+ fputs("# INSR\n", fp);
+
+ /* MATP emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ for (j = 0; j < ALPHASIZE; j++)
+ fprintf(fp, "%.5f ", cm->nd[k].mp_emit[i][j]);
+ fputs("# MATP\n", fp);
+ }
+ /* MATL emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%.5f ", cm->nd[k].ml_emit[i]);
+ fputs("# MATL\n", fp);
+ /* MATR emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ fprintf(fp, "%.5f ", cm->nd[k].mr_emit[i]);
+ fputs("# MATR\n", fp);
+ }
+ return 1;
+}
+
+
+
+/* Function: WriteBinaryCM()
+ *
+ * Purpose: Save a model in binary format; somewhat nonportable
+ * but much more compressed.
+ *
+ * Args: fp - open file pointer to write to
+ * cm - model to save
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+WriteBinaryCM(FILE *fp, struct cm_s *cm)
+{
+ int k; /* counter for nodes */
+
+ /* Write the four-byte magic number. It identifies the file
+ * as binary (because the high bits are set), and identifies
+ * the major version of the program. It can be used to
+ * identify and possibly humor byte-swapped architectures,
+ * although we don't bother for now.
+ */
+ fwrite((void *) &v20magic, 4, 1, fp);
+
+ /* header info */
+ fwrite((void *) &(cm->nodes), sizeof(int), 1, fp);
+
+ /* loop over all nodes in model */
+ for (k = 0; k < cm->nodes; k++)
+ {
+ /* type of node */
+ fwrite((void *) &cm->nd[k].type, sizeof(int), 1, fp);
+
+ /* indices of child nodes */
+ fwrite((void *) &cm->nd[k].nxt, sizeof(int), 1, fp);
+ fwrite((void *) &cm->nd[k].nxt2, sizeof(int), 1, fp);
+
+ /* transitions */
+ fwrite((void *) cm->nd[k].tmx, sizeof(double), STATETYPES*STATETYPES, fp);
+
+ /* INS emissions */
+ fwrite((void *) cm->nd[k].il_emit, sizeof(double), ALPHASIZE, fp);
+ fwrite((void *) cm->nd[k].ir_emit, sizeof(double), ALPHASIZE, fp);
+
+ /* MAT emissions */
+ fwrite((void *) cm->nd[k].mp_emit, sizeof(double), ALPHASIZE * ALPHASIZE, fp);
+ fwrite((void *) cm->nd[k].ml_emit, sizeof(double), ALPHASIZE, fp);
+ fwrite((void *) cm->nd[k].mr_emit, sizeof(double), ALPHASIZE, fp);
+ }
+ return 1;
+}
+
+
+
+
+/* Function: ReadCM()
+ *
+ * Purpose: Read a flat text copy of the data from a model
+ * from a file.
+ *
+ * Returns: 1 on success, 0 on failure.
+ */
+int
+ReadCM(char *filename, struct cm_s **ret_cm)
+{
+ FILE *fp;
+ char buffer[512];
+ int magic_number;
+
+ /* Open file for reading
+ */
+ if ((fp = fopen(filename, "r")) == NULL)
+ {
+ Warn("Cannot open model file %s for reading", filename);
+ return 0;
+ }
+
+ /* Look for "magic" header and dispatch reading
+ * to the appropriate routine. First we check the leading
+ * 4 bytes to see if it's a binary save file.
+ */
+ if (! fread((void *) &magic_number, 4, 1, fp))
+ Die("Failed to read magic number from model file %s", filename);
+ if (magic_number == v20magic)
+ {
+ if (! read_bincm20(fp, ret_cm))
+ Die("Failed to read binary model file %s", filename);
+ }
+ else
+ {
+ rewind(fp);
+
+ if (fgets(buffer, 512, fp) == NULL)
+ {
+ Warn("ain't no data in the model file %s, pal", filename);
+ return 0;
+ }
+ if (strncmp(buffer, "### cove V2", 11) == 0)
+ {
+ if (! read_cm20(fp, ret_cm)) return 0;
+ }
+ else
+ {
+ Warn("File %s is not a recognized covariance model format", filename);
+ return 0;
+ }
+ }
+
+ /* We're vulnerable to some roundoff error when we've read
+ * files in; make sure all probabilities sum to 1.
+ */
+ NormalizeCM(*ret_cm);
+ fclose(fp);
+ return 1;
+}
+
+
+/* Function: read_cm20()
+ *
+ * Purpose: Read flat text model files from version 2.0 of the
+ * package. The file pointer fp is positioned on the line
+ * just after the "magic" header. Allocates, reads in,
+ * and returns the model.
+ */
+static int
+read_cm20(FILE *fp, struct cm_s **ret_cm)
+{
+ struct cm_s *cm;
+ int i, j, k;
+ int nodes;
+ int ret = 0;
+
+
+ /* header info */
+ ret = fscanf(fp, "%d \tnodes\n", &nodes);
+
+ /* Given that header info, alloc for a model.
+ */
+ cm = AllocCM(nodes);
+ if (cm == NULL) { Warn("Failed to allocate model"); return 0; }
+
+ /* over all nodes, 0..nodes-1 */
+ for (k = 0; k < nodes; k++)
+ {
+ ret = fscanf(fp, "### node %*d");
+ ret = fscanf(fp, " type %d\n", &cm->nd[k].type);
+ ret = fscanf(fp, "%d %d\n", &cm->nd[k].nxt, &cm->nd[k].nxt2);
+
+ /* transitions */
+ for (i = 0; i < STATETYPES; i++)
+ {
+ for (j = 0; j < STATETYPES; j++)
+ ret = fscanf(fp, "%lf ", &cm->nd[k].tmx[i][j]);
+ ret = fscanf(fp, "\n");
+ }
+
+ /* INSL emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ ret = fscanf(fp, "%lf ", &cm->nd[k].il_emit[i]);
+ ret = fscanf(fp, "# INSL\n");
+ /* INSR emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ ret = fscanf(fp, "%lf ", &cm->nd[k].ir_emit[i]);
+ ret = fscanf(fp, "# INSR\n");
+
+ /* MATP emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ {
+ for (j = 0; j < ALPHASIZE; j++)
+ ret = fscanf(fp, "%lf ", &cm->nd[k].mp_emit[i][j]);
+ ret = fscanf(fp, "# MATP\n");
+ }
+ /* MATL emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ ret = fscanf(fp, "%lf ", &cm->nd[k].ml_emit[i]);
+ ret = fscanf(fp, "# MATL\n");
+ /* MATR emissions */
+ for (i = 0; i < ALPHASIZE; i++)
+ ret = fscanf(fp, "%lf ", &cm->nd[k].mr_emit[i]);
+ ret = fscanf(fp, "# MATR\n");
+ }
+ *ret_cm = cm;
+ return 1;
+}
+
+
+
+/* Function: read_bincm20()
+ *
+ * Purpose: Read binary save files.
+ *
+ * Args: fp - open file pointer for reading, positioned after magic number
+ * ret_cm - RETURN: model
+ *
+ * Return: 1 on success, 0 on failure
+ */
+static int
+read_bincm20(FILE *fp, struct cm_s **ret_cm)
+{
+ struct cm_s *cm;
+ int nodes;
+ int k; /* counter for nodes */
+
+ if (! fread((void *) &(nodes), sizeof(int), 1, fp)) return 0;
+
+ /* now create space for CM. */
+ cm = AllocCM(nodes);
+ if (cm == NULL) return 0;
+ /* everything else is nodes */
+ for (k = 0; k < nodes; k++)
+ {
+ /* type of node */
+ if (! fread((void *) &cm->nd[k].type, sizeof(int), 1, fp)) return 0;
+
+ /* indices of child nodes */
+ if (! fread((void *) &cm->nd[k].nxt, sizeof(int), 1, fp)) return 0;
+ if (! fread((void *) &cm->nd[k].nxt2, sizeof(int), 1, fp)) return 0;
+
+ /* transitions */
+ if (! fread((void *) cm->nd[k].tmx, sizeof(double), STATETYPES*STATETYPES, fp)) return 0;
+
+ /* INS emissions */
+ if (! fread((void *) cm->nd[k].il_emit, sizeof(double), ALPHASIZE, fp)) return 0;
+ if (! fread((void *) cm->nd[k].ir_emit, sizeof(double), ALPHASIZE, fp)) return 0;
+
+ /* MAT emissions */
+ if (! fread((void *) cm->nd[k].mp_emit, sizeof(double), ALPHASIZE*ALPHASIZE, fp)) return 0;
+ if (! fread((void *) cm->nd[k].ml_emit, sizeof(double), ALPHASIZE, fp)) return 0;
+ if (! fread((void *) cm->nd[k].mr_emit, sizeof(double), ALPHASIZE, fp)) return 0;
+ }
+ *ret_cm = cm;
+ return 1;
+}
diff --git a/scan_main.c b/scan_main.c
new file mode 100644
index 0000000..a7410bf
--- /dev/null
+++ b/scan_main.c
@@ -0,0 +1,306 @@
+/* scan_main.c
+ * Mon Jan 31 11:04:57 1994
+ *
+ * main() for database scanning with a covariance model.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <math.h>
+
+#ifdef NEED_GETOPTH
+#include <getopt.h>
+#endif
+
+#include "structs.h"
+#include "funcs.h"
+#include "squid.h"
+#include "version.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define OPTIONS "cg:ho:t:w:D:E:F"
+
+static char usage[] = "\
+Usage: covels [-options] <CM file> <seqfile>\n\
+where options are:\n\
+ -c : do complementary strand too\n\
+ -g <fracGC> : set background expected GC content (0.5 default)\n\
+ -h : print short help and version info\n\
+ -o <file> : save hits in <file>\n\
+ -t <thresh> : set score reporting threshold\n\
+ -w <window> : set scanning window size\n\
+ CRASH PROTECTION OPTIONS:\n\
+ -D <filename> : save name of last sequence processed\n\
+ EXPERIMENTAL OPTIONS:\n\
+ -E : set epsilon for fast search\n\
+ -F : fast heuristic search\n";
+
+
+static char banner[] = "covels - scan sequences for matches to an RNA covariance model";
+
+static char *ext_seqname;
+static int ext_seqlen;
+static int in_complement;
+static FILE *ext_ofp;
+
+static int print_hit(int i, int j, double sc);
+
+int
+main(int argc, char **argv)
+{
+ char *seq; /* a sequence to score */
+ SQINFO sqinfo; /* info about sequence */
+ char *rev; /* rev complement of seq */
+ char *seqfile; /* sequence file */
+ int fmt; /* format of sequence file */
+ SQFILE *dbfp; /* open sequence file for reading */
+ char *cmfile; /* file containing covariance model */
+ struct cm_s *cm; /* model */
+ struct istate_s *icm; /* integer log-odds search model */
+ struct pstate_s *pcm; /* rearranged probability model */
+ int statenum; /* # of states in icm, pcm */
+ int *minb, *maxb; /* bounds for fast heuristic search */
+ double rfreq[ALPHASIZE]; /* random model */
+
+ int fast; /* TRUE if trying fast heuristic search */
+ double epsilon; /* how much probability we're willing to lose */
+ int do_complement; /* TRUE if searching complementary strand too */
+ double thresh; /* threshold score for reporting a match */
+ char *outfile; /* save file for scores */
+ int window; /* size of search window, symbols */
+ char *donefile; /* crash protection: save name of last seq */
+ double gcfrac; /* background gc fraction */
+
+#ifdef MEMDEBUG
+ unsigned long histid1, histid2, orig_size, curr_size;
+#endif
+
+ int optc;
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ do_complement = FALSE;
+ thresh = 0.0;
+ window = 100;
+ outfile = NULL;
+ fast = FALSE;
+ epsilon = 1e-9;
+ donefile = NULL;
+ gcfrac = 0.5;
+
+ while ((optc = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optc) {
+
+ case 'c': do_complement = TRUE; break;
+ case 'g': gcfrac = (double) atof(optarg); break;
+ case 'o': outfile = optarg; break;
+ case 't': thresh = (double) atof(optarg); break;
+ case 'w': window = atoi(optarg); break;
+
+ case 'D': donefile = optarg; break;
+ case 'E': epsilon = atof(optarg); break;
+ case 'F': fast = TRUE; break;
+
+ case 'h':
+ printf("%s\n version %s (%s)\n%s\n", banner, RELEASE, RELEASEDATE, usage);
+ exit(0);
+
+ default: Die("unrecognized option %c\n", optc);
+ }
+
+ if (argc - optind != 2)
+ Die("%s\n", usage);
+
+ cmfile = argv[argc-2];
+ seqfile = argv[argc-1];
+
+ /* The random model probabilities
+ */
+ rfreq[1] = rfreq[2] = gcfrac / 2.0;
+ rfreq[0] = rfreq[3] = (1.0 - gcfrac) / 2.0;
+
+ if (! SeqfileFormat(seqfile, &fmt, NULL))
+ Die("Failed to determine format of sequence database %s", seqfile);
+
+ if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL)
+ Die("Failed to open sequence file %s for reading", seqfile);
+
+ if (! ReadCM(cmfile, &cm))
+ Die("Failed to read model from file %s", cmfile);
+
+ if (! RearrangeCM(cm, rfreq, &icm, &statenum))
+ Die("Failed to create search CM");
+
+ /* Fast version.
+ * Use lower/upper bounds on possible subsequence lengths
+ * for each state. These are obtained probabilistically.
+ */
+ if (fast)
+ {
+ double **lmx;
+
+ if (! MakePCM(cm, &pcm, &statenum))
+ Die("Failed to rearrange CM for bounds calculations");
+ NormalizePCM(pcm, statenum);
+ LengthDistribution(pcm, statenum, window, &lmx);
+ LengthBounds(lmx, statenum, window, epsilon, &minb, &maxb);
+ Free2DArray(lmx, statenum);
+ free(pcm);
+ }
+
+ ext_ofp = NULL;
+ if (outfile != NULL)
+ if ((ext_ofp = fopen(outfile, "w")) == NULL)
+ Die("Failed to open score output file %s for writing", outfile);
+
+ /***********************************************
+ * Print banner
+ ***********************************************/
+
+ puts(banner);
+ printf(" version %s, %s\n\n", RELEASE, RELEASEDATE);
+
+ printf("---------------------------------------------------\n");
+ printf("Database to search/score: %s\n", seqfile);
+ printf("Model: %s\n", cmfile);
+ printf("Reporting threshold: %.2f\n", thresh);
+ printf("Maximum match size: %d\n", window);
+ printf("Complementary strand searched: %s\n", do_complement? "yes":"no");
+ if (outfile != NULL)
+ printf("Scores saved to file: %s\n", outfile);
+ printf("GC%% of background model: %.0f%%\n", (gcfrac*100.));
+ printf("---------------------------------------------------\n");
+ puts("");
+
+ /***********************************************
+ * Score each sequence
+ ***********************************************/
+
+#ifdef MEMDEBUG
+ orig_size = malloc_size(&histid1);
+#endif
+
+ while (ReadSeq(dbfp, fmt, &seq, &sqinfo))
+ {
+ s2upper(seq);
+
+ /* some communication to report_local through statics */
+ ext_seqname = sqinfo.name;
+ ext_seqlen = sqinfo.len;
+ in_complement = FALSE;
+
+ if (fast)
+ {
+ if (! FastViterbiScan(icm, statenum, minb, maxb, seq, window, thresh, print_hit))
+ Die("Search across sequence %s failed", sqinfo.name);
+ }
+ else if (! ViterbiScan(icm, statenum, seq, window, thresh, print_hit))
+ Die("Search across sequence %s failed", sqinfo.name);
+
+ if (do_complement)
+ {
+ in_complement = TRUE;
+
+ if ((rev = (char *) malloc ((sqinfo.len+1) * sizeof(char))) == NULL)
+ Die("malloc failed");
+ revcomp(rev, seq);
+
+ if (fast)
+ {
+ if (! FastViterbiScan(icm, statenum, minb, maxb, rev, window, thresh, print_hit))
+ Die("Search across sequence %s failed", sqinfo.name);
+ }
+ else if (! ViterbiScan(icm, statenum, rev, window, thresh, print_hit))
+ Die("Search across complement of sequence %s failed", sqinfo.name);
+
+ free(rev);
+ }
+
+ if (donefile != NULL)
+ {
+ FILE *dfp;
+ if ((dfp = fopen(donefile, "w")) == NULL)
+ Die("Failed to open file for saving name of last finished sequence");
+ fprintf(dfp, "%s\n", sqinfo.name);
+ fclose(dfp);
+ }
+
+
+ FreeSequence(seq, &sqinfo);
+#ifdef MEMDEBUG
+ curr_size = malloc_size(&histid2);
+
+ if (curr_size != orig_size)
+ {
+ Warn("memory leak: current size %ul, starting size %ul\n", curr_size, orig_size);
+ malloc_list(2,histid1, histid2);
+ }
+#endif
+ }
+
+ if (donefile != NULL)
+ {
+ FILE *dfp;
+ if ((dfp = fopen(donefile, "w")) == NULL)
+ Die("Failed to open file for saving name of last finished sequence");
+ fprintf(dfp, "Search complete.");
+ fclose(dfp);
+ }
+
+
+ if (fast)
+ {
+ free(minb);
+ free(maxb);
+ }
+ free(icm);
+ FreeCM(cm);
+
+ SeqfileClose(dbfp);
+ return 0;
+}
+
+
+/* Function: print_hit()
+ *
+ * Purpose: Simple function that determines the format of printing
+ * out scanning hits. It gets the start point, end point,
+ * and score of the match; any other info it wants to print
+ * must come through static external variables in this file.
+ *
+ * Args: i - start point of match
+ * j - end point of match
+ * sc - score of match
+ *
+ * Return: (void)
+ */
+static int
+print_hit(int i,
+ int j,
+ double sc)
+{
+ if (in_complement)
+ printf("%6.2f %5d %5d : %s\n", sc, ext_seqlen-i+1, ext_seqlen-j+1, ext_seqname);
+ else
+ printf("%6.2f %5d %5d : %s\n", sc, i, j, ext_seqname);
+
+ if (ext_ofp != NULL)
+ {
+ if (in_complement)
+ fprintf(ext_ofp, "%6.2f %5d %5d : %s\n",
+ sc, ext_seqlen-i+1, ext_seqlen-j+1, ext_seqname);
+ else
+ fprintf(ext_ofp, "%6.2f %5d %5d : %s\n", sc, i, j, ext_seqname);
+ fflush(ext_ofp);
+ }
+ return 1;
+}
diff --git a/score_main.c b/score_main.c
new file mode 100644
index 0000000..04f0f9b
--- /dev/null
+++ b/score_main.c
@@ -0,0 +1,209 @@
+/* score_main.c
+ * Fri Feb 18 10:31:48 1994
+ *
+ * main() for scoring test sequences with a model.
+ * Also, can print out alignments of model to sequence so
+ * that the pairwise assignments can be seen.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <math.h>
+
+#ifdef NEED_GETOPTH
+#include <getopt.h>
+#endif
+
+#include "structs.h"
+#include "funcs.h"
+#include "squid.h"
+#include "version.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define OPTIONS "ag:ms"
+
+static char usage[] = "\
+Usage: coves [-options] <CM file> <seqfile>\n\
+where options are:\n\
+ -a : show all pairs, not just Watson-Crick\n\
+ -g <gcfrac> : set expected background GC composition (default 0.5)\n\
+ -m : mountain representation of structural alignment\n\
+ -s : secondary structure string representation of \n\
+ structural alignment\n";
+
+static char banner[] = "\
+coves - scoring and structure prediction of RNA sequences\n\
+ using a covariance model";
+
+int
+main(int argc, char **argv)
+{
+ char *seq; /* a sequence to score */
+ SQINFO sqinfo; /* info about seq */
+ char *seqfile; /* sequence file */
+ int fmt; /* format of sequence file */
+ SQFILE *dbfp; /* open sequence file for reading */
+ char *cmfile; /* file containing covariance model */
+ struct cm_s *cm; /* model */
+ double score; /* score of alignment */
+ struct trace_s *tr; /* traceback of alignment */
+ struct align_s *ali; /* alignment of seq to model */
+ char *aseq; /* "aligned" sequence string */
+ char *khstruct; /* secondary structure string */
+ char buffer[61]; /* output buffer for structures */
+ int len; /* length of aseq, khstruct */
+ int apos; /* position in aseq, khstruct */
+ double rfreq[ALPHASIZE]; /* expected background symbol frequencies */
+ struct istate_s *icm; /* integer log odds model */
+ int statenum; /* # of states in icm */
+
+ int do_khstructure; /* TRUE if we print a structure string */
+ int do_mountain; /* TRUE if we show a mountain structure */
+ int watsoncrick; /* TRUE if only canonical pairs are indicated */
+ double gcfrac; /* expected background GC fraction */
+
+#ifdef MEMDEBUG
+ unsigned long histid1, histid2, orig_size, curr_size;
+#endif
+
+ int optc;
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ do_khstructure = FALSE;
+ do_mountain = FALSE;
+ watsoncrick = TRUE;
+ gcfrac = 0.5;
+
+ while ((optc = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optc) {
+
+ case 'a': watsoncrick = FALSE; break;
+ case 'g': gcfrac = (double) atof(optarg); break;
+ case 'm': do_mountain = TRUE; break;
+ case 's': do_khstructure = TRUE; break;
+
+ case 'h':
+ printf("%s\n version %s (%s)\n%s\n", banner, RELEASE, RELEASEDATE, usage);
+ exit(0);
+
+ default: Die("unrecognized option %c\n", optc);
+ }
+
+ if (argc - optind != 2)
+ Die("%s\n", usage);
+
+ cmfile = argv[argc-2];
+ seqfile = argv[argc-1];
+
+ if (! SeqfileFormat(seqfile, &fmt, NULL))
+ Die("Failed to determine format of sequence database %s", seqfile);
+
+ if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL)
+ Die("Failed to open sequence file %s for reading", seqfile);
+
+ if (! ReadCM(cmfile, &cm))
+ Die("Failed to read model from file %s", cmfile);
+
+ rfreq[1] = rfreq[2] = gcfrac / 2.;
+ rfreq[0] = rfreq[3] = (1. - gcfrac) / 2.;
+
+ if (! RearrangeCM(cm, rfreq, &icm, &statenum))
+ Die("failed to make integer log odds model");
+
+ /***********************************************
+ * Print banner
+ ***********************************************/
+
+ puts(banner);
+ printf(" version %s, %s\n\n", RELEASE, RELEASEDATE);
+
+ printf("---------------------------------------------------\n");
+ printf("Database to search/score: %s\n", seqfile);
+ printf("Model: %s\n", cmfile);
+ printf("GC%% of background model: %.0f%%\n", (gcfrac*100.));
+ printf("---------------------------------------------------\n");
+ puts("");
+
+ /***********************************************
+ * Score each sequence
+ ***********************************************/
+
+#ifdef MEMDEBUG
+ orig_size = malloc_size(&histid1);
+#endif
+
+ while (ReadSeq(dbfp, fmt, &seq, &sqinfo))
+ {
+ char *prepseq;
+ prepseq = Strdup(seq);
+ PrepareSequence(prepseq);
+
+ if (! ViterbiAlign(icm, statenum, prepseq, &score, &tr))
+ Die("ViterbiAlign() failed on sequence %s", sqinfo.name);
+ free(prepseq);
+
+ printf("%6.2f bits : %s\n", score, sqinfo.name);
+
+ if (do_khstructure || do_mountain)
+ {
+ if (! Trace2ali(seq, tr, watsoncrick, &ali)) Die("Trace2ali failed");
+
+ if (do_khstructure)
+ {
+ if (! Align2kh(ali, &aseq, &khstruct)) Die("Align2kh failed\n");
+
+ /* Print out the sequence and structure
+ */
+ len = strlen(aseq);
+ buffer[60] = '\0';
+ for (apos = 1; apos <= len; apos += 60)
+ {
+ strncpy(buffer, aseq + apos - 1, 60);
+ printf(" %10s %s\n", sqinfo.name, buffer);
+ strncpy(buffer, khstruct + apos - 1, 60);
+ printf(" %10s %s\n", sqinfo.name, buffer);
+ puts("");
+ }
+ free(aseq);
+ free(khstruct);
+ }
+
+ if (do_mountain)
+ {
+ PrintAliLandscape(stdout, cm, ali);
+ puts("");
+ }
+
+ Free_align(ali);
+ }
+
+ FreeSequence(seq, &sqinfo);
+
+#ifdef MEMDEBUG
+ curr_size = malloc_size(&histid2);
+ if (curr_size != orig_size)
+ {
+ Warn("malloc-debug: current size %ul, starting size %ul\n", curr_size, orig_size);
+ malloc_list(2,histid1, histid2);
+ }
+#endif
+
+ }
+
+ SeqfileClose(dbfp);
+ FreeCM(cm);
+ free(icm);
+ return 0;
+}
+
+
diff --git a/scorestack.c b/scorestack.c
new file mode 100644
index 0000000..7c00b73
--- /dev/null
+++ b/scorestack.c
@@ -0,0 +1,250 @@
+/* scorestack.c
+ * SRE, Tue Aug 17 09:50:39 1993
+ *
+ * For unidirectional scanning search procedures, implement
+ * a score reporting system that filters out hits that overlap
+ * with higher-scoring printed scores.
+ *
+ * The simplest rule to use would be to keep a record of the last hit;
+ * on receiving a new hit: 1) if new hit overlaps with last hit and
+ * new hit is higher, replace last with new; 2) if new hit overlaps
+ * with last hit and new hit is lower, ignore new; 3) if new hit
+ * does not overlap with last, report last and assign new to last.
+ * At end, report last. This is essentially the rule used by the
+ * original hmm and cove scanning procedures.
+ *
+ * There is a small weakness in this strategy, in that for three
+ * hits A > B > C which all overlap, only A will be reported; but
+ * although A overlaps B and B overlaps C, A may not overlap C.
+ * (Will this ever happen in reality? I dunno. I don't want to
+ * be surprised.)
+ *
+ * Thus, this more complicated strategy.
+ * Keep a stack of last hits.
+ * On receiving a new hit:
+ * 1) if new overlaps last and new > last, push new onto stack
+ * 2) if new overlaps last and new <= last, ignore new
+ * 3) if new doesn't overlap, resolve stack; start new stack and
+ * push new onto it.
+ * At end: resolve stack.
+ *
+ * Stack resolution:
+ * set "previously reported hit" to -1,-1 so it won't overlap w/ anything
+ * while something is in the stack:
+ * pop top hit off stack
+ * if it overlaps with previously reported hit, continue;
+ * if it doesn't overlap, report it
+ *
+ * Testing overlap:
+ * Given two subsequences with endpoints al,ar and bl, br,
+ * with no other knowledge, we would need to test whether any of
+ * the four endpoints are within the opposing subsequence.
+ * However, because we're scanning unidirectionally, we know
+ * that the new right end is greater than the old right end,
+ * so we only need to test whether the old right end >= new left
+ * end.
+ *
+ * External function:
+ *
+ * ReportScanHit() - report a hit
+ * or, if reported coords are -1,-1, resolve old
+ * stack, cleanup and exit.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#include "squid.h"
+
+/* Data structure for the stack of previous hits;
+ * declarations of the functions to manipulate it.
+ */
+struct hitstack_s {
+ int left; /* left coord of matched segment */
+ int right; /* right coord of matched segment */
+ double score; /* score of match */
+ struct hitstack_s *nxt; /* pointer to next elem in stack */
+};
+static struct hitstack_s *init_hitstack(void);
+static void push_hitstack(struct hitstack_s *hstack,int left,int right, double score);
+static int pop_hitstack(struct hitstack_s *hstack, int *ret_left, int *ret_right, double *ret_score);
+static void free_hitstack(struct hitstack_s *hstack);
+
+
+
+
+/* Function: ReportScanHit()
+ *
+ * Purpose: Caller reports a hit during a search scan, and
+ * provides a pointer to a function we can call to
+ * print non-overlapping hits. Caller reports
+ * -1,-1 for coords to request cleanup and end.
+ *
+ * Two special cases must be dealt with:
+ * INIT: If the hit stack hasn't been started yet,
+ * we need to initialize it before doing
+ * anything else
+ * END: If coords are -1,-1, we resolve the stack
+ * and cleanup; caller is finished with us
+ * for now.
+ *
+ * Args: left - left coord of hit segment
+ * right - right coord of hit segment
+ * score - score of the hit
+ * print_hit - pointer to a function to print
+ * nonoverlapping hits
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+ReportScanHit(int left,
+ int right,
+ double score,
+ int (*print_hit)(int,int,double))
+{
+ static struct hitstack_s *hstack = NULL; /* static local handle; set to NULL on 1st entry */
+ static int oldright = -1; /* -1 is guaranteed not to overlap w/ first report */
+ int oldleft;
+ int newleft, newright;
+ double newscore;
+
+ /* Check whether this is first entry;
+ * init hit stack if so.
+ */
+ if (hstack == NULL) hstack = init_hitstack();
+
+
+ /* Check whether we have to resolve the old stack:
+ * if caller is reporting it's done (-1,-1 coords),
+ * or if new hit doesn't overlap last stacked hit.
+ */
+ if (left > oldright || (left == -1 && right == -1))
+ {
+ /* Stack resolution.
+ */
+ oldleft = INT_MAX;
+ while (pop_hitstack(hstack, &newleft, &newright, &newscore))
+ {
+ /* does this hit not overlap w/ previous printed one? */
+ if (newright < oldleft)
+ {
+ (*print_hit)(newleft, newright, newscore);
+ oldleft = newleft;
+ }
+ }
+ free_hitstack(hstack);
+ hstack = NULL;
+ oldright = -1;
+
+ /* Start new stack, if not done.
+ */
+ if (left != -1 || right != -1)
+ {
+ hstack = init_hitstack();
+ push_hitstack(hstack, left, right, score);
+ oldright = right;
+ }
+ }
+
+
+ /* else, they overlap; if new reported score is better than last one,
+ * push new one. We're guaranteed to have something in
+ * the stack, so we can use the score in hstack->nxt->score.
+ * Reset oldright to be the new right edge of the stack, if we add something.
+ */
+ else if (score > hstack->nxt->score)
+ {
+ push_hitstack(hstack, left, right, score);
+ oldright = right;
+ }
+
+ /* else, they overlap and the newly reported score
+ * isn't better, so we ignore it.
+ */
+ return 1;
+}
+
+
+
+
+
+
+
+
+/* Functions: init_hitstack()
+ * push_hitstack()
+ * pop_hitstack()
+ * free_hitstack()
+ *
+ * Purpose: Implementation of the pushdown stack for
+ * keeping old hit positions and scores.
+ *
+ * The hitstack has a dummy begin element,
+ * so the first legitimate element is
+ * hstack->nxt. The last legitimate element
+ * has a NULL nxt pointer.
+ */
+static struct hitstack_s *
+init_hitstack(void)
+{
+ struct hitstack_s *hstack;
+
+ if ((hstack = (struct hitstack_s *) malloc (sizeof(struct hitstack_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ hstack->nxt = NULL;
+ return hstack;
+}
+static void
+push_hitstack(struct hitstack_s *hstack,
+ int left,
+ int right,
+ double score)
+{
+ struct hitstack_s *new;
+
+ if ((new = (struct hitstack_s *) malloc (sizeof(struct hitstack_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+
+ new->left = left;
+ new->right = right;
+ new->score = score;
+
+ new->nxt = hstack->nxt;
+ hstack->nxt = new;
+}
+static int
+pop_hitstack(struct hitstack_s *hstack,
+ int *ret_left,
+ int *ret_right,
+ double *ret_score)
+{
+ struct hitstack_s *old;
+
+ if (hstack->nxt == NULL) return 0;
+
+ old = hstack->nxt;
+ hstack->nxt = old->nxt;
+
+ *ret_left = old->left;
+ *ret_right = old->right;
+ *ret_score = old->score;
+
+ free(old);
+ return 1;
+}
+static void
+free_hitstack(struct hitstack_s *hstack)
+{
+ int left, right;
+ double score;
+
+ while (pop_hitstack(hstack, &left, &right, &score) != 0)
+ ; /* do nothing */
+ free(hstack);
+}
diff --git a/selex.c b/selex.c
new file mode 100644
index 0000000..7f21f1c
--- /dev/null
+++ b/selex.c
@@ -0,0 +1,793 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* selex.c
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * SRE, Mon Jan 30 14:41:49 1995:
+ * #=SA side chain % surface accessibility annotation supported
+ *
+ * SELEX format is documented in Docs/formats.tex.
+ ****************************************************************************
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <memory.h>
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+static void homogenize_gapsym(char *s, char gapsym);
+static int copy_alignment_line(char *aseq, int apos, int name_rcol,
+ char *buffer, int lcol, int rcol, char gapsym);
+
+static char commentsyms[] = "%#";
+
+/* Function: ReadSELEX()
+ *
+ * Read multiple aligned sequences from the file seqfile.
+ * Store aligned sequences in aseqs, names in names, and
+ * the number of sequences in num.
+ *
+ * Memory is allocated for aseqs and names, and they must be
+ * free'd by the caller.
+ *
+ * If optional information is desired, a non-NULL ainfo
+ * pointer is passed.
+ *
+ * Returns 1 on success. Returns 0 on failure and sets
+ * squid_errno to indicate the cause of the failure.
+ */
+int
+ReadSELEX(char *seqfile, char ***ret_aseqs, int *ret_num, AINFO *ainfo)
+{
+ FILE *fp; /* ptr to opened seqfile */
+ char **aseqs; /* aligned seqs */
+ int num; /* 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;
+ 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;
+
+ /***************************************************
+ * First pass across file.
+ * Count seqs, get names, determine column info
+ * Determine what sorts of info are active in this file.
+ ***************************************************/
+ ainfo->flags = 0;
+ /* open the file for reading */
+ fp = fopen(seqfile, "r");
+ if (fp == NULL) { squid_errno = SQERR_NOFILE; return 0; }
+
+ /* 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) ainfo->flags |= AINFO_CS;
+ else if (strncmp(buffer, "#=RF", 4) == 0) ainfo->flags |= AINFO_RF;
+ }
+ }
+ 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 *) malloc (sizeof(struct block_struc));
+ else
+ blocks = (struct block_struc *) realloc (blocks, (blocknum+1) * sizeof(struct block_struc));
+ if (blocks == NULL) { squid_errno = SQERR_MEM; return 0; }
+ 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 *) malloc (sizeof(SQINFO));
+ else
+ ainfo->sqinfo = (SQINFO *) realloc (ainfo->sqinfo, (currnum + 1) * sizeof(SQINFO));
+ if (ainfo->sqinfo == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+
+ 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) ainfo->flags |= AINFO_CS;
+ else if (strncmp(buffer, "#=RF", 4) == 0) ainfo->flags |= AINFO_RF;
+
+ 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)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ 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
+ */
+ if ((aseqs = (char **) malloc (num * sizeof(char *))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ if ((ainfo->flags & AINFO_CS) &&
+ (ainfo->cs = (char *) malloc ((alen+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ if ((ainfo->flags & AINFO_RF) &&
+ (ainfo->rf = (char *) malloc ((alen+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+
+ for (i = 0; i < num; i++)
+ {
+ if ((aseqs[i] = (char *) malloc ((alen+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ if ((ainfo->sqinfo[i].flags & SQINFO_SS) &&
+ (ainfo->sqinfo[i].ss = (char *) malloc ((alen+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ if ((ainfo->sqinfo[i].flags & SQINFO_SA) &&
+ (ainfo->sqinfo[i].sa = (char *) malloc ((alen+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ }
+
+ ainfo->alen = alen;
+ ainfo->flags |= AINFO_ALEN;
+
+ /***************************************************
+ * 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)
+ { squid_errno = SQERR_NODATA; return 0; }
+ strcpy(bufcpy, buffer);
+ if ((nptr = strtok(bufcpy, WHITESPACE)) == NULL) continue; /* skip blank lines */
+
+ if (strcmp(nptr, "#=AU") == 0 && /* "author" info */
+ (sptr = strtok(NULL, "\n")) != NULL)
+ {
+ strncpy(ainfo->au,sptr,63);
+ ainfo->au[63] = '\0';
+ ainfo->flags |= AINFO_AUTH;
+ }
+
+ else if (strcmp(nptr, "#=SQ") == 0) /* per-sequence header info */
+ {
+ /* first field is the name */
+ if ((sptr = strtok(NULL, WHITESPACE)) == NULL)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ if (strcmp(sptr, ainfo->sqinfo[headnum].name) != 0) warn_names = TRUE;
+
+ /* second field is the weight */
+ if ((sptr = strtok(NULL, WHITESPACE)) == NULL)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_WGT);
+
+ /* third field is database source id */
+ if ((sptr = strtok(NULL, WHITESPACE)) == NULL)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_ID);
+
+ /* fourth field is database accession number */
+ if ((sptr = strtok(NULL, WHITESPACE)) == NULL)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_ACC);
+
+ /* fifth field is start..stop::olen */
+ if ((sptr = strtok(NULL, ".:")) == NULL)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_START);
+
+ if ((sptr = strtok(NULL, ".:")) == NULL)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ SetSeqinfoString(&(ainfo->sqinfo[headnum]), sptr, SQINFO_STOP);
+
+ if ((sptr = strtok(NULL, ":\t ")) == NULL)
+ { squid_errno = SQERR_FORMAT; return 0; }
+ 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) '.'))
+ { squid_errno = SQERR_FORMAT; return 0; }
+ }
+
+ /* 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) ' '))
+ { squid_errno = SQERR_FORMAT; return 0; }
+ }
+
+ /* 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) '.'))
+ { squid_errno = SQERR_FORMAT; return 0; }
+ }
+
+ /* 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) '.'))
+ { squid_errno = SQERR_FORMAT; return 0; }
+ }
+ /* 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) '.'))
+ { squid_errno = SQERR_FORMAT; return 0; }
+ 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';
+ homogenize_gapsym(ainfo->sqinfo[seqidx].ss, (char) '.');
+ }
+ /* 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';
+ homogenize_gapsym(ainfo->sqinfo[seqidx].sa, (char) '.');
+ }
+ }
+
+ /* NULL-terminate all the strings */
+ if (ainfo->flags & AINFO_RF) ainfo->rf[alen] = '\0';
+ if (ainfo->flags & AINFO_CS) {
+ ainfo->cs[alen] = '\0';
+ homogenize_gapsym(ainfo->cs, (char) '.');
+ }
+ for (seqidx = 0; seqidx < num; seqidx++)
+ {
+ aseqs[seqidx][alen] = '\0';
+ homogenize_gapsym(aseqs[seqidx], (char) '.');
+ }
+
+ /* 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
+ ***************************************************/
+ fclose(fp);
+ free(blocks);
+
+ if (warn_names)
+ Warn("sequences may be in different orders in blocks of %s?", seqfile);
+
+ *ret_num = num;
+ *ret_aseqs = aseqs;
+ return 1;
+}
+
+
+
+
+/* Function: WriteSELEX()
+ *
+ * Write aligned sequences to an open file pointer,
+ * breaking into multiple blocks if the sequences are
+ * long. Number of symbols written per line is set by cpl.
+ * The alignment must be flushed (all aseqs the same length).
+ *
+ * cpl cannot exceed 255.
+ *
+ * May also write optional information from ainfo;
+ * ainfo may be NULL.
+ *
+ * Returns 1 on success. Returns 0 on failure, and sets
+ * squid_errno to indicate the cause.
+ */
+int
+WriteSELEX(FILE *fp, char **aseqs, int num, struct aliinfo_s *ainfo, int cpl)
+{
+ int idx; /* counter for sequences */
+ int namelen; /* maximum name length used */
+ int len; /* tmp variable for name lengths */
+ char buffer[256]; /* buffer for writing seq */
+ int alen;
+ int currpos;
+ char **ss; /* aligned secondary structure strings */
+ char **sa; /* aligned accessibility strings */
+
+ alen = (ainfo->flags & AINFO_ALEN) ? ainfo->alen : strlen(aseqs[0]);
+
+ /* calculate max namelen used */
+ namelen = 0;
+ for (idx = 0; idx < num; idx++)
+ if ((len = strlen(ainfo->sqinfo[idx].name)) > namelen)
+ namelen = len;
+ if (namelen < 6) namelen = 6;
+
+
+ /* Make aligned secondary structure strings
+ */
+ ss = (char **) MallocOrDie(sizeof(char *) * num);
+ sa = (char **) MallocOrDie(sizeof(char *) * num);
+ for (idx = 0; idx < num; idx++)
+ {
+ if (ainfo->sqinfo[idx].flags & SQINFO_SS)
+ MakeAlignedString(aseqs[idx], alen, ainfo->sqinfo[idx].ss, &(ss[idx]));
+ if (ainfo->sqinfo[idx].flags & SQINFO_SA)
+ MakeAlignedString(aseqs[idx], alen, ainfo->sqinfo[idx].sa, &(sa[idx]));
+ }
+
+ /* Write header info
+ */
+ if (ainfo->flags & AINFO_AUTH)
+ fprintf(fp, "#=AU %s\n", ainfo->au);
+
+ if ((ainfo->sqinfo[0].flags & SQINFO_WGT) ||
+ (ainfo->sqinfo[0].flags & SQINFO_ID) ||
+ (ainfo->sqinfo[0].flags & SQINFO_ACC) ||
+ (ainfo->sqinfo[0].flags & SQINFO_START) ||
+ (ainfo->sqinfo[0].flags & SQINFO_STOP) ||
+ (ainfo->sqinfo[0].flags & SQINFO_OLEN) ||
+ (ainfo->sqinfo[0].flags & SQINFO_DESC))
+ for (idx = 0; idx < num; idx++)
+ fprintf(fp, "#=SQ %-*.*s %6.4f %s %s %d..%d::%d %s\n",
+ namelen, namelen, ainfo->sqinfo[idx].name,
+ (ainfo->sqinfo[idx].flags & SQINFO_WGT) ? ainfo->sqinfo[idx].weight : 1.0,
+ (ainfo->sqinfo[idx].flags & SQINFO_ID) ? ainfo->sqinfo[idx].id : "-",
+ (ainfo->sqinfo[idx].flags & SQINFO_ACC) ? ainfo->sqinfo[idx].id : "-",
+ (ainfo->sqinfo[idx].flags & SQINFO_START) ? ainfo->sqinfo[idx].start : 0,
+ (ainfo->sqinfo[idx].flags & SQINFO_STOP) ? ainfo->sqinfo[idx].stop : 0,
+ (ainfo->sqinfo[idx].flags & SQINFO_OLEN) ? ainfo->sqinfo[idx].olen : 0,
+ (ainfo->sqinfo[idx].flags & SQINFO_DESC) ? ainfo->sqinfo[idx].desc : "-");
+ fprintf(fp, "\n");
+
+ /* main loop: write seqs in blocks. */
+ for (currpos = 0; currpos < alen; currpos += cpl)
+ {
+ /* Reference coord system */
+ if (ainfo->flags & AINFO_RF)
+ {
+ strncpy(buffer, ainfo->rf + currpos, cpl);
+ buffer[cpl] = '\0';
+ fprintf(fp, "%-*.*s %s\n", namelen, namelen, "#=RF", buffer);
+ }
+
+ /* Consensus secondary structure */
+ if (ainfo->flags & AINFO_CS)
+ {
+ strncpy(buffer, ainfo->cs + currpos, cpl);
+ buffer[cpl] = '\0';
+ fprintf(fp, "%-*.*s %s\n", namelen, namelen, "#=CS", buffer);
+ }
+
+ for (idx = 0; idx < num; idx++)
+ {
+ /* Aligned sequence */
+ strncpy(buffer, aseqs[idx] + currpos, cpl);
+ buffer[cpl] = '\0';
+ fprintf(fp, "%-*.*s %s\n", namelen, namelen,
+ ainfo->sqinfo[idx].name, buffer);
+
+ /* Individual secondary structure */
+ if (ainfo->sqinfo[idx].flags & SQINFO_SS)
+ {
+ strncpy(buffer, ss[idx] + currpos, cpl);
+ buffer[cpl] = '\0';
+ fprintf(fp, "%-*.*s %s\n", namelen, namelen, "#=SS", buffer);
+ }
+
+ /* Surface accessibility */
+ if (ainfo->sqinfo[idx].flags & SQINFO_SA)
+ {
+ strncpy(buffer, sa[idx] + currpos, cpl);
+ buffer[cpl] = '\0';
+ fprintf(fp, "%-*.*s %s\n", namelen, namelen, "#=SA", buffer);
+ }
+ }
+ /* put blank line between blocks */
+ fprintf(fp, "\n");
+ }
+
+ /* Garbage collection
+ */
+ for (idx = 0; idx < num; idx++)
+ if (ainfo->sqinfo[idx].flags & SQINFO_SS)
+ free(ss[idx]);
+ free(ss);
+
+ return 1;
+}
+
+
+
+
+/* Function: homogenize_gapsym()
+ *
+ * Purpose: Make gap symbols homogeneous.
+ */
+static void
+homogenize_gapsym(char *s, char gapsym)
+{
+ for (; *s != '\0'; s++)
+ if (isgap(*s)) *s = gapsym;
+}
+
+
+/* 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 /* 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, represented by ' ' space characters.
+ * 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 */
+ if ((rseqs = (char **) malloc (num * sizeof(char *))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+
+ /* main loop */
+ for (idx = 0; idx < num; idx++)
+ {
+ seqlen = strlen(aseqs[idx]);
+ /* alloc space */
+ if ((rseqs[idx] = (char *) malloc ((seqlen + 1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+
+ /* 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, "#=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;
+}
+
+
+/* Function: TruncateNames()
+ *
+ * Make sure all names are a single word.
+ * - if they are blank, make a name up (use the number of the sequence)
+ * - if it's already one word, leave it alone
+ * - if it's more than one word, put a terminator '\0' after the
+ * first word
+ *
+ * Used to check an array of names before writing a SELEX-format file.
+ *
+ * Returns 1 on success. Returns 0 on failure and sets squid_errno
+ * to indicate the cause.
+ */
+int
+TruncateNames(char **names, int N)
+{
+ int idx;
+ char newname[32];
+
+ for (idx = 0; idx < N; idx++)
+ if (names[idx] == NULL || strtok(names[idx], " \t\n") == NULL)
+ {
+ (void) sprintf(newname, "%d", idx);
+ if (names[idx] != NULL) free(names[idx]);
+ names[idx] = Strdup(newname);
+ }
+ return 1;
+}
+
+
+
+
+
+
diff --git a/seqstat_main.c b/seqstat_main.c
new file mode 100644
index 0000000..6f108d2
--- /dev/null
+++ b/seqstat_main.c
@@ -0,0 +1,131 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* seqstat_main.c
+ * Wed Aug 10 15:47:14 1994
+ *
+ * Look at a sequence file, determine some simple statistics.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include "squid.h"
+
+#define OPTIONS "ah"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+char usage[] = "Usage: seqstat [-options] <seqfile>\n\
+ Verify a sequence file; print some simple statistics and info.\n\
+ Available options:\n\
+ -a : report per-sequence info, not just a summary\n\
+ -h : help; display usage and version\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; /* extra info about sequence */
+ int nseqs;
+ int small; /* smallest length */
+ int large; /* largest length */
+ int total; /* total length */
+
+ int optchar; /* option character, command line */
+ extern int optind;
+ int allreport;
+
+#ifdef MEMDEBUG
+ unsigned long histid1, histid2, orig_size, current_size;
+#endif
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ allreport = FALSE; /* default: summary only */
+ while ((optchar = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optchar) {
+ case 'a': allreport = TRUE; break;
+ case 'h':
+ printf("seqstat %s, %s\n%s\n", squid_version, squid_date, usage);
+ exit(EXIT_SUCCESS);
+ default:
+ Die("%s\n", usage);
+ }
+
+ if (argc - optind != 1) Die("%s\n", usage);
+
+ seqfile = argv[argc-1];
+
+#ifdef MEMDEBUG
+ orig_size = malloc_size(&histid1);
+#endif
+
+ /***********************************************
+ * Read the file.
+ ***********************************************/
+
+ printf("seqstat %s, %s\n\n", squid_version, squid_date);
+
+ if (! SeqfileFormat(seqfile, &fmt, NULL))
+ Die("Can't determine format of file %s\n", seqfile);
+
+ if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL)
+ Die("Failed to open sequence file %s for reading", seqfile);
+
+ if (allreport) {
+ printf(" %-15s %-5s %s\n", " NAME", "LEN", "DESCRIPTION");
+ printf(" --------------- ----- -----------\n");
+ }
+
+ small = 9999999;
+ large = 0;
+ nseqs = 0;
+ total = 0;
+ while (ReadSeq(dbfp, fmt, &seq, &sqinfo))
+ {
+ if (allreport)
+ printf("* %-15s %5d %-50.50s\n", sqinfo.name, sqinfo.len,
+ sqinfo.flags & SQINFO_DESC ? sqinfo.desc : "");
+
+ if (sqinfo.len < small) small = sqinfo.len;
+ if (sqinfo.len > large) large = sqinfo.len;
+ total += sqinfo.len;
+ nseqs++;
+ FreeSequence(seq, &sqinfo);
+ }
+ if (allreport) puts("");
+
+ printf("Format: %s\n", SeqFormatString(fmt));
+ printf("Number of sequences: %d\n", nseqs);
+ printf("Total # residues: %d\n", total);
+ printf("Smallest: %d\n", small);
+ printf("Largest: %d\n", large);
+ printf("Average length: %.1f\n", (float) total / (float) nseqs);
+
+ SeqfileClose(dbfp);
+
+#ifdef MEMDEBUG
+ current_size = malloc_size(&histid2);
+
+ if (current_size != orig_size)
+ malloc_list(2, histid1, histid2);
+ else
+ fprintf(stderr, "[No memory leaks]\n");
+#endif
+
+
+ return 0;
+}
diff --git a/shuffle_main.c b/shuffle_main.c
new file mode 100644
index 0000000..5c6dd5f
--- /dev/null
+++ b/shuffle_main.c
@@ -0,0 +1,100 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* main for shuffle
+ *
+ * shuffle - generate shuffled sequences
+ * Mon Feb 26 16:56:08 1996
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include "squid.h"
+
+struct opt_s OPTIONS[] = {
+ { "-h", TRUE, ARG_NONE }, /* help */
+ { "-n", TRUE, ARG_INT }, /* number of shuffled seqs per input seq */
+ { "--seed", FALSE, ARG_INT }, /* set the random number seed */
+};
+#define NOPTIONS (sizeof(OPTIONS) / sizeof(struct opt_s))
+
+
+char usage[] = "Usage: shuffle [-options] <seqfile>\n\
+ Generate shuffled copies of input sequences.\n\
+ Available options:\n\
+ -h : help; print version and usage info\n\
+ -n <num> : make <num> shuffles per input seq (default 1)\n\
+ --seed <s> : set random number seed to <s>\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 *shuff; /* shuffled sequence */
+ int num; /* number to generate */
+ int seed; /* random number generator seed */
+ int i;
+
+ char *optname; /* option name */
+ char *optarg; /* option argument (or NULL) */
+ int optind; /* index of next argv[] */
+
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ num = 1;
+ seed = (int) time ((time_t *) NULL);
+
+ while (Getopt(argc, argv, OPTIONS, NOPTIONS, usage, &optind, &optname, &optarg))
+ {
+ if (strcmp(optname, "-n") == 0) { num = atoi(optarg); }
+ else if (strcmp(optname, "--seed") == 0) { seed = atoi(optarg); }
+ else if (strcmp(optname, "-h") == 0) {
+ printf("shuffle %s, %s\n%s\n", squid_version, squid_date, usage);
+ exit(EXIT_SUCCESS);
+ }
+ }
+
+ if (argc - optind != 1) Die("%s\n", usage);
+ seqfile = argv[optind];
+
+ sre_srandom(seed);
+
+ if (! SeqfileFormat(seqfile, &fmt, NULL))
+ Die("Failed to determine format of file %s", seqfile);
+ if ((dbfp = SeqfileOpen(seqfile, fmt, NULL)) == NULL)
+ Die("Failed to open sequence file %s for reading", seqfile);
+
+ while (ReadSeq(dbfp, fmt, &seq, &sqinfo))
+ {
+ shuff = (char *) MallocOrDie ((sqinfo.len + 1) * sizeof(char));
+
+ for (i = 0; i < num; i++)
+ {
+ StrShuffle(shuff, seq);
+ WriteSeq(stdout, kPearson, shuff, &sqinfo);
+ }
+
+ free(shuff);
+ FreeSequence(seq, &sqinfo);
+ }
+
+ SeqfileClose(dbfp);
+ return 0;
+}
+
diff --git a/smallviterbi.c b/smallviterbi.c
new file mode 100644
index 0000000..e5acf0f
--- /dev/null
+++ b/smallviterbi.c
@@ -0,0 +1,786 @@
+/* smallviterbi.c
+ * Mon Jan 24 11:38:21 1994
+ *
+ * Small-memory version of viterbi.c
+ *
+ * In the two-matrix version of the alignment algorithm, we keep
+ * a matrix for the BEGIN states (B matrix) and a full matrix for all
+ * the scores (A matrix). The database scanning version of the algorithm takes
+ * advantage of the fact that, for scoring, we don't need to keep
+ * a full cube around for matrix A; we only need the current row and the
+ * last row. We only need a full cube of information for the BEGIN
+ * state scores, which we get from the B matrix.
+ *
+ * This trick saves a large amount of memory, depending on the structure
+ * of the model. (The fewer bifurcations and begins in the model, the more
+ * memory this trick can save.) Unfortunately, it gives up the ability
+ * to trace back and recover an alignment.
+ *
+ * In this module, we add back just enough information to the scanning
+ * algorithm to enable a traceback, at the expense of re-doing some
+ * calculation. The goal is to be able to fit 200-400 nt RNA sequences
+ * into memory.
+ *
+ * I will refer to a model "segment". A segment is a linear (unbranched)
+ * chunk of the model, starting at a BEGIN/ROOT state, ending at a
+ * BIFURC/END state.
+ *
+ * Matrix cells now carry traceback information. This number, tback, indicates
+ * the i,j coords that this segment's BIFURC/END aligns to.
+ * tback is determined recursively. A BIFURC/END's tback points to itself.
+ * All other tbacks are copied from the state that is connected to by
+ * the maximally likely path.
+ *
+ * A traceback is done by using bmx as a framework, and recalculating bits
+ * of the alignment in between BEGINs and BIFURC/ENDs. Thus, if
+ * we know that a BEGIN aligns to i1, j1, we can get two numbers i2,j2 from
+ * the BEGIN's tback, and know that the segment aligns to the sequence
+ * (i1..i2-1)(j2+1..j1). Then we can recalculate the alignment of this
+ * model segment to that subsequence, and reconstruct a full traceback.
+ *
+ * tback is a single unsigned integer. The two numbers i,j are restricted
+ * to 16 bits and are packed into tback by bit-shifting, i<<16.
+ *
+ *
+ */
+
+/*
+ * amx and atr are [j = 0..N] [diff = 0..j] [y = 0..statenum]
+ * diff == 0 is for off-diagonal boundary conditions (this is why diff is shifted +1)
+ * diff == 1 is for the diagonal, i==j
+ *
+ * bmx and btr are [y = 0..statenum] [j = 0..N] [ diff = 0..j]
+ * a j,diff matrix exists only where y is a BEGIN state
+ *
+ * An optimization is made which requires END states to be explicitly
+ * added, so statenum (the number of states in the integer model)
+ * is *inclusive* of ENDs.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+/* This is how we pack tracebacks into a single machine word.
+ * We assume a 32 bit int.
+ * If you're porting this code, all you have to do is make sure
+ * pack_tb() puts two 16-bit ints in one data type TBACK, and unpack_tb()
+ * gets them back.
+ */
+typedef unsigned int TBACK;
+#define pack_tb(i,j) ((i)<<16 | (j))
+#define PACKED_I 0xFFFF0000U
+#define PACKED_J 0x0000FFFFU
+static void unpack_tb(TBACK tback, int *ret_i, int *ret_j)
+{
+ *ret_j = tback & PACKED_J;
+ *ret_i = (tback & PACKED_I) >> 16;
+}
+
+
+
+static int allocate_mx(struct istate_s *icm,int statenum, int seqlen,
+ int ****ret_amx, TBACK ****ret_atr,
+ int ****ret_bmx, TBACK ****ret_btr);
+static int init_mx (struct istate_s *icm, int statenum, int N,
+ int ***amx, TBACK ***atr,
+ int ***bmx, TBACK ***btr);
+static int recurse_mx (struct istate_s *icm, int statenum, char *seq, int N,
+ int ***amx, TBACK ***atr,
+ int ***bmx, TBACK ***btr);
+static int trace_mx (struct istate_s *icm, char *seq, int N,
+ int ***bmx, TBACK ***btr, struct trace_s **ret_tr);
+static void free_mx (int ***amx, TBACK ***atr,
+ int ***bmx, TBACK ***btr,
+ int statenum, int seqlen);
+
+#ifdef DEBUG
+static void print_tb(int tb);
+static void print_small_mx(FILE *fp, struct istate_s *icm, int statenum,
+ char *seq, int N, int ***bmx, TBACK ***btr);
+#endif /* DEBUG */
+
+
+/* Function: SmallViterbiAlign()
+ *
+ * Purpose: Align a sequence to a model, using the small-memory
+ * variant of the alignment algorithm. Return the score
+ * of the alignment and the traceback.
+ *
+ * Args: icm - the model to align sequence to
+ * statenum = number of states in icm
+ * seq - sequence to align model to
+ * ret_score - RETURN: global alignment score
+ * ret_trace - RETURN: traceback tree
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+SmallViterbiAlign(struct istate_s *icm,
+ int statenum,
+ char *seq,
+ double *ret_score,
+ struct trace_s **ret_trace)
+{
+ int ***amx; /* the main score matrix */
+ TBACK ***atr; /* amx's traceback pointers */
+ int ***bmx; /* the BEGIN score matrix */
+ TBACK ***btr; /* bmx's traceback pointers */
+ int N; /* length of sequence */
+
+ N = strlen(seq);
+ seq--; /* convert to 1..N. Ugh! */
+
+ if (! allocate_mx(icm, statenum, N, &amx, &atr, &bmx, &btr)) return 0;
+#ifdef DEBUG
+ printf("allocated matrices\n");
+#endif
+
+ if (! init_mx(icm, statenum, N, amx, atr, bmx, btr)) return 0;
+#ifdef DEBUG
+ printf("matrices initialized\n");
+ print_small_mx(stdout, icm, statenum, seq, N, bmx, btr);
+#endif
+
+ if (! recurse_mx(icm, statenum, seq, N, amx, atr, bmx, btr)) return 0;
+#ifdef DEBUG
+ printf("recursion finished\n");
+ print_small_mx(stdout, icm, statenum, seq, N, bmx, btr);
+#endif
+
+ *ret_score = ((double) bmx[0][N][N] / INTPRECISION);
+#ifdef DEBUG
+ printf("have a score of %.2f, starting traceback\n", *ret_score);
+#endif
+
+ if (! trace_mx(icm, seq, N, bmx, btr, ret_trace)) return 0;
+#ifdef DEBUG
+ printf("trace complete\n");
+#endif
+
+ free_mx(amx, atr, bmx, btr, statenum, N);
+ return 1;
+}
+
+
+
+/* Function: allocate_mx()
+ *
+ * Purpose: Malloc space for the score matrices.
+ * amx and atr are indexed as j, i, y.
+ * bmx and btr are indexed as k, j, i.
+ * In the two sequence dimensions j, i they are
+ * diagonal (+1 off diagonal) matrices with
+ * rows j = 0..N, i = 1..j+1.
+ * In the node dimension k bmx and btr are k = 0..M.
+ * In the state dimension y amx and atr are y = 0..numstates.
+ *
+ * Args: icm - the int, log-odds, state-based model
+ * statenum - number of states in model
+ * seqlen - length of sequence
+ * ret_amx - RETURN: main score matrix
+ * ret_atr - RETURN: amx's traceback pointers
+ * ret_bmx - RETURN: BEGIN/BIFURC/END score matrix
+ * ret_btr - RETURN: bmx's traceback pointers
+ *
+ * Return: Ptr to allocated scoring matrix, or
+ * dies and exits.
+ */
+static int
+allocate_mx(struct istate_s *icm,
+ int statenum,
+ int seqlen,
+ int ****ret_amx,
+ TBACK ****ret_atr,
+ int ****ret_bmx,
+ TBACK ****ret_btr)
+{
+ int ***amx;
+ TBACK ***atr;
+ int ***bmx;
+ TBACK ***btr;
+ int diag, j, y;
+
+ /* Main matrix, amx: fastest varying index is y (j,i,y)
+ * we only keep two rows for j, 0 and 1.
+ */
+ /* malloc for j = 0..1 rows */
+ if ((amx = (int ***) malloc (2 * sizeof(int **))) == NULL ||
+ (atr = (TBACK ***) malloc (2 * sizeof(TBACK **))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+
+ for (j = 0; j <= 1; j++) /* loop over rows j = 0..1 */
+ {
+ /* malloc for diag = 0..j (0..seqlen) cols */
+ if ((amx[j] = (int **) malloc ((seqlen + 1) * sizeof(int *))) == NULL ||
+ (atr[j] = (TBACK **) malloc ((seqlen + 1) * sizeof(TBACK *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ /* loop over cols diag = 0..seqlen */
+ for (diag = 0; diag <= seqlen; diag++)
+ /* malloc for y = 0..statenum-1 decks */
+ if ((amx[j][diag] = (int *) malloc ((statenum) * sizeof (int ))) == NULL ||
+ (atr[j][diag] = (TBACK *) malloc ((statenum) * sizeof (TBACK))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+
+
+ /* B auxiliary matrices: fastest varying index is diag (y,j,diag)
+ * bmx, btr keeps score, traceback decks for BEGIN states
+ */
+ /* 0..statenum-1 decks */
+ if ((bmx = (int ***) malloc (statenum * sizeof(int **))) == NULL ||
+ (btr = (TBACK ***) malloc (statenum * sizeof(TBACK **))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ for (y = 0; y < statenum; y++)
+ {
+ bmx[y] = NULL;
+ btr[y] = NULL;
+
+ /* we keep score info for BEGIN and BIFURC states */
+ if (icm[y].statetype == uBEGIN_ST || icm[y].statetype == uBIFURC_ST)
+ {
+ /* j= 0..seqlen rows */
+ if ((bmx[y] = (int **) malloc ((seqlen+1) * sizeof(int *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ /* i = 0..j columns */
+ for (j = 0; j <= seqlen; j++)
+ if ((bmx[y][j] = (int *) malloc ((j+1) * sizeof(int ))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+ /* We keep traceback info only for BEGIN states */
+ if (icm[y].statetype == uBEGIN_ST)
+ {
+ /* j= 0..seqlen rows */
+ if ((btr[y] = (TBACK **) malloc ((seqlen+1) * sizeof(TBACK *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ /* i = 0..j columns */
+ for (j = 0; j <= seqlen; j++)
+ if ((btr[y][j] = (TBACK *) malloc ((j+1) * sizeof(TBACK))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+
+ }
+
+ *ret_amx = amx;
+ *ret_atr = atr;
+ *ret_bmx = bmx;
+ *ret_btr = btr;
+ return 1;
+}
+
+
+
+/* Function: free_mx()
+ *
+ * Purpose: Free the space allocated to the scoring and traceback matrices.
+ * Precisely mirrors the allocations above in allocate_cvmx().
+ *
+ * Return: (void)
+ */
+static void
+free_mx(int ***amx,
+ TBACK ***atr,
+ int ***bmx,
+ TBACK ***btr,
+ int statenum,
+ int seqlen)
+{
+ int diag, j, y;
+
+ /* Free the main matrix, amx:
+ * amx[j][i][y] = [0..1] [0..seqlen] [0..statenum-1]
+ */
+ for (j = 0; j <= 1; j++)
+ {
+ for (diag = 0; diag <= seqlen; diag++)
+ {
+ free(amx[j][diag]);
+ free(atr[j][diag]);
+ }
+ free(amx[j]);
+ free(atr[j]);
+ }
+ free(amx);
+ free(atr);
+
+ /* Free the auxiliary matrices, bmx and btr
+ * bmx[y][j][i] = [0..statenum-1] [0..seqlen] [0..seqlen]
+ */
+ for (y = 0; y < statenum; y++)
+ {
+ if (bmx[y] != NULL)
+ {
+ for (j = 0; j <= seqlen; j++)
+ free(bmx[y][j]);
+ free(bmx[y]);
+ }
+ if (btr[y] != NULL)
+ {
+ for (j = 0; j <= seqlen; j++)
+ free(btr[y][j]);
+ free(btr[y]);
+ }
+ }
+ free(bmx);
+ free(btr);
+}
+
+
+
+/* Function: init_mx()
+ *
+ * Purpose: Initialization of the scoring matrices. We initialize the off-diagonal,
+ * the diagonal, and the "floor" (end states) of the cube.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+static int
+init_mx(struct istate_s *icm, /* integer model */
+ int statenum, /* number of states in icm */
+ int N, /* length of seq */
+ int ***amx,
+ TBACK ***atr,
+ int ***bmx,
+ TBACK ***btr)
+{
+ int diag, j, y; /* counters for indices over the cvmx */
+ int ynext; /* index of next state k+1 */
+ int *beam; /* z-axis vector of numbers in amx */
+
+ /* Init the whole amx to -Infinity. We do this with memcpy, trying
+ * to be fast. We fill in j=0,diag=0 by hand, then memcpy() the other
+ * columns.
+ */
+ for (y = 0; y < statenum; y++)
+ amx[0][0][y] = amx[1][0][y] = NEGINFINITY;
+ for (diag = 1; diag <= N; diag++)
+ {
+ memcpy(amx[0][diag], amx[0][0], statenum * sizeof(int));
+ memcpy(amx[1][diag], amx[0][0], statenum * sizeof(int));
+ }
+
+ /* atr END and BIFURC traceback pointers point to themselves.
+ * just set everything to point at itself.
+ */
+ for (j = 0; j <= 1; j++)
+ for (diag = 0; diag <= N; diag++)
+ for (y = 0; y < statenum; y++)
+ atr[j][diag][y] = pack_tb(diag, j);
+
+ /* Init the whole bmx to -Inf. We know state 0 is a begin (it's ROOT), so we
+ * start there, and memcpy rows as needed.
+ */
+ for (diag = 0; diag <= N; diag++)
+ bmx[0][N][diag] = NEGINFINITY;
+ for (j = 0; j < N; j++)
+ memcpy(bmx[0][j], bmx[0][N], (j+1) * sizeof(int));
+
+ for (y = 1; y < statenum; y++)
+ if (bmx[y] != NULL)
+ for (j = 0; j <= N; j++)
+ memcpy(bmx[y][j], bmx[0][N], (j+1) * sizeof(int));
+
+ /* Set all btr traceback ptrs to point at themselves
+ */
+ for (y = 0; y < statenum; y++)
+ if (btr[y] != NULL)
+ for (j = 0; j <= N; j++)
+ for (diag = 0; diag <= j; diag++)
+ btr[y][j][diag] = pack_tb(diag,j);
+
+ /* Init the off-diagonal (j = 0..N; diag == 0) with -log P scores.
+ * End state = 0;
+ * del, bifurc states are calc'ed
+ * begin states same as del's
+ * THIS IS WASTEFUL AND SHOULD BE CHANGED.
+ */
+ for (j = 0; j <= N; j++)
+ for (y = statenum-1; y >= 0; y--)
+ {
+ if (icm[y].statetype == uEND_ST)
+ amx[j%2][0][y] = 0;
+
+ else if (icm[y].statetype == uBIFURC_ST)
+ amx[j%2][0][y] = bmx[icm[y].tmx[0]][j][0] + bmx[icm[y].tmx[1]][j][0];
+
+ else if (icm[y].statetype == uDEL_ST || icm[y].statetype == uBEGIN_ST)
+ {
+ /* only calc DEL-DEL and BEGIN-DEL transitions. Since
+ * we optimized the state transition tables, removing
+ * the unused ones, we don't know where the number
+ * for "to DEL" is! But we can find it, because it'll
+ * be the connection to a non-infinite score */
+ beam = amx[j%2][0] + y + icm[y].offset;
+ for (ynext = 0; ynext < icm[y].connectnum; ynext++)
+ {
+ if (*beam != NEGINFINITY)
+ amx[j%2][0][y] = *beam + icm[y].tmx[ynext];
+ beam++;
+ }
+ }
+ /* make a copy into bmx if y is a BEGIN or BIFURC */
+ if (icm[y].statetype == uBEGIN_ST ||
+ icm[y].statetype == uBIFURC_ST )
+ bmx[y][j][0] = amx[j%2][0][y];
+ }
+ return 1;
+}
+
+
+
+/* Function: recurse_mx()
+ *
+ * Purpose: Carry out the fill stage of the dynamic programming
+ * algorithm.
+ *
+ * Returns: 1 on success, 0 on failure.
+ */
+static int
+recurse_mx(struct istate_s *icm, /* integer, state-form model */
+ int statenum, /* number of states in icm */
+ char *seq, /* sequence, 1..N */
+ int N, /* length of seq */
+ int ***amx, /* main scoring matrix */
+ TBACK ***atr, /* tracebacks for amx */
+ int ***bmx, /* bifurc scoring matrix */
+ TBACK ***btr) /* tracebacks for btr */
+{
+ int i, j, y; /* indices for 3 dimensions */
+ int aj; /* 0 or 1, index for j in A matrices */
+ int diff; /* loop counter for difference: diff = j-i + 1 */
+ int symi, symj; /* symbol indices for seq[i], seq[j] */
+ int sc; /* tmp for a score */
+ int ynext; /* index of next state y */
+
+ int *beam; /* ptr to a beam (z-axis vector) */
+ TBACK *beamt; /* ptr into connected traceback beam */
+ int leftdiff; /* diff coord of BEGIN_L of a bifurc */
+ int leftj; /* j coord of BEGIN_L of a bifurc */
+ int **left_p; /* pointer into whole 2D deck of BEGINL's of a bifurc */
+ int *right_p; /* ptr into row of BEGIN_R's of a bifurc */
+ int *scp; /* score pointer: ptr into beam of scores being calc'ed */
+ TBACK *sct; /* tback beam being calc'ed */
+ struct istate_s *st; /* state pointer: ptr at current state in icm */
+ int *tmx;
+ int emitsc;
+
+ for (j = 1; j <= N; j++)
+ {
+ aj = j % 2;
+ symj = SymbolIndex(seq[j]);
+
+ /* we have to init END and BIF states to point
+ at themselves in this row of atr */
+ for (diff = 0; diff <= j; diff++)
+ for (y = 0; y < statenum; y++)
+ if (icm[y].statetype == uBIFURC_ST ||
+ icm[y].statetype == uEND_ST)
+ atr[aj][diff][y] = pack_tb(diff, j);
+
+ for (diff = 1; diff <= j; diff++)
+ {
+ i = j - diff + 1;
+ symi = SymbolIndex(seq[i]);
+
+
+ scp = &amx[aj][diff][statenum-1];
+ sct = &atr[aj][diff][statenum-1];
+ st = &icm[statenum-1];
+ for (y = statenum-1; y >= 0; y--, scp--, sct--, st--)
+ { /* loop over states */
+
+ if (st->statetype != uBIFURC_ST) /* a normal (non-BIFURC) state */
+ {
+ /* Connect the "beam" pointer to the appropriate
+ * starting place in the ynext scores we're connecting
+ * y to
+ */
+ switch (st->statetype) {
+ case uBEGIN_ST:
+ case uDEL_ST:
+ beam = amx[aj][diff];
+ beamt = atr[aj][diff];
+ emitsc = 0;
+ break;
+ case uMATP_ST: /* !aj toggles from 0 to 1 and vice versa */
+ if (diff == 1) continue;
+ beam = amx[!aj][diff-2];
+ beamt = atr[!aj][diff-2];
+ emitsc = st->emit[symi * ALPHASIZE + symj];
+ break;
+ case uMATR_ST:
+ case uINSR_ST:
+ beam = amx[!aj][diff-1];
+ beamt = atr[!aj][diff-1];
+ emitsc = st->emit[symj];
+ break;
+ case uMATL_ST:
+ case uINSL_ST:
+ beam = amx[aj][diff-1];
+ beamt = atr[aj][diff-1];
+ emitsc = st->emit[symi];
+ break;
+ case uEND_ST:
+ continue;
+ default: Die("no such state type %d", st->statetype);
+ }
+ beam += y + st->offset;
+ beamt += y + st->offset;
+ tmx = st->tmx;
+
+
+ /* Init for ynext == 0 case
+ */
+ *scp = *beam + *tmx;
+ *sct = *beamt;
+
+ /* Calculate remaining cases
+ */
+ for (ynext = 1; ynext < st->connectnum; ynext++)
+ {
+ beam++;
+ beamt++;
+ tmx++;
+ if (*beam > *scp)
+ {
+ sc = *beam + *tmx;
+ if (sc > *scp)
+ {
+ *scp = sc;
+ *sct = *beamt;
+ }
+ }
+ }
+
+ /* Add emission scores now
+ */
+ *scp += emitsc;
+
+ /* Make a copy into bmx, btr if necessary
+ */
+ if (st->statetype == uBEGIN_ST)
+ {
+ bmx[y][j][diff] = *scp;
+ btr[y][j][diff] = *sct;
+ }
+ } /* end block of normal state stuff */
+
+ else /* a BIFURC state */
+ {
+ leftdiff = diff;
+ leftj = j;
+ right_p = bmx[st->tmx[1]][j];
+ left_p = bmx[st->tmx[0]];
+
+ /* init w/ case that left branch emits it all */
+ *scp = left_p[leftj][leftdiff] + *right_p;
+ while (leftdiff > 0)
+ {
+ leftdiff--;
+ leftj--;
+ right_p++;
+
+ sc = left_p[leftj][leftdiff] + *right_p;
+ if (sc > *scp)
+ *scp = sc;
+ }
+ /* keep copy of score in bmx, for tracing */
+ bmx[y][j][diff] = *scp;
+ }
+
+ } /* end loop over states */
+ } /* end loop over diff */
+ } /* end loop over j */
+ return 1;
+}
+
+
+/* Function: trace_mx()
+ *
+ * Purpose: Trace stage of the dynamic programming: starting
+ * at j=N, i=1, k=0/BEGIN, trace back the optimal
+ * path. Returns a binary tree, ret_trace.
+ * Caller is reponsible for free'ing ret_trace.
+ */
+static int
+trace_mx(struct istate_s *icm, /* the model to align */
+ char *seq, /* sequence to align it to 1..N */
+ int N,
+ int ***bmx, /* matrix of BEGIN scores */
+ TBACK ***btr, /* matrix of BIFURC/END tbacks */
+ struct trace_s **ret_trace) /* RETURN: the traceback tree */
+{
+ struct trace_s *tr; /* the traceback tree under construction */
+ struct trace_s *curr_tr; /* ptr to node of tr we're working on */
+ struct tracestack_s *dolist; /* pushdown stack of active tr nodes */
+ int diff,i, j; /* coords in mx (0..N) */
+ int y; /* counter for states (0..statenum-1) */
+ int leftdiff;
+ int leftj;
+ int *right_p;
+ int i2, j2; /* what's left unaccounted for at segment end */
+ int diff2;
+ int end_y; /* index of state that ends segment */
+
+ /* Initialize.
+ * Start at i = 1, j = N and work towards diagonal
+ */
+ InitTrace(&tr, NULL); /* start a trace tree */
+ dolist = InitTracestack(); /* start a stack for traversing the trace tree */
+
+ curr_tr = AttachTrace(tr, NULL, 0, N-1, 0, BEGIN_ST);
+ PushTracestack(dolist, curr_tr);
+
+ /* Recursion. While there's active nodes in the stack, trace from them.
+ *
+ * This is cribbed from recurse_cvmx(); it's almost the exact reverse.
+ * We know the best score, we just have to figure out where it came from.
+ */
+ while ((curr_tr = PopTracestack(dolist)) != NULL)
+ {
+ /* get some useful numbers, mostly for clarity */
+ /* which is important, since we're sort of misusing
+ * fields in the trace structures! */
+ i = curr_tr->emitl+1;
+ j = curr_tr->emitr+1;
+ y = curr_tr->nodeidx;
+ diff = j - i + 1;
+
+ /* find out which bifurc/end state terminates this
+ segment */
+ end_y = y+1;
+ while (icm[end_y].statetype != uBIFURC_ST &&
+ icm[end_y].statetype != uEND_ST)
+ end_y++;
+
+ /* find out i2,j2 that the terminal bifurc/end
+ aligns to */
+ unpack_tb(btr[y][j][diff], &diff2, &j2);
+ i2 = j2 - diff2 + 1;
+
+ /* For now, just write out what the traceback looks like.
+ */
+ printf("Segment from state %d to %d: aligns to %d..%d/%d..%d\n",
+ y, end_y, i, i2-1, j2+1, j);
+
+
+ /* push next BEGINs onto stack; they are connected
+ to BIFURC end_y */
+ if (icm[end_y].statetype == uBIFURC_ST)
+ {
+ if (i2 > j2)
+ {
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, i2-1, j2-1, icm[end_y].tmx[1], BEGIN_ST));
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, i2-1, j2-1, icm[end_y].tmx[0], BEGIN_ST));
+ }
+ else
+ {
+ leftdiff = diff2;
+ leftj = j2;
+ right_p = bmx[icm[end_y].tmx[1]][j2];
+
+ while (leftdiff >= 0)
+ {
+ if (bmx[end_y][j2][diff] == bmx[icm[end_y].tmx[0]][leftj][leftdiff] + *right_p)
+ {
+ printf("found the bifurc: it is %d-%d and %d-%d\n",
+ i2 -1, i2+leftdiff-2, i2 + leftdiff-1, j2-1);
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, i2 + leftdiff-1, j2-1,
+ icm[end_y].tmx[1], BEGIN_ST));
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, i2 -1, i2+leftdiff-2,
+ icm[end_y].tmx[0], BEGIN_ST));
+ break;
+ }
+ leftdiff--;
+ leftj--;
+ right_p++;
+ }
+ if (leftdiff < 0)
+ Die("bifurc reconstruction failed at ijy %d,%d,%d", i,j,y);
+ }
+ }
+ } /* (while something is in the tracestack) */
+
+ FreeTracestack(dolist);
+
+ *ret_trace = tr;
+ return 1;
+}
+
+
+
+#ifdef DEBUG
+
+/* Function: print_tb()
+ *
+ * Purpose: Print the two numbers of a packed traceback.
+ */
+static void
+print_tb(int tb)
+{
+ int i, j;
+
+ unpack_tb(tb, &i, &j);
+ printf("%d %d\n", i, j);
+}
+
+/* Function: PrintSmallMX()
+ *
+ * Purpose: Debugging output; print out the three-dimensional
+ * auxiliary alignment matrix produced by the
+ * small-memory version.
+ */
+static void
+print_small_mx(FILE *fp, /* open file or just stdout/stderr */
+ struct istate_s *icm, /* the model to align */
+ int statenum, /* number of states in icm */
+ char *seq, /* sequence, 1..N */
+ int N, /* length of seq */
+ int ***bmx, /* auxiliary matrix */
+ TBACK ***btr) /* traceback ptrs for bmx */
+{
+ int j, diff, y; /* indices in 3D matrix */
+ int tbdiff, tbj; /* traceback pointers to a j, diff position */
+
+ for (y = 0; y < statenum; y++)
+ if (bmx[y] != NULL)
+ {
+ fprintf(fp, "### B Matrix for state %d, type %d (%s), from node %d\n",
+ y, icm[y].statetype, UstatetypeName(icm[y].statetype), icm[y].nodeidx);
+ fprintf(fp, " ");
+ for (diff = 0; diff <= N; diff++)
+ fprintf(fp, "%6d ", diff);
+ fprintf(fp, "\n");
+
+ for (j = 0; j <= N; j++)
+ {
+ fprintf(fp, "%c %3d ", (j > 0) ? seq[j] : (char) '*', j);
+ for (diff = 0; diff <= j; diff++)
+ fprintf(fp, "%6d ", bmx[y][j][diff]);
+ fprintf(fp, "\n ");
+ if (icm[y].statetype == uBEGIN_ST)
+ for (diff = 0; diff <= j; diff++)
+ {
+ unpack_tb(btr[y][j][diff], &tbdiff, &tbj);
+ fprintf(fp, "%3d/%3d ", tbdiff, tbj);
+ }
+ fprintf(fp, "\n");
+ }
+ fprintf(fp, "\n\n");
+ }
+}
+#endif /* DEBUG */
+
+
diff --git a/sqerror.c b/sqerror.c
new file mode 100644
index 0000000..aba2f49
--- /dev/null
+++ b/sqerror.c
@@ -0,0 +1,73 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* sqerror.c
+ *
+ * error handling for the squid library
+ */
+
+ /* a global errno equivalent */
+int squid_errno;
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+/* Function: Die()
+ *
+ * Purpose: Print an error message and die. The arguments
+ * are formatted exactly like arguments to printf().
+ *
+ * Return: None. Exits the program.
+ */
+/* VARARGS0 */
+int
+Die(char *format, ...)
+{
+ va_list argp;
+ /* format the error mesg */
+ fprintf(stderr, "FATAL: ");
+ va_start(argp, format);
+ vfprintf(stderr, format, argp);
+ va_end(argp);
+ fprintf(stderr, "\n");
+ fflush(stderr);
+ /* exit */
+ exit(1);
+/*NOTREACHED*/
+ return 1; /* fool lint */
+}
+
+
+
+/* Function: Warn()
+ *
+ * Purpose: Print an error message and return. The arguments
+ * are formatted exactly like arguments to printf().
+ *
+ * Return: (void)
+ */
+/* VARARGS0 */
+int
+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);
+ return 1;
+}
diff --git a/sqfuncs.h b/sqfuncs.h
new file mode 100644
index 0000000..c325d63
--- /dev/null
+++ b/sqfuncs.h
@@ -0,0 +1,212 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+#ifndef SQFUNCSH_INCLUDED
+#define SQFUNCSH_INCLUDED
+/* sqfuncs.h
+ * SRE, Mon Jul 12 12:20:00 1993
+ *
+ * Prototypes for squid library functions;
+ * also makes a good reference list for what the package contains.
+ * Slowly being added to as I ANSI-fy squid.
+ */
+
+/*
+ * 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 void PairwiseIdentity(char *s1, char *s2, int allow_ragged,
+ float *ret_id1, float *ret_id2, float *ret_idtot);
+
+/*
+ * from alignio.c
+ */
+extern void FreeAlignment(char **aseqs, int nseq, struct aliinfo_s *ainfo);
+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 WritePairwiseAlignment(FILE *ofp, char *aseq1, char *name1, int spos1,
+ char *aseq2, char *name2, int spos2,
+ int **pam, int indent);
+extern int MingapAlignment(char **aseqs, int num, struct aliinfo_s *ainfo);
+extern int RandomAlignment(char **rseqs, SQINFO *sqinfo, int nseq, float pop, float pex,
+ char ***ret_aseqs, AINFO *ainfo);
+
+/* 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 int MakeDiffMx(char **aseqs, int num, int alen, int allow_ragged,
+ float ***ret_dmx);
+extern int MakeIdentityMx(char **aseqs, int num, int alen, int allow_ragged,
+ float ***ret_dix);
+
+
+/*
+ * from dayhoff.c
+ */
+extern int ParsePAMFile(FILE *fp, int ***ret_pam, float *ret_scale);
+extern void ScalePAM(int **pam, int scale);
+
+
+/* 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 interleaved.c
+ */
+extern int ReadInterleaved(char *seqfile, int (*parse_header)(FILE *, AINFO *, int *),
+ int (*is_dataline)(char *, char *),
+ char ***ret_aseqs, int *ret_num, AINFO *ainfo);
+extern int ReadAlignment(char *seqfile, int format, char ***ret_aseqs, int *ret_num,
+ struct aliinfo_s *ainfo);
+
+/*
+ * from msf.c
+ */
+extern int WriteMSF(FILE *fp, char **aseqs, int num, struct aliinfo_s *ainfo);
+extern void FlushAlignment(char **aseqs, int num, int *ret_alen);
+
+/* from revcomp.c
+ */
+extern char *revcomp(char *comp, char *seq);
+
+/*
+ * from selex.c
+ */
+extern int ReadSELEX(char *seqfile, char ***ret_aseqs, int *ret_num,
+ struct aliinfo_s *ret_aliinfo);
+extern int WriteSELEX(FILE *fp, char **aseqs, int num, struct aliinfo_s *ainfo, int cpl);
+extern int DealignAseqs(char **aseqs, int num, char ***ret_rseqs);
+extern int IsSELEXFormat(char *filename);
+extern int TruncateNames(char **names, int N); /* OBSOLETE? */
+extern FILE *EnvFileOpen(char *fname, char *env);
+
+/*
+ * 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 sqerror.c
+ */
+extern int Die(char *format, ...);
+extern int Warn(char *format, ...);
+
+/*
+ * 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 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 void SeqfilePosition(SQFILE *sqfp, long offset);
+extern void SeqfileClose(SQFILE *sqfp);
+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 int SeqfileFormat(char *filename, int *ret_format, char *env);
+extern int WriteSeq(FILE *outf, int outfmt, char *seq, SQINFO *sqinfo);
+extern int Seqtype(char *seq);
+extern char *SeqFormatString(int code);
+extern GSIFILE *GSIOpen(char *gsifile);
+extern int GSIGetOffset(GSIFILE *gsi, char *key, char *sqfile, long *ret_offset);
+extern void GSIClose(GSIFILE *gsi);
+
+
+/* from sre_ctype.c
+ */
+extern int sre_tolower(int c);
+extern int sre_toupper(int c);
+
+/* from sre_math.c
+ */
+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 float Gammln(float 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 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);
+
+/* from sre_string.c
+ */
+#ifdef NOSTR
+extern char *strstr(char *s, char *subs);
+#endif
+extern char *Strdup(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 *MallocOrDie(size_t size);
+extern void *ReallocOrDie(void *p, size_t size);
+extern int Strparse(char *rexp, char *s, char **buf, int ntok, ...);
+extern void StrShuffle(char *s1, char *s2);
+
+
+/* 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);
+
+/*
+ * from weight.c
+ */
+extern int SonnhammerWeights(char **aseq, int nseq, int alen, float **ret_weights);
+extern int VoronoiWeights(char **aseq, int nseq, int alen, float **ret_weights);
+extern void FilterAlignment(char **aseq, int nseq, AINFO *ainfo, float cutoff,
+ char ***ret_anew, int *ret_nnew,
+ AINFO **ret_newinfo);
+extern void SampleAlignment(char **aseq, int nseq, AINFO *ainfo, int sample,
+ char ***ret_anew, int *ret_nnew,
+ AINFO **ret_newinfo);
+
+#endif /* SQFUNCSH_INCLUDED */
diff --git a/sqio.c b/sqio.c
new file mode 100644
index 0000000..7c4ae18
--- /dev/null
+++ b/sqio.c
@@ -0,0 +1,1721 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further 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 at 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
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+
+#ifndef SEEK_SET
+#include <unistd.h> /* may Sun Microsystems rot in hell */
+#endif
+
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+/* Our hack for "sequential" access of sequences in
+ * interleaved-format alignment files (MSF, SELEX):
+ * static pointers at data for the entire alignment.
+ */
+static char **ali_aseqs;
+static char **ali_rseqs;
+static struct aliinfo_s ali_ainfo;
+static int ali_num;
+static int curridx;
+
+#define kStartLength 500
+
+static char *aminos = "ABCDEFGHIKLMNPQRSTVWXYZ*";
+static char *primenuc = "ACGTUN";
+static char *protonly = "EFIPQZ";
+/* static char stdsymbols[6] = "_.-*?"; */
+static char allsymbols[32] = "_.-*?<>{}[]()!@#$%^&=+;:'|`~\"\\";
+static char *seqsymbols = allsymbols;
+/*
+ use general form of isseqchar -- all chars + symbols.
+ no formats except nbrf (?) use symbols in data area as
+ anything other than sequence chars.
+ (wrong. PIR-CODATA does. Remove /)
+*/
+
+
+
+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;
+
+ while (*sptr == ' ') sptr++; /* ignore leading whitespace */
+ for (pos = strlen(sptr)-1; pos >= 0; pos--)
+ if (! isspace(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;
+
+ case SQINFO_WGT:
+ if (*sptr != '-')
+ {
+ if (!IsReal(sptr)) { squid_errno = SQERR_FORMAT; return 0; }
+ sqinfo->weight = (float) atof(sptr);
+ sqinfo->flags |= SQINFO_WGT;
+ }
+ break;
+
+ default:
+ Die("Invalid flag %d to SetSeqinfoString()");
+ }
+ 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_WGT) sq1->weight = sq2->weight;
+ 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';
+ }
+}
+
+
+static int
+isSeqChar(int c)
+{
+ if (c > 127) return 0; /* IRIX 4.0 bug! isascii(255) returns TRUE */
+ return (isalpha(c) || strchr(seqsymbols,c));
+}
+
+static void
+readline(FILE *f, char *s)
+{
+ char *cp;
+
+ if (NULL == fgets(s, LINEBUFLEN, f))
+ *s = 0;
+ else {
+ cp = strchr(s, '\n');
+ if (cp != NULL) *cp = 0;
+ }
+}
+
+static void
+GetLine(struct ReadSeqVars *V)
+{
+ readline(V->f, V->sbuffer);
+}
+
+
+/* Function: addseq()
+ *
+ * Purpose: Add a line of sequence to the growing string in V.
+ */
+static void
+addseq(char *s, struct ReadSeqVars *V)
+{
+ char *ptr;
+
+ while (*s != 0) {
+ if (isSeqChar((int) *s)) {
+ if (*s == '-' && V->dash_equals_n) *s = 'N';
+ if (V->seqlen >= V->maxseq) {
+ V->maxseq += kStartLength;
+ ptr = (char*) realloc(V->seq, V->maxseq+1);
+ if (ptr==NULL) {
+ squid_errno = SQERR_MEM;
+ return;
+ }
+ else V->seq = ptr;
+ }
+ V->seq[(V->seqlen)++] = *s;
+ }
+ s++;
+ }
+}
+
+static void
+addstruc(char *s, struct ReadSeqVars *V)
+{
+ char *sptr;
+
+ if (! (V->sqinfo->flags & SQINFO_SS))
+ {
+ if ((V->sqinfo->ss = (char *) malloc ((V->maxseq+1) * sizeof(char))) == NULL)
+ { squid_errno = SQERR_MEM; return; }
+ V->sqinfo->flags |= SQINFO_SS;
+ sptr = V->sqinfo->ss;
+ }
+ else
+ {
+ if ((V->sqinfo->ss = (char *) realloc(V->sqinfo->ss, V->maxseq+1)) == NULL)
+ { squid_errno = SQERR_MEM; return; }
+ sptr = V->sqinfo->ss;
+ while (*sptr != '\0') sptr++;
+ }
+
+ while (*s != 0)
+ {
+ if (isSeqChar((int)*s)) { *sptr = *s; sptr++; }
+ s++;
+ }
+ *sptr = '\0';
+}
+
+
+static void
+readLoop(int addfirst, int (*endTest)(char *,int *), struct ReadSeqVars *V)
+{
+ int addend = 0;
+ int done = 0;
+
+ V->seqlen = 0;
+ if (addfirst) addseq(V->sbuffer, V);
+ do {
+ GetLine(V);
+ done = feof(V->f);
+ done |= (*endTest)(V->sbuffer, &addend);
+ if (addend || !done)
+ addseq(V->sbuffer, 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->sbuffer, "ENTRY", 5) != 0)
+ GetLine(V);
+ if (feof(V->f)) return;
+
+ if ((sptr = strtok(V->sbuffer + 15, "\n\t ")) != NULL)
+ {
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ID);
+ }
+ do {
+ GetLine(V);
+ if (!feof(V->f) && strncmp(V->sbuffer, "TITLE", 5) == 0)
+ SetSeqinfoString(V->sqinfo, V->sbuffer+15, SQINFO_DESC);
+ else if (!feof(V->f) && strncmp(V->sbuffer, "ACCESSION", 9) == 0)
+ {
+ if ((sptr = strtok(V->sbuffer+15, " \t\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ACC);
+ }
+ } while (! feof(V->f) && (strncmp(V->sbuffer,"SEQUENCE", 8) != 0));
+ GetLine(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->sbuffer, "ENTRY", 5) != 0)
+ GetLine(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 {
+ GetLine(V);
+ } while (! (feof(V->f) || ((*V->sbuffer != 0) && (*V->sbuffer != ';')) ));
+
+ if (!feof(V->f))
+ {
+ if ((nm = strtok(V->sbuffer, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, nm, SQINFO_NAME);
+
+ readLoop(0, endIG, V);
+ }
+
+ while (!(feof(V->f) || ((*V->sbuffer != '\0') && (*V->sbuffer == ';'))))
+ GetLine(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->sbuffer == ';'))
+ {
+ if (strncmp(V->sbuffer,"; DNA sequence", 14) == 0)
+ {
+ if ((nm = strtok(V->sbuffer+16, ",\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, nm, SQINFO_NAME);
+ }
+ GetLine(V);
+ }
+
+ if (! feof(V->f))
+ readLoop(1, endStrider, V);
+
+ /* load next line
+ */
+ while ((!feof(V->f)) && (*V->sbuffer != ';'))
+ GetLine(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->sbuffer, "LOCUS", 5) != 0)
+ GetLine(V);
+
+ if ((sptr = strtok(V->sbuffer+12, "\n\t ")) != NULL)
+ {
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ID);
+ }
+
+ in_definition = FALSE;
+ while (! feof(V->f))
+ {
+ GetLine(V);
+ if (! feof(V->f) && strstr(V->sbuffer, "DEFINITION") == V->sbuffer)
+ {
+ if ((sptr = strtok(V->sbuffer+12, "\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_DESC);
+ in_definition = TRUE;
+ }
+ else if (! feof(V->f) && strstr(V->sbuffer, "ACCESSION") == V->sbuffer)
+ {
+ if ((sptr = strtok(V->sbuffer+12, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ACC);
+ in_definition = FALSE;
+ }
+ else if (strncmp(V->sbuffer,"ORIGIN", 6) != 0)
+ {
+ if (in_definition)
+ SetSeqinfoString(V->sqinfo, V->sbuffer, 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->sbuffer!=0) && (strstr(V->sbuffer,"LOCUS") == V->sbuffer))))
+ GetLine(V);
+ /* SRE: V->s now holds "//", so sequential
+ reads are wedged: fixed Tue Jul 13 1993 */
+ while (!feof(V->f) && strstr(V->sbuffer, "LOCUS ") != V->sbuffer)
+ GetLine(V);
+}
+
+static int
+endNBRF(char *s, int *addend)
+{
+ char *a;
+
+ if ((a = strchr(s, '*')) != NULL) { /* end of 1st seq */
+ /* "*" can be valid base symbol, drop it here */
+ *a = 0;
+ *addend = 1;
+ return(1);
+ }
+ else if (*s == '>') { /* start of next seq */
+ *addend = 0;
+ return(1);
+ }
+ else
+ return(0);
+}
+
+static void
+readNBRF(struct ReadSeqVars *V)
+{
+ char *sptr;
+
+ if ((sptr = strtok(V->sbuffer+4, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+
+ GetLine(V); /*skip title-junk line*/
+
+ readLoop(0, endNBRF, V);
+
+ while (!(feof(V->f) || (*V->sbuffer != 0 && *V->sbuffer == '>')))
+ GetLine(V);
+}
+
+
+static int
+endGCGdata(char *s, int *addend)
+{
+ *addend = 0;
+ return (*s == '>');
+}
+
+static void
+readGCGdata(struct ReadSeqVars *V)
+{
+ char *sptr, *lptr;
+ int binary = FALSE; /* whether data are binary or not */
+ int blen; /* length of binary sequence */
+
+ /* first line contains ">>>>" followed by name */
+ if (Strparse(">>>>([^ ]+) .+2BIT +Len: ([0-9]+)",
+ V->sbuffer, NULL, 2, &sptr, &lptr) == 0) {
+ binary = TRUE;
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+ blen = atoi(lptr);
+ free(sptr);
+ free(lptr);
+ } else if (Strparse(">>>>([^ ]+) .+ASCII +Len: [0-9]+",
+ V->sbuffer, NULL, 1, &sptr) == 0) {
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+ free(sptr);
+ } else Die("bogus GCGdata format? %s", V->sbuffer);
+
+ /* second line contains free text description */
+ GetLine(V);
+ SetSeqinfoString(V->sqinfo, V->sbuffer, 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) < ((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->sbuffer != 0) && (*V->sbuffer == '>'))))
+ GetLine(V);
+}
+
+static int
+endPearson(char *s, int *addend)
+{
+ *addend = 0;
+ return(*s == '>');
+}
+
+static void
+readPearson(struct ReadSeqVars *V)
+{
+ char *sptr;
+
+ /* check for my special FASTA format */
+ if (strstr(V->sbuffer, "..") != NULL && strstr(V->sbuffer, "::") != NULL)
+ {
+ if ((sptr = strtok(V->sbuffer+1, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+ if ((sptr = strtok(NULL, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_WGT);
+ if ((sptr = strtok(NULL, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ID);
+ if ((sptr = strtok(NULL, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ACC);
+ if ((sptr = strtok(NULL, ".")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_START);
+ if ((sptr = strtok(NULL, ".:")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_STOP);
+ if ((sptr = strtok(NULL, ":\t\n ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_OLEN);
+ if ((sptr = strtok(NULL, "\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_DESC);
+ }
+ else /* else we're normal FASTA format */
+ {
+ if ((sptr = strtok(V->sbuffer+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->sbuffer != 0) && (*V->sbuffer == '>'))))
+ GetLine(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->sbuffer, "ID ", 4) != 0)
+ GetLine(V);
+
+ if ((sptr = strtok(V->sbuffer+5, "\n\t ")) != NULL)
+ {
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ID);
+ }
+
+ do {
+ GetLine(V);
+ if (!feof(V->f) && strstr(V->sbuffer, "AC ") == V->sbuffer)
+ {
+ if ((sptr = strtok(V->sbuffer+5, "; \t\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ACC);
+ }
+ else if (!feof(V->f) && strstr(V->sbuffer, "DE ") == V->sbuffer)
+ {
+ if ((sptr = strtok(V->sbuffer+5, "\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_DESC);
+ }
+ } while (! feof(V->f) && strncmp(V->sbuffer,"SQ",2) != 0);
+
+ readLoop(0, endEMBL, V);
+
+ /* 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->sbuffer, "ID ", 4) != 0)
+ GetLine(V);
+}
+
+
+static int
+endZuker(char *s, int *addend)
+{
+ *addend = 0;
+ return( *s == '(' );
+}
+
+static void
+readZuker(struct ReadSeqVars *V)
+{
+ char *sptr;
+
+ GetLine(V); /*s == "seqLen seqid string..."*/
+
+ if ((sptr = strtok(V->sbuffer+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->sbuffer != '\0') & (*V->sbuffer == '('))))
+ GetLine(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->sbuffer," Length: ")) != NULL) *si = 0;
+ else if ((si = strstr(V->sbuffer,"..")) != NULL) *si = 0;
+
+ if ((sptr = strtok(V->sbuffer, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+
+ do {
+ done = feof(V->f);
+ GetLine(V);
+ if (! done) addseq(V->sbuffer, V);
+ } while (!done);
+}
+
+
+static void
+readSquid(struct ReadSeqVars *V)
+{
+ char *sptr;
+ int dostruc = FALSE;
+
+ while (strncmp(V->sbuffer, "NAM ", 4) != 0) GetLine(V);
+
+ if ((sptr = strtok(V->sbuffer+4, "\n\t ")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_NAME);
+
+ /*CONSTCOND*/
+ while (1)
+ {
+ GetLine(V);
+ if (feof(V->f)) {squid_errno = SQERR_FORMAT; return; }
+
+ if (strncmp(V->sbuffer, "SRC ", 4) == 0)
+ {
+ if ((sptr = strtok(V->sbuffer+4, " \t\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ID);
+ if ((sptr = strtok(NULL, " \t\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_ACC);
+ if ((sptr = strtok(NULL, ".")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_START);
+ if ((sptr = strtok(NULL, ".:")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_STOP);
+ if ((sptr = strtok(NULL, ": \t\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_OLEN);
+ }
+ else if (strncmp(V->sbuffer, "DES ", 4) == 0)
+ {
+ if ((sptr = strtok(V->sbuffer+4, "\n")) != NULL)
+ SetSeqinfoString(V->sqinfo, sptr, SQINFO_DESC);
+ }
+ else if (strncmp(V->sbuffer,"SEQ", 3) == 0)
+ break;
+ }
+
+ if (strstr(V->sbuffer, "+SS") != NULL) dostruc = TRUE;
+
+ V->seqlen = 0;
+ /*CONSTCOND*/
+ while (1)
+ {
+ /* sequence line */
+ GetLine(V);
+ if (feof(V->f) || strncmp(V->sbuffer, "++", 2) == 0)
+ break;
+ addseq(V->sbuffer, V);
+ /* structure line */
+ if (dostruc)
+ {
+ GetLine(V);
+ if (feof(V->f)) { squid_errno = SQERR_FORMAT; return; }
+ addstruc(V->sbuffer, V);
+ }
+ }
+
+
+ while (!feof(V->f) && strncmp(V->sbuffer, "NAM ", 4) != 0)
+ GetLine(V);
+}
+
+
+/* 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)
+ *
+ * Returns opened SQFILE ptr, or NULL on failure.
+ */
+SQFILE *
+SeqfileOpen(char *filename, int format, char *env)
+{
+ SQFILE *dbfp;
+
+ if ((dbfp = (SQFILE *) malloc (sizeof(SQFILE))) == NULL)
+ { squid_errno = SQERR_MEM; return NULL; }
+
+ if ((dbfp->f = fopen(filename, "r")) == NULL &&
+ (dbfp->f = EnvFileOpen(filename, env)) == NULL)
+ { squid_errno = SQERR_NOFILE; return NULL; }
+
+ /* If it's a SELEX- or MSF-formatted alignment file, we
+ * hack a way to fake sequential access: read the whole
+ * alignment into a static at once. Relies on the prediction
+ * that these files will always be relatively small, unlike
+ * GenBank or EMBL databases.
+ */
+ /* Note (Tue Aug 30 11:57:19 1994): This cause a bug:
+ * ReadSeq() is not reentrant for alignment files.
+ */
+ if (format == kSelex || format == kMSF || format == kClustal)
+ {
+ if (! ReadAlignment(filename, format, &ali_aseqs, &ali_num, &ali_ainfo))
+ return NULL;
+ if (! DealignAseqs(ali_aseqs, ali_num, &ali_rseqs))
+ return NULL;
+ curridx = 0;
+ }
+
+ /* Load the first line.
+ */
+ GetLine(dbfp);
+
+ return dbfp;
+}
+
+/* Function: SeqfilePosition()
+ *
+ * Purpose: Move to a particular offset in a seqfile.
+ * Will not work on interleaved files (SELEX, MSF).
+ */
+void
+SeqfilePosition(SQFILE *sqfp, long offset)
+{
+ fseek(sqfp->f, offset, SEEK_SET);
+ GetLine(sqfp);
+}
+
+
+void
+SeqfileClose(SQFILE *sqfp)
+{
+ fclose(sqfp->f);
+ free(sqfp);
+}
+
+
+/* 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())
+ * ret_seq - RETURN: sequence
+ * sqinfo - RETURN: filled in w/ other information
+ *
+ * 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;
+ if (format < kMinFormat || format > kMaxFormat)
+ {
+ squid_errno = SQERR_FORMAT;
+ *ret_seq = NULL;
+ return 0;
+ }
+
+ /* Here's the hack for accessing sequences from
+ * the multiple sequence alignment formats
+ */
+ if (format == kMSF || format == kSelex || format == kClustal)
+ {
+
+ if (curridx >= ali_num)
+ { /* none left; free static ptrs */
+ FreeAlignment(ali_aseqs, ali_num, &ali_ainfo);
+ free(ali_rseqs); /* only free rseqs pointer array */
+ return 0;
+ }
+ SeqinfoCopy(sqinfo, &(ali_ainfo.sqinfo[curridx]));
+ *ret_seq = ali_rseqs[curridx];
+ curridx++;
+ return 1;
+ }
+ else
+ {
+ if (feof(V->f)) return 0;
+
+ V->seq = (char*) calloc (kStartLength+1, sizeof(char));
+ V->maxseq = kStartLength;
+ V->seqlen = 0;
+ V->sqinfo = sqinfo;
+ V->sqinfo->flags = 0;
+ V->dash_equals_n = (format == kEMBL) ? TRUE : FALSE;
+
+ switch (format) {
+ case kIG : readIG(V); break;
+ case kStrider : readStrider(V); break;
+ case kGenBank : readGenBank(V); break;
+ case kNBRF : readNBRF(V); break;
+ case kPearson : readPearson(V); break;
+ case kXPearson: readPearson(V); break;
+ case kEMBL : readEMBL(V); break;
+ case kZuker : readZuker(V); break;
+ case kPIR : readPIR(V); break;
+ case kSquid : readSquid(V); break;
+ case kGCGdata : readGCGdata(V); break;
+
+ case kGCG:
+ do { /* skip leading comments on GCG file */
+ gotuw = (strstr(V->sbuffer,"..") != NULL);
+ if (gotuw) readUWGCG(V);
+ GetLine(V);
+ } while (! feof(V->f));
+ break;
+
+ case kIdraw: /* SRE: no attempt to read idraw postscript */
+ default:
+ squid_errno = SQERR_FORMAT;
+ free(V->seq);
+ return 0;
+ }
+ 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()
+ *
+ * Purpose: Determine format of seqfile, and return it
+ * through ret_format. From Gilbert's seqFileFormat().
+ *
+ * Args: filename - name of sequence file
+ * ret_format - RETURN: format code for file, see squid.h
+ * for codes.
+ * env - name of environment variable containing
+ * a directory path that filename might also be
+ * found in. "BLASTDB", for example. Can be NULL.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+SeqfileFormat(char *filename, int *ret_format, char *env)
+{
+ int foundIG = 0;
+ int foundStrider = 0;
+ int foundGB = 0;
+ int foundEMBL = 0;
+ int foundNBRF = 0;
+ int foundPearson = 0;
+ int foundXPearson= 0;
+ int foundZuker = 0;
+ int gotGCGdata = 0;
+ int gotPIR = 0;
+ int gotSquid = 0;
+ int gotuw = 0;
+ int gotMSF = 0;
+ int gotClustal = 0;
+ int done = 0;
+ int format = kUnknown;
+ int nlines= 0, dnalines= 0;
+ int splen = 0;
+ char sp[LINEBUFLEN];
+ FILE *fseq;
+
+#define ReadOneLine(sp) \
+ { done |= (feof(fseq)); \
+ readline( fseq, sp); \
+ if (!done) { splen = (int) strlen(sp); ++nlines; } }
+
+ if ((fseq = fopen(filename, "r")) == NULL &&
+ (fseq = EnvFileOpen(filename, env)) == NULL)
+ { squid_errno = SQERR_NOFILE; return 0; }
+
+ /* Look at a line at a time
+ */
+ while ( !done ) {
+ ReadOneLine(sp);
+
+ if (sp==NULL || *sp=='\0')
+ /*EMPTY*/ ;
+
+ /* high probability identities: */
+
+ else if (strstr(sp, " MSF:") != NULL &&
+ strstr(sp, " Type:") != NULL &&
+ strstr(sp, " Check:") != NULL)
+ gotMSF = 1;
+
+ else if (strncmp(sp, "CLUSTAL ", 8) == 0 &&
+ strstr( sp, "multiple sequence alignment"))
+ gotClustal = 1;
+
+ else if (strstr(sp," Check: ") != NULL)
+ gotuw= 1;
+
+ else if (strncmp(sp, "///", 3) == 0 || strncmp(sp, "ENTRY ", 6) == 0)
+ gotPIR = 1;
+
+ else if (strncmp(sp, "++", 2) == 0 || strncmp(sp, "NAM ", 4) == 0)
+ gotSquid = 1;
+
+ else if (strncmp(sp, ">>>>", 4) == 0 && strstr(sp, "Len: "))
+ gotGCGdata = 1;
+
+ /* uncertain identities: */
+
+ else if (*sp ==';') {
+ if (strstr(sp,"Strider") !=NULL) foundStrider= 1;
+ else foundIG= 1;
+ }
+ else if (strncmp(sp,"LOCUS",5) == 0 || strncmp(sp,"ORIGIN",5) == 0)
+ foundGB= 1;
+
+ else if (*sp == '>') {
+ if (sp[3] == ';') foundNBRF = 1;
+ else if (strstr(sp, "::") && strstr(sp, "..")) foundXPearson = 1;
+ else foundPearson = 1;
+ }
+
+ else if (strstr(sp,"ID ") == sp || strstr(sp,"SQ ") == sp)
+ foundEMBL= 1;
+
+ else if (*sp == '(')
+ foundZuker= 1;
+
+ else {
+ switch (Seqtype( sp )) {
+ case kDNA:
+ case kRNA: if (splen>20) dnalines++; break;
+ default: break;
+ }
+ }
+
+ if (gotMSF) {format = kMSF; done = 1; }
+ else if (gotClustal) {format = kClustal; done = 1; }
+ else if (gotSquid) {format = kSquid; done = 1; }
+ else if (gotPIR) {format = kPIR; done = 1; }
+ else if (gotGCGdata) {format = kGCGdata; done = 1; }
+ else if (gotuw)
+ {
+ if (foundIG) format= kIG; /* a TOIG file from GCG for certain */
+ else format= kGCG;
+ done= 1;
+ }
+ else if ((dnalines > 1) || done || (nlines > 500)) {
+ /* decide on most likely format */
+ /* multichar idents: */
+ if (foundStrider) format= kStrider;
+ else if (foundGB) format= kGenBank;
+ else if (foundEMBL) format= kEMBL;
+ else if (foundNBRF) format= kNBRF;
+ /* single char idents: */
+ else if (foundIG) format= kIG;
+ else if (foundPearson) format= kPearson;
+ else if (foundXPearson)format= kXPearson;
+ else if (foundZuker) format= kZuker;
+ /* spacing ident: */
+ else if (IsSELEXFormat(filename)) format= kSelex;
+ /* no format chars: */
+ else
+ {
+ squid_errno = SQERR_FORMAT;
+ return 0;
+ }
+
+ done= 1;
+ }
+ }
+
+ if (fseq!=NULL) fclose(fseq);
+
+ *ret_format = format;
+ return 1;
+#undef ReadOneLine
+}
+
+/* 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;
+}
+
+
+int
+GCGchecksum(char *seq, int seqlen)
+{
+ int check = 0, count = 0, i;
+
+ for (i = 0; i < seqlen; i++) {
+ count++;
+ check += count * sre_toupper((int) seq[i]);
+ if (count == 57) count = 0;
+ }
+ return (check % 10000);
+}
+
+
+/* Function: GCGMultchecksum()
+ *
+ * Purpose: Simple modification of GCGchecksum(),
+ * to create a checksum for multiple sequences.
+ * Gaps count.
+ *
+ * Args: seqs - sequences to be checksummed
+ * nseq - number of sequences
+ *
+ * Return: the checksum, a number between 0 and 9999
+ */
+int
+GCGMultchecksum(char **seqs, int nseq)
+{
+ int check = 0;
+ int count = 0;
+ int idx;
+ char *sptr;
+
+ for (idx = 0; idx < nseq; idx++)
+ for (sptr = seqs[idx]; *sptr; sptr++)
+ {
+ count++;
+ check += count * sre_toupper((int) *sptr);
+ if (count == 57) count = 0;
+ }
+ return (check % 10000);
+}
+
+
+
+
+/* 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(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;
+}
+
+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);
+
+ /* intercept Selex-format requests - SRE */
+ if (outform == kSelex) {
+ fprintf(outf, "%10s %s\n", sqinfo->name, seq);
+ return 1;
+ }
+
+ if (outform == kClustal || outform == kMSF) {
+ Warn("Tried to write Clustal or MSF with WriteSeq() -- bad, bad.");
+ return 1;
+ }
+
+ strcpy( endstr,"");
+ l1 = 0;
+
+ /* 10Nov91: write this out in all possible formats: */
+ checksum = GCGchecksum(seq, seqlen);
+
+ switch (outform) {
+
+ case kUnknown: /* no header, just sequence */
+ strcpy(endstr,"\n"); /* end w/ extra blank line */
+ break;
+
+ case kGenBank:
+ 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 kGCGdata:
+ fprintf(outf, ">>>>%s 9/95 ASCII Len: %d\n", sqinfo->name, seqlen);
+ fprintf(outf, "%s\n", (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : "-");
+ break;
+
+ case kNBRF:
+ if (Seqtype(seq) == kAmino)
+ fprintf(outf,">P1;%s\n", sqinfo->name);
+ else
+ fprintf(outf,">DL;%s\n", sqinfo->name);
+
+ fprintf(outf,"%s %s\n",
+ sqinfo->name,
+ (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : "");
+ spacer = 11;
+ strcpy(endstr,"*");
+ break;
+
+ case kPIR:
+ 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 kSquid:
+ 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 kEMBL:
+ 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 kGCG:
+ 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 kStrider: /* ?? 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 kZuker:
+ which_case = 1; /* MFOLD requires upper case. */
+ /*FALLTHRU*/
+ case kIG:
+ 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 kRaw: /* Raw: just print the whole sequence. */
+ fprintf(outf, "%s\n", seq);
+ return 1;
+
+ case kXPearson:
+ if (sqinfo->flags & SQINFO_WGT)
+ fprintf(outf, "> %s %f ", sqinfo->name, sqinfo->weight);
+ else
+ fprintf(outf, "> %s - ", sqinfo->name);
+
+ fprintf(outf, "%s %s %d..%d::%d %s\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,
+ (sqinfo->flags & SQINFO_DESC) ? sqinfo->desc : "-");
+ break;
+
+ default :
+ case kPearson:
+ 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; j<tab; j++) fputc(' ',outf);
+ }
+ if ((spacer != 0) && ((l+1) % spacer == 1))
+ { s[l] = ' '; ss[l] = ' '; l++; }
+ s[l] = seq[i];
+ ss[l] = (sqinfo->flags & 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; j<tab; j++) fputc(' ',outf);
+ if (i == seqlen) fprintf(outf,"%s%s\n",ss,endstr);
+ else fprintf(outf,"%s\n",ss);
+ }
+ else
+ {
+ if (i == seqlen) fprintf(outf,"%s%s\n",s,endstr);
+ else fprintf(outf,"%s\n",s);
+ }
+ lines++;
+ ibase = i+1;
+ }
+ }
+ return lines;
+}
+
+
+/* Function: ReadMultipleRseqs()
+ *
+ * Purpose: Open a data file and
+ * parse it into an array of rseqs (raw, unaligned
+ * sequences).
+ *
+ * Caller is responsible for free'ing memory allocated
+ * to ret_rseqs, ret_weights, and ret_names.
+ *
+ * Weights are currently only supported for MSF format.
+ * Sequences read from all other formats will be assigned
+ * weights of 1.0. If the caller isn't interested in
+ * weights, it passes NULL as ret_weights.
+ *
+ * Returns 1 on success. Returns 0 on failure and sets
+ * squid_errno to indicate the cause.
+ */
+int
+ReadMultipleRseqs(char *seqfile,
+ int fformat,
+ char ***ret_rseqs,
+ SQINFO **ret_sqinfo,
+ int *ret_num)
+{
+ SQINFO *sqinfo; /* array of sequence optional info */
+ SQFILE *dbfp; /* open ptr for sequential access of file */
+ char **rseqs; /* sequence array */
+ char **aseqs; /* aligned sequences, if file is aligned */
+ struct aliinfo_s ainfo; /* alignment-associated information */
+ int num; /* number of seqs */
+ int numalloced; /* num of seqs currently alloced for */
+ int idx;
+
+ if (fformat == kSelex || fformat == kMSF || fformat == kClustal)
+ {
+ if (! ReadAlignment(seqfile, fformat, &aseqs, &num, &ainfo)) return 0;
+ if (! DealignAseqs(aseqs, num, &rseqs)) return 0;
+
+ /* copy the sqinfo array
+ */
+ if ((sqinfo=(SQINFO *)malloc(sizeof(SQINFO)*num)) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ for (idx = 0; idx < num; idx++)
+ SeqinfoCopy(&(sqinfo[idx]), &(ainfo.sqinfo[idx]));
+ FreeAlignment(aseqs, num, &ainfo);
+ }
+ else
+ {
+ /* initial alloc */
+ num = 0;
+ numalloced = 16;
+ if ((rseqs = (char **) malloc (numalloced * sizeof(char *))) == NULL ||
+ (sqinfo = (SQINFO *) malloc
+ (numalloced * sizeof(SQINFO))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ if ((dbfp = SeqfileOpen(seqfile, fformat, NULL)) == NULL) return 0;
+
+ while (ReadSeq(dbfp, fformat, &rseqs[num], &(sqinfo[num])))
+ {
+ num++;
+ if (num == numalloced) /* more seqs coming, alloc more room */
+ {
+ numalloced += 16;
+ if ((rseqs = (char **) realloc
+ (rseqs, numalloced * sizeof(char *))) == NULL ||
+ (sqinfo = (SQINFO *) realloc
+ (sqinfo, numalloced * sizeof(SQINFO))) == NULL)
+ { squid_errno = SQERR_MEM; return 0; }
+ }
+ }
+ SeqfileClose(dbfp);
+ }
+
+ *ret_rseqs = rseqs;
+ *ret_sqinfo = sqinfo;
+ *ret_num = num;
+ return 1;
+}
+
+
+
+
+char *
+SeqFormatString(int code)
+{
+ switch (code) {
+ case kUnknown: return "Unknown";
+ case kIG: return "Intelligenetics";
+ case kGenBank: return "GenBank";
+ case kNBRF: return "PIR-NBRF";
+ case kEMBL: return "EMBL";
+ case kGCG: return "GCG";
+ case kGCGdata: return "GCG datalibrary";
+ case kStrider: return "Strider";
+ case kXPearson:return "Extended FASTA";
+ case kPearson: return "FASTA";
+ case kZuker: return "Zuker";
+ case kIdraw: return "Idraw";
+ case kSelex: return "SELEX";
+ case kMSF: return "MSF";
+ case kClustal: return "Clustal";
+ case kPIR: return "PIR-CODATA";
+ case kRaw: return "raw";
+ case kSquid: return "Squid";
+ default: return "(bad code)";
+ }
+}
+
+
+
+/* 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)
+ { squid_errno = SQERR_NOFILE; return NULL; }
+ if (! fread(magic, GSI_KEYSIZE, 1, gsi->gsifp))
+ { squid_errno = SQERR_NODATA; return NULL; }
+ if (strcmp(magic, "GSI") != 0)
+ { squid_errno = SQERR_FORMAT; return NULL; }
+ if (! fread(&(gsi->nfiles), sizeof(short), 1, gsi->gsifp))
+ { squid_errno = SQERR_NODATA; return NULL; }
+ if (! fread(&(gsi->recnum), sizeof(long), 1, gsi->gsifp))
+ { squid_errno = SQERR_NODATA; return NULL; }
+ return gsi;
+}
+
+/* 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_offset - return: disk offset in seqfile.
+ */
+int
+GSIGetOffset(GSIFILE *gsi, char *key, char *ret_seqfile, long *ret_offset)
+{
+ long left, right, mid;
+ int cmp;
+ char name[GSI_KEYSIZE + 1];
+ short filenum;
+ 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 (fread(name, GSI_KEYSIZE, 1, gsi->gsifp))
+ {
+ cmp = strcmp(name, key);
+ if (cmp == 0) break; /* name same as key: done! */
+ else if (left >= right)
+ return 0; /* failed to find key: fail! */
+ else if (cmp < 0)
+ left = mid + 1; /* name greater than key */
+ else if (cmp > 0)
+ right = mid - 1; /* name less than key */
+ mid = (left + right) / 2;
+ fseek(gsi->gsifp, mid * GSI_RECSIZE, SEEK_SET);
+ }
+
+ /* Read the remainder of the record
+ */
+ if (! fread(&filenum, sizeof(short), 1, gsi->gsifp))
+ { squid_errno = SQERR_NODATA; return 0; }
+ if (! fread(ret_offset, sizeof(long), 1, gsi->gsifp))
+ { squid_errno = SQERR_NODATA; return 0; }
+
+ /* Look up the sequence name
+ */
+ fseek(gsi->gsifp, filenum * GSI_RECSIZE, SEEK_SET);
+ if (! fread(ret_seqfile, GSI_KEYSIZE, 1, gsi->gsifp))
+ { squid_errno = SQERR_NODATA; return 0; }
+
+ return 1;
+}
+
+/* Function: GSIClose()
+ *
+ * Purpose: Close an open GSI sequence index file.
+ */
+void
+GSIClose(GSIFILE *gsi)
+{
+ fclose(gsi->gsifp);
+ free(gsi);
+}
+
+
+/* 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. Uses UNIX getenv() and
+ * thus is UNIX-specific.
+ *
+ * For instance:
+ * fp = EnvFileOpen("BLOSUM45", "BLASTMAT");
+ * or:
+ * fp = EnvFileOpen("swiss", "BLASTDB");
+ *
+ * Args: fname - name of file to open
+ * env - name of environment variable containing path
+ *
+ * Return: FILE * to open file, or NULL on failure -- same as fopen()
+ */
+FILE *
+EnvFileOpen(char *fname, char *env)
+{
+ FILE *fp;
+ char *path;
+ char full[512];
+
+ if (env == NULL) return NULL;
+ if ((path = getenv(env)) == NULL) return NULL;
+ if (((int) strlen(fname) + (int) strlen(env) + 2) > 512) return NULL;
+ sprintf(full, "%s/%s", path, fname);
+ fp = fopen(full, "r");
+ return fp;
+}
diff --git a/squid.h b/squid.h
new file mode 100644
index 0000000..884cb33
--- /dev/null
+++ b/squid.h
@@ -0,0 +1,376 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+#ifndef SQUIDH_INCLUDED
+#define SQUIDH_INCLUDED
+/* squid.h
+ * last modified Sun Aug 15 12:05:58 1993
+ *
+ * Header file for my library of sequence functions.
+ *
+ */
+
+
+#include <stdio.h>
+#include <math.h>
+#include <stdlib.h>
+
+/* 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[];
+extern char squid_date[];
+
+/****************************************************
+ * Error codes returned by squid library functions
+ ****************************************************/
+
+#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 */
+
+extern int squid_errno;
+
+
+/****************************************************
+ * 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 */
+ float weight; /* weight on sequence */
+ 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_WGT (1 << 8)
+#define SQINFO_OLEN (1 << 9)
+#define SQINFO_SS (1 << 10)
+#define SQINFO_SA (1 << 12)
+
+/****************************************************
+ * Sequence i/o: originally from Don Gilbert's readseq
+ ****************************************************/
+ /* buffer size for reading in lines from sequence files*/
+#define LINEBUFLEN 4096
+
+/* sequence types parsed by Seqtype() */
+#define kOtherSeq 0
+#define kDNA 1
+#define kRNA 2
+#define kAmino 3
+
+/* Sequence file formats recognized */
+#define kUnknown 0 /* format not determinable */
+#define kIG 1
+#define kGenBank 2
+#define kNBRF 3
+#define kEMBL 4
+#define kGCG 5
+#define kStrider 6
+#define kPearson 7
+#define kZuker 8
+#define kIdraw 9 /* idraw-style PostScript (write only) */
+#define kSelex 10 /* my flat text alignment format */
+#define kMSF 11 /* GCG MSF multiple alignment format */
+#define kPIR 12 /* PIR-CODATA format */
+#define kRaw 13 /* unformatted, raw sequence (output only) */
+#define kSquid 14 /* my sequence database format */
+#define kXPearson 15 /* my extended FASTA format */
+#define kGCGdata 16 /* GCG data library format */
+#define kClustal 17 /* Clustal V or W multiple alignment format */
+
+#define kMinFormat 1 /* SRE: kUnknown doesn't count */
+#define kMaxFormat 17
+#define kNumFormats (kMaxFormat + 1)
+#define kNoformat -1 /* format not tested */
+
+struct ReadSeqVars {
+ FILE *f;
+ char sbuffer[LINEBUFLEN]; /* current line we're working on */
+ int seqlen;
+ int maxseq;
+ int dash_equals_n; /* a hack - affects EMBL reading, to deal with EMBL */
+ char *seq;
+ SQINFO *sqinfo; /* name, id, etc. */
+ char *sp;
+};
+typedef struct ReadSeqVars SQFILE;
+
+/****************************************************
+ * Database indexing (GSI index file format)
+ ****************************************************/
+/* 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]
+ */
+struct gsi_s {
+ FILE *gsifp; /* open GSI index file */
+ long recnum; /* number of records */
+ short nfiles; /* number of files */
+};
+typedef struct gsi_s GSIFILE;
+
+/* Used for GSI (general sequence index) files, for rapid fetching
+ * from databases. A GSI record contains:
+ * [ key name] [file number] [disk offset]
+ */
+#define GSI_RECSIZE (32 * sizeof(char) + sizeof(short) + sizeof(long))
+#define GSI_KEYSIZE (32 * sizeof(char))
+
+/****************************************************
+ * 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 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) == '-')
+
+
+/****************************************************
+ * Alignment information
+ ****************************************************/
+
+/* Structure: aliinfo_s
+ *
+ * Purpose: Optional information returned from an alignment file.
+ *
+ * flags: always used. Flags for which info is valid/alloced.
+ *
+ * alen: always returned. Alignments are always flushed right
+ * with gaps so that all aseqs are the same length, alen.
+ * Available for all alignment formats.
+ *
+ * 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 format files.
+ *
+ * sqinfo: always returned. Array of 0..nseq-1
+ * per-sequence information structures, carrying
+ * name, id, accession, coords, and weight.
+ *
+ */
+struct aliinfo_s {
+ int flags; /* flags for what info is valid */
+ int alen; /* length of alignment (columns) */
+ char au[64]; /* "author" information */
+ char *cs; /* consensus secondary structure string */
+ char *rf; /* reference coordinate system */
+ struct seqinfo_s *sqinfo; /* name, id, coord info for each sequence */
+};
+typedef struct aliinfo_s AINFO;
+
+#define AINFO_ALEN (1 << 0)
+#define AINFO_AUTH (1 << 1)
+#define AINFO_CS (1 << 2)
+#define AINFO_RF (1 << 3)
+
+
+/****************************************************
+ * 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. [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 clustree_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 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. ARG_INT */
+};
+ /* acceptable argtype's... */
+#define ARG_NONE 0 /* no argument */
+#define ARG_INT 1 /* something that atoi() can grok */
+#define ARG_FLOAT 2 /* something that atof() can grok */
+#define ARG_CHAR 3 /* require single character or digit */
+#define ARG_STRING 4 /* anything goes */
+
+/****************************************************
+ * 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 Free2DArray(ptr, n) \
+{ int fooidx;\
+ if (ptr != NULL) { \
+ for (fooidx = 0; fooidx < (n); fooidx++) if (ptr[fooidx] != NULL) free(ptr[fooidx]);\
+ free(ptr);\
+ } }
+
+#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
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+#ifndef True
+#define True 1
+#endif
+#ifndef FALSE
+#define FALSE 0
+#endif
+#ifndef False
+#define False 0
+#endif
+
+ /* someday, Sun Microsystems will conform to ANSI... */
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS 0
+#define EXIT_FAILURE 1
+#endif
+
+#include "sqfuncs.h" /* squid function declarations */
+#endif /* SQUIDH_INCLUDED */
diff --git a/sre_ctype.c b/sre_ctype.c
new file mode 100644
index 0000000..907c657
--- /dev/null
+++ b/sre_ctype.c
@@ -0,0 +1,36 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* sre_ctype.c
+ *
+ * For portability. Some systems have functions tolower, toupper
+ * as macros (for instance, MIPS M-2000 RISC/os!)
+ */
+
+#include <ctype.h>
+#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/sre_math.c b/sre_math.c
new file mode 100644
index 0000000..78cab53
--- /dev/null
+++ b/sre_math.c
@@ -0,0 +1,472 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* sre_math.c
+ *
+ * Portability for and extensions to C math library.
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+#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: 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 xbar, ybar;
+ float sxx, syy, sxy;
+ int i;
+
+ /* Calculate averages, xbar and ybar
+ */
+ xbar = ybar = 0.0;
+ for (i = 0; i < N; i++)
+ {
+ xbar += x[i];
+ ybar += y[i];
+ }
+ xbar /= N;
+ ybar /= N;
+
+ sxx = syy = sxy = 0.0;
+ for (i = 0; i < N; i++)
+ {
+ sxx += (x[i] - xbar) * (x[i] - xbar);
+ syy += (y[i] - ybar) * (y[i] - xbar);
+ sxy += (x[i] - xbar) * (y[i] - ybar);
+ }
+ *ret_b = sxy / sxx;
+ *ret_a = ybar - xbar*(*ret_b);
+ *ret_r = sxy / (sqrt(sxx) * sqrt(syy));
+ return 1;
+}
+
+
+/* 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.)
+ */
+float
+Gammln(float 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 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 (float) 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.
+ */
+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;
+}
+
+/* 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;
+ }
+ 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;
+ }
+ 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 = -1.0e30;
+ double sum;
+
+ for (x = 0; 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 = -1.0e30;
+ float sum;
+
+ for (x = 0; 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;
+}
diff --git a/sre_string.c b/sre_string.c
new file mode 100644
index 0000000..34a5bc8
--- /dev/null
+++ b/sre_string.c
@@ -0,0 +1,236 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* sre_string.c
+ *
+ * my library of extra string functions. Some for portability
+ * across UNIXes
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include "gnuregex.h"
+#include "squid.h"
+
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+/* Obsolete. Anyone who doesn't have strstr() is
+ * not ANSI-compliant and must die.
+ */
+#ifdef NOSTR
+char *strstr(char *s, char *subs)
+{
+ int i;
+
+ for ( ; *s != 0; s++) {
+ if (*s == *subs) {
+ for (i = 1; subs[i] != 0 && subs[i] == s[i]; i++) ;
+ if (subs[i] == 0) return(s);
+ }
+ }
+ return (NULL);
+}
+#endif /* NOSTR */
+
+
+char *
+Strdup(char *s)
+{
+ char *new;
+ if ((new = (char *) malloc (strlen(s) +1)) == NULL) return NULL;
+ strcpy(new, s);
+ return new;
+}
+
+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 *
+MallocOrDie(size_t size)
+{
+ void *ptr;
+ if ((ptr = malloc (size)) == NULL)
+ Die("malloc failed");
+ return ptr;
+}
+
+void *
+ReallocOrDie(void *p, size_t size)
+{
+ void *ptr;
+ if ((ptr = realloc(p, size)) == NULL)
+ Die("realloc failed");
+ return ptr;
+}
+
+
+/* Function: Strparse()
+ *
+ * Purpose: Match a regexp to a string.
+ * Return 0 if it matches, REG_NOMATCH if it doesn't.
+ * The caller may request a copy of the text that matched by
+ * passing a non-NULL pointer to a string pointer.
+ * The called may also request copies of the text that matched
+ * sub-regexps (parenthesized expressions) by passing
+ * ntok > 0, and pointers to ntok different string pointers.
+ *
+ * Uses the GNU regexp library in extended POSIX compatibility
+ * mode.
+ *
+ * I built this for ease of use, not speed nor efficiency.
+ *
+ * Example: Strparse("foo-...-baz", "foo-bar-baz", NULL, 0) returns 0
+ * Strparse("foo-\(...\)-baz", "foo-bar-baz", &buf1, 1, &buf2)
+ * returns 0, copies "foo-bar-baz" into buf1, and "bar"
+ * into buf2.
+ *
+ * Args: rexp - regular expression, extended POSIX form
+ * s - string to match against
+ * buf - if non-NULL, where to put copy of matching text
+ * ntok - number of sub-regexps returned.
+ * ... - variable number of pointers to strings to keep
+ * copies of matched subtexts
+ *
+ * Return: 0 on match, REG_NOMATCH on failure to match
+ * buf and the ptrs in varargs list are malloc'ed here,
+ * must be free'd by caller.
+ */
+int
+Strparse(char *rexp, char *s, char **buf, int ntok, ...)
+{
+ va_list ap;
+ regex_t pat;
+ int code;
+ regmatch_t *pmatch;
+ char **sp;
+ int len;
+ int i;
+
+ code = regcomp(&pat, rexp, REG_EXTENDED);
+ if (code > 0) {
+ fprintf(stderr, "regular expression compilation failed\n");
+ exit(1);
+ }
+
+ if ((pmatch = (regmatch_t *) malloc (sizeof(regmatch_t) * (ntok+1))) == NULL) {
+ fprintf(stderr, "malloc failed\n");
+ exit(1);
+ }
+
+ code = regexec(&pat, s, ntok+1, pmatch, 0);
+ if (code == 0) {
+ /* make copy of full matched text */
+ if (buf != NULL) {
+ len = pmatch[0].rm_eo - pmatch[0].rm_so;
+ if ((*buf = (char *) malloc(sizeof(char) * (len+1))) == NULL) {
+ fprintf(stderr, "malloc failed\n");
+ exit(1);
+ }
+ strncpy(*buf, s+pmatch[0].rm_so, len);
+ (*buf)[len] = '\0';
+ }
+ /* make copies of subtexts */
+ if (ntok > 0) {
+ va_start(ap, ntok);
+ for (i = 1; i <= ntok; i++) {
+ sp = va_arg(ap, char **);
+ len = pmatch[i].rm_eo - pmatch[i].rm_so;
+ if ((*sp = (char *) malloc(sizeof(char) * (len+1))) == NULL) {
+ fprintf(stderr, "malloc failed\n");
+ exit(1);
+ }
+ strncpy(*sp, s+pmatch[i].rm_so, len);
+ (*sp)[len] = '\0';
+ }
+ }
+ }
+
+ va_end(ap);
+ free(pmatch);
+ regfree(&pat);
+ return code;
+}
+
+
+/* Function: StrShuffle()
+ *
+ * Purpose: Returns a shuffled version of s2, in s1.
+ *
+ * Args: s1 - allocated space for shuffled string.
+ * s2 - string to shuffle.
+ *
+ * Return: void
+ */
+void
+StrShuffle(char *s1, char *s2)
+{
+ int len;
+ int pos;
+ char c;
+
+ 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;
+ }
+}
+
diff --git a/sstofa.pl b/sstofa.pl
new file mode 100644
index 0000000..e8fc889
--- /dev/null
+++ b/sstofa.pl
@@ -0,0 +1,62 @@
+#! /usr/bin/perl
+
+
+if ($#ARGV < 0) {
+ die "\nConvert secondary structure file to fasta format\n",
+ "\nUsage: sstofa <sec struct file>\n\n";
+}
+
+$ss_file = shift;
+
+open (SSFILE, $ss_file) || die "Couldn't find $ss_file\n";
+open(SEQFILE,">-");
+$ct = 0;
+
+while ($line = <SSFILE>) {
+ if ($line =~ /^(\S+)\s+(\(\d+\-\d+\))\s+Length:\s(\d+)\sbp/) {
+ $SeqName = $1;
+ $bounds = $2;
+ $SeqLen = $3;
+ }
+ elsif ($line =~ /^Type:\s(\S+)\s+Anticodon:\s(\S+).+Score:\s(\S+)/) {
+ $isotype = $1;
+ $ac = $2;
+ $SeqName .= "-".$isotype.$ac;
+ $score = $3;
+ $SeqDescription = "$bounds $isotype ($ac) $SeqLen bp Sc: $score";
+ }
+ elsif ($line =~ /pseudogene/) {
+ $SeqDescription .= " Pseudo";
+ }
+ elsif ($line =~ /^Seq:\s(\S+)$/) {
+ $Seq = $1;
+ &write_fasta($SeqName,$SeqDescription,length($Seq),
+ uc($Seq),SEQFILE);
+ $SeqName = "";
+ $bounds = "";
+ $SeqLen = 0;
+ $isotype = "";
+ $ac = "";
+ $score = 0.0;
+ $SeqDescription = "";
+ $Seq = "";
+ }
+}
+
+
+
+# End Main
+
+sub write_fasta {
+ local($name, $description, $length, $sequence,*FAHANDLE) = @_;
+ local($pos, $line);
+
+ print FAHANDLE ">$name $description\n";
+ for ($pos = 0; $pos < $length; $pos += 60)
+ {
+ $line = substr($sequence,$pos,60);
+ print FAHANDLE $line, "\n";
+ }
+ 1;
+}
+
diff --git a/stack.c b/stack.c
new file mode 100644
index 0000000..28e2d85
--- /dev/null
+++ b/stack.c
@@ -0,0 +1,101 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* stack.c
+ * SRE, Thu Mar 3 10:08:48 1994
+ *
+ * Implementation of generic stack structures.
+ */
+
+#include <stdlib.h>
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+/************************************************************
+ * intstack_s implementation.
+ *
+ * Functions: InitIntStack() - returns ptr to new stack
+ * PushIntStack() - (void)
+ * PopIntStack() - returns 1 on success, 0 if stack empty
+ * FreeIntStack() - returns number of elements free'd, or 0 if
+ * stack was empty.
+ *
+ * Implementation of the pushdown stack for storing single
+ * integers.
+ *************************************************************/
+struct intstack_s *
+InitIntStack(void)
+{
+ struct intstack_s *stack;
+
+ if ((stack = (struct intstack_s *) malloc (sizeof(struct intstack_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ stack->nxt = NULL;
+ return stack;
+}
+void
+PushIntStack(struct intstack_s *stack, int data)
+{
+ struct intstack_s *new;
+
+ if ((new = (struct intstack_s *) malloc (sizeof(struct intstack_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ new->data = data;
+
+ new->nxt = stack->nxt;
+ stack->nxt = new;
+}
+
+int
+PopIntStack(struct intstack_s *stack, int *ret_data)
+{
+ struct intstack_s *old;
+
+ if (stack->nxt == NULL) return 0;
+
+ old = stack->nxt;
+ stack->nxt = old->nxt;
+
+ *ret_data = old->data;
+ free(old);
+ return 1;
+}
+
+void
+ReverseIntStack(struct intstack_s *stack)
+{
+ struct intstack_s *old;
+ struct intstack_s *new;
+
+ old = stack->nxt;
+ stack->nxt = NULL;
+ while (old != NULL)
+ {
+ new = old; /* remove one from top of old stack */
+ old = old->nxt;
+ new->nxt = stack->nxt; /* push it onto new stack */
+ stack->nxt = new;
+ }
+}
+
+int
+FreeIntStack( struct intstack_s *stack )
+{
+ int data;
+ int count = 0;
+
+ while (PopIntStack(stack, &data))
+ count++;
+ free(stack);
+ return count;
+}
diff --git a/structcheck_main.c b/structcheck_main.c
new file mode 100644
index 0000000..6804611
--- /dev/null
+++ b/structcheck_main.c
@@ -0,0 +1,408 @@
+/* structcheck_main.c
+ * SRE, Mon Dec 20 07:48:07 1993
+ *
+ * Check a set of individual RNA structures for non-Watson-Crick
+ * or GU base pairs. Keep statistics on the number of such "errors" found
+ * overall and per sequence. Convert the offending base pairs to "*"
+ * characters in the structure string and print out the structures
+ * and sequences.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#ifdef NEED_GETOPTH
+#include <getopt.h>
+#endif
+
+#include "structs.h"
+#include "funcs.h"
+#include "squid.h"
+#include "version.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define OPTIONS "hmo:psu"
+
+static char usage[] = "\
+Usage: structcheck [-options] <SELEX RNA alignment file>\n\
+where options are:\n\
+ -h : print short help and usage info\n\
+ -m : only check for more possible base pairs\n\
+ -o <file> : save flagged structure annotation alignment to <file>\n\
+ -p : only check for non-Watson-Crick pair assignments\n\
+ -s : only check for agreement with consensus structure\n\
+ -u : only check for upper-case structured positions\n";
+
+static char banner[] = "structcheck: check RNA secondary structures, flag questionables";
+
+extern int VerifyKHS(char *ss);
+
+int
+main(int argc, char **argv)
+{
+ char **aseqs; /* RNA sequences */
+ AINFO ainfo; /* misc. associated alignment info */
+ int nseq; /* number of seqs */
+ char *seqfile; /* sequence file */
+ int idx; /* index for sequences */
+ int pos; /* position index in a seq */
+ int *ct; /* CT0 representation of a structure */
+ int badseq; /* number of bad structures */
+ int badpairs; /* total bad base pairs */
+ int pairs; /* total base pairs */
+ int is_bad_seq;
+ int structure_agrees; /* TRUE if consensus and secondary structure are same */
+ int nonconsensus; /* count seqs w/ differing cons/indiv ss assignments */
+ int noncons_positions; /* count of pos w/ differing cons/indiv ss assignments */
+ int npos; /* number of non-gap positions */
+ int has_morepairs; /* TRUE if more base pairs are possible than indicated in ss */
+ int morepairs; /* how many more pairs should've been made in alignment */
+ int morepair_seqs; /* how many seqs should've had more pairs made in them */
+ int badupper_seqs;
+ int badupper_bases;
+ int has_badupper;
+ char *ss; /* aligned secondary structure string */
+
+ char *outfile; /* save flagged annotated alignment to */
+ FILE *ofp; /* open outfile for writing */
+ int check_pairs; /* if TRUE, check that pairs are complementary */
+ int check_consensus; /* if TRUE, compare indiv structs against consensus */
+ int check_morepairs; /* if TRUE, check for more obvious base-pairing in ss */
+ int check_isupper; /* if TRUE, check structured pos's are upper, single-s is lower */
+
+ int optc; /* for getopt() */
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+#ifdef MEMDEBUG /* for Cahill's dbmalloc */
+ unsigned long histid1, histid2, orig_size, current_size;
+#endif
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ outfile = NULL;
+ check_pairs = FALSE;
+ check_consensus = FALSE;
+ check_morepairs = FALSE;
+ check_isupper = FALSE;
+
+ while ((optc = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optc) {
+
+
+ case 'o': outfile = optarg; break;
+ case 'm': check_morepairs = TRUE; break;
+ case 'p': check_pairs = TRUE; break;
+ case 's': check_consensus = TRUE; break;
+ case 'u': check_isupper = TRUE; break;
+ case 'h':
+ printf("%s\n version %s (%s)\n%s", banner, RELEASE, RELEASEDATE, usage);
+ exit(0);
+
+ default:
+ Die("%s", usage);
+ }
+
+ /* Default behaviour if we're not doing a single thing */
+ if (! check_morepairs &&
+ ! check_pairs &&
+ ! check_consensus &&
+ ! check_isupper)
+ {
+ check_morepairs = TRUE;
+ check_pairs = TRUE;
+ check_consensus = TRUE;
+ check_isupper = FALSE; /* did this only for SRP-RNA alignment */
+ }
+
+ if (argc - optind != 1)
+ Die("Wrong number of command line arguments.\n%s\n", usage);
+
+ seqfile = argv[argc-1];
+
+#ifdef MEMDEBUG
+ orig_size = malloc_size(&histid1);
+#endif
+
+ /***********************************************
+ * Get sequence data
+ ***********************************************/
+
+ /* read the training seqs from file */
+ if (! ReadSELEX(seqfile, &aseqs, &nseq, &ainfo))
+ Die("Failed to read aligned sequence file %s", seqfile);
+
+ for (idx = 0; idx < nseq; idx++)
+ if (ainfo.sqinfo[idx].flags & SQINFO_SS) break;
+ if (idx == nseq)
+ Die("No secondary structure info in sequence file %s", seqfile);
+
+ if ( check_consensus == TRUE && !(ainfo.flags & AINFO_CS))
+ {
+ check_consensus = FALSE;
+ Warn("No consensus structure in %s; can't check against it", seqfile);
+ }
+
+ /***********************************************
+ * Print banner
+ ***********************************************/
+
+ puts(banner);
+ printf(" release %s, %s\n", RELEASE, RELEASEDATE);
+ printf("---------------------------------------------------\n");
+ puts("");
+
+
+ badpairs = pairs = badseq = 0;
+ nonconsensus = npos = noncons_positions = 0;
+ morepairs = morepair_seqs = 0;
+ badupper_seqs = badupper_bases = 0;
+ for (idx = 0; idx < nseq; idx++)
+ {
+ if (! (ainfo.sqinfo[idx].flags & SQINFO_SS)) continue;
+
+ /* Make an aligned secondary structure string for our tests
+ */
+ MakeAlignedString(aseqs[idx], ainfo.alen, ainfo.sqinfo[idx].ss, &ss);
+
+ /* Get a ct structure to do the other tests
+ */
+
+ if (! KHS2ct(ss, ainfo.sqinfo[idx].len, FALSE, &ct))
+ {
+ printf("sequence %-10.10s (#%d) has an improper secondary structure\n",
+ ainfo.sqinfo[idx].name, idx);
+ free(ct);
+ ct = NULL;
+ VerifyKHS(ss);
+ }
+
+ /* Check if structured positions are upper-case and unstructured
+ * positions are not. I used this for checking the SRP-RNA alignment
+ * of Larsen and Zwieb, and it may come in handy later too.
+ */
+ if (check_isupper)
+ {
+ has_badupper = FALSE;
+ for (pos = 0; pos < ainfo.alen; pos++)
+ {
+ if (isgap(aseqs[idx][pos])) continue;
+ if ( (ss[pos] == '.' && ! islower(aseqs[idx][pos])) ||
+ (ss[pos] != '.' && ! isupper(aseqs[idx][pos])) )
+ {
+ has_badupper = TRUE;
+ badupper_bases++;
+ ss[pos] = '*';
+ }
+ }
+ if (has_badupper)
+ badupper_seqs++;
+ }
+
+ /* Test for non-Watson-Crick base pairs
+ */
+ if (check_pairs && ct != NULL)
+ {
+ is_bad_seq = False;
+ for (pos = 0; pos < ainfo.alen; pos++)
+ /* second test makes sure we only look at
+ * each bp once */
+ if (ct[pos] != -1 && pos < ct[pos])
+ {
+ pairs++;
+ if (! IsRNAComplement(aseqs[idx][pos], aseqs[idx][ct[pos]], TRUE))
+ {
+ ss[pos] = ss[ct[pos]] = '*';
+ is_bad_seq = True;
+ badpairs++;
+ }
+ }
+ if (is_bad_seq) badseq++;
+ }
+
+ /* Test for disagreement with consensus structure
+ */
+ if (check_consensus)
+ {
+ structure_agrees = True;
+ for (pos = 0; pos < ainfo.alen; pos++)
+ {
+ if (isgap(aseqs[idx][pos])) continue;
+ npos++;
+ if (ss[pos] != ainfo.cs[pos] )
+ {
+ structure_agrees = False;
+ ss[pos] = '*';
+ noncons_positions++;
+ }
+ }
+ if (! structure_agrees) nonconsensus++;
+ }
+
+
+ /* Test for whether more pairs are obviously possible in the structure.
+ * *Very* crude. For each base pair i,j, if (i-1,j+1) or
+ * (i+1,j-1) are unpaired but complementary, flag them. This is *not*
+ * a full-blown structure optimization algorithm (such a thing
+ * is possible, but would require dynamic programming), but it should
+ * flag most suspicious spots.
+ */
+ if (check_morepairs && ct != NULL)
+ {
+ has_morepairs = FALSE;
+ for (pos = 0; pos < ainfo.alen; pos++)
+ /* second test makes sure we only look at
+ * each bp once */
+ if (ct[pos] != -1 && pos < ct[pos])
+ {
+ /* check i-1,j+1 pair; careful of ends */
+ if (pos > 0 && ct[pos] < ainfo.alen &&
+ ct[pos-1] == -1 && ct[ct[pos]+1] == -1 &&
+ IsRNAComplement(aseqs[idx][pos-1], aseqs[idx][ct[pos]+1], TRUE))
+ {
+ has_morepairs = TRUE;
+ morepairs++;
+ ss[pos-1] = ss[ct[pos]+1] = '*';
+ }
+
+ /* check i+1,j-1 pair; don't need to worry about ends */
+ if (ct[pos+1] == -1 && ct[ct[pos]-1] == -1 &&
+ IsRNAComplement(aseqs[idx][pos+1], aseqs[idx][ct[pos]-1], TRUE))
+ {
+ has_morepairs = TRUE;
+ morepairs++;
+ ss[pos+1] = ss[ct[pos]-1] = '*';
+ }
+ }
+ if (has_morepairs) morepair_seqs++;
+ }
+ free(ct);
+
+ /* Convert aligned ss back to dealigned ss
+ */
+ free(ainfo.sqinfo[idx].ss);
+ MakeDealignedString(aseqs[idx], ainfo.alen, ss, &(ainfo.sqinfo[idx].ss));
+ free(ss);
+ }
+
+ if (outfile == NULL)
+ {
+ if (! WriteSELEX(stdout, aseqs, nseq, &ainfo, 60))
+ Die("Failed to write alignment to stdout");
+ }
+ else
+ {
+ if ((ofp = fopen(outfile, "w")) == NULL)
+ Die("Failed to open flagged annotated alignment file %s", outfile);
+ if (! WriteSELEX(ofp, aseqs, nseq, &ainfo, 60))
+ Die("Failed to write alignment to %s", outfile);
+ fclose(ofp);
+ printf("Wrote flagged annotated alignment file to %s\n", outfile);
+ }
+
+ if (check_pairs)
+ {
+ printf("\nComplementarity check:\n");
+ printf("%d/%d structures contain non-Watson-Crick, non-GU pairs\n", badseq, nseq);
+ printf("%d/%d base pairs are questionable\n", badpairs, pairs);
+ }
+ if (check_consensus)
+ {
+ printf("\nConsensus structure check:\n");
+ printf("%d/%d structures disagree with consensus\n", nonconsensus, nseq);
+ printf("%d/%d non-gap sequence positions disagree\n", noncons_positions, npos);
+ }
+ if (check_morepairs)
+ {
+ printf("\nAdditional structure check:\n");
+ printf("%d/%d structures have obvious additional pairings\n", morepair_seqs, nseq);
+ printf("%d additional base pairs are predicted\n", morepairs);
+ }
+ if (check_isupper)
+ {
+ printf("\nCheck that structured positions are upper case:\n");
+ printf("%d/%d structures have conflicts\n", badupper_seqs, nseq);
+ printf("%d conflicts are detected\n", badupper_bases);
+ }
+
+ FreeAlignment(aseqs, nseq, &ainfo);
+
+#ifdef MEMDEBUG
+ current_size = malloc_size(&histid2);
+ if (current_size != orig_size) malloc_list(2, histid1, histid2);
+ else fprintf(stderr, "No memory leaks, sir.\n");
+#endif
+
+ return 0;
+}
+
+
+/* Function: VerifyKHS()
+ *
+ * Purpose: Examine a bad structure string and print out diagnostics
+ * about it.
+ *
+ * Return: 1 if string is OK, 0 if string is bad.
+ */
+int
+VerifyKHS(char *ss)
+{
+ int symcount[27]; /* 0 is normal pairs. 1-26 for pseudoknots */
+ int i;
+ int pos;
+ int status = 1;
+
+ for (i = 0; i < 27; i++)
+ symcount[i] = 0;
+
+ for (pos = 0; ss[pos] != '\0'; pos++)
+ {
+ if (ss[pos] > 127) /* evade SGI ctype.h islower(), isupper() bug */
+ {
+ status = 0;
+ fprintf(stderr, " structure has garbage symbol (val %d) at position %d\n",
+ (int) ss[pos], pos);
+ }
+ else if (ss[pos] == '>')
+ symcount[0] ++;
+ else if (ss[pos] == '<')
+ symcount[0] --;
+ else if (isupper((int) ss[pos]))
+ symcount[ss[pos] - 'A' + 1] ++;
+ else if (islower((int) ss[pos]))
+ symcount[ss[pos] - 'a' + 1] --;
+ else if (ss[pos] != '.')
+ {
+ status = 0;
+ fprintf(stderr, " structure has invalid symbol %c at position %d\n",
+ ss[pos], pos);
+ }
+
+ }
+
+ if (symcount[0] != 0)
+ {
+ status = 0;
+ fprintf(stderr, " structure has extra paired bases: %d on %s\n",
+ abs(symcount[0]),
+ (symcount[0] > 0) ? "left" : "right");
+ }
+
+ for (i = 1; i < 27; i++)
+ if (symcount[i] != 0)
+ {
+ status = 0;
+ fprintf(stderr, " structure has extra paired bases for pseudoknot %c: %d on %s\n",
+ (char) (i + 'A' - 1),
+ abs(symcount[i]),
+ (symcount[i] > 0) ? "left" : "right");
+ }
+ return status;
+}
+
diff --git a/structs.c b/structs.c
new file mode 100644
index 0000000..177c033
--- /dev/null
+++ b/structs.c
@@ -0,0 +1,332 @@
+/* structs.c
+ * 1.0: SRE, Tue Jul 6 18:52:34 1993
+ * 2.0: SRE, Thu Sep 9 14:19:19 1993
+ *
+ * Boring stuff which had better be flawless.
+ *
+ * Implementation of data structures. Includes
+ * various pushdown stacks used for traversing model trees and
+ * traceback trees, and linked lists used for collapsing trees
+ * into linear alignments/strings.
+ *
+ * Stacks have dummy start states. The end is just a NULL
+ * pointer off the last state in the stack.
+ *
+ * Linked lists have dummy start and end states, to facilitate
+ * insertion and deletion.
+ *
+ * Pop functions only return values when the passed pointers
+ * are non-NULL, so you can ask for whatever fields you want.
+ *
+ * For implementation of traceback tree structures, see trace.c.
+ * For implementation of model structures, see model.c.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+/* Function: StatetypeIndex()
+ *
+ * Purpose: Convert a unique statetype identifier to a valid
+ * array index
+ */
+int
+StatetypeIndex(int type)
+{
+ switch (type) {
+ case uBEGIN_ST: return BEGIN_ST;
+ case uBIFURC_ST: return BIFURC_ST;
+ case uDEL_ST: return DEL_ST;
+ case uEND_ST: return END_ST;
+ case uMATP_ST: return MATP_ST;
+ case uMATL_ST: return MATL_ST;
+ case uMATR_ST: return MATR_ST;
+ case uINSR_ST: return INSR_ST;
+ case uINSL_ST: return INSL_ST;
+
+ default: Die("no such state, %d", type);
+ }
+ /*NOTREACHED*/
+ return 0;
+}
+
+/* Function: UniqueStatetype()
+ *
+ * Purpose: Convert an array index statetype into a unique statetype,
+ * using the additional information of what kind of node
+ * the state is from.
+ */
+int
+UniqueStatetype(int nodetype, int stidx)
+{
+ switch (stidx) {
+ case DEL_ST:
+ switch (nodetype) {
+ case -1: return uEND_ST;
+ case BIFURC_NODE: return uBIFURC_ST;
+ case BEGINL_NODE:
+ case BEGINR_NODE: return uBEGIN_ST;
+ default: return uDEL_ST;
+ }
+ case MATP_ST: return uMATP_ST;
+ case MATL_ST: return uMATL_ST;
+ case MATR_ST: return uMATR_ST;
+ case INSR_ST: return uINSR_ST;
+ case INSL_ST: return uINSL_ST;
+ default: Die("no such state index %d", stidx);
+ }
+ /*NOTREACHED*/
+ return 0;
+}
+
+
+
+/************************************************************
+ * m2ali_s implementation.
+ *
+ * Functions: Init_m2ali()
+ * Push_m2ali()
+ * Pop_m2ali()
+ * Free_m2ali()
+ *
+ * Implementation of the pushdown stack for traversing a model
+ * and producing an alignment as a linked list of align_s
+ * structures. Must keep track of a current node in the model
+ * tree (stateidx, subtype) and a current insertion point in
+ * the alignment (insafter)
+ *************************************************************/
+struct m2ali_s *
+Init_m2ali(void)
+{
+ struct m2ali_s *stack;
+
+ if ((stack = (struct m2ali_s *) malloc (sizeof(struct m2ali_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ stack->nxt = NULL;
+ return stack;
+}
+
+void
+Push_m2ali(struct m2ali_s *stack,
+ int nodeidx,
+ int type,
+ struct align_s *after)
+{
+ struct m2ali_s *new;
+
+ if ((new = (struct m2ali_s *) malloc (sizeof(struct m2ali_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ new->nodeidx= nodeidx;
+ new->type = type;
+ new->after = after;
+
+ new->nxt = stack->nxt;
+ stack->nxt = new;
+}
+int
+Pop_m2ali(struct m2ali_s *stack,
+ int *ret_nodeidx,
+ int *ret_type,
+ struct align_s **ret_after)
+{
+ struct m2ali_s *old;
+
+ if (stack->nxt == NULL)
+ return 0;
+
+ old = stack->nxt;
+ stack->nxt = old->nxt;
+
+ if (ret_nodeidx != NULL) *ret_nodeidx = old->nodeidx;
+ if (ret_type != NULL) *ret_type = old->type;
+ if (ret_after != NULL) *ret_after = old->after;
+ free(old);
+ return 1;
+}
+
+void
+Free_m2ali( struct m2ali_s *stack )
+{
+ while (Pop_m2ali(stack, (int *) NULL, (int *) NULL, (struct align_s **) NULL))
+ ;
+ free(stack);
+}
+
+
+
+/***************************************************************
+ * t2ali_s implementation.
+ *
+ * Functions: Init_t2ali()
+ * Push_t2ali()
+ * Pop_t2ali()
+ * Free_t2ali()
+ *
+ * Implementation of the pushdown stack for traversing a traceback
+ * and producing a linked list of align_s structures.
+ ****************************************************************/
+
+struct t2ali_s *
+Init_t2ali(void)
+{
+ struct t2ali_s *stack;
+
+ if ((stack = (struct t2ali_s *) malloc (sizeof(struct t2ali_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ stack->nxt = NULL;
+ return stack;
+}
+
+void
+Push_t2ali(struct t2ali_s *stack,
+ struct trace_s *tracenode,
+ struct align_s *after)
+{
+ struct t2ali_s *new;
+
+ if ((new = (struct t2ali_s *) malloc (sizeof(struct t2ali_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ new->tracenode = tracenode;
+ new->after = after;
+
+ new->nxt = stack->nxt;
+ stack->nxt = new;
+}
+
+int
+Pop_t2ali(struct t2ali_s *stack,
+ struct trace_s **ret_tracenode,
+ struct align_s **ret_after)
+{
+ struct t2ali_s *old;
+
+ if (stack->nxt == NULL)
+ return 0;
+
+ old = stack->nxt;
+ stack->nxt = old->nxt;
+
+ if (ret_tracenode != NULL) *ret_tracenode = old->tracenode;
+ if (ret_after != NULL) *ret_after = old->after;
+ free(old);
+ return 1;
+}
+
+void
+Free_t2ali( struct t2ali_s *stack )
+{
+ while (Pop_t2ali(stack, (struct trace_s **) NULL, (struct align_s **) NULL))
+ ;
+ free(stack);
+}
+
+
+
+
+/************************************************************
+ * align_s implementation
+ *
+ * Functions: Init_align()
+ * Insafter_align()
+ * Free_align()
+ * Print_align()
+ *
+ * Implementation of a forward-linked list for alignment of
+ * a model to a sequence.
+ ************************************************************/
+
+struct align_s *
+Init_align(void)
+{
+ struct align_s *head;
+ struct align_s *tail;
+
+ if ((head = (struct align_s *) malloc (sizeof(struct align_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ if ((tail = (struct align_s *) malloc (sizeof(struct align_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+
+ head->sym = tail->sym = ' ';
+ head->ss = tail->ss = ' ';
+ head->pos = tail->pos = -1;
+ head->nodeidx = tail->nodeidx = -1;
+ head->type = tail->type = -1;
+ head->nxt = tail;
+ tail->nxt = NULL;
+ return head;
+}
+
+struct align_s *
+Insafter_align(int pos,
+ char sym, /* ACGU base character */
+ char ss, /* <.> secondary structure character */
+ int nodeidx,
+ int type,
+ struct align_s *after)
+{
+ struct align_s *new;
+
+ if ((new = (struct align_s *) malloc (sizeof(struct align_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+
+ new->pos = pos;
+ new->sym = sym;
+ new->ss = ss;
+ new->nodeidx = nodeidx;
+ new->type = type;
+
+ new->nxt = after->nxt;
+ after->nxt = new;
+
+ return new;
+}
+
+void
+Delafter_align(struct align_s *after)
+{
+ struct align_s *old;
+
+ old = after->nxt;
+ after->nxt = old->nxt;
+ free(old);
+}
+
+void
+Free_align(struct align_s *head)
+{
+ struct align_s *old;
+
+ while (head != NULL)
+ {
+ old = head;
+ head = head->nxt;
+ free(old);
+ }
+}
+
+#ifdef DEBUG
+void
+Print_align(struct align_s *head)
+{
+ struct align_s *curr;
+
+ for (curr = head->nxt; curr->nxt != NULL; curr = curr->nxt)
+ fprintf(stderr, "%2d %c %c %2d %2d\n",
+ curr->pos,
+ curr->sym,
+ curr->ss,
+ curr->nodeidx,
+ curr->type);
+}
+#endif /* DEBUG */
+
+
+
diff --git a/structs.h b/structs.h
new file mode 100644
index 0000000..41609ea
--- /dev/null
+++ b/structs.h
@@ -0,0 +1,242 @@
+#ifndef STRUCTSH_INCLUDED
+#define STRUCTSH_INCLUDED
+/* structs.h - declarations of data structures
+ * SRE, Tue Aug 31 15:17:12 1993
+ */
+#include "squid.h"
+
+/* Alphabet information.
+ * The package is designed to be configurable for protein analysis
+ * just by changing these define's. Dunno if it would be *useful*
+ * to apply it to protein work -- but the possibility's there.
+ */
+#define ALPHATYPE kRNA
+#define ALPHASIZE 4
+extern char *ALPHABET; /* defined at top of misc.c */
+
+/*
+ * Node types.
+ * These are used for clarity in the code, not to make it easy
+ * to change them: the program makes assumptions about the order
+ * they come in, so DON'T CHANGE THESE.
+ *
+ * Specifically, the following assumptions are made:
+ * - that they come in *exactly* this order (static state transition array in prior.h)
+ * - that BIFURC, MATP, MATL, MATR are all less than 4
+ * (second index, prior.h; also some loops in maxmodelmaker.c)
+ * - ROOT is last (indexing of scores of mmx model construction matrix, maxmodelmaker.c)
+ */
+#define BIFURC_NODE 0
+#define MATP_NODE 1
+#define MATL_NODE 2
+#define MATR_NODE 3
+#define BEGINL_NODE 4
+#define BEGINR_NODE 5
+#define ROOT_NODE 6
+#define NODETYPES 7 /* number of different node types */
+
+#define END_NODE BIFURC_NODE
+
+/*
+ * State types.
+ * These are used for clarity in the code, not to make it easy
+ * to change them: the program makes assumptions about the order
+ * they come in, so DON'T CHANGE THESE.
+ */
+#define DEL_ST 0
+#define MATP_ST 1
+#define MATL_ST 2
+#define MATR_ST 3
+#define INSL_ST 4
+#define INSR_ST 5
+#define STATETYPES 6 /* MATP nodes contain 6 states */
+
+#define BEGIN_ST DEL_ST
+#define BIFURC_ST DEL_ST
+#define END_ST DEL_ST
+
+/* Unique identifiers for state types, used as flags not indexes
+ * in the alignment algorithms.
+ */
+#define uDEL_ST (1<<0)
+#define uMATP_ST (1<<1)
+#define uMATL_ST (1<<2)
+#define uMATR_ST (1<<3)
+#define uINSL_ST (1<<4)
+#define uINSR_ST (1<<5)
+#define uBEGIN_ST (1<<6)
+#define uEND_ST (1<<7)
+#define uBIFURC_ST (1<<8)
+
+
+/* Structure: node_s
+ *
+ * Purpose: Contains all the information necessary to describe a node.
+ */
+struct node_s {
+ int type;
+
+ double tmx[STATETYPES][STATETYPES]; /* up to 49 transition probs */
+ double mp_emit[ALPHASIZE][ALPHASIZE]; /* 4x4 MATP emission probs */
+ double il_emit[ALPHASIZE]; /* 4 INSL emission probs */
+ double ir_emit[ALPHASIZE]; /* 4 INSR emission probs */
+ double ml_emit[ALPHASIZE]; /* 4 MATL emission probs */
+ double mr_emit[ALPHASIZE]; /* 4 MATR emission probs */
+
+ int nxt; /* connection to left child */
+ int nxt2; /* connection to right child */
+};
+
+
+
+/* Structure: cm_s
+ *
+ * Purpose: A covariance model.
+ */
+struct cm_s {
+ int nodes; /* number of nodes */
+ struct node_s *nd; /* array of nodes 0..nodes-1 */
+};
+
+
+/* Structure: istate_s
+ *
+ * In the alignment algorithms, a CM is converted to an array of states,
+ * each represented by one of these structures. Each state contains
+ * probability info as integers instead of floating point.
+ *
+ * The order of the state transition vector is different than in
+ * the CM. INSL and INSR are first: INSL, INSR, DEL, MATP, MATL, MATR.
+ */
+struct istate_s {
+ int nodeidx; /* index of node this state belongs to */
+ int statetype; /* unique id for type of this state (uMATP_ST, etc.) */
+ int offset; /* offset in state array to first INS state */
+ int connectnum; /* number of elements in tmx */
+ int tmx[STATETYPES]; /* rearranged transition vector, int log-odds */
+ int emit[ALPHASIZE*ALPHASIZE]; /* int lod emission vector (4 or 16) or NULL */
+};
+
+struct pstate_s {
+ int nodeidx; /* index of node this state belongs to */
+ int statetype; /* unique id for type of this state (uMATP_ST, etc.) */
+ int offset; /* offset in state array to first INS state */
+ int connectnum; /* number of elements in tmx */
+ int bifr; /* (uBIF_ST only) index of right connection */
+ double tmx[STATETYPES]; /* rearranged transition vector */
+ double emit[ALPHASIZE*ALPHASIZE]; /* emission vector (4 or 16) or NULL */
+};
+
+
+
+/* Structure: prior_s
+ *
+ * Purpose: Contains the prior probability distributions for
+ * state transitions and symbol emissions, as well
+ * as the alpha "confidence" values applied during
+ * regularization, and alphabet information.
+ */
+struct prior_s {
+ double tprior[7][4][STATETYPES][STATETYPES]; /* state transitions */
+ double matp_prior[ALPHASIZE][ALPHASIZE]; /* MATP_ST emissions */
+ double matl_prior[ALPHASIZE]; /* MATL_ST emissions */
+ double matr_prior[ALPHASIZE]; /* MATR_ST emissions */
+ double insl_prior[ALPHASIZE]; /* INSL_ST emissions */
+ double insr_prior[ALPHASIZE]; /* INSR_ST emissions */
+
+ double talpha[STATETYPES]; /* alpha's for state transitions */
+ double emalpha[STATETYPES]; /* alpha's for symbol emissions */
+
+ double rfreq[ALPHASIZE]; /* background symbol freqs for random model */
+};
+
+
+
+/* Structure: trace_s
+ *
+ * Binary tree structure for storing a traceback of an alignment;
+ * also used for tracebacks of model constructions.
+ */
+struct trace_s {
+ int emitl; /* i position (1..N) or 0 if nothing */
+ int emitr; /* j position (1..N) or 0 if nothing */
+
+ int nodeidx; /* index of node responsible for this alignment */
+ int type; /* type of substate (uMATP_ST, etc.) used (unique) */
+
+ struct trace_s *nxtl; /* ptr to left (or only) branch, or NULL for end */
+ struct trace_s *nxtr; /* ptr to right branch, BIFURC only, else NULL */
+ struct trace_s *prv; /* ptr to parent */
+};
+
+
+/* Structure: trmem_s
+ *
+ * It's expensive in malloc()'s to build trace trees. This structure
+ * allows trace.c to cut down malloc overhead, by keeping a pool
+ * of trace_s structures.
+ */
+struct trmem_s {
+ int next; /* index of next trace_s to use in pool */
+ int num; /* how many trace_s total in pool */
+ struct trace_s *pool; /* alloced array of trace_s structs */
+ struct tracestack_s *used; /* old (fully used) pools, waiting to be freed */
+};
+#define TMEM_BLOCK 256 /* how many trace_s to alloc per malloc() call */
+
+
+/* Structure: tracestack_s
+ *
+ * Formerly a pushdown stack used for traversing a binary tree of trace_s structures.
+ * Reimplemented as an array for malloc efficiency.
+ */
+struct tracestack_s {
+ int next; /* index of next trace_s pointer to use */
+ int num; /* number of trace_s pointers alloc'ed */
+ struct trace_s **list; /* array of trace_s pointers */
+};
+#define TSTACK_BLOCK 64
+
+/* A struct align_s implements a linked list describing the alignment
+ * of a model to a sequence. Note that this is the inverse of what
+ * trace_s trees are for; align_s is a linear representation of
+ * the alignment (from the sequence's point of view, if you will)
+ */
+struct align_s {
+ int pos; /* pos in seq emitted (0..N-1; -1 if none) */
+ char sym; /* symbol emitted (ACGU, . if none) */
+ char ss; /* secondary structure character, <>. */
+ int nodeidx; /* index of model state aligned to this position */
+ int type; /* type of substate reponsible for this emission (unique) */
+ struct align_s *nxt;
+};
+
+/* A struct m2ali_s implements a pushdown stack used for traversing
+ * a model and producing an align_s alignment list.
+ */
+struct m2ali_s {
+ int nodeidx; /* index of position in model (0..M) */
+ int type; /* subtype of position in model */
+ struct align_s *after; /* position in align_s list */
+ struct m2ali_s *nxt;
+};
+
+
+/* A struct t2ali_s implements a pushdown stack for traversing a
+ * traceback tree and producing an align_s alignment list.
+ */
+struct t2ali_s {
+ struct trace_s *tracenode;
+ struct align_s *after;
+ struct t2ali_s *nxt;
+};
+
+/* some stuff used when we store sums of log scores as integers,
+ * for speed and precision
+ */
+#define INTPRECISION 1000.0 /* pick up three decimal places in our ints */
+#define NEGINFINITY -999999 /* -999.999 is small enough for -Inf */
+#define POSINFINITY 999999 /* +999.999 is large enough for +Inf */
+#define ILOG2(a) (((a) > 0.0) ? (log(a) / 0.69314718 * INTPRECISION) : NEGINFINITY)
+
+#endif /* STRUCTSH_INCLUDED */
diff --git a/tRNAscan-SE.man b/tRNAscan-SE.man
new file mode 100644
index 0000000..88cc5fb
--- /dev/null
+++ b/tRNAscan-SE.man
@@ -0,0 +1,504 @@
+.TH "tRNAscan-SE" 1 "November 1997" "tRNAscan-SE 1.1"
+
+.SH NAME
+.TP
+.I tRNAscan-SE
+
+- a program for improved detection of transfer RNA genes
+in genomic sequence
+.SH SYNOPSIS
+.B tRNAscan-SE [options] seqfile(s)
+.SH DESCRIPTION
+.I tRNAscan-SE
+searches for transfer RNAs in genomic sequence
+.I seqfile(s)
+using three separate methods to achieve a combination of speed,
+sensitivity, and selectivity not available with each program
+individually.
+
+.PP
+tRNAscan-SE was written in the PERL (version 5.0) script language.
+Input consists of DNA or RNA sequences in FASTA format. tRNA
+predictions are output in standard tabular, ACeDB-compatible, or an
+extended format including tRNA secondary structure information.
+tRNAscan-SE does no tRNA detection itself, but instead combines the
+strengths of three independent tRNA prediction programs by negotiating
+the flow of information among them, performing a limited
+amount of post-processing, and outputting the result.
+.PP
+tRNAscan-SE combines the specificity of the Cove probabilistic RNA
+prediction package (Eddy & Durbin, 1994) with the speed and
+sensitivity of tRNAscan 1.3 (Fichant & Burks, 1991) plus an
+implementation of an algorithm described by Pavesi and colleagues
+(1994) which searches for eukaryotic pol III tRNA promoters (our
+implementation referred to as EufindtRNA). tRNAscan and EufindtRNA
+are used as first-pass prefilters to identify "candidate" tRNA regions
+of the sequence. These subsequences are then passed to Cove for
+further analysis, and output if Cove confirms the initial tRNA
+prediction. In this way, tRNAscan-SE attains the best of both worlds:
+(1) a false positive rate equally low to using Cove analysis, (2) the
+combined sensitivities of tRNAscan and EufindtRNA (detection of 99%
+of true tRNAs), and (3) search speed 1,000 to 3,000 times faster than
+Cove analysis and 30 to 90 times faster than the original tRNAscan 1.3
+(tRNAscan-SE uses both a code-optimized version of tRNAscan 1.3 which
+gives a 650-fold increase in speed, and a fast C implementation of the
+Pavesi et al. algorithm).
+.PP
+tRNAscan-SE was designed to make rapid, sensitive searches of genomic
+sequence feasible using the selectivity of the Cove analysis package.
+Search sensitivity was optimized with eukaryote cytoplasmic &
+eubacterial sequences, but it may be applied more broadly with a
+slight reduction in sensitivity.
+.PP
+In the default tabular output format, each new tRNA in a sequence is
+consecutively numbered in the 'tRNA #' column. 'tRNA Bounds' specify
+the starting (5') and ending (3') nucleotide bounds for the tRNA.
+tRNAs found on the reverse (lower) strand are indicated by having the
+Begin (5') bound greater than the End (3') bound.
+.PP
+The 'tRNA Type' is the predicted amino acid charged to the tRNA
+molecule based on the predicted anticodon (written 5'->3') displayed
+in the next column. tRNAs that fit criteria for potential pseudogenes
+(poor primary or secondary structure), will be
+marked with "Pseudo" in the 'tRNA Type' column (pseudogene checking
+is further discussed in the Methods section of the program manual).
+If there is a predicted intron in the tRNA, the
+next two columns indicate the nucleotide bounds. If there is no
+predicted intron, both of these columns contain zero.
+.PP
+The final column is the Cove score for the tRNA in bits of
+information. Specifically, it is a log-odds score: the log of the
+ratio of the probability of the sequence given the tRNA covariance
+model used (developed from hand-alignment of 1415 tRNAs), and the
+probability of the sequence given a simple random sequence model.
+tRNAscan-SE counts any sequence that attains a score of 20.0 bits or
+larger as a tRNA (based on empirical studies conducted by Eddy &
+Durbin in ref #2).
+.PP
+
+.SH OPTIONS
+
+.TP
+.B -h
+Prints entire list of program options, each with a brief, one-line
+description.
+
+.TP
+.B -P
+This option selects the prokaryotic covariace model for tRNA analysis,
+and loosens the search parameters for EufindtRNA to improve detection
+of prokaryotic tRNAs. Use of this mode with prokaryotic sequences
+will also improve bounds prediction of the 3' end (the terminal CAA
+triplet).
+
+.TP
+.B -A
+This option selects an archaeal-specific covariance model for tRNA
+analysis, as well as slightly loosening the EufindtRNA search
+cutoffs.
+
+.TP
+.B -O
+This parameter bypasses the fast first-pass scanners that are poor at
+detecting organellar tRNAs and runs Cove analysis only. Since true
+organellar tRNAs have been found to have Cove scores between 15 and 20
+bits, the search cutoff is lowered from 20 to 15 bits. Also,
+pseudogene checking is disabled since it is only applicable to
+eukaryotic cytoplasmic tRNA pseudogenes. Since Cove-only mode is
+used, searches will be very slow (see -C option below) relative to the
+default mode.
+
+.TP
+.B -G
+This option selects the general tRNA covariance model that was trained
+on tRNAs from all three phylogenetic domains (archaea, bacteria, &
+eukarya). This mode can be used when analyzing a mixed collection of
+sequences from more than one phylogenetic domain, with only slight
+loss of sensitivity and selectivity. The original publication
+describing this program and tRNAscan-SE version 1.0 used this general
+tRNA model exclusively. If you wish to compare scores to those found
+in the paper or scans using v1.0, use this option. Use of this option
+is compatible with all other search mode options described in this
+section.
+
+.TP
+.B -C
+Directs tRNAscan-SE to analyze sequences using Cove analysis only.
+This option allows a slightly more sensitive search than the default
+tRNAscan + EufindtRNA -> Cove mode, but is much slower (by approx. 250
+to 3,000 fold). Output format and other program defaults are
+otherwise identical to the normal analysis.
+
+.TP
+.B -H
+This option displays the breakdown of the two components of the
+covariance model bit score. Since tRNA pseudogenes often have one
+very low component (good secondary structure but poor primary sequence
+similarity to the tRNA model, or vice versa), this information may be
+useful in deciding whether a low-scoring tRNA is likely to be a
+pseudogene. The heuristic pseudogene detection filter uses this
+information to flag possible pseudogenes -- use this option to see why
+a hit is marked as a possible pseudogene. The user may wish to
+examine score breakdowns from known tRNAs in the organism of interest
+to get a frame of reference.
+
+.TP
+.B -D
+Manually disable checking tRNAs for poor primary or secondary
+structure scores often indicative of eukaryotic pseudogenes. This
+will slightly speed the program & may be necessary for non-eukaryotic
+sequences that are flagged as possible pseudogenes but are known to be
+functional tRNAs.
+
+.TP
+.B -o <file>
+Output final results to <file>.
+.TP
+.B -f <file>
+Save final results and Cove tRNA secondary structure predictions to
+<file>. This output format makes visual inspection of individual tRNA
+predictions easier since the tRNA sequence is displayed along with the
+predicted tRNA base pairings.
+
+.TP
+.B -a
+Output final results in ACeDB format instead of the default tabular
+format.
+
+.TP
+.B -m <file>
+Save statistics summary for run. This option directs tRNAscan-SE to
+write a brief summary to <file> which contains the run options
+selected as well as statistics on the number of tRNAs detected at each
+phase of the search, search speed, and other bits of information.
+See Manual documentation for explanation of each statistic.
+
+.TP
+.B -d
+Display program progress. Messages indicating which phase of the
+tRNA search are printed to standard output. If final results are also
+being sent to standard output, some of these messages will be
+suppressed so as to not interrupt display of the results.
+
+.TP
+.B -l <file>
+Save log of program progress in <file>. Identical to -d option, but
+sends message to <file> instead of standard output. Note: the -d
+option overrides the -l option if both are specified on the same
+command line.
+.TP
+.B -q
+Quiet mode: the credits & run option selections normally printed to
+standard error at the beginning of each run are suppressed.
+.TP
+.B -b
+Use brief output format. This eliminates column headers that appear
+by default when writing results in tabular output format. Useful if
+results are to be parsed or piped to another program.
+
+.TP
+.B -N
+This option causes tRNAscan-SE to output a tRNA's corresponding codon
+in place of its anticodon.
+
+.TP
+.B -(Option)#
+The '#' symbol may be used as shorthand to specify "default" file
+names for output files. The default file names are constructed by
+using the input sequence file name, followed by an extension
+specifying the output file type <seqfile.ext> where '.ext' is:
+
+.DS
+Extension Option Description
+.br
+--------- ------ -----------
+ .out -o final results
+ .stats -m summary statistics file
+ .log -l run progress file
+ .ss -f secondary structures save file
+ .fpass.out -r formatted, tabular output
+ from first-pass scans
+ .fpos -F FASTA file of tRNAs identified in
+ first-pass scans that were found to be
+ false positives by Cove analysis
+
+
+Notes:
+
+1) If the input sequence file name has the extensions '\.fa' or '\.seq',
+these extensions will be removed before using the filename as
+a prefix for default file names. (example -- input file name
+.I Mygene.seq
+will have the output file name
+.I Mygene.out
+if the '-o#' option is used).
+
+2) If more than one sequence file is specified on the command line,
+the "default" output file prefix will be the name of the FIRST
+sequence file on the command line. Use the -p option
+to change this default name to something more appropriate when
+using more than one sequence file on the command line.
+.DE
+
+.TP
+.B -p <label>
+Use <label> prefix as the default output file prefix when using '#'
+for file name specification. <label> is used in place of the input
+sequence file name.
+
+.TP
+.B -y
+This option displays which of the first-pass scanners detected
+the tRNA being output. "Ts", "Eu", or "Bo" will appear in the last
+column of Tabular output, indicating that either tRNAscan 1.4,
+EufindtRNA, or both scanners detected the tRNA, respectively.
+
+.TP
+.B -X <score>
+Set Cove cutoff score for reporting tRNAs (default=20). This option
+allows the user to specify a different Cove score threshold for
+reporting tRNAs. It is not recommended that novice users change this
+cutoff, as a lower cutoff score will increase the number of
+pseudogenes and other false positives found by tRNAscan-SE (especially
+when used with the "Cove only" scan mode). Conversely, a higher
+cutoff than 20.0 bits will likely cause true tRNAs to be missed by
+tRNAscan (numerous "real" tRNAs have been found just above the 20.0
+cutoff). Knowledgable users may wish to experiment with this
+parameter to find very unusual tRNAs or pseudogenes beyond the normal
+range of detection with the preceding caveats in mind.
+
+.TP
+.B -L <length>
+Set max length of tRNA intron+variable region (default=116bp).
+The default maximum tRNA length for tRNAscan-SE is 192 bp, but this
+limit can be increased with this option to allow searches with no
+practical limit on tRNA length. In the first phase of tRNAscan-SE,
+EufindtRNA searches for A and B boxes of <length> maximum distance
+apart, and passes only the 5' and 3' tRNA ends to covariance model
+analysis for confirmation (removing the bulk of long intervening
+sequences). tRNAs containing group I and II introns have been
+detected by setting this parameter to over 800 bp. Caution: group I
+or II introns in tRNAs tend to occur in positions other than the
+canonical position of protein-spliced introns, so tRNAscan-SE
+mispredicts the intron bounds and anticodon sequence for these cases.
+tRNA bound predictions, however, have been found to be reliable in
+these same tRNAs.
+
+.TP
+.B -I <score>
+This score cutoff affects the sensitivity of the first-pass scanner
+EufindtRNA. This parameter should not need to be adjusted from its
+default values (variable depending on search mode), but is included
+for users who are familiar with the Pavesi et al. (1994) paper and
+wish to set it manually. See Lowe & Eddy (1997) for details on
+parameter values used by tRNAscan-SE depending on the search mode.
+
+.TP
+.B -B <number>
+By default, tRNAscan-SE adds 7 nucleotides to both ends of tRNA
+predictions when first-pass tRNA predictions are passed to covariance
+model (CM) analysis. CM analysis generally trims these bounds back
+down, but on occassion, allows prediction of an otherwise truncated
+first-pass tRNA prediction.
+
+.TP
+.B -g <file>
+Use exceptions to "universal" genetic code specified in <file>. By
+default, tRNAscan-SE uses a standard universal codon -> amino acid
+translation table that is specified at the end of the tRNAscan-SE.src
+source file. This option allows the user to specify exceptions to the
+default translation table. The user may use any one of several
+alternate translation code files included in this package (see files
+'gcode.*'), or create a new alternate translation file. See Manual
+documentation for specification of file format, or refer to included
+examples files.
+.sp 1
+Note: this option does not have any effect when using
+the -T or -E options -- you must be running in default
+or Cove only analysis mode.
+
+.TP
+.B -c <file>
+For users who have developed their own tRNA covariance models using
+the Cove program "coveb" (see Cove documentation), this parameter
+allows substitution for the default tRNA covariance models. May be
+useful for extending Cove-only mode detection of particularly strange
+tRNA species such as mitochondrial tRNAs.
+
+.TP
+.B -Q
+By default, if an output result file to be written to already exists,
+the user is prompted whether the file should be over-written or
+appended to. Using this options forces overwriting of pre-existing
+files without an interactive prompt. This option may be handy for
+batch-processing and running tRNAscan-SE in the background.
+
+.TP
+.B -n <EXPR>
+Search only sequences with names matching <EXPR> string.
+<EXPR> may contain * or ? wildcard characters, but the user
+should remember to enclose these expressions in single quotes
+to avoid shell expansion. Only those sequences with names (first
+non-white space word after ">" symbol on FASTA name/description line)
+matching <EXPR> are analyzed for tRNAs.
+.TP
+.B -s <EXPR>
+Start search at first sequence with name matching <EXPR> string and
+continue to end of input sequence file(s). This may be
+useful for re-starting crashed/aborted runs at the point where the
+previous run stopped. (If same names for output file(s) are used,
+program will ask if files should be over-written or appended to --
+choose append and run will successfully be restarted where it left
+off).
+
+.TP
+.B -T
+Directs tRNAscan-SE to use only tRNAscan to analyze sequences. This
+mode will default to using "strict" parameters with tRNAscan analysis
+(similar to tRNAscan version 1.3 operation). This mode of operation
+is faster (3-5 times faster than default mode analysis), but will
+result in approximately 0.2 to 0.6 false positive tRNAs per Mbp,
+decreased sensitivity, and less reliable prediction of anticodons,
+tRNA isotype, and introns.
+
+.TP
+.B -t <mode>
+Explicitly set tRNAscan params, where <mode> = R or S (R=relaxed,
+S=strict tRNAscan v1.3 params). This option allows selection of
+strict or relaxed search parameters for tRNAscan analysis. By
+default, "strict" parameters are used. Relaxed parameters may give
+very slightly increased search sensitivity, but increase search time
+by 20-40 fold.
+
+.TP
+.B -E
+Run EufindtRNA alone to search for tRNAs. Since Cove is not being
+used as a secondary filter to remove false positives, this run mode
+defaults to "Normal" parameters which more closely approximates the
+sensitivity and selectivity of the original algorithm describe by
+Pavesi and colleagues (see the next option, -e for a description of
+the various run modes).
+
+.TP
+.B -e <mode>
+Explicitly set EufindtRNA params, where <mode>= R, N, or S (relaxed,
+normal, or strict). The "relaxed" mode is used for EufindtRNA
+when using tRNAscan-SE in default mode. With relaxed parameters,
+tRNAs that lack pol III poly-T terminators are not penalized,
+increasing search sensitivity, but decreasing selectivity. When Cove
+analysis is being used as a secondary filter for false positives (as
+in tRNAscan-SE's default mode), overall selectivity is not decreased.
+
+Using "normal" parameters with EufindtRNA does incorporate a log odds
+score for the distance between the B box and the first poly-T
+terminator, but does not disqualify tRNAs that do not have a
+terminator signal within 60 nucleotides. This mode is used by default
+when Cove analysis is not being used as a secondary false positive
+filter.
+
+Using "strict" parameters with EufindtRNA also incorporates a log odds
+score for the distance between the B box and the first poly-T
+terminator, but _rejects_ tRNAs that do not have such a signal within
+60 nucleotides of the end of the B box. This mode most closely
+approximates the originally published search algorithm (3);
+sensitivity is reduced relative to using "relaxed" and "normal" modes,
+but selectivity is increased which is important if no secondary
+filter, such as Cove analysis, is being used to remove false
+positives. This mode will miss most prokaryotic tRNAs since the
+poly-T terminator signal is a feature specific to eukaryotic tRNAs
+genes (always use "relaxed" mode for scanning prokaryotic sequences
+for tRNAs).
+
+
+.TP
+.B -r <file>
+Save tabular, formatted output results from tRNAscan and/or
+EufindtRNA first pass scans in <file>. The format is similar to the
+final tabular output format, except no Cove score is available at this
+point in the search (if EufindtRNA has detected the tRNA, the negative
+log likelihood score is given). Also, the sequence ID number and
+source sequence length appear in the columns where intron bounds are
+shown in final output. This option may be useful for examining false
+positive tRNAs predicted by first-pass scans that have been filtered
+out by Cove analysis.
+
+.TP
+.B -u <file>
+This option allows the user to re-generate results from regions
+identified to have tRNAs by a previous tRNAscan-SE run. Either a
+regular tabular result file, or output saved with the -r option may be
+used as the specified <file>. This option is particularly useful for
+generating either secondary structure output (-f option) or ACeDB
+output (-a option) without having to re-scan entire sequences.
+Alternatively, if the -r option is used to generate the previous
+results file, tRNAscan-SE will pick up at the stage of
+Cove-confirmation of tRNAs and output final tRNA predicitons as with a
+normal run.
+
+.sp 1
+Note: the -n and -s options will not work in conjunction with this
+option.
+
+.TP
+.B -F <file>
+Save first-pass candidate tRNAs in <file> that were then found to be
+false positives by Cove analysis. This option saves candidate tRNAs
+found by either tRNAscan and/or EufindtRNA that were then rejected by
+Cove analysis as being false positives. tRNAs are saved in the FASTA
+sequence format.
+
+.TP
+.B -M <file>
+This option may be used when scanning a collection of known tRNA
+sequences to identify possible false negatives (incorreclty missed by
+tRNAscan-SE) or sequences incorrectly annotated as tRNAs (correctly
+passed over by tRNAscan-SE). Examination of primary & secondary
+structure covariance model scores (-H option), and visual inspection
+of secondary structures (use -F option) may be helpful resolving
+identification conflicts.
+
+.SH SEE ALSO
+.PP
+User Manual and tutorial: Manual.ps (postscript), MANUAL (text)
+
+.SH BUGS
+No major bugs known.
+
+.SH NOTES
+
+This software and documentation is Copyright (C) 1996, Todd M.J. Lowe
+& Sean R. Eddy. 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
+Todd Lowe
+Dept. of Genetics, Washington Univ. School of Medicine
+660 S. Euclid Box 8232
+St Louis, MO 63110 USA
+Phone: 1-314-362-7667
+FAX : 1-314-362-2985
+Email: lowe at genetics.wustl.edu
+.fi
+
+.SH REFERENCES
+.PP
+1. Fichant, G.A. and Burks, C. (1991) "Identifying potential tRNA
+genes in genomic DNA sequences", J. Mol. Biol., 220, 659-671.
+.PP
+2. Eddy, S.R. and Durbin, R. (1994) "RNA sequence analysis using
+covariance models", Nucl. Acids Res., 22, 2079-2088.
+.PP
+3. Pavesi, A., Conterio, F., Bolchi, A., Dieci, G., Ottonello,
+S. (1994) "Identification of new eukaryotic tRNA genes in genomic DNA
+databases by a multistep weight matrix analysis of transcriptional
+control regions", Nucl. Acids Res., 22, 1247-1256.
+.PP
+4. Lowe, T.M. & Eddy, S.R. (1997) "tRNAscan-SE: A program for
+improved detection of transfer RNA genes in genomic sequence",
+Nucl. Acids Res., 25, 955-964.
+
+
+
+
+
diff --git a/tRNAscan-SE.src b/tRNAscan-SE.src
new file mode 100644
index 0000000..7b645d8
--- /dev/null
+++ b/tRNAscan-SE.src
@@ -0,0 +1,1031 @@
+#! /usr/bin/perl
+#
+# --------------------------------------------------------------------
+# tRNAscan-SE: a program for improved detection of transfer RNA
+# genes in genomic sequence
+#
+# Version 1.3.1
+#
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+#
+# School of Engineering, University of California, Santa Cruz
+# lowe at soe.ucsc.edu
+# http://lowelab.ucsc.edu/
+# --------------------------------------------------------------------
+#
+# Algorithm & performance published in
+# Lowe, T.M. & Eddy, S.R.,
+# Nucl. Acids Res. 25, 955-964, 1997.
+#
+# --------------------------------------------------------------------
+#
+# Usage:
+# tRNAscan-SE [options] <FASTA file(s)>
+#
+
+use strict;
+use Getopt::Long;
+use tRNAscanSE::Utils;
+use tRNAscanSE::Constants;
+use tRNAscanSE::GeneticCode;
+use tRNAscanSE::Options;
+use tRNAscanSE::Eufind;
+use tRNAscanSE::Tscan;
+use tRNAscanSE::CM;
+use tRNAscanSE::LogFile;
+use tRNAscanSE::Stats;
+use tRNAscanSE::Sequence;
+use tRNAscanSE::ScanResult;
+use tRNAscanSE::SS;
+
+# set when built by 'make'
+our $version = "";
+our $release_date = "";
+our $program_id = "tRNAscan-SE-".$version;
+# modified by 'make'
+our $bindir = "";
+our $lib_dir = "/usr/local/lib/tRNAscanSE/";
+our $temp_dir = "/tmp";
+
+# set location of temp files
+if ($ENV{TMPDIR}) {
+ $temp_dir = $ENV{TMPDIR};
+}
+
+# Global variables
+our @fp_start_time;
+our $constants = tRNAscanSE::Constants->new;
+our $opts = tRNAscanSE::Options->new;
+our $log = tRNAscanSE::LogFile->new;
+our $eufind = tRNAscanSE::Eufind->new;
+our $tscan = tRNAscanSE::Tscan->new;
+our $cm = tRNAscanSE::CM->new;
+our $gc = tRNAscanSE::GeneticCode->new;
+our $stats = tRNAscan::Stats->new;
+our $seq_file = tRNAscanSE::Sequence->new;
+
+# Signal handling
+$SIG{'TERM'} = 'error_handler';
+$SIG{'QUIT'} = 'error_handler';
+$SIG{'INT'} = 'error_handler';
+
+&set_options(); # set user-selectable options
+
+# set location of binaries & data files,
+# plus, check to make sure they are there
+$cm->set_file_paths($opts);
+$cm->check_lib_files($opts, $lib_dir);
+$cm->set_bin($bindir);
+$eufind->set_bin($bindir);
+$tscan->set_bin($bindir);
+
+# initialize variables
+$constants->set_temp_file_names($temp_dir);
+$gc->read_transl_table($opts);
+if ($opts->save_stats()) {
+ $stats->file_name($opts->stats_file());
+}
+
+my @prescan_tRNAs = ();
+
+my %global_vars = ('constants' => $constants,
+ 'opts' => $opts,
+ 'cm' => $cm);
+
+# Start processing
+&initialize_process();
+if ($opts->tscan_mode() || $opts->eufind_mode()) {
+ &first_pass_prescan();
+} # (prescan with either tRNAscan/eufind or both)
+
+# Check to see if no sequences were read from input file(s)
+if (($stats->numscanned() == 0) && ($opts->eufind_mode() || $opts->tscan_mode())) {
+ if ($opts->seq_key() ne '\S*') {
+ die "\nNo FASTA sequences matching \'".$opts->raw_seq_key()."\' key found\n\n";
+ }
+ elsif ($opts->multiple_files()) {
+ die "\nFATAL: No sequences in FASTA format found in ", join(', ', at ARGV),"\n\n"; }
+ else {
+ die "\nFATAL: No sequences in FASTA format found in file ".$opts->fastafile()."\n\n";
+ }
+}
+
+# Run Cove or Infernal on candidate tRNAs picked in first pass,
+# or by itself on seqs if no first pass searches
+elsif ($opts->cove_mode() || $opts->infernal_mode()) {
+ &run_cm_scan();
+} # if Using second-pass scanner
+
+$stats->end_sp_timer();
+
+if ($opts->save_stats()) {
+ $stats->open_file();
+ $stats->save_final_stats($opts, $gc, \@prescan_tRNAs, $cm->tab_results());
+ $stats->close_file();
+}
+
+$log->close_file();
+
+&cleanup(); # clean up temp files
+exit(0);
+
+# END main
+
+
+sub initialize_process {
+
+ # print program info header, credits, & selected run options
+ if (!$opts->quiet_mode()) {
+ print STDERR "\ntRNAscan-SE v.$version ($release_date) -",
+ " scan sequences for transfer RNAs\n";
+ &display_credits();
+ $opts->display_run_options($cm, $tscan, $eufind, *STDERR);
+ }
+
+ $stats->start_fp_timer(); # save starting time
+
+ # if statistics are being saved, write run options in stats file
+ if ($opts->save_stats()) {
+ my $host = `hostname`;
+ chomp($host);
+ $stats->open_file();
+ $stats->write_line("\ntRNAscan-SE v.$version ($release_date) scan results (on host $host)\nStarted: ".`date`);
+ $opts->display_run_options($cm, $tscan, $eufind, $stats->FILE_H());
+ $stats->close_file();
+ }
+}
+
+# Running tRNAscan and/or EufindtRNA
+sub first_pass_prescan {
+
+ $log->write_line("\nPhase I: Searching for tRNAs with tRNAscan and/or EufindtRNA\n");
+
+ # open seq file to search
+ $seq_file->open_file($opts->fasta_file(), "read");
+
+ # Main loop for reading seqs & scanning with tRNAscan and/or
+ # EufindtRNA
+
+ my $targ_seq_id = 0; # Don't look for a specific Seq number
+ my $start_index = 1;
+ my $sequence_scanned = 0;
+ my $eufind_output;
+ my @hit_list = ();
+ my $tmp_raw = $constants->tmp_raw();
+ my $tmp_fa = $constants->tmp_fa();
+ my $tmp_fa_file = tRNAscanSE::Sequence->new;
+ my $missing_fa_file = tRNAscanSE::Sequence->new;
+
+ while ($seq_file->read_fasta($opts, $targ_seq_id)) {
+ if ($opts->cove_mode() || $opts->infernal_mode()) {
+ $log->write_line("Scanned seqs: ".$stats->numscanned()." (at ".$seq_file->seq_name().")");
+ }
+ $stats->increment_numscanned();
+ $stats->increment_first_pass_base_ct($seq_file->seq_length());
+
+ do {
+ # Write one input sequence / seq buffer to tmp_fa file
+
+ $tmp_fa_file->open_file($tmp_fa, "write");
+ $tmp_fa_file->set_seq_info($seq_file->seq_name(), $seq_file->seq_description(),
+ $seq_file->seq_length(), $seq_file->sequence());
+ $tmp_fa_file->write_fasta();
+ $tmp_fa_file->close_file();
+
+ # Run tRNAscan on $tmp_fa file & write results to
+ # $tmp_raw output file
+
+ if ($opts->tscan_mode()) {
+ $tscan->run_tRNAscan($tmp_fa, $tmp_raw,
+ $start_index, $lib_dir, $seq_file->seq_name());
+ if ($opts->save_verbose()) {
+ $tscan->append_verbfile($opts->verb_file(), $tmp_fa, $seq_file->seq_name());
+ }
+ $tscan->process_tRNAscan_hits($constants, $gc, $stats, $seq_file->seq_name(), \@hit_list);
+ }
+
+ # Run eufindtRNA program & save results in memory
+ # in $Eufind_output array
+
+ if ($opts->eufind_mode()) {
+ $eufind_output = $eufind->run_eufind($tmp_fa, $start_index,
+ $opts->max_int_len(), $seq_file->seq_name());
+ if ($eufind_output ne "") {
+ $eufind->process_Eufind_hits($constants, $stats, \@hit_list, $eufind_output);
+ $eufind_output = "";
+ }
+ }
+
+ $sequence_scanned = 1; # Flag indicating current sequence has been scanned
+
+ # Check to see if all of sequence was read in last buffer-sized chunck
+
+ if ($seq_file->seq_buf_overrun()) {
+ $start_index = $seq_file->buffer_end_index() + 1;
+ if ($seq_file->read_more_fasta()) {
+ $sequence_scanned = 0;
+ }
+ }
+
+ } until ($sequence_scanned);
+
+ if ($#hit_list >= 0) {
+ $stats->increment_seqs_hit();
+
+ # save results in ACeDB format now if not
+ # using Cove analysis
+ if ($opts->ace_output() && (!$opts->CM_mode())) {
+ &save_Acedb_from_firstpass($opts->output_codon(), $gc->one_let_trans_map(),
+ \@hit_list, $opts->out_file());
+ }
+ else {
+ # save all hits for this seq
+ my $fpass_trna_base_ct = $stats->fpass_trna_base_ct();
+ &save_firstpass_output($opts, \@hit_list, $constants->source_tab(), \$fpass_trna_base_ct,
+ $seq_file->seq_length(), $seq_file->seq_id());
+ $stats->fpass_trna_base_ct($fpass_trna_base_ct);
+ }
+
+ @hit_list = (); # clear hit array
+ }
+ elsif ($opts->save_missed()) {
+ # save sequence that had no tRNA hits if -M param set
+ # NOTE: only writes last frame of seq buffer if seq length > max_seq_buffer
+ $missing_fa_file->open_file($opts->missed_seq_file(), "append");
+ $missing_fa_file->set_seq_info($seq_file->seq_name(), $seq_file->seq_description(),
+ $seq_file->seq_length(), $seq_file->sequence());
+ $missing_fa_file->write_fasta();
+ $missing_fa_file->close_file();
+ }
+
+ $seq_file->reset_buffer_ct();
+ $start_index = 1;
+
+ } # while (read_fasta()) - still more seqs to scan
+
+ $seq_file->close_file();
+ # remove temporary files
+ system("rm -f $tmp_raw $tmp_fa");
+ $seq_file->release_memory(); # release memory
+
+ $log->write_line("\n".$stats->numscanned()." seqs scanned, ".$stats->seqs_hit()." seqs had at ".
+ "least one hit.\n".$stats->trnatotal()." total tRNAs predicted in first pass scans\n");
+
+ if ((!$opts->CM_mode()) && ($stats->trnatotal() == 0) && (!$opts->quiet_mode())) {
+ print STDERR "No tRNAs found.\n\n";
+ }
+
+ $stats->end_fp_timer(); # save time first-pass scans are done
+
+ if ($opts->save_stats()) {
+ $stats->open_file();
+ $stats->save_firstpass_stats();
+ $stats->close_file();
+ }
+}
+
+# Run Cove or Infernal
+sub run_cm_scan {
+
+ $stats->start_sp_timer();
+
+ if ($opts->tscan_mode() || $opts->eufind_mode()) {
+ $log->write_line("\nPhase II: ".$opts->second_pass_label()." verification of candidate ".
+ "tRNAs detected\n with tRNAscan and/or EufindtRNA\n");
+ }
+ else {
+ $log->write_line("\nRunning ".$opts->second_pass_label()." analysis\n");
+ if (!$opts->use_prev_ts_run()) {
+ &prep_for_secpass_only($opts, $stats, $seq_file);
+ }
+ }
+
+ my $prev_seq_name = ''; # Name of tRNA sequence currently in memory
+ my $seqinfo_flag = 0; # flag indicates if seqid and seqlen are saved
+ # in firstpass result file
+ my $curseq_trnact = 0;
+ my $r_prescan_tRNA;
+ my $tRNAs_found = 0;
+ my @sec_pass_hits = ();
+
+ $seq_file->open_file($opts->fasta_file(), "read");
+
+ &parse_tabular_output($opts, \@prescan_tRNAs, \$seqinfo_flag);
+
+ for (my $tRNA_ct=0; $tRNA_ct <= $#prescan_tRNAs; $tRNA_ct++)
+ {
+ $r_prescan_tRNA = $prescan_tRNAs[$tRNA_ct];
+
+ # Reset tRNA counter for each new sequence
+ if ($r_prescan_tRNA->{src_seqname} ne $prev_seq_name) {
+ $curseq_trnact = 0;
+ }
+
+ # Retrieve tRNA sequence and write to tmp_trnaseq_file
+ if (!&prepare_tRNA_to_scan($seq_file, $r_prescan_tRNA)) {
+ next;
+ }
+
+ if ($opts->cove_mode())
+ {
+ $tRNAs_found = $cm->analyze_with_cove($opts, $constants, $stats, $gc, $log, $program_id,
+ $r_prescan_tRNA, $constants->tmp_trnaseq_file(), \$curseq_trnact, \@sec_pass_hits);
+ }
+ elsif ($opts->infernal_mode())
+ {
+ $tRNAs_found = $cm->analyze_with_cmsearch($opts, $constants, $stats, $gc, $log, $program_id,
+ $r_prescan_tRNA, $constants->tmp_trnaseq_file(), \$curseq_trnact, \@sec_pass_hits);
+ }
+
+ $prev_seq_name = $r_prescan_tRNA->{src_seqname};
+
+ if (!$cm->CM_check_for_introns()) {
+ $stats->increment_total_secpass_ct($tRNAs_found);
+ }
+
+ }
+
+ if (($cm->CM_check_for_introns() || $cm->CM_check_for_split_halves()) && (scalar(@sec_pass_hits) > 0)) {
+ $cm->scan_noncanonical_introns($opts, $constants, $stats, $gc, $log, $seq_file, \@sec_pass_hits);
+ if ($cm->CM_check_for_split_halves()) {
+ $cm->scan_split_tRNAs($opts, $constants, $stats, $gc, $log, \@sec_pass_hits);
+ }
+
+ for (my $ct = 0; $ct < scalar(@sec_pass_hits); $ct++) {
+ &output_tRNA($opts, $gc, $log, $cm->tab_results(), $cm->get_hmm_score(), $program_id,
+ $sec_pass_hits[$ct], $sec_pass_hits[$ct], $ct+1);
+ $stats->increment_total_secpass_ct(1);
+ }
+ }
+ $seq_file->close_file();
+
+ if (($stats->total_secpass_ct() == 0) && (!$opts->quiet_mode())) {
+ print STDERR "No tRNAs found.\n\n";
+ }
+}
+
+# Extracts tRNA sequence with given coordinates, and writes to
+# $tmp_
+sub prepare_tRNA_to_scan {
+
+ my ($seq_file, $r_tRNA_info) = @_;
+
+ my ($tRNA_seq, $upstream, $downstream) = $seq_file->get_tRNA_sequence($r_tRNA_info->{src_seqname}, $r_tRNA_info->{strand},
+ $r_tRNA_info->{start}, $r_tRNA_info->{end},
+ $log, $opts, $constants);
+ $r_tRNA_info->{seq} = $tRNA_seq;
+ $r_tRNA_info->{upstream} = $upstream;
+ $r_tRNA_info->{downstream} = $downstream;
+
+ $stats->increment_secpass_base_ct($r_tRNA_info->{len});
+
+ &write_tRNA($constants->tmp_trnaseq_file(), $seq_file->seq_name(), $seq_file->seq_description(), $r_tRNA_info->{seq}, 1);
+
+ $seq_file->release_memory();
+
+ return 1;
+}
+
+sub cleanup { # clean up temp files
+
+ system("rm -f ".$opts->temp_dir()."/tscan$$".'*');
+ system("rm -f ".$opts->fafile().".pid");
+}
+
+sub error_handler {
+
+ print "\nAborting tRNAscan-SE\n\n";
+
+ my $ppid = $$;
+ my $psout = `ps -ef`;
+ my @ps_lines = split(/\n/,$psout);
+ foreach my $line (0..$#ps_lines) {
+ if ($ps_lines[$line] =~/^\s+\S+\s+(\d+)\s+($ppid)\s/) {
+# print STDERR "Killing process $1:\n",$ps_lines[$line],"\n";
+ my $killct = kill 'KILL', $1;
+# print STDERR "$killct jobs received the kill signal\n";
+ }
+ }
+
+ &cleanup();
+ exit(1);
+}
+
+sub display_credits {
+
+ print STDERR "\n Please cite: \n",
+ "\tLowe, T.M. & Eddy, S.R. (1997) \"tRNAscan-SE: A program for\n",
+ "\timproved detection of transfer RNA genes in genomic sequence\"\n",
+ "\tNucl. Acids Res. 25: 955-964.\n",
+ "\n This program uses a modified, optimized version of tRNAscan v1.3\n",
+ " (Fichant & Burks, J. Mol. Biol. 1991, 220: 659-671),\n",
+ " a new implementation of a multistep weight matrix algorithm\n",
+ " for identification of eukaryotic tRNA promoter regions\n",
+ " (Pavesi et al., Nucl. Acids Res. 1994, 22: 1247-1256),\n",
+ " as well as the RNA covariance analysis package Cove v.2.4.2\n",
+ " (Eddy & Durbin, Nucl. Acids Res. 1994, 22: 2079-2088).\n\n";
+}
+
+sub print_usage {
+
+ print STDERR "\nUsage: tRNAscan-SE [-options] <FASTA file(s)>\n\n";
+ print STDERR " Scan a sequence file for tRNAs using tRNAscan, EufindtRNA &\n",
+ " tRNA covariance models\n",
+ " -- defaults to use with eukaryotic sequences \n",
+ " (use -B, -A, -O or -G to scan other types of sequences)\n\n",
+ "Basic Options\n",
+ " -B : search for bacterial tRNAs (use bacterial tRNA model)\n",
+ " -A : search for archaeal tRNAs (use archaeal tRNA model)\n",
+ " -O : search for organellar (mitochondrial/chloroplast) tRNAs\n",
+ " -G : use general tRNA model (cytoplasmic tRNAs from all 3 domains included)\n\n",
+ " -i : search using Infernal cm analysis only (max sensitivity, very slow)\n",
+ " -C : search using Cove analysis only (high sensitivity, very slow)\n\n",
+ " -o <file> : save final results in <file>\n",
+ " -f <file> : save tRNA secondary structures to <file>\n",
+ " -a : output results in ACeDB output format instead of default\n",
+ " tabular format\n",
+ " -m <file> : save statistics summary for run in <file>\n",
+ " (speed, # tRNAs found in each part of search, etc)\n",
+ " -H : show both primary and secondary structure components to\n",
+ " covariance model bit scores\n",
+ " -q : quiet mode (credits & run option selections suppressed)\n\n",
+ " -h : print full list (long) of available options\n\n";
+}
+
+sub print_all_options {
+
+ print "\nUsage: tRNAscan-SE [-options] <FASTA file(s)>\n\n";
+ print " Scan a sequence file for tRNAs using tRNAscan, EufindtRNA &\n",
+ " tRNA covariance models\n",
+ " -- defaults to use with eukaryotic sequences \n",
+ " (use 'Search Mode Options' below to scan other types of sequences)\n\n",
+ "Search Mode Options:\n\n",
+ " -B --bact : search for bacterial tRNAs (use bacterial tRNA model)\n",
+ " -A --arch : search for archaeal tRNAs (use archaeal tRNA model)\n",
+ " -O --organ : search for organellar (mitochondrial/chloroplast) tRNAs\n",
+ " -G --general : use general tRNA model (cytoplasmic tRNAs from all 3 domains included)\n\n",
+ " -C --cove : search using covariance model analysis only (max sensitivity, slow)\n",
+ " -i --infernal : search using Infernal cm analysis only (max sensitivity, very slow)\n",
+ " --newscan : search using Infernal and new cm models instead of Cove\n",
+ " -H --breakdown : show breakdown of primary and secondary structure components to\n",
+ " covariance model bit scores\n",
+ " -D --nopseudo : disable pseudogene checking\n\n",
+
+ "Achaeal-specific options:\n\n",
+ " --ncintron : scan for noncanonical introns\n",
+ " --frag <file> : scan for putative tRNA gene fragments that may form split tRNAs\n",
+ " and save results in <file>\n\n",
+
+ "Output options:\n\n",
+ " -o --output <file> : save final results in <file>\n",
+ " -f --struct <file> : save tRNA secondary structures to <file>\n",
+ " -a --acedb : output results in ACeDB output format instead of default\n",
+ " tabular format\n",
+ " -m --stats <file> : save statistics summary for run in <file>\n",
+ " (speed, # tRNAs found in each part of search, etc)\n\n",
+ " -d --progress : display program progress messages\n",
+ " -l --log <file> : save log of program progress in <file>\n\n",
+ " -q --quiet : quiet mode (credits & run option selections suppressed)\n",
+ " -b --brief : brief output format (no column headers)\n\n",
+ " -N --codons : output corresponding codons instead of tRNA anticodons\n\n",
+ " -? \# : '#' in place of <file> chooses default name for output files\n",
+ " -p --prefix <label> : use <label> prefix for all default output file names\n\n",
+ " -y --hitsrc : show origin of first-pass hits (Ts=tRNAscan 1.4,\n",
+ " Eu=EufindtRNA, Bo= Both)\n\n",
+
+ "Specify Alternate Cutoffs / Data Files:\n\n",
+ " -X --score <score> : set cutoff score (in bits) for reporting tRNAs (default=20)\n",
+ " -L --len <length> : set max length of tRNA intron+variable region (default=116bp)\n\n",
+ " -I --iscore <score> : manually set \"intermediate\" cutoff score for EufindtRNA\n",
+ " -z --pad <number> : use <number> nucleotides padding when passing first-pass\n",
+ " tRNA bounds predictions to CM analysis (default=8)\n\n",
+ " -g --gencode <file> : use alternate genetic codes specified in <file> for\n",
+ " determining tRNA type\n",
+ " -c --cm <file> : use an alternate covariance model in <file>\n\n",
+
+ "Misc Options:\n\n",
+ " -h --help : print this help message\n",
+ " -Q --forceow : do not prompt user before overwriting pre-existing\n",
+ " result files (for batch processing)\n\n",
+ " -n --match <EXPR> : search only sequences with names matching <EXPR> string\n",
+ " (<EXPR> may contain * or ? wildcard chars)\n",
+ " -s --search <EXPR> : start search at sequence with name matching <EXPR> string\n",
+ " and continue to end of input sequence file(s)\n",
+
+ "Special Options (for testing & special purposes)\n\n",
+ " -T --tscan : search using tRNAscan only (defaults to strict params)\n",
+ " -t --tmode <mode> : explicitly set tRNAscan params, where <mode>=R or S\n",
+ " (R=relaxed, S=strict tRNAscan v1.3 params)\n\n",
+ " -E --eufind : search using Eukaryotic tRNA finder (EufindtRNA) only\n",
+ " (defaults to Normal seach parameters when run alone,\n",
+ " or to Relaxed search params when run with Cove)\n",
+ " -e --emode <mode> : explicitly set EufindtRNA params, where <mode>=R, N, or S\n",
+ " (relaxed, normal, or strict)\n\n",
+ " -r --fsres <file> : save first-pass scan results from EufindtRNA and/or\n",
+ " tRNAscan in <file> in tabular results format\n",
+ " -u --filter <file> : search with Cove only those sequences & regions delimited\n",
+ " in <file> (tabular results file format)\n",
+ " -F --falsepos <file> : save first-pass candidate tRNAs in <file> that were then\n",
+ " found to be false positives by Cove analysis\n",
+ " -M --missed <file> : save all seqs that do NOT have at least one\n",
+ " tRNA prediction in them (aka \"missed\" seqs)\n",
+ " -v --verbose <file> : save verbose tRNAscan 1.3 output to <file>\n",
+ " -V --version <vers> : run an alternate version of tRNAscan\n",
+ " where <vers> = 1.3, 1.39, 1.4 (default), or 2.0\n",
+ " --nomerge : Keep redundant tRNAscan 1.3 hits (don't filter out multiple\n",
+ " predictions per tRNA identification)\n",
+ "\n\n";
+}
+
+sub set_options {
+
+ # clear option vars
+ our $opt_acedb=0; our $opt_brief=0; our $opt_quiet=0; our $opt_progress=0;
+ our $opt_bact=0; our $opt_arch=0; our $opt_organ=0; our $opt_general=0;
+ our $opt_cove=0; our $opt_infernal=0; our $opt_eufind=0; our $opt_tscan=0; our $opt_newscan=0;
+ our $opt_ncintron=0; our $opt_frag='';
+ our $opt_breakdown=0; our $opt_nopseudo=0; our $opt_nomerge=0; our $opt_hitsrc=0;
+ our $opt_output=''; our $opt_struct=''; our $opt_stats=''; our $opt_log='';
+ our $opt_prefix=''; our $opt_match=''; our $opt_search='';
+ our $opt_gencode=''; our $opt_cm=''; our $opt_codons=0;
+ our $opt_tmode=''; our $opt_emode=''; our $opt_fsres=''; our $opt_filter=''; our $opt_falsepos=''; our $opt_missed='';
+ our $opt_score=1000; our $opt_iscore=1000; our $opt_len=-1; our $opt_pad=1000;
+ our $opt_version=0; our $opt_help=0; our $opt_verbose=''; our $opt_forceow=0;
+ our $opt_w=''; our $opt_U=0; our $opt_Y=0;
+
+ Getopt::Long::Configure("bundling", "no_ignore_case", "no_auto_abbrev");
+ my $result = &GetOptions(
+ # Misc option switches
+ "help|h",
+ "acedb|a","brief|b","quiet|q","hitsrc|y","breakdown|H",
+ "Y",
+ "progress|d","nopseudo|D","codons|N","forceow|Q","nomerge",
+ # Search mode switches
+ "bact|B", "arch|A", "organ|O", "general|G",
+ "eufind|E", "tscan|T", "cove|C","infernal|i", "newscan",
+ "ncintron", "frag=s",
+ # file name input specifiers
+ "gencode|g=s","filter|u=s","cm|c=s",
+ # file name output specifiers
+ "output|o=s","stats|m=s","log|l=s","struct|f=s","fsres|r=s","verbose|v=s","w=s","falsepos|F=s","missed|M=s",
+ #string parameters
+ "prefix|p=s","match|n=s","search|s=s","emode|e=s","tmode|t=s",
+ #numerical parameters
+ "version|V=f","score|X=f","iscore|I=f","pad|z=i","len|L=i");
+
+ if ($opt_help) {
+ print STDERR "\ntRNAscan-SE $version ($release_date)\n";
+ &display_credits;
+ &print_all_options;
+ exit(0);
+ }
+ if ($#ARGV < 0) {
+ print STDERR "\ntRNAscan-SE $version ($release_date)\n";
+ print STDERR "\nFATAL: No sequence file(s) specified.\n";
+ &print_usage();
+ exit(1);
+ }
+
+ my $fafile = $ARGV[0]; # use input seq file name as prefix
+ $fafile =~ s/\.fa|\.seq$//; # for default output file names
+ # take .seq or .fa extensions off
+
+ if ($opt_prefix ne '') { # use specified prefix for default
+ $fafile = $opt_prefix; # output file names
+ }
+ $opts->fafile($fafile);
+
+ if ($opt_forceow != 0) { # Do NOT prompt before overwriting pre-existing
+ # output files; good for use in batch-mode jobs
+ $opts->prompt_for_overwrite(0);
+ }
+
+ if ($opt_output ne '') { # set name of result file
+ $opts->results_to_stdout(0);
+ if ($opt_output eq "#") {
+ $opts->out_file("$fafile.out");
+ }
+ else {
+ $opts->out_file($opt_output);
+ }
+ &check_output_file($opts->out_file(), $opts->prompt_for_overwrite());
+ }
+
+ if ($opt_acedb != 0) { # save results in ACeDB output
+ $opts->ace_output(1);
+ }
+ if ($opt_brief != 0) { # use brief output (suppress column header)
+ $opts->brief_output(1);
+ }
+ if ($opt_quiet != 0) { # use quite mode (suppress credits &
+ $opts->quiet_mode(1); # user-selected options)
+ }
+
+ if ($opt_hitsrc != 0) { # save source of tRNA hit
+ $opts->save_source(1);
+ }
+
+ if ($opt_nopseudo != 0) {
+ $cm->skip_pseudo_filter(1); # disable psuedogene filtering
+ }
+
+ if ($opt_codons != 0) {
+ $opts->output_codon(1); # translate anticodon to codon for output
+ }
+
+ if ($opt_match ne '') { # search only sequences matching KEY name
+ $opts->seq_key($opt_match);
+ $opts->raw_seq_key($opts->seq_key()); # save original KEY expr
+ my $key = $opts->seq_key();
+ $key =~ s/(\W)/\\$1/g;
+ $key =~ s/\\\*/\\S\*/g; # turning KEY into regular expression
+ $key =~ s/\\\?/\\S/g; # notation
+ $key =~ s/[\"\']//g; # "
+ $opts->seq_key($key);
+ }
+ elsif ($opt_search ne '') { # search all sequences after matching KEY
+ $opts->start_at_key(1);
+ $opts->seq_key($opt_search);
+ $opts->raw_seq_key($opts->seq_key()); # save original KEY expr
+ my $key = $opts->seq_key();
+ $key =~ s/(\W)/\\$1/g;
+ $key =~ s/\\\*/\\S\*/g; # turning KEY into regular expression
+ $key =~ s/\\\?/\\S/g; # notation
+ $key =~ s/[\"\']//g; # "
+ $opts->seq_key($key);
+ }
+ else {
+ $opts->seq_key('\S*');
+ }
+
+ if ($opt_organ != 0) { # shorthand for setting options
+ $opt_cove = 1; # cove mode is best for organellar scans
+ $opt_eufind = 0; # (mito/chloroplast)
+ $opt_tscan = 0;
+ $opts->search_mode("general"); # use original "General" tRNA model
+
+ $opts->org_mode(1);
+ $cm->cm_cutoff(15); # lower cove cutoff score
+ $cm->skip_pseudo_filter(1); # disable psuedogene checking
+ }
+
+ if ($opt_bact != 0) {
+ $eufind->eufind_intscore(-36.0); # cutoff for bacterial tRNAs
+ # using relaxed mode eufindtRNA
+ $opts->search_mode("bacteria"); # use arch/bact SelCys covariance model
+ }
+
+ $cm->CM_check_for_introns(0);
+ $cm->CM_check_for_split_halves(0);
+ if ($opt_arch != 0) {
+ $opts->CM_mode("cove");
+ $eufind->eufind_intscore(-36.0); # cutoff for bacterial/arch tRNAs
+ # using relaxed mode eufindtRNA
+ $opts->search_mode("archaea"); # use Arch covariance model
+
+ if ($opt_ncintron != 0) {
+ $cm->CM_check_for_introns(1); # check for non-canonical introns
+ }
+
+ if ($opt_frag ne '') {
+ $cm->CM_check_for_split_halves(1); # check for tRNA fragments of split tRNAs
+ if ($opt_frag eq "#") {
+ $opts->split_fragment_file("$fafile.frag");
+ }
+ elsif (($opt_frag eq "\$") ||
+ ($opt_frag eq "-")) { # sends structure output to stdout
+ $opts->split_fragment_file("-"); # instead of tabular output
+ if ($opts->results_to_stdout()) {
+ $opts->results_to_stdout(0);
+ $opts->out_file("/dev/null");
+ }
+ }
+ else {
+ $opts->split_fragment_file($opt_frag);
+ }
+ &check_output_file($opts->split_fragment_file(), $opts->prompt_for_overwrite());
+ }
+ }
+
+ if ($opt_general != 0) { # use original general cove model
+ $opts->search_mode("general"); # with all tRNAs from 3 domains
+ }
+
+ if ($opt_newscan && $opt_cove) {
+ die "FATAL: Conflicting search options have been selected. --newscan and -C cannot be used simultaneously.\n";
+ }
+
+ if ($opt_newscan) { # use old tRNAscan-SE method for scanning (Cove instead of infernal)
+ $opts->CM_mode("infernal");
+ }
+
+ if ($opt_cove != 0) { # do Cove scan only
+ $opts->CM_mode("cove");
+ }
+
+ if ($opt_infernal != 0) { # do Cove scan only
+ $opts->CM_mode("infernal");
+ }
+
+ if ($opt_cove || $opt_infernal) {
+ $opts->tscan_mode(0); # don't use tRNAscan unless
+ # also specified by -T option
+ $opts->eufind_mode(0); # don't use eufindtRNA unless
+ # also specified by -E option
+ }
+
+ if ($opt_tscan != 0) { # do tRNAscan only, skip Cove
+ $opts->tscan_mode(1);
+ $tscan->tscan_params("-s"); # if only using tRNAscan, use
+ $opts->strict_params(1); # strict tRNAscan 1.3 params
+ # since Cove won't eliminate high
+ # false pos rate with default params
+
+ if (($opt_cove == 0) || ($opt_infernal == 0)) {
+ $opts->CM_mode(""); # if -C isn't also specified
+ } # turn off Cove filtering
+ # if -i isn't also specified
+ # turn off infernal filtering
+
+ if ($opt_eufind == 0) { # if -E option isn't also specified
+ $opts->eufind_mode(0); # turn off eufindtRNA
+ }
+ }
+
+ if ($opt_tmode ne '') { # set tRNAscan search params
+ $opt_tmode = uc($opt_tmode);
+ if ($opt_tmode eq "R") {
+ $tscan->tscan_params("-r"); # use relaxed tRNAscan params
+ $opts->strict_params(0);
+ }
+ elsif ($opt_tmode eq "S") {
+ $tscan->tscan_params("-s"); # use strict tRNAscan v1.3 params
+ $opts->strict_params(1);
+ }
+ elsif ($opt_tmode eq "A") {
+ $tscan->tscan_params("-a"); # use alternate tRNAscan params
+ $opts->strict_params(0);
+ }
+ else {
+ print STDERR "\nWARNING: tRNAscan parameter specified",
+ " with -t option not recognized.\n",
+ " Defaulting to strict tRNAscan params\n\n";
+ $tscan->tscan_params("-s");
+ $opts->strict_params(1);
+ }
+ }
+
+ if ($opt_nomerge != 0) { # don't merge redundant tRNAscan hits
+ # option only for diagnostic purposes
+ $tscan->keep_tscan_repeats(1);
+ }
+
+ if ($opt_eufind != 0) { # use eufindtRNA
+ $opts->eufind_mode(1);
+
+ if (($opt_cove == 0) || ($opt_infernal == 0)) {
+ $opts->CM_mode(""); # if -C isn't also specified
+ } # turn off Cove filtering
+ # if -i isn't also specified
+ # turn off infernal filtering
+
+ if (!$opts->cove_mode() && !$opts->infernal_mode()) {
+ $eufind->eufind_params(""); # use more strict default params
+ # if no second-pass filtering
+ }
+ else { # use more relaxed params if using
+ # second-pass filtering
+ $eufind->eufind_params("-r");
+ }
+ if ($opt_tscan == 0) { # turn off tRNAscan if not specified
+ $opts->tscan_mode(0); # on command line
+ }
+ }
+
+ if ($opt_emode ne '') { # set eufindtRNA search params
+ $opt_emode = uc($opt_emode);
+ if ($opt_emode eq "R") {
+ $eufind->eufind_params("-r"); # use relaxed params
+ } # does not look for poly T
+ elsif ($opt_emode eq "N") {
+ $eufind->eufind_params(""); # use default params
+ } # penalizes for no poly T
+ elsif ($opt_emode eq "S") {
+ $eufind->eufind_params("-s"); # use strict params
+ # requires poly T
+ $eufind->eufind_intscore(-31.25); # default intermediate cutoff
+ # for original algorithm
+ }
+ else {
+ print STDERR "\nWARNING: EufindtRNA parameter specified",
+ " with -e option not recognized.\n",
+ " Defaulting to relaxed EufindtRNA params\n\n";
+ $eufind->eufind_params("-r");
+ }
+ }
+
+ if ($opt_iscore != 1000) {
+ $eufind->eufind_intscore($opt_iscore);
+ }
+
+ if ($opt_pad != 1000) { # pad both ends of first-pass hits with this
+ $opts->padding($opt_pad); # many extra bases before passing to Cove
+ }
+
+ if ($opt_gencode ne '') { # use alternate genetic code table
+ $opts->gc_file($opt_gencode);
+ $opts->alt_gcode(1);
+ }
+
+ if ($opt_breakdown != 0) { # get HMM score for tRNA hits
+ $cm->get_hmm_score(1);
+ }
+
+ if ($opt_cm ne '') { # use alternate covariance model
+ $cm->alt_cm_file($opt_cm);
+ $cm->skip_pseudo_filter(1); # disable psuedogene checking
+ $cm->get_hmm_score(0); # don't try to get hmm score
+ }
+
+ if ($opt_stats ne '') { # save stats summary file
+ $opts->save_stats(1);
+ if ($opt_stats eq "#") {
+ $opts->stats_file("$fafile.stats");
+ }
+ else {
+ $opts->stats_file($opt_stats);
+ }
+ &check_output_file($opts->stats_file(), $opts->prompt_for_overwrite());
+ }
+
+ if ($opt_w ne '') { # save coves secondary structures for
+ $opts->save_odd_struct(1); # tRNA's whose acodons it couldn't call
+ if ($opt_w eq "#") {
+ $opts->odd_struct_file("$fafile.oddstruct");
+ }
+ else {
+ $opts->odd_struct_file($opt_w);
+ }
+ &check_output_file($opts->odd_struct_file(), $opts->prompt_for_overwrite());
+ }
+
+ if ($opt_struct ne '') { # save all coves secondary structures
+ $opts->save_all_struct(1);
+ if ($opt_struct eq "#") {
+ $opts->all_struct_file("$fafile.ss");
+ }
+ elsif (($opt_struct eq "\$") ||
+ ($opt_struct eq "-")) { # sends structure output to stdout
+ $opts->all_struct_file("-"); # instead of tabular output
+ if ($opts->results_to_stdout()) {
+ $opts->results_to_stdout(0);
+ $opts->out_file("/dev/null");
+ }
+ }
+ else {
+ $opts->all_struct_file($opt_struct);
+ }
+ &check_output_file($opts->all_struct_file(), $opts->prompt_for_overwrite());
+ }
+
+ if ($opt_missed ne '') { # save only seqs without a tRNA hit
+ $opts->save_missed(1);
+ if ($opt_missed eq "#") {
+ $opts->missed_seq_file("$fafile.missed");
+ }
+ else {
+ $opts->missed_seq_file($opt_missed);
+ }
+ &check_output_file($opts->missed_seq_file(),$opts->prompt_for_overwrite());
+ }
+
+ # outputs PID number in file for
+ # tRNAscan-SE web server program
+ if ($opt_Y != 0) {
+ &check_output_file("$fafile.pid", $opts->prompt_for_overwrite());
+ &open_for_write(\*TESTF, "$fafile.pid");
+ print TESTF "PID=$$\n";
+ close(TESTF);
+ }
+
+ if ($opt_verbose ne '') { # save verbose tRNAscan output
+ $opts->save_verbose(1);
+ my $tmp_verb = &tempname($temp_dir,".vb"); # get temp output file name
+ &check_output_file($tmp_verb, $opts->prompt_for_overwrite());
+ $opts->tscan_params($opts->tscan_params() . "-v $tmp_verb");
+ if ($opt_verbose eq "#") {
+ $opts->verb_file("$fafile.verb");
+ }
+ else {
+ $opts->verb_file($opt_verbose);
+ }
+ &check_output_file($opts->verb_file(),$opts->prompt_for_overwrite());
+ }
+
+ if ($opt_filter ne '') { # use previous results output file
+ $opts->tscan_mode(0);
+ $opts->eufind_mode(0);
+ $opts->use_prev_ts_run(1);
+ $opts->firstpass_result_file($opt_filter);
+ if (!(-e $opts->firstpass_result_file())) {
+ die "FATAL: Can't find formatted tRNA output file ",
+ $opts->firstpass_result_file()."\n\n";
+ }
+ }
+ elsif ($opt_fsres ne '') { # create named file for first
+ $opts->save_firstpass_res(1); # pass results
+ if ($opt_fsres eq "#") {
+ $opts->firstpass_result_file("$fafile.fpass.out");
+ }
+ else {
+ $opts->firstpass_result_file($opt_fsres);
+ }
+ &check_output_file($opts->firstpass_result_file(), $opts->prompt_for_overwrite());
+ &init_fp_result_file($opts->firstpass_result_file());
+ }
+ else { # create temp file for firstpass output
+ $opts->firstpass_result_file(&tempname($temp_dir, ".fpass"));
+ &check_output_file($opts->firstpass_result_file(), $opts->prompt_for_overwrite());
+ &init_fp_result_file($opts->firstpass_result_file());
+ }
+
+ if ($opt_falsepos ne '') { # save false positive tRNAs from
+ $opts->save_falsepos(1); # first-pass scans that Cove bonked
+ $opts->save_source(1); # save source of tRNA hit (-y option)
+ if ($opt_falsepos eq "#") {
+ $opts->falsepos_file("$fafile.fpos");
+ }
+ else {
+ $opts->falsepos_file($opt_falsepos);
+ }
+ &check_output_file($opts->falsepos_file(), $opts->prompt_for_overwrite());
+ }
+
+ if ($opt_len > 0) {
+ $opts->max_int_len($opt_len); # set MAX intron+variable loop region size
+ # used in EufindtRNA & Cove
+
+ if ($opts->use_prev_ts_run() || $opts->eufind_mode()) {
+ $opts->find_long_tRNAs(1); # look for long tRNAs if needed
+ }
+ else {
+ $cm->max_cove_tRNA_length($opts->max_int_len() + $cm->min_tRNA_no_intron());
+ }
+ }
+
+ if ($opt_progress != 0) {
+ $log->open_file("-") ||
+ die "FATAL: Unable to open standard out to display program progress\n\n";
+ $opts->display_progress(1);
+ }
+ elsif ($opt_log ne '') {
+ if ($opt_log eq "#") {
+ $opts->log_file("$fafile.log");
+ }
+ else {
+ $opts->log_file($opt_log);
+ }
+ &check_output_file($opts->log_file(), $opts->prompt_for_overwrite());
+ $log->open_file($opts->log_file());
+ $opts->save_progress(1);
+ }
+ else {
+ $log->open_file("/dev/null") ||
+ die "FATAL: Unable to open /dev/null to record program progress\n\n";
+ }
+
+ if ($opt_version != 0) { # use alternate tRNAscan version
+ $tscan->tscan_version($opt_version);
+ }
+
+ if ($opt_score != 1000) { # use different Cove-score cutoff for reporting
+ # "real" tRNAs
+ $cm->cm_cutoff($opt_score); # dummy opt_X val is 10,000 to avoid overlap
+ # with a real value a user might specify
+ }
+
+ if ($#ARGV == 0) { # only one seq file on command line
+ $opts->multiple_files(0);
+ $opts->fasta_file($ARGV[0]);
+ }
+ else {
+ $opts->multiple_files(1);
+ my $tmp_multiseq_file = &tempname($temp_dir, ".mseq");
+ &check_output_file($tmp_multiseq_file, $opts->prompt_for_overwrite());
+ foreach my $filename (@ARGV) {
+ system("cat $filename >> $tmp_multiseq_file");
+ }
+ $opts->fasta_file($tmp_multiseq_file);
+ }
+
+ if ($opts->cove_mode()) {
+ $opts->second_pass_label("Cove");
+ }
+ if ($opts->infernal_mode()) {
+ $opts->second_pass_label("Infernal");
+ }
+
+ $cm->CM_mode($opts->CM_mode());
+
+ $opts->temp_dir($temp_dir);
+}
diff --git a/tRNAscanSE/CM.pm b/tRNAscanSE/CM.pm
new file mode 100644
index 0000000..ee33eee
--- /dev/null
+++ b/tRNAscanSE/CM.pm
@@ -0,0 +1,2561 @@
+# tRNAscanSE/CM.pm
+# This class contains parameters and functions for running CM tRNA search used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::CM;
+
+use strict;
+use tRNAscanSE::Utils;
+use tRNAscanSE::ScanResult;
+use tRNAscanSE::SS;
+use tRNAscanSE::Sequence;
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY
+{
+ my $self = shift;
+}
+
+sub initialize
+{
+ my $self = shift;
+
+ $self->{CM_mode} = "cove";
+
+ $self->{cm_cutoff} = 20; # default cutoff score for covels reporting of tRNA
+
+ $self->{nci_scan_cutoff} = 70; # default cutoff score for rescanning noncanonical introns
+
+ $self->{split_tRNA_scan_cutoff} = 38; # default cutoff score for rescanning split tRNA
+
+ $self->{half_tRNA_cutoff} = 15; # default cutoff score for half tRNA
+
+ $self->{BHB_cm_cutoff} = 5.5; # default score for considering non-canonical intron
+
+ $self->{max_tRNA_length} = 500; # max size of -w parameter passed to covels
+ # when using a pre-scanner (eufind or tRNAscan)
+
+ $self->{max_cove_tRNA_length} = 250; # max size of -w param if only
+ # Cove is being used (too slow otherwise)
+
+ $self->{max_cmsearch_tRNA_length} = 250; # max size of -w param if only
+ # cmsearch is being used (too slow otherwise)
+
+ $self->{CM_check_for_introns} = 0; # check for non-canonical introns
+
+ $self->{CM_check_for_split_halves} = 0; # check for split tRNA fragments
+
+ $self->{min_tRNA_no_intron} = 76; # min length for average tRNA with no intron
+
+ $self->{left_splicing_len} = 27;
+ $self->{right_splicing_len} = 28;
+
+ $self->{min_intron_length} = 5; # min size of introns detected by parsing of
+ # coves output
+
+ $self->{skip_pseudo_filter} = 0; # enable filter for psuedogenes (Cove score <40,
+ # primary struct score <10 bits, secondary
+ # structure score < 5 bits)
+
+ $self->{min_cove_pseudo_filter_score} = 55; # Below this score, tRNAs are checked
+ # for min primary and secondary structure
+ # scores to catch pseudogene repeats
+ # like rat ID & rodent B2 elements
+
+ $self->{min_cmsearch_pseudo_filter_score} = 55; # Below this score, tRNAs are checked
+ # for min primary and secondary structure
+ # scores to catch pseudogene repeats
+ # like rat ID & rodent B2 elements
+
+ $self->{min_ss_score} = 5; # Below this secondary structure score,
+ # tRNA is considered a pseudogene
+
+ $self->{min_hmm_score} = 10; # Below this primary structure score,
+ # tRNA is considered a pseudogene
+
+ $self->{get_hmm_score} = 0; # also score tRNA with covariance model
+ # without sec structure info, similar
+ # to getting hmm score for match of
+ # seq to tRNA hmm (-H option)
+
+ $self->{alt_cm_file} = ''; # alternate covariance model file (-c option)
+
+ $self->{main_cm_file} = ''; # Convariance model file name
+ $self->{mainNS_cm_file} = '';
+ $self->{arch_gw_scan_cm_file} = '';
+ $self->{arch_intron_cm_file} = '';
+ $self->{arch_five_half_cm_file} = '';
+ $self->{arch_three_half_cm_file} = '';
+ $self->{Pselc_cm_file} = '';
+ $self->{Eselc_cm_file} = '';
+
+ $self->{main_cm_file_path} = ''; # Convariance model file path
+ $self->{mainNS_cm_file_path} = '';
+ $self->{arch_gw_scan_cm_file_path} = '';
+ $self->{arch_intron_cm_file_path} = '';
+ $self->{arch_five_half_cm_file_path} = '';
+ $self->{arch_three_half_cm_file_path} = '';
+ $self->{Pselc_cm_file_path} = '';
+ $self->{Eselc_cm_file_path} = '';
+
+ $self->{covels_bin} = "covels-SE"; # Application executable name
+ $self->{coves_bin} = "coves-SE";
+ $self->{cmsearch_bin} = "cmsearch";
+
+ $self->{tab_results} = +[];
+}
+
+sub CM_mode
+{
+ my $self = shift;
+ if (@_) { $self->{CM_mode} = shift; }
+ return $self->{CM_mode};
+}
+
+sub cove_mode
+{
+ my $self = shift;
+ return ($self->{CM_mode} eq 'cove');
+}
+
+sub infernal_mode
+{
+ my $self = shift;
+ return ($self->{CM_mode} eq 'infernal');
+}
+
+sub cm_cutoff
+{
+ my $self = shift;
+ if (@_) { $self->{cm_cutoff} = shift; }
+ return $self->{cm_cutoff};
+}
+
+sub BHB_cm_cutoff
+{
+ my $self = shift;
+ if (@_) { $self->{BHB_cm_cutoff} = shift; }
+ return $self->{BHB_cm_cutoff};
+}
+
+sub max_tRNA_length
+{
+ my $self = shift;
+ if (@_) { $self->{max_tRNA_length} = shift; }
+ return $self->{max_tRNA_length};
+}
+
+sub max_cove_tRNA_length
+{
+ my $self = shift;
+ if (@_) { $self->{max_cove_tRNA_length} = shift; }
+ return $self->{max_cove_tRNA_length};
+}
+
+sub max_cmsearch_tRNA_length
+{
+ my $self = shift;
+ if (@_) { $self->{max_cmsearch_tRNA_length} = shift; }
+ return $self->{max_cmsearch_tRNA_length};
+}
+
+sub CM_check_for_introns
+{
+ my $self = shift;
+ if (@_) { $self->{CM_check_for_introns} = shift; }
+ return $self->{CM_check_for_introns};
+}
+
+sub CM_check_for_split_halves
+{
+ my $self = shift;
+ if (@_) { $self->{CM_check_for_split_halves} = shift; }
+ return $self->{CM_check_for_split_halves};
+}
+
+sub min_tRNA_no_intron
+{
+ my $self = shift;
+ if (@_) { $self->{min_tRNA_no_intron} = shift; }
+ return $self->{min_tRNA_no_intron};
+}
+
+sub min_intron_length
+{
+ my $self = shift;
+ if (@_) { $self->{min_intron_length} = shift; }
+ return $self->{min_intron_length};
+}
+
+sub skip_pseudo_filter
+{
+ my $self = shift;
+ if (@_) { $self->{skip_pseudo_filter} = shift; }
+ return $self->{skip_pseudo_filter};
+}
+
+sub min_pseudo_filter_score
+{
+ my $self = shift;
+ if (@_) { $self->{min_pseudo_filter_score} = shift; }
+ return $self->{min_pseudo_filter_score};
+}
+
+sub min_ss_score
+{
+ my $self = shift;
+ if (@_) { $self->{min_ss_score} = shift; }
+ return $self->{min_ss_score};
+}
+
+sub min_hmm_score
+{
+ my $self = shift;
+ if (@_) { $self->{min_hmm_score} = shift; }
+ return $self->{min_hmm_score};
+}
+
+sub get_hmm_score
+{
+ my $self = shift;
+ if (@_) { $self->{get_hmm_score} = shift; }
+ return $self->{get_hmm_score};
+}
+
+sub alt_cm_file
+{
+ my $self = shift;
+ if (@_) { $self->{alt_cm_file} = shift; }
+ return $self->{alt_cm_file};
+}
+
+sub main_cm_file
+{
+ my $self = shift;
+ if (@_) { $self->{main_cm_file} = shift; }
+ return $self->{main_cm_file};
+}
+
+sub mainNS_cm_file
+{
+ my $self = shift;
+ if (@_) { $self->{mainNS_cm_file} = shift; }
+ return $self->{mainNS_cm_file};
+}
+
+sub arch_intron_cm_file
+{
+ my $self = shift;
+ if (@_) { $self->{arch_intron_cm_file} = shift; }
+ return $self->{arch_intron_cm_file};
+}
+
+sub Pselc_cm_file
+{
+ my $self = shift;
+ if (@_) { $self->{Pselc_cm_file} = shift; }
+ return $self->{Pselc_cm_file};
+}
+
+sub Eselc_cm_file
+{
+ my $self = shift;
+ if (@_) { $self->{Eselc_cm_file} = shift; }
+ return $self->{Eselc_cm_file};
+}
+
+sub main_cm_file_path
+{
+ my $self = shift;
+ if (@_) { $self->{main_cm_file_path} = shift; }
+ return $self->{main_cm_file_path};
+}
+
+sub mainNS_cm_file_path
+{
+ my $self = shift;
+ if (@_) { $self->{mainNS_cm_file_path} = shift; }
+ return $self->{mainNS_cm_file_path};
+}
+
+sub arch_intron_cm_file_path
+{
+ my $self = shift;
+ if (@_) { $self->{arch_intron_cm_file_path} = shift; }
+ return $self->{arch_intron_cm_file_path};
+}
+
+sub Pselc_cm_file_path
+{
+ my $self = shift;
+ if (@_) { $self->{Pselc_cm_file_path} = shift; }
+ return $self->{Pselc_cm_file_path};
+}
+
+sub Eselc_cm_file_path
+{
+ my $self = shift;
+ if (@_) { $self->{Eselc_cm_file_path} = shift; }
+ return $self->{Eselc_cm_file_path};
+}
+
+sub covels_bin
+{
+ my $self = shift;
+ if (@_) { $self->{covels_bin} = shift; }
+ return $self->{covels_bin};
+}
+
+sub coves_bin
+{
+ my $self = shift;
+ if (@_) { $self->{coves_bin} = shift; }
+ return $self->{coves_bin};
+}
+
+sub cmsearch_bin
+{
+ my $self = shift;
+ if (@_) { $self->{cmsearch_bin} = shift; }
+ return $self->{cmsearch_bin};
+}
+
+sub tab_results
+{
+ my $self = shift;
+ if (@_) { $self->{tab_results} = shift; }
+ return $self->{tab_results};
+}
+
+sub set_file_paths {
+
+ my $self = shift;
+ my $opts = shift;
+
+ if ($opts->general_mode()) {
+ if ($self->infernal_mode()) {
+ $self->{main_cm_file} = "TRNAinf-c.cm"; # use original covariance model
+ $self->{mainNS_cm_file} = "TRNAinf-ns-c.cm"; # no sec struct
+ }
+ elsif ($self->cove_mode()) {
+ $self->{main_cm_file} = "TRNA2.cm"; # use original covariance model
+ $self->{mainNS_cm_file} = "TRNA2ns.cm"; # no sec struct
+ }
+ }
+ elsif ($opts->bact_mode()) {
+ if ($self->infernal_mode()) {
+ $self->{main_cm_file} = "TRNAinf-bact-c.cm"; # use bacterial covariance model
+ $self->{mainNS_cm_file} = "TRNAinf-bact-ns-c.cm"; # no sec struct
+ }
+ elsif ($self->cove_mode()) {
+ $self->{main_cm_file} = "TRNA2-bact.cm"; # use bacterial covariance model
+ $self->{mainNS_cm_file} = "TRNA2-bactns.cm"; # no sec struct
+ }
+ }
+ elsif ($opts->arch_mode()) {
+ $self->{arch_intron_cm_file} = "Archaea-BHB-noncan.cm"; # model for finding noncanonical tRNAs
+ $self->{arch_five_half_cm_file} = "TRNAinf-arch-5h-nc.cm"; # model for finding 5'half
+ $self->{arch_three_half_cm_file} = "TRNAinf-arch-3h-nc.cm"; # model for finding 3'half
+ $self->{arch_gw_scan_cm_file} = 'TRNAinf-arch-c.cm';
+ if ($self->infernal_mode()) {
+ $self->{main_cm_file} = "TRNAinf-arch-c.cm"; # use archae covariance model
+ $self->{mainNS_cm_file} = "TRNAinf-arch-ns-c.cm"; # no sec struct
+ }
+ elsif ($opts->cove_mode()) {
+ $self->{main_cm_file} = "TRNA2-arch.cm"; # use archae covariance model
+ $self->{mainNS_cm_file} = "TRNA2-archns.cm"; # no sec struct
+ }
+ }
+ else {
+ if ($self->infernal_mode()) {
+ $self->{main_cm_file} = "TRNAinf-euk-c.cm"; # default to eukar cove model
+ $self->{mainNS_cm_file} = "TRNAinf-euk-ns-c.cm"; # no secondary struct
+ }
+ elsif ($self->cove_mode()) {
+ $self->{main_cm_file} = "TRNA2-euk.cm"; # default to eukar cove model
+ $self->{mainNS_cm_file} = "TRNA2-eukns.cm"; # no secondary struct
+ }
+ }
+
+ if ($self->{alt_cm_file} ne '') {
+ $self->{main_cm_file} = $self->{Alt_cm_file}; # use alternate cm file specified
+ # on command line with -c param
+ if ($self->infernal_mode()) {
+ $self->{mainNS_cm_file} = "TRNAinf-ns-c.cm";
+ }
+ elsif ($self->cove_mode()) {
+ $self->{mainNS_cm_file} = "TRNA2ns.cm";
+ }
+ }
+
+ if ($self->infernal_mode()) {
+ $self->{Pselc_cm_file} = "PSELCinf-c.cm";
+ $self->{Eselc_cm_file} = "ESELCinf-c.cm";
+ }
+ elsif ($self->cove_mode()) {
+ $self->{Pselc_cm_file} = "PSELC.cm";
+ $self->{Eselc_cm_file} = "ESELC.cm";
+ }
+}
+
+sub check_lib_files {
+
+ my $self = shift;
+ my $opts = shift;
+ my $lib_dir = shift;
+
+ if (-r $self->{main_cm_file}) {
+ $self->{main_cm_file_path} = $self->{main_cm_file};
+ }
+ elsif (-r $lib_dir.$self->{main_cm_file}) {
+ $self->{main_cm_file_path} = $lib_dir.$self->{main_cm_file};
+ }
+ else {
+ die "FATAL: Unable to open ".$self->{main_cm_file}." covariance model file\n\n";
+ }
+
+ if (-r $self->{mainNS_cm_file}) {
+ $self->{mainNS_cm_file_path} = $self->{mainNS_cm_file};
+ }
+ elsif (-r $lib_dir.$self->{mainNS_cm_file}) {
+ $self->{mainNS_cm_file_path} = $lib_dir.$self->{mainNS_cm_file};
+ }
+ else {
+ die "FATAL: Unable to open ".$self->{mainNS_cm_file}." covariance model file\n\n";
+ }
+
+ if (-r $self->{Pselc_cm_file}) {
+ $self->{Pselc_cm_file_path} = $self->{Pselc_cm_file};
+ }
+ elsif (-r $lib_dir.$self->{Pselc_cm_file}) {
+ $self->{Pselc_cm_file_path} = $lib_dir.$self->{Pselc_cm_file};
+ }
+ else {
+ die "FATAL: Unable to open ".$self->{Pselc_cm_file}." covariance model file\n\n";
+ }
+
+ if (-r $self->{Eselc_cm_file}) {
+ $self->{Eselc_cm_file_path} = $self->{Eselc_cm_file};
+ }
+ elsif (-r $lib_dir.$self->{Eselc_cm_file}) {
+ $self->{Eselc_cm_file_path} = $lib_dir.$self->{Eselc_cm_file};
+ }
+ else {
+ die "FATAL: Unable to open ".$self->{Eselc_cm_file}." covariance model file\n\n";
+ }
+ if ($opts->arch_mode() && ($self->infernal_mode() || $self->cove_mode())) {
+ if (-r $self->{arch_gw_scan_cm_file}) {
+ $self->{arch_gw_scan_cm_file_path} = $self->{arch_gw_scan_cm_file};
+ }
+ elsif (-r $lib_dir.$self->{arch_gw_scan_cm_file}) {
+ $self->{arch_gw_scan_cm_file_path} = $lib_dir.$self->{arch_gw_scan_cm_file};
+ }
+ else {
+ die "FATAL: Unable to open ".$self->{arch_gw_scan_cm_file}." covariance model file\n\n";
+ }
+ if (-r $self->{arch_intron_cm_file}) {
+ $self->{arch_intron_cm_file_path} = $self->{arch_intron_cm_file};
+ }
+ elsif (-r $lib_dir.$self->{arch_intron_cm_file}) {
+ $self->{arch_intron_cm_file_path} = $lib_dir.$self->{arch_intron_cm_file};
+ }
+ else {
+ die "FATAL: Unable to open ".$self->{arch_intron_cm_file}." covariance model file\n\n";
+ }
+ if (-r $self->{arch_five_half_cm_file}) {
+ $self->{arch_five_half_cm_file_path} = $self->{arch_five_half_cm_file};
+ }
+ elsif (-r $lib_dir.$self->{arch_five_half_cm_file}) {
+ $self->{arch_five_half_cm_file_path} = $lib_dir.$self->{arch_five_half_cm_file};
+ }
+ else {
+ die "FATAL: Unable to open ".$self->{arch_five_half_cm_file}." covariance model file\n\n";
+ }
+ if (-r $self->{arch_three_half_cm_file}) {
+ $self->{arch_three_half_cm_file_path} = $self->{arch_three_half_cm_file};
+ }
+ elsif (-r $lib_dir.$self->{arch_three_half_cm_file}) {
+ $self->{arch_three_half_cm_file_path} = $lib_dir.$self->{arch_three_half_cm_file};
+ }
+ else {
+ die "FATAL: Unable to open ".$self->{arch_three_half_cm_file}." covariance model file\n\n";
+ }
+ }
+}
+
+sub set_bin {
+
+ my $self = shift;
+ my $bindir = shift;
+
+ if ($^O =~ /^MSWin/) {
+ $self->{cmsearch_bin} .= ".exe";
+ $self->{covels_bin} .= ".exe";
+ $self->{coves_bin} .= ".exe";
+ }
+ if ($self->infernal_mode()) {
+ if (!(-x $self->{cmsearch_bin})) {
+ $self->{cmsearch_bin} = $bindir.$self->{cmsearch_bin};
+ if (!(-x $self->{cmsearch_bin})) {
+ die "FATAL: Unable to find ".$self->{cmsearch_bin}." executable\n\n";
+ }
+ }
+ }
+ if ($self->cove_mode()) {
+ if (!(-x $self->{covels_bin})) {
+ $self->{covels_bin} = $bindir.$self->{covels_bin};
+ if (!(-x $self->{covels_bin})) {
+ die "FATAL: Unable to find ".$self->{covels_bin}." executable\n\n";
+ }
+ }
+ if (!(-x $self->{coves_bin})) {
+ $self->{coves_bin} = $bindir.$self->{coves_bin};
+ if (!(-x $self->{coves_bin})) {
+ die "FATAL: Unable to find ".$self->{coves_bin}." executable\n\n";
+ }
+ }
+ }
+}
+
+sub set_search_params {
+
+ my $self = shift;
+ my $opts = shift;
+ my ($r_scan_len, $r_cur_cm_file,
+ $max_search_tRNA_length, $trna_len, $trna_isotype, $ns_cm) = @_;
+
+ # don't set '-W' param over 200 bp if a pre-scanner is being used,
+ # use max window of 150 bp if cmsearch only (too slow otherwise)
+
+ if ($opts->eufind_mode() || $opts->tscan_mode() || $opts->use_prev_ts_run()) {
+ $$r_scan_len = &min($trna_len, $self->{max_tRNA_length});
+ }
+ else {
+ $$r_scan_len = $max_search_tRNA_length;
+ }
+
+ # set correct CM file for current tRNA
+ if ($ns_cm) {
+ $$r_cur_cm_file = $self->{mainNS_cm_file_path};
+ }
+ else {
+ $$r_cur_cm_file = $self->{main_cm_file_path};
+
+ if ($opts->eufind_mode()) {
+ if ($trna_isotype eq "SeCp") { # use arch/prok selcys model
+ $$r_cur_cm_file = $self->{Pselc_cm_file_path};
+ }
+ elsif ($trna_isotype eq "SeCe") { # use euk selcys model
+ $$r_cur_cm_file = $self->{Eselc_cm_file_path};
+ }
+ }
+ }
+}
+
+# find anticodon loop & a-codon from coves or cmsearch output
+
+sub find_anticodon {
+
+ my $self = shift;
+ my ($seq, $ss, $undef_anticodon) = @_;
+ my ($antiloop_index, $antiloop, $antiloop_len, $antiloop_end, $ac_index, $anticodon, $verify_ac);
+
+ # Match pattern in secondary structure output,
+ # looking for second stem-loop structure ">>>>...<<<<"
+ # that should be the anitocodon stem-loop
+
+ if ($ss =~ /^([>.]+<[<.]+>[>.]*)>([.]{4,})<+/o) {
+
+ # set to index position of first base in anticodon loop
+ $antiloop_index = length($1) + 1;
+ $antiloop_len = length($2); # anticodon loop length
+
+ # index of end of anticodon loop
+ $antiloop_end = $antiloop_index + $antiloop_len - 1;
+
+ $antiloop = substr($seq, $antiloop_index, $antiloop_len);
+
+ # remove '-' gaps from loop
+ $antiloop =~ s/[\-]//g;
+ # remove introns & non-canonical bases
+ $antiloop =~ s/[a-z]//g;
+
+ # Don't guess if even number of bp in
+ # anticodon loop
+ if ((length($antiloop) < 5) || ((length($antiloop) % 2) == 0)) {
+ return ($undef_anticodon, -1, -1, -1);
+ }
+ # get anticodon
+ $ac_index = (length($antiloop) - 3) / 2;
+ $anticodon = substr($antiloop, $ac_index, 3);
+ $verify_ac = substr($seq, $ac_index + $antiloop_index, 3);
+
+ # check to see if anticodon extracted from the entire
+ # trna sequence (coveseq) is same as that extracted from
+ # just the anticodon loop sequence (antiloop)
+
+ if ($verify_ac ne $anticodon) {
+ return ($undef_anticodon, -1, -1, -1);
+ }
+ return ($anticodon, $antiloop_index, $antiloop_end, $ac_index + $antiloop_index + 1);
+ }
+ else {
+ return ($undef_anticodon, -1, -1, -1);
+ }
+}
+
+sub find_intron {
+
+ my $self = shift;
+ my ($trna_seq, $antiloop_index, $antiloop_end) = @_;
+ my ($intron, $istart, $iend, $tmpstr, $antiloop_seq);
+ my $min_intron_length = $self->{min_intron_length};
+
+ # check to see if it was unable
+ # to determine the anticodon loop
+ if ($antiloop_index == -1) {
+ return(0, 0, 0);
+ }
+ # get subsequence from start of anticodon loop
+ # to end of anticodon loop -- look for intron in it
+ $antiloop_seq = substr($trna_seq, $antiloop_index, $antiloop_end - $antiloop_index + 1);
+
+ if ($antiloop_seq =~ /^(.*[^a-z]+)([a-z]{$min_intron_length,})[^a-z]+/o) {
+ $intron = $2;
+
+ # make sure to get the base index for the last (not nec. only) occurrence
+ # of the intron sequence string up to end of anticodon loop
+ $tmpstr = substr($trna_seq, 0, $antiloop_end+1);
+ $istart = index($tmpstr, $intron) + 1;
+ $iend = length($intron) + $istart - 1;
+ }
+ else {
+ $intron = 0;
+ }
+ return ($intron, $istart, $iend);
+}
+
+# is_pseudo_gene
+#
+# Runs a covariance model without secondary structure
+# information on predicted tRNA, puts this value
+# in "hmm_score".
+# Contribution to total score from secondary structure
+# derived by subtracting hmm_score from total score
+# Returns non-zero if tRNA scores fall below minima
+# for either primary or secondary structure components
+# of score
+
+sub is_pseudo_gene {
+
+ my $self = shift;
+ my $opts = shift;
+ my ($r_hmm_score, $r_ss_score, $score, $tmp_trnaseq_file, $trna_name, $tRNA_len) = @_;
+ my ($dummy1, $dummy2, $hit_start, $hit_end, $hit_ct, $min_pseudo_filter_score);
+
+ $$r_ss_score = $$r_hmm_score = -1000; # clear values to be returned
+ $dummy1 = $dummy2 = ""; # return values not used
+
+ # skip check for pseudo gene if score is above minimum
+ # -D (disable pseudogene checking) is specified
+ # AND -H option (get hmm scores) is NOT specified
+ if ($self->cove_mode()) {
+ $min_pseudo_filter_score = $self->{min_cove_pseudo_filter_score};
+ }
+ elsif ($self->infernal_mode()) {
+ $min_pseudo_filter_score = $self->{min_cmsearch_pseudo_filter_score};
+ }
+
+ if ((($score >= $min_pseudo_filter_score) || $self->{skip_pseudo_filter}) && !$self->{get_hmm_score}) {
+ return 0;
+ }
+
+ if ($self->cove_mode())
+ {
+ ($dummy1, $dummy2, $$r_hmm_score) =
+ $self->run_coves($tmp_trnaseq_file, $trna_name, $self->{mainNS_cm_file_path});
+ }
+ elsif ($self->infernal_mode())
+ {
+ ($$r_hmm_score, $hit_start, $hit_end, $hit_ct) =
+ $self->cmsearch_bestscore($opts, $tmp_trnaseq_file, $trna_name, $tRNA_len, $self->{mainNS_cm_file_path});
+ }
+ else {
+ return -1; # Error - no second pass scanner selected
+ }
+ $$r_ss_score = $score - $$r_hmm_score; # calc secondary structure
+ # contribution to total bit score
+
+ if ((($$r_ss_score < $self->{min_ss_score}) || ($$r_hmm_score < $self->{min_hmm_score})) &&
+ ($score < $min_pseudo_filter_score)) {
+ return 1;
+ }
+}
+
+# Get tRNA anticodon, isotype, intron location, and pseudogene status
+
+sub decode_tRNA_properties {
+
+ my $self = shift;
+ my $opts = shift;
+ my $gc = shift;
+ my $log = shift;
+ my ($trna_score, $trna_seq, $trna_ss, $r_prescan_tRNA, $trna_start, $trna_end, $cur_cm_file, $tmp_trnaseq_file) = @_;
+
+ my ($anticodon, $acodon_index, $trna_type, $intron, $istart, $iend, @introns,
+ $hmm_score, $ss_score, $pseudo_gene_flag,
+ $antiloop_index, $antiloop_end, $trna_len, $scan_len);
+
+ $anticodon = "ERR";
+
+ if ($self->cove_mode() || $self->infernal_mode()) {
+ ($anticodon, $antiloop_index, $antiloop_end, $acodon_index) =
+ $self->find_anticodon($trna_seq, $trna_ss, $gc->undef_anticodon());
+ }
+ else {
+ die "Second pass mode not selected -- can't decode tRNA type\n\n";
+ }
+
+ # check for problem parsing anticodon loop
+ if (($anticodon eq $gc->undef_anticodon()) || ($trna_seq eq 'Error'))
+ {
+ $anticodon = $gc->undef_anticodon();
+ $trna_type = $gc->undef_isotype();
+ $intron = 0;
+
+ if ($opts->save_odd_struct()) {
+ open(ODDTRNA, ">>".$opts->odd_struct_file()) ||
+ die "FATAL: Can't open ".$opts->odd_struct_file()." to save seconary structures\n\n";
+ print ODDTRNA "$r_prescan_tRNA->{name} ($trna_start-$trna_end):\n$trna_seq\n$trna_ss\n\n";
+ close(ODDTRNA);
+ }
+ }
+ else { # continue tRNA struct parsing
+ ($intron, $istart, $iend) =
+ $self->find_intron($trna_seq, $antiloop_index, $antiloop_end);
+
+ if ($intron) {
+ push(@introns, {seq=>$intron, start=>$istart, end=>$iend, type=>"CI"});
+ }
+
+ if (defined $r_prescan_tRNA->{acodon}) {
+ if (($anticodon ne (uc($r_prescan_tRNA->{acodon}))) &&
+ ($opts->tscan_mode() || $opts->eufind_mode()) && ($opts->strict_params())) {
+ $log->write_line("\n$r_prescan_tRNA->{name} - anticondon conflict\t".$opts->second_pass_label().": $anticodon\tfirstpass ($r_prescan_tRNA->{hit_source})".
+ ": $r_prescan_tRNA->{acodon}\n$trna_seq\n$trna_ss\n");
+ }
+ }
+
+ $trna_type = $gc->get_tRNA_type($self, $anticodon, $cur_cm_file);
+ }
+
+ $pseudo_gene_flag = 0;
+ $hmm_score = $ss_score = 0;
+
+ # Write current tRNA to temp file for re-analysis with other models
+ $trna_len = length($trna_seq);
+ &write_tRNA($tmp_trnaseq_file, $r_prescan_tRNA->{name}, "", $trna_seq, 1);
+
+ if (($trna_type !~ /SeC/) &&
+ ($self->is_pseudo_gene($opts, \$hmm_score, \$ss_score, $trna_score, $tmp_trnaseq_file, $r_prescan_tRNA->{name}, $trna_len)) &&
+ (!$self->{skip_pseudo_filter}))
+ {
+ $pseudo_gene_flag = 1; # set to non-zero for likely
+ } # pseudogenes
+
+ return ($anticodon, $acodon_index, $trna_type, \@introns,
+ $hmm_score, $ss_score, $pseudo_gene_flag);
+}
+
+
+sub scan_split_tRNAs {
+
+ my $self = shift;
+ my $opts = shift;
+ my $constants = shift;
+ my $stats = shift;
+ my $gc = shift;
+ my $log = shift;
+ my $r_sec_pass_hits = shift;
+
+ my $r_pair = {};
+ my ($r_pairs_index, $r_five_half_hits, $r_three_half_hits) = $self->scan_split_tRNA_halves($opts, $constants, $stats, $gc, $log, $r_sec_pass_hits);
+ my ($r_pairs) = $self->scan_split_tRNAs_in_long_introns($opts, $constants, $stats, $gc, $log, $r_sec_pass_hits);
+
+ if (scalar(@$r_pairs) > 0) {
+ my $five_half_count = scalar(@$r_five_half_hits);
+ my $three_half_count = scalar(@$r_three_half_hits);
+
+ for (my $ct = 0; $ct < scalar(@$r_pairs); $ct++) {
+ push(@$r_five_half_hits, $r_pairs->[$ct]->{"5h"});
+ push(@$r_three_half_hits, $r_pairs->[$ct]->{"3h"});
+ $r_pair = {};
+ $r_pair->{"5h"} = $five_half_count;
+ $r_pair->{"3h"} = $three_half_count;
+ push(@$r_pairs_index, $r_pair);
+ $five_half_count++;
+ $three_half_count++;
+ }
+ }
+
+ &output_split_fragments($opts, $r_pairs_index, $r_five_half_hits, $r_three_half_hits);
+}
+
+sub scan_split_tRNA_halves {
+
+ my $self = shift;
+ my $opts = shift;
+ my $constants = shift;
+ my $stats = shift;
+ my $gc = shift;
+ my $log = shift;
+ my $r_sec_pass_hits = shift;
+
+ my $tmp_trnaseq_file = $constants->tmp_trnaseq_file();
+
+ my (@five_half_hits, @three_half_hits, $five_half_count, $three_half_count, $r_five_half_hit, $r_three_half_hit, $index_5h, $index_3h,
+ $acceptor_half_seq, $rc_seq, $rc_acceptor_half_seq, $r_pair, @pairs);
+
+ my ($r_valid, $match, $intron_len, $r_intron, $split_trna_ct);
+
+ my ($cur_cm_file, $cms_output, @half_hit_list, $r_cm_hit);
+
+ $split_trna_ct = 0;
+
+ my $seq_file = tRNAscanSE::Sequence->new;
+ my @sorted_cm_hits = sort sort_cm_hits_by_start @$r_sec_pass_hits;
+
+ # find 5'half and 3'half tRNA hits using cmsearch
+ $seq_file->mask_out_sequence($opts->fasta_file(), $constants->tmp_masked_fa(), \@sorted_cm_hits);
+ $cur_cm_file = $self->{arch_five_half_cm_file_path};
+ if (!$self->run_gw_cmsearch($opts, $log, \@five_half_hits, \$cur_cm_file, $constants->tmp_masked_fa(), "", 1)) {
+ return 0;
+ }
+ $cur_cm_file = $self->{arch_three_half_cm_file_path};
+ if (!$self->run_gw_cmsearch($opts, $log, \@three_half_hits, \$cur_cm_file, $constants->tmp_masked_fa(), "", 1)) {
+ return 0;
+ }
+
+ foreach $r_cm_hit (@$r_sec_pass_hits) {
+ $intron_len = 0;
+ $match = 0;
+ if (scalar(@{$r_cm_hit->{introns}}) > 0) {
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ if ($r_intron->{type} eq "CI") {
+ $intron_len = length($r_intron->{seq});
+ }
+ }
+ }
+ if ($r_cm_hit->{score} < $self->{split_tRNA_scan_cutoff}) {
+ $r_valid = &valid_structure($r_cm_hit->{ss}, $intron_len);
+ if (!$r_valid->{tRNA}) {
+ @half_hit_list = ();
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $r_cm_hit->{seq}, 1);
+ $cur_cm_file = $self->{arch_five_half_cm_file_path};
+ if (!$self->exec_cmsearch(0, \$cur_cm_file, 0, $tmp_trnaseq_file, $r_cm_hit->{seqname}, \$cms_output)) {
+ return 0;
+ }
+ $self->parse_cmsearch($cms_output, \@half_hit_list, 0, $r_cm_hit, 1);
+ foreach $r_five_half_hit (@half_hit_list) {
+ if ($r_five_half_hit->{score} >= $self->{half_tRNA_cutoff}) {
+ push(@five_half_hits, $r_five_half_hit);
+ $match = 1;
+ last;
+ }
+ }
+
+ if (!$match) {
+ @half_hit_list = ();
+ $cur_cm_file = $self->{arch_three_half_cm_file_path};
+ if (!$self->exec_cmsearch(0, \$cur_cm_file, 0, $tmp_trnaseq_file, $r_cm_hit->{seqname}, \$cms_output)) {
+ return 0;
+ }
+ $self->parse_cmsearch($cms_output, \@half_hit_list, 0, $r_cm_hit, 1);
+ foreach $r_three_half_hit (@half_hit_list) {
+ if ($r_three_half_hit->{score} >= $self->{half_tRNA_cutoff}) {
+ push(@three_half_hits, $r_three_half_hit);
+ $match = 1;
+ last;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ $five_half_count = 0; $three_half_count = 0;
+ foreach $r_five_half_hit (@five_half_hits) {
+ $r_five_half_hit->{seqname} = $r_five_half_hit->{hit_seqname};
+ $r_five_half_hit->{start} = $r_five_half_hit->{tRNA_start};
+ $r_five_half_hit->{end} = $r_five_half_hit->{tRNA_end};
+ $five_half_count++ if ($r_five_half_hit->{score} >= $self->{half_tRNA_cutoff});
+ }
+ foreach $r_three_half_hit (@three_half_hits) {
+ $r_three_half_hit->{seqname} = $r_three_half_hit->{hit_seqname};
+ $r_three_half_hit->{start} = $r_three_half_hit->{tRNA_start};
+ $r_three_half_hit->{end} = $r_three_half_hit->{tRNA_end};
+ $three_half_count++ if ($r_three_half_hit->{score} >= $self->{half_tRNA_cutoff});
+ }
+
+ @five_half_hits = sort sort_cm_hits_by_start @five_half_hits;
+ @three_half_hits = sort sort_cm_hits_by_start @three_half_hits;
+
+ if ($five_half_count >= $three_half_count) {
+ for ($index_5h = 0; $index_5h < scalar(@five_half_hits); $index_5h++) {
+ if ($five_half_hits[$index_5h]->{score} >= $self->{half_tRNA_cutoff}) {
+ $acceptor_half_seq = uc(&get_acceptor_half($five_half_hits[$index_5h]->{seq}, $five_half_hits[$index_5h]->{ss}, "5h"));
+ $rc_seq = &rev_comp_seq($acceptor_half_seq);
+ $rc_seq =~ s/C/\[CT\]/g;
+ foreach ($index_3h = 0; $index_3h < scalar(@three_half_hits); $index_3h++) {
+ if ($three_half_hits[$index_3h]->{score} >= $self->{half_tRNA_cutoff}) {
+ $rc_acceptor_half_seq = uc(&get_acceptor_half($three_half_hits[$index_3h]->{seq}, $three_half_hits[$index_3h]->{ss}, "3h"));
+ if ($rc_acceptor_half_seq =~ /$rc_seq/) {
+ $r_pair = {};
+ $r_pair->{"5h"} = $index_5h;
+ $r_pair->{"3h"} = $index_3h;
+ push(@pairs, $r_pair);
+ $five_half_hits[$index_5h]->{pair} = 1;
+ $three_half_hits[$index_3h]->{pair} = 1;
+ }
+ }
+ }
+ }
+ }
+ }
+ else {
+ for ($index_3h = 0; $index_3h < scalar(@three_half_hits); $index_3h++) {
+ if ($three_half_hits[$index_3h]->{score} >= $self->{half_tRNA_cutoff}) {
+ $acceptor_half_seq = uc(&get_acceptor_half($three_half_hits[$index_3h]->{seq}, $three_half_hits[$index_3h]->{ss}, "3h"));
+ $rc_seq = &rev_comp_seq($acceptor_half_seq);
+ $rc_seq =~ s/C/\[CT\]/g;
+ foreach ($index_5h = 0; $index_5h < scalar(@five_half_hits); $index_5h++) {
+ if ($five_half_hits[$index_5h]->{score} >= $self->{half_tRNA_cutoff}) {
+ $rc_acceptor_half_seq = uc(&get_acceptor_half($five_half_hits[$index_5h]->{seq}, $five_half_hits[$index_5h]->{ss}, "5h"));
+ if ($rc_acceptor_half_seq =~ /$rc_seq/) {
+ $r_pair = {};
+ $r_pair->{"5h"} = $index_5h;
+ $r_pair->{"3h"} = $index_3h;
+ push(@pairs, $r_pair);
+ $five_half_hits[$index_5h]->{pair} = 1;
+ $three_half_hits[$index_3h]->{pair} = 1;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ for ($index_5h = 0; $index_5h < scalar(@five_half_hits); $index_5h++) {
+ if ($five_half_hits[$index_5h]->{score} >= $self->{half_tRNA_cutoff}) {
+ if (!defined $five_half_hits[$index_5h]->{pair}) {
+ $r_pair = {};
+ $r_pair->{"5h"} = $index_5h;
+ push(@pairs, $r_pair);
+ }
+ }
+ }
+ for ($index_3h = 0; $index_3h < scalar(@three_half_hits); $index_3h++) {
+ if ($three_half_hits[$index_3h]->{score} >= $self->{half_tRNA_cutoff}) {
+ if (!defined $three_half_hits[$index_3h]->{pair}) {
+ $r_pair = {};
+ $r_pair->{"3h"} = $index_3h;
+ push(@pairs, $r_pair);
+ }
+ }
+ }
+
+ return (\@pairs, \@five_half_hits, \@three_half_hits);
+}
+
+sub scan_split_tRNAs_in_long_introns {
+
+ my $self = shift;
+ my $opts = shift;
+ my $constants = shift;
+ my $stats = shift;
+ my $gc = shift;
+ my $log = shift;
+ my $r_sec_pass_hits = shift;
+
+ my $tmp_trnaseq_file = $constants->tmp_trnaseq_file();
+ my ($r_valid, $scan_flag, $intron_len, $skip, $scan_trna_seq, $over_cutoff_count,
+ @rescan_trna_hits, @five_half_hit_list, @three_half_hit_list, @pairs, $r_pair, $trna_ct, $split_trna_ct);
+
+ my ($cur_cm_file, $cms_output, $r_cm_hit, $r_cm_hit2, $r_cm_hit_temp, $r_intron, @intron_hit_list, $intron_idx);
+
+ $split_trna_ct = 0;
+ foreach $r_cm_hit (@$r_sec_pass_hits) {
+ $scan_flag = 0;
+ $intron_len = 0;
+ $intron_idx = -1;
+ if (scalar(@{$r_cm_hit->{introns}}) > 0) {
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ $intron_idx++;
+ if ((length($r_intron->{seq}) > 100) && ($r_cm_hit->{isotype} ne "Trp") && ($r_cm_hit->{isotype} ne "Tyr")) {
+ $scan_flag = 1;
+ last;
+ }
+ }
+ }
+ if ($scan_flag) {
+ $r_cm_hit_temp = {};
+ $r_cm_hit_temp->{start} = 1;
+ $r_cm_hit_temp->{strand} = 1;
+ $r_cm_hit_temp->{hit_source} = $r_cm_hit->{hit_source};
+ $r_cm_hit_temp->{seqname} = $r_cm_hit->{seqname};
+ $r_cm_hit_temp->{src_seqname} = $r_cm_hit->{seqname};
+ $r_cm_hit_temp->{upstream} = "";
+ $r_cm_hit_temp->{downstream} = "";
+
+ $scan_trna_seq = uc(substr($r_cm_hit->{seq}, $r_cm_hit->{introns}->[$intron_idx]->{start} - 13, $self->{left_splicing_len}) .
+ substr($r_cm_hit->{seq}, $r_cm_hit->{introns}->[$intron_idx]->{end} - $self->{right_splicing_len} + 8, $self->{right_splicing_len}));
+
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $scan_trna_seq, 1);
+
+ $cur_cm_file = $self->{arch_intron_cm_file_path};
+ if (!$self->run_cmsearch_intron($opts, $log, \@intron_hit_list, \$cur_cm_file, $r_cm_hit, $tmp_trnaseq_file, \$over_cutoff_count)) {
+ return 0;
+ }
+ if ($over_cutoff_count > 0) {
+ $scan_trna_seq = $r_cm_hit->{seq};
+ $scan_trna_seq =~ s/$r_cm_hit->{introns}->[$intron_idx]->{seq}//;
+ $r_cm_hit_temp->{seq} = $scan_trna_seq;
+ $r_cm_hit_temp->{len} = length($scan_trna_seq);
+ $r_cm_hit_temp->{end} = $r_cm_hit_temp->{len};
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $scan_trna_seq, 1);
+
+ if ($opts->cove_mode())
+ {
+ $trna_ct = $self->analyze_with_cove($opts, $constants, $stats, $gc, $log, "tRNAscan-SE",
+ $r_cm_hit_temp, $tmp_trnaseq_file, \$trna_ct, \@rescan_trna_hits);
+ }
+ elsif ($opts->infernal_mode())
+ {
+ $trna_ct = $self->analyze_with_cmsearch($opts, $constants, $stats, $gc, $log, "tRNAscan-SE",
+ $r_cm_hit_temp, $tmp_trnaseq_file, \$trna_ct, \@rescan_trna_hits);
+ }
+
+ if ((scalar(@rescan_trna_hits) > 0) && ($rescan_trna_hits[0]->{score} >= $r_cm_hit->{score})) {
+ $split_trna_ct++;
+
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $scan_trna_seq, 1);
+
+ $cur_cm_file = $self->{arch_five_half_cm_file_path};
+ if (!$self->exec_cmsearch(0, \$cur_cm_file, 0, $tmp_trnaseq_file, $r_cm_hit->{seqname}, \$cms_output)) {
+ return 0;
+ }
+ $self->parse_cmsearch($cms_output, \@five_half_hit_list, 0, $rescan_trna_hits[0], 1);
+
+ $cur_cm_file = $self->{arch_three_half_cm_file_path};
+ if (!$self->exec_cmsearch(0, \$cur_cm_file, 0, $tmp_trnaseq_file, $r_cm_hit->{seqname}, \$cms_output)) {
+ return 0;
+ }
+ $self->parse_cmsearch($cms_output, \@three_half_hit_list, 0, $rescan_trna_hits[0], 1);
+
+ if (scalar(@five_half_hit_list) > 0 && scalar(@three_half_hit_list) > 0) {
+ $five_half_hit_list[0]->{tRNA_start} = $r_cm_hit->{start};
+ if ($r_cm_hit->{strand}) {
+ $five_half_hit_list[0]->{tRNA_end} = ($r_cm_hit->{introns}->[$intron_idx]->{start} + $r_cm_hit->{start} - 2);
+ $three_half_hit_list[0]->{tRNA_start} = ($r_cm_hit->{introns}->[$intron_idx]->{end} + $r_cm_hit->{start});
+ }
+ else {
+ $five_half_hit_list[0]->{tRNA_end} = ($r_cm_hit->{start} - $r_cm_hit->{introns}->[$intron_idx]->{start} + 2);
+ $three_half_hit_list[0]->{tRNA_start} = ($r_cm_hit->{start} - $r_cm_hit->{introns}->[$intron_idx]->{end});
+ }
+ $three_half_hit_list[0]->{tRNA_end} = $r_cm_hit->{end};
+ $r_pair = {};
+ $r_pair->{"5h"} = $five_half_hit_list[0];
+ $r_pair->{"3h"} = $three_half_hit_list[0];
+ push(@pairs, $r_pair);
+ }
+ }
+ }
+ }
+ }
+ return \@pairs;
+}
+
+sub scan_noncanonical_introns {
+
+ my $self = shift;
+ my $opts = shift;
+ my $constants = shift;
+ my $stats = shift;
+ my $gc = shift;
+ my $log = shift;
+ my $seq_file = shift;
+ my $r_sec_pass_hits = shift;
+
+ my $tmp_trnaseq_file = $constants->tmp_trnaseq_file();
+ my ($r_valid, $scan_flag, $skip, $ci_intron_index, $scan_trna_seq, $over_cutoff_count,
+ $best_score, $total_intron_len, $new_start, $r_new_intron, @rescan_trna_hits, $trna_ct);
+ my ($partial_scan_trna_seq, @partial_intron_hit_list, $partial_over_cutoff_count, $last_end);
+
+ my ($cur_cm_file, $r_cm_hit, $r_cm_hit_temp, @extra_cm_hit_list, $r_intron, $r_intron_hit, @intron_hit_list, $tRNA_seq, $upstream, $downstream);
+ my ($anticodon, $acodon_index, $isotype, $r_introns, $hmm_score, $ss_score, $pseudo_gene_flag);
+ my ($cur_tRNA_ct) = 0;
+
+ my $masked_seq_file = tRNAscanSE::Sequence->new;
+ my @sorted_cm_hits = sort sort_cm_hits_by_start @$r_sec_pass_hits;
+
+ # find extra tRNA hits using cmsearch
+ $masked_seq_file->mask_out_sequence($opts->fasta_file(), $constants->tmp_masked_fa(), \@sorted_cm_hits);
+ if (!$self->run_gw_cmsearch($opts, $log, \@extra_cm_hit_list, \$cur_cm_file, $constants->tmp_masked_fa(), "", 0)) {
+ return 0;
+ }
+
+ foreach my $r_extra_hit (@extra_cm_hit_list)
+ {
+ if ($r_extra_hit->{score} >= $self->{cm_cutoff}) {
+ ($tRNA_seq, $upstream, $downstream) = $seq_file->get_tRNA_sequence($r_extra_hit->{hit_seqname}, $r_extra_hit->{strand},
+ $r_extra_hit->{tRNA_start}, $r_extra_hit->{tRNA_end},
+ $log, $opts, $constants);
+ $r_extra_hit->{name} = $r_extra_hit->{hit_seqname};
+
+ &write_tRNA($tmp_trnaseq_file, $r_extra_hit->{hit_seqname}, " ", $r_extra_hit->{seq}, 1);
+
+ ($anticodon, $acodon_index, $isotype, $r_introns, $hmm_score, $ss_score, $pseudo_gene_flag) =
+ $self->decode_tRNA_properties ($opts, $gc, $log, $r_extra_hit->{score}, $r_extra_hit->{seq}, $r_extra_hit->{ss}, $r_extra_hit,
+ $r_extra_hit->{tRNA_start}, $r_extra_hit->{tRNA_end}, $cur_cm_file, $tmp_trnaseq_file);
+
+ $r_cm_hit = {};
+ $r_cm_hit =
+ {seqname =>$r_extra_hit->{hit_seqname}, score=>$r_extra_hit->{score}, ss=>$r_extra_hit->{ss}, seq=>$r_extra_hit->{seq}, model=>$r_extra_hit->{model},
+ start=>$r_extra_hit->{tRNA_start}, end=>$r_extra_hit->{tRNA_end}, len=>$r_extra_hit->{tRNA_len}, ID=>$r_extra_hit->{name},
+ acodon=>$anticodon, acodon_pos =>$acodon_index, isotype=>$isotype,
+ introns=>$r_introns, hmm_score=>$hmm_score,
+ ss_score=>$ss_score, is_pseudo=>$pseudo_gene_flag,
+ src_seqlen=>3, src_seqname=>$r_extra_hit->{hit_seqname},
+ strand=>$r_extra_hit->{strand}, hit_source=>"Inf",
+ upstream=>$upstream, downstream=>$downstream, extra=>1};
+
+ push (@$r_sec_pass_hits, $r_cm_hit);
+ }
+ }
+
+ # scan for noncanonical introns
+ $cur_cm_file = $self->{arch_intron_cm_file_path};
+ foreach $r_cm_hit (sort sort_cm_hits_for_output @$r_sec_pass_hits) {
+
+ $scan_flag = 0;
+
+ # renumber tRNA hits
+ $cur_tRNA_ct++;
+ $r_cm_hit->{ID} = $r_cm_hit->{seqname}.".t".$cur_tRNA_ct;
+
+ if ($r_cm_hit->{extra}) {
+ $scan_flag = 1;
+ }
+ else {
+ if (scalar(@{$r_cm_hit->{introns}}) > 0) {
+ $r_valid = &valid_structure($r_cm_hit->{ss}, length($r_cm_hit->{introns}->[0]->{seq}));
+ }
+ else {
+ $r_valid = &valid_structure($r_cm_hit->{ss}, 0);
+ }
+ if (scalar(@{$r_cm_hit->{introns}}) > 0) {
+ $scan_flag = 1;
+ }
+ elsif ($r_cm_hit->{acodon} eq "???") {
+ $scan_flag = 1;
+ }
+ elsif ($r_cm_hit->{score} < $self->{nci_scan_cutoff}) {
+ if (!$r_valid->{tRNA}) {
+ $scan_flag = 1;
+ }
+ }
+ }
+
+ if ($scan_flag) {
+
+ $log->write_line("Scan for noncanonical intron ".$r_cm_hit->{ID}."-".$r_cm_hit->{isotype}.$r_cm_hit->{acodon});
+
+ $total_intron_len = 0;
+ @intron_hit_list = ();
+ $best_score = $r_cm_hit->{score};
+ $r_cm_hit_temp = {};
+ $r_cm_hit_temp->{start} = 1;
+ $r_cm_hit_temp->{strand} = 1;
+ $r_cm_hit_temp->{hit_source} = $r_cm_hit->{hit_source};
+ $r_cm_hit_temp->{seqname} = $r_cm_hit->{seqname};
+ $r_cm_hit_temp->{src_seqname} = $r_cm_hit->{seqname};
+ $r_cm_hit_temp->{upstream} = "";
+ $r_cm_hit_temp->{downstream} = "";
+
+ $scan_trna_seq = uc($r_cm_hit->{upstream}.$r_cm_hit->{seq}.$r_cm_hit->{downstream});
+ $partial_scan_trna_seq = uc($r_cm_hit->{upstream}.substr($r_cm_hit->{seq}, 0, 12));
+ $r_cm_hit_temp->{seq} = $scan_trna_seq;
+ $r_cm_hit_temp->{precursor} = $scan_trna_seq;
+ $r_cm_hit_temp->{len} = length($scan_trna_seq);
+ $r_cm_hit_temp->{end} = $r_cm_hit_temp->{len};
+
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $scan_trna_seq, 1);
+
+ if (!$self->run_cmsearch_intron($opts, $log, \@intron_hit_list, \$cur_cm_file, $r_cm_hit, $tmp_trnaseq_file, \$over_cutoff_count)) {
+ return 0;
+ }
+
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $partial_scan_trna_seq, 1);
+
+ if (!$self->run_cmsearch_intron($opts, $log, \@partial_intron_hit_list, \$cur_cm_file, $r_cm_hit, $tmp_trnaseq_file, \$partial_over_cutoff_count)) {
+ return 0;
+ }
+ foreach $r_intron_hit (@intron_hit_list) {
+ $skip = 0;
+ $ci_intron_index = -1;
+ $r_intron_hit->{overlap} = $ci_intron_index;
+ if ($r_intron_hit->{score} >= $self->{BHB_cm_cutoff}) {
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ $ci_intron_index++;
+ if ($r_intron->{type} eq "CI") {
+ if ($r_intron_hit->{intron_seq} eq uc($r_intron->{seq})) {
+ $skip = 1;
+ last;
+ }
+ elsif (($r_intron_hit->{start} >= $r_intron->{start} && $r_intron_hit->{start} <= $r_intron->{end}) ||
+ ($r_intron_hit->{end} >= $r_intron->{start} && $r_intron_hit->{end} <= $r_intron->{end})) {
+ $r_intron_hit->{overlap} = $ci_intron_index;
+ last;
+ }
+ }
+ }
+ if (!$skip) {
+ if (($r_intron_hit->{tRNA_start} < $r_cm_hit->{start} && $r_cm_hit->{strand}) ||
+ ($r_intron_hit->{tRNA_start} > $r_cm_hit->{start} && !$r_cm_hit->{strand})) {
+ if ($r_valid->{acceptor}) {
+ $skip = 1;
+ }
+ }
+ }
+ if (!$skip) {
+ @rescan_trna_hits = ();
+ my $idx_intron = index($scan_trna_seq, $r_intron_hit->{intron_seq});
+ $scan_trna_seq = substr($scan_trna_seq, 0, $idx_intron) . substr($scan_trna_seq, $idx_intron + $r_intron_hit->{intron_len});
+ $r_cm_hit_temp->{seq} = $scan_trna_seq;
+ $r_cm_hit_temp->{len} = length($scan_trna_seq);
+ $r_cm_hit_temp->{end} = $r_cm_hit_temp->{len};
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $scan_trna_seq, 1);
+
+ if ($opts->cove_mode())
+ {
+ $trna_ct = $self->analyze_with_cove($opts, $constants, $stats, $gc, $log, "tRNAscan-SE",
+ $r_cm_hit_temp, $tmp_trnaseq_file, \$trna_ct, \@rescan_trna_hits);
+ }
+ elsif ($opts->infernal_mode())
+ {
+ $trna_ct = $self->analyze_with_cmsearch($opts, $constants, $stats, $gc, $log, "tRNAscan-SE",
+ $r_cm_hit_temp, $tmp_trnaseq_file, \$trna_ct, \@rescan_trna_hits);
+ }
+
+ if (scalar(@rescan_trna_hits) > 0) {
+ if ($rescan_trna_hits[0]->{score} > $best_score) {
+ $best_score = $rescan_trna_hits[0]->{score};
+ $total_intron_len += $r_intron_hit->{intron_len};
+ $r_cm_hit->{acodon} = $rescan_trna_hits[0]->{acodon};
+ $r_cm_hit->{acodon_pos} = $rescan_trna_hits[0]->{acodon_pos};
+ $r_cm_hit->{isotype} = $rescan_trna_hits[0]->{isotype};
+ $r_cm_hit->{score} = $rescan_trna_hits[0]->{score};
+ $r_cm_hit->{hmm_score} = $rescan_trna_hits[0]->{hmm_score};
+ $r_cm_hit->{ss_score} = $rescan_trna_hits[0]->{ss_score};
+ $r_cm_hit->{is_pseudo} = $rescan_trna_hits[0]->{is_pseudo};
+ $r_cm_hit->{ss} = $rescan_trna_hits[0]->{ss};
+ $r_cm_hit->{seq} = $rescan_trna_hits[0]->{seq};
+ $r_cm_hit->{precursor} = substr($r_cm_hit_temp->{precursor}, $rescan_trna_hits[0]->{start} - 1, $rescan_trna_hits[0]->{len} + $total_intron_len);
+ $r_cm_hit->{model} = $rescan_trna_hits[0]->{model};
+ $r_cm_hit->{len} = $rescan_trna_hits[0]->{len} + $total_intron_len;
+ $new_start = $rescan_trna_hits[0]->{start};
+ if ($r_intron_hit->{overlap} > -1) {
+ $r_cm_hit->{introns}->[$r_intron_hit->{overlap}]->{seq} = $r_intron_hit->{intron_seq};
+ $r_cm_hit->{introns}->[$r_intron_hit->{overlap}]->{start} = $r_intron_hit->{start};
+ $r_cm_hit->{introns}->[$r_intron_hit->{overlap}]->{end} = $r_intron_hit->{end};
+ $r_cm_hit->{introns}->[$r_intron_hit->{overlap}]->{type} = "NCI";
+ }
+ else {
+ push(@{$r_cm_hit->{introns}}, {seq=>$r_intron_hit->{intron_seq}, start=>$r_intron_hit->{start},
+ end=>$r_intron_hit->{end}, type=>"NCI"});
+ }
+ if (scalar(@{$rescan_trna_hits[0]->{introns}}) > 0) {
+ $r_new_intron = $rescan_trna_hits[0]->{introns}->[0];
+ my $set_ci = 0;
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ if ($r_intron->{type} eq "CI") {
+ $r_intron = $r_new_intron;
+ $set_ci = 1;
+ }
+ }
+ if (!$set_ci) {
+ push(@{$r_cm_hit->{introns}}, {seq=>$r_new_intron->{seq}, start=>$r_new_intron->{start},
+ end=>$r_new_intron->{end}, type=>"CI"});
+ }
+ }
+ else {
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ if ($r_intron->{type} eq "CI") {
+ $r_intron = undef;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if ($total_intron_len > 0) {
+ if ($r_cm_hit->{strand}) {
+ $r_cm_hit->{start} = $r_cm_hit->{start} - length($r_cm_hit->{upstream}) + $new_start - 1;
+ $r_cm_hit->{end} = $r_cm_hit->{start} + $r_cm_hit->{len} - 1;
+ }
+ else {
+ $r_cm_hit->{start} = $r_cm_hit->{start} + length($r_cm_hit->{upstream}) - $new_start + 1;
+ $r_cm_hit->{end} = $r_cm_hit->{start} - $r_cm_hit->{len} + 1;
+ }
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ if (defined $r_intron) {
+ $r_intron->{start} = index($r_cm_hit->{precursor}, uc($r_intron->{seq})) + 1;
+ $r_intron->{end} = $r_intron->{start} + length($r_intron->{seq}) - 1;
+ if (($r_intron->{start} == ($r_cm_hit->{acodon_pos}+4)) && ($r_intron->{type} eq "NCI")) {
+ $r_intron->{type} = "CI";
+ }
+ }
+ }
+ @{$r_cm_hit->{introns}} = sort sort_intron_by_start @{$r_cm_hit->{introns}};
+ $last_end = -1;
+ for (my $ct = 0; $ct < scalar(@{$r_cm_hit->{introns}}); $ct++) {
+ if ($last_end == $r_cm_hit->{introns}->[$ct]->{start} - 1) {
+ $last_end = $r_cm_hit->{introns}->[$ct]->{end};
+ $r_cm_hit->{introns}->[$ct]->{start} = $r_cm_hit->{introns}->[$ct - 1]->{start};
+ $r_cm_hit->{introns}->[$ct]->{seq} = $r_cm_hit->{introns}->[$ct - 1]->{seq} . $r_cm_hit->{introns}->[$ct]->{seq};
+ $r_cm_hit->{introns}->[$ct - 1] = undef;
+ }
+ $last_end = $r_cm_hit->{introns}->[$ct]->{end};
+ }
+ }
+ elsif(!$r_valid->{acceptor} && $r_cm_hit->{score} > $self->{split_tRNA_scan_cutoff}) {
+ foreach $r_intron_hit (@partial_intron_hit_list) {
+ $skip = 0;
+ $ci_intron_index = -1;
+ $r_intron_hit->{overlap} = $ci_intron_index;
+ if ($r_intron_hit->{score} >= $self->{BHB_cm_cutoff}) {
+ @rescan_trna_hits = ();
+ my $idx_intron = index($partial_scan_trna_seq, $r_intron_hit->{intron_seq});
+ $partial_scan_trna_seq = substr($partial_scan_trna_seq, 0, $idx_intron) . substr($partial_scan_trna_seq, $idx_intron + $r_intron_hit->{intron_len}) .
+ substr($r_cm_hit->{seq}, 12) . $r_cm_hit->{downstream};
+ $r_cm_hit_temp->{seq} = $partial_scan_trna_seq;
+ $r_cm_hit_temp->{len} = length($partial_scan_trna_seq);
+ $r_cm_hit_temp->{end} = $r_cm_hit_temp->{len};
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $partial_scan_trna_seq, 1);
+
+ if ($opts->cove_mode())
+ {
+ $trna_ct = $self->analyze_with_cove($opts, $constants, $stats, $gc, $log, "tRNAscan-SE",
+ $r_cm_hit_temp, $tmp_trnaseq_file, \$trna_ct, \@rescan_trna_hits);
+ }
+ elsif ($opts->infernal_mode())
+ {
+ $trna_ct = $self->analyze_with_cmsearch($opts, $constants, $stats, $gc, $log, "tRNAscan-SE",
+ $r_cm_hit_temp, $tmp_trnaseq_file, \$trna_ct, \@rescan_trna_hits);
+ }
+
+ if (scalar(@rescan_trna_hits) > 0) {
+ if ($rescan_trna_hits[0]->{score} > $best_score) {
+ $best_score = $rescan_trna_hits[0]->{score};
+ $total_intron_len += $r_intron_hit->{intron_len};
+ $r_cm_hit->{acodon} = $rescan_trna_hits[0]->{acodon};
+ $r_cm_hit->{acodon_pos} = $rescan_trna_hits[0]->{acodon_pos};
+ $r_cm_hit->{isotype} = $rescan_trna_hits[0]->{isotype};
+ $r_cm_hit->{score} = $rescan_trna_hits[0]->{score};
+ $r_cm_hit->{hmm_score} = $rescan_trna_hits[0]->{hmm_score};
+ $r_cm_hit->{ss_score} = $rescan_trna_hits[0]->{ss_score};
+ $r_cm_hit->{is_pseudo} = $rescan_trna_hits[0]->{is_pseudo};
+ $r_cm_hit->{ss} = $rescan_trna_hits[0]->{ss};
+ $r_cm_hit->{seq} = $rescan_trna_hits[0]->{seq};
+ $r_cm_hit->{precursor} = substr($r_cm_hit_temp->{precursor}, $rescan_trna_hits[0]->{start} - 1, $rescan_trna_hits[0]->{len} + $total_intron_len);
+ $r_cm_hit->{model} = $rescan_trna_hits[0]->{model};
+ $r_cm_hit->{len} = $rescan_trna_hits[0]->{len} + $total_intron_len;
+ $new_start = $rescan_trna_hits[0]->{start};
+ if (scalar(@{$rescan_trna_hits[0]->{introns}}) > 0) {
+ $r_new_intron = $rescan_trna_hits[0]->{introns}->[0];
+ }
+ push(@{$r_cm_hit->{introns}}, {seq=>$r_intron_hit->{intron_seq}, start=>$r_intron_hit->{start},
+ end=>$r_intron_hit->{end}, type=>"NCI"});
+ }
+ }
+ }
+ }
+ if ($total_intron_len > 0) {
+ if ($r_cm_hit->{strand}) {
+ $r_cm_hit->{start} = $r_cm_hit->{start} - length($r_cm_hit->{upstream}) + $new_start - 1;
+ $r_cm_hit->{end} = $r_cm_hit->{start} + $r_cm_hit->{len} - 1;
+ }
+ else {
+ $r_cm_hit->{start} = $r_cm_hit->{start} + length($r_cm_hit->{upstream}) - $new_start + 1;
+ $r_cm_hit->{end} = $r_cm_hit->{start} - $r_cm_hit->{len} + 1;
+ }
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ if (defined $r_intron) {
+ # if ((($r_intron->{type} eq "CI") && ($r_intron->{seq} eq $r_new_intron->{seq})) || ($r_intron->{type} eq "NCI")) {
+ $r_intron->{start} = index($r_cm_hit->{precursor}, uc($r_intron->{seq})) + 1;
+ $r_intron->{end} = $r_intron->{start} + length($r_intron->{seq}) - 1;
+ # }
+ if (($r_intron->{start} == ($r_cm_hit->{acodon_pos}+4)) && ($r_intron->{type} eq "NCI")) {
+ $r_intron->{type} = "CI";
+ }
+ }
+ }
+ @{$r_cm_hit->{introns}} = sort sort_intron_by_start @{$r_cm_hit->{introns}};
+ $last_end = -1;
+ for (my $ct = 0; $ct < scalar(@{$r_cm_hit->{introns}}); $ct++) {
+ if ($last_end == $r_cm_hit->{introns}->[$ct]->{start} - 1) {
+ $last_end = $r_cm_hit->{introns}->[$ct]->{end};
+ $r_cm_hit->{introns}->[$ct]->{start} = $r_cm_hit->{introns}->[$ct - 1]->{start};
+ $r_cm_hit->{introns}->[$ct]->{seq} = $r_cm_hit->{introns}->[$ct - 1]->{seq} . $r_cm_hit->{introns}->[$ct]->{seq};
+ $r_cm_hit->{introns}->[$ct - 1] = undef;
+ }
+ $last_end = $r_cm_hit->{introns}->[$ct]->{end};
+ }
+ }
+ }
+ if (scalar(@{$r_cm_hit->{introns}}) > 0) {
+ if ($r_cm_hit->{introns}->[0]->{type} eq "CI") {
+ $r_valid = &valid_structure($r_cm_hit->{ss}, length($r_cm_hit->{introns}->[0]->{seq}));
+ }
+ else {
+ $r_valid = &valid_structure($r_cm_hit->{ss}, 0);
+ }
+ }
+ elsif ($r_cm_hit->{score} > $self->{split_tRNA_scan_cutoff}) {
+ $r_valid = &valid_structure($r_cm_hit->{ss}, 0);
+ }
+ if (!$r_valid->{tRNA} && $r_cm_hit->{score} > $self->{split_tRNA_scan_cutoff}) {
+ @intron_hit_list = ();
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $scan_trna_seq, 1);
+ if (!$self->run_cmsearch_intron($opts, $log, \@intron_hit_list, \$cur_cm_file, $r_cm_hit, $tmp_trnaseq_file, \$over_cutoff_count)) {
+ return 0;
+ }
+ foreach $r_intron_hit (@intron_hit_list) {
+ $skip = 0;
+ $ci_intron_index = -1;
+ $r_intron_hit->{overlap} = $ci_intron_index;
+ if ($r_intron_hit->{score} >= $self->{BHB_cm_cutoff}) {
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ $ci_intron_index++;
+ if ($r_intron->{type} eq "CI") {
+ if ($r_intron_hit->{intron_seq} eq uc($r_intron->{seq})) {
+ $skip = 1;
+ last;
+ }
+ else {
+ my $intron_hit_start = index($r_cm_hit->{precursor}, uc($r_intron_hit->{intron_seq})) + 1;
+ my $intron_hit_end = $intron_hit_start + length($r_intron_hit->{intron_seq}) - 1;
+ if (($intron_hit_start >= $r_intron->{start} && $intron_hit_start <= $r_intron->{end}) ||
+ ($intron_hit_end >= $r_intron->{start} && $intron_hit_end <= $r_intron->{end})) {
+ $r_intron_hit->{overlap} = $ci_intron_index;
+ last;
+ }
+ }
+ }
+ }
+ if (!$skip) {
+ @rescan_trna_hits = ();
+ my $idx_intron = index($scan_trna_seq, $r_intron_hit->{intron_seq});
+ $scan_trna_seq = substr($scan_trna_seq, 0, $idx_intron) . substr($scan_trna_seq, $idx_intron + $r_intron_hit->{intron_len});
+ $r_cm_hit_temp->{seq} = $scan_trna_seq;
+ $r_cm_hit_temp->{len} = length($scan_trna_seq);
+ $r_cm_hit_temp->{end} = $r_cm_hit_temp->{len};
+ &write_tRNA($tmp_trnaseq_file, $r_cm_hit->{seqname}, " ", $scan_trna_seq, 1);
+
+ if ($opts->cove_mode())
+ {
+ $trna_ct = $self->analyze_with_cove($opts, $constants, $stats, $gc, $log, "tRNAscan-SE",
+ $r_cm_hit_temp, $tmp_trnaseq_file, \$trna_ct, \@rescan_trna_hits);
+ }
+ elsif ($opts->infernal_mode())
+ {
+ $trna_ct = $self->analyze_with_cmsearch($opts, $constants, $stats, $gc, $log, "tRNAscan-SE",
+ $r_cm_hit_temp, $tmp_trnaseq_file, \$trna_ct, \@rescan_trna_hits);
+ }
+
+ if (scalar(@rescan_trna_hits) > 0) {
+ if ($rescan_trna_hits[0]->{score} > $best_score) {
+ $best_score = $rescan_trna_hits[0]->{score};
+ $total_intron_len += $r_intron_hit->{intron_len};
+ $r_cm_hit->{acodon} = $rescan_trna_hits[0]->{acodon};
+ $r_cm_hit->{acodon_pos} = $rescan_trna_hits[0]->{acodon_pos};
+ $r_cm_hit->{isotype} = $rescan_trna_hits[0]->{isotype};
+ $r_cm_hit->{score} = $rescan_trna_hits[0]->{score};
+ $r_cm_hit->{hmm_score} = $rescan_trna_hits[0]->{hmm_score};
+ $r_cm_hit->{ss_score} = $rescan_trna_hits[0]->{ss_score};
+ $r_cm_hit->{is_pseudo} = $rescan_trna_hits[0]->{is_pseudo};
+ $r_cm_hit->{ss} = $rescan_trna_hits[0]->{ss};
+ $r_cm_hit->{seq} = $rescan_trna_hits[0]->{seq};
+# $r_cm_hit->{precursor} = substr($r_cm_hit_temp->{precursor}, $rescan_trna_hits[0]->{start} - 1, $rescan_trna_hits[0]->{len} + $total_intron_len);
+ $r_cm_hit->{model} = $rescan_trna_hits[0]->{model};
+ $r_cm_hit->{len} = $rescan_trna_hits[0]->{len} + $total_intron_len;
+ $new_start = $rescan_trna_hits[0]->{start};
+ if ($r_intron_hit->{overlap} > -1) {
+ $r_cm_hit->{introns}->[$r_intron_hit->{overlap}]->{seq} = $r_intron_hit->{intron_seq};
+ $r_cm_hit->{introns}->[$r_intron_hit->{overlap}]->{start} = $r_intron_hit->{start};
+ $r_cm_hit->{introns}->[$r_intron_hit->{overlap}]->{end} = $r_intron_hit->{end};
+ $r_cm_hit->{introns}->[$r_intron_hit->{overlap}]->{type} = "NCI";
+ }
+ else {
+ push(@{$r_cm_hit->{introns}}, {seq=>$r_intron_hit->{intron_seq}, start=>$r_intron_hit->{start},
+ end=>$r_intron_hit->{end}, type=>"NCI"});
+ }
+ if (scalar(@{$rescan_trna_hits[0]->{introns}}) > 0) {
+ $r_new_intron = $rescan_trna_hits[0]->{introns}->[0];
+ my $set_ci = 0;
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ if ($r_intron->{type} eq "CI") {
+ $r_intron = $r_new_intron;
+ $set_ci = 1;
+ }
+ }
+ if (!$set_ci) {
+ push(@{$r_cm_hit->{introns}}, {seq=>$r_new_intron->{seq}, start=>$r_new_intron->{start},
+ end=>$r_new_intron->{end}, type=>"CI"});
+ }
+ }
+ else {
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ if ($r_intron->{type} eq "CI") {
+ $r_intron = undef;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ if ($total_intron_len > 0) {
+ if ($r_cm_hit->{strand}) {
+ $r_cm_hit->{start} = $r_cm_hit->{start} - length($r_cm_hit->{upstream}) + $new_start - 1;
+ $r_cm_hit->{end} = $r_cm_hit->{start} + $r_cm_hit->{len} - 1;
+ }
+ else {
+ $r_cm_hit->{start} = $r_cm_hit->{start} + length($r_cm_hit->{upstream}) - $new_start + 1;
+ $r_cm_hit->{end} = $r_cm_hit->{start} - $r_cm_hit->{len} + 1;
+ }
+ foreach $r_intron (@{$r_cm_hit->{introns}}) {
+ if (defined $r_intron) {
+ $r_intron->{start} = index($r_cm_hit->{precursor}, uc($r_intron->{seq})) + 1;
+ $r_intron->{end} = $r_intron->{start} + length($r_intron->{seq}) - 1;
+ if (($r_intron->{start} == ($r_cm_hit->{acodon_pos}+4)) && ($r_intron->{type} eq "NCI")) {
+ $r_intron->{type} = "CI";
+ }
+ }
+ }
+ @{$r_cm_hit->{introns}} = sort sort_intron_by_start @{$r_cm_hit->{introns}};
+ $last_end = -1;
+ for (my $ct = 0; $ct < scalar(@{$r_cm_hit->{introns}}); $ct++) {
+ if ($last_end == $r_cm_hit->{introns}->[$ct]->{start} - 1) {
+ $last_end = $r_cm_hit->{introns}->[$ct]->{end};
+ $r_cm_hit->{introns}->[$ct]->{start} = $r_cm_hit->{introns}->[$ct - 1]->{start};
+ $r_cm_hit->{introns}->[$ct]->{seq} = $r_cm_hit->{introns}->[$ct - 1]->{seq} . $r_cm_hit->{introns}->[$ct]->{seq};
+ $r_cm_hit->{introns}->[$ct - 1] = undef;
+ }
+ $last_end = $r_cm_hit->{introns}->[$ct]->{end};
+ }
+ }
+ }
+ }
+ }
+ @$r_sec_pass_hits = sort sort_cm_hits_for_output @$r_sec_pass_hits;
+}
+
+# Run Infernal cmsearch for noncanonical introns
+sub run_cmsearch_intron {
+
+ my $self = shift;
+ my $opts = shift;
+ my $log = shift;
+ my ($r_intron_hit_list, $r_cm_file, $r_cm_hit, $tmp_trnaseq_file, $r_over_cutoff_count) = @_;
+
+ my ($cms_output, $r_intron_hit, $ct, $intronDesc);
+ my ($pre_intron, $intron, $post_intron, $intron_start, $intron_span);
+
+ if (!$self->exec_cmsearch(0, $r_cm_file, 0, $tmp_trnaseq_file, $r_cm_hit->{seqname}, \$cms_output)) {
+ return 0;
+ }
+ $self->parse_cmsearch($cms_output, $r_intron_hit_list, 0, $r_cm_hit, 0);
+ $$r_over_cutoff_count = 0;
+ foreach $r_intron_hit (@$r_intron_hit_list) {
+ $ct++;
+ if ($r_intron_hit->{score} >= $self->{BHB_cm_cutoff}) {
+ $$r_over_cutoff_count++;
+
+ if ($r_intron_hit->{ss} =~ /^([\<\-\.]{11,})(\-\<[<.]+[_.]{4,}[>.]{9,}\-[.]*\-)([-.>]+)$/) {
+ $pre_intron = $1;
+ $intron = $2;
+ $post_intron = $3;
+ $intron_start = length($pre_intron);
+ $intron_span = length($intron);
+ }
+ $r_intron_hit->{intron_seq} = substr($r_intron_hit->{seq}, $intron_start, $intron_span);
+ $r_intron_hit->{intron_seq} = uc($r_intron_hit->{intron_seq});
+ $r_intron_hit->{intron_seq} =~ s/U/T/g;
+ $r_intron_hit->{intron_seq} =~ s/-//g;
+ $r_intron_hit->{intron_len} = length($r_intron_hit->{intron_seq});
+
+ $r_intron_hit->{subseq_start} += $intron_start;
+ $r_intron_hit->{subseq_end} -= length($post_intron);
+ $r_intron_hit->{start} = $r_intron_hit->{subseq_start};
+ $r_intron_hit->{end} = $r_intron_hit->{subseq_end};
+
+ if ($r_intron_hit->{strand}) {
+ $r_intron_hit->{tRNA_start} += $intron_start;
+ $r_intron_hit->{tRNA_end} -= length($post_intron);
+ }
+ else {
+ $r_intron_hit->{tRNA_start} -= $intron_start;
+ $r_intron_hit->{tRNA_end} += length($post_intron);
+ }
+ $r_intron_hit->{start} -= length($r_cm_hit->{upstream});
+ $r_intron_hit->{end} -= length($r_cm_hit->{upstream});
+ if ($r_intron_hit->{strand}) {
+ $r_intron_hit->{tRNA_start} -= length($r_cm_hit->{upstream});
+ $r_intron_hit->{tRNA_end} -= length($r_cm_hit->{upstream});
+ }
+ else {
+ $r_intron_hit->{tRNA_start} += length($r_cm_hit->{upstream});
+ $r_intron_hit->{tRNA_end} += length($r_cm_hit->{upstream});
+ }
+ }
+ else {
+ $log->write_line("Low infernal score for noncanonical intron detection of $r_cm_hit->{ID} intron$ct: $r_intron_hit->{score}");
+ $log->write_line("CMSearch Hit#$ct: $r_intron_hit->{tRNA_start}-$r_intron_hit->{tRNA_end},".
+ " Sc: $r_intron_hit->{score}, Len: ".(abs($r_intron_hit->{tRNA_start} - $r_intron_hit->{tRNA_end}) + 1));
+ }
+ }
+
+ return 1;
+}
+
+# Run Infernal cmsearch for genome-wide missing tRNA scanning, return results in $r_cms_hit_list array reference
+
+sub run_gw_cmsearch {
+
+ my $self = shift;
+ my $opts = shift;
+ my $log = shift;
+ my ($r_cms_hit_list, $r_cur_cm_file, $tmp_seq_file, $seqname, $halves) = @_;
+
+ my ($scan_len, $cms_output, $r_cms_hit, $over_cutoff, $ct, $trnaDesc);
+
+ my $cm_file_input = $$r_cur_cm_file;
+ $self->set_search_params($opts, \$scan_len, $r_cur_cm_file, $self->{max_cmsearch_tRNA_length},
+ $self->{max_tRNA_length}, "", 0);
+
+ # run cmsearch
+ if ($halves) {
+ $$r_cur_cm_file = $cm_file_input;
+ }
+ else {
+ $$r_cur_cm_file = $self->{arch_gw_scan_cm_file_path};
+ }
+ if (!$self->exec_cmsearch($scan_len, $r_cur_cm_file, 1, $tmp_seq_file, $seqname, \$cms_output)) {
+ return 0;
+ }
+ $self->parse_gw_cmsearch($cms_output, $r_cms_hit_list, 0);
+
+ # Go thru hit list, save info for tRNA hits with sub-cutoff scores
+
+ if (!$halves) {
+ $ct = 0;
+ $over_cutoff = 0;
+
+ foreach $r_cms_hit (@$r_cms_hit_list) {
+ $ct++;
+ if ($r_cms_hit->{score} >= $self->{cm_cutoff}) {
+ $over_cutoff++;
+ }
+ else {
+ $log->write_line("Low cmsearch score for $ct: $r_cms_hit->{score}");
+ $trnaDesc = "(CMSearch Hit#$ct: $r_cms_hit->{tRNA_start}-$r_cms_hit->{tRNA_end},".
+ " Sc: $r_cms_hit->{score}, Len: ".(abs($r_cms_hit->{tRNA_start} - $r_cms_hit->{tRNA_end}) + 1).") ";
+ if ($opts->save_falsepos()) {
+ &write_tRNA($opts->falsepos_file(), $ct, $trnaDesc, $r_cms_hit->{seq}, 0);
+ }
+ }
+ }
+
+ # report if no scores over 0 bit reporting threshold
+
+ if ($over_cutoff == 0) {
+ if (!$opts->results_to_stdout()) {
+ $log->write_line("No extra CMSearch hits above cutoff found for $seqname");
+ }
+ }
+ else {
+ $log->write_line("Found ".$over_cutoff." extra Infernal hits.");
+ }
+ }
+ return 1;
+}
+
+# Parse the text results of a genome-wide cmsearch into data fields
+
+sub parse_gw_cmsearch {
+
+ my $self = shift;
+ my ($cms_output, $r_cms_hit_list, $overlaps_OK) = @_;
+
+ my (@cms_lines, $subseq_start, $subseq_end, $hit_overlap,
+ $cur_seq_name, $line_ct, $cms_hit_ct, $score, $strand, $skip,
+ $top_score, $overlapping_hit, $prev_start, $prev_end, $prev_seq_name);
+
+ @cms_lines = split(/\n/, $cms_output);
+ $cms_hit_ct = -1;
+ $score = 0;
+
+ for ($line_ct = 0; $line_ct <= $#cms_lines; $line_ct++)
+ {
+ if ($cms_lines[$line_ct] =~ /^>(\S.+)$/) {
+ $prev_seq_name = $cur_seq_name;
+ $cur_seq_name = $1;
+ $skip = 0;
+
+ if ($cur_seq_name ne $prev_seq_name) {
+ $top_score = -1;
+ $prev_start = -1;
+ $prev_end = -1;
+ }
+ }
+ elsif ($cms_lines[$line_ct] =~ /^\s*Plus strand results/)
+ {
+ $strand = 1;
+ }
+ elsif ($cms_lines[$line_ct] =~ /^\s*Minus strand results/)
+ {
+ $strand = 0;
+ }
+ elsif ($cms_lines[$line_ct] =~ /^\s*Query =\s*(\d+)\s*\-\s*(\d+), Target =\s*(\d+)\s*\-\s*(\d+)/)
+ {
+ $skip = 0;
+ $subseq_start = $3;
+ $subseq_end = $4;
+
+ $hit_overlap = eval(!$overlaps_OK &&
+ (($cur_seq_name eq $prev_seq_name) &&
+ (seg_overlap($subseq_start, $subseq_end, $prev_start, $prev_end))));
+ }
+# elsif ($cms_lines[$line_ct] =~ /^\s*Score =\s*([0-9.\-]+), E =\s*([0-9e.\-]+), P =\s*([0-9e.\-]+), GC =\s*(\d+)/)
+ elsif ($cms_lines[$line_ct] =~ /^\s*Score =\s*([0-9.\-]+), /)
+ {
+ $score = $1;
+
+ # If true, Don't save current hit -- Advance to next set of alignment info
+ if (($score < $top_score) && ($hit_overlap))
+ {
+ $line_ct += 4;
+ $skip = 1;
+ next;
+ }
+
+ # Save current hit
+ # If it's a new sequence, or the same seq but no overlap, save the last hit
+ # by advancing the hit counter
+ if (!$hit_overlap)
+ {
+ # convert cmsearch secondary structure
+ if ($cms_hit_ct > -1) {
+ ($r_cms_hit_list->[$cms_hit_ct]->{ss}, $r_cms_hit_list->[$cms_hit_ct]->{seq}) =
+ $self->format_cmsearch_output($r_cms_hit_list->[$cms_hit_ct]->{ss}, $r_cms_hit_list->[$cms_hit_ct]->{seq});
+ }
+
+ $cms_hit_ct++;
+ push(@$r_cms_hit_list,
+ {hit_seqname => "", score=>-1, ss=>"", seq=>"", model=>"",
+ tRNA_start=>-1, tRNA_end=>-1,
+ strand=>$strand, hit_source=>"Infernal"});
+ }
+
+ # Save current hit as best non-overlapping hit
+ $prev_start = $subseq_start;
+ $prev_end = $subseq_end;
+ $top_score = $score;
+
+ $r_cms_hit_list->[$cms_hit_ct]->{hit_seqname}= $cur_seq_name;
+ $r_cms_hit_list->[$cms_hit_ct]->{score} = $score;
+ $r_cms_hit_list->[$cms_hit_ct]->{ss} = "";
+ $r_cms_hit_list->[$cms_hit_ct]->{seq} = "";
+ $r_cms_hit_list->[$cms_hit_ct]->{model} = "";
+ $r_cms_hit_list->[$cms_hit_ct]->{subseq_start} = $subseq_start;
+ $r_cms_hit_list->[$cms_hit_ct]->{subseq_end} = $subseq_end;
+ $r_cms_hit_list->[$cms_hit_ct]->{tRNA_start} = $subseq_start;
+ $r_cms_hit_list->[$cms_hit_ct]->{tRNA_end} = $subseq_end;
+ $r_cms_hit_list->[$cms_hit_ct]->{tRNA_len} = abs($subseq_end - $subseq_start) + 1;
+ }
+
+ # Parse model structure line
+
+ elsif ($cms_lines[$line_ct] =~ /^\s+([(),<>._\-,\[\]\{\}\:]{1,60})/)
+ {
+ if (!$skip) {
+ $r_cms_hit_list->[$cms_hit_ct]->{ss} .= $1;
+
+ # Parse model sequence line
+ if ($cms_lines[$line_ct + 1] =~ /^\s+\d+\s+([a-zA-Z\-]{1,60})\s+\d+/) {
+ $r_cms_hit_list->[$cms_hit_ct]->{model} .= $1;
+ }
+ # Parse target sequence line
+ if ($cms_lines[$line_ct + 3] =~ /^\s+\d+\s+([a-zA-Z\-]{1,60})\s+\d+/) {
+ $r_cms_hit_list->[$cms_hit_ct]->{seq} .= $1;
+ }
+ }
+ # Advance to next set of alignment info
+ $line_ct += 3;
+ }
+ }
+ # convert cmsearch secondary structure
+ if ($cms_hit_ct > -1) {
+ ($r_cms_hit_list->[$cms_hit_ct]->{ss}, $r_cms_hit_list->[$cms_hit_ct]->{seq}) =
+ $self->format_cmsearch_output($r_cms_hit_list->[$cms_hit_ct]->{ss}, $r_cms_hit_list->[$cms_hit_ct]->{seq});
+ }
+}
+
+sub parse_covels_hit {
+
+ my $self = shift;
+ my ($covels_hit, $r_covels_hit_elements, $ts_start, $sense_strand) = @_;
+
+ my $covels_hit_found = 0;
+
+ if ($covels_hit =~ /^\s*(\S+)\s+(\d+)\s+(\d+).+: (\S+)\s*/o) {
+ $r_covels_hit_elements->{score} = $1;
+ $r_covels_hit_elements->{subseq_start} = $2;
+ $r_covels_hit_elements->{subseq_end} = $3;
+ $r_covels_hit_elements->{hit_seqname} = $4;
+ $covels_hit_found = 1;
+ }
+
+ if ($covels_hit_found) {
+ if ($sense_strand) {
+ $r_covels_hit_elements->{tRNA_start} = $ts_start + $r_covels_hit_elements->{subseq_start} - 1;
+ $r_covels_hit_elements->{tRNA_end} = $ts_start + $r_covels_hit_elements->{subseq_end} -1;
+ }
+ else {
+ $r_covels_hit_elements->{tRNA_start} = $ts_start - $r_covels_hit_elements->{subseq_start} + 1;
+ $r_covels_hit_elements->{tRNA_end} = $ts_start - $r_covels_hit_elements->{subseq_end} + 1;
+ }
+
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+# Run covels, return hits in $covels_hit_list array
+
+sub run_covels {
+
+ my $self = shift;
+ my $opts = shift;
+ my $stats = shift;
+ my $log = shift;
+ my ($r_covels_hit_list, $r_cur_cm_file, $tmp_trnaseq_file, $r_prescan_tRNA) = @_;
+
+ my ($scan_len, $covels_cmd, $covels_output, $junk, $allhits, $ct,
+ $total_hits, $trnaDesc, $report_cutoff, $over_cutoff, $fulltrnaDesc);
+
+ my ($covels_hit, $cove_confirmed_ct);
+
+ my %covels_hit_elements = ();
+
+ $self->set_search_params($opts, \$scan_len, $r_cur_cm_file, $self->{max_cove_tRNA_length},
+ $r_prescan_tRNA->{len}, $r_prescan_tRNA->{isotype}, 0);
+
+ # set covels reporting threshold below 0 (default) if -X param is
+ # set below 0 by user
+
+ $report_cutoff = &min(0, $self->{cm_cutoff});
+
+ # run Covels
+
+ $covels_cmd = $self->covels_bin()." -w$scan_len -t$report_cutoff $$r_cur_cm_file $tmp_trnaseq_file";
+ $covels_output = `$covels_cmd`;
+
+ if (&error_exit_status("Covels-SE", $r_prescan_tRNA->{src_seqname})) {
+ print "Exit first loop at 1\n";
+ return 0;
+ }
+
+ ($junk, $allhits) = split(/----------\n\n/, $covels_output);
+ @$r_covels_hit_list = split(/\n/, $allhits);
+
+ # count no. of hits over cutoff
+
+ $total_hits = 0;
+
+ foreach $covels_hit (@$r_covels_hit_list) {
+ %covels_hit_elements = ();
+ if (($self->parse_covels_hit($covels_hit, \%covels_hit_elements,
+ $r_prescan_tRNA->{start}, $r_prescan_tRNA->{strand})) &&
+ ($covels_hit_elements{score} >= $self->{cm_cutoff})) {
+ $total_hits++;
+ }
+ }
+
+ # if no tRNAs detected when using a selenocysteine cove model,
+ # try main model and run again before giving up
+
+ if (($total_hits == 0) &&
+ (($$r_cur_cm_file eq $self->{Pselc_cm_file_path}) || ($$r_cur_cm_file eq $self->{Eselc_cm_file_path}))) {
+ $$r_cur_cm_file = $self->{main_cm_file_path};
+
+ # re-run Covels with main model
+
+ $covels_cmd = $self->covels_bin()." -w$scan_len -t$report_cutoff $$r_cur_cm_file $tmp_trnaseq_file";
+ $covels_output = `$covels_cmd`;
+ if (&error_exit_status("Covels-SE", $r_prescan_tRNA->{src_seqname})) {
+ print "Exit first loop at 2\n";
+ return 0;
+ }
+
+ ($junk,$allhits) = split(/----------\n\n/,$covels_output);
+ @$r_covels_hit_list = split(/\n/, $allhits);
+ }
+
+ # Go thru hit list, save info for tRNA hits with sub-cutoff scores
+
+ $ct = 0;
+ $over_cutoff = 0;
+ $trnaDesc = "";
+
+ foreach $covels_hit (@$r_covels_hit_list) {
+ %covels_hit_elements = ();
+ if ($self->parse_covels_hit($covels_hit, \%covels_hit_elements,
+ $r_prescan_tRNA->{start}, $r_prescan_tRNA->{strand})) {
+ $ct++;
+ if ($covels_hit_elements{score} >= $self->{cm_cutoff}) {
+ $over_cutoff++;
+ }
+ else {
+ $log->write_line("Low covels score for $r_prescan_tRNA->{name}.$ct: $covels_hit_elements{score}");
+ $trnaDesc .= "(Cove Hit#$ct: $covels_hit_elements{tRNA_start}-$covels_hit_elements{tRNA_end},".
+ " Sc: $covels_hit_elements{score}, Len: ".(abs($covels_hit_elements{tRNA_start} - $covels_hit_elements{tRNA_end}) + 1).") ";
+ }
+ }
+ }
+
+ # report if no scores over 0 bit reporting threshold
+
+ if ($over_cutoff == 0) {
+ if ((!$opts->results_to_stdout()) &&
+ ($opts->eufind_mode() || $opts->tscan_mode() || $opts->use_prev_ts_run())) {
+ $log->write_line("Covels score(s) below cutoff for $r_prescan_tRNA->{name}. Skipping...");
+ }
+ if ($opts->save_falsepos()) {
+ $fulltrnaDesc = "(Fp Hit: $r_prescan_tRNA->{start}-$r_prescan_tRNA->{end}, ".
+ (abs($r_prescan_tRNA->{start} - $r_prescan_tRNA->{end}) + 1)." bp, Src: $r_prescan_tRNA->{hit_source}) ".$trnaDesc;
+
+ $stats->increment_fpos_base_ct(length($r_prescan_tRNA->{seq}));
+ &write_tRNA($opts->falsepos_file(), $r_prescan_tRNA->{name}, $fulltrnaDesc, $r_prescan_tRNA->{seq}, 0);
+ }
+ }
+
+ return 1;
+}
+
+sub run_coves {
+
+ my $self = shift;
+ my ($tmp_trnaseq_file, $seq_name, $cm_file) = @_;
+
+ my ($covseq, $covss, $coves_output, $junk, @coves_lines, $sec_struct, $coves_score);
+
+ my $coves_cmd = $self->{coves_bin}." -s $cm_file $tmp_trnaseq_file";
+ $coves_output = `$coves_cmd`;
+ if (&error_exit_status("Coves-SE", $seq_name)) {
+ print STDERR "Skipping tRNA anticodon & type prediction\n\n";
+ return ("Error", "", -1);
+ }
+
+ ($junk, $sec_struct) = split(/----------\n\n/, $coves_output);
+ @coves_lines = split(/\n/,$sec_struct);
+ $covseq = '';
+ $covss = '';
+ $coves_score = -1000;
+ $seq_name =~ s/(\W)/\\$1/g;
+
+ foreach (@coves_lines) {
+ if (/^\s+$seq_name\s([a-zA-Z\-]{1,60})\s*/) {
+ $covseq .= $1;
+ }
+ if (/^\s+$seq_name\s([\.\<\>\ ]{1,60})/) {
+ $covss .= $1;
+ }
+ if (/^\s*(\S+)\sbits\s:\s$seq_name/) {
+ $coves_score = $1;
+ }
+ }
+
+ $covss =~ s/\s//g; # take spaces out of alignment
+ $covseq =~ s/-//g; # take '-' gaps out of seq
+
+ if (($covseq eq '') || ($covss eq '')) {
+ print STDERR "Could not complete coves successfully for $seq_name\n",
+ "because unable to parse coves secondary structure string.\n",
+ "Skipping tRNA anticodon & type prediction\n";
+ return ("Error", "", -1);
+ }
+
+ return ($covseq, $covss, $coves_score);
+}
+
+sub analyze_with_cove {
+
+ my $self = shift;
+ my $opts = shift;
+ my $constants = shift;
+ my $stats = shift;
+ my $gc = shift;
+ my $log = shift;
+ my $program_id = shift;
+ my ($r_prescan_tRNA, $tmp_trnaseq_file, $r_curseq_trnact, $r_sec_pass_hits) = @_;
+
+ my (@covels_hit_list, $cur_cm_file, $covels_hit, $cove_confirmed_ct);
+ my ($covseq, $covss, $coves_score, $r_introns);
+ my ($cv_anticodon, $acodon_index, $cv_type, $introns, $hmm_score, $ss_score, $pseudo_gene_flag);
+ my %covels_hit_elements = ();
+ my $cov_hit = {};
+
+ $cove_confirmed_ct = 0;
+
+ if (!$self->run_covels($opts, $stats, $log, \@covels_hit_list, \$cur_cm_file, $tmp_trnaseq_file, $r_prescan_tRNA)) {
+ return 0;
+ }
+
+ # Loop to parse covels tRNA hit(s) and run Coves on each tRNA
+
+ foreach $covels_hit (@covels_hit_list) {
+ %covels_hit_elements = ();
+ if ((!$self->parse_covels_hit($covels_hit, \%covels_hit_elements,
+ $r_prescan_tRNA->{start}, $r_prescan_tRNA->{strand})) ||
+ ($covels_hit_elements{score} < $self->{cm_cutoff})) {
+ next;
+ }
+
+ $$r_curseq_trnact++;
+
+ $covels_hit_elements{upstream} = $r_prescan_tRNA->{upstream};
+ $covels_hit_elements{downstream} = $r_prescan_tRNA->{downstream};
+
+ if (($covels_hit_elements{subseq_start} == 1) && ($covels_hit_elements{subseq_end} == $r_prescan_tRNA->{len})) {
+ $covels_hit_elements{tRNA_len} = $r_prescan_tRNA->{len};
+ }
+ else {
+ # get correct subseq for coves & save to file
+ $covels_hit_elements{tRNA_len} = $covels_hit_elements{subseq_end} - $covels_hit_elements{subseq_start} + 1;
+ &write_tRNA($tmp_trnaseq_file, $covels_hit_elements{hit_seqname}, " ",
+ substr($r_prescan_tRNA->{seq}, $covels_hit_elements{subseq_start} - 1, $covels_hit_elements{tRNA_len}), 1);
+ if ($covels_hit_elements{subseq_start} > 1) {
+ $covels_hit_elements{upstream} .= substr($r_prescan_tRNA->{seq}, 0, $covels_hit_elements{subseq_start} - 1);
+ }
+ if ($covels_hit_elements{subseq_end} < $r_prescan_tRNA->{len}) {
+ $covels_hit_elements{downstream} = substr($r_prescan_tRNA->{seq}, $covels_hit_elements{subseq_end}) .
+ $covels_hit_elements{downstream};
+ }
+ }
+ $stats->increment_coves_base_ct($covels_hit_elements{tRNA_len});
+
+ $covels_hit_elements{name} = $covels_hit_elements{hit_seqname}.".t".$$r_curseq_trnact;
+
+ ($covseq, $covss, $coves_score) =
+ $self->run_coves($tmp_trnaseq_file, $r_prescan_tRNA->{src_seqname}, $cur_cm_file);
+
+ # look for intron
+
+ ($cv_anticodon, $acodon_index, $cv_type, $r_introns, $hmm_score, $ss_score, $pseudo_gene_flag) =
+ $self->decode_tRNA_properties ($opts, $gc, $log, $coves_score, $covseq, $covss, $r_prescan_tRNA,
+ $covels_hit_elements{tRNA_start}, $covels_hit_elements{tRNA_end}, $cur_cm_file, $tmp_trnaseq_file);
+
+ $cov_hit = {};
+ $cov_hit =
+ {seqname =>$covels_hit_elements{hit_seqname}, score=>$coves_score, ss=>$covss, seq=>$covseq, model=>"",
+ start=>$covels_hit_elements{tRNA_start}, end=>$covels_hit_elements{tRNA_end}, len=>$covels_hit_elements{tRNA_len},
+ ID=>$covels_hit_elements{name},
+ acodon=>$cv_anticodon, acodon_pos =>$acodon_index, isotype=>$cv_type,
+ introns=>$r_introns, hmm_score=>$hmm_score,
+ ss_score=>$ss_score, is_pseudo=>$pseudo_gene_flag,
+ src_seqlen=>$r_prescan_tRNA->{src_seqlen}, src_seqname=>$covels_hit_elements{hit_seqname},
+ strand=>$r_prescan_tRNA->{strand}, hit_source=>$r_prescan_tRNA->{hit_source},
+ upstream=>$covels_hit_elements{upstream}, downstream=>$covels_hit_elements{downstream}, extra=>0};
+
+ if (!$self->{CM_check_for_introns}) {
+ &output_tRNA($opts, $gc, $log, $self->{tab_results}, $self->{get_hmm_score}, $program_id,
+ $r_prescan_tRNA, $cov_hit, $$r_curseq_trnact);
+
+ $cove_confirmed_ct++;
+ }
+ else {
+ push (@$r_sec_pass_hits, $cov_hit);
+ }
+ } # while more covels_hits
+
+ return $cove_confirmed_ct;
+}
+
+# Format command and run Infernal cmsearch
+
+sub exec_cmsearch {
+
+ my $self = shift;
+ my ($scan_len, $r_cm_file, $scan_genome, $tmp_trnaseq_file, $seq_name, $r_cms_output) = @_;
+
+ my $cm_options = "-g --fil-no-hmm --toponly";
+ if ($scan_genome) {
+ $cm_options = "-g";
+ }
+
+ my $cms_cmd = "$self->{cmsearch_bin} $cm_options $$r_cm_file $tmp_trnaseq_file";
+ $$r_cms_output = `$cms_cmd`;
+
+ if (&error_exit_status("cmsearch", $seq_name)) {
+ print STDERR "Exited at failed cmsearch\n";
+ return 0;
+ }
+
+ return 1;
+}
+
+# Run Infernal cmsearch, return results in $r_cms_hit_list array reference
+
+sub run_cmsearch {
+
+ my $self = shift;
+ my $opts = shift;
+ my $stats = shift;
+ my $log = shift;
+ my ($r_cms_hit_list, $r_cur_cm_file, $tmp_trnaseq_file, $r_prescan_tRNA) = @_;
+
+ my ($scan_len, $cms_cmd, $cms_output, $r_cms_hit, $total_hits, $over_cutoff, $ct, $trnaDesc, $fulltrnaDesc);
+
+ $self->set_search_params($opts, \$scan_len, $r_cur_cm_file, $self->{max_cmsearch_tRNA_length},
+ $r_prescan_tRNA->{len}, $r_prescan_tRNA->{isotype}, 0);
+
+ # run cmsearch
+
+ if (!$self->exec_cmsearch($scan_len, $r_cur_cm_file, 0, $tmp_trnaseq_file, $r_prescan_tRNA->{src_seqname}, \$cms_output)) {
+ return 0;
+ }
+
+ $self->parse_cmsearch($cms_output, $r_cms_hit_list, 0, $r_prescan_tRNA, 1);
+
+ # count no. of hits over cutoff
+
+ $total_hits = 0;
+ foreach $r_cms_hit (@$r_cms_hit_list) {
+ if ($r_cms_hit->{score} >= $self->{cm_cutoff}) {
+ $total_hits++;
+ }
+ }
+
+ # if no tRNAs detected when using a selenocysteine cove model,
+ # try main model and run again before giving up
+
+ if (($total_hits == 0) &&
+ (($$r_cur_cm_file eq $self->{Pselc_cm_file_path}) || ($$r_cur_cm_file eq $self->{Eselc_cm_file_path}))) {
+ $$r_cur_cm_file = $self->{main_cm_file_path};
+
+ # re-run cmsearch with main model
+
+ if (!$self->exec_cmsearch($scan_len, $r_cur_cm_file, 0, $tmp_trnaseq_file, $r_prescan_tRNA->{src_seqname}, \$cms_output)) {
+ return 0;
+ }
+ $self->parse_cmsearch($cms_output, $r_cms_hit_list, 0, $r_prescan_tRNA);
+ }
+
+ # Go thru hit list, save info for tRNA hits with sub-cutoff scores
+
+ $ct = 0;
+ $over_cutoff = 0;
+ $trnaDesc = "";
+
+ foreach $r_cms_hit (@$r_cms_hit_list) {
+ $ct++;
+ if ($r_cms_hit->{score} >= $self->{cm_cutoff}) {
+ $over_cutoff++;
+ }
+ else {
+ $log->write_line("Low covels score for $r_prescan_tRNA->{name}.$ct: $r_cms_hit->{score}");
+ $trnaDesc .= "(CMSearch Hit#$ct: $r_cms_hit->{tRNA_start}-$r_cms_hit->{tRNA_end},".
+ " Sc: $r_cms_hit->{score}, Len: ".(abs($r_cms_hit->{tRNA_start} - $r_cms_hit->{tRNA_end}) + 1).") ";
+ }
+ }
+
+ # report if no scores over 0 bit reporting threshold
+
+ if ($over_cutoff == 0) {
+ if ((!$opts->results_to_stdout()) &&
+ ($opts->eufind_mode() || $opts->tscan_mode() || $opts->use_prev_ts_run())) {
+ $log->write_line("CMSearch score(s) below cutoff for $r_prescan_tRNA->{name}. Skipping...");
+ }
+ if ($opts->save_falsepos()) {
+ $fulltrnaDesc = "(Fp Hit: $r_prescan_tRNA->{start}-$r_prescan_tRNA->{end}, ".
+ (abs($r_prescan_tRNA->{start} - $r_prescan_tRNA->{end}) + 1)." bp, Src: $r_prescan_tRNA->{hit_source}) ".$trnaDesc;
+
+ $stats->increment_fpos_base_ct(length($r_prescan_tRNA->{seq}));
+ &write_tRNA($opts->falsepos_file(), $r_prescan_tRNA->{name}, $fulltrnaDesc, $r_prescan_tRNA->{seq}, 0);
+ }
+ }
+
+ return 1;
+}
+
+# Parse the text results of a cmsearch into data fields
+
+sub parse_cmsearch {
+
+ my $self = shift;
+ my ($cms_output, $r_cms_hit_list, $overlaps_OK, $r_prescan_tRNA, $format_struct) = @_;
+
+ my (@cms_lines, $subseq_start, $subseq_end, $hit_overlap,
+ $cur_seq_name, $line_ct, $cms_hit_ct, $score, $skip,
+ $top_score, $overlapping_hit, $prev_start, $prev_end, $prev_seq_name);
+
+ @cms_lines = split(/\n/, $cms_output);
+ $cms_hit_ct = -1;
+ $score = 0;
+
+ for ($line_ct = 0; $line_ct <= $#cms_lines; $line_ct++)
+ {
+ if ($cms_lines[$line_ct] =~ /^>(\S.+)$/) {
+ $prev_seq_name = $cur_seq_name;
+ $cur_seq_name = $1;
+ $skip = 0;
+
+ if ($cur_seq_name ne $prev_seq_name) {
+ $top_score = -1;
+ $prev_start = -1;
+ $prev_end = -1;
+ }
+ }
+ elsif ($cms_lines[$line_ct] =~ /^\s*Query =\s*(\d+)\s*\-\s*(\d+), Target =\s*(\d+)\s*\-\s*(\d+)/)
+ {
+ $skip = 0;
+ $subseq_start = $3;
+ $subseq_end = $4;
+
+ $hit_overlap = eval(!$overlaps_OK &&
+ (($cur_seq_name eq $prev_seq_name) &&
+ (seg_overlap($subseq_start, $subseq_end, $prev_start, $prev_end))));
+ }
+# elsif ($cms_lines[$line_ct] =~ /^\s*Score =\s*([0-9.\-]+), E =\s*([0-9e.\-]+), P =\s*([0-9e.\-]+), GC =\s*(\d+)/)
+ elsif ($cms_lines[$line_ct] =~ /^\s*Score =\s*([0-9.\-]+), /)
+ {
+ $score = $1;
+
+ # If true, Don't save current hit -- Advance to next set of alignment info
+ if (($score < $top_score) && ($hit_overlap))
+ {
+ $line_ct += 4;
+ $skip = 1;
+ next;
+ }
+
+ # Save current hit
+ # If it's a new sequence, or the same seq but no overlap, save the last hit
+ # by advancing the hit counter
+ if (!$hit_overlap)
+ {
+ # convert cmsearch secondary structure
+ if (($cms_hit_ct > -1) && $format_struct) {
+ ($r_cms_hit_list->[$cms_hit_ct]->{ss}, $r_cms_hit_list->[$cms_hit_ct]->{seq}) =
+ $self->format_cmsearch_output($r_cms_hit_list->[$cms_hit_ct]->{ss}, $r_cms_hit_list->[$cms_hit_ct]->{seq});
+ }
+
+ $cms_hit_ct++;
+ push(@$r_cms_hit_list,
+ {hit_seqname => "", score=>-1, ss=>"", seq=>"", model=>"",
+ tRNA_start=>-1, tRNA_end=>-1,
+ strand=>$r_prescan_tRNA->{strand}, hit_source=>$r_prescan_tRNA->{hit_source}});
+ }
+
+ # Save current hit as best non-overlapping hit
+ $prev_start = $subseq_start;
+ $prev_end = $subseq_end;
+ $top_score = $score;
+
+ $r_cms_hit_list->[$cms_hit_ct]->{hit_seqname}= $cur_seq_name;
+ $r_cms_hit_list->[$cms_hit_ct]->{score} = $score;
+ $r_cms_hit_list->[$cms_hit_ct]->{ss} = "";
+ $r_cms_hit_list->[$cms_hit_ct]->{seq} = "";
+ $r_cms_hit_list->[$cms_hit_ct]->{model} = "";
+ $r_cms_hit_list->[$cms_hit_ct]->{subseq_start} = $subseq_start;
+ $r_cms_hit_list->[$cms_hit_ct]->{subseq_end} = $subseq_end;
+
+ if ($r_prescan_tRNA->{strand}) {
+ $r_cms_hit_list->[$cms_hit_ct]->{tRNA_start} = $r_prescan_tRNA->{start} + $subseq_start - 1;
+ $r_cms_hit_list->[$cms_hit_ct]->{tRNA_end} = $r_prescan_tRNA->{start} + $subseq_end - 1;
+ }
+ else {
+ $r_cms_hit_list->[$cms_hit_ct]->{tRNA_start} = $r_prescan_tRNA->{start} - $subseq_start + 1;
+ $r_cms_hit_list->[$cms_hit_ct]->{tRNA_end} = $r_prescan_tRNA->{start} - $subseq_end + 1;
+ }
+ }
+
+ # Parse model structure line
+
+ elsif ($cms_lines[$line_ct] =~ /^\s+([(),<>._\-,\[\]\{\}\:]{1,60})/)
+ {
+ if (!$skip) {
+ $r_cms_hit_list->[$cms_hit_ct]->{ss} .= $1;
+
+ # Parse model sequence line
+ if ($cms_lines[$line_ct + 1] =~ /^\s+\d+\s+([a-zA-Z\-]{1,60})\s+\d+/) {
+ $r_cms_hit_list->[$cms_hit_ct]->{model} .= $1;
+ }
+ # Parse target sequence line
+ if ($cms_lines[$line_ct + 3] =~ /^\s+\d+\s+([a-zA-Z\-]{1,60})\s+\d+/) {
+ $r_cms_hit_list->[$cms_hit_ct]->{seq} .= $1;
+ }
+ }
+ # Advance to next set of alignment info
+ $line_ct += 3;
+ }
+ }
+ # convert cmsearch secondary structure
+ if (($cms_hit_ct > -1) && $format_struct) {
+ ($r_cms_hit_list->[$cms_hit_ct]->{ss}, $r_cms_hit_list->[$cms_hit_ct]->{seq}) =
+ $self->format_cmsearch_output($r_cms_hit_list->[$cms_hit_ct]->{ss}, $r_cms_hit_list->[$cms_hit_ct]->{seq});
+ }
+
+}
+
+sub format_cmsearch_output {
+
+ my $self = shift;
+ my $cmsearch_ss = shift;
+ my $cmsearch_seq = shift;
+
+ $cmsearch_seq =~ s/U/T/g;
+ $cmsearch_seq =~ s/u/t/g;
+ for (my $index = 0; $index < length($cmsearch_seq); $index++) {
+ if (substr($cmsearch_seq, $index, 1) eq '-') {
+ substr($cmsearch_seq, $index, 1) = '*';
+ if (length($cmsearch_ss) > $index) {
+ substr($cmsearch_ss, $index, 1) = '*';
+ }
+ }
+ }
+ $cmsearch_seq =~ s/\*//g;
+ $cmsearch_ss =~ s/\*//g;
+
+ $cmsearch_ss =~ s/[,_\-:]/./g;
+ $cmsearch_ss =~ s/[>)]/@/g;
+ $cmsearch_ss =~ s/[(<]/>/g;
+ $cmsearch_ss =~ s/@/</g;
+
+ my $diff = length($cmsearch_seq) - length($cmsearch_ss);
+ for (my $ct = 0; $ct < $diff; $ct++) {
+ $cmsearch_ss .= ".";
+ }
+
+ return ($cmsearch_ss, $cmsearch_seq);
+}
+
+# Runs Infernal cmsearch, and returns the highest score
+
+sub cmsearch_bestscore {
+
+ my $self = shift;
+ my $opts = shift;
+ my ($tmp_trnaseq_file, $seq_name, $tRNA_len, $cm_file) = @_;
+
+ my ($cms_output, @cms_hit_list, $scan_len, $cur_cm_file, @cms_lines,
+ $subseq_start, $subseq_end, $score, $besthit_score, $line,
+ $besthit_start, $besthit_end, $hit_ct);
+
+ $self->set_search_params($opts, \$scan_len, \$cur_cm_file, $self->{max_cmsearch_tRNA_length}, $tRNA_len, '', 1);
+
+ if (!$self->exec_cmsearch($scan_len, \$cur_cm_file, 0, $tmp_trnaseq_file, $seq_name, \$cms_output)) {
+ return 0;
+ }
+
+ @cms_lines = split(/\n/, $cms_output);
+ $hit_ct = 0;
+ $score = 0;
+ $besthit_score = 0;
+
+ foreach $line (@cms_lines)
+ {
+ if ($line =~ /^\s*Query =\s+(\d+)\s+-\s+(\d+), Target =\s+(\d+)\s+-\s+(\d+)/)
+ {
+ $subseq_start = $3;
+ $subseq_end = $4;
+ $hit_ct++;
+ }
+ elsif ($line =~ /^\s*Score =\s+([0-9.\-]+), GC =\s+(\d+)/)
+ {
+ $score = $1;
+ if ($score > $besthit_score) {
+ $besthit_score = $score;
+ $besthit_start = $subseq_start;
+ $besthit_end = $subseq_end;
+ }
+ }
+ }
+ return ($besthit_score, $besthit_start, $besthit_end, $hit_ct);
+}
+
+sub analyze_with_cmsearch {
+
+ my $self = shift;
+ my $opts = shift;
+ my $constants = shift;
+ my $stats = shift;
+ my $gc = shift;
+ my $log = shift;
+ my $program_id = shift;
+ my ($r_prescan_tRNA, $tmp_trnaseq_file, $r_curseq_trnact, $r_sec_pass_hits) = @_;
+
+ my ($cms_confirmed_ct, $cms_output, $cur_cm_file, @cms_hit_list, $cms_hit, $ct);
+ my ($cm_anticodon, $acodon_index, $cm_type, $r_introns, $hmm_score, $ss_score, $pseudo_gene_flag);
+
+ my $cm_hit = {};
+
+ $cms_confirmed_ct = 0;
+
+ if (!$self->run_cmsearch($opts, $stats, $log, \@cms_hit_list, \$cur_cm_file, $tmp_trnaseq_file, $r_prescan_tRNA)) {
+ return 0;
+ }
+
+ # Loop to process each cmsearch tRNA hit
+
+ foreach $cms_hit (@cms_hit_list) {
+
+ if ($cms_hit->{score} < $self->{cm_cutoff}) {
+ next;
+ }
+
+ $$r_curseq_trnact++;
+
+ $cms_hit->{upstream} = $r_prescan_tRNA->{upstream};
+ $cms_hit->{downstream} = $r_prescan_tRNA->{downstream};
+
+ if (($cms_hit->{subseq_start} == 1) && ($cms_hit->{subseq_end} == $r_prescan_tRNA->{len})) {
+ $cms_hit->{tRNA_len} = $r_prescan_tRNA->{len};
+ }
+ else {
+ # get correct subseq & save to file
+ if ((length($r_prescan_tRNA->{seq}) >= $cms_hit->{subseq_end} + 2) &&
+ (uc(substr($r_prescan_tRNA->{seq}, $cms_hit->{subseq_end}, 3)) eq "CCA") &&
+ (substr($cms_hit->{ss}, length($cms_hit->{ss}) - 4) ne "....")) {
+ $cms_hit->{subseq_end} += 3;
+ if ($cms_hit->{strand}) {
+ $cms_hit->{tRNA_end} += 3;
+ }
+ else {
+ $cms_hit->{tRNA_end} -= 3;
+ }
+ $cms_hit->{seq} .= "CCA";
+ }
+ $cms_hit->{tRNA_len} = $cms_hit->{subseq_end} - $cms_hit->{subseq_start} + 1;
+ &write_tRNA($tmp_trnaseq_file, $cms_hit->{hit_seqname}, " ",
+ substr($r_prescan_tRNA->{seq}, $cms_hit->{subseq_start} - 1, $cms_hit->{tRNA_len}), 1);
+
+ if (uc(substr($r_prescan_tRNA->{seq}, $cms_hit->{subseq_start} - 1, $cms_hit->{tRNA_len})) ne uc($cms_hit->{seq})) {
+ $cms_hit->{seq} = substr($r_prescan_tRNA->{seq}, $cms_hit->{subseq_start} - 1, $cms_hit->{tRNA_len});
+ }
+ if ($cms_hit->{subseq_start} > 1) {
+ $cms_hit->{upstream} .= substr($r_prescan_tRNA->{seq}, 0, $cms_hit->{subseq_start} - 1);
+ }
+ if ($cms_hit->{subseq_end} < $r_prescan_tRNA->{len}) {
+ $cms_hit->{downstream} = substr($r_prescan_tRNA->{seq}, $cms_hit->{subseq_end}) . $cms_hit->{downstream};
+ }
+ }
+
+ $cms_hit->{name} = $cms_hit->{hit_seqname}.".t$$r_curseq_trnact";
+
+ ($cm_anticodon, $acodon_index, $cm_type, $r_introns, $hmm_score, $ss_score, $pseudo_gene_flag) =
+ $self->decode_tRNA_properties ($opts, $gc, $log, $cms_hit->{score}, $cms_hit->{seq}, $cms_hit->{ss}, $r_prescan_tRNA,
+ $cms_hit->{tRNA_start}, $cms_hit->{tRNA_end}, $cur_cm_file, $tmp_trnaseq_file);
+
+ $cm_hit = {};
+ $cm_hit =
+ {seqname =>$cms_hit->{hit_seqname}, score=>$cms_hit->{score}, ss=>$cms_hit->{ss}, seq=>$cms_hit->{seq}, model=>$cms_hit->{model},
+ start=>$cms_hit->{tRNA_start}, end=>$cms_hit->{tRNA_end}, len=>$cms_hit->{tRNA_len}, ID=>$cms_hit->{name},
+ acodon=>$cm_anticodon, acodon_pos =>$acodon_index, isotype=>$cm_type,
+ introns=>$r_introns, hmm_score=>$hmm_score,
+ ss_score=>$ss_score, is_pseudo=>$pseudo_gene_flag,
+ src_seqlen=>$r_prescan_tRNA->{src_seqlen}, src_seqname=>$cms_hit->{hit_seqname},
+ strand=>$r_prescan_tRNA->{strand}, hit_source=>$r_prescan_tRNA->{hit_source},
+ upstream=>$cms_hit->{upstream}, downstream=>$cms_hit->{downstream}, extra=>0};
+
+ if (!$self->{CM_check_for_introns}) {
+ &output_tRNA($opts, $gc, $log, $self->{tab_results}, $self->{get_hmm_score}, $program_id,
+ $r_prescan_tRNA, $cm_hit, $$r_curseq_trnact);
+
+ $cms_confirmed_ct++;
+ }
+ else {
+ push(@$r_sec_pass_hits, $cm_hit);
+ }
+ } # while more cmsearch hits
+
+ return $cms_confirmed_ct;
+}
+
+sub sort_cm_hits_by_start {
+
+ my $self = shift;
+ my $cms_hits = shift;
+
+ my $a_start = $a->{start};
+ my $b_start = $b->{start};
+
+ if ($a->{strand} == 0) {
+ $a_start = $a->{end};
+ }
+ if ($b->{strand} == 0) {
+ $b_start = $b->{end};
+ }
+
+ return ($a->{seqname} cmp $b->{seqname} ||
+ $a_start <=> $b_start);
+}
+
+sub sort_cm_hits_for_output {
+
+ my $self = shift;
+ my $cms_hits = shift;
+
+ if ((($a->{strand} == $b->{strand}) && ($a->{strand} == 1)) ||
+ ($a->{strand} != $b->{strand})) {
+ return ($a->{seqname} cmp $b->{seqname} ||
+ $b->{strand} <=> $a->{strand} ||
+ $a->{start} <=> $b->{start});
+ }
+ if (($a->{strand} == $b->{strand}) && ($a->{strand} == 0)) {
+ return ($a->{seqname} cmp $b->{seqname} ||
+ $b->{strand} <=> $a->{strand} ||
+ $b->{start} <=> $a->{start});
+ }
+}
+
+sub sort_intron_by_start {
+
+ my $self = shift;
+ my $introns = shift;
+
+ return ($a->{start} <=> $b->{end});
+}
+
+1;
diff --git a/tRNAscanSE/Constants.pm b/tRNAscanSE/Constants.pm
new file mode 100644
index 0000000..6e90865
--- /dev/null
+++ b/tRNAscanSE/Constants.pm
@@ -0,0 +1,105 @@
+# tRNAscanSE/Constants.pm
+# This class defines global constants used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::Constants;
+
+use strict;
+use tRNAscanSE::Utils;
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY
+{
+ my $self = shift;
+}
+
+sub initialize
+{
+ my $self = shift;
+
+ $self->{REALLY_BIG_NUMBER} = 1000000000; # largest sequence length imaginable
+
+ # Source of first-pass hits table
+ # C = Cove, T = tRNAscan, E = EufindtRNA, B = both
+
+ my @source_tab = ('Cv', 'Ts', 'Eu', 'Bo');
+ $self->{source_tab} = \@source_tab;
+
+ $self->{upstream_len} = 60;
+ $self->{downstream_len} = 60;
+}
+
+sub REALLY_BIG_NUMBER
+{
+ my $self = shift;
+ return $self->{REALLY_BIG_NUMBER};
+}
+
+sub source_tab
+{
+ my $self = shift;
+ return $self->{source_tab};
+}
+
+sub upstream_len
+{
+ my $self = shift;
+ return $self->{upstream_len};
+}
+
+sub downstream_len
+{
+ my $self = shift;
+ return $self->{downstream_len};
+}
+
+sub set_temp_file_names
+{
+ my $self = shift;
+ my $temp_dir = shift;
+
+ $self->{tmp_raw} = &tempname($temp_dir, ".raw"); # for raw tscan output
+ $self->{tmp_fa} = &tempname($temp_dir, ".fa"); # for current fasta seq file
+ $self->{tmp_trnaseq_file} = &tempname($temp_dir, ".trna"); # for current tRNA seq
+ $self->{tmp_masked_fa} = &tempname($temp_dir, ".masked.fa"); # for current tRNA seq
+}
+
+sub tmp_raw
+{
+ my $self = shift;
+ return $self->{tmp_raw};
+}
+
+sub tmp_fa
+{
+ my $self = shift;
+ return $self->{tmp_fa};
+}
+
+sub tmp_trnaseq_file
+{
+ my $self = shift;
+ return $self->{tmp_trnaseq_file};
+}
+
+sub tmp_masked_fa
+{
+ my $self = shift;
+ return $self->{tmp_masked_fa};
+}
+
+1;
diff --git a/tRNAscanSE/Eufind.pm b/tRNAscanSE/Eufind.pm
new file mode 100644
index 0000000..ded9bb2
--- /dev/null
+++ b/tRNAscanSE/Eufind.pm
@@ -0,0 +1,261 @@
+# tRNAscanSE/Eufind.pm
+# This class contains parameters and functions for running eufindtRNA used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::Eufind;
+
+use strict;
+use tRNAscanSE::Utils;
+
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY
+{
+ my $self = shift;
+}
+
+sub initialize
+{
+ my $self = shift;
+ $self->{eufind_params} = "-r"; # relaxed params to be used with
+ # eufindtRNA program by default
+ # this option selects tRNAs,
+ # not looking for poly T
+ # pol III termination signal
+
+ $self->{eufind_intscore} = -32.10; # Intermediate score cutoff for use
+ # with eufindtRNA
+# $self->{eufind_Totscore} = -31.8; # Total score cutoff for use
+ # with eufindtRNA in non-relaxed mode
+
+ $self->{eufind_bin} = "eufindtRNA";
+
+ $self->{eufind_mask} = 2; # Bit-wise masks for source of tRNA hits
+}
+
+sub eufind_params
+{
+ my $self = shift;
+ if (@_) { $self->{eufind_params} = shift; }
+ return $self->{eufind_params};
+}
+
+sub eufind_intscore
+{
+ my $self = shift;
+ if (@_) { $self->{eufind_intscore} = shift; }
+ return $self->{eufind_intscore};
+}
+
+sub eufind_bin
+{
+ my $self = shift;
+ if (@_) { $self->{eufind_bin} = shift; }
+ return $self->{eufind_bin};
+}
+
+sub eufind_mask
+{
+ my $self = shift;
+ return $self->{eufind_mask};
+}
+
+sub set_bin {
+
+ my $self = shift;
+ my $bindir = shift;
+
+ if ($^O =~ /^MSWin/) {
+ $self->{eufind_bin} .= ".exe";
+ }
+
+ if (!(-x $self->{eufind_bin})) {
+ $self->{eufind_bin} = $bindir.$self->{eufind_bin};
+ if (!(-x $self->{eufind_bin})) {
+ die "FATAL: Unable to find ".$self->{eufind_bin}." executable\n\n";
+ }
+ }
+}
+
+sub run_eufind {
+
+ my $self = shift;
+ my ($tmp_fa, $start_index, $max_int_len, $seq_name) = @_;
+ my $eufind_bin = $self->{eufind_bin};
+ my $eufind_intscore = $self->{eufind_intscore};
+ my $eufind_params = $self->{eufind_params};
+
+ # run default Eufind using selected param set
+ my $eufind_output =
+ `$eufind_bin -i $start_index -F -I $eufind_intscore -l $max_int_len $eufind_params $tmp_fa`;
+ if (&error_exit_status("EufindtRNA",$seq_name)) {
+ $eufind_output = "";
+ }
+ return $eufind_output;
+}
+
+sub process_Eufind_hits {
+
+ my $self = shift;
+ my $constants = shift;
+ my $stats = shift;
+ my $r_hit_list = shift;
+ my $eufind_output = shift;
+
+ my ($istart, $iend, $from,$ to, $intron, $trnact, $len, $seq_name,
+ $anticodon, $iso_type, $sense_strand, $score, $pos, $i, @eufind_lines);
+
+ $trnact = 0; # trna count for this sequence
+ $istart = 0; $iend = 0; # intron bounds
+ $from = 0; $to = 0; # tRNA bounds
+ $len = 0; # tRNA length
+ $intron = 0; # intron present? flag
+ $anticodon = '';
+ $iso_type = '';
+ $score = 0.0;
+
+ @eufind_lines = split(/\n/, $eufind_output);
+ foreach (@eufind_lines) {
+ if (/^(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)/o)
+ {
+ $seq_name = $1;
+ $trnact = $2;
+ $from = $3;
+ $to = $4;
+ $iso_type = $5;
+ $anticodon = $6;
+ $score = $9;
+
+ $istart = 0;
+ $iend = 0;
+
+ if ($from < $to) {
+ $len = $to - $from + 1;
+ $pos = $from;
+ $sense_strand = 1; # flag for forward or reverse strand
+ }
+ else {
+ $len = $from - $to + 1;;
+ $pos = $constants->REALLY_BIG_NUMBER() - $from + 1;
+ $sense_strand = 0;
+ }
+
+ if ($from == $to) {
+ print STDERR "Error reading EufindtRNA results: ",
+ "tRNA of length 0";
+ }
+
+ if (!$self->merge_repeat_hit($stats, $r_hit_list, \$trnact, $from, $to,
+ $sense_strand, $iso_type, $score)) {
+
+ # insert non-redundant hit in order
+ # 'Merge_repeat_hits' depends on list being in order
+
+ $i=0;
+ while (($i < scalar(@$r_hit_list)) && ($r_hit_list->[$i]{position} < $pos)) {
+ $i++;
+ }
+
+ splice(@$r_hit_list, $i, 0, {
+ seqname => $seq_name,
+ start => $from, end => $to,
+ type => $iso_type, acodon => $anticodon,
+ istart => 0, iend => 0,
+ sen_strand => $sense_strand,
+ position => $pos, score => $score,
+ source => $self->{eufind_mask}
+ });
+
+ $trnact++;
+ $stats->increment_trnatotal();
+
+ }
+ }
+ }
+}
+
+# check current hit for redundancy against all previous hits in hitlist
+#
+# if it IS a repeat, merge it with overlapping hit and return 1
+# if it doesn't overlap with any hits, return 0
+
+sub merge_repeat_hit {
+
+ my $self = shift;
+ my $stats = shift;
+ my ($r_hit_list, $r_trnact, $from, $to, $sense_strand, $iso_type, $score) = @_;
+ my ($i);
+
+ foreach $i (0..(scalar(@$r_hit_list) - 1)) {
+
+ if ($sense_strand) {
+ if (($r_hit_list->[$i]{sen_strand} == 1) &&
+ (&seg_overlap($from, $to, $r_hit_list->[$i]{start}, $r_hit_list->[$i]{end})))
+ {
+ $r_hit_list->[$i]{start} = &min($from, $r_hit_list->[$i]{start});
+ $r_hit_list->[$i]{end} = &max($to, $r_hit_list->[$i]{end});
+ $r_hit_list->[$i]{source} = $r_hit_list->[$i]{source} | $self->{eufind_mask};
+ $r_hit_list->[$i]{type} = $iso_type;
+ $r_hit_list->[$i]{score} = $score;
+
+ # check to see if extended endpoint overlaps
+ # i+1 hit's start boundary
+ # if so, combine hit[i] and hit[i+1] into one
+ # hit and delete hit[i+1]
+ if (($i != (scalar(@$r_hit_list) - 1)) && ($r_hit_list->[$i+1]{sen_strand})
+ && ($r_hit_list->[$i]{end} >= $r_hit_list->[$i+1]{start}))
+ {
+ $r_hit_list->[$i]{end} = &max($r_hit_list->[$i]{end}, $r_hit_list->[$i+1]{end});
+ $r_hit_list->[$i]{source} = $r_hit_list->[$i]{source} | $r_hit_list->[$i+1]{source};
+
+ splice(@$r_hit_list,$i+1,1); # toss out overlapping hit
+ $$r_trnact--;
+ $stats->decrement_trnatotal();
+ }
+ return 1; # exit loop immediately
+ }
+ }
+ else # else (antisense) strand
+ {
+ if (($r_hit_list->[$i]{sen_strand} == 0) &&
+ (&seg_overlap($to,$from,$r_hit_list->[$i]{end}, $r_hit_list->[$i]{start})))
+ {
+ $r_hit_list->[$i]{start} = &max($from, $r_hit_list->[$i]{start});
+ $r_hit_list->[$i]{end} = &min($to, $r_hit_list->[$i]{end});
+ $r_hit_list->[$i]{source} = $r_hit_list->[$i]{source} | $self->{eufind_mask};
+ $r_hit_list->[$i]{type} = $iso_type;
+ $r_hit_list->[$i]{score} = $score;
+
+ if (($i != (scalar(@$r_hit_list) - 1)) &&
+ ($r_hit_list->[$i]{end} <= $r_hit_list->[$i+1]{start}))
+ {
+ $r_hit_list->[$i]{end} = &min($r_hit_list->[$i]{end}, $r_hit_list->[$i+1]{end});
+ $r_hit_list->[$i]{source} = $r_hit_list->[$i]{source} | $r_hit_list->[$i+1]{source};
+
+ splice(@$r_hit_list,$i+1,1); # toss out overlapping hit
+ $$r_trnact--;
+ $stats->decrement_trnatotal();
+ }
+ return 1; # exit loop immediately
+ }
+ } # else (antisense) strand
+
+ } # for each (hit)
+
+ return 0; # current hit is not a repeat
+}
+1;
diff --git a/tRNAscanSE/GeneticCode.pm b/tRNAscanSE/GeneticCode.pm
new file mode 100644
index 0000000..4ae1106
--- /dev/null
+++ b/tRNAscanSE/GeneticCode.pm
@@ -0,0 +1,291 @@
+# tRNAscanSE/GeneticCode.pm
+# This class describes the genetic codes used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::GeneticCode;
+
+use strict;
+use tRNAscanSE::Utils;
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY {
+ my $self = shift;
+}
+
+sub initialize {
+ my $self = shift;
+
+ $self->{undef_anticodon} = "???";
+ $self->{undef_isotype} = "Undet";
+
+ my @isotypes = ('Ala', 'Gly', 'Pro', 'Thr', 'Val',
+ 'Ser', 'Arg', 'Leu',
+ 'Phe','Asn', 'Lys', 'Asp', 'Glu', 'His', 'Gln',
+ 'Ile', 'Met', 'Tyr', 'Supres', 'Cys', 'Trp', 'SelCys');
+ $self->{isotypes} = \@isotypes;
+
+ # Amino acid -> Anti-codon list for printing out global tRNA summary
+
+ my %ac_list = (
+ 'Ala' => [qw/AGC GGC CGC TGC/],
+ 'Gly' => [qw/ACC GCC CCC TCC/],
+ 'Pro' => [qw/AGG GGG CGG TGG/],
+ 'Thr' => [qw/AGT GGT CGT TGT/],
+ 'Val' => [qw/AAC GAC CAC TAC/],
+
+ 'Ser' => [qw/AGA GGA CGA TGA ACT GCT/],
+ 'Arg' => [qw/ACG GCG CCG TCG CCT TCT/],
+ 'Leu' => [qw/AAG GAG CAG TAG CAA TAA/],
+
+ 'Phe' => [qw/AAA GAA     /],
+
+ 'Asn' => [qw/ATT GTT     /],
+ 'Lys' => [qw/    CTT TTT/],
+
+ 'Asp' => [qw/ATC GTC     /],
+ 'Glu' => [qw/    CTC TTC/],
+
+ 'His' => [qw/ATG GTG     /],
+ 'Gln' => [qw/    CTG TTG/],
+
+ 'Tyr' => [qw/ATA GTA     /],
+ 'Supres' => [qw/    CTA TTA/],
+
+ 'Ile' => [qw/AAT GAT   TAT/],
+ 'Met' => [qw/    CAT  /],
+
+ 'Cys' => [qw/ACA GCA     /],
+ 'Trp' => [qw/    CCA  /],
+ 'SelCys' => [qw/      TCA/]
+ );
+ $self->{ac_list} = \%ac_list;
+
+ $self->{trans_map} = +{};
+ $self->{one_let_trans_map} = +{};
+}
+
+sub undef_anticodon
+{
+ my $self = shift;
+ return $self->{undef_anticodon};
+}
+
+sub undef_isotype
+{
+ my $self = shift;
+ return $self->{undef_isotype};
+}
+
+sub isotypes
+{
+ my $self = shift;
+ return $self->{isotypes};
+}
+
+sub ac_list
+{
+ my $self = shift;
+ return $self->{ac_list};
+}
+
+sub one_let_trans_map
+{
+ my $self = shift;
+ return $self->{one_let_trans_map};
+}
+
+sub read_transl_table {
+
+ my $self = shift;
+ my $opts = shift;
+ my $alt_gcode = $opts->alt_gcode();
+ my $gc_file = $opts->gc_file();
+
+ my %ambig_trans_map = ();
+ my %alt_trans_map = ();
+ my ($acodon, @expanded_set, $expanded_ac, $gc_file_path);
+
+ # Read in default genetic code table (may contain ambiguous bases) at
+ # end of this source file
+
+ while (<DATA>) {
+ if ((/^[^\#]/) &&
+ (/^([ACGTUNRYSWMKBDHV]{3,3})\s+(\S+)\s+(\S)/i)) {
+ $acodon = uc($1);
+ $ambig_trans_map{&rev_comp_seq($acodon)} = $2;
+ $self->{one_let_trans_map}->{$2} = $3;
+ }
+ }
+
+ $self->{one_let_trans_map}->{$self->{undef_isotype}} = "?";
+ $self->{one_let_trans_map}->{"SeC(p)"} = "Z";
+ $self->{one_let_trans_map}->{"SeC(e)"} = "Z";
+
+ # Convert any ambiguous bases to make all non-ambigous codons
+ # and save translated amino acid
+
+ @expanded_set = ();
+ foreach $acodon (sort keys(%ambig_trans_map)) {
+ push(@expanded_set, &expand_ambig($acodon));
+ foreach $expanded_ac (@expanded_set) {
+ $self->{trans_map}->{$expanded_ac} = $ambig_trans_map{$acodon};
+ }
+ @expanded_set = ();
+ }
+
+ if ($alt_gcode) {
+
+ if (-r $gc_file) {
+ $gc_file_path = $gc_file;
+ }
+ elsif (-r "/usr/local/lib/tRNAscanSE/".$gc_file) {
+ $gc_file_path = "/usr/local/lib/tRNAscanSE/".$gc_file;
+ }
+ else {
+ die "FATAL: Could not find $gc_file translation codon file\n\n";
+ }
+
+ open (GC_TABLE, "$gc_file_path") ||
+ die "FATAL: Could not find $gc_file translation codon file\n\n";
+
+ # Read in genetic code table (may contain ambiguous bases)
+
+ while (<GC_TABLE>) {
+ if ((/^[^\#]/)
+ && (/^([ACGTUNRYSWMKBDHV]{3,3})\s+(\S+)\s+(\S)/i)) {
+ $acodon = uc($1);
+ $alt_trans_map{&rev_comp_seq($acodon)} = $2;
+ $self->{one_let_trans_map}->{$2} = $3;
+ }
+ }
+ close GC_TABLE;
+
+ # Convert any ambiguous bases to make all non-ambigous codons
+ # and save translated amino acid
+
+ @expanded_set = ();
+ foreach $acodon (sort keys(%alt_trans_map)) {
+ push(@expanded_set, &expand_ambig($acodon));
+ foreach $expanded_ac (@expanded_set) {
+ $self->{trans_map}->{$expanded_ac} = $alt_trans_map{$acodon};
+ }
+ @expanded_set = ();
+ }
+ }
+}
+
+sub get_tRNA_type {
+
+ my $self = shift;
+ my $cm = shift;
+ my $ac = shift; # anticodon to be decoded
+ my $cm_file = shift;
+
+ my $Pselc_cm_file_path = $cm->Pselc_cm_file_path();
+ my $Eselc_cm_file_path = $cm->Eselc_cm_file_path();
+
+ my ($prev_type,$type);
+
+ if ($ac eq $self->{undef_anticodon}) {
+ return $self->{undef_isotype};
+ }
+ elsif ($cm_file eq $Pselc_cm_file_path) {
+ return 'SeC(p)';
+ }
+ elsif ($cm_file eq $Eselc_cm_file_path) {
+ return 'SeC(e)';
+ }
+ else {
+ $prev_type = 'INIT';
+ foreach my $exp_codon (&expand_ambig($ac)) {
+ $type = $self->{trans_map}->{$exp_codon};
+ if (($type ne $prev_type) && ($prev_type ne 'INIT')) {
+ return $self->{undef_isotype};
+ }
+ $prev_type = $type;
+ }
+ return $type;
+ }
+}
+
+sub expand_ambig {
+
+ my ($ac) = @_;
+
+ $ac = " ".$ac." ";
+
+ while (index($ac, 'N') != -1) {
+ $ac =~ s/(.*)\s(\S*)N(\S*)\s(.*)/$1 $2A$3 $2C$3 $2G$3 $2T$3 $4/g;
+ }
+ &expand2(\$ac, 'Y', 'C', 'T'); &expand2(\$ac, 'R', 'A', 'G');
+ &expand2(\$ac, 'W', 'A', 'T'); &expand2(\$ac, 'S', 'C', 'G');
+ &expand2(\$ac, 'M', 'A', 'C'); &expand2(\$ac, 'K', 'G', 'T');
+
+ &expand3(\$ac, 'V', 'A', 'C', 'G'); &expand3(\$ac, 'B', 'C', 'G', 'T');
+ &expand3(\$ac, 'H', 'A', 'C', 'T'); &expand3(\$ac, 'D', 'A', 'G', 'T');
+
+ $ac = substr($ac, 1);
+ return (split(/ /, $ac));
+}
+
+sub expand2 {
+
+ my ($acodon, $ambig_base, $sub1, $sub2) = @_;
+
+ while (index($$acodon, $ambig_base) != -1) {
+ $$acodon =~ s/(.*)\s(\S*)$ambig_base(\S*)\s(.*)/$1 $2$sub1$3 $2$sub2$3 $4/g;
+ }
+}
+
+sub expand3 {
+
+ my($acodon, $ambig_base, $sub1, $sub2, $sub3) = @_;
+
+ while (index($$acodon, $ambig_base) != -1) {
+ $$acodon =~ s/(.*)\s(\S*)$ambig_base(\S*)\s(.*)/$1 $2$sub1$3 $2$sub2$3 $2$sub3$3 $4/g;
+ }
+}
+
+1;
+
+__DATA__
+GCN Ala A
+TGY Cys C
+GAY Asp D
+GAR Glu E
+TTY Phe F
+GGN Gly G
+CAY His H
+ATH Ile I
+AAR Lys K
+TTR Leu L
+CTN Leu L
+ATG Met M
+AAY Asn N
+CCN Pro P
+CAR Gln Q
+AGR Arg R
+CGN Arg R
+AGY Ser S
+TCN Ser S
+ACN Thr T
+GTN Val V
+TGG Trp W
+TAY Tyr Y
+TAR Sup ?
+TGA SeC Z
+
diff --git a/tRNAscanSE/LogFile.pm b/tRNAscanSE/LogFile.pm
new file mode 100644
index 0000000..098c4e8
--- /dev/null
+++ b/tRNAscanSE/LogFile.pm
@@ -0,0 +1,87 @@
+# tRNAscanSE/LogFile.pm
+# This class defines the log file used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::LogFile;
+
+use strict;
+use tRNAscanSE::Utils;
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY
+{
+ my $self = shift;
+}
+
+sub initialize
+{
+ my $self = shift;
+ $self->{file_name} = ""; # name of log file
+ $self->{FILE_H} = undef; # file handle
+}
+
+sub file_name
+{
+ my $self = shift;
+ if (@_) { $self->{file_name} = shift; }
+ return $self->{file_name};
+}
+
+sub open_file
+{
+ my $self = shift;
+ my $file = shift;
+
+ my $success = 0;
+
+ if (($file eq "-") || ($file eq "/dev/null"))
+ {
+ $success = open($self->{FILE_H}, ">$file");
+ $self->{file_name} = $file;
+ }
+ else
+ {
+ &open_for_write(\$self->{FILE_H}, $file);
+ select($self->{FILE_H});
+ $|=1;
+ $self->{file_name} = $file;
+ $success = 1;
+ }
+ return $success;
+}
+
+sub close_file
+{
+ my $self = shift;
+
+ if (defined $self->{FILE_H})
+ {
+ close($self->{FILE_H});
+ }
+}
+
+sub write_line
+{
+ my $self = shift;
+ my $line = shift;
+
+ my $fh = $self->{FILE_H};
+
+ print $fh $line . "\n";
+}
+
+1;
diff --git a/tRNAscanSE/Options.pm b/tRNAscanSE/Options.pm
new file mode 100644
index 0000000..ddaec8b
--- /dev/null
+++ b/tRNAscanSE/Options.pm
@@ -0,0 +1,668 @@
+# tRNAscanSE/Options.pm
+# This class defines options used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::Options;
+
+use strict;
+use tRNAscanSE::Utils;
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY
+{
+ my $self = shift;
+}
+
+sub initialize
+{
+ my $self = shift;
+ $self->{fafile} = "";
+ $self->{fasta_file} = ""; # input sequence file
+ $self->{multiple_files} = 0; # multiple input sequence files
+ $self->{out_file} = "-"; # output result file -- send to
+ # stdout ("-") by default
+
+ $self->{results_to_stdout} = 1; # send results to stdout by default
+
+ $self->{ace_output} = 0; # output in ACeDB format if non-zero
+ $self->{brief_output} = 0; # don't print tabular output column headers
+ # if non-zero
+ $self->{quiet_mode} = 0; # don't print credits & selected run options
+ # if non-zero
+ $self->{display_progress} = 0; # print program progress info if non-zero
+ $self->{save_progress} = 0; # save progress to log file if non-zero
+ $self->{log_file} = ""; # name of log file
+
+ $self->{seq_key} = ""; # require seq names to match this key
+ $self->{raw_seq_key} = ""; # unmodified user-input key
+ $self->{start_at_key} = 0; # read all seqs after finding seqname=KEY?
+
+ $self->{tscan_mode} = 1; # run tRNAscan if non-zero
+ $self->{eufind_mode} = 1; # run eufindtRNA (pavesi) if non-zero
+ $self->{strict_params} = 1; # use original strict tRNAscan params
+ # if non-zero
+
+ $self->{CM_mode} = "cove"; # run covariance model search
+ # cove - run Cove if non-zero
+ # infernal - run Infernal if non-zero
+ # run Infernal by default
+
+ $self->{second_pass_label} = "Cove"; # Second scan pass label: Cove by default
+
+ $self->{search_mode} = ""; # tRNA search mode when running Cove or cmsearch
+ # bacteria - run covariance model for bacteria if set
+ # archaea - run archaea cov model if set
+ # general - run general cov models (combines tRNAs from all 3 domains)
+
+ $self->{org_mode} = 0; # run in organellar mode
+ # run eukaryotic model by default
+
+ $self->{alt_gcode} = 0; # use alternate genetic translation table
+ # file if non-zero
+ $self->{gc_file} = ""; # alternate transl table file
+
+ $self->{save_stats} = 0; # save statistics for search
+ $self->{stats_file} = "";
+
+ $self->{save_odd_struct} = 0; # save structures for which Cove
+ # was unable to determine anticodon
+ $self->{odd_struct_file} = "";
+
+ $self->{save_all_struct} = 0; # save secondary structures if nonzero
+ $self->{all_struct_file} = ""; # sec struct file, set with -f option
+
+ $self->{split_fragment_file} = ""; # split fragment file, set with --split option
+
+ $self->{save_verbose} = 0; # save verbose output from tRNAscan
+ $self->{verb_file} = "";
+
+ $self->{save_firstpass_res} = 0; # save tabular tRNAscan results
+ $self->{firstpass_result_file} = "";
+
+ $self->{use_prev_ts_run} = 0; # specify result file from previous
+ # tRNA search for Cove-confirmation
+
+ $self->{default_Padding} = 8;
+ $self->{padding} = $self->{default_Padding}; # pad both ends of first-pass hits with this
+ # many extra bases before passing to Cove
+
+ $self->{save_falsepos} = 0; # save false positive tRNAs in
+ # fasta file
+ $self->{falsepos_file} = "";
+
+ $self->{save_missed} = 0; # save seqs without a hit
+ $self->{missed_seq_file} = "";
+
+ $self->{save_source} = 0; # save source of first-pass hit
+
+ $self->{output_codon} = 0; # output tRNA codon instead of anticodon
+ # (off by default)
+
+# $self->{use_orig_cm} = 0; # use original covariance model that
+# # contains tRNAS from all three domains
+
+ $self->{def_max_int_len} = 200; # default MAX intron+variable loop region size
+ # used in EufindtRNA
+
+ $self->{max_int_len} = $self->{def_max_int_len};
+
+ $self->{prompt_for_overwrite} = 1; # prompt user before overwriting a pre-existing
+ # output file, disabled with -Q option
+}
+
+sub fafile
+{
+ my $self = shift;
+ if (@_) { $self->{fafile} = shift; }
+ return $self->{fafile};
+}
+
+sub fasta_file
+{
+ my $self = shift;
+ if (@_) { $self->{fasta_file} = shift; }
+ return $self->{fasta_file};
+}
+
+sub multiple_files
+{
+ my $self = shift;
+ if (@_) { $self->{multiple_files} = shift; }
+ return $self->{multiple_files};
+}
+
+sub out_file
+{
+ my $self = shift;
+ if (@_) { $self->{out_file} = shift; }
+ return $self->{out_file};
+}
+
+sub results_to_stdout
+{
+ my $self = shift;
+ if (@_) { $self->{results_to_stdout} = shift; }
+ return $self->{results_to_stdout};
+}
+
+sub ace_output
+{
+ my $self = shift;
+ if (@_) { $self->{ace_output} = shift; }
+ return $self->{ace_output};
+}
+
+sub brief_output
+{
+ my $self = shift;
+ if (@_) { $self->{brief_output} = shift; }
+ return $self->{brief_output};
+}
+
+sub quiet_mode
+{
+ my $self = shift;
+ if (@_) { $self->{quiet_mode} = shift; }
+ return $self->{quiet_mode};
+}
+
+sub display_progress
+{
+ my $self = shift;
+ if (@_) { $self->{display_progress} = shift; }
+ return $self->{display_progress};
+}
+
+sub save_progress
+{
+ my $self = shift;
+ if (@_) { $self->{save_progress} = shift; }
+ return $self->{save_progress};
+}
+
+sub log_file
+{
+ my $self = shift;
+ if (@_) { $self->{log_file} = shift; }
+ return $self->{log_file};
+}
+
+sub seq_key
+{
+ my $self = shift;
+ if (@_) { $self->{seq_key} = shift; }
+ return $self->{seq_key};
+}
+
+sub raw_seq_key
+{
+ my $self = shift;
+ if (@_) { $self->{raw_seq_key} = shift; }
+ return $self->{raw_seq_key};
+}
+
+sub start_at_key
+{
+ my $self = shift;
+ if (@_) { $self->{start_at_key} = shift; }
+ return $self->{start_at_key};
+}
+
+sub tscan_mode
+{
+ my $self = shift;
+ if (@_) { $self->{tscan_mode} = shift; }
+ return $self->{tscan_mode};
+}
+
+sub eufind_mode
+{
+ my $self = shift;
+ if (@_) { $self->{eufind_mode} = shift; }
+ return $self->{eufind_mode};
+}
+
+sub strict_params
+{
+ my $self = shift;
+ if (@_) { $self->{strict_params} = shift; }
+ return $self->{strict_params};
+}
+
+sub CM_mode
+{
+ my $self = shift;
+ if (@_) { $self->{CM_mode} = shift; }
+ return $self->{CM_mode};
+}
+
+sub cove_mode
+{
+ my $self = shift;
+ return ($self->{CM_mode} eq 'cove');
+}
+
+sub infernal_mode
+{
+ my $self = shift;
+ return ($self->{CM_mode} eq 'infernal');
+}
+
+sub second_pass_label
+{
+ my $self = shift;
+ if (@_) { $self->{second_pass_label} = shift; }
+ return $self->{second_pass_label};
+}
+
+sub search_mode
+{
+ my $self = shift;
+ if (@_) { $self->{search_mode} = shift; }
+ return $self->{search_mode};
+}
+
+sub bact_mode
+{
+ my $self = shift;
+ return ($self->{search_mode} eq 'bacteria');
+}
+
+sub arch_mode
+{
+ my $self = shift;
+ return ($self->{search_mode} eq 'archaea');
+}
+
+sub general_mode
+{
+ my $self = shift;
+ return ($self->{search_mode} eq 'general');
+}
+
+sub org_mode
+{
+ my $self = shift;
+ if (@_) { $self->{org_mode} = shift; }
+ return $self->{org_mode};
+}
+
+sub alt_gcode
+{
+ my $self = shift;
+ if (@_) { $self->{alt_gcode} = shift; }
+ return $self->{alt_gcode};
+}
+
+sub gc_file
+{
+ my $self = shift;
+ if (@_) { $self->{gc_file} = shift; }
+ return $self->{gc_file};
+}
+
+sub save_stats
+{
+ my $self = shift;
+ if (@_) { $self->{save_stats} = shift; }
+ return $self->{save_stats};
+}
+
+sub stats_file
+{
+ my $self = shift;
+ if (@_) { $self->{stats_file} = shift; }
+ return $self->{stats_file};
+}
+
+sub save_odd_struct
+{
+ my $self = shift;
+ if (@_) { $self->{save_odd_struct} = shift; }
+ return $self->{save_odd_struct};
+}
+
+sub odd_struct_file
+{
+ my $self = shift;
+ if (@_) { $self->{odd_struct_file} = shift; }
+ return $self->{odd_struct_file};
+}
+
+sub save_all_struct
+{
+ my $self = shift;
+ if (@_) { $self->{save_all_struct} = shift; }
+ return $self->{save_all_struct};
+}
+
+sub all_struct_file
+{
+ my $self = shift;
+ if (@_) { $self->{all_struct_file} = shift; }
+ return $self->{all_struct_file};
+}
+
+sub split_fragment_file
+{
+ my $self = shift;
+ if (@_) { $self->{split_fragment_file} = shift; }
+ return $self->{split_fragment_file};
+}
+
+sub save_verbose
+{
+ my $self = shift;
+ if (@_) { $self->{save_verbose} = shift; }
+ return $self->{save_verbose};
+}
+
+sub verb_file
+{
+ my $self = shift;
+ if (@_) { $self->{verb_file} = shift; }
+ return $self->{verb_file};
+}
+
+sub save_firstpass_res
+{
+ my $self = shift;
+ if (@_) { $self->{save_firstpass_res} = shift; }
+ return $self->{save_firstpass_res};
+}
+
+sub firstpass_result_file
+{
+ my $self = shift;
+ if (@_) { $self->{firstpass_result_file} = shift; }
+ return $self->{firstpass_result_file};
+}
+
+sub use_prev_ts_run
+{
+ my $self = shift;
+ if (@_) { $self->{use_prev_ts_run} = shift; }
+ return $self->{use_prev_ts_run};
+}
+
+sub default_Padding
+{
+ my $self = shift;
+ if (@_) { $self->{default_Padding} = shift; }
+ return $self->{default_Padding};
+}
+
+sub padding
+{
+ my $self = shift;
+ if (@_) { $self->{padding} = shift; }
+ return $self->{padding};
+}
+
+sub save_falsepos
+{
+ my $self = shift;
+ if (@_) { $self->{save_falsepos} = shift; }
+ return $self->{save_falsepos};
+}
+
+sub falsepos_file
+{
+ my $self = shift;
+ if (@_) { $self->{falsepos_file} = shift; }
+ return $self->{falsepos_file};
+}
+
+sub save_missed
+{
+ my $self = shift;
+ if (@_) { $self->{save_missed} = shift; }
+ return $self->{save_missed};
+}
+
+sub missed_seq_file
+{
+ my $self = shift;
+ if (@_) { $self->{missed_seq_file} = shift; }
+ return $self->{missed_seq_file};
+}
+
+sub save_source
+{
+ my $self = shift;
+ if (@_) { $self->{save_source} = shift; }
+ return $self->{save_source};
+}
+
+sub output_codon
+{
+ my $self = shift;
+ if (@_) { $self->{output_codon} = shift; }
+ return $self->{output_codon};
+}
+
+sub def_max_int_len
+{
+ my $self = shift;
+ if (@_) { $self->{def_max_int_len} = shift; }
+ return $self->{def_max_int_len};
+}
+
+sub max_int_len
+{
+ my $self = shift;
+ if (@_) { $self->{max_int_len} = shift; }
+ return $self->{max_int_len};
+}
+
+sub prompt_for_overwrite
+{
+ my $self = shift;
+ if (@_) { $self->{prompt_for_overwrite} = shift; }
+ return $self->{prompt_for_overwrite};
+}
+
+sub temp_dir
+{
+ my $self = shift;
+ if (@_) { $self->{temp_dir} = shift; }
+ return $self->{temp_dir};
+}
+
+sub display_run_options {
+
+ my $self = shift;
+ my $cm = shift;
+ my $tscan = shift;
+ my $eufind = shift;
+ my ($FHAND) = shift;
+
+ print $FHAND ('-' x 60,"\n",
+ "Sequence file(s) to search: ",join(', ', at ARGV),"\n");
+ if ($self->{seq_key} ne '\S*') {
+ if ($self->{start_at_key}) {
+ print $FHAND "Starting at sequence name: $self->{raw_seq_key}\n" }
+ else {
+ print $FHAND "Search only names matching: $self->{raw_seq_key}\n" }
+ }
+
+ print $FHAND "Search Mode: ";
+ if ($self->bact_mode()) {
+ print $FHAND "Bacterial\n";
+ }
+ elsif ($self->arch_mode()) {
+ print $FHAND "Archaeal\n";
+ }
+ elsif ($self->{org_mode}) {
+ print $FHAND "Organellar\n";
+ }
+ elsif ($self->general_mode()) {
+ print $FHAND "General\n";
+ }
+ else {
+ print $FHAND "Eukaryotic\n";
+ }
+
+ print $FHAND "Results written to: ",
+ &print_filename($self->{out_file}),"\n";
+
+ print $FHAND "Output format: ";
+ if ($self->{ace_output}) {
+ print $FHAND "ACeDB\n"; }
+ else {
+ print $FHAND "Tabular\n"; }
+
+ print $FHAND "Searching with: ";
+ if ($self->{eufind_mode}) {
+ if ($self->{tscan_mode}) {
+ if ($self->{CM_mode} =~ /infernal|cove/) {
+ print $FHAND "tRNAscan + EufindtRNA -> $self->{second_pass_label}\n"; }
+ else {
+ print $FHAND "tRNAscan + EufindtRNA (no $self->{second_pass_label})\n"; }
+ }
+ elsif ($self->{CM_mode} =~ /infernal|cove/) {
+ print $FHAND "EufindtRNA->$self->{second_pass_label}\n"; }
+ else {
+ print $FHAND "EufindtRNA only\n"; }
+ }
+ elsif ($self->{tscan_mode}) {
+ if ($self->{CM_mode} =~ /infernal|cove/) {
+ print $FHAND "tRNAscan->$self->{second_pass_label}\n"; }
+ else {
+ print $FHAND "tRNAscan only\n"; }
+ }
+ else {
+ print $FHAND "$self->{second_pass_label} only\n";
+ }
+
+ if ($cm->CM_check_for_introns()) {
+ print $FHAND "Scan for noncanonical introns\n";
+ }
+ if ($cm->CM_check_for_split_halves()) {
+ print $FHAND "Scan for fragments of split tRNAs\n";
+ }
+
+ if ($cm->alt_cm_file() eq '') {
+ print $FHAND "Covariance model: ".$cm->main_cm_file()."\n";
+ }
+ else {
+ print $FHAND "Use alt. covariance model: ".$cm->alt_cm_file()."\n";
+ }
+
+ if ($cm->cm_cutoff() != 20.0) {
+ print $FHAND "tRNA Cove cutoff score: ".$cm->cm_cutoff()."\n";
+ }
+
+ if ($self->{use_prev_ts_run}) {
+ print $FHAND "Using previous\n",
+ "tabular output file: $self->{firstpass_result_file}\n";
+ }
+
+ if ($tscan->tscan_version() != 1.4) {
+ print $FHAND "Alternate tRNAscan version: ".$tscan->tscan_version()."\n";
+ }
+
+ if ($self->{tscan_mode}) {
+ print $FHAND "tRNAscan parameters: ";
+ if ($self->{strict_params}) {
+ print $FHAND "Strict\n"; }
+ else {
+ print $FHAND "Relaxed\n"; }
+ }
+
+ if ($self->{eufind_mode}) {
+ print $FHAND "EufindtRNA parameters: ";
+ if ($eufind->eufind_params() eq "-r") {
+ print $FHAND "Relaxed (Int Cutoff= ".$eufind->eufind_intscore().")\n"; }
+ elsif ($eufind->eufind_params() eq "") {
+ print $FHAND "Normal\n"; }
+ elsif ($eufind->eufind_params() eq "-s") {
+ print $FHAND "Strict\n"; }
+ else {
+ print $FHAND "?\n"; }
+ }
+
+ if ($self->{padding} != $self->{default_Padding}) {
+ print $FHAND "First-pass tRNA hit padding: $self->{padding} bp\n";
+ }
+
+ if ($self->{alt_gcode}) {
+ print $FHAND "Alternate transl code used: ",
+ "from file $self->{gc_file}\n";
+ }
+
+ if ($self->{save_all_struct}) {
+ print $FHAND "tRNA secondary structure\n",
+ " predictions saved to: ";
+ if ($self->{all_struct_file} eq "-") {
+ print $FHAND "Standard output\n";
+ }
+ else {
+ print $FHAND "$self->{all_struct_file}\n";
+ }
+ }
+ if ($self->{split_fragment_file} ne "") {
+ print $FHAND "split tRNA fragment\n",
+ " predictions saved to: ";
+ if ($self->{split_fragment_file} eq "-") {
+ print $FHAND "Standard output\n";
+ }
+ else {
+ print $FHAND "$self->{split_fragment_file}\n";
+ }
+ }
+ if ($self->{save_odd_struct}) {
+ print $FHAND "Sec structures for tRNAs\n",
+ " with no anticodon predictn: $self->{odd_struct_file}\n";
+ }
+ if ($self->{save_firstpass_res}) {
+ print $FHAND "First-pass results saved i: ",
+ "$self->{firstpass_result_file}\n";
+ }
+ if ($self-{save_progress}) {
+ print $FHAND "Search log saved in: $self->{log_file}\n";
+ }
+ if ($self->{save_stats}) {
+ print $FHAND "Search statistics saved in: $self->{stats_file}\n";
+ }
+ if ($self->{save_falsepos}) {
+ print $FHAND "False positives saved in: $self->{falsepos_file}\n";
+ }
+ if ($self->{save_missed}) {
+ print $FHAND "Seqs with 0 hits saved in: $self->{missed_seq_file}\n";
+ }
+ if ($cm->skip_pseudo_filter() | $cm->get_hmm_score() | $tscan->keep_tscan_repeats()) {
+ print $FHAND "\n";
+ }
+ if ($self->{max_int_len} != $self->{def_max_int_len}) {
+ print $FHAND "Max intron + var. length: $self->{max_int_len}\n";
+ }
+ if ($cm->skip_pseudo_filter()) {
+ print $FHAND "Pseudogene checking disabled\n";
+ }
+ if ($cm->get_hmm_score()) {
+ print $FHAND "Reporting HMM/2' structure score breakdown\n";
+ }
+ if ($tscan->keep_tscan_repeats()) {
+ print $FHAND "Redundant tRNAscan hits not merged\n";
+ }
+
+ print $FHAND ('-' x 60,"\n\n");
+}
+
+1;
+
diff --git a/tRNAscanSE/SS.pm b/tRNAscanSE/SS.pm
new file mode 100644
index 0000000..00159e9
--- /dev/null
+++ b/tRNAscanSE/SS.pm
@@ -0,0 +1,197 @@
+# tRNAscanSE/SS.pm
+# This class contains parameters and functions for secondary structure parsing used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia P. Chan & Todd M. Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::SS;
+
+use strict;
+use tRNAscanSE::Utils;
+
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(valid_structure get_acceptor_half);
+
+sub valid_structure {
+
+ my ($ss, $canonical_intron_len) = @_;
+ my $stem_index = 0;
+
+ my %valid = ();
+ $valid{tRNA} = 1;
+ $valid{acceptor} = 1;
+ $valid{darm} = 1;
+ $valid{anticodon} = 1;
+ $valid{variable} = 1;
+ $valid{tstem} = 1;
+
+ my $total_mismatches = 0;
+
+ my ($r_stems, $r_mismatches) = &get_stems($ss);
+
+ for ($stem_index = 0; $stem_index < scalar(@$r_mismatches); $stem_index++) {
+ $total_mismatches += $r_mismatches->[$stem_index];
+ }
+ if (($total_mismatches > 1) || (scalar(@$r_stems) < 4) || (scalar(@$r_stems) > 5)) {
+ $valid{tRNA} = 0;
+ }
+
+ if (scalar(@$r_stems) == 5) {
+ $valid{acceptor} = 0 if (($r_mismatches->[0] > 1) || (&get_stem_length($r_stems->[0]) != 7));
+ $valid{darm} = 0 if (($r_mismatches->[1] > 1) || (&get_stem_length($r_stems->[1]) < 3));
+ $valid{anticodon} = 0 if (($r_mismatches->[2] > 1) || (&get_stem_length($r_stems->[2]) != 5));
+ $valid{variable} = 0 if (($r_mismatches->[3] > 1) || (&get_stem_length($r_stems->[3]) < 2));
+ $valid{tstem} = 0 if (($r_mismatches->[4] > 1) || (&get_stem_length($r_stems->[4]) != 5));
+ $valid{tRNA} = $valid{acceptor} && $valid{darm} && $valid{anticodon} && $valid{variable} &&
+ $valid{tstem} && (length($ss) - $canonical_intron_len <= 90);
+ }
+ elsif (scalar(@$r_stems) == 4) {
+ $valid{variable} = 0;
+ $valid{acceptor} = 0 if (($r_mismatches->[0] > 1) || (&get_stem_length($r_stems->[0]) != 7));
+ $valid{darm} = 0 if (($r_mismatches->[1] > 1) || (&get_stem_length($r_stems->[1]) < 3));
+ $valid{anticodon} = 0 if (($r_mismatches->[2] > 1) || (&get_stem_length($r_stems->[2]) != 5));
+ $valid{tstem} = 0 if (($r_mismatches->[3] > 1) || (&get_stem_length($r_stems->[3]) != 5));
+ $valid{tRNA} = $valid{acceptor} && $valid{darm} && $valid{anticodon} && $valid{tstem} && (length($ss) - $canonical_intron_len <= 80);
+ }
+ elsif (scalar(@$r_stems) == 3) {
+ $valid{variable} = 0;
+ $valid{acceptor} = 0 if (($r_mismatches->[0] > 1) || (&get_stem_length($r_stems->[0]) != 7));
+ if ($r_mismatches->[1] == 0) {
+ $valid{darm} = 0 if (($r_mismatches->[1] > 1) || (&get_stem_length($r_stems->[1]) < 3));
+ $valid{anticodon} = 0 if (($r_mismatches->[2] > 1) || (&get_stem_length($r_stems->[2]) != 5));
+ $valid{tstem} = 0;
+ }
+ elsif ($r_mismatches->[2] == 0) {
+ $valid{darm} = 0;
+ $valid{anticodon} = 0 if (($r_mismatches->[1] > 1) || (&get_stem_length($r_stems->[1]) != 5));
+ $valid{tstem} = 0 if (($r_mismatches->[2] > 1) || (&get_stem_length($r_stems->[2]) != 5));
+ }
+ else {
+ $valid{acceptor} = 0;
+ $valid{darm} = 0;
+ $valid{anticodon} = 0;
+ $valid{variable} = 0;
+ $valid{tstem} = 0;
+ }
+ }
+ else {
+ $valid{acceptor} = 0;
+ $valid{darm} = 0;
+ $valid{anticodon} = 0;
+ $valid{variable} = 0;
+ $valid{tstem} = 0;
+ }
+
+ return \%valid;
+}
+
+sub get_stem_length {
+ my ($r_stem) = @_;
+
+ return ($r_stem->{end_left} - $r_stem->{start_left} + 1);
+}
+
+sub get_stems {
+
+ my ($ss) = @_;
+ my %pairs = ();
+ my @left = ();
+ my @right = ();
+ my @stems = ();
+ my @mismatches = ();
+ my $left_index = -1;
+ my $right_index = -1;
+
+ my $last_right_index = -1;
+ my $start_left_index = -1;
+ my $end_left_index = -1;
+ my $start_right_index = -1;
+ my $end_right_index = -1;
+
+ for (my $pos = 0; $pos < length($ss); $pos++) {
+ if (substr($ss, $pos, 1) eq ">") {
+ push(@left, $pos);
+ $pairs{$#left} = -1;
+ }
+ elsif (substr($ss, $pos, 1) eq "<") {
+ push(@right, $pos);
+ $left_index = scalar(@left) - 1;
+ while (($pairs{$left_index} > -1) && ($left_index > -1)) {
+ $left_index--;
+ }
+ if (($left_index > -1) && ($pairs{$left_index} == -1)) {
+ $pairs{$left_index} = scalar(@right) - 1;
+ }
+ }
+ }
+
+ foreach $left_index (sort { $a <=> $b } keys %pairs) {
+ if ($last_right_index == -1) {
+ $start_left_index = $left_index;
+ $end_right_index = $pairs{$left_index};
+ }
+ elsif ($pairs{$left_index} != ($last_right_index - 1)) {
+ $end_left_index = $left_index - 1;
+ $start_right_index = $last_right_index;
+ push(@stems, {start_left=>$left[$start_left_index], end_left=>$left[$end_left_index],
+ start_right=>$right[$start_right_index], end_right=>$right[$end_right_index]});
+ $start_left_index = $left_index;
+ $end_right_index = $pairs{$left_index};
+ }
+ $last_right_index = $pairs{$left_index};
+ }
+ if ($last_right_index > -1) {
+ $end_left_index = $left_index - 1;
+ $start_right_index = $last_right_index;
+ push(@stems, {start_left=>$left[$start_left_index], end_left=>$left[$end_left_index],
+ start_right=>$right[$start_right_index], end_right=>$right[$end_right_index]});
+ }
+
+ # find mismatches in stems
+ for (my $ct = 0; $ct < scalar(@stems); $ct++) {
+ $mismatches[$ct] = 0;
+ $left_index = $stems[$ct]->{end_left};
+ $right_index = $stems[$ct]->{start_right};
+ while ($left_index >= $stems[$ct]->{start_left} && $right_index <= $stems[$ct]->{end_right}) {
+ if (substr($ss, $left_index, 1) eq ".") {
+ if (substr($ss, $right_index, 1) eq ".") {
+ $mismatches[$ct] += 1;
+ $right_index++;
+ }
+ $left_index--;
+ }
+ elsif (substr($ss, $right_index, 1) eq ".") {
+ $right_index++;
+ }
+ else {
+ $left_index--;
+ $right_index++;
+ }
+ }
+ }
+
+ return (\@stems, \@mismatches);
+}
+
+sub get_acceptor_half {
+ my ($seq, $ss, $half) = @_;
+
+ if ($half eq "5h") {
+ return substr($seq, 0, 7);
+ }
+ elsif ($half eq "3h") {
+ if (substr($ss, length($ss) - 12) eq "<...........") {
+ return substr($seq, length($seq) - 11, 7);
+ }
+ else {
+ return substr($seq, length($seq) - 8, 7);
+ }
+ }
+ else {
+ return "";
+ }
+}
\ No newline at end of file
diff --git a/tRNAscanSE/ScanResult.pm b/tRNAscanSE/ScanResult.pm
new file mode 100644
index 0000000..753703a
--- /dev/null
+++ b/tRNAscanSE/ScanResult.pm
@@ -0,0 +1,657 @@
+# tRNAscanSE/ScanResult.pm
+# This class describes the outputs of scan results used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::ScanResult;
+
+use strict;
+use tRNAscanSE::Utils;
+use tRNAscanSE::Sequence;
+
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(init_fp_result_file save_Acedb_from_firstpass save_firstpass_output
+ prep_for_secpass_only parse_tabular_output write_tRNA output_tRNA output_split_fragments);
+
+our $printed_header = 0; # keeps track of whether or
+ # or not results column header
+ # has been printed yet
+our ($max_seq_name_width, $max_seq_len_width);
+
+sub init_fp_result_file {
+
+ my ($file) = @_;
+
+ &open_for_append(\*FILE_H, $file);
+
+ print FILE_H "Sequence\t\ttRNA Bounds\ttRNA\tAnti\t\n";
+ print FILE_H "Name \ttRNA #\tBegin\tEnd\tType\tCodon\t",
+ "SeqID\tSeqLen\tScore\n";
+ print FILE_H "--------\t------\t-----\t---\t----\t-----\t",
+ "-----\t------\t-----\n";
+
+ close(FILE_H);
+}
+
+sub save_Acedb_from_firstpass {
+
+ my ($output_codon, $r_one_let_trans_map, $r_hit_list, $out_file) = @_;
+ my($i, $triplet);
+
+ &open_for_append(\*FILE_H, $out_file);
+
+ foreach $i (0..(scalar(@$r_hit_list) - 1)) {
+ printf FILE_H "Sequence\t%s\nSubsequence\t%s.t%d %d %d\n\n",
+ $r_hit_list->[$i]{seqname}, $r_hit_list->[$i]{seqname},
+ $i + 1, $r_hit_list->[$i]{start}, $r_hit_list->[$i]{end};
+
+ printf FILE_H "Sequence\t%s.t%d\nSource\t\t%s\n",
+ $r_hit_list->[$i]{seqname}, $i + 1, $r_hit_list->[$i]{seqname};
+ if ($r_hit_list->[$i]{istart} > 0) {
+ if ($r_hit_list->[$i]{istart} < $r_hit_list->[$i]{iend}) {
+ printf FILE_H "Source_Exons\t1 %d\n",
+ $r_hit_list->[$i]{istart} - $r_hit_list->[$i]{start};
+ printf FILE_H "Source_Exons\t%d %d\n",
+ $r_hit_list->[$i]{iend} - $r_hit_list->[$i]{start} + 2,
+ $r_hit_list->[$i]{end} - $r_hit_list->[$i]{start} + 1; }
+ else {
+ printf FILE_H "Source_Exons\t1 %d\n",
+ $r_hit_list->[$i]{start} - $r_hit_list->[$i]{istart} + 1;
+ printf FILE_H "Source_Exons\t%d %d\n",
+ $r_hit_list->[$i]{start} - $r_hit_list->[$i]{iend} + 2,
+ $r_hit_list->[$i]{start} - $r_hit_list->[$i]{end} + 1; }
+ }
+ printf FILE_H "Brief_identification tRNA-%s\n", $r_hit_list->[$i]{type};
+
+ # either output Codon or Anticodon for tRNA
+ $triplet = uc($r_hit_list->[$i]{acodon});
+ if ($output_codon) {
+ $triplet = &rev_comp_seq($triplet);
+ }
+
+ printf FILE_H "Transcript tRNA \"%s %s %s\"\n\n",
+ $triplet, $r_hit_list->[$i]{type}, $r_one_let_trans_map->{$r_hit_list->[$i]{type}};
+
+ }
+ close(FILE_H);
+}
+
+sub print_results_header {
+
+ my ($opts, $get_hmm_score, $seq_name_width, $seq_len_width) = @_;
+ my ($label, $codon_label) = "";
+
+ if ($opts->cove_mode()) {
+ $label = "\tCove";
+ }
+ elsif ($opts->infernal_mode()) {
+ $label = "\tCM";
+ }
+ elsif ($opts->eufind_mode() && !$opts->tscan_mode()) {
+ $label = "\tEufind";
+ }
+
+ if ($opts->output_codon()) {
+ $codon_label = " ";
+ }
+ else {
+ $codon_label = "Anti";
+ }
+
+ if (!($opts->ace_output())) {
+ &open_for_append(\*OUTFILE, $opts->out_file());
+
+ printf OUTFILE "%-".$seq_name_width."s\t\t","Sequence";
+ printf OUTFILE "%-".$seq_len_width."s\t","tRNA";
+ printf OUTFILE "%-".$seq_len_width."s\t","Bounds";
+ print OUTFILE "tRNA\t$codon_label\tIntron Bounds",$label;
+
+ if ($get_hmm_score) {
+ print OUTFILE "\tHMM\t2'Str";
+ }
+ if ($opts->save_source()) {
+ print OUTFILE "\tHit";
+ }
+ if ($opts->search_mode() eq "archaea") {
+ print OUTFILE "\tIntron";
+ }
+ print OUTFILE "\n";
+
+ printf OUTFILE "%-".$seq_name_width."s\t","Name";
+ print OUTFILE "tRNA \#\t";
+ printf OUTFILE "%-".$seq_len_width."s\t","Begin";
+ printf OUTFILE "%-".$seq_len_width."s\t","End";
+
+ print OUTFILE "Type\tCodon\tBegin\tEnd\tScore";
+
+ if ($get_hmm_score) {
+ print OUTFILE "\tScore\tScore";
+ }
+ if ($opts->save_source()) {
+ print OUTFILE "\tOrigin";
+ }
+ if ($opts->search_mode() eq "archaea") {
+ print OUTFILE "\tCount";
+ }
+ print OUTFILE "\n";
+
+ printf OUTFILE "%-".$seq_name_width."s\t","--------";
+ print OUTFILE "------\t";
+ printf OUTFILE "%-".$seq_len_width."s\t","----";
+ printf OUTFILE "%-".$seq_len_width."s\t","------";
+ print OUTFILE "----\t-----\t-----\t----\t------";
+
+ if ($get_hmm_score) {
+ print OUTFILE "\t-----\t-----";
+ }
+ if ($opts->save_source()) {
+ print OUTFILE "\t------";
+ }
+ if ($opts->search_mode() eq "archaea") {
+ print OUTFILE "\t----------";
+ }
+ print OUTFILE "\n";
+ }
+ close OUTFILE;
+}
+
+sub save_firstpass_output {
+
+ my ($opts, $r_hit_list, $r_source_tab, $r_fpass_trna_base_ct, $seq_len, $seq_id) = @_;
+ my ($i, $triplet);
+
+ if (!$opts->CM_mode()) {
+ if (!($opts->brief_output() || $printed_header)) {
+ &print_results_header($opts, 0, 20, 20);
+ $printed_header = 1;
+ }
+ &open_for_append(\*TAB_RESULTS, $opts->out_file());
+ }
+ else {
+ &open_for_append(\*TAB_RESULTS, $opts->firstpass_result_file());
+ }
+
+ foreach $i (0..(scalar(@$r_hit_list) - 1)) {
+
+ $triplet = uc($r_hit_list->[$i]{acodon});
+ if ($opts->output_codon()) {
+ $triplet = &rev_comp_seq($triplet);
+ }
+
+ printf TAB_RESULTS "%-10s\t%d\t%d\t%d\t%s\t%s\t",
+ $r_hit_list->[$i]{seqname}, $i + 1,
+ $r_hit_list->[$i]{start}, $r_hit_list->[$i]{end},
+ $r_hit_list->[$i]{type}, $triplet;
+
+ # save intron bounds if not doing Cove analysis
+
+ if (!$opts->CM_mode()) {
+ printf TAB_RESULTS "%d\t%d\t%.2f", $r_hit_list->[$i]{istart},
+ $r_hit_list->[$i]{iend}, $r_hit_list->[$i]{score};
+ }
+
+ # save seq id number and source seq length if needed for Cove analysis
+
+ else {
+ printf TAB_RESULTS "%d\t%d\t%.2f", $seq_id, $seq_len, $r_hit_list->[$i]{score};
+ }
+
+ if ($opts->save_source()) {
+ print TAB_RESULTS " ", $r_source_tab->[$r_hit_list->[$i]{source}];
+ }
+ print TAB_RESULTS "\n";
+
+ $$r_fpass_trna_base_ct += abs($r_hit_list->[$i]{end} - $r_hit_list->[$i]{start}) + 1;
+ }
+ close TAB_RESULTS;
+}
+
+# Create dummy first-pass result file with all sequences
+sub prep_for_secpass_only {
+
+ my ($opts, $stats, $seq_file) = @_;
+ my ($saved_line, $targ_seq_id);
+
+ $seq_file->open_file($opts->fasta_file(), "read");
+
+ &open_for_append(\*RESFILE, $opts->firstpass_result_file());
+ $saved_line = '';
+ $targ_seq_id = 0; # Don't look for a specific Seq number
+
+ while ($seq_file->read_fasta($opts, $targ_seq_id)) {
+ print (RESFILE $seq_file->seq_name()."\t1\t1\t".$seq_file->seq_length()."\t???\t???\t".$seq_file->seq_id()."\t".$seq_file->seq_length()." C\n");
+ print (RESFILE $seq_file->seq_name()."\t2\t".$seq_file->seq_length()."\t1\t???\t???\t".$seq_file->seq_id()."\t".$seq_file->seq_length()." C\n");
+
+ $stats->increment_numscanned();
+ }
+ close RESFILE;
+ $seq_file->close_file();
+}
+
+# read first pass result file one input sequence at a time,
+# putting results in array @prescan_tRNAs
+
+sub parse_tabular_output {
+
+ my ($opts, $r_prescan_tRNAs, $r_seqinfo_flag) = @_;
+ my $firstpass_result_file = $opts->firstpass_result_file();
+ my $padding = $opts->padding();
+
+ my ($seq_name, $trnact, $trnaName,
+ $ts_start, $ts_end, $ts_len, $sense_strand,
+ $ts_seq_id, $ts_seq_len, $score, $ts_type, $ts_anticodon,
+ $hit_source);
+
+ # open first-pass tabular result file
+ open (FIRSTPASS_TRNAS, "$firstpass_result_file") ||
+ die "FATAL: Can't open first-pass tRNA output file $firstpass_result_file\n\n" ;
+
+ while (<FIRSTPASS_TRNAS>)
+ {
+ if (/Type\tCodon\tSeqID\tSeqLen/) {
+ # Column header present if we record seqID's and lengths
+ $$r_seqinfo_flag = 1;
+ }
+ elsif (/^(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\S+)/o)
+ {
+ $seq_name = $1;
+ $trnact = $2;
+ $trnaName = $seq_name.".t".$trnact;
+ $ts_start = $3; # trna subseq absolute start index
+ $ts_end = $4; # trna subseq absolute end index
+ $ts_type = $5;
+ $ts_anticodon = $6;
+ $ts_seq_id = $7;
+ $ts_seq_len = $8;
+ $score = $9;
+ $hit_source = $';
+ $hit_source =~ s/[\s\t\n]//g;
+
+ # if seqinfo_flag not set, file does not have SeqID info in
+ # 7th column of output, don't mistake number read for SeqID
+
+ if (!$$r_seqinfo_flag) {
+ $ts_seq_id = 0;
+ }
+
+ if ($ts_end > $ts_start)
+ {
+ $sense_strand = 1; # flag for forward or reverse strand
+
+ # pad ends of sequence only if EufindtRNA is being used
+ # and $seqinfo_flag is set (we know the seq lengths)
+
+ if ($opts->eufind_mode() && $$r_seqinfo_flag)
+ {
+ $ts_start = &max(1, $ts_start - $padding);
+ $ts_end = &min($ts_seq_len, $ts_end + $padding);
+ }
+ $ts_len = $ts_end - $ts_start + 1;
+ }
+ else {
+ $sense_strand = 0;
+ if ($opts->eufind_mode() && $$r_seqinfo_flag) {
+ $ts_start = &min($ts_seq_len, $ts_start + $padding);
+ $ts_end = &max(1, $ts_end - $padding);
+ }
+ $ts_len = $ts_start - $ts_end + 1;
+ }
+
+ if ($ts_end == $ts_start) {
+ print STDERR "Error reading $firstpass_result_file: tRNA of length 0";
+ }
+
+ push(@$r_prescan_tRNAs,
+ {seq => "", name => $trnaName,
+ start => $ts_start, end => $ts_end, len => $ts_len,
+ isotype => $ts_type, acodon => $ts_anticodon, score => $score,
+ src_seqname => $seq_name, src_seqlen => $ts_seq_len,
+ src_seqid => $ts_seq_id, strand => $sense_strand,
+ hit_source => $hit_source});
+
+ } # while <FIRSTPASS_TRNAS> not at eof
+ }
+
+ close FIRSTPASS_TRNAS;
+}
+
+sub write_tRNA {
+
+ my ($file_name, $seq_name, $seq_desc, $seq, $overwrite) = @_;
+
+ my $trna_file = tRNAscanSE::Sequence->new;
+ my $write_mode = "append";
+ if ($overwrite) {
+ $write_mode = "write";
+ }
+ $trna_file->set_seq_info($seq_name, $seq_desc, length($seq), $seq);
+ $trna_file->open_file($file_name, $write_mode);
+ $trna_file->write_fasta();
+ $trna_file->close_file();
+}
+
+# Write final tRNA prediction to various selected output sources/files
+# Sets globals $MaxSeqNameWidth and $MaxSeqLenWidth and $printed_header
+
+sub output_tRNA {
+
+ my ($opts, $gc, $log, $r_tab_results, $get_hmm_score, $program_id,
+ $r_fp_tRNA_info, # first pass scanner tRNA info
+ $r_tRNA_info, # final tRNA info
+ $curseq_trnact) = @_;
+
+ my $results_line = "";
+
+ if (!$opts->results_to_stdout()) {
+ $log->write_line("$r_tRNA_info->{ID}: ".$opts->second_pass_label()." type= $r_tRNA_info->{isotype}\t ".
+ "First-pass scan ($r_fp_tRNA_info->{hit_source}) type= $r_fp_tRNA_info->{isotype}\t".
+ "Score= $r_tRNA_info->{score}");
+ }
+ if ($opts->save_all_struct()) {
+ &save_allStruct_output($opts, $gc, $get_hmm_score, $r_tRNA_info, $curseq_trnact);
+ }
+
+ # Create tabular results line, ready for output
+
+ if (!$printed_header) {
+ $max_seq_name_width = &max(length($r_fp_tRNA_info->{src_seqname}) + 1, 8);
+ $max_seq_len_width = length($r_fp_tRNA_info->{src_seqlen});
+ }
+
+ $results_line = &construct_tab_output($opts, $get_hmm_score, $r_tRNA_info, $curseq_trnact, $max_seq_name_width, $max_seq_len_width);
+
+ # Internal copy of results saved for later uses
+ push(@$r_tab_results, $results_line);
+
+ if ($opts->ace_output()) {
+ &save_Acedb_from_secpass($opts, $gc, $r_tRNA_info, $program_id);
+ }
+ else
+ {
+ if (!($opts->brief_output() || $printed_header)) {
+ &print_results_header($opts, $get_hmm_score, $max_seq_name_width, $max_seq_len_width);
+ $printed_header = 1;
+ }
+ &open_for_append(\*TABOUT, $opts->out_file());
+ print TABOUT $results_line;
+ close TABOUT;
+ }
+}
+
+sub save_allStruct_output {
+
+ my ($opts, $gc, $get_hmm_score, $r_tRNA_info, $curseq_trnact) = @_;
+
+ my $ruler = ' * |' x 20; # ruler printed out with
+ # secondary structure output
+
+ my $seqlen = length($r_tRNA_info->{seq});
+
+ &open_for_append(\*SECSTRUCT, $opts->all_struct_file());
+
+ print SECSTRUCT "$r_tRNA_info->{seqname}.trna$curseq_trnact ($r_tRNA_info->{start}-$r_tRNA_info->{end})\t",
+ "Length: $seqlen bp\nType: $r_tRNA_info->{isotype}\t";
+
+ if ($opts->output_codon()) {
+ print SECSTRUCT "Codon: ", &rev_comp_seq($r_tRNA_info->{acodon}), " at ";
+ }
+ else {
+ print SECSTRUCT "Anticodon: $r_tRNA_info->{acodon} at ";
+ }
+
+ if ($r_tRNA_info->{acodon} eq $gc->undef_anticodon()) {
+ print SECSTRUCT "0-0 (0-0)\t";
+ }
+ else {
+ print SECSTRUCT "$r_tRNA_info->{acodon_pos}-", $r_tRNA_info->{acodon_pos} + 2;
+ if (!$opts->arch_mode()) {
+ if ($r_tRNA_info->{strand}) {
+ print SECSTRUCT " (", $r_tRNA_info->{acodon_pos} + $r_tRNA_info->{start} - 1, "-",
+ $r_tRNA_info->{acodon_pos} + $r_tRNA_info->{start} + 1,")\t";
+ }
+ else {
+ print SECSTRUCT " (", $r_tRNA_info->{start} - $r_tRNA_info->{acodon_pos} + 1, "-",
+ $r_tRNA_info->{start} - $r_tRNA_info->{acodon_pos} - 1,")\t";
+ }
+ }
+ else {
+ print SECSTRUCT " (", $r_tRNA_info->{acodon_pos}, "-", $r_tRNA_info->{acodon_pos} + 2,")\t";
+ }
+ }
+
+ print SECSTRUCT "Score: $r_tRNA_info->{score}\n";
+ if (scalar(@{$r_tRNA_info->{introns}}) > 0) {
+
+ foreach my $intron (@{$r_tRNA_info->{introns}}) {
+ if (defined $intron) {
+ if ($intron->{seq} ne "") {
+ print SECSTRUCT "Possible intron: $intron->{start}-$intron->{end} ";
+ if ($r_tRNA_info->{strand}) {
+ print SECSTRUCT "(", $intron->{start} + $r_tRNA_info->{start} - 1, "-",
+ $intron->{end} + $r_tRNA_info->{start} - 1,")\n";
+ }
+ else {
+ print SECSTRUCT "(", $r_tRNA_info->{start} - $intron->{start} + 1, "-",
+ $r_tRNA_info->{start} - $intron->{end} + 1,")\n";
+ }
+ }
+ }
+ }
+ }
+
+ if ($r_tRNA_info->{is_pseudo}) {
+ printf SECSTRUCT
+ "Possible pseudogene: HMM Sc=%.2f\tSec struct Sc=%.2f\n",
+ $r_tRNA_info->{hmm_score}, $r_tRNA_info->{ss_score};
+ }
+ elsif ($get_hmm_score) {
+ printf SECSTRUCT
+ "HMM Sc=%.2f\tSec struct Sc=%.2f\n", $r_tRNA_info->{hmm_score}, $r_tRNA_info->{ss_score};
+ }
+
+ print SECSTRUCT " ",substr($ruler, 0, $seqlen - 1),"\n";
+ print SECSTRUCT "Seq: $r_tRNA_info->{seq}\nStr: $r_tRNA_info->{ss}\n";
+ if (defined $r_tRNA_info->{precursor}) {
+ foreach my $intron (@{$r_tRNA_info->{introns}}) {
+ if (defined $intron) {
+ my $intron_seq = uc($intron->{seq});
+ if ($intron_seq ne "") {
+ $r_tRNA_info->{precursor} =~ s/$intron_seq/\[$intron_seq\]/;
+ }
+ }
+ }
+ print SECSTRUCT "Pre: ". uc($r_tRNA_info->{precursor}) ."\n\n";
+ }
+ else {
+ print SECSTRUCT "\n";
+ }
+ close(SECSTRUCT);
+}
+
+# Save tRNA hits in Tabular output
+
+sub construct_tab_output {
+
+ my ($opts, $get_hmm_score, $r_tRNA_info, $curseq_trnact, $max_seq_name_width, $max_seq_len_width) = @_;
+
+ my ($result_line, $tRNA_type);
+
+ if ($r_tRNA_info->{is_pseudo}) {
+ $tRNA_type = "Pseudo";
+ }
+ else {
+ $tRNA_type = $r_tRNA_info->{isotype};
+ }
+
+ $result_line = sprintf "%-".$max_seq_name_width."s\t", $r_tRNA_info->{seqname};
+ $result_line .= "$curseq_trnact\t";
+
+ $result_line .= sprintf "%-".$max_seq_len_width."d\t", $r_tRNA_info->{start};
+ $result_line .= sprintf "%-".$max_seq_len_width."d\t", $r_tRNA_info->{end};
+
+ $result_line .= "$tRNA_type\t";
+
+ if ($opts->output_codon()) {
+ $result_line .= (&rev_comp_seq($r_tRNA_info->{acodon}))."\t";
+ }
+ else {
+ $result_line .= "$r_tRNA_info->{acodon}\t";
+ }
+
+ if (scalar(@{$r_tRNA_info->{introns}}) == 0) {
+ $result_line .= "0\t0";
+ }
+ else {
+ my $intron_ct = 0;
+ for (my $i = 0; $i < scalar(@{$r_tRNA_info->{introns}}); $i++) {
+ if (defined $r_tRNA_info->{introns}->[$i]) {
+ if ($r_tRNA_info->{introns}->[$i]->{seq} ne "") {
+ if ($intron_ct > 0) {
+ $result_line .= ",";
+ }
+ if ($r_tRNA_info->{strand}) {
+ $result_line .= ($r_tRNA_info->{introns}->[$i]->{start} + $r_tRNA_info->{start}-1);
+ }
+ else {
+ $result_line .= ($r_tRNA_info->{start} - $r_tRNA_info->{introns}->[$i]->{start}+1);
+ }
+ $intron_ct++;
+ }
+ }
+ }
+ $result_line .= "\t";
+ $intron_ct = 0;
+ for (my $i = 0; $i < scalar(@{$r_tRNA_info->{introns}}); $i++) {
+ if (defined $r_tRNA_info->{introns}->[$i]) {
+ if ($r_tRNA_info->{introns}->[$i]->{seq} ne "") {
+ if ($intron_ct > 0) {
+ $result_line .= ",";
+ }
+ if ($r_tRNA_info->{strand}) {
+ $result_line .= ($r_tRNA_info->{introns}->[$i]->{end} + $r_tRNA_info->{start} - 1);
+ }
+ else {
+ $result_line .= ($r_tRNA_info->{start} - $r_tRNA_info->{introns}->[$i]->{end} + 1);
+ }
+ $intron_ct++;
+ }
+ }
+ }
+ }
+ $result_line .= "\t$r_tRNA_info->{score}";
+
+ if ($get_hmm_score) {
+ $result_line .= sprintf "\t%.2f\t%.2f", $r_tRNA_info->{hmm_score}, $r_tRNA_info->{ss_score};
+ }
+ if ($opts->save_source()) {
+ $result_line .= "\t$r_tRNA_info->{hit_source}";
+ }
+ if ($opts->search_mode() eq "archaea") {
+ if (scalar(@{$r_tRNA_info->{introns}}) == 0) {
+ $result_line .= "\t";
+ }
+ else {
+ my $ci_count = 0;
+ my $nci_count = 0;
+ for (my $i = 0; $i < scalar(@{$r_tRNA_info->{introns}}); $i++) {
+ if ($r_tRNA_info->{introns}->[$i]->{type} eq "CI") {
+ $ci_count++;
+ }
+ elsif ($r_tRNA_info->{introns}->[$i]->{type} eq "NCI") {
+ $nci_count++;
+ }
+ }
+ $result_line .= "\t";
+ if ($ci_count > 0) {
+ $result_line .= $ci_count . " CI";
+ }
+ if (($ci_count > 0) && ($nci_count > 0)) {
+ $result_line .= " ";
+ }
+ if ($nci_count > 0) {
+ $result_line .= $nci_count . " NCI";
+ }
+ }
+ }
+ $result_line .= "\n";
+
+ return $result_line;
+}
+
+sub Save_Acedb_from_secpass {
+
+ my ($opts, $gc, $r_tRNA_info, $program_id) = @_;
+
+ &open_for_append(\*ACEOUT, $opts->out_file());
+
+ print ACEOUT "Sequence\t$r_tRNA_info->{seqname}\nSubsequence\t$r_tRNA_info->{ID} $r_tRNA_info->{start} $r_tRNA_info->{end}\n\n";
+ print ACEOUT "Sequence\t$r_tRNA_info->{ID}\nSource\t\t$r_tRNA_info->{seqname}\n";
+ if ($r_tRNA_info->{iseq}) {
+ print ACEOUT "Source_Exons\t1 ", $r_tRNA_info->{istart} - 1,"\n";
+ print ACEOUT "Source_Exons\t", $r_tRNA_info->{iend} + 1," ", abs($r_tRNA_info->{end} - $r_tRNA_info->{start}) + 1,"\n";
+ }
+ print ACEOUT "Brief_identification tRNA-$r_tRNA_info->{isotype}\n",
+ "Transcript tRNA \"";
+
+ if ($opts->output_codon()) {
+ print ACEOUT &rev_comp_seq($r_tRNA_info->{acodon});
+ }
+ else {
+ print ACEOUT $r_tRNA_info->{acodon};
+ }
+
+ print ACEOUT " $r_tRNA_info->{isotype} ", $gc->one_let_trans_map()->{$r_tRNA_info->{isotype}},
+ "\"\nScore $program_id $r_tRNA_info->{score}\n";
+
+ if ($r_tRNA_info->{is_pseudo}) {
+ printf ACEOUT "Remark \"Likely pseudogene (HMM Sc=%.2f / Sec struct Sc=%.2f)\"\n",
+ $r_tRNA_info->{hmm_score},$r_tRNA_info->{ss_score};
+ }
+ print ACEOUT "\n";
+ close ACEOUT;
+}
+
+sub output_split_fragments {
+
+ my ($opts, $r_pairs, $r_5half_hits, $r_3half_hits) = @_;
+
+ my ($r_5half, $r_3half);
+
+ &open_for_append(\*SPLITFILE, $opts->split_fragment_file());
+ printf SPLITFILE "Fragment1\tFragment2\tSeqName1\tStartPos1\tEndPos1\tSeqName2\tStartPos2\tEndPos2\tScore1\tScore2\n";
+
+ foreach my $r_pair (@$r_pairs) {
+ if (defined $r_pair->{"5h"} && defined $r_pair->{"3h"}) {
+ $r_5half = $r_5half_hits->[$r_pair->{"5h"}];
+ $r_3half = $r_3half_hits->[$r_pair->{"3h"}];
+ print SPLITFILE $r_5half->{seq}."\t".$r_3half->{seq}."\t",
+ $r_5half->{hit_seqname}."\t".$r_5half->{tRNA_start}."\t".$r_5half->{tRNA_end}."\t",
+ $r_3half->{hit_seqname}."\t".$r_3half->{tRNA_start}."\t".$r_3half->{tRNA_end}."\t",
+ $r_5half->{score}."\t".$r_3half->{score}."\n";
+ print SPLITFILE $r_5half->{ss}."\t".$r_3half->{ss}."\t\t\t\t\t\t\t\t\n";
+ }
+ elsif (defined $r_pair->{"5h"} && !defined $r_pair->{"3h"}) {
+ $r_5half = $r_5half_hits->[$r_pair->{"5h"}];
+ print SPLITFILE $r_5half->{seq}."\t\t",
+ $r_5half->{hit_seqname}."\t".$r_5half->{tRNA_start}."\t".$r_5half->{tRNA_end}."\t",
+ "\t\t\t",
+ $r_5half->{score}."\t\n";
+ print SPLITFILE $r_5half->{ss}."\t\t\t\t\t\t\t\t\t\n";
+ }
+ elsif (!defined $r_pair->{"5h"} && defined $r_pair->{"3h"}) {
+ $r_3half = $r_3half_hits->[$r_pair->{"3h"}];
+ print SPLITFILE "\t".$r_3half->{seq}."\t",
+ "\t\t\t",
+ $r_3half->{hit_seqname}."\t".$r_3half->{tRNA_start}."\t".$r_3half->{tRNA_end}."\t",
+ "\t".$r_3half->{score}."\n";
+ print SPLITFILE "\t".$r_3half->{ss}."\t\t\t\t\t\t\t\t\n";
+ }
+ }
+}
+
+1;
diff --git a/tRNAscanSE/Sequence.pm b/tRNAscanSE/Sequence.pm
new file mode 100644
index 0000000..59e993d
--- /dev/null
+++ b/tRNAscanSE/Sequence.pm
@@ -0,0 +1,763 @@
+# tRNAscanSE/Sequence.pm
+# This class describes a sequence and provides functions for handling fasta files in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+# Perl code for reading FASTA-formatted sequence files
+# SRE, Sat Feb 19 19:10:43 1994
+
+# These subroutines read a FASTA formatted file one sequence at a time.
+# Open(filename, open_mode) opens a file for reading or wrting.
+# Close() closes it when you're done.
+#
+# read_fasta() returns 1 on success and 0 on failure (end of file).
+# When it returns success, the following variables are set:
+#
+# $seq_name = name of sequence (1st word on FASTA title line)
+# $seq_description = description (remainder of FASTA title line)
+# $seq_length = length of sequence
+# $sequence = sequence, gaps and newlines removed
+#
+# Modified by TMJL 11/95 for use in tRNAscan-SE
+
+package tRNAscanSE::Sequence;
+
+use strict;
+use tRNAscanSE::Utils;
+use tRNAscanSE::Constants;
+use tRNAscanSE::Options;
+
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY
+{
+ my $self = shift;
+}
+
+sub initialize
+{
+ my $self = shift;
+ $self->{file_name} = ""; # name of log file
+ $self->{FILE_H} = undef; # file handle
+
+ $self->{max_seq_buffer} = 1000000; # Max size of seq buffer read in at once
+ $self->{seq_buf_overlap} = 200; # Nucleotides of overlap between buffers
+ $self->{seq_index_inc} = 100000;
+
+ $self->{saved_line} = "";
+ $self->{buffer_overlap_seq} = "";
+ $self->{buffer_end_index} = 0;
+ $self->{seq_buf_overrun} = 0;
+ $self->{buffer_length} = 0;
+ $self->{key_found} = 0;
+ $self->{all_seq_indices} = +[]; # Keeps track of indexing into seqs for fast retreival
+
+ $self->{seq_id} = 0;
+ $self->{seq_name} = "";
+ $self->{seq_description} = "";
+ $self->{seq_length} = 0;
+ $self->{sequence} = undef;
+
+ $self->{seq_name_map} = {};
+}
+
+sub file_name
+{
+ my $self = shift;
+ if (@_) { $self->{file_name} = shift; }
+ return $self->{file_name};
+}
+
+sub key_found
+{
+ my $self = shift;
+ if (@_) { $self->{key_found} = shift; }
+ return $self->{key_found};
+}
+
+sub seq_id
+{
+ my $self = shift;
+ if (@_) { $self->{seq_id} = shift; }
+ return $self->{seq_id};
+}
+
+sub seq_name
+{
+ my $self = shift;
+ if (@_) { $self->{seq_name} = shift; }
+ return $self->{seq_name};
+}
+
+sub get_seq_id_from_name
+{
+ my $self = shift;
+ my $name = shift;
+ my $id = -1;
+ if (defined $self->{seq_name_map}->{$name})
+ {
+ $id = $self->{seq_name_map}->{$name};
+ }
+ return $id;
+}
+
+sub seq_description
+{
+ my $self = shift;
+ if (@_) { $self->{seq_description} = shift; }
+ return $self->{seq_description};
+}
+
+sub seq_length
+{
+ my $self = shift;
+ if (@_) { $self->{seq_length} = shift; }
+ return $self->{seq_length};
+}
+
+sub sequence
+{
+ my $self = shift;
+ if (@_) { $self->{sequence} = shift; }
+ return $self->{sequence};
+}
+
+sub release_memory
+{
+ my $self = shift;
+ undef($self->{sequence});
+}
+
+sub set_seq_info
+{
+ my $self = shift;
+ $self->{seq_name} = shift;
+ $self->{seq_description} = shift;
+ $self->{seq_length} = shift;
+ $self->{sequence} = shift;
+}
+
+sub reset_buffer_ct
+{
+ my $self = shift;
+ $self->{buffer_overlap_seq} = "";
+ $self->{buffer_end_index} = 0;
+ $self->{seq_buf_overrun} = 0;
+}
+
+sub buffer_end_index
+{
+ my $self = shift;
+ if (@_) { $self->{buffer_end_index} = shift; }
+ return $self->{buffer_end_index};
+}
+
+sub seq_buf_overrun
+{
+ my $self = shift;
+ if (@_) { $self->{seq_buf_overrun} = shift; }
+ return $self->{seq_buf_overrun};
+}
+
+sub seekpos {
+ my $self = shift;
+ my $pos = shift;
+
+ seek($self->{FILE_H}, $pos, 0);
+}
+
+sub open_file
+{
+ my $self = shift;
+ my $file = shift;
+ my $mode = shift;
+
+ my $success = 0;
+
+ if ($mode eq "read") {
+ &open_for_read(\$self->{FILE_H}, $file);
+ $self->{seq_id} = 0;
+ $self->{saved_line} = "";
+ }
+ elsif ($mode eq "write") {
+ &open_for_write(\$self->{FILE_H}, $file);
+ }
+ elsif ($mode eq "append") {
+ &open_for_append(\$self->{FILE_H}, $file);
+ }
+ $self->{file_name} = $file;
+ $success = 1;
+
+ return $success;
+}
+
+sub close_file
+{
+ my $self = shift;
+
+ if (defined $self->{FILE_H}) {
+ close($self->{FILE_H});
+ }
+}
+
+# Reads length of sequence first, then pre-extends to total length
+# before reading it in (important optimization for very long sequences)
+# Also, will search for sequence name matching $key
+
+sub read_fasta {
+
+ my $self = shift;
+ my $opts = shift;
+ my $target_seq_id = shift;
+ my $key = $opts->seq_key();
+ my $fh = $self->{FILE_H};
+
+ my ($seqlen, $filepos, $pre_extend_len, $seq_index_step, @seq_index);
+
+ $self->{seq_name} = "";
+ $self->{seq_description} = "";
+ $self->{seq_length} = 0;
+ $self->{sequence} = "";
+
+# if $key is not the global $seq_key (non-alphanumerics already
+# escaped out for $seq_key) then escape out '\' problem causing char's
+# if ($key ne $seq_key) {
+# $key =~ s/(\W)/\\$1/g;
+# }
+
+ while ((!eof($fh))
+ && (($self->{saved_line} =~ /^>/) || ($self->{saved_line} = <$fh>)))
+ {
+ if (($self->{saved_line} =~ /^>\s*($key)\s+(.*)$/) ||
+ ($opts->start_at_key()) && ($self->{key_found}) &&
+ ($self->{saved_line} =~ /^>\s*(\S*)\s+(.*)$/o))
+ {
+ $self->{seq_id}++;
+
+ # if searching for a particular SeqID go on to next seq
+ # if target and current seqid's don't match
+ if ($target_seq_id && ($self->{seq_id} != $target_seq_id)) {
+ $self->{saved_line} = <$fh>;
+ next;
+ }
+
+ $self->{key_found} = 1;
+ $self->{seq_name} = $1;
+ $self->{seq_description} = $2;
+ $self->{sequence} = "";
+ $self->{seq_name_map}->{$self->{seq_name}} = $self->{seq_id};
+
+ @seq_index = ();
+ $seq_index_step = $self->{seq_index_inc}; # set first bp position to save
+
+ $filepos = tell($fh);
+ $seqlen = 0;
+ push(@seq_index, $seqlen, tell($fh));
+ $pre_extend_len = 0;
+# print LOGFILE "At pos: ";
+
+ while ($self->{saved_line} = <$fh>)
+ {
+ if ($self->{saved_line} =~ /^>/) { last; }
+ $self->{saved_line} =~ s/[ \n\t\d]//g; # strip whitespace & numbers
+ $seqlen += length($self->{saved_line});
+
+ # Save the start position of this chunk of seq for later easy return
+ if ($seqlen > $seq_index_step) {
+ push(@seq_index, $seqlen, tell($fh));
+ $seq_index_step += $self->{seq_index_inc};
+# print LOGFILE "($Seqlen) ";
+ }
+
+ if (($pre_extend_len == 0) && ($seqlen >= $self->{max_seq_buffer})) {
+ $pre_extend_len = $seqlen;
+ }
+ }
+ push(@seq_index, $seqlen, tell($fh));
+ $self->{seq_length} = $seqlen;
+# print LOGFILE " ";
+
+ $self->{all_seq_indices}->[$self->{seq_id}] = [@seq_index];
+
+ seek($fh,$filepos,0);
+ $self->{sequence} = 'X' x $pre_extend_len; # pre-extending string for efficiency
+ $seqlen = 0;
+ while (($seqlen < $self->{max_seq_buffer}) && ($self->{saved_line} = <$fh>))
+ {
+ if ($self->{saved_line} =~ /^>/) { last; }
+ $self->{saved_line} =~ s/[ \n\t\d]//g; # strip whitespace & numbers
+ substr($self->{sequence}, $seqlen, length($self->{saved_line})) = $self->{saved_line};
+ $seqlen += length($self->{saved_line});
+ }
+
+ # if sequence is longer than MaxSeqBuffer length,
+ # then save last ~200 nt to allow overlap with next buffer frame
+ # this prevents tRNAs on the border between buffers from being chopped
+ # in half (and missed!)
+
+ if ($seqlen >= $self->{max_seq_buffer}) {
+ $self->{buffer_overlap_seq} = substr($self->{sequence}, $seqlen - $self->{seq_buf_overlap});
+ $self->{buffer_end_index} = $seqlen - length($self->{buffer_overlap_seq});
+ $self->{seq_buf_overrun} = 1;
+ }
+ else {
+ $self->{seq_buf_overrun} = 0;
+ }
+
+ $self->{buffer_length} = length($self->{sequence});
+ $self->{sequence} = uc($self->{sequence});
+ $self->{sequence} =~ s/U/T/g;
+ $self->{sequence} =~ s/X/N/g;
+
+ ## Remove long runs of N's from consideration by pre-scanners
+ ## By doing this, pre-scanner false-pos rate is normal, even
+ ## when scanning unfinished genomes with long N insert "placeholders"
+ $self->{sequence} =~ s/NNNNNNNNNN/CCCCCCCCCC/g;
+
+ return 1;
+ }
+ else {
+ if ($self->{saved_line} =~ /^>/) {
+ $self->{seq_id}++;
+ }
+ $self->{saved_line} = <$fh>;
+ }
+ }
+ 0;
+}
+
+sub read_fasta_subseq {
+
+ my $self = shift;
+ my $target_seq_id = shift;
+ my $subseq_start = shift;
+ my $subseq_len = shift;
+ my $fh = $self->{FILE_H};
+
+ my ($seqlen, $filepos, $curpos, $tempseq, $seq_head, $index_pos, $ct);
+
+ $self->{seq_length} = 0;
+ $self->{sequence} = "";
+
+ # find closest position in desired sequence from file position index
+
+ $ct=0;
+ if (!defined $self->{all_seq_indices}->[$target_seq_id]) {
+ $seqlen = 0;
+ $index_pos = 0;
+ }
+ else {
+ while ($self->{all_seq_indices}->[$target_seq_id][$ct] < $subseq_start) {
+ $ct+=2;
+ }
+ $seqlen = $self->{all_seq_indices}->[$target_seq_id][$ct-2];
+ $index_pos = $self->{all_seq_indices}->[$target_seq_id][$ct-1];
+ }
+ seek ($fh, $index_pos, 0);
+
+ $tempseq = "";
+
+ # scan until I get to the sequence position
+
+ while (($seqlen < $subseq_start) && ($self->{saved_line} = <$fh>))
+ {
+ if ($self->{saved_line} =~ /^>/) {
+ return 0;
+ }
+ $self->{saved_line} =~ s/[ \n\t\d]//g; # strip whitespace & numbers
+ $seqlen += length($self->{saved_line});
+ }
+
+ $tempseq = 'X' x $subseq_len; # pre-extending string for efficiency
+
+ $curpos = $seqlen - length($self->{saved_line});
+ $seq_head = substr($self->{saved_line}, $subseq_start - $curpos - 1);
+ substr($tempseq, 0, length($seq_head)) = $seq_head;
+
+ $seqlen = length($seq_head);
+
+ while (($seqlen < $subseq_len) && ($self->{saved_line} = <$fh>))
+ {
+ if ($self->{saved_line} =~ /^>/) { last; }
+ $self->{saved_line} =~ s/[ \n\t\d]//g; # strip whitespace & numbers
+ substr($tempseq, $seqlen, length($self->{saved_line})) = $self->{saved_line};
+ $seqlen += length($self->{saved_line});
+ }
+
+ $self->{sequence} = substr($tempseq, 0, $subseq_len);
+
+ $self->{sequence} = uc($self->{sequence});
+ $self->{sequence} =~ s/U/T/g;
+ $self->{sequence} =~ s/X/N/g;
+ $self->{seq_length} = length($self->{sequence});
+ return 1;
+}
+
+sub read_fasta_subseq_slow {
+
+ my $self = shift;
+ my $opts = shift;
+ my $key = shift;
+ my $target_seq_id = shift;
+ my $subseq_start = shift;
+ my $subseq_len = shift;
+ my $fh = $self->{FILE_H};
+
+ my ($seqlen, $filepos, $curpos, $tempseq);
+ my $last_header = "";
+ my $seq_head = "";
+
+ $self->{seq_length} = 0;
+ $self->{sequence} = "";
+
+# if $key is not the global $seq_key (non-alphanumerics already
+# escaped out for $seq_key) then escape out '\' problem causing char's
+# if ($key ne $seq_key) {
+ $key =~ s/(\W)/\\$1/g;
+# }
+
+ while ((!eof(FAHANDLE))
+ && (($self->{saved_line} =~ /^>/) || ($self->{saved_line} = <FAHANDLE>)))
+ {
+ if (($self->{saved_line} =~ /^>\s*($key)\s+(.*)$/) ||
+ ($opts->start_at_key()) && ($self->{key_found}) &&
+ ($self->{saved_line} =~ /^>\s*(\S*)\s+(.*)$/o))
+ {
+ $self->{seq_id}++;
+
+ # if searching for a particular SeqID go on to next seq
+ # if target and current seqid's don't match
+ if ($target_seq_id && ($self->{seq_id} != $target_seq_id)) {
+ $self->{saved_line} = <$fh>;
+ next;
+ }
+
+ $filepos = tell($fh); # save position of last fasta header
+ $last_header = $self->{saved_line};
+
+ $self->{key_found} = 1;
+ $self->{seq_name} = $1;
+ $self->{seq_description} = $2;
+ $self->{sequence} = "";
+ $tempseq = "";
+
+ $seqlen = 0;
+ while (($seqlen < $subseq_start) && ($self->{saved_line} = <$fh>)) {
+ if ($self->{saved_line} =~ /^>/) { last; }
+ $self->{saved_line} =~ s/[ \n\t\d]//g; # strip whitespace & numbers
+ $seqlen += length($self->{saved_line});
+ }
+
+ $tempseq = 'X' x $subseq_len; # pre-extending string for efficiency
+
+ $curpos = $seqlen - length($self->{saved_line});
+ $seq_head = substr($self->{saved_line}, $subseq_start - $curpos - 1);
+ substr($tempseq, 0, length($seq_head)) = $seq_head;
+
+ $seqlen = length($seq_head);
+
+ while (($seqlen < $subseq_len) && ($self->{saved_line} = <$fh>)) {
+ if ($self->{saved_line} =~ /^>/) { last; }
+ $self->{saved_line} =~ s/[ \n\t\d]//g; # strip whitespace & numbers
+ substr($tempseq, $seqlen, length($self->{saved_line})) = $self->{saved_line};
+ $seqlen += length($self->{saved_line});
+ }
+
+ $self->{sequence} = substr($tempseq, 0, $subseq_len);
+
+ $self->{sequence} = uc($self->{sequence});
+ $self->{sequence} =~ s/U/T/g;
+ $self->{sequence} =~ s/X/N/g;
+ $self->{seq_length} = length($self->{sequence});
+ seek($fh, $filepos, 0); # return file position to beginning of this seq
+ $self->{seq_id}--; # rewind seqid by 1
+ $self->{saved_line} = $last_header; # restore to original seq header line
+ return 1;
+ }
+ else {
+ if ($self->{saved_line} =~ /^>/) {
+ $self->{seq_id}++;
+ }
+ $self->{saved_line} = <$fh>;
+ }
+ }
+ 0;
+}
+
+## read_more_fasta
+## Reads remaining portion of large fasta file (size>$MaxSeqBuffer)
+## Only reads in $MaxSeqBuffer amount or less each time
+
+sub read_more_fasta {
+
+ my $self = shift;
+ my $fh = $self->{FILE_H};
+
+ my ($seqlen, $filepos);
+
+ $filepos = tell($fh);
+ $seqlen = 0;
+ while (($seqlen + $self->{seq_buf_overlap} < $self->{max_seq_buffer}) && ($self->{saved_line} = <$fh>))
+ {
+ if ($self->{saved_line} =~ /^>/) { last; }
+ $self->{saved_line} =~ s/[ \n\t\d]//g; # strip whitespace & numbers
+ $seqlen += length($self->{saved_line});
+ }
+
+ if ($seqlen == 0) {
+ return 0;
+ }
+
+ seek($fh, $filepos, 0);
+
+ $self->{sequence} = $self->{buffer_overlap_seq}. 'X' x $seqlen; # pre-extending string for efficiency
+ $seqlen = length($self->{buffer_overlap_seq});
+
+ while (($seqlen < $self->{max_seq_buffer}) && ($self->{saved_line} = <$fh>))
+ {
+ if ($self->{saved_line} =~ /^>/) { last; }
+ $self->{saved_line} =~ s/[ \n\t\d]//g; # strip whitespace & numbers
+ substr($self->{sequence}, $seqlen, length($self->{saved_line})) = $self->{saved_line};
+ $seqlen += length($self->{saved_line});
+ }
+
+ # if sequence is longer than MaxSeqBuffer length,
+ # then save last ~200 nt to allow overlap with next buffer frame
+ # this prevents tRNAs on the border between buffers from being chopped
+ # in half (and missed!)
+
+ if ($seqlen >= $self->{max_seq_buffer}) {
+ $self->{buffer_overlap_seq} = substr($self->{sequence}, $seqlen - $self->{seq_buf_overlap});
+ $self->{buffer_end_index} += $seqlen - length($self->{buffer_overlap_seq});
+ $self->{seq_buf_overrun} = 1;
+ }
+ else {
+ $self->{seq_buf_overrun} = 0;
+ }
+
+ $self->{buffer_length} = length($self->{sequence});
+ $self->{sequence} = uc($self->{sequence});
+ $self->{sequence} =~ s/U/T/g;
+ $self->{sequence} =~ s/X/N/g;
+
+ ## Remove long runs of N's from consideration by pre-scanners
+ ## By doing this, pre-scanner false-pos rate is normal, even
+ ## when scanning unfinished genomes with long N insert "placeholders"
+ $self->{sequence} =~ s/NNNNNNNNNN/CCCCCCCCCC/g;
+
+ return 1;
+}
+
+sub write_fasta {
+
+ my $self = shift;
+ my $fh = $self->{FILE_H};
+
+ my ($pos, $line);
+
+ print $fh ">$self->{seq_name} $self->{seq_description}\n";
+ for ($pos = 0; $pos < length($self->{sequence}); $pos += 60)
+ {
+ $line = substr($self->{sequence}, $pos, 60);
+ print $fh $line, "\n";
+ }
+}
+
+sub get_tRNA_sequence {
+
+ my $self = shift;
+ my ($src_seq_name, $strand, $start, $end, $log, $opts, $constants) = @_;
+
+ $self->{seq_name} = $src_seq_name;
+ $self->{seq_description} = "";
+
+ my ($upstream_len, $downstream_len, $src_seq_len, $fwd_start, $query_len, $upstream, $downstream, $tRNA_seq);
+ my $src_seqid = $self->get_seq_id_from_name($src_seq_name);
+
+ $upstream_len = $constants->upstream_len();
+ $downstream_len = $constants->downstream_len();
+ if ($strand) {
+ if ($start - $upstream_len <= 0) {
+ $upstream_len = $start - 1;
+ }
+ $fwd_start = $start - $upstream_len;
+ $src_seq_len = $end - $start + 1;
+ }
+ else {
+ if ($end - $downstream_len <= 0) {
+ $downstream_len = $end - 1;
+ }
+ $fwd_start = $end - $downstream_len;
+ $src_seq_len = $start - $end + 1;
+ }
+ $query_len = $upstream_len + $src_seq_len + $downstream_len;
+
+ if (!$self->read_fasta_subseq($src_seqid, $fwd_start, $query_len)) {
+
+ # if can't find it on first try, reposition
+ # to beginning of file & try once more
+
+ $log->write_line("Missed $src_seq_name using quick index. Rewinding seq file and trying again with slow search...");
+ $self->seekpos(0);
+ if (!$self->read_fasta_subseq_slow($opts, $src_seq_name, $src_seqid, $fwd_start, $query_len)) {
+ print STDERR "Could not find $src_seq_name in ".$opts->fastafile()."\n";
+ $log->write_line("Skipping to next tRNA hit...");
+ return 0;
+ }
+ }
+
+ if ($strand) {
+ $downstream_len = $self->{seq_length} - $upstream_len - $src_seq_len;
+ $upstream = substr($self->{sequence}, 0, $upstream_len);
+ $downstream = "";
+ if ($downstream_len > 0) {
+ $downstream = substr($self->{sequence}, $upstream_len + $src_seq_len);
+ }
+ $tRNA_seq = substr($self->{sequence}, $upstream_len, $src_seq_len);
+ }
+ else {
+ $upstream_len = $self->{seq_length} - $downstream_len - $src_seq_len;
+ $self->{sequence} = &rev_comp_seq($self->{sequence});
+ $upstream = "";
+ if ($upstream_len > 0) {
+ $upstream = substr($self->{sequence}, 0, $upstream_len);
+ }
+ $downstream = substr($self->{sequence}, $upstream_len + $src_seq_len);
+ $tRNA_seq = substr($self->{sequence}, $upstream_len, $src_seq_len);
+ }
+ return ($tRNA_seq, $upstream, $downstream);
+}
+
+sub mask_out_sequence {
+
+ my $self = shift;
+ my ($seq_file, $temp_seq_file, $r_sorted_cms_hits) = @_;
+
+ my $cms_hit = undef;
+ my $fh_seq_in = undef;
+ my $fh_seq_out = undef;
+ my $line = "";
+ my $last_line = "";
+ my $seqname = "";
+ my %cms_hits = ();
+ my $hits = [];
+ my $ct = 0;
+ my $written_len = 0;
+ my $seq_start = 0;
+ my $subseq_start = 0;
+ my $subseq_len = 0;
+ my $N_start = 0;
+
+ foreach $cms_hit (@$r_sorted_cms_hits) {
+ if (defined $cms_hits{$cms_hit->{seqname}}) {
+ push (@{$cms_hits{$cms_hit->{seqname}}}, $cms_hit);
+ }
+ else {
+ $hits = [];
+ push (@$hits, $cms_hit);
+ $cms_hits{$cms_hit->{seqname}} = $hits;
+ }
+ }
+
+ &open_for_read(\$fh_seq_in, $seq_file);
+ &open_for_write(\$fh_seq_out, $temp_seq_file);
+
+ while ($line = <$fh_seq_in>) {
+ chomp($line);
+ if ($line =~ /^>([^\t]+)$/) {
+ $seqname = $1;
+ $seqname = &trim($seqname);
+ if (index($seqname, ' ') > -1) {
+ $seqname = substr($seqname, 0, index($seqname, ' '));
+ }
+ $hits = undef;
+ $ct = 0;
+ if (defined $cms_hits{$seqname}) {
+ $hits = $cms_hits{$seqname};
+ $subseq_len = $hits->[$ct]->{len};
+ $seq_start = $hits->[$ct]->{start};
+ $seq_start = $hits->[$ct]->{end} if ($hits->[$ct]->{strand} == 0);
+ }
+ $written_len = 0;
+ $N_start = 0;
+ if ($last_line ne "") {
+ print $fh_seq_out $last_line . "\n";
+ $last_line = "";
+ }
+ print $fh_seq_out $line . "\n";
+ }
+ elsif ($line =~ /^\s*$/) {
+ }
+ else {
+ if ($last_line ne "") {
+ $line = $last_line . $line;
+ $last_line = "";
+ }
+ if (defined $hits) {
+ if ($ct < scalar(@$hits)) {
+ if ($written_len + length($line) < $seq_start) {
+ print $fh_seq_out $line . "\n";
+ $written_len += length($line);
+ }
+ else {
+ if ($N_start > 0) {
+ $subseq_start = 1;
+ }
+ else {
+ $subseq_start = $seq_start - $written_len;
+ print $fh_seq_out substr($line, 0, $subseq_start - 1);
+ $written_len += ($subseq_start - 1);
+ }
+ if (length($line) >= ($subseq_start + $subseq_len - 1)) {
+ print $fh_seq_out 'N' x $subseq_len;
+ print $fh_seq_out "\n";
+ $written_len += $subseq_len;
+ if (length($line) > ($subseq_start + $subseq_len - 1)) {
+ $last_line = substr($line, $subseq_start + $subseq_len - 1);
+ }
+ $N_start = 0;
+ $ct++;
+ if ($ct < scalar(@$hits)) {
+ $subseq_len = $hits->[$ct]->{len};
+ $seq_start = $hits->[$ct]->{start};
+ $seq_start = $hits->[$ct]->{end} if ($hits->[$ct]->{strand} == 0);
+ }
+ }
+ else {
+ print $fh_seq_out 'N' x (length($line) - $subseq_start + 1);
+ print $fh_seq_out "\n";
+ $written_len += (length($line) - $subseq_start + 1);
+ $N_start = 1;
+ $subseq_len -= (length($line) - $subseq_start + 1);
+ }
+ }
+ }
+ else {
+ print $fh_seq_out $line . "\n";
+ $written_len += length($line);
+ }
+ }
+ else {
+ print $fh_seq_out $line . "\n";
+ $written_len += length($line);
+ }
+ }
+ }
+
+ close($fh_seq_in);
+ close($fh_seq_out);
+}
+
+1;
diff --git a/tRNAscanSE/Stats.pm b/tRNAscanSE/Stats.pm
new file mode 100644
index 0000000..bb239bb
--- /dev/null
+++ b/tRNAscanSE/Stats.pm
@@ -0,0 +1,430 @@
+# tRNAscanSE/Stats.pm
+# This class describes the statistics of each run in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+package tRNAscan::Stats;
+
+use strict;
+use tRNAscanSE::Utils;
+use tRNAscanSE::Options;
+use tRNAscanSE::GeneticCode;
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY
+{
+ my $self = shift;
+}
+
+sub initialize
+{
+ my $self = shift;
+ $self->{file_name} = ""; # name of log file
+ $self->{FILE_H} = undef; # file handle
+
+ $self->{fp_start_time} = +[]; # save first pass starting time
+ $self->{fp_end_time} = +[]; # save first pass ending time
+ $self->{sp_end_time} = +[]; # save second pass ending time
+ $self->{seqs_hit} = 0; # num seqs with at least one trna hit
+ $self->{numscanned} = 0; # total sequences scanned
+ $self->{trnatotal} = 0; # total trnas found by tscan
+
+ $self->{first_pass_base_ct} = 0; # no bases in all seqs in first pass scans
+ $self->{fpass_trna_base_ct} = 0; # no bases in tRNAs in first pass scans
+ $self->{fpos_base_ct} = 0; # no bases in false positive tRNAs
+ $self->{secpass_base_ct} = 0;
+ $self->{coves_base_ct} = 0;
+ $self->{total_secpass_ct} = 0;
+}
+
+sub file_name
+{
+ my $self = shift;
+ if (@_) { $self->{file_name} = shift; }
+ return $self->{file_name};
+}
+
+sub FILE_H
+{
+ my $self = shift;
+ return $self->{FILE_H};
+}
+
+sub start_fp_timer
+{
+ my $self = shift;
+ @{$self->{fp_start_time}} = (times)[0,2,1,3];
+ $self->{fp_end_time} = +[];
+ $self->{sp_end_time} = +[];
+}
+
+sub end_fp_timer
+{
+ my $self = shift;
+ @{$self->{fp_end_time}} = (times)[0,2,1,3];
+}
+
+sub start_sp_timer
+{
+ my $self = shift;
+ if (!defined $self->{fp_end_time}->[0]) {
+ push (@{$self->{fp_end_time}}, @{$self->{fp_start_time}});
+ }
+}
+
+sub end_sp_timer
+{
+ my $self = shift;
+ @{$self->{sp_end_time}} = (times)[0,2,1,3];
+}
+
+sub seqs_hit
+{
+ my $self = shift;
+ if (@_) { $self->{seqs_hit} = shift; }
+ return $self->{seqs_hit};
+}
+
+sub increment_seqs_hit
+{
+ my $self = shift;
+ if (@_) { $self->{seqs_hit} += shift; }
+ else { $self->{seqs_hit} += 1;}
+}
+
+sub numscanned
+{
+ my $self = shift;
+ if (@_) { $self->{numscanned} = shift; }
+ return $self->{numscanned};
+}
+
+sub increment_numscanned
+{
+ my $self = shift;
+ if (@_) { $self->{numscanned} += shift; }
+ else { $self->{numscanned} += 1;}
+}
+
+sub trnatotal
+{
+ my $self = shift;
+ if (@_) { $self->{trnatotal} = shift; }
+ return $self->{trnatotal};
+}
+
+sub increment_trnatotal
+{
+ my $self = shift;
+ if (@_) { $self->{trnatotal} += shift; }
+ else { $self->{trnatotal} += 1;}
+}
+
+sub decrement_trnatotal
+{
+ my $self = shift;
+ if (@_) { $self->{trnatotal} -= shift; }
+ else { $self->{trnatotal} -= 1;}
+}
+
+sub first_pass_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{first_pass_base_ct} = shift; }
+ return $self->{first_pass_base_ct};
+}
+
+sub increment_first_pass_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{first_pass_base_ct} += shift; }
+ else { $self->{first_pass_base_ct} += 1;}
+}
+
+sub fpass_trna_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{fpass_trna_base_ct} = shift; }
+ return $self->{fpass_trna_base_ct};
+}
+
+sub fpos_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{fpos_base_ct} = shift; }
+ return $self->{fpos_base_ct};
+}
+
+sub increment_fpos_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{fpos_base_ct} += shift; }
+ else { $self->{fpos_base_ct} += 1;}
+}
+
+sub secpass_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{secpass_base_ct} = shift; }
+ return $self->{secpass_base_ct};
+}
+
+sub increment_secpass_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{secpass_base_ct} += shift; }
+ else { $self->{secpass_base_ct} += 1;}
+}
+
+sub coves_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{coves_base_ct} = shift; }
+ return $self->{coves_base_ct};
+}
+
+sub increment_coves_base_ct
+{
+ my $self = shift;
+ if (@_) { $self->{coves_base_ct} += shift; }
+ else { $self->{coves_base_ct} += 1;}
+}
+
+sub total_secpass_ct
+{
+ my $self = shift;
+ if (@_) { $self->{total_secpass_ct} = shift; }
+ return $self->{total_secpass_ct};
+}
+
+sub increment_total_secpass_ct
+{
+ my $self = shift;
+ if (@_) { $self->{total_secpass_ct} += shift; }
+ else { $self->{total_secpass_ct} += 1;}
+}
+
+sub open_file {
+ my $self = shift;
+
+ my $success = 0;
+
+ if ($self->{file_name} ne "") {
+ &open_for_append(\$self->{FILE_H}, $self->{file_name});
+ $success = 1;
+ }
+ else {
+ die "Statistics file name is not set.\n"
+ }
+
+ return $success;
+}
+
+sub close_file {
+ my $self = shift;
+
+ if (defined $self->{FILE_H}) {
+ close($self->{FILE_H});
+ }
+}
+
+sub write_line {
+ my $self = shift;
+ my $line = shift;
+
+ my $fh = $self->{FILE_H};
+
+ print $fh $line . "\n";
+}
+
+sub save_firstpass_stats {
+
+ my $self = shift;
+ my $fh = $self->{FILE_H};
+
+ print $fh "First-pass (tRNAscan/EufindtRNA) Stats:\n",
+ "---------------\n";
+ print $fh "Sequences read: $self->{numscanned}\n";
+ print $fh "Seqs w/at least 1 hit: $self->{seqs_hit}\n";
+ print $fh "Bases read: $self->{first_pass_base_ct} (x2 for both strands)\n";
+ print $fh "Bases in tRNAs: $self->{fpass_trna_base_ct}\n";
+ print $fh "tRNAs predicted: $self->{trnatotal}\n";
+ printf $fh "Av. tRNA length: %d\n",
+ int($self->{fpass_trna_base_ct} / &max(1, $self->{trnatotal}));
+ printf $fh "Script CPU time: %.2f s\n",
+ $self->{fp_end_time}->[0] - $self->{fp_start_time}->[0];
+ printf $fh "Scan CPU time: %.2f s\n",
+ $self->{fp_end_time}->[1] - $self->{fp_start_time}->[1];
+ printf $fh "Scan speed: %.1f Kbp/sec\n", $self->{first_pass_base_ct}*2/
+ (&max(0.001, $self->{fp_end_time}->[1] - $self->{fp_start_time}->[1]))/1000;
+ print $fh "\nFirst pass search(es) ended: ",`date`,"\n";
+}
+
+sub save_final_stats {
+
+ my $self = shift;
+ my $opts = shift;
+ my $gc = shift;
+ my $r_prescan_tRNAs = shift;
+ my $r_tab_results = shift;
+ my $fh = $self->{FILE_H};
+ my $second_pass_label = $opts->second_pass_label();
+
+ if ($opts->CM_mode() ne "") {
+ print $fh "$second_pass_label Stats:\n-----------\n";
+
+ if ($opts->tscan_mode() || $opts->eufind_mode()) {
+ print $fh "Candidate tRNAs read: ", scalar(@$r_prescan_tRNAs),"\n";
+ }
+ else {
+ print $fh "Sequences read: $self->{numscanned}\n";
+ }
+ print $fh "$second_pass_label","-confirmed tRNAs: $self->{total_secpass_ct}\n";
+ print $fh "Bases scanned by $second_pass_label: $self->{secpass_base_ct}\n";
+ printf $fh "%% seq scanned by $second_pass_label: %2.1f %%\n",
+ &min(($self->{secpass_base_ct} / &max(1, $self->{first_pass_base_ct} * 2)) * 100,100);
+ printf $fh "Script CPU time: %2.2f s\n", $self->{sp_end_time}->[0] - $self->{fp_end_time}->[0];
+ printf $fh "$second_pass_label CPU time: %2.2f s\n", $self->{sp_end_time}->[1] - $self->{fp_end_time}->[1];
+ printf $fh "Scan speed: %.1f bp/sec\n", $self->{secpass_base_ct}/
+ &max(0.001, $self->{sp_end_time}->[1] - $self->{fp_end_time}->[1]);
+ print $fh "\n$second_pass_label analysis of tRNAs ended: ",`date`,"\n";
+ if ($opts->tscan_mode() || $opts->eufind_mode()) {
+ print $fh "Summary\n--------\n";
+ }
+ }
+ my $total_time = ($self->{sp_end_time}->[0] - $self->{fp_start_time}->[0]) +
+ ($self->{sp_end_time}->[1] - $self->{fp_start_time}->[1]);
+ printf $fh "Overall scan speed: %.1f bp/sec\n",
+ &max($self->{first_pass_base_ct} * 2, $self->{secpass_base_ct}) / &max(0.001, $total_time);
+
+ $self->output_summary($opts, $gc, $r_tab_results);
+}
+
+sub output_summary {
+
+ my $self = shift;
+ my $opts = shift;
+ my $gc = shift;
+ my $r_tab_results = shift;
+ my $fh = $self->{FILE_H};
+
+ my ($trna_ct, $selcys_ct, $stop_sup_ct, $undet_ct, $pseudo_ct,
+ $total, $intron_ct, $line);
+ my (%iso_AR, %ac_AR, %intron_ac_AR);
+ my ($iso, $ac, $acset, $iso_count, $istart, $aa);
+
+
+ $trna_ct = 0;
+ $selcys_ct = 0;
+ $pseudo_ct = 0;
+ $undet_ct = 0;
+ $intron_ct = 0;
+ $stop_sup_ct = 0;
+ $total = 0;
+
+ $line = shift(@$r_tab_results);
+
+ while ($line ne '') {
+
+ if ($line =~ /^(\S+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\S+)\s+(\S+)\s+([0-9\,]+)\s+([0-9\,]+)\s+(\S+)/) {
+ $iso = $5;
+ $ac = $6;
+ $istart = $7;
+
+ if ($iso eq $gc->undef_isotype()) {
+ $undet_ct++;
+ }
+
+ elsif ($iso =~ /Pseudo/) {
+ $pseudo_ct++;
+ $iso_AR{"Pseudo"}++;
+ }
+ elsif ($iso =~ /SeC/) {
+ $selcys_ct++;
+ $iso_AR{"SelCys"}++;
+ $ac_AR{$ac}++;
+ }
+ elsif ($iso eq "Sup") {
+ $iso_AR{"Supres"}++;
+ $stop_sup_ct++;
+ $ac_AR{$ac}++;
+ }
+
+ else {
+ $trna_ct++;
+ $iso_AR{$iso}++;
+ $ac_AR{$ac}++;
+ }
+
+ if ($istart ne "0") {
+ my @introns = split(/\,/, $istart);
+ $intron_ct += scalar(@introns);
+ $intron_ac_AR{$ac} += scalar(@introns);
+ }
+
+ }
+ $line = shift(@$r_tab_results);
+
+ }
+
+ $total = $trna_ct + $selcys_ct + $pseudo_ct + $undet_ct + $stop_sup_ct;
+
+
+ print $fh "\n",
+ "tRNAs decoding Standard 20 AA: $trna_ct\n",
+ "Selenocysteine tRNAs (TCA): $selcys_ct\n",
+ "Possible suppressor tRNAs (CTA,TTA): $stop_sup_ct\n",
+ "tRNAs with undetermined/unknown isotypes: $undet_ct\n",
+ "Predicted pseudogenes: $pseudo_ct\n",
+ " -------\n",
+ "Total tRNAs: $total\n\n",
+
+ "tRNAs with introns: \t$intron_ct\n\n";
+
+ foreach $aa (@{$gc->isotypes()}) {
+ foreach $acset ($gc->ac_list()->{$aa}) {
+ foreach $ac (@$acset) {
+ if (defined($intron_ac_AR{$ac})) {
+ print $fh "| $aa-$ac: $intron_ac_AR{$ac} ";
+ }
+ }
+ }
+ }
+ print $fh "|\n\n";
+ print $fh "Isotype / Anticodon Counts:\n\n";
+
+ foreach $aa (@{$gc->isotypes()}) {
+
+ $iso_count = $iso_AR{$aa} + 0;
+ printf $fh ("%-6s: %d\t", $aa, $iso_count);
+
+ foreach $acset ($gc->ac_list()->{$aa}) {
+ foreach $ac (@$acset) {
+ if ($ac eq " ") {
+ print $fh " ";
+ }
+ else {
+ printf $fh ("%5s: %-6s",$ac,$ac_AR{$ac});
+ }
+ }
+ }
+
+ print $fh "\n";
+
+ }
+ print $fh "\n";
+}
+
+1;
diff --git a/tRNAscanSE/Tscan.pm b/tRNAscanSE/Tscan.pm
new file mode 100644
index 0000000..7e97908
--- /dev/null
+++ b/tRNAscanSE/Tscan.pm
@@ -0,0 +1,393 @@
+# tRNAscanSE/Tscan.pm
+# This class contains parameters and functions for running tRNAscan used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::Tscan;
+
+use strict;
+use tRNAscanSE::Utils;
+
+
+sub new {
+ my $class = shift;
+ my $self = {};
+
+ initialize($self);
+
+ bless ($self, $class);
+ return $self;
+}
+
+sub DESTROY
+{
+ my $self = shift;
+}
+
+sub initialize
+{
+ my $self = shift;
+
+ # set to non-zero if you do NOT want redundant, overlapping hits
+ # found by tRNAscan merged into one hit
+ $self->{keep_tscan_repeats} = 0;
+
+ $self->{tscan_params} = "-s"; # parameter set to be used for tRNAscan
+ # default is "-s" strict params
+ # default for prokaryotes should be relaxed
+ # params "-r"
+
+ $self->{tscan_version} = 1.4; # version of tRNAscan used by tRNAscan-SE
+
+ $self->{tscan_bin} = "trnascan-1.4";
+
+ $self->{tscan_mask} = 1; # Bit-wise masks for source of tRNA hits
+}
+
+sub keep_tscan_repeats
+{
+ my $self = shift;
+ if (@_) { $self->{keep_tscan_repeats} = shift; }
+ return $self->{keep_tscan_repeats};
+}
+
+sub tscan_params
+{
+ my $self = shift;
+ if (@_) { $self->{tscan_params} = shift; }
+ return $self->{tscan_params};
+}
+
+sub tscan_version
+{
+ my $self = shift;
+ if (@_) { $self->{tscan_version} = shift; }
+ return $self->{tscan_version};
+}
+
+sub tscan_bin
+{
+ my $self = shift;
+ if (@_) { $self->{tscan_bin} = shift; }
+ return $self->{tscan_bin};
+}
+
+sub tscan_mask
+{
+ my $self = shift;
+ return $self->{tscan_mask};
+}
+
+sub set_bin {
+
+ my $self = shift;
+ my $bindir = shift;
+
+ # choose correct name for version being run
+ # only version 1.4 is provided with distribution
+
+ if ($self->{tscan_version} == 1.4) {
+ $self->{tscan_bin} = "trnascan-1.4";
+ }
+ elsif ($self->{tscan_version} == 1.39) {
+ $self->{tscan_bin} = "trnascan-1.39";
+ }
+ elsif ($self->{tscan_version} == 2) {
+ $self->{tscan_bin} = "TRNAscan";
+ }
+ elsif ($self->{tscan_version} == 1.3) {
+ $self->{tscan_bin} = "trnascan-1.3";
+ }
+ else {
+ die "FATAL: Illegal tRNAscan version.\n\n";
+ }
+
+ if ($^O =~ /^MSWin/) {
+ $self->{tscan_bin} .= ".exe";
+ }
+
+ if (!(-x $self->{tscan_bin})) {
+ $self->{tscan_bin} = $bindir.$self->{tscan_bin};
+ if (!(-x $self->{tscan_bin})) {
+ die "FATAL: Unable to find ".$self->{tscan_bin}." executable\n\n";
+ }
+ }
+}
+
+sub run_tRNAscan {
+
+ my $self = shift;
+ my ($tmp_fa, $tmp_raw, $start_index, $lib_dir, $seq_name) = @_;
+ my $tscan_version = $self->{tscan_version};
+ my $tscan_bin = $self->{tscan_bin};
+ my $tscan_params = $self->{tscan_params};
+
+ # version provided with distribution
+
+ if ($tscan_version == 1.4) {
+ # run default tRNAscan 1.4 using selected param set
+ system ("$tscan_bin -i $start_index -c $tscan_params $tmp_fa > $tmp_raw");
+ if (&error_exit_status("tRNAscan", $seq_name)) {
+ return -1;
+ }
+ }
+
+ # run tRNAscan without conservative ambiguous base pairing rules
+ # not available in distribution version
+
+ elsif ($tscan_version == 1.39) {
+ system ("$tscan_bin -c $tscan_params $tmp_fa > $tmp_raw");
+ }
+
+ # run tRNAscan v2.0, not available in distribution version
+
+ elsif ($tscan_version == 2) {
+ system ("$tscan_bin -SEQ $tmp_fa -TEMPLATE SEtemplate -OUTPUT $tmp_raw > /dev/null");
+ }
+
+ # run original tRNAscan 1.3, not available in distribution version
+
+ elsif ($tscan_version == 1.3) {
+ if (!(-r "./TPCsignal")) {
+ system ("ln -s ".$lib_dir."TPCsignal TPCsignal");
+ }
+ if (!(-r "./Dsignal")) {
+ system ("ln -s ".$lib_dir."Dsignal Dsignal");
+ }
+ system ("reformat -ld genbank $tmp_fa > tmp.gb");
+ system ("$tscan_bin tmp.gb $tmp_raw > /dev/null");
+ system ("rm tmp.gb");
+ }
+ else {
+ die "FATAL: Illegal tRNAscan version.\n\n";
+ }
+}
+
+
+# Append tRNAscan verbose output to
+# result file with header tag
+
+sub append_verbfile {
+
+ my $self = shift;
+ my ($verb_file, $tmp_fa, $seq_name) = @_;
+
+ &open_for_append(\*TSCANVERB, $verb_file);
+ print TSCANVERB "\n>>>> tRNA-Scan verbose output for <$seq_name>\n\n";
+ close TSCANVERB;
+ system ("cat tscan.verb.out >> $verb_file");
+}
+
+# extract trna hits from raw result file while weeding out repeated hits
+# save non-redundant hits in "hit_list" array
+
+sub process_tRNAscan_hits {
+
+ my $self = shift;
+ my $constants = shift;
+ my $gc = shift;
+ my $stats = shift;
+ my $seq_name = shift;
+ my $r_hit_list = shift;
+ my $tmp_raw = $constants->tmp_raw();
+
+ my ($istart, $iend, $from, $to, $intron, $trnact, $len, $score,
+ $anticodon, $iso_type, $sense_strand, $pos, $i);
+
+ $trnact = 0; # trna count for this sequence
+ $istart = 0; $iend = 0; # intron bounds
+ $from = 0; $to = 0; # tRNA bounds
+ $len = 0; # tRNA length
+ $intron = 0; # intron present? flag
+ $anticodon = '';
+ $iso_type = '';
+ $score = 0;
+
+ # open trnascan raw output file for current seq
+
+ open (TSCANRAW, "$tmp_raw") ||
+ die ("FATAL: Unable to open temp raw output file $tmp_raw\n\n");
+
+ # parse one complete hit per call
+ while ($self->parse_tscan_hit($constants, $gc, \*TSCANRAW, \$from, \$to, \$sense_strand,
+ \$istart, \$iend, \$intron, \$len, \$iso_type,
+ \$anticodon, \$pos)) {
+
+ if ($self->{keep_tscan_repeats} ||
+ (!$self->merge_repeat_hit($stats, $r_hit_list, \$trnact, $from, $to,
+ $sense_strand, $iso_type,$score)))
+
+ # if NOT a repeat hit, put it on the hit list
+ {
+ # check to see if tscan 1.3 has incorrectly reported
+ # start/end index (happens occassionally)
+
+ if ((abs($to - $from) + 1) != $len) {
+ if ($sense_strand) {
+ $to = $from + $len - 1; }
+ else {
+ $to = $from - $len + 1; }
+ }
+
+ $i=0;
+ while (($i < scalar(@$r_hit_list)) && ($r_hit_list->[$i]{position} < $pos)) {
+ $i++;
+ }
+
+ # save non-redundant hit
+ splice(@$r_hit_list, $i ,0, {
+ seqname => $seq_name,
+ start => $from, end => $to,
+ type => $iso_type, acodon => $anticodon,
+ istart => $istart, iend => $iend,
+ sen_strand => $sense_strand,
+ position => $pos, score => 0,
+ source => $self->{tscan_mask},
+ });
+
+ $trnact++;
+ $stats->increment_trnatotal();
+
+ }
+
+ } # while (&Parse_tscan_hit), more hits to process for cur seq
+}
+
+sub parse_tscan_hit {
+
+ my $self = shift;
+ my $constants = shift;
+ my $gc = shift;
+ my ($TSCANRAW, $r_from, $r_to, $r_sense_strand,
+ $r_istart, $r_iend, $r_intron, $r_len, $r_type, $r_anticodon, $r_pos) = @_;
+
+ my ($trna_seq) = '';
+
+ # clear intron info parsing each hit
+ $$r_istart = 0; $$r_iend = 0; $$r_intron = 0;
+
+ if ($self->{tscan_version} <= 1.4) {
+
+ while (<$TSCANRAW>) {
+ if (/^start position=\s*(\d+)\s*end position=\s*(\d+)/o)
+ {
+ $$r_from = $1;
+ $$r_to = $2;
+ if ($$r_from < $$r_to) {
+ $$r_sense_strand = 1;
+ $$r_pos = $$r_from }
+ else {
+ $$r_sense_strand = 0;
+ $$r_pos = $constants->REALLY_BIG_NUMBER() - $$r_from + 1;
+ }
+ }
+
+ elsif (/^potential tRNA sequence=\s(.+)\n/o) {
+ $trna_seq = $1; $$r_len = length($trna_seq);
+ }
+ elsif (/^tRNA predict as a tRNA-\s*(\S+)\s*: anticodon (\S+)/o) {
+ $$r_type = $1;
+ $$r_anticodon = $2;
+ }
+ elsif (/^anticodon includes unknown bases/o) {
+ $$r_type = $gc->undef_isotype();
+ $$r_anticodon = $gc->undef_anticodon();
+ }
+ elsif (/^potential intron between positions\s*(\d+)\s*(\d+)/o) {
+ $$r_istart = $1;
+ $$r_iend = $2;
+ $$r_intron = 1;
+ }
+ # flag for end of current tRNA hit info
+ elsif (/^number of base pairing in the anticodon/o) {
+ return 1;
+ }
+ elsif (/^number of predicted tRNA=(\d+)/o) {
+ return 0; # end of hits for this seq
+ }
+ }
+ return 0; # reached end of raw hits file
+ }
+
+ else {
+ die "FATAL: Illegal tRNAscan version selected.\n\n";
+ }
+}
+
+# check current hit for redundancy against all previous hits in hitlist
+#
+# if it IS a repeat, merge it with overlapping hit and return 1
+# if it doesn't overlap with any hits, return 0
+
+sub merge_repeat_hit {
+
+ my $self = shift;
+ my $stats = shift;
+ my ($r_hit_list, $r_trnact, $from, $to, $sense_strand, $iso_type, $score) = @_;
+ my ($i);
+
+ foreach $i (0..(scalar(@$r_hit_list) - 1)) {
+
+ if ($sense_strand) {
+ if (($r_hit_list->[$i]{sen_strand} == 1) &&
+ (&seg_overlap($from, $to, $r_hit_list->[$i]{start},
+ $r_hit_list->[$i]{end})))
+ {
+ $r_hit_list->[$i]{start} = &min($from, $r_hit_list->[$i]{start});
+ $r_hit_list->[$i]{end} = &max($to, $r_hit_list->[$i]{end});
+ $r_hit_list->[$i]{source} = $r_hit_list->[$i]{source} | $self->{tscan_mask};
+ $r_hit_list->[$i]{type} = $iso_type;
+ $r_hit_list->[$i]{score} = $score;
+
+ # check to see if extended endpoint overlaps
+ # i+1 hit's start boundary
+ # if so, combine hit[i] and hit[i+1] into one
+ # hit and delete hit[i+1]
+ if (($i != (scalar(@$r_hit_list) - 1)) && ($r_hit_list->[$i+1]{sen_strand})
+ && ($r_hit_list->[$i]{end} >= $r_hit_list->[$i+1]{start}))
+ {
+ $r_hit_list->[$i]{end} = &max($r_hit_list->[$i]{end}, $r_hit_list->[$i+1]{end});
+ $r_hit_list->[$i]{source} = $r_hit_list->[$i]{source} | $r_hit_list->[$i+1]{source};
+
+ splice(@$r_hit_list,$i+1,1); # toss out overlapping hit
+ $$r_trnact--;
+ $stats->decrement_trnatotal();
+ }
+ return 1; # exit loop immediately
+ }
+ }
+ else # else (antisense) strand
+ {
+ if (($r_hit_list->[$i]{sen_strand} == 0) &&
+ (&seg_overlap($to, $from, $r_hit_list->[$i]{end}, $r_hit_list->[$i]{start})))
+ {
+ $r_hit_list->[$i]{start} = &max($from, $r_hit_list->[$i]{start});
+ $r_hit_list->[$i]{end} = &min($to, $r_hit_list->[$i]{end});
+ $r_hit_list->[$i]{source} = $r_hit_list->[$i]{source} | $self->{tscan_mask};
+ $r_hit_list->[$i]{type} = $iso_type;
+ $r_hit_list->[$i]{score} = $score;
+
+ if (($i != (scalar(@$r_hit_list) - 1)) &&
+ ($r_hit_list->[$i]{end} <= $r_hit_list->[$i+1]{start}))
+ {
+ $r_hit_list->[$i]{end} = &min($r_hit_list->[$i]{end}, $r_hit_list->[$i+1]{end});
+ $r_hit_list->[$i]{source} = $r_hit_list->[$i]{source} | $r_hit_list->[$i+1]{source};
+
+ splice(@$r_hit_list,$i+1,1); # toss out overlapping hit
+ $$r_trnact--;
+ $stats->decrement_trnatotal();
+ }
+ return 1; # exit loop immediately
+ }
+ } # else (antisense) strand
+
+ } # for each (hit)
+
+ return 0; # current hit is not a repeat
+}
+
+1;
\ No newline at end of file
diff --git a/tRNAscanSE/Utils.pm b/tRNAscanSE/Utils.pm
new file mode 100644
index 0000000..d58aa35
--- /dev/null
+++ b/tRNAscanSE/Utils.pm
@@ -0,0 +1,175 @@
+# tRNAscanSE/Utils.pm
+# This module contains utility functions used in tRNAscan-SE.
+#
+# --------------------------------------------------------------
+# This module is part of the tRNAscan-SE program.
+# Copyright (C) 2011 Patricia Chan and Todd Lowe
+# --------------------------------------------------------------
+#
+
+package tRNAscanSE::Utils;
+use strict;
+
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT = qw(check_output_file open_for_read open_for_write open_for_append tempname
+ print_filename rev_comp_seq max min seg_overlap error_exit_status trim);
+
+our %comp_map = ( # Complement map
+ 'A' => 'T', 'T' => 'A', 'U' => 'A',
+ 'G' => 'C', 'C' => 'G',
+ 'Y' => 'R', 'R' => 'Y',
+ 'S' => 'W', 'W' => 'S',
+ 'M' => 'K', 'K' => 'M',
+ 'B' => 'V', 'V' => 'B',
+ 'H' => 'D', 'D' => 'H',
+ 'N' => 'N', 'X' => 'X',
+ '?' => '?');
+
+sub check_output_file {
+ my ($fname, $prompt_for_overwrite) = @_;
+ my ($ans, $ansline);
+
+ if ((-e $fname) && ($prompt_for_overwrite)) {
+ print STDERR "\nWARNING: $fname exists already.\n\n",
+ " (O)verwrite file, (A)ppend to file, or (Q)uit program? ";
+ $ansline = <STDIN>;
+ $ans = substr($ansline, 0, 1);
+ while ($ans !~ /[AOQaoq]/) {
+ print STDERR "\nReply (O)verwrite (A)ppend, or (Q)uit [O/A/Q]: ";
+ $ansline = <STDIN>;
+ $ans = substr($ansline, 0, 1);
+ }
+ if (uc($ans) eq 'Q') {
+ die "\ntRNAscan-SE aborted.\n\n";
+ }
+ elsif (uc($ans) eq 'A') {
+ print STDERR "\n Appending to $fname...\n";
+ open(FHAND,">>$fname") ||
+ die "Unable to open $fname for appending. ",
+ "Aborting program.\n";
+ close(FHAND);
+ return; # successful exit status
+ }
+ else { # $ans eq 'O'verwrote
+ print STDERR "\n Overwriting $fname...\n";
+ }
+ }
+ open(FHAND, ">$fname") ||
+ die "Unable to open $fname for writing. Aborting program.\n";
+ close(FHAND);
+}
+
+sub open_for_read {
+ my ($FHAND, $fname) = @_;
+
+ open($$FHAND, "$fname") ||
+ die "Unable to open $fname for reading. Aborting program.\n";
+}
+
+sub open_for_write {
+ my ($FHAND, $fname) = @_;
+
+ open($$FHAND, ">$fname") ||
+ die "Unable to open $fname for writing. Aborting program.\n";
+}
+
+sub open_for_append {
+ my ($FHAND, $fname) = @_;
+
+ open ($$FHAND, ">>$fname") ||
+ die "FATAL: Unable to open output file ",
+ &print_filename($fname), "\n\n";
+}
+
+# Function: tempname
+# by SE, modification by TMJL
+# Returns a unique temporary filename.
+#
+# Normally puts temp files to /tmp. This directory can
+# be overridden by an environment variable TMPDIR.
+#
+
+sub tempname {
+ my ($temp_dir, $exten) = @_;
+ my ($name);
+
+ $name = "$temp_dir/tscan$$"."$exten";
+ return $name;
+}
+
+sub print_filename {
+ my ($fname) = @_;
+ if ($fname eq "-") {
+ $fname = "Standard output";
+ }
+ return $fname;
+}
+
+sub rev_comp_seq {
+ my ($seq) = @_;
+ my ($seqlen) = length($seq);
+ my ($i, $j, $rcseq);
+
+ $rcseq = 'X' x $seqlen; # pre-extending string for efficiency
+ for ($i = ($seqlen - 1), $j = 0; $i > -1; $i--, $j++) {
+ substr($rcseq, $j, 1) = $comp_map{(substr($seq, $i, 1))};
+ }
+ return $rcseq;
+}
+
+sub min {
+ my ($a, $b) = @_;
+ if ($a < $b) {
+ return ($a); }
+ else {
+ return ($b);
+ }
+}
+
+sub max {
+ my ($a, $b) = @_;
+ if ($a > $b) {
+ return ($a);
+ }
+ else {
+ return ($b);
+ }
+}
+
+sub seg_overlap {
+ my ($seg1_a, $seg1_b, $seg2_a, $seg2_b) = @_;
+
+ if ((($seg1_a >= $seg2_a) && ($seg1_a <= $seg2_b)) ||
+ (($seg1_b >= $seg2_a) && ($seg1_b <= $seg2_b)) ||
+ (($seg2_a >= $seg1_a) && ($seg2_a <= $seg1_b)) ||
+ (($seg2_b >= $seg1_a) && ($seg2_b <= $seg1_b))) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+sub error_exit_status {
+ my ($prog_name, $seq_name) = @_;
+
+ if ($? != 0) {
+ print STDERR "$prog_name could not complete successfully for $seq_name.\n",
+ "Possible memory allocation problem or missing file. (Exit code=",$?,").\n\n";
+ return 1;
+ }
+ else {
+ return 0;
+ }
+}
+
+sub trim
+{
+ my $string = shift;
+ $string =~ s/^\s+//;
+ $string =~ s/\s+$//;
+ return $string;
+}
+
+1;
diff --git a/testrun.ref b/testrun.ref
new file mode 100644
index 0000000..41d07a3
--- /dev/null
+++ b/testrun.ref
@@ -0,0 +1,8 @@
+Sequence tRNA Bounds tRNA Anti Intron Bounds Cove Hit
+Name tRNA # Begin End Type Codon Begin End Score Origin
+-------- ------ ---- ------ ---- ----- ----- ---- ------ ------
+CELF22B7 1 12619 12738 Leu CAA 12657 12692 60.01 Bo
+CELF22B7 2 19480 19561 Ser AGA 0 0 80.44 Bo
+CELF22B7 3 26367 26439 Phe GAA 0 0 80.32 Bo
+CELF22B7 4 26992 26920 Phe GAA 0 0 80.32 Bo
+CELF22B7 5 23765 23694 Pro CGG 0 0 75.76 Bo
diff --git a/trace.c b/trace.c
new file mode 100644
index 0000000..087c35c
--- /dev/null
+++ b/trace.c
@@ -0,0 +1,603 @@
+/* trace.c
+ * cove 1.0: Mon May 17 09:38:14 1993
+ * moved to cove 2.0, Mon Sep 6 13:34:55 1993
+ *
+ * Unlike a traceback of a normal HMM alignment, which is linear,
+ * the traceback of a covariance HMM is a tree structure. Here
+ * we provide support for the traceback data structures: the
+ * tree itself, and a pushdown stack used for traversing the
+ * tree.
+ *
+ * The trace tree structure has a dummy node at its beginning,
+ * and dummy end nodes at the termination of each branch. Non-BIFURC
+ * states have a NULL right branch.
+ *
+ * The pushdown stack structure has a dummy begin node, and the
+ * end is signified by a final NULL ptr.
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#include "structs.h" /* struct trace_s and struct tracestack_s */
+#include "funcs.h"
+#include "version.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+#ifdef DEBUG
+#include <assert.h>
+#endif
+
+/* Function: InitTrace()
+ *
+ * Purpose: Initialize a traceback tree structure.
+ * ret_tmem may be passed as NULL for default behavior;
+ * if ret_tmem is passed, enables optimized memory
+ * behavior for traces.
+ *
+ * Return: ptr to the new tree.
+ */
+void
+InitTrace(struct trace_s **ret_new, struct trmem_s **ret_tmem)
+{
+ struct trace_s *new;
+ struct trace_s *end;
+ struct trmem_s *pool;
+
+ if (ret_tmem != NULL)
+ {
+ InitTracepool(&pool);
+ new = PopTracepool(pool);
+ }
+ else if ((new = (struct trace_s *) malloc (sizeof(struct trace_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+
+ new->emitl = new->emitr = -1;
+ new->nodeidx = 0;
+ new->type = uBEGIN_ST;
+ new->nxtr = NULL;
+ new->prv = NULL;
+
+ if (ret_tmem != NULL)
+ end = PopTracepool(pool);
+ else if ((end = (struct trace_s *) malloc (sizeof(struct trace_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ end->type = uEND_ST;
+ end->emitl = end->emitr = end->nodeidx = -1;
+ end->nxtr = end->nxtl = NULL;
+
+ end->prv = new;
+ new->nxtl = end;
+
+ *ret_new = new;
+ if (ret_tmem != NULL) *ret_tmem = pool;
+}
+
+/* Function: AttachTrace()
+ *
+ * Purpose: attach a new node to a tracetree node.
+ * There are dummy END nodes.
+ *
+ * Because of the mechanics of tracebacks through a Viterbi matrix,
+ * we have to make sure that BIFURC children are attached
+ * right first, left second.
+ *
+ * trmem_s may be NULL (default behavior) or an active
+ * trace pool (optimized memory behavior)
+ *
+ * Returns: ptr to the new node, or NULL on failure.
+ */
+struct trace_s *
+AttachTrace(struct trace_s *parent,
+ struct trmem_s *pool,
+ int emitl,
+ int emitr,
+ int nodeidx,
+ int type)
+{
+ struct trace_s *new;
+ struct trace_s *end;
+
+ if (parent->nxtr != NULL)
+ Die("That trace node is already full, fool.");
+
+ /* If left branch is already connected to something, swap it over to the
+ * right (thus enforcing the necessary rule that BIFURCS attach to the right
+ * branch first), and attach a new dummy end to the left branch.
+ */
+ if (parent->nxtl->nxtl != NULL)
+ {
+ parent->nxtr = parent->nxtl;
+
+ if (pool != NULL)
+ end = PopTracepool(pool);
+ else if ((end = (struct trace_s *) malloc (sizeof(struct trace_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ end->type = uEND_ST;
+ end->emitl = end->emitr = end->nodeidx = -1;
+ end->nxtl = end->nxtr = NULL;
+
+ end->prv = parent;
+ parent->nxtl = end;
+ }
+
+ if (pool != NULL)
+ new = PopTracepool(pool);
+ else if ((new = (struct trace_s *) malloc (sizeof(struct trace_s))) == NULL)
+ Die("Memory allocation failure at %s line %d", __FILE__, __LINE__);
+ new->nxtr = NULL;
+
+ new->nxtl = parent->nxtl;
+ new->prv = parent;
+ parent->nxtl->prv = new; /* end state also points back, to new */
+ parent->nxtl = new;
+
+ new->emitl = emitl;
+ new->emitr = emitr;
+ new->nodeidx = nodeidx;
+ new->type = type;
+
+ return new;
+}
+
+void
+FreeTrace(struct trace_s *tr, struct trmem_s *pool)
+{
+ if (pool == NULL)
+ {
+ struct tracestack_s *stack;
+ struct trace_s *currtr;
+
+ stack = InitTracestack();
+ PushTracestack(stack, tr);
+
+ while ((currtr = PopTracestack(stack)) != NULL)
+ {
+ if (currtr->nxtr != NULL)
+ PushTracestack(stack, currtr->nxtr);
+ if (currtr->nxtl != NULL)
+ PushTracestack(stack, currtr->nxtl);
+ free(currtr);
+ }
+ FreeTracestack(stack);
+ }
+ else
+ FreeTracepool(pool);
+}
+
+void
+DeleteTracenode(struct trace_s *oldtr, struct trmem_s *pool)
+{
+ struct trace_s *parent;
+
+ parent = oldtr->prv;
+
+ parent->nxtl = oldtr->nxtl;
+ parent->nxtr = oldtr->nxtr;
+ oldtr->nxtl->prv = parent;
+ if (oldtr->nxtr) oldtr->nxtr->prv = parent;
+ if (pool == NULL) free(oldtr);
+}
+
+/* Functions: InitTracepool(), PopTracepool(), FreeTracepool()
+ *
+ * Purpose: Malloc() optimizations for building lots of
+ * trace trees. A "trace pool" just lets me malloc
+ * a lot of trace_s structures at once (InitTracepool).
+ * They are retrieved one at a time using PopTracepool().
+ * When done (free'ing the trace), one would call
+ * FreeTracepool().
+ *
+ * Make one trace pool per trace, if using this optimization.
+ */
+void
+InitTracepool(struct trmem_s **ret_tmem)
+{
+ struct trmem_s *tmem;
+
+ tmem = (struct trmem_s *) MallocOrDie (sizeof(struct trmem_s));
+ tmem->next = 0;
+ tmem->num = TMEM_BLOCK;
+ tmem->pool = (struct trace_s *) MallocOrDie (TMEM_BLOCK * sizeof(struct trace_s));
+ tmem->used = InitTracestack();
+ *ret_tmem = tmem;
+}
+struct trace_s *
+PopTracepool(struct trmem_s *tmem)
+{
+ struct trace_s *tr;
+ if (tmem->next == tmem->num)
+ { /* need a new pool */
+ PushTracestack(tmem->used, tmem->pool);
+ tmem->next = 0;
+ tmem->num = TMEM_BLOCK;
+ tmem->pool = (struct trace_s *) MallocOrDie (TMEM_BLOCK * sizeof(struct trace_s));
+ }
+ tr = tmem->pool + tmem->next;
+ tmem->next++;
+ return tr;
+}
+void
+FreeTracepool(struct trmem_s *tmem)
+{
+ struct trace_s *pop;
+
+ while ((pop = PopTracestack(tmem->used)) != NULL)
+ free(pop);
+ FreeTracestack(tmem->used);
+ free(tmem->pool);
+ free(tmem);
+}
+
+
+/* Functions: InitTracestack()
+ * PushTracestack()
+ * PopTracestack()
+ * FreeTracestack()
+ *
+ * Purpose: Implementation of the pushdown stack for
+ * traversing traceback trees.
+ */
+struct tracestack_s *
+InitTracestack(void)
+{
+ struct tracestack_s *stack;
+
+ stack = (struct tracestack_s *) MallocOrDie (sizeof(struct tracestack_s));
+ stack->next = 0;
+ stack->num = TSTACK_BLOCK;
+ stack->list = (struct trace_s **) MallocOrDie (sizeof(struct trace_s *) * TSTACK_BLOCK);
+ return stack;
+}
+
+void
+PushTracestack(struct tracestack_s *stack, struct trace_s *tracenode)
+{
+ if (stack->next == stack->num)
+ {
+ stack->num += TSTACK_BLOCK;
+ stack->list = (struct trace_s **) ReallocOrDie (stack->list, sizeof(struct trace_s *) * stack->num);
+ }
+ stack->list[stack->next] = tracenode;
+ stack->next++;
+}
+struct trace_s *
+PopTracestack(struct tracestack_s *stack)
+{
+ struct trace_s *pop;
+
+ if (stack->next == 0) return NULL;
+ stack->next--;
+ pop = stack->list[stack->next];
+ return pop;
+}
+void
+FreeTracestack(struct tracestack_s *stack)
+{
+ free(stack->list);
+ free(stack);
+}
+
+
+
+/* Function: TraceCount()
+ *
+ * Purpose: Given a trace structure, and the sequence it traces across,
+ * and a nascent model (counts form), bump the appropriate
+ * emission and transition counters in the model.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+TraceCount(struct cm_s *cm, /* model */
+ char *seq, /* sequence, 0..len-1 */
+ double weight, /* weight on sequence */
+ struct trace_s *tr) /* traceback */
+{
+ struct tracestack_s *dolist; /* stack for traversal of traceback tree */
+ struct trace_s *curr; /* current node in the tree */
+ int symr, syml;
+#ifdef DEBUG
+ int len;
+ len = strlen(seq);
+#endif
+
+ dolist = InitTracestack();
+ PushTracestack(dolist, tr->nxtl);
+
+ while ((curr = PopTracestack(dolist)) != NULL)
+ {
+ /* ignore END states */
+ if (curr->nodeidx == -1 || curr->nxtl == NULL)
+ continue;
+
+ /* BIFURC states: no transits, no emission */
+ if (curr->nxtr != NULL)
+ {
+#ifdef DEBUG
+ assert(curr->nxtr != NULL && curr->nxtl != NULL);
+#endif
+ PushTracestack(dolist, curr->nxtr);
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uINSL_ST)
+ {
+#ifdef DEBUG
+ assert(curr->emitl >= 0 && curr->emitl < len);
+#endif
+ syml = SymbolIndex(seq[curr->emitl]);
+#ifdef DEBUG
+ assert(syml >= 0 && syml < 4);
+ assert(curr->nodeidx >= 0 && curr->nodeidx < cm->nodes);
+ assert(curr->nxtl != NULL);
+#endif
+ cm->nd[curr->nodeidx].tmx[INSL_ST][StatetypeIndex(curr->nxtl->type)] += weight;
+ cm->nd[curr->nodeidx].il_emit[syml] += weight;
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uINSR_ST)
+ {
+#ifdef DEBUG
+ assert(curr->emitr >= 0 && curr->emitr < len);
+#endif
+ symr = SymbolIndex(seq[curr->emitr]);
+#ifdef DEBUG
+ assert(symr >= 0 && symr < 4);
+ assert(curr->nodeidx >= 0 && curr->nodeidx < cm->nodes);
+ assert(curr->nxtl != NULL);
+#endif
+ cm->nd[curr->nodeidx].tmx[INSR_ST][StatetypeIndex(curr->nxtl->type)] += weight;
+ cm->nd[curr->nodeidx].ir_emit[symr] += weight;
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uMATP_ST)
+ {
+#ifdef DEBUG
+ assert(curr->emitr >= 0 && curr->emitr < len);
+ assert(curr->emitl >= 0 && curr->emitl < len);
+#endif
+ syml = SymbolIndex(seq[curr->emitl]);
+ symr = SymbolIndex(seq[curr->emitr]);
+#ifdef DEBUG
+ assert(syml >= 0 && syml < 4);
+ assert(symr >= 0 && symr < 4);
+ assert(curr->nodeidx > 0 && curr->nodeidx < cm->nodes);
+ assert(curr->nxtl != NULL);
+#endif
+ cm->nd[curr->nodeidx].tmx[MATP_ST][StatetypeIndex(curr->nxtl->type)] += weight;
+ cm->nd[curr->nodeidx].mp_emit[syml][symr] += weight;
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uMATL_ST)
+ {
+#ifdef DEBUG
+ assert(curr->emitl >= 0 && curr->emitl < len);
+#endif
+ syml = SymbolIndex(seq[curr->emitl]);
+#ifdef DEBUG
+ assert(syml >= 0 && syml < 4);
+ assert(curr->nodeidx > 0 && curr->nodeidx < cm->nodes);
+ assert(curr->nxtl != NULL);
+#endif
+ cm->nd[curr->nodeidx].tmx[MATL_ST][StatetypeIndex(curr->nxtl->type)] += weight;
+ cm->nd[curr->nodeidx].ml_emit[syml] += weight;
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uMATR_ST)
+ {
+#ifdef DEBUG
+ assert(curr->emitr >= 0 && curr->emitr < len);
+#endif
+ symr = SymbolIndex(seq[curr->emitr]);
+#ifdef DEBUG
+ assert(symr >= 0 && symr < 4);
+ assert(curr->nodeidx > 0 && curr->nodeidx < cm->nodes);
+ assert(curr->nxtl != NULL);
+#endif
+ cm->nd[curr->nodeidx].tmx[MATR_ST][StatetypeIndex(curr->nxtl->type)] += weight;
+ cm->nd[curr->nodeidx].mr_emit[symr] += weight;
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else /* DEL or BEGIN state */
+ {
+#ifdef DEBUG
+ assert(curr->nodeidx >= 0 && curr->nodeidx < cm->nodes);
+ assert(curr->nxtl->type >= 0 && curr->nxtl->type < STATETYPES);
+ assert(curr->nxtl != NULL);
+#endif
+ cm->nd[curr->nodeidx].tmx[DEL_ST][StatetypeIndex(curr->nxtl->type)] += weight;
+ PushTracestack(dolist, curr->nxtl);
+ }
+ }
+
+ FreeTracestack(dolist);
+ return 1;
+}
+
+
+
+/* Function: TraceCountPrior()
+ *
+ * Purpose: Same as above, except that we register the counts
+ * in a prior instead of a model. Used for "training"
+ * new priors.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+TraceCountPrior(struct cm_s *cm, /* covariance model */
+ struct prior_s *prior, /* prior to count into */
+ char *seq, /* sequence, 0..len-1 */
+ double weight, /* weight on sequence */
+ struct trace_s *tr) /* traceback */
+{
+ struct tracestack_s *dolist; /* stack for traversal of traceback tree */
+ struct trace_s *curr; /* current node in the tree */
+ int symr, syml;
+ int fnode, tnode;
+ int fs, ts;
+
+ dolist = InitTracestack();
+ PushTracestack(dolist, tr->nxtl);
+
+ while ((curr = PopTracestack(dolist)) != NULL)
+ {
+ /* ignore END states */
+ if (curr->nodeidx == -1 || curr->nxtl == NULL)
+ continue;
+
+ /* BIFURC states: no transits, no emission */
+ if (curr->nxtr != NULL)
+ {
+ PushTracestack(dolist, curr->nxtr);
+ PushTracestack(dolist, curr->nxtl);
+ continue;
+ }
+
+ syml = symr = 0;
+ if (curr->emitl != -1 && !isgap(seq[curr->emitl]))
+ syml = SymbolIndex(seq[curr->emitl]);
+ if (curr->emitr != -1 && !isgap(seq[curr->emitr]))
+ symr = SymbolIndex(seq[curr->emitr]);
+ fnode = cm->nd[curr->nodeidx].type;
+ tnode = (cm->nd[curr->nodeidx].nxt != -1) ? cm->nd[cm->nd[curr->nodeidx].nxt].type : END_NODE;
+ fs = StatetypeIndex(curr->type);
+ ts = (cm->nd[curr->nodeidx].nxt != -1) ? StatetypeIndex(curr->nxtl->type) : END_ST;
+
+ /* Verify where we're writing in memory. Had some problems here!
+ */
+ if (fnode < 0 || fnode > 6) Die("fnode is %d", fnode);
+ if (tnode < 0 || tnode > 3) Die("tnode is %d", tnode);
+ if (fs < 0 || fs >= STATETYPES) Die("fs is %d", fs);
+ if (ts < 0 || ts >= STATETYPES) Die("ts is %d", ts);
+ if (syml < 0 || syml >= ALPHASIZE) Die("syml is %d", syml);
+ if (symr < 0 || symr >= ALPHASIZE) Die("symr is %d", symr);
+
+
+ prior->tprior[fnode][tnode][fs][ts] += weight;
+
+ switch (curr->type) {
+ case uMATP_ST: prior->matp_prior[syml][symr] += weight; break;
+ case uMATL_ST: prior->matl_prior[syml] += weight; break;
+ case uMATR_ST: prior->matr_prior[symr] += weight; break;
+ case uINSL_ST: prior->insl_prior[syml] += weight; break;
+ case uINSR_ST: prior->insr_prior[symr] += weight; break;
+ case uDEL_ST: break;
+ default: Die("no such state type %d", curr->type);
+ }
+
+ PushTracestack(dolist, curr->nxtl);
+ }
+ FreeTracestack(dolist);
+ return 1;
+}
+
+
+
+
+
+
+/* Function: TraceScore()
+ *
+ * Purpose: Given a trace structure, and the sequence it traces across,
+ * and a model (probability form), calculate the log-odds
+ * probability score.
+ *
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+double
+TraceScore(struct cm_s *cm, /* model */
+ char *seq, /* sequence, 0..len-1 */
+ struct trace_s *tr) /* traceback */
+{
+ struct tracestack_s *dolist; /* stack for traversal of traceback tree */
+ struct trace_s *curr; /* current node in the tree */
+ int symr, syml;
+ double score;
+
+ score = 0;
+ dolist = InitTracestack();
+ PushTracestack(dolist, tr->nxtl);
+ while ((curr = PopTracestack(dolist)) != NULL)
+ {
+ /* ignore END states */
+ if (curr->nodeidx == -1 || curr->nxtl == NULL)
+ continue;
+
+ /* BIFURC states: no transits, no emission */
+ if (curr->nxtr != NULL)
+ {
+ PushTracestack(dolist, curr->nxtr);
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uINSL_ST)
+ {
+ syml = SymbolIndex(seq[curr->emitl]);
+ score += log(cm->nd[curr->nodeidx].tmx[INSL_ST][StatetypeIndex(curr->nxtl->type)]);
+ score += log(cm->nd[curr->nodeidx].il_emit[syml]);
+ score += log(4.0); /* for log-odds */
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uINSR_ST)
+ {
+ symr = SymbolIndex(seq[curr->emitr]);
+ score += log(cm->nd[curr->nodeidx].tmx[INSR_ST][StatetypeIndex(curr->nxtl->type)]);
+ score += log(cm->nd[curr->nodeidx].ir_emit[symr]);
+ score += log(4.0); /* for log-odds */
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uMATP_ST)
+ {
+ syml = SymbolIndex(seq[curr->emitl]);
+ symr = SymbolIndex(seq[curr->emitr]);
+ score += log(cm->nd[curr->nodeidx].tmx[MATP_ST][StatetypeIndex(curr->nxtl->type)]);
+ score += log(cm->nd[curr->nodeidx].mp_emit[syml][symr]);
+ score += log(16.0); /* for log-odds */
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uMATL_ST)
+ {
+ syml = SymbolIndex(seq[curr->emitl]);
+ score += log(cm->nd[curr->nodeidx].tmx[MATL_ST][StatetypeIndex(curr->nxtl->type)]);
+ score += log(cm->nd[curr->nodeidx].ml_emit[syml]);
+ score += log(4.0); /* for log-odds */
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else if (curr->type == uMATR_ST)
+ {
+
+ symr = SymbolIndex(seq[curr->emitr]);
+ score += log(cm->nd[curr->nodeidx].tmx[MATR_ST][StatetypeIndex(curr->nxtl->type)]);
+ score += log(cm->nd[curr->nodeidx].mr_emit[symr]);
+ score += log(4.0); /* for log-odds */
+ PushTracestack(dolist, curr->nxtl);
+ }
+
+ else /* DEL or BEGIN state */
+ {
+ score += log(cm->nd[curr->nodeidx].tmx[DEL_ST][StatetypeIndex(curr->nxtl->type)]);
+ PushTracestack(dolist, curr->nxtl);
+ }
+ }
+
+ FreeTracestack(dolist);
+ score = score / log(2.0); /* convert to bits */
+ return score;
+}
+
diff --git a/train_main.c b/train_main.c
new file mode 100644
index 0000000..8476448
--- /dev/null
+++ b/train_main.c
@@ -0,0 +1,409 @@
+/* train_main.c
+ * 2.0: Fri Oct 1 16:02:11 1993
+ * SRE, Mon Jun 28 17:52:54 1993
+ *
+ * main() for covet: training of a covariance hmm from aligned seqs
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <math.h>
+
+#ifdef NEED_GETOPTH
+#include <getopt.h>
+#endif
+
+#include "structs.h"
+#include "funcs.h"
+#include "squid.h"
+#include "version.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define OPTIONS "a:A:b:fhG:i:mp:s:X:"
+
+static char usage[] = "\
+Usage: covet [-options] <cmfile output> <seqfile in>\n\
+where options are:\n\
+ -a <alignfile> : make starting model from alignment\n\
+ -A <filename> : save alignments to filename.1, etc., for animation\n\
+ -b <backupfile> : each iteration, back up curr model to <backupfile>\n\
+ -f : use flat text save formats, portable but clumsy\n\
+ -G <GOP> : gap-open prob 0 < gop < 1 for random alignment generation\n\
+ -h : print short help and version info\n\
+ -i <cm file> : take start model from <cm file>\n\
+ -m : do maximum likelihood model construction (slow!)\n\
+ -p <prior file> : use prior in <file>; default is Laplace plus-one\n\
+ -s <seed> : set random() seed\n\
+ -X <GEX> : gap-extend prob 0 < gex < 1 for random alignment generation\n";
+
+static char banner[] = "covet: training of a covariance model";
+
+int
+main(int argc, char **argv)
+{
+ char **rseqs; /* training sequences */
+ SQINFO *sqinfo; /* array of sqinfo structures for rseqs */
+ AINFO ainfo; /* alignment info */
+ int nseq; /* number of seqs */
+ char *seqfile; /* training sequence file */
+ int format; /* seqfile format */
+ char *cmfile; /* OUTPUT: saved cvhmm */
+ FILE *cmfp; /* OUTPUT: fp to cvfile */
+ struct cm_s *cm; /* model */
+ struct cm_s *newcm; /* new model */
+ struct istate_s *icm; /* model, integer log odds form */
+ int statenum; /* # of states in the model */
+ struct prior_s *prior; /* prior prob. distributions */
+ int idx; /* counter for sequences */
+ double score; /* score of individual alignment */
+ double totscore; /* summed scores over training seqs */
+ double oldscore; /* previous totscore for old model */
+ double delta; /* fractional change in scores for iteration */
+ int iteration; /* iteration number we're on */
+ struct trace_s **tr; /* tracebacks for each sequence */
+ double rfreq[ALPHASIZE]; /* expected background symbol frequencies */
+
+ int max_iterations;
+ double threshold; /* fractional tolerance, test for convergence */
+ char *aseqfile; /* sequence alignment for model building */
+ char **aseqs; /* aligned sequences in aseqfile */
+ int num_aseqs; /* number of aseqs in aseqfile */
+ char *in_cmfile; /* file containing input model */
+ char *bckfile; /* backup file for saving models each iteration */
+ FILE *bckfp; /* open pointer to backup file */
+ int do_flatformat; /* TRUE if we save in flat text format */
+ int seed; /* seed for random() */
+ char *animateroot; /* root name for alignment animation save files */
+ char animationfile[256]; /* full animation file name (root.1, etc.) */
+ FILE *animfp;
+ double random_open; /* insert-open probability for random alignment */
+ double random_extend; /* ins-extend probability for random alignment */
+ int fast_version; /* do Fastmodelmaker(), not Maxmodelmaker() */
+ char *prifile; /* file to obtain prior from */
+ FILE *prifp; /* open prifile for reading */
+ int watsoncrick; /* if TRUE, annotate only canonical pairs */
+
+ int optc;
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+#ifdef MEMDEBUG
+ unsigned long histid1, histid2, orig_size, current_size;
+#endif
+
+ /***********************************************
+ * Parse command line
+ ***********************************************/
+
+ threshold = 0.01; /* default: 1% */
+ max_iterations = 100;
+ aseqfile = NULL;
+ in_cmfile = NULL;
+ bckfile = NULL;
+ do_flatformat = 0;
+ seed = (int) time (0); /* default: "random" seed */
+ animateroot = NULL;
+ random_open = 0.02;
+ random_extend = 0.39;
+ fast_version = TRUE;
+ prifile = NULL;
+ watsoncrick = TRUE;
+
+ while ((optc = getopt(argc, argv, OPTIONS)) != -1)
+ switch (optc) {
+
+ case 'a': aseqfile = optarg; break;
+ case 'A': animateroot = optarg; break;
+ case 'b': bckfile = optarg; break;
+ case 'f': do_flatformat = 1; break;
+ case 'G': random_open = atof(optarg); break;
+ case 'i': in_cmfile = optarg; break;
+ case 'm': fast_version = FALSE; break;
+ case 'p': prifile = optarg; break;
+ case 's': seed = atoi(optarg); break;
+ case 'X': random_extend = atof(optarg); break;
+ case 'h':
+ printf("%s\n version %s (%s)\n%s\n", banner, RELEASE, RELEASEDATE, usage);
+ exit(0);
+ default:
+ Die("Error: unrecognized option %c\n", optc);
+ }
+
+ if (argc - optind != 2)
+ Die("%s\n", usage);
+
+ if (aseqfile != NULL && in_cmfile != NULL)
+ Die("options -i and -a are exclusive\n%s", usage);
+
+ cmfile = argv[argc-2];
+ seqfile = argv[argc-1];
+ sre_srandom(seed);
+
+#ifdef MEMDEBUG
+ orig_size = malloc_size(&histid1);
+#endif
+
+ /***********************************************
+ * Get sequence data and a prior
+ ***********************************************/
+ /* random background model */
+ rfreq[0] = rfreq[1] = rfreq[2] = rfreq[3] = 0.25;
+
+ if (! SeqfileFormat(seqfile, &format, NULL))
+ Die("Failed to determine format of sequence file %s", seqfile);
+
+ /* read the training seqs from file */
+ if (! ReadMultipleRseqs(seqfile, format, &rseqs, &sqinfo, &nseq))
+ Die("Failed to read sequences from file %s", seqfile);
+
+ for (idx = 0; idx < nseq; idx++)
+ PrepareSequence(rseqs[idx]);
+
+ if (prifile == NULL)
+ {
+ if (! DefaultPrior(&prior))
+ Die("Failed to copy prior probability distribution information");
+ }
+ else
+ {
+ if ((prifp = fopen(prifile, "r")) == NULL)
+ Die("Failed to open prior probability file %s", prifile);
+ if (! ReadPrior(prifp, &prior))
+ Die("Failed to read prior probabilities from %s", prifile);
+ fclose(prifp);
+ }
+
+ /***********************************************
+ * Create the starting model
+ ***********************************************/
+
+ if (aseqfile != NULL) /* A start from an alignment */
+ {
+ if (! SeqfileFormat(aseqfile, &format, NULL))
+ Die("Failed to determine format of seed alignment file %s", aseqfile);
+
+ if (! ReadAlignment(aseqfile, format, &aseqs, &num_aseqs, &ainfo))
+ Die("Failed to read alignment from %s", aseqfile);
+
+ for (idx = 0; idx < num_aseqs; idx++)
+ s2upper(aseqs[idx]);
+
+ if (fast_version)
+ {
+ if (! Fastmodelmaker(aseqs, &ainfo, nseq, prior, 0.70, NULL, &cm, NULL))
+ Die("Fastmodelmaker failed to create starting model from alignment");
+ }
+ else
+ {
+ if (! Maxmodelmaker(aseqs, &ainfo, num_aseqs, -1.0, prior, NULL, &cm, NULL))
+ Die("Failed to create starting model from alignment");
+ }
+ FreeAlignment(aseqs, num_aseqs, &ainfo);
+ }
+
+ else if (in_cmfile) /* A start from an existing model */
+ {
+ if (! ReadCM(in_cmfile, &cm))
+ Die("Failed to read starting model from file %s", in_cmfile);
+ }
+
+ else /* A start from a flat model */
+ {
+ RandomAlignment(rseqs, sqinfo, nseq, random_open, random_extend, &aseqs, &ainfo);
+ if (fast_version)
+ {
+ if (! Fastmodelmaker(aseqs, &ainfo, nseq, prior, 0.70, NULL, &cm, NULL))
+ Die("Fastmodelmaker failed to create starting model from alignment");
+ }
+ else
+ {
+ if (! Maxmodelmaker(aseqs, &ainfo, nseq, -1.0, prior, NULL, &cm, NULL))
+ Die("Failed to create starting model from alignment");
+ }
+ FreeAlignment(aseqs, nseq, &ainfo);
+ }
+
+ /***********************************************
+ * Print banner
+ ***********************************************/
+
+ puts(banner);
+ printf(" release %s, %s\n\n", RELEASE, RELEASEDATE);
+
+ printf("---------------------------------------------------\n");
+ printf("Training data: %s (%d sequences)\n", seqfile, nseq);
+ if (aseqfile != NULL)
+ printf("Starting model: from alignment in %s (%d seqs)\n", aseqfile, num_aseqs);
+ else if (in_cmfile != NULL )
+ printf("Starting model: from existing model in %s\n", in_cmfile);
+ else
+ printf("Starting model: random alignment\n");
+ printf("Prior distributions: %s\n", prifile == NULL ? "plus-one" : prifile);
+ printf("Modelmaking strategy: %s\n", fast_version ? "fast heuristic" : "max likelihood");
+ printf("Convergence threshold: %.4f\n", threshold);
+ printf("Maximum iterations: %d\n", max_iterations);
+ if (bckfile != NULL)
+ printf("Backup model file: %s\n", bckfile);
+ printf("seed for random(): %d\n", seed);
+ printf("---------------------------------------------------\n");
+ puts("");
+
+
+ /***********************************************
+ * Train model by expectation maximization
+ ***********************************************/
+
+ if ((tr = (struct trace_s **) malloc (nseq * sizeof(struct trace_s *))) == NULL)
+ Die("Memory failure, line %d of %s", __LINE__, __FILE__);
+
+ oldscore = -1.0 * HUGE_VAL;
+ iteration = 0;
+ while (iteration < max_iterations)
+ {
+ iteration++;
+ printf("Iteration %4d : model of %d nodes, ", iteration, cm->nodes);
+
+ /* Make a search model
+ */
+ if (! RearrangeCM(cm, rfreq, &icm, &statenum))
+ Die("Failed to make an integer log-odds model");
+
+ /* First we align all the sequences to the model,
+ * and construct a multiple sequence alignment
+ */
+ totscore = 0.0;
+ for (idx = 0; idx < nseq; idx++)
+ {
+ if (! ViterbiAlign(icm, statenum, rseqs[idx], &score, &tr[idx]))
+ Die("viterbi alignment failed on sequence %d", idx);
+ totscore += score;
+ }
+
+ /* An option for producing cool figures and animations:
+ * save the alignment at each iteration, so we can animate
+ * the learning process. I produced covariance matrices
+ * with MIXY for each iteration, and used GNUPLOT to
+ * animate the data as a series of 3D surface plots.
+ */
+ if (animateroot != NULL)
+ {
+ sprintf(animationfile, "%s%d", animateroot, iteration);
+ if ((animfp = fopen(animationfile, "w")) == NULL)
+ Warn("Failed to open animation output file %s", animationfile);
+ else
+ {
+ if (! Traces2Alignment(rseqs, sqinfo, tr, nseq, cm, watsoncrick, &aseqs, &ainfo))
+ Warn("Traces2Alignment() failed for animation");
+
+ WriteSELEX(animfp, aseqs, nseq, &ainfo, 60);
+ FreeAlignment(aseqs, nseq, &ainfo);
+ fclose(animfp);
+ }
+ }
+
+
+ /* If we've converged, stop.
+ * Else, make a new model from the alignment.
+ */
+ delta = (totscore - oldscore) / fabs(totscore);
+ printf("score %.3f, delta %.3f\n", totscore / (double) nseq, delta);
+
+ if (delta > threshold || delta < 0)
+ {
+ if (! Traces2Alignment(rseqs, sqinfo, tr, nseq, cm, watsoncrick, &aseqs, &ainfo))
+ Die("Traces2Alignment() failed");
+
+ for (idx = 0; idx < nseq; idx++)
+ s2upper(aseqs[idx]);
+
+ if (fast_version)
+ {
+ if (! Fastmodelmaker(aseqs, &ainfo, nseq, prior, 0.70, NULL, &newcm, NULL))
+ Die("Failed to create new model from alignment");
+ }
+ else
+ {
+ if (! Maxmodelmaker(aseqs, &ainfo, nseq, -1.0, prior, NULL, &newcm, NULL))
+ Die("Failed to create new model from alignment");
+ }
+
+ FreeAlignment(aseqs, nseq, &ainfo);
+ for (idx = 0; idx < nseq; idx++)
+ FreeTrace(tr[idx], NULL);
+
+ oldscore = totscore;
+ }
+ else
+ {
+ /* we've converged. Free traces and break out of iteration loop.
+ */
+ for (idx = 0; idx < nseq; idx++)
+ FreeTrace(tr[idx], NULL);
+ break;
+ }
+
+ /* switch new model for old
+ */
+ FreeCM(cm);
+ free(icm);
+ cm = newcm;
+
+ /* Training takes a long time, and sysadmins are nasty evil
+ * people who like to shut machines down without warning, particularly
+ * during a long training run right before one gives a talk.
+ * Therefore, we have an option for backing up the model every
+ * iteration so we can resume after a crash or shutdown...
+ */
+ if (bckfile != NULL)
+ {
+ if ((bckfp = fopen(bckfile, "w")) == NULL)
+ Warn("Failed to open backup file %s\n", bckfile);
+ else
+ {
+ if (! WriteBinaryCM(bckfp, newcm))
+ Warn("Failed to save to backup file %s\n", bckfile);
+ fclose(bckfp);
+ }
+ }
+ }
+
+
+ /***********************************************
+ * Save the new model and exit.
+ ***********************************************/
+
+ if ((cmfp = fopen(cmfile, "w")) == NULL)
+ Die("Failed to open %s for writing", cmfile);
+
+ if (do_flatformat && ! WriteCM(cmfp, cm))
+ Die("Failed to save the model to %s", cmfile);
+ else if (! WriteBinaryCM(cmfp, cm))
+ Die("Failed to save the model to %s", cmfile);
+ fclose(cmfp);
+
+ free(tr);
+ FreeCM(cm);
+ for (idx = 0; idx < nseq; idx++)
+ FreeSequence(rseqs[idx], &(sqinfo[idx]));
+ free(sqinfo);
+
+ printf("New covariance model written to file %s\n", cmfile);
+
+#ifdef MEMDEBUG
+ current_size = malloc_size(&histid2);
+
+ if (current_size != orig_size)
+ malloc_list(2, histid1, histid2);
+ else
+ fprintf(stderr, "No memory leaks, sir.\n");
+#endif
+
+ return 0;
+}
+
+
+
diff --git a/trnascan.c b/trnascan.c
new file mode 100644
index 0000000..7aa6df3
--- /dev/null
+++ b/trnascan.c
@@ -0,0 +1,2079 @@
+/*
+ * Copyright, 1991, The Regents of the University of California.
+ * This software was produced by the Los Alamos National Laboratory,
+ * which is operated by the University of California for the United
+ * States Department of Energy under contract W-7405-ENG-36. The
+ * U. S. Government is licensed to use, reproduce, and distribute
+ * this software. Permission is granted to the public to copy and
+ * use this software without charge, provided that this Notice and
+ * any statement of authorship are reproduced on all copies.
+ * Neither the Government nor the University makes any warranty,
+ * express or implied, or assumes any liability or responsibility
+ * for the use of this software.
+*/
+
+#define PROGRAM "trnascan"
+#define RELEASE "1.4 (Feb 96)"
+#define DERIV_VERSION "1.3 (Oct 91)"
+#define BRIEF "'Identification of tRNA genes in genomic DNA'"
+#define CITATION "Fichant and Burks, J. Mol. Biol. (1991) 220:659-671."
+#define MODIF "(modified & optimized for use in tRNAscan-SE package by T. Lowe 2/96)"
+
+/* Modified by T. Lowe 11/95 */
+/* Changes: 1) Search parameters named in #define constants
+ 2) Print statements added to help trace progress
+ of search - VERBOSE constant must be defined
+ Trace statements sent to "tscan.verb.out"
+ 3) Bug that caused program to crash on any non-ACGT
+ sequence characters fixed
+ 4) fgetseq() modified to correctly read in fasta sequences
+ 5) compstrand() modified to increase efficiency &
+ getseqsize() added to allow input sequences of any
+ length (memory allowing)
+ 6) Numerous calls to strlen(sequence) eliminated for
+ efficiency
+ 7) Calls to myindex() function eliminated - replaced
+ by in-line switch statements for efficiency
+ 8) basepairings() function rewritten for efficiency
+ 9) program ANSI-fied to allow compilation with gcc
+ 10) Fixed bug: indexing out of 'ntab' array bounds
+ causing unpredictable side-effects
+
+
+ ** Modifications result in over 200-fold speed increase **
+
+ -T. Lowe 9/2000
+ added "-i" option to allow alternate start of sequence nuc numbering
+
+*/
+
+/* #define NO_AMBIG -use this option to eliminate conservative
+ * calling of 'N's as base pairing matches
+ * in tRNAs (this gives more false positives)
+ */
+
+static char banner[] = "trnascan: scan a sequence for tRNAs";
+
+char usage[] = "\n\
+Usage: trnascan [-options] <seqfile>\n\
+where supported options are:\n\
+-s : use original tRNAscan 1.3 parameters (default)\n\
+-r : use relaxed search parameters (used with tRNAscan-SE)\n\
+-a : use alternate (user-set) search parameters\n\
+-c : suppress credits\n\
+-o <outfile> : write results to <outfile>\n\
+-i <integer> : start sequence numbering at <integer> (def=1)\n\
+-h : print (this) short help message\n\n";
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+#define TRUE 1
+#define FALSE 0
+
+#ifndef TSCANDIR
+#define TSCANDIR "/usr/local/lib/trnascan"
+#endif
+
+
+#define MAXLINE 1000 /* max input seq line length */
+#define BUF_SIZE 100 /* extra room added onto allocated sequence */
+ /* over that determined by getseqsize() */
+
+#define MAX(x,y) (((x) > (y)) ? (x) : (y))
+
+/* #define VERBOSE */
+
+ /* Original version 1.3 default parameters */
+#define ST_SG_CUTOFF 5 /* general score (SG) cutoff */
+#define ST_TPC_SIG_THRESH 0.40 /* TPC signal sequence matrix score */
+ /* cutoff */
+#define ST_D_SIG_THRESH 0.40 /* D signal sequence matrix score cutoff */
+#define ST_TPC_INV 2 /* Number of TPC matrix invariant bases */
+ /* allowed NOT to be invariant */
+#define ST_TPC_INCSG 5 /* Number of base pairs required in TPC */
+ /* stem to increment general score */
+#define ST_TPC_KEEP 4 /* Number of base pairs required in TPC */
+ /* stem to keep trna as a candidate */
+#define ST_D_INV 1 /* Number of D matrix invariant bases */
+ /* allowed NOT to be invariant */
+#define ST_LOOK_FOR_ACLOOP_SG 4 /* Minimum SG required to begin looking */
+ /* for anticodon loop */
+#define ST_ACLOOP_MIN 4 /* Minimum base pairs required in */
+ /* anticodon loop */
+#define ST_AA_INCSG 7 /* Number of base pairs in Amino acyl */
+ /* stem needed to increment SG */
+#define ST_AA_KEEP 6 /* Number of base pairs in Amino acyl */
+ /* stem needed to keep tRNA candidate */
+
+ /* "Relaxed" parameters - used by default with */
+ /* tRNAscan-SE program. Makes tRNAscan into */
+ /* rough pre-filter for Covariance tRNA prediction */
+ /* program by S. Eddy */
+#define RX_SG_CUTOFF 5
+#define RX_TPC_SIG_THRESH 0.40
+#define RX_D_SIG_THRESH 0.30
+#define RX_TPC_INV 2
+#define RX_TPC_INCSG 4
+#define RX_TPC_KEEP 2
+#define RX_D_INV 2
+#define RX_LOOK_FOR_ACLOOP_SG 3
+#define RX_ACLOOP_MIN 3
+#define RX_AA_INCSG 5
+#define RX_AA_KEEP 4
+
+ /* "Alternate" params - for experimenting */
+ /* with other param values */
+#define ALT_SG_CUTOFF 4
+#define ALT_TPC_SIG_THRESH 0.40
+#define ALT_D_SIG_THRESH 0.30
+#define ALT_TPC_INV 2
+#define ALT_TPC_INCSG 4
+#define ALT_TPC_KEEP 2
+#define ALT_D_INV 2
+#define ALT_LOOK_FOR_ACLOOP_SG 3
+#define ALT_ACLOOP_MIN 3
+#define ALT_AA_INCSG 6
+#define ALT_AA_KEEP 4
+
+#define MIN_VAR_LOOP 28 /* Minimum variable loop size, assumes min */
+ /* intron length = 8bp */
+#define MAX_INTRON_LEN 60 /* Maximum allowable intron length */
+#define MIN_SEQ_LEN 70 /* Minimum length of sequence that will be */
+ /* for tRNAs */
+
+#define STRICT_PARAMS 1;
+#define RELAXED_PARAMS 2;
+#define ALT_PARAMS 3;
+
+
+typedef struct pset {
+ float tpc_sig_thresh, d_sig_thresh;
+ int sg_cutoff,
+ tpc_inv, tpc_incsg, tpc_keep,
+ d_inv,
+ look_for_acloop_sg, acloop_min,
+ aa_incsg, aa_keep;
+} Param_set_type;
+
+Param_set_type ps;
+
+
+void
+set_search_params (Param_set_type *ps,
+ int params);
+
+/* Subroutine that accomplishes the end of the test for the presence of a
+ tRNA gene */
+
+void
+following_search(long int pos, /* first position of the found T-Psi-C signal */
+ long int pos1, /* first position of the found D signal */
+ char *ptr1, /* pointer to the first position of the D signal */
+ char *ptr3, /* ptr3=ptr1+2 pointer to first position of the D arm */
+ int lpair,
+ int nloop, /*nloop=0 test of the sequence, */
+ /*nloop=1 test of the complementary sequence */
+ char *sequence,
+ long int seqlen,
+ FILE *fpo, /*pointer to the output file */
+ FILE *fpverb,
+ char *name,
+ int score, /* Value of the general score SG */
+ int match2, /* integer testing the presence of D */
+ /* arm with 3 base-pairings */
+ int *ntrna,
+ int *npred,
+ int *match,
+ long int sqoffset /* offset nucleotide numbering by this much (set with -i param) */
+ );
+
+
+/* Subroutine to read the consensus matrix */
+
+void
+lectval(FILE *fp, /* pointer to the consensus matrix file */
+ float (*table_cons)[4], /* table containing the frequency of each base
+ at each position of the signal */
+ int (*table_inv)[2], /* table containing the position and the nature of
+ the invariant bases found in the signal. Code for
+ the bases: A=0, C=1, G=2 and T=3. */
+ int *lsig, /*lsig=length of the signal */
+ int *ktot, /* ktot= number of invariant bases */
+ float *maxtot /* maxtot= sum of the maximum frequencies */
+ );
+
+/* Subroutine reading the sequence */
+/* Modified to correctly read FASTA sequence files */
+
+int fgetseq(char *name, /* string w/name of the sequence */
+ char *sequence, /* character string containing the sequence */
+ long int *seqlen, /* length of sequence */
+ FILE *fpi); /* input file pointer */
+
+
+/* Subroutine reading & returning the sequence length */
+
+int getseqsize(FILE *fpi); /* input file pointer */
+
+
+/* Subroutine looking for the presence of a given signal, returns 1 if a
+ signal is found and 0 otherwise. It also return the table 'weight'
+ containing the frequencies of the oberved bases in the windowed
+ sequence and the number 'ninv' of invariant bases found in the windowed
+ sequence*/
+
+int readsignal(char *ptr, /* pointer to the sequence */
+ int (*table_inv)[2], /* table containing the position and nature of the
+ invariant bases found in the consensus matrix */
+ int *lsig, /* lsig= length of the signal */
+ int *ktot, /* ktot= number of invariant bases in the consensus matrix */
+ float *weight, /* table containing the frequencies of the observed
+ base at each position of the
+ windowed sequence tested */
+ float (*table_cons)[4], /* table corresponding to the consensus matrix */
+ int *ninv, /* ninv= number of invariant */
+ /* bases in the windowed sequence */
+ int threshold_inv); /* Number of invariant bases */
+ /* allowed not to b e invariant */
+
+
+/* Subroutine that calculates the similarity score on the potential signal
+ previously retained by the subroutine readsignal. This subroutine
+ returns 1 it the computed score is greater or equal to the defined
+ threshold and 0 otherwise. It returns also the value of the computed
+ score (score) */
+
+int scoring(float *weight, /* table containing the frequencies of the observed base
+ at each position of the potential signal */
+ int lsig, /* length of the signal */
+ float max, /* sum of the maximum frequencies found in */
+ /* the consensus matrix */
+ int ktot, /* number of invariant bases found in the consensus matrix */
+ float *score, /* value of the computed score on the potential signal */
+ float ThresholdValue, /* defined threshold for the similarity score */
+ int ninv /* number of invariant bases found in the potential signal */
+ );
+
+/* Subroutine looking for base-pairings between two parts of the sequence.
+ It returns the number of base-pairings found (ncomp) */
+
+void
+basepairing(char *ptr, /* pointer to the sequence */
+ int npair, /* number of base-pairings forming a given arm */
+ int lpair, /* number of nucleotides found between the first position of the
+ first part of the sequence involved in the stem and the last
+ position of the second part of the
+ sequence involved in the stem */
+ int *ncomp /* number of base-pairings observed between the two parts of
+ the sequence tested */
+ );
+
+
+/* Subroutine that complements the sequence. It returns the complementary
+ sequence to the main */
+
+void
+compstrand(char **sequence, /* pointer to the sequence string */
+ long int seqlen /* sequence length */
+ );
+
+
+/* Subroutine that codes the anticodon signal sequence by a number
+ comprised between 1 and 65. It returns this number. */
+
+void
+codage(char *anticodon, /* anticodon signal sequence */
+ int length1, /* length of the anticodon signal, lenght1=3 */
+ int *num /* number associated to the anticodon signal sequence */
+ );
+
+
+/* Subroutine that determines the tRNA gene family */
+
+void
+corresaa(int num, /* Number coding the anticodon signal sequence */
+ char *type_trna /* tRNA gene family */
+ );
+
+
+/* Subroutine that prints the results of the search */
+
+void
+printresult(FILE *fpo, /* output file pointer */
+ FILE *fpverb, /* character string for the name of the sequence */
+ char *name,
+ long int pos1, /* first position of the D signal */
+ long int pos, /* first position of the T-Psi-C signal */
+ int lpair, /* number of nucleotides between the */
+ /* first position of the D arm and the last one */
+ int lpair1, /* number of nucleotides between the first position of the
+ aminoacyl arm and the last one */
+ int lpair2, /* number of nucleotides between the first position of the
+ anticodon arm and the last one */
+ int nloop, /* nloop=0, scanning of the direct strand; nloop=1 scanning of
+ the complementary strand */
+ int *ntrna, /* number of tRNA genes predicted in the sequence */
+ char *chaine2, /* character string for the predicted tRNA gene sequence */
+ char *sequence, /* character string containing the sequence tested */
+ long int length, /* length of the sequence */
+ int *match, /* match=1 if at least one tRNA gene has been found on the
+ direct strand and 0 otherwise */
+ int ncomp, /* number of base-pairings in the anticodon arm of the
+ predicted tRNA gene */
+ char *type_trna, /* character string for the tRNA gene family */
+ char *anticodon, /* character string for the anticodon signal sequence */
+ long int sqoffset /* offset nucleotide numbering by this much (set with -i param) */
+ );
+
+main(int argc, char **argv)
+{
+ /* pointers to the different files fpi=input file, fpo=output file,
+ fpcons1= T-Psi-C matrix file, fpcons2= D matrix file */
+
+ extern Param_set_type ps; /* search parameters */
+
+ FILE *fpi,*fpo,*fpcons1,*fpcons2, *fpverb;
+
+ /* lsig1= length of the T-Psi-C signal, lsig2= length of the D signal
+ ktot1= number of invariant bases in the T-Psi-C signal
+ ktot2= number of invariant bases in the D signal */
+
+ int lsig1=0, lsig2=0, ktot1=0, ktot2=0;
+
+ long int pos,pos1, begin; /* start position of the T-Psi-C signal (pos)
+ and D signal (pos1) and of the search for the
+ D signal (begin) */
+ int npair=0, lpair=0; /* variables used to test the presence of a stem,
+ see definition further in the program */
+ float table_cons1[30][4]; /* table containing the frequency of each base
+ at each position of the T-Psi-C signal */
+ float table_cons2[30][4]; /* table containing the frequency of each base
+ at each position of the D signal */
+ float maxtot1=0, maxtot2=0; /* sum of the maximum frequencies found in
+ the T-Psi-C matrix (maxtot1) and in the D matrix
+ (maxtot2) */
+ float weight1[30]; /* table containing the frequency of the observed base
+ at each position of the windowed sequence tested
+ (T-Psi-C matrix) */
+ float weight2[30]; /* table containing the frequency of the observed base
+ at each position of the windowed sequence tested
+ (D matrix) */
+ int table_inv1[30][2]; /* table containing the position and the nature of
+ the invariant bases found in the T-Psi-C matrix */
+ int table_inv2[30][2]; /* table containing the position and the nature of
+ the invariant bases found in the D matrix */
+ int ntab[5][2]; /* table containing for each potential D arm found in the
+ windowed sequence, the number of base-pairings and the
+ number of nucleotides that separates the first position
+ of the D arm and the last one */
+ char *sequence; /* character string containing the sequence */
+ long int seqlen; /* keeps the length of the current sequence */
+ long int sqoffset=0; /* start numbering nucleotides by this offset (def=0) */
+ char *ptr,*ptr1,*ptr3, *ptrstart; /* pointers to the sequence, their
+ definitions are given at the place
+ they are used in the program */
+ char name[80]; /* character string containing the name of the sequence */
+ char tscan_dir[120]; /* holds name of directory of consensus files */
+
+ int ntrna; /* number of tRNA genes predicted in the sequence and its
+ complement */
+ int npred=0; /* Total number of tRNA genes predicted in the sequences of
+ the input file */
+ int nseq=0; /* Number of sequences tested (number of sequences of the
+ input file) */
+ long int lseq=0; /* Number of nucleotides tested */
+ int score; /* variable corresponding to the general score SG */
+ int ninv=0; /* number of invariant bases oberved in the windowed sequence
+ for each signal */
+ int ncomp=0; /* number of base-pairings observed in the sequence tested
+ for the presence of one of the four arms */
+ int threshold_inv; /* number of invariant bases that are allowed not to
+ be invariant */
+ int match; /* if at least one tRNA gene is predicted of the direct strand,
+ match=1, if no tRNA gene is found on the direct strand, match=0 */
+ int first_score=0,match2,h, nloop;
+
+ /* ThresholdValue1= threshold value of the similarity score used to retain
+ a T-Psi-C signal
+ ThresholdValue2= threshold value of the similarity score used to retain
+ a D signal
+ Changing the threshold value of the similarity score, MODIFY '0.4' in
+ the following line. */
+
+ float ThresholdValue1, ThresholdValue2;
+ float score1=0, score2=0;
+ int i,j;
+
+ int params;
+ int suppress_credits; /* flag for display of credits */
+ char *seqfile, /* name of input sequence file */
+ *outfile, /* name of output file (if not sent to stdout) */
+ *verbfile; /* name of file for verbose output */
+
+ int optc;
+ extern char *optarg; /* for getopt() */
+ extern int optind; /* for getopt() */
+
+/***********************************************
+ * Parse command line
+ ***********************************************/
+
+ suppress_credits = FALSE;
+ params = STRICT_PARAMS;
+ outfile = NULL;
+ verbfile = NULL;
+
+while ((optc = getopt(argc, argv, "csraho:v:i:")) != -1)
+ switch (optc) {
+
+ case 'c': suppress_credits = TRUE; break;
+ case 's': params = STRICT_PARAMS; break;
+ case 'r': params = RELAXED_PARAMS; break;
+ case 'a': params = ALT_PARAMS; break;
+ case 'o': outfile = optarg; break;
+ case 'v': verbfile = optarg; break;
+ case 'i': sqoffset = atoi(optarg)-1; break;
+
+ case 'h':
+ printf("%s\n version %s\n%s\n", banner, RELEASE, usage);
+ exit(0);
+ default:
+ fprintf(stderr,"unrecognized option %c\n", optc);
+ exit(1);
+ }
+
+if (argc - optind != 1) {
+ fprintf(stderr,"%s\n", usage);
+ exit(1);
+}
+
+seqfile = argv[argc-1];
+
+
+/* open the sequence file */
+
+if ((fpi=fopen(seqfile,"r")) == NULL)
+ {
+ fprintf(stderr,"tRNAscan1.4: FATAL: Cannot open the input sequence file %s\n",seqfile);
+ exit(1);
+ }
+
+/* open the output file */
+
+if (outfile == NULL) {
+ fpo = stdout;
+}
+else if ((fpo=fopen(outfile,"w")) == NULL) {
+ fprintf(stderr,"tRNAscan1.4: FATAL: Cannot open the output file %s\n",outfile);
+ exit(1);
+}
+
+/* open Verbose output file */
+if (verbfile != NULL)
+ if ((fpverb=fopen(verbfile,"w")) == NULL) {
+ fprintf(stderr,"tRNAscan1.4: Cannot open verbose output file %s\n",verbfile);
+ exit(1);
+}
+
+/* open the consensus matrix file for the T-Psi-C signal */
+
+strcpy(tscan_dir,TSCANDIR);
+
+if (((fpcons1=fopen("TPCsignal","r")) == NULL) &&
+ ((fpcons1=fopen(strcat(tscan_dir,"/TPCsignal"),"r")) == NULL))
+ {
+ fprintf(stderr,"tRNAscan1.4: main cannot open TPCsignal consensus file\n");
+ exit(1);
+ }
+
+/* open the consensus matrix file for the D signal */
+
+strcpy(tscan_dir,TSCANDIR);
+
+if (((fpcons2=fopen("Dsignal","r")) == NULL) &&
+ ((fpcons2=fopen(strcat(tscan_dir,"/Dsignal"),"r")) == NULL))
+ {
+ fprintf(stderr,"tRNAscan1.4: main cannot open Dsignal consensus file\n");
+ exit(1);
+ }
+
+
+/* Set search parameters */
+
+set_search_params(&ps,params);
+
+ThresholdValue1 = ps.tpc_sig_thresh;
+ThresholdValue2 = ps.d_sig_thresh;
+
+/* Credits */
+
+if (!suppress_credits) {
+ printf("\n %s %s -- derived from version %s\n", PROGRAM, RELEASE,
+ DERIV_VERSION);
+ printf("\n Please cite: %s\n %s\n", BRIEF,CITATION);
+ printf(" %s\n\n",MODIF);
+}
+
+/* reading the two consensus file */
+
+lectval(fpcons1,table_cons1,table_inv1,&lsig1,&ktot1,&maxtot1);
+lectval(fpcons2,table_cons2,table_inv2,&lsig2,&ktot2,&maxtot2);
+
+
+/* main loop for reading & analyzing one sequence at a time */
+
+while (!feof(fpi)) {
+
+/* find out sequence size before allocating memory & reading in */
+
+ seqlen = getseqsize(fpi);
+ sequence= (char *) calloc (seqlen+BUF_SIZE,sizeof(char));
+ if (sequence == NULL ) {
+ fprintf(stderr,"tRNAscan1.4: Can't malloc for sequence\n");
+ exit(-1);
+ }
+
+/* reading the name of the sequence and the sequence from the input file */
+
+ if (fgetseq(name,sequence,&seqlen,fpi) == 0)
+ break;
+
+ nseq++;
+ lseq += seqlen;
+
+ match=0;
+ for (nloop=0; nloop <=1; nloop++)
+ {
+/* if the sequence is shorter than 70 bp long it is skipped */
+
+ if (seqlen < MIN_SEQ_LEN)
+ break;
+
+ ntrna=0;
+
+/* search of tRNA genes starts
+ pos= first position of the T-Psi-C signal
+ ptr= pointer to the first position of the T-Psi-C signal */
+
+ for (pos=44, ptr=(sequence+43); pos<seqlen-23;pos++, ptr++)
+ {
+ score=0;
+
+#ifdef VERBOSE
+ fprintf(fpverb,"--- Moving TPC window (pos=%d)\n",pos);
+#endif
+
+
+/*change in the number of invariant bases that must be present in the
+ T-Psi-C signal, MODIFY the value of threshold_inv here */
+
+ threshold_inv= ps.tpc_inv;
+
+/*search for the T-Psi-C signal */
+
+ if(readsignal(ptr,table_inv1,&lsig1,&ktot1,weight1,table_cons1,&ninv,
+ threshold_inv))
+ {
+
+/*the general score SG (score) is incremented by 1, if the number of
+ invariant bases (ninv) in the found T-Psi-C signal >= 3 (ktot1=4)
+ change in the threshold of the T-Psi-C signal for the increment of SG,
+ MODIFY the following line */
+
+ if (ninv >= ktot1-1) {
+ score++;
+#ifdef VERBOSE
+ fprintf(fpverb,"+ TPC invariant bp: %d. SG++\n",ninv); }
+ else {
+ fprintf(fpverb,"X TPC invariant bp: %d. NO SG++\n",ninv);
+#endif
+ }
+
+/* Computation of the score on the found T-Psi-C signal, signal retains if
+ the computed score is >= ThresholdValue1 */
+
+ if(scoring(weight1,lsig1,maxtot1,ktot1,&score1,ThresholdValue1,
+ ninv))
+ {
+#ifdef VERBOSE
+ fprintf(fpverb,"+ TPC signal over thresh: %f\n",score1);
+#endif
+
+
+/* npair= number of base-pairings in the T-Psi-C stem
+ lpair= number of nucleotides between the first position of the T-Psi-C
+ arm and the last position of the T-Psi-C arm */
+
+ npair = 5;
+ lpair = 16;
+
+/* Test for the presence of the T-Psi-C stem */
+
+ basepairing(ptr+1,npair,lpair,&ncomp);
+
+/* If the number of base-pairings (ncomp) equal 5, SG (score) incremented
+ by 1. Change in the threshold of base-pairings in the T-Psi-C arm for
+ the increment of SG, MODIFY the value '5' in the following line */
+
+ if (ncomp >= ps.tpc_incsg) {
+ score++;
+#ifdef VERBOSE
+ fprintf(fpverb,"+ TPC parings (%d) add to SG=%d\n",ncomp,score); }
+ else {
+ fprintf(fpverb,"X TPC parings (%d) NO add to SG=%d\n",ncomp,score);
+#endif
+ }
+
+/* Change in the threshold to retain a stem as a potential T-Psi-C arm,
+ MODIFY the value '4' in the following line */
+
+#ifdef VERBOSE
+ if (ncomp < ps.tpc_keep) {
+ fprintf(fpverb,"X TPC parings retain loop: %d\n",ncomp); }
+ else {
+ fprintf(fpverb,"+ TPC parings retain loop: %d\n",ncomp);
+#else
+ if (ncomp >= ps.tpc_keep) {
+#endif
+
+
+/* For the same found T-Psi-C region, different potential D region can be
+ found because of the possible different lengthes of the D loop. As the
+ search for the tRNA gene is applied for each potential D arm, the value
+ of SG computed on the T-Psi-C region is stored in 'first_score' */
+
+ first_score=score;
+
+/*Change in the number of invariant bases to be present in the D signal,
+ MODIFY the value of threshold_inv here */
+
+ threshold_inv= ps.d_inv;
+
+/* Search for the presence of a D region between -120 and -37 nucleotides
+ upstream from the found T-Psi-C region. 37 nucleotides is the observed
+ minimum length assuming no insertion in the D and variable loop. 120
+ nucleotides allows for an intron of up to 60 nucleotides.
+ Change in the length of the intron, MODIFY the value '120' in the
+ definition of begin and ptrstart.
+ ptr1= pointer to the first position of the D signal
+ pos1= first position of the D signal
+ begin= starting position for the search of the D signal
+ ptrsart= pointer to the starting position for the search of the D signal */
+
+/* If the sequence does not have 127 nucleotides upstream of the T-Psi-C
+ signal, the search for the D signal starts at position 8 */
+
+ if (pos <=127)
+ {
+ begin = 8;
+ ptrstart = sequence+7;
+ }
+ else
+ {
+ begin = pos-(MAX_INTRON_LEN+60);
+ ptrstart = ptr-(MAX_INTRON_LEN+60);
+ }
+
+ for(pos1=begin,ptr1=ptrstart; pos1<=(pos-37);pos1++,
+ ptr1++)
+ {
+
+/* Search for the D signal */
+
+#ifdef VERBOSE
+ if(!readsignal(ptr1,table_inv2,&lsig2,&ktot2,weight2,
+ table_cons2,&ninv,threshold_inv))
+ {
+ fprintf(fpverb,"X D invariant bp: %d\n",ninv); }
+ else
+ {
+ fprintf(fpverb,"+ D invariant bp: %d\n",ninv);
+#else
+ if(readsignal(ptr1,table_inv2,&lsig2,&ktot2,weight2,
+ table_cons2,&ninv,threshold_inv))
+ {
+#endif
+
+
+/* Number of invariant bases found in the windowed sequence equal to the
+ number of invariant bases of the matrix (ktot2=3), then SG (score) is
+ incremented by 1
+ Change in the increment of SG for the D signal, MODIFY the following
+ line */
+
+ if (ninv >= ktot2) {
+ score++;
+#ifdef VERBOSE
+ fprintf(fpverb,"+ D invariant (%d) inc SG\n",ninv); }
+ else {
+ fprintf(fpverb,"X D invariant (%d) NO add to SG\n",ninv);
+#endif
+ }
+
+/* Computation of the score on the found D signal, signal retains if the
+ computed score is >= TresholdValue2 */
+
+#ifdef VERBOSE
+ if(!scoring(weight2,lsig2,maxtot2,ktot2,&score2,
+ ThresholdValue2,ninv))
+ {
+ fprintf(fpverb,"X D signal threshold: %f\n",score2); }
+ else {
+ fprintf(fpverb,"+ D signal threshold: %f\n",score2);
+#else
+ if(scoring(weight2,lsig2,maxtot2,ktot2,&score2,
+ ThresholdValue2,ninv))
+ {
+#endif
+
+
+/* ptr3= pointer pointing on the first position of the D arm
+ npair= number of base-pairings in the D stem
+ lpair= number of nucleotides between the first position of the D arm
+ and the last one. As the D loop presents some variation in length,
+ lpair can take different values:
+ lpair=14 smallest length of the D loop
+ lpair=18 greatest length of the D loop */
+
+ ptr3=ptr1+2;
+ npair = 3;
+ for (i=0; i < 5; i++)
+ for (j=0; j < 2; j++)
+ ntab[i][j]=0;
+
+ for (lpair=14,h=0; lpair <=18; lpair++,h++)
+ {
+
+/* Search for the presence of the D arm */
+
+ basepairing(ptr3,npair,lpair,&ncomp);
+
+/* For each potential stem found, the number of base-pairings (ncomp) and
+ lpair are stored in ntab */
+
+ ntab[h][0]=ncomp;
+ ntab[h][1]=lpair;
+ }
+
+ match2=0;
+ for (h=0; h < 5;h++)
+ {
+
+/* If stems with 3 base-pairings are found for the D arm, the following
+ steps of the algorithm are applied on each of these potential stems.
+ The 2 base-pairings stems are discarded */
+
+ if (ntab[h][0] == 3)
+ {
+ lpair=ntab[h][1];
+ match2=1;
+ following_search(pos,pos1,ptr1,ptr3,lpair,nloop,
+ sequence,seqlen,fpo,fpverb,name,score,match2,&ntrna,&npred,&match,sqoffset);
+ }
+ }
+
+/* If no stems with 3 base-pairings have been found, then the stems with 2
+ base-pairings are used in the following steps */
+
+ if (!match2)
+ {
+ for (h=0; h < 5;h++)
+ {
+ if (ntab[h][0] == 2)
+ {
+ lpair=ntab[h][1];
+ following_search(pos,pos1,ptr1,ptr3,lpair,nloop,
+ sequence,seqlen,fpo,fpverb,name,score,match2,&ntrna,&npred,&match,sqoffset);
+ }
+ }
+ }
+ }
+ score=first_score;
+ }
+ }
+ }
+ }
+ }
+ }
+
+/* The sequence is complemented and the algorithm is applied on the
+ complementary strand */
+
+ compstrand(&sequence,seqlen);
+
+#ifdef VERBOSE
+ if (nloop == 0)
+ fprintf(fpverb,"\n== Trying COMPLEMENTARY strand\n");
+#endif
+
+ }
+
+ free(sequence); /* free up mem to ready for next sequence */
+
+ }
+fprintf(fpo,"number of sequences= %d\n", nseq);
+fprintf(fpo,"number of bases tested (one strand)=%ld\n", lseq);
+lseq = 2* lseq;
+fprintf(fpo,"number of bases tested (both strands)= %ld\n", lseq);
+fprintf(fpo,"number of predicted tRNA=%d\n", npred);
+exit(0);
+}
+
+
+/* Subroutine that accomplishes the end of the test for the presence of a
+ tRNA gene */
+
+void
+following_search(long int pos, /* first position of the found T-Psi-C signal */
+ long int pos1, /* first position of the found D signal */
+ char *ptr1, /* pointer to the first position of the D signal */
+ char *ptr3, /* ptr3=ptr1+2 pointer to first position of the D arm */
+ int lpair,
+ int nloop, /*nloop=0 test of the sequence, */
+ /*nloop=1 test of the complementary sequence */
+ char *sequence,
+ long int seqlen,
+ FILE *fpo, /*pointer to the output file */
+ FILE *fpverb,
+ char *name,
+ int score, /* Value of the general score SG */
+ int match2, /* integer testing the presence of D */
+ /* arm with 3 base-pairings */
+ int *ntrna,
+ int *npred,
+ int *match,
+ long int sqoffset /* offset nucleotide numbering by this much (set with -i param) */
+ )
+
+{
+extern Param_set_type ps;
+
+char chaine2[300]; /* character string containing the predicted tRNA gene
+ sequence */
+char anticodon[4]; /* character string containing the anticodon signal
+ sequence */
+char type_trna[4]; /* character string containing the tRNA gene family */
+char *ptr2,*ptr4,*ptr5; /*pointers to the sequence, see their definition
+ below*/
+int score2, score1; /* variables for the general score SG */
+int npair1=0; /* number of base-pairings in the aminoacyl arm */
+int lpair1=0; /* number of nucleotides between the first position of
+ the aminoacyl arm and the last one */
+int lpair2=0; /* number of nucleotides between the first position of
+ the anticodon arm and the last one */
+int npair2=0; /* number of base-pairings in the anticodon arm */
+int pos6=0; /* number of nucleotides found between the first position of
+ the anticodon arm and the first position of the T-Psi-C
+ signal. */
+int pos4=0; /* number of nucleotides present in the variable loop.*/
+int length1=3; /* length of the anticodon signal */
+int num=0; /* variable that codes the anticodon signal sequence
+ (comprised between 1 and 65). */
+int match1; /* match1=1 if a tRNA without intron has been predicted
+ and 0 otherwise*/
+int ncomp=0; /* number of base-pairings observed in the sequence tested
+ for the presence of a given arm */
+int i;
+
+#ifdef VERBOSE
+ fprintf(fpverb,"IN following search...\n");
+#endif
+
+score1=score;
+
+/* If match2=1, the found D arm present 3 base-pairings, the general score
+ SG (score1) is incremented by 1
+ Change in the threshold of base-pairings in the D arm for the increment
+ of SG, MODIFY the following line */
+
+
+if (match2) {
+ score1++;
+#ifdef VERBOSE
+ fprintf(fpverb,"+ D arm found 3 bp\n"); }
+else {
+ fprintf(fpverb,"X D arm found less than 3 bp\n");
+#endif
+}
+npair1=7; /* Number of base-pairings in the aminoacyl arm */
+lpair1=pos-pos1+8+23; /* Number of nucleotides between the first
+ position of the aminoacyl arm and the last one */
+ptr2=(ptr1-7); /* pointer to the first position of the amino acyl arm */
+
+/* Test for the presence of the aminoacyl arm */
+
+basepairing(ptr2,npair1,lpair1,&ncomp);
+
+/* If the number of base-pairings (ncomp) equal 7, the general score SG
+ (score1) is incremented by 1 .
+ Change in the threshold of base-pairings in the aminoacyl arm for the
+ increment of SG, MODIFY the value '7' in the following line */
+
+if (ncomp >= ps.aa_incsg) {
+ score1++;
+#ifdef VERBOSE
+ fprintf(fpverb,"+ AA arm found %d base pairings\n",ncomp); }
+else {
+ fprintf(fpverb,"X AA arm found %d base pairings\n",ncomp);
+#endif
+}
+
+/* Change in the threshold to retain a stem as a potential aminoacyl arm
+ MODIFY the value '6' in the following line */
+
+if (ncomp >= ps.aa_keep)
+ {
+ i = 0;
+ while (i< 300)
+ {
+ chaine2[i]='\0';
+ i++;
+ }
+
+/* If the general score SG is >= 4, the algorithm looks for the presence of
+ an anticodon stem, otherwise the algorithm is initiated again on the
+ following windowed sequence */
+
+ if (score1 >= ps.look_for_acloop_sg)
+ {
+#ifdef VERBOSE
+ fprintf(fpverb,"Looking for anticodon stem\n");
+#endif
+
+ ptr4=ptr3+lpair+2; /* pointer to the first position of the anticodon arm */
+ match1=0;
+ npair2=5; /* Number of base-pairings in the anticodon arm */
+ lpair2=16; /* Number of nucleotides between the first position of the
+ anticodon arm and the last position */
+
+/* Test for the presence of an anticodon arm */
+
+ basepairing(ptr4,npair2,lpair2,&ncomp);
+
+/* If 4 or 5 base-pairings are observed, the windowed sequence is retained
+ as a potential anticodon arm */
+
+ if (ncomp >= ps.acloop_min)
+ {
+ if (nloop == 0)
+ *match=1;
+ i=0;
+ while (i< 4)
+ {
+ anticodon[i]='\0';
+ type_trna[i]='\0';
+ i++;
+ }
+
+/* Test of the presence of the residue T at the position preceding the
+ anticodon signal. If the residue T is present, the general score is
+ incremented by 1.*/
+
+ if ((*(ptr4+6)) == 't') {
+ score1++;
+#ifdef VERBOSE
+ fprintf(fpverb,"+ Invariant T found in anticodon. SG++\n"); }
+ else {
+ fprintf(fpverb,"X Invariant T NOT found in anticodon. No SG inc\n");
+#endif
+ }
+
+/* If SG >= 5, the windowed sequence is retained as a potential tRNA gene.
+ The tRNA gene predicted at that level is without intron */
+
+#ifdef VERBOSE
+ if (score1 < ps.sg_cutoff) {
+ fprintf(fpverb,"X Under SG threshold: %d\n",score1); }
+ else {
+ fprintf(fpverb,"+ Over SG threshold: %d\n",score1);
+#else
+ if (score1 >= ps.sg_cutoff) {
+#endif
+
+
+/* Identification of the tRNA gene family */
+
+ strncpy(anticodon,ptr4+7,3);
+ codage(anticodon,length1,&num);
+ corresaa(num,type_trna);
+ strncpy(chaine2,(ptr1-7),lpair1+2);
+
+ (*ntrna)++;
+ (*npred)++;
+ match1=1; /* match1=1 indicates that a tRNA gene without
+ intron has been predicted */
+
+/* The results are printed in the output file */
+
+ printresult(fpo,fpverb,name,pos1,pos,lpair,lpair1,lpair2,nloop,ntrna,
+ chaine2,sequence,seqlen,match,ncomp,type_trna,anticodon,sqoffset);
+ }
+ }
+
+/* If no anticodon arm has been found for a value of lpair2=16, i. e. an
+ anticodon loop of 7 nucleotides (without intron), the algorithm searchs
+ for the presence of an anticodon arm assuming the presence of an intron
+ in the anticodon loop */
+
+/* pos6 corresponds to the number of nucleotides found between the first
+ position of the anticodon arm and the first position of the T-Psi-C
+ signal. */
+
+#ifdef VERBOSE
+ fprintf(fpverb,"+ Looking for anticodon stem WITH intron...\n");
+#endif
+
+ pos6=pos-(pos1+lpair+3);
+
+/* The search for the presence of an anticodon stem is initiated only if an
+ intron of at least 8 bases long is expected to be present. The value 28
+ for pos6 corresponds to the number of nucleotides found for the smallest
+ length of the variable loop and for an intron length of 8 nucleotides.
+ Change in the smallest length of the intron, MODIFY the value of pos6
+ in the following line and also the start value of lpair2 (lpair2=24)
+ in the loop (lpair2 is the number of nucleotides found between the first
+ position of the anticodon arm and the last position of the anticodon arm.
+ lpair2=16 when no intron in the anticodon loop). */
+
+ if ((!match1) && (pos6 >=MIN_VAR_LOOP))
+ {
+ for (lpair2=MIN_VAR_LOOP-4;lpair2<pos6;lpair2++)
+ {
+ score2=score1;
+
+/* Test for the presence of the anticodon arm for the different possible
+ lengthes of the intron.
+ ptr4 = pointer to the first base involved in the first part of the
+ anticodon arm */
+
+ basepairing(ptr4,npair2,lpair2,&ncomp);
+
+/* pos4 corresponds to the number of nucleotides present in the variable
+ loop. The smallest size of the variable loop in the tRNA sequences
+ is 3. Thus to retain the stem as a potential anticodon arm, pos4 has
+ to be >= 3. */
+
+ pos4=pos-pos1-lpair-lpair2-4;
+
+/* ptr5 = pointer to the position preceding the intron. */
+
+ ptr5=ptr4+10;
+
+/* The anticodon arm is retained if 4 or 5 base-pairings are formed and if
+ pos4 >= 3 */
+
+ if ((ncomp >=4) && (pos4 >= 3))
+ {
+
+/* Test for the presence of the residues A or G at the position preceding
+ the intron */
+
+ if(((*ptr5) == 'a') || ((*ptr5) == 'g'))
+ {
+ if (nloop == 0)
+ (*match)=1;
+ i=0;
+ while (i<4)
+ {
+ anticodon[i]='\0';
+ type_trna[i]='\0';
+ i++;
+ }
+
+/* Test for the presence of the residue T at the position preceding the
+ anticodon signal. If the residue T is present, the general score is
+ incremented by 1.*/
+
+ if ((*(ptr4+6)) == 't') {
+ score2++;
+#ifdef VERBOSE
+ fprintf(fpverb,"+ Found invariant T. SG= %d\n",score2); }
+ else {
+ fprintf(fpverb,"X Did NOT find invariant T. SG= %d\n",score2);
+#endif
+ }
+
+/* If SG >= 5, the windowed sequence is retained as a potential tRNA gene.
+ The tRNA gene predicted at that level has one intron in
+ the anticodon loop. */
+
+ if (score2 >= ps.sg_cutoff)
+ {
+
+/* Identification of the tRNA gene family */
+
+ strncpy(anticodon,ptr4+7,3);
+ codage(anticodon,length1,&num);
+ corresaa(num, type_trna);
+ strncpy(chaine2,(ptr1-7),lpair1+2);
+
+ (*ntrna)++;
+ (*npred)++;
+
+/* The results are printed in the output file */
+
+ printresult(fpo,fpverb,name,pos1,pos,lpair,lpair1,lpair2,nloop,
+ ntrna,chaine2,sequence,seqlen,match,ncomp,type_trna,anticodon,sqoffset);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+
+
+/* Subroutine to read the consensus matrix */
+
+void
+lectval(FILE *fp, /* pointer to the consensus matrix file */
+ float (*table_cons)[4], /* table containing the frequency of each base
+ at each position of the signal */
+ int (*table_inv)[2], /* table containing the position and the nature of
+ the invariant bases found in the signal. Code for
+ the bases: A=0, C=1, G=2 and T=3. */
+ int *lsig, /*lsig=length of the signal */
+ int *ktot, /* ktot= number of invariant bases */
+ float *maxtot /* maxtot= sum of the maximum frequencies */
+ )
+
+{
+int i=0,j, k=0,l,m;
+float max=0;
+int ret = 0;
+
+for (l=0; l< 30; l++)
+ for (m=0; m<4; m++)
+ table_cons[l][m]=0;
+
+for (l=0; l< 30; l++)
+ for (m=0; m < 2; m++)
+ table_inv[l][m]=0;
+
+while(feof(fp) == 0)
+ {
+ for(j=0;j<4;j++)
+ {
+ ret = fscanf(fp,"%f",&table_cons[i][j]);
+ }
+ i++;
+ }
+
+*lsig=i-1;
+for (i=0; i<*lsig; i++)
+ {
+ for (j=0; j<4; j++)
+ {
+ if (table_cons[i][j] == 1.0)
+ {
+ k++;
+ table_inv[k][1]=i;
+ table_inv[k][2]=j;
+ }
+ }
+ }
+
+for (i=0; i<*lsig; i++)
+ {
+ max=table_cons[i][0];
+ for (j=1; j<4; j++)
+ max= MAX(max,table_cons[i][j]);
+ *maxtot += max;
+ }
+
+*ktot=k;
+}
+
+/* Subroutine reading the sequence */
+/* Modified to correctly read FASTA sequence files */
+
+int fgetseq(char *name, /* string w/name of the sequence */
+ char *sequence, /* character string containing the sequence */
+ long int *seqlen, /* length of sequence */
+ FILE *fpi) /* input file pointer */
+
+{
+char line[MAXLINE]; /* character string used to read a line */
+char *ptr; /* pointer to the sequence */
+long int i,j,c;
+char *ptrRet;
+
+line[0]='\0';
+*sequence='\0';
+*seqlen = 0;
+
+/* Test the first character to choose between the two formats available */
+
+if (fgets(line, MAXLINE, fpi) == NULL) {
+ return 0;
+}
+
+else if (line[0] == ';') {
+
+ /* File in the non-GenBank format */
+
+ if (line[1] != ' ')
+ {
+ for (i=0, ptr= &(line[1]); *ptr != ' ' && *ptr !='\n';i++)
+ name[i]= *ptr++;
+ name[i] = '\0';
+ while ((c = getc(fpi)) == ';')
+ ptrRet = fgets(line, MAXLINE, fpi);
+ ungetc(c, fpi);
+ ptr = sequence;
+
+ while ((c= getc(fpi)) != ';' && c != EOF)
+ if (isalpha(c)) {
+ *ptr = tolower(c);
+ ptr++;
+ (*seqlen)++;
+ }
+
+ if (c != EOF)
+ ungetc(c, fpi);
+ *ptr= '\0';
+ }
+ else if (line[1] == ' ')
+ {
+ /* Intelligenetics format */
+
+ while ((c = getc(fpi)) == ';')
+ ptrRet = fgets(line,MAXLINE, fpi);
+ ungetc(c, fpi);
+ fgets(line, MAXLINE, fpi);
+ for (i=0, ptr= &(line[0]); *ptr != ' ' && *ptr !='\n';i++)
+ name[i]= *ptr++;
+ name[i] = '\0';
+
+ ptr = sequence;
+
+ while ((c= getc(fpi)) != ';' && c != EOF)
+ if (isalpha(c)){
+ *ptr = tolower(c);
+ ptr++;
+ (*seqlen)++;
+ }
+
+ if (c != EOF)
+ ungetc(c, fpi);
+ *ptr= '\0';
+ }
+ }
+else if (line[0] == '>')
+ {
+ /* Fasta Format */
+
+ for (i=1; line[i] == ' '; i++)
+ ;
+ for (j = 0, ptr = &line[i]; *ptr != ' '; ptr++, j++)
+ name[j] = *ptr;
+ name[j] = '\0';
+
+ ptr = sequence;
+ while ((c= getc(fpi)) != '>' && c != EOF)
+ if (isalpha(c)) {
+ *ptr = tolower(c);
+ *seqlen += 1;
+ ptr++;
+ }
+
+ if (c != EOF)
+ ungetc(c, fpi);
+ *ptr= '\0';
+ }
+else
+ {
+ /* File in GenBank format */
+
+ while (strncmp(line, "LOCUS", 5) != 0)
+ if (fgets(line, MAXLINE, fpi) == NULL)
+ exit(1);
+
+ for (i = 0, ptr = &line[12]; *ptr != ' '; ptr++, i++)
+ name[i] = *ptr;
+ name[i] = '\0';
+
+ while (strncmp(line, "ORIGIN", 6) != 0)
+ if (fgets(line, MAXLINE, fpi) == NULL)
+ exit(1);
+
+ ptr = sequence;
+ *seqlen=0;
+ ptrRet = fgets(line, MAXLINE, fpi);
+ while (strncmp(line, "//", 2) != 0) {
+ for (i = 0; line[i] != '\n'; i++)
+ if (isalpha(line[i])) {
+ *ptr++ = tolower(line[i]);
+ (*seqlen)++;
+ }
+ ptrRet = fgets(line, MAXLINE, fpi);
+ }
+ *ptr = '\0';
+
+ }
+return (1);
+}
+
+/* Subroutine reading & returning the sequence length */
+
+int getseqsize(FILE *fpi /* input file pointer */
+ )
+
+{
+
+char line[MAXLINE]; /* character string used to read a line */
+long int i,c, seqlen, fpi_save_pos;
+char* ptrRet;
+
+line[0]='\0';
+seqlen = 0;
+
+fpi_save_pos = ftell(fpi); /* save current position in file */
+
+/* Test the first character to choose between the two formats available */
+
+if (fgets(line, MAXLINE, fpi) == NULL) {
+ return 0;
+}
+
+else if (line[0] == ';') {
+
+ /* File in the non-GenBank format */
+
+ if (line[1] != ' ')
+ {
+ while ((c = getc(fpi)) == ';')
+ ptrRet = fgets(line, MAXLINE, fpi);
+ ungetc(c, fpi);
+
+ while ((c= getc(fpi)) != ';' && c != EOF)
+ if (isalpha(c)) {
+ seqlen++;
+ }
+
+ }
+ else if (line[1] == ' ')
+ {
+ /* Intelligenetics format */
+
+ while ((c = getc(fpi)) == ';')
+ ptrRet = fgets(line,MAXLINE, fpi);
+ ungetc(c, fpi);
+ ptrRet = fgets(line, MAXLINE, fpi);
+
+ while ((c= getc(fpi)) != ';' && c != EOF)
+ if (isalpha(c)){
+ seqlen++;
+ }
+ }
+}
+else if (line[0] == '>')
+ {
+ /* Fasta Format */
+
+ while ((c= getc(fpi)) != '>' && c != EOF)
+ if (isalpha(c))
+ seqlen++;
+ }
+else
+ {
+ /* File in GenBank format */
+
+ while (strncmp(line, "LOCUS", 5) != 0)
+ if (fgets(line, MAXLINE, fpi) == NULL)
+ exit(1);
+
+ while (strncmp(line, "ORIGIN", 6) != 0)
+ if (fgets(line, MAXLINE, fpi) == NULL)
+ exit(1);
+
+ ptrRet = fgets(line, MAXLINE, fpi);
+ while (strncmp(line, "//", 2) != 0) {
+ for (i = 0; line[i] != '\n'; i++)
+ if (isalpha(line[i])) {
+ seqlen++;
+ }
+ ptrRet = fgets(line, MAXLINE, fpi);
+ }
+
+ }
+
+fseek(fpi,fpi_save_pos,0); /* reposition file pointer */
+return seqlen;
+}
+
+
+
+/* Subroutine that returns the position in the string s where the string t
+ begins or -1 if s does not contain t */
+
+/* Calls to this function eliminated for efficiency T. Lowe 11/95 */
+
+myindex (char *s, char *t)
+{
+int i, j, k;
+for (i=0; s[i] != '\0'; i++) {
+ for (j=i, k=0; t[k] != '\0' && s[j] == t[k]; j++, k++)
+ ;
+ if (t[k] == '\0')
+ return(i);
+}
+ return(-1);
+}
+
+
+/* Subroutine looking for the presence of a given signal, returns 1 if a
+ signal is found and 0 otherwise. It also return the table 'weight'
+ containing the frequencies of the oberved bases in the windowed
+ sequence and the number 'ninv' of invariant bases found in the windowed
+ sequence*/
+
+int readsignal(char *ptr, /* pointer to the sequence */
+ int (*table_inv)[2], /* table containing the position and nature of the
+ invariant bases found in the consensus matrix */
+ int *lsig, /* lsig= length of the signal */
+ int *ktot, /* ktot= number of invariant bases in the consensus matrix */
+ float *weight, /* table containing the frequencies of the observed
+ base at each position of the
+ windowed sequence tested */
+ float (*table_cons)[4], /* table corresponding to the consensus matrix */
+ int *ninv, /* ninv= number of invariant */
+ /* bases in the windowed sequence */
+ int threshold_inv) /* Number of invariant bases */
+ /* allowed not to b e invariant */
+
+
+{
+ extern Param_set_type ps;
+
+ int k = 1, i=0, j,match1;
+ int l;
+ int tab[30];
+
+ (*ninv)=0;
+ for (l=0; l< 30; l++) {
+ weight[l]=0;
+ tab[l]=0;
+ }
+
+/* If the consensus matrix contains some invariant bases, the subroutine
+ calculates the number of invariant bases that are found in the windowed
+ sequence (ninv) */
+
+ if (*ktot)
+ {
+ for (k=1; k <= (*ktot); k++)
+ {
+
+/* (original code commented out)
+
+ temp[0]= *(ptr+table_inv[k][1]);
+ j = myindex(base,temp); */
+
+ switch (*(ptr+table_inv[k][1])) {
+ case 'a': j=0; break;
+ case 'c': j=1; break;
+ case 'g': j=2; break;
+ case 't': j=3; break;
+ default: j=-1;
+ }
+
+/* trap for non-ATGC chars, assume match for ambiguous bases (j= -1)*/
+
+
+#ifdef NO_AMBIG
+ if (j == table_inv[k][2])
+#else
+ if ((j == table_inv[k][2]) || (j == -1))
+#endif
+ (*ninv)++;
+
+ }
+ }
+
+/* If the number of invariant bases found in the windowed sequence is < to
+ the threshold allowed, the windowed sequence is discarded as a potential
+ signal. */
+
+ if ((*ninv) < (*ktot)-threshold_inv)
+ return(0);
+
+/* If the number of invariant bases is >= to the threshold, the table
+ 'weight' is constructed */
+
+ if((*ninv) >= (*ktot)-threshold_inv)
+ {
+ match1=1;
+ while(match1 && (i<*lsig))
+ {
+
+/* (original code commented out)
+
+ temp[0]= *(ptr+i);
+ tab[i]= myindex(base,temp); */
+
+ switch (*(ptr+i)) {
+ case 'a': tab[i]=0; break;
+ case 'c': tab[i]=1; break;
+ case 'g': tab[i]=2; break;
+ case 't': tab[i]=3; break;
+ default: tab[i]=-1;
+ }
+
+
+/* trap for non-ATGC chars, assume match for ambig bases (tab[i]= -1) */
+
+ if (tab[i] == -1)
+#ifdef NO_AMBIG
+ weight[i] = 0;
+#else
+ weight[i] = 1;
+#endif
+ else
+ weight[i]=table_cons[i][tab[i]];
+
+ if((ktot == 0) && (weight[i] == 0))
+ {
+ match1=0;
+ return(0);
+ }
+ else
+ {
+ i++;
+ }
+ }
+ }
+ return(1);
+}
+
+/* Subroutine that calculates the similarity score on the potential signal
+ previously retained by the subroutine readsignal. This subroutine
+ returns 1 it the computed score is greater or equal to the defined
+ threshold and 0 otherwise. It returns also the value of the computed
+ score (score) */
+
+int scoring(float *weight, /* table containing the frequencies of the observed base
+ at each position of the potential signal */
+ int lsig, /* length of the signal */
+ float max, /* sum of the maximum frequencies found in */
+ /* the consensus matrix */
+ int ktot, /* number of invariant bases found in the */
+ /* consensus matrix */
+ float *score, /* value of the computed score on the */
+ /* potential signal */
+ float ThresholdValue, /* defined threshold for the */
+ /* similarity score */
+ int ninv /* number of invariant bases found */
+ /* in the potential signal */
+ )
+{
+
+float tot;
+int i;
+
+/* Computation of the value of the score on the potential signal */
+
+tot=0;
+for(i=0; i< lsig; i++)
+ tot += weight[i];
+
+tot -= ninv;
+max -= ktot;
+*score = tot / max;
+
+/* Comparison of the computed score with the defined threshold value */
+
+if (*score >= ThresholdValue)
+ return(1);
+else {
+ return(0);
+}
+}
+
+/* Subroutine looking for base-pairings between two parts of the sequence.
+ It returns the number of base-pairings found (ncomp) */
+
+/* rewritten to improve efficiency & eliminate use of myindex() calls */
+
+void
+basepairing(char *ptr, /* pointer to the sequence */
+ int npair, /* number of base-pairings forming a given arm */
+ int lpair, /* number of nucleotides found between the first position of the
+ first part of the sequence involved in the stem and the last
+ position of the second part of the
+ sequence involved in the stem */
+ int *ncomp) /* number of base-pairings observed between the two parts of
+ the sequence tested */
+
+{
+ int n; /* loop counter */
+
+ *ncomp=0;
+
+#ifdef NO_AMBIG
+ for(n=0; n<npair; n++)
+ {
+ switch (*(ptr+n)) {
+ case 'a': if (*(ptr+lpair-n) == 't') (*ncomp)++; break;
+ case 'c': if (*(ptr+lpair-n) == 'g') (*ncomp)++; break;
+ case 'g': case 'r': if ((*(ptr+lpair-n) == 'c') || (*(ptr+lpair-n) == 't'))
+ (*ncomp)++; break;
+ case 't': case 'y': if ((*(ptr+lpair-n) == 'a') || (*(ptr+lpair-n) == 'g'))
+ (*ncomp)++; break;
+ }
+ }
+#else
+ for(n=0; n<npair; n++)
+ {
+ if ((*(ptr+lpair-n) == 'n') && (*(ptr+n) != 'n')) {
+ (*ncomp)++; }
+ else {
+ switch (*(ptr+n)) {
+ case 'a': if (*(ptr+lpair-n) == 't') (*ncomp)++; break;
+ case 'c': if (*(ptr+lpair-n) == 'g') (*ncomp)++; break;
+ case 'g': case 'r': if ((*(ptr+lpair-n) == 'c') || (*(ptr+lpair-n) == 't'))
+ (*ncomp)++; break;
+ case 't': case 'y': if ((*(ptr+lpair-n) == 'a') || (*(ptr+lpair-n) == 'g'))
+ (*ncomp)++; break;
+ case 'n': if (*(ptr+lpair-n) != 'n') (*ncomp)++; break;
+ }
+ }
+ }
+#endif
+
+}
+
+/* Subroutine looking for base-pairings between two parts of the sequence.
+ It returns the number of base-pairings found (ncomp) */
+
+/* replaced by new basepairing() function above */
+
+void
+old_basepairing(char *ptr, int npair, int lpair, int *ncomp)
+
+{
+
+char base[5]; /* character string containing the 4 bases A, C, G and T */
+char temp1[2], temp2[2]; /* temporary tables */
+int n,j1,j2;
+
+/* Table 'pairing' gives the base-pairing scheme. If two nucleotides can
+ form a base-pairing, the value in the table is 1 otherwise it is 0. */
+
+static int pairing[4][4]= {
+ {0,0,0,1},
+ {0,0,1,0},
+ {0,1,0,1},
+ {1,0,1,0},
+ };
+
+base[0]='a', base[1]='c', base[2]='g', base[3]='t', base[4]='\0';
+temp1[0]='\0';
+temp1[1]='\0';
+temp2[0]='\0';
+temp2[1]='\0';
+
+*ncomp=0;
+for(n=0; n<npair; n++)
+ {
+
+ temp1[0]= *(ptr+n); /* temp1[0] contains the base found at a given
+ position in the first part of the stem */
+
+ temp2[0]= *(ptr+lpair-n); /* temp2[0] contains the base found at the
+ position of the second part of the stem that
+ should form the base-pairing with temp1[0] */
+ j1= myindex(base,temp1); /* Code the base found in temp1[0]. j1 can take the
+ value 0 (for A), 1 (for C), 2 (for G) and 3 (for T) */
+
+ j2= myindex(base,temp2); /* same than j1 for the base in temp2[0] */
+
+ /* Test if the bases in temp1[0] and temp2[0] can form a base-parings */
+
+/* Assume non-ATGC base can bp with anything */
+
+#ifdef NO_AMBIG
+ if (pairing[j1][j2] == 1)
+ *ncomp= (*ncomp)+1;
+#else
+ if (j1 == -1 || j2 == -1)
+ *ncomp= (*ncomp)+1;
+ else if (pairing[j1][j2] == 1)
+ *ncomp= (*ncomp)+1;
+#endif
+ }
+}
+
+
+
+/* Subroutine that complements the sequence. It returns the complementary
+ sequence to the main */
+
+/* Modifed to dynamically allocate space for reverse complement & then */
+/* release memory occupied by original sequence */
+/* Sets *sequence pointer to new reverse complement sequence */
+
+void
+compstrand(char **sequence, /* pointer to the sequence string */
+ long int seqlen /* sequence length */
+ )
+{
+
+char *ptr, *revseq;
+long int pos;
+
+
+revseq= (char *) calloc (seqlen+1,sizeof(char));
+
+if (revseq == NULL)
+ {
+ fprintf(stderr,"tRNAscan1.4: Can't malloc for complement sequence\n");
+ exit(-1);
+ }
+
+
+/* Complementation of the sequence */
+
+for (pos=0, ptr= &((*sequence)[seqlen-1]); pos<seqlen; pos++, ptr--)
+ {
+ switch (*ptr)
+ {
+ case 'a':
+ revseq[pos]='t';
+ break;
+ case 'c':
+ revseq[pos]='g';
+ break;
+ case 'g':
+ revseq[pos]='c';
+ break;
+ case 't':
+ revseq[pos]='a';
+ break;
+ default:
+ revseq[pos]='n';
+ break;
+ }
+ }
+
+revseq[seqlen] = '\0';
+
+free(*sequence); /* release mem from original seq */
+*sequence = revseq;
+
+}
+
+
+/* Subroutine that codes the anticodon signal sequence by a number
+ comprised between 1 and 65. It returns this number. */
+
+/* Modified to eliminate call to myindex() */
+
+void
+codage(char *anticodon, /* anticodon signal sequence */
+ int length1, /* length of the anticodon signal, lenght1=3 */
+ int *num /* number associated to the anticodon signal sequence */
+ )
+
+{
+int j=0,i,iba,match=0;
+iba=1;
+*num=1;
+
+/* Codage of the anticodon signal sequence. The codage is done by
+ alphabetical order, i. e., AAA is coded by 1, AAC is coded by 2
+ and so on until TTT that is coded by 64. If a base is not determined
+ in the anticodon signal sequence, the anticodon is coded by 65. */
+
+for (i=length1; i>=1;i--)
+ {
+
+ switch (anticodon[i-1]) {
+ case 'a': j=0; break;
+ case 'c': j=1; break;
+ case 'g': j=2; break;
+ case 't': j=3; break;
+ default: j=-1;
+ }
+
+ if (j == -1)
+ {
+ match=1;
+ i=1;
+ }
+ *num=(*num)+j*iba;
+ iba=4*iba;
+ }
+
+if (match)
+ *num=65;
+
+}
+
+
+/* Subroutine that determines the tRNA gene family */
+
+void
+corresaa(int num, /* Number coding the anticodon signal sequence */
+ char *type_trna /* tRNA gene family */
+ )
+
+{
+
+/*The table 'amino_acid' gives the correspondence between the number
+ (num) coding the anticodon signal and the amino acid that is added
+ to the protein by the tRNA. For example, if the anticodon is AAA then
+ num=1 and the table will associate the amino acid Phe to that anticodon.
+ The tRNA gene in that case will be a Phe tRNA gene. */
+
+static char *amino_acid[]= {"Phe","Val","Leu","Ile","Cys","Trp","Arg","Ser",
+ "Ser","Ala","Pro","Thr","Tyr","Asp","His","Asn",
+ "Leu","Val","Leu","Met","Trp","Gly","Arg","Arg",
+ "Ser","Ala","Pro","Thr","Sup","Glu","Gln","Lys",
+ "Phe","Val","Leu","Ile","Cys","Gly","Arg","Ser",
+ "Ser","Ala","Pro","Thr","Tyr","Asp","His","Asn",
+ "Leu","Val","Leu","Ile","Sup","Gly","Arg","Arg",
+ "Ser","Ala","Pro","Thr","Sup","Glu","Gln","Lys",
+ "Ind"};
+
+strncpy(type_trna,amino_acid[num-1],3);
+}
+
+/* Subroutine that prints the results of the search */
+
+void
+printresult(FILE *fpo, /* output file pointer */
+ FILE *fpverb, /* character string for the name of the sequence */
+ char *name,
+ long int pos1, /* first position of the D signal */
+ long int pos, /* first position of the T-Psi-C signal */
+ int lpair, /* number of nucleotides between the */
+ /* first position of the D arm and the last one */
+ int lpair1, /* number of nucleotides between the first position of the
+ aminoacyl arm and the last one */
+ int lpair2, /* number of nucleotides between the first position of the
+ anticodon arm and the last one */
+ int nloop, /* nloop=0, scanning of the direct strand; nloop=1 scanning of
+ the complementary strand */
+ int *ntrna, /* number of tRNA genes predicted in the sequence */
+ char *chaine2, /* character string for the predicted tRNA gene sequence */
+ char *sequence, /* character string containing the sequence tested */
+ long int length, /* length of the sequence */
+ int *match, /* match=1 if at least one tRNA gene has been found on the
+ direct strand and 0 otherwise */
+ int ncomp, /* number of base-pairings in the anticodon arm of the
+ predicted tRNA gene */
+ char *type_trna, /* character string for the tRNA gene family */
+ char *anticodon, /* character string for the anticodon signal sequence */
+ long int sqoffset /* offset nucleotide numbering by this much (set with -i param) */
+ )
+
+{
+long int pos2; /* first position of the predicted tRNA gene when it
+ is found on the complementary strand */
+long int posstart; /* first position of the intron */
+long int posend; /* last position of the intron */
+
+
+/* If lpair2 > 16, treatment of the tRNA gene with one intron */
+
+/* Results for the tRNA genes predicted on the direct strand */
+
+#ifdef VERBOSE
+fprintf(fpverb,"*** tRNA found\n\n");
+#endif
+
+
+if ((nloop) == 0)
+ {
+ if((*ntrna) == 1)
+ fprintf(fpo,"sequence name= %s\n", name);
+
+ fprintf(fpo,"start position= %ld end position= %ld\n",pos1-7+sqoffset,pos1-6+lpair1+sqoffset);
+ fprintf(fpo,"potential tRNA sequence= %s\n",chaine2);
+ fprintf(fpo,"D signal= %ld %ld TpsyC signal= %ld %ld\n", pos1+sqoffset,pos1+7+sqoffset, pos+sqoffset,
+ pos+14+sqoffset);
+ fprintf(fpo,"amino-acyl stem= %ld-%ld;%ld-%ld\n",pos1-7+sqoffset,pos1-1+sqoffset,pos1-13+lpair1+sqoffset,
+ pos1-7+lpair1+sqoffset);
+ fprintf(fpo,"D stem= %ld-%ld;%ld-%ld\n",pos1+2+sqoffset,pos1+4+sqoffset,pos1+lpair+sqoffset,
+ pos1+lpair+2+sqoffset);
+
+ if(lpair2 > 16)
+ {
+ fprintf(fpo,"anticodon stem= %ld-%ld;%ld-%ld\n",pos1+lpair+4+sqoffset,pos1+lpair+8+sqoffset,
+ pos1+lpair+lpair2+sqoffset,pos1+lpair+lpair2+4+sqoffset);
+ }
+ else
+ {
+ fprintf(fpo,"anticodon stem= %ld-%ld;%ld-%ld\n",pos1+lpair+4+sqoffset,pos1+lpair+8+sqoffset,
+ pos1+lpair+16+sqoffset,pos1+lpair+20+sqoffset);
+ }
+
+ fprintf(fpo,"TpsyC stem= %ld-%ld;%ld-%ld\n",pos+1+sqoffset,pos+5+sqoffset,pos+13+sqoffset,pos+17+sqoffset);
+ if (strcmp(type_trna,"Ind") != 0)
+ {
+ fprintf(fpo,"tRNA predict as a tRNA- %s : anticodon %s\n", type_trna,
+ anticodon);
+ }
+ else
+ {
+ fprintf(fpo,"anticodon includes unknown bases\n");
+ }
+
+ if (lpair2 > 16)
+ {
+ posstart=pos1+lpair+15;
+ posend= pos1+lpair+lpair2-2;
+ fprintf(fpo,"potential intron between positions %ld %ld\n",posstart+sqoffset,
+ posend+sqoffset);
+ }
+ fprintf(fpo,"number of base pairing in the anticodon stem= %d\n",ncomp);
+ fprintf(fpo,"\n");
+ }
+else
+ {
+
+/* Results on the complementary strand */
+
+/* If no tRNA gene is predicted on the direct strand, then for the first
+ tRNA gene predicted on the complementary strand the two following lines
+ are printed in the output file */
+
+ if( (!(*match)) && ((*ntrna) == 1))
+ {
+ fprintf(fpo,"sequence name= %s\n", name);
+ fprintf(fpo,"complementary strand\n");
+ }
+
+/* If tRNA genes are predicted on the direct strand, then for the first
+ tRNA gene predicted on the complemetary strand the following line is
+ printed in the output file */
+
+ else if ((*ntrna) == 1)
+ {
+ fprintf(fpo,"complementary strand\n");
+ }
+
+ pos2= length-pos1+8;
+ fprintf(fpo,"start position= %ld end position= %ld\n",pos2+sqoffset,pos2-lpair1-1+sqoffset);
+ fprintf(fpo,"potential tRNA sequence= %s\n",chaine2);
+
+ fprintf(fpo,"D signal= %ld %ld TpsyC signal= %ld %ld\n",length-pos1+1+sqoffset,
+ length-pos1-6+sqoffset,length-pos+1+sqoffset,length-pos-13+sqoffset);
+ fprintf(fpo,"amino-acyl stem= %ld-%ld;%ld-%ld\n",pos2+sqoffset,pos2-6+sqoffset, pos2-lpair1+6+sqoffset,
+ pos2-lpair1+sqoffset);
+ fprintf(fpo,"D stem= %ld-%ld;%ld-%ld\n",length-pos1-1+sqoffset,length-pos1-3+sqoffset,
+ length-pos1-lpair+1+sqoffset,length-pos1-lpair-1+sqoffset);
+
+ if (lpair2 > 16)
+ {
+ posstart=pos1+lpair+15;
+ posend=pos1+lpair+lpair2-2;
+ fprintf(fpo,"anticodon stem= %ld-%ld;%ld-%ld\n",length-pos1-lpair-3+sqoffset,
+ length-pos1-lpair-7+sqoffset,length-posend-1+sqoffset,length-posend-5+sqoffset);
+ }
+ else
+ {
+ fprintf(fpo,"anticodon stem= %ld-%ld;%ld-%ld\n",length-pos1-lpair-3+sqoffset,
+ length-pos1-lpair-7+sqoffset,length-pos1-lpair-lpair2+1+sqoffset,
+ length-pos1-lpair-lpair2-3+sqoffset);
+ }
+
+ fprintf(fpo,"TpsyC stem= %ld-%ld;%ld-%ld\n",length-pos+sqoffset,length-pos-4+sqoffset,
+ length-pos-12+sqoffset,length-pos-16+sqoffset);
+
+ if (strcmp(type_trna,"Ind") != 0)
+ {
+ fprintf(fpo,"tRNA predict as a tRNA- %s : anticodon %s\n", type_trna,
+ anticodon);
+ }
+ else
+ {
+ fprintf(fpo,"anticodon includes unknown bases\n");
+ }
+
+ if (lpair2 > 16)
+ {
+ posstart=pos1+lpair+15;
+ posend=pos1+lpair+lpair2-2;
+ fprintf(fpo,"potential intron between positions %ld %ld\n",
+ length-posstart+1+sqoffset ,length-posend+1+sqoffset);
+ }
+
+ fprintf(fpo,"number of base pairing in the anticodon stem=%d\n",ncomp);
+ fprintf(fpo,"\n");
+ }
+}
+
+
+void
+set_search_params (Param_set_type *ps,
+ int params)
+ {
+
+ if (params == 1) {
+ ps->tpc_sig_thresh = ST_TPC_SIG_THRESH;
+ ps->d_sig_thresh = ST_D_SIG_THRESH;
+ ps->sg_cutoff = ST_SG_CUTOFF;
+ ps->tpc_inv = ST_TPC_INV;
+ ps->tpc_incsg = ST_TPC_INCSG;
+ ps->tpc_keep = ST_TPC_KEEP;
+ ps->d_inv = ST_D_INV;
+ ps->look_for_acloop_sg = ST_LOOK_FOR_ACLOOP_SG;
+ ps->acloop_min = ST_ACLOOP_MIN;
+ ps->aa_incsg = ST_AA_INCSG;
+ ps->aa_keep = ST_AA_KEEP;
+ }
+ else if (params == 2) {
+ ps->tpc_sig_thresh = RX_TPC_SIG_THRESH;
+ ps->d_sig_thresh = RX_D_SIG_THRESH;
+ ps->sg_cutoff = RX_SG_CUTOFF;
+ ps->tpc_inv = RX_TPC_INV;
+ ps->tpc_incsg = RX_TPC_INCSG;
+ ps->tpc_keep = RX_TPC_KEEP;
+ ps->d_inv = RX_D_INV;
+ ps->look_for_acloop_sg = RX_LOOK_FOR_ACLOOP_SG;
+ ps->acloop_min = RX_ACLOOP_MIN;
+ ps->aa_incsg = RX_AA_INCSG;
+ ps->aa_keep = RX_AA_KEEP;
+ }
+ else if (params == 3) {
+ ps->tpc_sig_thresh = ALT_TPC_SIG_THRESH;
+ ps->d_sig_thresh = ALT_D_SIG_THRESH;
+ ps->sg_cutoff = ALT_SG_CUTOFF;
+ ps->tpc_inv = ALT_TPC_INV;
+ ps->tpc_incsg = ALT_TPC_INCSG;
+ ps->tpc_keep = ALT_TPC_KEEP;
+ ps->d_inv = ALT_D_INV;
+ ps->look_for_acloop_sg = ALT_LOOK_FOR_ACLOOP_SG;
+ ps->acloop_min = ALT_ACLOOP_MIN;
+ ps->aa_incsg = ALT_AA_INCSG;
+ ps->aa_keep = ALT_AA_KEEP;
+ }
+ else {
+ fprintf (stderr,"tRNAscan1.4: FATAL: Unable to select search parameter set.\n");
+ exit(1);
+ }
+
+ }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/types.c b/types.c
new file mode 100644
index 0000000..7d57eec
--- /dev/null
+++ b/types.c
@@ -0,0 +1,113 @@
+/* SQUID - A C function library for biological sequence analysis
+ * Copyright (C) 1992-1996 Sean R. Eddy
+ *
+ * This source code is distributed under terms of the
+ * GNU General Public License. See the files COPYING
+ * and GNULICENSE for further details.
+ *
+ */
+
+/* file: types.c
+ *
+ * Finicky type checkers for strings. Return 1 (TRUE) if ok, 0 elsewise.
+ *
+ */
+
+#include <string.h>
+#include <ctype.h>
+#include "squid.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+
+
+/* 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(*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(*s)) return 0;
+ s++;
+ }
+ else
+ while (*s != '\0')
+ {
+ if (!isxdigit(*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(*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(*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(*s))
+ break;
+
+ s++;
+ }
+
+ while (isspace(*s)) s++; /* skip trailing whitespace */
+ if (*s == '\0' && gotreal) return 1;
+ else return 0;
+}
diff --git a/version.h b/version.h
new file mode 100644
index 0000000..28cdf43
--- /dev/null
+++ b/version.h
@@ -0,0 +1,17 @@
+/* version.h
+ * SRE, Mon Sep 6 09:32:36 1993
+ *
+ * During a real build, these won't be used at all -- they'll
+ * be overridden from the Makefile. This is only used during
+ * manual compilations and to keep lint quiet. It also might
+ * make a good record of the revisions the package goes through.
+ *
+ */
+
+/* #define DEBUG*/ /* turn all debugging output on */
+
+
+#ifndef RELEASE
+#define RELEASE "2.4.4"
+#define RELEASEDATE "January 1996"
+#endif
diff --git a/viterbi.c b/viterbi.c
new file mode 100644
index 0000000..871db4c
--- /dev/null
+++ b/viterbi.c
@@ -0,0 +1,623 @@
+/* viterbi.c
+ * for 2.0: SRE, Tue Sep 28 09:15:07 1993
+ * from 1.0: SRE, Wed Jun 30 17:42:44 1993
+ * as revised Tue Aug 24 12:06:12 1993: integer two-matrix version
+ *
+ * Implementation of the three-dimensional dynamic programming
+ * algorithm for aligning a covariance model to a sequence.
+ *
+ * To optimize memory access patterns, the score storage is implemented
+ * as a two-matrix version. amx is the
+ * main storage. bmx is a smaller auxiliary matrix with a different
+ * access pattern, holding scores of BEGIN state alignments; it
+ * is used when calculating BIFURC scores.
+ *
+ * amx is [j = 0..N] [diff = 0..j] [y = 0..statenum]
+ * diff == 0 is for off-diagonal boundary conditions (this is why diff is shifted +1)
+ * diff == 1 is for the diagonal, i==j
+ *
+ * bmx is [y = 0..statenum] [j = 0..N] [ diff = 0..j]
+ * a j,diff matrix exists only where y is a BEGIN state
+ *
+ * The 2.0 implementation allows variable storage per node rather
+ * than storing and calculating a fixed max number of states per node,
+ * which should save up to 2x in both time and space.
+ *
+ * An optimization is made which requires END states to be explicitly
+ * added, so statenum (the number of states in the integer model)
+ * is *inclusive* of ENDs.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+
+#include "squid.h"
+#include "structs.h"
+#include "funcs.h"
+
+#ifdef MEMDEBUG
+#include "dbmalloc.h"
+#endif
+#ifdef DEBUG
+#include <assert.h>
+#endif
+
+static int allocate_mx(struct istate_s *icm,int statenum, int seqlen,
+ int ****ret_amx, int ****ret_bmx);
+static int init_mx(struct istate_s *icm, int statenum, int N, int ***amx, int ***bmx);
+static int recurse_mx(struct istate_s *icm, int statenum, char *seq, int N, int ***amx, int ***bmx);
+static int trace_mx(struct istate_s *icm, char *seq, int N,
+ int ***amx, int ***bmx, struct trace_s **ret_tr);
+static void free_mx(int ***amx, int ***bmx, int statenum, int seqlen);
+
+
+/* Function: ViterbiAlign()
+ *
+ * Purpose: Align a sequence to a model, using the alignment
+ * algorithm. Return the score of the alignment and
+ * the traceback.
+ *
+ * Args: icm - the model to align sequence to
+ * statenum - # of states in the model
+ * seq - sequence to align model to
+ * ret_score - RETURN: global alignment score
+ * ret_trace - RETURN: traceback tree
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+int
+ViterbiAlign(struct istate_s *icm,
+ int statenum,
+ char *seq,
+ double *ret_score,
+ struct trace_s **ret_trace)
+{
+ int ***amx; /* the main score matrix */
+ int ***bmx; /* the BEGIN score matrix */
+ int N; /* length of sequence */
+
+ N = strlen(seq);
+ seq--; /* convert to 1..N. Ugh! */
+
+ if (! allocate_mx(icm, statenum, N, &amx, &bmx)) return 0;
+#ifdef DEBUG
+ printf("allocated matrices\n");
+#endif
+
+ if (! init_mx(icm, statenum, N, amx, bmx)) return 0;
+#ifdef DEBUG
+ printf("matrices initialized\n");
+#endif
+
+ if (! recurse_mx(icm, statenum, seq, N, amx, bmx)) return 0;
+#ifdef DEBUG
+ printf("recursion finished\n");
+ PrintViterbiAMX(stdout, icm, statenum, seq, N, amx);
+#endif
+
+ *ret_score = ((double) bmx[0][N][N] / INTPRECISION);
+#ifdef DEBUG
+ printf("have a score of %.2f, starting traceback\n", *ret_score);
+#endif
+
+ if (! trace_mx(icm, seq, N, amx, bmx, ret_trace)) return 0;
+#ifdef DEBUG
+ printf("trace complete\n");
+ PrintTrace(stdout, *ret_trace);
+#endif
+ free_mx(amx, bmx, statenum, N);
+
+#ifdef SRE_REMOVED
+ /* OK, boys, crank up the MasPar DPU.
+ * 24 bytes = 6 addresses passed * 4 bytes/address (always right?)
+ * MPViterbiAlign() copies ret_score out, but doesn't do anything
+ * with the traceback yet
+ */
+ callRequest(MPViterbiAlign, 24, icm, &statenum, seq, &N, ret_score, ret_trace);
+#endif /* MASPAR */
+
+ return 1;
+}
+
+/* Function: allocate_cvmx()
+ *
+ * Purpose: Malloc space for the score matrices.
+ * amx is indexed as j, i, y.
+ * bmx is indexed as k, j, i.
+ * In the two sequence dimensions j, i they are
+ * diagonal (+1 off diagonal) matrices with
+ * rows j = 0..N, i = 1..j+1.
+ * In the node dimension k bmx is k = 0..M.
+ * In the state dimension y amx is y = 0..numstates.
+ *
+ * Args: icm - the int, log-odds, state-based model
+ * statenum - number of states in model
+ * seqlen - length of sequence
+ * ret_amx - RETURN: main score matrix
+ * ret_bmx - RETURN: BEGIN score matrix
+ *
+ * Return: Ptr to allocated scoring matrix, or
+ * dies and exits.
+ */
+static int
+allocate_mx(struct istate_s *icm,
+ int statenum,
+ int seqlen,
+ int ****ret_amx,
+ int ****ret_bmx)
+{
+ int ***amx;
+ int ***bmx;
+ int diag, j, y;
+
+
+ /* Main matrix, amx: fastest varying index is y (j,i,y)
+ */
+ /* malloc for j = 0..seqlen rows */
+ if ((amx = (int ***) malloc ((seqlen + 1)* sizeof(int **))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ for (j = 0; j <= seqlen; j++) /* loop over rows j = 0..N */
+ {
+ /* malloc for diag = 0..j cols */
+ if ((amx[j] = (int **) malloc ((j + 1) * sizeof(int *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ /* loop over cols diag = 0..j */
+ for (diag = 0; diag <= j; diag++)
+ /* malloc for y = 0..statenum-1 decks */
+ if ((amx[j][diag] = (int *) malloc ((statenum) * sizeof (int))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+
+
+ /* BEGIN auxiliary matrix: fastest varying index is diag (y,j,diag)
+ */
+ /* 0..statenum-1 decks */
+ if ((bmx = (int ***) malloc (statenum * sizeof(int **))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ for (y = 0; y < statenum; y++)
+ {
+ bmx[y] = NULL;
+ if (icm[y].statetype == uBEGIN_ST)
+ {
+ if ((bmx[y] = (int **) malloc ((seqlen+1) * sizeof(int *))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+
+ for (j = 0; j <= seqlen; j++)
+ if ((bmx[y][j] = (int *) malloc ((j+1) * sizeof(int))) == NULL)
+ Die("Memory allocation error in %s line %d", __FILE__, __LINE__);
+ }
+ }
+
+ *ret_amx = amx;
+ *ret_bmx = bmx;
+ return 1;
+}
+
+
+
+/* Function: free_mx()
+ *
+ * Purpose: Free the space allocated to the two scoring matrices.
+ * Precisely mirrors the allocations above in allocate_cvmx().
+ *
+ * Return: (void)
+ */
+static void
+free_mx(int ***amx,
+ int ***bmx,
+ int statenum,
+ int seqlen)
+{
+ int diag, j, y;
+
+ /* Free the main matrix, amx
+ */
+ for (j = 0; j <= seqlen; j++)
+ {
+ for (diag = 0; diag <= j; diag++)
+ free(amx[j][diag]);
+ free(amx[j]);
+ }
+ free(amx);
+
+ /* Free the auxiliary BEGIN matrix, bmx
+ */
+ for (y = 0; y < statenum; y++)
+ if (bmx[y] != NULL)
+ {
+ for (j = 0; j <= seqlen; j++)
+ free(bmx[y][j]);
+ free(bmx[y]);
+ }
+ free(bmx);
+}
+
+
+
+/* Function: init_mx()
+ *
+ * Purpose: Initialization of the scoring matrices. We initialize the off-diagonal,
+ * the diagonal, and the "floor" (end states) of the cube.
+ *
+ * Return: 1 on success, 0 on failure.
+ */
+static int
+init_mx(struct istate_s *icm, /* integer model */
+ int statenum, /* number of states in icm */
+ int N, /* length of seq */
+ int ***amx,
+ int ***bmx)
+{
+ int diag, j, y; /* counters for indices over the cvmx */
+ int ynext; /* index of next state k+1 */
+ int *beam; /* z-axis vector of numbers in amx */
+
+ /* Init the whole amx to -Infinity. We do this with memcpy, trying
+ * to be fast. We fill in j=0,diag=0 by hand, then memcpy() the other
+ * columns.
+ */
+ for (y = 0; y < statenum; y++)
+ amx[0][0][y] = NEGINFINITY;
+ for (j = 1; j <= N; j++)
+ for (diag = 0; diag <= j; diag++)
+ memcpy(amx[j][diag], amx[0][0], statenum * sizeof(int));
+
+ /* Init the whole bmx to -Inf. We know state 0 is a begin (it's ROOT), so we
+ * start there, and memcpy rows as needed.
+ */
+ for (diag = 0; diag <= N; diag++) bmx[0][N][diag] = NEGINFINITY;
+ for (j = 0; j < N; j++)
+ memcpy(bmx[0][j], bmx[0][N], (j+1) * sizeof(int));
+
+ for (y = 1; y < statenum; y++)
+ if (bmx[y] != NULL)
+ for (j = 0; j <= N; j++)
+ memcpy(bmx[y][j], bmx[0][N], (j+1) * sizeof(int));
+
+ /* Init the off-diagonal (j = 0..N; diag == 0) with -log P scores.
+ * End state = 0;
+ * del, bifurc states are calc'ed
+ * begin states same as del's
+ */
+ for (j = 0; j <= N; j++)
+ for (y = statenum-1; y >= 0; y--)
+ {
+ if (icm[y].statetype == uEND_ST)
+ amx[j][0][y] = 0;
+
+ else if (icm[y].statetype == uBIFURC_ST)
+ amx[j][0][y] = bmx[icm[y].tmx[0]][j][0] + bmx[icm[y].tmx[1]][j][0];
+
+ else if (icm[y].statetype == uDEL_ST || icm[y].statetype == uBEGIN_ST)
+ {
+ /* only calc DEL-DEL and BEGIN-DEL transitions. Since
+ * we optimized the state transition tables, removing
+ * the unused ones, we don't know where the number
+ * for "to DEL" is! But we can find it, because it'll
+ * be the connection to a non-infinite score */
+ beam = amx[j][0] + y + icm[y].offset;
+ for (ynext = 0; ynext < icm[y].connectnum; ynext++)
+ {
+ if (*beam != NEGINFINITY)
+ amx[j][0][y] = *beam + icm[y].tmx[ynext];
+ beam++;
+ }
+
+ /* make a copy into bmx if y is a BEGIN */
+ if (icm[y].statetype == uBEGIN_ST)
+ bmx[y][j][0] = amx[j][0][y];
+ }
+ }
+
+ return 1;
+}
+
+
+
+/* Function: recurse_mx()
+ *
+ * Purpose: Carry out the fill stage of the dynamic programming
+ * algorithm.
+ *
+ * Returns: 1 on success, 0 on failure.
+ */
+static int
+recurse_mx(struct istate_s *icm, /* integer, state-form model */
+ int statenum, /* number of states in icm */
+ char *seq, /* sequence, 1..N */
+ int N, /* length of seq */
+ int ***amx, /* main scoring matrix */
+ int ***bmx) /* bifurc scoring matrix */
+{
+ int i, j, y; /* indices for 4 dimensions */
+ int diff; /* loop counter for difference: diff = j-i + 1 */
+ int symi, symj; /* symbol indices for seq[i], seq[j] */
+ int sc; /* tmp for a score */
+ int ynext; /* index of next state y */
+
+ int *beam; /* ptr to a beam (z-axis vector) */
+ int leftdiff; /* diff coord of BEGIN_L of a bifurc */
+ int leftj; /* j coord of BEGIN_L of a bifurc */
+ int **left_p; /* pointer into whole 2D deck of BEGINL's of a bifurc */
+ int *right_p; /* ptr into row of BEGIN_R's of a bifurc */
+ int *scp; /* score pointer: ptr into beam of scores being calc'ed */
+ struct istate_s *st; /* state pointer: ptr at current state in icm */
+ int *tmx;
+ int emitsc;
+
+ for (j = 1; j <= N; j++)
+ {
+ symj = SymbolIndex(seq[j]);
+ for (diff = 1; diff <= j; diff++)
+ {
+ i = j - diff + 1;
+ if (i < 1) break;
+
+ symi = SymbolIndex(seq[i]);
+
+#ifdef DEBUG
+ assert(symi >= 0 && symi < ALPHASIZE);
+ assert(symj >= 0 && symj < ALPHASIZE);
+#endif
+
+ scp = &amx[j][diff][statenum-1];
+ st = &icm[statenum-1];
+ for (y = statenum-1; y >= 0; y--, scp--, st--)
+ { /* loop over states */
+
+ if (st->statetype != uBIFURC_ST) /* a normal (non-BIFURC) state */
+ {
+ /* Connect the "beam" pointer to the appropriate
+ * starting place in the ynext scores we're connecting
+ * y to
+ */
+ switch (st->statetype) {
+ case uBEGIN_ST:
+ case uDEL_ST:
+ beam = amx[j][diff];
+ emitsc = 0;
+ break;
+ case uMATP_ST:
+ if (diff == 1) continue;
+ beam = amx[j-1][diff-2];
+ emitsc = st->emit[symi * ALPHASIZE + symj];
+ break;
+ case uMATR_ST:
+ case uINSR_ST:
+ beam = amx[j-1][diff-1];
+ emitsc = st->emit[symj];
+ break;
+ case uMATL_ST:
+ case uINSL_ST:
+ beam = amx[j][diff-1];
+ emitsc = st->emit[symi];
+ break;
+ case uEND_ST: continue;
+ default: Die("no such state type %d", st->statetype);
+ }
+ beam += y + st->offset;
+ tmx = st->tmx;
+
+
+ /* Init for ynext == 0 case
+ */
+ *scp = *beam + *tmx;
+
+ /* Calculate remaining cases
+ */
+ for (ynext = 1; ynext < st->connectnum; ynext++)
+ {
+ beam++;
+ tmx++;
+ if (*beam > *scp)
+ {
+ sc = *beam + *tmx;
+ if (sc > *scp)
+ *scp = sc;
+ }
+ }
+
+ /* Add emission scores now
+ */
+ *scp += emitsc;
+
+ /* Make a copy into bmx if necessary
+ */
+ if (st->statetype == uBEGIN_ST)
+ bmx[y][j][diff] = *scp;
+ } /* end block of normal state stuff */
+
+ else /* a BIFURC state */
+ {
+ leftdiff = diff;
+ leftj = j;
+ right_p = bmx[st->tmx[1]][j];
+ left_p = bmx[st->tmx[0]];
+
+ /* init w/ case that left branch emits it all */
+ *scp = left_p[leftj][leftdiff] + *right_p;
+ while (leftdiff > 0)
+ {
+ leftdiff--;
+ leftj--;
+ right_p++;
+
+ sc = left_p[leftj][leftdiff] + *right_p;
+ if (sc > *scp)
+ *scp = sc;
+ }
+ }
+
+ } /* end loop over states */
+ } /* end loop over diff */
+ } /* end loop over j */
+ return 1;
+}
+
+
+/* Function: trace_cvmx()
+ *
+ * Purpose: Trace stage of the dynamic programming: starting
+ * at j=N, i=1, k=0/BEGIN, trace back the optimal
+ * path. Returns a binary tree, ret_trace.
+ * Caller is reponsible for free'ing ret_trace.
+ */
+static int
+trace_mx(struct istate_s *icm, /* the model to align */
+ char *seq, /* sequence to align it to 1..N */
+ int N,
+ int ***amx,
+ int ***bmx,
+ struct trace_s **ret_trace) /* RETURN: the traceback tree */
+{
+ struct trace_s *tr; /* the traceback tree under construction */
+ struct trace_s *curr_tr; /* ptr to node of tr we're working on */
+ struct tracestack_s *dolist; /* pushdown stack of active tr nodes */
+ int diff,i, j; /* coords in mx (0..N) */
+ int y; /* counter for states (0..statenum-1) */
+ int ynext; /* holds "k+1" value */
+ int symi, symj; /* array indices for left, right symbols */
+ int leftdiff;
+ int leftj;
+ int *right_p;
+ int *beam;
+ int conni, connj;
+ int sc;
+
+ /* Initialize.
+ * Start at i = 1, j = N and work towards diagonal
+ */
+ InitTrace(&tr, NULL); /* start a trace tree */
+ dolist = InitTracestack(); /* start a stack for traversing the trace tree */
+
+ curr_tr = AttachTrace(tr, NULL, 0, N-1, 0, uBEGIN_ST);
+ PushTracestack(dolist, curr_tr);
+
+ /* Recursion. While there's active nodes in the stack, trace from them.
+ *
+ * This is cribbed from recurse_cvmx(); it's almost the exact reverse.
+ * We know the best score, we just have to figure out where it came from.
+ */
+ while ((curr_tr = PopTracestack(dolist)) != NULL)
+ {
+ /* get some useful numbers, mostly for clarity */
+ /* which is important, since we're sort of misusing
+ * fields in the trace structures! */
+ i = curr_tr->emitl+1;
+ j = curr_tr->emitr+1;
+ y = curr_tr->nodeidx;
+ diff = j - i + 1;
+
+ /* During use here, nodeidx field is used to hold a *state* index,
+ * when we leave, everything must look like the rest of the package
+ * expects, so we clean up here.
+ */
+ curr_tr->nodeidx = icm[y].nodeidx;
+
+ /* We used an END state here.
+ * (We'd better be near the diagonal!)
+ * We're done here. */
+ if (icm[y].statetype == uEND_ST)
+ {
+ if (i <= j) Warn("trace: didn't reach off-diag, stop at i=%d j=%d y=%d", i,j,y);
+ curr_tr->nodeidx = -1;
+ continue;
+ }
+
+ else if (icm[y].statetype == uBIFURC_ST) /* bifurc state */
+ {
+ /* We used a BIFURC state here.
+ * It came from two branches. Redo the recurse_cvmx()
+ * calculation to find them. */
+ if (i > j)
+ {
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, i-1, j-1, icm[y].tmx[1], uBEGIN_ST));
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, i-1, j-1, icm[y].tmx[0], uBEGIN_ST));
+ }
+
+ else
+ {
+ leftdiff = diff;
+ leftj = j;
+ right_p = bmx[icm[y].tmx[1]] [j];
+
+ while (leftdiff >= 0)
+ {
+ if (amx[j][diff][y] == bmx[icm[y].tmx[0]][leftj][leftdiff] + *right_p)
+ {
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, i + leftdiff-1, j-1,
+ icm[y].tmx[1], uBEGIN_ST));
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, i -1, i+leftdiff-2,
+ icm[y].tmx[0], uBEGIN_ST));
+ break;
+ }
+ leftdiff--;
+ leftj--;
+ right_p++;
+ }
+ if (leftdiff < 0)
+ Die("bifurc reconstruction failed at ijy %d,%d,%d", i,j,y);
+ }
+ }
+
+ else /* a normal (non-BIFURC) state */
+ {
+ if (i > 0 && i <= N) symi = SymbolIndex(seq[i]);
+ if (j > 0 && j <= N) symj = SymbolIndex(seq[j]);
+
+ switch (icm[y].statetype) {
+ case uBEGIN_ST:
+ case uDEL_ST: beam = amx[j][diff]; conni = i; connj = j; break;
+ case uMATP_ST: beam = amx[j-1][diff-2]; conni = i+1; connj = j-1; break;
+ case uMATR_ST:
+ case uINSR_ST: beam = amx[j-1][diff-1]; conni = i; connj = j-1; break;
+ case uMATL_ST:
+ case uINSL_ST: beam = amx[j][diff-1]; conni = i+1; connj = j; break;
+ default: Die("no such state type %d", icm[y].statetype);
+ }
+ beam += y + icm[y].offset;
+
+ /* Calculate the score we'll try to match,
+ by subtracting emission score as needed */
+ sc = amx[j][diff][y];
+ switch (icm[y].statetype) {
+ case uBEGIN_ST:
+ case uDEL_ST: break;
+ case uMATP_ST: sc -= icm[y].emit[symi * ALPHASIZE + symj]; break;
+ case uMATR_ST:
+ case uINSR_ST: sc -= icm[y].emit[symj]; break;
+ case uMATL_ST:
+ case uINSL_ST: sc -= icm[y].emit[symi]; break;
+ default: Die("no such state type %d", icm[y].statetype);
+ }
+
+ /* find the right connection */
+ for (ynext = 0; ynext < icm[y].connectnum; ynext++, beam++)
+ if (sc == *beam + icm[y].tmx[ynext])
+ {
+ PushTracestack(dolist, AttachTrace(curr_tr, NULL, conni-1, connj-1,
+ ynext + y + icm[y].offset,
+ icm[ynext + y + icm[y].offset].statetype));
+ break;
+ }
+ if (ynext == icm[y].connectnum)
+ { Warn("can't continue traceback"); return 0; }
+
+ } /* (a normal statetype) */
+
+ } /* (while something is in the tracestack) */
+
+ FreeTracestack(dolist);
+
+ *ret_trace = tr;
+ return 1;
+}
+
+
+
+
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/trnascan-se.git
More information about the debian-med-commit
mailing list