run_FeBY2_L0.sh 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. ##Author: guochangquan
  2. ##Copyright 20211220
  3. ##company: NuProbe
  4. function usage() {
  5. echo "Usage: $0 [ -i <fq_dir> ] [ -l <sample list> ] [ -o <analysis_dir> ] [ -c <FeBY2_CNV_outdir> ]
  6. [ -x <FeBY2_script_dir> ] [ -r <FeBY2_Result_dir> ] "
  7. echo "-i Input fastq dir.File structure follow:fq_dir/sample/sample_combined_R1/2.fastq.gz"
  8. echo "-l Sample list, per line for one sample"
  9. echo "-o FeBY2 analysis output dir"
  10. echo "-c FeBY2 CNV analysis outdir.default:analysis_dir/cnv_FeBY2"
  11. echo "-x FeBY2 scripts dir"
  12. echo "-r FeBY2 Result dir"
  13. }
  14. if [ $# -eq 0 ]
  15. then
  16. usage
  17. exit
  18. fi
  19. feby2_script=$(cd "$(readlink -f "$0" | xargs dirname)"; pwd)
  20. while getopts ":x:i:l:c:r:o:h" opt; do
  21. case $opt in
  22. x)
  23. feby2_script=$OPTARG
  24. ;;
  25. i)
  26. fq_dir=$OPTARG
  27. ;;
  28. l)
  29. sam_list=$OPTARG
  30. ;;
  31. o)
  32. out_dir=$OPTARG
  33. ;;
  34. c)
  35. cnv_dir=$OPTARG
  36. ;;
  37. r)
  38. res_dir=$OPTARG
  39. ;;
  40. h)
  41. usage
  42. exit
  43. ;;
  44. \?)
  45. echo "Invalid option: -$OPTARG" > /dev/stderr
  46. usage
  47. exit
  48. ;;
  49. esac
  50. done
  51. echo "Input FASTQ dir:$fq_dir"
  52. echo "FeBY2 analysis output dir:$out_dir"
  53. echo "FeBY2 CNV analysis dir:$cnv_dir"
  54. echo "Sample List:$sam_list"
  55. echo "FeBY2 scripts dir:$feby2_script"
  56. ## 测试输入路径/文件是否正确
  57. if [ ! -d $fq_dir ]
  58. then
  59. echo "Input fastq dir does NOT exist! "
  60. echo "Please check $fq_dir."
  61. exit
  62. fi
  63. if [ ! -f $sam_list ]
  64. then
  65. echo "Sample List does NOT exist! "
  66. echo "Please check $sam_list."
  67. exit
  68. fi
  69. test -d $out_dir || mkdir -p $out_dir
  70. test -d $out_dir/log || mkdir -p $out_dir/log
  71. if [ -d $cnv_dir ]
  72. then
  73. echo "FeBY2 CNV Outdir exist!"
  74. echo "Please check!"
  75. #exit
  76. else
  77. mkdir -p $cnv_dir
  78. fi
  79. for sample in `cat $sam_list`
  80. do
  81. echo "Sample Checking: " $sample
  82. export SAM=$sample
  83. fq1=` find $fq_dir -name "*${sample}*.gz" |perl -ne 'print if /$ENV{SAM}(_S\d+)?(_L\d+)?(_combined)?_R?1(_\d+)?.f(ast)?q.gz/' `
  84. fq2=` find $fq_dir -name "*${sample}*.gz" |perl -ne 'print if /$ENV{SAM}(_S\d+)?(_L\d+)?(_combined)?_R?2(_\d+)?.f(ast)?q.gz/' `
  85. nfq1=`find $fq_dir -name "*${sample}*.gz" |perl -ne 'print if /$ENV{SAM}(_S\d+)?(_L\d+)?(_combined)?_R?1(_\d+)?.f(ast)?q.gz/' |wc -l `
  86. nfq2=`find $fq_dir -name "*${sample}*.gz" |perl -ne 'print if /$ENV{SAM}(_S\d+)?(_L\d+)?(_combined)?_R?2(_\d+)?.f(ast)?q.gz/' |wc -l `
  87. echo $sample "FASTQ1:" $fq1
  88. ## ONLY ONE FASTQ1/FASTQ2 file for SAMPLE
  89. if [ -z $fq1 ]; then
  90. echo "Cannot find FASTQ1 file for $sample"
  91. exit
  92. elif [ $nfq1 -gt 1 ]; then
  93. echo "More Than ONE FASTQ1 file for $sample"
  94. exit
  95. fi
  96. if [ -z $fq2 ]; then
  97. echo "Cannot find FASTQ2 file for $sample"
  98. exit
  99. elif [ $nfq2 -gt 1 ]; then
  100. echo "More Than ONE FASTQ2 file for $sample"
  101. exit
  102. fi
  103. if [ -d $out_dir/${sample} ]
  104. then
  105. echo -e "Directory $out_dir/${sample} exists, Please check. Exit!"
  106. echo -e "${sample} quit!"
  107. #exit
  108. else
  109. mkdir $out_dir/${sample} -p
  110. fi
  111. done
  112. if [ ! -d $res_dir ]
  113. then
  114. echo "Result Directory NOT exists, Please check. Exit!"
  115. #exit
  116. else
  117. test -d $res_dir/cnv || mkdir $res_dir/cnv
  118. test -d $res_dir/yesuan || mkdir $res_dir/yesuan
  119. test -d $res_dir/QC || mkdir $res_dir/QC
  120. test -d $res_dir/CFTR_intron9 || mkdir $res_dir/CFTR_intron9
  121. fi
  122. sams=(`cat $sam_list`)
  123. num=${#sams[@]}
  124. mindx=` expr $num - 1 `
  125. log=$out_dir/log/FeBY2
  126. samplesheet=/cgdata/rawdata/test/sampleinfo/all_sample_information.xlsx
  127. if [ $num -lt 2 ]
  128. then
  129. fid1=`qsub -v sample=${sams[0]},fq_dir=$fq_dir,out_dir=$out_dir,cnv_dir=$cnv_dir,feby2_script=$feby2_script $feby2_script/run_FeBY2_single_L1.pbs`
  130. qsub -W depend=afterok:$fid1 -v out_dir=$out_dir,cnv_dir=$cnv_dir,feby2_script=$feby2_script,res_dir=$res_dir,sam_list=$sam_list $feby2_script/run_FeBY2_Copy_L1.pbs
  131. else
  132. fid1=`qsub -o $log.prep -v log=$log.prep,fq_dir=$fq_dir,out_dir=$out_dir,sam_list=$sam_list,cnv_dir=$cnv_dir,feby2_script=$feby2_script -J 0-$mindx $feby2_script/run_FeBY2_prep_L1.pbs`
  133. fid2=`qsub -W depend=afterok:$fid1 -o $log.cnv.prep -v sam_list=$sam_list,cnv_dir=$cnv_dir,feby2_script=$feby2_script $feby2_script/run_FeBY2_stat_L1.pbs `
  134. fid3=`qsub -W depend=afterok:$fid2 -o $log.cnv.call -v log=$log.cnv.call,out_dir=$out_dir,sam_list=$sam_list,cnv_dir=$cnv_dir,feby2_script=$feby2_script -J 0-$mindx $feby2_script/run_FeBY2_cnv_call_L1.pbs`
  135. qsub -W depend=afterok:$fid3 -o $log.copy -v out_dir=$out_dir,cnv_dir=$cnv_dir,feby2_script=$feby2_script,res_dir=$res_dir,sam_list=$sam_list,samplesheet=$samplesheet $feby2_script/run_FeBY2_Copy_L1.pbs
  136. fi