====== Structure ====== Structure is a free software package for using multi-locus genotype data to investigate population structure. ===== Information ===== * Latest version: 2.3.4 * Added: June, 2014 * Link: https://web.stanford.edu/group/pritchardlab/structure.html ===== Usage ===== See which versions are available: $ module avail structure Load one version into your environment and run it: $ module load structure/2.3.4 $ structure ==== Sample Script ===== Here's a script to run structure using the SLURM job scheduler whereby each structure iteration is submitted as a separate SLURM batch job: #!/bin/env bash ## shell script to run structure in the background using SLURM job scheduler ## - each structure repetition is a submitted as separate slurm batch job ## - when running the script, provide population size(K) and full path to ## mainparams, extraparams and input files ## usage: run-structure.sh K /path/to/mainparams /path/to/extraparams ## where: ## k: population size(integer) ## example: run-structure.sh 5 /home/joguya/structure/mainparams /home/joguya/structure/extraparams # defaults readonly PROGNAME=$(basename $0) readonly SCRATCH_DIR="/var/scratch/$USER/structure-$(date +%Y-%m-%d)" ## show script usage function show_usage() { cat <<-EOF Usage: $PROGNAME K /path/to/mainparams /path/to/extraparams /path/to/inputfile where: K is a number representing the population size Example: $PROGNAME 5 /home/joguya/structure/mainparams /home/joguya/structure/extraparams /home/joguya/structure/241SNPs-struct.in EOF exit 1 } ## parse input num_re='^[0-9]+$' if ! [[ $1 =~ $num_re ]]; then echo "The population size(K): $1 is not a number. Please provide a number." show_usage elif [[ ! -f $2 ]]; then echo "The mainparams file: $2 doesn't exist." show_usage elif [[ ! -f $3 ]]; then echo "The extraparams file: $3 doesn't exist." show_usage elif [[ ! -f $4 ]]; then echo "The input file: $4 doesn't exist." show_usage else readonly POPULATION=$1 readonly REPS=$POPULATION readonly MAINPARAMS=$2 readonly EXTRAPARAMS=$3 readonly INFILE=$4 fi readonly CWD=$PWD for rep in $(seq 1 $REPS) do for pop in $(seq 1 $POPULATION) do echo "REP: $rep POP: $pop" outfile="$SCRATCH_DIR/$(basename $INFILE)_K${pop}-rep${rep}" sbatch < Usage: ./run-structure.sh 5 /home/joguya/structure/mainparams /home/joguya/structure/extraparams /home/joguya/structure/241SNPs-struct.in ===== Installation ===== Notes from the sysadmin during installation: $ cd /tmp $ wget https://web.stanford.edu/group/pritchardlab/structure_software/release_versions/v2.3.4/structure_kernel_source.tar.gz $ tar xf structure_kernel_source.tar.gz $ cd structure_kernel_src $ make $ sudo cp structure /export/apps/structure/2.3.4/bin