#!/usr/bin/env sh

#[Usage] ./tmap2coding.sh > cmd
#sh cmd

Tmap2coding=./tmap2coding.py
OUTROOT=../../../data/predictions/simu
#OUTROOT=/home/yduan/work_file/lncRNAdb/methods_assement/plot_result/simu_pred
QryPrefix=(../../../data/testing_data/3.Erroneous_tx/human ../../../data/testing_data/3.Erroneous_tx/mouse)
#QryPrefix=(/home/yduan/work_file/lncRNAdb/methods_assement/data_for_prediction/random_5k_data/simu/human/output /home/yduan/work_file/lncRNAdb/methods_assement/data_for_prediction/random_5k_data/simu/mouse/output)
Species=(human mouse)
#reference codingfile
Ref_cdf=(pair_human pair_mouse)
RefPrefix=../../../data/codingf/random5k
#RefPrefix=/home/yduan/work_file/lncRNAdb/methods_assement/plot_result/codingf/random5k

Depth=(sim30 sim100 sim300 sim600 sim1200)
Gstatus=(with_G with_out_G)
Tmaps=(with_G.merged_with_G.gtf.tmap no_G.merged_no_G.gtf.tmap)
#CLASSIFY_METHOD=(CNCI CNCI COME COME CPAT CPAT CPAT CPAT CPC2 CPC Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc Feelnc hmmscan hmmscan hmmscan iSeeRNA lncRScan lncScore longdist longdist longdist longdist longdist longdist PLEK plncpro plncpro rnaplonc rnaplonc)
CLASSIFY_METHOD=(CNCI_pl CNCI_ve come1 come2 cpat_fly cpat_human cpat_mouse cpat_zebrafish cpc cpc2 feelnc_ab_cl feelnc_ab_sf feelnc_all_cl feelnc_all_sf feelnc_ff_cl feelnc_ff_sf feelnc_hm_cl feelnc_hm_sf feelnc_ms_cl feelnc_ms_sf feelnc_wm_cl feelnc_wm_sf feelnc_zf_cl feelnc_zf_sf hmmscan1 hmmscan2 hmmscan3 iSeeRNA lncRScan lncScore longdist_GRCh37 longdist_GRCh37_GRCm38 longdist_GRCh38 longdist_GRCh38_GRCm38 longdist_GRCm38 longdist_GRCm38_GRCz10 PLEK plncpro1 plncpro2 rnaplonc1 rnaplonc2)

CLAS2C_PRE="/home/yduan/work_file/lncRNAdb/methods_assement/plot_script"
CLAS2CODING=(cnci2coding.py cnci2coding.py come2coding.py come2coding.py cpat2coding.py cpat2coding.py cpat2coding.py cpat2coding.py cpc2coding.py cpc22coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py feelnc2coding.py hmmscore2coding.py hmmscore2coding.py hmmscore2coding.py iSeeRNA2coding.py lncRScan2coding.py lncScore2coding.py longdist2coding.py longdist2coding.py longdist2coding.py longdist2coding.py longdist2coding.py longdist2coding.py plek2coding.py plncpro2coding.py plncpro2coding.py rnaplonc2coding.py rnaplonc2coding.py)

RES2CODING="/home/yduan/work_file/lncRNAdb/methods_assement/plot_result/res2coding.sh"

function check_file()
{
if [ ! -e $1 ];then
    echo '[Error] this file or directory is not exist:'
    echo $1
    exit 1
fi
}

function check_files()
{
while [[ $1 ]];do
    check_file $1
    shift
done
}

function t2c()
{
    echo "$Tmap2coding $tmap_f $CodingFile $ref_coding_f -o $Outpath --rm_r --rm_q 2>$Outpath/tmap_coding.err 1>$Outpath/tmap_coding.log"
    echo ""
}

# Generate tmp codingfile with fake actCls 0
function t2tmpc()
{
    echo "${RES2CODING} ${qry_dir} ${Tmpout} 0 ${HmmFa}"
}

#####
#get coding file of qry transcripts against ref transcripts accoding to tmap file.
for j in ${!Species[@]}
do
  for dep in ${Depth[@]}
  do
    for k in ${!Gstatus[@]}
    do
        qry_dir=${QryPrefix[$j]}/${dep}/ass/lncRNAtest/${Gstatus[$k]}/result/predres
        HmmFa=${QryPrefix[$j]}/${dep}/ass/lncRNAtest/${Gstatus[$k]}/merged.pf.fasta
        Tmpout="tmpout"
        echo "mkdir ${Tmpout}"
        t2tmpc
        for i in "${!CLASSIFY_METHOD[@]}"
        do
          Outpath=${OUTROOT}/${Species[$j]}/${CLASSIFY_METHOD[$i]}/${dep}/${Gstatus[$k]}
          tmap_f=${QryPrefix[$j]}/${dep}/ass/${Tmaps[$k]}
          CodingFile=${Tmpout}/${CLASSIFY_METHOD[$i]}.coding
          ref_coding_f=${RefPrefix}/${Ref_cdf[$j]}/${CLASSIFY_METHOD[$i]}.pair
          Method="${CLAS2C_PRE}/${CLAS2CODING[$i]}"
          check_files $Tmap2coding $tmap_f  $Outpath $HmmFa
          #check_files $Method $Tmap2coding $tmap_f  $Outpath $HmmFa
          #check_files $ref_coding_f $CodingFile 
          t2c
      done
    done
  done
done
