#!/bin/bash # This wrapper is for running 2 chains of StatAlign 3.4 in parallel on Expanse. # Load bali-phy to access trees-consensus and trees-bootstrap postprocessors export MODULEPATH=/expanse/projects/ngbt/opt/expanse/modules:$MODULEPATH module load bali-phy/3.6.1 # Change the value of seed for the second chain. option0=$* if [[ $option0 =~ "-seed=" ]]; then option1="" array=($option0) length=${#array[@]} for (( i=0; i<${length}; i++ )); do field=${array[i]} if [[ $field =~ "-seed=" ]]; then value=$(echo $field | sed -e 's/-seed=//g') value=$(( $value + 1 )) field="-seed=$value" fi option1="$option1 $field" done else field0="-seed=1" field1="-seed=2" option0="$field0 $*" option1="$field1 $*" fi # Add suffices to infile in option lists. option0=$(echo $option0 | sed -e 's/infile/infile.chain0/g') option1=$(echo $option1 | sed -e 's/infile/infile.chain1/g') # Make two copies of infile. cp -p infile infile.chain0 cp -p infile infile.chain1 start=$(date +%s) echo "running statalign $option0" > chain0.out echo >> chain0.out java -Xmx8g -jar /expanse/projects/ngbt/opt/expanse/statalign/3.4/StatAlign.jar $option0 >> chain0.out & echo "running statalign $option1" > chain1.out echo >> chain1.out java -Xmx8g -jar /expanse/projects/ngbt/opt/expanse/statalign/3.4/StatAlign.jar $option1 >> chain1.out sleep 60 rm infile.chain0 rm infile.chain1 # Convert trees from NEXUS to newick format grep tree infile.chain0.tree | awk '{print $4}' > infile.chain0.tree.newick grep tree infile.chain1.tree | awk '{print $4}' > infile.chain1.tree.newick trees-consensus infile.chain0.tree.newick > infile.chain0.tree.consensus trees-consensus infile.chain1.tree.newick > infile.chain1.tree.consensus echo trees-bootstrap infile.chain0.tree.newick infile.chain1.tree.newick | grep ASDSF echo end=$(date +%s) elapsed=$((end-start)) echo elapsed = $elapsed s