#!/bin/bash THREADS=${THREADS:-12} MIN_DSF=${MIN_DSF:-0.01} if [ "$#" -ne 3 ]; then echo "Usage: $0 " 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!"