Mercurial > repos > siwaa > insilicow
view inSiliCow-run.sh @ 0:50112d3941d8 draft
"planemo upload for repository https://forgemia.inra.fr/insilicow/insilicow-tool commit a01dd8fc54d5015e703722d7acb8db4b54b4a468"
author | siwaa |
---|---|
date | Mon, 07 Apr 2025 15:18:25 +0000 |
parents | |
children |
line wrap: on
line source
#!/bin/bash # Title: inSiliCow-run.sh # Address: main/run # Description: Launch simulations # Authors: Olivier MARTIN ( https://orcid.org/0000-0001-7375-2850 ) # Pierre Blavy # Contact: olivier.martin-mosar@inrae.fr # Date: 2025 # Usage: inSiliCow-run.sh example_xx [out] # example_xx is a folder in examples/ # out is the output folder, default ./out clear #-------------------------------------- #--- Colors for display in terminal --- #-------------------------------------- # Set Bold High Intensity colors R='\033[1;91m' # Red B='\033[1;94m' # Blue NC='\033[0m' # No Color #Set BIP sound BIP='\007' # --- Opening message --- echo -e ${B}"\n> Launching inSiliCow"${NC} # ----------------------- # --- Input arguments --- # ----------------------- #$1 is an example folder that exists in examples #$2 is the output folder, must exists, default "./out" if [ "$#" -le 0 ]; then echo -e ${B}"\n>> Missing argument" echo -e ">> Usage:"${NC}" inSilicow-run example_00 [out]" echo -e ${B}"\n>> Aborted\n"${NC} exit 1 fi INPUT_DIR=$(realpath "examples/$1" ) OUTPUT_DIR=$(realpath ${2:-"./out"}) mkdir -p $OUTPUT_DIR FARMER_LOG=$(realpath "examples/farmer-log.txt" ) SCRIPTS_DIR=$(realpath ./) SCILAB=$(ls -drt $HOME/* | grep scilab- | tail -1)"/bin/scilab-cli" INSILICOW=$(realpath ./../insilicow-linux) CURRENT=`pwd` # -------------------------- # --- Check things --------- # -------------------------- #Input does'nt exists => return if [ ! -d "$INPUT_DIR" ]; then echo -e ${BIP}${R}"\n>> Input directory $INPUT_DIR does not exist\n"; echo -e ">> Aborted\n"; exit 1; fi #Output does'nt exists => return #if [ ! -d "$OUTPUT_DIR" ]; then # echo -e ${BIP}${R}"\n>> Output directory $OUTPUT_DIR does not exist\n"; # echo -e ">> Aborted\n"; # exit 1; #fi #inSiliCow binary does'nt exists => return if [ ! -e "$INSILICOW" ]; then echo -e ${BIP}${R}"\n>> inSiliCow binary $INSILICOW does not exist\n"; echo -e ">> Aborted\n"; exit 1; fi # ----------------------- # --- Output ------------ # ----------------------- #Get current date to name output folder d=`date "+%Y%m%d_%H%M%S_%N"` OUT_JOB="$OUTPUT_DIR/job-$d" ZIP_FILE=$(realpath "$OUTPUT_DIR/simulations-$d.zip" ) # ------------------------------ # --- Print input and output --- # ------------------------------ echo -e ${B}"\n>> Pathways:" echo -e " Input:\t$INPUT_DIR"; echo -e " Output:\t$OUT_JOB"; echo -e " Scilab:\t$SCILAB"; echo -e " inSiliCow:\t$INSILICOW\n"${NC}; # --------------------------------- # --- Make output folders --------- # --------------------------------- mkdir -p "$OUT_JOB/in"; mkdir -p "$OUT_JOB/out"; # ------------------------------------- # --- check if scilab is responding --- # ------------------------------------- #check-scilab.sci xxx creates a file called "xxx/scilab_is_ok" rm -f "$OUTPUT_DIR/scilab_is_ok" #"$SCILAB" -f "$SCRIPTS_DIR/check-scilab.sci" -nwni -quit -args "$OUTPUT_DIR"; #if [ ! -f "$OUTPUT_DIR/scilab_is_ok" ]; then # echo -e ${BIP}${R}"\n>> Scilab is not responding\n"; # echo -e ">> Aborted\n"; # exit 0; #fi rm "$OUTPUT_DIR/scilab_is_ok" # -------------------------- # --- Run the jobs --------- # -------------------------- # --- Track time --- SECONDS=0; #Format elapsed time FormatSeconds () { seconds="$1" date -ud @${seconds} +"$(( seconds/3600/24 ))d %Hh %Mm %Ss" \ | sed -r 's/\b0([0-9])/\1/g; s/\b0(s|m|h|d)//g; s/ +/ /g; s/^ +//; s/ +$//; s/^$/0s/' } #copy input to $OUT_JOB/in cp -r "$INPUT_DIR/"* "$OUT_JOB/in/" cp "$FARMER_LOG" "$OUT_JOB/in/" echo -e ${B}"\n>> Starting job $d\n"${NC} # -------------- # --- explan --- # -------------- #Create file explan-config.txt with right paths cat > "$OUT_JOB/in/explan-config.txt" << EOF explan{ IN_CPU = 4 #number of parallel jobs IN_EXPLAN = $OUT_JOB/in/explan.txt OUT_FOLDER = $OUT_JOB/out/ IN_FOLDER = $OUT_JOB/in/ IN_EXE = $INSILICOW SCRIPT_FOLDER = $SCRIPTS_DIR OUT_FOLDER = $OUT_JOB/sim IN_SCILAB = $SCILAB } EOF # Execute R script to launch simulations echo -e ${B}"\n>> Starting simulation\n"${NC} Rscript "$SCRIPTS_DIR/explan2.R" "$OUT_JOB/in/explan-config.txt" # ZIP #uncomment the block below to zip output #rm -f "$ZIP_FILE" #echo -e ${B}"\n>> Compress simulation to $ZIP_FILE \n"${NC} #cd "$OUT_JOB" && \ #zip -rq9 "$ZIP_FILE" ./ -x out/sim_*/log_herd.txt && \ #cd "$CURRENT" && \ #rm -rf "$OUT_JOB" # ----------------------------------- # --- display final message --------- # ----------------------------------- echo -e ${B}"\n>> Job "$d" done in $(FormatSeconds $SECONDS)${NC}\n"