0
|
1 #!/bin/bash
|
|
2
|
|
3 my_func(){
|
|
4
|
|
5 ind1=$(($1*2-1))
|
|
6 ind2=$(($1*2))
|
|
7
|
|
8 aln1=$(echo $4 | awk -v var="$ind1" '{print $var}')
|
|
9 aln2=$(echo $4 | awk -v var="$ind2" '{print $var}')
|
|
10 oName=$(echo $5 | awk -v var="$1" '{print $var}')
|
|
11
|
|
12 echo "Merging $aln1.aln and $aln2.aln into $oName.aln"
|
|
13
|
|
14 l1=$(grep -c ">" $aln1.aln)
|
|
15 l2=$(grep -c ">" $aln2.aln)
|
|
16
|
|
17 if [ $l1 -eq "1" ] && [ $l2 -eq "1" ]
|
|
18 then
|
|
19 cat $aln1.aln $aln2.aln > temp.$6.$1.fas
|
|
20 mafft --localpair --preservecase --thread $2 --maxiterate $3 temp.$6.$1.fas > $oName.aln
|
|
21 elif [ $l1 -eq "1" ]
|
|
22 then
|
|
23 mafft --preservecase --thread $2 --maxiterate $3 --addfragments $aln1.aln $aln2.aln > $oName.aln
|
|
24 elif [ $l2 -eq "1" ]
|
|
25 then
|
|
26 mafft --preservecase --thread $2 --maxiterate $3 --addfragments $aln2.aln $aln1.aln > $oName.aln
|
|
27 else
|
|
28 cat $aln1.aln $aln2.aln > input.$6.$1.fas
|
|
29 str1=""
|
|
30 count=1
|
|
31 gap=" "
|
|
32
|
|
33 for i in $(seq 1 1 $l1)
|
|
34 do
|
|
35 str1=$str1$count$gap
|
|
36 count=$(($count+1))
|
|
37 done
|
|
38
|
|
39 echo $str1 > msaTable.$6.$1
|
|
40 str2=""
|
|
41 for i in $(seq 1 1 $l2)
|
|
42 do
|
|
43 str2=$str2$count$gap
|
|
44 count=$(($count+1))
|
|
45 done
|
|
46
|
|
47 echo $str2 >> msaTable.$6.$1
|
|
48 mafft --preservecase --thread $2 --maxiterate $3 --merge msaTable.$6.$1 input.$6.$1.fas > $oName.aln
|
|
49
|
|
50 fi
|
|
51
|
|
52 }
|
|
53
|
|
54 export -f my_func
|
|
55
|
|
56 parallel -j 1 my_func ::: $(seq 1 1 1) ::: 1 ::: 1 ::: "NODE_1 NODE_2" ::: "NODE_0" ::: "merge"
|