run_FMBY2_L0.sh 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. ##Author: guochangquan
  2. ##Copyright 202207
  3. ##company: NuProbe
  4. function usage() {
  5. echo "Usage: $0 [ -i <fq_dir> ] [ -l <sample list> ] [ -o <analysis_dir> ]
  6. [ -c <FMBY2_CNV_outdir> ] [ -x <FMBY2_script_dir> ] [ -r <FMBY2_Result_dir> ] "
  7. echo "-i Input fastq dir.File structure follow:fq_dir/sample/sample_R1/2.fastq.gz"
  8. echo "-l Sample list, per line for one SampleName and Sample_Panel[MBY2|FeBY2]"
  9. echo "-o FMBY2 analysis output dir"
  10. echo "-c FMBY2 CNV analysis outdir.default:analysis_dir/cnv_FMBY2"
  11. echo "-x FMBY2 scripts dir"
  12. echo "-r FMBY2 Result dir"
  13. }
  14. if [ $# -eq 0 ]
  15. then
  16. usage
  17. exit
  18. fi
  19. script_dir=$(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. script_dir=$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"
  46. usage
  47. exit
  48. ;;
  49. esac
  50. done
  51. echo "Input FASTQ dir:$fq_dir"
  52. echo "FMBY2 analysis output dir:$out_dir"
  53. echo "FMBY2 CNV analysis dir:$cnv_dir"
  54. echo "Sample List:$sam_list"
  55. echo "FMBY2 scripts dir:$script_dir"
  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 "FMBY2 CNV Outdir exist!"
  74. echo "Please check!"
  75. #exit
  76. else
  77. mkdir -p $cnv_dir
  78. mkdir -p $cnv_dir/AZF_call/img
  79. fi
  80. for sample in `cut -f1 $sam_list`
  81. do
  82. echo "Sample Checking: " $sample
  83. export SAM=$sample
  84. 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/' `
  85. 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/' `
  86. 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 `
  87. 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 `
  88. echo $sample "FASTQ1:" $fq1
  89. ## ONLY ONE FASTQ1/FASTQ2 file for SAMPLE
  90. if [ -z $fq1 ]; then
  91. echo "Cannot find FASTQ1 file for $sample"
  92. exit
  93. elif [ $nfq1 -gt 1 ]; then
  94. echo "More Than ONE FASTQ1 file for $sample"
  95. exit
  96. fi
  97. if [ -z $fq2 ]; then
  98. echo "Cannot find FASTQ2 file for $sample"
  99. exit
  100. elif [ $nfq2 -gt 1 ]; then
  101. echo "More Than ONE FASTQ2 file for $sample"
  102. exit
  103. fi
  104. if [ -d $out_dir/${sample} ]
  105. then
  106. echo -e "Directory $out_dir/${sample} exists, Please check. Exit!"
  107. echo -e "${sample} quit!"
  108. #exit
  109. else
  110. mkdir $out_dir/${sample} -p
  111. fi
  112. done
  113. if [ ! -d $res_dir ]
  114. then
  115. echo "Result Directory NOT exists, Please check. Exit!"
  116. exit
  117. else
  118. test -d $res_dir/MBY2-AZF || mkdir $res_dir/MBY2-AZF
  119. test -d $res_dir/QC || mkdir $res_dir/QC
  120. test -d $res_dir/cnv || mkdir $res_dir/cnv
  121. test -d $res_dir/yesuan || mkdir $res_dir/yesuan
  122. test -d $res_dir/CFTR_intron9 || mkdir $res_dir/CFTR_intron9
  123. fi
  124. test -s $out_dir/$sam_list || cp $sam_list $out_dir/
  125. sams=(`cut -f1 $sam_list`)
  126. num=${#sams[@]}
  127. mindx=` expr $num - 1 `
  128. log=$out_dir/log/FMBY2
  129. if [ $num -lt 2 ]
  130. then
  131. fid1=`qsub -v sample=${sams[0]},fq_dir=$fq_dir,out_dir=$out_dir,cnv_dir=$cnv_dir,script_dir=$script_dir $script_dir/run_FMBY2_single_L1.pbs`
  132. qsub -W depend=afterok:$fid1 -v out_dir=$out_dir,cnv_dir=$cnv_dir,script_dir=$script_dir,res_dir=$res_dir,sam_list=$sam_list $script_dir/run_FMBY2_Copy_L1.pbs
  133. else
  134. fid1=`qsub -o $log.S1 -v log=$log.S1,fq_dir=$fq_dir,out_dir=$out_dir,sam_list=$sam_list,cnv_dir=$cnv_dir,script_dir=$script_dir -J 0-$mindx $script_dir/run_FMBY2_prep_L1.pbs`
  135. fid2=`qsub -W depend=afterok:$fid1 -o $log.S2 -v sam_list=$sam_list,cnv_dir=$cnv_dir,script_dir=$script_dir $script_dir/run_FMBY2_stat_L1.pbs `
  136. fid3=`qsub -W depend=afterok:$fid2 -o $log.S3 -v log=$log.S3,out_dir=$out_dir,sam_list=$sam_list,cnv_dir=$cnv_dir,script_dir=$script_dir -J 0-$mindx $script_dir/run_FMBY2_cnv_call_L1.pbs`
  137. qsub -W depend=afterok:$fid3 -o $log.S4 -v out_dir=$out_dir,cnv_dir=$cnv_dir,script_dir=$script_dir,res_dir=$res_dir,sam_list=$sam_list $script_dir/run_FMBY2_Copy_L1.pbs
  138. fi