#!/bin/bash

# exit on error
set -e

# create the output directory
export EOS_BASE_DIRECTORY=$(mktemp -d)

echo using PYTHON=${PYTHON} >&2
echo using PYTHONPATH=${PYTHONPATH} >&2

###########################################
## Run the Analysis's steps automaticall ##
###########################################
echo running analysis steps test ... >&2
$PYTHON ${SOURCE_DIR}/eos-analysis \
    run \
    -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2


###########################
## Analysis optimization ##
###########################
echo running analysis optimization test ... >&2
$PYTHON ${SOURCE_DIR}/eos-analysis \
    find-mode CKM+FF \
    --use-random-seed 123 \
    -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2


##############################
## Markov Chain Monte Carlo ##
##############################
echo running MCMC tests ... >&2
for i in $(seq 0 4) ; do
    $PYTHON ${SOURCE_DIR}/eos-analysis \
        sample-mcmc CKM+FF $i \
        -N 500 \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
done
echo ... success >&2

################
## Clustering ##
################
echo running clustering tests ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis \
        find-clusters \
        CKM+FF \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2

############################
## Population Monte Carlo ##
############################
echo running PMC tests ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis \
        sample-pmc \
        CKM+FF \
        -n 1000 \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2

#####################
## Nested Sampling ##
#####################
echo running NS tests ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis \
        sample-nested \
        CKM+FF \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2

###############################
## Plotting MCMC+PMC samples ##
###############################
if [[ "Linux" == $(uname) ]] ; then
echo running MCMC plotting tests ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis \
        plot-samples \
        CKM+FF
echo ... success >&2
else
echo skipping MCMC plotting tests >&2
fi

#########################################
## Posterior prediction of observables ##
#########################################
echo running prediction tests ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis \
        predict-observables \
        CKM+FF \
        PDF \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2

####################
## Listing things ##
####################
echo running test for list-priors command ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis list-priors \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2
echo running test for list-likelihoods command ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis list-likelihoods \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2
echo running test for list-posteriors command ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis list-posteriors \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2
echo running test for list-predictions command ... >&2
    $PYTHON ${SOURCE_DIR}/eos-analysis list-predictions \
        -f ${SOURCE_DIR}/eos-analysis_TEST.d/analysis.yaml
echo ... success >&2
