#!/usr/bin/env bash
set -ex

# This is the master script for the capsule. When you click "Reproducible Run", the code in this file will execute.

#####################################################################
##   The following (uncommented) code reproduce the figures in     ##
##   the manuscripts, including Figure 5(a)-5(c), Figure 6(a)(b),  ##  
##   Figure 7, 8 and 9.                                            ##
#####################################################################
# python3 -u we-blsm_tec_20.py "$@"
# python3 -u main_fdm_20.py "$@"

## Section 1
## This section reproduce numerical results from FDM data source under missing rate 0.2. 
## - Figure 5(a)：heatmap_score_fdm_m20.png
## - Figure 6(a): bar3d_fdm_m20.png
## - Figure 6(b): ptp_ranking_fdm_m20.png
## - Figure  7  : bar_box_ranking_fdm_m20.png

python3 -u get_bpmf_rating.py --data 'fdm' --p_train 0.8 "$@"
python3 -u ncf.py --data 'fdm' --p_train 0.8 "$@"
matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_fdm_20"
python3 -u we-blsm.py --data 'fdm' --p_train 0.8 "$@"
python3 -u main.py --data 'fdm' --p_train 0.8 "$@"

## Section 2
# ### This section reproduce numerical results from Tecator data source under missing rate 0.2. 
# ### - Figure 5(b)：heatmap_score_tec_m20.png
# ### - Figure     : bar3d_tec_m20.png (not included in main paper)
# ### - Figure     : ptp_ranking_tec_m20.png (not included in main paper)
# ### - Figure  8  : bar_box_ranking_tec_m20.png

python3 -u get_bpmf_rating.py --data 'tec' --p_train 0.8 "$@"
python3 -u ncf.py --data 'tec' --p_train 0.8 "$@"
matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_tec_20"
python3 -u we-blsm.py --data 'tec' --p_train 0.8 "$@"
python3 -u main.py --data 'tec' --p_train 0.8 "$@"

## Section 3
# ### This section reproduce numerical results from AJP data source under missing rate 0.2. 
# ### - Figure 5(c)：heatmap_score_tec_m20.png
# ### - Figure     : bar3d_tec_m20.png (not included in main paper)
# ### - Figure     : ptp_ranking_tec_m20.png (not included in main paper)
# ### - Figure  9  : bar_box_ranking_tec_m20.png

python3 -u get_bpmf_rating.py --data 'ajp' --p_train 0.8 "$@"
python3 -u ncf.py --data 'ajp' --p_train 0.8 "$@"
matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_ajp_20"
python3 -u we-blsm.py --data 'ajp' --p_train 0.8 "$@"
python3 -u main.py --data 'ajp' --p_train 0.8 "$@"

#####################################################################
##   The following (commented) code reproduce the figures in the   ##
##   Supplementary material, uncomment them to obtain all results  ##  
#####################################################################

### FDM missing rate 0.5
# python3 -u get_bpmf_rating.py --data 'fdm' --p_train 0.5 "$@"
# python3 -u ncf.py --data 'fdm' --p_train 0.5 "$@"
# matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_fdm_50"
# python3 -u we-blsm.py --data 'fdm' --p_train 0.5 "$@"
# python3 -u main.py --data 'fdm' --p_train 0.5 "$@"

### Tecator missing rate 0.5
# python3 -u get_bpmf_rating.py --data 'tec' --p_train 0.5 "$@"
# python3 -u ncf.py --data 'tec' --p_train 0.5 "$@"
# matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_tec_50"
# python3 -u we-blsm.py --data 'tec' --p_train 0.5 "$@"
# python3 -u main.py --data 'tec' --p_train 0.5 "$@"

### AJP missing rate 0.5
# python3 -u get_bpmf_rating.py --data 'ajp' --p_train 0.5 "$@"
# python3 -u ncf.py --data 'ajp' --p_train 0.5 "$@"
# matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_ajp_50"
# python3 -u we-blsm.py --data 'ajp' --p_train 0.5 "$@"
# python3 -u main.py --data 'ajp' --p_train 0.5 "$@"


# python3 -u get_bpmf_rating.py --data 'fdm' --p_train 0.3 "$@"
# python3 -u ncf.py --data 'fdm' --p_train 0.3 "$@"
# matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_fdm_70"
# python3 -u we-blsm.py --data 'fdm' --p_train 0.3 "$@"
# python3 -u main.py --data 'fdm' --p_train 0.3 "$@"

# python3 -u get_bpmf_rating.py --data 'tec' --p_train 0.3 "$@"
# python3 -u ncf.py --data 'tec' --p_train 0.3 "$@"
# matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_tec_70"
# python3 -u we-blsm.py --data 'tec' --p_train 0.3 "$@"
# python3 -u main.py --data 'tec' --p_train 0.3 "$@"

# python3 -u get_bpmf_rating.py --data 'ajp' --p_train 0.3 "$@"
# python3 -u ncf.py --data 'ajp' --p_train 0.3 "$@"
# matlab -nodisplay -r "addpath(genpath('.')); bpmf_pred_ajp_70"
# python3 -u we-blsm.py --data 'ajp' --p_train 0.3 "$@"
# python3 -u main.py --data 'ajp' --p_train 0.3 "$@"

