#! /bin/bash er=0; myself=`dirname "$0"`/`basename "$0"`; export myself version="v7.520 (2023/Mar/22)"; export version LANG=C; export LANG os=`uname` progname=`basename "$0"` windows="no" if [ `echo $os | grep -i cygwin` ]; then os="cygwin" windows="yes" elif [ `echo $os | grep -i msys` ]; then os="msys" windows="yes" elif [ `echo $os | grep -i mingw` ]; then os="mingw" windows="yes" elif [ `echo $os | grep -i darwin` ]; then os="darwin" elif [ `echo $os | grep -i sunos` ]; then os="sunos" elif [ `echo $os | grep -i linux` ]; then os="linux" else os="unix" fi #export os # iranai if [ "$windows" = "yes" ]; then echo "" 1>&2 echo "It may take a while before the calculation starts" 1>&2 echo "if being scanned by anti-virus software." 1>&2 echo "Also consider using a faster version for Windows 10:" 1>&2 echo "https://mafft.cbrc.jp/alignment/software/wsl.html" 1>&2 fi if [ "$MAFFT_BINARIES" ]; then prefix="$MAFFT_BINARIES" else prefix=/usr/libexec/mafft fi export prefix # iranai if [ $# -gt 0 ]; then if [ "$1" = "--man" ]; then man "$prefix/mafft.1" exit 0; fi fi if [ -x "$prefix/version" ]; then # versionbin=`"$prefix/version" | awk '{print $1}'` # for cygwin versionbin=`"$prefix/version"` # for cygwin 2.7 else versionbin="0.000" fi if ! expr "$version" : v"$versionbin" > /dev/null ; then echo "" 1>&2 echo "v$versionbin != $version" 1>&2 echo "" 1>&2 echo "There is a problem in the configuration of your shell." 1>&2 echo "Check the MAFFT_BINARIES environmental variable by" 1>&2 echo "$ echo \$MAFFT_BINARIES" 1>&2 echo "" 1>&2 echo "This variable must be *unset*, unless you have installed MAFFT" 1>&2 echo "with a special configuration. To unset this variable, type" 1>&2 echo "$ unset MAFFT_BINARIES" 1>&2 echo "or" 1>&2 echo "% unsetenv MAFFT_BINARIES" 1>&2 echo "Then retry" 1>&2 echo "$ mafft input > output" 1>&2 echo "" 1>&2 echo "To keep this change permanently, edit setting files" 1>&2 echo "(.bash_profile, .profile, .cshrc, etc) in your home directory" 1>&2 echo "to delete the MAFFT_BINARIES line." 1>&2 echo "On MacOSX, also edit or remove the .MacOSX/environment.plist file" 1>&2 echo "and then re-login (MacOSX 10.6) or reboot (MacOSX 10.7)." 1>&2 echo "" 1>&2 echo "Please send a problem report to katoh@ifrec.osaka-u.ac.jp," 1>&2 echo "if this problem remains." 1>&2 echo "" 1>&2 exit 1 er=1 fi defaultiterate=0 defaultcycle=2 defaultgop="1.53" #defaultaof="0.123" defaultaof="0.000" defaultlaof="0.100" defaultlgop="-2.00" defaultfft=1 defaultrough=0 defaultdistance="ktuples" #defaultdistance="local" defaultweighti="2.7" defaultweightr="0.0" defaultweightm="1.0" defaultdafs=0 defaultmccaskill=0 defaultcontrafold=0 defaultalgopt=" " defaultalgoptit=" " defaultsbstmodel=" -b 62 " defaultfmodel=" " defaultkappa=" " if [ $progname = "xinsi" -o $progname = "mafft-xinsi" ]; then defaultfft=1 defaultcycle=1 defaultiterate=1000 defaultdistance="scarna" defaultweighti="3.2" defaultweightr="8.0" defaultweightm="2.0" defaultmccaskill=1 defaultcontrafold=0 defaultdafs=0 defaultalgopt=" -A " defaultalgoptit=" -AB " ## chui defaultaof="0.0" defaultsbstmodel=" -b 62 " defaultkappa=" " defaultfmodel=" " # 2013/06/18 elif [ $progname = "qinsi" -o $progname = "mafft-qinsi" ]; then defaultfft=1 defaultcycle=1 defaultiterate=1000 defaultdistance="global" defaultweighti="3.2" defaultweightr="8.0" defaultweightm="2.0" defaultmccaskill=1 defaultcontrafold=0 defaultdafs=0 defaultalgopt=" -A " defaultalgoptit=" -AB " ## chui defaultaof="0.0" defaultsbstmodel=" -b 62 " defaultkappa=" " defaultfmodel=" " # 2013/06/18 elif [ $progname = "linsi" -o $progname = "mafft-linsi" ]; then defaultfft=0 defaultcycle=1 defaultiterate=1000 defaultdistance="local" elif [ $progname = "ginsi" -o $progname = "mafft-ginsi" ]; then defaultfft=1 defaultcycle=1 defaultiterate=1000 defaultdistance="global" elif [ $progname = "einsi" -o $progname = "mafft-einsi" ]; then defaultfft=0 defaultcycle=1 defaultiterate=1000 defaultdistance="localgenaf" elif [ $progname = "fftns" -o $progname = "mafft-fftns" ]; then defaultfft=1 defaultcycle=2 defaultdistance="ktuples" elif [ $progname = "fftnsi" -o $progname = "mafft-fftnsi" ]; then defaultfft=1 defaultcycle=2 defaultiterate=2 defaultdistance="ktuples" elif [ $progname = "nwns" -o $progname = "mafft-nwns" ]; then defaultfft=0 defaultcycle=2 defaultdistance="ktuples" elif [ $progname = "nwnsi" -o $progname = "mafft-nwnsi" ]; then defaultfft=0 defaultcycle=2 defaultiterate=2 defaultdistance="ktuples" fi outputfile="" namelength=-1 linelength=60 # Will change to -1 in the future anysymbol=0 parallelizationstrategy="BAATARI2" kappa=$defaultkappa sbstmodel=$defaultsbstmodel fmodel=$defaultfmodel nmodel=" " gexp=0 gop=$defaultgop gopdist=$defaultgop aof=$defaultaof cycle=$defaultcycle iterate=$defaultiterate fft=$defaultfft rough=$defaultrough distance=$defaultdistance forcefft=0 memopt=" " weightopt=" " GGOP="-6.00" LGOP="-6.00" LEXP="-0.000" GEXP="-0.000" lgop=$defaultlgop lexp="-0.100" laof=$defaultlaof pggop="-2.00" pgexp="-0.10" pgaof="0.10" rgop="-1.530" rgep="-0.000" seqtype=" " weighti=$defaultweighti weightr=$defaultweightr weightm=$defaultweightm rnaalifold=0 dafs=$defaultdafs mccaskill=$defaultmccaskill contrafold=$defaultcontrafold progressfile="/dev/stderr" anchorfile="/dev/null" anchoropt="" #maxanchorseparation=1000 maxanchorseparation=-1 # 2023/Jan/11 debug=0 sw=0 algopt=$defaultalgopt algoptit=$defaultalgoptit #algspecified=0 pairspecified=0 scorecalcopt=" " coreout=0 corethr="0.5" corewin="100" coreext=" " outputformat="pir" f2clext="-N" outorder="input" seed="x" seedtable="x" auto=0 groupsize=-1 partsize=50 partdist="ktuples" partorderopt=" -x " treeout=0 nodeout=0 distout=0 treein=0 topin=0 treeinopt=" " seedfiles="/dev/null" seedtablefile="/dev/null" pdblist="/dev/null" ownlist="/dev/null" strdir="$PWD" scorematrix="/dev/null" textmatrix="/dev/null" treeinfile="/dev/null" codonposfile="/dev/null" codonscorefile="/dev/null" rnascoremtx=" " laraparams="/dev/null" foldalignopt=" " treealg=" -X 0.1 " sueff="1.0" maxambiguous="1.0" dofilter=0 scoreoutarg=" " numthreads=0 numthreadsit=-1 numthreadstb=-1 randomseed=0 addfile="/dev/null" addarg0=" " addarg=" " addsinglearg=" " add2ndhalfarg=" " mapoutfile="/dev/null" fragment=0 legacygapopt=" " mergetable="/dev/null" mergearg=" " seedoffset=0 outnum=" " last_e=5000 last_m=3 last_subopt=" " last_once=" " adjustdirection=0 tuplesize=6 termgapopt=" -O " #termgapopt=" " # gap/gap ga kakenai node similarityoffset="0.0" unalignlevel="0.0" unalignspecified=0 spfactor="100.0" shiftpenaltyspecified=0 opdistspecified=0 allowshift=0 enrich=0 # ato de kezuru enrichseq=0 # ato de kezuru enrichstr=0 # ato de kezuru seektarget="" # ato de kezuru dashserver="https://sysimm.org/dash/REST1.0/" newdash=0 newdash_originalsequenceonly=0 exclude_ho=0 fixthreshold="0.0" bunkatsuopt=" " npickup=0 minimumweight="0.00001" # 2016/Mar usenaivepairscore=" " oldgenafparam=0 sprigorous=0 treeext="none" initialramusage="20GB" focusarg=" " lhlimit=" " mpiscript="/dev/null" if [ $# -gt 0 ]; then if [ "$1" = "--version" ]; then echo "$version" 1>&2 exit 0; elif [ "$1" = "--help" -o "$1" = "--info" ]; then shift er=1; fi while [ $# -gt 1 ]; do if [ "$1" = "--auto" ]; then auto=1 elif [ "$1" = "--anysymbol" ]; then anysymbol=1 elif [ "$1" = "--preservecase" ]; then anysymbol=1 elif [ "$1" = "--clustalout" ]; then outputformat="clustal" elif [ "$1" = "--phylipout" ]; then outputformat="phylip" elif [ "$1" = "--reorder" ]; then outorder="aligned" partorderopt=" " elif [ "$1" = "--inputorder" ]; then outorder="input" partorderopt=" -x " elif [ "$1" = "--unweight" ]; then weightopt=" -u " elif [ "$1" = "--termgappenalty" ]; then termgapopt=" " elif [ "$1" = "--alga" ]; then algopt=" " algoptit=" " # algspecified=1 elif [ "$1" = "--algq" ]; then algopt=" -Q " algoptit=" " echo "" 1>&2 echo "--algq is no longer supported!" 1>&2 echo "" 1>&2 exit 1; # algspecified=1 elif [ "$1" = "--linelength" ]; then shift linelength=`expr "$1" - 0` if [ $linelength -eq 0 ]; then echo "Line length = 0 ?" 1>&2 exit fi elif [ "$1" = "--namelength" ]; then shift namelength=`expr "$1" - 0` if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify the length of name in clustal format output!" 1>&2 exit fi elif [ "$1" = "--groupsize" ]; then shift groupsize=`expr "$1" - 0` if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify groupsize!" 1>&2 exit fi elif [ "$1" = "--partsize" ]; then shift partsize=`expr "$1" - 0` if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify partsize!" 1>&2 exit fi elif [ "$1" = "--parttree" ]; then distance="parttree" partdist="ktuples" elif [ "$1" = "--dpparttree" ]; then distance="parttree" partdist="localalign" elif [ "$1" = "--fastaparttree" ]; then distance="parttree" partdist="fasta" elif [ "$1" = "--treeout" ]; then treeout=1 elif [ "$1" = "--nodeout" ]; then nodeout=1 treeout=1 elif [ "$1" = "--distout" ]; then distout=1 elif [ "$1" = "--fastswpair" ]; then distance="fasta" pairspecified=1 sw=1 elif [ "$1" = "--fastapair" ]; then distance="fasta" pairspecified=1 sw=0 elif [ "$1" = "--averagelinkage" ]; then treealg=" -X 1.0 " sueff="1.0" elif [ "$1" = "--minimumlinkage" ]; then treealg=" -X 0.0 " sueff="0.0" elif [ "$1" = "--mixedlinkage" ]; then shift sueff="$1" treealg=" -X $1" elif [ "$1" = "--maxambiguous" ]; then shift maxambiguous="$1" dofilter=1 elif [ "$1" = "--codonpos" ]; then shift codonposfile="$1" if [ ! -e "$codonposfile" ]; then echo "Cannot open $codonposfile" 1>&2 echo "" 1>&2 exit fi codonposopt=" -R " elif [ "$1" = "--codonscore" ]; then shift codonscorefile="$1" if [ ! -e "$codonscorefile" ]; then echo "Cannot open $codonscorefile" 1>&2 echo "" 1>&2 exit fi codonscoreopt=" -S " elif [ "$1" = "--noscore" ]; then scorecalcopt=" -Z " elif [ "$1" = "--6mermultipair" ]; then distance="ktuplesmulti" tuplesize=6 pairspecified=1 elif [ "$1" = "--10mermultipair" ]; then distance="ktuplesmulti" tuplesize=10 pairspecified=1 elif [ "$1" = "--6merpair" ]; then distance="ktuples" tuplesize=6 pairspecified=1 elif [ "$1" = "--10merpair" ]; then distance="ktuples" tuplesize=10 pairspecified=1 elif [ "$1" = "--blastpair" ]; then distance="blast" pairspecified=1 elif [ "$1" = "--lastmultipair" ]; then distance="lastmulti" pairspecified=1 elif [ "$1" = "--globalpair" ]; then distance="global" pairspecified=1 elif [ "$1" = "--shortlongpair" ]; then distance="local" usenaivepairscore="-Z" laof=0.0 # addfull no tokini tsukawareru. lexp=0.0 # addfull no tokini tsukawareru. pgaof=0.0 # local nara iranai pgexp=0.0 # local nara iranai pairspecified=1 elif [ "$1" = "--longshortpair" ]; then distance="local" usenaivepairscore="-Z" laof=0.0 # addfull no tokini tsukawareru. lexp=0.0 # addfull no tokini tsukawareru. pgaof=0.0 # local nara iranai pgexp=0.0 # local nara iranai pairspecified=1 elif [ "$1" = "--localpair" ]; then distance="local" pairspecified=1 elif [ "$1" = "--lastpair" ]; then distance="last" pairspecified=1 elif [ "$1" = "--multipair" ]; then distance="multi" pairspecified=1 elif [ "$1" = "--hybridpair" ]; then distance="hybrid" pairspecified=1 elif [ "$1" = "--scarnapair" ]; then distance="scarna" pairspecified=1 elif [ "$1" = "--dafspair" ]; then distance="dafs" pairspecified=1 elif [ "$1" = "--larapair" ]; then distance="lara" pairspecified=1 elif [ "$1" = "--slarapair" ]; then distance="slara" pairspecified=1 elif [ "$1" = "--foldalignpair" ]; then distance="foldalignlocal" pairspecified=1 elif [ "$1" = "--foldalignlocalpair" ]; then distance="foldalignlocal" pairspecified=1 elif [ "$1" = "--foldalignglobalpair" ]; then distance="foldalignglobal" pairspecified=1 elif [ "$1" = "--globalgenafpair" ]; then distance="globalgenaf" pairspecified=1 echo "" 1>&2 echo "--globalgenaf is no longer supported!" 1>&2 echo "" 1>&2 exit 1; elif [ "$1" = "--localgenafpair" ]; then distance="localgenaf" pairspecified=1 elif [ "$1" = "--genafpair" ]; then distance="localgenaf" pairspecified=1 elif [ "$1" = "--oldgenafpair" ]; then distance="localgenaf" pairspecified=1 oldgenafparam=1 elif [ "$1" = "--memsave" ]; then memopt=" -M -B " # -B (bunkatsunashi no riyu ga omoidasenai) elif [ "$1" = "--nomemsave" ]; then memopt=" -N " elif [ "$1" = "--nuc" ]; then seqtype="-D" # Deleted space, 2018/Dec elif [ "$1" = "--amino" ]; then seqtype="-P" # Deleted space, 2018/Dec elif [ "$1" = "--fft" ]; then fft=1 forcefft=1 elif [ "$1" = "--nofft" ]; then fft=0 elif [ "$1" = "--quiet" ]; then # if [ $os = "msys" ]; then # progressfile="nul" # else progressfile="/dev/null" # fi elif [ "$1" = "--debug" ]; then debug=1 elif [ "$1" = "--coreext" ]; then coreext=" -c " elif [ "$1" = "--core" ]; then coreout=1 elif [ "$1" = "--adjustdirection" ]; then adjustdirection=1 elif [ "$1" = "--adjustdirectionaccurately" ]; then adjustdirection=2 elif [ "$1" = "--oneiteration" ]; then oneiterationopt=" -r " elif [ "$1" = "--progress" ]; then shift progressfile="$1" if ! ( expr "$progressfile" : "\/" > /dev/null || expr "$progressfile" : "[A-Za-z]\:" > /dev/null ) ; then echo "Specify a progress file name with the absolute path!" 1>&2 exit fi elif [ "$1" = "--out" ]; then shift outputfile="$1" elif [ "$1" = "--skipanchorsremoterthan" ]; then shift if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify maximum gap length between anchors." 1>&2 exit fi maxanchorseparation=`expr "$1" - 0` elif [ "$1" = "--anchors" ]; then shift anchorfile="$1" anchoropt=" -l " # memopt=" -M -B " # ato de kentou # memopt=" -N " # no memsave if [ ! -e "$anchorfile" ]; then echo "Cannot open $anchorfile" 1>&2 echo "" 1>&2 exit fi elif [ "$1" = "--thread" ]; then shift if ! expr "$1" : "[0-9\-]" > /dev/null ; then echo "Specify the number of threads. Or, use --thread -1" 1>&2 exit fi numthreads=`expr "$1" - 0` elif [ "$1" = "--threadtb" ]; then shift if ! expr "$1" : "[0-9\-]" > /dev/null ; then echo "Check the argument after --threadtb, the number of threads for the progressive step." 1>&2 exit fi numthreadstb=`expr "$1" - 0` elif [ "$1" = "--threadit" ]; then shift if ! expr "$1" : "[0-9\-]" > /dev/null ; then echo "Check the argument after --threadit, the number of threads for the iterative step." 1>&2 exit fi numthreadsit=`expr "$1" - 0` elif [ "$1" = "--last_subopt" ]; then last_subopt="-S" elif [ "$1" = "--last_once" ]; then last_once="-U" elif [ "$1" = "--last_m" ]; then shift last_m=`expr "$1" - 0` elif [ "$1" = "--last_e" ]; then shift last_e=`expr "$1" - 0` elif [ "$1" = "--randomseed" ]; then shift randomseed=`expr "$1" - 0` elif [ "$1" = "--bestfirst" ]; then parallelizationstrategy="BESTFIRST" elif [ "$1" = "--adhoc0" ]; then parallelizationstrategy="BAATARI0" elif [ "$1" = "--adhoc1" ]; then parallelizationstrategy="BAATARI1" elif [ "$1" = "--adhoc2" ]; then parallelizationstrategy="BAATARI2" elif [ "$1" = "--simplehillclimbing" ]; then parallelizationstrategy="BAATARI2" elif [ "$1" = "--scoreout" ]; then scoreoutarg="-S -B" elif [ "$1" = "--outnum" ]; then outnum="-n" elif [ "$1" = "--leavegappyregion" ]; then legacygapopt="-L" elif [ "$1" = "--legacygappenalty" ]; then legacygapopt="-L" elif [ "$1" = "--merge" ]; then shift mergetable="$1" if [ ! -e "$mergetable" ]; then echo "Cannot open $mergetable" 1>&2 echo "" 1>&2 exit fi elif [ "$1" = "--addprofile" ]; then shift addarg0="-I" addfile="$1" elif [ "$1" = "--add" ]; then shift addarg0="-K -I" addfile="$1" elif [ "$1" = "--addfragments" ]; then shift addarg0="-K -I" addfile="$1" fragment=1 elif [ "$1" = "--addfull" ]; then shift addarg0="-K -I" addfile="$1" fragment=-1 elif [ "$1" = "--addlong" ]; then shift addarg0="-K -I" addfile="$1" fragment=-2 elif [ "$1" = "--addtotop" ]; then shift addarg0="-K -I" addfile="$1" fragment=-3 elif [ "$1" = "--addtoroot" ]; then shift addarg0="-K -I" addfile="$1" fragment=-4 elif [ "$1" = "--smoothing" ]; then add2ndhalfarg=$add2ndhalfarg" -p " elif [ "$1" = "--keeplength" ]; then add2ndhalfarg=$add2ndhalfarg" -Y " elif [ "$1" = "--compactmapout" ]; then add2ndhalfarg=$add2ndhalfarg" -z -Y " elif [ "$1" = "--compactmapoutfile" ]; then shift add2ndhalfarg=$add2ndhalfarg" -z -Y " mapoutfile="$1" elif [ "$1" = "--mapout" ]; then add2ndhalfarg=$add2ndhalfarg" -Z -Y " elif [ "$1" = "--mapoutfile" ]; then shift add2ndhalfarg=$add2ndhalfarg" -Z -Y " mapoutfile="$1" elif [ "$1" = "--maxiterate" ]; then shift iterate=`expr "$1" - 0` if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify the number of iterations!" 1>&2 exit fi elif [ "$1" = "--retree" ]; then shift cycle=`expr "$1" - 0` if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify the number of tree rebuilding!" 1>&2 exit fi elif [ "$1" = "--aamatrix" ]; then shift f2clext="-N" sbstmodel=" -b -1 " scorematrix="$1" if [ ! -e "$scorematrix" ]; then echo "Cannot open $scorematrix" 1>&2 echo "" 1>&2 exit fi elif [ "$1" = "--textmatrix" ]; then shift f2clext="-E" seqtype="-P" fft=0 # sbstmodel=" -b -2 -a " sbstmodel=" -b -2 " # 2022/Jul, hauretsu no kawari ni scoremtx wo miru scorematrix="$1" if [ ! -e "$scorematrix" ]; then echo "Cannot open $scorematrix" 1>&2 echo "" 1>&2 exit fi elif [ "$1" = "--text" ]; then f2clext="-E" seqtype="-P" fft=0 sbstmodel=" -b -2 -a " elif [ "$1" = "--treein" ]; then shift treeinopt=" -U " treein=1 treeinfile="$1" if [ ! -e "$treeinfile" ]; then echo "Cannot open $treeinfile" 1>&2 echo "" 1>&2 exit fi elif [ "$1" = "--pileup" ]; then # treeinopt=" -U " # treein=1 treeext="pileup" elif [ "$1" = "--randomchain" ]; then # treeinopt=" -U " # treein=1 # pileuporshuffle="s" treeext="randomchain" elif [ "$1" = "--topin" ]; then shift treeinopt=" -V " treein=1 treeinfile="$1" echo "The --topin option has been disabled." 1>&2 echo "There was a bug in version < 6.530." 1>&2 echo "This bug has not yet been fixed." 1>&2 exit 1 elif [ "$1" = "--mpi" ]; then mpiscript="$prefix/mpiscript" elif [ "$1" = "--large" ]; then treeext="memsavetree" elif [ "$1" = "--memsavetree" ]; then treeext="memsavetree" elif [ "$1" = "--memsavetreex" ]; then treeext="memsavetreex" elif [ "$1" = "--stepadd" ]; then treeext="stepadd" elif [ "$1" = "--youngestlinkage" ]; then treeext="youngestlinkage" elif [ "$1" = "--kappa" ]; then shift kappa=" -k $1 " if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify kappa value!" 1>&2 exit fi elif [ "$1" = "--fmodel" ]; then fmodel=" -a " elif [ "$1" = "--nwildcard" ]; then nmodel=" -: " elif [ "$1" = "--nzero" ]; then nmodel=" " elif [ "$1" = "--jtt" ]; then shift f2clext="-N" sbstmodel=" -j $1" # if ! expr "$1" : "[0-9]" > /dev/null ; then # echo "Specify pam value!" 1>&2 # exit # fi elif [ "$1" = "--kimura" ]; then shift f2clext="-N" sbstmodel=" -j $1" # if ! expr "$1" : "[0-9]" > /dev/null ; then # echo "Specify pam value!" 1>&2 # exit # fi elif [ "$1" = "--tm" ]; then shift f2clext="-N" sbstmodel=" -m $1" # if ! expr "$1" : "[0-9]" > /dev/null ; then # echo "Specify pam value!" 1>&2 # exit # fi elif [ "$1" = "--bl" ]; then shift f2clext="-N" sbstmodel=" -b $1" if ! expr "$1" : "[0-9]" > /dev/null ; then echo "blosum $1?" 1>&2 exit fi elif [ "$1" = "--weighti" ]; then shift weighti="$1" if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify weighti value!" 1>&2 exit fi elif [ "$1" = "--weightr" ]; then shift weightr="$1" if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify weightr value!" 1>&2 exit fi elif [ "$1" = "--weightm" ]; then shift weightm="$1" if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify weightm value!" 1>&2 exit fi elif [ "$1" = "--rnaalifold" ]; then rnaalifold=1 elif [ "$1" = "--mccaskill" ]; then mccaskill=1 contrafold=0 dafs=0 elif [ "$1" = "--contrafold" ]; then mccaskill=0 contrafold=1 dafs=0 elif [ "$1" = "--dafs" ]; then mccaskill=0 contrafold=0 dafs=1 elif [ "$1" = "--ribosum" ]; then rnascoremtx=" -s " elif [ "$1" = "--op" ]; then shift gop="$1" if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify op!" 1>&2 exit fi elif [ "$1" = "--opdist" ]; then shift gopdist="$1" if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify opdist!" 1>&2 exit fi opdistspecified=1 elif [ "$1" = "--allowshift" ]; then allowshift=1 elif [ "$1" = "--shiftpenalty" ]; then shift spfactor="$1" if ! expr "$1" : "[0-9]" > /dev/null ; then echo "Specify sf!" 1>&2 exit fi shiftpenaltyspecified=1 elif [ "$1" = "--exp" ]; then shift # gexp="$1" tmpval="$1" gexp=`awk "BEGIN{ print -1.0 * \"$tmpval\"}"` if ! expr "$gexp" : "[0-9\-]" > /dev/null ; then printf "\nSpecify a number for exp, like --exp 0.1\n" 1>&2 printf "'$1' cannot be interpreted as a number..\n\n" 1>&2 exit fi elif [ "$1" = "--ep" ]; then shift # aof="$1" tmpval="$1" aof=`awk "BEGIN{ print -1.0 * \"$tmpval\"}"` if ! expr "$aof" : "[0-9\-]" > /dev/null ; then printf "\nSpecify a number for ep, like --ep 0.1\n" 1>&2 printf "'$1' cannot be interpreted as a number..\n\n" 1>&2 exit fi elif [ "$1" = "--rop" ]; then shift rgop="$1" # Atode check elif [ "$1" = "--rep" ]; then shift rgep="$1" elif [ "$1" = "--lop" ]; then shift lgop="$1" elif [ "$1" = "--LOP" ]; then shift LGOP="$1" elif [ "$1" = "--lep" ]; then shift laof="$1" elif [ "$1" = "--lexp" ]; then shift lexp="$1" elif [ "$1" = "--LEXP" ]; then shift LEXP="$1" elif [ "$1" = "--GEXP" ]; then shift GEXP="$1" elif [ "$1" = "--GOP" ]; then shift GGOP="$1" elif [ "$1" = "--gop" ]; then shift pggop="$1" elif [ "$1" = "--gep" ]; then shift pgaof="$1" elif [ "$1" = "--gexp" ]; then shift pgexp="$1" elif [ "$1" = "--laraparams" ]; then shift laraparams="$1" elif [ "$1" = "--corethr" ]; then shift corethr="$1" elif [ "$1" = "--corewin" ]; then shift corewin="$1" elif [ "$1" = "--strdir" ]; then shift strdir="$1" elif [ "$1" = "--pdbidlist" ]; then echo "--pdbidlist is temporarily unavailable, 2018/Dec." 1>&2 echo "" 1>&2 exit shift pdblist="$1" if [ ! -e "$pdblist" ]; then echo "Cannot open $pdblist" 1>&2 echo "" 1>&2 exit fi elif [ "$1" = "--pdbfilelist" ]; then echo "--pdbfilelist is temporarily unavailable, 2018/Dec." 1>&2 echo "" 1>&2 exit shift ownlist="$1" if [ ! -e "$ownlist" ]; then echo "Cannot open $ownlist" 1>&2 echo "" 1>&2 exit fi # elif [ "$1" = "--enrich" ]; then # enrich=1 # enrichseq=1 # enrichstr=1 # seektarget="" # elif [ "$1" = "--enrichseq" ]; then # enrich=1 # enrichseq=1 # enrichstr=0 # seektarget="-seq" # elif [ "$1" = "--enrichstr" ]; then # enrich=1 # enrichseq=0 # enrichstr=1 # seektarget="-str" elif [ "$1" = "--dash" ]; then newdash=1 if [ "$distance" != "local" -a "$distance" != "localgenaf" ]; then # 2021/Oct distance="global" fi if [ "$iterate" -eq 0 ]; then # 2021/Oct iterate=3 fi elif [ "$1" = "--dashserver" ]; then shift dashserver="$1" elif [ "$1" = "--originalseqonly" ]; then newdash_originalsequenceonly=1 elif [ "$1" = "--excludehomologs" ]; then # works with --dash only exclude_ho=1 elif [ "$1" = "--seedtable" ]; then shift seedtable="y" seedtablefile="$1" elif [ "$1" = "--seed" ]; then shift seed="m" seedfiles="$seedfiles $1" elif [ "$1" = "--minimumweight" ]; then shift minimumweight="$1" elif [ "$1" = "--similaritylevel" ]; then shift similarityoffset="$1" elif [ "$1" = "--unalignlevel" ]; then shift unalignlevel="$1" unalignspecified=1 elif [ "$1" = "--skipiterate" ]; then shift fixthreshold="$1" elif [ "$1" = "--bunkatsunashi" ]; then bunkatsuopt=" -B " elif [ "$1" = "--sp" ]; then sprigorous=1 elif [ "$1" = "--focus" ]; then focusarg=" -= " elif [ "$1" = "--lhlimit" ]; then # atode namae henkou shift lhlimit=" -q $1 " elif [ "$1" = "--sparsepickup" ]; then shift npickup="$1" elif [ $progname = "fftns" -o $progname = "nwns" ]; then if [ "$1" -gt 0 ]; then cycle=`expr "$1" - 0` fi else echo "Unknown option: $1" 1>&2 er=1; # exit 1; fi shift done; # echo "" 1>"$progressfile" if [ $treeext = "memsavetree" ] || [ $treeext = "stepadd" ]; then if [ $distance != "ktuples" ]; then # auto -> memsave && globalpair ha erabarenai node, # ~/maffttmp wo tsukau noha meijiteki ni shitei saretatoki dake. if [ ! "$MAFFT_TMPDIR" ]; then # space is acceptable, 2018/Mar/17 MAFFT_TMPDIR="$HOME/maffttmp" mkdir -p "$MAFFT_TMPDIR" || exit fi fi fi if [ ! "$MAFFT_TMPDIR" ]; then MAFFT_TMPDIR="$TMPDIR" fi TMPFILE=`env TMPDIR="$MAFFT_TMPDIR" mktemp -dt "$progname.XXXXXXXXXX"` if [ $? -ne 0 ]; then echo "mktemp seems to be obsolete. Re-trying without -t" 1>&2 mkdir -p "$MAFFT_TMPDIR/tmp" 1>&2 TMPFILE=`mktemp -d "$MAFFT_TMPDIR/tmp/$progname.XXXXXXXXXX"` fi # lfs getstripe $TMPFILE 2>/dev/null && lfs setstripe -c 1 $TMPFILE # 2017/Oct lfs getstripe "$TMPFILE" > /dev/null 2>&1 && lfs setstripe -c 1 "$TMPFILE" > /dev/null 2>&1 # 2018/Feb if [ $os = "cygwin" ]; then TMPFILE=`cygpath -w "$TMPFILE"` # necessary to pass path to f2cl on cyswin, somehow unnecessary in msys. fi # umask 077 # 2021/Jan # mkdir "$TMPFILE" || er=1 function removetmpfile() { # for MPI while true do rm -rf "$TMPFILE" && break echo Retrying to remove "$TMPFILE". It may take several seconds. 1>&2 sleep 2 done } if [ $debug -eq 1 ]; then # trap "tar cfvz debuginfo.tgz $TMPFILE; rm -rf $TMPFILE " 0 # does not work in msys # trap "tar cfv - $TMPFILE | gzip -c > debuginfo.tgz; rm -rf $TMPFILE " 0 15 trap "popd > /dev/null 2>&1; tar cfv - \"$TMPFILE\" | gzip -c > debuginfo.tgz; removetmpfile" 0 15 else # trap "rm -rf $TMPFILE" 0 15 trap "removetmpfile" 0 15 fi if [ $# -eq 1 ]; then if [ -r "$1" -o "$1" = - ]; then if [ -r "$addfile" ]; then printf ''; else echo "$0": Cannot open "$addfile". 1>&2 echo "" 1>&2 exit 1; fi cat "$1" | tr "\r" "\n" > "$TMPFILE/infile" echo "" >> "$TMPFILE/infile" cat "$addfile" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_addfile" if [ $dofilter -eq 1 ]; then # mv "$TMPFILE/infile" "$TMPFILE/_tofilter" # "$prefix/filter" -m $maxambiguous $seqtype -i "$TMPFILE/_tofilter" > "$TMPFILE/infile" 2>>"$progressfile" || exit 1 mv "$TMPFILE/_addfile" "$TMPFILE/_tofilter" "$prefix/filter" -m $maxambiguous $seqtype -i "$TMPFILE/_tofilter" > "$TMPFILE/_addfile" 2>>"$progressfile" || exit 1 fi cat "$TMPFILE/_addfile" >> "$TMPFILE/infile" cat "$scorematrix" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_aamtx" cat "$mergetable" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_subalignmentstable" cat "$treeinfile" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_guidetree" cat "$codonposfile" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_codonpos" cat "$codonscorefile" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_codonscore" cat "$seedtablefile" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_seedtablefile" cat "$laraparams" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_lara.params" cat "$pdblist" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/pdblist" cat "$ownlist" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/ownlist" cat "$anchorfile" | tr "\r" "\n" | grep -v "^$" > "$TMPFILE/_externalanchors" SAVEIFS=$IFS # Fixed a bug: 'n' was misinterpreted as delimiter, 2020/Jun/19 IFS=$'\n' filelist="$1 $addfile $scorematrix $mergetable $treeinfile $codonposfile $codonscorefile $seedtablefile $laraparams $pdblist $ownlist" for f in $filelist; do file "$f" 2>/dev/null | grep -e 'UTF-16' -e 'UTF-32' >& /dev/null && printf "$f: UTF-16 or UTF-32? Convert this file to ASCII\n\n" 1>&2 && exit 1; done IFS=$SAVEIFS # echo $seedfiles infilename="$1" seedfilesintmp="/dev/null" seednseq="0" set $seedfiles > /dev/null while [ $# -gt 1 ]; do shift if [ -r "$1" ]; then cat "$1" | tr "\r" "\n" > "$TMPFILE/seed$#" file "$1" | grep -e 'UTF-16' -e 'UTF-32' >& /dev/null && printf "$1: UTF-16 or UTF-32? Convert this file to ASCII\n\n" 1>&2 && exit 1; else echo "$0": Cannot open "$1". 1>&2 echo "" 1>&2 exit 1; fi seednseq=$seednseq" "`grep -c '^[>|=]' "$TMPFILE/seed$#"` seedfilesintmp=$seedfilesintmp" "seed$# done # ls $TMPFILE # echo $seedfilesintmp # echo $seednseq else echo "$0": Cannot open "$1". 1>&2 echo "" 1>&2 er=1 # exit 1; fi else # echo '$#'"=$#" 1>&2 er=1 fi if [ $numthreads -lt 0 ]; then if [ $os = "linux" ]; then nlogicalcore=`cat /proc/cpuinfo | grep "^processor" | uniq | wc -l` ncoresinacpu=`cat /proc/cpuinfo | grep 'cpu cores' | uniq | awk '{print $4}'` nphysicalcpu=`cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l` if [ $nlogicalcore -eq 0 ]; then echo "Cannot get the number of processors from /proc/cpuinfo" 1>>"$progressfile" exit 1 fi if [ ${#ncoresinacpu} -gt 0 -a $nphysicalcpu -gt 0 ]; then numthreads=`expr $ncoresinacpu '*' $nphysicalcpu` # if [ $nlogicalcore -gt $numthreads ]; then # Hyperthreading # numthreads=`expr $numthreads '+' 1` # fi else numthreads=$nlogicalcore fi elif [ $os = "darwin" ]; then numthreads=`sysctl -n hw.physicalcpu` if [ -z $numthreads ]; then echo "Cannot get the number of physical cores from sysctl" 1>>"$progressfile" exit 1 fi # nlogicalcore=`sysctl -n hw.logicalcpu` # if [ $nlogicalcore -gt $numthreads ]; then # Hyperthreading # numthreads=`expr $numthreads '+' 1` # fi elif [ "$windows" = "yes" ]; then # numthreads=`wmic cpu get NumberOfCores | head -2 | tail -1 | awk '{print $1}'` numthreads=`wmic cpu get NumberOfCores | awk 'BEGIN{n=0} {n+=$1} END{print n}'` else echo "Cannot count the number of physical cores." 1>>"$progressfile" exit 1 fi echo "OS = "$os 1>>"$progressfile" echo "The number of physical cores = " $numthreads 1>>"$progressfile" fi if [ $numthreadstb -lt 0 ]; then if [ $numthreads -lt 16 -o "$mpiscript" != "/dev/null" ]; then # mpi: museigen, multithread: 16 made # if [ $numthreads -lt 31 ]; then numthreadstb=$numthreads else numthreadstb=16 fi fi if [ $numthreadsit -lt 0 ]; then if [ $numthreads -lt 8 ]; then numthreadsit=$numthreads else numthreadsit=8 fi fi if [ $numthreadsit -eq 0 -a $parallelizationstrategy = "BESTFIRST" ]; then echo 'Impossible' 1>&2; exit 1; fi if [ "$addarg0" != " " ]; then # iterate=0 # 2013/03/23 -> commented out, 2017/12 "$prefix/countlen" < "$TMPFILE/_addfile" > "$TMPFILE/addsize" 2>>"$progressfile" nadd=`awk '{print $1}' "$TMPFILE/addsize"` if [ $nadd -eq "0" ]; then echo Check $addfile 1>&2 exit 1; fi if [ $seed != "x" -o $seedtable != "x" ]; then echo 'Impossible' 1>&2; echo 'Use either ONE of --seed, --seedtable, --addprofile and --add.' 1>&2 exit 1; fi else nadd="0" fi if [ $auto -eq 1 ]; then "$prefix/countlen" < "$TMPFILE/infile" > "$TMPFILE/size" 2>>"$progressfile" nseq=`awk '{print $1}' "$TMPFILE/size"` nlen=`awk '{print $3}' "$TMPFILE/size"` if [ $nlen -lt 3000 -a $nseq -lt 100 ]; then distance="local" iterate=1000 cycle=1 treeext="none" elif [ $nlen -lt 1000 -a $nseq -lt 200 ]; then distance="local" iterate=2 cycle=1 treeext="none" elif [ $nlen -lt 10000 -a $nseq -lt 500 ]; then distance="ktuples" iterate=2 cycle=2 treeext="none" elif [ $nseq -lt 20000 ]; then # changed from 10000 2014/Oct/4 distance="ktuples" iterate=0 cycle=2 treeext="none" elif [ $nseq -lt 100000 ]; then # changed from 50000 2017/Nov/24 distance="ktuples" iterate=0 cycle=2 if [ $fragment -eq 0 -a "$mergetable" = "/dev/null" ]; then treeext="memsavetree" fi elif [ $nseq -lt 200000 ]; then # changed from 90000 2017/Nov/24 distance="ktuples" iterate=0 cycle=1 if [ $fragment -eq 0 -a "$mergetable" = "/dev/null" ]; then treeext="memsavetree" fi elif [ $nlen -lt 3000 ]; then distance="parttree" partdist="localalign" algopt=" " algoptit=" " # algspecified=1 cycle=1 else distance="parttree" partdist="ktuples" algopt=" " algoptit=" " # algspecified=1 cycle=1 fi # if [ $nlen -lt 3000 -a $nseq -lt 100 ]; then # distance="local" # iterate=1000 # cycle=1 # elif [ $nlen -lt 1000 -a $nseq -lt 200 ]; then # distance="local" # iterate=2 # cycle=1 # elif [ $nlen -lt 10000 -a $nseq -lt 500 ]; then # distance="ktuples" # iterate=2 # cycle=2 # elif [ $nseq -lt 200000 ]; then # distance="ktuples" # iterate=0 # treeinopt=" -U " # treein=1 # pileuporshuffle="a" # elif [ $nlen -lt 3000 ]; then # distance="parttree" # partdist="localalign" # algopt=" " # algoptit=" " ## algspecified=1 # cycle=1 # else # distance="parttree" # partdist="ktuples" # algopt=" " # algoptit=" " ## algspecified=1 # cycle=1 # fi if [ $fragment -ne 0 ]; then norg=`expr $nseq '-' $nadd` npair=`expr $norg '*' $nadd` echo "nadd = " $nadd 1>>"$progressfile" echo "npair = " $npair 1>>"$progressfile" echo "nseq = " $nseq 1>>"$progressfile" echo "nlen = " $nlen 1>>"$progressfile" if [ $norg -eq 0 ]; then echo "" 1>>"$progressfile" echo "The reference sequence was removed because of ambiguous letters?" 1>>"$progressfile" echo "" 1>>"$progressfile" exit 1; fi # nagasa check! # if [ $npair -gt 10000000 -o $nlen -gt 5000 ]; then # 2017/Oct if [ $npair -gt 10000000 -o $nlen -gt 5000 -o $nadd -gt 500000 ]; then # 2021/Dec pairlocalalign to buntan distance="ktuples" echo "use ktuples, size=$tuplesize!" 1>>"$progressfile" # elif [ $npair -gt 3000000 -o $nlen -gt 5000 ]; then # 2017/Oct elif [ $npair -gt 3000000 -o $nlen -gt 5000 ]; then # 2017/Oct distance="multi" weighti="0.0" echo "use multipair, weighti=0.0!" 1>>"$progressfile" else distance="multi" echo "use multipair, weighti=$weighti!" 1>>"$progressfile" fi pairspecified=1 fi fi if [ `awk "BEGIN {print( 0.0+\"$sueff\" < 0.0 || 0.0+\"$sueff\" > 1.0 )}"` -gt 0 ]; then printf "\n%s\n\n" "The argument of --mixedlinkage must be between 0.0 and 1.0" 1>>"$progressfile" exit 1; fi if [ `awk "BEGIN {print( 0.0+\"$maxambiguous\" < 0.0 || 0.0+\"$maxambiguous\" > 1.0 )}"` -gt 0 ]; then printf "\n%s\n\n" "The argument of --maxambiguous must be between 0.0 and 1.0" 1>>"$progressfile" exit 1; fi if [ $allowshift -eq 1 ]; then if [ $unalignspecified -ne 1 ]; then unalignlevel="0.8" fi if [ $shiftpenaltyspecified -ne 1 ]; then spfactor="2.00" fi fi if [ $opdistspecified -ne 1 ]; then gopdist=$gop fi if [ $unalignlevel != "0.0" -o `awk "BEGIN {print( 0.0+\"$spfactor\" < 100.0 )}"` -gt 0 ]; then nmodel=" -: " termgapopt=" " if [ $distance = "localgenaf" ]; then printf "\n%s\n" "The combination of --allowshift and --genafpair (E-INS-i/-1) is not supported." 1>>"$progressfile" printf "%s\n" "Instead, please try --allowshift --globalpair (G-INS-i/-1 in the web version)," 1>>"$progressfile" printf "%s\n\n" "which covers the situation for --genafpair (E-INS-i/-1), too." 1>>"$progressfile" exit 1; fi if [ $distance != "global" -o `awk "BEGIN {print( 0.0+\"$weighti\" < 1.0 )}"` -gt 0 ]; then printf "\n%s\n\n" "At present, --unalignlevel # or --allowshift is supported only with the --globalpair option." 1>>"$progressfile" exit 1; fi if [ $fragment -ne 0 ]; then printf "\n%s\n\n" "At present, --unalignlevel # or --allowshift is not supported with the --addfragments option." 1>>"$progressfile" exit 1; fi fi if [ `awk "BEGIN {print( 0.0+\"$spfactor\" < 1.0 )}"` -gt 0 ]; then printf "\n%s\n" "shiftpenalty must be >1." 1>>"$progressfile" exit 1; fi if [ `awk "BEGIN {print( 0.0+\"$fixthreshold\" < 0.0 )}"` -gt 0 ]; then printf "\n%s\n\n" "The 'fix' parameter must be >= 0.0" 1>>"$progressfile" exit 1; fi if [ `awk "BEGIN {print( 0.0+\"$unalignlevel\" < 0.0 || 0.0+\"$unalignlevel\" > 1.0 )}"` -gt 0 ]; then printf "\n%s\n\n" "The 'unalignlevel' parameter must be between 0.0 and 1.0" 1>>"$progressfile" exit 1; fi if [ `awk "BEGIN {print( 0.0+\"$unalignlevel\" > 0.0 )}"` -gt 0 ]; then laof="0" lexp="0" pgaof="0" pgexp="0" LEXP="0" GEXP="0" termgapopt=" " # if [ $auto -eq 1 -o $fragment -ne 0 -o $iterate -gt 0 ]; then if [ $fragment -ne 0 ]; then printf "\n%s\n\n" "At present, the 'unalignlevel > 0' mode is not supported with the --addfragments option." 1>>"$progressfile" exit 1; fi if [ $distance = "parttree" ]; then printf "\n%s\n\n" "At present, the 'unalignlevel > 0' mode is not supported in the (dp)parttree option." 1>>"$progressfile" exit 1; fi if [ $distance = "localgenaf" ]; then printf "\n%s\n" "The --genafpair is not supported in the 'unalignlevel > 0' mode." 1>>"$progressfile" printf "%s\n" "Instead, please try --unalignlevel xx --globalpair," 1>>"$progressfile" printf "%s\n\n" "which covers the situation for --genafpair (E-INS-i), too." 1>>"$progressfile" exit 1; fi # if [ $distance != "ktuples" -a `awk "BEGIN {print( 0.0+\"$weighti\" > 0.0 )}"` -gt 0 -a $iterate -gt 0 ]; then # printf "\n%s\n\n" "Please add --weighti 0.0, for now." 1>>"$progressfile" # exit 1; # fi fi if [ `awk "BEGIN {print( 0.0+\"$similarityoffset\" != 0.0 && 0.0+\"$unalignlevel\" != 0.0 )}"` -gt 0 ]; then printf "\n%s\n\n" "Do not simultaneously specify --similaritylevel and --unalignlevel" 1>>"$progressfile" exit 1; fi if [ `awk "BEGIN {print( 0.0+\"$similarityoffset\" < -1.0 || 0.0+\"$similarityoffset\" > 1.0 )}"` -gt 0 ]; then printf "\n%s\n\n" "Similarity must be between -1.0 and +1.0" 1>>"$progressfile" exit 1; fi aof=`awk "BEGIN{print 0.0 + \"$similarityoffset\" + $aof}"` laof=`awk "BEGIN{print 0.0 + \"$similarityoffset\" + $laof}"` pgaof=`awk "BEGIN{print 0.0 + \"$similarityoffset\" + $pgaof}"` if [ $parallelizationstrategy = "BESTFIRST" -o $parallelizationstrategy = "BAATARI0" ]; then iteratelimit=254 else iteratelimit=16 fi if [ $iterate -gt $iteratelimit ]; then #?? iterate=$iteratelimit fi if [ $rnaalifold -eq 1 ]; then rnaopt=" -e $rgep -o $rgop -c $weightm -r $weightr -R $rnascoremtx " # rnaoptit=" -o $rgop -BT -c $weightm -r $weightr -R " rnaoptit=" -o $rgop -F -c $weightm -r $weightr -R " elif [ $mccaskill -eq 1 -o $dafs -eq 1 -o $contrafold -eq 1 ]; then rnaopt=" -o $rgop -c $weightm -r $weightr " # rnaoptit=" -e $rgep -o $rgop -BT -c $weightm -r $weightr $rnascoremtx " rnaoptit=" -e $rgep -o $rgop -F -c $weightm -r $weightr $rnascoremtx " else rnaopt=" " rnaoptit=" -F " fi # if [ $algspecified -eq 0 ]; then # if [ $distance = "parttree" ]; then # algopt=" -Q " # algoptit=" " # else # algopt=" " # algoptit=" " # fi # fi if [ $sprigorous -eq 1 ]; then algopt=" -@ " if [ $iterate -gt 0 ]; then if [ $numthreadsit -eq 0 ]; then algoptit=" -@ -B -Z -z 1000 " else echo "" 1>>"$progressfile" echo "At present, the combination of --sp and iterative refinement is supported only in a single thread." 1>>"$progressfile" echo "Please try \"--thread -1 --threadit 0\", which runs the iterative refinment calculation on a single thread." 1>>"$progressfile" echo "" 1>>"$progressfile" exit 1; # algoptit=" -@ -B -z 1000 " fi fi termgapopt=" " fft=0 memopt=" -N " fi model="$sbstmodel $kappa $fmodel $nmodel" if [ $er -eq 1 ]; then echo "------------------------------------------------------------------------------" 1>&2 echo " MAFFT" $version 1>&2 # echo "" 1>&2 # echo " Input format: fasta" 1>&2 # echo "" 1>&2 # echo " Usage: `basename $0` [options] inputfile > outputfile" 1>&2 echo " https://mafft.cbrc.jp/alignment/software/" 1>&2 echo " MBE 30:772-780 (2013), NAR 30:3059-3066 (2002)" 1>&2 # echo "------------------------------------------------------------------------------" 1>&2 # echo " % mafft in > out" 1>&2 echo "------------------------------------------------------------------------------" 1>&2 # echo "" 1>&2 echo "High speed:" 1>&2 echo " % mafft in > out" 1>&2 echo " % mafft --retree 1 in > out (fast)" 1>&2 echo "" 1>&2 echo "High accuracy (for <~200 sequences x <~2,000 aa/nt):" 1>&2 echo " % mafft --maxiterate 1000 --localpair in > out (% linsi in > out is also ok)" 1>&2 echo " % mafft --maxiterate 1000 --genafpair in > out (% einsi in > out)" 1>&2 echo " % mafft --maxiterate 1000 --globalpair in > out (% ginsi in > out)" 1>&2 echo "" 1>&2 echo "If unsure which option to use:" 1>&2 echo " % mafft --auto in > out" 1>&2 echo "" 1>&2 # echo "Other options:" 1>&2 echo "--op # : Gap opening penalty, default: 1.53" 1>&2 echo "--ep # : Offset (works like gap extension penalty), default: 0.0" 1>&2 echo "--maxiterate # : Maximum number of iterative refinement, default: 0" 1>&2 echo "--clustalout : Output: clustal format, default: fasta" 1>&2 echo "--reorder : Outorder: aligned, default: input order" 1>&2 echo "--quiet : Do not report progress" 1>&2 echo "--thread # : Number of threads (if unsure, --thread -1)" 1>&2 echo "--dash : Add structural information (Rozewicki et al, submitted)" 1>&2 # echo "" 1>&2 # echo " % mafft --maxiterate 1000 --localpair in > out (L-INS-i)" 1>&2 # echo " most accurate in many cases, assumes only one alignable domain" 1>&2 # echo "" 1>&2 # echo " % mafft --maxiterate 1000 --genafpair in > out (E-INS-i)" 1>&2 # echo " works well if many unalignable residues exist between alignable domains" 1>&2 # echo "" 1>&2 # echo " % mafft --maxiterate 1000 --globalpair in > out (G-INS-i)" 1>&2 # echo " suitable for globally alignable sequences " 1>&2 # echo "" 1>&2 # echo " % mafft --maxiterate 1000 in > out (FFT-NS-i)" 1>&2 # echo " accurate and slow, iterative refinement method " 1>&2 # echo "" 1>&2 # echo "If the input sequences are long (~1,000,000nt)," 1>&2 # echo " % mafft --retree 1 --memsave --fft in > out (FFT-NS-1-memsave, new in v5.8)" 1>&2 # echo "" 1>&2 # echo "If many (~5,000) sequences are to be aligned," 1>&2 # echo "" 1>&2 # echo " % mafft --retree 1 [--memsave] --nofft in > out (NW-NS-1, new in v5.8)" 1>&2 # echo "" 1>&2 # echo " --localpair : All pairwise local alignment information is included" 1>&2 # echo " to the objective function, default: off" 1>&2 # echo " --globalpair : All pairwise global alignment information is included" 1>&2 # echo " to the objective function, default: off" 1>&2 # echo " --op # : Gap opening penalty, default: $defaultgop " 1>&2 # echo " --ep # : Offset (works like gap extension penalty), default: $defaultaof " 1>&2 # echo " --bl #, --jtt # : Scoring matrix, default: BLOSUM62" 1>&2 # echo " Alternatives are BLOSUM (--bl) 30, 45, 62, 80, " 1>&2 # echo " or JTT (--jtt) # PAM. " 1>&2 # echo " --nuc or --amino : Sequence type, default: auto" 1>&2 # echo " --retree # : The number of tree building in progressive method " 1>&2 # echo " (see the paper for detail), default: $defaultcycle " 1>&2 # echo " --maxiterate # : Maximum number of iterative refinement, default: $defaultiterate " 1>&2 # if [ $defaultfft -eq 1 ]; then # echo " --fft or --nofft: FFT is enabled or disabled, default: enabled" 1>&2 # else # echo " --fft or --nofft: FFT is enabled or disabled, default: disabled" 1>&2 # fi # echo " --memsave: Memory saving mode" 1>&2 # echo " (for long genomic sequences), default: off" 1>&2 # echo " --clustalout : Output: clustal format, default: fasta" 1>&2 # echo " --reorder : Outorder: aligned, default: input order" 1>&2 # echo " --quiet : Do not report progress" 1>&2 # echo "-----------------------------------------------------------------------------" 1>&2 exit 1; fi if [ $sw -eq 1 ]; then swopt=" -A " else swopt=" " fi if [ $distance = "fasta" -o $partdist = "fasta" ]; then if [ ! "$FASTA_4_MAFFT" ]; then FASTA_4_MAFFT=`which fasta34` fi if [ ! -x "$FASTA_4_MAFFT" ]; then echo "" 1>&2 echo "== Install FASTA ========================================================" 1>&2 echo "This option requires the fasta34 program (FASTA version x.xx or higher)" 1>&2 echo "installed in your PATH. If you have the fasta34 program but have renamed" 1>&2 echo "(like /usr/local/bin/myfasta), set the FASTA_4_MAFFT environment variable" 1>&2 echo "to point your fasta34 (like setenv FASTA_4_MAFFT /usr/local/bin/myfasta)." 1>&2 echo "=========================================================================" 1>&2 echo "" 1>&2 exit 1 fi fi if [ $distance = "last" -o $distance = "lastmulti" ]; then if [ ! -x "$prefix/lastal" -o ! -x "$prefix/lastdb" ]; then echo "" 1>&2 echo "== Install LAST ============================================================" 1>&2 echo "LAST (Kielbasa, Wan, Sato, Horton, Frith 2011 Genome Res. 21:487) is required." 1>&2 echo "http://last.cbrc.jp/" 1>&2 echo "http://mafft.cbrc.jp/alignment/software/xxxxxxx.html " 1>&2 echo "============================================================================" 1>&2 echo "" 1>&2 exit 1 fi fi if [ $distance = "lara" -o $distance = "slara" ]; then if [ ! -x "$prefix/mafft_lara" ]; then echo "" 1>&2 echo "== Install LaRA =========================================================" 1>&2 echo "This option requires LaRA (Bauer et al. http://www.planet-lisa.net/)." 1>&2 echo "The executable have to be renamed to 'mafft_lara' and installed into " 1>&2 echo "the $prefix directory. " 1>&2 echo "A configuration file of LaRA also have to be given" 1>&2 echo "mafft-xinsi --larapair --laraparams parameter_file" 1>&2 echo "mafft-xinsi --slarapair --laraparams parameter_file" 1>&2 echo "=========================================================================" 1>&2 echo "" 1>&2 exit 1 fi if [ ! -s "$laraparams" ]; then echo "" 1>&2 echo "== Configure LaRA =======================================================" 1>&2 echo "A configuration file of LaRA have to be given" 1>&2 echo "mafft-xinsi --larapair --laraparams parameter_file" 1>&2 echo "mafft-xinsi --slarapair --laraparams parameter_file" 1>&2 echo "=========================================================================" 1>&2 echo "" 1>&2 exit 1 fi fi if [ $distance = "foldalignlocal" -o $distance = "foldalignglobal" ]; then if [ ! -x "$prefix/foldalign210" ]; then echo "" 1>&2 echo "== Install FOLDALIGN ====================================================" 1>&2 echo "This option requires FOLDALIGN (Havgaard et al. http://foldalign.ku.dk/)." 1>&2 echo "The executable have to be renamed to 'foldalign210' and installed into " 1>&2 echo "the $prefix directory. " 1>&2 echo "=========================================================================" 1>&2 echo "" 1>&2 exit 1 fi fi if [ $distance = "scarna" -o $mccaskill -eq 1 ]; then if [ ! -x "$prefix/mxscarnamod" ]; then echo "" 1>&2 echo "== Install MXSCARNA ======================================================" 1>&2 echo "MXSCARNA (Tabei et al. BMC Bioinformatics 2008 9:33) is required." 1>&2 echo "Please 'make' at the 'extensions' directory of the MAFFT source package," 1>&2 echo "which contains the modified version of MXSCARNA." 1>&2 echo "http://mafft.cbrc.jp/alignment/software/source.html " 1>&2 echo "==========================================================================" 1>&2 echo "" 1>&2 exit 1 fi fi if [ $distance = "dafs" -o $dafs -eq 1 ]; then if [ ! -x "$prefix/dafs" ]; then echo "" 1>&2 echo "== Install DAFS===========================================================" 1>&2 echo "DAFS (Sato et al. Journal 2012 issue:page) is required." 1>&2 echo "http://www.ncrna.org/ " 1>&2 echo "==========================================================================" 1>&2 echo "" 1>&2 exit 1 fi fi if [ $contrafold -eq 1 ]; then if [ ! -x "$prefix/contrafold" ]; then echo "" 1>&2 echo "== Install CONTRAfold ===================================================" 1>&2 echo "This option requires CONTRAfold" 1>&2 echo "(Do et al. http://contra.stanford.edu/contrafold/)." 1>&2 echo "The executable 'contrafold' have to be installed into " 1>&2 echo "the $prefix directory. " 1>&2 echo "=========================================================================" 1>&2 echo "" 1>&2 exit 1 fi fi #old # if [ $treeout -eq 1 ]; then # parttreeoutopt="-t" # if [ $cycle -eq 0 ]; then # treeoutopt="-t -T" # groupsize=1 # iterate=0 # if [ $distance = "global" -o $distance = "local" -o $distance = "localgenaf" -o $distance = "globalgenaf" ]; then # distance="distonly" # fi # else # treeoutopt="-t" # fi # else # parttreeoutopt=" " # if [ $cycle -eq 0 ]; then # treeoutopt="-t -T" # iterate=0 # if [ $distance = "global" -o $distance = "local" -o $distance = "localgenaf" -o $distance = "globalgenaf" ]; then # distance="distonly" # fi # else # treeoutopt=" " # fi # fi #new if [ $cycle -eq 0 ]; then if [ $nodeout -eq 1 ]; then treeoutopt="-^ -T" else treeoutopt="-t -T" fi iterate=0 weighti="0.0" # 2016Jul31, tbfast.c kara idou # if [ $distance = "global" -o $distance = "local" -o $distance = "localgenaf" -o $distance = "globalgenaf" ]; then # 2012/04, localpair --> local alignment distance # if [ $distance = "global" ]; then # distance="distonly" # fi if [ $treeout -eq 1 ]; then parttreeoutopt="-t" groupsize=1 else parttreeoutopt=" " fi if [ $distout -eq 1 ]; then distoutopt="-y -T" if [ $treeout -eq 0 ]; then treeoutopt="" fi fi else if [ $nodeout -eq 1 ]; then if [ $iterate -gt 0 ]; then echo "The --nodeout option supports only progressive method (--maxiterate 0) for now." 1>&2 exit 1 fi parttreeoutopt="-t" treeoutopt="-^" elif [ $treeout -eq 1 ]; then parttreeoutopt="-t" treeoutopt="-t" else parttreeoutopt=" " treeoutopt=" " fi if [ $distout -eq 1 ]; then distoutopt="-y" fi fi # formatcheck=`grep -c '^[[:blank:]]\+>' "$TMPFILE/infile" | head -1 ` if [ $formatcheck -gt 0 ]; then echo "The first character of a description line must be " 1>&2 echo "the greater-than (>) symbol, not a blank." 1>&2 echo "Please check the format around the following line(s):" 1>&2 grep -n '^[[:blank:]]\+>' "$TMPFILE/infile" 1>&2 exit 1 fi nseq=`grep -c '^[>|=]' "$TMPFILE/infile" | head -1 ` if [ $nseq -eq 2 ]; then cycle=1 fi if [ $cycle -gt 3 ]; then cycle=3 fi if [ $nseq -gt 60000 -a $iterate -gt 1 ]; then # 2014/Oct/22, test echo "Too many sequences to perform iterative refinement!" 1>&2 echo "Please use a progressive method." 1>&2 exit 1 fi if [ $distance = "lastmulti" -o $distance = "multi" ]; then if [ $fragment -eq 0 ]; then echo 'Specify --addfragments too' 1>&2 exit 1 fi fi if [ $fragment -ne 0 ]; then if [ $pairspecified -eq 0 ]; then distance="multi" fi if [ $distance != "multi" -a $distance != "hybrid" -a $distance != "lastmulti" -a $distance != "local" -a $distance != "last" -a $distance != "ktuples" -a $distance != "ktuplesmulti" ]; then echo 'Specify --multipair, --lastmultipair, --lastpair, --localpair, --6merpair, --6mermultipair or --hybridpair' 1>&2 exit 1 fi fi if [ "$memopt" = " -M -B " -a "$distance" != "ktuples" ]; then echo "Impossible" 1>&2 exit 1 fi if [ $distance = "parttree" ]; then if [ "$mergetable" != "/dev/null" ]; then echo "The combination of (dp)parttree and merge is Impossible. " 1>&2 exit 1 fi if [ $addfile != "/dev/null" ]; then echo "The combination of (dp)parttree and add(fragments) is Impossible. " 1>&2 exit 1 fi if [ $seed != "x" -o $seedtable != "x" ]; then echo "Impossible" 1>&2 exit 1 fi if [ $iterate -gt 1 ]; then echo "Impossible" 1>&2 exit 1 fi if [ $outorder = "aligned" ]; then outorder="input" fi outorder="input" # partorder ga kiku if [ $partdist = "localalign" ]; then splitopt=" -U " # -U -l -> fast cycle=1 elif [ $partdist = "fasta" ]; then splitopt=" -S " cycle=1 else splitopt=" " fi fi if [ \( $distance = "ktuples" -o $distance = "ktuplesmulti" \) -a \( $seed = "x" -a $seedtable = "x" -a $ownlist = "/dev/null" -a $pdblist = "/dev/null" -a $enrichstr -eq 0 -a $newdash -eq 0 \) ]; then localparam="" weighti="0.0" elif [ \( $distance = "ktuples" -o $distance = "ktuplesmulti" \) -a \( $seed != "x" -o $seedtable != "x" -o $ownlist != "/dev/null" -o $pdblist != "/dev/null" -o $enrichstr -eq 1 -o $newdash -eq 1 \) ]; then if [ $cycle -lt 2 ]; then cycle=2 # disttbfast ha seed hi-taiou # chuui 2014Aug21 fi if [ $iterate -lt 2 ]; then echo "############################################################################" 1>&2 echo "# Warning:" 1>&2 echo "# Progressive alignment method is incompatible with the --seed option." 1>&2 echo "# Automatically switched to the iterative refinement method." 1>&2 echo "# " 1>&2 echo "# Also consider using the '--add' option, which is compatible with" 1>&2 echo "# the progressive method and FASTER than the '--seed' option." 1>&2 echo "# Usage is:" 1>&2 echo "# % mafft --add newSequences existingAlignment > output" 1>&2 echo "############################################################################" 1>&2 iterate=2 fi localparam="-l "$weighti elif [ $distance = "parttree" ]; then localparam="" weighti="0.0" if [ $groupsize -gt -1 ]; then cycle=1 fi else # localparam="-B -l "$weighti # weighti=0 demo bunkatsu nashi localparam="-l "$weighti # -B (bunkatsunashi) ha dvtditr.c de taiou (17/Jan/15) if [ $cycle -gt 1 ]; then # 09/01/08 cycle=1 fi fi if [ $distance = "localgenaf" -o $distance = "globalgenaf" ]; then aof="0.000" if [ $oldgenafparam -ne 1 ]; then laof="0.0" lexp="0.0" # LEXP="0.0" # default = 0.0 usenaivepairscore="-Z" fi fi # if [ $nseq -gt 5000 ]; then # fft=0 # fi if [ $forcefft -eq 1 ]; then param_fft=" -G " fft=1 elif [ $fft -eq 1 ]; then param_fft=" -F " else param_fft=" " fi if [ $seed != "x" -a $seedtable != "x" ]; then echo 'Use either one of seedtable and seed. Not both.' 1>&2 exit 1 fi if [ $f2clext = "-E" -a $anysymbol -gt 0 ]; then echo '' 1>&2 echo 'The combination of --text and ( --anysymbol or --preservecase ) is impossible.' 1>&2 echo '' 1>&2 exit 1 fi # if [ $f2clext = "-E" -a $scorematrix != "/dev/null" ]; then # echo '' 1>&2 # echo 'At present, the combination of --text and (--aamatrix) is impossible.' 1>&2 # echo '' 1>&2 # exit 1 # fi memsavetree=0 if [ $treeext != "none" ]; then if [ $distance == "ktuples" ]; then treein=1 treeinopt=" -U " if [ $treeext == "randomchain" ]; then echo "shuffle $randomseed" > "$TMPFILE/_guidetree" cycle=1 # disttbfast.c dem shitei elif [ $treeext == "pileup" ]; then echo "pileup" > "$TMPFILE/_guidetree" cycle=1 # disttbfast. shitei elif [ $treeext == "memsavetree" ]; then echo "very compact" > "$TMPFILE/_guidetree" memsavetree=1 elif [ $treeext == "memsavetreex" ]; then echo "compact " "$initialramusage" > "$TMPFILE/_guidetree" memsavetree=1 elif [ $treeext == "stepadd" ]; then echo "stepadd" > "$TMPFILE/_guidetree" memsavetree=1 elif [ $treeext == "youngestlinkage" ]; then echo "youngestlinkage" > "$TMPFILE/_guidetree" memsavetree=1 else echo "error in mafft.tmpl" exit fi else # globalpair, localpair, genafpair, oldgenafpair # treein, treeinopt ha kimaranai if [ $treeext == "memsavetree" -o $treeext == "stepadd" ]; then memsavetree=1 else echo "With globalpair, localpair or genafpair," 1>>"$progressfile" echo "Use --large, --minimumlinkage, --averagelinkage or --mixedlinkage." 1>>"$progressfile" echo "--$treeext is supported only with --6merpair." 1>>"$progressfile" echo '' 1>>"$progressfile" exit fi fi if [ $iterate -gt 0 ]; then echo 'Iterative refinment is not supported for --large or --'$treeext 1>>"$progressfile" echo '' 1>>"$progressfile" exit 1 fi if [ $fragment -ne 0 ]; then echo '--addfragments, --addfull or --addlong is not yet supported for --large or --'$treeext 1>>"$progressfile" echo "Use --add newsequences --$treeext" 1>>"$progressfile" echo "Or, --addfragments (long, full) newsequences, without --"$treeext 1>>"$progressfile" echo '' 1>>"$progressfile" exit 1 fi if [ "$mergetable" != "/dev/null" ]; then # 2018/Mar/2 echo '--merge is not yet supported for --large or --'$treeext 1>>"$progressfile" echo "Use --merge without --"$treeext 1>>"$progressfile" echo '' 1>>"$progressfile" exit 1 fi fi if [ $nadd -gt "0" ]; then if [ $fragment -eq "1" ]; then addarg="$addarg0 $nadd -g -0.01" addsinglearg="" cycle=1 # chuui 2014Aug25 iterate=0 elif [ $fragment -eq "-1" ]; then addarg="$addarg0 $nadd" addsinglearg="-V" # allowlongadds, 2014/04/02 cycle=1 # chuui 2014Aug25 iterate=0 elif [ $fragment -eq "-2" ]; then addarg="$addarg0 $nadd" addsinglearg="-V" # allowlongadds + smoothing add2ndhalfarg=$add2ndhalfarg" -p " cycle=1 # chuui 2014Aug25 usenaivepairscore="-Z" # 2015Jun01 laof=0.0 # 2015Jun01 lexp=0.0 # 2015Jun01 iterate=0 elif [ $fragment -eq "-3" ]; then addarg="$addarg0 $nadd" addsinglearg="-x" # add to top, 2021/12/31 cycle=1 # chuui 2014Aug25 iterate=0 elif [ $fragment -eq "-4" ]; then addarg="$addarg0 $nadd" addsinglearg="-s" # add to root, 2023/2/11 cycle=1 # chuui 2014Aug25 iterate=0 else addarg="$addarg0 $nadd" addsinglearg="" # iterate=1 # iterate ha shitei dori bunkatsuopt=" -B " # fftnsi demo bunktasu shinai if [ "$add2ndhalfarg" != " " ]; then if [ $auto -eq 1 -o $iterate -gt 0 ]; then # echo '' 1>>"$progressfile" # echo 'The --keeplength and --mapout options are not supported' 1>>"$progressfile" # echo 'with the --auto or --maxiterate >0 options.' 1>>"$progressfile" # echo 'Use the --maxiterate 0 option (= progressive method).' 1>>"$progressfile" # echo '' 1>>"$progressfile" # exit 1 iterate=0 fi fi fi # cycle=1 # chuui 2014Aug19 # iterate=0 # treealg=" -q " ## 2012/01/24 ## removed 2012/02/06 else if [ "$add2ndhalfarg" != " " ]; then echo '' 1>>"$progressfile" echo 'The --keeplength and --mapout options are supported' 1>>"$progressfile" echo 'only with --add, --addfragments or --addlong.' 1>>"$progressfile" echo '' 1>>"$progressfile" exit 1 fi fi if [ "$codonposfile" != "/dev/null" -o "$codonscorefile" != "/dev/null" ]; then if [ $nadd -eq "0" -o $fragment -eq "0" ]; then echo '' 1>>"$progressfile" echo "'--codonpos' and '--codonscore' options are supported only with the '--6merpair --addfragments' option." 1>>"$progressfile" echo '' 1>>"$progressfile" exit 1 fi if [ $distance != "ktuples" ]; then # ato de taiou echo '' 1>>"$progressfile" echo "'--codonpos' and '--codonscore' options are supported only with the '--6merpair --addfragments' option, at this point." 1>>"$progressfile" echo '' 1>>"$progressfile" exit 1 fi fi if [ -z "$localparam" -a $fragment -eq 0 -a $distance != "parttree" ]; then # echo "use disttbfast" # echo cycle = $cycle cycletbfast=1 # tbfast wo jikkou shinai cycledisttbfast=$cycle # disttbfast ni -E cycle wo watasu if [ $cycledisttbfast -eq 0 ]; then # --treeout de tsukau cycledisttbfast=1 fi else # echo "use tbfast" # echo cycle = $cycle cycletbfast=$cycle # 1 ijou nara jikkou cycledisttbfast=1 # disttbfast ha ikkai dake fi # echo localparam= # echo $localparam # echo cycletbfast= # echo $cycletbfast # echo cycledisttbfast= # echo $cycledisttbfast #exit if [ $adjustdirection -gt 0 -a $seed != "x" ]; then echo '' 1>&2 echo 'The combination of --adjustdirection(accurately) and --seed is not supported.' 1>&2 echo '' 1>&2 exit 1 fi if [ $mccaskill -eq 1 -o $dafs -eq 1 -o $rnaalifold -eq 1 -o $contrafold -eq 1 ]; then if [ $distance = "ktuples" ]; then echo 'Not supported.' 1>&2 echo 'Please add --globalpair, --localpair, --scarnapair, --dafspair' 1>&2 echo '--larapair, --slarapair, --foldalignlocalpair or --foldalignglobalpair' 1>&2 exit 1 fi if [ $f2clext = "-E" ]; then echo '' 1>&2 echo 'For RNA alignment, the --text mode is impossible.' 1>&2 echo '' 1>&2 exit 1 fi fi # cycle ga atode henkou sareru node koko de strategy no namae wo kimeru. # kokokara if [ $treeext = "pileup" ]; then strategy="Pileup-" elif [ $treeext = "randomchain" ]; then strategy="Randomchain-" elif [ $mccaskill -eq 1 -o $dafs -eq 1 -o $rnaalifold -eq 1 -o $contrafold -eq 1 ]; then if [ $distance = "scarna" -o $distance = "dafs" -o $distance = "lara" -o $distance = "slara" -o $distance = "foldalignlocal" -o $distance = "foldalignglobal" ]; then strategy="X-" elif [ $distance = "global" -o $distance = "local" -o $distance = "localgenaf" -o "globalgenaf" ]; then strategy="Q-" fi elif [ $distance = "fasta" -a $sw -eq 0 ]; then strategy="F-" elif [ $distance = "fasta" -a $sw -eq 1 ]; then strategy="H-" elif [ $distance = "blast" ]; then strategy="B-" elif [ $distance = "global" -o $distance = "distonly" ]; then strategy="G-" elif [ $distance = "local" ]; then strategy="L-" elif [ $distance = "last" ]; then strategy="Last-" elif [ $distance = "hybrid" ]; then strategy="Hybrid-" elif [ $distance = "multi" ]; then strategy="Multi-" elif [ $distance = "lastmulti" ]; then strategy="LastMulti-" elif [ $distance = "localgenaf" ]; then strategy="E-" elif [ $distance = "globalgenaf" ]; then strategy="K-" elif [ $fft -eq 1 ]; then strategy="FFT-" else strategy="NW-" fi if [ $memsavetree -eq 1 ]; then strategy=$strategy"large-" fi # if [ `echo "$weighti>0.0" | bc` -gt 0 ]; then if [ `awk "BEGIN {print(0.0+\"$weighti\">0.0)}"` -gt 0 ]; then strategy=$strategy"I" fi strategy=$strategy"NS-" if [ $iterate -gt 0 ]; then strategy=$strategy"i" elif [ $distance = "parttree" ]; then if [ $partdist = "fasta" ]; then strategy=$strategy"FastaPartTree-"$cycle elif [ $partdist = "localalign" ]; then strategy=$strategy"DPPartTree-"$cycle else strategy=$strategy"PartTree-"$cycle fi elif [ $fragment -eq 1 ]; then strategy=$strategy"fragment" elif [ $fragment -eq -1 ]; then strategy=$strategy"full" elif [ $fragment -eq -2 ]; then strategy=$strategy"long" elif [ $fragment -eq -3 ]; then strategy=$strategy"top" else strategy=$strategy$cycle fi explanation='?' performance='Not tested.' if [ $strategy = "F-INS-i" ]; then explanation='Iterative refinement method (<'$iterate') with LOCAL pairwise alignment information' performance='Most accurate, but very slow' elif [ $strategy = "L-INS-i" ]; then explanation='Iterative refinement method (<'$iterate') with LOCAL pairwise alignment information' performance='Probably most accurate, very slow' elif [ $strategy = "E-INS-i" ]; then explanation='Iterative refinement method (<'$iterate') with LOCAL pairwise alignment with generalized affine gap costs (Altschul 1998)' performance='Suitable for sequences with long unalignable regions, very slow' elif [ $strategy = "G-INS-i" ]; then explanation='Iterative refinement method (<'$iterate') with GLOBAL pairwise alignment information' performance='Suitable for sequences of similar lengths, very slow' elif [ $strategy = "X-INS-i" ]; then explanation='RNA secondary structure information is taken into account.' performance='For short RNA sequences only, extremely slow' elif [ $strategy = "F-INS-1" ]; then explanation='Progressive method incorporating LOCAL pairwise alignment information' elif [ $strategy = "L-INS-1" ]; then explanation='Progressive method incorporating LOCAL pairwise alignment information' elif [ $strategy = "G-INS-1" ]; then explanation='Progressive method incorporating GLOBAL pairwise alignment information' elif [ $strategy = "FFT-NS-i" -o $strategy = "NW-NS-i" ]; then explanation='Iterative refinement method (max. '$iterate' iterations)' if [ $iterate -gt 2 ]; then performance='Accurate but slow' else performance='Standard' fi elif [ $strategy = "FFT-NS-2" -o $strategy = "NW-NS-2" ]; then explanation='Progressive method (guide trees were built '$cycle' times.)' performance='Fast but rough' elif [ $strategy = "FFT-NS-1" -o $strategy = "NW-NS-1" ]; then explanation='Progressive method (rough guide tree was used.)' performance='Very fast but very rough' fi if [ $outputformat = "clustal" -a $outorder = "aligned" ]; then outputopt=" -c $strategy -r $TMPFILE/order $f2clext " elif [ $outputformat = "clustal" -a $outorder = "input" ]; then outputopt=" -c $strategy $f2clext " elif [ $outputformat = "phylip" -a $outorder = "aligned" ]; then outputopt=" -y -r $TMPFILE/order " elif [ $outputformat = "phylip" -a $outorder = "input" ]; then outputopt=" -y " elif [ $outputformat = "pir" -a $outorder = "aligned" ]; then outputopt=" -f -l $linelength -r $TMPFILE/order " else outputopt="-f -l $linelength" fi if [ $newdash_originalsequenceonly -eq 1 ]; then outputopt="$outputopt -d " fi # kokomade pushd "$TMPFILE" > /dev/null cat /dev/null > pre # echo "nseq = " $nseq 1>>"$progressfile" # echo "distance = " $distance 1>>"$progressfile" # echo "iterate = " $iterate 1>>"$progressfile" # echo "cycle = " $cycle 1>>"$progressfile" if [ $anysymbol -eq 1 ]; then mv infile orig "$prefix/replaceu" $seqtype -i orig > infile 2>>"$progressfile" || exit 1 fi if [ $mergetable != "/dev/null" ]; then if [ $nadd -gt "0" ]; then echo "Impossible" 1>&2 exit 1 fi # if [ $seed != "x" -o $seedtable != "x" ]; then # echo "This version does not support the combination of merge and seed." 1>&2 # exit 1 # fi # iterate=0 # 2013/04/16 mergearg="-H $seedoffset" fi if [ $adjustdirection -gt 0 ]; then if [ $fragment -ne 0 ]; then fragarg="-F" # else fragarg="-F" # 2014/02/06, do not consider other additional sequences, even in the case of --add fi if [ $adjustdirection -eq 1 ]; then "$prefix/makedirectionlist" $fragarg -C $numthreads -m -I $nadd -i infile -t 0.00 -r 5000 -o a > _direction 2>>"$progressfile" elif [ $adjustdirection -eq 2 ]; then "$prefix/makedirectionlist" $fragarg -C $numthreads -m -I $nadd -i infile -t 0.00 -r 100 -o a -d > _direction 2>>"$progressfile" fi "$prefix/setdirection" $mergearg -d _direction -i infile > infiled 2>>"$progressfile" || exit mv infiled infile if [ $anysymbol -eq 1 ]; then "$prefix/setdirection" $mergearg -d _direction -i orig -r > origd 2>>"$progressfile" || exit mv origd orig fi fi if [ $seed != "x" -o $seedtable != "x" ]; then if [ $pdblist != "/dev/null" -o $ownlist != "/dev/null" ]; then echo "The combination of --seed and (--pdbidlist or --pdbfilelist) is impossible." 1>>"$progressfile" exit 1 fi # if [ $enrich -eq 1 ]; then # echo "The combination of --seed and (--enrich, --enrichseq or --enrichstr) is impossible at present." 1>>"$progressfile" # exit 1 # fi if [ $newdash -eq 1 ]; then echo "The combination of --seed and --dash is impossible at present." 1>>"$progressfile" exit 1 fi fi # if [ $enrich -eq 1 ]; then # if [ $ownlist != "/dev/null" ]; then # echo "Warning: Sequence homologs of the structures given with the --pdbfilelist option cannot be collected.\n" 1>>"$progressfile" # fi # echo "SEEKQUENCER (http://sysimm.ifrec.osaka-u.ac.jp/seekquencer/) is" 1>>"$progressfile" # if [ $pdblist != "/dev/null" ]; then # echo "collecting homoplogs of the input sequences and the structures given with the --pdbidlist option." 1>>"$progressfile" # perl "$prefix/seekquencer_premafft.pl" $seektarget -run thread -trd 2 -seqd uniref90 -blim 1000 -noin -seqf infile -idf pdblist -out seekout -mod mafftash-split 2>>"seekerr" # seekres="$?" # else # echo "collecting homologs of the input sequences." 1>>"$progressfile" # perl "$prefix/seekquencer_premafft.pl" $seektarget -run thread -trd 2 -seqd uniref90 -blim 1000 -noin -seqf infile -out seekout -mod mafftash-split 2>>"seekerr" # seekres="$?" # fi # cat seekerr 1>>"$progressfile" # # if [ $seekres -ne "0" ]; then # echo "Error in SEEKQUENCER" 1>>"$progressfile" # exit 1; # fi # echo "Done." 1>>"$progressfile" # # if [ $enrichseq -eq 1 ]; then ## cat seekout.seq >> infile # if [ $anysymbol -eq 1 ]; then # "$prefix/replaceu" $seqtype -i seekout.seq -o $nseq >> infile # cat seekout.seq >> orig # else # "$prefix/replaceu" $seqtype -i seekout.seq | sed 's/_os_[0-9]*_oe_//' >> infile # fi # # fi # if [ $enrichstr -eq 1 ]; then # nseekstr=`wc -l < seekout.str` # if [ $nseekstr -gt 1 ]; then # cat seekout.str >> pdblist # pdblist="tsukaimasu" # fi # fi # fi if [ $seed != "x" ]; then mv infile infile2 if [ $anysymbol -eq 1 ]; then mv orig orig2 cat /dev/null > orig fi cat /dev/null > infile cat /dev/null > hat3.seed seedoffset=0 # echo "seednseq="$seednseq # echo "seedoffset="$seedoffset set $seednseq >> "$progressfile" # echo $# while [ $# -gt 1 ] do shift # echo "num="$# if [ $anysymbol -eq 1 ]; then cat seed$# >> orig "$prefix/replaceu" $seqtype -i seed$# -o $seedoffset > clean 2>>"$progressfile" || exit 1 mv clean seed$# fi "$prefix/multi2hat3s" -t $nseq -o $seedoffset -i seed$# >> infile 2>>"$progressfile" || exit 1 cat hat3 >> hat3.seed # echo "$1" seedoffset=`expr $seedoffset + $1` # echo "$1" # echo "seedoffset="$seedoffset done; # echo "seedoffset="$seedoffset if [ $anysymbol -eq 1 ]; then "$prefix/replaceu" $seqtype -i orig2 -o $seedoffset >> infile 2>>"$progressfile" || exit 1 # yarinaoshi cat orig2 >> orig else cat infile2 >> infile fi elif [ $seedtable != "x" ]; then cat _seedtablefile > hat3.seed elif [ $newdash -eq 1 ]; then seemstobe=`"$prefix/countlen" -i infile | awk '{print $6}'` if [ $seemstobe = "d" -a "x$seqtype" != "x-P" ]; then echo "" 1>>"$progressfile" echo "Error: This data seems to be nucleotide sequences." 1>>"$progressfile" echo "Add the --amino flag if this is surely protein." 1>>"$progressfile" echo "" 1>>"$progressfile" exit 1; fi if [ $anysymbol -eq 1 ]; then mv orig infile # replaceu wo mukouka fi # sed 's/-//g' infile > dashin # gap nozoku awk '{if(/^>/)print; else {gsub( /-/,"" ); print;}}' infile > dashin if [ ! -x "$prefix/dash_client" -o ! -x "$prefix/dash_client" ]; then echo "" 1>&2 echo "== Install DASH client =====================================================" 1>&2 echo "To use this feature, uncomment the following line in Makefile" 1>&2 echo "DASH_CLIENT = dash_client" 1>&2 echo "and re-compile the source." 1>&2 echo "Note that it requires the 'Go' compiler." 1>&2 echo "============================================================================" 1>&2 echo "" 1>&2 exit 1 fi echo "Calling DASH (https://sysimm.org/dash/)" 1>>"$progressfile" "$prefix/dash_client" -url "$dashserver" -i dashin -sequences dashsequences -hat3 hat3.seed 1>>"$progressfile" dashres="$?" if [ $dashres -ne "0" ]; then echo "Error in DASH" 1>>"$progressfile" echo "To enable this feature, compile with DASH_CLIENT=dash_client. Go compiler is necessary." 1>>"$progressfile" exit 1; fi if [ $exclude_ho -eq 1 ]; then # amari yokunai awk 'BEGIN{out=1} !/^>_addedbymaffte_/{if(out) print; out=1} /^>_addedbymaffte_/{out=0}' dashsequences | sed 's/>DASH_/>DASH|/' > ho_excluded mv ho_excluded dashsequences fi if [ "$mergetable" != "/dev/null" ]; then # 2020/Apr/30 ndash=`grep -c '>DASH_' dashsequences | head -1` # echo "ndash = " $ndash awk "{for( i=1;i<=NF;i++){if(0+\$i==0)break; printf( \"%d \", $ndash+\$i); } print \"\" }" _subalignmentstable > _subalignmentstableshifted mv _subalignmentstableshifted _subalignmentstable cp dashsequences dashsequences.bk awk "BEGIN{nout=0} {if(\$1~/^>/) nout++; if( nout <= $ndash ) print;}" dashsequences > infile2 cat infile >> infile2 cp infile2 dashsequences fi sed 's/>DASH_/>DASH|/' dashsequences > renamed mv renamed dashsequences echo "Done." 1>>"$progressfile" # cat hat3.seed seedoffset=`grep -c '^[>|=]' dashsequences | head -1 ` echo "# of structures = " 1>>"$progressfile" echo $seedoffset 1>>"$progressfile" if [ $anysymbol -eq 1 ]; then cat dashsequences >> orig "$prefix/replaceu" $seqtype -i dashsequences -o 0 > clean 2>>"$progressfile" || exit 1 mv clean infile # "$prefix/replaceu" $seqtype -i orig2 -o $seedoffset >> infile 2>>"$progressfile" || exit 1 # yarinaoshi # cat orig2 >> orig else cat dashsequences > infile # cat infile2 >> infile fi else cat /dev/null > hat3.seed fi # cat hat3.seed if [ $mccaskill -eq 1 ]; then "$prefix/mccaskillwrap" -s -C $numthreads -d "$prefix" -i infile > hat4 2>>"$progressfile" || exit 1 elif [ $dafs -eq 1 ]; then "$prefix/mccaskillwrap" -G -C $numthreads -d "$prefix" -i infile > hat4 2>>"$progressfile" || exit 1 elif [ $contrafold -eq 1 ]; then "$prefix/contrafoldwrap" -d "$prefix" -i infile > hat4 2>>"$progressfile" || exit 1 fi if [ $distance = "fasta" ]; then "$prefix/dndfast7" $swopt < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "blast" ]; then "$prefix/dndblast" < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "foldalignlocal" ]; then "$prefix/pairlocalalign" -C $numthreads $seqtype $foldalignopt $model -g $lexp -f $lgop -Q $spfactor -h $laof -H -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "foldalignglobal" ]; then "$prefix/pairlocalalign" -C $numthreads $seqtype $foldalignopt $model -g $pgexp -f $pggop -Q $spfactor -h $pgaof -H -o -global -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "slara" ]; then "$prefix/pairlocalalign" -C $numthreads -p $laraparams $seqtype $model -f $lgop -Q $spfactor -T -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "lara" ]; then "$prefix/pairlocalalign" -C $numthreads -p $laraparams $seqtype $model -f $lgop -Q $spfactor -B -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "scarna" ]; then # "$prefix/pairlocalalign" -C $numthreads $seqtype $model -f $pggop -Q $spfactor -s -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 # cat hat3.seed hat3 > hatx # mv hatx hat3 # "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 "$prefix/tbfast" _ -C $numthreads $seqtype $model -f $pggop -Q $spfactor -s -d "$prefix" _ -+ $iterate -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "dafs" ]; then "$prefix/pairlocalalign" -C $numthreads $seqtype $model -f $pggop -Q $spfactor -G -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "global" -a $memsavetree -eq 1 ]; then if [ "$mpiscript" != "/dev/null" ]; then sh $mpiscript "$prefix/nodepair_mpi" $lhlimit -u $unalignlevel $localparam $seqtype $model -g $pgexp -f $pggop -Q $spfactor -h $pgaof -A $usenaivepairscore $focusarg $treeinopt $treeoutopt -i infile > /dev/null 2>>"$progressfile" || exit 1 else "$prefix/nodepair" $lhlimit -u $unalignlevel $localparam -C $numthreads $seqtype $model -g $pgexp -f $pggop -Q $spfactor -h $pgaof -A $usenaivepairscore $focusarg $treeinopt $treeoutopt -i infile > /dev/null 2>>"$progressfile" || exit 1 fi echo 'nodepair' > _guidetree "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt -U $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg $focusarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "local" -a $memsavetree -eq 1 ]; then if [ "$mpiscript" != "/dev/null" ]; then sh $mpiscript "$prefix/nodepair_mpi" $lhlimit -u $unalignlevel $localparam $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -L $usenaivepairscore $focusarg $treeinopt $treeoutopt -i infile > /dev/null 2>>"$progressfile" || exit 1 else "$prefix/nodepair" $lhlimit -u $unalignlevel $localparam -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -L $usenaivepairscore $focusarg $treeinopt $treeoutopt -i infile > /dev/null 2>>"$progressfile" || exit 1 fi echo 'nodepair' > _guidetree "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt -U $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg $focusarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "localgenaf" -a $memsavetree -eq 1 ]; then "$prefix/nodepair" $lhlimit -u $unalignlevel $localparam -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -O $LGOP -E $LEXP -N $usenaivepairscore $focusarg $treeinopt $treeoutopt -i infile > /dev/null 2>>"$progressfile" || exit 1 echo 'nodepair' > _guidetree "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt -U $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg $focusarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "global" -a $memsavetree -eq 0 ]; then "$prefix/tbfast" _ -u $unalignlevel $localparam -C $numthreads $seqtype $model -g $pgexp -f $pggop -Q $spfactor -h $pgaof -A $usenaivepairscore $focusarg _ -+ $iterate -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg $focusarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "local" -a $memsavetree -eq 0 ]; then if [ $fragment -ne 0 ]; then "$prefix/pairlocalalign" $localparam $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -L $usenaivepairscore < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/addsingle" $codonposopt $codonscoreopt -Q 100 $legacygapopt -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1 else "$prefix/tbfast" _ -u $unalignlevel $localparam -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -L $usenaivepairscore $focusarg _ -+ $iterate -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg $focusarg < infile > /dev/null 2>>"$progressfile" || exit 1 fi elif [ $distance = "globalgenaf" ]; then "$prefix/pairlocalalign" -u $unalignlevel $localparam -C $numthreads $seqtype $model -g $pgexp -f $pggop -Q $spfactor -h $pgaof -O $GGOP -E $GEXP -K $usenaivepairscore < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "localgenaf" -a $memsavetree -eq 0 ]; then "$prefix/tbfast" _ -u $unalignlevel $localparam -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -O $LGOP -E $LEXP -N $usenaivepairscore $focusarg _ -+ $iterate -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg $focusarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "last" ]; then if [ $fragment -ne 0 ]; then "$prefix/pairlocalalign" $addarg -C $numthreads $seqtype $model -e $last_e -w $last_m -g $lexp -f $lgop -Q $spfactor -h $laof -R $last_subopt $last_once -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/addsingle" $codonposopt $codonscoreopt -Q 100 $legacygapopt -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1 else "$prefix/pairlocalalign" -C $numthreads $seqtype $model -e $last_e -w $last_m -g $lexp -f $lgop -Q $spfactor -h $laof -R $last_subopt $last_once -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 # addarg wo watasanai cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 fi elif [ $distance = "lastmulti" ]; then "$prefix/dndpre" $model -M 2 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof < infile > /dev/null 2>>"$progressfile" || exit 1 mv hat2 hat2i "$prefix/pairlocalalign" $addarg -C $numthreads $seqtype $model -e $last_e -w $last_m -g $lexp -f $lgop -Q $spfactor -h $laof -r $last_subopt $last_once -d "$prefix" < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hat2 hat2n mv hatx hat3 if [ $fragment -ne 0 ]; then "$prefix/addsingle" $codonposopt $codonscoreopt -Q 100 $legacygapopt -d -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1 else echo "Impossible" 1>&2 exit 1 fi elif [ $distance = "multi" ]; then "$prefix/dndpre" $model -M 2 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof $usenaivepairscore < infile > /dev/null 2>>"$progressfile" || exit 1 mv hat2 hat2i "$prefix/pairlocalalign" $localparam $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -Y $usenaivepairscore < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hat2 hat2n mv hatx hat3 if [ $fragment -ne 0 ]; then "$prefix/addsingle" $codonposopt $codonscoreopt -Q 100 $legacygapopt -d -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1 else echo "Impossible" 1>&2 exit 1 fi elif [ $distance = "hybrid" ]; then "$prefix/pairlocalalign" $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -Q $spfactor -h $laof -Y < infile > /dev/null 2>>"$progressfile" || exit 1 cat hat3.seed hat3 > hatx mv hatx hat3 "$prefix/disttbfast" -E 1 -s $unalignlevel $legacygapopt -W $tuplesize $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreads-$numthreadstb $memopt $weightopt $treeinopt $treeoutopt -T -y $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 if [ $fragment -ne 0 ]; then "$prefix/addsingle" $codonposopt $codonscoreopt -Q 100 $legacygapopt -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1 else "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 fi # elif [ $distance = "distonly" ]; then # "$prefix/pairlocalalign" -C $numthreads $seqtype $model -g $pgexp -f $pggop -Q $spfactor -h $pgaof -t < infile > /dev/null 2>>"$progressfile" || exit 1 # "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $outnum $addarg $add2ndhalfarg -C $numthreadstb $rnaopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 elif [ $distance = "parttree" ]; then "$prefix/splittbfast" $legacygapopt $algopt $splitopt $partorderopt $parttreeoutopt $memopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof -p $partsize -s $groupsize $treealg $outnum -i infile > pre 2>>"$progressfile" || exit 1 mv hat3.seed hat3 elif [ $distance = "ktuplesmulti" ]; then # "$prefix/dndpre" $model -M 1 $addarg -C $numthreads $seqtype $model -g $lexp -f $lgop -h $laof < infile > /dev/null 2>>"$progressfile" || exit 1 # mv hat2 hat2i # "$prefix/disttbfast" -E 1 -s $unalignlevel $legacygapopt -W $tuplesize $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreads-$numthreadstb $memopt $weightopt $treeinopt $treeoutopt -T -y $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $algopt $treealg $scoreoutarg < infile > /dev/null 2>>"$progressfile" || exit 1 # mv hat2 hat2n if [ $fragment -ne 0 ]; then "$prefix/addsingle" $codonposopt $codonscoreopt -Q 100 $legacygapopt -d -W $tuplesize -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1 # "$prefix/addsingle" -Q 100 $legacygapopt -d -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1 else echo "Impossible" 1>&2 exit 1 fi else if [ $fragment -ne 0 ]; then "$prefix/addsingle" $codonposopt $codonscoreopt -Q 100 $legacygapopt -W $tuplesize -O $outnum $addsinglearg $addarg $add2ndhalfarg -C $numthreads $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -f "-"$gop -h $aof $param_fft $localparam $algopt $treealg < infile > /dev/null 2>>"$progressfile" || exit 1 else "$prefix/disttbfast" -q $npickup -E $cycledisttbfast -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg -W $tuplesize $termgapopt $outnum $addarg $add2ndhalfarg -C $numthreads-$numthreadstb $memopt $weightopt $treeinopt $treeoutopt $distoutopt $seqtype $model -g $gexp -f "-"$gop -Q $spfactor -h $aof $param_fft $algopt $treealg $scoreoutarg $anchoropt -x $maxanchorseparation $oneiterationopt < infile > pre 2>>"$progressfile" || exit 1 mv hat3.seed hat3 fi fi while [ $cycletbfast -gt 1 ] do if [ $distance = "parttree" ]; then mv pre infile "$prefix/splittbfast" $legacygapopt -Z $algopt $splitopt $partorderopt $parttreeoutopt $memopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof -p $partsize -s $groupsize $treealg $outnum -i infile > pre 2>>"$progressfile" || exit 1 else "$prefix/tbfast" -W $minimumweight -V "-"$gopdist -s $unalignlevel $legacygapopt $mergearg $termgapopt $outnum -C $numthreadstb $rnaopt $weightopt $treeoutopt $distoutopt $memopt $seqtype $model -f "-"$gop -Q $spfactor -h $aof $param_fft $localparam $algopt -J $treealg $scoreoutarg < pre > /dev/null 2>>"$progressfile" || exit 1 # fragment>0 no baai, nanimoshinai # seed youchuui!! fi cycletbfast=`expr $cycletbfast - 1` done if [ $iterate -gt 0 ]; then if [ $distance = "ktuples" ]; then "$prefix/dndpre" $seqtype $model -M 2 -C $numthreads < pre > /dev/null 2>>"$progressfile" || exit 1 fi "$prefix/dvtditr" -W $minimumweight $bunkatsuopt -E $fixthreshold -s $unalignlevel $legacygapopt $mergearg $outnum -C $numthreadsit -t $randomseed $rnaoptit $memopt $scorecalcopt $localparam -z 50 $seqtype $model -f "-"$gop -Q $spfactor -h $aof -I $iterate $weightopt $treeinopt $algoptit $treealg -p $parallelizationstrategy $scoreoutarg -K $nadd < pre > /dev/null 2>>"$progressfile" || exit 1 fi if [ $coreout -eq 1 ]; then "$prefix/setcore" -w $corewin -i $corethr $coreext < pre > pre2 mv pre2 pre elif [ $anysymbol -eq 1 ]; then "$prefix/restoreu" $add2ndhalfarg -a pre -i orig > restored || exit 1 mv restored pre fi echo '' 1>>"$progressfile" if [ $mccaskill -eq 1 ]; then echo "RNA base pairing probaility was calculated by the McCaskill algorithm (1)" 1>>"$progressfile" echo "implemented in Vienna RNA package (2) and MXSCARNA (3), and then" 1>>"$progressfile" echo "incorporated in the iterative alignment process (4)." 1>>"$progressfile" echo "(1) McCaskill, 1990, Biopolymers 29:1105-1119" 1>>"$progressfile" echo "(2) Hofacker et al., 2002, J. Mol. Biol. 319:3724-3732" 1>>"$progressfile" echo "(3) Tabei et al., 2008, BMC Bioinformatics 9:33" 1>>"$progressfile" echo "(4) Katoh and Toh, 2008, BMC Bioinformatics 9:212" 1>>"$progressfile" echo "" 1>>"$progressfile" elif [ $contrafold -eq 1 ]; then echo "RNA base pairing probaility was calculated by the CONTRAfold algorithm (1)" 1>>"$progressfile" echo "and then incorporated in the iterative alignment process (4)." 1>>"$progressfile" echo "(1) Do et al., 2006, Bioinformatics 22:e90-98" 1>>"$progressfile" echo "(2) Katoh and Toh, 2008, BMC Bioinformatics 9:212" 1>>"$progressfile" echo "" 1>>"$progressfile" fi if [ $pdblist != "/dev/null" -o $ownlist != "/dev/null" ]; then echo "Input structures are decomposed into structural domains using" 1>>"$progressfile" echo "Protein Domain Parser (Alexandrov & Shindyalov 2003)." 1>>"$progressfile" echo "Domain pairs are aligned using the rash function in" 1>>"$progressfile" echo "the ASH structural alignment package (Standley et al. 2007)." 1>>"$progressfile" fi if [ $pdblist != "/dev/null" ]; then echo "Pre-computed alignments stored in " 1>>"$progressfile" echo "DASH (http://sysimm.ifrec.osaka-u.ac.jp/dash/) are used. " 1>>"$progressfile" fi if [ $distance = "fasta" -o $partdist = "fasta" ]; then echo "Pairwise alignments were computed by FASTA" 1>>"$progressfile" echo "(Pearson & Lipman, 1988, PNAS 85:2444-2448)" 1>>"$progressfile" fi if [ $distance = "blast" ]; then echo "Pairwise alignments were computed by BLAST" 1>>"$progressfile" echo "(Altschul et al., 1997, NAR 25:3389-3402)" 1>>"$progressfile" fi if [ $distance = "last" -o $distance = "lastmulti" ]; then echo "Pairwise alignments were computed by LAST" 1>>"$progressfile" echo "http://last.cbrc.jp/" 1>>"$progressfile" echo "Kielbasa, Wan, Sato, Horton, Frith 2011 Genome Res. 21:487" 1>>"$progressfile" fi if [ $distance = "scarna" ]; then echo "Pairwise alignments were computed by MXSCARNA" 1>>"$progressfile" echo "(Tabei et al., 2008, BMC Bioinformatics 9:33)." 1>>"$progressfile" fi if [ $distance = "dafs" ]; then echo "Pairwise alignments were computed by DAFS" 1>>"$progressfile" echo "(Sato et al., 2012,,,,)." 1>>"$progressfile" fi if [ $distance = "lara" -o $distance = "slara" ]; then echo "Pairwise alignments were computed by LaRA" 1>>"$progressfile" echo "(Bauer et al., 2007, BMC Bioinformatics 8:271)." 1>>"$progressfile" fi if [ $distance = "foldalignlocal" ]; then echo "Pairwise alignments were computed by FOLDALIGN (local)" 1>>"$progressfile" echo "(Havgaard et al., 2007, PLoS Computational Biology 3:e193)." 1>>"$progressfile" fi if [ $distance = "foldalignglobal" ]; then echo "Pairwise alignments were computed by FOLDALIGN (global)" 1>>"$progressfile" echo "(Havgaard et al., 2007, PLoS Computational Biology 3:e193)." 1>>"$progressfile" fi # printf "\n" 1>>"$progressfile" echo 'Strategy:' 1>>"$progressfile" printf ' '$strategy 1>>"$progressfile" echo ' ('$performance')' 1>>"$progressfile" echo ' '$explanation 1>>"$progressfile" echo '' 1>>"$progressfile" echo "If unsure which option to use, try 'mafft --auto input > output'." 1>>"$progressfile" echo "For more information, see 'mafft --help', 'mafft --man' and the mafft page." 1>>"$progressfile" echo "" 1>>"$progressfile" echo "The default gap scoring scheme has been changed in version 7.110 (2013 Oct)." 1>>"$progressfile" echo "It tends to insert more gaps into gap-rich regions than previous versions." 1>>"$progressfile" echo "To disable this change, add the --leavegappyregion option." 1>>"$progressfile" # echo "If long gaps are expected, try 'mafft --ep 0.0 --auto input > output'." 1>>"$progressfile" # echo "If the possibility of long gaps can be excluded, add '--ep 0.123'." 1>>"$progressfile" if [ $distance = "localgenaf" -o $distance = "globalgenaf" ]; then echo "" 1>>"$progressfile" if [ $oldgenafparam -eq 1 ]; then echo "Obsolete parameters used for this calculation." 1>>"$progressfile" echo "Also try the new parameters for E-INS-i, by not specifying --oldgenafpair." 1>>"$progressfile" else echo "Parameters for the E-INS-i option have been changed in version 7.243 (2015 Jun)." 1>>"$progressfile" echo "To switch to the old parameters, use --oldgenafpair, instead of --genafpair." 1>>"$progressfile" fi fi echo '' 1>>"$progressfile" if [ $pdblist != "/dev/null" -o $ownlist != "/dev/null" ]; then # cat dasherr >>"$progressfile" echo '' >>"$progressfile" fi popd > /dev/null if [ "$outputopt" != "-f -l -1" -o "$windows" = "yes" ]; then # Windows deha kaigyo code wo f2cl de modosu. # ln -s "$TMPFILE/order" _order$$ # f2cl ga space ari filename ni taiou shiteinainode # cp "$TMPFILE/order" _order$$ # ln -s no error wo sakeru if [ "$outputfile" = "" ]; then "$prefix/f2cl" -n $namelength $outputopt < "$TMPFILE/pre" 2>"/dev/null" || exit 1 else "$prefix/f2cl" -n $namelength $outputopt < "$TMPFILE/pre" > "$outputfile" 2>"/dev/null" || exit 1 fi # rm _order$$ else if [ "$outputfile" = "" ]; then cat < "$TMPFILE/pre" || exit 1 else cat < "$TMPFILE/pre" > "$outputfile" || exit 1 fi fi if [ $treeout -eq 1 ]; then cp "$TMPFILE/infile.tree" "$infilename.tree" fi if [ -s "$TMPFILE/GuideTree" ]; then # --merge no toki dake cp "$TMPFILE/GuideTree" . fi if [ $distout -eq 1 ]; then cp "$TMPFILE/hat2" "$infilename.hat2" fi if [ $npickup -ne 0 ]; then cp "$TMPFILE/notused" "$infilename.notused" fi if [ -s "$TMPFILE/_deletemap" ]; then if [ "$mapoutfile" = "/dev/null" ]; then cp "$TMPFILE/_deletemap" "$addfile.map" else cp "$TMPFILE/_deletemap" "$mapoutfile" fi fi exit 0; fi prog="awk" #tmpawk=`which nawk 2>/dev/null | awk '{print $1}'` #if [ -x "$tmpawk" ]; then # prog="$tmpawk" #fi # #tmpawk=`which gawk 2>/dev/null | awk '{print $1}'` #if [ -x "$tmpawk" ]; then # prog="$tmpawk" #fi # 2017/May/12, Windows no gawk wo sakeru tame #echo "prog="$prog 1>&2 umask 077 ( $prog ' BEGIN { prefix = ENVIRON["prefix"]; version = ENVIRON["version"]; myself = ENVIRON["myself"]; pwd = ENVIRON["mafft_working_dir"]; # from mafft.bat on windows if( pwd == "" ) pwd = ENVIRON["PWD"]; while( 1 ) { options = "" printf( "\n" ) > "/dev/tty"; printf( "---------------------------------------------------------------------\n" ) > "/dev/tty"; printf( "\n" ) > "/dev/tty"; printf( " MAFFT %s\n", version ) > "/dev/tty"; printf( "\n" ) > "/dev/tty"; # printf( " Copyright (c) 2002- Kazutaka Katoh\n" ) > "/dev/tty"; printf( " MBE 30:772-780 (2013), NAR 30:3059-3066 (2002)\n" ) > "/dev/tty"; printf( " https://mafft.cbrc.jp/alignment/software/\n" ) > "/dev/tty"; printf( "---------------------------------------------------------------------\n" ) > "/dev/tty"; printf( "\n" ) > "/dev/tty"; while( 1 ) { printf( "\n" ) > "/dev/tty"; printf( "Input file? (FASTA format; Folder=%s)\n@ ", pwd ) > "/dev/tty"; res = getline < "/dev/tty"; close( "/dev/tty" ) if( res == 0 || NF == 0 ) continue; infile = sprintf( "%s", $0 ); res = getline < infile; close( infile ); if( res == -1 ) { printf( "%s: No such file.\n\n", infile ) > "/dev/tty"; printf( "Filename extension (eg., .txt) must be typed, if any.\n\n" ) > "/dev/tty"; } else if( res == 0 ) printf( "%s: Empty.\n", infile ) > "/dev/tty"; else { printf( "OK. infile = %s\n\n", infile ) > "/dev/tty"; break; } } nseq = 0; while( 1 ) { printf( "\n" ) > "/dev/tty"; printf( "Output file?\n" ) > "/dev/tty"; printf( "@ " ) > "/dev/tty"; res = getline < "/dev/tty"; close( "/dev/tty" ); if( res == 0 || NF == 0 ) continue; else { outfile = sprintf( "%s", $0 ); printf( "OK. outfile = %s\n\n", outfile ) > "/dev/tty"; break; } } while( 1 ) { outargs = ""; printf( "\n" ) > "/dev/tty"; printf( "Output format?\n" ) > "/dev/tty"; printf( " 1. Clustal format / Sorted\n" ) > "/dev/tty"; printf( " 2. Clustal format / Input order\n" ) > "/dev/tty"; printf( " 3. Fasta format / Sorted\n" ) > "/dev/tty"; printf( " 4. Fasta format / Input order\n" ) > "/dev/tty"; printf( " 5. Phylip format / Sorted\n" ) > "/dev/tty"; printf( " 6. Phylip format / Input order\n" ) > "/dev/tty"; printf( "@ " ) > "/dev/tty"; res = getline < "/dev/tty"; close( "/dev/tty" ); # printf( "res=%d, NF=%d\n", res, NF ); resnum = 0 + $1; # printf( "resnum=%d\n", resnum ); if( resnum < 1 || 6 < resnum ) continue; else { if( resnum == 1 ) outargs = "--clustalout --reorder"; else if( resnum == 2 ) outargs = "--clustalout --inputorder"; else if( resnum == 3 ) outargs = "--reorder"; else if( resnum == 4 ) outargs = "--inputorder"; else if( resnum == 5 ) outargs = "--phylipout --reorder"; else if( resnum == 6 ) outargs = "--phylipout --inputorder"; else continue; printf( "OK. arguments = %s\n\n", outargs ) > "/dev/tty"; break; } } while( 1 ) { arguments = ""; printf( "\n" ) > "/dev/tty"; printf( "Strategy?\n" ) > "/dev/tty"; printf( " 1. --auto\n" ) > "/dev/tty"; printf( " 2. FFT-NS-1 (fast)\n" ) > "/dev/tty"; printf( " 3. FFT-NS-2 (default)\n" ) > "/dev/tty"; printf( " 4. G-INS-i (accurate)\n" ) > "/dev/tty"; printf( " 5. L-INS-i (accurate)\n" ) > "/dev/tty"; printf( " 6. E-INS-i (accurate)\n" ) > "/dev/tty"; printf( "@ " ) > "/dev/tty"; res = getline < "/dev/tty"; close( "/dev/tty" ); # printf( "res=%d, NF=%d\n", res, NF ); resnum = 0 + $1; # printf( "resnum=%d\n", resnum ); if( resnum < 1 || 6 < resnum ) continue; else { if( resnum == 1 ) arguments = "--auto"; else if( resnum == 2 ) arguments = "--retree 1"; else if( resnum == 3 ) arguments = "--retree 2"; else if( resnum == 4 ) arguments = "--globalpair --maxiterate 16"; else if( resnum == 5 ) arguments = "--localpair --maxiterate 16"; else if( resnum == 6 ) arguments = "--genafpair --maxiterate 16"; else arguments = sprintf( "%s", $0 ); printf( "OK. arguments = %s %s\n\n", arguments, outargs ) > "/dev/tty"; break; } } while( 1 ) { printf( "\n" ) > "/dev/tty"; printf( "Additional arguments? (--ep # --op # --kappa # etc)\n" ) > "/dev/tty"; printf( "@ " ) > "/dev/tty"; res = getline < "/dev/tty"; close( "/dev/tty" ); if( res == 0 || NF == 0 ) { break; } else { addargs = sprintf( "%s", $0 ); printf( "OK. arguments = %s %s %s\n\n", addargs, arguments, outargs ) > "/dev/tty"; break; } } arguments = sprintf( "%s %s %s", addargs, arguments, outargs ); print "" command = sprintf( "\"%s\" %s \"%s\" > \"%s\"", myself, arguments, infile, outfile ); gsub( /\\/, "/", command ); printf( "command=\n%s\n", command ) > "/dev/tty"; while( 1 ) { go = 0; printf( "Type Y or just enter to run this command.\n" ) > "/dev/tty"; printf( "@ " ) > "/dev/tty"; res = getline < "/dev/tty"; close( "/dev/tty" ); if( res == 0 ) continue; else if( NF == 0 || $0 ~ /^[Yy]/ ) { go=1; break; } else break; } if( go ) break; printf( "\n" ) > "/dev/tty"; printf( "\n" ) > "/dev/tty"; } system( command ); command = sprintf( "more \"%s\"", outfile ); system( command ); printf( "Press Enter to exit." ) > "/dev/tty"; res = getline < "/dev/tty"; } ' ) exit 0;