From 0b3bc08010f3aba0300a4cf48d6decd6fe1f5160 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 7 Jul 2017 21:06:52 +0000 Subject: gotoh (7jul17) git-svn-id: svn://tug.org/texlive/trunk@44764 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/gotoh/gotoh.sty | 356 ++++++++++++++-------------- 1 file changed, 178 insertions(+), 178 deletions(-) (limited to 'Master/texmf-dist/tex/latex/gotoh') diff --git a/Master/texmf-dist/tex/latex/gotoh/gotoh.sty b/Master/texmf-dist/tex/latex/gotoh/gotoh.sty index b0a3d0905ea..1687ed3f06f 100644 --- a/Master/texmf-dist/tex/latex/gotoh/gotoh.sty +++ b/Master/texmf-dist/tex/latex/gotoh/gotoh.sty @@ -13,7 +13,7 @@ %% This package is distributed under the MIT License. %% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{gotoh}[2017/05/05 v1.0 Sequence alignment algorithm] +\ProvidesPackage{gotoh}[2017/07/07 v1.1 Sequence alignment algorithm] \RequirePackage{xkeyval} \def\gth@pkgname{gotoh} \def\gth@warn{\PackageWarningNoLine\gth@pkgname} @@ -74,7 +74,7 @@ \mbox{\hbox to\gth@tempdima{\hss #1}}% \egroup} \def\gth@print@matrix#1{% - \bgroup\texttt + \bgroup\ttfamily #1:\\ \gth@tempcnta\z@ \@whilenum\gth@tempcnta<\gth@m\do{% @@ -82,120 +82,160 @@ \@whilenum\gth@tempcntb<\gth@n\do{% \gth@tab{% \gth@nameuse{\gth@sn @#1@\the\gth@tempcnta - @\the\gth@tempcntb}}% + @\the\gth@tempcntb}}% \advance\gth@tempcntb\@ne}\\ \advance\gth@tempcnta\@ne}% \egroup} -\newcommand{\Gotoh}[2]{% +\newcommand{\Gotoh}{% + \gth@increment\gth@sn + \bgroup % \egroup is in \gth@gotoh@pre + \@ifnextchar[{\gth@gotoh@setkeys}{\gth@gotoh@pre}} +\def\gth@gotoh@setkeys[#1]{\setkeys[gth]{config}{#1}\gth@gotoh@pre} +\def\gth@gotoh@pre#1#2{% + \edef\gth@tmpa{\noexpand\gth@gotoh{#1}{#2}}% \if@gth@uppercase - \uppercase{\gth@gotoh{#1}{#2}}% + \uppercase\expandafter{\gth@tmpa}% \else - \gth@gotoh{#1}{#2}% - \fi} + \gth@tmpa + \fi\egroup} \def\gth@gotoh#1#2{% - \gth@increment\gth@sn - \bgroup - \gth@tempcnta\z@ - \@tfor\gth@member:=#1\do{% - \gth@name@edef{seqa@\the\gth@tempcnta}{\gth@member}% - \advance\gth@tempcnta\@ne}% - \advance\gth@tempcnta\@ne - \edef\gth@m{\the\gth@tempcnta}% - \gth@tempcntb\z@ - \@tfor\gth@member:=#2\do{% - \gth@name@edef{seqb@\the\gth@tempcntb}{\gth@member}% - \advance\gth@tempcntb\@ne}% - \advance\gth@tempcntb\@ne - \edef\gth@n{\the\gth@tempcntb}% - \gth@tempcnta\z@ + \gth@tempcnta\z@ + \@tfor\gth@member:=#1\do{% + \gth@name@edef{seqa@\the\gth@tempcnta}{\gth@member}% + \advance\gth@tempcnta\@ne}% + \advance\gth@tempcnta\@ne + \edef\gth@m{\the\gth@tempcnta}% + \gth@tempcntb\z@ + \@tfor\gth@member:=#2\do{% + \gth@name@edef{seqb@\the\gth@tempcntb}{\gth@member}% + \advance\gth@tempcntb\@ne}% + \advance\gth@tempcntb\@ne + \edef\gth@n{\the\gth@tempcntb}% + \gth@tempcnta\z@ + \@whilenum\gth@tempcnta<\gth@m\do{% + \gth@gap@penalty{\gth@tempcnta}% + \gth@name@xdef{\gth@sn @m@\the\gth@tempcnta @0}{\gth@min}% + \gth@name@xdef{\gth@sn @ix@\the\gth@tempcnta @0}{\the\gth@calc}% + \gth@name@xdef{\gth@sn @iy@\the\gth@tempcnta @0}{\gth@min}% + \advance\gth@tempcnta\@ne}% + \gth@tempcntb\z@ + \@whilenum\gth@tempcntb<\gth@n\do{% + \gth@gap@penalty{\gth@tempcntb}% + \gth@name@xdef{\gth@sn @m@0@\the\gth@tempcntb}{\gth@min}% + \gth@name@xdef{\gth@sn @ix@0@\the\gth@tempcntb}{\gth@min}% + \gth@name@xdef{\gth@sn @iy@0@\the\gth@tempcntb}{\the\gth@calc}% + \advance\gth@tempcntb\@ne}% + \gth@name@xdef{\gth@sn @m@0@0}{\number\z@}% + \if@gth@memoization + \gth@decrement\gth@m \gth@decrement\gth@n + \gth@memo@ix{\gth@m}{\gth@n}% + \gth@memo@iy{\gth@m}{\gth@n}% + \gth@memo@m{\gth@m}{\gth@n}% + \gth@increment\gth@m \gth@increment\gth@n + \else + \gth@tempcnta\@ne \@whilenum\gth@tempcnta<\gth@m\do{% - \gth@gap@penalty{\gth@tempcnta}% - \gth@name@xdef{\gth@sn @m@\the\gth@tempcnta @0}{\gth@min}% - \gth@name@xdef{\gth@sn @ix@\the\gth@tempcnta @0}{\the\gth@calc}% - \gth@name@xdef{\gth@sn @iy@\the\gth@tempcnta @0}{\gth@min}% + \gth@tempcntb\@ne + \@whilenum\gth@tempcntb<\gth@n\do{% + \advance\gth@tempcnta\m@ne + \gth@max{% + \gth@nameuse{\gth@sn @m@\the\gth@tempcnta + @\the\gth@tempcntb},% + \gth@nameuse{\gth@sn @iy@\the\gth@tempcnta + @\the\gth@tempcntb}}% + \gth@tempcntc\gth@calc + \gth@tempcntd + \gth@nameuse{\gth@sn @ix@\the\gth@tempcnta + @\the\gth@tempcntb}% + \advance\gth@tempcntc-\gth@d\advance\gth@tempcntd-\gth@e + \advance\gth@tempcnta\@ne + \gth@max{\gth@tempcntc,\gth@tempcntd}% + \gth@name@xdef{\gth@sn @ix@\the\gth@tempcnta + @\the\gth@tempcntb}{% + \the\gth@calc}% + \advance\gth@tempcntb\m@ne + \gth@tempcntc + \gth@nameuse{\gth@sn @m@\the\gth@tempcnta + @\the\gth@tempcntb}% + \gth@tempcntd + \gth@nameuse{\gth@sn @iy@\the\gth@tempcnta + @\the\gth@tempcntb}% + \advance\gth@tempcntc-\gth@d\advance\gth@tempcntd-\gth@e + \advance\gth@tempcntb\@ne + \gth@max{\gth@tempcntc,\gth@tempcntd}% + \gth@name@xdef{\gth@sn @iy@\the\gth@tempcnta + @\the\gth@tempcntb}{% + \the\gth@calc}% + \advance\gth@tempcnta\m@ne\advance\gth@tempcntb\m@ne + \gth@max{% + \gth@nameuse{\gth@sn @m@\the\gth@tempcnta + @\the\gth@tempcntb},% + \gth@nameuse{\gth@sn @ix@\the\gth@tempcnta + @\the\gth@tempcntb},% + \gth@nameuse{\gth@sn @iy@\the\gth@tempcnta + @\the\gth@tempcntb}}% + \edef\gth@tmpa{\gth@nameuse{seqa@\the\gth@tempcnta}}% + \edef\gth@tmpb{\gth@nameuse{seqb@\the\gth@tempcntb}}% + \advance\gth@tempcnta\@ne\advance\gth@tempcntb\@ne + \ifx\gth@tmpa\gth@tmpb + \advance\gth@calc\gth@match + \else + \advance\gth@calc\gth@mismatch + \fi + \gth@name@xdef{\gth@sn @m@\the\gth@tempcnta + @\the\gth@tempcntb}{% + \the\gth@calc}% + \advance\gth@tempcntb\@ne}% \advance\gth@tempcnta\@ne}% - \gth@tempcntb\z@ - \@whilenum\gth@tempcntb<\gth@n\do{% - \gth@gap@penalty{\gth@tempcntb}% - \gth@name@xdef{\gth@sn @m@0@\the\gth@tempcntb}{\gth@min}% - \gth@name@xdef{\gth@sn @ix@0@\the\gth@tempcntb}{\gth@min}% - \gth@name@xdef{\gth@sn @iy@0@\the\gth@tempcntb}{\the\gth@calc}% - \advance\gth@tempcntb\@ne}% - \gth@name@xdef{\gth@sn @m@0@0}{\number\z@}% - \if@gth@memoization - \gth@decrement\gth@m \gth@decrement\gth@n - \gth@memo@ix{\gth@m}{\gth@n}% - \gth@memo@iy{\gth@m}{\gth@n}% - \gth@memo@m{\gth@m}{\gth@n}% - \gth@increment\gth@m \gth@increment\gth@n + \fi + %\gth@print@matrix{m}% + %\gth@print@matrix{ix}% + %\gth@print@matrix{iy}% + \bgroup + \gth@decrement\gth@m \gth@decrement\gth@n + \expandafter\xdef\gth@score{% + \gth@nameuse{\gth@sn @m@\gth@m @\gth@n}}% + \egroup + \let\gth@rseq@x\@empty\let\gth@rseq@y\@empty + \@gth@remain@true\@gth@gapx@false\@gth@gapy@false + \@whilesw\if@gth@remain@\fi{% + \ifnum\gth@m=\z@ + \gth@decrement\gth@n + \expandafter\expandafter\expandafter + \ifx\gth@nameuse{seqb@\gth@n}\relax\else + \edef\gth@rseq@x{\gth@gap@char\gth@rseq@x}% + \edef\gth@rseq@y{\gth@nameuse{seqb@\gth@n}% + \gth@rseq@y}% + \fi + \else\ifnum\gth@n=\z@ + \gth@decrement\gth@m + \expandafter\expandafter\expandafter + \ifx\gth@nameuse{seqa@\gth@m}\relax\else + \edef\gth@rseq@x{\gth@nameuse{seqa@\gth@m}% + \gth@rseq@x}% + \edef\gth@rseq@y{\gth@gap@char\gth@rseq@y}% + \fi \else - \gth@tempcnta\@ne - \@whilenum\gth@tempcnta<\gth@m\do{% - \gth@tempcntb\@ne - \@whilenum\gth@tempcntb<\gth@n\do{% - \advance\gth@tempcnta\m@ne - \gth@max{% - \gth@nameuse{\gth@sn @m@\the\gth@tempcnta - @\the\gth@tempcntb},% - \gth@nameuse{\gth@sn @iy@\the\gth@tempcnta - @\the\gth@tempcntb}}% - \gth@tempcntc\gth@calc - \gth@tempcntd - \gth@nameuse{\gth@sn @ix@\the\gth@tempcnta - @\the\gth@tempcntb}% - \advance\gth@tempcntc-\gth@d\advance\gth@tempcntd-\gth@e - \advance\gth@tempcnta\@ne - \gth@max{\gth@tempcntc,\gth@tempcntd}% - \gth@name@xdef{\gth@sn @ix@\the\gth@tempcnta - @\the\gth@tempcntb}{% - \the\gth@calc}% - \advance\gth@tempcntb\m@ne - \gth@tempcntc - \gth@nameuse{\gth@sn @m@\the\gth@tempcnta - @\the\gth@tempcntb}% - \gth@tempcntd - \gth@nameuse{\gth@sn @iy@\the\gth@tempcnta - @\the\gth@tempcntb}% - \advance\gth@tempcntc-\gth@d\advance\gth@tempcntd-\gth@e - \advance\gth@tempcntb\@ne - \gth@max{\gth@tempcntc,\gth@tempcntd}% - \gth@name@xdef{\gth@sn @iy@\the\gth@tempcnta - @\the\gth@tempcntb}{% - \the\gth@calc}% - \advance\gth@tempcnta\m@ne\advance\gth@tempcntb\m@ne - \gth@max{% - \gth@nameuse{\gth@sn @m@\the\gth@tempcnta - @\the\gth@tempcntb},% - \gth@nameuse{\gth@sn @ix@\the\gth@tempcnta - @\the\gth@tempcntb},% - \gth@nameuse{\gth@sn @iy@\the\gth@tempcnta - @\the\gth@tempcntb}}% - \edef\gth@tmpa{\gth@nameuse{seqa@\the\gth@tempcnta}}% - \edef\gth@tmpb{\gth@nameuse{seqb@\the\gth@tempcntb}}% - \advance\gth@tempcnta\@ne\advance\gth@tempcntb\@ne - \ifx\gth@tmpa\gth@tmpb - \advance\gth@calc\gth@match - \else - \advance\gth@calc\gth@mismatch - \fi - \gth@name@xdef{\gth@sn @m@\the\gth@tempcnta - @\the\gth@tempcntb}{% - \the\gth@calc}% - \advance\gth@tempcntb\@ne}% - \advance\gth@tempcnta\@ne}% - \fi - %\gth@print@matrix{m}% - %\gth@print@matrix{ix}% - %\gth@print@matrix{iy}% - \bgroup - \gth@decrement\gth@m \gth@decrement\gth@n - \expandafter\xdef\gth@score{% - \gth@nameuse{\gth@sn @m@\gth@m @\gth@n}}% - \egroup - \let\gth@rseq@x\@empty\let\gth@rseq@y\@empty\let\gth@mode@seq\@empty - \@gth@remain@true\@gth@gapx@false\@gth@gapy@false - \@whilesw\if@gth@remain@\fi{% - \ifnum\gth@m=\z@ + \if@gth@gapx@ + \gth@decrement\gth@m + \expandafter\expandafter\expandafter + \ifx\gth@nameuse{seqa@\gth@m}\relax\else + \edef\gth@rseq@x{\gth@nameuse{seqa@\gth@m}% + \gth@rseq@x}% + \edef\gth@rseq@y{\gth@gap@char\gth@rseq@y}% + \fi + \gth@tempcnta\gth@nameuse{\gth@sn @m@\gth@m @\gth@n}% + \gth@tempcntb\gth@nameuse{\gth@sn @ix@\gth@m @\gth@n}% + \gth@tempcntc\gth@nameuse{\gth@sn @iy@\gth@m @\gth@n}% + \advance\gth@tempcnta-\gth@d + \advance\gth@tempcntb-\gth@e + \advance\gth@tempcntc-\gth@d + \ifnum\gth@tempcnta>\gth@tempcntb + \@gth@gapx@false + \else\ifnum\gth@tempcntb<\gth@tempcntc + \@gth@gapx@false\@gth@gapy@true + \fi\fi + \else\if@gth@gapy@ \gth@decrement\gth@n \expandafter\expandafter\expandafter \ifx\gth@nameuse{seqb@\gth@n}\relax\else @@ -203,91 +243,51 @@ \edef\gth@rseq@y{\gth@nameuse{seqb@\gth@n}% \gth@rseq@y}% \fi - \else\ifnum\gth@n=\z@ + \gth@tempcnta\gth@nameuse{\gth@sn @m@\gth@m @\gth@n}% + \gth@tempcntb\gth@nameuse{\gth@sn @iy@\gth@m @\gth@n}% + \advance\gth@tempcnta-\gth@d\advance\gth@tempcntb-\gth@e + \ifnum\gth@tempcnta>\gth@tempcntb + \@gth@gapy@false + \fi + \else \gth@decrement\gth@m + \gth@decrement\gth@n \expandafter\expandafter\expandafter \ifx\gth@nameuse{seqa@\gth@m}\relax\else - \edef\gth@rseq@x{\gth@nameuse{seqa@\gth@m}% - \gth@rseq@x}% - \edef\gth@rseq@y{\gth@gap@char\gth@rseq@y}% - \fi - \else - \if@gth@gapx@ - % mode: gap x - \gth@decrement\gth@m \expandafter\expandafter\expandafter - \ifx\gth@nameuse{seqa@\gth@m}\relax\else + \ifx\gth@nameuse{seqb@\gth@n}\relax\else \edef\gth@rseq@x{\gth@nameuse{seqa@\gth@m}% \gth@rseq@x}% - \edef\gth@rseq@y{\gth@gap@char\gth@rseq@y}% - \fi - \gth@tempcnta\gth@nameuse{\gth@sn @m@\gth@m @\gth@n}% - \gth@tempcntb\gth@nameuse{\gth@sn @ix@\gth@m @\gth@n}% - \gth@tempcntc\gth@nameuse{\gth@sn @iy@\gth@m @\gth@n}% - \advance\gth@tempcnta-\gth@d - \advance\gth@tempcntb-\gth@e - \advance\gth@tempcntc-\gth@d - \ifnum\gth@tempcnta>\gth@tempcntb - \@gth@gapx@false - \else\ifnum\gth@tempcntb<\gth@tempcntc - \@gth@gapx@false\@gth@gapy@true - \fi\fi - \else\if@gth@gapy@ - % mode: gap y - \gth@decrement\gth@n - \expandafter\expandafter\expandafter - \ifx\gth@nameuse{seqb@\gth@n}\relax\else - \edef\gth@rseq@x{\gth@gap@char\gth@rseq@x}% \edef\gth@rseq@y{\gth@nameuse{seqb@\gth@n}% \gth@rseq@y}% \fi - \gth@tempcnta\gth@nameuse{\gth@sn @m@\gth@m @\gth@n}% - \gth@tempcntb\gth@nameuse{\gth@sn @iy@\gth@m @\gth@n}% - \advance\gth@tempcnta-\gth@d\advance\gth@tempcntb-\gth@e - \ifnum\gth@tempcnta>\gth@tempcntb - \@gth@gapy@false - \fi - \else - % mode: default - \gth@decrement\gth@m - \gth@decrement\gth@n - \expandafter\expandafter\expandafter - \ifx\gth@nameuse{seqa@\gth@m}\relax\else - \expandafter\expandafter\expandafter - \ifx\gth@nameuse{seqb@\gth@n}\relax\else - \edef\gth@rseq@x{\gth@nameuse{seqa@\gth@m}% - \gth@rseq@x}% - \edef\gth@rseq@y{\gth@nameuse{seqb@\gth@n}% - \gth@rseq@y}% - \fi - \fi - \gth@tempcnta\gth@nameuse{\gth@sn @m@\gth@m @\gth@n}% - \gth@tempcntb\gth@nameuse{\gth@sn @ix@\gth@m @\gth@n}% - \gth@tempcntc\gth@nameuse{\gth@sn @iy@\gth@m @\gth@n}% - \@gth@gap@false - \ifnum\gth@tempcnta<\gth@tempcntb\@gth@gap@true\fi - \ifnum\gth@tempcnta<\gth@tempcntc\@gth@gap@true\fi - \if@gth@gap@ - \ifnum\gth@tempcntb>\gth@tempcntc - \@gth@gapx@true - \else - \@gth@gapy@true - \fi + \fi + \gth@tempcnta\gth@nameuse{\gth@sn @m@\gth@m @\gth@n}% + \gth@tempcntb\gth@nameuse{\gth@sn @ix@\gth@m @\gth@n}% + \gth@tempcntc\gth@nameuse{\gth@sn @iy@\gth@m @\gth@n}% + \@gth@gap@false + \ifnum\gth@tempcnta<\gth@tempcntb\@gth@gap@true\fi + \ifnum\gth@tempcnta<\gth@tempcntc\@gth@gap@true\fi + \if@gth@gap@ + \ifnum\gth@tempcntb>\gth@tempcntc + \@gth@gapx@true + \else + \@gth@gapy@true \fi - \fi\fi + \fi \fi\fi - \ifnum\gth@m<\@ne\ifnum\gth@n<\@ne - \@gth@remain@false - \fi\fi}% - \expandafter\gth@glet\gth@resulta\gth@rseq@x - \expandafter\gth@glet\gth@resultb\gth@rseq@y - \egroup} + \fi\fi + \ifnum\gth@m<\@ne\ifnum\gth@n<\@ne + \@gth@remain@false + \fi\fi}% + \expandafter\gth@glet\gth@resulta\gth@rseq@x + \expandafter\gth@glet\gth@resultb\gth@rseq@y} \def\gth@memo@ix#1#2{% \bgroup \gth@tempcnta#1\gth@tempcntb#2\relax \expandafter\expandafter\expandafter \ifx\gth@nameuse{\gth@sn @ix@\the\gth@tempcnta - @\the\gth@tempcntb}\relax + @\the\gth@tempcntb}\relax \advance\gth@tempcnta\m@ne \gth@memo@ix{\gth@tempcnta}{\gth@tempcntb}% \edef\gth@tmp@ix@return{\gth@ix@return}% @@ -313,7 +313,7 @@ \gth@tempcnta#1\gth@tempcntb#2\relax \expandafter\expandafter\expandafter \ifx\gth@nameuse{\gth@sn @iy@\the\gth@tempcnta - @\the\gth@tempcntb}\relax + @\the\gth@tempcntb}\relax \advance\gth@tempcntb\m@ne \gth@memo@iy{\gth@tempcnta}{\gth@tempcntb}% \edef\gth@tmp@iy@return{\gth@iy@return}% @@ -336,7 +336,7 @@ \gth@tempcnta#1\gth@tempcntb#2\relax \expandafter\expandafter\expandafter \ifx\gth@nameuse{\gth@sn @m@\the\gth@tempcnta - @\the\gth@tempcntb}\relax + @\the\gth@tempcntb}\relax \advance\gth@tempcnta\m@ne\advance\gth@tempcntb\m@ne \gth@memo@ix{\gth@tempcnta}{\gth@tempcntb}% \edef\gth@tmp@ix@return{\gth@ix@return}% -- cgit v1.2.3