#!/bin/sh
#$ -S /bin/sh

# sh chipatlas/sh/analTools/wabi/transferBedTow3oki.sh chipatlas
projectDir=$1
tmpDir=tmpDirFortransferBedTow3oki
mkdir -p $tmpDir/sh
rm $tmpDir/sh/*

bedN=$(for Genome in `ls $projectDir/results/`; do
  ls $projectDir/results/$Genome/public/*.AllAg.AllCell.bed
done| wc -l)
  
for Genome in `ls $projectDir/results/`; do
  mkdir -p $tmpDir/results/$Genome/public
  for bed in `echo $projectDir/results/$Genome/public/*.AllAg.AllCell.bed`; do
    outBed=`echo $bed| sed "s/$projectDir/$tmpDir/"`
    echo $outBed
  done
done| awk '
BEGIN {
  srand("'$RANDOM'")
} {
  print rand(), $0
}'| sort -k1n| awk -v bedN=$bedN '
BEGIN {
  N = int(bedN / 200) # trfB2w3 のジョブ数を 200 にする
} {
  if (NR % N == 1) {
    j++
    outFn1 = "'$tmpDir'/sh/" j
    print "#!/bin/sh\n#$ -S /bin/sh" > outFn1
  }
  print "split -l 50000000 " $2 " " $2 "." >> outFn1     # BED ファイルの整形、5000万行ごとに分割し、core dump を防ぐ
  print "wc -l " $2 " > '$tmpDir'/lineNum/" NR >> outFn1
  print "rm " $2 >> outFn1
}'

for Shell in `ls $tmpDir/sh/*`; do
  qsub -N trfB2w3 -o /dev/null -e /dev/null $Shell
done

while :; do
  qN=`qstat| awk '$3 == "trfB2w3"'| wc -l`
  if [ "$qN" -eq 0 ]; then
    rm -r $tmpDir/sh
    break
  else
    echo "Waiting for converting Bed files..."
    date
    sleep 60
  fi
done

# BED ファイルの行数を集計。
fileList="$projectDir/lib/assembled_list/fileList.tab"
cat $tmpDir/lineNum/*| tr ' /' '\t\t'| awk -F '\t' -v fileList=$fileList '
BEGIN {
  while ((getline < fileList) > 0) {
    x[$1 ".bed",$2] = $2 "\t" $3 "\t" $5 "\t" $7
  }
} {
  print x[$6,$4] "\t" $1
}' > $tmpDir/lineNum.tsv


## w3oki アカウントに Bed ファイルをコピー
# w3oki のパスワード取得
eval `cat bin/w3oki| grep -e "username=" -e "password="`

# w3oki で実行するためのコマンド
cmnd=$(echo -e '
  rm -rf /lustre7/home/w3oki/tmpDirFortransferBedTow3oki
  for genome in `ls tmpDirFortransferBedTow3oki/results/`; do
    dirOkiS="tmpDirFortransferBedTow3oki/results/$genome/public"                      # okishinya アカウントの public フォルダ
    dirWab1="/lustre7/home/w3oki/tmpDirFortransferBedTow3oki/results/$genome/public"  # w3oki アカウントの 一時的 public フォルダ
    dirWab2="/lustre7/home/w3oki/chipatlas/results/$genome/public"                    # w3oki アカウントの 計算用 public フォルダ
    mkdir -p /lustre7/home/w3oki/tmpDirFortransferBedTow3oki/results/$genome
    echo okishinya から w3oki へ $genome の BED ファイルを転送中...
    cp -r "$dirOkiS" "$dirWab1"
    mv "$dirWab2" "$dirWab2"_old
    mv "$dirWab1" "$dirWab2"
    rm -r "$dirWab2"_old
  done
  cp -r chipatlas/lib/TSS /lustre7/home/w3oki/chipatlas/lib/
  cp -f chipatlas/lib/assembled_list/experimentList.tab /lustre7/home/w3oki/chipatlas/lib/assembled_list/experimentList.tab
  cp -f chipatlas/lib/assembled_list/fileList.tab /lustre7/home/w3oki/chipatlas/lib/assembled_list/fileList.tab
  rm -r /lustre7/home/w3oki/tmpDirFortransferBedTow3oki
  exit
'| awk '{
  gsub("\"", "\\\"", $0)    # ダブルクォートと $ の前にバックスラッシュをつける
  gsub("\\$", "\\\$", $0)
  print
}') #"

# expect でコマンド実行
expect -c "
  set timeout 20
  spawn su $username
  expect \"パスワード:\"
  send \"$password\n\"
  expect \"\$\"
  send \"
    $cmnd
  \"
  interact
"
exit
