source: tags/arb_5.1/SH/arb_raxml

Last change on this file was 6064, checked in by westram, 15 years ago
  • added RAxML bug to help
  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 6.3 KB
Line 
1#!/bin/bash -x
2# renames output to 'treefile'
3
4usage() {
5    arb_message "arb_raxml called with wrong parameters (look @ console for errors)"
6    echo "Usage:"
7    echo "   arb_raxml 'DNA'     SEQFILE WEIGHTS TREE CONSTRAINT RANDOMSTART OPTIMIZEPARAMETERS SEARCH INITIALREARRANGEMENT SEED NUMBEROFRUNS TAKETREES [import|consense] RATEMODELNUC
8     NUMCATEGORIES"
9    echo "   arb_raxml 'PROTEIN' SEQFILE WEIGHTS TREE CONSTRAINT RANDOMSTART OPTIMIZEPARAMETERS SEARCH INITIALREARRANGEMENT SEED NUMBEROFRUNS TAKETREES [import|consense] RATEMODELPROT MATRIXNAME"
10    exit 1
11}
12
13if [ -z "${13}" ]; then
14    usage
15else
16    # parameters common for DNA and PROTEIN
17    DATA=$1 ; shift
18    SEQFILE=$1 ; shift
19    WEIGHTS=$1 ; shift
20    TREE=$1 ; shift
21    CONSTRAINT=$1 ; shift
22
23    RANDOMSTART=$1 ; shift
24    OPTIMIZEPARAMETERS=$1 ; shift
25    SEARCH=$1 ; shift
26    INITIALREARRANGEMENT=$1 ; shift
27    SEED=$1 ; shift
28
29    NUMBEROFRUNS=$1 ; shift
30    TAKETREES=$1 ; shift
31    CONSENSE=$1 ; shift
32
33    if [ -z "$CONSENSE" ]; then
34            usage
35    fi
36
37    if [ "$DATA" == "DNA" ]; then
38        if [ -z "$1" ]; then
39            usage
40        fi
41        RATEMODELNUC=$1
42        NUMCATEGORIES=$2
43    else
44        if [ "$DATA" == "PROTEIN" ]; then
45            # if [ -z "$2" ]; then
46                # usage
47            # fi
48            RATEMODELPROT=$1
49            MATRIXNAME=$2
50        else
51            arb_message "Unknown datatype '$DATA'"
52            exit 1
53        fi
54    fi
55
56    if [ -z "$SEED" ]; then
57        # seconds since 1970
58        SEED=`date +%s`
59    fi
60
61    # check inputfiles
62    if [ \! -s $SEQFILE ]; then
63        arb_message "Missing or empty sequence file '$SEQFILE'"
64        exit 1
65    fi
66    if [ \! -s $WEIGHTS ]; then
67        arb_message "Missing or empty weights file '$WEIGHTS'"
68        exit 1
69    fi
70
71    # generate tree file
72    TREEPARAMS=
73    HAVEINPUTTREE=0
74    if [ "$TREE" != "????" -a ! -z "$TREE" ]; then
75        CMD="arb_export_tree $TREE"
76        echo "$CMD"
77        echo `$CMD > treefile.in`
78        if [ \! -s treefile.in ]; then
79            arb_message "Couldn't export tree '$TREE'"
80            exit 1
81        fi
82        if [ "$CONSTRAINT" == "1" ]; then
83            TREEPARAMS="-r treefile.in"
84        else
85            TREEPARAMS="-t treefile.in"
86        fi
87        HAVEINPUTTREE=1
88    else
89        if [ "$RANDOMSTART" == "1" ]; then
90            TREEPARAMS=-d
91        fi
92        # otherwise use default parsimony tree
93    fi
94
95    # model dependent parameters
96    DEPENDENT_PARAMS=
97    if [ "$OPTIMIZEPARAMETERS" == "1" ]; then
98        if [ "$DATA" == "DNA" ]; then
99            case "$RATEMODELNUC" in
100                GTRMIX | GTRGAMMA )
101                    DEPENDENT_PARAMS="$DEPENDENT_PARAMS -k"
102                    ;;
103                * )
104                    arb_message "Ignored 'Optimize branches/parameters'\n(only usable with GTRMIX or GTRGAMMA)"
105                    ;;
106            esac
107        else
108            case "$RATEMODELPROT" in
109                "PROTMIX" | "PROTGAMMA" )
110                    DEPENDENT_PARAMS="$DEPENDENT_PARAMS -k"
111                    ;;
112                * )
113                    arb_message "Ignored 'Optimize branches/parameters'\n(only usable with PROTMIX or PROTGAMMA)"
114                    ;;
115            esac
116        fi
117    fi
118   
119    if [ "$DATA" == "DNA" ]; then
120        if [ "$RATEMODELNUC" == "GTRCAT" ]; then
121            DEPENDENT_PARAMS="$DEPENDENT_PARAMS -c $NUMCATEGORIES"
122        fi
123    fi
124
125    # search algorithm
126    NEEDINPUTTREE=0
127    USESINPUTTREE=0
128    NEEDGAMMA=0
129    GENERATEDTREES=$NUMBEROFRUNS
130
131    case "$SEARCH" in
132        "e" )
133            NEEDINPUTTREE=1
134            NEEDGAMMA=1
135            ;;
136        "t" )
137            NEEDINPUTTREE=1
138            ;;
139        "d" ) # modes that use (but don't expect) an inputtree
140            USESINPUTTREE=1
141            ;;
142
143        "a" ) # rapid bootstrap analysis
144            DEPENDENT_PARAMS="$DEPENDENT_PARAMS -x $SEED"
145            GENERATEDTREES=1
146            if [ "$TAKETREES" != "1" ]; then
147                arb_message "'rapid bootstrap analysis' only creates 1 tree\n(can't select $TAKETREES trees, falling back to 1)"
148                TAKETREES=1
149            fi
150            ;;
151        "p" ) # add new sequences (MP)
152            NEEDINPUTTREE=1
153            GENERATEDTREES=1
154            if [ "$NUMBEROFRUNS" != "1" ]; then
155                arb_message "Ignoring number of runs (only performing 1 run)"
156                NUMBEROFRUNS=1
157            fi
158            TAKETREES=1
159            ;;
160    esac
161
162    if [ "$NEEDINPUTTREE" != "$HAVEINPUTTREE" ]; then
163        if [ "$NEEDINPUTTREE" == "1" ]; then
164            arb_message "Please select an input tree"
165            exit 1;
166        else
167            if [ "$USESINPUTTREE" == "0" ]; then
168                arb_message "Given input tree ignored"
169                # dont use tree:
170                TREEPARAMS=
171            fi
172        fi
173    fi
174
175    if [ "$NEEDGAMMA" == "1" ]; then
176        if [ "$DATA" == "DNA" ]; then
177            case "$RATEMODELNUC" in
178                "GTRGAMMA" | "GTRGAMMAI" )
179                    ;;
180                * )
181                    arb_message "Please choose GAMMA substitution model"
182                    exit 1
183                    ;;
184            esac
185        else
186            case "$RATEMODELPROT" in
187                "PROTGAMMA" | "PROTGAMMAI" )
188                    ;;
189                * )
190                    arb_message "Please choose GAMMA rate model"
191                    exit 1
192                    ;;
193            esac
194        fi
195    fi
196
197    MODELPARAMS=
198    if [ "$DATA" == "DNA" ]; then
199        MODELPARAMS="-m $RATEMODELNUC"
200    else
201        MODELPARAMS="-m $RATEMODELPROT$MATRIXNAME"
202    fi
203
204    # build parameters for raxml
205    RAXMLPARAMS="$MODELPARAMS -f $SEARCH"
206    if [ ! -z "$INITIALREARRANGEMENT" ]; then
207        RAXMLPARAMS="$RAXMLPARAMS -i $INITIALREARRANGEMENT"
208        # otherwise autodetect by RAxML
209    fi
210    if [ "$NUMBEROFRUNS" != "1" ]; then
211        RAXMLPARAMS="$RAXMLPARAMS -# $NUMBEROFRUNS"
212    fi
213    RAXMLPARAMS="$RAXMLPARAMS -s $SEQFILE -a $WEIGHTS $TREEPARAMS $DEPENDENT_PARAMS -n ThisRun"
214
215    echo "------------------------------------------"
216    echo "Calling raxmlHPC $RAXMLPARAMS"
217    time raxmlHPC $RAXMLPARAMS
218    echo "------------------------------------------"
219
220    # ../PERL_SCRIPTS/ARBTOOLS/raxml2arb.pl
221    raxml2arb.pl ThisRun "$GENERATEDTREES" "$TAKETREES" "$CONSENSE"
222fi
Note: See TracBrowser for help on using the repository browser.