0
|
1 #!/bin/bash
|
|
2
|
|
3 set -x
|
|
4 set -eu
|
|
5
|
|
6 start_dir=$(pwd)
|
|
7 ROARY_LIB_DIR="${start_dir}/lib"
|
|
8 ROARY_BIN_DIR="${start_dir}/bin"
|
|
9
|
|
10 PARALLEL_VERSION=${PARALLEL_VERSION:-"20160722"}
|
|
11 PARALLEL_DOWNLOAD_FILENAME="parallel-${PARALLEL_VERSION}.tar.bz2"
|
|
12 PARALLEL_URL="http://ftp.gnu.org/gnu/parallel/${PARALLEL_DOWNLOAD_FILENAME}"
|
|
13
|
|
14 BEDTOOLS_VERSION="2.27.1"
|
|
15 BEDTOOLS_DOWNLOAD_FILENAME="bedtools-${BEDTOOLS_VERSION}.tar.gz"
|
|
16 BEDTOOLS_URL="https://github.com/arq5x/bedtools2/releases/download/v${BEDTOOLS_VERSION}/${BEDTOOLS_DOWNLOAD_FILENAME}"
|
|
17
|
|
18 CDHIT_SHORT_VERSION="4.6.8"
|
|
19 CDHIT_LONG_VERSION="4.6.8-2017-0621"
|
|
20 CDHIT_DOWNLOAD_FILENAME="cd-hit-${CDHIT_SHORT_VERSION}.tar.gz"
|
|
21 CDHIT_URL="https://github.com/weizhongli/cdhit/releases/download/V${CDHIT_SHORT_VERSION}/cd-hit-v${CDHIT_LONG_VERSION}-source.tar.gz"
|
|
22
|
|
23 PRANK_VERSION="0.140603"
|
|
24 PRANK_DOWNLOAD_FILENAME="prank-msa-master.tar.gz"
|
|
25 PRANK_URL="https://github.com/ariloytynoja/prank-msa/archive/master.tar.gz"
|
|
26
|
|
27 BLAST_VERSION="2.6.0"
|
|
28 BLAST_DOWNLOAD_FILENAME="ncbi-blast-${BLAST_VERSION}+-x64-linux.tar.gz"
|
|
29 BLAST_URL="ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/${BLAST_VERSION}/${BLAST_DOWNLOAD_FILENAME}"
|
|
30
|
|
31 MCL_VERSION="14-137"
|
|
32 MCL_DOWNLOAD_FILENAME="mcl-${MCL_VERSION}.tar.gz"
|
|
33 MCL_URL="http://micans.org/mcl/src/mcl-${MCL_VERSION}.tar.gz"
|
|
34
|
|
35 FASTTREE_VERSION="2.1.10"
|
|
36 FASTTREE_DOWNLOAD_FILENAME="FastTree-${FASTTREE_VERSION}.c"
|
|
37 FASTTREE_URL="http://microbesonline.org/fasttree/FastTree-${FASTTREE_VERSION}.c"
|
|
38
|
|
39 MAFFT_VERSION="7.310"
|
|
40 MAFFT_DOWNLOAD_FILENAME="mafft-${MAFFT_VERSION}-without-extensions-src.tgz"
|
|
41 MAFFT_URL="http://mafft.cbrc.jp/alignment/software/${MAFFT_DOWNLOAD_FILENAME}"
|
|
42
|
|
43 # Make an install location
|
|
44 if [ ! -d 'build' ]; then
|
|
45 mkdir build
|
|
46 fi
|
|
47 cd build
|
|
48 build_dir=$(pwd)
|
|
49
|
|
50 PARALLEL_DOWNLOAD_PATH="$(pwd)/${PARALLEL_DOWNLOAD_FILENAME}"
|
|
51 BEDTOOLS_DOWNLOAD_PATH="$(pwd)/${BEDTOOLS_DOWNLOAD_FILENAME}"
|
|
52 CDHIT_DOWNLOAD_PATH="$(pwd)/${CDHIT_DOWNLOAD_FILENAME}"
|
|
53 PRANK_DOWNLOAD_PATH="$(pwd)/${PRANK_DOWNLOAD_FILENAME}"
|
|
54 BLAST_DOWNLOAD_PATH="$(pwd)/${BLAST_DOWNLOAD_FILENAME}"
|
|
55 MCL_DOWNLOAD_PATH="$(pwd)/${MCL_DOWNLOAD_FILENAME}"
|
|
56 FASTTREE_DOWNLOAD_PATH="$(pwd)/${FASTTREE_DOWNLOAD_FILENAME}"
|
|
57 MAFFT_DOWNLOAD_PATH="$(pwd)/${MAFFT_DOWNLOAD_FILENAME}"
|
|
58
|
|
59 PARALLEL_BUILD_DIR="$(pwd)/parallel-${PARALLEL_VERSION}"
|
|
60 BEDTOOLS_BUILD_DIR="$(pwd)/bedtools2"
|
|
61 CDHIT_BUILD_DIR="$(pwd)/cd-hit-v${CDHIT_LONG_VERSION}"
|
|
62 PRANK_BUILD_DIR="$(pwd)/prank-msa-master"
|
|
63 BLAST_BUILD_DIR="$(pwd)/ncbi-blast-${BLAST_VERSION}+"
|
|
64 MCL_BUILD_DIR="$(pwd)/mcl-${MCL_VERSION}"
|
|
65 FASTTREE_BUILD_DIR="$(pwd)/fasttree"
|
|
66 MAFFT_BUILD_DIR="$(pwd)/mafft-${MAFFT_VERSION}-without-extensions"
|
|
67
|
|
68
|
|
69 download () {
|
|
70 download_url=$1
|
|
71 download_path=$2
|
|
72 cd $build_dir
|
|
73 if [ -e "$download_path" ]; then
|
|
74 echo "Skipping download of $download_url, $download_path already exists"
|
|
75 else
|
|
76 echo "Downloading $download_url to $download_path"
|
|
77 wget $download_url -O $download_path
|
|
78 pwd
|
|
79 fi
|
|
80 }
|
|
81
|
|
82 untar () {
|
|
83 to_untar=$1
|
|
84 expected_directory=$2
|
|
85 if [ -d "$expected_directory" ]; then
|
|
86 rm -rf $expected_directory
|
|
87 fi
|
|
88 echo "Untarring $to_untar to $expected_directory"
|
|
89 cd $build_dir
|
|
90 tar xzvf $to_untar
|
|
91 rm $to_untar
|
|
92 pwd
|
|
93 }
|
|
94
|
|
95 if [ -e "$BLAST_BUILD_DIR/bin/blastp" ]; then
|
|
96 echo "blast already untarred to $BLAST_BUILD_DIR, skipping"
|
|
97 else
|
|
98 download $BLAST_URL $BLAST_DOWNLOAD_PATH
|
|
99 untar $BLAST_DOWNLOAD_PATH $BLAST_BUILD_DIR
|
|
100 fi
|
|
101
|
|
102 # Build parallel
|
|
103 if [ -e "$PARALLEL_BUILD_DIR/src/parallel" ]; then
|
|
104 echo "Parallel already built, skipping"
|
|
105 else
|
|
106 download $PARALLEL_URL $PARALLEL_DOWNLOAD_PATH
|
|
107 echo "Untarring parallel to $PARALLEL_BUILD_DIR"
|
|
108 tar xjvf $PARALLEL_DOWNLOAD_PATH
|
|
109 echo "Building parallel"
|
|
110 cd $PARALLEL_BUILD_DIR
|
|
111 ./configure
|
|
112 make
|
|
113 fi
|
|
114
|
|
115 # Build bedtools
|
|
116 if [ -e "$BEDTOOLS_BUILD_DIR/bin/bedtools" ]; then
|
|
117 echo "Bedtools already built, skipping"
|
|
118 else
|
|
119
|
|
120 download $BEDTOOLS_URL $BEDTOOLS_DOWNLOAD_PATH
|
|
121 untar $BEDTOOLS_DOWNLOAD_PATH $BEDTOOLS_BUILD_DIR
|
|
122 cd $BEDTOOLS_BUILD_DIR
|
|
123 echo "Building bedtools"
|
|
124 ls -alrt
|
|
125 make
|
|
126 fi
|
|
127
|
|
128 # Build cd-hit
|
|
129 if [ -e "$CDHIT_BUILD_DIR/cd-hit" ]; then
|
|
130 echo "cd-hit already built, skipping"
|
|
131 else
|
|
132 download $CDHIT_URL $CDHIT_DOWNLOAD_PATH
|
|
133 untar $CDHIT_DOWNLOAD_PATH $CDHIT_BUILD_DIR
|
|
134 echo "Building cd-hit"
|
|
135 cd $CDHIT_BUILD_DIR
|
|
136 make
|
|
137 fi
|
|
138
|
|
139 # Build prank
|
|
140 if [ -e "$PRANK_BUILD_DIR/src/prank" ]; then
|
|
141 echo "prank already built, skipping"
|
|
142 else
|
|
143 download $PRANK_URL $PRANK_DOWNLOAD_PATH
|
|
144 untar $PRANK_DOWNLOAD_PATH $PRANK_BUILD_DIR
|
|
145 echo "Building prank"
|
|
146 cd $PRANK_BUILD_DIR
|
|
147 cd src
|
|
148 make
|
|
149 fi
|
|
150
|
|
151 # Build MCL
|
|
152 if [ -e "$MCL_BUILD_DIR/src/shmcl/mcl" ]; then
|
|
153 echo "MCL already built, skipping"
|
|
154 else
|
|
155 download $MCL_URL $MCL_DOWNLOAD_PATH
|
|
156 untar $MCL_DOWNLOAD_PATH $MCL_BUILD_DIR
|
|
157 echo "Building MCL"
|
|
158 cd $MCL_BUILD_DIR
|
|
159 ./configure
|
|
160 make
|
|
161 fi
|
|
162
|
|
163 # Build FastTree
|
|
164 if [ -e "$FASTTREE_BUILD_DIR/FastTree" ]; then
|
|
165 echo "FastTree already built, skipping"
|
|
166 else
|
|
167 download $FASTTREE_URL $FASTTREE_DOWNLOAD_PATH
|
|
168 mkdir -p $FASTTREE_BUILD_DIR
|
|
169 mv $FASTTREE_DOWNLOAD_FILENAME $FASTTREE_BUILD_DIR
|
|
170 cd $FASTTREE_BUILD_DIR
|
|
171 echo "Building FastTree"
|
|
172 gcc -o FastTree FastTree-${FASTTREE_VERSION}.c -lm
|
|
173 fi
|
|
174
|
|
175 export MAFFT_INSTALL_DIR="${MAFFT_BUILD_DIR}/build"
|
|
176 # Build MAFFT
|
|
177 if [ -e "$MAFFT_BUILD_DIR/build/mafft" ]; then
|
|
178 echo "MAFFT already built, skipping"
|
|
179 else
|
|
180 download $MAFFT_URL $MAFFT_DOWNLOAD_PATH
|
|
181 untar $MAFFT_DOWNLOAD_PATH $MAFFT_BUILD_DIR
|
|
182 echo "Building MAFFT"
|
|
183 cd $MAFFT_BUILD_DIR
|
|
184 mkdir -p $MAFFT_INSTALL_DIR
|
|
185 cd core
|
|
186 sed -i '1s!.*!PREFIX = $(MAFFT_INSTALL_DIR)!' Makefile
|
|
187 make
|
|
188 make install
|
|
189 fi
|
|
190
|
|
191
|
|
192 # Add things to PATH
|
|
193 update_path () {
|
|
194 new_dir=$1
|
|
195 if [[ ! "$PATH" =~ (^|:)"${new_dir}"(:|$) ]]; then
|
|
196 echo "export PATH=${new_dir}:${PATH}"
|
|
197 export PATH=${new_dir}:${PATH}
|
|
198 fi
|
|
199 }
|
|
200
|
|
201 export PATH
|
|
202 PARALLEL_BIN_DIR="$PARALLEL_BUILD_DIR/src"
|
|
203 update_path $PARALLEL_BIN_DIR
|
|
204 BEDTOOLS_BIN_DIR="$BEDTOOLS_BUILD_DIR/bin"
|
|
205 update_path $BEDTOOLS_BIN_DIR
|
|
206 CDHIT_BIN_DIR="$CDHIT_BUILD_DIR"
|
|
207 update_path $CDHIT_BIN_DIR
|
|
208 PRANK_BIN_DIR="$PRANK_BUILD_DIR/src"
|
|
209 update_path $PRANK_BIN_DIR
|
|
210
|
|
211 BLAST_BIN_DIR="$BLAST_BUILD_DIR/bin"
|
|
212 update_path $BLAST_BIN_DIR
|
|
213
|
|
214 MCL_BIN_DIR="$MCL_BUILD_DIR/src/shmcl"
|
|
215 update_path $MCL_BIN_DIR
|
|
216 MCL_BIN_DIR_2="$MCL_BUILD_DIR/src/alien/oxygen/src"
|
|
217 update_path $MCL_BIN_DIR_2
|
|
218
|
|
219 FASTTREE_BIN_DIR=$FASTTREE_BUILD_DIR
|
|
220 update_path $FASTTREE_BIN_DIR
|
|
221 MAFFT_BIN_DIR="$MAFFT_INSTALL_DIR/bin"
|
|
222 update_path $MAFFT_BIN_DIR
|
|
223
|
|
224 update_perl_path () {
|
|
225 new_dir=$1
|
|
226 PERL5LIB=${PERL5LIB-$new_dir}
|
|
227 if [[ ! "$PERL5LIB" =~ (^|:)"${new_dir}"(:|$) ]]; then
|
|
228 echo "export PERL5LIB=${new_dir}:${PERL5LIB}"
|
|
229 export PERL5LIB=${new_dir}:${PERL5LIB}
|
|
230 fi
|
|
231 }
|
|
232
|
|
233 BEDTOOLS_LIB_DIR="$BEDTOOLS_BUILD_DIR/lib"
|
|
234 update_perl_path $BEDTOOLS_LIB_DIR
|
|
235
|
|
236 cd $start_dir
|
|
237 cpanm --notest Dist::Zilla
|
|
238 dzil authordeps --missing | cpanm --notest
|
|
239 dzil listdeps --missing | cpanm --notest
|
|
240
|
|
241 cd $start_dir
|
|
242
|
|
243 echo "Add the following lines to one of these files ~/.bashrc or ~/.bash_profile or ~/.profile"
|
|
244 echo "export PATH=${ROARY_BIN_DIR}:${PARALLEL_BIN_DIR}:${BEDTOOLS_BIN_DIR}:${CDHIT_BIN_DIR}:${PRANK_BIN_DIR}:${BLAST_BIN_DIR}:${MCL_BIN_DIR}:${MCL_BIN_DIR_2}:${FASTTREE_BIN_DIR}:${MAFFT_BIN_DIR}:${PATH}"
|
|
245 echo "export PERL5LIB=${ROARY_LIB_DIR}:${BEDTOOLS_LIB_DIR}:${PERL5LIB}"
|
|
246
|
|
247 set +eu
|
|
248 set +x
|