32 lines
1.0 KiB
Bash
Executable File
32 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
THREADS=${THREADS:-12}
|
|
MIN_DSF=${MIN_DSF:-0.01}
|
|
|
|
if [ "$#" -ne 3 ]; then
|
|
echo "Usage: $0 <mrbayes_output_dir> <mbsum_output_dir> <num_skip>"
|
|
echo "Summarize MrBayes output using mbsum, skipping analyses with high DSF"
|
|
exit 1
|
|
fi
|
|
|
|
mb_dir=$(readlink -f "$1")
|
|
mbsum_out_dir=$2
|
|
num_skip=$3
|
|
|
|
mkdir -p "$mbsum_out_dir"
|
|
echo -n "" >mbsum.skip.log
|
|
echo -n "" >mbsum.cmds
|
|
for i in "$mb_dir"/*/mrbayes.log; do
|
|
og_dir=$(dirname "$i")
|
|
base=$(basename "$og_dir")
|
|
## skip Average standard deviation of split frequencies > 0.01
|
|
dsf=$(awk '/Average standard deviation of split frequencies:/ {out=$7} END{print out+0}' "$i" 2>/dev/null)
|
|
if awk -v d="$dsf" -v min_dsf="$MIN_DSF" 'BEGIN{if (d >= min_dsf) exit 0; exit 1}'; then
|
|
echo "Skipping ${base} due to high DSF: ${dsf}" >>mbsum.skip.log
|
|
continue
|
|
else
|
|
echo "mbsum ${og_dir}/*.t -n $num_skip -o $mbsum_out_dir/${base}.in >> $og_dir/mbsum.log 2>&1" >>mbsum.cmds
|
|
fi
|
|
done
|
|
xargs -t -P "$THREADS" -I cmd -a mbsum.cmds bash -c "cmd"
|
|
echo "Mbsum all done!"
|