source: branches/stable/GDE/MAFFT/mafft-7.055-with-extensions/core/mafft.tmpl

Last change on this file was 10371, checked in by aboeckma, 11 years ago

updated mafft version. Added extensions (no svn ignore, yet)

File size: 68.0 KB
Line 
1#! /bin/sh
2
3er=0;
4myself=`dirname "$0"`/`basename "$0"`; export myself
5version="v7.055b (2013/07/25)"; export version
6LANG=C; export LANG
7os=`uname`
8progname=`basename "$0"`
9if [ `echo $os | grep -i cygwin` ]; then
10        os="cygwin"
11elif [ `echo $os | grep -i mingw` ]; then
12        os="mingw"
13elif [ `echo $os | grep -i darwin` ]; then
14        os="darwin"
15elif [ `echo $os | grep -i sunos` ]; then
16        os="sunos"
17elif [ `echo $os | grep -i linux` ]; then
18        os="linux"
19else
20        os="unix"
21fi
22export os
23
24if [ "$MAFFT_BINARIES" ]; then
25        prefix="$MAFFT_BINARIES"
26else
27        prefix=_LIBDIR
28fi
29export prefix
30
31if [ $# -gt 0 ]; then
32        if [ "$1" = "--man" ]; then
33                man "$prefix/mafft.1"
34                exit 0;
35        fi
36fi
37
38if [ -x "$prefix/version" ]; then
39                versionbin=`"$prefix/version" | awk '{print $1}'` # for cygwin
40        else
41                versionbin="0.000"
42fi
43
44if ! expr "$version" : v"$versionbin" > /dev/null ; then
45        echo "" 1>&2
46        echo "v$versionbin != $version" 1>&2
47        echo "" 1>&2
48        echo "There is a problem in the configuration of your shell." 1>&2
49        echo "Check the MAFFT_BINARIES environmental variable by" 1>&2
50        echo "$ echo \$MAFFT_BINARIES" 1>&2
51        echo "" 1>&2
52        echo "This variable must be *unset*, unless you have installed MAFFT" 1>&2
53        echo "with a special configuration.  To unset this variable, type" 1>&2
54        echo "$ unset MAFFT_BINARIES" 1>&2
55        echo "or" 1>&2
56        echo "% unsetenv MAFFT_BINARIES" 1>&2
57        echo "Then retry" 1>&2
58        echo "$ mafft input > output" 1>&2
59        echo "" 1>&2
60        echo "To keep this change permanently, edit setting files" 1>&2
61        echo "(.bash_profile, .profile, .cshrc, etc) in your home directory" 1>&2
62        echo "to delete the MAFFT_BINARIES line." 1>&2
63        echo "On MacOSX, also edit or remove the .MacOSX/environment.plist file" 1>&2
64        echo "and then re-login (MacOSX 10.6) or reboot (MacOSX 10.7)." 1>&2
65        echo "" 1>&2
66        echo "Please send a problem report to kazutaka.katoh@aist.go.jp," 1>&2
67        echo "if this problem remains." 1>&2
68        echo "" 1>&2
69        exit 1
70        er=1
71fi
72
73defaultiterate=0
74defaultcycle=2
75defaultgop="1.53"
76#defaultaof="0.123"
77defaultaof="0.000"
78defaultlaof="0.100"
79defaultlgop="-2.00"
80defaultfft=1
81defaultrough=0
82defaultdistance="ktuples"
83#defaultdistance="local"
84defaultweighti="2.7"
85defaultweightr="0.0"
86defaultweightm="1.0"
87defaultdafs=0
88defaultmccaskill=0
89defaultcontrafold=0
90defaultalgopt="  "
91defaultalgoptit="  "
92defaultsbstmodel=" -b 62 "
93defaultfmodel=" "
94defaultkappa=" "
95if [ $progname = "xinsi" -o $progname = "mafft-xinsi" ]; then
96        defaultfft=1
97        defaultcycle=1
98        defaultiterate=1000
99        defaultdistance="scarna"
100        defaultweighti="3.2"
101        defaultweightr="8.0"
102        defaultweightm="2.0"
103        defaultmccaskill=1
104        defaultcontrafold=0
105        defaultdafs=0
106        defaultalgopt=" -A "
107        defaultalgoptit=" -AB " ## chui
108        defaultaof="0.0"
109        defaultsbstmodel=" -b 62 "
110        defaultkappa=" "
111        defaultfmodel="    "  # 2013/06/18
112elif [ $progname = "qinsi" -o $progname = "mafft-qinsi" ]; then
113        defaultfft=1
114        defaultcycle=1
115        defaultiterate=1000
116        defaultdistance="global"
117        defaultweighti="3.2"
118        defaultweightr="8.0"
119        defaultweightm="2.0"
120        defaultmccaskill=1
121        defaultcontrafold=0
122        defaultdafs=0
123        defaultalgopt=" -A "
124        defaultalgoptit=" -AB " ## chui
125        defaultaof="0.0"
126        defaultsbstmodel=" -b 62 "
127        defaultkappa=" "
128        defaultfmodel="    "  # 2013/06/18
129elif [ $progname = "linsi" -o $progname = "mafft-linsi" ]; then
130        defaultfft=0
131        defaultcycle=1
132        defaultiterate=1000
133        defaultdistance="local"
134elif [ $progname = "ginsi" -o $progname = "mafft-ginsi" ]; then
135        defaultfft=1
136        defaultcycle=1
137        defaultiterate=1000
138        defaultdistance="global"
139elif [ $progname = "einsi" -o $progname = "mafft-einsi" ]; then
140        defaultfft=0
141        defaultcycle=1
142        defaultiterate=1000
143        defaultdistance="localgenaf"
144elif [ $progname = "fftns" -o $progname = "mafft-fftns" ]; then
145        defaultfft=1
146        defaultcycle=2
147        defaultdistance="ktuples"
148elif [ $progname = "fftnsi" -o $progname = "mafft-fftnsi" ]; then
149        defaultfft=1
150        defaultcycle=2
151        defaultiterate=2
152        defaultdistance="ktuples"
153elif [ $progname = "nwns" -o $progname = "mafft-nwns" ]; then
154        defaultfft=0
155        defaultcycle=2
156        defaultdistance="ktuples"
157elif [ $progname = "nwnsi" -o $progname = "mafft-nwnsi" ]; then
158        defaultfft=0
159        defaultcycle=2
160        defaultiterate=2
161        defaultdistance="ktuples"
162fi
163outputfile=""
164namelength=-1
165anysymbol=0
166parallelizationstrategy="BAATARI2"
167kappa=$defaultkappa
168sbstmodel=$defaultsbstmodel
169fmodel=$defaultfmodel
170gop=$defaultgop
171aof=$defaultaof
172cycle=$defaultcycle
173iterate=$defaultiterate
174fft=$defaultfft
175rough=$defaultrough
176distance=$defaultdistance
177forcefft=0
178memopt=" "
179weightopt=" "
180GGOP="-6.00"
181LGOP="-6.00"
182LEXP="-0.000"
183GEXP="-0.000"
184lgop=$defaultlgop
185lexp="-0.100"
186laof=$defaultlaof
187pggop="-2.00"
188pgexp="-0.10"
189pgaof="0.10"
190rgop="-1.530"
191rgep="-0.000"
192seqtype="  "
193weighti=$defaultweighti
194weightr=$defaultweightr
195weightm=$defaultweightm
196rnaalifold=0
197dafs=$defaultdafs
198mccaskill=$defaultmccaskill
199contrafold=$defaultcontrafold
200progressfile="/dev/stderr"
201debug=0
202sw=0
203algopt=$defaultalgopt
204algoptit=$defaultalgoptit
205algspecified=0
206pairspecified=0
207scorecalcopt=" "
208coreout=0
209corethr="0.5"
210corewin="100"
211coreext=" "
212outputformat="pir"
213outorder="input"
214seed="x"
215seedtable="x"
216auto=0
217groupsize=-1
218partsize=50
219partdist="ktuples"
220partorderopt=" -x "
221treeout=0
222distout=0
223treein=0
224topin=0
225treeinopt="  "
226seedfiles="/dev/null"
227seedtablefile="/dev/null"
228aamatrix="/dev/null"
229treeinfile="/dev/null"
230rnascoremtx=" "
231laraparams="/dev/null"
232foldalignopt=" "
233treealg=" -X "
234scoreoutarg=" "
235numthreads=0
236numthreadsit=-1
237randomseed=0
238addfile="/dev/null"
239addarg0=" "
240fragment=0
241mergetable="/dev/null"
242mergearg=" "
243seedoffset=0
244outnum=" "
245last_e=5000
246last_m=3
247last_subopt=" "
248last_once=" "
249adjustdirection=0
250tuplesize=6
251if [ $# -gt 0 ]; then
252        while [ $# -gt 1 ];
253        do
254                if [ "$1" = "--auto" ]; then
255                        auto=1
256                elif [ "$1" = "--anysymbol" ]; then
257                        anysymbol=1
258                elif [ "$1" = "--preservecase" ]; then
259                        anysymbol=1
260                elif [ "$1" = "--clustalout" ]; then
261                        outputformat="clustal"
262                elif [ "$1" = "--phylipout" ]; then
263                        outputformat="phylip"
264                elif [ "$1" = "--reorder" ]; then
265                        outorder="aligned"
266                        partorderopt=" "
267                elif [ "$1" = "--inputorder" ]; then
268                        outorder="input"
269                        partorderopt=" -x "
270                elif [ "$1" = "--unweight" ]; then
271                        weightopt=" -u "
272                elif [ "$1" = "--alga" ]; then
273                        algopt=" "
274                        algoptit=" "
275                        algspecified=1
276                elif [ "$1" = "--algq" ]; then
277                        algopt=" -Q "
278                        algoptit=" "
279                        algspecified=1
280                elif [ "$1" = "--namelength" ]; then
281                        shift   
282                        namelength=`expr "$1" - 0`
283                        if ! expr "$1" : "[0-9]" > /dev/null ; then
284                                echo "Specify the length of name in clustal format output!" 1>&2
285                                exit
286                        fi
287                elif [ "$1" = "--groupsize" ]; then
288                        shift   
289                        groupsize=`expr "$1" - 0`
290                        if ! expr "$1" : "[0-9]" > /dev/null ; then
291                                echo "Specify groupsize!" 1>&2
292                                exit
293                        fi
294                elif [ "$1" = "--partsize" ]; then
295                        shift   
296                        partsize=`expr "$1" - 0`
297                        if ! expr "$1" : "[0-9]" > /dev/null ; then
298                                echo "Specify partsize!" 1>&2
299                                exit
300                        fi
301                elif [ "$1" = "--parttree" ]; then
302                        distance="parttree"
303                        partdist="ktuples"
304                elif [ "$1" = "--dpparttree" ]; then
305                        distance="parttree"
306                        partdist="localalign"
307                elif [ "$1" = "--fastaparttree" ]; then
308                        distance="parttree"
309                        partdist="fasta"
310                elif [ "$1" = "--treeout" ]; then
311                        treeout=1
312                elif [ "$1" = "--distout" ]; then
313                        distout=1
314                elif [ "$1" = "--fastswpair" ]; then
315                        distance="fasta"
316                        pairspecified=1
317                        sw=1
318                elif [ "$1" = "--fastapair" ]; then
319                        distance="fasta"
320                        pairspecified=1
321                        sw=0
322                elif [ "$1" = "--averagelinkage" ]; then
323                        treealg=" -E "
324                elif [ "$1" = "--minimumlinkage" ]; then
325                        treealg=" -q "
326                elif [ "$1" = "--noscore" ]; then
327                        scorecalcopt=" -Z "
328                elif [ "$1" = "--6mermultipair" ]; then
329                        distance="ktuplesmulti"
330                        tuplesize=6
331                        pairspecified=1
332                elif [ "$1" = "--10mermultipair" ]; then
333                        distance="ktuplesmulti"
334                        tuplesize=10
335                        pairspecified=1
336                elif [ "$1" = "--6merpair" ]; then
337                        distance="ktuples"
338                        tuplesize=6
339                        pairspecified=1
340                elif [ "$1" = "--10merpair" ]; then
341                        distance="ktuples"
342                        tuplesize=10
343                        pairspecified=1
344                elif [ "$1" = "--blastpair" ]; then
345                        distance="blast"
346                        pairspecified=1
347                elif [ "$1" = "--lastmultipair" ]; then
348                        distance="lastmulti"
349                        pairspecified=1
350                elif [ "$1" = "--globalpair" ]; then
351                        distance="global"
352                        pairspecified=1
353                elif [ "$1" = "--localpair" ]; then
354                        distance="local"
355                        pairspecified=1
356                elif [ "$1" = "--lastpair" ]; then
357                        distance="last"
358                        pairspecified=1
359                elif [ "$1" = "--multipair" ]; then
360                        distance="multi"
361                        pairspecified=1
362                elif [ "$1" = "--hybridpair" ]; then
363                        distance="hybrid"
364                        pairspecified=1
365                elif [ "$1" = "--scarnapair" ]; then
366                        distance="scarna"
367                        pairspecified=1
368                elif [ "$1" = "--dafspair" ]; then
369                        distance="dafs"
370                        pairspecified=1
371                elif [ "$1" = "--larapair" ]; then
372                        distance="lara"
373                        pairspecified=1
374                elif [ "$1" = "--slarapair" ]; then
375                        distance="slara"
376                        pairspecified=1
377                elif [ "$1" = "--foldalignpair" ]; then
378                        distance="foldalignlocal"
379                        pairspecified=1
380                elif [ "$1" = "--foldalignlocalpair" ]; then
381                        distance="foldalignlocal"
382                        pairspecified=1
383                elif [ "$1" = "--foldalignglobalpair" ]; then
384                        distance="foldalignglobal"
385                        pairspecified=1
386                elif [ "$1" = "--globalgenafpair" ]; then
387                        distance="globalgenaf"
388                        pairspecified=1
389                elif [ "$1" = "--localgenafpair" ]; then
390                        distance="localgenaf"
391                        pairspecified=1
392                elif [ "$1" = "--genafpair" ]; then
393                        distance="localgenaf"
394                        pairspecified=1
395                elif [ "$1" = "--memsave" ]; then
396                        memopt=" -M -B "         # -B (bunkatsunashi no riyu ga omoidasenai)
397                elif [ "$1" = "--nomemsave" ]; then
398                        memopt=" -N "
399                elif [ "$1" = "--nuc" ]; then
400                        seqtype=" -D "
401                elif [ "$1" = "--amino" ]; then
402                        seqtype=" -P "
403                elif [ "$1" = "--fft" ]; then
404                        fft=1
405                        forcefft=1
406                elif [ "$1" = "--nofft" ]; then
407                        fft=0
408                elif [ "$1" = "--quiet" ]; then
409                        if [ $os = "mingw" ]; then
410                                progressfile="nul"
411                        else
412                                progressfile="/dev/null"
413                        fi
414                elif [ "$1" = "--debug" ]; then
415                        debug=1
416                elif [ "$1" = "--coreext" ]; then
417                        coreext=" -c "
418                elif [ "$1" = "--core" ]; then
419                        coreout=1
420                elif [ "$1" = "--adjustdirection" ]; then
421                        adjustdirection=1
422                elif [ "$1" = "--adjustdirectionaccurately" ]; then
423                        adjustdirection=2
424                elif [ "$1" = "--progress" ]; then
425                        shift   
426                        progressfile="$1"
427                        if ! ( expr "$progressfile" : "/" > /dev/null || expr "$progressfile" : "[A-Za-z]\:" > /dev/null ) ; then
428                                echo "Specify a progress file name with the absolute path!" 1>&2
429                                exit
430                        fi
431                elif [ "$1" = "--out" ]; then
432                        shift   
433                        outputfile="$1"
434                elif [ "$1" = "--thread" ]; then
435                        shift
436                        if ! expr "$1" : "[0-9\-]" > /dev/null ; then
437                                echo "Specify the number of threads!" 1>&2
438                                exit
439                        fi
440                        numthreads=`expr "$1" - 0`
441                elif [ "$1" = "--threadit" ]; then
442                        shift
443                        if ! expr "$1" : "[0-9\-]" > /dev/null ; then
444                                echo "Specify the number of threads for the iterative step!" 1>&2
445                                exit
446                        fi
447                        numthreadsit=`expr "$1" - 0`
448                elif [ "$1" = "--last_subopt" ]; then
449                        last_subopt="-S"
450                elif [ "$1" = "--last_once" ]; then
451                        last_once="-Q"
452                elif [ "$1" = "--last_m" ]; then
453                        shift
454                        last_m=`expr "$1" - 0`
455                elif [ "$1" = "--last_e" ]; then
456                        shift
457                        last_e=`expr "$1" - 0`
458                elif [ "$1" = "--randomseed" ]; then
459                        shift
460                        randomseed=`expr "$1" - 0`
461                elif [ "$1" = "--bestfirst" ]; then
462                        parallelizationstrategy="BESTFIRST"
463                elif [ "$1" = "--adhoc0" ]; then
464                        parallelizationstrategy="BAATARI0"
465                elif [ "$1" = "--adhoc1" ]; then
466                        parallelizationstrategy="BAATARI1"
467                elif [ "$1" = "--adhoc2" ]; then
468                        parallelizationstrategy="BAATARI2"
469                elif [ "$1" = "--simplehillclimbing" ]; then
470                        parallelizationstrategy="BAATARI2"
471                elif [ "$1" = "--scoreout" ]; then
472                        scoreoutarg="-S -B"
473                elif [ "$1" = "--outnum" ]; then
474                        scoreoutarg="-n"
475                elif [ "$1" = "--merge" ]; then
476                        shift
477                        mergetable="$1"
478                        if [ ! -e "$mergetable" ]; then
479                                echo "Cannot open $mergetable" 1>&2
480                                exit
481                        fi
482                elif [ "$1" = "--addprofile" ]; then
483                        shift   
484                        addarg0="-I"
485                        addfile="$1"
486                elif [ "$1" = "--add" ]; then
487                        shift   
488                        addarg0="-K -I"
489                        addfile="$1"
490                elif [ "$1" = "--addfragments" ]; then
491                        shift   
492                        addarg0="-K -I"
493                        addfile="$1"
494                        fragment=1
495                elif [ "$1" = "--addfull" ]; then
496                        shift   
497                        addarg0="-K -I"
498                        addfile="$1"
499                        fragment=-1
500                elif [ "$1" = "--maxiterate" ]; then
501                        shift   
502                        iterate=`expr "$1" - 0`
503                        if ! expr "$1" : "[0-9]" > /dev/null ; then
504                                echo "Specify the number of iterations!" 1>&2
505                                exit
506                        fi
507                elif [ "$1" = "--retree" ]; then
508                        shift   
509                        cycle=`expr "$1" - 0`
510                        if ! expr "$1" : "[0-9]" > /dev/null ; then
511                                echo "Specify the number of tree rebuilding!" 1>&2
512                                exit
513                        fi
514                elif [ "$1" = "--aamatrix" ]; then
515                        shift   
516                        sbstmodel=" -b -1 "
517                        aamatrix="$1"
518                        if [ ! -e "$aamatrix" ]; then
519                                echo "Cannot open $aamatrix" 1>&2
520                                exit
521                        fi
522                elif [ "$1" = "--treein" ]; then
523                        shift   
524                        treeinopt=" -U "
525                        treein=1
526                        treeinfile="$1"
527                        if [ ! -e "$treeinfile" ]; then
528                                echo "Cannot open $treeinfile" 1>&2
529                                exit
530                        fi
531                elif [ "$1" = "--topin" ]; then
532                        shift   
533                        treeinopt=" -V "
534                        treein=1
535                        treeinfile="$1"
536                        echo "The --topin option has been disabled." 1>&2
537                        echo "There was a bug in version < 6.530."   1>&2
538                        echo "This bug has not yet been fixed."      1>&2
539                        exit 1
540                elif [ "$1" = "--kappa" ]; then
541                        shift   
542                        kappa=" -k $1 "
543                        if ! expr "$1" : "[0-9]" > /dev/null ; then
544                                echo "Specify kappa value!" 1>&2
545                                exit
546                        fi
547                elif [ "$1" = "--fmodel" ]; then
548                        fmodel=" -a "
549                elif [ "$1" = "--jtt" ]; then
550                        shift   
551                        sbstmodel=" -j $1"
552                        if ! expr "$1" : "[0-9]" > /dev/null ; then
553                                echo "Specify pam value!" 1>&2
554                                exit
555                        fi
556                elif [ "$1" = "--kimura" ]; then
557                        shift   
558                        sbstmodel=" -j $1"
559                        if ! expr "$1" : "[0-9]" > /dev/null ; then
560                                echo "Specify pam value!" 1>&2
561                                exit
562                        fi
563                elif [ "$1" = "--tm" ]; then
564                        shift   
565                        sbstmodel=" -m $1"
566                        if ! expr "$1" : "[0-9]" > /dev/null ; then
567                                echo "Specify pam value!" 1>&2
568                                exit
569                        fi
570                elif [ "$1" = "--bl" ]; then
571                        shift   
572                        sbstmodel=" -b $1"
573                        if ! expr "$1" : "[0-9]" > /dev/null ; then
574                                echo "blosum $1?" 1>&2
575                                exit
576                        fi
577                elif [ "$1" = "--weighti" ]; then
578                        shift   
579                        weighti="$1"
580                        if ! expr "$1" : "[0-9]" > /dev/null ; then
581                                echo "Specify weighti value!" 1>&2
582                                exit
583                        fi
584                elif [ "$1" = "--weightr" ]; then
585                        shift   
586                        weightr="$1"
587                        if ! expr "$1" : "[0-9]" > /dev/null ; then
588                                echo "Specify weightr value!" 1>&2
589                                exit
590                        fi
591                elif [ "$1" = "--weightm" ]; then
592                        shift   
593                        weightm="$1"
594                        if ! expr "$1" : "[0-9]" > /dev/null ; then
595                                echo "Specify weightm value!" 1>&2
596                                exit
597                        fi
598                elif [ "$1" = "--rnaalifold" ]; then
599                        rnaalifold=1
600                elif [ "$1" = "--mccaskill" ]; then
601                        mccaskill=1
602                        contrafold=0
603                        dafs=0
604                elif [ "$1" = "--contrafold" ]; then
605                        mccaskill=0
606                        contrafold=1
607                        dafs=0
608                elif [ "$1" = "--dafs" ]; then
609                        mccaskill=0
610                        contrafold=0
611                        dafs=1
612                elif [ "$1" = "--ribosum" ]; then
613                        rnascoremtx=" -s "
614                elif [ "$1" = "--op" ]; then
615                        shift   
616                        gop="$1"
617                        if ! expr "$1" : "[0-9]" > /dev/null ; then
618                                echo "Specify op!" 1>&2
619                                exit
620                        fi
621                elif [ "$1" = "--ep" ]; then
622                        shift   
623                        aof="$1"
624                        if ! expr "$1" : "[0-9]" > /dev/null ; then
625                                echo "Specify ep!" 1>&2
626                                exit
627                        fi
628                elif [ "$1" = "--rop" ]; then
629                        shift   
630                        rgop="$1"
631# Atode check
632                elif [ "$1" = "--rep" ]; then
633                        shift   
634                        rgep="$1"
635                elif [ "$1" = "--lop" ]; then
636                        shift   
637                        lgop="$1"
638                elif [ "$1" = "--LOP" ]; then
639                        shift   
640                        LGOP="$1"
641                elif [ "$1" = "--lep" ]; then
642                        shift   
643                        laof="$1"
644                elif [ "$1" = "--lexp" ]; then
645                        shift   
646                        lexp="$1"
647                elif [ "$1" = "--LEXP" ]; then
648                        shift   
649                        LEXP="$1"
650                elif [ "$1" = "--GEXP" ]; then
651                        shift   
652                        GEXP="$1"
653                elif [ "$1" = "--GOP" ]; then
654                        shift   
655                        GGOP="$1"
656                elif [ "$1" = "--gop" ]; then
657                        shift   
658                        pggop="$1"
659                elif [ "$1" = "--gep" ]; then
660                        shift   
661                        pgaof="$1"
662                elif [ "$1" = "--gexp" ]; then
663                        shift   
664                        pgexp="$1"
665                elif [ "$1" = "--laraparams" ]; then
666                        shift   
667                        laraparams="$1"
668                elif [ "$1" = "--corethr" ]; then
669                        shift   
670                        corethr="$1"
671                elif [ "$1" = "--corewin" ]; then
672                        shift   
673                        corewin="$1"
674                elif [ "$1" = "--seedtable" ]; then
675                        shift
676                        seedtable="y"
677                        seedtablefile="$1"
678                elif [ "$1" = "--seed" ]; then
679                        shift
680                        seed="m"
681                        seedfiles="$seedfiles $1"
682                elif [ $progname = "fftns" -o  $progname = "nwns" ]; then
683                        if [ "$1" -gt 0 ]; then
684                                cycle=`expr "$1" - 0`
685                        fi
686                else
687                        echo "Unknown option:  $1" 1>&2
688                        er=1;
689                fi
690                shift   
691        done;
692
693        echo "" 1>"$progressfile"
694
695#       TMPFILE=/tmp/$progname.$$
696        TMPFILE=`mktemp -dt $progname.XXXXXXXXXX`
697        if [ $? -ne 0 ]; then
698                echo "mktemp seems to be obsolete. Re-trying without -t" 1>&2
699                TMPFILE=`mktemp -d /tmp/$progname.XXXXXXXXXX`
700        fi     
701        umask 077
702#       mkdir  $TMPFILE  || er=1
703        if [ $debug -eq 1 ]; then
704                trap "tar cfvz debuginfo.tgz $TMPFILE; rm -rf $TMPFILE " 0
705        else
706                trap "rm -rf $TMPFILE" 0
707        fi
708        if [ $# -eq 1 ]; then
709                if [ -r "$1" -o "$1" = - ]; then
710
711                        if [ -r "$addfile" ]; then
712                                printf '';
713                        else
714                                echo "$0": Cannot open "$addfile". 1>&2
715                                exit 1;
716                        fi
717
718                        cat "$1"              | tr "\r" "\n" > $TMPFILE/infile
719                        echo ""                             >> $TMPFILE/infile
720                        cat "$addfile"        | tr "\r" "\n" | grep -v "^$" >> $TMPFILE/infile
721                        cat "$addfile"        | tr "\r" "\n" | grep -v "^$" > $TMPFILE/_addfile
722                        cat "$aamatrix"       | tr "\r" "\n" | grep -v "^$" > $TMPFILE/_aamtx
723                        cat "$mergetable"     | tr "\r" "\n" | grep -v "^$" > $TMPFILE/_subalignmentstable
724                        cat "$treeinfile"     | tr "\r" "\n" | grep -v "^$" > $TMPFILE/_guidetree
725                        cat "$seedtablefile"  | tr "\r" "\n" | grep -v "^$" > $TMPFILE/_seedtablefile
726                        cat "$laraparams"     | tr "\r" "\n" | grep -v "^$" > $TMPFILE/_lara.params
727
728#                       echo $seedfiles
729                        infilename="$1"
730                        seedfilesintmp="/dev/null"
731                        seednseq="0"
732                        set $seedfiles > /dev/null
733                        while [ $# -gt 1 ];
734                        do
735                                shift
736                                if [ -r "$1" ]; then
737                                        cat "$1" | tr "\r" "\n" >  $TMPFILE/seed$#
738                                else
739                                        echo "$0": Cannot open "$1". 1>&2
740                                        exit 1;
741                                fi
742                                seednseq=$seednseq" "`grep -c '^[>|=]' $TMPFILE/seed$#`
743                                seedfilesintmp=$seedfilesintmp" "seed$#
744                        done
745#                       ls $TMPFILE
746#                       echo $seedfilesintmp
747#                       echo $seednseq
748
749
750                else
751                        echo "$0": Cannot open "$1". 1>&2
752                        er=1
753#                       exit 1;
754                fi
755        else
756                echo '$#'"=$#" 1>&2
757                er=1
758        fi
759
760
761
762        if [ $numthreads -lt 0 ]; then
763                if [ $os = "linux" ]; then
764                        nlogicalcore=`cat /proc/cpuinfo | grep "^processor" | uniq | wc -l`
765                        ncoresinacpu=`cat /proc/cpuinfo | grep 'cpu cores' | uniq | awk '{print $4}'`
766                        nphysicalcpu=`cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l`
767                        if [ $nlogicalcore -eq 0 ]; then
768                                echo "Cannot get the number of processors from /proc/cpuinfo" 1>>"$progressfile"
769                                exit 1
770                        fi
771                        if [ ${#ncoresinacpu} -gt 0 -a $nphysicalcpu -gt 0 ]; then
772                                numthreads=`expr $ncoresinacpu '*' $nphysicalcpu`
773#                               if [ $nlogicalcore -gt $numthreads ]; then    # Hyperthreading
774#                                       numthreads=`expr $numthreads '+' 1`
775#                               fi
776                        else
777                                numthreads=$nlogicalcore
778                        fi
779                elif [ $os = "darwin" ]; then
780                        numthreads=`sysctl -n hw.physicalcpu`
781                        if [ -z $numthreads ]; then
782                                echo "Cannot get the number of physical cores from sysctl" 1>>"$progressfile"
783                                exit 1
784                        fi
785#                       nlogicalcore=`sysctl -n hw.logicalcpu`
786#                       if [ $nlogicalcore -gt $numthreads ]; then    # Hyperthreading
787#                               numthreads=`expr $numthreads '+' 1`
788#                       fi
789                elif [ $os = "mingw" -o $os = "cygwin" ]; then
790                        numthreads=0
791                else
792                        echo "Cannot count the number of physical cores." 1>>"$progressfile"
793                        exit 1
794                fi
795                echo $os 1>>"$progressfile"
796                echo $numthreads 1>>"$progressfile"
797        fi
798
799        if [ $numthreadsit -lt 0 ]; then
800                if [ $numthreads -lt 7 ]; then
801                        numthreadsit=$numthreads
802                else
803                        numthreadsit=6
804                fi
805        fi
806
807        if [ $numthreadsit -eq 0 -a $parallelizationstrategy = "BESTFIRST" ]; then
808                echo 'Impossible' 1>&2;
809                exit 1;
810        fi
811
812        if [ "$addarg0" != " " ]; then
813                iterate=0  # 2013/03/23
814                "$prefix/countlen" < $TMPFILE/_addfile > $TMPFILE/addsize 2>>"$progressfile"
815                nadd=`awk '{print $1}' $TMPFILE/addsize`
816                if [ $nadd -eq "0" ]; then
817                        echo Check $addfile 1>&2
818                        exit 1;
819                fi
820                if [ $seed != "x" -o $seedtable != "x" ]; then
821                        echo 'Impossible' 1>&2;
822                        echo 'Use either ONE of --seed, --seedtable, --addprofile and --add.' 1>&2
823                        exit 1;
824                fi
825        else
826                nadd="0"
827        fi
828
829        if [ $auto -eq 1 ]; then
830                "$prefix/countlen" < $TMPFILE/infile > $TMPFILE/size 2>>"$progressfile"
831                nseq=`awk '{print $1}' $TMPFILE/size`
832                nlen=`awk '{print $3}' $TMPFILE/size`
833                if [ $nlen -lt 2000 -a $nseq -lt 100 ]; then
834                        distance="local"
835                        iterate=1000
836                elif [ $nlen -lt 10000 -a $nseq -lt 500 ]; then
837                        distance="ktuples"
838                        iterate=2
839                        cycle=2
840                elif [ $nseq -lt 10000 ]; then
841                        distance="ktuples"
842                        iterate=0
843                        cycle=2
844                elif [ $nseq -lt 30000 ]; then
845                        distance="ktuples"
846                        iterate=0
847                        cycle=1
848                elif [ $nlen -lt 10000 ]; then
849                        distance="parttree"
850                        partdist="localalign"
851                        algopt=" "
852                        algoptit=" "
853                        algspecified=1
854                        cycle=1
855                else
856                        distance="parttree"
857                        partdist="ktuples"
858                        algopt=" "
859                        algoptit=" "
860                        algspecified=1
861                        cycle=1
862                fi
863                if [ $fragment -ne 0 ]; then
864                        norg=`expr $nseq '-' $nadd`
865                        npair=`expr $norg '*' $nadd`
866                        echo "nadd = " $nadd               1>>"$progressfile"
867                        echo "npair = " $npair             1>>"$progressfile"
868# nagasa check!
869#
870                        if [ $npair -gt 10000000 ]; then  # ato de kentou
871                                distance="ktuples"
872                                echo "use ktuples! size=$tuplesize" 1>>"$progressfile"
873                        elif [ $npair -gt 3000000 ]; then  # ato de kentou
874                                distance="multi"
875                                weighti="0.0"
876                                echo "use multipair, weighti=0.0!" 1>>"$progressfile"
877                        else
878                                distance="multi"
879                                echo "use multipair, weighti=$weighti!" 1>>"$progressfile"
880                        fi
881                        pairspecified=1
882                fi
883        fi
884
885        if [ $parallelizationstrategy = "BESTFIRST" -o  $parallelizationstrategy = "BAATARI0" ]; then
886                iteratelimit=254
887        else
888                iteratelimit=16
889        fi
890        if [ $iterate -gt $iteratelimit ]; then    #??
891                iterate=$iteratelimit
892        fi
893
894        if [ $rnaalifold -eq 1 ]; then
895                rnaopt=" -e $rgep -o $rgop -c $weightm -r $weightr -R $rnascoremtx "
896#               rnaoptit=" -o $rgop -BT -c $weightm -r $weightr -R "
897                rnaoptit=" -o $rgop -F -c $weightm -r $weightr -R "
898        elif [ $mccaskill -eq 1 -o $dafs -eq 1 -o $contrafold -eq 1 ]; then
899                rnaopt=" -o $rgop -c $weightm -r $weightr "
900#               rnaoptit=" -e $rgep -o $rgop -BT -c $weightm -r $weightr $rnascoremtx "
901                rnaoptit=" -e $rgep -o $rgop -F -c $weightm -r $weightr $rnascoremtx "
902        else
903                rnaopt="  "
904                rnaoptit=" -F "
905        fi
906
907        if [ $algspecified -eq 0 ]; then
908                if [ $distance = "parttree" ]; then
909                        algopt=" -Q "
910                        algoptit=" "
911                else
912                        algopt=" "
913                        algoptit=" "
914                fi
915        fi
916
917        model="$sbstmodel $kappa $fmodel"
918
919        if [ $er -eq 1 ]; then
920                echo "------------------------------------------------------------------------------" 1>&2
921                echo "  MAFFT" $version 1>&2
922#               echo "" 1>&2
923#               echo "  Input format: fasta" 1>&2
924#               echo ""  1>&2
925#               echo "  Usage: `basename $0` [options] inputfile > outputfile" 1>&2
926            echo "  http://mafft.cbrc.jp/alignment/software/" 1>&2
927                echo "  MBE 30:772-780 (2013), NAR 30:3059-3066 (2002)"        1>&2
928#               echo "------------------------------------------------------------------------------" 1>&2
929#               echo "  % mafft in > out" 1>&2
930                echo "------------------------------------------------------------------------------" 1>&2
931#               echo ""  1>&2
932                echo "High speed:" 1>&2
933                echo "  % mafft in > out" 1>&2
934                echo "  % mafft --retree 1 in > out (fast)" 1>&2
935                echo "" 1>&2
936                echo "High accuracy (for <~200 sequences x <~2,000 aa/nt):" 1>&2
937                echo "  % mafft --maxiterate 1000 --localpair  in > out (% linsi in > out is also ok)" 1>&2
938                echo "  % mafft --maxiterate 1000 --genafpair  in > out (% einsi in > out)" 1>&2
939                echo "  % mafft --maxiterate 1000 --globalpair in > out (% ginsi in > out)" 1>&2
940                echo "" 1>&2
941                echo "If unsure which option to use:" 1>&2
942                echo "  % mafft --auto in > out" 1>&2
943                echo "" 1>&2
944#               echo "Other options:" 1>&2
945                echo "--op # :         Gap opening penalty, default: 1.53" 1>&2
946                echo "--ep # :         Offset (works like gap extension penalty), default: 0.0" 1>&2
947                echo "--maxiterate # : Maximum number of iterative refinement, default: 0" 1>&2
948                echo "--clustalout :   Output: clustal format, default: fasta" 1>&2
949                echo "--reorder :      Outorder: aligned, default: input order" 1>&2
950                echo "--quiet :        Do not report progress" 1>&2
951                echo "--thread # :     Number of threads (if unsure, --thread -1)" 1>&2
952#               echo "" 1>&2
953#               echo " % mafft --maxiterate 1000 --localpair in > out (L-INS-i)" 1>&2
954#               echo " most accurate in many cases, assumes only one alignable domain" 1>&2
955#               echo "" 1>&2
956#               echo " % mafft --maxiterate 1000 --genafpair in > out (E-INS-i)" 1>&2
957#               echo " works well if many unalignable residues exist between alignable domains" 1>&2
958#               echo "" 1>&2
959#               echo " % mafft --maxiterate 1000 --globalpair in > out (G-INS-i)" 1>&2
960#               echo " suitable for globally alignable sequences            " 1>&2
961#               echo "" 1>&2
962#               echo " % mafft --maxiterate 1000 in > out (FFT-NS-i)" 1>&2
963#               echo " accurate and slow, iterative refinement method      " 1>&2
964#               echo "" 1>&2
965#               echo "If the input sequences are long (~1,000,000nt)," 1>&2
966#               echo " % mafft --retree 1 --memsave --fft in > out (FFT-NS-1-memsave, new in v5.8)" 1>&2
967#               echo "" 1>&2
968#               echo "If many (~5,000) sequences are to be aligned," 1>&2
969#               echo "" 1>&2
970#               echo " % mafft --retree 1 [--memsave] --nofft in > out (NW-NS-1, new in v5.8)" 1>&2
971#               echo "" 1>&2
972#               echo " --localpair :      All pairwise local alignment information is included"  1>&2
973#               echo "                    to the objective function, default: off"  1>&2
974#               echo " --globalpair :     All pairwise global alignment information is included"  1>&2
975#               echo "                    to the objective function, default: off"  1>&2
976#               echo " --op # :           Gap opening penalty, default: $defaultgop " 1>&2
977#               echo " --ep # :           Offset (works like gap extension penalty), default: $defaultaof " 1>&2
978#               echo " --bl #, --jtt # :  Scoring matrix, default: BLOSUM62" 1>&2
979#               echo "                    Alternatives are BLOSUM (--bl) 30, 45, 62, 80, " 1>&2
980#               echo "                    or JTT (--jtt) # PAM. " 1>&2
981#               echo " --nuc or --amino : Sequence type, default: auto" 1>&2
982#               echo " --retree # :       The number of tree building in progressive method " 1>&2
983#               echo "                    (see the paper for detail), default: $defaultcycle " 1>&2
984#               echo " --maxiterate # :   Maximum number of iterative refinement, default: $defaultiterate " 1>&2
985#               if [ $defaultfft -eq 1 ]; then
986#                       echo " --fft or --nofft:  FFT is enabled or disabled, default: enabled" 1>&2
987#               else
988#                       echo " --fft or --nofft:  FFT is enabled or disabled, default: disabled" 1>&2
989#               fi
990#               echo " --memsave:         Memory saving mode" 1>&2
991#               echo "                    (for long genomic sequences), default: off" 1>&2
992#               echo " --clustalout :     Output: clustal format, default: fasta" 1>&2
993#               echo " --reorder :        Outorder: aligned, default: input order" 1>&2
994#               echo " --quiet :          Do not report progress" 1>&2
995#               echo "-----------------------------------------------------------------------------" 1>&2
996                exit 1;
997        fi
998        if [ $sw -eq 1 ]; then
999                swopt=" -A "
1000        else
1001                swopt=" "
1002        fi
1003
1004        if [ $distance = "fasta" -o $partdist = "fasta" ]; then
1005                if [ ! "$FASTA_4_MAFFT" ]; then
1006                        FASTA_4_MAFFT=`which fasta34`
1007                fi
1008
1009                if [ ! -x "$FASTA_4_MAFFT" ]; then
1010                        echo ""       1>&2
1011                        echo "== Install FASTA ========================================================" 1>&2
1012                        echo "This option requires the fasta34 program (FASTA version x.xx or higher)"   1>&2
1013                        echo "installed in your PATH.  If you have the fasta34 program but have renamed" 1>&2
1014                        echo "(like /usr/local/bin/myfasta), set the FASTA_4_MAFFT environment variable" 1>&2
1015                        echo "to point your fasta34 (like setenv FASTA_4_MAFFT /usr/local/bin/myfasta)." 1>&2
1016                        echo "=========================================================================" 1>&2
1017                        echo "" 1>&2
1018                        exit 1
1019                fi
1020        fi
1021        if [ $distance = "last" -o $distance = "lastmulti" ]; then
1022                if [ ! -x "$prefix/lastal" -o ! -x "$prefix/lastdb" ]; then
1023                        echo ""       1>&2
1024                        echo "== Install LAST ============================================================" 1>&2
1025                        echo "LAST (Kielbasa, Wan, Sato, Horton, Frith 2011 Genome Res. 21:487) is required." 1>&2
1026                        echo "http://last.cbrc.jp/"                                                       1>&2
1027                        echo "http://mafft.cbrc.jp/alignment/software/xxxxxxx.html "                      1>&2
1028                        echo "============================================================================" 1>&2
1029                        echo "" 1>&2
1030                        exit 1
1031                fi
1032        fi
1033        if [ $distance = "lara" -o $distance = "slara" ]; then
1034                if [ ! -x "$prefix/mafft_lara" ]; then
1035                        echo ""       1>&2
1036                        echo "== Install LaRA =========================================================" 1>&2
1037                        echo "This option requires LaRA (Bauer et al. http://www.planet-lisa.net/)."     1>&2
1038                        echo "The executable have to be renamed to 'mafft_lara' and installed into "     1>&2
1039                        echo "the $prefix directory. "                                                   1>&2
1040                        echo "A configuration file of LaRA also have to be given"                        1>&2
1041                        echo "mafft-xinsi --larapair --laraparams parameter_file"                        1>&2
1042                        echo "mafft-xinsi --slarapair --laraparams parameter_file"                       1>&2
1043                        echo "=========================================================================" 1>&2
1044                        echo "" 1>&2
1045                        exit 1
1046                fi
1047                if [ ! -s "$laraparams" ]; then
1048                        echo ""       1>&2
1049                        echo "== Configure LaRA =======================================================" 1>&2
1050                        echo "A configuration file of LaRA have to be given"                             1>&2
1051                        echo "mafft-xinsi --larapair --laraparams parameter_file"                        1>&2
1052                        echo "mafft-xinsi --slarapair --laraparams parameter_file"                       1>&2
1053                        echo "=========================================================================" 1>&2
1054                        echo "" 1>&2
1055                        exit 1
1056                fi
1057        fi
1058        if [ $distance = "foldalignlocal" -o $distance = "foldalignglobal" ]; then
1059        if [ ! -x "$prefix/foldalign210" ]; then
1060                        echo ""       1>&2
1061                        echo "== Install FOLDALIGN ====================================================" 1>&2
1062                        echo "This option requires FOLDALIGN (Havgaard et al. http://foldalign.ku.dk/)." 1>&2
1063                        echo "The executable have to be renamed to 'foldalign210' and installed into "   1>&2
1064                        echo "the $prefix directory. "                                                   1>&2
1065                        echo "=========================================================================" 1>&2
1066                        echo "" 1>&2
1067                        exit 1
1068                fi
1069        fi
1070        if [ $distance = "scarna" -o $mccaskill -eq 1 ]; then
1071                if [ ! -x "$prefix/mxscarnamod" ]; then
1072                        echo ""       1>&2
1073                        echo "== Install MXSCARNA ======================================================" 1>&2
1074                        echo "MXSCARNA (Tabei et al. BMC Bioinformatics 2008 9:33) is required."          1>&2
1075                        echo "Please 'make' at the 'extensions' directory of the MAFFT source package,"   1>&2
1076                        echo "which contains the modified version of MXSCARNA."                           1>&2
1077                        echo "http://mafft.cbrc.jp/alignment/software/source.html "                1>&2
1078                        echo "==========================================================================" 1>&2
1079                        echo "" 1>&2
1080                        exit 1
1081                fi
1082        fi
1083        if [ $distance = "dafs" -o $dafs -eq 1 ]; then
1084                if [ ! -x "$prefix/dafs" ]; then
1085                        echo ""       1>&2
1086                        echo "== Install DAFS===========================================================" 1>&2
1087                        echo "DAFS (Sato et al. Journal 2012 issue:page) is required."                    1>&2
1088                        echo "http://www.ncrna.org/ "                                                     1>&2
1089                        echo "==========================================================================" 1>&2
1090                        echo "" 1>&2
1091                        exit 1
1092                fi
1093        fi
1094        if [ $contrafold -eq 1 ]; then
1095                if [ ! -x "$prefix/contrafold" ]; then
1096                        echo ""       1>&2
1097                        echo "== Install CONTRAfold ===================================================" 1>&2
1098                        echo "This option requires CONTRAfold"                                           1>&2
1099                        echo "(Do et al. http://contra.stanford.edu/contrafold/)."                       1>&2
1100                        echo "The executable 'contrafold' have to be installed into "                    1>&2
1101                        echo "the $prefix directory. "                                                   1>&2
1102                        echo "=========================================================================" 1>&2
1103                        echo "" 1>&2
1104                        exit 1
1105                fi
1106        fi
1107
1108#old
1109#       if [ $treeout -eq 1 ]; then
1110#               parttreeoutopt="-t"
1111#               if [ $cycle -eq 0 ]; then
1112#                       treeoutopt="-t -T"
1113#                       groupsize=1
1114#                       iterate=0
1115#                       if [ $distance = "global" -o $distance = "local" -o $distance = "localgenaf" -o $distance = "globalgenaf" ]; then
1116#                               distance="distonly"
1117#                       fi
1118#               else
1119#                       treeoutopt="-t"
1120#               fi
1121#       else
1122#               parttreeoutopt=" "
1123#               if [ $cycle -eq 0 ]; then
1124#                       treeoutopt="-t -T"
1125#                       iterate=0
1126#                       if [ $distance = "global" -o $distance = "local" -o $distance = "localgenaf" -o $distance = "globalgenaf" ]; then
1127#                               distance="distonly"
1128#                       fi
1129#               else
1130#                       treeoutopt=" "
1131#               fi
1132#       fi
1133
1134#new
1135        if [ $cycle -eq 0 ]; then
1136                treeoutopt="-t -T"
1137                iterate=0
1138#               if [ $distance = "global" -o $distance = "local" -o $distance = "localgenaf" -o $distance = "globalgenaf" ]; then # 2012/04, localpair --> local alignment distance
1139                if [ $distance = "global" ]; then
1140                        distance="distonly"
1141                fi
1142                if [ $treeout -eq 1 ]; then
1143                        parttreeoutopt="-t"
1144                        groupsize=1
1145                else
1146                        parttreeoutopt=" "
1147                fi
1148                if [ $distout -eq 1 ]; then
1149                        distoutopt="-y -T"
1150                fi
1151        else
1152                if [ $treeout -eq 1 ]; then
1153                        parttreeoutopt="-t"
1154                        treeoutopt="-t"
1155                else
1156                        parttreeoutopt=" "
1157                        treeoutopt=" "
1158                fi
1159                if [ $distout -eq 1 ]; then
1160                        distoutopt="-y"
1161                fi
1162        fi
1163#
1164
1165        formatcheck=`grep -c '^[[:blank:]]\+>' $TMPFILE/infile | head -1 `
1166        if [ $formatcheck -gt 0 ]; then
1167                echo "The first character of a description line must be " 1>&2
1168                echo "the greater-than (>) symbol, not a blank."           1>&2
1169                echo "Please check the format around the following line(s):"  1>&2
1170                grep -n '^[[:blank:]]\+>' $TMPFILE/infile  1>&2
1171                exit 1
1172        fi
1173
1174        nseq=`grep -c '^[>|=]' $TMPFILE/infile | head -1 `
1175        if [ $nseq -eq 2 ]; then
1176                cycle=1
1177        fi
1178        if [ $cycle -gt 3 ]; then
1179                cycle=3
1180        fi
1181
1182        if [ $nseq -gt 6000 -a $iterate -gt 1 ]; then
1183                echo "Too many sequences to perform iterative refinement!" 1>&2
1184                echo "Please use a progressive method." 1>&2
1185                exit 1
1186        fi
1187        if [ $distance = "lastmulti" -o $distance = "multi" ]; then
1188                if [ $fragment -eq 0 ]; then
1189                        echo 'Specify --addfragments too' 1>&2
1190                        exit 1
1191                fi
1192        fi
1193
1194        if [ $fragment -ne 0 ]; then
1195                if [ $pairspecified -eq 0 ]; then
1196                        distance="multi"
1197                fi
1198                if [ $distance != "multi" -a $distance != "hybrid" -a $distance != "lastmulti" -a $distance != "local" -a $distance != "last" -a  $distance != "ktuples" -a $distance != "ktuplesmulti" ]; then
1199                        echo 'Specify --multipair, --lastmultipair, --lastpair, --localpair, --6merpair, --6mermultipair or --hybridpair' 1>&2
1200                        exit 1
1201                fi
1202        fi
1203
1204        if [ "$memopt" = " -M -B " -a "$distance" != "ktuples" ]; then
1205                echo "Impossible" 1>&2
1206                exit 1
1207        fi
1208
1209        if [ $distance = "parttree" ]; then
1210                if [ $seed != "x" -o $seedtable != "x" ]; then
1211                        echo "Impossible" 1>&2
1212                        exit 1
1213                fi
1214                if [ $iterate -gt 1 ]; then
1215                        echo "Impossible" 1>&2
1216                        exit 1
1217                fi
1218                if [ $outorder = "aligned" ]; then
1219                        outorder="input"
1220                fi
1221                outorder="input"   # partorder ga kiku
1222                if [ $partdist = "localalign" ]; then
1223                        splitopt=" -L "    # -L -l -> fast
1224                        cycle=1
1225                elif [ $partdist = "fasta" ]; then
1226                        splitopt=" -S "
1227                        cycle=1
1228                else
1229                        splitopt="  "
1230                fi
1231        fi
1232
1233
1234
1235        if [ \( $distance = "ktuples" -o $distance = "ktuplesmulti" \) -a \( $seed = "x" -a $seedtable = "x" \) ]; then
1236                localparam=" "
1237                weighti="0.0"
1238        elif [ \( $distance = "ktuples" -o $distance = "ktuplesmulti" \) -a \( $seed != "x" -o $seedtable != "x" \) ]; then
1239                if [ $cycle -lt 2 ]; then
1240                        cycle=2                # disttbfast ha seed hi-taiou
1241                fi
1242                if [ $iterate -lt 2 ]; then
1243                        echo "############################################################################" 1>&2
1244                        echo "# Warning:" 1>&2
1245                        echo "#   Progressive alignment method is incompatible with the --seed option." 1>&2
1246                        echo "#   Automatically switched to the iterative refinement method." 1>&2
1247                        echo "#   " 1>&2
1248                        echo "# Also consider using the '--add' option, which is compatible with" 1>&2
1249                        echo "#   the progressive method and FASTER than the '--seed' option." 1>&2
1250                        echo "#   Usage is:" 1>&2
1251                        echo "#   % mafft --add newSequences existingAlignment > output" 1>&2
1252                        echo "############################################################################" 1>&2
1253                        iterate=2
1254                fi
1255                localparam="-l "$weighti
1256        elif [ $distance = "parttree" ]; then
1257                localparam=" "
1258                weighti="0.0"
1259                if [ $groupsize -gt -1 ]; then
1260                        cycle=1
1261                fi
1262        else
1263                localparam=" -l "$weighti
1264                if [ $cycle -gt 1 ]; then  # 09/01/08
1265                        cycle=1
1266                fi
1267        fi
1268
1269
1270        if [ $distance = "localgenaf" -o $distance = "globalgenaf" ]; then
1271                aof="0.000"
1272        fi
1273
1274
1275#       if [ $nseq -gt 5000 ]; then
1276#               fft=0
1277#       fi
1278        if [ $forcefft -eq 1 ]; then
1279                param_fft=" -G "
1280                fft=1
1281        elif [ $fft -eq 1 ]; then
1282                param_fft=" -F "
1283        else
1284                param_fft=" "
1285        fi
1286
1287        if [ $seed != "x" -a $seedtable != "x" ]; then
1288                        echo 'Use either one of seedtable and seed.  Not both.' 1>&2
1289                        exit 1
1290        fi
1291#       if [ $seedtable != "x" -a $anysymbol -gt 0 ]; then
1292#                       echo 'The combination of --seedtable and --anysymbol is not supported.' 1>&2
1293#                       exit 1
1294#       fi
1295
1296        if [ $treein -eq 1 ]; then
1297#               if [ $iterate -gt 0 ]; then
1298#                       echo 'Not supported yet.' 1>&2
1299#                       exit 1
1300#               fi
1301                cycle=1
1302        fi
1303
1304        if [ $nadd -gt "0" ]; then
1305                if [ $fragment -eq 1 ]; then
1306                        addarg="$addarg0 $nadd -g -0.01"
1307                else
1308                        addarg="$addarg0 $nadd"
1309                fi
1310                cycle=1
1311                iterate=0
1312#               treealg=" -q "  ## 2012/01/24  ## removed 2012/02/06
1313        fi
1314
1315
1316        if [ $adjustdirection -gt 0 -a $seed != "x" ]; then
1317                        echo '' 1>&2
1318                        echo 'The combination of --adjustdirection(accurately) and --seed is not supported.' 1>&2
1319                        echo '' 1>&2
1320                        exit 1
1321        fi
1322
1323
1324        if [ $mccaskill -eq 1 -o $dafs -eq 1 -o $rnaalifold -eq 1 -o $contrafold -eq 1 ]; then
1325                if [ $distance = "ktuples" ]; then
1326                        echo 'Not supported.' 1>&2
1327                        echo 'Please add --globalpair, --localpair, --scarnapair, --dafspair' 1>&2
1328                        echo '--larapair, --slarapair, --foldalignlocalpair or --foldalignglobalpair' 1>&2
1329                        exit 1
1330                fi
1331        fi
1332
1333
1334# cycle ga atode henkou sareru node koko de strategy no namae wo kimeru.
1335# kokokara
1336        if [ $mccaskill -eq 1 -o $dafs -eq 1 -o $rnaalifold -eq 1 -o $contrafold -eq 1 ]; then
1337                if [ $distance = "scarna" -o $distance = "dafs" -o $distance = "lara" -o $distance = "slara" -o $distance = "foldalignlocal" -o $distance = "foldalignglobal" ]; then
1338                        strategy="X-"
1339                elif [ $distance = "global" -o $distance = "local" -o $distance = "localgenaf" -o "globalgenaf" ]; then
1340                        strategy="Q-"
1341                fi
1342        elif [ $distance = "fasta" -a $sw -eq 0 ]; then
1343                strategy="F-"
1344        elif [ $distance = "fasta" -a $sw -eq 1 ]; then
1345                strategy="H-"
1346        elif [ $distance = "blast" ]; then
1347                strategy="B-"
1348        elif [ $distance = "global" -o $distance = "distonly" ]; then
1349                strategy="G-"
1350        elif [ $distance = "local" ]; then
1351                strategy="L-"
1352        elif [ $distance = "last" ]; then
1353                strategy="Last-"
1354        elif [ $distance = "hybrid" ]; then
1355                strategy="Hybrid-"
1356        elif [ $distance = "multi" ]; then
1357                strategy="Multi-"
1358        elif [ $distance = "lastmulti" ]; then
1359                strategy="LastMulti-"
1360        elif [ $distance = "localgenaf" ]; then
1361                strategy="E-"
1362        elif [ $distance = "globalgenaf" ]; then
1363                strategy="K-"
1364        elif [ $fft -eq 1 ]; then
1365                strategy="FFT-"
1366        else
1367                strategy="NW-"
1368        fi
1369#       if [ `echo "$weighti>0.0" | bc` -gt 0 ]; then
1370        if [ `awk "BEGIN {print($weighti>0.0)}"` -gt 0 ]; then
1371                strategy=$strategy"I"
1372        fi
1373        strategy=$strategy"NS-"
1374        if [ $iterate -gt 0 ]; then
1375                strategy=$strategy"i"
1376        elif [ $distance = "parttree" ]; then
1377                if [ $partdist = "fasta" ]; then
1378                        strategy=$strategy"FastaPartTree-"$cycle
1379                elif [ $partdist = "localalign" ]; then
1380                        strategy=$strategy"DPPartTree-"$cycle
1381                else
1382                        strategy=$strategy"PartTree-"$cycle
1383                fi
1384        elif [ $fragment -eq 1 ]; then
1385                strategy=$strategy"fragment"
1386        elif [ $fragment -eq -1 ]; then
1387                strategy=$strategy"full"
1388        else
1389                strategy=$strategy$cycle
1390        fi
1391
1392        explanation='?'
1393        performance='Not tested.'
1394        if [ $strategy = "F-INS-i" ]; then
1395                explanation='Iterative refinement method (<'$iterate') with LOCAL pairwise alignment information'
1396                performance='Most accurate, but very slow'
1397        elif [ $strategy = "L-INS-i" ]; then
1398                explanation='Iterative refinement method (<'$iterate') with LOCAL pairwise alignment information'
1399                performance='Probably most accurate, very slow'
1400        elif [ $strategy = "E-INS-i" ]; then
1401                explanation='Iterative refinement method (<'$iterate') with LOCAL pairwise alignment with generalized affine gap costs (Altschul 1998)'
1402                performance='Suitable for sequences with long unalignable regions, very slow'
1403        elif [ $strategy = "G-INS-i" ]; then
1404                explanation='Iterative refinement method (<'$iterate') with GLOBAL pairwise alignment information'
1405                performance='Suitable for sequences of similar lengths, very slow'
1406        elif [ $strategy = "X-INS-i" ]; then
1407                explanation='RNA secondary structure information is taken into account.'
1408                performance='For short RNA sequences only, extremely slow'
1409        elif [ $strategy = "F-INS-1" ]; then
1410                explanation='Progressive method incorporating LOCAL pairwise alignment information'
1411        elif [ $strategy = "L-INS-1" ]; then
1412                explanation='Progressive method incorporating LOCAL pairwise alignment information'
1413        elif [ $strategy = "G-INS-1" ]; then
1414                explanation='Progressive method incorporating GLOBAL pairwise alignment information'
1415        elif [ $strategy = "FFT-NS-i" -o $strategy = "NW-NS-i" ]; then
1416                explanation='Iterative refinement method (max. '$iterate' iterations)'
1417                if [ $iterate -gt 2 ]; then
1418                        performance='Accurate but slow'
1419                else
1420                        performance='Standard'
1421                fi
1422        elif [ $strategy = "FFT-NS-2" -o $strategy = "NW-NS-2" ]; then
1423                explanation='Progressive method (guide trees were built '$cycle' times.)'
1424                performance='Fast but rough'
1425        elif [ $strategy = "FFT-NS-1" -o $strategy = "NW-NS-1" ]; then
1426                explanation='Progressive method (rough guide tree was used.)'
1427                performance='Very fast but very rough'
1428        fi
1429
1430        if [ $outputformat = "clustal" -a $outorder = "aligned" ]; then
1431                outputopt=" -c $strategy -r $TMPFILE/order  "
1432        elif [ $outputformat = "clustal" -a $outorder = "input" ]; then
1433                outputopt=" -c $strategy  "
1434        elif [ $outputformat = "phylip" -a $outorder = "aligned" ]; then
1435                outputopt=" -y -r $TMPFILE/order "
1436        elif [ $outputformat = "phylip" -a $outorder = "input" ]; then
1437                outputopt=" -y "
1438        elif [ $outputformat = "pir" -a $outorder = "aligned" ]; then
1439                outputopt=" -f -r $TMPFILE/order "
1440        else
1441                outputopt="null"
1442        fi
1443# kokomade
1444
1445       
1446       
1447        (
1448                cd $TMPFILE;
1449
1450                cat /dev/null > pre
1451
1452                echo "nseq = " $nseq              1>>"$progressfile"
1453                echo "distance = " $distance      1>>"$progressfile"
1454                echo "iterate = " $iterate        1>>"$progressfile"
1455                echo "cycle = " $cycle            1>>"$progressfile"
1456
1457                if [ $anysymbol -eq 1 ]; then
1458                        mv infile orig
1459                        "$prefix/replaceu" -i orig > infile 2>>"$progressfile" || exit 1
1460                fi
1461
1462                if [ $adjustdirection -gt 0 ]; then
1463                        if [ $fragment -ne 0 ]; then
1464                                fragarg="-F"
1465                        else
1466                                fragarg=" "
1467                        fi
1468                        if [ $adjustdirection -eq 1 ]; then
1469                                "$prefix/makedirectionlist" $fragarg -C $numthreads -m -I $nadd -i infile -t 0.01 > _direction
1470                        elif [ $adjustdirection -eq 2 ]; then
1471                                "$prefix/makedirectionlist" $fragarg -C $numthreads -m -I $nadd -i infile -t 0.01 -d > _direction
1472                        fi
1473                        "$prefix/setdirection" -d _direction -i infile > infiled
1474                        mv infiled infile
1475                        if [ $anysymbol -eq 1 ]; then
1476                                "$prefix/setdirection" -d _direction -i orig > origd
1477                                mv origd orig
1478                        fi
1479                fi
1480
1481                if [ $seed != "x" ]; then
1482                        mv infile infile2
1483                        if [ $anysymbol -eq 1 ]; then
1484                                mv orig orig2
1485                                cat /dev/null > orig
1486                        fi
1487                        cat /dev/null > infile
1488                        cat /dev/null > hat3.seed
1489                        seedoffset=0
1490#                       echo "seednseq="$seednseq
1491#                       echo "seedoffset="$seedoffset
1492                        set $seednseq >> "$progressfile"
1493#                       echo $#
1494                        while [ $# -gt 1 ]
1495                        do
1496                                shift
1497#                               echo "num="$#
1498
1499                                if [ $anysymbol -eq 1 ]; then
1500                                        cat seed$# >> orig
1501                                        "$prefix/replaceu" -i seed$# -o $seedoffset > clean 2>>"$progressfile" || exit 1
1502                                        mv clean seed$#
1503                                fi
1504                                "$prefix/multi2hat3s" -t $nseq -o $seedoffset -i seed$# >> infile 2>>"$progressfile" || exit 1
1505                                cat hat3 >> hat3.seed
1506#                               echo "$1"
1507                                seedoffset=`expr $seedoffset + $1`
1508#                               echo "$1"
1509#                               echo "seedoffset="$seedoffset
1510                        done;
1511#                       echo "seedoffset="$seedoffset
1512                        if [ $anysymbol -eq 1 ]; then
1513                                "$prefix/replaceu" -i orig2 -o $seedoffset >> infile 2>>"$progressfile" || exit 1  # yarinaoshi
1514                                cat orig2 >> orig
1515                        else
1516                                cat infile2 >> infile
1517                        fi
1518                elif [ $seedtable != "x" ]; then
1519                        cat _seedtablefile > hat3.seed
1520                else
1521                        cat /dev/null > hat3.seed
1522                fi
1523#               cat hat3.seed
1524
1525                if [ $mergetable != "/dev/null" ]; then
1526                        if [ $nadd -gt "0" ]; then
1527                                echo "Impossible" 1>&2
1528                                exit 1
1529                        fi
1530#                       if [ $seed != "x" -o $seedtable != "x" ]; then
1531#                               echo "This version does not support the combination of merge and seed." 1>&2
1532#                               exit 1
1533#                       fi
1534#                       iterate=0 # 2013/04/16
1535                        mergearg="-H $seedoffset"
1536                fi
1537
1538
1539                if [ $mccaskill -eq 1 ]; then
1540                        "$prefix/mccaskillwrap" -s -C $numthreads -d "$prefix" -i infile > hat4 2>>"$progressfile" || exit 1
1541                elif [ $dafs -eq 1 ]; then
1542                        "$prefix/mccaskillwrap" -G -C $numthreads -d "$prefix" -i infile > hat4 2>>"$progressfile" || exit 1
1543                elif [ $contrafold -eq 1 ]; then
1544                        "$prefix/contrafoldwrap" -d "$prefix" -i infile > hat4 2>>"$progressfile" || exit 1
1545                fi
1546                if [ $distance = "fasta" ]; then
1547                        "$prefix/dndfast7" $swopt < infile > /dev/null  2>>"$progressfile"    || exit 1
1548                        cat hat3.seed hat3 > hatx
1549                        mv hatx hat3
1550                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1551                elif [ $distance = "blast" ]; then
1552                        "$prefix/dndblast" < infile > /dev/null  2>>"$progressfile"      || exit 1
1553                        cat hat3.seed hat3 > hatx
1554                        mv hatx hat3
1555                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1556                elif [ $distance = "foldalignlocal" ]; then
1557                        "$prefix/pairlocalalign" -C $numthreads $seqtype $foldalignopt $model -g $lexp -f $lgop -h $laof -H -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1558                        cat hat3.seed hat3 > hatx
1559                        mv hatx hat3
1560                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1561                elif [ $distance = "foldalignglobal" ]; then
1562                        "$prefix/pairlocalalign" -C $numthreads $seqtype $foldalignopt $model -g $pgexp -f $pggop -h $pgaof -H -o -global -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1563                        cat hat3.seed hat3 > hatx
1564                        mv hatx hat3
1565                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1566                elif [ $distance = "slara" ]; then
1567                        "$prefix/pairlocalalign" -C $numthreads -p $laraparams  $seqtype $model  -f $lgop  -T -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1568                        cat hat3.seed hat3 > hatx
1569                        mv hatx hat3
1570                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1571                elif [ $distance = "lara" ]; then
1572                        "$prefix/pairlocalalign" -C $numthreads -p $laraparams  $seqtype $model  -f $lgop  -B -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1573                        cat hat3.seed hat3 > hatx
1574                        mv hatx hat3
1575                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1576                elif [ $distance = "scarna" ]; then
1577                        "$prefix/pairlocalalign"   -C $numthreads $seqtype $model  -f $pggop  -s -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1578                        cat hat3.seed hat3 > hatx
1579                        mv hatx hat3
1580                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1581                elif [ $distance = "dafs" ]; then
1582                        "$prefix/pairlocalalign"  -C $numthreads $seqtype $model  -f $pggop  -G -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1583                        cat hat3.seed hat3 > hatx
1584                        mv hatx hat3
1585                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1586                elif [ $distance = "global" ]; then
1587                        "$prefix/pairlocalalign"  -C $numthreads $seqtype $model -g $pgexp -f $pggop  -h $pgaof  -A < infile > /dev/null  2>>"$progressfile"      || exit 1
1588                        cat hat3.seed hat3 > hatx
1589                        mv hatx hat3
1590                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1591                elif [ $distance = "local" ]; then
1592                        if [ $fragment -ne 0 ]; then
1593                                "$prefix/pairlocalalign" $localparam $addarg   -C $numthreads $seqtype $model  -g $lexp -f $lgop  -h $laof -L < infile > /dev/null  2>>"$progressfile"      || exit 1
1594                                cat hat3.seed hat3 > hatx
1595                                mv hatx hat3
1596                                "$prefix/addsingle" -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1597                        else
1598                                "$prefix/pairlocalalign" $localparam -C $numthreads $seqtype $model  -g $lexp -f $lgop  -h $laof -L < infile > /dev/null  2>>"$progressfile"      || exit 1
1599#                               addarg wo watasanai
1600                                cat hat3.seed hat3 > hatx
1601                                mv hatx hat3
1602                                "$prefix/tbfast" $mergearg -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1603                        fi
1604                elif [ $distance = "globalgenaf" ]; then
1605                        "$prefix/pairlocalalign" -C $numthreads $seqtype $model  -g $pgexp -f $pggop  -h $pgaof -O $GGOP -E $GEXP -K  < infile > /dev/null 2>>"$progressfile"    || exit 1
1606                        cat hat3.seed hat3 > hatx
1607                        mv hatx hat3
1608                        "$prefix/tbfast" $mergearg $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1609                elif [ $distance = "localgenaf" ]; then
1610                        "$prefix/pairlocalalign" -C $numthreads $seqtype $model -g $lexp -f $lgop  -h $laof -O $LGOP -E $LEXP -N < infile > /dev/null  2>>"$progressfile"      || exit 1
1611                        cat hat3.seed hat3 > hatx
1612                        mv hatx hat3
1613                        "$prefix/tbfast" $mergearg -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1614                elif [ $distance = "last" ]; then
1615                        if [ $fragment -ne 0 ]; then
1616                                "$prefix/pairlocalalign" $addarg   -C $numthreads $seqtype $model -e $last_e -w $last_m -g $lexp -f $lgop  -h $laof -R $last_subopt $last_once -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1617                                cat hat3.seed hat3 > hatx
1618                                mv hatx hat3
1619                                "$prefix/addsingle" -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1620                        else
1621                                "$prefix/pairlocalalign" -C $numthreads $seqtype $model -e $last_e -w $last_m -g $lexp -f $lgop  -h $laof -R $last_subopt $last_once -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1622#                               addarg wo watasanai
1623                                cat hat3.seed hat3 > hatx
1624                                mv hatx hat3
1625                                "$prefix/tbfast" $mergearg -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1626                        fi
1627                elif [ $distance = "lastmulti" ]; then
1628                        "$prefix/dndpre" -M 2 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof < infile > /dev/null 2>>"$progressfile"      || exit 1
1629                        mv hat2 hat2i
1630                        "$prefix/pairlocalalign" $addarg   -C $numthreads $seqtype $model -e $last_e -w $last_m -g $lexp -f $lgop  -h $laof -r $last_subopt $last_once -d "$prefix" < infile > /dev/null  2>>"$progressfile"      || exit 1
1631                        cat hat3.seed hat3 > hatx
1632                        mv hat2 hat2n
1633                        mv hatx hat3
1634                        if [ $fragment -ne 0 ]; then
1635                                "$prefix/addsingle" -d -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1636                        else
1637                                echo "Impossible" 1>&2
1638                                exit 1
1639                        fi
1640                elif [ $distance = "multi" ]; then
1641                        "$prefix/dndpre" -M 2 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof < infile > /dev/null 2>>"$progressfile"      || exit 1
1642                        mv hat2 hat2i
1643                        "$prefix/pairlocalalign" $localparam $addarg   -C $numthreads $seqtype $model  -g $lexp -f $lgop  -h $laof -Y < infile > /dev/null  2>>"$progressfile"      || exit 1
1644                        cat hat3.seed hat3 > hatx
1645                        mv hat2 hat2n
1646                        mv hatx hat3
1647                        if [ $fragment -ne 0 ]; then
1648                                "$prefix/addsingle" -d -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1649                        else
1650                                echo "Impossible" 1>&2
1651                                exit 1
1652                        fi
1653                elif [ $distance = "hybrid" ]; then
1654                        "$prefix/pairlocalalign" $addarg   -C $numthreads $seqtype $model  -g $lexp -f $lgop  -h $laof -Y < infile > /dev/null  2>>"$progressfile"      || exit 1
1655                        cat hat3.seed hat3 > hatx
1656                        mv hatx hat3
1657                        "$prefix/disttbfast" -W $tuplesize -O $outnum $addarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt -T -y $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1658                        if [ $fragment -ne 0 ]; then
1659                                "$prefix/addsingle" -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1660                        else
1661                                "$prefix/tbfast" $mergearg -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1662                        fi
1663                elif [ $distance = "distonly" ]; then
1664                        "$prefix/pairlocalalign"   -C $numthreads $seqtype $model -g $pgexp -f $pggop  -h $pgaof  -t < infile > /dev/null  2>>"$progressfile"      || exit 1
1665                        "$prefix/tbfast" $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1666                elif [ $distance = "parttree" ]; then
1667                        "$prefix/splittbfast" $algopt $splitopt $partorderopt $parttreeoutopt $memopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft -p $partsize -s $groupsize $treealg -i infile   > pre 2>>"$progressfile" || exit 1
1668                        mv hat3.seed hat3
1669                elif [ $distance = "ktuplesmulti" ]; then
1670#                       "$prefix/dndpre" -M 1 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof < infile > /dev/null 2>>"$progressfile"      || exit 1
1671#                       mv hat2 hat2i
1672#                       "$prefix/disttbfast" -W $tuplesize -O $outnum $addarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt -T -y $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1673#                       mv hat2 hat2n
1674                        if [ $fragment -ne 0 ]; then
1675                                "$prefix/addsingle" -d -W $tuplesize -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1676#                               "$prefix/addsingle" -d -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1677                        else
1678                                echo "Impossible" 1>&2
1679                                exit 1
1680                        fi
1681                else
1682                        if [ $fragment -ne 0 ]; then
1683                                "$prefix/addsingle" -W $tuplesize -O $outnum $addarg -C $numthreads $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $localparam   $algopt $treealg $scoreoutarg < infile   > /dev/null 2>>"$progressfile" || exit 1
1684                        else
1685                                "$prefix/disttbfast" $mergearg -W $tuplesize -O $outnum $addarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft $algopt $treealg $scoreoutarg < infile   > pre 2>>"$progressfile" || exit 1
1686                                mv hat3.seed hat3
1687                        fi
1688                fi
1689                while [ $cycle -gt 1 ]
1690                do
1691                        if [ $distance = "parttree" ]; then
1692                                mv pre infile
1693                                "$prefix/splittbfast" -Z $algopt $splitopt $partorderopt $parttreeoutopt $memopt $seqtype $model -f "-"$gop  -h "-"$aof  $param_fft -p $partsize -s $groupsize $treealg -i infile   > pre 2>>"$progressfile" || exit 1
1694                        else
1695                                "$prefix/tbfast" $mergearg -O $outnum -C $numthreads $rnaopt $weightopt $treeoutopt $distoutopt $memopt $seqtype $model  -f "-"$gop  -h "-"$aof $param_fft  $localparam $algopt -J $treealg $scoreoutarg < pre > /dev/null 2>>"$progressfile" || exit 1
1696                        fi
1697                        cycle=`expr $cycle - 1`
1698                done
1699                if [ $iterate -gt 0 ]; then
1700                        if [ $distance = "ktuples" ]; then
1701                            "$prefix/dndpre" -C $numthreads < pre     > /dev/null 2>>"$progressfile" || exit 1
1702                        fi
1703                        "$prefix/dvtditr" $mergearg -C $numthreadsit -t $randomseed $rnaoptit $memopt $scorecalcopt $localparam -z 50 $seqtype $model -f "-"$gop -h "-"$aof  -I $iterate $weightopt $treeinopt $algoptit $treealg -p $parallelizationstrategy  $scoreoutarg < pre     > /dev/null 2>>"$progressfile" || exit 1
1704                fi
1705                if [ $coreout -eq 1 ]; then
1706                        "$prefix/setcore" -w $corewin -i $corethr $coreext < pre > pre2
1707                        mv pre2 pre
1708                elif [ $anysymbol -eq 1 ]; then
1709                        "$prefix/restoreu" -a pre -i orig > restored || exit 1
1710                        mv restored pre
1711                fi
1712
1713
1714
1715
1716                echo '' 1>>"$progressfile"
1717                if [ $mccaskill -eq 1 ]; then
1718                        echo "RNA base pairing probaility was calculated by the McCaskill algorithm (1)" 1>>"$progressfile"
1719                        echo "implemented in Vienna RNA package (2) and MXSCARNA (3), and then" 1>>"$progressfile"
1720                        echo "incorporated in the iterative alignment process (4)." 1>>"$progressfile"
1721                        echo "(1) McCaskill, 1990, Biopolymers 29:1105-1119" 1>>"$progressfile"
1722                        echo "(2) Hofacker et al., 2002, J. Mol. Biol. 319:3724-3732" 1>>"$progressfile"
1723                        echo "(3) Tabei et al., 2008, BMC Bioinformatics 9:33" 1>>"$progressfile"
1724                        echo "(4) Katoh and Toh, 2008, BMC Bioinformatics 9:212" 1>>"$progressfile"
1725                        echo "" 1>>"$progressfile"
1726                elif [ $contrafold -eq 1 ]; then
1727                        echo "RNA base pairing probaility was calculated by the CONTRAfold algorithm (1)" 1>>"$progressfile"
1728                        echo "and then incorporated in the iterative alignment process (4)." 1>>"$progressfile"
1729                        echo "(1) Do et al., 2006, Bioinformatics 22:e90-98" 1>>"$progressfile"
1730                        echo "(2) Katoh and Toh, 2008, BMC Bioinformatics 9:212" 1>>"$progressfile"
1731                        echo "" 1>>"$progressfile"
1732                fi
1733                if [ $distance = "fasta" -o $partdist = "fasta" ]; then
1734                        echo "Pairwise alignments were computed by FASTA" 1>>"$progressfile"
1735                        echo "(Pearson & Lipman, 1988, PNAS 85:2444-2448)" 1>>"$progressfile"
1736                fi
1737                if [ $distance = "blast" ]; then
1738                        echo "Pairwise alignments were computed by BLAST" 1>>"$progressfile"
1739                        echo "(Altschul et al., 1997, NAR 25:3389-3402)" 1>>"$progressfile"
1740                fi
1741                if [ $distance = "last" -o $distance = "lastmulti" ]; then
1742                        echo "Pairwise alignments were computed by LAST" 1>>"$progressfile"
1743                        echo "http://last.cbrc.jp/" 1>>"$progressfile"
1744                        echo "Kielbasa, Wan, Sato, Horton, Frith 2011 Genome Res. 21:487" 1>>"$progressfile"
1745                fi
1746                if [ $distance = "scarna" ]; then
1747                        echo "Pairwise alignments were computed by MXSCARNA" 1>>"$progressfile"
1748                        echo "(Tabei et al., 2008, BMC Bioinformatics 9:33)." 1>>"$progressfile"
1749                fi
1750                if [ $distance = "dafs" ]; then
1751                        echo "Pairwise alignments were computed by DAFS" 1>>"$progressfile"
1752                        echo "(Sato et al., 2012,,,,)." 1>>"$progressfile"
1753                fi
1754                if [ $distance = "lara" -o $distance = "slara" ]; then
1755                        echo "Pairwise alignments were computed by LaRA" 1>>"$progressfile"
1756                        echo "(Bauer et al., 2007, BMC Bioinformatics 8:271)." 1>>"$progressfile"
1757                fi
1758                if [ $distance = "foldalignlocal" ]; then
1759                        echo "Pairwise alignments were computed by FOLDALIGN (local)" 1>>"$progressfile"
1760                        echo "(Havgaard et al., 2007, PLoS Computational Biology 3:e193)." 1>>"$progressfile"
1761                fi
1762                if [ $distance = "foldalignglobal" ]; then
1763                        echo "Pairwise alignments were computed by FOLDALIGN (global)" 1>>"$progressfile"
1764                        echo "(Havgaard et al., 2007, PLoS Computational Biology 3:e193)." 1>>"$progressfile"
1765                fi
1766                printf "\n" 1>>"$progressfile"
1767                echo 'Strategy:' 1>>"$progressfile"
1768                printf ' '$strategy 1>>"$progressfile"
1769                echo ' ('$performance')' 1>>"$progressfile"
1770                echo ' '$explanation 1>>"$progressfile"
1771                echo '' 1>>"$progressfile"
1772                echo "If unsure which option to use, try 'mafft --auto input > output'." 1>>"$progressfile"
1773#               echo "If long gaps are expected, try 'mafft --ep 0.0 --auto input > output'." 1>>"$progressfile"
1774#               echo "If the possibility of long gaps can be excluded, add '--ep 0.123'." 1>>"$progressfile"
1775                echo "For more information, see 'mafft --help', 'mafft --man' and the mafft page." 1>>"$progressfile"
1776                echo '' 1>>"$progressfile"
1777
1778        )
1779
1780
1781        if [ "$outputfile" = "" ]; then
1782                if [ "$outputopt" = "null" ]; then
1783                        cat < $TMPFILE/pre || exit 1
1784                else
1785                        "$prefix/f2cl" -n $namelength $outputopt < $TMPFILE/pre 2>>/dev/null || exit 1
1786                fi
1787        else
1788                if [ "$outputopt" = "null" ]; then
1789                        cat < $TMPFILE/pre > "$outputfile" || exit 1
1790                else
1791                        "$prefix/f2cl" -n $namelength $outputopt < $TMPFILE/pre > "$outputfile" 2>>/dev/null || exit 1
1792                fi
1793        fi
1794
1795        if [ $treeout -eq 1 ]; then
1796                cp $TMPFILE/infile.tree "$infilename.tree"
1797        fi
1798
1799        if [ -s $TMPFILE/GuideTree ]; then # --merge no toki dake
1800                cp $TMPFILE/GuideTree .
1801        fi
1802
1803        if [ $distout -eq 1 ]; then
1804                cp $TMPFILE/hat2 "$infilename.hat2"
1805        fi
1806
1807        exit 0;
1808fi
1809
1810prog="awk"
1811
1812tmpawk=`which nawk 2>/dev/null | awk '{print $1}'`
1813if [ -x "$tmpawk" ]; then
1814        prog="$tmpawk"
1815fi
1816
1817tmpawk=`which gawk 2>/dev/null | awk '{print $1}'`
1818if [ -x "$tmpawk" ]; then
1819        prog="$tmpawk"
1820fi
1821
1822#echo "prog="$prog 1>&2
1823
1824umask 077
1825(
1826$prog '
1827BEGIN {
1828        prefix = ENVIRON["prefix"];
1829        version = ENVIRON["version"];
1830        myself = ENVIRON["myself"];
1831        while( 1 )
1832        {
1833                options = ""
1834                printf( "\n" ) > "/dev/tty";
1835                printf( "---------------------------------------------------------------------\n" )      > "/dev/tty";
1836                printf( "\n" )                                                                           > "/dev/tty";
1837                printf( "   MAFFT %s\n", version )                                                       > "/dev/tty";
1838                printf( "\n" )                                                                           > "/dev/tty";
1839                printf( "        Copyright (c) 2013 Kazutaka Katoh\n" )                                  > "/dev/tty";
1840                printf( "        MBE 30:772-780 (2013), NAR 30:3059-3066 (2002)\n" )                     > "/dev/tty";
1841                printf( "        http://mafft.cbrc.jp/alignment/software/\n" )                           > "/dev/tty";
1842                printf( "---------------------------------------------------------------------\n" )      > "/dev/tty";
1843                printf( "\n" ) > "/dev/tty";
1844       
1845                while( 1 )
1846                {
1847                        printf( "\n" ) > "/dev/tty";
1848                        printf( "Input file? (fasta format)\n@ " ) > "/dev/tty";
1849                        res = getline < "/dev/tty";
1850                        close( "/dev/tty" )
1851                        if( res == 0 || NF == 0 )
1852                                continue;
1853                        infile = sprintf( "%s", $0 );
1854       
1855                        res = getline < infile;
1856                        close( infile );
1857                        if( res == -1 )
1858                        {
1859                                printf( "%s: No such file.\n\n", infile ) > "/dev/tty";
1860                                printf( "Filename extension (eg., .txt) must be typed, if any.\n\n" ) > "/dev/tty";
1861                        }
1862                        else if( res == 0 )
1863                                printf( "%s: Empty.\n", infile ) > "/dev/tty";
1864                        else
1865                        {
1866                                printf( "OK. infile = %s\n\n", infile ) > "/dev/tty";
1867                                break;
1868                        }
1869                }
1870                nseq = 0;
1871       
1872                while( 1 )
1873                {
1874                        printf( "\n" ) > "/dev/tty";
1875                        printf( "Output file?\n" ) > "/dev/tty";
1876                        printf( "@ " ) > "/dev/tty";
1877                        res = getline < "/dev/tty";
1878                        close( "/dev/tty" );
1879                        if( res == 0 || NF == 0 )
1880                                continue;
1881                        else
1882                        {
1883                                outfile = sprintf( "%s", $0 );
1884                                printf( "OK. outfile = %s\n\n", outfile ) > "/dev/tty";
1885                                break;
1886                        }
1887                }
1888       
1889                while( 1 )
1890                {
1891                        outargs = "";
1892                        printf( "\n" ) > "/dev/tty";
1893                        printf( "Output format?\n" ) > "/dev/tty";
1894                        printf( "  1. Clustal format / Sorted\n" ) > "/dev/tty";
1895                        printf( "  2. Clustal format / Input order\n" ) > "/dev/tty";
1896                        printf( "  3. Fasta format   / Sorted\n" ) > "/dev/tty";
1897                        printf( "  4. Fasta format   / Input order\n" ) > "/dev/tty";
1898                        printf( "  5. Phylip format  / Sorted\n" ) > "/dev/tty";
1899                        printf( "  6. Phylip format  / Input order\n" ) > "/dev/tty";
1900                        printf( "@ " ) > "/dev/tty";
1901                        res = getline < "/dev/tty";
1902                        close( "/dev/tty" );
1903#                       printf( "res=%d, NF=%d\n", res, NF );
1904
1905                        resnum = 0 + $1;
1906#                       printf( "resnum=%d\n", resnum );
1907
1908                        if( resnum < 1 || 6 < resnum )
1909                                continue;
1910                        else
1911                        {
1912                                if( resnum == 1 )
1913                                        outargs = "--clustalout --reorder";
1914                                else if( resnum == 2 )
1915                                        outargs = "--clustalout --inputorder";
1916                                else if( resnum == 3 )
1917                                        outargs = "--reorder";
1918                                else if( resnum == 4 )
1919                                        outargs = "--inputorder";
1920                                else if( resnum == 5 )
1921                                        outargs = "--phylipout --reorder";
1922                                else if( resnum == 6 )
1923                                        outargs = "--phylipout --inputorder";
1924                                else
1925                                        continue;
1926                                printf( "OK. arguments = %s\n\n", outargs ) > "/dev/tty";
1927                                break;
1928                        }
1929                }
1930       
1931                while( 1 )
1932                {
1933                        arguments = "";
1934                        printf( "\n" ) > "/dev/tty";
1935                        printf( "Strategy?\n" ) > "/dev/tty";
1936                        printf( "  1. --auto\n" ) > "/dev/tty";
1937                        printf( "  2. FFT-NS-1 (fast)\n" ) > "/dev/tty";
1938                        printf( "  3. FFT-NS-2 (default)\n" ) > "/dev/tty";
1939                        printf( "  4. G-INS-i  (accurate)\n" ) > "/dev/tty";
1940                        printf( "  5. L-INS-i  (accurate)\n" ) > "/dev/tty";
1941                        printf( "  6. E-INS-i  (accurate)\n" ) > "/dev/tty";
1942                        printf( "@ " ) > "/dev/tty";
1943                        res = getline < "/dev/tty";
1944                        close( "/dev/tty" );
1945#                       printf( "res=%d, NF=%d\n", res, NF );
1946
1947                        resnum = 0 + $1;
1948#                       printf( "resnum=%d\n", resnum );
1949
1950                        if( resnum < 1 || 6 < resnum )
1951                                continue;
1952                        else
1953                        {
1954                                if( resnum == 1 )
1955                                        arguments = "--auto";
1956                                else if( resnum == 2 )
1957                                        arguments = "--retree 1";
1958                                else if( resnum == 3 )
1959                                        arguments = "--retree 2";
1960                                else if( resnum == 4 )
1961                                        arguments = "--globalpair --maxiterate 16";
1962                                else if( resnum == 5 )
1963                                        arguments = "--localpair  --maxiterate 16";
1964                                else if( resnum == 6 )
1965                                        arguments = "--genafpair  --maxiterate 16";
1966                                else
1967                                        arguments = sprintf( "%s", $0 );
1968                                printf( "OK. arguments = %s %s\n\n", arguments, outargs ) > "/dev/tty";
1969                                break;
1970                        }
1971                }
1972
1973
1974                while( 1 )
1975                {
1976                        printf( "\n" ) > "/dev/tty";
1977                        printf( "Additional arguments? (--ep #, --op #, --kappa #, etc)\n" ) > "/dev/tty";
1978                        printf( "@ " ) > "/dev/tty";
1979                        res = getline < "/dev/tty";
1980                        close( "/dev/tty" );
1981                        if( res == 0 || NF == 0 )
1982                        {
1983                                break;
1984                        }
1985                        else
1986                        {
1987                                addargs = sprintf( "%s", $0 );
1988                                printf( "OK. arguments = %s %s %s\n\n", addargs, arguments, outargs ) > "/dev/tty";
1989                                break;
1990                        }
1991                }
1992
1993                arguments = sprintf( "%s %s %s", addargs, arguments, outargs );
1994
1995                print ""
1996                command = sprintf( "\"%s\" %s \"%s\" > \"%s\"", myself, arguments, infile, outfile );
1997                gsub( /\\/, "/", command );
1998
1999
2000                printf( "command=\n%s\n", command ) > "/dev/tty";
2001       
2002       
2003                while( 1 )
2004                {
2005                        go = 0;
2006                        printf( "OK?\n" ) > "/dev/tty";
2007                        printf( "@ [Y] " ) > "/dev/tty";
2008                        res = getline < "/dev/tty";
2009                        close( "/dev/tty" );
2010                        if( res == 0 )
2011                                continue;
2012                        else if( NF == 0 || $0 ~ /^[Yy]/ )
2013                        {
2014                                go=1;
2015                                break;
2016                        }
2017                        else
2018                                break;
2019                }
2020                if( go ) break;
2021                printf( "\n" ) > "/dev/tty";
2022                printf( "\n" ) > "/dev/tty";
2023        }
2024        system( command );
2025        command = sprintf( "less \"%s\"", outfile );
2026        system( command );
2027        printf( "Press Enter to exit." ) > "/dev/tty";
2028        res = getline < "/dev/tty";
2029}
2030'
2031)
2032exit 0;
Note: See TracBrowser for help on using the repository browser.